From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (qmail 26488 invoked by alias); 20 Sep 2013 16:45:03 -0000 Mailing-List: contact gdb-patches-help@sourceware.org; run by ezmlm Precedence: bulk List-Id: List-Subscribe: List-Archive: List-Post: List-Help: , Sender: gdb-patches-owner@sourceware.org Received: (qmail 26460 invoked by uid 89); 20 Sep 2013 16:45:02 -0000 Received: from mx1.redhat.com (HELO mx1.redhat.com) (209.132.183.28) by sourceware.org (qpsmtpd/0.93/v0.84-503-g423c35a) with ESMTP; Fri, 20 Sep 2013 16:45:02 +0000 Authentication-Results: sourceware.org; auth=none X-Virus-Found: No X-Spam-SWARE-Status: No, score=-3.0 required=5.0 tests=AWL,BAYES_00,RP_MATCHES_RCVD autolearn=ham version=3.3.2 X-Spam-User: qpsmtpd, 2 recipients X-HELO: mx1.redhat.com Received: from int-mx01.intmail.prod.int.phx2.redhat.com (int-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.11]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id r8KGixB1001899 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-SHA bits=256 verify=OK); Fri, 20 Sep 2013 12:45:00 -0400 Received: from barimba (ovpn-113-63.phx2.redhat.com [10.3.113.63]) by int-mx01.intmail.prod.int.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id r8KGiu1I014249 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES128-SHA bits=128 verify=NO); Fri, 20 Sep 2013 12:44:56 -0400 From: Tom Tromey To: gdb-patches@sourceware.org Subject: RFC: git config and scripts CC: Binutils Development Date: Fri, 20 Sep 2013 16:45:00 -0000 Message-ID: <87siwzqw6w.fsf@fleche.redhat.com> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="=-=-=" X-SW-Source: 2013-09/txt/msg00769.txt.bz2 --=-=-= Content-Type: text/plain Content-length: 1642 Pardon the cross-post, but this affects both gdb and binutils. I've hacked up some git configury and scripts for your perusal. I've tested most of the parts of this (not the config file yet), but usually in a mildly hacked form (e.g., using a script to replace "sendmail"). I will do live testing as we get closer to the end. This work consists of a few parts: * A modified copy of git's sample "post-receive" script, which I've hacked to be able to send email to multiple commit lists based on which directories were modified, and to send email to bugzilla when a PR is mentioned in a commit message. * A modified copy of the loginfo script we use, with anything pertaining to cvs removed, leaving just some bugzilla functionality. I further modified this to look in multiple products for a bug, when desired. * The "src-email" file, some configury for src.git which tells post-receive which directories correspond to which commit lists. * The git "config" file for src.git. About the last part -- there are various settings we could have for src.git. A few to consider: * I chose a relatively simple format for the commit email, and I kept the format used for bugzilla the same. The format I chose mentions the commit's URL, plus the "--pretty" log output (SHA, author, date, and commit message). * The appended config requires fast-forward pushes only. In archer we've relaxed this, since we like to be able to rebase, but not everybody likes that. * Other projects have "update" hooks to do things like reject merge commits to master, or reject commits that introduce trailing whitespace. Tom --=-=-= Content-Type: application/octet-stream Content-Disposition: attachment; filename=post-receive-email Content-Transfer-Encoding: base64 Content-Description: post-receive-email Content-length: 32823 IyEvYmluL3NoCiMKIyBDb3B5cmlnaHQgKGMpIDIwMDcgQW5keSBQYXJraW5z CiMgSGFja2VkIGZvciBidWd6aWxsYSBpbnRlZ3JhdGlvbiBpbiAyMDEzIGJ5 IFRvbSBUcm9tZXkKIwojIEFuIGV4YW1wbGUgaG9vayBzY3JpcHQgdG8gbWFp bCBvdXQgY29tbWl0IHVwZGF0ZSBpbmZvcm1hdGlvbi4gIFRoaXMgaG9vawoj IHNlbmRzIGVtYWlscyBsaXN0aW5nIG5ldyByZXZpc2lvbnMgdG8gdGhlIHJl cG9zaXRvcnkgaW50cm9kdWNlZCBieSB0aGUKIyBjaGFuZ2UgYmVpbmcgcmVw b3J0ZWQuICBUaGUgcnVsZSBpcyB0aGF0IChmb3IgYnJhbmNoIHVwZGF0ZXMp IGVhY2ggY29tbWl0CiMgd2lsbCBhcHBlYXIgb24gb25lIGVtYWlsIGFuZCBv bmUgZW1haWwgb25seS4KIwojIFRoaXMgaG9vayBpcyBzdG9yZWQgaW4gdGhl IGNvbnRyaWIvaG9va3MgZGlyZWN0b3J5LiAgWW91ciBkaXN0cmlidXRpb24K IyB3aWxsIGhhdmUgcHV0IHRoaXMgc29tZXdoZXJlIHN0YW5kYXJkLiAgWW91 IHNob3VsZCBtYWtlIHRoaXMgc2NyaXB0CiMgZXhlY3V0YWJsZSB0aGVuIGxp bmsgdG8gaXQgaW4gdGhlIHJlcG9zaXRvcnkgeW91IHdvdWxkIGxpa2UgdG8g dXNlIGl0IGluLgojIEZvciBleGFtcGxlLCBvbiBkZWJpYW4gdGhlIGhvb2sg aXMgc3RvcmVkIGluCiMgL3Vzci9zaGFyZS9naXQtY29yZS9jb250cmliL2hv b2tzL3Bvc3QtcmVjZWl2ZS1lbWFpbDoKIwojICBjaG1vZCBhK3ggcG9zdC1y ZWNlaXZlLWVtYWlsCiMgIGNkIC9wYXRoL3RvL3lvdXIvcmVwb3NpdG9yeS5n aXQKIyAgbG4gLXNmIC91c3Ivc2hhcmUvZ2l0LWNvcmUvY29udHJpYi9ob29r cy9wb3N0LXJlY2VpdmUtZW1haWwgaG9va3MvcG9zdC1yZWNlaXZlCiMKIyBU aGlzIGhvb2sgc2NyaXB0IGFzc3VtZXMgaXQgaXMgZW5hYmxlZCBvbiB0aGUg Y2VudHJhbCByZXBvc2l0b3J5IG9mIGEKIyBwcm9qZWN0LCB3aXRoIGFsbCB1 c2VycyBwdXNoaW5nIG9ubHkgdG8gaXQgYW5kIG5vdCBiZXR3ZWVuIGVhY2gg b3RoZXIuICBJdAojIHdpbGwgc3RpbGwgd29yayBpZiB5b3UgZG9uJ3Qgb3Bl cmF0ZSBpbiB0aGF0IHN0eWxlLCBidXQgaXQgd291bGQgYmVjb21lCiMgcG9z c2libGUgZm9yIHRoZSBlbWFpbCB0byBiZSBmcm9tIHNvbWVvbmUgb3RoZXIg dGhhbiB0aGUgcGVyc29uIGRvaW5nIHRoZQojIHB1c2guCiMKIyBUbyBoZWxw IHdpdGggZGVidWdnaW5nIGFuZCB1c2Ugb24gcHJlLXYxLjUuMSBnaXQgc2Vy dmVycywgdGhpcyBzY3JpcHQgd2lsbAojIGFsc28gb2JleSB0aGUgaW50ZXJm YWNlIG9mIGhvb2tzL3VwZGF0ZSwgdGFraW5nIGl0cyBhcmd1bWVudHMgb24g dGhlCiMgY29tbWFuZCBsaW5lLiAgVW5mb3J0dW5hdGVseSwgaG9va3MvdXBk YXRlIGlzIGNhbGxlZCBvbmNlIGZvciBlYWNoIHJlZi4KIyBUbyBhdm9pZCBm aXJpbmcgb25lIGVtYWlsIHBlciByZWYsIHRoaXMgc2NyaXB0IGp1c3QgcHJp bnRzIGl0cyBvdXRwdXQgdG8KIyB0aGUgc2NyZWVuIHdoZW4gdXNlZCBpbiB0 aGlzIG1vZGUuICBUaGUgb3V0cHV0IGNhbiB0aGVuIGJlIHJlZGlyZWN0ZWQg aWYKIyB3YW50ZWQuCiMKIyBDb25maWcKIyAtLS0tLS0KIyBob29rcy5tYWls aW5nbGlzdAojICAgVGhpcyBpcyB0aGUgbGlzdCB0aGF0IGFsbCBwdXNoZXMg d2lsbCBnbyB0bzsgbGVhdmUgaXQgYmxhbmsgdG8gbm90IHNlbmQKIyAgIGVt YWlscyBmb3IgZXZlcnkgcmVmIHVwZGF0ZS4KIyBob29rcy5hbm5vdW5jZWxp c3QKIyAgIFRoaXMgaXMgdGhlIGxpc3QgdGhhdCBhbGwgcHVzaGVzIG9mIGFu bm90YXRlZCB0YWdzIHdpbGwgZ28gdG8uICBMZWF2ZSBpdAojICAgYmxhbmsg dG8gZGVmYXVsdCB0byB0aGUgbWFpbGluZ2xpc3QgZmllbGQuICBUaGUgYW5u b3VuY2UgZW1haWxzIGxpc3RzCiMgICB0aGUgc2hvcnQgbG9nIHN1bW1hcnkg b2YgdGhlIGNoYW5nZXMgc2luY2UgdGhlIGxhc3QgYW5ub3RhdGVkIHRhZy4K IyBob29rcy5yZWNpcGllbnRmaWxlCiMgICBJZiBzZXQsIHRoaXMgaXMgYSBm aWxlIG5hbWUsIHJlbGF0aXZlIHRvIGBnaXQgcmV2LXBhcnNlIC0tZ2l0LWRp cmAuCiMgICBUaGlzIGZpbGUgY29udHJvbHMgaG93IHJlY2lwaWVudHMgYXJl IGNvbXB1dGVkIGZvciBhIGdpdmVuIGNvbW1pdAojICAgbWVzc2FnZS4KIyAg IExpbmVzIGluIHRoZSBmaWxlIHN0YXJ0aW5nIHdpdGggIiMiIGFyZSBpZ25v cmVkIChsZWFkaW5nCiMgICB3aGl0ZXNwYWNlIGlzIGFsc28gaWdub3JlZCBv biBjb21tZW50IGxpbmVzKS4KIyAgIE9uY2Ugc3RyaXBwZWQgb2Ygd2hpdGVz cGFjZSwgbGluZXMgYXJlIHJlYWQgZnJvbSB0aGUgZmlsZS4KIyAgIEVhY2gg bGluZSBjb25zaXN0cyBvZiBhIHJlZ3VsYXIgZXhwcmVzc2lvbiBmb2xsb3dl ZCBieSBhbgojICAgZW1haWwgYWRkcmVzcy4gIEZvciBlYWNoIGRpcmVjdG9y eSBuYW1lLCBlYWNoIHJlZ3VsYXIgZXhwcmVzc2lvbiBpcwojICAgdHJpZWQu ICBJZiBpdCBtYXRjaGVzLCB0aGVuIHRoZSBjb3JyZXNwb25kaW5nIGVtYWls IGFkZHJlc3MgaXMKIyAgIHVzZWQuCiMgaG9va3MuZW52ZWxvcGVzZW5kZXIK IyAgIElmIHNldCB0aGVuIHRoZSAtZiBvcHRpb24gaXMgcGFzc2VkIHRvIHNl bmRtYWlsIHRvIGFsbG93IHRoZSBlbnZlbG9wZQojICAgc2VuZGVyIGFkZHJl c3MgdG8gYmUgc2V0CiMgaG9va3MuZW1haWxwcmVmaXgKIyAgIEFsbCBlbWFp bHMgaGF2ZSB0aGVpciBzdWJqZWN0cyBwcmVmaXhlZCB3aXRoIHRoaXMgcHJl Zml4LCBvciAiW1NDTV0iCiMgICBpZiBlbWFpbHByZWZpeCBpcyB1bnNldCwg dG8gYWlkIGZpbHRlcmluZwojIGhvb2tzLnNob3dyZXYKIyAgIFRoZSBzaGVs bCBjb21tYW5kIHVzZWQgdG8gZm9ybWF0IGVhY2ggcmV2aXNpb24gaW4gdGhl IGVtYWlsLCB3aXRoCiMgICAiJXMiIHJlcGxhY2VkIHdpdGggdGhlIGNvbW1p dCBpZC4gIERlZmF1bHRzIHRvICJnaXQgcmV2LWxpc3QgLTEKIyAgIC0tcHJl dHR5ICVzIiwgZGlzcGxheWluZyB0aGUgY29tbWl0IGlkLCBhdXRob3IsIGRh dGUgYW5kIGxvZwojICAgbWVzc2FnZS4gIFRvIGxpc3QgZnVsbCBwYXRjaGVz IHNlcGFyYXRlZCBieSBhIGJsYW5rIGxpbmUsIHlvdQojICAgY291bGQgc2V0 IHRoaXMgdG8gImdpdCBzaG93IC1DICVzOyBlY2hvIi4KIyAgIFRvIGxpc3Qg YSBnaXR3ZWIvY2dpdCBVUkwgKmFuZCogYSBmdWxsIHBhdGNoIGZvciBlYWNo IGNoYW5nZSBzZXQsIHVzZSB0aGlzOgojICAgICAidD0lczsgcHJpbnRmICdo dHRwOi8vLi4uLz9pZD0lJXMnIFwkdDsgZWNobztlY2hvOyBnaXQgc2hvdyAt QyBcJHQ7IGVjaG8iCiMgICBCZSBjYXJlZnVsIGlmICIuLi4iIGNvbnRhaW5z IHRoaW5ncyB0aGF0IHdpbGwgYmUgZXhwYW5kZWQgYnkgc2hlbGwgImV2YWwi CiMgICBvciBwcmludGYuCiMgaG9va3MuZW1haWxtYXhsaW5lcwojICAgVGhl IG1heGltdW0gbnVtYmVyIG9mIGxpbmVzIHRoYXQgc2hvdWxkIGJlIGluY2x1 ZGVkIGluIHRoZSBnZW5lcmF0ZWQKIyAgIGVtYWlsIGJvZHkuIElmIG5vdCBz cGVjaWZpZWQsIHRoZXJlIGlzIG5vIGxpbWl0LgojICAgTGluZXMgYmV5b25k IHRoZSBsaW1pdCBhcmUgc3VwcHJlc3NlZCBhbmQgY291bnRlZCwgYW5kIGEg ZmluYWwKIyAgIGxpbmUgaXMgYWRkZWQgaW5kaWNhdGluZyB0aGUgbnVtYmVy IG9mIHN1cHByZXNzZWQgbGluZXMuCiMgaG9va3MuZGlmZm9wdHMKIyAgIEFs dGVybmF0ZSBvcHRpb25zIGZvciB0aGUgZ2l0IGRpZmYtdHJlZSBpbnZvY2F0 aW9uIHRoYXQgc2hvd3MgY2hhbmdlcy4KIyAgIERlZmF1bHQgaXMgIi0tc3Rh dCAtLXN1bW1hcnkgLS1maW5kLWNvcGllcy1oYXJkZXIiLiBBZGQgLXAgdG8g dGhvc2UKIyAgIG9wdGlvbnMgdG8gaW5jbHVkZSBhIHVuaWZpZWQgZGlmZiBv ZiBjaGFuZ2VzIGluIGFkZGl0aW9uIHRvIHRoZSB1c3VhbAojICAgc3VtbWFy eSBvdXRwdXQuCiMgaG9va3MuYnVnemlsbGFwcm9kdWN0CiMgICBJZiBub3Qg ZW1wdHksIHRoZSBwcm9kdWN0IHRvIHVzZSBmb3IgYnVnemlsbGEgbm90aWZp Y2F0aW9uLgojICAgSWYgZW1wdHkgb3Igbm90IHNldCwgbm8gYnVnemlsbGEg bm90aWZpY2F0aW9uIGlzIGF0dGVtcHRlZC4KIyAgIFRoaXMgaG9sZHMgYSBz cGFjZS1zZXBhcmF0ZWQgbGlzdCBvZiBidWd6aWxsYSBwcm9kdWN0cyBpbiB3 aGljCiMgICByZWZlcmVuY2VkIGJ1Z3MgbWF5IGFwcGVhciwgZS5nLiwgImdk YiBiaW51dGlscyIuCiMgaG9va3MuYnVnemlsbGFzaG93cmV2CiMgICBMaWtl IGhvb2tzLnNob3dyZXYsIGJ1dCBvbmx5IHVzZWQgZm9yIHRoZSBidWd6aWxs YSBub3RpZmljYXRpb24uCiMgICBEZWZhdWx0cyB0byBob29rcy5zaG93cmV2 LgojIE5vdGVzCiMgLS0tLS0KIyBBbGwgZW1haWxzIGluY2x1ZGUgdGhlIGhl YWRlcnMgIlgtR2l0LVJlZm5hbWUiLCAiWC1HaXQtT2xkcmV2IiwKIyAiWC1H aXQtTmV3cmV2IiwgYW5kICJYLUdpdC1SZWZ0eXBlIiB0byBlbmFibGUgZmlu ZSB0dW5lZCBmaWx0ZXJpbmcgYW5kCiMgZ2l2ZSBpbmZvcm1hdGlvbiBmb3Ig ZGVidWdnaW5nLgojCgojIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0g RnVuY3Rpb25zCgojCiMgSGFuZGxlIHRoZSAicmVjaXBpZW50ZmlsZSIuCiMK Y29tcHV0ZV9yZWNpcGllbnRzX2Zyb21fZmlsZSgpCnsKCW15X29sZHJldj0i JDEiCglteV9uZXdyZXY9IiQyIgoKCWZpbGU9JChnaXQgcmV2LXBhcnNlIC0t Z2l0LWRpcikvJHJlY2lwaWVudGZpbGUKCgl0ZmlsZT0kKG1rdGVtcCkKCXBm aWxlPSQobWt0ZW1wKQoJdHJhcCAncm0gLWYgJHRmaWxlICRwZmlsZScgRVhJ VAoKCSMgUHV0IHRoZSBkaXJlY3RvcnkgbmFtZXMgaW4gYSB0ZW1wb3Jhcnkg ZmlsZS4KCSMgRW5zdXJlIGVhY2ggZGlyZWN0b3J5IGVuZHMgd2l0aCAiLyIg Zm9yIG5pY2VyCgkjIHJlZ2V4cGluZy4KCWdpdCBsb2cgLS1wcmV0dHk9Zm9y bWF0OiAtLW5hbWUtb25seSAkbXlfb2xkcmV2Li4kbXlfbmV3cmV2IFwKCSAg ICB8IHNlZCAtZSAnL14kLyBkJyBcCgkgICAgfCB4YXJncyAtTCAxIGRpcm5h bWUgXAoJICAgIHwgc29ydCAtdSBcCgkgICAgfCBzZWQgLWUgJ3MsJCwvLCcg PiAkdGZpbGUKCgkjIE1ha2UgYSBwZXJsIHNjcmlwdCB0byBkbyB0aGUgd29y ayBieSBtdW5naW5nIHRoZQoJIyByZWdleHAgZmlsZS4KCWVjaG8gJ2Nob21w OycgPiAkcGZpbGUKCXNlZCAtZSAnL15bIAldKiMuKiQvZCcgLWUgJy9eJC8g ZCcgXAoJICAgIC1lICJzJV5cKFteIAldKlwpWyAJXSpcKC4qXCkkJWlmICht LFwxLCkgeyBwcmludCAnXDInIC4gXCJcXFxuXCI7IG5leHQ7IH0lIiBcCgkg ICAgPCAkZmlsZSA+PiAkcGZpbGUKCglyZWNpcGllbnRzPSQocGVybCAtbiAk cGZpbGUgPCAkdGZpbGUgfCBzb3J0IC11KQoJaWYgdGVzdCAteiAiJHJlY2lw aWVudCI7IHRoZW4KCSAgICByZWNpcGllbnRzPSIkb3JpZ19yZWNpcGllbnRz IgoJZmkKfQoKIwojIEZ1bmN0aW9uIHRvIHByZXBhcmUgZm9yIGVtYWlsIGdl bmVyYXRpb24uIFRoaXMgZGVjaWRlcyB3aGF0IHR5cGUKIyBvZiB1cGRhdGUg dGhpcyBpcyBhbmQgd2hldGhlciBhbiBlbWFpbCBzaG91bGQgZXZlbiBiZSBn ZW5lcmF0ZWQuCiMKcHJlcF9mb3JfZW1haWwoKQp7CgkjIC0tLSBBcmd1bWVu dHMKCW9sZHJldj0kKGdpdCByZXYtcGFyc2UgJDEpCgluZXdyZXY9JChnaXQg cmV2LXBhcnNlICQyKQoJcmVmbmFtZT0iJDMiCgoJIyAtLS0gSW50ZXJwcmV0 CgkjIDAwMDAtPjEyMzQgKGNyZWF0ZSkKCSMgMTIzNC0+MjM0NSAodXBkYXRl KQoJIyAyMzQ1LT4wMDAwIChkZWxldGUpCglpZiBleHByICIkb2xkcmV2IiA6 ICcwKiQnID4vZGV2L251bGwKCXRoZW4KCQljaGFuZ2VfdHlwZT0iY3JlYXRl IgoJZWxzZQoJCWlmIGV4cHIgIiRuZXdyZXYiIDogJzAqJCcgPi9kZXYvbnVs bAoJCXRoZW4KCQkJY2hhbmdlX3R5cGU9ImRlbGV0ZSIKCQllbHNlCgkJCWNo YW5nZV90eXBlPSJ1cGRhdGUiCgkJZmkKCWZpCgoJIyAtLS0gR2V0IHRoZSBy ZXZpc2lvbiB0eXBlcwoJbmV3cmV2X3R5cGU9JChnaXQgY2F0LWZpbGUgLXQg JG5ld3JldiAyPiAvZGV2L251bGwpCglvbGRyZXZfdHlwZT0kKGdpdCBjYXQt ZmlsZSAtdCAiJG9sZHJldiIgMj4gL2Rldi9udWxsKQoJY2FzZSAiJGNoYW5n ZV90eXBlIiBpbgoJY3JlYXRlfHVwZGF0ZSkKCQlyZXY9IiRuZXdyZXYiCgkJ cmV2X3R5cGU9IiRuZXdyZXZfdHlwZSIKCQk7OwoJZGVsZXRlKQoJCXJldj0i JG9sZHJldiIKCQlyZXZfdHlwZT0iJG9sZHJldl90eXBlIgoJCTs7Cgllc2Fj CgoJaWYgdGVzdCAtbiAiJHJlY2lwaWVudGZpbGUiOyB0aGVuCgkgICAgY29t cHV0ZV9yZWNpcGllbnRzX2Zyb21fZmlsZSAkb2xkcmV2ICRuZXdyZXYKCWVs c2UKCSAgICByZWNpcGllbnRzPSIkb3JpZ19yZWNpcGllbnRzIgoJZmkKCSMg VGhlIHJldmlzaW9uIHR5cGUgdGVsbHMgdXMgd2hhdCB0eXBlIHRoZSBjb21t aXQgaXMsIGNvbWJpbmVkIHdpdGgKCSMgdGhlIGxvY2F0aW9uIG9mIHRoZSBy ZWYgd2UgY2FuIGRlY2lkZSBiZXR3ZWVuCgkjICAtIHdvcmtpbmcgYnJhbmNo CgkjICAtIHRyYWNraW5nIGJyYW5jaAoJIyAgLSB1bmFubm90ZWQgdGFnCgkj ICAtIGFubm90YXRlZCB0YWcKCWNhc2UgIiRyZWZuYW1lIiwiJHJldl90eXBl IiBpbgoJCXJlZnMvdGFncy8qLGNvbW1pdCkKCQkJIyB1bi1hbm5vdGF0ZWQg dGFnCgkJCXJlZm5hbWVfdHlwZT0idGFnIgoJCQlzaG9ydF9yZWZuYW1lPSR7 cmVmbmFtZSMjcmVmcy90YWdzL30KCQkJOzsKCQlyZWZzL3RhZ3MvKix0YWcp CgkJCSMgYW5ub3RhdGVkIHRhZwoJCQlyZWZuYW1lX3R5cGU9ImFubm90YXRl ZCB0YWciCgkJCXNob3J0X3JlZm5hbWU9JHtyZWZuYW1lIyNyZWZzL3RhZ3Mv fQoJCQkjIGNoYW5nZSByZWNpcGllbnRzCgkJCWlmIFsgLW4gIiRhbm5vdW5j ZXJlY2lwaWVudHMiIF07IHRoZW4KCQkJCXJlY2lwaWVudHM9IiRhbm5vdW5j ZXJlY2lwaWVudHMiCgkJCWZpCgkJCTs7CgkJcmVmcy9oZWFkcy8qLGNvbW1p dCkKCQkJIyBicmFuY2gKCQkJcmVmbmFtZV90eXBlPSJicmFuY2giCgkJCXNo b3J0X3JlZm5hbWU9JHtyZWZuYW1lIyNyZWZzL2hlYWRzL30KCQkJOzsKCQly ZWZzL3JlbW90ZXMvKixjb21taXQpCgkJCSMgdHJhY2tpbmcgYnJhbmNoCgkJ CXJlZm5hbWVfdHlwZT0idHJhY2tpbmcgYnJhbmNoIgoJCQlzaG9ydF9yZWZu YW1lPSR7cmVmbmFtZSMjcmVmcy9yZW1vdGVzL30KCQkJZWNobyA+JjIgIioq KiBQdXNoLXVwZGF0ZSBvZiB0cmFja2luZyBicmFuY2gsICRyZWZuYW1lIgoJ CQllY2hvID4mMiAiKioqICAtIG5vIGVtYWlsIGdlbmVyYXRlZC4iCgkJCXJl dHVybiAxCgkJCTs7CgkJKikKCQkJIyBBbnl0aGluZyBlbHNlIChpcyB0aGVy ZSBhbnl0aGluZyBlbHNlPykKCQkJZWNobyA+JjIgIioqKiBVbmtub3duIHR5 cGUgb2YgdXBkYXRlIHRvICRyZWZuYW1lICgkcmV2X3R5cGUpIgoJCQllY2hv ID4mMiAiKioqICAtIG5vIGVtYWlsIGdlbmVyYXRlZCIKCQkJcmV0dXJuIDEK CQkJOzsKCWVzYWMKCgkjIENoZWNrIGlmIHdlJ3ZlIGdvdCBhbnlvbmUgdG8g c2VuZCB0bwoJaWYgWyAteiAiJHJlY2lwaWVudHMiIF07IHRoZW4KCQljYXNl ICIkcmVmbmFtZV90eXBlIiBpbgoJCQkiYW5ub3RhdGVkIHRhZyIpCgkJCQlj b25maWdfbmFtZT0iaG9va3MuYW5ub3VuY2VsaXN0IgoJCQkJOzsKCQkJKikK CQkJCWNvbmZpZ19uYW1lPSJob29rcy5tYWlsaW5nbGlzdCIKCQkJCTs7CgkJ ZXNhYwoJCWVjaG8gPiYyICIqKiogJGNvbmZpZ19uYW1lIGlzIG5vdCBzZXQg c28gbm8gZW1haWwgd2lsbCBiZSBzZW50IgoJCWVjaG8gPiYyICIqKiogZm9y ICRyZWZuYW1lIHVwZGF0ZSAkb2xkcmV2LT4kbmV3cmV2IgoJCXJldHVybiAx CglmaQoKCXJldHVybiAwCn0KCiMKIyBUb3AgbGV2ZWwgZW1haWwgZ2VuZXJh dGlvbiBmdW5jdGlvbi4gIFRoaXMgY2FsbHMgdGhlIGFwcHJvcHJpYXRlCiMg Ym9keS1nZW5lcmF0aW9uIHJvdXRpbmUgYWZ0ZXIgb3V0cHV0dGluZyB0aGUg Y29tbW9uIGhlYWRlci4KIwojIE5vdGUgdGhpcyBmdW5jdGlvbiBkb2Vzbid0 IGFjdHVhbGx5IGdlbmVyYXRlIGFueSBlbWFpbCBvdXRwdXQsIHRoYXQgaXMK IyB0YWtlbiBjYXJlIG9mIGJ5IHRoZSBmdW5jdGlvbnMgaXQgY2FsbHM6CiMg IC0gZ2VuZXJhdGVfZW1haWxfaGVhZGVyCiMgIC0gZ2VuZXJhdGVfY3JlYXRl X1hYWFhfZW1haWwKIyAgLSBnZW5lcmF0ZV91cGRhdGVfWFhYWF9lbWFpbAoj ICAtIGdlbmVyYXRlX2RlbGV0ZV9YWFhYX2VtYWlsCiMgIC0gZ2VuZXJhdGVf ZW1haWxfZm9vdGVyCiMKIyBOb3RlIGFsc28gdGhhdCB0aGlzIGZ1bmN0aW9u IGNhbm5vdCAnZXhpdCcgZnJvbSB0aGUgc2NyaXB0OyB3aGVuIHRoaXMKIyBm dW5jdGlvbiBpcyBydW5uaW5nIChpbiBob29rIHNjcmlwdCBtb2RlKSwgdGhl IHNlbmRfbWFpbCgpIGZ1bmN0aW9uCiMgaXMgYWxyZWFkeSBleGVjdXRpbmcg aW4gYW5vdGhlciBwcm9jZXNzLCBjb25uZWN0ZWQgdmlhIGEgcGlwZSwgYW5k CiMgaWYgdGhpcyBmdW5jdGlvbiBleGl0cyB3aXRob3V0LCB3aGF0ZXZlciBo YXMgYmVlbiBnZW5lcmF0ZWQgdG8gdGhhdAojIHBvaW50IHdpbGwgYmUgc2Vu dCBhcyBhbiBlbWFpbC4uLiBldmVuIGlmIG5vdGhpbmcgaGFzIGJlZW4gZ2Vu ZXJhdGVkLgojCiMgVGhpcyBhY2NlcHRzIHRoZSBvcHRpb24gIi1idWd6aWxs YSIsIGluIHdoaWNoIGNhc2UgaXQgYXNzdW1lcyB0aGF0CiMgZW1haWwtdG8t YnVnemlsbGEgaXMgaW4gdXNlLCBhbmQgc28gZG9lcyBub3QgZ2VuZXJhdGUg YW4gZW1haWwgaGVhZGVyLgpnZW5lcmF0ZV9lbWFpbCgpCnsKCWlmIHRlc3Qg IiQxIiA9ICItYnVnemlsbGEiOyB0aGVuCgkgICAgaXNfYnVnemlsbGE9dHJ1 ZQoJZWxzZQoJICAgIGlzX2J1Z3ppbGxhPWZhbHNlCglmaQoKCSMgRW1haWwg cGFyYW1ldGVycwoJIyBUaGUgZW1haWwgc3ViamVjdCB3aWxsIGNvbnRhaW4g dGhlIGJlc3QgZGVzY3JpcHRpb24gb2YgdGhlIHJlZgoJIyB0aGF0IHdlIGNh biBidWlsZCBmcm9tIHRoZSBwYXJhbWV0ZXJzCglkZXNjcmliZT0kKGdpdCBk ZXNjcmliZSAkcmV2IDI+L2Rldi9udWxsKQoJaWYgWyAteiAiJGRlc2NyaWJl IiBdOyB0aGVuCgkJZGVzY3JpYmU9JHJldgoJZmkKCgkkaXNfYnVnemlsbGEg fHwgZ2VuZXJhdGVfZW1haWxfaGVhZGVyCgoJIyBDYWxsIHRoZSBjb3JyZWN0 IGJvZHkgZ2VuZXJhdGlvbiBmdW5jdGlvbgoJZm5fbmFtZT1nZW5lcmFsCglj YXNlICIkcmVmbmFtZV90eXBlIiBpbgoJInRyYWNraW5nIGJyYW5jaCJ8YnJh bmNoKQoJCWZuX25hbWU9YnJhbmNoCgkJOzsKCSJhbm5vdGF0ZWQgdGFnIikK CQlmbl9uYW1lPWF0YWcKCQk7OwoJZXNhYwoKCWlmIFsgLXogIiRtYXhsaW5l cyIgXTsgdGhlbgoJCWdlbmVyYXRlXyR7Y2hhbmdlX3R5cGV9XyR7Zm5fbmFt ZX1fZW1haWwKCWVsc2UKCQlnZW5lcmF0ZV8ke2NoYW5nZV90eXBlfV8ke2Zu X25hbWV9X2VtYWlsIHwgbGltaXRfbGluZXMgJG1heGxpbmVzCglmaQoKCSRp c19idWd6aWxsYSB8fCBnZW5lcmF0ZV9lbWFpbF9mb290ZXIKfQoKZ2VuZXJh dGVfZW1haWxfaGVhZGVyKCkKewoJIyAtLS0gRW1haWwgKGFsbCBzdGRvdXQg d2lsbCBiZSB0aGUgZW1haWwpCgkjIEdlbmVyYXRlIGhlYWRlcgoJY2F0IDw8 LUVPRgoJVG86ICRyZWNpcGllbnRzCglTdWJqZWN0OiAke2VtYWlscHJlZml4 fSRwcm9qZWN0ZGVzYyAkcmVmbmFtZV90eXBlICRzaG9ydF9yZWZuYW1lICR7 Y2hhbmdlX3R5cGV9ZC4gJGRlc2NyaWJlCglYLUdpdC1SZWZuYW1lOiAkcmVm bmFtZQoJWC1HaXQtUmVmdHlwZTogJHJlZm5hbWVfdHlwZQoJWC1HaXQtT2xk cmV2OiAkb2xkcmV2CglYLUdpdC1OZXdyZXY6ICRuZXdyZXYKCglUaGlzIGlz IGFuIGF1dG9tYXRlZCBlbWFpbCBmcm9tIHRoZSBnaXQgaG9va3MvcG9zdC1y ZWNlaXZlIHNjcmlwdC4gSXQgd2FzCglnZW5lcmF0ZWQgYmVjYXVzZSBhIHJl ZiBjaGFuZ2Ugd2FzIHB1c2hlZCB0byB0aGUgcmVwb3NpdG9yeSBjb250YWlu aW5nCgl0aGUgcHJvamVjdCAiJHByb2plY3RkZXNjIi4KCglUaGUgJHJlZm5h bWVfdHlwZSwgJHNob3J0X3JlZm5hbWUgaGFzIGJlZW4gJHtjaGFuZ2VfdHlw ZX1kCglFT0YKfQoKZ2VuZXJhdGVfZW1haWxfZm9vdGVyKCkKewoJU1BBQ0U9 IiAiCgljYXQgPDwtRU9GCgoKCWhvb2tzL3Bvc3QtcmVjZWl2ZQoJLS0ke1NQ QUNFfQoJJHByb2plY3RkZXNjCglFT0YKfQoKIyAtLS0tLS0tLS0tLS0tLS0g QnJhbmNoZXMKCiMKIyBDYWxsZWQgZm9yIHRoZSBjcmVhdGlvbiBvZiBhIGJy YW5jaAojCmdlbmVyYXRlX2NyZWF0ZV9icmFuY2hfZW1haWwoKQp7CgkjIFRo aXMgaXMgYSBuZXcgYnJhbmNoIGFuZCBzbyBvbGRyZXYgaXMgbm90IHZhbGlk CgllY2hvICIgICAgICAgIGF0ICAkbmV3cmV2ICgkbmV3cmV2X3R5cGUpIgoJ ZWNobyAiIgoKCWVjaG8gJExPR0JFR0lOCglzaG93X25ld19yZXZpc2lvbnMK CWVjaG8gJExPR0VORAp9CgojCiMgQ2FsbGVkIGZvciB0aGUgY2hhbmdlIG9m IGEgcHJlLWV4aXN0aW5nIGJyYW5jaAojCmdlbmVyYXRlX3VwZGF0ZV9icmFu Y2hfZW1haWwoKQp7CgkjIENvbnNpZGVyIHRoaXM6CgkjICAgMSAtLS0gMiAt LS0gTyAtLS0gWCAtLS0gMyAtLS0gNCAtLS0gTgoJIwoJIyBPIGlzICRvbGRy ZXYgZm9yICRyZWZuYW1lCgkjIE4gaXMgJG5ld3JldiBmb3IgJHJlZm5hbWUK CSMgWCBpcyBhIHJldmlzaW9uIHBvaW50ZWQgdG8gYnkgc29tZSBvdGhlciBy ZWYsIGZvciB3aGljaCB3ZSBtYXkKCSMgICBhc3N1bWUgdGhhdCBhbiBlbWFp bCBoYXMgYWxyZWFkeSBiZWVuIGdlbmVyYXRlZC4KCSMgSW4gdGhpcyBjYXNl IHdlIHdhbnQgdG8gaXNzdWUgYW4gZW1haWwgY29udGFpbmluZyBvbmx5IHJl dmlzaW9ucwoJIyAzLCA0LCBhbmQgTi4gIEdpdmVuIChhbG1vc3QpIGJ5Cgkj CgkjICBnaXQgcmV2LWxpc3QgTiBeTyAtLW5vdCAtLWFsbAoJIwoJIyBUaGUg cmVhc29uIGZvciB0aGUgImFsbW9zdCIsIGlzIHRoYXQgdGhlICItLW5vdCAt LWFsbCIgd2lsbCB0YWtlCgkjIHByZWNlZGVuY2Ugb3ZlciB0aGUgIk4iLCBh bmQgZWZmZWN0aXZlbHkgd2lsbCB0cmFuc2xhdGUgdG8KCSMKCSMgIGdpdCBy ZXYtbGlzdCBOIF5PIF5YIF5OCgkjCgkjIFNvLCB3ZSBuZWVkIHRvIGJ1aWxk IHVwIHRoZSBsaXN0IG1vcmUgY2FyZWZ1bGx5LiAgZ2l0IHJldi1wYXJzZQoJ IyB3aWxsIGdlbmVyYXRlIGEgbGlzdCBvZiByZXZzIHRoYXQgbWF5IGJlIGZl ZCBpbnRvIGdpdCByZXYtbGlzdC4KCSMgV2UgY2FuIGdldCBpdCB0byBtYWtl IHRoZSAiLS1ub3QgLS1hbGwiIHBhcnQgYW5kIHRoZW4gZmlsdGVyIG91dAoJ IyB0aGUgIl5OIiB3aXRoOgoJIwoJIyAgZ2l0IHJldi1wYXJzZSAtLW5vdCAt LWFsbCB8IGdyZXAgLXYgTgoJIwoJIyBUaGVuLCB1c2luZyB0aGUgLS1zdGRp biBzd2l0Y2ggdG8gZ2l0IHJldi1saXN0IHdlIGhhdmUgZWZmZWN0aXZlbHkK CSMgbWFudWZhY3R1cmVkCgkjCgkjICBnaXQgcmV2LWxpc3QgTiBeTyBeWAoJ IwoJIyBUaGlzIGxlYXZlcyBhIHByb2JsZW0gd2hlbiBzb21lb25lIGVsc2Ug dXBkYXRlcyB0aGUgcmVwb3NpdG9yeQoJIyB3aGlsZSB0aGlzIHNjcmlwdCBp cyBydW5uaW5nLiAgVGhlaXIgbmV3IHZhbHVlIG9mIHRoZSByZWYgd2UncmUK CSMgd29ya2luZyBvbiB3b3VsZCBiZSBpbmNsdWRlZCBpbiB0aGUgIi0tbm90 IC0tYWxsIiBvdXRwdXQ7IGFuZCBhcwoJIyBvdXIgJG5ld3JldiB3b3VsZCBi ZSBhbiBhbmNlc3RvciBvZiB0aGF0IGNvbW1pdCwgaXQgd291bGQgZXhjbHVk ZQoJIyBhbGwgb2Ygb3VyIGNvbW1pdHMuICBXaGF0IHdlIHJlYWxseSB3YW50 IGlzIHRvIGV4Y2x1ZGUgdGhlIGN1cnJlbnQKCSMgdmFsdWUgb2YgJHJlZm5h bWUgZnJvbSB0aGUgLS1ub3QgbGlzdCwgcmF0aGVyIHRoYW4gTiBpdHNlbGYu ICBTbzoKCSMKCSMgIGdpdCByZXYtcGFyc2UgLS1ub3QgLS1hbGwgfCBncmVw IC12ICQoZ2l0IHJldi1wYXJzZSAkcmVmbmFtZSkKCSMKCSMgR2V0J3MgdXMg dG8gc29tZXRoaW5nIHByZXR0eSBzYWZlIChhcGFydCBmcm9tIHRoZSBzbWFs bCB0aW1lCgkjIGJldHdlZW4gcmVmbmFtZSBiZWluZyByZWFkLCBhbmQgZ2l0 IHJldi1wYXJzZSBydW5uaW5nIC0gZm9yIHRoYXQsCgkjIEkgZ2l2ZSB1cCkK CSMKCSMKCSMgTmV4dCBwcm9ibGVtLCBjb25zaWRlciB0aGlzOgoJIyAgICog LS0tIEIgLS0tICogLS0tIE8gKCRvbGRyZXYpCgkjICAgICAgICAgIFwKCSMg ICAgICAgICAgICogLS0tIFggLS0tICogLS0tIE4gKCRuZXdyZXYpCgkjCgkj IFRoYXQgaXMgdG8gc2F5LCB0aGVyZSBpcyBubyBndWFyYW50ZWUgdGhhdCBv bGRyZXYgaXMgYSBzdHJpY3QKCSMgc3Vic2V0IG9mIG5ld3JldiAoaXQgd291 bGQgaGF2ZSByZXF1aXJlZCBhIC0tZm9yY2UsIGJ1dCB0aGF0J3MKCSMgYWxs b3dlZCkuICBTbywgd2UgY2FuJ3Qgc2ltcGx5IHNheSByZXYtbGlzdCAkb2xk cmV2Li4kbmV3cmV2LgoJIyBJbnN0ZWFkIHdlIGZpbmQgdGhlIGNvbW1vbiBi YXNlIG9mIHRoZSB0d28gcmV2cyBhbmQgbGlzdCBmcm9tCgkjIHRoZXJlLgoJ IwoJIyBBcyBhYm92ZSwgd2UgbmVlZCB0byB0YWtlIGludG8gYWNjb3VudCB0 aGUgcHJlc2VuY2Ugb2YgWDsgaWYKCSMgYW5vdGhlciBicmFuY2ggaXMgYWxy ZWFkeSBpbiB0aGUgcmVwb3NpdG9yeSBhbmQgcG9pbnRzIGF0IHNvbWUgb2YK CSMgdGhlIHJldmlzaW9ucyB0aGF0IHdlIGFyZSBhYm91dCB0byBvdXRwdXQg LSB3ZSBkb24ndCB3YW50IHRoZW0uCgkjIFRoZSBzb2x1dGlvbiBpcyBhcyBi ZWZvcmU6IGdpdCByZXYtcGFyc2Ugb3V0cHV0IGZpbHRlcmVkLgoJIwoJIyBG aW5hbGx5LCB0YWdzOiAxIC0tLSAyIC0tLSBPIC0tLSBUIC0tLSAzIC0tLSA0 IC0tLSBOCgkjCgkjIFRhZ3MgcHVzaGVkIGludG8gdGhlIHJlcG9zaXRvcnkg Z2VuZXJhdGUgbmljZSBzaG9ydGxvZyBlbWFpbHMgdGhhdAoJIyBzdW1tYXJp c2UgdGhlIGNvbW1pdHMgYmV0d2VlbiB0aGVtIGFuZCB0aGUgcHJldmlvdXMg dGFnLiAgSG93ZXZlciwKCSMgdGhvc2UgZW1haWxzIGRvbid0IGluY2x1ZGUg dGhlIGZ1bGwgY29tbWl0IG1lc3NhZ2VzIHRoYXQgd2Ugb3V0cHV0CgkjIGZv ciBhIGJyYW5jaCB1cGRhdGUuICBUaGVyZWZvcmUgd2Ugc3RpbGwgd2FudCB0 byBvdXRwdXQgcmV2aXNpb25zCgkjIHRoYXQgaGF2ZSBiZWVuIG91dHB1dCBv biBhIHRhZyBlbWFpbC4KCSMKCSMgTHVja2lseSwgZ2l0IHJldi1wYXJzZSBp bmNsdWRlcyBqdXN0IHRoZSB0b29sLiAgSW5zdGVhZCBvZiB1c2luZwoJIyAi LS1hbGwiIHdlIHVzZSAiLS1icmFuY2hlcyI7IHRoaXMgaGFzIHRoZSBhZGRl ZCBiZW5lZml0IHRoYXQKCSMgInJlbW90ZXMvIiB3aWxsIGJlIGlnbm9yZWQg YXMgd2VsbC4KCgkjIExpc3QgYWxsIG9mIHRoZSByZXZpc2lvbnMgdGhhdCB3 ZXJlIHJlbW92ZWQgYnkgdGhpcyB1cGRhdGUsIGluIGEKCSMgZmFzdC1mb3J3 YXJkIHVwZGF0ZSwgdGhpcyBsaXN0IHdpbGwgYmUgZW1wdHksIGJlY2F1c2Ug cmV2LWxpc3QgTwoJIyBeTiBpcyBlbXB0eS4gIEZvciBhIG5vbi1mYXN0LWZv cndhcmQsIE8gXk4gaXMgdGhlIGxpc3Qgb2YgcmVtb3ZlZAoJIyByZXZpc2lv bnMKCWZhc3RfZm9yd2FyZD0iIgoJcmV2PSIiCglmb3IgcmV2IGluICQoZ2l0 IHJldi1saXN0ICRuZXdyZXYuLiRvbGRyZXYpCglkbwoJCXJldnR5cGU9JChn aXQgY2F0LWZpbGUgLXQgIiRyZXYiKQoJCWVjaG8gIiAgZGlzY2FyZHMgICRy ZXYgKCRyZXZ0eXBlKSIKCWRvbmUKCWlmIFsgLXogIiRyZXYiIF07IHRoZW4K CQlmYXN0X2ZvcndhcmQ9MQoJZmkKCgkjIExpc3QgYWxsIHRoZSByZXZpc2lv bnMgZnJvbSBiYXNlcmV2IHRvIG5ld3JldiBpbiBhIGtpbmQgb2YKCSMgInRh YmxlLW9mLWNvbnRlbnRzIjsgbm90ZSB0aGlzIGxpc3QgY2FuIGluY2x1ZGUg cmV2aXNpb25zIHRoYXQKCSMgaGF2ZSBhbHJlYWR5IGhhZCBub3RpZmljYXRp b24gZW1haWxzIGFuZCBpcyBwcmVzZW50IHRvIHNob3cgdGhlCgkjIGZ1bGwg ZGV0YWlsIG9mIHRoZSBjaGFuZ2UgZnJvbSByb2xsaW5nIGJhY2sgdGhlIG9s ZCByZXZpc2lvbiB0bwoJIyB0aGUgYmFzZSByZXZpc2lvbiBhbmQgdGhlbiBm b3J3YXJkIHRvIHRoZSBuZXcgcmV2aXNpb24KCWZvciByZXYgaW4gJChnaXQg cmV2LWxpc3QgJG9sZHJldi4uJG5ld3JldikKCWRvCgkJcmV2dHlwZT0kKGdp dCBjYXQtZmlsZSAtdCAiJHJldiIpCgkJZWNobyAiICAgICAgIHZpYSAgJHJl diAoJHJldnR5cGUpIgoJZG9uZQoKCWlmIFsgIiRmYXN0X2ZvcndhcmQiIF07 IHRoZW4KCQllY2hvICIgICAgICBmcm9tICAkb2xkcmV2ICgkb2xkcmV2X3R5 cGUpIgoJZWxzZQoJCSMgIDEuIEV4aXN0aW5nIHJldmlzaW9ucyB3ZXJlIHJl bW92ZWQuICBJbiB0aGlzIGNhc2UgbmV3cmV2CgkJIyAgICAgaXMgYSBzdWJz ZXQgb2Ygb2xkcmV2IC0gdGhpcyBpcyB0aGUgcmV2ZXJzZSBvZiBhCgkJIyAg ICAgZmFzdC1mb3J3YXJkLCBhIHJld2luZAoJCSMgIDIuIE5ldyByZXZpc2lv bnMgd2VyZSBhZGRlZCBvbiB0b3Agb2YgYW4gb2xkIHJldmlzaW9uLAoJCSMg ICAgIHRoaXMgaXMgYSByZXdpbmQgYW5kIGFkZGl0aW9uLgoKCQkjICgxKSBj ZXJ0YWlubHkgaGFwcGVuZWQsICgyKSBwb3NzaWJseS4gIFdoZW4gKDIpIGhh c24ndAoJCSMgaGFwcGVuZWQsIHdlIHNldCBhIGZsYWcgdG8gaW5kaWNhdGUg dGhhdCBubyBsb2cgcHJpbnRvdXQKCQkjIGlzIHJlcXVpcmVkLgoKCQllY2hv ICIiCgoJCSMgRmluZCB0aGUgY29tbW9uIGFuY2VzdG9yIG9mIHRoZSBvbGQg YW5kIG5ldyByZXZpc2lvbnMgYW5kCgkJIyBjb21wYXJlIGl0IHdpdGggbmV3 cmV2CgkJYmFzZXJldj0kKGdpdCBtZXJnZS1iYXNlICRvbGRyZXYgJG5ld3Jl dikKCQlyZXdpbmRfb25seT0iIgoJCWlmIFsgIiRiYXNlcmV2IiA9ICIkbmV3 cmV2IiBdOyB0aGVuCgkJCWVjaG8gIlRoaXMgdXBkYXRlIGRpc2NhcmRlZCBl eGlzdGluZyByZXZpc2lvbnMgYW5kIGxlZnQgdGhlIGJyYW5jaCBwb2ludGlu ZyBhdCIKCQkJZWNobyAiYSBwcmV2aW91cyBwb2ludCBpbiB0aGUgcmVwb3Np dG9yeSBoaXN0b3J5LiIKCQkJZWNobyAiIgoJCQllY2hvICIgKiAtLSAqIC0t IE4gKCRuZXdyZXYpIgoJCQllY2hvICIgICAgICAgICAgICBcXCIKCQkJZWNo byAiICAgICAgICAgICAgIE8gLS0gTyAtLSBPICgkb2xkcmV2KSIKCQkJZWNo byAiIgoJCQllY2hvICJUaGUgcmVtb3ZlZCByZXZpc2lvbnMgYXJlIG5vdCBu ZWNlc3NhcmlseSBnb25lIC0gaWYgYW5vdGhlciByZWZlcmVuY2UiCgkJCWVj aG8gInN0aWxsIHJlZmVycyB0byB0aGVtIHRoZXkgd2lsbCBzdGF5IGluIHRo ZSByZXBvc2l0b3J5LiIKCQkJcmV3aW5kX29ubHk9MQoJCWVsc2UKCQkJZWNo byAiVGhpcyB1cGRhdGUgYWRkZWQgbmV3IHJldmlzaW9ucyBhZnRlciB1bmRv aW5nIGV4aXN0aW5nIHJldmlzaW9ucy4gIFRoYXQgaXMiCgkJCWVjaG8gInRv IHNheSwgdGhlIG9sZCByZXZpc2lvbiBpcyBub3QgYSBzdHJpY3Qgc3Vic2V0 IG9mIHRoZSBuZXcgcmV2aXNpb24uICBUaGlzIgoJCQllY2hvICJzaXR1YXRp b24gb2NjdXJzIHdoZW4geW91IC0tZm9yY2UgcHVzaCBhIGNoYW5nZSBhbmQg Z2VuZXJhdGUgYSByZXBvc2l0b3J5IgoJCQllY2hvICJjb250YWluaW5nIHNv bWV0aGluZyBsaWtlIHRoaXM6IgoJCQllY2hvICIiCgkJCWVjaG8gIiAqIC0t ICogLS0gQiAtLSBPIC0tIE8gLS0gTyAoJG9sZHJldikiCgkJCWVjaG8gIiAg ICAgICAgICAgIFxcIgoJCQllY2hvICIgICAgICAgICAgICAgTiAtLSBOIC0t IE4gKCRuZXdyZXYpIgoJCQllY2hvICIiCgkJCWVjaG8gIldoZW4gdGhpcyBo YXBwZW5zIHdlIGFzc3VtZSB0aGF0IHlvdSd2ZSBhbHJlYWR5IGhhZCBhbGVy dCBlbWFpbHMgZm9yIGFsbCIKCQkJZWNobyAib2YgdGhlIE8gcmV2aXNpb25z LCBhbmQgc28gd2UgaGVyZSByZXBvcnQgb25seSB0aGUgcmV2aXNpb25zIGlu IHRoZSBOIgoJCQllY2hvICJicmFuY2ggZnJvbSB0aGUgY29tbW9uIGJhc2Us IEIuIgoJCWZpCglmaQoKCWVjaG8gIiIKCWlmIFsgLXogIiRyZXdpbmRfb25s eSIgXTsgdGhlbgoJCWVjaG8gIlRob3NlIHJldmlzaW9ucyBsaXN0ZWQgYWJv dmUgdGhhdCBhcmUgbmV3IHRvIHRoaXMgcmVwb3NpdG9yeSBoYXZlIgoJCWVj aG8gIm5vdCBhcHBlYXJlZCBvbiBhbnkgb3RoZXIgbm90aWZpY2F0aW9uIGVt YWlsOyBzbyB3ZSBsaXN0IHRob3NlIgoJCWVjaG8gInJldmlzaW9ucyBpbiBm dWxsLCBiZWxvdy4iCgoJCWVjaG8gIiIKCQllY2hvICRMT0dCRUdJTgoJCXNo b3dfbmV3X3JldmlzaW9ucwoKCQkjIFhYWDogTmVlZCBhIHdheSBvZiBkZXRl Y3Rpbmcgd2hldGhlciBnaXQgcmV2LWxpc3QgYWN0dWFsbHkKCQkjIG91dHB1 dHRlZCBhbnl0aGluZywgc28gdGhhdCB3ZSBjYW4gaXNzdWUgYSAibm8gbmV3 CgkJIyByZXZpc2lvbnMgYWRkZWQgYnkgdGhpcyB1cGRhdGUiIG1lc3NhZ2UK CgkJZWNobyAkTE9HRU5ECgllbHNlCgkJZWNobyAiTm8gbmV3IHJldmlzaW9u cyB3ZXJlIGFkZGVkIGJ5IHRoaXMgdXBkYXRlLiIKCWZpCgoJIyBUaGUgZGlm ZnN0YXQgaXMgc2hvd24gZnJvbSB0aGUgb2xkIHJldmlzaW9uIHRvIHRoZSBu ZXcgcmV2aXNpb24uCgkjIFRoaXMgaXMgdG8gc2hvdyB0aGUgdHJ1dGggb2Yg d2hhdCBoYXBwZW5lZCBpbiB0aGlzIGNoYW5nZS4KCSMgVGhlcmUncyBubyBw b2ludCBzaG93aW5nIHRoZSBzdGF0IGZyb20gdGhlIGJhc2UgdG8gdGhlIG5l dwoJIyByZXZpc2lvbiBiZWNhdXNlIHRoZSBiYXNlIGlzIGVmZmVjdGl2ZWx5 IGEgcmFuZG9tIHJldmlzaW9uIGF0IHRoaXMKCSMgcG9pbnQgLSB0aGUgdXNl ciB3aWxsIGJlIGludGVyZXN0ZWQgaW4gd2hhdCB0aGlzIHJldmlzaW9uIGNo YW5nZWQKCSMgLSBpbmNsdWRpbmcgdGhlIHVuZG9pbmcgb2YgcHJldmlvdXMg cmV2aXNpb25zIGluIHRoZSBjYXNlIG9mCgkjIG5vbi1mYXN0LWZvcndhcmQg dXBkYXRlcy4KCWVjaG8gIiIKCWVjaG8gIlN1bW1hcnkgb2YgY2hhbmdlczoi CglnaXQgZGlmZi10cmVlICRkaWZmb3B0cyAkb2xkcmV2Li4kbmV3cmV2Cn0K CiMKIyBDYWxsZWQgZm9yIHRoZSBkZWxldGlvbiBvZiBhIGJyYW5jaAojCmdl bmVyYXRlX2RlbGV0ZV9icmFuY2hfZW1haWwoKQp7CgllY2hvICIgICAgICAg d2FzICAkb2xkcmV2IgoJZWNobyAiIgoJZWNobyAkTE9HQkVHSU4KCWdpdCBz aG93IC1zIC0tcHJldHR5PW9uZWxpbmUgJG9sZHJldgoJZWNobyAkTE9HRU5E Cn0KCiMgLS0tLS0tLS0tLS0tLS0tIEFubm90YXRlZCB0YWdzCgojCiMgQ2Fs bGVkIGZvciB0aGUgY3JlYXRpb24gb2YgYW4gYW5ub3RhdGVkIHRhZwojCmdl bmVyYXRlX2NyZWF0ZV9hdGFnX2VtYWlsKCkKewoJZWNobyAiICAgICAgICBh dCAgJG5ld3JldiAoJG5ld3Jldl90eXBlKSIKCglnZW5lcmF0ZV9hdGFnX2Vt YWlsCn0KCiMKIyBDYWxsZWQgZm9yIHRoZSB1cGRhdGUgb2YgYW4gYW5ub3Rh dGVkIHRhZyAodGhpcyBpcyBwcm9iYWJseSBhIHJhcmUgZXZlbnQKIyBhbmQg bWF5IG5vdCBldmVuIGJlIGFsbG93ZWQpCiMKZ2VuZXJhdGVfdXBkYXRlX2F0 YWdfZW1haWwoKQp7CgllY2hvICIgICAgICAgIHRvICAkbmV3cmV2ICgkbmV3 cmV2X3R5cGUpIgoJZWNobyAiICAgICAgZnJvbSAgJG9sZHJldiAod2hpY2gg aXMgbm93IG9ic29sZXRlKSIKCglnZW5lcmF0ZV9hdGFnX2VtYWlsCn0KCiMK IyBDYWxsZWQgd2hlbiBhbiBhbm5vdGF0ZWQgdGFnIGlzIGNyZWF0ZWQgb3Ig Y2hhbmdlZAojCmdlbmVyYXRlX2F0YWdfZW1haWwoKQp7CgkjIFVzZSBnaXQg Zm9yLWVhY2gtcmVmIHRvIHB1bGwgb3V0IHRoZSBpbmRpdmlkdWFsIGZpZWxk cyBmcm9tIHRoZQoJIyB0YWcKCWV2YWwgJChnaXQgZm9yLWVhY2gtcmVmIC0t c2hlbGwgLS1mb3JtYXQ9JwoJdGFnb2JqZWN0PSUoKm9iamVjdG5hbWUpCgl0 YWd0eXBlPSUoKm9iamVjdHR5cGUpCgl0YWdnZXI9JSh0YWdnZXJuYW1lKQoJ dGFnZ2VkPSUodGFnZ2VyZGF0ZSknICRyZWZuYW1lCgkpCgoJZWNobyAiICAg dGFnZ2luZyAgJHRhZ29iamVjdCAoJHRhZ3R5cGUpIgoJY2FzZSAiJHRhZ3R5 cGUiIGluCgljb21taXQpCgoJCSMgSWYgdGhlIHRhZ2dlZCBvYmplY3QgaXMg YSBjb21taXQsIHRoZW4gd2UgYXNzdW1lIHRoaXMgaXMgYQoJCSMgcmVsZWFz ZSwgYW5kIHNvIHdlIGNhbGN1bGF0ZSB3aGljaCB0YWcgdGhpcyB0YWcgaXMK CQkjIHJlcGxhY2luZwoJCXByZXZ0YWc9JChnaXQgZGVzY3JpYmUgLS1hYmJy ZXY9MCAkbmV3cmV2XiAyPi9kZXYvbnVsbCkKCgkJaWYgWyAtbiAiJHByZXZ0 YWciIF07IHRoZW4KCQkJZWNobyAiICByZXBsYWNlcyAgJHByZXZ0YWciCgkJ ZmkKCQk7OwoJKikKCQllY2hvICIgICAgbGVuZ3RoICAkKGdpdCBjYXQtZmls ZSAtcyAkdGFnb2JqZWN0KSBieXRlcyIKCQk7OwoJZXNhYwoJZWNobyAiIHRh Z2dlZCBieSAgJHRhZ2dlciIKCWVjaG8gIiAgICAgICAgb24gICR0YWdnZWQi CgoJZWNobyAiIgoJZWNobyAkTE9HQkVHSU4KCgkjIFNob3cgdGhlIGNvbnRl bnQgb2YgdGhlIHRhZyBtZXNzYWdlOyB0aGlzIG1pZ2h0IGNvbnRhaW4gYSBj aGFuZ2UKCSMgbG9nIG9yIHJlbGVhc2Ugbm90ZXMgc28gaXMgd29ydGggZGlz cGxheWluZy4KCWdpdCBjYXQtZmlsZSB0YWcgJG5ld3JldiB8IHNlZCAtZSAn MSwvXiQvZCcKCgllY2hvICIiCgljYXNlICIkdGFndHlwZSIgaW4KCWNvbW1p dCkKCQkjIE9ubHkgY29tbWl0IHRhZ3MgbWFrZSBzZW5zZSB0byBoYXZlIHJl di1saXN0IG9wZXJhdGlvbnMKCQkjIHBlcmZvcm1lZCBvbiB0aGVtCgkJaWYg WyAtbiAiJHByZXZ0YWciIF07IHRoZW4KCQkJIyBTaG93IGNoYW5nZXMgc2lu Y2UgdGhlIHByZXZpb3VzIHJlbGVhc2UKCQkJZ2l0IHJldi1saXN0IC0tcHJl dHR5PXNob3J0ICIkcHJldnRhZy4uJG5ld3JldiIgfCBnaXQgc2hvcnRsb2cK CQllbHNlCgkJCSMgTm8gcHJldmlvdXMgdGFnLCBzaG93IGFsbCB0aGUgY2hh bmdlcyBzaW5jZSB0aW1lCgkJCSMgYmVnYW4KCQkJZ2l0IHJldi1saXN0IC0t cHJldHR5PXNob3J0ICRuZXdyZXYgfCBnaXQgc2hvcnRsb2cKCQlmaQoJCTs7 CgkqKQoJCSMgWFhYOiBJcyB0aGVyZSBhbnl0aGluZyB1c2VmdWwgd2UgY2Fu IGRvIGZvciBub24tY29tbWl0CgkJIyBvYmplY3RzPwoJCTs7Cgllc2FjCgoJ ZWNobyAkTE9HRU5ECn0KCiMKIyBDYWxsZWQgZm9yIHRoZSBkZWxldGlvbiBv ZiBhbiBhbm5vdGF0ZWQgdGFnCiMKZ2VuZXJhdGVfZGVsZXRlX2F0YWdfZW1h aWwoKQp7CgllY2hvICIgICAgICAgd2FzICAkb2xkcmV2IgoJZWNobyAiIgoJ ZWNobyAkTE9HQkVHSU4KCWdpdCBzaG93IC1zIC0tcHJldHR5PW9uZWxpbmUg JG9sZHJldgoJZWNobyAkTE9HRU5ECn0KCiMgLS0tLS0tLS0tLS0tLS0tIEdl bmVyYWwgcmVmZXJlbmNlcwoKIwojIENhbGxlZCB3aGVuIGFueSBvdGhlciB0 eXBlIG9mIHJlZmVyZW5jZSBpcyBjcmVhdGVkIChtb3N0IGxpa2VseSBhCiMg bm9uLWFubm90YXRlZCB0YWcpCiMKZ2VuZXJhdGVfY3JlYXRlX2dlbmVyYWxf ZW1haWwoKQp7CgllY2hvICIgICAgICAgIGF0ICAkbmV3cmV2ICgkbmV3cmV2 X3R5cGUpIgoKCWdlbmVyYXRlX2dlbmVyYWxfZW1haWwKfQoKIwojIENhbGxl ZCB3aGVuIGFueSBvdGhlciB0eXBlIG9mIHJlZmVyZW5jZSBpcyB1cGRhdGVk IChtb3N0IGxpa2VseSBhCiMgbm9uLWFubm90YXRlZCB0YWcpCiMKZ2VuZXJh dGVfdXBkYXRlX2dlbmVyYWxfZW1haWwoKQp7CgllY2hvICIgICAgICAgIHRv ICAkbmV3cmV2ICgkbmV3cmV2X3R5cGUpIgoJZWNobyAiICAgICAgZnJvbSAg JG9sZHJldiIKCglnZW5lcmF0ZV9nZW5lcmFsX2VtYWlsCn0KCiMKIyBDYWxs ZWQgZm9yIGNyZWF0aW9uIG9yIHVwZGF0ZSBvZiBhbnkgb3RoZXIgdHlwZSBv ZiByZWZlcmVuY2UKIwpnZW5lcmF0ZV9nZW5lcmFsX2VtYWlsKCkKewoJIyBV bmFubm90YXRlZCB0YWdzIGFyZSBtb3JlIGFib3V0IG1hcmtpbmcgYSBwb2lu dCB0aGFuIHJlbGVhc2luZyBhCgkjIHZlcnNpb247IHRoZXJlZm9yZSB3ZSBk b24ndCBkbyB0aGUgc2hvcnRsb2cgc3VtbWFyeSB0aGF0IHdlIGRvIGZvcgoJ IyBhbm5vdGF0ZWQgdGFncyBhYm92ZSAtIHdlIHNpbXBseSBzaG93IHRoYXQg dGhlIHBvaW50IGhhcyBiZWVuCgkjIG1hcmtlZCwgYW5kIHByaW50IHRoZSBs b2cgbWVzc2FnZSBmb3IgdGhlIG1hcmtlZCBwb2ludCBmb3IKCSMgcmVmZXJl bmNlIHB1cnBvc2VzCgkjCgkjIE5vdGUgdGhpcyBzZWN0aW9uIGFsc28gY2F0 Y2hlcyBhbnkgb3RoZXIgcmVmZXJlbmNlIHR5cGUgKGFsdGhvdWdoCgkjIHRo ZXJlIGFyZW4ndCBhbnkpIGFuZCBkZWFscyB3aXRoIHRoZW0gaW4gdGhlIHNh bWUgd2F5LgoKCWVjaG8gIiIKCWlmIFsgIiRuZXdyZXZfdHlwZSIgPSAiY29t bWl0IiBdOyB0aGVuCgkJZWNobyAkTE9HQkVHSU4KCQlnaXQgc2hvdyAtLW5v LWNvbG9yIC0tcm9vdCAtcyAtLXByZXR0eT1tZWRpdW0gJG5ld3JldgoJCWVj aG8gJExPR0VORAoJZWxzZQoJCSMgV2hhdCBjYW4gd2UgZG8gaGVyZT8gIFRo ZSB0YWcgbWFya3MgYW4gb2JqZWN0IHRoYXQgaXMgbm90CgkJIyBhIGNvbW1p dCwgc28gdGhlcmUgaXMgbm8gbG9nIGZvciB1cyB0byBkaXNwbGF5LiAgSXQn cwoJCSMgcHJvYmFibHkgbm90IHdpc2UgdG8gb3V0cHV0IGdpdCBjYXQtZmls ZSBhcyBpdCBjb3VsZCBiZSBhCgkJIyBiaW5hcnkgYmxvYi4gIFdlJ2xsIGp1 c3Qgc2F5IGhvdyBiaWcgaXQgaXMKCQllY2hvICIkbmV3cmV2IGlzIGEgJG5l d3Jldl90eXBlLCBhbmQgaXMgJChnaXQgY2F0LWZpbGUgLXMgJG5ld3Jldikg Ynl0ZXMgbG9uZy4iCglmaQp9CgojCiMgQ2FsbGVkIGZvciB0aGUgZGVsZXRp b24gb2YgYW55IG90aGVyIHR5cGUgb2YgcmVmZXJlbmNlCiMKZ2VuZXJhdGVf ZGVsZXRlX2dlbmVyYWxfZW1haWwoKQp7CgllY2hvICIgICAgICAgd2FzICAk b2xkcmV2IgoJZWNobyAiIgoJZWNobyAkTE9HQkVHSU4KCWdpdCBzaG93IC1z IC0tcHJldHR5PW9uZWxpbmUgJG9sZHJldgoJZWNobyAkTE9HRU5ECn0KCgoj IC0tLS0tLS0tLS0tLS0tLSBNaXNjZWxsYW5lb3VzIHV0aWxpdGllcwoKIwoj IFNob3cgbmV3IHJldmlzaW9ucyBhcyB0aGUgdXNlciB3b3VsZCBsaWtlIHRv IHNlZSB0aGVtIGluIHRoZSBlbWFpbC4KIwpzaG93X25ld19yZXZpc2lvbnMo KQp7CgkjIFRoaXMgc2hvd3MgYWxsIGxvZyBlbnRyaWVzIHRoYXQgYXJlIG5v dCBhbHJlYWR5IGNvdmVyZWQgYnkKCSMgYW5vdGhlciByZWYgLSBpLmUuIGNv bW1pdHMgdGhhdCBhcmUgbm93IGFjY2Vzc2libGUgZnJvbSB0aGlzCgkjIHJl ZiB0aGF0IHdlcmUgcHJldmlvdXNseSBub3QgYWNjZXNzaWJsZQoJIyAoc2Vl IGdlbmVyYXRlX3VwZGF0ZV9icmFuY2hfZW1haWwgZm9yIHRoZSBleHBsYW5h dGlvbiBvZiB0aGlzCgkjIGNvbW1hbmQpCgoJIyBSZXZpc2lvbiByYW5nZSBw YXNzZWQgdG8gcmV2LWxpc3QgZGlmZmVycyBmb3IgbmV3IHZzLiB1cGRhdGVk CgkjIGJyYW5jaGVzLgoJaWYgWyAiJGNoYW5nZV90eXBlIiA9IGNyZWF0ZSBd Cgl0aGVuCgkJIyBTaG93IGFsbCByZXZpc2lvbnMgZXhjbHVzaXZlIHRvIHRo aXMgKG5ldykgYnJhbmNoLgoJCXJldnNwZWM9JG5ld3JldgoJZWxzZQoJCSMg QnJhbmNoIHVwZGF0ZTsgc2hvdyByZXZpc2lvbnMgbm90IHBhcnQgb2YgJG9s ZHJldi4KCQlyZXZzcGVjPSRvbGRyZXYuLiRuZXdyZXYKCWZpCgoJb3RoZXJf YnJhbmNoZXM9JChnaXQgZm9yLWVhY2gtcmVmIC0tZm9ybWF0PSclKHJlZm5h bWUpJyByZWZzL2hlYWRzLyB8CgkgICAgZ3JlcCAtRiAtdiAkcmVmbmFtZSkK CWdpdCByZXYtcGFyc2UgLS1ub3QgJG90aGVyX2JyYW5jaGVzIHwKCWlmIFsg LXogIiRjdXN0b21fc2hvd3JldiIgXQoJdGhlbgoJCWdpdCByZXYtbGlzdCAt LXByZXR0eSAtLXN0ZGluICRyZXZzcGVjCgllbHNlCgkJZ2l0IHJldi1saXN0 IC0tc3RkaW4gJHJldnNwZWMgfAoJCXdoaWxlIHJlYWQgb25lcmV2CgkJZG8K CQkJZXZhbCAkKHByaW50ZiAiJGN1c3RvbV9zaG93cmV2IiAkb25lcmV2KQoJ CWRvbmUKCWZpCn0KCgpsaW1pdF9saW5lcygpCnsKCWxpbmVzPTAKCXNraXBw ZWQ9MAoJd2hpbGUgSUZTPSIiIHJlYWQgLXIgbGluZTsgZG8KCQlsaW5lcz0k KChsaW5lcyArIDEpKQoJCWlmIFsgJGxpbmVzIC1ndCAkMSBdOyB0aGVuCgkJ CXNraXBwZWQ9JCgoc2tpcHBlZCArIDEpKQoJCWVsc2UKCQkJcHJpbnRmICIl c1xuIiAiJGxpbmUiCgkJZmkKCWRvbmUKCWlmIFsgJHNraXBwZWQgLW5lIDAg XTsgdGhlbgoJCWVjaG8gIi4uLiAkc2tpcHBlZCBsaW5lcyBzdXBwcmVzc2Vk IC4uLiIKCWZpCn0KCgpzZW5kX21haWwoKQp7CglpZiBbIC1uICIkZW52ZWxv cGVzZW5kZXIiIF07IHRoZW4KCQkvdXNyL3NiaW4vc2VuZG1haWwgLXQgLWYg IiRlbnZlbG9wZXNlbmRlciIKCWVsc2UKCQkvdXNyL3NiaW4vc2VuZG1haWwg LXQKCWZpCn0KCiMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSBtYWlu KCkKCiMgLS0tIENvbnN0YW50cwpMT0dCRUdJTj0iLSBMb2cgLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0iCkxPR0VORD0iLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0iCgojIC0tLSBDb25maWcKIyBTZXQgR0lUX0RJUiBlaXRoZXIgZnJvbSB0 aGUgd29ya2luZyBkaXJlY3RvcnksIG9yIGZyb20gdGhlIGVudmlyb25tZW50 CiMgdmFyaWFibGUuCkdJVF9ESVI9JChnaXQgcmV2LXBhcnNlIC0tZ2l0LWRp ciAyPi9kZXYvbnVsbCkKaWYgWyAteiAiJEdJVF9ESVIiIF07IHRoZW4KCWVj aG8gPiYyICJmYXRhbDogcG9zdC1yZWNlaXZlOiBHSVRfRElSIG5vdCBzZXQi CglleGl0IDEKZmkKCnByb2plY3RkZXNjPSQoc2VkIC1uZSAnMXAnICIkR0lU X0RJUi9kZXNjcmlwdGlvbiIgMj4vZGV2L251bGwpCiMgQ2hlY2sgaWYgdGhl IGRlc2NyaXB0aW9uIGlzIHVuY2hhbmdlZCBmcm9tIGl0J3MgZGVmYXVsdCwg YW5kIHNob3J0ZW4gaXQgdG8KIyBhIG1vcmUgbWFuYWdlYWJsZSBsZW5ndGgg aWYgaXQgaXMKaWYgZXhwciAiJHByb2plY3RkZXNjIiA6ICJVbm5hbWVkIHJl cG9zaXRvcnkuKiQiID4vZGV2L251bGwKdGhlbgoJcHJvamVjdGRlc2M9IlVO TkFNRUQgUFJPSkVDVCIKZmkKCm9yaWdfcmVjaXBpZW50cz0kKGdpdCBjb25m aWcgaG9va3MubWFpbGluZ2xpc3QpCmFubm91bmNlcmVjaXBpZW50cz0kKGdp dCBjb25maWcgaG9va3MuYW5ub3VuY2VsaXN0KQpyZWNpcGllbnRmaWxlPSQo Z2l0IGNvbmZpZyBob29rcy5yZWNpcGllbnRmaWxlKQppZiB0ZXN0IC1uICIk cmVjaXBpZW50ZmlsZSI7IHRoZW4KICAgIGFubm91bmNlcmVjaXBpZW50cz0K ZmkKZW52ZWxvcGVzZW5kZXI9JChnaXQgY29uZmlnIGhvb2tzLmVudmVsb3Bl c2VuZGVyKQplbWFpbHByZWZpeD0kKGdpdCBjb25maWcgaG9va3MuZW1haWxw cmVmaXggfHwgZWNobyAnW1NDTV0gJykKb3JpZ19jdXN0b21fc2hvd3Jldj0k KGdpdCBjb25maWcgaG9va3Muc2hvd3JldikKbWF4bGluZXM9JChnaXQgY29u ZmlnIGhvb2tzLmVtYWlsbWF4bGluZXMpCmRpZmZvcHRzPSQoZ2l0IGNvbmZp ZyBob29rcy5kaWZmb3B0cykKOiAke2RpZmZvcHRzOj0iLS1zdGF0IC0tc3Vt bWFyeSAtLWZpbmQtY29waWVzLWhhcmRlciJ9CgpienByb2R1Y3Q9JChnaXQg Y29uZmlnIGhvb2tzLmJ1Z3ppbGxhcHJvZHVjdCkKYnpzaG93cmV2PSQoZ2l0 IGNvbmZpZyBob29rcy5idWd6aWxsYXNob3dyZXYpCjogJHtienNob3dyZXY6 PSIkb3JpZ19jdXN0b21fc2hvd3JldiJ9CgojIC0tLSBNYWluIGxvb3AKIyBB bGxvdyBkdWFsIG1vZGU6IHJ1biBmcm9tIHRoZSBjb21tYW5kIGxpbmUganVz dCBsaWtlIHRoZSB1cGRhdGUgaG9vaywgb3IKIyBpZiBubyBhcmd1bWVudHMg YXJlIGdpdmVuIHRoZW4gcnVuIGFzIGEgaG9vayBzY3JpcHQKaWYgWyAtbiAi JDEiIC1hIC1uICIkMiIgLWEgLW4gIiQzIiBdOyB0aGVuCgkjIE91dHB1dCB0 byB0aGUgdGVybWluYWwgaW4gY29tbWFuZCBsaW5lIG1vZGUgLSBpZiBzb21l b25lIHdhbnRlZCB0bwoJIyByZXNlbmQgYW4gZW1haWw7IHRoZXkgY291bGQg cmVkaXJlY3QgdGhlIG91dHB1dCB0byBzZW5kbWFpbAoJIyB0aGVtc2VsdmVz CglwcmVwX2Zvcl9lbWFpbCAkMiAkMyAkMSAmJiBQQUdFUj0gZ2VuZXJhdGVf ZW1haWwKZWxzZQoJd2hpbGUgcmVhZCBvbGRyZXYgbmV3cmV2IHJlZm5hbWUK CWRvCgkJcHJlcF9mb3JfZW1haWwgJG9sZHJldiAkbmV3cmV2ICRyZWZuYW1l IHx8IGNvbnRpbnVlCgkJY3VzdG9tX3Nob3dyZXY9IiRvcmlnX2N1c3RvbV9z aG93cmV2IgoJCWdlbmVyYXRlX2VtYWlsIHwgc2VuZF9tYWlsCgoJCWlmIHRl c3QgLW4gIiRienByb2R1Y3QiOyB0aGVuCgkJICAgIGN1c3RvbV9zaG93cmV2 PSIkYnpzaG93cmV2IgoJCSAgICBnZW5lcmF0ZV9lbWFpbCAtYnVnemlsbGEg fCBlbWFpbC10by1idWd6aWxsYSAtRyAkYnpwcm9kdWN0CgkJZmkKCWRvbmUK ZmkK --=-=-= Content-Type: application/octet-stream Content-Disposition: attachment; filename=email-to-bugzilla Content-Transfer-Encoding: base64 Content-Description: email-to-bugzilla Content-length: 4718 IyEvdXNyL2Jpbi9wZXJsCiMgLSotUGVybC0qLQojCiMgUGVybCBmaWx0ZXIg dG8gaGFuZGxlIHRoZSBsb2cgbWVzc2FnZXMgZnJvbSB0aGUgY2hlY2tpbiBv ZiBmaWxlcyBpbgojIGEgZGlyZWN0b3J5LiAgVGhpcyBzY3JpcHQgd2lsbCBn cm91cCB0aGUgbGlzdHMgb2YgZmlsZXMgYnkgbG9nCiMgbWVzc2FnZSwgYW5k IG1haWwgYSBzaW5nbGUgY29uc29saWRhdGVkIGxvZyBtZXNzYWdlIGF0IHRo ZSBlbmQgb2YKIyB0aGUgY29tbWl0LgojCiMgVGhpcyBmaWxlIGFzc3VtZXMg YSBwcmUtY29tbWl0IGNoZWNraW5nIHByb2dyYW0gdGhhdCBsZWF2ZXMgdGhl CiMgbmFtZXMgb2YgdGhlIGZpcnN0IGFuZCBsYXN0IGNvbW1pdCBkaXJlY3Rv cmllcyBpbiBhIHRlbXBvcmFyeSBmaWxlLgojCiMgQ29udHJpYnV0ZWQgYnkg RGF2aWQgSGFtcHRvbiA8aGFtcHRvbkBjaXNjby5jb20+CiMKIyBoYWNrZWQg Z3JlYXRseSBieSBHcmVnIEEuIFdvb2RzIDx3b29kc0B3ZWIubmV0PgojCiMg VGhlbiBjaG9wcGVkIGRvd24ganVzdCB0byBzZW5kIGJ1Z3ppbGxhIGVtYWls LCBmb3IgZ2l0LgoKdXNlIFBPU0lYOwp1c2UgREJJOwojCiMJQ29uZmlndXJh YmxlIG9wdGlvbnMKIwoKJFRNUERJUiA9ICIvc291cmNld2FyZS9jdnMtdG1w IjsKCiRCTUFJTEVSICAgICAgID0gIi91c3Ivc2Jpbi9zZW5kbWFpbCI7Cgoj CiMJU3Vicm91dGluZXMKIwpzdWIgc2VlX2lmX2J1Z3ppbGxhX2J1Z19leGlz dHMgeyAgICAKICBsb2NhbCAoJGRiaCwgJHByb2R1Y3QsICRpZCkgPSBAXzsK CiAgIyBTcGxpdCAkUFJPRFVDVCBhbmQgU1FMLWlmeS4KICBteSAkc3FsX3By b2R1Y3QgPSAnJzsKICBmb3JlYWNoICRpIChzcGxpdCAoL1xzKy8sICRwcm9k dWN0KSkgewogICAgICBpZiAoJHNxbF9wcm9kdWN0IG5lICcnKSB7CgkgICRz cWxfcHJvZHVjdCAuPSAnLCAnOwogICAgICB9CiAgICAgICRzcWxfcHJvZHVj dCAuPSAiJyIgLiAkaSAuICInIjsKICB9CgogIG15ICRzdGgyID0gJGRiaC0+ cHJlcGFyZSAoIlNFTEVDVCBDT1VOVCgqKSBmcm9tIGJ1Z3Mgd2hlcmUgYnVn X2lkID0gJGlkIGFuZCBwcm9kdWN0X2lkID0gYW55IChzZWxlY3QgcHJvZHVj dHMuaWQgZnJvbSBwcm9kdWN0cyB3aGVyZSBuYW1lIGluICgkc3FsX3Byb2R1 Y3QpKSIpIG9yIHJldHVybiAwOwogICRzdGgyLT5leGVjdXRlKCkgb3IgcmV0 dXJuIDA7CiAgbXkgJGNvdW50ID0gJHN0aDItPmZldGNocm93X2FycmF5ICgp OwogIHJldHVybiAkY291bnQgPiAwOwp9CgpzdWIgbWFpbF9idWdfbm90aWZp Y2F0aW9uIHsKICAgIGxvY2FsKCRuYW1lLCAkc3ViamVjdCwgQHRleHQpID0g QF87CiAgICBvcGVuKE1BSUwsICJ8ICRCTUFJTEVSIC1mXCJjdnMtY29tbWl0 XEBnY2MuZ251Lm9yZ1wiICRuYW1lIik7CiAgICBwcmludCBNQUlMICJGcm9t OiBjdnMtY29tbWl0XEBnY2MuZ251Lm9yZ1xuIjsKICAgIHByaW50IE1BSUwg IlN1YmplY3Q6ICRzdWJqZWN0XG4iOwogICAgcHJpbnQgTUFJTCAiVG86ICRu YW1lXG4iOwogICAgcHJpbnQgTUFJTCAiXG4iOwogICAgcHJpbnQgTUFJTCBq b2luKCJcbiIsIEB0ZXh0KSwgIlxuIjsKICAgIGNsb3NlKE1BSUwpOwp9Cgoj CiMJTWFpbiBCb2R5CiMKCiMgSW5pdGlhbGl6ZSBiYXNpYyB2YXJpYWJsZXMK IwokZGVidWcgPSAwOwpjaG9wKCRob3N0bmFtZSA9IGBob3N0bmFtZWApOwoK IyBQYXJzZSBjb21tYW5kIGxpbmUgYXJndW1lbnRzLgoKd2hpbGUgKEBBUkdW KSB7CiAgICAkYXJnID0gc2hpZnQgQEFSR1Y7CgogICAgaWYgKCRhcmcgZXEg Jy1kJykgewoJJGRlYnVnID0gMTsKCXByaW50IFNUREVSUiAiRGVidWcgdHVy bmVkIG9uLi4uXG4iOwogICAgfSBlbHNpZiAoJGFyZyBlcSAnLUcnKSB7Cgko JGJ1Z3ppbGxhcHJvZHVjdCkgJiYgZGllKCJUb28gbWFueSAnLUcnIGFyZ3Nc biIpOwoJJGJ1Z3ppbGxhcHJvZHVjdCA9IHNoaWZ0IEBBUkdWOwogICAgfQp9 CgppZiAoJGhvc3RuYW1lICF+IC9cLi8pIHsKICAgIGNob3AoJGRvbWFpbm5h bWUgPSBgZG9tYWlubmFtZWApOwogICAgJGhvc3Rkb21haW4gPSAkaG9zdG5h bWUgLiAiLiIgLiAkZG9tYWlubmFtZTsKfSBlbHNlIHsKICAgICRob3N0ZG9t YWluID0gJGhvc3RuYW1lOwp9CgojIFVzZWQgd2l0aCBzcHJpbnRmIHRvIGZv cm0gbmFtZSBvZiBHbmF0cyBub3RpZmljYXRpb24gbWFpbGluZyBsaXN0Lgoj ICVzIGFyZ3VtZW50IGNvbXNlIGZyb20gLUcgb3B0aW9uLgokR05BVFNfTUFJ TF9GT1JNQVQgPSAiJXMtYnVnemlsbGFcQCRob3N0ZG9tYWluIjsKCiMgQ29s bGVjdCB0aGUgYm9keSBvZiB0aGUgY29tbWl0IG1lc3NhZ2UuCndoaWxlICg8 U1RESU4+KSB7CiAgICBjaG9wOwogICAgcHVzaCAoQHRleHQsICRfKTsKfQoK JGxvZ190eHQgPSBqb2luICgiXG4iLCBAdGV4dCk7CiVkb25lX2lkcyA9IHt9 Owp3aGlsZSAoJGxvZ190eHQgPX4gbS9bXkFhXSg/OmJ1Z3xQUnxCWilccytc Iz9ccyooPzpbYS16Ky1dK1wvKT8oPzpcLyk/KFxkKykoLiopJC9zaSkgewog ICRidWdfaWQgPSAkMTsKICAkbG9nX3R4dCA9ICQyOwogIGlmICghZGVmaW5l ZCAkZG9uZV9pZHN7JGJ1Z19pZH0pCiAgICB7CiAgICAgICRkb25lX2lkc3sk YnVnX2lkfSA9IDE7CiAgICAgICMgU2VuZCBtYWlsIHRvIEJ1Z3ppbGxhLCBp ZiByZXF1aXJlZC4KICAgICAgaWYgKCRidWd6aWxsYXByb2R1Y3QgbmUgJycp IHsKCW15ICRkYmggPSB1bmRlZjsKCWlmICgkYnVnemlsbGFwcm9kdWN0IGVx ICdnY2MnKQoJICB7CgkgICAgJGRiaCA9IERCSS0+Y29ubmVjdCAoImRiaTpt eXNxbDpidWdzIiwgInJvb3QiLCAiSEFIQUhBIik7CgkgIH0KCWVsc2UgICMg ZWxzaWYgKCRidWd6aWxsYXByb2R1Y3QgZXEgJ2dsaWJjJykKCSAgewoJICAg ICRkYmggPSBEQkktPmNvbm5lY3QgKCJkYmk6bXlzcWw6c291cmNlc2J1Z3Mi LCAicm9vdCIsICJIQUhBSEEiKTsKCSAgfQoJaWYgKCRkZWJ1ZykgCgkgIHsK CSAgICBwcmludCBTVERFUlIgIkF0dGVtcHRpbmcgdG8gc2VlIGlmIGJ1ZyAk YnVnX2lkIGV4aXN0c1xuIjsKCSAgfQoJaWYgKGRlZmluZWQgJGRiaCAKCSAg ICAmJiAmc2VlX2lmX2J1Z3ppbGxhX2J1Z19leGlzdHMgKCRkYmgsICRidWd6 aWxsYXByb2R1Y3QsICRidWdfaWQpKSAKCSAgewoJICAgIGlmICgkZGVidWcp IHsgcHJpbnQgU1RERVJSICJJdCBkb2VzXG4iOyB9CgkgICAgaWYgKCRidWd6 aWxsYXByb2R1Y3QgbmUgJ2djYycpIHsKCQkmbWFpbF9idWdfbm90aWZpY2F0 aW9uKCBzcHJpbnRmICgkR05BVFNfTUFJTF9GT1JNQVQsICJzb3VyY2V3YXJl IiksICJbQnVnICRidWdfaWRdIiwgQHRleHQpOwoJICAgIH0KCSAgICBlbHNl IHsgCgkJJm1haWxfYnVnX25vdGlmaWNhdGlvbiggc3ByaW50ZiAoJEdOQVRT X01BSUxfRk9STUFULCAkYnVnemlsbGFwcm9kdWN0KSwKCQkJCQkiW0J1ZyAk YnVnX2lkXSIsIEB0ZXh0KTsKCSAgICB9Cgl9CglpZiAoZGVmaW5lZCAkZGJo KQoJICB7CgkgICAgJGRiaC0+ZGlzY29ubmVjdDsKCSAgfQogICAgICB9CiAg ICB9Cn0KCmV4aXQgMDsK --=-=-= Content-Type: application/octet-stream Content-Disposition: attachment; filename=src-email Content-Transfer-Encoding: base64 Content-Description: src-email Content-length: 798 IyBUaGlzIHNwZWNpZmllcyB3aGljaCBjb21taXQgbWVzc2FnZXMgZ28gdG8g d2hpY2ggbGlzdHMuCgpeYmZkLyAgYmludXRpbHMtY3ZzQHNvdXJjZXdhcmUu b3JnCl5iaW51dGlscy8gIGJpbnV0aWxzLWN2c0Bzb3VyY2V3YXJlLm9yZwpe Y3B1LyAgYmludXRpbHMtY3ZzQHNvdXJjZXdhcmUub3JnCl5lbGZjcHAvICBi aW51dGlscy1jdnNAc291cmNld2FyZS5vcmcKXmdhcy8gIGJpbnV0aWxzLWN2 c0Bzb3VyY2V3YXJlLm9yZwpeZ29sZC8gIGJpbnV0aWxzLWN2c0Bzb3VyY2V3 YXJlLm9yZwpeZ3Byb2YvICBiaW51dGlscy1jdnNAc291cmNld2FyZS5vcmcK XmluY2x1ZGUvICBiaW51dGlscy1jdnNAc291cmNld2FyZS5vcmcKXmxkLyAg YmludXRpbHMtY3ZzQHNvdXJjZXdhcmUub3JnCl5vcGNvZGVzLyAgYmludXRp bHMtY3ZzQHNvdXJjZXdhcmUub3JnCgpeZ2RiLyAgZ2RiLWN2c0Bzb3VyY2V3 YXJlLm9yZwpecmVhZGxpbmUvICBnZGItY3ZzQHNvdXJjZXdhcmUub3JnCl5z aW0vICBnZGItY3ZzQHNvdXJjZXdhcmUub3JnCgojIENhdGNoLWFsbCBmb3Ig YW55dGhpbmcgcmVtYWluaW5nLgouKiBzcmMtY3ZzQHNvdXJjZXdhcmUub3Jn Cg== --=-=-= Content-Type: application/octet-stream Content-Disposition: attachment; filename=src-git-config Content-Transfer-Encoding: base64 Content-Description: src-git-config Content-length: 541 W2NvcmVdCiAgICAgICAgcmVwb3NpdG9yeWZvcm1hdHZlcnNpb24gPSAwCiAg ICAgICAgZmlsZW1vZGUgPSB0cnVlCiAgICAgICAgYmFyZSA9IHRydWUKICAg ICAgICBzaGFyZWRyZXBvc2l0b3J5ID0gMQpbcmVjZWl2ZV0KICAgICAgICBk ZW55bm9uZmFzdGZvcndhcmRzID0gdHJ1ZQpbaG9va3NdCiAgICAgICAgbWFp bGluZ2xpc3QgPSBzcmMtY3ZzQHNvdXJjZXdhcmUub3JnCglyZWNpcGllbnRm aWxlID0gc3JjLWVtYWlsCglzaG93cmV2ID0gdD0lczsgcHJpbnRmICdodHRw czovL3NvdXJjZXdhcmUub3JnL2dpdC9naXR3ZWIuY2dpP3A9c3JjLmdpdDto PSUlcycgXCR0OyBlY2hvOyBlY2hvOyBnaXQgcmV2LWxpc3QgLTEgLS1wcmV0 dHkgXCR0CglidWd6aWxsYXByb2R1Y3QgPSBnZGIgYmludXRpbHMK --=-=-=--