From mboxrd@z Thu Jan  1 00:00:00 1970
Path: news.gmane.org!not-for-mail
From: JunJie Nan <nanjunjie@gmail.com>
Newsgroups: gmane.emacs.devel
Subject: Re: A patch for enforcing double-width CJK character display
Date: Mon, 28 Apr 2014 13:35:03 +0800
Message-ID: <CA+Gegu_J9EFD6WhiXvA8C+5EA2BwvpRD0Y_HLe_Lgb35kBkM0g@mail.gmail.com>
NNTP-Posting-Host: plane.gmane.org
Mime-Version: 1.0
Content-Type: multipart/mixed; boundary=bcaec51dd551a0ffd804f813ae40
X-Trace: ger.gmane.org 1398663344 29640 80.91.229.3 (28 Apr 2014 05:35:44 GMT)
X-Complaints-To: usenet@ger.gmane.org
NNTP-Posting-Date: Mon, 28 Apr 2014 05:35:44 +0000 (UTC)
To: emacs-devel@gnu.org
Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Mon Apr 28 07:35:36 2014
Return-path: <emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org>
Envelope-to: ged-emacs-devel@m.gmane.org
Original-Received: from lists.gnu.org ([208.118.235.17])
	by plane.gmane.org with esmtp (Exim 4.69)
	(envelope-from <emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org>)
	id 1WeeE4-0008Ka-30
	for ged-emacs-devel@m.gmane.org; Mon, 28 Apr 2014 07:35:36 +0200
Original-Received: from localhost ([::1]:41848 helo=lists.gnu.org)
	by lists.gnu.org with esmtp (Exim 4.71)
	(envelope-from <emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org>)
	id 1WeeE3-0002h0-MR
	for ged-emacs-devel@m.gmane.org; Mon, 28 Apr 2014 01:35:35 -0400
Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:51839)
	by lists.gnu.org with esmtp (Exim 4.71)
	(envelope-from <nanjunjie@gmail.com>) id 1WeeDv-0002fF-Ik
	for emacs-devel@gnu.org; Mon, 28 Apr 2014 01:35:28 -0400
Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71)
	(envelope-from <nanjunjie@gmail.com>) id 1WeeDu-0008UF-7b
	for emacs-devel@gnu.org; Mon, 28 Apr 2014 01:35:27 -0400
Original-Received: from mail-vc0-x22f.google.com ([2607:f8b0:400c:c03::22f]:65266)
	by eggs.gnu.org with esmtp (Exim 4.71)
	(envelope-from <nanjunjie@gmail.com>) id 1WeeDt-0008Ty-Ug
	for emacs-devel@gnu.org; Mon, 28 Apr 2014 01:35:26 -0400
Original-Received: by mail-vc0-f175.google.com with SMTP id lh4so745985vcb.20
	for <emacs-devel@gnu.org>; Sun, 27 Apr 2014 22:35:24 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113;
	h=mime-version:from:date:message-id:subject:to:content-type;
	bh=IQnMCJ36jsTFMzFN6bn8JXELkVXKFKNARvU6gysMadM=;
	b=AignXaC3+vJ6txRpExIfsjB67g+4l7ht0yMHO2cUUA6rpBsXHXSyhu5jyzDOu9TJkN
	GVwHFD2v9p63KDnLclOuQXjSQwrStoFO35AjRCPVhiO6nSoZorZ0UjmW3vNH0Iiu+AwX
	z4UL0R4wIwUgYK+owZkukdCvd1/2EuuUvBjoS06A7tZC3fJVXE8FwEQ5mDngGicAsDni
	ew5G9vp8IFdOQDgR5VBN3HGLNaZGwcr1yKZ1AyF9h5tsGEkFTOy2zZO/gkt8/H149w6d
	WPFeV0Yjkbq7fThQ6tCbki0ExZA1YU3BcfxR1Tt/4zzpj+PJnmFf5eXsoBkHLRnqHVj7
	Wh+Q==
X-Received: by 10.52.128.231 with SMTP id nr7mr18708563vdb.17.1398663324689;
	Sun, 27 Apr 2014 22:35:24 -0700 (PDT)
