From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Erik Charlebois Newsgroups: gmane.emacs.bugs Subject: bug#14180: PATCH Better fullscreen frame support on Windows Date: Sat, 13 Apr 2013 21:23:16 -0400 Message-ID: References: <83fvyu91xt.fsf@gnu.org> <516942A4.5090707@swipnet.se> <83bo9i8wzf.fsf@gnu.org> NNTP-Posting-Host: plane.gmane.org Mime-Version: 1.0 Content-Type: multipart/mixed; boundary=089e0122ac460e91d004da47fb55 X-Trace: ger.gmane.org 1365902645 2337 80.91.229.3 (14 Apr 2013 01:24:05 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Sun, 14 Apr 2013 01:24:05 +0000 (UTC) Cc: 14180@debbugs.gnu.org To: Eli Zaretskii Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Sun Apr 14 03:24:09 2013 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by plane.gmane.org with esmtp (Exim 4.69) (envelope-from ) id 1URBfr-0006kb-Ci for geb-bug-gnu-emacs@m.gmane.org; Sun, 14 Apr 2013 03:24:07 +0200 Original-Received: from localhost ([::1]:37885 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1URBfq-00067m-Q9 for geb-bug-gnu-emacs@m.gmane.org; Sat, 13 Apr 2013 21:24:06 -0400 Original-Received: from eggs.gnu.org ([208.118.235.92]:42770) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1URBfl-00065J-2Y for bug-gnu-emacs@gnu.org; Sat, 13 Apr 2013 21:24:03 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1URBfj-0004Gg-2i for bug-gnu-emacs@gnu.org; Sat, 13 Apr 2013 21:24:01 -0400 Original-Received: from debbugs.gnu.org ([140.186.70.43]:45319) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1URBfi-0004Ga-UX for bug-gnu-emacs@gnu.org; Sat, 13 Apr 2013 21:23:58 -0400 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.72) (envelope-from ) id 1URBjd-0004vV-Rm for bug-gnu-emacs@gnu.org; Sat, 13 Apr 2013 21:28:01 -0400 X-Loop: help-debbugs@gnu.org Resent-From: Erik Charlebois Original-Sender: debbugs-submit-bounces@debbugs.gnu.org Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Sun, 14 Apr 2013 01:28:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 14180 X-GNU-PR-Package: emacs,w32 X-GNU-PR-Keywords: patch Original-Received: via spool by 14180-submit@debbugs.gnu.org id=B14180.136590284618856 (code B ref 14180); Sun, 14 Apr 2013 01:28:01 +0000 Original-Received: (at 14180) by debbugs.gnu.org; 14 Apr 2013 01:27:26 +0000 Original-Received: from localhost ([127.0.0.1]:49428 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1URBj2-0004u3-Ic for submit@debbugs.gnu.org; Sat, 13 Apr 2013 21:27:25 -0400 Original-Received: from mail-ie0-f181.google.com ([209.85.223.181]:55539) by debbugs.gnu.org with esmtp (Exim 4.72) (envelope-from ) id 1URBiy-0004tr-1d for 14180@debbugs.gnu.org; Sat, 13 Apr 2013 21:27:23 -0400 Original-Received: by mail-ie0-f181.google.com with SMTP id as1so199685iec.26 for <14180@debbugs.gnu.org>; Sat, 13 Apr 2013 18:23:16 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:x-received:in-reply-to:references:date:message-id :subject:from:to:cc:content-type; bh=izNU0CyC+FiXHfSohTq91W/dTP9INgYAy1by6syiDdg=; b=JaGMu46vS38rtXEWBOxMv6JtIFQGlDMtzrdIAeLMRHKMzPx6zqhTXQe/uZkz2+SJlK My41IpdbqK5RAzBSsrcCafjOcKjWeWoIgVnPSggrYsn6jnr6xT8FYkEOqlteIfElRuAH Qc5flwM0a9ZUpvz+jbqQ+WdhfJajncwH8tpy6lmzSovNFTObLN7OKT94A9dJm8TPTtPN vv9ZvBsp4lwA6HqqOBfp1pd/DKA9VgLpfZtp2j4IpSMzWbsXRNN5GlG0K6l4H+O0QNaK MKnPkvqQ0wCL0RpzgR0NYfKRmLkwZyZt08rDkxpZ4hFGTgl+OZFKwoVyW5NtgZ+9JDhC N9Gg== X-Received: by 10.50.114.195 with SMTP id ji3mr2403856igb.67.1365902596409; Sat, 13 Apr 2013 18:23:16 -0700 (PDT) Original-Received: by 10.64.27.3 with HTTP; Sat, 13 Apr 2013 18:23:16 -0700 (PDT) In-Reply-To: <83bo9i8wzf.fsf@gnu.org> X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.13 Precedence: list X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6.x X-Received-From: 140.186.70.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-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.bugs:73389 Archived-At: --089e0122ac460e91d004da47fb55 Content-Type: multipart/alternative; boundary=089e0122ac460e91cb04da47fb53 --089e0122ac460e91cb04da47fb53 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: quoted-printable I've rewritten the patch to preserve the maximized, fullwidth and fullheight functionality and fix them on Windows 8; came out cleaner in the end too. The FULLSCREEN_WAIT flag now gets cleared prior to using want_fullscreen (was a bug in the existing implementation too I believe). I've contacted the FSF clerk. Hopefully that can get cleared up soon. 2013-04-11 Erik Charlebois * src/w32fns.c (w32_fullscreen_rect): New function to compute the window rectangle for the given fullscreen mode. (w32_wnd_proc): When in a fullscreen mode, WM_WINDOWPOSCHANGING no longer tunes the window size. This keeps the window's edges flush with the screen and allows the taskbar to hide itself in fullboth. * src/w32term.c (w32fullscreen_hook): fullboth now shows without window decorations and uses the entire screen. On Sat, Apr 13, 2013 at 7:56 AM, Eli Zaretskii wrote: > > Date: Sat, 13 Apr 2013 13:33:56 +0200 > > From: Jan Dj=C3=A4rv > > CC: Erik Charlebois , 14180@debbugs.gnu.org > > > > 2013-04-13 12:09, Eli Zaretskii skrev: > > > > > > > > Jan, does the fullscreen functionality on X also maximizes the frame > > > to one of the monitors, when several monitors are available? I don't > > > want to introduce differences in behavior here. > > > > > > > If there is a window manager running, we just tell the window manager t= o > make > > Emacs fullscreen, so it is really up to the WM. The window managers I > worked > > with do maximize on one monitor only. > > > > When no WM is running we maximize to the whole display, i.e. all > monitors. > > But that is more or less just for debugging when you want to see Emacs > <-> > > Xserver interractions without a WM getting in the way. It is nothing a > user > > ever encounters. > > OK, thanks. So I guess that part of Erik's patch is fine. > --089e0122ac460e91cb04da47fb53 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable
I've rewritten the patch to preserve the maximized, fu= llwidth and fullheight functionality and fix them
on Windows 8; came ou= t cleaner in the end too.

