<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>38129</bug_id>
          
          <creation_ts>2010-04-26 10:28:42 -0700</creation_ts>
          <short_desc>Wrong target for contextmenu events</short_desc>
          <delta_ts>2010-07-03 09:31:57 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>DOM</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>PC</rep_platform>
          <op_sys>Windows 7</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>GoogleBug, HasReduction</keywords>
          <priority>P2</priority>
          <bug_severity>Major</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Erik Arvidsson">arv</reporter>
          <assigned_to name="Erik Arvidsson">arv</assigned_to>
          <cc>abarth</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dglazkov</cc>
    
    <cc>fishd</cc>
    
    <cc>ojan</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>217182</commentid>
    <comment_count>0</comment_count>
      <attachid>54316</attachid>
    <who name="Erik Arvidsson">arv</who>
    <bug_when>2010-04-26 10:28:42 -0700</bug_when>
    <thetext>Created attachment 54316
Test case

On Windows, the user can press the context menu key on their keyboard. This dispatches a MouseEvent of type &apos;contextmenu&apos;. The reason that this is a MouseEvent instead of KeyEvent is mostly a legacy issue. The problem in WebKit is that we try to find the location where the lower left corner of the element is located and we dispatch and use that location in dispatching a mouse event. This causes the target of the event to be the element at that point as well as the element at that point gets painted as it is :active/:hover. The correct behavior is to use the focusedNode and we should paint the focusedNode as active.

The solution is probably to split EventHandler::sendContextMenuEvent into two cases, one for mouse events and one for key events. Reusing the mouse event code path for key events just leads to too much trouble.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>222042</commentid>
    <comment_count>1</comment_count>
    <who name="Erik Arvidsson">arv</who>
    <bug_when>2010-05-06 16:23:54 -0700</bug_when>
    <thetext>I got a solution for this that solves the invalid target and the invalid focus/active artifact but the position of the context menu is still wrong. I need to find out the size of the clipped rect.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>240809</commentid>
    <comment_count>2</comment_count>
    <who name="Erik Arvidsson">arv</who>
    <bug_when>2010-06-21 12:25:56 -0700</bug_when>
    <thetext>I have a working fix for this. The thing holding me back has been that the code is only for Chromium on Windows. No other port seems to support the context menu key. Another problem is that DRT does not support this so it would end up being a manual test only.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>243826</commentid>
    <comment_count>3</comment_count>
      <attachid>59925</attachid>
    <who name="Erik Arvidsson">arv</who>
    <bug_when>2010-06-28 12:43:38 -0700</bug_when>
    <thetext>Created attachment 59925
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>243827</commentid>
    <comment_count>4</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-06-28 12:46:10 -0700</bug_when>
    <thetext>Attachment 59925 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;, &apos;--no-squash&apos;]&quot; exit_code: 1
WebCore/page/EventHandler.cpp:2026:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
WebCore/page/EventHandler.cpp:2027:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
WebCore/page/EventHandler.cpp:2028:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
WebCore/page/EventHandler.cpp:2031:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
WebCore/page/EventHandler.cpp:2032:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
WebCore/page/EventHandler.cpp:2035:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
WebCore/page/EventHandler.cpp:2036:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
WebCore/page/EventHandler.cpp:2037:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
WebCore/page/EventHandler.cpp:2038:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
WebCore/page/EventHandler.cpp:2039:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
WebCore/page/EventHandler.cpp:2040:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
WebCore/page/EventHandler.cpp:2042:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Total errors found: 12 in 6 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>243907</commentid>
    <comment_count>5</comment_count>
      <attachid>59941</attachid>
    <who name="Erik Arvidsson">arv</who>
    <bug_when>2010-06-28 14:32:31 -0700</bug_when>
    <thetext>Created attachment 59941
Patch

Fixed style issues</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>245613</commentid>
    <comment_count>6</comment_count>
      <attachid>59941</attachid>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2010-07-01 15:48:07 -0700</bug_when>
    <thetext>Comment on attachment 59941
Patch

WebCore/manual-tests/chromium/contextmenu-key.html:76
 +      function cs(el)
Nit: this function should not be indented.

WebCore/ChangeLog:14
 +          Use manual test since DRT does not handle context menu keys.
Can you file a bug for adding this?

WebCore/page/EventHandler.cpp:2027
 +      FrameView* v = m_frame-&gt;view();
Doesn&apos;t look like you use v anywhere. Also, do you need to null-check document?

WebKit/chromium/ChangeLog:10
 +          clipped rect to determin eht position of the menu.
Typos: determin eht

WebCore/page/EventHandler.cpp:2024
 +  bool EventHandler::sendContextMenuEventForKey(const PlatformMouseEvent&amp; event)
It&apos;s weird to me that this takes a mouse event. I think this should take a PlatformKeyEvent and then dispatch a mouse event below.

WebCore/page/EventHandler.cpp:2042
 +      return dispatchMouseEvent(eventNames().contextmenuEvent, targetNode, true, 0, event, false);
Can you add a comment here that we need to dispatch a mouse event for web compat?

WebKit/chromium/src/WebViewImpl.cpp: 
 +      coords = location + IntSize(0, -1);
This causes us to diverge from the WebKit/win implementation. Is that correct?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>246114</commentid>
    <comment_count>7</comment_count>
      <attachid>60410</attachid>
    <who name="Erik Arvidsson">arv</who>
    <bug_when>2010-07-02 14:50:51 -0700</bug_when>
    <thetext>Created attachment 60410
Patch

Moved most of the logic into EventHandler::sendContextMenuEventForKey and updated WebKit/win/ and WebKit/chromium to use that so that they share code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>246140</commentid>
    <comment_count>8</comment_count>
      <attachid>60410</attachid>
    <who name="Ojan Vafai">ojan</who>
    <bug_when>2010-07-02 16:14:58 -0700</bug_when>
    <thetext>Comment on attachment 60410
Patch

Nice cleanup. A few minor things. Feel free to commit after that.
---------------------------------
http://wkrietveld.appspot.com/38129/diff/2001/3001
File WebCore/ChangeLog (right):

http://wkrietveld.appspot.com/38129/diff/2001/3001#newcode12
WebCore/ChangeLog:12: +        For the keboard case We now use the focused node as the target for the
s/We/we

http://wkrietveld.appspot.com/38129/diff/2001/3003
File WebCore/page/EventHandler.cpp (right):

http://wkrietveld.appspot.com/38129/diff/2001/3003#newcode2019
WebCore/page/EventHandler.cpp:2019: swallowEvent = dispatchMouseEvent(eventNames().contextmenuEvent, mev.targetNode(), true, 0, event, false);
Does this match the behavior of other Windows browsers? If so, that&apos;s fine.

http://wkrietveld.appspot.com/38129/diff/2001/3006
File WebKit/chromium/src/WebViewImpl.cpp (right):

http://wkrietveld.appspot.com/38129/diff/2001/3006#newcode668
WebKit/chromium/src/WebViewImpl.cpp:668: FrameView* view = m_page-&gt;mainFrame()-&gt;view();
Do you need to null-check view here?

http://wkrietveld.appspot.com/38129/diff/2001/3006#newcode672
WebKit/chromium/src/WebViewImpl.cpp:672: Frame* focusedFrame = page()-&gt;focusController()-&gt;focusedOrMainFrame();
Nit: This should move down to be before line 683. Since it&apos;s not used till then.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>246155</commentid>
    <comment_count>9</comment_count>
      <attachid>60410</attachid>
    <who name="Erik Arvidsson">arv</who>
    <bug_when>2010-07-02 16:44:40 -0700</bug_when>
    <thetext>Comment on attachment 60410
Patch

Thanks for the reviews.
---------------------------------
http://wkrietveld.appspot.com/38129/diff/2001/3001
File WebCore/ChangeLog (right):

http://wkrietveld.appspot.com/38129/diff/2001/3001#newcode12
WebCore/ChangeLog:12: +        For the keboard case We now use the focused node as the target for the
On 2010/07/02 23:14:56, ojan wrote:
&gt; s/We/we

Done.

http://wkrietveld.appspot.com/38129/diff/2001/3003
File WebCore/page/EventHandler.cpp (right):

http://wkrietveld.appspot.com/38129/diff/2001/3003#newcode2019
WebCore/page/EventHandler.cpp:2019: swallowEvent = dispatchMouseEvent(eventNames().contextmenuEvent, mev.targetNode(), true, 0, event, false);
On 2010/07/02 23:14:56, ojan wrote:
&gt; Does this match the behavior of other Windows browsers? If so, that&apos;s fine.

Yes. I tried it on Firefox and IE.

http://wkrietveld.appspot.com/38129/diff/2001/3006
File WebKit/chromium/src/WebViewImpl.cpp (right):

http://wkrietveld.appspot.com/38129/diff/2001/3006#newcode668
WebKit/chromium/src/WebViewImpl.cpp:668: FrameView* view = m_page-&gt;mainFrame()-&gt;view();
On 2010/07/02 23:14:56, ojan wrote:
&gt; Do you need to null-check view here?

Removed here and in WebKit/win/

http://wkrietveld.appspot.com/38129/diff/2001/3006#newcode672
WebKit/chromium/src/WebViewImpl.cpp:672: Frame* focusedFrame = page()-&gt;focusController()-&gt;focusedOrMainFrame();
On 2010/07/02 23:14:56, ojan wrote:
&gt; Nit: This should move down to be before line 683. Since it&apos;s not used till then.

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>246161</commentid>
    <comment_count>10</comment_count>
      <attachid>60420</attachid>
    <who name="Erik Arvidsson">arv</who>
    <bug_when>2010-07-02 16:56:06 -0700</bug_when>
    <thetext>Created attachment 60420
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>246235</commentid>
    <comment_count>11</comment_count>
      <attachid>60420</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-07-02 21:41:30 -0700</bug_when>
    <thetext>Comment on attachment 60420
Patch for landing

Rejecting patch 60420 from commit-queue.

Unexpected failure when processing patch!  Please file a bug against webkit-patch.
Failed to run &quot;[&apos;./WebKitTools/Scripts/webkit-patch&apos;, &apos;--status-host=webkit-commit-queue.appspot.com&apos;, &apos;land-attachment&apos;, &apos;--force-clean&apos;, &apos;--build&apos;, &apos;--non-interactive&apos;, &apos;--ignore-builders&apos;, &apos;--build-style=both&apos;, &apos;--quiet&apos;, 60420, &apos;--test&apos;, &apos;--parent-command=commit-queue&apos;, &apos;--no-update&apos;]&quot; exit_code: 1
Last 500 characters of output:
?id=60420&amp;action=edit
Fetching: https://bugs.webkit.org/show_bug.cgi?id=38129&amp;ctype=xml
Processing 1 patch from 1 bug.
Cleaning working directory
Processing patch 60420 from bug 38129.
ojan@chromium.org found in /Users/eseidel/Projects/CommitQueue/WebCore/ChangeLog does not appear to be a valid reviewer according to committers.py.
ERROR: /Users/eseidel/Projects/CommitQueue/WebCore/ChangeLog neither lists a valid reviewer nor contains the string &quot;Unreviewed&quot; or &quot;Rubber stamp&quot; (case insensitive).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>246299</commentid>
    <comment_count>12</comment_count>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-07-03 06:42:22 -0700</bug_when>
    <thetext>+ Reviewed by ojan@chromium.org.

Should be &quot;Reviewed by Ojan Vafai&quot;.  If you posted the patch with &quot;webkit-patch land-safely&quot;, the tool will fill in the reviewer&apos;s name for you if the bug has an R+&apos;ed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>246300</commentid>
    <comment_count>13</comment_count>
      <attachid>60449</attachid>
    <who name="Adam Barth">abarth</who>
    <bug_when>2010-07-03 06:47:56 -0700</bug_when>
    <thetext>Created attachment 60449
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>246301</commentid>
    <comment_count>14</comment_count>
      <attachid>60449</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-07-03 07:08:29 -0700</bug_when>
    <thetext>Comment on attachment 60449
Patch for landing

Clearing flags on attachment: 60449

Committed r62447: &lt;http://trac.webkit.org/changeset/62447&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>246302</commentid>
    <comment_count>15</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-07-03 07:08:35 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>246322</commentid>
    <comment_count>16</comment_count>
    <who name="Erik Arvidsson">arv</who>
    <bug_when>2010-07-03 09:31:57 -0700</bug_when>
    <thetext>Thanks Adam</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>54316</attachid>
            <date>2010-04-26 10:28:42 -0700</date>
            <delta_ts>2010-04-26 10:28:42 -0700</delta_ts>
            <desc>Test case</desc>
            <filename>contextmenu-key.html</filename>
            <type>text/html</type>
            <size>1573</size>
            <attacher name="Erik Arvidsson">arv</attacher>
            
              <data encoding="base64">PCFET0NUWVBFIGh0bWw+CjxodG1sPgo8aGVhZD4KPHRpdGxlPjwvdGl0bGU+CjxzdHlsZT4KCiNv