Original-Received: by 10.58.135.33 with HTTP; Sun, 27 Apr 2014 22:35:03 -0700 (PDT)
X-detected-operating-system: by eggs.gnu.org: Error: Malformed IPv6 address
	(bad octet value).
X-Received-From: 2607:f8b0:400c:c03::22f
X-BeenThere: emacs-devel@gnu.org
X-Mailman-Version: 2.1.14
Precedence: list
List-Id: "Emacs development discussions." <emacs-devel.gnu.org>
List-Unsubscribe: <https://lists.gnu.org/mailman/options/emacs-devel>,
	<mailto:emacs-devel-request@gnu.org?subject=unsubscribe>
List-Archive: <http://lists.gnu.org/archive/html/emacs-devel>
List-Post: <mailto:emacs-devel@gnu.org>
List-Help: <mailto:emacs-devel-request@gnu.org?subject=help>
List-Subscribe: <https://lists.gnu.org/mailman/listinfo/emacs-devel>,
	<mailto:emacs-devel-request@gnu.org?subject=subscribe>
Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org
Original-Sender: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org
Xref: news.gmane.org gmane.emacs.devel:171640
Archived-At: <http://permalink.gmane.org/gmane.emacs.devel/171640>

--bcaec51dd551a0ffd804f813ae40
Content-Type: multipart/alternative; boundary=bcaec51dd551a0ffd404f813ae3e

--bcaec51dd551a0ffd404f813ae3e
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: quoted-printable

Do not know why the patch is still not installed, although from the
discussion thread nobody oppose it indeed.

Below is an updated version based on current stream. It still works well.


--=20
Cheers
Jun Jie Nan
  =E2=88=A7 =E2=88=A7=EF=B8=B5
 =E3=83=9F^=C5=8D^=E3=83=9F=E7=81=AC)=EF=BD=9E

--bcaec51dd551a0ffd404f813ae3e
Content-Type: text/html; charset=UTF-8
Content-Transfer-Encoding: quoted-printable

<div dir=3D"ltr"><div>Do not know why the patch is still not installed, alt=
hough from the discussion thread nobody oppose it indeed.<br><br></div>Belo=
w is an updated version based on current stream. It still works well.<br><b=
r clear=3D"all">

<div><div><br>-- <br>Cheers<br>Jun Jie Nan<br>=C2=A0 =E2=88=A7 =E2=88=A7=EF=
=B8=B5<br>=C2=A0=E3=83=9F^=C5=8D^=E3=83=9F=E7=81=AC)=EF=BD=9E
</div></div></div>

--bcaec51dd551a0ffd404f813ae3e--
--bcaec51dd551a0ffd804f813ae40
Content-Type: text/x-patch; charset=US-ASCII; name="emacs_src_xftfont.patch"
Content-Disposition: attachment; filename="emacs_src_xftfont.patch"
Content-Transfer-Encoding: base64
X-Attachment-Id: f_hujc05dh0

