From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!.POSTED!not-for-mail From: Kaushal Modi Newsgroups: gmane.emacs.bugs Subject: bug#33729: 27.0.50; Partial glyphs not rendered for Gujarati with Harfbuzz enabled (renders fine using m17n) Date: Thu, 13 Dec 2018 15:43:50 -0500 Message-ID: References: <20181213203102.GF2244@macbook.localdomain> NNTP-Posting-Host: blaine.gmane.org Mime-Version: 1.0 Content-Type: multipart/alternative; boundary="000000000000756f12057ced615b" X-Trace: blaine.gmane.org 1544733796 27064 195.159.176.226 (13 Dec 2018 20:43:16 GMT) X-Complaints-To: usenet@blaine.gmane.org NNTP-Posting-Date: Thu, 13 Dec 2018 20:43:16 +0000 (UTC) Cc: behdad@behdad.org, 33729@debbugs.gnu.org, far.nasiri.m@gmail.com To: dr.khaled.hosny@gmail.com Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Thu Dec 13 21:43:11 2018 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by blaine.gmane.org with esmtp (Exim 4.84_2) (envelope-from ) id 1gXXp8-0006uk-P9 for geb-bug-gnu-emacs@m.gmane.org; Thu, 13 Dec 2018 21:43:11 +0100 Original-Received: from localhost ([::1]:54782 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gXXrF-0005S6-8g for geb-bug-gnu-emacs@m.gmane.org; Thu, 13 Dec 2018 15:45:21 -0500 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:33884) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gXXr3-0005Qf-Ax for bug-gnu-emacs@gnu.org; Thu, 13 Dec 2018 15:45:11 -0500 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1gXXqy-0001PU-8m for bug-gnu-emacs@gnu.org; Thu, 13 Dec 2018 15:45:09 -0500 Original-Received: from debbugs.gnu.org ([208.118.235.43]:42655) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1gXXqy-0001Ot-2l for bug-gnu-emacs@gnu.org; Thu, 13 Dec 2018 15:45:04 -0500 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1gXXqw-0001L0-9x for bug-gnu-emacs@gnu.org; Thu, 13 Dec 2018 15:45:03 -0500 X-Loop: help-debbugs@gnu.org Resent-From: Kaushal Modi Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Thu, 13 Dec 2018 20:45:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 33729 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: Original-Received: via spool by 33729-submit@debbugs.gnu.org id=B33729.15447338775085 (code B ref 33729); Thu, 13 Dec 2018 20:45:02 +0000 Original-Received: (at 33729) by debbugs.gnu.org; 13 Dec 2018 20:44:37 +0000 Original-Received: from localhost ([127.0.0.1]:46910 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1gXXqW-0001Jw-Fn for submit@debbugs.gnu.org; Thu, 13 Dec 2018 15:44:37 -0500 Original-Received: from mail-lj1-f179.google.com ([209.85.208.179]:44653) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1gXXqU-0001Jj-99 for 33729@debbugs.gnu.org; Thu, 13 Dec 2018 15:44:35 -0500 Original-Received: by mail-lj1-f179.google.com with SMTP id k19-v6so2960112lji.11 for <33729@debbugs.gnu.org>; Thu, 13 Dec 2018 12:44:34 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=N6hXOEaMk68qB7NM/pjswjlDhIvzZ4KiUpxCPmJLBBU=; b=QrUfAppicL0sTimwaXwSl4l6CTogDONpMYe96EXB/Ll/lAM6VXNCOXmBmWowkOo+Lx PmA3XBf71RTACH0VoRdeUr5s1NgbjFVyXU5MmKBwvs/VgzoSQObedEWvQ3z7yCxrKCgf tEd34AOPebZiWT1PGcrTKHmgGlmbESF67dHLIfDtDPeqf7dia9WgzKXfNQi+cbUtXWEG LXHx2fYHU0ftQ11Zv1WsJL7bZZCgm5F+seN0IjX+qLP5GRpb4FtexINpjiXR0P8bKhnc 1LKm/a1r4MkQ9GMrEIG7OvDmCpvuR2BCBA83hcAuCALgazJtsaEAMdF1JO1eSYkum3+N D/4g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=N6hXOEaMk68qB7NM/pjswjlDhIvzZ4KiUpxCPmJLBBU=; b=HmQgMNemn1AOmicOwxUI8nZAiCT1RBtIeygzcMpbu2j0InfHai9C02lQa6hMhnBP/p qdsiIv2fuejCwqSxbkFd1nE72SGN03eHb9mP1UNsbofXj63fCKZmb9wLGLfFUZfGXJTe ZansnxDjuOOZ3L+NEmVZEd3jZuWul5nBE8YG52T8bJhcRc4cJrj/Zy9dpVUpzkDI9DcY 0YUtVnlOggN85pDw1Ty8GVQl+L/fFtz9kxenkj0Grubg8yJzJxnFOrDjdtgqDtIyEWl/ z6HFr6txlBKTPZux8/Fto7tDyKAKuNkEM87CFRjxv309+XFWdhXxxk/2c9iBHl7ZH6b3 T9ZQ== X-Gm-Message-State: AA+aEWaZxvAv9x3gR5f2X2x7P5ErDcAHysEPgwrYchg6XHlmA2ZR4SWc uaAJjvwd/YqJ0VczX0XrugORDq1QXUxiU65r8ro= X-Google-Smtp-Source: AFSGD/Wo3PXAIoSHuyH8oYaPquyZW91d/WkypGdoCfS91z0DKH0Q3NFt2qlb0585sEMji1kvwy030J11EAVnjDTmrYE= X-Received: by 2002:a2e:96c6:: with SMTP id d6-v6mr166285ljj.35.1544733867730; Thu, 13 Dec 2018 12:44:27 -0800 (PST) In-Reply-To: <20181213203102.GF2244@macbook.localdomain> X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 208.118.235.43 X-BeenThere: bug-gnu-emacs@gnu.org List-Id: "Bug reports for GNU Emacs, the Swiss army knife of text editors" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Original-Sender: "bug-gnu-emacs" Xref: news.gmane.org gmane.emacs.bugs:153417 Archived-At: --000000000000756f12057ced615b Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Thu, Dec 13, 2018 at 3:31 PM Khaled Hosny wrote: > > The HarfBuzz rendering of Arabic is the correct one in this screenshot. > Thanks. So here's the status so far: Rendering of Namaste as seen in C-h h (M-x view-hello-file): | | harfbuzz | m17b | |----------+----------+---------| | Hindi | correct | correct | | Gujarati | wrong | correct | | Arabic | correct | wrong | > For debugging the such rendering differences, the actual font used by > Emacs for a given part of the text need to be known, I am using Mukta Vaani font for Gujarati. It is a free font and be downloaded from https://ektype.in/mukta-vaani.html. The string being rendered is "=E0=AA=A8=E0=AA=AE=E0=AA=B8=E0=AB=8D=E0=AA=A4= =E0=AB=87". By placing the cursor on each of those characters and doing C-u x =3D (on t= he m17n build), I get: (1) =E0=AA=A8 position: 1610 of 3509 (46%), column: 32 character: =E0=AA=A8 (displayed as =E0=AA=A8) (codepoint 2728, = #o5250, #xaa8) charset: mule-unicode-0100-24ff (Unicode characters of the range U+0100..U+24FF.) code point in charset: 0x3968 script: gujarati syntax: w which means: word category: .:Base, L:Left-to-right (strong) to input: type "C-x 8 RET aa8" or "C-x 8 RET GUJARATI LETTER NA" buffer code: #xE0 #xAA #xA8 file code: #xE0 #xAA #xA8 (encoded by coding system utf-8-unix) display: by this font (glyph code) xft:-unknown-Mukta Vaani-normal-normal-normal-*-18-*-*-*-*-0-iso10646-1 (#x234) Character code properties: customize what to show name: GUJARATI LETTER NA general-category: Lo (Letter, Other) decomposition: (2728) ('=E0=AA=A8') There are text properties here: charset mule-unicode-0100-24ff (2) =E0=AA=AE position: 1611 of 3509 (46%), column: 33 character: =E0=AA=AE (displayed as =E0=AA=AE) (codepoint 2734, = #o5256, #xaae) charset: mule-unicode-0100-24ff (Unicode characters of the range U+0100..U+24FF.) code point in charset: 0x396E script: gujarati syntax: w which means: word category: .:Base, L:Left-to-right (strong) to input: type "C-x 8 RET aae" or "C-x 8 RET GUJARATI LETTER MA" buffer code: #xE0 #xAA #xAE file code: #xE0 #xAA #xAE (encoded by coding system utf-8-unix) display: by this font (glyph code) xft:-unknown-Mukta Vaani-normal-normal-normal-*-18-*-*-*-*-0-iso10646-1 (#x239) Character code properties: customize what to show name: GUJARATI LETTER MA general-category: Lo (Letter, Other) decomposition: (2734) ('=E0=AA=AE') There are text properties here: charset mule-unicode-0100-24ff (3) =E0=AA=B8=E0=AB=8D=E0=AA=A4=E0=AB=87 position: 1612 of 3509 (46%), column: 34 character: =E0=AA=B8 (displayed as =E0=AA=B8) (codepoint 2744, = #o5270, #xab8) charset: mule-unicode-0100-24ff (Unicode characters of the range U+0100..U+24FF.) code point in charset: 0x3978 script: gujarati syntax: w which means: word category: .:Base, L:Left-to-right (strong) to input: type "C-x 8 RET ab8" or "C-x 8 RET GUJARATI LETTER SA" buffer code: #xE0 #xAA #xB8 file code: #xE0 #xAA #xB8 (encoded by coding system utf-8-unix) display: composed to form "=E0=AA=B8=E0=AB=8D=E0=AA=A4=E0=AB= =87" (see below) Composed with the following character(s) "=E0=AB=8D=E0=AA=A4=E0=AB=87" usin= g this font: xft:-unknown-Mukta Vaani-normal-normal-normal-*-18-*-*-*-*-0-iso10646-1 by these glyphs: [0 3 0 645 8 0 11 11 0 [0 0 8]] [0 3 2724 560 11 1 11 11 1 nil] [0 3 2759 589 0 -9 -2 16 -11 [-1 0 0]] Character code properties: customize what to show name: GUJARATI LETTER SA general-category: Lo (Letter, Other) decomposition: (2744) ('=E0=AA=B8') There are text properties here: charset mule-unicode-0100-24ff =3D=3D=3D=3D=3D On harfbuzz build, the "=E0=AA=B8=E0=AB=8D=E0=AA=A4=E0=AB=87" part is diffe= rent.. I can place the cursor separately on =E0=AA=B8=E0=AB=8D and =E0=AA=A4=E0=AB=87, do C-u x =3D and I= get: (3.1) =E0=AA=B8=E0=AB=8D position: 1612 of 3509 (46%), column: 34 character: =E0=AA=B8 (displayed as =E0=AA=B8) (codepoint 2744, = #o5270, #xab8) charset: mule-unicode-0100-24ff (Unicode characters of the range U+0100..U+24FF.) code point in charset: 0x3978 script: gujarati syntax: w which means: word category: .:Base, L:Left-to-right (strong) to input: type "C-x 8 RET ab8" or "C-x 8 RET GUJARATI LETTER SA" buffer code: #xE0 #xAA #xB8 file code: #xE0 #xAA #xB8 (encoded by coding system utf-8-unix) display: by this font (glyph code) xft:-unknown-Mukta Vaani-normal-normal-normal-*-18-*-*-*-*-0-iso10646-1 (#x241) Character code properties: customize what to show name: GUJARATI LETTER SA general-category: Lo (Letter, Other) decomposition: (2744) ('=E0=AA=B8') There are text properties here: charset mule-unicode-0100-24ff (3.2) =E0=AA=A4=E0=AB=87 position: 1614 of 3509 (46%), column: 35 character: =E0=AA=A4 (displayed as =E0=AA=A4) (codepoint 2724, = #o5244, #xaa4) charset: mule-unicode-0100-24ff (Unicode characters of the range U+0100..U+24FF.) code point in charset: 0x3964 script: gujarati syntax: w which means: word category: .:Base, L:Left-to-right (strong) to input: type "C-x 8 RET aa4" or "C-x 8 RET GUJARATI LETTER TA" buffer code: #xE0 #xAA #xA4 file code: #xE0 #xAA #xA4 (encoded by coding system utf-8-unix) display: by this font (glyph code) xft:-unknown-Mukta Vaani-normal-normal-normal-*-18-*-*-*-*-0-iso10646-1 (#x230) Character code properties: customize what to show name: GUJARATI LETTER TA general-category: Lo (Letter, Other) decomposition: (2724) ('=E0=AA=A4') There are text properties here: charset mule-unicode-0100-24ff then the text and > the font can be checked against vanilla HarfBuzz (e.g. using the hb-view > command line tool); if it gives the same rendering then it is either a > HarfBuzz or font issue, if not then it is a bug in the HarfBuzz > integration code in Emacs. > --000000000000756f12057ced615b Content-Type: text/html; charset="UTF-8" Content-Transfer-Encoding: base64 PGRpdiBkaXI9Imx0ciI+PGRpdiBkaXI9Imx0ciI+PGRpdiBkaXI9Imx0ciI+PGRpdiBkaXI9Imx0 ciI+PGRpdiBkaXI9Imx0ciI+PGRpdiBkaXI9Imx0ciI+PGRpdiBkaXI9Imx0ciI+PGRpdiBkaXI9 Imx0ciI+PGRpdiBkaXI9Imx0ciI+PGRpdiBkaXI9Imx0ciI+PGRpdiBkaXI9Imx0ciI+PGRpdiBk aXI9Imx0ciI+PGRpdiBjbGFzcz0iZ21haWxfcXVvdGUiPjxkaXYgZGlyPSJsdHIiPk9uIFRodSwg RGVjIDEzLCAyMDE4IGF0IDM6MzEgUE0gS2hhbGVkIEhvc255ICZsdDs8YSBocmVmPSJtYWlsdG86 ZHIua2hhbGVkLmhvc255QGdtYWlsLmNvbSI+ZHIua2hhbGVkLmhvc255QGdtYWlsLmNvbTwvYT4m Z3Q7IHdyb3RlOjxicj48L2Rpdj48YmxvY2txdW90ZSBjbGFzcz0iZ21haWxfcXVvdGUiIHN0eWxl PSJtYXJnaW46MHB4IDBweCAwcHggMC44ZXg7Ym9yZGVyLWxlZnQ6MXB4IHNvbGlkIHJnYigyMDQs MjA0LDIwNCk7cGFkZGluZy1sZWZ0OjFleCI+PGJyPg0KVGhlIEhhcmZCdXp6IHJlbmRlcmluZyBv ZiBBcmFiaWMgaXMgdGhlIGNvcnJlY3Qgb25lIGluIHRoaXMgc2NyZWVuc2hvdC48YnI+PC9ibG9j a3F1b3RlPjxkaXY+PGJyPjwvZGl2PjxkaXY+VGhhbmtzLiBTbyBoZXJlJiMzOTtzIHRoZSBzdGF0 dXMgc28gZmFyOjwvZGl2PjxkaXY+PGJyPjwvZGl2PjxkaXY+UmVuZGVyaW5nIG9mIE5hbWFzdGUg YXMgc2VlbiBpbiBDLWggaCAoTS14IHZpZXctaGVsbG8tZmlsZSk6PGJyPjxicj58wqDCoMKgwqDC oMKgwqDCoMKgIHwgaGFyZmJ1enogfCBtMTdiwqDCoMKgIHw8YnI+fC0tLS0tLS0tLS0rLS0tLS0t LS0tLSstLS0tLS0tLS18PGJyPnwgSGluZGnCoMKgwqAgfCBjb3JyZWN0wqAgfCBjb3JyZWN0IHw8 YnI+fCBHdWphcmF0aSB8IHdyb25nwqDCoMKgIHwgY29ycmVjdCB8PGJyPnwgQXJhYmljwqDCoCB8 IGNvcnJlY3TCoCB8IHdyb25nwqDCoCB8PGJyPjxicj48L2Rpdj48ZGl2PsKgPC9kaXY+PGJsb2Nr cXVvdGUgY2xhc3M9ImdtYWlsX3F1b3RlIiBzdHlsZT0ibWFyZ2luOjBweCAwcHggMHB4IDAuOGV4 O2JvcmRlci1sZWZ0OjFweCBzb2xpZCByZ2IoMjA0LDIwNCwyMDQpO3BhZGRpbmctbGVmdDoxZXgi Pg0KRm9yIGRlYnVnZ2luZyB0aGUgc3VjaCByZW5kZXJpbmcgZGlmZmVyZW5jZXMsIHRoZSBhY3R1 YWwgZm9udCB1c2VkIGJ5PGJyPg0KRW1hY3MgZm9yIGEgZ2l2ZW4gcGFydCBvZiB0aGUgdGV4dCBu ZWVkIHRvIGJlIGtub3duLDwvYmxvY2txdW90ZT48ZGl2Pjxicj48L2Rpdj48ZGl2PkkgYW0gdXNp bmcgTXVrdGEgVmFhbmkgZm9udCBmb3IgR3VqYXJhdGkuIEl0IGlzIGEgZnJlZSBmb250IGFuZCBi ZSBkb3dubG9hZGVkIGZyb20gPGEgaHJlZj0iaHR0cHM6Ly9la3R5cGUuaW4vbXVrdGEtdmFhbmku aHRtbCI+aHR0cHM6Ly9la3R5cGUuaW4vbXVrdGEtdmFhbmkuaHRtbDwvYT4uPGJyPjwvZGl2Pjxk aXY+wqA8L2Rpdj48ZGl2PlRoZSBzdHJpbmcgYmVpbmcgcmVuZGVyZWQgaXMgJnF1b3Q74Kqo4Kqu 4Kq44KuN4Kqk4KuHJnF1b3Q7LiANCjxkaXY+QnkgcGxhY2luZyB0aGUgY3Vyc29yIG9uIGVhY2gg b2YgdGhvc2UgY2hhcmFjdGVycyBhbmQgZG9pbmcgQy11IHggPSAob24gdGhlIG0xN24gYnVpbGQp LCBJIGdldDo8L2Rpdj48ZGl2PjwvZGl2Pg0KDQo8L2Rpdj48ZGl2Pjxicj48L2Rpdj48ZGl2Pigx KSANCuCqqA0KDQo8L2Rpdj48ZGl2Pjxicj48L2Rpdj48ZGl2PsKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCBwb3NpdGlvbjogMTYxMCBvZiAzNTA5ICg0NiUpLCBjb2x1bW46IDMyPGJyPsKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgY2hhcmFjdGVyOiDgqqggKGRpc3BsYXllZCBhcyDgqqgpIChjb2RlcG9p bnQgMjcyOCwgI281MjUwLCAjeGFhOCk8YnI+wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgY2hh cnNldDogbXVsZS11bmljb2RlLTAxMDAtMjRmZiAoVW5pY29kZSBjaGFyYWN0ZXJzIG9mIHRoZSBy YW5nZSBVKzAxMDAuLlUrMjRGRi4pPGJyPmNvZGUgcG9pbnQgaW4gY2hhcnNldDogMHgzOTY4PGJy PsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgc2NyaXB0OiBndWphcmF0aTxicj7CoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIHN5bnRheDogdyDCoMKgwqAgd2hpY2ggbWVhbnM6IHdvcmQ8 YnI+wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGNhdGVnb3J5OiAuOkJhc2UsIEw6TGVmdC10by1y aWdodCAoc3Ryb25nKTxicj7CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdG8gaW5wdXQ6IHR5cGUg JnF1b3Q7Qy14IDggUkVUIGFhOCZxdW90OyBvciAmcXVvdDtDLXggOCBSRVQgR1VKQVJBVEkgTEVU VEVSIE5BJnF1b3Q7PGJyPsKgwqDCoMKgwqDCoMKgwqDCoCBidWZmZXIgY29kZTogI3hFMCAjeEFB ICN4QTg8YnI+wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBmaWxlIGNvZGU6ICN4RTAgI3hBQSAjeEE4 IChlbmNvZGVkIGJ5IGNvZGluZyBzeXN0ZW0gdXRmLTgtdW5peCk8YnI+wqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgZGlzcGxheTogYnkgdGhpcyBmb250IChnbHlwaCBjb2RlKTxicj7CoMKgwqAg eGZ0Oi11bmtub3duLU11a3RhIFZhYW5pLW5vcm1hbC1ub3JtYWwtbm9ybWFsLSotMTgtKi0qLSot Ki0wLWlzbzEwNjQ2LTEgKCN4MjM0KTxicj48YnI+Q2hhcmFjdGVyIGNvZGUgcHJvcGVydGllczog Y3VzdG9taXplIHdoYXQgdG8gc2hvdzxicj7CoCBuYW1lOiBHVUpBUkFUSSBMRVRURVIgTkE8YnI+ wqAgZ2VuZXJhbC1jYXRlZ29yeTogTG8gKExldHRlciwgT3RoZXIpPGJyPsKgIGRlY29tcG9zaXRp b246ICgyNzI4KSAoJiMzOTvgqqgmIzM5Oyk8YnI+PGJyPlRoZXJlIGFyZSB0ZXh0IHByb3BlcnRp ZXMgaGVyZTo8YnI+wqAgY2hhcnNldMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIG11bGUtdW5p Y29kZS0wMTAwLTI0ZmY8YnI+PC9kaXY+PGJyPjxkaXY+KDIpIOCqrjwvZGl2PjxkaXY+PGJyPjwv ZGl2PjxkaXY+wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHBvc2l0aW9uOiAxNjExIG9mIDM1MDkg KDQ2JSksIGNvbHVtbjogMzM8YnI+wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBjaGFyYWN0ZXI6IOCq riAoZGlzcGxheWVkIGFzIOCqrikgKGNvZGVwb2ludCAyNzM0LCAjbzUyNTYsICN4YWFlKTxicj7C oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBjaGFyc2V0OiBtdWxlLXVuaWNvZGUtMDEwMC0yNGZm IChVbmljb2RlIGNoYXJhY3RlcnMgb2YgdGhlIHJhbmdlIFUrMDEwMC4uVSsyNEZGLik8YnI+Y29k ZSBwb2ludCBpbiBjaGFyc2V0OiAweDM5NkU8YnI+wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCBzY3JpcHQ6IGd1amFyYXRpPGJyPsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgc3ludGF4 OiB3IMKgwqDCoCB3aGljaCBtZWFuczogd29yZDxicj7CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg Y2F0ZWdvcnk6IC46QmFzZSwgTDpMZWZ0LXRvLXJpZ2h0IChzdHJvbmcpPGJyPsKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCB0byBpbnB1dDogdHlwZSAmcXVvdDtDLXggOCBSRVQgYWFlJnF1b3Q7IG9y ICZxdW90O0MteCA4IFJFVCBHVUpBUkFUSSBMRVRURVIgTUEmcXVvdDs8YnI+wqDCoMKgwqDCoMKg wqDCoMKgIGJ1ZmZlciBjb2RlOiAjeEUwICN4QUEgI3hBRTxicj7CoMKgwqDCoMKgwqDCoMKgwqDC oMKgIGZpbGUgY29kZTogI3hFMCAjeEFBICN4QUUgKGVuY29kZWQgYnkgY29kaW5nIHN5c3RlbSB1 dGYtOC11bml4KTxicj7CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBkaXNwbGF5OiBieSB0aGlz IGZvbnQgKGdseXBoIGNvZGUpPGJyPsKgwqDCoCB4ZnQ6LXVua25vd24tTXVrdGEgVmFhbmktbm9y bWFsLW5vcm1hbC1ub3JtYWwtKi0xOC0qLSotKi0qLTAtaXNvMTA2NDYtMSAoI3gyMzkpPGJyPjxi cj5DaGFyYWN0ZXIgY29kZSBwcm9wZXJ0aWVzOiBjdXN0b21pemUgd2hhdCB0byBzaG93PGJyPsKg IG5hbWU6IEdVSkFSQVRJIExFVFRFUiBNQTxicj7CoCBnZW5lcmFsLWNhdGVnb3J5OiBMbyAoTGV0 dGVyLCBPdGhlcik8YnI+wqAgZGVjb21wb3NpdGlvbjogKDI3MzQpICgmIzM5O+CqriYjMzk7KTxi cj48YnI+VGhlcmUgYXJlIHRleHQgcHJvcGVydGllcyBoZXJlOjxicj7CoCBjaGFyc2V0wqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgbXVsZS11bmljb2RlLTAxMDAtMjRmZjxicj48YnI+PC9kaXY+ PGRpdj4oMykgDQoNCuCquOCrjeCqpOCrhyA8YnI+PC9kaXY+PGRpdj48YnI+PC9kaXY+PGRpdj7C oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcG9zaXRpb246IDE2MTIgb2YgMzUwOSAoNDYlKSwgY29s dW1uOiAzNDxicj7CoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGNoYXJhY3Rlcjog4Kq4IChkaXNwbGF5 ZWQgYXMg4Kq4KSAoY29kZXBvaW50IDI3NDQsICNvNTI3MCwgI3hhYjgpPGJyPsKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIGNoYXJzZXQ6IG11bGUtdW5pY29kZS0wMTAwLTI0ZmYgKFVuaWNvZGUg Y2hhcmFjdGVycyBvZiB0aGUgcmFuZ2UgVSswMTAwLi5VKzI0RkYuKTxicj5jb2RlIHBvaW50IGlu IGNoYXJzZXQ6IDB4Mzk3ODxicj7CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHNjcmlwdDog Z3VqYXJhdGk8YnI+wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzeW50YXg6IHcgwqDCoMKg IHdoaWNoIG1lYW5zOiB3b3JkPGJyPsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBjYXRlZ29yeTog LjpCYXNlLCBMOkxlZnQtdG8tcmlnaHQgKHN0cm9uZyk8YnI+wqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIHRvIGlucHV0OiB0eXBlICZxdW90O0MteCA4IFJFVCBhYjgmcXVvdDsgb3IgJnF1b3Q7Qy14 IDggUkVUIEdVSkFSQVRJIExFVFRFUiBTQSZxdW90Ozxicj7CoMKgwqDCoMKgwqDCoMKgwqAgYnVm ZmVyIGNvZGU6ICN4RTAgI3hBQSAjeEI4PGJyPsKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZmlsZSBj b2RlOiAjeEUwICN4QUEgI3hCOCAoZW5jb2RlZCBieSBjb2Rpbmcgc3lzdGVtIHV0Zi04LXVuaXgp PGJyPsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGRpc3BsYXk6IGNvbXBvc2VkIHRvIGZvcm0g JnF1b3Q74Kq44KuN4Kqk4KuHJnF1b3Q7IChzZWUgYmVsb3cpPGJyPjxicj5Db21wb3NlZCB3aXRo IHRoZSBmb2xsb3dpbmcgY2hhcmFjdGVyKHMpICZxdW90O+CrjeCqpOCrhyZxdW90OyB1c2luZyB0 aGlzIGZvbnQ6PGJyPsKgIHhmdDotdW5rbm93bi1NdWt0YSBWYWFuaS1ub3JtYWwtbm9ybWFsLW5v cm1hbC0qLTE4LSotKi0qLSotMC1pc28xMDY0Ni0xPGJyPmJ5IHRoZXNlIGdseXBoczo8YnI+wqAg WzAgMyAwIDY0NSA4IDAgMTEgMTEgMCBbMCAwIDhdXTxicj7CoCBbMCAzIDI3MjQgNTYwIDExIDEg MTEgMTEgMSBuaWxdPGJyPsKgIFswIDMgMjc1OSA1ODkgMCAtOSAtMiAxNiAtMTEgWy0xIDAgMF1d PGJyPjxicj5DaGFyYWN0ZXIgY29kZSBwcm9wZXJ0aWVzOiBjdXN0b21pemUgd2hhdCB0byBzaG93 PGJyPsKgIG5hbWU6IEdVSkFSQVRJIExFVFRFUiBTQTxicj7CoCBnZW5lcmFsLWNhdGVnb3J5OiBM byAoTGV0dGVyLCBPdGhlcik8YnI+wqAgZGVjb21wb3NpdGlvbjogKDI3NDQpICgmIzM5O+CquCYj Mzk7KTxicj48YnI+VGhlcmUgYXJlIHRleHQgcHJvcGVydGllcyBoZXJlOjxicj7CoCBjaGFyc2V0 wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgbXVsZS11bmljb2RlLTAxMDAtMjRmZjxicj48YnI+ PC9kaXY+PGRpdj48YnI+PC9kaXY+PGRpdj49PT09PTwvZGl2PjxkaXY+PGJyPjwvZGl2PjxkaXY+ PGJyPjwvZGl2PjxkaXY+T24gaGFyZmJ1enogYnVpbGQsIHRoZSAmcXVvdDvgqrjgq43gqqTgq4cm cXVvdDsgcGFydCBpcyBkaWZmZXJlbnQuLiBJIGNhbiBwbGFjZSB0aGUgY3Vyc29yIHNlcGFyYXRl bHkgb24g4Kq44KuNIGFuZCDgqqTgq4csIGRvIEMtdSB4ID0gYW5kIEkgZ2V0OjwvZGl2PjxkaXY+ PGJyPjwvZGl2PjxkaXY+KDMuMSkg4Kq44KuNwqANCg0KPC9kaXY+PGRpdj7CoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgcG9zaXRpb246IDE2MTIgb2YgMzUwOSAoNDYlKSwgY29sdW1uOiAzNDxicj7C oMKgwqDCoMKgwqDCoMKgwqDCoMKgIGNoYXJhY3Rlcjog4Kq4IChkaXNwbGF5ZWQgYXMg4Kq4KSAo Y29kZXBvaW50IDI3NDQsICNvNTI3MCwgI3hhYjgpPGJyPsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIGNoYXJzZXQ6IG11bGUtdW5pY29kZS0wMTAwLTI0ZmYgKFVuaWNvZGUgY2hhcmFjdGVycyBv ZiB0aGUgcmFuZ2UgVSswMTAwLi5VKzI0RkYuKTxicj5jb2RlIHBvaW50IGluIGNoYXJzZXQ6IDB4 Mzk3ODxicj7CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHNjcmlwdDogZ3VqYXJhdGk8YnI+ wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzeW50YXg6IHcgwqDCoMKgIHdoaWNoIG1lYW5z OiB3b3JkPGJyPsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBjYXRlZ29yeTogLjpCYXNlLCBMOkxl ZnQtdG8tcmlnaHQgKHN0cm9uZyk8YnI+wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHRvIGlucHV0 OiB0eXBlICZxdW90O0MteCA4IFJFVCBhYjgmcXVvdDsgb3IgJnF1b3Q7Qy14IDggUkVUIEdVSkFS QVRJIExFVFRFUiBTQSZxdW90Ozxicj7CoMKgwqDCoMKgwqDCoMKgwqAgYnVmZmVyIGNvZGU6ICN4 RTAgI3hBQSAjeEI4PGJyPsKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZmlsZSBjb2RlOiAjeEUwICN4 QUEgI3hCOCAoZW5jb2RlZCBieSBjb2Rpbmcgc3lzdGVtIHV0Zi04LXVuaXgpPGJyPsKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIGRpc3BsYXk6IGJ5IHRoaXMgZm9udCAoZ2x5cGggY29kZSk8YnI+ wqDCoMKgIHhmdDotdW5rbm93bi1NdWt0YSBWYWFuaS1ub3JtYWwtbm9ybWFsLW5vcm1hbC0qLTE4 LSotKi0qLSotMC1pc28xMDY0Ni0xICgjeDI0MSk8YnI+PGJyPkNoYXJhY3RlciBjb2RlIHByb3Bl cnRpZXM6IGN1c3RvbWl6ZSB3aGF0IHRvIHNob3c8YnI+wqAgbmFtZTogR1VKQVJBVEkgTEVUVEVS IFNBPGJyPsKgIGdlbmVyYWwtY2F0ZWdvcnk6IExvIChMZXR0ZXIsIE90aGVyKTxicj7CoCBkZWNv bXBvc2l0aW9uOiAoMjc0NCkgKCYjMzk74Kq4JiMzOTspPGJyPjxicj5UaGVyZSBhcmUgdGV4dCBw cm9wZXJ0aWVzIGhlcmU6PGJyPsKgIGNoYXJzZXTCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBt dWxlLXVuaWNvZGUtMDEwMC0yNGZmPGJyPjxicj48L2Rpdj4NCigzLjIpIOCqpOCrhw0KDQoNCg0K PGRpdj48YnI+PC9kaXY+PGRpdj7CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcG9zaXRpb246IDE2 MTQgb2YgMzUwOSAoNDYlKSwgY29sdW1uOiAzNTxicj7CoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGNo YXJhY3Rlcjog4KqkIChkaXNwbGF5ZWQgYXMg4KqkKSAoY29kZXBvaW50IDI3MjQsICNvNTI0NCwg I3hhYTQpPGJyPsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGNoYXJzZXQ6IG11bGUtdW5pY29k ZS0wMTAwLTI0ZmYgKFVuaWNvZGUgY2hhcmFjdGVycyBvZiB0aGUgcmFuZ2UgVSswMTAwLi5VKzI0 RkYuKTxicj5jb2RlIHBvaW50IGluIGNoYXJzZXQ6IDB4Mzk2NDxicj7CoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIHNjcmlwdDogZ3VqYXJhdGk8YnI+wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCBzeW50YXg6IHcgwqDCoMKgIHdoaWNoIG1lYW5zOiB3b3JkPGJyPsKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCBjYXRlZ29yeTogLjpCYXNlLCBMOkxlZnQtdG8tcmlnaHQgKHN0cm9uZyk8YnI+ wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHRvIGlucHV0OiB0eXBlICZxdW90O0MteCA4IFJFVCBh YTQmcXVvdDsgb3IgJnF1b3Q7Qy14IDggUkVUIEdVSkFSQVRJIExFVFRFUiBUQSZxdW90Ozxicj7C oMKgwqDCoMKgwqDCoMKgwqAgYnVmZmVyIGNvZGU6ICN4RTAgI3hBQSAjeEE0PGJyPsKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgZmlsZSBjb2RlOiAjeEUwICN4QUEgI3hBNCAoZW5jb2RlZCBieSBjb2Rp bmcgc3lzdGVtIHV0Zi04LXVuaXgpPGJyPsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGRpc3Bs YXk6IGJ5IHRoaXMgZm9udCAoZ2x5cGggY29kZSk8YnI+wqDCoMKgIHhmdDotdW5rbm93bi1NdWt0 YSBWYWFuaS1ub3JtYWwtbm9ybWFsLW5vcm1hbC0qLTE4LSotKi0qLSotMC1pc28xMDY0Ni0xICgj eDIzMCk8YnI+PGJyPkNoYXJhY3RlciBjb2RlIHByb3BlcnRpZXM6IGN1c3RvbWl6ZSB3aGF0IHRv IHNob3c8YnI+wqAgbmFtZTogR1VKQVJBVEkgTEVUVEVSIFRBPGJyPsKgIGdlbmVyYWwtY2F0ZWdv cnk6IExvIChMZXR0ZXIsIE90aGVyKTxicj7CoCBkZWNvbXBvc2l0aW9uOiAoMjcyNCkgKCYjMzk7 4KqkJiMzOTspPGJyPjxicj5UaGVyZSBhcmUgdGV4dCBwcm9wZXJ0aWVzIGhlcmU6PGJyPsKgIGNo YXJzZXTCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBtdWxlLXVuaWNvZGUtMDEwMC0yNGZmPGJy Pjxicj48YnI+PC9kaXY+PGRpdj48YnI+PC9kaXY+PGJsb2NrcXVvdGUgY2xhc3M9ImdtYWlsX3F1 b3RlIiBzdHlsZT0ibWFyZ2luOjBweCAwcHggMHB4IDAuOGV4O2JvcmRlci1sZWZ0OjFweCBzb2xp ZCByZ2IoMjA0LDIwNCwyMDQpO3BhZGRpbmctbGVmdDoxZXgiPiB0aGVuIHRoZSB0ZXh0IGFuZDxi cj4NCnRoZSBmb250IGNhbiBiZSBjaGVja2VkIGFnYWluc3QgdmFuaWxsYSBIYXJmQnV6eiAoZS5n LiB1c2luZyB0aGUgaGItdmlldzxicj4NCmNvbW1hbmQgbGluZSB0b29sKTsgaWYgaXQgZ2l2ZXMg dGhlIHNhbWUgcmVuZGVyaW5nIHRoZW4gaXQgaXMgZWl0aGVyIGE8YnI+DQpIYXJmQnV6eiBvciBm b250IGlzc3VlLCBpZiBub3QgdGhlbiBpdCBpcyBhIGJ1ZyBpbiB0aGUgSGFyZkJ1eno8YnI+DQpp bnRlZ3JhdGlvbiBjb2RlIGluIEVtYWNzLjxicj4NCjwvYmxvY2txdW90ZT48L2Rpdj48L2Rpdj48 L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48L2Rp dj48L2Rpdj4NCg== --000000000000756f12057ced615b--