dXRlciB7CiAgb3ZlcmZsb3c6IGF1dG87CiAgd2lkdGg6IDIwMHB4OwogIGhlaWdodDogMjAwcHg7
Cn0KCiNpbm5lciB7CiAgcG9zaXRpb246IHJlbGF0aXZlOwogIGhlaWdodDogNDAwcHg7Cn0KCiNp
bm5lcjpmb2N1cyB7CiAgYmFja2dyb3VuZC1jb2xvcjogbGlnaHRibHVlOwp9CgojaW5uZXI6YWN0
aXZlIHsKICBiYWNrZ3JvdW5kLWNvbG9yOiBibHVlOwp9CgojaCwgI2gyIHsKICBiYWNrZ3JvdW5k
OiByZ2JhKDI1NSwgMjU1LCAyNTUsIDApOwp9CgojaCB7CiAgcG9zaXRpb246IGFic29sdXRlOwog
IGhlaWdodDogMjAwcHg7CiAgd2lkdGg6IDIwMHB4Owp9CgojaDIgewogIHBvc2l0aW9uOiBhYnNv
bHV0ZTsKICB0b3A6IDIwMHB4OwogIGhlaWdodDogMjAwcHg7CiAgd2lkdGg6IDEwMCU7Cn0KCiNo
OmhvdmVyLAojaDI6aG92ZXIgewogIGJhY2tncm91bmQ6IHBpbms7Cn0KCiNoOmFjdGl2ZSwKI2gy
OmFjdGl2ZSB7CiAgYmFja2dyb3VuZDogcmVkOwp9CgpwcmUgewogIHBvc2l0aW9uOiBhYnNvbHV0
ZTsKICBsZWZ0OiAyNTBweDsKICB0b3A6IDUwcHg7Cn0KCjwvc3R5bGU+CjwvaGVhZD4KPGJvZHk+
Cgo8cD5DbGljayB0aGUgZGl2IGJlbG93IGFuZCBwcmVzcyB0aGUgY29udGV4dCBtZW51IGtleSBv
biB5b3VyIGtleWJvYXJkIChTaGlmdCtGMTAgYWxzbyB3b3Jrcyk8L3A+Cgo8ZGl2IGlkPW91dGVy
PgogIDxkaXYgaWQ9aW5uZXIgdGFiaW5kZXg9MD4KICAgIDxkaXYgaWQ9aDI+PC9kaXY+CiAgPC9k
aXY+CjwvZGl2PgoKPGRpdiBpZD1oPjwvZGl2PgoKPHByZT48L3ByZT4KCjxzY3JpcHQ+Cgpkb2N1
bWVudC5hZGRFdmVudExpc3RlbmVyKCdjb250ZXh0bWVudScsIGZ1bmN0aW9uKGUpIHsKICB2YXIg
aW5uZXIgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjaW5uZXInKTsKICB2YXIgb3V0ZXIgPSBk
b2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjb3V0ZXInKTsKICB2YXIgaCA9IGRvY3VtZW50LnF1ZXJ5
U2VsZWN0b3IoJyNoJyk7CiAgdmFyIGgyID0gZG9jdW1lbnQucXVlcnlTZWxlY3RvcignI2gyJyk7
CiAgdmFyIHJlc3VsdCA9IFtdOwoKICByZXN1bHQucHVzaChlLnRhcmdldCA9PSBkb2N1bWVudC5x
dWVyeVNlbGVjdG9yKCcjaW5uZXInKSk7CiAgcmVzdWx0LnB1c2goZ2V0Q29tcHV0ZWRTdHlsZShp
bm5lciwgJycpLmJhY2tncm91bmRDb2xvciA9PSAncmdiKDAsIDAsIDI1NSknKTsKICByZXN1bHQu
cHVzaChnZXRDb21wdXRlZFN0eWxlKGgsICcnKS5iYWNrZ3JvdW5kQ29sb3IgPT0gJ3JnYmEoMjU1
LCAyNTUsIDI1NSwgMCknKTsKICByZXN1bHQucHVzaChnZXRDb21wdXRlZFN0eWxlKGgyLCAnJyku
YmFja2dyb3VuZENvbG9yID09ICdyZ2JhKDI1NSwgMjU1LCAyNTUsIDApJyk7CgogIGRvY3VtZW50
LnF1ZXJ5U2VsZWN0b3IoJ3ByZScpLmlubmVySFRNTCA9IHJlc3VsdC5tYXAoZnVuY3Rpb24oYikg
ewogICAgcmV0dXJuIGIgPyAnUEFTUycgOiAnRkFJTCc7CiAgfSkuam9pbignXG4nKTsKfSwgZmFs
c2UpOwoKPC9zY3JpcHQ+CgoKPC9ib2R5Pgo8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>59925</attachid>
            <date>2010-06-28 12:43:38 -0700</date>
            <delta_ts>2010-06-28 14:32:31 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>context-menu.patch</filename>
            <type>text/plain</type>
            <size>8945</size>
            <attacher name="Erik Arvidsson">arv</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2MjAyNCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjQgQEAKKzIwMTAtMDYtMjggIEVyaWsgQXJ2aWRzc29uICA8YXJ2QGNocm9taXVt
Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBb
Y2hyb21pdW1dIEZpeCBpc3N1ZSB3aGVyZSBhIGNvbnRleHRtZW51IGV2ZW50IHdhcyByZXBvcnRp
bmcgdGhlIHdyb25nCisgICAgICAgIHRhcmdldCBpZiB0aGUgY29udGV4dCBtZW51IHdhcyBzaG93
biBkdWUgdG8gcHJlc3NpbmcgdGhlIGNvbnRleHQgbWVudQorICAgICAgICBrZXkgKG9yIFNoaWZ0
K0YxMCkuCisgICAgICAgIAorICAgICAgICBTcGxpdCBzZW5kQ29udGV4dE1lbnVGb3JFdmVudCBp
bnRvIG9uZSBjYXNlIGZvciBrZXlib2FyZCBldmVudHMgYW5kIHVzZQorICAgICAgICB0aGF0IHdo
ZW4gdGhlIGNvbnRleHRtZW51IGV2ZW50IHNob3VsZCBiZSBkaXNwYXRjaGVkIGR1ZSB0byBhIGtl
eXByZXNzLgorICAgICAgICAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTM4MTI5CisKKyAgICAgICAgVXNlIG1hbnVhbCB0ZXN0IHNpbmNlIERSVCBkb2Vz
IG5vdCBoYW5kbGUgY29udGV4dCBtZW51IGtleXMuCisKKyAgICAgICAgKiBtYW51YWwtdGVzdHMv
Y2hyb21pdW0vY29udGV4dG1lbnUta2V5Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIHBhZ2UvRXZl
bnRIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6c2VuZENvbnRl
eHRNZW51RXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpzZW5kQ29udGV4
dE1lbnVFdmVudEZvcktleSk6CisgICAgICAgICogcGFnZS9FdmVudEhhbmRsZXIuaDoKKwogMjAx
MC0wNi0yOCAgS2VubmV0aCBSdXNzZWxsICA8a2JyQGdvb2dsZS5jb20+CiAKICAgICAgICAgUmV2
aWV3ZWQgYnkgRGltaXRyaSBHbGF6a292LgpJbmRleDogV2ViQ29yZS9tYW51YWwtdGVzdHMvY2hy
b21pdW0vY29udGV4dG1lbnUta2V5Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9tYW51YWwt
dGVzdHMvY2hyb21pdW0vY29udGV4dG1lbnUta2V5Lmh0bWwJKHJldmlzaW9uIDApCisrKyBXZWJD
b3JlL21hbnVhbC10ZXN0cy9jaHJvbWl1bS9jb250ZXh0bWVudS1rZXkuaHRtbAkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSwxMDkgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzx0
aXRsZT48L3RpdGxlPgorPHN0eWxlPgorCisjb3V0ZXIgeworICBvdmVyZmxvdzogYXV0bzsKKyAg
d2lkdGg6IDIwMHB4OworICBoZWlnaHQ6IDIwMHB4OworfQorCisjaW5uZXIgeworICBwb3NpdGlv
bjogcmVsYXRpdmU7CisgIGhlaWdodDogNDAwcHg7Cit9CisKKyNpbm5lcjpmb2N1cyB7CisgIGJh
Y2tncm91bmQtY29sb3I6IGxpZ2h0Ymx1ZTsKK30KKworI2lubmVyOmFjdGl2ZSB7CisgIGJhY2tn
cm91bmQtY29sb3I6IGJsdWU7Cit9CisKKyNoLCAjaDIgeworICBiYWNrZ3JvdW5kOiByZ2JhKDI1
NSwgMjU1LCAyNTUsIDApOworfQorCisjaCB7CisgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgaGVp
Z2h0OiAyMDBweDsKKyAgd2lkdGg6IDIwMHB4OworfQorCisjaDIgeworICBwb3NpdGlvbjogYWJz
b2x1dGU7CisgIHRvcDogMjAwcHg7CisgIGhlaWdodDogMjAwcHg7CisgIHdpZHRoOiAxMDAlOwor
fQorCisjaDpob3ZlciwKKyNoMjpob3ZlciB7CisgIGJhY2tncm91bmQ6IHBpbms7Cit9CisKKyNo
OmFjdGl2ZSwKKyNoMjphY3RpdmUgeworICBiYWNrZ3JvdW5kOiByZWQ7Cit9CisKK3ByZSB7Cisg
IHBvc2l0aW9uOiBhYnNvbHV0ZTsKKyAgbGVmdDogMjUwcHg7CisgIHRvcDogNTBweDsKK30KKwor
PC9zdHlsZT4KKzwvaGVhZD4KKzxib2R5PgorCis8cD5DbGljayB0aGUgZGl2IGJlbG93IGFuZCBw
cmVzcyB0aGUgY29udGV4dCBtZW51IGtleSBvbiB5b3VyIGtleWJvYXJkIChTaGlmdCtGMTAgYWxz
byB3b3Jrcyk8L3A+CisKKzxkaXYgaWQ9b3V0ZXI+CisgIDxkaXYgaWQ9aW5uZXIgdGFiaW5kZXg9
MD4KKyAgICA8ZGl2IGlkPWgyPjwvZGl2PgorICA8L2Rpdj4KKzwvZGl2PgorCis8ZGl2IGlkPWg+
PC9kaXY+CisKKzxwcmU+PC9wcmU+CisKKzxzY3JpcHQ+CisKK2Z1bmN0aW9uIGNzKGVsKSB7Cisg
IGlmICh3aW5kb3cuZ2V0Q29tcHV0ZWRTdHlsZSkKKyAgICByZXR1cm4gd2luZG93LmdldENvbXB1
dGVkU3R5bGUoZWwsICcnKTsKKyAgcmV0dXJuIGVsLmN1cnJlbnRTdHlsZTsKK30KKworZG9jdW1l
bnQuYWRkRXZlbnRMaXN0ZW5lcignY29udGV4dG1lbnUnLCBmdW5jdGlvbihlKSB7CisgIHZhciBp
bm5lciA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNpbm5lcicpOworICB2YXIgb3V0ZXIgPSBk
b2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjb3V0ZXInKTsKKyAgdmFyIGggPSBkb2N1bWVudC5xdWVy
eVNlbGVjdG9yKCcjaCcpOworICB2YXIgaDIgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjaDIn
KTsKKyAgdmFyIHJlc3VsdCA9IFtdOworCisgIHJlc3VsdC5wdXNoKGUudGFyZ2V0LCBkb2N1bWVu
dC5xdWVyeVNlbGVjdG9yKCcjaW5uZXInKSk7CisgIHJlc3VsdC5wdXNoKGNzKGlubmVyLCAnJyku
YmFja2dyb3VuZENvbG9yLCAncmdiKDAsIDAsIDI1NSknKTsKKyAgcmVzdWx0LnB1c2goY3MoaCwg
JycpLmJhY2tncm91bmRDb2xvciwgJ3JnYmEoMjU1LCAyNTUsIDI1NSwgMCknKTsKKyAgcmVzdWx0
LnB1c2goY3MoaDIsICcnKS5iYWNrZ3JvdW5kQ29sb3IsICdyZ2JhKDI1NSwgMjU1LCAyNTUsIDAp
Jyk7CisKKyAgdmFyIHMgPSAnJzsKKyAgZm9yICh2YXIgaSA9IDA7IGkgPCByZXN1bHQubGVuZ3Ro
OyBpICs9IDIpIHsKKyAgICBzICs9IHJlc3VsdFtpXSArICcgPT0gJyArIHJlc3VsdFtpICsgMV0g
KyAnIC0gJyArCisgICAgICAgICAocmVzdWx0W2ldID09IHJlc3VsdFtpICsgMV0gPyAnUEFTUycg
OiAnRkFJTCcpICsgJzxicj4nOworICB9CisKKyAgZG9jdW1lbnQucXVlcnlTZWxlY3RvcigncHJl
JykuaW5uZXJIVE1MID0gczsKKyAgcmV0dXJuIHRydWU7Cit9LCBmYWxzZSk7CisKKzwvc2NyaXB0
PgorCisKKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IFdlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIu
Y3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCShyZXZpc2lv
biA2MTc5MSkKKysrIFdlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC0yMDE2LDEwICsyMDE2LDMyIEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpzZW5kQ29udGV4dE1l
bnVFdmVudCgKICAgICB9CiAjZW5kaWYKIAotICAgIHN3YWxsb3dFdmVudCA9IGRpc3BhdGNoTW91
c2VFdmVudChldmVudE5hbWVzKCkuY29udGV4dG1lbnVFdmVudCwgbWV2LnRhcmdldE5vZGUoKSwg
dHJ1ZSwgMCwgZXZlbnQsIHRydWUpOworICAgIHN3YWxsb3dFdmVudCA9IGRpc3BhdGNoTW91c2VF
dmVudChldmVudE5hbWVzKCkuY29udGV4dG1lbnVFdmVudCwgbWV2LnRhcmdldE5vZGUoKSwgdHJ1
ZSwgMCwgZXZlbnQsIGZhbHNlKTsKICAgICAKICAgICByZXR1cm4gc3dhbGxvd0V2ZW50OwogfQor
Citib29sIEV2ZW50SGFuZGxlcjo6c2VuZENvbnRleHRNZW51RXZlbnRGb3JLZXkoY29uc3QgUGxh
dGZvcm1Nb3VzZUV2ZW50JiBldmVudCkKK3sKKyAgRG9jdW1lbnQqIGRvYyA9IG1fZnJhbWUtPmRv
Y3VtZW50KCk7CisgIEZyYW1lVmlldyogdiA9IG1fZnJhbWUtPnZpZXcoKTsKKyAgaWYgKCF2KQor
ICAgIHJldHVybiBmYWxzZTsKKworICBOb2RlKiB0YXJnZXROb2RlID0gZG9jLT5mb2N1c2VkTm9k
ZSgpOworICBpZiAoIXRhcmdldE5vZGUpCisgICAgICB0YXJnZXROb2RlID0gZG9jOworCisgIC8v
IFVzZSB0aGUgZm9jdXNlZCBub2RlIGFzIHRoZSB0YXJnZXQgZm9yIGhvdmVyIGFuZCBhY3RpdmUu
CisgIEhpdFRlc3RSZXN1bHQgcmVzdWx0KGV2ZW50LnBvcygpKTsKKyAgcmVzdWx0LnNldElubmVy
Tm9kZSh0YXJnZXROb2RlKTsKKyAgSGl0VGVzdFJlcXVlc3QgcmVxdWVzdChIaXRUZXN0UmVxdWVz
dDo6QWN0aXZlKTsKKyAgZG9jLT5yZW5kZXJWaWV3KCktPmxheWVyKCktPnVwZGF0ZUhvdmVyQWN0
aXZlU3RhdGUocmVxdWVzdCwgcmVzdWx0KTsKKyAgZG9jLT51cGRhdGVTdHlsZUlmTmVlZGVkKCk7
CisgICAKKyAgcmV0dXJuIGRpc3BhdGNoTW91c2VFdmVudChldmVudE5hbWVzKCkuY29udGV4dG1l
bnVFdmVudCwgdGFyZ2V0Tm9kZSwgdHJ1ZSwgMCwgZXZlbnQsIGZhbHNlKTsKK30KKwogI2VuZGlm
IC8vIEVOQUJMRShDT05URVhUX01FTlVTKQogCiB2b2lkIEV2ZW50SGFuZGxlcjo6c2NoZWR1bGVI
b3ZlclN0YXRlVXBkYXRlKCkKSW5kZXg6IFdlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmgJKHJldmlzaW9uIDYxNzkxKQor
KysgV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNTcsNiAr
MTU3LDcgQEAgcHVibGljOgogCiAjaWYgRU5BQkxFKENPTlRFWFRfTUVOVVMpCiAgICAgYm9vbCBz
ZW5kQ29udGV4dE1lbnVFdmVudChjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmKTsKKyAgICBib29s
IHNlbmRDb250ZXh0TWVudUV2ZW50Rm9yS2V5KGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYpOwog
I2VuZGlmCiAKICAgICB2b2lkIHNldE1vdXNlRG93bk1heVN0YXJ0QXV0b3Njcm9sbCgpIHsgbV9t
b3VzZURvd25NYXlTdGFydEF1dG9zY3JvbGwgPSB0cnVlOyB9CkluZGV4OiBXZWJLaXQvY2hyb21p
dW0vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDYyMDI0KQorKysgV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwkod29ya2luZyBjb3B5
KQpAQCAtMSwzICsxLDE5IEBACisyMDEwLTA2LTI4ICBFcmlrIEFydmlkc3NvbiAgPGFydkBjaHJv
bWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAg
ICAgW2Nocm9taXVtXSBGaXggaXNzdWUgd2hlcmUgYSBjb250ZXh0bWVudSBldmVudCB3YXMgcmVw
b3J0aW5nIHRoZSB3cm9uZworICAgICAgICB0YXJnZXQgaWYgdGhlIGNvbnRleHQgbWVudSB3YXMg
c2hvd24gZHVlIHRvIHByZXNzaW5nIHRoZSBjb250ZXh0IG1lbnUKKyAgICAgICAga2V5IChvciBT
aGlmdCtGMTApLgorICAgICAgICAKKyAgICAgICAgV2Ugbm93IHVzZSB0aGUgZm9jdXNlZCBub2Rl
IGFzIHRoZSB0YXJnZXQgZm9yIHRoZSBldmVudCBhbmQgdXNlIHRoZQorICAgICAgICBjbGlwcGVk
IHJlY3QgdG8gZGV0ZXJtaW4gZWh0IHBvc2l0aW9uIG9mIHRoZSBtZW51LgorICAgICAgICAKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM4MTI5CisKKyAg
ICAgICAgKiBzcmMvV2ViVmlld0ltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1w
bDo6c2VuZENvbnRleHRNZW51RXZlbnQpOiAKKwogMjAxMC0wNi0yOCAgWXVyeSBTZW1pa2hhdHNr
eSAgPHl1cnlzQGNocm9taXVtLm9yZz4KIAogICAgICAgICBVbnJldmlld2VkLiBGaXggQ2hyb21p
dW0gZGVidWdnZXIgdGVzdHMuCkluZGV4OiBXZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBs
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcAko
cmV2aXNpb24gNjE3OTEpCisrKyBXZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNjgwLDcgKzY4MCw2IEBAIGJvb2wgV2ViVmlld0ltcGw6OnNlbmRD
b250ZXh0TWVudUV2ZW50KGMKICAgICBpZiAoIXZpZXcpCiAgICAgICAgIHJldHVybiBmYWxzZTsK
IAotICAgIEludFBvaW50IGNvb3JkcygtMSwgLTEpOwogI2lmIE9TKFdJTkRPV1MpCiAgICAgaW50
IHJpZ2h0QWxpZ25lZCA9IDo6R2V0U3lzdGVtTWV0cmljcyhTTV9NRU5VRFJPUEFMSUdOTUVOVCk7
CiAjZWxzZQpAQCAtNjg4LDEyICs2ODcsMTIgQEAgYm9vbCBXZWJWaWV3SW1wbDo6c2VuZENvbnRl
eHRNZW51RXZlbnQoYwogI2VuZGlmCiAgICAgSW50UG9pbnQgbG9jYXRpb247CiAKLQogICAgIEZy
YW1lKiBmb2N1c2VkRnJhbWUgPSBwYWdlKCktPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JN
YWluRnJhbWUoKTsKICAgICBOb2RlKiBmb2N1c2VkTm9kZSA9IGZvY3VzZWRGcmFtZS0+ZG9jdW1l
bnQoKS0+Zm9jdXNlZE5vZGUoKTsKLSAgICBQb3NpdGlvbiBzdGFydCA9IG1haW5GcmFtZUltcGwt
PnNlbGVjdGlvbigpLT5zZWxlY3Rpb24oKS5zdGFydCgpOworICAgIFNlbGVjdGlvbkNvbnRyb2xs
ZXIqIHNlbGVjdGlvbkNvbnRyb2xsZXIgPSBtYWluRnJhbWVJbXBsLT5zZWxlY3Rpb24oKTsKKyAg
ICBQb3NpdGlvbiBzdGFydCA9IHNlbGVjdGlvbkNvbnRyb2xsZXItPnNlbGVjdGlvbigpLnN0YXJ0
KCk7CiAKLSAgICBpZiAoc3RhcnQubm9kZSgpKSB7CisgICAgaWYgKHN0YXJ0Lm5vZGUoKSAmJiAo
c2VsZWN0aW9uQ29udHJvbGxlci0+cm9vdEVkaXRhYmxlRWxlbWVudCgpIHx8IHNlbGVjdGlvbkNv
bnRyb2xsZXItPmlzUmFuZ2UoKSkpIHsKICAgICAgICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9
IHN0YXJ0Lm5vZGUoKS0+cmVuZGVyZXIoKTsKICAgICAgICAgaWYgKCFyZW5kZXJlcikKICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTcwMywxOSArNzAyLDE3IEBAIGJvb2wgV2ViVmlld0lt
cGw6OnNlbmRDb250ZXh0TWVudUV2ZW50KGMKIAogICAgICAgICBpbnQgeCA9IHJpZ2h0QWxpZ25l
ZCA/IGZpcnN0UmVjdC5yaWdodCgpIDogZmlyc3RSZWN0LngoKTsKICAgICAgICAgbG9jYXRpb24g
PSBJbnRQb2ludCh4LCBmaXJzdFJlY3QuYm90dG9tKCkpOwotICAgIH0gZWxzZSBpZiAoZm9jdXNl
ZE5vZGUpCi0gICAgICAgIGxvY2F0aW9uID0gZm9jdXNlZE5vZGUtPmdldFJlY3QoKS5ib3R0b21M
ZWZ0KCk7Ci0gICAgZWxzZSB7CisgICAgfSBlbHNlIGlmIChmb2N1c2VkTm9kZSkgeworICAgICAg
ICBSZW5kZXJCb3hNb2RlbE9iamVjdCogYm94ID0gZm9jdXNlZE5vZGUtPnJlbmRlckJveE1vZGVs
T2JqZWN0KCk7CisgICAgICAgIEludFJlY3QgY2xpcHBlZFJlY3QgPSBib3gtPmFic29sdXRlQ2xp
cHBlZE92ZXJmbG93UmVjdCgpOworICAgICAgICBsb2NhdGlvbiA9IGNsaXBwZWRSZWN0LmJvdHRv
bUxlZnQoKTsKKyAgICB9IGVsc2UgewogICAgICAgICBsb2NhdGlvbiA9IEludFBvaW50KAogICAg
ICAgICAgICAgcmlnaHRBbGlnbmVkID8gdmlldy0+Y29udGVudHNXaWR0aCgpIC0ga0NvbnRleHRN
ZW51TWFyZ2luIDoga0NvbnRleHRNZW51TWFyZ2luLAogICAgICAgICAgICAga0NvbnRleHRNZW51
TWFyZ2luKTsKICAgICB9CiAKICAgICBsb2NhdGlvbiA9IHZpZXctPmNvbnRlbnRzVG9XaW5kb3co
bG9jYXRpb24pOwotICAgIC8vIEZJWE1FOiBUaGUgSW50U2l6ZSgwLCAtMSkgaXMgYSBoYWNrIHRv
IGdldCB0aGUgaGl0LXRlc3RpbmcgdG8gcmVzdWx0IGluCi0gICAgLy8gdGhlIHNlbGVjdGVkIGVs
ZW1lbnQuIElkZWFsbHkgd2UnZCBoYXZlIHRoZSBwb3NpdGlvbiBvZiBhIGNvbnRleHQgbWVudQot
ICAgIC8vIGV2ZW50IGJlIHNlcGFyYXRlIGZyb20gaXRzIHRhcmdldCBub2RlLgotICAgIGNvb3Jk
cyA9IGxvY2F0aW9uICsgSW50U2l6ZSgwLCAtMSk7CiAKICAgICAvLyBUaGUgY29udGV4dE1lbnVD
b250cm9sbGVyKCkgaG9sZHMgb250byB0aGUgbGFzdCBjb250ZXh0IG1lbnUgdGhhdCB3YXMKICAg
ICAvLyBwb3BwZWQgdXAgb24gdGhlIHBhZ2UgdW50aWwgYSBuZXcgb25lIGlzIGNyZWF0ZWQuIFdl
IG5lZWQgdG8gY2xlYXIKQEAgLTcyOCwxNCArNzI1LDE0IEBAIGJvb2wgV2ViVmlld0ltcGw6OnNl
bmRDb250ZXh0TWVudUV2ZW50KGMKICAgICBmb2N1c2VkRnJhbWUtPnZpZXcoKS0+c2V0Q3Vyc29y
KHBvaW50ZXJDdXJzb3IoKSk7CiAgICAgV2ViTW91c2VFdmVudCBtb3VzZUV2ZW50OwogICAgIG1v
dXNlRXZlbnQuYnV0dG9uID0gV2ViTW91c2VFdmVudDo6QnV0dG9uUmlnaHQ7Ci0gICAgbW91c2VF
dmVudC54ID0gY29vcmRzLngoKTsKLSAgICBtb3VzZUV2ZW50LnkgPSBjb29yZHMueSgpOworICAg
IG1vdXNlRXZlbnQueCA9IGxvY2F0aW9uLngoKTsKKyAgICBtb3VzZUV2ZW50LnkgPSBsb2NhdGlv
bi55KCk7CiAgICAgbW91c2VFdmVudC50eXBlID0gV2ViSW5wdXRFdmVudDo6TW91c2VVcDsKIAog
ICAgIFBsYXRmb3JtTW91c2VFdmVudEJ1aWxkZXIgcGxhdGZvcm1FdmVudCh2aWV3LCBtb3VzZUV2
ZW50KTsKIAogICAgIG1fY29udGV4dE1lbnVBbGxvd2VkID0gdHJ1ZTsKLSAgICBib29sIGhhbmRs
ZWQgPSBmb2N1c2VkRnJhbWUtPmV2ZW50SGFuZGxlcigpLT5zZW5kQ29udGV4dE1lbnVFdmVudChw
bGF0Zm9ybUV2ZW50KTsKKyAgICBib29sIGhhbmRsZWQgPSBmb2N1c2VkRnJhbWUtPmV2ZW50SGFu
ZGxlcigpLT5zZW5kQ29udGV4dE1lbnVFdmVudEZvcktleShwbGF0Zm9ybUV2ZW50KTsKICAgICBt
X2NvbnRleHRNZW51QWxsb3dlZCA9IGZhbHNlOwogICAgIHJldHVybiBoYW5kbGVkOwogfQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>59941</attachid>
            <date>2010-06-28 14:32:31 -0700</date>
            <delta_ts>2010-07-02 14:50:51 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>context-menu.patch</filename>
            <type>text/plain</type>
            <size>9073</size>
            <attacher name="Erik Arvidsson">arv</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2MjAyNCkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjQgQEAKKzIwMTAtMDYtMjggIEVyaWsgQXJ2aWRzc29uICA8YXJ2QGNocm9taXVt
Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBb
Y2hyb21pdW1dIEZpeCBpc3N1ZSB3aGVyZSBhIGNvbnRleHRtZW51IGV2ZW50IHdhcyByZXBvcnRp
bmcgdGhlIHdyb25nCisgICAgICAgIHRhcmdldCBpZiB0aGUgY29udGV4dCBtZW51IHdhcyBzaG93
biBkdWUgdG8gcHJlc3NpbmcgdGhlIGNvbnRleHQgbWVudQorICAgICAgICBrZXkgKG9yIFNoaWZ0
K0YxMCkuCisgICAgICAgIAorICAgICAgICBTcGxpdCBzZW5kQ29udGV4dE1lbnVGb3JFdmVudCBp
bnRvIG9uZSBjYXNlIGZvciBrZXlib2FyZCBldmVudHMgYW5kIHVzZQorICAgICAgICB0aGF0IHdo
ZW4gdGhlIGNvbnRleHRtZW51IGV2ZW50IHNob3VsZCBiZSBkaXNwYXRjaGVkIGR1ZSB0byBhIGtl
eXByZXNzLgorICAgICAgICAKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTM4MTI5CisKKyAgICAgICAgVXNlIG1hbnVhbCB0ZXN0IHNpbmNlIERSVCBkb2Vz
IG5vdCBoYW5kbGUgY29udGV4dCBtZW51IGtleXMuCisKKyAgICAgICAgKiBtYW51YWwtdGVzdHMv
Y2hyb21pdW0vY29udGV4dG1lbnUta2V5Lmh0bWw6IEFkZGVkLgorICAgICAgICAqIHBhZ2UvRXZl
bnRIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6c2VuZENvbnRl
eHRNZW51RXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpzZW5kQ29udGV4
dE1lbnVFdmVudEZvcktleSk6CisgICAgICAgICogcGFnZS9FdmVudEhhbmRsZXIuaDoKKwogMjAx
MC0wNi0yOCAgS2VubmV0aCBSdXNzZWxsICA8a2JyQGdvb2dsZS5jb20+CiAKICAgICAgICAgUmV2
aWV3ZWQgYnkgRGltaXRyaSBHbGF6a292LgpJbmRleDogV2ViQ29yZS9tYW51YWwtdGVzdHMvY2hy
b21pdW0vY29udGV4dG1lbnUta2V5Lmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9tYW51YWwt
dGVzdHMvY2hyb21pdW0vY29udGV4dG1lbnUta2V5Lmh0bWwJKHJldmlzaW9uIDApCisrKyBXZWJD
b3JlL21hbnVhbC10ZXN0cy9jaHJvbWl1bS9jb250ZXh0bWVudS1rZXkuaHRtbAkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSwxMDkgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxz
dHlsZT4KKworI291dGVyIHsKKyAgICBvdmVyZmxvdzogYXV0bzsKKyAgICB3aWR0aDogMjAwcHg7
CisgICAgaGVpZ2h0OiAyMDBweDsKK30KKworI2lubmVyIHsKKyAgICBwb3NpdGlvbjogcmVsYXRp
dmU7CisgICAgaGVpZ2h0OiA0MDBweDsKK30KKworI2lubmVyOmZvY3VzIHsKKyAgICBiYWNrZ3Jv
dW5kLWNvbG9yOiBsaWdodGJsdWU7Cit9CisKKyNpbm5lcjphY3RpdmUgeworICAgIGJhY2tncm91
bmQtY29sb3I6IGJsdWU7Cit9CisKKyNoLCAjaDIgeworICAgIGJhY2tncm91bmQ6IHJnYmEoMjU1
LCAyNTUsIDI1NSwgMCk7Cit9CisKKyNoIHsKKyAgICBwb3NpdGlvbjogYWJzb2x1dGU7CisgICAg
aGVpZ2h0OiAyMDBweDsKKyAgICB3aWR0aDogMjAwcHg7Cit9CisKKyNoMiB7CisgICAgcG9zaXRp
b246IGFic29sdXRlOworICAgIHRvcDogMjAwcHg7CisgICAgaGVpZ2h0OiAyMDBweDsKKyAgICB3
aWR0aDogMTAwJTsKK30KKworI2g6aG92ZXIsCisjaDI6aG92ZXIgeworICAgIGJhY2tncm91bmQ6
IHBpbms7Cit9CisKKyNoOmFjdGl2ZSwKKyNoMjphY3RpdmUgeworICAgIGJhY2tncm91bmQ6IHJl
ZDsKK30KKworcHJlIHsKKyAgICBwb3NpdGlvbjogYWJzb2x1dGU7CisgICAgbGVmdDogMjUwcHg7
CisgICAgdG9wOiA1MHB4OworfQorCis8L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+CisKKzxwPkNs
aWNrIHRoZSBkaXYgYmVsb3cgYW5kIHByZXNzIHRoZSBjb250ZXh0IG1lbnUga2V5IG9uIHlvdXIg
a2V5Ym9hcmQgKFNoaWZ0K0YxMCBhbHNvIHdvcmtzKTwvcD4KKworPGRpdiBpZD1vdXRlcj4KKyAg
ICA8ZGl2IGlkPWlubmVyIHRhYmluZGV4PTA+CisgICAgICAgIDxkaXYgaWQ9aDI+PC9kaXY+Cisg
ICAgPC9kaXY+Cis8L2Rpdj4KKworPGRpdiBpZD1oPjwvZGl2PgorCis8cHJlPjwvcHJlPgorCis8
c2NyaXB0PgorCisgICAgZnVuY3Rpb24gY3MoZWwpCisgICAgeworICAgICAgICBpZiAod2luZG93
LmdldENvbXB1dGVkU3R5bGUpCisgICAgICAgICAgICByZXR1cm4gd2luZG93LmdldENvbXB1dGVk
U3R5bGUoZWwsICcnKTsKKyAgICAgICAgcmV0dXJuIGVsLmN1cnJlbnRTdHlsZTsKKyAgICB9CisK
K2RvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2NvbnRleHRtZW51JywgZnVuY3Rpb24oZSkKK3sK
KyAgICB2YXIgaW5uZXIgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjaW5uZXInKTsKKyAgICB2
YXIgb3V0ZXIgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjb3V0ZXInKTsKKyAgICB2YXIgaCA9
IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNoJyk7CisgICAgdmFyIGgyID0gZG9jdW1lbnQucXVl
cnlTZWxlY3RvcignI2gyJyk7CisgICAgdmFyIHJlc3VsdCA9IFtdOworCisgICAgcmVzdWx0LnB1
c2goZS50YXJnZXQsIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNpbm5lcicpKTsKKyAgICByZXN1
bHQucHVzaChjcyhpbm5lciwgJycpLmJhY2tncm91bmRDb2xvciwgJ3JnYigwLCAwLCAyNTUpJyk7
CisgICAgcmVzdWx0LnB1c2goY3MoaCwgJycpLmJhY2tncm91bmRDb2xvciwgJ3JnYmEoMjU1LCAy
NTUsIDI1NSwgMCknKTsKKyAgICByZXN1bHQucHVzaChjcyhoMiwgJycpLmJhY2tncm91bmRDb2xv
ciwgJ3JnYmEoMjU1LCAyNTUsIDI1NSwgMCknKTsKKworICAgIHZhciBzID0gJyc7CisgICAgZm9y
ICh2YXIgaSA9IDA7IGkgPCByZXN1bHQubGVuZ3RoOyBpICs9IDIpIHsKKyAgICAgICAgcyArPSBy
ZXN1bHRbaV0gKyAnID09ICcgKyByZXN1bHRbaSArIDFdICsgJyAtICcgKworICAgICAgICAgICAg
KHJlc3VsdFtpXSA9PSByZXN1bHRbaSArIDFdID8gJ1BBU1MnIDogJ0ZBSUwnKSArICc8YnI+JzsK
KyAgICB9CisKKyAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdwcmUnKS5pbm5lckhUTUwgPSBz
OworICAgIHJldHVybiB0cnVlOworfSwgZmFsc2UpOworCis8L3NjcmlwdD4KKworPC9ib2R5Pgor
PC9odG1sPgpJbmRleDogV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAJKHJldmlzaW9uIDYxNzkxKQorKysgV2Vi
Q29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIwMTYsMTAgKzIw
MTYsMzIgQEAgYm9vbCBFdmVudEhhbmRsZXI6OnNlbmRDb250ZXh0TWVudUV2ZW50KAogICAgIH0K
ICNlbmRpZgogCi0gICAgc3dhbGxvd0V2ZW50ID0gZGlzcGF0Y2hNb3VzZUV2ZW50KGV2ZW50TmFt
ZXMoKS5jb250ZXh0bWVudUV2ZW50LCBtZXYudGFyZ2V0Tm9kZSgpLCB0cnVlLCAwLCBldmVudCwg
dHJ1ZSk7CisgICAgc3dhbGxvd0V2ZW50ID0gZGlzcGF0Y2hNb3VzZUV2ZW50KGV2ZW50TmFtZXMo
KS5jb250ZXh0bWVudUV2ZW50LCBtZXYudGFyZ2V0Tm9kZSgpLCB0cnVlLCAwLCBldmVudCwgZmFs
c2UpOwogICAgIAogICAgIHJldHVybiBzd2FsbG93RXZlbnQ7CiB9CisKK2Jvb2wgRXZlbnRIYW5k
bGVyOjpzZW5kQ29udGV4dE1lbnVFdmVudEZvcktleShjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQm
IGV2ZW50KQoreworICAgIERvY3VtZW50KiBkb2MgPSBtX2ZyYW1lLT5kb2N1bWVudCgpOworICAg
IEZyYW1lVmlldyogdiA9IG1fZnJhbWUtPnZpZXcoKTsKKyAgICBpZiAoIXYpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKworICAgIE5vZGUqIHRhcmdldE5vZGUgPSBkb2MtPmZvY3VzZWROb2RlKCk7
CisgICAgaWYgKCF0YXJnZXROb2RlKQorICAgICAgICB0YXJnZXROb2RlID0gZG9jOworCisgICAg
Ly8gVXNlIHRoZSBmb2N1c2VkIG5vZGUgYXMgdGhlIHRhcmdldCBmb3IgaG92ZXIgYW5kIGFjdGl2
ZS4KKyAgICBIaXRUZXN0UmVzdWx0IHJlc3VsdChldmVudC5wb3MoKSk7CisgICAgcmVzdWx0LnNl
dElubmVyTm9kZSh0YXJnZXROb2RlKTsKKyAgICBIaXRUZXN0UmVxdWVzdCByZXF1ZXN0KEhpdFRl
c3RSZXF1ZXN0OjpBY3RpdmUpOworICAgIGRvYy0+cmVuZGVyVmlldygpLT5sYXllcigpLT51cGRh
dGVIb3ZlckFjdGl2ZVN0YXRlKHJlcXVlc3QsIHJlc3VsdCk7CisgICAgZG9jLT51cGRhdGVTdHls
ZUlmTmVlZGVkKCk7CisgICAKKyAgICByZXR1cm4gZGlzcGF0Y2hNb3VzZUV2ZW50KGV2ZW50TmFt
ZXMoKS5jb250ZXh0bWVudUV2ZW50LCB0YXJnZXROb2RlLCB0cnVlLCAwLCBldmVudCwgZmFsc2Up
OworfQorCiAjZW5kaWYgLy8gRU5BQkxFKENPTlRFWFRfTUVOVVMpCiAKIHZvaWQgRXZlbnRIYW5k
bGVyOjpzY2hlZHVsZUhvdmVyU3RhdGVVcGRhdGUoKQpJbmRleDogV2ViQ29yZS9wYWdlL0V2ZW50
SGFuZGxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuaAkocmV2
aXNpb24gNjE3OTEpCisrKyBXZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTE1Nyw2ICsxNTcsNyBAQCBwdWJsaWM6CiAKICNpZiBFTkFCTEUoQ09OVEVYVF9NRU5V
UykKICAgICBib29sIHNlbmRDb250ZXh0TWVudUV2ZW50KGNvbnN0IFBsYXRmb3JtTW91c2VFdmVu
dCYpOworICAgIGJvb2wgc2VuZENvbnRleHRNZW51RXZlbnRGb3JLZXkoY29uc3QgUGxhdGZvcm1N
b3VzZUV2ZW50Jik7CiAjZW5kaWYKIAogICAgIHZvaWQgc2V0TW91c2VEb3duTWF5U3RhcnRBdXRv
c2Nyb2xsKCkgeyBtX21vdXNlRG93bk1heVN0YXJ0QXV0b3Njcm9sbCA9IHRydWU7IH0KSW5kZXg6
IFdlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2Nocm9taXVt
L0NoYW5nZUxvZwkocmV2aXNpb24gNjIwMjQpCisrKyBXZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9n
CSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTAtMDYtMjggIEVyaWsgQXJ2aWRz
c29uICA8YXJ2QGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICBbY2hyb21pdW1dIEZpeCBpc3N1ZSB3aGVyZSBhIGNvbnRleHRtZW51
IGV2ZW50IHdhcyByZXBvcnRpbmcgdGhlIHdyb25nCisgICAgICAgIHRhcmdldCBpZiB0aGUgY29u
dGV4dCBtZW51IHdhcyBzaG93biBkdWUgdG8gcHJlc3NpbmcgdGhlIGNvbnRleHQgbWVudQorICAg
ICAgICBrZXkgKG9yIFNoaWZ0K0YxMCkuCisgICAgICAgIAorICAgICAgICBXZSBub3cgdXNlIHRo
ZSBmb2N1c2VkIG5vZGUgYXMgdGhlIHRhcmdldCBmb3IgdGhlIGV2ZW50IGFuZCB1c2UgdGhlCisg
ICAgICAgIGNsaXBwZWQgcmVjdCB0byBkZXRlcm1pbiBlaHQgcG9zaXRpb24gb2YgdGhlIG1lbnUu
CisgICAgICAgIAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MzgxMjkKKworICAgICAgICAqIHNyYy9XZWJWaWV3SW1wbC5jcHA6CisgICAgICAgIChXZWJL
aXQ6OldlYlZpZXdJbXBsOjpzZW5kQ29udGV4dE1lbnVFdmVudCk6IAorCiAyMDEwLTA2LTI4ICBZ
dXJ5IFNlbWlraGF0c2t5ICA8eXVyeXNAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFVucmV2aWV3
ZWQuIEZpeCBDaHJvbWl1bSBkZWJ1Z2dlciB0ZXN0cy4KSW5kZXg6IFdlYktpdC9jaHJvbWl1bS9z
cmMvV2ViVmlld0ltcGwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
Vmlld0ltcGwuY3BwCShyZXZpc2lvbiA2MTc5MSkKKysrIFdlYktpdC9jaHJvbWl1bS9zcmMvV2Vi
Vmlld0ltcGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02ODAsNyArNjgwLDYgQEAgYm9vbCBXZWJW
aWV3SW1wbDo6c2VuZENvbnRleHRNZW51RXZlbnQoYwogICAgIGlmICghdmlldykKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCi0gICAgSW50UG9pbnQgY29vcmRzKC0xLCAtMSk7CiAjaWYgT1MoV0lO
RE9XUykKICAgICBpbnQgcmlnaHRBbGlnbmVkID0gOjpHZXRTeXN0ZW1NZXRyaWNzKFNNX01FTlVE
Uk9QQUxJR05NRU5UKTsKICNlbHNlCkBAIC02ODgsMTIgKzY4NywxMiBAQCBib29sIFdlYlZpZXdJ
bXBsOjpzZW5kQ29udGV4dE1lbnVFdmVudChjCiAjZW5kaWYKICAgICBJbnRQb2ludCBsb2NhdGlv
bjsKIAotCiAgICAgRnJhbWUqIGZvY3VzZWRGcmFtZSA9IHBhZ2UoKS0+Zm9jdXNDb250cm9sbGVy
KCktPmZvY3VzZWRPck1haW5GcmFtZSgpOwogICAgIE5vZGUqIGZvY3VzZWROb2RlID0gZm9jdXNl
ZEZyYW1lLT5kb2N1bWVudCgpLT5mb2N1c2VkTm9kZSgpOwotICAgIFBvc2l0aW9uIHN0YXJ0ID0g
bWFpbkZyYW1lSW1wbC0+c2VsZWN0aW9uKCktPnNlbGVjdGlvbigpLnN0YXJ0KCk7CisgICAgU2Vs
ZWN0aW9uQ29udHJvbGxlciogc2VsZWN0aW9uQ29udHJvbGxlciA9IG1haW5GcmFtZUltcGwtPnNl
bGVjdGlvbigpOworICAgIFBvc2l0aW9uIHN0YXJ0ID0gc2VsZWN0aW9uQ29udHJvbGxlci0+c2Vs
ZWN0aW9uKCkuc3RhcnQoKTsKIAotICAgIGlmIChzdGFydC5ub2RlKCkpIHsKKyAgICBpZiAoc3Rh
cnQubm9kZSgpICYmIChzZWxlY3Rpb25Db250cm9sbGVyLT5yb290RWRpdGFibGVFbGVtZW50KCkg
fHwgc2VsZWN0aW9uQ29udHJvbGxlci0+aXNSYW5nZSgpKSkgewogICAgICAgICBSZW5kZXJPYmpl
Y3QqIHJlbmRlcmVyID0gc3RhcnQubm9kZSgpLT5yZW5kZXJlcigpOwogICAgICAgICBpZiAoIXJl
bmRlcmVyKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNzAzLDE5ICs3MDIsMTcgQEAg
Ym9vbCBXZWJWaWV3SW1wbDo6c2VuZENvbnRleHRNZW51RXZlbnQoYwogCiAgICAgICAgIGludCB4
ID0gcmlnaHRBbGlnbmVkID8gZmlyc3RSZWN0LnJpZ2h0KCkgOiBmaXJzdFJlY3QueCgpOwogICAg
ICAgICBsb2NhdGlvbiA9IEludFBvaW50KHgsIGZpcnN0UmVjdC5ib3R0b20oKSk7Ci0gICAgfSBl
bHNlIGlmIChmb2N1c2VkTm9kZSkKLSAgICAgICAgbG9jYXRpb24gPSBmb2N1c2VkTm9kZS0+Z2V0
UmVjdCgpLmJvdHRvbUxlZnQoKTsKLSAgICBlbHNlIHsKKyAgICB9IGVsc2UgaWYgKGZvY3VzZWRO
b2RlKSB7CisgICAgICAgIFJlbmRlckJveE1vZGVsT2JqZWN0KiBib3ggPSBmb2N1c2VkTm9kZS0+
cmVuZGVyQm94TW9kZWxPYmplY3QoKTsKKyAgICAgICAgSW50UmVjdCBjbGlwcGVkUmVjdCA9IGJv
eC0+YWJzb2x1dGVDbGlwcGVkT3ZlcmZsb3dSZWN0KCk7CisgICAgICAgIGxvY2F0aW9uID0gY2xp
cHBlZFJlY3QuYm90dG9tTGVmdCgpOworICAgIH0gZWxzZSB7CiAgICAgICAgIGxvY2F0aW9uID0g
SW50UG9pbnQoCiAgICAgICAgICAgICByaWdodEFsaWduZWQgPyB2aWV3LT5jb250ZW50c1dpZHRo
KCkgLSBrQ29udGV4dE1lbnVNYXJnaW4gOiBrQ29udGV4dE1lbnVNYXJnaW4sCiAgICAgICAgICAg
ICBrQ29udGV4dE1lbnVNYXJnaW4pOwogICAgIH0KIAogICAgIGxvY2F0aW9uID0gdmlldy0+Y29u
dGVudHNUb1dpbmRvdyhsb2NhdGlvbik7Ci0gICAgLy8gRklYTUU6IFRoZSBJbnRTaXplKDAsIC0x
KSBpcyBhIGhhY2sgdG8gZ2V0IHRoZSBoaXQtdGVzdGluZyB0byByZXN1bHQgaW4KLSAgICAvLyB0
aGUgc2VsZWN0ZWQgZWxlbWVudC4gSWRlYWxseSB3ZSdkIGhhdmUgdGhlIHBvc2l0aW9uIG9mIGEg
Y29udGV4dCBtZW51Ci0gICAgLy8gZXZlbnQgYmUgc2VwYXJhdGUgZnJvbSBpdHMgdGFyZ2V0IG5v
ZGUuCi0gICAgY29vcmRzID0gbG9jYXRpb24gKyBJbnRTaXplKDAsIC0xKTsKIAogICAgIC8vIFRo
ZSBjb250ZXh0TWVudUNvbnRyb2xsZXIoKSBob2xkcyBvbnRvIHRoZSBsYXN0IGNvbnRleHQgbWVu
dSB0aGF0IHdhcwogICAgIC8vIHBvcHBlZCB1cCBvbiB0aGUgcGFnZSB1bnRpbCBhIG5ldyBvbmUg
aXMgY3JlYXRlZC4gV2UgbmVlZCB0byBjbGVhcgpAQCAtNzI4LDE0ICs3MjUsMTQgQEAgYm9vbCBX
ZWJWaWV3SW1wbDo6c2VuZENvbnRleHRNZW51RXZlbnQoYwogICAgIGZvY3VzZWRGcmFtZS0+dmll
dygpLT5zZXRDdXJzb3IocG9pbnRlckN1cnNvcigpKTsKICAgICBXZWJNb3VzZUV2ZW50IG1vdXNl
RXZlbnQ7CiAgICAgbW91c2VFdmVudC5idXR0b24gPSBXZWJNb3VzZUV2ZW50OjpCdXR0b25SaWdo
dDsKLSAgICBtb3VzZUV2ZW50LnggPSBjb29yZHMueCgpOwotICAgIG1vdXNlRXZlbnQueSA9IGNv
b3Jkcy55KCk7CisgICAgbW91c2VFdmVudC54ID0gbG9jYXRpb24ueCgpOworICAgIG1vdXNlRXZl
bnQueSA9IGxvY2F0aW9uLnkoKTsKICAgICBtb3VzZUV2ZW50LnR5cGUgPSBXZWJJbnB1dEV2ZW50
OjpNb3VzZVVwOwogCiAgICAgUGxhdGZvcm1Nb3VzZUV2ZW50QnVpbGRlciBwbGF0Zm9ybUV2ZW50
KHZpZXcsIG1vdXNlRXZlbnQpOwogCiAgICAgbV9jb250ZXh0TWVudUFsbG93ZWQgPSB0cnVlOwot
ICAgIGJvb2wgaGFuZGxlZCA9IGZvY3VzZWRGcmFtZS0+ZXZlbnRIYW5kbGVyKCktPnNlbmRDb250
ZXh0TWVudUV2ZW50KHBsYXRmb3JtRXZlbnQpOworICAgIGJvb2wgaGFuZGxlZCA9IGZvY3VzZWRG
cmFtZS0+ZXZlbnRIYW5kbGVyKCktPnNlbmRDb250ZXh0TWVudUV2ZW50Rm9yS2V5KHBsYXRmb3Jt
RXZlbnQpOwogICAgIG1fY29udGV4dE1lbnVBbGxvd2VkID0gZmFsc2U7CiAgICAgcmV0dXJuIGhh
bmRsZWQ7CiB9Cg==
</data>
<flag name="review"
          id="47113"
          type_id="1"
          status="-"
          setter="ojan"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>60410</attachid>
            <date>2010-07-02 14:50:51 -0700</date>
            <delta_ts>2010-07-02 16:55:29 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>context-menu.patch</filename>
            <type>text/plain</type>
            <size>16486</size>
            <attacher name="Erik Arvidsson">arv</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFdlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCShyZXZpc2lvbiA2MTc5MSkKKysr