ZGlmZiAtLWdpdCBhL3NyYy94ZnRmb250LmMgYi9zcmMveGZ0Zm9udC5jCmluZGV4IDE4YzE4MGYu
LjIwMjBiNGYgMTAwNjQ0Ci0tLSBhL3NyYy94ZnRmb250LmMKKysrIGIvc3JjL3hmdGZvbnQuYwpA
QCAtNjAsNiArNjAsOCBAQCBzdHJ1Y3QgeGZ0Zm9udF9pbmZvCiAgIERpc3BsYXkgKmRpc3BsYXk7
CiAgIFhmdEZvbnQgKnhmdGZvbnQ7CiAgIHVuc2lnbmVkIHhfZGlzcGxheV9pZDsKKyAgc3RydWN0
IGZyYW1lICpmcmFtZTsgLyogaG9sZCBmcmFtZSBwdHIsIGNqayBkb3VibGUgd2lkdGggZml4IG5l
ZWQgaXQgKi8KKyAgaW50IGlzX2NqazsgLyogRmxhZyB0byB0ZWxsIGlmIGl0IGlzIENKSyBmb250
IG9yIG5vdC4gKi8KIH07CiAKIC8qIFN0cnVjdHVyZSBwb2ludGVkIGJ5IChzdHJ1Y3QgZmFjZSAq
KS0+ZXh0cmEgICovCkBAIC0xMzMsNiArMTM1LDgzIEBAIHhmdGZvbnRfZ2V0X2NvbG9ycyAoc3Ry
dWN0IGZyYW1lICpmLCBzdHJ1Y3QgZmFjZSAqZmFjZSwgR0MgZ2MsCiB9CiAKIAorLyogQ2hlY2sg
d2hldGhlciB0aGUgZm9udCBjb250YWlucyBDSksgSWRlb2dyYXBoICdudW1iZXIgb25lJywgMHg0
RTAwLAorICAgSXQgc2hvdWxkIGJlIG9rIGZvciBDaGluZXNlL0phcGFuZXNlIGZvbnQuCisgICBP
ciBmb250IGNvbnRhaW5zIEtvcmVhbiBzY3JpcHQgc3lsbGFibGUgJ0thJywweEFDMDAsCisgICBi
ZWNhdXNlIEtvcmVhbiBmb250cyBtYXkgbm90IGhhdmUgYW55IENoaW5lc2UgY2hhcmFjdGVycyBh
dCBhbGwuCisgICBjb2RlcyBmcm9tIHh0ZXJtLiovCitzdGF0aWMgaW50Cit4ZnRmb250X2lzX2Nq
a19mb250KHN0cnVjdCB4ZnRmb250X2luZm8gKnhmdGZvbnRfaW5mbykKK3sKKyAgaWYoWGZ0Q2hh
ckV4aXN0cyh4ZnRmb250X2luZm8tPmRpc3BsYXksIHhmdGZvbnRfaW5mby0+eGZ0Zm9udCwgMHg0
RTAwKSB8fAorICAgICAgWGZ0Q2hhckV4aXN0cyh4ZnRmb250X2luZm8tPmRpc3BsYXksIHhmdGZv
bnRfaW5mby0+eGZ0Zm9udCwgMHhBQzAwKSkKKyAgICByZXR1cm4gMTsKKyAgcmV0dXJuIDA7IAor
fQorCisvKiBHZXQgdGhlIHBhZGRpbmcgYWNjb3JkaW5nIHRvIGRlZmF1bHQgbW9ub3NwYWNlIGZv
bnQgd2lkdGggKi8KK3N0YXRpYyBpbnQKK3hmdGZvbnRfZ2V0X2Nqa19wYWRkaW5nKGludCBkZWZh
dWx0X3dpZHRoLCBpbnQgY2hhcl93aWR0aCwgaW50ICpoYWxmX3dpZHRoX2NqaykKK3sKKyAgaW50
IHBhZGRpbmcgPSAwOworICBpZihoYWxmX3dpZHRoX2NqaykKKyAgICAqaGFsZl93aWR0aF9jamsg
PSAwOworCisgIGlmKCBkZWZhdWx0X3dpZHRoID09IDAgfHwgLyogc29tZXRoaW5nIHdyb25nICov
CisgICAgICBkZWZhdWx0X3dpZHRoID09IC0xIHx8IC8qIGRlZmF1bHQgZm9udCBpcyBub3QgbW9u
b3NwYWNlICovCisgICAgICBjaGFyX3dpZHRoID09IGRlZmF1bHRfd2lkdGgpIC8qIGFscmVhZHkg
Z29vZCAqLworICAgIHJldHVybiAwOworICBpZiggY2hhcl93aWR0aCA8IGRlZmF1bHRfd2lkdGgp
IHsgCisgICAgLyogYWxtb3N0IGltcG9zc2libGUsIGJ1dCB3ZSBjYW4gaGFuZGxlIGl0ICovCisg
ICAgcGFkZGluZyA9IGRlZmF1bHRfd2lkdGggLSBjaGFyX3dpZHRoOworICAgIGlmKGhhbGZfd2lk
dGhfY2prKQorICAgICAgICAqaGFsZl93aWR0aF9jamsgPSAxOworICB9IGVsc2UgLyogZ2V0IHRo
ZSBwYWRkaW5nLCBhbGwgY2prIHN5bWJvbHMgaXMgRE9VQkxFIHdpZHRoICovCisgICAgcGFkZGlu
ZyA9IGRlZmF1bHRfd2lkdGggKiAyIC0gY2hhcl93aWR0aDsKKyAgLyogMSwgU29tZSBvbGQgQ0pL
IHBjZiBmb250cyBtYXkgYmlnZ2VyIHRoYW4gMipkZWZhdWx0X3dpZHRoLgorICAgICAyLCBVc2Vy
IG1heSBzZXQgYSB2ZXJ5IGJpZyBmb250IHNpemUgZm9yIHNjcmlwdCBIQU4gbWFudWFsbHkuCisg
ICAgIEtlZXAgaXQgdW5jaGFuZ2VkLCBOT1QgYWRqdXN0IGRlZmF1bHQgZm9udCB3aWR0aC4gKi8K
KyAgcmV0dXJuIChwYWRkaW5nID4gMCAmJiBwYWRkaW5nIDwgZGVmYXVsdF93aWR0aCkgPyBwYWRk
aW5nIDogMDsgICAgICAgICAgICAgICAgICAKK30KKworLyogR2V0IHRoZSBmb250IHdpZHRoIG9m
IG1vbm9zcGFjZSBmb250LiAKKyAgIFNvbWV0aGluZyB3cm9uZzogcmV0dXJuIDA7CisgICBEZWZh
dWx0IGlzIG5vdCBtb25vc3BhY2U6IHJldHVybiAtMTsKKyAgIE90aGVyd2lzZTogcmV0dXJuIG1v
bm9zcGFjZSBmb250IHdpZHRoOyAqLworc3RhdGljIGludCAKK3hmdGZvbnRfZ2V0X2RlZmF1bHRf
d2lkdGgoc3RydWN0IHhmdGZvbnRfaW5mbyAqeGZ0Zm9udF9pbmZvKQoreworICBMaXNwX09iamVj
dCBmb250X29iamVjdDsKKyAgZG91YmxlIHJlcXVlc3RfcGl4ZWxfc2l6ZTsKKyAgc3RydWN0IGZy
YW1lICpmcmFtZSA9IHhmdGZvbnRfaW5mby0+ZnJhbWU7CisgIEZjUGF0dGVybiAqIHBhdHRlcm4g
PSB4ZnRmb250X2luZm8tPnhmdGZvbnQtPnBhdHRlcm47CisgIGludCBpZCA9IGxvb2t1cF9iYXNp
Y19mYWNlIChmcmFtZSwgREVGQVVMVF9GQUNFX0lEKTsKKyAgc3RydWN0IGZhY2UgKmZhY2UgPSBG
QUNFX0ZST01fSUQgKGZyYW1lLCBpZCk7CisgIGlmKCFmYWNlICYmICFmYWNlLT5mb250KQorICAg
IHJldHVybiAwOworICBYU0VURk9OVCAoZm9udF9vYmplY3QsIGZhY2UtPmZvbnQpOworICAvKiBk
ZWZhdWx0IGZvbnQgaXMgbm90IG1vbm9zcGFjZSAqLworICBpZiAoWElOVChBUkVGIChmb250X29i
amVjdCwgRk9OVF9TUEFDSU5HX0lOREVYKSkgIT0gRk9OVF9TUEFDSU5HX01PTk8pCisgICAgcmV0
dXJuIC0xOworICBpZihGY1BhdHRlcm5HZXREb3VibGUocGF0dGVybiwgRkNfUElYRUxfU0laRSwg
MCwgJnJlcXVlc3RfcGl4ZWxfc2l6ZSkgIT0gRmNSZXN1bHRNYXRjaCkKKyAgICByZXR1cm4gMDsK
KyAgLyogdGhlIGZvbnQgb2YgbWluaWJ1Zi9tb2RlbGluZSBuZXZlciBjaGFuZ2VkIHdoZW4gcmVz
Y2FsaW5nLgorICAgICBpdCdzIGEgbGl0dGxlIGJpdCBkaWZmaWN1bHQgdG8gZGV0ZXJtaW5lIHdo
ZXJlIHRoZSB4ZnRmb250IGRyYXcgdG8uCisgICAgIGZvciBleGFtcGxlLCB3aGVuIHVzZSBtdWxl
L2xlaW0gdG8gaW5wdXQgc29tZSBDSksgdGV4dC4KKyAgICAgaXQgd2lsbCBkcmF3IG9uIHRoZSBz
ZWxlY3RlZCBmcmFtZSBhbmQgbWluaWJ1ZihjYW5kaWRhdGUgc3RyaW5nKS4KKyAgICAgYnkgdGhl
IHdheSwgdGhlICdpbnQnIGNvbnZlcnNpb24gc2hvdWxkIGJlIG9rLiAqLyAKKyAgaWYoRlJBTUVf
Rk9OVChmcmFtZSktPnBpeGVsX3NpemUgPT0gKGludClyZXF1ZXN0X3BpeGVsX3NpemUpIAorICAg
IHJldHVybiBGUkFNRV9GT05UKGZyYW1lKS0+c3BhY2Vfd2lkdGg7CisgIC8qIFVzZXIgbWF5IHNl
dCBhIGZpeGVkIGZvbnQgc2l6ZSBmb3Igc2NyaXB0IGhhbiBtYW51YWxseSwKKyAgICAgdGhlIGZv
bnQgd2lsbCBub3QgcmVzY2FsZSB3aGVuIGlzc3VlIHJlc2NhbGluZywKKyAgICAgc2hvdWxkIG5v
dCBhanVzdCB0aGUgd2lkdGggb2Zmc2V0IGFuZCBhdm9pZCB0byBtYWtlIGl0IHRvbyB3aWRlLgor
ICAgICBpdHMgYWxpZ25tZW50IHdpbGwgYmUgd3JvbmcsIGJ1dCBsZXQncyByZXNwZWN0IHVzZXIg
c2V0dGluZ3MuKi8KKyAgaWYoZmFjZS0+Zm9udC0+cGl4ZWxfc2l6ZSAhPSAoaW50KXJlcXVlc3Rf
cGl4ZWxfc2l6ZSkKKyAgICByZXR1cm4gRlJBTUVfRk9OVChmcmFtZSktPnNwYWNlX3dpZHRoOwor
ICAvKiBvdGhlcndpc2UgcmV0dXJuIHRoZSBjdXJyZW50IGZvbnQgd2lkdGggKi8KKyAgcmV0dXJu
IGZhY2UtPmZvbnQtPnNwYWNlX3dpZHRoOworfQorCiBzdHJ1Y3QgZm9udF9kcml2ZXIgeGZ0Zm9u
dF9kcml2ZXI7CiAKIHN0YXRpYyBMaXNwX09iamVjdApAQCAtNDIwLDYgKzQ5OSwxNSBAQCB4ZnRm
b250X29wZW4gKHN0cnVjdCBmcmFtZSAqZiwgTGlzcF9PYmplY3QgZW50aXR5LCBpbnQgcGl4ZWxf
c2l6ZSkKICAgICAgIFhmdFRleHRFeHRlbnRzOCAoZGlzcGxheSwgeGZ0Zm9udCwgYXNjaWlfcHJp
bnRhYmxlICsgMSwgOTQsICZleHRlbnRzKTsKICAgICAgIGZvbnQtPmF2ZXJhZ2Vfd2lkdGggPSAo
Zm9udC0+c3BhY2Vfd2lkdGggKyBleHRlbnRzLnhPZmYpIC8gOTU7CiAgICAgfQorCisgIC8qIHRv
IGZpeCBDSksgZG91YmxlIHdpZHRoIGFsaWdubWVudCBpc3N1ZS4KKyAgICAgcGFzcyBGUkFNRV9Q
VFIgdG8gZXZlcnkgeGZ0Zm9udF9pbmZvIHN0cnVjdHVyZSwKKyAgICAgd2UgY2FuIG5vdCBnZXQg
aXQgaW4gInhmdGZvbnRfdGV4dF9leHRlbnRzIi4gKi8KKyAgeGZ0Zm9udF9pbmZvLT5mcmFtZSA9
IGY7CisgIC8qIG1hcmsgaXQgaXMgQ0pLIGZvbnQgb3Igbm90IHdoZW4gZm9udCBvcGVuZWQsCisg
ICAgIGF2b2lkIGNhbGxpbmcgInhmdGZvbnRfaXNfY2prX2ZvbnQiIG1hbnkgdGltZXMuICovCisg
IHhmdGZvbnRfaW5mby0+aXNfY2prID0geGZ0Zm9udF9pc19jamtfZm9udCh4ZnRmb250X2luZm8p
OworCiAgIHVuYmxvY2tfaW5wdXQgKCk7CiAKICAgZm9udC0+YXNjZW50ID0geGZ0Zm9udC0+YXNj
ZW50OwpAQCAtNTg4LDE5ICs2NzYsMjkgQEAgeGZ0Zm9udF90ZXh0X2V4dGVudHMgKHN0cnVjdCBm
b250ICpmb250LCB1bnNpZ25lZCBpbnQgKmNvZGUsIGludCBuZ2x5cGhzLCBzdHJ1Y3QKICAgc3Ry
dWN0IHhmdGZvbnRfaW5mbyAqeGZ0Zm9udF9pbmZvID0gKHN0cnVjdCB4ZnRmb250X2luZm8gKikg
Zm9udDsKICAgWEdseXBoSW5mbyBleHRlbnRzOwogCisgIGludCBjamtfcGFkZGluZyA9IDA7Cisg
IGludCBsX3BhZGRpbmcgPSAwOworICBpbnQgcl9wYWRkaW5nID0gMDsKKwogICBibG9ja19pbnB1
dCAoKTsKICAgWGZ0R2x5cGhFeHRlbnRzICh4ZnRmb250X2luZm8tPmRpc3BsYXksIHhmdGZvbnRf
aW5mby0+eGZ0Zm9udCwgY29kZSwgbmdseXBocywKIAkJICAgJmV4dGVudHMpOworICBpZih4ZnRm
b250X2luZm8tPmlzX2NqaykKKyAgICBjamtfcGFkZGluZyA9IHhmdGZvbnRfZ2V0X2Nqa19wYWRk
aW5nKHhmdGZvbnRfZ2V0X2RlZmF1bHRfd2lkdGgoeGZ0Zm9udF9pbmZvKSwgZXh0ZW50cy54T2Zm
LCBOVUxMKTsKKyAgLyogY2prX3BhZGRpbmcgbWF5IGVxdWFscyB0byAwLCB0aGVuIGFsbCBpcyB6
ZXJvLCBzdGlsbCBvayAqLworICBsX3BhZGRpbmcgPSBjamtfcGFkZGluZyA+PiAxOyAvKiBnZXQg
aGFsZiAqLworICByX3BhZGRpbmcgPSBjamtfcGFkZGluZyAtIGxfcGFkZGluZzsgLyogbWF5IG5v
dCBkaXZpZGVkIGJ5IDIgZXhhY3RseSAqLyAKKwogICB1bmJsb2NrX2lucHV0ICgpOwogICBpZiAo
bWV0cmljcykKICAgICB7Ci0gICAgICBtZXRyaWNzLT5sYmVhcmluZyA9IC0gZXh0ZW50cy54Owot
ICAgICAgbWV0cmljcy0+cmJlYXJpbmcgPSAtIGV4dGVudHMueCArIGV4dGVudHMud2lkdGg7Ci0g
ICAgICBtZXRyaWNzLT53aWR0aCA9IGV4dGVudHMueE9mZjsKKyAgICAgIG1ldHJpY3MtPmxiZWFy
aW5nID0gLSBleHRlbnRzLnggLSBsX3BhZGRpbmc7CisgICAgICBtZXRyaWNzLT5yYmVhcmluZyA9
IC0gZXh0ZW50cy54ICsgZXh0ZW50cy53aWR0aCArIHJfcGFkZGluZzsKKyAgICAgIG1ldHJpY3Mt
PndpZHRoID0gZXh0ZW50cy54T2ZmICsgY2prX3BhZGRpbmc7CiAgICAgICBtZXRyaWNzLT5hc2Nl
bnQgPSBleHRlbnRzLnk7CiAgICAgICBtZXRyaWNzLT5kZXNjZW50ID0gZXh0ZW50cy5oZWlnaHQg
LSBleHRlbnRzLnk7CiAgICAgfQotICByZXR1cm4gZXh0ZW50cy54T2ZmOworICByZXR1cm4gZXh0
ZW50cy54T2ZmICsgY2prX3BhZGRpbmc7CiB9CiAKIHN0YXRpYyBYZnREcmF3ICoKQEAgLTY1OCw5
ICs3NTYsMjggQEAgeGZ0Zm9udF9kcmF3IChzdHJ1Y3QgZ2x5cGhfc3RyaW5nICpzLCBpbnQgZnJv
bSwgaW50IHRvLCBpbnQgeCwgaW50IHksCiAgICAgZm9yIChpID0gMDsgaSA8IGxlbjsgaSsrKQog
ICAgICAgWGZ0RHJhd0dseXBocyAoeGZ0X2RyYXcsICZmZywgeGZ0Zm9udF9pbmZvLT54ZnRmb250
LAogCQkgICAgIHggKyBpLCB5LCBjb2RlICsgaSwgMSk7Ci0gIGVsc2UKLSAgICBYZnREcmF3R2x5
cGhzICh4ZnRfZHJhdywgJmZnLCB4ZnRmb250X2luZm8tPnhmdGZvbnQsCi0JCSAgIHgsIHksIGNv
ZGUsIGxlbik7CisgIGVsc2UgeworICAgICAgaW50IGRlZmF1bHRfd2lkdGggPSB4ZnRmb250X2dl
dF9kZWZhdWx0X3dpZHRoKHhmdGZvbnRfaW5mbyk7CisgICAgICBpZigheGZ0Zm9udF9pbmZvLT5p
c19jamsgfHwgZGVmYXVsdF93aWR0aCA9PSAtMSkgLyogbm90IGNqayBvciBkZWZhdWx0IG5vdCBt
b25vc3BhY2UgKi8gCisgICAgICAgIFhmdERyYXdHbHlwaHMgKHhmdF9kcmF3LCAmZmcsIHhmdGZv
bnRfaW5mby0+eGZ0Zm9udCwgeCwgeSwgY29kZSwgbGVuKTsKKyAgICAgIGVsc2UgLyogZHJhdyBD
SksgZ2x5cGhzIG9uZSBieSBvbmUgYW5kIGFkanVzdCB0aGUgb2Zmc2V0ICovCisgICAgICAgICBm
b3IgKGkgPSAwOyBpIDwgbGVuOyBpKyspIHsKKyAgICAgICAgICAgaW50IGNqa19wYWRkaW5nID0g
MDsKKyAgICAgICAgICAgaW50IG9mZnNldCA9IDA7CisgICAgICAgICAgIGludCBoYWxmX3dpZHRo
X2NqayA9IDA7CisgICAgICAgICAgIFhHbHlwaEluZm8gZXh0ZW50czsKKyAgICAgICAgICAgWGZ0
R2x5cGhFeHRlbnRzICh4ZnRmb250X2luZm8tPmRpc3BsYXksIHhmdGZvbnRfaW5mby0+eGZ0Zm9u
dCwgY29kZStpLCAxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICZleHRlbnRzKTsKKyAg
ICAgICAgICAgY2prX3BhZGRpbmcgPSB4ZnRmb250X2dldF9jamtfcGFkZGluZyhkZWZhdWx0X3dp
ZHRoLGV4dGVudHMueE9mZiwgJmhhbGZfd2lkdGhfY2prKTsKKyAgICAgICAgICAgaWYoY2prX3Bh
ZGRpbmcpIAorICAgICAgICAgICAgIG9mZnNldCA9IGRlZmF1bHRfd2lkdGggKiBpICogKGhhbGZf
d2lkdGhfY2prID8gMSA6IDIpICsgKGNqa19wYWRkaW5nPj4xKTsKKyAgICAgICAgICAgZWxzZQor
ICAgICAgICAgICAgIG9mZnNldCA9IGV4dGVudHMueE9mZiAqIGk7IAorICAgICAgICAgICBYZnRE
cmF3R2x5cGhzICh4ZnRfZHJhdywgJmZnLCB4ZnRmb250X2luZm8tPnhmdGZvbnQsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgeCtvZmZzZXQsIHksIGNvZGUraSwgMSk7CisgICAgICAgICB9
CisgIH0KKwogICB1bmJsb2NrX2lucHV0ICgpOwogCiAgIHJldHVybiBsZW47Cg==
--bcaec51dd551a0ffd804f813ae40--