From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!.POSTED!not-for-mail From: Shuguang Sun Newsgroups: gmane.emacs.bugs Subject: bug#29833: icomplete re-build the completion table after each key press Date: Sat, 6 Jan 2018 15:27:27 +0800 Message-ID: References: NNTP-Posting-Host: blaine.gmane.org Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="001a1147a9f24834ba0562167fe3" X-Trace: blaine.gmane.org 1515223580 12304 195.159.176.226 (6 Jan 2018 07:26:20 GMT) X-Complaints-To: usenet@blaine.gmane.org NNTP-Posting-Date: Sat, 6 Jan 2018 07:26:20 +0000 (UTC) To: 29833@debbugs.gnu.org Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Sat Jan 06 08:26:16 2018 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by blaine.gmane.org with esmtp (Exim 4.84_2) (envelope-from ) id 1eXiro-0002Lv-6X for geb-bug-gnu-emacs@m.gmane.org; Sat, 06 Jan 2018 08:26:08 +0100 Original-Received: from localhost ([::1]:52559 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eXitn-0000dy-E6 for geb-bug-gnu-emacs@m.gmane.org; Sat, 06 Jan 2018 02:28:11 -0500 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:42395) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eXitf-0000dN-V2 for bug-gnu-emacs@gnu.org; Sat, 06 Jan 2018 02:28:05 -0500 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1eXite-0001aM-6a for bug-gnu-emacs@gnu.org; Sat, 06 Jan 2018 02:28:03 -0500 Original-Received: from debbugs.gnu.org ([208.118.235.43]:57079) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1eXitd-0001ZW-Ul for bug-gnu-emacs@gnu.org; Sat, 06 Jan 2018 02:28:02 -0500 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1eXitd-0007j4-OD for bug-gnu-emacs@gnu.org; Sat, 06 Jan 2018 02:28:01 -0500 X-Loop: help-debbugs@gnu.org Resent-From: Shuguang Sun Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sat, 06 Jan 2018 07:28:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 29833 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: X-Debbugs-Original-To: bug-gnu-emacs@gnu.org Original-Received: via spool by submit@debbugs.gnu.org id=B.151522366129672 (code B ref -1); Sat, 06 Jan 2018 07:28:01 +0000 Original-Received: (at submit) by debbugs.gnu.org; 6 Jan 2018 07:27:41 +0000 Original-Received: from localhost ([127.0.0.1]:37527 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1eXitJ-0007iV-Bx for submit@debbugs.gnu.org; Sat, 06 Jan 2018 02:27:41 -0500 Original-Received: from eggs.gnu.org ([208.118.235.92]:51050) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1eXitH-0007iJ-SJ for submit@debbugs.gnu.org; Sat, 06 Jan 2018 02:27:40 -0500 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1eXitB-0001Dr-4Y for submit@debbugs.gnu.org; Sat, 06 Jan 2018 02:27:34 -0500 Original-Received: from lists.gnu.org ([2001:4830:134:3::11]:50158) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.71) (envelope-from ) id 1eXitA-0001Db-R0 for submit@debbugs.gnu.org; Sat, 06 Jan 2018 02:27:33 -0500 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:42012) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eXit8-0000NC-SG for bug-gnu-emacs@gnu.org; Sat, 06 Jan 2018 02:27:32 -0500 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1eXit7-0001BE-4G for bug-gnu-emacs@gnu.org; Sat, 06 Jan 2018 02:27:30 -0500 Original-Received: from mail-qk0-x22f.google.com ([2607:f8b0:400d:c09::22f]:44288) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1eXit6-0001A5-PF for bug-gnu-emacs@gnu.org; Sat, 06 Jan 2018 02:27:29 -0500 Original-Received: by mail-qk0-x22f.google.com with SMTP id v188so8641711qkh.11 for ; Fri, 05 Jan 2018 23:27:28 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:in-reply-to:references:from:date:message-id:subject:to; bh=caerDesN+ZFAI4+5HkGxgQppa32AixqLjekHS1C3FYM=; b=muOtdUx0ZP2n2T/cBCljCP0PATCNtuvmCQ4svspKS/v/VXueUZg+z+MxMpIWaGP/jT BjMIKWYkP/2OGab8nxAXc/v7KUEVwn0kOnP6tTNJikUuhKQ5usb/6Xhl/ZqP+ZB0TAdZ lTEKA1UbhdZCgi1K+DIjpowEUaYHIjVJSWwd0WhtD4d2O2BbLXQuImMN9WEYpLTLHeiA K7s7QIO/i8rfzflLm7AYB11L/D0T8icJuN2OuIP1KsQip6nWEmCX7CydqGxUJtRZ6uV7 wkOqoVseBxv+zK0ZXBGL5y3GDlwcyB6WAmNCUjCyuDKNEySSyvUAKJ2fszMAMAagzZUm Eyzg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:in-reply-to:references:from:date :message-id:subject:to; bh=caerDesN+ZFAI4+5HkGxgQppa32AixqLjekHS1C3FYM=; b=bBor3Et4Jy6NYE2F1QasACfV6DTzRwfEg8s+DeQp3+X1T9CaOy/KoGnTbkZW6duXl9 wBdRFSr3iCk5On+wVBizu6FMpwQe3MWMnEQFJojYymZTJfcLHi87bRTpPocFVKcRkr3z KkMRzO0q2/JEilXyEIM7sxDd469ZMUlVtjHIGkAf8s4PG8lLThcvKEsxXI1sX6UlMA/K 6uok5AYleV2nJiTDF1Vh9bPnPhCDgN8xMTn64RiiKKe9uQGFh2eU7e+SFNd43Zfa4yJE za1r3aKBs1ILKv9+KRE1URiylrYZ1zPcgrD8LT0Hy0AhrIY0E7tstyDU88M4hSDRZCNl vJog== X-Gm-Message-State: AKwxyteQ/KAnTK7Ao8/yOMiqTFz9IdZmy2KBFpyD2JcKBkT0rN3TQEOw /87Afp0n4BpbCjFugLbWi6ziq8zi7ZzO64JFTyy6Ag== X-Google-Smtp-Source: ACJfBotzy4xmXC7xRDArN0mWtB/wUky32PTcb4l9fziLanJWuYPzDWonSHsYIIqqbrrLdu3rwy3l/yK4z8ac/puAbPw= X-Received: by 10.55.43.198 with SMTP id r67mr7334376qkr.292.1515223647767; Fri, 05 Jan 2018 23:27:27 -0800 (PST) Original-Received: by 10.237.43.166 with HTTP; Fri, 5 Jan 2018 23:27:27 -0800 (PST) In-Reply-To: X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6.x X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 208.118.235.43 X-BeenThere: bug-gnu-emacs@gnu.org List-Id: "Bug reports for GNU Emacs, the Swiss army knife of text editors" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Original-Sender: "bug-gnu-emacs" Xref: news.gmane.org gmane.emacs.bugs:141824 Archived-At: --001a1147a9f24834ba0562167fe3 Content-Type: multipart/alternative; boundary="001a1147a9f24834b70562167fe1" --001a1147a9f24834b70562167fe1 Content-Type: text/plain; charset="UTF-8" Dear Emacs developers: I tired to find out the issues and provide patches to minibuffer.el and icomplete.el. What is the issue? 1. The function completion--flush-all-sorted-completions defined in minibuffer.el is always called without parameters which make it flush the cached table every time. 2. The function completion--flush-all-sorted-completions is added to the hook of after-change-functions, however, (jit-lock-after-change t) in the hook will trigger flush every time 3. The local cached table completion-all-sorted-completions is not used actually. The minibuffer-completion-table is called in a lot of function which will rebuild the table instead of the chached table. It has small impact on the performance of 1. operation in memory, e.g., describe-variable, describe-function 2. filename in local driver/PC 3. filename in tramp where it works on the ls output instead of trying to re-do the ls command on the server Those operations are fast and time for fuctions symbolp and functionp is ignorable. However, if it works under some slow instance, for example, a mapped driver in Window with slow net work, the performance is bad as the completion tries to list the directory in each call of completion--do-completion and icomplete-completions, and some other completion functions. The patches try to use the cached table completion-all-sorted-completions-table as much as possible, and for filename completion, it caches the list of files in the base directory (file-name-directory). https://github.com/ShuguangSun/emacsimprovement/tree/master/bug%2329833 On Sun, Dec 24, 2017 at 4:58 PM, Shuguang Sun wrote: > Hi, > > The icomplete re-build the completion table 'completion-all-sorted-completions' > after each key press. However, I think it should keep the > 'completion-all-sorted-completions' builded at beging and re-use it > afterwise. > > At least in Windows, GNU Emacs 27.0.50 (build 1, x86_64-w64-mingw32) of > 2017-12-09. > > How to repeat it: > 1: emacs -q > 2: icomplete-mode (we can't find anything wired unless we call > dired-do-copy on a network-mapped remote file under a slow network) > 3: modify function icomplete-exhibit to log as below: > insert '(print completion-all-sorted-completions)' between > '(save-excursion (goto-char (point-max))' and '(if (and (or > icomplete-show-matches-on-no-input', and C-M-x. > Then it will print 'nil' after each key press which means > 'completion-all-sorted-completions' is empty. > 4. modify function icomplete-completions to log as below: > insert '(print completion-all-sorted-completions)' at the begining of > the function body, prior to "(let* ((minibuffer-completion-table > candidates)'. > Then it will print 'nil' after each key press which means > 'completion-all-sorted-completions' is empty. > > Thereby, it has to call "(comps (completion-all-sorted-completions > (icomplete--field-beg) (icomplete--field-end)))' in function > icomplete-completions to re-build the completiong table after each key > press. > > Thanks *Stefan Monnier *to point out it should be a bug in the help > maillist. > > By the way, '(sequencep (icomplete--completion-table))' in function > icomplete-exhibit always returns 'nil', and the icomplete-delay-completions-threshold > actually has no effect. > (print (icomplete--completion-table)) just returns the table name > (function to generate the table), but not the content of the table. > > By the way again, if call dired-do-copy or dired-do-rename, > icomplete-max-delay-chars counts the whole path of the file because, the > path has been put to the minibuffer automatically. This may not a bug, > however, I think it should be documented. > > > Best Regards, > Shuguang Sun > --001a1147a9f24834b70562167fe1 Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: quoted-printable
Dear Emacs developers:

