From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: "Adam Hupp" Newsgroups: gmane.emacs.devel Subject: Re: Fwd: python-complete-symbol hangs Date: Mon, 10 Sep 2007 23:22:31 -0400 Message-ID: <766a29bd0709102022x542aa842pc189ce041692e61d@mail.gmail.com> References: NNTP-Posting-Host: lo.gmane.org Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="----=_Part_12717_26801775.1189480951916" X-Trace: sea.gmane.org 1189494017 9248 80.91.229.12 (11 Sep 2007 07:00:17 GMT) X-Complaints-To: usenet@sea.gmane.org NNTP-Posting-Date: Tue, 11 Sep 2007 07:00:17 +0000 (UTC) Cc: Stefan Monnier , emacs-devel@gnu.org To: rms@gnu.org Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Tue Sep 11 17:00:00 2007 Return-path: Envelope-to: ged-emacs-devel@m.gmane.org Original-Received: from lists.gnu.org ([199.232.76.165]) by lo.gmane.org with esmtp (Exim 4.50) id 1IV7DU-0007RJ-I3 for ged-emacs-devel@m.gmane.org; Tue, 11 Sep 2007 16:59:54 +0200 Original-Received: from localhost ([127.0.0.1] helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1IUzjC-0002Hu-Cy for ged-emacs-devel@m.gmane.org; Tue, 11 Sep 2007 03:00:06 -0400 Original-Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1IUwKh-0005uM-QC for emacs-devel@gnu.org; Mon, 10 Sep 2007 23:22:35 -0400 Original-Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1IUwKh-0005ty-7h for emacs-devel@gnu.org; Mon, 10 Sep 2007 23:22:35 -0400 Original-Received: from [199.232.76.173] (helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1IUwKh-0005tv-0N for emacs-devel@gnu.org; Mon, 10 Sep 2007 23:22:35 -0400 Original-Received: from nz-out-0506.google.com ([64.233.162.235]) by monty-python.gnu.org with esmtp (Exim 4.60) (envelope-from ) id 1IUwKg-0005sF-99 for emacs-devel@gnu.org; Mon, 10 Sep 2007 23:22:34 -0400 Original-Received: by nz-out-0506.google.com with SMTP id f1so644988nzc for ; Mon, 10 Sep 2007 20:22:33 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=beta; h=domainkey-signature:received:received:message-id:date:from:sender:to:subject:cc:in-reply-to:mime-version:content-type:references:x-google-sender-auth; bh=T4QxPTwV/kjRulT2f8zKTbaBCpYDVi/mXsg8OM81SiE=; b=ui8PPUjk2fc0hGBEo9a3/1Vcw3Pw8GefxB9BHs0itVXaynjJfvbwpn/kmCfpHnABJI6sCulnvlECH8bFgDxW2mku7DczcyE3W0I3gI+xWoEfY68BlcxcC+ex9a2bdNEelu86Nelp80uB+PedZYgNElnO3y/cY/fHaM6qkkzO1oc= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=beta; h=received:message-id:date:from:sender:to:subject:cc:in-reply-to:mime-version:content-type:references:x-google-sender-auth; b=s5OAtnfGMW6rxB7QuJJ/7mDk46YJlXvagiTws1eSlEz6Q06WUNUEdDtp++rxhHaR44vVRK8qvVUxVstsH8MT5tsdn1UgkYmCdUiTBLVeinMPcGwSv6OlgBNluMBvSl3wKQOqJIHz0+F4Ow/gBFg5uiKae95JkV+zQ/OkuBVhu3A= Original-Received: by 10.64.196.9 with SMTP id t9mr10941026qbf.1189480951990; Mon, 10 Sep 2007 20:22:31 -0700 (PDT) Original-Received: by 10.64.184.3 with HTTP; Mon, 10 Sep 2007 20:22:31 -0700 (PDT) In-Reply-To: X-Google-Sender-Auth: b137fc9857dc4ad6 X-Detected-Kernel: Linux 2.6 (newer, 2) X-Mailman-Approved-At: Tue, 11 Sep 2007 03:00:03 -0400 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Original-Sender: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.devel:78569 Archived-At: ------=_Part_12717_26801775.1189480951916 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Content-Disposition: inline On 9/10/07, Richard Stallman wrote: > Adam Hupp posted a fix for it (and to add support for > Python-3.0) back in June, but I haven't heard from him since. I thought we > were waiting for his paperwork to install his patch. > > We have his papers; can you find and install his patch? A copy of the patch is attached to this mail. -- Adam Hupp | http://hupp.org/adam/ ------=_Part_12717_26801775.1189480951916 Content-Type: application/octet-stream; name="emacs-22.1-python3k-support.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="emacs-22.1-python3k-support.patch" X-Attachment-Id: f_f6fu7y9i ZGlmZiAtdXJOIGVtYWNzLTIyLjEvZXRjL0NoYW5nZUxvZyBlbWFjcy0yMi4xLXB5M2svZXRjL0No YW5nZUxvZwotLS0gZW1hY3MtMjIuMS9ldGMvQ2hhbmdlTG9nCTIwMDctMDYtMDIgMTI6MDI6MjAu MDAwMDAwMDAwICswMTAwCisrKyBlbWFjcy0yMi4xLXB5M2svZXRjL0NoYW5nZUxvZwkyMDA3LTA2 LTIzIDAwOjQ3OjUzLjAwMDAwMDAwMCArMDEwMApAQCAtMSwzICsxLDEwIEBACisyMDA3LTA2LTIy ICBBZGFtIEh1cHAgIDxhZGFtQGh1cHAub3JnPgorCisJKiBweXRob24uZWw6IGltcG9ydCBlbWFj cyBtb2R1bGUgd2l0aG91dCB3YWl0aW5nOyBwcmV2ZW50cyBsb2NrdXAKKwlvbiBlcnJvci4KKwkq IGVtYWNzLnB5OiBzcGxpdCBpbnRvIG1vZHVsZXMgZm9yIHB5dGhvbiAyIGFuZCBweXRob24gMwor CWNvbXBhdGFiaWxpdHkuICAKKwogMjAwNy0wNi0wMiAgQ2hvbmcgWWlkb25nICA8Y3lkQHN0dXBp ZGNoaWNrZW4uY29tPgogCiAJKiBWZXJzaW9uIDIyLjEgcmVsZWFzZWQuCmRpZmYgLXVyTiBlbWFj cy0yMi4xL2V0Yy9lbWFjcy5weSBlbWFjcy0yMi4xLXB5M2svZXRjL2VtYWNzLnB5Ci0tLSBlbWFj cy0yMi4xL2V0Yy9lbWFjcy5weQkyMDA3LTA1LTE0IDE1OjU2OjI4LjAwMDAwMDAwMCArMDEwMAor KysgZW1hY3MtMjIuMS1weTNrL2V0Yy9lbWFjcy5weQkyMDA3LTA2LTIyIDA3OjA0OjE1LjAwMDAw MDAwMCArMDEwMApAQCAtMSw3ICsxLDcgQEAKLSIiIkRlZmluaXRpb25zIHVzZWQgYnkgY29tbWFu ZHMgc2VudCB0byBpbmZlcmlvciBQeXRob24gaW4gcHl0aG9uLmVsLiIiIgorIiIiV3JhcHBlciBm b3IgdmVyc2lvbi1zcGVjaWZpYyBpbXBsZW1lbnRhdGlvbnMgb2YgcHl0aG9uLmVsIGhlbHBlcgor ZnVuY3Rpb25zICIiIgogCi0jIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNyAg RnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0jIEF1dGhvcjogRGF2ZSBMb3ZlIDxmeEBn bnUub3JnPgorIyBDb3B5cmlnaHQgKEMpIDIwMDcgIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwg SW5jLgogCiAjIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEdOVSBFbWFjcy4KIApAQCAtMjAsMjEzICsy MCwxMCBAQAogIyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0 cmVldCwgRmlmdGggRmxvb3IsCiAjIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgogCi1pbXBv cnQgb3MsIHN5cywgdHJhY2ViYWNrLCBpbnNwZWN0LCBfX21haW5fXwotZnJvbSBzZXRzIGltcG9y dCBTZXQKK2ltcG9ydCBzeXMKIAotX19hbGxfXyA9IFsiZWV4ZWNmaWxlIiwgImVhcmdzIiwgImNv bXBsZXRlIiwgImVoZWxwIiwgImVpbXBvcnQiLCAibW9kcGF0aCJdCitpZiBzeXMudmVyc2lvbl9p bmZvWzBdID09IDM6CisgICAgZnJvbSBlbWFjczMgaW1wb3J0ICoKK2Vsc2U6CisgICAgZnJvbSBl bWFjczIgaW1wb3J0ICoKIAotZGVmIGZvcm1hdF9leGNlcHRpb24gKGZpbGVuYW1lLCBzaG91bGRf cmVtb3ZlX3NlbGYpOgotICAgIHR5cGUsIHZhbHVlLCB0YiA9IHN5cy5leGNfaW5mbyAoKQotICAg IHN5cy5sYXN0X3R5cGUgPSB0eXBlCi0gICAgc3lzLmxhc3RfdmFsdWUgPSB2YWx1ZQotICAgIHN5 cy5sYXN0X3RyYWNlYmFjayA9IHRiCi0gICAgaWYgdHlwZSBpcyBTeW50YXhFcnJvcjoKLSAgICAg ICAgdHJ5OiAjIHBhcnNlIHRoZSBlcnJvciBtZXNzYWdlCi0gICAgICAgICAgICBtc2csIChkdW1t eV9maWxlbmFtZSwgbGluZW5vLCBvZmZzZXQsIGxpbmUpID0gdmFsdWUKLSAgICAgICAgZXhjZXB0 OgotICAgICAgICAgICAgcGFzcyAjIE5vdCB0aGUgZm9ybWF0IHdlIGV4cGVjdDsgbGVhdmUgaXQg YWxvbmUKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgICMgU3R1ZmYgaW4gdGhlIHJpZ2h0IGZp bGVuYW1lCi0gICAgICAgICAgICB2YWx1ZSA9IFN5bnRheEVycm9yKG1zZywgKGZpbGVuYW1lLCBs aW5lbm8sIG9mZnNldCwgbGluZSkpCi0gICAgICAgICAgICBzeXMubGFzdF92YWx1ZSA9IHZhbHVl Ci0gICAgcmVzID0gdHJhY2ViYWNrLmZvcm1hdF9leGNlcHRpb25fb25seSAodHlwZSwgdmFsdWUp Ci0gICAgIyBUaGVyZSBhcmUgc29tZSBjb21waWxhdGlvbiBlcnJvcnMgd2hpY2ggZG8gbm90IHBy b3ZpZGUgdHJhY2ViYWNrIHNvIHdlCi0gICAgIyBzaG91bGQgbm90IG1hc3NhZ2UgaXQuCi0gICAg aWYgc2hvdWxkX3JlbW92ZV9zZWxmOgotICAgICAgICB0Ymxpc3QgPSB0cmFjZWJhY2suZXh0cmFj dF90YiAodGIpCi0gICAgICAgIGRlbCB0Ymxpc3RbOjFdCi0gICAgICAgIHJlcyA9IHRyYWNlYmFj ay5mb3JtYXRfbGlzdCAodGJsaXN0KQotICAgICAgICBpZiByZXM6Ci0gICAgICAgICAgICByZXMu aW5zZXJ0KDAsICJUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6XG4iKQotICAgICAg ICByZXNbbGVuKHJlcyk6XSA9IHRyYWNlYmFjay5mb3JtYXRfZXhjZXB0aW9uX29ubHkgKHR5cGUs IHZhbHVlKQotICAgICMgdHJhY2ViYWNrLnByaW50X2V4Y2VwdGlvbih0eXBlLCB2YWx1ZSwgdGIp Ci0gICAgZm9yIGxpbmUgaW4gcmVzOiBwcmludCBsaW5lLAotCi1kZWYgZWV4ZWNmaWxlIChmaWxl KToKLSAgICAiIiJFeGVjdXRlIEZJTEUgYW5kIHRoZW4gcmVtb3ZlIGl0LgotICAgIEV4ZWN1dGUg dGhlIGZpbGUgd2l0aGluIHRoZSBfX21haW5fXyBuYW1lc3BhY2UuCi0gICAgSWYgd2UgZ2V0IGFu IGV4Y2VwdGlvbiwgcHJpbnQgYSB0cmFjZWJhY2sgd2l0aCB0aGUgdG9wIGZyYW1lCi0gICAgKG91 cnNlbHZlcykgZXhjbHVkZWQuIiIiCi0gICAgIyBXZSBjYW5ub3QgdXNlIHJlYWwgZXhlY2ZpbGUg c2luY2UgaXQgaGFzIGEgYnVnIHdoZXJlIHRoZSBmaWxlIHN0YXlzCi0gICAgIyBsb2NrZWQgZm9y ZXZlciAodW5kZXIgdzMyKSBpZiBTeW50YXhFcnJvciBvY2N1cnMuCi0gICAgIyAtLS0gY29kZSBi YXNlZCBvbiBjb2RlLnB5IGFuZCBQeVNoZWxsLnB5LgotICAgIHRyeToKLSAgICAgICAgdHJ5Ogot ICAgICAgICAgICAgc291cmNlID0gb3BlbiAoZmlsZSwgInIiKS5yZWFkKCkKLSAgICAgICAgICAg IGNvZGUgPSBjb21waWxlIChzb3VyY2UsIGZpbGUsICJleGVjIikKLSAgICAgICAgIyBPdGhlciBl eGNlcHRpb25zIChzaG91bGRuJ3QgYmUgYW55Li4uKSB3aWxsIChjb3JyZWN0bHkpIGZhbGwKLSAg ICAgICAgIyB0aHJvdWdoIHRvICJmaW5hbCIuCi0gICAgICAgIGV4Y2VwdCAoT3ZlcmZsb3dFcnJv ciwgU3ludGF4RXJyb3IsIFZhbHVlRXJyb3IpOgotICAgICAgICAgICAgIyBGSVhNRTogV2hlbiBj YW4gY29tcGlsZSgpIHJhaXNlIGFueXRoaW5nIGVsc2UgdGhhbgotICAgICAgICAgICAgIyBTeW50 YXhFcnJvciA/Pz8/Ci0gICAgICAgICAgICBmb3JtYXRfZXhjZXB0aW9uIChmaWxlLCBGYWxzZSkK LSAgICAgICAgICAgIHJldHVybgotICAgICAgICB0cnk6Ci0gICAgICAgICAgICBleGVjIGNvZGUg aW4gX19tYWluX18uX19kaWN0X18KLSAgICAgICAgZXhjZXB0OgotICAgICAgICAgICAgZm9ybWF0 X2V4Y2VwdGlvbiAoZmlsZSwgVHJ1ZSkKLSAgICBmaW5hbGx5OgotCW9zLnJlbW92ZSAoZmlsZSkK LQotZGVmIGVhcmdzIChuYW1lLCBpbXBvcnRzKToKLSAgICAiR2V0IGFyZ2xpc3Qgb2YgTkFNRSBm b3IgRWxkb2MgJmMuIgotICAgIHRyeToKLQlpZiBpbXBvcnRzOiBleGVjIGltcG9ydHMKLQlwYXJ0 cyA9IG5hbWUuc3BsaXQgKCcuJykKLQlpZiBsZW4gKHBhcnRzKSA+IDE6Ci0JICAgIGV4ZWMgJ2lt cG9ydCAnICsgcGFydHNbMF0gIyBtaWdodCBmYWlsCi0JZnVuYyA9IGV2YWwgKG5hbWUpCi0JaWYg aW5zcGVjdC5pc2J1aWx0aW4gKGZ1bmMpIG9yIHR5cGUoZnVuYykgaXMgdHlwZToKLQkgICAgZG9j ID0gZnVuYy5fX2RvY19fCi0JICAgIGlmIGRvYy5maW5kICgnIC0+JykgIT0gLTE6Ci0JCXByaW50 ICdfZW1hY3Nfb3V0JywgZG9jLnNwbGl0ICgnIC0+JylbMF0KLQkgICAgZWxzZToKLQkJcHJpbnQg J19lbWFjc19vdXQnLCBkb2Muc3BsaXQgKCdcbicpWzBdCi0JICAgIHJldHVybgotCWlmIGluc3Bl Y3QuaXNtZXRob2QgKGZ1bmMpOgotCSAgICBmdW5jID0gZnVuYy5pbV9mdW5jCi0JaWYgbm90IGlu c3BlY3QuaXNmdW5jdGlvbiAoZnVuYyk6Ci0gICAgICAgICAgICBwcmludCAnX2VtYWNzX291dCAn Ci0gICAgICAgICAgICByZXR1cm4KLQkoYXJncywgdmFyYXJncywgdmFya3csIGRlZmF1bHRzKSA9 IGluc3BlY3QuZ2V0YXJnc3BlYyAoZnVuYykKLQkjIE5vIHNwYWNlIGJldHdlZW4gbmFtZSBhbmQg YXJnbGlzdCBmb3IgY29uc2lzdGVuY3kgd2l0aCBidWlsdGlucy4KLQlwcmludCAnX2VtYWNzX291 dCcsIFwKLQkgICAgZnVuYy5fX25hbWVfXyArIGluc3BlY3QuZm9ybWF0YXJnc3BlYyAoYXJncywg dmFyYXJncywgdmFya3csCi0JCQkJCQkgICBkZWZhdWx0cykKLSAgICBleGNlcHQ6Ci0JcHJpbnQg Il9lbWFjc19vdXQgIgotCi1kZWYgYWxsX25hbWVzIChvYmplY3QpOgotICAgICIiIlJldHVybiAo YW4gYXBwcm94aW1hdGlvbiB0bykgYSBsaXN0IG9mIGFsbCBwb3NzaWJsZSBhdHRyaWJ1dGUKLSAg ICBuYW1lcyByZWFjaGFibGUgdmlhIHRoZSBhdHRyaWJ1dGVzIG9mIE9CSkVDVCwgaS5lLiByb3Vn aGx5IHRoZQotICAgIGxlYXZlcyBvZiB0aGUgZGljdGlvbmFyeSB0cmVlIHVuZGVyIGl0LiIiIgot Ci0gICAgZGVmIGRvX29iamVjdCAob2JqZWN0LCBuYW1lcyk6Ci0JaWYgaW5zcGVjdC5pc21vZHVs ZSAob2JqZWN0KToKLQkgICAgZG9fbW9kdWxlIChvYmplY3QsIG5hbWVzKQotCWVsaWYgaW5zcGVj dC5pc2NsYXNzIChvYmplY3QpOgotCSAgICBkb19jbGFzcyAob2JqZWN0LCBuYW1lcykKLQkjIE1p Z2h0IGhhdmUgYW4gb2JqZWN0IHdpdGhvdXQgaXRzIGNsYXNzIGluIHNjb3BlLgotCWVsaWYgaGFz YXR0ciAob2JqZWN0LCAnX19jbGFzc19fJyk6Ci0JICAgIG5hbWVzLmFkZCAoJ19fY2xhc3NfXycp Ci0JICAgIGRvX2NsYXNzIChvYmplY3QuX19jbGFzc19fLCBuYW1lcykKLQkjIFByb2JhYmx5IG5v dCBhIGdvb2QgaWRlYSB0byB0cnkgdG8gZW51bWVyYXRlIGFyYml0cmFyeQotCSMgZGljdGlvbmFy aWVzLi4uCi0JcmV0dXJuIG5hbWVzCi0KLSAgICBkZWYgZG9fbW9kdWxlIChtb2R1bGUsIG5hbWVz KToKLQlpZiBoYXNhdHRyIChtb2R1bGUsICdfX2FsbF9fJyk6CSMgbGltaXRlZCBleHBvcnQgbGlz dAotCSAgICBuYW1lcy51bmlvbl91cGRhdGUgKG1vZHVsZS5fX2FsbF9fKQotCSAgICBmb3IgaSBp biBtb2R1bGUuX19hbGxfXzoKLQkJZG9fb2JqZWN0IChnZXRhdHRyIChtb2R1bGUsIGkpLCBuYW1l cykKLQllbHNlOgkJCSMgdXNlIGFsbCBuYW1lcwotCSAgICBuYW1lcy51bmlvbl91cGRhdGUgKGRp ciAobW9kdWxlKSkKLQkgICAgZm9yIGkgaW4gZGlyIChtb2R1bGUpOgotCQlkb19vYmplY3QgKGdl dGF0dHIgKG1vZHVsZSwgaSksIG5hbWVzKQotCXJldHVybiBuYW1lcwotCi0gICAgZGVmIGRvX2Ns YXNzIChvYmplY3QsIG5hbWVzKToKLQlucyA9IGRpciAob2JqZWN0KQotCW5hbWVzLnVuaW9uX3Vw ZGF0ZSAobnMpCi0JaWYgaGFzYXR0ciAob2JqZWN0LCAnX19iYXNlc19fJyk6ICMgc3VwZXJjbGFz c2VzCi0JICAgIGZvciBpIGluIG9iamVjdC5fX2Jhc2VzX186IGRvX29iamVjdCAoaSwgbmFtZXMp Ci0JcmV0dXJuIG5hbWVzCi0KLSAgICByZXR1cm4gZG9fb2JqZWN0IChvYmplY3QsIFNldCAoW10p KQotCi1kZWYgY29tcGxldGUgKG5hbWUsIGltcG9ydHMpOgotICAgICIiIkNvbXBsZXRlIFRFWFQg aW4gTkFNRVNQQUNFIGFuZCBwcmludCBhIExpc3AgbGlzdCBvZiBjb21wbGV0aW9ucy4KLSAgICBF eGVjIElNUE9SVFMgZmlyc3QuIiIiCi0gICAgaW1wb3J0IF9fbWFpbl9fLCBrZXl3b3JkCi0KLSAg ICBkZWYgY2xhc3NfbWVtYmVycyhvYmplY3QpOgotCW5hbWVzID0gZGlyIChvYmplY3QpCi0JaWYg aGFzYXR0ciAob2JqZWN0LCAnX19iYXNlc19fJyk6Ci0JICAgIGZvciBzdXBlciBpbiBvYmplY3Qu X19iYXNlc19fOgotCQluYW1lcyA9IGNsYXNzX21lbWJlcnMgKHN1cGVyKQotCXJldHVybiBuYW1l cwkKLQotICAgIG5hbWVzID0gU2V0IChbXSkKLSAgICBiYXNlID0gTm9uZQotICAgIHRyeToKLQlk aWN0ID0gX19tYWluX18uX19kaWN0X18uY29weSgpCi0JaWYgaW1wb3J0czogZXhlYyBpbXBvcnRz IGluIGRpY3QKLQlsID0gbGVuIChuYW1lKQotCWlmIG5vdCAiLiIgaW4gbmFtZToKLQkgICAgZm9y IGxpc3QgaW4gW2RpciAoX19idWlsdGluc19fKSwga2V5d29yZC5rd2xpc3QsIGRpY3Qua2V5cygp XToKLQkJZm9yIGVsdCBpbiBsaXN0OgotCQkgICAgaWYgZWx0WzpsXSA9PSBuYW1lOiBuYW1lcy5h ZGQoZWx0KQotCWVsc2U6Ci0JICAgIGJhc2UgPSBuYW1lWzpuYW1lLnJmaW5kICgnLicpXQotCSAg ICBuYW1lID0gbmFtZVtuYW1lLnJmaW5kKCcuJykrMTpdCi0JICAgIHRyeToKLQkJb2JqZWN0ID0g ZXZhbCAoYmFzZSwgZGljdCkKLQkJbmFtZXMgPSBTZXQgKGRpciAob2JqZWN0KSkKLQkJaWYgaGFz YXR0ciAob2JqZWN0LCAnX19jbGFzc19fJyk6Ci0JCSAgICBuYW1lcy5hZGQoJ19fY2xhc3NfXycp Ci0JCSAgICBuYW1lcy51bmlvbl91cGRhdGUgKGNsYXNzX21lbWJlcnMgKG9iamVjdCkpCi0JICAg IGV4Y2VwdDogbmFtZXMgPSBhbGxfbmFtZXMgKGRpY3QpCi0gICAgZXhjZXB0OiByZXR1cm4gW10K LSAgICBsID0gbGVuKG5hbWUpCi0gICAgcHJpbnQgJ19lbWFjc19vdXQgKCcsCi0gICAgZm9yIG4g aW4gbmFtZXM6Ci0JaWYgbmFtZSA9PSBuWzpsXToKLQkgICAgaWYgYmFzZTogcHJpbnQgJyIlcy4l cyInICUgKGJhc2UsIG4pLAotCSAgICBlbHNlOiBwcmludCAnIiVzIicgJSBuLAotICAgIHByaW50 ICcpJwotCi1kZWYgZWhlbHAgKG5hbWUsIGltcG9ydHMpOgotICAgICIiIkdldCBoZWxwIG9uIHN0 cmluZyBOQU1FLgotICAgIEZpcnN0IHRyeSB0byBldmFsIG5hbWUgZm9yLCBlLmcuIHVzZXIgZGVm aW5pdGlvbnMgd2hlcmUgd2UgbmVlZAotICAgIHRoZSBvYmplY3QuICBPdGhlcndpc2UgdHJ5IHRo ZSBzdHJpbmcgZm9ybS4iIiIKLSAgICBsb2NscyA9IHt9Ci0gICAgaWYgaW1wb3J0czoKLQl0cnk6 IGV4ZWMgaW1wb3J0cyBpbiBsb2NscwotCWV4Y2VwdDogcGFzcwotICAgIHRyeTogaGVscCAoZXZh bCAobmFtZSwgZ2xvYmFscygpLCBsb2NscykpCi0gICAgZXhjZXB0OiBoZWxwIChuYW1lKQotCi1k ZWYgZWltcG9ydCAobW9kLCBkaXIpOgotICAgICIiIkltcG9ydCBtb2R1bGUgTU9EIHdpdGggZGly ZWN0b3J5IERJUiBhdCB0aGUgaGVhZCBvZiB0aGUgc2VhcmNoIHBhdGguCi0gICAgTkIgZG9lc24n dCBsb2FkIGZyb20gRElSIGlmIE1PRCBzaGFkb3dzIGEgc3lzdGVtIG1vZHVsZS4iIiIKLSAgICBm cm9tIF9fbWFpbl9fIGltcG9ydCBfX2RpY3RfXwotCi0gICAgcGF0aDAgPSBzeXMucGF0aFswXQot ICAgIHN5cy5wYXRoWzBdID0gZGlyCi0gICAgdHJ5OgotCXRyeToKLQkgICAgaWYgX19kaWN0X18u aGFzX2tleShtb2QpIGFuZCBpbnNwZWN0LmlzbW9kdWxlIChfX2RpY3RfX1ttb2RdKToKLQkJcmVs b2FkIChfX2RpY3RfX1ttb2RdKQotCSAgICBlbHNlOgotCQlfX2RpY3RfX1ttb2RdID0gX19pbXBv cnRfXyAobW9kKQotCWV4Y2VwdDoKLQkgICAgKHR5cGUsIHZhbHVlLCB0YikgPSBzeXMuZXhjX2lu Zm8gKCkKLQkgICAgcHJpbnQgIlRyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToiCi0J ICAgIHRyYWNlYmFjay5wcmludF9leGNlcHRpb24gKHR5cGUsIHZhbHVlLCB0Yi50Yl9uZXh0KQot ICAgIGZpbmFsbHk6Ci0Jc3lzLnBhdGhbMF0gPSBwYXRoMAotCi1kZWYgbW9kcGF0aCAobW9kdWxl KToKLSAgICAiIiJSZXR1cm4gdGhlIHNvdXJjZSBmaWxlIGZvciB0aGUgZ2l2ZW4gTU9EVUxFIChv ciBOb25lKS4KLUFzc3VtZXMgdGhhdCBNT0RVTEUucHkgYW5kIE1PRFVMRS5weWMgYXJlIGluIHRo ZSBzYW1lIGRpcmVjdG9yeS4iIiIKLSAgICB0cnk6Ci0JcGF0aCA9IF9faW1wb3J0X18gKG1vZHVs ZSkuX19maWxlX18KLQlpZiBwYXRoWy00Ol0gPT0gJy5weWMnIGFuZCBvcy5wYXRoLmV4aXN0cyAo cGF0aFswOi0xXSk6Ci0JICAgIHBhdGggPSBwYXRoWzotMV0KLQlwcmludCAiX2VtYWNzX291dCIs IHBhdGgKLSAgICBleGNlcHQ6Ci0JcHJpbnQgIl9lbWFjc19vdXQgKCkiCi0KLSMgcHJpbnQgJ19l bWFjc19vaycJCSMgcmVhZHkgZm9yIGlucHV0IGFuZCBjYW4gY2FsbCBjb250aW51YXRpb24KLQot IyBhcmNoLXRhZzogZDkwNDA4ZjMtOTBlMi00ZGU0LTk5YzItNmViOWM3YjljYTQ2CmRpZmYgLXVy TiBlbWFjcy0yMi4xL2V0Yy9lbWFjczIucHkgZW1hY3MtMjIuMS1weTNrL2V0Yy9lbWFjczIucHkK LS0tIGVtYWNzLTIyLjEvZXRjL2VtYWNzMi5weQkxOTcwLTAxLTAxIDAxOjAwOjAwLjAwMDAwMDAw MCArMDEwMAorKysgZW1hY3MtMjIuMS1weTNrL2V0Yy9lbWFjczIucHkJMjAwNy0wNi0yMiAwNzow NjowNS4wMDAwMDAwMDAgKzAxMDAKQEAgLTAsMCArMSwyMzkgQEAKKyIiIkRlZmluaXRpb25zIHVz ZWQgYnkgY29tbWFuZHMgc2VudCB0byBpbmZlcmlvciBQeXRob24gaW4gcHl0aG9uLmVsLiIiIgor CisjIENvcHlyaWdodCAoQykgMjAwNCwgMjAwNSwgMjAwNiwgMjAwNyAgRnJlZSBTb2Z0d2FyZSBG b3VuZGF0aW9uLCBJbmMuCisjIEF1dGhvcjogRGF2ZSBMb3ZlIDxmeEBnbnUub3JnPgorCisjIFRo aXMgZmlsZSBpcyBwYXJ0IG9mIEdOVSBFbWFjcy4KKworIyBHTlUgRW1hY3MgaXMgZnJlZSBzb2Z0 d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorIyBpdCB1bmRlciB0 aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBi eQorIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvciAo YXQgeW91ciBvcHRpb24pCisjIGFueSBsYXRlciB2ZXJzaW9uLgorCisjIEdOVSBFbWFjcyBpcyBk aXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorIyBidXQgV0lU SE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgor IyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBT ZWUgdGhlCisjIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisK KyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVi bGljIExpY2Vuc2UKKyMgYWxvbmcgd2l0aCBHTlUgRW1hY3M7IHNlZSB0aGUgZmlsZSBDT1BZSU5H LiAgSWYgbm90LCB3cml0ZSB0byB0aGUKKyMgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMu LCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAorIyBCb3N0b24sIE1BIDAyMTEwLTEz MDEsIFVTQS4KKworaW1wb3J0IG9zLCBzeXMsIHRyYWNlYmFjaywgaW5zcGVjdCwgX19tYWluX18K KwordHJ5OgorICAgIHNldAorZXhjZXB0OgorICAgIGZyb20gc2V0cyBpbXBvcnQgU2V0IGFzIHNl dAorCitfX2FsbF9fID0gWyJlZXhlY2ZpbGUiLCAiZWFyZ3MiLCAiY29tcGxldGUiLCAiZWhlbHAi LCAiZWltcG9ydCIsICJtb2RwYXRoIl0KKworZGVmIGZvcm1hdF9leGNlcHRpb24gKGZpbGVuYW1l LCBzaG91bGRfcmVtb3ZlX3NlbGYpOgorICAgIHR5cGUsIHZhbHVlLCB0YiA9IHN5cy5leGNfaW5m byAoKQorICAgIHN5cy5sYXN0X3R5cGUgPSB0eXBlCisgICAgc3lzLmxhc3RfdmFsdWUgPSB2YWx1 ZQorICAgIHN5cy5sYXN0X3RyYWNlYmFjayA9IHRiCisgICAgaWYgdHlwZSBpcyBTeW50YXhFcnJv cjoKKyAgICAgICAgdHJ5OiAjIHBhcnNlIHRoZSBlcnJvciBtZXNzYWdlCisgICAgICAgICAgICBt c2csIChkdW1teV9maWxlbmFtZSwgbGluZW5vLCBvZmZzZXQsIGxpbmUpID0gdmFsdWUKKyAgICAg ICAgZXhjZXB0OgorICAgICAgICAgICAgcGFzcyAjIE5vdCB0aGUgZm9ybWF0IHdlIGV4cGVjdDsg bGVhdmUgaXQgYWxvbmUKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgICMgU3R1ZmYgaW4gdGhl IHJpZ2h0IGZpbGVuYW1lCisgICAgICAgICAgICB2YWx1ZSA9IFN5bnRheEVycm9yKG1zZywgKGZp bGVuYW1lLCBsaW5lbm8sIG9mZnNldCwgbGluZSkpCisgICAgICAgICAgICBzeXMubGFzdF92YWx1 ZSA9IHZhbHVlCisgICAgcmVzID0gdHJhY2ViYWNrLmZvcm1hdF9leGNlcHRpb25fb25seSAodHlw ZSwgdmFsdWUpCisgICAgIyBUaGVyZSBhcmUgc29tZSBjb21waWxhdGlvbiBlcnJvcnMgd2hpY2gg ZG8gbm90IHByb3ZpZGUgdHJhY2ViYWNrIHNvIHdlCisgICAgIyBzaG91bGQgbm90IG1hc3NhZ2Ug aXQuCisgICAgaWYgc2hvdWxkX3JlbW92ZV9zZWxmOgorICAgICAgICB0Ymxpc3QgPSB0cmFjZWJh Y2suZXh0cmFjdF90YiAodGIpCisgICAgICAgIGRlbCB0Ymxpc3RbOjFdCisgICAgICAgIHJlcyA9 IHRyYWNlYmFjay5mb3JtYXRfbGlzdCAodGJsaXN0KQorICAgICAgICBpZiByZXM6CisgICAgICAg ICAgICByZXMuaW5zZXJ0KDAsICJUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6XG4i KQorICAgICAgICByZXNbbGVuKHJlcyk6XSA9IHRyYWNlYmFjay5mb3JtYXRfZXhjZXB0aW9uX29u bHkgKHR5cGUsIHZhbHVlKQorICAgICMgdHJhY2ViYWNrLnByaW50X2V4Y2VwdGlvbih0eXBlLCB2 YWx1ZSwgdGIpCisgICAgZm9yIGxpbmUgaW4gcmVzOiBwcmludCBsaW5lLAorCitkZWYgZWV4ZWNm aWxlIChmaWxlKToKKyAgICAiIiJFeGVjdXRlIEZJTEUgYW5kIHRoZW4gcmVtb3ZlIGl0LgorICAg IEV4ZWN1dGUgdGhlIGZpbGUgd2l0aGluIHRoZSBfX21haW5fXyBuYW1lc3BhY2UuCisgICAgSWYg d2UgZ2V0IGFuIGV4Y2VwdGlvbiwgcHJpbnQgYSB0cmFjZWJhY2sgd2l0aCB0aGUgdG9wIGZyYW1l CisgICAgKG91cnNlbHZlcykgZXhjbHVkZWQuIiIiCisgICAgIyBXZSBjYW5ub3QgdXNlIHJlYWwg ZXhlY2ZpbGUgc2luY2UgaXQgaGFzIGEgYnVnIHdoZXJlIHRoZSBmaWxlIHN0YXlzCisgICAgIyBs b2NrZWQgZm9yZXZlciAodW5kZXIgdzMyKSBpZiBTeW50YXhFcnJvciBvY2N1cnMuCisgICAgIyAt LS0gY29kZSBiYXNlZCBvbiBjb2RlLnB5IGFuZCBQeVNoZWxsLnB5LgorICAgIHRyeToKKyAgICAg ICAgdHJ5OgorICAgICAgICAgICAgc291cmNlID0gb3BlbiAoZmlsZSwgInIiKS5yZWFkKCkKKyAg ICAgICAgICAgIGNvZGUgPSBjb21waWxlIChzb3VyY2UsIGZpbGUsICJleGVjIikKKyAgICAgICAg IyBPdGhlciBleGNlcHRpb25zIChzaG91bGRuJ3QgYmUgYW55Li4uKSB3aWxsIChjb3JyZWN0bHkp IGZhbGwKKyAgICAgICAgIyB0aHJvdWdoIHRvICJmaW5hbCIuCisgICAgICAgIGV4Y2VwdCAoT3Zl cmZsb3dFcnJvciwgU3ludGF4RXJyb3IsIFZhbHVlRXJyb3IpOgorICAgICAgICAgICAgIyBGSVhN RTogV2hlbiBjYW4gY29tcGlsZSgpIHJhaXNlIGFueXRoaW5nIGVsc2UgdGhhbgorICAgICAgICAg ICAgIyBTeW50YXhFcnJvciA/Pz8/CisgICAgICAgICAgICBmb3JtYXRfZXhjZXB0aW9uIChmaWxl LCBGYWxzZSkKKyAgICAgICAgICAgIHJldHVybgorICAgICAgICB0cnk6CisgICAgICAgICAgICBl eGVjIGNvZGUgaW4gX19tYWluX18uX19kaWN0X18KKyAgICAgICAgZXhjZXB0OgorICAgICAgICAg ICAgZm9ybWF0X2V4Y2VwdGlvbiAoZmlsZSwgVHJ1ZSkKKyAgICBmaW5hbGx5OgorICAgICAgICBv cy5yZW1vdmUgKGZpbGUpCisKK2RlZiBlYXJncyAobmFtZSwgaW1wb3J0cyk6CisgICAgIkdldCBh cmdsaXN0IG9mIE5BTUUgZm9yIEVsZG9jICZjLiIKKyAgICB0cnk6CisgICAgICAgIGlmIGltcG9y dHM6IGV4ZWMgaW1wb3J0cworICAgICAgICBwYXJ0cyA9IG5hbWUuc3BsaXQgKCcuJykKKyAgICAg ICAgaWYgbGVuIChwYXJ0cykgPiAxOgorICAgICAgICAgICAgZXhlYyAnaW1wb3J0ICcgKyBwYXJ0 c1swXSAjIG1pZ2h0IGZhaWwKKyAgICAgICAgZnVuYyA9IGV2YWwgKG5hbWUpCisgICAgICAgIGlm IGluc3BlY3QuaXNidWlsdGluIChmdW5jKSBvciB0eXBlKGZ1bmMpIGlzIHR5cGU6CisgICAgICAg ICAgICBkb2MgPSBmdW5jLl9fZG9jX18KKyAgICAgICAgICAgIGlmIGRvYy5maW5kICgnIC0+Jykg IT0gLTE6CisgICAgICAgICAgICAgICAgcHJpbnQgJ19lbWFjc19vdXQnLCBkb2Muc3BsaXQgKCcg LT4nKVswXQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBwcmludCAnX2VtYWNz X291dCcsIGRvYy5zcGxpdCAoJ1xuJylbMF0KKyAgICAgICAgICAgIHJldHVybgorICAgICAgICBp ZiBpbnNwZWN0LmlzbWV0aG9kIChmdW5jKToKKyAgICAgICAgICAgIGZ1bmMgPSBmdW5jLmltX2Z1 bmMKKyAgICAgICAgaWYgbm90IGluc3BlY3QuaXNmdW5jdGlvbiAoZnVuYyk6CisgICAgICAgICAg ICBwcmludCAnX2VtYWNzX291dCAnCisgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgKGFyZ3Ms IHZhcmFyZ3MsIHZhcmt3LCBkZWZhdWx0cykgPSBpbnNwZWN0LmdldGFyZ3NwZWMgKGZ1bmMpCisg ICAgICAgICMgTm8gc3BhY2UgYmV0d2VlbiBuYW1lIGFuZCBhcmdsaXN0IGZvciBjb25zaXN0ZW5j eSB3aXRoIGJ1aWx0aW5zLgorICAgICAgICBwcmludCAnX2VtYWNzX291dCcsIFwKKyAgICAgICAg ICAgIGZ1bmMuX19uYW1lX18gKyBpbnNwZWN0LmZvcm1hdGFyZ3NwZWMgKGFyZ3MsIHZhcmFyZ3Ms IHZhcmt3LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgZGVmYXVsdHMpCisgICAgZXhjZXB0OgorICAgICAgICBwcmludCAiX2VtYWNzX291dCAiCisK K2RlZiBhbGxfbmFtZXMgKG9iamVjdCk6CisgICAgIiIiUmV0dXJuIChhbiBhcHByb3hpbWF0aW9u IHRvKSBhIGxpc3Qgb2YgYWxsIHBvc3NpYmxlIGF0dHJpYnV0ZQorICAgIG5hbWVzIHJlYWNoYWJs ZSB2aWEgdGhlIGF0dHJpYnV0ZXMgb2YgT0JKRUNULCBpLmUuIHJvdWdobHkgdGhlCisgICAgbGVh dmVzIG9mIHRoZSBkaWN0aW9uYXJ5IHRyZWUgdW5kZXIgaXQuIiIiCisKKyAgICBkZWYgZG9fb2Jq ZWN0IChvYmplY3QsIG5hbWVzKToKKyAgICAgICAgaWYgaW5zcGVjdC5pc21vZHVsZSAob2JqZWN0 KToKKyAgICAgICAgICAgIGRvX21vZHVsZSAob2JqZWN0LCBuYW1lcykKKyAgICAgICAgZWxpZiBp bnNwZWN0LmlzY2xhc3MgKG9iamVjdCk6CisgICAgICAgICAgICBkb19jbGFzcyAob2JqZWN0LCBu YW1lcykKKyAgICAgICAgIyBNaWdodCBoYXZlIGFuIG9iamVjdCB3aXRob3V0IGl0cyBjbGFzcyBp biBzY29wZS4KKyAgICAgICAgZWxpZiBoYXNhdHRyIChvYmplY3QsICdfX2NsYXNzX18nKToKKyAg ICAgICAgICAgIG5hbWVzLmFkZCAoJ19fY2xhc3NfXycpCisgICAgICAgICAgICBkb19jbGFzcyAo b2JqZWN0Ll9fY2xhc3NfXywgbmFtZXMpCisgICAgICAgICMgUHJvYmFibHkgbm90IGEgZ29vZCBp ZGVhIHRvIHRyeSB0byBlbnVtZXJhdGUgYXJiaXRyYXJ5CisgICAgICAgICMgZGljdGlvbmFyaWVz Li4uCisgICAgICAgIHJldHVybiBuYW1lcworCisgICAgZGVmIGRvX21vZHVsZSAobW9kdWxlLCBu YW1lcyk6CisgICAgICAgIGlmIGhhc2F0dHIgKG1vZHVsZSwgJ19fYWxsX18nKTogIyBsaW1pdGVk IGV4cG9ydCBsaXN0CisgICAgICAgICAgICBuYW1lcy51cGRhdGUobW9kdWxlLl9fYWxsX18pCisg ICAgICAgICAgICBmb3IgaSBpbiBtb2R1bGUuX19hbGxfXzoKKyAgICAgICAgICAgICAgICBkb19v YmplY3QgKGdldGF0dHIgKG1vZHVsZSwgaSksIG5hbWVzKQorICAgICAgICBlbHNlOiAgICAgICAg ICAgICAgICAgICAjIHVzZSBhbGwgbmFtZXMKKyAgICAgICAgICAgIG5hbWVzLnVwZGF0ZShkaXIg KG1vZHVsZSkpCisgICAgICAgICAgICBmb3IgaSBpbiBkaXIgKG1vZHVsZSk6CisgICAgICAgICAg ICAgICAgZG9fb2JqZWN0IChnZXRhdHRyIChtb2R1bGUsIGkpLCBuYW1lcykKKyAgICAgICAgcmV0 dXJuIG5hbWVzCisKKyAgICBkZWYgZG9fY2xhc3MgKG9iamVjdCwgbmFtZXMpOgorICAgICAgICBu cyA9IGRpciAob2JqZWN0KQorICAgICAgICBuYW1lcy51cGRhdGUobnMpCisgICAgICAgIGlmIGhh c2F0dHIgKG9iamVjdCwgJ19fYmFzZXNfXycpOiAjIHN1cGVyY2xhc3NlcworICAgICAgICAgICAg Zm9yIGkgaW4gb2JqZWN0Ll9fYmFzZXNfXzogZG9fb2JqZWN0IChpLCBuYW1lcykKKyAgICAgICAg cmV0dXJuIG5hbWVzCisKKyAgICByZXR1cm4gZG9fb2JqZWN0IChvYmplY3QsIHNldChbXSkpCisK K2RlZiBjb21wbGV0ZSAobmFtZSwgaW1wb3J0cyk6CisgICAgIiIiQ29tcGxldGUgVEVYVCBpbiBO QU1FU1BBQ0UgYW5kIHByaW50IGEgTGlzcCBsaXN0IG9mIGNvbXBsZXRpb25zLgorICAgIEV4ZWMg SU1QT1JUUyBmaXJzdC4iIiIKKyAgICBpbXBvcnQgX19tYWluX18sIGtleXdvcmQKKworICAgIGRl ZiBjbGFzc19tZW1iZXJzKG9iamVjdCk6CisgICAgICAgIG5hbWVzID0gZGlyIChvYmplY3QpCisg ICAgICAgIGlmIGhhc2F0dHIgKG9iamVjdCwgJ19fYmFzZXNfXycpOgorICAgICAgICAgICAgZm9y IHN1cGVyIGluIG9iamVjdC5fX2Jhc2VzX186CisgICAgICAgICAgICAgICAgbmFtZXMgPSBjbGFz c19tZW1iZXJzIChzdXBlcikKKyAgICAgICAgcmV0dXJuIG5hbWVzICAgIAorCisgICAgbmFtZXMg PSBzZXQoW10pCisgICAgYmFzZSA9IE5vbmUKKyAgICB0cnk6CisgICAgICAgIGRpY3QgPSBfX21h aW5fXy5fX2RpY3RfXy5jb3B5KCkKKyAgICAgICAgaWYgaW1wb3J0czogZXhlYyBpbXBvcnRzIGlu IGRpY3QKKyAgICAgICAgbCA9IGxlbiAobmFtZSkKKyAgICAgICAgaWYgbm90ICIuIiBpbiBuYW1l OgorICAgICAgICAgICAgZm9yIHNyYyBpbiBbZGlyIChfX2J1aWx0aW5zX18pLCBrZXl3b3JkLmt3 bGlzdCwgZGljdC5rZXlzKCldOgorICAgICAgICAgICAgICAgIGZvciBlbHQgaW4gc3JjOgorICAg ICAgICAgICAgICAgICAgICBpZiBlbHRbOmxdID09IG5hbWU6IG5hbWVzLmFkZChlbHQpCisgICAg ICAgIGVsc2U6CisgICAgICAgICAgICBiYXNlID0gbmFtZVs6bmFtZS5yZmluZCAoJy4nKV0KKyAg ICAgICAgICAgIG5hbWUgPSBuYW1lW25hbWUucmZpbmQoJy4nKSsxOl0KKyAgICAgICAgICAgIHRy eToKKyAgICAgICAgICAgICAgICBvYmplY3QgPSBldmFsIChiYXNlLCBkaWN0KQorICAgICAgICAg ICAgICAgIG5hbWVzID0gc2V0KGRpciAob2JqZWN0KSkKKyAgICAgICAgICAgICAgICBpZiBoYXNh dHRyIChvYmplY3QsICdfX2NsYXNzX18nKToKKyAgICAgICAgICAgICAgICAgICAgbmFtZXMuYWRk KCdfX2NsYXNzX18nKQorICAgICAgICAgICAgICAgICAgICBuYW1lcy51cGRhdGUoY2xhc3NfbWVt YmVycyAob2JqZWN0KSkKKyAgICAgICAgICAgIGV4Y2VwdDogbmFtZXMgPSBhbGxfbmFtZXMgKGRp Y3QpCisgICAgZXhjZXB0OiAKKyAgICAgICAgcHJpbnQgc3lzLmV4Y19pbmZvKCkKKyAgICAgICAg bmFtZXMgPSBbXQorICAgICAgICAKKyAgICBsID0gbGVuKG5hbWUpCisgICAgcHJpbnQgJ19lbWFj c19vdXQgKCcsCisgICAgZm9yIG4gaW4gbmFtZXM6CisgICAgICAgIGlmIG5hbWUgPT0gbls6bF06 CisgICAgICAgICAgICBpZiBiYXNlOiBwcmludCAnIiVzLiVzIicgJSAoYmFzZSwgbiksCisgICAg ICAgICAgICBlbHNlOiBwcmludCAnIiVzIicgJSBuLAorICAgIHByaW50ICcpJworCitkZWYgZWhl bHAgKG5hbWUsIGltcG9ydHMpOgorICAgICIiIkdldCBoZWxwIG9uIHN0cmluZyBOQU1FLgorICAg IEZpcnN0IHRyeSB0byBldmFsIG5hbWUgZm9yLCBlLmcuIHVzZXIgZGVmaW5pdGlvbnMgd2hlcmUg d2UgbmVlZAorICAgIHRoZSBvYmplY3QuICBPdGhlcndpc2UgdHJ5IHRoZSBzdHJpbmcgZm9ybS4i IiIKKyAgICBsb2NscyA9IHt9CisgICAgaWYgaW1wb3J0czoKKyAgICAgICAgdHJ5OiBleGVjIGlt cG9ydHMgaW4gbG9jbHMKKyAgICAgICAgZXhjZXB0OiBwYXNzCisgICAgdHJ5OiBoZWxwIChldmFs IChuYW1lLCBnbG9iYWxzKCksIGxvY2xzKSkKKyAgICBleGNlcHQ6IGhlbHAgKG5hbWUpCisKK2Rl ZiBlaW1wb3J0IChtb2QsIGRpcik6CisgICAgIiIiSW1wb3J0IG1vZHVsZSBNT0Qgd2l0aCBkaXJl Y3RvcnkgRElSIGF0IHRoZSBoZWFkIG9mIHRoZSBzZWFyY2ggcGF0aC4KKyAgICBOQiBkb2Vzbid0 IGxvYWQgZnJvbSBESVIgaWYgTU9EIHNoYWRvd3MgYSBzeXN0ZW0gbW9kdWxlLiIiIgorICAgIGZy b20gX19tYWluX18gaW1wb3J0IF9fZGljdF9fCisKKyAgICBwYXRoMCA9IHN5cy5wYXRoWzBdCisg ICAgc3lzLnBhdGhbMF0gPSBkaXIKKyAgICB0cnk6CisgICAgICAgIHRyeToKKyAgICAgICAgICAg IGlmIF9fZGljdF9fLmhhc19rZXkobW9kKSBhbmQgaW5zcGVjdC5pc21vZHVsZSAoX19kaWN0X19b bW9kXSk6CisgICAgICAgICAgICAgICAgcmVsb2FkIChfX2RpY3RfX1ttb2RdKQorICAgICAgICAg ICAgZWxzZToKKyAgICAgICAgICAgICAgICBfX2RpY3RfX1ttb2RdID0gX19pbXBvcnRfXyAobW9k KQorICAgICAgICBleGNlcHQ6CisgICAgICAgICAgICAodHlwZSwgdmFsdWUsIHRiKSA9IHN5cy5l eGNfaW5mbyAoKQorICAgICAgICAgICAgcHJpbnQgIlRyYWNlYmFjayAobW9zdCByZWNlbnQgY2Fs bCBsYXN0KToiCisgICAgICAgICAgICB0cmFjZWJhY2sucHJpbnRfZXhjZXB0aW9uICh0eXBlLCB2 YWx1ZSwgdGIudGJfbmV4dCkKKyAgICBmaW5hbGx5OgorICAgICAgICBzeXMucGF0aFswXSA9IHBh dGgwCisKK2RlZiBtb2RwYXRoIChtb2R1bGUpOgorICAgICIiIlJldHVybiB0aGUgc291cmNlIGZp bGUgZm9yIHRoZSBnaXZlbiBNT0RVTEUgKG9yIE5vbmUpLgorQXNzdW1lcyB0aGF0IE1PRFVMRS5w eSBhbmQgTU9EVUxFLnB5YyBhcmUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LiIiIgorICAgIHRyeToK KyAgICAgICAgcGF0aCA9IF9faW1wb3J0X18gKG1vZHVsZSkuX19maWxlX18KKyAgICAgICAgaWYg cGF0aFstNDpdID09ICcucHljJyBhbmQgb3MucGF0aC5leGlzdHMgKHBhdGhbMDotMV0pOgorICAg ICAgICAgICAgcGF0aCA9IHBhdGhbOi0xXQorICAgICAgICBwcmludCAiX2VtYWNzX291dCIsIHBh dGgKKyAgICBleGNlcHQ6CisgICAgICAgIHByaW50ICJfZW1hY3Nfb3V0ICgpIgorCisjIHByaW50 ICdfZW1hY3Nfb2snICAgICAgICAgICAgICMgcmVhZHkgZm9yIGlucHV0IGFuZCBjYW4gY2FsbCBj b250aW51YXRpb24KKworIyBhcmNoLXRhZzogZDkwNDA4ZjMtOTBlMi00ZGU0LTk5YzItNmViOWM3 YjljYTQ2CmRpZmYgLXVyTiBlbWFjcy0yMi4xL2V0Yy9lbWFjczMucHkgZW1hY3MtMjIuMS1weTNr L2V0Yy9lbWFjczMucHkKLS0tIGVtYWNzLTIyLjEvZXRjL2VtYWNzMy5weQkxOTcwLTAxLTAxIDAx OjAwOjAwLjAwMDAwMDAwMCArMDEwMAorKysgZW1hY3MtMjIuMS1weTNrL2V0Yy9lbWFjczMucHkJ MjAwNy0wNi0yMiAxNjo1OToyNi4wMDAwMDAwMDAgKzAxMDAKQEAgLTAsMCArMSwyNDQgQEAKKyIi IgorV2FybmluZzogVGhpcyBmaWxlIGlzIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGZyb20gZW1h Y3MyLnB5IHdpdGggdGhlCisydG8zIHNjcmlwdC4gIERvIG5vdCBoYW5kIGVkaXQuCisiIiIKKwor IiIiRGVmaW5pdGlvbnMgdXNlZCBieSBjb21tYW5kcyBzZW50IHRvIGluZmVyaW9yIFB5dGhvbiBp biBweXRob24uZWwuIiIiCisKKyMgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA2LCAyMDA3 ICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKyMgQXV0aG9yOiBEYXZlIExvdmUgPGZ4 QGdudS5vcmc+CisKKyMgVGhpcyBmaWxlIGlzIHBhcnQgb2YgR05VIEVtYWNzLgorCisjIEdOVSBF bWFjcyBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9k aWZ5CisjIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vu c2UgYXMgcHVibGlzaGVkIGJ5CisjIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhl ciB2ZXJzaW9uIDIsIG9yIChhdCB5b3VyIG9wdGlvbikKKyMgYW55IGxhdGVyIHZlcnNpb24uCisK KyMgR05VIEVtYWNzIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1 c2VmdWwsCisjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBs aWVkIHdhcnJhbnR5IG9mCisjIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJ Q1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9y IG1vcmUgZGV0YWlscy4KKworIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRo ZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorIyBhbG9uZyB3aXRoIEdOVSBFbWFjczsgc2Vl IHRoZSBmaWxlIENPUFlJTkcuICBJZiBub3QsIHdyaXRlIHRvIHRoZQorIyBGcmVlIFNvZnR3YXJl IEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisjIEJv c3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorCitpbXBvcnQgb3MsIHN5cywgdHJhY2ViYWNrLCBp bnNwZWN0LCBfX21haW5fXworCit0cnk6CisgICAgc2V0CitleGNlcHQ6CisgICAgZnJvbSBzZXRz IGltcG9ydCBTZXQgYXMgc2V0CisKK19fYWxsX18gPSBbImVleGVjZmlsZSIsICJlYXJncyIsICJj b21wbGV0ZSIsICJlaGVscCIsICJlaW1wb3J0IiwgIm1vZHBhdGgiXQorCitkZWYgZm9ybWF0X2V4 Y2VwdGlvbiAoZmlsZW5hbWUsIHNob3VsZF9yZW1vdmVfc2VsZik6CisgICAgdHlwZSwgdmFsdWUs IHRiID0gc3lzLmV4Y19pbmZvICgpCisgICAgc3lzLmxhc3RfdHlwZSA9IHR5cGUKKyAgICBzeXMu bGFzdF92YWx1ZSA9IHZhbHVlCisgICAgc3lzLmxhc3RfdHJhY2ViYWNrID0gdGIKKyAgICBpZiB0 eXBlIGlzIFN5bnRheEVycm9yOgorICAgICAgICB0cnk6ICMgcGFyc2UgdGhlIGVycm9yIG1lc3Nh Z2UKKyAgICAgICAgICAgIG1zZywgKGR1bW15X2ZpbGVuYW1lLCBsaW5lbm8sIG9mZnNldCwgbGlu ZSkgPSB2YWx1ZQorICAgICAgICBleGNlcHQ6CisgICAgICAgICAgICBwYXNzICMgTm90IHRoZSBm b3JtYXQgd2UgZXhwZWN0OyBsZWF2ZSBpdCBhbG9uZQorICAgICAgICBlbHNlOgorICAgICAgICAg ICAgIyBTdHVmZiBpbiB0aGUgcmlnaHQgZmlsZW5hbWUKKyAgICAgICAgICAgIHZhbHVlID0gU3lu dGF4RXJyb3IobXNnLCAoZmlsZW5hbWUsIGxpbmVubywgb2Zmc2V0LCBsaW5lKSkKKyAgICAgICAg ICAgIHN5cy5sYXN0X3ZhbHVlID0gdmFsdWUKKyAgICByZXMgPSB0cmFjZWJhY2suZm9ybWF0X2V4 Y2VwdGlvbl9vbmx5ICh0eXBlLCB2YWx1ZSkKKyAgICAjIFRoZXJlIGFyZSBzb21lIGNvbXBpbGF0 aW9uIGVycm9ycyB3aGljaCBkbyBub3QgcHJvdmlkZSB0cmFjZWJhY2sgc28gd2UKKyAgICAjIHNo b3VsZCBub3QgbWFzc2FnZSBpdC4KKyAgICBpZiBzaG91bGRfcmVtb3ZlX3NlbGY6CisgICAgICAg IHRibGlzdCA9IHRyYWNlYmFjay5leHRyYWN0X3RiICh0YikKKyAgICAgICAgZGVsIHRibGlzdFs6 MV0KKyAgICAgICAgcmVzID0gdHJhY2ViYWNrLmZvcm1hdF9saXN0ICh0Ymxpc3QpCisgICAgICAg IGlmIHJlczoKKyAgICAgICAgICAgIHJlcy5pbnNlcnQoMCwgIlRyYWNlYmFjayAobW9zdCByZWNl bnQgY2FsbCBsYXN0KTpcbiIpCisgICAgICAgIHJlc1tsZW4ocmVzKTpdID0gdHJhY2ViYWNrLmZv cm1hdF9leGNlcHRpb25fb25seSAodHlwZSwgdmFsdWUpCisgICAgIyB0cmFjZWJhY2sucHJpbnRf ZXhjZXB0aW9uKHR5cGUsIHZhbHVlLCB0YikKKyAgICBmb3IgbGluZSBpbiByZXM6IHByaW50KGxp bmUsIGVuZD0nICcpCisKK2RlZiBlZXhlY2ZpbGUgKGZpbGUpOgorICAgICIiIkV4ZWN1dGUgRklM RSBhbmQgdGhlbiByZW1vdmUgaXQuCisgICAgRXhlY3V0ZSB0aGUgZmlsZSB3aXRoaW4gdGhlIF9f bWFpbl9fIG5hbWVzcGFjZS4KKyAgICBJZiB3ZSBnZXQgYW4gZXhjZXB0aW9uLCBwcmludCBhIHRy YWNlYmFjayB3aXRoIHRoZSB0b3AgZnJhbWUKKyAgICAob3Vyc2VsdmVzKSBleGNsdWRlZC4iIiIK KyAgICAjIFdlIGNhbm5vdCB1c2UgcmVhbCBleGVjZmlsZSBzaW5jZSBpdCBoYXMgYSBidWcgd2hl cmUgdGhlIGZpbGUgc3RheXMKKyAgICAjIGxvY2tlZCBmb3JldmVyICh1bmRlciB3MzIpIGlmIFN5 bnRheEVycm9yIG9jY3Vycy4KKyAgICAjIC0tLSBjb2RlIGJhc2VkIG9uIGNvZGUucHkgYW5kIFB5 U2hlbGwucHkuCisgICAgdHJ5OgorICAgICAgICB0cnk6CisgICAgICAgICAgICBzb3VyY2UgPSBv cGVuIChmaWxlLCAiciIpLnJlYWQoKQorICAgICAgICAgICAgY29kZSA9IGNvbXBpbGUgKHNvdXJj ZSwgZmlsZSwgImV4ZWMiKQorICAgICAgICAjIE90aGVyIGV4Y2VwdGlvbnMgKHNob3VsZG4ndCBi ZSBhbnkuLi4pIHdpbGwgKGNvcnJlY3RseSkgZmFsbAorICAgICAgICAjIHRocm91Z2ggdG8gImZp bmFsIi4KKyAgICAgICAgZXhjZXB0IChPdmVyZmxvd0Vycm9yLCBTeW50YXhFcnJvciwgVmFsdWVF cnJvcik6CisgICAgICAgICAgICAjIEZJWE1FOiBXaGVuIGNhbiBjb21waWxlKCkgcmFpc2UgYW55 dGhpbmcgZWxzZSB0aGFuCisgICAgICAgICAgICAjIFN5bnRheEVycm9yID8/Pz8KKyAgICAgICAg ICAgIGZvcm1hdF9leGNlcHRpb24gKGZpbGUsIEZhbHNlKQorICAgICAgICAgICAgcmV0dXJuCisg ICAgICAgIHRyeToKKyAgICAgICAgICAgIGV4ZWMoY29kZSwgX19tYWluX18uX19kaWN0X18pCisg ICAgICAgIGV4Y2VwdDoKKyAgICAgICAgICAgIGZvcm1hdF9leGNlcHRpb24gKGZpbGUsIFRydWUp CisgICAgZmluYWxseToKKyAgICAgICAgb3MucmVtb3ZlIChmaWxlKQorCitkZWYgZWFyZ3MgKG5h bWUsIGltcG9ydHMpOgorICAgICJHZXQgYXJnbGlzdCBvZiBOQU1FIGZvciBFbGRvYyAmYy4iCisg ICAgdHJ5OgorICAgICAgICBpZiBpbXBvcnRzOiBleGVjKGltcG9ydHMpCisgICAgICAgIHBhcnRz ID0gbmFtZS5zcGxpdCAoJy4nKQorICAgICAgICBpZiBsZW4gKHBhcnRzKSA+IDE6CisgICAgICAg ICAgICBleGVjKCdpbXBvcnQgJyArIHBhcnRzWzBdKSAjIG1pZ2h0IGZhaWwKKyAgICAgICAgZnVu YyA9IGV2YWwgKG5hbWUpCisgICAgICAgIGlmIGluc3BlY3QuaXNidWlsdGluIChmdW5jKSBvciB0 eXBlKGZ1bmMpIGlzIHR5cGU6CisgICAgICAgICAgICBkb2MgPSBmdW5jLl9fZG9jX18KKyAgICAg ICAgICAgIGlmIGRvYy5maW5kICgnIC0+JykgIT0gLTE6CisgICAgICAgICAgICAgICAgcHJpbnQo J19lbWFjc19vdXQnLCBkb2Muc3BsaXQgKCcgLT4nKVswXSkKKyAgICAgICAgICAgIGVsc2U6Cisg ICAgICAgICAgICAgICAgcHJpbnQoJ19lbWFjc19vdXQnLCBkb2Muc3BsaXQgKCdcbicpWzBdKQor ICAgICAgICAgICAgcmV0dXJuCisgICAgICAgIGlmIGluc3BlY3QuaXNtZXRob2QgKGZ1bmMpOgor ICAgICAgICAgICAgZnVuYyA9IGZ1bmMuaW1fZnVuYworICAgICAgICBpZiBub3QgaW5zcGVjdC5p c2Z1bmN0aW9uIChmdW5jKToKKyAgICAgICAgICAgIHByaW50KCdfZW1hY3Nfb3V0ICcpCisgICAg ICAgICAgICByZXR1cm4KKyAgICAgICAgKGFyZ3MsIHZhcmFyZ3MsIHZhcmt3LCBkZWZhdWx0cykg PSBpbnNwZWN0LmdldGFyZ3NwZWMgKGZ1bmMpCisgICAgICAgICMgTm8gc3BhY2UgYmV0d2VlbiBu YW1lIGFuZCBhcmdsaXN0IGZvciBjb25zaXN0ZW5jeSB3aXRoIGJ1aWx0aW5zLgorICAgICAgICBw cmludCgnX2VtYWNzX291dCcsIFwKKyAgICAgICAgICAgIGZ1bmMuX19uYW1lX18gKyBpbnNwZWN0 LmZvcm1hdGFyZ3NwZWMgKGFyZ3MsIHZhcmFyZ3MsIHZhcmt3LAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdHMpKQorICAgIGV4Y2VwdDoK KyAgICAgICAgcHJpbnQoIl9lbWFjc19vdXQgIikKKworZGVmIGFsbF9uYW1lcyAob2JqZWN0KToK KyAgICAiIiJSZXR1cm4gKGFuIGFwcHJveGltYXRpb24gdG8pIGEgbGlzdCBvZiBhbGwgcG9zc2li bGUgYXR0cmlidXRlCisgICAgbmFtZXMgcmVhY2hhYmxlIHZpYSB0aGUgYXR0cmlidXRlcyBvZiBP QkpFQ1QsIGkuZS4gcm91Z2hseSB0aGUKKyAgICBsZWF2ZXMgb2YgdGhlIGRpY3Rpb25hcnkgdHJl ZSB1bmRlciBpdC4iIiIKKworICAgIGRlZiBkb19vYmplY3QgKG9iamVjdCwgbmFtZXMpOgorICAg ICAgICBpZiBpbnNwZWN0LmlzbW9kdWxlIChvYmplY3QpOgorICAgICAgICAgICAgZG9fbW9kdWxl IChvYmplY3QsIG5hbWVzKQorICAgICAgICBlbGlmIGluc3BlY3QuaXNjbGFzcyAob2JqZWN0KToK KyAgICAgICAgICAgIGRvX2NsYXNzIChvYmplY3QsIG5hbWVzKQorICAgICAgICAjIE1pZ2h0IGhh dmUgYW4gb2JqZWN0IHdpdGhvdXQgaXRzIGNsYXNzIGluIHNjb3BlLgorICAgICAgICBlbGlmIGhh c2F0dHIgKG9iamVjdCwgJ19fY2xhc3NfXycpOgorICAgICAgICAgICAgbmFtZXMuYWRkICgnX19j bGFzc19fJykKKyAgICAgICAgICAgIGRvX2NsYXNzIChvYmplY3QuX19jbGFzc19fLCBuYW1lcykK KyAgICAgICAgIyBQcm9iYWJseSBub3QgYSBnb29kIGlkZWEgdG8gdHJ5IHRvIGVudW1lcmF0ZSBh cmJpdHJhcnkKKyAgICAgICAgIyBkaWN0aW9uYXJpZXMuLi4KKyAgICAgICAgcmV0dXJuIG5hbWVz CisKKyAgICBkZWYgZG9fbW9kdWxlIChtb2R1bGUsIG5hbWVzKToKKyAgICAgICAgaWYgaGFzYXR0 ciAobW9kdWxlLCAnX19hbGxfXycpOiAjIGxpbWl0ZWQgZXhwb3J0IGxpc3QKKyAgICAgICAgICAg IG5hbWVzLnVwZGF0ZShtb2R1bGUuX19hbGxfXykKKyAgICAgICAgICAgIGZvciBpIGluIG1vZHVs ZS5fX2FsbF9fOgorICAgICAgICAgICAgICAgIGRvX29iamVjdCAoZ2V0YXR0ciAobW9kdWxlLCBp KSwgbmFtZXMpCisgICAgICAgIGVsc2U6ICAgICAgICAgICAgICAgICAgICMgdXNlIGFsbCBuYW1l cworICAgICAgICAgICAgbmFtZXMudXBkYXRlKGRpciAobW9kdWxlKSkKKyAgICAgICAgICAgIGZv ciBpIGluIGRpciAobW9kdWxlKToKKyAgICAgICAgICAgICAgICBkb19vYmplY3QgKGdldGF0dHIg KG1vZHVsZSwgaSksIG5hbWVzKQorICAgICAgICByZXR1cm4gbmFtZXMKKworICAgIGRlZiBkb19j bGFzcyAob2JqZWN0LCBuYW1lcyk6CisgICAgICAgIG5zID0gZGlyIChvYmplY3QpCisgICAgICAg IG5hbWVzLnVwZGF0ZShucykKKyAgICAgICAgaWYgaGFzYXR0ciAob2JqZWN0LCAnX19iYXNlc19f Jyk6ICMgc3VwZXJjbGFzc2VzCisgICAgICAgICAgICBmb3IgaSBpbiBvYmplY3QuX19iYXNlc19f OiBkb19vYmplY3QgKGksIG5hbWVzKQorICAgICAgICByZXR1cm4gbmFtZXMKKworICAgIHJldHVy biBkb19vYmplY3QgKG9iamVjdCwgc2V0KFtdKSkKKworZGVmIGNvbXBsZXRlIChuYW1lLCBpbXBv cnRzKToKKyAgICAiIiJDb21wbGV0ZSBURVhUIGluIE5BTUVTUEFDRSBhbmQgcHJpbnQgYSBMaXNw IGxpc3Qgb2YgY29tcGxldGlvbnMuCisgICAgRXhlYyBJTVBPUlRTIGZpcnN0LiIiIgorICAgIGlt cG9ydCBfX21haW5fXywga2V5d29yZAorCisgICAgZGVmIGNsYXNzX21lbWJlcnMob2JqZWN0KToK KyAgICAgICAgbmFtZXMgPSBkaXIgKG9iamVjdCkKKyAgICAgICAgaWYgaGFzYXR0ciAob2JqZWN0 LCAnX19iYXNlc19fJyk6CisgICAgICAgICAgICBmb3Igc3VwZXIgaW4gb2JqZWN0Ll9fYmFzZXNf XzoKKyAgICAgICAgICAgICAgICBuYW1lcyA9IGNsYXNzX21lbWJlcnMgKHN1cGVyKQorICAgICAg ICByZXR1cm4gbmFtZXMgICAgCisKKyAgICBuYW1lcyA9IHNldChbXSkKKyAgICBiYXNlID0gTm9u ZQorICAgIHRyeToKKyAgICAgICAgZGljdCA9IF9fbWFpbl9fLl9fZGljdF9fLmNvcHkoKQorICAg ICAgICBpZiBpbXBvcnRzOiBleGVjKGltcG9ydHMsIGRpY3QpCisgICAgICAgIGwgPSBsZW4gKG5h bWUpCisgICAgICAgIGlmIG5vdCAiLiIgaW4gbmFtZToKKyAgICAgICAgICAgIGZvciBzcmMgaW4g W2RpciAoX19idWlsdGluc19fKSwga2V5d29yZC5rd2xpc3QsIGxpc3QoZGljdC5rZXlzKCkpXToK KyAgICAgICAgICAgICAgICBmb3IgZWx0IGluIHNyYzoKKyAgICAgICAgICAgICAgICAgICAgaWYg ZWx0WzpsXSA9PSBuYW1lOiBuYW1lcy5hZGQoZWx0KQorICAgICAgICBlbHNlOgorICAgICAgICAg ICAgYmFzZSA9IG5hbWVbOm5hbWUucmZpbmQgKCcuJyldCisgICAgICAgICAgICBuYW1lID0gbmFt ZVtuYW1lLnJmaW5kKCcuJykrMTpdCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAg b2JqZWN0ID0gZXZhbCAoYmFzZSwgZGljdCkKKyAgICAgICAgICAgICAgICBuYW1lcyA9IHNldChk aXIgKG9iamVjdCkpCisgICAgICAgICAgICAgICAgaWYgaGFzYXR0ciAob2JqZWN0LCAnX19jbGFz c19fJyk6CisgICAgICAgICAgICAgICAgICAgIG5hbWVzLmFkZCgnX19jbGFzc19fJykKKyAgICAg ICAgICAgICAgICAgICAgbmFtZXMudXBkYXRlKGNsYXNzX21lbWJlcnMgKG9iamVjdCkpCisgICAg ICAgICAgICBleGNlcHQ6IG5hbWVzID0gYWxsX25hbWVzIChkaWN0KQorICAgIGV4Y2VwdDogCisg ICAgICAgIHByaW50KHN5cy5leGNfaW5mbygpKQorICAgICAgICBuYW1lcyA9IFtdCisgICAgICAg IAorICAgIGwgPSBsZW4obmFtZSkKKyAgICBwcmludCgnX2VtYWNzX291dCAoJywgZW5kPScgJykK KyAgICBmb3IgbiBpbiBuYW1lczoKKyAgICAgICAgaWYgbmFtZSA9PSBuWzpsXToKKyAgICAgICAg ICAgIGlmIGJhc2U6IHByaW50KCciJXMuJXMiJyAlIChiYXNlLCBuKSwgZW5kPScgJykKKyAgICAg ICAgICAgIGVsc2U6IHByaW50KCciJXMiJyAlIG4sIGVuZD0nICcpCisgICAgcHJpbnQoJyknKQor CitkZWYgZWhlbHAgKG5hbWUsIGltcG9ydHMpOgorICAgICIiIkdldCBoZWxwIG9uIHN0cmluZyBO QU1FLgorICAgIEZpcnN0IHRyeSB0byBldmFsIG5hbWUgZm9yLCBlLmcuIHVzZXIgZGVmaW5pdGlv bnMgd2hlcmUgd2UgbmVlZAorICAgIHRoZSBvYmplY3QuICBPdGhlcndpc2UgdHJ5IHRoZSBzdHJp bmcgZm9ybS4iIiIKKyAgICBsb2NscyA9IHt9CisgICAgaWYgaW1wb3J0czoKKyAgICAgICAgdHJ5 OiBleGVjKGltcG9ydHMsIGxvY2xzKQorICAgICAgICBleGNlcHQ6IHBhc3MKKyAgICB0cnk6IGhl bHAgKGV2YWwgKG5hbWUsIGdsb2JhbHMoKSwgbG9jbHMpKQorICAgIGV4Y2VwdDogaGVscCAobmFt ZSkKKworZGVmIGVpbXBvcnQgKG1vZCwgZGlyKToKKyAgICAiIiJJbXBvcnQgbW9kdWxlIE1PRCB3 aXRoIGRpcmVjdG9yeSBESVIgYXQgdGhlIGhlYWQgb2YgdGhlIHNlYXJjaCBwYXRoLgorICAgIE5C IGRvZXNuJ3QgbG9hZCBmcm9tIERJUiBpZiBNT0Qgc2hhZG93cyBhIHN5c3RlbSBtb2R1bGUuIiIi CisgICAgZnJvbSBfX21haW5fXyBpbXBvcnQgX19kaWN0X18KKworICAgIHBhdGgwID0gc3lzLnBh dGhbMF0KKyAgICBzeXMucGF0aFswXSA9IGRpcgorICAgIHRyeToKKyAgICAgICAgdHJ5OgorICAg ICAgICAgICAgaWYgbW9kIGluIF9fZGljdF9fIGFuZCBpbnNwZWN0LmlzbW9kdWxlIChfX2RpY3Rf X1ttb2RdKToKKyAgICAgICAgICAgICAgICByZWxvYWQgKF9fZGljdF9fW21vZF0pCisgICAgICAg ICAgICBlbHNlOgorICAgICAgICAgICAgICAgIF9fZGljdF9fW21vZF0gPSBfX2ltcG9ydF9fICht b2QpCisgICAgICAgIGV4Y2VwdDoKKyAgICAgICAgICAgICh0eXBlLCB2YWx1ZSwgdGIpID0gc3lz LmV4Y19pbmZvICgpCisgICAgICAgICAgICBwcmludCgiVHJhY2ViYWNrIChtb3N0IHJlY2VudCBj YWxsIGxhc3QpOiIpCisgICAgICAgICAgICB0cmFjZWJhY2sucHJpbnRfZXhjZXB0aW9uICh0eXBl LCB2YWx1ZSwgdGIudGJfbmV4dCkKKyAgICBmaW5hbGx5OgorICAgICAgICBzeXMucGF0aFswXSA9 IHBhdGgwCisKK2RlZiBtb2RwYXRoIChtb2R1bGUpOgorICAgICIiIlJldHVybiB0aGUgc291cmNl IGZpbGUgZm9yIHRoZSBnaXZlbiBNT0RVTEUgKG9yIE5vbmUpLgorQXNzdW1lcyB0aGF0IE1PRFVM RS5weSBhbmQgTU9EVUxFLnB5YyBhcmUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5LiIiIgorICAgIHRy eToKKyAgICAgICAgcGF0aCA9IF9faW1wb3J0X18gKG1vZHVsZSkuX19maWxlX18KKyAgICAgICAg aWYgcGF0aFstNDpdID09ICcucHljJyBhbmQgb3MucGF0aC5leGlzdHMgKHBhdGhbMDotMV0pOgor ICAgICAgICAgICAgcGF0aCA9IHBhdGhbOi0xXQorICAgICAgICBwcmludCgiX2VtYWNzX291dCIs IHBhdGgpCisgICAgZXhjZXB0OgorICAgICAgICBwcmludCgiX2VtYWNzX291dCAoKSIpCisKKyMg cHJpbnQgJ19lbWFjc19vaycgICAgICAgICAgICAgIyByZWFkeSBmb3IgaW5wdXQgYW5kIGNhbiBj YWxsIGNvbnRpbnVhdGlvbgorCisjIGFyY2gtdGFnOiBkOTA0MDhmMy05MGUyLTRkZTQtOTljMi02 ZWI5YzdiOWNhNDYKZGlmZiAtdXJOIGVtYWNzLTIyLjEvbGlzcC9wcm9nbW9kZXMvcHl0aG9uLmVs IGVtYWNzLTIyLjEtcHkzay9saXNwL3Byb2dtb2Rlcy9weXRob24uZWwKLS0tIGVtYWNzLTIyLjEv bGlzcC9wcm9nbW9kZXMvcHl0aG9uLmVsCTIwMDctMDUtMTQgMTU6NTY6MzAuMDAwMDAwMDAwICsw MTAwCisrKyBlbWFjcy0yMi4xLXB5M2svbGlzcC9wcm9nbW9kZXMvcHl0aG9uLmVsCTIwMDctMDYt MjIgMDc6MDE6MTkuMDAwMDAwMDAwICswMTAwCkBAIC0xMzY3LDcgKzEzNjcsNyBAQAogICAgICAg Ozsgc2VlbXMgd29ydGggcHV0dGluZyBpbiBhIHNlcGFyYXRlIGZpbGUsIGFuZCBpdCdzIHByb2Jh Ymx5IGNsZWFuZXIKICAgICAgIDs7IHRvIHB1dCBpdCBpbiBhIG1vZHVsZS4KICAgICAgIDs7IEVu c3VyZSB3ZSdyZSBhdCBhIHByb21wdCBiZWZvcmUgZG9pbmcgYW55dGhpbmcgZWxzZS4KLSAgICAg IChweXRob24tc2VuZC1yZWNlaXZlICJpbXBvcnQgZW1hY3M7IHByaW50ICdfZW1hY3Nfb3V0ICgp JyIpKSkKKyAgICAgIChweXRob24tc2VuZC1zdHJpbmcgImltcG9ydCBlbWFjcyIpKSkKICAgKGlm IChkZXJpdmVkLW1vZGUtcCAncHl0aG9uLW1vZGUpCiAgICAgICAoc2V0cSBweXRob24tYnVmZmVy IChkZWZhdWx0LXZhbHVlICdweXRob24tYnVmZmVyKSkpIDsgYnVmZmVyLWxvY2FsCiAgIDs7IFdp dGhvdXQgdGhpcywgaGVscCBvdXRwdXQgZ29lcyBpbnRvIHRoZSBpbmZlcmlvciBweXRob24gYnVm ZmVyIGlmCg== ------=_Part_12717_26801775.1189480951916 Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline _______________________________________________ Emacs-devel mailing list Emacs-devel@gnu.org http://lists.gnu.org/mailman/listinfo/emacs-devel ------=_Part_12717_26801775.1189480951916--