From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: martin rudalics Newsgroups: gmane.emacs.devel Subject: Re: Add function to rotate/transpose all windows Date: Fri, 20 Dec 2024 11:03:08 +0100 Message-ID: <43f74ccd-75ca-4437-894f-7a9e4b7902e0@gmx.at> References: <87setpdv21.fsf@gmail.com> <87h683muss.fsf@gmail.com> <02432e6c-6ee2-4c68-9ebb-246f6be88918@gmx.at> <877c8wadke.fsf@gmail.com> <878qt8spp2.fsf@gmail.com> <0ce35c7a-8b28-4905-a6ab-caf50f2fc750@gmx.at> <87mshl2i6h.fsf@gmail.com> <9b460366-f34e-48f6-a680-e7fa5bc7f598@gmx.at> <87bjy03fql.fsf@gmail.com> <356d63bc-818c-428c-b31b-a0eb227b3a8a@gmx.at> <87o720gjst.fsf@gmail.com> <7dfe87a0-b367-47df-86df-f8fd95163fd6@gmx.at> <8734jbz8sb.fsf@gmail.com> <50ab6c0a-6afb-4727-9094-178668fc4f4e@gmx.at> <87zflfc3cd.fsf@gmail.com> <87y10ycxv6.fsf@gmail.com> <87mshbiiee.fsf@bauherren.ovh> <30c31060-6be4-4dab-8e49-c6f543821ea5@gmx.at> <87y10ecxk9.fsf@bauherren.ovh> <787e1cf0-810c-4eea-8d89-03ee83f67807@gmx.at> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="------------q56a5wRUO555gVTqqllNwuc3" Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="5444"; mail-complaints-to="usenet@ciao.gmane.io" User-Agent: Mozilla Thunderbird Cc: Juri Linkov , "eliz@gnu.org" , emacs-devel To: Pranshu Sharma Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Fri Dec 20 11:04:15 2024 Return-path: Envelope-to: ged-emacs-devel@m.gmane-mx.org Original-Received: from lists.gnu.org ([209.51.188.17]) by ciao.gmane.io with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1tOZri-0001FG-Sk for ged-emacs-devel@m.gmane-mx.org; Fri, 20 Dec 2024 11:04:15 +0100 Original-Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1tOZqs-0007n9-74; Fri, 20 Dec 2024 05:03:22 -0500 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1tOZqn-0007mi-1l for emacs-devel@gnu.org; Fri, 20 Dec 2024 05:03:17 -0500 Original-Received: from mout.gmx.net ([212.227.15.18]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1tOZqj-0007ps-2M; Fri, 20 Dec 2024 05:03:16 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmx.at; s=s31663417; t=1734688989; x=1735293789; i=rudalics@gmx.at; bh=1fGPrvKcFfz5S3L2BQF6ET7ZTXIzXmhwKsKQZic8KU4=; h=X-UI-Sender-Class:Content-Type:Message-ID:Date:MIME-Version: Subject:From:To:Cc:References:In-Reply-To:cc: content-transfer-encoding:content-type:date:from:message-id: mime-version:reply-to:subject:to; b=pFvQjypzW7zRwPpUv27U8K3cwSTvMcMoXW7Ksyw9PYcXTGB8R7555AM5V6nP31St SsmG9mI6yoNQY2Lb4/51ne4stBgI1K+7abWFJ4IhslEfGHUdO42wu4iDjvopSyfV2 Bv4z9g7OFOGmQJ8jWev4zot86FIUUXJLfFHQKZH4dO0VG7MRw3ZYjrv+iYT3uRUSI PwRDe94M36wBEWZXz+6p7vVTbgYbdvuQjIobdOxlni5wez6b+HcytafMJ2M8ycDoE jZ1iXC2qGtpp2AS5zkQIa6dtkCpU4qNI+oo52hXLeoDAUFwNTOtHLF4MCuRDUhBj9 +NSe743Io+s1r7cnZg== X-UI-Sender-Class: 724b4f7f-cbec-4199-ad4e-598c01a50d3a Original-Received: from [192.168.31.113] ([213.142.96.6]) by mail.gmx.net (mrgmx005 [212.227.17.190]) with ESMTPSA (Nemesis) id 1MLQxN-1t7Bgk2NCF-00VHpJ; Fri, 20 Dec 2024 11:03:09 +0100 Content-Language: en-US In-Reply-To: <787e1cf0-810c-4eea-8d89-03ee83f67807@gmx.at> X-Provags-ID: V03:K1:jQJXWmWWm20VnFpA/3loLJjsAmHFJBMZ6koRFOJuB/97vFfywUu DTzcFsJb3YkknZOZkiZ+QD0m59zrp6SFNU8yOz5YAodfaQDQyirV+ZwwfbaLcjRARJO++QR 51Feewzcp7sR2+7NHHM1LDNCiM5l1JfKF4lXApp7Ce0jhmNmVAcdYB5jbBAsOfZckJqpvI+ 2bfJqc0NZnQE2dmB/uuAw== UI-OutboundReport: notjunk:1;M01:P0:d+qTtgmsKg8=;C9KUAwXbyI+wIY2mZ0RNsBdq9CW eHj0kf91hmlNGDTMVsa1n0cQWYbJqulz9R1Jd1ew3ayTQyI7IDrrsdfrdK8OR/RBxN2U+NgeQ LsrUsLF6KQD81IX6tjbjJX0GYvSzybl7tGmrrFo1t1YA+I/JH72523CNcp1hnH4a//QWcrTKw tTpWafnb31uM9Lk3xW9EJRdO6aWLeyLwmtCEO36dYu4NvUWxT6vnAjM261O8hn3GcyVEiyzhZ 8t+/QEXsUKfZURYjJatsGIlP4o2sYTuBMsje2r+3cB786ZFV/Hf9TMfpAGZniW1LSGa6bwk5e pXbQjrOgfZig3V3sPtG4kMBK46a3XgMs8V+fY4SMnLg/049qDLvs8sqbczsKi3JdhUPDDu2k9 LYwfkNGJYtoZKMedEQEjHTxXmqaXMiuocOt8F0staANLOAPLPZKX+biaeHRDS3fvl4SCczvDC Gl5LABanjRpx4mhB/zpa9e4AZoyC4q8GqPVmpALMGZLzKa44J539W560vThtvaofPBTcCv3l7 Sw7w1uFGum1MrzyGbpJMbHzO0RLczOGwzsAp32oDkE8fqTiJV80X+6wJwxh10LIpAsBaHvo6J 8SZ7DkwQQpmPJyQGJGI2oh0Kt2WnUblgdd2uAOH3rbDdG+Gohekozx6q2ZExmI8zxX2UwEIa/ E6y38Lnt7sD1bDpRn+ic1W2aqBJoqNsUbh/HpixYyA/9rZwgymqTAYuJWOExr6wSTxaBaY6yj UvAxC2g1msdORcqkIrivTX2lh3ZQhNS5tiBFE/HRmMW0KbE6DC73ssWt6ZNvHuTjH0ea69Pu Received-SPF: pass client-ip=212.227.15.18; envelope-from=rudalics@gmx.at; helo=mout.gmx.net X-Spam_score_int: -27 X-Spam_score: -2.8 X-Spam_bar: -- X-Spam_report: (-2.8 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_LOW=-0.7, RCVD_IN_MSPIKE_H3=0.001, RCVD_IN_MSPIKE_WL=0.001, RCVD_IN_VALIDITY_CERTIFIED_BLOCKED=0.001, RCVD_IN_VALIDITY_RPBL_BLOCKED=0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Original-Sender: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Xref: news.gmane.io gmane.emacs.devel:326794 Archived-At: This is a multi-part message in MIME format. --------------q56a5wRUO555gVTqqllNwuc3 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 7bit > - Which of my changes should I install. I think the diff I posted on > 2024-11-14 should suffice. Right? I attach a copy so you can check. Below find a ChangeLog and attached a diff for what I intend to install. Please have a look. martin Have 'split-window' optionally resurrect deleted windows * src/window.c (Fwindow_old_buffer): Handle deleted window as argument. (make_parent_window): Remove function. (Fsplit_window_internal): New argument REFER for resurrecting deleted windows. Incorporate functionality of defunct make_parent_window. (Fdelete_window_internal, delete_all_child_windows): Store any deleted window's buffer in the window's old_buffer slot. (window_dead_windows_table): Make it a 'value' type hash table so the sequence number cannot affect its weakness. * lisp/window.el (split-window): New argument REFER. * doc/lispref/windows.texi (Resurrecting Windows): New section. (Splitting Windows): Explain new argument REFER. (Window Hooks): Rewrite description of 'window-old-buffer'. --------------q56a5wRUO555gVTqqllNwuc3 Content-Type: text/x-patch; charset=UTF-8; name="split-window.diff" Content-Disposition: attachment; filename="split-window.diff" Content-Transfer-Encoding: base64 ZGlmZiAtLWdpdCBhL2RvYy9saXNwcmVmL3dpbmRvd3MudGV4aSBiL2RvYy9saXNwcmVmL3dp bmRvd3MudGV4aQppbmRleCBhZGMyOTRlNGM5OS4uYTk4MWJiODllZDAgMTAwNjQ0Ci0tLSBh L2RvYy9saXNwcmVmL3dpbmRvd3MudGV4aQorKysgYi9kb2MvbGlzcHJlZi93aW5kb3dzLnRl eGkKQEAgLTIyLDYgKzIyLDcgQEAgV2luZG93cwogKiBEZWxldGluZyBXaW5kb3dzOjogICAg ICAgIFJlbW92aW5nIGEgd2luZG93IGZyb20gaXRzIGZyYW1lLgogKiBSZWNvbWJpbmluZyBX aW5kb3dzOjogICAgIFByZXNlcnZpbmcgdGhlIGZyYW1lIGxheW91dCB3aGVuIHNwbGl0dGlu ZyBhbmQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlbGV0aW5nIHdpbmRvd3Mu CisqIFJlc3VycmVjdGluZyBXaW5kb3dzOjogICAgUmVzdG9yaW5nIGRlbGV0ZWQgd2luZG93 cy4KICogQ3ljbGljIFdpbmRvdyBPcmRlcmluZzo6ICBNb3ZpbmcgYXJvdW5kIHRoZSBleGlz dGluZyB3aW5kb3dzLgogKiBCdWZmZXJzIGFuZCBXaW5kb3dzOjogICAgIEVhY2ggd2luZG93 IGRpc3BsYXlzIHRoZSBjb250ZW50cyBvZiBhIGJ1ZmZlci4KICogU3dpdGNoaW5nIEJ1ZmZl cnM6OiAgICAgICBIaWdoZXItbGV2ZWwgZnVuY3Rpb25zIGZvciBzd2l0Y2hpbmcgdG8gYSBi dWZmZXIuCkBAIC0xMzU1LDcgKzEzNTYsNyBAQCBTcGxpdHRpbmcgV2luZG93cwogRXhhbXBs ZXMgb2Ygc3VjaCB3aW5kb3dzIGFyZSBzaWRlIHdpbmRvd3MgKEBweHJlZntTaWRlIFdpbmRv d3N9KSBhbmQKIGF0b21pYyB3aW5kb3dzIChAcHhyZWZ7QXRvbWljIFdpbmRvd3N9KS4KIAot QGRlZnVuIHNwbGl0LXdpbmRvdyAmb3B0aW9uYWwgd2luZG93IHNpemUgc2lkZSBwaXhlbHdp c2UKK0BkZWZ1biBzcGxpdC13aW5kb3cgJm9wdGlvbmFsIHdpbmRvdyBzaXplIHNpZGUgcGl4 ZWx3aXNlIHJlZmVyCiBUaGlzIGZ1bmN0aW9uIGNyZWF0ZXMgYSBuZXcgbGl2ZSB3aW5kb3cg bmV4dCB0byB0aGUgd2luZG93CiBAdmFye3dpbmRvd30uICBJZiBAdmFye3dpbmRvd30gaXMg b21pdHRlZCBvciBAY29kZXtuaWx9LCBpdCBkZWZhdWx0cwogdG8gdGhlIHNlbGVjdGVkIHdp bmRvdy4gIFRoYXQgd2luZG93IGlzIHNwbGl0LCBhbmQgcmVkdWNlZCBpbgpAQCAtMTM5OSwx NCArMTQwMCw2MiBAQCBTcGxpdHRpbmcgV2luZG93cwogd2luZG93IGlzIHBsYWNlZCBvbiB0 aGUgbGVmdCBvZiBAdmFye3dpbmRvd30uICBJbiBib3RoIHRoZXNlIGNhc2VzLAogQHZhcntz aXplfSBzcGVjaWZpZXMgYSB0b3RhbCB3aW5kb3cgd2lkdGgsIGluIGNvbHVtbnMuCiAKK0Fz IGEgcnVsZSwgaWYgQHZhcnt3aW5kb3d9IGFscmVhZHkgZm9ybXMgYSBjb21iaW5hdGlvbiAo QHB4cmVme1dpbmRvd3MKK2FuZCBGcmFtZXN9KSB0aGF0IG1hdGNoZXMgQHZhcntzaWRlfSAo YSBob3Jpem9udGFsIGNvbWJpbmF0aW9uIG1hdGNoZXMKK0B2YXJ7c2lkZX0gaWYgaXQgaXMg QGNvZGV7bGVmdH0gb3IgQGNvZGV7cmlnaHR9LCBhIHZlcnRpY2FsIGNvbWJpbmF0aW9uCitt YXRjaGVzIEB2YXJ7c2lkZX0gaWYgaXQgaXMgQGNvZGV7YWJvdmV9IG9yIEBjb2Rle2JlbG93 fSkgYW5kCitAY29kZXt3aW5kb3ctY29tYmluYXRpb24tbGltaXR9IChAcHhyZWZ7UmVjb21i aW5pbmcgV2luZG93c30pIGlzCitAY29kZXtuaWx9LCB0aGlzIGZ1bmN0aW9uIHJldXNlcyBA dmFye3dpbmRvd30ncyBwYXJlbnQgaW4gdGhlIHdpbmRvdwordHJlZSBhcyBwYXJlbnQgb2Yg dGhlIG5ldyB3aW5kb3cuCisKK0hvd2V2ZXIsIGlmIEB2YXJ7d2luZG93fSBpcyBpbiBhIGNv bWJpbmF0aW9uIHRoYXQgZG9lcyBub3QgbWF0Y2gKK0B2YXJ7c2lkZX0gb3IgaWYgQGNvZGV7 d2luZG93LWNvbWJpbmF0aW9uLWxpbWl0fSBpcyBub24tQGNvZGV7bmlsfSwgdGhpcworZnVu Y3Rpb24gbWFrZXMgYSBuZXcgcGFyZW50IHdpbmRvdyB0aGF0IHJlcGxhY2VzIEB2YXJ7d2lu ZG93fSBpbiB0aGUKK3dpbmRvdyB0cmVlIGFuZCBtYWtlcyBAdmFye3dpbmRvd30gYW5kIHRo ZSBuZXcgd2luZG93IGl0cyBzb2xlIGNoaWxkCit3aW5kb3dzLiAgVGhpcyBzdGFuZGFyZCBi ZWhhdmlvciBjYW4gYmUgb3ZlcnJpZGRlbiB2aWEgdGhlIEB2YXJ7cmVmZXJ9Cithcmd1bWVu dC4KKwogVGhlIG9wdGlvbmFsIGZvdXJ0aCBhcmd1bWVudCBAdmFye3BpeGVsd2lzZX0sIGlm IG5vbi1AY29kZXtuaWx9LCBtZWFucwogdG8gaW50ZXJwcmV0IEB2YXJ7c2l6ZX0gaW4gdW5p dHMgb2YgcGl4ZWxzLCBpbnN0ZWFkIG9mIGxpbmVzIGFuZAogY29sdW1ucy4KIAotSWYgQHZh cnt3aW5kb3d9IGlzIGEgbGl2ZSB3aW5kb3csIHRoZSBuZXcgd2luZG93IGluaGVyaXRzIHZh cmlvdXMKLXByb3BlcnRpZXMgZnJvbSBpdCwgaW5jbHVkaW5nIG1hcmdpbnMgYW5kIHNjcm9s bCBiYXJzLiAgSWYKLUB2YXJ7d2luZG93fSBpcyBhbiBpbnRlcm5hbCB3aW5kb3csIHRoZSBu ZXcgd2luZG93IGluaGVyaXRzIHRoZQotcHJvcGVydGllcyBvZiB0aGUgd2luZG93IHNlbGVj dGVkIHdpdGhpbiBAdmFye3dpbmRvd30ncyBmcmFtZS4KK0lmIHRoZSBvcHRpb25hbCBmaWZ0 aCBhcmd1bWVudCBAdmFye3JlZmVyfSBpcyBub24tQGNvZGV7bmlsfSwgaXQKK3NwZWNpZmll cyBhIHJlZmVyZW5jZSB3aW5kb3cgdXNlZCBmb3Igc2V0dGluZyB1cCBwcm9wZXJ0aWVzIG9m IHRoZSBuZXcKK3dpbmRvdy4gIElmIG5vbi1AY29kZXtuaWx9LCBAdmFye3JlZmVyfSBjYW4g YmUgZWl0aGVyIGEgd2luZG93IG9yIGEgY29ucworY2VsbCBvZiB0d28gd2luZG93cy4KKwor SWYgQHZhcntyZWZlcn0gaXMgYSBjb25zIGNlbGwsIGl0cyBAc2N7Y2FyfSBoYXMgdG8gc3Bl Y2lmeSBhIGRlbGV0ZWQsCitmb3JtZXIgbGl2ZSB3aW5kb3cgLSBhIHdpbmRvdyB0aGF0IGhh cyBzaG93biBhIGJ1ZmZlciBiZWZvcmUgLSBvbiB0aGUKK3NhbWUgZnJhbWUgYXMgQHZhcnt3 aW5kb3d9LiAgVGhhdCBidWZmZXIgbXVzdCBiZSBzdGlsbCBsaXZlLiAgVGhlCitAc2N7Y2Ry fSBoYXMgdG8gc3BlY2lmeSBhIGRlbGV0ZWQgd2luZG93IHRoYXQgd2FzLCBiZWZvcmUgaXRz IGRlbGV0aW9uLAorYSBwYXJlbnQgd2luZG93IG9uIHRoZSBzYW1lIGZyYW1lIGFzIEB2YXJ7 d2luZG93fS4gIEluIHRoaXMgY2FzZSwgcmF0aGVyCit0aGVuIG1ha2luZyBuZXcgd2luZG93 cywgdGhpcyBmdW5jdGlvbiByZXBsYWNlcyBAdmFye3dpbmRvd30gd2l0aCB0aGUKK0BzY3tj ZHJ9IG9mIEB2YXJ7cmVmZXJ9IGluIHRoZSB3aW5kb3cgdHJlZSBhbmQgbWFrZXMgQHZhcnt3 aW5kb3d9IGFuZAorQHZhcntyZWZlcn0ncyBAc2N7Y2FyfSBpdHMgbmV3IGNoaWxkIHdpbmRv d3MuICBCdWZmZXIsIHN0YXJ0IGFuZCBwb2ludAorcG9zaXRpb25zIG9mIEB2YXJ7cmVmZXJ9 J3MgQHNje2Nhcn0gYXJlIHNldCB0byB0aGUgdmFsdWVzIHRoZXkgaGFkCitpbW1lZGlhdGVs eSBiZWZvcmUgQHZhcntyZWZlcn0ncyBAc2N7Y2FyfSB3YXMgZGVsZXRlZCB0aGUgbGFzdCB0 aW1lLgorRGVjb3JhdGlvbnMgYW5kIHBhcmFtZXRlcnMgcmVtYWluIHVuYWx0ZXJlZCBmcm9t IHRoZWlyIHZhbHVlcyBiZWZvcmUKK0B2YXJ7cmVmZXJ9J3MgQHNje2Nhcn0gYW5kIEBzY3tj ZHJ9IHdlcmUgZGVsZXRlZC4KKworQWx0ZXJuYXRpdmVseSwgQHZhcntyZWZlcn0gbWF5IHNw ZWNpZnkgYSBkZWxldGVkLCBmb3JtZXIgbGl2ZSB3aW5kb3cgLSBhCit3aW5kb3cgdGhhdCBo YXMgc2hvd24gYSBidWZmZXIgYmVmb3JlIC0gb24gdGhlIHNhbWUgZnJhbWUgYXMKK0B2YXJ7 d2luZG93fS4gIFRoYXQgYnVmZmVyIG11c3QgYmUgc3RpbGwgbGl2ZS4gIEluIHRoaXMgY2Fz ZSwgdGhpcworZnVuY3Rpb24gZG8gbm90IG1ha2UgYSBuZXcgd2luZG93IGJ1dCByYXRoZXIg bWFrZXMgQHZhcntyZWZlcn0gbGl2ZQorYWdhaW4gYW5kIGluc2VydHMgaXQgaW50byB0aGUg d2luZG93IHRyZWUgYXQgdGhlIHBvc2l0aW9uIGFuZCB3aXRoIHRoZQorc2l6ZXMgdGhlIG5l dyB3aW5kb3cgd291bGQgaGF2ZSBiZWVuIGdpdmVuLiAgQnVmZmVyLCBzdGFydCBhbmQgcG9p bnQKK3Bvc2l0aW9ucyBvZiBAdmFye3JlZmVyfSBhcmUgc2V0IHRvIHRoZSB2YWx1ZXMgdGhl eSBoYWQgaW1tZWRpYXRlbHkKK2JlZm9yZSBAdmFye3JlZmVyfSB3YXMgZGVsZXRlZCB0aGUg bGFzdCB0aW1lLiAgRGVjb3JhdGlvbnMgYW5kCitwYXJhbWV0ZXJzIHJlbWFpbiB1bmFsdGVy ZWQgZnJvbSB0aGVpciB2YWx1ZXMgYmVmb3JlIEB2YXJ7cmVmZXJ9IHdhcworZGVsZXRlZC4g IFRoZSBwYXJlbnQgb2YgQHZhcntyZWZlcn0gaXMgdGhlbiBkZXRlcm1pbmVkIGFzIGlmIGl0 IHdlcmUgYQord2luZG93IGNyZWF0ZWQgYW5ldy4KKworSW4gYW55IG90aGVyIGNhc2UsIEB2 YXJ7cmVmZXJ9IG11c3Qgc3BlY2lmeSBhIGxpdmUgd2luZG93LiAgVGhlbiB0aGUgbmV3Cit3 aW5kb3cgd2lsbCBpbmhlcml0IHByb3BlcnRpZXMgbGlrZSBidWZmZXIsIHN0YXJ0IGFuZCBw b2ludCBwb3NpdGlvbnMKK2FuZCBzb21lIGRlY29yYXRpb25zIGZyb20gQHZhcntyZWZlcn0u ICBJZiBAdmFye3JlZmVyfSBpcyBAY29kZXtuaWx9IG9yCitvbWl0dGVkLCB0aGVuIGlmIEB2 YXJ7d2luZG93fSBpcyBsaXZlLCB0aGUgbmV3IHdpbmRvdyBpbmhlcml0cyB0aGVzZQorcHJv cGVydGllcyBmcm9tIEB2YXJ7d2luZG93fS4gIElmLCBob3dldmVyLCBAdmFye3dpbmRvd30g aXMgYW4gaW50ZXJuYWwKK3dpbmRvdywgdGhlIG5ldyB3aW5kb3cgd2lsbCBpbmhlcml0IHRo ZXNlIHByb3BlcnRpZXMgZnJvbSB0aGUgd2luZG93CitzZWxlY3RlZCBvbiBAdmFye3dpbmRv d30ncyBmcmFtZS4KIAogVGhlIGJlaGF2aW9yIG9mIHRoaXMgZnVuY3Rpb24gbWF5IGJlIGFs dGVyZWQgYnkgdGhlIHdpbmRvdyBwYXJhbWV0ZXJzCiBvZiBAdmFye3dpbmRvd30sIHNvIGxv bmcgYXMgdGhlIHZhcmlhYmxlCkBAIC0yMDQ4LDYgKzIwOTcsMTMxIEBAIFJlY29tYmluaW5n IFdpbmRvd3MKIHdpbmRvd3MuCiAKIAorQG5vZGUgUmVzdXJyZWN0aW5nIHdpbmRvd3MKK0Bz ZWN0aW9uIFJlc3VycmVjdGluZyBXaW5kb3dzCitAY2luZGV4IHJlc3VycmVjdGluZyBkZWxl dGVkIHdpbmRvd3MKK0BjaW5kZXggcmVzdG9yaW5nIGRlbGV0ZWQgd2luZG93cworCitBZnRl ciBhIHdpbmRvdyBoYXMgYmVlbiBkZWxldGVkIChAcHhyZWZ7RGVsZXRpbmcgV2luZG93c30p IGl0IGNhbm5vdCBiZQordXNlZCBhbnkgbW9yZSBieSBmdW5jdGlvbnMgdGhhdCByZXF1aXJl IGEgdmFsaWQgd2luZG93IGFzIHRoZWlyIGFyZ3VtZW50CitldmVuIGlmIHNvbWUgTGlzcCB2 YXJpYWJsZSBzdGlsbCByZWZlcmVuY2VzIHRoYXQgd2luZG93LiAgV2hlbiB0aGUgbGFzdAor cmVmZXJlbmNlIHRvIGEgd2luZG93IGhhcyBjZWFzZWQgdG8gZXhpc3QsIHRoZSB3aW5kb3cn cyBMaXNwIG9iamVjdCB3aWxsCitiZSBldmVudHVhbGx5IHJlY3ljbGVkIGJ5IHRoZSBnYXJi YWdlIGNvbGxlY3Rvci4KKworVGhlcmUgYXJlIHR3byB3YXlzIHRvIHJlc3VycmVjdCBhIGRl bGV0ZWQgd2luZG93IHdob3NlIG9iamVjdCBoYXMgbm90CitiZWVuIHlldCByZWN5Y2xlZCBi eSB0aGUgY29sbGVjdG9yOiBUaGUgZmlyc3QgaXMgdG8ga2VlcCBhIHJlZmVyZW5jZSB0bwor dGhhdCB3aW5kb3cgaW4gYSBzYXZlZCB3aW5kb3cgY29uZmlndXJhdGlvbiAoQHB4cmVme1dp bmRvdworQ29uZmlndXJhdGlvbnN9KSBhbmQgdGhlbiBjYWxsIEBjb2Rle3NldC13aW5kb3ct Y29uZmlndXJhdGlvbn0gd2l0aCB0aGF0Citjb25maWd1cmF0aW9uIGFzIGFyZ3VtZW50LiAg VGhlIHNlY29uZCBvbmUgaXMgdG8ga2VlcCBhIHJlZmVyZW5jZSB0bwordGhhdCB3aW5kb3cg aW4gYSB2YXJpYWJsZSBvciBsZXQtYmluZCBpdCBhbmQgdGhlbiB1c2UgdGhhdCByZWZlcmVu Y2UgYXMKK0B2YXJ7cmVmZXJ9IGFyZ3VtZW50IGluIEBjb2Rle3NwbGl0LXdpbmRvd30gKEBw eHJlZntTcGxpdHRpbmcgV2luZG93c30pLgorCitUaGUgbWFqb3IgZGlmZmVyZW5jZSBiZXR3 ZWVuIHRoZXNlIHR3byBpcyB0aGF0CitAY29kZXtzZXQtd2luZG93LWNvbmZpZ3VyYXRpb259 IHJlc3RvcmVzIHRoZSBmcmFtZSBsYXlvdXQgYXMgaXQgZXhpc3RlZAorYmVmb3JlIGRlbGV0 aW5nIHRoZSB3aW5kb3cuICBUaGUgQGNvZGV7c3BsaXQtd2luZG93fSBhcHByb2FjaCwgb24g dGhlCitvdGhlciBoYW5kLCBhbGxvd3MgZm9yIGFyYml0cmFyeSB2YXJpYXRpb25zIG9mIHRo ZSBsYXlvdXQuCisKK0NvbnNpZGVyIHRoZSBmb2xsb3dpbmcgZXhhbXBsZSBzdGFydGluZyB3 aXRoIGEgZnJhbWUgY29udGFpbmluZyBhIHNpbmdsZQord2luZG93IHNob3dpbmcgdGhlIGJ1 ZmZlciBAZmlsZXsqc2NyYXRjaCp9OgorCitAZXhhbXBsZQorQGdyb3VwCisobGV0KiAoKG9s ZCAoc2VsZWN0ZWQtd2luZG93KSkKKyAgICAgICAobmV3IChzcGxpdC13aW5kb3cgb2xkIG5p bCAncmlnaHQpKQorICAgICAgIG92ZXJsYXkpCisgICh3aXRoLWN1cnJlbnQtYnVmZmVyIChn ZXQtYnVmZmVyLWNyZWF0ZSAiKk1lc3NhZ2VzKiIpCisgICAgKHNldC13aW5kb3ctYnVmZmVy IG5ldyAoY3VycmVudC1idWZmZXIpKQorICAgIChzZXRxIG92ZXJsYXkgKG1ha2Utb3Zlcmxh eSAocG9pbnQtbWluKSAocG9pbnQtbWF4KSkpCisgICAgKG92ZXJsYXktcHV0IG92ZXJsYXkg J2ZhY2UgJ2hpZ2hsaWdodCkKKyAgICAob3ZlcmxheS1wdXQgb3ZlcmxheSAnd2luZG93IG5l dykKKyAgICAobWVzc2FnZSAibmV3ICVzIHBhcmVudCAlcyIgbmV3ICh3aW5kb3ctcGFyZW50 IG5ldykpCisgICAgKHNpdC1mb3IgMykpCisgIChkZWxldGUtd2luZG93IG5ldykKKyAgKHNl dHEgbmV3IChzcGxpdC13aW5kb3cgb2xkIG5pbCAnbGVmdCkpCisgIChzZXQtd2luZG93LWJ1 ZmZlciBuZXcgKGdldC1idWZmZXItY3JlYXRlICIqTWVzc2FnZXMqIikpCisgIChmb3JtYXQg Im5ldyAlcyBwYXJlbnQgJXMiIG5ldyAod2luZG93LXBhcmVudCBuZXcpKSkKK0BlbmQgZ3Jv dXAKK0BlbmQgZXhhbXBsZQorCitXaGVuIHlvdSBydW4gdGhhdCBjb2RlIGluIEBmaWxleypz Y3JhdGNoKn0gaXQgd2lsbCBmaXJzdCBzcGxpdCB0aGUKK3dpbmRvdyBzaG93aW5nIEBmaWxl eypzY3JhdGNoKn0gdG8gZGlzcGxheSBAZmlsZXsqTWVzc2FnZXMqfSBpbiBhIG5ldword2lu ZG93IG9uIHRoZSByaWdodC4gIEl0IGFsc28gc2V0cyB1cCBhbiBvdmVybGF5IHdpdGggYSB3 aW5kb3cgcHJvcGVydHkKK3RvIGhpZ2hsaWdodCB0aGUgdGV4dCBvZiBAZmlsZXsqTWVzc2Fn ZXMqfSBpbiB0aGUgbmV3IHdpbmRvdyBhbmQKK2Rpc3BsYXlzIGEgbWVzc2FnZSBzaG93aW5n IHRoZSBuZXcgd2luZG93IGFuZCBpdHMgcGFyZW50IGluIHRoZSB3aW5kb3cKK3RyZWUuICBJ dCB0aGVuIGRlbGV0ZXMgdGhlIG5ldyB3aW5kb3cgYW5kIHJlc3VycmVjdHMgaXQgb24gdGhl IGxlZnQgb2YKK3RoZSBAZmlsZXsqc2NyYXRjaCp9IHdpbmRvdyBhZ2FpbiBkaXNwbGF5aW5n IGEgbWVzc2FnZSBzaG93aW5nIHRoZSBuZXcKK3dpbmRvdyBhbmQgaXRzIHBhcmVudCBpbiB0 aGUgd2luZG93IHRyZWUuCisKK05vdGUgdGhhdCBib3RoLCBuZXcgd2luZG93IGFuZCBpdHMg cGFyZW50IGhhdmUgY2hhbmdlZCBhZnRlciBtb3ZpbmcgdGhlCitAZmlsZXsqTWVzc2FnZXMq fSB3aW5kb3cgdG8gdGhlIGxlZnQuICBBbHNvLCB0aGUgaGlnaGxpZ2h0aW5nIGRpc2FwcGVh cnMKK2JlY2F1c2UgYW55IHByb3BlcnRpZXMgc2V0IHVwIGZvciB0aGUgbmV3IHdpbmRvdyBv biB0aGUgcmlnaHQgYXJlIGxvc3QKK3doZW4gdGhlIG5ldyB3aW5kb3cgaXMgcmUtY3JlYXRl ZCBvbiB0aGUgbGVmdC4KKworVGhlIGZvbGxvd2luZyBjb2RlIHVzZXMgdGhlIEB2YXJ7cmVm ZXJ9IGFyZ3VtZW50IG9mIEBjb2Rle3NwbGl0LXdpbmRvd30KK2luc3RlYWQuCisKK0BleGFt cGxlCitAZ3JvdXAKKyhsZXQqICgob2xkIChzZWxlY3RlZC13aW5kb3cpKQorICAgICAgIChu ZXcgKHNwbGl0LXdpbmRvdyBvbGQgbmlsICdyaWdodCkpCisgICAgICAgb3ZlcmxheSkKKyAg KHdpdGgtY3VycmVudC1idWZmZXIgKGdldC1idWZmZXItY3JlYXRlICIqTWVzc2FnZXMqIikK KyAgICAoc2V0LXdpbmRvdy1idWZmZXIgbmV3IChjdXJyZW50LWJ1ZmZlcikpCisgICAgKHNl dHEgb3ZlcmxheSAobWFrZS1vdmVybGF5IChwb2ludC1taW4pIChwb2ludC1tYXgpKSkKKyAg ICAob3ZlcmxheS1wdXQgb3ZlcmxheSAnZmFjZSAnaGlnaGxpZ2h0KQorICAgIChvdmVybGF5 LXB1dCBvdmVybGF5ICd3aW5kb3cgbmV3KQorICAgIChtZXNzYWdlICJuZXcgJXMgcGFyZW50 ICVzIiBuZXcgKHdpbmRvdy1wYXJlbnQgbmV3KSkKKyAgICAoc2l0LWZvciAzKSkKKyAgKGRl bGV0ZS13aW5kb3cgbmV3KQorICAoc3BsaXQtd2luZG93IG9sZCBuaWwgJ2xlZnQgbmlsIG5l dykKKyAgKGZvcm1hdCAibmV3ICVzIHBhcmVudCAlcyIgbmV3ICh3aW5kb3ctcGFyZW50IG5l dykpKQorQGVuZCBncm91cAorQGVuZCBleGFtcGxlCisKK05vdGUgdGhhdCBhbGwgcHJvcGVy dGllcyBvZiB0aGUgcmVzdXJyZWN0ZWQgd2luZG93IGxpa2UgaXRzIGRlY29yYXRpb25zLAor cGFyYW1ldGVycyBhcyB3ZWxsIGFzIGFueSBvdmVybGF5cyB3aXRoIGEgd2luZG93IHByb3Bl cnR5IGFyZSBwcmVzZXJ2ZWQKK2FzIGlmIHRoYXQgd2luZG93IGhhZCBuZXZlciBiZWVuIGRl bGV0ZWQuICBUaGUgb25seSB0aGluZ3MgdGhhdCBjaGFuZ2VkCithcmUgaXRzIHBvc2l0aW9u IGluIHRoZSB3aW5kb3cgdHJlZSBhbmQgY29uc2VxdWVudGx5IHRoZSB2YWx1ZXMgcmV0dXJu ZWQKK2J5IEBjb2Rle3dpbmRvdy1sZWZ0LWNoaWxkfSBvZiBpdHMgcGFyZW50IHdpbmRvdyBh cyB3ZWxsIGFzIHRoZSB2YWx1ZXMKK3JldHVybmVkIGJ5IEBjb2Rle3dpbmRvdy1wcmV2LXNp Ymxpbmd9IGFuZCBAY29kZXt3aW5kb3ctbmV4dC1zaWJsaW5nfSBvZgordGhlIHdpbmRvdyBh bmQgaXRzIHNpYmxpbmcuCisKK1RoZSBmb2xsb3dpbmcgY29kZSBwYXNzZXMgYm90aCwgdGhl IG5ldyB3aW5kb3cgb24gdGhlIHJpZ2h0IGFuZCBpdHMKK3BhcmVudCwgdmlhIHRoZSBAdmFy e3JlZmVyfSBhcmd1bWVudCB0byBAY29kZXtzcGxpdC13aW5kb3d9OiBpbnN0ZWFkLgorCitA ZXhhbXBsZQorQGdyb3VwCisobGV0KiAoKG9sZCAoc2VsZWN0ZWQtd2luZG93KSkKKyAgICAg ICAobmV3IChzcGxpdC13aW5kb3cgb2xkIG5pbCAncmlnaHQpKQorICAgICAgIChwYXJlbnQg KHdpbmRvdy1wYXJlbnQgbmV3KSkKKyAgICAgICBvdmVybGF5KQorICAod2l0aC1jdXJyZW50 LWJ1ZmZlciAoZ2V0LWJ1ZmZlci1jcmVhdGUgIipNZXNzYWdlcyoiKQorICAgIChzZXQtd2lu ZG93LWJ1ZmZlciBuZXcgKGN1cnJlbnQtYnVmZmVyKSkKKyAgICAoc2V0cSBvdmVybGF5ICht YWtlLW92ZXJsYXkgKHBvaW50LW1pbikgKHBvaW50LW1heCkpKQorICAgIChvdmVybGF5LXB1 dCBvdmVybGF5ICdmYWNlICdoaWdobGlnaHQpCisgICAgKG92ZXJsYXktcHV0IG92ZXJsYXkg J3dpbmRvdyBuZXcpCisgICAgKG1lc3NhZ2UgIm5ldyAlcyBwYXJlbnQgJXMiIG5ldyAod2lu ZG93LXBhcmVudCBuZXcpKQorICAgIChzaXQtZm9yIDMpKQorICAoZGVsZXRlLXdpbmRvdyBu ZXcpCisgIChzcGxpdC13aW5kb3cgb2xkIG5pbCAnbGVmdCBuaWwgKGNvbnMgbmV3IHBhcmVu dCkpCisgIChmb3JtYXQgIm5ldyAlcyBwYXJlbnQgJXMiIG5ldyAod2luZG93LXBhcmVudCBu ZXcpKSkKK0BlbmQgZ3JvdXAKK0BlbmQgZXhhbXBsZQorCitOb3RlIHRoYXQgdGhlIHBhcmVu dCB3aW5kb3cgaGFzIGJlZW4gcmVzdXJyZWN0ZWQgYWxvbmcgd2l0aCB0aGUgbmV3Cit3aW5k b3cuCisKK1Jlc3VycmVjdGluZyBkZWFkIHdpbmRvd3MgaXMgdXNlZnVsIHRvIHByZXNlcnZl IHRoZSBpZGVudGl0eSBvZiB3aW5kb3dzCitpbiBhY3Rpb25zIHRoYXQgYXJlIHN1cHBvc2Vk IHRvIGRvIHRoYXQgbGlrZSBtb3Zpbmcgd2luZG93cyBhcm91bmQgb24gYQorZnJhbWUgb3Ig aGlkaW5nIHRoZW0gdGVtcG9yYXJpbHkuICBBbnkgcHJvcGVydGllcyBvZiBzdWNoIGEgd2lu ZG93IGxpa2UKK2l0cyBkZWNvcmF0aW9ucywgdGhlIGJ1ZmZlciBpdCBoYXMgc2hvd24gcHJl dmlvdXNseSwgdGhhdCBidWZmZXIncyBzdGFydAorYW5kIHBvaW50IHBvc2l0aW9uIGluIHRo ZSB3aW5kb3csIHRoZSB3aW5kb3cncyBkZWRpY2F0ZWQgc3RhdHVzIG9yIGl0cworY3Vyc29y IHR5cGUgYXJlIGxlZnQgdW50b3VjaGVkIGFuZCB0aGVyZSdzIG5vIG5lZWQgdG8gcmVjcmVh dGUgdGhlbSBmcm9tCitzY3JhdGNoLiAgRm9yIGludGVybmFsIHdpbmRvd3MsIHRoZSB2YWx1 ZSBvZiB0aGF0IHdpbmRvdydzIGNvbWJpbmF0aW9uCitsaW1pdCBpcyBwcmVzZXJ2ZWQgd2hp Y2ggbWVhbnMgdGhhdCB0aGUgd2luZG93IGNhbiBiZSByZWNvbWJpbmVkCisoQHB4cmVme1Jl Y29tYmluaW5nIFdpbmRvd3N9KSBhcyBiZWZvcmUuCisKKwogQG5vZGUgQ3ljbGljIFdpbmRv dyBPcmRlcmluZwogQHNlY3Rpb24gQ3ljbGljIE9yZGVyaW5nIG9mIFdpbmRvd3MKIEBjaW5k ZXggY3ljbGljIG9yZGVyaW5nIG9mIHdpbmRvd3MKQEAgLTcxMzMsMTMgKzczMDcsMTYgQEAg V2luZG93IEhvb2tzCiB3aW5kb3cuCiAKIEBkZWZ1biB3aW5kb3ctb2xkLWJ1ZmZlciAmb3B0 aW9uYWwgd2luZG93Ci1UaGlzIGZ1bmN0aW9uIHJldHVybnMgdGhlIGJ1ZmZlciBzaG93biBp biBAdmFye3dpbmRvd30gYXQgdGhlIGxhc3QKLXRpbWUgd2luZG93IGNoYW5nZSBmdW5jdGlv bnMgd2VyZSBydW4gZm9yIEB2YXJ7d2luZG93fSdzIGZyYW1lLiAgSWYgaXQKLXJldHVybnMg QGNvZGV7bmlsfSwgQHZhcnt3aW5kb3d9IGhhcyBiZWVuIGNyZWF0ZWQgYWZ0ZXIgdGhhdC4g IElmIGl0Ci1yZXR1cm5zIEBjb2Rle3R9LCBAdmFye3dpbmRvd30gd2FzIG5vdCBzaG93biBh dCB0aGF0IHRpbWUgYnV0IGhhcyBiZWVuCi1yZXN0b3JlZCBmcm9tIGEgcHJldmlvdXNseSBz YXZlZCB3aW5kb3cgY29uZmlndXJhdGlvbiBhZnRlcndhcmRzLgotT3RoZXJ3aXNlLCB0aGUg cmV0dXJuIHZhbHVlIGlzIHRoZSBidWZmZXIgc2hvd24gYnkgQHZhcnt3aW5kb3d9IGF0Ci10 aGF0IHRpbWUuCitUaGlzIGZ1bmN0aW9uIHJldHVybnMgdGhlIGJ1ZmZlciBzaG93biBpbiBA dmFye3dpbmRvd30gYXQgdGhlIGxhc3QgdGltZQord2luZG93IGNoYW5nZSBmdW5jdGlvbnMg d2VyZSBydW4gZm9yIEB2YXJ7d2luZG93fSdzIGZyYW1lLiAgSWYgaXQKK3JldHVybnMgQGNv ZGV7bmlsfSwgQHZhcnt3aW5kb3d9IGlzIGVpdGhlciBhbiBpbnRlcm5hbCB3aW5kb3cgb3Ig aGFzCitiZWVuIGNyZWF0ZWQgYWZ0ZXIgdGhhdC4gIElmIGl0IHJldHVybnMgQGNvZGV7dH0s IEB2YXJ7d2luZG93fSB3YXMgbm90CitzaG93biBhdCB0aGF0IHRpbWUgYnV0IGhhcyBiZWVu IHJlc3RvcmVkIGZyb20gYSBwcmV2aW91c2x5IHNhdmVkIHdpbmRvdworY29uZmlndXJhdGlv biBhZnRlcndhcmRzLiAgT3RoZXJ3aXNlLCB0aGUgcmV0dXJuIHZhbHVlIGlzIHRoZSBidWZm ZXIKK3Nob3duIGJ5IEB2YXJ7d2luZG93fSBhdCB0aGF0IHRpbWUuICBBcyBhIHNwZWNpYWwg Y2FzZSwgaWYgQHZhcnt3aW5kb3d9CitoYXMgYmVlbiBkZWxldGVkLCB0aGlzIGZ1bmN0aW9u IHJldHVybnMgdGhlIGxhc3QgYnVmZmVyIEB2YXJ7d2luZG93fSBoYWQKK3Nob3duIGF0IHRo YXQgdGltZS4gIEB2YXJ7d2luZG93fSBjYW4gYmUgYW55IHdpbmRvdyBhbmQgZGVmYXVsdHMg dG8gdGhlCitzZWxlY3RlZCBvbmUuCiBAZW5kIGRlZnVuCiAKIEBkZWZ1biB3aW5kb3ctb2xk LXBpeGVsLXdpZHRoICZvcHRpb25hbCB3aW5kb3cKZGlmZiAtLWdpdCBhL2xpc3Avd2luZG93 LmVsIGIvbGlzcC93aW5kb3cuZWwKaW5kZXggZTlkNTc2NTJlYzYuLjM4MjliMmI0NDFmIDEw MDY0NAotLS0gYS9saXNwL3dpbmRvdy5lbAorKysgYi9saXNwL3dpbmRvdy5lbApAQCAtNTUx MSw3ICs1NTExLDcgQEAgd2luZG93LS1jb21iaW5hdGlvbi1yZXNpemFibGUKICAgICAgIChz ZXRxIHNpYmxpbmcgKHdpbmRvdy1uZXh0LXNpYmxpbmcgc2libGluZykpKQogICAgICgvIHNp emUgKDErIG51bWJlcikpKSkKIAotKGRlZnVuIHNwbGl0LXdpbmRvdyAoJm9wdGlvbmFsIHdp bmRvdyBzaXplIHNpZGUgcGl4ZWx3aXNlKQorKGRlZnVuIHNwbGl0LXdpbmRvdyAoJm9wdGlv bmFsIHdpbmRvdyBzaXplIHNpZGUgcGl4ZWx3aXNlIHJlZmVyKQogICAiTWFrZSBhIG5ldyB3 aW5kb3cgYWRqYWNlbnQgdG8gV0lORE9XLgogV0lORE9XIG11c3QgYmUgYSB2YWxpZCB3aW5k b3cgYW5kIGRlZmF1bHRzIHRvIHRoZSBzZWxlY3RlZCBvbmUuCiBSZXR1cm4gdGhlIG5ldyB3 aW5kb3cgd2hpY2ggaXMgYWx3YXlzIGEgbGl2ZSB3aW5kb3cuCkBAIC01NTQyLDIzICs1NTQy LDYzIEBAIHNwbGl0LXdpbmRvdwogYXMgYGFib3ZlJyBhbmQgYGJlbG93Jy4gIEFueSBvdGhl ciBub24tbmlsIHZhbHVlIGZvciBTSURFIGlzCiBjdXJyZW50bHkgaGFuZGxlZCBsaWtlIHQg KG9yIGByaWdodCcpLgogCitBcyBhIHJ1bGUsIGlmIFdJTkRPVyBhbHJlYWR5IGZvcm1zIGEg Y29tYmluYXRpb24gdGhhdCBtYXRjaGVzIHRoZSBTSURFCitwYXJhbWV0ZXIgYW5kIGB3aW5k b3ctY29tYmluYXRpb24tbGltaXQnIGlzIG5pbCwgcmV1c2UgV0lORE9XJ3MgcGFyZW50Citp biB0aGUgd2luZG93IHRyZWUgYXMgcGFyZW50IG9mIHRoZSBuZXcgd2luZG93LiAgSWYgV0lO RE9XIGlzIGluIGEKK2NvbWJpbmF0aW9uIHRoYXQgaXMgb3J0aG9nb25hbCB0byB0aGUgU0lE RSBwYXJhbWV0ZXIgb3IgaWYKK2B3aW5kb3ctY29tYmluYXRpb24tbGltaXQnIGlzIG5vbi1u aWwsIG1ha2UgYSBuZXcgcGFyZW50IHdpbmRvdyB0aGF0CityZXBsYWNlcyBXSU5ET1cgaW4g dGhlIHdpbmRvdyB0cmVlIGFuZCBtYWtlIFdJTkRPVyBhbmQgdGhlIG5ldyB3aW5kb3cKK2l0 cyBzb2xlIGNoaWxkIHdpbmRvd3MuICBUaGlzIHN0YW5kYXJkIGJlaGF2aW9yIGNhbiBiZSBv dmVycmlkZGVuIHZpYQordGhlIFJFRkVSIGFyZ3VtZW50LgorCiBQSVhFTFdJU0UsIGlmIG5v bi1uaWwsIG1lYW5zIHRvIGludGVycHJldCBTSVpFIHBpeGVsd2lzZS4KIAorSWYgdGhlIG9w dGlvbmFsIGZpZnRoIGFyZ3VtZW50IFJFRkVSIGlzIG5vbi1uaWwsIGl0IHNwZWNpZmllcyBh CityZWZlcmVuY2Ugd2luZG93IHVzZWQgZm9yIHNldHRpbmcgdXAgcHJvcGVydGllcyBvZiB0 aGUgbmV3IHdpbmRvdy4KK1JFRkVSIGNhbiBiZSBlaXRoZXIgYSB3aW5kb3cgb3IgYSBjb25z IGNlbGwgb2YgdHdvIHdpbmRvd3MuCisKK0lmIFJFRkVSIGlzIGEgY29ucyBjZWxsLCBpdHMg Y2FyIGhhcyB0byBzcGVjaWZ5IGEgZGVsZXRlZCwgZm9ybWVyIGxpdmUKK3dpbmRvdyAtIGEg d2luZG93IHRoYXQgaGFzIHNob3duIGEgYnVmZmVyIGJlZm9yZSAtIG9uIHRoZSBzYW1lIGZy YW1lIGFzCitXSU5ET1cuICBUaGF0IGJ1ZmZlciBtdXN0IGJlIHN0aWxsIGxpdmUuICBUaGUg Y2RyIGhhcyB0byBzcGVjaWZ5IGEKK2RlbGV0ZWQgd2luZG93IHRoYXQgd2FzIGEgcGFyZW50 IHdpbmRvdyBvbiB0aGUgc2FtZSBmcmFtZSBhcyBXSU5ET1cKK2JlZm9yZSBpdCB3YXMgZGVs ZXRlZC4gIEluIHRoaXMgY2FzZSwgcmF0aGVyIHRoZW4gbWFraW5nIG5ldyB3aW5kb3dzLAor cmVwbGFjZSBXSU5ET1cgd2l0aCB0aGUgY2RyIG9mIFJFRkVSIGluIHRoZSB3aW5kb3cgdHJl ZSBhbmQgbWFrZSBXSU5ET1cKK2FuZCBSRUZFUidzIGNhciBpdHMgbmV3IGNoaWxkIHdpbmRv d3MuICBCdWZmZXIsIHN0YXJ0IGFuZCBwb2ludAorcG9zaXRpb25zIG9mIFJFRkVSJ3MgY2Fy IGFyZSBzZXQgdG8gdGhlIHZhbHVlcyB0aGV5IGhhZCBpbW1lZGlhdGVseQorYmVmb3JlIFJF RkVSJ3MgY2FyIHdhcyBkZWxldGVkIHRoZSBsYXN0IHRpbWUuICBEZWNvcmF0aW9ucyBhbmQK K3BhcmFtZXRlcnMgcmVtYWluIHVuYWx0ZXJlZCBmcm9tIHRoZWlyIHZhbHVlcyBiZWZvcmUg UkVGRVIncyBjYXIgYW5kIGNkcgord2VyZSBkZWxldGVkLgorCitBbHRlcm5hdGl2ZWx5IFJF RkVSIG1heSBzcGVjaWZ5IGEgZGVsZXRlZCwgZm9ybWVyIGxpdmUgd2luZG93IC0gYSB3aW5k b3cKK3RoYXQgaGFzIHNob3duIGEgYnVmZmVyIGJlZm9yZSAtIG9uIHRoZSBzYW1lIGZyYW1l IGFzIFdJTkRPVy4gIEluIHRoaXMKK2Nhc2UgZG8gbm90IG1ha2UgYSBuZXcgd2luZG93IGJ1 dCByYXRoZXIgbWFrZSBSRUZFUiBsaXZlIGFnYWluIGFuZAoraW5zZXJ0IGl0IGludG8gdGhl IHdpbmRvdyB0cmVlIGF0IHRoZSBwb3NpdGlvbiBhbmQgd2l0aCB0aGUgc2l6ZXMgdGhlCitu ZXcgd2luZG93IHdvdWxkIGhhdmUgYmVlbiBnaXZlbi4gIEJ1ZmZlciwgc3RhcnQgYW5kIHBv aW50IHBvc2l0aW9ucyBvZgorUkVGRVIgYXJlIHNldCB0byB0aGUgdmFsdWVzIHRoZXkgaGFk IGltbWVkaWF0ZWx5IGJlZm9yZSBSRUZFUiB3YXMKK2RlbGV0ZWQgdGhlIGxhc3QgdGltZS4g IERlY29yYXRpb25zIGFuZCBwYXJhbWV0ZXJzIHJlbWFpbiB1bmFsdGVyZWQgZnJvbQordGhl aXIgdmFsdWVzIGJlZm9yZSBSRUZFUiB3YXMgZGVsZXRlZC4gIFRocm93IGFuIGVycm9yIGlm IFJFRkVSJ3MgYnVmZmVyCitoYXMgYmVlbiBkZWxldGVkIGFmdGVyIFJFRkVSIGl0c2VsZiB3 YXMgZGVsZXRlZC4KKworT3RoZXJ3aXNlIFJFRkVSIG11c3Qgc3BlY2lmeSBhIGxpdmUgd2lu ZG93LiAgSW4gdGhpcyBjYXNlLCB0aGUgbmV3Cit3aW5kb3cgd2lsbCBpbmhlcml0IHByb3Bl cnRpZXMgbGlrZSBidWZmZXIsIHN0YXJ0IGFuZCBwb2ludCBwb3NpdGlvbiBhbmQKK3NvbWUg ZGVjb3JhdGlvbnMgZnJvbSBSRUZFUi4gIElmIFJFRkVSIGlzIG5pbCBvciBvbWl0dGVkLCB0 aGVuIGlmIFdJTkRPVworaXMgbGl2ZSwgYW55IHN1Y2ggcHJvcGVydGllcyBhcmUgaW5oZXJp dGVkIGZyb20gV0lORE9XLiAgSWYsIGhvd2V2ZXIsCitXSU5ET1cgaXMgYW4gaW50ZXJuYWwg d2luZG93LCB0aGUgbmV3IHdpbmRvdyB3aWxsIGluaGVyaXQgdGhlc2UKK3Byb3BlcnRpZXMg ZnJvbSB0aGUgd2luZG93IHNlbGVjdGVkIG9uIFdJTkRPVydzIGZyYW1lLgorCiBJZiB0aGUg dmFyaWFibGUgYGlnbm9yZS13aW5kb3ctcGFyYW1ldGVycycgaXMgbm9uLW5pbCBvciB0aGUK IGBzcGxpdC13aW5kb3cnIHBhcmFtZXRlciBvZiBXSU5ET1cgZXF1YWxzIHQsIGRvIG5vdCBw cm9jZXNzIGFueQotcGFyYW1ldGVycyBvZiBXSU5ET1cuICBPdGhlcndpc2UsIGlmIHRoZSBg c3BsaXQtd2luZG93JyBwYXJhbWV0ZXIKLW9mIFdJTkRPVyBzcGVjaWZpZXMgYSBmdW5jdGlv biwgY2FsbCB0aGF0IGZ1bmN0aW9uIHdpdGggYWxsIHRocmVlCi1hcmd1bWVudHMgYW5kIHJl dHVybiB0aGUgdmFsdWUgcmV0dXJuZWQgYnkgdGhhdCBmdW5jdGlvbi4KLQotT3RoZXJ3aXNl LCBpZiBXSU5ET1cgaXMgcGFydCBvZiBhbiBhdG9taWMgd2luZG93LCBcInNwbGl0XCIgdGhl Ci1yb290IG9mIHRoYXQgYXRvbWljIHdpbmRvdy4gIFRoZSBuZXcgd2luZG93IGRvZXMgbm90 IGJlY29tZSBhCi1tZW1iZXIgb2YgdGhhdCBhdG9taWMgd2luZG93LgotCi1JZiBXSU5ET1cg aXMgbGl2ZSwgcHJvcGVydGllcyBvZiB0aGUgbmV3IHdpbmRvdyBsaWtlIG1hcmdpbnMgYW5k Ci1zY3JvbGxiYXJzIGFyZSBpbmhlcml0ZWQgZnJvbSBXSU5ET1cuICBJZiBXSU5ET1cgaXMg YW4gaW50ZXJuYWwKLXdpbmRvdywgdGhlc2UgcHJvcGVydGllcyBhcyB3ZWxsIGFzIHRoZSBi dWZmZXIgZGlzcGxheWVkIGluIHRoZQotbmV3IHdpbmRvdyBhcmUgaW5oZXJpdGVkIGZyb20g dGhlIHdpbmRvdyBzZWxlY3RlZCBvbiBXSU5ET1cncwotZnJhbWUuICBUaGUgc2VsZWN0ZWQg d2luZG93IGlzIG5vdCBjaGFuZ2VkIGJ5IHRoaXMgZnVuY3Rpb24uIgorcGFyYW1ldGVycyBv ZiBXSU5ET1cuICBPdGhlcndpc2UsIGlmIHRoZSBgc3BsaXQtd2luZG93JyBwYXJhbWV0ZXIg b2YKK1dJTkRPVyBzcGVjaWZpZXMgYSBmdW5jdGlvbiwgY2FsbCB0aGF0IGZ1bmN0aW9uIHdp dGggdGhlIHRocmVlIGZpcnN0Cithcmd1bWVudHMgV0lORE9XLCBTSVpFIGFuZCBTSURFIGFu ZCByZXR1cm4gdGhlIHZhbHVlIHJldHVybmVkIGJ5IHRoYXQKK2Z1bmN0aW9uLgorCitPdGhl cndpc2UsIGlmIFdJTkRPVyBpcyBwYXJ0IG9mIGFuIGF0b21pYyB3aW5kb3csIFwic3BsaXRc IiB0aGUgcm9vdCBvZgordGhhdCBhdG9taWMgd2luZG93LiAgVGhlIG5ldyB3aW5kb3cgZG9l cyBub3QgYmVjb21lIGEgbWVtYmVyIG9mIHRoYXQKK2F0b21pYyB3aW5kb3cuCisKK1RoZSBz ZWxlY3RlZCB3aW5kb3cgYW5kIHRoZSBzZWxlY3RlZCB3aW5kb3cgb24gV0lORE9XJ3MgZnJh bWUgYXJlIG5vdAorY2hhbmdlZCBieSB0aGlzIGZ1bmN0aW9uLiIKICAgKHNldHEgd2luZG93 ICh3aW5kb3ctbm9ybWFsaXplLXdpbmRvdyB3aW5kb3cpKQogICAobGV0KiAoKHNpZGUgKGNv bmQKIAkJKChub3Qgc2lkZSkgJ2JlbG93KQpAQCAtNTU5OCwxNCArNTYzOCwxNCBAQCBzcGxp dC13aW5kb3cKICAgICAgICAoKGFuZCAod2luZG93LXBhcmFtZXRlciB3aW5kb3cgJ3dpbmRv dy1hdG9tKQogCSAgICAgKHNldHEgYXRvbS1yb290ICh3aW5kb3ctYXRvbS1yb290IHdpbmRv dykpCiAJICAgICAobm90IChlcSBhdG9tLXJvb3Qgd2luZG93KSkpCi0JKHRocm93ICdkb25l IChzcGxpdC13aW5kb3cgYXRvbS1yb290IHNpemUgc2lkZSBwaXhlbHdpc2UpKSkKKwkodGhy b3cgJ2RvbmUgKHNwbGl0LXdpbmRvdyBhdG9tLXJvb3Qgc2l6ZSBzaWRlIHBpeGVsd2lzZSBy ZWZlcikpKQogICAgICAgIDs7IElmIFdJTkRPVydzIGZyYW1lIGhhcyBhIHNpZGUgd2luZG93 IGFuZCBXSU5ET1cgc3BlY2lmaWVzIHRoZQogICAgICAgIDs7IGZyYW1lJ3Mgcm9vdCB3aW5k b3csIHNwbGl0IHRoZSBmcmFtZSdzIG1haW4gd2luZG93IGluc3RlYWQKICAgICAgICA7OyAo QnVnIzczNjI3KS4KICAgICAgICAoKGFuZCAoZXEgd2luZG93IChmcmFtZS1yb290LXdpbmRv dyBmcmFtZSkpCiAJICAgICAod2luZG93LXdpdGgtcGFyYW1ldGVyICd3aW5kb3ctc2lkZSBu aWwgZnJhbWUpKQogCSh0aHJvdyAnZG9uZSAoc3BsaXQtd2luZG93ICh3aW5kb3ctbWFpbi13 aW5kb3cgZnJhbWUpCi0JCQkJICAgc2l6ZSBzaWRlIHBpeGVsd2lzZSkpKQorCQkJCSAgIHNp emUgc2lkZSBwaXhlbHdpc2UgcmVmZXIpKSkKICAgICAgICA7OyBJZiBXSU5ET1cgaXMgYSBz aWRlIHdpbmRvdyBvciBpdHMgZmlyc3Qgb3IgbGFzdCBjaGlsZCBpcyBhCiAgICAgICAgOzsg c2lkZSB3aW5kb3csIHRocm93IGFuIGVycm9yIHVubGVzcyBgd2luZG93LWNvbWJpbmF0aW9u LXJlc2l6ZScKICAgICAgICA7OyBlcXVhbHMgJ3NpZGUuCkBAIC01NjQ0LDggKzU2ODQsOCBA QCBzcGxpdC13aW5kb3cKIAkJICAgKHdpbmRvdy1jb21iaW5lZC1wIHdpbmRvdyBob3Jpem9u dGFsKSkpCiAJICAgICA7OyAnb2xkLXBpeGVsLXNpemUnIGlzIHRoZSBjdXJyZW50IHBpeGVs IHNpemUgb2YgV0lORE9XLgogCSAgICAgKG9sZC1waXhlbC1zaXplICh3aW5kb3ctc2l6ZSB3 aW5kb3cgaG9yaXpvbnRhbCB0KSkKLQkgICAgIDs7ICduZXctc2l6ZScgaXMgdGhlIHNwZWNp ZmllZCBvciBjYWxjdWxhdGVkIHNpemUgb2YgdGhlCi0JICAgICA7OyBuZXcgd2luZG93Lgor CSAgICAgOzsgJ25ldy1waXhlbC1zaXplJyBpcyB0aGUgc3BlY2lmaWVkIG9yIGNhbGN1bGF0 ZWQgc2l6ZQorCSAgICAgOzsgb2YgdGhlIG5ldyB3aW5kb3cuCiAJICAgICBuZXctcGl4ZWwt c2l6ZSBuZXctcGFyZW50IG5ldy1ub3JtYWwpCiAJKGNvbmQKIAkgKChub3QgcGl4ZWwtc2l6 ZSkKQEAgLTU3NjYsOCArNTgwNiw5IEBAIHNwbGl0LXdpbmRvdwogCSAgIHdpbmRvdyAoLSAo aWYgbmV3LXBhcmVudCAxLjAgKHdpbmRvdy1ub3JtYWwtc2l6ZSB3aW5kb3cgaG9yaXpvbnRh bCkpCiAJCSAgICAgbmV3LW5vcm1hbCkpKQogCi0JKGxldCogKChuZXcgKHNwbGl0LXdpbmRv dy1pbnRlcm5hbCB3aW5kb3cgbmV3LXBpeGVsLXNpemUgc2lkZSBuZXctbm9ybWFsKSkpCi0J ICAod2luZG93LS1waXhlbC10by10b3RhbCBmcmFtZSBob3Jpem9udGFsKQorCShsZXQgKChu ZXcgKHNwbGl0LXdpbmRvdy1pbnRlcm5hbAorCQkgICAgd2luZG93IG5ldy1waXhlbC1zaXpl IHNpZGUgbmV3LW5vcm1hbCByZWZlcikpKQorICAgICAgICAgICh3aW5kb3ctLXBpeGVsLXRv LXRvdGFsIGZyYW1lIGhvcml6b250YWwpCiAJICA7OyBBc3NpZ24gd2luZG93LXNpZGUgcGFy YW1ldGVycywgaWYgYW55LgogCSAgKGNvbmQKIAkgICAoKGVxIHdpbmRvdy1jb21iaW5hdGlv bi1yZXNpemUgJ3NpZGUpCmRpZmYgLS1naXQgYS9zcmMvd2luZG93LmMgYi9zcmMvd2luZG93 LmMKaW5kZXggN2YxNTc5MTE2ODUuLmQ1MzM5MDRhNTUwIDEwMDY0NAotLS0gYS9zcmMvd2lu ZG93LmMKKysrIGIvc3JjL3dpbmRvdy5jCkBAIC02NTIsMTUgKzY1MiwxNiBAQCBERUZVTiAo IndpbmRvdy1idWZmZXIiLCBGd2luZG93X2J1ZmZlciwgU3dpbmRvd19idWZmZXIsIDAsIDEs IDAsCiAKIERFRlVOICgid2luZG93LW9sZC1idWZmZXIiLCBGd2luZG93X29sZF9idWZmZXIs IFN3aW5kb3dfb2xkX2J1ZmZlciwgMCwgMSwgMCwKICAgICAgICBkb2M6IC8qIFJldHVybiB0 aGUgb2xkIGJ1ZmZlciBkaXNwbGF5ZWQgYnkgV0lORE9XLgotV0lORE9XIG11c3QgYmUgYSBs aXZlIHdpbmRvdyBhbmQgZGVmYXVsdHMgdG8gdGhlIHNlbGVjdGVkIG9uZS4KK1dJTkRPVyBj YW4gYmUgYW55IHdpbmRvdyBhbmQgZGVmYXVsdHMgdG8gdGhlIHNlbGVjdGVkIG9uZS4KIAog VGhlIHJldHVybiB2YWx1ZSBpcyB0aGUgYnVmZmVyIHNob3duIGluIFdJTkRPVyBhdCB0aGUg bGFzdCB0aW1lIHdpbmRvdwotY2hhbmdlIGZ1bmN0aW9ucyB3ZXJlIHJ1bi4gIEl0IGlzIG5p bCBpZiBXSU5ET1cgd2FzIGNyZWF0ZWQgYWZ0ZXIKLXRoYXQuICBJdCBpcyB0IGlmIFdJTkRP VyBoYXMgYmVlbiByZXN0b3JlZCBmcm9tIGEgd2luZG93IGNvbmZpZ3VyYXRpb24KLWFmdGVy IHRoYXQuICAqLykKK2NoYW5nZSBmdW5jdGlvbnMgd2VyZSBydW4gb3IgV0lORE9XIGlzIGEg Zm9ybWVyIGxpdmUgd2luZG93IHRoYXQgd2FzCitkZWxldGVkLiAgSXQgaXMgbmlsIGlmIFdJ TkRPVyB3YXMgY3JlYXRlZCBhZnRlciB0aGF0LiAgSXQgaXMgdCBpZiBXSU5ET1cKK2hhcyBi ZWVuIHJlc3RvcmVkIGZyb20gYSB3aW5kb3cgY29uZmlndXJhdGlvbiBhZnRlciB0aGF0LiAg SXQgaXMgYWx3YXlzCituaWwgaWYgV0lORE9XIGlzIGFuIGludGVybmFsIHdpbmRvdy4gICov KQogICAoTGlzcF9PYmplY3Qgd2luZG93KQogewotICBzdHJ1Y3Qgd2luZG93ICp3ID0gZGVj b2RlX2xpdmVfd2luZG93ICh3aW5kb3cpOworICBzdHJ1Y3Qgd2luZG93ICp3ID0gZGVjb2Rl X2FueV93aW5kb3cgKHdpbmRvdyk7CiAKICAgcmV0dXJuIChOSUxQICh3LT5vbGRfYnVmZmVy KQogCSAgLyogQSBuZXcgd2luZG93LiAgKi8KQEAgLTY2OCw4ICs2NjksOCBAQCBERUZVTiAo IndpbmRvdy1vbGQtYnVmZmVyIiwgRndpbmRvd19vbGRfYnVmZmVyLCBTd2luZG93X29sZF9i dWZmZXIsIDAsIDEsIDAsCiAJICA6ICh3LT5jaGFuZ2Vfc3RhbXAgIT0gV0lORE9XX1hGUkFN RSAodyktPmNoYW5nZV9zdGFtcCkKIAkgIC8qIEEgd2luZG93IHJlc3RvcmVkIGZyb20gYSBj b25maWd1cmF0aW9uLiAgKi8KIAkgID8gUXQKLQkgIC8qIEEgd2luZG93IHRoYXQgd2FzIGxp dmUgdGhlIGxhc3QgdGltZSBzZWVuIGJ5IHdpbmRvdwotCSAgICAgY2hhbmdlIGZ1bmN0aW9u cy4gICovCisJICAvKiBBIHdpbmRvdyB0aGF0IHdhcyBsaXZlIHRoZSBsYXN0IHRpbWUgc2Vl biBieSB3aW5kb3cgY2hhbmdlCisJICAgICBmdW5jdGlvbnMgb3Igd2FzIGRlbGV0ZWQuICAq LwogCSAgOiB3LT5vbGRfYnVmZmVyKTsKIH0KIApAQCAtNDQ5MSw0NSArNDQ5Miw2IEBAIGFs bG9jYXRlX3dpbmRvdyAodm9pZCkKIAkJCQkgICAgICAgUFZFQ19XSU5ET1cpOwogfQogCi0v KiBNYWtlIG5ldyB3aW5kb3csIGhhdmUgaXQgcmVwbGFjZSBXSU5ET1cgaW4gd2luZG93LXRy ZWUsIGFuZCBtYWtlCi0gICBXSU5ET1cgaXRzIG9ubHkgdmVydGljYWwgY2hpbGQgKEhPUkZM QUcgbWVhbnMgbWFrZSBXSU5ET1cgaXRzIG9ubHkKLSAgIGhvcml6b250YWwgY2hpbGQpLiAg ICovCi1zdGF0aWMgdm9pZAotbWFrZV9wYXJlbnRfd2luZG93IChMaXNwX09iamVjdCB3aW5k b3csIGJvb2wgaG9yZmxhZykKLXsKLSAgTGlzcF9PYmplY3QgcGFyZW50OwotICByZWdpc3Rl ciBzdHJ1Y3Qgd2luZG93ICpvLCAqcDsKLQotICBvID0gWFdJTkRPVyAod2luZG93KTsKLSAg cCA9IGFsbG9jYXRlX3dpbmRvdyAoKTsKLSAgbWVtY3B5ICgoY2hhciAqKSBwICsgc2l6ZW9m ICh1bmlvbiB2ZWN0b3JsaWtlX2hlYWRlciksCi0JICAoY2hhciAqKSBvICsgc2l6ZW9mICh1 bmlvbiB2ZWN0b3JsaWtlX2hlYWRlciksCi0JICB3b3JkX3NpemUgKiBWRUNTSVpFIChzdHJ1 Y3Qgd2luZG93KSk7Ci0gIC8qIFAncyBidWZmZXIgc2xvdCBtYXkgY2hhbmdlIGZyb20gbmls IHRvIGEgYnVmZmVyLi4uICAqLwotICBhZGp1c3Rfd2luZG93X2NvdW50IChwLCAxKTsKLSAg WFNFVFdJTkRPVyAocGFyZW50LCBwKTsKLQotICBwLT5zZXF1ZW5jZV9udW1iZXIgPSArK3Nl cXVlbmNlX251bWJlcjsKLQotICByZXBsYWNlX3dpbmRvdyAod2luZG93LCBwYXJlbnQsIHRy dWUpOwotCi0gIHdzZXRfbmV4dCAobywgUW5pbCk7Ci0gIHdzZXRfcHJldiAobywgUW5pbCk7 Ci0gIHdzZXRfcGFyZW50IChvLCBwYXJlbnQpOwotICAvKiAuLi5idXQgbm93IFAgYmVjb21l cyBhbiBpbnRlcm5hbCB3aW5kb3cuICAqLwotICB3c2V0X3N0YXJ0IChwLCBRbmlsKTsKLSAg d3NldF9wb2ludG0gKHAsIFFuaWwpOwotICB3c2V0X29sZF9wb2ludG0gKHAsIFFuaWwpOwot ICB3c2V0X2J1ZmZlciAocCwgUW5pbCk7Ci0gIHdzZXRfY29tYmluYXRpb24gKHAsIGhvcmZs YWcsIHdpbmRvdyk7Ci0gIHdzZXRfY29tYmluYXRpb25fbGltaXQgKHAsIFFuaWwpOwotICAv KiBSZXNldCBhbnkgcHJldmlvdXMgYW5kIG5leHQgYnVmZmVycyBvZiBwIHdoaWNoIGhhdmUg YmVlbiBpbnN0YWxsZWQKLSAgICAgYnkgdGhlIG1lbWNweSBhYm92ZS4gICovCi0gIHdzZXRf cHJldl9idWZmZXJzIChwLCBRbmlsKTsKLSAgd3NldF9uZXh0X2J1ZmZlcnMgKHAsIFFuaWwp OwotICB3c2V0X3dpbmRvd19wYXJhbWV0ZXJzIChwLCBRbmlsKTsKLX0KLQogLyogTWFrZSBu ZXcgd2luZG93IGZyb20gc2NyYXRjaC4gICovCiBMaXNwX09iamVjdAogbWFrZV93aW5kb3cg KHZvaWQpCkBAIC01MDczLDcgKzUwMzUsNyBAQCByZXNpemVfZnJhbWVfd2luZG93cyAoc3Ry dWN0IGZyYW1lICpmLCBpbnQgc2l6ZSwgYm9vbCBob3JmbGFnKQogfQogCiAKLURFRlVOICgi c3BsaXQtd2luZG93LWludGVybmFsIiwgRnNwbGl0X3dpbmRvd19pbnRlcm5hbCwgU3NwbGl0 X3dpbmRvd19pbnRlcm5hbCwgNCwgNCwgMCwKK0RFRlVOICgic3BsaXQtd2luZG93LWludGVy bmFsIiwgRnNwbGl0X3dpbmRvd19pbnRlcm5hbCwgU3NwbGl0X3dpbmRvd19pbnRlcm5hbCwg NCwgNSwgMCwKICAgICAgICBkb2M6IC8qIFNwbGl0IHdpbmRvdyBPTEQuCiBTZWNvbmQgYXJn dW1lbnQgUElYRUwtU0laRSBzcGVjaWZpZXMgdGhlIG51bWJlciBvZiBwaXhlbHMgb2YgdGhl CiBuZXcgd2luZG93LiAgSXQgbXVzdCBiZSBhIHBvc2l0aXZlIGludGVnZXIuCkBAIC01MDg4 LDMyICs1MDUwLDMzIEBAIERFRlVOICgic3BsaXQtd2luZG93LWludGVybmFsIiwgRnNwbGl0 X3dpbmRvd19pbnRlcm5hbCwgU3NwbGl0X3dpbmRvd19pbnRlcm5hbCwKIHRoZSByaWdodCBz aWRlIG9mIFdJTkRPVy4gIFNJREUgYGxlZnQnIG1lYW5zIHRoZSBuZXcgd2luZG93IHNoYWxs IGJlCiBsb2NhdGVkIG9uIHRoZSBsZWZ0IG9mIFdJTkRPVy4gIEluIGJvdGggY2FzZXMgUElY RUwtU0laRSBzcGVjaWZpZXMgdGhlCiB3aWR0aCBvZiB0aGUgbmV3IHdpbmRvdyBpbmNsdWRp bmcgc3BhY2UgcmVzZXJ2ZWQgZm9yIGZyaW5nZXMgYW5kIHRoZQotc2Nyb2xsYmFyIG9yIGEg ZGl2aWRlciBjb2x1bW4uCitzY3JvbGwgYmFyIG9yIGEgZGl2aWRlciBjb2x1bW4uCiAKIEZv dXJ0aCBhcmd1bWVudCBOT1JNQUwtU0laRSBzcGVjaWZpZXMgdGhlIG5vcm1hbCBzaXplIG9m IHRoZSBuZXcgd2luZG93Ci1hY2NvcmRpbmcgdG8gdGhlIFNJREUgYXJndW1lbnQuCithY2Nv cmRpbmcgdG8gdGhlIFNJREUgYXJndW1lbnQuICBPcHRpb25hbCBmaWZ0aCBhcmd1bWVudCBS RUZFUiBpcyBhcyBmb3IKKydzcGxpdC13aW5kb3cnLgogCiBUaGUgbmV3IHBpeGVsIGFuZCBu b3JtYWwgc2l6ZXMgb2YgYWxsIGludm9sdmVkIHdpbmRvd3MgbXVzdCBoYXZlIGJlZW4KIHNl dCBjb3JyZWN0bHkuICBTZWUgdGhlIGNvZGUgb2YgYHNwbGl0LXdpbmRvdycgZm9yIGhvdyB0 aGlzIGlzIGRvbmUuICAqLykKLSAgKExpc3BfT2JqZWN0IG9sZCwgTGlzcF9PYmplY3QgcGl4 ZWxfc2l6ZSwgTGlzcF9PYmplY3Qgc2lkZSwgTGlzcF9PYmplY3Qgbm9ybWFsX3NpemUpCi17 Ci0gIC8qIE9MRCAoKm8pIGlzIHRoZSB3aW5kb3cgd2UgaGF2ZSB0byBzcGxpdC4gICgqcCkg aXMgZWl0aGVyIE9MRCdzCi0gICAgIHBhcmVudCB3aW5kb3cgb3IgYW4gaW50ZXJuYWwgd2lu ZG93IHdlIGhhdmUgdG8gaW5zdGFsbCBhcyBPTEQncyBuZXcKLSAgICAgcGFyZW50LiAgUkVG RVJFTkNFICgqcikgbXVzdCBkZW5vdGUgYSBsaXZlIHdpbmRvdywgb3IgaXMgc2V0IHRvIE9M RAotICAgICBwcm92aWRlZCBPTEQgaXMgYSBsZWFmIHdpbmRvdywgb3IgdG8gdGhlIGZyYW1l J3Mgc2VsZWN0ZWQgd2luZG93LgotICAgICBORVcgKCpuKSBpcyB0aGUgbmV3IHdpbmRvdyBj cmVhdGVkIHdpdGggc29tZSBwYXJhbWV0ZXJzIHRha2VuIGZyb20KLSAgICAgUkVGRVJFTkNF ICgqcikuICAqLwotICBMaXNwX09iamVjdCBuZXcsIGZyYW1lLCByZWZlcmVuY2U7Ci0gIHN0 cnVjdCB3aW5kb3cgKm8sICpwLCAqbiwgKnIsICpjOwotICBzdHJ1Y3QgZnJhbWUgKmY7Cisg IChMaXNwX09iamVjdCBvbGQsIExpc3BfT2JqZWN0IHBpeGVsX3NpemUsIExpc3BfT2JqZWN0 IHNpZGUsCisgICBMaXNwX09iamVjdCBub3JtYWxfc2l6ZSwgTGlzcF9PYmplY3QgcmVmZXIp Cit7CisgIC8qIE9MRCAoKm8pIGlzIHRoZSB3aW5kb3cgdG8gc3BsaXQuICBSRUZFUiAoKnIp IGlzIGEgcmVmZXJlbmNlIHdpbmRvdywKKyAgICAgZWl0aGVyIGFuIGFyYml0cmFyeSBsaXZl IHdpbmRvdyBvciBhIGZvcm1lciBsaXZlLCBub3cgZGVsZXRlZAorICAgICB3aW5kb3cgb24g dGhlIHNhbWUgZnJhbWUgYXMgT0xELiAgTkVXICgqbikgaXMgdGhlIG5ldyB3aW5kb3cKKyAg ICAgY3JlYXRlZCBhbmV3IG9yIHJlc3VycmVjdGVkIGZyb20gUkVGRVIgKCpyKSwgaWYgc3Bl Y2lmaWVkLiAgKnAKKyAgICAgcmVmZXJzIGVpdGhlciB0byBPTEQncyBwYXJlbnQgd2luZG93 IHRoYXQgd2lsbCBiZWNvbWUgTkVXJ3MgcGFyZW50CisgICAgIHdpbmRvdyB0b28gb3IgdG8g YSBuZXcgaW50ZXJuYWwgd2luZG93IHRoYXQgYmVjb21lcyBPTEQncyBhbmQgTkVXJ3MKKyAg ICAgbmV3IHBhcmVudC4gICovCisgIHN0cnVjdCB3aW5kb3cgKm8gPSBkZWNvZGVfdmFsaWRf d2luZG93IChvbGQpOworICBMaXNwX09iamVjdCBmcmFtZSA9IFdJTkRPV19GUkFNRSAobyk7 CisgIHN0cnVjdCBmcmFtZSAqZiA9IFhGUkFNRSAoZnJhbWUpOworICBzdHJ1Y3Qgd2luZG93 ICpwLCAqbiwgKnIsICpjOwogICBib29sIGhvcmZsYWcKICAgICAvKiBIT1JGTEFHIGlzIHRy dWUgd2hlbiB3ZSBzcGxpdCBzaWRlLWJ5LXNpZGUsIGZhbHNlIG90aGVyd2lzZS4gICovCiAg ICAgPSBFUSAoc2lkZSwgUXQpIHx8IEVRIChzaWRlLCBRbGVmdCkgfHwgRVEgKHNpZGUsIFFy aWdodCk7Ci0KLSAgQ0hFQ0tfV0lORE9XIChvbGQpOwotICBvID0gWFdJTkRPVyAob2xkKTsK LSAgZnJhbWUgPSBXSU5ET1dfRlJBTUUgKG8pOwotICBmID0gWEZSQU1FIChmcmFtZSk7Cisg IExpc3BfT2JqZWN0IG5ldywgcGFyZW50ID0gUW5pbDsKKyAgYm9vbCBkZWFkID0gZmFsc2U7 CiAKICAgQ0hFQ0tfRklYTlVNIChwaXhlbF9zaXplKTsKICAgRU1BQ1NfSU5UIHRvdGFsX3Np emUKQEAgLTUxMzEsMTQgKzUwOTQsNzQgQEAgREVGVU4gKCJzcGxpdC13aW5kb3ctaW50ZXJu YWwiLCBGc3BsaXRfd2luZG93X2ludGVybmFsLCBTc3BsaXRfd2luZG93X2ludGVybmFsLAog CSAgID8gV0lORE9XX1ZFUlRJQ0FMX0NPTUJJTkFUSU9OX1AgKFhXSU5ET1cgKG8tPnBhcmVu dCkpCiAJICAgOiBXSU5ET1dfSE9SSVpPTlRBTF9DT01CSU5BVElPTl9QIChYV0lORE9XIChv LT5wYXJlbnQpKSkpOwogCi0gIC8qIFdlIG5lZWQgYSBsaXZlIHJlZmVyZW5jZSB3aW5kb3cg dG8gaW5pdGlhbGl6ZSBzb21lIHBhcmFtZXRlcnMuICAqLwotICBpZiAoV0lORE9XX0xJVkVf UCAob2xkKSkKLSAgICAvKiBPTEQgaXMgbGl2ZSwgdXNlIGl0IGFzIHJlZmVyZW5jZSB3aW5k b3cuICAqLwotICAgIHJlZmVyZW5jZSA9IG9sZDsKKyAgLyogU2V0IHVwIHJlZmVyZW5jZSB3 aW5kb3cuICAqLworICBpZiAoTklMUCAocmVmZXIpKQorICAgIHsKKyAgICAgIGlmIChXSU5E T1dfTElWRV9QIChvbGQpKQorCS8qIE9MRCBpcyBsaXZlLCB1c2UgaXQgYXMgcmVmZXJlbmNl IHdpbmRvdy4gICovCisJcmVmZXIgPSBvbGQ7CisgICAgICBlbHNlCisJLyogVXNlIHRoZSBm cmFtZSdzIHNlbGVjdGVkIHdpbmRvdyBhcyByZWZlcmVuY2Ugd2luZG93LiAgKi8KKwlyZWZl ciA9IEZSQU1FX1NFTEVDVEVEX1dJTkRPVyAoZik7CisKKyAgICAgIHIgPSBYV0lORE9XIChy ZWZlcik7CisgICAgfQorICBlbHNlIGlmIChDT05TUCAocmVmZXIpKQorICAgIHsKKyAgICAg IC8qIElmIFJFRkVSIGlzIGEgY29ucywgdGhlbiBpdHMgY2FyIG11c3QgYmUgYSBkZWxldGVk LCBmb3JtZXIgbGl2ZQorCSB3aW5kb3cgYW5kIGl0cyBjZHIgbXVzdCBiZSBhIGRlbGV0ZWQg Zm9ybWVyIHBhcmVudCB3aW5kb3cuICBTZXQKKwkgUEFSRU5UIHRvIHRoZSBjZHIgb2YgUkVG RVIgYW5kIFJFRkVSIHRvIGl0cyBjYXIuICBXSU5ET1cgYW5kCisJIFJFRkVSIGVuZCB1cCBh cyB0aGUgc29sZSBjaGlsZHJlbiBvZiBQQVJFTlQgd2hpY2ggcmVwbGFjZXMKKwkgV0lORE9X IGluIHRoZSB3aW5kb3cgdHJlZS4gIEFzIGEgc3BlY2lhbCBjYXNlLCBpZiBSRUZFUidzIGNk cgorCSBpcyB0LCByZXVzZSBSRUZFUidzIGNhcidzIG9sZCBwYXJlbnQgYXMgbmV3IHBhcmVu dCBwcm92aWRlZCBpdAorCSBpcyBhIGRlbGV0ZWQgZnJvbWVyIHBhcmVudCB3aW5kb3cuICAq LworICAgICAgcGFyZW50ID0gRmNkciAocmVmZXIpOworICAgICAgcmVmZXIgPSBGY2FyIChy ZWZlcik7CisgICAgICByID0gZGVjb2RlX2FueV93aW5kb3cgKHJlZmVyKTsKKworICAgICAg aWYgKCFOSUxQIChyLT5jb250ZW50cykgfHwgIUJVRkZFUlAgKHItPm9sZF9idWZmZXIpKQor CWVycm9yICgiUkVGRVIncyBjYXIgbXVzdCBzcGVjaWZ5IGEgZGVsZXRlZCwgZm9ybWVyIGxp dmUgd2luZG93Iik7CisgICAgICBlbHNlIGlmICghQlVGRkVSX0xJVkVfUCAoWEJVRkZFUiAo ci0+b2xkX2J1ZmZlcikpKQorCWVycm9yICgiVGhlIGJ1ZmZlciBmb3JtZXJseSBzaG93biBi eSBSRUZFUidzIGNhciBoYXMgYmVlbiBraWxsZWQiKTsKKyAgICAgIGVsc2UgaWYgKCFFUSAo ci0+ZnJhbWUsIGZyYW1lKSkKKwllcnJvciAoIlJFRkVSJ3MgY2FyIG11c3Qgc3BlY2lmeSBh IHdpbmRvdyBvbiBzYW1lIGZyYW1lIGFzIFdJTkRPVyIpOworCisgICAgICBpZiAoRVEgKHBh cmVudCwgUXQpKQorCS8qIElmIFJFRkVSJ3MgY2RyIGlzIHQsIHVzZSB0aGUgb2xkIHBhcmVu dCBvZiBSRUZFUidzIGNhciBhcyBuZXcKKwkgICBwYXJlbnQuICAqLworCXBhcmVudCA9IHIt PnBhcmVudDsKKworICAgICAgcCA9IGRlY29kZV9hbnlfd2luZG93IChwYXJlbnQpOworCisg ICAgICBpZiAoIU5JTFAgKHAtPmNvbnRlbnRzKSB8fCBCVUZGRVJQIChwLT5vbGRfYnVmZmVy KSkKKwllcnJvciAoIlJFRkVSJ3MgY2RyIG11c3Qgc3BlY2lmeSBhIGRlbGV0ZWQsIGZvcm1l ciBwYXJlbnQgd2luZG93Iik7CisgICAgICBlbHNlIGlmICghRVEgKHAtPmZyYW1lLCBmcmFt ZSkpCisJZXJyb3IgKCJSRUZFUidzIGNkciBtdXN0IHNwZWNpZnkgd2luZG93IG9uIHNhbWUg ZnJhbWUgYXMgV0lORE9XIik7CisKKyAgICAgIGRlYWQgPSB0cnVlOworICAgIH0KICAgZWxz ZQotICAgIC8qIFVzZSB0aGUgZnJhbWUncyBzZWxlY3RlZCB3aW5kb3cgYXMgcmVmZXJlbmNl IHdpbmRvdy4gICovCi0gICAgcmVmZXJlbmNlID0gRlJBTUVfU0VMRUNURURfV0lORE9XIChm KTsKLSAgciA9IFhXSU5ET1cgKHJlZmVyZW5jZSk7CisgICAgeworICAgICAgciA9IGRlY29k ZV9hbnlfd2luZG93IChyZWZlcik7CisKKyAgICAgIGlmIChOSUxQIChyLT5jb250ZW50cykp CisJLyogUHJlc3VtYWJseSBhIGRlbGV0ZWQsIGZvcm1lciBsaXZlIHdpbmRvdy4gIENoZWNr IHdoZXRoZXIgaXRzCisJICAgY29udGVudHMgY2FuIGJlIHVzZWQuICAqLworCXsKKwkgIGlm ICghQlVGRkVSUCAoci0+b2xkX2J1ZmZlcikpCisJICAgIGVycm9yICgiUkVGRVIgbXVzdCBz cGVjaWZ5IGEgZm9ybWVyIGxpdmUgd2luZG93IChtdXN0IGhhdmUgc2hvd24gYSBidWZmZXIp Iik7CisJICBlbHNlIGlmICghQlVGRkVSX0xJVkVfUCAoWEJVRkZFUiAoci0+b2xkX2J1ZmZl cikpKQorCSAgICBlcnJvciAoIlRoZSBidWZmZXIgZm9ybWVybHkgc2hvd24gYnkgUkVGRVIg aGFzIGJlZW4ga2lsbGVkIik7CisJICBlbHNlIGlmICghRVEgKHItPmZyYW1lLCBmcmFtZSkp CisJICAgIGVycm9yICgiUkVGRVIgbXVzdCBzcGVjaWZ5IGEgd2luZG93IG9uIHNhbWUgZnJh bWUgYXMgV0lORE9XIik7CisKKwkgIGRlYWQgPSB0cnVlOworCX0KKyAgICAgIGVsc2UgaWYg KCFOSUxQIChwYXJlbnQpKQorCWVycm9yICgiSWYgUkVGRVIgaXMgYSBjb25zLCBpdHMgY2Fy IG11c3Qgbm90IHNwZWNpZnkgYSBsaXZlIHdpbmRvdyIpOworICAgICAgZWxzZSBpZiAoIVdJ TkRPV19MSVZFX1AgKHJlZmVyKSkKKwllcnJvciAoIlJFRkVSIGlzIG5vdCBhIGxpdmUgd2lu ZG93IChkb2VzIG5vdCBzaG93IGEgYnVmZmVyKSIpOworICAgIH0KIAogICAvKiBUaGUgZm9s bG93aW5nIGJ1Z3MgYXJlIGNhdWdodCBieSBgc3BsaXQtd2luZG93Jy4gICovCiAgIGlmIChN SU5JX1dJTkRPV19QIChvKSkKQEAgLTUxNDksMTYgKzUxNzIsMTggQEAgREVGVU4gKCJzcGxp dC13aW5kb3ctaW50ZXJuYWwiLCBGc3BsaXRfd2luZG93X2ludGVybmFsLCBTc3BsaXRfd2lu ZG93X2ludGVybmFsLAogICAgIC8qIGB3aW5kb3ctY29tYmluYXRpb24tcmVzaXplJyBub24t bmlsIG1lYW5zIHRyeSB0byByZXNpemUgT0xEJ3Mgc2libGluZ3MKICAgICAgICBwcm9wb3J0 aW9uYWxseS4gICovCiAgICAgewotICAgICAgcCA9IFhXSU5ET1cgKG8tPnBhcmVudCk7Cisg ICAgICBzdHJ1Y3Qgd2luZG93ICpvcCA9IFhXSU5ET1cgKG8tPnBhcmVudCk7CisKICAgICAg IC8qIFRlbXBvcmFyaWx5IHByZXRlbmQgd2Ugc3BsaXQgdGhlIHBhcmVudCB3aW5kb3cuICAq LwogICAgICAgd3NldF9uZXdfcGl4ZWwKLQkocCwgbWFrZV9maXhudW0gKChob3JmbGFnID8g cC0+cGl4ZWxfd2lkdGggOiBwLT5waXhlbF9oZWlnaHQpCisJKG9wLCBtYWtlX2ZpeG51bSAo KGhvcmZsYWcgPyBvcC0+cGl4ZWxfd2lkdGggOiBvcC0+cGl4ZWxfaGVpZ2h0KQogCQkJIC0g WEZJWE5VTSAocGl4ZWxfc2l6ZSkpKTsKLSAgICAgIGlmICghd2luZG93X3Jlc2l6ZV9jaGVj ayAocCwgaG9yZmxhZykpCisgICAgICBpZiAoIXdpbmRvd19yZXNpemVfY2hlY2sgKG9wLCBo b3JmbGFnKSkKIAllcnJvciAoIldpbmRvdyBzaXplcyBkb24ndCBmaXQiKTsKICAgICAgIGVs c2UKIAkvKiBVbmRvIHRoZSB0ZW1wb3JhcnkgcHJldGVuc2lvbi4gICovCi0Jd3NldF9uZXdf cGl4ZWwgKHAsIG1ha2VfZml4bnVtIChob3JmbGFnID8gcC0+cGl4ZWxfd2lkdGggOiBwLT5w aXhlbF9oZWlnaHQpKTsKKwl3c2V0X25ld19waXhlbAorCSAgKG9wLCBtYWtlX2ZpeG51bSAo aG9yZmxhZyA/IG9wLT5waXhlbF93aWR0aCA6IG9wLT5waXhlbF9oZWlnaHQpKTsKICAgICB9 CiAgIGVsc2UKICAgICB7CkBAIC01MTc4LDggKzUyMDMsMjQgQEAgREVGVU4gKCJzcGxpdC13 aW5kb3ctaW50ZXJuYWwiLCBGc3BsaXRfd2luZG93X2ludGVybmFsLCBTc3BsaXRfd2luZG93 X2ludGVybmFsLAogICAgICAgTGlzcF9PYmplY3QgbmV3X25vcm1hbAogCT0gaG9yZmxhZyA/ IG8tPm5vcm1hbF9jb2xzIDogby0+bm9ybWFsX2xpbmVzOwogCi0gICAgICBtYWtlX3BhcmVu dF93aW5kb3cgKG9sZCwgaG9yZmxhZyk7Ci0gICAgICBwID0gWFdJTkRPVyAoby0+cGFyZW50 KTsKKyAgICAgIGlmIChOSUxQIChwYXJlbnQpKQorCS8qIFRoaXMgaXMgdGhlIGNydXggb2Yg dGhlIG9sZCBtYWtlX3BhcmVudF93aW5kb3cuICAqLworCXsKKwkgIHAgPSBhbGxvY2F0ZV93 aW5kb3cgKCk7CisJICBYU0VUV0lORE9XIChwYXJlbnQsIHApOworCSAgcC0+c2VxdWVuY2Vf bnVtYmVyID0gKytzZXF1ZW5jZV9udW1iZXI7CisJICB3c2V0X2ZyYW1lIChwLCBmcmFtZSk7 CisJfQorICAgICAgZWxzZQorCS8qIFBhY2lmeSBHQ0MuICAqLworCXAgPSBYV0lORE9XIChw YXJlbnQpOworCisgICAgICByZXBsYWNlX3dpbmRvdyAob2xkLCBwYXJlbnQsIHRydWUpOwor ICAgICAgd3NldF9uZXh0IChvLCBRbmlsKTsKKyAgICAgIHdzZXRfcHJldiAobywgUW5pbCk7 CisgICAgICB3c2V0X3BhcmVudCAobywgcGFyZW50KTsKKyAgICAgIHdzZXRfY29tYmluYXRp b24gKHAsIGhvcmZsYWcsIG9sZCk7CisKICAgICAgIGlmIChFUSAoVndpbmRvd19jb21iaW5h dGlvbl9saW1pdCwgUXQpKQogCS8qIFN0b3JlIHQgaW4gdGhlIG5ldyBwYXJlbnQncyBjb21i aW5hdGlvbl9saW1pdCBzbG90IHRvIGF2b2lkCiAJICAgdGhhdCBpdHMgY2hpbGRyZW4gZ2V0 IG1lcmdlZCBpbnRvIGFub3RoZXIgd2luZG93LiAgKi8KQEAgLTUxOTUsNyArNTIzNiwxMiBA QCBERUZVTiAoInNwbGl0LXdpbmRvdy1pbnRlcm5hbCIsIEZzcGxpdF93aW5kb3dfaW50ZXJu YWwsIFNzcGxpdF93aW5kb3dfaW50ZXJuYWwsCiAgICAgcCA9IFhXSU5ET1cgKG8tPnBhcmVu dCk7CiAKICAgZnNldF9yZWRpc3BsYXkgKGYpOwotICBuZXcgPSBtYWtlX3dpbmRvdyAoKTsK KworICBpZiAoZGVhZCkKKyAgICBuZXcgPSByZWZlcjsKKyAgZWxzZQorICAgIG5ldyA9IG1h a2Vfd2luZG93ICgpOworCiAgIG4gPSBYV0lORE9XIChuZXcpOwogICB3c2V0X2ZyYW1lIChu LCBmcmFtZSk7CiAgIHdzZXRfcGFyZW50IChuLCBvLT5wYXJlbnQpOwpAQCAtNTIyMiwxNiAr NTI2OCwxOSBAQCBERUZVTiAoInNwbGl0LXdpbmRvdy1pbnRlcm5hbCIsIEZzcGxpdF93aW5k b3dfaW50ZXJuYWwsIFNzcGxpdF93aW5kb3dfaW50ZXJuYWwsCiAgIG4tPndpbmRvd19lbmRf dmFsaWQgPSBmYWxzZTsKICAgbi0+bGFzdF9jdXJzb3JfdnBvcyA9IDA7CiAKLSAgLyogR2V0 IHNwZWNpYWwgZ2VvbWV0cnkgc2V0dGluZ3MgZnJvbSByZWZlcmVuY2Ugd2luZG93LiAgKi8K LSAgbi0+bGVmdF9tYXJnaW5fY29scyA9IHItPmxlZnRfbWFyZ2luX2NvbHM7Ci0gIG4tPnJp Z2h0X21hcmdpbl9jb2xzID0gci0+cmlnaHRfbWFyZ2luX2NvbHM7Ci0gIG4tPmxlZnRfZnJp bmdlX3dpZHRoID0gci0+bGVmdF9mcmluZ2Vfd2lkdGg7Ci0gIG4tPnJpZ2h0X2ZyaW5nZV93 aWR0aCA9IHItPnJpZ2h0X2ZyaW5nZV93aWR0aDsKLSAgbi0+ZnJpbmdlc19vdXRzaWRlX21h cmdpbnMgPSByLT5mcmluZ2VzX291dHNpZGVfbWFyZ2luczsKLSAgbi0+c2Nyb2xsX2Jhcl93 aWR0aCA9IHItPnNjcm9sbF9iYXJfd2lkdGg7Ci0gIG4tPnNjcm9sbF9iYXJfaGVpZ2h0ID0g ci0+c2Nyb2xsX2Jhcl9oZWlnaHQ7Ci0gIHdzZXRfdmVydGljYWxfc2Nyb2xsX2Jhcl90eXBl IChuLCByLT52ZXJ0aWNhbF9zY3JvbGxfYmFyX3R5cGUpOwotICB3c2V0X2hvcml6b250YWxf c2Nyb2xsX2Jhcl90eXBlIChuLCByLT5ob3Jpem9udGFsX3Njcm9sbF9iYXJfdHlwZSk7Cisg IGlmICghZGVhZCkKKyAgICB7CisgICAgICAvKiBHZXQgc3BlY2lhbCBnZW9tZXRyeSBzZXR0 aW5ncyBmcm9tIHJlZmVyZW5jZSB3aW5kb3cuICAqLworICAgICAgbi0+bGVmdF9tYXJnaW5f Y29scyA9IHItPmxlZnRfbWFyZ2luX2NvbHM7CisgICAgICBuLT5yaWdodF9tYXJnaW5fY29s cyA9IHItPnJpZ2h0X21hcmdpbl9jb2xzOworICAgICAgbi0+bGVmdF9mcmluZ2Vfd2lkdGgg PSByLT5sZWZ0X2ZyaW5nZV93aWR0aDsKKyAgICAgIG4tPnJpZ2h0X2ZyaW5nZV93aWR0aCA9 IHItPnJpZ2h0X2ZyaW5nZV93aWR0aDsKKyAgICAgIG4tPmZyaW5nZXNfb3V0c2lkZV9tYXJn aW5zID0gci0+ZnJpbmdlc19vdXRzaWRlX21hcmdpbnM7CisgICAgICBuLT5zY3JvbGxfYmFy X3dpZHRoID0gci0+c2Nyb2xsX2Jhcl93aWR0aDsKKyAgICAgIG4tPnNjcm9sbF9iYXJfaGVp Z2h0ID0gci0+c2Nyb2xsX2Jhcl9oZWlnaHQ7CisgICAgICB3c2V0X3ZlcnRpY2FsX3Njcm9s bF9iYXJfdHlwZSAobiwgci0+dmVydGljYWxfc2Nyb2xsX2Jhcl90eXBlKTsKKyAgICAgIHdz ZXRfaG9yaXpvbnRhbF9zY3JvbGxfYmFyX3R5cGUgKG4sIHItPmhvcml6b250YWxfc2Nyb2xs X2Jhcl90eXBlKTsKKyAgICB9CiAKICAgLyogRGlyZWN0bHkgYXNzaWduIG9ydGhvZ29uYWwg Y29vcmRpbmF0ZXMgYW5kIHNpemVzLiAgKi8KICAgaWYgKGhvcmZsYWcpCkBAIC01MjYwLDYg KzUzMDksNyBAQCBERUZVTiAoInNwbGl0LXdpbmRvdy1pbnRlcm5hbCIsIEZzcGxpdF93aW5k b3dfaW50ZXJuYWwsIFNzcGxpdF93aW5kb3dfaW50ZXJuYWwsCiAJc3VtID0gc3VtICsgWEZJ WE5VTSAoYy0+bmV3X3RvdGFsKTsKICAgICAgIGMgPSBOSUxQIChjLT5uZXh0KSA/IDAgOiBY V0lORE9XIChjLT5uZXh0KTsKICAgICB9CisKICAgd3NldF9uZXdfdG90YWwgKG4sIG1ha2Vf Zml4bnVtICgoaG9yZmxhZwogCQkJCSAgID8gcC0+dG90YWxfY29scwogCQkJCSAgIDogcC0+ dG90YWxfbGluZXMpCkBAIC01MjY3LDEwICs1MzE3LDMwIEBAIERFRlVOICgic3BsaXQtd2lu ZG93LWludGVybmFsIiwgRnNwbGl0X3dpbmRvd19pbnRlcm5hbCwgU3NwbGl0X3dpbmRvd19p bnRlcm5hbCwKICAgd3NldF9uZXdfbm9ybWFsIChuLCBub3JtYWxfc2l6ZSk7CiAKICAgYmxv Y2tfaW5wdXQgKCk7CisKKyAgaWYgKGRlYWQpCisgICAgeworICAgICAgLyogR2V0IGRlYWQg d2luZG93IGJhY2sgaXRzIG9sZCBidWZmZXIgYW5kIG1hcmtlcnMuICAqLworICAgICAgd3Nl dF9idWZmZXIgKG4sIG4tPm9sZF9idWZmZXIpOworICAgICAgc2V0X21hcmtlcl9yZXN0cmlj dGVkCisJKG4tPnN0YXJ0LCBtYWtlX2ZpeG51bSAoWE1BUktFUiAobi0+c3RhcnQpLT5jaGFy cG9zKSwgbi0+Y29udGVudHMpOworICAgICAgc2V0X21hcmtlcl9yZXN0cmljdGVkCisJKG4t PnBvaW50bSwgbWFrZV9maXhudW0gKFhNQVJLRVIgKG4tPnBvaW50bSktPmNoYXJwb3MpLCBu LT5jb250ZW50cyk7CisgICAgICBzZXRfbWFya2VyX3Jlc3RyaWN0ZWQKKwkobi0+b2xkX3Bv aW50bSwgbWFrZV9maXhudW0gKFhNQVJLRVIgKG4tPm9sZF9wb2ludG0pLT5jaGFycG9zKSwK Kwkgbi0+Y29udGVudHMpOworCisgICAgICBWd2luZG93X2xpc3QgPSBRbmlsOworICAgICAg LyogUmVtb3ZlIHdpbmRvdyBmcm9tIHRoZSB0YWJsZSBvZiBkZWFkIHdpbmRvd3MuICAqLwor ICAgICAgRnJlbWhhc2ggKG1ha2VfZml4bnVtIChuLT5zZXF1ZW5jZV9udW1iZXIpLAorCQl3 aW5kb3dfZGVhZF93aW5kb3dzX3RhYmxlKTsKKyAgICB9CisKICAgd2luZG93X3Jlc2l6ZV9h cHBseSAocCwgaG9yZmxhZyk7CiAgIGFkanVzdF9mcmFtZV9nbHlwaHMgKGYpOwotICAvKiBT ZXQgYnVmZmVyIG9mIE5FVyB0byBidWZmZXIgb2YgcmVmZXJlbmNlIHdpbmRvdy4gICovCisK ICAgc2V0X3dpbmRvd19idWZmZXIgKG5ldywgci0+Y29udGVudHMsIHRydWUsIHRydWUpOwor CiAgIEZSQU1FX1dJTkRPV19DSEFOR0UgKGYpID0gdHJ1ZTsKICAgdW5ibG9ja19pbnB1dCAo KTsKIApAQCAtNTM2OCw2ICs1NDM4LDggQEAgREVGVU4gKCJkZWxldGUtd2luZG93LWludGVy bmFsIiwgRmRlbGV0ZV93aW5kb3dfaW50ZXJuYWwsIFNkZWxldGVfd2luZG93X2ludGVybmEK IAl9CiAgICAgICBlbHNlCiAJeworCSAgLyogU3RvcmUgV0lORE9XJ3MgYnVmZmVyIGluIG9s ZF9idWZmZXIuICAqLworCSAgd3NldF9vbGRfYnVmZmVyICh3LCB3LT5jb250ZW50cyk7CiAJ ICB1bnNob3dfYnVmZmVyICh3KTsKIAkgIHVuY2hhaW5fbWFya2VyIChYTUFSS0VSICh3LT5w b2ludG0pKTsKIAkgIHVuY2hhaW5fbWFya2VyIChYTUFSS0VSICh3LT5vbGRfcG9pbnRtKSk7 CkBAIC03NzEyLDYgKzc3ODQsOCBAQCBkZWxldGVfYWxsX2NoaWxkX3dpbmRvd3MgKExpc3Bf T2JqZWN0IHdpbmRvdykKICAgICB9CiAgIGVsc2UgaWYgKEJVRkZFUlAgKHctPmNvbnRlbnRz KSkKICAgICB7CisgICAgICAvKiBTdG9yZSBXSU5ET1cncyBidWZmZXIgaW4gb2xkX2J1ZmZl ci4gICovCisgICAgICB3c2V0X29sZF9idWZmZXIgKHcsIHctPmNvbnRlbnRzKTsKICAgICAg IHVuc2hvd19idWZmZXIgKHcpOwogICAgICAgdW5jaGFpbl9tYXJrZXIgKFhNQVJLRVIgKHct PnBvaW50bSkpOwogICAgICAgdW5jaGFpbl9tYXJrZXIgKFhNQVJLRVIgKHctPm9sZF9wb2lu dG0pKTsKQEAgLTkwNjQsMTIgKzkxMzgsOSBAQCBzeW1zX29mX3dpbmRvdyAodm9pZCkKICAg ICBkb2M6IC8qIEhhc2ggdGFibGUgb2YgZGVhZCB3aW5kb3dzLgogRWFjaCBlbnRyeSBpbiB0 aGlzIHRhYmxlIG1hcHMgYSB3aW5kb3cgbnVtYmVyIHRvIGEgd2luZG93IG9iamVjdC4KIEVu dHJpZXMgYXJlIGFkZGVkIGJ5IGBkZWxldGUtd2luZG93LWludGVybmFsJyBhbmQgYXJlIHJl bW92ZWQgYnkgdGhlCi1nYXJiYWdlIGNvbGxlY3Rvci4KLQotVGhpcyB0YWJsZSBpcyBtYWlu dGFpbmVkIGJ5IGNvZGUgaW4gd2luZG93LmMgYW5kIGlzIG1hZGUgdmlzaWJsZSBpbgotRWxp c3AgZm9yIHRlc3RpbmcgcHVycG9zZXMgb25seS4gICovKTsKK2dhcmJhZ2UgY29sbGVjdG9y LiAgKi8pOwogICB3aW5kb3dfZGVhZF93aW5kb3dzX3RhYmxlCi0gICAgPSBDQUxMTiAoRm1h a2VfaGFzaF90YWJsZSwgUUN3ZWFrbmVzcywgUXQpOworICAgID0gQ0FMTE4gKEZtYWtlX2hh c2hfdGFibGUsIFFDd2Vha25lc3MsIFF2YWx1ZSk7CiAKICAgZGVmc3ViciAoJlNzZWxlY3Rl ZF93aW5kb3cpOwogICBkZWZzdWJyICgmU29sZF9zZWxlY3RlZF93aW5kb3cpOwo= --------------q56a5wRUO555gVTqqllNwuc3--