From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!.POSTED!not-for-mail From: martin rudalics Newsgroups: gmane.emacs.bugs Subject: bug#25408: Remove Decorations Around Emacs Frame (NS port) Date: Thu, 22 Jun 2017 11:10:54 +0200 Message-ID: <594B899E.6050105@gmx.at> References: <20170417185537.GA78689@breton.holly.idiocy.org> <58F7111F.6050004@gmx.at> <20170419143316.GB10595@breton.holly.idiocy.org> <58F789F0.9000608@gmx.at> <20170419170420.GA12166@breton.holly.idiocy.org> <58F7A749.6070906@gmx.at> <20170610153853.GA95401@breton.holly.idiocy.org> <593CFB04.8000600@gmx.at> <20170611163544.GA70844@breton.holly.idiocy.org> <593E2FFF.2090806@gmx.at> <20170612175926.GA74044@breton.holly.idiocy.org> NNTP-Posting-Host: blaine.gmane.org Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="------------000202090607030307050103" X-Trace: blaine.gmane.org 1498122777 26632 195.159.176.226 (22 Jun 2017 09:12:57 GMT) X-Complaints-To: usenet@blaine.gmane.org NNTP-Posting-Date: Thu, 22 Jun 2017 09:12:57 +0000 (UTC) Cc: Arthur Miller , 25408@debbugs.gnu.org, =?UTF-8?Q?Cl=C3=A9ment?= Pit--Claudel , Anders Lindgren To: Alan Third Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Thu Jun 22 11:12:43 2017 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 1dNyAM-0006Bf-Nj for geb-bug-gnu-emacs@m.gmane.org; Thu, 22 Jun 2017 11:12:43 +0200 Original-Received: from localhost ([::1]:57801 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dNyAR-0001ni-R9 for geb-bug-gnu-emacs@m.gmane.org; Thu, 22 Jun 2017 05:12:47 -0400 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:55020) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1dNyA1-0001mo-6y for bug-gnu-emacs@gnu.org; Thu, 22 Jun 2017 05:12:39 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1dNy9j-00088V-2G for bug-gnu-emacs@gnu.org; Thu, 22 Jun 2017 05:12:21 -0400 Original-Received: from debbugs.gnu.org ([208.118.235.43]:57916) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1dNy9i-00088L-Fy for bug-gnu-emacs@gnu.org; Thu, 22 Jun 2017 05:12:02 -0400 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1dNy9i-0003G0-AR for bug-gnu-emacs@gnu.org; Thu, 22 Jun 2017 05:12:02 -0400 X-Loop: help-debbugs@gnu.org Resent-From: martin rudalics Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Thu, 22 Jun 2017 09:12:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 25408 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: Original-Received: via spool by 25408-submit@debbugs.gnu.org id=B25408.149812270012493 (code B ref 25408); Thu, 22 Jun 2017 09:12:02 +0000 Original-Received: (at 25408) by debbugs.gnu.org; 22 Jun 2017 09:11:40 +0000 Original-Received: from localhost ([127.0.0.1]:60594 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dNy9L-0003FR-Ou for submit@debbugs.gnu.org; Thu, 22 Jun 2017 05:11:39 -0400 Original-Received: from mout.gmx.net ([212.227.17.21]:51857) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1dNy9J-0003FC-3j for 25408@debbugs.gnu.org; Thu, 22 Jun 2017 05:11:37 -0400 Original-Received: from [192.168.1.100] ([212.95.7.52]) by mail.gmx.com (mrgmx103 [212.227.17.168]) with ESMTPSA (Nemesis) id 0Lqyi7-1e0ccF3GxX-00ebGK; Thu, 22 Jun 2017 11:11:05 +0200 In-Reply-To: <20170612175926.GA74044@breton.holly.idiocy.org> X-Provags-ID: V03:K0:LjvMNAkFKJ2h7Bs7DC29RRWnOMW34jhK5+zk23xvxHHkxdrR5sg FBwit6pXSqzcWJ3XtRBBB7EplOfNAnJLkhGjWzJlZKebXGCJOrigT2cUoqjEHlGiIwVwv+1 k0f49cUF2QoyZmp9ESUqLO5vZnDm5dXZneAS478Ct3VilMP0SGoJzsfn8BiB9ljKyX+oSNa IdxnuWp6MjKKXnmCxMPjQ== X-UI-Out-Filterresults: notjunk:1;V01:K0:i6z4aXFq6RY=:nJYE+tZ7mRqPRPmh6fYe+c QxPAEQ3IcPHs2RkZ/zhOm1IfXG0kSv2BXxWr4HsoV1nuAzLkmYDOCjGVzZhD6bZ7jZbehi3o+ mqjfPEUvSbqC7hpGqoj/QzFNL+3eNSgXcdf52WW+RfUK3vVI55lGeylneIv9bqHLtnjlnCRev jrtrR5NQCtsvaup9a2PIsQEnNTmDGYbEvXFTGVCU/y841vfC+nLJn4KYGXt3CTcR2A3PrUisJ QaZRkVaUs9C1tJuisqZqcaJdYX1vtdignWi/DwHtqIhYv8gVdHcmfNYYEnCCgqyb06AZ1gukK /ODE3sueEyuKtzQIPvj9xizepJQ/AD8OYGCbABvESSnM9qn1oDtTj3JnbMhHQWK1fvCjQaNN5 eXxIcZ2zG9f3cSp73i6eIZPgdeb1yp14ITiWKLUhWhBruqbelBZr12dXMtAZuxpYg7FMM0WpQ ngad3CNfImWajYfCDGkxgBVM66JRirFMq+7fwP6awnoL85PgpUk1PRLNeJKrAvLDkfNGg83iI Xf7n8n698bhrAV+9MpWV848SSNdloHmn33W5JmKKDpcmxiuMx5xAWQNCX8yfNvBBswHFXizi6 ITcaczhZMYhNxgNLLnUwb3WxsIR2sf87s9rnzpGIrvIe6g7VI/q224QtHwBJ+LQ2poyimfvms MMw1HKkqrWhogIsd4Tzoys+rzvmA0eVWaQ4VohVa9x0pDN5VSXoxcbA6PmpHG5IrU5zeMjjsL lmr+FTAZaom70ZA7jLDr9YFY3f0PSw1w5ZTGaCvXgORNLy7hr3D1Hq9nxyc= 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:133812 Archived-At: This is a multi-part message in MIME format. --------------000202090607030307050103 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: quoted-printable > Anything else you=E2=80=99d like me to look at here? Attached find the changes I intend to push in the next few days plus a ChangeLog. You will find this particular change there: + f->output_data.ns->left_edge_cursor =3D [NSCursor resizeLeftRightCurso= r]; + f->output_data.ns->top_left_corner_cursor =3D [NSCursor arrowCursor]; + f->output_data.ns->top_edge_cursor =3D [NSCursor resizeUpDownCursor]; + f->output_data.ns->top_right_corner_cursor =3D [NSCursor arrowCursor];= + f->output_data.ns->right_edge_cursor =3D [NSCursor resizeLeftRightCurs= or]; + f->output_data.ns->bottom_right_corner_cursor =3D [NSCursor arrowCurso= r]; + f->output_data.ns->bottom_edge_cursor =3D [NSCursor resizeUpDownCursor= ]; + f->output_data.ns->bottom_left_corner_cursor =3D [NSCursor arrowCursor= ]; It would be nice to have something better on NS for the top_left_corner_cursor, top_right_corner_cursor, bottom_right_corner_cursor and bottom_left_corner_cursor cases. If you want to play around with child frames, try the attached file my-child-frame.el. Any feedback welcome. Thanks in advance, martin --------------000202090607030307050103 Content-Type: text/plain; charset=windows-1252; name="child-frames.diff" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="child-frames.diff" ZGlmZiAtLWdpdCBhL2RvYy9saXNwcmVmL2Rpc3BsYXkudGV4aSBiL2RvYy9saXNwcmVmL2Rp c3BsYXkudGV4aQppbmRleCA0ZGU1NWZkLi4wNGM1YmEyIDEwMDY0NAotLS0gYS9kb2MvbGlz cHJlZi9kaXNwbGF5LnRleGkKKysrIGIvZG9jL2xpc3ByZWYvZGlzcGxheS50ZXhpCkBAIC0x OTc0LDYgKzE5NzQsNzEgQEAgU2l6ZSBvZiBEaXNwbGF5ZWQgVGV4dAogaGVpZ2h0IG9mIGJv dGgsIGlmIHByZXNlbnQsIGluIHRoZSByZXR1cm4gdmFsdWUuCiBAZW5kIGRlZnVuCgorQGNv ZGV7d2luZG93LXRleHQtcGl4ZWwtc2l6ZX0gdHJlYXRzIHRoZSB0ZXh0IGRpc3BsYXllZCBp biBhIHdpbmRvdyBhcyBhCit3aG9sZSBhbmQgZG9lcyBub3QgY2FyZSBhYm91dCB0aGUgc2l6 ZSBvZiBpbmRpdmlkdWFsIGxpbmVzLiAgVGhlCitmb2xsb3dpbmcgZnVuY3Rpb24gZG9lcy4K KworQGRlZnVuIHdpbmRvdy1saW5lcy1waXhlbC1kaW1lbnNpb25zICZvcHRpb25hbCB3aW5k b3cgZmlyc3QgbGFzdCBib2R5IGludmVyc2UKK1RoaXMgZnVuY3Rpb24gY2FsY3VsYXRlcyB0 aGUgcGl4ZWwgZGltZW5zaW9ucyBvZiBlYWNoIGxpbmUgZGlzcGxheWVkIGluCit0aGUgc3Bl Y2lmaWVkIEB2YXJ7d2luZG93fS4gIEl0IGRvZXMgc28gYnkgd2Fsa2luZyBAdmFye3dpbmRv d30ncworY3VycmVudCBnbHlwaCBtYXRyaXgtLS1hIG1hdHJpeCBzdG9yaW5nIHRoZSBnbHlw aCAoQHB4cmVme0dseXBoc30pIG9mCitlYWNoIGJ1ZmZlciBjaGFyYWN0ZXIgY3VycmVudGx5 IGRpc3BsYXllZCBpbiBAdmFye3dpbmRvd30uICBJZgorc3VjY2Vzc2Z1bCwgaXQgcmV0dXJu cyBhIGxpc3Qgb2YgY29ucyBwYWlycyByZXByZXNlbnRpbmcgdGhlIHgtIGFuZAoreS1jb29y ZGluYXRlcyBvZiB0aGUgbG93ZXIgcmlnaHQgY29ybmVyIG9mIHRoZSBsYXN0IGNoYXJhY3Rl ciBvZiBlYWNoCitsaW5lLiAgQ29vcmRpbmF0ZXMgYXJlIG1lYXN1cmVkIGluIHBpeGVscyBm cm9tIGFuIG9yaWdpbiAoMCwgMCkgYXQgdGhlCit0b3AtbGVmdCBjb3JuZXIgb2YgQHZhcnt3 aW5kb3d9LiAgQHZhcnt3aW5kb3d9IG11c3QgYmUgYSBsaXZlIHdpbmRvdyBhbmQKK2RlZmF1 bHRzIHRvIHRoZSBzZWxlY3RlZCBvbmUuCisKK0lmIHRoZSBvcHRpb25hbCBhcmd1bWVudCBA dmFye2ZpcnN0fSBpcyBhbiBpbnRlZ2VyLCBpdCBkZW5vdGVzIHRoZSBpbmRleAorKHN0YXJ0 aW5nIHdpdGggMCkgb2YgdGhlIGZpcnN0IGxpbmUgb2YgQHZhcnt3aW5kb3d9J3MgZ2x5cGgg bWF0cml4IHRvIGJlCityZXR1cm5lZC4gIE5vdGUgdGhhdCBpZiBAdmFye3dpbmRvd30gaGFz IGEgaGVhZGVyIGxpbmUsIHRoZSBsaW5lIHdpdGgKK2luZGV4IDAgaXMgdGhhdCBoZWFkZXIg bGluZS4gIElmIEB2YXJ7Zmlyc3R9IGlzIG5pbCwgdGhlIGZpcnN0IGxpbmUgdG8KK2JlIGNv bnNpZGVyZWQgaXMgZGV0ZXJtaW5lZCBieSB0aGUgdmFsdWUgb2YgdGhlIG9wdGlvbmFsIGFy Z3VtZW50CitAdmFye2JvZHl9OiBJZiBAdmFye2JvZHl9IGlzIG5vbi1AY29kZXtuaWx9LCB0 aGlzIG1lYW5zIHRvIHN0YXJ0IHdpdGgKK3RoZSBmaXJzdCBsaW5lIG9mIEB2YXJ7d2luZG93 fSdzIGJvZHksIHNraXBwaW5nIGFueSBoZWFkZXIgbGluZSwgaWYKK3ByZXNlbnQuICBPdGhl cndpc2UsIHRoaXMgZnVuY3Rpb24gd2lsbCBzdGFydCB3aXRoIHRoZSBmaXJzdCBsaW5lIG9m CitAdmFye3dpbmRvd30ncyBnbHlwaCBtYXRyaXgsIHBvc3NpYmx5IHRoZSBoZWFkZXIgbGlu ZS4KKworSWYgdGhlIG9wdGlvbmFsIGFyZ3VtZW50IEB2YXJ7bGFzdH0gaXMgYW4gaW50ZWdl ciwgaXQgZGVub3RlcyB0aGUgaW5kZXgKK29mIHRoZSBsYXN0IGxpbmUgb2YgQHZhcnt3aW5k b3d9J3MgZ2x5cGggbWF0cml4IHRoYXQgc2hhbGwgYmUgcmV0dXJuZWQuCitJZiBAdmFye2xh c3R9IGlzIG5pbCwgdGhlIGxhc3QgbGluZSB0byBiZSBjb25zaWRlcmVkIGlzIGRldGVybWlu ZWQgYnkKK3RoZSB2YWx1ZSBvZiBAdmFye2JvZHl9OiBJZiBAdmFye2JvZHl9IGlzIG5vbi1A Y29kZXtuaWx9LCB0aGlzIG1lYW5zIHRvCit1c2UgdGhlIGxhc3QgbGluZSBvZiBAdmFye3dp bmRvd30ncyBib2R5LCBvbWl0dGluZyBAdmFye3dpbmRvd30ncyBtb2RlCitsaW5lLCBpZiBw cmVzZW50LiAgT3RoZXJ3aXNlLCB0aGlzIG1lYW5zIHRvIHVzZSB0aGUgbGFzdCBsaW5lIG9m CitAdmFye3dpbmRvd30gd2hpY2ggbWF5IGJlIHRoZSBtb2RlIGxpbmUuCisKK1RoZSBvcHRp b25hbCBhcmd1bWVudCBAdmFye2ludmVyc2V9LCBpZiBAY29kZXtuaWx9LCBtZWFucyB0aGF0 IHRoZQoreS1waXhlbCB2YWx1ZSByZXR1cm5lZCBmb3IgYW55IGxpbmUgc3BlY2lmaWVzIHRo ZSBkaXN0YW5jZSBpbiBwaXhlbHMKK2Zyb20gdGhlIGxlZnQgZWRnZSAoYm9keSBlZGdlIGlm IEB2YXJ7Ym9keX0gaXMgbm9uLUBjb2Rle25pbH0pIG9mCitAdmFye3dpbmRvd30gdG8gdGhl IHJpZ2h0IGVkZ2Ugb2YgdGhlIGxhc3QgZ2x5cGggb2YgdGhhdCBsaW5lLgorQHZhcntpbnZl cnNlfSBub24tQGNvZGV7bmlsfSBtZWFucyB0aGF0IHRoZSB5LXBpeGVsIHZhbHVlIHJldHVy bmVkIGZvcgorYW55IGxpbmUgc3BlY2lmaWVzIHRoZSBkaXN0YW5jZSBpbiBwaXhlbHMgZnJv bSB0aGUgcmlnaHQgZWRnZSBvZiB0aGUKK2xhc3QgZ2x5cGggb2YgdGhhdCBsaW5lIHRvIHRo ZSByaWdodCBlZGdlIChib2R5IGVkZ2UgaWYgQHZhcntib2R5fSBpcworbm9uLUBjb2Rle25p bH0pIG9mIEB2YXJ7d2luZG93fS4gIFRoaXMgaXMgdXNlZnVsIGZvciBkZXRlcm1pbmluZyB0 aGUKK2Ftb3VudCBvZiBzbGFjayBzcGFjZSBhdCB0aGUgZW5kIG9mIGVhY2ggbGluZS4KKwor VGhlIG9wdGlvbmFsIGFyZ3VtZW50IEB2YXJ7bGVmdH0sIGlmIG5vbi1AY29kZXtuaWx9IG1l YW5zIHRvIHJldHVybiB0aGUKK3gtIGFuZCB5LWNvb3JkaW5hdGVzIG9mIHRoZSBsb3dlciBs ZWZ0IGNvcm5lciBvZiB0aGUgbGVmdG1vc3QgY2hhcmFjdGVyCitvbiBlYWNoIGxpbmUuICBU aGlzIGlzIHRoZSB2YWx1ZSB0aGF0IHNob3VsZCBiZSB1c2VkIGZvciB3aW5kb3dzIHRoYXQK K21vc3RseSBkaXNwbGF5IHRleHQgZnJvbSByaWdodCB0byBsZWZ0LgorCitJZiBAdmFye2xl ZnR9IGlzIG5vbi1AY29kZXtuaWx9IGFuZCBAdmFye2ludmVyc2V9IGlzIEBjb2Rle25pbH0s IHRoaXMKK21lYW5zIHRoYXQgdGhlIHktcGl4ZWwgdmFsdWUgcmV0dXJuZWQgZm9yIGFueSBs aW5lIHNwZWNpZmllcyB0aGUKK2Rpc3RhbmNlIGluIHBpeGVscyBmcm9tIHRoZSBsZWZ0IGVk Z2Ugb2YgdGhlIGxhc3QgKGxlZnRtb3N0KSBnbHlwaCBvZgordGhhdCBsaW5lIHRvIHRoZSBy aWdodCBlZGdlIChib2R5IGVkZ2UgaWYgQHZhcntib2R5fSBpcyBub24tQGNvZGV7bmlsfSkK K29mIEB2YXJ7d2luZG93fS4gIElmIEB2YXJ7bGVmdH0gYW5kIEB2YXJ7aW52ZXJzZX0gYXJl IGJvdGgKK25vbi1AY29kZXtuaWx9LCB0aGUgeS1waXhlbCB2YWx1ZSByZXR1cm5lZCBmb3Ig YW55IGxpbmUgc3BlY2lmaWVzIHRoZQorZGlzdGFuY2UgaW4gcGl4ZWxzIGZyb20gdGhlIGxl ZnQgZWRnZSAoYm9keSBlZGdlIGlmIEB2YXJ7Ym9keX0gaXMKK25vbi1AY29kZXtuaWx9KSBv ZiBAdmFye3dpbmRvd30gdG8gdGhlIGxlZnQgZWRnZSBvZiB0aGUgbGFzdCAobGVmdG1vc3Qp CitnbHlwaCBvZiB0aGF0IGxpbmUuCisKK1RoaXMgZnVuY3Rpb24gcmV0dXJucyBAY29kZXtu aWx9IGlmIHRoZSBjdXJyZW50IGdseXBoIG1hdHJpeCBvZgorQHZhcnt3aW5kb3d9IGlzIG5v dCB1cC10by1kYXRlIHdoaWNoIHVzdWFsbHkgaGFwcGVucyB3aGVuIEVtYWNzIGlzIGJ1c3ks Citmb3IgZXhhbXBsZSwgd2hlbiBwcm9jZXNzaW5nIGEgY29tbWFuZC4gIFRoZSB2YWx1ZSBz aG91bGQgYmUgcmV0cmlldmFibGUKK3Rob3VnaCB3aGVuIHRoaXMgZnVuY3Rpb24gaXMgcnVu IGZyb20gYW4gaWRsZSB0aW1lciB3aXRoIGEgZGVsYXkgb2YgemVybworc2Vjb25kcy4KK0Bl bmQgZGVmdW4KKwogQGRlZnVuIGxpbmUtcGl4ZWwtaGVpZ2h0CiBUaGlzIGZ1bmN0aW9uIHJl dHVybnMgdGhlIGhlaWdodCBpbiBwaXhlbHMgb2YgdGhlIGxpbmUgYXQgcG9pbnQgaW4gdGhl CiBzZWxlY3RlZCB3aW5kb3cuICBUaGUgdmFsdWUgaW5jbHVkZXMgdGhlIGxpbmUgc3BhY2lu ZyBvZiB0aGUgbGluZQpkaWZmIC0tZ2l0IGEvZG9jL2xpc3ByZWYvZWxpc3AudGV4aSBiL2Rv Yy9saXNwcmVmL2VsaXNwLnRleGkKaW5kZXggN2NjOTFhOC4uNGJlZGVhMyAxMDA2NDQKLS0t IGEvZG9jL2xpc3ByZWYvZWxpc3AudGV4aQorKysgYi9kb2MvbGlzcHJlZi9lbGlzcC50ZXhp CkBAIC0xMTMwLDYgKzExMzAsOCBAQCBUb3AKICogQnVmZmVyIFBhcmFtZXRlcnM6OiAgICAg ICBXaGljaCBidWZmZXJzIGhhdmUgYmVlbiBvciBzaG91bGQgYmUgc2hvd24uCiAqIEZyYW1l IEludGVyYWN0aW9uIFBhcmFtZXRlcnM6OiAgUGFyYW1ldGVycyBmb3IgaW50ZXJhY3Rpbmcg d2l0aCBvdGhlcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZnJhbWVzLgorKiBN b3VzZSBEcmFnZ2luZyBQYXJhbWV0ZXJzOjogIFBhcmFtZXRlcnMgZm9yIHJlc2l6aW5nIGFu ZCBtb3ZpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZyYW1lcyB3aXRoIHRo ZSBtb3VzZS4KICogTWFuYWdlbWVudCBQYXJhbWV0ZXJzOjogICBDb21tdW5pY2F0aW5nIHdp dGggdGhlIHdpbmRvdyBtYW5hZ2VyLgogKiBDdXJzb3IgUGFyYW1ldGVyczo6ICAgICAgIENv bnRyb2xsaW5nIHRoZSBjdXJzb3IgYXBwZWFyYW5jZS4KICogRm9udCBhbmQgQ29sb3IgUGFy YW1ldGVyczo6IEZvbnRzIGFuZCBjb2xvcnMgZm9yIHRoZSBmcmFtZSB0ZXh0LgpkaWZmIC0t Z2l0IGEvZG9jL2xpc3ByZWYvZnJhbWVzLnRleGkgYi9kb2MvbGlzcHJlZi9mcmFtZXMudGV4 aQppbmRleCA1MDQ2N2QxLi5iNDMwZjdjIDEwMDY0NAotLS0gYS9kb2MvbGlzcHJlZi9mcmFt ZXMudGV4aQorKysgYi9kb2MvbGlzcHJlZi9mcmFtZXMudGV4aQpAQCAtOTc0LDE0ICs5NzQs NyBAQCBGcmFtZSBTaXplCiB0aGUgaGVscCBvZiBhbiBYLXN0eWxlIGdlb21ldHJ5IHNwZWNp ZmljYXRpb24uICBAeHJlZntFbWFjcyBJbnZvY2F0aW9uLCwKIENvbW1hbmQgTGluZSBBcmd1 bWVudHMgZm9yIEVtYWNzIEludm9jYXRpb24sIGVtYWNzLCBUaGUgR05VIEVtYWNzCiBNYW51 YWx9LiAgQmVsb3cgd2UgbGlzdCBzb21lIGZ1bmN0aW9ucyB0byBhY2Nlc3MgYW5kIHNldCB0 aGUgc2l6ZSBvZiBhbgotZXhpc3RpbmcsIHZpc2libGUgZnJhbWUuCi0KLUBkZWZ1biBmcmFt ZS10ZXh0LWhlaWdodCAmb3B0aW9uYWwgZnJhbWUKLUBkZWZ1bnggZnJhbWUtdGV4dC13aWR0 aCAmb3B0aW9uYWwgZnJhbWUKLVRoZXNlIGZ1bmN0aW9ucyByZXR1cm4gdGhlIGhlaWdodCBh bmQgd2lkdGggb2YgdGhlIHRleHQgYXJlYSBvZgotQHZhcntmcmFtZX0gKEBweHJlZntGcmFt ZSBMYXlvdXR9KSwgbWVhc3VyZWQgaW4gcGl4ZWxzLiAgRm9yIGEgdGV4dAotdGVybWluYWws IHRoZSByZXN1bHRzIGFyZSBpbiBjaGFyYWN0ZXJzIHJhdGhlciB0aGFuIHBpeGVscy4KLUBl bmQgZGVmdW4KK2V4aXN0aW5nLCB2aXNpYmxlIGZyYW1lLCBieSBkZWZhdWx0IHRoZSBzZWxl Y3RlZCBvbmUuCgogQGRlZnVuIGZyYW1lLWhlaWdodCAmb3B0aW9uYWwgZnJhbWUKIEBkZWZ1 bnggZnJhbWUtd2lkdGggJm9wdGlvbmFsIGZyYW1lCkBAIC05OTcsMTEgKzk5MCwzMyBAQCBG cmFtZSBTaXplCiBmaXQgaW50byB0aGUgdGV4dCBhcmVhLgogQGVuZCBkZWZ1bgoKLUBkZWZ1 biBmcmFtZS1waXhlbC1oZWlnaHQgJm9wdGlvbmFsIGZyYW1lCi1AZGVmdW54IGZyYW1lLXBp eGVsLXdpZHRoICZvcHRpb25hbCBmcmFtZQotVGhlc2UgZnVuY3Rpb25zIHJldHVybiB0aGUg bmF0aXZlIHdpZHRoIGFuZCBoZWlnaHQsIHNlZSBAcmVme0ZyYW1lCi1MYXlvdXR9KSBvZiBA dmFye2ZyYW1lfSBpbiBwaXhlbHMuICBGb3IgYSB0ZXh0IHRlcm1pbmFsLCB0aGUgcmVzdWx0 cyBhcmUKLWluIGNoYXJhY3RlcnMgcmF0aGVyIHRoYW4gcGl4ZWxzLgorVGhlIGZ1bmN0aW9u cyBmb2xsb3dpbmcgbmV4dCByZXR1cm4gdGhlIHBpeGVsIHdpZHRocyBhbmQgaGVpZ2h0cyBv ZiB0aGUKK25hdGl2ZSwgb3V0ZXIgYW5kIGlubmVyIGZyYW1lIGFuZCB0aGUgdGV4dCBhcmVh IChAcHhyZWZ7RnJhbWUgTGF5b3V0fSkKK29mIGEgZ2l2ZW4gZnJhbWUuICBGb3IgYSB0ZXh0 IHRlcm1pbmFsLCB0aGUgcmVzdWx0cyBhcmUgaW4gY2hhcmFjdGVycworcmF0aGVyIHRoYW4g cGl4ZWxzLgorCitAZGVmdW4gZnJhbWUtb3V0ZXItd2lkdGggJm9wdGlvbmFsIGZyYW1lCitA ZGVmdW54IGZyYW1lLW91dGVyLWhlaWdodCAmb3B0aW9uYWwgZnJhbWUKK1RoZXNlIGZ1bmN0 aW9ucyByZXR1cm4gdGhlIG91dGVyIHdpZHRoIGFuZCBoZWlnaHQgb2YgQHZhcntmcmFtZX0g aW4KK3BpeGVscy4KK0BlbmQgZGVmdW4KKworQGRlZnVuIGZyYW1lLW5hdGl2ZS1oZWlnaHQg Jm9wdGlvbmFsIGZyYW1lCitAZGVmdW54IGZyYW1lLW5hdGl2ZS13aWR0aCAmb3B0aW9uYWwg ZnJhbWUKK1RoZXNlIGZ1bmN0aW9ucyByZXR1cm4gdGhlIG5hdGl2ZSB3aWR0aCBhbmQgaGVp Z2h0IG9mIEB2YXJ7ZnJhbWV9IGluCitwaXhlbHMuCitAZW5kIGRlZnVuCisKK0BkZWZ1biBm cmFtZS1pbm5lci13aWR0aCAmb3B0aW9uYWwgZnJhbWUKK0BkZWZ1bnggZnJhbWUtaW5uZXIt aGVpZ2h0ICZvcHRpb25hbCBmcmFtZQorVGhlc2UgZnVuY3Rpb25zIHJldHVybiB0aGUgaW5u ZXIgd2lkdGggYW5kIGhlaWdodCBvZiBAdmFye2ZyYW1lfSBpbgorcGl4ZWxzLgorQGVuZCBk ZWZ1bgorCitAZGVmdW4gZnJhbWUtdGV4dC13aWR0aCAmb3B0aW9uYWwgZnJhbWUKK0BkZWZ1 bnggZnJhbWUtdGV4dC1oZWlnaHQgJm9wdGlvbmFsIGZyYW1lCitUaGVzZSBmdW5jdGlvbnMg cmV0dXJuIHRoZSB3aWR0aCBhbmQgaGVpZ2h0IG9mIHRoZSB0ZXh0IGFyZWEgb2YKK0B2YXJ7 ZnJhbWV9IGluIHBpeGVscy4KIEBlbmQgZGVmdW4KCiBPbiB3aW5kb3cgc3lzdGVtcyB0aGF0 IHN1cHBvcnQgaXQsIEVtYWNzIHRyaWVzIGJ5IGRlZmF1bHQgdG8gbWFrZSB0aGUKQEAgLTEz NDUsNiArMTM2MCw4IEBAIFdpbmRvdyBGcmFtZSBQYXJhbWV0ZXJzCiAqIEJ1ZmZlciBQYXJh bWV0ZXJzOjogICAgICAgICAgIFdoaWNoIGJ1ZmZlcnMgaGF2ZSBiZWVuIG9yIHNob3VsZCBi ZSBzaG93bi4KICogRnJhbWUgSW50ZXJhY3Rpb24gUGFyYW1ldGVyczo6ICBQYXJhbWV0ZXJz IGZvciBpbnRlcmFjdGluZyB3aXRoIG90aGVyCiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgZnJhbWVzLgorKiBNb3VzZSBEcmFnZ2luZyBQYXJhbWV0ZXJzOjogICBQYXJh bWV0ZXJzIGZvciByZXNpemluZyBhbmQgbW92aW5nCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgZnJhbWVzIHdpdGggdGhlIG1vdXNlLgogKiBNYW5hZ2VtZW50IFBhcmFt ZXRlcnM6OiAgICAgICBDb21tdW5pY2F0aW5nIHdpdGggdGhlIHdpbmRvdyBtYW5hZ2VyLgog KiBDdXJzb3IgUGFyYW1ldGVyczo6ICAgICAgICAgICBDb250cm9sbGluZyB0aGUgY3Vyc29y IGFwcGVhcmFuY2UuCiAqIEZvbnQgYW5kIENvbG9yIFBhcmFtZXRlcnM6OiAgIEZvbnRzIGFu ZCBjb2xvcnMgZm9yIHRoZSBmcmFtZSB0ZXh0LgpAQCAtMTQwNCwxOCArMTQyMSwxOSBAQCBQ b3NpdGlvbiBQYXJhbWV0ZXJzCiBAY2luZGV4IGZyYW1lIHBvc2l0aW9uCgogUGFyYW1ldGVy cyBkZXNjcmliaW5nIHRoZSBYLSBhbmQgWS1vZmZzZXRzIG9mIGEgZnJhbWUgYXJlIGFsd2F5 cwotbWVhc3VyZWQgaW4gcGl4ZWxzLiAgRm9yIG5vcm1hbCwgbm9uLWNoaWxkIGZyYW1lcyB0 aGV5IHNwZWNpZnkgdGhlCi1mcmFtZSdzIGFic29sdXRlIG91dGVyIHBvc2l0aW9uIChAcHhy ZWZ7RnJhbWUgR2VvbWV0cnl9KSB3aXRoIHJlc3BlY3QgdG8KLWl0cyBkaXNwbGF5J3Mgb3Jp Z2luLiAgRm9yIGEgY2hpbGQgZnJhbWUgKEBweHJlZntDaGlsZCBGcmFtZXN9KSB0aGV5Ci1z cGVjaWZ5IHRoZSBmcmFtZSdzIG91dGVyIHBvc2l0aW9uIHJlbGF0aXZlIHRvIHRoZSBuYXRp dmUgcG9zaXRpb24gb2YKLXRoZSBmcmFtZSdzIHBhcmVudCBmcmFtZS4gIChOb3RlIHRoYXQg bm9uZSBvZiB0aGVzZSBwYXJhbWV0ZXJzIGlzCi1tZWFuaW5nZnVsIG9uIFRUWSBmcmFtZXMu KQorbWVhc3VyZWQgaW4gcGl4ZWxzLiAgRm9yIGEgbm9ybWFsLCBub24tY2hpbGQgZnJhbWUg dGhleSBzcGVjaWZ5IHRoZQorZnJhbWUncyBvdXRlciBwb3NpdGlvbiAoQHB4cmVme0ZyYW1l IEdlb21ldHJ5fSkgcmVsYXRpdmUgdG8gaXRzCitkaXNwbGF5J3Mgb3JpZ2luLiAgRm9yIGEg Y2hpbGQgZnJhbWUgKEBweHJlZntDaGlsZCBGcmFtZXN9KSB0aGV5IHNwZWNpZnkKK3RoZSBm cmFtZSdzIG91dGVyIHBvc2l0aW9uIHJlbGF0aXZlIHRvIHRoZSBuYXRpdmUgcG9zaXRpb24g b2YgdGhlCitmcmFtZSdzIHBhcmVudCBmcmFtZS4gIChOb3RlIHRoYXQgbm9uZSBvZiB0aGVz ZSBwYXJhbWV0ZXJzIGlzIG1lYW5pbmdmdWwKK29uIFRUWSBmcmFtZXMuKQoKIEB0YWJsZSBA Y29kZQogQHZpbmRleCBsZWZ0LCBhIGZyYW1lIHBhcmFtZXRlcgogQGl0ZW0gbGVmdAogVGhl IHBvc2l0aW9uLCBpbiBwaXhlbHMsIG9mIHRoZSBsZWZ0IG91dGVyIGVkZ2Ugb2YgdGhlIGZy YW1lIHdpdGgKLXJlc3BlY3QgdG8gdGhlIGxlZnQgZWRnZSBvZiB0aGUgZnJhbWUncyBkaXNw bGF5IG9yIHBhcmVudCBmcmFtZS4KK3Jlc3BlY3QgdG8gdGhlIGxlZnQgZWRnZSBvZiB0aGUg ZnJhbWUncyBkaXNwbGF5IG9yIHBhcmVudCBmcmFtZS4gIEl0IGNhbgorYmUgc3BlY2lmaWVk IGluIG9uZSBvZiB0aGUgZm9sbG93aW5nIHdheXMuCgogQHRhYmxlIEBhc2lzCiBAaXRlbSBh biBpbnRlZ2VyCkBAIC0xNDM2LDYgKzE0NTQsMzAgQEAgUG9zaXRpb24gUGFyYW1ldGVycwog cG9zaXRpdmUgb3IgbmVnYXRpdmU7IGEgbmVnYXRpdmUgdmFsdWUgc3BlY2lmaWVzIGEgcG9z aXRpb24gb3V0c2lkZSB0aGUKIHNjcmVlbiBvciBwYXJlbnQgZnJhbWUgb3Igb24gYSBtb25p dG9yIG90aGVyIHRoYW4gdGhlIHByaW1hcnkgb25lIChmb3IKIG11bHRpLW1vbml0b3IgZGlz cGxheXMpLgorCitAY2luZGV4IGxlZnQgcG9zaXRpb24gcmF0aW8KK0BjaW5kZXggdG9wIHBv c2l0aW9uIHJhdGlvCitAaXRlbSBhIGZsb2F0aW5nLXBvaW50IHZhbHVlCitBIGZsb2F0aW5n LXBvaW50IHZhbHVlIGluIHRoZSByYW5nZSAwLjAgdG8gMS4wIHNwZWNpZmllcyB0aGUgbGVm dCBlZGdlJ3MKK29mZnNldCB2aWEgdGhlIEBkZm57bGVmdCBwb3NpdGlvbiByYXRpb30gb2Yg dGhlIGZyYW1lLS0tdGhlIHJhdGlvIG9mIHRoZQorbGVmdCBlZGdlIG9mIGl0cyBvdXRlciBm cmFtZSB0byB0aGUgd2lkdGggb2YgdGhlIGZyYW1lJ3Mgd29ya2FyZWEKKyhAcHhyZWZ7TXVs dGlwbGUgVGVybWluYWxzfSkgb3IgaXRzIHBhcmVudCdzIG5hdGl2ZSBmcmFtZSAoQHB4cmVm e0NoaWxkCitGcmFtZXN9KSBtaW51cyB0aGUgd2lkdGggb2YgdGhlIG91dGVyIGZyYW1lLiAg VGh1cywgYSBsZWZ0IHBvc2l0aW9uCityYXRpbyBvZiAwLjAgZmx1c2hlcyBhIGZyYW1lIHRv IHRoZSBsZWZ0LCBhIHJhdGlvIG9mIDAuNSBjZW50ZXJzIGl0IGFuZAorYSByYXRpbyBvZiAx LjAgZmx1c2hlcyBpdCB0byB0aGUgcmlnaHQgb2YgaXRzIGRpc3BsYXkgb3IgcGFyZW50IGZy YW1lLgorU2ltaWxhcmx5LCB0aGUgQGRmbnt0b3AgcG9zaXRpb24gcmF0aW99IG9mIGEgZnJh bWUgaXMgdGhlIHJhdGlvIG9mIHRoZQorZnJhbWUncyB0b3AgcG9zaXRpb24gdG8gdGhlIGhl aWdodCBvZiBpdHMgd29ya2FyZWEgb3IgcGFyZW50IGZyYW1lIG1pbnVzCit0aGUgaGVpZ2h0 IG9mIHRoZSBmcmFtZS4KKworRW1hY3Mgd2lsbCB0cnkgdG8ga2VlcCB0aGUgcG9zaXRpb24g cmF0aW9zIG9mIGEgY2hpbGQgZnJhbWUgdW5hbHRlcmVkIGlmCit0aGF0IGZyYW1lIGhhcyBh IG5vbi1AY29kZXtuaWx9IEBjb2Rle2tlZXAtcmF0aW99IHBhcmFtZXRlcgorKEBweHJlZntG cmFtZSBJbnRlcmFjdGlvbiBQYXJhbWV0ZXJzfSkgYW5kIGl0cyBwYXJlbnQgZnJhbWUgaXMg cmVzaXplZC4KKworU2luY2UgdGhlIG91dGVyIHNpemUgb2YgYSBmcmFtZSAoQHB4cmVme0Zy YW1lIEdlb21ldHJ5fSkgaXMgdXN1YWxseQordW5hdmFpbGFibGUgYmVmb3JlIGEgZnJhbWUg aGFzIGJlZW4gbWFkZSB2aXNpYmxlLCBpdCBpcyBnZW5lcmFsbHkgbm90CithZHZpc2FibGUg dG8gdXNlIGZsb2F0aW5nLXBvaW50IHZhbHVlcyB3aGVuIGNyZWF0aW5nIGRlY29yYXRlZCBm cmFtZXMuCitGbG9hdGluZy1wb2ludCB2YWx1ZXMgYXJlIG1vcmUgc3VpdGVkIGZvciBlbnN1 cmluZyB0aGF0IGFuICh1bmRlY29yYXRlZCkKK2NoaWxkIGZyYW1lIGlzIHBvc2l0aW9uZWQg bmljZWx5IHdpdGhpbiB0aGUgYXJlYSBvZiBpdHMgcGFyZW50IGZyYW1lLgogQGVuZCB0YWJs ZQoKIFNvbWUgd2luZG93IG1hbmFnZXJzIGlnbm9yZSBwcm9ncmFtLXNwZWNpZmllZCBwb3Np dGlvbnMuICBJZiB5b3Ugd2FudCB0bwpAQCAtMTQ0OCwxNyArMTQ5MCwxOSBAQCBQb3NpdGlv biBQYXJhbWV0ZXJzCiAgIG5pbCAnKCh1c2VyLXBvc2l0aW9uIC4gdCkgKGxlZnQgLiAoKyAt NCkpKSkKIEBlbmQgZXhhbXBsZQoKLUluIGdlbmVyYWwsIGl0IGlzIG5vdCBhIGdvb2QgaWRl YSB0byBzcGVjaWZ5IG5lZ2F0aXZlIG9mZnNldHMgdG8KLXBvc2l0aW9uIGEgZnJhbWUgcmVs YXRpdmUgdG8gdGhlIHJpZ2h0IG9yIGJvdHRvbSBlZGdlIG9mIGl0cyBkaXNwbGF5LgotUG9z aXRpb25pbmcgdGhlIGluaXRpYWwgb3IgYSBuZXcgZnJhbWUgaXMgZWl0aGVyIG5vdCBhY2N1 cmF0ZSAoYmVjYXVzZQotdGhlIHNpemUgb2YgdGhlIG91dGVyIGZyYW1lIGlzIG5vdCB5ZXQg ZnVsbHkga25vd24gYmVmb3JlIHRoZSBmcmFtZSBoYXMKLWJlZW4gbWFkZSB2aXNpYmxlKSBv ciB3aWxsIGNhdXNlIGFkZGl0aW9uYWwgZmxpY2tlciAoaWYgdGhlIGZyYW1lIGlzCi1yZXBv c2l0aW9uZWQgYWZ0ZXIgYmVjb21pbmcgdmlzaWJsZSkuCitJbiBnZW5lcmFsLCBpdCBpcyBu b3QgYSBnb29kIGlkZWEgdG8gcG9zaXRpb24gYSBmcmFtZSByZWxhdGl2ZSB0byB0aGUKK3Jp Z2h0IG9yIGJvdHRvbSBlZGdlIG9mIGl0cyBkaXNwbGF5LiAgUG9zaXRpb25pbmcgdGhlIGlu aXRpYWwgb3IgYSBuZXcKK2ZyYW1lIGlzIGVpdGhlciBub3QgYWNjdXJhdGUgKGJlY2F1c2Ug dGhlIHNpemUgb2YgdGhlIG91dGVyIGZyYW1lIGlzIG5vdAoreWV0IGZ1bGx5IGtub3duIGJl Zm9yZSB0aGUgZnJhbWUgaGFzIGJlZW4gbWFkZSB2aXNpYmxlKSBvciB3aWxsIGNhdXNlCith ZGRpdGlvbmFsIGZsaWNrZXIgKGlmIHRoZSBmcmFtZSBoYXMgdG8gYmUgcmVwb3NpdGlvbmVk IGFmdGVyIGJlY29taW5nCit2aXNpYmxlKS4KCi0gIE5vdGUgYWxzbywgdGhhdCBuZWdhdGl2 ZSBvZmZzZXRzIGFyZSBub3Qgc3RvcmVkIGludGVybmFsbHkgYW5kIGFyZSBub3QKLXJldHVy bmVkIGJ5IHRoZSBmdW5jdGlvbiBAY29kZXtmcmFtZS1wYXJhbWV0ZXJzfS4gIFRoaXMgbWVh bnMgdGhhdCB0aGUKLWRlc2t0b3Agc2F2aW5nIHJvdXRpbmVzIHdpbGwgcmVzdG9yZSB0aGUg ZnJhbWUgZnJvbSB0aGUgcG9zaXRpdmUgb2Zmc2V0cwotb2J0YWluZWQgYnkgdGhhdCBmdW5j dGlvbi4KKyAgTm90ZSBhbHNvLCB0aGF0IHBvc2l0aW9ucyBzcGVjaWZpZWQgcmVsYXRpdmUg dG8gdGhlIHJpZ2h0L2JvdHRvbSBlZGdlCitvZiBhIGRpc3BsYXksIHdvcmthcmVhIG9yIHBh cmVudCBmcmFtZSBhcyB3ZWxsIGFzIGZsb2F0aW5nLXBvaW50IG9mZnNldHMKK2FyZSBzdG9y ZWQgaW50ZXJuYWxseSBhcyBpbnRlZ2VyIG9mZnNldHMgcmVsYXRpdmUgdG8gdGhlIGxlZnQv dG9wIGVkZ2UKK29mIHRoZSBkaXNwbGF5LCB3b3JrYXJlYSBvciBwYXJlbnQgZnJhbWUgZWRn ZS4gIFRoZXkgYXJlIGFsc28gcmV0dXJuZWQKK2FzIHN1Y2ggYnkgZnVuY3Rpb25zIGxpa2Ug QGNvZGV7ZnJhbWUtcGFyYW1ldGVyc30gYW5kIHJlc3RvcmVkIGFzIHN1Y2gKK2J5IHRoZSBk ZXNrdG9wIHNhdmluZyByb3V0aW5lcy4KCiBAdmluZGV4IHRvcCwgYSBmcmFtZSBwYXJhbWV0 ZXIKIEBpdGVtIHRvcApAQCAtMTUyMywyNCArMTU2Nyw2MSBAQCBTaXplIFBhcmFtZXRlcnMK IEBzdWJzdWJzZWN0aW9uIFNpemUgUGFyYW1ldGVycwogQGNpbmRleCB3aW5kb3cgc2l6ZSBv biBkaXNwbGF5CgotICBGcmFtZSBwYXJhbWV0ZXJzIHNwZWNpZnkgZnJhbWUgc2l6ZXMgaW4g Y2hhcmFjdGVyIHVuaXRzLiAgT24KLWdyYXBoaWNhbCBkaXNwbGF5cywgdGhlIEBjb2Rle2Rl ZmF1bHR9IGZhY2UgZGV0ZXJtaW5lcyB0aGUgYWN0dWFsCi1waXhlbCBzaXplcyBvZiB0aGVz ZSBjaGFyYWN0ZXIgdW5pdHMgKEBweHJlZntGYWNlIEF0dHJpYnV0ZXN9KS4KK0ZyYW1lIHBh cmFtZXRlcnMgdXN1YWxseSBzcGVjaWZ5IGZyYW1lIHNpemVzIGluIGNoYXJhY3RlciB1bml0 cy4gIE9uCitncmFwaGljYWwgZGlzcGxheXMsIHRoZSBAY29kZXtkZWZhdWx0fSBmYWNlIGRl dGVybWluZXMgdGhlIGFjdHVhbCBwaXhlbAorc2l6ZXMgb2YgdGhlc2UgY2hhcmFjdGVyIHVu aXRzIChAcHhyZWZ7RmFjZSBBdHRyaWJ1dGVzfSkuCgogQHRhYmxlIEBjb2RlCiBAdmluZGV4 IHdpZHRoLCBhIGZyYW1lIHBhcmFtZXRlcgogQGl0ZW0gd2lkdGgKLVRoZSB3aWR0aCBvZiB0 aGUgZnJhbWUncyB0ZXh0IGFyZWEgKEBweHJlZntGcmFtZSBHZW9tZXRyeX0pLCBpbgotY2hh cmFjdGVycy4gIFRoZSB2YWx1ZSBjYW4gYmUgYWxzbyBhIGNvbnMgY2VsbCBvZiB0aGUgc3lt Ym9sCi1AY29kZXt0ZXh0LXBpeGVsc30gYW5kIGFuIGludGVnZXIgZGVub3RpbmcgdGhlIHdp ZHRoIG9mIHRoZSB0ZXh0IGFyZWEgaW4KLXBpeGVscy4KK1RoaXMgcGFyYW1ldGVyIHNwZWNp ZmllcyB0aGUgd2lkdGggb2YgdGhlIGZyYW1lLiAgSXQgY2FuIGJlIHNwZWNpZmllZCBhcwor aW4gdGhlIGZvbGxvd2luZyB3YXlzOgorCitAdGFibGUgQGFzaXMKK0BpdGVtIGFuIGludGVn ZXIKK0EgcG9zaXRpdmUgaW50ZWdlciBzcGVjaWZpZXMgdGhlIHdpZHRoIG9mIHRoZSBmcmFt ZSdzIHRleHQgYXJlYQorKEBweHJlZntGcmFtZSBHZW9tZXRyeX0pIGluIGNoYXJhY3RlcnMu CisKK0BpdGVtIGEgY29ucyBjZWxsCitJZiB0aGlzIGlzIGEgY29ucyBjZWxsIHdpdGggdGhl IHN5bWJvbCBAY29kZXt0ZXh0LXBpeGVsc30gaW4gaXRzCitAc2N7Y2FyfSwgdGhlIEBzY3tj ZHJ9IG9mIHRoYXQgY2VsbCBzcGVjaWZpZXMgdGhlIHdpZHRoIG9mIHRoZSBmcmFtZSdzCit0 ZXh0IGFyZWEgaW4gcGl4ZWxzLgorCitAY2luZGV4IGZyYW1lIHdpZHRoIHJhdGlvCitAY2lu ZGV4IGZyYW1lIGhlaWdodCByYXRpbworQGl0ZW0gYSBmbG9hdGluZy1wb2ludCB2YWx1ZQor QSBmbG9hdGluZy1wb2ludCBudW1iZXIgYmV0d2VlbiAwLjAgYW5kIDEuMCBjYW4gYmUgdXNl ZCB0byBzcGVjaWZ5IHRoZQord2lkdGggb2YgYSBmcmFtZSB2aWEgaXRzIEBkZm57d2lkdGgg cmF0aW99LS0tdGhlIHJhdGlvIG9mIGl0cyBvdXRlcgord2lkdGggKEBweHJlZntGcmFtZSBH ZW9tZXRyeX0pIHRvIHRoZSB3aWR0aCBvZiB0aGUgZnJhbWUncyB3b3JrYXJlYQorKEBweHJl ZntNdWx0aXBsZSBUZXJtaW5hbHN9KSBvciBpdHMgcGFyZW50IGZyYW1lJ3MgKEBweHJlZntD aGlsZAorRnJhbWVzfSkgbmF0aXZlIGZyYW1lLiAgVGh1cywgYSB2YWx1ZSBvZiAwLjUgbWFr ZXMgdGhlIGZyYW1lIG9jY3VweSBoYWxmCitvZiB0aGUgd2lkdGggb2YgaXRzIHdvcmthcmVh IG9yIHBhcmVudCBmcmFtZSwgYSB2YWx1ZSBvZiAxLjAgdGhlIGZ1bGwKK3dpZHRoLiAgU2lt aWxhcmx5LCB0aGUgQGRmbntoZWlnaHQgcmF0aW99IG9mIGEgZnJhbWUgaXMgdGhlIHJhdGlv IG9mIGl0cworb3V0ZXIgaGVpZ2h0IHRvIHRoZSBoZWlnaHQgb2YgaXRzIHdvcmthcmVhIG9y IGl0cyBwYXJlbnQncyBuYXRpdmUgZnJhbWUuCisKK0VtYWNzIHdpbGwgdHJ5IHRvIGtlZXAg dGhlIHdpZHRoIGFuZCBoZWlnaHQgcmF0aW8gb2YgYSBjaGlsZCBmcmFtZQordW5hbHRlcmVk IGlmIHRoYXQgZnJhbWUgaGFzIGEgbm9uLUBjb2Rle25pbH0gQGNvZGV7a2VlcC1yYXRpb30g cGFyYW1ldGVyCisoQHB4cmVme0ZyYW1lIEludGVyYWN0aW9uIFBhcmFtZXRlcnN9KSBhbmQg aXRzIHBhcmVudCBmcmFtZSBpcyByZXNpemVkLgorCitTaW5jZSB0aGUgb3V0ZXIgc2l6ZSBv ZiBhIGZyYW1lIGlzIHVzdWFsbHkgdW5hdmFpbGFibGUgYmVmb3JlIGEgZnJhbWUKK2hhcyBi ZWVuIG1hZGUgdmlzaWJsZSwgaXQgaXMgZ2VuZXJhbGx5IG5vdCBhZHZpc2FibGUgdG8gdXNl CitmbG9hdGluZy1wb2ludCB2YWx1ZXMgd2hlbiBjcmVhdGluZyBkZWNvcmF0ZWQgZnJhbWVz LiAgRmxvYXRpbmctcG9pbnQKK3ZhbHVlcyBhcmUgbW9yZSBzdWl0ZWQgdG8gZW5zdXJlIHRo YXQgYSBjaGlsZCBmcmFtZSBhbHdheXMgZml0cyB3aXRoaW4KK3RoZSBhcmVhIG9mIGl0cyBw YXJlbnQgZnJhbWUgYXMsIGZvciBleGFtcGxlLCB3aGVuIGN1c3RvbWl6aW5nCitAY29kZXtk aXNwbGF5LWJ1ZmZlci1hbGlzdH0gKEBweHJlZntDaG9vc2luZyBXaW5kb3d9KSB2aWEKK0Bj b2Rle2Rpc3BsYXktYnVmZmVyLWluLWNoaWxkLWZyYW1lfS4KK0BlbmQgdGFibGUKKworUmVn YXJkbGVzcyBvZiBob3cgdGhpcyBwYXJhbWV0ZXIgd2FzIHNwZWNpZmllZCwgZnVuY3Rpb25z IHJlcG9ydGluZyB0aGUKK3ZhbHVlIG9mIHRoaXMgcGFyYW1ldGVyIGxpa2UgQGNvZGV7ZnJh bWUtcGFyYW1ldGVyc30gYWx3YXlzIHJlcG9ydCB0aGUKK3dpZHRoIG9mIHRoZSBmcmFtZSdz IHRleHQgYXJlYSBpbiBjaGFyYWN0ZXJzIGFzIGFuIGludGVnZXIgcm91bmRlZCwgaWYKK25l Y2Vzc2FyeSwgdG8gYSBtdWx0aXBsZSBvZiB0aGUgZnJhbWUncyBkZWZhdWx0IGNoYXJhY3Rl ciB3aWR0aC4gIFRoYXQKK3ZhbHVlIGlzIGFsc28gdXNlZCBieSB0aGUgZGVza3RvcCBzYXZp bmcgcm91dGluZXMuCgogQHZpbmRleCBoZWlnaHQsIGEgZnJhbWUgcGFyYW1ldGVyCiBAaXRl bSBoZWlnaHQKLVRoZSBoZWlnaHQgb2YgdGhlIGZyYW1lJ3MgdGV4dCBhcmVhIChAcHhyZWZ7 RnJhbWUgR2VvbWV0cnl9KSwgaW4KLWNoYXJhY3RlcnMuICBUaGUgdmFsdWUgY2FuIGJlIGFs c28gYSBjb25zIGNlbGwgb2YgdGhlIHN5bWJvbAotQGNvZGV7dGV4dC1waXhlbHN9IGFuZCBh biBpbnRlZ2VyIGRlbm90aW5nIHRoZSBoZWlnaHQgb2YgdGhlIHRleHQgYXJlYQotaW4gcGl4 ZWxzLgorVGhpcyBwYXJhbWV0ZXIgc3BlY2lmaWVzIHRoZSBoZWlnaHQgb2YgdGhlIGZyYW1l LiAgSXQgd29ya3MganVzdCBsaWtlCitAY29kZXt3aWR0aH0sIGV4Y2VwdCB2ZXJ0aWNhbGx5 IGluc3RlYWQgb2YgaG9yaXpvbnRhbGx5LgoKIEB2aW5kZXggdXNlci1zaXplLCBhIGZyYW1l IHBhcmFtZXRlcgogQGl0ZW0gdXNlci1zaXplCkBAIC0xNTUxLDI1ICsxNjMyLDI1IEBAIFNp emUgUGFyYW1ldGVycwoKIEB2aW5kZXggbWluLXdpZHRoLCBhIGZyYW1lIHBhcmFtZXRlcgog QGl0ZW0gbWluLXdpZHRoCi1UaGlzIHBhcmFtZXRlciBzcGVjaWZpZXMgdGhlIG1pbmltdW0g bmF0aXZlIHdpZHRoIG9mIHRoZSBmcmFtZQotKEBweHJlZntGcmFtZSBHZW9tZXRyeX0pLCBp biBjaGFyYWN0ZXJzLiAgTm9ybWFsbHksIHRoZSBmdW5jdGlvbnMgdGhhdAorVGhpcyBwYXJh bWV0ZXIgc3BlY2lmaWVzIHRoZSBtaW5pbXVtIG5hdGl2ZSB3aWR0aCAoQHB4cmVme0ZyYW1l CitHZW9tZXRyeX0pIG9mIHRoZSBmcmFtZSwgaW4gY2hhcmFjdGVycy4gIE5vcm1hbGx5LCB0 aGUgZnVuY3Rpb25zIHRoYXQKIGVzdGFibGlzaCBhIGZyYW1lJ3MgaW5pdGlhbCB3aWR0aCBv ciByZXNpemUgYSBmcmFtZSBob3Jpem9udGFsbHkgbWFrZQogc3VyZSB0aGF0IGFsbCB0aGUg ZnJhbWUncyB3aW5kb3dzLCB2ZXJ0aWNhbCBzY3JvbGwgYmFycywgZnJpbmdlcywKIG1hcmdp bnMgYW5kIHZlcnRpY2FsIGRpdmlkZXJzIGNhbiBiZSBkaXNwbGF5ZWQuICBUaGlzIHBhcmFt ZXRlciwgaWYKIG5vbi1AY29kZXtuaWx9IGFsbG93cyB0byBtYWtlIGEgZnJhbWUgbmFycm93 ZXIgdGhhbiB0aGF0IHdpdGggdGhlCi1jb25zZXF1ZW5jZSB0aGF0IGFueSBjb21wb25lbnRz IHRoYXQgZG8gbm90IGZpdCBvbiB0aGUgZnJhbWUgd2lsbCBiZQotY2xpcHBlZCBieSB0aGUg d2luZG93IG1hbmFnZXIuCitjb25zZXF1ZW5jZSB0aGF0IGFueSBjb21wb25lbnRzIHRoYXQg ZG8gbm90IGZpdCB3aWxsIGJlIGNsaXBwZWQgYnkgdGhlCit3aW5kb3cgbWFuYWdlci4KCiBA dmluZGV4IG1pbi1oZWlnaHQsIGEgZnJhbWUgcGFyYW1ldGVyCiBAaXRlbSBtaW4taGVpZ2h0 Ci1UaGlzIHBhcmFtZXRlciBzcGVjaWZpZXMgdGhlIG1pbmltdW0gaGVpZ2h0IG9mIHRoZSBu YXRpdmUgKEBweHJlZntGcmFtZQotR2VvbWV0cnl9KSwgaW4gY2hhcmFjdGVycy4gIE5vcm1h bGx5LCB0aGUgZnVuY3Rpb25zIHRoYXQgZXN0YWJsaXNoIGEKLWZyYW1lJ3MgaW5pdGlhbCBz aXplIG9yIHJlc2l6ZSBhIGZyYW1lIG1ha2Ugc3VyZSB0aGF0IGFsbCB0aGUgZnJhbWUncwot d2luZG93cywgaG9yaXpvbnRhbCBzY3JvbGwgYmFycyBhbmQgZGl2aWRlcnMsIG1vZGUgYW5k IGhlYWRlciBsaW5lcywgdGhlCi1lY2hvIGFyZWEgYW5kIHRoZSBpbnRlcm5hbCBtZW51IGFu ZCB0b29sIGJhciBjYW4gYmUgZGlzcGxheWVkLiAgVGhpcwotcGFyYW1ldGVyLCBpZiBub24t QGNvZGV7bmlsfSBhbGxvd3MgdG8gbWFrZSBhIGZyYW1lIHNtYWxsZXIgdGhhbiB0aGF0Ci13 aXRoIHRoZSBjb25zZXF1ZW5jZSB0aGF0IGFueSBjb21wb25lbnRzIHRoYXQgZG8gbm90IGZp dCBvbiB0aGUgZnJhbWUKLXdpbGwgYmUgY2xpcHBlZCBieSB0aGUgd2luZG93LXN5c3RlbSBv ciB3aW5kb3cgbWFuYWdlci4KK1RoaXMgcGFyYW1ldGVyIHNwZWNpZmllcyB0aGUgbWluaW11 bSBuYXRpdmUgaGVpZ2h0IChAcHhyZWZ7RnJhbWUKK0dlb21ldHJ5fSkgb2YgdGhlIGZyYW1l LCBpbiBjaGFyYWN0ZXJzLiAgTm9ybWFsbHksIHRoZSBmdW5jdGlvbnMgdGhhdAorZXN0YWJs aXNoIGEgZnJhbWUncyBpbml0aWFsIHNpemUgb3IgcmVzaXplIGEgZnJhbWUgbWFrZSBzdXJl IHRoYXQgYWxsCit0aGUgZnJhbWUncyB3aW5kb3dzLCBob3Jpem9udGFsIHNjcm9sbCBiYXJz IGFuZCBkaXZpZGVycywgbW9kZSBhbmQKK2hlYWRlciBsaW5lcywgdGhlIGVjaG8gYXJlYSBh bmQgdGhlIGludGVybmFsIG1lbnUgYW5kIHRvb2wgYmFyIGNhbiBiZQorZGlzcGxheWVkLiAg VGhpcyBwYXJhbWV0ZXIsIGlmIG5vbi1AY29kZXtuaWx9IGFsbG93cyB0byBtYWtlIGEgZnJh bWUKK3NtYWxsZXIgdGhhbiB0aGF0IHdpdGggdGhlIGNvbnNlcXVlbmNlIHRoYXQgYW55IGNv bXBvbmVudHMgdGhhdCBkbyBub3QKK2ZpdCB3aWxsIGJlIGNsaXBwZWQgYnkgdGhlIHdpbmRv dyBtYW5hZ2VyLgoKIEBjaW5kZXggZnVsbGJvdGggZnJhbWVzCiBAY2luZGV4IGZ1bGxoZWln aHQgZnJhbWVzCkBAIC0xNjIzLDYgKzE3MDQsMjAgQEAgU2l6ZSBQYXJhbWV0ZXJzCgogVGhp cyB3aWxsIGdpdmUgYSBuZXcgZnJhbWUgZnVsbCBoZWlnaHQgYWZ0ZXIgdHlwaW5nIGluIGl0 IEBrZXl7RjExfSBmb3IKIHRoZSBmaXJzdCB0aW1lLgorCitAdmluZGV4IGZpdC1mcmFtZS10 by1idWZmZXItbWFyZ2lucywgYSBmcmFtZSBwYXJhbWV0ZXIKK0BpdGVtIGZpdC1mcmFtZS10 by1idWZmZXItbWFyZ2lucworVGhpcyBwYXJhbWV0ZXIgYWxsb3dzIHRvIG92ZXJyaWRlIHRo ZSB2YWx1ZSBvZiB0aGUgb3B0aW9uCitAY29kZXtmaXQtZnJhbWUtdG8tYnVmZmVyLW1hcmdp bnN9IHdoZW4gZml0dGluZyB0aGlzIGZyYW1lIHRvIHRoZSBidWZmZXIKK29mIGl0cyByb290 IHdpbmRvdyB3aXRoIEBjb2Rle2ZpdC1mcmFtZS10by1idWZmZXJ9IChAcHhyZWZ7UmVzaXpp bmcKK1dpbmRvd3N9KS4KKworQHZpbmRleCBmaXQtZnJhbWUtdG8tYnVmZmVyLXNpemVzLCBh IGZyYW1lIHBhcmFtZXRlcgorQGl0ZW0gZml0LWZyYW1lLXRvLWJ1ZmZlci1zaXplcworVGhp cyBwYXJhbWV0ZXIgYWxsb3dzIHRvIG92ZXJyaWRlIHRoZSB2YWx1ZSBvZiB0aGUgb3B0aW9u CitAY29kZXtmaXQtZnJhbWUtdG8tYnVmZmVyLXNpemVzfSB3aGVuIGZpdHRpbmcgdGhpcyBm cmFtZSB0byB0aGUgYnVmZmVyCitvZiBpdHMgcm9vdCB3aW5kb3cgd2l0aCBAY29kZXtmaXQt ZnJhbWUtdG8tYnVmZmVyfSAoQHB4cmVme1Jlc2l6aW5nCitXaW5kb3dzfSkuCiBAZW5kIHRh YmxlCgoKQEAgLTE2NDYsOSArMTc0MSw5IEBAIExheW91dCBQYXJhbWV0ZXJzCgogQHZpbmRl eCB2ZXJ0aWNhbC1zY3JvbGwtYmFycywgYSBmcmFtZSBwYXJhbWV0ZXIKIEBpdGVtIHZlcnRp Y2FsLXNjcm9sbC1iYXJzCi1XaGV0aGVyIHRoZSBmcmFtZSBoYXMgc2Nyb2xsIGJhcnMgZm9y IHZlcnRpY2FsIHNjcm9sbGluZywgYW5kIHdoaWNoIHNpZGUKLW9mIHRoZSBmcmFtZSB0aGV5 IHNob3VsZCBiZSBvbi4gIFRoZSBwb3NzaWJsZSB2YWx1ZXMgYXJlIEBjb2Rle2xlZnR9LAot QGNvZGV7cmlnaHR9LCBhbmQgQGNvZGV7bmlsfSBmb3Igbm8gc2Nyb2xsIGJhcnMuCitXaGV0 aGVyIHRoZSBmcmFtZSBoYXMgc2Nyb2xsIGJhcnMgKEBweHJlZntTY3JvbGwgQmFyc30pIGZv ciB2ZXJ0aWNhbAorc2Nyb2xsaW5nLCBhbmQgd2hpY2ggc2lkZSBvZiB0aGUgZnJhbWUgdGhl eSBzaG91bGQgYmUgb24uICBUaGUgcG9zc2libGUKK3ZhbHVlcyBhcmUgQGNvZGV7bGVmdH0s IEBjb2Rle3JpZ2h0fSwgYW5kIEBjb2Rle25pbH0gZm9yIG5vIHNjcm9sbCBiYXJzLgoKIEB2 aW5kZXggaG9yaXpvbnRhbC1zY3JvbGwtYmFycywgYSBmcmFtZSBwYXJhbWV0ZXIKIEBpdGVt IGhvcml6b250YWwtc2Nyb2xsLWJhcnMKQEAgLTE2OTIsMzAgKzE3ODcsNDAgQEAgTGF5b3V0 IFBhcmFtZXRlcnMKCiBAdmluZGV4IG1lbnUtYmFyLWxpbmVzIGZyYW1lIHBhcmFtZXRlcgog QGl0ZW0gbWVudS1iYXItbGluZXMKLVRoZSBudW1iZXIgb2YgbGluZXMgdG8gYWxsb2NhdGUg YXQgdGhlIHRvcCBvZiB0aGUgZnJhbWUgZm9yIGEgbWVudSBiYXIuCi1UaGUgZGVmYXVsdCBp cyBvbmUgaWYgTWVudSBCYXIgbW9kZSBpcyBlbmFibGVkIGFuZCB6ZXJvIG90aGVyd2lzZS4K LUB4cmVme01lbnUgQmFycywsLGVtYWNzLCBUaGUgR05VIEVtYWNzIE1hbnVhbH0uICBGb3Ig YW4gZXh0ZXJuYWwgbWVudQotYmFyLCB0aGlzIHZhbHVlIHJlbWFpbnMgdW5jaGFuZ2VkIGV2 ZW4gd2hlbiB0aGUgbWVudSBiYXIgd3JhcHMgdG8gdHdvIG9yCi1tb3JlIGxpbmVzLiAgSW4g dGhhdCBjYXNlLCB0aGUgQGNvZGV7bWVudS1iYXItc2l6ZX0gdmFsdWUgcmV0dXJuZWQgYnkK LUBjb2Rle2ZyYW1lLWdlb21ldHJ5fSAoQHB4cmVme0ZyYW1lIEdlb21ldHJ5fSkgYWxsb3dz IHRvIGRlcml2ZSB3aGV0aGVyCi10aGUgbWVudSBiYXIgYWN0dWFsbHkgb2NjdXBpZXMgb25l IG9yIG1vcmUgbGluZXMuCitUaGUgbnVtYmVyIG9mIGxpbmVzIHRvIGFsbG9jYXRlIGF0IHRo ZSB0b3Agb2YgdGhlIGZyYW1lIGZvciBhIG1lbnUgYmFyCisoQHB4cmVme01lbnUgQmFyfSku ICBUaGUgZGVmYXVsdCBpcyBvbmUgaWYgTWVudSBCYXIgbW9kZSBpcyBlbmFibGVkIGFuZAor emVybyBvdGhlcndpc2UuICBAeHJlZntNZW51IEJhcnMsLCxlbWFjcywgVGhlIEdOVSBFbWFj cyBNYW51YWx9LiAgRm9yIGFuCitleHRlcm5hbCBtZW51IGJhciAoQHB4cmVme0ZyYW1lIExh eW91dH0pLCB0aGlzIHZhbHVlIHJlbWFpbnMgdW5jaGFuZ2VkCitldmVuIHdoZW4gdGhlIG1l bnUgYmFyIHdyYXBzIHRvIHR3byBvciBtb3JlIGxpbmVzLiAgSW4gdGhhdCBjYXNlLCB0aGUK K0Bjb2Rle21lbnUtYmFyLXNpemV9IHZhbHVlIHJldHVybmVkIGJ5IEBjb2Rle2ZyYW1lLWdl b21ldHJ5fQorKEBweHJlZntGcmFtZSBHZW9tZXRyeX0pIGFsbG93cyB0byBkZXJpdmUgd2hl dGhlciB0aGUgbWVudSBiYXIgYWN0dWFsbHkKK29jY3VwaWVzIG9uZSBvciBtb3JlIGxpbmVz LgoKIEB2aW5kZXggdG9vbC1iYXItbGluZXMgZnJhbWUgcGFyYW1ldGVyCiBAaXRlbSB0b29s LWJhci1saW5lcwotVGhlIG51bWJlciBvZiBsaW5lcyB0byB1c2UgZm9yIHRoZSB0b29sIGJh ci4gIFRoZSBkZWZhdWx0IGlzIG9uZSBpZiBUb29sCi1CYXIgbW9kZSBpcyBlbmFibGVkIGFu ZCB6ZXJvIG90aGVyd2lzZS4gIEB4cmVme1Rvb2wgQmFycywsLGVtYWNzLCBUaGUKLUdOVSBF bWFjcyBNYW51YWx9LiAgVGhpcyB2YWx1ZSBtYXkgY2hhbmdlIHdoZW5ldmVyIHRoZSB0b29s IGJhciB3cmFwcy4KK1RoZSBudW1iZXIgb2YgbGluZXMgdG8gdXNlIGZvciB0aGUgdG9vbCBi YXIgKEBweHJlZntUb29sIEJhcn0pLiAgVGhlCitkZWZhdWx0IGlzIG9uZSBpZiBUb29sIEJh ciBtb2RlIGlzIGVuYWJsZWQgYW5kIHplcm8gb3RoZXJ3aXNlLgorQHhyZWZ7VG9vbCBCYXJz LCwsZW1hY3MsIFRoZSBHTlUgRW1hY3MgTWFudWFsfS4gIFRoaXMgdmFsdWUgbWF5IGNoYW5n ZQord2hlbmV2ZXIgdGhlIHRvb2wgYmFyIHdyYXBzIChAcHhyZWZ7RnJhbWUgTGF5b3V0fSku CgogQHZpbmRleCB0b29sLWJhci1wb3NpdGlvbiBmcmFtZSBwYXJhbWV0ZXIKIEBpdGVtIHRv b2wtYmFyLXBvc2l0aW9uCi1UaGUgcG9zaXRpb24gb2YgdGhlIHRvb2wgYmFyLiAgQ3VycmVu dGx5IG9ubHkgZm9yIHRoZSBHVEsgdG9vbCBiYXIuCi1WYWx1ZSBjYW4gYmUgb25lIG9mIEBj b2Rle3RvcH0sIEBjb2Rle2JvdHRvbX0gQGNvZGV7bGVmdH0sIEBjb2Rle3JpZ2h0fS4KLVRo ZSBkZWZhdWx0IGlzIEBjb2Rle3RvcH0uCitUaGUgcG9zaXRpb24gb2YgdGhlIHRvb2wgYmFy IHdoZW4gRW1hY3Mgd2FzIGJ1aWx0IHdpdGggR1RLKy4gIEl0cyB2YWx1ZQorY2FuIGJlIG9u ZSBvZiBAY29kZXt0b3B9LCBAY29kZXtib3R0b219IEBjb2Rle2xlZnR9LCBAY29kZXtyaWdo dH0uICBUaGUKK2RlZmF1bHQgaXMgQGNvZGV7dG9wfS4KCiBAdmluZGV4IGxpbmUtc3BhY2lu ZywgYSBmcmFtZSBwYXJhbWV0ZXIKIEBpdGVtIGxpbmUtc3BhY2luZwogQWRkaXRpb25hbCBz cGFjZSB0byBsZWF2ZSBiZWxvdyBlYWNoIHRleHQgbGluZSwgaW4gcGl4ZWxzIChhIHBvc2l0 aXZlCiBpbnRlZ2VyKS4gIEB4cmVme0xpbmUgSGVpZ2h0fSwgZm9yIG1vcmUgaW5mb3JtYXRp b24uCisKK0B2aW5kZXggbm8tc3BlY2lhbC1nbHlwaHMsIGEgZnJhbWUgcGFyYW1ldGVyCitA aXRlbSBuby1zcGVjaWFsLWdseXBocworSWYgdGhpcyBpcyBub24tQGNvZGV7bmlsfSwgaXQg c3VwcHJlc3NlcyB0aGUgZGlzcGxheSBvZiBhbnkgdHJ1bmNhdGlvbgorYW5kIGNvbnRpbnVh dGlvbiBnbHlwaHMgKEBweHJlZntUcnVuY2F0aW9ufSkgZm9yIGFsbCBidWZmZXJzIGRpc3Bs YXllZAorYnkgdGhpcyBmcmFtZS4gIFRoaXMgaXMgdXNlZnVsIHRvIGVsaW1pbmF0ZSBzdWNo IGdseXBocyB3aGVuIGZpdHRpbmcgYQorZnJhbWUgdG8gaXRzIGJ1ZmZlciB2aWEgQGNvZGV7 Zml0LWZyYW1lLXRvLWJ1ZmZlcn0gKEBweHJlZntSZXNpemluZworV2luZG93c30pLgogQGVu ZCB0YWJsZQoKCkBAIC0xNzgxLDE1ICsxODg2LDExNSBAQCBGcmFtZSBJbnRlcmFjdGlvbiBQ YXJhbWV0ZXJzCiBAaXRlbSBtb3VzZS13aGVlbC1mcmFtZQogSWYgbm9uLUBjb2Rle25pbH0s IHRoaXMgcGFyYW1ldGVyIHNwZWNpZmllcyB0aGUgZnJhbWUgd2hvc2Ugd2luZG93cyB3aWxs CiBiZSBzY3JvbGxlZCB3aGVuZXZlciB0aGUgbW91c2Ugd2hlZWwgaXMgc2Nyb2xsZWQgd2l0 aCB0aGUgbW91c2UgcG9pbnRlcgotaG92ZXJpbmcgb3ZlciB0aGlzIGZyYW1lIChAcHhyZWZ7 TW91c2UgQ29tbWFuZHMsLCwgZW1hY3MsIFRoZSBHTlUgRW1hY3MKLU1hbnVhbH0pLgoraG92 ZXJpbmcgb3ZlciB0aGlzIGZyYW1lLCBzZWUgQHJlZntNb3VzZSBDb21tYW5kcywsLCBlbWFj cywgVGhlIEdOVQorRW1hY3MgTWFudWFsfS4KCiBAdmluZGV4IG5vLW90aGVyLWZyYW1lLCBh IGZyYW1lIHBhcmFtZXRlcgogQGl0ZW0gbm8tb3RoZXItZnJhbWUKIElmIHRoaXMgaXMgbm9u LUBjb2Rle25pbH0sIHRoZW4gdGhpcyBmcmFtZSBpcyBub3QgZWxpZ2libGUgYXMgY2FuZGlk YXRlCiBmb3IgdGhlIGZ1bmN0aW9ucyBAY29kZXtuZXh0LWZyYW1lfSwgQGNvZGV7cHJldmlv dXMtZnJhbWV9Ci0oQHB4cmVme0ZpbmRpbmcgQWxsIEZyYW1lc30pIGFuZCBAY29kZXtvdGhl ci1mcmFtZX0gKEBweHJlZntGcmFtZQotQ29tbWFuZHMsLCwgZW1hY3MsIFRoZSBHTlUgRW1h Y3MgTWFudWFsfSkuCisoQHB4cmVme0ZpbmRpbmcgQWxsIEZyYW1lc30pIGFuZCBAY29kZXtv dGhlci1mcmFtZX0sIHNlZSBAcmVme0ZyYW1lCitDb21tYW5kcywsLCBlbWFjcywgVGhlIEdO VSBFbWFjcyBNYW51YWx9LgorCitAdmluZGV4IGF1dG8taGlkZS1mdW5jdGlvbiwgYSBmcmFt ZSBwYXJhbWV0ZXIKK0BpdGVtIGF1dG8taGlkZS1mdW5jdGlvbgorV2hlbiB0aGlzIHBhcmFt ZXRlciBzcGVjaWZpZXMgYSBmdW5jdGlvbiwgdGhhdCBmdW5jdGlvbiB3aWxsIGJlIGNhbGxl ZAoraW5zdGVhZCBvZiB0aGUgZnVuY3Rpb24gc3BlY2lmaWVkIGJ5IHRoZSB2YXJpYWJsZQor QGNvZGV7ZnJhbWUtYXV0by1oaWRlLWZ1bmN0aW9ufSB3aGVuIHF1aXR0aW5nIHRoZSBmcmFt ZSdzIG9ubHkgd2luZG93CisoQHB4cmVme1F1aXR0aW5nIFdpbmRvd3N9KSBhbmQgdGhlcmUg YXJlIG90aGVyIGZyYW1lcyBsZWZ0LgorCitAdmluZGV4IG1pbmlidWZmZXItZXhpdCwgYSBm cmFtZSBwYXJhbWV0ZXIKK0BpdGVtIG1pbmlidWZmZXItZXhpdAorV2hlbiB0aGlzIHBhcmFt ZXRlciBpcyBub24tQGNvZGV7bmlsfSwgRW1hY3Mgd2lsbCBieSBkZWZhdWx0IG1ha2UgdGhp cworZnJhbWUgaW52aXNpYmxlIHdoZW5ldmVyIHRoZSBtaW5pYnVmZmVyIChAcHhyZWZ7TWlu aWJ1ZmZlcnN9KSBpcyBleGl0ZWQuCitBbHRlcm5hdGl2ZWx5LCBpdCBjYW4gc3BlY2lmeSB0 aGUgZnVuY3Rpb25zIEBjb2Rle2ljb25pZnktZnJhbWV9IGFuZAorQGNvZGV7ZGVsZXRlLWZy YW1lfS4gIFRoaXMgcGFyYW1ldGVyIGlzIHVzZWZ1bCB0byBtYWtlIGEgY2hpbGQgZnJhbWUK K2Rpc2FwcGVhciBhdXRvbWF0aWNhbGx5IChzaW1pbGFyIHRvIGhvdyBFbWFjcyBkZWFscyB3 aXRoIGEgd2luZG93KSB3aGVuCitleGl0aW5nIHRoZSBtaW5pYnVmZmVyLgorCitAdmluZGV4 IGtlZXAtcmF0aW8sIGEgZnJhbWUgcGFyYW1ldGVyCitAaXRlbSBrZWVwLXJhdGlvCitUaGlz IHBhcmFtZXRlciBpcyBjdXJyZW50bHkgbWVhbmluZ2Z1bCBmb3IgY2hpbGQgZnJhbWVzIChA cHhyZWZ7Q2hpbGQKK0ZyYW1lc30pIG9ubHkuICBJZiBpdCBpcyBub24tQGNvZGV7bmlsfSwg dGhlbiBFbWFjcyB3aWxsIHRyeSB0byBrZWVwIHRoZQorZnJhbWUncyBzaXplICh3aWR0aCBh bmQgaGVpZ2h0KSByYXRpb3MgKEBweHJlZntTaXplIFBhcmFtZXRlcnN9KSBhcyB3ZWxsCith cyBpdHMgbGVmdCBhbmQgcmlnaHQgcG9zaXRpb24gcmF0aW9zIChAcHhyZWZ7UG9zaXRpb24g UGFyYW1ldGVyc30pCit1bmFsdGVyZWQgd2hlbmV2ZXIgaXRzIHBhcmVudCBmcmFtZSBpcyBy ZXNpemVkLgorCitJZiB0aGUgdmFsdWUgb2YgdGhpcyBwYXJhbWV0ZXIgaXMgQGNvZGV7bmls fSwgdGhlIGZyYW1lJ3MgcG9zaXRpb24gYW5kCitzaXplIHJlbWFpbiB1bmFsdGVyZWQgd2hl biB0aGUgcGFyZW50IGZyYW1lIGlzIHJlc2l6ZWQsIHNvIHRoZSBwb3NpdGlvbgorYW5kIHNp emUgcmF0aW9zIG1heSBjaGFuZ2UuICBJZiB0aGUgdmFsdWUgb2YgdGhpcyBwYXJhbWV0ZXIg aXMgQGNvZGV7dH0sCitFbWFjcyB3aWxsIHRyeSB0byBwcmVzZXJ2ZSB0aGUgZnJhbWUncyBz aXplIGFuZCBwb3NpdGlvbiByYXRpb3MsIGhlbmNlCit0aGUgZnJhbWUncyBzaXplIGFuZCBw b3NpdGlvbiByZWxhdGl2ZSB0byBpdHMgcGFyZW50IGZyYW1lIG1heSBjaGFuZ2UuCisKK01v cmUgaW5kaXZpZHVhbCBjb250cm9sIGlzIHBvc3NpYmxlIGJ5IHVzaW5nIGEgY29ucyBjZWxs OiBJbiB0aGF0IGNhc2UKK3RoZSBmcmFtZSdzIHdpZHRoIHJhdGlvIGlzIHByZXNlcnZlZCBp ZiB0aGUgQHNje2Nhcn0gb2YgdGhlIGNlbGwgaXMKK2VpdGhlciBAY29kZXt0fSBvciBAY29k ZXt3aWR0aC1vbmx5fS4gIFRoZSBoZWlnaHQgcmF0aW8gaXMgcHJlc2VydmVkIGlmCit0aGUg QHNje2Nhcn0gb2YgdGhlIGNlbGwgaXMgZWl0aGVyIEBjb2Rle3R9IG9yIEBjb2Rle2hlaWdo dC1vbmx5fS4gIFRoZQorbGVmdCBwb3NpdGlvbiByYXRpbyBpcyBwcmVzZXJ2ZWQgaWYgdGhl IEBzY3tjZHJ9IG9mIHRoZSBjZWxsIGlzIGVpdGhlcgorQGNvZGV7dH0gb3IgQGNvZGV7bGVm dC1vbmx5fS4gIFRoZSB0b3AgcG9zaXRpb24gcmF0aW8gaXMgcHJlc2VydmVkIGlmCit0aGUg QHNje2Nkcn0gb2YgdGhlIGNlbGwgaXMgZWl0aGVyIEBjb2Rle3R9IG9yIEBjb2Rle3RvcC1v bmx5fS4KK0BlbmQgdGFibGUKKworCitAbm9kZSBNb3VzZSBEcmFnZ2luZyBQYXJhbWV0ZXJz CitAc3Vic3Vic2VjdGlvbiBNb3VzZSBEcmFnZ2luZyBQYXJhbWV0ZXJzCitAY2luZGV4IG1v dXNlIGRyYWdnaW5nIHBhcmFtZXRlcnMKK0BjaW5kZXggcGFyYW1ldGVycyBmb3IgcmVzaXpp bmcgZnJhbWVzIHdpdGggdGhlIG1vdXNlCitAY2luZGV4IHBhcmFtZXRlcnMgZm9yIG1vdmlu ZyBmcmFtZXMgd2l0aCB0aGUgbW91c2UKKworVGhlIHBhcmFtZXRlcnMgZGVzY3JpYmVkIGJl bG93IHByb3ZpZGUgc3VwcG9ydCBmb3IgcmVzaXppbmcgYSBmcmFtZSBieQorZHJhZ2dpbmcg aXRzIGludGVybmFsIGJvcmRlcnMgd2l0aCB0aGUgbW91c2UuICBUaGV5IGFsc28gYWxsb3cg bW92aW5nIGEKK2ZyYW1lIHdpdGggdGhlIG1vdXNlIGJ5IGRyYWdnaW5nIHRoZSBoZWFkZXIg bGluZSBvZiBpdHMgdG9wbW9zdCBvciB0aGUKK21vZGUgbGluZSBvZiBpdHMgYm90dG9tbW9z dCB3aW5kb3cuCisKK1RoZXNlIHBhcmFtZXRlcnMgYXJlIG1vc3RseSB1c2VmdWwgZm9yIGNo aWxkIGZyYW1lcyAoQHB4cmVme0NoaWxkCitGcmFtZXN9KSB0aGF0IGNvbWUgd2l0aG91dCB3 aW5kb3cgbWFuYWdlciBkZWNvcmF0aW9ucy4gIElmIG5lY2Vzc2FyeSwKK3RoZXkgY2FuIGJl IHVzZWQgZm9yIHVuZGVjb3JhdGVkIHRvcC1sZXZlbCBmcmFtZXMgYXMgd2VsbC4KKworQHRh YmxlIEBjb2RlCitAdmluZGV4IGRyYWctaW50ZXJuYWwtYm9yZGVyLCBhIGZyYW1lIHBhcmFt ZXRlcgorQGl0ZW0gZHJhZy1pbnRlcm5hbC1ib3JkZXIKK0lmIG5vbi1AY29kZXtuaWx9LCB0 aGUgZnJhbWUgY2FuIGJlIHJlc2l6ZWQgYnkgZHJhZ2dpbmcgaXRzIGludGVybmFsCitib3Jk ZXJzLCBpZiBwcmVzZW50LCB3aXRoIHRoZSBtb3VzZS4KKworQHZpbmRleCBkcmFnLXdpdGgt aGVhZGVyLWxpbmUsIGEgZnJhbWUgcGFyYW1ldGVyCitAaXRlbSBkcmFnLXdpdGgtaGVhZGVy LWxpbmUKK0lmIG5vbi1AY29kZXtuaWx9LCB0aGUgZnJhbWUgY2FuIGJlIG1vdmVkIHdpdGgg dGhlIG1vdXNlIGJ5IGRyYWdnaW5nIHRoZQoraGVhZGVyIGxpbmUgb2YgaXRzIHRvcG1vc3Qg d2luZG93LgorCitAdmluZGV4IGRyYWctd2l0aC1tb2RlLWxpbmUsIGEgZnJhbWUgcGFyYW1l dGVyCitAaXRlbSBkcmFnLXdpdGgtbW9kZS1saW5lCitJZiBub24tQGNvZGV7bmlsfSwgdGhl IGZyYW1lIGNhbiBiZSBtb3ZlZCB3aXRoIHRoZSBtb3VzZSBieSBkcmFnZ2luZyB0aGUKK21v ZGUgbGluZSBvZiBpdHMgYm90dG9tbW9zdCB3aW5kb3cuICBOb3RlIHRoYXQgc3VjaCBhIGZy YW1lIGlzIG5vdAorYWxsb3dlZCB0byBoYXZlIGl0cyBvd24gbWluaWJ1ZmZlciB3aW5kb3cu CisKK0B2aW5kZXggc25hcC13aWR0aCwgYSBmcmFtZSBwYXJhbWV0ZXIKK0BpdGVtIHNuYXAt d2lkdGgKK0EgZnJhbWUgdGhhdCBpcyBtb3ZlZCB3aXRoIHRoZSBtb3VzZSB3aWxsIGBgc25h cCcnIGF0IHRoZSBib3JkZXIocykgb2YKK3RoZSBkaXNwbGF5IG9yIGl0cyBwYXJlbnQgZnJh bWUgd2hlbmV2ZXIgaXQgaXMgZHJhZ2dlZCBhcyBuZWFyIHRvIHN1Y2gKK2FuIGVkZ2UgYXMg dGhlIG51bWJlciBvZiBwaXhlbHMgc3BlY2lmaWVkIGJ5IHRoaXMgcGFyYW1ldGVyLgorCitA dmluZGV4IHRvcC12aXNpYmxlLCBhIGZyYW1lIHBhcmFtZXRlcgorQGl0ZW0gdG9wLXZpc2li bGUKK0lmIHRoaXMgcGFyYW1ldGVyIGlzIGEgbnVtYmVyLCB0aGUgdG9wIGVkZ2Ugb2YgdGhl IGZyYW1lIG5ldmVyIGFwcGVhcnMKK2Fib3ZlIHRoZSB0b3AgZWRnZSBvZiBpdHMgZGlzcGxh eSBvciBwYXJlbnQgZnJhbWUuICBNb3Jlb3ZlciwgYXMgbWFueQorcGl4ZWxzIG9mIHRoZSBm cmFtZSBhcyBzcGVjaWZpZWQgYnkgdGhhdCBudW1iZXIgd2lsbCByZW1haW4gdmlzaWJsZSB3 aGVuCit0aGUgZnJhbWUgaXMgbW92ZWQgYWdhaW5zdCBhbnkgb2YgdGhlIHJlbWFpbmluZyBl ZGdlcyBvZiBpdHMgZGlzcGxheSBvcgorcGFyZW50IGZyYW1lLiAgU2V0dGluZyB0aGlzIHBh cmFtZXRlciBpcyB1c2VmdWwgdG8gZ3VhcmQgYWdhaW5zdAorZHJhZ2dpbmcgYSBjaGlsZCBm cmFtZSB3aXRoIGEgbm9uLUBjb2Rle25pbH0KK0Bjb2Rle2RyYWctd2l0aC1oZWFkZXItbGlu ZX0gcGFyYW1ldGVyIGNvbXBsZXRlbHkgb3V0IG9mIHRoZSBhcmVhCitvZiBpdHMgcGFyZW50 IGZyYW1lLgorCitAdmluZGV4IGJvdHRvbS12aXNpYmxlLCBhIGZyYW1lIHBhcmFtZXRlcgor QGl0ZW0gYm90dG9tLXZpc2libGUKK0lmIHRoaXMgcGFyYW1ldGVyIGlzIGEgbnVtYmVyLCB0 aGUgYm90dG9tIGVkZ2Ugb2YgdGhlIGZyYW1lIG5ldmVyCithcHBlYXJzIGJlbG93IHRoZSBi b3R0b20gZWRnZSBvZiBpdHMgZGlzcGxheSBvciBwYXJlbnQgZnJhbWUuICBNb3Jlb3ZlciwK K2FzIG1hbnkgcGl4ZWxzIG9mIHRoZSBmcmFtZSBhcyBzcGVjaWZpZWQgYnkgdGhhdCBudW1i ZXIgd2lsbCByZW1haW4KK3Zpc2libGUgd2hlbiB0aGUgZnJhbWUgaXMgbW92ZWQgYWdhaW5z dCBhbnkgb2YgdGhlIHJlbWFpbmluZyBlZGdlcyBvZgoraXRzIGRpc3BsYXkgb3IgcGFyZW50 IGZyYW1lLiAgU2V0dGluZyB0aGlzIHBhcmFtZXRlciBpcyB1c2VmdWwgdG8gZ3VhcmQKK2Fn YWluc3QgZHJhZ2dpbmcgYSBjaGlsZCBmcmFtZSB3aXRoIGEgbm9uLUBjb2Rle25pbH0KK0Bj b2Rle2RyYWctd2l0aC1tb2RlLWxpbmV9IHBhcmFtZXRlciBjb21wbGV0ZWx5IG91dCBvZiB0 aGUgYXJlYSBvZgoraXRzIHBhcmVudCBmcmFtZS4KIEBlbmQgdGFibGUKCgpAQCAtMTc5Nyw5 ICsyMDAyLDkgQEAgTWFuYWdlbWVudCBQYXJhbWV0ZXJzCiBAc3Vic3Vic2VjdGlvbiBXaW5k b3cgTWFuYWdlbWVudCBQYXJhbWV0ZXJzCiBAY2luZGV4IHdpbmRvdyBtYW5hZ2VyIGludGVy YWN0aW9uLCBhbmQgZnJhbWUgcGFyYW1ldGVycwoKLSAgVGhlIGZvbGxvd2luZyBmcmFtZSBw YXJhbWV0ZXJzIGNvbnRyb2wgdmFyaW91cyBhc3BlY3RzIG9mIHRoZQotZnJhbWUncyBpbnRl cmFjdGlvbiB3aXRoIHRoZSB3aW5kb3cgbWFuYWdlci4gIFRoZXkgaGF2ZSBubyBlZmZlY3Qg b24KLXRleHQgdGVybWluYWxzLgorICBUaGUgZm9sbG93aW5nIGZyYW1lIHBhcmFtZXRlcnMg Y29udHJvbCB2YXJpb3VzIGFzcGVjdHMgb2YgdGhlIGZyYW1lJ3MKK2ludGVyYWN0aW9uIHdp dGggdGhlIHdpbmRvdyBtYW5hZ2VyIG9yIHdpbmRvdyBzeXN0ZW0uICBUaGV5IGhhdmUgbm8K K2VmZmVjdCBvbiB0ZXh0IHRlcm1pbmFscy4KCiBAdGFibGUgQGNvZGUKIEB2aW5kZXggdmlz aWJpbGl0eSwgYSBmcmFtZSBwYXJhbWV0ZXIKQEAgLTE5MDgsNyArMjExMyw4IEBAIE1hbmFn ZW1lbnQgUGFyYW1ldGVycwogZnJhbWUtLS1hIGZyYW1lIG5vdCBoYW5kbGVkIGJ5IHdpbmRv dyBtYW5hZ2VycyB1bmRlciBYLiAgT3ZlcnJpZGUKIHJlZGlyZWN0IGZyYW1lcyBoYXZlIG5v IHdpbmRvdyBtYW5hZ2VyIGRlY29yYXRpb25zLCBjYW4gYmUgcG9zaXRpb25lZAogYW5kIHJl c2l6ZWQgb25seSB2aWEgRW1hY3MnIHBvc2l0aW9uaW5nIGFuZCByZXNpemluZyBmdW5jdGlv bnMgYW5kIGFyZQotdXN1YWxseSBkcmF3biBvbiB0b3Agb2YgYWxsIG90aGVyIGZyYW1lcy4K K3VzdWFsbHkgZHJhd24gb24gdG9wIG9mIGFsbCBvdGhlciBmcmFtZXMuICBTZXR0aW5nIHRo aXMgcGFyYW1ldGVyIGhhcworbm8gZWZmZWN0IG9uIE1TLVdpbmRvd3MuCgogQGlnbm9yZQog QHZpbmRleCBwYXJlbnQtaWQsIGEgZnJhbWUgcGFyYW1ldGVyCkBAIC0yMDgwLDYgKzIyODYs OSBAQCBGb250IGFuZCBDb2xvciBQYXJhbWV0ZXJzCiBAY29kZXsoQHZhcnthY3RpdmV9IC4g QHZhcntpbmFjdGl2ZX0pfSwgd2hlcmUgQHZhcnthY3RpdmV9IGlzIHRoZQogb3BhY2l0eSBv ZiB0aGUgZnJhbWUgd2hlbiBpdCBpcyBzZWxlY3RlZCwgYW5kIEB2YXJ7aW5hY3RpdmV9IGlz IHRoZQogb3BhY2l0eSB3aGVuIGl0IGlzIG5vdCBzZWxlY3RlZC4KKworU29tZSB3aW5kb3cg c3lzdGVtcyBkbyBub3Qgc3VwcG9ydCB0aGUgQGNvZGV7YWxwaGF9IHBhcmFtZXRlciBmb3Ig Y2hpbGQKK2ZyYW1lcyAoQHB4cmVme0NoaWxkIEZyYW1lc30pLgogQGVuZCB0YWJsZQoKIFRo ZSBmb2xsb3dpbmcgZnJhbWUgcGFyYW1ldGVycyBhcmUgc2VtaS1vYnNvbGV0ZSBpbiB0aGF0 IHRoZXkgYXJlCkBAIC0yODI0LDU3ICszMDMzLDc4IEBAIENoaWxkIEZyYW1lcwogQGNpbmRl eCBjaGlsZCBmcmFtZXMKIEBjaW5kZXggcGFyZW50IGZyYW1lcwoKLU9uIHNvbWUgd2luZG93 LXN5c3RlbXMgdGhlIEBjb2Rle3BhcmVudC1mcmFtZX0gcGFyYW1ldGVyIChAcHhyZWZ7RnJh bWUKLUludGVyYWN0aW9uIFBhcmFtZXRlcnN9KSBjYW4gYmUgdXNlZCB0byBtYWtlIGEgZnJh bWUgYSBjaGlsZCBvZiB0aGUKLWZyYW1lIHNwZWNpZmllZCBieSB0aGF0IHBhcmFtZXRlci4g IFRoZSBmcmFtZSBzcGVjaWZpZWQgYnkgdGhhdAotcGFyYW1ldGVyIHdpbGwgdGhlbiBiZSB0 aGUgZnJhbWUncyBwYXJlbnQgZnJhbWUgYXMgbG9uZyBhcyB0aGUgcGFyYW1ldGVyCi1pcyBu b3QgY2hhbmdlZCBvciByZXNldC4gIFRlY2huaWNhbGx5LCB0aGlzIG1ha2VzIHRoZSBjaGls ZCBmcmFtZSdzCi13aW5kb3ctc3lzdGVtIHdpbmRvdyBhIGNoaWxkIHdpbmRvdyBvZiB0aGUg cGFyZW50IGZyYW1lJ3Mgd2luZG93LXN5c3RlbQotd2luZG93LgorQ2hpbGQgZnJhbWVzIGFy ZSBvYmplY3RzIGhhbGZ3YXkgYmV0d2VlbiB3aW5kb3dzIChAcHhyZWZ7V2luZG93c30pIGFu ZAorYGBub3JtYWwnJyBmcmFtZXMuICBMaWtlIHdpbmRvd3MsIHRoZXkgYXJlIGF0dGFjaGVk IHRvIGFuIG93bmluZyBmcmFtZS4KK1VubGlrZSB3aW5kb3dzLCB0aGV5IG1heSBvdmVybGFw IGVhY2ggb3RoZXItLS1jaGFuZ2luZyB0aGUgc2l6ZSBvcgorcG9zaXRpb24gb2Ygb25lIGNo aWxkIGZyYW1lIGRvZXMgbm90IGNoYW5nZSB0aGUgc2l6ZSBvciBwb3NpdGlvbiBvZiBhbnkK K29mIGl0cyBzaWJsaW5nIGNoaWxkIGZyYW1lcy4KKworICBCeSBkZXNpZ24sIG9wZXJhdGlv bnMgdG8gbWFrZSBvciBtb2RpZnkgY2hpbGQgZnJhbWVzIGFyZSBpbXBsZW1lbnRlZAord2l0 aCB0aGUgaGVscCBvZiBmcmFtZSBwYXJhbWV0ZXJzIChAcHhyZWZ7RnJhbWUgUGFyYW1ldGVy c30pIHdpdGhvdXQgYW55CitzcGVjaWFsaXplZCBmdW5jdGlvbnMgb3IgY3VzdG9taXphYmxl IHZhcmlhYmxlcy4gIE5vdGUgdGhhdCBjaGlsZCBmcmFtZXMKK2FyZSBtZWFuaW5nZnVsIG9u IGdyYXBoaWNhbCB0ZXJtaW5hbHMgb25seS4KKworICBUbyBjcmVhdGUgYSBuZXcgY2hpbGQg ZnJhbWUgb3IgdG8gY29udmVydCBhIG5vcm1hbCBmcmFtZSBpbnRvIGEgY2hpbGQKK2ZyYW1l LCBzZXQgdGhhdCBmcmFtZSdzIEBjb2Rle3BhcmVudC1mcmFtZX0gcGFyYW1ldGVyIChAcHhy ZWZ7RnJhbWUKK0ludGVyYWN0aW9uIFBhcmFtZXRlcnN9KSB0byB0aGF0IG9mIGFuIGFscmVh ZHkgZXhpc3RpbmcgZnJhbWUuICBUaGUKK2ZyYW1lIHNwZWNpZmllZCBieSB0aGF0IHBhcmFt ZXRlciB3aWxsIHRoZW4gYmUgdGhlIGZyYW1lJ3MgcGFyZW50IGZyYW1lCithcyBsb25nIGFz IHRoZSBwYXJhbWV0ZXIgaXMgbm90IGNoYW5nZWQgb3IgcmVzZXQuICBUZWNobmljYWxseSwg dGhpcworbWFrZXMgdGhlIGNoaWxkIGZyYW1lJ3Mgd2luZG93LXN5c3RlbSB3aW5kb3cgYSBj aGlsZCB3aW5kb3cgb2YgdGhlCitwYXJlbnQgZnJhbWUncyB3aW5kb3ctc3lzdGVtIHdpbmRv dy4KCitAY2luZGV4IHRvcC1sZXZlbCBmcmFtZQorQGNpbmRleCByZXBhcmVudCBmcmFtZQor QGNpbmRleCBuZXN0IGZyYW1lCiAgIFRoZSBAY29kZXtwYXJlbnQtZnJhbWV9IHBhcmFtZXRl ciBjYW4gYmUgY2hhbmdlZCBhdCBhbnkgdGltZS4gIFNldHRpbmcKLWl0IHRvIGFub3RoZXIg ZnJhbWUgYGByZXBhcmVudHMnJyB0aGUgY2hpbGQgZnJhbWUuICBTZXR0aW5nIGl0IHRvCi1h bm90aGVyIGNoaWxkIGZyYW1lIG1ha2VzIHRoZSBmcmFtZSBhIGBgbmVzdGVkJycgY2hpbGQg ZnJhbWUuICBTZXR0aW5nCi1pdCB0byBAY29kZXtuaWx9IHJlc3RvcmVzIHRoZSBmcmFtZSdz IHN0YXR1cyBhcyBhIHRvcC1sZXZlbCBmcmFtZS0tLW9uZQotd2hvc2Ugd2luZG93LXN5c3Rl bSB3aW5kb3cgaXMgYSBjaGlsZCBvZiBpdHMgZGlzcGxheSdzIHJvb3Qgd2luZG93LgoraXQg dG8gYW5vdGhlciBmcmFtZSBAZGZue3JlcGFyZW50c30gdGhlIGNoaWxkIGZyYW1lLiAgU2V0 dGluZyBpdCB0bworYW5vdGhlciBjaGlsZCBmcmFtZSBtYWtlcyB0aGUgZnJhbWUgYSBAZGZu e25lc3RlZH0gY2hpbGQgZnJhbWUuICBTZXR0aW5nCitpdCB0byBAY29kZXtuaWx9IHJlc3Rv cmVzIHRoZSBmcmFtZSdzIHN0YXR1cyBhcyBhIEBkZm57dG9wLWxldmVsCitmcmFtZX0tLS1h IGZyYW1lIHdob3NlIHdpbmRvdy1zeXN0ZW0gd2luZG93IGlzIGEgY2hpbGQgb2YgaXRzIGRp c3BsYXkncworcm9vdCB3aW5kb3cuCgogICBTaW5jZSBjaGlsZCBmcmFtZXMgY2FuIGJlIGFy Yml0cmFyaWx5IG5lc3RlZCwgYSBmcmFtZSBjYW4gYmUgYm90aCBhCiBjaGlsZCBhbmQgYSBw YXJlbnQgZnJhbWUuICBBbHNvLCB0aGUgcmVsYXRpdmUgcm9sZXMgb2YgY2hpbGQgYW5kIHBh cmVudAogZnJhbWUgbWF5IGJlIHJldmVyc2VkIGF0IGFueSB0aW1lICh0aG91Z2ggaXQncyB1 c3VhbGx5IGEgZ29vZCBpZGVhIHRvCi1rZWVwIHRoZSBzaXplIG9mIGNoaWxkIGZyYW1lcyBz dWZmaWNpZW50bHkgc21hbGxlciB0aGFuIHRoYXQgb2YgdGhlaXIKK2tlZXAgdGhlIHNpemUg b2YgYSBjaGlsZCBmcmFtZSBzdWZmaWNpZW50bHkgc21hbGxlciB0aGFuIHRoYXQgb2YgaXRz CiBwYXJlbnQpLiAgQW4gZXJyb3Igd2lsbCBiZSBzaWduYWxlZCBmb3IgdGhlIGF0dGVtcHQg dG8gbWFrZSBhIGZyYW1lIGFuCiBhbmNlc3RvciBvZiBpdHNlbGYuCgotICBBIGNoaWxkIGZy YW1lIGlzIGNsaXBwZWQgYXQgdGhlIG5hdGl2ZSBlZGdlcyAoQHB4cmVme0ZyYW1lIEdlb21l dHJ5fSkKLW9mIGl0cyBwYXJlbnQgZnJhbWUtLS1ldmVyeXRoaW5nIG91dHNpZGUgdGhlc2Ug ZWRnZXMgaXMgaW52aXNpYmxlLiAgSXRzCi1AY29kZXtsZWZ0fSBhbmQgQGNvZGV7dG9wfSBw YXJhbWV0ZXJzIHNwZWNpZnkgcG9zaXRpb25zIHJlbGF0aXZlIHRvIHRoZQotdG9wLWxlZnQg Y29ybmVyIG9mIGl0cyBwYXJlbnQncyBuYXRpdmUgZnJhbWUuICBXaGVuIGVpdGhlciBvZiB0 aGUgZnJhbWVzCi1pcyByZXNpemVkLCB0aGUgcmVsYXRpdmUgcG9zaXRpb24gb2YgdGhlIGNo aWxkIGZyYW1lIHJlbWFpbnMgdW5hbHRlcmVkLgotSGVuY2UsIHJlc2l6aW5nIGVpdGhlciBv ZiB0aGVzZSBmcmFtZXMgY2FuIGhpZGUgb3IgcmV2ZWFsIHBhcnRzIG9mIHRoZQotY2hpbGQg ZnJhbWUuCisgICBNb3N0IHdpbmRvdy1zeXN0ZW1zIGNsaXAgYSBjaGlsZCBmcmFtZSBhdCB0 aGUgbmF0aXZlIGVkZ2VzCisoQHB4cmVme0ZyYW1lIEdlb21ldHJ5fSkgb2YgaXRzIHBhcmVu dCBmcmFtZS0tLWV2ZXJ5dGhpbmcgb3V0c2lkZSB0aGVzZQorZWRnZXMgaXMgdXN1YWxseSBp bnZpc2libGUuICBBIGNoaWxkIGZyYW1lJ3MgQGNvZGV7bGVmdH0gYW5kIEBjb2Rle3RvcH0K K3BhcmFtZXRlcnMgc3BlY2lmeSBhIHBvc2l0aW9uIHJlbGF0aXZlIHRvIHRoZSB0b3AtbGVm dCBjb3JuZXIgb2YgaXRzCitwYXJlbnQncyBuYXRpdmUgZnJhbWUuICBXaGVuIHRoZSBwYXJl bnQgZnJhbWUgaXMgcmVzaXplZCwgdGhpcyBwb3NpdGlvbgorcmVtYWlucyBjb25jZXB0dWFs bHkgdW5hbHRlcmVkLgoKICAgTlMgYnVpbGRzIGRvIG5vdCBjbGlwIGNoaWxkIGZyYW1lcyBh dCB0aGUgcGFyZW50IGZyYW1lJ3MgZWRnZXMsCi1hbGxvd2luZyB0aGVtIHRvIGJlIHBvc2l0 aW9uZWQgc28gdGhleSBkbyBub3Qgb2JzY3VyZSB0aGUgcGFyZW50Ci1mcmFtZSB3aGlsZSBz dGlsbCBiZWluZyB2aXNpYmxlIHRoZW1zZWx2ZXMuCithbGxvd2luZyB0aGVtIHRvIGJlIHBv c2l0aW9uZWQgc28gdGhleSBkbyBub3Qgb2JzY3VyZSB0aGUgcGFyZW50IGZyYW1lCit3aGls ZSBzdGlsbCBiZWluZyB2aXNpYmxlIHRoZW1zZWx2ZXMuCgogICBVc3VhbGx5LCBtb3Zpbmcg YSBwYXJlbnQgZnJhbWUgbW92ZXMgYWxvbmcgYWxsIGl0cyBjaGlsZCBmcmFtZXMgYW5kCiB0 aGVpciBkZXNjZW5kYW50cyBhcyB3ZWxsLCBrZWVwaW5nIHRoZWlyIHJlbGF0aXZlIHBvc2l0 aW9ucyB1bmFsdGVyZWQuCi1UaGUgaG9vayBAY29kZXttb3ZlLWZyYW1lLWZ1bmN0aW9uc30g KEBweHJlZntGcmFtZSBQb3NpdGlvbn0pIGlzIHJ1biBmb3IKLWEgY2hpbGQgZnJhbWUgb25s eSB3aGVuIHRoZSBwb3NpdGlvbiBvZiB0aGUgY2hpbGQgZnJhbWUgcmVsYXRpdmUgdG8gaXRz Ci1wYXJlbnQgZnJhbWUgY2hhbmdlcy4gIFdoZW4gYSBwYXJlbnQgZnJhbWUgaXMgcmVzaXpl ZCwgdGhlIGNoaWxkIGZyYW1lCi1yZXRhaW5zIGl0cyBwb3NpdGlvbiByZXNwZWN0aXZlIHRv IHRoZSBsZWZ0IGFuZCB1cHBlciBuYXRpdmUgZWRnZXMgb2YKLWl0cyBwYXJlbnQuICBJbiB0 aGlzIGNhc2UsIHRoZSBwb3NpdGlvbiByZXNwZWN0aXZlIHRvIHRoZSBsb3dlciBvciByaWdo dAotbmF0aXZlIGVkZ2Ugb2YgdGhlIHBhcmVudCBmcmFtZSBpcyB1c3VhbGx5IGxvc3QuCitO b3RlIHRoYXQgdGhlIGhvb2sgQGNvZGV7bW92ZS1mcmFtZS1mdW5jdGlvbnN9IChAcHhyZWZ7 RnJhbWUgUG9zaXRpb259KQoraXMgcnVuIGZvciBhIGNoaWxkIGZyYW1lIG9ubHkgd2hlbiB0 aGUgcG9zaXRpb24gb2YgdGhlIGNoaWxkIGZyYW1lCityZWxhdGl2ZSB0byBpdHMgcGFyZW50 IGZyYW1lIGNoYW5nZXMuICBJdCBpcyBub3QgcnVuIGZvciBhIGNoaWxkIGZyYW1lCit3aGVu IHRoZSBwb3NpdGlvbiBvZiB0aGUgcGFyZW50IGZyYW1lIGNoYW5nZXMuCisKKyAgV2hlbiBh IHBhcmVudCBmcmFtZSBpcyByZXNpemVkLCBpdHMgY2hpbGQgZnJhbWVzIGNvbmNlcHR1YWxs eSByZXRhaW4KK3RoZWlyIHByZXZpb3VzIHNpemVzIGFuZCB0aGVpciBwb3NpdGlvbnMgcmVs YXRpdmUgdG8gdGhlIGxlZnQgdXBwZXIKK2Nvcm5lciBvZiB0aGUgcGFyZW50LiAgVGhpcyBt ZWFucyB0aGF0IGEgY2hpbGQgZnJhbWUgbWF5IGJlY29tZQorKHBhcnRpYWxseSkgaW52aXNp YmxlIHdoZW4gaXRzIHBhcmVudCBmcmFtZSBzaHJpbmtzLiAgVGhlIHBhcmFtZXRlcgorQGNv ZGV7a2VlcC1yYXRpb30gKEBweHJlZntGcmFtZSBJbnRlcmFjdGlvbiBQYXJhbWV0ZXJzfSkg Y2FuIGJlIHVzZWQgdG8KK3Jlc2l6ZSBhbmQgcmVwb3NpdGlvbiBhIGNoaWxkIGZyYW1lIHBy b3BvcnRpb25hbGx5IHdoZW5ldmVyIGl0cyBwYXJlbnQKK2ZyYW1lIGlzIHJlc2l6ZWQuICBU aGlzIG1heSBhdm9pZCBvYnNjdXJpbmcgcGFydHMgb2YgYSBmcmFtZSB3aGVuIGl0cworcGFy ZW50IGZyYW1lIGlzIHNocnVuay4KCiAgIEEgdmlzaWJsZSBjaGlsZCBmcmFtZSBhbHdheXMg YXBwZWFycyBvbiB0b3Agb2YgaXRzIHBhcmVudCBmcmFtZSB0aHVzCiBvYnNjdXJpbmcgcGFy dHMgb2YgaXQsIGV4Y2VwdCBvbiBOUyBidWlsZHMgd2hlcmUgaXQgbWF5IGJlIHBvc2l0aW9u ZWQKLWJlbmVhdGggdGhlIHBhcmVudC4gIFRoaXMgaXMgY29tcGFyYWJsZSB0byB0aGUgd2lu ZG93LXN5c3RlbSB3aW5kb3cgb2YKLWEgdG9wLWxldmVsIGZyYW1lIHdoaWNoIGFsc28gYWx3 YXlzIGFwcGVhcnMgb24gdG9wIG9mIGl0cyBwYXJlbnQKLXdpbmRvdy0tLXRoZSBkZXNrdG9w J3Mgcm9vdCB3aW5kb3cuICBXaGVuIGEgcGFyZW50IGZyYW1lIGlzIGljb25pZmllZAotb3Ig bWFkZSBpbnZpc2libGUgKEBweHJlZntWaXNpYmlsaXR5IG9mIEZyYW1lc30pLCBpdHMgY2hp bGQgZnJhbWVzIGFyZQotbWFkZSBpbnZpc2libGUuICBXaGVuIGEgcGFyZW50IGZyYW1lIGlz IGRlaWNvbmlmaWVkIG9yIG1hZGUgdmlzaWJsZSwKLWl0cyBjaGlsZCBmcmFtZXMgYXJlIG1h ZGUgdmlzaWJsZS4gIFdoZW4gYSBwYXJlbnQgZnJhbWUgaXMgYWJvdXQgdG8gYmUKLWRlbGV0 ZWQsIChAcHhyZWZ7RGVsZXRpbmcgRnJhbWVzfSkgaXRzIGNoaWxkIGZyYW1lcyBhcmUgcmVj dXJzaXZlbHkKK2JlbmVhdGggdGhlIHBhcmVudC4gIFRoaXMgaXMgY29tcGFyYWJsZSB0byB0 aGUgd2luZG93LXN5c3RlbSB3aW5kb3cgb2YgYQordG9wLWxldmVsIGZyYW1lIHdoaWNoIGFs c28gYWx3YXlzIGFwcGVhcnMgb24gdG9wIG9mIGl0cyBwYXJlbnQKK3dpbmRvdy0tLXRoZSBk ZXNrdG9wJ3Mgcm9vdCB3aW5kb3cuICBXaGVuIGEgcGFyZW50IGZyYW1lIGlzIGljb25pZmll ZCBvcgorbWFkZSBpbnZpc2libGUgKEBweHJlZntWaXNpYmlsaXR5IG9mIEZyYW1lc30pLCBp dHMgY2hpbGQgZnJhbWVzIGFyZSBtYWRlCitpbnZpc2libGUuICBXaGVuIGEgcGFyZW50IGZy YW1lIGlzIGRlaWNvbmlmaWVkIG9yIG1hZGUgdmlzaWJsZSwgaXRzCitjaGlsZCBmcmFtZXMg YXJlIG1hZGUgdmlzaWJsZS4gIFdoZW4gYSBwYXJlbnQgZnJhbWUgaXMgYWJvdXQgdG8gYmUK K2RlbGV0ZWQgKEBweHJlZntEZWxldGluZyBGcmFtZXN9KSwgaXRzIGNoaWxkIGZyYW1lcyBh cmUgcmVjdXJzaXZlbHkKIGRlbGV0ZWQgYmVmb3JlIGl0LgoKICAgV2hldGhlciBhIGNoaWxk IGZyYW1lIGNhbiBoYXZlIGEgbWVudSBvciB0b29sIGJhciBpcyB3aW5kb3ctc3lzdGVtIG9y CkBAIC0yODkyLDcgKzMxMjIsNTUgQEAgQ2hpbGQgRnJhbWVzCiBib3JkZXIgd2lkdGggd2ls bCBzaG93IGEgb25lLXBpeGVsIHdpZGUgZXh0ZXJuYWwgYm9yZGVyLiAgVW5kZXIgYWxsCiB3 aW5kb3ctc3lzdGVtcywgdGhlIGludGVybmFsIGJvcmRlciBjYW4gYmUgdXNlZC4gIEluIGVp dGhlciBjYXNlLCBpdCdzCiBhZHZpc2FibGUgdG8gZGlzYWJsZSBhIGNoaWxkIGZyYW1lJ3Mg d2luZG93IG1hbmFnZXIgZGVjb3JhdGlvbnMgd2l0aCB0aGUKLUBjb2Rle3VuZGVjb3JhdGVk fSBmcmFtZSBwYXJhbWV0ZXIgQHB4cmVme01hbmFnZW1lbnQgUGFyYW1ldGVyc30pLgorQGNv ZGV7dW5kZWNvcmF0ZWR9IGZyYW1lIHBhcmFtZXRlciAoQHB4cmVme01hbmFnZW1lbnQgUGFy YW1ldGVyc30pLgorCisgIFRvIHJlc2l6ZSBvciBtb3ZlIGFuIHVuZGVjb3JhdGVkIGNoaWxk IGZyYW1lIHdpdGggdGhlIG1vdXNlLCBzcGVjaWFsCitmcmFtZSBwYXJhbWV0ZXJzIChAcHhy ZWZ7TW91c2UgRHJhZ2dpbmcgUGFyYW1ldGVyc30pIGhhdmUgdG8gYmUgdXNlZC4KK1RoZSBp bnRlcm5hbCBib3JkZXIgb2YgYSBjaGlsZCBmcmFtZSwgaWYgcHJlc2VudCwgY2FuIGJlIHVz ZWQgdG8gcmVzaXplCit0aGUgZnJhbWUgd2l0aCB0aGUgbW91c2UsIHByb3ZpZGVkIHRoYXQg ZnJhbWUgaGFzIGEgbm9uLUBjb2Rle25pbH0KK0Bjb2Rle2RyYWctaW50ZXJuYWwtYm9yZGVy fSBwYXJhbWV0ZXIuICBJZiBzZXQsIHRoZSBAY29kZXtzbmFwLXdpZHRofQorcGFyYW1ldGVy IGluZGljYXRlcyB0aGUgbnVtYmVyIG9mIHBpeGVscyB3aGVyZSB0aGUgZnJhbWUgQGRmbntz bmFwc30gYXQKK3RoZSByZXNwZWN0aXZlIGVkZ2Ugb3IgY29ybmVyIG9mIGl0cyBwYXJlbnQg ZnJhbWUuCisKKyAgVGhlcmUgYXJlIHR3byB3YXlzIHRvIGRyYWcgYW4gZW50aXJlIGNoaWxk IGZyYW1lIHdpdGggdGhlIG1vdXNlOiBUaGUKK0Bjb2Rle2RyYWctd2l0aC1tb2RlLWxpbmV9 IHBhcmFtZXRlciwgaWYgbm9uLUBjb2Rle25pbH0sIGFsbG93cyB0byBkcmFnCithIGZyYW1l IHdpdGhvdXQgbWluaWJ1ZmZlciB3aW5kb3cgKEBweHJlZntNaW5pYnVmZmVyIFdpbmRvd3N9 KSB2aWEgdGhlCittb2RlIGxpbmUgYXJlYSBvZiBpdHMgYm90dG9tbW9zdCB3aW5kb3cuICBU aGUKK0Bjb2Rle2RyYWctd2l0aC1oZWFkZXItbGluZX0gcGFyYW1ldGVyLCBpZiBub24tQGNv ZGV7bmlsfSwgYWxsb3dzIHRvCitkcmFnIHRoZSBmcmFtZSB2aWEgdGhlIGhlYWRlciBsaW5l IGFyZWEgb2YgaXRzIHRvcG1vc3Qgd2luZG93LgorCisgIEluIG9yZGVyIHRvIGdpdmUgYSBj aGlsZCBmcmFtZSBhIGRyYWdnYWJsZSBoZWFkZXIgb3IgbW9kZSBsaW5lLCB0aGUKK3dpbmRv dyBwYXJhbWV0ZXJzIEBjb2Rle21vZGUtbGluZS1mb3JtYXR9IGFuZCBAY29kZXtoZWFkZXIt bGluZS1mb3JtYXR9CithcmUgaGFuZHkgKEBweHJlZntXaW5kb3cgUGFyYW1ldGVyc30pLiAg VGhlc2UgYWxsb3cgdG8gcmVtb3ZlIGFuCit1bndhbnRlZCBtb2RlIGxpbmUgKHdoZW4gQGNv ZGV7ZHJhZy13aXRoLWhlYWRlci1saW5lfSBpcyBjaG9zZW4pIGFuZCB0bworcmVtb3ZlIG1v dXNlLXNlbnNpdGl2ZSBhcmVhcyB3aGljaCBtaWdodCBpbnRlcmZlcmUgd2l0aCBmcmFtZSBk cmFnZ2luZy4KKworICBUbyBhdm9pZCB0aGF0IGRyYWdnaW5nIG1vdmVzIGEgZnJhbWUgY29t cGxldGVseSBvdXQgb2YgaXRzIHBhcmVudCdzCituYXRpdmUgZnJhbWUsIHNvbWV0aGluZyB3 aGljaCBtaWdodCBoYXBwZW4gd2hlbiB0aGUgbW91c2UgY3Vyc29yCitvdmVyc2hvb3RzIGFu ZCBtYWtlcyB0aGUgZnJhbWUgZGlmZmljdWx0IHRvIHJldHJpZXZlIG9uY2UgdGhlIG1vdXNl CitidXR0b24gaGFzIGJlZW4gcmVsZWFzZWQsIGl0IGlzIGFkdmlzYWJsZSB0byBzZXQgdGhl IGZyYW1lJ3MKK0Bjb2Rle3RvcC12aXNpYmxlfSBvciBAY29kZXtib3R0b20tdmlzaWJsZX0g cGFyYW1ldGVyIGNvcnJlc3BvbmRpbmdseS4KKworICBUaGUgQGNvZGV7dG9wLXZpc2libGV9 IHBhcmFtZXRlciBzcGVjaWZpZXMgdGhlIG51bWJlciBvZiBwaXhlbHMgYXQgdGhlCit0b3Ag b2YgdGhlIGZyYW1lIHRoYXQgYWx3YXlzIHJlbWFpbiB2aXNpYmxlIHdpdGhpbiB0aGUgcGFy ZW50J3MgbmF0aXZlCitmcmFtZSBkdXJpbmcgZHJhZ2dpbmcgYW5kIHNob3VsZCBiZSBzZXQg d2hlbiBzcGVjaWZ5aW5nIGEgbm9uLUBjb2Rle25pbH0KK0Bjb2Rle2RyYWctd2l0aC1oZWFk ZXItbGluZX0gcGFyYW1ldGVyLiAgVGhlIEBjb2Rle2JvdHRvbS12aXNpYmxlfQorcGFyYW1l dGVyIHNwZWNpZmllcyB0aGUgbnVtYmVyIG9mIHBpeGVscyBhdCB0aGUgYm90dG9tIG9mIHRo ZSBmcmFtZSB0aGF0CithbHdheXMgcmVtYWluIHZpc2libGUgd2l0aGluIHRoZSBwYXJlbnQn cyBuYXRpdmUgZnJhbWUgZHVyaW5nIGRyYWdnaW5nCithbmQgc2hvdWxkIGJlIHByZWZlcnJl ZCB3aGVuIHNwZWNpZnlpbmcgYSBub24tQGNvZGV7bmlsfQorQGNvZGV7ZHJhZy13aXRoLW1v ZGUtbGluZX0gcGFyYW1ldGVyLgorCisgIFdoZW4gYSBjaGlsZCBmcmFtZSBpcyB1c2VkIGZv ciBkaXNwbGF5aW5nIGEgYnVmZmVyIHZpYQorQGNvZGV7ZGlzcGxheS1idWZmZXItaW4tY2hp bGQtZnJhbWV9IChAcHhyZWZ7RGlzcGxheSBBY3Rpb24gRnVuY3Rpb25zfSksCit0aGUgZnJh bWUncyBAY29kZXthdXRvLWhpZGUtZnVuY3Rpb259IHBhcmFtZXRlciAoQHB4cmVme0ZyYW1l CitJbnRlcmFjdGlvbiBQYXJhbWV0ZXJzfSkgY2FuIGJlIHNldCB0byBhIGZ1bmN0aW9uLCBp biBvcmRlciB0bworYXBwcm9wcmlhdGVseSBkZWFsIHdpdGggdGhlIGZyYW1lIHdoZW4gdGhl IHdpbmRvdyBkaXNwbGF5aW5nIHRoZSBidWZmZXIKK3NoYWxsIGJlIHF1aXQuCisKKyAgV2hl biBhIGNoaWxkIGZyYW1lIGlzIHVzZWQgZHVyaW5nIG1pbmlidWZmZXIgaW50ZXJhY3Rpb24s IGZvciBleGFtcGxlLAordG8gZGlzcGxheSBjb21wbGV0aW9ucyBpbiBhIHNlcGFyYXRlIHdp bmRvdywgdGhlIEBjb2Rle21pbmlidWZmZXItZXhpdH0KK3BhcmFtZXRlciAoQHB4cmVme0Zy YW1lIEludGVyYWN0aW9uIFBhcmFtZXRlcnN9KSBpcyB1c2VmdWwgaW4gb3JkZXIgdG8KK2Rl YWwgd2l0aCB0aGUgZnJhbWUgd2hlbiB0aGUgbWluaWJ1ZmZlciBpcyBleGl0ZWQuCgogICBU aGUgYmVoYXZpb3Igb2YgY2hpbGQgZnJhbWVzIGRldmlhdGVzIGZyb20gdGhhdCBvZiB0b3At bGV2ZWwgZnJhbWVzIGluCiBhIG51bWJlciBvZiBvdGhlciB3YXlzIGFzIHdlbGwuICBIZXJl IHdlIHNrZXRjaCBhIGZldyBvZiB0aGVtOgpAQCAtMjkzMCw3ICszMjA4LDcgQEAgQ2hpbGQg RnJhbWVzCiBmcmFtZSBvciBvbiBzb21lIGFuY2VzdG9yIGluc3RlYWQuCiBAZW5kIGl0ZW1p emUKCi0gIFRoZSBmb2xsb3dpbmcgdHdvIGZ1bmN0aW9ucyBtYXkgYmUgdXNlZnVsIHdoZW4g d29ya2luZyB3aXRoIGNoaWxkIGFuZAorICBUaGUgZm9sbG93aW5nIHR3byBmdW5jdGlvbnMg Y2FuIGJlIHVzZWZ1bCB3aGVuIHdvcmtpbmcgd2l0aCBjaGlsZCBhbmQKIHBhcmVudCBmcmFt ZXM6CgogQGRlZnVuIGZyYW1lLXBhcmVudCAmb3B0aW9uYWwgZnJhbWUKQEAgLTI5NTEsNiAr MzIyOSwxMiBAQCBDaGlsZCBGcmFtZXMKIGZyYW1lLgogQGVuZCBkZWZ1bgoKK05vdGUgYWxz byB0aGUgZnVuY3Rpb24gQGNvZGV7d2luZG93LWxhcmdlc3QtZW1wdHktcmVjdGFuZ2xlfQor KEBweHJlZntDb29yZGluYXRlcyBhbmQgV2luZG93c30pIHdoaWNoIGNhbiBiZSB1c2VkIHRv IGluc2NyaWJlIGEgY2hpbGQKK2ZyYW1lIGluIHRoZSBsYXJnZXN0IGVtcHR5IGFyZWEgb2Yg YW4gZXhpc3Rpbmcgd2luZG93LiAgVGhpcyBjYW4gYmUKK3VzZWZ1bCB0byBhdm9pZCB0aGF0 IGEgY2hpbGQgZnJhbWUgb2JzY3VyZXMgYW55IHRleHQgc2hvd24gaW4gdGhhdAord2luZG93 LgorCgogQG5vZGUgTW91c2UgVHJhY2tpbmcKIEBzZWN0aW9uIE1vdXNlIFRyYWNraW5nCmRp ZmYgLS1naXQgYS9kb2MvbGlzcHJlZi9tb2Rlcy50ZXhpIGIvZG9jL2xpc3ByZWYvbW9kZXMu dGV4aQppbmRleCAwZTQ3NmI0Li5mNzAxM2RhIDEwMDY0NAotLS0gYS9kb2MvbGlzcHJlZi9t b2Rlcy50ZXhpCisrKyBiL2RvYy9saXNwcmVmL21vZGVzLnRleGkKQEAgLTE3MzcsNyArMTcz Nyw5IEBAIE1vZGUgTGluZSBCYXNpY3MKIGRpc3BsYXllZCBvbiB0aGUgYnVmZmVyJ3MgbW9k ZSBsaW5lLiAgVGhlIHZhbHVlIG9mCiBAY29kZXtoZWFkZXItbGluZS1mb3JtYXR9IHNwZWNp ZmllcyB0aGUgYnVmZmVyJ3MgaGVhZGVyIGxpbmUgaW4gdGhlIHNhbWUKIHdheS4gIEFsbCB3 aW5kb3dzIGZvciB0aGUgc2FtZSBidWZmZXIgdXNlIHRoZSBzYW1lCi1AY29kZXttb2RlLWxp bmUtZm9ybWF0fSBhbmQgQGNvZGV7aGVhZGVyLWxpbmUtZm9ybWF0fS4KK0Bjb2Rle21vZGUt bGluZS1mb3JtYXR9IGFuZCBAY29kZXtoZWFkZXItbGluZS1mb3JtYXR9IHVubGVzcyBhCitA Y29kZXttb2RlLWxpbmUtZm9ybWF0fSBvciBAY29kZXtoZWFkZXItbGluZS1mb3JtYXR9IHBh cmFtZXRlciBoYXMgYmVlbgorc3BlY2lmaWVkIGZvciB0aGF0IHdpbmRvdyAoQHB4cmVme1dp bmRvdyBQYXJhbWV0ZXJzfSkuCgogICBGb3IgZWZmaWNpZW5jeSwgRW1hY3MgZG9lcyBub3Qg Y29udGludW91c2x5IHJlY29tcHV0ZSBlYWNoIHdpbmRvdydzCiBtb2RlIGxpbmUgYW5kIGhl YWRlciBsaW5lLiAgSXQgZG9lcyBzbyB3aGVuIGNpcmN1bXN0YW5jZXMgYXBwZWFyIHRvIGNh bGwKZGlmZiAtLWdpdCBhL2RvYy9saXNwcmVmL3dpbmRvd3MudGV4aSBiL2RvYy9saXNwcmVm L3dpbmRvd3MudGV4aQppbmRleCBkOWI0Yjc0Li5lYjVjMmZjIDEwMDY0NAotLS0gYS9kb2Mv bGlzcHJlZi93aW5kb3dzLnRleGkKKysrIGIvZG9jL2xpc3ByZWYvd2luZG93cy50ZXhpCkBA IC03NTIsNiArNzUyLDcgQEAgV2luZG93IFNpemVzCiBtaW5pbXVtIHNpemUgb2YgQHZhcnt3 aW5kb3d9IGNvdW50ZWQgaW4gcGl4ZWxzLgogQGVuZCBkZWZ1bgoKKwogQG5vZGUgUmVzaXpp bmcgV2luZG93cwogQHNlY3Rpb24gUmVzaXppbmcgV2luZG93cwogQGNpbmRleCB3aW5kb3cg cmVzaXppbmcKQEAgLTk0Myw3ICs5NDQsOCBAQCBSZXNpemluZyBXaW5kb3dzCiBAZGVmb3B0 IGZpdC1mcmFtZS10by1idWZmZXItbWFyZ2lucwogVGhpcyBvcHRpb24gY2FuIGJlIHVzZWQg dG8gc3BlY2lmeSBtYXJnaW5zIGFyb3VuZCBmcmFtZXMgdG8gYmUgZml0IGJ5CiBAY29kZXtm aXQtZnJhbWUtdG8tYnVmZmVyfS4gIFN1Y2ggbWFyZ2lucyBjYW4gYmUgdXNlZnVsIHRvIGF2 b2lkLCBmb3IKLWV4YW1wbGUsIHRoYXQgc3VjaCBmcmFtZXMgb3ZlcmxhcCB0aGUgdGFza2Jh ci4KK2V4YW1wbGUsIHRoYXQgdGhlIHJlc2l6ZWQgZnJhbWUgb3ZlcmxhcHMgdGhlIHRhc2ti YXIgb3IgcGFydHMgb2YgaXRzCitwYXJlbnQgZnJhbWUuCgogSXQgc3BlY2lmaWVzIHRoZSBu dW1iZXJzIG9mIHBpeGVscyB0byBiZSBsZWZ0IGZyZWUgb24gdGhlIGxlZnQsIGFib3ZlLAog dGhlIHJpZ2h0LCBhbmQgYmVsb3cgYSBmcmFtZSB0aGF0IHNoYWxsIGJlIGZpdC4gIFRoZSBk ZWZhdWx0IHNwZWNpZmllcwpAQCAtMjQ4NCw2ICsyNDg2LDI1IEBAIERpc3BsYXkgQWN0aW9u IEZ1bmN0aW9ucwogaXMgYWRkZWQgdG8gdGhlIG5ld2x5IGNyZWF0ZWQgZnJhbWUncyBwYXJh bWV0ZXJzLgogQGVuZCBkZWZ1bgoKK0BkZWZ1biBkaXNwbGF5LWJ1ZmZlci1pbi1jaGlsZC1m cmFtZSBidWZmZXIgYWxpc3QKK1RoaXMgZnVuY3Rpb24gdHJpZXMgdG8gZGlzcGxheSBAdmFy e2J1ZmZlcn0gaW4gYSBjaGlsZCBmcmFtZQorKEBweHJlZntDaGlsZCBGcmFtZXN9KSBvZiB0 aGUgc2VsZWN0ZWQgZnJhbWUsIGVpdGhlciByZXVzaW5nIGFuIGV4aXN0aW5nCitjaGlsZCBm cmFtZSBvciBieSBtYWtpbmcgYSBuZXcgb25lLiAgSWYgQHZhcnthbGlzdH0gaGFzIGEgbm9u LUBjb2Rle25pbH0KK0Bjb2Rle2NoaWxkLWZyYW1lLXBhcmFtZXRlcnN9IGVudHJ5LCB0aGUg Y29ycmVzcG9uZGluZyB2YWx1ZSBpcyBhbiBhbGlzdAorb2YgZnJhbWUgcGFyYW1ldGVycyB0 byBnaXZlIHRoZSBuZXcgZnJhbWUuICBBIEBjb2Rle3BhcmVudC1mcmFtZX0KK3BhcmFtZXRl ciBzcGVjaWZ5aW5nIHRoZSBzZWxlY3RlZCBmcmFtZSBpcyBwcm92aWRlZCBieSBkZWZhdWx0 LiAgSWYgdGhlCitjaGlsZCBmcmFtZSBzaG91bGQgYmUgb3IgYmVjb21lIHRoZSBjaGlsZCBv ZiBhbm90aGVyIGZyYW1lLCBhCitjb3JyZXNwb25kaW5nIGVudHJ5IG11c3QgYmUgYWRkZWQg dG8gQHZhcnthbGlzdH0uCisKK1RoZSBhcHBlYXJhbmNlIG9mIGNoaWxkIGZyYW1lcyBpcyBs YXJnZWx5IGRlcGVuZGVudCBvbiB0aGUgcGFyYW1ldGVycworcHJvdmlkZWQgdmlhIEB2YXJ7 YWxpc3R9LiAgSXQgaXMgYWR2aXNhYmxlIHRvIHVzZSBhdCBsZWFzdCByYXRpb3MgdG8KK3Nw ZWNpZnkgdGhlIHNpemUgKEBweHJlZntTaXplIFBhcmFtZXRlcnN9KSBhbmQgdGhlIHBvc2l0 aW9uCisoQHB4cmVme1Bvc2l0aW9uIFBhcmFtZXRlcnN9KSBvZiB0aGUgY2hpbGQgZnJhbWUg YW5kIHRvIGFkZCB0aGUKK0Bjb2Rle2tlZXAtcmF0aW99IGluIG9yZGVyIHRvIG1ha2Ugc3Vy ZSB0aGF0IHRoZSBjaGlsZCBmcmFtZSByZW1haW5zCit2aXNpYmxlLiAgRm9yIG90aGVyIHBh cmFtZXRlcnMgdGhhdCBzaG91bGQgYmUgY29uc2lkZXJlZCBzZWUgQHJlZntDaGlsZAorRnJh bWVzfS4KK0BlbmQgZGVmdW4KKwogQGRlZnVuIGRpc3BsYXktYnVmZmVyLXVzZS1zb21lLWZy YW1lIGJ1ZmZlciBhbGlzdAogVGhpcyBmdW5jdGlvbiB0cmllcyB0byBkaXNwbGF5IEB2YXJ7 YnVmZmVyfSBieSB0cnlpbmcgdG8gZmluZCBhCiBmcmFtZSB0aGF0IG1lZXRzIGEgcHJlZGlj YXRlIChieSBkZWZhdWx0IGFueSBmcmFtZSBvdGhlciB0aGFuIHRoZQpAQCAtMzEyNCwxMiAr MzE0NSwxNyBAQCBRdWl0dGluZyBXaW5kb3dzCiBUaGUgZGVmYXVsdCBpcyB0byBjYWxsIEBj b2Rle2ljb25pZnktZnJhbWV9IChAcHhyZWZ7VmlzaWJpbGl0eSBvZgogRnJhbWVzfSkuICBB bHRlcm5hdGl2ZWx5LCB5b3UgbWF5IHNwZWNpZnkgZWl0aGVyIEBjb2Rle2RlbGV0ZS1mcmFt ZX0KIChAcHhyZWZ7RGVsZXRpbmcgRnJhbWVzfSkgdG8gcmVtb3ZlIHRoZSBmcmFtZSBmcm9t IGl0cyBkaXNwbGF5LAotQGNvZGV7aWdub3JlfSB0byBsZWF2ZSB0aGUgZnJhbWUgdW5jaGFu Z2VkLCBvciBhbnkgb3RoZXIgZnVuY3Rpb24gdGhhdAotY2FuIHRha2UgYSBmcmFtZSBhcyBp dHMgc29sZSBhcmd1bWVudC4KK0Bjb2Rle21ha2UtZnJhbWUtaW52aXNpYmxlfSB0byBtYWtl IHRoZSBmcmFtZSBpbnZpc2libGUsIEBjb2Rle2lnbm9yZX0KK3RvIGxlYXZlIHRoZSBmcmFt ZSB1bmNoYW5nZWQsIG9yIGFueSBvdGhlciBmdW5jdGlvbiB0aGF0IGNhbiB0YWtlIGEKK2Zy YW1lIGFzIGl0cyBzb2xlIGFyZ3VtZW50LgoKIE5vdGUgdGhhdCB0aGUgZnVuY3Rpb24gc3Bl Y2lmaWVkIGJ5IHRoaXMgb3B0aW9uIGlzIGNhbGxlZCBvbmx5IGlmIHRoZQogc3BlY2lmaWVk IGZyYW1lIGNvbnRhaW5zIGp1c3Qgb25lIGxpdmUgd2luZG93IGFuZCB0aGVyZSBpcyBhdCBs ZWFzdCBvbmUKIG90aGVyIGZyYW1lIG9uIHRoZSBzYW1lIHRlcm1pbmFsLgorCitGb3IgYSBw YXJ0aWN1bGFyIGZyYW1lLCB0aGUgdmFsdWUgc3BlY2lmaWVkIGhlcmUgbWF5IGJlIG92ZXJy aWRkZW4gYnkKK3RoYXQgZnJhbWUncyBAY29kZXthdXRvLWhpZGUtZnVuY3Rpb259IGZyYW1l IHBhcmFtZXRlciAoQHB4cmVme0ZyYW1lCitJbnRlcmFjdGlvbiBQYXJhbWV0ZXJzfSkuCiBA ZW5kIGRlZm9wdAoKCkBAIC00MzY0LDEzICs0MzkwLDEyIEBAIENvb3JkaW5hdGVzIGFuZCBX aW5kb3dzCiBAY2luZGV4IGNvb3JkaW5hdGUsIHJlbGF0aXZlIHRvIGZyYW1lCiBAY2luZGV4 IHdpbmRvdyBwb3NpdGlvbgoKLVRoaXMgc2VjdGlvbiBkZXNjcmliZXMgZnVuY3Rpb25zIHRo YXQgcmVwb3J0IHRoZSBwb3NpdGlvbiBvZiBhIHdpbmRvdy4KLU1vc3Qgb2YgdGhlc2UgZnVu Y3Rpb25zIHJlcG9ydCBwb3NpdGlvbnMgcmVsYXRpdmUgdG8gYW4gb3JpZ2luIGF0IHRoZQot bmF0aXZlIHBvc2l0aW9uIG9mIHRoZSB3aW5kb3cncyBmcmFtZSAoQHB4cmVme0ZyYW1lIEdl b21ldHJ5fSkuICBTb21lCi1mdW5jdGlvbnMgcmVwb3J0IHBvc2l0aW9ucyByZWxhdGl2ZSB0 byB0aGUgb3JpZ2luIG9mIHRoZSBkaXNwbGF5IG9mIHRoZQotd2luZG93J3MgZnJhbWUuICBJ biBhbnkgY2FzZSwgdGhlIG9yaWdpbiBoYXMgdGhlIGNvb3JkaW5hdGVzICgwLCAwKSBhbmQK LVggYW5kIFkgY29vcmRpbmF0ZXMgaW5jcmVhc2UgcmlnaHR3YXJkIGFuZCBkb3dud2FyZAot cmVzcGVjdGl2ZWx5LgorVGhpcyBzZWN0aW9uIGRlc2NyaWJlcyBmdW5jdGlvbnMgdGhhdCBy ZXBvcnQgcG9zaXRpb25zIG9mIGFuZCB3aXRoaW4gYQord2luZG93LiAgTW9zdCBvZiB0aGVz ZSBmdW5jdGlvbnMgcmVwb3J0IHBvc2l0aW9ucyByZWxhdGl2ZSB0byBhbiBvcmlnaW4KK2F0 IHRoZSBuYXRpdmUgcG9zaXRpb24gb2YgdGhlIHdpbmRvdydzIGZyYW1lIChAcHhyZWZ7RnJh bWUgR2VvbWV0cnl9KS4KK1NvbWUgZnVuY3Rpb25zIHJlcG9ydCBwb3NpdGlvbnMgcmVsYXRp dmUgdG8gdGhlIG9yaWdpbiBvZiB0aGUgZGlzcGxheSBvZgordGhlIHdpbmRvdydzIGZyYW1l LiAgSW4gYW55IGNhc2UsIHRoZSBvcmlnaW4gaGFzIHRoZSBjb29yZGluYXRlcyAoMCwgMCkK K2FuZCBYIGFuZCBZIGNvb3JkaW5hdGVzIGluY3JlYXNlIHJpZ2h0d2FyZCBhbmQgZG93bndh cmQgcmVzcGVjdGl2ZWx5LgoKICAgRm9yIHRoZSBmb2xsb3dpbmcgZnVuY3Rpb25zLCBYIGFu ZCBZIGNvb3JkaW5hdGVzIGFyZSByZXBvcnRlZCBpbgogaW50ZWdlciBjaGFyYWN0ZXIgdW5p dHMsIGkuZS4sIG51bWJlcnMgb2YgbGluZXMgYW5kIGNvbHVtbnMKQEAgLTQ2MDgsNiArNDYz Myw0OSBAQCBDb29yZGluYXRlcyBhbmQgV2luZG93cwogQGVuZCBleGFtcGxlCiBAZW5kIGRl ZnVuCgorVGhlIGZvbGxvd2luZyBmdW5jdGlvbiByZXR1cm5zIHRoZSBsYXJnZXN0IHJlY3Rh bmdsZSB0aGF0IGNhbiBiZQoraW5zY3JpYmVkIGluIGEgd2luZG93IHdpdGhvdXQgY292ZXJp bmcgdGV4dCBkaXNwbGF5ZWQgaW4gdGhhdCB3aW5kb3cuCisKK0BkZWZ1biB3aW5kb3ctbGFy Z2VzdC1lbXB0eS1yZWN0YW5nbGUgJm9wdGlvbmFsIHdpbmRvdyBjb3VudCBtaW4td2lkdGgg bWluLWhlaWdodCBwb3NpdGlvbnMgbGVmdAorVGhpcyBmdW5jdGlvbiBjYWxjdWxhdGVzIHRo ZSBkaW1lbnNpb25zIG9mIHRoZSBsYXJnZXN0IGVtcHR5IHJlY3RhbmdsZQordGhhdCBjYW4g YmUgaW5zY3JpYmVkIGluIHRoZSBzcGVjaWZpZWQgQHZhcnt3aW5kb3d9J3MgdGV4dCBhcmVh LgorQHZhcnt3aW5kb3d9IG11c3QgYmUgYSBsaXZlIHdpbmRvdyBhbmQgZGVmYXVsdHMgdG8g dGhlIHNlbGVjdGVkIG9uZS4KKworVGhlIHJldHVybiB2YWx1ZSBpcyBhIHRyaXBsZSBvZiB0 aGUgd2lkdGggYW5kIHRoZSBzdGFydCBhbmQgZW5kCit5LWNvb3JkaW5hdGVzIG9mIHRoZSBs YXJnZXN0IHJlY3RhbmdsZSB0aGF0IGNhbiBiZSBpbnNjcmliZWQgaW50byB0aGUKK2VtcHR5 IHNwYWNlIChzcGFjZSBub3QgZGlzcGxheWluZyBhbnkgdGV4dCkgb2YgdGhlIHRleHQgYXJl YSBvZgorQHZhcnt3aW5kb3d9LiAgTm8geC1jb29yZGluYXRlcyBhcmUgcmV0dXJuZWQgYnkg dGhpcyBmdW5jdGlvbi0tLWFueSBzdWNoCityZWN0YW5nbGUgaXMgYXNzdW1lZCB0byBlbmQg YXQgdGhlIHJpZ2h0IGVkZ2Ugb2YgQHZhcnt3aW5kb3d9J3MgdGV4dAorYXJlYS4gIElmIG5v IGVtcHR5IHNwYWNlIGNhbiBiZSBmb3VuZCwgdGhlIHJldHVybiB2YWx1ZSBpcyBAY29kZXtu aWx9LgorCitUaGUgb3B0aW9uYWwgYXJndW1lbnQgQHZhcntjb3VudH0sIGlmIG5vbi1AY29k ZXtuaWx9LCBzcGVjaWZpZXMgYQorbWF4aW11bSBudW1iZXIgb2YgcmVjdGFuZ2xlcyB0byBy ZXR1cm4uICBUaGlzIG1lYW5zIHRoYXQgdGhlIHJldHVybgordmFsdWUgaXMgYSBsaXN0IG9m IHRyaXBsZXMgc3BlY2lmeWluZyByZWN0YW5nbGVzIHdpdGggdGhlIGxhcmdlc3QKK3JlY3Rh bmdsZSBmaXJzdC4gIEB2YXJ7Y291bnR9IGNhbiBiZSBhbHNvIGEgY29ucyBjZWxsIHdob3Nl IGNhcgorc3BlY2lmaWVzIHRoZSBudW1iZXIgb2YgcmVjdGFuZ2xlcyB0byByZXR1cm4gYW5k IHdob3NlIEBzY3tjZHJ9LCBpZgorbm9uLUBjb2Rle25pbH0sIHN0YXRlcyB0aGF0IGFsbCBy ZWN0YW5nbGVzIHJldHVybmVkIG11c3QgYmUgZGlzam9pbnQuCisKK1RoZSBvcHRpb25hbCBh cmd1bWVudHMgQHZhcnttaW4td2lkdGh9IGFuZCBAdmFye21pbi1oZWlnaHR9LCBpZgorbm9u LUBjb2Rle25pbH0sIHNwZWNpZnkgdGhlIG1pbmltdW0gd2lkdGggYW5kIGhlaWdodCBvZiBh bnkgcmVjdGFuZ2xlCityZXR1cm5lZC4KKworVGhlIG9wdGlvbmFsIGFyZ3VtZW50IEB2YXJ7 cG9zaXRpb25zfSwgaWYgbm9uLUBjb2Rle25pbH0sIGlzIGEgY29ucyBjZWxsCit3aG9zZSBA c2N7Y2FyfSBzcGVjaWZpZXMgdGhlIHVwcGVybW9zdCBhbmQgd2hvc2UgQHNje2Nkcn0gc3Bl Y2lmaWVzIHRoZQorbG93ZXJtb3N0IHBpeGVsIHBvc2l0aW9uIHRoYXQgbXVzdCBiZSBjb3Zl cmVkIGJ5IGFueSByZWN0YW5nbGUgcmV0dXJuZWQuCitUaGVzZSBwb3NpdGlvbnMgbWVhc3Vy ZSBmcm9tIHRoZSBzdGFydCBvZiB0aGUgdGV4dCBhcmVhIG9mIEB2YXJ7d2luZG93fS4KKwor VGhlIG9wdGlvbmFsIGFyZ3VtZW50IEB2YXJ7bGVmdH0sIGlmIG5vbi1AY29kZXtuaWx9LCBt ZWFucyB0byByZXR1cm4KK3ZhbHVlcyBzdWl0YWJsZSBmb3IgYnVmZmVycyBkaXNwbGF5aW5n IHJpZ2h0IHRvIGxlZnQgdGV4dC4gIEluIHRoYXQKK2Nhc2UsIGFueSByZWN0YW5nbGUgcmV0 dXJuZWQgaXMgYXNzdW1lZCB0byBzdGFydCBhdCB0aGUgbGVmdCBlZGdlIG9mCitAdmFye3dp bmRvd30ncyB0ZXh0IGFyZWEuCisKK05vdGUgdGhhdCB0aGlzIGZ1bmN0aW9uIGhhcyB0byBy ZXRyaWV2ZSB0aGUgZGltZW5zaW9ucyBvZiBlYWNoIGxpbmUgb2YKK0B2YXJ7d2luZG93fSdz IGdseXBoIG1hdHJpeCB2aWEgQGNvZGV7d2luZG93LWxpbmVzLXBpeGVsLWRpbWVuc2lvbnN9 CisoQHB4cmVme1NpemUgb2YgRGlzcGxheWVkIFRleHR9KS4gIEhlbmNlLCB0aGlzIGZ1bmN0 aW9uIG1heSBhbHNvIHJldHVybgorQGNvZGV7bmlsfSB3aGVuIHRoZSBjdXJyZW50IGdseXBo IG1hdHJpeCBvZiBAdmFye3dpbmRvd30gaXMgbm90Cit1cC10by1kYXRlLgorQGVuZCBkZWZ1 bgorCgogQG5vZGUgTW91c2UgV2luZG93IEF1dG8tc2VsZWN0aW9uCiBAc2VjdGlvbiBNb3Vz ZSBXaW5kb3cgQXV0by1zZWxlY3Rpb24KQEAgLTQ5MTEsMzcgKzQ5NzksNDUgQEAgV2luZG93 IFBhcmFtZXRlcnMKIFRoZSBmb2xsb3dpbmcgcGFyYW1ldGVycyBhcmUgY3VycmVudGx5IHVz ZWQgYnkgdGhlIHdpbmRvdyBtYW5hZ2VtZW50CiBjb2RlOgoKLUB0YWJsZSBAYXNpcwotQGl0 ZW0gQGNvZGV7ZGVsZXRlLXdpbmRvd30KK0B0YWJsZSBAY29kZQorQGl0ZW0gZGVsZXRlLXdp bmRvdworQHZpbmRleCBkZWxldGUtd2luZG93LCBhIHdpbmRvdyBwYXJhbWV0ZXIKIFRoaXMg cGFyYW1ldGVyIGFmZmVjdHMgdGhlIGV4ZWN1dGlvbiBvZiBAY29kZXtkZWxldGUtd2luZG93 fQogKEBweHJlZntEZWxldGluZyBXaW5kb3dzfSkuCgotQGl0ZW0gQGNvZGV7ZGVsZXRlLW90 aGVyLXdpbmRvd3N9CitAaXRlbSBkZWxldGUtb3RoZXItd2luZG93cworQHZpbmRleCBkZWxl dGUtb3RoZXItd2luZG93cywgYSB3aW5kb3cgcGFyYW1ldGVyCiBUaGlzIHBhcmFtZXRlciBh ZmZlY3RzIHRoZSBleGVjdXRpb24gb2YgQGNvZGV7ZGVsZXRlLW90aGVyLXdpbmRvd3N9CiAo QHB4cmVme0RlbGV0aW5nIFdpbmRvd3N9KS4KCi1AaXRlbSBAY29kZXtuby1kZWxldGUtb3Ro ZXItd2luZG93fQorQGl0ZW0gbm8tZGVsZXRlLW90aGVyLXdpbmRvdworQHZpbmRleCBuby1k ZWxldGUtb3RoZXItd2luZG93LCBhIHdpbmRvdyBwYXJhbWV0ZXIKIFRoaXMgcGFyYW1ldGVy IG1hcmtzIHRoZSB3aW5kb3cgYXMgbm90IGRlbGV0YWJsZSBieQogQGNvZGV7ZGVsZXRlLW90 aGVyLXdpbmRvd3N9IChAcHhyZWZ7RGVsZXRpbmcgV2luZG93c30pLgoKLUBpdGVtIEBjb2Rl e3NwbGl0LXdpbmRvd30KK0BpdGVtIHNwbGl0LXdpbmRvdworQHZpbmRleCBzcGxpdC13aW5k b3csIGEgd2luZG93IHBhcmFtZXRlcgogVGhpcyBwYXJhbWV0ZXIgYWZmZWN0cyB0aGUgZXhl Y3V0aW9uIG9mIEBjb2Rle3NwbGl0LXdpbmRvd30KIChAcHhyZWZ7U3BsaXR0aW5nIFdpbmRv d3N9KS4KCi1AaXRlbSBAY29kZXtvdGhlci13aW5kb3d9CitAaXRlbSBvdGhlci13aW5kb3cK K0B2aW5kZXggb3RoZXItd2luZG93LCBhIHdpbmRvdyBwYXJhbWV0ZXIKIFRoaXMgcGFyYW1l dGVyIGFmZmVjdHMgdGhlIGV4ZWN1dGlvbiBvZiBAY29kZXtvdGhlci13aW5kb3d9CiAoQHB4 cmVme0N5Y2xpYyBXaW5kb3cgT3JkZXJpbmd9KS4KCi1AaXRlbSBAY29kZXtuby1vdGhlci13 aW5kb3d9CitAaXRlbSBuby1vdGhlci13aW5kb3cKK0B2aW5kZXggbm8tb3RoZXItd2luZG93 LCBhIHdpbmRvdyBwYXJhbWV0ZXIKIFRoaXMgcGFyYW1ldGVyIG1hcmtzIHRoZSB3aW5kb3cg YXMgbm90IHNlbGVjdGFibGUgYnkgQGNvZGV7b3RoZXItd2luZG93fQogKEBweHJlZntDeWNs aWMgV2luZG93IE9yZGVyaW5nfSkuCgotQGl0ZW0gQGNvZGV7Y2xvbmUtb2Z9CitAaXRlbSBj bG9uZS1vZgorQHZpbmRleCBjbG9uZS1vZiwgYSB3aW5kb3cgcGFyYW1ldGVyCiBUaGlzIHBh cmFtZXRlciBzcGVjaWZpZXMgdGhlIHdpbmRvdyB0aGF0IHRoaXMgb25lIGhhcyBiZWVuIGNs b25lZAogZnJvbS4gIEl0IGlzIGluc3RhbGxlZCBieSBAY29kZXt3aW5kb3ctc3RhdGUtZ2V0 fSAoQHB4cmVme1dpbmRvdwogQ29uZmlndXJhdGlvbnN9KS4KCi1AaXRlbSBAY29kZXtwcmVz ZXJ2ZWQtc2l6ZX0KK0BpdGVtIHByZXNlcnZlZC1zaXplCitAdmluZGV4IHByZXNlcnZlZC1z aXplLCBhIHdpbmRvdyBwYXJhbWV0ZXIKIFRoaXMgcGFyYW1ldGVyIHNwZWNpZmllcyBhIGJ1 ZmZlciwgYSBkaXJlY3Rpb24gd2hlcmUgQGNvZGV7bmlsfSBtZWFucwogdmVydGljYWwgYW5k IEBjb2Rle3R9IGhvcml6b250YWwsIGFuZCBhIHNpemUgaW4gcGl4ZWxzLiAgSWYgdGhpcyB3 aW5kb3cKIGRpc3BsYXlzIHRoZSBzcGVjaWZpZWQgYnVmZmVyIGFuZCBpdHMgc2l6ZSBpbiB0 aGUgaW5kaWNhdGVkIGRpcmVjdGlvbgpAQCAtNDk1MCw3ICs1MDI2LDggQEAgV2luZG93IFBh cmFtZXRlcnMKIHBhcmFtZXRlciBpcyBpbnN0YWxsZWQgYW5kIHVwZGF0ZWQgYnkgdGhlIGZ1 bmN0aW9uCiBAY29kZXt3aW5kb3ctcHJlc2VydmUtc2l6ZX0gKEBweHJlZntQcmVzZXJ2aW5n IFdpbmRvdyBTaXplc30pLgoKLUBpdGVtIEBjb2Rle3F1aXQtcmVzdG9yZX0KK0BpdGVtIHF1 aXQtcmVzdG9yZQorQHZpbmRleCBxdWl0LXJlc3RvcmUsIGEgd2luZG93IHBhcmFtZXRlcgog VGhpcyBwYXJhbWV0ZXIgaXMgaW5zdGFsbGVkIGJ5IHRoZSBidWZmZXIgZGlzcGxheSBmdW5j dGlvbnMKIChAcHhyZWZ7Q2hvb3NpbmcgV2luZG93fSkgYW5kIGNvbnN1bHRlZCBieSBAY29k ZXtxdWl0LXJlc3RvcmUtd2luZG93fQogKEBweHJlZntRdWl0dGluZyBXaW5kb3dzfSkuICBJ dCBjb250YWlucyBmb3VyIGVsZW1lbnRzOgpAQCAtNDk4MSwxNSArNTA1OCwzNyBAQCBXaW5k b3cgUGFyYW1ldGVycwogU2VlIHRoZSBkZXNjcmlwdGlvbiBvZiBAY29kZXtxdWl0LXJlc3Rv cmUtd2luZG93fSBpbiBAcmVme1F1aXR0aW5nCiBXaW5kb3dzfSBmb3IgZGV0YWlscy4KCi1A aXRlbSBAY29kZXt3aW5kb3ctc2lkZX0gQGNvZGV7d2luZG93LXNsb3R9CitAaXRlbSB3aW5k b3ctc2lkZSB3aW5kb3ctc2xvdAorQHZpbmRleCB3aW5kb3ctc2lkZSwgYSB3aW5kb3cgcGFy YW1ldGVyCitAdmluZGV4IHdpbmRvdy1zbG90LCBhIHdpbmRvdyBwYXJhbWV0ZXIKIFRoZXNl IHBhcmFtZXRlcnMgYXJlIHVzZWQgZm9yIGltcGxlbWVudGluZyBzaWRlIHdpbmRvd3MgKEBw eHJlZntTaWRlCiBXaW5kb3dzfSkuCgotQGl0ZW0gQGNvZGV7d2luZG93LWF0b219CitAaXRl bSB3aW5kb3ctYXRvbQorQHZpbmRleCB3aW5kb3ctYXRvbSwgYSB3aW5kb3cgcGFyYW1ldGVy CiBUaGlzIHBhcmFtZXRlciBpcyB1c2VkIGZvciBpbXBsZW1lbnRpbmcgYXRvbWljIHdpbmRv d3MsIHNlZSBAcmVme0F0b21pYwogV2luZG93c30uCgotQGl0ZW0gQGNvZGV7bWluLW1hcmdp bnN9CitAaXRlbSBtb2RlLWxpbmUtZm9ybWF0CitAdmluZGV4IG1vZGUtbGluZS1mb3JtYXQs IGEgd2luZG93IHBhcmFtZXRlcgorVGhpcyBwYXJhbWV0ZXIgcmVwbGFjZXMgdGhlIHZhbHVl IG9mIHRoZSBidWZmZXItbG9jYWwgdmFyaWFibGUKK0Bjb2Rle21vZGUtbGluZS1mb3JtYXR9 IChAcHhyZWZ7TW9kZSBMaW5lIEJhc2ljc30pIG9mIHRoaXMgd2luZG93J3MKK2J1ZmZlciB3 aGVuZXZlciB0aGlzIHdpbmRvdyBpcyBkaXNwbGF5ZWQuICBUaGUgc3ltYm9sIEBjb2Rle25v bmV9IG1lYW5zCit0byBzdXBwcmVzcyBkaXNwbGF5IG9mIGEgbW9kZSBsaW5lIGZvciB0aGlz IHdpbmRvdy4gIERpc3BsYXkgYW5kCitjb250ZW50cyBvZiB0aGUgbW9kZSBsaW5lIG9uIG90 aGVyIHdpbmRvd3Mgc2hvd2luZyB0aGlzIGJ1ZmZlciBhcmUgbm90CithZmZlY3RlZC4KKwor QGl0ZW0gaGVhZGVyLWxpbmUtZm9ybWF0CitAdmluZGV4IGhlYWRlci1saW5lLWZvcm1hdCwg YSB3aW5kb3cgcGFyYW1ldGVyCitUaGlzIHBhcmFtZXRlciByZXBsYWNlcyB0aGUgdmFsdWUg b2YgdGhlIGJ1ZmZlci1sb2NhbCB2YXJpYWJsZQorQGNvZGV7aGVhZGVyLWxpbmUtZm9ybWF0 fSAoQHB4cmVme01vZGUgTGluZSBCYXNpY3N9KSBvZiB0aGlzIHdpbmRvdydzCitidWZmZXIg d2hlbmV2ZXIgdGhpcyB3aW5kb3cgaXMgZGlzcGxheWVkLiAgVGhlIHN5bWJvbCBAY29kZXtu b25lfSBtZWFucwordG8gc3VwcHJlc3MgZGlzcGxheSBvZiBhIGhlYWRlciBsaW5lIGZvciB0 aGlzIHdpbmRvdy4gIERpc3BsYXkgYW5kCitjb250ZW50cyBvZiB0aGUgaGVhZGVyIGxpbmUg b24gb3RoZXIgd2luZG93cyBzaG93aW5nIHRoaXMgYnVmZmVyIGFyZSBub3QKK2FmZmVjdGVk LgorCitAaXRlbSBtaW4tbWFyZ2lucworQHZpbmRleCBtaW4tbWFyZ2lucywgYSB3aW5kb3cg cGFyYW1ldGVyCiBUaGUgdmFsdWUgb2YgdGhpcyBwYXJhbWV0ZXIgaXMgYSBjb25zIGNlbGwg d2hvc2UgQHNje2Nhcn0gYW5kIEBzY3tjZHJ9LAogaWYgbm9uLUBjb2Rle25pbH0sIHNwZWNp ZnkgdGhlIG1pbmltdW0gdmFsdWVzIChpbiBjb2x1bW5zKSBmb3IgdGhlIGxlZnQKIGFuZCBy aWdodCBtYXJnaW4gb2YgdGhpcyB3aW5kb3cuICBXaGVuIHByZXNlbnQsIEVtYWNzIHdpbGwg dXNlIHRoZXNlCmRpZmYgLS1naXQgYS9ldGMvTkVXUyBiL2V0Yy9ORVdTCmluZGV4IDc4ZDM3 NDg0Li40MzBiYWI0IDEwMDY0NAotLS0gYS9ldGMvTkVXUworKysgYi9ldGMvTkVXUwpAQCAt MTIwMyw3ICsxMjAzLDcgQEAgcnVuLgogZnJhbWUncyBvdXRlciBib3JkZXIuCgogKysrCi0q KiogTmV3IGZyYW1lIHBhcmFtZXRlcnMKKyoqKiBOZXcgZnJhbWUgcGFyYW1ldGVycyBhbmQg Y2hhbmdlZCBzZW1hbnRpY3MgZm9yIG9sZGVyIG9uZXMKCiArKysKICoqKiogJ3otZ3JvdXAn IHBvc2l0aW9ucyBhIGZyYW1lIGFib3ZlIG9yIGJlbG93IGFsbCBvdGhlcnMuCkBAIC0xMjQ4 LDEwICsxMjQ4LDMyIEBAIGZvY3VzIHZpYSB0aGUgbW91c2UuCiBmcmFtZS4KCiArKysKLSoq KiBUaGUgJ3dpZHRoJyBhbmQgJ2hlaWdodCcgZnJhbWUgcGFyYW1ldGVycyBhbGxvdyB0byBz cGVjaWZ5IHBpeGVsCi12YWx1ZXMgbm93LgorKioqKiAnd2lkdGgnIGFuZCAnaGVpZ2h0JyBh bGxvdyB0byBzcGVjaWZ5IHBpeGVsIHZhbHVlcyBhbmQgcmF0aW9zIG5vdy4KCiArKysKKyoq KiogJ2xlZnQnIGFuZCAndG9wJyBhbGxvdyB0byBzcGVjaWZ5IHJhdGlvcyBub3cuCisKKysr KworKioqKiAna2VlcC1yYXRpbycgcHJlc2VydmVzIHNpemUgYW5kIHBvc2l0aW9uIG9mIGNo aWxkIGZyYW1lcyB3aGVuIHRoZWlyCitwYXJlbnQgZnJhbWUgaXMgcmVzaXplZC4KKworKysr CisqKioqICduby1zcGVjaWFsLWdseXBocycgc3VwcHJlc3NlcyBkaXNwbGF5IG9mIHRydW5j YXRpb24gYW5kCitjb250aW51YXRpb24gZ2x5cGhzIGluIGEgZnJhbWUuCisKKysrKworKioq KiAnYXV0by1oaWRlLWZ1bmN0aW9uJyBhbmQgJ21pbmlidWZmZXItZXhpdCcgaGFuZGxlIGF1 dG8gaGlkaW5nIG9mCitmcmFtZXMgYW5kIGV4aXRpbmcgZnJvbSBtaW5pYnVmZmVyIGluZGl2 aWR1YWxseS4KKworKysrCisqKioqICdmaXQtZnJhbWUtdG8tYnVmZmVyLW1hcmdpbnMnIGFu ZCAnZml0LWZyYW1lLXRvLWJ1ZmZlci1zaXplcycKK2hhbmRsZSBmaXR0aW5nIGEgZnJhbWUg dG8gaXRzIGJ1ZmZlciBpbmRpdmlkdWFsbHkuCisKKysrKworKioqKiAnZHJhZy1pbnRlcm5h bC1ib3JkZXInLCAnZHJhZy13aXRoLWhlYWRlci1saW5lJywKKydkcmFnLXdpdGgtbW9kZS1s aW5lJywgJ3NuYXAtd2lkdGgnLCAndG9wLXZpc2libGUnIGFuZCAnYm90dG9tLXZpc2libGUn CithbGxvdyB0byBkcmFnIGFuZCByZXNpemUgZnJhbWVzIHdpdGggdGhlIG1vdXNlLgorCiAq KiogVGhlIG5ldyBmdW5jdGlvbiAnZnJhbWUtbGlzdC16LW9yZGVyJyByZXR1cm5zIGEgbGlz dCBvZiBhbGwgZnJhbWVzCiBpbiBaIChzdGFja2luZykgb3JkZXIuCgpAQCAtMTMxMCw2ICsx MzMyLDEwIEBAIGEgbmV3IHdpbmRvdyB3aGVuIG9wZW5pbmcgbWFuIHBhZ2VzIHdoZW4gdGhl cmUncyBhbHJlYWR5IG9uZSwgdXNlCiBpdHMgd2luZG93IGdldHMgZGVsZXRlZCBieSAnZGVs ZXRlLW90aGVyLXdpbmRvd3MnLgoKICsrKworKioqIE5ldyB3aW5kb3cgcGFyYW1ldGVycyAn bW9kZS1saW5lLWZvcm1hdCcgYW5kICdoZWFkZXItbGluZS1mb3JtYXQnCithbGxvdyB0byBv dmVycmlkZSB0aGUgYnVmZmVyLWxvY2FsIGZvcm1hdHMgZm9yIHRoaXMgd2luZG93LgorCisr KysKICoqKiBOZXcgY29tbWFuZCAnd2luZG93LXN3YXAtc3RhdGVzJyBzd2FwcyB0aGUgc3Rh dGVzIG9mIHR3byBsaXZlCiB3aW5kb3dzLgoKQEAgLTEzMTksNiArMTM0NSwxNSBAQCB3aW5k b3dzLgogd2luZG93IGNoYW5nZWQgc2l6ZSB3aGVuICd3aW5kb3ctc2l6ZS1jaGFuZ2UtZnVu Y3Rpb25zJyBhcmUgcnVuLgoKICsrKworKioqIFRoZSBuZXcgZnVuY3Rpb24gJ3dpbmRvdy1s aW5lcy1waXhlbC1kaW1lbnNpb25zJyByZXR1cm5zIHRoZSBwaXhlbAorZGltZW5zaW9ucyBv ZiBhIHdpbmRvdydzIHRleHQgbGluZXMuCisKKysrKworKioqIFRoZSBuZXcgZnVuY3Rpb24g J3dpbmRvdy1sYXJnZXN0LWVtcHR5LXJlY3RhbmdsZScgcmV0dXJucyB0aGUKK2RpbWVuc2lv bnMgb2YgdGhlIGxhcmdlc3QgcmVjdGFuZ3VsYXIgYXJlYSBub3Qgb2NjdXB5aW5nIGFueSB0 ZXh0IGluIGEKK3dpbmRvdydzIGJvZHkuCisKKysrKwogKioqIFRoZSBzZW1hbnRpY3Mgb2Yg J21vdXNlLWF1dG9zZWxlY3Qtd2luZG93JyBoYXMgY2hhbmdlZCBzbGlnaHRseS4KIEZvciBk ZXRhaWxzIHNlZSB0aGUgc2VjdGlvbiAiTW91c2UgV2luZG93IEF1dG8tc2VsZWN0aW9uIiBp biB0aGUgRWxpc3AKIG1hbnVhbC4KQEAgLTEzNjQsNyArMTM5OSw3IEBAIFRoaXMgaXMgaW4g Y29udHJhc3QgdG8gdGhlIGRlZmF1bHQgYWN0aW9uIG9uIFBPU0lYIFN5c3RlbXMsIHdoZXJl IGl0CiBjYXVzZXMgdGhlIHJlY2VpdmluZyBwcm9jZXNzIHRvIHRlcm1pbmF0ZSB3aXRoIGEg Y29yZSBkdW1wIGlmIG5vCiBkZWJ1Z2dlciBoYXMgYmVlbiBhdHRhY2hlZCB0byBpdC4KCi0q KiBgc2V0LW1vdXNlLXBvc2l0aW9uJyBhbmQgYHNldC1tb3VzZS1hYnNvbHV0ZS1waXhlbC1w b3NpdGlvbicgd29yaworKiogJ3NldC1tb3VzZS1wb3NpdGlvbicgYW5kICdzZXQtbW91c2Ut YWJzb2x1dGUtcGl4ZWwtcG9zaXRpb24nIHdvcmsKIG9uIG1hY09TLgoKIAwKZGlmZiAtLWdp dCBhL2xpc3AvZnJhbWUuZWwgYi9saXNwL2ZyYW1lLmVsCmluZGV4IGI3YTU1MTYuLmI1NGRm NmYgMTAwNjQ0Ci0tLSBhL2xpc3AvZnJhbWUuZWwKKysrIGIvbGlzcC9mcmFtZS5lbApAQCAt MTExMCw2ICsxMTEwLDM4IEBAIGZyYW1lLXdpZHRoCiBJZiBGUkFNRSBpcyBvbWl0dGVkLCBk ZXNjcmliZSB0aGUgY3VycmVudGx5IHNlbGVjdGVkIGZyYW1lLiIKICAgKGNkciAoYXNzcSAn d2lkdGggKGZyYW1lLXBhcmFtZXRlcnMgZnJhbWUpKSkpCgorKGRlZmFsaWFzICdmcmFtZS1i b3JkZXItd2lkdGggJ2ZyYW1lLWludGVybmFsLWJvcmRlci13aWR0aCkKKyhkZWZhbGlhcyAn ZnJhbWUtcGl4ZWwtd2lkdGggJ2ZyYW1lLW5hdGl2ZS13aWR0aCkKKyhkZWZhbGlhcyAnZnJh bWUtcGl4ZWwtaGVpZ2h0ICdmcmFtZS1uYXRpdmUtaGVpZ2h0KQorCisoZGVmdW4gZnJhbWUt aW5uZXItd2lkdGggKCZvcHRpb25hbCBmcmFtZSkKKyAgIlJldHVybiBpbm5lciB3aWR0aCBv ZiBGUkFNRSBpbiBwaXhlbHMuCitGUkFNRSBkZWZhdWx0cyB0byB0aGUgc2VsZWN0ZWQgZnJh bWUuIgorICAoc2V0cSBmcmFtZSAod2luZG93LW5vcm1hbGl6ZS1mcmFtZSBmcmFtZSkpCisg ICgtIChmcmFtZS1uYXRpdmUtd2lkdGggZnJhbWUpCisgICAgICgqIDIgKGZyYW1lLWludGVy bmFsLWJvcmRlci13aWR0aCBmcmFtZSkpKSkKKworKGRlZnVuIGZyYW1lLWlubmVyLWhlaWdo dCAoJm9wdGlvbmFsIGZyYW1lKQorICAiUmV0dXJuIGlubmVyIGhlaWdodCBvZiBGUkFNRSBp biBwaXhlbHMuCitGUkFNRSBkZWZhdWx0cyB0byB0aGUgc2VsZWN0ZWQgZnJhbWUuIgorICAo c2V0cSBmcmFtZSAod2luZG93LW5vcm1hbGl6ZS1mcmFtZSBmcmFtZSkpCisgICgtIChmcmFt ZS1uYXRpdmUtaGVpZ2h0IGZyYW1lKQorICAgICAoKiAyIChmcmFtZS1pbnRlcm5hbC1ib3Jk ZXItd2lkdGggZnJhbWUpKSkpCisKKyhkZWZ1biBmcmFtZS1vdXRlci13aWR0aCAoJm9wdGlv bmFsIGZyYW1lKQorICAiUmV0dXJuIG91dGVyIHdpZHRoIG9mIEZSQU1FIGluIHBpeGVscy4K K0ZSQU1FIGRlZmF1bHRzIHRvIHRoZSBzZWxlY3RlZCBmcmFtZS4iCisgIChzZXRxIGZyYW1l ICh3aW5kb3ctbm9ybWFsaXplLWZyYW1lIGZyYW1lKSkKKyAgKGxldCAoKGVkZ2VzIChmcmFt ZS1lZGdlcyBmcmFtZSAnb3V0ZXItZWRnZXMpKSkKKyAgICAoLSAobnRoIDIgZWRnZXMpIChu dGggMCBlZGdlcykpKSkKKworKGRlZnVuIGZyYW1lLW91dGVyLWhlaWdodCAoJm9wdGlvbmFs IGZyYW1lKQorICAiUmV0dXJuIG91dGVyIGhlaWdodCBvZiBGUkFNRSBpbiBwaXhlbHMuCitG UkFNRSBkZWZhdWx0cyB0byB0aGUgc2VsZWN0ZWQgZnJhbWUuIgorICAoc2V0cSBmcmFtZSAo d2luZG93LW5vcm1hbGl6ZS1mcmFtZSBmcmFtZSkpCisgIChsZXQgKChlZGdlcyAoZnJhbWUt ZWRnZXMgZnJhbWUgJ291dGVyLWVkZ2VzKSkpCisgICAgKC0gKG50aCAzIGVkZ2VzKSAobnRo IDEgZWRnZXMpKSkpCisKIChkZWNsYXJlLWZ1bmN0aW9uIHgtbGlzdC1mb250cyAieGZhY2Vz LmMiCiAgICAgICAgICAgICAgICAgICAocGF0dGVybiAmb3B0aW9uYWwgZmFjZSBmcmFtZSBt YXhpbXVtIHdpZHRoKSkKCmRpZmYgLS1naXQgYS9saXNwL21pbmlidWZmZXIuZWwgYi9saXNw L21pbmlidWZmZXIuZWwKaW5kZXggYzM0ODBjZC4uZTViMTAyOSAxMDA2NDQKLS0tIGEvbGlz cC9taW5pYnVmZmVyLmVsCisrKyBiL2xpc3AvbWluaWJ1ZmZlci5lbApAQCAtNzQ2LDcgKzc0 Niw3IEBAIGNvbXBsZXRpb24tc2hvdy1pbmxpbmUtaGVscAoKIChkZWZjdXN0b20gY29tcGxl dGlvbi1hdXRvLWhlbHAgdAogICAiTm9uLW5pbCBtZWFucyBhdXRvbWF0aWNhbGx5IHByb3Zp ZGUgaGVscCBmb3IgaW52YWxpZCBjb21wbGV0aW9uIGlucHV0LgotSWYgdGhlIHZhbHVlIGlz IHQgdGhlICpDb21wbGV0aW9uKiBidWZmZXIgaXMgZGlzcGxheWVkIHdoZW5ldmVyIGNvbXBs ZXRpb24KK0lmIHRoZSB2YWx1ZSBpcyB0IHRoZSAqQ29tcGxldGlvbnMqIGJ1ZmZlciBpcyBk aXNwbGF5ZWQgd2hlbmV2ZXIgY29tcGxldGlvbgogaXMgcmVxdWVzdGVkIGJ1dCBjYW5ub3Qg YmUgZG9uZS4KIElmIHRoZSB2YWx1ZSBpcyBgbGF6eScsIHRoZSAqQ29tcGxldGlvbnMqIGJ1 ZmZlciBpcyBvbmx5IGRpc3BsYXllZCBhZnRlcgogdGhlIHNlY29uZCBmYWlsZWQgYXR0ZW1w dCB0byBjb21wbGV0ZS4iCmRpZmYgLS1naXQgYS9saXNwL21vdXNlLmVsIGIvbGlzcC9tb3Vz ZS5lbAppbmRleCA5YjZiMTY5Li5lMDc5NDQzIDEwMDY0NAotLS0gYS9saXNwL21vdXNlLmVs CisrKyBiL2xpc3AvbW91c2UuZWwKQEAgLTM4MCw3ICszODAsNyBAQCBtb3VzZS1zcGxpdC13 aW5kb3ctaG9yaXpvbnRhbGx5CgogKGRlZnVuIG1vdXNlLWRyYWctbGluZSAoc3RhcnQtZXZl bnQgbGluZSkKICAgIkRyYWcgYSBtb2RlIGxpbmUsIGhlYWRlciBsaW5lLCBvciB2ZXJ0aWNh bCBsaW5lIHdpdGggdGhlIG1vdXNlLgotU1RBUlQtRVZFTlQgaXMgdGhlIHN0YXJ0aW5nIG1v dXNlLWV2ZW50IG9mIHRoZSBkcmFnIGFjdGlvbi4gIExJTkUKK1NUQVJULUVWRU5UIGlzIHRo ZSBzdGFydGluZyBtb3VzZSBldmVudCBvZiB0aGUgZHJhZyBhY3Rpb24uICBMSU5FCiBtdXN0 IGJlIG9uZSBvZiB0aGUgc3ltYm9scyBgaGVhZGVyJywgYG1vZGUnLCBvciBgdmVydGljYWwn LiIKICAgOzsgR2l2ZSB0ZW1wb3JhcnkgbW9kZXMgc3VjaCBhcyBpc2VhcmNoIGEgY2hhbmNl IHRvIHR1cm4gb2ZmLgogICAocnVuLWhvb2tzICdtb3VzZS1sZWF2ZS1idWZmZXItaG9vaykK QEAgLTQwNSwyOSArNDA1LDE1IEBAIG1vdXNlLWRyYWctbGluZQogICAgIDs7IHdpbmRvdydz IGVkZ2Ugd2UgZHJhZy4KICAgICAoY29uZAogICAgICAoKGVxIGxpbmUgJ2hlYWRlcikKLSAg ICAgIChpZiAod2luZG93LWF0LXNpZGUtcCB3aW5kb3cgJ3RvcCkKLQkgIDs7IFdlIGNhbid0 IGRyYWcgdGhlIGhlYWRlciBsaW5lIG9mIGEgdG9wbW9zdCB3aW5kb3cuCi0JICAoc2V0cSBk cmFnZ2FibGUgbmlsKQotCTs7IERyYWcgYm90dG9tIGVkZ2Ugb2Ygd2luZG93IGFib3ZlIHRo ZSBoZWFkZXIgbGluZS4KLQkoc2V0cSB3aW5kb3cgKHdpbmRvdy1pbi1kaXJlY3Rpb24gJ2Fi b3ZlIHdpbmRvdyB0KSkpKQotICAgICAoKGVxIGxpbmUgJ21vZGUpCi0gICAgICAoaWYgKGFu ZCAod2luZG93LWF0LXNpZGUtcCB3aW5kb3cgJ2JvdHRvbSkKLQkgICAgICAgOzsgQWxsb3cg cmVzaXppbmcgdGhlIG1pbmlidWZmZXIgd2luZG93IGlmIGl0J3Mgb24gdGhlCi0JICAgICAg IDs7IHNhbWUgZnJhbWUgYXMgYW5kIGltbWVkaWF0ZWx5IGJlbG93IGB3aW5kb3cnLCBhbmQg aXQncwotCSAgICAgICA7OyBlaXRoZXIgYWN0aXZlIG9yIGByZXNpemUtbWluaS13aW5kb3dz JyBpcyBuaWwuCi0JICAgICAgIChsZXQgKChtaW5pYnVmZmVyLXdpbmRvdyAobWluaWJ1ZmZl ci13aW5kb3cgZnJhbWUpKSkKLQkJIChub3QgKGFuZCAoZXEgKHdpbmRvdy1mcmFtZSBtaW5p YnVmZmVyLXdpbmRvdykgZnJhbWUpCi0JCQkgICAob3IgKG5vdCByZXNpemUtbWluaS13aW5k b3dzKQotCQkJICAgICAgIChlcSBtaW5pYnVmZmVyLXdpbmRvdwotCQkJCSAgIChhY3RpdmUt bWluaWJ1ZmZlci13aW5kb3cpKSkpKSkpCi0JICAoc2V0cSBkcmFnZ2FibGUgbmlsKSkpCisg ICAgICA7OyBEcmFnIGJvdHRvbSBlZGdlIG9mIHdpbmRvdyBhYm92ZSB0aGUgaGVhZGVyIGxp bmUuCisgICAgICAoc2V0cSB3aW5kb3cgKHdpbmRvdy1pbi1kaXJlY3Rpb24gJ2Fib3ZlIHdp bmRvdyB0KSkpCisgICAgICgoZXEgbGluZSAnbW9kZSkpCiAgICAgICgoZXEgbGluZSAndmVy dGljYWwpCiAgICAgICAobGV0ICgoZGl2aWRlci13aWR0aCAoZnJhbWUtcmlnaHQtZGl2aWRl ci13aWR0aCBmcmFtZSkpKQogICAgICAgICAod2hlbiAoYW5kIChvciAobm90IChudW1iZXJw IGRpdmlkZXItd2lkdGgpKQogICAgICAgICAgICAgICAgICAgICAgICAoemVyb3AgZGl2aWRl ci13aWR0aCkpCiAgICAgICAgICAgICAgICAgICAgKGVxIChmcmFtZS1wYXJhbWV0ZXIgZnJh bWUgJ3ZlcnRpY2FsLXNjcm9sbC1iYXJzKSAnbGVmdCkpCiAgICAgICAgICAgKHNldHEgd2lu ZG93ICh3aW5kb3ctaW4tZGlyZWN0aW9uICdsZWZ0IHdpbmRvdyB0KSkpKSkpCi0KICAgICAo bGV0KiAoKGV4aXRmdW4gbmlsKQogICAgICAgICAgICAobW92ZQogCSAgICAobGFtYmRhIChl dmVudCkgKGludGVyYWN0aXZlICJlIikKQEAgLTUzMCwyMCArNTE2LDQwNSBAQCBtb3VzZS1k cmFnLWxpbmUKIAkgICAgIHQgKGxhbWJkYSAoKSAoc2V0cSB0cmFjay1tb3VzZSBvbGQtdHJh Y2stbW91c2UpKSkpKSkpCgogKGRlZnVuIG1vdXNlLWRyYWctbW9kZS1saW5lIChzdGFydC1l dmVudCkKLSAgIkNoYW5nZSB0aGUgaGVpZ2h0IG9mIGEgd2luZG93IGJ5IGRyYWdnaW5nIG9u IHRoZSBtb2RlIGxpbmUuIgorICAiQ2hhbmdlIHRoZSBoZWlnaHQgb2YgYSB3aW5kb3cgYnkg ZHJhZ2dpbmcgb24gaXRzIG1vZGUgbGluZS4KK1NUQVJULUVWRU5UIGlzIHRoZSBzdGFydGlu ZyBtb3VzZSBldmVudCBvZiB0aGUgZHJhZyBhY3Rpb24uCisKK0lmIHRoZSBkcmFnIGhhcHBl bnMgaW4gYSBtb2RlIGxpbmUgb24gdGhlIGJvdHRvbSBvZiBhIGZyYW1lIGFuZAordGhhdCBm cmFtZSdzIGBkcmFnLXdpdGgtbW9kZS1saW5lJyBwYXJhbWV0ZXIgaXMgbm9uLW5pbCwgZHJh ZyB0aGUKK2ZyYW1lIGluc3RlYWQuIgogICAoaW50ZXJhY3RpdmUgImUiKQotICAobW91c2Ut ZHJhZy1saW5lIHN0YXJ0LWV2ZW50ICdtb2RlKSkKKyAgKGxldCogKChzdGFydCAoZXZlbnQt c3RhcnQgc3RhcnQtZXZlbnQpKQorCSAod2luZG93IChwb3NuLXdpbmRvdyBzdGFydCkpCisg ICAgICAgICAoZnJhbWUgKHdpbmRvdy1mcmFtZSB3aW5kb3cpKSkKKyAgICAoY29uZAorICAg ICAoKG5vdCAod2luZG93LWxpdmUtcCB3aW5kb3cpKSkKKyAgICAgKChvciAobm90ICh3aW5k b3ctYXQtc2lkZS1wIHdpbmRvdyAnYm90dG9tKSkKKyAgICAgICAgICA7OyBBbGxvdyByZXNp emluZyB0aGUgbWluaWJ1ZmZlciB3aW5kb3cgaWYgaXQncyBvbiB0aGUKKyAgICAgICAgICA7 OyBzYW1lIGZyYW1lIGFzIGFuZCBpbW1lZGlhdGVseSBiZWxvdyBgd2luZG93JywgYW5kIGl0 J3MKKyAgICAgICAgICA7OyBlaXRoZXIgYWN0aXZlIG9yIGByZXNpemUtbWluaS13aW5kb3dz JyBpcyBuaWwuCisgICAgICAgICAgKGxldCAoKG1pbmlidWZmZXItd2luZG93IChtaW5pYnVm ZmVyLXdpbmRvdyBmcmFtZSkpKQorICAgICAgICAgICAgKGFuZCAoZXEgKHdpbmRvdy1mcmFt ZSBtaW5pYnVmZmVyLXdpbmRvdykgZnJhbWUpCisgICAgICAgICAgICAgICAgIChvciAobm90 IHJlc2l6ZS1taW5pLXdpbmRvd3MpCisgICAgICAgICAgICAgICAgICAgICAoZXEgbWluaWJ1 ZmZlci13aW5kb3cKKyAgICAgICAgICAgICAgICAgICAgICAgICAoYWN0aXZlLW1pbmlidWZm ZXItd2luZG93KSkpKSkpCisgICAgICAobW91c2UtZHJhZy1saW5lIHN0YXJ0LWV2ZW50ICdt b2RlKSkKKyAgICAgKChhbmQgKGZyYW1lLXBhcmFtZXRlciBmcmFtZSAnZHJhZy13aXRoLW1v ZGUtbGluZSkKKyAgICAgICAgICAgKHdpbmRvdy1hdC1zaWRlLXAgd2luZG93ICdib3R0b20p CisgICAgICAgICAgIChsZXQgKChtaW5pYnVmZmVyLXdpbmRvdyAobWluaWJ1ZmZlci13aW5k b3cgZnJhbWUpKSkKKyAgICAgICAgICAgICAobm90IChlcSAod2luZG93LWZyYW1lIG1pbmli dWZmZXItd2luZG93KSBmcmFtZSkpKSkKKyAgICAgIDs7IERyYWcgZnJhbWUgd2hlbiB0aGUg d2luZG93IGlzIG9uIHRoZSBib3R0b20gb2YgaXRzIGZyYW1lIGFuZAorICAgICAgOzsgdGhl cmUgaXMgbm8gbWluaWJ1ZmZlciB3aW5kb3cgYmVsb3cuCisgICAgICAobW91c2UtZHJhZy1m cmFtZSBzdGFydC1ldmVudCAnbW92ZSkpKSkpCgogKGRlZnVuIG1vdXNlLWRyYWctaGVhZGVy LWxpbmUgKHN0YXJ0LWV2ZW50KQotICAiQ2hhbmdlIHRoZSBoZWlnaHQgb2YgYSB3aW5kb3cg YnkgZHJhZ2dpbmcgb24gdGhlIGhlYWRlciBsaW5lLiIKKyAgIkNoYW5nZSB0aGUgaGVpZ2h0 IG9mIGEgd2luZG93IGJ5IGRyYWdnaW5nIG9uIGl0cyBoZWFkZXIgbGluZS4KK1NUQVJULUVW RU5UIGlzIHRoZSBzdGFydGluZyBtb3VzZSBldmVudCBvZiB0aGUgZHJhZyBhY3Rpb24uCisK K0lmIHRoZSBkcmFnIGhhcHBlbnMgaW4gYSBoZWFkZXIgbGluZSBvbiB0aGUgdG9wIG9mIGEg ZnJhbWUgYW5kCit0aGF0IGZyYW1lJ3MgYGRyYWctd2l0aC1oZWFkZXItbGluZScgcGFyYW1l dGVyIGlzIG5vbi1uaWwsIGRyYWcKK3RoZSBmcmFtZSBpbnN0ZWFkLiIKICAgKGludGVyYWN0 aXZlICJlIikKLSAgKG1vdXNlLWRyYWctbGluZSBzdGFydC1ldmVudCAnaGVhZGVyKSkKKyAg KGxldCogKChzdGFydCAoZXZlbnQtc3RhcnQgc3RhcnQtZXZlbnQpKQorCSAod2luZG93IChw b3NuLXdpbmRvdyBzdGFydCkpKQorICAgIChpZiAoYW5kICh3aW5kb3ctbGl2ZS1wIHdpbmRv dykKKyAgICAgICAgICAgICAobm90ICh3aW5kb3ctYXQtc2lkZS1wIHdpbmRvdyAndG9wKSkp CisgICAgICAgIChtb3VzZS1kcmFnLWxpbmUgc3RhcnQtZXZlbnQgJ2hlYWRlcikKKyAgICAg IChsZXQgKChmcmFtZSAod2luZG93LWZyYW1lIHdpbmRvdykpKQorICAgICAgICAod2hlbiAo ZnJhbWUtcGFyYW1ldGVyIGZyYW1lICdkcmFnLXdpdGgtaGVhZGVyLWxpbmUpCisgICAgICAg ICAgKG1vdXNlLWRyYWctZnJhbWUgc3RhcnQtZXZlbnQgJ21vdmUpKSkpKSkKCiAoZGVmdW4g bW91c2UtZHJhZy12ZXJ0aWNhbC1saW5lIChzdGFydC1ldmVudCkKLSAgIkNoYW5nZSB0aGUg d2lkdGggb2YgYSB3aW5kb3cgYnkgZHJhZ2dpbmcgb24gdGhlIHZlcnRpY2FsIGxpbmUuIgor ICAiQ2hhbmdlIHRoZSB3aWR0aCBvZiBhIHdpbmRvdyBieSBkcmFnZ2luZyBvbiBhIHZlcnRp Y2FsIGxpbmUuCitTVEFSVC1FVkVOVCBpcyB0aGUgc3RhcnRpbmcgbW91c2UgZXZlbnQgb2Yg dGhlIGRyYWcgYWN0aW9uLiIKICAgKGludGVyYWN0aXZlICJlIikKICAgKG1vdXNlLWRyYWct bGluZSBzdGFydC1ldmVudCAndmVydGljYWwpKQogDAorKGRlZnVuIG1vdXNlLXJlc2l6ZS1m cmFtZSAoZnJhbWUgeC1kaWZmIHktZGlmZiAmb3B0aW9uYWwgeC1tb3ZlIHktbW92ZSkKKyAg IkhlbHBlciBmdW5jdGlvbiBmb3IgYG1vdXNlLWRyYWctZnJhbWUnLiIKKyAgKGxldCogKChm cmFtZS14LXkgKGZyYW1lLXBvc2l0aW9uIGZyYW1lKSkKKyAgICAgICAgIChmcmFtZS14IChj YXIgZnJhbWUteC15KSkKKyAgICAgICAgIChmcmFtZS15IChjZHIgZnJhbWUteC15KSkKKyAg ICAgICAgIGFsaXN0KQorICAgIChpZiAoPiB4LWRpZmYgMCkKKyAgICAgICAgKHdoZW4geC1t b3ZlCisgICAgICAgICAgKHNldHEgeC1kaWZmIChtaW4geC1kaWZmIGZyYW1lLXgpKQorICAg ICAgICAgIChzZXRxIHgtbW92ZSAoLSBmcmFtZS14IHgtZGlmZikpKQorICAgICAgKGxldCog KChtaW4td2lkdGggKGZyYW1lLXdpbmRvd3MtbWluLXNpemUgZnJhbWUgdCBuaWwgdCkpCisg ICAgICAgICAgICAgKG1pbi1kaWZmIChtYXggMCAoLSAoZnJhbWUtaW5uZXItd2lkdGggZnJh bWUpIG1pbi13aWR0aCkpKSkKKyAgICAgICAgKHNldHEgeC1kaWZmIChtYXggeC1kaWZmICgt IG1pbi1kaWZmKSkpCisgICAgICAgICh3aGVuIHgtbW92ZQorICAgICAgICAgIChzZXRxIHgt bW92ZSAoKyBmcmFtZS14ICgtIHgtZGlmZikpKSkpKQorCisgICAgKGlmICg+IHktZGlmZiAw KQorICAgICAgICAod2hlbiB5LW1vdmUKKyAgICAgICAgICAoc2V0cSB5LWRpZmYgKG1pbiB5 LWRpZmYgZnJhbWUteSkpCisgICAgICAgICAgKHNldHEgeS1tb3ZlICgtIGZyYW1lLXkgeS1k aWZmKSkpCisgICAgICAobGV0KiAoKG1pbi1oZWlnaHQgKGZyYW1lLXdpbmRvd3MtbWluLXNp emUgZnJhbWUgbmlsIG5pbCB0KSkKKyAgICAgICAgICAgICAobWluLWRpZmYgKG1heCAwICgt IChmcmFtZS1pbm5lci1oZWlnaHQgZnJhbWUpIG1pbi1oZWlnaHQpKSkpCisgICAgICAgIChz ZXRxIHktZGlmZiAobWF4IHktZGlmZiAoLSBtaW4tZGlmZikpKQorICAgICAgICAod2hlbiB5 LW1vdmUKKyAgICAgICAgICAoc2V0cSB5LW1vdmUgKCsgZnJhbWUteSAoLSB5LWRpZmYpKSkp KSkKKworICAgICh1bmxlc3MgKHplcm9wIHgtZGlmZikKKyAgICAgICh3aGVuIHgtbW92ZQor ICAgICAgICAocHVzaCBgKGxlZnQgLiAseC1tb3ZlKSBhbGlzdCkpCisgICAgICAocHVzaCBg KHdpZHRoIC4gKHRleHQtcGl4ZWxzIC4gLCgrIChmcmFtZS10ZXh0LXdpZHRoIGZyYW1lKSB4 LWRpZmYpKSkKKyAgICAgICAgICAgIGFsaXN0KSkKKyAgICAodW5sZXNzICh6ZXJvcCB5LWRp ZmYpCisgICAgICAod2hlbiB5LW1vdmUKKyAgICAgICAgKHB1c2ggYCh0b3AgLiAseS1tb3Zl KSBhbGlzdCkpCisgICAgICAocHVzaCBgKGhlaWdodCAuICh0ZXh0LXBpeGVscyAuICwoKyAo ZnJhbWUtdGV4dC1oZWlnaHQgZnJhbWUpIHktZGlmZikpKQorICAgICAgICAgICAgYWxpc3Qp KQorICAgICh3aGVuIGFsaXN0CisgICAgICAobW9kaWZ5LWZyYW1lLXBhcmFtZXRlcnMgZnJh bWUgYWxpc3QpKSkpCisKKyhkZWZ1biBtb3VzZS1kcmFnLWZyYW1lIChzdGFydC1ldmVudCBw YXJ0KQorICAiRHJhZyBhIGZyYW1lIG9yIG9uZSBvZiBpdHMgZWRnZXMgd2l0aCB0aGUgbW91 c2UuCitTVEFSVC1FVkVOVCBpcyB0aGUgc3RhcnRpbmcgbW91c2UgZXZlbnQgb2YgdGhlIGRy YWcgYWN0aW9uLiAgSXRzCitwb3NpdGlvbiB3aW5kb3cgZGVub3RlcyB0aGUgZnJhbWUgdGhh dCB3aWxsIGJlIGRyYWdnZWQuCisKK1BBUlQgc3BlY2lmaWVzIHRoZSBwYXJ0IHRoYXQgaGFz IGJlZW4gZHJhZ2dlZCBhbmQgbXVzdCBiZSBvbmUgb2YKK3RoZSBzeW1ib2xzICdsZWZ0Jywg J3RvcCcsICdyaWdodCcsICdib3R0b20nLCAndG9wLWxlZnQnLAorJ3RvcC1yaWdodCcsICdi b3R0b20tbGVmdCcsICdib3R0b20tcmlnaHQnIHRvIGRyYWcgYW4gaW50ZXJuYWwKK2JvcmRl ciBvciBlZGdlLiAgSWYgUEFSVCBlcXVhbHMgJ21vdmUnLCB0aGlzIG1lYW5zIHRvIG1vdmUg dGhlCitmcmFtZSB3aXRoIHRoZSBtb3VzZS4iCisgIDs7IEdpdmUgdGVtcG9yYXJ5IG1vZGVz IHN1Y2ggYXMgaXNlYXJjaCBhIGNoYW5jZSB0byB0dXJuIG9mZi4KKyAgKHJ1bi1ob29rcyAn bW91c2UtbGVhdmUtYnVmZmVyLWhvb2spCisgIChsZXQqICgoZWNoby1rZXlzdHJva2VzIDAp CisJIChzdGFydCAoZXZlbnQtc3RhcnQgc3RhcnQtZXZlbnQpKQorICAgICAgICAgKHdpbmRv dyAocG9zbi13aW5kb3cgc3RhcnQpKQorICAgICAgICAgOzsgRlJBTUUgaXMgdGhlIGZyYW1l IHRvIGRyYWcuCisgICAgICAgICAoZnJhbWUgKGlmICh3aW5kb3ctbGl2ZS1wIHdpbmRvdykK KyAgICAgICAgICAgICAgICAgICAgKHdpbmRvdy1mcmFtZSB3aW5kb3cpCisgICAgICAgICAg ICAgICAgICB3aW5kb3cpKQorICAgICAgICAgKHdpZHRoIChmcmFtZS1uYXRpdmUtd2lkdGgg ZnJhbWUpKQorICAgICAgICAgKGhlaWdodCAoZnJhbWUtbmF0aXZlLWhlaWdodCBmcmFtZSkp CisgICAgICAgICA7OyBQQVJFTlQgaXMgdGhlIHBhcmVudCBmcmFtZSBvZiBGUkFNRSBvciwg aWYgRlJBTUUgaXMgYQorICAgICAgICAgOzsgdG9wLWxldmVsIGZyYW1lLCBGUkFNRSdzIHdv cmthcmVhLgorICAgICAgICAgKHBhcmVudCAoZnJhbWUtcGFyZW50IGZyYW1lKSkKKyAgICAg ICAgIChwYXJlbnQtZWRnZXMKKyAgICAgICAgICAoaWYgcGFyZW50CisgICAgICAgICAgICAg IGAoMCAwICwoZnJhbWUtbmF0aXZlLXdpZHRoIHBhcmVudCkgLChmcmFtZS1uYXRpdmUtaGVp Z2h0IHBhcmVudCkpCisgICAgICAgICAgICAobGV0KiAoKGF0dHJpYnV0ZXMKKyAgICAgICAg ICAgICAgICAgICAgKGNhciAoZGlzcGxheS1tb25pdG9yLWF0dHJpYnV0ZXMtbGlzdCkpKQor ICAgICAgICAgICAgICAgICAgICh3b3JrYXJlYSAoYXNzcSAnd29ya2FyZWEgYXR0cmlidXRl cykpKQorICAgICAgICAgICAgICAoYW5kIHdvcmthcmVhCisgICAgICAgICAgICAgICAgICAg YCgsKG50aCAxIHdvcmthcmVhKSAsKG50aCAyIHdvcmthcmVhKQorICAgICAgICAgICAgICAg ICAgICAgLCgrIChudGggMSB3b3JrYXJlYSkgKG50aCAzIHdvcmthcmVhKSkKKyAgICAgICAg ICAgICAgICAgICAgICwoKyAobnRoIDIgd29ya2FyZWEpIChudGggNCB3b3JrYXJlYSkpKSkp KSkKKyAgICAgICAgIChwYXJlbnQtbGVmdCAoYW5kIHBhcmVudC1lZGdlcyAobnRoIDAgcGFy ZW50LWVkZ2VzKSkpCisgICAgICAgICAocGFyZW50LXRvcCAoYW5kIHBhcmVudC1lZGdlcyAo bnRoIDEgcGFyZW50LWVkZ2VzKSkpCisgICAgICAgICAocGFyZW50LXJpZ2h0IChhbmQgcGFy ZW50LWVkZ2VzIChudGggMiBwYXJlbnQtZWRnZXMpKSkKKyAgICAgICAgIChwYXJlbnQtYm90 dG9tIChhbmQgcGFyZW50LWVkZ2VzIChudGggMyBwYXJlbnQtZWRnZXMpKSkKKyAgICAgICAg IDs7IGBwb3MteCcgYW5kIGBwb3MteScgcmVjb3JkIHRoZSB4LSBhbmQgeS1jb29yZGluYXRl cyBvZiB0aGUKKwkgOzsgbGFzdCBzYW1wbGVkIG1vdXNlIHBvc2l0aW9uLiAgTm90ZSB0aGF0 IHdlIHNhbXBsZSBhYnNvbHV0ZQorCSA7OyBtb3VzZSBwb3NpdGlvbnMgdG8gYXZvaWQgdGhh dCBtb3ZpbmcgdGhlIG1vdXNlIGZyb20gb25lCisJIDs7IGZyYW1lIGludG8gYW5vdGhlciBn ZXRzIGludG8gb3VyIHdheS4gIGBsYXN0LXgnIGFuZCBgbGFzdC15JworCSA7OyByZWNvcmRz IHRoZSB4LSBhbmQgeS1jb29yZGluYXRlcyBvZiB0aGUgcHJldmlvdXNseSBzYW1wbGVkCisJ IDs7IHBvc2l0aW9uLiAgVGhlIGRpZmZlcmVuY2VzIGJldHdlZW4gYGxhc3QteCcgYW5kIGBw b3MteCcgYXMKKwkgOzsgd2VsbCBhcyBgbGFzdC15JyBhbmQgYHBvcy15JyBkZXRlcm1pbmUg dGhlIGFtb3VudCB0aGUgbW91c2UKKwkgOzsgaGFzIGJlZW4gZHJhZ2dlZCBiZXR3ZWVuIHRo ZSBsYXN0IHR3byBzYW1wbGVzLgorICAgICAgICAgcG9zLXgteSBwb3MteCBwb3MteQorICAg ICAgICAgKGxhc3QteC15IChtb3VzZS1hYnNvbHV0ZS1waXhlbC1wb3NpdGlvbikpCisgICAg ICAgICAobGFzdC14IChjYXIgbGFzdC14LXkpKQorICAgICAgICAgKGxhc3QteSAoY2RyIGxh c3QteC15KSkKKyAgICAgICAgIDs7IGBzbmFwLXgnIGFuZCBgc25hcC15JyByZWNvcmQgdGhl IHgtIGFuZCB5LWNvb3JkaW5hdGVzIG9mIHRoZQorICAgICAgICAgOzsgbW91c2UgcG9zaXRp b24gd2hlbiBGUkFNRSBzbmFwcGVkLiAgQXMgc29vbiBhcyB0aGUKKyAgICAgICAgIDs7IGRp ZmZlcmVuY2UgYmV0d2VlbiBgcG9zLXgnIGFuZCBgc25hcC14JyAob3IgYHBvcy15JyBhbmQK KyAgICAgICAgIDs7IGBzbmFwLXknKSBleGNlZWRzIHRoZSB2YWx1ZSBvZiBGUkFNRSdzIGBz bmFwLXdpZHRoJworICAgICAgICAgOzsgcGFyYW1ldGVyLCB1bnNuYXAgRlJBTUUgKGF0IHRo ZSByZXNwZWN0aXZlIHNpZGUpLiAgYHNuYXAteCcKKyAgICAgICAgIDs7IGFuZCBgc25hcC15 JyBuaWwgbWVhbiBGUkFNRSBpcyBjdXJlcm50bHkgbm90IHNuYXBwZWQuCisgICAgICAgICBz bmFwLXggc25hcC15CisgICAgICAgICAoZXhpdGZ1biBuaWwpCisgICAgICAgICAobW92ZQor ICAgICAgICAgIChsYW1iZGEgKGV2ZW50KQorICAgICAgICAgICAgKGludGVyYWN0aXZlICJl IikKKyAgICAgICAgICAgICh3aGVuIChjb25zcCBldmVudCkKKyAgICAgICAgICAgICAgKHNl dHEgcG9zLXgteSAobW91c2UtYWJzb2x1dGUtcGl4ZWwtcG9zaXRpb24pKQorICAgICAgICAg ICAgICAoc2V0cSBwb3MteCAoY2FyIHBvcy14LXkpKQorICAgICAgICAgICAgICAoc2V0cSBw b3MteSAoY2RyIHBvcy14LXkpKQorICAgICAgICAgICAgICAoY29uZAorICAgICAgICAgICAg ICAgKChlcSBwYXJ0ICdsZWZ0KQorICAgICAgICAgICAgICAgIChtb3VzZS1yZXNpemUtZnJh bWUgZnJhbWUgKC0gbGFzdC14IHBvcy14KSAwIHQpKQorICAgICAgICAgICAgICAgKChlcSBw YXJ0ICd0b3ApCisgICAgICAgICAgICAgICAgKG1vdXNlLXJlc2l6ZS1mcmFtZSBmcmFtZSAw ICgtIGxhc3QteSBwb3MteSkgbmlsIHQpKQorICAgICAgICAgICAgICAgKChlcSBwYXJ0ICdy aWdodCkKKyAgICAgICAgICAgICAgICAobW91c2UtcmVzaXplLWZyYW1lIGZyYW1lICgtIHBv cy14IGxhc3QteCkgMCkpCisgICAgICAgICAgICAgICAoKGVxIHBhcnQgJ2JvdHRvbSkKKyAg ICAgICAgICAgICAgICAobW91c2UtcmVzaXplLWZyYW1lIGZyYW1lIDAgKC0gcG9zLXkgbGFz dC15KSkpCisgICAgICAgICAgICAgICAoKGVxIHBhcnQgJ3RvcC1sZWZ0KQorICAgICAgICAg ICAgICAgIChtb3VzZS1yZXNpemUtZnJhbWUKKyAgICAgICAgICAgICAgICAgZnJhbWUgKC0g bGFzdC14IHBvcy14KSAoLSBsYXN0LXkgcG9zLXkpIHQgdCkpCisgICAgICAgICAgICAgICAo KGVxIHBhcnQgJ3RvcC1yaWdodCkKKyAgICAgICAgICAgICAgICAobW91c2UtcmVzaXplLWZy YW1lCisgICAgICAgICAgICAgICAgIGZyYW1lICgtIHBvcy14IGxhc3QteCkgKC0gbGFzdC15 IHBvcy15KSBuaWwgdCkpCisgICAgICAgICAgICAgICAoKGVxIHBhcnQgJ2JvdHRvbS1sZWZ0 KQorICAgICAgICAgICAgICAgIChtb3VzZS1yZXNpemUtZnJhbWUKKyAgICAgICAgICAgICAg ICAgZnJhbWUgKC0gbGFzdC14IHBvcy14KSAoLSBwb3MteSBsYXN0LXkpIHQpKQorICAgICAg ICAgICAgICAgKChlcSBwYXJ0ICdib3R0b20tcmlnaHQpCisgICAgICAgICAgICAgICAgKG1v dXNlLXJlc2l6ZS1mcmFtZQorICAgICAgICAgICAgICAgICBmcmFtZSAoLSBwb3MteCBsYXN0 LXgpICgtIHBvcy15IGxhc3QteSkpKQorICAgICAgICAgICAgICAgKChlcSBwYXJ0ICdtb3Zl KQorICAgICAgICAgICAgICAgIChsZXQqICgob2xkLXBvc2l0aW9uIChmcmFtZS1wb3NpdGlv biBmcmFtZSkpCisgICAgICAgICAgICAgICAgICAgICAgIChvbGQtbGVmdCAoY2FyIG9sZC1w b3NpdGlvbikpCisgICAgICAgICAgICAgICAgICAgICAgIChvbGQtdG9wIChjZHIgb2xkLXBv c2l0aW9uKSkKKyAgICAgICAgICAgICAgICAgICAgICAgKGxlZnQgKCsgb2xkLWxlZnQgKC0g cG9zLXggbGFzdC14KSkpCisgICAgICAgICAgICAgICAgICAgICAgICh0b3AgKCsgb2xkLXRv cCAoLSBwb3MteSBsYXN0LXkpKSkKKyAgICAgICAgICAgICAgICAgICAgICAgcmlnaHQgYm90 dG9tCisgICAgICAgICAgICAgICAgICAgICAgIDs7IGBzbmFwLXdpZHRoJyAobWF5YmUgYWxz byBhIHlldCB0byBiZSBwcm92aWRlZAorICAgICAgICAgICAgICAgICAgICAgICA7OyBgc25h cC1oZWlnaHQnKSBjb3VsZCBiZWNvbWUgZmxvYXRzIHRvIGhhbmRsZQorICAgICAgICAgICAg ICAgICAgICAgICA7OyBwcm9wb3J0aW9uYWxpdHkgd3J0IFBBUkVOVC4gIFdlIGRvbid0IGRv IGFueQorICAgICAgICAgICAgICAgICAgICAgICA7OyBjaGVja3Mgb24gdGhpcyBwYXJhbWV0 ZXIgc28gZmFyLgorICAgICAgICAgICAgICAgICAgICAgICAoc25hcC13aWR0aCAoZnJhbWUt cGFyYW1ldGVyIGZyYW1lICdzbmFwLXdpZHRoKSkpCisgICAgICAgICAgICAgICAgICA7OyBE b2NraW5nIGFuZCBjb25zdHJhaW5pbmcuCisgICAgICAgICAgICAgICAgICAod2hlbiAoYW5k IChudW1iZXJwIHNuYXAtd2lkdGgpIHBhcmVudC1lZGdlcykKKyAgICAgICAgICAgICAgICAg ICAgKGNvbmQKKyAgICAgICAgICAgICAgICAgICAgIDs7IERvY2tpbmcgYXQgdGhlIGxlZnQg cGFyZW50IGVkZ2UuCisgICAgICAgICAgICAgICAgICAgICAoKDwgcG9zLXggbGFzdC14KQor ICAgICAgICAgICAgICAgICAgICAgIChjb25kCisgICAgICAgICAgICAgICAgICAgICAgICgo YW5kICg+IGxlZnQgcGFyZW50LWxlZnQpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICg8PSAoLSBsZWZ0IHBhcmVudC1sZWZ0KSBzbmFwLXdpZHRoKSkKKyAgICAgICAgICAgICAg ICAgICAgICAgIDs7IFNuYXAgd2hlbiB0aGUgbW91c2UgbW92ZWQgbGVmdHdhcmQgYW5kCisg ICAgICAgICAgICAgICAgICAgICAgICA7OyBGUkFNRSdzIGxlZnQgZWRnZSB3b3VsZCBlbmQg dXAgd2l0aGluCisgICAgICAgICAgICAgICAgICAgICAgICA7OyBgc25hcC13aWR0aCcgcGl4 ZWxzIGZyb20gUEFSRU5UJ3MgbGVmdCBlZGdlLgorICAgICAgICAgICAgICAgICAgICAgICAg KHNldHEgc25hcC14IHBvcy14KQorICAgICAgICAgICAgICAgICAgICAgICAgKHNldHEgbGVm dCBwYXJlbnQtbGVmdCkpCisgICAgICAgICAgICAgICAgICAgICAgICgoYW5kICg8PSBsZWZ0 IHBhcmVudC1sZWZ0KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoPD0gKC0gcGFy ZW50LWxlZnQgbGVmdCkgc25hcC13aWR0aCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgc25hcC14ICg8PSAoLSBzbmFwLXggcG9zLXgpIHNuYXAtd2lkdGgpKQorICAgICAgICAg ICAgICAgICAgICAgICAgOzsgU3RheSBzbmFwcGVkIHdoZW4gdGhlIG1vdXNlIG1vdmVkIGxl ZnR3YXJkCisgICAgICAgICAgICAgICAgICAgICAgICA7OyBidXQgbm90IG1vcmUgdGhhbiBg c25hcC13aWR0aCcgcGl4ZWxzIGZyb20KKyAgICAgICAgICAgICAgICAgICAgICAgIDs7IHRo ZSB0aW1lIEZSQU1FIHNuYXBwZWQuCisgICAgICAgICAgICAgICAgICAgICAgICAoc2V0cSBs ZWZ0IHBhcmVudC1sZWZ0KSkKKyAgICAgICAgICAgICAgICAgICAgICAgKHQKKyAgICAgICAg ICAgICAgICAgICAgICAgIDs7IFVuc25hcCB3aGVuIHRoZSBtb3VzZSBtb3ZlZCBtb3JlIHRo YW4KKyAgICAgICAgICAgICAgICAgICAgICAgIDs7IGBzbmFwLXdpZHRoJyBwaXhlbHMgbGVm dHdhcmQgZnJvbSB0aGUgdGltZQorICAgICAgICAgICAgICAgICAgICAgICAgOzsgRlJBTUUg c25hcHBlZC4KKyAgICAgICAgICAgICAgICAgICAgICAgIChzZXRxIHNuYXAteCBuaWwpKSkp CisgICAgICAgICAgICAgICAgICAgICAoKD4gcG9zLXggbGFzdC14KQorICAgICAgICAgICAg ICAgICAgICAgIChzZXRxIHJpZ2h0ICgrIGxlZnQgd2lkdGgpKQorICAgICAgICAgICAgICAg ICAgICAgIChjb25kCisgICAgICAgICAgICAgICAgICAgICAgICgoYW5kICg8IHJpZ2h0IHBh cmVudC1yaWdodCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDw9ICgtIHBhcmVu dC1yaWdodCByaWdodCkgc25hcC13aWR0aCkpCisgICAgICAgICAgICAgICAgICAgICAgICA7 OyBTbmFwIHdoZW4gdGhlIG1vdXNlIG1vdmVkIHJpZ2h0d2FyZCBhbmQKKyAgICAgICAgICAg ICAgICAgICAgICAgIDs7IEZSQU1FJ3MgcmlnaHQgZWRnZSB3b3VsZCBlbmQgdXAgd2l0aGlu CisgICAgICAgICAgICAgICAgICAgICAgICA7OyBgc25hcC13aWR0aCcgcGl4ZWxzIGZyb20g UEFSRU5UJ3MgcmlnaHQgZWRnZS4KKyAgICAgICAgICAgICAgICAgICAgICAgIChzZXRxIHNu YXAteCBwb3MteCkKKyAgICAgICAgICAgICAgICAgICAgICAgIChzZXRxIGxlZnQgKC0gcGFy ZW50LXJpZ2h0IHdpZHRoKSkpCisgICAgICAgICAgICAgICAgICAgICAgICgoYW5kICg+PSBy aWdodCBwYXJlbnQtcmlnaHQpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICg8PSAo LSByaWdodCBwYXJlbnQtcmlnaHQpIHNuYXAtd2lkdGgpCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHNuYXAteCAoPD0gKC0gcG9zLXggc25hcC14KSBzbmFwLXdpZHRoKSkKKyAg ICAgICAgICAgICAgICAgICAgICAgIDs7IFN0YXkgc25hcHBlZCB3aGVuIHRoZSBtb3VzZSBt b3ZlZCByaWdodHdhcmQKKyAgICAgICAgICAgICAgICAgICAgICAgIDs7IGJ1dCBub3QgbW9y ZSBtb3JlIHRoYW4gYHNuYXAtd2lkdGgnIHBpeGVscworICAgICAgICAgICAgICAgICAgICAg ICAgOzsgZnJvbSB0aGUgdGltZSBGUkFNRSBzbmFwcGVkLgorICAgICAgICAgICAgICAgICAg ICAgICAgKHNldHEgbGVmdCAoLSBwYXJlbnQtcmlnaHQgd2lkdGgpKSkKKyAgICAgICAgICAg ICAgICAgICAgICAgKHQKKyAgICAgICAgICAgICAgICAgICAgICAgIDs7IFVuc25hcCB3aGVu IHRoZSBtb3VzZSBtb3ZlZCByaWdodHdhcmQgbW9yZQorICAgICAgICAgICAgICAgICAgICAg ICAgOzsgdGhhbiBgc25hcC13aWR0aCcgcGl4ZWxzIGZyb20gdGhlIHRpbWUgRlJBTUUKKyAg ICAgICAgICAgICAgICAgICAgICAgIDs7IHNuYXBwZWQuCisgICAgICAgICAgICAgICAgICAg ICAgICAoc2V0cSBzbmFwLXggbmlsKSkpKSkKKworICAgICAgICAgICAgICAgICAgICAoY29u ZAorICAgICAgICAgICAgICAgICAgICAgKCg8IHBvcy15IGxhc3QteSkKKyAgICAgICAgICAg ICAgICAgICAgICAoY29uZAorICAgICAgICAgICAgICAgICAgICAgICAoKGFuZCAoPiB0b3Ag cGFyZW50LXRvcCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDw9ICgtIHRvcCBw YXJlbnQtdG9wKSBzbmFwLXdpZHRoKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIDs7IFNu YXAgd2hlbiB0aGUgbW91c2UgbW92ZWQgdXB3YXJkIGFuZCBGUkFNRSdzCisgICAgICAgICAg ICAgICAgICAgICAgICA7OyB0b3AgZWRnZSB3b3VsZCBlbmQgdXAgd2l0aGluIGBzbmFwLXdp ZHRoJworICAgICAgICAgICAgICAgICAgICAgICAgOzsgcGl4ZWxzIGZyb20gUEFSRU5UJ3Mg dG9wIGVkZ2UuCisgICAgICAgICAgICAgICAgICAgICAgICAoc2V0cSBzbmFwLXkgcG9zLXkp CisgICAgICAgICAgICAgICAgICAgICAgICAoc2V0cSB0b3AgcGFyZW50LXRvcCkpCisgICAg ICAgICAgICAgICAgICAgICAgICgoYW5kICg8PSB0b3AgcGFyZW50LXRvcCkKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgKDw9ICgtIHBhcmVudC10b3AgdG9wKSBzbmFwLXdpZHRo KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzbmFwLXkgKDw9ICgtIHNuYXAteSBw b3MteSkgc25hcC13aWR0aCkpCisgICAgICAgICAgICAgICAgICAgICAgICA7OyBTdGF5IHNu YXBwZWQgd2hlbiB0aGUgbW91c2UgbW92ZWQgdXB3YXJkIGJ1dAorICAgICAgICAgICAgICAg ICAgICAgICAgOzsgbm90IG1vcmUgbW9yZSB0aGFuIGBzbmFwLXdpZHRoJyBwaXhlbHMgZnJv bQorICAgICAgICAgICAgICAgICAgICAgICAgOzsgdGhlIHRpbWUgRlJBTUUgc25hcHBlZC4K KyAgICAgICAgICAgICAgICAgICAgICAgIChzZXRxIHRvcCBwYXJlbnQtdG9wKSkKKyAgICAg ICAgICAgICAgICAgICAgICAgKHQKKyAgICAgICAgICAgICAgICAgICAgICAgIDs7IFVuc25h cCB3aGVuIHRoZSBtb3VzZSBtb3ZlZCB1cHdhcmQgbW9yZSB0aGFuCisgICAgICAgICAgICAg ICAgICAgICAgICA7OyBgc25hcC13aWR0aCcgcGl4ZWxzIGZyb20gdGhlIHRpbWUgRlJBTUUK KyAgICAgICAgICAgICAgICAgICAgICAgIDs7IHNuYXBwZWQuCisgICAgICAgICAgICAgICAg ICAgICAgICAoc2V0cSBzbmFwLXkgbmlsKSkpKQorICAgICAgICAgICAgICAgICAgICAgKCg+ IHBvcy15IGxhc3QteSkKKyAgICAgICAgICAgICAgICAgICAgICAoc2V0cSBib3R0b20gKCsg dG9wIGhlaWdodCkpCisgICAgICAgICAgICAgICAgICAgICAgKGNvbmQKKyAgICAgICAgICAg ICAgICAgICAgICAgKChhbmQgKDwgYm90dG9tIHBhcmVudC1ib3R0b20pCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICg8PSAoLSBwYXJlbnQtYm90dG9tIGJvdHRvbSkgc25hcC13 aWR0aCkpCisgICAgICAgICAgICAgICAgICAgICAgICA7OyBTbmFwIHdoZW4gdGhlIG1vdXNl IG1vdmVkIGRvd253YXJkIGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgOzsgRlJBTUUn cyBib3R0b20gZWRnZSB3b3VsZCBlbmQgdXAgd2l0aGluCisgICAgICAgICAgICAgICAgICAg ICAgICA7OyBgc25hcC13aWR0aCcgcGl4ZWxzIGZyb20gUEFSRU5UJ3MgYm90dG9tCisgICAg ICAgICAgICAgICAgICAgICAgICA7OyBlZGdlLgorICAgICAgICAgICAgICAgICAgICAgICAg KHNldHEgc25hcC15IHBvcy15KQorICAgICAgICAgICAgICAgICAgICAgICAgKHNldHEgdG9w ICgtIHBhcmVudC1ib3R0b20gaGVpZ2h0KSkpCisgICAgICAgICAgICAgICAgICAgICAgICgo YW5kICg+PSBib3R0b20gcGFyZW50LWJvdHRvbSkKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgKDw9ICgtIGJvdHRvbSBwYXJlbnQtYm90dG9tKSBzbmFwLXdpZHRoKQorICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBzbmFwLXkgKDw9ICgtIHBvcy15IHNuYXAteSkgc25h cC13aWR0aCkpCisgICAgICAgICAgICAgICAgICAgICAgICA7OyBTdGF5IHNuYXBwZWQgd2hl biB0aGUgbW91c2UgbW92ZWQgZG93bndhcmQKKyAgICAgICAgICAgICAgICAgICAgICAgIDs7 IGJ1dCBub3QgbW9yZSBtb3JlIHRoYW4gYHNuYXAtd2lkdGgnIHBpeGVscworICAgICAgICAg ICAgICAgICAgICAgICAgOzsgZnJvbSB0aGUgdGltZSBGUkFNRSBzbmFwcGVkLgorICAgICAg ICAgICAgICAgICAgICAgICAgKHNldHEgdG9wICgtIHBhcmVudC1ib3R0b20gaGVpZ2h0KSkp CisgICAgICAgICAgICAgICAgICAgICAgICh0CisgICAgICAgICAgICAgICAgICAgICAgICA7 OyBVbnNuYXAgd2hlbiB0aGUgbW91c2UgbW92ZWQgZG93bndhcmQgbW9yZQorICAgICAgICAg ICAgICAgICAgICAgICAgOzsgdGhhbiBgc25hcC13aWR0aCcgcGl4ZWxzIGZyb20gdGhlIHRp bWUgRlJBTUUKKyAgICAgICAgICAgICAgICAgICAgICAgIDs7IHNuYXBwZWQuCisgICAgICAg ICAgICAgICAgICAgICAgICAoc2V0cSBzbmFwLXkgbmlsKSkpKSkpCisKKyAgICAgICAgICAg ICAgICAgIDs7IElmIHJlcXVlc3RlZCwgY29uc3RyYWluIEZSQU1FJ3MgZHJhZ2dhYmxlIGFy ZWFzIHRvCisgICAgICAgICAgICAgICAgICA7OyBQQVJFTlQncyBlZGdlcy4gIFRoZSBgdG9w LXZpc2libGUnIHBhcmFtZXRlciBzaG91bGQKKyAgICAgICAgICAgICAgICAgIDs7IGJlIHNl dCB3aGVuIEZSQU1FIGhhcyBhIGRyYWdnYWJsZSBoZWFkZXItbGluZS4gIElmCisgICAgICAg ICAgICAgICAgICA7OyBzZXQgdG8gYSBudW1iZXIsIGl0IGFzY2VydGFpbnMgdGhhdCB0aGUg dG9wIG9mCisgICAgICAgICAgICAgICAgICA7OyBGUkFNRSBpcyBhbHdheXMgY29uc3RyYWlu ZWQgdG8gdGhlIHRvcCBvZiBQQVJFTlQKKyAgICAgICAgICAgICAgICAgIDs7IGFuZCB0aGF0 IGF0IGxlYXN0IGFzIG1hbnkgcGl4ZWxzIG9mIEZSQU1FIGFzCisgICAgICAgICAgICAgICAg ICA7OyBzcGVjaWZpZWQgYnkgdGhhdCBudW1iZXIgYXJlIHZpc2libGUgb24gZWFjaCBvZiB0 aGUKKyAgICAgICAgICAgICAgICAgIDs7IHRocmVlIHJlbWFpbmluZyBzaWRlcyBvZiBQQVJF TlQuCisgICAgICAgICAgICAgICAgICA7OworICAgICAgICAgICAgICAgICAgOzsgVGhlIGBi b3R0b20tdmlzaWJsZScgcGFyYW1ldGVyIHNob3VsZCBiZSBzZXQgd2hlbgorICAgICAgICAg ICAgICAgICAgOzsgRlJBTUUgaGFzIGEgZHJhZ2dhYmxlIG1vZGUtbGluZS4gIElmIHNldCB0 byBhCisgICAgICAgICAgICAgICAgICA7OyBudW1iZXIsIGl0IGFzY2VydGFpbnMgdGhhdCB0 aGUgYm90dG9tIG9mIEZSQU1FIGlzCisgICAgICAgICAgICAgICAgICA7OyBhbHdheXMgY29u c3RyYWluZWQgdG8gdGhlIGJvdHRvbSBvZiBQQVJFTlQgYW5kIHRoYXQKKyAgICAgICAgICAg ICAgICAgIDs7IGF0IGxlYXN0IGFzIG1hbnkgcGl4ZWxzIG9mIEZSQU1FIGFzIHNwZWNpZmll ZCBieQorICAgICAgICAgICAgICAgICAgOzsgdGhhdCBudW1iZXIgYXJlIHZpc2libGUgb24g ZWFjaCBvZiB0aGUgdGhyZWUKKyAgICAgICAgICAgICAgICAgIDs7IHJlbWFpbmluZyBzaWRl cyBvZiBQQVJFTlQuCisgICAgICAgICAgICAgICAgICAobGV0ICgocGFyIChmcmFtZS1wYXJh bWV0ZXIgZnJhbWUgJ3RvcC12aXNpYmxlKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGJv dHRvbS12aXNpYmxlKQorICAgICAgICAgICAgICAgICAgICAodW5sZXNzIHBhcgorICAgICAg ICAgICAgICAgICAgICAgIChzZXRxIHBhciAoZnJhbWUtcGFyYW1ldGVyIGZyYW1lICdib3R0 b20tdmlzaWJsZSkpCisgICAgICAgICAgICAgICAgICAgICAgKHNldHEgYm90dG9tLXZpc2li bGUgdCkpCisgICAgICAgICAgICAgICAgICAgICh3aGVuIChhbmQgKG51bWJlcnAgcGFyKSBw YXJlbnQtZWRnZXMpCisgICAgICAgICAgICAgICAgICAgICAgKHNldHEgbGVmdAorICAgICAg ICAgICAgICAgICAgICAgICAgICAgIChtYXggKG1pbiAoLSBwYXJlbnQtcmlnaHQgcGFyKSBs ZWZ0KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCsgKC0gcGFyZW50LWxl ZnQgd2lkdGgpIHBhcikpKQorICAgICAgICAgICAgICAgICAgICAgIChzZXRxIHRvcAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgIChpZiBib3R0b20tdmlzaWJsZQorICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAobWluIChtYXggdG9wICgtIHBhcmVudC10b3AgKC0g aGVpZ2h0IHBhcikpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgt IHBhcmVudC1ib3R0b20gaGVpZ2h0KSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IChtaW4gKG1heCB0b3AgcGFyZW50LXRvcCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgKC0gcGFyZW50LWJvdHRvbSBwYXIpKSkpKSkKKworICAgICAgICAgICAgICAg ICAgOzsgVXNlIGBtb2RpZnktZnJhbWUtcGFyYW1ldGVycycgc2luY2UgYGxlZnQnIGFuZAor ICAgICAgICAgICAgICAgICAgOzsgYHRvcCcgbWF5IHdhbnQgdG8gbW92ZSBGUkFNRSBvdXQg b2YgaXRzIFBBUkVOVC4KKyAgICAgICAgICAgICAgICAgIChtb2RpZnktZnJhbWUtcGFyYW1l dGVycworICAgICAgICAgICAgICAgICAgIGZyYW1lCisgICAgICAgICAgICAgICAgICAgYCgo bGVmdCAuICgrICxsZWZ0KSkgKHRvcCAuICgrICx0b3ApKSkpKSkpCisgICAgICAgICAgICAg IChzZXRxIGxhc3QteCBwb3MteCkKKyAgICAgICAgICAgICAgKHNldHEgbGFzdC15IHBvcy15 KSkpKQorICAgICAgICAgKG9sZC10cmFjay1tb3VzZSB0cmFjay1tb3VzZSkpCisgICAgOzsg U3RhcnQgdHJhY2tpbmcuICBUaGUgc3BlY2lhbCB2YWx1ZSAnZHJhZ2dpbmcnIHNpZ25hbHMg dGhlCisgICAgOzsgZGlzcGxheSBlbmdpbmUgdG8gZnJlZXplIHRoZSBtb3VzZSBwb2ludGVy IHNoYXBlIGZvciBhcyBsb25nCisgICAgOzsgYXMgd2UgZHJhZy4KKyAgICAoc2V0cSB0cmFj ay1tb3VzZSAnZHJhZ2dpbmcpCisgICAgOzsgTG9vcCByZWFkaW5nIGV2ZW50cyBhbmQgc2Ft cGxpbmcgdGhlIHBvc2l0aW9uIG9mIHRoZSBtb3VzZS4KKyAgICAoc2V0cSBleGl0ZnVuCisg ICAgICAgICAgKHNldC10cmFuc2llbnQtbWFwCisgICAgICAgICAgIChsZXQgKChtYXAgKG1h a2Utc3BhcnNlLWtleW1hcCkpKQorICAgICAgICAgICAgIChkZWZpbmUta2V5IG1hcCBbc3dp dGNoLWZyYW1lXSAjJ2lnbm9yZSkKKyAgICAgICAgICAgICAoZGVmaW5lLWtleSBtYXAgW3Nl bGVjdC13aW5kb3ddICMnaWdub3JlKQorICAgICAgICAgICAgIChkZWZpbmUta2V5IG1hcCBb c2Nyb2xsLWJhci1tb3ZlbWVudF0gIydpZ25vcmUpCisgICAgICAgICAgICAgKGRlZmluZS1r ZXkgbWFwIFttb3VzZS1tb3ZlbWVudF0gbW92ZSkKKyAgICAgICAgICAgICA7OyBTd2FsbG93 IGRyYWctbW91c2UtMSBldmVudHMgdG8gYXZvaWQgc2VsZWN0aW5nIHNvbWUgb3RoZXIgd2lu ZG93LgorICAgICAgICAgICAgIChkZWZpbmUta2V5IG1hcCBbZHJhZy1tb3VzZS0xXQorICAg ICAgICAgICAgICAgKGxhbWJkYSAoKSAoaW50ZXJhY3RpdmUpIChmdW5jYWxsIGV4aXRmdW4p KSkKKyAgICAgICAgICAgICA7OyBTb21lIG9mIHRoZSBldmVudHMgd2lsbCBvZiBjb3Vyc2Ug ZW5kIHVwIGxvb2tlZCB1cAorICAgICAgICAgICAgIDs7IHdpdGggYSBtb2RlLWxpbmUsIGhl YWRlci1saW5lIG9yIHZlcnRpY2FsLWxpbmUgcHJlZml4IC4uLgorICAgICAgICAgICAgIChk ZWZpbmUta2V5IG1hcCBbbW9kZS1saW5lXSBtYXApCisgICAgICAgICAgICAgKGRlZmluZS1r ZXkgbWFwIFtoZWFkZXItbGluZV0gbWFwKQorICAgICAgICAgICAgIChkZWZpbmUta2V5IG1h cCBbdmVydGljYWwtbGluZV0gbWFwKQorICAgICAgICAgICAgIDs7IC4uLiBhbmQgc29tZSBt YXliZSBldmVuIHdpdGggYSByaWdodC0gb3IgYm90dG9tLWRpdmlkZXIKKyAgICAgICAgICAg ICA7OyBwcmVmaXguCisgICAgICAgICAgICAgKGRlZmluZS1rZXkgbWFwIFtyaWdodC1kaXZp ZGVyXSBtYXApCisgICAgICAgICAgICAgKGRlZmluZS1rZXkgbWFwIFtib3R0b20tZGl2aWRl cl0gbWFwKQorICAgICAgICAgICAgIG1hcCkKKyAgICAgICAgICAgdCAobGFtYmRhICgpIChz ZXRxIHRyYWNrLW1vdXNlIG9sZC10cmFjay1tb3VzZSkpKSkpKQorCisoZGVmdW4gbW91c2Ut ZHJhZy1sZWZ0LWVkZ2UgKHN0YXJ0LWV2ZW50KQorICAiRHJhZyBsZWZ0IGVkZ2Ugb2YgYSBm cmFtZSB3aXRoIHRoZSBtb3VzZS4KK1NUQVJULUVWRU5UIGlzIHRoZSBzdGFydGluZyBtb3Vz ZSBldmVudCBvZiB0aGUgZHJhZyBhY3Rpb24uIgorICAoaW50ZXJhY3RpdmUgImUiKQorICAo bW91c2UtZHJhZy1mcmFtZSBzdGFydC1ldmVudCAnbGVmdCkpCisKKyhkZWZ1biBtb3VzZS1k cmFnLXRvcC1sZWZ0LWNvcm5lciAoc3RhcnQtZXZlbnQpCisgICJEcmFnIHRvcCBsZWZ0IGNv cm5lciBvZiBhIGZyYW1lIHdpdGggdGhlIG1vdXNlLgorU1RBUlQtRVZFTlQgaXMgdGhlIHN0 YXJ0aW5nIG1vdXNlIGV2ZW50IG9mIHRoZSBkcmFnIGFjdGlvbi4iCisgIChpbnRlcmFjdGl2 ZSAiZSIpCisgIChtb3VzZS1kcmFnLWZyYW1lIHN0YXJ0LWV2ZW50ICd0b3AtbGVmdCkpCisK KyhkZWZ1biBtb3VzZS1kcmFnLXRvcC1lZGdlIChzdGFydC1ldmVudCkKKyAgIkRyYWcgdG9w IGVkZ2Ugb2YgYSBmcmFtZSB3aXRoIHRoZSBtb3VzZS4KK1NUQVJULUVWRU5UIGlzIHRoZSBz dGFydGluZyBtb3VzZSBldmVudCBvZiB0aGUgZHJhZyBhY3Rpb24uIgorICAoaW50ZXJhY3Rp dmUgImUiKQorICAobW91c2UtZHJhZy1mcmFtZSBzdGFydC1ldmVudCAndG9wKSkKKworKGRl ZnVuIG1vdXNlLWRyYWctdG9wLXJpZ2h0LWNvcm5lciAoc3RhcnQtZXZlbnQpCisgICJEcmFn IHRvcCByaWdodCBjb3JuZXIgb2YgYSBmcmFtZSB3aXRoIHRoZSBtb3VzZS4KK1NUQVJULUVW RU5UIGlzIHRoZSBzdGFydGluZyBtb3VzZSBldmVudCBvZiB0aGUgZHJhZyBhY3Rpb24uIgor ICAoaW50ZXJhY3RpdmUgImUiKQorICAobW91c2UtZHJhZy1mcmFtZSBzdGFydC1ldmVudCAn dG9wLXJpZ2h0KSkKKworKGRlZnVuIG1vdXNlLWRyYWctcmlnaHQtZWRnZSAoc3RhcnQtZXZl bnQpCisgICJEcmFnIHJpZ2h0IGVkZ2Ugb2YgYSBmcmFtZSB3aXRoIHRoZSBtb3VzZS4KK1NU QVJULUVWRU5UIGlzIHRoZSBzdGFydGluZyBtb3VzZSBldmVudCBvZiB0aGUgZHJhZyBhY3Rp b24uIgorICAoaW50ZXJhY3RpdmUgImUiKQorICAobW91c2UtZHJhZy1mcmFtZSBzdGFydC1l dmVudCAncmlnaHQpKQorCisoZGVmdW4gbW91c2UtZHJhZy1ib3R0b20tcmlnaHQtY29ybmVy IChzdGFydC1ldmVudCkKKyAgIkRyYWcgYm90dG9tIHJpZ2h0IGNvcm5lciBvZiBhIGZyYW1l IHdpdGggdGhlIG1vdXNlLgorU1RBUlQtRVZFTlQgaXMgdGhlIHN0YXJ0aW5nIG1vdXNlIGV2 ZW50IG9mIHRoZSBkcmFnIGFjdGlvbi4iCisgIChpbnRlcmFjdGl2ZSAiZSIpCisgIChtb3Vz ZS1kcmFnLWZyYW1lIHN0YXJ0LWV2ZW50ICdib3R0b20tcmlnaHQpKQorCisoZGVmdW4gbW91 c2UtZHJhZy1ib3R0b20tZWRnZSAoc3RhcnQtZXZlbnQpCisgICJEcmFnIGJvdHRvbSBlZGdl IG9mIGEgZnJhbWUgd2l0aCB0aGUgbW91c2UuCitTVEFSVC1FVkVOVCBpcyB0aGUgc3RhcnRp bmcgbW91c2UgZXZlbnQgb2YgdGhlIGRyYWcgYWN0aW9uLiIKKyAgKGludGVyYWN0aXZlICJl IikKKyAgKG1vdXNlLWRyYWctZnJhbWUgc3RhcnQtZXZlbnQgJ2JvdHRvbSkpCisKKyhkZWZ1 biBtb3VzZS1kcmFnLWJvdHRvbS1sZWZ0LWNvcm5lciAoc3RhcnQtZXZlbnQpCisgICJEcmFn IGJvdHRvbSBsZWZ0IGNvcm5lciBvZiBhIGZyYW1lIHdpdGggdGhlIG1vdXNlLgorU1RBUlQt RVZFTlQgaXMgdGhlIHN0YXJ0aW5nIG1vdXNlIGV2ZW50IG9mIHRoZSBkcmFnIGFjdGlvbi4i CisgIChpbnRlcmFjdGl2ZSAiZSIpCisgIChtb3VzZS1kcmFnLWZyYW1lIHN0YXJ0LWV2ZW50 ICdib3R0b20tbGVmdCkpCisKIChkZWZjdXN0b20gbW91c2Utc2VsZWN0LXJlZ2lvbi1tb3Zl LXRvLWJlZ2lubmluZyBuaWwKICAgIkVmZmVjdCBvZiBzZWxlY3RpbmcgYSByZWdpb24gZXh0 ZW5kaW5nIGJhY2t3YXJkIGZyb20gZG91YmxlIGNsaWNrLgogTmlsIG1lYW5zIGtlZXAgcG9p bnQgYXQgdGhlIHBvc2l0aW9uIGNsaWNrZWQgKHJlZ2lvbiBlbmQpOwpAQCAtMjA3OCw2ICsy NDQ5LDIyIEBAIGZ1bmN0aW9uLWtleS1tYXAKIChnbG9iYWwtc2V0LWtleSBbYm90dG9tLWRp dmlkZXIgZG93bi1tb3VzZS0xXSAnbW91c2UtZHJhZy1tb2RlLWxpbmUpCiAoZ2xvYmFsLXNl dC1rZXkgW2JvdHRvbS1kaXZpZGVyIG1vdXNlLTFdICdpZ25vcmUpCiAoZ2xvYmFsLXNldC1r ZXkgW2JvdHRvbS1kaXZpZGVyIEMtbW91c2UtMl0gJ21vdXNlLXNwbGl0LXdpbmRvdy1ob3Jp em9udGFsbHkpCisoZ2xvYmFsLXNldC1rZXkgW2xlZnQtZWRnZSBkb3duLW1vdXNlLTFdICdt b3VzZS1kcmFnLWxlZnQtZWRnZSkKKyhnbG9iYWwtc2V0LWtleSBbbGVmdC1lZGdlIG1vdXNl LTFdICdpZ25vcmUpCisoZ2xvYmFsLXNldC1rZXkgW3RvcC1sZWZ0LWNvcm5lciBkb3duLW1v dXNlLTFdICdtb3VzZS1kcmFnLXRvcC1sZWZ0LWNvcm5lcikKKyhnbG9iYWwtc2V0LWtleSBb dG9wLWxlZnQtY29ybmVyIG1vdXNlLTFdICdpZ25vcmUpCisoZ2xvYmFsLXNldC1rZXkgW3Rv cC1lZGdlIGRvd24tbW91c2UtMV0gJ21vdXNlLWRyYWctdG9wLWVkZ2UpCisoZ2xvYmFsLXNl dC1rZXkgW3RvcC1lZGdlIG1vdXNlLTFdICdpZ25vcmUpCisoZ2xvYmFsLXNldC1rZXkgW3Rv cC1yaWdodC1jb3JuZXIgZG93bi1tb3VzZS0xXSAnbW91c2UtZHJhZy10b3AtcmlnaHQtY29y bmVyKQorKGdsb2JhbC1zZXQta2V5IFt0b3AtcmlnaHQtY29ybmVyIG1vdXNlLTFdICdpZ25v cmUpCisoZ2xvYmFsLXNldC1rZXkgW3JpZ2h0LWVkZ2UgZG93bi1tb3VzZS0xXSAnbW91c2Ut ZHJhZy1yaWdodC1lZGdlKQorKGdsb2JhbC1zZXQta2V5IFtyaWdodC1lZGdlIG1vdXNlLTFd ICdpZ25vcmUpCisoZ2xvYmFsLXNldC1rZXkgW2JvdHRvbS1yaWdodC1jb3JuZXIgZG93bi1t b3VzZS0xXSAnbW91c2UtZHJhZy1ib3R0b20tcmlnaHQtY29ybmVyKQorKGdsb2JhbC1zZXQt a2V5IFtib3R0b20tcmlnaHQtY29ybmVyIG1vdXNlLTFdICdpZ25vcmUpCisoZ2xvYmFsLXNl dC1rZXkgW2JvdHRvbS1lZGdlIGRvd24tbW91c2UtMV0gJ21vdXNlLWRyYWctYm90dG9tLWVk Z2UpCisoZ2xvYmFsLXNldC1rZXkgW2JvdHRvbS1lZGdlIG1vdXNlLTFdICdpZ25vcmUpCiso Z2xvYmFsLXNldC1rZXkgW2JvdHRvbS1sZWZ0LWNvcm5lciBkb3duLW1vdXNlLTFdICdtb3Vz ZS1kcmFnLWJvdHRvbS1sZWZ0LWNvcm5lcikKKyhnbG9iYWwtc2V0LWtleSBbYm90dG9tLWxl ZnQtY29ybmVyIG1vdXNlLTFdICdpZ25vcmUpCgogKHByb3ZpZGUgJ21vdXNlKQoKZGlmZiAt LWdpdCBhL2xpc3AvdG9vbHRpcC5lbCBiL2xpc3AvdG9vbHRpcC5lbAppbmRleCAzNjcxMTRi Li5jMDExZjFiIDEwMDY0NAotLS0gYS9saXNwL3Rvb2x0aXAuZWwKKysrIGIvbGlzcC90b29s dGlwLmVsCkBAIC0xMTksNyArMTE5LDggQEAgdG9vbHRpcC15LW9mZnNldAogKGRlZmN1c3Rv bSB0b29sdGlwLWZyYW1lLXBhcmFtZXRlcnMKICAgJygobmFtZSAuICJ0b29sdGlwIikKICAg ICAoaW50ZXJuYWwtYm9yZGVyLXdpZHRoIC4gMikKLSAgICAoYm9yZGVyLXdpZHRoIC4gMSkp CisgICAgKGJvcmRlci13aWR0aCAuIDEpCisgICAgKG5vLXNwZWNpYWwtZ2x5cGhzIC4gdCkp CiAgICJGcmFtZSBwYXJhbWV0ZXJzIHVzZWQgZm9yIHRvb2x0aXBzLgoKIElmIGBsZWZ0JyBv ciBgdG9wJyBwYXJhbWV0ZXJzIGFyZSBpbmNsdWRlZCwgdGhleSBzcGVjaWZ5IHRoZSBhYnNv bHV0ZQpAQCAtMTMwLDcgKzEzMSw4IEBAIHRvb2x0aXAtZnJhbWUtcGFyYW1ldGVycwogICA6 dHlwZSAnKHJlcGVhdCAoY29ucyA6Zm9ybWF0ICIldiIKIAkJICAgICAgIChzeW1ib2wgOnRh ZyAiUGFyYW1ldGVyIikKIAkJICAgICAgIChzZXhwIDp0YWcgIlZhbHVlIikpKQotICA6Z3Jv dXAgJ3Rvb2x0aXApCisgIDpncm91cCAndG9vbHRpcAorICA6dmVyc2lvbiAiMjYuMSIpCgog KGRlZmZhY2UgdG9vbHRpcAogICAnKCgoKGNsYXNzIGNvbG9yKSkKZGlmZiAtLWdpdCBhL2xp c3Avd2luZG93LmVsIGIvbGlzcC93aW5kb3cuZWwKaW5kZXggOGIwN2VkNC4uYzkzMzk5NiAx MDA2NDQKLS0tIGEvbGlzcC93aW5kb3cuZWwKKysrIGIvbGlzcC93aW5kb3cuZWwKQEAgLTM3 MDMsNyArMzcwMyw3IEBAIHdpbmRvdy1lZGdlcwogQUJTT0xVVEUgaXMgbm9uLW5pbCwgUElY RUxXSVNFIGlzIGltcGxpY2l0bHkgbm9uLW5pbCB0b28uIgogICAobGV0KiAoKHdpbmRvdyAo d2luZG93LW5vcm1hbGl6ZS13aW5kb3cgd2luZG93IGJvZHkpKQogCSAoZnJhbWUgKHdpbmRv dy1mcmFtZSB3aW5kb3cpKQotCSAoYm9yZGVyLXdpZHRoIChmcmFtZS1ib3JkZXItd2lkdGgg ZnJhbWUpKQorCSAoYm9yZGVyLXdpZHRoIChmcmFtZS1pbnRlcm5hbC1ib3JkZXItd2lkdGgg ZnJhbWUpKQogCSAoY2hhci13aWR0aCAoZnJhbWUtY2hhci13aWR0aCBmcmFtZSkpCiAJIChj aGFyLWhlaWdodCAoZnJhbWUtY2hhci1oZWlnaHQgZnJhbWUpKQogCSAobGVmdCAoaWYgcGl4 ZWx3aXNlCkBAIC00NTcyLDEyICs0NTcyLDEzIEBAIGZyYW1lLWF1dG8taGlkZS1mdW5jdGlv bgogRnVuY3Rpb25zIGFmZmVjdGVkIGJ5IHRoaXMgb3B0aW9uIGFyZSB0aG9zZSB0aGF0IGJ1 cnkgYSBidWZmZXIKIHNob3duIGluIGEgc2VwYXJhdGUgZnJhbWUgbGlrZSBgcXVpdC13aW5k b3cnIGFuZCBgYnVyeS1idWZmZXInLiIKICAgOnR5cGUgJyhjaG9pY2UgKGNvbnN0IDp0YWcg Ikljb25pZnkiIGljb25pZnktZnJhbWUpCisgICAgICAgICAgICAgICAgIChjb25zdCA6dGFn ICJNYWtlIGludmlzaWJsZSIgbWFrZS1mcmFtZS1pbnZpc2libGUpCiAgICAgICAgICAgICAg ICAgIChjb25zdCA6dGFnICJEZWxldGUiIGRlbGV0ZS1mcmFtZSkKICAgICAgICAgICAgICAg ICAgKGNvbnN0IDp0YWcgIkRvIG5vdGhpbmciIGlnbm9yZSkKICAgICAgICAgICAgICAgICAg ZnVuY3Rpb24pCiAgIDpncm91cCAnd2luZG93cwogICA6Z3JvdXAgJ2ZyYW1lcwotICA6dmVy c2lvbiAiMjQuMSIpCisgIDp2ZXJzaW9uICIyNi4xIikKCiAoZGVmdW4gd2luZG93LS1kZWxl dGUgKCZvcHRpb25hbCB3aW5kb3cgZGVkaWNhdGVkLW9ubHkga2lsbCkKICAgIkRlbGV0ZSBX SU5ET1cgaWYgcG9zc2libGUuCkBAIC00NTk1LDcgKzQ1OTYsOSBAQCB3aW5kb3ctLWRlbGV0 ZQogCSAgKGNvbmQKIAkgICAoa2lsbAogCSAgICAoZGVsZXRlLWZyYW1lIGZyYW1lKSkKLQkg ICAoKGZ1bmN0aW9ucCBmcmFtZS1hdXRvLWhpZGUtZnVuY3Rpb24pCisgICAgICAgICAgICgo ZnVuY3Rpb25wIChmcmFtZS1wYXJhbWV0ZXIgZnJhbWUgJ2F1dG8taGlkZS1mdW5jdGlvbikp CisgICAgICAgICAgICAoZnVuY2FsbCAoZnJhbWUtcGFyYW1ldGVyIGZyYW1lICdhdXRvLWhp ZGUtZnVuY3Rpb24pKSkKKyAgICAgICAgICAgKChmdW5jdGlvbnAgZnJhbWUtYXV0by1oaWRl LWZ1bmN0aW9uKQogCSAgICAoZnVuY2FsbCBmcmFtZS1hdXRvLWhpZGUtZnVuY3Rpb24gZnJh bWUpKSkpCiAJJ2ZyYW1lKQogICAgICAgIChkZWxldGFibGUKQEAgLTY3MzQsMTUgKzY3Mzcs MTcgQEAgd2luZG93LS1kaXNwbGF5LWJ1ZmZlcgogICAgIHdpbmRvdykpCgogKGRlZnVuIHdp bmRvdy0tbWF5YmUtcmFpc2UtZnJhbWUgKGZyYW1lKQotICAobGV0ICgodmlzaWJsZSAoZnJh bWUtdmlzaWJsZS1wIGZyYW1lKSkpCi0gICAgKHVubGVzcyAob3IgKG5vdCB2aXNpYmxlKQot CQk7OyBBc3N1bWUgdGhlIHNlbGVjdGVkIGZyYW1lIGlzIGFscmVhZHkgdmlzaWJsZSBlbm91 Z2guCi0JCShlcSBmcmFtZSAoc2VsZWN0ZWQtZnJhbWUpKQotCQk7OyBBc3N1bWUgdGhlIGZy YW1lIGZyb20gd2hpY2ggd2UgaW52b2tlZCB0aGUKLQkJOzsgbWluaWJ1ZmZlciBpcyB2aXNp YmxlLgotCQkoYW5kIChtaW5pYnVmZmVyLXdpbmRvdy1hY3RpdmUtcCAoc2VsZWN0ZWQtd2lu ZG93KSkKLQkJICAgICAoZXEgZnJhbWUgKHdpbmRvdy1mcmFtZSAobWluaWJ1ZmZlci1zZWxl Y3RlZC13aW5kb3cpKSkpKQotICAgICAgKHJhaXNlLWZyYW1lIGZyYW1lKSkpKQorICAobWFr ZS1mcmFtZS12aXNpYmxlIGZyYW1lKQorICAodW5sZXNzIChvciAoZnJhbWUtcGFyYW1ldGVy IGZyYW1lICduby1mb2N1cy1vbi1tYXApCisgICAgICAgICAgICAgIDs7IERvbid0IHJhaXNl IGZyYW1lcyB0aGF0IHNob3VsZCBub3QgZ2V0IGZvY3VzLgorICAgICAgICAgICAgICAoZnJh bWUtcGFyYW1ldGVyIGZyYW1lICduby1hY2NlcHQtZm9jdXMpCisgICAgICAgICAgICAgIDs7 IEFzc3VtZSB0aGUgc2VsZWN0ZWQgZnJhbWUgaXMgYWxyZWFkeSB2aXNpYmxlIGVub3VnaC4K KwkgICAgICAoZXEgZnJhbWUgKHNlbGVjdGVkLWZyYW1lKSkKKwkgICAgICA7OyBBc3N1bWUg dGhlIGZyYW1lIGZyb20gd2hpY2ggd2UgaW52b2tlZCB0aGUKKwkgICAgICA7OyBtaW5pYnVm ZmVyIGlzIHZpc2libGUuCisJICAgICAgKGFuZCAobWluaWJ1ZmZlci13aW5kb3ctYWN0aXZl LXAgKHNlbGVjdGVkLXdpbmRvdykpCisJCSAgIChlcSBmcmFtZSAod2luZG93LWZyYW1lICht aW5pYnVmZmVyLXNlbGVjdGVkLXdpbmRvdykpKSkpCisgICAgKHJhaXNlLWZyYW1lIGZyYW1l KSkpCgogOzsgRklYTUU6IE5vdCBpbXBsZW1lbnRlZC4KIDs7IEZJWE1FOiBCeSB0aGUgd2F5 LCB0aGVyZSBjb3VsZCBiZSBtb3JlIGxldmVscyBvZiBkZWRpY2F0aW9uOgpAQCAtNjc2Miw2 ICs2NzY3LDcgQEAgZGlzcGxheS1idWZmZXItLWFjdGlvbi1mdW5jdGlvbi1jdXN0b20tdHlw ZQogCSAgIChjb25zdCBkaXNwbGF5LWJ1ZmZlci1wb3AtdXAtd2luZG93KQogCSAgIChjb25z dCBkaXNwbGF5LWJ1ZmZlci1zYW1lLXdpbmRvdykKIAkgICAoY29uc3QgZGlzcGxheS1idWZm ZXItcG9wLXVwLWZyYW1lKQorCSAgIChjb25zdCBkaXNwbGF5LWJ1ZmZlci1pbi1jaGlsZC1m cmFtZSkKIAkgICAoY29uc3QgZGlzcGxheS1idWZmZXItYmVsb3ctc2VsZWN0ZWQpCiAJICAg KGNvbnN0IGRpc3BsYXktYnVmZmVyLWF0LWJvdHRvbSkKIAkgICAoY29uc3QgZGlzcGxheS1i dWZmZXItaW4tcHJldmlvdXMtd2luZG93KQpAQCAtNjkwOCw2ICs2OTE0LDcgQEAgZGlzcGxh eS1idWZmZXIKICBgZGlzcGxheS1idWZmZXItc2FtZS13aW5kb3cnCiAgYGRpc3BsYXktYnVm ZmVyLXJldXNlLXdpbmRvdycKICBgZGlzcGxheS1idWZmZXItcG9wLXVwLWZyYW1lJworIGBk aXNwbGF5LWJ1ZmZlci1pbi1jaGlsZC1mcmFtZScKICBgZGlzcGxheS1idWZmZXItcG9wLXVw LXdpbmRvdycKICBgZGlzcGxheS1idWZmZXItaW4tcHJldmlvdXMtd2luZG93JwogIGBkaXNw bGF5LWJ1ZmZlci11c2Utc29tZS13aW5kb3cnCkBAIC03MjM5LDYgKzcyNDYsNyBAQCBkaXNw bGF5LWJ1ZmZlci1wb3AtdXAtd2luZG93CiAJCQkJIChnZXQtbGFyZ2VzdC13aW5kb3cgZnJh bWUgdCkgYWxpc3QpCiAJCQkJKHdpbmRvdy0tdHJ5LXRvLXNwbGl0LXdpbmRvdwogCQkJCSAo Z2V0LWxydS13aW5kb3cgZnJhbWUgdCkgYWxpc3QpKSkpCisKICAgICAgIChwcm9nMSAod2lu ZG93LS1kaXNwbGF5LWJ1ZmZlcgogCSAgICAgIGJ1ZmZlciB3aW5kb3cgJ3dpbmRvdyBhbGlz dCBkaXNwbGF5LWJ1ZmZlci1tYXJrLWRlZGljYXRlZCkKIAkodW5sZXNzIChjZHIgKGFzc3Eg J2luaGliaXQtc3dpdGNoLWZyYW1lIGFsaXN0KSkKQEAgLTcyNTgsNiArNzI2Niw0NyBAQCBk aXNwbGF5LWJ1ZmZlci0tbWF5YmUtcG9wLXVwLWZyYW1lLW9yLXdpbmRvdwogICAgICAgKGFu ZCBwb3AtdXAtd2luZG93cwogCSAgIChkaXNwbGF5LWJ1ZmZlci1wb3AtdXAtd2luZG93IGJ1 ZmZlciBhbGlzdCkpKSkKCisoZGVmdW4gZGlzcGxheS1idWZmZXItaW4tY2hpbGQtZnJhbWUg KGJ1ZmZlciBhbGlzdCkKKyAgIkRpc3BsYXkgQlVGRkVSIGluIGEgY2hpbGQgZnJhbWUuCitC eSBkZWZhdWx0LCB0aGlzIGVpdGhlciByZXVzZXMgYSBjaGlsZCBmcmFtZSBvZiB0aGUgc2Vs ZWN0ZWQKK2ZyYW1lIG9yIG1ha2VzIGEgbmV3IGNoaWxkIGZyYW1lIG9mIHRoZSBzZWxlY3Rl ZCBmcmFtZS4gIElmCitzdWNjZXNzZnVsLCByZXR1cm4gdGhlIHdpbmRvdyB1c2VkOyBvdGhl cndpc2UgcmV0dXJuIG5pbC4KKworSWYgQUxJU1QgaGFzIGEgbm9uLW5pbCAnY2hpbGQtZnJh bWUtcGFyYW1ldGVycycgZW50cnksIHRoZQorY29ycmVzcG9uZGluZyB2YWx1ZSBpcyBhbiBh bGlzdCBvZiBmcmFtZSBwYXJhbWV0ZXJzIHRvIGdpdmUgdGhlCituZXcgZnJhbWUuICBBICdw YXJlbnQtZnJhbWUnIHBhcmFtZXRlciBzcGVjaWZ5aW5nIHRoZSBzZWxlY3RlZAorZnJhbWUg aXMgcHJvdmlkZWQgYnkgZGVmYXVsdC4gIElmIHRoZSBjaGlsZCBmcmFtZSBzaG91bGQgYmUg b3IKK2JlY29tZSB0aGUgY2hpbGQgb2YgYW55IG90aGVyIGZyYW1lLCBhIGNvcnJlc3BvbmRp bmcgZW50cnkgbXVzdAorYmUgYWRkZWQgdG8gQUxJU1QuIgorICAobGV0KiAoKHBhcmFtZXRl cnMKKyAgICAgICAgICAoYXBwZW5kCisgICAgICAgICAgIChjZHIgKGFzc3EgJ2NoaWxkLWZy YW1lLXBhcmFtZXRlcnMgYWxpc3QpKQorICAgICAgICAgICBgKChwYXJlbnQtZnJhbWUgLiAs KHNlbGVjdGVkLWZyYW1lKSkpKSkKKwkgKHBhcmVudCAob3IgKGFzc3EgJ3BhcmVudC1mcmFt ZSBwYXJhbWV0ZXJzKQorICAgICAgICAgICAgICAgICAgICAgKHNlbGVjdGVkLWZyYW1lKSkp CisgICAgICAgICAoc2hhcmUgKGFzc3EgJ3NoYXJlLWNoaWxkLWZyYW1lIHBhcmFtZXRlcnMp KQorICAgICAgICAgc2hhcmUxIGZyYW1lIHdpbmRvdykKKyAgICAod2l0aC1jdXJyZW50LWJ1 ZmZlciBidWZmZXIKKyAgICAgICh3aGVuIChmcmFtZS1saXZlLXAgcGFyZW50KQorICAgICAg ICAoY2F0Y2ggJ2ZyYW1lCisgICAgICAgICAgKGRvbGlzdCAoZnJhbWUxIChmcmFtZS1saXN0 KSkKKyAgICAgICAgICAgICh3aGVuIChlcSAoZnJhbWUtcGFyZW50IGZyYW1lMSkgcGFyZW50 KQorICAgICAgICAgICAgICAoc2V0cSBzaGFyZTEgKGFzc3EgJ3NoYXJlLWNoaWxkLWZyYW1l CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZnJhbWUtcGFyYW1ldGVycyBm cmFtZTEpKSkKKyAgICAgICAgICAgICAgKHdoZW4gKGVxIHNoYXJlIHNoYXJlMSkKKyAgICAg ICAgICAgICAgICAoc2V0cSBmcmFtZSBmcmFtZTEpCisgICAgICAgICAgICAgICAgKHRocm93 ICdmcmFtZSB0KSkpKSkpCisKKyAgICAgIChpZiBmcmFtZQorICAgICAgICAgIChzZXRxIHdp bmRvdyAoZnJhbWUtc2VsZWN0ZWQtd2luZG93IGZyYW1lKSkKKyAgICAgICAgKHNldHEgZnJh bWUgKG1ha2UtZnJhbWUgcGFyYW1ldGVycykpCisgICAgICAgIChzZXRxIHdpbmRvdyAoZnJh bWUtc2VsZWN0ZWQtd2luZG93IGZyYW1lKSkpKQorCisgICAgKHByb2cxICh3aW5kb3ctLWRp c3BsYXktYnVmZmVyCisJICAgIGJ1ZmZlciB3aW5kb3cgJ2ZyYW1lIGFsaXN0IGRpc3BsYXkt YnVmZmVyLW1hcmstZGVkaWNhdGVkKQorICAgICAgKHVubGVzcyAoY2RyIChhc3NxICdpbmhp Yml0LXN3aXRjaC1mcmFtZSBhbGlzdCkpCisJKHdpbmRvdy0tbWF5YmUtcmFpc2UtZnJhbWUg ZnJhbWUpKSkpKQorCiAoZGVmdW4gZGlzcGxheS1idWZmZXItYmVsb3ctc2VsZWN0ZWQgKGJ1 ZmZlciBhbGlzdCkKICAgIlRyeSBkaXNwbGF5aW5nIEJVRkZFUiBpbiBhIHdpbmRvdyBiZWxv dyB0aGUgc2VsZWN0ZWQgd2luZG93LgogSWYgdGhlcmUgaXMgYSB3aW5kb3cgYmVsb3cgdGhl IHNlbGVjdGVkIG9uZSBhbmQgdGhhdCB3aW5kb3cKQEAgLTcyNzIsNyArNzMyMSw4IEBAIGRp c3BsYXktYnVmZmVyLWJlbG93LXNlbGVjdGVkCiAJKGFuZCAobm90IChmcmFtZS1wYXJhbWV0 ZXIgbmlsICd1bnNwbGl0dGFibGUpKQogCSAgICAgKGxldCAoKHNwbGl0LWhlaWdodC10aHJl c2hvbGQgMCkKIAkJICAgc3BsaXQtd2lkdGgtdGhyZXNob2xkKQotCSAgICAgICAoc2V0cSB3 aW5kb3cgKHdpbmRvdy0tdHJ5LXRvLXNwbGl0LXdpbmRvdyAoc2VsZWN0ZWQtd2luZG93KSBh bGlzdCkpKQorCSAgICAgICAoc2V0cSB3aW5kb3cgKHdpbmRvdy0tdHJ5LXRvLXNwbGl0LXdp bmRvdworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2VsZWN0ZWQtd2luZG93KSBh bGlzdCkpKQogCSAgICAgKHdpbmRvdy0tZGlzcGxheS1idWZmZXIKIAkgICAgICBidWZmZXIg d2luZG93ICd3aW5kb3cgYWxpc3QgZGlzcGxheS1idWZmZXItbWFyay1kZWRpY2F0ZWQpKQog CShhbmQgKHNldHEgd2luZG93ICh3aW5kb3ctaW4tZGlyZWN0aW9uICdiZWxvdykpCkBAIC03 ODg1LDEwICs3OTM1LDEyIEBAIGZpdC1mcmFtZS10by1idWZmZXItc2l6ZXMKIChkZWNsYXJl LWZ1bmN0aW9uIHgtZGlzcGxheS1waXhlbC1oZWlnaHQgInhmbnMuYyIgKCZvcHRpb25hbCB0 ZXJtaW5hbCkpCgogKGRlZnVuIHdpbmRvdy0tc2FuaXRpemUtbWFyZ2luIChtYXJnaW4gbGVm dCByaWdodCkKLSAgIlJldHVybiBNQVJHSU4gaWYgaXQncyBhIG51bWJlciBiZXR3ZWVuIExF RlQgYW5kIFJJR0hULiIKLSAgKHdoZW4gKGFuZCAobnVtYmVycCBtYXJnaW4pCi0JICAgICAo PD0gbGVmdCAoLSByaWdodCBtYXJnaW4pKSAoPD0gbWFyZ2luIHJpZ2h0KSkKLSAgICBtYXJn aW4pKQorICAiUmV0dXJuIE1BUkdJTiBpZiBpdCdzIGEgbnVtYmVyIGJldHdlZW4gTEVGVCBh bmQgUklHSFQuCitSZXR1cm4gMCBvdGhlcndpc2UuIgorICAoaWYgKGFuZCAobnVtYmVycCBt YXJnaW4pCisgICAgICAgICAgICg8PSBsZWZ0ICgtIHJpZ2h0IG1hcmdpbikpICg8PSBtYXJn aW4gcmlnaHQpKQorICAgICAgbWFyZ2luCisgICAgMCkpCgogKGRlY2xhcmUtZnVuY3Rpb24g dG9vbC1iYXItaGVpZ2h0ICJ4ZGlzcC5jIiAoJm9wdGlvbmFsIGZyYW1lIHBpeGVsd2lzZSkp CgpAQCAtNzkwNiwxOTAgKzc5NTgsMTk3IEBAIGZpdC1mcmFtZS10by1idWZmZXIKCiBUaGUg bmV3IHBvc2l0aW9uIGFuZCBzaXplIG9mIEZSQU1FIGNhbiBiZSBhZGRpdGlvbmFsbHkgZGV0 ZXJtaW5lZAogYnkgY3VzdG9taXppbmcgdGhlIG9wdGlvbnMgYGZpdC1mcmFtZS10by1idWZm ZXItc2l6ZXMnIGFuZAotYGZpdC1mcmFtZS10by1idWZmZXItbWFyZ2lucycgb3IgdGhlIGNv cnJlc3BvbmRpbmcgcGFyYW1ldGVycyBvZgotRlJBTUUuIgorYGZpdC1mcmFtZS10by1idWZm ZXItbWFyZ2lucycgb3Igc2V0dGluZyB0aGUgY29ycmVzcG9uZGluZworcGFyYW1ldGVycyBv ZiBGUkFNRS4iCiAgIChpbnRlcmFjdGl2ZSkKLSAgKHVubGVzcyAoYW5kIChmYm91bmRwICd4 LWRpc3BsYXktcGl4ZWwtaGVpZ2h0KQotCSAgICAgICA7OyBXZSBuZWVkIHRoZSByZXNwZWN0 aXZlIHNpemVzIG5vdy4KLQkgICAgICAgKGZib3VuZHAgJ2Rpc3BsYXktbW9uaXRvci1hdHRy aWJ1dGVzLWxpc3QpKQorICAodW5sZXNzIChmYm91bmRwICdkaXNwbGF5LW1vbml0b3ItYXR0 cmlidXRlcy1saXN0KQogICAgICh1c2VyLWVycm9yICJDYW5ub3QgcmVzaXplIGZyYW1lIGlu IG5vbi1ncmFwaGljIEVtYWNzIikpCiAgIChzZXRxIGZyYW1lICh3aW5kb3ctbm9ybWFsaXpl LWZyYW1lIGZyYW1lKSkKICAgKHdoZW4gKHdpbmRvdy1saXZlLXAgKGZyYW1lLXJvb3Qtd2lu ZG93IGZyYW1lKSkKLSAgICAod2l0aC1zZWxlY3RlZC13aW5kb3cgKGZyYW1lLXJvb3Qtd2lu ZG93IGZyYW1lKQotICAgICAgKGxldCogKChjaGFyLXdpZHRoIChmcmFtZS1jaGFyLXdpZHRo KSkKLQkgICAgIChjaGFyLWhlaWdodCAoZnJhbWUtY2hhci1oZWlnaHQpKQotCSAgICAgKG1v bml0b3ItYXR0cmlidXRlcyAoY2FyIChkaXNwbGF5LW1vbml0b3ItYXR0cmlidXRlcy1saXN0 Ci0JCQkJICAgICAgIChmcmFtZS1wYXJhbWV0ZXIgZnJhbWUgJ2Rpc3BsYXkpKSkpCi0JICAg ICAoZ2VvbWV0cnkgKGNkciAoYXNzcSAnZ2VvbWV0cnkgbW9uaXRvci1hdHRyaWJ1dGVzKSkp Ci0JICAgICAoZGlzcGxheS13aWR0aCAoLSAobnRoIDIgZ2VvbWV0cnkpIChudGggMCBnZW9t ZXRyeSkpKQotCSAgICAgKGRpc3BsYXktaGVpZ2h0ICgtIChudGggMyBnZW9tZXRyeSkgKG50 aCAxIGdlb21ldHJ5KSkpCi0JICAgICAod29ya2FyZWEgKGNkciAoYXNzcSAnd29ya2FyZWEg bW9uaXRvci1hdHRyaWJ1dGVzKSkpCi0JICAgICA7OyBIYW5kbGUgbWFyZ2lucy4KLQkgICAg IChtYXJnaW5zIChvciAoZnJhbWUtcGFyYW1ldGVyIGZyYW1lICdmaXQtZnJhbWUtdG8tYnVm ZmVyLW1hcmdpbnMpCi0JCQkgIGZpdC1mcmFtZS10by1idWZmZXItbWFyZ2lucykpCi0JICAg ICAobGVmdC1tYXJnaW4gKGlmIChudGggMCBtYXJnaW5zKQotCQkJICAgICAgKG9yICh3aW5k b3ctLXNhbml0aXplLW1hcmdpbgotCQkJCSAgIChudGggMCBtYXJnaW5zKSAwIGRpc3BsYXkt d2lkdGgpCi0JCQkJICAwKQotCQkJICAgIChudGggMCB3b3JrYXJlYSkpKQotCSAgICAgKHRv cC1tYXJnaW4gKGlmIChudGggMSBtYXJnaW5zKQotCQkJICAgICAob3IgKHdpbmRvdy0tc2Fu aXRpemUtbWFyZ2luCi0JCQkJICAobnRoIDEgbWFyZ2lucykgMCBkaXNwbGF5LWhlaWdodCkK LQkJCQkgMCkKLQkJCSAgIChudGggMSB3b3JrYXJlYSkpKQotCSAgICAgKHdvcmthcmVhLXdp ZHRoIChudGggMiB3b3JrYXJlYSkpCi0JICAgICAocmlnaHQtbWFyZ2luIChpZiAobnRoIDIg bWFyZ2lucykKLQkJCSAgICAgICAoLSBkaXNwbGF5LXdpZHRoCi0JCQkJICAob3IgKHdpbmRv dy0tc2FuaXRpemUtbWFyZ2luCi0JCQkJICAgICAgIChudGggMiBtYXJnaW5zKSBsZWZ0LW1h cmdpbiBkaXNwbGF5LXdpZHRoKQotCQkJCSAgICAgIDApKQotCQkJICAgICAobnRoIDIgd29y a2FyZWEpKSkKLQkgICAgICh3b3JrYXJlYS1oZWlnaHQgKG50aCAzIHdvcmthcmVhKSkKLQkg ICAgIChib3R0b20tbWFyZ2luIChpZiAobnRoIDMgbWFyZ2lucykKLQkJCQkoLSBkaXNwbGF5 LWhlaWdodAotCQkJCSAgIChvciAod2luZG93LS1zYW5pdGl6ZS1tYXJnaW4KLQkJCQkJKG50 aCAzIG1hcmdpbnMpIHRvcC1tYXJnaW4gZGlzcGxheS1oZWlnaHQpCi0JCQkJICAgICAgIDAp KQotCQkJICAgICAgKG50aCAzIHdvcmthcmVhKSkpCi0JICAgICA7OyBUaGUgcGl4ZWwgd2lk dGggb2YgRlJBTUUgKHdoaWNoIGRvZXMgbm90IGluY2x1ZGUgdGhlCi0JICAgICA7OyB3aW5k b3cgbWFuYWdlcidzIGRlY29yYXRpb25zKS4KLQkgICAgIChmcmFtZS13aWR0aCAoZnJhbWUt cGl4ZWwtd2lkdGgpKQotCSAgICAgOzsgVGhlIHBpeGVsIHdpZHRoIG9mIHRoZSBib2R5IG9m IEZSQU1FJ3Mgcm9vdCB3aW5kb3cuCi0JICAgICAod2luZG93LWJvZHktd2lkdGggKHdpbmRv dy1ib2R5LXdpZHRoIG5pbCB0KSkKLQkgICAgIDs7IFRoZSBkaWZmZXJlbmNlIGluIHBpeGVs cyBiZXR3ZWVuIHRvdGFsIGFuZCBib2R5IHdpZHRoIG9mCi0JICAgICA7OyBGUkFNRSdzIHdp bmRvdy4KLQkgICAgICh3aW5kb3ctZXh0cmEtd2lkdGggKC0gKHdpbmRvdy1waXhlbC13aWR0 aCkgd2luZG93LWJvZHktd2lkdGgpKQotCSAgICAgOzsgVGhlIGRpZmZlcmVuY2UgaW4gcGl4 ZWxzIGJldHdlZW4gdGhlIGZyYW1lJ3MgcGl4ZWwgd2lkdGgKLQkgICAgIDs7IGFuZCB0aGUg d2luZG93J3MgYm9keSB3aWR0aC4gIFRoaXMgaXMgdGhlIHNwYWNlIHdlIGNhbid0Ci0JICAg ICA7OyB1c2UgZm9yIGZpdHRpbmcuCi0JICAgICAoZXh0cmEtd2lkdGggKC0gZnJhbWUtd2lk dGggd2luZG93LWJvZHktd2lkdGgpKQotCSAgICAgOzsgVGhlIHBpeGVsIHBvc2l0aW9uIG9m IEZSQU1FJ3MgbGVmdCBib3JkZXIuICBXZSB1c3VhbGx5Ci0JICAgICA7OyB0cnkgdG8gbGVh dmUgdGhpcyBhbG9uZS4KLQkgICAgIChsZWZ0Ci0JICAgICAgKGxldCAoKGxlZnQgKGZyYW1l LXBhcmFtZXRlciBuaWwgJ2xlZnQpKSkKLQkJKGlmIChjb25zcCBsZWZ0KQotCQkgICAgKGZ1 bmNhbGwgKGNhciBsZWZ0KSAoY2FkciBsZWZ0KSkKLQkJICBsZWZ0KSkpCi0JICAgICA7OyBU aGUgcGl4ZWwgaGVpZ2h0IG9mIEZSQU1FICh3aGljaCBkb2VzIG5vdCBpbmNsdWRlIHRpdGxl Ci0JICAgICA7OyBsaW5lLCBkZWNvcmF0aW9ucywgYW5kIHNvbWV0aW1lcyBuZWl0aGVyIHRo ZSBtZW51IG5vcgotCSAgICAgOzsgdGhlIHRvb2xiYXIpLgotCSAgICAgKGZyYW1lLWhlaWdo dCAoZnJhbWUtcGl4ZWwtaGVpZ2h0KSkKLQkgICAgIDs7IFRoZSBwaXhlbCBoZWlnaHQgb2Yg RlJBTUUncyByb290IHdpbmRvdyAod2UgZG9uJ3QgY2FyZQotCSAgICAgOzsgYWJvdXQgdGhl IHdpbmRvdydzIGJvZHkgaGVpZ2h0IHNpbmNlIHRoZSByZXR1cm4gdmFsdWUgb2YKLQkgICAg IDs7IGB3aW5kb3ctdGV4dC1waXhlbC1zaXplJyBpbmNsdWRlcyBoZWFkZXIgYW5kIG1vZGUg bGluZSkuCi0JICAgICAod2luZG93LWhlaWdodCAod2luZG93LXBpeGVsLWhlaWdodCkpCi0J ICAgICA7OyBUaGUgZGlmZmVyZW5jZSBpbiBwaXhlbHMgYmV0d2VlbiB0aGUgZnJhbWUncyBw aXhlbAotCSAgICAgOzsgaGVpZ2h0IGFuZCB0aGUgd2luZG93J3MgaGVpZ2h0LgotCSAgICAg KGV4dHJhLWhlaWdodCAoLSBmcmFtZS1oZWlnaHQgd2luZG93LWhlaWdodCkpCi0JICAgICA7 OyBUaGUgcGl4ZWwgcG9zaXRpb24gb2YgRlJBTUUncyB0b3AgYm9yZGVyLgotCSAgICAgKHRv cAotCSAgICAgIChsZXQgKCh0b3AgKGZyYW1lLXBhcmFtZXRlciBuaWwgJ3RvcCkpKQotCQko aWYgKGNvbnNwIHRvcCkKLQkJICAgIChmdW5jYWxsIChjYXIgdG9wKSAoY2FkciB0b3ApKQot CQkgIHRvcCkpKQotCSAgICAgOzsgU2FuaXRpemUgbWluaW11bSBhbmQgbWF4aW11bSBzaXpl cy4KLQkgICAgIChzaXplcyAob3IgKGZyYW1lLXBhcmFtZXRlciBmcmFtZSAnZml0LWZyYW1l LXRvLWJ1ZmZlci1zaXplcykKLQkJCWZpdC1mcmFtZS10by1idWZmZXItc2l6ZXMpKQotCSAg ICAgKG1heC1oZWlnaHQKLQkgICAgICAoY29uZAotCSAgICAgICAoKG51bWJlcnAgKG50aCAw IHNpemVzKSkgKCogKG50aCAwIHNpemVzKSBjaGFyLWhlaWdodCkpCi0JICAgICAgICgobnVt YmVycCBtYXgtaGVpZ2h0KSAoKiBtYXgtaGVpZ2h0IGNoYXItaGVpZ2h0KSkKLQkgICAgICAg KHQgZGlzcGxheS1oZWlnaHQpKSkKLQkgICAgIChtaW4taGVpZ2h0Ci0JICAgICAgKGNvbmQK LQkgICAgICAgKChudW1iZXJwIChudGggMSBzaXplcykpICgqIChudGggMSBzaXplcykgY2hh ci1oZWlnaHQpKQotCSAgICAgICAoKG51bWJlcnAgbWluLWhlaWdodCkgKCogbWluLWhlaWdo dCBjaGFyLWhlaWdodCkpCi0JICAgICAgICh0ICgqIHdpbmRvdy1taW4taGVpZ2h0IGNoYXIt aGVpZ2h0KSkpKQotCSAgICAgKG1heC13aWR0aAotCSAgICAgIChjb25kCi0JICAgICAgICgo bnVtYmVycCAobnRoIDIgc2l6ZXMpKQotCQkoLSAoKiAobnRoIDIgc2l6ZXMpIGNoYXItd2lk dGgpIHdpbmRvdy1leHRyYS13aWR0aCkpCi0JICAgICAgICgobnVtYmVycCBtYXgtd2lkdGgp Ci0JCSgtICgqIG1heC13aWR0aCBjaGFyLXdpZHRoKSB3aW5kb3ctZXh0cmEtd2lkdGgpKQot CSAgICAgICAodCBkaXNwbGF5LXdpZHRoKSkpCi0JICAgICAobWluLXdpZHRoCi0JICAgICAg KGNvbmQKLQkgICAgICAgKChudW1iZXJwIChudGggMyBzaXplcykpCi0JCSgtICgqIChudGgg MyBzaXplcykgY2hhci13aWR0aCkgd2luZG93LWV4dHJhLXdpZHRoKSkKLQkgICAgICAgKChu dW1iZXJwIG1pbi13aWR0aCkKLQkJKC0gKCogbWluLXdpZHRoIGNoYXItd2lkdGgpIHdpbmRv dy1leHRyYS13aWR0aCkpCi0JICAgICAgICh0ICgqIHdpbmRvdy1taW4td2lkdGggY2hhci13 aWR0aCkpKSkKLQkgICAgIDs7IE5vdGU6IEN1cnJlbnRseSwgZm9yIGEgbmV3IGZyYW1lIHRo ZSBzaXplcyBvZiB0aGUgaGVhZGVyCi0JICAgICA7OyBhbmQgbW9kZSBsaW5lIG1heSBiZSBl c3RpbWF0ZWQgaW5jb3JyZWN0bHkKLQkgICAgICh2YWx1ZSAod2luZG93LXRleHQtcGl4ZWwt c2l6ZQotCQkgICAgIG5pbCB0IHQgd29ya2FyZWEtd2lkdGggd29ya2FyZWEtaGVpZ2h0IHQp KQotCSAgICAgKHdpZHRoICgrIChjYXIgdmFsdWUpICh3aW5kb3ctcmlnaHQtZGl2aWRlci13 aWR0aCkpKQotCSAgICAgKGhlaWdodAotCSAgICAgICgrIChjZHIgdmFsdWUpCi0JCSAod2lu ZG93LWJvdHRvbS1kaXZpZGVyLXdpZHRoKQotCQkgKHdpbmRvdy1zY3JvbGwtYmFyLWhlaWdo dCkpKSkKLQk7OyBEb24ndCBjaGFuZ2UgaGVpZ2h0IG9yIHdpZHRoIHdoZW4gdGhlIHdpbmRv dydzIHNpemUgaXMgZml4ZWQKLQk7OyBpbiBlaXRoZXIgZGlyZWN0aW9uIG9yIE9OTFkgZm9y YmlkcyBpdC4KLQkoY29uZAotCSAoKG9yIChlcSB3aW5kb3ctc2l6ZS1maXhlZCAnd2lkdGgp IChlcSBvbmx5ICd2ZXJ0aWNhbGx5KSkKLQkgIChzZXRxIHdpZHRoIG5pbCkpCi0JICgob3Ig KGVxIHdpbmRvdy1zaXplLWZpeGVkICdoZWlnaHQpIChlcSBvbmx5ICdob3Jpem9udGFsbHkp KQotCSAgKHNldHEgaGVpZ2h0IG5pbCkpKQotCTs7IEZpdCB3aWR0aCB0byBjb25zdHJhaW50 cy4KLQkod2hlbiB3aWR0aAotCSAgKHVubGVzcyBmcmFtZS1yZXNpemUtcGl4ZWx3aXNlCi0J ICAgIDs7IFJvdW5kIHRvIGNoYXJhY3RlciBzaXplcy4KLQkgICAgKHNldHEgd2lkdGggKCog KC8gKCsgd2lkdGggY2hhci13aWR0aCAtMSkgY2hhci13aWR0aCkKLQkJCSAgIGNoYXItd2lk dGgpKSkKLQkgIDs7IEZpdCB0byBtYXhpbXVtIGFuZCBtaW5pbXVtIHdpZHRocy4KLQkgIChz ZXRxIHdpZHRoIChtYXggKG1pbiB3aWR0aCBtYXgtd2lkdGgpIG1pbi13aWR0aCkpCi0JICA7 OyBBZGQgZXh0cmEgd2lkdGguCi0JICAoc2V0cSB3aWR0aCAoKyB3aWR0aCBleHRyYS13aWR0 aCkpCi0JICA7OyBQcmVzZXJ2ZSBtYXJnaW5zLgotCSAgKGxldCAoKHJpZ2h0ICgrIGxlZnQg d2lkdGgpKSkKLQkgICAgKGNvbmQKLQkgICAgICgoPiByaWdodCByaWdodC1tYXJnaW4pCi0J ICAgICAgOzsgTW92ZSBmcmFtZSB0byBsZWZ0ICh3ZSBkb24ndCBrbm93IGl0cyByZWFsIHdp ZHRoKS4KLQkgICAgICAoc2V0cSBsZWZ0IChtYXggbGVmdC1tYXJnaW4gKC0gbGVmdCAoLSBy aWdodCByaWdodC1tYXJnaW4pKSkpKQotCSAgICAgKCg8IGxlZnQgbGVmdC1tYXJnaW4pCi0J ICAgICAgOzsgTW92ZSBmcmFtZSB0byByaWdodC4KLQkgICAgICAoc2V0cSBsZWZ0IGxlZnQt bWFyZ2luKSkpKSkKLQk7OyBGaXQgaGVpZ2h0IHRvIGNvbnN0cmFpbnRzLgotCSh3aGVuIGhl aWdodAotCSAgKHVubGVzcyBmcmFtZS1yZXNpemUtcGl4ZWx3aXNlCi0JICAgIChzZXRxIGhl aWdodCAoKiAoLyAoKyBoZWlnaHQgY2hhci1oZWlnaHQgLTEpIGNoYXItaGVpZ2h0KQotCQkJ ICAgIGNoYXItaGVpZ2h0KSkpCi0JICA7OyBGaXQgdG8gbWF4aW11bSBhbmQgbWluaW11bSBo ZWlnaHRzLgotCSAgKHNldHEgaGVpZ2h0IChtYXggKG1pbiBoZWlnaHQgbWF4LWhlaWdodCkg bWluLWhlaWdodCkpCi0JICA7OyBBZGQgZXh0cmEgaGVpZ2h0LgotCSAgKHNldHEgaGVpZ2h0 ICgrIGhlaWdodCBleHRyYS1oZWlnaHQpKQotCSAgOzsgUHJlc2VydmUgbWFyZ2lucy4KLQkg IChsZXQgKChib3R0b20gKCsgdG9wIGhlaWdodCkpKQotCSAgICAoY29uZAotCSAgICAgKCg+ IGJvdHRvbSBib3R0b20tbWFyZ2luKQotCSAgICAgIDs7IE1vdmUgZnJhbWUgdXAgKHdlIGRv bid0IGtub3cgaXRzIHJlYWwgaGVpZ2h0KS4KLQkgICAgICAoc2V0cSB0b3AgKG1heCB0b3At bWFyZ2luICgtIHRvcCAoLSBib3R0b20gYm90dG9tLW1hcmdpbikpKSkpCi0JICAgICAoKDwg dG9wIHRvcC1tYXJnaW4pCi0JICAgICAgOzsgTW92ZSBmcmFtZSBkb3duLgotCSAgICAgIChz ZXRxIHRvcCB0b3AtbWFyZ2luKSkpKSkKLQk7OyBBcHBseSBjaGFuZ2VzLgotCShzZXQtZnJh bWUtcG9zaXRpb24gZnJhbWUgbGVmdCB0b3ApCi0JOzsgQ2x1bXNpbHkgdHJ5IHRvIHRyYW5z bGF0ZSBvdXIgY2FsY3VsYXRpb25zIHRvIHdoYXQKLQk7OyBgc2V0LWZyYW1lLXNpemUnIHdh bnRzLgotCSh3aGVuIHdpZHRoCi0JICAoc2V0cSB3aWR0aCAoLSAoKyAoZnJhbWUtdGV4dC13 aWR0aCkgd2lkdGgpCi0JCQkgZXh0cmEtd2lkdGggd2luZG93LWJvZHktd2lkdGgpKSkKLQko d2hlbiBoZWlnaHQKLQkgIChzZXRxIGhlaWdodCAoLSAoKyAoZnJhbWUtdGV4dC1oZWlnaHQp IGhlaWdodCkKLQkJCSAgZXh0cmEtaGVpZ2h0IHdpbmRvdy1oZWlnaHQpKSkKLQkoc2V0LWZy YW1lLXNpemUKLQkgZnJhbWUKLQkgKGlmIHdpZHRoCi0JICAgICAoaWYgZnJhbWUtcmVzaXpl LXBpeGVsd2lzZQotCQkgd2lkdGgKLQkgICAgICAgKC8gd2lkdGggY2hhci13aWR0aCkpCi0J ICAgKGZyYW1lLXRleHQtd2lkdGgpKQotCSAoaWYgaGVpZ2h0Ci0JICAgICAoaWYgZnJhbWUt cmVzaXplLXBpeGVsd2lzZQotCQkgaGVpZ2h0Ci0JICAgICAgICgvIGhlaWdodCBjaGFyLWhl aWdodCkpCi0JICAgKGZyYW1lLXRleHQtaGVpZ2h0KSkKLQkgZnJhbWUtcmVzaXplLXBpeGVs d2lzZSkpKSkpCisgICAgKGxldCogKChjaGFyLXdpZHRoIChmcmFtZS1jaGFyLXdpZHRoIGZy YW1lKSkKKyAgICAgICAgICAgKGNoYXItaGVpZ2h0IChmcmFtZS1jaGFyLWhlaWdodCBmcmFt ZSkpCisgICAgICAgICAgIDs7IFdJTkRPVyBpcyBGUkFNRSdzIHJvb3Qgd2luZG93LgorICAg ICAgICAgICAod2luZG93IChmcmFtZS1yb290LXdpbmRvdyBmcmFtZSkpCisgICAgICAgICAg IChwYXJlbnQgKGZyYW1lLXBhcmVudCBmcmFtZSkpCisgICAgICAgICAgIChtb25pdG9yLWF0 dHJpYnV0ZXMKKyAgICAgICAgICAgICh1bmxlc3MgcGFyZW50CisgICAgICAgICAgICAgIChj YXIgKGRpc3BsYXktbW9uaXRvci1hdHRyaWJ1dGVzLWxpc3QKKyAgICAgICAgICAgICAgICAg ICAgKGZyYW1lLXBhcmFtZXRlciBmcmFtZSAnZGlzcGxheSkpKSkpCisgICAgICAgICAgIDs7 IEZSQU1FJ1MgcGFyZW50IG9yIGRpc3BsYXkgc2l6ZXMuICBVc2VkIGluIGNvbm5lY3Rpb24K KyAgICAgICAgICAgOzsgd2l0aCBtYXJnaW5zLgorICAgICAgICAgICAoZ2VvbWV0cnkKKyAg ICAgICAgICAgICh1bmxlc3MgcGFyZW50CisgICAgICAgICAgICAgIChjZHIgKGFzc3EgJ2dl b21ldHJ5IG1vbml0b3ItYXR0cmlidXRlcykpKSkKKyAgICAgICAgICAgKHBhcmVudC1vci1k aXNwbGF5LXdpZHRoCisgICAgICAgICAgICAoaWYgcGFyZW50CisgICAgICAgICAgICAgICAg KGZyYW1lLW5hdGl2ZS13aWR0aCBwYXJlbnQpCisgICAgICAgICAgICAgICgtIChudGggMiBn ZW9tZXRyeSkgKG50aCAwIGdlb21ldHJ5KSkpKQorICAgICAgICAgICAocGFyZW50LW9yLWRp c3BsYXktaGVpZ2h0CisgICAgICAgICAgICAoaWYgcGFyZW50CisgICAgICAgICAgICAgICAg KGZyYW1lLW5hdGl2ZS1oZWlnaHQgcGFyZW50KQorICAgICAgICAgICAgICAoLSAobnRoIDMg Z2VvbWV0cnkpIChudGggMSBnZW9tZXRyeSkpKSkKKyAgICAgICAgICAgOzsgRlJBTUUnUyBw YXJlbnQgb3Igd29ya2FyZWEgc2l6ZXMuICBVc2VkIHdoZW4gbm8gbWFyZ2lucworICAgICAg ICAgICA7OyBhcmUgc3BlY2lmaWVkLgorICAgICAgICAgICAocGFyZW50LW9yLXdvcmthcmVh CisgICAgICAgICAgICAoaWYgcGFyZW50CisgICAgICAgICAgICAgICAgYCgwIDAgLHBhcmVu dC1vci1kaXNwbGF5LXdpZHRoICxwYXJlbnQtb3ItZGlzcGxheS1oZWlnaHQpCisgICAgICAg ICAgICAgIChjZHIgKGFzc3EgJ3dvcmthcmVhIG1vbml0b3ItYXR0cmlidXRlcykpKSkKKyAg ICAgICAgICAgOzsgVGhlIG91dGVyIHNpemUgb2YgRlJBTUUuICBOZWVkZWQgdG8gY2FsY3Vs YXRlIHRoZQorICAgICAgICAgICA7OyBtYXJnaW5zIGFyb3VuZCB0aGUgcm9vdCB3aW5kb3cn cyBib2R5IHRoYXQgaGF2ZSB0bworICAgICAgICAgICA7OyByZW1haW4gdW50b3VjaGVkIGJ5 IGZpdHRpbmcuCisgICAgICAgICAgIChvdXRlci1lZGdlcyAoZnJhbWUtZWRnZXMgZnJhbWUg J291dGVyLWVkZ2VzKSkKKyAgICAgICAgICAgKG91dGVyLXdpZHRoIChpZiBvdXRlci1lZGdl cworICAgICAgICAgICAgICAgICAgICAgICAgICAgICgtIChudGggMiBvdXRlci1lZGdlcykg KG50aCAwIG91dGVyLWVkZ2VzKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgOzsgQSBw b29yIGd1ZXNzLgorICAgICAgICAgICAgICAgICAgICAgICAgICAoZnJhbWUtcGl4ZWwtd2lk dGggZnJhbWUpKSkKKyAgICAgICAgICAgKG91dGVyLWhlaWdodCAoaWYgb3V0ZXItZWRnZXMK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKC0gKG50aCAzIG91dGVyLWVkZ2VzKSAo bnRoIDEgb3V0ZXItZWRnZXMpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgOzsgQW5v dGhlciBwb29yIGd1ZXNzLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgKGZyYW1lLXBp eGVsLWhlaWdodCBmcmFtZSkpKQorICAgICAgICAgICA7OyBUaGUgdGV4dCBzaXplIG9mIG9m IEZSQU1FLiAgTmVlZGVkIHRvIHNwZWNpZnkgRlJBTUUncworICAgICAgICAgICA7OyB0ZXh0 IHNpemUgYWZ0ZXIgdGhlIHJvb3Qgd2luZG93J3MgYm9keSdzIG5ldyBzaXplcyBoYXZlCisg ICAgICAgICAgIDs7IGJlZW4gY2FsY3VsYXRlZC4KKyAgICAgICAgICAgKHRleHQtd2lkdGgg KGZyYW1lLXRleHQtd2lkdGggZnJhbWUpKQorICAgICAgICAgICAodGV4dC1oZWlnaHQgKGZy YW1lLXRleHQtaGVpZ2h0IGZyYW1lKSkKKyAgICAgICAgICAgOzsgV0lORE9XJ3MgYm9keSBz aXplLgorICAgICAgICAgICAoYm9keS13aWR0aCAod2luZG93LWJvZHktd2lkdGggd2luZG93 IHQpKQorICAgICAgICAgICAoYm9keS1oZWlnaHQgKHdpbmRvdy1ib2R5LWhlaWdodCB3aW5k b3cgdCkpCisgICAgICAgICAgIDs7IFRoZSBkaWZmZXJlbmNlIGJldHdlZW4gRlJBTUUncyBv dXRlciBzaXplIGFuZCBXSU5ET1cncworICAgICAgICAgICA7OyBib2R5IHNpemUuCisgICAg ICAgICAgIChvdXRlci1taW51cy1ib2R5LXdpZHRoICgtIG91dGVyLXdpZHRoIGJvZHktd2lk dGgpKQorICAgICAgICAgICAob3V0ZXItbWludXMtYm9keS1oZWlnaHQgKC0gb3V0ZXItaGVp Z2h0IGJvZHktaGVpZ2h0KSkKKyAgICAgICAgICAgOzsgVGhlIGRpZmZlcmVuY2UgYmV0d2Vl biBGUkFNRSdzIHRleHQgc2l6ZSBhbmQgV0lORE9XJ3MKKyAgICAgICAgICAgOzsgYm9keSBz aXplICh0aGVzZSB2YWx1ZXMgInNob3VsZCIgYmUgcG9zaXRpdmUpLgorICAgICAgICAgICAo dGV4dC1taW51cy1ib2R5LXdpZHRoICgtIHRleHQtd2lkdGggYm9keS13aWR0aCkpCisgICAg ICAgICAgICh0ZXh0LW1pbnVzLWJvZHktaGVpZ2h0ICgtIHRleHQtaGVpZ2h0IGJvZHktaGVp Z2h0KSkKKyAgICAgICAgICAgOzsgVGhlIGN1cnJlbnQgcG9zaXRpb24gb2YgRlJBTUUuCisg ICAgICAgICAgIChwb3NpdGlvbiAoZnJhbWUtcG9zaXRpb24gZnJhbWUpKQorICAgICAgICAg ICAobGVmdCAoY2FyIHBvc2l0aW9uKSkKKyAgICAgICAgICAgKHRvcCAoY2RyIHBvc2l0aW9u KSkKKyAgICAgICAgICAgOzsgVGhlIG1hcmdpbnMgc3BlY2lmaWVkIGZvciBGUkFNRS4gIFRo ZXNlIHJlcHJlc2VudCBwaXhlbAorICAgICAgICAgICA7OyBvZmZzZXRzIGZyb20gdGhlIGxl ZnQsIHRvcCwgcmlnaHQgYW5kIGJvdHRvbSBlZGdlIG9mIHRoZQorICAgICAgICAgICA7OyBk aXNwbGF5IG9yIEZSQU1FJ3MgcGFyZW50J3MgbmF0aXZlIHJlY3RhbmdsZSBhbmQgaGF2ZSB0 bworICAgICAgICAgICA7OyB0YWtlIGNhcmUgb2YgdGhlIGRpc3BsYXkncyB0YXNrYmFyIGFu ZCBvdGhlciBvYnN0YWNsZXMuCisgICAgICAgICAgIDs7IElmIHRoZXkgYXJlIHVuc3BlY2lm aWVkLCBjb25zdHJhaW4gdGhlIHJlc3VsdGluZyBmcmFtZQorICAgICAgICAgICA7OyB0byBp dHMgd29ya2FyZWEgb3IgdGhlIHBhcmVudCBmcmFtZSdzIG5hdGl2ZSByZWN0YW5nbGUuCisg ICAgICAgICAgIChtYXJnaW5zIChvciAoZnJhbWUtcGFyYW1ldGVyIGZyYW1lICdmaXQtZnJh bWUtdG8tYnVmZmVyLW1hcmdpbnMpCisgICAgICAgICAgICAgICAgICAgICAgICBmaXQtZnJh bWUtdG8tYnVmZmVyLW1hcmdpbnMpKQorICAgICAgICAgICA7OyBDb252ZXJ0IG1hcmdpbnMg aW50dG8gcGl4ZWwgb2Zmc2V0cyBmcm9tIHRoZSBsZWZ0LXRvcAorICAgICAgICAgICA7OyBj b3JuZXIgb2YgRlJBTUUncyBkaXNwbGF5IG9yIHBhcmVudC4KKyAgICAgICAgICAgKGxlZnQt bWFyZ2luIChpZiAobnRoIDAgbWFyZ2lucykKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAod2luZG93LS1zYW5pdGl6ZS1tYXJnaW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKG50aCAwIG1hcmdpbnMpIDAgcGFyZW50LW9yLWRpc3BsYXktd2lkdGgpCisgICAgICAg ICAgICAgICAgICAgICAgICAgIChudGggMCBwYXJlbnQtb3Itd29ya2FyZWEpKSkKKyAgICAg ICAgICAgKHRvcC1tYXJnaW4gKGlmIChudGggMSBtYXJnaW5zKQorICAgICAgICAgICAgICAg ICAgICAgICAgICAgKHdpbmRvdy0tc2FuaXRpemUtbWFyZ2luCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKG50aCAxIG1hcmdpbnMpIDAgcGFyZW50LW9yLWRpc3BsYXktaGVpZ2h0 KQorICAgICAgICAgICAgICAgICAgICAgICAgIChudGggMSBwYXJlbnQtb3Itd29ya2FyZWEp KSkKKyAgICAgICAgICAgKHJpZ2h0LW1hcmdpbiAoaWYgKG50aCAyIG1hcmdpbnMpCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICgtIHBhcmVudC1vci1kaXNwbGF5LXdpZHRoCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICh3aW5kb3ctLXNhbml0aXplLW1hcmdp bgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG50aCAyIG1hcmdpbnMpIGxl ZnQtbWFyZ2luCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJlbnQtb3It ZGlzcGxheS13aWR0aCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAobnRoIDIgcGFy ZW50LW9yLXdvcmthcmVhKSkpCisgICAgICAgICAgIChib3R0b20tbWFyZ2luIChpZiAobnRo IDMgbWFyZ2lucykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgtIHBhcmVudC1v ci1kaXNwbGF5LWhlaWdodAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHdp bmRvdy0tc2FuaXRpemUtbWFyZ2luCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgKG50aCAzIG1hcmdpbnMpIHRvcC1tYXJnaW4KKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBwYXJlbnQtb3ItZGlzcGxheS1oZWlnaHQpKQorICAgICAgICAgICAgICAg ICAgICAgICAgICAgIChudGggMyBwYXJlbnQtb3Itd29ya2FyZWEpKSkKKyAgICAgICAgICAg OzsgTWluaW11bSBhbmQgbWF4aW11bSBzaXplcyBzcGVjaWZpZWQgZm9yIEZSQU1FLgorICAg ICAgICAgICAoc2l6ZXMgKG9yIChmcmFtZS1wYXJhbWV0ZXIgZnJhbWUgJ2ZpdC1mcmFtZS10 by1idWZmZXItc2l6ZXMpCisgICAgICAgICAgICAgICAgICAgICAgZml0LWZyYW1lLXRvLWJ1 ZmZlci1zaXplcykpCisgICAgICAgICAgIDs7IENhbGN1bGF0ZSB0aGUgbWluaW11bSBhbmQg bWF4aW11bSBwaXhlbCBzaXplcyBvZiBGUkFNRQorICAgICAgICAgICA7OyBmcm9tIHRoZSB2 YWx1ZXMgcHJvdmlkZWQgYnkgdGhlIE1BWC1IRUlHSFQsIE1JTi1IRUlHSFQsCisgICAgICAg ICAgIDs7IE1BWC1XSURUSCBhbmQgTUlOLVdJRFRIIGFyZ3VtZW50cyBvciwgaWYgdGhlc2Ug YXJlIG5pbCwKKyAgICAgICAgICAgOzsgZnJvbSB0aG9zZSBwcm92aWRlZCBieSBgZml0LWZy YW1lLXRvLWJ1ZmZlci1zaXplcycuCisgICAgICAgICAgIChtYXgtaGVpZ2h0CisgICAgICAg ICAgICAobWluCisgICAgICAgICAgICAgKGNvbmQKKyAgICAgICAgICAgICAgKChudW1iZXJw IG1heC1oZWlnaHQpICgqIG1heC1oZWlnaHQgY2hhci1oZWlnaHQpKQorICAgICAgICAgICAg ICAoKG51bWJlcnAgKG50aCAwIHNpemVzKSkgKCogKG50aCAwIHNpemVzKSBjaGFyLWhlaWdo dCkpCisgICAgICAgICAgICAgICh0IHBhcmVudC1vci1kaXNwbGF5LWhlaWdodCkpCisgICAg ICAgICAgICAgOzsgVGhlIGZvbGxvd2luZyBpcyB0aGUgbWF4aW11bSBoZWlnaHQgdGhhdCBm aXRzIGludG8gdGhlCisgICAgICAgICAgICAgOzsgdG9wIGFuZCBib3R0b20gbWFyZ2lucy4K KyAgICAgICAgICAgICAobWF4ICgtIGJvdHRvbS1tYXJnaW4gdG9wLW1hcmdpbiBvdXRlci1t aW51cy1ib2R5LWhlaWdodCkpKSkKKyAgICAgICAgICAgKG1pbi1oZWlnaHQKKyAgICAgICAg ICAgIChjb25kCisgICAgICAgICAgICAgKChudW1iZXJwIG1pbi1oZWlnaHQpICgqIG1pbi1o ZWlnaHQgY2hhci1oZWlnaHQpKQorICAgICAgICAgICAgICgobnVtYmVycCAobnRoIDEgc2l6 ZXMpKSAoKiAobnRoIDEgc2l6ZXMpIGNoYXItaGVpZ2h0KSkKKyAgICAgICAgICAgICAodCAo d2luZG93LW1pbi1zaXplIHdpbmRvdyBuaWwgbmlsIHQpKSkpCisgICAgICAgICAgIChtYXgt d2lkdGgKKyAgICAgICAgICAgIChtaW4KKyAgICAgICAgICAgICAoY29uZAorICAgICAgICAg ICAgICAoKG51bWJlcnAgbWF4LXdpZHRoKSAoKiBtYXgtd2lkdGggY2hhci13aWR0aCkpCisg ICAgICAgICAgICAgICgobnVtYmVycCAobnRoIDIgc2l6ZXMpKSAoKiAobnRoIDIgc2l6ZXMp IGNoYXItd2lkdGgpKQorICAgICAgICAgICAgICAodCBwYXJlbnQtb3ItZGlzcGxheS13aWR0 aCkpCisgICAgICAgICAgICAgOzsgVGhlIGZvbGxvd2luZyBpcyB0aGUgbWF4aW11bSB3aWR0 aCB0aGF0IGZpdHMgaW50byB0aGUKKyAgICAgICAgICAgICA7OyBsZWZ0IGFuZCByaWdodCBt YXJnaW5zLgorICAgICAgICAgICAgIChtYXggKC0gcmlnaHQtbWFyZ2luIGxlZnQtbWFyZ2lu IG91dGVyLW1pbnVzLWJvZHktd2lkdGgpKSkpCisgICAgICAgICAgIChtaW4td2lkdGgKKyAg ICAgICAgICAgIChjb25kCisgICAgICAgICAgICAgKChudW1iZXJwIG1pbi13aWR0aCkgKCog bWluLXdpZHRoIGNoYXItd2lkdGgpKQorICAgICAgICAgICAgICgobnVtYmVycCAobnRoIDMg c2l6ZXMpKSAobnRoIDMgc2l6ZXMpKQorICAgICAgICAgICAgICh0ICh3aW5kb3ctbWluLXNp emUgd2luZG93IHQgbmlsIHQpKSkpCisgICAgICAgICAgIDs7IE5vdGU6IEN1cnJlbnRseSwg Zm9yIGEgbmV3IGZyYW1lIHRoZSBzaXplcyBvZiB0aGUgaGVhZGVyCisgICAgICAgICAgIDs7 IGFuZCBtb2RlIGxpbmUgbWF5IGJlIGVzdGltYXRlZCBpbmNvcnJlY3RseQorICAgICAgICAg ICAoc2l6ZQorICAgICAgICAgICAgKHdpbmRvdy10ZXh0LXBpeGVsLXNpemUgd2luZG93IHQg dCBtYXgtd2lkdGggbWF4LWhlaWdodCkpCisgICAgICAgICAgICh3aWR0aCAobWF4IChjYXIg c2l6ZSkgbWluLXdpZHRoKSkKKyAgICAgICAgICAgKGhlaWdodCAobWF4IChjZHIgc2l6ZSkg bWluLWhlaWdodCkpKQorICAgICAgOzsgRG9uJ3QgY2hhbmdlIGhlaWdodCBvciB3aWR0aCB3 aGVuIHRoZSB3aW5kb3cncyBzaXplIGlzIGZpeGVkCisgICAgICA7OyBpbiBlaXRoZXIgZGly ZWN0aW9uIG9yIE9OTFkgZm9yYmlkcyBpdC4KKyAgICAgIChjb25kCisgICAgICAgKChvciAo ZXEgd2luZG93LXNpemUtZml4ZWQgJ3dpZHRoKSAoZXEgb25seSAndmVydGljYWxseSkpCisg ICAgICAgIChzZXRxIHdpZHRoIG5pbCkpCisgICAgICAgKChvciAoZXEgd2luZG93LXNpemUt Zml4ZWQgJ2hlaWdodCkgKGVxIG9ubHkgJ2hvcml6b250YWxseSkpCisgICAgICAgIChzZXRx IGhlaWdodCBuaWwpKSkKKyAgICAgIDs7IEZpdCB3aWR0aCB0byBjb25zdHJhaW50cy4KKyAg ICAgICh3aGVuIHdpZHRoCisgICAgICAgICh1bmxlc3MgZnJhbWUtcmVzaXplLXBpeGVsd2lz ZQorICAgICAgICAgIDs7IFJvdW5kIHRvIGNoYXJhY3RlciBzaXplcy4KKyAgICAgICAgICAo c2V0cSB3aWR0aCAoKiAoLyAoKyB3aWR0aCBjaGFyLXdpZHRoIC0xKSBjaGFyLXdpZHRoKQor ICAgICAgICAgICAgICAgICAgICAgICAgIGNoYXItd2lkdGgpKSkKKyAgICAgICAgOzsgVGhl IG5ldyBvdXRlciB3aWR0aCAoaW4gcGl4ZWxzKS4KKyAgICAgICAgKHNldHEgb3V0ZXItd2lk dGggKCsgd2lkdGggb3V0ZXItbWludXMtYm9keS13aWR0aCkpCisgICAgICAgIDs7IE1heWJl IG1vdmUgRlJBTUUgdG8gcHJlc2VydmUgbWFyZ2lucy4KKyAgICAgICAgKGxldCAoKHJpZ2h0 ICgrIGxlZnQgb3V0ZXItd2lkdGgpKSkKKyAgICAgICAgICAoY29uZAorICAgICAgICAgICAo KD4gcmlnaHQgcmlnaHQtbWFyZ2luKQorICAgICAgICAgICAgOzsgTW92ZSBmcmFtZSB0byBs ZWZ0LgorICAgICAgICAgICAgKHNldHEgbGVmdCAobWF4IGxlZnQtbWFyZ2luICgtIGxlZnQg KC0gcmlnaHQgcmlnaHQtbWFyZ2luKSkpKSkKKyAgICAgICAgICAgKCg8IGxlZnQgbGVmdC1t YXJnaW4pCisgICAgICAgICAgICA7OyBNb3ZlIGZyYW1lIHRvIHJpZ2h0LgorICAgICAgICAg ICAgKHNldHEgbGVmdCBsZWZ0LW1hcmdpbikpKSkpCisgICAgICA7OyBGaXQgaGVpZ2h0IHRv IGNvbnN0cmFpbnRzLgorICAgICAgKHdoZW4gaGVpZ2h0CisgICAgICAgICh1bmxlc3MgZnJh bWUtcmVzaXplLXBpeGVsd2lzZQorICAgICAgICAgIChzZXRxIGhlaWdodCAoKiAoLyAoKyBo ZWlnaHQgY2hhci1oZWlnaHQgLTEpIGNoYXItaGVpZ2h0KQorICAgICAgICAgICAgICAgICAg ICAgICAgICBjaGFyLWhlaWdodCkpKQorICAgICAgICA7OyBUaGUgbmV3IG91dGVyIGhlaWdo dC4KKyAgICAgICAgKHNldHEgb3V0ZXItaGVpZ2h0ICgrIGhlaWdodCBvdXRlci1taW51cy1i b2R5LWhlaWdodCkpCisgICAgICAgIDs7IFByZXNlcnZlIG1hcmdpbnMuCisgICAgICAgIChs ZXQgKChib3R0b20gKCsgdG9wIG91dGVyLWhlaWdodCkpKQorICAgICAgICAgIChjb25kCisg ICAgICAgICAgICgoPiBib3R0b20gYm90dG9tLW1hcmdpbikKKyAgICAgICAgICAgIDs7IE1v dmUgZnJhbWUgdXAuCisgICAgICAgICAgICAoc2V0cSB0b3AgKG1heCB0b3AtbWFyZ2luICgt IHRvcCAoLSBib3R0b20gYm90dG9tLW1hcmdpbikpKSkpCisgICAgICAgICAgICgoPCB0b3Ag dG9wLW1hcmdpbikKKyAgICAgICAgICAgIDs7IE1vdmUgZnJhbWUgZG93bi4KKyAgICAgICAg ICAgIChzZXRxIHRvcCB0b3AtbWFyZ2luKSkpKSkKKyAgICAgIDs7IEFwcGx5IG91ciBjaGFu Z2VzLgorICAgICAgKHNldHEgdGV4dC13aWR0aAorICAgICAgICAgICAgKGlmIHdpZHRoCisg ICAgICAgICAgICAgICAgKCsgd2lkdGggdGV4dC1taW51cy1ib2R5LXdpZHRoKQorICAgICAg ICAgICAgICAoZnJhbWUtdGV4dC13aWR0aCBmcmFtZSkpKQorICAgICAgKHNldHEgdGV4dC1o ZWlnaHQKKyAgICAgICAgICAgIChpZiBoZWlnaHQKKyAgICAgICAgICAgICAgICAoKyBoZWln aHQgdGV4dC1taW51cy1ib2R5LWhlaWdodCkKKyAgICAgICAgICAgICAgKGZyYW1lLXRleHQt aGVpZ2h0IGZyYW1lKSkpCisgICAgICAobW9kaWZ5LWZyYW1lLXBhcmFtZXRlcnMKKyAgICAg ICBmcmFtZSBgKChsZWZ0IC4gLGxlZnQpICh0b3AgLiAsdG9wKQorICAgICAgICAgICAgICAg KHdpZHRoIC4gKHRleHQtcGl4ZWxzIC4gLHRleHQtd2lkdGgpKQorICAgICAgICAgICAgICAg KGhlaWdodCAuICh0ZXh0LXBpeGVscyAuICx0ZXh0LWhlaWdodCkpKSkpKSkKCiAoZGVmdW4g Zml0LXdpbmRvdy10by1idWZmZXIgKCZvcHRpb25hbCB3aW5kb3cgbWF4LWhlaWdodCBtaW4t aGVpZ2h0IG1heC13aWR0aCBtaW4td2lkdGggcHJlc2VydmUtc2l6ZSkKICAgIkFkanVzdCBz aXplIG9mIFdJTkRPVyB0byBkaXNwbGF5IGl0cyBidWZmZXIncyBjb250ZW50cyBleGFjdGx5 LgpAQCAtODI4Niw2ICs4MzQ1LDE2OCBAQCBzaHJpbmstd2luZG93LWlmLWxhcmdlci10aGFu LWJ1ZmZlcgogICAod2hlbiAoYW5kICh3aW5kb3ctY29tYmluZWQtcCB3aW5kb3cpCiAJICAg ICAocG9zLXZpc2libGUtaW4td2luZG93LXAgKHBvaW50LW1pbikgd2luZG93KSkKICAgICAo Zml0LXdpbmRvdy10by1idWZmZXIgd2luZG93ICh3aW5kb3ctdG90YWwtaGVpZ2h0IHdpbmRv dykpKSkKKworKGRlZnVuIHdpbmRvdy1sYXJnZXN0LWVtcHR5LXJlY3RhbmdsZS0tbWF4aW11 bXMtMSAocXVhZCBtYXhpbXVtcykKKyAgIlN1cHBvcnQgZnVuY3Rpb24gZm9yIGB3aW5kb3ct bGFyZ2VzdC1lbXB0eS1yZWN0YW5nbGUnLiIKKyAgKGNvbmQKKyAgICgobnVsbCBtYXhpbXVt cykKKyAgICAobGlzdCBxdWFkKSkKKyAgICgoPiAoY2FyIHF1YWQpIChjYWFyIG1heGltdW1z KSkKKyAgICAoY29ucyBxdWFkIG1heGltdW1zKSkKKyAgICh0CisgICAgKGNvbnMgKGNhciBt YXhpbXVtcykKKwkgICh3aW5kb3ctbGFyZ2VzdC1lbXB0eS1yZWN0YW5nbGUtLW1heGltdW1z LTEgcXVhZCAoY2RyIG1heGltdW1zKSkpKSkpCisKKyhkZWZ1biB3aW5kb3ctbGFyZ2VzdC1l bXB0eS1yZWN0YW5nbGUtLW1heGltdW1zIChxdWFkIG1heGltdW1zIGNvdW50KQorICAiU3Vw cG9ydCBmdW5jdGlvbiBmb3IgYHdpbmRvdy1sYXJnZXN0LWVtcHR5LXJlY3RhbmdsZScuIgor ICAoc2V0cSBtYXhpbXVtcyAod2luZG93LWxhcmdlc3QtZW1wdHktcmVjdGFuZ2xlLS1tYXhp bXVtcy0xIHF1YWQgbWF4aW11bXMpKQorICAoaWYgKD4gKGxlbmd0aCBtYXhpbXVtcykgY291 bnQpCisgICAgICAobmJ1dGxhc3QgbWF4aW11bXMpCisgICAgbWF4aW11bXMpKQorCisoZGVm dW4gd2luZG93LWxhcmdlc3QtZW1wdHktcmVjdGFuZ2xlLS1kaXNqb2ludC1tYXhpbXVtcyAo bWF4aW11bXMgY291bnQpCisgICJTdXBwb3J0IGZ1bmN0aW9uIGZvciBgd2luZG93LWxhcmdl c3QtZW1wdHktcmVjdGFuZ2xlJy4iCisgIChzZXRxIG1heGltdW1zIChzb3J0IG1heGltdW1z IChsYW1iZGEgKHggeSkgKD4gKGNhciB4KSAoY2FyIHkpKSkpKQorICAobGV0ICgobmV3LWxl bmd0aCAwKQorCW5ldy1tYXhpbXVtcykKKyAgICAod2hpbGUgKGFuZCBtYXhpbXVtcyAoPCBu ZXctbGVuZ3RoIGNvdW50KSkKKyAgICAgIChsZXQqICgobWF4aW11bSAoY2FyIG1heGltdW1z KSkKKwkgICAgIChhdCAobnRoIDIgbWF4aW11bSkpCisJICAgICAodG8gKG50aCAzIG1heGlt dW0pKSkKKwkoY2F0Y2ggJ2Ryb3AKKwkgIChkb2xpc3QgKG5ldy1tYXhpbXVtIG5ldy1tYXhp bXVtcykKKwkgICAgKGxldCAoKG5ldy1hdCAobnRoIDIgbmV3LW1heGltdW0pKQorCQkgIChu ZXctdG8gKG50aCAzIG5ldy1tYXhpbXVtKSkpCisJICAgICAgKHdoZW4gKGlmICg8IGF0IG5l dy1hdCkgKD4gdG8gbmV3LWF0KSAoPCBhdCBuZXctdG8pKQorCQk7OyBJbnRlcnNlY3Rpb24g LT4gZHJvcC4KKwkJKHRocm93ICdkcm9wIG5pbCkpKSkKKwkgIChzZXRxIG5ldy1tYXhpbXVt cyAoY29ucyBtYXhpbXVtIG5ldy1tYXhpbXVtcykpCisJICAoc2V0cSBuZXctbGVuZ3RoICgx KyBuZXctbGVuZ3RoKSkpCisJKHNldHEgbWF4aW11bXMgKGNkciBtYXhpbXVtcykpKSkKKwor ICAgIChucmV2ZXJzZSBuZXctbWF4aW11bXMpKSkKKworKGRlZnVuIHdpbmRvdy1sYXJnZXN0 LWVtcHR5LXJlY3RhbmdsZSAoJm9wdGlvbmFsIHdpbmRvdyBjb3VudCBtaW4td2lkdGggbWlu LWhlaWdodCBwb3NpdGlvbnMgbGVmdCkKKyAgIlJldHVybiBkaW1lbnNpb25zIG9mIGxhcmdl c3QgZW1wdHkgcmVjdGFuZ2xlIGluIFdJTkRPVy4KK1dJTkRPVyBtdXN0IGJlIGEgbGl2ZSB3 aW5kb3cgYW5kIGRlZmF1bHRzIHRvIHRoZSBzZWxlY3RlZCBvbmUuCisKK1RoZSByZXR1cm4g dmFsdWUgaXMgYSB0cmlwbGUgb2YgdGhlIHdpZHRoIGFuZCB0aGUgc3RhcnQgYW5kIGVuZAor WS1jb29yZGluYXRlcyBvZiB0aGUgbGFyZ2VzdCByZWN0YW5nbGUgdGhhdCBjYW4gYmUgaW5z Y3JpYmVkIGludG8KK3RoZSBlbXB0eSBzcGFjZSAodGhlIHNwYWNlIG5vdCBkaXNwbGF5aW5n IGFueSB0ZXh0KSBvZiBXSU5ET1cncwordGV4dCBhcmVhLiAgVGhlIHJldHVybiB2YWx1ZSBp cyBuaWwgaWYgdGhlIGN1cnJlbnQgZ2x5cGggbWF0cml4CitvZiBXSU5ET1cgaXMgbm90IHVw LXRvLWRhdGUuCisKK09wdGlvbmFsIGFyZ3VtZW50IENPVU5ULCBpZiBub24tbmlsLCBzcGVj aWZpZXMgdGhlIG1heGltdW0gbnVtYmVyCitvZiByZWN0YW5nbGVzIHRvIHJldHVybi4gIFRo aXMgbWVhbnMgdGhhdCB0aGUgcmV0dXJuIHZhbHVlIGlzIGEKK2xpc3Qgb2YgdHJpcGxlcyBz cGVjaWZ5aW5nIHJlY3RhbmdsZXMgd2l0aCB0aGUgbGFyZ2VzdCByZWN0YW5nbGUKK2ZpcnN0 LiAgQ09VTlQgY2FuIGJlIGFsc28gYSBjb25zIGNlbGwgd2hvc2UgY2FyIHNwZWNpZmllcyB0 aGUKK251bWJlciBvZiByZWN0YW5nbGVzIHRvIHJldHVybiBhbmQgd2hvc2UgY2RyLCBpZiBu b24tbmlsLCBzdGF0ZXMKK3RoYXQgYWxsIHJlY3RhbmdsZXMgcmV0dXJuZWQgbXVzdCBiZSBk aXNqb2ludC4KKworTm90ZSB0aGF0IHRoZSByaWdodCBlZGdlIG9mIGFueSByZWN0YW5nbGUg cmV0dXJuZWQgYnkgdGhpcworZnVuY3Rpb24gaXMgdGhlIHJpZ2h0IGVkZ2Ugb2YgV0lORE9X ICh0aGUgbGVmdCBlZGdlIGlmIGl0cyBidWZmZXIKK2Rpc3BsYXlzIFJUTCB0ZXh0KS4KKwor T3B0aW9uYWwgYXJndW1lbnRzIE1JTi1XSURUSCBhbmQgTUlOLUhFSUdIVCwgaWYgbm9uLW5p bCwgc3BlY2lmeQordGhlIG1pbmltdW0gd2lkdGggYW5kIGhlaWdodCBvZiBhbnkgcmVjdGFu Z2xlIHJldHVybmVkLgorCitPcHRpb25hbCBhcmd1bWVudCBQT1NJVElPTlMsIGlmIG5vbi1u aWwsIGlzIGEgY29ucyBjZWxsIHdob3NlIGNhcgorc3BlY2lmaWVzIHRoZSB1cHBlcm1vc3Qg YW5kIHdob3NlIGNkciBzcGVjaWZpZXMgdGhlIGxvd2VybW9zdAorcGl4ZWwgcG9zaXRpb24g dGhhdCBtdXN0IGJlIGNvdmVyZWQgYnkgYW55IHJlY3RhbmdsZSByZXR1cm5lZC4KK05vdGUg dGhhdCBwb3NpdGlvbnMgYXJlIGNvdW50ZWQgZnJvbSB0aGUgc3RhcnQgb2YgdGhlIHRleHQg YXJlYQorb2YgV0lORE9XLgorCitPcHRpb25hbCBhcmd1bWVudCBMRUZULCBpZiBub24tbmls LCBtZWFucyB0byByZXR1cm4gdmFsdWVzIHN1aXRhYmxlIGZvcgorYnVmZmVycyBkaXNwbGF5 aW5nIHJpZ2h0IHRvIGxlZnQgdGV4dC4iCisgIDs7IFByb2Nlc3MgbGluZXMgYXMgcmV0dXJu ZWQgYnkg4oCYd2luZG93LWxpbmVzLXBpeGVsLWRpbWVuc2lvbnPigJkuCisgIDs7IFNUQUNL IGlzIGEgc3RhY2sgdGhhdCBjb250YWlucyByb3dzIHRoYXQgaGF2ZSB0byBiZSBwcm9jZXNz ZWQgeWV0LgorICAobGV0KiAoKHdpbmRvdyAod2luZG93LW5vcm1hbGl6ZS13aW5kb3cgd2lu ZG93IHQpKQorCSAoZGlzam9pbnQgKGFuZCAoY29uc3AgY291bnQpIChjZHIgY291bnQpKSkK KwkgKGNvdW50IChvciAoYW5kIChudW1iZXJwIGNvdW50KSBjb3VudCkKKwkJICAgIChhbmQg KGNvbnNwIGNvdW50KSAobnVtYmVycCAoY2FyIGNvdW50KSkgKGNhciBjb3VudCkpKSkKKwkg KHJvd3MgKHdpbmRvdy1saW5lcy1waXhlbC1kaW1lbnNpb25zIHdpbmRvdyBuaWwgbmlsIHQg dCBsZWZ0KSkKKwkgKHJvd3MtYXQgMCkKKwkgKG1heC1zaXplIDApCisJIHJvdyBzdGFjayBz dGFjay1hdCBzdGFjay10bworCSB0b3AgdG9wLXdpZHRoIHRvcC1hdCB0b3AtdG8gdG9wLXNp emUKKwkgbWF4LXdpZHRoIG1heC1hdCBtYXgtdG8gbWF4aW11bXMpCisgICAgOzsgUk9XUy1B VCBpcyB0aGUgcG9zaXRpb24gd2hlcmUgdGhlIGZpcnN0IGVsZW1lbnQgb2YgUk9XUyBzdGFy dHMuCisgICAgOzsgU1RBQ0stQVQgaXMgdGhlIHBvc2l0aW9uIHdoZXJlIHRoZSBmaXJzdCBl bGVtZW50IG9mIFNUQUNLIHN0YXJ0cy4KKyAgICAod2hpbGUgcm93cworICAgICAgKHNldHEg cm93IChjYXIgcm93cykpCisgICAgICAoaWYgKG9yIChub3Qgc3RhY2spICg+PSAoY2FyIHJv dykgKGNhYXIgc3RhY2spKSkKKwkgIChwcm9nbgorCSAgICAodW5sZXNzIHN0YWNrCisJICAg ICAgKHNldHEgc3RhY2stYXQgcm93cy1hdCkpCisJICAgIChzZXRxIHN0YWNrIChjb25zIHJv dyBzdGFjaykpCisJICAgIDs7IFNldCBST1dTLUFUIHRvIHdoZXJlIHRoZSBmaXJzdCBlbGVt ZW50IG9mIFJPV1MgZW5kcworCSAgICA7OyB3aGljaCwgYWZ0ZXIgcG9wcGluZyBST1csIG1h a2VzIGl0IHRoZSBzdGFydCBwb3NpdGlvbiBvZgorCSAgICA7OyB0aGUgbmV4dCBST1cuCisJ ICAgIChzZXRxIHJvd3MtYXQgKGNkciByb3cpKQorCSAgICAoc2V0cSByb3dzIChjZHIgcm93 cykpKQorCShzZXRxIHRvcCAoY2FyIHN0YWNrKSkKKwkoc2V0cSBzdGFjayAoY2RyIHN0YWNr KSkKKwkoc2V0cSB0b3Atd2lkdGggKGNhciB0b3ApKQorCShzZXRxIHRvcC1hdCAoaWYgc3Rh Y2sgKGNkYXIgc3RhY2spIHN0YWNrLWF0KSkKKwkoc2V0cSB0b3AtdG8gKGNkciB0b3ApKQor CShzZXRxIHRvcC1zaXplICgqIHRvcC13aWR0aCAoLSB0b3AtdG8gdG9wLWF0KSkpCisJKHVu bGVzcyAob3IgKGFuZCBtaW4td2lkdGggKDwgdG9wLXdpZHRoIG1pbi13aWR0aCkpCisJCSAg ICAoYW5kIG1pbi1oZWlnaHQgKDwgKC0gdG9wLXRvIHRvcC1hdCkgbWluLWhlaWdodCkpCisJ CSAgICAoYW5kIHBvc2l0aW9ucworCQkJIChvciAoPiB0b3AtYXQgKGNhciBwb3NpdGlvbnMp KQorCQkJICAgICAoPCB0b3AtdG8gKGNkciBwb3NpdGlvbnMpKSkpKQorCSAgKGlmIGNvdW50 CisJICAgICAgKGlmIGRpc2pvaW50CisJCSAgKHNldHEgbWF4aW11bXMgKGNvbnMgKGxpc3Qg dG9wLXNpemUgdG9wLXdpZHRoIHRvcC1hdCB0b3AtdG8pCisJCQkJICAgICAgIG1heGltdW1z KSkKKwkJKHNldHEgbWF4aW11bXMgKHdpbmRvdy1sYXJnZXN0LWVtcHR5LXJlY3RhbmdsZS0t bWF4aW11bXMKKwkJCQkobGlzdCB0b3Atc2l6ZSB0b3Atd2lkdGggdG9wLWF0IHRvcC10bykK KwkJCQltYXhpbXVtcyBjb3VudCkpKQorCSAgICAod2hlbiAoPiB0b3Atc2l6ZSBtYXgtc2l6 ZSkKKwkgICAgICAoc2V0cSBtYXgtc2l6ZSB0b3Atc2l6ZSkKKwkgICAgICAoc2V0cSBtYXgt d2lkdGggdG9wLXdpZHRoKQorCSAgICAgIChzZXRxIG1heC1hdCB0b3AtYXQpCisJICAgICAg KHNldHEgbWF4LXRvIHRvcC10bykpKSkKKwkoaWYgKGFuZCBzdGFjayAoPiAoY2FhciBzdGFj aykgKGNhciByb3cpKSkKKwkgICAgOzsgSGF2ZSBuZXcgdG9wIGVsZW1lbnQgb2Ygc3RhY2sg aW5jbHVkZSBvbGQgdG9wLgorCSAgICAoc2V0cSBzdGFjayAoY29ucyAoY29ucyAoY2FhciBz dGFjaykgKGNkciB0b3ApKSAoY2RyIHN0YWNrKSkpCisJICA7OyBNb3ZlIHJvd3MtYXQgYmFj a3dhcmRzIHRvIHRvcC1hdC4KKwkgIChzZXRxIHJvd3MtYXQgdG9wLWF0KSkpKQorCisgICAg KHdoZW4gc3RhY2sKKyAgICAgIDs7IFNUQUNLLVRPIGlzIHRoZSBwb3NpdGlvbiB3aGVyZSB0 aGUgc3RhY2sgZW5kcy4KKyAgICAgIChzZXRxIHN0YWNrLXRvIChjZGFyIHN0YWNrKSkKKyAg ICAgICh3aGlsZSBzdGFjaworCShzZXRxIHRvcCAoY2FyIHN0YWNrKSkKKwkoc2V0cSBzdGFj ayAoY2RyIHN0YWNrKSkKKwkoc2V0cSB0b3Atd2lkdGggKGNhciB0b3ApKQorCShzZXRxIHRv cC1hdCAoaWYgc3RhY2sgKGNkYXIgc3RhY2spIHN0YWNrLWF0KSkKKwkoc2V0cSB0b3Atc2l6 ZSAoKiB0b3Atd2lkdGggKC0gc3RhY2stdG8gdG9wLWF0KSkpCisJKHVubGVzcyAob3IgKGFu ZCBtaW4td2lkdGggKDwgdG9wLXdpZHRoIG1pbi13aWR0aCkpCisJCSAgICAoYW5kIG1pbi1o ZWlnaHQgKDwgKC0gc3RhY2stdG8gdG9wLWF0KSBtaW4taGVpZ2h0KSkKKwkJICAgIChhbmQg cG9zaXRpb25zCisJCQkgKG9yICg+IHRvcC1hdCAoY2FyIHBvc2l0aW9ucykpCisJCQkgICAg ICg8IHN0YWNrLXRvIChjZHIgcG9zaXRpb25zKSkpKSkKKwkgIChpZiBjb3VudAorCSAgICAg IChpZiBkaXNqb2ludAorCQkgIChzZXRxIG1heGltdW1zIChjb25zIChsaXN0IHRvcC1zaXpl IHRvcC13aWR0aCB0b3AtYXQgc3RhY2stdG8pCisJCQkJICAgICAgIG1heGltdW1zKSkKKwkJ KHNldHEgbWF4aW11bXMgKHdpbmRvdy1sYXJnZXN0LWVtcHR5LXJlY3RhbmdsZS0tbWF4aW11 bXMKKwkJCQkobGlzdCB0b3Atc2l6ZSB0b3Atd2lkdGggdG9wLWF0IHN0YWNrLXRvKQorCQkJ CW1heGltdW1zIGNvdW50KSkpCisJICAgICh3aGVuICg+IHRvcC1zaXplIG1heC1zaXplKQor CSAgICAgIChzZXRxIG1heC1zaXplIHRvcC1zaXplKQorCSAgICAgIChzZXRxIG1heC13aWR0 aCB0b3Atd2lkdGgpCisJICAgICAgKHNldHEgbWF4LWF0IHRvcC1hdCkKKwkgICAgICAoc2V0 cSBtYXgtdG8gc3RhY2stdG8pKSkpKSkKKworICAgIChjb25kCisgICAgIChtYXhpbXVtcwor ICAgICAgKGlmIGRpc2pvaW50CisJICAod2luZG93LWxhcmdlc3QtZW1wdHktcmVjdGFuZ2xl LS1kaXNqb2ludC1tYXhpbXVtcyBtYXhpbXVtcyBjb3VudCkKKwltYXhpbXVtcykpCisgICAg ICgoPiBtYXgtc2l6ZSAwKQorICAgICAgKGxpc3QgbWF4LXdpZHRoIG1heC1hdCBtYXgtdG8p KSkpKQogDAogKGRlZnVuIGtpbGwtYnVmZmVyLWFuZC13aW5kb3cgKCkKICAgIktpbGwgdGhl IGN1cnJlbnQgYnVmZmVyIGFuZCBkZWxldGUgdGhlIHNlbGVjdGVkIHdpbmRvdy4iCmRpZmYg LS1naXQgYS9zcmMvZGlzcGV4dGVybi5oIGIvc3JjL2Rpc3BleHRlcm4uaAppbmRleCBkMWU0 NzE1Li44NjQ0Y2UyIDEwMDY0NAotLS0gYS9zcmMvZGlzcGV4dGVybi5oCisrKyBiL3NyYy9k aXNwZXh0ZXJuLmgKQEAgLTExMDYsNyArMTEwNiw3IEBAIHN0cnVjdCBnbHlwaF9yb3cKICNk ZWZpbmUgTUFUUklYX0JPVFRPTV9URVhUX1JPVyhNQVRSSVgsIFcpCQlcCiAgICAgICgoTUFU UklYKS0+cm93cwkJCQkJXAogICAgICAgKyAoTUFUUklYKS0+bnJvd3MJCQkJCVwKLSAgICAg IC0gKFdJTkRPV19XQU5UU19NT0RFTElORV9QICgoVykpID8gMSA6IDApKQorICAgICAgLSAo d2luZG93X3dhbnRzX21vZGVfbGluZSAoKFcpKSA/IDEgOiAwKSkKCiAvKiBOb24temVybyBp ZiB0aGUgZmFjZSBvZiB0aGUgbGFzdCBnbHlwaCBpbiBST1cncyB0ZXh0IGFyZWEgaGFzCiAg ICB0byBiZSBkcmF3biB0byB0aGUgZW5kIG9mIHRoZSB0ZXh0IGFyZWEuICAqLwpAQCAtMTQ2 OSw0MCArMTQ2OSw2IEBAIHN0cnVjdCBnbHlwaF9zdHJpbmcKICNkZWZpbmUgREVTSVJFRF9I RUFERVJfTElORV9IRUlHSFQoVykgXAogICAgICBNQVRSSVhfSEVBREVSX0xJTkVfSEVJR0hU ICgoVyktPmRlc2lyZWRfbWF0cml4KQoKLS8qIFBYVzogVGhlIGhlaWdodCBjaGVja3MgYmVs b3cgc2VydmUgdG8gc2hvdyBhdCBsZWFzdCBvbmUgdGV4dCBsaW5lCi0gICBpbnN0ZWFkIG9m IGEgbW9kZS0gYW5kL29yIGhlYWRlciBsaW5lIHdoZW4gYSB3aW5kb3cgZ2V0cyB2ZXJ5IHNt YWxsLgotICAgQnV0ICgxKSB0aGUgY2hlY2sgZmFpbHMgd2hlbiB0aGUgbW9kZS0gb3IgaGVh ZGVyLWxpbmUgaXMgdGFsbGVyIHRoYW4KLSAgIHRoZSBhc3NvY2lhdGVkIGZyYW1lJ3MgbGlu ZSBoZWlnaHQgYW5kICgyKSB3ZSBkb24ndCBjYXJlIG11Y2ggYWJvdXQKLSAgIHRleHQgdmlz aWJpbGl0eSBhbnl3YXkgd2hlbiBzaHJpbmtpbmcgYSBmcmFtZSBjb250YWluaW5nIGEgdG9v bGJhci4KLQotICAgU28gbWF5YmUgdGhlc2UgY2hlY2tzIHNob3VsZCBiZSByZW1vdmVkIGFu ZCBhbnkgY2xpcHBpbmcgbGVmdCB0byB0aGUKLSAgIHdpbmRvdyBtYW5hZ2VyLiAgKi8KLQot LyogVmFsdWUgaXMgdHJ1ZSBpZiB3aW5kb3cgVyB3YW50cyBhIG1vZGUgbGluZSBhbmQgaXMg bGFyZ2UgZW5vdWdoCi0gICB0byBhY2NvbW1vZGF0ZSBpdC4gICovCi0jZGVmaW5lIFdJTkRP V19XQU5UU19NT0RFTElORV9QKFcpCQkJCQlcCi0gIChCVUZGRVJQICgoVyktPmNvbnRlbnRz KQkJCQkJCVwKLSAgID8gKCFNSU5JX1dJTkRPV19QIChXKQkJCQkJCVwKLSAgICAgICYmICEo VyktPnBzZXVkb193aW5kb3dfcAkJCQkJCVwKLSAgICAgICYmIEZSQU1FX1dBTlRTX01PREVM SU5FX1AgKFhGUkFNRSAoV0lORE9XX0ZSQU1FIChXKSkpCQlcCi0gICAgICAmJiAhTklMUCAo QlZBUiAoWEJVRkZFUiAoKFcpLT5jb250ZW50cyksIG1vZGVfbGluZV9mb3JtYXQpKQlcCi0g ICAgICAmJiBXSU5ET1dfUElYRUxfSEVJR0hUIChXKSA+IFdJTkRPV19GUkFNRV9MSU5FX0hF SUdIVCAoVykpCVwKLSAgIDogZmFsc2UpCi0KLS8qIFZhbHVlIGlzIHRydWUgaWYgd2luZG93 IFcgd2FudHMgYSBoZWFkZXIgbGluZSBhbmQgaXMgbGFyZ2UgZW5vdWdoCi0gICB0byBhY2Nv bW1vZGF0ZSBpdC4gICovCi0jZGVmaW5lIFdJTkRPV19XQU5UU19IRUFERVJfTElORV9QKFcp CQkJCQlcCi0gICAgIChCVUZGRVJQICgoVyktPmNvbnRlbnRzKQkJCQkJCVwKLSAgICAgID8g KCFNSU5JX1dJTkRPV19QIChXKQkJCQkJCVwKLQkgJiYgIShXKS0+cHNldWRvX3dpbmRvd19w CQkJCQlcCi0JICYmIEZSQU1FX1dBTlRTX01PREVMSU5FX1AgKFhGUkFNRSAoV0lORE9XX0ZS QU1FIChXKSkpCQlcCi0JICYmICFOSUxQIChCVkFSIChYQlVGRkVSICgoVyktPmNvbnRlbnRz KSwgaGVhZGVyX2xpbmVfZm9ybWF0KSkJXAotCSAmJiAoV0lORE9XX1BJWEVMX0hFSUdIVCAo VykJCQkJCVwKLQkgICAgID4gKFdJTkRPV19XQU5UU19NT0RFTElORV9QIChXKQkJCQlcCi0J CT8gKDIgKiBXSU5ET1dfRlJBTUVfTElORV9IRUlHSFQgKFcpKQkJCVwKLQkJOiBXSU5ET1df RlJBTUVfTElORV9IRUlHSFQgKFcpKSkpCQkJXAotICAgICAgOiBmYWxzZSkKLQogLyogUmV0 dXJuIHByb3BlciB2YWx1ZSB0byBiZSB1c2VkIGFzIGJhc2VsaW5lIG9mZnNldCBvZiBmb250 IHRoYXQgaGFzCiAgICBBU0NFTlQgYW5kIERFU0NFTlQgdG8gZHJhdyBjaGFyYWN0ZXJzIGJ5 IHRoZSBmb250IGF0IHRoZSB2ZXJ0aWNhbAogICAgY2VudGVyIG9mIHRoZSBsaW5lIG9mIGZy YW1lIEYuCmRpZmYgLS1naXQgYS9zcmMvZGlzcG5ldy5jIGIvc3JjL2Rpc3BuZXcuYwppbmRl eCAyN2M2OWJkLi4wYzE5MThmIDEwMDY0NAotLS0gYS9zcmMvZGlzcG5ldy5jCisrKyBiL3Ny Yy9kaXNwbmV3LmMKQEAgLTM3Nyw3ICszNzcsNyBAQCBzdHJ1Y3QgcmVkaXNwbGF5X2hpc3Rv cnkKICAgICB7CiAgICAgICB3aW5kb3dfYm94ICh3LCBBTllfQVJFQSwgMCwgMCwgJndpbmRv d193aWR0aCwgJndpbmRvd19oZWlnaHQpOwoKLSAgICAgIGhlYWRlcl9saW5lX3AgPSBXSU5E T1dfV0FOVFNfSEVBREVSX0xJTkVfUCAodyk7CisgICAgICBoZWFkZXJfbGluZV9wID0gd2lu ZG93X3dhbnRzX2hlYWRlcl9saW5lICh3KTsKICAgICAgIGhlYWRlcl9saW5lX2NoYW5nZWRf cCA9IGhlYWRlcl9saW5lX3AgIT0gbWF0cml4LT5oZWFkZXJfbGluZV9wOwogICAgIH0KICAg bWF0cml4LT5oZWFkZXJfbGluZV9wID0gaGVhZGVyX2xpbmVfcDsKQEAgLTQ0Niw3ICs0NDYs NyBAQCBzdHJ1Y3QgcmVkaXNwbGF5X2hpc3RvcnkKCiAJICBpZiAodyA9PSBOVUxMCiAJICAg ICAgfHwgKHJvdyA9PSBtYXRyaXgtPnJvd3MgKyBkaW0uaGVpZ2h0IC0gMQotCQkgICYmIFdJ TkRPV19XQU5UU19NT0RFTElORV9QICh3KSkKKwkJICAmJiB3aW5kb3dfd2FudHNfbW9kZV9s aW5lICh3KSkKIAkgICAgICB8fCAocm93ID09IG1hdHJpeC0+cm93cyAmJiBtYXRyaXgtPmhl YWRlcl9saW5lX3ApKQogCSAgICB7CiAJICAgICAgcm93LT5nbHlwaHNbVEVYVF9BUkVBXQpA QCAtNDkxLDcgKzQ5MSw3IEBAIHN0cnVjdCByZWRpc3BsYXlfaGlzdG9yeQoKIAkgICAgICAv KiBUaGUgbW9kZSBsaW5lLCBpZiBkaXNwbGF5ZWQsIG5ldmVyIGhhcyBtYXJnaW5hbCBhcmVh cy4gICovCiAJICAgICAgaWYgKChyb3cgPT0gbWF0cml4LT5yb3dzICsgZGltLmhlaWdodCAt IDEKLQkJICAgJiYgISh3ICYmIFdJTkRPV19XQU5UU19NT0RFTElORV9QICh3KSkpCisJCSAg ICYmICEodyAmJiB3aW5kb3dfd2FudHNfbW9kZV9saW5lICh3KSkpCiAJCSAgfHwgKHJvdyA9 PSBtYXRyaXgtPnJvd3MgJiYgbWF0cml4LT5oZWFkZXJfbGluZV9wKSkKIAkJewogCQkgIHJv dy0+Z2x5cGhzW1RFWFRfQVJFQV0KQEAgLTU3MCw3ICs1NzAsNyBAQCBzdHJ1Y3QgcmVkaXNw bGF5X2hpc3RvcnkKIAkgICAgIHRoZSBtb2RlIGxpbmUsIGlmIGFueSwgc2luY2Ugb3RoZXJ3 aXNlIGl0IHdpbGwgcmVtYWluCiAJICAgICBkaXNhYmxlZCBpbiB0aGUgY3VycmVudCBtYXRy aXgsIGFuZCBleHBvc2UgZXZlbnRzIHdvbid0CiAJICAgICByZWRyYXcgaXQuICAqLwotCSAg aWYgKFdJTkRPV19XQU5UU19NT0RFTElORV9QICh3KSkKKwkgIGlmICh3aW5kb3dfd2FudHNf bW9kZV9saW5lICh3KSkKIAkgICAgdy0+dXBkYXRlX21vZGVfbGluZSA9IDE7CiAJfQogICAg ICAgZWxzZSBpZiAobWF0cml4ID09IHctPmRlc2lyZWRfbWF0cml4KQpAQCAtNTE4OCw3ICs1 MTg4LDcgQEAgc3RydWN0IHJvd19lbnRyeQogICAgICBzdGFydCBwb3NpdGlvbiwgaS5lLiBp dCBleGNsdWRlcyB0aGUgaGVhZGVyLWxpbmUgcm93LCBidXQKICAgICAgTUFUUklYX1JPVyBp bmNsdWRlcyB0aGUgaGVhZGVyLWxpbmUgcm93LiAgQWRqdXN0IGZvciBhIHBvc3NpYmxlCiAg ICAgIGhlYWRlci1saW5lIHJvdy4gICovCi0gIGl0X3Zwb3MgPSBpdC52cG9zICsgV0lORE9X X1dBTlRTX0hFQURFUl9MSU5FX1AgKHcpOworICBpdF92cG9zID0gaXQudnBvcyArIHdpbmRv d193YW50c19oZWFkZXJfbGluZSAodyk7CiAgIGlmIChpdF92cG9zIDwgdy0+Y3VycmVudF9t YXRyaXgtPm5yb3dzCiAgICAgICAmJiAocm93ID0gTUFUUklYX1JPVyAody0+Y3VycmVudF9t YXRyaXgsIGl0X3Zwb3MpLAogCSAgcm93LT5lbmFibGVkX3ApKQpkaWZmIC0tZ2l0IGEvc3Jj L2ZyYW1lLmMgYi9zcmMvZnJhbWUuYwppbmRleCA0ZDE3YTA3Li42NTNlNDRmIDEwMDY0NAot LS0gYS9zcmMvZnJhbWUuYworKysgYi9zcmMvZnJhbWUuYwpAQCAtMzI4LDggKzMyOCw4IEBA IHN0cnVjdCBmcmFtZSAqCiAgKiBmcmFtZV93aW5kb3dzX21pbl9zaXplOgogICoKICAqIFJl dHVybiB0aGUgbWluaW11bSBudW1iZXIgb2YgbGluZXMgKGNvbHVtbnMgaWYgSE9SSVpPTlRB TCBpcyBub24tbmlsKQotICogb2YgRlJBTUUuICBJZiBQSVhFTFdJU0UgaXMgbm9uLW5pbCwg cmV0dXJuIHRoZSBtaW5pbXVtIGhlaWdodCAod2lkdGgpCi0gKiBpbiBwaXhlbHMuCisgKiBv ZiBGUkFNRS4gIElmIFBJWEVMV0lTRSBpcyBub24tbmlsLCByZXR1cm4gdGhlIG1pbmltdW0g aW5uZXIgaGVpZ2h0CisgKiAod2lkdGgpIG9mIEZSQU1FIGluIHBpeGVscy4KICAqCiAgKiBU aGlzIHZhbHVlIGlzIGNhbGN1bGF0ZWQgYnkgdGhlIGZ1bmN0aW9uIGBmcmFtZS13aW5kb3dz LW1pbi1zaXplJyBpbgogICogd2luZG93LmVsIHVubGVzcyB0aGUgYG1pbi1oZWlnaHQnIChg bWluLXdpZHRoJyBpZiBIT1JJWk9OVEFMIGlzCkBAIC0zNDEsNyArMzQxLDcgQEAgc3RydWN0 IGZyYW1lICoKICAqIG9mIGB3aW5kb3ctbWluLWhlaWdodCcgKGB3aW5kb3ctbWluLXdpZHRo JyBpZiBIT1JJWk9OVEFMIGlzIG5vbi1uaWwpLgogICogV2l0aCBJR05PUkUgbm9uLW5pbCB0 aGUgdmFsdWVzIG9mIHRoZXNlIHZhcmlhYmxlcyBhcmUgaWdub3JlZC4KICAqCi0gKiBJbiBl aXRoZXIgY2FzZSBuZXZlciByZXR1cm4gYSB2YWx1ZSBsZXNzIHRoYW4gMS4KKyAqIEluIGVp dGhlciBjYXNlLCBuZXZlciByZXR1cm4gYSB2YWx1ZSBsZXNzIHRoYW4gMS4KICAqLwogc3Rh dGljIGludAogZnJhbWVfd2luZG93c19taW5fc2l6ZSAoTGlzcF9PYmplY3QgZnJhbWUsIExp c3BfT2JqZWN0IGhvcml6b250YWwsCkBAIC0zNzMsNDYgKzM3MywxNzkgQEAgc3RydWN0IGZy YW1lICoKIH0KCgotLyogTWFrZSBzdXJlIHdpbmRvd3Mgc2l6ZXMgb2YgZnJhbWUgRiBhcmUg T0suICBuZXdfd2lkdGggYW5kIG5ld19oZWlnaHQKLSAgIGFyZSBpbiBwaXhlbHMuICBBIHZh bHVlIG9mIC0xIG1lYW5zIG5vIGNoYW5nZSBpcyByZXF1ZXN0ZWQgZm9yIHRoYXQKLSAgIHNp emUgKGJ1dCB0aGUgZnJhbWUgbWF5IHN0aWxsIGhhdmUgdG8gYmUgcmVzaXplZCB0byBhY2Nv bW1vZGF0ZQotICAgd2luZG93cyB3aXRoIHRoZWlyIG1pbmltdW0gc2l6ZXMpLiAgVGhpcyBj YW4gZWl0aGVyIGlzc3VlIGEgcmVxdWVzdAotICAgdG8gcmVzaXplIHRoZSBmcmFtZSBleHRl cm5hbGx5ICh2aWEgeF9zZXRfd2luZG93X3NpemUpLCB0byByZXNpemUgdGhlCi0gICBmcmFt ZSBpbnRlcm5hbGx5ICh2aWEgcmVzaXplX2ZyYW1lX3dpbmRvd3MpIG9yIGRvIG5vdGhpbmcg YXQgYWxsLgorI2lmZGVmIEhBVkVfV0lORE9XX1NZU1RFTQorLyoqCisgKiBrZWVwX3JhdGlv OgorICoKKyAqIFByZXNlcnZlIHJhdGlvcyBvZiBmcmFtZSBGIHdoaWNoIHVzdWFsbHkgaGFw cGVucyBhZnRlciBpdHMgcGFyZW50CisgKiBmcmFtZSBnb3QgcmVzaXplZC4gIE9MRF9XSURU SCwgT0xEX0hFSUdIVCBzcGVjaWZpZXMgdGhlIG9sZCBuYXRpdmUKKyAqIHNpemUgb2YgRidz IHBhcmVudCwgTkVXX1dJRFRIIGFuZCBORVdfSEVJR0hUIGl0cyBuZXcgc2l6ZS4KKyAqCisg KiBBZGp1c3QgRidzIHdpZHRoIGlmIEYncyAna2VlcF9yYXRpbycgcGFyYW1ldGVyIGlzIG5v bi1uaWwgYW5kLCBpZgorICogaXQgaXMgYSBjb25zLCBpdHMgY2FyIGlzIG5vdCAnaGVpZ2h0 LW9ubHknLiAgQWRqdXN0IEYncyBoZWlnaHQgaWYgRidzCisgKiAna2VlcF9yYXRpbycgcGFy YW1ldGVyIGlzIG5vbi1uaWwgYW5kLCBpZiBpdCBpcyBhIGNvbnMsIGl0cyBjYXIKKyAqIGlz IG5vdCAnd2lkdGgtb25seScuCisgKgorICogQWRqdXN0IEYncyBsZWZ0IHBvc2l0aW9uIGlm IEYncyAna2VlcF9yYXRpbycgcGFyYW1ldGVyIGlzIG5vbi1uaWwKKyAqIGFuZCwgaWYgaXRz IGlzIGEgY29ucywgaXRzIGNkciBpcyBub24tbmlsIGFuZCBub3QgJ3RvcC1vbmx5Jy4gIEFk anVzdAorICogRidzIHRvcCBwb3NpdGlvbiBpZiBGJ3MgJ2tlZXBfcmF0aW8nIHBhcmFtZXRl ciBpcyBub24tbmlsIGFuZCwgaWYKKyAqIGl0cyBpcyBhIGNvbnMsIGl0cyBjZHIgaXMgbm9u LW5pbCBhbmQgbm90ICdsZWZ0LW9ubHknLgorICoKKyAqIE5vdGUgdGhhdCB3aGVuIHBvc2l0 aW9uYWwgYWRqdXN0bWVudCBpcyByZXF1ZXN0ZWQgYnV0IHRoZSBzaXplIG9mIEYKKyAqIHNo b3VsZCByZW1haW4gdW5hbHRlcmVkIGluIHRoZSBjb3JyZXNwb25kaW5nIGRpcmVjdGlvbiwg dGhpcyByb3V0aW5lCisgKiB0cmllcyB0byBjb25zdHJhaW4gRiB0byBpdHMgcGFyZW50IGZy YW1lIC0gc29tZXRoaW5nIHdoaWNoIHVzdWFsbHkKKyAqIGhhcHBlbnMgd2hlbiB0aGUgcGFy ZW50IGZyYW1lIHNocmlua3MuICBUaGlzIG1lYW5zLCBob3dldmVyLCB0aGF0CisgKiB3aGVu IHRoZSBwYXJlbnQgZnJhbWUgaXMgcmUtZW5sYXJnZWQgbGF0ZXIsIHRoZSBjaGlsZCdzIG9y aWdpbmFsCisgKiBwb3NpdGlvbiB3aWxsIG5vdCBnZXQgcmVzdG9yZWQgdG8gaXRzIHByZS1z aHJpbmtpbmcgdmFsdWUuCisgKgorICogVGhpcyByb3V0aW5lIGlzIGN1cnJlbnRseSB1c2Vm dWwgZm9yIGNoaWxkIGZyYW1lcyBvbmx5LiAgSXQgbWlnaHQgYmUKKyAqIGV2ZW50dWFsbHkg dXNlZnVsIHdoZW4gbW92aW5nIG5vbi1jaGlsZCBmcmFtZXMgYmV0d2VlbiBtb25pdG9ycyB3 aXRoCisgKiBkaWZmZXJlbnQgcmVzb2x1dGlvbnMuCisgKi8KK3N0YXRpYyB2b2lkCitrZWVw X3JhdGlvIChzdHJ1Y3QgZnJhbWUgKmYsIGludCBvbGRfd2lkdGgsIGludCBvbGRfaGVpZ2h0 LAorCQkgICAgaW50IG5ld193aWR0aCwgaW50IG5ld19oZWlnaHQpCit7CisgIExpc3BfT2Jq ZWN0IGtlZXBfcmF0aW8gPSBnZXRfZnJhbWVfcGFyYW0gKGYsIFFrZWVwX3JhdGlvKTsKCi0g ICBUaGUgYXJndW1lbnQgSU5ISUJJVCBjYW4gYXNzdW1lIHRoZSBmb2xsb3dpbmcgdmFsdWVz OgoKLSAgIDAgbWVhbnMgdG8gdW5jb25kaXRpb25hbGx5IGNhbGwgeF9zZXRfd2luZG93X3Np emUgZXZlbiBpZiBzaXplcwotICAgICBhcHBhcmVudGx5IGRvIG5vdCBjaGFuZ2UuICBGeF9j cmVhdGVfZnJhbWUgdXNlcyB0aGlzIHRvIHBhc3MgdGhlCi0gICAgIGluaXRpYWwgc2l6ZSB0 byB0aGUgd2luZG93IG1hbmFnZXIuCisgIGlmICghTklMUCAoa2VlcF9yYXRpbykpCisgICAg eworICAgICAgZG91YmxlIHdpZHRoX2ZhY3RvciA9IChkb3VibGUpbmV3X3dpZHRoIC8gKGRv dWJsZSlvbGRfd2lkdGg7CisgICAgICBkb3VibGUgaGVpZ2h0X2ZhY3RvciA9IChkb3VibGUp bmV3X2hlaWdodCAvIChkb3VibGUpb2xkX2hlaWdodDsKKyAgICAgIGludCBwaXhlbF93aWR0 aCwgcGl4ZWxfaGVpZ2h0LCBwb3NfeCwgcG9zX3k7CgotICAgMSBtZWFucyB0byBjYWxsIHhf c2V0X3dpbmRvd19zaXplIGlmIHRoZSBvdXRlciBmcmFtZSBzaXplIHJlYWxseQotICAgICBj aGFuZ2VzLiAgRnNldF9mcmFtZV9zaXplLCBGc2V0X2ZyYW1lX2hlaWdodCwgLi4uIHVzZSB0 aGlzLgorICAgICAgaWYgKCFDT05TUCAoa2VlcF9yYXRpbykgfHwgIU5JTFAgKEZjZHIgKGtl ZXBfcmF0aW8pKSkKKwl7CisJICBpZiAoQ09OU1AgKGtlZXBfcmF0aW8pICYmIEVRIChGY2Ry IChrZWVwX3JhdGlvKSwgUXRvcF9vbmx5KSkKKwkgICAgcG9zX3ggPSBmLT5sZWZ0X3BvczsK KwkgIGVsc2UKKwkgICAgeworCSAgICAgIHBvc194ID0gKGludCkoZi0+bGVmdF9wb3MgKiB3 aWR0aF9mYWN0b3IgKyAwLjUpOwoKLSAgIDIgbWVhbnMgdG8gY2FsbCB4X3NldF93aW5kb3df c2l6ZSBwcm92aWRlZCBmcmFtZV9pbmhpYml0X3Jlc2l6ZQotICAgICBhbGxvd3MgaXQuICBU aGUgbWVudSBhbmQgdG9vbCBiYXIgY29kZSB1c2UgdGhpcyAoIjMiIHdvbid0IHdvcmsKLSAg ICAgaGVyZSBpbiBnZW5lcmFsIGJlY2F1c2UgbWVudSBhbmQgdG9vbCBiYXIgYXJlIG9mdGVu IG5vdCBjb3VudGVkIGluCi0gICAgIHRoZSBmcmFtZSdzIHRleHQgaGVpZ2h0KS4KKwkgICAg ICBpZiAoQ09OU1AgKGtlZXBfcmF0aW8pICYmCisJCSAgKE5JTFAgKEZjYXIgKGtlZXBfcmF0 aW8pKSB8fCBFUSAoRmNhciAoa2VlcF9yYXRpbyksIFFoZWlnaHRfb25seSkpKQorCQl7CisJ CSAgc3RydWN0IGZyYW1lICpwID0gRlJBTUVfUEFSRU5UX0ZSQU1FIChmKTsKCi0gICAzIG1l YW5zIGNhbGwgeF9zZXRfd2luZG93X3NpemUgaWYgd2luZG93IG1pbmltdW0gc2l6ZXMgbXVz dCBiZQotICAgICBwcmVzZXJ2ZWQgb3IgZnJhbWVfaW5oaWJpdF9yZXNpemUgYWxsb3dzIGl0 LiAgeF9zZXRfbGVmdF9mcmluZ2UsCi0gICAgIHhfc2V0X3Njcm9sbF9iYXJfd2lkdGgsIHhf bmV3X2ZvbnQgLi4uIHVzZSAob3Igc2hvdWxkIHVzZSkgdGhpcy4KKwkJICBpZiAocG9zX3gg KyBmLT5waXhlbF93aWR0aCA+IHAtPnBpeGVsX3dpZHRoKQorCQkgICAgeworCQkgICAgICBp bnQgcF9mX3dpZHRoID0gcC0+cGl4ZWxfd2lkdGggLSBmLT5waXhlbF93aWR0aDsKCi0gICA0 IG1lYW5zIGNhbGwgeF9zZXRfd2luZG93X3NpemUgb25seSBpZiB3aW5kb3cgbWluaW11bSBz aXplcyBtdXN0IGJlCi0gICAgIHByZXNlcnZlZC4gIHhfc2V0X3JpZ2h0X2RpdmlkZXJfd2lk dGgsIHhfc2V0X2JvcmRlcl93aWR0aCBhbmQgdGhlCi0gICAgIGNvZGUgcmVzcG9uc2libGUg Zm9yIHdyYXBwaW5nIHRoZSB0b29sIGJhciB1c2UgdGhpcy4KKwkJICAgICAgaWYgKHBfZl93 aWR0aCA8PSAwKQorCQkJcG9zX3ggPSAwOworCQkgICAgICBlbHNlCisJCQlwb3NfeCA9IChp bnQpKHBfZl93aWR0aCAqIHdpZHRoX2ZhY3RvciAqIDAuNSArIDAuNSk7CisJCSAgICB9CisJ CX0KKworCSAgICAgIGYtPmxlZnRfcG9zID0gcG9zX3g7CisJICAgIH0KKworCSAgaWYgKENP TlNQIChrZWVwX3JhdGlvKSAmJiBFUSAoRmNkciAoa2VlcF9yYXRpbyksIFFsZWZ0X29ubHkp KQorCSAgICBwb3NfeSA9IGYtPnRvcF9wb3M7CisJICBlbHNlCisJICAgIHsKKwkgICAgICBw b3NfeSA9IChpbnQpKGYtPnRvcF9wb3MgKiBoZWlnaHRfZmFjdG9yICsgMC41KTsKKworCSAg ICAgIGlmIChDT05TUCAoa2VlcF9yYXRpbykgJiYKKwkJICAoTklMUCAoRmNhciAoa2VlcF9y YXRpbykpIHx8IEVRIChGY2FyIChrZWVwX3JhdGlvKSwgUXdpZHRoX29ubHkpKSkKKwkJLyog V2hlbiBwb3NpdGlvbmFsIGFkanVzdG1lbnQgd2FzIHJlcXVlc3RlZCBhbmQgdGhlCisJCSAg IHdpZHRoIG9mIEYgc2hvdWxkIHJlbWFpbiB1bmFsdGVyZWQsIHRyeSB0byBjb25zdHJhaW4K KwkJICAgRiB0byBpdHMgcGFyZW50LiAgVGhpcyBtZWFucyB0aGF0IHdoZW4gdGhlIHBhcmVu dAorCQkgICBmcmFtZSBpcyBlbmxhcmdlZCBsYXRlciB0aGUgY2hpbGQncyBvcmlnaW5hbCBw b3NpdGlvbgorCQkgICB3b24ndCBnZXQgcmVzdG9yZWQuICAqLworCQl7CisJCSAgc3RydWN0 IGZyYW1lICpwID0gRlJBTUVfUEFSRU5UX0ZSQU1FIChmKTsKKworCQkgIGlmIChwb3NfeSAr IGYtPnBpeGVsX2hlaWdodCA+IHAtPnBpeGVsX2hlaWdodCkKKwkJICAgIHsKKwkJICAgICAg aW50IHBfZl9oZWlnaHQgPSBwLT5waXhlbF9oZWlnaHQgLSBmLT5waXhlbF9oZWlnaHQ7CisK KwkJICAgICAgaWYgKHBfZl9oZWlnaHQgPD0gMCkKKwkJCXBvc195ID0gMDsKKwkJICAgICAg ZWxzZQorCQkJcG9zX3kgPSAoaW50KShwX2ZfaGVpZ2h0ICogaGVpZ2h0X2ZhY3RvciAqIDAu NSArIDAuNSk7CisJCSAgICB9CisJCX0KCi0gICA1IG1lYW5zIHRvIG5ldmVyIGNhbGwgeF9z ZXRfd2luZG93X3NpemUuICBjaGFuZ2VfZnJhbWVfc2l6ZSB1c2VzCi0gICAgIHRoaXMuCisJ ICAgICAgZi0+dG9wX3BvcyA9IHBvc195OworCSAgICB9CgotICAgTm90ZSB0aGF0IGV2ZW4g d2hlbiB4X3NldF93aW5kb3dfc2l6ZSBpcyBub3QgY2FsbGVkLCBpbmRpdmlkdWFsCi0gICB3 aW5kb3dzIG1heSBoYXZlIHRvIGJlIHJlc2l6ZWQgKHZpYSBgd2luZG93LS1zYW5pdGl6ZS13 aW5kb3ctc2l6ZXMnKQotICAgaW4gb3JkZXIgdG8gc3VwcG9ydCBtaW5pbXVtIHNpemUgY29u c3RyYWludHMuCisJICB4X3NldF9vZmZzZXQgKGYsIHBvc194LCBwb3NfeSwgLTEpOworCX0K Ci0gICBQUkVURU5EIGlzIGFzIGZvciBjaGFuZ2VfZnJhbWVfc2l6ZS4gIFBBUkFNRVRFUiwg aWYgbm9uLW5pbCwgaXMgdGhlCi0gICBzeW1ib2wgb2YgdGhlIHBhcmFtZXRlciBjaGFuZ2Vk IChsaWtlIGBtZW51LWJhci1saW5lcycsIGBmb250JywgLi4uKS4KLSAgIFRoaXMgaXMgcGFz c2VkIG9uIHRvIGZyYW1lX2luaGliaXRfcmVzaXplIHRvIGxldCB0aGUgbGF0dGVyIGRlY2lk ZSBvbgotICAgYSBjYXNlLWJ5LWNhc2UgYmFzaXMgd2hldGhlciB0aGUgZnJhbWUgbWF5IGJl IHJlc2l6ZWQgZXh0ZXJuYWxseS4gICovCisgICAgICBpZiAoIUNPTlNQIChrZWVwX3JhdGlv KSB8fCAhTklMUCAoRmNhciAoa2VlcF9yYXRpbykpKQorCXsKKwkgIGlmIChDT05TUCAoa2Vl cF9yYXRpbykgJiYgRVEgKEZjYXIgKGtlZXBfcmF0aW8pLCBRaGVpZ2h0X29ubHkpKQorCSAg ICBwaXhlbF93aWR0aCA9IC0xOworCSAgZWxzZQorCSAgICB7CisJICAgICAgcGl4ZWxfd2lk dGggPSAoaW50KShmLT5waXhlbF93aWR0aCAqIHdpZHRoX2ZhY3RvciArIDAuNSk7CisJICAg ICAgcGl4ZWxfd2lkdGggPSBGUkFNRV9QSVhFTF9UT19URVhUX1dJRFRIIChmLCBwaXhlbF93 aWR0aCk7CisJICAgIH0KKworCSAgaWYgKENPTlNQIChrZWVwX3JhdGlvKSAmJiBFUSAoRmNh ciAoa2VlcF9yYXRpbyksIFF3aWR0aF9vbmx5KSkKKwkgICAgcGl4ZWxfaGVpZ2h0ID0gLTE7 CisJICBlbHNlCisJICAgIHsKKwkgICAgICBwaXhlbF9oZWlnaHQgPSAoaW50KShmLT5waXhl bF9oZWlnaHQgKiBoZWlnaHRfZmFjdG9yICsgMC41KTsKKwkgICAgICBwaXhlbF9oZWlnaHQg PSBGUkFNRV9QSVhFTF9UT19URVhUX0hFSUdIVCAoZiwgcGl4ZWxfaGVpZ2h0KTsKKwkgICAg fQorCisJICBhZGp1c3RfZnJhbWVfc2l6ZSAoZiwgcGl4ZWxfd2lkdGgsIHBpeGVsX2hlaWdo dCwgMSwgMCwKKwkJCSAgICAgUWtlZXBfcmF0aW8pOworCX0KKyAgICB9Cit9CisjZW5kaWYK KworCisvKioKKyAqIGFkanVzdF9mcmFtZV9zaXplOgorICoKKyAqIEFkanVzdCBzaXplIG9m IGZyYW1lIEYuICBORVdfV0lEVEggYW5kIE5FV19IRUlHSFQgc3BlY2lmeSB0aGUgbmV3Cisg KiB0ZXh0IHNpemUgb2YgRiBpbiBwaXhlbHMuICBBIHZhbHVlIG9mIC0xIG1lYW5zIG5vIGNo YW5nZSBpcyByZXF1ZXN0ZWQKKyAqIGZvciB0aGF0IGRpcmVjdGlvbiAoYnV0IHRoZSBmcmFt ZSBtYXkgc3RpbGwgaGF2ZSB0byBiZSByZXNpemVkIHRvCisgKiBhY2NvbW1vZGF0ZSB3aW5k b3dzIHdpdGggdGhlaXIgbWluaW11bSBzaXplcykuICBUaGlzIGNhbiBlaXRoZXIgaXNzdWUK KyAqIGEgcmVxdWVzdCB0byByZXNpemUgdGhlIGZyYW1lIGV4dGVybmFsbHkgKHZpYSB4X3Nl dF93aW5kb3dfc2l6ZSksIHRvCisgKiByZXNpemUgdGhlIGZyYW1lIGludGVybmFsbHkgKHZp YSByZXNpemVfZnJhbWVfd2luZG93cykgb3IgZG8gbm90aGluZworICogYXQgYWxsLgorICoK KyAqIFRoZSBhcmd1bWVudCBJTkhJQklUIGNhbiBhc3N1bWUgdGhlIGZvbGxvd2luZyB2YWx1 ZXM6CisgKgorICogMCBtZWFucyB0byB1bmNvbmRpdGlvbmFsbHkgY2FsbCB4X3NldF93aW5k b3dfc2l6ZSBldmVuIGlmIHNpemVzCisgKiAgIGFwcGFyZW50bHkgZG8gbm90IGNoYW5nZS4g IEZ4X2NyZWF0ZV9mcmFtZSB1c2VzIHRoaXMgdG8gcGFzcyB0aGUKKyAqICAgaW5pdGlhbCBz aXplIHRvIHRoZSB3aW5kb3cgbWFuYWdlci4KKyAqCisgKiAxIG1lYW5zIHRvIGNhbGwgeF9z ZXRfd2luZG93X3NpemUgaWYgdGhlIG5hdGl2ZSBmcmFtZSBzaXplIHJlYWxseQorICogICBj aGFuZ2VzLiAgRnNldF9mcmFtZV9zaXplLCBGc2V0X2ZyYW1lX2hlaWdodCwgLi4uIHVzZSB0 aGlzLgorICoKKyAqIDIgbWVhbnMgdG8gY2FsbCB4X3NldF93aW5kb3dfc2l6ZSBwcm92aWRl ZCBmcmFtZV9pbmhpYml0X3Jlc2l6ZQorICogICBhbGxvd3MgaXQuICBUaGUgbWVudSBhbmQg dG9vbCBiYXIgY29kZSB1c2UgdGhpcyAoIjMiIHdvbid0IHdvcmsKKyAqICAgaGVyZSBpbiBn ZW5lcmFsIGJlY2F1c2UgbWVudSBhbmQgdG9vbCBiYXIgYXJlIG9mdGVuIG5vdCBjb3VudGVk IGluCisgKiAgIHRoZSBmcmFtZSdzIHRleHQgaGVpZ2h0KS4KKyAqCisgKiAzIG1lYW5zIGNh bGwgeF9zZXRfd2luZG93X3NpemUgaWYgd2luZG93IG1pbmltdW0gc2l6ZXMgbXVzdCBiZQor ICogICBwcmVzZXJ2ZWQgb3IgZnJhbWVfaW5oaWJpdF9yZXNpemUgYWxsb3dzIGl0LiAgeF9z ZXRfbGVmdF9mcmluZ2UsCisgKiAgIHhfc2V0X3Njcm9sbF9iYXJfd2lkdGgsIHhfbmV3X2Zv bnQgLi4uIHVzZSAob3Igc2hvdWxkIHVzZSkgdGhpcy4KKyAqCisgKiA0IG1lYW5zIGNhbGwg eF9zZXRfd2luZG93X3NpemUgb25seSBpZiB3aW5kb3cgbWluaW11bSBzaXplcyBtdXN0IGJl CisgKiAgIHByZXNlcnZlZC4gIHhfc2V0X3JpZ2h0X2RpdmlkZXJfd2lkdGgsIHhfc2V0X2Jv cmRlcl93aWR0aCBhbmQgdGhlCisgKiAgIGNvZGUgcmVzcG9uc2libGUgZm9yIHdyYXBwaW5n IHRoZSB0b29sIGJhciB1c2UgdGhpcy4KKyAqCisgKiA1IG1lYW5zIHRvIG5ldmVyIGNhbGwg eF9zZXRfd2luZG93X3NpemUuICBjaGFuZ2VfZnJhbWVfc2l6ZSB1c2VzCisgKiAgIHRoaXMu CisgKgorICogTm90ZSB0aGF0IGV2ZW4gd2hlbiB4X3NldF93aW5kb3dfc2l6ZSBpcyBub3Qg Y2FsbGVkLCBpbmRpdmlkdWFsCisgKiB3aW5kb3dzIG1heSBoYXZlIHRvIGJlIHJlc2l6ZWQg KHZpYSBgd2luZG93LS1zYW5pdGl6ZS13aW5kb3ctc2l6ZXMnKQorICogaW4gb3JkZXIgdG8g c3VwcG9ydCBtaW5pbXVtIHNpemUgY29uc3RyYWludHMuCisgKgorICogUFJFVEVORCBpcyBh cyBmb3IgY2hhbmdlX2ZyYW1lX3NpemUuICBQQVJBTUVURVIsIGlmIG5vbi1uaWwsIGlzIHRo ZQorICogc3ltYm9sIG9mIHRoZSBwYXJhbWV0ZXIgY2hhbmdlZCAobGlrZSBgbWVudS1iYXIt bGluZXMnLCBgZm9udCcsIC4uLikuCisgKiBUaGlzIGlzIHBhc3NlZCBvbiB0byBmcmFtZV9p bmhpYml0X3Jlc2l6ZSB0byBsZXQgdGhlIGxhdHRlciBkZWNpZGUgb24KKyAqIGEgY2FzZS1i eS1jYXNlIGJhc2lzIHdoZXRoZXIgdGhlIGZyYW1lIG1heSBiZSByZXNpemVkIGV4dGVybmFs bHkuCisgKi8KIHZvaWQKIGFkanVzdF9mcmFtZV9zaXplIChzdHJ1Y3QgZnJhbWUgKmYsIGlu dCBuZXdfd2lkdGgsIGludCBuZXdfaGVpZ2h0LCBpbnQgaW5oaWJpdCwKIAkJICAgYm9vbCBw cmV0ZW5kLCBMaXNwX09iamVjdCBwYXJhbWV0ZXIpCkBAIC02MzYsNiArNzY5LDE4IEBAIHN0 cnVjdCBmcmFtZSAqCiAJCSAgfHwgbmV3X3BpeGVsX2hlaWdodCAhPSBvbGRfcGl4ZWxfaGVp Z2h0KTsKCiAgIHVuYmxvY2tfaW5wdXQgKCk7CisKKyNpZmRlZiBIQVZFX1dJTkRPV19TWVNU RU0KKyAgeworICAgIC8qIEFkanVzdCBzaXplIG9mIEYncyBjaGlsZCBmcmFtZXMuICAqLwor ICAgIExpc3BfT2JqZWN0IGZyYW1lcywgZnJhbWUxOworCisgICAgRk9SX0VBQ0hfRlJBTUUg KGZyYW1lcywgZnJhbWUxKQorICAgICAgaWYgKEZSQU1FX1BBUkVOVF9GUkFNRSAoWEZSQU1F IChmcmFtZTEpKSA9PSBmKQorCWtlZXBfcmF0aW8gKFhGUkFNRSAoZnJhbWUxKSwgb2xkX3Bp eGVsX3dpZHRoLCBvbGRfcGl4ZWxfaGVpZ2h0LAorCQkJIG5ld19waXhlbF93aWR0aCwgbmV3 X3BpeGVsX2hlaWdodCk7CisgIH0KKyNlbmRpZgogfQoKIC8qIEFsbG9jYXRlIGJhc2ljYWxs eSBpbml0aWFsaXplZCBmcmFtZS4gICovCkBAIC02ODQsNiArODI5LDcgQEAgc3RydWN0IGZy YW1lICoKICAgZi0+aG9yaXpvbnRhbF9zY3JvbGxfYmFycyA9IGZhbHNlOwogICBmLT53YW50 X2Z1bGxzY3JlZW4gPSBGVUxMU0NSRUVOX05PTkU7CiAgIGYtPnVuZGVjb3JhdGVkID0gZmFs c2U7CisgIGYtPm5vX3NwZWNpYWxfZ2x5cGhzID0gZmFsc2U7CiAjaWZuZGVmIEhBVkVfTlRH VUkKICAgZi0+b3ZlcnJpZGVfcmVkaXJlY3QgPSBmYWxzZTsKICNlbmRpZgpAQCAtMjAwNCw4 ICsyMTUwLDEwMSBAQCBvZiB0aGVtICh0aGUgc2VsZWN0ZWQgdGVybWluYWwgZnJhbWUpIGlz IGFjdHVhbGx5IGRpc3BsYXllZC4KIHsKICAgcmV0dXJuIGRlbGV0ZV9mcmFtZSAoZnJhbWUs ICFOSUxQIChmb3JjZSkgPyBRdCA6IFFuaWwpOwogfQotCiAMCisjaWZkZWYgSEFWRV9XSU5E T1dfU1lTVEVNCisvKioKKyAqIGZyYW1lX2ludGVybmFsX2JvcmRlcl9wYXJ0OgorICoKKyAq IFJldHVybiBwYXJ0IG9mIGludGVybmFsIGJvcmRlciB0aGUgY29vcmRpbmF0ZXMgWCBhbmQg WSByZWxhdGl2ZSB0bworICogZnJhbWUgRiBhcmUgb24uICBSZXR1cm4gbmlsIGlmIHRoZSBj b29yZGluYXRlcyBhcmUgbm90IG9uIHRoZQorICogaW50ZXJuYWwgYm9yZGVyIG9mIEYuCisg KgorICogUmV0dXJuIG9uZSBvZiBJTlRFUk5BTF9CT1JERVJfTEVGVF9FREdFLCBJTlRFUk5B TF9CT1JERVJfVE9QX0VER0UsCisgKiBJTlRFUk5BTF9CT1JERVJfUklHSFRfRURHRSBvciBJ TlRFUk5BTF9CT1JERVJfQk9UVE9NX0VER0Ugd2hlbiB0aGUKKyAqIG1vdXNlIGN1cnNvciBp cyBvbiB0aGUgY29ycmVzcG9uZGluZyBib3JkZXIgd2l0aCBhbiBvZmZzZXQgb2YgYXQKKyAq IGxlYXN0IG9uZSBjYW5vbmljYWwgY2hhcmFjdGVyIGhlaWdodCBmcm9tIHRoYXQgYm9yZGVy J3MgZWRnZXMuCisgKgorICogSWYgbm8gYm9yZGVyIHBhcnQgY291bGQgYmUgZm91bmQgdGhp cyB3YXksIHJldHVybiBvbmUgb2YKKyAqIElOVEVSTkFMX0JPUkRFUl9UT1BfTEVGVF9DT1JO RVIsIElOVEVSTkFMX0JPUkRFUl9UT1BfUklHSFRfQ09STkVSLAorICogSU5URVJOQUxfQk9S REVSX0JPVFRPTV9MRUZUX0NPUk5FUiBvcgorICogSU5URVJOQUxfQk9SREVSX0JPVFRPTV9S SUdIVF9DT1JORVIgdG8gaW5kaWNhdGUgdGhhdCB0aGUgbW91c2UgaXMgaW4KKyAqIG9uZSBv ZiB0aGUgY29ycmVzcG9uZGluZyBjb3JuZXJzLiAgVGhpcyBtZWFucyB0aGF0IGZvciB2ZXJ5 IHNtYWxsCisgKiBmcmFtZXMgYW4gYGVkZ2UnIHJldHVybiB2YWx1ZSBpcyBwcmVmZXJyZWQu CisgKi8KK2VudW0gaW50ZXJuYWxfYm9yZGVyX3BhcnQKK2ZyYW1lX2ludGVybmFsX2JvcmRl cl9wYXJ0IChzdHJ1Y3QgZnJhbWUgKmYsIGludCB4LCBpbnQgeSkKK3sKKyAgaW50IGJvcmRl ciA9IEZSQU1FX0lOVEVSTkFMX0JPUkRFUl9XSURUSCAoZik7CisgIGludCBvZmZzZXQgPSBG UkFNRV9MSU5FX0hFSUdIVCAoZik7CisgIGludCB3aWR0aCA9IEZSQU1FX1BJWEVMX1dJRFRI IChmKTsKKyAgaW50IGhlaWdodCA9IEZSQU1FX1BJWEVMX0hFSUdIVCAoZik7CisgIGVudW0g aW50ZXJuYWxfYm9yZGVyX3BhcnQgcGFydCA9IElOVEVSTkFMX0JPUkRFUl9OT05FOworCisg IGlmIChvZmZzZXQgPCBib3JkZXIpCisgICAgLyogRm9yIHZlcnkgd2lkZSBib3JkZXJzIG1h a2Ugb2Zmc2V0IGF0IGxlYXN0IGFzIGxhcmdlIGFzCisgICAgICAgYm9yZGVyLiAgKi8KKyAg ICBvZmZzZXQgPSBib3JkZXI7CisKKyAgaWYgKG9mZnNldCA8IHggJiYgeCA8IHdpZHRoIC0g b2Zmc2V0KQorICAgIC8qIFRvcCBvciBib3R0b20gYm9yZGVyLiAgKi8KKyAgICB7CisgICAg ICBpZiAoMCA8PSB5ICYmIHkgPD0gYm9yZGVyKQorCXBhcnQgPSBJTlRFUk5BTF9CT1JERVJf VE9QX0VER0U7CisgICAgICBlbHNlIGlmIChoZWlnaHQgLSBib3JkZXIgPD0geSAmJiB5IDw9 IGhlaWdodCkKKwlwYXJ0ID0gSU5URVJOQUxfQk9SREVSX0JPVFRPTV9FREdFOworICAgIH0K KyAgZWxzZSBpZiAob2Zmc2V0IDwgeSAmJiB5IDwgaGVpZ2h0IC0gb2Zmc2V0KQorICAgIC8q IExlZnQgb3IgcmlnaHQgYm9yZGVyLiAgKi8KKyAgICB7CisgICAgICBpZiAoMCA8PSB4ICYm IHggPD0gYm9yZGVyKQorCXBhcnQgPSBJTlRFUk5BTF9CT1JERVJfTEVGVF9FREdFOworICAg ICAgZWxzZSBpZiAod2lkdGggLSBib3JkZXIgPD0geCAmJiB4IDw9IHdpZHRoKQorCXBhcnQg PSBJTlRFUk5BTF9CT1JERVJfUklHSFRfRURHRTsKKyAgICB9CisgIGVsc2UKKyAgICB7Cisg ICAgICAvKiBBbiBlZGdlLiAgKi8KKyAgICAgIGludCBoYWxmX3dpZHRoID0gd2lkdGggLyAy OworICAgICAgaW50IGhhbGZfaGVpZ2h0ID0gaGVpZ2h0IC8gMjsKKworICAgICAgaWYgKDAg PD0geCAmJiB4IDw9IGJvcmRlcikKKwl7CisJICAvKiBBIGxlZnQgZWRnZS4gICovCisJICBp ZiAoMCA8PSB5ICYmIHkgPD0gaGFsZl9oZWlnaHQpCisJICAgICBwYXJ0ID0gSU5URVJOQUxf Qk9SREVSX1RPUF9MRUZUX0NPUk5FUjsKKwkgIGVsc2UgaWYgKGhhbGZfaGVpZ2h0IDwgeSAm JiB5IDw9IGhlaWdodCkKKwkgICAgIHBhcnQgPSBJTlRFUk5BTF9CT1JERVJfQk9UVE9NX0xF RlRfQ09STkVSOworCX0KKyAgICAgIGVsc2UgaWYgKHdpZHRoIC0gYm9yZGVyIDw9IHggJiYg eCA8PSB3aWR0aCkKKwl7CisJICAvKiBBIHJpZ2h0IGVkZ2UuICAqLworCSAgaWYgKDAgPD0g eSAmJiB5IDw9IGhhbGZfaGVpZ2h0KQorCSAgICAgcGFydCA9IElOVEVSTkFMX0JPUkRFUl9U T1BfUklHSFRfQ09STkVSOworCSAgZWxzZSBpZiAoaGFsZl9oZWlnaHQgPCB5ICYmIHkgPD0g aGVpZ2h0KQorCSAgICAgcGFydCA9IElOVEVSTkFMX0JPUkRFUl9CT1RUT01fUklHSFRfQ09S TkVSOworCX0KKyAgICAgIGVsc2UgaWYgKDAgPD0geSAmJiB5IDw9IGJvcmRlcikKKwl7CisJ ICAvKiBBIHRvcCBlZGdlLiAgKi8KKwkgIGlmICgwIDw9IHggJiYgeCA8PSBoYWxmX3dpZHRo KQorCSAgICAgcGFydCA9IElOVEVSTkFMX0JPUkRFUl9UT1BfTEVGVF9DT1JORVI7CisJICBl bHNlIGlmIChoYWxmX3dpZHRoIDwgeCAmJiB4IDw9IHdpZHRoKQorCSAgICBwYXJ0ID0gSU5U RVJOQUxfQk9SREVSX1RPUF9SSUdIVF9DT1JORVI7CisJfQorICAgICAgZWxzZSBpZiAoaGVp Z2h0IC0gYm9yZGVyIDw9IHkgJiYgeSA8PSBoZWlnaHQpCisJeworCSAgLyogQSBib3R0b20g ZWRnZS4gICovCisJICBpZiAoMCA8PSB4ICYmIHggPD0gaGFsZl93aWR0aCkKKwkgICAgIHBh cnQgPSBJTlRFUk5BTF9CT1JERVJfQk9UVE9NX0xFRlRfQ09STkVSOworCSAgZWxzZSBpZiAo aGFsZl93aWR0aCA8IHggJiYgeCA8PSB3aWR0aCkKKwkgICAgcGFydCA9IElOVEVSTkFMX0JP UkRFUl9CT1RUT01fUklHSFRfQ09STkVSOworCX0KKyAgICB9CisKKyAgcmV0dXJuIHBhcnQ7 Cit9CisjZW5kaWYKKwogLyogUmV0dXJuIG1vdXNlIHBvc2l0aW9uIGluIGNoYXJhY3RlciBj ZWxsIHVuaXRzLiAgKi8KCiBERUZVTiAoIm1vdXNlLXBvc2l0aW9uIiwgRm1vdXNlX3Bvc2l0 aW9uLCBTbW91c2VfcG9zaXRpb24sIDAsIDAsIDAsCkBAIC0yOTYyLDQ5ICszMjAxLDQ3IEBA IEVhY2ggZWxlbWVudCBvZiBBTElTVCBoYXMgdGhlIGZvcm0gKFBBUk0gLiBWQUxVRSksIHdo ZXJlIFBBUk0gaXMgYSBzeW1ib2wuCiAgICAgcmV0dXJuIG1ha2VfbnVtYmVyICgxKTsKIH0K Ci1ERUZVTiAoImZyYW1lLXBpeGVsLWhlaWdodCIsIEZmcmFtZV9waXhlbF9oZWlnaHQsCi0g ICAgICAgU2ZyYW1lX3BpeGVsX2hlaWdodCwgMCwgMSwgMCwKLSAgICAgICBkb2M6IC8qIFJl dHVybiBhIEZSQU1FJ3MgaGVpZ2h0IGluIHBpeGVscy4KLUlmIEZSQU1FIGlzIG9taXR0ZWQg b3IgbmlsLCB0aGUgc2VsZWN0ZWQgZnJhbWUgaXMgdXNlZC4gIFRoZSBleGFjdCB2YWx1ZQot b2YgdGhlIHJlc3VsdCBkZXBlbmRzIG9uIHRoZSB3aW5kb3ctc3lzdGVtIGFuZCB0b29sa2l0 IGluIHVzZToKLQotSW4gdGhlIEd0aysgdmVyc2lvbiBvZiBFbWFjcywgaXQgaW5jbHVkZXMg b25seSBhbnkgd2luZG93IChpbmNsdWRpbmcKLXRoZSBtaW5pYnVmZmVyIG9yIGVjaG8gYXJl YSksIG1vZGUgbGluZSwgYW5kIGhlYWRlciBsaW5lLiAgSXQgZG9lcyBub3QKLWluY2x1ZGUg dGhlIHRvb2wgYmFyIG9yIG1lbnUgYmFyLgotCi1XaXRoIG90aGVyIGdyYXBoaWNhbCB2ZXJz aW9ucywgaXQgYWxzbyBpbmNsdWRlcyB0aGUgdG9vbCBiYXIgYW5kIHRoZQotbWVudSBiYXIu Ci0KLUZvciBhIHRleHQgdGVybWluYWwsIGl0IGluY2x1ZGVzIHRoZSBtZW51IGJhci4gIElu IHRoaXMgY2FzZSwgdGhlCi1yZXN1bHQgaXMgcmVhbGx5IGluIGNoYXJhY3RlcnMgcmF0aGVy IHRoYW4gcGl4ZWxzIChpLmUuLCBpcyBpZGVudGljYWwKLXRvIGBmcmFtZS1oZWlnaHQnKS4g Ki8pCitERUZVTiAoImZyYW1lLW5hdGl2ZS13aWR0aCIsIEZmcmFtZV9uYXRpdmVfd2lkdGgs CisgICAgICAgU2ZyYW1lX25hdGl2ZV93aWR0aCwgMCwgMSwgMCwKKyAgICAgICBkb2M6IC8q IFJldHVybiBGUkFNRSdzIG5hdGl2ZSB3aWR0aCBpbiBwaXhlbHMuCitGb3IgYSB0ZXJtaW5h bCBmcmFtZSwgdGhlIHJlc3VsdCByZWFsbHkgZ2l2ZXMgdGhlIHdpZHRoIGluIGNoYXJhY3Rl cnMuCitJZiBGUkFNRSBpcyBvbWl0dGVkIG9yIG5pbCwgdGhlIHNlbGVjdGVkIGZyYW1lIGlz IHVzZWQuICAqLykKICAgKExpc3BfT2JqZWN0IGZyYW1lKQogewogICBzdHJ1Y3QgZnJhbWUg KmYgPSBkZWNvZGVfYW55X2ZyYW1lIChmcmFtZSk7CgogI2lmZGVmIEhBVkVfV0lORE9XX1NZ U1RFTQogICBpZiAoRlJBTUVfV0lORE9XX1AgKGYpKQotICAgIHJldHVybiBtYWtlX251bWJl ciAoRlJBTUVfUElYRUxfSEVJR0hUIChmKSk7CisgICAgcmV0dXJuIG1ha2VfbnVtYmVyIChG UkFNRV9QSVhFTF9XSURUSCAoZikpOwogICBlbHNlCiAjZW5kaWYKLSAgICByZXR1cm4gbWFr ZV9udW1iZXIgKEZSQU1FX1RPVEFMX0xJTkVTIChmKSk7CisgICAgcmV0dXJuIG1ha2VfbnVt YmVyIChGUkFNRV9UT1RBTF9DT0xTIChmKSk7CiB9CgotREVGVU4gKCJmcmFtZS1waXhlbC13 aWR0aCIsIEZmcmFtZV9waXhlbF93aWR0aCwKLSAgICAgICBTZnJhbWVfcGl4ZWxfd2lkdGgs IDAsIDEsIDAsCi0gICAgICAgZG9jOiAvKiBSZXR1cm4gRlJBTUUncyB3aWR0aCBpbiBwaXhl bHMuCi1Gb3IgYSB0ZXJtaW5hbCBmcmFtZSwgdGhlIHJlc3VsdCByZWFsbHkgZ2l2ZXMgdGhl IHdpZHRoIGluIGNoYXJhY3RlcnMuCi1JZiBGUkFNRSBpcyBvbWl0dGVkIG9yIG5pbCwgdGhl IHNlbGVjdGVkIGZyYW1lIGlzIHVzZWQuICAqLykKK0RFRlVOICgiZnJhbWUtbmF0aXZlLWhl aWdodCIsIEZmcmFtZV9uYXRpdmVfaGVpZ2h0LAorICAgICAgIFNmcmFtZV9uYXRpdmVfaGVp Z2h0LCAwLCAxLCAwLAorICAgICAgIGRvYzogLyogUmV0dXJuIEZSQU1FJ3MgbmF0aXZlIGhl aWdodCBpbiBwaXhlbHMuCitJZiBGUkFNRSBpcyBvbWl0dGVkIG9yIG5pbCwgdGhlIHNlbGVj dGVkIGZyYW1lIGlzIHVzZWQuICBUaGUgZXhhY3QgdmFsdWUKK29mIHRoZSByZXN1bHQgZGVw ZW5kcyBvbiB0aGUgd2luZG93LXN5c3RlbSBhbmQgdG9vbGtpdCBpbiB1c2U6CisKK0luIHRo ZSBHdGsrIGFuZCBOUyB2ZXJzaW9ucywgaXQgaW5jbHVkZXMgb25seSBhbnkgd2luZG93IChp bmNsdWRpbmcgdGhlCittaW5pYnVmZmVyIG9yIGVjaG8gYXJlYSksIG1vZGUgbGluZSwgYW5k IGhlYWRlciBsaW5lLiAgSXQgZG9lcyBub3QKK2luY2x1ZGUgdGhlIHRvb2wgYmFyIG9yIG1l bnUgYmFyLiAgV2l0aCBvdGhlciBncmFwaGljYWwgdmVyc2lvbnMsIGl0IG1heQorYWxzbyBp bmNsdWRlIHRoZSB0b29sIGJhciBhbmQgdGhlIG1lbnUgYmFyLgorCitGb3IgYSB0ZXh0IHRl cm1pbmFsLCBpdCBpbmNsdWRlcyB0aGUgbWVudSBiYXIuICBJbiB0aGlzIGNhc2UsIHRoZQor cmVzdWx0IGlzIHJlYWxseSBpbiBjaGFyYWN0ZXJzIHJhdGhlciB0aGFuIHBpeGVscyAoaS5l LiwgaXMgaWRlbnRpY2FsCit0byBgZnJhbWUtaGVpZ2h0JykuICovKQogICAoTGlzcF9PYmpl Y3QgZnJhbWUpCiB7CiAgIHN0cnVjdCBmcmFtZSAqZiA9IGRlY29kZV9hbnlfZnJhbWUgKGZy YW1lKTsKCiAjaWZkZWYgSEFWRV9XSU5ET1dfU1lTVEVNCiAgIGlmIChGUkFNRV9XSU5ET1df UCAoZikpCi0gICAgcmV0dXJuIG1ha2VfbnVtYmVyIChGUkFNRV9QSVhFTF9XSURUSCAoZikp OworICAgIHJldHVybiBtYWtlX251bWJlciAoRlJBTUVfUElYRUxfSEVJR0hUIChmKSk7CiAg IGVsc2UKICNlbmRpZgotICAgIHJldHVybiBtYWtlX251bWJlciAoRlJBTUVfVE9UQUxfQ09M UyAoZikpOworICAgIHJldHVybiBtYWtlX251bWJlciAoRlJBTUVfVE9UQUxfTElORVMgKGYp KTsKIH0KCiBERUZVTiAoInRvb2wtYmFyLXBpeGVsLXdpZHRoIiwgRnRvb2xfYmFyX3BpeGVs X3dpZHRoLApAQCAtMzA4Nyw4ICszMzI0LDggQEAgcmVzdWx0IGlzIHJlYWxseSBpbiBjaGFy YWN0ZXJzIHJhdGhlciB0aGFuIHBpeGVscyAoaS5lLiwgaXMgaWRlbnRpY2FsCiAgIHJldHVy biBtYWtlX251bWJlciAoRlJBTUVfVE9UQUxfRlJJTkdFX1dJRFRIIChkZWNvZGVfYW55X2Zy YW1lIChmcmFtZSkpKTsKIH0KCi1ERUZVTiAoImZyYW1lLWJvcmRlci13aWR0aCIsIEZib3Jk ZXJfd2lkdGgsIFNib3JkZXJfd2lkdGgsIDAsIDEsIDAsCi0gICAgICAgZG9jOiAvKiBSZXR1 cm4gYm9yZGVyIHdpZHRoIG9mIEZSQU1FIGluIHBpeGVscy4gICovKQorREVGVU4gKCJmcmFt ZS1pbnRlcm5hbC1ib3JkZXItd2lkdGgiLCBGZnJhbWVfaW50ZXJuYWxfYm9yZGVyX3dpZHRo LCBTZnJhbWVfaW50ZXJuYWxfYm9yZGVyX3dpZHRoLCAwLCAxLCAwLAorICAgICAgIGRvYzog LyogUmV0dXJuIHdpZHRoIG9mIEZSQU1FJ3MgaW50ZXJuYWwgYm9yZGVyIGluIHBpeGVscy4g ICovKQogICAoTGlzcF9PYmplY3QgZnJhbWUpCiB7CiAgIHJldHVybiBtYWtlX251bWJlciAo RlJBTUVfSU5URVJOQUxfQk9SREVSX1dJRFRIIChkZWNvZGVfYW55X2ZyYW1lIChmcmFtZSkp KTsKQEAgLTMyMjQsNyArMzQ2MSw2IEBAIG91dGVyIGZyYW1lIGluIHBpeGVscyByZWxhdGl2 ZSB0byBhbiBvcmlnaW4gKDAsIDApIG9mIEZSQU1FJ3MgZGlzcGxheS4KCiAgIHJldHVybiBR dDsKIH0KLQogDAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq KioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAJCQkJRnJhbWUgUGFyYW1ldGVycwpA QCAtMzI4OSwxMCArMzUyNSwxOTMgQEAgc3RydWN0IGZyYW1lX3Bhcm1fdGFibGUgewogICB7 Im5vLWFjY2VwdC1mb2N1cyIsCQlTWU1CT0xfSU5ERVggKFFub19hY2NlcHRfZm9jdXMpfSwK ICAgeyJ6LWdyb3VwIiwJCQlTWU1CT0xfSU5ERVggKFF6X2dyb3VwKX0sCiAgIHsib3ZlcnJp ZGUtcmVkaXJlY3QiLAkJU1lNQk9MX0lOREVYIChRb3ZlcnJpZGVfcmVkaXJlY3QpfSwKKyAg eyJuby1zcGVjaWFsLWdseXBocyIsCQlTWU1CT0xfSU5ERVggKFFub19zcGVjaWFsX2dseXBo cyl9LAogfTsKCiAjaWZkZWYgSEFWRV9XSU5ET1dfU1lTVEVNCgorLyogRW51bWVyYXRpb24g dHlwZSBmb3Igc3dpdGNoIGluIGZyYW1lX2Zsb2F0LiAgKi8KK2VudW0gZnJhbWVfZmxvYXRf dHlwZQoreworIEZSQU1FX0ZMT0FUX1dJRFRILAorIEZSQU1FX0ZMT0FUX0hFSUdIVCwKKyBG UkFNRV9GTE9BVF9MRUZULAorIEZSQU1FX0ZMT0FUX1RPUAorfTsKKworLyoqCisgKiBmcmFt ZV9mbG9hdDoKKyAqCisgKiBQcm9jZXNzIHRoZSB2YWx1ZSBWQUwgb2YgdGhlIGZsb2F0IHR5 cGUgZnJhbWUgcGFyYW1ldGVyICd3aWR0aCcsCisgKiAnaGVpZ2h0JywgJ2xlZnQnLCBvciAn dG9wJyBzcGVjaWZpZWQgdmlhIGEgZnJhbWVfZmxvYXRfdHlwZQorICogZW51bWVyYXRpb24g dHlwZSBXSEFUIGZvciBmcmFtZSBGLiAgU3VjaCBwYXJhbWV0ZXJzIHJlbGF0ZSB0aGUgb3V0 ZXIKKyAqIHNpemUgb3IgcG9zaXRpb24gb2YgRiB0byB0aGUgc2l6ZSBvZiB0aGUgRidzIGRp c3BsYXkgb3IgcGFyZW50IGZyYW1lCisgKiB3aGljaCBoYXZlIHRvIGJlIGJvdGggYXZhaWxh YmxlIGluIHNvbWUgd2F5LgorICoKKyAqIFRoZSByZXR1cm4gdmFsdWUgaXMgYSBzaXplIG9y IHBvc2l0aW9uIHZhbHVlIGluIHBpeGVscy4gIFZBTCBtdXN0IGJlCisgKiBpbiB0aGUgcmFu Z2UgMC4wIHRvIDEuMCB3aGVyZSBhIHdpZHRoL2hlaWdodCBvZiAwLjAgbWVhbnMgdG8gcmV0 dXJuIDAKKyAqIGFuZCAxLjAgbWVhbnMgdG8gcmV0dXJuIHRoZSBmdWxsIHdpZHRoL2hlaWdo dCBvZiB0aGUgZGlzcGxheS9wYXJlbnQuCisgKiBGb3IgcG9zaXRpb25zLCAwLjAgbWVhbnMg cG9zaXRpb24gaW4gdGhlIGxlZnQvdG9wIGNvcm5lciBvZiB0aGUKKyAqIGRpc3BsYXkvcGFy ZW50IHdoaWxlIDEuMCBtZWFucyB0byBwb3NpdGlvbiBhdCB0aGUgcmlnaHQvYm90dG9tIGNv cm5lcgorICogb2YgdGhlIGRpc3BsYXkvcGFyZW50IGZyYW1lLgorICoKKyAqIFNldCBQQVJF TlRfRE9ORSBhbmQgT1VURVJfRE9ORSB0byBhdm9pZCByZWNhbGN1bGF0aW9uIG9mIHRoZSBv dXRlcgorICogc2l6ZSBvciBwYXJlbnQgb3IgZGlzcGxheSBhdHRyaWJ1dGVzIHdoZW4gbW9y ZSBmbG9hdCBwYXJhbWV0ZXJzIGFyZQorICogY2FsY3VsYXRlZCBpbiBhIHJvdzogLTEgbWVh bnMgbm90IHByb2Nlc3NlZCB5ZXQsIDAgbWVhbnMgcHJvY2Vzc2luZworICogZmFpbGVkLCAx IG1lYW5zIHByb2Nlc3Npbmcgc3VjY2VlZGVkLgorICoKKyAqIFJldHVybiBERUZBVUxUX1ZB TFVFIHdoZW4gcHJvY2Vzc2luZyBmYWlscyBmb3Igd2hhdGV2ZXIgcmVhc29uIHdpdGgKKyAq IG9uZSBleGNlcHRpb246IFdoZW4gY2FsY3VsYXRpbmcgRidzIG91dGVyIGVkZ2VzIGZhaWxz IChwcm9iYWJseQorICogYmVjYXVzZSBGIGhhcyBub3QgYmVlbiBjcmVhdGVkIHlldCkgcmV0 dXJuIHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gRidzCisgKiBuYXRpdmUgYW5kIHRleHQgc2l6 ZS4KKyAqLworc3RhdGljIGludAorZnJhbWVfZmxvYXQgKHN0cnVjdCBmcmFtZSAqZiwgTGlz cF9PYmplY3QgdmFsLCBlbnVtIGZyYW1lX2Zsb2F0X3R5cGUgd2hhdCwKKwkgICAgIGludCAq cGFyZW50X2RvbmUsIGludCAqb3V0ZXJfZG9uZSwgaW50IGRlZmF1bHRfdmFsdWUpCit7Cisg IGRvdWJsZSBkX3ZhbCA9IFhGTE9BVF9EQVRBICh2YWwpOworCisgIGlmIChkX3ZhbCA8IDAu MCB8fCBkX3ZhbCA+IDEuMCkKKyAgICAvKiBJbnZhbGlkIFZBTC4gICovCisgICAgcmV0dXJu IGRlZmF1bHRfdmFsdWU7CisgIGVsc2UKKyAgICB7CisgICAgICBzdGF0aWMgdW5zaWduZWQg cGFyZW50X3dpZHRoLCBwYXJlbnRfaGVpZ2h0OworICAgICAgc3RhdGljIGludCBwYXJlbnRf bGVmdCwgcGFyZW50X3RvcDsKKyAgICAgIHN0YXRpYyB1bnNpZ25lZCBvdXRlcl9taW51c190 ZXh0X3dpZHRoLCBvdXRlcl9taW51c190ZXh0X2hlaWdodDsKKyAgICAgIHN0cnVjdCBmcmFt ZSAqcCA9IEZSQU1FX1BBUkVOVF9GUkFNRSAoZik7CisKKyAgICAgIGlmICgqcGFyZW50X2Rv bmUgPT0gMSkKKwk7CisgICAgICBlbHNlIGlmIChwKQorCXsKKwkgIHBhcmVudF93aWR0aCA9 IEZSQU1FX1BJWEVMX1dJRFRIIChwKTsKKwkgIHBhcmVudF9oZWlnaHQgPSBGUkFNRV9QSVhF TF9IRUlHSFQgKHApOworCSAgKnBhcmVudF9kb25lID0gMTsKKwl9CisgICAgICBlbHNlCisJ eworCSAgaWYgKCpwYXJlbnRfZG9uZSA9PSAwKQorCSAgICAvKiBObyB3b3JrYXJlYSBhdmFp bGFibGUuICAqLworCSAgICByZXR1cm4gZGVmYXVsdF92YWx1ZTsKKwkgIGVsc2UgaWYgKCpw YXJlbnRfZG9uZSA9PSAtMSkKKwkgICAgeworCSAgICAgIExpc3BfT2JqZWN0IG1vbml0b3Jf YXR0cmlidXRlczsKKwkgICAgICBMaXNwX09iamVjdCB3b3JrYXJlYTsKKwkgICAgICBMaXNw X09iamVjdCBmcmFtZTsKKworCSAgICAgIFhTRVRGUkFNRSAoZnJhbWUsIGYpOworCSAgICAg IG1vbml0b3JfYXR0cmlidXRlcyA9IEZjYXIgKGNhbGwxIChRZGlzcGxheV9tb25pdG9yX2F0 dHJpYnV0ZXNfbGlzdCwgZnJhbWUpKTsKKwkgICAgICBpZiAoTklMUCAobW9uaXRvcl9hdHRy aWJ1dGVzKSkKKwkJeworCQkgIC8qIE5vIG1vbml0b3IgYXR0cmlidXRlcyBhdmFpbGFibGUu ICAqLworCQkgICpwYXJlbnRfZG9uZSA9IDA7CisKKwkJICByZXR1cm4gZGVmYXVsdF92YWx1 ZTsKKwkJfQorCisJICAgICAgd29ya2FyZWEgPSBGY2RyIChGYXNzcSAoUXdvcmthcmVhLCBt b25pdG9yX2F0dHJpYnV0ZXMpKTsKKwkgICAgICBpZiAoTklMUCAod29ya2FyZWEpKQorCQl7 CisJCSAgLyogTm8gd29ya2FyZWEgYXZhaWxhYmxlLiAgKi8KKwkJICAqcGFyZW50X2RvbmUg PSAwOworCisJCSAgcmV0dXJuIGRlZmF1bHRfdmFsdWU7CisJCX0KKworCSAgICAgIC8qIFdv cmthcmVhIGF2YWlsYWJsZS4gICovCisJICAgICAgcGFyZW50X2xlZnQgPSBYSU5UIChGbnRo IChtYWtlX251bWJlciAoMCksIHdvcmthcmVhKSk7CisJICAgICAgcGFyZW50X3RvcCA9IFhJ TlQgKEZudGggKG1ha2VfbnVtYmVyICgxKSwgd29ya2FyZWEpKTsKKwkgICAgICBwYXJlbnRf d2lkdGggPSBYSU5UIChGbnRoIChtYWtlX251bWJlciAoMiksIHdvcmthcmVhKSk7CisJICAg ICAgcGFyZW50X2hlaWdodCA9IFhJTlQgKEZudGggKG1ha2VfbnVtYmVyICgzKSwgd29ya2Fy ZWEpKTsKKwkgICAgICAqcGFyZW50X2RvbmUgPSAxOworCSAgICB9CisJfQorCisgICAgICBp ZiAoKm91dGVyX2RvbmUgPT0gMSkKKwk7CisgICAgICBlbHNlIGlmIChGUkFNRV9VTkRFQ09S QVRFRCAoZikpCisJeworCSAgb3V0ZXJfbWludXNfdGV4dF93aWR0aAorCSAgICA9IEZSQU1F X1BJWEVMX1dJRFRIIChmKSAtIEZSQU1FX1RFWFRfV0lEVEggKGYpOworCSAgb3V0ZXJfbWlu dXNfdGV4dF9oZWlnaHQKKwkgICAgPSBGUkFNRV9QSVhFTF9IRUlHSFQgKGYpIC0gRlJBTUVf VEVYVF9IRUlHSFQgKGYpOworCSAgKm91dGVyX2RvbmUgPSAxOworCX0KKyAgICAgIGVsc2Ug aWYgKCpvdXRlcl9kb25lID09IDApCisJLyogTm8gb3V0ZXIgc2l6ZSBhdmFpbGFibGUuICAq LworCXJldHVybiBkZWZhdWx0X3ZhbHVlOworICAgICAgZWxzZSBpZiAoKm91dGVyX2RvbmUg PT0gLTEpCisJeworCSAgTGlzcF9PYmplY3QgZnJhbWUsIG91dGVyX2VkZ2VzOworCisJICBY U0VURlJBTUUgKGZyYW1lLCBmKTsKKwkgIG91dGVyX2VkZ2VzID0gY2FsbDIgKFFmcmFtZV9l ZGdlcywgZnJhbWUsIFFvdXRlcl9lZGdlcyk7CisKKwkgIGlmICghTklMUCAob3V0ZXJfZWRn ZXMpKQorCSAgICB7CisJICAgICAgb3V0ZXJfbWludXNfdGV4dF93aWR0aAorCQk9IChYSU5U IChGbnRoIChtYWtlX251bWJlciAoMiksIG91dGVyX2VkZ2VzKSkKKwkJICAgLSBYSU5UIChG bnRoIChtYWtlX251bWJlciAoMCksIG91dGVyX2VkZ2VzKSkKKwkJICAgLSBGUkFNRV9URVhU X1dJRFRIIChmKSk7CisJICAgICAgb3V0ZXJfbWludXNfdGV4dF9oZWlnaHQKKwkJPSAoWElO VCAoRm50aCAobWFrZV9udW1iZXIgKDMpLCBvdXRlcl9lZGdlcykpCisJCSAgIC0gWElOVCAo Rm50aCAobWFrZV9udW1iZXIgKDEpLCBvdXRlcl9lZGdlcykpCisJCSAgIC0gRlJBTUVfVEVY VF9IRUlHSFQgKGYpKTsKKwkgICAgfQorCSAgZWxzZQorCSAgICB7CisJICAgICAgLyogSWYg d2UgY2FuJ3QgZ2V0IGFueSBvdXRlciBlZGdlcywgcHJvY2VlZCBhcyBpZiB0aGUgZnJhbWUK KwkJIHdlcmUgdW5kZWNvcmF0ZWQuICAqLworCSAgICAgIG91dGVyX21pbnVzX3RleHRfd2lk dGgKKwkJPSBGUkFNRV9QSVhFTF9XSURUSCAoZikgLSBGUkFNRV9URVhUX1dJRFRIIChmKTsK KwkgICAgICBvdXRlcl9taW51c190ZXh0X2hlaWdodAorCQk9IEZSQU1FX1BJWEVMX0hFSUdI VCAoZikgLSBGUkFNRV9URVhUX0hFSUdIVCAoZik7CisJICAgIH0KKworCSAgKm91dGVyX2Rv bmUgPSAxOworCX0KKworICAgICAgc3dpdGNoICh3aGF0KQorCXsKKwljYXNlIEZSQU1FX0ZM T0FUX1dJRFRIOgorCSAgcmV0dXJuIHBhcmVudF93aWR0aCAqIGRfdmFsIC0gb3V0ZXJfbWlu dXNfdGV4dF93aWR0aDsKKworCWNhc2UgRlJBTUVfRkxPQVRfSEVJR0hUOgorCSAgcmV0dXJu IHBhcmVudF9oZWlnaHQgKiBkX3ZhbCAtIG91dGVyX21pbnVzX3RleHRfaGVpZ2h0OworCisJ Y2FzZSBGUkFNRV9GTE9BVF9MRUZUOgorCSAgeworCSAgICBpbnQgcmVzdF93aWR0aCA9IChw YXJlbnRfd2lkdGgKKwkJCSAgICAgIC0gRlJBTUVfVEVYVF9XSURUSCAoZikKKwkJCSAgICAg IC0gb3V0ZXJfbWludXNfdGV4dF93aWR0aCk7CisKKwkgICAgaWYgKHApCisJICAgICAgcmV0 dXJuIChyZXN0X3dpZHRoIDw9IDAgPyAwIDogZF92YWwgKiByZXN0X3dpZHRoKTsKKwkgICAg ZWxzZQorCSAgICAgIHJldHVybiAocmVzdF93aWR0aCA8PSAwCisJCSAgICAgID8gcGFyZW50 X2xlZnQKKwkJICAgICAgOiBwYXJlbnRfbGVmdCArIGRfdmFsICogcmVzdF93aWR0aCk7CisJ ICB9CisJY2FzZSBGUkFNRV9GTE9BVF9UT1A6CisJICB7CisJICAgIGludCByZXN0X2hlaWdo dCA9IChwYXJlbnRfaGVpZ2h0CisJCQkgICAgICAgLSBGUkFNRV9URVhUX0hFSUdIVCAoZikK KwkJCSAgICAgICAtIG91dGVyX21pbnVzX3RleHRfaGVpZ2h0KTsKKworCSAgICBpZiAocCkK KwkgICAgICByZXR1cm4gKHJlc3RfaGVpZ2h0IDw9IDAgPyAwIDogZF92YWwgKiByZXN0X2hl aWdodCk7CisJICAgIGVsc2UKKwkgICAgICByZXR1cm4gKHJlc3RfaGVpZ2h0IDw9IDAKKwkJ ICAgICAgPyBwYXJlbnRfdG9wCisJCSAgICAgIDogcGFyZW50X3RvcCArIGRfdmFsICogcmVz dF9oZWlnaHQpOworCSAgfQorCWRlZmF1bHQ6CisJICBlbWFjc19hYm9ydCAoKTsKKwl9Cisg ICAgfQorfQorCiAvKiBDaGFuZ2UgdGhlIHBhcmFtZXRlcnMgb2YgZnJhbWUgRiBhcyBzcGVj aWZpZWQgYnkgQUxJU1QuCiAgICBJZiBhIHBhcmFtZXRlciBpcyBub3Qgc3BlY2lhbGx5IHJl Y29nbml6ZWQsIGRvIG5vdGhpbmcgc3BlY2lhbDsKICAgIG90aGVyd2lzZSBjYWxsIHRoZSBg eF9zZXRfLi4uJyBmdW5jdGlvbiBmb3IgdGhhdCBwYXJhbWV0ZXIuCkBAIC0zMzAyLDcgKzM3 MjEsOCBAQCBzdHJ1Y3QgZnJhbWVfcGFybV90YWJsZSB7CiB2b2lkCiB4X3NldF9mcmFtZV9w YXJhbWV0ZXJzIChzdHJ1Y3QgZnJhbWUgKmYsIExpc3BfT2JqZWN0IGFsaXN0KQogewotICBM aXNwX09iamVjdCB0YWlsOworICBMaXNwX09iamVjdCB0YWlsLCBmcmFtZTsKKwoKICAgLyog SWYgYm90aCBvZiB0aGVzZSBwYXJhbWV0ZXJzIGFyZSBwcmVzZW50LCBpdCdzIG1vcmUgZWZm aWNpZW50IHRvCiAgICAgIHNldCB0aGVtIGJvdGggYXQgb25jZS4gIFNvIHdlIHdhaXQgdW50 aWwgd2UndmUgbG9va2VkIGF0IHRoZQpAQCAtMzMyNyw3ICszNzQ3LDkgQEAgc3RydWN0IGZy YW1lX3Bhcm1fdGFibGUgewogI2lmZGVmIEhBVkVfWF9XSU5ET1dTCiAgIGJvb2wgaWNvbl9s ZWZ0X25vX2NoYW5nZSA9IDAsIGljb25fdG9wX25vX2NoYW5nZSA9IDA7CiAjZW5kaWYKKyAg aW50IHBhcmVudF9kb25lID0gLTEsIG91dGVyX2RvbmUgPSAtMTsKCisgIFhTRVRGUkFNRSAo ZnJhbWUsIGYpOwogICBmb3IgKHNpemUgPSAwLCB0YWlsID0gYWxpc3Q7IENPTlNQICh0YWls KTsgdGFpbCA9IFhDRFIgKHRhaWwpKQogICAgIHNpemUrKzsKICAgQ0hFQ0tfTElTVF9FTkQg KHRhaWwsIGFsaXN0KTsKQEAgLTMzODgsNiArMzgxMCw5IEBAIHN0cnVjdCBmcmFtZV9wYXJt X3RhYmxlIHsKIAkgIGVsc2UgaWYgKENPTlNQICh2YWwpICYmIEVRIChYQ0FSICh2YWwpLCBR dGV4dF9waXhlbHMpCiAJCSAgICYmIFJBTkdFRF9JTlRFR0VSUCAoMCwgWENEUiAodmFsKSwg SU5UX01BWCkpCiAJICAgIHdpZHRoID0gWEZBU1RJTlQgKFhDRFIgKHZhbCkpOworCSAgZWxz ZSBpZiAoRkxPQVRQICh2YWwpKQorCSAgICB3aWR0aCA9IGZyYW1lX2Zsb2F0IChmLCB2YWws IEZSQU1FX0ZMT0FUX1dJRFRILCAmcGFyZW50X2RvbmUsCisJCQkJICZvdXRlcl9kb25lLCAt MSk7CiAgICAgICAgIH0KICAgICAgIGVsc2UgaWYgKEVRIChwcm9wLCBRaGVpZ2h0KSkKICAg ICAgICAgewpAQCAtMzM5Niw2ICszODIxLDkgQEAgc3RydWN0IGZyYW1lX3Bhcm1fdGFibGUg ewogCSAgZWxzZSBpZiAoQ09OU1AgKHZhbCkgJiYgRVEgKFhDQVIgKHZhbCksIFF0ZXh0X3Bp eGVscykKIAkJICAgJiYgUkFOR0VEX0lOVEVHRVJQICgwLCBYQ0RSICh2YWwpLCBJTlRfTUFY KSkKIAkgICAgaGVpZ2h0ID0gWEZBU1RJTlQgKFhDRFIgKHZhbCkpOworCSAgZWxzZSBpZiAo RkxPQVRQICh2YWwpKQorCSAgICBoZWlnaHQgPSBmcmFtZV9mbG9hdCAoZiwgdmFsLCBGUkFN RV9GTE9BVF9IRUlHSFQsICZwYXJlbnRfZG9uZSwKKwkJCQkgJm91dGVyX2RvbmUsIC0xKTsK ICAgICAgICAgfQogICAgICAgZWxzZSBpZiAoRVEgKHByb3AsIFF0b3ApKQogCXRvcCA9IHZh bDsKQEAgLTM0NzIsMTA1ICszOTAwLDEwMCBAQCBzdHJ1Y3QgZnJhbWVfcGFybV90YWJsZSB7 CiAgICAgIERvbid0IHNldCB0aGVzZSBwYXJhbWV0ZXJzIHVubGVzcyB0aGV5IGFjdHVhbGx5 IGRpZmZlciBmcm9tIHRoZQogICAgICB3aW5kb3cncyBjdXJyZW50IHBhcmFtZXRlcnM7IHRo ZSB3aW5kb3cgbWF5IG5vdCBhY3R1YWxseSBleGlzdAogICAgICB5ZXQuICAqLwotICB7Ci0g ICAgTGlzcF9PYmplY3QgZnJhbWU7Ci0KLSAgICBYU0VURlJBTUUgKGZyYW1lLCBmKTsKLQot ICAgIGlmICgod2lkdGggIT0gLTEgJiYgd2lkdGggIT0gRlJBTUVfVEVYVF9XSURUSCAoZikp Ci0JfHwgKGhlaWdodCAhPSAtMSAmJiBoZWlnaHQgIT0gRlJBTUVfVEVYVF9IRUlHSFQgKGYp KSkKLSAgICAgIC8qIFdlIGNvdWxkIGNvbnNpZGVyIGNoZWNraW5nIGYtPmFmdGVyX21ha2Vf ZnJhbWUgaGVyZSwgYnV0IEkKLQkgZG9uJ3QgaGF2ZSB0aGUgZmFpbnRlc3QgaWRlYSB3aHkg dGhlIGZvbGxvd2luZyBpcyBuZWVkZWQgYXQKLQkgYWxsLiAgV2l0aCB0aGUgb2xkIHNldHRp bmcgaXQgY2FuIGdldCBhIEhlaXNlbmJ1ZyB3aGVuCi0JIEVtYWNzRnJhbWVSZXNpemUgaW50 ZXJtaXR0ZW50bHkgcHJvdm9rZXMgYSBkZWxheWVkCi0JIGNoYW5nZV9mcmFtZV9zaXplIGlu IHRoZSBtaWRkbGUgb2YgYWRqdXN0X2ZyYW1lX3NpemUuICAqLwotICAgICAgLyoqIAl8fCAo Zi0+Y2FuX3hfc2V0X3dpbmRvd19zaXplICYmIChmLT5uZXdfaGVpZ2h0IHx8IGYtPm5ld193 aWR0aCkpKSAqKi8KLSAgICAgIGFkanVzdF9mcmFtZV9zaXplIChmLCB3aWR0aCwgaGVpZ2h0 LCAxLCAwLCBReF9zZXRfZnJhbWVfcGFyYW1ldGVycyk7Ci0KLSAgICBpZiAoKCFOSUxQIChs ZWZ0KSB8fCAhTklMUCAodG9wKSkKLQkmJiAhIChsZWZ0X25vX2NoYW5nZSAmJiB0b3Bfbm9f Y2hhbmdlKQotCSYmICEgKE5VTUJFUlAgKGxlZnQpICYmIFhJTlQgKGxlZnQpID09IGYtPmxl ZnRfcG9zCi0JICAgICAgJiYgTlVNQkVSUCAodG9wKSAmJiBYSU5UICh0b3ApID09IGYtPnRv cF9wb3MpKQotICAgICAgewotCWludCBsZWZ0cG9zID0gMDsKLQlpbnQgdG9wcG9zID0gMDsK KyAgaWYgKCh3aWR0aCAhPSAtMSAmJiB3aWR0aCAhPSBGUkFNRV9URVhUX1dJRFRIIChmKSkK KyAgICAgIHx8IChoZWlnaHQgIT0gLTEgJiYgaGVpZ2h0ICE9IEZSQU1FX1RFWFRfSEVJR0hU IChmKSkpCisgICAgLyogV2UgY291bGQgY29uc2lkZXIgY2hlY2tpbmcgZi0+YWZ0ZXJfbWFr ZV9mcmFtZSBoZXJlLCBidXQgSQorICAgICAgIGRvbid0IGhhdmUgdGhlIGZhaW50ZXN0IGlk ZWEgd2h5IHRoZSBmb2xsb3dpbmcgaXMgbmVlZGVkIGF0CisgICAgICAgYWxsLiAgV2l0aCB0 aGUgb2xkIHNldHRpbmcgaXQgY2FuIGdldCBhIEhlaXNlbmJ1ZyB3aGVuCisgICAgICAgRW1h Y3NGcmFtZVJlc2l6ZSBpbnRlcm1pdHRlbnRseSBwcm92b2tlcyBhIGRlbGF5ZWQKKyAgICAg ICBjaGFuZ2VfZnJhbWVfc2l6ZSBpbiB0aGUgbWlkZGxlIG9mIGFkanVzdF9mcmFtZV9zaXpl LiAgKi8KKyAgICAvKiogCXx8IChmLT5jYW5feF9zZXRfd2luZG93X3NpemUgJiYgKGYtPm5l d19oZWlnaHQgfHwgZi0+bmV3X3dpZHRoKSkpICoqLworICAgIGFkanVzdF9mcmFtZV9zaXpl IChmLCB3aWR0aCwgaGVpZ2h0LCAxLCAwLCBReF9zZXRfZnJhbWVfcGFyYW1ldGVycyk7CisK KyAgaWYgKCghTklMUCAobGVmdCkgfHwgIU5JTFAgKHRvcCkpCisgICAgICAmJiAhIChsZWZ0 X25vX2NoYW5nZSAmJiB0b3Bfbm9fY2hhbmdlKQorICAgICAgJiYgISAoTlVNQkVSUCAobGVm dCkgJiYgWElOVCAobGVmdCkgPT0gZi0+bGVmdF9wb3MKKwkgICAgJiYgTlVNQkVSUCAodG9w KSAmJiBYSU5UICh0b3ApID09IGYtPnRvcF9wb3MpKQorICAgIHsKKyAgICAgIGludCBsZWZ0 cG9zID0gMDsKKyAgICAgIGludCB0b3Bwb3MgPSAwOwoKLQkvKiBSZWNvcmQgdGhlIHNpZ25z LiAgKi8KLQlmLT5zaXplX2hpbnRfZmxhZ3MgJj0gfiAoWE5lZ2F0aXZlIHwgWU5lZ2F0aXZl KTsKLQlpZiAoRVEgKGxlZnQsIFFtaW51cykpCi0JICBmLT5zaXplX2hpbnRfZmxhZ3MgfD0g WE5lZ2F0aXZlOwotCWVsc2UgaWYgKFRZUEVfUkFOR0VEX0lOVEVHRVJQIChpbnQsIGxlZnQp KQotCSAgewotCSAgICBsZWZ0cG9zID0gWElOVCAobGVmdCk7Ci0JICAgIGlmIChsZWZ0cG9z IDwgMCkKLQkgICAgICBmLT5zaXplX2hpbnRfZmxhZ3MgfD0gWE5lZ2F0aXZlOwotCSAgfQot CWVsc2UgaWYgKENPTlNQIChsZWZ0KSAmJiBFUSAoWENBUiAobGVmdCksIFFtaW51cykKLQkJ ICYmIENPTlNQIChYQ0RSIChsZWZ0KSkKLQkJICYmIFJBTkdFRF9JTlRFR0VSUCAoLUlOVF9N QVgsIFhDQVIgKFhDRFIgKGxlZnQpKSwgSU5UX01BWCkpCi0JICB7Ci0JICAgIGxlZnRwb3Mg PSAtIFhJTlQgKFhDQVIgKFhDRFIgKGxlZnQpKSk7CisgICAgICAvKiBSZWNvcmQgdGhlIHNp Z25zLiAgKi8KKyAgICAgIGYtPnNpemVfaGludF9mbGFncyAmPSB+IChYTmVnYXRpdmUgfCBZ TmVnYXRpdmUpOworICAgICAgaWYgKEVRIChsZWZ0LCBRbWludXMpKQorCWYtPnNpemVfaGlu dF9mbGFncyB8PSBYTmVnYXRpdmU7CisgICAgICBlbHNlIGlmIChUWVBFX1JBTkdFRF9JTlRF R0VSUCAoaW50LCBsZWZ0KSkKKwl7CisJICBsZWZ0cG9zID0gWElOVCAobGVmdCk7CisJICBp ZiAobGVmdHBvcyA8IDApCiAJICAgIGYtPnNpemVfaGludF9mbGFncyB8PSBYTmVnYXRpdmU7 Ci0JICB9Ci0JZWxzZSBpZiAoQ09OU1AgKGxlZnQpICYmIEVRIChYQ0FSIChsZWZ0KSwgUXBs dXMpCi0JCSAmJiBDT05TUCAoWENEUiAobGVmdCkpCi0JCSAmJiBUWVBFX1JBTkdFRF9JTlRF R0VSUCAoaW50LCBYQ0FSIChYQ0RSIChsZWZ0KSkpKQotCSAgewotCSAgICBsZWZ0cG9zID0g WElOVCAoWENBUiAoWENEUiAobGVmdCkpKTsKLQkgIH0KKwl9CisgICAgICBlbHNlIGlmIChD T05TUCAobGVmdCkgJiYgRVEgKFhDQVIgKGxlZnQpLCBRbWludXMpCisJICAgICAgICYmIENP TlNQIChYQ0RSIChsZWZ0KSkKKwkgICAgICAgJiYgUkFOR0VEX0lOVEVHRVJQICgtSU5UX01B WCwgWENBUiAoWENEUiAobGVmdCkpLCBJTlRfTUFYKSkKKwl7CisJICBsZWZ0cG9zID0gLSBY SU5UIChYQ0FSIChYQ0RSIChsZWZ0KSkpOworCSAgZi0+c2l6ZV9oaW50X2ZsYWdzIHw9IFhO ZWdhdGl2ZTsKKwl9CisgICAgICBlbHNlIGlmIChDT05TUCAobGVmdCkgJiYgRVEgKFhDQVIg KGxlZnQpLCBRcGx1cykKKwkgICAgICAgJiYgQ09OU1AgKFhDRFIgKGxlZnQpKQorCSAgICAg ICAmJiBUWVBFX1JBTkdFRF9JTlRFR0VSUCAoaW50LCBYQ0FSIChYQ0RSIChsZWZ0KSkpKQor CWxlZnRwb3MgPSBYSU5UIChYQ0FSIChYQ0RSIChsZWZ0KSkpOworICAgICAgZWxzZSBpZiAo RkxPQVRQIChsZWZ0KSkKKwlsZWZ0cG9zID0gZnJhbWVfZmxvYXQgKGYsIGxlZnQsIEZSQU1F X0ZMT0FUX0xFRlQsICZwYXJlbnRfZG9uZSwKKwkJCSAgICAgICAmb3V0ZXJfZG9uZSwgMCk7 CgotCWlmIChFUSAodG9wLCBRbWludXMpKQotCSAgZi0+c2l6ZV9oaW50X2ZsYWdzIHw9IFlO ZWdhdGl2ZTsKLQllbHNlIGlmIChUWVBFX1JBTkdFRF9JTlRFR0VSUCAoaW50LCB0b3ApKQot CSAgewotCSAgICB0b3Bwb3MgPSBYSU5UICh0b3ApOwotCSAgICBpZiAodG9wcG9zIDwgMCkK LQkgICAgICBmLT5zaXplX2hpbnRfZmxhZ3MgfD0gWU5lZ2F0aXZlOwotCSAgfQotCWVsc2Ug aWYgKENPTlNQICh0b3ApICYmIEVRIChYQ0FSICh0b3ApLCBRbWludXMpCi0JCSAmJiBDT05T UCAoWENEUiAodG9wKSkKLQkJICYmIFJBTkdFRF9JTlRFR0VSUCAoLUlOVF9NQVgsIFhDQVIg KFhDRFIgKHRvcCkpLCBJTlRfTUFYKSkKLQkgIHsKLQkgICAgdG9wcG9zID0gLSBYSU5UIChY Q0FSIChYQ0RSICh0b3ApKSk7CisgICAgICBpZiAoRVEgKHRvcCwgUW1pbnVzKSkKKwlmLT5z aXplX2hpbnRfZmxhZ3MgfD0gWU5lZ2F0aXZlOworICAgICAgZWxzZSBpZiAoVFlQRV9SQU5H RURfSU5URUdFUlAgKGludCwgdG9wKSkKKwl7CisJICB0b3Bwb3MgPSBYSU5UICh0b3ApOwor CSAgaWYgKHRvcHBvcyA8IDApCiAJICAgIGYtPnNpemVfaGludF9mbGFncyB8PSBZTmVnYXRp dmU7Ci0JICB9Ci0JZWxzZSBpZiAoQ09OU1AgKHRvcCkgJiYgRVEgKFhDQVIgKHRvcCksIFFw bHVzKQotCQkgJiYgQ09OU1AgKFhDRFIgKHRvcCkpCi0JCSAmJiBUWVBFX1JBTkdFRF9JTlRF R0VSUCAoaW50LCBYQ0FSIChYQ0RSICh0b3ApKSkpCi0JICB7Ci0JICAgIHRvcHBvcyA9IFhJ TlQgKFhDQVIgKFhDRFIgKHRvcCkpKTsKLQkgIH0KLQorCX0KKyAgICAgIGVsc2UgaWYgKENP TlNQICh0b3ApICYmIEVRIChYQ0FSICh0b3ApLCBRbWludXMpCisJICAgICAgICYmIENPTlNQ IChYQ0RSICh0b3ApKQorCSAgICAgICAmJiBSQU5HRURfSU5URUdFUlAgKC1JTlRfTUFYLCBY Q0FSIChYQ0RSICh0b3ApKSwgSU5UX01BWCkpCisJeworCSAgdG9wcG9zID0gLSBYSU5UIChY Q0FSIChYQ0RSICh0b3ApKSk7CisJICBmLT5zaXplX2hpbnRfZmxhZ3MgfD0gWU5lZ2F0aXZl OworCX0KKyAgICAgIGVsc2UgaWYgKENPTlNQICh0b3ApICYmIEVRIChYQ0FSICh0b3ApLCBR cGx1cykKKwkgICAgICAgJiYgQ09OU1AgKFhDRFIgKHRvcCkpCisJICAgICAgICYmIFRZUEVf UkFOR0VEX0lOVEVHRVJQIChpbnQsIFhDQVIgKFhDRFIgKHRvcCkpKSkKKwl0b3Bwb3MgPSBY SU5UIChYQ0FSIChYQ0RSICh0b3ApKSk7CisgICAgICBlbHNlIGlmIChGTE9BVFAgKHRvcCkp CisJdG9wcG9zID0gZnJhbWVfZmxvYXQgKGYsIHRvcCwgRlJBTUVfRkxPQVRfVE9QLCAmcGFy ZW50X2RvbmUsCisJCQkgICAgICAmb3V0ZXJfZG9uZSwgMCk7CgotCS8qIFN0b3JlIHRoZSBu dW1lcmljIHZhbHVlIG9mIHRoZSBwb3NpdGlvbi4gICovCi0JZi0+dG9wX3BvcyA9IHRvcHBv czsKLQlmLT5sZWZ0X3BvcyA9IGxlZnRwb3M7CisgICAgICAvKiBTdG9yZSB0aGUgbnVtZXJp YyB2YWx1ZSBvZiB0aGUgcG9zaXRpb24uICAqLworICAgICAgZi0+dG9wX3BvcyA9IHRvcHBv czsKKyAgICAgIGYtPmxlZnRfcG9zID0gbGVmdHBvczsKCi0JZi0+d2luX2dyYXZpdHkgPSBO b3J0aFdlc3RHcmF2aXR5OworICAgICAgZi0+d2luX2dyYXZpdHkgPSBOb3J0aFdlc3RHcmF2 aXR5OwoKLQkvKiBBY3R1YWxseSBzZXQgdGhhdCBwb3NpdGlvbiwgYW5kIGNvbnZlcnQgdG8g YWJzb2x1dGUuICAqLwotCXhfc2V0X29mZnNldCAoZiwgbGVmdHBvcywgdG9wcG9zLCAtMSk7 Ci0gICAgICB9CisgICAgICAvKiBBY3R1YWxseSBzZXQgdGhhdCBwb3NpdGlvbiwgYW5kIGNv bnZlcnQgdG8gYWJzb2x1dGUuICAqLworICAgICAgeF9zZXRfb2Zmc2V0IChmLCBsZWZ0cG9z LCB0b3Bwb3MsIC0xKTsKKyAgICB9CgotICAgIGlmIChmdWxsc2NyZWVuX2NoYW5nZSkKLSAg ICAgIHsKLQlMaXNwX09iamVjdCBvbGRfdmFsdWUgPSBnZXRfZnJhbWVfcGFyYW0gKGYsIFFm dWxsc2NyZWVuKTsKKyAgaWYgKGZ1bGxzY3JlZW5fY2hhbmdlKQorICAgIHsKKyAgICAgIExp c3BfT2JqZWN0IG9sZF92YWx1ZSA9IGdldF9mcmFtZV9wYXJhbSAoZiwgUWZ1bGxzY3JlZW4p OwoKLQlmcmFtZV9zaXplX2hpc3RvcnlfYWRkCi0JICAoZiwgUXhfc2V0X2Z1bGxzY3JlZW4s IDAsIDAsIGxpc3QyIChvbGRfdmFsdWUsIGZ1bGxzY3JlZW4pKTsKKyAgICAgIGZyYW1lX3Np emVfaGlzdG9yeV9hZGQKKwkoZiwgUXhfc2V0X2Z1bGxzY3JlZW4sIDAsIDAsIGxpc3QyIChv bGRfdmFsdWUsIGZ1bGxzY3JlZW4pKTsKCi0Jc3RvcmVfZnJhbWVfcGFyYW0gKGYsIFFmdWxs c2NyZWVuLCBmdWxsc2NyZWVuKTsKLQlpZiAoIUVRIChmdWxsc2NyZWVuLCBvbGRfdmFsdWUp KQotCSAgeF9zZXRfZnVsbHNjcmVlbiAoZiwgZnVsbHNjcmVlbiwgb2xkX3ZhbHVlKTsKLSAg ICAgIH0KKyAgICAgIHN0b3JlX2ZyYW1lX3BhcmFtIChmLCBRZnVsbHNjcmVlbiwgZnVsbHNj cmVlbik7CisgICAgICBpZiAoIUVRIChmdWxsc2NyZWVuLCBvbGRfdmFsdWUpKQorCXhfc2V0 X2Z1bGxzY3JlZW4gKGYsIGZ1bGxzY3JlZW4sIG9sZF92YWx1ZSk7CisgICAgfQoKCiAjaWZk ZWYgSEFWRV9YX1dJTkRPV1MKLSAgICBpZiAoKCFOSUxQIChpY29uX2xlZnQpIHx8ICFOSUxQ IChpY29uX3RvcCkpCi0JJiYgISAoaWNvbl9sZWZ0X25vX2NoYW5nZSAmJiBpY29uX3RvcF9u b19jaGFuZ2UpKQotICAgICAgeF93bV9zZXRfaWNvbl9wb3NpdGlvbiAoZiwgWElOVCAoaWNv bl9sZWZ0KSwgWElOVCAoaWNvbl90b3ApKTsKKyAgaWYgKCghTklMUCAoaWNvbl9sZWZ0KSB8 fCAhTklMUCAoaWNvbl90b3ApKQorICAgICAgJiYgISAoaWNvbl9sZWZ0X25vX2NoYW5nZSAm JiBpY29uX3RvcF9ub19jaGFuZ2UpKQorICAgIHhfd21fc2V0X2ljb25fcG9zaXRpb24gKGYs IFhJTlQgKGljb25fbGVmdCksIFhJTlQgKGljb25fdG9wKSk7CiAjZW5kaWYgLyogSEFWRV9Y X1dJTkRPV1MgKi8KLSAgfQoKICAgU0FGRV9GUkVFICgpOwogfQpAQCAtMzk5MCw3ICs0NDEz LDYgQEAgc3RydWN0IGZyYW1lX3Bhcm1fdGFibGUgewogICAgICAgYWRqdXN0X2ZyYW1lX2ds eXBocyAoZik7CiAgICAgICBTRVRfRlJBTUVfR0FSQkFHRUQgKGYpOwogICAgIH0KLQogfQoK IHZvaWQKQEAgLTQyMDQsNiArNDYyNiwyMiBAQCBzdHJ1Y3QgZnJhbWVfcGFybV90YWJsZSB7 CiAgIHJldHVybjsKIH0KCisKKy8qKgorICogeF9zZXRfbm9fc3BlY2lhbF9nbHlwaHM6Cisg KgorICogU2V0IGZyYW1lIEYncyBgbm8tc3BlY2lhbC1nbHlwaHMnIHBhcmFtZXRlciB3aGlj aCwgaWYgbm9uLW5pbCwKKyAqIHN1cHByZXNzZXMgdGhlIGRpc3BsYXkgb2YgdHJ1bmNhdGlv biBhbmQgY29udGludWF0aW9uIGdseXBocworICogb3V0c2lkZSBmcmluZ2VzLgorICovCit2 b2lkCit4X3NldF9ub19zcGVjaWFsX2dseXBocyAoc3RydWN0IGZyYW1lICpmLCBMaXNwX09i amVjdCBuZXdfdmFsdWUsIExpc3BfT2JqZWN0IG9sZF92YWx1ZSkKK3sKKyAgaWYgKCFFUSAo bmV3X3ZhbHVlLCBvbGRfdmFsdWUpKQorICAgIEZSQU1FX05PX1NQRUNJQUxfR0xZUEhTIChm KSA9ICFOSUxQIChuZXdfdmFsdWUpOworfQorCisKICNpZm5kZWYgSEFWRV9OUwoKIC8qIE5v bi16ZXJvIGlmIG1vdXNlIGlzIGdyYWJiZWQgb24gRFBZSU5GTwpAQCAtNDc1OSw2ICs1MTk3 LDcgQEAgb3IgYSBsaXN0ICgtIE4pIG1lYW5pbmcgLU4gcGl4ZWxzIHJlbGF0aXZlIHRvIGJv dHRvbS9yaWdodCBjb3JuZXIuCiAgIExpc3BfT2JqZWN0IGhlaWdodCwgd2lkdGgsIHVzZXJf c2l6ZSwgdG9wLCBsZWZ0LCB1c2VyX3Bvc2l0aW9uOwogICBsb25nIHdpbmRvd19wcm9tcHRp bmcgPSAwOwogICBEaXNwbGF5X0luZm8gKmRweWluZm8gPSBGUkFNRV9ESVNQTEFZX0lORk8g KGYpOworICBpbnQgcGFyZW50X2RvbmUgPSAtMSwgb3V0ZXJfZG9uZSA9IC0xOwoKICAgLyog RGVmYXVsdCB2YWx1ZXMgaWYgd2UgZmFsbCB0aHJvdWdoLgogICAgICBBY3R1YWxseSwgaWYg dGhhdCBoYXBwZW5zIHdlIHNob3VsZCBnZXQKQEAgLTQ4MjMsNiArNTI2MiwyMSBAQCBvciBh IGxpc3QgKC0gTikgbWVhbmluZyAtTiBwaXhlbHMgcmVsYXRpdmUgdG8gYm90dG9tL3JpZ2h0 IGNvcm5lci4KIAkgICAgICBmLT5pbmhpYml0X2hvcml6b250YWxfcmVzaXplID0gdHJ1ZTsK IAkgICAgICAqeF93aWR0aCA9IFhJTlQgKFhDRFIgKHdpZHRoKSk7CiAJICAgIH0KKwkgIGVs c2UgaWYgKEZMT0FUUCAod2lkdGgpKQorCSAgICB7CisJICAgICAgZG91YmxlIGRfd2lkdGgg PSBYRkxPQVRfREFUQSAod2lkdGgpOworCisJICAgICAgaWYgKGRfd2lkdGggPCAwLjAgfHwg ZF93aWR0aCA+IDEuMCkKKwkJeHNpZ25hbDEgKFFhcmdzX291dF9vZl9yYW5nZSwgd2lkdGgp OworCSAgICAgIGVsc2UKKwkJeworCQkgIGludCBuZXdfd2lkdGggPSBmcmFtZV9mbG9hdCAo Ziwgd2lkdGgsIEZSQU1FX0ZMT0FUX1dJRFRILAorCQkJCQkgICAgICAgJnBhcmVudF9kb25l LCAmb3V0ZXJfZG9uZSwgLTEpOworCisJCSAgaWYgKG5ld193aWR0aCA+IC0xKQorCQkgICAg U0VUX0ZSQU1FX1dJRFRIIChmLCBuZXdfd2lkdGgpOworCQl9CisJICAgIH0KIAkgIGVsc2UK IAkgICAgewogCSAgICAgIENIRUNLX05VTUJFUiAod2lkdGgpOwpAQCAtNDg0NSw2ICs1Mjk5 LDIxIEBAIG9yIGEgbGlzdCAoLSBOKSBtZWFuaW5nIC1OIHBpeGVscyByZWxhdGl2ZSB0byBi b3R0b20vcmlnaHQgY29ybmVyLgogCSAgICAgIGYtPmluaGliaXRfdmVydGljYWxfcmVzaXpl ID0gdHJ1ZTsKIAkgICAgICAqeF9oZWlnaHQgPSBYSU5UIChYQ0RSIChoZWlnaHQpKTsKIAkg ICAgfQorCSAgZWxzZSBpZiAoRkxPQVRQIChoZWlnaHQpKQorCSAgICB7CisJICAgICAgZG91 YmxlIGRfaGVpZ2h0ID0gWEZMT0FUX0RBVEEgKGhlaWdodCk7CisKKwkgICAgICBpZiAoZF9o ZWlnaHQgPCAwLjAgfHwgZF9oZWlnaHQgPiAxLjApCisJCXhzaWduYWwxIChRYXJnc19vdXRf b2ZfcmFuZ2UsIGhlaWdodCk7CisJICAgICAgZWxzZQorCQl7CisJCSAgaW50IG5ld19oZWln aHQgPSBmcmFtZV9mbG9hdCAoZiwgaGVpZ2h0LCBGUkFNRV9GTE9BVF9IRUlHSFQsCisJCQkJ CQkmcGFyZW50X2RvbmUsICZvdXRlcl9kb25lLCAtMSk7CisKKwkJICBpZiAobmV3X2hlaWdo dCA+IC0xKQorCQkgICAgU0VUX0ZSQU1FX0hFSUdIVCAoZiwgbmV3X2hlaWdodCk7CisJCX0K KwkgICAgfQogCSAgZWxzZQogCSAgICB7CiAJICAgICAgQ0hFQ0tfTlVNQkVSIChoZWlnaHQp OwpAQCAtNDg4NSw2ICs1MzU0LDkgQEAgb3IgYSBsaXN0ICgtIE4pIG1lYW5pbmcgLU4gcGl4 ZWxzIHJlbGF0aXZlIHRvIGJvdHRvbS9yaWdodCBjb3JuZXIuCiAJewogCSAgZi0+dG9wX3Bv cyA9IFhJTlQgKFhDQVIgKFhDRFIgKHRvcCkpKTsKIAl9CisgICAgICBlbHNlIGlmIChGTE9B VFAgKHRvcCkpCisJZi0+dG9wX3BvcyA9IGZyYW1lX2Zsb2F0IChmLCB0b3AsIEZSQU1FX0ZM T0FUX1RPUCwgJnBhcmVudF9kb25lLAorCQkJCSAgJm91dGVyX2RvbmUsIDApOwogICAgICAg ZWxzZSBpZiAoRVEgKHRvcCwgUXVuYm91bmQpKQogCWYtPnRvcF9wb3MgPSAwOwogICAgICAg ZWxzZQpAQCAtNDkxMyw2ICs1Mzg1LDkgQEAgb3IgYSBsaXN0ICgtIE4pIG1lYW5pbmcgLU4g cGl4ZWxzIHJlbGF0aXZlIHRvIGJvdHRvbS9yaWdodCBjb3JuZXIuCiAJewogCSAgZi0+bGVm dF9wb3MgPSBYSU5UIChYQ0FSIChYQ0RSIChsZWZ0KSkpOwogCX0KKyAgICAgIGVsc2UgaWYg KEZMT0FUUCAobGVmdCkpCisJZi0+bGVmdF9wb3MgPSBmcmFtZV9mbG9hdCAoZiwgdG9wLCBG UkFNRV9GTE9BVF9MRUZULCAmcGFyZW50X2RvbmUsCisJCQkJICAgJm91dGVyX2RvbmUsIDAp OwogICAgICAgZWxzZSBpZiAoRVEgKGxlZnQsIFF1bmJvdW5kKSkKIAlmLT5sZWZ0X3BvcyA9 IDA7CiAgICAgICBlbHNlCkBAIC01MDcxLDEyICs1NTQ2LDE0IEBAIG9yIGEgbGlzdCAoLSBO KSBtZWFuaW5nIC1OIHBpeGVscyByZWxhdGl2ZSB0byBib3R0b20vcmlnaHQgY29ybmVyLgog ICBERUZTWU0gKFFmcmFtZXAsICJmcmFtZXAiKTsKICAgREVGU1lNIChRZnJhbWVfbGl2ZV9w LCAiZnJhbWUtbGl2ZS1wIik7CiAgIERFRlNZTSAoUWZyYW1lX3dpbmRvd3NfbWluX3NpemUs ICJmcmFtZS13aW5kb3dzLW1pbi1zaXplIik7CisgIERFRlNZTSAoUWRpc3BsYXlfbW9uaXRv cl9hdHRyaWJ1dGVzX2xpc3QsICJkaXNwbGF5LW1vbml0b3ItYXR0cmlidXRlcy1saXN0Iik7 CiAgIERFRlNZTSAoUXdpbmRvd19fcGl4ZWxfdG9fdG90YWwsICJ3aW5kb3ctLXBpeGVsLXRv LXRvdGFsIik7CiAgIERFRlNZTSAoUWV4cGxpY2l0X25hbWUsICJleHBsaWNpdC1uYW1lIik7 CiAgIERFRlNZTSAoUWhlaWdodCwgImhlaWdodCIpOwogICBERUZTWU0gKFFpY29uLCAiaWNv biIpOwogICBERUZTWU0gKFFtaW5pYnVmZmVyLCAibWluaWJ1ZmZlciIpOwogICBERUZTWU0g KFF1bmRlY29yYXRlZCwgInVuZGVjb3JhdGVkIik7CisgIERFRlNZTSAoUW5vX3NwZWNpYWxf Z2x5cGhzLCAibm8tc3BlY2lhbC1nbHlwaHMiKTsKICAgREVGU1lNIChRcGFyZW50X2ZyYW1l LCAicGFyZW50LWZyYW1lIik7CiAgIERFRlNZTSAoUXNraXBfdGFza2JhciwgInNraXAtdGFz a2JhciIpOwogICBERUZTWU0gKFFub19mb2N1c19vbl9tYXAsICJuby1mb2N1cy1vbi1tYXAi KTsKQEAgLTUxMjksNiArNTYwNiw3IEBAIG9yIGEgbGlzdCAoLSBOKSBtZWFuaW5nIC1OIHBp eGVscyByZWxhdGl2ZSB0byBib3R0b20vcmlnaHQgY29ybmVyLgogICBERUZTWU0gKFFmcmFt ZXMsICJmcmFtZXMiKTsKICAgREVGU1lNIChRc291cmNlLCAic291cmNlIik7CgorICBERUZT WU0gKFFmcmFtZV9lZGdlcywgImZyYW1lLWVkZ2VzIik7CiAgIERFRlNZTSAoUW91dGVyX2Vk Z2VzLCAib3V0ZXItZWRnZXMiKTsKICAgREVGU1lNIChRb3V0ZXJfcG9zaXRpb24sICJvdXRl ci1wb3NpdGlvbiIpOwogICBERUZTWU0gKFFvdXRlcl9zaXplLCAib3V0ZXItc2l6ZSIpOwpA QCAtNTIyMCw2ICs1Njk4LDExIEBAIG9yIGEgbGlzdCAoLSBOKSBtZWFuaW5nIC1OIHBpeGVs cyByZWxhdGl2ZSB0byBib3R0b20vcmlnaHQgY29ybmVyLgogICBERUZTWU0gKFFtaW5fd2lk dGgsICJtaW4td2lkdGgiKTsKICAgREVGU1lNIChRbWluX2hlaWdodCwgIm1pbi1oZWlnaHQi KTsKICAgREVGU1lNIChRbW91c2Vfd2hlZWxfZnJhbWUsICJtb3VzZS13aGVlbC1mcmFtZSIp OworICBERUZTWU0gKFFrZWVwX3JhdGlvLCAia2VlcC1yYXRpbyIpOworICBERUZTWU0gKFF3 aWR0aF9vbmx5LCAid2lkdGgtb25seSIpOworICBERUZTWU0gKFFoZWlnaHRfb25seSwgImhl aWdodC1vbmx5Iik7CisgIERFRlNZTSAoUWxlZnRfb25seSwgImxlZnQtb25seSIpOworICBE RUZTWU0gKFF0b3Bfb25seSwgInRvcC1vbmx5Iik7CgogICB7CiAgICAgaW50IGk7CkBAIC01 NTY0LDggKzYwNDcsOCBAQCBUaGlzIHZhcmlhYmxlIGlzIGVmZmVjdGl2ZSBvbmx5IHdpdGgg dGhlIFggdG9vbGtpdCAoYW5kIHRoZXJlIG9ubHkgd2hlbgogICBkZWZzdWJyICgmU21vZGlm eV9mcmFtZV9wYXJhbWV0ZXJzKTsKICAgZGVmc3ViciAoJlNmcmFtZV9jaGFyX2hlaWdodCk7 CiAgIGRlZnN1YnIgKCZTZnJhbWVfY2hhcl93aWR0aCk7Ci0gIGRlZnN1YnIgKCZTZnJhbWVf cGl4ZWxfaGVpZ2h0KTsKLSAgZGVmc3ViciAoJlNmcmFtZV9waXhlbF93aWR0aCk7CisgIGRl ZnN1YnIgKCZTZnJhbWVfbmF0aXZlX2hlaWdodCk7CisgIGRlZnN1YnIgKCZTZnJhbWVfbmF0 aXZlX3dpZHRoKTsKICAgZGVmc3ViciAoJlNmcmFtZV90ZXh0X2NvbHMpOwogICBkZWZzdWJy ICgmU2ZyYW1lX3RleHRfbGluZXMpOwogICBkZWZzdWJyICgmU2ZyYW1lX3RvdGFsX2NvbHMp OwpAQCAtNTU3NSw3ICs2MDU4LDcgQEAgVGhpcyB2YXJpYWJsZSBpcyBlZmZlY3RpdmUgb25s eSB3aXRoIHRoZSBYIHRvb2xraXQgKGFuZCB0aGVyZSBvbmx5IHdoZW4KICAgZGVmc3ViciAo JlNzY3JvbGxfYmFyX3dpZHRoKTsKICAgZGVmc3ViciAoJlNzY3JvbGxfYmFyX2hlaWdodCk7 CiAgIGRlZnN1YnIgKCZTZnJpbmdlX3dpZHRoKTsKLSAgZGVmc3ViciAoJlNib3JkZXJfd2lk dGgpOworICBkZWZzdWJyICgmU2ZyYW1lX2ludGVybmFsX2JvcmRlcl93aWR0aCk7CiAgIGRl ZnN1YnIgKCZTcmlnaHRfZGl2aWRlcl93aWR0aCk7CiAgIGRlZnN1YnIgKCZTYm90dG9tX2Rp dmlkZXJfd2lkdGgpOwogICBkZWZzdWJyICgmU3Rvb2xfYmFyX3BpeGVsX3dpZHRoKTsKZGlm ZiAtLWdpdCBhL3NyYy9mcmFtZS5oIGIvc3JjL2ZyYW1lLmgKaW5kZXggNGFhN2MzNC4uMmZl YjA5YiAxMDA2NDQKLS0tIGEvc3JjL2ZyYW1lLmgKKysrIGIvc3JjL2ZyYW1lLmgKQEAgLTUy LDYgKzUyLDE5IEBAIGVudW0gel9ncm91cAogICB6X2dyb3VwX2JlbG93LAogICB6X2dyb3Vw X2Fib3ZlX3N1c3BlbmRlZCwKIH07CisKK2VudW0gaW50ZXJuYWxfYm9yZGVyX3BhcnQKKyAg eworICAgSU5URVJOQUxfQk9SREVSX05PTkUsCisgICBJTlRFUk5BTF9CT1JERVJfTEVGVF9F REdFLAorICAgSU5URVJOQUxfQk9SREVSX1RPUF9MRUZUX0NPUk5FUiwKKyAgIElOVEVSTkFM X0JPUkRFUl9UT1BfRURHRSwKKyAgIElOVEVSTkFMX0JPUkRFUl9UT1BfUklHSFRfQ09STkVS LAorICAgSU5URVJOQUxfQk9SREVSX1JJR0hUX0VER0UsCisgICBJTlRFUk5BTF9CT1JERVJf Qk9UVE9NX1JJR0hUX0NPUk5FUiwKKyAgIElOVEVSTkFMX0JPUkRFUl9CT1RUT01fRURHRSwK KyAgIElOVEVSTkFMX0JPUkRFUl9CT1RUT01fTEVGVF9DT1JORVIsCisgIH07CiAjZW5kaWYg LyogSEFWRV9XSU5ET1dfU1lTVEVNICovCgogLyogVGhlIHN0cnVjdHVyZSByZXByZXNlbnRp bmcgYSBmcmFtZS4gICovCkBAIC0zNTQsNyArMzY3LDExIEBAIHN0cnVjdCBmcmFtZQoKICAg LyogVGhlIHotZ3JvdXAgdGhpcyBmcmFtZSdzIHdpbmRvdyBiZWxvbmdzIHRvLiAqLwogICBF TlVNX0JGICh6X2dyb3VwKSB6X2dyb3VwIDogMjsKLSNlbmRpZiAvKiBIQVZFX1dJTkRPV19T WVNURU0gYW5kIG5vdCBIQVZFX05TICovCisKKyAgLyogTm9uLXplcm8gaWYgZGlzcGxheSBv ZiB0cnVuY2F0aW9uIGFuZCBjb250aW51YXRpb24gZ2x5cGhzIG91dHNpZGUKKyAgICAgdGhl IGZyaW5nZXMgaXMgc3VwcHJlc3NlZC4gICovCisgIGJvb2xfYmYgbm9fc3BlY2lhbF9nbHlw aHMgOiAxOworI2VuZGlmIC8qIEhBVkVfV0lORE9XX1NZU1RFTSAqLwoKICAgLyogV2hldGhl ciBuZXdfaGVpZ2h0IGFuZCBuZXdfd2lkdGggc2hhbGwgYmUgaW50ZXJwcmV0ZWQKICAgICAg aW4gcGl4ZWxzLiAgKi8KQEAgLTkyOCw2ICs5NDUsNyBAQCBzdHJ1Y3QgZnJhbWUKICNkZWZp bmUgRlJBTUVfU0tJUF9UQVNLQkFSKGYpICgoZiktPnNraXBfdGFza2JhcikKICNkZWZpbmUg RlJBTUVfTk9fRk9DVVNfT05fTUFQKGYpICgoZiktPm5vX2ZvY3VzX29uX21hcCkKICNkZWZp bmUgRlJBTUVfTk9fQUNDRVBUX0ZPQ1VTKGYpICgoZiktPm5vX2FjY2VwdF9mb2N1cykKKyNk ZWZpbmUgRlJBTUVfTk9fU1BFQ0lBTF9HTFlQSFMoZikgKChmKS0+bm9fc3BlY2lhbF9nbHlw aHMpCiAjZGVmaW5lIEZSQU1FX1pfR1JPVVAoZikgKChmKS0+el9ncm91cCkKICNkZWZpbmUg RlJBTUVfWl9HUk9VUF9OT05FKGYpICgoZiktPnpfZ3JvdXAgPT0gel9ncm91cF9ub25lKQog I2RlZmluZSBGUkFNRV9aX0dST1VQX0FCT1ZFKGYpICgoZiktPnpfZ3JvdXAgPT0gel9ncm91 cF9hYm92ZSkKQEAgLTk0MSw2ICs5NTksNyBAQCBzdHJ1Y3QgZnJhbWUKICNkZWZpbmUgRlJB TUVfU0tJUF9UQVNLQkFSKGYpICgodm9pZCkgZiwgMCkKICNkZWZpbmUgRlJBTUVfTk9fRk9D VVNfT05fTUFQKGYpICgodm9pZCkgZiwgMCkKICNkZWZpbmUgRlJBTUVfTk9fQUNDRVBUX0ZP Q1VTKGYpICgodm9pZCkgZiwgMCkKKyNkZWZpbmUgRlJBTUVfTk9fU1BFQ0lBTF9HTFlQSFMo ZikgKCh2b2lkKSBmLCAwKQogI2RlZmluZSBGUkFNRV9aX0dST1VQKGYpICgodm9pZCkgZiwg el9ncm91cF9ub25lKQogI2RlZmluZSBGUkFNRV9aX0dST1VQX05PTkUoZikgKCh2b2lkKSBm LCB0cnVlKQogI2RlZmluZSBGUkFNRV9aX0dST1VQX0FCT1ZFKGYpICgodm9pZCkgZiwgZmFs c2UpCkBAIC0xMjg4LDE5ICsxMzA3LDIwIEBAIGV4dGVybiB2b2lkIGZyYW1lX3NpemVfaGlz dG9yeV9hZGQgKHN0cnVjdCBmcmFtZSAqZiwgTGlzcF9PYmplY3QgZnVuX3N5bWJvbCwKICAg cmV0dXJuIEZSQU1FX0xFRlRfRlJJTkdFX1dJRFRIIChmKSArIEZSQU1FX1JJR0hUX0ZSSU5H RV9XSURUSCAoZik7CiB9CgotLyogUGl4ZWwtd2lkdGggb2YgaW50ZXJuYWwgYm9yZGVyIGxp bmVzICovCisvKiBQaXhlbC13aWR0aCBvZiBpbnRlcm5hbCBib3JkZXIgbGluZXMuICAqLwog SU5MSU5FIGludAogRlJBTUVfSU5URVJOQUxfQk9SREVSX1dJRFRIIChzdHJ1Y3QgZnJhbWUg KmYpCiB7CiAgIHJldHVybiBmcmFtZV9kaW1lbnNpb24gKGYtPmludGVybmFsX2JvcmRlcl93 aWR0aCk7CiB9CgotLyogUGl4ZWwtc2l6ZSBvZiB3aW5kb3cgZGl2aWRlciBsaW5lcyAqLwor LyogUGl4ZWwtc2l6ZSBvZiB3aW5kb3cgZGl2aWRlciBsaW5lcy4gICovCiBJTkxJTkUgaW50 CiBGUkFNRV9SSUdIVF9ESVZJREVSX1dJRFRIIChzdHJ1Y3QgZnJhbWUgKmYpCiB7CiAgIHJl dHVybiBmcmFtZV9kaW1lbnNpb24gKGYtPnJpZ2h0X2RpdmlkZXJfd2lkdGgpOwogfQorCiBJ TkxJTkUgaW50CiBGUkFNRV9CT1RUT01fRElWSURFUl9XSURUSCAoc3RydWN0IGZyYW1lICpm KQogewpAQCAtMTQ5OCw2ICsxNTE4LDcgQEAgZXh0ZXJuIHZvaWQgeF9zZXRfYm90dG9tX2Rp dmlkZXJfd2lkdGggKHN0cnVjdCBmcmFtZSAqLCBMaXNwX09iamVjdCwKIGV4dGVybiBsb25n IHhfZmlndXJlX3dpbmRvd19zaXplIChzdHJ1Y3QgZnJhbWUgKiwgTGlzcF9PYmplY3QsIGJv b2wsIGludCAqLCBpbnQgKik7CgogZXh0ZXJuIHZvaWQgeF9zZXRfYWxwaGEgKHN0cnVjdCBm cmFtZSAqLCBMaXNwX09iamVjdCwgTGlzcF9PYmplY3QpOworZXh0ZXJuIHZvaWQgeF9zZXRf bm9fc3BlY2lhbF9nbHlwaHMgKHN0cnVjdCBmcmFtZSAqLCBMaXNwX09iamVjdCwgTGlzcF9P YmplY3QpOwoKIGV4dGVybiB2b2lkIHZhbGlkYXRlX3hfcmVzb3VyY2VfbmFtZSAodm9pZCk7 CgpAQCAtMTUyMSw2ICsxNTQyLDcgQEAgZXh0ZXJuIHZvaWQgeF9zZXRfd2luZG93X3NpemUg KHN0cnVjdCBmcmFtZSAqZiwgYm9vbCBjaGFuZ2VfZ3Jhdml0eSwKIGV4dGVybiB2b2lkIGZy ZWVfZnJhbWVfbWVudWJhciAoc3RydWN0IGZyYW1lICopOwogZXh0ZXJuIHZvaWQgeF9mcmVl X2ZyYW1lX3Jlc291cmNlcyAoc3RydWN0IGZyYW1lICopOwogZXh0ZXJuIGJvb2wgZnJhbWVf YW5jZXN0b3JfcCAoc3RydWN0IGZyYW1lICphZiwgc3RydWN0IGZyYW1lICpkZik7CitleHRl cm4gZW51bSBpbnRlcm5hbF9ib3JkZXJfcGFydCBmcmFtZV9pbnRlcm5hbF9ib3JkZXJfcGFy dCAoc3RydWN0IGZyYW1lICpmLCBpbnQgeCwgaW50IHkpOwoKICNpZiBkZWZpbmVkIEhBVkVf WF9XSU5ET1dTCiBleHRlcm4gdm9pZCB4X3dtX3NldF9pY29uX3Bvc2l0aW9uIChzdHJ1Y3Qg ZnJhbWUgKiwgaW50LCBpbnQpOwpkaWZmIC0tZ2l0IGEvc3JjL2tleWJvYXJkLmMgYi9zcmMv a2V5Ym9hcmQuYwppbmRleCA1NTQ4NmM2Li5iMjAyZDliIDEwMDY0NAotLS0gYS9zcmMva2V5 Ym9hcmQuYworKysgYi9zcmMva2V5Ym9hcmQuYwpAQCAtNTEyNiw2ICs1MTI2LDE3IEBAIGlu IHRoZSBzYW1lIHN0eWxlIGFzIChjdXJyZW50LXRpbWUpLgogICBTWU1CT0xfSU5ERVggKFFy aWdodG1vc3QpLCBTWU1CT0xfSU5ERVggKFFlbmRfc2Nyb2xsKSwgU1lNQk9MX0lOREVYIChR cmF0aW8pCiB9OwoKKy8qIEFuIGFycmF5IG9mIHN5bWJvbCBpbmRleGVzIG9mIGludGVybmFs IGJvcmRlciBwYXJ0cywgaW5kZXhlZCBieSBhbiBlbnVtCisgICBpbnRlcm5hbF9ib3JkZXJf cGFydCB2YWx1ZS4gIE5vdGUgdGhhdCBRbmlsIGNvcnJlc3BvbmRzIHRvCisgICBpbnRlcm5h bF9ib3JkZXJfcGFydF9ub25lIGFuZCBzaG91bGQgbm90IGFwcGVhciBpbiBMaXNwIGV2ZW50 cy4gICovCitzdGF0aWMgc2hvcnQgY29uc3QgaW50ZXJuYWxfYm9yZGVyX3BhcnRzW10gPSB7 CisgIFNZTUJPTF9JTkRFWCAoUW5pbCksIFNZTUJPTF9JTkRFWCAoUWxlZnRfZWRnZSksCisg IFNZTUJPTF9JTkRFWCAoUXRvcF9sZWZ0X2Nvcm5lciksIFNZTUJPTF9JTkRFWCAoUXRvcF9l ZGdlKSwKKyAgU1lNQk9MX0lOREVYIChRdG9wX3JpZ2h0X2Nvcm5lciksIFNZTUJPTF9JTkRF WCAoUXJpZ2h0X2VkZ2UpLAorICBTWU1CT0xfSU5ERVggKFFib3R0b21fcmlnaHRfY29ybmVy KSwgU1lNQk9MX0lOREVYIChRYm90dG9tX2VkZ2UpLAorICBTWU1CT0xfSU5ERVggKFFib3R0 b21fbGVmdF9jb3JuZXIpCit9OworCiAvKiBBIHZlY3RvciwgaW5kZXhlZCBieSBidXR0b24g bnVtYmVyLCBnaXZpbmcgdGhlIGRvd24tZ29pbmcgbG9jYXRpb24KICAgIG9mIGN1cnJlbnRs eSBkZXByZXNzZWQgYnV0dG9ucywgYm90aCBzY3JvbGwgYmFyIGFuZCBub24tc2Nyb2xsIGJh ci4KCkBAIC01MTYzLDE1ICs1MTc0LDE1IEBAIGluIHRoZSBzYW1lIHN0eWxlIGFzIChjdXJy ZW50LXRpbWUpLgogICBMaXNwX09iamVjdCBleHRyYV9pbmZvID0gUW5pbDsKICAgLyogQ29v cmRpbmF0ZSBwaXhlbCBwb3NpdGlvbnMgdG8gcmV0dXJuLiAgKi8KICAgaW50IHhyZXQgPSAw LCB5cmV0ID0gMDsKLSAgLyogVGhlIHdpbmRvdyB1bmRlciBmcmFtZSBwaXhlbCBjb29yZGlu YXRlcyAoeCx5KSAgKi8KLSAgTGlzcF9PYmplY3Qgd2luZG93ID0gZgorICAvKiBUaGUgd2lu ZG93IG9yIGZyYW1lIHVuZGVyIGZyYW1lIHBpeGVsIGNvb3JkaW5hdGVzICh4LHkpICAqLwor ICBMaXNwX09iamVjdCB3aW5kb3dfb3JfZnJhbWUgPSBmCiAgICAgPyB3aW5kb3dfZnJvbV9j b29yZGluYXRlcyAoZiwgWElOVCAoeCksIFhJTlQgKHkpLCAmcGFydCwgMCkKICAgICA6IFFu aWw7CgotICBpZiAoV0lORE9XUCAod2luZG93KSkKKyAgaWYgKFdJTkRPV1AgKHdpbmRvd19v cl9mcmFtZSkpCiAgICAgewogICAgICAgLyogSXQncyBhIGNsaWNrIGluIHdpbmRvdyBXSU5E T1cgYXQgZnJhbWUgY29vcmRpbmF0ZXMgKFgsWSkgICovCi0gICAgICBzdHJ1Y3Qgd2luZG93 ICp3ID0gWFdJTkRPVyAod2luZG93KTsKKyAgICAgIHN0cnVjdCB3aW5kb3cgKncgPSBYV0lO RE9XICh3aW5kb3dfb3JfZnJhbWUpOwogICAgICAgTGlzcF9PYmplY3Qgc3RyaW5nX2luZm8g PSBRbmlsOwogICAgICAgcHRyZGlmZl90IHRleHRwb3MgPSAwOwogICAgICAgaW50IGNvbCA9 IC0xLCByb3cgPSAtMTsKQEAgLTUzNjAsMTcgKzUzNzEsMzEgQEAgaW4gdGhlIHNhbWUgc3R5 bGUgYXMgKGN1cnJlbnQtdGltZSkuCiAJCQkJCSAgICAgICBtYWtlX251bWJlciAocm93KSks CiAJCQkJCWV4dHJhX2luZm8pKSk7CiAgICAgfQotICBlbHNlIGlmIChmICE9IDApCisKKyNp ZmRlZiBIQVZFX1dJTkRPV19TWVNURU0KKyAgZWxzZSBpZiAoZikKICAgICB7CiAgICAgICAv KiBSZXR1cm4gbW91c2UgcGl4ZWwgY29vcmRpbmF0ZXMgaGVyZS4gICovCi0gICAgICBYU0VU RlJBTUUgKHdpbmRvdywgZik7CisgICAgICBYU0VURlJBTUUgKHdpbmRvd19vcl9mcmFtZSwg Zik7CiAgICAgICB4cmV0ID0gWElOVCAoeCk7CiAgICAgICB5cmV0ID0gWElOVCAoeSk7CisK KyAgICAgIGlmIChGUkFNRV9MSVZFX1AgKGYpCisJICAmJiBGUkFNRV9JTlRFUk5BTF9CT1JE RVJfV0lEVEggKGYpID4gMAorCSAgJiYgIU5JTFAgKGdldF9mcmFtZV9wYXJhbSAoZiwgUWRy YWdfaW50ZXJuYWxfYm9yZGVyKSkpCisJeworCSAgZW51bSBpbnRlcm5hbF9ib3JkZXJfcGFy dCBwYXJ0CisJICAgID0gZnJhbWVfaW50ZXJuYWxfYm9yZGVyX3BhcnQgKGYsIHhyZXQsIHly ZXQpOworCisJICBwb3NuID0gYnVpbHRpbl9saXNwX3N5bWJvbCAoaW50ZXJuYWxfYm9yZGVy X3BhcnRzW3BhcnRdKTsKKwl9CiAgICAgfQorI2VuZGlmCisKICAgZWxzZQotICAgIHdpbmRv dyA9IFFuaWw7CisgICAgd2luZG93X29yX2ZyYW1lID0gUW5pbDsKCi0gIHJldHVybiBGY29u cyAod2luZG93LAorICByZXR1cm4gRmNvbnMgKHdpbmRvd19vcl9mcmFtZSwKIAkJRmNvbnMg KHBvc24sCiAJCSAgICAgICBGY29ucyAoRmNvbnMgKG1ha2VfbnVtYmVyICh4cmV0KSwKIAkJ CQkgICAgIG1ha2VfbnVtYmVyICh5cmV0KSksCkBAIC0xMTE1OCw2ICsxMTE4MywxNyBAQCBz dHJ1Y3QgZXZlbnRfaGVhZAogICBGc2V0IChRaW5wdXRfbWV0aG9kX2V4aXRfb25fZmlyc3Rf Y2hhciwgUW5pbCk7CiAgIEZzZXQgKFFpbnB1dF9tZXRob2RfdXNlX2VjaG9fYXJlYSwgUW5p bCk7CgorICAvKiBTeW1ib2xzIGZvciBkcmFnZ2luZyBpbnRlcm5hbCBib3JkZXJzLiAgKi8K KyAgREVGU1lNIChRZHJhZ19pbnRlcm5hbF9ib3JkZXIsICJkcmFnLWludGVybmFsLWJvcmRl ciIpOworICBERUZTWU0gKFFsZWZ0X2VkZ2UsICJsZWZ0LWVkZ2UiKTsKKyAgREVGU1lNIChR dG9wX2xlZnRfY29ybmVyLCAidG9wLWxlZnQtY29ybmVyIik7CisgIERFRlNZTSAoUXRvcF9l ZGdlLCAidG9wLWVkZ2UiKTsKKyAgREVGU1lNIChRdG9wX3JpZ2h0X2Nvcm5lciwgInRvcC1y aWdodC1jb3JuZXIiKTsKKyAgREVGU1lNIChRcmlnaHRfZWRnZSwgInJpZ2h0LWVkZ2UiKTsK KyAgREVGU1lNIChRYm90dG9tX3JpZ2h0X2Nvcm5lciwgImJvdHRvbS1yaWdodC1jb3JuZXIi KTsKKyAgREVGU1lNIChRYm90dG9tX2VkZ2UsICJib3R0b20tZWRnZSIpOworICBERUZTWU0g KFFib3R0b21fbGVmdF9jb3JuZXIsICJib3R0b20tbGVmdC1jb3JuZXIiKTsKKwogICAvKiBT eW1ib2xzIHRvIGhlYWQgZXZlbnRzLiAgKi8KICAgREVGU1lNIChRbW91c2VfbW92ZW1lbnQs ICJtb3VzZS1tb3ZlbWVudCIpOwogICBERUZTWU0gKFFzY3JvbGxfYmFyX21vdmVtZW50LCAi c2Nyb2xsLWJhci1tb3ZlbWVudCIpOwpkaWZmIC0tZ2l0IGEvc3JjL21pbmlidWYuYyBiL3Ny Yy9taW5pYnVmLmMKaW5kZXggMWJiZTI3Ni4uNGQ5MWI0OCAxMDA2NDQKLS0tIGEvc3JjL21p bmlidWYuYworKysgYi9zcmMvbWluaWJ1Zi5jCkBAIC04NzQsNiArODc0LDMwIEBACiAgIGlm IChtaW5pYnVmX2xldmVsID09IDApCiAgICAgcmVzaXplX21pbmlfd2luZG93IChYV0lORE9X ICh3aW5kb3cpLCAwKTsKCisgIC8qIERlYWwgd2l0aCBmcmFtZXMgdGhhdCBzaG91bGQgYmUg cmVtb3ZlZCB3aGVuIGV4aXRpbmcgdGhlCisgICAgIG1pbmlidWZmZXIuICAqLworICB7Cisg ICAgTGlzcF9PYmplY3QgZnJhbWVzLCBmcmFtZTEsIHZhbDsKKyAgICBzdHJ1Y3QgZnJhbWUg KmYxOworCisgICAgRk9SX0VBQ0hfRlJBTUUgKGZyYW1lcywgZnJhbWUxKQorICAgICAgewor CWYxID0gWEZSQU1FIChmcmFtZTEpOworCisJaWYgKChGUkFNRV9QQVJFTlRfRlJBTUUgKGYx KQorCSAgICAgfHwgIU5JTFAgKGdldF9mcmFtZV9wYXJhbSAoZjEsIFFkZWxldGVfYmVmb3Jl KSkpCisJICAgICYmICFOSUxQICh2YWwgPSAoZ2V0X2ZyYW1lX3BhcmFtIChmMSwgUW1pbmli dWZmZXJfZXhpdCkpKSkKKwkgIHsKKwkgICAgaWYgKEVRICh2YWwsIFFpY29uaWZ5X2ZyYW1l KSkKKwkgICAgICBGaWNvbmlmeV9mcmFtZSAoZnJhbWUxKTsKKwkgICAgZWxzZSBpZiAoRVEg KHZhbCwgUWRlbGV0ZV9mcmFtZSkpCisJICAgICAgRmRlbGV0ZV9mcmFtZSAoZnJhbWUxLCBR bmlsKTsKKwkgICAgZWxzZQorCSAgICAgIEZtYWtlX2ZyYW1lX2ludmlzaWJsZSAoZnJhbWUx LCBRbmlsKTsKKwkgIH0KKyAgICAgIH0KKyAgfQorCiAgIC8qIEluIGNhc2UgdGhlIHByZXZp b3VzIG1pbmlidWZmZXIgZGlzcGxheWVkIGluIHRoaXMgbWluaXdpbmRvdyBpcwogICAgICBk ZWFkLCB3ZSBtYXkga2VlcCBkaXNwbGF5aW5nIHRoaXMgYnVmZmVyICh0aG8gaXQncyBpbmFj dGl2ZSksIHNvIHJlc2V0IGl0LAogICAgICB0byBtYWtlIHN1cmUgd2UgZG9uJ3QgbGVhdmUg YXJvdW5kIGJpbmRpbmdzIGFuZCBzdHVmZiB3aGljaCBvbmx5CkBAIC0xOTMwLDYgKzE5NTQs OCBAQAogICBERUZTWU0gKFFhY3RpdmF0ZV9pbnB1dF9tZXRob2QsICJhY3RpdmF0ZS1pbnB1 dC1tZXRob2QiKTsKICAgREVGU1lNIChRY2FzZV9mb2xkX3NlYXJjaCwgImNhc2UtZm9sZC1z ZWFyY2giKTsKICAgREVGU1lNIChRbWV0YWRhdGEsICJtZXRhZGF0YSIpOworICAvKiBBIGZy YW1lIHBhcmFtZXRlci4gICovCisgIERFRlNZTSAoUW1pbmlidWZmZXJfZXhpdCwgIm1pbmli dWZmZXItZXhpdCIpOwoKICAgREVGVkFSX0xJU1AgKCJyZWFkLWV4cHJlc3Npb24taGlzdG9y eSIsIFZyZWFkX2V4cHJlc3Npb25faGlzdG9yeSwKIAkgICAgICAgZG9jOiAvKiBBIGhpc3Rv cnkgbGlzdCBmb3IgYXJndW1lbnRzIHRoYXQgYXJlIExpc3AgZXhwcmVzc2lvbnMgdG8gZXZh bHVhdGUuCmRpZmYgLS1naXQgYS9zcmMvbnNmbnMubSBiL3NyYy9uc2Zucy5tCmluZGV4IGRi Y2UyNzkuLjY4ZWJhOGIgMTAwNjQ0Ci0tLSBhL3NyYy9uc2Zucy5tCisrKyBiL3NyYy9uc2Zu cy5tCkBAIC05ODQsNiArOTg0LDcgQEAgVHVybiB0aGUgaW5wdXQgbWVudSAoYW4gTlNNZW51 KSBpbnRvIGEgbGlzcCBsaXN0IGZvciB0cmFja2luZyBvbiBsaXNwIHNpZGUKICAgeF9zZXRf bm9fYWNjZXB0X2ZvY3VzLAogICB4X3NldF96X2dyb3VwLCAvKiB4X3NldF96X2dyb3VwICov CiAgIDAsIC8qIHhfc2V0X292ZXJyaWRlX3JlZGlyZWN0ICovCisgIHhfc2V0X25vX3NwZWNp YWxfZ2x5cGhzLAogfTsKCgpAQCAtMTI1Niw2ICsxMjU3LDggQEAgVHVybiB0aGUgaW5wdXQg bWVudSAoYW4gTlNNZW51KSBpbnRvIGEgbGlzcCBsaXN0IGZvciB0cmFja2luZyBvbiBsaXNw IHNpZGUKIAkJICAgICAgICJsZWZ0RnJpbmdlIiwgIkxlZnRGcmluZ2UiLCBSRVNfVFlQRV9O VU1CRVIpOwogICB4X2RlZmF1bHRfcGFyYW1ldGVyIChmLCBwYXJtcywgUXJpZ2h0X2ZyaW5n ZSwgUW5pbCwKIAkJICAgICAgICJyaWdodEZyaW5nZSIsICJSaWdodEZyaW5nZSIsIFJFU19U WVBFX05VTUJFUik7CisgIHhfZGVmYXVsdF9wYXJhbWV0ZXIgKGYsIHBhcm1zLCBRbm9fc3Bl Y2lhbF9nbHlwaHMsIFFuaWwsCisJCSAgICAgICBOVUxMLCBOVUxMLCBSRVNfVFlQRV9CT09M RUFOKTsKCiAgIGluaXRfZnJhbWVfZmFjZXMgKGYpOwoKQEAgLTEzMjUsNiArMTMyOCwxNSBA QCBUdXJuIHRoZSBpbnB1dCBtZW51IChhbiBOU01lbnUpIGludG8gYSBsaXNwIGxpc3QgZm9y IHRyYWNraW5nIG9uIGxpc3Agc2lkZQogICBmLT5vdXRwdXRfZGF0YS5ucy0+aG91cmdsYXNz X2N1cnNvciA9IFtOU0N1cnNvciBkaXNhcHBlYXJpbmdJdGVtQ3Vyc29yXTsKICAgZi0+b3V0 cHV0X2RhdGEubnMtPmhvcml6b250YWxfZHJhZ19jdXJzb3IgPSBbTlNDdXJzb3IgcmVzaXpl TGVmdFJpZ2h0Q3Vyc29yXTsKICAgZi0+b3V0cHV0X2RhdGEubnMtPnZlcnRpY2FsX2RyYWdf Y3Vyc29yID0gW05TQ3Vyc29yIHJlc2l6ZVVwRG93bkN1cnNvcl07CisgIGYtPm91dHB1dF9k YXRhLm5zLT5sZWZ0X2VkZ2VfY3Vyc29yID0gW05TQ3Vyc29yIHJlc2l6ZUxlZnRSaWdodEN1 cnNvcl07CisgIGYtPm91dHB1dF9kYXRhLm5zLT50b3BfbGVmdF9jb3JuZXJfY3Vyc29yID0g W05TQ3Vyc29yIGFycm93Q3Vyc29yXTsKKyAgZi0+b3V0cHV0X2RhdGEubnMtPnRvcF9lZGdl X2N1cnNvciA9IFtOU0N1cnNvciByZXNpemVVcERvd25DdXJzb3JdOworICBmLT5vdXRwdXRf ZGF0YS5ucy0+dG9wX3JpZ2h0X2Nvcm5lcl9jdXJzb3IgPSBbTlNDdXJzb3IgYXJyb3dDdXJz b3JdOworICBmLT5vdXRwdXRfZGF0YS5ucy0+cmlnaHRfZWRnZV9jdXJzb3IgPSBbTlNDdXJz b3IgcmVzaXplTGVmdFJpZ2h0Q3Vyc29yXTsKKyAgZi0+b3V0cHV0X2RhdGEubnMtPmJvdHRv bV9yaWdodF9jb3JuZXJfY3Vyc29yID0gW05TQ3Vyc29yIGFycm93Q3Vyc29yXTsKKyAgZi0+ b3V0cHV0X2RhdGEubnMtPmJvdHRvbV9lZGdlX2N1cnNvciA9IFtOU0N1cnNvciByZXNpemVV cERvd25DdXJzb3JdOworICBmLT5vdXRwdXRfZGF0YS5ucy0+Ym90dG9tX2xlZnRfY29ybmVy X2N1cnNvciA9IFtOU0N1cnNvciBhcnJvd0N1cnNvcl07CisKICAgRlJBTUVfRElTUExBWV9J TkZPIChmKS0+dmVydGljYWxfc2Nyb2xsX2Jhcl9jdXJzb3IKICAgICAgPSBbTlNDdXJzb3Ig YXJyb3dDdXJzb3JdOwogICBGUkFNRV9ESVNQTEFZX0lORk8gKGYpLT5ob3Jpem9udGFsX3Nj cm9sbF9iYXJfY3Vyc29yCmRpZmYgLS1naXQgYS9zcmMvbnN0ZXJtLmggYi9zcmMvbnN0ZXJt LmgKaW5kZXggYmVkMGI5Mi4uODRmN2YwYSAxMDA2NDQKLS0tIGEvc3JjL25zdGVybS5oCisr KyBiL3NyYy9uc3Rlcm0uaApAQCAtOTU3LDYgKzk1NywxNCBAQCBzdHJ1Y3QgbnNfb3V0cHV0 CiAgIEN1cnNvciBob3VyZ2xhc3NfY3Vyc29yOwogICBDdXJzb3IgaG9yaXpvbnRhbF9kcmFn X2N1cnNvcjsKICAgQ3Vyc29yIHZlcnRpY2FsX2RyYWdfY3Vyc29yOworICBDdXJzb3IgbGVm dF9lZGdlX2N1cnNvcjsKKyAgQ3Vyc29yIHRvcF9sZWZ0X2Nvcm5lcl9jdXJzb3I7CisgIEN1 cnNvciB0b3BfZWRnZV9jdXJzb3I7CisgIEN1cnNvciB0b3BfcmlnaHRfY29ybmVyX2N1cnNv cjsKKyAgQ3Vyc29yIHJpZ2h0X2VkZ2VfY3Vyc29yOworICBDdXJzb3IgYm90dG9tX3JpZ2h0 X2Nvcm5lcl9jdXJzb3I7CisgIEN1cnNvciBib3R0b21fZWRnZV9jdXJzb3I7CisgIEN1cnNv ciBib3R0b21fbGVmdF9jb3JuZXJfY3Vyc29yOwoKICAgLyogTlMtc3BlY2lmaWMgKi8KICAg Q3Vyc29yIGN1cnJlbnRfcG9pbnRlcjsKZGlmZiAtLWdpdCBhL3NyYy93MzJmbnMuYyBiL3Ny Yy93MzJmbnMuYwppbmRleCBlNDkwNTg4Li5iMDg0MmI1IDEwMDY0NAotLS0gYS9zcmMvdzMy Zm5zLmMKKysrIGIvc3JjL3czMmZucy5jCkBAIC01ODg5LDYgKzU4ODksOCBAQCBzdHJ1Y3Qg ZnJhbWUgKgogCQkgICAgICAgTlVMTCwgTlVMTCwgUkVTX1RZUEVfQk9PTEVBTik7CiAgIHhf ZGVmYXVsdF9wYXJhbWV0ZXIgKGYsIHBhcmFtZXRlcnMsIFFub19hY2NlcHRfZm9jdXMsIFFu aWwsCiAJCSAgICAgICBOVUxMLCBOVUxMLCBSRVNfVFlQRV9CT09MRUFOKTsKKyAgeF9kZWZh dWx0X3BhcmFtZXRlciAoZiwgcGFyYW1ldGVycywgUW5vX3NwZWNpYWxfZ2x5cGhzLCBRbmls LAorCQkgICAgICAgTlVMTCwgTlVMTCwgUkVTX1RZUEVfQk9PTEVBTik7CgogICAvKiBQcm9j ZXNzIGFscGhhIGhlcmUgKEJ1ZyMxNjYxOSkuICBPbiBYUCB0aGlzIGZhaWxzIHdpdGggY2hp bGQKICAgICAgZnJhbWVzLiAgRm9yIGBuby1mb2N1cy1vbi1tYXAnIGZyYW1lcyBkZWxheSBw cm9jZXNzaW5nIG9mIGFscGhhCkBAIC01OTU3LDYgKzU5NTksMTQgQEAgc3RydWN0IGZyYW1l ICoKICAgZi0+b3V0cHV0X2RhdGEudzMyLT5ob3VyZ2xhc3NfY3Vyc29yID0gdzMyX2xvYWRf Y3Vyc29yIChJRENfV0FJVCk7CiAgIGYtPm91dHB1dF9kYXRhLnczMi0+aG9yaXpvbnRhbF9k cmFnX2N1cnNvciA9IHczMl9sb2FkX2N1cnNvciAoSURDX1NJWkVXRSk7CiAgIGYtPm91dHB1 dF9kYXRhLnczMi0+dmVydGljYWxfZHJhZ19jdXJzb3IgPSB3MzJfbG9hZF9jdXJzb3IgKElE Q19TSVpFTlMpOworICBmLT5vdXRwdXRfZGF0YS53MzItPmxlZnRfZWRnZV9jdXJzb3IgPSB3 MzJfbG9hZF9jdXJzb3IgKElEQ19TSVpFV0UpOworICBmLT5vdXRwdXRfZGF0YS53MzItPnRv cF9sZWZ0X2Nvcm5lcl9jdXJzb3IgPSB3MzJfbG9hZF9jdXJzb3IgKElEQ19TSVpFTldTRSk7 CisgIGYtPm91dHB1dF9kYXRhLnczMi0+dG9wX2VkZ2VfY3Vyc29yID0gdzMyX2xvYWRfY3Vy c29yIChJRENfU0laRU5TKTsKKyAgZi0+b3V0cHV0X2RhdGEudzMyLT50b3BfcmlnaHRfY29y bmVyX2N1cnNvciA9IHczMl9sb2FkX2N1cnNvciAoSURDX1NJWkVORVNXKTsKKyAgZi0+b3V0 cHV0X2RhdGEudzMyLT5yaWdodF9lZGdlX2N1cnNvciA9IHczMl9sb2FkX2N1cnNvciAoSURD X1NJWkVXRSk7CisgIGYtPm91dHB1dF9kYXRhLnczMi0+Ym90dG9tX3JpZ2h0X2Nvcm5lcl9j dXJzb3IgPSB3MzJfbG9hZF9jdXJzb3IgKElEQ19TSVpFTldTRSk7CisgIGYtPm91dHB1dF9k YXRhLnczMi0+Ym90dG9tX2VkZ2VfY3Vyc29yID0gdzMyX2xvYWRfY3Vyc29yIChJRENfU0la RU5TKTsKKyAgZi0+b3V0cHV0X2RhdGEudzMyLT5ib3R0b21fbGVmdF9jb3JuZXJfY3Vyc29y ID0gdzMyX2xvYWRfY3Vyc29yIChJRENfU0laRU5FU1cpOwoKICAgZi0+b3V0cHV0X2RhdGEu dzMyLT5jdXJyZW50X2N1cnNvciA9IGYtPm91dHB1dF9kYXRhLnczMi0+bm9udGV4dF9jdXJz b3I7CgpAQCAtNzA0OSw2ICs3MDU5LDggQEAgc3RhdGljIHZvaWQgY29tcHV0ZV90aXBfeHkg KHN0cnVjdCBmcmFtZSAqLCBMaXNwX09iamVjdCwgTGlzcF9PYmplY3QsCiAJCSAgICAgICAi Y3Vyc29yQ29sb3IiLCAiRm9yZWdyb3VuZCIsIFJFU19UWVBFX1NUUklORyk7CiAgIHhfZGVm YXVsdF9wYXJhbWV0ZXIgKGYsIHBhcm1zLCBRYm9yZGVyX2NvbG9yLCBidWlsZF9zdHJpbmcg KCJibGFjayIpLAogCQkgICAgICAgImJvcmRlckNvbG9yIiwgIkJvcmRlckNvbG9yIiwgUkVT X1RZUEVfU1RSSU5HKTsKKyAgeF9kZWZhdWx0X3BhcmFtZXRlciAoZiwgcGFybXMsIFFub19z cGVjaWFsX2dseXBocywgUXQsCisJCSAgICAgICBOVUxMLCBOVUxMLCBSRVNfVFlQRV9CT09M RUFOKTsKCiAgIC8qIEluaXQgZmFjZXMgYmVmb3JlIHhfZGVmYXVsdF9wYXJhbWV0ZXIgaXMg Y2FsbGVkIGZvciB0aGUKICAgICAgc2Nyb2xsLWJhci13aWR0aCBwYXJhbWV0ZXIgYmVjYXVz ZSBvdGhlcndpc2Ugd2UgZW5kIHVwIGluCkBAIC04OTUwLDMzICs4OTYyLDQ3IEBAIHZhbHVl IGlzIGEgbGlzdCBvZiB0aGUgZm9ybSAoTEVGVCwgVE9QLCBSSUdIVCwgQk9UVE9NKS4gIEFs bCB2YWx1ZXMgYXJlCiAgIGlmIChFUSAodHlwZSwgUW91dGVyX2VkZ2VzKSkKICAgICB7CiAg ICAgICBSRUNUIHJlY3RhbmdsZTsKKyAgICAgIEJPT0wgc3VjY2VzcyA9IGZhbHNlOwoKICAg ICAgIGJsb2NrX2lucHV0ICgpOwogICAgICAgLyogT3V0ZXIgZnJhbWUgcmVjdGFuZ2xlLCBp bmNsdWRpbmcgb3V0ZXIgYm9yZGVycyBhbmQgdGl0bGUgYmFyLiAqLwotICAgICAgR2V0V2lu ZG93UmVjdCAoRlJBTUVfVzMyX1dJTkRPVyAoZiksICZyZWN0YW5nbGUpOworICAgICAgc3Vj Y2VzcyA9IEdldFdpbmRvd1JlY3QgKEZSQU1FX1czMl9XSU5ET1cgKGYpLCAmcmVjdGFuZ2xl KTsKICAgICAgIHVuYmxvY2tfaW5wdXQgKCk7CgotICAgICAgcmV0dXJuIGxpc3Q0IChtYWtl X251bWJlciAocmVjdGFuZ2xlLmxlZnQpLAotCQkgICAgbWFrZV9udW1iZXIgKHJlY3Rhbmds ZS50b3ApLAotCQkgICAgbWFrZV9udW1iZXIgKHJlY3RhbmdsZS5yaWdodCksCi0JCSAgICBt YWtlX251bWJlciAocmVjdGFuZ2xlLmJvdHRvbSkpOworICAgICAgaWYgKHN1Y2Nlc3MpCisJ cmV0dXJuIGxpc3Q0IChtYWtlX251bWJlciAocmVjdGFuZ2xlLmxlZnQpLAorCQkgICAgICBt YWtlX251bWJlciAocmVjdGFuZ2xlLnRvcCksCisJCSAgICAgIG1ha2VfbnVtYmVyIChyZWN0 YW5nbGUucmlnaHQpLAorCQkgICAgICBtYWtlX251bWJlciAocmVjdGFuZ2xlLmJvdHRvbSkp OworICAgICAgZWxzZQorCXJldHVybiBRbmlsOwogICAgIH0KICAgZWxzZQogICAgIHsKICAg ICAgIFJFQ1QgcmVjdGFuZ2xlOwogICAgICAgUE9JTlQgcHQ7CiAgICAgICBpbnQgbGVmdCwg dG9wLCByaWdodCwgYm90dG9tOworICAgICAgQk9PTCBzdWNjZXNzOwoKICAgICAgIGJsb2Nr X2lucHV0ICgpOwogICAgICAgLyogSW5uZXIgZnJhbWUgcmVjdGFuZ2xlLCBleGNsdWRpbmcg Ym9yZGVycyBhbmQgdGl0bGUgYmFyLiAgKi8KLSAgICAgIEdldENsaWVudFJlY3QgKEZSQU1F X1czMl9XSU5ET1cgKGYpLCAmcmVjdGFuZ2xlKTsKKyAgICAgIHN1Y2Nlc3MgPSBHZXRDbGll bnRSZWN0IChGUkFNRV9XMzJfV0lORE9XIChmKSwgJnJlY3RhbmdsZSk7CiAgICAgICAvKiBH ZXQgdG9wLWxlZnQgY29ybmVyIG9mIG5hdGl2ZSByZWN0YW5nbGUgaW4gc2NyZWVuCiAJIGNv b3JkaW5hdGVzLiAgKi8KKyAgICAgIGlmICghc3VjY2VzcykKKwl7CisJICB1bmJsb2NrX2lu cHV0ICgpOworCSAgcmV0dXJuIFFuaWw7CisJfQorCiAgICAgICBwdC54ID0gMDsKICAgICAg IHB0LnkgPSAwOwotICAgICAgQ2xpZW50VG9TY3JlZW4gKEZSQU1FX1czMl9XSU5ET1cgKGYp LCAmcHQpOworICAgICAgc3VjY2VzcyA9IENsaWVudFRvU2NyZWVuIChGUkFNRV9XMzJfV0lO RE9XIChmKSwgJnB0KTsKICAgICAgIHVuYmxvY2tfaW5wdXQgKCk7CgorICAgICAgaWYgKCFz dWNjZXNzKQorCXJldHVybiBRbmlsOworCiAgICAgICBsZWZ0ID0gcHQueDsKICAgICAgIHRv cCA9IHB0Lnk7CiAgICAgICByaWdodCA9IGxlZnQgKyByZWN0YW5nbGUucmlnaHQ7CkBAIC0x MDMzMCw2ICsxMDM1Niw3IEBAIGVudW0gTklfU2V2ZXJpdHkgewogICB4X3NldF9ub19hY2Nl cHRfZm9jdXMsCiAgIHhfc2V0X3pfZ3JvdXAsCiAgIDAsIC8qIHhfc2V0X292ZXJyaWRlX3Jl ZGlyZWN0ICovCisgIHhfc2V0X25vX3NwZWNpYWxfZ2x5cGhzLAogfTsKCiB2b2lkCmRpZmYg LS1naXQgYS9zcmMvdzMydGVybS5jIGIvc3JjL3czMnRlcm0uYwppbmRleCA3MTJiZGFlLi5j Mzc4MDVjIDEwMDY0NAotLS0gYS9zcmMvdzMydGVybS5jCisrKyBiL3NyYy93MzJ0ZXJtLmMK QEAgLTUwODYsNiArNTA4Niw1MSBAQCBzdGF0aWMgdm9pZCB4X2hvcml6b250YWxfc2Nyb2xs X2Jhcl9yZXBvcnRfbW90aW9uIChzdHJ1Y3QgZnJhbWUgKiosIExpc3BfT2JqZWN0CiAJICB9 CgogCWNhc2UgV01fV0lORE9XUE9TQ0hBTkdFRDoKKwkgIGYgPSB4X3dpbmRvd190b19mcmFt ZSAoZHB5aW5mbywgbXNnLm1zZy5od25kKTsKKworCSAgaWYgKGYpCisJICAgIHsKKwkgICAg ICBSRUNUIHJlY3Q7CisJICAgICAgaW50IC8qIHJvd3MsIGNvbHVtbnMsICovIHdpZHRoLCBo ZWlnaHQsIHRleHRfd2lkdGgsIHRleHRfaGVpZ2h0OworCisJICAgICAgaWYgKEdldENsaWVu dFJlY3QgKG1zZy5tc2cuaHduZCwgJnJlY3QpCisJCSAgLyogR2V0Q2xpZW50UmVjdCBldmlk ZW50bHkgcmV0dXJucyAoMCwgMCwgMCwgMCkgaWYKKwkJICAgICBjYWxsZWQgb24gYSBtaW5p bWl6ZWQgZnJhbWUuICBTdWNoICJkaW1lbnNpb25zIgorCQkgICAgIGFyZW4ndCB1c2VmdWwg YW55d2F5LiAgKi8KKwkJICAmJiAhKHJlY3QuYm90dG9tID09IDAKKwkJICAgICAgICYmIHJl Y3QudG9wID09IDAKKwkJICAgICAgICYmIHJlY3QubGVmdCA9PSAwCisJCSAgICAgICAmJiBy ZWN0LnJpZ2h0ID09IDApKQorCQl7CisJCSAgaGVpZ2h0ID0gcmVjdC5ib3R0b20gLSByZWN0 LnRvcDsKKwkJICB3aWR0aCA9IHJlY3QucmlnaHQgLSByZWN0LmxlZnQ7CisJCSAgdGV4dF93 aWR0aCA9IEZSQU1FX1BJWEVMX1RPX1RFWFRfV0lEVEggKGYsIHdpZHRoKTsKKwkJICB0ZXh0 X2hlaWdodCA9IEZSQU1FX1BJWEVMX1RPX1RFWFRfSEVJR0hUIChmLCBoZWlnaHQpOworCQkg IC8qIHJvd3MgPSBGUkFNRV9QSVhFTF9IRUlHSFRfVE9fVEVYVF9MSU5FUyAoZiwgaGVpZ2h0 KTsgKi8KKwkJICAvKiBjb2x1bW5zID0gRlJBTUVfUElYRUxfV0lEVEhfVE9fVEVYVF9DT0xT IChmLCB3aWR0aCk7ICovCisKKwkJICAvKiBUT0RPOiBDbGlwIHNpemUgdG8gdGhlIHNjcmVl biBkaW1lbnNpb25zLiAgKi8KKworCQkgIC8qIEV2ZW4gaWYgdGhlIG51bWJlciBvZiBjaGFy YWN0ZXIgcm93cyBhbmQgY29sdW1ucworCQkgICAgIGhhcyBub3QgY2hhbmdlZCwgdGhlIGZv bnQgc2l6ZSBtYXkgaGF2ZSBjaGFuZ2VkLAorCQkgICAgIHNvIHdlIG5lZWQgdG8gY2hlY2sg dGhlIHBpeGVsIGRpbWVuc2lvbnMgYXMgd2VsbC4gICovCisKKwkJICBpZiAod2lkdGggIT0g RlJBTUVfUElYRUxfV0lEVEggKGYpCisJCSAgICAgIHx8IGhlaWdodCAhPSBGUkFNRV9QSVhF TF9IRUlHSFQgKGYpCisJCSAgICAgIHx8IHRleHRfd2lkdGggIT0gRlJBTUVfVEVYVF9XSURU SCAoZikKKwkJICAgICAgfHwgdGV4dF9oZWlnaHQgIT0gRlJBTUVfVEVYVF9IRUlHSFQgKGYp KQorCQkgICAgeworCQkgICAgICBjaGFuZ2VfZnJhbWVfc2l6ZSAoZiwgdGV4dF93aWR0aCwg dGV4dF9oZWlnaHQsIDAsIDEsIDAsIDEpOworCQkgICAgICBTRVRfRlJBTUVfR0FSQkFHRUQg KGYpOworCQkgICAgICBjYW5jZWxfbW91c2VfZmFjZSAoZik7CisJCSAgICAgIGYtPndpbl9n cmF2aXR5ID0gTm9ydGhXZXN0R3Jhdml0eTsKKwkJICAgIH0KKwkJfQorCSAgICB9CisKKwkg IGNoZWNrX3Zpc2liaWxpdHkgPSAxOworCSAgYnJlYWs7CisKIAljYXNlIFdNX0FDVElWQVRF OgogCWNhc2UgV01fQUNUSVZBVEVBUFA6CiAJICBmID0geF93aW5kb3dfdG9fZnJhbWUgKGRw eWluZm8sIG1zZy5tc2cuaHduZCk7CkBAIC02MDUyLDcgKzYwOTcsNyBAQCBzdHJ1Y3QgeGlt X2luc3RfdAogICBpbnQgZGlzcGxheV90b3AgPSAwOwogICBzdHJ1Y3QgZnJhbWUgKnAgPSBG UkFNRV9QQVJFTlRfRlJBTUUgKGYpOwoKLSAgaWYgKGZsYWdzICYgKFhOZWdhdGl2ZSB8IFlO ZWdhdGl2ZSkpCisgIGlmICghcCAmJiBmbGFncyAmIChYTmVnYXRpdmUgfCBZTmVnYXRpdmUp KQogICAgIHsKICAgICAgIExpc3BfT2JqZWN0IGxpc3Q7CgpAQCAtNjA3OCwyMCArNjEyMywy NiBAQCBzdHJ1Y3QgeGltX2luc3RfdAogICAgIH0KCiAgIC8qIFRyZWF0IG5lZ2F0aXZlIHBv c2l0aW9ucyBhcyByZWxhdGl2ZSB0byB0aGUgcmlnaHRtb3N0IGJvdHRvbW1vc3QKLSAgICAg cG9zaXRpb24gdGhhdCBmaXRzIG9uIHRoZSBzY3JlZW4uICAqLworICAgICBwb3NpdGlvbiB0 aGF0IGZpdHMgb24gdGhlIHNjcmVlbiBvciBwYXJlbnQgZnJhbWUuCisKKyAgICAgSSBzZWUg bm8gbmVlZCBmb3Igc3VidHJhY3RpbmcgMSBmcm9tIHRoZSBib3JkZXIgd2lkdGhzIC0gaXMg dGhlcmUKKyAgICAgYW55IG9uIHRoZSByZW1haW5pbmcgcGxhdGZvcm1zPyAgSGVyZSB0aGVz ZSBzdWJ0cmFjdGlvbnMgZGlkIHB1dAorICAgICB0aGUgbGFzdCBwaXhlbCBsaW5lL2NvbHVt biBvZiBhIGZyYW1lIG9mZi1kaXNwbGF5IHdoZW4sIGZvcgorICAgICBleGFtcGxlLCBhIChz ZXQtZnJhbWUtcGFyYW1ldGVyIG5pbCAnbGVmdCAnKC0gMCkpIHNwZWNpZmljYXRpb24gd2Fz CisgICAgIHVzZWQgLSBtYXJ0aW4gMjAwMTctMDUtMDUuICovCiAgIGlmIChmbGFncyAmIFhO ZWdhdGl2ZSkKICAgICB7CiAgICAgICBpZiAocCkKIAlmLT5sZWZ0X3BvcyA9IChGUkFNRV9Q SVhFTF9XSURUSCAocCkKIAkJICAgICAgIC0gRlJBTUVfUElYRUxfV0lEVEggKGYpCiAJCSAg ICAgICArIGYtPmxlZnRfcG9zCi0JCSAgICAgICAtIChsZWZ0X3JpZ2h0X2JvcmRlcnNfd2lk dGggLSAxKSk7CisJCSAgICAgICAtIGxlZnRfcmlnaHRfYm9yZGVyc193aWR0aCk7CiAgICAg ICBlbHNlCiAJZi0+bGVmdF9wb3MgPSAoeF9kaXNwbGF5X3BpeGVsX3dpZHRoIChGUkFNRV9E SVNQTEFZX0lORk8gKGYpKQogCQkgICAgICAgKyBkaXNwbGF5X2xlZnQKIAkJICAgICAgIC0g RlJBTUVfUElYRUxfV0lEVEggKGYpCiAJCSAgICAgICArIGYtPmxlZnRfcG9zCi0JCSAgICAg ICAtIChsZWZ0X3JpZ2h0X2JvcmRlcnNfd2lkdGggLSAxKSk7CisJCSAgICAgICAtIGxlZnRf cmlnaHRfYm9yZGVyc193aWR0aCk7CiAgICAgfQoKICAgaWYgKGZsYWdzICYgWU5lZ2F0aXZl KQpAQCAtNjEwMCwxMyArNjE1MSwxMyBAQCBzdHJ1Y3QgeGltX2luc3RfdAogCWYtPnRvcF9w b3MgPSAoRlJBTUVfUElYRUxfSEVJR0hUIChwKQogCQkgICAgICAtIEZSQU1FX1BJWEVMX0hF SUdIVCAoZikKIAkJICAgICAgKyBmLT50b3BfcG9zCi0JCSAgICAgIC0gKHRvcF9ib3R0b21f Ym9yZGVyc19oZWlnaHQgLSAxKSk7CisJCSAgICAgIC0gdG9wX2JvdHRvbV9ib3JkZXJzX2hl aWdodCk7CiAgICAgICBlbHNlCiAJZi0+dG9wX3BvcyA9ICh4X2Rpc3BsYXlfcGl4ZWxfaGVp Z2h0IChGUkFNRV9ESVNQTEFZX0lORk8gKGYpKQogCQkgICAgICArIGRpc3BsYXlfdG9wCiAJ CSAgICAgIC0gRlJBTUVfUElYRUxfSEVJR0hUIChmKQogCQkgICAgICArIGYtPnRvcF9wb3MK LQkJICAgICAgLSAodG9wX2JvdHRvbV9ib3JkZXJzX2hlaWdodCAtIDEpKTsKKwkJICAgICAg LSB0b3BfYm90dG9tX2JvcmRlcnNfaGVpZ2h0KTsKICAgICB9CgogICAvKiBUaGUgbGVmdF9w b3MgYW5kIHRvcF9wb3MgYXJlIG5vdyByZWxhdGl2ZSB0byB0aGUgdG9wIGFuZCBsZWZ0CmRp ZmYgLS1naXQgYS9zcmMvdzMydGVybS5oIGIvc3JjL3czMnRlcm0uaAppbmRleCAzNzFjZjkw Li45OTU2NjgyIDEwMDY0NAotLS0gYS9zcmMvdzMydGVybS5oCisrKyBiL3NyYy93MzJ0ZXJt LmgKQEAgLTM0NSw2ICszNDUsMTQgQEAgc3RydWN0IHczMl9vdXRwdXQKICAgQ3Vyc29yIGhv dXJnbGFzc19jdXJzb3I7CiAgIEN1cnNvciBob3Jpem9udGFsX2RyYWdfY3Vyc29yOwogICBD dXJzb3IgdmVydGljYWxfZHJhZ19jdXJzb3I7CisgIEN1cnNvciBsZWZ0X2VkZ2VfY3Vyc29y OworICBDdXJzb3IgdG9wX2xlZnRfY29ybmVyX2N1cnNvcjsKKyAgQ3Vyc29yIHRvcF9lZGdl X2N1cnNvcjsKKyAgQ3Vyc29yIHRvcF9yaWdodF9jb3JuZXJfY3Vyc29yOworICBDdXJzb3Ig cmlnaHRfZWRnZV9jdXJzb3I7CisgIEN1cnNvciBib3R0b21fcmlnaHRfY29ybmVyX2N1cnNv cjsKKyAgQ3Vyc29yIGJvdHRvbV9lZGdlX2N1cnNvcjsKKyAgQ3Vyc29yIGJvdHRvbV9sZWZ0 X2Nvcm5lcl9jdXJzb3I7CgogICAvKiBOb24temVybyBtZWFucyBob3VyZ2xhc3MgY3Vyc29y IGlzIGN1cnJlbnRseSBkaXNwbGF5ZWQuICAqLwogICB1bnNpZ25lZCBob3VyZ2xhc3NfcCA6 IDE7CmRpZmYgLS1naXQgYS9zcmMvd2luZG93LmMgYi9zcmMvd2luZG93LmMKaW5kZXggYmY4 OWYwZS4uNDgxNmJkNiAxMDA2NDQKLS0tIGEvc3JjL3dpbmRvdy5jCisrKyBiL3NyYy93aW5k b3cuYwpAQCAtMTIwOCwxMyArMTIwOCwxMyBAQCBzaG91bGQgYmUgYSBidWZmZXIgcG9zaXRp b24gKHR5cGljYWxseSBhIG1hcmtlcikgb3IgbmlsLiAgSWYgaXQgaXMgYQogCQkgICAgIC0g V0lORE9XX0JPVFRPTV9ESVZJREVSX1dJRFRIICh3KSkpKQogICAgIHJldHVybiBPTl9IT1JJ Wk9OVEFMX1NDUk9MTF9CQVI7CiAgIC8qIE9uIHRoZSBtb2RlIG9yIGhlYWRlciBsaW5lPyAg ICovCi0gIGVsc2UgaWYgKChXSU5ET1dfV0FOVFNfTU9ERUxJTkVfUCAodykKKyAgZWxzZSBp ZiAoKHdpbmRvd193YW50c19tb2RlX2xpbmUgKHcpCiAJICAgICYmIHkgPj0gKGJvdHRvbV95 CiAJCSAgICAgLSBDVVJSRU5UX01PREVfTElORV9IRUlHSFQgKHcpCiAJCSAgICAgLSBXSU5E T1dfQk9UVE9NX0RJVklERVJfV0lEVEggKHcpKQogCSAgICAmJiB5IDw9IGJvdHRvbV95IC0g V0lORE9XX0JPVFRPTV9ESVZJREVSX1dJRFRIICh3KQogCSAgICAmJiAocGFydCA9IE9OX01P REVfTElORSkpCi0JICAgfHwgKFdJTkRPV19XQU5UU19IRUFERVJfTElORV9QICh3KQorCSAg IHx8ICh3aW5kb3dfd2FudHNfaGVhZGVyX2xpbmUgKHcpCiAJICAgICAgICYmIHkgPCB0b3Bf eSArIENVUlJFTlRfSEVBREVSX0xJTkVfSEVJR0hUICh3KQogCSAgICAgICAmJiAocGFydCA9 IE9OX0hFQURFUl9MSU5FKSkpCiAgICAgewpAQCAtMTg1MSw3ICsxODUxLDcgQEAgb2YgdGhl IChmaXJzdCkgdGV4dCBsaW5lLCBZUE9TIGlzIG5lZ2F0aXZlLgoKICAgaWYgKEVRIChsaW5l LCBRaGVhZGVyX2xpbmUpKQogICAgIHsKLSAgICAgIGlmICghV0lORE9XX1dBTlRTX0hFQURF Ul9MSU5FX1AgKHcpKQorICAgICAgaWYgKCF3aW5kb3dfd2FudHNfaGVhZGVyX2xpbmUgKHcp KQogCXJldHVybiBRbmlsOwogICAgICAgcm93ID0gTUFUUklYX0hFQURFUl9MSU5FX1JPVyAo dy0+Y3VycmVudF9tYXRyaXgpOwogICAgICAgcmV0dXJuIHJvdy0+ZW5hYmxlZF9wID8gbGlz dDRpIChyb3ctPmhlaWdodCwgMCwgMCwgMCkgOiBRbmlsOwpAQCAtMTg5OCw2ICsxODk4LDEy OSBAQCBvZiB0aGUgKGZpcnN0KSB0ZXh0IGxpbmUsIFlQT1MgaXMgbmVnYXRpdmUuCiAgIHJl dHVybiBsaXN0NGkgKHJvdy0+aGVpZ2h0ICsgbWluICgwLCByb3ctPnkpIC0gY3JvcCwgaSwg cm93LT55LCBjcm9wKTsKIH0KCitERUZVTiAoIndpbmRvdy1saW5lcy1waXhlbC1kaW1lbnNp b25zIiwgRndpbmRvd19saW5lc19waXhlbF9kaW1lbnNpb25zLCBTd2luZG93X2xpbmVzX3Bp eGVsX2RpbWVuc2lvbnMsIDAsIDYsIDAsCisgICAgICAgZG9jOiAvKiBSZXR1cm4gcGl4ZWwg ZGltZW5zaW9ucyBvZiBXSU5ET1cncyBsaW5lcy4KK1RoZSByZXR1cm4gdmFsdWUgaXMgYSBs aXN0IG9mIHRoZSB4LSBhbmQgeS1jb29yZGluYXRlcyBvZiB0aGUgbG93ZXIKK3JpZ2h0IGNv cm5lciBvZiB0aGUgbGFzdCBjaGFyYWN0ZXIgb2YgZWFjaCBsaW5lLiAgUmV0dXJuIG5pbCBp ZiB0aGUKK2N1cnJlbnQgZ2x5cGggbWF0cml4IG9mIFdJTkRPVyBpcyBub3QgdXAtdG8tZGF0 ZS4KKworT3B0aW9uYWwgYXJndW1lbnQgV0lORE9XIHNwZWNpZmllcyB0aGUgd2luZG93IHdo b3NlIGxpbmVzJyBkaW1lbnNpb25zCitzaGFsbCBiZSByZXR1cm5lZC4gIE5pbCBvciBvbWl0 dGVkIG1lYW5zIHRvIHJldHVybiB0aGUgZGltZW5zaW9ucyBmb3IKK3RoZSBzZWxlY3RlZCB3 aW5kb3cuCisKK0ZJUlNULCBpZiBub24tbmlsLCBzcGVjaWZpZXMgdGhlIGluZGV4IG9mIHRo ZSBmaXJzdCBsaW5lIHdob3NlCitkaW1lbnNpb25zIHNoYWxsIGJlIHJldHVybmVkLiAgSWYg RklSU1QgaXMgbmlsIGFuZCBCT0RZIGlzIG5vbi1uaWwsCitzdGFydCB3aXRoIHRoZSBmaXJz dCB0ZXh0IGxpbmUgb2YgV0lORE9XLiAgT3RoZXJ3aXNlLCBzdGFydCB3aXRoIHRoZQorZmly c3QgbGluZSBvZiBXSU5ET1cuCisKK0xBU1QsIGlmIG5vbi1uaWwsIHNwZWNpZmllcyB0aGUg bGFzdCBsaW5lIHdob3NlIGRpbWVuc2lvbnMgc2hhbGwgYmUKK3JldHVybmVkLiAgSWYgTEFT VCBpcyBuaWwgYW5kIEJPRFkgaXMgbm9uLW5pbCwgdGhlIGxhc3QgbGluZSBpcyB0aGUgbGFz dAorbGluZSBvZiB0aGUgYm9keSAodGV4dCBhcmVhKSBvZiBXSU5ET1cuICBPdGhlcndpc2Us IGxhc3QgaXMgdGhlIGxhc3QKK2xpbmUgb2YgV0lORE9XLgorCitJTlZFUlNFLCBpZiBuaWws IG1lYW5zIHRoYXQgdGhlIHktcGl4ZWwgdmFsdWUgcmV0dXJuZWQgZm9yIGEgc3BlY2lmaWMK K2xpbmUgc3BlY2lmaWVzIHRoZSBkaXN0YW5jZSBpbiBwaXhlbHMgZnJvbSB0aGUgbGVmdCBl ZGdlIChib2R5IGVkZ2UgaWYKK0JPRFkgaXMgbm9uLW5pbCkgb2YgV0lORE9XIHRvIHRoZSBy aWdodCBlZGdlIG9mIHRoZSBsYXN0IGdseXBoIG9mIHRoYXQKK2xpbmUuICBJTlZFUlNFIG5v bi1uaWwgbWVhbnMgdGhhdCB0aGUgeS1waXhlbCB2YWx1ZSByZXR1cm5lZCBmb3IgYQorc3Bl Y2lmaWMgbGluZSBzcGVjaWZpZXMgdGhlIGRpc3RhbmNlIGluIHBpeGVscyBmcm9tIHRoZSBy aWdodCBlZGdlIG9mCit0aGUgbGFzdCBnbHlwaCBvZiB0aGF0IGxpbmUgdG8gdGhlIHJpZ2h0 IGVkZ2UgKGJvZHkgZWRnZSBpZiBCT0RZIGlzCitub24tbmlsKSBvZiBXSU5ET1cuCisKK0xF RlQgbm9uLW5pbCBtZWFucyB0byByZXR1cm4gdGhlIHgtIGFuZCB5LWNvb3JkaW5hdGVzIG9m IHRoZSBsb3dlciBsZWZ0Citjb3JuZXIgb2YgdGhlIGxlZnRtb3N0IGNoYXJhY3RlciBvbiBl YWNoIGxpbmUuICBUaGlzIGlzIHRoZSB2YWx1ZSB0aGF0CitzaG91bGQgYmUgdXNlZCBmb3Ig YnVmZmVycyB0aGF0IG1vc3RseSBkaXNwbGF5IHRleHQgZnJvbSByaWdodCB0byBsZWZ0Lgor CitJZiBMRUZUIGlzIG5vbi1uaWwgYW5kIElOVkVSU0UgaXMgbmlsLCB0aGlzIG1lYW5zIHRo YXQgdGhlIHktcGl4ZWwgdmFsdWUKK3JldHVybmVkIGZvciBhIHNwZWNpZmljIGxpbmUgc3Bl Y2lmaWVzIHRoZSBkaXN0YW5jZSBpbiBwaXhlbHMgZnJvbSB0aGUKK2xlZnQgZWRnZSBvZiB0 aGUgbGFzdCAobGVmdG1vc3QpIGdseXBoIG9mIHRoYXQgbGluZSB0byB0aGUgcmlnaHQgZWRn ZQorKGJvZHkgZWRnZSBpZiBCT0RZIGlzIG5vbi1uaWwpIG9mIFdJTkRPVy4gIElmIExFRlQg YW5kIElOVkVSU0UgYXJlIGJvdGgKK25vbi1uaWwsIHRoZSB5LXBpeGVsIHZhbHVlIHJldHVy bmVkIGZvciBhIHNwZWNpZmljIGxpbmUgc3BlY2lmaWVzIHRoZQorZGlzdGFuY2UgaW4gcGl4 ZWxzIGZyb20gdGhlIGxlZnQgZWRnZSAoYm9keSBlZGdlIGlmIEJPRFkgaXMgbm9uLW5pbCkg b2YKK1dJTkRPVyB0byB0aGUgbGVmdCBlZGdlIG9mIHRoZSBsYXN0IChsZWZ0bW9zdCkgZ2x5 cGggb2YgdGhhdCBsaW5lLgorCitOb3JtYWxseSwgdGhlIHZhbHVlIG9mIHRoaXMgZnVuY3Rp b24gaXMgbm90IGF2YWlsYWJsZSB3aGlsZSBFbWFjcyBpcworYnVzeSwgZm9yIGV4YW1wbGUs IHdoZW4gcHJvY2Vzc2luZyBhIGNvbW1hbmQuICBJdCBzaG91bGQgYmUgcmV0cmlldmFibGUK K3Rob3VnaCB3aGVuIHJ1biBmcm9tIGFuIGlkbGUgdGltZXIgd2l0aCBhIGRlbGF5IG9mIHpl cm8gc2Vjb25kcy4gICovKQorICAoTGlzcF9PYmplY3Qgd2luZG93LCBMaXNwX09iamVjdCBm aXJzdCwgTGlzcF9PYmplY3QgbGFzdCwgTGlzcF9PYmplY3QgYm9keSwgTGlzcF9PYmplY3Qg aW52ZXJzZSwgTGlzcF9PYmplY3QgbGVmdCkKK3sKKyAgc3RydWN0IHdpbmRvdyAqdyA9IGRl Y29kZV9saXZlX3dpbmRvdyAod2luZG93KTsKKyAgc3RydWN0IGJ1ZmZlciAqYjsKKyAgc3Ry dWN0IGdseXBoX3JvdyAqcm93LCAqZW5kX3JvdzsKKyAgaW50IG1heF95ID0gTklMUCAoYm9k eSkgPyBXSU5ET1dfUElYRUxfSEVJR0hUICh3KSA6IHdpbmRvd190ZXh0X2JvdHRvbV95ICh3 KTsKKyAgTGlzcF9PYmplY3Qgcm93cyA9IFFuaWw7CisgIGludCB3aW5kb3dfd2lkdGggPSBO SUxQIChib2R5KSA/IHctPnBpeGVsX3dpZHRoIDogd2luZG93X2JvZHlfd2lkdGggKHcsIHRy dWUpOworICBpbnQgaGVhZGVyX2xpbmVfaGVpZ2h0ID0gV0lORE9XX0hFQURFUl9MSU5FX0hF SUdIVCAodyk7CisgIGludCBzdWJ0cmFjdCA9IE5JTFAgKGJvZHkpID8gMCA6IGhlYWRlcl9s aW5lX2hlaWdodDsKKyAgYm9vbCBpbnZlcnQgPSAhTklMUCAoaW52ZXJzZSk7CisgIGJvb2wg bGVmdF9mbGFnID0gIU5JTFAgKGxlZnQpOworCisgIGlmIChub25pbnRlcmFjdGl2ZSB8fCB3 LT5wc2V1ZG9fd2luZG93X3ApCisgICAgcmV0dXJuIFFuaWw7CisKKyAgQ0hFQ0tfQlVGRkVS ICh3LT5jb250ZW50cyk7CisgIGIgPSBYQlVGRkVSICh3LT5jb250ZW50cyk7CisKKyAgLyog RmFpbCBpZiBjdXJyZW50IG1hdHJpeCBpcyBub3QgdXAtdG8tZGF0ZS4gICovCisgIGlmICgh dy0+d2luZG93X2VuZF92YWxpZAorICAgICAgfHwgd2luZG93c19vcl9idWZmZXJzX2NoYW5n ZWQKKyAgICAgIHx8IGItPmNsaXBfY2hhbmdlZAorICAgICAgfHwgYi0+cHJldmVudF9yZWRp c3BsYXlfb3B0aW1pemF0aW9uc19wCisgICAgICB8fCB3aW5kb3dfb3V0ZGF0ZWQgKHcpKQor ICAgIHJldHVybiBRbmlsOworCisgIGlmIChOSUxQIChmaXJzdCkpCisgICAgcm93ID0gKE5J TFAgKGJvZHkpCisJICAgPyBNQVRSSVhfUk9XICh3LT5jdXJyZW50X21hdHJpeCwgMCkKKwkg ICA6IE1BVFJJWF9GSVJTVF9URVhUX1JPVyAody0+Y3VycmVudF9tYXRyaXgpKTsKKyAgZWxz ZSBpZiAoTlVNQkVSUCAoZmlyc3QpKQorICAgIHsKKyAgICAgIENIRUNLX1JBTkdFRF9JTlRF R0VSIChmaXJzdCwgMCwgdy0+Y3VycmVudF9tYXRyaXgtPm5yb3dzKTsKKyAgICAgIHJvdyA9 IE1BVFJJWF9ST1cgKHctPmN1cnJlbnRfbWF0cml4LCBYSU5UIChmaXJzdCkpOworICAgIH0K KyAgZWxzZQorICAgIGVycm9yICgiSW52YWxpZCBzcGVjaWZpY2F0aW9uIG9mIGZpcnN0IGxp bmUiKTsKKworICBpZiAoTklMUCAobGFzdCkpCisKKyAgICBlbmRfcm93ID0gKE5JTFAgKGJv ZHkpCisJICAgICAgID8gTUFUUklYX1JPVyAody0+Y3VycmVudF9tYXRyaXgsIHctPmN1cnJl bnRfbWF0cml4LT5ucm93cykKKwkgICAgICAgOiBNQVRSSVhfQk9UVE9NX1RFWFRfUk9XICh3 LT5jdXJyZW50X21hdHJpeCwgdykpOworICBlbHNlIGlmIChOVU1CRVJQIChsYXN0KSkKKyAg ICB7CisgICAgICBDSEVDS19SQU5HRURfSU5URUdFUiAobGFzdCwgMCwgdy0+Y3VycmVudF9t YXRyaXgtPm5yb3dzKTsKKyAgICAgIGVuZF9yb3cgPSBNQVRSSVhfUk9XICh3LT5jdXJyZW50 X21hdHJpeCwgWElOVCAobGFzdCkpOworICAgIH0KKyAgZWxzZQorICAgIGVycm9yICgiSW52 YWxpZCBzcGVjaWZpY2F0aW9uIG9mIGxhc3QgbGluZSIpOworCisgIHdoaWxlIChyb3cgPD0g ZW5kX3JvdyAmJiByb3ctPmVuYWJsZWRfcAorCSAmJiByb3ctPnkgKyByb3ctPmhlaWdodCA8 IG1heF95KQorICAgIHsKKworICAgICAgaWYgKGxlZnRfZmxhZykKKwl7CisJICBzdHJ1Y3Qg Z2x5cGggKmdseXBoID0gcm93LT5nbHlwaHNbVEVYVF9BUkVBXTsKKworCSAgcm93cyA9IEZj b25zIChGY29ucyAobWFrZV9udW1iZXIKKwkJCSAgICAgICAoaW52ZXJ0CisJCQkJPyBnbHlw aC0+cGl4ZWxfd2lkdGgKKwkJCQk6IHdpbmRvd193aWR0aCAtIGdseXBoLT5waXhlbF93aWR0 aCksCisJCQkgICAgICAgbWFrZV9udW1iZXIgKHJvdy0+eSArIHJvdy0+aGVpZ2h0IC0gc3Vi dHJhY3QpKSwKKwkJCXJvd3MpOworCX0KKyAgICAgIGVsc2UKKwlyb3dzID0gRmNvbnMgKEZj b25zIChtYWtlX251bWJlcgorCQkJICAgICAoaW52ZXJ0CisJCQkgICAgICA/IHdpbmRvd193 aWR0aCAtIHJvdy0+cGl4ZWxfd2lkdGgKKwkJCSAgICAgIDogcm93LT5waXhlbF93aWR0aCks CisJCQkgICAgIG1ha2VfbnVtYmVyIChyb3ctPnkgKyByb3ctPmhlaWdodCAtIHN1YnRyYWN0 KSksCisJCSAgICAgIHJvd3MpOworICAgICAgcm93Kys7CisgICAgfQorCisgIHJldHVybiBG bnJldmVyc2UgKHJvd3MpOworfQorCiBERUZVTiAoIndpbmRvdy1kZWRpY2F0ZWQtcCIsIEZ3 aW5kb3dfZGVkaWNhdGVkX3AsIFN3aW5kb3dfZGVkaWNhdGVkX3AsCiAgICAgICAgMCwgMSwg MCwKICAgICAgICBkb2M6IC8qIFJldHVybiBub24tbmlsIHdoZW4gV0lORE9XIGlzIGRlZGlj YXRlZCB0byBpdHMgYnVmZmVyLgpAQCAtMjAwMywxNiArMjEyNiwyNCBAQCByZXR1cm4gdmFs dWUgaXMgYSBsaXN0IG9mIGVsZW1lbnRzIG9mIHRoZSBmb3JtIChQQVJBTUVURVIgLiBWQUxV RSkuICAqLykKICAgcmV0dXJuIEZjb3B5X2FsaXN0IChkZWNvZGVfdmFsaWRfd2luZG93ICh3 aW5kb3cpLT53aW5kb3dfcGFyYW1ldGVycyk7CiB9CgorTGlzcF9PYmplY3QKK3dpbmRvd19w YXJhbWV0ZXIgKHN0cnVjdCB3aW5kb3cgKncsIExpc3BfT2JqZWN0IHBhcmFtZXRlcikKK3sK KyAgTGlzcF9PYmplY3QgcmVzdWx0ID0gRmFzc3EgKHBhcmFtZXRlciwgdy0+d2luZG93X3Bh cmFtZXRlcnMpOworCisgIHJldHVybiBDRFJfU0FGRSAocmVzdWx0KTsKK30KKworCiBERUZV TiAoIndpbmRvdy1wYXJhbWV0ZXIiLCBGd2luZG93X3BhcmFtZXRlciwgU3dpbmRvd19wYXJh bWV0ZXIsCiAgICAgICAgMiwgMiwgMCwKICAgICAgICBkb2M6ICAvKiBSZXR1cm4gV0lORE9X J3MgdmFsdWUgZm9yIFBBUkFNRVRFUi4KIFdJTkRPVyBjYW4gYmUgYW55IHdpbmRvdyBhbmQg ZGVmYXVsdHMgdG8gdGhlIHNlbGVjdGVkIG9uZS4gICovKQogICAoTGlzcF9PYmplY3Qgd2lu ZG93LCBMaXNwX09iamVjdCBwYXJhbWV0ZXIpCiB7Ci0gIExpc3BfT2JqZWN0IHJlc3VsdDsK KyAgc3RydWN0IHdpbmRvdyAqdyA9IGRlY29kZV9hbnlfd2luZG93ICh3aW5kb3cpOwoKLSAg cmVzdWx0ID0gRmFzc3EgKHBhcmFtZXRlciwgZGVjb2RlX2FueV93aW5kb3cgKHdpbmRvdykt PndpbmRvd19wYXJhbWV0ZXJzKTsKLSAgcmV0dXJuIENEUl9TQUZFIChyZXN1bHQpOworICBy ZXR1cm4gd2luZG93X3BhcmFtZXRlciAodywgcGFyYW1ldGVyKTsKIH0KCiBERUZVTiAoInNl dC13aW5kb3ctcGFyYW1ldGVyIiwgRnNldF93aW5kb3dfcGFyYW1ldGVyLApAQCAtNDc0MCw2 ICs0ODcxLDY5IEBAIFNJREUgdCAob3IgYHJpZ2h0Jykgc3BlY2lmaWVzIHRoYXQgdGhlIG5l dyB3aW5kb3cgc2hhbGwgYmUgbG9jYXRlZCBvbgogfQoKCisvKioKKyAqIHdpbmRvd193YW50 c19tb2RlX2xpbmU6CisgKgorICogUmV0dXJuIDEgaWYgd2luZG93IFcgd2FudHMgYSBtb2Rl IGxpbmUgYW5kIGlzIGhpZ2ggZW5vdWdoIHRvCisgKiBhY2NvbW9kYXRlIGl0LCAwIG90aGVy d2lzZS4KKyAqCisgKiBXIHdhbnRzIGEgbW9kZSBsaW5lIGlmIGl0J3MgYSBsZWFmIHdpbmRv dyBhbmQgbmVpdGhlciBhIG1pbmlidWZmZXIKKyAqIG5vciBhIHBzZXVkbyB3aW5kb3cuICBN b3Jlb3ZlciwgaXRzICd3aW5kb3ctbW9kZS1saW5lLWZvcm1hdCcKKyAqIHBhcmFtZXRlciBt dXN0IG5vdCBiZSAnbm9uZScgYW5kIGVpdGhlciB0aGF0IHBhcmFtZXRlciBvciBXJ3MKKyAq IGJ1ZmZlcidzICdtb2RlLWxpbmUtZm9ybWF0JyB2YWx1ZSBtdXN0IGJlIG5vbi1uaWwuICBG aW5hbGx5LCBXIG11c3QKKyAqIGJlIGhpZ2hlciB0aGFuIGl0cyBmcmFtZSdzIGNhbm9uaWNh bCBjaGFyYWN0ZXIgaGVpZ2h0LgorICovCitib29sCit3aW5kb3dfd2FudHNfbW9kZV9saW5l IChzdHJ1Y3Qgd2luZG93ICp3KQoreworICBMaXNwX09iamVjdCB3aW5kb3dfbW9kZV9saW5l X2Zvcm1hdCA9CisgICAgd2luZG93X3BhcmFtZXRlciAodywgUW1vZGVfbGluZV9mb3JtYXQp OworCisgIHJldHVybiAoKFdJTkRPV19MRUFGX1AgKHcpCisJICAgJiYgIU1JTklfV0lORE9X X1AgKHcpCisJICAgJiYgIVdJTkRPV19QU0VVRE9fUCAodykKKwkgICAmJiAhRVEgKHdpbmRv d19tb2RlX2xpbmVfZm9ybWF0LCBRbm9uZSkKKwkgICAmJiAoIU5JTFAgKHdpbmRvd19tb2Rl X2xpbmVfZm9ybWF0KQorCSAgICAgICB8fCAhTklMUCAoQlZBUiAoWEJVRkZFUiAoV0lORE9X X0JVRkZFUiAodykpLCBtb2RlX2xpbmVfZm9ybWF0KSkpCisJICAgJiYgV0lORE9XX1BJWEVM X0hFSUdIVCAodykgPiBXSU5ET1dfRlJBTUVfTElORV9IRUlHSFQgKHcpKQorCSAgPyAxCisJ ICA6IDApOworfQorCisKKy8qKgorICogd2luZG93X3dhbnRzX2hlYWRlcl9saW5lOgorICoK KyAqIFJldHVybiAxIGlmIHdpbmRvdyBXIHdhbnRzIGEgaGVhZGVyIGxpbmUgYW5kIGlzIGhp Z2ggZW5vdWdoIHRvCisgKiBhY2NvbW9kYXRlIGl0LCAwIG90aGVyd2lzZS4KKyAqCisgKiBX IHdhbnRzIGEgaGVhZGVyIGxpbmUgaWYgaXQncyBhIGxlYWYgd2luZG93IGFuZCBuZWl0aGVy IGEgbWluaWJ1ZmZlcgorICogbm9yIGEgcHNldWRvIHdpbmRvdy4gIE1vcmVvdmVyLCBpdHMg J3dpbmRvdy1tb2RlLWxpbmUtZm9ybWF0JworICogcGFyYW1ldGVyIG11c3Qgbm90IGJlICdu b25lJyBhbmQgZWl0aGVyIHRoYXQgcGFyYW1ldGVyIG9yIFcncworICogYnVmZmVyJ3MgJ21v ZGUtbGluZS1mb3JtYXQnIHZhbHVlIG11c3QgYmUgbm9uLW5pbC4gIEZpbmFsbHksIFcgbXVz dAorICogYmUgaGlnaGVyIHRoYW4gaXRzIGZyYW1lJ3MgY2Fub25pY2FsIGNoYXJhY3RlciBo ZWlnaHQgYW5kIGJlIGFibGUgdG8KKyAqIGFjY29tb2RhdGUgYSBtb2RlIGxpbmUgdG9vIGlm IG5lY2Vzc2FyeSAodGhlIG1vZGUgbGluZSBwcmV2YWlscykuCisgKi8KK2Jvb2wKK3dpbmRv d193YW50c19oZWFkZXJfbGluZSAoc3RydWN0IHdpbmRvdyAqdykKK3sKKyAgTGlzcF9PYmpl Y3Qgd2luZG93X2hlYWRlcl9saW5lX2Zvcm1hdCA9CisgICAgd2luZG93X3BhcmFtZXRlciAo dywgUWhlYWRlcl9saW5lX2Zvcm1hdCk7CisKKyAgcmV0dXJuICgoV0lORE9XX0xFQUZfUCAo dykKKwkgICAmJiAhTUlOSV9XSU5ET1dfUCAodykKKwkgICAmJiAhV0lORE9XX1BTRVVET19Q ICh3KQorCSAgICYmICFFUSAod2luZG93X2hlYWRlcl9saW5lX2Zvcm1hdCwgUW5vbmUpCisJ ICAgJiYgKCFOSUxQICh3aW5kb3dfaGVhZGVyX2xpbmVfZm9ybWF0KQorCSAgICAgICB8fCAh TklMUCAoQlZBUiAoWEJVRkZFUiAoV0lORE9XX0JVRkZFUiAodykpLCBoZWFkZXJfbGluZV9m b3JtYXQpKSkKKwkgICAmJiAoV0lORE9XX1BJWEVMX0hFSUdIVCAodykKKwkgICAgICAgPiAo d2luZG93X3dhbnRzX21vZGVfbGluZSAodykKKwkJICA/IDIgKiBXSU5ET1dfRlJBTUVfTElO RV9IRUlHSFQgKHcpCisJCSAgOiBXSU5ET1dfRlJBTUVfTElORV9IRUlHSFQgKHcpKSkpCisJ ICA/IDEKKwkgIDogMCk7Cit9CisKIC8qIFJldHVybiBudW1iZXIgb2YgbGluZXMgb2YgdGV4 dCAobm90IGNvdW50aW5nIG1vZGUgbGluZXMpIGluIFcuICAqLwoKIGludApAQCAtNDc1Mywx MCArNDk0NywxMCBAQCBTSURFIHQgKG9yIGByaWdodCcpIHNwZWNpZmllcyB0aGF0IHRoZSBu ZXcgd2luZG93IHNoYWxsIGJlIGxvY2F0ZWQgb24KIAkgIHx8IFdJTkRPV1AgKHctPmNvbnRl bnRzKQogCSAgfHwgIU5JTFAgKHctPm5leHQpCiAJICB8fCAhTklMUCAody0+cHJldikKLQkg IHx8IFdJTkRPV19XQU5UU19NT0RFTElORV9QICh3KSkKKwkgIHx8IHdpbmRvd193YW50c19t b2RlX2xpbmUgKHcpKQogCS0taHQ7CgotICAgICAgaWYgKFdJTkRPV19XQU5UU19IRUFERVJf TElORV9QICh3KSkKKyAgICAgIGlmICh3aW5kb3dfd2FudHNfaGVhZGVyX2xpbmUgKHcpKQog CS0taHQ7CiAgICAgfQoKQEAgLTczNTQsNiArNzU0OCw4IEBAIFZhbHVlIGlzIGEgbGlzdCBv ZiB0aGUgZm9ybSAoV0lEVEggQ09MVU1OUyBWRVJUSUNBTC1UWVBFIEhFSUdIVCBMSU5FUwog ICBERUZTWU0gKFFmbG9vciwgImZsb29yIik7CiAgIERFRlNZTSAoUWNlaWxpbmcsICJjZWls aW5nIik7CiAgIERFRlNZTSAoUW1hcmtfZm9yX3JlZGlzcGxheSwgIm1hcmstZm9yLXJlZGlz cGxheSIpOworICBERUZTWU0gKFFtb2RlX2xpbmVfZm9ybWF0LCAibW9kZS1saW5lLWZvcm1h dCIpOworICBERUZTWU0gKFFoZWFkZXJfbGluZV9mb3JtYXQsICJoZWFkZXItbGluZS1mb3Jt YXQiKTsKCiAgIHN0YXRpY3BybyAoJlZ3aW5kb3dfbGlzdCk7CgpAQCAtNzYwMyw2ICs3Nzk5 LDcgQEAgdGhpcyB2YWx1ZSBmb3IgcGFyYW1ldGVycyB3aXRob3V0IHJlYWQgc3ludGF4IChs aWtlIHdpbmRvd3Mgb3IgZnJhbWVzKS4KICAgZGVmc3ViciAoJlNzZXRfd2luZG93X3BvaW50 KTsKICAgZGVmc3ViciAoJlNzZXRfd2luZG93X3N0YXJ0KTsKICAgZGVmc3ViciAoJlN3aW5k b3dfZGVkaWNhdGVkX3ApOworICBkZWZzdWJyICgmU3dpbmRvd19saW5lc19waXhlbF9kaW1l bnNpb25zKTsKICAgZGVmc3ViciAoJlNzZXRfd2luZG93X2RlZGljYXRlZF9wKTsKICAgZGVm c3ViciAoJlN3aW5kb3dfZGlzcGxheV90YWJsZSk7CiAgIGRlZnN1YnIgKCZTc2V0X3dpbmRv d19kaXNwbGF5X3RhYmxlKTsKZGlmZiAtLWdpdCBhL3NyYy93aW5kb3cuaCBiL3NyYy93aW5k b3cuaAppbmRleCBhY2I4YTVjLi5lOTA0MGY4MTYgMTAwNjQ0Ci0tLSBhL3NyYy93aW5kb3cu aAorKysgYi9zcmMvd2luZG93LmgKQEAgLTMyOCw4ICszMjgsOSBAQCBzdHJ1Y3Qgd2luZG93 CiAgICAgLyogVHJ1ZSBpZiB0aGlzIHdpbmRvdyBpcyBhIG1pbmlidWZmZXIgd2luZG93LiAg Ki8KICAgICBib29sX2JmIG1pbmkgOiAxOwoKLSAgICAvKiBNZWFuaW5nZnVsIG9ubHkgaWYg Y29udGVudHMgaXMgYSB3aW5kb3csIHRydWUgaWYgdGhpcwotICAgICAgIGludGVybmFsIHdp bmRvdyBpcyB1c2VkIGluIGhvcml6b250YWwgY29tYmluYXRpb24uICAqLworICAgIC8qIE1l YW5pbmdmdWwgZm9yIGludGVybmFsIHdpbmRvd3Mgb25seTogdHJ1ZSBpZiB0aGlzIHdpbmRv dyBpcyBhCisgICAgICAgaG9yaXpvbnRhbCBjb21iaW5hdGlvbiwgZmFsc2UgaWYgaXQgaXMg YSB2ZXJ0aWNhbAorICAgICAgIGNvbWJpbmF0aW9uLiAgKi8KICAgICBib29sX2JmIGhvcml6 b250YWwgOiAxOwoKICAgICAvKiBUcnVlIG1lYW5zIG11c3QgcmVnZW5lcmF0ZSBtb2RlIGxp bmUgb2YgdGhpcyB3aW5kb3cuICAqLwpAQCAtNDgxLDE1ICs0ODIsMTQgQEAgc3RydWN0IHdp bmRvdwogLyogVHJ1ZSBpZiBXIGlzIGEgbWluaWJ1ZmZlciB3aW5kb3cuICAqLwogI2RlZmlu ZSBNSU5JX1dJTkRPV19QKFcpICgoVyktPm1pbmkpCgotLyogMSBpZiBXIGlzIGEgbm9uLW9u bHkgbWluaWJ1ZmZlciB3aW5kb3cuICAqLwotLyogVGhlIGZpcnN0IGNoZWNrIGlzIHJlZHVu ZGFudCBhbmQgdGhlIHNlY29uZCBvdmVybHkgY29tcGxpY2F0ZWQuICovCi0jZGVmaW5lIE1J TklfTk9OX09OTFlfV0lORE9XX1AoVykJCQkJXAotICAoTUlOSV9XSU5ET1dfUCAoVykJCQkJ CQlcCi0gICAmJiAoRVEgKFctPnByZXYsIEZSQU1FX1JPT1RfV0lORE9XIChXSU5ET1dfWEZS QU1FIChXKSkpKSkKKy8qIFRydWUgaWYgVyBpcyBhIG1pbmlidWZmZXIgd2luZG93IG9uIGEg ZnJhbWUgdGhhdCBjb250YWlucyBhdCBsZWFzdAorICAgb25lIG90aGVyIHdpbmRvdy4gICov CisjZGVmaW5lIE1JTklfTk9OX09OTFlfV0lORE9XX1AoVykJIFwKKyAgKE1JTklfV0lORE9X X1AgKFcpICYmICFOSUxQICgoVyktPnByZXYpKQoKLS8qIDEgaWYgVyBpcyBhIG1pbmlidWZm ZXItb25seSB3aW5kb3cuICAqLwotI2RlZmluZSBNSU5JX09OTFlfV0lORE9XX1AoVykJCQlc Ci0gIChNSU5JX1dJTkRPV19QIChXKSAmJiBOSUxQIChXLT5wcmV2KSkKKy8qIFRydWUgaWYg VyBpcyBhIG1pbmlidWZmZXIgd2luZG93IHRoYXQgaXMgYWxvbmUgb24gaXRzIGZyYW1lLiAg Ki8KKyNkZWZpbmUgTUlOSV9PTkxZX1dJTkRPV19QKFcpCQkgXAorICAoTUlOSV9XSU5ET1df UCAoVykgJiYgTklMUCAoKFcpLT5wcmV2KSkKCiAvKiBHZW5lcmFsIHdpbmRvdyBsYXlvdXQ6 CgpAQCAtNTE4LDI5ICs1MTgsMzQgQEAgc3RydWN0IHdpbmRvdwoKIC8qIEEgaGFuZHkgbWFj cm8uICAqLwoKLS8qIE5vbi1uaWwgaWYgVyBpcyBsZWFmIChjYXJyeSB0aGUgYnVmZmVyKS4g ICovCi0KKy8qIE5vbi1uaWwgaWYgd2luZG93IFcgaXMgbGVhZiB3aW5kb3cgKGhhcyBhIGJ1 ZmZlcikuICAqLwogI2RlZmluZSBXSU5ET1dfTEVBRl9QKFcpIFwKICAgKEJVRkZFUlAgKChX KS0+Y29udGVudHMpKQoKLS8qIE5vbi1uaWwgaWYgVyBpcyBpbnRlcm5hbC4gICovCisvKiBO b24tbmlsIGlmIHdpbmRvdyBXIGlzIGludGVybmFsIChpcyBhIHBhcmVudCB3aW5kb3cpLiAg Ki8KICNkZWZpbmUgV0lORE9XX0lOVEVSTkFMX1AoVykgXAogICAoV0lORE9XUCAoKFcpLT5j b250ZW50cykpCgotLyogVHJ1ZSBpZiBXIGlzIGEgbWVtYmVyIG9mIGhvcml6b250YWwgY29t YmluYXRpb24uICAqLworLyogVHJ1ZSBpZiB3aW5kb3cgVyBpcyBhIGhvcml6b250YWwgY29t YmluYXRpb24gb2Ygd2luZG93cy4gICovCiAjZGVmaW5lIFdJTkRPV19IT1JJWk9OVEFMX0NP TUJJTkFUSU9OX1AoVykgXAogICAoV0lORE9XX0lOVEVSTkFMX1AgKFcpICYmIChXKS0+aG9y aXpvbnRhbCkKCi0vKiBUcnVlIGlmIFcgaXMgYSBtZW1iZXIgb2YgdmVydGljYWwgY29tYmlu YXRpb24uICAqLworLyogVHJ1ZSBpZiB3aW5kb3cgVyBpcyBhIHZlcnRpY2FsIGNvbWJpbmF0 aW9uIG9mIHdpbmRvd3MuICAqLwogI2RlZmluZSBXSU5ET1dfVkVSVElDQUxfQ09NQklOQVRJ T05fUChXKSBcCiAgIChXSU5ET1dfSU5URVJOQUxfUCAoVykgJiYgIShXKS0+aG9yaXpvbnRh bCkKCi0vKiBXSU5ET1cncyBYRlJBTUUuICAqLworLyogV2luZG93IFcncyBYRlJBTUUuICAq LwogI2RlZmluZSBXSU5ET1dfWEZSQU1FKFcpIChYRlJBTUUgKFdJTkRPV19GUkFNRSAoKFcp KSkpCgotLyogV2hldGhlciBXSU5ET1cgaXMgYSBwc2V1ZG8gd2luZG93LiAgKi8KKy8qIFdo ZXRoZXIgd2luZG93IFcgaXMgYSBwc2V1ZG8gd2luZG93LiAgKi8KICNkZWZpbmUgV0lORE9X X1BTRVVET19QKFcpICgoVyktPnBzZXVkb193aW5kb3dfcCkKCisvKiBXaW5kb3cgVydzIGJ1 ZmZlci4gICovCisjZGVmaW5lIFdJTkRPV19CVUZGRVIoVykJCQlcCisgIChXSU5ET1dfTEVB Rl9QKFcpCQkJCVwKKyAgID8gKFcpLT5jb250ZW50cwkJCQlcCisgICA6IFFuaWwpCQkJCQlc CisKIC8qIFJldHVybiB0aGUgY2Fub25pY2FsIGNvbHVtbiB3aWR0aCBvZiB0aGUgZnJhbWUg b2Ygd2luZG93IFcuICAqLwogI2RlZmluZSBXSU5ET1dfRlJBTUVfQ09MVU1OX1dJRFRIKFcp IFwKICAgKEZSQU1FX0NPTFVNTl9XSURUSCAoV0lORE9XX1hGUkFNRSAoKFcpKSkpCkBAIC01 NDksMjQgKzU1NCwyNCBAQCBzdHJ1Y3Qgd2luZG93CiAjZGVmaW5lIFdJTkRPV19GUkFNRV9M SU5FX0hFSUdIVChXKSBcCiAgIChGUkFNRV9MSU5FX0hFSUdIVCAoV0lORE9XX1hGUkFNRSAo KFcpKSkpCgotLyogUmV0dXJuIHRoZSBwaXhlbCB3aWR0aCBvZiB3aW5kb3cgVy4KLSAgIFRo aXMgaW5jbHVkZXMgc2Nyb2xsIGJhcnMgYW5kIGZyaW5nZXMuICAqLworLyogUmV0dXJuIHRo ZSBwaXhlbCB3aWR0aCBvZiB3aW5kb3cgVy4gIFRoaXMgaW5jbHVkZXMgZGl2aWRlcnMsIHNj cm9sbAorICAgYmFycywgZnJpbmdlcyBhbmQgbWFyZ2lucywgaWYgYW55LiAgKi8KICNkZWZp bmUgV0lORE9XX1BJWEVMX1dJRFRIKFcpIChXKS0+cGl4ZWxfd2lkdGgKCi0vKiBSZXR1cm4g dGhlIHBpeGVsIGhlaWdodCBvZiB3aW5kb3cgVy4KLSAgIFRoaXMgaW5jbHVkZXMgaGVhZGVy IGFuZCBtb2RlIGxpbmVzLCBpZiBhbnkuICAqLworLyogUmV0dXJuIHRoZSBwaXhlbCBoZWln aHQgb2Ygd2luZG93IFcuICBUaGlzIGluY2x1ZGVzIGRpdmlkZXJzLCBzY3JvbGwKKyAgIGJh cnMsIGhlYWRlciBhbmQgbW9kZSBsaW5lcywgaWYgYW55LiAgKi8KICNkZWZpbmUgV0lORE9X X1BJWEVMX0hFSUdIVChXKSAoVyktPnBpeGVsX2hlaWdodAoKLS8qIFJldHVybiB0aGUgd2lk dGggb2Ygd2luZG93IFcgaW4gY2Fub25pY2FsIGNvbHVtbiB1bml0cy4KLSAgIFRoaXMgaW5j bHVkZXMgc2Nyb2xsIGJhcnMgYW5kIGZyaW5nZXMuCi0gICBUaGlzIHZhbHVlIGlzIGFkanVz dGVkIHN1Y2ggdGhhdCB0aGUgc3VtIG9mIHRoZSB3aWR0aHMgb2YgYWxsIGNoaWxkCisvKiBS ZXR1cm4gdGhlIHdpZHRoIG9mIHdpbmRvdyBXIGluIGNhbm9uaWNhbCBjb2x1bW4gdW5pdHMu ICBUaGlzCisgICBpbmNsdWRlcyBkaXZpZGVycywgc2Nyb2xsIGJhcnMsIGZyaW5nZXMgYW5k IG1hcmdpbnMsIGlmIGFueS4gIFRoZQorICAgdmFsdWUgaXMgYWRqdXN0ZWQgc3VjaCB0aGF0 IHRoZSBzdW0gb2YgdGhlIHdpZHRocyBvZiBhbGwgY2hpbGQKICAgIHdpbmRvd3MgZXF1YWxz IHRoZSB3aWR0aCBvZiB0aGVpciBwYXJlbnQgd2luZG93LiAgKi8KICNkZWZpbmUgV0lORE9X X1RPVEFMX0NPTFMoVykgKFcpLT50b3RhbF9jb2xzCgotLyogUmV0dXJuIHRoZSBoZWlnaHQg b2Ygd2luZG93IFcgaW4gY2Fub25pY2FsIGxpbmUgdW5pdHMuCi0gICBUaGlzIGluY2x1ZGVz IGhlYWRlciBhbmQgbW9kZSBsaW5lcywgaWYgYW55LgotICAgVGhpcyB2YWx1ZSBpcyBhZGp1 c3RlZCBzdWNoIHRoYXQgdGhlIHN1bSBvZiB0aGUgaGVpZ2h0cyBvZiBhbGwgY2hpbGQKLSAg IHdpbmRvd3MgZXF1YWxzIHRoZSBoZWlnaHQgb2YgdGhlaXIgcGFyZW50IHdpbmRvdy4gICov CisvKiBSZXR1cm4gdGhlIGhlaWdodCBvZiB3aW5kb3cgVyBpbiBjYW5vbmljYWwgbGluZSB1 bml0cy4gIFRoaXMgaW5jbHVkZXMKKyAgIGRpdmlkZXJzLCBzY3JvbGwgYmFycywgaGVhZGVy IGFuZCBtb2RlIGxpbmVzLCBpZiBhbnkuICBUaGUgdmFsdWUgaXMKKyAgIGFkanVzdGVkIHN1 Y2ggdGhhdCB0aGUgc3VtIG9mIHRoZSBoZWlnaHRzIG9mIGFsbCBjaGlsZCB3aW5kb3dzIGVx dWFscworICAgdGhlIGhlaWdodCBvZiB0aGVpciBwYXJlbnQgd2luZG93LiAgKi8KICNkZWZp bmUgV0lORE9XX1RPVEFMX0xJTkVTKFcpIChXKS0+dG90YWxfbGluZXMKCiAvKiBUaGUgc21h bGxlc3QgYWNjZXB0YWJsZSBkaW1lbnNpb25zIGZvciBhIHdpbmRvdy4gIEFueXRoaW5nIHNt YWxsZXIKQEAgLTU4MSwzMSArNTg2LDYzIEBAIHN0cnVjdCB3aW5kb3cKICNkZWZpbmUgTUlO X1NBRkVfV0lORE9XX1BJWEVMX0hFSUdIVChXKSBcCiAgIChXSU5ET1dfRlJBTUVfTElORV9I RUlHSFQgKFcpKQoKKy8qIFRydWUgaWYgd2luZG93IFcgaGFzIG5vIG90aGVyIHdpbmRvd3Mg dG8gaXRzIGxlZnQgb24gaXRzIGZyYW1lLiAgKi8KKyNkZWZpbmUgV0lORE9XX0xFRlRNT1NU X1AoVykJCQlcCisgIChXSU5ET1dfTEVGVF9QSVhFTF9FREdFIChXKSA9PSAwKQorCisvKiBU cnVlIGlmIHdpbmRvdyBXIGhhcyBubyBvdGhlciB3aW5kb3dzIGFib3ZlIGl0IG9uIGl0cyBm cmFtZS4gICovCisjZGVmaW5lIFdJTkRPV19UT1BNT1NUX1AoVykJCQlcCisgIChXSU5ET1df VE9QX1BJWEVMX0VER0UgKFcpID09IDApCisKKy8qIFRydWUgaWYgd2luZG93IFcgaGFzIG5v IG90aGVyIHdpbmRvd3MgdG8gaXRzIHJpZ2h0IG9uIGl0cyBmcmFtZS4gICovCisjZGVmaW5l IFdJTkRPV19SSUdIVE1PU1RfUChXKQkJCQkJXAorICAoV0lORE9XX1JJR0hUX1BJWEVMX0VE R0UgKFcpCQkJCQlcCisgICA9PSAoV0lORE9XX1JJR0hUX1BJWEVMX0VER0UJCQkJCVwKKyAg ICAgICAoWFdJTkRPVyAoRlJBTUVfUk9PVF9XSU5ET1cgKFdJTkRPV19YRlJBTUUgKFcpKSkp KSkJXAorCisvKiBUcnVlIGlmIHdpbmRvdyBXIGhhcyBubyBvdGhlciB3aW5kb3dzIGJlbG93 IGl0IG9uIGl0cyBmcmFtZSAodGhlCisgICBtaW5pYnVmZmVyIHdpbmRvdyBpcyBub3QgY291 bnRlZCBpbiB0aGlzIHJlc3BlY3QgdW5sZXNzIFcgaXRzZWxmIGlzIGEKKyAgIG1pbmlidWZm ZXIgd2luZG93KS4gICovCisjZGVmaW5lIFdJTkRPV19CT1RUT01NT1NUX1AoVykJCQkJCVwK KyAgKFdJTkRPV19CT1RUT01fUElYRUxfRURHRSAoVykJCQkJCVwKKyAgID09IChXSU5ET1df Qk9UVE9NX1BJWEVMX0VER0UJCQkJCVwKKyAgICAgICAoWFdJTkRPVyAoRlJBTUVfUk9PVF9X SU5ET1cgKFdJTkRPV19YRlJBTUUgKFcpKSkpKSkJXAorCisvKiBUcnVlIGlmIHdpbmRvdyBX IHRha2VzIHVwIHRoZSBmdWxsIHdpZHRoIG9mIGl0cyBmcmFtZS4gICovCisjZGVmaW5lIFdJ TkRPV19GVUxMX1dJRFRIX1AoVykJCQkJCVwKKyAgKFdJTkRPV19QSVhFTF9XSURUSCAoVykJ CQkJCVwKKyAgID09IChXSU5ET1dfUElYRUxfV0lEVEgJCQkJCVwKKyAgICAgICAoWFdJTkRP VyAoRlJBTUVfUk9PVF9XSU5ET1cgKFdJTkRPV19YRlJBTUUgKFcpKSkpKSkJXAorCiAvKiBX aWR0aCBvZiByaWdodCBkaXZpZGVyIG9mIHdpbmRvdyBXLiAgKi8KICNkZWZpbmUgV0lORE9X X1JJR0hUX0RJVklERVJfV0lEVEgoVykJCQkJXAotICAoKFdJTkRPV19SSUdIVE1PU1RfUCAo VykgfHwgTUlOSV9XSU5ET1dfUCAoVykpCQlcCi0gICA/IDAJCQkJCQkJCVwKLSAgIDogRlJB TUVfUklHSFRfRElWSURFUl9XSURUSCAoV0lORE9XX1hGUkFNRSAoVykpKQorICAoV0lORE9X X1JJR0hUTU9TVF9QIChXKQkJCQkJXAorICAgPyAwIDogRlJBTUVfUklHSFRfRElWSURFUl9X SURUSCAoV0lORE9XX1hGUkFNRSAoVykpKQorCisvKiBXaWR0aCBvZiBib3R0b20gZGl2aWRl ciBvZiB3aW5kb3cgVy4gICovCisjZGVmaW5lIFdJTkRPV19CT1RUT01fRElWSURFUl9XSURU SChXKQkJCQkJXAorICAoKChXSU5ET1dfQk9UVE9NTU9TVF9QIChXKQkJCQkJCVwKKyAgICAg JiYgTklMUCAoKFhXSU5ET1cgKEZSQU1FX1JPT1RfV0lORE9XCQkJCVwKKwkJCShXSU5ET1df WEZSQU1FIChXKSkpKS0+bmV4dCkpCQkJXAorICAgIHx8IEVRICgoVyktPnByZXYsIEZSQU1F X1JPT1RfV0lORE9XIChXSU5ET1dfWEZSQU1FIChXKSkpCQlcCisgICAgfHwgKFcpLT5wc2V1 ZG9fd2luZG93X3ApCQkJCQkJXAorICAgPyAwIDogRlJBTUVfQk9UVE9NX0RJVklERVJfV0lE VEggKFdJTkRPV19YRlJBTUUgKFcpKSkKCiAvKiBSZXR1cm4gdGhlIGNhbm9uaWNhbCBmcmFt ZSBjb2x1bW4gYXQgd2hpY2ggd2luZG93IFcgc3RhcnRzLgogICAgVGhpcyBpbmNsdWRlcyBh IGxlZnQtaGFuZCBzY3JvbGwgYmFyLCBpZiBhbnkuICAqLwotCiAjZGVmaW5lIFdJTkRPV19M RUZUX0VER0VfQ09MKFcpIChXKS0+bGVmdF9jb2wKCiAvKiBSZXR1cm4gdGhlIGNhbm9uaWNh bCBmcmFtZSBjb2x1bW4gYmVmb3JlIHdoaWNoIHdpbmRvdyBXIGVuZHMuCiAgICBUaGlzIGlu Y2x1ZGVzIGEgcmlnaHQtaGFuZCBzY3JvbGwgYmFyLCBpZiBhbnkuICAqLwotCiAjZGVmaW5l IFdJTkRPV19SSUdIVF9FREdFX0NPTChXKSBcCiAgIChXSU5ET1dfTEVGVF9FREdFX0NPTCAo VykgKyBXSU5ET1dfVE9UQUxfQ09MUyAoVykpCgogLyogUmV0dXJuIHRoZSBjYW5vbmljYWwg ZnJhbWUgbGluZSBhdCB3aGljaCB3aW5kb3cgVyBzdGFydHMuCiAgICBUaGlzIGluY2x1ZGVz IGEgaGVhZGVyIGxpbmUsIGlmIGFueS4gICovCi0KICNkZWZpbmUgV0lORE9XX1RPUF9FREdF X0xJTkUoVykgKFcpLT50b3BfbGluZQoKIC8qIFJldHVybiB0aGUgY2Fub25pY2FsIGZyYW1l IGxpbmUgYmVmb3JlIHdoaWNoIHdpbmRvdyBXIGVuZHMuCiAgICBUaGlzIGluY2x1ZGVzIGEg bW9kZSBsaW5lLCBpZiBhbnkuICAqLwotCiAjZGVmaW5lIFdJTkRPV19CT1RUT01fRURHRV9M SU5FKFcpIFwKICAgKFdJTkRPV19UT1BfRURHRV9MSU5FIChXKSArIFdJTkRPV19UT1RBTF9M SU5FUyAoVykpCgpAQCAtNjI5LDIwICs2NjYsMTcgQEAgc3RydWN0IHdpbmRvdwoKIC8qIFJl dHVybiB0aGUgZnJhbWUgeC1wb3NpdGlvbiBhdCB3aGljaCB3aW5kb3cgVyBzdGFydHMuCiAg ICBUaGlzIGluY2x1ZGVzIGEgbGVmdC1oYW5kIHNjcm9sbCBiYXIsIGlmIGFueS4gICovCi0K ICNkZWZpbmUgV0lORE9XX0xFRlRfRURHRV9YKFcpIFwKICAgKEZSQU1FX0lOVEVSTkFMX0JP UkRFUl9XSURUSCAoV0lORE9XX1hGUkFNRSAoVykpIFwKICAgICsgV0lORE9XX0xFRlRfUElY RUxfRURHRSAoVykpCgogLyogUmV0dXJuIHRoZSBmcmFtZSB4LSBwb3NpdGlvbiBiZWZvcmUg d2hpY2ggd2luZG93IFcgZW5kcy4KICAgIFRoaXMgaW5jbHVkZXMgYSByaWdodC1oYW5kIHNj cm9sbCBiYXIsIGlmIGFueS4gICovCi0KICNkZWZpbmUgV0lORE9XX1JJR0hUX0VER0VfWChX KSBcCiAgIChGUkFNRV9JTlRFUk5BTF9CT1JERVJfV0lEVEggKFdJTkRPV19YRlJBTUUgKFcp KSBcCiAgICArIFdJTkRPV19SSUdIVF9QSVhFTF9FREdFIChXKSkKCiAvKiBUcnVlIGlmIFcg aXMgYSBtZW51IGJhciB3aW5kb3cuICAqLwotCiAjaWYgZGVmaW5lZCAoSEFWRV9YX1dJTkRP V1MpICYmICEgZGVmaW5lZCAoVVNFX1hfVE9PTEtJVCkgJiYgISBkZWZpbmVkIChVU0VfR1RL KQogI2RlZmluZSBXSU5ET1dfTUVOVV9CQVJfUChXKSBcCiAgIChXSU5ET1dQIChXSU5ET1df WEZSQU1FIChXKS0+bWVudV9iYXJfd2luZG93KSBcCkBAIC02NjEsNzIgKzY5NSwyNCBAQCBz dHJ1Y3Qgd2luZG93CiAjZGVmaW5lIFdJTkRPV19UT09MX0JBUl9QKFcpIGZhbHNlCiAjZW5k aWYKCi0vKiBSZXR1cm4gdGhlIGZyYW1lIHktcG9zaXRpb24gYXQgd2hpY2ggd2luZG93IFcg c3RhcnRzLgotICAgVGhpcyBpbmNsdWRlcyBhIGhlYWRlciBsaW5lLCBpZiBhbnkuCi0KLSAg IFBYVzogV2l0aCBhIG1lbnUgb3IgdG9vbCBiYXIgdGhpcyBpcyBub3Qgc3ltbWV0cmljIHRv IHRoZSBfWCB2YWx1ZXMKLSAgIHNpbmNlIGl0IF9kb2VzXyBpbmNsdWRlIHRoZSBpbnRlcm5h bCBib3JkZXIgd2lkdGguICAqLworLyogUmV0dXJuIHRoZSBmcmFtZSB5LXBvc2l0aW9uIGF0 IHdoaWNoIHdpbmRvdyBXIHN0YXJ0cy4gICovCiAjZGVmaW5lIFdJTkRPV19UT1BfRURHRV9Z KFcpIFwKICAgKCgoV0lORE9XX01FTlVfQkFSX1AgKFcpIHx8IFdJTkRPV19UT09MX0JBUl9Q IChXKSkgXAogICAgID8gMCA6IEZSQU1FX0lOVEVSTkFMX0JPUkRFUl9XSURUSCAoV0lORE9X X1hGUkFNRSAoVykpKSBcCiAgICArIFdJTkRPV19UT1BfUElYRUxfRURHRSAoVykpCgotLyog UmV0dXJuIHRoZSBmcmFtZSB5LXBvc2l0aW9uIGJlZm9yZSB3aGljaCB3aW5kb3cgVyBlbmRz LgotICAgVGhpcyBpbmNsdWRlcyBhIG1vZGUgbGluZSwgaWYgYW55LiAgKi8KKy8qIFJldHVy biB0aGUgZnJhbWUgeS1wb3NpdGlvbiBiZWZvcmUgd2hpY2ggd2luZG93IFcgZW5kcy4gICov CiAjZGVmaW5lIFdJTkRPV19CT1RUT01fRURHRV9ZKFcpCQkJCSAgIFwKICAgKCgoV0lORE9X X01FTlVfQkFSX1AgKFcpIHx8IFdJTkRPV19UT09MX0JBUl9QIChXKSkJICAgXAogICAgID8g MCA6IEZSQU1FX0lOVEVSTkFMX0JPUkRFUl9XSURUSCAoV0lORE9XX1hGUkFNRSAoVykpKSBc CiAgICArIFdJTkRPV19CT1RUT01fUElYRUxfRURHRSAoVykpCgotLyogVHJ1ZSBpZiB3aW5k b3cgVyB0YWtlcyB1cCB0aGUgZnVsbCB3aWR0aCBvZiBpdHMgZnJhbWUuICAqLwotI2RlZmlu ZSBXSU5ET1dfRlVMTF9XSURUSF9QKFcpCQkJCQlcCi0gIChXSU5ET1dfUElYRUxfV0lEVEgg KFcpCQkJCQlcCi0gICA9PSAoV0lORE9XX1BJWEVMX1dJRFRICQkJCQlcCi0gICAgICAgKFhX SU5ET1cgKEZSQU1FX1JPT1RfV0lORE9XIChXSU5ET1dfWEZSQU1FIChXKSkpKSkpCVwKLQot LyogVHJ1ZSBpZiB3aW5kb3cgVydzIGhhcyBubyBvdGhlciB3aW5kb3dzIHRvIGl0cyBsZWZ0 IGluIGl0cyBmcmFtZS4gICovCi0KLSNkZWZpbmUgV0lORE9XX0xFRlRNT1NUX1AoVykgXAot ICAoV0lORE9XX0xFRlRfUElYRUxfRURHRSAoVykgPT0gMCkKLQotLyogVHJ1ZSBpZiB3aW5k b3cgVydzIGhhcyBubyBvdGhlciB3aW5kb3dzIGFib3ZlIGluIGl0cyBmcmFtZS4gICovCi0j ZGVmaW5lIFdJTkRPV19UT1BNT1NUX1AoVykgXAotICAoV0lORE9XX1RPUF9QSVhFTF9FREdF IChXKSA9PSAwKQotCi0vKiBUcnVlIGlmIHdpbmRvdyBXJ3MgaGFzIG5vIG90aGVyIHdpbmRv d3MgdG8gaXRzIHJpZ2h0IGluIGl0cyBmcmFtZS4gICovCi0jZGVmaW5lIFdJTkRPV19SSUdI VE1PU1RfUChXKQkJCQkJXAotICAoV0lORE9XX1JJR0hUX1BJWEVMX0VER0UgKFcpCQkJCQlc Ci0gICA9PSAoV0lORE9XX1JJR0hUX1BJWEVMX0VER0UJCQkJCVwKLSAgICAgICAoWFdJTkRP VyAoRlJBTUVfUk9PVF9XSU5ET1cgKFdJTkRPV19YRlJBTUUgKFcpKSkpKSkJXAotCi0vKiBU cnVlIGlmIHdpbmRvdyBXJ3MgaGFzIG5vIG90aGVyIHdpbmRvd3MgYmVsb3cgaXQgaW4gaXRz IGZyYW1lCi0gICAodGhlIG1pbmlidWZmZXIgd2luZG93IGlzIG5vdCBjb3VudGVkIGluIHRo aXMgcmVzcGVjdCkuICAqLwotI2RlZmluZSBXSU5ET1dfQk9UVE9NTU9TVF9QKFcpCQkJCQlc Ci0gIChXSU5ET1dfQk9UVE9NX1BJWEVMX0VER0UgKFcpCQkJCQlcCi0gICA9PSAoV0lORE9X X0JPVFRPTV9QSVhFTF9FREdFCQkJCQlcCi0gICAgICAgKFhXSU5ET1cgKEZSQU1FX1JPT1Rf V0lORE9XIChXSU5ET1dfWEZSQU1FIChXKSkpKSkpCVwKLQotLyogUmV0dXJuIHRoZSBmcmFt ZSBjb2x1bW4gYXQgd2hpY2ggdGhlIHRleHQgKG9yIGxlZnQgZnJpbmdlKSBpbgotICAgd2lu ZG93IFcgc3RhcnRzLiAgVGhpcyBpcyBkaWZmZXJlbnQgZnJvbSB0aGUgYExFRlRfRURHRScg YmVjYXVzZSBpdAotICAgZG9lcyBub3QgaW5jbHVkZSBhIGxlZnQtaGFuZCBzY3JvbGwgYmFy IGlmIGFueS4gICovCi0jZGVmaW5lIFdJTkRPV19CT1hfTEVGVF9FREdFX0NPTChXKSBcCi0g IChXSU5ET1dfTEVGVF9FREdFX0NPTCAoVykgXAotICAgKyBXSU5ET1dfTEVGVF9TQ1JPTExf QkFSX0NPTFMgKFcpKQotCi0vKiBSZXR1cm4gdGhlIHBpeGVsIHZhbHVlIHdoZXJlIHRoZSB0 ZXh0IChvciBsZWZ0IGZyaW5nZSkgaW4KLSAgIHdpbmRvdyBXIHN0YXJ0cy4gIFRoaXMgaXMg ZGlmZmVyZW50IGZyb20gdGhlIGBMRUZUX0VER0UnIGJlY2F1c2UgaXQKLSAgIGRvZXMgbm90 IGluY2x1ZGUgYSBsZWZ0LWhhbmQgc2Nyb2xsIGJhciBpZiBhbnkuICAqLworLyogUmV0dXJu IHRoZSBwaXhlbCB2YWx1ZSB3aGVyZSB0aGUgdGV4dCAob3IgbGVmdCBmcmluZ2UpIGluIHdp bmRvdyBXCisgICBzdGFydHMuICAqLwogI2RlZmluZSBXSU5ET1dfQk9YX0xFRlRfUElYRUxf RURHRShXKQkJXAogICAoV0lORE9XX0xFRlRfUElYRUxfRURHRSAoVykJCQlcCiAgICArIFdJ TkRPV19MRUZUX1NDUk9MTF9CQVJfQVJFQV9XSURUSCAoVykpCgotLyogUmV0dXJuIHRoZSB3 aW5kb3cgY29sdW1uIGJlZm9yZSB3aGljaCB0aGUgdGV4dCBpbiB3aW5kb3cgVyBlbmRzLgot ICAgVGhpcyBpcyBkaWZmZXJlbnQgZnJvbSBXSU5ET1dfUklHSFRfRURHRV9DT0wgYmVjYXVz ZSBpdCBkb2VzIG5vdAotICAgaW5jbHVkZSBhIHNjcm9sbCBiYXIgb3Igd2luZG93LXNlcGFy YXRpbmcgbGluZSBvbiB0aGUgcmlnaHQgZWRnZS4gICovCi0jZGVmaW5lIFdJTkRPV19CT1hf UklHSFRfRURHRV9DT0woVykgXAotICAoV0lORE9XX1JJR0hUX0VER0VfQ09MIChXKSBcCi0g ICAtIFdJTkRPV19SSUdIVF9TQ1JPTExfQkFSX0NPTFMgKFcpKQotCiAvKiBSZXR1cm4gdGhl IHBpeGVsIHZhbHVlIGJlZm9yZSB3aGljaCB0aGUgdGV4dCBpbiB3aW5kb3cgVyBlbmRzLiAg VGhpcwogICAgaXMgZGlmZmVyZW50IGZyb20gdGhlIGBSSUdIVF9FREdFJyBiZWNhdXNlIGl0 IGRvZXMgbm90IGluY2x1ZGUgYQogICAgcmlnaHQtaGFuZCBzY3JvbGwgYmFyIG9yIHdpbmRv dy1zZXBhcmF0aW5nIGxpbmUgb24gdGhlIHJpZ2h0CkBAIC03MzYsMTYgKzcyMiwxNiBAQCBz dHJ1Y3Qgd2luZG93CiAgICAtIFdJTkRPV19SSUdIVF9ESVZJREVSX1dJRFRIIChXKQkJXAog ICAgLSBXSU5ET1dfUklHSFRfU0NST0xMX0JBUl9BUkVBX1dJRFRIIChXKSkKCi0vKiBSZXR1 cm4gdGhlIGZyYW1lIHBvc2l0aW9uIGF0IHdoaWNoIHRoZSB0ZXh0IChvciBsZWZ0IGZyaW5n ZSkgaW4KLSAgIHdpbmRvdyBXIHN0YXJ0cy4gIFRoaXMgaXMgZGlmZmVyZW50IGZyb20gdGhl IGBMRUZUX0VER0UnIGJlY2F1c2UgaXQKLSAgIGRvZXMgbm90IGluY2x1ZGUgYSBsZWZ0LWhh bmQgc2Nyb2xsIGJhciBpZiBhbnkuICAqLworLyogUmV0dXJuIHRoZSBmcmFtZSB4LXBvc2l0 aW9uIGF0IHdoaWNoIHRoZSB0ZXh0IChvciBsZWZ0IGZyaW5nZSkgaW4KKyAgIHdpbmRvdyBX IHN0YXJ0cy4gIFRoaXMgZG9lcyBub3QgaW5jbHVkZSBhIGxlZnQtaGFuZCBzY3JvbGwgYmFy IGlmCisgICBhbnkuICAqLwogI2RlZmluZSBXSU5ET1dfQk9YX0xFRlRfRURHRV9YKFcpCQkg ICBcCiAgIChGUkFNRV9JTlRFUk5BTF9CT1JERVJfV0lEVEggKFdJTkRPV19YRlJBTUUgKFcp KSBcCiAgICArIFdJTkRPV19CT1hfTEVGVF9QSVhFTF9FREdFIChXKSkKCi0vKiBSZXR1cm4g dGhlIHdpbmRvdyBjb2x1bW4gYmVmb3JlIHdoaWNoIHRoZSB0ZXh0IGluIHdpbmRvdyBXIGVu ZHMuCi0gICBUaGlzIGlzIGRpZmZlcmVudCBmcm9tIFdJTkRPV19SSUdIVF9FREdFX0NPTCBi ZWNhdXNlIGl0IGRvZXMgbm90Ci0gICBpbmNsdWRlIGEgc2Nyb2xsIGJhciBvciB3aW5kb3ct c2VwYXJhdGluZyBsaW5lIG9uIHRoZSByaWdodCBlZGdlLiAgKi8KKy8qIFJldHVybiB0aGUg ZnJhbWUgeC1wb3NpdGlvbiBiZWZvcmUgd2hpY2ggdGhlIHRleHQgaW4gd2luZG93IFcgZW5k cy4KKyAgIFRoaXMgZG9lcyBub3QgaW5jbHVkZSBhIHNjcm9sbCBiYXIsIGRpdmlkZXIgb3Ig d2luZG93LXNlcGFyYXRpbmcgbGluZQorICAgb24gdGhlIHJpZ2h0IGVkZ2UuICAqLwogI2Rl ZmluZSBXSU5ET1dfQk9YX1JJR0hUX0VER0VfWChXKQkJICAgXAogICAoRlJBTUVfSU5URVJO QUxfQk9SREVSX1dJRFRIIChXSU5ET1dfWEZSQU1FIChXKSkgXAogICAgKyBXSU5ET1dfQk9Y X1JJR0hUX1BJWEVMX0VER0UgKFcpKQpAQCAtODk5LDE2ICs4ODUsNiBAQCBzdHJ1Y3Qgd2lu ZG93CiAgICA/IFdJTkRPV19CT1hfUklHSFRfRURHRV9YIChXKQkJXAogICAgOiBXSU5ET1df TEVGVF9FREdFX1ggKFcpKQoKLS8qIFdpZHRoIG9mIGJvdHRvbSBkaXZpZGVyIG9mIHdpbmRv dyBXLiAgKi8KLSNkZWZpbmUgV0lORE9XX0JPVFRPTV9ESVZJREVSX1dJRFRIKFcpCQkJCQlc Ci0gICgoKFdJTkRPV19CT1RUT01NT1NUX1AgKFcpCQkJCQkJXAotICAgICAmJiBOSUxQICgo WFdJTkRPVyAoRlJBTUVfUk9PVF9XSU5ET1cJCQkJXAotCQkJKFdJTkRPV19YRlJBTUUgKFcp KSkpLT5uZXh0KSkJCQlcCi0gICAgfHwgRVEgKChXKS0+cHJldiwgRlJBTUVfUk9PVF9XSU5E T1cgKFdJTkRPV19YRlJBTUUgKFcpKSkJCVwKLSAgICB8fCAoVyktPnBzZXVkb193aW5kb3df cCkJCQkJCQlcCi0gICA/IDAJCQkJCQkJCQlcCi0gICA6IEZSQU1FX0JPVFRPTV9ESVZJREVS X1dJRFRIIChXSU5ET1dfWEZSQU1FIChXKSkpCi0KIC8qIEhlaWdodCB0aGF0IGEgc2Nyb2xs IGJhciBpbiB3aW5kb3cgVyBzaG91bGQgaGF2ZSwgaWYgdGhlcmUgaXMgb25lLgogICAgTWVh c3VyZWQgaW4gcGl4ZWxzLiAgSWYgc2Nyb2xsIGJhcnMgYXJlIHR1cm5lZCBvZmYsIHRoaXMg aXMgc3RpbGwKICAgIG5vbnplcm8uICAqLwpAQCAtOTQyLDIyICs5MTgsMjIgQEAgc3RydWN0 IHdpbmRvdwogLyogSGVpZ2h0IGluIHBpeGVscyBvZiB0aGUgbW9kZSBsaW5lLgogICAgTWF5 IGJlIHplcm8gaWYgVyBkb2Vzbid0IGhhdmUgYSBtb2RlIGxpbmUuICAqLwogI2RlZmluZSBX SU5ET1dfTU9ERV9MSU5FX0hFSUdIVChXKQlcCi0gIChXSU5ET1dfV0FOVFNfTU9ERUxJTkVf UCAoKFcpKQlcCisgICh3aW5kb3dfd2FudHNfbW9kZV9saW5lICgoVykpCQlcCiAgICA/IENV UlJFTlRfTU9ERV9MSU5FX0hFSUdIVCAoVykJXAogICAgOiAwKQoKICNkZWZpbmUgV0lORE9X X01PREVfTElORV9MSU5FUyhXKQlcCi0gIFdJTkRPV19XQU5UU19NT0RFTElORV9QIChXKQor ICB3aW5kb3dfd2FudHNfbW9kZV9saW5lIChXKQoKIC8qIEhlaWdodCBpbiBwaXhlbHMgb2Yg dGhlIGhlYWRlciBsaW5lLgogICAgWmVybyBpZiBXIGRvZXNuJ3QgaGF2ZSBhIGhlYWRlciBs aW5lLiAgKi8KICNkZWZpbmUgV0lORE9XX0hFQURFUl9MSU5FX0hFSUdIVChXKQlcCi0gIChX SU5ET1dfV0FOVFNfSEVBREVSX0xJTkVfUCAoVykJXAorICAod2luZG93X3dhbnRzX2hlYWRl cl9saW5lIChXKQkJXAogICAgPyBDVVJSRU5UX0hFQURFUl9MSU5FX0hFSUdIVCAoVykJXAog ICAgOiAwKQoKICNkZWZpbmUgV0lORE9XX0hFQURFUl9MSU5FX0xJTkVTKFcpCVwKLSAgV0lO RE9XX1dBTlRTX0hFQURFUl9MSU5FX1AgKFcpCisgIHdpbmRvd193YW50c19oZWFkZXJfbGlu ZSAoVykKCiAvKiBQaXhlbCBoZWlnaHQgb2Ygd2luZG93IFcgd2l0aG91dCBtb2RlIGxpbmUs IGJvdHRvbSBzY3JvbGwgYmFyIGFuZAogICAgYm90dG9tIGRpdmlkZXIuICAqLwpAQCAtMTEx NCwxMCArMTA5MCwxMyBAQCB2b2lkIHNldF93aW5kb3dfYnVmZmVyIChMaXNwX09iamVjdCB3 aW5kb3csIExpc3BfT2JqZWN0IGJ1ZmZlciwKIGV4dGVybiBMaXNwX09iamVjdCBWd2luZG93 X2xpc3Q7CgogZXh0ZXJuIExpc3BfT2JqZWN0IHdpbmRvd19saXN0ICh2b2lkKTsKK2V4dGVy biBMaXNwX09iamVjdCB3aW5kb3dfcGFyYW1ldGVyIChzdHJ1Y3Qgd2luZG93ICosIExpc3Bf T2JqZWN0IHBhcmFtZXRlcik7CiBleHRlcm4gc3RydWN0IHdpbmRvdyAqZGVjb2RlX2xpdmVf d2luZG93IChMaXNwX09iamVjdCk7CiBleHRlcm4gc3RydWN0IHdpbmRvdyAqZGVjb2RlX2Fu eV93aW5kb3cgKExpc3BfT2JqZWN0KTsKIGV4dGVybiBib29sIGNvbXBhcmVfd2luZG93X2Nv bmZpZ3VyYXRpb25zIChMaXNwX09iamVjdCwgTGlzcF9PYmplY3QsIGJvb2wpOwogZXh0ZXJu IHZvaWQgbWFya193aW5kb3dfY3Vyc29yc19vZmYgKHN0cnVjdCB3aW5kb3cgKik7CitleHRl cm4gYm9vbCB3aW5kb3dfd2FudHNfbW9kZV9saW5lIChzdHJ1Y3Qgd2luZG93ICopOworZXh0 ZXJuIGJvb2wgd2luZG93X3dhbnRzX2hlYWRlcl9saW5lIChzdHJ1Y3Qgd2luZG93ICopOwog ZXh0ZXJuIGludCB3aW5kb3dfaW50ZXJuYWxfaGVpZ2h0IChzdHJ1Y3Qgd2luZG93ICopOwog ZXh0ZXJuIGludCB3aW5kb3dfYm9keV93aWR0aCAoc3RydWN0IHdpbmRvdyAqdywgYm9vbCk7 CiBlbnVtIG1hcmdpbl91bml0IHsgTUFSR0lOX0lOX0xJTkVTLCBNQVJHSU5fSU5fUElYRUxT IH07CkBAIC0xMTMzLDcgKzExMTIsNiBAQCB2b2lkIHNldF93aW5kb3dfYnVmZmVyIChMaXNw X09iamVjdCB3aW5kb3csIExpc3BfT2JqZWN0IGJ1ZmZlciwKIGV4dGVybiB2b2lkIGluaXRf d2luZG93ICh2b2lkKTsKIGV4dGVybiB2b2lkIHN5bXNfb2Zfd2luZG93ICh2b2lkKTsKIGV4 dGVybiB2b2lkIGtleXNfb2Zfd2luZG93ICh2b2lkKTsKLQogLyogTW92ZSBjdXJzb3IgdG8g cm93L2NvbHVtbiBwb3NpdGlvbiBWUE9TL0hQT1MsIHBpeGVsIGNvb3JkaW5hdGVzCiAgICBZ L1guIEhQT1MvVlBPUyBhcmUgd2luZG93LXJlbGF0aXZlIHJvdyBhbmQgY29sdW1uIG51bWJl cnMgYW5kIFgvWQogICAgYXJlIHdpbmRvdy1yZWxhdGl2ZSBwaXhlbCBwb3NpdGlvbnMuICBU aGlzIGlzIGFsd2F5cyBkb25lIGR1cmluZwpkaWZmIC0tZ2l0IGEvc3JjL3hkaXNwLmMgYi9z cmMveGRpc3AuYwppbmRleCAzNGVlODc3Li43ODQ4NDg5IDEwMDY0NAotLS0gYS9zcmMveGRp c3AuYworKysgYi9zcmMveGRpc3AuYwpAQCAtOTIxLDcgKzkyMSw3IEBAIHN0YXRpYyBMaXNw X09iamVjdCBjYWxjX2xpbmVfaGVpZ2h0X3Byb3BlcnR5IChzdHJ1Y3QgaXQgKiwgTGlzcF9P YmplY3QsCgogICBoZWlnaHQgLT0gV0lORE9XX0JPVFRPTV9ESVZJREVSX1dJRFRIICh3KTsK Ci0gIGlmIChXSU5ET1dfV0FOVFNfTU9ERUxJTkVfUCAodykpCisgIGlmICh3aW5kb3dfd2Fu dHNfbW9kZV9saW5lICh3KSkKICAgICBoZWlnaHQgLT0gQ1VSUkVOVF9NT0RFX0xJTkVfSEVJ R0hUICh3KTsKCiAgIGhlaWdodCAtPSBXSU5ET1dfU0NST0xMX0JBUl9BUkVBX0hFSUdIVCAo dyk7CkBAIC05NzgsNyArOTc4LDcgQEAgc3RhdGljIExpc3BfT2JqZWN0IGNhbGNfbGluZV9o ZWlnaHRfcHJvcGVydHkgKHN0cnVjdCBpdCAqLCBMaXNwX09iamVjdCwKICAgICAgdGhlIGFw cHJvcHJpYXRlIGdseXBoIHJvdyBoYXMgaXRzIGBtb2RlX2xpbmVfcCcgZmxhZyBzZXQsCiAg ICAgIGFuZCBpZiBpdCBkb2Vzbid0LCB1c2VzIGVzdGltYXRlX21vZGVfbGluZV9oZWlnaHQg aW5zdGVhZC4gICovCgotICBpZiAoV0lORE9XX1dBTlRTX01PREVMSU5FX1AgKHcpKQorICBp ZiAod2luZG93X3dhbnRzX21vZGVfbGluZSAodykpCiAgICAgewogICAgICAgc3RydWN0IGds eXBoX3JvdyAqbWxfcm93CiAJPSAody0+Y3VycmVudF9tYXRyaXggJiYgdy0+Y3VycmVudF9t YXRyaXgtPnJvd3MKQEAgLTk5MCw3ICs5OTAsNyBAQCBzdGF0aWMgTGlzcF9PYmplY3QgY2Fs Y19saW5lX2hlaWdodF9wcm9wZXJ0eSAoc3RydWN0IGl0ICosIExpc3BfT2JqZWN0LAogCWhl aWdodCAtPSBlc3RpbWF0ZV9tb2RlX2xpbmVfaGVpZ2h0IChmLCBDVVJSRU5UX01PREVfTElO RV9GQUNFX0lEICh3KSk7CiAgICAgfQoKLSAgaWYgKFdJTkRPV19XQU5UU19IRUFERVJfTElO RV9QICh3KSkKKyAgaWYgKHdpbmRvd193YW50c19oZWFkZXJfbGluZSAodykpCiAgICAgewog ICAgICAgc3RydWN0IGdseXBoX3JvdyAqaGxfcm93CiAJPSAody0+Y3VycmVudF9tYXRyaXgg JiYgdy0+Y3VycmVudF9tYXRyaXgtPnJvd3MKQEAgLTExMDIsNyArMTEwMiw3IEBAIHN0YXRp YyBMaXNwX09iamVjdCBjYWxjX2xpbmVfaGVpZ2h0X3Byb3BlcnR5IChzdHJ1Y3QgaXQgKiwg TGlzcF9PYmplY3QsCiAgIGlmIChib3hfeSkKICAgICB7CiAgICAgICAqYm94X3kgPSBXSU5E T1dfVE9QX0VER0VfWSAodyk7Ci0gICAgICBpZiAoV0lORE9XX1dBTlRTX0hFQURFUl9MSU5F X1AgKHcpKQorICAgICAgaWYgKHdpbmRvd193YW50c19oZWFkZXJfbGluZSAodykpCiAJKmJv eF95ICs9IENVUlJFTlRfSEVBREVSX0xJTkVfSEVJR0hUICh3KTsKICAgICB9CiB9CkBAIC0x MzIyLDE1ICsxMzIyLDI5IEBAIHN0YXRpYyBMaXNwX09iamVjdCBjYWxjX2xpbmVfaGVpZ2h0 X3Byb3BlcnR5IChzdHJ1Y3QgaXQgKiwgTGlzcF9PYmplY3QsCiAgICAgcmV0dXJuIHZpc2li bGVfcDsKCiAgIC8qIENvbXB1dGUgZXhhY3QgbW9kZSBsaW5lIGhlaWdodHMuICAqLwotICBp ZiAoV0lORE9XX1dBTlRTX01PREVMSU5FX1AgKHcpKQotICAgIHctPm1vZGVfbGluZV9oZWln aHQKLSAgICAgID0gZGlzcGxheV9tb2RlX2xpbmUgKHcsIENVUlJFTlRfTU9ERV9MSU5FX0ZB Q0VfSUQgKHcpLAotCQkJICAgQlZBUiAoY3VycmVudF9idWZmZXIsIG1vZGVfbGluZV9mb3Jt YXQpKTsKKyAgaWYgKHdpbmRvd193YW50c19tb2RlX2xpbmUgKHcpKQorICAgIHsKKyAgICAg IExpc3BfT2JqZWN0IHdpbmRvd19tb2RlX2xpbmVfZm9ybWF0CisJPSB3aW5kb3dfcGFyYW1l dGVyICh3LCBRbW9kZV9saW5lX2Zvcm1hdCk7CisKKyAgICAgIHctPm1vZGVfbGluZV9oZWln aHQKKwk9IGRpc3BsYXlfbW9kZV9saW5lICh3LCBDVVJSRU5UX01PREVfTElORV9GQUNFX0lE ICh3KSwKKwkJCSAgICAgTklMUCAod2luZG93X21vZGVfbGluZV9mb3JtYXQpCisJCQkgICAg ID8gQlZBUiAoY3VycmVudF9idWZmZXIsIG1vZGVfbGluZV9mb3JtYXQpCisJCQkgICAgIDog d2luZG93X21vZGVfbGluZV9mb3JtYXQpOworICAgIH0KCi0gIGlmIChXSU5ET1dfV0FOVFNf SEVBREVSX0xJTkVfUCAodykpCi0gICAgdy0+aGVhZGVyX2xpbmVfaGVpZ2h0Ci0gICAgICA9 IGRpc3BsYXlfbW9kZV9saW5lICh3LCBIRUFERVJfTElORV9GQUNFX0lELAotCQkJICAgQlZB UiAoY3VycmVudF9idWZmZXIsIGhlYWRlcl9saW5lX2Zvcm1hdCkpOworICBpZiAod2luZG93 X3dhbnRzX2hlYWRlcl9saW5lICh3KSkKKyAgICB7CisgICAgICBMaXNwX09iamVjdCB3aW5k b3dfaGVhZGVyX2xpbmVfZm9ybWF0CisJPSB3aW5kb3dfcGFyYW1ldGVyICh3LCBRaGVhZGVy X2xpbmVfZm9ybWF0KTsKKworICAgICAgdy0+aGVhZGVyX2xpbmVfaGVpZ2h0CisJPSBkaXNw bGF5X21vZGVfbGluZSAodywgSEVBREVSX0xJTkVfRkFDRV9JRCwKKwkJCSAgICAgTklMUCAo d2luZG93X2hlYWRlcl9saW5lX2Zvcm1hdCkKKwkJCSAgICAgPyBCVkFSIChjdXJyZW50X2J1 ZmZlciwgaGVhZGVyX2xpbmVfZm9ybWF0KQorCQkJICAgICA6IHdpbmRvd19oZWFkZXJfbGlu ZV9mb3JtYXQpOworICAgIH0KCiAgIHN0YXJ0X2Rpc3BsYXkgKCZpdCwgdywgdG9wKTsKICAg bW92ZV9pdF90byAoJml0LCBjaGFycG9zLCAtMSwgaXQubGFzdF92aXNpYmxlX3kgLSAxLCAt MSwKQEAgLTI4NDIsMTMgKzI4NTYsMTIgQEAgc3RhdGljIExpc3BfT2JqZWN0IGNhbGNfbGlu ZV9oZWlnaHRfcHJvcGVydHkgKHN0cnVjdCBpdCAqLCBMaXNwX09iamVjdCwKCiAgIC8qIEdl dCBkaW1lbnNpb25zIG9mIHRydW5jYXRpb24gYW5kIGNvbnRpbnVhdGlvbiBnbHlwaHMuICBU aGVzZSBhcmUKICAgICAgZGlzcGxheWVkIGFzIGZyaW5nZSBiaXRtYXBzIHVuZGVyIFgsIGJ1 dCB3ZSBuZWVkIHRoZW0gZm9yIHN1Y2gKLSAgICAgZnJhbWVzIHdoZW4gdGhlIGZyaW5nZXMg YXJlIHR1cm5lZCBvZmYuICBCdXQgbGVhdmUgdGhlIGRpbWVuc2lvbnMKLSAgICAgemVybyBm b3IgdG9vbHRpcCBmcmFtZXMsIGFzIHRoZXNlIGdseXBocyBsb29rIHVnbHkgdGhlcmUgYW5k IGFsc28KLSAgICAgc2Fib3RhZ2UgY2FsY3VsYXRpb25zIG9mIHRvb2x0aXAgZGltZW5zaW9u cyBpbiB4LXNob3ctdGlwLiAgKi8KKyAgICAgZnJhbWVzIHdoZW4gdGhlIGZyaW5nZXMgYXJl IHR1cm5lZCBvZmYuICBUaGUgbm9fc3BlY2lhbF9nbHlwaHMgc2xvdAorICAgICBvZiB0aGUg aXRlcmF0b3IncyBmcmFtZSwgd2hlbiBzZXQsIHN1cHByZXNzZXMgdGhlaXIgZGlzcGxheSAt IGJ5CisgICAgIGRlZmF1bHQgZm9yIHRvb2x0aXAgZnJhbWVzIGFuZCB3aGVuIHNldCB2aWEg dGhlICduby1zcGVjaWFsLWdseXBocycKKyAgICAgZnJhbWUgcGFyYW1ldGVyLiAgKi8KICNp ZmRlZiBIQVZFX1dJTkRPV19TWVNURU0KLSAgaWYgKCEoRlJBTUVfV0lORE9XX1AgKGl0LT5m KQotCSYmIEZSQU1FUCAodGlwX2ZyYW1lKQotCSYmIGl0LT5mID09IFhGUkFNRSAodGlwX2Zy YW1lKSkpCisgIGlmICghKEZSQU1FX1dJTkRPV19QIChpdC0+ZikgJiYgaXQtPmYtPm5vX3Nw ZWNpYWxfZ2x5cGhzKSkKICNlbmRpZgogICAgIHsKICAgICAgIGlmIChpdC0+bGluZV93cmFw ID09IFRSVU5DQVRFKQpAQCAtMjkyMCw3ICsyOTMzLDcgQEAgc3RhdGljIExpc3BfT2JqZWN0 IGNhbGNfbGluZV9oZWlnaHRfcHJvcGVydHkgKHN0cnVjdCBpdCAqLCBMaXNwX09iamVjdCwK IAkgICAgaXQtPmxhc3RfdmlzaWJsZV94IC09IGl0LT5jb250aW51YXRpb25fcGl4ZWxfd2lk dGg7CiAJfQoKLSAgICAgIGl0LT5oZWFkZXJfbGluZV9wID0gV0lORE9XX1dBTlRTX0hFQURF Ul9MSU5FX1AgKHcpOworICAgICAgaXQtPmhlYWRlcl9saW5lX3AgPSB3aW5kb3dfd2FudHNf aGVhZGVyX2xpbmUgKHcpOwogICAgICAgaXQtPmN1cnJlbnRfeSA9IFdJTkRPV19IRUFERVJf TElORV9IRUlHSFQgKHcpICsgdy0+dnNjcm9sbDsKICAgICB9CgpAQCAtMzAxOSw3ICszMDMy LDcgQEAgc3RhdGljIExpc3BfT2JqZWN0IGNhbGNfbGluZV9oZWlnaHRfcHJvcGVydHkgKHN0 cnVjdCBpdCAqLCBMaXNwX09iamVjdCwKIHN0YXJ0X2Rpc3BsYXkgKHN0cnVjdCBpdCAqaXQs IHN0cnVjdCB3aW5kb3cgKncsIHN0cnVjdCB0ZXh0X3BvcyBwb3MpCiB7CiAgIHN0cnVjdCBn bHlwaF9yb3cgKnJvdzsKLSAgYm9vbCBmaXJzdF92cG9zID0gV0lORE9XX1dBTlRTX0hFQURF Ul9MSU5FX1AgKHcpOworICBib29sIGZpcnN0X3Zwb3MgPSB3aW5kb3dfd2FudHNfaGVhZGVy X2xpbmUgKHcpOwoKICAgcm93ID0gdy0+ZGVzaXJlZF9tYXRyaXgtPnJvd3MgKyBmaXJzdF92 cG9zOwogICBpbml0X2l0ZXJhdG9yIChpdCwgdywgQ0hBUlBPUyAocG9zKSwgQllURVBPUyAo cG9zKSwgcm93LCBERUZBVUxUX0ZBQ0VfSUQpOwpAQCAtMTU3OTksNyArMTU4MTIsNyBAQCBl bnVtCgogICAgICAgLyogRmluZCB0aGUgc3RhcnQgb2YgdGhlIGNvbnRpbnVlZCBsaW5lLiAg VGhpcyBzaG91bGQgYmUgZmFzdAogCSBiZWNhdXNlIGZpbmRfbmV3bGluZSBpcyBmYXN0IChu ZXdsaW5lIGNhY2hlKS4gICovCi0gICAgICByb3cgPSB3LT5kZXNpcmVkX21hdHJpeC0+cm93 cyArIFdJTkRPV19XQU5UU19IRUFERVJfTElORV9QICh3KTsKKyAgICAgIHJvdyA9IHctPmRl c2lyZWRfbWF0cml4LT5yb3dzICsgd2luZG93X3dhbnRzX2hlYWRlcl9saW5lICh3KTsKICAg ICAgIGluaXRfaXRlcmF0b3IgKCZpdCwgdywgQ0hBUlBPUyAoc3RhcnRfcG9zKSwgQllURVBP UyAoc3RhcnRfcG9zKSwKIAkJICAgICByb3csIERFRkFVTFRfRkFDRV9JRCk7CiAgICAgICBy ZXNlYXRfYXRfcHJldmlvdXNfdmlzaWJsZV9saW5lX3N0YXJ0ICgmaXQpOwpAQCAtMTU5NDks NyArMTU5NjIsNyBAQCBlbnVtCiAgICAgICB0aGlzX3Njcm9sbF9tYXJnaW4gPSB3aW5kb3df c2Nyb2xsX21hcmdpbiAodywgTUFSR0lOX0lOX1BJWEVMUyk7CgogICAgICAgdG9wX3Njcm9s bF9tYXJnaW4gPSB0aGlzX3Njcm9sbF9tYXJnaW47Ci0gICAgICBpZiAoV0lORE9XX1dBTlRT X0hFQURFUl9MSU5FX1AgKHcpKQorICAgICAgaWYgKHdpbmRvd193YW50c19oZWFkZXJfbGlu ZSAodykpCiAJdG9wX3Njcm9sbF9tYXJnaW4gKz0gQ1VSUkVOVF9IRUFERVJfTElORV9IRUlH SFQgKHcpOwoKICAgICAgIC8qIFN0YXJ0IHdpdGggdGhlIHJvdyB0aGUgY3Vyc29yIHdhcyBk aXNwbGF5ZWQgZHVyaW5nIHRoZSBsYXN0CkBAIC0xNjczMiw3ICsxNjc0NSw3IEBAIGVudW0K IAkgICAgIG1hcmdpbiwgZXZlbiB0aG91Z2ggdGhpcyBwYXJ0IGhhbmRsZXMgd2luZG93cyB0 aGF0IGRpZG4ndAogCSAgICAgc2Nyb2xsIGF0IGFsbC4gICovCiAgICAgICAgICAgaW50IHBp eGVsX21hcmdpbiA9IG1hcmdpbiAqIGZyYW1lX2xpbmVfaGVpZ2h0OwotCSAgYm9vbCBoZWFk ZXJfbGluZSA9IFdJTkRPV19XQU5UU19IRUFERVJfTElORV9QICh3KTsKKwkgIGJvb2wgaGVh ZGVyX2xpbmUgPSB3aW5kb3dfd2FudHNfaGVhZGVyX2xpbmUgKHcpOwoKIAkgIC8qIE5vdGU6 IFdlIGFkZCBhbiBleHRyYSBGUkFNRV9MSU5FX0hFSUdIVCwgYmVjYXVzZSB0aGUgbG9vcAog CSAgICAgYmVsb3csIHdoaWNoIGZpbmRzIHRoZSByb3cgdG8gbW92ZSBwb2ludCB0bywgYWR2 YW5jZXMgYnkKQEAgLTE3Mjk5LDE1ICsxNzMxMiwxNSBAQCBlbnVtCiAgICAgICAgfHwgKHct PmNvbHVtbl9udW1iZXJfZGlzcGxheWVkICE9IC0xCiAJICAgJiYgKHctPmNvbHVtbl9udW1i ZXJfZGlzcGxheWVkICE9IGN1cnJlbnRfY29sdW1uICgpKSkpCiAgICAgICAvKiBUaGlzIG1l YW5zIHRoYXQgdGhlIHdpbmRvdyBoYXMgYSBtb2RlIGxpbmUuICAqLwotICAgICAgJiYgKFdJ TkRPV19XQU5UU19NT0RFTElORV9QICh3KQotCSAgfHwgV0lORE9XX1dBTlRTX0hFQURFUl9M SU5FX1AgKHcpKSkKKyAgICAgICYmICh3aW5kb3dfd2FudHNfbW9kZV9saW5lICh3KQorCSAg fHwgd2luZG93X3dhbnRzX2hlYWRlcl9saW5lICh3KSkpCiAgICAgewoKICAgICAgIGRpc3Bs YXlfbW9kZV9saW5lcyAodyk7CgogICAgICAgLyogSWYgbW9kZSBsaW5lIGhlaWdodCBoYXMg Y2hhbmdlZCwgYXJyYW5nZSBmb3IgYSB0aG9yb3VnaAogCSBpbW1lZGlhdGUgcmVkaXNwbGF5 IHVzaW5nIHRoZSBjb3JyZWN0IG1vZGUgbGluZSBoZWlnaHQuICAqLwotICAgICAgaWYgKFdJ TkRPV19XQU5UU19NT0RFTElORV9QICh3KQorICAgICAgaWYgKHdpbmRvd193YW50c19tb2Rl X2xpbmUgKHcpCiAJICAmJiBDVVJSRU5UX01PREVfTElORV9IRUlHSFQgKHcpICE9IERFU0lS RURfTU9ERV9MSU5FX0hFSUdIVCAodykpCiAJewogCSAgZi0+Zm9udHNfY2hhbmdlZCA9IHRy dWU7CkBAIC0xNzMxOCw3ICsxNzMzMSw3IEBAIGVudW0KCiAgICAgICAvKiBJZiBoZWFkZXIg bGluZSBoZWlnaHQgaGFzIGNoYW5nZWQsIGFycmFuZ2UgZm9yIGEgdGhvcm91Z2gKIAkgaW1t ZWRpYXRlIHJlZGlzcGxheSB1c2luZyB0aGUgY29ycmVjdCBoZWFkZXIgbGluZSBoZWlnaHQu ICAqLwotICAgICAgaWYgKFdJTkRPV19XQU5UU19IRUFERVJfTElORV9QICh3KQorICAgICAg aWYgKHdpbmRvd193YW50c19oZWFkZXJfbGluZSAodykKIAkgICYmIENVUlJFTlRfSEVBREVS X0xJTkVfSEVJR0hUICh3KSAhPSBERVNJUkVEX0hFQURFUl9MSU5FX0hFSUdIVCAodykpCiAJ ewogCSAgZi0+Zm9udHNfY2hhbmdlZCA9IHRydWU7CkBAIC0xNzU4Myw3ICsxNzU5Niw3IEBA IGVudW0KICAgICByZXR1cm4gZmFsc2U7CgogICAvKiBJZiB0b3AtbGluZSB2aXNpYmlsaXR5 IGhhcyBjaGFuZ2VkLCBnaXZlIHVwLiAgKi8KLSAgaWYgKFdJTkRPV19XQU5UU19IRUFERVJf TElORV9QICh3KQorICBpZiAod2luZG93X3dhbnRzX2hlYWRlcl9saW5lICh3KQogICAgICAg IT0gTUFUUklYX0hFQURFUl9MSU5FX1JPVyAody0+Y3VycmVudF9tYXRyaXgpLT5tb2RlX2xp bmVfcCkKICAgICByZXR1cm4gZmFsc2U7CgpAQCAtMTg4MTgsNyArMTg4MzEsNyBAQCBzdHJ1 Y3QgZ2x5cGhfcm93ICoKIAkgICAgPSBNQVRSSVhfUk9XX1ZQT1MgKGZpcnN0X3VuY2hhbmdl ZF9hdF9lbmRfcm93LCB3LT5jdXJyZW50X21hdHJpeCk7CiAJICBpbnQgZnJvbSA9IFdJTkRP V19UT1BfRURHRV9MSU5FICh3KSArIGZyb21fdnBvczsKIAkgIGludCBlbmQgPSAoV0lORE9X X1RPUF9FREdFX0xJTkUgKHcpCi0JCSAgICAgKyBXSU5ET1dfV0FOVFNfSEVBREVSX0xJTkVf UCAodykKKwkJICAgICArIHdpbmRvd193YW50c19oZWFkZXJfbGluZSAodykKIAkJICAgICAr IHdpbmRvd19pbnRlcm5hbF9oZWlnaHQgKHcpKTsKCiAjaWYgZGVmaW5lZCAoSEFWRV9HUE0p IHx8IGRlZmluZWQgKE1TRE9TKQpAQCAtMTg5OTYsNyArMTkwMDksNyBAQCBzdHJ1Y3QgZ2x5 cGhfcm93ICoKICAgICB7CiAgICAgICAvKiBEaXNwbGF5ZWQgdG8gZW5kIG9mIHdpbmRvdywg YnV0IG5vIGxpbmUgY29udGFpbmluZyB0ZXh0IHdhcwogCSBkaXNwbGF5ZWQuICBMaW5lcyB3 ZXJlIGRlbGV0ZWQgYXQgdGhlIGVuZCBvZiB0aGUgd2luZG93LiAgKi8KLSAgICAgIGJvb2wg Zmlyc3RfdnBvcyA9IFdJTkRPV19XQU5UU19IRUFERVJfTElORV9QICh3KTsKKyAgICAgIGJv b2wgZmlyc3RfdnBvcyA9IHdpbmRvd193YW50c19oZWFkZXJfbGluZSAodyk7CiAgICAgICBp bnQgdnBvcyA9IHctPndpbmRvd19lbmRfdnBvczsKICAgICAgIHN0cnVjdCBnbHlwaF9yb3cg KmN1cnJlbnRfcm93ID0gY3VycmVudF9tYXRyaXgtPnJvd3MgKyB2cG9zOwogICAgICAgc3Ry dWN0IGdseXBoX3JvdyAqZGVzaXJlZF9yb3cgPSBkZXNpcmVkX21hdHJpeC0+cm93cyArIHZw b3M7CkBAIC0yMDY5Niw3ICsyMDcwOSw3IEBAIHN0cnVjdCBnbHlwaF9yb3cgKgogICBwdHJk aWZmX3QgbWluX3BvcyA9IFpWICsgMSwgbWF4X3BvcyA9IDA7CiAgIHB0cmRpZmZfdCBtaW5f YnBvcyBVTklOSVQsIG1heF9icG9zIFVOSU5JVDsKICAgYm9vbCBwZW5kaW5nX2hhbmRsZV9s aW5lX3ByZWZpeCA9IGZhbHNlOwotICBpbnQgaGVhZGVyX2xpbmUgPSBXSU5ET1dfV0FOVFNf SEVBREVSX0xJTkVfUCAoaXQtPncpOworICBpbnQgaGVhZGVyX2xpbmUgPSB3aW5kb3dfd2Fu dHNfaGVhZGVyX2xpbmUgKGl0LT53KTsKICAgYm9vbCBoc2Nyb2xsX3RoaXNfbGluZSA9IChj dXJzb3JfdnBvcyA+PSAwCiAJCQkgICAgJiYgaXQtPnZwb3MgPT0gY3Vyc29yX3Zwb3MgLSBo ZWFkZXJfbGluZQogCQkJICAgICYmIGhzY3JvbGxpbmdfY3VycmVudF9saW5lX3AgKGl0LT53 KSk7CkBAIC0yMjY0OSwyMCArMjI2NjIsMzAgQEAgY29udHJvbCBjaGFyYWN0ZXJzIFJMTyAo dSsyMDJlKSBhbmQgTFJPICh1KzIwMmQpLiAgU2VlIHRoZQogICBsaW5lX251bWJlcl9kaXNw bGF5ZWQgPSBmYWxzZTsKICAgdy0+Y29sdW1uX251bWJlcl9kaXNwbGF5ZWQgPSAtMTsKCi0g IGlmIChXSU5ET1dfV0FOVFNfTU9ERUxJTkVfUCAodykpCisgIGlmICh3aW5kb3dfd2FudHNf bW9kZV9saW5lICh3KSkKICAgICB7CisgICAgICBMaXNwX09iamVjdCB3aW5kb3dfbW9kZV9s aW5lX2Zvcm1hdAorCT0gd2luZG93X3BhcmFtZXRlciAodywgUW1vZGVfbGluZV9mb3JtYXQp OworCiAgICAgICBzdHJ1Y3Qgd2luZG93ICpzZWxfdyA9IFhXSU5ET1cgKG9sZF9zZWxlY3Rl ZF93aW5kb3cpOwoKICAgICAgIC8qIFNlbGVjdCBtb2RlIGxpbmUgZmFjZSBiYXNlZCBvbiB0 aGUgcmVhbCBzZWxlY3RlZCB3aW5kb3cuICAqLwogICAgICAgZGlzcGxheV9tb2RlX2xpbmUg KHcsIENVUlJFTlRfTU9ERV9MSU5FX0ZBQ0VfSURfMyAoc2VsX3csIHNlbF93LCB3KSwKLQkJ CSBCVkFSIChjdXJyZW50X2J1ZmZlciwgbW9kZV9saW5lX2Zvcm1hdCkpOworCQkJIE5JTFAg KHdpbmRvd19tb2RlX2xpbmVfZm9ybWF0KQorCQkJID8gQlZBUiAoY3VycmVudF9idWZmZXIs IG1vZGVfbGluZV9mb3JtYXQpCisJCQkgOiB3aW5kb3dfbW9kZV9saW5lX2Zvcm1hdCk7CiAg ICAgICArK247CiAgICAgfQoKLSAgaWYgKFdJTkRPV19XQU5UU19IRUFERVJfTElORV9QICh3 KSkKKyAgaWYgKHdpbmRvd193YW50c19oZWFkZXJfbGluZSAodykpCiAgICAgeworICAgICAg TGlzcF9PYmplY3Qgd2luZG93X2hlYWRlcl9saW5lX2Zvcm1hdAorCT0gd2luZG93X3BhcmFt ZXRlciAodywgUWhlYWRlcl9saW5lX2Zvcm1hdCk7CisKICAgICAgIGRpc3BsYXlfbW9kZV9s aW5lICh3LCBIRUFERVJfTElORV9GQUNFX0lELAotCQkJIEJWQVIgKGN1cnJlbnRfYnVmZmVy LCBoZWFkZXJfbGluZV9mb3JtYXQpKTsKKwkJCSBOSUxQICh3aW5kb3dfaGVhZGVyX2xpbmVf Zm9ybWF0KQorCQkJID8gQlZBUiAoY3VycmVudF9idWZmZXIsIGhlYWRlcl9saW5lX2Zvcm1h dCkKKwkJCSA6IHdpbmRvd19oZWFkZXJfbGluZV9mb3JtYXQpOwogICAgICAgKytuOwogICAg IH0KCkBAIC0zMDQ0MiwxMyArMzA0NjUsNjcgQEAgQSBwb2x5Z29uIGlzIGEgY29ucyAocG9s eSAuIFt4MCB5MCB4MSB5MSAuLi5dKSB3aGVyZSBlYWNoIHBhaXIgaW4gdGhlCiAJICAmJiBw YXJ0ICE9IE9OX0hFQURFUl9MSU5FKSkKICAgICBjbGVhcl9tb3VzZV9mYWNlIChobGluZm8p OwoKKyAgLyogUmVzZXQgaGVscF9lY2hvX3N0cmluZy4gSXQgd2lsbCBnZXQgcmVjb21wdXRl ZCBiZWxvdy4gICovCisgIGhlbHBfZWNob19zdHJpbmcgPSBRbmlsOworCisjaWZkZWYgSEFW RV9XSU5ET1dfU1lTVEVNCisgIC8qIElmIHRoZSBjdXJzb3IgaXMgb24gdGhlIGludGVybmFs IGJvcmRlciBvZiBGUkFNRSBhbmQgRlJBTUUncworICAgICBpbnRlcm5hbCBib3JkZXIgaXMg ZHJhZ2dhYmxlLCBwcm92aWRlIHNvbWUgdmlzdWFsIGZlZWRiYWNrLiAgKi8KKyAgaWYgKEZS QU1FX0lOVEVSTkFMX0JPUkRFUl9XSURUSCAoZikgPiAwCisgICAgICAmJiAhTklMUCAoZ2V0 X2ZyYW1lX3BhcmFtIChmLCBRZHJhZ19pbnRlcm5hbF9ib3JkZXIpKSkKKyAgICB7CisgICAg ICBlbnVtIGludGVybmFsX2JvcmRlcl9wYXJ0IHBhcnQgPSBmcmFtZV9pbnRlcm5hbF9ib3Jk ZXJfcGFydCAoZiwgeCwgeSk7CisKKyAgICAgIHN3aXRjaCAocGFydCkKKwl7CisJY2FzZSBJ TlRFUk5BTF9CT1JERVJfTk9ORToKKwkgIGlmIChjdXJzb3IgIT0gRlJBTUVfWF9PVVRQVVQg KGYpLT5ub250ZXh0X2N1cnNvcikKKwkgICAgLyogUmVzZXQgY3Vyc29yLiAgKi8KKwkgICAg Y3Vyc29yID0gRlJBTUVfWF9PVVRQVVQgKGYpLT5ub250ZXh0X2N1cnNvcjsKKwkgIGJyZWFr OworCWNhc2UgSU5URVJOQUxfQk9SREVSX0xFRlRfRURHRToKKwkgIGN1cnNvciA9IEZSQU1F X1hfT1VUUFVUIChmKS0+bGVmdF9lZGdlX2N1cnNvcjsKKwkgIGJyZWFrOworCWNhc2UgSU5U RVJOQUxfQk9SREVSX1RPUF9MRUZUX0NPUk5FUjoKKwkgIGN1cnNvciA9IEZSQU1FX1hfT1VU UFVUIChmKS0+dG9wX2xlZnRfY29ybmVyX2N1cnNvcjsKKwkgIGJyZWFrOworCWNhc2UgSU5U RVJOQUxfQk9SREVSX1RPUF9FREdFOgorCSAgY3Vyc29yID0gRlJBTUVfWF9PVVRQVVQgKGYp LT50b3BfZWRnZV9jdXJzb3I7CisJICBicmVhazsKKwljYXNlIElOVEVSTkFMX0JPUkRFUl9U T1BfUklHSFRfQ09STkVSOgorCSAgY3Vyc29yID0gRlJBTUVfWF9PVVRQVVQgKGYpLT50b3Bf cmlnaHRfY29ybmVyX2N1cnNvcjsKKwkgIGJyZWFrOworCWNhc2UgSU5URVJOQUxfQk9SREVS X1JJR0hUX0VER0U6CisJICBjdXJzb3IgPSBGUkFNRV9YX09VVFBVVCAoZiktPnJpZ2h0X2Vk Z2VfY3Vyc29yOworCSAgYnJlYWs7CisJY2FzZSBJTlRFUk5BTF9CT1JERVJfQk9UVE9NX1JJ R0hUX0NPUk5FUjoKKwkgIGN1cnNvciA9IEZSQU1FX1hfT1VUUFVUIChmKS0+Ym90dG9tX3Jp Z2h0X2Nvcm5lcl9jdXJzb3I7CisJICBicmVhazsKKwljYXNlIElOVEVSTkFMX0JPUkRFUl9C T1RUT01fRURHRToKKwkgIGN1cnNvciA9IEZSQU1FX1hfT1VUUFVUIChmKS0+Ym90dG9tX2Vk Z2VfY3Vyc29yOworCSAgYnJlYWs7CisJY2FzZSBJTlRFUk5BTF9CT1JERVJfQk9UVE9NX0xF RlRfQ09STkVSOgorCSAgY3Vyc29yID0gRlJBTUVfWF9PVVRQVVQgKGYpLT5ib3R0b21fbGVm dF9jb3JuZXJfY3Vyc29yOworCSAgYnJlYWs7CisJZGVmYXVsdDoKKwkgIC8qIFRoaXMgc2hv dWxkIG5vdCBoYXBwZW4uICAqLworCSAgaWYgKGN1cnNvciAhPSBGUkFNRV9YX09VVFBVVCAo ZiktPm5vbnRleHRfY3Vyc29yKQorCSAgICBjdXJzb3IgPSBGUkFNRV9YX09VVFBVVCAoZikt Pm5vbnRleHRfY3Vyc29yOworCX0KKworICAgICAgaWYgKGN1cnNvciAhPSBGUkFNRV9YX09V VFBVVCAoZiktPm5vbnRleHRfY3Vyc29yKQorCXsKKwkgIC8qIERvIHdlIHJlYWxseSB3YW50 IGEgaGVscCBlY2hvIGhlcmU/ICAqLworCSAgaGVscF9lY2hvX3N0cmluZyA9IGJ1aWxkX3N0 cmluZyAoImRyYWctbW91c2UtMTogcmVzaXplIGZyYW1lIik7CisJICBnb3RvIHNldF9jdXJz b3I7CisJfQorICAgIH0KKyNlbmRpZiAvKiBIQVZFX1dJTkRPV19TWVNURU0gKi8KKwogICAv KiBOb3Qgb24gYSB3aW5kb3cgLT4gcmV0dXJuLiAgKi8KICAgaWYgKCFXSU5ET1dQICh3aW5k b3cpKQogICAgIHJldHVybjsKCi0gIC8qIFJlc2V0IGhlbHBfZWNob19zdHJpbmcuIEl0IHdp bGwgZ2V0IHJlY29tcHV0ZWQgYmVsb3cuICAqLwotICBoZWxwX2VjaG9fc3RyaW5nID0gUW5p bDsKLQogICAvKiBDb252ZXJ0IHRvIHdpbmRvdy1yZWxhdGl2ZSBwaXhlbCBjb29yZGluYXRl cy4gICovCiAgIHcgPSBYV0lORE9XICh3aW5kb3cpOwogICBmcmFtZV90b193aW5kb3dfcGl4 ZWxfeHkgKHcsICZ4LCAmeSk7CkBAIC0zMDQ4NiwxMSArMzA1NjMsMTMgQEAgQSBwb2x5Z29u IGlzIGEgY29ucyAocG9seSAuIFt4MCB5MCB4MSB5MSAuLi5dKSB3aGVyZSBlYWNoIHBhaXIg aW4gdGhlCiAgICAgewogICAgICAgY3Vyc29yID0gRlJBTUVfWF9PVVRQVVQgKGYpLT5ob3Jp em9udGFsX2RyYWdfY3Vyc29yOwogICAgICAgaGVscF9lY2hvX3N0cmluZyA9IGJ1aWxkX3N0 cmluZyAoImRyYWctbW91c2UtMTogcmVzaXplIik7CisgICAgICBnb3RvIHNldF9jdXJzb3I7 CiAgICAgfQogICBlbHNlIGlmIChwYXJ0ID09IE9OX1JJR0hUX0RJVklERVIpCiAgICAgewog ICAgICAgY3Vyc29yID0gRlJBTUVfWF9PVVRQVVQgKGYpLT5ob3Jpem9udGFsX2RyYWdfY3Vy c29yOwogICAgICAgaGVscF9lY2hvX3N0cmluZyA9IGJ1aWxkX3N0cmluZyAoImRyYWctbW91 c2UtMTogcmVzaXplIik7CisgICAgICBnb3RvIHNldF9jdXJzb3I7CiAgICAgfQogICBlbHNl IGlmIChwYXJ0ID09IE9OX0JPVFRPTV9ESVZJREVSKQogICAgIGlmICghIFdJTkRPV19CT1RU T01NT1NUX1AgKHcpCkBAIC0zMDQ5OSw2ICszMDU3OCw3IEBAIEEgcG9seWdvbiBpcyBhIGNv bnMgKHBvbHkgLiBbeDAgeTAgeDEgeTEgLi4uXSkgd2hlcmUgZWFjaCBwYWlyIGluIHRoZQog ICAgICAgewogCWN1cnNvciA9IEZSQU1FX1hfT1VUUFVUIChmKS0+dmVydGljYWxfZHJhZ19j dXJzb3I7CiAJaGVscF9lY2hvX3N0cmluZyA9IGJ1aWxkX3N0cmluZyAoImRyYWctbW91c2Ut MTogcmVzaXplIik7CisJZ290byBzZXRfY3Vyc29yOwogICAgICAgfQogICAgIGVsc2UKICAg ICAgIGN1cnNvciA9IEZSQU1FX1hfT1VUUFVUIChmKS0+bm9udGV4dF9jdXJzb3I7CkBAIC0z MTE5Myw4ICszMTI3MywxNSBAQCBBIHBvbHlnb24gaXMgYSBjb25zIChwb2x5IC4gW3gwIHkw IHgxIHkxIC4uLl0pIHdoZXJlIGVhY2ggcGFpciBpbiB0aGUKICAgICAgIGludCB4MCA9IFdJ TkRPV19SSUdIVF9FREdFX1ggKHcpIC0gV0lORE9XX1JJR0hUX0RJVklERVJfV0lEVEggKHcp OwogICAgICAgaW50IHgxID0gV0lORE9XX1JJR0hUX0VER0VfWCAodyk7CiAgICAgICBpbnQg eTAgPSBXSU5ET1dfVE9QX0VER0VfWSAodyk7Ci0gICAgICAvKiBUaGUgYm90dG9tIGRpdmlk ZXIgcHJldmFpbHMuICAqLwotICAgICAgaW50IHkxID0gV0lORE9XX0JPVFRPTV9FREdFX1kg KHcpIC0gV0lORE9XX0JPVFRPTV9ESVZJREVSX1dJRFRIICh3KTsKKyAgICAgIGludCB5MSA9 IFdJTkRPV19CT1RUT01fRURHRV9ZICh3KTsKKworICAgICAgLyogSWYgVyBpcyBob3Jpem9u dGFsbHkgY29tYmluZWQgYW5kIGhhcyBhIHJpZ2h0IHNpYmxpbmcsIGRvbid0CisJIGRyYXcg b3ZlciBhbnkgYm90dG9tIGRpdmlkZXIuICAqLworICAgICAgaWYgKFdJTkRPV19CT1RUT01f RElWSURFUl9XSURUSCAodykKKwkgICYmICFOSUxQICh3LT5wYXJlbnQpCisJICAmJiBXSU5E T1dfSE9SSVpPTlRBTF9DT01CSU5BVElPTl9QIChYV0lORE9XICh3LT5wYXJlbnQpKQorCSAg JiYgIU5JTFAgKHctPm5leHQpKQorCXkxIC09IFdJTkRPV19CT1RUT01fRElWSURFUl9XSURU SCAodyk7CgogICAgICAgRlJBTUVfUklGIChmKS0+ZHJhd193aW5kb3dfZGl2aWRlciAodywg eDAsIHgxLCB5MCwgeTEpOwogICAgIH0KQEAgLTMxMjEzLDggKzMxMzAwLDIyIEBAIEEgcG9s eWdvbiBpcyBhIGNvbnMgKHBvbHkgLiBbeDAgeTAgeDEgeTEgLi4uXSkgd2hlcmUgZWFjaCBw YWlyIGluIHRoZQogICAgICAgaW50IHgxID0gV0lORE9XX1JJR0hUX0VER0VfWCAodyk7CiAg ICAgICBpbnQgeTAgPSBXSU5ET1dfQk9UVE9NX0VER0VfWSAodykgLSBXSU5ET1dfQk9UVE9N X0RJVklERVJfV0lEVEggKHcpOwogICAgICAgaW50IHkxID0gV0lORE9XX0JPVFRPTV9FREdF X1kgKHcpOworICAgICAgc3RydWN0IHdpbmRvdyAqcCA9ICFOSUxQICh3LT5wYXJlbnQpID8g WFdJTkRPVyAody0+cGFyZW50KSA6IGZhbHNlOwoKLSAgICAgIEZSQU1FX1JJRiAoZiktPmRy YXdfd2luZG93X2RpdmlkZXIgKHcsIHgwLCB4MSwgeTAsIHkxKTsKKyAgICAgIC8qIElmIFcg aXMgdmVydGljYWxseSBjb21iaW5lZCBhbmQgaGFzIGEgc2libGluZyBiZWxvdywgZG9uJ3Qg ZHJhdworCSBvdmVyIGFueSByaWdodCBkaXZpZGVyLiAgKi8KKyAgICAgIGlmIChXSU5ET1df UklHSFRfRElWSURFUl9XSURUSCAodykKKwkgICYmIHAKKwkgICYmICgoV0lORE9XX1ZFUlRJ Q0FMX0NPTUJJTkFUSU9OX1AgKHApCisJICAgICAgICYmICFOSUxQICh3LT5uZXh0KSkKKwkg ICAgICB8fCAoV0lORE9XX0hPUklaT05UQUxfQ09NQklOQVRJT05fUCAocCkKKwkJICAmJiBO SUxQICh3LT5uZXh0KQorCQkgICYmICFOSUxQIChwLT5wYXJlbnQpCisJCSAgJiYgV0lORE9X X1ZFUlRJQ0FMX0NPTUJJTkFUSU9OX1AgKFhXSU5ET1cgKHAtPnBhcmVudCkpCisJCSAgJiYg IU5JTFAgKFhXSU5ET1cgKHAtPnBhcmVudCktPm5leHQpKSkpCisJeDEgLT0gV0lORE9XX1JJ R0hUX0RJVklERVJfV0lEVEggKHcpOworCisJRlJBTUVfUklGIChmKS0+ZHJhd193aW5kb3df ZGl2aWRlciAodywgeDAsIHgxLCB5MCwgeTEpOwogICAgIH0KIH0KCkBAIC0zMTMyOSw3ICsz MTQzMCw3IEBAIEEgcG9seWdvbiBpcyBhIGNvbnMgKHBvbHkgLiBbeDAgeTAgeDEgeTEgLi4u XSkgd2hlcmUgZWFjaCBwYWlyIGluIHRoZQogCX0KCiAgICAgICAvKiBEaXNwbGF5IHRoZSBt b2RlIGxpbmUgaWYgdGhlcmUgaXMgb25lLiAgKi8KLSAgICAgIGlmIChXSU5ET1dfV0FOVFNf TU9ERUxJTkVfUCAodykKKyAgICAgIGlmICh3aW5kb3dfd2FudHNfbW9kZV9saW5lICh3KQog CSAgJiYgKHJvdyA9IE1BVFJJWF9NT0RFX0xJTkVfUk9XICh3LT5jdXJyZW50X21hdHJpeCks CiAJICAgICAgcm93LT5lbmFibGVkX3ApCiAJICAmJiByb3ctPnkgPCByX2JvdHRvbSkKZGlm ZiAtLWdpdCBhL3NyYy94Zm5zLmMgYi9zcmMveGZucy5jCmluZGV4IDdiZTIyNTMuLjNkZDE5 NzAgMTAwNjQ0Ci0tLSBhL3NyYy94Zm5zLmMKKysrIGIvc3JjL3hmbnMuYwpAQCAtMTEyMCw2 ICsxMTIwLDE0IEBAIGVudW0gbW91c2VfY3Vyc29yIHsKICAgbW91c2VfY3Vyc29yX2hhbmQs CiAgIG1vdXNlX2N1cnNvcl9ob3Jpem9udGFsX2RyYWcsCiAgIG1vdXNlX2N1cnNvcl92ZXJ0 aWNhbF9kcmFnLAorICBtb3VzZV9jdXJzb3JfbGVmdF9lZGdlLAorICBtb3VzZV9jdXJzb3Jf dG9wX2xlZnRfY29ybmVyLAorICBtb3VzZV9jdXJzb3JfdG9wX2VkZ2UsCisgIG1vdXNlX2N1 cnNvcl90b3BfcmlnaHRfY29ybmVyLAorICBtb3VzZV9jdXJzb3JfcmlnaHRfZWRnZSwKKyAg bW91c2VfY3Vyc29yX2JvdHRvbV9yaWdodF9jb3JuZXIsCisgIG1vdXNlX2N1cnNvcl9ib3R0 b21fZWRnZSwKKyAgbW91c2VfY3Vyc29yX2JvdHRvbV9sZWZ0X2Nvcm5lciwKICAgbW91c2Vf Y3Vyc29yX21heAogfTsKCkBAIC0xMTM5LDEzICsxMTQ3LDIxIEBAIHN0cnVjdCBtb3VzZV9j dXJzb3JfdHlwZXMgewoKIC8qIFRoaXMgYXJyYXkgbXVzdCBzdGF5IGluIHN5bmMgd2l0aCBl bnVtIG1vdXNlX2N1cnNvciBhYm92ZSEgICovCiBzdGF0aWMgY29uc3Qgc3RydWN0IG1vdXNl X2N1cnNvcl90eXBlcyBtb3VzZV9jdXJzb3JfdHlwZXNbXSA9IHsKLSAgeyAidGV4dCIsICAg ICAgJlZ4X3BvaW50ZXJfc2hhcGUsICAgICAgICAgICAgICAgIFhDX3h0ZXJtICAgICAgICAg ICAgIH0sCi0gIHsgIm5vbnRleHQiLCAgICZWeF9ub250ZXh0X3BvaW50ZXJfc2hhcGUsICAg ICAgICBYQ19sZWZ0X3B0ciAgICAgICAgICB9LAotICB7ICJob3VyZ2xhc3MiLCAmVnhfaG91 cmdsYXNzX3BvaW50ZXJfc2hhcGUsICAgICAgWENfd2F0Y2ggICAgICAgICAgICAgfSwKLSAg eyAibW9kZWxpbmUiLCAgJlZ4X21vZGVfcG9pbnRlcl9zaGFwZSwgICAgICAgICAgIFhDX3h0 ZXJtICAgICAgICAgICAgIH0sCi0gIHsgTlVMTCwgICAgICAgICZWeF9zZW5zaXRpdmVfdGV4 dF9wb2ludGVyX3NoYXBlLCBYQ19oYW5kMiAgICAgICAgICAgICB9LAotICB7IE5VTEwsICAg ICAgICAmVnhfd2luZG93X2hvcml6b250YWxfZHJhZ19zaGFwZSwgWENfc2JfaF9kb3VibGVf YXJyb3cgfSwKLSAgeyBOVUxMLCAgICAgICAgJlZ4X3dpbmRvd192ZXJ0aWNhbF9kcmFnX3No YXBlLCAgIFhDX3NiX3ZfZG91YmxlX2Fycm93IH0sCisgIHsgInRleHQiLCAgICAgICZWeF9w b2ludGVyX3NoYXBlLCAgICAgICAgICAgICAgICAgICAgWENfeHRlcm0gICAgICAgICAgICAg ICB9LAorICB7ICJub250ZXh0IiwgICAmVnhfbm9udGV4dF9wb2ludGVyX3NoYXBlLCAgICAg ICAgICAgIFhDX2xlZnRfcHRyICAgICAgICAgICAgfSwKKyAgeyAiaG91cmdsYXNzIiwgJlZ4 X2hvdXJnbGFzc19wb2ludGVyX3NoYXBlLCAgICAgICAgICBYQ193YXRjaCAgICAgICAgICAg ICAgIH0sCisgIHsgIm1vZGVsaW5lIiwgICZWeF9tb2RlX3BvaW50ZXJfc2hhcGUsICAgICAg ICAgICAgICAgWENfeHRlcm0gICAgICAgICAgICAgICB9LAorICB7IE5VTEwsICAgICAgICAm Vnhfc2Vuc2l0aXZlX3RleHRfcG9pbnRlcl9zaGFwZSwgICAgIFhDX2hhbmQyICAgICAgICAg ICAgICAgfSwKKyAgeyBOVUxMLCAgICAgICAgJlZ4X3dpbmRvd19ob3Jpem9udGFsX2RyYWdf c2hhcGUsICAgICBYQ19zYl9oX2RvdWJsZV9hcnJvdyAgIH0sCisgIHsgTlVMTCwgICAgICAg ICZWeF93aW5kb3dfdmVydGljYWxfZHJhZ19zaGFwZSwgICAgICAgWENfc2Jfdl9kb3VibGVf YXJyb3cgICB9LAorICB7IE5VTEwsICAgICAgICAmVnhfd2luZG93X2xlZnRfZWRnZV9zaGFw ZSwgICAgICAgICAgIFhDX2xlZnRfc2lkZSAgICAgICAgICAgfSwKKyAgeyBOVUxMLCAgICAg ICAgJlZ4X3dpbmRvd190b3BfbGVmdF9jb3JuZXJfc2hhcGUsICAgICBYQ190b3BfbGVmdF9j b3JuZXIgICAgIH0sCisgIHsgTlVMTCwgICAgICAgICZWeF93aW5kb3dfdG9wX2VkZ2Vfc2hh cGUsICAgICAgICAgICAgWENfdG9wX3NpZGUgICAgICAgICAgICB9LAorICB7IE5VTEwsICAg ICAgICAmVnhfd2luZG93X3RvcF9yaWdodF9jb3JuZXJfc2hhcGUsICAgIFhDX3RvcF9yaWdo dF9jb3JuZXIgICAgfSwKKyAgeyBOVUxMLCAgICAgICAgJlZ4X3dpbmRvd19yaWdodF9lZGdl X3NoYXBlLCAgICAgICAgICBYQ19yaWdodF9zaWRlICAgICAgICAgIH0sCisgIHsgTlVMTCwg ICAgICAgICZWeF93aW5kb3dfYm90dG9tX3JpZ2h0X2Nvcm5lcl9zaGFwZSwgWENfYm90dG9t X3JpZ2h0X2Nvcm5lciB9LAorICB7IE5VTEwsICAgICAgICAmVnhfd2luZG93X2JvdHRvbV9l ZGdlX3NoYXBlLCAgICAgICAgIFhDX2JvdHRvbV9zaWRlICAgICAgICAgfSwKKyAgeyBOVUxM LCAgICAgICAgJlZ4X3dpbmRvd19ib3R0b21fbGVmdF9jb3JuZXJfc2hhcGUsICBYQ19ib3R0 b21fbGVmdF9jb3JuZXIgIH0sCiB9OwoKIHN0cnVjdCBtb3VzZV9jdXJzb3JfZGF0YSB7CkBA IC0xMjk2LDYgKzEzMTIsMTQgQEAgc3RydWN0IG1vdXNlX2N1cnNvcl9kYXRhIHsKICAgSU5T VEFMTF9DVVJTT1IgKGhhbmRfY3Vyc29yLCBoYW5kKTsKICAgSU5TVEFMTF9DVVJTT1IgKGhv cml6b250YWxfZHJhZ19jdXJzb3IsIGhvcml6b250YWxfZHJhZyk7CiAgIElOU1RBTExfQ1VS U09SICh2ZXJ0aWNhbF9kcmFnX2N1cnNvciwgdmVydGljYWxfZHJhZyk7CisgIElOU1RBTExf Q1VSU09SIChsZWZ0X2VkZ2VfY3Vyc29yLCBsZWZ0X2VkZ2UpOworICBJTlNUQUxMX0NVUlNP UiAodG9wX2xlZnRfY29ybmVyX2N1cnNvciwgdG9wX2xlZnRfY29ybmVyKTsKKyAgSU5TVEFM TF9DVVJTT1IgKHRvcF9lZGdlX2N1cnNvciwgdG9wX2VkZ2UpOworICBJTlNUQUxMX0NVUlNP UiAodG9wX3JpZ2h0X2Nvcm5lcl9jdXJzb3IsIHRvcF9yaWdodF9jb3JuZXIpOworICBJTlNU QUxMX0NVUlNPUiAocmlnaHRfZWRnZV9jdXJzb3IsIHJpZ2h0X2VkZ2UpOworICBJTlNUQUxM X0NVUlNPUiAoYm90dG9tX3JpZ2h0X2Nvcm5lcl9jdXJzb3IsIGJvdHRvbV9yaWdodF9jb3Ju ZXIpOworICBJTlNUQUxMX0NVUlNPUiAoYm90dG9tX2VkZ2VfY3Vyc29yLCBib3R0b21fZWRn ZSk7CisgIElOU1RBTExfQ1VSU09SIChib3R0b21fbGVmdF9jb3JuZXJfY3Vyc29yLCBib3R0 b21fbGVmdF9jb3JuZXIpOwoKICN1bmRlZiBJTlNUQUxMX0NVUlNPUgoKQEAgLTM4MTQsNiAr MzgzOCw4IEBAIHN0cnVjdCBtb3VzZV9jdXJzb3JfZGF0YSB7CiAJCSAgICAgICAibGVmdEZy aW5nZSIsICJMZWZ0RnJpbmdlIiwgUkVTX1RZUEVfTlVNQkVSKTsKICAgeF9kZWZhdWx0X3Bh cmFtZXRlciAoZiwgcGFybXMsIFFyaWdodF9mcmluZ2UsIFFuaWwsCiAJCSAgICAgICAicmln aHRGcmluZ2UiLCAiUmlnaHRGcmluZ2UiLCBSRVNfVFlQRV9OVU1CRVIpOworICB4X2RlZmF1 bHRfcGFyYW1ldGVyIChmLCBwYXJtcywgUW5vX3NwZWNpYWxfZ2x5cGhzLCBRbmlsLAorCQkg ICAgICAgTlVMTCwgTlVMTCwgUkVTX1RZUEVfQk9PTEVBTik7CgogICB4X2RlZmF1bHRfc2Ny b2xsX2Jhcl9jb2xvcl9wYXJhbWV0ZXIgKGYsIHBhcm1zLCBRc2Nyb2xsX2Jhcl9mb3JlZ3Jv dW5kLAogCQkJCQkic2Nyb2xsQmFyRm9yZWdyb3VuZCIsCkBAIC02MTk2LDYgKzYyMjIsOCBA QCBzdGF0aWMgdm9pZCBjb21wdXRlX3RpcF94eSAoc3RydWN0IGZyYW1lICosIExpc3BfT2Jq ZWN0LCBMaXNwX09iamVjdCwKIAkJICAgICAgICJjdXJzb3JDb2xvciIsICJGb3JlZ3JvdW5k IiwgUkVTX1RZUEVfU1RSSU5HKTsKICAgeF9kZWZhdWx0X3BhcmFtZXRlciAoZiwgcGFybXMs IFFib3JkZXJfY29sb3IsIGJ1aWxkX3N0cmluZyAoImJsYWNrIiksCiAJCSAgICAgICAiYm9y ZGVyQ29sb3IiLCAiQm9yZGVyQ29sb3IiLCBSRVNfVFlQRV9TVFJJTkcpOworICB4X2RlZmF1 bHRfcGFyYW1ldGVyIChmLCBwYXJtcywgUW5vX3NwZWNpYWxfZ2x5cGhzLCBRbmlsLAorCQkg ICAgICAgTlVMTCwgTlVMTCwgUkVTX1RZUEVfQk9PTEVBTik7CgogICAvKiBJbml0IGZhY2Vz IGJlZm9yZSB4X2RlZmF1bHRfcGFyYW1ldGVyIGlzIGNhbGxlZCBmb3IgdGhlCiAgICAgIHNj cm9sbC1iYXItd2lkdGggcGFyYW1ldGVyIGJlY2F1c2Ugb3RoZXJ3aXNlIHdlIGVuZCB1cCBp bgpAQCAtNzQ4Niw2ICs3NTE0LDcgQEAgRlJBTUVTIHNob3VsZCBiZSBuaWwgKHRoZSBzZWxl Y3RlZCBmcmFtZSksIGEgZnJhbWUsIG9yIGEgbGlzdCBvZgogICB4X3NldF9ub19hY2NlcHRf Zm9jdXMsCiAgIHhfc2V0X3pfZ3JvdXAsCiAgIHhfc2V0X292ZXJyaWRlX3JlZGlyZWN0LAor ICB4X3NldF9ub19zcGVjaWFsX2dseXBocywKIH07Cgogdm9pZApAQCAtNzU2NCw2ICs3NTkz LDYyIEBAIEZSQU1FUyBzaG91bGQgYmUgbmlsICh0aGUgc2VsZWN0ZWQgZnJhbWUpLCBhIGZy YW1lLCBvciBhIGxpc3Qgb2YKIG9yIHdoZW4geW91IHNldCB0aGUgbW91c2UgY29sb3IuICAq Lyk7CiAgIFZ4X3dpbmRvd192ZXJ0aWNhbF9kcmFnX3NoYXBlID0gUW5pbDsKCisgIERFRlZB Ul9MSVNQICgieC13aW5kb3ctbGVmdC1lZGdlLWN1cnNvciIsCisJICAgICAgIFZ4X3dpbmRv d19sZWZ0X2VkZ2Vfc2hhcGUsCisgIGRvYzogLyogUG9pbnRlciBzaGFwZSBpbmRpY2F0aW5n IGEgbGVmdCB4LXdpbmRvdyBlZGdlIGNhbiBiZSBkcmFnZ2VkLgorVGhpcyB2YXJpYWJsZSB0 YWtlcyBlZmZlY3Qgd2hlbiB5b3UgY3JlYXRlIGEgbmV3IGZyYW1lCitvciB3aGVuIHlvdSBz ZXQgdGhlIG1vdXNlIGNvbG9yLiAgKi8pOworICBWeF93aW5kb3dfbGVmdF9lZGdlX3NoYXBl ID0gUW5pbDsKKworICBERUZWQVJfTElTUCAoIngtd2luZG93LXRvcC1sZWZ0LWNvcm5lci1j dXJzb3IiLAorCSAgICAgICBWeF93aW5kb3dfdG9wX2xlZnRfY29ybmVyX3NoYXBlLAorICBk b2M6IC8qIFBvaW50ZXIgc2hhcGUgaW5kaWNhdGluZyBhIHRvcCBsZWZ0IHgtd2luZG93IGNv cm5lciBjYW4gYmUgZHJhZ2dlZC4KK1RoaXMgdmFyaWFibGUgdGFrZXMgZWZmZWN0IHdoZW4g eW91IGNyZWF0ZSBhIG5ldyBmcmFtZQorb3Igd2hlbiB5b3Ugc2V0IHRoZSBtb3VzZSBjb2xv ci4gICovKTsKKyAgVnhfd2luZG93X3RvcF9sZWZ0X2Nvcm5lcl9zaGFwZSA9IFFuaWw7CisK KyAgREVGVkFSX0xJU1AgKCJ4LXdpbmRvdy10b3AtZWRnZS1jdXJzb3IiLAorCSAgICAgICBW eF93aW5kb3dfdG9wX2VkZ2Vfc2hhcGUsCisgIGRvYzogLyogUG9pbnRlciBzaGFwZSBpbmRp Y2F0aW5nIGEgdG9wIHgtd2luZG93IGVkZ2UgY2FuIGJlIGRyYWdnZWQuCitUaGlzIHZhcmlh YmxlIHRha2VzIGVmZmVjdCB3aGVuIHlvdSBjcmVhdGUgYSBuZXcgZnJhbWUKK29yIHdoZW4g eW91IHNldCB0aGUgbW91c2UgY29sb3IuICAqLyk7CisgIFZ4X3dpbmRvd190b3BfZWRnZV9z aGFwZSA9IFFuaWw7CisKKyAgREVGVkFSX0xJU1AgKCJ4LXdpbmRvdy10b3AtcmlnaHQtY29y bmVyLWN1cnNvciIsCisJICAgICAgIFZ4X3dpbmRvd190b3BfcmlnaHRfY29ybmVyX3NoYXBl LAorICBkb2M6IC8qIFBvaW50ZXIgc2hhcGUgaW5kaWNhdGluZyBhIHRvcCByaWdodCB4LXdp bmRvdyBjb3JuZXIgY2FuIGJlIGRyYWdnZWQuCitUaGlzIHZhcmlhYmxlIHRha2VzIGVmZmVj dCB3aGVuIHlvdSBjcmVhdGUgYSBuZXcgZnJhbWUKK29yIHdoZW4geW91IHNldCB0aGUgbW91 c2UgY29sb3IuICAqLyk7CisgIFZ4X3dpbmRvd190b3BfcmlnaHRfY29ybmVyX3NoYXBlID0g UW5pbDsKKworICBERUZWQVJfTElTUCAoIngtd2luZG93LXJpZ2h0LWVkZ2UtY3Vyc29yIiwK KwkgICAgICAgVnhfd2luZG93X3JpZ2h0X2VkZ2Vfc2hhcGUsCisgIGRvYzogLyogUG9pbnRl ciBzaGFwZSBpbmRpY2F0aW5nIGEgcmlnaHQgeC13aW5kb3cgZWRnZSBjYW4gYmUgZHJhZ2dl ZC4KK1RoaXMgdmFyaWFibGUgdGFrZXMgZWZmZWN0IHdoZW4geW91IGNyZWF0ZSBhIG5ldyBm cmFtZQorb3Igd2hlbiB5b3Ugc2V0IHRoZSBtb3VzZSBjb2xvci4gICovKTsKKyAgVnhfd2lu ZG93X3JpZ2h0X2VkZ2Vfc2hhcGUgPSBRbmlsOworCisgIERFRlZBUl9MSVNQICgieC13aW5k b3ctYm90dG9tLXJpZ2h0LWNvcm5lci1jdXJzb3IiLAorCSAgICAgICBWeF93aW5kb3dfYm90 dG9tX3JpZ2h0X2Nvcm5lcl9zaGFwZSwKKyAgZG9jOiAvKiBQb2ludGVyIHNoYXBlIGluZGlj YXRpbmcgYSBib3R0b20gcmlnaHQgeC13aW5kb3cgY29ybmVyIGNhbiBiZSBkcmFnZ2VkLgor VGhpcyB2YXJpYWJsZSB0YWtlcyBlZmZlY3Qgd2hlbiB5b3UgY3JlYXRlIGEgbmV3IGZyYW1l CitvciB3aGVuIHlvdSBzZXQgdGhlIG1vdXNlIGNvbG9yLiAgKi8pOworICBWeF93aW5kb3df Ym90dG9tX3JpZ2h0X2Nvcm5lcl9zaGFwZSA9IFFuaWw7CisKKyAgREVGVkFSX0xJU1AgKCJ4 LXdpbmRvdy1ib3R0b20tZWRnZS1jdXJzb3IiLAorCSAgICAgICBWeF93aW5kb3dfYm90dG9t X2VkZ2Vfc2hhcGUsCisgIGRvYzogLyogUG9pbnRlciBzaGFwZSBpbmRpY2F0aW5nIGEgYm90 dG9tIHgtd2luZG93IGVkZ2UgY2FuIGJlIGRyYWdnZWQuCitUaGlzIHZhcmlhYmxlIHRha2Vz IGVmZmVjdCB3aGVuIHlvdSBjcmVhdGUgYSBuZXcgZnJhbWUKK29yIHdoZW4geW91IHNldCB0 aGUgbW91c2UgY29sb3IuICAqLyk7CisgIFZ4X3dpbmRvd19ib3R0b21fZWRnZV9zaGFwZSA9 IFFuaWw7CisKKyAgREVGVkFSX0xJU1AgKCJ4LXdpbmRvdy1ib3R0b20tbGVmdC1jb3JuZXIt Y3Vyc29yIiwKKwkgICAgICAgVnhfd2luZG93X2JvdHRvbV9sZWZ0X2Nvcm5lcl9zaGFwZSwK KyAgZG9jOiAvKiBQb2ludGVyIHNoYXBlIGluZGljYXRpbmcgYSBib3R0b20gbGVmdCB4LXdp bmRvdyBjb3JuZXIgY2FuIGJlIGRyYWdnZWQuCitUaGlzIHZhcmlhYmxlIHRha2VzIGVmZmVj dCB3aGVuIHlvdSBjcmVhdGUgYSBuZXcgZnJhbWUKK29yIHdoZW4geW91IHNldCB0aGUgbW91 c2UgY29sb3IuICAqLyk7CisgIFZ4X3dpbmRvd19ib3R0b21fbGVmdF9jb3JuZXJfc2hhcGUg PSBRbmlsOworCiAgIERFRlZBUl9MSVNQICgieC1jdXJzb3ItZm9yZS1waXhlbCIsIFZ4X2N1 cnNvcl9mb3JlX3BpeGVsLAogICAgIGRvYzogLyogQSBzdHJpbmcgaW5kaWNhdGluZyB0aGUg Zm9yZWdyb3VuZCBjb2xvciBvZiB0aGUgY3Vyc29yIGJveC4gICovKTsKICAgVnhfY3Vyc29y X2ZvcmVfcGl4ZWwgPSBRbmlsOwpkaWZmIC0tZ2l0IGEvc3JjL3h0ZXJtLmMgYi9zcmMveHRl cm0uYwppbmRleCBjODgzNmI3Li5hMjE0Y2Q4IDEwMDY0NAotLS0gYS9zcmMveHRlcm0uYwor KysgYi9zcmMveHRlcm0uYwpAQCAtMTE3NTcsNiArMTE3NTcsMjIgQEAgc3RydWN0IHhfZXJy b3JfbWVzc2FnZV9zdGFjayB7CiAJWEZyZWVDdXJzb3IgKEZSQU1FX1hfRElTUExBWSAoZiks IGYtPm91dHB1dF9kYXRhLngtPmhvcml6b250YWxfZHJhZ19jdXJzb3IpOwogICAgICAgaWYg KGYtPm91dHB1dF9kYXRhLngtPnZlcnRpY2FsX2RyYWdfY3Vyc29yICE9IDApCiAJWEZyZWVD dXJzb3IgKEZSQU1FX1hfRElTUExBWSAoZiksIGYtPm91dHB1dF9kYXRhLngtPnZlcnRpY2Fs X2RyYWdfY3Vyc29yKTsKKyAgICAgIGlmIChmLT5vdXRwdXRfZGF0YS54LT5sZWZ0X2VkZ2Vf Y3Vyc29yICE9IDApCisJWEZyZWVDdXJzb3IgKEZSQU1FX1hfRElTUExBWSAoZiksIGYtPm91 dHB1dF9kYXRhLngtPmxlZnRfZWRnZV9jdXJzb3IpOworICAgICAgaWYgKGYtPm91dHB1dF9k YXRhLngtPnRvcF9sZWZ0X2Nvcm5lcl9jdXJzb3IgIT0gMCkKKwlYRnJlZUN1cnNvciAoRlJB TUVfWF9ESVNQTEFZIChmKSwgZi0+b3V0cHV0X2RhdGEueC0+dG9wX2xlZnRfY29ybmVyX2N1 cnNvcik7CisgICAgICBpZiAoZi0+b3V0cHV0X2RhdGEueC0+dG9wX2VkZ2VfY3Vyc29yICE9 IDApCisJWEZyZWVDdXJzb3IgKEZSQU1FX1hfRElTUExBWSAoZiksIGYtPm91dHB1dF9kYXRh LngtPnRvcF9lZGdlX2N1cnNvcik7CisgICAgICBpZiAoZi0+b3V0cHV0X2RhdGEueC0+dG9w X3JpZ2h0X2Nvcm5lcl9jdXJzb3IgIT0gMCkKKwlYRnJlZUN1cnNvciAoRlJBTUVfWF9ESVNQ TEFZIChmKSwgZi0+b3V0cHV0X2RhdGEueC0+dG9wX3JpZ2h0X2Nvcm5lcl9jdXJzb3IpOwor ICAgICAgaWYgKGYtPm91dHB1dF9kYXRhLngtPnJpZ2h0X2VkZ2VfY3Vyc29yICE9IDApCisJ WEZyZWVDdXJzb3IgKEZSQU1FX1hfRElTUExBWSAoZiksIGYtPm91dHB1dF9kYXRhLngtPnJp Z2h0X2VkZ2VfY3Vyc29yKTsKKyAgICAgIGlmIChmLT5vdXRwdXRfZGF0YS54LT5ib3R0b21f cmlnaHRfY29ybmVyX2N1cnNvciAhPSAwKQorCVhGcmVlQ3Vyc29yIChGUkFNRV9YX0RJU1BM QVkgKGYpLCBmLT5vdXRwdXRfZGF0YS54LT5ib3R0b21fcmlnaHRfY29ybmVyX2N1cnNvcik7 CisgICAgICBpZiAoZi0+b3V0cHV0X2RhdGEueC0+Ym90dG9tX2VkZ2VfY3Vyc29yICE9IDAp CisJWEZyZWVDdXJzb3IgKEZSQU1FX1hfRElTUExBWSAoZiksIGYtPm91dHB1dF9kYXRhLngt PmJvdHRvbV9lZGdlX2N1cnNvcik7CisgICAgICBpZiAoZi0+b3V0cHV0X2RhdGEueC0+Ym90 dG9tX2xlZnRfY29ybmVyX2N1cnNvciAhPSAwKQorCVhGcmVlQ3Vyc29yIChGUkFNRV9YX0RJ U1BMQVkgKGYpLCBmLT5vdXRwdXRfZGF0YS54LT5ib3R0b21fbGVmdF9jb3JuZXJfY3Vyc29y KTsKCiAgICAgICBYRmx1c2ggKEZSQU1FX1hfRElTUExBWSAoZikpOwogICAgIH0KZGlmZiAt LWdpdCBhL3NyYy94dGVybS5oIGIvc3JjL3h0ZXJtLmgKaW5kZXggYTc1MjU3MC4uODAzZmVk YSAxMDA2NDQKLS0tIGEvc3JjL3h0ZXJtLmgKKysrIGIvc3JjL3h0ZXJtLmgKQEAgLTYzNyw2 ICs2MzcsMTQgQEAgc3RydWN0IHhfb3V0cHV0CiAgIEN1cnNvciBob3Jpem9udGFsX2RyYWdf Y3Vyc29yOwogICBDdXJzb3IgdmVydGljYWxfZHJhZ19jdXJzb3I7CiAgIEN1cnNvciBjdXJy ZW50X2N1cnNvcjsKKyAgQ3Vyc29yIGxlZnRfZWRnZV9jdXJzb3I7CisgIEN1cnNvciB0b3Bf bGVmdF9jb3JuZXJfY3Vyc29yOworICBDdXJzb3IgdG9wX2VkZ2VfY3Vyc29yOworICBDdXJz b3IgdG9wX3JpZ2h0X2Nvcm5lcl9jdXJzb3I7CisgIEN1cnNvciByaWdodF9lZGdlX2N1cnNv cjsKKyAgQ3Vyc29yIGJvdHRvbV9yaWdodF9jb3JuZXJfY3Vyc29yOworICBDdXJzb3IgYm90 dG9tX2VkZ2VfY3Vyc29yOworICBDdXJzb3IgYm90dG9tX2xlZnRfY29ybmVyX2N1cnNvcjsK CiAgIC8qIFdpbmRvdyB3aG9zZSBjdXJzb3IgaXMgaG91cmdsYXNzX2N1cnNvci4gIFRoaXMg d2luZG93IGlzIHRlbXBvcmFyaWx5CiAgICAgIG1hcHBlZCB0byBkaXNwbGF5IGFuIGhvdXJn bGFzcyBjdXJzb3IuICAqLwo= --------------000202090607030307050103 Content-Type: text/plain; charset=windows-1252; name="ChangeLog" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="ChangeLog" UHJvdmlkZSBtb3VzZSBkcmFnZ2luZyBhbmQgcmVzaXppbmcgb2YgZnJhbWVzLiAgQWxsb3cg cmVzaXppbmcKZnJhbWVzIHByb3BvcnRpb25hbGx5LiAgUHJvdmlkZSBhZGRpdGlvbmFsIGZ1 bmN0aW9uYWxpdHkgZm9yCmNoaWxkIGZyYW1lcy4KCiogbGlzcC9mcmFtZS5lbCAoZnJhbWUt Ym9yZGVyLXdpZHRoLCBmcmFtZS1waXhlbC13aWR0aCkKKGZyYW1lLXBpeGVsLWhlaWdodCk6 IEFsaWFzIHRvIGBmcmFtZS1pbnRlcm5hbC1ib3JkZXItd2lkdGgnLApgZnJhbWUtbmF0aXZl LXdpZHRoJyBhbmQgYGZyYW1lLW5hdGl2ZS1oZWlnaHQnLgooZnJhbWUtaW5uZXItd2lkdGgs IGZyYW1lLWlubmVyLWhlaWdodCwgZnJhbWUtb3V0ZXItd2lkdGgpCihmcmFtZS1vdXRlci1o ZWlnaHQpOiBOZXcgZnVuY3Rpb25zLgoqIGxpc3AvbWluaWJ1ZmZlci5lbCAoY29tcGxldGlv bi1hdXRvLWhlbHApOiBGaXggdHlwby4KKiBsaXNwL21vdXNlLmVsIChtb3VzZS1kcmFnLWxp bmUsIG1vdXNlLWRyYWctbW9kZS1saW5lKQoobW91c2UtZHJhZy1oZWFkZXItbGluZSk6IEFs bG93IG1vdmluZyBhIGZyYW1lIGJ5IGRyYWdnaW5nIHRoZQptb2RlIGxpbmUgb2YgaXRzIGJv dHRvbW1vc3Qgd2luZG93IChvbiBhIG1pbmlidWZmZXItbGVzcyBmcmFtZSkKb3IgdGhlIGhl YWRlciBsaW5lIG9mIGl0cyB0b3Btb3N0IHdpbmRvdy4KKG1vdXNlLWRyYWctdmVydGljYWwt bGluZSk6IE1lbnRpb24gYXJndW1lbnQgaW4gZG9jLXN0cmluZy4KKG1vdXNlLXJlc2l6ZS1m cmFtZSwgbW91c2UtZHJhZy1mcmFtZSwgbW91c2UtZHJhZy1sZWZ0LWVkZ2UpCihtb3VzZS1k cmFnLXRvcC1sZWZ0LWNvcm5lciwgbW91c2UtZHJhZy10b3AtZWRnZSkKKG1vdXNlLWRyYWct dG9wLXJpZ2h0LWNvcm5lciwgbW91c2UtZHJhZy1yaWdodC1lZGdlKQoobW91c2UtZHJhZy1i b3R0b20tcmlnaHQtY29ybmVyLCBtb3VzZS1kcmFnLWJvdHRvbS1lZGdlKQoobW91c2UtZHJh Zy1ib3R0b20tbGVmdC1jb3JuZXIpOiBOZXcgZnVuY3Rpb25zIGZvciByZXNpemluZyBhCmZy YW1lIGJ5IGRyYWdnaW5nIGl0cyBpbnRlcm5hbCBib3JkZXIgdG9nZXRoZXIgd2l0aApjb3Jy ZXNwb25kaW5nIGtleSBiaW5kaW5ncy4KKiBsaXNwL3Rvb2x0aXAuZWwgKHRvb2x0aXAtZnJh bWUtcGFyYW1ldGVycyk6IEFkZAonbm8tc3BlY2lhbC1nbHlwaHMnIHRvIGRlZmF1bHQgcGFy YW1ldGVycyBhbmQgdXBkYXRlIHZlcnNpb24KdGFnLgoqIGxpc3Avd2luZG93LmVsIChmcmFt ZS1hdXRvLWhpZGUtZnVuY3Rpb24pOiBBZGQgY2hvaWNlIHRvIG1ha2UKZnJhbWUgaW52aXNp YmxlIGFuZCB1cGRhdGUgdmVyc2lvbiB0YWcuCih3aW5kb3ctLWRlbGV0ZSk6IEhhbmRsZSAn YXV0by1oaWRlLWZ1bmN0aW9uJyBmcmFtZSBwYXJhbWV0ZXIuCih3aW5kb3ctLW1heWJlLXJh aXNlLWZyYW1lKTogUmVzcGVjdCAnbm8tZm9jdXMtb24tbWFwJyBhbmQKJ25vLWFjY2VwdC1m b2N1cycgZnJhbWUgcGFyYW1ldGVycy4KKGRpc3BsYXktYnVmZmVyLS1hY3Rpb24tZnVuY3Rp b24tY3VzdG9tLXR5cGUpOiBBZGQKYGRpc3BsYXktYnVmZmVyLWluLWNoaWxkLWZyYW1lJy4K KGRpc3BsYXktYnVmZmVyKTogTWVudGlvbiBgZGlzcGxheS1idWZmZXItaW4tY2hpbGQtZnJh bWUnIGluCmRvYy1zdHJpbmcuCihkaXNwbGF5LWJ1ZmZlci1pbi1jaGlsZC1mcmFtZSk6IE5l dyBhY3Rpb24gZnVuY3Rpb24gZm9yCmBkaXNwbGF5LWJ1ZmZlcicuCih3aW5kb3ctLXNhbml0 aXplLW1hcmdpbik6IFJldHVybiB6ZXJvIHdoZW4gTUFSR0lOIGNhbm5vdCBiZQpzYW5pdGl6 ZWQuCihmaXQtZnJhbWUtdG8tYnVmZmVyKTogTWFqb3IgcmV3cml0ZSB0byBoYW5kbGUgY2hp bGQgZnJhbWVzIGFuZAonZml0LWZyYW1lLXRvLWJ1ZmZlci1zaXplcycgYW5kICdmaXQtZnJh bWUtdG8tYnVmZmVyLW1hcmdpbnMnCmZyYW1lIHBhcmFtZXRlcnMuCih3aW5kb3ctbGFyZ2Vz dC1lbXB0eS1yZWN0YW5nbGUtLW1heGltdW1zLTEpCih3aW5kb3ctbGFyZ2VzdC1lbXB0eS1y ZWN0YW5nbGUtLW1heGltdW1zKQood2luZG93LWxhcmdlc3QtZW1wdHktcmVjdGFuZ2xlLS1k aXNqb2ludC1tYXhpbXVtcykKKHdpbmRvdy1sYXJnZXN0LWVtcHR5LXJlY3RhbmdsZSk6IE5l dyBmdW5jdGlvbnMuCgoqIHNyYy9kaXNwZXh0ZXJuLmggKFdJTkRPV19XQU5UU19NT0RFTElO RV9QKQooV0lORE9XX1dBTlRTX0hFQURFUl9MSU5FX1ApOiBSZW1vdmUuICBGdW5jdGlvbmFs aXR5IGlzIG5vdwpwcm92aWRlZCBieSBjb3JyZXNwb25kaW5nIGZ1bmN0aW9ucyB3aW5kb3df d2FudHNfbW9kZWxpbmUgYW5kCndpbmRvd193YW50c19oZWFkZXJfbGluZSBpbiB3aW5kb3cu Yy4gIEFkanVzdCB1c2Vycy4KKiBzcmMvZGlzcG5ldy5jIChhZGp1c3RfZ2x5cGhfbWF0cml4 KQooYnVmZmVyX3Bvc25fZnJvbV9jb29yZHMpOiBVc2Ugd2luZG93X3dhbnRzX21vZGVsaW5l IGFuZAp3aW5kb3dfd2FudHNfaGVhZGVyX2xpbmUgaW5zdGVhZCBvZiBXSU5ET1dfV0FOVFNf TU9ERUxJTkVfUCBhbmQKV0lORE9XX1dBTlRTX0hFQURFUl9MSU5FX1AuCiogc3JjL2ZyYW1l LmMgKGtlZXBfcmF0aW8pOiBOZXcgZnVuY3Rpb24uCihhZGp1c3RfZnJhbWVfc2l6ZSk6IENh bGwga2VlcF9yYXRpbyBmb3IgZWFjaCBvZiBGJ3MgY2hpbGQKZnJhbWVzLgoobWFrZV9mcmFt ZSk6IEluaXRpYWxpemUgbm9fc3BlY2lhbF9nbHlwaHMgc2xvdC4KKGZyYW1lX2ludGVybmFs X2JvcmRlcl9wYXJ0KTogTmV3IGZ1bmN0aW9uLgooRmZyYW1lX3BpeGVsX3dpZHRoLCBGZnJh bWVfcGl4ZWxfaGVpZ2h0LCBGYm9yZGVyX3dpZHRoKTogUmVuYW1lCnRvIEZmcmFtZV9uYXRp dmVfd2lkdGgsIEZmcmFtZV9uYXRpdmVfaGVpZ2h0IG1hbmQKRmZyYW1lX2ludGVybmFsX2Jv cmRlcl93aWR0aC4KKGZyYW1lX3Bhcm1fdGFibGUpOiBBZGQgUW5vX3NwZWNpYWxfZ2x5cGhz IGVudHJ5LgooZnJhbWVfZmxvYXRfdHlwZSk6IE5ldyBlbnVtZXJhdGlvbiB0eXBlLgooZnJh bWVfZmxvYXQpOiBOZXcgZnVuY3Rpb24gdG8gaGFuZGxlIGZyYW1lIHNpemUgYW5kIHBvc2l0 aW9uCnJhdGlvcy4KKHhfc2V0X2ZyYW1lX3BhcmFtZXRlcnMpOiBIYW5kbGUgc2l6ZSBhbmQg cG9zaXRpb24gcmF0aW9zLgooeF9zZXRfbm9fc3BlY2lhbF9nbHlwaHMpOiBOZXcgZnVuY3Rp b24KKHhfZmlndXJlX3dpbmRvd19zaXplKTogSGFuZGxlIHNpemUgYW5kIHBvc2l0aW9uIHJh dGlvcy4KKHN5bXNfb2ZfZnJhbWUpOiBBZGQgUWRpc3BsYXlfbW9uaXRvcl9hdHRyaWJ1dGVz X2xpc3QsClFub19zcGVjaWFsX2dseXBocywgUWZyYW1lX2VkZ2VzLCBRa2VlcF9yYXRpbywg UXdpZHRoX29ubHksClFoZWlnaHRfb25seSwgUWxlZnRfb25seSBhbmQgUXRvcF9vbmx5Lgoq IHNyYy9mcmFtZS5oIChpbnRlcm5hbF9ib3JkZXJfcGFydCk6IE5ldyBlbnVtZXJhdGlvbiB0 eXBlLgooc3RydWN0IGZyYW1lKTogTmV3IHNsb3Qgbm9fc3BlY2lhbF9nbHlwaHMuCihGUkFN RV9OT19TUEVDSUFMX0dMWVBIUyk6IE5ldyBtYWNyby4KKiBzcmMva2V5Ym9hcmQuYyAoaW50 ZXJuYWxfYm9yZGVyX3BhcnRzKTogTmV3IGFycmF5IGNvbnN0YW50LgoobWFrZV9saXNweV9w b3NpdGlvbik6IEZvciBmcmFtZXMgd2l0aCBib3JkZXIgZHJhZ2dpbmcgZW5hYmxlZApyZXR1 cm4gaW50ZXJuYWwgYm9yZGVyIHBhcnQuCihzeW1zX29mX2tleWJvYXJkKTogTmV3IHN5bWJv bHMgUWRyYWdfaW50ZXJuYWxfYm9yZGVyLApRbGVmdF9lZGdlLCBRdG9wX2xlZnRfY29ybmVy LCBRdG9wX2VkZ2UsIFF0b3BfcmlnaHRfY29ybmVyLApRcmlnaHRfZWRnZSwgUWJvdHRvbV9y aWdodF9jb3JuZXIsIFFib3R0b21fZWRnZSBhbmQKUWJvdHRvbV9sZWZ0X2Nvcm5lci4KKiBz cmMvbWluaWJ1Zi5jIChyZWFkX21pbmlidWZfdW53aW5kKTogV2hlbiBleGl0aW5nIHRoZQpt aW5pYnVmZmVyIGRlYWwgd2l0aCBmcmFtZXMgdGhhdCBoYXZlIHRoZSAnbWluaWJ1ZmZlci1l eGl0JwpwYXJhbWV0ZXIgc2V0Lgooc3ltc19vZl9taW5pYnVmKTogTmV3IHN5bWJvbCBRbWlu aWJ1ZmZlcl9leGl0LgoqIHNyYy9uc2Zucy5tIChmcmFtZV9wYXJtX2hhbmRsZXIpOiBBZGQg ZW50cnkgZm9yCnhfc2V0X25vX3NwZWNpYWxfZ2x5cGhzLgooRnhfY3JlYXRlX2ZyYW1lKTog SGFuZGxlICduby1zcGVjaWFsLWdseXBocycgcGFyYW1ldGVyLgpJbnRpdGlhbGl6ZSBuZXcg Y3Vyc29yIHR5cGVzIGZvciBkcmFnZ2luZyBmcmFtZSBib3JkZXJzLgoqIHNyYy9uc3Rlcm0u aCAoc3RydWN0IG5zX291dHB1dCk6IEFkZCBuZXcgY3Vyc29yIHR5cGVzIGZvcgpkcmFnZ2lu ZyBmcmFtZSBib3JkZXJzLgoqIHNyYy93MzJmbnMuYyAodzMyX2ZyYW1lX3Bhcm1faGFuZGxl cnMpOiBBZGQgZW50cnkgZm9yCnhfc2V0X25vX3NwZWNpYWxfZ2x5cGhzLgooRnhfY3JlYXRl X2ZyYW1lKTogSGFuZGxlICduby1zcGVjaWFsLWdseXBocycgcGFyYW1ldGVyLgpJbnRpdGlh bGl6ZSBuZXcgY3Vyc29yIHR5cGVzIGZvciBkcmFnZ2luZyBmcmFtZSBib3JkZXJzLgoqIHNy Yy93MzJ0ZXJtLmggKHN0cnVjdCB3MzJfb3V0cHV0KTogQWRkIG5ldyBjdXJzb3IgdHlwZXMg Zm9yCmRyYWdnaW5nIGZyYW1lIGJvcmRlcnMuCiogc3JjL3dpbmRvdy5jIChjb29yZGluYXRl c19pbl93aW5kb3cpCihGd2luZG93X2xpbmVfaGVpZ2h0LCB3aW5kb3dfaW50ZXJuYWxfaGVp Z2h0KTogVXNlCndpbmRvd193YW50c19tb2RlbGluZSBhbmQgd2luZG93X3dhbnRzX2hlYWRl cl9saW5lIGluc3RlYWQgb2YKV0lORE9XX1dBTlRTX01PREVMSU5FX1AgYW5kIFdJTkRPV19X QU5UU19IRUFERVJfTElORV9QLgooRndpbmRvd19saW5lc19waXhlbF9kaW1lbnNpb25zKTog TmV3IGZ1bmN0aW9uLgood2luZG93X3BhcmFtZXRlcik6IE5ldyBmdW5jdGlvbi4KKEZ3aW5k b3dfcGFyYW1ldGVyKTogQ2FsbCB3aW5kb3dfcGFyYW1ldGVyLgood2luZG93X3dhbnRzX21v ZGVfbGluZSwgd2luZG93X3dhbnRzX2hlYWRlcl9saW5lKTogTmV3CmZ1bmN0aW9ucyByZXBs YWNpbmcgdGhlIG1hY3JvcyBXSU5ET1dfV0FOVFNfTU9ERUxJTkVfUCBhbmQKV0lORE9XX1dB TlRTX0hFQURFUl9MSU5FX1AgZnJvbSBkaXNwZXh0ZXJuLmguCihzeW1zX29mX3dpbmRvdyk6 IE5ldyBzeW1ib2xzIFFtb2RlX2xpbmVfZm9ybWF0IGFuZApRaGVhZGVyX2xpbmVfZm9ybWF0 LgoqIHNyYy93aW5kb3cuaDogUmVvcmdhbml6ZSBhbmQgcmUtY29tbWVudCBtYWNyb3MuICBV c2UKd2luZG93X3dhbnRzX21vZGVsaW5lIGFuZCB3aW5kb3dfd2FudHNfaGVhZGVyX2xpbmUg aW5zdGVhZCBvZgpXSU5ET1dfV0FOVFNfTU9ERUxJTkVfUCBhbmQgV0lORE9XX1dBTlRTX0hF QURFUl9MSU5FX1AuCihNSU5JX05PTl9PTkxZX1dJTkRPV19QLCBNSU5JX09OTFlfV0lORE9X X1ApOiBNaW5vciByZXdyaXRlLgooV0lORE9XX0JVRkZFUik6IE5ldyBtYWNyby4KKFdJTkRP V19CT1hfTEVGVF9FREdFX0NPTCwgV0lORE9XX0JPWF9SSUdIVF9FREdFX0NPTCk6IFJlbW92 ZS4KKiBzcmMveGRpc3AuYyAod2luZG93X3RleHRfYm90dG9tX3ksIHdpbmRvd19ib3hfaGVp Z2h0KQood2luZG93X2JveCwgc3RhcnRfZGlzcGxheSkKKGNvbXB1dGVfd2luZG93X3N0YXJ0 X29uX2NvbnRpbnVhdGlvbl9saW5lKQoodHJ5X2N1cnNvcl9tb3ZlbWVudCwgcmVkaXNwbGF5 X3dpbmRvdykKKHRyeV93aW5kb3dfcmV1c2luZ19jdXJyZW50X21hdHJpeCwgdHJ5X3dpbmRv d19pZCkKKGRpc3BsYXlfbGluZSwgZXhwb3NlX3dpbmRvdyk6IFVzZSB3aW5kb3dfd2FudHNf bW9kZWxpbmUgYW5kCndpbmRvd193YW50c19oZWFkZXJfbGluZSBpbnN0ZWFkIG9mIFdJTkRP V19XQU5UU19NT0RFTElORV9QIGFuZApXSU5ET1dfV0FOVFNfSEVBREVSX0xJTkVfUC4KKHBv c192aXNpYmxlX3AsIGRpc3BsYXlfbW9kZV9saW5lcyk6IFJlc3BlY3QgVydzCidtb2RlLWxp bmUtZm9ybWF0JyBhbmQgJ2hlYWRlci1saW5lLWZvcm1hdCcgd2luZG93IHBhcmFtZXRlcnMu Cihpbml0X2l0ZXJhdG9yKTogVXNlIHdpbmRvd193YW50c19tb2RlbGluZSBhbmQKd2luZG93 X3dhbnRzX2hlYWRlcl9saW5lIGluc3RlYWQgb2YgV0lORE9XX1dBTlRTX01PREVMSU5FX1Ag YW5kCldJTkRPV19XQU5UU19IRUFERVJfTElORV9QLiAgRm9yIHRpcCBmcmFtZXMgcmVzcGVj dApub19zcGVjaWFsX2dseXBocyB2YWx1ZS4KKG5vdGVfbW91c2VfaGlnaGxpZ2h0KTogU2V0 IGZyYW1lIGJvcmRlciBjdXJzb3JzIHdoZW4gb24KaW50ZXJuYWwgYm9yZGVyLgooeF9kcmF3 X3JpZ2h0X2RpdmlkZXIsIHhfZHJhd19ib3R0b21fZGl2aWRlcik6IFRyeSB0byBpbXByb3Zl CmRyYXdpbmcgb2Ygd2luZG93IGRpdmlkZXJzLgoqIHNyYy94Zm5zLmMgKG1vdXNlX2N1cnNv cik6IEFkZCBlbnRyaWVzIGZvciBib3JkZXIgcGFydHMuCihtb3VzZV9jdXJzb3JfdHlwZXMp OiBBZGQgZW50cmllcyBmb3IgY3Vyc29yIHR5cGVzIHRvIGRyYWcKZnJhbWUgYm9yZGVycy4K KElOU1RBTExfQ1VSU09SKTogQWRkIGVudHJpZXMgZm9yIG5ldyBjdXJzb3IgdHlwZXMgdG8g ZHJhZwpmcmFtZSBib3JkZXJzLgooRnhfY3JlYXRlX2ZyYW1lKTogSGFuZGxlICduby1zcGVj aWFsLWdseXBocycgcGFyYW1ldGVyLgooeF9mcmFtZV9wYXJtX2hhbmRsZXJzKTogQWRkIGVu dHJ5IGZvcgp4X3NldF9ub19zcGVjaWFsX2dseXBocy4KKFZ4X3dpbmRvd19sZWZ0X2VkZ2Vf c2hhcGUsIFZ4X3dpbmRvd190b3BfbGVmdF9jb3JuZXJfc2hhcGUpCihWeF93aW5kb3dfdG9w X2VkZ2Vfc2hhcGUsIFZ4X3dpbmRvd190b3BfcmlnaHRfY29ybmVyX3NoYXBlKQooVnhfd2lu ZG93X3JpZ2h0X2VkZ2Vfc2hhcGUpCihWeF93aW5kb3dfYm90dG9tX3JpZ2h0X2Nvcm5lcl9z aGFwZSkKKFZ4X3dpbmRvd19ib3R0b21fZWRnZV9zaGFwZSkKKFZ4X3dpbmRvd19ib3R0b21f bGVmdF9jb3JuZXJfc2hhcGUpOiBOZXcgdmFyaWFibGVzLgoqIHNyYy94dGVybS5jICh4X2Zy ZWVfZnJhbWVfcmVzb3VyY2VzKTogUmVtb3ZlIG5ldyBjdXJzb3JzIGZvcgpkcmFnZ2luZyBm cmFtZSBib3JkZXJzLgoqIHNyYy94dGVybS5oIChzdHJ1Y3QgeF9vdXRwdXQpOiBBZGQgbmV3 IGN1cnNvciB0eXBlcyBmb3IKZHJhZ2dpbmcgZnJhbWUgYm9yZGVycy4KCiogZG9jL2xpc3By ZWYvZGlzcGxheS50ZXhpIChTaXplIG9mIERpc3BsYXllZCBUZXh0KTogRG9jdW1lbnQKYHdp bmRvdy1saW5lcy1waXhlbC1kaW1lbnNpb25zJy4KKiBkb2MvbGlzcHJlZi9lbGlzcC50ZXhp IChUb3ApOiBBZGQgZW50cnkgZm9yICJNb3VzZSBEcmFnZ2luZwpQYXJhbWV0ZXJzIi4KKiBk b2MvbGlzcHJlZi9mcmFtZXMudGV4aSAoRnJhbWUgU2l6ZSk6IFJlcGxhY2UKZnJhbWUtcGl4 ZWwtd2lkdGgvLWhlaWdodCBieSBmcmFtZS1uYXRpdmUtd2lkdGgvLWhlaWdodC4gIEFkZApm cmFtZS1pbm5lci13aWR0aC8taGVpZ2h0IGFuZCBmcmFtZS1vdXRlci13aWR0aC8taGVpZ2h0 IGRvY3MuCihQb3NpdGlvbiBQYXJhbWV0ZXJzKTogRGVzY3JpYmUgc3BlY2lmeWluZyBwb3Np dGlvbiBhcyByYXRpb3MuCkNsYXJpZnkgcmVtYXJrIGFib3V0IHBvc2l0aW9ucyByZWxhdGl2 ZSB0byBib3R0b20vcmlkZ2UgZGlzcGxheQplZGdlLgooU2l6ZSBQYXJhbWV0ZXJzKTogRGVz Y3JpYmUgc3BlY2lmeWluZyBzaXplcyBhcyByYXRpb3MuCkRlc2NyaWJlICdmaXQtZnJhbWUt dG8tYnVmZmVyLW1hcmdpbnMnIGFuZAonZml0LWZyYW1lLXRvLWJ1ZmZlci1zaXplcycgcGFy YW1ldGVycy4KKExheW91dCBQYXJhbWV0ZXJzKTogRGVzY3JpYmUgJ25vLXNwZWNpYWwtZ2x5 cGhzJyBwYXJhbWV0ZXIuCihGcmFtZSBJbnRlcmFjdGlvbiBQYXJhbWV0ZXJzKTogRGVzY3Jp YmUgJ2F1dG8taGlkZS1mdW5jdGlvbicsCidtaW5pYnVmZmVyLWV4aXQnIGFuZCAna2VlcC1y YXRpbycgcGFyYW1ldGVycy4KKE1vdXNlIERyYWdnaW5nIFBhcmFtZXRlcnMpOiBOZXcgc2Vj dGlvbiBkZXNjcmliaW5nCidkcmFnLWludGVybmFsLWJvcmRlcicsICdkcmFnLXdpdGgtaGVh ZGVyLWxpbmUnLAonZHJhZy13aXRoLW1vZGUtbGluZScsICdzbmFwLXdpZHRoJywgJ3RvcC12 aXNpYmxlJyBhbmQKJ2JvdHRvbS12aXNpYmxlJyBwYXJhbWV0ZXJzLgooTWFuYWdlbWVudCBQ YXJhbWV0ZXJzKTogTWVudGlvbiB0aGF0IGBvdmVycmlkZS1yZWRpcmVjdCcgaGFzCm5vIGVm ZmVjdCBvbiBNUyBXaW5kb3dzLgooRm9udCBhbmQgQ29sb3IgUGFyYW1ldGVycyk6IE1lbnRp b24gY2hpbGQgZnJhbWVzIGZvciBgYWxwaGEnCnBhcmFtZXRlci4KKENoaWxkIEZyYW1lcyk6 IFJld3JpdGUgc2VjdGlvbiB3aXRoIGRlc2NyaXB0aW9uIGFuZCBjcm9zcwpyZWZlcmVuY2Vz IHRvIG5ldyBmcmFtZSBwYXJhbWV0ZXJzIGFkZGVkLgoqIGRvYy9saXNwcmVmL21vZGVzLnRl eGkgKE1vZGUgTGluZSBCYXNpY3MpOiBNZW50aW9uCidtb2RlLWxpbmUtZm9ybWF0JyBhbmQg J2hlYWRlci1saW5lLWZvcm1hdCcgd2luZG93IHBhcmFtZXRlcnMuCiogZG9jL2xpc3ByZWYv d2luZG93cy50ZXhpIChSZXNpemluZyBXaW5kb3dzKTogTWVudGlvbiBlZmZlY3QKb2YgYGZp dC1mcmFtZS10by1idWZmZXItbWFyZ2lucycgZm9yIGNoaWxkIGZyYW1lcy4KKERpc3BsYXkg QWN0aW9uIEZ1bmN0aW9ucyk6IE5ldyBhY3Rpb24gZnVuY3Rpb24KYGRpc3BsYXktYnVmZmVy LWluLWNoaWxkLWZyYW1lJy4KKFF1aXR0aW5nIFdpbmRvd3MpOiBNZW50aW9uIGBtYWtlLWZy YW1lLWludmlzaWJsZScgYXMgb3B0aW9uYWwKdmFsdWUgb2YgYGZyYW1lLWF1dG8taGlkZS1m dW5jdGlvbicgYW5kIGBhdXRvLWhpZGUtZnVuY3Rpb24nCmZyYW1lIHBhYW1ldGVyLgooQ29v cmRpbmF0ZXMgYW5kIFdpbmRvd3MpOiBEZXNjcmliZSBuZXcgZnVuY3Rpb24KYHdpbmRvdy1s YXJnZXN0LWVtcHR5LXJlY3RhbmdsZScuCihXaW5kb3cgUGFyYW1ldGVycyk6IERlc2NyaWJl IG5ldyBwYXJhbWV0ZXJzICdtb2RlLWxpbmUtZm9ybWF0JwphbmQgJ2hlYWRlci1saW5lLWZv cm1hdCcuICBJbmRleCBhbGwgd2luZG93IHBhcmFtZXRlcnMgZGVzY3JpYmVkCmluIHRoaXMg c2VjdGlvbi4K --------------000202090607030307050103 Content-Type: application/emacs-lisp; name="my-child-frame.el" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="my-child-frame.el" KGRlZnZhciBteS1jaGlsZC1mcmFtZSBuaWwpCihkZWZ2YXIgbXktY2hpbGQtYnVmZmVyIG5p bCkKKGRlZnZhciBteS1jaGlsZC13aW5kb3cgbmlsKQoKKGRlZnVuIG15LW1ha2UtY2hpbGQt ZnJhbWUgKCkKICAoaW50ZXJhY3RpdmUpCiAgKHNldHEgbXktY2hpbGQtZnJhbWUKCShtYWtl LWZyYW1lCgkgYCgocGFyZW50LWZyYW1lIC4gLChzZWxlY3RlZC1mcmFtZSkpCgkgICAobm8t Zm9jdXMtb24tbWFwIC4gdCkKCSAgICh1bmRlY29yYXRlZCAuIHQpCgkgICAobGVmdCAuIDEu MCkKCSAgICh0b3AgLiAwLjUpCgkgICAod2lkdGggLiAwLjMpCgkgICAoaGVpZ2h0IC4gMC44 KQoJICAgKGJvcmRlci13aWR0aCAuIDApCgkgICAoaW50ZXJuYWwtYm9yZGVyLXdpZHRoIC4g MykKCSAgIChiYWNrZ3JvdW5kLWNvbG9yIC4gInllbGxvdyIpCgkgICAodG9vbC1iYXItbGlu ZXMgLiAwKQoJICAgKG1lbnUtYmFyLWxpbmVzIC4gMCkKCSAgIChtaW5pYnVmZmVyIC4gbmls KQoJICAgKHZlcnRpY2FsLXNjcm9sbC1iYXJzIC4gbmlsKQoJICAgKGhvcml6b250YWwtc2Ny b2xsLWJhcnMgLiBuaWwpCgkgICAobGVmdC1mcmluZ2UgLiAwKQoJICAgKHJpZ2h0LWZyaW5n ZSAuIDApCgkgICAoZHJhZy1pbnRlcm5hbC1ib3JkZXIgLiB0KQoJICAgKGRyYWctd2l0aC1t b2RlLWxpbmUgLiB0KQoJICAgKGRyYWctd2l0aC1oZWFkZXItbGluZSAuIHQpCgkgICAobWlu LWhlaWdodCAuIDEpCgkgICAobWluLXdpZHRoIC4gMSkKCSAgIChrZWVwLXJhdGlvIC4gdCkK CSAgIChzbmFwLXdpZHRoIC4gMjUpCgkgICAodG9wLXZpc2libGUgLiA0KQo7OyAJICAgKGJv dHRvbS12aXNpYmxlIC4gOCkKCSAgIChuby1zcGVjaWFsLWdseXBocyAuIHQpCgkgICAodW5z cGxpdHRhYmxlIC4gdCkKCSAgICkpKQogIChzZXRxIG15LWNoaWxkLXdpbmRvdyAoZnJhbWUt cm9vdC13aW5kb3cgbXktY2hpbGQtZnJhbWUpKQogIChzZXQtd2luZG93LWJ1ZmZlciBteS1j aGlsZC13aW5kb3cgKGdldC1idWZmZXItY3JlYXRlICIqbXktbm90ZXMqIikpCiAgKHNldC13 aW5kb3ctcGFyYW1ldGVyIG15LWNoaWxkLXdpbmRvdyAnbW9kZS1saW5lLWZvcm1hdCAnbm9u ZSkKICAoc2V0LXdpbmRvdy1wYXJhbWV0ZXIKICAgbXktY2hpbGQtd2luZG93ICdoZWFkZXIt bGluZS1mb3JtYXQgJygiICIgKDpldmFsIChidWZmZXItbmFtZSkpKSkKOzsgICAoc2V0LXdp bmRvdy1wYXJhbWV0ZXIKOzsgICAgbXktY2hpbGQtd2luZG93ICdtb2RlLWxpbmUtZm9ybWF0 ICcoIiAiICg6ZXZhbCAoYnVmZmVyLW5hbWUpKSkpCiAgKHNldC1mYWNlLWJhY2tncm91bmQg J2ludGVybmFsLWJvcmRlciAiYmx1ZSIgbXktY2hpbGQtZnJhbWUpKQoKKGRlZnVuIG15LXRv Z2dsZS1jaGlsZC1mcmFtZSAoKQogIChpbnRlcmFjdGl2ZSkKICAoaWYgKGZyYW1lLWxpdmUt cCBteS1jaGlsZC1mcmFtZSkKICAgICAgKGlmIChmcmFtZS12aXNpYmxlLXAgbXktY2hpbGQt ZnJhbWUpCgkgIChtYWtlLWZyYW1lLWludmlzaWJsZSBteS1jaGlsZC1mcmFtZSkKCShtYWtl LWZyYW1lLXZpc2libGUgbXktY2hpbGQtZnJhbWUpKQogICAgKG15LW1ha2UtY2hpbGQtZnJh bWUpKSkKCihkZWZ1biBteS1zd2l0Y2gtdG8tY2hpbGQtZnJhbWUgKCkKICAoaW50ZXJhY3Rp dmUpCiAgKGlmIChmcmFtZS1saXZlLXAgbXktY2hpbGQtZnJhbWUpCiAgICAgIChpZiAoZnJh bWUtdmlzaWJsZS1wIG15LWNoaWxkLWZyYW1lKQoJICAoaWYgKGVxIG15LWNoaWxkLWZyYW1l IChzZWxlY3RlZC1mcmFtZSkpCgkgICAgICAoeC1mb2N1cy1mcmFtZSAoZnJhbWUtcGFyZW50 IG15LWNoaWxkLWZyYW1lKSkKCSAgICAoeC1mb2N1cy1mcmFtZSBteS1jaGlsZC1mcmFtZSkp CgkobWFrZS1mcmFtZS12aXNpYmxlIG15LWNoaWxkLWZyYW1lKQoJKHgtZm9jdXMtZnJhbWUg bXktY2hpbGQtZnJhbWUpKQogICAgKG15LW1ha2UtY2hpbGQtZnJhbWUpCiAgICAoeC1mb2N1 cy1mcmFtZSBteS1jaGlsZC1mcmFtZSkpKQoKKGRlZnVuIG15LWluc2VydC1zdHJpbmctaW4t Y2hpbGQtYnVmZmVyICgpCiAgKGludGVyYWN0aXZlKQogIChpZiBtYXJrLWFjdGl2ZQogICAg ICAobGV0ICgobXktc3RyaW5nIChidWZmZXItc3Vic3RyaW5nLW5vLXByb3BlcnRpZXMKCQkJ KG9yIChyZWdpb24tYmVnaW5uaW5nKSAocG9pbnQtbWluKSkKCQkJKG9yIChyZWdpb24tZW5k KSAocG9pbnQtbWF4KSkpKSkKCShteS1zd2l0Y2gtdG8tY2hpbGQtZnJhbWUpCgkod2l0aC1j dXJyZW50LWJ1ZmZlciBteS1jaGlsZC1idWZmZXIKCSAgKGRlbGV0ZS1yZWdpb24gKHBvaW50 LW1pbikgKHBvaW50LW1heCkpCgkgIChpbnNlcnQgbXktc3RyaW5nKQoJICAoZ290by1jaGFy IChwb2ludC1taW4pKSkpCiAgICAobXktc3dpdGNoLXRvLWNoaWxkLWZyYW1lKQogICAgKHdp dGgtY3VycmVudC1idWZmZXIgbXktY2hpbGQtYnVmZmVyCiAgICAgIChkZWxldGUtcmVnaW9u IChwb2ludC1taW4pIChwb2ludC1tYXgpKQogICAgICAoeWFuaykKICAgICAgKGdvdG8tY2hh ciAocG9pbnQtbWluKSkpKSkKCihkZWZ1biBteS1maXQtY2hpbGQtZnJhbWUtdG8tYnVmZmVy ICgpCiAgKGludGVyYWN0aXZlKQogICh3aGVuIChmcmFtZS1saXZlLXAgbXktY2hpbGQtZnJh bWUpCiAgICAoZml0LWZyYW1lLXRvLWJ1ZmZlciBteS1jaGlsZC1mcmFtZSkpKQoKKGRlZnVu IG15LWRlbGV0ZS1jaGlsZC1mcmFtZSAoKQogIChpbnRlcmFjdGl2ZSkKICAod2hlbiAoZnJh bWUtbGl2ZS1wIG15LWNoaWxkLWZyYW1lKQogICAgKGRlbGV0ZS1mcmFtZSBteS1jaGlsZC1m cmFtZSkpKQoKKGdsb2JhbC1zZXQta2V5IFsoY29udHJvbCBoeXBlciBjKV0gJ215LXRvZ2ds ZS1jaGlsZC1mcmFtZSkKKGdsb2JhbC1zZXQta2V5IFsobWV0YSBoeXBlciBjKV0gJ215LXN3 aXRjaC10by1jaGlsZC1mcmFtZSkKKGdsb2JhbC1zZXQta2V5IFsoY29udHJvbCBtZXRhIGh5 cGVyIGMpXSAnbXktaW5zZXJ0LXN0cmluZy1pbi1jaGlsZC1idWZmZXIpCihnbG9iYWwtc2V0 LWtleSBbKHNoaWZ0IGh5cGVyIGMpXSAnbXktZml0LWNoaWxkLWZyYW1lLXRvLWJ1ZmZlcikK KGdsb2JhbC1zZXQta2V5IFsoc2hpZnQgY29udHJvbCBtZXRhIGh5cGVyIGMpXSAnbXktZGVs ZXRlLWNoaWxkLWZyYW1lKQo= --------------000202090607030307050103--