From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Vivek Dasmohapatra Newsgroups: gmane.emacs.devel Subject: hexl mode update Date: Sat, 7 Feb 2009 01:20:43 +0000 (GMT) Message-ID: NNTP-Posting-Host: lo.gmane.org Mime-Version: 1.0 Content-Type: MULTIPART/MIXED; BOUNDARY="8323328-766893094-1233969643=:8051" X-Trace: ger.gmane.org 1234005969 27678 80.91.229.12 (7 Feb 2009 11:26:09 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Sat, 7 Feb 2009 11:26:09 +0000 (UTC) To: Lennart Borgman Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Sat Feb 07 12:27:21 2009 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 1LVlJ7-00052o-Te for ged-emacs-devel@m.gmane.org; Sat, 07 Feb 2009 12:27:19 +0100 Original-Received: from localhost ([127.0.0.1]:52065 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1LVlHo-0003Bv-0u for ged-emacs-devel@m.gmane.org; Sat, 07 Feb 2009 06:23:48 -0500 Original-Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1LVlGx-0002di-A3 for emacs-devel@gnu.org; Sat, 07 Feb 2009 06:22:55 -0500 Original-Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1LVlGw-0002dF-14 for emacs-devel@gnu.org; Sat, 07 Feb 2009 06:22:54 -0500 Original-Received: from [199.232.76.173] (port=36041 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1LVlGv-0002dA-KX for emacs-devel@gnu.org; Sat, 07 Feb 2009 06:22:53 -0500 Original-Received: from batfish.pepperfish.net ([87.237.62.180]:48526 helo=flounder.pepperfish.net) by monty-python.gnu.org with esmtps (TLS-1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.60) (envelope-from ) id 1LVlGu-0003Qr-CO for emacs-devel@gnu.org; Sat, 07 Feb 2009 06:22:53 -0500 Original-Received: from [213.165.225.94] (helo=[192.168.0.5]) by flounder.pepperfish.net with esmtpsa (Exim 4.68 #1 (Debian)) id 1LVlGl-0004PQ-16 for ; Sat, 07 Feb 2009 11:22:45 +0000 X-X-Sender: vivek@localhost ReSent-Date: Sat, 7 Feb 2009 11:21:39 +0000 (GMT) ReSent-From: Vivek Dasmohapatra ReSent-To: emacs-devel@gnu.org ReSent-Subject: hexl mode update ReSent-Message-ID: X-detected-operating-system: by monty-python.gnu.org: GNU/Linux 2.6 (newer, 1) 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:108853 Archived-At: --8323328-766893094-1233969643=:8051 Content-Type: TEXT/PLAIN; charset=US-ASCII; format=flowed This patch should apply cleanly to the current head of hexl.el, I've included a copy of hexl.el with the patch applied. It allows hexl.el to take advantage of the fact that the hexl binary can emit hexlified data with varying word sizes. I originally did this work in emacs21 for an arm linux kernel hacker I know, I guess it might be useful to others. It didn't get into emacs22 because emacs22 was about to go out and new features were not being accepted. hexl.el doesn't appear to have changed much between 22 and 23, so hopefully it can be considered for inclusion this time around. --8323328-766893094-1233969643=:8051 Content-Type: TEXT/PLAIN; charset=US-ASCII; name=hexl.el Content-Transfer-Encoding: BASE64 Content-ID: Content-Description: Content-Disposition: attachment; filename=hexl.el Ozs7IGhleGwuZWwgLS0tIGVkaXQgYSBmaWxlIGluIGEgaGV4IGR1bXAgZm9y bWF0IHVzaW5nIHRoZSBoZXhsIGZpbHRlcg0KDQo7OyBDb3B5cmlnaHQgKEMp IDE5ODksIDE5OTQsIDE5OTgsIDIwMDEsIDIwMDIsIDIwMDMsIDIwMDQsDQo7 OyAgIDIwMDUsIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDkgRnJlZSBTb2Z0d2Fy ZSBGb3VuZGF0aW9uLCBJbmMuDQoNCjs7IEF1dGhvcjogS2VpdGggR2Ficnll bHNraSA8YWdAd2hlYXRpZXMuYWkubWl0LmVkdT4NCjs7IE1haW50YWluZXI6 IEZTRg0KOzsgS2V5d29yZHM6IGRhdGENCg0KOzsgVGhpcyBmaWxlIGlzIHBh cnQgb2YgR05VIEVtYWNzLg0KDQo7OyBHTlUgRW1hY3MgaXMgZnJlZSBzb2Z0 d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQ0K OzsgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJs aWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkNCjs7IHRoZSBGcmVlIFNvZnR3 YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vu c2UsIG9yDQo7OyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9u Lg0KDQo7OyBHTlUgRW1hY3MgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUg dGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwNCjs7IGJ1dCBXSVRIT1VUIEFOWSBX QVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9m DQo7OyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNV TEFSIFBVUlBPU0UuICBTZWUgdGhlDQo7OyBHTlUgR2VuZXJhbCBQdWJsaWMg TGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLg0KDQo7OyBZb3Ugc2hvdWxkIGhh dmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMg TGljZW5zZQ0KOzsgYWxvbmcgd2l0aCBHTlUgRW1hY3MuICBJZiBub3QsIHNl ZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uDQoNCjs7OyBDb21t ZW50YXJ5Og0KDQo7OyBUaGlzIHBhY2thZ2UgaW1wbGVtZW50cyBhIG1ham9y IG1vZGUgZm9yIGVkaXRpbmcgYmluYXJ5IGZpbGVzLiAgSXQgdXNlcw0KOzsg YSBwcm9ncmFtIGNhbGxlZCBoZXhsLCBzdXBwbGllZCB3aXRoIHRoZSBHTlUg RW1hY3MgZGlzdHJpYnV0aW9uLCB0aGF0DQo7OyBjYW4gZmlsdGVyIGEgYmlu YXJ5IGludG8gYW4gZWRpdGFibGUgZm9ybWF0IG9yIGZyb20gdGhlIGZvcm1h dCBiYWNrIGludG8NCjs7IGJpbmFyeS4gIEZvciBmdWxsIGluc3RydWN0aW9u cywgaW52b2tlIGBoZXhsLW1vZGUnIG9uIGFuIGVtcHR5IGJ1ZmZlciBhbmQN Cjs7IGRvIE0teCBgZGVzY3JpYmUtbW9kZScuDQo7Ow0KOzsgTk9URTogUmVt ZW1iZXIgdG8gY2hhbmdlIGBoZXhsLXByb2dyYW0nIG9yIGBoZXhsLW9wdGlv bnMnIGlmIG5lZWRlZC4NCjs7DQo7OyBDdXJyZW50bHkgaGV4bCBvbmx5IHN1 cHBvcnRzIGJpZyBlbmRpYW4gaGV4IG91dHB1dCB3aXRoIDE2IGJpdA0KOzsg Z3JvdXBpbmcuDQo7Ow0KOzsgLWlzbyBpbiBgaGV4bC1vcHRpb25zJyB3aWxs IGFsbG93IGlzbyBjaGFyYWN0ZXJzIHRvIGRpc3BsYXkgaW4gdGhlDQo7OyBB U0NJSSByZWdpb24gb2YgdGhlIHNjcmVlbiAoaWYgeW91ciBFbWFjcyBzdXBw b3J0cyB0aGlzKSBpbnN0ZWFkIG9mDQo7OyBjaGFuZ2luZyB0aGVtIHRvIGRv dHMuDQoNCjs7OyBDb2RlOg0KDQoocmVxdWlyZSAnZWxkb2MpDQoNCjs7DQo7 OyB2YXJzIGhlcmUNCjs7DQoNCihkZWZncm91cCBoZXhsIG5pbA0KICAiRWRp dCBhIGZpbGUgaW4gYSBoZXggZHVtcCBmb3JtYXQgdXNpbmcgdGhlIGhleGwg ZmlsdGVyLiINCiAgOmdyb3VwICdkYXRhKQ0KDQooZGVmY3VzdG9tIGhleGwt Yml0cyAxNg0KICAiVGhlIGJpdCBncm91cGluZyB0aGF0IGhleGwgd2lsbCB1 c2UiDQogIDp0eXBlICcoY2hvaWNlIChjb25zdCA4ICkNCiAgICAgICAgICAg ICAgICAgKGNvbnN0IDE2KQ0KICAgICAgICAgICAgICAgICAoY29uc3QgMzIp DQogICAgICAgICAgICAgICAgIChjb25zdCA2NCkpDQogIDpncm91cCAnaGV4 bCkNCg0KKGRlZmN1c3RvbSBoZXhsLXByb2dyYW0gImhleGwiDQogICJUaGUg cHJvZ3JhbSB0aGF0IHdpbGwgaGV4bGlmeSBhbmQgZGVoZXhsaWZ5IGl0cyBz dGRpbi4NCmBoZXhsLXByb2dyYW0nIHdpbGwgYWx3YXlzIGJlIGNvbmNhdGVu YXRlZCB3aXRoIGBoZXhsLW9wdGlvbnMnDQphbmQgXCItZGVcIiB3aGVuIGRl aGV4bGlmeWluZyBhIGJ1ZmZlci4iDQogIDp0eXBlICdzdHJpbmcNCiAgOmdy b3VwICdoZXhsKQ0KDQooZGVmY3VzdG9tIGhleGwtaXNvICIiDQogICJJZiB5 b3VyIEVtYWNzIGNhbiBoYW5kbGUgSVNPIGNoYXJhY3RlcnMsIHRoaXMgc2hv dWxkIGJlIHNldCB0bw0KXCItaXNvXCIgb3RoZXJ3aXNlIGl0IHNob3VsZCBi ZSBcIlwiLiINCiAgOnR5cGUgJ3N0cmluZw0KICA6Z3JvdXAgJ2hleGwpDQoN CihkZWZjdXN0b20gaGV4bC1vcHRpb25zIChmb3JtYXQgIi1oZXggJXMiIGhl eGwtaXNvKQ0KICAiU3BhY2Ugc2VwYXJhdGVkIG9wdGlvbnMgdG8gYGhleGwt cHJvZ3JhbScgdGhhdCBzdWl0IHlvdXIgbmVlZHMuDQpRdW90aW5nIGNhbm5v dCBiZSB1c2VkLCBzbyB0aGUgYXJndW1lbnRzIGNhbm5vdCB0aGVtc2VsdmVz IGNvbnRhaW4gc3BhY2VzLiINCiAgOnR5cGUgJ3N0cmluZw0KICA6Z3JvdXAg J2hleGwpDQoNCihkZWZjdXN0b20gaGV4bC1mb2xsb3ctYXNjaWkgdA0KICAi SWYgbm9uLW5pbCB0aGVuIGhpZ2hsaWdodCB0aGUgQVNDSUkgY2hhcmFjdGVy IGNvcnJlc3BvbmRpbmcgdG8gcG9pbnQuIg0KICA6dHlwZSAnYm9vbGVhbg0K ICA6Z3JvdXAgJ2hleGwNCiAgOnZlcnNpb24gIjIwLjMiKQ0KDQooZGVmY3Vz dG9tIGhleGwtbW9kZS1ob29rICcoaGV4bC1mb2xsb3ctbGluZSBoZXhsLWFj dGl2YXRlLXJ1bGVyKQ0KICAiTm9ybWFsIGhvb2sgcnVuIHdoZW4gZW50ZXJp bmcgSGV4bCBtb2RlLiINCiAgOnR5cGUgJ2hvb2sNCiAgOm9wdGlvbnMgJyho ZXhsLWZvbGxvdy1saW5lIGhleGwtYWN0aXZhdGUtcnVsZXIgdHVybi1vbi1l bGRvYy1tb2RlKQ0KICA6Z3JvdXAgJ2hleGwpDQoNCihkZWZmYWNlIGhleGwt YWRkcmVzcy1yZWdpb24NCiAgJygodCAoOmluaGVyaXQgaGVhZGVyLWxpbmUp KSkNCiAgIkZhY2UgdXNlZCBpbiBhZGRyZXNzIGFyZWEgb2YgaGV4bC1tb2Rl IGJ1ZmZlci4iDQogIDpncm91cCAnaGV4bCkNCg0KKGRlZmZhY2UgaGV4bC1h c2NpaS1yZWdpb24NCiAgJygodCAoOmluaGVyaXQgaGVhZGVyLWxpbmUpKSkN CiAgIkZhY2UgdXNlZCBpbiBhc2NpaSBhcmVhIG9mIGhleGwtbW9kZSBidWZm ZXIuIg0KICA6Z3JvdXAgJ2hleGwpDQoNCihkZWZ2YXIgaGV4bC1tYXgtYWRk cmVzcyAwDQogICJNYXhpbXVtIG9mZnNldCBpbnRvIGhleGwgYnVmZmVyLiIp DQoNCihkZWZ2YXIgaGV4bC1tb2RlLW1hcCBuaWwpDQoNCjs7IFZhcmlhYmxl IGRlY2xhcmF0aW9ucyBmb3Igc3VwcHJlc3Npbmcgd2FybmluZ3MgZnJvbSB0 aGUgYnl0ZS1jb21waWxlci4NCihkZWZ2YXIgcnVsZXItbW9kZSkNCihkZWZ2 YXIgcnVsZXItbW9kZS1ydWxlci1mdW5jdGlvbikNCihkZWZ2YXIgaGwtbGlu ZS1tb2RlKQ0KKGRlZnZhciBobC1saW5lLXJhbmdlLWZ1bmN0aW9uKQ0KKGRl ZnZhciBobC1saW5lLWZhY2UpDQoNCjs7IFZhcmlhYmxlcyB3aGVyZSB0aGUg b3JpZ2luYWwgdmFsdWVzIGFyZSBzdG9yZWQgdG8uDQooZGVmdmFyIGhleGwt bW9kZS1vbGQtaGwtbGluZS1tb2RlKQ0KKGRlZnZhciBoZXhsLW1vZGUtb2xk LWhsLWxpbmUtcmFuZ2UtZnVuY3Rpb24pDQooZGVmdmFyIGhleGwtbW9kZS1v bGQtaGwtbGluZS1mYWNlKQ0KKGRlZnZhciBoZXhsLW1vZGUtb2xkLWxvY2Fs LW1hcCkNCihkZWZ2YXIgaGV4bC1tb2RlLW9sZC1tb2RlLW5hbWUpDQooZGVm dmFyIGhleGwtbW9kZS1vbGQtbWFqb3ItbW9kZSkNCihkZWZ2YXIgaGV4bC1t b2RlLW9sZC1ydWxlci1tb2RlKQ0KKGRlZnZhciBoZXhsLW1vZGUtb2xkLXJ1 bGVyLWZ1bmN0aW9uKQ0KKGRlZnZhciBoZXhsLW1vZGUtb2xkLWlzZWFyY2gt c2VhcmNoLWZ1bi1mdW5jdGlvbikNCihkZWZ2YXIgaGV4bC1tb2RlLW9sZC1y ZXF1aXJlLWZpbmFsLW5ld2xpbmUpDQooZGVmdmFyIGhleGwtbW9kZS1vbGQt c3ludGF4LXRhYmxlKQ0KKGRlZnZhciBoZXhsLW1vZGUtb2xkLWZvbnQtbG9j ay1rZXl3b3JkcykNCihkZWZ2YXIgaGV4bC1tb2RlLW9sZC1lbGRvYy1kb2N1 bWVudGF0aW9uLWZ1bmN0aW9uKQ0KDQooZGVmdmFyIGhleGwtYXNjaWktb3Zl cmxheSBuaWwNCiAgIk92ZXJsYXkgdXNlZCB0byBoaWdobGlnaHQgQVNDSUkg ZWxlbWVudCBjb3JyZXNwb25kaW5nIHRvIGN1cnJlbnQgcG9pbnQuIikNCiht YWtlLXZhcmlhYmxlLWJ1ZmZlci1sb2NhbCAnaGV4bC1hc2NpaS1vdmVybGF5 KQ0KDQooZGVmdmFyIGhleGwtZm9udC1sb2NrLWtleXdvcmRzDQogICcoKCJe XFwoWzAtOWEtZl0rOlxcKS5cXHs0MFxcfSAgXFwoLiskXFwpIg0KICAgICA7 OyAiXlxcKFswLTlhLWZdKzpcXCkuKyAgXFwoLiskXFwpIg0KICAgICAoMSAn aGV4bC1hZGRyZXNzLXJlZ2lvbiB0IHQpDQogICAgICgyICdoZXhsLWFzY2lp LXJlZ2lvbiB0IHQpKSkNCiAgIkZvbnQgbG9jayBrZXl3b3JkcyB1c2VkIGlu IGBoZXhsLW1vZGUnLiIpDQoNCjs7IHJvdXRpbmVzDQoNCihwdXQgJ2hleGwt bW9kZSAnbW9kZS1jbGFzcyAnc3BlY2lhbCkNCg0KOzsgMTAgY2hhcnMgZm9y IHRoZSAiYWRkcmVzczogIg0KOzsgMzIgY2hhcnMgZm9yIHRoZSBoZXhsaWZp ZWQgYnl0ZXMNCjs7IDEgY2hhciBmb3IgdGhlIHNwYWNlIA0KOzsgMTYgY2hh cnMgZm9yIHRoZSBjaGFyYWN0ZXIgZGlzcGxheQ0KOzsgWCBjaGFycyBmb3Ig dGhlIHNwYWNlcyAoMTI4IGJpdHMgZGl2aWRlZCBieSB0aGUgaGV4bC1iaXRz KQ0KOzsgMSBjaGFyIGZvciB0aGUgbmV3bGluZS4NCihkZWZ1biBoZXhsLWxp bmUtZGlzcGxlbiAoKQ0KICAoKyA2MCAoLyAxMjggKG9yIGhleGwtYml0cyAx NikpKSkNCg0KOzs7IyMjYXV0b2xvYWQNCihkZWZ1biBoZXhsLW1vZGUgKCZv cHRpb25hbCBhcmcpDQogICJcXDxoZXhsLW1vZGUtbWFwPkEgbW9kZSBmb3Ig ZWRpdGluZyBiaW5hcnkgZmlsZXMgaW4gaGV4IGR1bXAgZm9ybWF0Lg0KVGhp cyBpcyBub3QgYW4gb3JkaW5hcnkgbWFqb3IgbW9kZTsgaXQgYWx0ZXJzIHNv bWUgYXNwZWN0cw0Kb2YgdGhlIGN1cnJlbnQgbW9kZSdzIGJlaGF2aW9yLCBi dXQgbm90IGFsbDsgYWxzbywgeW91IGNhbiBleGl0DQpIZXhsIG1vZGUgYW5k IHJldHVybiB0byB0aGUgcHJldmlvdXMgbW9kZSB1c2luZyBgaGV4bC1tb2Rl LWV4aXQnLg0KDQpUaGlzIGZ1bmN0aW9uIGF1dG9tYXRpY2FsbHkgY29udmVy dHMgYSBidWZmZXIgaW50byB0aGUgaGV4bCBmb3JtYXQNCnVzaW5nIHRoZSBm dW5jdGlvbiBgaGV4bGlmeS1idWZmZXInLg0KDQpFYWNoIGxpbmUgaW4gdGhl IGJ1ZmZlciBoYXMgYW4gXCJhZGRyZXNzXCIgKGRpc3BsYXllZCBpbiBoZXhh ZGVjaW1hbCkNCnJlcHJlc2VudGluZyB0aGUgb2Zmc2V0IGludG8gdGhlIGZp bGUgdGhhdCB0aGUgY2hhcmFjdGVycyBvbiB0aGlzIGxpbmUNCmFyZSBhdCBh bmQgMTYgY2hhcmFjdGVycyBmcm9tIHRoZSBmaWxlIChkaXNwbGF5ZWQgYXMg aGV4YWRlY2ltYWwNCnZhbHVlcyBncm91cGVkIGV2ZXJ5IDE2IGJpdHMpIGFu ZCBhcyB0aGVpciBBU0NJSSB2YWx1ZXMuDQoNCklmIGFueSBvZiB0aGUgY2hh cmFjdGVycyAoZGlzcGxheWVkIGFzIEFTQ0lJIGNoYXJhY3RlcnMpIGFyZQ0K dW5wcmludGFibGUgKGNvbnRyb2wgb3IgbWV0YSBjaGFyYWN0ZXJzKSB0aGV5 IHdpbGwgYmUgcmVwbGFjZWQgYXMNCnBlcmlvZHMuDQoNCklmIGBoZXhsLW1v ZGUnIGlzIGludm9rZWQgd2l0aCBhbiBhcmd1bWVudCB0aGUgYnVmZmVyIGlz IGFzc3VtZWQgdG8gYmUNCmluIGhleGwgZm9ybWF0Lg0KDQpBIHNhbXBsZSBm b3JtYXQ6DQoNCiAgSEVYIEFERFI6IDAwMDEgMDIwMyAwNDA1IDA2MDcgMDgw OSAwYTBiIDBjMGQgMGUwZiAgICAgQVNDSUktVEVYVA0KICAtLS0tLS0tLSAg LS0tLSAtLS0tIC0tLS0gLS0tLSAtLS0tIC0tLS0gLS0tLSAtLS0tICAtLS0t LS0tLS0tLS0tLS0tDQogIDAwMDAwMDAwOiA1NDY4IDY5NzMgMjA2OSA3MzIw IDY4NjUgNzg2YyAyZDZkIDZmNjQgIFRoaXMgaXMgaGV4bC1tb2QNCiAgMDAw MDAwMTA6IDY1MmUgMjAyMCA0NTYxIDYzNjggMjA2YyA2OTZlIDY1MjAgNzI2 NSAgZS4gIEVhY2ggbGluZSByZQ0KICAwMDAwMDAyMDogNzA3MiA2NTczIDY1 NmUgNzQ3MyAyMDMxIDM2MjAgNjI3OSA3NDY1ICBwcmVzZW50cyAxNiBieXRl DQogIDAwMDAwMDMwOiA3MzIwIDYxNzMgMjA2OCA2NTc4IDYxNjQgNjU2MyA2 OTZkIDYxNmMgIHMgYXMgaGV4YWRlY2ltYWwNCiAgMDAwMDAwNDA6IDIwNDEg NTM0MyA0OTQ5IDBhNjEgNmU2NCAyMDcwIDcyNjkgNmU3NCAgIEFTQ0lJLmFu ZCBwcmludA0KICAwMDAwMDA1MDogNjE2MiA2YzY1IDIwNDEgNTM0MyA0OTQ5 IDIwNjMgNjg2MSA3MjYxICBhYmxlIEFTQ0lJIGNoYXJhDQogIDAwMDAwMDYw OiA2Mzc0IDY1NzIgNzMyZSAyMDIwIDQxNmUgNzkyMCA2MzZmIDZlNzQgIGN0 ZXJzLiAgQW55IGNvbnQNCiAgMDAwMDAwNzA6IDcyNmYgNmMyMCA2ZjcyIDIw NmUgNmY2ZSAyZDQxIDUzNDMgNDk0OSAgcm9sIG9yIG5vbi1BU0NJSQ0KICAw MDAwMDA4MDogMjA2MyA2ODYxIDcyNjEgNjM3NCA2NTcyIDczMGEgNjE3MiA2 NTIwICAgY2hhcmFjdGVycy5hcmUNCiAgMDAwMDAwOTA6IDY0NjkgNzM3MCA2 YzYxIDc5NjUgNjQyMCA2MTczIDIwNzAgNjU3MiAgZGlzcGxheWVkIGFzIHBl cg0KICAwMDAwMDBhMDogNjk2ZiA2NDczIDIwNjkgNmUyMCA3NDY4IDY1MjAg NzA3MiA2OTZlICBpb2RzIGluIHRoZSBwcmluDQogIDAwMDAwMGIwOiA3NDYx IDYyNmMgNjUyMCA2MzY4IDYxNzIgNjE2MyA3NDY1IDcyMjAgIHRhYmxlIGNo YXJhY3Rlcg0KICAwMDAwMDBjMDogNzI2NSA2NzY5IDZmNmUgMmUwYSAgICAg ICAgICAgICAgICAgICAgICByZWdpb24uLg0KDQpNb3ZlbWVudCBpcyBhcyBz aW1wbGUgYXMgbW92ZW1lbnQgaW4gYSBub3JtYWwgRW1hY3MgdGV4dCBidWZm ZXIuICBNb3N0DQpjdXJzb3IgbW92ZW1lbnQgYmluZGluZ3MgYXJlIHRoZSBz YW1lIChpZS4gVXNlIFxcW2hleGwtYmFja3dhcmQtY2hhcl0sIFxcW2hleGwt Zm9yd2FyZC1jaGFyXSwgXFxbaGV4bC1uZXh0LWxpbmVdLCBhbmQgXFxbaGV4 bC1wcmV2aW91cy1saW5lXQ0KdG8gbW92ZSB0aGUgY3Vyc29yIGxlZnQsIHJp Z2h0LCBkb3duLCBhbmQgdXApLg0KDQpBZHZhbmNlZCBjdXJzb3IgbW92ZW1l bnQgY29tbWFuZHMgKGFsYSBcXFtoZXhsLWJlZ2lubmluZy1vZi1saW5lXSwg XFxbaGV4bC1lbmQtb2YtbGluZV0sIFxcW2hleGwtYmVnaW5uaW5nLW9mLWJ1 ZmZlcl0sIGFuZCBcXFtoZXhsLWVuZC1vZi1idWZmZXJdKSBhcmUNCmFsc28g c3VwcG9ydGVkLg0KDQpUaGVyZSBhcmUgc2V2ZXJhbCB3YXlzIHRvIGNoYW5n ZSB0ZXh0IGluIGhleGwgbW9kZToNCg0KQVNDSUkgY2hhcmFjdGVycyAoY2hh cmFjdGVyIGJldHdlZW4gc3BhY2UgKDB4MjApIGFuZCB0aWxkZSAoMHg3RSkp IGFyZQ0KYm91bmQgdG8gc2VsZi1pbnNlcnQgc28geW91IGNhbiBzaW1wbHkg dHlwZSB0aGUgY2hhcmFjdGVyIGFuZCBpdCB3aWxsDQppbnNlcnQgaXRzZWxm IChhY3R1YWxseSBvdmVyc3RyaWtlKSBpbnRvIHRoZSBidWZmZXIuDQoNClxc W2hleGwtcXVvdGVkLWluc2VydF0gZm9sbG93ZWQgYnkgYW5vdGhlciBrZXlz dHJva2UgYWxsb3dzIHlvdSB0byBpbnNlcnQgdGhlIGtleSBldmVuIGlmDQpp dCBpc24ndCBib3VuZCB0byBzZWxmLWluc2VydC4gIEFuIG9jdGFsIG51bWJl ciBjYW4gYmUgc3VwcGxpZWQgaW4gcGxhY2UNCm9mIGFub3RoZXIga2V5IHRv IGluc2VydCB0aGUgb2N0YWwgbnVtYmVyJ3MgQVNDSUkgcmVwcmVzZW50YXRp b24uDQoNClxcW2hleGwtaW5zZXJ0LWhleC1jaGFyXSB3aWxsIGluc2VydCBh IGdpdmVuIGhleGFkZWNpbWFsIHZhbHVlIChpZiBpdCBpcyBiZXR3ZWVuIDAg YW5kIDB4RkYpDQppbnRvIHRoZSBidWZmZXIgYXQgdGhlIGN1cnJlbnQgcG9p bnQuDQoNClxcW2hleGwtaW5zZXJ0LW9jdGFsLWNoYXJdIHdpbGwgaW5zZXJ0 IGEgZ2l2ZW4gb2N0YWwgdmFsdWUgKGlmIGl0IGlzIGJldHdlZW4gMCBhbmQg MDM3NykNCmludG8gdGhlIGJ1ZmZlciBhdCB0aGUgY3VycmVudCBwb2ludC4N Cg0KXFxbaGV4bC1pbnNlcnQtZGVjaW1hbC1jaGFyXSB3aWxsIGluc2VydCBh IGdpdmVuIGRlY2ltYWwgdmFsdWUgKGlmIGl0IGlzIGJldHdlZW4gMCBhbmQg MjU1KQ0KaW50byB0aGUgYnVmZmVyIGF0IHRoZSBjdXJyZW50IHBvaW50Lg0K DQpcXFtoZXhsLW1vZGUtZXhpdF0gd2lsbCBleGl0IGhleGwtbW9kZS4NCg0K Tm90ZTogc2F2aW5nIHRoZSBmaWxlIHdpdGggYW55IG9mIHRoZSB1c3VhbCBF bWFjcyBjb21tYW5kcw0Kd2lsbCBhY3R1YWxseSBjb252ZXJ0IGl0IGJhY2sg dG8gYmluYXJ5IGZvcm1hdCB3aGlsZSBzYXZpbmcuDQoNCllvdSBjYW4gdXNl IFxcW2hleGwtZmluZC1maWxlXSB0byB2aXNpdCBhIGZpbGUgaW4gSGV4bCBt b2RlLg0KDQpcXFtkZXNjcmliZS1iaW5kaW5nc10gZm9yIGFkdmFuY2VkIGNv bW1hbmRzLiINCiAgKGludGVyYWN0aXZlICJwIikNCiAgKHVubGVzcyAoZXEg bWFqb3ItbW9kZSAnaGV4bC1tb2RlKQ0KICAgIChsZXQgKChtb2RpZmllZCAo YnVmZmVyLW1vZGlmaWVkLXApKQ0KCSAgKGluaGliaXQtcmVhZC1vbmx5IHQp DQoJICAob3JpZ2luYWwtcG9pbnQgKC0gKHBvaW50KSAocG9pbnQtbWluKSkp DQoJICBtYXgtYWRkcmVzcykNCiAgICAgIChhbmQgKGVvYnApIChub3QgKGJv YnApKQ0KCSAgIChzZXRxIG9yaWdpbmFsLXBvaW50ICgxLSBvcmlnaW5hbC1w b2ludCkpKQ0KICAgICAgKGlmIChub3QgKG1lbXEgYXJnICcoMSBuaWwpKSkN CgkgIDs7IGlmIG5vIGFyZ3VtZW50IHRoZW4gd2UgZ3Vlc3MgYXQgaGV4bC1t YXgtYWRkcmVzcw0KICAgICAgICAgIChzZXRxIG1heC1hZGRyZXNzIA0KICAg ICAgICAgICAgICAgICgrICgqICgvICgxLSAoYnVmZmVyLXNpemUpKSAoaGV4 bC1saW5lLWRpc3BsZW4pKSAxNikgMTUpKQ0KICAgICAgICAoc2V0cSBtYXgt YWRkcmVzcyAoMS0gKGJ1ZmZlci1zaXplKSkpDQoJOzsgSWYgdGhlIGJ1ZmZl cidzIEVPTCB0eXBlIGlzIC1kb3MsIHdlIG5lZWQgdG8gYWNjb3VudCBmb3IN Cgk7OyBleHRyYSBDUiBjaGFyYWN0ZXJzIGFkZGVkIHdoZW4gaGV4bGlmeS1i dWZmZXIgd3JpdGVzIHRoZQ0KCTs7IGJ1ZmZlciB0byBhIGZpbGUuDQogICAg ICAgIDs7IEZJWE1FOiBUaGlzIGRvZXNuJ3QgdGFrZSBpbnRvIGFjY291bnQg bXVsdGlieXRlIGNvZGluZyBzeXN0ZW1zLg0KCSh3aGVuIChlcSAoY29kaW5n LXN5c3RlbS1lb2wtdHlwZSBidWZmZXItZmlsZS1jb2Rpbmctc3lzdGVtKSAx KQ0KICAgICAgICAgIChzZXRxIG1heC1hZGRyZXNzICgrIChjb3VudC1saW5l cyAocG9pbnQtbWluKSAocG9pbnQtbWF4KSkNCgkJCSAgICAgICBtYXgtYWRk cmVzcykpDQoJICA7OyBCdXQgaWYgdGhlcmUncyBubyBuZXdsaW5lIGF0IHRo ZSBsYXN0IGxpbmUsIHdlIGFyZSBvZmYgYnkNCgkgIDs7IG9uZTsgYWRqdXN0 Lg0KCSAgKG9yIChlcSAoY2hhci1iZWZvcmUgKHBvaW50LW1heCkpID9cbikN CgkgICAgICAoc2V0cSBtYXgtYWRkcmVzcyAoMS0gbWF4LWFkZHJlc3MpKSkN CgkgIChzZXRxIG9yaWdpbmFsLXBvaW50ICgrIChjb3VudC1saW5lcyAocG9p bnQtbWluKSAocG9pbnQpKQ0KCQkJCSAgb3JpZ2luYWwtcG9pbnQpKQ0KCSAg KG9yIChib2xwKSAoc2V0cSBvcmlnaW5hbC1wb2ludCAoMS0gb3JpZ2luYWwt cG9pbnQpKSkpDQogICAgICAgIChoZXhsaWZ5LWJ1ZmZlcikNCiAgICAgICAg KHJlc3RvcmUtYnVmZmVyLW1vZGlmaWVkLXAgbW9kaWZpZWQpKQ0KICAgICAg KG1ha2UtbG9jYWwtdmFyaWFibGUgJ2hleGwtbWF4LWFkZHJlc3MpDQogICAg ICAoc2V0cSBoZXhsLW1heC1hZGRyZXNzIG1heC1hZGRyZXNzKQ0KICAgICAg KGNvbmRpdGlvbi1jYXNlIG5pbA0KCSAgKGhleGwtZ290by1hZGRyZXNzIG9y aWdpbmFsLXBvaW50KQ0KCShlcnJvciBuaWwpKSkNCg0KICAgIDs7IFdlIGRv IG5vdCB0dXJuIG9mZiB0aGUgb2xkIG1ham9yIG1vZGU7IGluc3RlYWQgd2Ug anVzdA0KICAgIDs7IG92ZXJyaWRlIG1vc3Qgb2YgaXQuICBUaGF0IHdheSwg d2UgY2FuIHJlc3RvcmUgaXQgcGVyZmVjdGx5Lg0KICAgIChtYWtlLWxvY2Fs LXZhcmlhYmxlICdoZXhsLW1vZGUtb2xkLWxvY2FsLW1hcCkNCiAgICAoc2V0 cSBoZXhsLW1vZGUtb2xkLWxvY2FsLW1hcCAoY3VycmVudC1sb2NhbC1tYXAp KQ0KICAgICh1c2UtbG9jYWwtbWFwIGhleGwtbW9kZS1tYXApDQoNCiAgICAo bWFrZS1sb2NhbC12YXJpYWJsZSAnaGV4bC1tb2RlLW9sZC1tb2RlLW5hbWUp DQogICAgKHNldHEgaGV4bC1tb2RlLW9sZC1tb2RlLW5hbWUgbW9kZS1uYW1l KQ0KICAgIChzZXRxIG1vZGUtbmFtZSAiSGV4bCIpDQoNCiAgICAoc2V0ICht YWtlLWxvY2FsLXZhcmlhYmxlICdoZXhsLW1vZGUtb2xkLWlzZWFyY2gtc2Vh cmNoLWZ1bi1mdW5jdGlvbikNCgkgaXNlYXJjaC1zZWFyY2gtZnVuLWZ1bmN0 aW9uKQ0KICAgIChzZXQgKG1ha2UtbG9jYWwtdmFyaWFibGUgJ2lzZWFyY2gt c2VhcmNoLWZ1bi1mdW5jdGlvbikNCgkgJ2hleGwtaXNlYXJjaC1zZWFyY2gt ZnVuY3Rpb24pDQoNCiAgICAobWFrZS1sb2NhbC12YXJpYWJsZSAnaGV4bC1t b2RlLW9sZC1tYWpvci1tb2RlKQ0KICAgIChzZXRxIGhleGwtbW9kZS1vbGQt bWFqb3ItbW9kZSBtYWpvci1tb2RlKQ0KICAgIChzZXRxIG1ham9yLW1vZGUg J2hleGwtbW9kZSkNCg0KICAgIChtYWtlLWxvY2FsLXZhcmlhYmxlICdoZXhs LW1vZGUtb2xkLXJ1bGVyLW1vZGUpDQogICAgKHNldHEgaGV4bC1tb2RlLW9s ZC1ydWxlci1tb2RlDQoJICAoYW5kIChib3VuZHAgJ3J1bGVyLW1vZGUpIHJ1 bGVyLW1vZGUpKQ0KDQogICAgKG1ha2UtbG9jYWwtdmFyaWFibGUgJ2hleGwt bW9kZS1vbGQtaGwtbGluZS1tb2RlKQ0KICAgIChzZXRxIGhleGwtbW9kZS1v bGQtaGwtbGluZS1tb2RlDQoJICAoYW5kIChib3VuZHAgJ2hsLWxpbmUtbW9k ZSkgaGwtbGluZS1tb2RlKSkNCg0KICAgIChtYWtlLWxvY2FsLXZhcmlhYmxl ICdoZXhsLW1vZGUtb2xkLXN5bnRheC10YWJsZSkNCiAgICAoc2V0cSBoZXhs LW1vZGUtb2xkLXN5bnRheC10YWJsZSAoc3ludGF4LXRhYmxlKSkNCiAgICAo c2V0LXN5bnRheC10YWJsZSAoc3RhbmRhcmQtc3ludGF4LXRhYmxlKSkNCg0K ICAgIChhZGQtaG9vayAnd3JpdGUtY29udGVudHMtZnVuY3Rpb25zICdoZXhs LXNhdmUtYnVmZmVyIG5pbCB0KQ0KDQogICAgKG1ha2UtbG9jYWwtdmFyaWFi bGUgJ2hleGwtbW9kZS1vbGQtcmVxdWlyZS1maW5hbC1uZXdsaW5lKQ0KICAg IChzZXRxIGhleGwtbW9kZS1vbGQtcmVxdWlyZS1maW5hbC1uZXdsaW5lIHJl cXVpcmUtZmluYWwtbmV3bGluZSkNCiAgICAobWFrZS1sb2NhbC12YXJpYWJs ZSAncmVxdWlyZS1maW5hbC1uZXdsaW5lKQ0KICAgIChzZXRxIHJlcXVpcmUt ZmluYWwtbmV3bGluZSBuaWwpDQoNCiAgICAobWFrZS1sb2NhbC12YXJpYWJs ZSAnaGV4bC1tb2RlLW9sZC1mb250LWxvY2sta2V5d29yZHMpDQogICAgKHNl dHEgaGV4bC1tb2RlLW9sZC1mb250LWxvY2sta2V5d29yZHMgZm9udC1sb2Nr LWRlZmF1bHRzKQ0KICAgIChzZXRxIGZvbnQtbG9jay1kZWZhdWx0cyAnKGhl eGwtZm9udC1sb2NrLWtleXdvcmRzIHQpKQ0KDQogICAgOzsgQWRkIGhvb2tz IHRvIHJlaGV4bGlmeSBvciBkZWhleGxpZnkgb24gdmFyaW91cyBldmVudHMu DQogICAgKGFkZC1ob29rICdiZWZvcmUtcmV2ZXJ0LWhvb2sgJ2hleGwtYmVm b3JlLXJldmVydC1ob29rIG5pbCB0KQ0KICAgIChhZGQtaG9vayAnYWZ0ZXIt cmV2ZXJ0LWhvb2sgJ2hleGwtYWZ0ZXItcmV2ZXJ0LWhvb2sgbmlsIHQpDQoN CiAgICAoYWRkLWhvb2sgJ2NoYW5nZS1tYWpvci1tb2RlLWhvb2sgJ2hleGwt bWF5YmUtZGVoZXhsaWZ5LWJ1ZmZlciBuaWwgdCkNCg0KICAgIDs7IFNldCBh IGNhbGxiYWNrIGZ1bmN0aW9uIGZvciBlbGRvYy4NCiAgICAobWFrZS1sb2Nh bC12YXJpYWJsZSAnaGV4bC1tb2RlLW9sZC1lbGRvYy1kb2N1bWVudGF0aW9u LWZ1bmN0aW9uKQ0KICAgIChzZXRxIGhleGwtbW9kZS1vbGQtZWxkb2MtZG9j dW1lbnRhdGlvbi1mdW5jdGlvbg0KCSAgKGJvdW5kLWFuZC10cnVlLXAgZWxk b2MtZG9jdW1lbnRhdGlvbi1mdW5jdGlvbikpDQoNCiAgICAoc2V0IChtYWtl LWxvY2FsLXZhcmlhYmxlICdlbGRvYy1kb2N1bWVudGF0aW9uLWZ1bmN0aW9u KQ0KCSAnaGV4bC1wcmludC1jdXJyZW50LXBvaW50LWluZm8pDQogICAgKGVs ZG9jLWFkZC1jb21tYW5kLWNvbXBsZXRpb25zICJoZXhsLSIpDQogICAgKGVs ZG9jLXJlbW92ZS1jb21tYW5kICJoZXhsLXNhdmUtYnVmZmVyIg0KCQkJICAi aGV4bC1jdXJyZW50LWFkZHJlc3MiKQ0KDQogICAgKGlmIGhleGwtZm9sbG93 LWFzY2lpIChoZXhsLWZvbGxvdy1hc2NpaSAxKSkpDQogIChydW4tbW9kZS1o b29rcyAnaGV4bC1tb2RlLWhvb2spKQ0KDQoNCihkZWZ1biBoZXhsLWlzZWFy Y2gtc2VhcmNoLWZ1bmN0aW9uICgpDQogIChpZiAoYW5kIChub3QgaXNlYXJj aC1yZWdleHApIChub3QgaXNlYXJjaC13b3JkKSkNCiAgICAgIChsYW1iZGEg KHN0cmluZyAmb3B0aW9uYWwgYm91bmQgbm9lcnJvciBjb3VudCkNCgkoZnVu Y2FsbA0KCSAoaWYgaXNlYXJjaC1mb3J3YXJkICdyZS1zZWFyY2gtZm9yd2Fy ZCAncmUtc2VhcmNoLWJhY2t3YXJkKQ0KICAgICAgICAgKGxldCAoKHRleHRy ZQ0KICAgICAgICAgICAgICAgIChpZiAoPiAobGVuZ3RoIHN0cmluZykgODAp DQogICAgICAgICAgICAgICAgICAgIChyZWdleHAtcXVvdGUgc3RyaW5nKQ0K ICAgICAgICAgICAgICAgICAgKG1hcGNvbmNhdCAobGFtYmRhIChjKSAocmVn ZXhwLXF1b3RlIChzdHJpbmcgYykpKSBzdHJpbmcNCiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIlxcKD86XG5cXCg/Ols6YS1mMC05XSsgXFwpKyBc XCk/IikpKSkNCiAgICAgICAgICAgKGlmIChzdHJpbmctbWF0Y2ggIlxcYCA/ XFwoW2EtZjAtOV0rIFxcKSpbYS1mMC05XSsgP1xcJyIgc3RyaW5nKQ0KICAg ICAgICAgICAgICAgKGNvbmNhdCB0ZXh0cmUgIlxcfCINCiAgICAgICAgICAg ICAgICAgICAgICAgKG1hcGNvbmNhdCAncmVnZXhwLXF1b3RlIChzcGxpdC1z dHJpbmcgc3RyaW5nICIgIikNCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAiIFxcKD86IC4rXG5bYS1mMC05XSs6IFxcKT8iKSkNCiAgICAg ICAgICAgICB0ZXh0cmUpKQ0KCSBib3VuZCBub2Vycm9yIGNvdW50KSkNCiAg ICAobGV0ICgoaXNlYXJjaC1zZWFyY2gtZnVuLWZ1bmN0aW9uIG5pbCkpDQog ICAgICAoaXNlYXJjaC1zZWFyY2gtZnVuKSkpKQ0KDQooZGVmdW4gaGV4bC1i ZWZvcmUtcmV2ZXJ0LWhvb2sgKCkNCiAgKHJlbW92ZS1ob29rICdjaGFuZ2Ut bWFqb3ItbW9kZS1ob29rICdoZXhsLW1heWJlLWRlaGV4bGlmeS1idWZmZXIg dCkpDQoNCihkZWZ1biBoZXhsLWFmdGVyLXJldmVydC1ob29rICgpDQogICho ZXhsLW1vZGUpKQ0KDQooZGVmdmFyIGhleGwtaW4tc2F2ZS1idWZmZXIgbmls KQ0KDQooZGVmdW4gaGV4bC1zYXZlLWJ1ZmZlciAoKQ0KICAiU2F2ZSBhIGhl eGwgZm9ybWF0IGJ1ZmZlciBhcyBiaW5hcnkgaW4gdmlzaXRlZCBmaWxlIGlm IG1vZGlmaWVkLiINCiAgKGludGVyYWN0aXZlKQ0KICAoaWYgaGV4bC1pbi1z YXZlLWJ1ZmZlciBuaWwNCiAgICAocmVzdG9yZS1idWZmZXItbW9kaWZpZWQt cA0KICAgICAoaWYgKGJ1ZmZlci1tb2RpZmllZC1wKQ0KICAgICAgICAgKGxl dCAoKGJ1ZiAoZ2VuZXJhdGUtbmV3LWJ1ZmZlciAiIGhleGwiKSkNCiAgICAg ICAgICAgICAgIChuYW1lIChidWZmZXItbmFtZSkpDQogICAgICAgICAgICAg ICAoc3RhcnQgKHBvaW50LW1pbikpDQogICAgICAgICAgICAgICAoZW5kIChw b2ludC1tYXgpKQ0KICAgICAgICAgICAgICAgbW9kaWZpZWQpDQogICAgICAg ICAgICh3aXRoLWN1cnJlbnQtYnVmZmVyIGJ1Zg0KICAgICAgICAgICAgIChp bnNlcnQtYnVmZmVyLXN1YnN0cmluZyBuYW1lIHN0YXJ0IGVuZCkNCiAgICAg ICAgICAgICAoc2V0LWJ1ZmZlciBuYW1lKQ0KICAgICAgICAgICAgIChkZWhl eGxpZnktYnVmZmVyKQ0KICAgICAgICAgICAgIDs7IFByZXZlbnQgaW5maW5p dGUgcmVjdXJzaW9uLg0KICAgICAgICAgICAgIChsZXQgKChoZXhsLWluLXNh dmUtYnVmZmVyIHQpKQ0KICAgICAgICAgICAgICAgKHNhdmUtYnVmZmVyKSkN CiAgICAgICAgICAgICAoc2V0cSBtb2RpZmllZCAoYnVmZmVyLW1vZGlmaWVk LXApKQ0KICAgICAgICAgICAgIChkZWxldGUtcmVnaW9uIChwb2ludC1taW4p IChwb2ludC1tYXgpKQ0KICAgICAgICAgICAgIChpbnNlcnQtYnVmZmVyLXN1 YnN0cmluZyBidWYgc3RhcnQgZW5kKQ0KICAgICAgICAgICAgIChraWxsLWJ1 ZmZlciBidWYpDQogICAgICAgICAgICAgbW9kaWZpZWQpKQ0KICAgICAgICht ZXNzYWdlICIoTm8gY2hhbmdlcyBuZWVkIHRvIGJlIHNhdmVkKSIpDQogICAg ICAgbmlsKSkNCiAgICA7OyBSZXR1cm4gdCB0byBpbmRpY2F0ZSB3ZSBoYXZl IHNhdmVkIHQNCiAgICB0KSkNCg0KOzs7IyMjYXV0b2xvYWQNCihkZWZ1biBo ZXhsLWZpbmQtZmlsZSAoZmlsZW5hbWUpDQogICJFZGl0IGZpbGUgRklMRU5B TUUgYXMgYSBiaW5hcnkgZmlsZSBpbiBoZXggZHVtcCBmb3JtYXQuDQpTd2l0 Y2ggdG8gYSBidWZmZXIgdmlzaXRpbmcgZmlsZSBGSUxFTkFNRSwgY3JlYXRp bmcgb25lIGlmIG5vbmUgZXhpc3RzLA0KYW5kIGVkaXQgdGhlIGZpbGUgaW4g YGhleGwtbW9kZScuIg0KICAoaW50ZXJhY3RpdmUNCiAgIChsaXN0DQogICAg KGxldCAoKGNvbXBsZXRpb24taWdub3JlZC1leHRlbnNpb25zIG5pbCkpDQog ICAgICAocmVhZC1maWxlLW5hbWUgIkZpbGVuYW1lOiAiIG5pbCBuaWwgJ3Jl dC1tdXN0LW1hdGNoKSkpKQ0KICA7OyBJZ25vcmUgdGhlIHVzZXIncyBzZXR0 aW5nIG9mIGRlZmF1bHQtbWFqb3ItbW9kZS4NCiAgKGxldCAoKGRlZmF1bHQt bWFqb3ItbW9kZSAnZnVuZGFtZW50YWwtbW9kZSkpDQogICAgKGZpbmQtZmls ZS1saXRlcmFsbHkgZmlsZW5hbWUpKQ0KICAoaWYgKG5vdCAoZXEgbWFqb3It bW9kZSAnaGV4bC1tb2RlKSkNCiAgICAgIChoZXhsLW1vZGUpKSkNCg0KKGRl ZnVuIGhleGwtbW9kZS1leGl0ICgmb3B0aW9uYWwgYXJnKQ0KICAiRXhpdCBI ZXhsIG1vZGUsIHJldHVybmluZyB0byBwcmV2aW91cyBtb2RlLg0KV2l0aCBh cmcsIGRvbid0IHVuaGV4bGlmeSBidWZmZXIuIg0KICAoaW50ZXJhY3RpdmUg InAiKQ0KICAoaWYgKG9yIChlcSBhcmcgMSkgKG5vdCBhcmcpKQ0KICAgICAg KGxldCAoKG1vZGlmaWVkIChidWZmZXItbW9kaWZpZWQtcCkpDQoJICAgIChp bmhpYml0LXJlYWQtb25seSB0KQ0KCSAgICAob3JpZ2luYWwtcG9pbnQgKDEr IChoZXhsLWN1cnJlbnQtYWRkcmVzcykpKSkNCgkoZGVoZXhsaWZ5LWJ1ZmZl cikNCgkocmVtb3ZlLWhvb2sgJ3dyaXRlLWNvbnRlbnRzLWZ1bmN0aW9ucyAn aGV4bC1zYXZlLWJ1ZmZlciB0KQ0KCShyZXN0b3JlLWJ1ZmZlci1tb2RpZmll ZC1wIG1vZGlmaWVkKQ0KCShnb3RvLWNoYXIgb3JpZ2luYWwtcG9pbnQpDQoJ OzsgTWF5YmUgYWRqdXN0IHBvaW50IGZvciB0aGUgcmVtb3ZlZCBDUiBjaGFy YWN0ZXJzLg0KCSh3aGVuIChlcSAoY29kaW5nLXN5c3RlbS1lb2wtdHlwZSBi dWZmZXItZmlsZS1jb2Rpbmctc3lzdGVtKSAxKQ0KCSAgKHNldHEgb3JpZ2lu YWwtcG9pbnQgKC0gb3JpZ2luYWwtcG9pbnQNCgkJCQkgIChjb3VudC1saW5l cyAocG9pbnQtbWluKSAocG9pbnQpKSkpDQoJICAob3IgKGJvYnApIChzZXRx IG9yaWdpbmFsLXBvaW50ICgxKyBvcmlnaW5hbC1wb2ludCkpKSkNCgkoZ290 by1jaGFyIG9yaWdpbmFsLXBvaW50KSkpDQoNCiAgKHJlbW92ZS1ob29rICdi ZWZvcmUtcmV2ZXJ0LWhvb2sgJ2hleGwtYmVmb3JlLXJldmVydC1ob29rIHQp DQogIChyZW1vdmUtaG9vayAnYWZ0ZXItcmV2ZXJ0LWhvb2sgJ2hleGwtYWZ0 ZXItcmV2ZXJ0LWhvb2sgdCkNCiAgKHJlbW92ZS1ob29rICdjaGFuZ2UtbWFq b3ItbW9kZS1ob29rICdoZXhsLW1heWJlLWRlaGV4bGlmeS1idWZmZXIgdCkN CiAgKHJlbW92ZS1ob29rICdwb3N0LWNvbW1hbmQtaG9vayAnaGV4bC1mb2xs b3ctYXNjaWktZmluZCB0KQ0KICAoc2V0cSBoZXhsLWFzY2lpLW92ZXJsYXkg bmlsKQ0KDQogIChpZiAoYW5kIChib3VuZHAgJ3J1bGVyLW1vZGUpIHJ1bGVy LW1vZGUgKG5vdCBoZXhsLW1vZGUtb2xkLXJ1bGVyLW1vZGUpKQ0KICAgICAg KHJ1bGVyLW1vZGUgMCkpDQogICh3aGVuIChib3VuZHAgJ2hleGwtbW9kZS1v bGQtcnVsZXItZnVuY3Rpb24pDQogICAgKHNldHEgcnVsZXItbW9kZS1ydWxl ci1mdW5jdGlvbiBoZXhsLW1vZGUtb2xkLXJ1bGVyLWZ1bmN0aW9uKSkNCg0K ICAoaWYgKGFuZCAoYm91bmRwICdobC1saW5lLW1vZGUpIGhsLWxpbmUtbW9k ZSAobm90IGhleGwtbW9kZS1vbGQtaGwtbGluZS1tb2RlKSkNCiAgICAgICho bC1saW5lLW1vZGUgMCkpDQogICh3aGVuIChib3VuZHAgJ2hleGwtbW9kZS1v bGQtaGwtbGluZS1yYW5nZS1mdW5jdGlvbikNCiAgICAoc2V0cSBobC1saW5l LXJhbmdlLWZ1bmN0aW9uIGhleGwtbW9kZS1vbGQtaGwtbGluZS1yYW5nZS1m dW5jdGlvbikpDQogICh3aGVuIChib3VuZHAgJ2hleGwtbW9kZS1vbGQtaGwt bGluZS1mYWNlKQ0KICAgIChzZXRxIGhsLWxpbmUtZmFjZSBoZXhsLW1vZGUt b2xkLWhsLWxpbmUtZmFjZSkpDQoNCiAgKHdoZW4gKGJvdW5kcCAnaGV4bC1t b2RlLW9sZC1lbGRvYy1kb2N1bWVudGF0aW9uLWZ1bmN0aW9uKQ0KICAgIChz ZXRxIGVsZG9jLWRvY3VtZW50YXRpb24tZnVuY3Rpb24NCgkgIGhleGwtbW9k ZS1vbGQtZWxkb2MtZG9jdW1lbnRhdGlvbi1mdW5jdGlvbikpDQoNCiAgKHNl dHEgcmVxdWlyZS1maW5hbC1uZXdsaW5lIGhleGwtbW9kZS1vbGQtcmVxdWly ZS1maW5hbC1uZXdsaW5lKQ0KICAoc2V0cSBtb2RlLW5hbWUgaGV4bC1tb2Rl LW9sZC1tb2RlLW5hbWUpDQogIChzZXRxIGlzZWFyY2gtc2VhcmNoLWZ1bi1m dW5jdGlvbiBoZXhsLW1vZGUtb2xkLWlzZWFyY2gtc2VhcmNoLWZ1bi1mdW5j dGlvbikNCiAgKHVzZS1sb2NhbC1tYXAgaGV4bC1tb2RlLW9sZC1sb2NhbC1t YXApDQogIChzZXQtc3ludGF4LXRhYmxlIGhleGwtbW9kZS1vbGQtc3ludGF4 LXRhYmxlKQ0KICAoc2V0cSBmb250LWxvY2stZGVmYXVsdHMgaGV4bC1tb2Rl LW9sZC1mb250LWxvY2sta2V5d29yZHMpDQogIChzZXRxIG1ham9yLW1vZGUg aGV4bC1tb2RlLW9sZC1tYWpvci1tb2RlKQ0KICAoZm9yY2UtbW9kZS1saW5l LXVwZGF0ZSkpDQoNCihkZWZ1biBoZXhsLW1heWJlLWRlaGV4bGlmeS1idWZm ZXIgKCkNCiAgIkNvbnZlcnQgYSBoZXhsIGZvcm1hdCBidWZmZXIgdG8gYmlu YXJ5Lg0KQXNrIHRoZSB1c2VyIGZvciBjb25maXJtYXRpb24uIg0KICAoaWYg KHktb3Itbi1wICJDb252ZXJ0IGNvbnRlbnRzIGJhY2sgdG8gYmluYXJ5IGZv cm1hdD8gIikNCiAgICAgIChsZXQgKChtb2RpZmllZCAoYnVmZmVyLW1vZGlm aWVkLXApKQ0KCSAgICAoaW5oaWJpdC1yZWFkLW9ubHkgdCkNCgkgICAgKG9y aWdpbmFsLXBvaW50ICgxKyAoaGV4bC1jdXJyZW50LWFkZHJlc3MpKSkpDQoJ KGRlaGV4bGlmeS1idWZmZXIpDQoJKHJlbW92ZS1ob29rICd3cml0ZS1jb250 ZW50cy1mdW5jdGlvbnMgJ2hleGwtc2F2ZS1idWZmZXIgdCkNCgkocmVzdG9y ZS1idWZmZXItbW9kaWZpZWQtcCBtb2RpZmllZCkNCgkoZ290by1jaGFyIG9y aWdpbmFsLXBvaW50KSkpKQ0KDQooZGVmdW4gaGV4bC1jdXJyZW50LWFkZHJl c3MgKCZvcHRpb25hbCB2YWxpZGF0ZSkNCiAgIlJldHVybiBjdXJyZW50IGhl eGwtYWRkcmVzcy4iDQogIChpbnRlcmFjdGl2ZSkNCiAgKGxldCAoKGN1cnJl bnQtY29sdW1uIA0KICAgICAgICAgKC0gKCUgKC0gKHBvaW50KSAocG9pbnQt bWluKSAtMSkgKGhleGwtbGluZS1kaXNwbGVuKSkgMTEpKQ0KCShoZXhsLWFk ZHJlc3MgMCkpDQogICAgKGlmICg8IGN1cnJlbnQtY29sdW1uIDApDQoJKGlm IHZhbGlkYXRlDQoJICAgIChlcnJvciAiUG9pbnQgaXMgbm90IG9uIGEgY2hh cmFjdGVyIGluIHRoZSBmaWxlIikNCgkgIChzZXRxIGN1cnJlbnQtY29sdW1u IDApKSkNCiAgICAoc2V0cSBoZXhsLWFkZHJlc3MNCgkgICgrICgqICgvICgt IChwb2ludCkgKHBvaW50LW1pbikgLTEpIA0KICAgICAgICAgICAgICAgICAg IChoZXhsLWxpbmUtZGlzcGxlbikpIDE2KQ0KCSAgICAgKGlmICg+PSBjdXJy ZW50LWNvbHVtbiAoLSAoaGV4bC1hc2NpaS1zdGFydC1jb2x1bW4pIDEwKSkN CgkJICgtIGN1cnJlbnQtY29sdW1uICgtIChoZXhsLWFzY2lpLXN0YXJ0LWNv bHVtbikgMTApKQ0KICAgICAgICAgICAgICAgKC8gKC0gY3VycmVudC1jb2x1 bW4gDQogICAgICAgICAgICAgICAgICAgICAoLyBjdXJyZW50LWNvbHVtbiAo MSsgKC8gaGV4bC1iaXRzIDQpKSkpIDIpICkpICkNCiAgICAod2hlbiAoaW50 ZXJhY3RpdmUtcCkNCiAgICAgIChtZXNzYWdlICJDdXJyZW50IGFkZHJlc3Mg aXMgW2NvbHVtbjogJWRdICVkLzB4JTA4eCIgDQogICAgICAgICAgICAgICBj dXJyZW50LWNvbHVtbiBoZXhsLWFkZHJlc3MgaGV4bC1hZGRyZXNzKSkNCiAg ICBoZXhsLWFkZHJlc3MpKQ0KDQooZGVmdW4gaGV4bC1wcmludC1jdXJyZW50 LXBvaW50LWluZm8gKCkNCiAgIlJldHVybiBjdXJyZW50IGhleGwtYWRkcmVz cyBpbiBzdHJpbmcuDQpUaGlzIGZ1bmN0aW9uIGlzIGludGVuZGVkIHRvIGJl IHVzZWQgYXMgZWxkb2MgY2FsbGJhY2suIg0KICAobGV0ICgoYWRkciAoaGV4 bC1jdXJyZW50LWFkZHJlc3MpKSkNCiAgICAoZm9ybWF0ICJDdXJyZW50IGFk ZHJlc3MgaXMgJWQvMHglMDh4IiBhZGRyIGFkZHIpKSkNCg0KKGRlZnVuIGhl eGwtYXNjaWktc3RhcnQtY29sdW1uICgpIA0KICAiQ29sdW1uIGF0IHdoaWNo IHRoZSBhc2NpaSBkaXNwbGF5IHN0YXJ0cy4iDQogICgrIDQzICgvIDEyOCBo ZXhsLWJpdHMpKSkNCg0KKGRlZnVuIGhleGwtYWRkcmVzcy10by1tYXJrZXIg KGFkZHJlc3MpDQogICJSZXR1cm4gYnVmZmVyIHBvc2l0aW9uIGZvciBBRERS RVNTLiINCiAgKGludGVyYWN0aXZlICJuQWRkcmVzczogIikNCiAgKGxldCAo KE4gKCogKCUgYWRkcmVzcyAxNikgMikpKQ0KICAgICgrICgqICgvIGFkZHJl c3MgMTYpIChoZXhsLWxpbmUtZGlzcGxlbikpIDsgaGV4bCBsaW5lIG5vICog ZGlzcGxheSBsZW5ndGgNCiAgICAgICAxMCAgICAgICAgICAgICAgICAgICAg ICA7IDEwIGNoYXJzIGZvciB0aGUgImFkZHJlc3M6ICIgcHJlZml4DQogICAg ICAgKHBvaW50LW1pbikgICAgICAgICAgICAgOyBiYXNlIG9mZnNldCAocG9p bnQgdXN1YWxseSBzdGFydHMgYXQgMSwgbm90IDApDQogICAgICAgKCsgTiAo LyBOICgvIGhleGwtYml0cyA0KSkpICkpICkgOyBjaGFyIG9mZnNldCBpbnRv IGhleGwgZGlzcGxheSBsaW5lDQoNCihkZWZ1biBoZXhsLWdvdG8tYWRkcmVz cyAoYWRkcmVzcykNCiAgIkdvIHRvIGhleGwtbW9kZSAoZGVjaW1hbCkgYWRk cmVzcyBBRERSRVNTLg0KU2lnbmFsIGVycm9yIGlmIEFERFJFU1MgaXMgb3V0 IG9mIHJhbmdlLiINCiAgKGludGVyYWN0aXZlICJuQWRkcmVzczogIikNCiAg KGlmIChvciAoPCBhZGRyZXNzIDApICg+IGFkZHJlc3MgaGV4bC1tYXgtYWRk cmVzcykpDQogICAgICAoZXJyb3IgIk91dCBvZiBoZXhsIHJlZ2lvbiIpKQ0K ICAoZ290by1jaGFyIChoZXhsLWFkZHJlc3MtdG8tbWFya2VyIGFkZHJlc3Mp KSkNCg0KKGRlZnVuIGhleGwtZ290by1oZXgtYWRkcmVzcyAoaGV4LWFkZHJl c3MpDQogICJHbyB0byBoZXhsLW1vZGUgYWRkcmVzcyAoaGV4IHN0cmluZykg SEVYLUFERFJFU1MuDQpTaWduYWwgZXJyb3IgaWYgSEVYLUFERFJFU1MgaXMg b3V0IG9mIHJhbmdlLiINCiAgKGludGVyYWN0aXZlICJzSGV4IEFkZHJlc3M6 ICIpDQogIChoZXhsLWdvdG8tYWRkcmVzcyAoaGV4bC1oZXgtc3RyaW5nLXRv LWludGVnZXIgaGV4LWFkZHJlc3MpKSkNCg0KKGRlZnVuIGhleGwtaGV4LXN0 cmluZy10by1pbnRlZ2VyIChoZXgtc3RyaW5nKQ0KICAiUmV0dXJuIGRlY2lt YWwgaW50ZWdlciBmb3IgSEVYLVNUUklORy4iDQogIChpbnRlcmFjdGl2ZSAi c0hleCBudW1iZXI6ICIpDQogIChsZXQgKChoZXgtbnVtIDApKQ0KICAgICh3 aGlsZSAobm90IChlcXVhbCBoZXgtc3RyaW5nICIiKSkNCiAgICAgIChzZXRx IGhleC1udW0gKCsgKCogaGV4LW51bSAxNikNCgkJICAgICAgIChoZXhsLWhl eC1jaGFyLXRvLWludGVnZXIgKHN0cmluZy10by1jaGFyIGhleC1zdHJpbmcp KSkpDQogICAgICAoc2V0cSBoZXgtc3RyaW5nIChzdWJzdHJpbmcgaGV4LXN0 cmluZyAxKSkpDQogICAgaGV4LW51bSkpDQoNCihkZWZ1biBoZXhsLW9jdGFs LXN0cmluZy10by1pbnRlZ2VyIChvY3RhbC1zdHJpbmcpDQogICJSZXR1cm4g ZGVjaW1hbCBpbnRlZ2VyIGZvciBPQ1RBTC1TVFJJTkcuIg0KICAoaW50ZXJh Y3RpdmUgInNPY3RhbCBudW1iZXI6ICIpDQogIChsZXQgKChvY3QtbnVtIDAp KQ0KICAgICh3aGlsZSAobm90IChlcXVhbCBvY3RhbC1zdHJpbmcgIiIpKQ0K ICAgICAgKHNldHEgb2N0LW51bSAoKyAoKiBvY3QtbnVtIDgpDQoJCSAgICAg ICAoaGV4bC1vY3QtY2hhci10by1pbnRlZ2VyDQoJCQkoc3RyaW5nLXRvLWNo YXIgb2N0YWwtc3RyaW5nKSkpKQ0KICAgICAgKHNldHEgb2N0YWwtc3RyaW5n IChzdWJzdHJpbmcgb2N0YWwtc3RyaW5nIDEpKSkNCiAgICBvY3QtbnVtKSkN Cg0KOzsgbW92ZSBwb2ludCBmdW5jdGlvbnMNCg0KKGRlZnVuIGhleGwtYmFj a3dhcmQtY2hhciAoYXJnKQ0KICAiTW92ZSB0byBsZWZ0IEFSRyBieXRlcyAo cmlnaHQgaWYgQVJHIG5lZ2F0aXZlKSBpbiBoZXhsLW1vZGUuIg0KICAoaW50 ZXJhY3RpdmUgInAiKQ0KICAoaGV4bC1nb3RvLWFkZHJlc3MgKC0gKGhleGwt Y3VycmVudC1hZGRyZXNzKSBhcmcpKSkNCg0KKGRlZnVuIGhleGwtZm9yd2Fy ZC1jaGFyIChhcmcpDQogICJNb3ZlIHJpZ2h0IEFSRyBieXRlcyAobGVmdCBp ZiBBUkcgbmVnYXRpdmUpIGluIGhleGwtbW9kZS4iDQogIChpbnRlcmFjdGl2 ZSAicCIpDQogIChoZXhsLWdvdG8tYWRkcmVzcyAoKyAoaGV4bC1jdXJyZW50 LWFkZHJlc3MpIGFyZykpKQ0KDQooZGVmdW4gaGV4bC1iYWNrd2FyZC1zaG9y dCAoYXJnKQ0KICAiTW92ZSB0byBsZWZ0IEFSRyBzaG9ydHMgKHJpZ2h0IGlm IEFSRyBuZWdhdGl2ZSkgaW4gaGV4bC1tb2RlLiINCiAgKGludGVyYWN0aXZl ICJwIikNCiAgKGhleGwtZ290by1hZGRyZXNzIChsZXQgKChhZGRyZXNzICho ZXhsLWN1cnJlbnQtYWRkcmVzcykpKQ0KCQkgICAgICAgKGlmICg8IGFyZyAw KQ0KCQkJICAgKHByb2duDQoJCQkgICAgIChzZXRxIGFyZyAoLSBhcmcpKQ0K CQkJICAgICAod2hpbGUgKD4gYXJnIDApDQoJCQkgICAgICAgKGlmIChub3Qg KGVxdWFsIGFkZHJlc3MgKGxvZ2lvciBhZGRyZXNzIDMpKSkNCgkJCQkgICAo aWYgKD4gYWRkcmVzcyBoZXhsLW1heC1hZGRyZXNzKQ0KCQkJCSAgICAgICAo cHJvZ24NCgkJCQkJIChtZXNzYWdlICJFbmQgb2YgYnVmZmVyLiIpDQoJCQkJ CSAoc2V0cSBhZGRyZXNzIGhleGwtbWF4LWFkZHJlc3MpKQ0KCQkJCSAgICAg KHNldHEgYWRkcmVzcyAobG9naW9yIGFkZHJlc3MgMykpKQ0KCQkJCSAoaWYg KD4gYWRkcmVzcyBoZXhsLW1heC1hZGRyZXNzKQ0KCQkJCSAgICAgKHByb2du DQoJCQkJICAgICAgIChtZXNzYWdlICJFbmQgb2YgYnVmZmVyLiIpDQoJCQkJ ICAgICAgIChzZXRxIGFkZHJlc3MgaGV4bC1tYXgtYWRkcmVzcykpDQoJCQkJ ICAgKHNldHEgYWRkcmVzcyAoKyBhZGRyZXNzIDQpKSkpDQoJCQkgICAgICAg KHNldHEgYXJnICgxLSBhcmcpKSkNCgkJCSAgICAgKGlmICg+IGFkZHJlc3Mg aGV4bC1tYXgtYWRkcmVzcykNCgkJCQkgKHByb2duDQoJCQkJICAgKG1lc3Nh Z2UgIkVuZCBvZiBidWZmZXIuIikNCgkJCQkgICAoc2V0cSBhZGRyZXNzIGhl eGwtbWF4LWFkZHJlc3MpKQ0KCQkJICAgICAgIChzZXRxIGFkZHJlc3MgKGxv Z2lvciBhZGRyZXNzIDMpKSkpDQoJCQkgKHdoaWxlICg+IGFyZyAwKQ0KCQkJ ICAgKGlmIChub3QgKGVxdWFsIGFkZHJlc3MgKGxvZ2FuZCBhZGRyZXNzIC00 KSkpDQoJCQkgICAgICAgKHNldHEgYWRkcmVzcyAobG9nYW5kIGFkZHJlc3Mg LTQpKQ0KCQkJICAgICAoaWYgKG5vdCAoZXF1YWwgYWRkcmVzcyAwKSkNCgkJ CQkgKHNldHEgYWRkcmVzcyAoLSBhZGRyZXNzIDQpKQ0KCQkJICAgICAgICht ZXNzYWdlICJCZWdpbm5pbmcgb2YgYnVmZmVyLiIpKSkNCgkJCSAgIChzZXRx IGFyZyAoMS0gYXJnKSkpKQ0KCQkgICAgICAgYWRkcmVzcykpKQ0KDQooZGVm dW4gaGV4bC1mb3J3YXJkLXNob3J0IChhcmcpDQogICJNb3ZlIHJpZ2h0IEFS RyBzaG9ydHMgKGxlZnQgaWYgQVJHIG5lZ2F0aXZlKSBpbiBoZXhsLW1vZGUu Ig0KICAoaW50ZXJhY3RpdmUgInAiKQ0KICAoaGV4bC1iYWNrd2FyZC1zaG9y dCAoLSBhcmcpKSkNCg0KKGRlZnVuIGhleGwtYmFja3dhcmQtd29yZCAoYXJn KQ0KICAiTW92ZSB0byBsZWZ0IEFSRyB3b3JkcyAocmlnaHQgaWYgQVJHIG5l Z2F0aXZlKSBpbiBoZXhsLW1vZGUuIg0KICAoaW50ZXJhY3RpdmUgInAiKQ0K ICAoaGV4bC1nb3RvLWFkZHJlc3MgKGxldCAoKGFkZHJlc3MgKGhleGwtY3Vy cmVudC1hZGRyZXNzKSkpDQoJCSAgICAgICAoaWYgKDwgYXJnIDApDQoJCQkg ICAocHJvZ24NCgkJCSAgICAgKHNldHEgYXJnICgtIGFyZykpDQoJCQkgICAg ICh3aGlsZSAoPiBhcmcgMCkNCgkJCSAgICAgICAoaWYgKG5vdCAoZXF1YWwg YWRkcmVzcyAobG9naW9yIGFkZHJlc3MgNykpKQ0KCQkJCSAgIChpZiAoPiBh ZGRyZXNzIGhleGwtbWF4LWFkZHJlc3MpDQoJCQkJICAgICAgIChwcm9nbg0K CQkJCQkgKG1lc3NhZ2UgIkVuZCBvZiBidWZmZXIuIikNCgkJCQkJIChzZXRx IGFkZHJlc3MgaGV4bC1tYXgtYWRkcmVzcykpDQoJCQkJICAgICAoc2V0cSBh ZGRyZXNzIChsb2dpb3IgYWRkcmVzcyA3KSkpDQoJCQkJIChpZiAoPiBhZGRy ZXNzIGhleGwtbWF4LWFkZHJlc3MpDQoJCQkJICAgICAocHJvZ24NCgkJCQkg ICAgICAgKG1lc3NhZ2UgIkVuZCBvZiBidWZmZXIuIikNCgkJCQkgICAgICAg KHNldHEgYWRkcmVzcyBoZXhsLW1heC1hZGRyZXNzKSkNCgkJCQkgICAoc2V0 cSBhZGRyZXNzICgrIGFkZHJlc3MgOCkpKSkNCgkJCSAgICAgICAoc2V0cSBh cmcgKDEtIGFyZykpKQ0KCQkJICAgICAoaWYgKD4gYWRkcmVzcyBoZXhsLW1h eC1hZGRyZXNzKQ0KCQkJCSAocHJvZ24NCgkJCQkgICAobWVzc2FnZSAiRW5k IG9mIGJ1ZmZlci4iKQ0KCQkJCSAgIChzZXRxIGFkZHJlc3MgaGV4bC1tYXgt YWRkcmVzcykpDQoJCQkgICAgICAgKHNldHEgYWRkcmVzcyAobG9naW9yIGFk ZHJlc3MgNykpKSkNCgkJCSAod2hpbGUgKD4gYXJnIDApDQoJCQkgICAoaWYg KG5vdCAoZXF1YWwgYWRkcmVzcyAobG9nYW5kIGFkZHJlc3MgLTgpKSkNCgkJ CSAgICAgICAoc2V0cSBhZGRyZXNzIChsb2dhbmQgYWRkcmVzcyAtOCkpDQoJ CQkgICAgIChpZiAobm90IChlcXVhbCBhZGRyZXNzIDApKQ0KCQkJCSAoc2V0 cSBhZGRyZXNzICgtIGFkZHJlc3MgOCkpDQoJCQkgICAgICAgKG1lc3NhZ2Ug IkJlZ2lubmluZyBvZiBidWZmZXIuIikpKQ0KCQkJICAgKHNldHEgYXJnICgx LSBhcmcpKSkpDQoJCSAgICAgICBhZGRyZXNzKSkpDQoNCihkZWZ1biBoZXhs LWZvcndhcmQtd29yZCAoYXJnKQ0KICAiTW92ZSByaWdodCBBUkcgd29yZHMg KGxlZnQgaWYgQVJHIG5lZ2F0aXZlKSBpbiBoZXhsLW1vZGUuIg0KICAoaW50 ZXJhY3RpdmUgInAiKQ0KICAoaGV4bC1iYWNrd2FyZC13b3JkICgtIGFyZykp KQ0KDQooZGVmdW4gaGV4bC1wcmV2aW91cy1saW5lIChhcmcpDQogICJNb3Zl IHZlcnRpY2FsbHkgdXAgQVJHIGxpbmVzIFsxNiBieXRlc10gKGRvd24gaWYg QVJHIG5lZ2F0aXZlKSBpbiBoZXhsLW1vZGUuDQpJZiB0aGVyZSBpcyBubyBi eXRlIGF0IHRoZSB0YXJnZXQgYWRkcmVzcyBtb3ZlIHRvIHRoZSBsYXN0IGJ5 dGUgaW4gdGhhdCBsaW5lLiINCiAgKGludGVyYWN0aXZlICJwIikNCiAgKGhl eGwtbmV4dC1saW5lICgtIGFyZykpKQ0KDQooZGVmdW4gaGV4bC1uZXh0LWxp bmUgKGFyZykNCiAgIk1vdmUgdmVydGljYWxseSBkb3duIEFSRyBsaW5lcyBb MTYgYnl0ZXNdICh1cCBpZiBBUkcgbmVnYXRpdmUpIGluIGhleGwtbW9kZS4N CklmIHRoZXJlIGlzIG5vIGJ5dGUgYXQgdGhlIHRhcmdldCBhZGRyZXNzIG1v dmUgdG8gdGhlIGxhc3QgYnl0ZSBpbiB0aGF0IGxpbmUuIg0KICAoaW50ZXJh Y3RpdmUgInAiKQ0KICAoaGV4bC1nb3RvLWFkZHJlc3MgKGxldCAoKGFkZHJl c3MgKCsgKGhleGwtY3VycmVudC1hZGRyZXNzKSAoKiBhcmcgMTYpKSkpDQoJ CSAgICAgICAoaWYgKGFuZCAoPCBhcmcgMCkgKDwgYWRkcmVzcyAwKSkNCgkJ CQkocHJvZ24gKG1lc3NhZ2UgIk91dCBvZiBoZXhsIHJlZ2lvbi4iKQ0KCQkJ CSAgICAgICAoc2V0cSBhZGRyZXNzDQoJCQkJCSAgICAgKCUgKGhleGwtY3Vy cmVudC1hZGRyZXNzKSAxNikpKQ0KCQkJIChpZiAoYW5kICg+IGFkZHJlc3Mg aGV4bC1tYXgtYWRkcmVzcykNCgkJCQkgICg8ICglIGhleGwtbWF4LWFkZHJl c3MgMTYpICglIGFkZHJlc3MgMTYpKSkNCgkJCSAgICAgKHNldHEgYWRkcmVz cyBoZXhsLW1heC1hZGRyZXNzKQ0KCQkJICAgKGlmICg+IGFkZHJlc3MgaGV4 bC1tYXgtYWRkcmVzcykNCgkJCSAgICAgICAocHJvZ24gKG1lc3NhZ2UgIk91 dCBvZiBoZXhsIHJlZ2lvbi4iKQ0KCQkJCSAgICAgIChzZXRxDQoJCQkJICAg ICAgIGFkZHJlc3MNCgkJCQkgICAgICAgKCsgKGxvZ2FuZCBoZXhsLW1heC1h ZGRyZXNzIC0xNikNCgkJCQkJICAoJSAoaGV4bC1jdXJyZW50LWFkZHJlc3Mp IDE2KSkpKSkpKQ0KCQkgICAgICAgYWRkcmVzcykpKQ0KDQooZGVmdW4gaGV4 bC1iZWdpbm5pbmctb2YtYnVmZmVyIChhcmcpDQogICJNb3ZlIHRvIHRoZSBi ZWdpbm5pbmcgb2YgdGhlIGhleGwgYnVmZmVyLg0KTGVhdmVzIGBoZXhsLW1h cmsnIGF0IHByZXZpb3VzIHBvc2l0aW9uLg0KV2l0aCBwcmVmaXggYXJnIE4s IHB1dHMgcG9pbnQgTiBieXRlcyBvZiB0aGUgd2F5IGZyb20gdGhlIHRydWUg YmVnaW5uaW5nLiINCiAgKGludGVyYWN0aXZlICJwIikNCiAgKHB1c2gtbWFy ayAocG9pbnQpKQ0KICAoaGV4bC1nb3RvLWFkZHJlc3MgKCsgMCAoMS0gYXJn KSkpKQ0KDQooZGVmdW4gaGV4bC1lbmQtb2YtYnVmZmVyIChhcmcpDQogICJH byB0byBgaGV4bC1tYXgtYWRkcmVzcycgbWludXMgQVJHLiINCiAgKGludGVy YWN0aXZlICJwIikNCiAgKHB1c2gtbWFyayAocG9pbnQpKQ0KICAoaGV4bC1n b3RvLWFkZHJlc3MgKC0gaGV4bC1tYXgtYWRkcmVzcyAoMS0gYXJnKSkpKQ0K DQooZGVmdW4gaGV4bC1iZWdpbm5pbmctb2YtbGluZSAoKQ0KICAiR290byBi ZWdpbm5pbmcgb2YgbGluZSBpbiBoZXhsIG1vZGUuIg0KICAoaW50ZXJhY3Rp dmUpDQogIChnb3RvLWNoYXIgKCsgKCogKC8gKHBvaW50KSAoaGV4bC1saW5l LWRpc3BsZW4pKSAoaGV4bC1saW5lLWRpc3BsZW4pKSAxMSkpKQ0KDQooZGVm dW4gaGV4bC1lbmQtb2YtbGluZSAoKQ0KICAiR290byBlbmQgb2YgbGluZSBp biBoZXhsIG1vZGUuIg0KICAoaW50ZXJhY3RpdmUpDQogIChoZXhsLWdvdG8t YWRkcmVzcyAobGV0ICgoYWRkcmVzcyAobG9naW9yIChoZXhsLWN1cnJlbnQt YWRkcmVzcykgMTUpKSkNCgkJICAgICAgIChpZiAoPiBhZGRyZXNzIGhleGwt bWF4LWFkZHJlc3MpDQoJCQkgICAoc2V0cSBhZGRyZXNzIGhleGwtbWF4LWFk ZHJlc3MpKQ0KCQkgICAgICAgYWRkcmVzcykpKQ0KDQooZGVmdW4gaGV4bC1z Y3JvbGwtZG93biAoYXJnKQ0KICAiU2Nyb2xsIGhleGwgYnVmZmVyIHdpbmRv dyB1cHdhcmQgQVJHIGxpbmVzOyBvciBuZWFyIGZ1bGwgd2luZG93IGlmIG5v IEFSRy4iDQogIChpbnRlcmFjdGl2ZSAiUCIpDQogIChpZiAobnVsbCBhcmcp DQogICAgICAoc2V0cSBhcmcgKDEtICh3aW5kb3ctaGVpZ2h0KSkpDQogICAg KHNldHEgYXJnIChwcmVmaXgtbnVtZXJpYy12YWx1ZSBhcmcpKSkNCiAgKGhl eGwtc2Nyb2xsLXVwICgtIGFyZykpKQ0KDQooZGVmdW4gaGV4bC1zY3JvbGwt dXAgKGFyZykNCiAgIlNjcm9sbCBoZXhsIGJ1ZmZlciB3aW5kb3cgdXB3YXJk IEFSRyBsaW5lczsgb3IgbmVhciBmdWxsIHdpbmRvdyBpZiBubyBBUkcuDQpJ ZiB0aGVyZSdzIG5vIGJ5dGUgYXQgdGhlIHRhcmdldCBhZGRyZXNzLCBtb3Zl IHRvIHRoZSBmaXJzdCBvciBsYXN0IGxpbmUuIg0KICAoaW50ZXJhY3RpdmUg IlAiKQ0KICAoaWYgKG51bGwgYXJnKQ0KICAgICAgKHNldHEgYXJnICgxLSAo d2luZG93LWhlaWdodCkpKQ0KICAgIChzZXRxIGFyZyAocHJlZml4LW51bWVy aWMtdmFsdWUgYXJnKSkpDQogIChsZXQqICgobW92ZW1lbnQgKCogYXJnIDE2 KSkNCgkgKGFkZHJlc3MgKGhleGwtY3VycmVudC1hZGRyZXNzKSkNCgkgKGRl c3QgKCsgYWRkcmVzcyBtb3ZlbWVudCkpKQ0KICAgIChjb25kDQogICAgIDs7 IElmIHBvc3NpYmxlLCB0cnkgdG8gc3RheSBhdCB0aGUgc2FtZSBvZmZzZXQg ZnJvbSB0aGUgYmVnaW5uaW5nDQogICAgIDs7IG9mIHRoZSAxNi1ieXRlIGdy b3VwLCBldmVuIGlmIHdlIG1vdmUgdG8gdGhlIGZpcnN0IG9yIGxhc3QNCiAg ICAgOzsgZ3JvdXAuDQogICAgICgoYW5kICg+IGRlc3QgaGV4bC1tYXgtYWRk cmVzcykNCgkgICAoPj0gKCUgaGV4bC1tYXgtYWRkcmVzcyAxNikgKCUgYWRk cmVzcyAxNikpKQ0KICAgICAgKHNldHEgZGVzdCAoKyAobG9nYW5kIGhleGwt bWF4LWFkZHJlc3MgLTE2KSAoJSBhZGRyZXNzIDE2KSkpKQ0KICAgICAoKD4g ZGVzdCBoZXhsLW1heC1hZGRyZXNzKQ0KICAgICAgKHNldHEgZGVzdCBoZXhs LW1heC1hZGRyZXNzKSkNCiAgICAgKCg8IGRlc3QgMCkNCiAgICAgIChzZXRx IGRlc3QgKCUgYWRkcmVzcyAxNikpKSkNCiAgICAoaWYgKC89IGRlc3QgKCsg YWRkcmVzcyBtb3ZlbWVudCkpDQoJKG1lc3NhZ2UgIk91dCBvZiBoZXhsIHJl Z2lvbi4iKSkNCiAgICAoaGV4bC1nb3RvLWFkZHJlc3MgZGVzdCkNCiAgICAo cmVjZW50ZXIgMCkpKQ0KDQooZGVmdW4gaGV4bC1iZWdpbm5pbmctb2YtMWst cGFnZSAoKQ0KICAiR28gdG8gdGhlIGJlZ2lubmluZyBvZiB0aGUgY3VycmVu dCAxa2lCIGJsb2NrIg0KICAoaW50ZXJhY3RpdmUpDQogIChoZXhsLWdvdG8t YWRkcmVzcyAobG9nYW5kIChoZXhsLWN1cnJlbnQtYWRkcmVzcykgLTEwMjQp KSkNCg0KKGRlZnVuIGhleGwtZW5kLW9mLTFrLXBhZ2UgKCkNCiAgIkdvIHRv IHRoZSBlbmQgb2YgdGhlIGN1cnJlbnQgMWtpQiBibG9jay4iDQogIChpbnRl cmFjdGl2ZSkNCiAgKGhleGwtZ290by1hZGRyZXNzIChsZXQgKChhZGRyZXNz IChsb2dpb3IgKGhleGwtY3VycmVudC1hZGRyZXNzKSAxMDIzKSkpDQoJCSAg ICAgICAoaWYgKD4gYWRkcmVzcyBoZXhsLW1heC1hZGRyZXNzKQ0KCQkJICAg KHNldHEgYWRkcmVzcyBoZXhsLW1heC1hZGRyZXNzKSkNCgkJICAgICAgIGFk ZHJlc3MpKSkNCg0KKGRlZnVuIGhleGwtYmVnaW5uaW5nLW9mLTUxMmItcGFn ZSAoKQ0KICAiR28gdG8gYmVnaW5uaW5nIG9mIDUxMiBieXRlIGJvdW5kYXJ5 LiINCiAgKGludGVyYWN0aXZlKQ0KICAoaGV4bC1nb3RvLWFkZHJlc3MgKGxv Z2FuZCAoaGV4bC1jdXJyZW50LWFkZHJlc3MpIC01MTIpKSkNCg0KKGRlZnVu IGhleGwtZW5kLW9mLTUxMmItcGFnZSAoKQ0KICAiR28gdG8gZW5kIG9mIDUx MiBieXRlIGJvdW5kYXJ5LiINCiAgKGludGVyYWN0aXZlKQ0KICAoaGV4bC1n b3RvLWFkZHJlc3MgKGxldCAoKGFkZHJlc3MgKGxvZ2lvciAoaGV4bC1jdXJy ZW50LWFkZHJlc3MpIDUxMSkpKQ0KCQkgICAgICAgKGlmICg+IGFkZHJlc3Mg aGV4bC1tYXgtYWRkcmVzcykNCgkJCSAgIChzZXRxIGFkZHJlc3MgaGV4bC1t YXgtYWRkcmVzcykpDQoJCSAgICAgICBhZGRyZXNzKSkpDQoNCihkZWZ1biBo ZXhsLXF1b3RlZC1pbnNlcnQgKGFyZykNCiAgIlJlYWQgbmV4dCBpbnB1dCBj aGFyYWN0ZXIgYW5kIGluc2VydCBpdC4NClVzZWZ1bCBmb3IgaW5zZXJ0aW5n IGNvbnRyb2wgY2hhcmFjdGVycyBhbmQgbm9uLUFTQ0lJIGNoYXJhY3RlcnMg Z2l2ZW4gdGhlaXINCm51bWVyaWNhbCBjb2RlLg0KWW91IG1heSBhbHNvIHR5 cGUgb2N0YWwgZGlnaXRzLCB0byBpbnNlcnQgYSBjaGFyYWN0ZXIgd2l0aCB0 aGF0IGNvZGUuIg0KICAoaW50ZXJhY3RpdmUgInAiKQ0KICAoaGV4bC1pbnNl cnQtbXVsdGlieXRlLWNoYXIgKHJlYWQtcXVvdGVkLWNoYXIpIGFyZykpDQoN CjswMDAwMDAwMDogMDAxMSAyMjMzIDQ0NTUgNjY3NyA4ODk5IGFhYmIgY2Nk ZCBlZWZmICAwMTIzNDU2Nzg5QUJDREVGDQoNCihkZWZ1biBoZXhsLW9wdGlv bnMgKCZvcHRpb25hbCB0ZXN0KQ0KICAobGV0ICgob3B0cyAob3IgdGVzdCBo ZXhsLW9wdGlvbnMpKSkNCiAgICAod2hlbiAobWVtcSBoZXhsLWJpdHMgJyg4 IDE2IDMyIDY0KSkNCiAgICAgICh3aGVuIChzdHJpbmctbWF0Y2ggIlxcKC4q XFwpLWdyb3VwLWJ5LVswLTldKy1iaXRzXFwoLipcXCkiIG9wdHMpDQogICAg ICAgIChzZXRxIG9wdHMgKGNvbmNhdCAobWF0Y2gtc3RyaW5nIDEgb3B0cykg DQogICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2gtc3RyaW5nIDIg b3B0cykpKSApIA0KICAgICAgKHNldHEgb3B0cyAoZm9ybWF0ICIlcyAtZ3Jv dXAtYnktJWQtYml0cyAiIG9wdHMgaGV4bC1iaXRzKSkgKQ0KICAgIG9wdHMp KQ0KDQo7OzsjIyNhdXRvbG9hZA0KKGRlZnVuIGhleGxpZnktYnVmZmVyICgp DQogICJDb252ZXJ0IGEgYmluYXJ5IGJ1ZmZlciB0byBoZXhsIGZvcm1hdC4N ClRoaXMgZGlzY2FyZHMgdGhlIGJ1ZmZlcidzIHVuZG8gaW5mb3JtYXRpb24u Ig0KICAoaW50ZXJhY3RpdmUpDQogIChhbmQgKGNvbnNwIGJ1ZmZlci11bmRv LWxpc3QpDQogICAgICAgKG9yICh5LW9yLW4tcCAiQ29udmVydGluZyB0byBo ZXhsIGZvcm1hdCBkaXNjYXJkcyB1bmRvIGluZm87IG9rPyAiKQ0KCSAgIChl cnJvciAiQWJvcnRlZCIpKQ0KICAgICAgIChzZXRxIGJ1ZmZlci11bmRvLWxp c3QgbmlsKSkNCiAgOzsgRG9uJ3QgZGVjb2RlIHRleHQgaW4gdGhlIEFTQ0lJ IHBhcnQgb2YgYGhleGwnIHByb2dyYW0gb3V0cHV0Lg0KICAobGV0ICgoY29k aW5nLXN5c3RlbS1mb3ItcmVhZCAncmF3LXRleHQpDQoJKGNvZGluZy1zeXN0 ZW0tZm9yLXdyaXRlIGJ1ZmZlci1maWxlLWNvZGluZy1zeXN0ZW0pDQoJKGJ1 ZmZlci11bmRvLWxpc3QgdCkpDQogICAgKGFwcGx5ICdjYWxsLXByb2Nlc3Mt cmVnaW9uIChwb2ludC1taW4pIChwb2ludC1tYXgpDQoJICAgKGV4cGFuZC1m aWxlLW5hbWUgaGV4bC1wcm9ncmFtIGV4ZWMtZGlyZWN0b3J5KQ0KCSAgIHQg dCBuaWwNCiAgICAgICAgICAgOzsgTWFudWFsbHkgZW5jb2RlIHRoZSBhcmdz LCBvdGhlcndpc2UgdGhleSdyZSBlbmNvZGVkIHVzaW5nDQogICAgICAgICAg IDs7IGNvZGluZy1zeXN0ZW0tZm9yLXdyaXRlIChpLmUuIGJ1ZmZlci1maWxl LWNvZGluZy1zeXN0ZW0pIHdoaWNoDQogICAgICAgICAgIDs7IG1heSBub3Qg YmUgd2hhdCB3ZSB3YW50IChlLmcuIHV0Zi0xNiBvbiBhIG5vbi11dGYtMTYg c3lzdGVtKS4NCiAgICAgICAgICAgKG1hcGNhciAobGFtYmRhIChzKQ0KICAg ICAgICAgICAgICAgICAgICAgKGlmIChub3QgKG11bHRpYnl0ZS1zdHJpbmct cCBzKSkgcw0KICAgICAgICAgICAgICAgICAgICAgICAoZW5jb2RlLWNvZGlu Zy1zdHJpbmcgcyBsb2NhbGUtY29kaW5nLXN5c3RlbSkpKQ0KICAgICAgICAg ICAgICAgICAgIChzcGxpdC1zdHJpbmcgKGhleGwtb3B0aW9ucykpKSkNCiAg ICAoaWYgKD4gKHBvaW50KSAoaGV4bC1hZGRyZXNzLXRvLW1hcmtlciBoZXhs LW1heC1hZGRyZXNzKSkNCgkoaGV4bC1nb3RvLWFkZHJlc3MgaGV4bC1tYXgt YWRkcmVzcykpKSkNCg0KKGRlZnVuIGRlaGV4bGlmeS1idWZmZXIgKCkNCiAg IkNvbnZlcnQgYSBoZXhsIGZvcm1hdCBidWZmZXIgdG8gYmluYXJ5Lg0KVGhp cyBkaXNjYXJkcyB0aGUgYnVmZmVyJ3MgdW5kbyBpbmZvcm1hdGlvbi4iDQog IChpbnRlcmFjdGl2ZSkNCiAgKGFuZCAoY29uc3AgYnVmZmVyLXVuZG8tbGlz dCkNCiAgICAgICAob3IgKHktb3Itbi1wICJDb252ZXJ0aW5nIGZyb20gaGV4 bCBmb3JtYXQgZGlzY2FyZHMgdW5kbyBpbmZvOyBvaz8gIikNCgkgICAoZXJy b3IgIkFib3J0ZWQiKSkNCiAgICAgICAoc2V0cSBidWZmZXItdW5kby1saXN0 IG5pbCkpDQogIChsZXQgKChjb2Rpbmctc3lzdGVtLWZvci13cml0ZSAncmF3 LXRleHQpDQoJKGNvZGluZy1zeXN0ZW0tZm9yLXJlYWQgYnVmZmVyLWZpbGUt Y29kaW5nLXN5c3RlbSkNCgkoYnVmZmVyLXVuZG8tbGlzdCB0KSkNCiAgICAo YXBwbHkgJ2NhbGwtcHJvY2Vzcy1yZWdpb24gKHBvaW50LW1pbikgKHBvaW50 LW1heCkNCgkgICAoZXhwYW5kLWZpbGUtbmFtZSBoZXhsLXByb2dyYW0gZXhl Yy1kaXJlY3RvcnkpDQoJICAgdCB0IG5pbCAiLWRlIiAoc3BsaXQtc3RyaW5n IChoZXhsLW9wdGlvbnMpKSkpKQ0KDQooZGVmdW4gaGV4bC1jaGFyLWFmdGVy LXBvaW50ICgpDQogICJSZXR1cm4gY2hhciBmb3IgQVNDSUkgaGV4IGRpZ2l0 cyBhdCBwb2ludC4iDQogIChoZXhsLWh0b2kgKGNoYXItYWZ0ZXIgKHBvaW50 KSkNCgkgICAgIChjaGFyLWFmdGVyICgxKyAocG9pbnQpKSkpKQ0KDQooZGVm dW4gaGV4bC1odG9pIChsaCByaCkNCiAgIkhleCAoY2hhcikgTEggKGNoYXIp IFJIIHRvIGludGVnZXIuIg0KICAgICgrICgqIChoZXhsLWhleC1jaGFyLXRv LWludGVnZXIgbGgpIDE2KQ0KICAgICAgIChoZXhsLWhleC1jaGFyLXRvLWlu dGVnZXIgcmgpKSkNCg0KKGRlZnVuIGhleGwtaGV4LWNoYXItdG8taW50ZWdl ciAoY2hhcmFjdGVyKQ0KICAiVGFrZSBhIGNoYXIgYW5kIHJldHVybiBpdHMg dmFsdWUgYXMgaWYgaXQgd2FzIGEgaGV4IGRpZ2l0LiINCiAgKGlmIChhbmQg KD49IGNoYXJhY3RlciA/MCkgKDw9IGNoYXJhY3RlciA/OSkpDQogICAgICAo LSBjaGFyYWN0ZXIgPzApDQogICAgKGxldCAoKGNoIChsb2dpb3IgY2hhcmFj dGVyIDMyKSkpDQogICAgICAoaWYgKGFuZCAoPj0gY2ggP2EpICg8PSBjaCA/ ZikpDQoJICAoLSBjaCAoLSA/YSAxMCkpDQoJKGVycm9yICJJbnZhbGlkIGhl eCBkaWdpdCBgJWMnIiBjaCkpKSkpDQoNCihkZWZ1biBoZXhsLW9jdC1jaGFy LXRvLWludGVnZXIgKGNoYXJhY3RlcikNCiAgIlRha2UgYSBjaGFyIGFuZCBy ZXR1cm4gaXRzIHZhbHVlIGFzIGlmIGl0IHdhcyBhIG9jdGFsIGRpZ2l0LiIN CiAgKGlmIChhbmQgKD49IGNoYXJhY3RlciA/MCkgKDw9IGNoYXJhY3RlciA/ NykpDQogICAgICAoLSBjaGFyYWN0ZXIgPzApDQogICAgKGVycm9yICJJbnZh bGlkIG9jdGFsIGRpZ2l0IGAlYyciIGNoYXJhY3RlcikpKQ0KDQooZGVmdW4g aGV4bC1wcmludGFibGUtY2hhcmFjdGVyIChjaCkNCiAgIlJldHVybiBhIGRp c3BsYXlhYmxlIHN0cmluZyBmb3IgY2hhcmFjdGVyIENILiINCiAgKGZvcm1h dCAiJWMiIChpZiBoZXhsLWlzbw0KCQkgICAoaWYgKG9yICg8IGNoIDMyKSAo YW5kICg+PSBjaCAxMjcpICg8IGNoIDE2MCkpKQ0KCQkgICAgICAgNDYNCgkJ ICAgICBjaCkNCgkJIChpZiAob3IgKDwgY2ggMzIpICg+PSBjaCAxMjcpKQ0K CQkgICAgIDQ2DQoJCSAgIGNoKSkpKQ0KDQooZGVmdW4gaGV4bC1pbnNlcnQt bXVsdGlieXRlLWNoYXIgKGNoIG51bSkNCiAgIkluc2VydCBhIHBvc3NpYmx5 IG11bHRpYnl0ZSBjaGFyYWN0ZXIgQ0ggTlVNIHRpbWVzLg0KDQpOb24tQVND SUkgY2hhcmFjdGVycyBhcmUgZmlyc3QgZW5jb2RlZCB3aXRoIGBidWZmZXIt ZmlsZS1jb2Rpbmctc3lzdGVtJywNCmFuZCB0aGVpciBlbmNvZGVkIGZvcm0g aXMgaW5zZXJ0ZWQgYnl0ZSBieSBieXRlLiINCiAgKGxldCAoKGNoYXJzZXQg KGNoYXItY2hhcnNldCBjaCkpDQoJKGNvZGluZyAoaWYgKG9yIChudWxsIGJ1 ZmZlci1maWxlLWNvZGluZy1zeXN0ZW0pDQoJCQk7OyBjb2Rpbmctc3lzdGVt LXR5cGUgZXF1YWxzIHQgbWVhbnMgdW5kZWNpZGVkLg0KCQkJKGVxIChjb2Rp bmctc3lzdGVtLXR5cGUgYnVmZmVyLWZpbGUtY29kaW5nLXN5c3RlbSkgdCkp DQoJCSAgICBkZWZhdWx0LWJ1ZmZlci1maWxlLWNvZGluZy1zeXN0ZW0NCgkJ ICBidWZmZXItZmlsZS1jb2Rpbmctc3lzdGVtKSkpDQogICAgKGNvbmQgKChh bmQgKD4gY2ggMCkgKDwgY2ggMjU2KSkNCgkgICAoaGV4bC1pbnNlcnQtY2hh ciBjaCBudW0pKQ0KCSAgKChlcSBjaGFyc2V0ICd1bmtub3duKQ0KCSAgIChl cnJvcg0KCSAgICAiMHgleCAtLSBpbnZhbGlkIGNoYXJhY3RlciBjb2RlOyB1 c2UgXFxbaGV4bC1pbnNlcnQtaGV4LXN0cmluZ10iDQoJICAgIGNoKSkNCgkg ICh0DQoJICAgKGxldCAoKGVuY29kZWQgKGVuY29kZS1jb2RpbmctY2hhciBj aCBjb2RpbmcpKQ0KCQkgKGludGVybmFsIChzdHJpbmctYXMtdW5pYnl0ZSAo Y2hhci10by1zdHJpbmcgY2gpKSkNCgkJIGludGVybmFsLWhleCkNCgkgICAg IDs7IElmIGVuY29kZS1jb2RpbmctY2hhciByZXR1cm5zIG5pbCwgaXQgbWVh bnMgb3VyIGNoYXJhY3Rlcg0KCSAgICAgOzsgY2Fubm90IGJlIHNhZmVseSBl bmNvZGVkIHdpdGggYnVmZmVyLWZpbGUtY29kaW5nLXN5c3RlbS4NCgkgICAg IDs7IEluIHRoYXQgY2FzZSwgd2Ugb2ZmZXIgdG8gaW5zZXJ0IHRoZSBpbnRl cm5hbCByZXByZXNlbnRhdGlvbg0KCSAgICAgOzsgb2YgdGhhdCBjaGFyYWN0 ZXIsIGJ5dGUgYnkgYnl0ZS4NCgkgICAgICh3aGVuIChudWxsIGVuY29kZWQp DQoJICAgICAgIChzZXRxIGludGVybmFsLWhleA0KCQkgICAgIChtYXBjb25j YXQgKGZ1bmN0aW9uIChsYW1iZGEgKGMpIChmb3JtYXQgIiV4IiBjKSkpDQoJ CQkJaW50ZXJuYWwgIiAiKSkNCgkgICAgICAgKGlmICh5ZXMtb3Itbm8tcA0K CQkgICAgKGZvcm1hdA0KCQkgICAgICJJbnNlcnQgY2hhciAweCV4J3MgaW50 ZXJuYWwgcmVwcmVzZW50YXRpb24gXCIlc1wiPyAiDQoJCSAgICAgY2ggaW50 ZXJuYWwtaGV4KSkNCgkJICAgKHNldHEgZW5jb2RlZCBpbnRlcm5hbCkNCgkJ IChlcnJvcg0KCQkgICJDYW4ndCBlbmNvZGUgYDB4JXgnIHdpdGggdGhpcyBi dWZmZXIncyBjb2Rpbmcgc3lzdGVtOyB0cnkgXFxbaGV4bC1pbnNlcnQtaGV4 LXN0cmluZ10iDQoJCSAgY2gpKSkNCgkgICAgICh3aGlsZSAoPiBudW0gMCkN CgkgICAgICAgKG1hcGMNCgkJKGZ1bmN0aW9uIChsYW1iZGEgKGMpIChoZXhs LWluc2VydC1jaGFyIGMgMSkpKSBlbmNvZGVkKQ0KCSAgICAgICAoc2V0cSBu dW0gKDEtIG51bSkpKSkpKSkpDQoNCihkZWZ1biBoZXhsLXNlbGYtaW5zZXJ0 LWNvbW1hbmQgKGFyZykNCiAgIkluc2VydCB0aGlzIGNoYXJhY3Rlci4NCklu dGVyYWN0aXZlbHksIHdpdGggYSBudW1lcmljIGFyZ3VtZW50LCBpbnNlcnQg dGhpcyBjaGFyYWN0ZXIgdGhhdCBtYW55IHRpbWVzLg0KDQpOb24tQVNDSUkg Y2hhcmFjdGVycyBhcmUgZmlyc3QgZW5jb2RlZCB3aXRoIGBidWZmZXItZmls ZS1jb2Rpbmctc3lzdGVtJywNCmFuZCB0aGVpciBlbmNvZGVkIGZvcm0gaXMg aW5zZXJ0ZWQgYnl0ZSBieSBieXRlLiINCiAgKGludGVyYWN0aXZlICJwIikN CiAgKGhleGwtaW5zZXJ0LW11bHRpYnl0ZS1jaGFyIGxhc3QtY29tbWFuZC1l dmVudCBhcmcpKQ0KDQooZGVmdW4gaGV4bC1pbnNlcnQtY2hhciAoY2ggbnVt KQ0KICAiSW5zZXJ0IHRoZSBjaGFyYWN0ZXIgQ0ggTlVNIHRpbWVzIGluIGEg aGV4bCBidWZmZXIuDQoNCkNIIG11c3QgYmUgYSB1bmlieXRlIGNoYXJhY3Rl ciB3aG9zZSB2YWx1ZSBpcyBiZXR3ZWVuIDAgYW5kIDI1NS4iDQogIChpZiAo b3IgKDwgY2ggMCkgKD4gY2ggMjU1KSkNCiAgICAgIChlcnJvciAiSW52YWxp ZCBjaGFyYWN0ZXIgMHgleCAtLSBtdXN0IGJlIGluIHRoZSByYW5nZSBbMC4u MjU1XSIgY2gpKQ0KICAobGV0ICgoYWRkcmVzcyAoaGV4bC1jdXJyZW50LWFk ZHJlc3MgdCkpKQ0KICAgICh3aGlsZSAoPiBudW0gMCkNCiAgICAgIChsZXQg KChoZXgtcG9zaXRpb24NCgkgICAgICgrICgqICgvIGFkZHJlc3MgMTYpICho ZXhsLWxpbmUtZGlzcGxlbikpDQoJCTEwIChwb2ludC1taW4pDQoJCSgqIDIg KCUgYWRkcmVzcyAxNikpDQoJCSgvICglIGFkZHJlc3MgMTYpIDIpKSkNCgkg ICAgKGFzY2lpLXBvc2l0aW9uDQoJICAgICAoKyAoKiAoLyBhZGRyZXNzIDE2 KSAoaGV4bC1saW5lLWRpc3BsZW4pKSANCiAgICAgICAgICAgICAgICAoaGV4 bC1hc2NpaS1zdGFydC1jb2x1bW4pIA0KICAgICAgICAgICAgICAgIChwb2lu dC1taW4pIA0KICAgICAgICAgICAgICAgICglIGFkZHJlc3MgMTYpKSkNCgkg ICAgYXQtYXNjaWktcG9zaXRpb24pDQoJKGlmICg9IChwb2ludCkgYXNjaWkt cG9zaXRpb24pDQoJICAgIChzZXRxIGF0LWFzY2lpLXBvc2l0aW9uIHQpKQ0K CShnb3RvLWNoYXIgaGV4LXBvc2l0aW9uKQ0KCShkZWxldGUtY2hhciAyKQ0K CShpbnNlcnQgKGZvcm1hdCAiJTAyeCIgY2gpKQ0KCShnb3RvLWNoYXIgYXNj aWktcG9zaXRpb24pDQoJKGRlbGV0ZS1jaGFyIDEpDQoJKGluc2VydCAoaGV4 bC1wcmludGFibGUtY2hhcmFjdGVyIGNoKSkNCgkob3IgKGVxIGFkZHJlc3Mg aGV4bC1tYXgtYWRkcmVzcykNCgkgICAgKHNldHEgYWRkcmVzcyAoMSsgYWRk cmVzcykpKQ0KCShoZXhsLWdvdG8tYWRkcmVzcyBhZGRyZXNzKQ0KCShpZiBh dC1hc2NpaS1wb3NpdGlvbg0KCSAgICAocHJvZ24NCgkgICAgICAoYmVnaW5u aW5nLW9mLWxpbmUpDQoJICAgICAgKGZvcndhcmQtY2hhciAoaGV4bC1hc2Np aS1zdGFydC1jb2x1bW4pKQ0KCSAgICAgIChmb3J3YXJkLWNoYXIgKCUgYWRk cmVzcyAxNikpKSkpDQogICAgICAoc2V0cSBudW0gKDEtIG51bSkpKSkpDQoN Cjs7IGhleCBjb252ZXJzaW9uDQoNCihkZWZ1biBoZXhsLWluc2VydC1oZXgt Y2hhciAoYXJnKQ0KICAiSW5zZXJ0IGEgY2hhcmFjdGVyIGdpdmVuIGJ5IGl0 cyBoZXhhZGVjaW1hbCBjb2RlIEFSRyB0aW1lcyBhdCBwb2ludC4iDQogIChp bnRlcmFjdGl2ZSAicCIpDQogIChsZXQgKChudW0gKGhleGwtaGV4LXN0cmlu Zy10by1pbnRlZ2VyIChyZWFkLXN0cmluZyAiSGV4IG51bWJlcjogIikpKSkN CiAgICAoaWYgKDwgbnVtIDApDQoJKGVycm9yICJIZXggbnVtYmVyIG91dCBv ZiByYW5nZSIpDQogICAgICAoaGV4bC1pbnNlcnQtbXVsdGlieXRlLWNoYXIg bnVtIGFyZykpKSkNCg0KKGRlZnVuIGhleGwtaW5zZXJ0LWhleC1zdHJpbmcg KHN0ciBhcmcpDQogICJJbnNlcnQgaGV4YWRlY2ltYWwgc3RyaW5nIFNUUiBh dCBwb2ludCBBUkcgdGltZXMuDQpFbWJlZGRlZCB3aGl0ZXNwYWNlLCBkYXNo ZXMsIGFuZCBwZXJpb2RzIGluIHRoZSBzdHJpbmcgYXJlIGlnbm9yZWQuIg0K ICAoaW50ZXJhY3RpdmUgInNIZXggc3RyaW5nOiBcbnAiKQ0KICAoc2V0cSBz dHIgKHJlcGxhY2UtcmVnZXhwLWluLXN0cmluZyAiWy0gXHQuXSIgIiIgc3Ry KSkNCiAgKGxldCAoKGNoYXJzICcoKSkpDQogICAgKGxldCAoKGxlbiAobGVu Z3RoIHN0cikpDQoJICAoaWR4IDApKQ0KICAgICAgKGlmIChlcSAobG9nYW5k IGxlbiAxKSAxKQ0KCSAgKGxldCAoKG51bSAoaGV4bC1oZXgtc3RyaW5nLXRv LWludGVnZXIgKHN1YnN0cmluZyBzdHIgMCAxKSkpKQ0KCSAgICAoc2V0cSBj aGFycyAoY29ucyBudW0gY2hhcnMpKQ0KCSAgICAoc2V0cSBpZHggMSkpKQ0K ICAgICAgKHdoaWxlICg8IGlkeCBsZW4pDQoJKGxldCogKChuaWR4ICgrIGlk eCAyKSkNCgkgICAgICAgKG51bSAoaGV4bC1oZXgtc3RyaW5nLXRvLWludGVn ZXIgKHN1YnN0cmluZyBzdHIgaWR4IG5pZHgpKSkpDQoJICAoc2V0cSBjaGFy cyAoY29ucyBudW0gY2hhcnMpKQ0KCSAgKHNldHEgaWR4IG5pZHgpKSkpDQog ICAgKHNldHEgY2hhcnMgKG5yZXZlcnNlIGNoYXJzKSkNCiAgICAod2hpbGUg KD4gYXJnIDApDQogICAgICAobGV0ICgoY2hhcnMgY2hhcnMpKQ0KCSh3aGls ZSBjaGFycw0KCSAgKGhleGwtaW5zZXJ0LWNoYXIgKGNhciBjaGFycykgMSkN CgkgIChzZXRxIGNoYXJzIChjZHIgY2hhcnMpKSkpDQogICAgICAoc2V0cSBh cmcgKC0gYXJnIDEpKSkpKQ0KDQooZGVmdW4gaGV4bC1pbnNlcnQtZGVjaW1h bC1jaGFyIChhcmcpDQogICJJbnNlcnQgYSBjaGFyYWN0ZXIgZ2l2ZW4gYnkg aXRzIGRlY2ltYWwgY29kZSBBUkcgdGltZXMgYXQgcG9pbnQuIg0KICAoaW50 ZXJhY3RpdmUgInAiKQ0KICAobGV0ICgobnVtIChzdHJpbmctdG8tbnVtYmVy IChyZWFkLXN0cmluZyAiRGVjaW1hbCBOdW1iZXI6ICIpKSkpDQogICAgKGlm ICg8IG51bSAwKQ0KCShlcnJvciAiRGVjaW1hbCBudW1iZXIgb3V0IG9mIHJh bmdlIikNCiAgICAgIChoZXhsLWluc2VydC1tdWx0aWJ5dGUtY2hhciBudW0g YXJnKSkpKQ0KDQooZGVmdW4gaGV4bC1pbnNlcnQtb2N0YWwtY2hhciAoYXJn KQ0KICAiSW5zZXJ0IGEgY2hhcmFjdGVyIGdpdmVuIGJ5IGl0cyBvY3RhbCBj b2RlIEFSRyB0aW1lcyBhdCBwb2ludC4iDQogIChpbnRlcmFjdGl2ZSAicCIp DQogIChsZXQgKChudW0gKGhleGwtb2N0YWwtc3RyaW5nLXRvLWludGVnZXIg KHJlYWQtc3RyaW5nICJPY3RhbCBOdW1iZXI6ICIpKSkpDQogICAgKGlmICg8 IG51bSAwKQ0KCShlcnJvciAiRGVjaW1hbCBudW1iZXIgb3V0IG9mIHJhbmdl IikNCiAgICAgIChoZXhsLWluc2VydC1tdWx0aWJ5dGUtY2hhciBudW0gYXJn KSkpKQ0KDQooZGVmdW4gaGV4bC1mb2xsb3ctYXNjaWkgKCZvcHRpb25hbCBh cmcpDQogICJUb2dnbGUgZm9sbG93aW5nIEFTQ0lJIGluIEhleGwgYnVmZmVy cy4NCldpdGggcHJlZml4IEFSRywgdHVybiBvbiBmb2xsb3dpbmcgaWYgYW5k IG9ubHkgaWYgQVJHIGlzIHBvc2l0aXZlLg0KV2hlbiBmb2xsb3dpbmcgaXMg ZW5hYmxlZCwgdGhlIEFTQ0lJIGNoYXJhY3RlciBjb3JyZXNwb25kaW5nIHRv IHRoZQ0KZWxlbWVudCB1bmRlciB0aGUgcG9pbnQgaXMgaGlnaGxpZ2h0ZWQu DQpDdXN0b21pemUgdGhlIHZhcmlhYmxlIGBoZXhsLWZvbGxvdy1hc2NpaScg dG8gZGlzYWJsZSB0aGlzIGZlYXR1cmUuIg0KICAoaW50ZXJhY3RpdmUgIlAi KQ0KICAobGV0ICgob24tcCAoaWYgYXJnDQoJCSAgKD4gKHByZWZpeC1udW1l cmljLXZhbHVlIGFyZykgMCkNCgkgICAgICAgKG5vdCBoZXhsLWFzY2lpLW92 ZXJsYXkpKSkpDQoNCiAgICAoaWYgb24tcA0KICAgICAgOzsgdHVybiBpdCBv bg0KICAgICAgKGlmIChub3QgaGV4bC1hc2NpaS1vdmVybGF5KQ0KCSAgKHBy b2duDQoJICAgIChzZXRxIGhleGwtYXNjaWktb3ZlcmxheSAobWFrZS1vdmVy bGF5IDEgMSkNCgkJICBoZXhsLWZvbGxvdy1hc2NpaSB0KQ0KCSAgICAob3Zl cmxheS1wdXQgaGV4bC1hc2NpaS1vdmVybGF5ICdmYWNlICdoaWdobGlnaHQp DQoJICAgIChhZGQtaG9vayAncG9zdC1jb21tYW5kLWhvb2sgJ2hleGwtZm9s bG93LWFzY2lpLWZpbmQgbmlsIHQpKSkNCiAgICAgIDs7IHR1cm4gaXQgb2Zm DQogICAgICAoaWYgaGV4bC1hc2NpaS1vdmVybGF5DQoJICAocHJvZ24NCgkg ICAgKGRlbGV0ZS1vdmVybGF5IGhleGwtYXNjaWktb3ZlcmxheSkNCgkgICAg KHNldHEgaGV4bC1hc2NpaS1vdmVybGF5IG5pbA0KCQkgIGhleGwtZm9sbG93 LWFzY2lpIG5pbCkNCgkgICAgKHJlbW92ZS1ob29rICdwb3N0LWNvbW1hbmQt aG9vayAnaGV4bC1mb2xsb3ctYXNjaWktZmluZCB0KQ0KCSAgICApKSkpKQ0K DQooZGVmdW4gaGV4bC1hY3RpdmF0ZS1ydWxlciAoKQ0KICAiQWN0aXZhdGUg YHJ1bGVyLW1vZGUnLiINCiAgKHJlcXVpcmUgJ3J1bGVyLW1vZGUpDQogICh1 bmxlc3MgKGJvdW5kcCAnaGV4bC1tb2RlLW9sZC1ydWxlci1mdW5jdGlvbikN CiAgICAoc2V0IChtYWtlLWxvY2FsLXZhcmlhYmxlICdoZXhsLW1vZGUtb2xk LXJ1bGVyLWZ1bmN0aW9uKQ0KCSBydWxlci1tb2RlLXJ1bGVyLWZ1bmN0aW9u KSkNCiAgKHNldCAobWFrZS1sb2NhbC12YXJpYWJsZSAncnVsZXItbW9kZS1y dWxlci1mdW5jdGlvbikNCiAgICAgICAnaGV4bC1tb2RlLXJ1bGVyKQ0KICAo cnVsZXItbW9kZSAxKSkNCg0KKGRlZnVuIGhleGwtZm9sbG93LWxpbmUgKCkN CiAgIkFjdGl2YXRlIGBobC1saW5lLW1vZGUnLiINCiAgKHJlcXVpcmUgJ2hs LWxpbmUpDQogICh1bmxlc3MgKGJvdW5kcCAnaGV4bC1tb2RlLW9sZC1obC1s aW5lLXJhbmdlLWZ1bmN0aW9uKQ0KICAgIChzZXQgKG1ha2UtbG9jYWwtdmFy aWFibGUgJ2hleGwtbW9kZS1vbGQtaGwtbGluZS1yYW5nZS1mdW5jdGlvbikN CgkgaGwtbGluZS1yYW5nZS1mdW5jdGlvbikpDQogICh1bmxlc3MgKGJvdW5k cCAnaGV4bC1tb2RlLW9sZC1obC1saW5lLWZhY2UpDQogICAgKHNldCAobWFr ZS1sb2NhbC12YXJpYWJsZSAnaGV4bC1tb2RlLW9sZC1obC1saW5lLWZhY2Up DQoJIGhsLWxpbmUtZmFjZSkpDQogIChzZXQgKG1ha2UtbG9jYWwtdmFyaWFi bGUgJ2hsLWxpbmUtcmFuZ2UtZnVuY3Rpb24pDQogICAgICAgJ2hleGwtaGln aGxpZ2h0LWxpbmUtcmFuZ2UpDQogIChzZXQgKG1ha2UtbG9jYWwtdmFyaWFi bGUgJ2hsLWxpbmUtZmFjZSkNCiAgICAgICAnaGlnaGxpZ2h0KQ0KICAoaGwt bGluZS1tb2RlIDEpKQ0KDQooZGVmdW4gaGV4bC1oaWdobGlnaHQtbGluZS1y YW5nZSAoKQ0KICAiUmV0dXJuIHRoZSByYW5nZSBvZiBhZGRyZXNzIHJlZ2lv biBmb3IgdGhlIHBvaW50Lg0KVGhpcyBmdW5jdGlvbiBpcyBhc3N1bWVkIHRv IGJlIHVzZWQgYXMgY2FsbGJhY2sgZnVuY3Rpb24gZm9yIGBobC1saW5lLW1v ZGUnLiINCiAgKGNvbnMNCiAgIChsaW5lLWJlZ2lubmluZy1wb3NpdGlvbikN CiAgIDs7IDkgc3RhbmRzIGZvciAobGVuZ3RoICI4NzY1NDMyMToiKQ0KICAg KCsgKGxpbmUtYmVnaW5uaW5nLXBvc2l0aW9uKSA5KSkpDQoNCihkZWZ1biBo ZXhsLWZvbGxvdy1hc2NpaS1maW5kICgpDQogICJGaW5kIGFuZCBoaWdobGln aHQgdGhlIEFTQ0lJIGVsZW1lbnQgY29ycmVzcG9uZGluZyB0byBjdXJyZW50 IHBvaW50LiINCiAgKGxldCAoKHBvcyAoKyAoaGV4bC1hc2NpaS1zdGFydC1j b2x1bW4pDQoJCSgtIChwb2ludCkgKGN1cnJlbnQtY29sdW1uKSkNCgkJKG1v ZCAoaGV4bC1jdXJyZW50LWFkZHJlc3MpIDE2KSkpKQ0KICAgIChtb3ZlLW92 ZXJsYXkgaGV4bC1hc2NpaS1vdmVybGF5IHBvcyAoMSsgcG9zKSkNCiAgICAp KQ0KDQooZGVmdW4gaGV4bC1tb2RlLXJ1bGVyICgpDQogICJSZXR1cm4gYSBz dHJpbmcgcnVsZXIgZm9yIGhleGwgbW9kZS4iDQogIChsZXQqICgoaGlnaGxp Z2h0IChtb2QgKGhleGwtY3VycmVudC1hZGRyZXNzKSAxNikpDQoJIChzICIg ODc2NTQzMjEgIDAwMTEgMjIzMyA0NDU1IDY2NzcgODg5OSBhYWJiIGNjZGQg ZWVmZiAgMDEyMzQ1Njc4OWFiY2RlZiIpDQoJIChwb3MgMCkpDQogICAgKHNl dC10ZXh0LXByb3BlcnRpZXMgMCAobGVuZ3RoIHMpIG5pbCBzKQ0KICAgIDs7 IFR1cm4gc3BhY2VzIGluIHRoZSBoZWFkZXIgaW50byBzdHJldGNoIHNwZWNz IHNvIHRoZXkgd29yaw0KICAgIDs7IHJlZ2FyZGxlc3Mgb2YgdGhlIGhlYWRl ci1saW5lIGZhY2UuDQogICAgKHdoaWxlIChzdHJpbmctbWF0Y2ggIlsgXHRd KyIgcyBwb3MpDQogICAgICAoc2V0cSBwb3MgKG1hdGNoLWVuZCAwKSkNCiAg ICAgIChwdXQtdGV4dC1wcm9wZXJ0eSAobWF0Y2gtYmVnaW5uaW5nIDApIHBv cyAnZGlzcGxheQ0KCQkJIDs7IEFzc3VtZSBmaXhlZC1zaXplIGNoYXJzDQoJ CQkgYChzcGFjZSA6YWxpZ24tdG8gLCgxLSBwb3MpKQ0KCQkJIHMpKQ0KICAg IDs7IEhpZ2hsaWdodCB0aGUgY3VycmVudCBjb2x1bW4uDQogICAgKHB1dC10 ZXh0LXByb3BlcnR5ICgrIDExICgvICgqIDUgaGlnaGxpZ2h0KSAyKSkNCgkJ ICAgICAgICgrIDEzICgvICgqIDUgaGlnaGxpZ2h0KSAyKSkNCgkJICAgICAg ICdmYWNlICdoaWdobGlnaHQgcykNCiAgICA7OyBIaWdobGlnaHQgdGhlIGN1 cnJlbnQgYXNjaWkgY29sdW1uDQogICAgKHB1dC10ZXh0LXByb3BlcnR5ICgr IDEzIDM5IGhpZ2hsaWdodCkgKCsgMTMgNDAgaGlnaGxpZ2h0KQ0KCQkgICAg ICAgJ2ZhY2UgJ2hpZ2hsaWdodCBzKQ0KICAgIHMpKQ0KDQo7OyBzdGFydHVw IHN0dWZmLg0KDQooaWYgaGV4bC1tb2RlLW1hcA0KICAgIG5pbA0KICAoc2V0 cSBoZXhsLW1vZGUtbWFwIChtYWtlLWtleW1hcCkpDQogIDs7IE1ha2UgYWxs IHNlbGYtaW5zZXJ0aW5nIGtleXMgZ28gdGhyb3VnaCBoZXhsLXNlbGYtaW5z ZXJ0LWNvbW1hbmQsDQogIDs7IGJlY2F1c2Ugd2UgbmVlZCB0byBjb252ZXJ0 IHRoZW0gdG8gdW5pYnl0ZSBjaGFyYWN0ZXJzIGJlZm9yZQ0KICA7OyBpbnNl cnRpbmcgdGhlbSBpbnRvIHRoZSBidWZmZXIuDQogIChkZWZpbmUta2V5IGhl eGwtbW9kZS1tYXAgW3JlbWFwIHNlbGYtaW5zZXJ0LWNvbW1hbmRdICdoZXhs LXNlbGYtaW5zZXJ0LWNvbW1hbmQpDQoNCiAgKGRlZmluZS1rZXkgaGV4bC1t b2RlLW1hcCAiXEMtbSIgJ2hleGwtc2VsZi1pbnNlcnQtY29tbWFuZCkNCiAg KGRlZmluZS1rZXkgaGV4bC1tb2RlLW1hcCBbbGVmdF0gJ2hleGwtYmFja3dh cmQtY2hhcikNCiAgKGRlZmluZS1rZXkgaGV4bC1tb2RlLW1hcCBbcmlnaHRd ICdoZXhsLWZvcndhcmQtY2hhcikNCiAgKGRlZmluZS1rZXkgaGV4bC1tb2Rl LW1hcCBbdXBdICdoZXhsLXByZXZpb3VzLWxpbmUpDQogIChkZWZpbmUta2V5 IGhleGwtbW9kZS1tYXAgW2Rvd25dICdoZXhsLW5leHQtbGluZSkNCiAgKGRl ZmluZS1rZXkgaGV4bC1tb2RlLW1hcCBbTS1sZWZ0XSAnaGV4bC1iYWNrd2Fy ZC1zaG9ydCkNCiAgKGRlZmluZS1rZXkgaGV4bC1tb2RlLW1hcCBbP1xlIGxl ZnRdICdoZXhsLWJhY2t3YXJkLXNob3J0KQ0KICAoZGVmaW5lLWtleSBoZXhs LW1vZGUtbWFwIFtNLXJpZ2h0XSAnaGV4bC1mb3J3YXJkLXNob3J0KQ0KICAo ZGVmaW5lLWtleSBoZXhsLW1vZGUtbWFwIFs/XGUgcmlnaHRdICdoZXhsLWZv cndhcmQtc2hvcnQpDQogIChkZWZpbmUta2V5IGhleGwtbW9kZS1tYXAgW25l eHRdICdoZXhsLXNjcm9sbC11cCkNCiAgKGRlZmluZS1rZXkgaGV4bC1tb2Rl LW1hcCBbcHJpb3JdICdoZXhsLXNjcm9sbC1kb3duKQ0KICAoZGVmaW5lLWtl eSBoZXhsLW1vZGUtbWFwIFtob21lXSAnaGV4bC1iZWdpbm5pbmctb2YtbGlu ZSkNCiAgKGRlZmluZS1rZXkgaGV4bC1tb2RlLW1hcCBbZW5kXSAnaGV4bC1l bmQtb2YtbGluZSkNCiAgKGRlZmluZS1rZXkgaGV4bC1tb2RlLW1hcCBbQy1o b21lXSAnaGV4bC1iZWdpbm5pbmctb2YtYnVmZmVyKQ0KICAoZGVmaW5lLWtl eSBoZXhsLW1vZGUtbWFwIFtDLWVuZF0gJ2hleGwtZW5kLW9mLWJ1ZmZlcikN CiAgKGRlZmluZS1rZXkgaGV4bC1tb2RlLW1hcCBbZGVsZXRlY2hhcl0gJ3Vu ZGVmaW5lZCkNCiAgKGRlZmluZS1rZXkgaGV4bC1tb2RlLW1hcCBbZGVsZXRl bGluZV0gJ3VuZGVmaW5lZCkNCiAgKGRlZmluZS1rZXkgaGV4bC1tb2RlLW1h cCBbaW5zZXJ0bGluZV0gJ3VuZGVmaW5lZCkNCiAgKGRlZmluZS1rZXkgaGV4 bC1tb2RlLW1hcCBbUy1kZWxldGVdICd1bmRlZmluZWQpDQogIChkZWZpbmUt a2V5IGhleGwtbW9kZS1tYXAgIlwxNzciICd1bmRlZmluZWQpDQoNCiAgKGRl ZmluZS1rZXkgaGV4bC1tb2RlLW1hcCAiXEMtYSIgJ2hleGwtYmVnaW5uaW5n LW9mLWxpbmUpDQogIChkZWZpbmUta2V5IGhleGwtbW9kZS1tYXAgIlxDLWIi ICdoZXhsLWJhY2t3YXJkLWNoYXIpDQogIChkZWZpbmUta2V5IGhleGwtbW9k ZS1tYXAgIlxDLWQiICd1bmRlZmluZWQpDQogIChkZWZpbmUta2V5IGhleGwt bW9kZS1tYXAgIlxDLWUiICdoZXhsLWVuZC1vZi1saW5lKQ0KICAoZGVmaW5l LWtleSBoZXhsLW1vZGUtbWFwICJcQy1mIiAnaGV4bC1mb3J3YXJkLWNoYXIp DQoNCiAgKGlmIChub3QgKG1lbXEgKGtleS1iaW5kaW5nIChjaGFyLXRvLXN0 cmluZyBoZWxwLWNoYXIpKQ0KICAgICAgICAgICAgICAgICAnKGhlbHAtY29t bWFuZCBlaGVscC1jb21tYW5kKSkpDQogICAgICAoZGVmaW5lLWtleSBoZXhs LW1vZGUtbWFwIChjaGFyLXRvLXN0cmluZyBoZWxwLWNoYXIpICd1bmRlZmlu ZWQpKQ0KDQogIChkZWZpbmUta2V5IGhleGwtbW9kZS1tYXAgIlxDLWsiICd1 bmRlZmluZWQpDQogIChkZWZpbmUta2V5IGhleGwtbW9kZS1tYXAgIlxDLW4i ICdoZXhsLW5leHQtbGluZSkNCiAgKGRlZmluZS1rZXkgaGV4bC1tb2RlLW1h cCAiXEMtbyIgJ3VuZGVmaW5lZCkNCiAgKGRlZmluZS1rZXkgaGV4bC1tb2Rl LW1hcCAiXEMtcCIgJ2hleGwtcHJldmlvdXMtbGluZSkNCiAgKGRlZmluZS1r ZXkgaGV4bC1tb2RlLW1hcCAiXEMtcSIgJ2hleGwtcXVvdGVkLWluc2VydCkN CiAgKGRlZmluZS1rZXkgaGV4bC1tb2RlLW1hcCAiXEMtdCIgJ3VuZGVmaW5l ZCkNCiAgKGRlZmluZS1rZXkgaGV4bC1tb2RlLW1hcCAiXEMtdiIgJ2hleGwt c2Nyb2xsLXVwKQ0KICAoZGVmaW5lLWtleSBoZXhsLW1vZGUtbWFwICJcQy13 IiAndW5kZWZpbmVkKQ0KICAoZGVmaW5lLWtleSBoZXhsLW1vZGUtbWFwICJc Qy15IiAndW5kZWZpbmVkKQ0KDQogIChmc2V0ICdoZXhsLUVTQy1wcmVmaXgg KGNvcHkta2V5bWFwICdFU0MtcHJlZml4KSkNCiAgKGRlZmluZS1rZXkgaGV4 bC1tb2RlLW1hcCAiXGUiICdoZXhsLUVTQy1wcmVmaXgpDQogIChkZWZpbmUt a2V5IGhleGwtbW9kZS1tYXAgIlxlXEMtYSIgJ2hleGwtYmVnaW5uaW5nLW9m LTUxMmItcGFnZSkNCiAgKGRlZmluZS1rZXkgaGV4bC1tb2RlLW1hcCAiXGVc Qy1iIiAnaGV4bC1iYWNrd2FyZC1zaG9ydCkNCiAgKGRlZmluZS1rZXkgaGV4 bC1tb2RlLW1hcCAiXGVcQy1kIiAnaGV4bC1pbnNlcnQtZGVjaW1hbC1jaGFy KQ0KICAoZGVmaW5lLWtleSBoZXhsLW1vZGUtbWFwICJcZVxDLWUiICdoZXhs LWVuZC1vZi01MTJiLXBhZ2UpDQogIChkZWZpbmUta2V5IGhleGwtbW9kZS1t YXAgIlxlXEMtZiIgJ2hleGwtZm9yd2FyZC1zaG9ydCkNCiAgKGRlZmluZS1r ZXkgaGV4bC1tb2RlLW1hcCAiXGVcQy1pIiAndW5kZWZpbmVkKQ0KICAoZGVm aW5lLWtleSBoZXhsLW1vZGUtbWFwICJcZVxDLWoiICd1bmRlZmluZWQpDQog IChkZWZpbmUta2V5IGhleGwtbW9kZS1tYXAgIlxlXEMtayIgJ3VuZGVmaW5l ZCkNCiAgKGRlZmluZS1rZXkgaGV4bC1tb2RlLW1hcCAiXGVcQy1vIiAnaGV4 bC1pbnNlcnQtb2N0YWwtY2hhcikNCiAgKGRlZmluZS1rZXkgaGV4bC1tb2Rl LW1hcCAiXGVcQy1xIiAndW5kZWZpbmVkKQ0KICAoZGVmaW5lLWtleSBoZXhs LW1vZGUtbWFwICJcZVxDLXQiICd1bmRlZmluZWQpDQogIChkZWZpbmUta2V5 IGhleGwtbW9kZS1tYXAgIlxlXEMteCIgJ2hleGwtaW5zZXJ0LWhleC1jaGFy KQ0KICAoZGVmaW5lLWtleSBoZXhsLW1vZGUtbWFwICJcZWIiICdoZXhsLWJh Y2t3YXJkLXdvcmQpDQogIChkZWZpbmUta2V5IGhleGwtbW9kZS1tYXAgIlxl YyIgJ3VuZGVmaW5lZCkNCiAgKGRlZmluZS1rZXkgaGV4bC1tb2RlLW1hcCAi XGVkIiAndW5kZWZpbmVkKQ0KICAoZGVmaW5lLWtleSBoZXhsLW1vZGUtbWFw ICJcZWYiICdoZXhsLWZvcndhcmQtd29yZCkNCiAgKGRlZmluZS1rZXkgaGV4 bC1tb2RlLW1hcCAiXGVnIiAnaGV4bC1nb3RvLWhleC1hZGRyZXNzKQ0KICAo ZGVmaW5lLWtleSBoZXhsLW1vZGUtbWFwICJcZWkiICd1bmRlZmluZWQpDQog IChkZWZpbmUta2V5IGhleGwtbW9kZS1tYXAgIlxlaiIgJ2hleGwtZ290by1h ZGRyZXNzKQ0KICAoZGVmaW5lLWtleSBoZXhsLW1vZGUtbWFwICJcZWsiICd1 bmRlZmluZWQpDQogIChkZWZpbmUta2V5IGhleGwtbW9kZS1tYXAgIlxlbCIg J3VuZGVmaW5lZCkNCiAgKGRlZmluZS1rZXkgaGV4bC1tb2RlLW1hcCAiXGVx IiAndW5kZWZpbmVkKQ0KICAoZGVmaW5lLWtleSBoZXhsLW1vZGUtbWFwICJc ZXMiICd1bmRlZmluZWQpDQogIChkZWZpbmUta2V5IGhleGwtbW9kZS1tYXAg IlxldCIgJ3VuZGVmaW5lZCkNCiAgKGRlZmluZS1rZXkgaGV4bC1tb2RlLW1h cCAiXGV1IiAndW5kZWZpbmVkKQ0KICAoZGVmaW5lLWtleSBoZXhsLW1vZGUt bWFwICJcZXYiICdoZXhsLXNjcm9sbC1kb3duKQ0KICAoZGVmaW5lLWtleSBo ZXhsLW1vZGUtbWFwICJcZXkiICd1bmRlZmluZWQpDQogIChkZWZpbmUta2V5 IGhleGwtbW9kZS1tYXAgIlxleiIgJ3VuZGVmaW5lZCkNCiAgKGRlZmluZS1r ZXkgaGV4bC1tb2RlLW1hcCAiXGU8IiAnaGV4bC1iZWdpbm5pbmctb2YtYnVm ZmVyKQ0KICAoZGVmaW5lLWtleSBoZXhsLW1vZGUtbWFwICJcZT4iICdoZXhs LWVuZC1vZi1idWZmZXIpDQoNCiAgKGZzZXQgJ2hleGwtQy1jLXByZWZpeCAo Y29weS1rZXltYXAgbW9kZS1zcGVjaWZpYy1tYXApKQ0KICAoZGVmaW5lLWtl eSBoZXhsLW1vZGUtbWFwICJcQy1jIiAnaGV4bC1DLWMtcHJlZml4KQ0KICAo ZGVmaW5lLWtleSBoZXhsLW1vZGUtbWFwICJcQy1jXEMtYyIgJ2hleGwtbW9k ZS1leGl0KQ0KDQogIChmc2V0ICdoZXhsLUMteC1wcmVmaXggKGNvcHkta2V5 bWFwICdDb250cm9sLVgtcHJlZml4KSkNCiAgKGRlZmluZS1rZXkgaGV4bC1t b2RlLW1hcCAiXEMteCIgJ2hleGwtQy14LXByZWZpeCkNCiAgKGRlZmluZS1r ZXkgaGV4bC1tb2RlLW1hcCAiXEMteFsiICdoZXhsLWJlZ2lubmluZy1vZi0x ay1wYWdlKQ0KICAoZGVmaW5lLWtleSBoZXhsLW1vZGUtbWFwICJcQy14XSIg J2hleGwtZW5kLW9mLTFrLXBhZ2UpDQogIChkZWZpbmUta2V5IGhleGwtbW9k ZS1tYXAgIlxDLXhcQy1wIiAndW5kZWZpbmVkKQ0KICAoZGVmaW5lLWtleSBo ZXhsLW1vZGUtbWFwICJcQy14XEMtcyIgJ2hleGwtc2F2ZS1idWZmZXIpDQog IChkZWZpbmUta2V5IGhleGwtbW9kZS1tYXAgIlxDLXhcQy10IiAndW5kZWZp bmVkKSkNCg0KKGVhc3ktbWVudS1kZWZpbmUgaGV4bC1tZW51IGhleGwtbW9k ZS1tYXAgIkhleGwgTW9kZSBtZW51Ig0KICBgKCJIZXhsIg0KICAgIDpoZWxw ICJIZXhsLXNwZWNpZmljIEZlYXR1cmVzIg0KDQogICAgWyJCYWNrd2FyZCBz aG9ydCIgaGV4bC1iYWNrd2FyZC1zaG9ydA0KICAgICA6aGVscCAiTW92ZSB0 byBsZWZ0IGEgc2hvcnQiXQ0KICAgIFsiRm9yd2FyZCBzaG9ydCIgaGV4bC1m b3J3YXJkLXNob3J0DQogICAgIDpoZWxwICJNb3ZlIHRvIHJpZ2h0IGEgc2hv cnQiXQ0KICAgIFsiQmFja3dhcmQgd29yZCIgaGV4bC1iYWNrd2FyZC1zaG9y dA0KICAgICA6aGVscCAiTW92ZSB0byBsZWZ0IGEgd29yZCJdDQogICAgWyJG b3J3YXJkIHdvcmQiIGhleGwtZm9yd2FyZC1zaG9ydA0KICAgICA6aGVscCAi TW92ZSB0byByaWdodCBhIHdvcmQiXQ0KICAgICItIg0KICAgIFsiQmVnaW5u aW5nIG9mIDUxMmIgcGFnZSIgaGV4bC1iZWdpbm5pbmctb2YtNTEyYi1wYWdl DQogICAgIDpoZWxwICJHbyB0byBiZWdpbm5pbmcgb2YgNTEyIGJ5dGUgYm91 bmRhcnkiXQ0KICAgIFsiRW5kIG9mIDUxMmIgcGFnZSIgaGV4bC1lbmQtb2Yt NTEyYi1wYWdlDQogICAgIDpoZWxwICJHbyB0byBlbmQgb2YgNTEyIGJ5dGUg Ym91bmRhcnkiXQ0KICAgIFsiQmVnaW5uaW5nIG9mIDFLIHBhZ2UiIGhleGwt YmVnaW5uaW5nLW9mLTFrLXBhZ2UNCiAgICAgOmhlbHAgIkdvIHRvIGJlZ2lu bmluZyBvZiAxS0IgYm91bmRhcnkiXQ0KICAgIFsiRW5kIG9mIDFLIHBhZ2Ui IGhleGwtZW5kLW9mLTFrLXBhZ2UNCiAgICAgOmhlbHAgIkdvIHRvIGVuZCBv ZiAxS0IgYm91bmRhcnkiXQ0KICAgICItIg0KICAgIFsiR28gdG8gYWRkcmVz cyIgaGV4bC1nb3RvLWFkZHJlc3MNCiAgICAgOmhlbHAgIkdvIHRvIGhleGwt bW9kZSAoZGVjaW1hbCkgYWRkcmVzcyJdDQogICAgWyJHbyB0byBhZGRyZXNz IiBoZXhsLWdvdG8taGV4LWFkZHJlc3MNCiAgICAgOmhlbHAgIkdvIHRvIGhl eGwtbW9kZSAoaGV4IHN0cmluZykgYWRkcmVzcyJdDQogICAgIi0iDQogICAg WyJJbnNlcnQgZGVjaW1hbCBjaGFyIiBoZXhsLWluc2VydC1kZWNpbWFsLWNo YXINCiAgICAgOmhlbHAgIkluc2VydCBhIGNoYXJhY3RlciBnaXZlbiBieSBp dHMgZGVjaW1hbCBjb2RlIl0NCiAgICBbIkluc2VydCBoZXggY2hhciIgaGV4 bC1pbnNlcnQtaGV4LWNoYXINCiAgICAgOmhlbHAgIkluc2VydCBhIGNoYXJh Y3RlciBnaXZlbiBieSBpdHMgaGV4YWRlY2ltYWwgY29kZSJdDQogICAgWyJJ bnNlcnQgb2N0YWwgY2hhciIgaGV4bC1pbnNlcnQtb2N0YWwtY2hhcg0KICAg ICA6aGVscCAiSW5zZXJ0IGEgY2hhcmFjdGVyIGdpdmVuIGJ5IGl0cyBvY3Rh bCBjb2RlIl0NCiAgICAiLSINCiAgICBbIkV4aXQgaGV4bCBtb2RlIiBoZXhs LW1vZGUtZXhpdA0KICAgICA6aGVscCAiRXhpdCBoZXhsIG1vZGUgcmV0dXJu aW5nIHRvIHByZXZpb3VzIG1vZGUiXSkpDQoNCihwcm92aWRlICdoZXhsKQ0K DQo7OyBhcmNoLXRhZzogZDVhN2FhOGEtOWJjZS00ODBiLWJjZmYtNmM0Yzdj YTVlYTRhDQo7OzsgaGV4bC5lbCBlbmRzIGhlcmUNCg== --8323328-766893094-1233969643=:8051 Content-Type: TEXT/x-diff; charset=US-ASCII; name=hexl.variable-word-size.patch Content-Transfer-Encoding: BASE64 Content-ID: Content-Description: Content-Disposition: attachment; filename=hexl.variable-word-size.patch LS0tIGhleGwub3JpZy5lbAkyMDA5LTAyLTA3IDAwOjQwOjQ5LjAwMDAwMDAw MCArMDAwMA0KKysrIGhleGwuZWwJMjAwOS0wMi0wNyAwMTowODo1NS4wMDAw MDAwMDAgKzAwMDANCkBAIC01MSw2ICs1MSwxMyBAQA0KICAgIkVkaXQgYSBm aWxlIGluIGEgaGV4IGR1bXAgZm9ybWF0IHVzaW5nIHRoZSBoZXhsIGZpbHRl ci4iDQogICA6Z3JvdXAgJ2RhdGEpDQogDQorKGRlZmN1c3RvbSBoZXhsLWJp dHMgMTYNCisgICJUaGUgYml0IGdyb3VwaW5nIHRoYXQgaGV4bCB3aWxsIHVz ZSINCisgIDp0eXBlICcoY2hvaWNlIChjb25zdCA4ICkNCisgICAgICAgICAg ICAgICAgIChjb25zdCAxNikNCisgICAgICAgICAgICAgICAgIChjb25zdCAz MikNCisgICAgICAgICAgICAgICAgIChjb25zdCA2NCkpDQorICA6Z3JvdXAg J2hleGwpDQogDQogKGRlZmN1c3RvbSBoZXhsLXByb2dyYW0gImhleGwiDQog ICAiVGhlIHByb2dyYW0gdGhhdCB3aWxsIGhleGxpZnkgYW5kIGRlaGV4bGlm eSBpdHMgc3RkaW4uDQpAQCAtMTM1LDYgKzE0MiwxNSBAQA0KIA0KIChwdXQg J2hleGwtbW9kZSAnbW9kZS1jbGFzcyAnc3BlY2lhbCkNCiANCis7OyAxMCBj aGFycyBmb3IgdGhlICJhZGRyZXNzOiAiDQorOzsgMzIgY2hhcnMgZm9yIHRo ZSBoZXhsaWZpZWQgYnl0ZXMNCis7OyAxIGNoYXIgZm9yIHRoZSBzcGFjZSAN Cis7OyAxNiBjaGFycyBmb3IgdGhlIGNoYXJhY3RlciBkaXNwbGF5DQorOzsg WCBjaGFycyBmb3IgdGhlIHNwYWNlcyAoMTI4IGJpdHMgZGl2aWRlZCBieSB0 aGUgaGV4bC1iaXRzKQ0KKzs7IDEgY2hhciBmb3IgdGhlIG5ld2xpbmUuDQor KGRlZnVuIGhleGwtbGluZS1kaXNwbGVuICgpDQorICAoKyA2MCAoLyAxMjgg KG9yIGhleGwtYml0cyAxNikpKSkNCisNCiA7OzsjIyNhdXRvbG9hZA0KIChk ZWZ1biBoZXhsLW1vZGUgKCZvcHRpb25hbCBhcmcpDQogICAiXFw8aGV4bC1t b2RlLW1hcD5BIG1vZGUgZm9yIGVkaXRpbmcgYmluYXJ5IGZpbGVzIGluIGhl eCBkdW1wIGZvcm1hdC4NCkBAIC0yMTMsMjcgKzIyOSwzMyBAQA0KICAgKHVu bGVzcyAoZXEgbWFqb3ItbW9kZSAnaGV4bC1tb2RlKQ0KICAgICAobGV0ICgo bW9kaWZpZWQgKGJ1ZmZlci1tb2RpZmllZC1wKSkNCiAJICAoaW5oaWJpdC1y ZWFkLW9ubHkgdCkNCi0JICAob3JpZ2luYWwtcG9pbnQgKC0gKHBvaW50KSAo cG9pbnQtbWluKSkpKQ0KKwkgIChvcmlnaW5hbC1wb2ludCAoLSAocG9pbnQp IChwb2ludC1taW4pKSkNCisJICBtYXgtYWRkcmVzcykNCiAgICAgICAoYW5k IChlb2JwKSAobm90IChib2JwKSkNCiAJICAgKHNldHEgb3JpZ2luYWwtcG9p bnQgKDEtIG9yaWdpbmFsLXBvaW50KSkpDQotICAgICAgOzsgSWYgYGhleGwt bW9kZScgaXMgaW52b2tlZCB3aXRoIGFuIGFyZ3VtZW50IHRoZSBidWZmZXIg aXMgYXNzdW1lZCB0bw0KLSAgICAgIDs7IGJlIGluIGhleGwgZm9ybWF0Lg0K LSAgICAgICh3aGVuIChtZW1xIGFyZyAnKDEgbmlsKSkNCisgICAgICAoaWYg KG5vdCAobWVtcSBhcmcgJygxIG5pbCkpKQ0KKwkgIDs7IGlmIG5vIGFyZ3Vt ZW50IHRoZW4gd2UgZ3Vlc3MgYXQgaGV4bC1tYXgtYWRkcmVzcw0KKyAgICAg ICAgICAoc2V0cSBtYXgtYWRkcmVzcyANCisgICAgICAgICAgICAgICAgKCsg KCogKC8gKDEtIChidWZmZXItc2l6ZSkpIChoZXhsLWxpbmUtZGlzcGxlbikp IDE2KSAxNSkpDQorICAgICAgICAoc2V0cSBtYXgtYWRkcmVzcyAoMS0gKGJ1 ZmZlci1zaXplKSkpDQogCTs7IElmIHRoZSBidWZmZXIncyBFT0wgdHlwZSBp cyAtZG9zLCB3ZSBuZWVkIHRvIGFjY291bnQgZm9yDQogCTs7IGV4dHJhIENS IGNoYXJhY3RlcnMgYWRkZWQgd2hlbiBoZXhsaWZ5LWJ1ZmZlciB3cml0ZXMg dGhlDQogCTs7IGJ1ZmZlciB0byBhIGZpbGUuDQogICAgICAgICA7OyBGSVhN RTogVGhpcyBkb2Vzbid0IHRha2UgaW50byBhY2NvdW50IG11bHRpYnl0ZSBj b2Rpbmcgc3lzdGVtcy4NCiAJKHdoZW4gKGVxIChjb2Rpbmctc3lzdGVtLWVv bC10eXBlIGJ1ZmZlci1maWxlLWNvZGluZy1zeXN0ZW0pIDEpDQotICAgICAg ICAgIChzZXRxIG9yaWdpbmFsLXBvaW50ICgrIChjb3VudC1saW5lcyAocG9p bnQtbWluKSAocG9pbnQpKQ0KKyAgICAgICAgICAoc2V0cSBtYXgtYWRkcmVz cyAoKyAoY291bnQtbGluZXMgKHBvaW50LW1pbikgKHBvaW50LW1heCkpDQor CQkJICAgICAgIG1heC1hZGRyZXNzKSkNCisJICA7OyBCdXQgaWYgdGhlcmUn cyBubyBuZXdsaW5lIGF0IHRoZSBsYXN0IGxpbmUsIHdlIGFyZSBvZmYgYnkN CisJICA7OyBvbmU7IGFkanVzdC4NCisJICAob3IgKGVxIChjaGFyLWJlZm9y ZSAocG9pbnQtbWF4KSkgP1xuKQ0KKwkgICAgICAoc2V0cSBtYXgtYWRkcmVz cyAoMS0gbWF4LWFkZHJlc3MpKSkNCisJICAoc2V0cSBvcmlnaW5hbC1wb2lu dCAoKyAoY291bnQtbGluZXMgKHBvaW50LW1pbikgKHBvaW50KSkNCiAJCQkJ ICBvcmlnaW5hbC1wb2ludCkpDQogCSAgKG9yIChib2xwKSAoc2V0cSBvcmln aW5hbC1wb2ludCAoMS0gb3JpZ2luYWwtcG9pbnQpKSkpDQogICAgICAgICAo aGV4bGlmeS1idWZmZXIpDQogICAgICAgICAocmVzdG9yZS1idWZmZXItbW9k aWZpZWQtcCBtb2RpZmllZCkpDQotICAgICAgKHNldCAobWFrZS1sb2NhbC12 YXJpYWJsZSAnaGV4bC1tYXgtYWRkcmVzcykNCi0gICAgICAgICAgIChsZXQq ICgoZnVsbC1saW5lcyAoLyAoYnVmZmVyLXNpemUpIDY4KSkNCi0gICAgICAg ICAgICAgICAgICAobGFzdC1saW5lICglIChidWZmZXItc2l6ZSkgNjgpKQ0K LSAgICAgICAgICAgICAgICAgIChsYXN0LWxpbmUtYnl0ZXMgKCUgbGFzdC1s aW5lIDUyKSkpDQotICAgICAgICAgICAgICgrIGxhc3QtbGluZS1ieXRlcyAo KiBmdWxsLWxpbmVzIDE2KSAtMSkpKQ0KKyAgICAgIChtYWtlLWxvY2FsLXZh cmlhYmxlICdoZXhsLW1heC1hZGRyZXNzKQ0KKyAgICAgIChzZXRxIGhleGwt bWF4LWFkZHJlc3MgbWF4LWFkZHJlc3MpDQogICAgICAgKGNvbmRpdGlvbi1j YXNlIG5pbA0KIAkgIChoZXhsLWdvdG8tYWRkcmVzcyBvcmlnaW5hbC1wb2lu dCkNCiAJKGVycm9yIG5pbCkpKQ0KQEAgLTQzNiwxOSArNDU4LDIzIEBADQog KGRlZnVuIGhleGwtY3VycmVudC1hZGRyZXNzICgmb3B0aW9uYWwgdmFsaWRh dGUpDQogICAiUmV0dXJuIGN1cnJlbnQgaGV4bC1hZGRyZXNzLiINCiAgIChp bnRlcmFjdGl2ZSkNCi0gIChsZXQgKChjdXJyZW50LWNvbHVtbiAoLSAoJSAo LSAocG9pbnQpIChwb2ludC1taW4pIC0xKSA2OCkgMTEpKQ0KKyAgKGxldCAo KGN1cnJlbnQtY29sdW1uIA0KKyAgICAgICAgICgtICglICgtIChwb2ludCkg KHBvaW50LW1pbikgLTEpIChoZXhsLWxpbmUtZGlzcGxlbikpIDExKSkNCiAJ KGhleGwtYWRkcmVzcyAwKSkNCiAgICAgKGlmICg8IGN1cnJlbnQtY29sdW1u IDApDQogCShpZiB2YWxpZGF0ZQ0KIAkgICAgKGVycm9yICJQb2ludCBpcyBu b3Qgb24gYSBjaGFyYWN0ZXIgaW4gdGhlIGZpbGUiKQ0KIAkgIChzZXRxIGN1 cnJlbnQtY29sdW1uIDApKSkNCiAgICAgKHNldHEgaGV4bC1hZGRyZXNzDQot CSAgKCsgKCogKC8gKC0gKHBvaW50KSAocG9pbnQtbWluKSAtMSkgNjgpIDE2 KQ0KLQkgICAgIChpZiAoPj0gY3VycmVudC1jb2x1bW4gNDEpDQotCQkgKC0g Y3VycmVudC1jb2x1bW4gNDEpDQotCSAgICAgICAoLyAoLSBjdXJyZW50LWNv bHVtbiAgKC8gY3VycmVudC1jb2x1bW4gNSkpIDIpKSkpDQorCSAgKCsgKCog KC8gKC0gKHBvaW50KSAocG9pbnQtbWluKSAtMSkgDQorICAgICAgICAgICAg ICAgICAgIChoZXhsLWxpbmUtZGlzcGxlbikpIDE2KQ0KKwkgICAgIChpZiAo Pj0gY3VycmVudC1jb2x1bW4gKC0gKGhleGwtYXNjaWktc3RhcnQtY29sdW1u KSAxMCkpDQorCQkgKC0gY3VycmVudC1jb2x1bW4gKC0gKGhleGwtYXNjaWkt c3RhcnQtY29sdW1uKSAxMCkpDQorICAgICAgICAgICAgICAgKC8gKC0gY3Vy cmVudC1jb2x1bW4gDQorICAgICAgICAgICAgICAgICAgICAgKC8gY3VycmVu dC1jb2x1bW4gKDErICgvIGhleGwtYml0cyA0KSkpKSAyKSApKSApDQogICAg ICh3aGVuIChpbnRlcmFjdGl2ZS1wKQ0KLSAgICAgIChtZXNzYWdlICJDdXJy ZW50IGFkZHJlc3MgaXMgJWQvMHglMDh4IiBoZXhsLWFkZHJlc3MgaGV4bC1h ZGRyZXNzKSkNCisgICAgICAobWVzc2FnZSAiQ3VycmVudCBhZGRyZXNzIGlz IFtjb2x1bW46ICVkXSAlZC8weCUwOHgiIA0KKyAgICAgICAgICAgICAgIGN1 cnJlbnQtY29sdW1uIGhleGwtYWRkcmVzcyBoZXhsLWFkZHJlc3MpKQ0KICAg ICBoZXhsLWFkZHJlc3MpKQ0KIA0KIChkZWZ1biBoZXhsLXByaW50LWN1cnJl bnQtcG9pbnQtaW5mbyAoKQ0KQEAgLTQ1NywxMCArNDgzLDE4IEBADQogICAo bGV0ICgoYWRkciAoaGV4bC1jdXJyZW50LWFkZHJlc3MpKSkNCiAgICAgKGZv cm1hdCAiQ3VycmVudCBhZGRyZXNzIGlzICVkLzB4JTA4eCIgYWRkciBhZGRy KSkpDQogDQorKGRlZnVuIGhleGwtYXNjaWktc3RhcnQtY29sdW1uICgpIA0K KyAgIkNvbHVtbiBhdCB3aGljaCB0aGUgYXNjaWkgZGlzcGxheSBzdGFydHMu Ig0KKyAgKCsgNDMgKC8gMTI4IGhleGwtYml0cykpKQ0KKw0KIChkZWZ1biBo ZXhsLWFkZHJlc3MtdG8tbWFya2VyIChhZGRyZXNzKQ0KICAgIlJldHVybiBi dWZmZXIgcG9zaXRpb24gZm9yIEFERFJFU1MuIg0KICAgKGludGVyYWN0aXZl ICJuQWRkcmVzczogIikNCi0gICgrICgqICgvIGFkZHJlc3MgMTYpIDY4KSAx MCAocG9pbnQtbWluKSAoLyAoKiAoJSBhZGRyZXNzIDE2KSA1KSAyKSkpDQor ICAobGV0ICgoTiAoKiAoJSBhZGRyZXNzIDE2KSAyKSkpDQorICAgICgrICgq ICgvIGFkZHJlc3MgMTYpIChoZXhsLWxpbmUtZGlzcGxlbikpIDsgaGV4bCBs aW5lIG5vICogZGlzcGxheSBsZW5ndGgNCisgICAgICAgMTAgICAgICAgICAg ICAgICAgICAgICAgOyAxMCBjaGFycyBmb3IgdGhlICJhZGRyZXNzOiAiIHBy ZWZpeA0KKyAgICAgICAocG9pbnQtbWluKSAgICAgICAgICAgICA7IGJhc2Ug b2Zmc2V0IChwb2ludCB1c3VhbGx5IHN0YXJ0cyBhdCAxLCBub3QgMCkNCisg ICAgICAgKCsgTiAoLyBOICgvIGhleGwtYml0cyA0KSkpICkpICkgOyBjaGFy IG9mZnNldCBpbnRvIGhleGwgZGlzcGxheSBsaW5lDQogDQogKGRlZnVuIGhl eGwtZ290by1hZGRyZXNzIChhZGRyZXNzKQ0KICAgIkdvIHRvIGhleGwtbW9k ZSAoZGVjaW1hbCkgYWRkcmVzcyBBRERSRVNTLg0KQEAgLTUwNSw3ICs1Mzks NyBAQA0KICAgKGhleGwtZ290by1hZGRyZXNzICgtIChoZXhsLWN1cnJlbnQt YWRkcmVzcykgYXJnKSkpDQogDQogKGRlZnVuIGhleGwtZm9yd2FyZC1jaGFy IChhcmcpDQotICAiTW92ZSB0byByaWdodCBBUkcgYnl0ZXMgKGxlZnQgaWYg QVJHIG5lZ2F0aXZlKSBpbiBoZXhsLW1vZGUuIg0KKyAgIk1vdmUgcmlnaHQg QVJHIGJ5dGVzIChsZWZ0IGlmIEFSRyBuZWdhdGl2ZSkgaW4gaGV4bC1tb2Rl LiINCiAgIChpbnRlcmFjdGl2ZSAicCIpDQogICAoaGV4bC1nb3RvLWFkZHJl c3MgKCsgKGhleGwtY3VycmVudC1hZGRyZXNzKSBhcmcpKSkNCiANCkBAIC01 NDQsNyArNTc4LDcgQEANCiAJCSAgICAgICBhZGRyZXNzKSkpDQogDQogKGRl ZnVuIGhleGwtZm9yd2FyZC1zaG9ydCAoYXJnKQ0KLSAgIk1vdmUgdG8gcmln aHQgQVJHIHNob3J0cyAobGVmdCBpZiBBUkcgbmVnYXRpdmUpIGluIGhleGwt bW9kZS4iDQorICAiTW92ZSByaWdodCBBUkcgc2hvcnRzIChsZWZ0IGlmIEFS RyBuZWdhdGl2ZSkgaW4gaGV4bC1tb2RlLiINCiAgIChpbnRlcmFjdGl2ZSAi cCIpDQogICAoaGV4bC1iYWNrd2FyZC1zaG9ydCAoLSBhcmcpKSkNCiANCkBA IC01ODMsNyArNjE3LDcgQEANCiAJCSAgICAgICBhZGRyZXNzKSkpDQogDQog KGRlZnVuIGhleGwtZm9yd2FyZC13b3JkIChhcmcpDQotICAiTW92ZSB0byBy aWdodCBBUkcgd29yZHMgKGxlZnQgaWYgQVJHIG5lZ2F0aXZlKSBpbiBoZXhs LW1vZGUuIg0KKyAgIk1vdmUgcmlnaHQgQVJHIHdvcmRzIChsZWZ0IGlmIEFS RyBuZWdhdGl2ZSkgaW4gaGV4bC1tb2RlLiINCiAgIChpbnRlcmFjdGl2ZSAi cCIpDQogICAoaGV4bC1iYWNrd2FyZC13b3JkICgtIGFyZykpKQ0KIA0KQEAg LTYzMCw3ICs2NjQsNyBAQA0KIChkZWZ1biBoZXhsLWJlZ2lubmluZy1vZi1s aW5lICgpDQogICAiR290byBiZWdpbm5pbmcgb2YgbGluZSBpbiBoZXhsIG1v ZGUuIg0KICAgKGludGVyYWN0aXZlKQ0KLSAgKGdvdG8tY2hhciAoKyAoKiAo LyAocG9pbnQpIDY4KSA2OCkgMTEpKSkNCisgIChnb3RvLWNoYXIgKCsgKCog KC8gKHBvaW50KSAoaGV4bC1saW5lLWRpc3BsZW4pKSAoaGV4bC1saW5lLWRp c3BsZW4pKSAxMSkpKQ0KIA0KIChkZWZ1biBoZXhsLWVuZC1vZi1saW5lICgp DQogICAiR290byBlbmQgb2YgbGluZSBpbiBoZXhsIG1vZGUuIg0KQEAgLTY3 NSwxMiArNzA5LDEyIEBADQogICAgIChyZWNlbnRlciAwKSkpDQogDQogKGRl ZnVuIGhleGwtYmVnaW5uaW5nLW9mLTFrLXBhZ2UgKCkNCi0gICJHbyB0byBi ZWdpbm5pbmcgb2YgMUtCIGJvdW5kYXJ5LiINCisgICJHbyB0byB0aGUgYmVn aW5uaW5nIG9mIHRoZSBjdXJyZW50IDFraUIgYmxvY2siDQogICAoaW50ZXJh Y3RpdmUpDQogICAoaGV4bC1nb3RvLWFkZHJlc3MgKGxvZ2FuZCAoaGV4bC1j dXJyZW50LWFkZHJlc3MpIC0xMDI0KSkpDQogDQogKGRlZnVuIGhleGwtZW5k LW9mLTFrLXBhZ2UgKCkNCi0gICJHbyB0byBlbmQgb2YgMUtCIGJvdW5kYXJ5 LiINCisgICJHbyB0byB0aGUgZW5kIG9mIHRoZSBjdXJyZW50IDFraUIgYmxv Y2suIg0KICAgKGludGVyYWN0aXZlKQ0KICAgKGhleGwtZ290by1hZGRyZXNz IChsZXQgKChhZGRyZXNzIChsb2dpb3IgKGhleGwtY3VycmVudC1hZGRyZXNz KSAxMDIzKSkpDQogCQkgICAgICAgKGlmICg+IGFkZHJlc3MgaGV4bC1tYXgt YWRkcmVzcykNCkBAIC03MTAsNiArNzQ0LDE1IEBADQogDQogOzAwMDAwMDAw OiAwMDExIDIyMzMgNDQ1NSA2Njc3IDg4OTkgYWFiYiBjY2RkIGVlZmYgIDAx MjM0NTY3ODlBQkNERUYNCiANCisoZGVmdW4gaGV4bC1vcHRpb25zICgmb3B0 aW9uYWwgdGVzdCkNCisgIChsZXQgKChvcHRzIChvciB0ZXN0IGhleGwtb3B0 aW9ucykpKQ0KKyAgICAod2hlbiAobWVtcSBoZXhsLWJpdHMgJyg4IDE2IDMy IDY0KSkNCisgICAgICAod2hlbiAoc3RyaW5nLW1hdGNoICJcXCguKlxcKS1n cm91cC1ieS1bMC05XSstYml0c1xcKC4qXFwpIiBvcHRzKQ0KKyAgICAgICAg KHNldHEgb3B0cyAoY29uY2F0IChtYXRjaC1zdHJpbmcgMSBvcHRzKSANCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAobWF0Y2gtc3RyaW5nIDIgb3B0 cykpKSApIA0KKyAgICAgIChzZXRxIG9wdHMgKGZvcm1hdCAiJXMgLWdyb3Vw LWJ5LSVkLWJpdHMgIiBvcHRzIGhleGwtYml0cykpICkNCisgICAgb3B0cykp DQorDQogOzs7IyMjYXV0b2xvYWQNCiAoZGVmdW4gaGV4bGlmeS1idWZmZXIg KCkNCiAgICJDb252ZXJ0IGEgYmluYXJ5IGJ1ZmZlciB0byBoZXhsIGZvcm1h dC4NCkBAIC03MzIsNyArNzc1LDcgQEANCiAgICAgICAgICAgIChtYXBjYXIg KGxhbWJkYSAocykNCiAgICAgICAgICAgICAgICAgICAgICAoaWYgKG5vdCAo bXVsdGlieXRlLXN0cmluZy1wIHMpKSBzDQogICAgICAgICAgICAgICAgICAg ICAgICAoZW5jb2RlLWNvZGluZy1zdHJpbmcgcyBsb2NhbGUtY29kaW5nLXN5 c3RlbSkpKQ0KLSAgICAgICAgICAgICAgICAgICAoc3BsaXQtc3RyaW5nIGhl eGwtb3B0aW9ucykpKQ0KKyAgICAgICAgICAgICAgICAgICAoc3BsaXQtc3Ry aW5nIChoZXhsLW9wdGlvbnMpKSkpDQogICAgIChpZiAoPiAocG9pbnQpICho ZXhsLWFkZHJlc3MtdG8tbWFya2VyIGhleGwtbWF4LWFkZHJlc3MpKQ0KIAko aGV4bC1nb3RvLWFkZHJlc3MgaGV4bC1tYXgtYWRkcmVzcykpKSkNCiANCkBA IC03NDksNyArNzkyLDcgQEANCiAJKGJ1ZmZlci11bmRvLWxpc3QgdCkpDQog ICAgIChhcHBseSAnY2FsbC1wcm9jZXNzLXJlZ2lvbiAocG9pbnQtbWluKSAo cG9pbnQtbWF4KQ0KIAkgICAoZXhwYW5kLWZpbGUtbmFtZSBoZXhsLXByb2dy YW0gZXhlYy1kaXJlY3RvcnkpDQotCSAgIHQgdCBuaWwgIi1kZSIgKHNwbGl0 LXN0cmluZyBoZXhsLW9wdGlvbnMpKSkpDQorCSAgIHQgdCBuaWwgIi1kZSIg KHNwbGl0LXN0cmluZyAoaGV4bC1vcHRpb25zKSkpKSkNCiANCiAoZGVmdW4g aGV4bC1jaGFyLWFmdGVyLXBvaW50ICgpDQogICAiUmV0dXJuIGNoYXIgZm9y IEFTQ0lJIGhleCBkaWdpdHMgYXQgcG9pbnQuIg0KQEAgLTg0NiwxMiArODg5 LDE1IEBADQogICAobGV0ICgoYWRkcmVzcyAoaGV4bC1jdXJyZW50LWFkZHJl c3MgdCkpKQ0KICAgICAod2hpbGUgKD4gbnVtIDApDQogICAgICAgKGxldCAo KGhleC1wb3NpdGlvbg0KLQkgICAgICgrICgqICgvIGFkZHJlc3MgMTYpIDY4 KQ0KKwkgICAgICgrICgqICgvIGFkZHJlc3MgMTYpIChoZXhsLWxpbmUtZGlz cGxlbikpDQogCQkxMCAocG9pbnQtbWluKQ0KIAkJKCogMiAoJSBhZGRyZXNz IDE2KSkNCiAJCSgvICglIGFkZHJlc3MgMTYpIDIpKSkNCiAJICAgIChhc2Np aS1wb3NpdGlvbg0KLQkgICAgICgrICgqICgvIGFkZHJlc3MgMTYpIDY4KSA1 MSAocG9pbnQtbWluKSAoJSBhZGRyZXNzIDE2KSkpDQorCSAgICAgKCsgKCog KC8gYWRkcmVzcyAxNikgKGhleGwtbGluZS1kaXNwbGVuKSkgDQorICAgICAg ICAgICAgICAgIChoZXhsLWFzY2lpLXN0YXJ0LWNvbHVtbikgDQorICAgICAg ICAgICAgICAgIChwb2ludC1taW4pIA0KKyAgICAgICAgICAgICAgICAoJSBh ZGRyZXNzIDE2KSkpDQogCSAgICBhdC1hc2NpaS1wb3NpdGlvbikNCiAJKGlm ICg9IChwb2ludCkgYXNjaWktcG9zaXRpb24pDQogCSAgICAoc2V0cSBhdC1h c2NpaS1wb3NpdGlvbiB0KSkNCkBAIC04NjcsNyArOTEzLDcgQEANCiAJKGlm IGF0LWFzY2lpLXBvc2l0aW9uDQogCSAgICAocHJvZ24NCiAJICAgICAgKGJl Z2lubmluZy1vZi1saW5lKQ0KLQkgICAgICAoZm9yd2FyZC1jaGFyIDUxKQ0K KwkgICAgICAoZm9yd2FyZC1jaGFyIChoZXhsLWFzY2lpLXN0YXJ0LWNvbHVt bikpDQogCSAgICAgIChmb3J3YXJkLWNoYXIgKCUgYWRkcmVzcyAxNikpKSkp DQogICAgICAgKHNldHEgbnVtICgxLSBudW0pKSkpKQ0KIA0KQEAgLTk4NSw3 ICsxMDMxLDcgQEANCiANCiAoZGVmdW4gaGV4bC1mb2xsb3ctYXNjaWktZmlu ZCAoKQ0KICAgIkZpbmQgYW5kIGhpZ2hsaWdodCB0aGUgQVNDSUkgZWxlbWVu dCBjb3JyZXNwb25kaW5nIHRvIGN1cnJlbnQgcG9pbnQuIg0KLSAgKGxldCAo KHBvcyAoKyA1MQ0KKyAgKGxldCAoKHBvcyAoKyAoaGV4bC1hc2NpaS1zdGFy dC1jb2x1bW4pDQogCQkoLSAocG9pbnQpIChjdXJyZW50LWNvbHVtbikpDQog CQkobW9kIChoZXhsLWN1cnJlbnQtYWRkcmVzcykgMTYpKSkpDQogICAgICht b3ZlLW92ZXJsYXkgaGV4bC1hc2NpaS1vdmVybGF5IHBvcyAoMSsgcG9zKSkN Cg== --8323328-766893094-1233969643=:8051--