From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Yair F Newsgroups: gmane.emacs.bugs Subject: bug#6621: Emacs crash when trying to report emacs crash Date: Wed, 14 Jul 2010 20:54:33 +0300 Message-ID: References: <83d3urshi9.fsf@gnu.org> <834og3s1r0.fsf@gnu.org> <83pqyqqx9y.fsf@gnu.org> NNTP-Posting-Host: lo.gmane.org Mime-Version: 1.0 Content-Type: multipart/mixed; boundary=0016367b60a6dda9e0048b5cadc9 X-Trace: dough.gmane.org 1279131110 5488 80.91.229.12 (14 Jul 2010 18:11:50 GMT) X-Complaints-To: usenet@dough.gmane.org NNTP-Posting-Date: Wed, 14 Jul 2010 18:11:50 +0000 (UTC) Cc: 6621@debbugs.gnu.org To: Eli Zaretskii Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Wed Jul 14 20:11:48 2010 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane.org Original-Received: from lists.gnu.org ([199.232.76.165]) by lo.gmane.org with esmtp (Exim 4.69) (envelope-from ) id 1OZ6Qs-0004dg-Bd for geb-bug-gnu-emacs@m.gmane.org; Wed, 14 Jul 2010 20:11:47 +0200 Original-Received: from localhost ([127.0.0.1]:58283 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1OZ6Qr-0002j4-0d for geb-bug-gnu-emacs@m.gmane.org; Wed, 14 Jul 2010 14:11:45 -0400 Original-Received: from [140.186.70.92] (port=50134 helo=eggs.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1OZ6PL-0001xU-Kd for bug-gnu-emacs@gnu.org; Wed, 14 Jul 2010 14:10:16 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.69) (envelope-from ) id 1OZ6Ft-0003Wm-EG for bug-gnu-emacs@gnu.org; Wed, 14 Jul 2010 14:00:27 -0400 Original-Received: from debbugs.gnu.org ([140.186.70.43]:54708) by eggs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1OZ6Ft-0003Wi-Ci for bug-gnu-emacs@gnu.org; Wed, 14 Jul 2010 14:00:25 -0400 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.69) (envelope-from ) id 1OZ6Ag-0001T0-AN; Wed, 14 Jul 2010 13:55:02 -0400 X-Loop: help-debbugs@gnu.org Resent-From: Yair F Original-Sender: debbugs-submit-bounces@debbugs.gnu.org Resent-To: owner@debbugs.gnu.org Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Wed, 14 Jul 2010 17:55:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 6621 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: Original-Received: via spool by 6621-submit@debbugs.gnu.org id=B6621.12791300745622 (code B ref 6621); Wed, 14 Jul 2010 17:55:02 +0000 Original-Received: (at 6621) by debbugs.gnu.org; 14 Jul 2010 17:54:34 +0000 Original-Received: from localhost ([127.0.0.1] helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1OZ6AD-0001Sd-Gr for submit@debbugs.gnu.org; Wed, 14 Jul 2010 13:54:34 -0400 Original-Received: from mail-ww0-f46.google.com ([74.125.82.46]) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1OZ6AA-0001SV-LK for 6621@debbugs.gnu.org; Wed, 14 Jul 2010 13:54:32 -0400 Original-Received: by wwa36 with SMTP id 36so1888834wwa.15 for <6621@debbugs.gnu.org>; Wed, 14 Jul 2010 10:54:37 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:mime-version:received:received:in-reply-to :references:date:message-id:subject:from:to:cc:content-type; bh=Ejx+ctBQ704Aj3eYIruCX3aH/SOVJXRQLkfUwYe0szk=; b=WnGPXn8D32m1i88XQSC/5aTBQjL56camOvImW8Aoo7Ddfd5P7FgcSv5AVIBWPmiu4N WSLy9rOsVrtG0Zof9Vk/g3k+RNNc0gouxXwqd7ZOy3UVXKdov03Bm/9a/UZIU5FDfH91 cIJsT9Cps+NVOQRbV0LM3cihFIeKot9Ji+Xt4= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type; b=OaeT6Ach2A8CZlanjtU/45pc1xxcfVSQxl4iVGS+BKEBgYyJQgZJPCaRwe46acdhIQ FYS6UKbIY19pqF2TAfbX5ILd3kFgvvdpwpqse8AQkoTfJVP/dAOfSfWAEPuj1RNFI7u/ s5L9qcmsHOGWMnHu2oYnD/FvzxQHICDpPJKi4= Original-Received: by 10.216.170.200 with SMTP id p50mr12279301wel.96.1279130077070; Wed, 14 Jul 2010 10:54:37 -0700 (PDT) Original-Received: by 10.216.166.7 with HTTP; Wed, 14 Jul 2010 10:54:33 -0700 (PDT) In-Reply-To: <83pqyqqx9y.fsf@gnu.org> X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.11 Precedence: list Resent-Date: Wed, 14 Jul 2010 13:55:02 -0400 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6 (newer, 3) 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: , Original-Sender: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.bugs:38517 Archived-At: --0016367b60a6dda9e0048b5cadc9 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable On Wed, Jul 14, 2010 at 11:32 AM, Eli Zaretskii wrote: > My Emacs is not compiled with -DENABLE_CHECKING, so the assert > triggered here is a no-op for me, and Emacs works for me just fine > with this recipe. I have a slight suspicion that this relates to OTF/XFT font handling. You build on Windows right? > > I will build with -DENABLE_CHECKING and try again, but until I > do, could you please show the output of the`pit' command in frame #1? > > Also, in the same frame #1, what do these commands show: > > =A0(gdb) pgrowx it->glyph_row > =A0(gdb) prowlims it->glyph_row > =A0(gdb) pmtxrows it->w->desired_matrix > > Finally, does the problem persist if you turn off > auto-composition-mode before pasting the text? As expected, turning off auto-composition-mode prevents the crash. See my lisp/language/hebrew.el attached. > (gdb) up #1 0x0809cd6b in set_iterator_to_next (it=3D0xbfffdee4, reseat_p=3D1) at xdisp.c:6254 6254 xassert (IT_BYTEPOS (*it) =3D=3D CHAR_TO_BYTE (IT_CHARPOS= (*it))); (gdb) pit cur=3D151[277] pos=3D150[276] start=3D128[235] end=3D151 stop=3D151 face=3D= 16 MB ch=3D'@' vpos=3D6 hpos=3D17 y=3D102 lvy=3D510 x=3D114 vx=3D0-640 w=3D8 a+d=3D13+4=3D= 17 max=3D13+4=3D17 (gdb) pgrowx it->glyph_row TEXT: 17 glyphs 0 0: COMP[47 (0..1)] pos=3D128 w=3D9 a+d=3D13+4 face=3D16 MB 1 9: CHAR[0x5e7] pos=3D130 blev=3D0,btyp=3DUNDEF w=3D9 a+d=3D13+4 face= =3D16 MB 2 18: CHAR[ ] pos=3D131 blev=3D0,btyp=3DUNDEF w=3D8 a+d=3D13+4 MB 3 26: COMP[49 (0..1)] pos=3D132 w=3D9 a+d=3D13+4 face=3D16 MB 4 35: CHAR[0x5e5] pos=3D134 blev=3D0,btyp=3DUNDEF w=3D7 a+d=3D13+4 face= =3D16 MB 5 42: CHAR[ ] pos=3D135 blev=3D0,btyp=3DUNDEF w=3D8 a+d=3D13+4 MB 6 50: COMP[51 (0..1)] pos=3D136 w=3D3 a+d=3D13+4 face=3D16 MB 7 53: COMP[53 (0..1)] pos=3D138 w=3D8 a+d=3D13+4 face=3D16 MB 8 61: CHAR[0x5d9] pos=3D140 blev=3D0,btyp=3DUNDEF w=3D3 a+d=3D13+4 face= =3D16 MB 9 64: CHAR[ ] pos=3D141 blev=3D0,btyp=3DUNDEF w=3D8 a+d=3D13+4 MB 10 72: COMP[55 (0..1)] pos=3D142 w=3D6 a+d=3D13+4 face=3D16 MB 11 78: COMP[57 (0..1)] pos=3D144 w=3D9 a+d=3D13+4 face=3D16 MB 12 87: CHAR[0x5e2] pos=3D146 blev=3D0,btyp=3DUNDEF w=3D8 a+d=3D13+4 face= =3D16 MB 13 95: COMP[35 (0..0)] pos=3D147 w=3D3 a+d=3D13+4 face=3D16 MB 14 98: COMP[35 (1..1)] pos=3D149 w=3D0 a+d=3D13+4 face=3D16 MB 15 98: CHAR[^] pos=3D150 blev=3D0,btyp=3DUNDEF w=3D8 a+d=3D13+4 face=3D1= 7 MB 16 106: CHAR[@] pos=3D150 blev=3D0,btyp=3DUNDEF w=3D8 a+d=3D13+4 face=3D1= 7 MB (gdb) prowlims it->glyph_row edges=3D(0,0),r2l=3D0,cont=3D0,trunc=3D(0,0),at_zv=3D0 (gdb) pmtxrows it->w->desired_matrix 0: edges=3D(1,9),r2l=3D0,cont=3D0,trunc=3D(0,0),at_zv=3D0 1: edges=3D(9,31),r2l=3D0,cont=3D0,trunc=3D(0,0),at_zv=3D0 2: edges=3D(31,59),r2l=3D0,cont=3D0,trunc=3D(0,0),at_zv=3D0 3: edges=3D(59,85),r2l=3D0,cont=3D0,trunc=3D(0,0),at_zv=3D0 4: edges=3D(85,108),r2l=3D0,cont=3D0,trunc=3D(0,0),at_zv=3D0 5: edges=3D(108,128),r2l=3D0,cont=3D0,trunc=3D(0,0),at_zv=3D0 6: edges=3D(0,0),r2l=3D0,cont=3D0,trunc=3D(0,0),at_zv=3D0 7: edges=3D(149,149),r2l=3D0,cont=3D0,trunc=3D(0,0),at_zv=3D1 8: edges=3D(149,149),r2l=3D0,cont=3D0,trunc=3D(0,0),at_zv=3D1 9: edges=3D(149,149),r2l=3D0,cont=3D0,trunc=3D(0,0),at_zv=3D1 10: edges=3D(149,149),r2l=3D0,cont=3D0,trunc=3D(0,0),at_zv=3D1 11: edges=3D(149,149),r2l=3D0,cont=3D0,trunc=3D(0,0),at_zv=3D1 12: edges=3D(149,149),r2l=3D0,cont=3D0,trunc=3D(0,0),at_zv=3D1 13: edges=3D(149,149),r2l=3D0,cont=3D0,trunc=3D(0,0),at_zv=3D1 14: edges=3D(149,149),r2l=3D0,cont=3D0,trunc=3D(0,0),at_zv=3D1 15: edges=3D(149,149),r2l=3D0,cont=3D0,trunc=3D(0,0),at_zv=3D1 16: edges=3D(149,149),r2l=3D0,cont=3D0,trunc=3D(0,0),at_zv=3D1 17: edges=3D(149,149),r2l=3D0,cont=3D0,trunc=3D(0,0),at_zv=3D1 18: edges=3D(149,149),r2l=3D0,cont=3D0,trunc=3D(0,0),at_zv=3D1 19: edges=3D(149,149),r2l=3D0,cont=3D0,trunc=3D(0,0),at_zv=3D1 20: edges=3D(149,149),r2l=3D0,cont=3D0,trunc=3D(0,0),at_zv=3D1 21: edges=3D(149,149),r2l=3D0,cont=3D0,trunc=3D(0,0),at_zv=3D1 22: edges=3D(149,149),r2l=3D0,cont=3D0,trunc=3D(0,0),at_zv=3D1 23: edges=3D(149,149),r2l=3D0,cont=3D0,trunc=3D(0,0),at_zv=3D1 24: edges=3D(149,149),r2l=3D0,cont=3D0,trunc=3D(0,0),at_zv=3D1 25: edges=3D(149,149),r2l=3D0,cont=3D0,trunc=3D(0,0),at_zv=3D1 26: edges=3D(149,149),r2l=3D0,cont=3D0,trunc=3D(0,0),at_zv=3D1 27: edges=3D(149,149),r2l=3D0,cont=3D0,trunc=3D(0,0),at_zv=3D1 28: edges=3D(149,149),r2l=3D0,cont=3D0,trunc=3D(0,0),at_zv=3D1 29: edges=3D(149,149),r2l=3D0,cont=3D0,trunc=3D(0,0),at_zv=3D1 30: edges=3D(192,192),r2l=3D0,cont=3D0,trunc=3D(0,0),at_zv=3D1 31: edges=3D(192,192),r2l=3D0,cont=3D0,trunc=3D(0,0),at_zv=3D1 32: edges=3D(192,192),r2l=3D0,cont=3D0,trunc=3D(0,0),at_zv=3D1 --0016367b60a6dda9e0048b5cadc9 Content-Type: text/x-emacs-lisp; charset=UTF-8; name="hebrew.el" Content-Disposition: attachment; filename="hebrew.el" Content-Transfer-Encoding: base64 X-Attachment-Id: f_gbmgyt3w0 Ozs7IGhlYnJldy5lbCAtLS0gc3VwcG9ydCBmb3IgSGVicmV3IC0qLSBjb2Rpbmc6IHV0Zi04IC0q LQoKOzsgQ29weXJpZ2h0IChDKSAyMDAxLCAyMDAyLCAyMDAzLCAyMDA0LCAyMDA1LCAyMDA2LCAy MDA3LCAyMDA4LCAyMDA5LCAyMDEwCjs7ICAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMu Cjs7IENvcHlyaWdodCAoQykgMTk5NSwgMTk5NiwgMTk5NywgMTk5OCwgMTk5OSwgMjAwMCwgMjAw MSwgMjAwMiwgMjAwMywgMjAwNCwKOzsgICAyMDA1LCAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5LCAy MDEwCjs7ICAgTmF0aW9uYWwgSW5zdGl0dXRlIG9mIEFkdmFuY2VkIEluZHVzdHJpYWwgU2NpZW5j ZSBhbmQgVGVjaG5vbG9neSAoQUlTVCkKOzsgICBSZWdpc3RyYXRpb24gTnVtYmVyIEgxNFBSTzAy MQoKOzsgQ29weXJpZ2h0IChDKSAyMDAzCjs7ICAgTmF0aW9uYWwgSW5zdGl0dXRlIG9mIEFkdmFu Y2VkIEluZHVzdHJpYWwgU2NpZW5jZSBhbmQgVGVjaG5vbG9neSAoQUlTVCkKOzsgICBSZWdpc3Ry YXRpb24gTnVtYmVyIEgxM1BSTzAwOQoKOzsgS2V5d29yZHM6IG11bHRpbGluZ3VhbCwgSGVicmV3 Cgo7OyBUaGlzIGZpbGUgaXMgcGFydCBvZiBHTlUgRW1hY3MuCgo7OyBHTlUgRW1hY3MgaXMgZnJl ZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQo7OyBpdCB1 bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxp c2hlZCBieQo7OyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAz IG9mIHRoZSBMaWNlbnNlLCBvcgo7OyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9u LgoKOzsgR05VIEVtYWNzIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBi ZSB1c2VmdWwsCjs7IGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBp bXBsaWVkIHdhcnJhbnR5IG9mCjs7IE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBB UlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKOzsgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2Ug Zm9yIG1vcmUgZGV0YWlscy4KCjs7IFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2Yg dGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCjs7IGFsb25nIHdpdGggR05VIEVtYWNzLiAg SWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgoKOzs7IENvbW1lbnRh cnk6Cgo7OyBGb3IgSGVicmV3LCB0aGUgY2hhcmFjdGVyIHNldCBJU084ODU5LTggaXMgc3VwcG9y dGVkLgo7OyBTZWUgaHR0cDovL3d3dy5lY21hLmNoL2VjbWExL1NUQU5EL0VDTUEtMTIxLkhUTS4K OzsgV2luZG93cy0xMjU1IGlzIGFsc28gc3VwcG9ydGVkLgoKOzs7IENvZGU6CgooZGVmaW5lLWNv ZGluZy1zeXN0ZW0gJ2hlYnJldy1pc28tOGJpdAogICJJU08gMjAyMiBiYXNlZCA4LWJpdCBlbmNv ZGluZyBmb3IgSGVicmV3IChNSU1FOklTTy04ODU5LTgpLiIKICA6Y29kaW5nLXR5cGUgJ2NoYXJz ZXQKICA6bW5lbW9uaWMgPzgKICA6Y2hhcnNldC1saXN0ICcoaXNvLTg4NTktOCkKICA6bWltZS1j aGFyc2V0ICdpc28tODg1OS04KQoKKGRlZmluZS1jb2Rpbmctc3lzdGVtLWFsaWFzICdpc28tODg1 OS04ICdoZWJyZXctaXNvLThiaXQpCgo7OyBUaGVzZSBhcmUgZm9yIEV4cGxpY2l0IGFuZCBJbXBs aWNpdCBkaXJlY3Rpb25hbGl0eSBpbmZvcm1hdGlvbiwgYXMKOzsgZGVmaW5lZCBpbiBSRkMgMTU1 Ni4gIFdlIGRvbid0IHlldCBzdXBwb3J0IGRpcmVjdGlvbmFsIGluZm9ybWF0aW9uCjs7IGluIGJp ZGkgbGFuZ3VhZ2VzLCBzbyB0aGVzZSBhbGlhc2VzIGFyZSBhIGxpZSwgZXNwZWNpYWxseSBhcyBm YXIgYXMKOzsgaXNvLTg4NTktOC1lIGlzIGNvbmNlcm5lZC4gIEZJWE1FLgooZGVmaW5lLWNvZGlu Zy1zeXN0ZW0tYWxpYXMgJ2lzby04ODU5LTgtZSAnaGVicmV3LWlzby04Yml0KQooZGVmaW5lLWNv ZGluZy1zeXN0ZW0tYWxpYXMgJ2lzby04ODU5LTgtaSAnaGVicmV3LWlzby04Yml0KQoKKHNldC1s YW5ndWFnZS1pbmZvLWFsaXN0CiAiSGVicmV3IiAnKChjaGFyc2V0IGlzby04ODU5LTgpCgkgICAg KGNvZGluZy1wcmlvcml0eSBoZWJyZXctaXNvLThiaXQpCgkgICAgKGNvZGluZy1zeXN0ZW0gaGVi cmV3LWlzby04Yml0IHdpbmRvd3MtMTI1NSBjcDg2MikKCSAgICAobm9uYXNjaWktdHJhbnNsYXRp b24gLiBpc28tODg1OS04KQoJICAgIChpbnB1dC1tZXRob2QgLiAiaGVicmV3IikKCSAgICAodW5p Ynl0ZS1kaXNwbGF5IC4gaGVicmV3LWlzby04Yml0KQoJICAgIChzYW1wbGUtdGV4dCAuICJIZWJy ZXcJ16nXnNeV150iKQoJICAgIChkb2N1bWVudGF0aW9uIC4gIkJpZGlyZWN0aW9uYWwgZWRpdGlu ZyBpcyBzdXBwb3J0ZWQuIikpKQoKKHNldC1sYW5ndWFnZS1pbmZvLWFsaXN0CiAiV2luZG93cy0x MjU1IiAnKChjb2RpbmctcHJpb3JpdHkgd2luZG93cy0xMjU1KQoJCSAgKGNvZGluZy1zeXN0ZW0g d2luZG93cy0xMjU1KQoJCSAgKGRvY3VtZW50YXRpb24gLiAiXApTdXBwb3J0IGZvciBXaW5kb3dz LTEyNTUgZW5jb2RpbmcsIGUuZy4gZm9yIFlpZGRpc2guCkJpZGlyZWN0aW9uYWwgZWRpdGluZyBp cyBzdXBwb3J0ZWQuIikpKQoKKGRlZmluZS1jb2Rpbmctc3lzdGVtICd3aW5kb3dzLTEyNTUKICAi d2luZG93cy0xMjU1IChIZWJyZXcpIGVuY29kaW5nIChNSU1FOiBXSU5ET1dTLTEyNTUpIgogIDpj b2RpbmctdHlwZSAnY2hhcnNldAogIDptbmVtb25pYyA/aAogIDpjaGFyc2V0LWxpc3QgJyh3aW5k b3dzLTEyNTUpCiAgOm1pbWUtY2hhcnNldCAnd2luZG93cy0xMjU1KQooZGVmaW5lLWNvZGluZy1z eXN0ZW0tYWxpYXMgJ2NwMTI1NSAnd2luZG93cy0xMjU1KQoKKGRlZmluZS1jb2Rpbmctc3lzdGVt ICdjcDg2MgogICJET1MgY29kZXBhZ2UgODYyIChIZWJyZXcpIgogIDpjb2RpbmctdHlwZSAnY2hh cnNldAogIDptbmVtb25pYyA/RAogIDpjaGFyc2V0LWxpc3QgJyhjcDg2MikKICA6bWltZS1jaGFy c2V0ICdjcDg2MikKKGRlZmluZS1jb2Rpbmctc3lzdGVtLWFsaWFzICdpYm04NjIgJ2NwODYyKQoK OzsgUmV0dXJuIGEgbmVzdGVkIGFsaXN0IG9mIEhlYnJldyBjaGFyYWN0ZXIgc2VxdWVuY2VzIHZz IHRoZQo7OyBjb3JyZXNwb25kaW5nIGdseXBoIG9mIEZPTlQtT0JKRUNULgooZGVmdW4gaGVicmV3 LWZvbnQtZ2V0LXByZWNvbXBvc2VkIChmb250LW9iamVjdCkKICAobGV0ICgocHJlY29tcG9zZWQg KGZvbnQtZ2V0IGZvbnQtb2JqZWN0ICdoZWJyZXctcHJlY29tcG9zZWQpKQoJOzsgVmVjdG9yIG9m IEhlYnJldyBwcmVjb21wb3NlZCBjaGFyYXRlcnMuCgkoY2hhcnMgWyN4RkIyQSAjeEZCMkIgI3hG QjJDICN4RkIyRCAjeEZCMkUgI3hGQjJGICN4RkIzMCAjeEZCMzEKCQkjeEZCMzIgI3hGQjMzICN4 RkIzNCAjeEZCMzUgI3hGQjM2ICN4RkIzOCAjeEZCMzkgI3hGQjNBCgkJI3hGQjNCICN4RkIzQyAj eEZCM0UgI3hGQjQwICN4RkI0MSAjeEZCNDMgI3hGQjQ0ICN4RkI0NgoJCSN4RkI0NyAjeEZCNDgg I3hGQjQ5ICN4RkI0QSAjeEZCNEIgI3hGQjRDICN4RkI0RCAjeEZCNEVdKQoJOzsgVmVjdG9yIG9m IGRlY29tcG9zaXRpb24gY2hhcmFjdGVyIHNlcXVlbmNlcyBjb3JyZXNwb25kaW5nCgk7OyB0byB0 aGUgYWJvdmUgdmVjdG9yLgoJKGRlY29tcG9zZWQgCgkgW1sjeDA1RTkgI3gwNUMxXQoJICBbI3gw NUU5ICN4MDVDMl0KCSAgWyN4MDVFOSAjeDA1QkMgI3gwNUMxXQoJICBbI3gwNUU5ICN4MDVCQyAj eDA1QzJdCgkgIFsjeDA1RDAgI3gwNUI3XQoJICBbI3gwNUQwICN4MDVCOF0KCSAgWyN4MDVEMCAj eDA1QkNdCgkgIFsjeDA1RDEgI3gwNUJDXQoJICBbI3gwNUQyICN4MDVCQ10KCSAgWyN4MDVEMyAj eDA1QkNdCgkgIFsjeDA1RDQgI3gwNUJDXQoJICBbI3gwNUQ1ICN4MDVCQ10KCSAgWyN4MDVENiAj eDA1QkNdCgkgIFsjeDA1RDggI3gwNUJDXQoJICBbI3gwNUQ5ICN4MDVCQ10KCSAgWyN4MDVEQSAj eDA1QkNdCgkgIFsjeDA1REIgI3gwNUJDXQoJICBbI3gwNURDICN4MDVCQ10KCSAgWyN4MDVERSAj eDA1QkNdCgkgIFsjeDA1RTAgI3gwNUJDXQoJICBbI3gwNUUxICN4MDVCQ10KCSAgWyN4MDVFMyAj eDA1QkNdCgkgIFsjeDA1RTQgI3gwNUJDXQoJICBbI3gwNUU2ICN4MDVCQ10KCSAgWyN4MDVFNyAj eDA1QkNdCgkgIFsjeDA1RTggI3gwNUJDXQoJICBbI3gwNUU5ICN4MDVCQ10KCSAgWyN4MDVFQSAj eDA1QkNdCgkgIFsjeDA1RDUgI3gwNUI5XQoJICBbI3gwNUQxICN4MDVCRl0KCSAgWyN4MDVEQiAj eDA1QkZdCgkgIFsjeDA1RTQgI3gwNUJGXV0pKQogICAgKHVubGVzcyBwcmVjb21wb3NlZAogICAg ICAoc2V0cSBwcmVjb21wb3NlZCAobGlzdCB0KSkKICAgICAgKGxldCAoKGd2ZWMgKGZvbnQtZ2V0 LWdseXBocyBmb250LW9iamVjdCAwIChsZW5ndGggY2hhcnMpIGNoYXJzKSkpCgkoZG90aW1lcyAo aSAobGVuZ3RoIGNoYXJzKSkKCSAgKGlmIChhcmVmIGd2ZWMgaSkKCSAgICAgIChzZXQtbmVzdGVk LWFsaXN0IChhcmVmIGRlY29tcG9zZWQgaSkgKGFyZWYgZ3ZlYyBpKQoJCQkJcHJlY29tcG9zZWQp KSkpCiAgICAgIDs7IENhY2hlIHRoZSByZXN1bHQgaW4gRk9OVC1PQkpFQ1QncyBwcm9wZXJ0eS4K ICAgICAgKGZvbnQtcHV0IGZvbnQtb2JqZWN0ICdoZWJyZXctcHJlY29tcG9zZWQgcHJlY29tcG9z ZWQpKQogICAgcHJlY29tcG9zZWQpKQoKOzsgQ29tcG9zaXRpb24gZnVuY3Rpb24gZm9yIGhlYnJl dy4gIEdTVFJJTkcgaXMgbWFkZSBvZiBhIEhlYnJldyBiYXNlCjs7IGNoYXJhY3RlciBmb2xsb3dl ZCBieSBIZWJyZXcgZGlhY3JpdGljYWwgbWFya3MsIG9yIGlzIG1hZGUgb2YKOzsgc2luZ2xlIEhl YnJldyBkaWFjcml0aWNhbCBtYXJrLiAgQWRqdXN0IEdTVFJJTkcgdG8gZGlzcGxheSB0aGF0Cjs7 IHNlcXVlbmNlIHByb3Blcmx5LiAgVGhlIGJhc2ljIHN0cmF0ZWd5IGlzOgo7Owo7OyAoMSkgSWYg dGhlcmUncyBzaW5nbGUgZGlhY3JpdGljYWwsIGFkZCBwYWRkaW5nIHNwYWNlIHRvIHRoZSBsZWZ0 Cjs7IGFuZCByaWdodCBvZiB0aGUgZ2x5cGguCjs7Cjs7ICgyKSBJZiB0aGUgZm9udCBoYXMgT3Bl blR5cGUgZmVhdHVyZXMgZm9yIEhlYnJldywgYXNrIHRoZSBPVEYKOzsgZHJpdmVyIHRoZSB3aG9s ZSB3b3JrLgo7Owo7OyAoMykgSWYgdGhlIGZvbnQgaGFzIHByZWNvbXBvc2VkIGdseXBocywgdXNl IHRoZW0gYXMgZmFyIGFzCjs7IHBvc3NpYmxlLiAgQWRqdXN0IHRoZSByZW1haW5pbmcgZ2x5cGhz IGFydGlmaWNpYWxseS4KCihkZWZ1biBoZWJyZXctc2hhcGUtZ3N0cmluZyAoZ3N0cmluZykKICAo bGV0KiAoKGZvbnQgKGxnc3RyaW5nLWZvbnQgZ3N0cmluZykpCgkgKG90ZiAoZm9udC1nZXQgZm9u dCA6b3RmKSkKCSAobmNoYXJzIChsZ3N0cmluZy1jaGFyLWxlbiBnc3RyaW5nKSkKCSBoZWFkZXIg bmdseXBocyBiYXNlLXdpZHRoIGdseXBoIHByZWNvbXBvc2VkIHZhbCBpZHgpCiAgICAoY29uZAog ICAgICgoPSBuY2hhcnMgMSkKICAgICAgOzsgSW5kZXBlbmRlbnQgZGlhY3JpdGljYWwgbWFyay4g IEFkZCBwYWRkaW5nIHNwYWNlIHRvIGxlZnQgb3IKICAgICAgOzsgcmlnaHQgc28gdGhhdCB0aGUg Z2x5cGggZG9lc24ndCBvdmVybGFwIHdpdGggdGhlIHN1cnJvdW5kaW5nCiAgICAgIDs7IGNoYXJz LgogICAgICAoc2V0cSBnbHlwaCAobGdzdHJpbmctZ2x5cGggZ3N0cmluZyAwKSkKICAgICAgKGxl dCAoKHdpZHRoIChsZ2x5cGgtd2lkdGggZ2x5cGgpKQoJICAgIGJlYXJpbmcpCgkoaWYgKDwgKHNl dHEgYmVhcmluZyAobGdseXBoLWxiZWFyaW5nIGdseXBoKSkgMCkKCSAgICAobGdseXBoLXNldC1h ZGp1c3RtZW50IGdseXBoIGJlYXJpbmcgMCAoLSB3aWR0aCBiZWFyaW5nKSkpCgkoaWYgKD4gKHNl dHEgYmVhcmluZyAobGdseXBoLXJiZWFyaW5nIGdseXBoKSkgd2lkdGgpCgkgICAgKGxnbHlwaC1z ZXQtYWRqdXN0bWVudCBnbHlwaCAwIDAgYmVhcmluZykpKSkKCiAgICAgKChvciAoYXNzcSAnaGVi ciAoY2FyIG90ZikpIChhc3NxICdoZWJyIChjZHIgb3RmKSkpCiAgICAgIDs7IEZPTlQgaGFzIE9w ZW5UeXBlIGZlYXR1cmVzIGZvciBIZWJyZXcuCiAgICAgIChmb250LXNoYXBlLWdzdHJpbmcgZ3N0 cmluZykpCgogICAgICh0CiAgICAgIDs7IEZPTlQgZG9lc24ndCBoYXZlIE9wZW5UeXBlIGZlYXR1 cmVzIGZvciBIZWJyZXcuCiAgICAgIDs7IFRyeSBhIHByZWNvbXBvc2VkIGdseXBoLgogICAgICA7 OyBOb3cgR1NUUklORyBpcyBpbiB0aGlzIGZvcm06CiAgICAgIDs7ICAgW1tGT05UIENIQVIxIENI QVIyIC4uLiBDSEFSbl0gbmlsIEdMWVBIMSBHTFlQSDIgLi4uIEdMWVBIbiBuaWwgLi4uXQogICAg ICAoc2V0cSBwcmVjb21wb3NlZCAoaGVicmV3LWZvbnQtZ2V0LXByZWNvbXBvc2VkIGZvbnQpCgkg ICAgaGVhZGVyIChsZ3N0cmluZy1oZWFkZXIgZ3N0cmluZykKCSAgICB2YWwgKGxvb2t1cC1uZXN0 ZWQtYWxpc3QgaGVhZGVyIHByZWNvbXBvc2VkIG5pbCAxKSkKICAgICAgKGlmIChhbmQgKGNvbnNw IHZhbCkgKHZlY3RvcnAgKGNhciB2YWwpKSkKCSAgOzsgQWxsIGNoYXJhY3RlcnMgY2FuIGJlIGRp c3BsYXllZCBieSBhIHNpbmdsZSBwcmVjb21wb3NlZCBnbHlwaC4KCSAgOzsgUmVmb3JtIEdTVFJJ TkcgdG8gW0hFQURFUiBuaWwgUFJFQ09NUE9TRUQtR0xZUEggbmlsIC4uLl0KCSAgKGxldCAoKGds eXBoIChjb3B5LXNlcXVlbmNlIChjYXIgdmFsKSkpKQoJICAgIChsZ2x5cGgtc2V0LWZyb20tdG8g Z2x5cGggMCAoMS0gbmNoYXJzKSkKCSAgICAobGdzdHJpbmctc2V0LWdseXBoIGdzdHJpbmcgMCBn bHlwaCkKCSAgICAobGdzdHJpbmctc2V0LWdseXBoIGdzdHJpbmcgMSBuaWwpKQoJKGlmIChhbmQg KGludGVnZXJwIHZhbCkgKD4gdmFsIDIpCgkJIChzZXRxIGdseXBoIChsb29rdXAtbmVzdGVkLWFs aXN0IGhlYWRlciBwcmVjb21wb3NlZCB2YWwgMSkpCgkJIChjb25zcCBnbHlwaCkgKHZlY3RvcnAg KGNhciBnbHlwaCkpKQoJICAgIDs7IFRoZSBmaXJzdCAoMS0gVkFMKSBjaGFyYWN0ZXJzIGNhbiBi ZSBkaXNwbGF5ZWQgYnkgYQoJICAgIDs7IHByZWNvbXBvc2VkIGdseXBoLiAgUHJvdmlkZWQgdGhh dCBWQUwgaXMgMywgdGhlIGZpcnN0CgkgICAgOzsgdHdvIGdseXBocyBzaG91bGQgYmUgcmVwbGFj ZWQgYnkgdGhlIHByZWNvbXBvc2VkIGdseXBoLgoJICAgIDs7IEluIHRoYXQgY2FzZSwgcmVmb3Jt IEdTVFJJTkcgdG86CgkgICAgOzsgICBbSEVBREVSIG5pbCBQUkVDT01QT1NFRC1HTFlQSCBHTFlQ SDMgLi4uIEdMWVBIbiBuaWwgLi4uXQoJICAgIChsZXQqICgobmNtcCAoMS0gdmFsKSkJOyBudW1i ZXIgb2YgY29tcG9zZWQgZ2x5cGhzCgkJICAgKGRpZmYgKDEtIG5jbXApKSkJOyBudW1iZXIgb2Yg cmVkdWNlZCBnbHlwaHMKCSAgICAgIChzZXRxIGdseXBoIChjb3B5LXNlcXVlbmNlIChjYXIgZ2x5 cGgpKSkKCSAgICAgIChsZ2x5cGgtc2V0LWZyb20tdG8gZ2x5cGggMCAoMS0gbmNoYXJzKSkKCSAg ICAgIChsZ3N0cmluZy1zZXQtZ2x5cGggZ3N0cmluZyAwIGdseXBoKQoJICAgICAgKHNldHEgaWR4 IG5jbXApCgkgICAgICAod2hpbGUgKDwgaWR4IG5jaGFycykKCQkoc2V0cSBnbHlwaCAobGdzdHJp bmctZ2x5cGggZ3N0cmluZyBpZHgpKQoJCShsZ2x5cGgtc2V0LWZyb20tdG8gZ2x5cGggMCAoMS0g bmNoYXJzKSkKCQkobGdzdHJpbmctc2V0LWdseXBoIGdzdHJpbmcgKC0gaWR4IGRpZmYpIGdseXBo KQoJCShzZXRxIGlkeCAoMSsgaWR4KSkpCgkgICAgICAobGdzdHJpbmctc2V0LWdseXBoIGdzdHJp bmcgKC0gaWR4IGRpZmYpIG5pbCkKCSAgICAgIChzZXRxIGlkeCAoLSBuY21wIGRpZmYpCgkJICAg IG5nbHlwaHMgKC0gbmNoYXJzIGRpZmYpKSkKCSAgKHNldHEgZ2x5cGggKGxnc3RyaW5nLWdseXBo IGdzdHJpbmcgMCkpCgkgIChsZ2x5cGgtc2V0LWZyb20tdG8gZ2x5cGggMCAoMS0gbmNoYXJzKSkK CSAgKHNldHEgaWR4IDEgbmdseXBocyBuY2hhcnMpKQoJOzsgTm93IElEWCBpcyBhbiBpbmRleCB0 byB0aGUgZmlyc3Qgbm9uLXByZWNvbXBvc2VkIGdseXBoLgoJOzsgQWRqdXN0IHBvc2l0aW9ucyBv ZiB0aGUgcmVtYWluaW5nIGdseXBocyBhcnRpZmljaWFsbHkuCgkoc2V0cSBiYXNlLXdpZHRoIChs Z2x5cGgtd2lkdGggKGxnc3RyaW5nLWdseXBoIGdzdHJpbmcgMCkpKQoJKHdoaWxlICg8IGlkeCBu Z2x5cGhzKQoJICAoc2V0cSBnbHlwaCAobGdzdHJpbmctZ2x5cGggZ3N0cmluZyBpZHgpKQoJICAo bGdseXBoLXNldC1mcm9tLXRvIGdseXBoIDAgKDEtIG5jaGFycykpCgkgIChpZiAoPj0gKGxnbHlw aC1sYmVhcmluZyBnbHlwaCkgKGxnbHlwaC13aWR0aCBnbHlwaCkpCgkgICAgICA7OyBJdCBzZWVt cyB0aGF0IHRoaXMgZ2x5cGggaXMgZGVzaWduZWQgdG8gYmUgcmVuZGVyZWQKCSAgICAgIDs7IGJl Zm9yZSB0aGUgYmFzZSBnbHlwaC4KCSAgICAgIChsZ2x5cGgtc2V0LWFkanVzdG1lbnQgZ2x5cGgg KC0gYmFzZS13aWR0aCkgMCAwKQoJICAgIChpZiAoPj0gKGxnbHlwaC1sYmVhcmluZyBnbHlwaCkg MCkKCQk7OyBBbGlnbiB0aGUgaG9yaXpvbnRhbCBjZW50ZXIgb2YgdGhpcyBnbHlwaCB0byB0aGUK CQk7OyBob3Jpem9udGFsIGNlbnRlciBvZiB0aGUgYmFzZSBnbHlwaC4KCQkobGV0ICgod2lkdGgg KC0gKGxnbHlwaC1yYmVhcmluZyBnbHlwaCkKCQkJCShsZ2x5cGgtbGJlYXJpbmcgZ2x5cGgpKSkp CgkJICAobGdseXBoLXNldC1hZGp1c3RtZW50IGdseXBoCgkJCQkJICgtICgvICgtIGJhc2Utd2lk dGggd2lkdGgpIDIpCgkJCQkJICAgIChsZ2x5cGgtbGJlYXJpbmcgZ2x5cGgpCgkJCQkJICAgIGJh c2Utd2lkdGgpIDAgMCkpKSkKCSAgKHNldHEgaWR4ICgxKyBpZHgpKSkpKSkKICAgIGdzdHJpbmcp KQoKOzsgRm9yIGF1dG9tYXRpYyBjb21wb3NpdGlvbi4KKGRlZmNvbnN0IGhlYnJldy1jb21wb3Nh YmxlLXBhdHRlcm4KICAoY29uY2F0CiAgICJcXCgiCiAgICJbXHUwNUQ2LVx1MDVEOVx1MDVEQy1c dTA1RTJcdTA1RTUtXHUwNUU4XSIgOzsgYmFzZQogICAiXHUwNUJDPyIgICAgICAgICAgICAgICAg ICAgICAgICA7OyAwLTEgbWFya3Mgb2YgMXN0IGNsYXNzIChkYWdlc2gpCiAgICJbXHUwNUIwLVx1 MDVCOVx1MDVCQlx1MDVDN10/IiAgIDs7IDAtMSBtYXJrcyBvZiAzcmQgY2xhc3MgKG5pcXF1ZCkK ICAgIltcdTA1OTEtXHUwNUFGXHUwNUJEXSoiICAgICAgICAgOzsgMC0yIChwb3NzaWJseSAzKSBt YXJrcyBvZiA0dGggY2xhc3MKICAgIlxcfCIKICAgIltcdTA1RDAtXHUwNUQ0XHUwNURBXHUwNURC XHUwNUU0XHUwNUU1LVx1MDVFQV0iIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICA7OyBiYXNlIChhbGxvd3MgcmFmZSkKICAgIltcdTA1QkNcdTA1QkZdPyIgICAgICAgICAgICAg ICAgOzsgMC0xIG1hcmtzIG9mIDFzdCBjbGFzcyAoZGFnZXNoL3JhZmUpCiAgICJbXHUwNUIwLVx1 MDVCOVx1MDVCQlx1MDVDN10/IiAgIDs7IDAtMSBtYXJrcyBvZiAzcmQgY2xhc3MgKG5pcXF1ZCkK ICAgIltcdTA1OTEtXHUwNUFGXHUwNUJEXSoiICAgICAgICAgOzsgMC0yIChwb3NzaWJseSAzKSBt YXJrcyBvZiA0dGggY2xhc3MKICAgIlxcfCIKICAgIlx1MDVENSIgICAgICAgICAgICAgICAgICAg ICAgICAgOzsgYmFzZSAodmF2KQogICAiXHUwNUJDPyIgICAgICAgICAgICAgICAgICAgICAgICA7 OyAwLTEgbWFya3Mgb2YgMXN0IGNsYXNzIChkYWdlc2gpCiAgICJbXHUwNUIwLVx1MDVCQlx1MDVD N10/IiAgICAgICAgIDs7IDAtMSBtYXJrcyBvZiBleHRlbmRlZCAzcmQgY2xhc3MgKG5pcXF1ZCkK ICAgIltcdTA1OTEtXHUwNUFGXHUwNUJEXSoiICAgICAgICAgOzsgMC0yIChwb3NzaWJseSAzKSBt YXJrcyBvZiA0dGggY2xhc3MKICAgIlxcfCIKICAgIlx1MDVFOSIgICAgICAgICAgICAgICAgICAg ICAgICAgOzsgYmFzZSAoc2hpbikKICAgIlx1MDVCQz8iICAgICAgICAgICAgICAgICAgICAgICAg OzsgMC0xIG1hcmtzIG9mIDFzdCBjbGFzcyAoZGFnZXNoKQogICAiW1x1MDVDMVx1MDVDMl0/IiAg ICAgICAgICAgICAgICA7OyAwLTEgbWFya3Mgb2YgMm5kIGNsYXNzIChzaGluIGRvdCkKICAgIltc dTA1QjAtXHUwNUI5XHUwNUJCXHUwNUM3XT8iICAgOzsgMC0xIG1hcmtzIG9mIDNyZCBjbGFzcyAo bmlxcXVkKQogICAiW1x1MDU5MS1cdTA1QUZcdTA1QkRdKiIgICAgICAgICA7OyAwLTIgKHBvc3Np Ymx5IDMpIG1hcmtzIG9mIDR0aCBjbGFzcwogICAiXFx8IgogICAiW1x1MDVGMS1cdTA1RjNdIiAg ICAgICAgICAgICAgICA7OyBiYXNlICh5aWRpc2ggbGlnYXR1cmVzKQogICAiW1x1MDVCMC1cdTA1 QjlcdTA1QkJcdTA1QzddPyIgICA7OyAwLTEgbWFya3Mgb2YgM3JkIGNsYXNzIChuaXFxdWQpCiAg ICJbXHUwNTkxLVx1MDVBRlx1MDVCRF0qIiAgICAgICAgIDs7IDAtMiAocG9zc2libHkgMykgbWFy a3Mgb2YgNHRoIGNsYXNzCiAgICJcXCkiKQogICJSZWdleHAgbWF0Y2hpbmcgYSBjb21wb3NhYmxl IHNlcXVlbmNlIG9mIEhlYnJldyBjaGFyYWN0ZXJzLiIpCgoobGV0ICgocGF0dGVybjEgIltcdTA1 RDAtXHUwNUYyXVtcdTA1OTEtXHUwNUJGXHUwNUMxLVx1MDVDNVx1MDVDN10rIikKICAgICAgKHBh dHRlcm4yICJbXHUwNUQwLVx1MDVGMl1cdTIwMERbXHUwNTkxLVx1MDVCRlx1MDVDMS1cdTA1QzVc dTA1QzddKyIpKQogIChzZXQtY2hhci10YWJsZS1yYW5nZQogICBjb21wb3NpdGlvbi1mdW5jdGlv bi10YWJsZSAnKCN4NTkxIC4gI3g1QzcpCiAgIChsaXN0ICh2ZWN0b3IgcGF0dGVybjIgMyAnaGVi cmV3LXNoYXBlLWdzdHJpbmcpCgkgKHZlY3RvciBwYXR0ZXJuMiAyICdoZWJyZXctc2hhcGUtZ3N0 cmluZykKCSAodmVjdG9yIHBhdHRlcm4xIDEgJ2hlYnJldy1zaGFwZS1nc3RyaW5nKQoJIFtuaWwg MCBoZWJyZXctc2hhcGUtZ3N0cmluZ10pKQogIChzZXQtY2hhci10YWJsZS1yYW5nZQogICBjb21w b3NpdGlvbi1mdW5jdGlvbi10YWJsZSAjeDVDMCBuaWwpCiAgKHNldC1jaGFyLXRhYmxlLXJhbmdl CiAgIGNvbXBvc2l0aW9uLWZ1bmN0aW9uLXRhYmxlICN4NUM2IG5pbCkpCgo7OyhzZXQtY2hhci10 YWJsZS1yYW5nZSAKOzsgY29tcG9zaXRpb24tZnVuY3Rpb24tdGFibGUgJygjeDU5MSAuICN4NUY0 KQo7OyAobGlzdCAodmVjdG9yIGhlYnJldy1jb21wb3NhYmxlLXBhdHRlcm4gMCAnZm9udC1zaGFw ZS1nc3RyaW5nKSkpCjs7Cihwcm92aWRlICdoZWJyZXcpCgo7OyBhcmNoLXRhZzogM2NhMDRmMzIt M2YxZS00OThlLWFmNDYtODI2NzQ5OGJhNWQ5Cjs7OyBoZWJyZXcuZWwgZW5kcyBoZXJlCg== --0016367b60a6dda9e0048b5cadc9--