IFdlYktpdC9jaHJvbWl1bS9zcmMvV2ViVmlld0ltcGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC02
NjEsNjIgKzY2MSwxNiBAQAogfQogI2VuZGlmCiAKLS8vIFRoZSBXZWJWaWV3SW1wbDo6U2VuZENv
bnRleHRNZW51RXZlbnQgZnVuY3Rpb24gaXMgYmFzZWQgb24gdGhlIFdlYmtpdAotLy8gZnVuY3Rp
b24KLS8vIGJvb2wgV2ViVmlldzo6aGFuZGxlQ29udGV4dE1lbnVFdmVudChXUEFSQU0gd1BhcmFt
LCBMUEFSQU0gbFBhcmFtKSBpbgotLy8gd2Via2l0XHdlYmtpdFx3aW5cV2ViVmlldy5jcHAuIFRo
ZSBvbmx5IHNpZ25pZmljYW50IGNoYW5nZSBpbiB0aGlzCi0vLyBmdW5jdGlvbiBpcyB0aGUgY29k
ZSB0byBjb252ZXJ0IGZyb20gYSBLZXlib2FyZCBldmVudCB0byB0aGUgUmlnaHQKLS8vIE1vdXNl
IGJ1dHRvbiB1cCBldmVudC4KLS8vCi0vLyBUaGlzIGZ1bmN0aW9uIGlzIGFuIHVnbHkgY29weS9w
YXN0ZSBhbmQgc2hvdWxkIGJlIGNsZWFuZWQgdXAgd2hlbiB0aGUKLS8vIFdlYktpdFdpbiB2ZXJz
aW9uIGlzIGNsZWFuZWQ6IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MDQzOAogI2lmIE9TKFdJTkRPV1MpIHx8IE9TKExJTlVYKQotLy8gRklYTUU6IGltcGxlbWVudCBv
biBNYWMKKy8vIE1hYyBoYXMgbm8gd2F5IHRvIG9wZW4gYSBjb250ZXh0IG1lbnUgYmFzZWQgb24g
YSBrZXlib2FyZCBldmVudC4KIGJvb2wgV2ViVmlld0ltcGw6OnNlbmRDb250ZXh0TWVudUV2ZW50
KGNvbnN0IFdlYktleWJvYXJkRXZlbnQmIGV2ZW50KQogewotICAgIHN0YXRpYyBjb25zdCBpbnQg
a0NvbnRleHRNZW51TWFyZ2luID0gMTsKLSAgICBGcmFtZSogbWFpbkZyYW1lSW1wbCA9IHBhZ2Uo
KS0+bWFpbkZyYW1lKCk7Ci0gICAgRnJhbWVWaWV3KiB2aWV3ID0gbWFpbkZyYW1lSW1wbC0+dmll
dygpOworICAgIEZyYW1lVmlldyogdmlldyA9IG1fcGFnZS0+bWFpbkZyYW1lKCktPnZpZXcoKTsK
ICAgICBpZiAoIXZpZXcpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIEludFBvaW50IGNv
b3JkcygtMSwgLTEpOwotI2lmIE9TKFdJTkRPV1MpCi0gICAgaW50IHJpZ2h0QWxpZ25lZCA9IDo6
R2V0U3lzdGVtTWV0cmljcyhTTV9NRU5VRFJPUEFMSUdOTUVOVCk7Ci0jZWxzZQotICAgIGludCBy
aWdodEFsaWduZWQgPSAwOwotI2VuZGlmCi0gICAgSW50UG9pbnQgbG9jYXRpb247Ci0KLQogICAg
IEZyYW1lKiBmb2N1c2VkRnJhbWUgPSBwYWdlKCktPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2Vk
T3JNYWluRnJhbWUoKTsKLSAgICBOb2RlKiBmb2N1c2VkTm9kZSA9IGZvY3VzZWRGcmFtZS0+ZG9j
dW1lbnQoKS0+Zm9jdXNlZE5vZGUoKTsKLSAgICBQb3NpdGlvbiBzdGFydCA9IG1haW5GcmFtZUlt
cGwtPnNlbGVjdGlvbigpLT5zZWxlY3Rpb24oKS5zdGFydCgpOwogCi0gICAgaWYgKHN0YXJ0Lm5v
ZGUoKSkgewotICAgICAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gc3RhcnQubm9kZSgpLT5y
ZW5kZXJlcigpOwotICAgICAgICBpZiAoIXJlbmRlcmVyKQotICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOwotCi0gICAgICAgIFJlZlB0cjxSYW5nZT4gc2VsZWN0aW9uID0gbWFpbkZyYW1lSW1wbC0+
c2VsZWN0aW9uKCktPnRvTm9ybWFsaXplZFJhbmdlKCk7Ci0gICAgICAgIEludFJlY3QgZmlyc3RS
ZWN0ID0gbWFpbkZyYW1lSW1wbC0+Zmlyc3RSZWN0Rm9yUmFuZ2Uoc2VsZWN0aW9uLmdldCgpKTsK
LQotICAgICAgICBpbnQgeCA9IHJpZ2h0QWxpZ25lZCA/IGZpcnN0UmVjdC5yaWdodCgpIDogZmly
c3RSZWN0LngoKTsKLSAgICAgICAgbG9jYXRpb24gPSBJbnRQb2ludCh4LCBmaXJzdFJlY3QuYm90
dG9tKCkpOwotICAgIH0gZWxzZSBpZiAoZm9jdXNlZE5vZGUpCi0gICAgICAgIGxvY2F0aW9uID0g
Zm9jdXNlZE5vZGUtPmdldFJlY3QoKS5ib3R0b21MZWZ0KCk7Ci0gICAgZWxzZSB7Ci0gICAgICAg
IGxvY2F0aW9uID0gSW50UG9pbnQoCi0gICAgICAgICAgICByaWdodEFsaWduZWQgPyB2aWV3LT5j
b250ZW50c1dpZHRoKCkgLSBrQ29udGV4dE1lbnVNYXJnaW4gOiBrQ29udGV4dE1lbnVNYXJnaW4s
Ci0gICAgICAgICAgICBrQ29udGV4dE1lbnVNYXJnaW4pOwotICAgIH0KLQotICAgIGxvY2F0aW9u
ID0gdmlldy0+Y29udGVudHNUb1dpbmRvdyhsb2NhdGlvbik7Ci0gICAgLy8gRklYTUU6IFRoZSBJ
bnRTaXplKDAsIC0xKSBpcyBhIGhhY2sgdG8gZ2V0IHRoZSBoaXQtdGVzdGluZyB0byByZXN1bHQg
aW4KLSAgICAvLyB0aGUgc2VsZWN0ZWQgZWxlbWVudC4gSWRlYWxseSB3ZSdkIGhhdmUgdGhlIHBv
c2l0aW9uIG9mIGEgY29udGV4dCBtZW51Ci0gICAgLy8gZXZlbnQgYmUgc2VwYXJhdGUgZnJvbSBp
dHMgdGFyZ2V0IG5vZGUuCi0gICAgY29vcmRzID0gbG9jYXRpb24gKyBJbnRTaXplKDAsIC0xKTsK
LQogICAgIC8vIFRoZSBjb250ZXh0TWVudUNvbnRyb2xsZXIoKSBob2xkcyBvbnRvIHRoZSBsYXN0
IGNvbnRleHQgbWVudSB0aGF0IHdhcwogICAgIC8vIHBvcHBlZCB1cCBvbiB0aGUgcGFnZSB1bnRp
bCBhIG5ldyBvbmUgaXMgY3JlYXRlZC4gV2UgbmVlZCB0byBjbGVhcgogICAgIC8vIHRoaXMgbWVu
dSBiZWZvcmUgcHJvcGFnYXRpbmcgdGhlIGV2ZW50IHRocm91Z2ggdGhlIERPTSBzbyB0aGF0IHdl
IGNhbgpAQCAtNzI1LDE3ICs2NzksOCBAQAogICAgIC8vIG5vdCBydW4uCiAgICAgcGFnZSgpLT5j
b250ZXh0TWVudUNvbnRyb2xsZXIoKS0+Y2xlYXJDb250ZXh0TWVudSgpOwogCi0gICAgZm9jdXNl
ZEZyYW1lLT52aWV3KCktPnNldEN1cnNvcihwb2ludGVyQ3Vyc29yKCkpOwotICAgIFdlYk1vdXNl
RXZlbnQgbW91c2VFdmVudDsKLSAgICBtb3VzZUV2ZW50LmJ1dHRvbiA9IFdlYk1vdXNlRXZlbnQ6
OkJ1dHRvblJpZ2h0OwotICAgIG1vdXNlRXZlbnQueCA9IGNvb3Jkcy54KCk7Ci0gICAgbW91c2VF
dmVudC55ID0gY29vcmRzLnkoKTsKLSAgICBtb3VzZUV2ZW50LnR5cGUgPSBXZWJJbnB1dEV2ZW50
OjpNb3VzZVVwOwotCi0gICAgUGxhdGZvcm1Nb3VzZUV2ZW50QnVpbGRlciBwbGF0Zm9ybUV2ZW50
KHZpZXcsIG1vdXNlRXZlbnQpOwotCiAgICAgbV9jb250ZXh0TWVudUFsbG93ZWQgPSB0cnVlOwot
ICAgIGJvb2wgaGFuZGxlZCA9IGZvY3VzZWRGcmFtZS0+ZXZlbnRIYW5kbGVyKCktPnNlbmRDb250
ZXh0TWVudUV2ZW50KHBsYXRmb3JtRXZlbnQpOworICAgIGJvb2wgaGFuZGxlZCA9IGZvY3VzZWRG
cmFtZS0+ZXZlbnRIYW5kbGVyKCktPnNlbmRDb250ZXh0TWVudUV2ZW50Rm9yS2V5KCk7CiAgICAg
bV9jb250ZXh0TWVudUFsbG93ZWQgPSBmYWxzZTsKICAgICByZXR1cm4gaGFuZGxlZDsKIH0KSW5k
ZXg6IFdlYktpdC9jaHJvbWl1bS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2Nocm9t
aXVtL0NoYW5nZUxvZwkocmV2aXNpb24gNjIzOTkpCisrKyBXZWJLaXQvY2hyb21pdW0vQ2hhbmdl
TG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTAtMDctMDIgIEVyaWsgQXJ2
aWRzc29uICA8YXJ2QGNocm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBGaXggaXNzdWUgd2hlcmUgYSBjb250ZXh0bWVudSBldmVudCB3
YXMgcmVwb3J0aW5nIHRoZSB3cm9uZyB0YXJnZXQKKyAgICAgICAgaWYgdGhlIGNvbnRleHQgbWVu
dSB3YXMgc2hvd24gZHVlIHRvIHByZXNzaW5nIHRoZSBjb250ZXh0IG1lbnUga2V5CisgICAgICAg
IChvciBTaGlmdCtGMTApLgorCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0zODEyOQorCisgICAgICAgICogc3JjL1dlYlZpZXdJbXBsLmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViVmlld0ltcGw6OnNlbmRDb250ZXh0TWVudUV2ZW50KToKKwogMjAxMC0w
Ny0wMiAgWXVyeSBTZW1pa2hhdHNreSAgPHl1cnlzQGNocm9taXVtLm9yZz4KIAogICAgICAgICBS
ZXZpZXdlZCBieSBQYXZlbCBGZWxkbWFuLgpJbmRleDogV2ViS2l0L3dpbi9DaGFuZ2VMb2cKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gV2ViS2l0L3dpbi9DaGFuZ2VMb2cJKHJldmlzaW9uIDYyMzk5KQorKysgV2Vi
S2l0L3dpbi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNCBAQAorMjAxMC0w
Ny0wMiAgRXJpayBBcnZpZHNzb24gIDxhcnZAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEZpeCBpc3N1ZSB3aGVyZSBhIGNvbnRl
eHRtZW51IGV2ZW50IHdhcyByZXBvcnRpbmcgdGhlIHdyb25nIHRhcmdldAorICAgICAgICBpZiB0
aGUgY29udGV4dCBtZW51IHdhcyBzaG93biBkdWUgdG8gcHJlc3NpbmcgdGhlIGNvbnRleHQgbWVu
dSBrZXkKKyAgICAgICAgKG9yIFNoaWZ0K0YxMCkuCisKKyAgICAgICAgKiBXZWJWaWV3LmNwcDoK
KyAgICAgICAgKFdlYlZpZXc6OmhhbmRsZUNvbnRleHRNZW51RXZlbnQpOgorCiAyMDEwLTA3LTAx
ICBTdGV2ZSBGYWxrZW5idXJnICA8c2ZhbGtlbkBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3
ZWQgYnkgQWRlbGUgUGV0ZXJzb24uCkluZGV4OiBXZWJLaXQvd2luL1dlYlZpZXcuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYktpdC93aW4vV2ViVmlldy5jcHAJKHJldmlzaW9uIDYxNzkxKQorKysgV2Vi
S2l0L3dpbi9XZWJWaWV3LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTE4OCw4ICsxMTg4LDYgQEAK
IAogYm9vbCBXZWJWaWV3OjpoYW5kbGVDb250ZXh0TWVudUV2ZW50KFdQQVJBTSB3UGFyYW0sIExQ
QVJBTSBsUGFyYW0pCiB7Ci0gICAgc3RhdGljIGNvbnN0IGludCBjb250ZXh0TWVudU1hcmdpbiA9
IDE7Ci0KICAgICAvLyBUcmFuc2xhdGUgdGhlIHNjcmVlbiBjb29yZGluYXRlcyBpbnRvIHdpbmRv
dyBjb29yZGluYXRlcwogICAgIFBPSU5UIGNvb3JkcyA9IHsgR0VUX1hfTFBBUkFNKGxQYXJhbSks
IEdFVF9ZX0xQQVJBTShsUGFyYW0pIH07CiAgICAgaWYgKGNvb3Jkcy54ID09IC0xIHx8IGNvb3Jk
cy55ID09IC0xKSB7CkBAIC0xMTk3LDUxICsxMTk1LDE3IEBACiAgICAgICAgIGlmICghdmlldykK
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgICAgICBpbnQgcmlnaHRBbGlnbmVkID0g
OjpHZXRTeXN0ZW1NZXRyaWNzKFNNX01FTlVEUk9QQUxJR05NRU5UKTsKLSAgICAgICAgSW50UG9p
bnQgbG9jYXRpb247CisgICAgICAgIEZyYW1lKiBmcmFtZSA9IG1fcGFnZS0+Zm9jdXNDb250cm9s
bGVyKCktPmZvY3VzZWRPck1haW5GcmFtZSgpOwogCi0gICAgICAgIC8vIFRoZSBjb250ZXh0IG1l
bnUgZXZlbnQgd2FzIGdlbmVyYXRlZCBmcm9tIHRoZSBrZXlib2FyZCwgc28gc2hvdyB0aGUgY29u
dGV4dCBtZW51IGJ5IHRoZSBjdXJyZW50IHNlbGVjdGlvbi4KLSAgICAgICAgUG9zaXRpb24gc3Rh
cnQgPSBtX3BhZ2UtPm1haW5GcmFtZSgpLT5zZWxlY3Rpb24oKS0+c2VsZWN0aW9uKCkuc3RhcnQo
KTsKLSAgICAgICAgUG9zaXRpb24gZW5kID0gbV9wYWdlLT5tYWluRnJhbWUoKS0+c2VsZWN0aW9u
KCktPnNlbGVjdGlvbigpLmVuZCgpOworICAgICAgICAvLyBUaGUgY29udGV4dE1lbnVDb250cm9s
bGVyKCkgaG9sZHMgb250byB0aGUgbGFzdCBjb250ZXh0IG1lbnUgdGhhdCB3YXMgcG9wcGVkIHVw
IG9uIHRoZQorICAgICAgICAvLyBwYWdlIHVudGlsIGEgbmV3IG9uZSBpcyBjcmVhdGVkLiBXZSBu
ZWVkIHRvIGNsZWFyIHRoaXMgbWVudSBiZWZvcmUgcHJvcGFnYXRpbmcgdGhlIGV2ZW50CisgICAg
ICAgIC8vIHRocm91Z2ggdGhlIERPTSBzbyB0aGF0IHdlIGNhbiBkZXRlY3QgaWYgd2UgY3JlYXRl
IGEgbmV3IG1lbnUgZm9yIHRoaXMgZXZlbnQsIHNpbmNlIHdlCisgICAgICAgIC8vIHdvbid0IGNy
ZWF0ZSBhIG5ldyBtZW51IGlmIHRoZSBET00gc3dhbGxvd3MgdGhlIGV2ZW50IGFuZCB0aGUgZGVm
YXVsdEV2ZW50SGFuZGxlciBkb2VzCisgICAgICAgIC8vIG5vdCBydW4uCisgICAgICAgIG1fcGFn
ZS0+Y29udGV4dE1lbnVDb250cm9sbGVyKCktPmNsZWFyQ29udGV4dE1lbnUoKTsKIAotICAgICAg
ICBpZiAoIXN0YXJ0Lm5vZGUoKSB8fCAhZW5kLm5vZGUoKSkKLSAgICAgICAgICAgIGxvY2F0aW9u
ID0gSW50UG9pbnQocmlnaHRBbGlnbmVkID8gdmlldy0+Y29udGVudHNXaWR0aCgpIC0gY29udGV4
dE1lbnVNYXJnaW4gOiBjb250ZXh0TWVudU1hcmdpbiwgY29udGV4dE1lbnVNYXJnaW4pOwotICAg
ICAgICBlbHNlIHsKLSAgICAgICAgICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBzdGFydC5u
b2RlKCktPnJlbmRlcmVyKCk7Ci0gICAgICAgICAgICBpZiAoIXJlbmRlcmVyKQotICAgICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgcmV0dXJuIGZyYW1lLT5ldmVudEhhbmRsZXIo
KS0+c2VuZENvbnRleHRNZW51RXZlbnRGb3JLZXkoKTsKIAotICAgICAgICAgICAgLy8gQ2FsY3Vs
YXRlIHRoZSByZWN0IG9mIHRoZSBmaXJzdCBsaW5lIG9mIHRoZSBzZWxlY3Rpb24gKGNyaWJiZWQg
ZnJvbSAtW1dlYkNvcmVGcmFtZUJyaWRnZSBmaXJzdFJlY3RGb3JET01SYW5nZTpdLAotICAgICAg
ICAgICAgLy8gbm93IEZyYW1lOjpmaXJzdFJlY3RGb3JSYW5nZSgpLCB3aGljaCBwZXJoYXBzIHRo
aXMgc2hvdWxkIGNhbGwpLgotICAgICAgICAgICAgaW50IGV4dHJhV2lkdGhUb0VuZE9mTGluZSA9
IDA7Ci0KLSAgICAgICAgICAgIElubGluZUJveCogc3RhcnRJbmxpbmVCb3g7Ci0gICAgICAgICAg
ICBpbnQgc3RhcnRDYXJldE9mZnNldDsKLSAgICAgICAgICAgIHN0YXJ0LmdldElubGluZUJveEFu
ZE9mZnNldChET1dOU1RSRUFNLCBzdGFydElubGluZUJveCwgc3RhcnRDYXJldE9mZnNldCk7Ci0g
ICAgICAgICAgICBJbnRSZWN0IHN0YXJ0Q2FyZXRSZWN0ID0gcmVuZGVyZXItPmxvY2FsQ2FyZXRS
ZWN0KHN0YXJ0SW5saW5lQm94LCBzdGFydENhcmV0T2Zmc2V0LCAmZXh0cmFXaWR0aFRvRW5kT2ZM
aW5lKTsKLSAgICAgICAgICAgIGlmIChzdGFydENhcmV0UmVjdCAhPSBJbnRSZWN0KCkpCi0gICAg
ICAgICAgICAgICAgc3RhcnRDYXJldFJlY3QgPSByZW5kZXJlci0+bG9jYWxUb0Fic29sdXRlUXVh
ZChGbG9hdFJlY3Qoc3RhcnRDYXJldFJlY3QpKS5lbmNsb3NpbmdCb3VuZGluZ0JveCgpOwotCi0g
ICAgICAgICAgICBJbmxpbmVCb3gqIGVuZElubGluZUJveDsKLSAgICAgICAgICAgIGludCBlbmRD
YXJldE9mZnNldDsKLSAgICAgICAgICAgIGVuZC5nZXRJbmxpbmVCb3hBbmRPZmZzZXQoVVBTVFJF
QU0sIGVuZElubGluZUJveCwgZW5kQ2FyZXRPZmZzZXQpOwotICAgICAgICAgICAgSW50UmVjdCBl
bmRDYXJldFJlY3QgPSByZW5kZXJlci0+bG9jYWxDYXJldFJlY3QoZW5kSW5saW5lQm94LCBlbmRD
YXJldE9mZnNldCk7Ci0gICAgICAgICAgICBpZiAoZW5kQ2FyZXRSZWN0ICE9IEludFJlY3QoKSkK
LSAgICAgICAgICAgICAgICBlbmRDYXJldFJlY3QgPSByZW5kZXJlci0+bG9jYWxUb0Fic29sdXRl
UXVhZChGbG9hdFJlY3QoZW5kQ2FyZXRSZWN0KSkuZW5jbG9zaW5nQm91bmRpbmdCb3goKTsKLQot
ICAgICAgICAgICAgSW50UmVjdCBmaXJzdFJlY3Q7Ci0gICAgICAgICAgICBpZiAoc3RhcnRDYXJl
dFJlY3QueSgpID09IGVuZENhcmV0UmVjdC55KCkpCi0gICAgICAgICAgICAgICAgZmlyc3RSZWN0
ID0gSW50UmVjdChtaW4oc3RhcnRDYXJldFJlY3QueCgpLCBlbmRDYXJldFJlY3QueCgpKSwgc3Rh
cnRDYXJldFJlY3QueSgpLCBhYnMoZW5kQ2FyZXRSZWN0LngoKSAtIHN0YXJ0Q2FyZXRSZWN0Lngo
KSksIG1heChzdGFydENhcmV0UmVjdC5oZWlnaHQoKSwgZW5kQ2FyZXRSZWN0LmhlaWdodCgpKSk7
Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgZmlyc3RSZWN0ID0gSW50UmVjdChz
dGFydENhcmV0UmVjdC54KCksIHN0YXJ0Q2FyZXRSZWN0LnkoKSwgc3RhcnRDYXJldFJlY3Qud2lk
dGgoKSArIGV4dHJhV2lkdGhUb0VuZE9mTGluZSwgc3RhcnRDYXJldFJlY3QuaGVpZ2h0KCkpOwot
Ci0gICAgICAgICAgICBsb2NhdGlvbiA9IEludFBvaW50KHJpZ2h0QWxpZ25lZCA/IGZpcnN0UmVj
dC5yaWdodCgpIDogZmlyc3RSZWN0LngoKSwgZmlyc3RSZWN0LmJvdHRvbSgpKTsKLSAgICAgICAg
fQotCi0gICAgICAgIGxvY2F0aW9uID0gdmlldy0+Y29udGVudHNUb1dpbmRvdyhsb2NhdGlvbik7
Ci0gICAgICAgIC8vIEZJWE1FOiBUaGUgSW50U2l6ZSgwLCAtMSkgaXMgYSBoYWNrIHRvIGdldCB0
aGUgaGl0LXRlc3RpbmcgdG8gcmVzdWx0IGluIHRoZSBzZWxlY3RlZCBlbGVtZW50LgotICAgICAg
ICAvLyBJZGVhbGx5IHdlJ2QgaGF2ZSB0aGUgcG9zaXRpb24gb2YgYSBjb250ZXh0IG1lbnUgZXZl
bnQgYmUgc2VwYXJhdGUgZnJvbSBpdHMgdGFyZ2V0IG5vZGUuCi0gICAgICAgIGNvb3JkcyA9IGxv
Y2F0aW9uICsgSW50U2l6ZSgwLCAtMSk7CiAgICAgfSBlbHNlIHsKICAgICAgICAgaWYgKCE6OlNj
cmVlblRvQ2xpZW50KG1fdmlld1dpbmRvdywgJmNvb3JkcykpCiAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CkBAIC0xMjQ5LDExICsxMjEzLDYgQEAKIAogICAgIGxQYXJhbSA9IE1BS0VMUEFSQU0o
Y29vcmRzLngsIGNvb3Jkcy55KTsKIAotICAgIC8vIFRoZSBjb250ZXh0TWVudUNvbnRyb2xsZXIo
KSBob2xkcyBvbnRvIHRoZSBsYXN0IGNvbnRleHQgbWVudSB0aGF0IHdhcyBwb3BwZWQgdXAgb24g
dGhlCi0gICAgLy8gcGFnZSB1bnRpbCBhIG5ldyBvbmUgaXMgY3JlYXRlZC4gV2UgbmVlZCB0byBj
bGVhciB0aGlzIG1lbnUgYmVmb3JlIHByb3BhZ2F0aW5nIHRoZSBldmVudAotICAgIC8vIHRocm91
Z2ggdGhlIERPTSBzbyB0aGF0IHdlIGNhbiBkZXRlY3QgaWYgd2UgY3JlYXRlIGEgbmV3IG1lbnUg
Zm9yIHRoaXMgZXZlbnQsIHNpbmNlIHdlCi0gICAgLy8gd29uJ3QgY3JlYXRlIGEgbmV3IG1lbnUg
aWYgdGhlIERPTSBzd2FsbG93cyB0aGUgZXZlbnQgYW5kIHRoZSBkZWZhdWx0RXZlbnRIYW5kbGVy
IGRvZXMKLSAgICAvLyBub3QgcnVuLgogICAgIG1fcGFnZS0+Y29udGV4dE1lbnVDb250cm9sbGVy
KCktPmNsZWFyQ29udGV4dE1lbnUoKTsKIAogICAgIEludFBvaW50IGRvY3VtZW50UG9pbnQobV9w
YWdlLT5tYWluRnJhbWUoKS0+dmlldygpLT53aW5kb3dUb0NvbnRlbnRzKGNvb3JkcykpOwpJbmRl
eDogV2ViQ29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDYyMzk5KQorKysgV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEs
MyArMSwyNyBAQAorMjAxMC0wNy0wMiAgRXJpayBBcnZpZHNzb24gIDxhcnZAY2hyb21pdW0ub3Jn
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEZpeCBp
c3N1ZSB3aGVyZSBhIGNvbnRleHRtZW51IGV2ZW50IHdhcyByZXBvcnRpbmcgdGhlIHdyb25nIHRh
cmdldCBpZgorICAgICAgICB0aGUgY29udGV4dCBtZW51IHdhcyBzaG93biBkdWUgdG8gcHJlc3Np
bmcgdGhlIGNvbnRleHQgbWVudSBrZXkKKyAgICAgICAgKG9yIFNoaWZ0K0YxMCkuCisgICAgICAg
IAorICAgICAgICBTcGxpdCBzZW5kQ29udGV4dE1lbnVGb3JFdmVudCBpbnRvIG9uZSBjYXNlIGZv
ciBrZXlib2FyZCBldmVudHMgYW5kIHVzZQorICAgICAgICB0aGF0IHdoZW4gdGhlIGNvbnRleHRt
ZW51IGV2ZW50IHNob3VsZCBiZSBkaXNwYXRjaGVkIGR1ZSB0byBhIGtleXByZXNzLgorCisgICAg
ICAgIEZvciB0aGUga2Vib2FyZCBjYXNlIFdlIG5vdyB1c2UgdGhlIGZvY3VzZWQgbm9kZSBhcyB0
aGUgdGFyZ2V0IGZvciB0aGUKKyAgICAgICAgZXZlbnQgYW5kIHVzZSB0aGUgY2xpcHBlZCByZWN0
IHRvIGRldGVybWluZSB0aGUgcG9zaXRpb24gb2YgdGhlIG1lbnUuCisgICAgICAgIAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzgxMjkKKworICAgICAg
ICBVc2UgbWFudWFsIHRlc3Qgc2luY2UgRFJUIGRvZXMgbm90IGhhbmRsZSBjb250ZXh0IG1lbnUg
a2V5cy4KKworICAgICAgICAqIG1hbnVhbC10ZXN0cy93aW4vY29udGV4dG1lbnUta2V5Lmh0bWw6
IEFkZGVkLgorICAgICAgICAqIHBhZ2UvRXZlbnRIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkV2ZW50SGFuZGxlcjo6c2VuZENvbnRleHRNZW51RXZlbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6RXZlbnRIYW5kbGVyOjpzZW5kQ29udGV4dE1lbnVFdmVudEZvcktleSk6CisgICAgICAgICog
cGFnZS9FdmVudEhhbmRsZXIuaDoKKwogMjAxMC0wNy0wMiAgQWJoaXNoZWsgQXJ5YSAgPGluZmVy
bm9AY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEZpc2hlci4KSW5k
ZXg6IFdlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3Bh
Z2UvRXZlbnRIYW5kbGVyLmgJKHJldmlzaW9uIDYxNzkxKQorKysgV2ViQ29yZS9wYWdlL0V2ZW50
SGFuZGxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNTcsNiArMTU3LDcgQEAKIAogI2lmIEVOQUJM
RShDT05URVhUX01FTlVTKQogICAgIGJvb2wgc2VuZENvbnRleHRNZW51RXZlbnQoY29uc3QgUGxh
dGZvcm1Nb3VzZUV2ZW50Jik7CisgICAgYm9vbCBzZW5kQ29udGV4dE1lbnVFdmVudEZvcktleSgp
OwogI2VuZGlmCiAKICAgICB2b2lkIHNldE1vdXNlRG93bk1heVN0YXJ0QXV0b3Njcm9sbCgpIHsg
bV9tb3VzZURvd25NYXlTdGFydEF1dG9zY3JvbGwgPSB0cnVlOyB9CkluZGV4OiBXZWJDb3JlL3Bh
Z2UvRXZlbnRIYW5kbGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvRXZlbnRIYW5k
bGVyLmNwcAkocmV2aXNpb24gNjE3OTEpCisrKyBXZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMjAxNiwxMCArMjAxNiw4MSBAQAogICAgIH0KICNlbmRpZgog
Ci0gICAgc3dhbGxvd0V2ZW50ID0gZGlzcGF0Y2hNb3VzZUV2ZW50KGV2ZW50TmFtZXMoKS5jb250
ZXh0bWVudUV2ZW50LCBtZXYudGFyZ2V0Tm9kZSgpLCB0cnVlLCAwLCBldmVudCwgdHJ1ZSk7Cisg
ICAgc3dhbGxvd0V2ZW50ID0gZGlzcGF0Y2hNb3VzZUV2ZW50KGV2ZW50TmFtZXMoKS5jb250ZXh0
bWVudUV2ZW50LCBtZXYudGFyZ2V0Tm9kZSgpLCB0cnVlLCAwLCBldmVudCwgZmFsc2UpOwogICAg
IAogICAgIHJldHVybiBzd2FsbG93RXZlbnQ7CiB9CisKK2Jvb2wgRXZlbnRIYW5kbGVyOjpzZW5k
Q29udGV4dE1lbnVFdmVudEZvcktleSgpCit7CisgICAgRnJhbWVWaWV3KiB2aWV3ID0gbV9mcmFt
ZS0+dmlldygpOworICAgIGlmICghdmlldykKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAg
RG9jdW1lbnQqIGRvYyA9IG1fZnJhbWUtPmRvY3VtZW50KCk7CisgICAgaWYgKCFkb2MpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKworICAgIHN0YXRpYyBjb25zdCBpbnQga0NvbnRleHRNZW51TWFy
Z2luID0gMTsKKworI2lmIE9TKFdJTkRPV1MpCisgICAgaW50IHJpZ2h0QWxpZ25lZCA9IDo6R2V0
U3lzdGVtTWV0cmljcyhTTV9NRU5VRFJPUEFMSUdOTUVOVCk7CisjZWxzZQorICAgIGludCByaWdo
dEFsaWduZWQgPSAwOworI2VuZGlmCisgICAgSW50UG9pbnQgbG9jYXRpb247CisKKyAgICBOb2Rl
KiBmb2N1c2VkTm9kZSA9IGRvYy0+Zm9jdXNlZE5vZGUoKTsKKyAgICBTZWxlY3Rpb25Db250cm9s
bGVyKiBzZWxlY3Rpb25Db250cm9sbGVyID0gbV9mcmFtZS0+c2VsZWN0aW9uKCk7CisgICAgUG9z
aXRpb24gc3RhcnQgPSBzZWxlY3Rpb25Db250cm9sbGVyLT5zZWxlY3Rpb24oKS5zdGFydCgpOwor
CisgICAgaWYgKHN0YXJ0Lm5vZGUoKSAmJiAoc2VsZWN0aW9uQ29udHJvbGxlci0+cm9vdEVkaXRh
YmxlRWxlbWVudCgpIHx8IHNlbGVjdGlvbkNvbnRyb2xsZXItPmlzUmFuZ2UoKSkpIHsKKyAgICAg
ICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IHN0YXJ0Lm5vZGUoKS0+cmVuZGVyZXIoKTsKKyAg
ICAgICAgaWYgKCFyZW5kZXJlcikKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAg
ICBSZWZQdHI8UmFuZ2U+IHNlbGVjdGlvbiA9IHNlbGVjdGlvbkNvbnRyb2xsZXItPnRvTm9ybWFs
aXplZFJhbmdlKCk7CisgICAgICAgIEludFJlY3QgZmlyc3RSZWN0ID0gbV9mcmFtZS0+Zmlyc3RS
ZWN0Rm9yUmFuZ2Uoc2VsZWN0aW9uLmdldCgpKTsKKworICAgICAgICBpbnQgeCA9IHJpZ2h0QWxp
Z25lZCA/IGZpcnN0UmVjdC5yaWdodCgpIDogZmlyc3RSZWN0LngoKTsKKyAgICAgICAgbG9jYXRp
b24gPSBJbnRQb2ludCh4LCBmaXJzdFJlY3QuYm90dG9tKCkpOworICAgIH0gZWxzZSBpZiAoZm9j
dXNlZE5vZGUpIHsKKyAgICAgICAgUmVuZGVyQm94TW9kZWxPYmplY3QqIGJveCA9IGZvY3VzZWRO
b2RlLT5yZW5kZXJCb3hNb2RlbE9iamVjdCgpOworICAgICAgICBJbnRSZWN0IGNsaXBwZWRSZWN0
ID0gYm94LT5hYnNvbHV0ZUNsaXBwZWRPdmVyZmxvd1JlY3QoKTsKKyAgICAgICAgbG9jYXRpb24g
PSBjbGlwcGVkUmVjdC5ib3R0b21MZWZ0KCk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgbG9jYXRp
b24gPSBJbnRQb2ludCgKKyAgICAgICAgICAgIHJpZ2h0QWxpZ25lZCA/IHZpZXctPmNvbnRlbnRz
V2lkdGgoKSAtIGtDb250ZXh0TWVudU1hcmdpbiA6IGtDb250ZXh0TWVudU1hcmdpbiwKKyAgICAg
ICAgICAgIGtDb250ZXh0TWVudU1hcmdpbik7CisgICAgfQorCisgICAgbV9mcmFtZS0+dmlldygp
LT5zZXRDdXJzb3IocG9pbnRlckN1cnNvcigpKTsKKworICAgIEludFBvaW50IHBvc2l0aW9uID0g
dmlldy0+Y29udGVudHNUb1dpbmRvdyhsb2NhdGlvbik7CisgICAgSW50UG9pbnQgZ2xvYmFsUG9z
aXRpb24gPSB2aWV3LT5jb250ZW50c1RvU2NyZWVuKEludFJlY3QobG9jYXRpb24sIEludFNpemUo
KSkpLmxvY2F0aW9uKCk7CisKKyNpZiBPUyhXSU5ET1dTKQorICAgIE1vdXNlRXZlbnRUeXBlIGV2
ZW50VHlwZSA9IE1vdXNlRXZlbnRSZWxlYXNlZDsKKyNlbHNlCisgICAgTW91c2VFdmVudFR5cGUg
ZXZlbnRUeXBlID0gTW91c2VFdmVudFByZXNzZWQ7CisjZW5kaWYKKworICAgIFBsYXRmb3JtTW91
c2VFdmVudCBtb3VzZUV2ZW50KHBvc2l0aW9uLCBnbG9iYWxQb3NpdGlvbiwgUmlnaHRCdXR0b24s
IGV2ZW50VHlwZSwgMSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIFdURjo6Y3VycmVudFRp
bWUoKSk7CisKKyAgICBOb2RlKiB0YXJnZXROb2RlID0gZG9jLT5mb2N1c2VkTm9kZSgpOworICAg
IGlmICghdGFyZ2V0Tm9kZSkKKyAgICAgICAgdGFyZ2V0Tm9kZSA9IGRvYzsKKworICAgIC8vIFVz
ZSB0aGUgZm9jdXNlZCBub2RlIGFzIHRoZSB0YXJnZXQgZm9yIGhvdmVyIGFuZCBhY3RpdmUuCisg
ICAgSGl0VGVzdFJlc3VsdCByZXN1bHQocG9zaXRpb24pOworICAgIHJlc3VsdC5zZXRJbm5lck5v
ZGUodGFyZ2V0Tm9kZSk7CisgICAgSGl0VGVzdFJlcXVlc3QgcmVxdWVzdChIaXRUZXN0UmVxdWVz
dDo6QWN0aXZlKTsKKyAgICBkb2MtPnJlbmRlclZpZXcoKS0+bGF5ZXIoKS0+dXBkYXRlSG92ZXJB
Y3RpdmVTdGF0ZShyZXF1ZXN0LCByZXN1bHQpOworICAgIGRvYy0+dXBkYXRlU3R5bGVJZk5lZWRl
ZCgpOworICAgCisgICAgcmV0dXJuIGRpc3BhdGNoTW91c2VFdmVudChldmVudE5hbWVzKCkuY29u
dGV4dG1lbnVFdmVudCwgdGFyZ2V0Tm9kZSwgdHJ1ZSwgMCwgbW91c2VFdmVudCwgZmFsc2UpOwor
fQorCiAjZW5kaWYgLy8gRU5BQkxFKENPTlRFWFRfTUVOVVMpCiAKIHZvaWQgRXZlbnRIYW5kbGVy
OjpzY2hlZHVsZUhvdmVyU3RhdGVVcGRhdGUoKQpJbmRleDogV2ViQ29yZS9tYW51YWwtdGVzdHMv
d2luL2NvbnRleHRtZW51LWtleS5odG1sCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvbWFudWFsLXRl
c3RzL3dpbi9jb250ZXh0bWVudS1rZXkuaHRtbAkocmV2aXNpb24gMCkKKysrIFdlYkNvcmUvbWFu
dWFsLXRlc3RzL3dpbi9jb250ZXh0bWVudS1rZXkuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCAr
MSwxMTIgQEAKKzwhRE9DVFlQRSBodG1sPgorPGh0bWw+Cis8aGVhZD4KKzxzdHlsZT4KKworI291
dGVyIHsKKyAgICBvdmVyZmxvdzogYXV0bzsKKyAgICB3aWR0aDogMjAwcHg7CisgICAgaGVpZ2h0
OiAyMDBweDsKK30KKworI2lubmVyIHsKKyAgICBwb3NpdGlvbjogcmVsYXRpdmU7CisgICAgaGVp
Z2h0OiA0MDBweDsKK30KKworI2lubmVyOmZvY3VzIHsKKyAgICBiYWNrZ3JvdW5kLWNvbG9yOiBs
aWdodGJsdWU7Cit9CisKKyNpbm5lcjphY3RpdmUgeworICAgIGJhY2tncm91bmQtY29sb3I6IGJs
dWU7Cit9CisKKyNoLCAjaDIgeworICAgIGJhY2tncm91bmQ6IHJnYmEoMjU1LCAyNTUsIDI1NSwg
MCk7Cit9CisKKyNoIHsKKyAgICBwb3NpdGlvbjogYWJzb2x1dGU7CisgICAgaGVpZ2h0OiAyMDBw
eDsKKyAgICB3aWR0aDogMjAwcHg7Cit9CisKKyNoMiB7CisgICAgcG9zaXRpb246IGFic29sdXRl
OworICAgIHRvcDogMjAwcHg7CisgICAgaGVpZ2h0OiAyMDBweDsKKyAgICB3aWR0aDogMTAwJTsK
K30KKworI2g6aG92ZXIsCisjaDI6aG92ZXIgeworICAgIGJhY2tncm91bmQ6IHBpbms7Cit9CisK
KyNoOmFjdGl2ZSwKKyNoMjphY3RpdmUgeworICAgIGJhY2tncm91bmQ6IHJlZDsKK30KKworcHJl
IHsKKyAgICBwb3NpdGlvbjogYWJzb2x1dGU7CisgICAgbGVmdDogMjUwcHg7CisgICAgdG9wOiA4
MHB4OworfQorCis8L3N0eWxlPgorPC9oZWFkPgorPGJvZHk+CisKKzxwPk1hbnVhbCB0ZXN0IGZv
ciA8YSBocmVmPSJodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzgxMjki
PmJ1ZyAzODEyOTwvYT48L3A+CisKKzxwPkNsaWNrIHRoZSBkaXYgYmVsb3cgYW5kIHByZXNzIHRo
ZSBjb250ZXh0IG1lbnUga2V5IG9uIHlvdXIga2V5Ym9hcmQgKFNoaWZ0K0YxMCBhbHNvIHdvcmtz
KTwvcD4KKworPGRpdiBpZD1vdXRlcj4KKyAgICA8ZGl2IGlkPWlubmVyIHRhYmluZGV4PTA+Cisg
ICAgICAgIDxkaXYgaWQ9aDI+PC9kaXY+CisgICAgPC9kaXY+Cis8L2Rpdj4KKworPGRpdiBpZD1o
PjwvZGl2PgorCis8cHJlPjwvcHJlPgorCis8c2NyaXB0PgorCitmdW5jdGlvbiBjcyhlbCkKK3sK
KyAgICBpZiAod2luZG93LmdldENvbXB1dGVkU3R5bGUpCisgICAgICAgIHJldHVybiB3aW5kb3cu
Z2V0Q29tcHV0ZWRTdHlsZShlbCwgJycpOworICAgIHJldHVybiBlbC5jdXJyZW50U3R5bGU7Cit9
CisKK2RvY3VtZW50LmFkZEV2ZW50TGlzdGVuZXIoJ2NvbnRleHRtZW51JywgZnVuY3Rpb24oZSkK
K3sKKyAgICB2YXIgaW5uZXIgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjaW5uZXInKTsKKyAg
ICB2YXIgb3V0ZXIgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjb3V0ZXInKTsKKyAgICB2YXIg
aCA9IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNoJyk7CisgICAgdmFyIGgyID0gZG9jdW1lbnQu
cXVlcnlTZWxlY3RvcignI2gyJyk7CisgICAgdmFyIHJlc3VsdCA9IFtdOworCisgICAgcmVzdWx0
LnB1c2goZS50YXJnZXQsIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3IoJyNpbm5lcicpKTsKKyAgICBy
ZXN1bHQucHVzaChjcyhpbm5lciwgJycpLmJhY2tncm91bmRDb2xvciwgJ3JnYigwLCAwLCAyNTUp
Jyk7CisgICAgcmVzdWx0LnB1c2goY3MoaCwgJycpLmJhY2tncm91bmRDb2xvciwgJ3JnYmEoMjU1
LCAyNTUsIDI1NSwgMCknKTsKKyAgICByZXN1bHQucHVzaChjcyhoMiwgJycpLmJhY2tncm91bmRD
b2xvciwgJ3JnYmEoMjU1LCAyNTUsIDI1NSwgMCknKTsKKworICAgIHZhciBzID0gJyc7CisgICAg
Zm9yICh2YXIgaSA9IDA7IGkgPCByZXN1bHQubGVuZ3RoOyBpICs9IDIpIHsKKyAgICAgICAgcyAr
PSByZXN1bHRbaV0gKyAnID09ICcgKyByZXN1bHRbaSArIDFdICsgJyAtICcgKworICAgICAgICAg
ICAgKHJlc3VsdFtpXSA9PSByZXN1bHRbaSArIDFdID8gJ1BBU1MnIDogJ0ZBSUwnKSArICc8YnI+
JzsKKyAgICB9CisKKyAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCdwcmUnKS5pbm5lckhUTUwg
PSBzOworCisgICAgcmV0dXJuIHRydWU7Cit9LCBmYWxzZSk7CisKKzwvc2NyaXB0PgorCis8L2Jv
ZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>60420</attachid>
            <date>2010-07-02 16:56:06 -0700</date>
            <delta_ts>2010-07-03 06:47:41 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-38129-20100702165606.patch</filename>
            <type>text/plain</type>
            <size>16896</size>
            <attacher name="Erik Arvidsson">arv</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2MjM5OSkKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjcgQEAKKzIwMTAtMDctMDIgIEVyaWsgQXJ2aWRzc29uICA8YXJ2QGNocm9taXVt
Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBvamFuQGNocm9taXVtLm9yZy4KKworICAgICAg
ICBGaXggaXNzdWUgd2hlcmUgYSBjb250ZXh0bWVudSBldmVudCB3YXMgcmVwb3J0aW5nIHRoZSB3
cm9uZyB0YXJnZXQgaWYKKyAgICAgICAgdGhlIGNvbnRleHQgbWVudSB3YXMgc2hvd24gZHVlIHRv
IHByZXNzaW5nIHRoZSBjb250ZXh0IG1lbnUga2V5CisgICAgICAgIChvciBTaGlmdCtGMTApLgor
ICAgICAgICAKKyAgICAgICAgU3BsaXQgc2VuZENvbnRleHRNZW51Rm9yRXZlbnQgaW50byBvbmUg
Y2FzZSBmb3Iga2V5Ym9hcmQgZXZlbnRzIGFuZCB1c2UKKyAgICAgICAgdGhhdCB3aGVuIHRoZSBj
b250ZXh0bWVudSBldmVudCBzaG91bGQgYmUgZGlzcGF0Y2hlZCBkdWUgdG8gYSBrZXlwcmVzcy4K
KworICAgICAgICBGb3IgdGhlIGtlYm9hcmQgY2FzZSB3ZSBub3cgdXNlIHRoZSBmb2N1c2VkIG5v
ZGUgYXMgdGhlIHRhcmdldCBmb3IgdGhlCisgICAgICAgIGV2ZW50IGFuZCB1c2UgdGhlIGNsaXBw
ZWQgcmVjdCB0byBkZXRlcm1pbmUgdGhlIHBvc2l0aW9uIG9mIHRoZSBtZW51LgorICAgICAgICAK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM4MTI5CisK
KyAgICAgICAgVXNlIG1hbnVhbCB0ZXN0IHNpbmNlIERSVCBkb2VzIG5vdCBoYW5kbGUgY29udGV4
dCBtZW51IGtleXMuCisKKyAgICAgICAgKiBtYW51YWwtdGVzdHMvd2luL2NvbnRleHRtZW51LWtl
eS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBwYWdlL0V2ZW50SGFuZGxlci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OnNlbmRDb250ZXh0TWVudUV2ZW50KToKKyAgICAgICAg
KFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6c2VuZENvbnRleHRNZW51RXZlbnRGb3JLZXkpOgorICAg
ICAgICAqIHBhZ2UvRXZlbnRIYW5kbGVyLmg6CisKIDIwMTAtMDctMDIgIEFiaGlzaGVrIEFyeWEg
IDxpbmZlcm5vQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBGaXNo
ZXIuCkluZGV4OiBXZWJDb3JlL21hbnVhbC10ZXN0cy93aW4vY29udGV4dG1lbnUta2V5Lmh0bWwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9tYW51YWwtdGVzdHMvd2luL2NvbnRleHRtZW51LWtleS5o
dG1sCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9tYW51YWwtdGVzdHMvd2luL2NvbnRleHRtZW51
LWtleS5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDExMiBAQAorPCFET0NUWVBFIGh0bWw+
Cis8aHRtbD4KKzxoZWFkPgorPHN0eWxlPgorCisjb3V0ZXIgeworICAgIG92ZXJmbG93OiBhdXRv
OworICAgIHdpZHRoOiAyMDBweDsKKyAgICBoZWlnaHQ6IDIwMHB4OworfQorCisjaW5uZXIgewor
ICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKKyAgICBoZWlnaHQ6IDQwMHB4OworfQorCisjaW5uZXI6
Zm9jdXMgeworICAgIGJhY2tncm91bmQtY29sb3I6IGxpZ2h0Ymx1ZTsKK30KKworI2lubmVyOmFj
dGl2ZSB7CisgICAgYmFja2dyb3VuZC1jb2xvcjogYmx1ZTsKK30KKworI2gsICNoMiB7CisgICAg
YmFja2dyb3VuZDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwKTsKK30KKworI2ggeworICAgIHBvc2l0
aW9uOiBhYnNvbHV0ZTsKKyAgICBoZWlnaHQ6IDIwMHB4OworICAgIHdpZHRoOiAyMDBweDsKK30K
KworI2gyIHsKKyAgICBwb3NpdGlvbjogYWJzb2x1dGU7CisgICAgdG9wOiAyMDBweDsKKyAgICBo
ZWlnaHQ6IDIwMHB4OworICAgIHdpZHRoOiAxMDAlOworfQorCisjaDpob3ZlciwKKyNoMjpob3Zl
ciB7CisgICAgYmFja2dyb3VuZDogcGluazsKK30KKworI2g6YWN0aXZlLAorI2gyOmFjdGl2ZSB7
CisgICAgYmFja2dyb3VuZDogcmVkOworfQorCitwcmUgeworICAgIHBvc2l0aW9uOiBhYnNvbHV0
ZTsKKyAgICBsZWZ0OiAyNTBweDsKKyAgICB0b3A6IDgwcHg7Cit9CisKKzwvc3R5bGU+Cis8L2hl
YWQ+Cis8Ym9keT4KKworPHA+TWFudWFsIHRlc3QgZm9yIDxhIGhyZWY9Imh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zODEyOSI+YnVnIDM4MTI5PC9hPjwvcD4KKworPHA+
Q2xpY2sgdGhlIGRpdiBiZWxvdyBhbmQgcHJlc3MgdGhlIGNvbnRleHQgbWVudSBrZXkgb24geW91
ciBrZXlib2FyZCAoU2hpZnQrRjEwIGFsc28gd29ya3MpPC9wPgorCis8ZGl2IGlkPW91dGVyPgor
ICAgIDxkaXYgaWQ9aW5uZXIgdGFiaW5kZXg9MD4KKyAgICAgICAgPGRpdiBpZD1oMj48L2Rpdj4K
KyAgICA8L2Rpdj4KKzwvZGl2PgorCis8ZGl2IGlkPWg+PC9kaXY+CisKKzxwcmU+PC9wcmU+CisK
KzxzY3JpcHQ+CisKK2Z1bmN0aW9uIGNzKGVsKQoreworICAgIGlmICh3aW5kb3cuZ2V0Q29tcHV0
ZWRTdHlsZSkKKyAgICAgICAgcmV0dXJuIHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGVsLCAnJyk7
CisgICAgcmV0dXJuIGVsLmN1cnJlbnRTdHlsZTsKK30KKworZG9jdW1lbnQuYWRkRXZlbnRMaXN0
ZW5lcignY29udGV4dG1lbnUnLCBmdW5jdGlvbihlKQoreworICAgIHZhciBpbm5lciA9IGRvY3Vt
ZW50LnF1ZXJ5U2VsZWN0b3IoJyNpbm5lcicpOworICAgIHZhciBvdXRlciA9IGRvY3VtZW50LnF1
ZXJ5U2VsZWN0b3IoJyNvdXRlcicpOworICAgIHZhciBoID0gZG9jdW1lbnQucXVlcnlTZWxlY3Rv
cignI2gnKTsKKyAgICB2YXIgaDIgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjaDInKTsKKyAg
ICB2YXIgcmVzdWx0ID0gW107CisKKyAgICByZXN1bHQucHVzaChlLnRhcmdldCwgZG9jdW1lbnQu
cXVlcnlTZWxlY3RvcignI2lubmVyJykpOworICAgIHJlc3VsdC5wdXNoKGNzKGlubmVyLCAnJyku
YmFja2dyb3VuZENvbG9yLCAncmdiKDAsIDAsIDI1NSknKTsKKyAgICByZXN1bHQucHVzaChjcyho
LCAnJykuYmFja2dyb3VuZENvbG9yLCAncmdiYSgyNTUsIDI1NSwgMjU1LCAwKScpOworICAgIHJl
c3VsdC5wdXNoKGNzKGgyLCAnJykuYmFja2dyb3VuZENvbG9yLCAncmdiYSgyNTUsIDI1NSwgMjU1
LCAwKScpOworCisgICAgdmFyIHMgPSAnJzsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IHJlc3Vs
dC5sZW5ndGg7IGkgKz0gMikgeworICAgICAgICBzICs9IHJlc3VsdFtpXSArICcgPT0gJyArIHJl
c3VsdFtpICsgMV0gKyAnIC0gJyArCisgICAgICAgICAgICAocmVzdWx0W2ldID09IHJlc3VsdFtp
ICsgMV0gPyAnUEFTUycgOiAnRkFJTCcpICsgJzxicj4nOworICAgIH0KKworICAgIGRvY3VtZW50
LnF1ZXJ5U2VsZWN0b3IoJ3ByZScpLmlubmVySFRNTCA9IHM7CisKKyAgICByZXR1cm4gdHJ1ZTsK
K30sIGZhbHNlKTsKKworPC9zY3JpcHQ+CisKKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IFdlYkNv
cmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9FdmVu
dEhhbmRsZXIuY3BwCShyZXZpc2lvbiA2MTc5MSkKKysrIFdlYkNvcmUvcGFnZS9FdmVudEhhbmRs
ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMDE2LDEwICsyMDE2LDg0IEBAIGJvb2wgRXZlbnRI
YW5kbGVyOjpzZW5kQ29udGV4dE1lbnVFdmVudCgKICAgICB9CiAjZW5kaWYKIAotICAgIHN3YWxs
b3dFdmVudCA9IGRpc3BhdGNoTW91c2VFdmVudChldmVudE5hbWVzKCkuY29udGV4dG1lbnVFdmVu
dCwgbWV2LnRhcmdldE5vZGUoKSwgdHJ1ZSwgMCwgZXZlbnQsIHRydWUpOworICAgIHN3YWxsb3dF
dmVudCA9IGRpc3BhdGNoTW91c2VFdmVudChldmVudE5hbWVzKCkuY29udGV4dG1lbnVFdmVudCwg
bWV2LnRhcmdldE5vZGUoKSwgdHJ1ZSwgMCwgZXZlbnQsIGZhbHNlKTsKICAgICAKICAgICByZXR1
cm4gc3dhbGxvd0V2ZW50OwogfQorCitib29sIEV2ZW50SGFuZGxlcjo6c2VuZENvbnRleHRNZW51
RXZlbnRGb3JLZXkoKQoreworICAgIEZyYW1lVmlldyogdmlldyA9IG1fZnJhbWUtPnZpZXcoKTsK
KyAgICBpZiAoIXZpZXcpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIERvY3VtZW50KiBk
b2MgPSBtX2ZyYW1lLT5kb2N1bWVudCgpOworICAgIGlmICghZG9jKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisKKyAgICBzdGF0aWMgY29uc3QgaW50IGtDb250ZXh0TWVudU1hcmdpbiA9IDE7CisK
KyNpZiBPUyhXSU5ET1dTKQorICAgIGludCByaWdodEFsaWduZWQgPSA6OkdldFN5c3RlbU1ldHJp
Y3MoU01fTUVOVURST1BBTElHTk1FTlQpOworI2Vsc2UKKyAgICBpbnQgcmlnaHRBbGlnbmVkID0g
MDsKKyNlbmRpZgorICAgIEludFBvaW50IGxvY2F0aW9uOworCisgICAgTm9kZSogZm9jdXNlZE5v
ZGUgPSBkb2MtPmZvY3VzZWROb2RlKCk7CisgICAgU2VsZWN0aW9uQ29udHJvbGxlciogc2VsZWN0
aW9uQ29udHJvbGxlciA9IG1fZnJhbWUtPnNlbGVjdGlvbigpOworICAgIFBvc2l0aW9uIHN0YXJ0
ID0gc2VsZWN0aW9uQ29udHJvbGxlci0+c2VsZWN0aW9uKCkuc3RhcnQoKTsKKworICAgIGlmIChz
dGFydC5ub2RlKCkgJiYgKHNlbGVjdGlvbkNvbnRyb2xsZXItPnJvb3RFZGl0YWJsZUVsZW1lbnQo
KSB8fCBzZWxlY3Rpb25Db250cm9sbGVyLT5pc1JhbmdlKCkpKSB7CisgICAgICAgIFJlbmRlck9i
amVjdCogcmVuZGVyZXIgPSBzdGFydC5ub2RlKCktPnJlbmRlcmVyKCk7CisgICAgICAgIGlmICgh
cmVuZGVyZXIpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgUmVmUHRyPFJh
bmdlPiBzZWxlY3Rpb24gPSBzZWxlY3Rpb25Db250cm9sbGVyLT50b05vcm1hbGl6ZWRSYW5nZSgp
OworICAgICAgICBJbnRSZWN0IGZpcnN0UmVjdCA9IG1fZnJhbWUtPmZpcnN0UmVjdEZvclJhbmdl
KHNlbGVjdGlvbi5nZXQoKSk7CisKKyAgICAgICAgaW50IHggPSByaWdodEFsaWduZWQgPyBmaXJz
dFJlY3QucmlnaHQoKSA6IGZpcnN0UmVjdC54KCk7CisgICAgICAgIGxvY2F0aW9uID0gSW50UG9p
bnQoeCwgZmlyc3RSZWN0LmJvdHRvbSgpKTsKKyAgICB9IGVsc2UgaWYgKGZvY3VzZWROb2RlKSB7
CisgICAgICAgIFJlbmRlckJveE1vZGVsT2JqZWN0KiBib3ggPSBmb2N1c2VkTm9kZS0+cmVuZGVy
Qm94TW9kZWxPYmplY3QoKTsKKyAgICAgICAgSW50UmVjdCBjbGlwcGVkUmVjdCA9IGJveC0+YWJz
b2x1dGVDbGlwcGVkT3ZlcmZsb3dSZWN0KCk7CisgICAgICAgIGxvY2F0aW9uID0gY2xpcHBlZFJl
Y3QuYm90dG9tTGVmdCgpOworICAgIH0gZWxzZSB7CisgICAgICAgIGxvY2F0aW9uID0gSW50UG9p
bnQoCisgICAgICAgICAgICByaWdodEFsaWduZWQgPyB2aWV3LT5jb250ZW50c1dpZHRoKCkgLSBr
Q29udGV4dE1lbnVNYXJnaW4gOiBrQ29udGV4dE1lbnVNYXJnaW4sCisgICAgICAgICAgICBrQ29u
dGV4dE1lbnVNYXJnaW4pOworICAgIH0KKworICAgIG1fZnJhbWUtPnZpZXcoKS0+c2V0Q3Vyc29y
KHBvaW50ZXJDdXJzb3IoKSk7CisKKyAgICBJbnRQb2ludCBwb3NpdGlvbiA9IHZpZXctPmNvbnRl
bnRzVG9XaW5kb3cobG9jYXRpb24pOworICAgIEludFBvaW50IGdsb2JhbFBvc2l0aW9uID0gdmll
dy0+Y29udGVudHNUb1NjcmVlbihJbnRSZWN0KGxvY2F0aW9uLCBJbnRTaXplKCkpKS5sb2NhdGlv
bigpOworCisgICAgTm9kZSogdGFyZ2V0Tm9kZSA9IGRvYy0+Zm9jdXNlZE5vZGUoKTsKKyAgICBp
ZiAoIXRhcmdldE5vZGUpCisgICAgICAgIHRhcmdldE5vZGUgPSBkb2M7CisKKyAgICAvLyBVc2Ug
dGhlIGZvY3VzZWQgbm9kZSBhcyB0aGUgdGFyZ2V0IGZvciBob3ZlciBhbmQgYWN0aXZlLgorICAg
IEhpdFRlc3RSZXN1bHQgcmVzdWx0KHBvc2l0aW9uKTsKKyAgICByZXN1bHQuc2V0SW5uZXJOb2Rl
KHRhcmdldE5vZGUpOworICAgIEhpdFRlc3RSZXF1ZXN0IHJlcXVlc3QoSGl0VGVzdFJlcXVlc3Q6
OkFjdGl2ZSk7CisgICAgZG9jLT5yZW5kZXJWaWV3KCktPmxheWVyKCktPnVwZGF0ZUhvdmVyQWN0
aXZlU3RhdGUocmVxdWVzdCwgcmVzdWx0KTsKKyAgICBkb2MtPnVwZGF0ZVN0eWxlSWZOZWVkZWQo
KTsKKyAgIAorICAgIC8vIFRoZSBjb250ZXh0bWVudSBldmVudCBpcyBhIG1vdXNlIGV2ZW50IGV2
ZW4gd2hlbiBpbnZva2VkIHVzaW5nIHRoZSBrZXlib2FyZC4KKyAgICAvLyBUaGlzIGlzIHJlcXVp
cmVkIGZvciB3ZWIgY29tcGF0aWJpbGl0eS4KKworI2lmIE9TKFdJTkRPV1MpCisgICAgTW91c2VF
dmVudFR5cGUgZXZlbnRUeXBlID0gTW91c2VFdmVudFJlbGVhc2VkOworI2Vsc2UKKyAgICBNb3Vz
ZUV2ZW50VHlwZSBldmVudFR5cGUgPSBNb3VzZUV2ZW50UHJlc3NlZDsKKyNlbmRpZgorCisgICAg
UGxhdGZvcm1Nb3VzZUV2ZW50IG1vdXNlRXZlbnQocG9zaXRpb24sIGdsb2JhbFBvc2l0aW9uLCBS
aWdodEJ1dHRvbiwgZXZlbnRUeXBlLCAxLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgV1RG
OjpjdXJyZW50VGltZSgpKTsKKworICAgIHJldHVybiBkaXNwYXRjaE1vdXNlRXZlbnQoZXZlbnRO
YW1lcygpLmNvbnRleHRtZW51RXZlbnQsIHRhcmdldE5vZGUsIHRydWUsIDAsIG1vdXNlRXZlbnQs
IGZhbHNlKTsKK30KKwogI2VuZGlmIC8vIEVOQUJMRShDT05URVhUX01FTlVTKQogCiB2b2lkIEV2
ZW50SGFuZGxlcjo6c2NoZWR1bGVIb3ZlclN0YXRlVXBkYXRlKCkKSW5kZXg6IFdlYkNvcmUvcGFn
ZS9FdmVudEhhbmRsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVy
LmgJKHJldmlzaW9uIDYxNzkxKQorKysgV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xNTcsNiArMTU3LDcgQEAgcHVibGljOgogCiAjaWYgRU5BQkxFKENPTlRF
WFRfTUVOVVMpCiAgICAgYm9vbCBzZW5kQ29udGV4dE1lbnVFdmVudChjb25zdCBQbGF0Zm9ybU1v
dXNlRXZlbnQmKTsKKyAgICBib29sIHNlbmRDb250ZXh0TWVudUV2ZW50Rm9yS2V5KCk7CiAjZW5k
aWYKIAogICAgIHZvaWQgc2V0TW91c2VEb3duTWF5U3RhcnRBdXRvc2Nyb2xsKCkgeyBtX21vdXNl
RG93bk1heVN0YXJ0QXV0b3Njcm9sbCA9IHRydWU7IH0KSW5kZXg6IFdlYktpdC9jaHJvbWl1bS9D
aGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwkocmV2aXNp
b24gNjIzOTkpCisrKyBXZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTYgQEAKKzIwMTAtMDctMDIgIEVyaWsgQXJ2aWRzc29uICA8YXJ2QGNocm9taXVt
Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBvamFuQGNocm9taXVtLm9yZy4KKworICAgICAg
ICBGaXggaXNzdWUgd2hlcmUgYSBjb250ZXh0bWVudSBldmVudCB3YXMgcmVwb3J0aW5nIHRoZSB3
cm9uZyB0YXJnZXQKKyAgICAgICAgaWYgdGhlIGNvbnRleHQgbWVudSB3YXMgc2hvd24gZHVlIHRv
IHByZXNzaW5nIHRoZSBjb250ZXh0IG1lbnUga2V5CisgICAgICAgIChvciBTaGlmdCtGMTApLgor
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zODEyOQor
CisgICAgICAgICogc3JjL1dlYlZpZXdJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViVmll
d0ltcGw6OnNlbmRDb250ZXh0TWVudUV2ZW50KToKKwogMjAxMC0wNy0wMiAgWXVyeSBTZW1pa2hh
dHNreSAgPHl1cnlzQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBQYXZlbCBG
ZWxkbWFuLgpJbmRleDogV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAJKHJldmlzaW9uIDYx
NzkxKQorKysgV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJWaWV3SW1wbC5jcHAJKHdvcmtpbmcgY29w
eSkKQEAgLTY2MSw2MiArNjYxLDEwIEBAIGJvb2wgV2ViVmlld0ltcGw6OnRvdWNoRXZlbnQoY29u
c3QgV2ViVG8KIH0KICNlbmRpZgogCi0vLyBUaGUgV2ViVmlld0ltcGw6OlNlbmRDb250ZXh0TWVu
dUV2ZW50IGZ1bmN0aW9uIGlzIGJhc2VkIG9uIHRoZSBXZWJraXQKLS8vIGZ1bmN0aW9uCi0vLyBi
b29sIFdlYlZpZXc6OmhhbmRsZUNvbnRleHRNZW51RXZlbnQoV1BBUkFNIHdQYXJhbSwgTFBBUkFN
IGxQYXJhbSkgaW4KLS8vIHdlYmtpdFx3ZWJraXRcd2luXFdlYlZpZXcuY3BwLiBUaGUgb25seSBz
aWduaWZpY2FudCBjaGFuZ2UgaW4gdGhpcwotLy8gZnVuY3Rpb24gaXMgdGhlIGNvZGUgdG8gY29u
dmVydCBmcm9tIGEgS2V5Ym9hcmQgZXZlbnQgdG8gdGhlIFJpZ2h0Ci0vLyBNb3VzZSBidXR0b24g
dXAgZXZlbnQuCi0vLwotLy8gVGhpcyBmdW5jdGlvbiBpcyBhbiB1Z2x5IGNvcHkvcGFzdGUgYW5k
IHNob3VsZCBiZSBjbGVhbmVkIHVwIHdoZW4gdGhlCi0vLyBXZWJLaXRXaW4gdmVyc2lvbiBpcyBj
bGVhbmVkOiBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA0MzgKICNp
ZiBPUyhXSU5ET1dTKSB8fCBPUyhMSU5VWCkKLS8vIEZJWE1FOiBpbXBsZW1lbnQgb24gTWFjCisv
LyBNYWMgaGFzIG5vIHdheSB0byBvcGVuIGEgY29udGV4dCBtZW51IGJhc2VkIG9uIGEga2V5Ym9h
cmQgZXZlbnQuCiBib29sIFdlYlZpZXdJbXBsOjpzZW5kQ29udGV4dE1lbnVFdmVudChjb25zdCBX
ZWJLZXlib2FyZEV2ZW50JiBldmVudCkKIHsKLSAgICBzdGF0aWMgY29uc3QgaW50IGtDb250ZXh0
TWVudU1hcmdpbiA9IDE7Ci0gICAgRnJhbWUqIG1haW5GcmFtZUltcGwgPSBwYWdlKCktPm1haW5G
cmFtZSgpOwotICAgIEZyYW1lVmlldyogdmlldyA9IG1haW5GcmFtZUltcGwtPnZpZXcoKTsKLSAg
ICBpZiAoIXZpZXcpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIEludFBvaW50IGNvb3Jk
cygtMSwgLTEpOwotI2lmIE9TKFdJTkRPV1MpCi0gICAgaW50IHJpZ2h0QWxpZ25lZCA9IDo6R2V0
U3lzdGVtTWV0cmljcyhTTV9NRU5VRFJPUEFMSUdOTUVOVCk7Ci0jZWxzZQotICAgIGludCByaWdo
dEFsaWduZWQgPSAwOwotI2VuZGlmCi0gICAgSW50UG9pbnQgbG9jYXRpb247Ci0KLQotICAgIEZy
YW1lKiBmb2N1c2VkRnJhbWUgPSBwYWdlKCktPmZvY3VzQ29udHJvbGxlcigpLT5mb2N1c2VkT3JN
YWluRnJhbWUoKTsKLSAgICBOb2RlKiBmb2N1c2VkTm9kZSA9IGZvY3VzZWRGcmFtZS0+ZG9jdW1l
bnQoKS0+Zm9jdXNlZE5vZGUoKTsKLSAgICBQb3NpdGlvbiBzdGFydCA9IG1haW5GcmFtZUltcGwt
PnNlbGVjdGlvbigpLT5zZWxlY3Rpb24oKS5zdGFydCgpOwotCi0gICAgaWYgKHN0YXJ0Lm5vZGUo
KSkgewotICAgICAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyID0gc3RhcnQubm9kZSgpLT5yZW5k
ZXJlcigpOwotICAgICAgICBpZiAoIXJlbmRlcmVyKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwotCi0gICAgICAgIFJlZlB0cjxSYW5nZT4gc2VsZWN0aW9uID0gbWFpbkZyYW1lSW1wbC0+c2Vs
ZWN0aW9uKCktPnRvTm9ybWFsaXplZFJhbmdlKCk7Ci0gICAgICAgIEludFJlY3QgZmlyc3RSZWN0
ID0gbWFpbkZyYW1lSW1wbC0+Zmlyc3RSZWN0Rm9yUmFuZ2Uoc2VsZWN0aW9uLmdldCgpKTsKLQot
ICAgICAgICBpbnQgeCA9IHJpZ2h0QWxpZ25lZCA/IGZpcnN0UmVjdC5yaWdodCgpIDogZmlyc3RS
ZWN0LngoKTsKLSAgICAgICAgbG9jYXRpb24gPSBJbnRQb2ludCh4LCBmaXJzdFJlY3QuYm90dG9t
KCkpOwotICAgIH0gZWxzZSBpZiAoZm9jdXNlZE5vZGUpCi0gICAgICAgIGxvY2F0aW9uID0gZm9j
dXNlZE5vZGUtPmdldFJlY3QoKS5ib3R0b21MZWZ0KCk7Ci0gICAgZWxzZSB7Ci0gICAgICAgIGxv
Y2F0aW9uID0gSW50UG9pbnQoCi0gICAgICAgICAgICByaWdodEFsaWduZWQgPyB2aWV3LT5jb250
ZW50c1dpZHRoKCkgLSBrQ29udGV4dE1lbnVNYXJnaW4gOiBrQ29udGV4dE1lbnVNYXJnaW4sCi0g
ICAgICAgICAgICBrQ29udGV4dE1lbnVNYXJnaW4pOwotICAgIH0KLQotICAgIGxvY2F0aW9uID0g
dmlldy0+Y29udGVudHNUb1dpbmRvdyhsb2NhdGlvbik7Ci0gICAgLy8gRklYTUU6IFRoZSBJbnRT
aXplKDAsIC0xKSBpcyBhIGhhY2sgdG8gZ2V0IHRoZSBoaXQtdGVzdGluZyB0byByZXN1bHQgaW4K
LSAgICAvLyB0aGUgc2VsZWN0ZWQgZWxlbWVudC4gSWRlYWxseSB3ZSdkIGhhdmUgdGhlIHBvc2l0
aW9uIG9mIGEgY29udGV4dCBtZW51Ci0gICAgLy8gZXZlbnQgYmUgc2VwYXJhdGUgZnJvbSBpdHMg
dGFyZ2V0IG5vZGUuCi0gICAgY29vcmRzID0gbG9jYXRpb24gKyBJbnRTaXplKDAsIC0xKTsKLQog
ICAgIC8vIFRoZSBjb250ZXh0TWVudUNvbnRyb2xsZXIoKSBob2xkcyBvbnRvIHRoZSBsYXN0IGNv
bnRleHQgbWVudSB0aGF0IHdhcwogICAgIC8vIHBvcHBlZCB1cCBvbiB0aGUgcGFnZSB1bnRpbCBh
IG5ldyBvbmUgaXMgY3JlYXRlZC4gV2UgbmVlZCB0byBjbGVhcgogICAgIC8vIHRoaXMgbWVudSBi
ZWZvcmUgcHJvcGFnYXRpbmcgdGhlIGV2ZW50IHRocm91Z2ggdGhlIERPTSBzbyB0aGF0IHdlIGNh
bgpAQCAtNzI1LDE3ICs2NzMsOSBAQCBib29sIFdlYlZpZXdJbXBsOjpzZW5kQ29udGV4dE1lbnVF
dmVudChjCiAgICAgLy8gbm90IHJ1bi4KICAgICBwYWdlKCktPmNvbnRleHRNZW51Q29udHJvbGxl
cigpLT5jbGVhckNvbnRleHRNZW51KCk7CiAKLSAgICBmb2N1c2VkRnJhbWUtPnZpZXcoKS0+c2V0
Q3Vyc29yKHBvaW50ZXJDdXJzb3IoKSk7Ci0gICAgV2ViTW91c2VFdmVudCBtb3VzZUV2ZW50Owot
ICAgIG1vdXNlRXZlbnQuYnV0dG9uID0gV2ViTW91c2VFdmVudDo6QnV0dG9uUmlnaHQ7Ci0gICAg
bW91c2VFdmVudC54ID0gY29vcmRzLngoKTsKLSAgICBtb3VzZUV2ZW50LnkgPSBjb29yZHMueSgp
OwotICAgIG1vdXNlRXZlbnQudHlwZSA9IFdlYklucHV0RXZlbnQ6Ok1vdXNlVXA7Ci0KLSAgICBQ
bGF0Zm9ybU1vdXNlRXZlbnRCdWlsZGVyIHBsYXRmb3JtRXZlbnQodmlldywgbW91c2VFdmVudCk7
Ci0KICAgICBtX2NvbnRleHRNZW51QWxsb3dlZCA9IHRydWU7Ci0gICAgYm9vbCBoYW5kbGVkID0g
Zm9jdXNlZEZyYW1lLT5ldmVudEhhbmRsZXIoKS0+c2VuZENvbnRleHRNZW51RXZlbnQocGxhdGZv
cm1FdmVudCk7CisgICAgRnJhbWUqIGZvY3VzZWRGcmFtZSA9IHBhZ2UoKS0+Zm9jdXNDb250cm9s
bGVyKCktPmZvY3VzZWRPck1haW5GcmFtZSgpOworICAgIGJvb2wgaGFuZGxlZCA9IGZvY3VzZWRG
cmFtZS0+ZXZlbnRIYW5kbGVyKCktPnNlbmRDb250ZXh0TWVudUV2ZW50Rm9yS2V5KCk7CiAgICAg
bV9jb250ZXh0TWVudUFsbG93ZWQgPSBmYWxzZTsKICAgICByZXR1cm4gaGFuZGxlZDsKIH0KSW5k
ZXg6IFdlYktpdC93aW4vQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYktpdC93aW4vQ2hhbmdl
TG9nCShyZXZpc2lvbiA2MjM5OSkKKysrIFdlYktpdC93aW4vQ2hhbmdlTG9nCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTAtMDctMDIgIEVyaWsgQXJ2aWRzc29uICA8YXJ2QGNo
cm9taXVtLm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBvamFuQGNocm9taXVtLm9yZy4KKwor
ICAgICAgICBGaXggaXNzdWUgd2hlcmUgYSBjb250ZXh0bWVudSBldmVudCB3YXMgcmVwb3J0aW5n
IHRoZSB3cm9uZyB0YXJnZXQKKyAgICAgICAgaWYgdGhlIGNvbnRleHQgbWVudSB3YXMgc2hvd24g
ZHVlIHRvIHByZXNzaW5nIHRoZSBjb250ZXh0IG1lbnUga2V5CisgICAgICAgIChvciBTaGlmdCtG
MTApLgorCisgICAgICAgICogV2ViVmlldy5jcHA6CisgICAgICAgIChXZWJWaWV3OjpoYW5kbGVD
b250ZXh0TWVudUV2ZW50KToKKwogMjAxMC0wNy0wMSAgU3RldmUgRmFsa2VuYnVyZyAgPHNmYWxr
ZW5AYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFkZWxlIFBldGVyc29uLgpJbmRl
eDogV2ViS2l0L3dpbi9XZWJWaWV3LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJLaXQvd2luL1dlYlZp
ZXcuY3BwCShyZXZpc2lvbiA2MTc5MSkKKysrIFdlYktpdC93aW4vV2ViVmlldy5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTExODgsNjAgKzExODgsMTkgQEAgUGFnZSogV2ViVmlldzo6cGFnZSgpCiAK
IGJvb2wgV2ViVmlldzo6aGFuZGxlQ29udGV4dE1lbnVFdmVudChXUEFSQU0gd1BhcmFtLCBMUEFS
QU0gbFBhcmFtKQogewotICAgIHN0YXRpYyBjb25zdCBpbnQgY29udGV4dE1lbnVNYXJnaW4gPSAx
OwotCiAgICAgLy8gVHJhbnNsYXRlIHRoZSBzY3JlZW4gY29vcmRpbmF0ZXMgaW50byB3aW5kb3cg
Y29vcmRpbmF0ZXMKICAgICBQT0lOVCBjb29yZHMgPSB7IEdFVF9YX0xQQVJBTShsUGFyYW0pLCBH
RVRfWV9MUEFSQU0obFBhcmFtKSB9OwogICAgIGlmIChjb29yZHMueCA9PSAtMSB8fCBjb29yZHMu
eSA9PSAtMSkgewotICAgICAgICBGcmFtZVZpZXcqIHZpZXcgPSBtX3BhZ2UtPm1haW5GcmFtZSgp
LT52aWV3KCk7Ci0gICAgICAgIGlmICghdmlldykKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
KyAgICAgICAgLy8gVGhlIGNvbnRleHRNZW51Q29udHJvbGxlcigpIGhvbGRzIG9udG8gdGhlIGxh
c3QgY29udGV4dCBtZW51IHRoYXQgd2FzIHBvcHBlZCB1cCBvbiB0aGUKKyAgICAgICAgLy8gcGFn
ZSB1bnRpbCBhIG5ldyBvbmUgaXMgY3JlYXRlZC4gV2UgbmVlZCB0byBjbGVhciB0aGlzIG1lbnUg
YmVmb3JlIHByb3BhZ2F0aW5nIHRoZSBldmVudAorICAgICAgICAvLyB0aHJvdWdoIHRoZSBET00g
c28gdGhhdCB3ZSBjYW4gZGV0ZWN0IGlmIHdlIGNyZWF0ZSBhIG5ldyBtZW51IGZvciB0aGlzIGV2
ZW50LCBzaW5jZSB3ZQorICAgICAgICAvLyB3b24ndCBjcmVhdGUgYSBuZXcgbWVudSBpZiB0aGUg
RE9NIHN3YWxsb3dzIHRoZSBldmVudCBhbmQgdGhlIGRlZmF1bHRFdmVudEhhbmRsZXIgZG9lcwor
ICAgICAgICAvLyBub3QgcnVuLgorICAgICAgICBtX3BhZ2UtPmNvbnRleHRNZW51Q29udHJvbGxl
cigpLT5jbGVhckNvbnRleHRNZW51KCk7CiAKLSAgICAgICAgaW50IHJpZ2h0QWxpZ25lZCA9IDo6
R2V0U3lzdGVtTWV0cmljcyhTTV9NRU5VRFJPUEFMSUdOTUVOVCk7Ci0gICAgICAgIEludFBvaW50
IGxvY2F0aW9uOworICAgICAgICBGcmFtZSogZm9jdXNlZEZyYW1lID0gbV9wYWdlLT5mb2N1c0Nv
bnRyb2xsZXIoKS0+Zm9jdXNlZE9yTWFpbkZyYW1lKCk7CisgICAgICAgIHJldHVybiBmb2N1c2Vk
RnJhbWUtPmV2ZW50SGFuZGxlcigpLT5zZW5kQ29udGV4dE1lbnVFdmVudEZvcktleSgpOwogCi0g
ICAgICAgIC8vIFRoZSBjb250ZXh0IG1lbnUgZXZlbnQgd2FzIGdlbmVyYXRlZCBmcm9tIHRoZSBr
ZXlib2FyZCwgc28gc2hvdyB0aGUgY29udGV4dCBtZW51IGJ5IHRoZSBjdXJyZW50IHNlbGVjdGlv
bi4KLSAgICAgICAgUG9zaXRpb24gc3RhcnQgPSBtX3BhZ2UtPm1haW5GcmFtZSgpLT5zZWxlY3Rp
b24oKS0+c2VsZWN0aW9uKCkuc3RhcnQoKTsKLSAgICAgICAgUG9zaXRpb24gZW5kID0gbV9wYWdl
LT5tYWluRnJhbWUoKS0+c2VsZWN0aW9uKCktPnNlbGVjdGlvbigpLmVuZCgpOwotCi0gICAgICAg
IGlmICghc3RhcnQubm9kZSgpIHx8ICFlbmQubm9kZSgpKQotICAgICAgICAgICAgbG9jYXRpb24g
PSBJbnRQb2ludChyaWdodEFsaWduZWQgPyB2aWV3LT5jb250ZW50c1dpZHRoKCkgLSBjb250ZXh0
TWVudU1hcmdpbiA6IGNvbnRleHRNZW51TWFyZ2luLCBjb250ZXh0TWVudU1hcmdpbik7Ci0gICAg
ICAgIGVsc2UgewotICAgICAgICAgICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IHN0YXJ0Lm5v
ZGUoKS0+cmVuZGVyZXIoKTsKLSAgICAgICAgICAgIGlmICghcmVuZGVyZXIpCi0gICAgICAgICAg
ICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgICAgICAgICAvLyBDYWxjdWxhdGUgdGhlIHJlY3Qg
b2YgdGhlIGZpcnN0IGxpbmUgb2YgdGhlIHNlbGVjdGlvbiAoY3JpYmJlZCBmcm9tIC1bV2ViQ29y
ZUZyYW1lQnJpZGdlIGZpcnN0UmVjdEZvckRPTVJhbmdlOl0sCi0gICAgICAgICAgICAvLyBub3cg
RnJhbWU6OmZpcnN0UmVjdEZvclJhbmdlKCksIHdoaWNoIHBlcmhhcHMgdGhpcyBzaG91bGQgY2Fs
bCkuCi0gICAgICAgICAgICBpbnQgZXh0cmFXaWR0aFRvRW5kT2ZMaW5lID0gMDsKLQotICAgICAg
ICAgICAgSW5saW5lQm94KiBzdGFydElubGluZUJveDsKLSAgICAgICAgICAgIGludCBzdGFydENh
cmV0T2Zmc2V0OwotICAgICAgICAgICAgc3RhcnQuZ2V0SW5saW5lQm94QW5kT2Zmc2V0KERPV05T
VFJFQU0sIHN0YXJ0SW5saW5lQm94LCBzdGFydENhcmV0T2Zmc2V0KTsKLSAgICAgICAgICAgIElu
dFJlY3Qgc3RhcnRDYXJldFJlY3QgPSByZW5kZXJlci0+bG9jYWxDYXJldFJlY3Qoc3RhcnRJbmxp
bmVCb3gsIHN0YXJ0Q2FyZXRPZmZzZXQsICZleHRyYVdpZHRoVG9FbmRPZkxpbmUpOwotICAgICAg
ICAgICAgaWYgKHN0YXJ0Q2FyZXRSZWN0ICE9IEludFJlY3QoKSkKLSAgICAgICAgICAgICAgICBz
dGFydENhcmV0UmVjdCA9IHJlbmRlcmVyLT5sb2NhbFRvQWJzb2x1dGVRdWFkKEZsb2F0UmVjdChz
dGFydENhcmV0UmVjdCkpLmVuY2xvc2luZ0JvdW5kaW5nQm94KCk7Ci0KLSAgICAgICAgICAgIElu
bGluZUJveCogZW5kSW5saW5lQm94OwotICAgICAgICAgICAgaW50IGVuZENhcmV0T2Zmc2V0Owot
ICAgICAgICAgICAgZW5kLmdldElubGluZUJveEFuZE9mZnNldChVUFNUUkVBTSwgZW5kSW5saW5l
Qm94LCBlbmRDYXJldE9mZnNldCk7Ci0gICAgICAgICAgICBJbnRSZWN0IGVuZENhcmV0UmVjdCA9
IHJlbmRlcmVyLT5sb2NhbENhcmV0UmVjdChlbmRJbmxpbmVCb3gsIGVuZENhcmV0T2Zmc2V0KTsK
LSAgICAgICAgICAgIGlmIChlbmRDYXJldFJlY3QgIT0gSW50UmVjdCgpKQotICAgICAgICAgICAg
ICAgIGVuZENhcmV0UmVjdCA9IHJlbmRlcmVyLT5sb2NhbFRvQWJzb2x1dGVRdWFkKEZsb2F0UmVj
dChlbmRDYXJldFJlY3QpKS5lbmNsb3NpbmdCb3VuZGluZ0JveCgpOwotCi0gICAgICAgICAgICBJ
bnRSZWN0IGZpcnN0UmVjdDsKLSAgICAgICAgICAgIGlmIChzdGFydENhcmV0UmVjdC55KCkgPT0g
ZW5kQ2FyZXRSZWN0LnkoKSkKLSAgICAgICAgICAgICAgICBmaXJzdFJlY3QgPSBJbnRSZWN0KG1p
bihzdGFydENhcmV0UmVjdC54KCksIGVuZENhcmV0UmVjdC54KCkpLCBzdGFydENhcmV0UmVjdC55
KCksIGFicyhlbmRDYXJldFJlY3QueCgpIC0gc3RhcnRDYXJldFJlY3QueCgpKSwgbWF4KHN0YXJ0
Q2FyZXRSZWN0LmhlaWdodCgpLCBlbmRDYXJldFJlY3QuaGVpZ2h0KCkpKTsKLSAgICAgICAgICAg
IGVsc2UKLSAgICAgICAgICAgICAgICBmaXJzdFJlY3QgPSBJbnRSZWN0KHN0YXJ0Q2FyZXRSZWN0
LngoKSwgc3RhcnRDYXJldFJlY3QueSgpLCBzdGFydENhcmV0UmVjdC53aWR0aCgpICsgZXh0cmFX
aWR0aFRvRW5kT2ZMaW5lLCBzdGFydENhcmV0UmVjdC5oZWlnaHQoKSk7Ci0KLSAgICAgICAgICAg
IGxvY2F0aW9uID0gSW50UG9pbnQocmlnaHRBbGlnbmVkID8gZmlyc3RSZWN0LnJpZ2h0KCkgOiBm
aXJzdFJlY3QueCgpLCBmaXJzdFJlY3QuYm90dG9tKCkpOwotICAgICAgICB9Ci0KLSAgICAgICAg
bG9jYXRpb24gPSB2aWV3LT5jb250ZW50c1RvV2luZG93KGxvY2F0aW9uKTsKLSAgICAgICAgLy8g
RklYTUU6IFRoZSBJbnRTaXplKDAsIC0xKSBpcyBhIGhhY2sgdG8gZ2V0IHRoZSBoaXQtdGVzdGlu
ZyB0byByZXN1bHQgaW4gdGhlIHNlbGVjdGVkIGVsZW1lbnQuCi0gICAgICAgIC8vIElkZWFsbHkg
d2UnZCBoYXZlIHRoZSBwb3NpdGlvbiBvZiBhIGNvbnRleHQgbWVudSBldmVudCBiZSBzZXBhcmF0
ZSBmcm9tIGl0cyB0YXJnZXQgbm9kZS4KLSAgICAgICAgY29vcmRzID0gbG9jYXRpb24gKyBJbnRT
aXplKDAsIC0xKTsKICAgICB9IGVsc2UgewogICAgICAgICBpZiAoITo6U2NyZWVuVG9DbGllbnQo
bV92aWV3V2luZG93LCAmY29vcmRzKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTEy
NDksMTEgKzEyMDgsNiBAQCBib29sIFdlYlZpZXc6OmhhbmRsZUNvbnRleHRNZW51RXZlbnQoV1BB
CiAKICAgICBsUGFyYW0gPSBNQUtFTFBBUkFNKGNvb3Jkcy54LCBjb29yZHMueSk7CiAKLSAgICAv
LyBUaGUgY29udGV4dE1lbnVDb250cm9sbGVyKCkgaG9sZHMgb250byB0aGUgbGFzdCBjb250ZXh0
IG1lbnUgdGhhdCB3YXMgcG9wcGVkIHVwIG9uIHRoZQotICAgIC8vIHBhZ2UgdW50aWwgYSBuZXcg
b25lIGlzIGNyZWF0ZWQuIFdlIG5lZWQgdG8gY2xlYXIgdGhpcyBtZW51IGJlZm9yZSBwcm9wYWdh
dGluZyB0aGUgZXZlbnQKLSAgICAvLyB0aHJvdWdoIHRoZSBET00gc28gdGhhdCB3ZSBjYW4gZGV0
ZWN0IGlmIHdlIGNyZWF0ZSBhIG5ldyBtZW51IGZvciB0aGlzIGV2ZW50LCBzaW5jZSB3ZQotICAg
IC8vIHdvbid0IGNyZWF0ZSBhIG5ldyBtZW51IGlmIHRoZSBET00gc3dhbGxvd3MgdGhlIGV2ZW50
IGFuZCB0aGUgZGVmYXVsdEV2ZW50SGFuZGxlciBkb2VzCi0gICAgLy8gbm90IHJ1bi4KICAgICBt
X3BhZ2UtPmNvbnRleHRNZW51Q29udHJvbGxlcigpLT5jbGVhckNvbnRleHRNZW51KCk7CiAKICAg
ICBJbnRQb2ludCBkb2N1bWVudFBvaW50KG1fcGFnZS0+bWFpbkZyYW1lKCktPnZpZXcoKS0+d2lu
ZG93VG9Db250ZW50cyhjb29yZHMpKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>60449</attachid>
            <date>2010-07-03 06:47:56 -0700</date>
            <delta_ts>2010-07-03 07:08:29 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-38129-20100703064754.patch</filename>
            <type>text/plain</type>
            <size>16882</size>
            <attacher name="Adam Barth">abarth</attacher>
            
              <data encoding="base64">SW5kZXg6IFdlYkNvcmUvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvQ2hhbmdlTG9n