I tir= ed to find out the issues and provide patches to minibuffer.el and icomplet= e.el.

What is the issue?
1. The function= completion--flush-all-sorted-completions defined in minibuffer.el is alway= s called without parameters which make it flush the cached table every time= .
2. The function completion--flush-all-sorted-completions is add= ed to the hook of after-change-functions, however, (jit-lock-after-change t= ) in the hook will trigger flush every time
3. The local cached t= able completion-all-sorted-completions is not used actually. The minibuffer= -completion-table is called in a lot of function which will rebuild the tab= le instead of the chached table.

It has small impa= ct on the performance of
1. operation in memory, e.g., descr= ibe-variable, describe-function
2. filename in local driver/P= C
3. filename in tramp where it works on the ls output instea= d of trying to re-do the ls command on the server
Those operation= s are fast and time for fuctions symbolp and functionp is ignorable.

However, if it works under some slow instance, for e= xample, a mapped driver in Window with slow net work, the performance is ba= d as the completion tries to list the directory in each call of completion-= -do-completion and icomplete-completions, and some other completion functio= ns.

The patches try to use the cached table comple= tion-all-sorted-completions-table as much as possible, and for filename com= pletion, it caches the list of files in the base directory (file-name-direc= tory).









On Sun, D= ec 24, 2017 at 4:58 PM, Shuguang Sun <shuguang@gmail.com> w= rote:
Hi,

The icomplete re-build the completion table 'completion= -all-sorted-completions' after each key press. However, I think it= should keep the 'completion-all-sorted-completions' builded a= t beging and re-use it afterwise.

At least in Wind= ows, GNU Emacs 27.0.50 (build 1, x86_64-w64-mingw32) of 2017-12-09.