The FULLSCREEN_WAIT flag= now gets cleared prior to using want_fullscreen (was a bug in the
existing implementation too I believe).

I've contacted the FSF clerk. Hopefully that can get cleared up soon.<= /div>

2013-04-11 =C2=A0Erik Charlebois =C2=A0<erikcharlebois= @gmail.com>

* src/w32fns.c (w32_fullscreen_rect): New function to compute the
window rectangle for the given= fullscreen mode.
(w32_wnd_proc): When in a fullscreen mode, WM_WINDOWPOSCHANGING
no longer tunes th= e window size. =C2=A0This keeps the window's edges
flush with the screen and allo= ws the taskbar to hide itself in
fullboth.
* src/w32term.c (w= 32fullscreen_hook): fullboth now shows without
window decorations and uses th= e entire screen.
<= br>
On Sat, Apr 13, 2013 at 7:56 AM, Eli Zare= tskii <eliz@gnu.org> wrote:
> Date: Sat, 13 Apr 2013 13:33:56 +0200 > From: Jan Dj=C3=A4rv <jan.h.d= @swipnet.se>
> CC: Erik Charlebois <er= ikcharlebois@gmail.com>, 14= 180@debbugs.gnu.org
>
> 2013-04-13 12:09, Eli Zaretskii skrev:
>
> >
> > Jan, does the fullscreen functionality on X also maximizes the fr= ame
> > to one of the monitors, when several monitors are available? =C2= =A0I don't
> > want to introduce differences in behavior here.
> >
>
> If there is a window manager running, we just tell the window manager = to make
> Emacs fullscreen, so it is really up to the WM. =C2=A0The window manag= ers I worked
> with do maximize on one monitor only.
>
> When no WM is running we maximize to the whole display, i.e. all monit= ors.
> But that is more or less just for debugging when you want to see Emacs= <->
> Xserver interractions without a WM getting in the way. =C2=A0It is not= hing a user
> ever encounters.

OK, thanks. =C2=A0So I guess that part of Erik's patch is f= ine.

