From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 22759 invoked by alias); 7 Jun 2011 18:54:35 -0000 Received: (qmail 22749 invoked by uid 22791); 7 Jun 2011 18:54:32 -0000 X-SWARE-Spam-Status: No, hits=-2.2 required=5.0 tests=AWL,BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,SPF_HELO_PASS,TW_CF,TW_DB,TW_FN,TW_TM,T_RP_MATCHES_RCVD X-Spam-Check-By: sourceware.org Received: from smtp-out.google.com (HELO smtp-out.google.com) (74.125.121.67) by sourceware.org (qpsmtpd/0.43rc1) with ESMTP; Tue, 07 Jun 2011 18:54:10 +0000 Received: from wpaz17.hot.corp.google.com (wpaz17.hot.corp.google.com [172.24.198.81]) by smtp-out.google.com with ESMTP id p57Is8fs024387 for ; Tue, 7 Jun 2011 11:54:08 -0700 Received: from gxk26 (gxk26.prod.google.com [10.202.11.26]) by wpaz17.hot.corp.google.com with ESMTP id p57Is6Do009289 (version=TLSv1/SSLv3 cipher=RC4-SHA bits=128 verify=NOT) for ; Tue, 7 Jun 2011 11:54:07 -0700 Received: by gxk26 with SMTP id 26so2611786gxk.32 for ; Tue, 07 Jun 2011 11:54:06 -0700 (PDT) MIME-Version: 1.0 Received: by 10.151.115.6 with SMTP id s6mr5828568ybm.130.1307472846601; Tue, 07 Jun 2011 11:54:06 -0700 (PDT) Received: by 10.151.26.21 with HTTP; Tue, 7 Jun 2011 11:54:06 -0700 (PDT) In-Reply-To: References: Date: Tue, 07 Jun 2011 19:09:00 -0000 Message-ID: Subject: Re: -fdump-passes -fenable-xxx=func_name_list From: Xinliang David Li To: Richard Guenther Cc: GCC Patches Content-Type: multipart/mixed; boundary=001e680f0bf4933ef904a523be42 X-System-Of-Record: true 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-06/txt/msg00565.txt.bz2 --001e680f0bf4933ef904a523be42 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable Content-length: 6849 Please review the attached two patches. In the first patch, gate functions are cleaned up. All the per function legality checks are moved into the executor and the optimization heuristic checks (optimize for size) remain in the gators. These allow the the following overriding order: common flags (O2, -ftree-vrp, -fgcse etc) <--- compiler heuristic (optimize for size/speed) <--- -fdisable/enable forcing pass options <--- legality check Testing under going. Ok for trunk? Thanks, David On Tue, Jun 7, 2011 at 9:24 AM, Xinliang David Li wrot= e: > Ok -- that sounds good. > > David > > On Tue, Jun 7, 2011 at 3:10 AM, Richard Guenther > wrote: >> On Mon, Jun 6, 2011 at 6:00 PM, Xinliang David Li w= rote: >>> On Mon, Jun 6, 2011 at 4:38 AM, Richard Guenther >>> wrote: >>>> On Thu, Jun 2, 2011 at 9:12 AM, Xinliang David Li = wrote: >>>>> This is the version of the patch that walks through pass lists. >>>>> >>>>> Ok with this one? >>>> >>>> +/* Dump all optimization passes. =A0*/ >>>> + >>>> +void >>>> +dump_passes (void) >>>> +{ >>>> + =A0struct cgraph_node *n, *node =3D NULL; >>>> + =A0tree save_fndecl =3D current_function_decl; >>>> + >>>> + =A0fprintf (stderr, "MAX_UID =3D %d\n", cgraph_max_uid); >>>> >>>> this isn't accurate info - cloning can cause more cgraph nodes to >>>> appear (it also looks completely unrelated to dump_passes ...). >>>> Please drop it. >>> >>> Ok. >>> >>> >>>> >>>> + =A0create_pass_tab(); >>>> + =A0gcc_assert (pass_tab); >>>> >>>> you have quite many asserts of this kind - we don't want them when >>>> the previous stmt as in this case indicates everything is ok. >>> >>> ok. >>> >>>> >>>> + =A0push_cfun (DECL_STRUCT_FUNCTION (node->decl)); >>>> >>>> this has side-effects, I'm not sure we want this here. =A0Why do you >>>> need it? =A0Probably because of >>>> >>>> + =A0is_really_on =3D override_gate_status (pass, current_function_dec= l, is_on); >>>> >>>> ? =A0But that is dependent on the function given which should have no >>>> effect (unless it is overridden globally in which case override_gate_s= tatus >>>> and friends should deal with a NULL cfun). >>> >>> As we discussed, currently some pass gate functions depend on per node >>> information -- those checks need to be pushed into execute functions. >>> I would like to clean those up later -- at which time, the push/pop >>> can be removed. >> >> I'd like to do it the other way around, first clean up the gate function= s then >> drop in this patch without the cfun push/pop. =A0The revised patch looks= ok >> to me with the cfun push/pop removed. >> >> Thanks, >> Richard. >> >>>> >>>> I don't understand why you need another table mapping pass to name >>>> when pass->name is available and the info is trivially re-constructibl= e. >>> >>> This is needed as the pass->name is not the canonicalized name (i.e., >>> not with number suffix etc), so the extra mapping from id to >>> normalized name is needed. >>> >>> Thanks, >>> >>> David >>> >>>> >>>> Thanks, >>>> Richard. >>>> >>>>> David >>>>> >>>>> On Wed, Jun 1, 2011 at 12:45 PM, Xinliang David Li wrote: >>>>>> On Wed, Jun 1, 2011 at 12:29 PM, Richard Guenther >>>>>> wrote: >>>>>>> On Wed, Jun 1, 2011 at 6:16 PM, Xinliang David Li wrote: >>>>>>>> On Wed, Jun 1, 2011 at 1:51 AM, Richard Guenther >>>>>>>> wrote: >>>>>>>>> On Wed, Jun 1, 2011 at 1:34 AM, Xinliang David Li wrote: >>>>>>>>>> The following patch implements the a new option that dumps gcc P= ASS >>>>>>>>>> configuration. The sample output is attached. =A0There is one >>>>>>>>>> limitation: some placeholder passes that are named with '*xxx' a= re >>>>>>>>>> note registered thus they are not listed. They are not important= as >>>>>>>>>> they can not be turned on/off anyway. >>>>>>>>>> >>>>>>>>>> The patch also enhanced -fenable-xxx and -fdisable-xx to allow a= list >>>>>>>>>> of function assembler names to be specified. >>>>>>>>>> >>>>>>>>>> Ok for trunk? >>>>>>>>> >>>>>>>>> Please split the patch. >>>>>>>>> >>>>>>>>> I'm not too happy how you dump the pass configuration. =A0Why not= simply, >>>>>>>>> at a _single_ place, walk the pass tree? =A0Instead of doing piec= es of it >>>>>>>>> at pass execution time when it's not already dumped - that really= looks >>>>>>>>> gross. >>>>>>>> >>>>>>>> Yes, that was the original plan -- but it has problems >>>>>>>> 1) the dumper needs to know the root pass lists -- which can change >>>>>>>> frequently -- it can be a long term maintanance burden; >>>>>>>> 2) the centralized dumper needs to be done after option processing >>>>>>>> 3) not sure if gate functions have any side effects or have depend= encies on cfun >>>>>>>> >>>>>>>> The proposed solutions IMHO is not that intrusive -- just three ho= oks >>>>>>>> to do the dumping and tracking indentation. >>>>>>> >>>>>>> Well, if you have a CU that is empty or optimized to nothing at som= e point >>>>>>> you will not get a complete pass list. =A0I suppose optimize attrib= utes might >>>>>>> also confuse output. =A0Your solution might not be that intrusive >>>>>>> but it is still ugly. =A0I don't see 1) as an issue, for 2) you can= just call the >>>>>>> dumping from toplev_main before calling do_compile (), 3) gate func= tions >>>>>>> shouldn't have side-effects, but as they could gate on optimize_for= _speed () >>>>>>> your option summary output will be bogus anyway. >>>>>>> >>>>>>> So - what is the output intended for if it isn't reliable? >>>>>> >>>>>> This needs to be cleaned up at some point -- the gate function should >>>>>> behave the same for all functions and per-function decisions need to >>>>>> be pushed down to the executor body. =A0I will try to rework the pat= ch >>>>>> as you suggested to see if there are problems. >>>>>> >>>>>> David >>>>>> >>>>>> >>>>>>> >>>>>>> Richard. >>>>>>> >>>>>>>>> >>>>>>>>> The documentation should also link this option to the -fenable/di= sable >>>>>>>>> options as obviously the pass names in that dump are those to be >>>>>>>>> used for those flags (and not readily available anywhere else). >>>>>>>> >>>>>>>> Ok. >>>>>>>> >>>>>>>>> >>>>>>>>> I also think that it would be way more useful to note in the indi= vidual >>>>>>>>> dump files the functions (at the place they would usually appear)= that >>>>>>>>> have the pass explicitly enabled/disabled. >>>>>>>> >>>>>>>> Ok -- for ipa passes or tree/rtl passes where all functions are >>>>>>>> explicitly disabled. >>>>>>>> >>>>>>>> Thanks, >>>>>>>> >>>>>>>> David >>>>>>>> >>>>>>>>> >>>>>>>>> Richard. >>>>>>>>> >>>>>>>>>> Thanks, >>>>>>>>>> >>>>>>>>>> David >>>>>>>>>> >>>>>>>>> >>>>>>>> >>>>>>> >>>>>> >>>>> >>>> >>> >> > --001e680f0bf4933ef904a523be42 Content-Type: text/x-pascal; charset=US-ASCII; name="gate_cleanup.p" Content-Disposition: attachment; filename="gate_cleanup.p" Content-Transfer-Encoding: base64 X-Attachment-Id: f_gon7jj760 Content-length: 8740 SW5kZXg6IHRyZWUtY29tcGxleC5jCj09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K LS0tIHRyZWUtY29tcGxleC5jCShyZXZpc2lvbiAxNzQ3NTkpCisrKyB0cmVl LWNvbXBsZXguYwkod29ya2luZyBjb3B5KQpAQCAtMTU2OSw2ICsxNTY5LDEx IEBAIHRyZWVfbG93ZXJfY29tcGxleCAodm9pZCkKICAgZ2ltcGxlX3N0bXRf aXRlcmF0b3IgZ3NpOwogICBiYXNpY19ibG9jayBiYjsKIAorICAvKiBXaXRo IGVycm9ycywgbm9ybWFsIG9wdGltaXphdGlvbiBwYXNzZXMgYXJlIG5vdCBy dW4uICBJZiB3ZSBkb24ndAorICAgICBsb3dlciBjb21wbGV4IG9wZXJhdGlv bnMgYXQgYWxsLCBydGwgZXhwYW5zaW9uIHdpbGwgYWJvcnQuICAqLworICBp ZiAoY2Z1bi0+Y3Vycl9wcm9wZXJ0aWVzICYgUFJPUF9naW1wbGVfbGN4KQor ICAgIHJldHVybiAwOworCiAgIGlmICghaW5pdF9kb250X3NpbXVsYXRlX2Fn YWluICgpKQogICAgIHJldHVybiAwOwogCkBAIC0xNjM0LDkgKzE2MzksNyBA QCBzdHJ1Y3QgZ2ltcGxlX29wdF9wYXNzIHBhc3NfbG93ZXJfY29tcGxlCiBz dGF0aWMgYm9vbAogZ2F0ZV9ub19vcHRpbWl6YXRpb24gKHZvaWQpCiB7Ci0g IC8qIFdpdGggZXJyb3JzLCBub3JtYWwgb3B0aW1pemF0aW9uIHBhc3NlcyBh cmUgbm90IHJ1bi4gIElmIHdlIGRvbid0Ci0gICAgIGxvd2VyIGNvbXBsZXgg b3BlcmF0aW9ucyBhdCBhbGwsIHJ0bCBleHBhbnNpb24gd2lsbCBhYm9ydC4g ICovCi0gIHJldHVybiAhKGNmdW4tPmN1cnJfcHJvcGVydGllcyAmIFBST1Bf Z2ltcGxlX2xjeCk7CisgIHJldHVybiB0cnVlOwogfQogCiBzdHJ1Y3QgZ2lt cGxlX29wdF9wYXNzIHBhc3NfbG93ZXJfY29tcGxleF9PMCA9CkluZGV4OiB0 cmVlLXN0ZGFyZy5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHRyZWUt c3RkYXJnLmMJKHJldmlzaW9uIDE3NDc1OSkKKysrIHRyZWUtc3RkYXJnLmMJ KHdvcmtpbmcgY29weSkKQEAgLTYyNyw4ICs2MjcsNyBAQCBjaGVja19hbGxf dmFfbGlzdF9lc2NhcGVzIChzdHJ1Y3Qgc3RkYXJnCiBzdGF0aWMgYm9vbAog Z2F0ZV9vcHRpbWl6ZV9zdGRhcmcgKHZvaWQpCiB7Ci0gIC8qIFRoaXMgb3B0 aW1pemF0aW9uIGlzIG9ubHkgZm9yIHN0ZGFyZyBmdW5jdGlvbnMuICAqLwot ICByZXR1cm4gY2Z1bi0+c3RkYXJnICE9IDA7CisgIHJldHVybiB0cnVlOwog fQogCiAKQEAgLTY0NSw2ICs2NDQsMTAgQEAgZXhlY3V0ZV9vcHRpbWl6ZV9z dGRhcmcgKHZvaWQpCiAgIGNvbnN0IGNoYXIgKmZ1bmNuYW1lID0gTlVMTDsK ICAgdHJlZSBjZnVuX3ZhX2xpc3Q7CiAKKyAgLyogVGhpcyBvcHRpbWl6YXRp b24gaXMgb25seSBmb3Igc3RkYXJnIGZ1bmN0aW9ucy4gICovCisgIGlmIChj ZnVuLT5zdGRhcmcgPT0gMCkKKyAgICByZXR1cm4gMDsKKwogICBjZnVuLT52 YV9saXN0X2dwcl9zaXplID0gMDsKICAgY2Z1bi0+dmFfbGlzdF9mcHJfc2l6 ZSA9IDA7CiAgIG1lbXNldCAoJnNpLCAwLCBzaXplb2YgKHNpKSk7CkluZGV4 OiB0cmVlLWVoLmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gdHJlZS1l aC5jCShyZXZpc2lvbiAxNzQ3NTkpCisrKyB0cmVlLWVoLmMJKHdvcmtpbmcg Y29weSkKQEAgLTMyMzQsNiArMzIzNCw5IEBAIGV4ZWN1dGVfbG93ZXJfZWhf ZGlzcGF0Y2ggKHZvaWQpCiAgIGJvb2wgYW55X3Jld3JpdHRlbiA9IGZhbHNl OwogICBib29sIHJlZGlyZWN0ZWQgPSBmYWxzZTsKIAorICBpZiAoY2Z1bi0+ ZWgtPnJlZ2lvbl90cmVlID09IE5VTEwpCisgICAgcmV0dXJuIDA7CisKICAg YXNzaWduX2ZpbHRlcl92YWx1ZXMgKCk7CiAKICAgRk9SX0VBQ0hfQkIgKGJi KQpAQCAtMzI1NCw3ICszMjU3LDcgQEAgZXhlY3V0ZV9sb3dlcl9laF9kaXNw YXRjaCAodm9pZCkKIHN0YXRpYyBib29sCiBnYXRlX2xvd2VyX2VoX2Rpc3Bh dGNoICh2b2lkKQogewotICByZXR1cm4gY2Z1bi0+ZWgtPnJlZ2lvbl90cmVl ICE9IE5VTEw7CisgIHJldHVybiB0cnVlOwogfQogCiBzdHJ1Y3QgZ2ltcGxl X29wdF9wYXNzIHBhc3NfbG93ZXJfZWhfZGlzcGF0Y2ggPQpAQCAtMzk4Myw4 ICszOTg2LDEyIEBAIGV4ZWN1dGVfY2xlYW51cF9laF8xICh2b2lkKQogc3Rh dGljIHVuc2lnbmVkIGludAogZXhlY3V0ZV9jbGVhbnVwX2VoICh2b2lkKQog ewotICBpbnQgcmV0ID0gZXhlY3V0ZV9jbGVhbnVwX2VoXzEgKCk7CisgIGlu dCByZXQ7CiAKKyAgaWYgKGNmdW4tPmVoID09IE5VTEwgfHwgY2Z1bi0+ZWgt PnJlZ2lvbl90cmVlID09IE5VTEwpCisgICAgcmV0dXJuIDA7CisKKyAgcmV0 ID0gZXhlY3V0ZV9jbGVhbnVwX2VoXzEgKCk7CiAgIC8qIElmIHRoZSBmdW5j dGlvbiBubyBsb25nZXIgbmVlZHMgYW4gRUggcGVyc29uYWxpdHkgcm91dGlu ZQogICAgICBjbGVhciBpdC4gIFRoaXMgZXhwb3NlcyBjcm9zcy1sYW5ndWFn ZSBpbmxpbmluZyBvcHBvcnR1bml0aWVzCiAgICAgIGFuZCBhdm9pZHMgcmVm ZXJlbmNlcyB0byBhIG5ldmVyIGRlZmluZWQgcGVyc29uYWxpdHkgcm91dGlu ZS4gICovCkBAIC0zOTk4LDcgKzQwMDUsNyBAQCBleGVjdXRlX2NsZWFudXBf ZWggKHZvaWQpCiBzdGF0aWMgYm9vbAogZ2F0ZV9jbGVhbnVwX2VoICh2b2lk KQogewotICByZXR1cm4gY2Z1bi0+ZWggIT0gTlVMTCAmJiBjZnVuLT5laC0+ cmVnaW9uX3RyZWUgIT0gTlVMTDsKKyAgcmV0dXJuIHRydWU7CiB9CiAKIHN0 cnVjdCBnaW1wbGVfb3B0X3Bhc3MgcGFzc19jbGVhbnVwX2VoID0gewpJbmRl eDogZ2NzZS5jCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGdjc2UuYwko cmV2aXNpb24gMTc0NzU5KQorKysgZ2NzZS5jCSh3b3JraW5nIGNvcHkpCkBA IC0zNzEzLDE1ICszNzEzLDE3IEBAIHN0YXRpYyBib29sCiBnYXRlX3J0bF9w cmUgKHZvaWQpCiB7CiAgIHJldHVybiBvcHRpbWl6ZSA+IDAgJiYgZmxhZ19n Y3NlCi0gICAgJiYgIWNmdW4tPmNhbGxzX3NldGptcAotICAgICYmIG9wdGlt aXplX2Z1bmN0aW9uX2Zvcl9zcGVlZF9wIChjZnVuKQotICAgICYmIGRiZ19j bnQgKHByZSk7CisgICAgICAgICAmJiBvcHRpbWl6ZV9mdW5jdGlvbl9mb3Jf c3BlZWRfcCAoY2Z1bik7CiB9CiAKIHN0YXRpYyB1bnNpZ25lZCBpbnQKIGV4 ZWN1dGVfcnRsX3ByZSAodm9pZCkKIHsKICAgaW50IGNoYW5nZWQ7CisKKyAg aWYgKGNmdW4tPmNhbGxzX3NldGptcCB8fCAhZGJnX2NudCAocHJlKSkKKyAg ICByZXR1cm4gMDsKKwogICBkZWxldGVfdW5yZWFjaGFibGVfYmxvY2tzICgp OwogICBkZl9hbmFseXplICgpOwogICBjaGFuZ2VkID0gb25lX3ByZV9nY3Nl X3Bhc3MgKCk7CkBAIC0zNzM1LDE4ICszNzM3LDIwIEBAIHN0YXRpYyBib29s CiBnYXRlX3J0bF9ob2lzdCAodm9pZCkKIHsKICAgcmV0dXJuIG9wdGltaXpl ID4gMCAmJiBmbGFnX2djc2UKLSAgICAmJiAhY2Z1bi0+Y2FsbHNfc2V0am1w Ci0gICAgLyogSXQgZG9lcyBub3QgbWFrZSBzZW5zZSB0byBydW4gY29kZSBo b2lzdGluZyB1bmxlc3Mgd2UgYXJlIG9wdGltaXppbmcKLSAgICAgICBmb3Ig Y29kZSBzaXplIC0tIGl0IHJhcmVseSBtYWtlcyBwcm9ncmFtcyBmYXN0ZXIs IGFuZCBjYW4gbWFrZSB0aGVuCi0gICAgICAgYmlnZ2VyIGlmIHdlIGRpZCBQ UkUgKHdoZW4gb3B0aW1pemluZyBmb3Igc3BhY2UsIHdlIGRvbid0IHJ1biBQ UkUpLiAgKi8KLSAgICAmJiBvcHRpbWl6ZV9mdW5jdGlvbl9mb3Jfc2l6ZV9w IChjZnVuKQotICAgICYmIGRiZ19jbnQgKGhvaXN0KTsKKyAgICAgICAgLyog SXQgZG9lcyBub3QgbWFrZSBzZW5zZSB0byBydW4gY29kZSBob2lzdGluZyB1 bmxlc3Mgd2UgYXJlIG9wdGltaXppbmcKKyAgICAgICAgIGZvciBjb2RlIHNp emUgLS0gaXQgcmFyZWx5IG1ha2VzIHByb2dyYW1zIGZhc3RlciwgYW5kIGNh biBtYWtlIHRoZW4KKyAgICAgICAgIGJpZ2dlciBpZiB3ZSBkaWQgUFJFICh3 aGVuIG9wdGltaXppbmcgZm9yIHNwYWNlLCB3ZSBkb24ndCBydW4gUFJFKS4g ICovCisgICAgICAgICYmIG9wdGltaXplX2Z1bmN0aW9uX2Zvcl9zaXplX3Ag KGNmdW4pOwogfQogCiBzdGF0aWMgdW5zaWduZWQgaW50CiBleGVjdXRlX3J0 bF9ob2lzdCAodm9pZCkKIHsKICAgaW50IGNoYW5nZWQ7CisKKyAgaWYgKGNm dW4tPmNhbGxzX3NldGptcCB8fCAhZGJnX2NudCAoaG9pc3QpKQorICAgICAg cmV0dXJuIDA7CisKICAgZGVsZXRlX3VucmVhY2hhYmxlX2Jsb2NrcyAoKTsK ICAgZGZfYW5hbHl6ZSAoKTsKICAgY2hhbmdlZCA9IG9uZV9jb2RlX2hvaXN0 aW5nX3Bhc3MgKCk7CkBAIC0zNzk5LDQgKzM4MDMsMyBAQCBzdHJ1Y3QgcnRs X29wdF9wYXNzIHBhc3NfcnRsX2hvaXN0ID0KIH07CiAKICNpbmNsdWRlICJn dC1nY3NlLmgiCi0KSW5kZXg6IGV4Y2VwdC5jCj09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT0KLS0tIGV4Y2VwdC5jCShyZXZpc2lvbiAxNzQ3NTkpCisrKyBleGNl cHQuYwkod29ya2luZyBjb3B5KQpAQCAtMTQ0MCwxNCArMTQ0MCwxNyBAQCBm aW5pc2hfZWhfZ2VuZXJhdGlvbiAodm9pZCkKIHN0YXRpYyBib29sCiBnYXRl X2hhbmRsZV9laCAodm9pZCkKIHsKLSAgLyogTm90aGluZyB0byBkbyBpZiBu byByZWdpb25zIGNyZWF0ZWQuICAqLwotICByZXR1cm4gY2Z1bi0+ZWgtPnJl Z2lvbl90cmVlICE9IE5VTEw7CisgIHJldHVybiB0cnVlOwogfQogCiAvKiBD b21wbGV0ZSBnZW5lcmF0aW9uIG9mIGV4Y2VwdGlvbiBoYW5kbGluZyBjb2Rl LiAgKi8KIHN0YXRpYyB1bnNpZ25lZCBpbnQKIHJlc3Rfb2ZfaGFuZGxlX2Vo ICh2b2lkKQogeworICAvKiBOb3RoaW5nIHRvIGRvIGlmIG5vIHJlZ2lvbnMg Y3JlYXRlZC4gICovCisgIGlmIChjZnVuLT5laC0+cmVnaW9uX3RyZWUgPT0g TlVMTCkKKyAgICByZXR1cm4gMDsKKwogICBmaW5pc2hfZWhfZ2VuZXJhdGlv biAoKTsKICAgY2xlYW51cF9jZmcgKENMRUFOVVBfTk9fSU5TTl9ERUwpOwog ICByZXR1cm4gMDsKQEAgLTIzOTIsNiArMjM5NSw5IEBAIGNvbnZlcnRfdG9f ZWhfcmVnaW9uX3JhbmdlcyAodm9pZCkKICAgaW50IG1pbl9sYWJlbG5vID0g MCwgbWF4X2xhYmVsbm8gPSAwOwogICBpbnQgc2F2ZWRfY2FsbF9zaXRlX2Jh c2UgPSBjYWxsX3NpdGVfYmFzZTsKIAorICBpZiAoY2Z1bi0+ZWgtPnJlZ2lv bl90cmVlID09IE5VTEwpCisgICAgcmV0dXJuIDA7CisKICAgY3J0bC0+ZWgu YWN0aW9uX3JlY29yZF9kYXRhID0gVkVDX2FsbG9jICh1Y2hhciwgZ2MsIDY0 KTsKIAogICBhcl9oYXNoID0gaHRhYl9jcmVhdGUgKDMxLCBhY3Rpb25fcmVj b3JkX2hhc2gsIGFjdGlvbl9yZWNvcmRfZXEsIGZyZWUpOwpAQCAtMjY0Myw4 ICsyNjQ5LDYgQEAgc3RhdGljIGJvb2wKIGdhdGVfY29udmVydF90b19laF9y ZWdpb25fcmFuZ2VzICh2b2lkKQogewogICAvKiBOb3RoaW5nIHRvIGRvIGZv ciBTSkxKIGV4Y2VwdGlvbnMgb3IgaWYgbm8gcmVnaW9ucyBjcmVhdGVkLiAg Ki8KLSAgaWYgKGNmdW4tPmVoLT5yZWdpb25fdHJlZSA9PSBOVUxMKQotICAg IHJldHVybiBmYWxzZTsKICAgaWYgKHRhcmdldG0uZXhjZXB0X3Vud2luZF9p bmZvICgmZ2xvYmFsX29wdGlvbnMpID09IFVJX1NKTEopCiAgICAgcmV0dXJu IGZhbHNlOwogICByZXR1cm4gdHJ1ZTsKSW5kZXg6IGNwcm9wLmMKPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PQotLS0gY3Byb3AuYwkocmV2aXNpb24gMTc0NzU5 KQorKysgY3Byb3AuYwkod29ya2luZyBjb3B5KQpAQCAtMTg0MywxNSArMTg0 MywxNyBAQCBvbmVfY3Byb3BfcGFzcyAodm9pZCkKIHN0YXRpYyBib29sCiBn YXRlX3J0bF9jcHJvcCAodm9pZCkKIHsKLSAgcmV0dXJuIG9wdGltaXplID4g MCAmJiBmbGFnX2djc2UKLSAgICAmJiAhY2Z1bi0+Y2FsbHNfc2V0am1wCi0g ICAgJiYgZGJnX2NudCAoY3Byb3ApOworICByZXR1cm4gb3B0aW1pemUgPiAw ICYmIGZsYWdfZ2NzZTsKIH0KIAogc3RhdGljIHVuc2lnbmVkIGludAogZXhl Y3V0ZV9ydGxfY3Byb3AgKHZvaWQpCiB7CiAgIGludCBjaGFuZ2VkOworCisg IGlmIChjZnVuLT5jYWxsc19zZXRqbXAgfHwgIWRiZ19jbnQgKGNwcm9wKSkK KyAgICByZXR1cm4gMDsKKwogICBkZWxldGVfdW5yZWFjaGFibGVfYmxvY2tz ICgpOwogICBkZl9zZXRfZmxhZ3MgKERGX0xSX1JVTl9EQ0UpOwogICBkZl9h bmFseXplICgpOwpAQCAtMTg4Miw0ICsxODg0LDMgQEAgc3RydWN0IHJ0bF9v cHRfcGFzcyBwYXNzX3J0bF9jcHJvcCA9CiAgIFRPRE9fdmVyaWZ5X2Zsb3cg fCBUT0RPX2dnY19jb2xsZWN0ICAgLyogdG9kb19mbGFnc19maW5pc2ggKi8K ICB9CiB9OwotCg== --001e680f0bf4933ef904a523be42 Content-Type: text/x-pascal; charset=US-ASCII; name="dump-pass5.p" Content-Disposition: attachment; filename="dump-pass5.p" Content-Transfer-Encoding: base64 X-Attachment-Id: f_gon7jpuk1 Content-length: 9045 SW5kZXg6IGRvYy9pbnZva2UudGV4aQo9PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 Ci0tLSBkb2MvaW52b2tlLnRleGkJKHJldmlzaW9uIDE3NDc1OSkKKysrIGRv Yy9pbnZva2UudGV4aQkod29ya2luZyBjb3B5KQpAQCAtMjkxLDYgKzI5MSw3 IEBAIE9iamVjdGl2ZS1DIGFuZCBPYmplY3RpdmUtQysrIERpYWxlY3RzfS4K IC1mZHVtcC10cmFuc2xhdGlvbi11bml0QHJ7W30tQHZhcntufUBye119IEBn b2wKIC1mZHVtcC1jbGFzcy1oaWVyYXJjaHlAcntbfS1AdmFye259QHJ7XX0g QGdvbAogLWZkdW1wLWlwYS1hbGwgLWZkdW1wLWlwYS1jZ3JhcGggLWZkdW1w LWlwYS1pbmxpbmUgQGdvbAorLWZkdW1wLXBhc3NlcyBAZ29sCiAtZmR1bXAt c3RhdGlzdGljcyBAZ29sCiAtZmR1bXAtdHJlZS1hbGwgQGdvbAogLWZkdW1w LXRyZWUtb3JpZ2luYWxAcntbfS1AdmFye259QHJ7XX0gIEBnb2wKQEAgLTUw NjksNyArNTA3MCw4IEBAIHNlcGVyYXRlZCBsaXN0IG9mIGZ1bmN0aW9uIHJh bmdlcy4gIEVhY2gKIFRoZSByYW5nZSBpcyBpbmNsdXNpdmUgaW4gYm90aCBl bmRzLiAgSWYgdGhlIHJhbmdlIGlzIHRyaXZpYWwsIHRoZSBudW1iZXIgcGFp ciBjYW4gYmUKIHNpbXBsaWZpZWQgYSBhIHNpbmdsZSBudW1iZXIuICBJZiB0 aGUgZnVuY3Rpb24ncyBjZ3JhcGggbm9kZSdzIEB2YXJ7dWlkfSBpcyBmYWxs aW5nCiB3aXRoaW4gb25lIG9mIHRoZSBzcGVjaWZpZWQgcmFuZ2VzLCB0aGUg QHZhcntwYXNzfSBpcyBkaXNhYmxlZCBmb3IgdGhhdCBmdW5jdGlvbi4KLVRo ZSBAdmFye3VpZH0gaXMgc2hvd24gaW4gdGhlIGZ1bmN0aW9uIGhlYWRlciBv ZiBhIGR1bXAgZmlsZS4KK1RoZSBAdmFye3VpZH0gaXMgc2hvd24gaW4gdGhl IGZ1bmN0aW9uIGhlYWRlciBvZiBhIGR1bXAgZmlsZSwgYW5kIHBhc3MgbmFt ZXMgY2FuIGJlCitkdW1wZWQgYnkgdXNpbmcgb3B0aW9uIEBvcHRpb257LWZk dW1wLXBhc3Nlc30uCiAKIEBpdGVtIC1mZGlzYWJsZS10cmVlLUB2YXJ7cGFz c30KIEBpdGVtIC1mZGlzYWJsZS10cmVlLUB2YXJ7cGFzc309QHZhcntyYW5n ZS1saXN0fQpAQCAtNTQ5Miw2ICs1NDk0LDExIEBAIER1bXAgYWZ0ZXIgZnVu Y3Rpb24gaW5saW5pbmcuCiAKIEBlbmQgdGFibGUKIAorQGl0ZW0gLWZkdW1w LXBhc3NlcworQG9waW5kZXggZmR1bXAtcGFzc2VzCitEdW1wIHRoZSBsaXN0 IG9mIG9wdGltaXphdGlvbiBwYXNzZXMgdGhhdCBhcmUgdHVybmVkIG9uIGFu ZCBvZmYgYnkKK3RoZSBjdXJyZW50IGNvbW1hbmQgbGluZSBvcHRpb25zLgor CiBAaXRlbSAtZmR1bXAtc3RhdGlzdGljcy1AdmFye29wdGlvbn0KIEBvcGlu ZGV4IGZkdW1wLXN0YXRpc3RpY3MKIEVuYWJsZSBhbmQgY29udHJvbCBkdW1w aW5nIG9mIHBhc3Mgc3RhdGlzdGljcyBpbiBhIHNlcGFyYXRlIGZpbGUuICBU aGUKSW5kZXg6IHRyZWUtcGFzcy5oCj09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K LS0tIHRyZWUtcGFzcy5oCShyZXZpc2lvbiAxNzQ3NTkpCisrKyB0cmVlLXBh c3MuaAkod29ya2luZyBjb3B5KQpAQCAtNjM5LDUgKzYzOSw2IEBAIGV4dGVy biB2b2lkIGRvX3Blcl9mdW5jdGlvbl90b3BvcmRlciAodm8KIAogZXh0ZXJu IHZvaWQgZGlzYWJsZV9wYXNzIChjb25zdCBjaGFyICopOwogZXh0ZXJuIHZv aWQgZW5hYmxlX3Bhc3MgKGNvbnN0IGNoYXIgKik7CitleHRlcm4gdm9pZCBk dW1wX3Bhc3NlcyAodm9pZCk7CiAKICNlbmRpZiAvKiBHQ0NfVFJFRV9QQVNT X0ggKi8KSW5kZXg6IGNncmFwaHVuaXQuYwo9PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09Ci0tLSBjZ3JhcGh1bml0LmMJKHJldmlzaW9uIDE3NDc1OSkKKysrIGNn cmFwaHVuaXQuYwkod29ya2luZyBjb3B5KQpAQCAtMTExNyw2ICsxMTE3LDkg QEAgY2dyYXBoX2ZpbmFsaXplX2NvbXBpbGF0aW9uX3VuaXQgKHZvaWQpCiAg ICAgICBmZmx1c2ggKHN0ZGVycik7CiAgICAgfQogCisgIGlmIChmbGFnX2R1 bXBfcGFzc2VzKQorICAgIGR1bXBfcGFzc2VzICgpOworCiAgIC8qIEdpbXBs aWZ5IGFuZCBsb3dlciBhbGwgZnVuY3Rpb25zLCBjb21wdXRlIHJlYWNoYWJp bGl0eSBhbmQKICAgICAgcmVtb3ZlIHVucmVhY2hhYmxlIG5vZGVzLiAgKi8K ICAgY2dyYXBoX2FuYWx5emVfZnVuY3Rpb25zICgpOwpJbmRleDogY29tbW9u Lm9wdAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBjb21tb24ub3B0CShy ZXZpc2lvbiAxNzQ3NTkpCisrKyBjb21tb24ub3B0CSh3b3JraW5nIGNvcHkp CkBAIC0xMDEyLDYgKzEwMTIsMTAgQEAgZmR1bXAtbm9hZGRyCiBDb21tb24g UmVwb3J0IFZhcihmbGFnX2R1bXBfbm9hZGRyKQogU3VwcHJlc3Mgb3V0cHV0 IG9mIGFkZHJlc3NlcyBpbiBkZWJ1Z2dpbmcgZHVtcHMKIAorZmR1bXAtcGFz c2VzCitDb21tb24gVmFyKGZsYWdfZHVtcF9wYXNzZXMpIEluaXQoMCkKK0R1 bXAgb3B0aW1pemF0aW9uIHBhc3NlcworCiBmZHVtcC11bm51bWJlcmVkCiBD b21tb24gUmVwb3J0IFZhcihmbGFnX2R1bXBfdW5udW1iZXJlZCkKIFN1cHBy ZXNzIG91dHB1dCBvZiBpbnN0cnVjdGlvbiBudW1iZXJzLCBsaW5lIG51bWJl ciBub3RlcyBhbmQgYWRkcmVzc2VzIGluIGRlYnVnZ2luZyBkdW1wcwpJbmRl eDogcGFzc2VzLmMKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gcGFzc2Vz LmMJKHJldmlzaW9uIDE3NDc1OSkKKysrIHBhc3Nlcy5jCSh3b3JraW5nIGNv cHkpCkBAIC00NzgsNyArNDc4LDcgQEAgcGFzc3JfZXEgKGNvbnN0IHZvaWQg KnAxLCBjb25zdCB2b2lkICpwMgogICByZXR1cm4gIXN0cmNtcCAoczEtPnVu aXF1ZV9uYW1lLCBzMi0+dW5pcXVlX25hbWUpOwogfQogCi1zdGF0aWMgaHRh Yl90IHBhc3NfbmFtZV90YWIgPSBOVUxMOworc3RhdGljIGh0YWJfdCBuYW1l X3RvX3Bhc3NfbWFwID0gTlVMTDsKIAogLyogUmVnaXN0ZXIgUEFTUyB3aXRo IE5BTUUuICAqLwogCkBAIC00ODgsMTEgKzQ4OCwxMSBAQCByZWdpc3Rlcl9w YXNzX25hbWUgKHN0cnVjdCBvcHRfcGFzcyAqcGFzCiAgIHN0cnVjdCBwYXNz X3JlZ2lzdHJ5ICoqc2xvdDsKICAgc3RydWN0IHBhc3NfcmVnaXN0cnkgcHI7 CiAKLSAgaWYgKCFwYXNzX25hbWVfdGFiKQotICAgIHBhc3NfbmFtZV90YWIg PSBodGFiX2NyZWF0ZSAoMjU2LCBwYXNzcl9oYXNoLCBwYXNzcl9lcSwgTlVM TCk7CisgIGlmICghbmFtZV90b19wYXNzX21hcCkKKyAgICBuYW1lX3RvX3Bh c3NfbWFwID0gaHRhYl9jcmVhdGUgKDI1NiwgcGFzc3JfaGFzaCwgcGFzc3Jf ZXEsIE5VTEwpOwogCiAgIHByLnVuaXF1ZV9uYW1lID0gbmFtZTsKLSAgc2xv dCA9IChzdHJ1Y3QgcGFzc19yZWdpc3RyeSAqKikgaHRhYl9maW5kX3Nsb3Qg KHBhc3NfbmFtZV90YWIsICZwciwgSU5TRVJUKTsKKyAgc2xvdCA9IChzdHJ1 Y3QgcGFzc19yZWdpc3RyeSAqKikgaHRhYl9maW5kX3Nsb3QgKG5hbWVfdG9f cGFzc19tYXAsICZwciwgSU5TRVJUKTsKICAgaWYgKCEqc2xvdCkKICAgICB7 CiAgICAgICBzdHJ1Y3QgcGFzc19yZWdpc3RyeSAqbmV3X3ByOwpAQCAtNTA2 LDYgKzUwNiwxMDEgQEAgcmVnaXN0ZXJfcGFzc19uYW1lIChzdHJ1Y3Qgb3B0 X3Bhc3MgKnBhcwogICAgIHJldHVybjsgLyogSWdub3JlIHBsdWdpbiBwYXNz ZXMuICAqLwogfQogCisvKiBNYXAgZnJvbSBwYXNzIGlkIHRvIGNhbm9uaWNh bGl6ZWQgcGFzcyBuYW1lLiAgKi8KKwordHlwZWRlZiBjb25zdCBjaGFyICpj aGFyX3B0cjsKK0RFRl9WRUNfUChjaGFyX3B0cik7CitERUZfVkVDX0FMTE9D X1AoY2hhcl9wdHIsIGhlYXApOworc3RhdGljIFZFQyhjaGFyX3B0ciwgaGVh cCkgKnBhc3NfdGFiID0gTlVMTDsKKworLyogQ2FsbGJhY2sgZnVuY3Rpb24g Zm9yIHRyYXZlcnNpbmcgTkFNRV9UT19QQVNTX01BUC4gICovCisKK3N0YXRp YyBpbnQKK3Bhc3NfdHJhdmVyc2UgKHZvaWQgKipzbG90LCB2b2lkICpkYXRh IEFUVFJJQlVURV9VTlVTRUQpCit7CisgIHN0cnVjdCBwYXNzX3JlZ2lzdHJ5 ICoqcCA9IChzdHJ1Y3QgcGFzc19yZWdpc3RyeSAqKilzbG90OworICBzdHJ1 Y3Qgb3B0X3Bhc3MgKnBhc3MgPSAoKnApLT5wYXNzOworCisgIGdjY19hc3Nl cnQgKHBhc3MtPnN0YXRpY19wYXNzX251bWJlciA+IDApOworICBnY2NfYXNz ZXJ0IChwYXNzX3RhYik7CisKKyAgVkVDX3JlcGxhY2UgKGNoYXJfcHRyLCBw YXNzX3RhYiwgcGFzcy0+c3RhdGljX3Bhc3NfbnVtYmVyLAorICAgICAgICAg ICAgICAgKCpwKS0+dW5pcXVlX25hbWUpOworCisgIHJldHVybiAxOworfQor CisvKiBUaGUgZnVuY3Rpb24gdHJhdmVyc2VzIE5BTUVfVE9fUEFTU19NQVAg YW5kIGNyZWF0ZXMgYSBwYXNzIGluZm8KKyAgIHRhYmxlIGZvciBkdW1waW5n IHB1cnBvc2UuICAqLworCitzdGF0aWMgdm9pZAorY3JlYXRlX3Bhc3NfdGFi ICh2b2lkKQoreworICBpZiAoIWZsYWdfZHVtcF9wYXNzZXMpCisgICAgcmV0 dXJuOworCisgIFZFQ19zYWZlX2dyb3dfY2xlYXJlZCAoY2hhcl9wdHIsIGhl YXAsCisgICAgICAgICAgICAgICAgICAgICAgICAgcGFzc190YWIsIHBhc3Nl c19ieV9pZF9zaXplICsgMSk7CisgIGh0YWJfdHJhdmVyc2UgKG5hbWVfdG9f cGFzc19tYXAsIHBhc3NfdHJhdmVyc2UsIE5VTEwpOworfQorCitzdGF0aWMg Ym9vbCBvdmVycmlkZV9nYXRlX3N0YXR1cyAoc3RydWN0IG9wdF9wYXNzICos IHRyZWUsIGJvb2wpOworCisvKiBEdW1wIHRoZSBpbnN0YW50aWF0ZWQgbmFt ZSBmb3IgUEFTUy4gSVNfT04gaW5kaWNhdGVzIGlmIFBBU1MKKyAgIGlzIHR1 cm5lZCBvbiBvciBub3QuICAqLworCitzdGF0aWMgdm9pZAorZHVtcF9vbmVf cGFzcyAoc3RydWN0IG9wdF9wYXNzICpwYXNzLCBpbnQgcGFzc19pbmRlbnQp Cit7CisgIGludCBpbmRlbnQgPSAzICogcGFzc19pbmRlbnQ7CisgIGNvbnN0 IGNoYXIgKnBuOworICBib29sIGlzX29uLCBpc19yZWFsbHlfb247CisKKyAg aXNfb24gPSAocGFzcy0+Z2F0ZSA9PSBOVUxMKSA/IHRydWUgOiBwYXNzLT5n YXRlKCk7CisgIGlzX3JlYWxseV9vbiA9IG92ZXJyaWRlX2dhdGVfc3RhdHVz IChwYXNzLCBOVUxMLCBpc19vbik7CisKKyAgaWYgKHBhc3MtPnN0YXRpY19w YXNzX251bWJlciA8PSAwKQorICAgIHBuID0gcGFzcy0+bmFtZTsKKyAgZWxz ZQorICAgIHBuID0gVkVDX2luZGV4IChjaGFyX3B0ciwgcGFzc190YWIsIHBh c3MtPnN0YXRpY19wYXNzX251bWJlcik7CisKKyAgZnByaW50ZiAoc3RkZXJy LCAiJSpzJS00MHMlKnM6JXMlc1xuIiwgaW5kZW50LCAiICIsIHBuLAorICAg ICAgICAgICAoMTUgLSBpbmRlbnQgPCAwID8gMCA6IDE1IC0gaW5kZW50KSwg IiAiLAorICAgICAgICAgICBpc19vbiA/ICIgIE9OIiA6ICIgIE9GRiIsCisg ICAgICAgICAgICgoIWlzX29uKSA9PSAoIWlzX3JlYWxseV9vbikgPyAiIgor ICAgICAgICAgICAgOiAoaXNfcmVhbGx5X29uID8gIiAoRk9SQ0VEX09OKSIg OiAiIChGT1JDRURfT0ZGKSIpKSk7Cit9CisKKy8qIER1bXAgcGFzcyBsaXN0 IFBBU1Mgd2l0aCBpbmRlbnRhdGlvbiBJTkRFTlQuICAqLworCitzdGF0aWMg dm9pZAorZHVtcF9wYXNzX2xpc3QgKHN0cnVjdCBvcHRfcGFzcyAqcGFzcywg aW50IGluZGVudCkKK3sKKyAgZG8KKyAgICB7CisgICAgICBkdW1wX29uZV9w YXNzIChwYXNzLCBpbmRlbnQpOworICAgICAgaWYgKHBhc3MtPnN1YikKKyAg ICAgICAgZHVtcF9wYXNzX2xpc3QgKHBhc3MtPnN1YiwgaW5kZW50ICsgMSk7 CisgICAgICBwYXNzID0gcGFzcy0+bmV4dDsKKyAgICB9CisgIHdoaWxlIChw YXNzKTsKK30KKworLyogRHVtcCBhbGwgb3B0aW1pemF0aW9uIHBhc3Nlcy4g ICovCisKK3ZvaWQKK2R1bXBfcGFzc2VzICh2b2lkKQoreworICBjcmVhdGVf cGFzc190YWIoKTsKKworICBkdW1wX3Bhc3NfbGlzdCAoYWxsX2xvd2VyaW5n X3Bhc3NlcywgMSk7CisgIGR1bXBfcGFzc19saXN0IChhbGxfc21hbGxfaXBh X3Bhc3NlcywgMSk7CisgIGR1bXBfcGFzc19saXN0IChhbGxfcmVndWxhcl9p cGFfcGFzc2VzLCAxKTsKKyAgZHVtcF9wYXNzX2xpc3QgKGFsbF9sdG9fZ2Vu X3Bhc3NlcywgMSk7CisgIGR1bXBfcGFzc19saXN0IChhbGxfcGFzc2VzLCAx KTsKK30KKworCiAvKiBSZXR1cm5zIHRoZSBwYXNzIHdpdGggTkFNRS4gICov CiAKIHN0YXRpYyBzdHJ1Y3Qgb3B0X3Bhc3MgKgpAQCAtNTEzLDkgKzYwOCw4 IEBAIGdldF9wYXNzX2J5X25hbWUgKGNvbnN0IGNoYXIgKm5hbWUpCiB7CiAg IHN0cnVjdCBwYXNzX3JlZ2lzdHJ5ICoqc2xvdCwgcHI7CiAKLSAgZ2NjX2Fz c2VydCAocGFzc19uYW1lX3RhYik7CiAgIHByLnVuaXF1ZV9uYW1lID0gbmFt ZTsKLSAgc2xvdCA9IChzdHJ1Y3QgcGFzc19yZWdpc3RyeSAqKikgaHRhYl9m aW5kX3Nsb3QgKHBhc3NfbmFtZV90YWIsCisgIHNsb3QgPSAoc3RydWN0IHBh c3NfcmVnaXN0cnkgKiopIGh0YWJfZmluZF9zbG90IChuYW1lX3RvX3Bhc3Nf bWFwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgJnByLCBOT19JTlNFUlQpOwogCiAgIGlmICghc2xvdCB8 fCAhKnNsb3QpCg== --001e680f0bf4933ef904a523be42--