CShyZXZpc2lvbiA2MjQ0NikKKysrIFdlYkNvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMjcgQEAKKzIwMTAtMDctMDMgIEVyaWsgQXJ2aWRzc29uICA8YXJ2QGNocm9taXVt
Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBPamFuIFZhZmFpLgorCisgICAgICAgIEZpeCBp
c3N1ZSB3aGVyZSBhIGNvbnRleHRtZW51IGV2ZW50IHdhcyByZXBvcnRpbmcgdGhlIHdyb25nIHRh
cmdldCBpZgorICAgICAgICB0aGUgY29udGV4dCBtZW51IHdhcyBzaG93biBkdWUgdG8gcHJlc3Np
bmcgdGhlIGNvbnRleHQgbWVudSBrZXkKKyAgICAgICAgKG9yIFNoaWZ0K0YxMCkuCisgICAgICAg
IAorICAgICAgICBTcGxpdCBzZW5kQ29udGV4dE1lbnVGb3JFdmVudCBpbnRvIG9uZSBjYXNlIGZv
ciBrZXlib2FyZCBldmVudHMgYW5kIHVzZQorICAgICAgICB0aGF0IHdoZW4gdGhlIGNvbnRleHRt
ZW51IGV2ZW50IHNob3VsZCBiZSBkaXNwYXRjaGVkIGR1ZSB0byBhIGtleXByZXNzLgorCisgICAg
ICAgIEZvciB0aGUga2Vib2FyZCBjYXNlIHdlIG5vdyB1c2UgdGhlIGZvY3VzZWQgbm9kZSBhcyB0
aGUgdGFyZ2V0IGZvciB0aGUKKyAgICAgICAgZXZlbnQgYW5kIHVzZSB0aGUgY2xpcHBlZCByZWN0
IHRvIGRldGVybWluZSB0aGUgcG9zaXRpb24gb2YgdGhlIG1lbnUuCisgICAgICAgIAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MzgxMjkKKworICAgICAg
ICBVc2UgbWFudWFsIHRlc3Qgc2luY2UgRFJUIGRvZXMgbm90IGhhbmRsZSBjb250ZXh0IG1lbnUg
a2V5cy4KKworICAgICAgICAqIG1hbnVhbC10ZXN0cy93aW4vY29udGV4dG1lbnUta2V5Lmh0bWw6
IEFkZGVkLgorICAgICAgICAqIHBhZ2UvRXZlbnRIYW5kbGVyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkV2ZW50SGFuZGxlcjo6c2VuZENvbnRleHRNZW51RXZlbnQpOgorICAgICAgICAoV2ViQ29y
ZTo6RXZlbnRIYW5kbGVyOjpzZW5kQ29udGV4dE1lbnVFdmVudEZvcktleSk6CisgICAgICAgICog
cGFnZS9FdmVudEhhbmRsZXIuaDoKKwogMjAxMC0wNy0wMyAgRGlyayBTY2h1bHplICA8a3JpdEB3
ZWJraXQub3JnPgogCiAgICAgICAgIFVucmV2aWV3ZWQgc29ydCBvZiBYQ29kZSBwcm9qZWN0IGZp
bGUuCkluZGV4OiBXZWJDb3JlL21hbnVhbC10ZXN0cy93aW4vY29udGV4dG1lbnUta2V5Lmh0bWwK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gV2ViQ29yZS9tYW51YWwtdGVzdHMvd2luL2NvbnRleHRtZW51LWtleS5o
dG1sCShyZXZpc2lvbiAwKQorKysgV2ViQ29yZS9tYW51YWwtdGVzdHMvd2luL2NvbnRleHRtZW51
LWtleS5odG1sCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDExMiBAQAorPCFET0NUWVBFIGh0bWw+
Cis8aHRtbD4KKzxoZWFkPgorPHN0eWxlPgorCisjb3V0ZXIgeworICAgIG92ZXJmbG93OiBhdXRv
OworICAgIHdpZHRoOiAyMDBweDsKKyAgICBoZWlnaHQ6IDIwMHB4OworfQorCisjaW5uZXIgewor
ICAgIHBvc2l0aW9uOiByZWxhdGl2ZTsKKyAgICBoZWlnaHQ6IDQwMHB4OworfQorCisjaW5uZXI6
Zm9jdXMgeworICAgIGJhY2tncm91bmQtY29sb3I6IGxpZ2h0Ymx1ZTsKK30KKworI2lubmVyOmFj
dGl2ZSB7CisgICAgYmFja2dyb3VuZC1jb2xvcjogYmx1ZTsKK30KKworI2gsICNoMiB7CisgICAg
YmFja2dyb3VuZDogcmdiYSgyNTUsIDI1NSwgMjU1LCAwKTsKK30KKworI2ggeworICAgIHBvc2l0
aW9uOiBhYnNvbHV0ZTsKKyAgICBoZWlnaHQ6IDIwMHB4OworICAgIHdpZHRoOiAyMDBweDsKK30K
KworI2gyIHsKKyAgICBwb3NpdGlvbjogYWJzb2x1dGU7CisgICAgdG9wOiAyMDBweDsKKyAgICBo
ZWlnaHQ6IDIwMHB4OworICAgIHdpZHRoOiAxMDAlOworfQorCisjaDpob3ZlciwKKyNoMjpob3Zl
ciB7CisgICAgYmFja2dyb3VuZDogcGluazsKK30KKworI2g6YWN0aXZlLAorI2gyOmFjdGl2ZSB7
CisgICAgYmFja2dyb3VuZDogcmVkOworfQorCitwcmUgeworICAgIHBvc2l0aW9uOiBhYnNvbHV0
ZTsKKyAgICBsZWZ0OiAyNTBweDsKKyAgICB0b3A6IDgwcHg7Cit9CisKKzwvc3R5bGU+Cis8L2hl
YWQ+Cis8Ym9keT4KKworPHA+TWFudWFsIHRlc3QgZm9yIDxhIGhyZWY9Imh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zODEyOSI+YnVnIDM4MTI5PC9hPjwvcD4KKworPHA+
Q2xpY2sgdGhlIGRpdiBiZWxvdyBhbmQgcHJlc3MgdGhlIGNvbnRleHQgbWVudSBrZXkgb24geW91
ciBrZXlib2FyZCAoU2hpZnQrRjEwIGFsc28gd29ya3MpPC9wPgorCis8ZGl2IGlkPW91dGVyPgor
ICAgIDxkaXYgaWQ9aW5uZXIgdGFiaW5kZXg9MD4KKyAgICAgICAgPGRpdiBpZD1oMj48L2Rpdj4K
KyAgICA8L2Rpdj4KKzwvZGl2PgorCis8ZGl2IGlkPWg+PC9kaXY+CisKKzxwcmU+PC9wcmU+CisK
KzxzY3JpcHQ+CisKK2Z1bmN0aW9uIGNzKGVsKQoreworICAgIGlmICh3aW5kb3cuZ2V0Q29tcHV0
ZWRTdHlsZSkKKyAgICAgICAgcmV0dXJuIHdpbmRvdy5nZXRDb21wdXRlZFN0eWxlKGVsLCAnJyk7
CisgICAgcmV0dXJuIGVsLmN1cnJlbnRTdHlsZTsKK30KKworZG9jdW1lbnQuYWRkRXZlbnRMaXN0
ZW5lcignY29udGV4dG1lbnUnLCBmdW5jdGlvbihlKQoreworICAgIHZhciBpbm5lciA9IGRvY3Vt
ZW50LnF1ZXJ5U2VsZWN0b3IoJyNpbm5lcicpOworICAgIHZhciBvdXRlciA9IGRvY3VtZW50LnF1
ZXJ5U2VsZWN0b3IoJyNvdXRlcicpOworICAgIHZhciBoID0gZG9jdW1lbnQucXVlcnlTZWxlY3Rv
cignI2gnKTsKKyAgICB2YXIgaDIgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCcjaDInKTsKKyAg
ICB2YXIgcmVzdWx0ID0gW107CisKKyAgICByZXN1bHQucHVzaChlLnRhcmdldCwgZG9jdW1lbnQu
cXVlcnlTZWxlY3RvcignI2lubmVyJykpOworICAgIHJlc3VsdC5wdXNoKGNzKGlubmVyLCAnJyku
YmFja2dyb3VuZENvbG9yLCAncmdiKDAsIDAsIDI1NSknKTsKKyAgICByZXN1bHQucHVzaChjcyho
LCAnJykuYmFja2dyb3VuZENvbG9yLCAncmdiYSgyNTUsIDI1NSwgMjU1LCAwKScpOworICAgIHJl
c3VsdC5wdXNoKGNzKGgyLCAnJykuYmFja2dyb3VuZENvbG9yLCAncmdiYSgyNTUsIDI1NSwgMjU1
LCAwKScpOworCisgICAgdmFyIHMgPSAnJzsKKyAgICBmb3IgKHZhciBpID0gMDsgaSA8IHJlc3Vs
dC5sZW5ndGg7IGkgKz0gMikgeworICAgICAgICBzICs9IHJlc3VsdFtpXSArICcgPT0gJyArIHJl
c3VsdFtpICsgMV0gKyAnIC0gJyArCisgICAgICAgICAgICAocmVzdWx0W2ldID09IHJlc3VsdFtp
ICsgMV0gPyAnUEFTUycgOiAnRkFJTCcpICsgJzxicj4nOworICAgIH0KKworICAgIGRvY3VtZW50
LnF1ZXJ5U2VsZWN0b3IoJ3ByZScpLmlubmVySFRNTCA9IHM7CisKKyAgICByZXR1cm4gdHJ1ZTsK
K30sIGZhbHNlKTsKKworPC9zY3JpcHQ+CisKKzwvYm9keT4KKzwvaHRtbD4KSW5kZXg6IFdlYkNv
cmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvcGFnZS9FdmVu
dEhhbmRsZXIuY3BwCShyZXZpc2lvbiA2MjQ0NikKKysrIFdlYkNvcmUvcGFnZS9FdmVudEhhbmRs
ZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMDE2LDEwICsyMDE2LDg0IEBAIGJvb2wgRXZlbnRI
YW5kbGVyOjpzZW5kQ29udGV4dE1lbnVFdmVudCgKICAgICB9CiAjZW5kaWYKIAotICAgIHN3YWxs
b3dFdmVudCA9IGRpc3BhdGNoTW91c2VFdmVudChldmVudE5hbWVzKCkuY29udGV4dG1lbnVFdmVu
dCwgbWV2LnRhcmdldE5vZGUoKSwgdHJ1ZSwgMCwgZXZlbnQsIHRydWUpOworICAgIHN3YWxsb3dF
dmVudCA9IGRpc3BhdGNoTW91c2VFdmVudChldmVudE5hbWVzKCkuY29udGV4dG1lbnVFdmVudCwg
bWV2LnRhcmdldE5vZGUoKSwgdHJ1ZSwgMCwgZXZlbnQsIGZhbHNlKTsKICAgICAKICAgICByZXR1
cm4gc3dhbGxvd0V2ZW50OwogfQorCitib29sIEV2ZW50SGFuZGxlcjo6c2VuZENvbnRleHRNZW51
RXZlbnRGb3JLZXkoKQoreworICAgIEZyYW1lVmlldyogdmlldyA9IG1fZnJhbWUtPnZpZXcoKTsK
KyAgICBpZiAoIXZpZXcpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIERvY3VtZW50KiBk
b2MgPSBtX2ZyYW1lLT5kb2N1bWVudCgpOworICAgIGlmICghZG9jKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisKKyAgICBzdGF0aWMgY29uc3QgaW50IGtDb250ZXh0TWVudU1hcmdpbiA9IDE7CisK
KyNpZiBPUyhXSU5ET1dTKQorICAgIGludCByaWdodEFsaWduZWQgPSA6OkdldFN5c3RlbU1ldHJp
Y3MoU01fTUVOVURST1BBTElHTk1FTlQpOworI2Vsc2UKKyAgICBpbnQgcmlnaHRBbGlnbmVkID0g
MDsKKyNlbmRpZgorICAgIEludFBvaW50IGxvY2F0aW9uOworCisgICAgTm9kZSogZm9jdXNlZE5v
ZGUgPSBkb2MtPmZvY3VzZWROb2RlKCk7CisgICAgU2VsZWN0aW9uQ29udHJvbGxlciogc2VsZWN0
aW9uQ29udHJvbGxlciA9IG1fZnJhbWUtPnNlbGVjdGlvbigpOworICAgIFBvc2l0aW9uIHN0YXJ0
ID0gc2VsZWN0aW9uQ29udHJvbGxlci0+c2VsZWN0aW9uKCkuc3RhcnQoKTsKKworICAgIGlmIChz
dGFydC5ub2RlKCkgJiYgKHNlbGVjdGlvbkNvbnRyb2xsZXItPnJvb3RFZGl0YWJsZUVsZW1lbnQo
KSB8fCBzZWxlY3Rpb25Db250cm9sbGVyLT5pc1JhbmdlKCkpKSB7CisgICAgICAgIFJlbmRlck9i
amVjdCogcmVuZGVyZXIgPSBzdGFydC5ub2RlKCktPnJlbmRlcmVyKCk7CisgICAgICAgIGlmICgh
cmVuZGVyZXIpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgUmVmUHRyPFJh
bmdlPiBzZWxlY3Rpb24gPSBzZWxlY3Rpb25Db250cm9sbGVyLT50b05vcm1hbGl6ZWRSYW5nZSgp
OworICAgICAgICBJbnRSZWN0IGZpcnN0UmVjdCA9IG1fZnJhbWUtPmZpcnN0UmVjdEZvclJhbmdl
KHNlbGVjdGlvbi5nZXQoKSk7CisKKyAgICAgICAgaW50IHggPSByaWdodEFsaWduZWQgPyBmaXJz
dFJlY3QucmlnaHQoKSA6IGZpcnN0UmVjdC54KCk7CisgICAgICAgIGxvY2F0aW9uID0gSW50UG9p
bnQoeCwgZmlyc3RSZWN0LmJvdHRvbSgpKTsKKyAgICB9IGVsc2UgaWYgKGZvY3VzZWROb2RlKSB7
CisgICAgICAgIFJlbmRlckJveE1vZGVsT2JqZWN0KiBib3ggPSBmb2N1c2VkTm9kZS0+cmVuZGVy
Qm94TW9kZWxPYmplY3QoKTsKKyAgICAgICAgSW50UmVjdCBjbGlwcGVkUmVjdCA9IGJveC0+YWJz
b2x1dGVDbGlwcGVkT3ZlcmZsb3dSZWN0KCk7CisgICAgICAgIGxvY2F0aW9uID0gY2xpcHBlZFJl
Y3QuYm90dG9tTGVmdCgpOworICAgIH0gZWxzZSB7CisgICAgICAgIGxvY2F0aW9uID0gSW50UG9p
bnQoCisgICAgICAgICAgICByaWdodEFsaWduZWQgPyB2aWV3LT5jb250ZW50c1dpZHRoKCkgLSBr
Q29udGV4dE1lbnVNYXJnaW4gOiBrQ29udGV4dE1lbnVNYXJnaW4sCisgICAgICAgICAgICBrQ29u
dGV4dE1lbnVNYXJnaW4pOworICAgIH0KKworICAgIG1fZnJhbWUtPnZpZXcoKS0+c2V0Q3Vyc29y
KHBvaW50ZXJDdXJzb3IoKSk7CisKKyAgICBJbnRQb2ludCBwb3NpdGlvbiA9IHZpZXctPmNvbnRl
bnRzVG9XaW5kb3cobG9jYXRpb24pOworICAgIEludFBvaW50IGdsb2JhbFBvc2l0aW9uID0gdmll
dy0+Y29udGVudHNUb1NjcmVlbihJbnRSZWN0KGxvY2F0aW9uLCBJbnRTaXplKCkpKS5sb2NhdGlv
bigpOworCisgICAgTm9kZSogdGFyZ2V0Tm9kZSA9IGRvYy0+Zm9jdXNlZE5vZGUoKTsKKyAgICBp
ZiAoIXRhcmdldE5vZGUpCisgICAgICAgIHRhcmdldE5vZGUgPSBkb2M7CisKKyAgICAvLyBVc2Ug
dGhlIGZvY3VzZWQgbm9kZSBhcyB0aGUgdGFyZ2V0IGZvciBob3ZlciBhbmQgYWN0aXZlLgorICAg
IEhpdFRlc3RSZXN1bHQgcmVzdWx0KHBvc2l0aW9uKTsKKyAgICByZXN1bHQuc2V0SW5uZXJOb2Rl
KHRhcmdldE5vZGUpOworICAgIEhpdFRlc3RSZXF1ZXN0IHJlcXVlc3QoSGl0VGVzdFJlcXVlc3Q6
OkFjdGl2ZSk7CisgICAgZG9jLT5yZW5kZXJWaWV3KCktPmxheWVyKCktPnVwZGF0ZUhvdmVyQWN0
aXZlU3RhdGUocmVxdWVzdCwgcmVzdWx0KTsKKyAgICBkb2MtPnVwZGF0ZVN0eWxlSWZOZWVkZWQo
KTsKKyAgIAorICAgIC8vIFRoZSBjb250ZXh0bWVudSBldmVudCBpcyBhIG1vdXNlIGV2ZW50IGV2
ZW4gd2hlbiBpbnZva2VkIHVzaW5nIHRoZSBrZXlib2FyZC4KKyAgICAvLyBUaGlzIGlzIHJlcXVp
cmVkIGZvciB3ZWIgY29tcGF0aWJpbGl0eS4KKworI2lmIE9TKFdJTkRPV1MpCisgICAgTW91c2VF
dmVudFR5cGUgZXZlbnRUeXBlID0gTW91c2VFdmVudFJlbGVhc2VkOworI2Vsc2UKKyAgICBNb3Vz
ZUV2ZW50VHlwZSBldmVudFR5cGUgPSBNb3VzZUV2ZW50UHJlc3NlZDsKKyNlbmRpZgorCisgICAg
UGxhdGZvcm1Nb3VzZUV2ZW50IG1vdXNlRXZlbnQocG9zaXRpb24sIGdsb2JhbFBvc2l0aW9uLCBS
aWdodEJ1dHRvbiwgZXZlbnRUeXBlLCAxLCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgV1RG
OjpjdXJyZW50VGltZSgpKTsKKworICAgIHJldHVybiBkaXNwYXRjaE1vdXNlRXZlbnQoZXZlbnRO
YW1lcygpLmNvbnRleHRtZW51RXZlbnQsIHRhcmdldE5vZGUsIHRydWUsIDAsIG1vdXNlRXZlbnQs
IGZhbHNlKTsKK30KKwogI2VuZGlmIC8vIEVOQUJMRShDT05URVhUX01FTlVTKQogCiB2b2lkIEV2
ZW50SGFuZGxlcjo6c2NoZWR1bGVIb3ZlclN0YXRlVXBkYXRlKCkKSW5kZXg6IFdlYkNvcmUvcGFn
ZS9FdmVudEhhbmRsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVy
LmgJKHJldmlzaW9uIDYyNDQ2KQorKysgV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5oCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xNTcsNiArMTU3LDcgQEAgcHVibGljOgogCiAjaWYgRU5BQkxFKENPTlRF
WFRfTUVOVVMpCiAgICAgYm9vbCBzZW5kQ29udGV4dE1lbnVFdmVudChjb25zdCBQbGF0Zm9ybU1v
dXNlRXZlbnQmKTsKKyAgICBib29sIHNlbmRDb250ZXh0TWVudUV2ZW50Rm9yS2V5KCk7CiAjZW5k
aWYKIAogICAgIHZvaWQgc2V0TW91c2VEb3duTWF5U3RhcnRBdXRvc2Nyb2xsKCkgeyBtX21vdXNl
RG93bk1heVN0YXJ0QXV0b3Njcm9sbCA9IHRydWU7IH0KSW5kZXg6IFdlYktpdC9jaHJvbWl1bS9D
aGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwkocmV2aXNp
b24gNjI0NDYpCisrKyBXZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBA
IC0xLDMgKzEsMTYgQEAKKzIwMTAtMDctMDMgIEVyaWsgQXJ2aWRzc29uICA8YXJ2QGNocm9taXVt
Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBPamFuIFZhZmFpLgorCisgICAgICAgIEZpeCBp
c3N1ZSB3aGVyZSBhIGNvbnRleHRtZW51IGV2ZW50IHdhcyByZXBvcnRpbmcgdGhlIHdyb25nIHRh
cmdldAorICAgICAgICBpZiB0aGUgY29udGV4dCBtZW51IHdhcyBzaG93biBkdWUgdG8gcHJlc3Np
bmcgdGhlIGNvbnRleHQgbWVudSBrZXkKKyAgICAgICAgKG9yIFNoaWZ0K0YxMCkuCisKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM4MTI5CisKKyAgICAg
ICAgKiBzcmMvV2ViVmlld0ltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJWaWV3SW1wbDo6
c2VuZENvbnRleHRNZW51RXZlbnQpOgorCiAyMDEwLTA3LTAyICBZdXJ5IFNlbWlraGF0c2t5ICA8
eXVyeXNAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFJldmlld2VkIGJ5IFBhdmVsIEZlbGRtYW4u
CkluZGV4OiBXZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBXZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcAkocmV2aXNpb24gNjI0NDYpCisr
KyBXZWJLaXQvY2hyb21pdW0vc3JjL1dlYlZpZXdJbXBsLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NjYxLDYyICs2NjEsMTAgQEAgYm9vbCBXZWJWaWV3SW1wbDo6dG91Y2hFdmVudChjb25zdCBXZWJU
bwogfQogI2VuZGlmCiAKLS8vIFRoZSBXZWJWaWV3SW1wbDo6U2VuZENvbnRleHRNZW51RXZlbnQg
ZnVuY3Rpb24gaXMgYmFzZWQgb24gdGhlIFdlYmtpdAotLy8gZnVuY3Rpb24KLS8vIGJvb2wgV2Vi
Vmlldzo6aGFuZGxlQ29udGV4dE1lbnVFdmVudChXUEFSQU0gd1BhcmFtLCBMUEFSQU0gbFBhcmFt
KSBpbgotLy8gd2Via2l0XHdlYmtpdFx3aW5cV2ViVmlldy5jcHAuIFRoZSBvbmx5IHNpZ25pZmlj
YW50IGNoYW5nZSBpbiB0aGlzCi0vLyBmdW5jdGlvbiBpcyB0aGUgY29kZSB0byBjb252ZXJ0IGZy
b20gYSBLZXlib2FyZCBldmVudCB0byB0aGUgUmlnaHQKLS8vIE1vdXNlIGJ1dHRvbiB1cCBldmVu
dC4KLS8vCi0vLyBUaGlzIGZ1bmN0aW9uIGlzIGFuIHVnbHkgY29weS9wYXN0ZSBhbmQgc2hvdWxk
IGJlIGNsZWFuZWQgdXAgd2hlbiB0aGUKLS8vIFdlYktpdFdpbiB2ZXJzaW9uIGlzIGNsZWFuZWQ6
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDQzOAogI2lmIE9TKFdJ
TkRPV1MpIHx8IE9TKExJTlVYKQotLy8gRklYTUU6IGltcGxlbWVudCBvbiBNYWMKKy8vIE1hYyBo
YXMgbm8gd2F5IHRvIG9wZW4gYSBjb250ZXh0IG1lbnUgYmFzZWQgb24gYSBrZXlib2FyZCBldmVu
dC4KIGJvb2wgV2ViVmlld0ltcGw6OnNlbmRDb250ZXh0TWVudUV2ZW50KGNvbnN0IFdlYktleWJv
YXJkRXZlbnQmIGV2ZW50KQogewotICAgIHN0YXRpYyBjb25zdCBpbnQga0NvbnRleHRNZW51TWFy
Z2luID0gMTsKLSAgICBGcmFtZSogbWFpbkZyYW1lSW1wbCA9IHBhZ2UoKS0+bWFpbkZyYW1lKCk7
Ci0gICAgRnJhbWVWaWV3KiB2aWV3ID0gbWFpbkZyYW1lSW1wbC0+dmlldygpOwotICAgIGlmICgh
dmlldykKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgSW50UG9pbnQgY29vcmRzKC0xLCAt
MSk7Ci0jaWYgT1MoV0lORE9XUykKLSAgICBpbnQgcmlnaHRBbGlnbmVkID0gOjpHZXRTeXN0ZW1N
ZXRyaWNzKFNNX01FTlVEUk9QQUxJR05NRU5UKTsKLSNlbHNlCi0gICAgaW50IHJpZ2h0QWxpZ25l
ZCA9IDA7Ci0jZW5kaWYKLSAgICBJbnRQb2ludCBsb2NhdGlvbjsKLQotCi0gICAgRnJhbWUqIGZv
Y3VzZWRGcmFtZSA9IHBhZ2UoKS0+Zm9jdXNDb250cm9sbGVyKCktPmZvY3VzZWRPck1haW5GcmFt
ZSgpOwotICAgIE5vZGUqIGZvY3VzZWROb2RlID0gZm9jdXNlZEZyYW1lLT5kb2N1bWVudCgpLT5m
b2N1c2VkTm9kZSgpOwotICAgIFBvc2l0aW9uIHN0YXJ0ID0gbWFpbkZyYW1lSW1wbC0+c2VsZWN0
aW9uKCktPnNlbGVjdGlvbigpLnN0YXJ0KCk7Ci0KLSAgICBpZiAoc3RhcnQubm9kZSgpKSB7Ci0g
ICAgICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBzdGFydC5ub2RlKCktPnJlbmRlcmVyKCk7
Ci0gICAgICAgIGlmICghcmVuZGVyZXIpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAg
ICAgICAgUmVmUHRyPFJhbmdlPiBzZWxlY3Rpb24gPSBtYWluRnJhbWVJbXBsLT5zZWxlY3Rpb24o
KS0+dG9Ob3JtYWxpemVkUmFuZ2UoKTsKLSAgICAgICAgSW50UmVjdCBmaXJzdFJlY3QgPSBtYWlu
RnJhbWVJbXBsLT5maXJzdFJlY3RGb3JSYW5nZShzZWxlY3Rpb24uZ2V0KCkpOwotCi0gICAgICAg
IGludCB4ID0gcmlnaHRBbGlnbmVkID8gZmlyc3RSZWN0LnJpZ2h0KCkgOiBmaXJzdFJlY3QueCgp
OwotICAgICAgICBsb2NhdGlvbiA9IEludFBvaW50KHgsIGZpcnN0UmVjdC5ib3R0b20oKSk7Ci0g
ICAgfSBlbHNlIGlmIChmb2N1c2VkTm9kZSkKLSAgICAgICAgbG9jYXRpb24gPSBmb2N1c2VkTm9k
ZS0+Z2V0UmVjdCgpLmJvdHRvbUxlZnQoKTsKLSAgICBlbHNlIHsKLSAgICAgICAgbG9jYXRpb24g
PSBJbnRQb2ludCgKLSAgICAgICAgICAgIHJpZ2h0QWxpZ25lZCA/IHZpZXctPmNvbnRlbnRzV2lk
dGgoKSAtIGtDb250ZXh0TWVudU1hcmdpbiA6IGtDb250ZXh0TWVudU1hcmdpbiwKLSAgICAgICAg
ICAgIGtDb250ZXh0TWVudU1hcmdpbik7Ci0gICAgfQotCi0gICAgbG9jYXRpb24gPSB2aWV3LT5j
b250ZW50c1RvV2luZG93KGxvY2F0aW9uKTsKLSAgICAvLyBGSVhNRTogVGhlIEludFNpemUoMCwg
LTEpIGlzIGEgaGFjayB0byBnZXQgdGhlIGhpdC10ZXN0aW5nIHRvIHJlc3VsdCBpbgotICAgIC8v
IHRoZSBzZWxlY3RlZCBlbGVtZW50LiBJZGVhbGx5IHdlJ2QgaGF2ZSB0aGUgcG9zaXRpb24gb2Yg
YSBjb250ZXh0IG1lbnUKLSAgICAvLyBldmVudCBiZSBzZXBhcmF0ZSBmcm9tIGl0cyB0YXJnZXQg
bm9kZS4KLSAgICBjb29yZHMgPSBsb2NhdGlvbiArIEludFNpemUoMCwgLTEpOwotCiAgICAgLy8g
VGhlIGNvbnRleHRNZW51Q29udHJvbGxlcigpIGhvbGRzIG9udG8gdGhlIGxhc3QgY29udGV4dCBt
ZW51IHRoYXQgd2FzCiAgICAgLy8gcG9wcGVkIHVwIG9uIHRoZSBwYWdlIHVudGlsIGEgbmV3IG9u
ZSBpcyBjcmVhdGVkLiBXZSBuZWVkIHRvIGNsZWFyCiAgICAgLy8gdGhpcyBtZW51IGJlZm9yZSBw
cm9wYWdhdGluZyB0aGUgZXZlbnQgdGhyb3VnaCB0aGUgRE9NIHNvIHRoYXQgd2UgY2FuCkBAIC03
MjUsMTcgKzY3Myw5IEBAIGJvb2wgV2ViVmlld0ltcGw6OnNlbmRDb250ZXh0TWVudUV2ZW50KGMK
ICAgICAvLyBub3QgcnVuLgogICAgIHBhZ2UoKS0+Y29udGV4dE1lbnVDb250cm9sbGVyKCktPmNs
ZWFyQ29udGV4dE1lbnUoKTsKIAotICAgIGZvY3VzZWRGcmFtZS0+dmlldygpLT5zZXRDdXJzb3Io
cG9pbnRlckN1cnNvcigpKTsKLSAgICBXZWJNb3VzZUV2ZW50IG1vdXNlRXZlbnQ7Ci0gICAgbW91
c2VFdmVudC5idXR0b24gPSBXZWJNb3VzZUV2ZW50OjpCdXR0b25SaWdodDsKLSAgICBtb3VzZUV2
ZW50LnggPSBjb29yZHMueCgpOwotICAgIG1vdXNlRXZlbnQueSA9IGNvb3Jkcy55KCk7Ci0gICAg
bW91c2VFdmVudC50eXBlID0gV2ViSW5wdXRFdmVudDo6TW91c2VVcDsKLQotICAgIFBsYXRmb3Jt
TW91c2VFdmVudEJ1aWxkZXIgcGxhdGZvcm1FdmVudCh2aWV3LCBtb3VzZUV2ZW50KTsKLQogICAg
IG1fY29udGV4dE1lbnVBbGxvd2VkID0gdHJ1ZTsKLSAgICBib29sIGhhbmRsZWQgPSBmb2N1c2Vk
RnJhbWUtPmV2ZW50SGFuZGxlcigpLT5zZW5kQ29udGV4dE1lbnVFdmVudChwbGF0Zm9ybUV2ZW50
KTsKKyAgICBGcmFtZSogZm9jdXNlZEZyYW1lID0gcGFnZSgpLT5mb2N1c0NvbnRyb2xsZXIoKS0+
Zm9jdXNlZE9yTWFpbkZyYW1lKCk7CisgICAgYm9vbCBoYW5kbGVkID0gZm9jdXNlZEZyYW1lLT5l
dmVudEhhbmRsZXIoKS0+c2VuZENvbnRleHRNZW51RXZlbnRGb3JLZXkoKTsKICAgICBtX2NvbnRl
eHRNZW51QWxsb3dlZCA9IGZhbHNlOwogICAgIHJldHVybiBoYW5kbGVkOwogfQpJbmRleDogV2Vi
S2l0L3dpbi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3dpbi9DaGFuZ2VMb2cJKHJl
dmlzaW9uIDYyNDQ2KQorKysgV2ViS2l0L3dpbi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAg
LTEsMyArMSwxNCBAQAorMjAxMC0wNy0wMyAgRXJpayBBcnZpZHNzb24gIDxhcnZAY2hyb21pdW0u
b3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE9qYW4gVmFmYWkuCisKKyAgICAgICAgRml4IGlz
c3VlIHdoZXJlIGEgY29udGV4dG1lbnUgZXZlbnQgd2FzIHJlcG9ydGluZyB0aGUgd3JvbmcgdGFy
Z2V0CisgICAgICAgIGlmIHRoZSBjb250ZXh0IG1lbnUgd2FzIHNob3duIGR1ZSB0byBwcmVzc2lu
ZyB0aGUgY29udGV4dCBtZW51IGtleQorICAgICAgICAob3IgU2hpZnQrRjEwKS4KKworICAgICAg
ICAqIFdlYlZpZXcuY3BwOgorICAgICAgICAoV2ViVmlldzo6aGFuZGxlQ29udGV4dE1lbnVFdmVu
dCk6CisKIDIwMTAtMDctMDEgIFN0ZXZlIEZhbGtlbmJ1cmcgIDxzZmFsa2VuQGFwcGxlLmNvbT4K
IAogICAgICAgICBSZXZpZXdlZCBieSBBZGVsZSBQZXRlcnNvbi4KSW5kZXg6IFdlYktpdC93aW4v
V2ViVmlldy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gV2ViS2l0L3dpbi9XZWJWaWV3LmNwcAkocmV2aXNp
b24gNjI0NDYpCisrKyBXZWJLaXQvd2luL1dlYlZpZXcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0x
MTg4LDYwICsxMTg4LDE5IEBAIFBhZ2UqIFdlYlZpZXc6OnBhZ2UoKQogCiBib29sIFdlYlZpZXc6
OmhhbmRsZUNvbnRleHRNZW51RXZlbnQoV1BBUkFNIHdQYXJhbSwgTFBBUkFNIGxQYXJhbSkKIHsK
LSAgICBzdGF0aWMgY29uc3QgaW50IGNvbnRleHRNZW51TWFyZ2luID0gMTsKLQogICAgIC8vIFRy
YW5zbGF0ZSB0aGUgc2NyZWVuIGNvb3JkaW5hdGVzIGludG8gd2luZG93IGNvb3JkaW5hdGVzCiAg
ICAgUE9JTlQgY29vcmRzID0geyBHRVRfWF9MUEFSQU0obFBhcmFtKSwgR0VUX1lfTFBBUkFNKGxQ
YXJhbSkgfTsKICAgICBpZiAoY29vcmRzLnggPT0gLTEgfHwgY29vcmRzLnkgPT0gLTEpIHsKLSAg
ICAgICAgRnJhbWVWaWV3KiB2aWV3ID0gbV9wYWdlLT5tYWluRnJhbWUoKS0+dmlldygpOwotICAg
ICAgICBpZiAoIXZpZXcpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICAgICAgaW50
IHJpZ2h0QWxpZ25lZCA9IDo6R2V0U3lzdGVtTWV0cmljcyhTTV9NRU5VRFJPUEFMSUdOTUVOVCk7
Ci0gICAgICAgIEludFBvaW50IGxvY2F0aW9uOworICAgICAgICAvLyBUaGUgY29udGV4dE1lbnVD
b250cm9sbGVyKCkgaG9sZHMgb250byB0aGUgbGFzdCBjb250ZXh0IG1lbnUgdGhhdCB3YXMgcG9w
cGVkIHVwIG9uIHRoZQorICAgICAgICAvLyBwYWdlIHVudGlsIGEgbmV3IG9uZSBpcyBjcmVhdGVk
LiBXZSBuZWVkIHRvIGNsZWFyIHRoaXMgbWVudSBiZWZvcmUgcHJvcGFnYXRpbmcgdGhlIGV2ZW50
CisgICAgICAgIC8vIHRocm91Z2ggdGhlIERPTSBzbyB0aGF0IHdlIGNhbiBkZXRlY3QgaWYgd2Ug
Y3JlYXRlIGEgbmV3IG1lbnUgZm9yIHRoaXMgZXZlbnQsIHNpbmNlIHdlCisgICAgICAgIC8vIHdv
bid0IGNyZWF0ZSBhIG5ldyBtZW51IGlmIHRoZSBET00gc3dhbGxvd3MgdGhlIGV2ZW50IGFuZCB0
aGUgZGVmYXVsdEV2ZW50SGFuZGxlciBkb2VzCisgICAgICAgIC8vIG5vdCBydW4uCisgICAgICAg
IG1fcGFnZS0+Y29udGV4dE1lbnVDb250cm9sbGVyKCktPmNsZWFyQ29udGV4dE1lbnUoKTsKIAot
ICAgICAgICAvLyBUaGUgY29udGV4dCBtZW51IGV2ZW50IHdhcyBnZW5lcmF0ZWQgZnJvbSB0aGUg
a2V5Ym9hcmQsIHNvIHNob3cgdGhlIGNvbnRleHQgbWVudSBieSB0aGUgY3VycmVudCBzZWxlY3Rp
b24uCi0gICAgICAgIFBvc2l0aW9uIHN0YXJ0ID0gbV9wYWdlLT5tYWluRnJhbWUoKS0+c2VsZWN0
aW9uKCktPnNlbGVjdGlvbigpLnN0YXJ0KCk7Ci0gICAgICAgIFBvc2l0aW9uIGVuZCA9IG1fcGFn
ZS0+bWFpbkZyYW1lKCktPnNlbGVjdGlvbigpLT5zZWxlY3Rpb24oKS5lbmQoKTsKLQotICAgICAg
ICBpZiAoIXN0YXJ0Lm5vZGUoKSB8fCAhZW5kLm5vZGUoKSkKLSAgICAgICAgICAgIGxvY2F0aW9u
ID0gSW50UG9pbnQocmlnaHRBbGlnbmVkID8gdmlldy0+Y29udGVudHNXaWR0aCgpIC0gY29udGV4
dE1lbnVNYXJnaW4gOiBjb250ZXh0TWVudU1hcmdpbiwgY29udGV4dE1lbnVNYXJnaW4pOwotICAg
ICAgICBlbHNlIHsKLSAgICAgICAgICAgIFJlbmRlck9iamVjdCogcmVuZGVyZXIgPSBzdGFydC5u
b2RlKCktPnJlbmRlcmVyKCk7Ci0gICAgICAgICAgICBpZiAoIXJlbmRlcmVyKQotICAgICAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgICAgICAgICAgLy8gQ2FsY3VsYXRlIHRoZSByZWN0
IG9mIHRoZSBmaXJzdCBsaW5lIG9mIHRoZSBzZWxlY3Rpb24gKGNyaWJiZWQgZnJvbSAtW1dlYkNv
cmVGcmFtZUJyaWRnZSBmaXJzdFJlY3RGb3JET01SYW5nZTpdLAotICAgICAgICAgICAgLy8gbm93
IEZyYW1lOjpmaXJzdFJlY3RGb3JSYW5nZSgpLCB3aGljaCBwZXJoYXBzIHRoaXMgc2hvdWxkIGNh
bGwpLgotICAgICAgICAgICAgaW50IGV4dHJhV2lkdGhUb0VuZE9mTGluZSA9IDA7Ci0KLSAgICAg
ICAgICAgIElubGluZUJveCogc3RhcnRJbmxpbmVCb3g7Ci0gICAgICAgICAgICBpbnQgc3RhcnRD
YXJldE9mZnNldDsKLSAgICAgICAgICAgIHN0YXJ0LmdldElubGluZUJveEFuZE9mZnNldChET1dO
U1RSRUFNLCBzdGFydElubGluZUJveCwgc3RhcnRDYXJldE9mZnNldCk7Ci0gICAgICAgICAgICBJ
bnRSZWN0IHN0YXJ0Q2FyZXRSZWN0ID0gcmVuZGVyZXItPmxvY2FsQ2FyZXRSZWN0KHN0YXJ0SW5s
aW5lQm94LCBzdGFydENhcmV0T2Zmc2V0LCAmZXh0cmFXaWR0aFRvRW5kT2ZMaW5lKTsKLSAgICAg
ICAgICAgIGlmIChzdGFydENhcmV0UmVjdCAhPSBJbnRSZWN0KCkpCi0gICAgICAgICAgICAgICAg
c3RhcnRDYXJldFJlY3QgPSByZW5kZXJlci0+bG9jYWxUb0Fic29sdXRlUXVhZChGbG9hdFJlY3Qo
c3RhcnRDYXJldFJlY3QpKS5lbmNsb3NpbmdCb3VuZGluZ0JveCgpOwotCi0gICAgICAgICAgICBJ
bmxpbmVCb3gqIGVuZElubGluZUJveDsKLSAgICAgICAgICAgIGludCBlbmRDYXJldE9mZnNldDsK
LSAgICAgICAgICAgIGVuZC5nZXRJbmxpbmVCb3hBbmRPZmZzZXQoVVBTVFJFQU0sIGVuZElubGlu
ZUJveCwgZW5kQ2FyZXRPZmZzZXQpOwotICAgICAgICAgICAgSW50UmVjdCBlbmRDYXJldFJlY3Qg
PSByZW5kZXJlci0+bG9jYWxDYXJldFJlY3QoZW5kSW5saW5lQm94LCBlbmRDYXJldE9mZnNldCk7
Ci0gICAgICAgICAgICBpZiAoZW5kQ2FyZXRSZWN0ICE9IEludFJlY3QoKSkKLSAgICAgICAgICAg
ICAgICBlbmRDYXJldFJlY3QgPSByZW5kZXJlci0+bG9jYWxUb0Fic29sdXRlUXVhZChGbG9hdFJl
Y3QoZW5kQ2FyZXRSZWN0KSkuZW5jbG9zaW5nQm91bmRpbmdCb3goKTsKLQotICAgICAgICAgICAg
SW50UmVjdCBmaXJzdFJlY3Q7Ci0gICAgICAgICAgICBpZiAoc3RhcnRDYXJldFJlY3QueSgpID09
IGVuZENhcmV0UmVjdC55KCkpCi0gICAgICAgICAgICAgICAgZmlyc3RSZWN0ID0gSW50UmVjdCht
aW4oc3RhcnRDYXJldFJlY3QueCgpLCBlbmRDYXJldFJlY3QueCgpKSwgc3RhcnRDYXJldFJlY3Qu
eSgpLCBhYnMoZW5kQ2FyZXRSZWN0LngoKSAtIHN0YXJ0Q2FyZXRSZWN0LngoKSksIG1heChzdGFy
dENhcmV0UmVjdC5oZWlnaHQoKSwgZW5kQ2FyZXRSZWN0LmhlaWdodCgpKSk7Ci0gICAgICAgICAg
ICBlbHNlCi0gICAgICAgICAgICAgICAgZmlyc3RSZWN0ID0gSW50UmVjdChzdGFydENhcmV0UmVj
dC54KCksIHN0YXJ0Q2FyZXRSZWN0LnkoKSwgc3RhcnRDYXJldFJlY3Qud2lkdGgoKSArIGV4dHJh
V2lkdGhUb0VuZE9mTGluZSwgc3RhcnRDYXJldFJlY3QuaGVpZ2h0KCkpOwotCi0gICAgICAgICAg
ICBsb2NhdGlvbiA9IEludFBvaW50KHJpZ2h0QWxpZ25lZCA/IGZpcnN0UmVjdC5yaWdodCgpIDog
Zmlyc3RSZWN0LngoKSwgZmlyc3RSZWN0LmJvdHRvbSgpKTsKLSAgICAgICAgfQorICAgICAgICBG
cmFtZSogZm9jdXNlZEZyYW1lID0gbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS0+Zm9jdXNlZE9y
TWFpbkZyYW1lKCk7CisgICAgICAgIHJldHVybiBmb2N1c2VkRnJhbWUtPmV2ZW50SGFuZGxlcigp
LT5zZW5kQ29udGV4dE1lbnVFdmVudEZvcktleSgpOwogCi0gICAgICAgIGxvY2F0aW9uID0gdmll
dy0+Y29udGVudHNUb1dpbmRvdyhsb2NhdGlvbik7Ci0gICAgICAgIC8vIEZJWE1FOiBUaGUgSW50
U2l6ZSgwLCAtMSkgaXMgYSBoYWNrIHRvIGdldCB0aGUgaGl0LXRlc3RpbmcgdG8gcmVzdWx0IGlu
IHRoZSBzZWxlY3RlZCBlbGVtZW50LgotICAgICAgICAvLyBJZGVhbGx5IHdlJ2QgaGF2ZSB0aGUg
cG9zaXRpb24gb2YgYSBjb250ZXh0IG1lbnUgZXZlbnQgYmUgc2VwYXJhdGUgZnJvbSBpdHMgdGFy
Z2V0IG5vZGUuCi0gICAgICAgIGNvb3JkcyA9IGxvY2F0aW9uICsgSW50U2l6ZSgwLCAtMSk7CiAg
ICAgfSBlbHNlIHsKICAgICAgICAgaWYgKCE6OlNjcmVlblRvQ2xpZW50KG1fdmlld1dpbmRvdywg
JmNvb3JkcykpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0xMjQ5LDExICsxMjA4LDYg
QEAgYm9vbCBXZWJWaWV3OjpoYW5kbGVDb250ZXh0TWVudUV2ZW50KFdQQQogCiAgICAgbFBhcmFt
ID0gTUFLRUxQQVJBTShjb29yZHMueCwgY29vcmRzLnkpOwogCi0gICAgLy8gVGhlIGNvbnRleHRN
ZW51Q29udHJvbGxlcigpIGhvbGRzIG9udG8gdGhlIGxhc3QgY29udGV4dCBtZW51IHRoYXQgd2Fz
IHBvcHBlZCB1cCBvbiB0aGUKLSAgICAvLyBwYWdlIHVudGlsIGEgbmV3IG9uZSBpcyBjcmVhdGVk
LiBXZSBuZWVkIHRvIGNsZWFyIHRoaXMgbWVudSBiZWZvcmUgcHJvcGFnYXRpbmcgdGhlIGV2ZW50
Ci0gICAgLy8gdGhyb3VnaCB0aGUgRE9NIHNvIHRoYXQgd2UgY2FuIGRldGVjdCBpZiB3ZSBjcmVh
dGUgYSBuZXcgbWVudSBmb3IgdGhpcyBldmVudCwgc2luY2Ugd2UKLSAgICAvLyB3b24ndCBjcmVh
dGUgYSBuZXcgbWVudSBpZiB0aGUgRE9NIHN3YWxsb3dzIHRoZSBldmVudCBhbmQgdGhlIGRlZmF1
bHRFdmVudEhhbmRsZXIgZG9lcwotICAgIC8vIG5vdCBydW4uCiAgICAgbV9wYWdlLT5jb250ZXh0
TWVudUNvbnRyb2xsZXIoKS0+Y2xlYXJDb250ZXh0TWVudSgpOwogCiAgICAgSW50UG9pbnQgZG9j
dW1lbnRQb2ludChtX3BhZ2UtPm1haW5GcmFtZSgpLT52aWV3KCktPndpbmRvd1RvQ29udGVudHMo
Y29vcmRzKSk7Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>