--089e0122ac460e91cb04da47fb53-- --089e0122ac460e91d004da47fb55 Content-Type: text/plain; charset=US-ASCII; name="W32_FULLSCREEN_2.txt" Content-Disposition: attachment; filename="W32_FULLSCREEN_2.txt" Content-Transfer-Encoding: base64 X-Attachment-Id: f_hfhirru00 IyBCYXphYXIgbWVyZ2UgZGlyZWN0aXZlIGZvcm1hdCAyIChCYXphYXIgMC45MCkKIyByZXZpc2lv bl9pZDogZXJpa2NoYXJsZWJvaXNAZ21haWwuY29tLTIwMTMwNDE0MDA1ODQ1LVwKIyAgIHdhdHBz azh3MTcwMWoyMngKIyB0YXJnZXRfYnJhbmNoOiBmaWxlOi8vL0M6L1VzZXJzL0VyaWsvU291cmNl L2VtYWNzL3RydW5rLwojIHRlc3RhbWVudF9zaGExOiA5ZDFiYzMxODIxYjMxNWFiMDI4NjAzMWUy MGVkN2M5ZDQ1N2E2ZTk4CiMgdGltZXN0YW1wOiAyMDEzLTA0LTEzIDIwOjU5OjA1IC0wNDAwCiMg YmFzZV9yZXZpc2lvbl9pZDogcmdtQGdudS5vcmctMjAxMzA0MTAwMTIyMTUtMGFsZzlzcG13cG1p Ymk0NQojIAojIEJlZ2luIHBhdGNoCj09PSBtb2RpZmllZCBmaWxlICdzcmMvdzMyZm5zLmMnCi0t LSBzcmMvdzMyZm5zLmMJMjAxMy0wNC0wNyAwNDo0MToxOSArMDAwMAorKysgc3JjL3czMmZucy5j CTIwMTMtMDQtMTQgMDA6NTg6NDUgKzAwMDAKQEAgLTE1Nyw2ICsxNTcsOCBAQAogdHlwZWRlZiBI TU9OSVRPUiAoV0lOQVBJICogTW9uaXRvckZyb21Qb2ludF9Qcm9jKSAoSU4gUE9JTlQgcHQsIElO IERXT1JEIGZsYWdzKTsKIHR5cGVkZWYgQk9PTCAoV0lOQVBJICogR2V0TW9uaXRvckluZm9fUHJv YykKICAgKElOIEhNT05JVE9SIG1vbml0b3IsIE9VVCBzdHJ1Y3QgTU9OSVRPUl9JTkZPKiBpbmZv KTsKK3R5cGVkZWYgSE1PTklUT1IgKFdJTkFQSSAqIE1vbml0b3JGcm9tV2luZG93X1Byb2MpCisg IChJTiBIV05EIGh3bmQsIElOIERXT1JEIGR3RmxhZ3MpOwogCiBUcmFja01vdXNlRXZlbnRfUHJv YyB0cmFja19tb3VzZV9ldmVudF9mbiA9IE5VTEw7CiBJbW1HZXRDb21wb3NpdGlvblN0cmluZ19Q cm9jIGdldF9jb21wb3NpdGlvbl9zdHJpbmdfZm4gPSBOVUxMOwpAQCAtMTY1LDYgKzE2Nyw3IEBA CiBJbW1TZXRDb21wb3NpdGlvbldpbmRvd19Qcm9jIHNldF9pbWVfY29tcG9zaXRpb25fd2luZG93 X2ZuID0gTlVMTDsKIE1vbml0b3JGcm9tUG9pbnRfUHJvYyBtb25pdG9yX2Zyb21fcG9pbnRfZm4g PSBOVUxMOwogR2V0TW9uaXRvckluZm9fUHJvYyBnZXRfbW9uaXRvcl9pbmZvX2ZuID0gTlVMTDsK K01vbml0b3JGcm9tV2luZG93X1Byb2MgbW9uaXRvcl9mcm9tX3dpbmRvd19mbiA9IE5VTEw7CiAK ICNpZmRlZiBOVEdVSV9VTklDT0RFCiAjZGVmaW5lIHVuaWNvZGVfYXBwZW5kX21lbnUgQXBwZW5k TWVudVcKQEAgLTMzNiw2ICszMzksNjYgQEAKICAgKnlwdHIgPSByZWN0LnRvcDsKIH0KIAorLyog UmV0dXJucyB0aGUgd2luZG93IHJlY3RhbmdsZSBhcHByb3ByaWF0ZSBmb3IgdGhlIGdpdmVuIGZ1 bGxzY3JlZW4gbW9kZS4KKyAgIFRoZSBub3JtYWwgcmVjdCBwYXJhbWV0ZXIgd2FzIHRoZSB3aW5k b3cncyByZWN0YW5nbGUgcHJpb3IgdG8gZW50ZXJpbmcKKyAgIGZ1bGxzY3JlZW4gbW9kZS4gIElm IG11bHRpcGxlIG1vbml0b3Igc3VwcG9ydCBpcyBhdmFpbGFibGUsIHRoZSBuZWFyZXN0CisgICBt b25pdG9yIHRvIHRoZSB3aW5kb3cgaXMgY2hvc2VuLiAgKi8KKwordm9pZAordzMyX2Z1bGxzY3Jl ZW5fcmVjdCAoSFdORCBod25kLCBpbnQgZnNtb2RlLCBSRUNUIG5vcm1hbCwgUkVDVCAqcmVjdCkK K3sKKyAgc3RydWN0IE1PTklUT1JfSU5GTyBtaSA9IHsgc2l6ZW9mKG1pKSB9OworICBpZiAobW9u aXRvcl9mcm9tX3dpbmRvd19mbiAmJiBnZXRfbW9uaXRvcl9pbmZvX2ZuKQorICAgIHsKKyAgICAg IEhNT05JVE9SIG1vbml0b3IgPQorICAgICAgICBtb25pdG9yX2Zyb21fd2luZG93X2ZuIChod25k LCBNT05JVE9SX0RFRkFVTFRfVE9fTkVBUkVTVCk7CisgICAgICBnZXRfbW9uaXRvcl9pbmZvX2Zu IChtb25pdG9yLCAmbWkpOworICAgIH0KKyAgZWxzZQorICAgIHsKKyAgICAgIG1pLnJjTW9uaXRv ci5sZWZ0ID0gMDsKKyAgICAgIG1pLnJjTW9uaXRvci50b3AgPSAwOworICAgICAgbWkucmNNb25p dG9yLnJpZ2h0ID0gR2V0U3lzdGVtTWV0cmljcyAoU01fQ1hTQ1JFRU4pOworICAgICAgbWkucmNN b25pdG9yLmJvdHRvbSA9IEdldFN5c3RlbU1ldHJpY3MgKFNNX0NZU0NSRUVOKTsKKyAgICAgIG1p LnJjV29yay5sZWZ0ID0gMDsKKyAgICAgIG1pLnJjV29yay50b3AgPSAwOworICAgICAgbWkucmNX b3JrLnJpZ2h0ID0gR2V0U3lzdGVtTWV0cmljcyAoU01fQ1hNQVhJTUlaRUQpOworICAgICAgbWku cmNXb3JrLmJvdHRvbSA9IEdldFN5c3RlbU1ldHJpY3MgKFNNX0NZTUFYSU1JWkVEKTsKKyAgICB9 CisKKyAgc3dpdGNoIChmc21vZGUpCisgICAgeworICAgIGNhc2UgRlVMTFNDUkVFTl9CT1RIOgor ICAgICAgcmVjdC0+bGVmdCA9IG1pLnJjTW9uaXRvci5sZWZ0OworICAgICAgcmVjdC0+dG9wID0g bWkucmNNb25pdG9yLnRvcDsKKyAgICAgIHJlY3QtPnJpZ2h0ID0gbWkucmNNb25pdG9yLnJpZ2h0 OworICAgICAgcmVjdC0+Ym90dG9tID0gbWkucmNNb25pdG9yLmJvdHRvbTsKKyAgICAgIGJyZWFr OworICAgIGNhc2UgRlVMTFNDUkVFTl9NQVhJTUlaRUQ6CisgICAgICByZWN0LT5sZWZ0ID0gbWku cmNXb3JrLmxlZnQ7CisgICAgICByZWN0LT50b3AgPSBtaS5yY1dvcmsudG9wOworICAgICAgcmVj dC0+cmlnaHQgPSBtaS5yY1dvcmsucmlnaHQ7CisgICAgICByZWN0LT5ib3R0b20gPSBtaS5yY1dv cmsuYm90dG9tOworICAgICAgYnJlYWs7CisgICAgY2FzZSBGVUxMU0NSRUVOX1dJRFRIOgorICAg ICAgcmVjdC0+bGVmdCA9IG1pLnJjV29yay5sZWZ0OworICAgICAgcmVjdC0+dG9wID0gbm9ybWFs LnRvcDsKKyAgICAgIHJlY3QtPnJpZ2h0ID0gbWkucmNXb3JrLnJpZ2h0OworICAgICAgcmVjdC0+ Ym90dG9tID0gbm9ybWFsLmJvdHRvbTsKKyAgICAgIGJyZWFrOworICAgIGNhc2UgRlVMTFNDUkVF Tl9IRUlHSFQ6CisgICAgICByZWN0LT5sZWZ0ID0gbm9ybWFsLmxlZnQ7CisgICAgICByZWN0LT50 b3AgPSBtaS5yY1dvcmsudG9wOworICAgICAgcmVjdC0+cmlnaHQgPSBub3JtYWwucmlnaHQ7Cisg ICAgICByZWN0LT5ib3R0b20gPSBtaS5yY1dvcmsuYm90dG9tOworICAgICAgYnJlYWs7CisgICAg Y2FzZSBGVUxMU0NSRUVOX05PTkU6CisgICAgZGVmYXVsdDoKKyAgICAgICpyZWN0ID0gbm9ybWFs OworICAgICAgYnJlYWs7CisgICAgfQorfQorCiAMCiAKIERFRlVOICgidzMyLWRlZmluZS1yZ2It Y29sb3IiLCBGdzMyX2RlZmluZV9yZ2JfY29sb3IsCkBAIC0zNjkxLDYgKzM3NTQsMTMgQEAKICAg ICAgIC8qIERvbid0IHJlc3RyaWN0IHRoZSBzaXppbmcgb2YgdGlwIGZyYW1lcy4gICovCiAgICAg ICBpZiAoaHduZCA9PSB0aXBfd2luZG93KQogCXJldHVybiAwOworCisgICAgICAvKiBEb24ndCBy ZXN0cmljdCB0aGUgc2l6aW5nIG9mIGZ1bGxzY3JlZW5lZCBmcmFtZXMsIGFsbG93aW5nIHRoZW0g dG8gYmUKKyAgICAgICAgIGZsdXNoIHdpdGggdGhlIHNpZGVzIG9mIHRoZSBzY3JlZW4uICAqLwor ICAgICAgZiA9IHhfd2luZG93X3RvX2ZyYW1lIChkcHlpbmZvLCBod25kKTsKKyAgICAgIGlmIChm ICYmIEZSQU1FX1BSRVZfRlNNT0RFIChmKSAhPSBGVUxMU0NSRUVOX05PTkUpCisgICAgICAgIHJl dHVybiAwOworCiAgICAgICB7CiAJV0lORE9XUExBQ0VNRU5UIHdwOwogCUxQV0lORE9XUE9TIGxw cG9zID0gKFdJTkRPV1BPUyAqKSBsUGFyYW07CkBAIC03NjM1LDYgKzc3MDUsOCBAQAogICAgIEdl dFByb2NBZGRyZXNzICh1c2VyMzJfbGliLCAiTW9uaXRvckZyb21Qb2ludCIpOwogICBnZXRfbW9u aXRvcl9pbmZvX2ZuID0gKEdldE1vbml0b3JJbmZvX1Byb2MpCiAgICAgR2V0UHJvY0FkZHJlc3Mg KHVzZXIzMl9saWIsICJHZXRNb25pdG9ySW5mb0EiKTsKKyAgbW9uaXRvcl9mcm9tX3dpbmRvd19m biA9IChNb25pdG9yRnJvbVdpbmRvd19Qcm9jKQorICAgIEdldFByb2NBZGRyZXNzICh1c2VyMzJf bGliLCAiTW9uaXRvckZyb21XaW5kb3ciKTsKIAogICB7CiAgICAgSE1PRFVMRSBpbW0zMl9saWIg PSBHZXRNb2R1bGVIYW5kbGUgKCJpbW0zMi5kbGwiKTsKCj09PSBtb2RpZmllZCBmaWxlICdzcmMv dzMydGVybS5jJwotLS0gc3JjL3czMnRlcm0uYwkyMDEzLTA0LTAxIDA3OjU4OjA0ICswMDAwCisr KyBzcmMvdzMydGVybS5jCTIwMTMtMDQtMTQgMDA6NTg6NDUgKzAwMDAKQEAgLTU2NjMsODggKzU2 NjMsNDAgQEAKIHsKICAgaWYgKEZSQU1FX1ZJU0lCTEVfUCAoZikpCiAgICAgewotICAgICAgaW50 IHdpZHRoLCBoZWlnaHQsIHRvcF9wb3MsIGxlZnRfcG9zLCBwaXhlbF9oZWlnaHQsIHBpeGVsX3dp ZHRoOwotICAgICAgaW50IGN1cl93ID0gRlJBTUVfQ09MUyAoZiksIGN1cl9oID0gRlJBTUVfTElO RVMgKGYpOwotICAgICAgUkVDVCB3b3JrYXJlYV9yZWN0OwotCi0gICAgICBibG9ja19pbnB1dCAo KTsKLSAgICAgIC8qIFJlY29yZCBjdXJyZW50ICJub3JtYWwiIGRpbWVuc2lvbnMgZm9yIHJlc3Rv cmluZyBsYXRlci4gICovCi0gICAgICBpZiAoISggICBGUkFNRV9QUkVWX0ZTTU9ERSAoZikgPT0g RlVMTFNDUkVFTl9CT1RICi0JICAgIHx8IEZSQU1FX1BSRVZfRlNNT0RFIChmKSA9PSBGVUxMU0NS RUVOX01BWElNSVpFRCkpCi0JewotCSAgaWYgKEZSQU1FX1BSRVZfRlNNT0RFIChmKSAhPSBGVUxM U0NSRUVOX0hFSUdIVCkKLQkgICAgewotCSAgICAgIEZSQU1FX05PUk1BTF9IRUlHSFQgKGYpID0g Y3VyX2g7Ci0JICAgICAgRlJBTUVfTk9STUFMX1RPUCAoZikgPSBmLT50b3BfcG9zOwotCSAgICB9 Ci0JICBpZiAoRlJBTUVfUFJFVl9GU01PREUgKGYpICE9IEZVTExTQ1JFRU5fV0lEVEgpCi0JICAg IHsKLQkgICAgICBGUkFNRV9OT1JNQUxfV0lEVEggKGYpICA9IGN1cl93OwotCSAgICAgIEZSQU1F X05PUk1BTF9MRUZUIChmKSA9IGYtPmxlZnRfcG9zOwotCSAgICB9Ci0JfQotICAgICAgZWFzc2Vy dCAoRlJBTUVfTk9STUFMX0hFSUdIVCAoZikgPiAwKTsKLSAgICAgIGVhc3NlcnQgKEZSQU1FX05P Uk1BTF9XSURUSCAoZikgPiAwKTsKLSAgICAgIHhfcmVhbF9wb3NpdGlvbnMgKGYsICZmLT5sZWZ0 X3BvcywgJmYtPnRvcF9wb3MpOwotICAgICAgeF9mdWxsc2NyZWVuX2FkanVzdCAoZiwgJndpZHRo LCAmaGVpZ2h0LCAmdG9wX3BvcywgJmxlZnRfcG9zKTsKLQotICAgICAgU3lzdGVtUGFyYW1ldGVy c0luZm8gKFNQSV9HRVRXT1JLQVJFQSwgMCwgJndvcmthcmVhX3JlY3QsIDApOwotICAgICAgcGl4 ZWxfaGVpZ2h0ID0gd29ya2FyZWFfcmVjdC5ib3R0b20gLSB3b3JrYXJlYV9yZWN0LnRvcDsKLSAg ICAgIHBpeGVsX3dpZHRoICA9IHdvcmthcmVhX3JlY3QucmlnaHQgIC0gd29ya2FyZWFfcmVjdC5s ZWZ0OwotICAgICAgLyogTmVlZCB0byBzZW5kIFNDX1JFU1RPUkUgdG8gdGhlIHdpbmRvdywgaW4g Y2FzZSB3ZSBhcmUKLQkgcmVzaXppbmcgZnJvbSBGVUxMU0NSRUVOX01BWElNSVpFRC4gIE90aGVy d2lzZSwgdGhlIG1vdXNlCi0JIHJlc2l6ZSBoaW50cyB3aWxsIG5vdCBiZSBzaG93biBieSB0aGUg d2luZG93IG1hbmFnZXIgd2hlbiB0aGUKLQkgbW91c2UgcG9pbnRlciBob3ZlcnMgb3ZlciB0aGUg d2luZG93IGVkZ2VzLCBiZWNhdXNlIHRoZSBXTQotCSB3aWxsIHN0aWxsIHRoaW5rIHRoZSB3aW5k b3cgaXMgbWF4aW1pemVkLiAgKi8KLSAgICAgIGlmIChmLT53YW50X2Z1bGxzY3JlZW4gIT0gRlVM TFNDUkVFTl9CT1RIKQotCVNlbmRNZXNzYWdlIChGUkFNRV9XMzJfV0lORE9XIChmKSwgV01fU1lT Q09NTUFORCwgU0NfUkVTVE9SRSwgMCk7Ci0KKyAgICAgIEhXTkQgaHduZCA9IEZSQU1FX1czMl9X SU5ET1coZik7CisgICAgICBEV09SRCBkd1N0eWxlID0gR2V0V2luZG93TG9uZyAoaHduZCwgR1dM X1NUWUxFKTsKKyAgICAgIFJFQ1QgcmVjdDsKKworICAgICAgYmxvY2tfaW5wdXQoKTsKKyAgICAg IGYtPndhbnRfZnVsbHNjcmVlbiAmPSB+RlVMTFNDUkVFTl9XQUlUOworCisgICAgICBpZiAoRlJB TUVfUFJFVl9GU01PREUgKGYpID09IEZVTExTQ1JFRU5fTk9ORSkKKyAgICAgICAgR2V0V2luZG93 UGxhY2VtZW50IChod25kLCAmRlJBTUVfTk9STUFMX1BMQUNFTUVOVCAoZikpOworCisgICAgICBp ZiAoRlJBTUVfUFJFVl9GU01PREUgKGYpID09IEZVTExTQ1JFRU5fQk9USCkKKyAgICAgICAgewor ICAgICAgICAgIFNldFdpbmRvd0xvbmcgKGh3bmQsIEdXTF9TVFlMRSwgZHdTdHlsZSB8IFdTX09W RVJMQVBQRURXSU5ET1cpOworICAgICAgICAgIFNldFdpbmRvd1BvcyAoaHduZCwgTlVMTCwgMCwg MCwgMCwgMCwKKyAgICAgICAgICAgICAgICAgICAgICAgIFNXUF9OT01PVkUgfCBTV1BfTk9TSVpF IHwgU1dQX05PWk9SREVSIHwKKyAgICAgICAgICAgICAgICAgICAgICAgIFNXUF9OT09XTkVSWk9S REVSIHwgU1dQX0ZSQU1FQ0hBTkdFRCk7CisgICAgICAgIH0KKworICAgICAgdzMyX2Z1bGxzY3Jl ZW5fcmVjdCAoaHduZCwgZi0+d2FudF9mdWxsc2NyZWVuLAorICAgICAgICAgICAgICAgICAgICAg ICAgICAgRlJBTUVfTk9STUFMX1BMQUNFTUVOVCAoZikucmNOb3JtYWxQb3NpdGlvbiwgJnJlY3Qp OwogICAgICAgRlJBTUVfUFJFVl9GU01PREUgKGYpID0gZi0+d2FudF9mdWxsc2NyZWVuOwotICAg ICAgc3dpdGNoIChmLT53YW50X2Z1bGxzY3JlZW4pCi0JewotCWNhc2UgRlVMTFNDUkVFTl9CT1RI OgotCSAgUG9zdE1lc3NhZ2UgKEZSQU1FX1czMl9XSU5ET1cgKGYpLCBXTV9TWVNDT01NQU5ELCBT Q19NQVhJTUlaRSwgMCk7Ci0JICBicmVhazsKLQljYXNlIEZVTExTQ1JFRU5fTUFYSU1JWkVEOgot CSAgaGVpZ2h0ID0KLQkgICAgRlJBTUVfUElYRUxfSEVJR0hUX1RPX1RFWFRfTElORVMgKGYsIHBp eGVsX2hlaWdodCkKLQkgICAgLSBYSU5UIChGdG9vbF9iYXJfbGluZXNfbmVlZGVkIChzZWxlY3Rl ZF9mcmFtZSkpCi0JICAgICsgKE5JTFAgKFZtZW51X2Jhcl9tb2RlKSA/IDEgOiAwKTsKLQkgIHdp ZHRoICA9Ci0JICAgIEZSQU1FX1BJWEVMX1dJRFRIX1RPX1RFWFRfQ09MUyAoZiwgcGl4ZWxfd2lk dGgpCi0JICAgIC0gRlJBTUVfU0NST0xMX0JBUl9DT0xTIChmKTsKLQkgIGxlZnRfcG9zID0gd29y a2FyZWFfcmVjdC5sZWZ0OwotCSAgdG9wX3BvcyA9IHdvcmthcmVhX3JlY3QudG9wOwotCSAgYnJl YWs7Ci0JY2FzZSBGVUxMU0NSRUVOX1dJRFRIOgotCSAgd2lkdGggID0KLQkgICAgRlJBTUVfUElY RUxfV0lEVEhfVE9fVEVYVF9DT0xTIChmLCBwaXhlbF93aWR0aCkKLQkgICAgLSBGUkFNRV9TQ1JP TExfQkFSX0NPTFMgKGYpOwotCSAgaGVpZ2h0ID0gRlJBTUVfTk9STUFMX0hFSUdIVCAoZik7Ci0J ICBsZWZ0X3BvcyA9IHdvcmthcmVhX3JlY3QubGVmdDsKLQkgIGJyZWFrOwotCWNhc2UgRlVMTFND UkVFTl9IRUlHSFQ6Ci0JICBoZWlnaHQgPQotCSAgICBGUkFNRV9QSVhFTF9IRUlHSFRfVE9fVEVY VF9MSU5FUyAoZiwgcGl4ZWxfaGVpZ2h0KQotCSAgICAtIFhJTlQgKEZ0b29sX2Jhcl9saW5lc19u ZWVkZWQgKHNlbGVjdGVkX2ZyYW1lKSkKLQkgICAgKyAoTklMUCAoVm1lbnVfYmFyX21vZGUpID8g MSA6IDApOwotCSAgd2lkdGggPSBGUkFNRV9OT1JNQUxfV0lEVEggKGYpOwotCSAgdG9wX3BvcyA9 IHdvcmthcmVhX3JlY3QudG9wOwotCSAgYnJlYWs7Ci0JY2FzZSBGVUxMU0NSRUVOX05PTkU6Ci0J ICBoZWlnaHQgPSBGUkFNRV9OT1JNQUxfSEVJR0hUIChmKTsKLQkgIHdpZHRoID0gRlJBTUVfTk9S TUFMX1dJRFRIIChmKTsKLQkgIGxlZnRfcG9zID0gRlJBTUVfTk9STUFMX0xFRlQgKGYpOwotCSAg dG9wX3BvcyA9IEZSQU1FX05PUk1BTF9UT1AgKGYpOwotCSAgYnJlYWs7Ci0JfQorICAgICAgaWYg KGYtPndhbnRfZnVsbHNjcmVlbiA9PSBGVUxMU0NSRUVOX0JPVEgpCisgICAgICAgIHsKKyAgICAg ICAgICBTZXRXaW5kb3dMb25nIChod25kLCBHV0xfU1RZTEUsIGR3U3R5bGUgJiB+V1NfT1ZFUkxB UFBFRFdJTkRPVyk7CisgICAgICAgICAgU2V0V2luZG93UG9zIChod25kLCBIV05EX1RPUCwgcmVj dC5sZWZ0LCByZWN0LnRvcCwKKyAgICAgICAgICAgICAgICAgICAgICAgIHJlY3QucmlnaHQgLSBy ZWN0LmxlZnQsIHJlY3QuYm90dG9tIC0gcmVjdC50b3AsCisgICAgICAgICAgICAgICAgICAgICAg ICBTV1BfTk9PV05FUlpPUkRFUiB8IFNXUF9GUkFNRUNIQU5HRUQpOworICAgICAgICB9CisgICAg ICBlbHNlCisgICAgICAgIHsKKyAgICAgICAgICBTZXRXaW5kb3dQb3MgKGh3bmQsIEhXTkRfVE9Q LCByZWN0LmxlZnQsIHJlY3QudG9wLAorICAgICAgICAgICAgICAgICAgICAgICAgcmVjdC5yaWdo dCAtIHJlY3QubGVmdCwgcmVjdC5ib3R0b20gLSByZWN0LnRvcCwgMCk7CisgICAgICAgIH0KIAot ICAgICAgaWYgKGN1cl93ICE9IHdpZHRoIHx8IGN1cl9oICE9IGhlaWdodCkKLQl7Ci0JICB4X3Nl dF9vZmZzZXQgKGYsIGxlZnRfcG9zLCB0b3BfcG9zLCAxKTsKLQkgIHhfc2V0X3dpbmRvd19zaXpl IChmLCAxLCB3aWR0aCwgaGVpZ2h0KTsKLQkgIGRvX3BlbmRpbmdfd2luZG93X2NoYW5nZSAoMCk7 Ci0JfQogICAgICAgZi0+d2FudF9mdWxsc2NyZWVuID0gRlVMTFNDUkVFTl9OT05FOwogICAgICAg dW5ibG9ja19pbnB1dCAoKTsKICAgICB9Cgo9PT0gbW9kaWZpZWQgZmlsZSAnc3JjL3czMnRlcm0u aCcKLS0tIHNyYy93MzJ0ZXJtLmgJMjAxMy0wNC0wNyAwNDo0MToxOSArMDAwMAorKysgc3JjL3cz MnRlcm0uaAkyMDEzLTA0LTE0IDAwOjU4OjQ1ICswMDAwCkBAIC03MSw2ICs3MSw4IEBACiB9Owog CiBleHRlcm4gdm9pZCB3MzJfcmVnZW5lcmF0ZV9wYWxldHRlIChzdHJ1Y3QgZnJhbWUgKmYpOwor ZXh0ZXJuIHZvaWQgdzMyX2Z1bGxzY3JlZW5fcmVjdCAoSFdORCBod25kLCBpbnQgZnNtb2RlLCBS RUNUIG5vcm1hbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFJFQ1QgKnJlY3Qp OwogCiAMCiAvKiBGb3IgZWFjaCBkaXNwbGF5IChjdXJyZW50bHkgb25seSBvbmUgb24gdzMyKSwg d2UgaGF2ZSBhIHN0cnVjdHVyZSB0aGF0CkBAIC0zNjIsNyArMzY0LDcgQEAKICAgLyogRnJhbWUg Z2VvbWV0cnkgYW5kIGZ1bGwtc2NyZWVuIG1vZGUgYmVmb3JlIGl0IHdhcyByZXNpemVkIGJ5CiAg ICAgIHNwZWNpZnlpbmcgdGhlICdmdWxsc2NyZWVuJyBmcmFtZSBwYXJhbWV0ZXIuICBVc2VkIHRv IHJlc3RvcmUgdGhlCiAgICAgIGdlb21ldHJ5IHdoZW4gJ2Z1bGxzY3JlZW4nIGlzIHJlc2V0IHRv IG5pbC4gICovCi0gIGludCBub3JtYWxfd2lkdGgsIG5vcm1hbF9oZWlnaHQsIG5vcm1hbF90b3As IG5vcm1hbF9sZWZ0OworICBXSU5ET1dQTEFDRU1FTlQgbm9ybWFsX3BsYWNlbWVudDsKICAgaW50 IHByZXZfZnNtb2RlOwogfTsKIApAQCAtMzk2LDExICszOTgsOCBAQAogI2RlZmluZSBGUkFNRV9T TUFMTEVTVF9GT05UX0hFSUdIVChGKSBcCiAgICAgIEZSQU1FX1czMl9ESVNQTEFZX0lORk8oRikt PnNtYWxsZXN0X2ZvbnRfaGVpZ2h0CiAKLSNkZWZpbmUgRlJBTUVfTk9STUFMX1dJRFRIKEYpICAo KEYpLT5vdXRwdXRfZGF0YS53MzItPm5vcm1hbF93aWR0aCkKLSNkZWZpbmUgRlJBTUVfTk9STUFM X0hFSUdIVChGKSAoKEYpLT5vdXRwdXRfZGF0YS53MzItPm5vcm1hbF9oZWlnaHQpCi0jZGVmaW5l IEZSQU1FX05PUk1BTF9UT1AoRikgICAgKChGKS0+b3V0cHV0X2RhdGEudzMyLT5ub3JtYWxfdG9w KQotI2RlZmluZSBGUkFNRV9OT1JNQUxfTEVGVChGKSAgICgoRiktPm91dHB1dF9kYXRhLnczMi0+ bm9ybWFsX2xlZnQpCi0jZGVmaW5lIEZSQU1FX1BSRVZfRlNNT0RFKEYpICAgKChGKS0+b3V0cHV0 X2RhdGEudzMyLT5wcmV2X2ZzbW9kZSkKKyNkZWZpbmUgRlJBTUVfTk9STUFMX1BMQUNFTUVOVChG KSAoKEYpLT5vdXRwdXRfZGF0YS53MzItPm5vcm1hbF9wbGFjZW1lbnQpCisjZGVmaW5lIEZSQU1F X1BSRVZfRlNNT0RFKEYpICAgICAgKChGKS0+b3V0cHV0X2RhdGEudzMyLT5wcmV2X2ZzbW9kZSkK IAogDAogLyogVzMyLXNwZWNpZmljIHNjcm9sbCBiYXIgc3R1ZmYuICAqLwoKIyBCZWdpbiBidW5k bGUKSXlCQ1lYcGhZWElnY21WMmFYTnBiMjRnWW5WdVpHeGxJSFkwQ2lNS1FscG9PVEZCV1NaVFdV MUdGQ1FBQlhYL2dGY1FCSUo1OS8vLwpmK2ZmOEwvLy8vOWdDeTdyNlBkM2oyQUI1VEhkNkFLb1BY ZXMwRjFuSWE2R29TU1JpcWZpbnBROXBOVDlKUGFDYW0wOVViU2JLYU1nCnhCb0JvQnBvUFVDVUlv OUdtSmlVUUFBR2dhQUdRQUFBQURRRXBKTXdVeE5UMGpRTk5BMDBhYUFBQm9ESU1nTkdnQWtTSm9G UitxYWUKbnFKK2xHTkFnMGJLQTBCR0VHbUFBQ1lPTW1DYUdReU1qSm9hQU5Ca1lRRFFhTk1oaUdn QWtrQ2FBbUVOQkRUUkhwVE5URlBOS2JRYgpVTW84bzBQVTlKb1BVZVVtRUlOZTNqWk9NVWh1U2xE aHp0bDBHUG4raXpMUGx5WkovN09HZVE5c2lsaEZWOFNhTUxJSkQ0WFJpS3dZCkU3ZUpxNmFkQ0cr RDh0Rmp3d3RtcE5sZkpBdHhNMkdwQlBhdE5xUlBFUlNnSHVZeFdIQXlKaTZEWG8zS2IweFgzYTda ZXZITFcyTkEKaEpLaUZKcElETXBPQ0cycFpVOW1ROVFlVWxHL1VINTB5KzFlMGQ4S2VoVExXZnFm S0h3UHh1S2laK3g1MUpicWJZRGFiTmRGNW1EMwpodTdsMW10b3B0eE1iNG5NVmNxVGRJS09wN3hv dWlSVzdHclJrM0tkbVAxdyttRGU4ekUycW9rVlFRRUVRUTgrRlc0ZlB6K0s3d1BKCk5NWm5VSXVw SmJiNVZrVTQ0VXVNS0tUUG02emFTWHFxdjg4OEZWOGRXdDZvVzNvNWt2dk1qZW1tUlBPaXBDRXNk Ukc5MUo5Nm1DTkQKVlhHVjVOSklTd05RVlpzeVpzelViOHpuV0tGS0ZQeUtaekNhZ3pkenVjd3Na OGhOT0JYZGUxY2RUQmYxYXFRemN6cTBURWJ4ZlcrUAp5eTl1NzRNOXVodCtuRVBVdkV0SFZneFhF UHBja3RSMXlSSjUybmVURHM1ZWNlSVB1d0tsZ29hdXBxSmpvSmFPRnVpZG1OVE9Ha2Z3CldZNVRQ b202MnhkcXphb3Mxalh6a3Z0cHJrTURFZUZZT0RKVGJLK0MrVHdJNGxYaVQ0Mlp6M0RLWUJ4TDhM b2FFdUlrdFMxQ0lGYUIKNE44Y0FieTF1bjlxRDFlYTRROHZJMEp4c2pNNWI5ck9OdUF5WWdrZXB5 akdRT2RGc1ZxQXlZRkloSWs0OG85MEFjNkRWVkhwT25qdQpXT3ZKYnJtWXkyK2lZajdtUzNNSm85 enhNbmlKSUdJdHZsdVVwQUVoRXZyNVd2NkNYbDdnQ1k5QlVJK29vS3pBbEZCQkZzVm9RNDlTCnJO aGlRc0taN3hxVVpOWm9jU1pxU1N5dVdVcFZIaDRYNEs1Qkt0QlVVYzlNYW1VcUhYYWRXV3VjZ0Q0 VW9Hd1pYQ05hTDZQSG9qbW8KQlczY0laK2t4UFc3cXlLVUY1c2JJWXZUUk15ZXpVSWpjRzVuN0Iy cEFyWG9JR0N5bXZrSWhuaENibXJLNGJNb3ZGWWxsd3llQ3d2RQpWajZIYSthOTg0b0J0ZzVCNW5C Y3lGZVFhNWtWcy9Gdyt0M1JHRER6QmFKeUx1Y1l1TmZ6SlkwN2NpRTNSdEVTdGl3dzlESjR3aTF5 CkM2MnpIblZWTktRNnNZdEVNdFNmVW1VckhrWGxRWEc4WWdYY3hwY09DaHo0MlZ2aEZNSXJtU3Vv Tk0zbFVNTUNJcE54Y05aTm9pakcKVnl3aG1VMUdLYnlCdG9EN1JlUWZFbzFLTHY5VlhRVmxjeUY2 SW1oTmd1V01idXJsUkx0cmtvaE10ZEdCZkdaQWhtTktzaTRsUy9UTgowQnhFaGZjaWtzS2RGYUNV WHltMHNaRm1JVmM0UXJsQ1ZGNGVJNTlWTXk1bWNrUVdwTnRHa1lJZzFub0dPUm5lbVVPT2FvRWRn ZUZ6CmtiRUpFVzBNQ0JrOHZOSzYvVjczYmZKcVYreGZqQkRNY21SZ1JsRks0Q3FFT3JNb3FDd1Zk am55N3IzMjVRdWVER3pzaHNRRll4bFEKZFVHRWtlWGExQTB2Q3ZYQ0JlTEd6ZlVHbGFBazIyNkxW MzF3aG1hUVc4aVJJdFpmRFYwcm1FYmE1SG01elFYZnJxWm1ZWm1iV29kSQpNZFNFeUhocXRMQWdq K0lSZ29JOThTWDR3SGVSZkw1dWdZcGk3QXJSSS9RVmRLQUkzRytnbEdnb1FoU01vakVJZ09QdUJr VTVYd1RpCnhSQUdBK2pmdzlvVFdiUVh4Wkg2OXdaS3FHN1l6clJqUGpqODFDTUJUbnd1RGhtcDlC WUcwK2krZ0tBaHFWWXMxSlMwWFNMd1lEV3IKZzZDNDR2Q3prSGdBN2ZEbk9vc0dtRElZcVZyaDVh b0JCSWlFaGhEVmN0WVpnd01id3JQQ25wNXRkN0ZLczVLMFlqUThvTHBGVE00YwpEa3RvZlk5ZHRC Z3RBaHlNUGt4MDhRVmxvVEtFd3hKdWJuNlJENncyaFJjcG55VEdKOGtaTEVOUmdETTNEcDU5QzIy andhS3d0Sm1BCmpWU3NBWlRXTFZrM2RhZGFLUkVZc1M3SW5WZ2t5NlFWcXhPZE1aQlYxbVM0QTdt TzBJUGFNSEpqVW1Mek5QRFluTEl0aFFkOW1KTS8KUmhqeGg1b0tRZWtjdjNLSjY0QklvVFROOWdi dnRFSkhWRHpkV2VzckRRT3c2RHRMbDR0M1R5bzNSUzkydUpscDJDbC9iV2ticG9jawpYcjRheWUx TVpzOCtJOVdxWkRMVmdJUjQ0SXpJUWM0eXlXQ1JZaDR5Y2xGbDhnY2M5ek12bFVtTVJhNmFNT2c2 bldGSjBGOWhvV2ZmCmdDNkQ0Qi9zR0MrS09DQjU3VUIyT0dXOU9CamlZWW0rNHhINFV6UWo0bnZS c0tqOXFsbWNmQnMzSkc2VDdaNUpHY3QzSkFVQjlIaFEKejJCQlc1aHd6bVF0a3VrMUVmRVlsQ09C RXBLVWJJeU41U2svdk16NzRhUU1hOXYvak9WUkdzOFFaa0VrZmwyVVVXV0E1Qm1hT3psNAoycklv ZEJsd1p4VzV3emRUQTlVSFBRVlU2akpibDh6YjQzMkg3VFZJR0tWVGF1cG1yVFRBVE9xRjZrUVdF RUNJZGZBM2ErVmlEVjFhCkVHV3RzN1VCMmJ5OE1CTG54MDNMelZieml5OXZWN1FZRkJZaVZ3b3NC aEttWlRFRTVGajFaUFZMYkorNDBnMWorcWtGbTY3Yk5ubVoKWVEyLzZGNFJ0V0UrUUt2NWFYZXZL VXMwYmRoRzFmdHllZDFqUkZCc09QVkRLU2FTWFFXb04yQVhJZDBJb0x3NExKV3FnZDgvT0tzTwpB U0RxMFJleU1YRklrMU1Cd05LYmdlOXBpM3JOVmRRd29jT2JaTzNBRTRrcWw2UktrMjg2Nnp5cDhu SUR6UWtjazBmd3hHdS9QeTU3CkZkVnV1Q29aQ2JUTWtMZ1dMQWlndDdsa2JZcDJwa2RaK3Q2WG12 ZnZMTjRYdkNrQmJRWEZCSWl2UUw4RWJXR0VNaUpxOWVncTg4bjAKbXp3YzlOcGlKcW1EVE0wdVNQ UUt3S05Za1N6NWlDTnJmWUk2K0Zkd0owUkcxRG5SU0t0SW9nOUlaZDUwaElWYmdnRTVlemtlK2cz bAo4azBXZjFRRm9CY2oxQXdGdHF2YmQ0Und5U3B5dUFLQ0RtNlRVQkJoSEtTYU9ZcEJBRUpFa2pn R3JncVQzTmFIZnUvRG95YmJiYWlxCktvcW15bkVud2dlaVFQbXhzbVVnZy9GSldvbzJiRG5LQlNi bktCcHRwdGhSV1p0RURRckJPQ0VDblZTazBRbUdpdXh3a1owQWJXSlUKb1B3SldXQlpJWlZwZ1lZ SE1qTk9VUEFIVXpya0REcG8zWmdPdUt1czVnVjB3T0loZ2FnQmlublpMZDlhcHBEeGdtRSsyYWNT WVk3QgpLNFFxTXk3d0s4QnhzUlZoRldxaHFpcGdVbUVnWndtWklMbytJanNzRlowc21ROE95SGlP czFjVnlWdzg4QjFZVTIwMno2ZFFqSmkvCko2UjZPNGtiTExtQm1lTWdZR0FIajgzNG8zb1JsQkY2 LzVpenUxM2FBUUYvVVlEcFFGaURGbjl1dlB0Z0dDZXNvM2JFWWh0Qmc5OGcKVXBnckFUMG5DVzl6 Y1ZGcWZLRzBMSWs1alZsRGsvTUVMUG4ybWZwMGg2SnhkclQwenFDNnhJdnU0VFphR05LdGx5STI1 YTJUSGtZeApWSldLVG5waThSVFNibVdrUGN2WXFEUUhJTFJHY010cTNORjU1U1F3cXFLS3JoNTBX NEN3ZXdhd1VBWmdXdG5VQkFKenNCVEpDY2UwClVTdWxXYTRUbElLTWFmdVNqU0s3T3NaNEE2dDl1 QmRHTkZTbWpPd0Z2T0FNQk1TTHhVS2tSZ1lCQ0RYU2VodEFLeVJ2L05jZWhjMVEKNFZTZmREdDRi VUJoMnUwNGpIcHd6TXVJTUdtcnZRVDFtS2lMVFZON0FlOFJrUWo0c0QrK0Z1SWhzYjUxcVRUQTN0 dFc4NFJkQTJ0eApGTm1TM3hLZmtRYmxJclFWaXhHVTJjQnpMdk4yd09BWG0vY2xQM0w2MXB0U2NT WXlTL1l1NUlwd29TQ2FqQ2hJCg== --089e0122ac460e91d004da47fb55--