How to repeat it:
1: emacs -q
2: = icomplete-mode (we can't find anything wired unless we call dired-do-co= py on a network-mapped remote file under a slow network)
3: m= odify function icomplete-exhibit to log as below:
=C2=A0=C2=A0=C2= =A0 insert '(print completion-all-sorted-completions)' between= '(save-excursion=C2=A0 (goto-char (point-max))' and '(if (and = (or icomplete-show-matches-on-no-input', and C-M-x.
=C2=A0=C2=A0=C2=A0 Then it will print 'nil' after each key press w= hich means 'completion-all-sorted-completions' is empty.
=
4. modify function icomplete-completions to log as below:
=C2=A0=C2=A0=C2=A0 insert '(print completion-all-sorted-complet= ions)' at the begining of the function body, prior to "(let* ((mi= nibuffer-completion-table candidates)'.
=C2=A0=C2=A0=C2= =A0 Then it will print 'nil' after each key press which means '= completion-all-sorted-completions' is empty.

<= div>Thereby, it has to call "(comps (completion-all-sorted-comple= tions=C2=A0=C2=A0=C2=A0=C2=A0 (icomplete--field-beg) (icomplete--field-end)= ))' in function icomplete-completions to re-build the completiong table= after each key press.

Thanks Stefan Monnier to point out it should be a bug in the help maillist.

By the way, '(sequencep (icomplete--completion-table))= ' in function icomplete-exhibit always returns 'nil', and = the icomplete-delay-completions-threshold actually has no effect.
=
(print (icomplete--completion-table)) just returns the table nam= e (function to generate the table), but not the content of the table.
=

By the way again, if call dired-do-copy or dired-do-ren= ame, icomplete-max-delay-chars counts the whole path of the file because, t= he path has been put to the minibuffer automatically. This may not a bug, h= owever, I think it should be documented.


Best Regards,
Shuguang Sun

--001a1147a9f24834b70562167fe1-- --001a1147a9f24834ba0562167fe3 Content-Type: application/octet-stream; name="minibuffer.el.patch" Content-Disposition: attachment; filename="minibuffer.el.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_jc31177h0 ZGlmZiAtLWdpdCBhL2xpc3AvbWluaWJ1ZmZlci5lbCBiL2xpc3AvbWluaWJ1ZmZlci5lbA0KaW5k ZXggNGQxNGIyNjQxZi4uYTkyMWRmZGJhNCAxMDA2NDQNCi0tLSBhL2xpc3AvbWluaWJ1ZmZlci5l bA0KKysrIGIvbGlzcC9taW5pYnVmZmVyLmVsDQpAQCAtMSw2ICsxLDYgQEANCiA7OzsgbWluaWJ1 ZmZlci5lbCAtLS0gTWluaWJ1ZmZlciBjb21wbGV0aW9uIGZ1bmN0aW9ucyAtKi0gbGV4aWNhbC1i aW5kaW5nOiB0IC0qLQ0KIA0KLTs7IENvcHlyaWdodCAoQykgMjAwOC0yMDE4IEZyZWUgU29mdHdh cmUgRm91bmRhdGlvbiwgSW5jLg0KKzs7IENvcHlyaWdodCAoQykgMjAwOC0yMDE3IEZyZWUgU29m dHdhcmUgRm91bmRhdGlvbiwgSW5jLg0KIA0KIDs7IEF1dGhvcjogU3RlZmFuIE1vbm5pZXIgPG1v bm5pZXJAaXJvLnVtb250cmVhbC5jYT4NCiA7OyBQYWNrYWdlOiBlbWFjcw0KQEAgLTk3Nyw2ICs5 NzcsMTAgQEAgY29tcGxldGlvbi0tcmVwbGFjZQ0KICAgICAodW5sZXNzICh6ZXJvcCBzdWZmaXgt bGVuKQ0KICAgICAgIChzZXRxIGVuZCAoLSBlbmQgc3VmZml4LWxlbikpDQogICAgICAgKHNldHEg bmV3dGV4dCAoc3Vic3RyaW5nIG5ld3RleHQgMCAoLSBzdWZmaXgtbGVuKSkpKQ0KKyAgICA7OyBB ZnRlciB0aGlzIGFtZW5kbWVudCwgdGhlIG5ld3RleHQgaGFzIG5vIGRpcmVjdG9yeQ0KKyAgICAo aWYgbWluaWJ1ZmZlci1jb21wbGV0aW5nLWZpbGUtbmFtZQ0KKyAgICAgICAgKHNldHEgbmV3dGV4 dCAoY29uY2F0IChmaWxlLW5hbWUtZGlyZWN0b3J5IChidWZmZXItc3Vic3RyaW5nLW5vLXByb3Bl cnRpZXMgYmVnIGVuZCkpIG5ld3RleHQpKQ0KKyAgICAgICAgKQ0KICAgICAoZ290by1jaGFyIGJl ZykNCiAgICAgKGxldCAoKGxlbmd0aCAoLSBlbmQgYmVnKSkpICAgICAgICAgO1JlYWQgYGVuZCcg YmVmb3JlIHdlIGluc2VydCB0aGUgdGV4dC4NCiAgICAgICAoaW5zZXJ0LWFuZC1pbmhlcml0IG5l d3RleHQpDQpAQCAtOTk5LDcgKzEwMDMsMTEgQEAgY29tcGxldGlvbi0tY3ljbGUtdGhyZXNob2xk DQogICAgICAgICAgKG92ZXIgKGNvbXBsZXRpb24tLWNhdGVnb3J5LW92ZXJyaWRlIGNhdCAnY3lj bGUpKSkNCiAgICAgKGlmIG92ZXIgKGNkciBvdmVyKSBjb21wbGV0aW9uLWN5Y2xlLXRocmVzaG9s ZCkpKQ0KIA0KLShkZWZ2YXItbG9jYWwgY29tcGxldGlvbi1hbGwtc29ydGVkLWNvbXBsZXRpb25z IG5pbCkNCis7OyBJZiB0aGVyZSBpcyBhIHByb3BlciBjb21wbGV0aW9uLWFsbC1zb3J0ZWQtY29t cGxldGlvbnMtdGFibGUsDQorOzsgZnVjdGlvbiBjb21wbGV0aW9uLWFsbC1zb3J0ZWQtY29tcGxl dGlvbnMgbmVlZHMgbm90IHRvIGJlIGNhbGxlZA0KKyhkZWZ2YXItbG9jYWwgY29tcGxldGlvbi1h bGwtc29ydGVkLWNvbXBsZXRpb25zLXRhYmxlIG5pbCkNCis7OyBUaGUgc3RyaW5nIHRvIGJ1aWxk IGNvbXBsZXRpb24tYWxsLXNvcnRlZC1jb21wbGV0aW9ucy10YWJsZQ0KKyhkZWZ2YXItbG9jYWwg Y29tcGxldGlvbi0tYWxsLXNvcnRlZC1jb21wbGV0aW9ucy1uYW1lIG5pbCkNCiAoZGVmdmFyLWxv Y2FsIGNvbXBsZXRpb24tLWFsbC1zb3J0ZWQtY29tcGxldGlvbnMtbG9jYXRpb24gbmlsKQ0KIChk ZWZ2YXIgY29tcGxldGlvbi1jeWNsaW5nIG5pbCkNCiANCkBAIC0xMDMwLDE1ICsxMDM4LDE4IEBA IGNvbXBsZXRpb24tLWRvLWNvbXBsZXRpb24NCiBUUlktQ09NUExFVElPTi1GVU5DVElPTiBpcyBh IGZ1bmN0aW9uIHRvIHVzZSBpbiBwbGFjZSBvZiBgdHJ5LWNvbXBsZXRpb24nLg0KIEVYUEVDVC1F WEFDVCwgaWYgbm9uLW5pbCwgbWVhbnMgdGhhdCB0aGVyZSBpcyBubyBuZWVkIHRvIHRlbGwgdGhl IHVzZXINCiB3aGVuIHRoZSBidWZmZXIncyB0ZXh0IGlzIGFscmVhZHkgYW4gZXhhY3QgbWF0Y2gu Ig0KLSAgKGxldCogKChzdHJpbmcgKGJ1ZmZlci1zdWJzdHJpbmcgYmVnIGVuZCkpDQorICAobGV0 KiAoKHN0cmluZyAoaWYgbWluaWJ1ZmZlci1jb21wbGV0aW5nLWZpbGUtbmFtZQ0KKyAgICAgICAg ICAgICAgICAgICAgIChmaWxlLW5hbWUtbm9uZGlyZWN0b3J5IChidWZmZXItc3Vic3RyaW5nLW5v LXByb3BlcnRpZXMgYmVnIGVuZCkpDQorICAgICAgICAgICAgICAgICAgIChidWZmZXItc3Vic3Ry aW5nLW5vLXByb3BlcnRpZXMgYmVnIGVuZCkpKQ0KICAgICAgICAgIChtZCAoY29tcGxldGlvbi0t ZmllbGQtbWV0YWRhdGEgYmVnKSkNCi0gICAgICAgICAoY29tcCAoZnVuY2FsbCAob3IgdHJ5LWNv bXBsZXRpb24tZnVuY3Rpb24NCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2NvbXBsZXRp b24tdHJ5LWNvbXBsZXRpb24pDQotICAgICAgICAgICAgICAgICAgICAgICAgc3RyaW5nDQotICAg ICAgICAgICAgICAgICAgICAgICAgbWluaWJ1ZmZlci1jb21wbGV0aW9uLXRhYmxlDQotICAgICAg ICAgICAgICAgICAgICAgICAgbWluaWJ1ZmZlci1jb21wbGV0aW9uLXByZWRpY2F0ZQ0KLSAgICAg ICAgICAgICAgICAgICAgICAgICgtIChwb2ludCkgYmVnKQ0KLSAgICAgICAgICAgICAgICAgICAg ICAgIG1kKSkpDQorICAgICAgICAgOzsgY29tcGxldGlvbi1hbGwtc29ydGVkLWNvbXBsZXRpb25z IHRha2VzIGNhcmUgYWJvdXQgdGhlIHByZWRpY3QNCisgICAgICAgICAoY29tcCAoY29tcGxldGlv bi10cnktY29tcGxldGlvbg0KKyAgICAgICAgICAgICAgICBzdHJpbmcNCisgICAgICAgICAgICAg ICAgKGNvbXBsZXRpb24tYWxsLXNvcnRlZC1jb21wbGV0aW9ucyBiZWcgZW5kKQ0KKyAgICAgICAg ICAgICAgICBuaWwNCisgICAgICAgICAgICAgICAgKGxlbmd0aCBzdHJpbmcpDQorICAgICAgICAg ICAgICAgIG1kKSkNCisgICAgICAgICApDQogICAgIChjb25kDQogICAgICAoKG51bGwgY29tcCkN CiAgICAgICAobWluaWJ1ZmZlci1oaWRlLWNvbXBsZXRpb25zKQ0KQEAgLTEwODAsOCArMTA5MSwx MyBAQCBjb21wbGV0aW9uLS1kby1jb21wbGV0aW9uDQogDQogICAgICAgICAgIDs7IEl0IGRpZCBm aW5kIGEgbWF0Y2guICBEbyB3ZSBtYXRjaCBzb21lIHBvc3NpYmlsaXR5IGV4YWN0bHkgbm93Pw0K ICAgICAgICAgICAobGV0KiAoKGV4YWN0ICh0ZXN0LWNvbXBsZXRpb24gY29tcGxldGlvbg0KLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWluaWJ1ZmZlci1jb21wbGV0 aW9uLXRhYmxlDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaW5p YnVmZmVyLWNvbXBsZXRpb24tcHJlZGljYXRlKSkNCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIChpZiAoY29uc3AgY29tcGxldGlvbi1hbGwtc29ydGVkLWNvbXBsZXRp b25zLXRhYmxlKQ0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGNvbXBsZXRpb24tYWxsLXNvcnRlZC1jb21wbGV0aW9ucy10YWJsZQ0KKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaW5pYnVmZmVyLWNvbXBsZXRpb24tdGFibGUN CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKQ0KKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGlmIChub3QgKGNvbnNwIGNvbXBsZXRp b24tYWxsLXNvcnRlZC1jb21wbGV0aW9ucy10YWJsZSkpDQorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgbWluaWJ1ZmZlci1jb21wbGV0aW9uLXByZWRpY2F0ZSkN CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICkpDQogICAgICAgICAg ICAgICAgICAodGhyZXNob2xkIChjb21wbGV0aW9uLS1jeWNsZS10aHJlc2hvbGQgbWQpKQ0KICAg ICAgICAgICAgICAgICAgKGNvbXBzDQogICAgICAgICAgICAgICAgICAgOzsgQ2hlY2sgdG8gc2Vl IGlmIHdlIHdhbnQgdG8gZG8gY3ljbGluZy4gIFdlIGRvIGl0DQpAQCAtMTA5NSwxMiArMTExMSwx NyBAQCBjb21wbGV0aW9uLS1kby1jb21wbGV0aW9uDQogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAob3IgKG5vdCBjb21wbGV0ZWQpDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKDwgKGNhciAoY29tcGxldGlvbi1ib3VuZGFyaWVzDQogICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKHN1YnN0cmluZyBjb21wbGV0aW9uIDAgY29tcC1wb3MpDQot ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWluaWJ1ZmZlci1jb21w bGV0aW9uLXRhYmxlDQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg bWluaWJ1ZmZlci1jb21wbGV0aW9uLXByZWRpY2F0ZQ0KKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIChpZiAoY29uc3AgY29tcGxldGlvbi1hbGwtc29ydGVkLWNvbXBs ZXRpb25zLXRhYmxlKQ0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBjb21wbGV0aW9uLWFsbC1zb3J0ZWQtY29tcGxldGlvbnMtdGFibGUNCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1pbmlidWZmZXItY29tcGxldGlvbi10 YWJsZQ0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKQ0KKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpZiAobm90IChjb25zcCBj b21wbGV0aW9uLWFsbC1zb3J0ZWQtY29tcGxldGlvbnMtdGFibGUpKQ0KKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaW5pYnVmZmVyLWNvbXBsZXRpb24tcHJl ZGljYXRlKQ0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiIpKQ0K ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcC1wb3MpKSkNCi0gICAgICAg ICAgICAgICAgICAgKGNvbXBsZXRpb24tYWxsLXNvcnRlZC1jb21wbGV0aW9ucyBiZWcgZW5kKSkp KQ0KLSAgICAgICAgICAgIChjb21wbGV0aW9uLS1mbHVzaC1hbGwtc29ydGVkLWNvbXBsZXRpb25z KQ0KKyAgICAgICAgICAgICAgICAgICAgKGNvbXBsZXRpb24tYWxsLXNvcnRlZC1jb21wbGV0aW9u cyBiZWcgZW5kKSkpKQ0KKyAgICAgICAgICAgIDs7IGl0IGlzIG5vdCBuZWNlc3NhcnkgdG8gZmx1 c2ggdGFibGVzIGZvciBlYWNoIGNhbGwNCisgICAgICAgICAgICA7OyAoY29tcGxldGlvbi0tZmx1 c2gtYWxsLXNvcnRlZC1jb21wbGV0aW9ucykNCiAgICAgICAgICAgICAoY29uZA0KICAgICAgICAg ICAgICAoKGFuZCAoY29uc3AgKGNkciBjb21wcykpIDs7IFRoZXJlJ3Mgc29tZXRoaW5nIHRvIGN5 Y2xlLg0KICAgICAgICAgICAgICAgICAgICAobm90IChpZ25vcmUtZXJyb3JzDQpAQCAtMTExMCw3 ICsxMTMxLDExIEBAIGNvbXBsZXRpb24tLWRvLWNvbXBsZXRpb24NCiAgICAgICAgICAgICAgIDs7 IE5vdCBtb3JlIHRoYW4gY29tcGxldGlvbi1jeWNsZS10aHJlc2hvbGQgcmVtYWluaW5nDQogICAg ICAgICAgICAgICA7OyBjb21wbGV0aW9uczogbGV0J3MgY3ljbGUuDQogICAgICAgICAgICAgICAo c2V0cSBjb21wbGV0ZWQgdCBleGFjdCB0KQ0KLSAgICAgICAgICAgICAgKGNvbXBsZXRpb24tLWNh Y2hlLWFsbC1zb3J0ZWQtY29tcGxldGlvbnMgYmVnIGVuZCBjb21wcykNCisgICAgICAgICAgICAg IDs7IEl0IGlzIG5vdCBuZWNlc3NhcnkgdG8gZmx1c2ggdGFibGVzIGZvciBlYWNoIGNhbGwNCisg ICAgICAgICAgICAgIDs7IFdvdWxkIGl0IGJlIG1vcmUgZWZmaWNpZW50IHRvIHJlcGxhY2UgdGhl IGNhY2hlZCB0YWJsZQ0KKyAgICAgICAgICAgICAgOzsgd2l0aCB0aGUgbmV3IHJlc3RyaWN0ZWQg b25lPw0KKyAgICAgICAgICAgICAgOzsgRm9yIGZpbGVuYW1lIGNvbXBsZXRpb24sIGl0IGlzIGJh c2VkIG9uIGJhc2UgZGlyZWN0b3J5Lg0KKyAgICAgICAgICAgICAgKGNvbXBsZXRpb24tYWxsLXNv cnRlZC1jb21wbGV0aW9ucyBiZWcgZW5kKQ0KICAgICAgICAgICAgICAgKG1pbmlidWZmZXItZm9y Y2UtY29tcGxldGUgYmVnIGVuZCkpDQogICAgICAgICAgICAgIChjb21wbGV0ZWQNCiAgICAgICAg ICAgICAgIDs7IFdlIGNvdWxkIGFsc28gZGVjaWRlIHRvIHJlZnJlc2ggdGhlIGNvbXBsZXRpb25z LA0KQEAgLTExNTksNyArMTE4NCw5IEBAIGNvbXBsZXRpb24tLWluLXJlZ2lvbi0xDQogICA7OyBt YXJrIHRoZSBjb21wbGV0aW9uIGJ1ZmZlciBvYnNvbGV0ZS4NCiAgIChzZXRxIHRoaXMtY29tbWFu ZCAnY29tcGxldGlvbi1hdC1wb2ludCkNCiAgICh1bmxlc3MgKGVxICdjb21wbGV0aW9uLWF0LXBv aW50IGxhc3QtY29tbWFuZCkNCi0gICAgKGNvbXBsZXRpb24tLWZsdXNoLWFsbC1zb3J0ZWQtY29t cGxldGlvbnMpDQorICAgIDs7IGZsdXNoIHdpdGggbm8gYXJncyB3aWxsIGFsd2F5cyBmbHVzaCB0 aGUgY29tcGxldGlvbiB0YWJsZQ0KKyAgICA7OyBub3QgbmVjZXNzYXJ5IHRvIGZsdXNoIGhlcmUN CisgICAgOzsgKGNvbXBsZXRpb24tLWZsdXNoLWFsbC1zb3J0ZWQtY29tcGxldGlvbnMpDQogICAg IChzZXRxIG1pbmlidWZmZXItc2Nyb2xsLXdpbmRvdyBuaWwpKQ0KIA0KICAgKGNvbmQNCkBAIC0x MTc3LDcgKzEyMDQsNyBAQCBjb21wbGV0aW9uLS1pbi1yZWdpb24tMQ0KIAkgICAgKHNjcm9sbC11 cCkpKQ0KICAgICAgICAgbmlsKSkpDQogICAgOzsgSWYgd2UncmUgY3ljbGluZywga2VlcCBvbiBj eWNsaW5nLg0KLSAgICgoYW5kIGNvbXBsZXRpb24tY3ljbGluZyBjb21wbGV0aW9uLWFsbC1zb3J0 ZWQtY29tcGxldGlvbnMpDQorICAgKChhbmQgY29tcGxldGlvbi1jeWNsaW5nIGNvbXBsZXRpb24t YWxsLXNvcnRlZC1jb21wbGV0aW9ucy10YWJsZSkNCiAgICAgKG1pbmlidWZmZXItZm9yY2UtY29t cGxldGUgYmVnIGVuZCkNCiAgICAgdCkNCiAgICAodCAocGNhc2UgKGNvbXBsZXRpb24tLWRvLWNv bXBsZXRpb24gYmVnIGVuZCkNCkBAIC0xMTg1LDIwICsxMjEyLDM5IEBAIGNvbXBsZXRpb24tLWlu LXJlZ2lvbi0xDQogICAgICAgICAoXyAgICAgdCkpKSkpDQogDQogKGRlZnVuIGNvbXBsZXRpb24t LWNhY2hlLWFsbC1zb3J0ZWQtY29tcGxldGlvbnMgKGJlZyBlbmQgY29tcHMpDQotICAoYWRkLWhv b2sgJ2FmdGVyLWNoYW5nZS1mdW5jdGlvbnMNCi0gICAgICAgICAgICAnY29tcGxldGlvbi0tZmx1 c2gtYWxsLXNvcnRlZC1jb21wbGV0aW9ucyBuaWwgdCkNCisgIDs7IFRoZSB2YWx1ZSBvZiBhZnRl ci1jaGFuZ2UtZnVuY3Rpb25zIGlzIChqaXQtbG9jay1hZnRlci1jaGFuZ2UgdCksDQorICA7OyBp dCBtYWtlcyB0aGUgZmx1c2ggY2FsbGVkIHdpdGhvdXQgcGFyYW1ldGVycyBldmVyeSB0aW1lDQor ICA7OyAoYWRkLWhvb2sgJ2FmdGVyLWNoYW5nZS1mdW5jdGlvbnMNCisgIDs7ICAgICAgICAgICAn Y29tcGxldGlvbi0tZmx1c2gtYWxsLXNvcnRlZC1jb21wbGV0aW9ucyBuaWwgdCkNCiAgIChzZXRx IGNvbXBsZXRpb24tLWFsbC1zb3J0ZWQtY29tcGxldGlvbnMtbG9jYXRpb24NCiAgICAgICAgIChj b25zIChjb3B5LW1hcmtlciBiZWcpIChjb3B5LW1hcmtlciBlbmQpKSkNCi0gIChzZXRxIGNvbXBs ZXRpb24tYWxsLXNvcnRlZC1jb21wbGV0aW9ucyBjb21wcykpDQorICA7OyBUaGUgc3RyaW5nIHRv IGJ1aWxkIHRoZSBjb21wbGV0aW9uIHRhYmxlDQorICAoc2V0cSBjb21wbGV0aW9uLS1hbGwtc29y dGVkLWNvbXBsZXRpb25zLW5hbWUNCisgICAgICAgIChpZiBtaW5pYnVmZmVyLWNvbXBsZXRpbmct ZmlsZS1uYW1lDQorICAgICAgICAgICAgKGZpbGUtbmFtZS1kaXJlY3RvcnkgKGJ1ZmZlci1zdWJz dHJpbmctbm8tcHJvcGVydGllcyBiZWcgZW5kKSkNCisgICAgICAgICAgKGJ1ZmZlci1zdWJzdHJp bmctbm8tcHJvcGVydGllcyBiZWcgZW5kKSkpDQorICAoc2V0cSBjb21wbGV0aW9uLWFsbC1zb3J0 ZWQtY29tcGxldGlvbnMtdGFibGUgY29tcHMpKQ0KIA0KIChkZWZ1biBjb21wbGV0aW9uLS1mbHVz aC1hbGwtc29ydGVkLWNvbXBsZXRpb25zICgmb3B0aW9uYWwgc3RhcnQgZW5kIF9sZW4pDQogICAo dW5sZXNzIChhbmQgc3RhcnQgZW5kDQotICAgICAgICAgICAgICAgKG9yICg+IHN0YXJ0IChjZHIg Y29tcGxldGlvbi0tYWxsLXNvcnRlZC1jb21wbGV0aW9ucy1sb2NhdGlvbikpDQotICAgICAgICAg ICAgICAgICAgICg8IGVuZCAoY2FyIGNvbXBsZXRpb24tLWFsbC1zb3J0ZWQtY29tcGxldGlvbnMt bG9jYXRpb24pKSkpDQorICAgICAgICAgICAgICAgY29tcGxldGlvbi0tYWxsLXNvcnRlZC1jb21w bGV0aW9ucy1sb2NhdGlvbg0KKyAgICAgICAgICAgICAgIGNvbXBsZXRpb24tLWFsbC1zb3J0ZWQt Y29tcGxldGlvbnMtbmFtZQ0KKyAgICAgICAgICAgICAgIDs7IG5vdCBzdXJlIHdoaWNoIGlzIG1v cmUgZWZmaWNpZW50IHRvIGNvbXBhcmUgbG9jYXRpb24gb3IgdGhlIHN0cmluZw0KKyAgICAgICAg ICAgICAgIChub3QgKG9yICg+IHN0YXJ0IChjZHIgY29tcGxldGlvbi0tYWxsLXNvcnRlZC1jb21w bGV0aW9ucy1sb2NhdGlvbikpDQorICAgICAgICAgICAgICAgICAgICAgICAgKDwgZW5kIChjYXIg Y29tcGxldGlvbi0tYWxsLXNvcnRlZC1jb21wbGV0aW9ucy1sb2NhdGlvbikpKSkNCisgICAgICAg ICAgICAgICAoaWYgbWluaWJ1ZmZlci1jb21wbGV0aW5nLWZpbGUtbmFtZQ0KKyAgICAgICAgICAg ICAgICAgICAobGV0ICgoc3RyYyAoY29tcGFyZS1zdHJpbmdzDQorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBjb21wbGV0aW9uLS1hbGwtc29ydGVkLWNvbXBsZXRpb25zLW5hbWUgbmls IG5pbA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZpbGUtbmFtZS1kaXJlY3Rv cnkgKGJ1ZmZlci1zdWJzdHJpbmctbm8tcHJvcGVydGllcyBzdGFydCBlbmQpKSBuaWwgbmlsIHQp KSkNCisgICAgICAgICAgICAgICAgICAgICAoZXEgdCBzdHJjKSkNCisgICAgICAgICAgICAgICAg IChlcSAwIChzdHJpbmctbWF0Y2gtcCAocmVnZXhwLXF1b3RlIGNvbXBsZXRpb24tLWFsbC1zb3J0 ZWQtY29tcGxldGlvbnMtbmFtZSkNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAoYnVmZmVyLXN1YnN0cmluZy1uby1wcm9wZXJ0aWVzIHN0YXJ0IGVuZCkpKQ0KKyAgICAg ICAgICAgICAgICAgKSkNCiAgICAgKHJlbW92ZS1ob29rICdhZnRlci1jaGFuZ2UtZnVuY3Rpb25z DQogICAgICAgICAgICAgICAgICAnY29tcGxldGlvbi0tZmx1c2gtYWxsLXNvcnRlZC1jb21wbGV0 aW9ucyB0KQ0KICAgICAoc2V0cSBjb21wbGV0aW9uLWN5Y2xpbmcgbmlsKQ0KLSAgICAoc2V0cSBj b21wbGV0aW9uLWFsbC1zb3J0ZWQtY29tcGxldGlvbnMgbmlsKSkpDQorICAgIChzZXRxIGNvbXBs ZXRpb24tLWFsbC1zb3J0ZWQtY29tcGxldGlvbnMtbmFtZSBuaWwpDQorICAgIChzZXRxIGNvbXBs ZXRpb24tYWxsLXNvcnRlZC1jb21wbGV0aW9ucy10YWJsZSBuaWwpKSkNCiANCiAoZGVmdW4gY29t cGxldGlvbi0tbWV0YWRhdGEgKHN0cmluZyBiYXNlIG1kLWF0LXBvaW50IHRhYmxlIHByZWQpDQog ICA7OyBMaWtlIGNvbXBsZXRpb24tbWV0YWRhdGEsIGJ1dCBmb3IgdGhlIHNwZWNpZmljIGNhc2Ug b2YgZ2V0dGluZyB0aGUNCkBAIC0xMjA5LDIxICsxMjU1LDQ2IEBAIGNvbXBsZXRpb24tLW1ldGFk YXRhDQogICAgICAgKGNvbXBsZXRpb24tbWV0YWRhdGEgKHN1YnN0cmluZyBzdHJpbmcgMCBiYXNl KSB0YWJsZSBwcmVkKSkpKQ0KIA0KIChkZWZ1biBjb21wbGV0aW9uLWFsbC1zb3J0ZWQtY29tcGxl dGlvbnMgKCZvcHRpb25hbCBzdGFydCBlbmQpDQotICAob3IgY29tcGxldGlvbi1hbGwtc29ydGVk LWNvbXBsZXRpb25zDQorDQorICA7OyBjb21wbGV0aW9uLS1mbHVzaC1hbGwtc29ydGVkLWNvbXBs ZXRpb25zIGlzIGFsd2F5cyBjYWxsZWQgd2l0aG91dCBhcmdzLi4uDQorICA7OyB3aGljaCBtZWFu cyBpdCB3aWxsIGFsd2F5cyBmbHVzaCB0aGUgY29tcGxldGlvbiB0YWJsZQ0KKyAgOzsgdGhlcmVm b3JlLCBuZWVkIHRvIHRha2UgY2FyZSBhYm91dCBpdCBvdXQgdGhlcmUNCisgICh1bmxlc3MgKGFu ZCBzdGFydCBlbmQNCisgICAgICAgICAgICAgICBjb21wbGV0aW9uLS1hbGwtc29ydGVkLWNvbXBs ZXRpb25zLWxvY2F0aW9uDQorICAgICAgICAgICAgICAgY29tcGxldGlvbi0tYWxsLXNvcnRlZC1j b21wbGV0aW9ucy1uYW1lDQorICAgICAgICAgICAgICAgOzsgbm90IHN1cmUgd2hpY2ggaXMgbW9y ZSBzdWZmaWNpZW50LCB0byBjb21wYXJlIGxvY2F0aW9uIG9yIHN0cmluZw0KKyAgICAgICAgICAg ICAgIChub3QgKG9yICg+IHN0YXJ0IChjZHIgY29tcGxldGlvbi0tYWxsLXNvcnRlZC1jb21wbGV0 aW9ucy1sb2NhdGlvbikpDQorICAgICAgICAgICAgICAgICAgICAgICAgKDwgZW5kIChjYXIgY29t cGxldGlvbi0tYWxsLXNvcnRlZC1jb21wbGV0aW9ucy1sb2NhdGlvbikpKSkNCisgICAgICAgICAg ICAgICAoaWYgbWluaWJ1ZmZlci1jb21wbGV0aW5nLWZpbGUtbmFtZQ0KKyAgICAgICAgICAgICAg ICAgICAobGV0ICgoc3RyYyAoY29tcGFyZS1zdHJpbmdzDQorICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBjb21wbGV0aW9uLS1hbGwtc29ydGVkLWNvbXBsZXRpb25zLW5hbWUgbmlsIG5p bA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZpbGUtbmFtZS1kaXJlY3Rvcnkg KGJ1ZmZlci1zdWJzdHJpbmctbm8tcHJvcGVydGllcyBzdGFydCBlbmQpKSBuaWwgbmlsIHQpKSkN CisgICAgICAgICAgICAgICAgICAgICAoZXEgdCBzdHJjKSkNCisgICAgICAgICAgICAgICAgIChl cSAwIChzdHJpbmctbWF0Y2gtcCAocmVnZXhwLXF1b3RlIGNvbXBsZXRpb24tLWFsbC1zb3J0ZWQt Y29tcGxldGlvbnMtbmFtZSkNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAoYnVmZmVyLXN1YnN0cmluZy1uby1wcm9wZXJ0aWVzIHN0YXJ0IGVuZCkpKQ0KKyAgICAgICAg ICAgICAgICAgKSkNCisgICAgICAgIChjb21wbGV0aW9uLS1mbHVzaC1hbGwtc29ydGVkLWNvbXBs ZXRpb25zKQ0KKyAgICApDQorDQorICAob3IgY29tcGxldGlvbi1hbGwtc29ydGVkLWNvbXBsZXRp b25zLXRhYmxlDQogICAgICAgKGxldCogKChzdGFydCAob3Igc3RhcnQgKG1pbmlidWZmZXItcHJv bXB0LWVuZCkpKQ0KICAgICAgICAgICAgICAoZW5kIChvciBlbmQgKHBvaW50LW1heCkpKQ0KLSAg ICAgICAgICAgICAoc3RyaW5nIChidWZmZXItc3Vic3RyaW5nIHN0YXJ0IGVuZCkpDQorICAgICAg ICAgICAgIChzdHJpbmcgKGlmIG1pbmlidWZmZXItY29tcGxldGluZy1maWxlLW5hbWUNCisgICAg ICAgICAgICAgICAgICAgICAgICAgOzsgSXQgYnVpbGRzIHRoZSBjb21wbGV0aW9uIGxpc3Qgb24g dGhlIGRpcmVjdG9yeSwgaW5zdGVhZCB0aGUgc3Vic3RyaW5nDQorICAgICAgICAgICAgICAgICAg ICAgICAgIDs7IG5vdCBzdXJlIHdoaWNoIG9uZSBpcyBtb3JlIGVmZmVjaWVudA0KKyAgICAgICAg ICAgICAgICAgICAgICAgICAoZmlsZS1uYW1lLWRpcmVjdG9yeSAoYnVmZmVyLXN1YnN0cmluZy1u by1wcm9wZXJ0aWVzIHN0YXJ0IGVuZCkpDQorICAgICAgICAgICAgICAgICAgICAgICAoYnVmZmVy LXN1YnN0cmluZy1uby1wcm9wZXJ0aWVzIHN0YXJ0IGVuZCkpKQ0KICAgICAgICAgICAgICAobWQg KGNvbXBsZXRpb24tLWZpZWxkLW1ldGFkYXRhIHN0YXJ0KSkNCiAgICAgICAgICAgICAgKGFsbCAo Y29tcGxldGlvbi1hbGwtY29tcGxldGlvbnMNCiAgICAgICAgICAgICAgICAgICAgc3RyaW5nDQog ICAgICAgICAgICAgICAgICAgIG1pbmlidWZmZXItY29tcGxldGlvbi10YWJsZQ0KICAgICAgICAg ICAgICAgICAgICBtaW5pYnVmZmVyLWNvbXBsZXRpb24tcHJlZGljYXRlDQotICAgICAgICAgICAg ICAgICAgICgtIChwb2ludCkgc3RhcnQpDQorICAgICAgICAgICAgICAgICAgIChsZW5ndGggc3Ry aW5nKQ0KICAgICAgICAgICAgICAgICAgICBtZCkpDQogICAgICAgICAgICAgIChsYXN0IChsYXN0 IGFsbCkpDQogICAgICAgICAgICAgIChiYXNlLXNpemUgKG9yIChjZHIgbGFzdCkgMCkpDQotICAg ICAgICAgICAgIChhbGwtbWQgKGNvbXBsZXRpb24tLW1ldGFkYXRhIChidWZmZXItc3Vic3RyaW5n LW5vLXByb3BlcnRpZXMNCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHN0YXJ0IChwb2ludCkpDQorICAgICAgICAgICAgIDs7IHByZWRpY3QgYW5kIG1ldGF0ZGF0 YSB3b3JrcyBoZXJlDQorICAgICAgICAgICAgIChhbGwtbWQgKGNvbXBsZXRpb24tLW1ldGFkYXRh IHN0cmluZw0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYXNl LXNpemUgbWQNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWlu aWJ1ZmZlci1jb21wbGV0aW9uLXRhYmxlDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIG1pbmlidWZmZXItY29tcGxldGlvbi1wcmVkaWNhdGUpKQ0KQEAgLTEyNTIs NiArMTMyMyw0MiBAQCBjb21wbGV0aW9uLWFsbC1zb3J0ZWQtY29tcGxldGlvbnMNCiAgICAgICAg ICAgKGNvbXBsZXRpb24tLWNhY2hlLWFsbC1zb3J0ZWQtY29tcGxldGlvbnMNCiAgICAgICAgICAg IHN0YXJ0IGVuZCAobmNvbmMgYWxsIGJhc2Utc2l6ZSkpKSkpKQ0KIA0KKzs7IFRoaXMgb25lIGFj Y2VwdGFibGUgY2FjaGVkIHRhYmxlLg0KKzs7IEl0IGNvdWxkIGJlIG1hZGUgaW50byBmdW5jdGlv biBjb21wbGV0aW9uLWFsbC1zb3J0ZWQtY29tcGxldGlvbnMNCisoZGVmdW4gY29tcGxldGlvbi0t YWxsLXNvcnRlZC1jb21wbGV0aW9ucyAoc3RhcnQgbmFtZSB0YWJsZSkNCisNCisgIChsZXQqICgo bWQgKGNvbXBsZXRpb24tLWZpZWxkLW1ldGFkYXRhIHN0YXJ0KSkNCisgICAgICAgICAoYWxsIChj b21wbGV0aW9uLWFsbC1jb21wbGV0aW9ucw0KKyAgICAgICAgICAgICAgIG5hbWUgdGFibGUgbmls IChsZW5ndGggbmFtZSkgbWQpKQ0KKyAgICAgICAgIChsYXN0IChsYXN0IGFsbCkpDQorICAgICAg ICAgKGJhc2Utc2l6ZSAob3IgKGNkciBsYXN0KSAwKSkNCisgICAgICAgICAoYWxsLW1kIChjb21w bGV0aW9uLS1tZXRhZGF0YSBuYW1lDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgYmFzZS1zaXplIG1kDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgdGFibGUNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuaWwpKQ0K KyAgICAgICAgIChzb3J0LWZ1biAoY29tcGxldGlvbi1tZXRhZGF0YS1nZXQgYWxsLW1kICdjeWNs ZS1zb3J0LWZ1bmN0aW9uKSkpDQorDQorICAgICh3aGVuIGxhc3QNCisgICAgICAoc2V0Y2RyIGxh c3QgbmlsKQ0KKw0KKyAgICAgIDs7IERlbGV0ZSBkdXBsaWNhdGVzOiBkbyBpdCBhZnRlciBzZXR0 aW5nIGxhc3QncyBjZHIgdG8gbmlsIChzbw0KKyAgICAgIDs7IGl0J3MgYSBwcm9wZXIgbGlzdCks IGFuZCBiZSBjYXJlZnVsIHRvIHJlc2V0IGBsYXN0JyBzaW5jZSBpdA0KKyAgICAgIDs7IG1heSBi ZSBhIGRpZmZlcmVudCBjb25zLWNlbGwuDQorICAgICAgKHNldHEgYWxsIChkZWxldGUtZHVwcyBh bGwpKQ0KKyAgICAgIChzZXRxIGxhc3QgKGxhc3QgYWxsKSkNCisNCisgICAgICAoc2V0cSBhbGwg KGlmIHNvcnQtZnVuIChmdW5jYWxsIHNvcnQtZnVuIGFsbCkNCisgICAgICAgICAgICAgICAgICA7 OyBQcmVmZXIgc2hvcnRlciBjb21wbGV0aW9ucywgYnkgZGVmYXVsdC4NCisgICAgICAgICAgICAg ICAgICAoc29ydCBhbGwgKGxhbWJkYSAoYzEgYzIpICg8IChsZW5ndGggYzEpIChsZW5ndGggYzIp KSkpKSkNCisgICAgICA7OyBQcmVmZXIgcmVjZW50bHkgdXNlZCBjb21wbGV0aW9ucy4NCisgICAg ICAod2hlbiAobWluaWJ1ZmZlcnApDQorICAgICAgICAobGV0ICgoaGlzdCAoc3ltYm9sLXZhbHVl IG1pbmlidWZmZXItaGlzdG9yeS12YXJpYWJsZSkpKQ0KKyAgICAgICAgICAoc2V0cSBhbGwgKHNv cnQgYWxsIChsYW1iZGEgKGMxIGMyKQ0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg KD4gKGxlbmd0aCAobWVtYmVyIGMxIGhpc3QpKQ0KKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKGxlbmd0aCAobWVtYmVyIGMyIGhpc3QpKSkpKSkpKQ0KKyAgICAgICkpKQ0KKw0K Kw0KIChkZWZ1biBtaW5pYnVmZmVyLWZvcmNlLWNvbXBsZXRlLWFuZC1leGl0ICgpDQogICAiQ29t cGxldGUgdGhlIG1pbmlidWZmZXIgd2l0aCBmaXJzdCBvZiB0aGUgbWF0Y2hlcyBhbmQgZXhpdC4i DQogICAoaW50ZXJhY3RpdmUpDQpAQCAtMTI5Myw3ICsxNDAwLDcgQEAgbWluaWJ1ZmZlci1mb3Jj ZS1jb21wbGV0ZQ0KICAgICAgIChzZXRxIHRoaXMtY29tbWFuZCAnY29tcGxldGlvbi1hdC1wb2lu dCkgO0ZvciBjb21wbGV0aW9uLWluLXJlZ2lvbi4NCiAgICAgICA7OyBJZiBjb21wbGV0aW5nIGZp bGUgbmFtZXMsIChjYXIgYWxsKSBtYXkgYmUgYSBkaXJlY3RvcnksIHNvIHdlJ2Qgbm93DQogICAg ICAgOzsgaGF2ZSBhIG5ldyBzZXQgb2YgcG9zc2libGUgY29tcGxldGlvbnMgYW5kIG1pZ2h0IHdh bnQgdG8gcmVzZXQNCi0gICAgICA7OyBjb21wbGV0aW9uLWFsbC1zb3J0ZWQtY29tcGxldGlvbnMg dG8gbmlsLCBidXQgd2UgcHJlZmVyIG5vdCB0bywNCisgICAgICA7OyBjb21wbGV0aW9uLWFsbC1z b3J0ZWQtY29tcGxldGlvbnMtdGFibGUgdG8gbmlsLCBidXQgd2UgcHJlZmVyIG5vdCB0bywNCiAg ICAgICA7OyBzbyB0aGF0IHJlcGVhdGVkIGNhbGxzIG1pbmlidWZmZXItZm9yY2UtY29tcGxldGUg c3RpbGwgY3ljbGUNCiAgICAgICA7OyB0aHJvdWdoIHRoZSBwcmV2aW91cyBwb3NzaWJsZSBjb21w bGV0aW9ucy4NCiAgICAgICAobGV0ICgobGFzdCAobGFzdCBhbGwpKSkNCkBAIC0xNzg3LDEzICsx ODk0LDIzIEBAIG1pbmlidWZmZXItY29tcGxldGlvbi1oZWxwDQogICAobWVzc2FnZSAiTWFraW5n IGNvbXBsZXRpb24gbGlzdC4uLiIpDQogICAobGV0KiAoKHN0YXJ0IChvciBzdGFydCAobWluaWJ1 ZmZlci1wcm9tcHQtZW5kKSkpDQogICAgICAgICAgKGVuZCAob3IgZW5kIChwb2ludC1tYXgpKSkN CisgICAgICAgICA7OyBEb2VzIGl0IG5lZWQgdG8ga2VlcCB0aGUgdGV4dCBwcm9wZXJ0aWVzPw0K ICAgICAgICAgIChzdHJpbmcgKGJ1ZmZlci1zdWJzdHJpbmcgc3RhcnQgZW5kKSkNCisgICAgICAg ICAoc3RyaW5nIChpZiBtaW5pYnVmZmVyLWNvbXBsZXRpbmctZmlsZS1uYW1lDQorICAgICAgICAg ICAgICAgICAgICAgKGZpbGUtbmFtZS1ub25kaXJlY3RvcnkgKGJ1ZmZlci1zdWJzdHJpbmctbm8t cHJvcGVydGllcyBzdGFydCBlbmQpKQ0KKyAgICAgICAgICAgICAgICAgICAoYnVmZmVyLXN1YnN0 cmluZy1uby1wcm9wZXJ0aWVzIHN0YXJ0IGVuZCkpKQ0KICAgICAgICAgIChtZCAoY29tcGxldGlv bi0tZmllbGQtbWV0YWRhdGEgc3RhcnQpKQ0KICAgICAgICAgIChjb21wbGV0aW9ucyAoY29tcGxl dGlvbi1hbGwtY29tcGxldGlvbnMNCiAgICAgICAgICAgICAgICAgICAgICAgIHN0cmluZw0KLSAg ICAgICAgICAgICAgICAgICAgICAgbWluaWJ1ZmZlci1jb21wbGV0aW9uLXRhYmxlDQotICAgICAg ICAgICAgICAgICAgICAgICBtaW5pYnVmZmVyLWNvbXBsZXRpb24tcHJlZGljYXRlDQotICAgICAg ICAgICAgICAgICAgICAgICAoLSAocG9pbnQpIHN0YXJ0KQ0KKyAgICAgICAgICAgICAgICAgICAg ICAgOzsgSWYgdGhlcmUgaXMgY2FjaGVkIHRhYmxlLCB1c2luZyB0aGUgdGFibGUNCisgICAgICAg ICAgICAgICAgICAgICAgIChpZiAoY29uc3AgY29tcGxldGlvbi1hbGwtc29ydGVkLWNvbXBsZXRp b25zLXRhYmxlKQ0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBsZXRpb24tYWxsLXNv cnRlZC1jb21wbGV0aW9ucy10YWJsZQ0KKyAgICAgICAgICAgICAgICAgICAgICAgICBtaW5pYnVm ZmVyLWNvbXBsZXRpb24tdGFibGUNCisgICAgICAgICAgICAgICAgICAgICAgICAgKQ0KKyAgICAg ICAgICAgICAgICAgICAgICAgKGlmIChjb25zcCBjb21wbGV0aW9uLWFsbC1zb3J0ZWQtY29tcGxl dGlvbnMtdGFibGUpDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgbmlsDQorICAgICAgICAg ICAgICAgICAgICAgICAgIG1pbmlidWZmZXItY29tcGxldGlvbi1wcmVkaWNhdGUpDQorICAgICAg ICAgICAgICAgICAgICAgICAobGVuZ3RoIHN0cmluZykNCiAgICAgICAgICAgICAgICAgICAgICAg IG1kKSkpDQogICAgIChtZXNzYWdlIG5pbCkNCiAgICAgKGlmIChvciAobnVsbCBjb21wbGV0aW9u cykNCkBAIC0xODEwLDExICsxOTI3LDE5IEBAIG1pbmlidWZmZXItY29tcGxldGlvbi1oZWxwDQog ICAgICAgKGxldCogKChsYXN0IChsYXN0IGNvbXBsZXRpb25zKSkNCiAgICAgICAgICAgICAgKGJh c2Utc2l6ZSAob3IgKGNkciBsYXN0KSAwKSkNCiAgICAgICAgICAgICAgKHByZWZpeCAodW5sZXNz ICh6ZXJvcCBiYXNlLXNpemUpIChzdWJzdHJpbmcgc3RyaW5nIDAgYmFzZS1zaXplKSkpDQotICAg ICAgICAgICAgIChhbGwtbWQgKGNvbXBsZXRpb24tLW1ldGFkYXRhIChidWZmZXItc3Vic3RyaW5n LW5vLXByb3BlcnRpZXMNCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHN0YXJ0IChwb2ludCkpDQorICAgICAgICAgICAgIChzdHJpbmcyIChpZiBtaW5pYnVmZmVy LWNvbXBsZXRpbmctZmlsZS1uYW1lDQorICAgICAgICAgICAgICAgICAgICAgICAgICAoZmlsZS1u YW1lLW5vbmRpcmVjdG9yeSAoYnVmZmVyLXN1YnN0cmluZy1uby1wcm9wZXJ0aWVzIHN0YXJ0IChw b2ludCkpKQ0KKyAgICAgICAgICAgICAgICAgICAgICAgIChidWZmZXItc3Vic3RyaW5nLW5vLXBy b3BlcnRpZXMgc3RhcnQgKHBvaW50KSkpKQ0KKyAgICAgICAgICAgICAoYWxsLW1kIChjb21wbGV0 aW9uLS1tZXRhZGF0YSBzdHJpbmcyDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGJhc2Utc2l6ZSBtZA0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBtaW5pYnVmZmVyLWNvbXBsZXRpb24tdGFibGUNCi0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgbWluaWJ1ZmZlci1jb21wbGV0aW9uLXByZWRpY2F0 ZSkpDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChpZiAoY29u c3AgY29tcGxldGlvbi1hbGwtc29ydGVkLWNvbXBsZXRpb25zLXRhYmxlKQ0KKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcGxldGlvbi1hbGwtc29ydGVk LWNvbXBsZXRpb25zLXRhYmxlDQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgbWluaWJ1ZmZlci1jb21wbGV0aW9uLXRhYmxlDQorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKQ0KKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAoaWYgKGNvbnNwIGNvbXBsZXRpb24tYWxsLXNvcnRlZC1jb21wbGV0 aW9ucy10YWJsZSkNCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIG5pbA0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1p bmlidWZmZXItY29tcGxldGlvbi1wcmVkaWNhdGUpDQorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICkpDQogICAgICAgICAgICAgIChhZnVuIChvciAoY29tcGxldGlv bi1tZXRhZGF0YS1nZXQgYWxsLW1kICdhbm5vdGF0aW9uLWZ1bmN0aW9uKQ0KICAgICAgICAgICAg ICAgICAgICAgICAgKHBsaXN0LWdldCBjb21wbGV0aW9uLWV4dHJhLXByb3BlcnRpZXMNCiAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOmFubm90YXRpb24tZnVuY3Rpb24pDQo= --001a1147a9f24834ba0562167fe3 Content-Type: application/octet-stream; name="icomplete.el.patch" Content-Disposition: attachment; filename="icomplete.el.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_jc31178o1 ZGlmZiAtLWdpdCBhL2xpc3AvaWNvbXBsZXRlLmVsIGIvbGlzcC9pY29tcGxldGUuZWwNCmluZGV4 IGIzN2RiODg2OWIuLjNmOWI0OGIzYzMgMTAwNjQ0DQotLS0gYS9saXNwL2ljb21wbGV0ZS5lbA0K KysrIGIvbGlzcC9pY29tcGxldGUuZWwNCkBAIC0xLDYgKzEsNiBAQA0KIDs7OyBpY29tcGxldGUu ZWwgLS0tIG1pbmlidWZmZXIgY29tcGxldGlvbiBpbmNyZW1lbnRhbCBmZWVkYmFjaw0KIA0KLTs7 IENvcHlyaWdodCAoQykgMTk5Mi0xOTk0LCAxOTk3LCAxOTk5LCAyMDAxLTIwMTggRnJlZSBTb2Z0 d2FyZQ0KKzs7IENvcHlyaWdodCAoQykgMTk5Mi0xOTk0LCAxOTk3LCAxOTk5LCAyMDAxLTIwMTcg RnJlZSBTb2Z0d2FyZQ0KIDs7IEZvdW5kYXRpb24sIEluYy4NCiANCiA7OyBBdXRob3I6IEtlbiBN YW5oZWltZXIgPGtsbUBpLmFtPg0KQEAgLTM4Nyw3ICszODcsMTEgQEAgaWNvbXBsZXRlLWNvbXBs ZXRpb25zDQogICAgICAgKGlmIGxhc3QgKHNldGNkciBsYXN0IG5pbCkpDQogICAgICAgKHdoZW4g KGFuZCBtaW5pYnVmZmVyLWNvbXBsZXRpbmctZmlsZS1uYW1lDQogICAgICAgICAgICAgICAgICBp Y29tcGxldGUtd2l0aC1jb21wbGV0aW9uLXRhYmxlcykNCi0gICAgICAgIChzZXRxIGNvbXBzIChj b21wbGV0aW9uLXBjbS0tZmlsZW5hbWUtdHJ5LWZpbHRlciBjb21wcykpKQ0KKyAgICAgICAgKHNl dHEgY29tcHMgKGNvbXBsZXRpb24tcGNtLS1maWxlbmFtZS10cnktZmlsdGVyIGNvbXBzKSkNCisg ICAgICAgIDs7IG5vIGRpcmVjdG9yeQ0KKyAgICAgICAgKHNldHEgbmFtZSAoZmlsZS1uYW1lLW5v bmRpcmVjdG9yeSBuYW1lKSkpDQorICAgICAgOzsgZ2V0IGFsbCBjb21wbGV0aW9ucyBpbiBjYWNo ZWQgdGFibGUNCisgICAgICAoc2V0cSBjb21wcyAoY29tcGxldGlvbi0tYWxsLXNvcnRlZC1jb21w bGV0aW9ucyAoaWNvbXBsZXRlLS1maWVsZC1iZWcpIG5hbWUgY29tcHMpKQ0KICAgICAgIChsZXQq ICgobW9zdC10cnkNCiAgICAgICAgICAgICAgIChpZiAoYW5kIGJhc2Utc2l6ZSAoPiBiYXNlLXNp emUgMCkpDQogICAgICAgICAgICAgICAgICAgKGNvbXBsZXRpb24tdHJ5LWNvbXBsZXRpb24NCg== --001a1147a9f24834ba0562167fe3--