<?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>62969</bug_id>
          
          <creation_ts>2011-06-20 02:08:47 -0700</creation_ts>
          <short_desc>[WK2][Qt] Move from QGraphicsView to Qt Scene Graph</short_desc>
          <delta_ts>2011-07-28 05:14:43 -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>Platform</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>65189</dependson>
    
    <dependson>65310</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Simon Hausmann">hausmann</reporter>
          <assigned_to name="Benjamin Poulain">benjamin</assigned_to>
          <cc>abecsi</cc>
    
    <cc>benjamin</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>gopal.1.raghavan</cc>
    
    <cc>igor.oliveira</cc>
    
    <cc>jturcotte</cc>
    
    <cc>kbalazs</cc>
    
    <cc>kevin.simons</cc>
    
    <cc>kling</cc>
    
    <cc>laszlo.gombos</cc>
    
    <cc>loki</cc>
    
    <cc>luiz</cc>
    
    <cc>ossy</cc>
    
    <cc>ostap73</cc>
    
    <cc>tonikitoo</cc>
    
    <cc>yael</cc>
    
    <cc>zoltan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>423554</commentid>
    <comment_count>0</comment_count>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2011-06-20 02:08:47 -0700</bug_when>
    <thetext>This bug tracks the move of the WebKit2-Qt build from QGraphicsView to the Qt Scene Graph.

The goals are:

1) Building WebKit2-Qt requires Qt 5
2) The rendering is done exclusively with the Qt Scene Graph - we don&apos;t need to support any other rendering paths (like QGraphicsView or QWidget)
3) No patches that remove Qt 4 support should be landed until the build bots are set up accordingly</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>423561</commentid>
    <comment_count>1</comment_count>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2011-06-20 02:21:10 -0700</bug_when>
    <thetext>Proposed steps:

1) Move QGrahicsWKView over to a QSGPainted item first and make the MiniBrowser use QSGCanvas. (simple patch work in progress)

2) Then we turn BrowserView.cpp/h into the class that controls the viewport, i.e. scroll position, etc.

3) Make QGrahpicsWKView a plain QObject, make the tiles scene graph nodes, make BrowserView.cpp/h tell QGraphicsWKView the scroll positions, etc. and let QGraphicsWKView position the nodes accordingly (maybe let TiledDrawingAreaProxyQt actually do that :)

4) Move BrowserView.cpp/h into the library, give it a better name, merge QGraphicsWKView/QWKPage (or improve the split simply)

5) Move MiniBrowser over to real QML

6) ...

7) Profit :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>423574</commentid>
    <comment_count>2</comment_count>
      <attachid>97771</attachid>
    <who name="Simon Hausmann">hausmann</who>
    <bug_when>2011-06-20 02:51:59 -0700</bug_when>
    <thetext>Created attachment 97771
Simple patch to illustrate scene graph port

This is a simple patch (500 loc) that is work in progress that illustrates the porting path to the scene graph, initially based on the FBO based painted item.

It requires QML_NO_THREADED_RENDERER=1: paint() is otherwise called from the rendering thread, which will start a timer that was constructed in the gui thread. That&apos;s not possible. I think the NO_THREADED_RENDERER workaround is fine since we anyway want to move away from PaintedItem and position the tiles in the scene
graph ourselves. If the node updates can only be done from the rendering thread, then we need to find another solution for the timer problem...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>423660</commentid>
    <comment_count>3</comment_count>
    <who name="Gopal Raghavan">gopal.1.raghavan</who>
    <bug_when>2011-06-20 07:16:46 -0700</bug_when>
    <thetext>Simon,
Similar work already happening in http://gitorious.net/+mob-team/webkit/mob-team-qtwebkit2/commits/qml2-inprogress-sl

We can probably collaborate.
Thanks
--
Gopal</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>424514</commentid>
    <comment_count>4</comment_count>
      <attachid>97771</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2011-06-21 10:06:50 -0700</bug_when>
    <thetext>Comment on attachment 97771
Simple patch to illustrate scene graph port

Looks pretty nice and sounds like a good plan</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>437087</commentid>
    <comment_count>5</comment_count>
      <attachid>100807</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2011-07-14 07:56:25 -0700</bug_when>
    <thetext>Created attachment 100807
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>437092</commentid>
    <comment_count>6</comment_count>
      <attachid>100808</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2011-07-14 08:00:39 -0700</bug_when>
    <thetext>Created attachment 100808
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>437093</commentid>
    <comment_count>7</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2011-07-14 08:03:36 -0700</bug_when>
    <thetext>Sorry about the previous patch, I forgot to squash one local change.

This is very the basics to get the existing code running on Qt 5. More changes are needed to get the webview to be more stable and to have good performance.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>437136</commentid>
    <comment_count>8</comment_count>
      <attachid>100808</attachid>
    <who name="Early Warning System Bot">webkit-ews</who>
    <bug_when>2011-07-14 09:44:44 -0700</bug_when>
    <thetext>Comment on attachment 100808
Patch

Attachment 100808 did not pass qt-ews (qt):
Output: http://queues.webkit.org/results/9064231</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>439930</commentid>
    <comment_count>9</comment_count>
      <attachid>100808</attachid>
    <who name="Jocelyn Turcotte">jturcotte</who>
    <bug_when>2011-07-20 12:32:36 -0700</bug_when>
    <thetext>Comment on attachment 100808
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=100808&amp;action=review

This patch works actually pretty nicely :)
Some comments:

&gt; Source/WebKit2/UIProcess/qt/TouchViewInterface.cpp:76
&gt; -void TouchViewInterface::pinchGestureRequestUpdate(const QPointF&amp; pinchCenterInPageViewCoordinate, qreal totalScaleFactor)
&gt; +void TouchViewInterface::pinchGestureRequestUpdate(const QPointF&amp;, qreal totalScaleFactor)
&gt;  {
&gt; -    // FIXME: it is a bit more complicated than that, changes of the center position should move the page even
&gt; -    // if the zoom factor does not change. Both the zoom and the panning should be handled through the physics
&gt; -    // engine.
&gt; +    // FIXME: it is a more complicated than that:
&gt; +    // -the scale should be done centered on the pinch center.
&gt; +    // -changes of the center position should move the page even if the zoom factor
&gt; +    //  does not change. Both the zoom and the panning should be handled through the physics engine.
&gt;      const qreal scale = m_pinchStartScale * totalScaleFactor;
&gt; -    m_pageView-&gt;setTransformOriginPoint(pinchCenterInPageViewCoordinate);
&gt;      m_pageView-&gt;setScale(scale);

Even though you added the FIXME, this makes pinch zooming pretty difficult to use meanwhile.
This should work OK I think:

    QPointF oldPinchCenterOnParent = m_pageView-&gt;mapToItem(m_pageView-&gt;parentItem(), pinchCenterInPageViewCoordinate);
    m_pageView-&gt;setScale(scale);
    QPointF newPinchCenterOnParent = m_pageView-&gt;mapToItem(m_pageView-&gt;parentItem(), pinchCenterInPageViewCoordinate);
    m_pageView-&gt;setPos(m_pageView-&gt;pos() - (newPinchCenterOnParent - oldPinchCenterOnParent));

&gt; Tools/MiniBrowser/qt/main.cpp:39
&gt; +    qputenv(&quot;QML_NO_THREADED_RENDERER&quot;, QByteArray(&quot;1&quot;));

It would be nice to have a comment on why this is needed here, so that we can know when we can remove it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>442336</commentid>
    <comment_count>10</comment_count>
      <attachid>100808</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2011-07-26 10:11:47 -0700</bug_when>
    <thetext>Comment on attachment 100808
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=100808&amp;action=review

r=me.

I must say the event delivery looks pretty disgusting, but there&apos;s not much we can do about that here. :(
All in all, looks like a good place to start. Please consider Jocelyn&apos;s comments before landing.

&gt; Source/WebKit2/ChangeLog:14
&gt; +        QTouchWebView become a QSGItem with the only role of clipping
&gt; +        children items.

become -&gt; becomes
children items -&gt; child items

&gt; Source/WebKit2/ChangeLog:17
&gt; +        QTouchWebPage become a QSGPaintedItem in order to render the content
&gt; +        of the flattened page. This is a temporary work around to get
&gt; +        something running withtout deep change on the drawing area proxy.

become -&gt; becomes
withtout -&gt; without
deep change -&gt; deep changes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>442830</commentid>
    <comment_count>11</comment_count>
      <attachid>100808</attachid>
    <who name="Andreas Kling">kling</who>
    <bug_when>2011-07-27 03:58:17 -0700</bug_when>
    <thetext>Comment on attachment 100808
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=100808&amp;action=review

&gt; Source/WebKit2/UIProcess/API/qt/qdesktopwebview.h:31
&gt; +#include &lt;stdio.h&gt;

Derp.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>443050</commentid>
    <comment_count>12</comment_count>
      <attachid>102160</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2011-07-27 11:59:01 -0700</bug_when>
    <thetext>Created attachment 102160
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>443076</commentid>
    <comment_count>13</comment_count>
      <attachid>102160</attachid>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2011-07-27 12:21:53 -0700</bug_when>
    <thetext>Comment on attachment 102160
Patch

Clearing flags on attachment: 102160

Committed r91863: &lt;http://trac.webkit.org/changeset/91863&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>443077</commentid>
    <comment_count>14</comment_count>
    <who name="Benjamin Poulain">benjamin</who>
    <bug_when>2011-07-27 12:22:05 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>443405</commentid>
    <comment_count>15</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2011-07-28 01:39:58 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; (From update of attachment 102160 [details])
&gt; Clearing flags on attachment: 102160
&gt; 
&gt; Committed r91863: &lt;http://trac.webkit.org/changeset/91863&gt;

It broke the WK2 build. :-/

http://build.webkit.sed.hu/builders/x86-32%20Linux%20Qt%20Release%20WebKit2/builds/9717/steps/compile-webkit/logs/stdio

Reopen to fix it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>443407</commentid>
    <comment_count>16</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2011-07-28 01:46:39 -0700</bug_when>
    <thetext>I really don&apos;t understand why did you land code which doesn&apos;t build ...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>443409</commentid>
    <comment_count>17</comment_count>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2011-07-28 01:53:38 -0700</bug_when>
    <thetext>(In reply to comment #16)
&gt; I really don&apos;t understand why did you land code which doesn&apos;t build ...

Calm down Ossy! Our environments are different especially with Qt5. I&apos;m sure it built in the environment where it was developed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>443412</commentid>
    <comment_count>18</comment_count>
    <who name="Csaba Osztrogonác">ossy</who>
    <bug_when>2011-07-28 02:12:58 -0700</bug_when>
    <thetext>(In reply to comment #17)
&gt; (In reply to comment #16)
&gt; &gt; I really don&apos;t understand why did you land code which doesn&apos;t build ...
&gt; 
&gt; Calm down Ossy! Our environments are different especially with Qt5. I&apos;m sure it built in the environment where it was developed.

But we should have _same_ environment as all developers ... 
A bot with different environment is absolutely useless ... 

And I think the author of the patch should check the bot after his commit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>443415</commentid>
    <comment_count>19</comment_count>
    <who name="Balazs Kelemen">kbalazs</who>
    <bug_when>2011-07-28 02:16:59 -0700</bug_when>
    <thetext>(In reply to comment #18)
&gt; (In reply to comment #17)
&gt; &gt; (In reply to comment #16)
&gt; &gt; &gt; I really don&apos;t understand why did you land code which doesn&apos;t build ...
&gt; &gt; 
&gt; &gt; Calm down Ossy! Our environments are different especially with Qt5. I&apos;m sure it built in the environment where it was developed.
&gt; 
&gt; But we should have _same_ environment as all developers ... 
&gt; A bot with different environment is absolutely useless ... 
&gt; 

I need to quote the Black Adder: &quot;have you ever take a journey on earth&quot;? :)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>443417</commentid>
    <comment_count>20</comment_count>
    <who name="Andras Becsi">abecsi</who>
    <bug_when>2011-07-28 03:06:27 -0700</bug_when>
    <thetext>(In reply to comment #18)
&gt; (In reply to comment #17)
&gt; &gt; (In reply to comment #16)
&gt; &gt; &gt; I really don&apos;t understand why did you land code which doesn&apos;t build ...
&gt; &gt; 
&gt; &gt; Calm down Ossy! Our environments are different especially with Qt5. I&apos;m sure it built in the environment where it was developed.
&gt; 
&gt; But we should have _same_ environment as all developers ... 
&gt; A bot with different environment is absolutely useless ... 
&gt; 
&gt; And I think the author of the patch should check the bot after his commit.

The Qt5 environment is not yet stable, so you should really calm down a bit. I updated the Qt5 env on the bot, and now the patch builds.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>97771</attachid>
            <date>2011-06-20 02:51:59 -0700</date>
            <delta_ts>2011-07-14 07:56:12 -0700</delta_ts>
            <desc>Simple patch to illustrate scene graph port</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>18403</size>
            <attacher name="Simon Hausmann">hausmann</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQucHJvIGIvU291cmNlL1dlYktpdC5wcm8KaW5kZXgg
OWJlMGY0YS4uNTdkMWVlZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQucHJvCisrKyBiL1Nv
dXJjZS9XZWJLaXQucHJvCkBAIC0xNSw3ICsxNSw3IEBAIFNVQkRJUlMgKz0gV2ViS2l0L3F0L1F0
V2ViS2l0LnBybwogCiB3ZWJraXQyIHsKICAgICBleGlzdHMoJCRQV0QvV2ViS2l0Mi9XZWJQcm9j
ZXNzLnBybyk6IFNVQkRJUlMgKz0gV2ViS2l0Mi9XZWJQcm9jZXNzLnBybwotICAgIGV4aXN0cygk
JFBXRC9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvdGVzdHMpOiBTVUJESVJTICs9IFdlYktpdDIv
VUlQcm9jZXNzL0FQSS9xdC90ZXN0cworIyAgICBleGlzdHMoJCRQV0QvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL3F0L3Rlc3RzKTogU1VCRElSUyArPSBXZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvdGVz
dHMKIH0KIAogY29udGFpbnMoUVRfQ09ORklHLCBkZWNsYXJhdGl2ZSkgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9xdC9RdFdlYktpdC5wcm8gYi9Tb3VyY2UvV2ViS2l0L3F0L1F0V2ViS2l0
LnBybwppbmRleCBjZDhkMjUxLi42NTEzZGZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3F0
L1F0V2ViS2l0LnBybworKysgYi9Tb3VyY2UvV2ViS2l0L3F0L1F0V2ViS2l0LnBybwpAQCAtNyw2
ICs3LDggQEAgVEVNUExBVEUgPSBsaWIKIAogREVGSU5FUyArPSBCVUlMRElOR19XRUJLSVQKIAor
d2Via2l0MjogUVQgKz0gZGVjbGFyYXRpdmUKKwogUkVTT1VSQ0VTICs9IFwKICAgICAkJFBXRC8u
Li8uLi9XZWJDb3JlL1dlYkNvcmUucXJjCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvcXQvcWdyYXBoaWNzd2t2aWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvcXQvcWdyYXBoaWNzd2t2aWV3LmNwcAppbmRleCAzY2U1M2E0Li4xNjVjZWQwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FncmFwaGljc3drdmll
dy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xZ3JhcGhpY3N3a3Zp
ZXcuY3BwCkBAIC01OSwxNiArNTksMTYgQEAgc3RydWN0IFFHcmFwaGljc1dLVmlld1ByaXZhdGUg
ewogICAgIGJvb2wgbV9pc0NoYW5naW5nU2NhbGU7CiB9OwogCi1RR3JhcGhpY3NXS1ZpZXc6OlFH
cmFwaGljc1dLVmlldyhRV0tDb250ZXh0KiBjb250ZXh0LCBCYWNraW5nU3RvcmVUeXBlIGJhY2tp
bmdTdG9yZVR5cGUsIFFHcmFwaGljc0l0ZW0qIHBhcmVudCkKLSAgICA6IFFHcmFwaGljc1dpZGdl
dChwYXJlbnQpCitRR3JhcGhpY3NXS1ZpZXc6OlFHcmFwaGljc1dLVmlldyhRV0tDb250ZXh0KiBj
b250ZXh0LCBCYWNraW5nU3RvcmVUeXBlIGJhY2tpbmdTdG9yZVR5cGUsIFFTR0l0ZW0qIHBhcmVu
dCkKKyAgICA6IFFTR1BhaW50ZWRJdGVtKHBhcmVudCkKICAgICAsIGQobmV3IFFHcmFwaGljc1dL
Vmlld1ByaXZhdGUodGhpcykpCiB7CiAgICAgZC0+cGFnZSA9IG5ldyBRV0tQYWdlKGNvbnRleHQp
OwogICAgIGluaXQoYmFja2luZ1N0b3JlVHlwZSk7CiB9CiAKLVFHcmFwaGljc1dLVmlldzo6UUdy
YXBoaWNzV0tWaWV3KFFXS0NvbnRleHQqIGNvbnRleHQsIFdLUGFnZUdyb3VwUmVmIHBhZ2VHcm91
cFJlZiwgQmFja2luZ1N0b3JlVHlwZSBiYWNraW5nU3RvcmVUeXBlLCBRR3JhcGhpY3NJdGVtKiBw
YXJlbnQpCi0gICAgOiBRR3JhcGhpY3NXaWRnZXQocGFyZW50KQorUUdyYXBoaWNzV0tWaWV3OjpR
R3JhcGhpY3NXS1ZpZXcoUVdLQ29udGV4dCogY29udGV4dCwgV0tQYWdlR3JvdXBSZWYgcGFnZUdy
b3VwUmVmLCBCYWNraW5nU3RvcmVUeXBlIGJhY2tpbmdTdG9yZVR5cGUsIFFTR0l0ZW0qIHBhcmVu
dCkKKyAgICA6IFFTR1BhaW50ZWRJdGVtKHBhcmVudCkKICAgICAsIGQobmV3IFFHcmFwaGljc1dL
Vmlld1ByaXZhdGUodGhpcykpCiB7CiAgICAgZC0+cGFnZSA9IG5ldyBRV0tQYWdlKGNvbnRleHQs
IHBhZ2VHcm91cFJlZik7CkBAIC03Nyw3ICs3Nyw3IEBAIFFHcmFwaGljc1dLVmlldzo6UUdyYXBo
aWNzV0tWaWV3KFFXS0NvbnRleHQqIGNvbnRleHQsIFdLUGFnZUdyb3VwUmVmIHBhZ2VHcm91cFJl
CiAKIHZvaWQgUUdyYXBoaWNzV0tWaWV3Ojppbml0KEJhY2tpbmdTdG9yZVR5cGUgYmFja2luZ1N0
b3JlVHlwZSkKIHsKLSAgICBzZXRGb2N1c1BvbGljeShRdDo6U3Ryb25nRm9jdXMpOworLy8gIyMj
ICAgIHNldEZvY3VzUG9saWN5KFF0OjpTdHJvbmdGb2N1cyk7CiAgICAgc2V0QWNjZXB0SG92ZXJF
dmVudHModHJ1ZSk7CiAKICNpZiBFTkFCTEUoVElMRURfQkFDS0lOR19TVE9SRSkKQEAgLTEwOSwy
MSArMTA5LDkgQEAgUVdLUGFnZSogUUdyYXBoaWNzV0tWaWV3OjpwYWdlKCkgY29uc3QKICAgICBy
ZXR1cm4gZC0+cGFnZTsKIH0KIAotdm9pZCBRR3JhcGhpY3NXS1ZpZXc6OnBhaW50KFFQYWludGVy
KiBwYWludGVyLCBjb25zdCBRU3R5bGVPcHRpb25HcmFwaGljc0l0ZW0qIG9wdGlvbiwgUVdpZGdl
dCopCit2b2lkIFFHcmFwaGljc1dLVmlldzo6cGFpbnQoUVBhaW50ZXIqIHBhaW50ZXIpCiB7Ci0g
ICAgcGFnZSgpLT5kLT5wYWludChwYWludGVyLCBvcHRpb24tPmV4cG9zZWRSZWN0LnRvQWxpZ25l
ZFJlY3QoKSk7Ci19Ci0KLXZvaWQgUUdyYXBoaWNzV0tWaWV3OjpzZXRHZW9tZXRyeShjb25zdCBR
UmVjdEYmIHJlY3QpCi17Ci0gICAgUVNpemVGIG9sZFNpemUgPSBnZW9tZXRyeSgpLnNpemUoKTsK
LSAgICBRR3JhcGhpY3NXaWRnZXQ6OnNldEdlb21ldHJ5KHJlY3QpOwotICAgIGlmIChnZW9tZXRy
eSgpLnNpemUoKSA9PSBvbGRTaXplKQotICAgICAgICByZXR1cm47Ci0KLSAgICAvLyBOT1RFOiBj
YWxsIGdlb21ldHJ5KCkgYXMgc2V0R2VvbWV0cnkgZW5zdXJlcyB0aGF0Ci0gICAgLy8gdGhlIGdl
b21ldHJ5IGlzIHdpdGhpbiBsZWdhbCBib3VuZHMgKG1pbmltdW1TaXplLCBtYXhpbXVtU2l6ZSkK
LSAgICBwYWdlKCktPnNldFZpZXdwb3J0U2l6ZShnZW9tZXRyeSgpLnNpemUoKS50b1NpemUoKSk7
CisgICAgcGFnZSgpLT5kLT5wYWludChwYWludGVyLCB2aXNpYmxlUmVjdCgpLnRvUmVjdCgpKTsK
IH0KIAogdm9pZCBRR3JhcGhpY3NXS1ZpZXc6OmxvYWQoY29uc3QgUVVybCYgdXJsKQpAQCAtMTcz
LDcgKzE2MSw3IEBAIHZvaWQgUUdyYXBoaWNzV0tWaWV3OjpzdG9wKCkKIAogdm9pZCBRR3JhcGhp
Y3NXS1ZpZXc6OnVwZGF0ZUN1cnNvcihjb25zdCBRQ3Vyc29yJiBjdXJzb3IpCiB7Ci0gICAgc2V0
Q3Vyc29yKGN1cnNvcik7CisvLyAjIyMgICAgc2V0Q3Vyc29yKGN1cnNvcik7CiB9CiAKIGNsYXNz
IEZyaWVuZGx5V2lkZ2V0IDogcHVibGljIFFXaWRnZXQKQEAgLTE4NCw2ICsxNzIsNyBAQCBwdWJs
aWM6CiAKIHZvaWQgUUdyYXBoaWNzV0tWaWV3Ojpmb2N1c05leHRQcmV2Q2hpbGRDYWxsYmFjayhi
b29sIG5leHQpCiB7CisjaWYgMCAvLyAjIyMgRklYTUUKICAgICBpZiAoaGFzRm9jdXMoKSkgewog
ICAgICAgICAvLyBmaW5kIHRoZSB2aWV3IHdoaWNoIGhhcyB0aGUgZm9jdXM6CiAgICAgICAgIFFM
aXN0PFFHcmFwaGljc1ZpZXcqPiB2aWV3cyA9IHNjZW5lKCktPnZpZXdzKCk7CkBAIC0yMDIsNiAr
MTkxLDcgQEAgdm9pZCBRR3JhcGhpY3NXS1ZpZXc6OmZvY3VzTmV4dFByZXZDaGlsZENhbGxiYWNr
KGJvb2wgbmV4dCkKICAgICAgICAgICAgIGZyaWVuZGx5V2luZG93LT5mb2N1c05leHRQcmV2Q2hp
bGQobmV4dCk7CiAgICAgICAgIH0KICAgICB9CisjZW5kaWYKIH0KIAogLyohIFxyZWltcApAQCAt
MjE1LDE0ICsyMDUsNiBAQCBib29sIFFHcmFwaGljc1dLVmlldzo6Zm9jdXNOZXh0UHJldkNoaWxk
KGJvb2wgbmV4dCkKIAogLyohIFxyZWltcAogKi8KLVFWYXJpYW50IFFHcmFwaGljc1dLVmlldzo6
aXRlbUNoYW5nZShHcmFwaGljc0l0ZW1DaGFuZ2UgY2hhbmdlLCBjb25zdCBRVmFyaWFudCYgdmFs
dWUpCi17Ci0gICAgLy8gSGVyZSBzbyB0aGF0IGl0IGNhbiBiZSByZWltcGxlbWVudGVkIHdpdGhv
dXQgYnJlYWtpbmcgQUJJLgotICAgIHJldHVybiBRR3JhcGhpY3NXaWRnZXQ6Oml0ZW1DaGFuZ2Uo
Y2hhbmdlLCB2YWx1ZSk7Ci19Ci0KLS8qISBccmVpbXAKLSovCiBib29sIFFHcmFwaGljc1dLVmll
dzo6ZXZlbnQoUUV2ZW50KiBldmVudCkKIHsKICAgICBRRXZlbnQ6OlR5cGUgZXZlbnRUeXBlID0g
ZXZlbnQtPnR5cGUoKTsKQEAgLTI0MywxNiArMjI1LDcgQEAgYm9vbCBRR3JhcGhpY3NXS1ZpZXc6
OmV2ZW50KFFFdmVudCogZXZlbnQpCiAgICAgfQogCiAgICAgLy8gSGVyZSBzbyB0aGF0IGl0IGNh
biBiZSByZWltcGxlbWVudGVkIHdpdGhvdXQgYnJlYWtpbmcgQUJJLgotICAgIHJldHVybiBRR3Jh
cGhpY3NXaWRnZXQ6OmV2ZW50KGV2ZW50KTsKLX0KLQotLyohIFxyZWltcAotKi8KLVFTaXplRiBR
R3JhcGhpY3NXS1ZpZXc6OnNpemVIaW50KFF0OjpTaXplSGludCB3aGljaCwgY29uc3QgUVNpemVG
JiBjb25zdHJhaW50KSBjb25zdAotewotICAgIGlmICh3aGljaCA9PSBRdDo6UHJlZmVycmVkU2l6
ZSkKLSAgICAgICAgcmV0dXJuIFFTaXplRig4MDAsIDYwMCk7Ci0gICAgcmV0dXJuIFFHcmFwaGlj
c1dpZGdldDo6c2l6ZUhpbnQod2hpY2gsIGNvbnN0cmFpbnQpOworICAgIHJldHVybiBRU0dQYWlu
dGVkSXRlbTo6ZXZlbnQoZXZlbnQpOwogfQogCiAvKiEgXHJlaW1wCkBAIC0yODYsNDIgKzI1OSw0
MiBAQCB2b2lkIFFHcmFwaGljc1dLVmlldzo6aG92ZXJNb3ZlRXZlbnQoUUdyYXBoaWNzU2NlbmVI
b3ZlckV2ZW50KiBldikKICAgICBwYWdlKCktPmQtPm1vdXNlTW92ZUV2ZW50KCZtZSk7CiAKICAg
ICBpZiAoIWV2LT5pc0FjY2VwdGVkKCkpCi0gICAgICAgIFFHcmFwaGljc0l0ZW06OmhvdmVyTW92
ZUV2ZW50KGV2KTsKKyAgICAgICAgUVNHSXRlbTo6aG92ZXJNb3ZlRXZlbnQoZXYpOwogfQogCiB2
b2lkIFFHcmFwaGljc1dLVmlldzo6bW91c2VNb3ZlRXZlbnQoUUdyYXBoaWNzU2NlbmVNb3VzZUV2
ZW50KiBldikKIHsKICAgICBwYWdlKCktPmQtPm1vdXNlTW92ZUV2ZW50KGV2KTsKICAgICBpZiAo
IWV2LT5pc0FjY2VwdGVkKCkpCi0gICAgICAgIFFHcmFwaGljc0l0ZW06Om1vdXNlTW92ZUV2ZW50
KGV2KTsKKyAgICAgICAgUVNHSXRlbTo6bW91c2VNb3ZlRXZlbnQoZXYpOwogfQogCiB2b2lkIFFH
cmFwaGljc1dLVmlldzo6bW91c2VQcmVzc0V2ZW50KFFHcmFwaGljc1NjZW5lTW91c2VFdmVudCog
ZXYpCiB7CiAgICAgcGFnZSgpLT5kLT5tb3VzZVByZXNzRXZlbnQoZXYpOwogICAgIGlmICghZXYt
PmlzQWNjZXB0ZWQoKSkKLSAgICAgICAgUUdyYXBoaWNzSXRlbTo6bW91c2VQcmVzc0V2ZW50KGV2
KTsKKyAgICAgICAgUVNHSXRlbTo6bW91c2VQcmVzc0V2ZW50KGV2KTsKIH0KIAogdm9pZCBRR3Jh
cGhpY3NXS1ZpZXc6Om1vdXNlUmVsZWFzZUV2ZW50KFFHcmFwaGljc1NjZW5lTW91c2VFdmVudCog
ZXYpCiB7CiAgICAgcGFnZSgpLT5kLT5tb3VzZVJlbGVhc2VFdmVudChldik7CiAgICAgaWYgKCFl
di0+aXNBY2NlcHRlZCgpKQotICAgICAgICBRR3JhcGhpY3NJdGVtOjptb3VzZVJlbGVhc2VFdmVu
dChldik7CisgICAgICAgIFFTR0l0ZW06Om1vdXNlUmVsZWFzZUV2ZW50KGV2KTsKIH0KIAogdm9p
ZCBRR3JhcGhpY3NXS1ZpZXc6Om1vdXNlRG91YmxlQ2xpY2tFdmVudChRR3JhcGhpY3NTY2VuZU1v
dXNlRXZlbnQqIGV2KQogewogICAgIHBhZ2UoKS0+ZC0+bW91c2VEb3VibGVDbGlja0V2ZW50KGV2
KTsKICAgICBpZiAoIWV2LT5pc0FjY2VwdGVkKCkpCi0gICAgICAgIFFHcmFwaGljc0l0ZW06Om1v
dXNlUmVsZWFzZUV2ZW50KGV2KTsKKyAgICAgICAgUVNHSXRlbTo6bW91c2VSZWxlYXNlRXZlbnQo
ZXYpOwogfQogCiB2b2lkIFFHcmFwaGljc1dLVmlldzo6d2hlZWxFdmVudChRR3JhcGhpY3NTY2Vu
ZVdoZWVsRXZlbnQqIGV2KQogewogICAgIHBhZ2UoKS0+ZC0+d2hlZWxFdmVudChldik7CiAgICAg
aWYgKCFldi0+aXNBY2NlcHRlZCgpKQotICAgICAgICBRR3JhcGhpY3NJdGVtOjp3aGVlbEV2ZW50
KGV2KTsKKyAgICAgICAgUVNHSXRlbTo6d2hlZWxFdmVudChldik7CiB9CiAKIHZvaWQgUUdyYXBo
aWNzV0tWaWV3Ojp0b3VjaEV2ZW50KFFUb3VjaEV2ZW50KiBldikKQEAgLTM0OCw2ICszMjEsNyBA
QCB2b2lkIFFHcmFwaGljc1dLVmlldzo6Zm9jdXNPdXRFdmVudChRRm9jdXNFdmVudCopCiAqLwog
dm9pZCBRR3JhcGhpY3NXS1ZpZXc6OnNob3dDb250ZXh0TWVudShRU2hhcmVkUG9pbnRlcjxRTWVu
dT4gbWVudSkKIHsKKyNpZiAwIC8vICMjIyBGSVhNRQogICAgIC8vIFJlbW92ZSB0aGUgYWN0aXZl
IG1lbnUgaW4gY2FzZSB0aGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCB0d2ljZS4KICAgICBpZiAoZC0+
YWN0aXZlTWVudSkKICAgICAgICAgZC0+YWN0aXZlTWVudS0+aGlkZSgpOwpAQCAtMzc0LDYgKzM0
OCw3IEBAIHZvaWQgUUdyYXBoaWNzV0tWaWV3OjpzaG93Q29udGV4dE1lbnUoUVNoYXJlZFBvaW50
ZXI8UU1lbnU+IG1lbnUpCiAgICAgbWVudS0+ZXhlYyh2aWV3LT5tYXBUb0dsb2JhbChtZW51LT5w
b3MoKSkpOwogICAgIGlmIChkLT5hY3RpdmVNZW51ID09IG1lbnUpCiAgICAgICAgIGQtPmFjdGl2
ZU1lbnUuY2xlYXIoKTsKKyNlbmRpZgogfQogCiB2b2lkIFFHcmFwaGljc1dLVmlldzo6dGFrZVNu
YXBzaG90KGNvbnN0IFFTaXplJiBzaXplLCBjb25zdCBRUmVjdCYgY29udGVudHNSZWN0KQpAQCAt
Mzk3LDE3ICszNzIsMTYgQEAgUUdyYXBoaWNzV0tWaWV3UHJpdmF0ZTo6UUdyYXBoaWNzV0tWaWV3
UHJpdmF0ZShRR3JhcGhpY3NXS1ZpZXcqIHZpZXcpCiAKIFFSZWN0RiBRR3JhcGhpY3NXS1ZpZXc6
OnZpc2libGVSZWN0KCkgY29uc3QKIHsKLSAgICBpZiAoIXNjZW5lKCkpCi0gICAgICAgIHJldHVy
biBRUmVjdEYoKTsKLQotICAgIFFMaXN0PFFHcmFwaGljc1ZpZXcqPiB2aWV3cyA9IHNjZW5lKCkt
PnZpZXdzKCk7Ci0gICAgaWYgKHZpZXdzLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIFFSZWN0
RigpOworICAgIC8vICMjIyBUYWtlIHNjcm9sbCBwb3NpdGlvbiBpbnRvIGFjY291bnQuCisgICAg
cmV0dXJuIFFSZWN0RigwLCAwLCB3aWR0aCgpLCBoZWlnaHQoKSk7Cit9CiAKLSAgICBRR3JhcGhp
Y3NWaWV3KiBncmFwaGljc1ZpZXcgPSB2aWV3cy5hdCgwKTsKLSAgICBpbnQgeE9mZnNldCA9IGdy
YXBoaWNzVmlldy0+aG9yaXpvbnRhbFNjcm9sbEJhcigpLT52YWx1ZSgpOwotICAgIGludCB5T2Zm
c2V0ID0gZ3JhcGhpY3NWaWV3LT52ZXJ0aWNhbFNjcm9sbEJhcigpLT52YWx1ZSgpOwotICAgIHJl
dHVybiBtYXBSZWN0RnJvbVNjZW5lKFFSZWN0RihRUG9pbnRGKHhPZmZzZXQsIHlPZmZzZXQpLCBn
cmFwaGljc1ZpZXctPnZpZXdwb3J0KCktPnNpemUoKSkpOwordm9pZCBRR3JhcGhpY3NXS1ZpZXc6
Omdlb21ldHJ5Q2hhbmdlZChjb25zdCBRUmVjdEYmIG5ld0dlb21ldHJ5LCBjb25zdCBRUmVjdEYm
IG9sZEdlb21ldHJ5KQoreworICAgIFFTR1BhaW50ZWRJdGVtOjpnZW9tZXRyeUNoYW5nZWQobmV3
R2VvbWV0cnksIG9sZEdlb21ldHJ5KTsKKyAgICBpZiAobmV3R2VvbWV0cnkud2lkdGgoKSAhPSBv
bGRHZW9tZXRyeS53aWR0aCgpCisgICAgICAgIHx8IG5ld0dlb21ldHJ5LmhlaWdodCgpICE9IG9s
ZEdlb21ldHJ5LmhlaWdodCgpKQorICAgICAgICBkLT5wYWdlLT5zZXRWaWV3cG9ydFNpemUobmV3
R2VvbWV0cnkuc2l6ZSgpLnRvU2l6ZSgpKTsKIH0KIAogdm9pZCBRR3JhcGhpY3NXS1ZpZXc6OnBy
ZXBhcmVTY2FsZUNoYW5nZSgpCkBAIC00MzgsNyArNDEyLDkgQEAgdm9pZCBRR3JhcGhpY3NXS1Zp
ZXdQcml2YXRlOjpvblNjYWxlQ2hhbmdlZCgpCiAKIHZvaWQgUUdyYXBoaWNzV0tWaWV3UHJpdmF0
ZTo6b25Ub29sVGlwQ2hhbmdlZChjb25zdCBRU3RyaW5nJiB0b29sVGlwKQogeworI2lmIDAgLy8g
IyMjIEZJWE1FCiAgICAgcS0+c2V0VG9vbFRpcCh0b29sVGlwKTsKKyNlbmRpZgogfQogCiB2b2lk
IFFHcmFwaGljc1dLVmlld1ByaXZhdGU6OmNvbW1pdFNjYWxlKCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcWdyYXBoaWNzd2t2aWV3LmggYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FncmFwaGljc3drdmlldy5oCmluZGV4IGI5ODQ3YzYuLmI2
OTdkYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcWdyYXBo
aWNzd2t2aWV3LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xZ3JhcGhp
Y3N3a3ZpZXcuaApAQCAtNCw3ICs0LDcgQEAKICNpbmNsdWRlICJxd2Via2l0Z2xvYmFsLmgiCiAK
ICNpbmNsdWRlIDxXZWJLaXQyL1dLQmFzZS5oPgotI2luY2x1ZGUgPFFHcmFwaGljc1dpZGdldD4K
KyNpbmNsdWRlIDxRdERlY2xhcmF0aXZlL3FzZ3BhaW50ZWRpdGVtLmg+CiAjaW5jbHVkZSAicXdr
cGFnZS5oIgogCiBRVF9CRUdJTl9OQU1FU1BBQ0UKQEAgLTE3LDIxICsxNywxOSBAQCBuYW1lc3Bh
Y2UgV1RSIHsKIGNsYXNzIFdlYlZpZXc7CiB9OwogCi1jbGFzcyBRV0VCS0lUX0VYUE9SVCBRR3Jh
cGhpY3NXS1ZpZXcgOiBwdWJsaWMgUUdyYXBoaWNzV2lkZ2V0IHsKK2NsYXNzIFFXRUJLSVRfRVhQ
T1JUIFFHcmFwaGljc1dLVmlldyA6IHB1YmxpYyBRU0dQYWludGVkSXRlbSB7CiAgICAgUV9PQkpF
Q1QKICAgICBRX1BST1BFUlRZKFFTdHJpbmcgdGl0bGUgUkVBRCB0aXRsZSkKICAgICBRX1BST1BF
UlRZKFFVcmwgdXJsIFJFQUQgdXJsIFdSSVRFIHNldFVybCkKIAogcHVibGljOgogICAgIGVudW0g
QmFja2luZ1N0b3JlVHlwZSB7IFNpbXBsZSwgVGlsZWQgfTsKLSAgICBRR3JhcGhpY3NXS1ZpZXco
UVdLQ29udGV4dCogY29udGV4dCwgQmFja2luZ1N0b3JlVHlwZSBiYWNraW5nU3RvcmVUeXBlID0g
U2ltcGxlLCBRR3JhcGhpY3NJdGVtKiBwYXJlbnQgPSAwKTsKKyAgICBRR3JhcGhpY3NXS1ZpZXco
UVdLQ29udGV4dCogY29udGV4dCwgQmFja2luZ1N0b3JlVHlwZSBiYWNraW5nU3RvcmVUeXBlID0g
U2ltcGxlLCBRU0dJdGVtKiBwYXJlbnQgPSAwKTsKIAogICAgIHZpcnR1YWwgflFHcmFwaGljc1dL
VmlldygpOwogCiAgICAgUVdLUGFnZSogcGFnZSgpIGNvbnN0OwogCi0gICAgdmlydHVhbCB2b2lk
IHNldEdlb21ldHJ5KGNvbnN0IFFSZWN0RiYpOwotCiAgICAgdm9pZCBsb2FkKGNvbnN0IFFVcmwm
KTsKICAgICB2b2lkIHNldFVybChjb25zdCBRVXJsJik7CiAgICAgUVVybCB1cmwoKSBjb25zdDsK
QEAgLTQwLDE2ICszOCwxNCBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHRyaWdnZXJQYWdlQWN0aW9u
KFFXS1BhZ2U6OldlYkFjdGlvbiBhY3Rpb24sIGJvb2wgY2hlY2tlZCA9IGZhbHNlKTsKIAotICAg
IHZpcnR1YWwgdm9pZCBwYWludChRUGFpbnRlciosIGNvbnN0IFFTdHlsZU9wdGlvbkdyYXBoaWNz
SXRlbSosIFFXaWRnZXQqKTsKLSAgICB2aXJ0dWFsIFFWYXJpYW50IGl0ZW1DaGFuZ2UoR3JhcGhp
Y3NJdGVtQ2hhbmdlLCBjb25zdCBRVmFyaWFudCYpOworICAgIHZpcnR1YWwgdm9pZCBwYWludChR
UGFpbnRlciopOwogICAgIHZpcnR1YWwgYm9vbCBldmVudChRRXZlbnQqKTsKLSAgICB2aXJ0dWFs
IFFTaXplRiBzaXplSGludChRdDo6U2l6ZUhpbnQsIGNvbnN0IFFTaXplRiYpIGNvbnN0OwogICAg
IHZpcnR1YWwgUVZhcmlhbnQgaW5wdXRNZXRob2RRdWVyeShRdDo6SW5wdXRNZXRob2RRdWVyeSkg
Y29uc3Q7CiAKICAgICB2b2lkIHRha2VTbmFwc2hvdChjb25zdCBRU2l6ZSYgc2l6ZSwgY29uc3Qg
UVJlY3QmIGRvY3VtZW50UmVjdCk7CiAKICAgICAvLyBGSVhNRTogc2hvdWxkIG5vdCBiZSBwdWJs
aWMKLSAgICB2aXJ0dWFsIFFSZWN0RiB2aXNpYmxlUmVjdCgpIGNvbnN0OworICAgIFFSZWN0RiB2
aXNpYmxlUmVjdCgpIGNvbnN0OwogCiAgICAgdm9pZCBwcmVwYXJlU2NhbGVDaGFuZ2UoKTsKICAg
ICB2b2lkIGNvbW1pdFNjYWxlQ2hhbmdlKCk7CkBAIC04OSw4ICs4NSwxMCBAQCBwcm90ZWN0ZWQ6
CiAgICAgdmlydHVhbCB2b2lkIGZvY3VzSW5FdmVudChRRm9jdXNFdmVudCopOwogICAgIHZpcnR1
YWwgdm9pZCBmb2N1c091dEV2ZW50KFFGb2N1c0V2ZW50Kik7CiAKKyAgICB2aXJ0dWFsIHZvaWQg
Z2VvbWV0cnlDaGFuZ2VkKGNvbnN0IFFSZWN0RiYgbmV3R2VvbWV0cnksIGNvbnN0IFFSZWN0RiYg
b2xkR2VvbWV0cnkpOworCiBwcml2YXRlOgotICAgIFFHcmFwaGljc1dLVmlldyhRV0tDb250ZXh0
KiwgV0tQYWdlR3JvdXBSZWYsIEJhY2tpbmdTdG9yZVR5cGUgPSBTaW1wbGUsIFFHcmFwaGljc0l0
ZW0qIHBhcmVudCA9IDApOworICAgIFFHcmFwaGljc1dLVmlldyhRV0tDb250ZXh0KiwgV0tQYWdl
R3JvdXBSZWYsIEJhY2tpbmdTdG9yZVR5cGUgPSBTaW1wbGUsIFFTR0l0ZW0qIHBhcmVudCA9IDAp
OwogICAgIHZvaWQgaW5pdChCYWNraW5nU3RvcmVUeXBlKTsKIAogICAgIFFfUFJJVkFURV9TTE9U
KGQsIHZvaWQgb25TY2FsZUNoYW5nZWQoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvcXQvcXdrcGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L3F0L3F3a3BhZ2UuY3BwCmluZGV4IDUxNDRjMzEuLjU4ZTczYTMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXdrcGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9xdC9xd2twYWdlLmNwcApAQCAtMTE0LDcgKzExNCw3IEBAIFFXS1Bh
Z2VQcml2YXRlOjp+UVdLUGFnZVByaXZhdGUoKQogICAgIGRlbGV0ZSBoaXN0b3J5OwogfQogCi12
b2lkIFFXS1BhZ2VQcml2YXRlOjppbml0KFFHcmFwaGljc0l0ZW0qIHZpZXcsIFFHcmFwaGljc1dL
Vmlldzo6QmFja2luZ1N0b3JlVHlwZSBiYWNraW5nU3RvcmVUeXBlKQordm9pZCBRV0tQYWdlUHJp
dmF0ZTo6aW5pdChRU0dQYWludGVkSXRlbSogdmlldywgUUdyYXBoaWNzV0tWaWV3OjpCYWNraW5n
U3RvcmVUeXBlIGJhY2tpbmdTdG9yZVR5cGUpCiB7CiAgICAgdGhpcy0+dmlldyA9IHZpZXc7CiAg
ICAgdGhpcy0+YmFja2luZ1N0b3JlVHlwZSA9IGJhY2tpbmdTdG9yZVR5cGU7CkBAIC0xNjgsNyAr
MTY4LDggQEAgV2ViQ29yZTo6SW50U2l6ZSBRV0tQYWdlUHJpdmF0ZTo6dmlld1NpemUoKQogCiBi
b29sIFFXS1BhZ2VQcml2YXRlOjppc1ZpZXdXaW5kb3dBY3RpdmUoKQogewotICAgIHJldHVybiB2
aWV3ICYmIHZpZXctPmlzQWN0aXZlKCk7CisgICAgcmV0dXJuIHRydWU7CisvLyAjIyMgICAgcmV0
dXJuIHZpZXcgJiYgdmlldy0+aXNBY3RpdmUoKTsKIH0KIAogYm9vbCBRV0tQYWdlUHJpdmF0ZTo6
aXNWaWV3Rm9jdXNlZCgpCkBAIC00NDQsOSArNDQ1LDExIEBAIHZvaWQgUVdLUGFnZVByaXZhdGU6
OnRvdWNoRXZlbnQoUVRvdWNoRXZlbnQqIGV2ZW50KQogCiB2b2lkIFFXS1BhZ2VQcml2YXRlOjpk
aWRSZWxhdW5jaFByb2Nlc3MoKQogeworI2lmIDAgLy8gIyMjIEZJWE1FCiAgICAgUUdyYXBoaWNz
V0tWaWV3KiB3a1ZpZXcgPSBzdGF0aWNfY2FzdDxRR3JhcGhpY3NXS1ZpZXcqPih2aWV3KTsKICAg
ICBpZiAod2tWaWV3KQogICAgICAgICBxLT5zZXRWaWV3cG9ydFNpemUod2tWaWV3LT5zaXplKCku
dG9TaXplKCkpOworI2VuZGlmCiAKICAgICBpc0Nvbm5lY3RlZFRvRW5naW5lID0gdHJ1ZTsKICAg
ICBlbWl0IHEtPmVuZ2luZUNvbm5lY3Rpb25DaGFuZ2VkKHRydWUpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xd2twYWdlX3AuaCBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvcXQvcXdrcGFnZV9wLmgKaW5kZXggZDI0OWRmMC4uNTBiN2Y0YyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xd2twYWdlX3AuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F3a3BhZ2VfcC5oCkBAIC0zMCw3ICsz
MCw3IEBACiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRy
Lmg+CiAjaW5jbHVkZSA8UUJhc2ljVGltZXI+Ci0jaW5jbHVkZSA8UUdyYXBoaWNzVmlldz4KKyNp
bmNsdWRlIDxRU0dJdGVtPgogI2luY2x1ZGUgPFFLZXlFdmVudD4KIAogY2xhc3MgUUdyYXBoaWNz
V0tWaWV3OwpAQCAtNDYsNyArNDYsNyBAQCBwdWJsaWM6CiAKICAgICBzdGF0aWMgUVdLUGFnZVBy
aXZhdGUqIGdldChRV0tQYWdlKiBwYWdlKSB7IHJldHVybiBwYWdlLT5kOyB9CiAKLSAgICB2b2lk
IGluaXQoUUdyYXBoaWNzSXRlbSosIFFHcmFwaGljc1dLVmlldzo6QmFja2luZ1N0b3JlVHlwZSk7
CisgICAgdm9pZCBpbml0KFFTR1BhaW50ZWRJdGVtKiwgUUdyYXBoaWNzV0tWaWV3OjpCYWNraW5n
U3RvcmVUeXBlKTsKIAogICAgIC8vIFBhZ2VDbGllbnQKICAgICB2aXJ0dWFsIFBhc3NPd25QdHI8
V2ViS2l0OjpEcmF3aW5nQXJlYVByb3h5PiBjcmVhdGVEcmF3aW5nQXJlYVByb3h5KCk7CkBAIC0x
MjEsNyArMTIxLDcgQEAgcHVibGljOgogCiAgICAgUVdLUGFnZSogcTsKIAotICAgIFFHcmFwaGlj
c0l0ZW0qIHZpZXc7CisgICAgUVNHUGFpbnRlZEl0ZW0qIHZpZXc7CiAgICAgUVdLQ29udGV4dCog
Y29udGV4dDsKICAgICBRV0tIaXN0b3J5KiBoaXN0b3J5OwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvVGlsZWREcmF3aW5nQXJlYVByb3h5LmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9UaWxlZERyYXdpbmdBcmVhUHJveHkuY3BwCmluZGV4IGQ1MjFhYjcuLjBk
NzkyMTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9UaWxlZERyYXdpbmdB
cmVhUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9UaWxlZERyYXdpbmdB
cmVhUHJveHkuY3BwCkBAIC0xNzYsNiArMTc2LDEzIEBAIHZvaWQgVGlsZWREcmF3aW5nQXJlYVBy
b3h5Ojp0YWtlU25hcHNob3QoY29uc3QgSW50U2l6ZSYgc2l6ZSwgY29uc3QgSW50UmVjdCYgY29u
CiAKIHZvaWQgVGlsZWREcmF3aW5nQXJlYVByb3h5OjppbnZhbGlkYXRlKGNvbnN0IEludFJlY3Qm
IGNvbnRlbnRzRGlydHlSZWN0KQogeworICAgIC8vIElmIHdlIGdldCBhbiAiaW52YWxpZGF0ZSIg
ZnJvbSB0aGUgcHJvY2VzcyBidXQgZG9uJ3QgaGF2ZSBhbnkgdGlsZXMgeWV0LAorICAgIC8vIHRy
eSBjcmVhdGluZyBzb21lLgorICAgIGlmIChtX3RpbGVzLmlzRW1wdHkoKSkgeworICAgICAgICBh
ZGp1c3RWaXNpYmxlUmVjdCgpOworICAgICAgICByZXR1cm47CisgICAgfQorCiAgICAgSW50UmVj
dCBkaXJ0eVJlY3QobWFwRnJvbUNvbnRlbnRzKGNvbnRlbnRzRGlydHlSZWN0KSk7CiAKICAgICBU
aWxlZERyYXdpbmdBcmVhVGlsZTo6Q29vcmRpbmF0ZSB0b3BMZWZ0ID0gdGlsZUNvb3JkaW5hdGVG
b3JQb2ludChkaXJ0eVJlY3QubG9jYXRpb24oKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJLaXQyLnBybyBiL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIucHJvCmluZGV4IGVlYjlmMjgu
LjA0Y2Q0NTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIucHJvCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1dlYktpdDIucHJvCkBAIC0xNyw2ICsxNyw3IEBAIERFU1RESVIgPSAkJFdF
QktJVDJfREVTVERJUgogCiAjIEJ1aWxkIGJvdGggZGVidWcgYW5kIHJlbGVhc2UgY29uZmlndXJh
dGlvbnMKIG1hYzogQ09ORklHICs9IGJ1aWxkX2FsbAorUVQgKz0gZGVjbGFyYXRpdmUKIAogV0VC
S0lUMl9HRU5FUkFURURfSEVBREVSUyA9IFwKICAgICAkJFdFQktJVDJfR0VORVJBVEVEX1NPVVJD
RVNfRElSL0F1dGhlbnRpY2F0aW9uTWFuYWdlck1lc3NhZ2VzLmggXApkaWZmIC0tZ2l0IGEvVG9v
bHMvTWluaUJyb3dzZXIvcXQvQnJvd3NlclZpZXcuY3BwIGIvVG9vbHMvTWluaUJyb3dzZXIvcXQv
QnJvd3NlclZpZXcuY3BwCmluZGV4IDdkNjQyNmUuLmI5NTVlN2MgMTAwNjQ0Ci0tLSBhL1Rvb2xz
L01pbmlCcm93c2VyL3F0L0Jyb3dzZXJWaWV3LmNwcAorKysgYi9Ub29scy9NaW5pQnJvd3Nlci9x
dC9Ccm93c2VyVmlldy5jcHAKQEAgLTI5LDI2ICsyOSwyNiBAQAogI2luY2x1ZGUgIkJyb3dzZXJW
aWV3LmgiCiAKICNpbmNsdWRlIDxRR3JhcGhpY3NTY2VuZT4KKyNpbmNsdWRlIDxRS2V5RXZlbnQ+
CisjaW5jbHVkZSA8UVRocmVhZD4KIAogQnJvd3NlclZpZXc6OkJyb3dzZXJWaWV3KFFHcmFwaGlj
c1dLVmlldzo6QmFja2luZ1N0b3JlVHlwZSBiYWNraW5nU3RvcmVUeXBlLCBRV0tDb250ZXh0KiBj
b250ZXh0LCBRV2lkZ2V0KiBwYXJlbnQpCi0gICAgOiBRR3JhcGhpY3NWaWV3KHBhcmVudCkKKyAg
ICA6IFFTR0NhbnZhcyhwYXJlbnQpCiAgICAgLCBtX2l0ZW0oMCkKIHsKLSAgICBtX2l0ZW0gPSBu
ZXcgUUdyYXBoaWNzV0tWaWV3KGNvbnRleHQsIGJhY2tpbmdTdG9yZVR5cGUsIDApOwotICAgIHNl
dFNjZW5lKG5ldyBRR3JhcGhpY3NTY2VuZSh0aGlzKSk7Ci0gICAgc2NlbmUoKS0+YWRkSXRlbSht
X2l0ZW0pOwotCi0gICAgc2V0RnJhbWVTaGFwZShRRnJhbWU6Ok5vRnJhbWUpOwotICAgIHNldEhv
cml6b250YWxTY3JvbGxCYXJQb2xpY3koUXQ6OlNjcm9sbEJhckFsd2F5c09mZik7Ci0gICAgc2V0
VmVydGljYWxTY3JvbGxCYXJQb2xpY3koUXQ6OlNjcm9sbEJhckFsd2F5c09mZik7CisgICAgbV9p
dGVtID0gbmV3IFFHcmFwaGljc1dLVmlldyhjb250ZXh0LCBiYWNraW5nU3RvcmVUeXBlLCByb290
SXRlbSgpKTsKKyAgICAvLyAjIyMgRklYTUU6IFRoaXMgbmVlZHMgdG8gYmUgcmVwbGFjZWQgd2l0
aCB0aGUgdmlld3BvcnQgbWV0YXRhZyBoYW5kbGluZworICAgIC8vIGluc2lkZSBXZWJDb3JlLgor
ICAgIG1faXRlbS0+cGFnZSgpLT5zZXRSZXNpemVzVG9Db250ZW50c1VzaW5nTGF5b3V0U2l6ZShR
U2l6ZSg5ODAsIDYwMCkpOwogfQogCiB2b2lkIEJyb3dzZXJWaWV3OjpyZXNpemVFdmVudChRUmVz
aXplRXZlbnQqIGV2ZW50KQogewotICAgIFFHcmFwaGljc1ZpZXc6OnJlc2l6ZUV2ZW50KGV2ZW50
KTsKLSAgICBRUmVjdEYgcmVjdChRUG9pbnQoMCwgMCksIGV2ZW50LT5zaXplKCkpOwotICAgIG1f
aXRlbS0+c2V0R2VvbWV0cnkocmVjdCk7Ci0gICAgc2NlbmUoKS0+c2V0U2NlbmVSZWN0KHJlY3Qp
OworICAgIFFTR0NhbnZhczo6cmVzaXplRXZlbnQoZXZlbnQpOworICAgIG1faXRlbS0+c2V0WCgw
KTsKKyAgICBtX2l0ZW0tPnNldFkoMCk7CisgICAgbV9pdGVtLT5zZXRXaWR0aChldmVudC0+c2l6
ZSgpLndpZHRoKCkpOworICAgIG1faXRlbS0+c2V0SGVpZ2h0KGV2ZW50LT5zaXplKCkuaGVpZ2h0
KCkpOwogfQogCiB2b2lkIEJyb3dzZXJWaWV3Ojpsb2FkKGNvbnN0IFFTdHJpbmcmIHVybCkKZGlm
ZiAtLWdpdCBhL1Rvb2xzL01pbmlCcm93c2VyL3F0L0Jyb3dzZXJWaWV3LmggYi9Ub29scy9NaW5p
QnJvd3Nlci9xdC9Ccm93c2VyVmlldy5oCmluZGV4IDU5MzAwNmUuLjNlYWI2YWEgMTAwNjQ0Ci0t
LSBhL1Rvb2xzL01pbmlCcm93c2VyL3F0L0Jyb3dzZXJWaWV3LmgKKysrIGIvVG9vbHMvTWluaUJy
b3dzZXIvcXQvQnJvd3NlclZpZXcuaApAQCAtMzEsOSArMzEsMTAgQEAKIAogI2luY2x1ZGUgPFFH
cmFwaGljc1ZpZXc+CiAjaW5jbHVkZSAicWdyYXBoaWNzd2t2aWV3LmgiCisjaW5jbHVkZSAicXNn
Y2FudmFzLmgiCiAjaW5jbHVkZSAicXdrY29udGV4dC5oIgogCi1jbGFzcyBCcm93c2VyVmlldyA6
IHB1YmxpYyBRR3JhcGhpY3NWaWV3IHsKK2NsYXNzIEJyb3dzZXJWaWV3IDogcHVibGljIFFTR0Nh
bnZhcyB7CiAgICAgUV9PQkpFQ1QKIAogcHVibGljOgpkaWZmIC0tZ2l0IGEvVG9vbHMvTWluaUJy
b3dzZXIvcXQvQnJvd3NlcldpbmRvdy5jcHAgYi9Ub29scy9NaW5pQnJvd3Nlci9xdC9Ccm93c2Vy
V2luZG93LmNwcAppbmRleCBmM2U4ZGE4Li5lMmY2YWI4IDEwMDY0NAotLS0gYS9Ub29scy9NaW5p
QnJvd3Nlci9xdC9Ccm93c2VyV2luZG93LmNwcAorKysgYi9Ub29scy9NaW5pQnJvd3Nlci9xdC9C
cm93c2VyV2luZG93LmNwcApAQCAtNjEsMTEgKzYxLDYgQEAgQnJvd3NlcldpbmRvdzo6QnJvd3Nl
cldpbmRvdyhRV0tDb250ZXh0KiBjb250ZXh0LCBXaW5kb3dPcHRpb25zKiBvcHRpb25zKQogICAg
IGVsc2UKICAgICAgICAgbV9icm93c2VyID0gbmV3IEJyb3dzZXJWaWV3KFFHcmFwaGljc1dLVmll
dzo6U2ltcGxlLCBjb250ZXh0KTsKIAotI2lmIGRlZmluZWQoUVRfQ09ORklHVVJFRF9XSVRIX09Q
RU5HTCkKLSAgICBpZiAobV93aW5kb3dPcHRpb25zLnVzZVFHTFdpZGdldFZpZXdwb3J0KQotICAg
ICAgICBtX2Jyb3dzZXItPnNldFZpZXdwb3J0KG5ldyBRR0xXaWRnZXQoKSk7Ci0jZW5kaWYKLQog
ICAgIHNldEF0dHJpYnV0ZShRdDo6V0FfRGVsZXRlT25DbG9zZSk7CiAKICAgICBjb25uZWN0KG1f
YnJvd3Nlci0+dmlldygpLCBTSUdOQUwobG9hZFByb2dyZXNzKGludCkpLCBTTE9UKGxvYWRQcm9n
cmVzcyhpbnQpKSk7CkBAIC0xMTUsMTEgKzExMCw2IEBAIEJyb3dzZXJXaW5kb3c6OkJyb3dzZXJX
aW5kb3coUVdLQ29udGV4dCogY29udGV4dCwgV2luZG93T3B0aW9ucyogb3B0aW9ucykKICAgICBR
QWN0aW9uKiB0b2dnbGVGcmFtZUZsYXR0ZW5pbmcgPSB0b29sc01lbnUtPmFkZEFjdGlvbigiVG9n
Z2xlIEZyYW1lIEZsYXR0ZW5pbmciLCB0aGlzLCBTTE9UKHRvZ2dsZUZyYW1lRmxhdHRlbmluZyhi
b29sKSkpOwogICAgIHRvZ2dsZUZyYW1lRmxhdHRlbmluZy0+c2V0Q2hlY2thYmxlKHRydWUpOwog
ICAgIHRvZ2dsZUZyYW1lRmxhdHRlbmluZy0+c2V0Q2hlY2tlZChmYWxzZSk7Ci0jaWYgZGVmaW5l
ZChRVF9DT05GSUdVUkVEX1dJVEhfT1BFTkdMKQotICAgIFFBY3Rpb24qIHRvZ2dsZUdMVmlld3Bv
cnQgPSB0b29sc01lbnUtPmFkZEFjdGlvbigiVG9nZ2xlIEdMIFZpZXdwb3J0IiwgdGhpcywgU0xP
VCh0b2dnbGVHTFZpZXdwb3J0KGJvb2wpKSk7Ci0gICAgdG9nZ2xlR0xWaWV3cG9ydC0+c2V0Q2hl
Y2thYmxlKHRydWUpOwotICAgIHRvZ2dsZUdMVmlld3BvcnQtPnNldENoZWNrZWQobV93aW5kb3dP
cHRpb25zLnVzZVFHTFdpZGdldFZpZXdwb3J0KTsKLSNlbmRpZgogICAgIHRvb2xzTWVudS0+YWRk
U2VwYXJhdG9yKCk7CiAgICAgdG9vbHNNZW51LT5hZGRBY3Rpb24oIkNoYW5nZSBVc2VyIEFnZW50
IiwgdGhpcywgU0xPVChzaG93VXNlckFnZW50RGlhbG9nKCkpKTsKICAgICB0b29sc01lbnUtPmFk
ZFNlcGFyYXRvcigpOwpAQCAtMjMwLDcgKzIyMCw3IEBAIHZvaWQgQnJvd3NlcldpbmRvdzo6dXJs
Q2hhbmdlZChjb25zdCBRVXJsJiB1cmwpCiB7CiAgICAgbV9hZGRyZXNzQmFyLT5zZXRUZXh0KHVy
bC50b1N0cmluZygpKTsKICAgICBtX2Jyb3dzZXItPnNldEZvY3VzKCk7Ci0gICAgbV9icm93c2Vy
LT52aWV3KCktPnNldEZvY3VzKCk7CisgICAgbV9icm93c2VyLT52aWV3KCktPnNldEZvY3VzKHRy
dWUpOwogfQogCiB2b2lkIEJyb3dzZXJXaW5kb3c6Om9wZW5GaWxlKCkKQEAgLTQyNiwxMCArNDE2
LDMgQEAgQnJvd3NlcldpbmRvdzo6fkJyb3dzZXJXaW5kb3coKQogICAgIGRlbGV0ZSBtX2FkZHJl
c3NCYXI7CiAgICAgZGVsZXRlIG1fYnJvd3NlcjsKIH0KLQotdm9pZCBCcm93c2VyV2luZG93Ojp0
b2dnbGVHTFZpZXdwb3J0KGJvb2wgdXNlUUdMV2lkZ2V0Vmlld3BvcnQpCi17Ci0jaWYgZGVmaW5l
ZChRVF9DT05GSUdVUkVEX1dJVEhfT1BFTkdMKQotICAgIG1fYnJvd3Nlci0+c2V0Vmlld3BvcnQo
dXNlUUdMV2lkZ2V0Vmlld3BvcnQgPyBuZXcgUUdMV2lkZ2V0KCkgOiAwKTsKLSNlbmRpZgotfQpk
aWZmIC0tZ2l0IGEvVG9vbHMvTWluaUJyb3dzZXIvcXQvQnJvd3NlcldpbmRvdy5oIGIvVG9vbHMv
TWluaUJyb3dzZXIvcXQvQnJvd3NlcldpbmRvdy5oCmluZGV4IGZlYWVhYjAuLjA2ZGEyYTIgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL01pbmlCcm93c2VyL3F0L0Jyb3dzZXJXaW5kb3cuaAorKysgYi9Ub29s
cy9NaW5pQnJvd3Nlci9xdC9Ccm93c2VyV2luZG93LmgKQEAgLTc3LDcgKzc3LDYgQEAgcHJvdGVj
dGVkIHNsb3RzOgogCiAgICAgdm9pZCB0b2dnbGVBdXRvTG9hZEltYWdlcyhib29sKTsKICAgICB2
b2lkIHRvZ2dsZURpc2FibGVKYXZhU2NyaXB0KGJvb2wpOwotICAgIHZvaWQgdG9nZ2xlR0xWaWV3
cG9ydChib29sKTsKIAogcHJpdmF0ZToKICAgICB2b2lkIHVwZGF0ZVVzZXJBZ2VudExpc3QoKTsK
ZGlmZiAtLWdpdCBhL1Rvb2xzL01pbmlCcm93c2VyL3F0L01pbmlCcm93c2VyLnBybyBiL1Rvb2xz
L01pbmlCcm93c2VyL3F0L01pbmlCcm93c2VyLnBybwppbmRleCA5MjY2NmU5Li4zNTBkNzMwNyAx
MDA2NDQKLS0tIGEvVG9vbHMvTWluaUJyb3dzZXIvcXQvTWluaUJyb3dzZXIucHJvCisrKyBiL1Rv
b2xzL01pbmlCcm93c2VyL3F0L01pbmlCcm93c2VyLnBybwpAQCAtMzAsNyArMzAsNyBAQCBJTkNM
VURFUEFUSCArPSBcCiBERVNURElSID0gJCRPVVRQVVRfRElSL2JpbgogIUNPTkZJRyhzdGFuZGFs
b25lX3BhY2thZ2UpOiBDT05GSUcgLT0gYXBwX2J1bmRsZQogCi1RVCArPSBuZXR3b3JrCitRVCAr
PSBuZXR3b3JrIGRlY2xhcmF0aXZlCiBtYWN4OlFUKz14bWwKIAogbGludXgtKiB7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>100807</attachid>
            <date>2011-07-14 07:56:25 -0700</date>
            <delta_ts>2011-07-14 08:00:29 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-62969-20110714170314.patch</filename>
            <type>text/plain</type>
            <size>40950</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTA5MTgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwppbmRleCA0MDA1NTk4NGQ3Y2EzNDJl
MjM1NTA5OGI5ODA1YTUzN2RkOGJkMDRmLi4zMzU4NGZlMmNiZWM1MjkwNGJiZjQzYjIxYzc5Zjhl
NjZkMzMzNDdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKKysrIGIvU291
cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsOTggQEAKKzIwMTEtMDctMTQgIEJlbmph
bWluIFBvdWxhaW4gIDxiZW5qYW1pbkB3ZWJraXQub3JnPgorCisgICAgICAgIFtXSzJdW1F0XSBN
b3ZlIGZyb20gUUdyYXBoaWNzVmlldyB0byBRdCBTY2VuZSBHcmFwaAorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjI5NjkKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDby1hdXRob3JlZCB3aXRoIFNpbW9uIEhh
dXNtYW5uICA8c2ltb24uaGF1c21hbm5Abm9raWEuY29tPgorCisgICAgICAgIFRoaXMgcGF0Y2gg
Y2hhbmdlIHRoZSBiYXNlIG9mIFdlYktpdDIgZnJvbSBRR3JhcGhpY3NXaWRnZXQKKyAgICAgICAg
dG8gc2NlbmVncmFwaCBiYXNlZCBpdGVtcy4KKworICAgICAgICBRVG91Y2hXZWJWaWV3IGJlY29t
ZSBhIFFTR0l0ZW0gd2l0aCB0aGUgb25seSByb2xlIG9mIGNsaXBwaW5nCisgICAgICAgIGNoaWxk
cmVuIGl0ZW1zLgorICAgICAgICBRVG91Y2hXZWJQYWdlIGJlY29tZSBhIFFTR1BhaW50ZWRJdGVt
IGluIG9yZGVyIHRvIHJlbmRlciB0aGUgY29udGVudAorICAgICAgICBvZiB0aGUgZmxhdHRlbmVk
IHBhZ2UuIFRoaXMgaXMgYSB0ZW1wb3Jhcnkgd29yayBhcm91bmQgdG8gZ2V0CisgICAgICAgIHNv
bWV0aGluZyBydW5uaW5nIHdpdGh0b3V0IGRlZXAgY2hhbmdlIG9uIHRoZSBkcmF3aW5nIGFyZWEg
cHJveHkuCisKKyAgICAgICAgUURlc2t0b3BXZWJWaWV3IGJlY29tZSBhIFFTR1BhaW50ZWRJdGVt
IGFuZCBiZWhhdmUgYXMgYmVmb3JlCisgICAgICAgIHJlZ2FyZGluZyByZW5kZXJpbmcuIFRoZSBk
cmF3aW5nIGFyZWEgcHJveHkgaXMgdXNlZCB0byByZW5kZXIKKyAgICAgICAgdGhlIGZ1bGwgaXRl
bS4KKworICAgICAgICBUaGUgZXZlbnQgZGVsaXZlcnkgaGFkIHRvIGJlIGFkYXB0ZWQgYmVjYXVz
ZSB0aGUgc2NlbmVncmFwaCBkb2VzIG5vdAorICAgICAgICBmb2xsb3cgcmVndWxhciBkZWxpdmVy
eSBvZiBRRXZlbnRzLiBJbnN0ZWFkLCBlYWNoIGV2ZW50IHR5cGUgaXMKKyAgICAgICAgZGVsaXZl
cmVkIGRpcmVjdGx5IHRvIGEgc3BlY2lmaWMgdmlydHVhbCBmdW5jdGlvbi4KKyAgICAgICAgSW4g
dGhpcyBwYXRjaCwgdGhlIGV2ZW50cyBhcmUgZm9yd2FyZGVkIHRvIHRoZSBjbGFzc2ljIFFPYmpl
Y3Q6OmV2ZW50KCkuCisKKyAgICAgICAgRm9yIHRoZSBmZWF0dXJlcyB0aGF0IGNhbm5vdCBiZSBp
bXBsZW1lbnRlZCBvbiBzY2VuZWdyYXBoICh0b29sdGlwLCBtZW51cywgZXRjKSwKKyAgICAgICAg
YSB0ZW1wb3Jhcnkgd29ya2Fyb3VuZCB3YXMgYWRkZWQ6IHRoZSBwYXJlbnQgY2FudmFzIGlzIHVz
ZWQgYXMgdGhlIHdpZGdldCBmb3IKKyAgICAgICAgcHJvdmlkaW5nIHRoZSBmZWF0dXJlLiBUaGlz
IGFzc3VtZXMgdGhlIHdlYiB2aWV3cyBhbG9uZSBpbiB0aGUgY2FudmFzIGFuZAorICAgICAgICB0
YWtlIGl0cyBmdWxsIHNpemUuIFRoaXMgd2lsbCBoYXZlIHRvIGJlIGZpeGVkIGluIHRoZSBzY2Vu
ZWdyYXBoIGZvciB1cyB0bworICAgICAgICBpbXBsZW1lbnQgdGhvc2UgZmVhdHVyZXMuCisKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL3F0L3FkZXNrdG9wd2Vidmlldy5jcHA6CisgICAgICAgIChR
RGVza3RvcFdlYlZpZXdQcml2YXRlOjpkcmF3aW5nQXJlYVNpemUpOgorICAgICAgICAoUURlc2t0
b3BXZWJWaWV3UHJpdmF0ZTo6aXNBY3RpdmUpOgorICAgICAgICAoUURlc2t0b3BXZWJWaWV3UHJp
dmF0ZTo6c3RhcnREcmFnKToKKyAgICAgICAgKFFEZXNrdG9wV2ViVmlld1ByaXZhdGU6OmRpZENo
YW5nZVRvb2xUaXApOgorICAgICAgICAoUURlc2t0b3BXZWJWaWV3UHJpdmF0ZTo6ZGlkQ2hhbmdl
Q3Vyc29yKToKKyAgICAgICAgKFFEZXNrdG9wV2ViVmlld1ByaXZhdGU6OnNob3dDb250ZXh0TWVu
dSk6CisgICAgICAgIChRRGVza3RvcFdlYlZpZXc6OlFEZXNrdG9wV2ViVmlldyk6CisgICAgICAg
IChRRGVza3RvcFdlYlZpZXc6OmluaXQpOgorICAgICAgICAocGFpbnRDcmFzaGVkUGFnZSk6Cisg
ICAgICAgIChRRGVza3RvcFdlYlZpZXc6OmtleVByZXNzRXZlbnQpOgorICAgICAgICAoUURlc2t0
b3BXZWJWaWV3OjprZXlSZWxlYXNlRXZlbnQpOgorICAgICAgICAoUURlc2t0b3BXZWJWaWV3Ojpp
bnB1dE1ldGhvZEV2ZW50KToKKyAgICAgICAgKFFEZXNrdG9wV2ViVmlldzo6Zm9jdXNJbkV2ZW50
KToKKyAgICAgICAgKFFEZXNrdG9wV2ViVmlldzo6Zm9jdXNPdXRFdmVudCk6CisgICAgICAgIChR
RGVza3RvcFdlYlZpZXc6Om1vdXNlUHJlc3NFdmVudCk6CisgICAgICAgIChRRGVza3RvcFdlYlZp
ZXc6Om1vdXNlTW92ZUV2ZW50KToKKyAgICAgICAgKFFEZXNrdG9wV2ViVmlldzo6bW91c2VSZWxl
YXNlRXZlbnQpOgorICAgICAgICAoUURlc2t0b3BXZWJWaWV3Ojptb3VzZURvdWJsZUNsaWNrRXZl
bnQpOgorICAgICAgICAoUURlc2t0b3BXZWJWaWV3Ojp3aGVlbEV2ZW50KToKKyAgICAgICAgKFFE
ZXNrdG9wV2ViVmlldzo6dG91Y2hFdmVudCk6CisgICAgICAgIChRRGVza3RvcFdlYlZpZXc6Omhv
dmVyRW50ZXJFdmVudCk6CisgICAgICAgIChRRGVza3RvcFdlYlZpZXc6OmhvdmVyTW92ZUV2ZW50
KToKKyAgICAgICAgKFFEZXNrdG9wV2ViVmlldzo6aG92ZXJMZWF2ZUV2ZW50KToKKyAgICAgICAg
KFFEZXNrdG9wV2ViVmlldzo6ZHJhZ01vdmVFdmVudCk6CisgICAgICAgIChRRGVza3RvcFdlYlZp
ZXc6OmRyYWdFbnRlckV2ZW50KToKKyAgICAgICAgKFFEZXNrdG9wV2ViVmlldzo6ZHJhZ0V4aXRF
dmVudCk6CisgICAgICAgIChRRGVza3RvcFdlYlZpZXc6OmRyYWdEcm9wRXZlbnQpOgorICAgICAg
ICAoUURlc2t0b3BXZWJWaWV3OjpnZW9tZXRyeUNoYW5nZWQpOgorICAgICAgICAoUURlc2t0b3BX
ZWJWaWV3OjpwYWludCk6CisgICAgICAgIChRRGVza3RvcFdlYlZpZXc6OmV2ZW50KToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL3F0L3FkZXNrdG9wd2Vidmlldy5oOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvcXQvcXRvdWNod2VicGFnZS5jcHA6CisgICAgICAgIChRVG91Y2hXZWJQYWdlOjpR
VG91Y2hXZWJQYWdlKToKKyAgICAgICAgKFFUb3VjaFdlYlBhZ2U6OnBhaW50KToKKyAgICAgICAg
KFFUb3VjaFdlYlBhZ2U6OmV2ZW50KToKKyAgICAgICAgKFFUb3VjaFdlYlBhZ2U6OmtleVByZXNz
RXZlbnQpOgorICAgICAgICAoUVRvdWNoV2ViUGFnZTo6a2V5UmVsZWFzZUV2ZW50KToKKyAgICAg
ICAgKFFUb3VjaFdlYlBhZ2U6OmlucHV0TWV0aG9kRXZlbnQpOgorICAgICAgICAoUVRvdWNoV2Vi
UGFnZTo6Zm9jdXNJbkV2ZW50KToKKyAgICAgICAgKFFUb3VjaFdlYlBhZ2U6OmZvY3VzT3V0RXZl
bnQpOgorICAgICAgICAoUVRvdWNoV2ViUGFnZTo6dG91Y2hFdmVudCk6CisgICAgICAgIChRVG91
Y2hXZWJQYWdlOjpnZW9tZXRyeUNoYW5nZWQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvcXQv
cXRvdWNod2VicGFnZS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvcXQvcXRvdWNod2Vidmll
dy5jcHA6CisgICAgICAgIChRVG91Y2hXZWJWaWV3UHJpdmF0ZTo6c2Nyb2xsKToKKyAgICAgICAg
KFFUb3VjaFdlYlZpZXc6OlFUb3VjaFdlYlZpZXcpOgorICAgICAgICAoUVRvdWNoV2ViVmlldzo6
Z2VvbWV0cnlDaGFuZ2VkKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3F0L3F0b3VjaHdlYnZp
ZXcuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL3Rlc3RzLnByaToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL3Rlc3R3aW5kb3cuaDoKKyAgICAgICAgKFRlc3RX
aW5kb3c6OlRlc3RXaW5kb3cpOgorICAgICAgICAoVGVzdFdpbmRvdzo6cmVzaXplRXZlbnQpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9xdC9Ub3VjaFZpZXdJbnRlcmZhY2UuY3BwOgorICAgICAgICAo
V2ViS2l0OjpUb3VjaFZpZXdJbnRlcmZhY2U6OnBpbmNoR2VzdHVyZVJlcXVlc3RVcGRhdGUpOgor
ICAgICAgICAoV2ViS2l0OjpUb3VjaFZpZXdJbnRlcmZhY2U6OmRyYXdpbmdBcmVhU2l6ZSk6Cisg
ICAgICAgIChXZWJLaXQ6OlRvdWNoVmlld0ludGVyZmFjZTo6Y29udGVudFNpemVDaGFuZ2VkKToK
KyAgICAgICAgKFdlYktpdDo6VG91Y2hWaWV3SW50ZXJmYWNlOjppc0FjdGl2ZSk6CisgICAgICAg
ICogVUlQcm9jZXNzL3F0L1ZpZXdJbnRlcmZhY2UuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIFVJ
UHJvY2Vzcy9xdC9WaWV3SW50ZXJmYWNlLmg6CisgICAgICAgICogV2ViS2l0Mi5wcm86CisKIDIw
MTEtMDctMTMgIEFuZHJlYXMgS2xpbmcgIDxrbGluZ0B3ZWJraXQub3JnPgogCiAgICAgICAgIFtR
dF1bV0syXSBSZW1vdmUgaW52YWxpZCBzaWduYWwvc2xvdCBjb25uZWN0aW9uIGluIFFUb3VjaFdl
YlZpZXcuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FkZXNr
dG9wd2Vidmlldy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FkZXNrdG9w
d2Vidmlldy5jcHAKaW5kZXggZjZiNTBjODUwY2M0ZDFhZDk2MzlkYzU1MDEyMTg5MDViMjEzMTU4
My4uMmZkMTA3OGUwZDYzMmU3ZjVlMmYwY2QyY2I4OWQ1YWFkZTdhY2U2MiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xZGVza3RvcHdlYnZpZXcuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcWRlc2t0b3B3ZWJ2aWV3LmNwcApAQCAt
MjMsOSArMjMsMTkgQEAKICNpbmNsdWRlICJxZGVza3RvcHdlYnZpZXdfcC5oIgogI2luY2x1ZGUg
InF3a2NvbnRleHQuaCIKIAotI2luY2x1ZGUgPFFDdXJzb3I+CiAjaW5jbHVkZSA8UUdyYXBoaWNz
U2NlbmVSZXNpemVFdmVudD4KICNpbmNsdWRlIDxRU3R5bGVPcHRpb25HcmFwaGljc0l0ZW0+Cisj
aW5jbHVkZSA8UXREZWNsYXJhdGl2ZS9xc2dpdGVtLmg+CisjaW5jbHVkZSA8UXREZWNsYXJhdGl2
ZS9xc2djYW52YXMuaD4KKyNpbmNsdWRlIDxRdERlY2xhcmF0aXZlL3FzZ2V2ZW50Lmg+CisjaW5j
bHVkZSA8UXRHdWkvUUN1cnNvcj4KKyNpbmNsdWRlIDxRdEd1aS9RS2V5RXZlbnQ+CisjaW5jbHVk
ZSA8UXRHdWkvUUdyYXBoaWNzU2NlbmVFdmVudD4KKyNpbmNsdWRlIDxRdEd1aS9RSG92ZXJFdmVu
dD4KKyNpbmNsdWRlIDxRdEd1aS9RSW5wdXRNZXRob2RFdmVudD4KKyNpbmNsdWRlIDxRdEd1aS9R
Rm9jdXNFdmVudD4KKyNpbmNsdWRlIDxRdEd1aS9RVG91Y2hFdmVudD4KKyNpbmNsdWRlIDxRdEd1
aS9RV2hlZWxFdmVudD4KIAogUURlc2t0b3BXZWJWaWV3UHJpdmF0ZTo6UURlc2t0b3BXZWJWaWV3
UHJpdmF0ZShRRGVza3RvcFdlYlZpZXcqIHEsIFdLQ29udGV4dFJlZiBjb250ZXh0UmVmLCBXS1Bh
Z2VHcm91cFJlZiBwYWdlR3JvdXBSZWYpCiAgICAgOiBxKHEpCkBAIC00MSw3ICs1MSw3IEBAIHZv
aWQgUURlc2t0b3BXZWJWaWV3UHJpdmF0ZTo6c2V0Vmlld05lZWRzRGlzcGxheShjb25zdCBRUmVj
dCYgaW52YWxpZGF0ZWRBcmVhKQogCiBRU2l6ZSBRRGVza3RvcFdlYlZpZXdQcml2YXRlOjpkcmF3
aW5nQXJlYVNpemUoKQogewotICAgIHJldHVybiBxLT5zaXplKCkudG9TaXplKCk7CisgICAgcmV0
dXJuIFFTaXplKHEtPndpZHRoKCksIHEtPmhlaWdodCgpKTsKIH0KIAogdm9pZCBRRGVza3RvcFdl
YlZpZXdQcml2YXRlOjpjb250ZW50U2l6ZUNoYW5nZWQoY29uc3QgUVNpemUmKQpAQCAtNTAsNyAr
NjAsOCBAQCB2b2lkIFFEZXNrdG9wV2ViVmlld1ByaXZhdGU6OmNvbnRlbnRTaXplQ2hhbmdlZChj
b25zdCBRU2l6ZSYpCiAKIGJvb2wgUURlc2t0b3BXZWJWaWV3UHJpdmF0ZTo6aXNBY3RpdmUoKQog
ewotICAgIHJldHVybiBxLT5pc0FjdGl2ZSgpOworICAgIC8vIEZJWE1FOiBUaGUgc2NlbmUgZ3Jh
cGggZGlkIG5vdCBoYXZlIHRoZSBjb25jZXB0IG9mIGJlaW5nIGFjdGl2ZSBvciBub3Qgd2hlbiB0
aGlzIHdhcyB3cml0dGVuLgorICAgIHJldHVybiB0cnVlOwogfQogCiBib29sIFFEZXNrdG9wV2Vi
Vmlld1ByaXZhdGU6Omhhc0ZvY3VzKCkKQEAgLTY1LDcgKzc2LDcgQEAgYm9vbCBRRGVza3RvcFdl
YlZpZXdQcml2YXRlOjppc1Zpc2libGUoKQogCiB2b2lkIFFEZXNrdG9wV2ViVmlld1ByaXZhdGU6
OnN0YXJ0RHJhZyhRdDo6RHJvcEFjdGlvbnMgc3VwcG9ydGVkRHJvcEFjdGlvbnMsIGNvbnN0IFFJ
bWFnZSYgZHJhZ0ltYWdlLCBRTWltZURhdGEqIGRhdGEsIFFQb2ludCogY2xpZW50UG9zaXRpb24s
IFFQb2ludCogZ2xvYmFsUG9zaXRpb24sIFF0OjpEcm9wQWN0aW9uKiBkcm9wQWN0aW9uKQogewot
ICAgIFFXaWRnZXQqIHdpZGdldCA9IFZpZXdJbnRlcmZhY2U6Om93bmVyV2lkZ2V0KHEpOworICAg
IFFXaWRnZXQqIHdpZGdldCA9IHEtPmNhbnZhcygpOwogICAgIGlmICghd2lkZ2V0KQogICAgICAg
ICByZXR1cm47CiAKQEAgLTg5LDcgKzEwMCw4IEBAIHZvaWQgUURlc2t0b3BXZWJWaWV3UHJpdmF0
ZTo6ZGlkQ2hhbmdlVGl0bGUoY29uc3QgUVN0cmluZyYgbmV3VGl0bGUpCiAKIHZvaWQgUURlc2t0
b3BXZWJWaWV3UHJpdmF0ZTo6ZGlkQ2hhbmdlVG9vbFRpcChjb25zdCBRU3RyaW5nJiBuZXdUb29s
VGlwKQogewotICAgIHEtPnNldFRvb2xUaXAobmV3VG9vbFRpcCk7CisgICAgLy8gRklYTUU6IEFk
ZCBhIHByb3BlciBpbXBsZW1lbnRhdGlvbiB3aGVuIFF0IDUgc3VwcG9ydHMgdG9vbHRpcC4KKyAg
ICBxLT5jYW52YXMoKS0+c2V0VG9vbFRpcChuZXdUb29sVGlwKTsKIH0KIAogdm9pZCBRRGVza3Rv
cFdlYlZpZXdQcml2YXRlOjpkaWRDaGFuZ2VTdGF0dXNUZXh0KGNvbnN0IFFTdHJpbmcmIG5ld01l
c3NhZ2UpCkBAIC05OSw3ICsxMTEsOCBAQCB2b2lkIFFEZXNrdG9wV2ViVmlld1ByaXZhdGU6OmRp
ZENoYW5nZVN0YXR1c1RleHQoY29uc3QgUVN0cmluZyYgbmV3TWVzc2FnZSkKIAogdm9pZCBRRGVz
a3RvcFdlYlZpZXdQcml2YXRlOjpkaWRDaGFuZ2VDdXJzb3IoY29uc3QgUUN1cnNvciYgbmV3Q3Vy
c29yKQogewotICAgIHEtPnNldEN1cnNvcihuZXdDdXJzb3IpOworICAgIC8vIEZJWE1FOiBhZGQg
cHJvcGVyIGN1cnNvciBoYW5kbGluZyB3aGVuIFF0IDUgc3VwcG9ydHMgaXQuCisgICAgcS0+Y2Fu
dmFzKCktPnNldEN1cnNvcihuZXdDdXJzb3IpOwogfQogCiB2b2lkIFFEZXNrdG9wV2ViVmlld1By
aXZhdGU6OmxvYWREaWRCZWdpbigpCkBAIC0xMzEsNyArMTQ0LDcgQEAgdm9pZCBRRGVza3RvcFdl
YlZpZXdQcml2YXRlOjpzaG93Q29udGV4dE1lbnUoUVNoYXJlZFBvaW50ZXI8UU1lbnU+IG1lbnUp
CiAgICAgaWYgKG1lbnUtPmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgUVdpZGdl
dCogd2lkZ2V0ID0gVmlld0ludGVyZmFjZTo6b3duZXJXaWRnZXQocSk7CisgICAgUVdpZGdldCog
d2lkZ2V0ID0gcS0+Y2FudmFzKCk7CiAgICAgaWYgKCF3aWRnZXQpCiAgICAgICAgIHJldHVybjsK
IApAQCAtMTUwLDIzICsxNjMsMjQgQEAgdm9pZCBRRGVza3RvcFdlYlZpZXdQcml2YXRlOjpoaWRl
Q29udGV4dE1lbnUoKQogICAgICAgICBhY3RpdmVNZW51LT5oaWRlKCk7CiB9CiAKLVFEZXNrdG9w
V2ViVmlldzo6UURlc2t0b3BXZWJWaWV3KCkKLSAgICA6IGQobmV3IFFEZXNrdG9wV2ViVmlld1By
aXZhdGUodGhpcykpCitRRGVza3RvcFdlYlZpZXc6OlFEZXNrdG9wV2ViVmlldyhRU0dJdGVtKiBw
YXJlbnQpCisgICAgOiBRU0dQYWludGVkSXRlbShwYXJlbnQpCisgICAgLCBkKG5ldyBRRGVza3Rv
cFdlYlZpZXdQcml2YXRlKHRoaXMpKQogewogICAgIGluaXQoKTsKIH0KIAotUURlc2t0b3BXZWJW
aWV3OjpRRGVza3RvcFdlYlZpZXcoV0tDb250ZXh0UmVmIGNvbnRleHRSZWYsIFdLUGFnZUdyb3Vw
UmVmIHBhZ2VHcm91cFJlZikKLSAgICA6IGQobmV3IFFEZXNrdG9wV2ViVmlld1ByaXZhdGUodGhp
cywgY29udGV4dFJlZiwgcGFnZUdyb3VwUmVmKSkKK1FEZXNrdG9wV2ViVmlldzo6UURlc2t0b3BX
ZWJWaWV3KFdLQ29udGV4dFJlZiBjb250ZXh0UmVmLCBXS1BhZ2VHcm91cFJlZiBwYWdlR3JvdXBS
ZWYsIFFTR0l0ZW0qIHBhcmVudCkKKyAgICA6IFFTR1BhaW50ZWRJdGVtKHBhcmVudCkKKyAgICAs
IGQobmV3IFFEZXNrdG9wV2ViVmlld1ByaXZhdGUodGhpcywgY29udGV4dFJlZiwgcGFnZUdyb3Vw
UmVmKSkKIHsKICAgICBpbml0KCk7CiB9CiAKIHZvaWQgUURlc2t0b3BXZWJWaWV3Ojppbml0KCkK
IHsKLSAgICBzZXRGb2N1c1BvbGljeShRdDo6U3Ryb25nRm9jdXMpOworICAgIHNldEFjY2VwdGVk
TW91c2VCdXR0b25zKFF0OjpNb3VzZUJ1dHRvbk1hc2spOwogICAgIHNldEFjY2VwdEhvdmVyRXZl
bnRzKHRydWUpOwotICAgIHNldEFjY2VwdERyb3BzKHRydWUpOwogfQogCiBRRGVza3RvcFdlYlZp
ZXc6On5RRGVza3RvcFdlYlZpZXcoKQpAQCAtMTk0LDMzICsyMDgsMTM2IEBAIFFBY3Rpb24qIFFE
ZXNrdG9wV2ViVmlldzo6bmF2aWdhdGlvbkFjdGlvbihRdFdlYktpdDo6TmF2aWdhdGlvbkFjdGlv
biB3aGljaCkgY29uCiAgICAgcmV0dXJuIGQtPnBhZ2UubmF2aWdhdGlvbkFjdGlvbih3aGljaCk7
CiB9CiAKLXZvaWQgUURlc2t0b3BXZWJWaWV3OjpyZXNpemVFdmVudChRR3JhcGhpY3NTY2VuZVJl
c2l6ZUV2ZW50KiBldikKK3N0YXRpYyB2b2lkIHBhaW50Q3Jhc2hlZFBhZ2UoUVBhaW50ZXIqIHBh
aW50ZXIsIGNvbnN0IFFSZWN0RiYgcmVjdCkKIHsKLSAgICBkLT5wYWdlLnNldERyYXdpbmdBcmVh
U2l6ZShldi0+bmV3U2l6ZSgpLnRvU2l6ZSgpKTsKLSAgICBRR3JhcGhpY3NXaWRnZXQ6OnJlc2l6
ZUV2ZW50KGV2KTsKKyAgICBwYWludGVyLT5maWxsUmVjdChyZWN0LCBRdDo6Z3JheSk7CisgICAg
cGFpbnRlci0+ZHJhd1RleHQocmVjdCwgUXQ6OkFsaWduQ2VudGVyLCBRTGF0aW4xU3RyaW5nKCI6
KCIpKTsKIH0KIAotc3RhdGljIHZvaWQgcGFpbnRDcmFzaGVkUGFnZShRUGFpbnRlciogcGFpbnRl
ciwgY29uc3QgUVN0eWxlT3B0aW9uR3JhcGhpY3NJdGVtKiBvcHRpb24pCit2b2lkIFFEZXNrdG9w
V2ViVmlldzo6a2V5UHJlc3NFdmVudChRS2V5RXZlbnQqIGV2ZW50KQogewotICAgIHBhaW50ZXIt
PmZpbGxSZWN0KG9wdGlvbi0+cmVjdCwgUXQ6OmdyYXkpOwotICAgIHBhaW50ZXItPmRyYXdUZXh0
KG9wdGlvbi0+cmVjdCwgUXQ6OkFsaWduQ2VudGVyLCBRTGF0aW4xU3RyaW5nKCI6KCIpKTsKKyAg
ICB0aGlzLT5ldmVudChldmVudCk7CiB9CiAKLXZvaWQgUURlc2t0b3BXZWJWaWV3OjpwYWludChR
UGFpbnRlciogcGFpbnRlciwgY29uc3QgUVN0eWxlT3B0aW9uR3JhcGhpY3NJdGVtKiBvcHRpb24s
IFFXaWRnZXQqKQordm9pZCBRRGVza3RvcFdlYlZpZXc6OmtleVJlbGVhc2VFdmVudChRS2V5RXZl
bnQqIGV2ZW50KQogeworICAgIHRoaXMtPmV2ZW50KGV2ZW50KTsKK30KKwordm9pZCBRRGVza3Rv
cFdlYlZpZXc6OmlucHV0TWV0aG9kRXZlbnQoUUlucHV0TWV0aG9kRXZlbnQqIGV2ZW50KQorewor
ICAgIHRoaXMtPmV2ZW50KGV2ZW50KTsKK30KKwordm9pZCBRRGVza3RvcFdlYlZpZXc6OmZvY3Vz
SW5FdmVudChRRm9jdXNFdmVudCogZXZlbnQpCit7CisgICAgdGhpcy0+ZXZlbnQoZXZlbnQpOwor
fQorCit2b2lkIFFEZXNrdG9wV2ViVmlldzo6Zm9jdXNPdXRFdmVudChRRm9jdXNFdmVudCogZXZl
bnQpCit7CisgICAgdGhpcy0+ZXZlbnQoZXZlbnQpOworfQorCit2b2lkIFFEZXNrdG9wV2ViVmll
dzo6bW91c2VQcmVzc0V2ZW50KFFHcmFwaGljc1NjZW5lTW91c2VFdmVudCogZXZlbnQpCit7Cisg
ICAgdGhpcy0+ZXZlbnQoZXZlbnQpOworfQorCit2b2lkIFFEZXNrdG9wV2ViVmlldzo6bW91c2VN
b3ZlRXZlbnQoUUdyYXBoaWNzU2NlbmVNb3VzZUV2ZW50KiBldmVudCkKK3sKKyAgICB0aGlzLT5l
dmVudChldmVudCk7Cit9CisKK3ZvaWQgUURlc2t0b3BXZWJWaWV3Ojptb3VzZVJlbGVhc2VFdmVu
dChRR3JhcGhpY3NTY2VuZU1vdXNlRXZlbnQqIGV2ZW50KQoreworICAgIHRoaXMtPmV2ZW50KGV2
ZW50KTsKK30KKwordm9pZCBRRGVza3RvcFdlYlZpZXc6Om1vdXNlRG91YmxlQ2xpY2tFdmVudChR
R3JhcGhpY3NTY2VuZU1vdXNlRXZlbnQqIGV2ZW50KQoreworICAgIHRoaXMtPmV2ZW50KGV2ZW50
KTsKK30KKwordm9pZCBRRGVza3RvcFdlYlZpZXc6OndoZWVsRXZlbnQoUVdoZWVsRXZlbnQqIGV2
ZW50KQoreworICAgIC8vIEZJWE1FOiBmb3Igc29tZSByZWFzb24sIHRoZSBzY2VuZSBncmFwaCBk
ZWxpdmVycyBRV2hlZWxFdmVudCBpbnN0ZWFkIG9mIFFHcmFwaGljc1NjZW5lV2hlZWxFdmVudC4K
KyAgICAvLyBXZSB0cmFuc2Zvcm0gdGhlbSBpbiBRR3JhcGhpY3NTY2VuZVdoZWVsRXZlbnQgZm9y
IGNvbnNpc3RlbmN5LiBPdGhlcndpc2UgdGhlIHBvc2l0aW9uIHdvdWxkIGJlIGNvbXBsZXRlIG1h
Z2ljLgorICAgIC8vIFdlIHNob3VkIG1vZGlmeSB0aGUgc2NlbmVncmFwaCB0byBnZXQgdGhlIGNv
cnJlY3QgdHlwZSBvZiBldmVudHMuCisgICAgUUdyYXBoaWNzU2NlbmVXaGVlbEV2ZW50IGdyYXBo
aWNzRXZlbnQoUUV2ZW50OjpHcmFwaGljc1NjZW5lV2hlZWwpOworICAgIGdyYXBoaWNzRXZlbnQu
c2V0UG9zKGV2ZW50LT5wb3MoKSk7CisgICAgZ3JhcGhpY3NFdmVudC5zZXRCdXR0b25zKGV2ZW50
LT5idXR0b25zKCkpOworICAgIGdyYXBoaWNzRXZlbnQuc2V0RGVsdGEoZXZlbnQtPmRlbHRhKCkp
OworICAgIGdyYXBoaWNzRXZlbnQuc2V0TW9kaWZpZXJzKGV2ZW50LT5tb2RpZmllcnMoKSk7Cisg
ICAgZ3JhcGhpY3NFdmVudC5zZXRPcmllbnRhdGlvbihldmVudC0+b3JpZW50YXRpb24oKSk7Cisg
ICAgZ3JhcGhpY3NFdmVudC5zZXRTY2VuZVBvcyhtYXBUb1NjZW5lKGV2ZW50LT5wb3MoKSkpOwor
ICAgIGdyYXBoaWNzRXZlbnQuc2V0U2NyZWVuUG9zKGV2ZW50LT5nbG9iYWxQb3MoKSk7CisgICAg
dGhpcy0+ZXZlbnQoJmdyYXBoaWNzRXZlbnQpOworfQorCit2b2lkIFFEZXNrdG9wV2ViVmlldzo6
dG91Y2hFdmVudChRVG91Y2hFdmVudCogZXZlbnQpCit7CisgICAgdGhpcy0+ZXZlbnQoZXZlbnQp
OworfQorCit2b2lkIFFEZXNrdG9wV2ViVmlldzo6aG92ZXJFbnRlckV2ZW50KFFIb3ZlckV2ZW50
KiBldmVudCkKK3sKKyAgICB0aGlzLT5ldmVudChldmVudCk7Cit9CisKK3ZvaWQgUURlc2t0b3BX
ZWJWaWV3Ojpob3Zlck1vdmVFdmVudChRSG92ZXJFdmVudCogZXZlbnQpCit7CisgICAgdGhpcy0+
ZXZlbnQoZXZlbnQpOworfQorCit2b2lkIFFEZXNrdG9wV2ViVmlldzo6aG92ZXJMZWF2ZUV2ZW50
KFFIb3ZlckV2ZW50KiBldmVudCkKK3sKKyAgICB0aGlzLT5ldmVudChldmVudCk7Cit9CisKK3Zv
aWQgUURlc2t0b3BXZWJWaWV3OjpkcmFnTW92ZUV2ZW50KFFTR0RyYWdFdmVudCogZXZlbnQpCit7
CisgICAgdGhpcy0+ZXZlbnQoZXZlbnQpOworfQorCit2b2lkIFFEZXNrdG9wV2ViVmlldzo6ZHJh
Z0VudGVyRXZlbnQoUVNHRHJhZ0V2ZW50KiBldmVudCkKK3sKKyAgICB0aGlzLT5ldmVudChldmVu
dCk7Cit9CisKK3ZvaWQgUURlc2t0b3BXZWJWaWV3OjpkcmFnRXhpdEV2ZW50KFFTR0RyYWdFdmVu
dCogZXZlbnQpCit7CisgICAgdGhpcy0+ZXZlbnQoZXZlbnQpOworfQorCit2b2lkIFFEZXNrdG9w
V2ViVmlldzo6ZHJhZ0Ryb3BFdmVudChRU0dEcmFnRXZlbnQqIGV2ZW50KQoreworICAgIHRoaXMt
PmV2ZW50KGV2ZW50KTsKK30KKwordm9pZCBRRGVza3RvcFdlYlZpZXc6Omdlb21ldHJ5Q2hhbmdl
ZChjb25zdCBRUmVjdEYmIG5ld0dlb21ldHJ5LCBjb25zdCBRUmVjdEYmIG9sZEdlb21ldHJ5KQor
eworICAgIFFTR1BhaW50ZWRJdGVtOjpnZW9tZXRyeUNoYW5nZWQobmV3R2VvbWV0cnksIG9sZEdl
b21ldHJ5KTsKKyAgICBpZiAobmV3R2VvbWV0cnkuc2l6ZSgpICE9IG9sZEdlb21ldHJ5LnNpemUo
KSkKKyAgICAgICAgZC0+cGFnZS5zZXREcmF3aW5nQXJlYVNpemUobmV3R2VvbWV0cnkuc2l6ZSgp
LnRvU2l6ZSgpKTsKK30KKwordm9pZCBRRGVza3RvcFdlYlZpZXc6OnBhaW50KFFQYWludGVyKiBw
YWludGVyKQoreworICAgIGNvbnN0IFFSZWN0RiByZWN0ID0gYm91bmRpbmdSZWN0KCk7CiAgICAg
aWYgKGQtPmlzQ3Jhc2hlZCkgewotICAgICAgICBwYWludENyYXNoZWRQYWdlKHBhaW50ZXIsIG9w
dGlvbik7CisgICAgICAgIHBhaW50Q3Jhc2hlZFBhZ2UocGFpbnRlciwgcmVjdCk7CiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKLSAgICBkLT5wYWdlLnBhaW50KHBhaW50ZXIsIG9wdGlvbi0+ZXhw
b3NlZFJlY3QudG9BbGlnbmVkUmVjdCgpKTsKKyAgICBkLT5wYWdlLnBhaW50KHBhaW50ZXIsIHJl
Y3QudG9BbGlnbmVkUmVjdCgpKTsKIH0KIAogYm9vbCBRRGVza3RvcFdlYlZpZXc6OmV2ZW50KFFF
dmVudCogZXYpCiB7CiAgICAgaWYgKGQtPnBhZ2UuaGFuZGxlRXZlbnQoZXYpKQogICAgICAgICBy
ZXR1cm4gdHJ1ZTsKLSAgICByZXR1cm4gUUdyYXBoaWNzV2lkZ2V0OjpldmVudChldik7CisgICAg
cmV0dXJuIFFTR0l0ZW06OmV2ZW50KGV2KTsKIH0KIAogV0tQYWdlUmVmIFFEZXNrdG9wV2ViVmll
dzo6cGFnZVJlZigpIGNvbnN0CkBAIC0yMzksMyArMzU2LDUgQEAgdm9pZCBRRGVza3RvcFdlYlZp
ZXdQcml2YXRlOjpkaWRSZWxhdW5jaFByb2Nlc3MoKQogICAgIGlzQ3Jhc2hlZCA9IGZhbHNlOwog
ICAgIHEtPnVwZGF0ZSgpOwogfQorCisjaW5jbHVkZSAibW9jX3FkZXNrdG9wd2Vidmlldy5jcHAi
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FkZXNrdG9wd2Vi
dmlldy5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xZGVza3RvcHdlYnZpZXcu
aAppbmRleCBhNmUyMGFhODZmM2QxOWRiZTM0ZmViN2I5MDNjYWNmYWRhYjllOTRiLi43MmY1NWNk
OWZhYTViM2ZmZjkzOGE4OTQzNDk4M2Y0MWZkMjU0YWI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FkZXNrdG9wd2Vidmlldy5oCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvcXQvcWRlc2t0b3B3ZWJ2aWV3LmgKQEAgLTI1LDIzICsyNSwzNyBA
QAogI2luY2x1ZGUgInF3ZWJraXR0eXBlcy5oIgogI2luY2x1ZGUgPFdlYktpdDIvV0tCYXNlLmg+
CiAKLSNpbmNsdWRlIDxRR3JhcGhpY3NXaWRnZXQ+CisjaW5jbHVkZSA8UXREZWNsYXJhdGl2ZS9x
c2dwYWludGVkaXRlbS5oPgogI2luY2x1ZGUgPFFVcmw+CiAKKyNpbmNsdWRlIDxzdGRpby5oPgor
CiBjbGFzcyBRRGVza3RvcFdlYlZpZXdQcml2YXRlOwogY2xhc3MgUVdlYkVycm9yOworUVRfQkVH
SU5fTkFNRVNQQUNFCitjbGFzcyBRRm9jdXNFdmVudDsKK2NsYXNzIFFHcmFwaGljc1NjZW5lTW91
c2VFdmVudDsKK2NsYXNzIFFIb3ZlckV2ZW50OworY2xhc3MgUUlucHV0TWV0aG9kRXZlbnQ7Citj
bGFzcyBRS2V5RXZlbnQ7CitjbGFzcyBRUGFpbnRlcjsKK2NsYXNzIFFSZWN0RjsKK2NsYXNzIFFT
R0RyYWdFdmVudDsKK2NsYXNzIFFUb3VjaEV2ZW50OworY2xhc3MgUVdoZWVsRXZlbnQ7CitRVF9F
TkRfTkFNRVNQQUNFCiAKIG5hbWVzcGFjZSBXVFIgewogICAgIGNsYXNzIFdlYlZpZXc7CiB9CiAK
LWNsYXNzIFFXRUJLSVRfRVhQT1JUIFFEZXNrdG9wV2ViVmlldyA6IHB1YmxpYyBRR3JhcGhpY3NX
aWRnZXQgeworY2xhc3MgUVdFQktJVF9FWFBPUlQgUURlc2t0b3BXZWJWaWV3IDogcHVibGljIFFT
R1BhaW50ZWRJdGVtIHsKICAgICBRX09CSkVDVAogICAgIFFfUFJPUEVSVFkoUVN0cmluZyB0aXRs
ZSBSRUFEIHRpdGxlIE5PVElGWSB0aXRsZUNoYW5nZWQpCiAgICAgUV9QUk9QRVJUWShRVXJsIHVy
bCBSRUFEIHVybCBOT1RJRlkgdXJsQ2hhbmdlZCkKIAogcHVibGljOgotICAgIFFEZXNrdG9wV2Vi
VmlldygpOworICAgIFFEZXNrdG9wV2ViVmlldyhRU0dJdGVtKiBwYXJlbnQgPSAwKTsKICAgICB2
aXJ0dWFsIH5RRGVza3RvcFdlYlZpZXcoKTsKIAogICAgIFFVcmwgdXJsKCkgY29uc3Q7CkBAIC02
MiwxMyArNzYsMzEgQEAgUV9TSUdOQUxTOgogICAgIHZvaWQgdXJsQ2hhbmdlZChjb25zdCBRVXJs
Jik7CiAKIHByb3RlY3RlZDoKLSAgICB2b2lkIHJlc2l6ZUV2ZW50KFFHcmFwaGljc1NjZW5lUmVz
aXplRXZlbnQqKTsKLSAgICB2b2lkIHBhaW50KFFQYWludGVyKiwgY29uc3QgUVN0eWxlT3B0aW9u
R3JhcGhpY3NJdGVtKiwgUVdpZGdldCopOwotCisgICAgdmlydHVhbCB2b2lkIGtleVByZXNzRXZl
bnQoUUtleUV2ZW50Kik7CisgICAgdmlydHVhbCB2b2lkIGtleVJlbGVhc2VFdmVudChRS2V5RXZl
bnQqKTsKKyAgICB2aXJ0dWFsIHZvaWQgaW5wdXRNZXRob2RFdmVudChRSW5wdXRNZXRob2RFdmVu
dCopOworICAgIHZpcnR1YWwgdm9pZCBmb2N1c0luRXZlbnQoUUZvY3VzRXZlbnQqKTsKKyAgICB2
aXJ0dWFsIHZvaWQgZm9jdXNPdXRFdmVudChRRm9jdXNFdmVudCopOworICAgIHZpcnR1YWwgdm9p
ZCBtb3VzZVByZXNzRXZlbnQoUUdyYXBoaWNzU2NlbmVNb3VzZUV2ZW50Kik7CisgICAgdmlydHVh
bCB2b2lkIG1vdXNlTW92ZUV2ZW50KFFHcmFwaGljc1NjZW5lTW91c2VFdmVudCopOworICAgIHZp
cnR1YWwgdm9pZCBtb3VzZVJlbGVhc2VFdmVudChRR3JhcGhpY3NTY2VuZU1vdXNlRXZlbnQqKTsK
KyAgICB2aXJ0dWFsIHZvaWQgbW91c2VEb3VibGVDbGlja0V2ZW50KFFHcmFwaGljc1NjZW5lTW91
c2VFdmVudCopOworICAgIHZpcnR1YWwgdm9pZCB3aGVlbEV2ZW50KFFXaGVlbEV2ZW50Kik7Cisg
ICAgdmlydHVhbCB2b2lkIHRvdWNoRXZlbnQoUVRvdWNoRXZlbnQqKTsKKyAgICB2aXJ0dWFsIHZv
aWQgaG92ZXJFbnRlckV2ZW50KFFIb3ZlckV2ZW50Kik7CisgICAgdmlydHVhbCB2b2lkIGhvdmVy
TW92ZUV2ZW50KFFIb3ZlckV2ZW50Kik7CisgICAgdmlydHVhbCB2b2lkIGhvdmVyTGVhdmVFdmVu
dChRSG92ZXJFdmVudCopOworICAgIHZpcnR1YWwgdm9pZCBkcmFnTW92ZUV2ZW50KFFTR0RyYWdF
dmVudCopOworICAgIHZpcnR1YWwgdm9pZCBkcmFnRW50ZXJFdmVudChRU0dEcmFnRXZlbnQqKTsK
KyAgICB2aXJ0dWFsIHZvaWQgZHJhZ0V4aXRFdmVudChRU0dEcmFnRXZlbnQqKTsKKyAgICB2aXJ0
dWFsIHZvaWQgZHJhZ0Ryb3BFdmVudChRU0dEcmFnRXZlbnQqKTsKKworICAgIHZpcnR1YWwgdm9p
ZCBnZW9tZXRyeUNoYW5nZWQoY29uc3QgUVJlY3RGJiwgY29uc3QgUVJlY3RGJik7CisgICAgdm9p
ZCBwYWludChRUGFpbnRlciopOwogICAgIHZpcnR1YWwgYm9vbCBldmVudChRRXZlbnQqKTsKIAog
cHJpdmF0ZToKLSAgICBRRGVza3RvcFdlYlZpZXcoV0tDb250ZXh0UmVmLCBXS1BhZ2VHcm91cFJl
Zik7CisgICAgUURlc2t0b3BXZWJWaWV3KFdLQ29udGV4dFJlZiwgV0tQYWdlR3JvdXBSZWYsIFFT
R0l0ZW0qIHBhcmVudCA9IDApOwogICAgIFdLUGFnZVJlZiBwYWdlUmVmKCkgY29uc3Q7CiAKICAg
ICB2b2lkIGluaXQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
cXQvcXRvdWNod2VicGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F0
b3VjaHdlYnBhZ2UuY3BwCmluZGV4IDBiZGM0Y2YyZmNhNGJlNTg4MzBlYmUyMDU0YjU4ZjlmNWFk
N2E4M2QuLjRkNjJlODliYWUxZWQxZjY1Yjc4YzY3M2U5ZTIxYjljZWRkNWQ0MzMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXRvdWNod2VicGFnZS5jcHAKKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xdG91Y2h3ZWJwYWdlLmNwcApAQCAt
MjUsMjAgKzI1LDE0IEBACiAKICNpbmNsdWRlIDxRQXBwbGljYXRpb24+CiAjaW5jbHVkZSA8UUdy
YXBoaWNzU2NlbmVNb3VzZUV2ZW50PgotI2luY2x1ZGUgPFFHcmFwaGljc1ZpZXc+CiAjaW5jbHVk
ZSA8UVBhaW50ZXI+Ci0jaW5jbHVkZSA8UVNjcm9sbEJhcj4KLSNpbmNsdWRlIDxRU3R5bGVPcHRp
b25HcmFwaGljc0l0ZW0+CiAjaW5jbHVkZSA8UVVybD4KICNpbmNsdWRlIDxRdERlYnVnPgogCi1R
VG91Y2hXZWJQYWdlOjpRVG91Y2hXZWJQYWdlKFFHcmFwaGljc0l0ZW0qIHBhcmVudCkKLSAgICA6
IFFHcmFwaGljc1dpZGdldChwYXJlbnQpCitRVG91Y2hXZWJQYWdlOjpRVG91Y2hXZWJQYWdlKFFT
R0l0ZW0qIHBhcmVudCkKKyAgICA6IFFTR1BhaW50ZWRJdGVtKHBhcmVudCkKICAgICAsIGQobmV3
IFFUb3VjaFdlYlBhZ2VQcml2YXRlKHRoaXMpKQogewotICAgIHNldEZvY3VzUG9saWN5KFF0OjpU
YWJGb2N1cyk7Ci0gICAgc2V0QWNjZXB0VG91Y2hFdmVudHModHJ1ZSk7Ci0KICAgICBjb25uZWN0
KHRoaXMsIFNJR05BTChzY2FsZUNoYW5nZWQoKSksIHRoaXMsIFNMT1Qob25TY2FsZUNoYW5nZWQo
KSkpOwogfQogCkBAIC00Nyw5ICs0MSw5IEBAIFFUb3VjaFdlYlBhZ2U6On5RVG91Y2hXZWJQYWdl
KCkKICAgICBkZWxldGUgZDsKIH0KIAotdm9pZCBRVG91Y2hXZWJQYWdlOjpwYWludChRUGFpbnRl
ciogcGFpbnRlciwgY29uc3QgUVN0eWxlT3B0aW9uR3JhcGhpY3NJdGVtKiBvcHRpb24sIFFXaWRn
ZXQqKQordm9pZCBRVG91Y2hXZWJQYWdlOjpwYWludChRUGFpbnRlciogcGFpbnRlcikKIHsKLSAg
ICBkLT5wYWdlLT5wYWludChwYWludGVyLCBvcHRpb24tPmV4cG9zZWRSZWN0LnRvQWxpZ25lZFJl
Y3QoKSk7CisgICAgZC0+cGFnZS0+cGFpbnQocGFpbnRlciwgYm91bmRpbmdSZWN0KCkudG9BbGln
bmVkUmVjdCgpKTsKIH0KIAogdm9pZCBRVG91Y2hXZWJQYWdlOjpsb2FkKGNvbnN0IFFVcmwmIHVy
bCkKQEAgLTg0LDcgKzc4LDM3IEBAIGJvb2wgUVRvdWNoV2ViUGFnZTo6ZXZlbnQoUUV2ZW50KiBl
dikKIAogICAgIGlmIChkLT5wYWdlLT5oYW5kbGVFdmVudChldikpCiAgICAgICAgIHJldHVybiB0
cnVlOwotICAgIHJldHVybiBRR3JhcGhpY3NXaWRnZXQ6OmV2ZW50KGV2KTsKKyAgICByZXR1cm4g
UVNHUGFpbnRlZEl0ZW06OmV2ZW50KGV2KTsKK30KKwordm9pZCBRVG91Y2hXZWJQYWdlOjprZXlQ
cmVzc0V2ZW50KFFLZXlFdmVudCogZXZlbnQpCit7CisgICAgdGhpcy0+ZXZlbnQoZXZlbnQpOwor
fQorCit2b2lkIFFUb3VjaFdlYlBhZ2U6OmtleVJlbGVhc2VFdmVudChRS2V5RXZlbnQqIGV2ZW50
KQoreworICAgIHRoaXMtPmV2ZW50KGV2ZW50KTsKK30KKwordm9pZCBRVG91Y2hXZWJQYWdlOjpp
bnB1dE1ldGhvZEV2ZW50KFFJbnB1dE1ldGhvZEV2ZW50KiBldmVudCkKK3sKKyAgICB0aGlzLT5l
dmVudChldmVudCk7Cit9CisKK3ZvaWQgUVRvdWNoV2ViUGFnZTo6Zm9jdXNJbkV2ZW50KFFGb2N1
c0V2ZW50KiBldmVudCkKK3sKKyAgICB0aGlzLT5ldmVudChldmVudCk7Cit9CisKK3ZvaWQgUVRv
dWNoV2ViUGFnZTo6Zm9jdXNPdXRFdmVudChRRm9jdXNFdmVudCogZXZlbnQpCit7CisgICAgdGhp
cy0+ZXZlbnQoZXZlbnQpOworfQorCit2b2lkIFFUb3VjaFdlYlBhZ2U6OnRvdWNoRXZlbnQoUVRv
dWNoRXZlbnQqIGV2ZW50KQoreworICAgIHRoaXMtPmV2ZW50KGV2ZW50KTsKIH0KIAogdm9pZCBR
VG91Y2hXZWJQYWdlOjp0aW1lckV2ZW50KFFUaW1lckV2ZW50KiBldikKQEAgLTkzLDEwICsxMTcs
MTEgQEAgdm9pZCBRVG91Y2hXZWJQYWdlOjp0aW1lckV2ZW50KFFUaW1lckV2ZW50KiBldikKICAg
ICAgICAgZC0+Y29tbWl0U2NhbGVDaGFuZ2UoKTsKIH0KIAotdm9pZCBRVG91Y2hXZWJQYWdlOjpy
ZXNpemVFdmVudChRR3JhcGhpY3NTY2VuZVJlc2l6ZUV2ZW50KiBldikKK3ZvaWQgUVRvdWNoV2Vi
UGFnZTo6Z2VvbWV0cnlDaGFuZ2VkKGNvbnN0IFFSZWN0RiYgbmV3R2VvbWV0cnksIGNvbnN0IFFS
ZWN0RiYgb2xkR2VvbWV0cnkpCiB7Ci0gICAgZC0+cGFnZS0+c2V0RHJhd2luZ0FyZWFTaXplKGV2
LT5uZXdTaXplKCkudG9TaXplKCkpOwotICAgIFFHcmFwaGljc1dpZGdldDo6cmVzaXplRXZlbnQo
ZXYpOworICAgIFFTR1BhaW50ZWRJdGVtOjpnZW9tZXRyeUNoYW5nZWQobmV3R2VvbWV0cnksIG9s
ZEdlb21ldHJ5KTsKKyAgICBpZiAobmV3R2VvbWV0cnkuc2l6ZSgpICE9IG9sZEdlb21ldHJ5LnNp
emUoKSkKKyAgICAgICAgZC0+cGFnZS0+c2V0RHJhd2luZ0FyZWFTaXplKG5ld0dlb21ldHJ5LnNp
emUoKS50b1NpemUoKSk7CiB9CiAKIFFBY3Rpb24qIFFUb3VjaFdlYlBhZ2U6Om5hdmlnYXRpb25B
Y3Rpb24oUXRXZWJLaXQ6Ok5hdmlnYXRpb25BY3Rpb24gd2hpY2gpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F0b3VjaHdlYnBhZ2UuaCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXRvdWNod2VicGFnZS5oCmluZGV4IDg5ZjQzZjNkNzc0ZWY2
YTFlNTAwNjg4MDg2N2MwN2ZkYzMyODA5OTUuLjkzZDcyOWZjNDk1OTdmMmE4NjkzZTRhNTE3YmFm
NmRiZGUyYjg5ZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQv
cXRvdWNod2VicGFnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXRv
dWNod2VicGFnZS5oCkBAIC0yNCw3ICsyNCw3IEBACiAjaW5jbHVkZSAicXdlYmtpdGdsb2JhbC5o
IgogI2luY2x1ZGUgInF3ZWJraXR0eXBlcy5oIgogCi0jaW5jbHVkZSA8UUdyYXBoaWNzV2lkZ2V0
PgorI2luY2x1ZGUgPFF0RGVjbGFyYXRpdmUvcXNncGFpbnRlZGl0ZW0uaD4KICNpbmNsdWRlIDxR
U2hhcmVkUG9pbnRlcj4KIAogY2xhc3MgUVRvdWNoV2ViUGFnZVByaXZhdGU7CkBAIC0zNSwxMyAr
MzUsMTMgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAgICAgY2xhc3MgVG91Y2hWaWV3SW50ZXJmYWNl
OwogfQogCi1jbGFzcyBRV0VCS0lUX0VYUE9SVCBRVG91Y2hXZWJQYWdlIDogcHVibGljIFFHcmFw
aGljc1dpZGdldCB7CitjbGFzcyBRV0VCS0lUX0VYUE9SVCBRVG91Y2hXZWJQYWdlIDogcHVibGlj
IFFTR1BhaW50ZWRJdGVtIHsKICAgICBRX09CSkVDVAogICAgIFFfUFJPUEVSVFkoUVN0cmluZyB0
aXRsZSBSRUFEIHRpdGxlIE5PVElGWSB0aXRsZUNoYW5nZWQpCiAgICAgUV9QUk9QRVJUWShRVXJs
IHVybCBSRUFEIHVybCBOT1RJRlkgdXJsQ2hhbmdlZCkKIAogcHVibGljOgotICAgIFFUb3VjaFdl
YlBhZ2UoUUdyYXBoaWNzSXRlbSogcGFyZW50ID0gMCk7CisgICAgUVRvdWNoV2ViUGFnZShRU0dJ
dGVtKiBwYXJlbnQgPSAwKTsKIAogICAgIHZpcnR1YWwgflFUb3VjaFdlYlBhZ2UoKTsKIApAQCAt
NTIsNyArNTIsNyBAQCBwdWJsaWM6CiAKICAgICBRQWN0aW9uKiBuYXZpZ2F0aW9uQWN0aW9uKFF0
V2ViS2l0OjpOYXZpZ2F0aW9uQWN0aW9uIHdoaWNoKTsKIAotICAgIHZpcnR1YWwgdm9pZCBwYWlu
dChRUGFpbnRlciosIGNvbnN0IFFTdHlsZU9wdGlvbkdyYXBoaWNzSXRlbSosIFFXaWRnZXQqKTsK
KyAgICB2aXJ0dWFsIHZvaWQgcGFpbnQoUVBhaW50ZXIqKTsKICAgICB2aXJ0dWFsIGJvb2wgZXZl
bnQoUUV2ZW50Kik7CiAKIFFfU0lHTkFMUzoKQEAgLTY0LDggKzY0LDE1IEBAIFFfU0lHTkFMUzoK
ICAgICB2b2lkIGxvYWRQcm9ncmVzcyhpbnQgcHJvZ3Jlc3MpOwogCiBwcm90ZWN0ZWQ6CisgICAg
dmlydHVhbCB2b2lkIGtleVByZXNzRXZlbnQoUUtleUV2ZW50Kik7CisgICAgdmlydHVhbCB2b2lk
IGtleVJlbGVhc2VFdmVudChRS2V5RXZlbnQqKTsKKyAgICB2aXJ0dWFsIHZvaWQgaW5wdXRNZXRo
b2RFdmVudChRSW5wdXRNZXRob2RFdmVudCopOworICAgIHZpcnR1YWwgdm9pZCBmb2N1c0luRXZl
bnQoUUZvY3VzRXZlbnQqKTsKKyAgICB2aXJ0dWFsIHZvaWQgZm9jdXNPdXRFdmVudChRRm9jdXNF
dmVudCopOworICAgIHZpcnR1YWwgdm9pZCB0b3VjaEV2ZW50KFFUb3VjaEV2ZW50Kik7CiAgICAg
dmlydHVhbCB2b2lkIHRpbWVyRXZlbnQoUVRpbWVyRXZlbnQqKTsKLSAgICB2aXJ0dWFsIHZvaWQg
cmVzaXplRXZlbnQoUUdyYXBoaWNzU2NlbmVSZXNpemVFdmVudCopOworCisgICAgdmlydHVhbCB2
b2lkIGdlb21ldHJ5Q2hhbmdlZChjb25zdCBRUmVjdEYmLCBjb25zdCBRUmVjdEYmKTsKIAogcHJp
dmF0ZToKICAgICBRX1BSSVZBVEVfU0xPVChkLCB2b2lkIG9uU2NhbGVDaGFuZ2VkKCkpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F0b3VjaHdlYnZpZXcuY3Bw
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xdG91Y2h3ZWJ2aWV3LmNwcAppbmRl
eCA3NTk2NWQ3NWM3YzY5ODVlYTJlYzZjM2ZmNmFjN2Q1NGQ5NGMzYTM4Li5jMWJlNWFiNWFiMWIx
ZjUyMDgyMDcyYjg3MzVkNjkzZDkzYjEzYmQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL3F0L3F0b3VjaHdlYnZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvcXQvcXRvdWNod2Vidmlldy5jcHAKQEAgLTM5LDcgKzM5LDggQEAgUVRvdWNo
V2ViVmlld1ByaXZhdGU6OlFUb3VjaFdlYlZpZXdQcml2YXRlKFFUb3VjaFdlYlZpZXcqIHEpCiAK
IHZvaWQgUVRvdWNoV2ViVmlld1ByaXZhdGU6OnNjcm9sbChxcmVhbCBkZWx0YVgsIHFyZWFsIGRl
bHRhWSkKIHsKLSAgICBwYWdlVmlldy0+bW92ZUJ5KGRlbHRhWCwgZGVsdGFZKTsKKyAgICBwYWdl
Vmlldy0+c2V0WChwYWdlVmlldy0+eCgpICsgZGVsdGFYKTsKKyAgICBwYWdlVmlldy0+c2V0WShw
YWdlVmlldy0+eSgpICsgZGVsdGFZKTsKICAgICB2aWV3cG9ydFJlY3RVcGRhdGVkKCk7CiB9CiAK
QEAgLTUwLDEwICs1MSwxMSBAQCB2b2lkIFFUb3VjaFdlYlZpZXdQcml2YXRlOjp2aWV3cG9ydFJl
Y3RVcGRhdGVkKCkKICAgICBwYWdlVmlld1ByaXZhdGUtPnNldFZpZXdwb3J0UmVjdCh2aWV3cG9y
dFJlY3RJblBhZ2VWaWV3Q29vcmRpbmF0ZSk7CiB9CiAKLVFUb3VjaFdlYlZpZXc6OlFUb3VjaFdl
YlZpZXcoKQotICAgIDogZChuZXcgUVRvdWNoV2ViVmlld1ByaXZhdGUodGhpcykpCitRVG91Y2hX
ZWJWaWV3OjpRVG91Y2hXZWJWaWV3KFFTR0l0ZW0qIHBhcmVudCkKKyAgICA6IFFTR0l0ZW0ocGFy
ZW50KQorICAgICwgZChuZXcgUVRvdWNoV2ViVmlld1ByaXZhdGUodGhpcykpCiB7Ci0gICAgc2V0
RmxhZ3MoUUdyYXBoaWNzSXRlbTo6SXRlbUNsaXBzQ2hpbGRyZW5Ub1NoYXBlKTsKKyAgICBzZXRG
bGFncyhRU0dJdGVtOjpJdGVtQ2xpcHNDaGlsZHJlblRvU2hhcGUpOwogfQogCiBRVG91Y2hXZWJW
aWV3Ojp+UVRvdWNoV2ViVmlldygpCkBAIC02Niw4ICs2OCwxMSBAQCBRVG91Y2hXZWJQYWdlKiBR
VG91Y2hXZWJWaWV3OjpwYWdlKCkKICAgICByZXR1cm4gZC0+cGFnZVZpZXcuZGF0YSgpOwogfQog
Ci12b2lkIFFUb3VjaFdlYlZpZXc6OnJlc2l6ZUV2ZW50KFFHcmFwaGljc1NjZW5lUmVzaXplRXZl
bnQqIGV2ZW50KQordm9pZCBRVG91Y2hXZWJWaWV3OjpnZW9tZXRyeUNoYW5nZWQoY29uc3QgUVJl
Y3RGJiBuZXdHZW9tZXRyeSwgY29uc3QgUVJlY3RGJiBvbGRHZW9tZXRyeSkKIHsKLSAgICBRR3Jh
cGhpY3NXaWRnZXQ6OnJlc2l6ZUV2ZW50KGV2ZW50KTsKLSAgICBkLT52aWV3cG9ydFJlY3RVcGRh
dGVkKCk7CisgICAgUVNHSXRlbTo6Z2VvbWV0cnlDaGFuZ2VkKG5ld0dlb21ldHJ5LCBvbGRHZW9t
ZXRyeSk7CisgICAgaWYgKG5ld0dlb21ldHJ5LnNpemUoKSAhPSBvbGRHZW9tZXRyeS5zaXplKCkp
CisgICAgICAgIGQtPnZpZXdwb3J0UmVjdFVwZGF0ZWQoKTsKIH0KKworI2luY2x1ZGUgIm1vY19x
dG91Y2h3ZWJ2aWV3LmNwcCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvcXQvcXRvdWNod2Vidmlldy5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9x
dG91Y2h3ZWJ2aWV3LmgKaW5kZXggMDM4NTgwZTlkNTM0MjNjNjljYWYwNTYxNTBlMGZlNzRmYTdi
YzJlZi4uNmVhY2JkNDIwN2Q0YjJlMGUwNjdkODQ0NjcxOTk5NTk5YzNhMDYxNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xdG91Y2h3ZWJ2aWV3LmgKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xdG91Y2h3ZWJ2aWV3LmgKQEAgLTIzLDcg
KzIzLDcgQEAKIAogI2luY2x1ZGUgInF3ZWJraXRnbG9iYWwuaCIKIAotI2luY2x1ZGUgPFFHcmFw
aGljc1dpZGdldD4KKyNpbmNsdWRlIDxRdERlY2xhcmF0aXZlL3FzZ2l0ZW0uaD4KIAogY2xhc3Mg
UVRvdWNoV2ViUGFnZTsKIGNsYXNzIFFUb3VjaFdlYlZpZXdQcml2YXRlOwpAQCAtMzIsMTkgKzMy
LDE5IEBAIG5hbWVzcGFjZSBXZWJLaXQgewogY2xhc3MgVG91Y2hWaWV3SW50ZXJmYWNlOwogfQog
Ci1jbGFzcyBRV0VCS0lUX0VYUE9SVCBRVG91Y2hXZWJWaWV3IDogcHVibGljIFFHcmFwaGljc1dp
ZGdldAorY2xhc3MgUVdFQktJVF9FWFBPUlQgUVRvdWNoV2ViVmlldyA6IHB1YmxpYyBRU0dJdGVt
CiB7CiAgICAgUV9PQkpFQ1QKICAgICBRX1BST1BFUlRZKFFUb3VjaFdlYlBhZ2UqIHBhZ2UgUkVB
RCBwYWdlKQogCiBwdWJsaWM6Ci0gICAgUVRvdWNoV2ViVmlldygpOworICAgIFFUb3VjaFdlYlZp
ZXcoUVNHSXRlbSogcGFyZW50ID0gMCk7CiAgICAgflFUb3VjaFdlYlZpZXcoKTsKIAogICAgIFFU
b3VjaFdlYlBhZ2UgKnBhZ2UoKTsKIAogcHJvdGVjdGVkOgotICAgIHZvaWQgcmVzaXplRXZlbnQo
UUdyYXBoaWNzU2NlbmVSZXNpemVFdmVudCopOworICAgIHZpcnR1YWwgdm9pZCBnZW9tZXRyeUNo
YW5nZWQoY29uc3QgUVJlY3RGJiwgY29uc3QgUVJlY3RGJik7CiAKIHByaXZhdGU6CiAgICAgZnJp
ZW5kIGNsYXNzIFdlYktpdDo6VG91Y2hWaWV3SW50ZXJmYWNlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC90ZXN0cy90ZXN0cy5wcmkgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL3Rlc3RzLnByaQppbmRleCAyOTMyZTFjNjNlZTU5MjVi
OGEwYzc4NDYyYzIyOWYzYjNlMWIxYzk3Li5jZjZhNWYxOThlNGU3MDliYTFhOGM1Yzg5NGJkOGQw
YzE3YzY1Yzk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Rl
c3RzL3Rlc3RzLnByaQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Rlc3Rz
L3Rlc3RzLnByaQpAQCAtMTAsNyArMTAsNyBAQCBTT1VSQ0VTICs9ICQke1RBUkdFVH0uY3BwCiBJ
TkNMVURFUEFUSCArPSAkJFBXRAogCiBpbmNsdWRlKC4uLy4uLy4uLy4uLy4uL1dlYktpdC5wcmkp
Ci1RVCArPSB0ZXN0bGliCitRVCArPSB0ZXN0bGliIGRlY2xhcmF0aXZlCiAKIFFNQUtFX1JQQVRI
RElSID0gJCRPVVRQVVRfRElSL2xpYiAkJFFNQUtFX1JQQVRIRElSCiBERUZJTkVTICs9IFRFU1RT
X1NPVVJDRV9ESVI9XFxcIiQkUFdEXFxcIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9xdC90ZXN0cy90ZXN0d2luZG93LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL3F0L3Rlc3RzL3Rlc3R3aW5kb3cuaAppbmRleCAyN2MxNWJkYTc0NTdlOWJhOGM4NDNk
ZGQyNTFmNWU0ZTkzYWQ2MDg5Li4xOGMxM2U1YmFkNjRiZDk2YTE2Mzk5YjE1OTA3YmJhNmJmMmFm
N2RkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL3Rl
c3R3aW5kb3cuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL3Rl
c3R3aW5kb3cuaApAQCAtMjAsMzkgKzIwLDM1IEBACiAjaWZuZGVmIHRlc3R3aW5kb3dfaAogI2Rl
ZmluZSB0ZXN0d2luZG93X2gKIAotI2luY2x1ZGUgPFFHcmFwaGljc1NjZW5lPgotI2luY2x1ZGUg
PFFHcmFwaGljc1ZpZXc+Ci0jaW5jbHVkZSA8UUdyYXBoaWNzV2lkZ2V0PgogI2luY2x1ZGUgPFFS
ZXNpemVFdmVudD4KICNpbmNsdWRlIDxRU2NvcGVkUG9pbnRlcj4KKyNpbmNsdWRlIDxRdERlY2xh
cmF0aXZlL3FzZ2NhbnZhcy5oPgorI2luY2x1ZGUgPFF0RGVjbGFyYXRpdmUvcXNnaXRlbS5oPgog
CiAvLyBUZXN0V2luZG93OiBVdGlsaXR5IGNsYXNzIHRvIGlnbm9yZSBRR3JhcGhpY3NWaWV3IGRl
dGFpbHMuCi1jbGFzcyBUZXN0V2luZG93IDogcHVibGljIFFHcmFwaGljc1ZpZXcgeworY2xhc3Mg
VGVzdFdpbmRvdyA6IHB1YmxpYyBRU0dDYW52YXMgewogcHVibGljOgotICAgIGlubGluZSBUZXN0
V2luZG93KFFHcmFwaGljc1dpZGdldCogd2ViVmlldyk7Ci0gICAgUVNjb3BlZFBvaW50ZXI8UUdy
YXBoaWNzV2lkZ2V0ID53ZWJWaWV3OworICAgIGlubGluZSBUZXN0V2luZG93KFFTR0l0ZW0qIHdl
YlZpZXcpOworICAgIFFTY29wZWRQb2ludGVyPFFTR0l0ZW0+IHdlYlZpZXc7CiAKIHByb3RlY3Rl
ZDoKICAgICBpbmxpbmUgdm9pZCByZXNpemVFdmVudChRUmVzaXplRXZlbnQqKTsKIH07CiAKLWlu
bGluZSBUZXN0V2luZG93OjpUZXN0V2luZG93KFFHcmFwaGljc1dpZGdldCogd2ViVmlldykKK2lu
bGluZSBUZXN0V2luZG93OjpUZXN0V2luZG93KFFTR0l0ZW0qIHdlYlZpZXcpCiAgICAgOiB3ZWJW
aWV3KHdlYlZpZXcpCiB7CiAgICAgUV9BU1NFUlQod2ViVmlldyk7Ci0gICAgc2V0RnJhbWVTdHls
ZShRRnJhbWU6Ok5vRnJhbWUgfCBRRnJhbWU6OlBsYWluKTsKLQotICAgIFFHcmFwaGljc1NjZW5l
KiBjb25zdCBzY2VuZSA9IG5ldyBRR3JhcGhpY3NTY2VuZSh0aGlzKTsKLSAgICBzZXRTY2VuZShz
Y2VuZSk7Ci0gICAgc2NlbmUtPmFkZEl0ZW0od2ViVmlldyk7CisgICAgd2ViVmlldy0+c2V0UGFy
ZW50SXRlbShyb290SXRlbSgpKTsKIH0KIAogaW5saW5lIHZvaWQgVGVzdFdpbmRvdzo6cmVzaXpl
RXZlbnQoUVJlc2l6ZUV2ZW50KiBldmVudCkKIHsKLSAgICBRR3JhcGhpY3NWaWV3OjpyZXNpemVF
dmVudChldmVudCk7Ci0gICAgUVJlY3RGIHJlY3QoUVBvaW50KDAsIDApLCBldmVudC0+c2l6ZSgp
KTsKLSAgICB3ZWJWaWV3LT5zZXRHZW9tZXRyeShyZWN0KTsKLSAgICBzY2VuZSgpLT5zZXRTY2Vu
ZVJlY3QocmVjdCk7CisgICAgUVNHQ2FudmFzOjpyZXNpemVFdmVudChldmVudCk7CisgICAgd2Vi
Vmlldy0+c2V0WCgwKTsKKyAgICB3ZWJWaWV3LT5zZXRZKDApOworICAgIHdlYlZpZXctPnNldFdp
ZHRoKGV2ZW50LT5zaXplKCkud2lkdGgoKSk7CisgICAgd2ViVmlldy0+c2V0SGVpZ2h0KGV2ZW50
LT5zaXplKCkuaGVpZ2h0KCkpOwogfQogCiAjZW5kaWYgLyogdGVzdHdpbmRvd19oICovCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvVG91Y2hWaWV3SW50ZXJmYWNlLmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9Ub3VjaFZpZXdJbnRlcmZhY2UuY3BwCmlu
ZGV4IDdlYzg0ZGUwOGExMWU4ZDBkMWRiMzkxYzJjMWJhNTdkMTM5YzllODEuLmExODFmZTk1NmZh
MTkzZTExZjM4NGM2YjQ4ZDk0NjI2ZjVjYTVlM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9xdC9Ub3VjaFZpZXdJbnRlcmZhY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9xdC9Ub3VjaFZpZXdJbnRlcmZhY2UuY3BwCkBAIC02NiwxMyArNjYsMTMgQEAg
dm9pZCBUb3VjaFZpZXdJbnRlcmZhY2U6OnBpbmNoR2VzdHVyZVN0YXJ0ZWQoKQogICAgIG1fcGlu
Y2hTdGFydFNjYWxlID0gbV9wYWdlVmlldy0+c2NhbGUoKTsKIH0KIAotdm9pZCBUb3VjaFZpZXdJ
bnRlcmZhY2U6OnBpbmNoR2VzdHVyZVJlcXVlc3RVcGRhdGUoY29uc3QgUVBvaW50RiYgcGluY2hD
ZW50ZXJJblBhZ2VWaWV3Q29vcmRpbmF0ZSwgcXJlYWwgdG90YWxTY2FsZUZhY3RvcikKK3ZvaWQg
VG91Y2hWaWV3SW50ZXJmYWNlOjpwaW5jaEdlc3R1cmVSZXF1ZXN0VXBkYXRlKGNvbnN0IFFQb2lu
dEYmLCBxcmVhbCB0b3RhbFNjYWxlRmFjdG9yKQogewotICAgIC8vIEZJWE1FOiBpdCBpcyBhIGJp
dCBtb3JlIGNvbXBsaWNhdGVkIHRoYW4gdGhhdCwgY2hhbmdlcyBvZiB0aGUgY2VudGVyIHBvc2l0
aW9uIHNob3VsZCBtb3ZlIHRoZSBwYWdlIGV2ZW4KLSAgICAvLyBpZiB0aGUgem9vbSBmYWN0b3Ig
ZG9lcyBub3QgY2hhbmdlLiBCb3RoIHRoZSB6b29tIGFuZCB0aGUgcGFubmluZyBzaG91bGQgYmUg
aGFuZGxlZCB0aHJvdWdoIHRoZSBwaHlzaWNzCi0gICAgLy8gZW5naW5lLgorICAgIC8vIEZJWE1F
OiBpdCBpcyBhIG1vcmUgY29tcGxpY2F0ZWQgdGhhbiB0aGF0OgorICAgIC8vIC10aGUgc2NhbGUg
c2hvdWxkIGJlIGRvbmUgY2VudGVyZWQgb24gdGhlIHBpbmNoIGNlbnRlci4KKyAgICAvLyAtY2hh
bmdlcyBvZiB0aGUgY2VudGVyIHBvc2l0aW9uIHNob3VsZCBtb3ZlIHRoZSBwYWdlIGV2ZW4gaWYg
dGhlIHpvb20gZmFjdG9yCisgICAgLy8gIGRvZXMgbm90IGNoYW5nZS4gQm90aCB0aGUgem9vbSBh
bmQgdGhlIHBhbm5pbmcgc2hvdWxkIGJlIGhhbmRsZWQgdGhyb3VnaCB0aGUgcGh5c2ljcyBlbmdp
bmUuCiAgICAgY29uc3QgcXJlYWwgc2NhbGUgPSBtX3BpbmNoU3RhcnRTY2FsZSAqIHRvdGFsU2Nh
bGVGYWN0b3I7Ci0gICAgbV9wYWdlVmlldy0+c2V0VHJhbnNmb3JtT3JpZ2luUG9pbnQocGluY2hD
ZW50ZXJJblBhZ2VWaWV3Q29vcmRpbmF0ZSk7CiAgICAgbV9wYWdlVmlldy0+c2V0U2NhbGUoc2Nh
bGUpOwogfQogCkBAIC05MSw3ICs5MSw3IEBAIHZvaWQgVG91Y2hWaWV3SW50ZXJmYWNlOjpzZXRW
aWV3TmVlZHNEaXNwbGF5KGNvbnN0IFFSZWN0JiBpbnZhbGlkYXRlZFJlY3QpCiAKIFFTaXplIFRv
dWNoVmlld0ludGVyZmFjZTo6ZHJhd2luZ0FyZWFTaXplKCkKIHsKLSAgICByZXR1cm4gbV9wYWdl
Vmlldy0+c2l6ZSgpLnRvU2l6ZSgpOworICAgIHJldHVybiBRU2l6ZShtX3BhZ2VWaWV3LT53aWR0
aCgpLCBtX3BhZ2VWaWV3LT5oZWlnaHQoKSk7CiB9CiAKIHZvaWQgVG91Y2hWaWV3SW50ZXJmYWNl
Ojpjb250ZW50U2l6ZUNoYW5nZWQoY29uc3QgUVNpemUmIG5ld1NpemUpCkBAIC0xMDEsMTMgKzEw
MSwxNSBAQCB2b2lkIFRvdWNoVmlld0ludGVyZmFjZTo6Y29udGVudFNpemVDaGFuZ2VkKGNvbnN0
IFFTaXplJiBuZXdTaXplKQogICAgIC8vIC1jaGFuZ2UgdGhlIHpvb20gbGV2ZWwgaWYgbmVlZGVk
CiAgICAgLy8gLW1vdmUgdGhlIHBhZ2UgYmFjayBpbiB2aWV3cG9ydCBib3VuZGFyaWVzIGlmIG5l
ZWRlZAogICAgIC8vIC11cGRhdGUgdGhlIHZpZXdwb3J0IHJlY3QKLSAgICBtX3BhZ2VWaWV3LT5y
ZXNpemUobmV3U2l6ZSk7CisgICAgbV9wYWdlVmlldy0+c2V0V2lkdGgobmV3U2l6ZS53aWR0aCgp
KTsKKyAgICBtX3BhZ2VWaWV3LT5zZXRIZWlnaHQobmV3U2l6ZS5oZWlnaHQoKSk7CiAgICAgbV92
aWV3cG9ydFZpZXctPmQtPnZpZXdwb3J0UmVjdFVwZGF0ZWQoKTsKIH0KIAogYm9vbCBUb3VjaFZp
ZXdJbnRlcmZhY2U6OmlzQWN0aXZlKCkKIHsKLSAgICByZXR1cm4gbV9wYWdlVmlldy0+aXNBY3Rp
dmUoKTsKKyAgICAvLyBGSVhNRTogVGhlIHNjZW5lIGdyYXBoIGRvZXMgbm90IGhhdmUgdGhlIGNv
bmNlcHQgb2YgYmVpbmcgYWN0aXZlIG9yIG5vdCB3aGVuIHRoaXMgd2FzIHdyaXR0ZW4uCisgICAg
cmV0dXJuIHRydWU7CiB9CiAKIGJvb2wgVG91Y2hWaWV3SW50ZXJmYWNlOjpoYXNGb2N1cygpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvVmlld0ludGVyZmFjZS5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvVmlld0ludGVyZmFjZS5jcHAKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY3MWJiYWNkZDRkMDc3NjM2ZmUyZmRmMWQ0OTU2NTdmOWZm
OTI0ZTEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1ZpZXdJbnRlcmZhY2UuY3BwCisrKyAvZGV2L251bGwK
QEAgLTEsNDQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBOb2tpYSBDb3Jwb3Jh
dGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMg
ZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiBtb2RpZnkg
aXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICog
TGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0
aGVyCi0gKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55
IGxhdGVyIHZlcnNpb24uCi0gKgotICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRo
ZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFO
VFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogTUVSQ0hBTlRBQklM
SVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAq
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAq
IFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVy
YWwgUHVibGljIExpY2Vuc2UKLSAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBzZWUgdGhlIGZp
bGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0gKiB0aGUgRnJlZSBTb2Z0d2FyZSBG
b3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICogQm9z
dG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0gKgotICovCi0KLSNpbmNsdWRlICJWaWV3SW50ZXJm
YWNlLmgiCi0KLSNpbmNsdWRlIDxRdENvcmUvUVJlY3Q+Ci0jaW5jbHVkZSA8UXRDb3JlL1FTaXpl
PgotI2luY2x1ZGUgPFF0R3VpL1FHcmFwaGljc1NjZW5lPgotI2luY2x1ZGUgPFF0R3VpL1FHcmFw
aGljc1ZpZXc+Ci0jaW5jbHVkZSA8UXRHdWkvUUdyYXBoaWNzV2lkZ2V0PgotI2luY2x1ZGUgPFF0
R3VpL1FXaWRnZXQ+Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1RV2lkZ2V0KiBWaWV3SW50ZXJm
YWNlOjpvd25lcldpZGdldChjb25zdCBRR3JhcGhpY3NXaWRnZXQqIHdpZGdldCkKLXsKLSAgICBp
ZiAoIXdpZGdldCB8fCAhd2lkZ2V0LT5zY2VuZSgpIHx8IHdpZGdldC0+c2NlbmUoKS0+dmlld3Mo
KS5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiAwOwotCi0gICAgUUxpc3Q8UUdyYXBoaWNzVmll
dyo+IHZpZXdzID0gd2lkZ2V0LT5zY2VuZSgpLT52aWV3cygpOwotICAgIGlmICh2aWV3cy5zaXpl
KCkgPiAxKQotICAgICAgICBxV2FybmluZygiQ2Fubm90IHN1cHBvcnQgbXVsdGlwbGUgdmlld3Mi
KTsKLQotICAgIHJldHVybiB2aWV3cy5hdCgwKTsKLX0KLQotfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL3F0L1ZpZXdJbnRlcmZhY2UuaCBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9xdC9WaWV3SW50ZXJmYWNlLmgKaW5kZXggODNjMDcyY2VlODk1ZWZiZDFjNGQxMDBi
YmY1NTljMGIxNWRlZTNlZi4uNDI5OTNjYjYwMDQ0N2FkNGM4ZjZkNTY3ODUxMjdkNjJhMTU1OWU1
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1ZpZXdJbnRlcmZhY2Uu
aAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvVmlld0ludGVyZmFjZS5oCkBAIC02
OSwxMCArNjksNiBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgcHJvY2Vzc0RpZENyYXNo
KCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWxhdW5jaFByb2Nlc3MoKSA9IDA7Ci0KLXBy
b3RlY3RlZDoKLSAgICAvKiBVdGlsaXR5IGZ1bmN0aW9ucyBmb3IgdGhlIGltcGxlbWVudGF0aW9u
cy4gKi8KLSAgICBzdGF0aWMgUVdpZGdldCogb3duZXJXaWRnZXQoY29uc3QgUUdyYXBoaWNzV2lk
Z2V0Kik7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnBybyBi
L1NvdXJjZS9XZWJLaXQyL1dlYktpdDIucHJvCmluZGV4IDY0NzI1OWQ4M2M2ZmRlYWQ3NTRjZmIw
NTZiYjk3YTQ1NTQwMTdkMTguLjZiMzg5YjdjNzFlMTk1ODliMWY3NDFmOGMwMTY5OTgzZTc4ZjBh
NjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIucHJvCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1dlYktpdDIucHJvCkBAIC0xNSw2ICsxNSw4IEBAIENPTkZJRyArPSBzdGF0aWNsaWIK
IFRBUkdFVCA9ICQkV0VCS0lUMl9UQVJHRVQKIERFU1RESVIgPSAkJFdFQktJVDJfREVTVERJUgog
CitRVCArPSBkZWNsYXJhdGl2ZQorCiAjIEJ1aWxkIGJvdGggZGVidWcgYW5kIHJlbGVhc2UgY29u
ZmlndXJhdGlvbnMKIG1hYzogQ09ORklHICs9IGJ1aWxkX2FsbAogCkBAIC00NzYsNyArNDc4LDYg
QEAgU09VUkNFUyArPSBcCiAgICAgVUlQcm9jZXNzL3F0L3F3a2NvbnRleHQuY3BwIFwKICAgICBV
SVByb2Nlc3MvcXQvcXdraGlzdG9yeS5jcHAgXAogICAgIFVJUHJvY2Vzcy9xdC9xd2twcmVmZXJl
bmNlcy5jcHAgXAotICAgIFVJUHJvY2Vzcy9xdC9WaWV3SW50ZXJmYWNlLmNwcCBcCiAgICAgVUlQ
cm9jZXNzL3F0L1RpbGVkRHJhd2luZ0FyZWFQcm94eVF0LmNwcCBcCiAgICAgVUlQcm9jZXNzL3F0
L1RpbGVkRHJhd2luZ0FyZWFUaWxlUXQuY3BwIFwKICAgICBVSVByb2Nlc3MvcXQvVGV4dENoZWNr
ZXJRdC5jcHAgXApkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9n
CmluZGV4IGVmZTA0Y2M4OTQwZGZhYTE2NzQ3M2I3MDU0NDExMzkwMWIzNjAwZGIuLjM0NTExYTYy
MWE4MDcyYjU4OTZmN2IwNmI0OTQzOWQyNDE5NTIxZDEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5n
ZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzOCBAQAorMjAxMS0wNy0xNCAg
QmVuamFtaW4gUG91bGFpbiAgPGJlbmphbWluQHdlYmtpdC5vcmc+CisKKyAgICAgICAgW1dLMl1b
UXRdIE1vdmUgZnJvbSBRR3JhcGhpY3NWaWV3IHRvIFF0IFNjZW5lIEdyYXBoCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02Mjk2OQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIENvLWF1dGhvcmVkIHdpdGggU2lt
b24gSGF1c21hbm4gIDxzaW1vbi5oYXVzbWFubkBub2tpYS5jb20+CisKKyAgICAgICAgV2l0aCB0
aGUgc2NlbmUgZ3JhcGgsIHRoZSBpbnRlcmZhY2UgdG8gaGF2ZSBhIHdpbmRvdyBvbiBzY3JlZW4g
aXMKKyAgICAgICAgUVNHQ2FudmFzLiBRR3JhcGhpY3NWaWV3IGlzIG5vdCB1c2VkLCBhbmQgb3Bl
bkdMIGlzIGFuIGVuZm9yY2VkCisgICAgICAgIGRlcGVuZGVuY3kuCisKKyAgICAgICAgQm90aCB0
aGUgQnJvd3NlclZpZXcgYW5kIHRoZSBXZWJLaXRUZXN0IHJ1bm5lciBhcmUgY2hhbmdlZCBmcm9t
CisgICAgICAgIFFHcmFwaGljc1ZpZXcgdG8gUVNHQ2FudmFzLgorCisgICAgICAgICogTWluaUJy
b3dzZXIvcXQvQnJvd3NlclZpZXcuY3BwOgorICAgICAgICAoQnJvd3NlclZpZXc6OkJyb3dzZXJW
aWV3KToKKyAgICAgICAgKEJyb3dzZXJWaWV3OjpyZXNpemVFdmVudCk6CisgICAgICAgIChCcm93
c2VyVmlldzo6dmlldyk6CisgICAgICAgICogTWluaUJyb3dzZXIvcXQvQnJvd3NlclZpZXcuaDoK
KyAgICAgICAgKiBNaW5pQnJvd3Nlci9xdC9Ccm93c2VyV2luZG93LmNwcDoKKyAgICAgICAgKEJy
b3dzZXJXaW5kb3c6OkJyb3dzZXJXaW5kb3cpOgorICAgICAgICAoQnJvd3NlcldpbmRvdzo6dXJs
Q2hhbmdlZCk6CisgICAgICAgIChCcm93c2VyV2luZG93Ojp+QnJvd3NlcldpbmRvdyk6CisgICAg
ICAgICogTWluaUJyb3dzZXIvcXQvQnJvd3NlcldpbmRvdy5oOgorICAgICAgICAqIE1pbmlCcm93
c2VyL3F0L01pbmlCcm93c2VyLnBybzoKKyAgICAgICAgKiBNaW5pQnJvd3Nlci9xdC9tYWluLmNw
cDoKKyAgICAgICAgKG1haW4pOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRC
dW5kbGUvcXQvSW5qZWN0ZWRCdW5kbGUucHJvOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIv
cXQvUGxhdGZvcm1XZWJWaWV3UXQuY3BwOgorICAgICAgICAoV1RSOjpXZWJWaWV3OjpXZWJWaWV3
KToKKyAgICAgICAgKFdUUjo6UGxhdGZvcm1XZWJWaWV3OjpQbGF0Zm9ybVdlYlZpZXcpOgorICAg
ICAgICAqIFdlYktpdFRlc3RSdW5uZXIvcXQvV2ViS2l0VGVzdFJ1bm5lci5wcm86CisKIDIwMTEt
MDctMTMgIFhhbiBMb3BleiAgPHhsb3BlekBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtdIERv
IG5vdCBncmFiIGZvY3VzIHRvbyBlYXJseSBpbiBEUlQuCmRpZmYgLS1naXQgYS9Ub29scy9NaW5p
QnJvd3Nlci9xdC9Ccm93c2VyVmlldy5jcHAgYi9Ub29scy9NaW5pQnJvd3Nlci9xdC9Ccm93c2Vy
Vmlldy5jcHAKaW5kZXggM2Q2ZTM5MmY3ODRlZGU4NjA4N2FiOGU0MmQ2ZjhjNGMyYWQzNDExMS4u
YjUzNjM4NDJkYTlmOTJjM2VjMzcwZjg0ZTg0OWU3ZTExM2FiZGI0ZiAxMDA2NDQKLS0tIGEvVG9v
bHMvTWluaUJyb3dzZXIvcXQvQnJvd3NlclZpZXcuY3BwCisrKyBiL1Rvb2xzL01pbmlCcm93c2Vy
L3F0L0Jyb3dzZXJWaWV3LmNwcApAQCAtMjksMjUgKzI5LDIwIEBACiAjaW5jbHVkZSAiQnJvd3Nl
clZpZXcuaCIKIAogI2luY2x1ZGUgPFFHcmFwaGljc1NjZW5lPgorI2luY2x1ZGUgPFF0RGVjbGFy
YXRpdmUvcXNnaXRlbS5oPgorI2luY2x1ZGUgPFFSZXNpemVFdmVudD4KICNpbmNsdWRlIDxxZGVz
a3RvcHdlYnZpZXcuaD4KICNpbmNsdWRlIDxxdG91Y2h3ZWJ2aWV3Lmg+CiAjaW5jbHVkZSA8cXRv
dWNod2VicGFnZS5oPgogCiBCcm93c2VyVmlldzo6QnJvd3NlclZpZXcoYm9vbCB1c2VUb3VjaFdl
YlZpZXcsIFFXaWRnZXQqIHBhcmVudCkKLSAgICA6IFFHcmFwaGljc1ZpZXcocGFyZW50KQorICAg
IDogUVNHQ2FudmFzKHBhcmVudCkKICAgICAsIG1faXRlbSgwKQogewogICAgIGlmICh1c2VUb3Vj
aFdlYlZpZXcpCi0gICAgICAgIG1faXRlbSA9IG5ldyBRVG91Y2hXZWJWaWV3OworICAgICAgICBt
X2l0ZW0gPSBuZXcgUVRvdWNoV2ViVmlldyhyb290SXRlbSgpKTsKICAgICBlbHNlCi0gICAgICAg
IG1faXRlbSA9IG5ldyBRRGVza3RvcFdlYlZpZXc7Ci0KLSAgICBzZXRTY2VuZShuZXcgUUdyYXBo
aWNzU2NlbmUodGhpcykpOwotICAgIHNjZW5lKCktPmFkZEl0ZW0obV9pdGVtKTsKLQotICAgIHNl
dEZyYW1lU2hhcGUoUUZyYW1lOjpOb0ZyYW1lKTsKLSAgICBzZXRIb3Jpem9udGFsU2Nyb2xsQmFy
UG9saWN5KFF0OjpTY3JvbGxCYXJBbHdheXNPZmYpOwotICAgIHNldFZlcnRpY2FsU2Nyb2xsQmFy
UG9saWN5KFF0OjpTY3JvbGxCYXJBbHdheXNPZmYpOworICAgICAgICBtX2l0ZW0gPSBuZXcgUURl
c2t0b3BXZWJWaWV3KHJvb3RJdGVtKCkpOwogfQogCiBCcm93c2VyVmlldzo6fkJyb3dzZXJWaWV3
KCkKQEAgLTU4LDEwICs1MywxMSBAQCBCcm93c2VyVmlldzo6fkJyb3dzZXJWaWV3KCkKIAogdm9p
ZCBCcm93c2VyVmlldzo6cmVzaXplRXZlbnQoUVJlc2l6ZUV2ZW50KiBldmVudCkKIHsKLSAgICBR
R3JhcGhpY3NWaWV3OjpyZXNpemVFdmVudChldmVudCk7Ci0gICAgUVJlY3RGIHJlY3QoUVBvaW50
KDAsIDApLCBldmVudC0+c2l6ZSgpKTsKLSAgICBtX2l0ZW0tPnNldEdlb21ldHJ5KHJlY3QpOwot
ICAgIHNjZW5lKCktPnNldFNjZW5lUmVjdChyZWN0KTsKKyAgICBRU0dDYW52YXM6OnJlc2l6ZUV2
ZW50KGV2ZW50KTsKKyAgICBtX2l0ZW0tPnNldFgoMCk7CisgICAgbV9pdGVtLT5zZXRZKDApOwor
ICAgIG1faXRlbS0+c2V0V2lkdGgoZXZlbnQtPnNpemUoKS53aWR0aCgpKTsKKyAgICBtX2l0ZW0t
PnNldEhlaWdodChldmVudC0+c2l6ZSgpLmhlaWdodCgpKTsKIH0KIAogdm9pZCBCcm93c2VyVmll
dzo6bG9hZChjb25zdCBRU3RyaW5nJiB1cmxTdHJpbmcpCkBAIC03NCw3ICs3MCw3IEBAIHZvaWQg
QnJvd3NlclZpZXc6OmxvYWQoY29uc3QgUVN0cmluZyYgdXJsU3RyaW5nKQogICAgICAgICB0b3Vj
aFdlYlZpZXcoKS0+cGFnZSgpLT5sb2FkKHVybCk7CiB9CiAKLVFHcmFwaGljc1dpZGdldCogQnJv
d3NlclZpZXc6OnZpZXcoKSBjb25zdAorUVNHSXRlbSogQnJvd3NlclZpZXc6OnZpZXcoKSBjb25z
dAogewogICAgIHJldHVybiBtX2l0ZW07CiB9CmRpZmYgLS1naXQgYS9Ub29scy9NaW5pQnJvd3Nl
ci9xdC9Ccm93c2VyVmlldy5oIGIvVG9vbHMvTWluaUJyb3dzZXIvcXQvQnJvd3NlclZpZXcuaApp
bmRleCBiYjRhYWVkZWYxZDcyNjAyMjVmN2M5OWVhZGI0NTYyOWJiOTg2MTQ0Li5kOGRkMDYyMDJm
OGNkMzU3NGU1ZjRmMDkzNmM2ZjZkNzZmYTZhNTY3IDEwMDY0NAotLS0gYS9Ub29scy9NaW5pQnJv
d3Nlci9xdC9Ccm93c2VyVmlldy5oCisrKyBiL1Rvb2xzL01pbmlCcm93c2VyL3F0L0Jyb3dzZXJW
aWV3LmgKQEAgLTI5LDEzICsyOSwxNCBAQAogI2lmbmRlZiBCcm93c2VyVmlld19oCiAjZGVmaW5l
IEJyb3dzZXJWaWV3X2gKIAotI2luY2x1ZGUgPFFHcmFwaGljc1ZpZXc+CisjaW5jbHVkZSA8UXRE
ZWNsYXJhdGl2ZS9xc2djYW52YXMuaD4KICNpbmNsdWRlIDxxd2Via2l0dHlwZXMuaD4KIAogY2xh
c3MgUURlc2t0b3BXZWJWaWV3OworY2xhc3MgUVNHSXRlbTsKIGNsYXNzIFFUb3VjaFdlYlZpZXc7
CiAKLWNsYXNzIEJyb3dzZXJWaWV3IDogcHVibGljIFFHcmFwaGljc1ZpZXcgeworY2xhc3MgQnJv
d3NlclZpZXcgOiBwdWJsaWMgUVNHQ2FudmFzIHsKICAgICBRX09CSkVDVAogCiBwdWJsaWM6CkBA
IC00Myw3ICs0NCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5Ccm93c2VyVmlldygpOwogCiAg
ICAgdm9pZCBsb2FkKGNvbnN0IFFTdHJpbmcmKTsKLSAgICBRR3JhcGhpY3NXaWRnZXQqIHZpZXco
KSBjb25zdDsKKyAgICBRU0dJdGVtKiB2aWV3KCkgY29uc3Q7CiAKICAgICBRQWN0aW9uKiBuYXZp
Z2F0aW9uQWN0aW9uKFF0V2ViS2l0OjpOYXZpZ2F0aW9uQWN0aW9uIHdoaWNoKSBjb25zdDsKIApA
QCAtNTQsNyArNTUsNyBAQCBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB2b2lkIHJlc2l6ZUV2ZW50
KFFSZXNpemVFdmVudCopOwogCiBwcml2YXRlOgotICAgIFFHcmFwaGljc1dpZGdldCogbV9pdGVt
OworICAgIFFTR0l0ZW0qIG1faXRlbTsKIH07CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvVG9vbHMv
TWluaUJyb3dzZXIvcXQvQnJvd3NlcldpbmRvdy5jcHAgYi9Ub29scy9NaW5pQnJvd3Nlci9xdC9C
cm93c2VyV2luZG93LmNwcAppbmRleCBjNDA2ZmM5Y2JjNjZiZTlmZjcwZDllMmU3MmVjZmJjMzE4
ZDgxYzc1Li5kZTA0OWUxNDNlZjQxYmIwYjA0YTY4ZGQwYWRkMjc2Y2E3ZGM3MjIzIDEwMDY0NAot
LS0gYS9Ub29scy9NaW5pQnJvd3Nlci9xdC9Ccm93c2VyV2luZG93LmNwcAorKysgYi9Ub29scy9N
aW5pQnJvd3Nlci9xdC9Ccm93c2VyV2luZG93LmNwcApAQCAtMzMsMTAgKzMzLDYgQEAKICNpbmNs
dWRlICJxdG91Y2h3ZWJ2aWV3LmgiCiAjaW5jbHVkZSAicXRvdWNod2VicGFnZS5oIgogCi0jaWYg
ZGVmaW5lZChRVF9DT05GSUdVUkVEX1dJVEhfT1BFTkdMKQotI2luY2x1ZGUgPFFHTFdpZGdldD4K
LSNlbmRpZgotCiAjaWYgMAogLy8gRklYTUUKIHN0YXRpYyBRV0tQYWdlKiBuZXdQYWdlRnVuY3Rp
b24oUVdLUGFnZSogcGFnZSkKQEAgLTU5LDExICs1NSw2IEBAIEJyb3dzZXJXaW5kb3c6OkJyb3dz
ZXJXaW5kb3coV2luZG93T3B0aW9ucyogb3B0aW9ucykKIAogICAgIG1fYnJvd3NlciA9IG5ldyBC
cm93c2VyVmlldyhtX3dpbmRvd09wdGlvbnMudXNlVG91Y2hXZWJWaWV3KTsKIAotI2lmIGRlZmlu
ZWQoUVRfQ09ORklHVVJFRF9XSVRIX09QRU5HTCkKLSAgICBpZiAobV93aW5kb3dPcHRpb25zLnVz
ZVFHTFdpZGdldFZpZXdwb3J0KQotICAgICAgICBtX2Jyb3dzZXItPnNldFZpZXdwb3J0KG5ldyBR
R0xXaWRnZXQoKSk7Ci0jZW5kaWYKLQogICAgIHNldEF0dHJpYnV0ZShRdDo6V0FfRGVsZXRlT25D
bG9zZSk7CiAKICAgICBjb25uZWN0KHdlYlZpZXcoKSwgU0lHTkFMKGxvYWRQcm9ncmVzcyhpbnQp
KSwgU0xPVChsb2FkUHJvZ3Jlc3MoaW50KSkpOwpAQCAtMTEzLDEyICsxMDQsNiBAQCBCcm93c2Vy
V2luZG93OjpCcm93c2VyV2luZG93KFdpbmRvd09wdGlvbnMqIG9wdGlvbnMpCiAgICAgY29ubmVj
dCh0aGlzLCBTSUdOQUwoZW50ZXJlZEZ1bGxTY3JlZW5Nb2RlKGJvb2wpKSwgdGhpcywgU0xPVCh0
b2dnbGVGdWxsU2NyZWVuTW9kZShib29sKSkpOwogCiAgICAgUU1lbnUqIHRvb2xzTWVudSA9IG1l
bnVCYXIoKS0+YWRkTWVudSgiJkRldmVsb3AiKTsKLSNpZiBkZWZpbmVkKFFUX0NPTkZJR1VSRURf
V0lUSF9PUEVOR0wpCi0gICAgUUFjdGlvbiogdG9nZ2xlR0xWaWV3cG9ydCA9IHRvb2xzTWVudS0+
YWRkQWN0aW9uKCJUb2dnbGUgR0wgVmlld3BvcnQiLCB0aGlzLCBTTE9UKHRvZ2dsZUdMVmlld3Bv
cnQoYm9vbCkpKTsKLSAgICB0b2dnbGVHTFZpZXdwb3J0LT5zZXRDaGVja2FibGUodHJ1ZSk7Ci0g
ICAgdG9nZ2xlR0xWaWV3cG9ydC0+c2V0Q2hlY2tlZChtX3dpbmRvd09wdGlvbnMudXNlUUdMV2lk
Z2V0Vmlld3BvcnQpOwotI2VuZGlmCi0gICAgdG9vbHNNZW51LT5hZGRTZXBhcmF0b3IoKTsKICAg
ICB0b29sc01lbnUtPmFkZEFjdGlvbigiQ2hhbmdlIFVzZXIgQWdlbnQiLCB0aGlzLCBTTE9UKHNo
b3dVc2VyQWdlbnREaWFsb2coKSkpOwogICAgIHRvb2xzTWVudS0+YWRkU2VwYXJhdG9yKCk7CiAg
ICAgdG9vbHNNZW51LT5hZGRBY3Rpb24oIkxvYWQgVVJMcyBmcm9tIGZpbGUiLCB0aGlzLCBTTE9U
KGxvYWRVUkxMaXN0RnJvbUZpbGUoKSkpOwpAQCAtMjAxLDcgKzE4Niw3IEBAIHZvaWQgQnJvd3Nl
cldpbmRvdzo6dXJsQ2hhbmdlZChjb25zdCBRVXJsJiB1cmwpCiB7CiAgICAgbV9hZGRyZXNzQmFy
LT5zZXRUZXh0KHVybC50b1N0cmluZygpKTsKICAgICBtX2Jyb3dzZXItPnNldEZvY3VzKCk7Ci0g
ICAgbV9icm93c2VyLT52aWV3KCktPnNldEZvY3VzKCk7CisgICAgbV9icm93c2VyLT52aWV3KCkt
PnNldEZvY3VzKHRydWUpOwogfQogCiB2b2lkIEJyb3dzZXJXaW5kb3c6Om9wZW5GaWxlKCkKQEAg
LTMzMCwxMCArMzE1LDMgQEAgQnJvd3NlcldpbmRvdzo6fkJyb3dzZXJXaW5kb3coKQogICAgIGRl
bGV0ZSBtX2FkZHJlc3NCYXI7CiAgICAgZGVsZXRlIG1fYnJvd3NlcjsKIH0KLQotdm9pZCBCcm93
c2VyV2luZG93Ojp0b2dnbGVHTFZpZXdwb3J0KGJvb2wgdXNlUUdMV2lkZ2V0Vmlld3BvcnQpCi17
Ci0jaWYgZGVmaW5lZChRVF9DT05GSUdVUkVEX1dJVEhfT1BFTkdMKQotICAgIG1fYnJvd3Nlci0+
c2V0Vmlld3BvcnQodXNlUUdMV2lkZ2V0Vmlld3BvcnQgPyBuZXcgUUdMV2lkZ2V0KCkgOiAwKTsK
LSNlbmRpZgotfQpkaWZmIC0tZ2l0IGEvVG9vbHMvTWluaUJyb3dzZXIvcXQvQnJvd3NlcldpbmRv
dy5oIGIvVG9vbHMvTWluaUJyb3dzZXIvcXQvQnJvd3NlcldpbmRvdy5oCmluZGV4IDg2MWYyMzA0
YmY1ZGYxNTAwZWJkYjZhNzNhM2NmYTY4ZjI3ZmIwOGIuLmY5Y2YzOTc4MDNlNTQ0ZmUwZGI0NGM0
MDRjNjEwMjUwNjlmY2Q3NzQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL01pbmlCcm93c2VyL3F0L0Jyb3dz
ZXJXaW5kb3cuaAorKysgYi9Ub29scy9NaW5pQnJvd3Nlci9xdC9Ccm93c2VyV2luZG93LmgKQEAg
LTcwLDggKzcwLDYgQEAgcHJvdGVjdGVkIHNsb3RzOgogCiAgICAgdm9pZCBwcmludFVSTChjb25z
dCBRVXJsJik7CiAKLSAgICB2b2lkIHRvZ2dsZUdMVmlld3BvcnQoYm9vbCk7Ci0KIHByaXZhdGU6
CiAgICAgdm9pZCB1cGRhdGVVc2VyQWdlbnRMaXN0KCk7CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL01p
bmlCcm93c2VyL3F0L01pbmlCcm93c2VyLnBybyBiL1Rvb2xzL01pbmlCcm93c2VyL3F0L01pbmlC
cm93c2VyLnBybwppbmRleCA0MTAxZTI1NmQzMzNjZTYyMzgwODgwZWFmZDkxZjU0MTliOTBiYjdj
Li4zOTgxNTExZTNhYzA0MGIyNzA1ZDBhY2YyYzNjOTMyZTFhNzRlN2M3IDEwMDY0NAotLS0gYS9U
b29scy9NaW5pQnJvd3Nlci9xdC9NaW5pQnJvd3Nlci5wcm8KKysrIGIvVG9vbHMvTWluaUJyb3dz
ZXIvcXQvTWluaUJyb3dzZXIucHJvCkBAIC0zMCw3ICszMCw3IEBAIElOQ0xVREVQQVRIICs9IFwK
IERFU1RESVIgPSAkJE9VVFBVVF9ESVIvYmluCiAhQ09ORklHKHN0YW5kYWxvbmVfcGFja2FnZSk6
IENPTkZJRyAtPSBhcHBfYnVuZGxlCiAKLVFUICs9IG5ldHdvcmsKK1FUICs9IG5ldHdvcmsgZGVj
bGFyYXRpdmUKIG1hY3g6UVQrPXhtbAogCiBsaW51eC0qIHsKZGlmZiAtLWdpdCBhL1Rvb2xzL01p
bmlCcm93c2VyL3F0L21haW4uY3BwIGIvVG9vbHMvTWluaUJyb3dzZXIvcXQvbWFpbi5jcHAKaW5k
ZXggMzRiY2UzZTg5MDIyOTFhZGUwMmNiNzU4ZDk4NjM4OWIwNGY2ZGRmYy4uYzU0Yzk0MzcyMDY3
NjY0ZGVmNTU3OTM1MGEwMzliOTdhZGU5YzUyYSAxMDA2NDQKLS0tIGEvVG9vbHMvTWluaUJyb3dz
ZXIvcXQvbWFpbi5jcHAKKysrIGIvVG9vbHMvTWluaUJyb3dzZXIvcXQvbWFpbi5jcHAKQEAgLTM2
LDYgKzM2LDcgQEAKIAogaW50IG1haW4oaW50IGFyZ2MsIGNoYXIqKiBhcmd2KQogeworICAgIHFw
dXRlbnYoIlFNTF9OT19USFJFQURFRF9SRU5ERVJFUiIsIFFCeXRlQXJyYXkoIjEiKSk7CiAgICAg
TWluaUJyb3dzZXJBcHBsaWNhdGlvbiBhcHAoYXJnYywgYXJndik7CiAKICAgICBpZiAoYXBwLmlz
Um9ib3RpemVkKCkpIHsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0
ZWRCdW5kbGUvcXQvSW5qZWN0ZWRCdW5kbGUucHJvIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9J
bmplY3RlZEJ1bmRsZS9xdC9JbmplY3RlZEJ1bmRsZS5wcm8KaW5kZXggZjc4ZWE0MTYxZDE1MzNh
NDQ4NThiNGVjMTEzYTQ4OWQyOTU1OGVmNi4uYmFmMGZjYTMxNGViNWI3ZDI1N2Q4YjQ4Njg5OGQz
Mzc0YzNhYjliOSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1
bmRsZS9xdC9JbmplY3RlZEJ1bmRsZS5wcm8KKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9J
bmplY3RlZEJ1bmRsZS9xdC9JbmplY3RlZEJ1bmRsZS5wcm8KQEAgLTgsNiArOCw4IEBAIENPTkZJ
RyhzdGFuZGFsb25lX3BhY2thZ2UpIHsKICAgICBpc0VtcHR5KFdDX0dFTkVSQVRFRF9TT1VSQ0VT
X0RJUik6V0NfR0VORVJBVEVEX1NPVVJDRVNfRElSID0gLi4vLi4vLi4vLi4vU291cmNlL1dlYkNv
cmUvZ2VuZXJhdGVkCiB9CiAKK1FUICs9IGRlY2xhcmF0aXZlCisKIEdFTkVSQVRFRF9TT1VSQ0VT
X0RJUiA9IC4uLy4uL2dlbmVyYXRlZAogCiBTT1VSQ0VTICs9IFwKZGlmZiAtLWdpdCBhL1Rvb2xz
L1dlYktpdFRlc3RSdW5uZXIvcXQvUGxhdGZvcm1XZWJWaWV3UXQuY3BwIGIvVG9vbHMvV2ViS2l0
VGVzdFJ1bm5lci9xdC9QbGF0Zm9ybVdlYlZpZXdRdC5jcHAKaW5kZXggODdmNGE3ZjgyY2VjNmZl
NTM1NGExMzExNjcyMzA4MDdkY2RlMGFlNi4uOGRmZjljY2UyOGVhZTk2MDUyYWU2ZTMxY2ZkY2Ni
MDEzYzlkM2E0YiAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9xdC9QbGF0Zm9y
bVdlYlZpZXdRdC5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9xdC9QbGF0Zm9ybVdl
YlZpZXdRdC5jcHAKQEAgLTI5LDEwICsyOSwxMSBAQAogI2luY2x1ZGUgIlBsYXRmb3JtV2ViVmll
dy5oIgogI2luY2x1ZGUgInFkZXNrdG9wd2Vidmlldy5oIgogI2luY2x1ZGUgPFF0R3VpPgorI2lu
Y2x1ZGUgPFF0RGVjbGFyYXRpdmUvcXNnY2FudmFzLmg+CiAKIG5hbWVzcGFjZSBXVFIgewogCi1j
bGFzcyBXZWJWaWV3IDogcHVibGljIFFHcmFwaGljc1ZpZXcgeworY2xhc3MgV2ViVmlldyA6IHB1
YmxpYyBRU0dDYW52YXMgewogcHVibGljOgogICAgIFdlYlZpZXcoV0tDb250ZXh0UmVmLCBXS1Bh
Z2VHcm91cFJlZik7CiAKQEAgLTQ2LDEyICs0NywxMCBAQCBwcml2YXRlOgogfTsKIAogV2ViVmll
dzo6V2ViVmlldyhXS0NvbnRleHRSZWYgY29udGV4dFJlZiwgV0tQYWdlR3JvdXBSZWYgcGFnZUdy
b3VwUmVmKQotICAgIDogUUdyYXBoaWNzVmlldygpCi0gICAgLCBtX2l0ZW0obmV3IFFEZXNrdG9w
V2ViVmlldyhjb250ZXh0UmVmLCBwYWdlR3JvdXBSZWYpKQorICAgIDogbV9pdGVtKG5ldyBRRGVz
a3RvcFdlYlZpZXcoY29udGV4dFJlZiwgcGFnZUdyb3VwUmVmLCByb290SXRlbSgpKSkKIHsKLSAg
ICBtX2l0ZW0tPnNldFByZWZlcnJlZFNpemUoODAwLCA2MDApOwotICAgIHNldFNjZW5lKG5ldyBR
R3JhcGhpY3NTY2VuZSh0aGlzKSk7Ci0gICAgc2NlbmUoKS0+YWRkSXRlbShtX2l0ZW0pOworICAg
IG1faXRlbS0+c2V0V2lkdGgoODAwKTsKKyAgICBtX2l0ZW0tPnNldEhlaWdodCg2MDApOwogfQog
CiBQbGF0Zm9ybVdlYlZpZXc6OlBsYXRmb3JtV2ViVmlldyhXS0NvbnRleHRSZWYgY29udGV4dFJl
ZiwgV0tQYWdlR3JvdXBSZWYgcGFnZUdyb3VwUmVmKQpAQCAtNjMsNyArNjIsNyBAQCBQbGF0Zm9y
bVdlYlZpZXc6OlBsYXRmb3JtV2ViVmlldyhXS0NvbnRleHRSZWYgY29udGV4dFJlZiwgV0tQYWdl
R3JvdXBSZWYgcGFnZUdybwogICAgIG1fd2luZG93LT5zZXRHZW9tZXRyeSgwLCAwLCA4MDAsIDYw
MCk7CiAKICAgICBRRm9jdXNFdmVudCBldihRRXZlbnQ6OldpbmRvd0FjdGl2YXRlKTsKLSAgICBR
QXBwbGljYXRpb246OnNlbmRFdmVudChtX3ZpZXctPnNjZW5lKCksICZldik7CisgICAgUUFwcGxp
Y2F0aW9uOjpzZW5kRXZlbnQobV92aWV3LCAmZXYpOwogICAgIG1fdmlldy0+d2tWaWV3KCktPnNl
dEZvY3VzKFF0OjpPdGhlckZvY3VzUmVhc29uKTsKIH0KIApkaWZmIC0tZ2l0IGEvVG9vbHMvV2Vi
S2l0VGVzdFJ1bm5lci9xdC9XZWJLaXRUZXN0UnVubmVyLnBybyBiL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvcXQvV2ViS2l0VGVzdFJ1bm5lci5wcm8KaW5kZXggZWI2NjAyZjcxM2NkZjI2MWVmMDkz
NDkyYzdjNWIyMjRmNzQ1OTMyMC4uOGUxMDcyMDIxNDU3ZjQ1NzU3ZmQ1MWVkZTQ0ZTI0MDExYjk1
MDZiOCAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9xdC9XZWJLaXRUZXN0UnVu
bmVyLnBybworKysgYi9Ub29scy9XZWJLaXRUZXN0UnVubmVyL3F0L1dlYktpdFRlc3RSdW5uZXIu
cHJvCkBAIC0zMSw3ICszMSw3IEBAIHVuaXg6IW1hYzohc3ltYmlhbjohZW1iZWRkZWQgewogICAg
IFBLR0NPTkZJRyArPSBmb250Y29uZmlnCiB9CiAKLVFUID0gY29yZSBndWkgbmV0d29yaworUVQg
PSBjb3JlIGd1aSBuZXR3b3JrIGRlY2xhcmF0aXZlCiAKIEhFQURFUlMgPSBcCiAgICAgJCRCQVNF
RElSL1BsYXRmb3JtV2ViVmlldy5oIFwK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>100808</attachid>
            <date>2011-07-14 08:00:39 -0700</date>
            <delta_ts>2011-07-27 11:58:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-62969-20110714170728.patch</filename>
            <type>text/plain</type>
            <size>42080</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTA5MTgKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cKaW5kZXggZDE2Yjg1MTUwYWZi
ZWUxOTY1NzFlZmE3NzVkZjJlMDgwMWVkMzhiNy4uNGE5Y2NjZmM1Y2IzZTI3OWMxZTMyMWYwYjkw
ZTBiNDRmMWVhZjZmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAxMS0wNy0x
NCAgQmVuamFtaW4gUG91bGFpbiAgPGJlbmphbWluQHdlYmtpdC5vcmc+CisKKyAgICAgICAgW1dL
Ml1bUXRdIE1vdmUgZnJvbSBRR3JhcGhpY3NWaWV3IHRvIFF0IFNjZW5lIEdyYXBoCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02Mjk2OQorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZCB0aGUgZGVjbGFyYXRp
dmUgZGVwZW5kZW5jeSB0byBsaW5rIFdlYktpdC4KKworICAgICAgICAqIFF0V2ViS2l0LnBybzoK
KwogMjAxMS0wNy0xMiAgSm9zZXBoIFBlY29yYXJvICA8am9lcGVja0B3ZWJraXQub3JnPgogCiAg
ICAgICAgIEFwcGxpY2F0aW9uQ2FjaGUgdXBkYXRlIHNob3VsZCBub3QgaW1tZWRpYXRlbHkgZmFp
bCB3aGVuIHJlYWNoaW5nIHBlci1vcmlnaW4gcXVvdGEKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvcXQvUXRXZWJLaXQucHJvIGIvU291cmNlL1dlYktpdC9xdC9RdFdlYktpdC5wcm8KaW5kZXgg
NmMwZDQ4NzY1ZjRiMzg4NmM2ZmYxYjk5ZTg2OGU2NjExYWZhZGFmMi4uMGI3M2ZhYzZmOGVlMzkz
YzhhYjViZDcyMGQwY2M2NjczMzQwYzJlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9xdC9R
dFdlYktpdC5wcm8KKysrIGIvU291cmNlL1dlYktpdC9xdC9RdFdlYktpdC5wcm8KQEAgLTcsNiAr
Nyw4IEBAIFRFTVBMQVRFID0gbGliCiAKIERFRklORVMgKz0gQlVJTERJTkdfV0VCS0lUCiAKK3dl
YmtpdDI6IFFUICs9IGRlY2xhcmF0aXZlCisKIFJFU09VUkNFUyArPSBcCiAgICAgJCRQV0QvLi4v
Li4vV2ViQ29yZS9XZWJDb3JlLnFyYwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggNDAwNTU5ODRkN2NhMzQyZTIz
NTUwOThiOTgwNWE1MzdkZDhiZDA0Zi4uMzM1ODRmZTJjYmVjNTI5MDRiYmY0M2IyMWM3OWY4ZTY2
ZDMzMzQ3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwzICsxLDk4IEBACisyMDExLTA3LTE0ICBCZW5qYW1p
biBQb3VsYWluICA8YmVuamFtaW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBbV0syXVtRdF0gTW92
ZSBmcm9tIFFHcmFwaGljc1ZpZXcgdG8gUXQgU2NlbmUgR3JhcGgKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYyOTY5CisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ28tYXV0aG9yZWQgd2l0aCBTaW1vbiBIYXVz
bWFubiAgPHNpbW9uLmhhdXNtYW5uQG5va2lhLmNvbT4KKworICAgICAgICBUaGlzIHBhdGNoIGNo
YW5nZSB0aGUgYmFzZSBvZiBXZWJLaXQyIGZyb20gUUdyYXBoaWNzV2lkZ2V0CisgICAgICAgIHRv
IHNjZW5lZ3JhcGggYmFzZWQgaXRlbXMuCisKKyAgICAgICAgUVRvdWNoV2ViVmlldyBiZWNvbWUg
YSBRU0dJdGVtIHdpdGggdGhlIG9ubHkgcm9sZSBvZiBjbGlwcGluZworICAgICAgICBjaGlsZHJl
biBpdGVtcy4KKyAgICAgICAgUVRvdWNoV2ViUGFnZSBiZWNvbWUgYSBRU0dQYWludGVkSXRlbSBp
biBvcmRlciB0byByZW5kZXIgdGhlIGNvbnRlbnQKKyAgICAgICAgb2YgdGhlIGZsYXR0ZW5lZCBw
YWdlLiBUaGlzIGlzIGEgdGVtcG9yYXJ5IHdvcmsgYXJvdW5kIHRvIGdldAorICAgICAgICBzb21l
dGhpbmcgcnVubmluZyB3aXRodG91dCBkZWVwIGNoYW5nZSBvbiB0aGUgZHJhd2luZyBhcmVhIHBy
b3h5LgorCisgICAgICAgIFFEZXNrdG9wV2ViVmlldyBiZWNvbWUgYSBRU0dQYWludGVkSXRlbSBh
bmQgYmVoYXZlIGFzIGJlZm9yZQorICAgICAgICByZWdhcmRpbmcgcmVuZGVyaW5nLiBUaGUgZHJh
d2luZyBhcmVhIHByb3h5IGlzIHVzZWQgdG8gcmVuZGVyCisgICAgICAgIHRoZSBmdWxsIGl0ZW0u
CisKKyAgICAgICAgVGhlIGV2ZW50IGRlbGl2ZXJ5IGhhZCB0byBiZSBhZGFwdGVkIGJlY2F1c2Ug
dGhlIHNjZW5lZ3JhcGggZG9lcyBub3QKKyAgICAgICAgZm9sbG93IHJlZ3VsYXIgZGVsaXZlcnkg
b2YgUUV2ZW50cy4gSW5zdGVhZCwgZWFjaCBldmVudCB0eXBlIGlzCisgICAgICAgIGRlbGl2ZXJl
ZCBkaXJlY3RseSB0byBhIHNwZWNpZmljIHZpcnR1YWwgZnVuY3Rpb24uCisgICAgICAgIEluIHRo
aXMgcGF0Y2gsIHRoZSBldmVudHMgYXJlIGZvcndhcmRlZCB0byB0aGUgY2xhc3NpYyBRT2JqZWN0
OjpldmVudCgpLgorCisgICAgICAgIEZvciB0aGUgZmVhdHVyZXMgdGhhdCBjYW5ub3QgYmUgaW1w
bGVtZW50ZWQgb24gc2NlbmVncmFwaCAodG9vbHRpcCwgbWVudXMsIGV0YyksCisgICAgICAgIGEg
dGVtcG9yYXJ5IHdvcmthcm91bmQgd2FzIGFkZGVkOiB0aGUgcGFyZW50IGNhbnZhcyBpcyB1c2Vk
IGFzIHRoZSB3aWRnZXQgZm9yCisgICAgICAgIHByb3ZpZGluZyB0aGUgZmVhdHVyZS4gVGhpcyBh
c3N1bWVzIHRoZSB3ZWIgdmlld3MgYWxvbmUgaW4gdGhlIGNhbnZhcyBhbmQKKyAgICAgICAgdGFr
ZSBpdHMgZnVsbCBzaXplLiBUaGlzIHdpbGwgaGF2ZSB0byBiZSBmaXhlZCBpbiB0aGUgc2NlbmVn
cmFwaCBmb3IgdXMgdG8KKyAgICAgICAgaW1wbGVtZW50IHRob3NlIGZlYXR1cmVzLgorCisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS9xdC9xZGVza3RvcHdlYnZpZXcuY3BwOgorICAgICAgICAoUURl
c2t0b3BXZWJWaWV3UHJpdmF0ZTo6ZHJhd2luZ0FyZWFTaXplKToKKyAgICAgICAgKFFEZXNrdG9w
V2ViVmlld1ByaXZhdGU6OmlzQWN0aXZlKToKKyAgICAgICAgKFFEZXNrdG9wV2ViVmlld1ByaXZh
dGU6OnN0YXJ0RHJhZyk6CisgICAgICAgIChRRGVza3RvcFdlYlZpZXdQcml2YXRlOjpkaWRDaGFu
Z2VUb29sVGlwKToKKyAgICAgICAgKFFEZXNrdG9wV2ViVmlld1ByaXZhdGU6OmRpZENoYW5nZUN1
cnNvcik6CisgICAgICAgIChRRGVza3RvcFdlYlZpZXdQcml2YXRlOjpzaG93Q29udGV4dE1lbnUp
OgorICAgICAgICAoUURlc2t0b3BXZWJWaWV3OjpRRGVza3RvcFdlYlZpZXcpOgorICAgICAgICAo
UURlc2t0b3BXZWJWaWV3Ojppbml0KToKKyAgICAgICAgKHBhaW50Q3Jhc2hlZFBhZ2UpOgorICAg
ICAgICAoUURlc2t0b3BXZWJWaWV3OjprZXlQcmVzc0V2ZW50KToKKyAgICAgICAgKFFEZXNrdG9w
V2ViVmlldzo6a2V5UmVsZWFzZUV2ZW50KToKKyAgICAgICAgKFFEZXNrdG9wV2ViVmlldzo6aW5w
dXRNZXRob2RFdmVudCk6CisgICAgICAgIChRRGVza3RvcFdlYlZpZXc6OmZvY3VzSW5FdmVudCk6
CisgICAgICAgIChRRGVza3RvcFdlYlZpZXc6OmZvY3VzT3V0RXZlbnQpOgorICAgICAgICAoUURl
c2t0b3BXZWJWaWV3Ojptb3VzZVByZXNzRXZlbnQpOgorICAgICAgICAoUURlc2t0b3BXZWJWaWV3
Ojptb3VzZU1vdmVFdmVudCk6CisgICAgICAgIChRRGVza3RvcFdlYlZpZXc6Om1vdXNlUmVsZWFz
ZUV2ZW50KToKKyAgICAgICAgKFFEZXNrdG9wV2ViVmlldzo6bW91c2VEb3VibGVDbGlja0V2ZW50
KToKKyAgICAgICAgKFFEZXNrdG9wV2ViVmlldzo6d2hlZWxFdmVudCk6CisgICAgICAgIChRRGVz
a3RvcFdlYlZpZXc6OnRvdWNoRXZlbnQpOgorICAgICAgICAoUURlc2t0b3BXZWJWaWV3Ojpob3Zl
ckVudGVyRXZlbnQpOgorICAgICAgICAoUURlc2t0b3BXZWJWaWV3Ojpob3Zlck1vdmVFdmVudCk6
CisgICAgICAgIChRRGVza3RvcFdlYlZpZXc6OmhvdmVyTGVhdmVFdmVudCk6CisgICAgICAgIChR
RGVza3RvcFdlYlZpZXc6OmRyYWdNb3ZlRXZlbnQpOgorICAgICAgICAoUURlc2t0b3BXZWJWaWV3
OjpkcmFnRW50ZXJFdmVudCk6CisgICAgICAgIChRRGVza3RvcFdlYlZpZXc6OmRyYWdFeGl0RXZl
bnQpOgorICAgICAgICAoUURlc2t0b3BXZWJWaWV3OjpkcmFnRHJvcEV2ZW50KToKKyAgICAgICAg
KFFEZXNrdG9wV2ViVmlldzo6Z2VvbWV0cnlDaGFuZ2VkKToKKyAgICAgICAgKFFEZXNrdG9wV2Vi
Vmlldzo6cGFpbnQpOgorICAgICAgICAoUURlc2t0b3BXZWJWaWV3OjpldmVudCk6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9xdC9xZGVza3RvcHdlYnZpZXcuaDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvQVBJL3F0L3F0b3VjaHdlYnBhZ2UuY3BwOgorICAgICAgICAoUVRvdWNoV2ViUGFnZTo6UVRv
dWNoV2ViUGFnZSk6CisgICAgICAgIChRVG91Y2hXZWJQYWdlOjpwYWludCk6CisgICAgICAgIChR
VG91Y2hXZWJQYWdlOjpldmVudCk6CisgICAgICAgIChRVG91Y2hXZWJQYWdlOjprZXlQcmVzc0V2
ZW50KToKKyAgICAgICAgKFFUb3VjaFdlYlBhZ2U6OmtleVJlbGVhc2VFdmVudCk6CisgICAgICAg
IChRVG91Y2hXZWJQYWdlOjppbnB1dE1ldGhvZEV2ZW50KToKKyAgICAgICAgKFFUb3VjaFdlYlBh
Z2U6OmZvY3VzSW5FdmVudCk6CisgICAgICAgIChRVG91Y2hXZWJQYWdlOjpmb2N1c091dEV2ZW50
KToKKyAgICAgICAgKFFUb3VjaFdlYlBhZ2U6OnRvdWNoRXZlbnQpOgorICAgICAgICAoUVRvdWNo
V2ViUGFnZTo6Z2VvbWV0cnlDaGFuZ2VkKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3F0L3F0
b3VjaHdlYnBhZ2UuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3F0L3F0b3VjaHdlYnZpZXcu
Y3BwOgorICAgICAgICAoUVRvdWNoV2ViVmlld1ByaXZhdGU6OnNjcm9sbCk6CisgICAgICAgIChR
VG91Y2hXZWJWaWV3OjpRVG91Y2hXZWJWaWV3KToKKyAgICAgICAgKFFUb3VjaFdlYlZpZXc6Omdl
b21ldHJ5Q2hhbmdlZCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9xdC9xdG91Y2h3ZWJ2aWV3
Lmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9xdC90ZXN0cy90ZXN0cy5wcmk6CisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9xdC90ZXN0cy90ZXN0d2luZG93Lmg6CisgICAgICAgIChUZXN0V2lu
ZG93OjpUZXN0V2luZG93KToKKyAgICAgICAgKFRlc3RXaW5kb3c6OnJlc2l6ZUV2ZW50KToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvcXQvVG91Y2hWaWV3SW50ZXJmYWNlLmNwcDoKKyAgICAgICAgKFdl
YktpdDo6VG91Y2hWaWV3SW50ZXJmYWNlOjpwaW5jaEdlc3R1cmVSZXF1ZXN0VXBkYXRlKToKKyAg
ICAgICAgKFdlYktpdDo6VG91Y2hWaWV3SW50ZXJmYWNlOjpkcmF3aW5nQXJlYVNpemUpOgorICAg
ICAgICAoV2ViS2l0OjpUb3VjaFZpZXdJbnRlcmZhY2U6OmNvbnRlbnRTaXplQ2hhbmdlZCk6Cisg
ICAgICAgIChXZWJLaXQ6OlRvdWNoVmlld0ludGVyZmFjZTo6aXNBY3RpdmUpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9xdC9WaWV3SW50ZXJmYWNlLmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBVSVBy
b2Nlc3MvcXQvVmlld0ludGVyZmFjZS5oOgorICAgICAgICAqIFdlYktpdDIucHJvOgorCiAyMDEx
LTA3LTEzICBBbmRyZWFzIEtsaW5nICA8a2xpbmdAd2Via2l0Lm9yZz4KIAogICAgICAgICBbUXRd
W1dLMl0gUmVtb3ZlIGludmFsaWQgc2lnbmFsL3Nsb3QgY29ubmVjdGlvbiBpbiBRVG91Y2hXZWJW
aWV3LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xZGVza3Rv
cHdlYnZpZXcuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xZGVza3RvcHdl
YnZpZXcuY3BwCmluZGV4IGY2YjUwYzg1MGNjNGQxYWQ5NjM5ZGM1NTAxMjE4OTA1YjIxMzE1ODMu
LjAzYmE5MzZjMDM0MzkxNWRiOGZlMjgwYzU2OWJlYjBhZTM4ZjliZDAgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcWRlc2t0b3B3ZWJ2aWV3LmNwcAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3FkZXNrdG9wd2Vidmlldy5jcHAKQEAgLTIz
LDkgKzIzLDE5IEBACiAjaW5jbHVkZSAicWRlc2t0b3B3ZWJ2aWV3X3AuaCIKICNpbmNsdWRlICJx
d2tjb250ZXh0LmgiCiAKLSNpbmNsdWRlIDxRQ3Vyc29yPgogI2luY2x1ZGUgPFFHcmFwaGljc1Nj
ZW5lUmVzaXplRXZlbnQ+CiAjaW5jbHVkZSA8UVN0eWxlT3B0aW9uR3JhcGhpY3NJdGVtPgorI2lu
Y2x1ZGUgPFF0RGVjbGFyYXRpdmUvcXNnY2FudmFzLmg+CisjaW5jbHVkZSA8UXREZWNsYXJhdGl2
ZS9xc2dldmVudC5oPgorI2luY2x1ZGUgPFF0RGVjbGFyYXRpdmUvcXNnaXRlbS5oPgorI2luY2x1
ZGUgPFF0R3VpL1FDdXJzb3I+CisjaW5jbHVkZSA8UXRHdWkvUUZvY3VzRXZlbnQ+CisjaW5jbHVk
ZSA8UXRHdWkvUUdyYXBoaWNzU2NlbmVFdmVudD4KKyNpbmNsdWRlIDxRdEd1aS9RSG92ZXJFdmVu
dD4KKyNpbmNsdWRlIDxRdEd1aS9RSW5wdXRNZXRob2RFdmVudD4KKyNpbmNsdWRlIDxRdEd1aS9R
S2V5RXZlbnQ+CisjaW5jbHVkZSA8UXRHdWkvUVRvdWNoRXZlbnQ+CisjaW5jbHVkZSA8UXRHdWkv
UVdoZWVsRXZlbnQ+CiAKIFFEZXNrdG9wV2ViVmlld1ByaXZhdGU6OlFEZXNrdG9wV2ViVmlld1By
aXZhdGUoUURlc2t0b3BXZWJWaWV3KiBxLCBXS0NvbnRleHRSZWYgY29udGV4dFJlZiwgV0tQYWdl
R3JvdXBSZWYgcGFnZUdyb3VwUmVmKQogICAgIDogcShxKQpAQCAtNDEsNyArNTEsNyBAQCB2b2lk
IFFEZXNrdG9wV2ViVmlld1ByaXZhdGU6OnNldFZpZXdOZWVkc0Rpc3BsYXkoY29uc3QgUVJlY3Qm
IGludmFsaWRhdGVkQXJlYSkKIAogUVNpemUgUURlc2t0b3BXZWJWaWV3UHJpdmF0ZTo6ZHJhd2lu
Z0FyZWFTaXplKCkKIHsKLSAgICByZXR1cm4gcS0+c2l6ZSgpLnRvU2l6ZSgpOworICAgIHJldHVy
biBRU2l6ZShxLT53aWR0aCgpLCBxLT5oZWlnaHQoKSk7CiB9CiAKIHZvaWQgUURlc2t0b3BXZWJW
aWV3UHJpdmF0ZTo6Y29udGVudFNpemVDaGFuZ2VkKGNvbnN0IFFTaXplJikKQEAgLTUwLDcgKzYw
LDggQEAgdm9pZCBRRGVza3RvcFdlYlZpZXdQcml2YXRlOjpjb250ZW50U2l6ZUNoYW5nZWQoY29u
c3QgUVNpemUmKQogCiBib29sIFFEZXNrdG9wV2ViVmlld1ByaXZhdGU6OmlzQWN0aXZlKCkKIHsK
LSAgICByZXR1cm4gcS0+aXNBY3RpdmUoKTsKKyAgICAvLyBGSVhNRTogVGhlIHNjZW5lIGdyYXBo
IGRpZCBub3QgaGF2ZSB0aGUgY29uY2VwdCBvZiBiZWluZyBhY3RpdmUgb3Igbm90IHdoZW4gdGhp
cyB3YXMgd3JpdHRlbi4KKyAgICByZXR1cm4gdHJ1ZTsKIH0KIAogYm9vbCBRRGVza3RvcFdlYlZp
ZXdQcml2YXRlOjpoYXNGb2N1cygpCkBAIC02NSw3ICs3Niw3IEBAIGJvb2wgUURlc2t0b3BXZWJW
aWV3UHJpdmF0ZTo6aXNWaXNpYmxlKCkKIAogdm9pZCBRRGVza3RvcFdlYlZpZXdQcml2YXRlOjpz
dGFydERyYWcoUXQ6OkRyb3BBY3Rpb25zIHN1cHBvcnRlZERyb3BBY3Rpb25zLCBjb25zdCBRSW1h
Z2UmIGRyYWdJbWFnZSwgUU1pbWVEYXRhKiBkYXRhLCBRUG9pbnQqIGNsaWVudFBvc2l0aW9uLCBR
UG9pbnQqIGdsb2JhbFBvc2l0aW9uLCBRdDo6RHJvcEFjdGlvbiogZHJvcEFjdGlvbikKIHsKLSAg
ICBRV2lkZ2V0KiB3aWRnZXQgPSBWaWV3SW50ZXJmYWNlOjpvd25lcldpZGdldChxKTsKKyAgICBR
V2lkZ2V0KiB3aWRnZXQgPSBxLT5jYW52YXMoKTsKICAgICBpZiAoIXdpZGdldCkKICAgICAgICAg
cmV0dXJuOwogCkBAIC04OSw3ICsxMDAsOCBAQCB2b2lkIFFEZXNrdG9wV2ViVmlld1ByaXZhdGU6
OmRpZENoYW5nZVRpdGxlKGNvbnN0IFFTdHJpbmcmIG5ld1RpdGxlKQogCiB2b2lkIFFEZXNrdG9w
V2ViVmlld1ByaXZhdGU6OmRpZENoYW5nZVRvb2xUaXAoY29uc3QgUVN0cmluZyYgbmV3VG9vbFRp
cCkKIHsKLSAgICBxLT5zZXRUb29sVGlwKG5ld1Rvb2xUaXApOworICAgIC8vIEZJWE1FOiBBZGQg
YSBwcm9wZXIgaW1wbGVtZW50YXRpb24gd2hlbiBRdCA1IHN1cHBvcnRzIHRvb2x0aXAuCisgICAg
cS0+Y2FudmFzKCktPnNldFRvb2xUaXAobmV3VG9vbFRpcCk7CiB9CiAKIHZvaWQgUURlc2t0b3BX
ZWJWaWV3UHJpdmF0ZTo6ZGlkQ2hhbmdlU3RhdHVzVGV4dChjb25zdCBRU3RyaW5nJiBuZXdNZXNz
YWdlKQpAQCAtOTksNyArMTExLDggQEAgdm9pZCBRRGVza3RvcFdlYlZpZXdQcml2YXRlOjpkaWRD
aGFuZ2VTdGF0dXNUZXh0KGNvbnN0IFFTdHJpbmcmIG5ld01lc3NhZ2UpCiAKIHZvaWQgUURlc2t0
b3BXZWJWaWV3UHJpdmF0ZTo6ZGlkQ2hhbmdlQ3Vyc29yKGNvbnN0IFFDdXJzb3ImIG5ld0N1cnNv
cikKIHsKLSAgICBxLT5zZXRDdXJzb3IobmV3Q3Vyc29yKTsKKyAgICAvLyBGSVhNRTogYWRkIHBy
b3BlciBjdXJzb3IgaGFuZGxpbmcgd2hlbiBRdCA1IHN1cHBvcnRzIGl0LgorICAgIHEtPmNhbnZh
cygpLT5zZXRDdXJzb3IobmV3Q3Vyc29yKTsKIH0KIAogdm9pZCBRRGVza3RvcFdlYlZpZXdQcml2
YXRlOjpsb2FkRGlkQmVnaW4oKQpAQCAtMTMxLDcgKzE0NCw3IEBAIHZvaWQgUURlc2t0b3BXZWJW
aWV3UHJpdmF0ZTo6c2hvd0NvbnRleHRNZW51KFFTaGFyZWRQb2ludGVyPFFNZW51PiBtZW51KQog
ICAgIGlmIChtZW51LT5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIFFXaWRnZXQq
IHdpZGdldCA9IFZpZXdJbnRlcmZhY2U6Om93bmVyV2lkZ2V0KHEpOworICAgIFFXaWRnZXQqIHdp
ZGdldCA9IHEtPmNhbnZhcygpOwogICAgIGlmICghd2lkZ2V0KQogICAgICAgICByZXR1cm47CiAK
QEAgLTE1MCwyMyArMTYzLDI0IEBAIHZvaWQgUURlc2t0b3BXZWJWaWV3UHJpdmF0ZTo6aGlkZUNv
bnRleHRNZW51KCkKICAgICAgICAgYWN0aXZlTWVudS0+aGlkZSgpOwogfQogCi1RRGVza3RvcFdl
YlZpZXc6OlFEZXNrdG9wV2ViVmlldygpCi0gICAgOiBkKG5ldyBRRGVza3RvcFdlYlZpZXdQcml2
YXRlKHRoaXMpKQorUURlc2t0b3BXZWJWaWV3OjpRRGVza3RvcFdlYlZpZXcoUVNHSXRlbSogcGFy
ZW50KQorICAgIDogUVNHUGFpbnRlZEl0ZW0ocGFyZW50KQorICAgICwgZChuZXcgUURlc2t0b3BX
ZWJWaWV3UHJpdmF0ZSh0aGlzKSkKIHsKICAgICBpbml0KCk7CiB9CiAKLVFEZXNrdG9wV2ViVmll
dzo6UURlc2t0b3BXZWJWaWV3KFdLQ29udGV4dFJlZiBjb250ZXh0UmVmLCBXS1BhZ2VHcm91cFJl
ZiBwYWdlR3JvdXBSZWYpCi0gICAgOiBkKG5ldyBRRGVza3RvcFdlYlZpZXdQcml2YXRlKHRoaXMs
IGNvbnRleHRSZWYsIHBhZ2VHcm91cFJlZikpCitRRGVza3RvcFdlYlZpZXc6OlFEZXNrdG9wV2Vi
VmlldyhXS0NvbnRleHRSZWYgY29udGV4dFJlZiwgV0tQYWdlR3JvdXBSZWYgcGFnZUdyb3VwUmVm
LCBRU0dJdGVtKiBwYXJlbnQpCisgICAgOiBRU0dQYWludGVkSXRlbShwYXJlbnQpCisgICAgLCBk
KG5ldyBRRGVza3RvcFdlYlZpZXdQcml2YXRlKHRoaXMsIGNvbnRleHRSZWYsIHBhZ2VHcm91cFJl
ZikpCiB7CiAgICAgaW5pdCgpOwogfQogCiB2b2lkIFFEZXNrdG9wV2ViVmlldzo6aW5pdCgpCiB7
Ci0gICAgc2V0Rm9jdXNQb2xpY3koUXQ6OlN0cm9uZ0ZvY3VzKTsKKyAgICBzZXRBY2NlcHRlZE1v
dXNlQnV0dG9ucyhRdDo6TW91c2VCdXR0b25NYXNrKTsKICAgICBzZXRBY2NlcHRIb3ZlckV2ZW50
cyh0cnVlKTsKLSAgICBzZXRBY2NlcHREcm9wcyh0cnVlKTsKIH0KIAogUURlc2t0b3BXZWJWaWV3
Ojp+UURlc2t0b3BXZWJWaWV3KCkKQEAgLTE5NCwzMyArMjA4LDEzNiBAQCBRQWN0aW9uKiBRRGVz
a3RvcFdlYlZpZXc6Om5hdmlnYXRpb25BY3Rpb24oUXRXZWJLaXQ6Ok5hdmlnYXRpb25BY3Rpb24g
d2hpY2gpIGNvbgogICAgIHJldHVybiBkLT5wYWdlLm5hdmlnYXRpb25BY3Rpb24od2hpY2gpOwog
fQogCi12b2lkIFFEZXNrdG9wV2ViVmlldzo6cmVzaXplRXZlbnQoUUdyYXBoaWNzU2NlbmVSZXNp
emVFdmVudCogZXYpCitzdGF0aWMgdm9pZCBwYWludENyYXNoZWRQYWdlKFFQYWludGVyKiBwYWlu
dGVyLCBjb25zdCBRUmVjdEYmIHJlY3QpCiB7Ci0gICAgZC0+cGFnZS5zZXREcmF3aW5nQXJlYVNp
emUoZXYtPm5ld1NpemUoKS50b1NpemUoKSk7Ci0gICAgUUdyYXBoaWNzV2lkZ2V0OjpyZXNpemVF
dmVudChldik7CisgICAgcGFpbnRlci0+ZmlsbFJlY3QocmVjdCwgUXQ6OmdyYXkpOworICAgIHBh
aW50ZXItPmRyYXdUZXh0KHJlY3QsIFF0OjpBbGlnbkNlbnRlciwgUUxhdGluMVN0cmluZygiOigi
KSk7CiB9CiAKLXN0YXRpYyB2b2lkIHBhaW50Q3Jhc2hlZFBhZ2UoUVBhaW50ZXIqIHBhaW50ZXIs
IGNvbnN0IFFTdHlsZU9wdGlvbkdyYXBoaWNzSXRlbSogb3B0aW9uKQordm9pZCBRRGVza3RvcFdl
YlZpZXc6OmtleVByZXNzRXZlbnQoUUtleUV2ZW50KiBldmVudCkKIHsKLSAgICBwYWludGVyLT5m
aWxsUmVjdChvcHRpb24tPnJlY3QsIFF0OjpncmF5KTsKLSAgICBwYWludGVyLT5kcmF3VGV4dChv
cHRpb24tPnJlY3QsIFF0OjpBbGlnbkNlbnRlciwgUUxhdGluMVN0cmluZygiOigiKSk7CisgICAg
dGhpcy0+ZXZlbnQoZXZlbnQpOwogfQogCi12b2lkIFFEZXNrdG9wV2ViVmlldzo6cGFpbnQoUVBh
aW50ZXIqIHBhaW50ZXIsIGNvbnN0IFFTdHlsZU9wdGlvbkdyYXBoaWNzSXRlbSogb3B0aW9uLCBR
V2lkZ2V0KikKK3ZvaWQgUURlc2t0b3BXZWJWaWV3OjprZXlSZWxlYXNlRXZlbnQoUUtleUV2ZW50
KiBldmVudCkKIHsKKyAgICB0aGlzLT5ldmVudChldmVudCk7Cit9CisKK3ZvaWQgUURlc2t0b3BX
ZWJWaWV3OjppbnB1dE1ldGhvZEV2ZW50KFFJbnB1dE1ldGhvZEV2ZW50KiBldmVudCkKK3sKKyAg
ICB0aGlzLT5ldmVudChldmVudCk7Cit9CisKK3ZvaWQgUURlc2t0b3BXZWJWaWV3Ojpmb2N1c0lu
RXZlbnQoUUZvY3VzRXZlbnQqIGV2ZW50KQoreworICAgIHRoaXMtPmV2ZW50KGV2ZW50KTsKK30K
Kwordm9pZCBRRGVza3RvcFdlYlZpZXc6OmZvY3VzT3V0RXZlbnQoUUZvY3VzRXZlbnQqIGV2ZW50
KQoreworICAgIHRoaXMtPmV2ZW50KGV2ZW50KTsKK30KKwordm9pZCBRRGVza3RvcFdlYlZpZXc6
Om1vdXNlUHJlc3NFdmVudChRR3JhcGhpY3NTY2VuZU1vdXNlRXZlbnQqIGV2ZW50KQoreworICAg
IHRoaXMtPmV2ZW50KGV2ZW50KTsKK30KKwordm9pZCBRRGVza3RvcFdlYlZpZXc6Om1vdXNlTW92
ZUV2ZW50KFFHcmFwaGljc1NjZW5lTW91c2VFdmVudCogZXZlbnQpCit7CisgICAgdGhpcy0+ZXZl
bnQoZXZlbnQpOworfQorCit2b2lkIFFEZXNrdG9wV2ViVmlldzo6bW91c2VSZWxlYXNlRXZlbnQo
UUdyYXBoaWNzU2NlbmVNb3VzZUV2ZW50KiBldmVudCkKK3sKKyAgICB0aGlzLT5ldmVudChldmVu
dCk7Cit9CisKK3ZvaWQgUURlc2t0b3BXZWJWaWV3Ojptb3VzZURvdWJsZUNsaWNrRXZlbnQoUUdy
YXBoaWNzU2NlbmVNb3VzZUV2ZW50KiBldmVudCkKK3sKKyAgICB0aGlzLT5ldmVudChldmVudCk7
Cit9CisKK3ZvaWQgUURlc2t0b3BXZWJWaWV3Ojp3aGVlbEV2ZW50KFFXaGVlbEV2ZW50KiBldmVu
dCkKK3sKKyAgICAvLyBGSVhNRTogZm9yIHNvbWUgcmVhc29uLCB0aGUgc2NlbmUgZ3JhcGggZGVs
aXZlcnMgUVdoZWVsRXZlbnQgaW5zdGVhZCBvZiBRR3JhcGhpY3NTY2VuZVdoZWVsRXZlbnQuCisg
ICAgLy8gV2UgdHJhbnNmb3JtIHRoZW0gaW4gUUdyYXBoaWNzU2NlbmVXaGVlbEV2ZW50IGZvciBj
b25zaXN0ZW5jeS4gT3RoZXJ3aXNlIHRoZSBwb3NpdGlvbiB3b3VsZCBiZSBjb21wbGV0ZSBtYWdp
Yy4KKyAgICAvLyBXZSBzaG91ZCBtb2RpZnkgdGhlIHNjZW5lZ3JhcGggdG8gZ2V0IHRoZSBjb3Jy
ZWN0IHR5cGUgb2YgZXZlbnRzLgorICAgIFFHcmFwaGljc1NjZW5lV2hlZWxFdmVudCBncmFwaGlj
c0V2ZW50KFFFdmVudDo6R3JhcGhpY3NTY2VuZVdoZWVsKTsKKyAgICBncmFwaGljc0V2ZW50LnNl
dFBvcyhldmVudC0+cG9zKCkpOworICAgIGdyYXBoaWNzRXZlbnQuc2V0QnV0dG9ucyhldmVudC0+
YnV0dG9ucygpKTsKKyAgICBncmFwaGljc0V2ZW50LnNldERlbHRhKGV2ZW50LT5kZWx0YSgpKTsK
KyAgICBncmFwaGljc0V2ZW50LnNldE1vZGlmaWVycyhldmVudC0+bW9kaWZpZXJzKCkpOworICAg
IGdyYXBoaWNzRXZlbnQuc2V0T3JpZW50YXRpb24oZXZlbnQtPm9yaWVudGF0aW9uKCkpOworICAg
IGdyYXBoaWNzRXZlbnQuc2V0U2NlbmVQb3MobWFwVG9TY2VuZShldmVudC0+cG9zKCkpKTsKKyAg
ICBncmFwaGljc0V2ZW50LnNldFNjcmVlblBvcyhldmVudC0+Z2xvYmFsUG9zKCkpOworICAgIHRo
aXMtPmV2ZW50KCZncmFwaGljc0V2ZW50KTsKK30KKwordm9pZCBRRGVza3RvcFdlYlZpZXc6OnRv
dWNoRXZlbnQoUVRvdWNoRXZlbnQqIGV2ZW50KQoreworICAgIHRoaXMtPmV2ZW50KGV2ZW50KTsK
K30KKwordm9pZCBRRGVza3RvcFdlYlZpZXc6OmhvdmVyRW50ZXJFdmVudChRSG92ZXJFdmVudCog
ZXZlbnQpCit7CisgICAgdGhpcy0+ZXZlbnQoZXZlbnQpOworfQorCit2b2lkIFFEZXNrdG9wV2Vi
Vmlldzo6aG92ZXJNb3ZlRXZlbnQoUUhvdmVyRXZlbnQqIGV2ZW50KQoreworICAgIHRoaXMtPmV2
ZW50KGV2ZW50KTsKK30KKwordm9pZCBRRGVza3RvcFdlYlZpZXc6OmhvdmVyTGVhdmVFdmVudChR
SG92ZXJFdmVudCogZXZlbnQpCit7CisgICAgdGhpcy0+ZXZlbnQoZXZlbnQpOworfQorCit2b2lk
IFFEZXNrdG9wV2ViVmlldzo6ZHJhZ01vdmVFdmVudChRU0dEcmFnRXZlbnQqIGV2ZW50KQorewor
ICAgIHRoaXMtPmV2ZW50KGV2ZW50KTsKK30KKwordm9pZCBRRGVza3RvcFdlYlZpZXc6OmRyYWdF
bnRlckV2ZW50KFFTR0RyYWdFdmVudCogZXZlbnQpCit7CisgICAgdGhpcy0+ZXZlbnQoZXZlbnQp
OworfQorCit2b2lkIFFEZXNrdG9wV2ViVmlldzo6ZHJhZ0V4aXRFdmVudChRU0dEcmFnRXZlbnQq
IGV2ZW50KQoreworICAgIHRoaXMtPmV2ZW50KGV2ZW50KTsKK30KKwordm9pZCBRRGVza3RvcFdl
YlZpZXc6OmRyYWdEcm9wRXZlbnQoUVNHRHJhZ0V2ZW50KiBldmVudCkKK3sKKyAgICB0aGlzLT5l
dmVudChldmVudCk7Cit9CisKK3ZvaWQgUURlc2t0b3BXZWJWaWV3OjpnZW9tZXRyeUNoYW5nZWQo
Y29uc3QgUVJlY3RGJiBuZXdHZW9tZXRyeSwgY29uc3QgUVJlY3RGJiBvbGRHZW9tZXRyeSkKK3sK
KyAgICBRU0dQYWludGVkSXRlbTo6Z2VvbWV0cnlDaGFuZ2VkKG5ld0dlb21ldHJ5LCBvbGRHZW9t
ZXRyeSk7CisgICAgaWYgKG5ld0dlb21ldHJ5LnNpemUoKSAhPSBvbGRHZW9tZXRyeS5zaXplKCkp
CisgICAgICAgIGQtPnBhZ2Uuc2V0RHJhd2luZ0FyZWFTaXplKG5ld0dlb21ldHJ5LnNpemUoKS50
b1NpemUoKSk7Cit9CisKK3ZvaWQgUURlc2t0b3BXZWJWaWV3OjpwYWludChRUGFpbnRlciogcGFp
bnRlcikKK3sKKyAgICBjb25zdCBRUmVjdEYgcmVjdCA9IGJvdW5kaW5nUmVjdCgpOwogICAgIGlm
IChkLT5pc0NyYXNoZWQpIHsKLSAgICAgICAgcGFpbnRDcmFzaGVkUGFnZShwYWludGVyLCBvcHRp
b24pOworICAgICAgICBwYWludENyYXNoZWRQYWdlKHBhaW50ZXIsIHJlY3QpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCi0gICAgZC0+cGFnZS5wYWludChwYWludGVyLCBvcHRpb24tPmV4cG9z
ZWRSZWN0LnRvQWxpZ25lZFJlY3QoKSk7CisgICAgZC0+cGFnZS5wYWludChwYWludGVyLCByZWN0
LnRvQWxpZ25lZFJlY3QoKSk7CiB9CiAKIGJvb2wgUURlc2t0b3BXZWJWaWV3OjpldmVudChRRXZl
bnQqIGV2KQogewogICAgIGlmIChkLT5wYWdlLmhhbmRsZUV2ZW50KGV2KSkKICAgICAgICAgcmV0
dXJuIHRydWU7Ci0gICAgcmV0dXJuIFFHcmFwaGljc1dpZGdldDo6ZXZlbnQoZXYpOworICAgIHJl
dHVybiBRU0dJdGVtOjpldmVudChldik7CiB9CiAKIFdLUGFnZVJlZiBRRGVza3RvcFdlYlZpZXc6
OnBhZ2VSZWYoKSBjb25zdApAQCAtMjM5LDMgKzM1Niw1IEBAIHZvaWQgUURlc2t0b3BXZWJWaWV3
UHJpdmF0ZTo6ZGlkUmVsYXVuY2hQcm9jZXNzKCkKICAgICBpc0NyYXNoZWQgPSBmYWxzZTsKICAg
ICBxLT51cGRhdGUoKTsKIH0KKworI2luY2x1ZGUgIm1vY19xZGVza3RvcHdlYnZpZXcuY3BwIgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xZGVza3RvcHdlYnZp
ZXcuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcWRlc2t0b3B3ZWJ2aWV3LmgK
aW5kZXggYTZlMjBhYTg2ZjNkMTlkYmUzNGZlYjdiOTAzY2FjZmFkYWI5ZTk0Yi4uZWVhODNlM2M1
NjI3ZGU4YWVjOGEwMTI0ZTlhNTk5YWE3NjRkMjcyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9xdC9xZGVza3RvcHdlYnZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL3F0L3FkZXNrdG9wd2Vidmlldy5oCkBAIC0yMywyNSArMjMsMzkgQEAK
IAogI2luY2x1ZGUgInF3ZWJraXRnbG9iYWwuaCIKICNpbmNsdWRlICJxd2Via2l0dHlwZXMuaCIK
KyNpbmNsdWRlIDxRVXJsPgorI2luY2x1ZGUgPFF0RGVjbGFyYXRpdmUvcXNncGFpbnRlZGl0ZW0u
aD4KICNpbmNsdWRlIDxXZWJLaXQyL1dLQmFzZS5oPgogCi0jaW5jbHVkZSA8UUdyYXBoaWNzV2lk
Z2V0PgotI2luY2x1ZGUgPFFVcmw+CisKKyNpbmNsdWRlIDxzdGRpby5oPgogCiBjbGFzcyBRRGVz
a3RvcFdlYlZpZXdQcml2YXRlOwogY2xhc3MgUVdlYkVycm9yOworUVRfQkVHSU5fTkFNRVNQQUNF
CitjbGFzcyBRRm9jdXNFdmVudDsKK2NsYXNzIFFHcmFwaGljc1NjZW5lTW91c2VFdmVudDsKK2Ns
YXNzIFFIb3ZlckV2ZW50OworY2xhc3MgUUlucHV0TWV0aG9kRXZlbnQ7CitjbGFzcyBRS2V5RXZl
bnQ7CitjbGFzcyBRUGFpbnRlcjsKK2NsYXNzIFFSZWN0RjsKK2NsYXNzIFFTR0RyYWdFdmVudDsK
K2NsYXNzIFFUb3VjaEV2ZW50OworY2xhc3MgUVdoZWVsRXZlbnQ7CitRVF9FTkRfTkFNRVNQQUNF
CiAKIG5hbWVzcGFjZSBXVFIgewogICAgIGNsYXNzIFdlYlZpZXc7CiB9CiAKLWNsYXNzIFFXRUJL
SVRfRVhQT1JUIFFEZXNrdG9wV2ViVmlldyA6IHB1YmxpYyBRR3JhcGhpY3NXaWRnZXQgeworY2xh
c3MgUVdFQktJVF9FWFBPUlQgUURlc2t0b3BXZWJWaWV3IDogcHVibGljIFFTR1BhaW50ZWRJdGVt
IHsKICAgICBRX09CSkVDVAogICAgIFFfUFJPUEVSVFkoUVN0cmluZyB0aXRsZSBSRUFEIHRpdGxl
IE5PVElGWSB0aXRsZUNoYW5nZWQpCiAgICAgUV9QUk9QRVJUWShRVXJsIHVybCBSRUFEIHVybCBO
T1RJRlkgdXJsQ2hhbmdlZCkKIAogcHVibGljOgotICAgIFFEZXNrdG9wV2ViVmlldygpOworICAg
IFFEZXNrdG9wV2ViVmlldyhRU0dJdGVtKiBwYXJlbnQgPSAwKTsKICAgICB2aXJ0dWFsIH5RRGVz
a3RvcFdlYlZpZXcoKTsKIAogICAgIFFVcmwgdXJsKCkgY29uc3Q7CkBAIC02MiwxMyArNzYsMzEg
QEAgUV9TSUdOQUxTOgogICAgIHZvaWQgdXJsQ2hhbmdlZChjb25zdCBRVXJsJik7CiAKIHByb3Rl
Y3RlZDoKLSAgICB2b2lkIHJlc2l6ZUV2ZW50KFFHcmFwaGljc1NjZW5lUmVzaXplRXZlbnQqKTsK
LSAgICB2b2lkIHBhaW50KFFQYWludGVyKiwgY29uc3QgUVN0eWxlT3B0aW9uR3JhcGhpY3NJdGVt
KiwgUVdpZGdldCopOwotCisgICAgdmlydHVhbCB2b2lkIGtleVByZXNzRXZlbnQoUUtleUV2ZW50
Kik7CisgICAgdmlydHVhbCB2b2lkIGtleVJlbGVhc2VFdmVudChRS2V5RXZlbnQqKTsKKyAgICB2
aXJ0dWFsIHZvaWQgaW5wdXRNZXRob2RFdmVudChRSW5wdXRNZXRob2RFdmVudCopOworICAgIHZp
cnR1YWwgdm9pZCBmb2N1c0luRXZlbnQoUUZvY3VzRXZlbnQqKTsKKyAgICB2aXJ0dWFsIHZvaWQg
Zm9jdXNPdXRFdmVudChRRm9jdXNFdmVudCopOworICAgIHZpcnR1YWwgdm9pZCBtb3VzZVByZXNz
RXZlbnQoUUdyYXBoaWNzU2NlbmVNb3VzZUV2ZW50Kik7CisgICAgdmlydHVhbCB2b2lkIG1vdXNl
TW92ZUV2ZW50KFFHcmFwaGljc1NjZW5lTW91c2VFdmVudCopOworICAgIHZpcnR1YWwgdm9pZCBt
b3VzZVJlbGVhc2VFdmVudChRR3JhcGhpY3NTY2VuZU1vdXNlRXZlbnQqKTsKKyAgICB2aXJ0dWFs
IHZvaWQgbW91c2VEb3VibGVDbGlja0V2ZW50KFFHcmFwaGljc1NjZW5lTW91c2VFdmVudCopOwor
ICAgIHZpcnR1YWwgdm9pZCB3aGVlbEV2ZW50KFFXaGVlbEV2ZW50Kik7CisgICAgdmlydHVhbCB2
b2lkIHRvdWNoRXZlbnQoUVRvdWNoRXZlbnQqKTsKKyAgICB2aXJ0dWFsIHZvaWQgaG92ZXJFbnRl
ckV2ZW50KFFIb3ZlckV2ZW50Kik7CisgICAgdmlydHVhbCB2b2lkIGhvdmVyTW92ZUV2ZW50KFFI
b3ZlckV2ZW50Kik7CisgICAgdmlydHVhbCB2b2lkIGhvdmVyTGVhdmVFdmVudChRSG92ZXJFdmVu
dCopOworICAgIHZpcnR1YWwgdm9pZCBkcmFnTW92ZUV2ZW50KFFTR0RyYWdFdmVudCopOworICAg
IHZpcnR1YWwgdm9pZCBkcmFnRW50ZXJFdmVudChRU0dEcmFnRXZlbnQqKTsKKyAgICB2aXJ0dWFs
IHZvaWQgZHJhZ0V4aXRFdmVudChRU0dEcmFnRXZlbnQqKTsKKyAgICB2aXJ0dWFsIHZvaWQgZHJh
Z0Ryb3BFdmVudChRU0dEcmFnRXZlbnQqKTsKKworICAgIHZpcnR1YWwgdm9pZCBnZW9tZXRyeUNo
YW5nZWQoY29uc3QgUVJlY3RGJiwgY29uc3QgUVJlY3RGJik7CisgICAgdm9pZCBwYWludChRUGFp
bnRlciopOwogICAgIHZpcnR1YWwgYm9vbCBldmVudChRRXZlbnQqKTsKIAogcHJpdmF0ZToKLSAg
ICBRRGVza3RvcFdlYlZpZXcoV0tDb250ZXh0UmVmLCBXS1BhZ2VHcm91cFJlZik7CisgICAgUURl
c2t0b3BXZWJWaWV3KFdLQ29udGV4dFJlZiwgV0tQYWdlR3JvdXBSZWYsIFFTR0l0ZW0qIHBhcmVu
dCA9IDApOwogICAgIFdLUGFnZVJlZiBwYWdlUmVmKCkgY29uc3Q7CiAKICAgICB2b2lkIGluaXQo
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXRvdWNod2Vi
cGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F0b3VjaHdlYnBhZ2Uu
Y3BwCmluZGV4IDBiZGM0Y2YyZmNhNGJlNTg4MzBlYmUyMDU0YjU4ZjlmNWFkN2E4M2QuLjRkNjJl
ODliYWUxZWQxZjY1Yjc4YzY3M2U5ZTIxYjljZWRkNWQ0MzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXRvdWNod2VicGFnZS5jcHAKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xdG91Y2h3ZWJwYWdlLmNwcApAQCAtMjUsMjAgKzI1LDE0
IEBACiAKICNpbmNsdWRlIDxRQXBwbGljYXRpb24+CiAjaW5jbHVkZSA8UUdyYXBoaWNzU2NlbmVN
b3VzZUV2ZW50PgotI2luY2x1ZGUgPFFHcmFwaGljc1ZpZXc+CiAjaW5jbHVkZSA8UVBhaW50ZXI+
Ci0jaW5jbHVkZSA8UVNjcm9sbEJhcj4KLSNpbmNsdWRlIDxRU3R5bGVPcHRpb25HcmFwaGljc0l0
ZW0+CiAjaW5jbHVkZSA8UVVybD4KICNpbmNsdWRlIDxRdERlYnVnPgogCi1RVG91Y2hXZWJQYWdl
OjpRVG91Y2hXZWJQYWdlKFFHcmFwaGljc0l0ZW0qIHBhcmVudCkKLSAgICA6IFFHcmFwaGljc1dp
ZGdldChwYXJlbnQpCitRVG91Y2hXZWJQYWdlOjpRVG91Y2hXZWJQYWdlKFFTR0l0ZW0qIHBhcmVu
dCkKKyAgICA6IFFTR1BhaW50ZWRJdGVtKHBhcmVudCkKICAgICAsIGQobmV3IFFUb3VjaFdlYlBh
Z2VQcml2YXRlKHRoaXMpKQogewotICAgIHNldEZvY3VzUG9saWN5KFF0OjpUYWJGb2N1cyk7Ci0g
ICAgc2V0QWNjZXB0VG91Y2hFdmVudHModHJ1ZSk7Ci0KICAgICBjb25uZWN0KHRoaXMsIFNJR05B
TChzY2FsZUNoYW5nZWQoKSksIHRoaXMsIFNMT1Qob25TY2FsZUNoYW5nZWQoKSkpOwogfQogCkBA
IC00Nyw5ICs0MSw5IEBAIFFUb3VjaFdlYlBhZ2U6On5RVG91Y2hXZWJQYWdlKCkKICAgICBkZWxl
dGUgZDsKIH0KIAotdm9pZCBRVG91Y2hXZWJQYWdlOjpwYWludChRUGFpbnRlciogcGFpbnRlciwg
Y29uc3QgUVN0eWxlT3B0aW9uR3JhcGhpY3NJdGVtKiBvcHRpb24sIFFXaWRnZXQqKQordm9pZCBR
VG91Y2hXZWJQYWdlOjpwYWludChRUGFpbnRlciogcGFpbnRlcikKIHsKLSAgICBkLT5wYWdlLT5w
YWludChwYWludGVyLCBvcHRpb24tPmV4cG9zZWRSZWN0LnRvQWxpZ25lZFJlY3QoKSk7CisgICAg
ZC0+cGFnZS0+cGFpbnQocGFpbnRlciwgYm91bmRpbmdSZWN0KCkudG9BbGlnbmVkUmVjdCgpKTsK
IH0KIAogdm9pZCBRVG91Y2hXZWJQYWdlOjpsb2FkKGNvbnN0IFFVcmwmIHVybCkKQEAgLTg0LDcg
Kzc4LDM3IEBAIGJvb2wgUVRvdWNoV2ViUGFnZTo6ZXZlbnQoUUV2ZW50KiBldikKIAogICAgIGlm
IChkLT5wYWdlLT5oYW5kbGVFdmVudChldikpCiAgICAgICAgIHJldHVybiB0cnVlOwotICAgIHJl
dHVybiBRR3JhcGhpY3NXaWRnZXQ6OmV2ZW50KGV2KTsKKyAgICByZXR1cm4gUVNHUGFpbnRlZEl0
ZW06OmV2ZW50KGV2KTsKK30KKwordm9pZCBRVG91Y2hXZWJQYWdlOjprZXlQcmVzc0V2ZW50KFFL
ZXlFdmVudCogZXZlbnQpCit7CisgICAgdGhpcy0+ZXZlbnQoZXZlbnQpOworfQorCit2b2lkIFFU
b3VjaFdlYlBhZ2U6OmtleVJlbGVhc2VFdmVudChRS2V5RXZlbnQqIGV2ZW50KQoreworICAgIHRo
aXMtPmV2ZW50KGV2ZW50KTsKK30KKwordm9pZCBRVG91Y2hXZWJQYWdlOjppbnB1dE1ldGhvZEV2
ZW50KFFJbnB1dE1ldGhvZEV2ZW50KiBldmVudCkKK3sKKyAgICB0aGlzLT5ldmVudChldmVudCk7
Cit9CisKK3ZvaWQgUVRvdWNoV2ViUGFnZTo6Zm9jdXNJbkV2ZW50KFFGb2N1c0V2ZW50KiBldmVu
dCkKK3sKKyAgICB0aGlzLT5ldmVudChldmVudCk7Cit9CisKK3ZvaWQgUVRvdWNoV2ViUGFnZTo6
Zm9jdXNPdXRFdmVudChRRm9jdXNFdmVudCogZXZlbnQpCit7CisgICAgdGhpcy0+ZXZlbnQoZXZl
bnQpOworfQorCit2b2lkIFFUb3VjaFdlYlBhZ2U6OnRvdWNoRXZlbnQoUVRvdWNoRXZlbnQqIGV2
ZW50KQoreworICAgIHRoaXMtPmV2ZW50KGV2ZW50KTsKIH0KIAogdm9pZCBRVG91Y2hXZWJQYWdl
Ojp0aW1lckV2ZW50KFFUaW1lckV2ZW50KiBldikKQEAgLTkzLDEwICsxMTcsMTEgQEAgdm9pZCBR
VG91Y2hXZWJQYWdlOjp0aW1lckV2ZW50KFFUaW1lckV2ZW50KiBldikKICAgICAgICAgZC0+Y29t
bWl0U2NhbGVDaGFuZ2UoKTsKIH0KIAotdm9pZCBRVG91Y2hXZWJQYWdlOjpyZXNpemVFdmVudChR
R3JhcGhpY3NTY2VuZVJlc2l6ZUV2ZW50KiBldikKK3ZvaWQgUVRvdWNoV2ViUGFnZTo6Z2VvbWV0
cnlDaGFuZ2VkKGNvbnN0IFFSZWN0RiYgbmV3R2VvbWV0cnksIGNvbnN0IFFSZWN0RiYgb2xkR2Vv
bWV0cnkpCiB7Ci0gICAgZC0+cGFnZS0+c2V0RHJhd2luZ0FyZWFTaXplKGV2LT5uZXdTaXplKCku
dG9TaXplKCkpOwotICAgIFFHcmFwaGljc1dpZGdldDo6cmVzaXplRXZlbnQoZXYpOworICAgIFFT
R1BhaW50ZWRJdGVtOjpnZW9tZXRyeUNoYW5nZWQobmV3R2VvbWV0cnksIG9sZEdlb21ldHJ5KTsK
KyAgICBpZiAobmV3R2VvbWV0cnkuc2l6ZSgpICE9IG9sZEdlb21ldHJ5LnNpemUoKSkKKyAgICAg
ICAgZC0+cGFnZS0+c2V0RHJhd2luZ0FyZWFTaXplKG5ld0dlb21ldHJ5LnNpemUoKS50b1NpemUo
KSk7CiB9CiAKIFFBY3Rpb24qIFFUb3VjaFdlYlBhZ2U6Om5hdmlnYXRpb25BY3Rpb24oUXRXZWJL
aXQ6Ok5hdmlnYXRpb25BY3Rpb24gd2hpY2gpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL3F0L3F0b3VjaHdlYnBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvcXQvcXRvdWNod2VicGFnZS5oCmluZGV4IDg5ZjQzZjNkNzc0ZWY2YTFlNTAwNjg4MDg2
N2MwN2ZkYzMyODA5OTUuLjkzZDcyOWZjNDk1OTdmMmE4NjkzZTRhNTE3YmFmNmRiZGUyYjg5ZTgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXRvdWNod2VicGFn
ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXRvdWNod2VicGFnZS5o
CkBAIC0yNCw3ICsyNCw3IEBACiAjaW5jbHVkZSAicXdlYmtpdGdsb2JhbC5oIgogI2luY2x1ZGUg
InF3ZWJraXR0eXBlcy5oIgogCi0jaW5jbHVkZSA8UUdyYXBoaWNzV2lkZ2V0PgorI2luY2x1ZGUg
PFF0RGVjbGFyYXRpdmUvcXNncGFpbnRlZGl0ZW0uaD4KICNpbmNsdWRlIDxRU2hhcmVkUG9pbnRl
cj4KIAogY2xhc3MgUVRvdWNoV2ViUGFnZVByaXZhdGU7CkBAIC0zNSwxMyArMzUsMTMgQEAgbmFt
ZXNwYWNlIFdlYktpdCB7CiAgICAgY2xhc3MgVG91Y2hWaWV3SW50ZXJmYWNlOwogfQogCi1jbGFz
cyBRV0VCS0lUX0VYUE9SVCBRVG91Y2hXZWJQYWdlIDogcHVibGljIFFHcmFwaGljc1dpZGdldCB7
CitjbGFzcyBRV0VCS0lUX0VYUE9SVCBRVG91Y2hXZWJQYWdlIDogcHVibGljIFFTR1BhaW50ZWRJ
dGVtIHsKICAgICBRX09CSkVDVAogICAgIFFfUFJPUEVSVFkoUVN0cmluZyB0aXRsZSBSRUFEIHRp
dGxlIE5PVElGWSB0aXRsZUNoYW5nZWQpCiAgICAgUV9QUk9QRVJUWShRVXJsIHVybCBSRUFEIHVy
bCBOT1RJRlkgdXJsQ2hhbmdlZCkKIAogcHVibGljOgotICAgIFFUb3VjaFdlYlBhZ2UoUUdyYXBo
aWNzSXRlbSogcGFyZW50ID0gMCk7CisgICAgUVRvdWNoV2ViUGFnZShRU0dJdGVtKiBwYXJlbnQg
PSAwKTsKIAogICAgIHZpcnR1YWwgflFUb3VjaFdlYlBhZ2UoKTsKIApAQCAtNTIsNyArNTIsNyBA
QCBwdWJsaWM6CiAKICAgICBRQWN0aW9uKiBuYXZpZ2F0aW9uQWN0aW9uKFF0V2ViS2l0OjpOYXZp
Z2F0aW9uQWN0aW9uIHdoaWNoKTsKIAotICAgIHZpcnR1YWwgdm9pZCBwYWludChRUGFpbnRlcios
IGNvbnN0IFFTdHlsZU9wdGlvbkdyYXBoaWNzSXRlbSosIFFXaWRnZXQqKTsKKyAgICB2aXJ0dWFs
IHZvaWQgcGFpbnQoUVBhaW50ZXIqKTsKICAgICB2aXJ0dWFsIGJvb2wgZXZlbnQoUUV2ZW50Kik7
CiAKIFFfU0lHTkFMUzoKQEAgLTY0LDggKzY0LDE1IEBAIFFfU0lHTkFMUzoKICAgICB2b2lkIGxv
YWRQcm9ncmVzcyhpbnQgcHJvZ3Jlc3MpOwogCiBwcm90ZWN0ZWQ6CisgICAgdmlydHVhbCB2b2lk
IGtleVByZXNzRXZlbnQoUUtleUV2ZW50Kik7CisgICAgdmlydHVhbCB2b2lkIGtleVJlbGVhc2VF
dmVudChRS2V5RXZlbnQqKTsKKyAgICB2aXJ0dWFsIHZvaWQgaW5wdXRNZXRob2RFdmVudChRSW5w
dXRNZXRob2RFdmVudCopOworICAgIHZpcnR1YWwgdm9pZCBmb2N1c0luRXZlbnQoUUZvY3VzRXZl
bnQqKTsKKyAgICB2aXJ0dWFsIHZvaWQgZm9jdXNPdXRFdmVudChRRm9jdXNFdmVudCopOworICAg
IHZpcnR1YWwgdm9pZCB0b3VjaEV2ZW50KFFUb3VjaEV2ZW50Kik7CiAgICAgdmlydHVhbCB2b2lk
IHRpbWVyRXZlbnQoUVRpbWVyRXZlbnQqKTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVzaXplRXZlbnQo
UUdyYXBoaWNzU2NlbmVSZXNpemVFdmVudCopOworCisgICAgdmlydHVhbCB2b2lkIGdlb21ldHJ5
Q2hhbmdlZChjb25zdCBRUmVjdEYmLCBjb25zdCBRUmVjdEYmKTsKIAogcHJpdmF0ZToKICAgICBR
X1BSSVZBVEVfU0xPVChkLCB2b2lkIG9uU2NhbGVDaGFuZ2VkKCkpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F0b3VjaHdlYnZpZXcuY3BwIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xdG91Y2h3ZWJ2aWV3LmNwcAppbmRleCA3NTk2NWQ3NWM3
YzY5ODVlYTJlYzZjM2ZmNmFjN2Q1NGQ5NGMzYTM4Li5jMWJlNWFiNWFiMWIxZjUyMDgyMDcyYjg3
MzVkNjkzZDkzYjEzYmQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L3F0L3F0b3VjaHdlYnZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
cXQvcXRvdWNod2Vidmlldy5jcHAKQEAgLTM5LDcgKzM5LDggQEAgUVRvdWNoV2ViVmlld1ByaXZh
dGU6OlFUb3VjaFdlYlZpZXdQcml2YXRlKFFUb3VjaFdlYlZpZXcqIHEpCiAKIHZvaWQgUVRvdWNo
V2ViVmlld1ByaXZhdGU6OnNjcm9sbChxcmVhbCBkZWx0YVgsIHFyZWFsIGRlbHRhWSkKIHsKLSAg
ICBwYWdlVmlldy0+bW92ZUJ5KGRlbHRhWCwgZGVsdGFZKTsKKyAgICBwYWdlVmlldy0+c2V0WChw
YWdlVmlldy0+eCgpICsgZGVsdGFYKTsKKyAgICBwYWdlVmlldy0+c2V0WShwYWdlVmlldy0+eSgp
ICsgZGVsdGFZKTsKICAgICB2aWV3cG9ydFJlY3RVcGRhdGVkKCk7CiB9CiAKQEAgLTUwLDEwICs1
MSwxMSBAQCB2b2lkIFFUb3VjaFdlYlZpZXdQcml2YXRlOjp2aWV3cG9ydFJlY3RVcGRhdGVkKCkK
ICAgICBwYWdlVmlld1ByaXZhdGUtPnNldFZpZXdwb3J0UmVjdCh2aWV3cG9ydFJlY3RJblBhZ2VW
aWV3Q29vcmRpbmF0ZSk7CiB9CiAKLVFUb3VjaFdlYlZpZXc6OlFUb3VjaFdlYlZpZXcoKQotICAg
IDogZChuZXcgUVRvdWNoV2ViVmlld1ByaXZhdGUodGhpcykpCitRVG91Y2hXZWJWaWV3OjpRVG91
Y2hXZWJWaWV3KFFTR0l0ZW0qIHBhcmVudCkKKyAgICA6IFFTR0l0ZW0ocGFyZW50KQorICAgICwg
ZChuZXcgUVRvdWNoV2ViVmlld1ByaXZhdGUodGhpcykpCiB7Ci0gICAgc2V0RmxhZ3MoUUdyYXBo
aWNzSXRlbTo6SXRlbUNsaXBzQ2hpbGRyZW5Ub1NoYXBlKTsKKyAgICBzZXRGbGFncyhRU0dJdGVt
OjpJdGVtQ2xpcHNDaGlsZHJlblRvU2hhcGUpOwogfQogCiBRVG91Y2hXZWJWaWV3Ojp+UVRvdWNo
V2ViVmlldygpCkBAIC02Niw4ICs2OCwxMSBAQCBRVG91Y2hXZWJQYWdlKiBRVG91Y2hXZWJWaWV3
OjpwYWdlKCkKICAgICByZXR1cm4gZC0+cGFnZVZpZXcuZGF0YSgpOwogfQogCi12b2lkIFFUb3Vj
aFdlYlZpZXc6OnJlc2l6ZUV2ZW50KFFHcmFwaGljc1NjZW5lUmVzaXplRXZlbnQqIGV2ZW50KQor
dm9pZCBRVG91Y2hXZWJWaWV3OjpnZW9tZXRyeUNoYW5nZWQoY29uc3QgUVJlY3RGJiBuZXdHZW9t
ZXRyeSwgY29uc3QgUVJlY3RGJiBvbGRHZW9tZXRyeSkKIHsKLSAgICBRR3JhcGhpY3NXaWRnZXQ6
OnJlc2l6ZUV2ZW50KGV2ZW50KTsKLSAgICBkLT52aWV3cG9ydFJlY3RVcGRhdGVkKCk7CisgICAg
UVNHSXRlbTo6Z2VvbWV0cnlDaGFuZ2VkKG5ld0dlb21ldHJ5LCBvbGRHZW9tZXRyeSk7CisgICAg
aWYgKG5ld0dlb21ldHJ5LnNpemUoKSAhPSBvbGRHZW9tZXRyeS5zaXplKCkpCisgICAgICAgIGQt
PnZpZXdwb3J0UmVjdFVwZGF0ZWQoKTsKIH0KKworI2luY2x1ZGUgIm1vY19xdG91Y2h3ZWJ2aWV3
LmNwcCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXRvdWNo
d2Vidmlldy5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xdG91Y2h3ZWJ2aWV3
LmgKaW5kZXggMDM4NTgwZTlkNTM0MjNjNjljYWYwNTYxNTBlMGZlNzRmYTdiYzJlZi4uNmVhY2Jk
NDIwN2Q0YjJlMGUwNjdkODQ0NjcxOTk5NTk5YzNhMDYxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xdG91Y2h3ZWJ2aWV3LmgKKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9xdC9xdG91Y2h3ZWJ2aWV3LmgKQEAgLTIzLDcgKzIzLDcgQEAKIAog
I2luY2x1ZGUgInF3ZWJraXRnbG9iYWwuaCIKIAotI2luY2x1ZGUgPFFHcmFwaGljc1dpZGdldD4K
KyNpbmNsdWRlIDxRdERlY2xhcmF0aXZlL3FzZ2l0ZW0uaD4KIAogY2xhc3MgUVRvdWNoV2ViUGFn
ZTsKIGNsYXNzIFFUb3VjaFdlYlZpZXdQcml2YXRlOwpAQCAtMzIsMTkgKzMyLDE5IEBAIG5hbWVz
cGFjZSBXZWJLaXQgewogY2xhc3MgVG91Y2hWaWV3SW50ZXJmYWNlOwogfQogCi1jbGFzcyBRV0VC
S0lUX0VYUE9SVCBRVG91Y2hXZWJWaWV3IDogcHVibGljIFFHcmFwaGljc1dpZGdldAorY2xhc3Mg
UVdFQktJVF9FWFBPUlQgUVRvdWNoV2ViVmlldyA6IHB1YmxpYyBRU0dJdGVtCiB7CiAgICAgUV9P
QkpFQ1QKICAgICBRX1BST1BFUlRZKFFUb3VjaFdlYlBhZ2UqIHBhZ2UgUkVBRCBwYWdlKQogCiBw
dWJsaWM6Ci0gICAgUVRvdWNoV2ViVmlldygpOworICAgIFFUb3VjaFdlYlZpZXcoUVNHSXRlbSog
cGFyZW50ID0gMCk7CiAgICAgflFUb3VjaFdlYlZpZXcoKTsKIAogICAgIFFUb3VjaFdlYlBhZ2Ug
KnBhZ2UoKTsKIAogcHJvdGVjdGVkOgotICAgIHZvaWQgcmVzaXplRXZlbnQoUUdyYXBoaWNzU2Nl
bmVSZXNpemVFdmVudCopOworICAgIHZpcnR1YWwgdm9pZCBnZW9tZXRyeUNoYW5nZWQoY29uc3Qg
UVJlY3RGJiwgY29uc3QgUVJlY3RGJik7CiAKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIFdl
YktpdDo6VG91Y2hWaWV3SW50ZXJmYWNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9xdC90ZXN0cy90ZXN0cy5wcmkgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL3F0L3Rlc3RzL3Rlc3RzLnByaQppbmRleCAyOTMyZTFjNjNlZTU5MjViOGEwYzc4NDYyYzIy
OWYzYjNlMWIxYzk3Li5jZjZhNWYxOThlNGU3MDliYTFhOGM1Yzg5NGJkOGQwYzE3YzY1Yzk5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL3Rlc3RzLnBy
aQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL3Rlc3RzLnByaQpA
QCAtMTAsNyArMTAsNyBAQCBTT1VSQ0VTICs9ICQke1RBUkdFVH0uY3BwCiBJTkNMVURFUEFUSCAr
PSAkJFBXRAogCiBpbmNsdWRlKC4uLy4uLy4uLy4uLy4uL1dlYktpdC5wcmkpCi1RVCArPSB0ZXN0
bGliCitRVCArPSB0ZXN0bGliIGRlY2xhcmF0aXZlCiAKIFFNQUtFX1JQQVRIRElSID0gJCRPVVRQ
VVRfRElSL2xpYiAkJFFNQUtFX1JQQVRIRElSCiBERUZJTkVTICs9IFRFU1RTX1NPVVJDRV9ESVI9
XFxcIiQkUFdEXFxcIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9x
dC90ZXN0cy90ZXN0d2luZG93LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Rl
c3RzL3Rlc3R3aW5kb3cuaAppbmRleCAyN2MxNWJkYTc0NTdlOWJhOGM4NDNkZGQyNTFmNWU0ZTkz
YWQ2MDg5Li4xOGMxM2U1YmFkNjRiZDk2YTE2Mzk5YjE1OTA3YmJhNmJmMmFmN2RkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL3Rlc3R3aW5kb3cuaAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL3Rlc3R3aW5kb3cuaApA
QCAtMjAsMzkgKzIwLDM1IEBACiAjaWZuZGVmIHRlc3R3aW5kb3dfaAogI2RlZmluZSB0ZXN0d2lu
ZG93X2gKIAotI2luY2x1ZGUgPFFHcmFwaGljc1NjZW5lPgotI2luY2x1ZGUgPFFHcmFwaGljc1Zp
ZXc+Ci0jaW5jbHVkZSA8UUdyYXBoaWNzV2lkZ2V0PgogI2luY2x1ZGUgPFFSZXNpemVFdmVudD4K
ICNpbmNsdWRlIDxRU2NvcGVkUG9pbnRlcj4KKyNpbmNsdWRlIDxRdERlY2xhcmF0aXZlL3FzZ2Nh
bnZhcy5oPgorI2luY2x1ZGUgPFF0RGVjbGFyYXRpdmUvcXNnaXRlbS5oPgogCiAvLyBUZXN0V2lu
ZG93OiBVdGlsaXR5IGNsYXNzIHRvIGlnbm9yZSBRR3JhcGhpY3NWaWV3IGRldGFpbHMuCi1jbGFz
cyBUZXN0V2luZG93IDogcHVibGljIFFHcmFwaGljc1ZpZXcgeworY2xhc3MgVGVzdFdpbmRvdyA6
IHB1YmxpYyBRU0dDYW52YXMgewogcHVibGljOgotICAgIGlubGluZSBUZXN0V2luZG93KFFHcmFw
aGljc1dpZGdldCogd2ViVmlldyk7Ci0gICAgUVNjb3BlZFBvaW50ZXI8UUdyYXBoaWNzV2lkZ2V0
ID53ZWJWaWV3OworICAgIGlubGluZSBUZXN0V2luZG93KFFTR0l0ZW0qIHdlYlZpZXcpOworICAg
IFFTY29wZWRQb2ludGVyPFFTR0l0ZW0+IHdlYlZpZXc7CiAKIHByb3RlY3RlZDoKICAgICBpbmxp
bmUgdm9pZCByZXNpemVFdmVudChRUmVzaXplRXZlbnQqKTsKIH07CiAKLWlubGluZSBUZXN0V2lu
ZG93OjpUZXN0V2luZG93KFFHcmFwaGljc1dpZGdldCogd2ViVmlldykKK2lubGluZSBUZXN0V2lu
ZG93OjpUZXN0V2luZG93KFFTR0l0ZW0qIHdlYlZpZXcpCiAgICAgOiB3ZWJWaWV3KHdlYlZpZXcp
CiB7CiAgICAgUV9BU1NFUlQod2ViVmlldyk7Ci0gICAgc2V0RnJhbWVTdHlsZShRRnJhbWU6Ok5v
RnJhbWUgfCBRRnJhbWU6OlBsYWluKTsKLQotICAgIFFHcmFwaGljc1NjZW5lKiBjb25zdCBzY2Vu
ZSA9IG5ldyBRR3JhcGhpY3NTY2VuZSh0aGlzKTsKLSAgICBzZXRTY2VuZShzY2VuZSk7Ci0gICAg
c2NlbmUtPmFkZEl0ZW0od2ViVmlldyk7CisgICAgd2ViVmlldy0+c2V0UGFyZW50SXRlbShyb290
SXRlbSgpKTsKIH0KIAogaW5saW5lIHZvaWQgVGVzdFdpbmRvdzo6cmVzaXplRXZlbnQoUVJlc2l6
ZUV2ZW50KiBldmVudCkKIHsKLSAgICBRR3JhcGhpY3NWaWV3OjpyZXNpemVFdmVudChldmVudCk7
Ci0gICAgUVJlY3RGIHJlY3QoUVBvaW50KDAsIDApLCBldmVudC0+c2l6ZSgpKTsKLSAgICB3ZWJW
aWV3LT5zZXRHZW9tZXRyeShyZWN0KTsKLSAgICBzY2VuZSgpLT5zZXRTY2VuZVJlY3QocmVjdCk7
CisgICAgUVNHQ2FudmFzOjpyZXNpemVFdmVudChldmVudCk7CisgICAgd2ViVmlldy0+c2V0WCgw
KTsKKyAgICB3ZWJWaWV3LT5zZXRZKDApOworICAgIHdlYlZpZXctPnNldFdpZHRoKGV2ZW50LT5z
aXplKCkud2lkdGgoKSk7CisgICAgd2ViVmlldy0+c2V0SGVpZ2h0KGV2ZW50LT5zaXplKCkuaGVp
Z2h0KCkpOwogfQogCiAjZW5kaWYgLyogdGVzdHdpbmRvd19oICovCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvVG91Y2hWaWV3SW50ZXJmYWNlLmNwcCBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9xdC9Ub3VjaFZpZXdJbnRlcmZhY2UuY3BwCmluZGV4IDdlYzg0ZGUw
OGExMWU4ZDBkMWRiMzkxYzJjMWJhNTdkMTM5YzllODEuLmExODFmZTk1NmZhMTkzZTExZjM4NGM2
YjQ4ZDk0NjI2ZjVjYTVlM2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9x
dC9Ub3VjaFZpZXdJbnRlcmZhY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9x
dC9Ub3VjaFZpZXdJbnRlcmZhY2UuY3BwCkBAIC02NiwxMyArNjYsMTMgQEAgdm9pZCBUb3VjaFZp
ZXdJbnRlcmZhY2U6OnBpbmNoR2VzdHVyZVN0YXJ0ZWQoKQogICAgIG1fcGluY2hTdGFydFNjYWxl
ID0gbV9wYWdlVmlldy0+c2NhbGUoKTsKIH0KIAotdm9pZCBUb3VjaFZpZXdJbnRlcmZhY2U6OnBp
bmNoR2VzdHVyZVJlcXVlc3RVcGRhdGUoY29uc3QgUVBvaW50RiYgcGluY2hDZW50ZXJJblBhZ2VW
aWV3Q29vcmRpbmF0ZSwgcXJlYWwgdG90YWxTY2FsZUZhY3RvcikKK3ZvaWQgVG91Y2hWaWV3SW50
ZXJmYWNlOjpwaW5jaEdlc3R1cmVSZXF1ZXN0VXBkYXRlKGNvbnN0IFFQb2ludEYmLCBxcmVhbCB0
b3RhbFNjYWxlRmFjdG9yKQogewotICAgIC8vIEZJWE1FOiBpdCBpcyBhIGJpdCBtb3JlIGNvbXBs
aWNhdGVkIHRoYW4gdGhhdCwgY2hhbmdlcyBvZiB0aGUgY2VudGVyIHBvc2l0aW9uIHNob3VsZCBt
b3ZlIHRoZSBwYWdlIGV2ZW4KLSAgICAvLyBpZiB0aGUgem9vbSBmYWN0b3IgZG9lcyBub3QgY2hh
bmdlLiBCb3RoIHRoZSB6b29tIGFuZCB0aGUgcGFubmluZyBzaG91bGQgYmUgaGFuZGxlZCB0aHJv
dWdoIHRoZSBwaHlzaWNzCi0gICAgLy8gZW5naW5lLgorICAgIC8vIEZJWE1FOiBpdCBpcyBhIG1v
cmUgY29tcGxpY2F0ZWQgdGhhbiB0aGF0OgorICAgIC8vIC10aGUgc2NhbGUgc2hvdWxkIGJlIGRv
bmUgY2VudGVyZWQgb24gdGhlIHBpbmNoIGNlbnRlci4KKyAgICAvLyAtY2hhbmdlcyBvZiB0aGUg
Y2VudGVyIHBvc2l0aW9uIHNob3VsZCBtb3ZlIHRoZSBwYWdlIGV2ZW4gaWYgdGhlIHpvb20gZmFj
dG9yCisgICAgLy8gIGRvZXMgbm90IGNoYW5nZS4gQm90aCB0aGUgem9vbSBhbmQgdGhlIHBhbm5p
bmcgc2hvdWxkIGJlIGhhbmRsZWQgdGhyb3VnaCB0aGUgcGh5c2ljcyBlbmdpbmUuCiAgICAgY29u
c3QgcXJlYWwgc2NhbGUgPSBtX3BpbmNoU3RhcnRTY2FsZSAqIHRvdGFsU2NhbGVGYWN0b3I7Ci0g
ICAgbV9wYWdlVmlldy0+c2V0VHJhbnNmb3JtT3JpZ2luUG9pbnQocGluY2hDZW50ZXJJblBhZ2VW
aWV3Q29vcmRpbmF0ZSk7CiAgICAgbV9wYWdlVmlldy0+c2V0U2NhbGUoc2NhbGUpOwogfQogCkBA
IC05MSw3ICs5MSw3IEBAIHZvaWQgVG91Y2hWaWV3SW50ZXJmYWNlOjpzZXRWaWV3TmVlZHNEaXNw
bGF5KGNvbnN0IFFSZWN0JiBpbnZhbGlkYXRlZFJlY3QpCiAKIFFTaXplIFRvdWNoVmlld0ludGVy
ZmFjZTo6ZHJhd2luZ0FyZWFTaXplKCkKIHsKLSAgICByZXR1cm4gbV9wYWdlVmlldy0+c2l6ZSgp
LnRvU2l6ZSgpOworICAgIHJldHVybiBRU2l6ZShtX3BhZ2VWaWV3LT53aWR0aCgpLCBtX3BhZ2VW
aWV3LT5oZWlnaHQoKSk7CiB9CiAKIHZvaWQgVG91Y2hWaWV3SW50ZXJmYWNlOjpjb250ZW50U2l6
ZUNoYW5nZWQoY29uc3QgUVNpemUmIG5ld1NpemUpCkBAIC0xMDEsMTMgKzEwMSwxNSBAQCB2b2lk
IFRvdWNoVmlld0ludGVyZmFjZTo6Y29udGVudFNpemVDaGFuZ2VkKGNvbnN0IFFTaXplJiBuZXdT
aXplKQogICAgIC8vIC1jaGFuZ2UgdGhlIHpvb20gbGV2ZWwgaWYgbmVlZGVkCiAgICAgLy8gLW1v
dmUgdGhlIHBhZ2UgYmFjayBpbiB2aWV3cG9ydCBib3VuZGFyaWVzIGlmIG5lZWRlZAogICAgIC8v
IC11cGRhdGUgdGhlIHZpZXdwb3J0IHJlY3QKLSAgICBtX3BhZ2VWaWV3LT5yZXNpemUobmV3U2l6
ZSk7CisgICAgbV9wYWdlVmlldy0+c2V0V2lkdGgobmV3U2l6ZS53aWR0aCgpKTsKKyAgICBtX3Bh
Z2VWaWV3LT5zZXRIZWlnaHQobmV3U2l6ZS5oZWlnaHQoKSk7CiAgICAgbV92aWV3cG9ydFZpZXct
PmQtPnZpZXdwb3J0UmVjdFVwZGF0ZWQoKTsKIH0KIAogYm9vbCBUb3VjaFZpZXdJbnRlcmZhY2U6
OmlzQWN0aXZlKCkKIHsKLSAgICByZXR1cm4gbV9wYWdlVmlldy0+aXNBY3RpdmUoKTsKKyAgICAv
LyBGSVhNRTogVGhlIHNjZW5lIGdyYXBoIGRvZXMgbm90IGhhdmUgdGhlIGNvbmNlcHQgb2YgYmVp
bmcgYWN0aXZlIG9yIG5vdCB3aGVuIHRoaXMgd2FzIHdyaXR0ZW4uCisgICAgcmV0dXJuIHRydWU7
CiB9CiAKIGJvb2wgVG91Y2hWaWV3SW50ZXJmYWNlOjpoYXNGb2N1cygpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvVmlld0ludGVyZmFjZS5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvcXQvVmlld0ludGVyZmFjZS5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDY3MWJiYWNkZDRkMDc3NjM2ZmUyZmRmMWQ0OTU2NTdmOWZmOTI0ZTEuLjAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL3F0L1ZpZXdJbnRlcmZhY2UuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNDQgKzAs
MCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMSBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3Ig
aXRzIHN1YnNpZGlhcnkoLWllcykKLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2Fy
ZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiBtb2RpZnkgaXQgdW5kZXIgdGhl
IHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICogTGljZW5zZSBhcyBw
dWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gKiB2ZXJz
aW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNp
b24uCi0gKgotICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQg
aXQgd2lsbCBiZSB1c2VmdWwsCi0gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQg
ZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqIFlvdSBzaG91bGQg
aGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExp
Y2Vuc2UKLSAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBzZWUgdGhlIGZpbGUgQ09QWUlORy5M
SUIuICBJZiBub3QsIHdyaXRlIHRvCi0gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJ
bmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICogQm9zdG9uLCBNQSAwMjEx
MC0xMzAxLCBVU0EuCi0gKgotICovCi0KLSNpbmNsdWRlICJWaWV3SW50ZXJmYWNlLmgiCi0KLSNp
bmNsdWRlIDxRdENvcmUvUVJlY3Q+Ci0jaW5jbHVkZSA8UXRDb3JlL1FTaXplPgotI2luY2x1ZGUg
PFF0R3VpL1FHcmFwaGljc1NjZW5lPgotI2luY2x1ZGUgPFF0R3VpL1FHcmFwaGljc1ZpZXc+Ci0j
aW5jbHVkZSA8UXRHdWkvUUdyYXBoaWNzV2lkZ2V0PgotI2luY2x1ZGUgPFF0R3VpL1FXaWRnZXQ+
Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewotCi1RV2lkZ2V0KiBWaWV3SW50ZXJmYWNlOjpvd25lcldp
ZGdldChjb25zdCBRR3JhcGhpY3NXaWRnZXQqIHdpZGdldCkKLXsKLSAgICBpZiAoIXdpZGdldCB8
fCAhd2lkZ2V0LT5zY2VuZSgpIHx8IHdpZGdldC0+c2NlbmUoKS0+dmlld3MoKS5pc0VtcHR5KCkp
Ci0gICAgICAgIHJldHVybiAwOwotCi0gICAgUUxpc3Q8UUdyYXBoaWNzVmlldyo+IHZpZXdzID0g
d2lkZ2V0LT5zY2VuZSgpLT52aWV3cygpOwotICAgIGlmICh2aWV3cy5zaXplKCkgPiAxKQotICAg
ICAgICBxV2FybmluZygiQ2Fubm90IHN1cHBvcnQgbXVsdGlwbGUgdmlld3MiKTsKLQotICAgIHJl
dHVybiB2aWV3cy5hdCgwKTsKLX0KLQotfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL3F0L1ZpZXdJbnRlcmZhY2UuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9W
aWV3SW50ZXJmYWNlLmgKaW5kZXggODNjMDcyY2VlODk1ZWZiZDFjNGQxMDBiYmY1NTljMGIxNWRl
ZTNlZi4uNDI5OTNjYjYwMDQ0N2FkNGM4ZjZkNTY3ODUxMjdkNjJhMTU1OWU1MyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1ZpZXdJbnRlcmZhY2UuaAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvVmlld0ludGVyZmFjZS5oCkBAIC02OSwxMCArNjksNiBA
QCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIHZvaWQgcHJvY2Vzc0RpZENyYXNoKCkgPSAwOwogICAg
IHZpcnR1YWwgdm9pZCBkaWRSZWxhdW5jaFByb2Nlc3MoKSA9IDA7Ci0KLXByb3RlY3RlZDoKLSAg
ICAvKiBVdGlsaXR5IGZ1bmN0aW9ucyBmb3IgdGhlIGltcGxlbWVudGF0aW9ucy4gKi8KLSAgICBz
dGF0aWMgUVdpZGdldCogb3duZXJXaWRnZXQoY29uc3QgUUdyYXBoaWNzV2lkZ2V0Kik7CiB9Owog
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJLaXQyLnBybyBiL1NvdXJjZS9XZWJL
aXQyL1dlYktpdDIucHJvCmluZGV4IDY0NzI1OWQ4M2M2ZmRlYWQ3NTRjZmIwNTZiYjk3YTQ1NTQw
MTdkMTguLjZiMzg5YjdjNzFlMTk1ODliMWY3NDFmOGMwMTY5OTgzZTc4ZjBhNjAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIucHJvCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYktp
dDIucHJvCkBAIC0xNSw2ICsxNSw4IEBAIENPTkZJRyArPSBzdGF0aWNsaWIKIFRBUkdFVCA9ICQk
V0VCS0lUMl9UQVJHRVQKIERFU1RESVIgPSAkJFdFQktJVDJfREVTVERJUgogCitRVCArPSBkZWNs
YXJhdGl2ZQorCiAjIEJ1aWxkIGJvdGggZGVidWcgYW5kIHJlbGVhc2UgY29uZmlndXJhdGlvbnMK
IG1hYzogQ09ORklHICs9IGJ1aWxkX2FsbAogCkBAIC00NzYsNyArNDc4LDYgQEAgU09VUkNFUyAr
PSBcCiAgICAgVUlQcm9jZXNzL3F0L3F3a2NvbnRleHQuY3BwIFwKICAgICBVSVByb2Nlc3MvcXQv
cXdraGlzdG9yeS5jcHAgXAogICAgIFVJUHJvY2Vzcy9xdC9xd2twcmVmZXJlbmNlcy5jcHAgXAot
ICAgIFVJUHJvY2Vzcy9xdC9WaWV3SW50ZXJmYWNlLmNwcCBcCiAgICAgVUlQcm9jZXNzL3F0L1Rp
bGVkRHJhd2luZ0FyZWFQcm94eVF0LmNwcCBcCiAgICAgVUlQcm9jZXNzL3F0L1RpbGVkRHJhd2lu
Z0FyZWFUaWxlUXQuY3BwIFwKICAgICBVSVByb2Nlc3MvcXQvVGV4dENoZWNrZXJRdC5jcHAgXApk
aWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdlTG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IGVmZTA0
Y2M4OTQwZGZhYTE2NzQ3M2I3MDU0NDExMzkwMWIzNjAwZGIuLjM0NTExYTYyMWE4MDcyYjU4OTZm
N2IwNmI0OTQzOWQyNDE5NTIxZDEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9U
b29scy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzOCBAQAorMjAxMS0wNy0xNCAgQmVuamFtaW4gUG91
bGFpbiAgPGJlbmphbWluQHdlYmtpdC5vcmc+CisKKyAgICAgICAgW1dLMl1bUXRdIE1vdmUgZnJv
bSBRR3JhcGhpY3NWaWV3IHRvIFF0IFNjZW5lIEdyYXBoCisgICAgICAgIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02Mjk2OQorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIENvLWF1dGhvcmVkIHdpdGggU2ltb24gSGF1c21hbm4g
IDxzaW1vbi5oYXVzbWFubkBub2tpYS5jb20+CisKKyAgICAgICAgV2l0aCB0aGUgc2NlbmUgZ3Jh
cGgsIHRoZSBpbnRlcmZhY2UgdG8gaGF2ZSBhIHdpbmRvdyBvbiBzY3JlZW4gaXMKKyAgICAgICAg
UVNHQ2FudmFzLiBRR3JhcGhpY3NWaWV3IGlzIG5vdCB1c2VkLCBhbmQgb3BlbkdMIGlzIGFuIGVu
Zm9yY2VkCisgICAgICAgIGRlcGVuZGVuY3kuCisKKyAgICAgICAgQm90aCB0aGUgQnJvd3NlclZp
ZXcgYW5kIHRoZSBXZWJLaXRUZXN0IHJ1bm5lciBhcmUgY2hhbmdlZCBmcm9tCisgICAgICAgIFFH
cmFwaGljc1ZpZXcgdG8gUVNHQ2FudmFzLgorCisgICAgICAgICogTWluaUJyb3dzZXIvcXQvQnJv
d3NlclZpZXcuY3BwOgorICAgICAgICAoQnJvd3NlclZpZXc6OkJyb3dzZXJWaWV3KToKKyAgICAg
ICAgKEJyb3dzZXJWaWV3OjpyZXNpemVFdmVudCk6CisgICAgICAgIChCcm93c2VyVmlldzo6dmll
dyk6CisgICAgICAgICogTWluaUJyb3dzZXIvcXQvQnJvd3NlclZpZXcuaDoKKyAgICAgICAgKiBN
aW5pQnJvd3Nlci9xdC9Ccm93c2VyV2luZG93LmNwcDoKKyAgICAgICAgKEJyb3dzZXJXaW5kb3c6
OkJyb3dzZXJXaW5kb3cpOgorICAgICAgICAoQnJvd3NlcldpbmRvdzo6dXJsQ2hhbmdlZCk6Cisg
ICAgICAgIChCcm93c2VyV2luZG93Ojp+QnJvd3NlcldpbmRvdyk6CisgICAgICAgICogTWluaUJy
b3dzZXIvcXQvQnJvd3NlcldpbmRvdy5oOgorICAgICAgICAqIE1pbmlCcm93c2VyL3F0L01pbmlC
cm93c2VyLnBybzoKKyAgICAgICAgKiBNaW5pQnJvd3Nlci9xdC9tYWluLmNwcDoKKyAgICAgICAg
KG1haW4pOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvcXQvSW5q
ZWN0ZWRCdW5kbGUucHJvOgorICAgICAgICAqIFdlYktpdFRlc3RSdW5uZXIvcXQvUGxhdGZvcm1X
ZWJWaWV3UXQuY3BwOgorICAgICAgICAoV1RSOjpXZWJWaWV3OjpXZWJWaWV3KToKKyAgICAgICAg
KFdUUjo6UGxhdGZvcm1XZWJWaWV3OjpQbGF0Zm9ybVdlYlZpZXcpOgorICAgICAgICAqIFdlYktp
dFRlc3RSdW5uZXIvcXQvV2ViS2l0VGVzdFJ1bm5lci5wcm86CisKIDIwMTEtMDctMTMgIFhhbiBM
b3BleiAgPHhsb3BlekBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtdIERvIG5vdCBncmFiIGZv
Y3VzIHRvbyBlYXJseSBpbiBEUlQuCmRpZmYgLS1naXQgYS9Ub29scy9NaW5pQnJvd3Nlci9xdC9C
cm93c2VyVmlldy5jcHAgYi9Ub29scy9NaW5pQnJvd3Nlci9xdC9Ccm93c2VyVmlldy5jcHAKaW5k
ZXggM2Q2ZTM5MmY3ODRlZGU4NjA4N2FiOGU0MmQ2ZjhjNGMyYWQzNDExMS4uYjUzNjM4NDJkYTlm
OTJjM2VjMzcwZjg0ZTg0OWU3ZTExM2FiZGI0ZiAxMDA2NDQKLS0tIGEvVG9vbHMvTWluaUJyb3dz
ZXIvcXQvQnJvd3NlclZpZXcuY3BwCisrKyBiL1Rvb2xzL01pbmlCcm93c2VyL3F0L0Jyb3dzZXJW
aWV3LmNwcApAQCAtMjksMjUgKzI5LDIwIEBACiAjaW5jbHVkZSAiQnJvd3NlclZpZXcuaCIKIAog
I2luY2x1ZGUgPFFHcmFwaGljc1NjZW5lPgorI2luY2x1ZGUgPFF0RGVjbGFyYXRpdmUvcXNnaXRl
bS5oPgorI2luY2x1ZGUgPFFSZXNpemVFdmVudD4KICNpbmNsdWRlIDxxZGVza3RvcHdlYnZpZXcu
aD4KICNpbmNsdWRlIDxxdG91Y2h3ZWJ2aWV3Lmg+CiAjaW5jbHVkZSA8cXRvdWNod2VicGFnZS5o
PgogCiBCcm93c2VyVmlldzo6QnJvd3NlclZpZXcoYm9vbCB1c2VUb3VjaFdlYlZpZXcsIFFXaWRn
ZXQqIHBhcmVudCkKLSAgICA6IFFHcmFwaGljc1ZpZXcocGFyZW50KQorICAgIDogUVNHQ2FudmFz
KHBhcmVudCkKICAgICAsIG1faXRlbSgwKQogewogICAgIGlmICh1c2VUb3VjaFdlYlZpZXcpCi0g
ICAgICAgIG1faXRlbSA9IG5ldyBRVG91Y2hXZWJWaWV3OworICAgICAgICBtX2l0ZW0gPSBuZXcg
UVRvdWNoV2ViVmlldyhyb290SXRlbSgpKTsKICAgICBlbHNlCi0gICAgICAgIG1faXRlbSA9IG5l
dyBRRGVza3RvcFdlYlZpZXc7Ci0KLSAgICBzZXRTY2VuZShuZXcgUUdyYXBoaWNzU2NlbmUodGhp
cykpOwotICAgIHNjZW5lKCktPmFkZEl0ZW0obV9pdGVtKTsKLQotICAgIHNldEZyYW1lU2hhcGUo
UUZyYW1lOjpOb0ZyYW1lKTsKLSAgICBzZXRIb3Jpem9udGFsU2Nyb2xsQmFyUG9saWN5KFF0OjpT
Y3JvbGxCYXJBbHdheXNPZmYpOwotICAgIHNldFZlcnRpY2FsU2Nyb2xsQmFyUG9saWN5KFF0OjpT
Y3JvbGxCYXJBbHdheXNPZmYpOworICAgICAgICBtX2l0ZW0gPSBuZXcgUURlc2t0b3BXZWJWaWV3
KHJvb3RJdGVtKCkpOwogfQogCiBCcm93c2VyVmlldzo6fkJyb3dzZXJWaWV3KCkKQEAgLTU4LDEw
ICs1MywxMSBAQCBCcm93c2VyVmlldzo6fkJyb3dzZXJWaWV3KCkKIAogdm9pZCBCcm93c2VyVmll
dzo6cmVzaXplRXZlbnQoUVJlc2l6ZUV2ZW50KiBldmVudCkKIHsKLSAgICBRR3JhcGhpY3NWaWV3
OjpyZXNpemVFdmVudChldmVudCk7Ci0gICAgUVJlY3RGIHJlY3QoUVBvaW50KDAsIDApLCBldmVu
dC0+c2l6ZSgpKTsKLSAgICBtX2l0ZW0tPnNldEdlb21ldHJ5KHJlY3QpOwotICAgIHNjZW5lKCkt
PnNldFNjZW5lUmVjdChyZWN0KTsKKyAgICBRU0dDYW52YXM6OnJlc2l6ZUV2ZW50KGV2ZW50KTsK
KyAgICBtX2l0ZW0tPnNldFgoMCk7CisgICAgbV9pdGVtLT5zZXRZKDApOworICAgIG1faXRlbS0+
c2V0V2lkdGgoZXZlbnQtPnNpemUoKS53aWR0aCgpKTsKKyAgICBtX2l0ZW0tPnNldEhlaWdodChl
dmVudC0+c2l6ZSgpLmhlaWdodCgpKTsKIH0KIAogdm9pZCBCcm93c2VyVmlldzo6bG9hZChjb25z
dCBRU3RyaW5nJiB1cmxTdHJpbmcpCkBAIC03NCw3ICs3MCw3IEBAIHZvaWQgQnJvd3NlclZpZXc6
OmxvYWQoY29uc3QgUVN0cmluZyYgdXJsU3RyaW5nKQogICAgICAgICB0b3VjaFdlYlZpZXcoKS0+
cGFnZSgpLT5sb2FkKHVybCk7CiB9CiAKLVFHcmFwaGljc1dpZGdldCogQnJvd3NlclZpZXc6OnZp
ZXcoKSBjb25zdAorUVNHSXRlbSogQnJvd3NlclZpZXc6OnZpZXcoKSBjb25zdAogewogICAgIHJl
dHVybiBtX2l0ZW07CiB9CmRpZmYgLS1naXQgYS9Ub29scy9NaW5pQnJvd3Nlci9xdC9Ccm93c2Vy
Vmlldy5oIGIvVG9vbHMvTWluaUJyb3dzZXIvcXQvQnJvd3NlclZpZXcuaAppbmRleCBiYjRhYWVk
ZWYxZDcyNjAyMjVmN2M5OWVhZGI0NTYyOWJiOTg2MTQ0Li5kOGRkMDYyMDJmOGNkMzU3NGU1ZjRm
MDkzNmM2ZjZkNzZmYTZhNTY3IDEwMDY0NAotLS0gYS9Ub29scy9NaW5pQnJvd3Nlci9xdC9Ccm93
c2VyVmlldy5oCisrKyBiL1Rvb2xzL01pbmlCcm93c2VyL3F0L0Jyb3dzZXJWaWV3LmgKQEAgLTI5
LDEzICsyOSwxNCBAQAogI2lmbmRlZiBCcm93c2VyVmlld19oCiAjZGVmaW5lIEJyb3dzZXJWaWV3
X2gKIAotI2luY2x1ZGUgPFFHcmFwaGljc1ZpZXc+CisjaW5jbHVkZSA8UXREZWNsYXJhdGl2ZS9x
c2djYW52YXMuaD4KICNpbmNsdWRlIDxxd2Via2l0dHlwZXMuaD4KIAogY2xhc3MgUURlc2t0b3BX
ZWJWaWV3OworY2xhc3MgUVNHSXRlbTsKIGNsYXNzIFFUb3VjaFdlYlZpZXc7CiAKLWNsYXNzIEJy
b3dzZXJWaWV3IDogcHVibGljIFFHcmFwaGljc1ZpZXcgeworY2xhc3MgQnJvd3NlclZpZXcgOiBw
dWJsaWMgUVNHQ2FudmFzIHsKICAgICBRX09CSkVDVAogCiBwdWJsaWM6CkBAIC00Myw3ICs0NCw3
IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5Ccm93c2VyVmlldygpOwogCiAgICAgdm9pZCBsb2Fk
KGNvbnN0IFFTdHJpbmcmKTsKLSAgICBRR3JhcGhpY3NXaWRnZXQqIHZpZXcoKSBjb25zdDsKKyAg
ICBRU0dJdGVtKiB2aWV3KCkgY29uc3Q7CiAKICAgICBRQWN0aW9uKiBuYXZpZ2F0aW9uQWN0aW9u
KFF0V2ViS2l0OjpOYXZpZ2F0aW9uQWN0aW9uIHdoaWNoKSBjb25zdDsKIApAQCAtNTQsNyArNTUs
NyBAQCBwcm90ZWN0ZWQ6CiAgICAgdmlydHVhbCB2b2lkIHJlc2l6ZUV2ZW50KFFSZXNpemVFdmVu
dCopOwogCiBwcml2YXRlOgotICAgIFFHcmFwaGljc1dpZGdldCogbV9pdGVtOworICAgIFFTR0l0
ZW0qIG1faXRlbTsKIH07CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvVG9vbHMvTWluaUJyb3dzZXIv
cXQvQnJvd3NlcldpbmRvdy5jcHAgYi9Ub29scy9NaW5pQnJvd3Nlci9xdC9Ccm93c2VyV2luZG93
LmNwcAppbmRleCBjNDA2ZmM5Y2JjNjZiZTlmZjcwZDllMmU3MmVjZmJjMzE4ZDgxYzc1Li5kZTA0
OWUxNDNlZjQxYmIwYjA0YTY4ZGQwYWRkMjc2Y2E3ZGM3MjIzIDEwMDY0NAotLS0gYS9Ub29scy9N
aW5pQnJvd3Nlci9xdC9Ccm93c2VyV2luZG93LmNwcAorKysgYi9Ub29scy9NaW5pQnJvd3Nlci9x
dC9Ccm93c2VyV2luZG93LmNwcApAQCAtMzMsMTAgKzMzLDYgQEAKICNpbmNsdWRlICJxdG91Y2h3
ZWJ2aWV3LmgiCiAjaW5jbHVkZSAicXRvdWNod2VicGFnZS5oIgogCi0jaWYgZGVmaW5lZChRVF9D
T05GSUdVUkVEX1dJVEhfT1BFTkdMKQotI2luY2x1ZGUgPFFHTFdpZGdldD4KLSNlbmRpZgotCiAj
aWYgMAogLy8gRklYTUUKIHN0YXRpYyBRV0tQYWdlKiBuZXdQYWdlRnVuY3Rpb24oUVdLUGFnZSog
cGFnZSkKQEAgLTU5LDExICs1NSw2IEBAIEJyb3dzZXJXaW5kb3c6OkJyb3dzZXJXaW5kb3coV2lu
ZG93T3B0aW9ucyogb3B0aW9ucykKIAogICAgIG1fYnJvd3NlciA9IG5ldyBCcm93c2VyVmlldyht
X3dpbmRvd09wdGlvbnMudXNlVG91Y2hXZWJWaWV3KTsKIAotI2lmIGRlZmluZWQoUVRfQ09ORklH
VVJFRF9XSVRIX09QRU5HTCkKLSAgICBpZiAobV93aW5kb3dPcHRpb25zLnVzZVFHTFdpZGdldFZp
ZXdwb3J0KQotICAgICAgICBtX2Jyb3dzZXItPnNldFZpZXdwb3J0KG5ldyBRR0xXaWRnZXQoKSk7
Ci0jZW5kaWYKLQogICAgIHNldEF0dHJpYnV0ZShRdDo6V0FfRGVsZXRlT25DbG9zZSk7CiAKICAg
ICBjb25uZWN0KHdlYlZpZXcoKSwgU0lHTkFMKGxvYWRQcm9ncmVzcyhpbnQpKSwgU0xPVChsb2Fk
UHJvZ3Jlc3MoaW50KSkpOwpAQCAtMTEzLDEyICsxMDQsNiBAQCBCcm93c2VyV2luZG93OjpCcm93
c2VyV2luZG93KFdpbmRvd09wdGlvbnMqIG9wdGlvbnMpCiAgICAgY29ubmVjdCh0aGlzLCBTSUdO
QUwoZW50ZXJlZEZ1bGxTY3JlZW5Nb2RlKGJvb2wpKSwgdGhpcywgU0xPVCh0b2dnbGVGdWxsU2Ny
ZWVuTW9kZShib29sKSkpOwogCiAgICAgUU1lbnUqIHRvb2xzTWVudSA9IG1lbnVCYXIoKS0+YWRk
TWVudSgiJkRldmVsb3AiKTsKLSNpZiBkZWZpbmVkKFFUX0NPTkZJR1VSRURfV0lUSF9PUEVOR0wp
Ci0gICAgUUFjdGlvbiogdG9nZ2xlR0xWaWV3cG9ydCA9IHRvb2xzTWVudS0+YWRkQWN0aW9uKCJU
b2dnbGUgR0wgVmlld3BvcnQiLCB0aGlzLCBTTE9UKHRvZ2dsZUdMVmlld3BvcnQoYm9vbCkpKTsK
LSAgICB0b2dnbGVHTFZpZXdwb3J0LT5zZXRDaGVja2FibGUodHJ1ZSk7Ci0gICAgdG9nZ2xlR0xW
aWV3cG9ydC0+c2V0Q2hlY2tlZChtX3dpbmRvd09wdGlvbnMudXNlUUdMV2lkZ2V0Vmlld3BvcnQp
OwotI2VuZGlmCi0gICAgdG9vbHNNZW51LT5hZGRTZXBhcmF0b3IoKTsKICAgICB0b29sc01lbnUt
PmFkZEFjdGlvbigiQ2hhbmdlIFVzZXIgQWdlbnQiLCB0aGlzLCBTTE9UKHNob3dVc2VyQWdlbnRE
aWFsb2coKSkpOwogICAgIHRvb2xzTWVudS0+YWRkU2VwYXJhdG9yKCk7CiAgICAgdG9vbHNNZW51
LT5hZGRBY3Rpb24oIkxvYWQgVVJMcyBmcm9tIGZpbGUiLCB0aGlzLCBTTE9UKGxvYWRVUkxMaXN0
RnJvbUZpbGUoKSkpOwpAQCAtMjAxLDcgKzE4Niw3IEBAIHZvaWQgQnJvd3NlcldpbmRvdzo6dXJs
Q2hhbmdlZChjb25zdCBRVXJsJiB1cmwpCiB7CiAgICAgbV9hZGRyZXNzQmFyLT5zZXRUZXh0KHVy
bC50b1N0cmluZygpKTsKICAgICBtX2Jyb3dzZXItPnNldEZvY3VzKCk7Ci0gICAgbV9icm93c2Vy
LT52aWV3KCktPnNldEZvY3VzKCk7CisgICAgbV9icm93c2VyLT52aWV3KCktPnNldEZvY3VzKHRy
dWUpOwogfQogCiB2b2lkIEJyb3dzZXJXaW5kb3c6Om9wZW5GaWxlKCkKQEAgLTMzMCwxMCArMzE1
LDMgQEAgQnJvd3NlcldpbmRvdzo6fkJyb3dzZXJXaW5kb3coKQogICAgIGRlbGV0ZSBtX2FkZHJl
c3NCYXI7CiAgICAgZGVsZXRlIG1fYnJvd3NlcjsKIH0KLQotdm9pZCBCcm93c2VyV2luZG93Ojp0
b2dnbGVHTFZpZXdwb3J0KGJvb2wgdXNlUUdMV2lkZ2V0Vmlld3BvcnQpCi17Ci0jaWYgZGVmaW5l
ZChRVF9DT05GSUdVUkVEX1dJVEhfT1BFTkdMKQotICAgIG1fYnJvd3Nlci0+c2V0Vmlld3BvcnQo
dXNlUUdMV2lkZ2V0Vmlld3BvcnQgPyBuZXcgUUdMV2lkZ2V0KCkgOiAwKTsKLSNlbmRpZgotfQpk
aWZmIC0tZ2l0IGEvVG9vbHMvTWluaUJyb3dzZXIvcXQvQnJvd3NlcldpbmRvdy5oIGIvVG9vbHMv
TWluaUJyb3dzZXIvcXQvQnJvd3NlcldpbmRvdy5oCmluZGV4IDg2MWYyMzA0YmY1ZGYxNTAwZWJk
YjZhNzNhM2NmYTY4ZjI3ZmIwOGIuLmY5Y2YzOTc4MDNlNTQ0ZmUwZGI0NGM0MDRjNjEwMjUwNjlm
Y2Q3NzQgMTAwNjQ0Ci0tLSBhL1Rvb2xzL01pbmlCcm93c2VyL3F0L0Jyb3dzZXJXaW5kb3cuaAor
KysgYi9Ub29scy9NaW5pQnJvd3Nlci9xdC9Ccm93c2VyV2luZG93LmgKQEAgLTcwLDggKzcwLDYg
QEAgcHJvdGVjdGVkIHNsb3RzOgogCiAgICAgdm9pZCBwcmludFVSTChjb25zdCBRVXJsJik7CiAK
LSAgICB2b2lkIHRvZ2dsZUdMVmlld3BvcnQoYm9vbCk7Ci0KIHByaXZhdGU6CiAgICAgdm9pZCB1
cGRhdGVVc2VyQWdlbnRMaXN0KCk7CiAKZGlmZiAtLWdpdCBhL1Rvb2xzL01pbmlCcm93c2VyL3F0
L01pbmlCcm93c2VyLnBybyBiL1Rvb2xzL01pbmlCcm93c2VyL3F0L01pbmlCcm93c2VyLnBybwpp
bmRleCA0MTAxZTI1NmQzMzNjZTYyMzgwODgwZWFmZDkxZjU0MTliOTBiYjdjLi4zOTgxNTExZTNh
YzA0MGIyNzA1ZDBhY2YyYzNjOTMyZTFhNzRlN2M3IDEwMDY0NAotLS0gYS9Ub29scy9NaW5pQnJv
d3Nlci9xdC9NaW5pQnJvd3Nlci5wcm8KKysrIGIvVG9vbHMvTWluaUJyb3dzZXIvcXQvTWluaUJy
b3dzZXIucHJvCkBAIC0zMCw3ICszMCw3IEBAIElOQ0xVREVQQVRIICs9IFwKIERFU1RESVIgPSAk
JE9VVFBVVF9ESVIvYmluCiAhQ09ORklHKHN0YW5kYWxvbmVfcGFja2FnZSk6IENPTkZJRyAtPSBh
cHBfYnVuZGxlCiAKLVFUICs9IG5ldHdvcmsKK1FUICs9IG5ldHdvcmsgZGVjbGFyYXRpdmUKIG1h
Y3g6UVQrPXhtbAogCiBsaW51eC0qIHsKZGlmZiAtLWdpdCBhL1Rvb2xzL01pbmlCcm93c2VyL3F0
L21haW4uY3BwIGIvVG9vbHMvTWluaUJyb3dzZXIvcXQvbWFpbi5jcHAKaW5kZXggMzRiY2UzZTg5
MDIyOTFhZGUwMmNiNzU4ZDk4NjM4OWIwNGY2ZGRmYy4uYzU0Yzk0MzcyMDY3NjY0ZGVmNTU3OTM1
MGEwMzliOTdhZGU5YzUyYSAxMDA2NDQKLS0tIGEvVG9vbHMvTWluaUJyb3dzZXIvcXQvbWFpbi5j
cHAKKysrIGIvVG9vbHMvTWluaUJyb3dzZXIvcXQvbWFpbi5jcHAKQEAgLTM2LDYgKzM2LDcgQEAK
IAogaW50IG1haW4oaW50IGFyZ2MsIGNoYXIqKiBhcmd2KQogeworICAgIHFwdXRlbnYoIlFNTF9O
T19USFJFQURFRF9SRU5ERVJFUiIsIFFCeXRlQXJyYXkoIjEiKSk7CiAgICAgTWluaUJyb3dzZXJB
cHBsaWNhdGlvbiBhcHAoYXJnYywgYXJndik7CiAKICAgICBpZiAoYXBwLmlzUm9ib3RpemVkKCkp
IHsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5kbGUvcXQv
SW5qZWN0ZWRCdW5kbGUucHJvIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRs
ZS9xdC9JbmplY3RlZEJ1bmRsZS5wcm8KaW5kZXggZjc4ZWE0MTYxZDE1MzNhNDQ4NThiNGVjMTEz
YTQ4OWQyOTU1OGVmNi4uYmFmMGZjYTMxNGViNWI3ZDI1N2Q4YjQ4Njg5OGQzMzc0YzNhYjliOSAx
MDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9xdC9Jbmpl
Y3RlZEJ1bmRsZS5wcm8KKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRs
ZS9xdC9JbmplY3RlZEJ1bmRsZS5wcm8KQEAgLTgsNiArOCw4IEBAIENPTkZJRyhzdGFuZGFsb25l
X3BhY2thZ2UpIHsKICAgICBpc0VtcHR5KFdDX0dFTkVSQVRFRF9TT1VSQ0VTX0RJUik6V0NfR0VO
RVJBVEVEX1NPVVJDRVNfRElSID0gLi4vLi4vLi4vLi4vU291cmNlL1dlYkNvcmUvZ2VuZXJhdGVk
CiB9CiAKK1FUICs9IGRlY2xhcmF0aXZlCisKIEdFTkVSQVRFRF9TT1VSQ0VTX0RJUiA9IC4uLy4u
L2dlbmVyYXRlZAogCiBTT1VSQ0VTICs9IFwKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RS
dW5uZXIvcXQvUGxhdGZvcm1XZWJWaWV3UXQuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9x
dC9QbGF0Zm9ybVdlYlZpZXdRdC5jcHAKaW5kZXggODdmNGE3ZjgyY2VjNmZlNTM1NGExMzExNjcy
MzA4MDdkY2RlMGFlNi4uNzgyMDM4YzE3YWQ5MDMyNDI3N2YyYWUyNDI1NmVhNjZmYTEyNjY2ZSAx
MDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9xdC9QbGF0Zm9ybVdlYlZpZXdRdC5j
cHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9xdC9QbGF0Zm9ybVdlYlZpZXdRdC5jcHAK
QEAgLTI4LDExICsyOCwxMiBAQAogCiAjaW5jbHVkZSAiUGxhdGZvcm1XZWJWaWV3LmgiCiAjaW5j
bHVkZSAicWRlc2t0b3B3ZWJ2aWV3LmgiCisjaW5jbHVkZSA8UXREZWNsYXJhdGl2ZS9xc2djYW52
YXMuaD4KICNpbmNsdWRlIDxRdEd1aT4KIAogbmFtZXNwYWNlIFdUUiB7CiAKLWNsYXNzIFdlYlZp
ZXcgOiBwdWJsaWMgUUdyYXBoaWNzVmlldyB7CitjbGFzcyBXZWJWaWV3IDogcHVibGljIFFTR0Nh
bnZhcyB7CiBwdWJsaWM6CiAgICAgV2ViVmlldyhXS0NvbnRleHRSZWYsIFdLUGFnZUdyb3VwUmVm
KTsKIApAQCAtNDYsMTIgKzQ3LDEwIEBAIHByaXZhdGU6CiB9OwogCiBXZWJWaWV3OjpXZWJWaWV3
KFdLQ29udGV4dFJlZiBjb250ZXh0UmVmLCBXS1BhZ2VHcm91cFJlZiBwYWdlR3JvdXBSZWYpCi0g
ICAgOiBRR3JhcGhpY3NWaWV3KCkKLSAgICAsIG1faXRlbShuZXcgUURlc2t0b3BXZWJWaWV3KGNv
bnRleHRSZWYsIHBhZ2VHcm91cFJlZikpCisgICAgOiBtX2l0ZW0obmV3IFFEZXNrdG9wV2ViVmll
dyhjb250ZXh0UmVmLCBwYWdlR3JvdXBSZWYsIHJvb3RJdGVtKCkpKQogewotICAgIG1faXRlbS0+
c2V0UHJlZmVycmVkU2l6ZSg4MDAsIDYwMCk7Ci0gICAgc2V0U2NlbmUobmV3IFFHcmFwaGljc1Nj
ZW5lKHRoaXMpKTsKLSAgICBzY2VuZSgpLT5hZGRJdGVtKG1faXRlbSk7CisgICAgbV9pdGVtLT5z
ZXRXaWR0aCg4MDApOworICAgIG1faXRlbS0+c2V0SGVpZ2h0KDYwMCk7CiB9CiAKIFBsYXRmb3Jt
V2ViVmlldzo6UGxhdGZvcm1XZWJWaWV3KFdLQ29udGV4dFJlZiBjb250ZXh0UmVmLCBXS1BhZ2VH
cm91cFJlZiBwYWdlR3JvdXBSZWYpCkBAIC02Myw3ICs2Miw3IEBAIFBsYXRmb3JtV2ViVmlldzo6
UGxhdGZvcm1XZWJWaWV3KFdLQ29udGV4dFJlZiBjb250ZXh0UmVmLCBXS1BhZ2VHcm91cFJlZiBw
YWdlR3JvCiAgICAgbV93aW5kb3ctPnNldEdlb21ldHJ5KDAsIDAsIDgwMCwgNjAwKTsKIAogICAg
IFFGb2N1c0V2ZW50IGV2KFFFdmVudDo6V2luZG93QWN0aXZhdGUpOwotICAgIFFBcHBsaWNhdGlv
bjo6c2VuZEV2ZW50KG1fdmlldy0+c2NlbmUoKSwgJmV2KTsKKyAgICBRQXBwbGljYXRpb246OnNl
bmRFdmVudChtX3ZpZXcsICZldik7CiAgICAgbV92aWV3LT53a1ZpZXcoKS0+c2V0Rm9jdXMoUXQ6
Ok90aGVyRm9jdXNSZWFzb24pOwogfQogCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRUZXN0UnVu
bmVyL3F0L1dlYktpdFRlc3RSdW5uZXIucHJvIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9xdC9X
ZWJLaXRUZXN0UnVubmVyLnBybwppbmRleCBlYjY2MDJmNzEzY2RmMjYxZWYwOTM0OTJjN2M1YjIy
NGY3NDU5MzIwLi44ZTEwNzIwMjE0NTdmNDU3NTdmZDUxZWRlNDRlMjQwMTFiOTUwNmI4IDEwMDY0
NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL3F0L1dlYktpdFRlc3RSdW5uZXIucHJvCisr
KyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvcXQvV2ViS2l0VGVzdFJ1bm5lci5wcm8KQEAgLTMx
LDcgKzMxLDcgQEAgdW5peDohbWFjOiFzeW1iaWFuOiFlbWJlZGRlZCB7CiAgICAgUEtHQ09ORklH
ICs9IGZvbnRjb25maWcKIH0KIAotUVQgPSBjb3JlIGd1aSBuZXR3b3JrCitRVCA9IGNvcmUgZ3Vp
IG5ldHdvcmsgZGVjbGFyYXRpdmUKIAogSEVBREVSUyA9IFwKICAgICAkJEJBU0VESVIvUGxhdGZv
cm1XZWJWaWV3LmggXAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>102160</attachid>
            <date>2011-07-27 11:59:01 -0700</date>
            <delta_ts>2011-07-27 12:21:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-62969-20110727210504.patch</filename>
            <type>text/plain</type>
            <size>43283</size>
            <attacher name="Benjamin Poulain">benjamin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogOTE4NTcKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvcXQv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cKaW5kZXggYmUyNTYxZjY5NzI5
MzU2MzcyNjgwMjJlMThlZWI4MDZlZmU4MDFkZi4uNTY1NTRiOTJhZjk5NWYwMmM0NTI0ZDA3ZGE2
OTc0ZDQwYTBkNjgxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cKKysr
IGIvU291cmNlL1dlYktpdC9xdC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAxMS0wNy0y
NyAgQmVuamFtaW4gUG91bGFpbiAgPGJlbmphbWluQHdlYmtpdC5vcmc+CisKKyAgICAgICAgW1dL
Ml1bUXRdIE1vdmUgZnJvbSBRR3JhcGhpY3NWaWV3IHRvIFF0IFNjZW5lIEdyYXBoCisgICAgICAg
IGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02Mjk2OQorCisgICAgICAg
IFJldmlld2VkIGJ5IEFuZHJlYXMgS2xpbmcuCisKKyAgICAgICAgQ28tYXV0aG9yZWQgd2l0aCBT
aW1vbiBIYXVzbWFubiAgPHNpbW9uLmhhdXNtYW5uQG5va2lhLmNvbT4KKworICAgICAgICBBZGQg
dGhlIGRlY2xhcmF0aXZlIGRlcGVuZGVuY3kgdG8gbGluayBXZWJLaXQuCisKKyAgICAgICAgKiBR
dFdlYktpdC5wcm86CisKIDIwMTEtMDctMjcgIENhaW8gTWFyY2VsbyBkZSBPbGl2ZWlyYSBGaWxo
byAgPGNhaW8ub2xpdmVpcmFAb3BlbmJvc3NhLm9yZz4KIAogICAgICAgICBbUXRdIFF0V2Via2l0
IG5ldmVyIGZpbmlzaGVzIGxvYWRpbmcgc2l0ZXMgd2hlbiB0aGV5IGFyZSBsb2FkZWQgYWZ0ZXIg
YW4gaW5pdGlhbCBRVXJsIGZhaWxzIHRvIGxvYWQuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L3F0L1F0V2ViS2l0LnBybyBiL1NvdXJjZS9XZWJLaXQvcXQvUXRXZWJLaXQucHJvCmluZGV4IDhh
ZThhODcwMTkxY2ZlZTFmNjA3YTdlMzIzNzUzYmZhNGUzOWJmZDMuLjNjNTgwODkxZTVjMWUxY2U2
OTY2Mzg5ODgyODYzM2MwY2M2OGE1MjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvcXQvUXRX
ZWJLaXQucHJvCisrKyBiL1NvdXJjZS9XZWJLaXQvcXQvUXRXZWJLaXQucHJvCkBAIC03LDYgKzcs
OCBAQCBURU1QTEFURSA9IGxpYgogCiBERUZJTkVTICs9IEJVSUxESU5HX1dFQktJVAogCit3ZWJr
aXQyOiBRVCArPSBkZWNsYXJhdGl2ZQorCiBSRVNPVVJDRVMgKz0gXAogICAgICQkUFdELy4uLy4u
L1dlYkNvcmUvV2ViQ29yZS5xcmMKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdl
TG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDc1NzU4ZGU5YjkyYjU4ZTU5NmUy
ZDgxZGE4MGQ1NWFhOGJlOWQ2M2QuLjU5NjhlNTc1NGM1ODliN2JhNDhlZjkyOTVjNmQ2MDE4NTBl
MmZiZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsNSArMSwxMDEgQEAKIDIwMTEtMDctMjcgIEJlbmphbWlu
IFBvdWxhaW4gIDxiZW5qYW1pbkB3ZWJraXQub3JnPgogCisgICAgICAgIFtXSzJdW1F0XSBNb3Zl
IGZyb20gUUdyYXBoaWNzVmlldyB0byBRdCBTY2VuZSBHcmFwaAorICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjI5NjkKKworICAgICAgICBSZXZpZXdlZCBi
eSBBbmRyZWFzIEtsaW5nLgorCisgICAgICAgIENvLWF1dGhvcmVkIHdpdGggU2ltb24gSGF1c21h
bm4gIDxzaW1vbi5oYXVzbWFubkBub2tpYS5jb20+CisKKyAgICAgICAgVGhpcyBwYXRjaCBjaGFu
Z2UgdGhlIGJhc2Ugb2YgV2ViS2l0MiBmcm9tIFFHcmFwaGljc1dpZGdldAorICAgICAgICB0byBz
Y2VuZWdyYXBoIGJhc2VkIGl0ZW1zLgorCisgICAgICAgIFFUb3VjaFdlYlZpZXcgYmVjb21lcyBh
IFFTR0l0ZW0gd2l0aCB0aGUgb25seSByb2xlIG9mIGNsaXBwaW5nCisgICAgICAgIGNoaWxkIGl0
ZW1zLgorICAgICAgICBRVG91Y2hXZWJQYWdlIGJlY29tZXMgYSBRU0dQYWludGVkSXRlbSBpbiBv
cmRlciB0byByZW5kZXIgdGhlIGNvbnRlbnQKKyAgICAgICAgb2YgdGhlIGZsYXR0ZW5lZCBwYWdl
LiBUaGlzIGlzIGEgdGVtcG9yYXJ5IHdvcmsgYXJvdW5kIHRvIGdldAorICAgICAgICBzb21ldGhp
bmcgcnVubmluZyB3aXRob3V0IGRlZXAgY2hhbmdlcyBvbiB0aGUgZHJhd2luZyBhcmVhIHByb3h5
LgorCisgICAgICAgIFFEZXNrdG9wV2ViVmlldyBiZWNvbWUgYSBRU0dQYWludGVkSXRlbSBhbmQg
YmVoYXZlIGFzIGJlZm9yZQorICAgICAgICByZWdhcmRpbmcgcmVuZGVyaW5nLiBUaGUgZHJhd2lu
ZyBhcmVhIHByb3h5IGlzIHVzZWQgdG8gcmVuZGVyCisgICAgICAgIHRoZSBmdWxsIGl0ZW0uCisK
KyAgICAgICAgVGhlIGV2ZW50IGRlbGl2ZXJ5IGhhZCB0byBiZSBhZGFwdGVkIGJlY2F1c2UgdGhl
IHNjZW5lZ3JhcGggZG9lcyBub3QKKyAgICAgICAgZm9sbG93IHJlZ3VsYXIgZGVsaXZlcnkgb2Yg
UUV2ZW50cy4gSW5zdGVhZCwgZWFjaCBldmVudCB0eXBlIGlzCisgICAgICAgIGRlbGl2ZXJlZCBk
aXJlY3RseSB0byBhIHNwZWNpZmljIHZpcnR1YWwgZnVuY3Rpb24uCisgICAgICAgIEluIHRoaXMg
cGF0Y2gsIHRoZSBldmVudHMgYXJlIGZvcndhcmRlZCB0byB0aGUgY2xhc3NpYyBRT2JqZWN0Ojpl
dmVudCgpLgorCisgICAgICAgIEZvciB0aGUgZmVhdHVyZXMgdGhhdCBjYW5ub3QgYmUgaW1wbGVt
ZW50ZWQgb24gc2NlbmVncmFwaCAodG9vbHRpcCwgbWVudXMsIGV0YyksCisgICAgICAgIGEgdGVt
cG9yYXJ5IHdvcmthcm91bmQgd2FzIGFkZGVkOiB0aGUgcGFyZW50IGNhbnZhcyBpcyB1c2VkIGFz
IHRoZSB3aWRnZXQgZm9yCisgICAgICAgIHByb3ZpZGluZyB0aGUgZmVhdHVyZS4gVGhpcyBhc3N1
bWVzIHRoZSB3ZWIgdmlld3MgYWxvbmUgaW4gdGhlIGNhbnZhcyBhbmQKKyAgICAgICAgdGFrZSBp
dHMgZnVsbCBzaXplLiBUaGlzIHdpbGwgaGF2ZSB0byBiZSBmaXhlZCBpbiB0aGUgc2NlbmVncmFw
aCBmb3IgdXMgdG8KKyAgICAgICAgaW1wbGVtZW50IHRob3NlIGZlYXR1cmVzLgorCisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9xdC9xZGVza3RvcHdlYnZpZXcuY3BwOgorICAgICAgICAoUURlc2t0
b3BXZWJWaWV3UHJpdmF0ZTo6ZHJhd2luZ0FyZWFTaXplKToKKyAgICAgICAgKFFEZXNrdG9wV2Vi
Vmlld1ByaXZhdGU6OmlzQWN0aXZlKToKKyAgICAgICAgKFFEZXNrdG9wV2ViVmlld1ByaXZhdGU6
OnN0YXJ0RHJhZyk6CisgICAgICAgIChRRGVza3RvcFdlYlZpZXdQcml2YXRlOjpkaWRDaGFuZ2VU
b29sVGlwKToKKyAgICAgICAgKFFEZXNrdG9wV2ViVmlld1ByaXZhdGU6OmRpZENoYW5nZUN1cnNv
cik6CisgICAgICAgIChRRGVza3RvcFdlYlZpZXdQcml2YXRlOjpzaG93Q29udGV4dE1lbnUpOgor
ICAgICAgICAoUURlc2t0b3BXZWJWaWV3OjpRRGVza3RvcFdlYlZpZXcpOgorICAgICAgICAoUURl
c2t0b3BXZWJWaWV3Ojppbml0KToKKyAgICAgICAgKHBhaW50Q3Jhc2hlZFBhZ2UpOgorICAgICAg
ICAoUURlc2t0b3BXZWJWaWV3OjprZXlQcmVzc0V2ZW50KToKKyAgICAgICAgKFFEZXNrdG9wV2Vi
Vmlldzo6a2V5UmVsZWFzZUV2ZW50KToKKyAgICAgICAgKFFEZXNrdG9wV2ViVmlldzo6aW5wdXRN
ZXRob2RFdmVudCk6CisgICAgICAgIChRRGVza3RvcFdlYlZpZXc6OmZvY3VzSW5FdmVudCk6Cisg
ICAgICAgIChRRGVza3RvcFdlYlZpZXc6OmZvY3VzT3V0RXZlbnQpOgorICAgICAgICAoUURlc2t0
b3BXZWJWaWV3Ojptb3VzZVByZXNzRXZlbnQpOgorICAgICAgICAoUURlc2t0b3BXZWJWaWV3Ojpt
b3VzZU1vdmVFdmVudCk6CisgICAgICAgIChRRGVza3RvcFdlYlZpZXc6Om1vdXNlUmVsZWFzZUV2
ZW50KToKKyAgICAgICAgKFFEZXNrdG9wV2ViVmlldzo6bW91c2VEb3VibGVDbGlja0V2ZW50KToK
KyAgICAgICAgKFFEZXNrdG9wV2ViVmlldzo6d2hlZWxFdmVudCk6CisgICAgICAgIChRRGVza3Rv
cFdlYlZpZXc6OnRvdWNoRXZlbnQpOgorICAgICAgICAoUURlc2t0b3BXZWJWaWV3Ojpob3ZlckVu
dGVyRXZlbnQpOgorICAgICAgICAoUURlc2t0b3BXZWJWaWV3Ojpob3Zlck1vdmVFdmVudCk6Cisg
ICAgICAgIChRRGVza3RvcFdlYlZpZXc6OmhvdmVyTGVhdmVFdmVudCk6CisgICAgICAgIChRRGVz
a3RvcFdlYlZpZXc6OmRyYWdNb3ZlRXZlbnQpOgorICAgICAgICAoUURlc2t0b3BXZWJWaWV3Ojpk
cmFnRW50ZXJFdmVudCk6CisgICAgICAgIChRRGVza3RvcFdlYlZpZXc6OmRyYWdFeGl0RXZlbnQp
OgorICAgICAgICAoUURlc2t0b3BXZWJWaWV3OjpkcmFnRHJvcEV2ZW50KToKKyAgICAgICAgKFFE
ZXNrdG9wV2ViVmlldzo6Z2VvbWV0cnlDaGFuZ2VkKToKKyAgICAgICAgKFFEZXNrdG9wV2ViVmll
dzo6cGFpbnQpOgorICAgICAgICAoUURlc2t0b3BXZWJWaWV3OjpldmVudCk6CisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9xdC9xZGVza3RvcHdlYnZpZXcuaDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
QVBJL3F0L3F0b3VjaHdlYnBhZ2UuY3BwOgorICAgICAgICAoUVRvdWNoV2ViUGFnZTo6UVRvdWNo
V2ViUGFnZSk6CisgICAgICAgIChRVG91Y2hXZWJQYWdlOjpwYWludCk6CisgICAgICAgIChRVG91
Y2hXZWJQYWdlOjpldmVudCk6CisgICAgICAgIChRVG91Y2hXZWJQYWdlOjprZXlQcmVzc0V2ZW50
KToKKyAgICAgICAgKFFUb3VjaFdlYlBhZ2U6OmtleVJlbGVhc2VFdmVudCk6CisgICAgICAgIChR
VG91Y2hXZWJQYWdlOjppbnB1dE1ldGhvZEV2ZW50KToKKyAgICAgICAgKFFUb3VjaFdlYlBhZ2U6
OmZvY3VzSW5FdmVudCk6CisgICAgICAgIChRVG91Y2hXZWJQYWdlOjpmb2N1c091dEV2ZW50KToK
KyAgICAgICAgKFFUb3VjaFdlYlBhZ2U6OnRvdWNoRXZlbnQpOgorICAgICAgICAoUVRvdWNoV2Vi
UGFnZTo6Z2VvbWV0cnlDaGFuZ2VkKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3F0L3F0b3Vj
aHdlYnBhZ2UuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL3F0L3F0b3VjaHdlYnZpZXcuY3Bw
OgorICAgICAgICAoUVRvdWNoV2ViVmlld1ByaXZhdGU6OnNjcm9sbCk6CisgICAgICAgIChRVG91
Y2hXZWJWaWV3OjpRVG91Y2hXZWJWaWV3KToKKyAgICAgICAgKFFUb3VjaFdlYlZpZXc6Omdlb21l
dHJ5Q2hhbmdlZCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9xdC9xdG91Y2h3ZWJ2aWV3Lmg6
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9xdC90ZXN0cy90ZXN0cy5wcmk6CisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9xdC90ZXN0cy90ZXN0d2luZG93Lmg6CisgICAgICAgIChUZXN0V2luZG93
OjpUZXN0V2luZG93KToKKyAgICAgICAgKFRlc3RXaW5kb3c6OnJlc2l6ZUV2ZW50KToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvcXQvVG91Y2hWaWV3SW50ZXJmYWNlLmNwcDoKKyAgICAgICAgKFdlYktp
dDo6VG91Y2hWaWV3SW50ZXJmYWNlOjpwYW5HZXN0dXJlUmVxdWVzdFNjcm9sbCk6CisgICAgICAg
IChXZWJLaXQ6OlRvdWNoVmlld0ludGVyZmFjZTo6cGluY2hHZXN0dXJlUmVxdWVzdFVwZGF0ZSk6
CisgICAgICAgIChXZWJLaXQ6OlRvdWNoVmlld0ludGVyZmFjZTo6ZHJhd2luZ0FyZWFTaXplKToK
KyAgICAgICAgKFdlYktpdDo6VG91Y2hWaWV3SW50ZXJmYWNlOjpjb250ZW50U2l6ZUNoYW5nZWQp
OgorICAgICAgICAoV2ViS2l0OjpUb3VjaFZpZXdJbnRlcmZhY2U6OmlzQWN0aXZlKToKKyAgICAg
ICAgKiBVSVByb2Nlc3MvcXQvVmlld0ludGVyZmFjZS5jcHA6IFJlbW92ZWQuCisgICAgICAgICog
VUlQcm9jZXNzL3F0L1ZpZXdJbnRlcmZhY2UuaDoKKyAgICAgICAgKiBXZWJLaXQyLnBybzoKKwor
MjAxMS0wNy0yNyAgQmVuamFtaW4gUG91bGFpbiAgPGJlbmphbWluQHdlYmtpdC5vcmc+CisKICAg
ICAgICAgW1F0XVtXSzJdIENsZWFuIFdLUGFnZUxvYWRlckNsaWVudAogICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjUyNDYKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xZGVza3RvcHdlYnZpZXcuY3BwIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xZGVza3RvcHdlYnZpZXcuY3BwCmluZGV4IGY2YjUw
Yzg1MGNjNGQxYWQ5NjM5ZGM1NTAxMjE4OTA1YjIxMzE1ODMuLjAzYmE5MzZjMDM0MzkxNWRiOGZl
MjgwYzU2OWJlYjBhZTM4ZjliZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvcXQvcWRlc2t0b3B3ZWJ2aWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL3F0L3FkZXNrdG9wd2Vidmlldy5jcHAKQEAgLTIzLDkgKzIzLDE5IEBACiAjaW5jbHVk
ZSAicWRlc2t0b3B3ZWJ2aWV3X3AuaCIKICNpbmNsdWRlICJxd2tjb250ZXh0LmgiCiAKLSNpbmNs
dWRlIDxRQ3Vyc29yPgogI2luY2x1ZGUgPFFHcmFwaGljc1NjZW5lUmVzaXplRXZlbnQ+CiAjaW5j
bHVkZSA8UVN0eWxlT3B0aW9uR3JhcGhpY3NJdGVtPgorI2luY2x1ZGUgPFF0RGVjbGFyYXRpdmUv
cXNnY2FudmFzLmg+CisjaW5jbHVkZSA8UXREZWNsYXJhdGl2ZS9xc2dldmVudC5oPgorI2luY2x1
ZGUgPFF0RGVjbGFyYXRpdmUvcXNnaXRlbS5oPgorI2luY2x1ZGUgPFF0R3VpL1FDdXJzb3I+Cisj
aW5jbHVkZSA8UXRHdWkvUUZvY3VzRXZlbnQ+CisjaW5jbHVkZSA8UXRHdWkvUUdyYXBoaWNzU2Nl
bmVFdmVudD4KKyNpbmNsdWRlIDxRdEd1aS9RSG92ZXJFdmVudD4KKyNpbmNsdWRlIDxRdEd1aS9R
SW5wdXRNZXRob2RFdmVudD4KKyNpbmNsdWRlIDxRdEd1aS9RS2V5RXZlbnQ+CisjaW5jbHVkZSA8
UXRHdWkvUVRvdWNoRXZlbnQ+CisjaW5jbHVkZSA8UXRHdWkvUVdoZWVsRXZlbnQ+CiAKIFFEZXNr
dG9wV2ViVmlld1ByaXZhdGU6OlFEZXNrdG9wV2ViVmlld1ByaXZhdGUoUURlc2t0b3BXZWJWaWV3
KiBxLCBXS0NvbnRleHRSZWYgY29udGV4dFJlZiwgV0tQYWdlR3JvdXBSZWYgcGFnZUdyb3VwUmVm
KQogICAgIDogcShxKQpAQCAtNDEsNyArNTEsNyBAQCB2b2lkIFFEZXNrdG9wV2ViVmlld1ByaXZh
dGU6OnNldFZpZXdOZWVkc0Rpc3BsYXkoY29uc3QgUVJlY3QmIGludmFsaWRhdGVkQXJlYSkKIAog
UVNpemUgUURlc2t0b3BXZWJWaWV3UHJpdmF0ZTo6ZHJhd2luZ0FyZWFTaXplKCkKIHsKLSAgICBy
ZXR1cm4gcS0+c2l6ZSgpLnRvU2l6ZSgpOworICAgIHJldHVybiBRU2l6ZShxLT53aWR0aCgpLCBx
LT5oZWlnaHQoKSk7CiB9CiAKIHZvaWQgUURlc2t0b3BXZWJWaWV3UHJpdmF0ZTo6Y29udGVudFNp
emVDaGFuZ2VkKGNvbnN0IFFTaXplJikKQEAgLTUwLDcgKzYwLDggQEAgdm9pZCBRRGVza3RvcFdl
YlZpZXdQcml2YXRlOjpjb250ZW50U2l6ZUNoYW5nZWQoY29uc3QgUVNpemUmKQogCiBib29sIFFE
ZXNrdG9wV2ViVmlld1ByaXZhdGU6OmlzQWN0aXZlKCkKIHsKLSAgICByZXR1cm4gcS0+aXNBY3Rp
dmUoKTsKKyAgICAvLyBGSVhNRTogVGhlIHNjZW5lIGdyYXBoIGRpZCBub3QgaGF2ZSB0aGUgY29u
Y2VwdCBvZiBiZWluZyBhY3RpdmUgb3Igbm90IHdoZW4gdGhpcyB3YXMgd3JpdHRlbi4KKyAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIAogYm9vbCBRRGVza3RvcFdlYlZpZXdQcml2YXRlOjpoYXNGb2N1cygp
CkBAIC02NSw3ICs3Niw3IEBAIGJvb2wgUURlc2t0b3BXZWJWaWV3UHJpdmF0ZTo6aXNWaXNpYmxl
KCkKIAogdm9pZCBRRGVza3RvcFdlYlZpZXdQcml2YXRlOjpzdGFydERyYWcoUXQ6OkRyb3BBY3Rp
b25zIHN1cHBvcnRlZERyb3BBY3Rpb25zLCBjb25zdCBRSW1hZ2UmIGRyYWdJbWFnZSwgUU1pbWVE
YXRhKiBkYXRhLCBRUG9pbnQqIGNsaWVudFBvc2l0aW9uLCBRUG9pbnQqIGdsb2JhbFBvc2l0aW9u
LCBRdDo6RHJvcEFjdGlvbiogZHJvcEFjdGlvbikKIHsKLSAgICBRV2lkZ2V0KiB3aWRnZXQgPSBW
aWV3SW50ZXJmYWNlOjpvd25lcldpZGdldChxKTsKKyAgICBRV2lkZ2V0KiB3aWRnZXQgPSBxLT5j
YW52YXMoKTsKICAgICBpZiAoIXdpZGdldCkKICAgICAgICAgcmV0dXJuOwogCkBAIC04OSw3ICsx
MDAsOCBAQCB2b2lkIFFEZXNrdG9wV2ViVmlld1ByaXZhdGU6OmRpZENoYW5nZVRpdGxlKGNvbnN0
IFFTdHJpbmcmIG5ld1RpdGxlKQogCiB2b2lkIFFEZXNrdG9wV2ViVmlld1ByaXZhdGU6OmRpZENo
YW5nZVRvb2xUaXAoY29uc3QgUVN0cmluZyYgbmV3VG9vbFRpcCkKIHsKLSAgICBxLT5zZXRUb29s
VGlwKG5ld1Rvb2xUaXApOworICAgIC8vIEZJWE1FOiBBZGQgYSBwcm9wZXIgaW1wbGVtZW50YXRp
b24gd2hlbiBRdCA1IHN1cHBvcnRzIHRvb2x0aXAuCisgICAgcS0+Y2FudmFzKCktPnNldFRvb2xU
aXAobmV3VG9vbFRpcCk7CiB9CiAKIHZvaWQgUURlc2t0b3BXZWJWaWV3UHJpdmF0ZTo6ZGlkQ2hh
bmdlU3RhdHVzVGV4dChjb25zdCBRU3RyaW5nJiBuZXdNZXNzYWdlKQpAQCAtOTksNyArMTExLDgg
QEAgdm9pZCBRRGVza3RvcFdlYlZpZXdQcml2YXRlOjpkaWRDaGFuZ2VTdGF0dXNUZXh0KGNvbnN0
IFFTdHJpbmcmIG5ld01lc3NhZ2UpCiAKIHZvaWQgUURlc2t0b3BXZWJWaWV3UHJpdmF0ZTo6ZGlk
Q2hhbmdlQ3Vyc29yKGNvbnN0IFFDdXJzb3ImIG5ld0N1cnNvcikKIHsKLSAgICBxLT5zZXRDdXJz
b3IobmV3Q3Vyc29yKTsKKyAgICAvLyBGSVhNRTogYWRkIHByb3BlciBjdXJzb3IgaGFuZGxpbmcg
d2hlbiBRdCA1IHN1cHBvcnRzIGl0LgorICAgIHEtPmNhbnZhcygpLT5zZXRDdXJzb3IobmV3Q3Vy
c29yKTsKIH0KIAogdm9pZCBRRGVza3RvcFdlYlZpZXdQcml2YXRlOjpsb2FkRGlkQmVnaW4oKQpA
QCAtMTMxLDcgKzE0NCw3IEBAIHZvaWQgUURlc2t0b3BXZWJWaWV3UHJpdmF0ZTo6c2hvd0NvbnRl
eHRNZW51KFFTaGFyZWRQb2ludGVyPFFNZW51PiBtZW51KQogICAgIGlmIChtZW51LT5pc0VtcHR5
KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIFFXaWRnZXQqIHdpZGdldCA9IFZpZXdJbnRlcmZh
Y2U6Om93bmVyV2lkZ2V0KHEpOworICAgIFFXaWRnZXQqIHdpZGdldCA9IHEtPmNhbnZhcygpOwog
ICAgIGlmICghd2lkZ2V0KQogICAgICAgICByZXR1cm47CiAKQEAgLTE1MCwyMyArMTYzLDI0IEBA
IHZvaWQgUURlc2t0b3BXZWJWaWV3UHJpdmF0ZTo6aGlkZUNvbnRleHRNZW51KCkKICAgICAgICAg
YWN0aXZlTWVudS0+aGlkZSgpOwogfQogCi1RRGVza3RvcFdlYlZpZXc6OlFEZXNrdG9wV2ViVmll
dygpCi0gICAgOiBkKG5ldyBRRGVza3RvcFdlYlZpZXdQcml2YXRlKHRoaXMpKQorUURlc2t0b3BX
ZWJWaWV3OjpRRGVza3RvcFdlYlZpZXcoUVNHSXRlbSogcGFyZW50KQorICAgIDogUVNHUGFpbnRl
ZEl0ZW0ocGFyZW50KQorICAgICwgZChuZXcgUURlc2t0b3BXZWJWaWV3UHJpdmF0ZSh0aGlzKSkK
IHsKICAgICBpbml0KCk7CiB9CiAKLVFEZXNrdG9wV2ViVmlldzo6UURlc2t0b3BXZWJWaWV3KFdL
Q29udGV4dFJlZiBjb250ZXh0UmVmLCBXS1BhZ2VHcm91cFJlZiBwYWdlR3JvdXBSZWYpCi0gICAg
OiBkKG5ldyBRRGVza3RvcFdlYlZpZXdQcml2YXRlKHRoaXMsIGNvbnRleHRSZWYsIHBhZ2VHcm91
cFJlZikpCitRRGVza3RvcFdlYlZpZXc6OlFEZXNrdG9wV2ViVmlldyhXS0NvbnRleHRSZWYgY29u
dGV4dFJlZiwgV0tQYWdlR3JvdXBSZWYgcGFnZUdyb3VwUmVmLCBRU0dJdGVtKiBwYXJlbnQpCisg
ICAgOiBRU0dQYWludGVkSXRlbShwYXJlbnQpCisgICAgLCBkKG5ldyBRRGVza3RvcFdlYlZpZXdQ
cml2YXRlKHRoaXMsIGNvbnRleHRSZWYsIHBhZ2VHcm91cFJlZikpCiB7CiAgICAgaW5pdCgpOwog
fQogCiB2b2lkIFFEZXNrdG9wV2ViVmlldzo6aW5pdCgpCiB7Ci0gICAgc2V0Rm9jdXNQb2xpY3ko
UXQ6OlN0cm9uZ0ZvY3VzKTsKKyAgICBzZXRBY2NlcHRlZE1vdXNlQnV0dG9ucyhRdDo6TW91c2VC
dXR0b25NYXNrKTsKICAgICBzZXRBY2NlcHRIb3ZlckV2ZW50cyh0cnVlKTsKLSAgICBzZXRBY2Nl
cHREcm9wcyh0cnVlKTsKIH0KIAogUURlc2t0b3BXZWJWaWV3Ojp+UURlc2t0b3BXZWJWaWV3KCkK
QEAgLTE5NCwzMyArMjA4LDEzNiBAQCBRQWN0aW9uKiBRRGVza3RvcFdlYlZpZXc6Om5hdmlnYXRp
b25BY3Rpb24oUXRXZWJLaXQ6Ok5hdmlnYXRpb25BY3Rpb24gd2hpY2gpIGNvbgogICAgIHJldHVy
biBkLT5wYWdlLm5hdmlnYXRpb25BY3Rpb24od2hpY2gpOwogfQogCi12b2lkIFFEZXNrdG9wV2Vi
Vmlldzo6cmVzaXplRXZlbnQoUUdyYXBoaWNzU2NlbmVSZXNpemVFdmVudCogZXYpCitzdGF0aWMg
dm9pZCBwYWludENyYXNoZWRQYWdlKFFQYWludGVyKiBwYWludGVyLCBjb25zdCBRUmVjdEYmIHJl
Y3QpCiB7Ci0gICAgZC0+cGFnZS5zZXREcmF3aW5nQXJlYVNpemUoZXYtPm5ld1NpemUoKS50b1Np
emUoKSk7Ci0gICAgUUdyYXBoaWNzV2lkZ2V0OjpyZXNpemVFdmVudChldik7CisgICAgcGFpbnRl
ci0+ZmlsbFJlY3QocmVjdCwgUXQ6OmdyYXkpOworICAgIHBhaW50ZXItPmRyYXdUZXh0KHJlY3Qs
IFF0OjpBbGlnbkNlbnRlciwgUUxhdGluMVN0cmluZygiOigiKSk7CiB9CiAKLXN0YXRpYyB2b2lk
IHBhaW50Q3Jhc2hlZFBhZ2UoUVBhaW50ZXIqIHBhaW50ZXIsIGNvbnN0IFFTdHlsZU9wdGlvbkdy
YXBoaWNzSXRlbSogb3B0aW9uKQordm9pZCBRRGVza3RvcFdlYlZpZXc6OmtleVByZXNzRXZlbnQo
UUtleUV2ZW50KiBldmVudCkKIHsKLSAgICBwYWludGVyLT5maWxsUmVjdChvcHRpb24tPnJlY3Qs
IFF0OjpncmF5KTsKLSAgICBwYWludGVyLT5kcmF3VGV4dChvcHRpb24tPnJlY3QsIFF0OjpBbGln
bkNlbnRlciwgUUxhdGluMVN0cmluZygiOigiKSk7CisgICAgdGhpcy0+ZXZlbnQoZXZlbnQpOwog
fQogCi12b2lkIFFEZXNrdG9wV2ViVmlldzo6cGFpbnQoUVBhaW50ZXIqIHBhaW50ZXIsIGNvbnN0
IFFTdHlsZU9wdGlvbkdyYXBoaWNzSXRlbSogb3B0aW9uLCBRV2lkZ2V0KikKK3ZvaWQgUURlc2t0
b3BXZWJWaWV3OjprZXlSZWxlYXNlRXZlbnQoUUtleUV2ZW50KiBldmVudCkKIHsKKyAgICB0aGlz
LT5ldmVudChldmVudCk7Cit9CisKK3ZvaWQgUURlc2t0b3BXZWJWaWV3OjppbnB1dE1ldGhvZEV2
ZW50KFFJbnB1dE1ldGhvZEV2ZW50KiBldmVudCkKK3sKKyAgICB0aGlzLT5ldmVudChldmVudCk7
Cit9CisKK3ZvaWQgUURlc2t0b3BXZWJWaWV3Ojpmb2N1c0luRXZlbnQoUUZvY3VzRXZlbnQqIGV2
ZW50KQoreworICAgIHRoaXMtPmV2ZW50KGV2ZW50KTsKK30KKwordm9pZCBRRGVza3RvcFdlYlZp
ZXc6OmZvY3VzT3V0RXZlbnQoUUZvY3VzRXZlbnQqIGV2ZW50KQoreworICAgIHRoaXMtPmV2ZW50
KGV2ZW50KTsKK30KKwordm9pZCBRRGVza3RvcFdlYlZpZXc6Om1vdXNlUHJlc3NFdmVudChRR3Jh
cGhpY3NTY2VuZU1vdXNlRXZlbnQqIGV2ZW50KQoreworICAgIHRoaXMtPmV2ZW50KGV2ZW50KTsK
K30KKwordm9pZCBRRGVza3RvcFdlYlZpZXc6Om1vdXNlTW92ZUV2ZW50KFFHcmFwaGljc1NjZW5l
TW91c2VFdmVudCogZXZlbnQpCit7CisgICAgdGhpcy0+ZXZlbnQoZXZlbnQpOworfQorCit2b2lk
IFFEZXNrdG9wV2ViVmlldzo6bW91c2VSZWxlYXNlRXZlbnQoUUdyYXBoaWNzU2NlbmVNb3VzZUV2
ZW50KiBldmVudCkKK3sKKyAgICB0aGlzLT5ldmVudChldmVudCk7Cit9CisKK3ZvaWQgUURlc2t0
b3BXZWJWaWV3Ojptb3VzZURvdWJsZUNsaWNrRXZlbnQoUUdyYXBoaWNzU2NlbmVNb3VzZUV2ZW50
KiBldmVudCkKK3sKKyAgICB0aGlzLT5ldmVudChldmVudCk7Cit9CisKK3ZvaWQgUURlc2t0b3BX
ZWJWaWV3Ojp3aGVlbEV2ZW50KFFXaGVlbEV2ZW50KiBldmVudCkKK3sKKyAgICAvLyBGSVhNRTog
Zm9yIHNvbWUgcmVhc29uLCB0aGUgc2NlbmUgZ3JhcGggZGVsaXZlcnMgUVdoZWVsRXZlbnQgaW5z
dGVhZCBvZiBRR3JhcGhpY3NTY2VuZVdoZWVsRXZlbnQuCisgICAgLy8gV2UgdHJhbnNmb3JtIHRo
ZW0gaW4gUUdyYXBoaWNzU2NlbmVXaGVlbEV2ZW50IGZvciBjb25zaXN0ZW5jeS4gT3RoZXJ3aXNl
IHRoZSBwb3NpdGlvbiB3b3VsZCBiZSBjb21wbGV0ZSBtYWdpYy4KKyAgICAvLyBXZSBzaG91ZCBt
b2RpZnkgdGhlIHNjZW5lZ3JhcGggdG8gZ2V0IHRoZSBjb3JyZWN0IHR5cGUgb2YgZXZlbnRzLgor
ICAgIFFHcmFwaGljc1NjZW5lV2hlZWxFdmVudCBncmFwaGljc0V2ZW50KFFFdmVudDo6R3JhcGhp
Y3NTY2VuZVdoZWVsKTsKKyAgICBncmFwaGljc0V2ZW50LnNldFBvcyhldmVudC0+cG9zKCkpOwor
ICAgIGdyYXBoaWNzRXZlbnQuc2V0QnV0dG9ucyhldmVudC0+YnV0dG9ucygpKTsKKyAgICBncmFw
aGljc0V2ZW50LnNldERlbHRhKGV2ZW50LT5kZWx0YSgpKTsKKyAgICBncmFwaGljc0V2ZW50LnNl
dE1vZGlmaWVycyhldmVudC0+bW9kaWZpZXJzKCkpOworICAgIGdyYXBoaWNzRXZlbnQuc2V0T3Jp
ZW50YXRpb24oZXZlbnQtPm9yaWVudGF0aW9uKCkpOworICAgIGdyYXBoaWNzRXZlbnQuc2V0U2Nl
bmVQb3MobWFwVG9TY2VuZShldmVudC0+cG9zKCkpKTsKKyAgICBncmFwaGljc0V2ZW50LnNldFNj
cmVlblBvcyhldmVudC0+Z2xvYmFsUG9zKCkpOworICAgIHRoaXMtPmV2ZW50KCZncmFwaGljc0V2
ZW50KTsKK30KKwordm9pZCBRRGVza3RvcFdlYlZpZXc6OnRvdWNoRXZlbnQoUVRvdWNoRXZlbnQq
IGV2ZW50KQoreworICAgIHRoaXMtPmV2ZW50KGV2ZW50KTsKK30KKwordm9pZCBRRGVza3RvcFdl
YlZpZXc6OmhvdmVyRW50ZXJFdmVudChRSG92ZXJFdmVudCogZXZlbnQpCit7CisgICAgdGhpcy0+
ZXZlbnQoZXZlbnQpOworfQorCit2b2lkIFFEZXNrdG9wV2ViVmlldzo6aG92ZXJNb3ZlRXZlbnQo
UUhvdmVyRXZlbnQqIGV2ZW50KQoreworICAgIHRoaXMtPmV2ZW50KGV2ZW50KTsKK30KKwordm9p
ZCBRRGVza3RvcFdlYlZpZXc6OmhvdmVyTGVhdmVFdmVudChRSG92ZXJFdmVudCogZXZlbnQpCit7
CisgICAgdGhpcy0+ZXZlbnQoZXZlbnQpOworfQorCit2b2lkIFFEZXNrdG9wV2ViVmlldzo6ZHJh
Z01vdmVFdmVudChRU0dEcmFnRXZlbnQqIGV2ZW50KQoreworICAgIHRoaXMtPmV2ZW50KGV2ZW50
KTsKK30KKwordm9pZCBRRGVza3RvcFdlYlZpZXc6OmRyYWdFbnRlckV2ZW50KFFTR0RyYWdFdmVu
dCogZXZlbnQpCit7CisgICAgdGhpcy0+ZXZlbnQoZXZlbnQpOworfQorCit2b2lkIFFEZXNrdG9w
V2ViVmlldzo6ZHJhZ0V4aXRFdmVudChRU0dEcmFnRXZlbnQqIGV2ZW50KQoreworICAgIHRoaXMt
PmV2ZW50KGV2ZW50KTsKK30KKwordm9pZCBRRGVza3RvcFdlYlZpZXc6OmRyYWdEcm9wRXZlbnQo
UVNHRHJhZ0V2ZW50KiBldmVudCkKK3sKKyAgICB0aGlzLT5ldmVudChldmVudCk7Cit9CisKK3Zv
aWQgUURlc2t0b3BXZWJWaWV3OjpnZW9tZXRyeUNoYW5nZWQoY29uc3QgUVJlY3RGJiBuZXdHZW9t
ZXRyeSwgY29uc3QgUVJlY3RGJiBvbGRHZW9tZXRyeSkKK3sKKyAgICBRU0dQYWludGVkSXRlbTo6
Z2VvbWV0cnlDaGFuZ2VkKG5ld0dlb21ldHJ5LCBvbGRHZW9tZXRyeSk7CisgICAgaWYgKG5ld0dl
b21ldHJ5LnNpemUoKSAhPSBvbGRHZW9tZXRyeS5zaXplKCkpCisgICAgICAgIGQtPnBhZ2Uuc2V0
RHJhd2luZ0FyZWFTaXplKG5ld0dlb21ldHJ5LnNpemUoKS50b1NpemUoKSk7Cit9CisKK3ZvaWQg
UURlc2t0b3BXZWJWaWV3OjpwYWludChRUGFpbnRlciogcGFpbnRlcikKK3sKKyAgICBjb25zdCBR
UmVjdEYgcmVjdCA9IGJvdW5kaW5nUmVjdCgpOwogICAgIGlmIChkLT5pc0NyYXNoZWQpIHsKLSAg
ICAgICAgcGFpbnRDcmFzaGVkUGFnZShwYWludGVyLCBvcHRpb24pOworICAgICAgICBwYWludENy
YXNoZWRQYWdlKHBhaW50ZXIsIHJlY3QpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAg
ZC0+cGFnZS5wYWludChwYWludGVyLCBvcHRpb24tPmV4cG9zZWRSZWN0LnRvQWxpZ25lZFJlY3Qo
KSk7CisgICAgZC0+cGFnZS5wYWludChwYWludGVyLCByZWN0LnRvQWxpZ25lZFJlY3QoKSk7CiB9
CiAKIGJvb2wgUURlc2t0b3BXZWJWaWV3OjpldmVudChRRXZlbnQqIGV2KQogewogICAgIGlmIChk
LT5wYWdlLmhhbmRsZUV2ZW50KGV2KSkKICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgcmV0dXJu
IFFHcmFwaGljc1dpZGdldDo6ZXZlbnQoZXYpOworICAgIHJldHVybiBRU0dJdGVtOjpldmVudChl
dik7CiB9CiAKIFdLUGFnZVJlZiBRRGVza3RvcFdlYlZpZXc6OnBhZ2VSZWYoKSBjb25zdApAQCAt
MjM5LDMgKzM1Niw1IEBAIHZvaWQgUURlc2t0b3BXZWJWaWV3UHJpdmF0ZTo6ZGlkUmVsYXVuY2hQ
cm9jZXNzKCkKICAgICBpc0NyYXNoZWQgPSBmYWxzZTsKICAgICBxLT51cGRhdGUoKTsKIH0KKwor
I2luY2x1ZGUgIm1vY19xZGVza3RvcHdlYnZpZXcuY3BwIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xZGVza3RvcHdlYnZpZXcuaCBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvcXQvcWRlc2t0b3B3ZWJ2aWV3LmgKaW5kZXggZWQyY2Y5NDhiMGVkY2Qz
NTlkNjM1OTRjMTdkOWM3NzA2MmFhNTZlOS4uNjIzNmI4NWI4ZTVhMDQyZDc2NmY1ODNlYWY2NjAw
MzNiYWJhYjk0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9x
ZGVza3RvcHdlYnZpZXcuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Fk
ZXNrdG9wd2Vidmlldy5oCkBAIC0yMywxOSArMjMsMzEgQEAKIAogI2luY2x1ZGUgInF3ZWJraXRn
bG9iYWwuaCIKICNpbmNsdWRlICJxd2Via2l0dHlwZXMuaCIKLSNpbmNsdWRlIDxXZWJLaXQyL1dL
QmFzZS5oPgotCi0jaW5jbHVkZSA8UUdyYXBoaWNzV2lkZ2V0PgogI2luY2x1ZGUgPFFVcmw+Cisj
aW5jbHVkZSA8UXREZWNsYXJhdGl2ZS9xc2dwYWludGVkaXRlbS5oPgorI2luY2x1ZGUgPFdlYktp
dDIvV0tCYXNlLmg+CiAKIGNsYXNzIFFEZXNrdG9wV2ViVmlld1ByaXZhdGU7CiBjbGFzcyBRV2Vi
RXJyb3I7CiAKK1FUX0JFR0lOX05BTUVTUEFDRQorY2xhc3MgUUZvY3VzRXZlbnQ7CitjbGFzcyBR
R3JhcGhpY3NTY2VuZU1vdXNlRXZlbnQ7CitjbGFzcyBRSG92ZXJFdmVudDsKK2NsYXNzIFFJbnB1
dE1ldGhvZEV2ZW50OworY2xhc3MgUUtleUV2ZW50OworY2xhc3MgUVBhaW50ZXI7CitjbGFzcyBR
UmVjdEY7CitjbGFzcyBRU0dEcmFnRXZlbnQ7CitjbGFzcyBRVG91Y2hFdmVudDsKK2NsYXNzIFFX
aGVlbEV2ZW50OworUVRfRU5EX05BTUVTUEFDRQorCiBuYW1lc3BhY2UgV1RSIHsKICAgICBjbGFz
cyBXZWJWaWV3OwogfQogCi1jbGFzcyBRV0VCS0lUX0VYUE9SVCBRRGVza3RvcFdlYlZpZXcgOiBw
dWJsaWMgUUdyYXBoaWNzV2lkZ2V0IHsKK2NsYXNzIFFXRUJLSVRfRVhQT1JUIFFEZXNrdG9wV2Vi
VmlldyA6IHB1YmxpYyBRU0dQYWludGVkSXRlbSB7CiAgICAgUV9PQkpFQ1QKICAgICBRX1BST1BF
UlRZKFFTdHJpbmcgdGl0bGUgUkVBRCB0aXRsZSBOT1RJRlkgdGl0bGVDaGFuZ2VkKQogICAgIFFf
UFJPUEVSVFkoUVVybCB1cmwgUkVBRCB1cmwgTk9USUZZIHVybENoYW5nZWQpCkBAIC00Myw3ICs1
NSw3IEBAIGNsYXNzIFFXRUJLSVRfRVhQT1JUIFFEZXNrdG9wV2ViVmlldyA6IHB1YmxpYyBRR3Jh
cGhpY3NXaWRnZXQgewogICAgIFFfRU5VTVMoTmF2aWdhdGlvbkFjdGlvbikKIAogcHVibGljOgot
ICAgIFFEZXNrdG9wV2ViVmlldygpOworICAgIFFEZXNrdG9wV2ViVmlldyhRU0dJdGVtKiBwYXJl
bnQgPSAwKTsKICAgICB2aXJ0dWFsIH5RRGVza3RvcFdlYlZpZXcoKTsKIAogICAgIFFVcmwgdXJs
KCkgY29uc3Q7CkBAIC02NCwxMyArNzYsMzEgQEAgUV9TSUdOQUxTOgogICAgIHZvaWQgdXJsQ2hh
bmdlZChjb25zdCBRVXJsJik7CiAKIHByb3RlY3RlZDoKLSAgICB2b2lkIHJlc2l6ZUV2ZW50KFFH
cmFwaGljc1NjZW5lUmVzaXplRXZlbnQqKTsKLSAgICB2b2lkIHBhaW50KFFQYWludGVyKiwgY29u
c3QgUVN0eWxlT3B0aW9uR3JhcGhpY3NJdGVtKiwgUVdpZGdldCopOwotCisgICAgdmlydHVhbCB2
b2lkIGtleVByZXNzRXZlbnQoUUtleUV2ZW50Kik7CisgICAgdmlydHVhbCB2b2lkIGtleVJlbGVh
c2VFdmVudChRS2V5RXZlbnQqKTsKKyAgICB2aXJ0dWFsIHZvaWQgaW5wdXRNZXRob2RFdmVudChR
SW5wdXRNZXRob2RFdmVudCopOworICAgIHZpcnR1YWwgdm9pZCBmb2N1c0luRXZlbnQoUUZvY3Vz
RXZlbnQqKTsKKyAgICB2aXJ0dWFsIHZvaWQgZm9jdXNPdXRFdmVudChRRm9jdXNFdmVudCopOwor
ICAgIHZpcnR1YWwgdm9pZCBtb3VzZVByZXNzRXZlbnQoUUdyYXBoaWNzU2NlbmVNb3VzZUV2ZW50
Kik7CisgICAgdmlydHVhbCB2b2lkIG1vdXNlTW92ZUV2ZW50KFFHcmFwaGljc1NjZW5lTW91c2VF
dmVudCopOworICAgIHZpcnR1YWwgdm9pZCBtb3VzZVJlbGVhc2VFdmVudChRR3JhcGhpY3NTY2Vu
ZU1vdXNlRXZlbnQqKTsKKyAgICB2aXJ0dWFsIHZvaWQgbW91c2VEb3VibGVDbGlja0V2ZW50KFFH
cmFwaGljc1NjZW5lTW91c2VFdmVudCopOworICAgIHZpcnR1YWwgdm9pZCB3aGVlbEV2ZW50KFFX
aGVlbEV2ZW50Kik7CisgICAgdmlydHVhbCB2b2lkIHRvdWNoRXZlbnQoUVRvdWNoRXZlbnQqKTsK
KyAgICB2aXJ0dWFsIHZvaWQgaG92ZXJFbnRlckV2ZW50KFFIb3ZlckV2ZW50Kik7CisgICAgdmly
dHVhbCB2b2lkIGhvdmVyTW92ZUV2ZW50KFFIb3ZlckV2ZW50Kik7CisgICAgdmlydHVhbCB2b2lk
IGhvdmVyTGVhdmVFdmVudChRSG92ZXJFdmVudCopOworICAgIHZpcnR1YWwgdm9pZCBkcmFnTW92
ZUV2ZW50KFFTR0RyYWdFdmVudCopOworICAgIHZpcnR1YWwgdm9pZCBkcmFnRW50ZXJFdmVudChR
U0dEcmFnRXZlbnQqKTsKKyAgICB2aXJ0dWFsIHZvaWQgZHJhZ0V4aXRFdmVudChRU0dEcmFnRXZl
bnQqKTsKKyAgICB2aXJ0dWFsIHZvaWQgZHJhZ0Ryb3BFdmVudChRU0dEcmFnRXZlbnQqKTsKKwor
ICAgIHZpcnR1YWwgdm9pZCBnZW9tZXRyeUNoYW5nZWQoY29uc3QgUVJlY3RGJiwgY29uc3QgUVJl
Y3RGJik7CisgICAgdm9pZCBwYWludChRUGFpbnRlciopOwogICAgIHZpcnR1YWwgYm9vbCBldmVu
dChRRXZlbnQqKTsKIAogcHJpdmF0ZToKLSAgICBRRGVza3RvcFdlYlZpZXcoV0tDb250ZXh0UmVm
LCBXS1BhZ2VHcm91cFJlZik7CisgICAgUURlc2t0b3BXZWJWaWV3KFdLQ29udGV4dFJlZiwgV0tQ
YWdlR3JvdXBSZWYsIFFTR0l0ZW0qIHBhcmVudCA9IDApOwogICAgIFdLUGFnZVJlZiBwYWdlUmVm
KCkgY29uc3Q7CiAKICAgICB2b2lkIGluaXQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvcXQvcXRvdWNod2VicGFnZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL3F0L3F0b3VjaHdlYnBhZ2UuY3BwCmluZGV4IDUwYjc2NjA0NzA4YjJiNzY4Yjk1
NmQ4ODQ1MGQ0YmQyMzZiYmM5NzQuLjg4NGMxODUyYzFkNjNmZTVhNDAzMGNmOGIxYjAzNjY0ODZi
MTA1MmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXRvdWNo
d2VicGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xdG91Y2h3
ZWJwYWdlLmNwcApAQCAtMjUsMTkgKzI1LDE0IEBACiAKICNpbmNsdWRlIDxRQXBwbGljYXRpb24+
CiAjaW5jbHVkZSA8UUdyYXBoaWNzU2NlbmVNb3VzZUV2ZW50PgotI2luY2x1ZGUgPFFHcmFwaGlj
c1ZpZXc+CiAjaW5jbHVkZSA8UVBhaW50ZXI+Ci0jaW5jbHVkZSA8UVNjcm9sbEJhcj4KLSNpbmNs
dWRlIDxRU3R5bGVPcHRpb25HcmFwaGljc0l0ZW0+CiAjaW5jbHVkZSA8UVVybD4KICNpbmNsdWRl
IDxRdERlYnVnPgogCi1RVG91Y2hXZWJQYWdlOjpRVG91Y2hXZWJQYWdlKFFHcmFwaGljc0l0ZW0q
IHBhcmVudCkKLSAgICA6IFFHcmFwaGljc1dpZGdldChwYXJlbnQpCitRVG91Y2hXZWJQYWdlOjpR
VG91Y2hXZWJQYWdlKFFTR0l0ZW0qIHBhcmVudCkKKyAgICA6IFFTR1BhaW50ZWRJdGVtKHBhcmVu
dCkKICAgICAsIGQobmV3IFFUb3VjaFdlYlBhZ2VQcml2YXRlKHRoaXMpKQogewotICAgIHNldEZv
Y3VzUG9saWN5KFF0OjpUYWJGb2N1cyk7Ci0gICAgc2V0QWNjZXB0VG91Y2hFdmVudHModHJ1ZSk7
CiB9CiAKIFFUb3VjaFdlYlBhZ2U6On5RVG91Y2hXZWJQYWdlKCkKQEAgLTQ1LDkgKzQwLDkgQEAg
UVRvdWNoV2ViUGFnZTo6flFUb3VjaFdlYlBhZ2UoKQogICAgIGRlbGV0ZSBkOwogfQogCi12b2lk
IFFUb3VjaFdlYlBhZ2U6OnBhaW50KFFQYWludGVyKiBwYWludGVyLCBjb25zdCBRU3R5bGVPcHRp
b25HcmFwaGljc0l0ZW0qIG9wdGlvbiwgUVdpZGdldCopCit2b2lkIFFUb3VjaFdlYlBhZ2U6OnBh
aW50KFFQYWludGVyKiBwYWludGVyKQogewotICAgIGQtPnBhZ2UtPnBhaW50KHBhaW50ZXIsIG9w
dGlvbi0+ZXhwb3NlZFJlY3QudG9BbGlnbmVkUmVjdCgpKTsKKyAgICBkLT5wYWdlLT5wYWludChw
YWludGVyLCBib3VuZGluZ1JlY3QoKS50b0FsaWduZWRSZWN0KCkpOwogfQogCiB2b2lkIFFUb3Vj
aFdlYlBhZ2U6OmxvYWQoY29uc3QgUVVybCYgdXJsKQpAQCAtODIsMTMgKzc3LDQ0IEBAIGJvb2wg
UVRvdWNoV2ViUGFnZTo6ZXZlbnQoUUV2ZW50KiBldikKIAogICAgIGlmIChkLT5wYWdlLT5oYW5k
bGVFdmVudChldikpCiAgICAgICAgIHJldHVybiB0cnVlOwotICAgIHJldHVybiBRR3JhcGhpY3NX
aWRnZXQ6OmV2ZW50KGV2KTsKKyAgICByZXR1cm4gUVNHUGFpbnRlZEl0ZW06OmV2ZW50KGV2KTsK
IH0KIAotdm9pZCBRVG91Y2hXZWJQYWdlOjpyZXNpemVFdmVudChRR3JhcGhpY3NTY2VuZVJlc2l6
ZUV2ZW50KiBldikKK3ZvaWQgUVRvdWNoV2ViUGFnZTo6a2V5UHJlc3NFdmVudChRS2V5RXZlbnQq
IGV2ZW50KQogewotICAgIGQtPnBhZ2UtPnNldERyYXdpbmdBcmVhU2l6ZShldi0+bmV3U2l6ZSgp
LnRvU2l6ZSgpKTsKLSAgICBRR3JhcGhpY3NXaWRnZXQ6OnJlc2l6ZUV2ZW50KGV2KTsKKyAgICB0
aGlzLT5ldmVudChldmVudCk7Cit9CisKK3ZvaWQgUVRvdWNoV2ViUGFnZTo6a2V5UmVsZWFzZUV2
ZW50KFFLZXlFdmVudCogZXZlbnQpCit7CisgICAgdGhpcy0+ZXZlbnQoZXZlbnQpOworfQorCit2
b2lkIFFUb3VjaFdlYlBhZ2U6OmlucHV0TWV0aG9kRXZlbnQoUUlucHV0TWV0aG9kRXZlbnQqIGV2
ZW50KQoreworICAgIHRoaXMtPmV2ZW50KGV2ZW50KTsKK30KKwordm9pZCBRVG91Y2hXZWJQYWdl
Ojpmb2N1c0luRXZlbnQoUUZvY3VzRXZlbnQqIGV2ZW50KQoreworICAgIHRoaXMtPmV2ZW50KGV2
ZW50KTsKK30KKwordm9pZCBRVG91Y2hXZWJQYWdlOjpmb2N1c091dEV2ZW50KFFGb2N1c0V2ZW50
KiBldmVudCkKK3sKKyAgICB0aGlzLT5ldmVudChldmVudCk7Cit9CisKK3ZvaWQgUVRvdWNoV2Vi
UGFnZTo6dG91Y2hFdmVudChRVG91Y2hFdmVudCogZXZlbnQpCit7CisgICAgdGhpcy0+ZXZlbnQo
ZXZlbnQpOworfQorCit2b2lkIFFUb3VjaFdlYlBhZ2U6Omdlb21ldHJ5Q2hhbmdlZChjb25zdCBR
UmVjdEYmIG5ld0dlb21ldHJ5LCBjb25zdCBRUmVjdEYmIG9sZEdlb21ldHJ5KQoreworICAgIFFT
R1BhaW50ZWRJdGVtOjpnZW9tZXRyeUNoYW5nZWQobmV3R2VvbWV0cnksIG9sZEdlb21ldHJ5KTsK
KyAgICBpZiAobmV3R2VvbWV0cnkuc2l6ZSgpICE9IG9sZEdlb21ldHJ5LnNpemUoKSkKKyAgICAg
ICAgZC0+cGFnZS0+c2V0RHJhd2luZ0FyZWFTaXplKG5ld0dlb21ldHJ5LnNpemUoKS50b1NpemUo
KSk7CiB9CiAKIFFBY3Rpb24qIFFUb3VjaFdlYlBhZ2U6Om5hdmlnYXRpb25BY3Rpb24oUXRXZWJL
aXQ6Ok5hdmlnYXRpb25BY3Rpb24gd2hpY2gpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL3F0L3F0b3VjaHdlYnBhZ2UuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvcXQvcXRvdWNod2VicGFnZS5oCmluZGV4IDVmZGQ2ZmRkZjc5ZjkzMzBhOWFlMzZjOWZj
YTc1NzE4NGNlODZjYjcuLjRhMTRjOTVlYjZmMWZkYjQ4YTgyMjRkMTRlZDZlZWY3M2YxYjVjOTYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXRvdWNod2VicGFn
ZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXRvdWNod2VicGFnZS5o
CkBAIC0yNCw3ICsyNCw3IEBACiAjaW5jbHVkZSAicXdlYmtpdGdsb2JhbC5oIgogI2luY2x1ZGUg
InF3ZWJraXR0eXBlcy5oIgogCi0jaW5jbHVkZSA8UUdyYXBoaWNzV2lkZ2V0PgorI2luY2x1ZGUg
PFF0RGVjbGFyYXRpdmUvcXNncGFpbnRlZGl0ZW0uaD4KICNpbmNsdWRlIDxRU2hhcmVkUG9pbnRl
cj4KIAogY2xhc3MgUVRvdWNoV2ViUGFnZVByaXZhdGU7CkBAIC0zNSwxMyArMzUsMTMgQEAgbmFt
ZXNwYWNlIFdlYktpdCB7CiAgICAgY2xhc3MgVG91Y2hWaWV3SW50ZXJmYWNlOwogfQogCi1jbGFz
cyBRV0VCS0lUX0VYUE9SVCBRVG91Y2hXZWJQYWdlIDogcHVibGljIFFHcmFwaGljc1dpZGdldCB7
CitjbGFzcyBRV0VCS0lUX0VYUE9SVCBRVG91Y2hXZWJQYWdlIDogcHVibGljIFFTR1BhaW50ZWRJ
dGVtIHsKICAgICBRX09CSkVDVAogICAgIFFfUFJPUEVSVFkoUVN0cmluZyB0aXRsZSBSRUFEIHRp
dGxlIE5PVElGWSB0aXRsZUNoYW5nZWQpCiAgICAgUV9QUk9QRVJUWShRVXJsIHVybCBSRUFEIHVy
bCBOT1RJRlkgdXJsQ2hhbmdlZCkKIAogcHVibGljOgotICAgIFFUb3VjaFdlYlBhZ2UoUUdyYXBo
aWNzSXRlbSogcGFyZW50ID0gMCk7CisgICAgUVRvdWNoV2ViUGFnZShRU0dJdGVtKiBwYXJlbnQg
PSAwKTsKIAogICAgIHZpcnR1YWwgflFUb3VjaFdlYlBhZ2UoKTsKIApAQCAtNTIsNyArNTIsNyBA
QCBwdWJsaWM6CiAKICAgICBRQWN0aW9uKiBuYXZpZ2F0aW9uQWN0aW9uKFF0V2ViS2l0OjpOYXZp
Z2F0aW9uQWN0aW9uIHdoaWNoKTsKIAotICAgIHZpcnR1YWwgdm9pZCBwYWludChRUGFpbnRlcios
IGNvbnN0IFFTdHlsZU9wdGlvbkdyYXBoaWNzSXRlbSosIFFXaWRnZXQqKTsKKyAgICB2aXJ0dWFs
IHZvaWQgcGFpbnQoUVBhaW50ZXIqKTsKICAgICB2aXJ0dWFsIGJvb2wgZXZlbnQoUUV2ZW50Kik7
CiAKIFFfU0lHTkFMUzoKQEAgLTY0LDcgKzY0LDE0IEBAIFFfU0lHTkFMUzoKICAgICB2b2lkIGxv
YWRQcm9ncmVzcyhpbnQgcHJvZ3Jlc3MpOwogCiBwcm90ZWN0ZWQ6Ci0gICAgdmlydHVhbCB2b2lk
IHJlc2l6ZUV2ZW50KFFHcmFwaGljc1NjZW5lUmVzaXplRXZlbnQqKTsKKyAgICB2aXJ0dWFsIHZv
aWQga2V5UHJlc3NFdmVudChRS2V5RXZlbnQqKTsKKyAgICB2aXJ0dWFsIHZvaWQga2V5UmVsZWFz
ZUV2ZW50KFFLZXlFdmVudCopOworICAgIHZpcnR1YWwgdm9pZCBpbnB1dE1ldGhvZEV2ZW50KFFJ
bnB1dE1ldGhvZEV2ZW50Kik7CisgICAgdmlydHVhbCB2b2lkIGZvY3VzSW5FdmVudChRRm9jdXNF
dmVudCopOworICAgIHZpcnR1YWwgdm9pZCBmb2N1c091dEV2ZW50KFFGb2N1c0V2ZW50Kik7Cisg
ICAgdmlydHVhbCB2b2lkIHRvdWNoRXZlbnQoUVRvdWNoRXZlbnQqKTsKKworICAgIHZpcnR1YWwg
dm9pZCBnZW9tZXRyeUNoYW5nZWQoY29uc3QgUVJlY3RGJiwgY29uc3QgUVJlY3RGJik7CiAKIHBy
aXZhdGU6CiAgICAgUVRvdWNoV2ViUGFnZVByaXZhdGUqIGQ7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3F0b3VjaHdlYnZpZXcuY3BwIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9xdC9xdG91Y2h3ZWJ2aWV3LmNwcAppbmRleCA3NTk2NWQ3NWM3YzY5
ODVlYTJlYzZjM2ZmNmFjN2Q1NGQ5NGMzYTM4Li5jMWJlNWFiNWFiMWIxZjUyMDgyMDcyYjg3MzVk
NjkzZDkzYjEzYmQ3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0
L3F0b3VjaHdlYnZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQv
cXRvdWNod2Vidmlldy5jcHAKQEAgLTM5LDcgKzM5LDggQEAgUVRvdWNoV2ViVmlld1ByaXZhdGU6
OlFUb3VjaFdlYlZpZXdQcml2YXRlKFFUb3VjaFdlYlZpZXcqIHEpCiAKIHZvaWQgUVRvdWNoV2Vi
Vmlld1ByaXZhdGU6OnNjcm9sbChxcmVhbCBkZWx0YVgsIHFyZWFsIGRlbHRhWSkKIHsKLSAgICBw
YWdlVmlldy0+bW92ZUJ5KGRlbHRhWCwgZGVsdGFZKTsKKyAgICBwYWdlVmlldy0+c2V0WChwYWdl
Vmlldy0+eCgpICsgZGVsdGFYKTsKKyAgICBwYWdlVmlldy0+c2V0WShwYWdlVmlldy0+eSgpICsg
ZGVsdGFZKTsKICAgICB2aWV3cG9ydFJlY3RVcGRhdGVkKCk7CiB9CiAKQEAgLTUwLDEwICs1MSwx
MSBAQCB2b2lkIFFUb3VjaFdlYlZpZXdQcml2YXRlOjp2aWV3cG9ydFJlY3RVcGRhdGVkKCkKICAg
ICBwYWdlVmlld1ByaXZhdGUtPnNldFZpZXdwb3J0UmVjdCh2aWV3cG9ydFJlY3RJblBhZ2VWaWV3
Q29vcmRpbmF0ZSk7CiB9CiAKLVFUb3VjaFdlYlZpZXc6OlFUb3VjaFdlYlZpZXcoKQotICAgIDog
ZChuZXcgUVRvdWNoV2ViVmlld1ByaXZhdGUodGhpcykpCitRVG91Y2hXZWJWaWV3OjpRVG91Y2hX
ZWJWaWV3KFFTR0l0ZW0qIHBhcmVudCkKKyAgICA6IFFTR0l0ZW0ocGFyZW50KQorICAgICwgZChu
ZXcgUVRvdWNoV2ViVmlld1ByaXZhdGUodGhpcykpCiB7Ci0gICAgc2V0RmxhZ3MoUUdyYXBoaWNz
SXRlbTo6SXRlbUNsaXBzQ2hpbGRyZW5Ub1NoYXBlKTsKKyAgICBzZXRGbGFncyhRU0dJdGVtOjpJ
dGVtQ2xpcHNDaGlsZHJlblRvU2hhcGUpOwogfQogCiBRVG91Y2hXZWJWaWV3Ojp+UVRvdWNoV2Vi
VmlldygpCkBAIC02Niw4ICs2OCwxMSBAQCBRVG91Y2hXZWJQYWdlKiBRVG91Y2hXZWJWaWV3Ojpw
YWdlKCkKICAgICByZXR1cm4gZC0+cGFnZVZpZXcuZGF0YSgpOwogfQogCi12b2lkIFFUb3VjaFdl
YlZpZXc6OnJlc2l6ZUV2ZW50KFFHcmFwaGljc1NjZW5lUmVzaXplRXZlbnQqIGV2ZW50KQordm9p
ZCBRVG91Y2hXZWJWaWV3OjpnZW9tZXRyeUNoYW5nZWQoY29uc3QgUVJlY3RGJiBuZXdHZW9tZXRy
eSwgY29uc3QgUVJlY3RGJiBvbGRHZW9tZXRyeSkKIHsKLSAgICBRR3JhcGhpY3NXaWRnZXQ6OnJl
c2l6ZUV2ZW50KGV2ZW50KTsKLSAgICBkLT52aWV3cG9ydFJlY3RVcGRhdGVkKCk7CisgICAgUVNH
SXRlbTo6Z2VvbWV0cnlDaGFuZ2VkKG5ld0dlb21ldHJ5LCBvbGRHZW9tZXRyeSk7CisgICAgaWYg
KG5ld0dlb21ldHJ5LnNpemUoKSAhPSBvbGRHZW9tZXRyeS5zaXplKCkpCisgICAgICAgIGQtPnZp
ZXdwb3J0UmVjdFVwZGF0ZWQoKTsKIH0KKworI2luY2x1ZGUgIm1vY19xdG91Y2h3ZWJ2aWV3LmNw
cCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvcXQvcXRvdWNod2Vi
dmlldy5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC9xdG91Y2h3ZWJ2aWV3LmgK
aW5kZXggMDM4NTgwZTlkNTM0MjNjNjljYWYwNTYxNTBlMGZlNzRmYTdiYzJlZi4uNmVhY2JkNDIw
N2Q0YjJlMGUwNjdkODQ0NjcxOTk5NTk5YzNhMDYxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS9xdC9xdG91Y2h3ZWJ2aWV3LmgKKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9xdC9xdG91Y2h3ZWJ2aWV3LmgKQEAgLTIzLDcgKzIzLDcgQEAKIAogI2lu
Y2x1ZGUgInF3ZWJraXRnbG9iYWwuaCIKIAotI2luY2x1ZGUgPFFHcmFwaGljc1dpZGdldD4KKyNp
bmNsdWRlIDxRdERlY2xhcmF0aXZlL3FzZ2l0ZW0uaD4KIAogY2xhc3MgUVRvdWNoV2ViUGFnZTsK
IGNsYXNzIFFUb3VjaFdlYlZpZXdQcml2YXRlOwpAQCAtMzIsMTkgKzMyLDE5IEBAIG5hbWVzcGFj
ZSBXZWJLaXQgewogY2xhc3MgVG91Y2hWaWV3SW50ZXJmYWNlOwogfQogCi1jbGFzcyBRV0VCS0lU
X0VYUE9SVCBRVG91Y2hXZWJWaWV3IDogcHVibGljIFFHcmFwaGljc1dpZGdldAorY2xhc3MgUVdF
QktJVF9FWFBPUlQgUVRvdWNoV2ViVmlldyA6IHB1YmxpYyBRU0dJdGVtCiB7CiAgICAgUV9PQkpF
Q1QKICAgICBRX1BST1BFUlRZKFFUb3VjaFdlYlBhZ2UqIHBhZ2UgUkVBRCBwYWdlKQogCiBwdWJs
aWM6Ci0gICAgUVRvdWNoV2ViVmlldygpOworICAgIFFUb3VjaFdlYlZpZXcoUVNHSXRlbSogcGFy
ZW50ID0gMCk7CiAgICAgflFUb3VjaFdlYlZpZXcoKTsKIAogICAgIFFUb3VjaFdlYlBhZ2UgKnBh
Z2UoKTsKIAogcHJvdGVjdGVkOgotICAgIHZvaWQgcmVzaXplRXZlbnQoUUdyYXBoaWNzU2NlbmVS
ZXNpemVFdmVudCopOworICAgIHZpcnR1YWwgdm9pZCBnZW9tZXRyeUNoYW5nZWQoY29uc3QgUVJl
Y3RGJiwgY29uc3QgUVJlY3RGJik7CiAKIHByaXZhdGU6CiAgICAgZnJpZW5kIGNsYXNzIFdlYktp
dDo6VG91Y2hWaWV3SW50ZXJmYWNlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9xdC90ZXN0cy90ZXN0cy5wcmkgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJ
L3F0L3Rlc3RzL3Rlc3RzLnByaQppbmRleCAyOTMyZTFjNjNlZTU5MjViOGEwYzc4NDYyYzIyOWYz
YjNlMWIxYzk3Li5jZjZhNWYxOThlNGU3MDliYTFhOGM1Yzg5NGJkOGQwYzE3YzY1Yzk5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL3Rlc3RzLnByaQor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL3Rlc3RzLnByaQpAQCAt
MTAsNyArMTAsNyBAQCBTT1VSQ0VTICs9ICQke1RBUkdFVH0uY3BwCiBJTkNMVURFUEFUSCArPSAk
JFBXRAogCiBpbmNsdWRlKC4uLy4uLy4uLy4uLy4uL1dlYktpdC5wcmkpCi1RVCArPSB0ZXN0bGli
CitRVCArPSB0ZXN0bGliIGRlY2xhcmF0aXZlCiAKIFFNQUtFX1JQQVRIRElSID0gJCRPVVRQVVRf
RElSL2xpYiAkJFFNQUtFX1JQQVRIRElSCiBERUZJTkVTICs9IFRFU1RTX1NPVVJDRV9ESVI9XFxc
IiQkUFdEXFxcIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9xdC90
ZXN0cy90ZXN0d2luZG93LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Rlc3Rz
L3Rlc3R3aW5kb3cuaAppbmRleCAyN2MxNWJkYTc0NTdlOWJhOGM4NDNkZGQyNTFmNWU0ZTkzYWQ2
MDg5Li4xOGMxM2U1YmFkNjRiZDk2YTE2Mzk5YjE1OTA3YmJhNmJmMmFmN2RkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL3Rlc3R3aW5kb3cuaAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3F0L3Rlc3RzL3Rlc3R3aW5kb3cuaApAQCAt
MjAsMzkgKzIwLDM1IEBACiAjaWZuZGVmIHRlc3R3aW5kb3dfaAogI2RlZmluZSB0ZXN0d2luZG93
X2gKIAotI2luY2x1ZGUgPFFHcmFwaGljc1NjZW5lPgotI2luY2x1ZGUgPFFHcmFwaGljc1ZpZXc+
Ci0jaW5jbHVkZSA8UUdyYXBoaWNzV2lkZ2V0PgogI2luY2x1ZGUgPFFSZXNpemVFdmVudD4KICNp
bmNsdWRlIDxRU2NvcGVkUG9pbnRlcj4KKyNpbmNsdWRlIDxRdERlY2xhcmF0aXZlL3FzZ2NhbnZh
cy5oPgorI2luY2x1ZGUgPFF0RGVjbGFyYXRpdmUvcXNnaXRlbS5oPgogCiAvLyBUZXN0V2luZG93
OiBVdGlsaXR5IGNsYXNzIHRvIGlnbm9yZSBRR3JhcGhpY3NWaWV3IGRldGFpbHMuCi1jbGFzcyBU
ZXN0V2luZG93IDogcHVibGljIFFHcmFwaGljc1ZpZXcgeworY2xhc3MgVGVzdFdpbmRvdyA6IHB1
YmxpYyBRU0dDYW52YXMgewogcHVibGljOgotICAgIGlubGluZSBUZXN0V2luZG93KFFHcmFwaGlj
c1dpZGdldCogd2ViVmlldyk7Ci0gICAgUVNjb3BlZFBvaW50ZXI8UUdyYXBoaWNzV2lkZ2V0ID53
ZWJWaWV3OworICAgIGlubGluZSBUZXN0V2luZG93KFFTR0l0ZW0qIHdlYlZpZXcpOworICAgIFFT
Y29wZWRQb2ludGVyPFFTR0l0ZW0+IHdlYlZpZXc7CiAKIHByb3RlY3RlZDoKICAgICBpbmxpbmUg
dm9pZCByZXNpemVFdmVudChRUmVzaXplRXZlbnQqKTsKIH07CiAKLWlubGluZSBUZXN0V2luZG93
OjpUZXN0V2luZG93KFFHcmFwaGljc1dpZGdldCogd2ViVmlldykKK2lubGluZSBUZXN0V2luZG93
OjpUZXN0V2luZG93KFFTR0l0ZW0qIHdlYlZpZXcpCiAgICAgOiB3ZWJWaWV3KHdlYlZpZXcpCiB7
CiAgICAgUV9BU1NFUlQod2ViVmlldyk7Ci0gICAgc2V0RnJhbWVTdHlsZShRRnJhbWU6Ok5vRnJh
bWUgfCBRRnJhbWU6OlBsYWluKTsKLQotICAgIFFHcmFwaGljc1NjZW5lKiBjb25zdCBzY2VuZSA9
IG5ldyBRR3JhcGhpY3NTY2VuZSh0aGlzKTsKLSAgICBzZXRTY2VuZShzY2VuZSk7Ci0gICAgc2Nl
bmUtPmFkZEl0ZW0od2ViVmlldyk7CisgICAgd2ViVmlldy0+c2V0UGFyZW50SXRlbShyb290SXRl
bSgpKTsKIH0KIAogaW5saW5lIHZvaWQgVGVzdFdpbmRvdzo6cmVzaXplRXZlbnQoUVJlc2l6ZUV2
ZW50KiBldmVudCkKIHsKLSAgICBRR3JhcGhpY3NWaWV3OjpyZXNpemVFdmVudChldmVudCk7Ci0g
ICAgUVJlY3RGIHJlY3QoUVBvaW50KDAsIDApLCBldmVudC0+c2l6ZSgpKTsKLSAgICB3ZWJWaWV3
LT5zZXRHZW9tZXRyeShyZWN0KTsKLSAgICBzY2VuZSgpLT5zZXRTY2VuZVJlY3QocmVjdCk7Cisg
ICAgUVNHQ2FudmFzOjpyZXNpemVFdmVudChldmVudCk7CisgICAgd2ViVmlldy0+c2V0WCgwKTsK
KyAgICB3ZWJWaWV3LT5zZXRZKDApOworICAgIHdlYlZpZXctPnNldFdpZHRoKGV2ZW50LT5zaXpl
KCkud2lkdGgoKSk7CisgICAgd2ViVmlldy0+c2V0SGVpZ2h0KGV2ZW50LT5zaXplKCkuaGVpZ2h0
KCkpOwogfQogCiAjZW5kaWYgLyogdGVzdHdpbmRvd19oICovCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvcXQvVG91Y2hWaWV3SW50ZXJmYWNlLmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9xdC9Ub3VjaFZpZXdJbnRlcmZhY2UuY3BwCmluZGV4IGY1ZGM0ZjMyZWNk
ZDMwNGZmNDM1NTc4YTA0ZjliYzViYWM1Y2E3ZjAuLmM0NzY3NGRjZjNkMTQzNzgzNTVkYjk3YmI2
MmM5MDgyZTMyOTYwNDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9U
b3VjaFZpZXdJbnRlcmZhY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9U
b3VjaFZpZXdJbnRlcmZhY2UuY3BwCkBAIC00Niw3ICs0Niw4IEBAIHZvaWQgVG91Y2hWaWV3SW50
ZXJmYWNlOjpwYW5HZXN0dXJlU3RhcnRlZCgpCiB2b2lkIFRvdWNoVmlld0ludGVyZmFjZTo6cGFu
R2VzdHVyZVJlcXVlc3RTY3JvbGwocXJlYWwgZGVsdGFYLCBxcmVhbCBkZWx0YVkpCiB7CiAgICAg
Ly8gVHJhbnNsYXRlIHRoZSBkZWx0YSBmcm9tIHBhZ2UgdG8gdmlld3BvcnQgY29vcmRpbmF0ZXMu
Ci0gICAgUVBvaW50RiBkZXN0SW5WaWV3cG9ydENvb3JkcyA9IG1fdmlld3BvcnRWaWV3LT5tYXBG
cm9tSXRlbShtX3BhZ2VWaWV3LCBtX3BhZ2VWaWV3LT5tYXBGcm9tUGFyZW50KG1fcGFnZVZpZXct
PnBvcygpKSArIFFQb2ludEYoZGVsdGFYLCBkZWx0YVkpKTsKKyAgICBRUG9pbnRGIGl0ZW1Qb3Np
dGlvbkluSXRlbUNvb3JkcyA9IG1fcGFnZVZpZXctPm1hcEZyb21JdGVtKG1fcGFnZVZpZXctPnBh
cmVudEl0ZW0oKSwgbV9wYWdlVmlldy0+cG9zKCkpOworICAgIFFQb2ludEYgZGVzdEluVmlld3Bv
cnRDb29yZHMgPSBtX3ZpZXdwb3J0Vmlldy0+bWFwRnJvbUl0ZW0obV9wYWdlVmlldywgaXRlbVBv
c2l0aW9uSW5JdGVtQ29vcmRzICsgUVBvaW50RihkZWx0YVgsIGRlbHRhWSkpOwogICAgIFFQb2lu
dEYgb2Zmc2V0SW5WaWV3cG9ydENvb3JkcyA9IGRlc3RJblZpZXdwb3J0Q29vcmRzIC0gbV92aWV3
cG9ydFZpZXctPm1hcEZyb21JdGVtKG1fcGFnZVZpZXctPnBhcmVudEl0ZW0oKSwgbV9wYWdlVmll
dy0+cG9zKCkpOwogICAgIG1fdmlld3BvcnRWaWV3LT5kLT5zY3JvbGwob2Zmc2V0SW5WaWV3cG9y
dENvb3Jkcy54KCksIG9mZnNldEluVmlld3BvcnRDb29yZHMueSgpKTsKIH0KQEAgLTcwLDEyICs3
MSwxNSBAQCB2b2lkIFRvdWNoVmlld0ludGVyZmFjZTo6cGluY2hHZXN0dXJlU3RhcnRlZCgpCiAK
IHZvaWQgVG91Y2hWaWV3SW50ZXJmYWNlOjpwaW5jaEdlc3R1cmVSZXF1ZXN0VXBkYXRlKGNvbnN0
IFFQb2ludEYmIHBpbmNoQ2VudGVySW5QYWdlVmlld0Nvb3JkaW5hdGUsIHFyZWFsIHRvdGFsU2Nh
bGVGYWN0b3IpCiB7Ci0gICAgLy8gRklYTUU6IGl0IGlzIGEgYml0IG1vcmUgY29tcGxpY2F0ZWQg
dGhhbiB0aGF0LCBjaGFuZ2VzIG9mIHRoZSBjZW50ZXIgcG9zaXRpb24gc2hvdWxkIG1vdmUgdGhl
IHBhZ2UgZXZlbgotICAgIC8vIGlmIHRoZSB6b29tIGZhY3RvciBkb2VzIG5vdCBjaGFuZ2UuIEJv
dGggdGhlIHpvb20gYW5kIHRoZSBwYW5uaW5nIHNob3VsZCBiZSBoYW5kbGVkIHRocm91Z2ggdGhl
IHBoeXNpY3MKLSAgICAvLyBlbmdpbmUuCisgICAgLy8gRklYTUU6IGl0IGlzIGEgbW9yZSBjb21w
bGljYXRlZCB0aGFuIHRoYXQ6CisgICAgLy8gLXRoZSBzY2FsZSBzaG91bGQgYmUgZG9uZSBjZW50
ZXJlZCBvbiB0aGUgcGluY2ggY2VudGVyLgorICAgIC8vIC1jaGFuZ2VzIG9mIHRoZSBjZW50ZXIg
cG9zaXRpb24gc2hvdWxkIG1vdmUgdGhlIHBhZ2UgZXZlbiBpZiB0aGUgem9vbSBmYWN0b3IKKyAg
ICAvLyAgZG9lcyBub3QgY2hhbmdlLiBCb3RoIHRoZSB6b29tIGFuZCB0aGUgcGFubmluZyBzaG91
bGQgYmUgaGFuZGxlZCB0aHJvdWdoIHRoZSBwaHlzaWNzIGVuZ2luZS4KICAgICBjb25zdCBxcmVh
bCBzY2FsZSA9IG1fcGluY2hTdGFydFNjYWxlICogdG90YWxTY2FsZUZhY3RvcjsKLSAgICBtX3Bh
Z2VWaWV3LT5zZXRUcmFuc2Zvcm1PcmlnaW5Qb2ludChwaW5jaENlbnRlckluUGFnZVZpZXdDb29y
ZGluYXRlKTsKKyAgICBRUG9pbnRGIG9sZFBpbmNoQ2VudGVyT25QYXJlbnQgPSBtX3BhZ2VWaWV3
LT5tYXBUb0l0ZW0obV9wYWdlVmlldy0+cGFyZW50SXRlbSgpLCBwaW5jaENlbnRlckluUGFnZVZp
ZXdDb29yZGluYXRlKTsKICAgICBtX3BhZ2VWaWV3LT5zZXRTY2FsZShzY2FsZSk7CisgICAgUVBv
aW50RiBuZXdQaW5jaENlbnRlck9uUGFyZW50ID0gbV9wYWdlVmlldy0+bWFwVG9JdGVtKG1fcGFn
ZVZpZXctPnBhcmVudEl0ZW0oKSwgcGluY2hDZW50ZXJJblBhZ2VWaWV3Q29vcmRpbmF0ZSk7Cisg
ICAgbV9wYWdlVmlldy0+c2V0UG9zKG1fcGFnZVZpZXctPnBvcygpIC0gKG5ld1BpbmNoQ2VudGVy
T25QYXJlbnQgLSBvbGRQaW5jaENlbnRlck9uUGFyZW50KSk7CiB9CiAKIHZvaWQgVG91Y2hWaWV3
SW50ZXJmYWNlOjpwaW5jaEdlc3R1cmVFbmRlZCgpCkBAIC05NCw3ICs5OCw3IEBAIHZvaWQgVG91
Y2hWaWV3SW50ZXJmYWNlOjpzZXRWaWV3TmVlZHNEaXNwbGF5KGNvbnN0IFFSZWN0JiBpbnZhbGlk
YXRlZFJlY3QpCiAKIFFTaXplIFRvdWNoVmlld0ludGVyZmFjZTo6ZHJhd2luZ0FyZWFTaXplKCkK
IHsKLSAgICByZXR1cm4gbV9wYWdlVmlldy0+c2l6ZSgpLnRvU2l6ZSgpOworICAgIHJldHVybiBR
U2l6ZShtX3BhZ2VWaWV3LT53aWR0aCgpLCBtX3BhZ2VWaWV3LT5oZWlnaHQoKSk7CiB9CiAKIHZv
aWQgVG91Y2hWaWV3SW50ZXJmYWNlOjpjb250ZW50U2l6ZUNoYW5nZWQoY29uc3QgUVNpemUmIG5l
d1NpemUpCkBAIC0xMDQsMTMgKzEwOCwxNSBAQCB2b2lkIFRvdWNoVmlld0ludGVyZmFjZTo6Y29u
dGVudFNpemVDaGFuZ2VkKGNvbnN0IFFTaXplJiBuZXdTaXplKQogICAgIC8vIC1jaGFuZ2UgdGhl
IHpvb20gbGV2ZWwgaWYgbmVlZGVkCiAgICAgLy8gLW1vdmUgdGhlIHBhZ2UgYmFjayBpbiB2aWV3
cG9ydCBib3VuZGFyaWVzIGlmIG5lZWRlZAogICAgIC8vIC11cGRhdGUgdGhlIHZpZXdwb3J0IHJl
Y3QKLSAgICBtX3BhZ2VWaWV3LT5yZXNpemUobmV3U2l6ZSk7CisgICAgbV9wYWdlVmlldy0+c2V0
V2lkdGgobmV3U2l6ZS53aWR0aCgpKTsKKyAgICBtX3BhZ2VWaWV3LT5zZXRIZWlnaHQobmV3U2l6
ZS5oZWlnaHQoKSk7CiAgICAgbV92aWV3cG9ydFZpZXctPmQtPnZpZXdwb3J0UmVjdFVwZGF0ZWQo
KTsKIH0KIAogYm9vbCBUb3VjaFZpZXdJbnRlcmZhY2U6OmlzQWN0aXZlKCkKIHsKLSAgICByZXR1
cm4gbV9wYWdlVmlldy0+aXNBY3RpdmUoKTsKKyAgICAvLyBGSVhNRTogVGhlIHNjZW5lIGdyYXBo
IGRvZXMgbm90IGhhdmUgdGhlIGNvbmNlcHQgb2YgYmVpbmcgYWN0aXZlIG9yIG5vdCB3aGVuIHRo
aXMgd2FzIHdyaXR0ZW4uCisgICAgcmV0dXJuIHRydWU7CiB9CiAKIGJvb2wgVG91Y2hWaWV3SW50
ZXJmYWNlOjpoYXNGb2N1cygpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
cXQvVmlld0ludGVyZmFjZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQvVmlld0lu
dGVyZmFjZS5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY3MWJiYWNkZDRkMDc3
NjM2ZmUyZmRmMWQ0OTU2NTdmOWZmOTI0ZTEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1ZpZXdJbnRlcmZh
Y2UuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsNDQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAo
QykgMjAxMSBOb2tpYSBDb3Jwb3JhdGlvbiBhbmQvb3IgaXRzIHN1YnNpZGlhcnkoLWllcykKLSAq
Ci0gKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUg
aXQgYW5kL29yCi0gKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFy
eSBHZW5lcmFsIFB1YmxpYwotICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29m
dHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9y
IChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogVGhpcyBwcm9ncmFt
IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiBi
dXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50
eSBvZgotICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQ
T1NFLiAgU2VlIHRoZSBHTlUKLSAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3Ig
bW9yZSBkZXRhaWxzLgotICoKLSAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2Yg
dGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSAqIGFsb25nIHdpdGggdGhp
cyBwcm9ncmFtOyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0g
KiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQs
IEZpZnRoIEZsb29yLAotICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0gKgotICovCi0K
LSNpbmNsdWRlICJWaWV3SW50ZXJmYWNlLmgiCi0KLSNpbmNsdWRlIDxRdENvcmUvUVJlY3Q+Ci0j
aW5jbHVkZSA8UXRDb3JlL1FTaXplPgotI2luY2x1ZGUgPFF0R3VpL1FHcmFwaGljc1NjZW5lPgot
I2luY2x1ZGUgPFF0R3VpL1FHcmFwaGljc1ZpZXc+Ci0jaW5jbHVkZSA8UXRHdWkvUUdyYXBoaWNz
V2lkZ2V0PgotI2luY2x1ZGUgPFF0R3VpL1FXaWRnZXQ+Ci0KLW5hbWVzcGFjZSBXZWJLaXQgewot
Ci1RV2lkZ2V0KiBWaWV3SW50ZXJmYWNlOjpvd25lcldpZGdldChjb25zdCBRR3JhcGhpY3NXaWRn
ZXQqIHdpZGdldCkKLXsKLSAgICBpZiAoIXdpZGdldCB8fCAhd2lkZ2V0LT5zY2VuZSgpIHx8IHdp
ZGdldC0+c2NlbmUoKS0+dmlld3MoKS5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybiAwOwotCi0g
ICAgUUxpc3Q8UUdyYXBoaWNzVmlldyo+IHZpZXdzID0gd2lkZ2V0LT5zY2VuZSgpLT52aWV3cygp
OwotICAgIGlmICh2aWV3cy5zaXplKCkgPiAxKQotICAgICAgICBxV2FybmluZygiQ2Fubm90IHN1
cHBvcnQgbXVsdGlwbGUgdmlld3MiKTsKLQotICAgIHJldHVybiB2aWV3cy5hdCgwKTsKLX0KLQot
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1ZpZXdJbnRlcmZhY2Uu
aCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9WaWV3SW50ZXJmYWNlLmgKaW5kZXggODNj
MDcyY2VlODk1ZWZiZDFjNGQxMDBiYmY1NTljMGIxNWRlZTNlZi4uNDI5OTNjYjYwMDQ0N2FkNGM4
ZjZkNTY3ODUxMjdkNjJhMTU1OWU1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL3F0L1ZpZXdJbnRlcmZhY2UuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvcXQv
Vmlld0ludGVyZmFjZS5oCkBAIC02OSwxMCArNjksNiBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFs
IHZvaWQgcHJvY2Vzc0RpZENyYXNoKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWxhdW5j
aFByb2Nlc3MoKSA9IDA7Ci0KLXByb3RlY3RlZDoKLSAgICAvKiBVdGlsaXR5IGZ1bmN0aW9ucyBm
b3IgdGhlIGltcGxlbWVudGF0aW9ucy4gKi8KLSAgICBzdGF0aWMgUVdpZGdldCogb3duZXJXaWRn
ZXQoY29uc3QgUUdyYXBoaWNzV2lkZ2V0Kik7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJLaXQyLnBybyBiL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIucHJvCmluZGV4IDY0
NzI1OWQ4M2M2ZmRlYWQ3NTRjZmIwNTZiYjk3YTQ1NTQwMTdkMTguLjZiMzg5YjdjNzFlMTk1ODli
MWY3NDFmOGMwMTY5OTgzZTc4ZjBhNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYktp
dDIucHJvCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYktpdDIucHJvCkBAIC0xNSw2ICsxNSw4IEBA
IENPTkZJRyArPSBzdGF0aWNsaWIKIFRBUkdFVCA9ICQkV0VCS0lUMl9UQVJHRVQKIERFU1RESVIg
PSAkJFdFQktJVDJfREVTVERJUgogCitRVCArPSBkZWNsYXJhdGl2ZQorCiAjIEJ1aWxkIGJvdGgg
ZGVidWcgYW5kIHJlbGVhc2UgY29uZmlndXJhdGlvbnMKIG1hYzogQ09ORklHICs9IGJ1aWxkX2Fs
bAogCkBAIC00NzYsNyArNDc4LDYgQEAgU09VUkNFUyArPSBcCiAgICAgVUlQcm9jZXNzL3F0L3F3
a2NvbnRleHQuY3BwIFwKICAgICBVSVByb2Nlc3MvcXQvcXdraGlzdG9yeS5jcHAgXAogICAgIFVJ
UHJvY2Vzcy9xdC9xd2twcmVmZXJlbmNlcy5jcHAgXAotICAgIFVJUHJvY2Vzcy9xdC9WaWV3SW50
ZXJmYWNlLmNwcCBcCiAgICAgVUlQcm9jZXNzL3F0L1RpbGVkRHJhd2luZ0FyZWFQcm94eVF0LmNw
cCBcCiAgICAgVUlQcm9jZXNzL3F0L1RpbGVkRHJhd2luZ0FyZWFUaWxlUXQuY3BwIFwKICAgICBV
SVByb2Nlc3MvcXQvVGV4dENoZWNrZXJRdC5jcHAgXApkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdl
TG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDFlMjUyNTkzMGY2YzRjMGQ3Nzc1ZTQyMzY2OGE4
NDFhNjFmNGU2MjQuLjdjZWRiYzZjNDBlMGMyM2U1Y2NmZDZhNzA1ODk1MmY0YTI5NDU1MjIgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwzOCBAQAorMjAxMS0wNy0yNyAgQmVuamFtaW4gUG91bGFpbiAgPGJlbmphbWluQHdlYmtpdC5v
cmc+CisKKyAgICAgICAgW1dLMl1bUXRdIE1vdmUgZnJvbSBRR3JhcGhpY3NWaWV3IHRvIFF0IFNj
ZW5lIEdyYXBoCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD02Mjk2OQorCisgICAgICAgIFJldmlld2VkIGJ5IEFuZHJlYXMgS2xpbmcuCisKKyAgICAgICAg
Q28tYXV0aG9yZWQgd2l0aCBTaW1vbiBIYXVzbWFubiAgPHNpbW9uLmhhdXNtYW5uQG5va2lhLmNv
bT4KKworICAgICAgICBXaXRoIHRoZSBzY2VuZSBncmFwaCwgdGhlIGludGVyZmFjZSB0byBoYXZl
IGEgd2luZG93IG9uIHNjcmVlbiBpcworICAgICAgICBRU0dDYW52YXMuIFFHcmFwaGljc1ZpZXcg
aXMgbm90IHVzZWQsIGFuZCBvcGVuR0wgaXMgYW4gZW5mb3JjZWQKKyAgICAgICAgZGVwZW5kZW5j
eS4KKworICAgICAgICBCb3RoIHRoZSBCcm93c2VyVmlldyBhbmQgdGhlIFdlYktpdFRlc3QgcnVu
bmVyIGFyZSBjaGFuZ2VkIGZyb20KKyAgICAgICAgUUdyYXBoaWNzVmlldyB0byBRU0dDYW52YXMu
CisKKyAgICAgICAgKiBNaW5pQnJvd3Nlci9xdC9Ccm93c2VyVmlldy5jcHA6CisgICAgICAgIChC
cm93c2VyVmlldzo6QnJvd3NlclZpZXcpOgorICAgICAgICAoQnJvd3NlclZpZXc6OnJlc2l6ZUV2
ZW50KToKKyAgICAgICAgKEJyb3dzZXJWaWV3Ojp2aWV3KToKKyAgICAgICAgKiBNaW5pQnJvd3Nl
ci9xdC9Ccm93c2VyVmlldy5oOgorICAgICAgICAqIE1pbmlCcm93c2VyL3F0L0Jyb3dzZXJXaW5k
b3cuY3BwOgorICAgICAgICAoQnJvd3NlcldpbmRvdzo6QnJvd3NlcldpbmRvdyk6CisgICAgICAg
IChCcm93c2VyV2luZG93Ojp1cmxDaGFuZ2VkKToKKyAgICAgICAgKEJyb3dzZXJXaW5kb3c6On5C
cm93c2VyV2luZG93KToKKyAgICAgICAgKiBNaW5pQnJvd3Nlci9xdC9Ccm93c2VyV2luZG93Lmg6
CisgICAgICAgICogTWluaUJyb3dzZXIvcXQvTWluaUJyb3dzZXIucHJvOgorICAgICAgICAqIE1p
bmlCcm93c2VyL3F0L21haW4uY3BwOgorICAgICAgICAobWFpbik6CisgICAgICAgICogV2ViS2l0
VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9xdC9JbmplY3RlZEJ1bmRsZS5wcm86CisgICAgICAg
ICogV2ViS2l0VGVzdFJ1bm5lci9xdC9QbGF0Zm9ybVdlYlZpZXdRdC5jcHA6CisgICAgICAgIChX
VFI6OldlYlZpZXc6OldlYlZpZXcpOgorICAgICAgICAoV1RSOjpQbGF0Zm9ybVdlYlZpZXc6OlBs
YXRmb3JtV2ViVmlldyk6CisgICAgICAgICogV2ViS2l0VGVzdFJ1bm5lci9xdC9XZWJLaXRUZXN0
UnVubmVyLnBybzoKKwogMjAxMS0wNy0yNyAgU2hlcmlmZiBCb3QgIDx3ZWJraXQucmV2aWV3LmJv
dEBnbWFpbC5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjkxNzkyLgpk
aWZmIC0tZ2l0IGEvVG9vbHMvTWluaUJyb3dzZXIvcXQvQnJvd3NlclZpZXcuY3BwIGIvVG9vbHMv
TWluaUJyb3dzZXIvcXQvQnJvd3NlclZpZXcuY3BwCmluZGV4IDNkNmUzOTJmNzg0ZWRlODYwODdh
YjhlNDJkNmY4YzRjMmFkMzQxMTEuLmI1MzYzODQyZGE5ZjkyYzNlYzM3MGY4NGU4NDllN2UxMTNh
YmRiNGYgMTAwNjQ0Ci0tLSBhL1Rvb2xzL01pbmlCcm93c2VyL3F0L0Jyb3dzZXJWaWV3LmNwcAor
KysgYi9Ub29scy9NaW5pQnJvd3Nlci9xdC9Ccm93c2VyVmlldy5jcHAKQEAgLTI5LDI1ICsyOSwy
MCBAQAogI2luY2x1ZGUgIkJyb3dzZXJWaWV3LmgiCiAKICNpbmNsdWRlIDxRR3JhcGhpY3NTY2Vu
ZT4KKyNpbmNsdWRlIDxRdERlY2xhcmF0aXZlL3FzZ2l0ZW0uaD4KKyNpbmNsdWRlIDxRUmVzaXpl
RXZlbnQ+CiAjaW5jbHVkZSA8cWRlc2t0b3B3ZWJ2aWV3Lmg+CiAjaW5jbHVkZSA8cXRvdWNod2Vi
dmlldy5oPgogI2luY2x1ZGUgPHF0b3VjaHdlYnBhZ2UuaD4KIAogQnJvd3NlclZpZXc6OkJyb3dz
ZXJWaWV3KGJvb2wgdXNlVG91Y2hXZWJWaWV3LCBRV2lkZ2V0KiBwYXJlbnQpCi0gICAgOiBRR3Jh
cGhpY3NWaWV3KHBhcmVudCkKKyAgICA6IFFTR0NhbnZhcyhwYXJlbnQpCiAgICAgLCBtX2l0ZW0o
MCkKIHsKICAgICBpZiAodXNlVG91Y2hXZWJWaWV3KQotICAgICAgICBtX2l0ZW0gPSBuZXcgUVRv
dWNoV2ViVmlldzsKKyAgICAgICAgbV9pdGVtID0gbmV3IFFUb3VjaFdlYlZpZXcocm9vdEl0ZW0o
KSk7CiAgICAgZWxzZQotICAgICAgICBtX2l0ZW0gPSBuZXcgUURlc2t0b3BXZWJWaWV3OwotCi0g
ICAgc2V0U2NlbmUobmV3IFFHcmFwaGljc1NjZW5lKHRoaXMpKTsKLSAgICBzY2VuZSgpLT5hZGRJ
dGVtKG1faXRlbSk7Ci0KLSAgICBzZXRGcmFtZVNoYXBlKFFGcmFtZTo6Tm9GcmFtZSk7Ci0gICAg
c2V0SG9yaXpvbnRhbFNjcm9sbEJhclBvbGljeShRdDo6U2Nyb2xsQmFyQWx3YXlzT2ZmKTsKLSAg
ICBzZXRWZXJ0aWNhbFNjcm9sbEJhclBvbGljeShRdDo6U2Nyb2xsQmFyQWx3YXlzT2ZmKTsKKyAg
ICAgICAgbV9pdGVtID0gbmV3IFFEZXNrdG9wV2ViVmlldyhyb290SXRlbSgpKTsKIH0KIAogQnJv
d3NlclZpZXc6On5Ccm93c2VyVmlldygpCkBAIC01OCwxMCArNTMsMTEgQEAgQnJvd3NlclZpZXc6
On5Ccm93c2VyVmlldygpCiAKIHZvaWQgQnJvd3NlclZpZXc6OnJlc2l6ZUV2ZW50KFFSZXNpemVF
dmVudCogZXZlbnQpCiB7Ci0gICAgUUdyYXBoaWNzVmlldzo6cmVzaXplRXZlbnQoZXZlbnQpOwot
ICAgIFFSZWN0RiByZWN0KFFQb2ludCgwLCAwKSwgZXZlbnQtPnNpemUoKSk7Ci0gICAgbV9pdGVt
LT5zZXRHZW9tZXRyeShyZWN0KTsKLSAgICBzY2VuZSgpLT5zZXRTY2VuZVJlY3QocmVjdCk7Cisg
ICAgUVNHQ2FudmFzOjpyZXNpemVFdmVudChldmVudCk7CisgICAgbV9pdGVtLT5zZXRYKDApOwor
ICAgIG1faXRlbS0+c2V0WSgwKTsKKyAgICBtX2l0ZW0tPnNldFdpZHRoKGV2ZW50LT5zaXplKCku
d2lkdGgoKSk7CisgICAgbV9pdGVtLT5zZXRIZWlnaHQoZXZlbnQtPnNpemUoKS5oZWlnaHQoKSk7
CiB9CiAKIHZvaWQgQnJvd3NlclZpZXc6OmxvYWQoY29uc3QgUVN0cmluZyYgdXJsU3RyaW5nKQpA
QCAtNzQsNyArNzAsNyBAQCB2b2lkIEJyb3dzZXJWaWV3Ojpsb2FkKGNvbnN0IFFTdHJpbmcmIHVy
bFN0cmluZykKICAgICAgICAgdG91Y2hXZWJWaWV3KCktPnBhZ2UoKS0+bG9hZCh1cmwpOwogfQog
Ci1RR3JhcGhpY3NXaWRnZXQqIEJyb3dzZXJWaWV3Ojp2aWV3KCkgY29uc3QKK1FTR0l0ZW0qIEJy
b3dzZXJWaWV3Ojp2aWV3KCkgY29uc3QKIHsKICAgICByZXR1cm4gbV9pdGVtOwogfQpkaWZmIC0t
Z2l0IGEvVG9vbHMvTWluaUJyb3dzZXIvcXQvQnJvd3NlclZpZXcuaCBiL1Rvb2xzL01pbmlCcm93
c2VyL3F0L0Jyb3dzZXJWaWV3LmgKaW5kZXggYmI0YWFlZGVmMWQ3MjYwMjI1ZjdjOTllYWRiNDU2
MjliYjk4NjE0NC4uZDhkZDA2MjAyZjhjZDM1NzRlNWY0ZjA5MzZjNmY2ZDc2ZmE2YTU2NyAxMDA2
NDQKLS0tIGEvVG9vbHMvTWluaUJyb3dzZXIvcXQvQnJvd3NlclZpZXcuaAorKysgYi9Ub29scy9N
aW5pQnJvd3Nlci9xdC9Ccm93c2VyVmlldy5oCkBAIC0yOSwxMyArMjksMTQgQEAKICNpZm5kZWYg
QnJvd3NlclZpZXdfaAogI2RlZmluZSBCcm93c2VyVmlld19oCiAKLSNpbmNsdWRlIDxRR3JhcGhp
Y3NWaWV3PgorI2luY2x1ZGUgPFF0RGVjbGFyYXRpdmUvcXNnY2FudmFzLmg+CiAjaW5jbHVkZSA8
cXdlYmtpdHR5cGVzLmg+CiAKIGNsYXNzIFFEZXNrdG9wV2ViVmlldzsKK2NsYXNzIFFTR0l0ZW07
CiBjbGFzcyBRVG91Y2hXZWJWaWV3OwogCi1jbGFzcyBCcm93c2VyVmlldyA6IHB1YmxpYyBRR3Jh
cGhpY3NWaWV3IHsKK2NsYXNzIEJyb3dzZXJWaWV3IDogcHVibGljIFFTR0NhbnZhcyB7CiAgICAg
UV9PQkpFQ1QKIAogcHVibGljOgpAQCAtNDMsNyArNDQsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVh
bCB+QnJvd3NlclZpZXcoKTsKIAogICAgIHZvaWQgbG9hZChjb25zdCBRU3RyaW5nJik7Ci0gICAg
UUdyYXBoaWNzV2lkZ2V0KiB2aWV3KCkgY29uc3Q7CisgICAgUVNHSXRlbSogdmlldygpIGNvbnN0
OwogCiAgICAgUUFjdGlvbiogbmF2aWdhdGlvbkFjdGlvbihRdFdlYktpdDo6TmF2aWdhdGlvbkFj
dGlvbiB3aGljaCkgY29uc3Q7CiAKQEAgLTU0LDcgKzU1LDcgQEAgcHJvdGVjdGVkOgogICAgIHZp
cnR1YWwgdm9pZCByZXNpemVFdmVudChRUmVzaXplRXZlbnQqKTsKIAogcHJpdmF0ZToKLSAgICBR
R3JhcGhpY3NXaWRnZXQqIG1faXRlbTsKKyAgICBRU0dJdGVtKiBtX2l0ZW07CiB9OwogCiAjZW5k
aWYKZGlmZiAtLWdpdCBhL1Rvb2xzL01pbmlCcm93c2VyL3F0L0Jyb3dzZXJXaW5kb3cuY3BwIGIv
VG9vbHMvTWluaUJyb3dzZXIvcXQvQnJvd3NlcldpbmRvdy5jcHAKaW5kZXggYzQwNmZjOWNiYzY2
YmU5ZmY3MGQ5ZTJlNzJlY2ZiYzMxOGQ4MWM3NS4uZGUwNDllMTQzZWY0MWJiMGIwNGE2OGRkMGFk
ZDI3NmNhN2RjNzIyMyAxMDA2NDQKLS0tIGEvVG9vbHMvTWluaUJyb3dzZXIvcXQvQnJvd3Nlcldp
bmRvdy5jcHAKKysrIGIvVG9vbHMvTWluaUJyb3dzZXIvcXQvQnJvd3NlcldpbmRvdy5jcHAKQEAg
LTMzLDEwICszMyw2IEBACiAjaW5jbHVkZSAicXRvdWNod2Vidmlldy5oIgogI2luY2x1ZGUgInF0
b3VjaHdlYnBhZ2UuaCIKIAotI2lmIGRlZmluZWQoUVRfQ09ORklHVVJFRF9XSVRIX09QRU5HTCkK
LSNpbmNsdWRlIDxRR0xXaWRnZXQ+Ci0jZW5kaWYKLQogI2lmIDAKIC8vIEZJWE1FCiBzdGF0aWMg
UVdLUGFnZSogbmV3UGFnZUZ1bmN0aW9uKFFXS1BhZ2UqIHBhZ2UpCkBAIC01OSwxMSArNTUsNiBA
QCBCcm93c2VyV2luZG93OjpCcm93c2VyV2luZG93KFdpbmRvd09wdGlvbnMqIG9wdGlvbnMpCiAK
ICAgICBtX2Jyb3dzZXIgPSBuZXcgQnJvd3NlclZpZXcobV93aW5kb3dPcHRpb25zLnVzZVRvdWNo
V2ViVmlldyk7CiAKLSNpZiBkZWZpbmVkKFFUX0NPTkZJR1VSRURfV0lUSF9PUEVOR0wpCi0gICAg
aWYgKG1fd2luZG93T3B0aW9ucy51c2VRR0xXaWRnZXRWaWV3cG9ydCkKLSAgICAgICAgbV9icm93
c2VyLT5zZXRWaWV3cG9ydChuZXcgUUdMV2lkZ2V0KCkpOwotI2VuZGlmCi0KICAgICBzZXRBdHRy
aWJ1dGUoUXQ6OldBX0RlbGV0ZU9uQ2xvc2UpOwogCiAgICAgY29ubmVjdCh3ZWJWaWV3KCksIFNJ
R05BTChsb2FkUHJvZ3Jlc3MoaW50KSksIFNMT1QobG9hZFByb2dyZXNzKGludCkpKTsKQEAgLTEx
MywxMiArMTA0LDYgQEAgQnJvd3NlcldpbmRvdzo6QnJvd3NlcldpbmRvdyhXaW5kb3dPcHRpb25z
KiBvcHRpb25zKQogICAgIGNvbm5lY3QodGhpcywgU0lHTkFMKGVudGVyZWRGdWxsU2NyZWVuTW9k
ZShib29sKSksIHRoaXMsIFNMT1QodG9nZ2xlRnVsbFNjcmVlbk1vZGUoYm9vbCkpKTsKIAogICAg
IFFNZW51KiB0b29sc01lbnUgPSBtZW51QmFyKCktPmFkZE1lbnUoIiZEZXZlbG9wIik7Ci0jaWYg
ZGVmaW5lZChRVF9DT05GSUdVUkVEX1dJVEhfT1BFTkdMKQotICAgIFFBY3Rpb24qIHRvZ2dsZUdM
Vmlld3BvcnQgPSB0b29sc01lbnUtPmFkZEFjdGlvbigiVG9nZ2xlIEdMIFZpZXdwb3J0IiwgdGhp
cywgU0xPVCh0b2dnbGVHTFZpZXdwb3J0KGJvb2wpKSk7Ci0gICAgdG9nZ2xlR0xWaWV3cG9ydC0+
c2V0Q2hlY2thYmxlKHRydWUpOwotICAgIHRvZ2dsZUdMVmlld3BvcnQtPnNldENoZWNrZWQobV93
aW5kb3dPcHRpb25zLnVzZVFHTFdpZGdldFZpZXdwb3J0KTsKLSNlbmRpZgotICAgIHRvb2xzTWVu
dS0+YWRkU2VwYXJhdG9yKCk7CiAgICAgdG9vbHNNZW51LT5hZGRBY3Rpb24oIkNoYW5nZSBVc2Vy
IEFnZW50IiwgdGhpcywgU0xPVChzaG93VXNlckFnZW50RGlhbG9nKCkpKTsKICAgICB0b29sc01l
bnUtPmFkZFNlcGFyYXRvcigpOwogICAgIHRvb2xzTWVudS0+YWRkQWN0aW9uKCJMb2FkIFVSTHMg
ZnJvbSBmaWxlIiwgdGhpcywgU0xPVChsb2FkVVJMTGlzdEZyb21GaWxlKCkpKTsKQEAgLTIwMSw3
ICsxODYsNyBAQCB2b2lkIEJyb3dzZXJXaW5kb3c6OnVybENoYW5nZWQoY29uc3QgUVVybCYgdXJs
KQogewogICAgIG1fYWRkcmVzc0Jhci0+c2V0VGV4dCh1cmwudG9TdHJpbmcoKSk7CiAgICAgbV9i
cm93c2VyLT5zZXRGb2N1cygpOwotICAgIG1fYnJvd3Nlci0+dmlldygpLT5zZXRGb2N1cygpOwor
ICAgIG1fYnJvd3Nlci0+dmlldygpLT5zZXRGb2N1cyh0cnVlKTsKIH0KIAogdm9pZCBCcm93c2Vy
V2luZG93OjpvcGVuRmlsZSgpCkBAIC0zMzAsMTAgKzMxNSwzIEBAIEJyb3dzZXJXaW5kb3c6On5C
cm93c2VyV2luZG93KCkKICAgICBkZWxldGUgbV9hZGRyZXNzQmFyOwogICAgIGRlbGV0ZSBtX2Jy
b3dzZXI7CiB9Ci0KLXZvaWQgQnJvd3NlcldpbmRvdzo6dG9nZ2xlR0xWaWV3cG9ydChib29sIHVz
ZVFHTFdpZGdldFZpZXdwb3J0KQotewotI2lmIGRlZmluZWQoUVRfQ09ORklHVVJFRF9XSVRIX09Q
RU5HTCkKLSAgICBtX2Jyb3dzZXItPnNldFZpZXdwb3J0KHVzZVFHTFdpZGdldFZpZXdwb3J0ID8g
bmV3IFFHTFdpZGdldCgpIDogMCk7Ci0jZW5kaWYKLX0KZGlmZiAtLWdpdCBhL1Rvb2xzL01pbmlC
cm93c2VyL3F0L0Jyb3dzZXJXaW5kb3cuaCBiL1Rvb2xzL01pbmlCcm93c2VyL3F0L0Jyb3dzZXJX
aW5kb3cuaAppbmRleCA4NjFmMjMwNGJmNWRmMTUwMGViZGI2YTczYTNjZmE2OGYyN2ZiMDhiLi5m
OWNmMzk3ODAzZTU0NGZlMGRiNDRjNDA0YzYxMDI1MDY5ZmNkNzc0IDEwMDY0NAotLS0gYS9Ub29s
cy9NaW5pQnJvd3Nlci9xdC9Ccm93c2VyV2luZG93LmgKKysrIGIvVG9vbHMvTWluaUJyb3dzZXIv
cXQvQnJvd3NlcldpbmRvdy5oCkBAIC03MCw4ICs3MCw2IEBAIHByb3RlY3RlZCBzbG90czoKIAog
ICAgIHZvaWQgcHJpbnRVUkwoY29uc3QgUVVybCYpOwogCi0gICAgdm9pZCB0b2dnbGVHTFZpZXdw
b3J0KGJvb2wpOwotCiBwcml2YXRlOgogICAgIHZvaWQgdXBkYXRlVXNlckFnZW50TGlzdCgpOwog
CmRpZmYgLS1naXQgYS9Ub29scy9NaW5pQnJvd3Nlci9xdC9NaW5pQnJvd3Nlci5wcm8gYi9Ub29s
cy9NaW5pQnJvd3Nlci9xdC9NaW5pQnJvd3Nlci5wcm8KaW5kZXggNDEwMWUyNTZkMzMzY2U2MjM4
MDg4MGVhZmQ5MWY1NDE5YjkwYmI3Yy4uMzk4MTUxMWUzYWMwNDBiMjcwNWQwYWNmMmMzYzkzMmUx
YTc0ZTdjNyAxMDA2NDQKLS0tIGEvVG9vbHMvTWluaUJyb3dzZXIvcXQvTWluaUJyb3dzZXIucHJv
CisrKyBiL1Rvb2xzL01pbmlCcm93c2VyL3F0L01pbmlCcm93c2VyLnBybwpAQCAtMzAsNyArMzAs
NyBAQCBJTkNMVURFUEFUSCArPSBcCiBERVNURElSID0gJCRPVVRQVVRfRElSL2JpbgogIUNPTkZJ
RyhzdGFuZGFsb25lX3BhY2thZ2UpOiBDT05GSUcgLT0gYXBwX2J1bmRsZQogCi1RVCArPSBuZXR3
b3JrCitRVCArPSBuZXR3b3JrIGRlY2xhcmF0aXZlCiBtYWN4OlFUKz14bWwKIAogbGludXgtKiB7
CmRpZmYgLS1naXQgYS9Ub29scy9NaW5pQnJvd3Nlci9xdC9tYWluLmNwcCBiL1Rvb2xzL01pbmlC
cm93c2VyL3F0L21haW4uY3BwCmluZGV4IDM0YmNlM2U4OTAyMjkxYWRlMDJjYjc1OGQ5ODYzODli
MDRmNmRkZmMuLjJkNTc4ZDg0ODY5NzM1MGI2MzIzZmU5YWJkZmQ4YzJmMTdmNzQ2ZGIgMTAwNjQ0
Ci0tLSBhL1Rvb2xzL01pbmlCcm93c2VyL3F0L21haW4uY3BwCisrKyBiL1Rvb2xzL01pbmlCcm93
c2VyL3F0L21haW4uY3BwCkBAIC0zNiw2ICszNiw5IEBACiAKIGludCBtYWluKGludCBhcmdjLCBj
aGFyKiogYXJndikKIHsKKyAgICAvLyBGSVhNRTogV2UgbXVzdCBhZGQgc3VwcG9ydCBmb3IgdGhl
IHRocmVhZGVkIHJlbmRlcmluZyBhcyBpdCBpcyB0aGUgZGVmYXVsdC4KKyAgICBxcHV0ZW52KCJR
TUxfTk9fVEhSRUFERURfUkVOREVSRVIiLCBRQnl0ZUFycmF5KCIxIikpOworCiAgICAgTWluaUJy
b3dzZXJBcHBsaWNhdGlvbiBhcHAoYXJnYywgYXJndik7CiAKICAgICBpZiAoYXBwLmlzUm9ib3Rp
emVkKCkpIHsKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvSW5qZWN0ZWRCdW5k
bGUvcXQvSW5qZWN0ZWRCdW5kbGUucHJvIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3Rl
ZEJ1bmRsZS9xdC9JbmplY3RlZEJ1bmRsZS5wcm8KaW5kZXggZjc4ZWE0MTYxZDE1MzNhNDQ4NThi
NGVjMTEzYTQ4OWQyOTU1OGVmNi4uYmFmMGZjYTMxNGViNWI3ZDI1N2Q4YjQ4Njg5OGQzMzc0YzNh
YjliOSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3RlZEJ1bmRsZS9x
dC9JbmplY3RlZEJ1bmRsZS5wcm8KKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9JbmplY3Rl
ZEJ1bmRsZS9xdC9JbmplY3RlZEJ1bmRsZS5wcm8KQEAgLTgsNiArOCw4IEBAIENPTkZJRyhzdGFu
ZGFsb25lX3BhY2thZ2UpIHsKICAgICBpc0VtcHR5KFdDX0dFTkVSQVRFRF9TT1VSQ0VTX0RJUik6
V0NfR0VORVJBVEVEX1NPVVJDRVNfRElSID0gLi4vLi4vLi4vLi4vU291cmNlL1dlYkNvcmUvZ2Vu
ZXJhdGVkCiB9CiAKK1FUICs9IGRlY2xhcmF0aXZlCisKIEdFTkVSQVRFRF9TT1VSQ0VTX0RJUiA9
IC4uLy4uL2dlbmVyYXRlZAogCiBTT1VSQ0VTICs9IFwKZGlmZiAtLWdpdCBhL1Rvb2xzL1dlYktp
dFRlc3RSdW5uZXIvcXQvUGxhdGZvcm1XZWJWaWV3UXQuY3BwIGIvVG9vbHMvV2ViS2l0VGVzdFJ1
bm5lci9xdC9QbGF0Zm9ybVdlYlZpZXdRdC5jcHAKaW5kZXggODdmNGE3ZjgyY2VjNmZlNTM1NGEx
MzExNjcyMzA4MDdkY2RlMGFlNi4uNzgyMDM4YzE3YWQ5MDMyNDI3N2YyYWUyNDI1NmVhNjZmYTEy
NjY2ZSAxMDA2NDQKLS0tIGEvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9xdC9QbGF0Zm9ybVdlYlZp
ZXdRdC5jcHAKKysrIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5lci9xdC9QbGF0Zm9ybVdlYlZpZXdR
dC5jcHAKQEAgLTI4LDExICsyOCwxMiBAQAogCiAjaW5jbHVkZSAiUGxhdGZvcm1XZWJWaWV3Lmgi
CiAjaW5jbHVkZSAicWRlc2t0b3B3ZWJ2aWV3LmgiCisjaW5jbHVkZSA8UXREZWNsYXJhdGl2ZS9x
c2djYW52YXMuaD4KICNpbmNsdWRlIDxRdEd1aT4KIAogbmFtZXNwYWNlIFdUUiB7CiAKLWNsYXNz
IFdlYlZpZXcgOiBwdWJsaWMgUUdyYXBoaWNzVmlldyB7CitjbGFzcyBXZWJWaWV3IDogcHVibGlj
IFFTR0NhbnZhcyB7CiBwdWJsaWM6CiAgICAgV2ViVmlldyhXS0NvbnRleHRSZWYsIFdLUGFnZUdy
b3VwUmVmKTsKIApAQCAtNDYsMTIgKzQ3LDEwIEBAIHByaXZhdGU6CiB9OwogCiBXZWJWaWV3OjpX
ZWJWaWV3KFdLQ29udGV4dFJlZiBjb250ZXh0UmVmLCBXS1BhZ2VHcm91cFJlZiBwYWdlR3JvdXBS
ZWYpCi0gICAgOiBRR3JhcGhpY3NWaWV3KCkKLSAgICAsIG1faXRlbShuZXcgUURlc2t0b3BXZWJW
aWV3KGNvbnRleHRSZWYsIHBhZ2VHcm91cFJlZikpCisgICAgOiBtX2l0ZW0obmV3IFFEZXNrdG9w
V2ViVmlldyhjb250ZXh0UmVmLCBwYWdlR3JvdXBSZWYsIHJvb3RJdGVtKCkpKQogewotICAgIG1f
aXRlbS0+c2V0UHJlZmVycmVkU2l6ZSg4MDAsIDYwMCk7Ci0gICAgc2V0U2NlbmUobmV3IFFHcmFw
aGljc1NjZW5lKHRoaXMpKTsKLSAgICBzY2VuZSgpLT5hZGRJdGVtKG1faXRlbSk7CisgICAgbV9p
dGVtLT5zZXRXaWR0aCg4MDApOworICAgIG1faXRlbS0+c2V0SGVpZ2h0KDYwMCk7CiB9CiAKIFBs
YXRmb3JtV2ViVmlldzo6UGxhdGZvcm1XZWJWaWV3KFdLQ29udGV4dFJlZiBjb250ZXh0UmVmLCBX
S1BhZ2VHcm91cFJlZiBwYWdlR3JvdXBSZWYpCkBAIC02Myw3ICs2Miw3IEBAIFBsYXRmb3JtV2Vi
Vmlldzo6UGxhdGZvcm1XZWJWaWV3KFdLQ29udGV4dFJlZiBjb250ZXh0UmVmLCBXS1BhZ2VHcm91
cFJlZiBwYWdlR3JvCiAgICAgbV93aW5kb3ctPnNldEdlb21ldHJ5KDAsIDAsIDgwMCwgNjAwKTsK
IAogICAgIFFGb2N1c0V2ZW50IGV2KFFFdmVudDo6V2luZG93QWN0aXZhdGUpOwotICAgIFFBcHBs
aWNhdGlvbjo6c2VuZEV2ZW50KG1fdmlldy0+c2NlbmUoKSwgJmV2KTsKKyAgICBRQXBwbGljYXRp
b246OnNlbmRFdmVudChtX3ZpZXcsICZldik7CiAgICAgbV92aWV3LT53a1ZpZXcoKS0+c2V0Rm9j
dXMoUXQ6Ok90aGVyRm9jdXNSZWFzb24pOwogfQogCmRpZmYgLS1naXQgYS9Ub29scy9XZWJLaXRU
ZXN0UnVubmVyL3F0L1dlYktpdFRlc3RSdW5uZXIucHJvIGIvVG9vbHMvV2ViS2l0VGVzdFJ1bm5l
ci9xdC9XZWJLaXRUZXN0UnVubmVyLnBybwppbmRleCBlYjY2MDJmNzEzY2RmMjYxZWYwOTM0OTJj
N2M1YjIyNGY3NDU5MzIwLi44ZTEwNzIwMjE0NTdmNDU3NTdmZDUxZWRlNDRlMjQwMTFiOTUwNmI4
IDEwMDY0NAotLS0gYS9Ub29scy9XZWJLaXRUZXN0UnVubmVyL3F0L1dlYktpdFRlc3RSdW5uZXIu
cHJvCisrKyBiL1Rvb2xzL1dlYktpdFRlc3RSdW5uZXIvcXQvV2ViS2l0VGVzdFJ1bm5lci5wcm8K
QEAgLTMxLDcgKzMxLDcgQEAgdW5peDohbWFjOiFzeW1iaWFuOiFlbWJlZGRlZCB7CiAgICAgUEtH
Q09ORklHICs9IGZvbnRjb25maWcKIH0KIAotUVQgPSBjb3JlIGd1aSBuZXR3b3JrCitRVCA9IGNv
cmUgZ3VpIG5ldHdvcmsgZGVjbGFyYXRpdmUKIAogSEVBREVSUyA9IFwKICAgICAkJEJBU0VESVIv
UGxhdGZvcm1XZWJWaWV3LmggXAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>