<?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>99850</bug_id>
          
          <creation_ts>2012-10-19 10:11:30 -0700</creation_ts>
          <short_desc>[EFL][WK2] Use the port independent PageViewportController</short_desc>
          <delta_ts>2012-10-23 08:44:40 -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>WebKit EFL</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Yael">yael</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>abecsi</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>joone</cc>
    
    <cc>jturcotte</cc>
    
    <cc>kenneth</cc>
    
    <cc>laszlo.gombos</cc>
    
    <cc>lucas.de.marchi</cc>
    
    <cc>menard</cc>
    
    <cc>noam</cc>
    
    <cc>rakuco</cc>
    
    <cc>tmpsantos</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>746404</commentid>
    <comment_count>0</comment_count>
    <who name="Yael">yael</who>
    <bug_when>2012-10-19 10:11:30 -0700</bug_when>
    <thetext>WebKit EFL should start using PageViewportController to support viewport meta tag.

A patch is coming soon.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>746861</commentid>
    <comment_count>1</comment_count>
      <attachid>169748</attachid>
    <who name="Yael">yael</who>
    <bug_when>2012-10-19 19:47:28 -0700</bug_when>
    <thetext>Created attachment 169748
Patch

Take PageViewportController into use, and rely on it to calculate  scroll position and zoom level. With this patch, we can do intra page navigation and use the scrollwheel to scroll, when WTF_USE_COORDINATED_GRAPHICS and all related flags are enabled.

With this patch touch events are broken since they do not yet take the scale into account (They work only with scale = 1.0)
Also, mouse events do not work after scrolling.
There is no impact when WTF_USE_COORDINATED_GRAPHICS is turned off, and I am still working on these issues, but would like to start the review going.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>746865</commentid>
    <comment_count>2</comment_count>
      <attachid>169748</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2012-10-19 19:55:45 -0700</bug_when>
    <thetext>Comment on attachment 169748
Patch

Attachment 169748 did not pass efl-ews (efl):
Output: http://queues.webkit.org/results/14459745</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>747064</commentid>
    <comment_count>3</comment_count>
      <attachid>169748</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-10-21 02:57:49 -0700</bug_when>
    <thetext>Comment on attachment 169748
Patch

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

&gt; Source/WebKit2/UIProcess/WebPageProxy.messages.in:76
&gt; +#if PLATFORM(QT) || PLATFORM(EFL) &amp;&amp; USE(COORDINATED_GRAPHICS)

Maybe we should have a different define?

&gt; Source/WebKit2/UIProcess/API/efl/ewk_view.cpp:281
&gt; +static Evas_Coord_Point adjustedPointForScaling(Evas_Coord_Point point, Ewk_View_Private_Data* priv)

Can&apos;t we follow Qt naming?

QPointF QQuickWebView::mapToWebContent(const QPointF&amp; pointInViewCoordinates) const
QRectF QQuickWebView::mapRectToWebContent(const QRectF&amp; rectInViewCoordinates) const

Also I would add priv before point as it is a hard requirement</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>747065</commentid>
    <comment_count>4</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-10-21 02:58:44 -0700</bug_when>
    <thetext>Andras, Jocelyn, please have a look as well</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>747081</commentid>
    <comment_count>5</comment_count>
    <who name="Yael">yael</who>
    <bug_when>2012-10-21 05:14:10 -0700</bug_when>
    <thetext>(In reply to comment #3)
Thanks for your review :)
&gt; (From update of attachment 169748 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=169748&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/WebPageProxy.messages.in:76
&gt; &gt; +#if PLATFORM(QT) || PLATFORM(EFL) &amp;&amp; USE(COORDINATED_GRAPHICS)
&gt; 
&gt; Maybe we should have a different define?
&gt; 
We already have so many flags, I would hate to introduce a new one.
I think USE(COORDINATED_GRAPHICS) is turned on by default in Qt port, so I will try to keep only that and see if something breaks.

&gt; &gt; Source/WebKit2/UIProcess/API/efl/ewk_view.cpp:281
&gt; &gt; +static Evas_Coord_Point adjustedPointForScaling(Evas_Coord_Point point, Ewk_View_Private_Data* priv)
&gt; 
&gt; Can&apos;t we follow Qt naming?
&gt; 
&gt; QPointF QQuickWebView::mapToWebContent(const QPointF&amp; pointInViewCoordinates) const
&gt; QRectF QQuickWebView::mapRectToWebContent(const QRectF&amp; rectInViewCoordinates) const
&gt; 
ok

&gt; Also I would add priv before point as it is a hard requirement
ok</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>747436</commentid>
    <comment_count>6</comment_count>
      <attachid>169748</attachid>
    <who name="Andras Becsi">abecsi</who>
    <bug_when>2012-10-22 05:05:38 -0700</bug_when>
    <thetext>Comment on attachment 169748
Patch

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

The general direction looks good. Also let me know if you think something is missing from the client API.

&gt; Source/WebKit2/UIProcess/API/efl/PageViewportControllerClientEfl.cpp:100
&gt; +        ViewportUpdateDeferrer deferrer(m_pageViewportController);

I&apos;m in the process of removing the ViewportUpdateDeferrer because with the current implementation of PageViewportContrloller its purpose for Qt is not present any more. This code should be changed not to need the deferrer either.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>747476</commentid>
    <comment_count>7</comment_count>
      <attachid>169748</attachid>
    <who name="Jocelyn Turcotte">jturcotte</who>
    <bug_when>2012-10-22 06:05:30 -0700</bug_when>
    <thetext>Comment on attachment 169748
Patch

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

&gt;&gt;&gt; Source/WebKit2/UIProcess/WebPageProxy.messages.in:76
&gt;&gt;&gt; +#if PLATFORM(QT) || PLATFORM(EFL) &amp;&amp; USE(COORDINATED_GRAPHICS)
&gt;&gt; 
&gt;&gt; Maybe we should have a different define?
&gt; 
&gt; We already have so many flags, I would hate to introduce a new one.
&gt; I think USE(COORDINATED_GRAPHICS) is turned on by default in Qt port, so I will try to keep only that and see if something breaks.

This is not tied to COORDINATED_GRAPHICS in any way except for EFL, I would rather put it under USE(TILED_BACKING_STORE) in which case you also wouldn&apos;t have to restrict it to PLATFORM(EFL).
This however shows that we should probably rename/detach this define at some point, what it currently means is basically that we&apos;re doing UI process scrolling.

&gt; Source/WebKit2/UIProcess/API/efl/PageViewportControllerClientEfl.cpp:91
&gt;      FloatRect mapRectToWebContent = m_visibleContentRect;
&gt;      mapRectToWebContent.scale(1 / m_scaleFactor);
&gt;      drawingArea()-&gt;setVisibleContentsRect(enclosingIntRect(mapRectToWebContent), m_scaleFactor, trajectory);

This suggests that setVisibleContentsRect is passed a rect in Viewport coordinates (zoom applied), but you now use m_visibleContentRect everywhere directly to pass coordinates to PageViewportController which expects page coordinates. Something is fishy, make sure that you test this code properly by panning and navigating pages while the page is zoomed.

&gt; Source/WebKit2/UIProcess/API/efl/PageViewportControllerClientEfl.cpp:109
&gt; +    setVisibleContentsRect(IntPoint(contentsPoint.x(), contentsPoint.y()), m_scaleFactor, FloatPoint());
&gt; +    m_pageViewportController-&gt;didChangeContentsVisibility(contentsPoint, m_scaleFactor, FloatPoint());

Both of them are calling drawingArea()-&gt;setVisibleContentsRect, this is wrong, only the viewportcontroller should be dealing with it.

&gt; Source/WebKit2/UIProcess/API/efl/PageViewportControllerClientEfl.cpp:117
&gt; +    drawingArea()-&gt;layerTreeCoordinatorProxy()-&gt;setContentsSize(WebCore::FloatSize(m_contentsSize.width(), m_contentsSize.height()));

What is the goal of that call here?

&gt; Source/WebKit2/UIProcess/API/efl/PageViewportControllerClientEfl.cpp:122
&gt; +    m_pageViewportController-&gt;didChangeContentsVisibility(m_visibleContentRect.location(), m_scaleFactor);

Viewport coordinates or page coordinates here?

&gt; Source/WebKit2/UIProcess/API/efl/PageViewportControllerClientEfl.cpp:128
&gt; +    IntRect rect = IntRect(IntPoint(), m_visibleContentRect.size());
&gt; +    ewk_view_display(m_viewWidget, rect);

I would use m_viewportSize directly instead of m_visibleContentRect.size().</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>747561</commentid>
    <comment_count>8</comment_count>
    <who name="Yael">yael</who>
    <bug_when>2012-10-22 08:09:39 -0700</bug_when>
    <thetext>(In reply to comment #7)
&gt; (From update of attachment 169748 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=169748&amp;action=review
&gt; 
Thanks for your review :)
&gt; &gt;&gt;&gt; Source/WebKit2/UIProcess/WebPageProxy.messages.in:76
&gt; &gt;&gt;&gt; +#if PLATFORM(QT) || PLATFORM(EFL) &amp;&amp; USE(COORDINATED_GRAPHICS)
&gt; &gt;&gt; 
&gt; &gt;&gt; Maybe we should have a different define?
&gt; &gt; 
&gt; &gt; We already have so many flags, I would hate to introduce a new one.
&gt; &gt; I think USE(COORDINATED_GRAPHICS) is turned on by default in Qt port, so I will try to keep only that and see if something breaks.
&gt; 
&gt; This is not tied to COORDINATED_GRAPHICS in any way except for EFL, I would rather put it under USE(TILED_BACKING_STORE) in which case you also wouldn&apos;t have to restrict it to PLATFORM(EFL).
&gt; This however shows that we should probably rename/detach this define at some point, what it currently means is basically that we&apos;re doing UI process scrolling.
&gt; 
Doesn&apos;t gtk port use USE(TILED_BACKING_STORE) also? I would not want to break anything for them.

&gt; &gt; Source/WebKit2/UIProcess/API/efl/PageViewportControllerClientEfl.cpp:91
&gt; &gt;      FloatRect mapRectToWebContent = m_visibleContentRect;
&gt; &gt;      mapRectToWebContent.scale(1 / m_scaleFactor);
&gt; &gt;      drawingArea()-&gt;setVisibleContentsRect(enclosingIntRect(mapRectToWebContent), m_scaleFactor, trajectory);
&gt; 
&gt; This suggests that setVisibleContentsRect is passed a rect in Viewport coordinates (zoom applied), but you now use m_visibleContentRect everywhere directly to pass coordinates to PageViewportController which expects page coordinates. Something is fishy, make sure that you test this code properly by panning and navigating pages while the page is zoomed.
&gt; 
I&apos;d like to change m_visibleContentRect so it keeps the scaled size, and not the actual viewport size, as it does now. Once I do that&apos; I think this will look better. BTW, with COORDINATED_GRAPHICS turned on, almost every web page is zoomed :)

&gt; &gt; Source/WebKit2/UIProcess/API/efl/PageViewportControllerClientEfl.cpp:109
&gt; &gt; +    setVisibleContentsRect(IntPoint(contentsPoint.x(), contentsPoint.y()), m_scaleFactor, FloatPoint());
&gt; &gt; +    m_pageViewportController-&gt;didChangeContentsVisibility(contentsPoint, m_scaleFactor, FloatPoint());
&gt; 
&gt; Both of them are calling drawingArea()-&gt;setVisibleContentsRect, this is wrong, only the viewportcontroller should be dealing with it.
&gt; 
Yes, it is redundant, and I&apos;ll remove it.

&gt; &gt; Source/WebKit2/UIProcess/API/efl/PageViewportControllerClientEfl.cpp:117
&gt; &gt; +    drawingArea()-&gt;layerTreeCoordinatorProxy()-&gt;setContentsSize(WebCore::FloatSize(m_contentsSize.width(), m_contentsSize.height()));
&gt; 
&gt; What is the goal of that call here?
&gt; 
It was there before, and I should have removed it. It will be gone in the next iteration.

&gt; &gt; Source/WebKit2/UIProcess/API/efl/PageViewportControllerClientEfl.cpp:122
&gt; &gt; +    m_pageViewportController-&gt;didChangeContentsVisibility(m_visibleContentRect.location(), m_scaleFactor);
&gt; 
&gt; Viewport coordinates or page coordinates here?
&gt; 
There is some confusion about the coordinates of m_visibleContentRect, and I&apos;d like to change it so it is always in page coordinates.

&gt; &gt; Source/WebKit2/UIProcess/API/efl/PageViewportControllerClientEfl.cpp:128
&gt; &gt; +    IntRect rect = IntRect(IntPoint(), m_visibleContentRect.size());
&gt; &gt; +    ewk_view_display(m_viewWidget, rect);
&gt; 
&gt; I would use m_viewportSize directly instead of m_visibleContentRect.size().
ok</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>747566</commentid>
    <comment_count>9</comment_count>
    <who name="Yael">yael</who>
    <bug_when>2012-10-22 08:20:47 -0700</bug_when>
    <thetext>(In reply to comment #6)
Thanks for your comments :)
&gt; (From update of attachment 169748 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=169748&amp;action=review
&gt; 
&gt; The general direction looks good. Also let me know if you think something is missing from the client API.
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/efl/PageViewportControllerClientEfl.cpp:100
&gt; &gt; +        ViewportUpdateDeferrer deferrer(m_pageViewportController);
&gt; 
&gt; I&apos;m in the process of removing the ViewportUpdateDeferrer because with the current implementation of PageViewportContrloller its purpose for Qt is not present any more. This code should be changed not to need the deferrer either.
Thanks for letting me know about removing the deferrer class.
I only added it because it triggers setting some flags in PageViewController. Once you remove the class, I&apos;ll adjust my implementation.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>747569</commentid>
    <comment_count>10</comment_count>
    <who name="Jocelyn Turcotte">jturcotte</who>
    <bug_when>2012-10-22 08:25:37 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; Doesn&apos;t gtk port use USE(TILED_BACKING_STORE) also? I would not want to break anything for them.

By judging at who are implementing the pageDidRequestScroll pure virtual in PageClient, only EFL and Qt in WebKit2.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>747689</commentid>
    <comment_count>11</comment_count>
      <attachid>169940</attachid>
    <who name="Yael">yael</who>
    <bug_when>2012-10-22 10:50:58 -0700</bug_when>
    <thetext>Created attachment 169940
Patch

Address comment #3 and comment #7.
With this patch mouse events work as expected. I am not able to test touch events right now, so I added a FIXME to re-visit touch events later. 
There is no impact when WTF_USE_TILED_BACKING_STORE is turned off.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>747784</commentid>
    <comment_count>12</comment_count>
      <attachid>169940</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2012-10-22 12:41:10 -0700</bug_when>
    <thetext>Comment on attachment 169940
Patch

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

&gt; Source/WebKit2/UIProcess/API/efl/ewk_view.cpp:1562
&gt; +#if USE(COORDINATED_GRAPHICS)
&gt; +void ewk_view_load_committed(Evas_Object* ewkView)

private method? We are trying to move away from free functions for private api</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>747840</commentid>
    <comment_count>13</comment_count>
    <who name="Yael">yael</who>
    <bug_when>2012-10-22 13:43:09 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; (From update of attachment 169940 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=169940&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/efl/ewk_view.cpp:1562
&gt; &gt; +#if USE(COORDINATED_GRAPHICS)
&gt; &gt; +void ewk_view_load_committed(Evas_Object* ewkView)
&gt; 
&gt; private method? We are trying to move away from free functions for private api
We should convert the load client to C++ in one go, and I will be happy to do that as a follow-up to this patch, but I don&apos;t think we should do it one method at a time. Would that be ok?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>747905</commentid>
    <comment_count>14</comment_count>
    <who name="Yael">yael</who>
    <bug_when>2012-10-22 14:42:07 -0700</bug_when>
    <thetext>Created https://bugs.webkit.org/show_bug.cgi?id=100035 for converting the loader client to C++.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>748459</commentid>
    <comment_count>15</comment_count>
      <attachid>169940</attachid>
    <who name="Jocelyn Turcotte">jturcotte</who>
    <bug_when>2012-10-23 03:46:06 -0700</bug_when>
    <thetext>Comment on attachment 169940
Patch

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

&gt; Source/WebKit2/UIProcess/PageViewportController.h:26
&gt; +#if USE(COORDINATED_GRAPHICS)
&gt; +

Why not change all of them to USE(TILED_BACKING_STORE)?
COORDINATED_GRAPHICS is about rendering while most of this patch is about viewport and event handling.

&gt; Source/WebKit2/UIProcess/API/efl/PageViewportControllerClientEfl.cpp:-86
&gt; -    // Move visibleContentRect inside contentsRect when visibleContentRect goes outside contentsRect. 

Are you sure you don&apos;t need that code anymore?

&gt; Source/WebKit2/UIProcess/API/efl/PageViewportControllerClientEfl.cpp:86
&gt; +    m_scrollPosition = newScrollPosition;

Shouldn&apos;t didChangeContentsVisibility get called here too?

&gt; Source/WebKit2/UIProcess/API/efl/PageViewportControllerClientEfl.cpp:94
&gt; +    ViewportUpdateDeferrer deferrer(m_pageViewportController);

Is there a reason why you need a deferrer here?

&gt; Source/WebKit2/UIProcess/API/efl/PageViewportControllerClientEfl.cpp:110
&gt; +    drawingArea()-&gt;layerTreeCoordinatorProxy()-&gt;setContentsSize(WebCore::FloatSize(m_contentsSize.width(), m_contentsSize.height()));

You forgot to remove this...

&gt; Source/WebKit2/UIProcess/efl/WebPageProxyEfl.cpp:107
&gt; +#if USE(TILED_BACKING_STORE) 
&gt; +void WebPageProxy::didRenderFrame(const WebCore::IntSize&amp; contentsSize, const WebCore::IntRect&amp; coveredRect)
&gt; +{
&gt; +    m_pageClient-&gt;didRenderFrame(contentsSize, coveredRect);
&gt; +}
&gt; +
&gt; +void WebPageProxy::pageTransitionViewportReady()
&gt; +{
&gt; +    m_pageClient-&gt;pageTransitionViewportReady();
&gt; +}
&gt; +#endif
&gt; +

I would prefer that you remove that code from WebPageProxyQt.cpp and move it to WebPageProxy.cpp so that we share it instead of duplicating it.

&gt; Source/WebKit2/UIProcess/WebPageProxy.h:861
&gt; +#if USE(TILED_BACKING_STORE) 
&gt; +    void pageTransitionViewportReady();
&gt; +#endif

There is another USE(TILED_BACKING_STORE) block 2 lines above... please use it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>748584</commentid>
    <comment_count>16</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2012-10-23 06:43:17 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; (From update of attachment 169940 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=169940&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/API/efl/ewk_view.cpp:1562
&gt; &gt; +#if USE(COORDINATED_GRAPHICS)
&gt; &gt; +void ewk_view_load_committed(Evas_Object* ewkView)
&gt; 
&gt; private method? We are trying to move away from free functions for private api

I think this is OK to land this for now as we haven&apos;t ported Ewk_View to C++ style yet. We still need to give it some thought since Ewk_View is an Evas_Object.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>748605</commentid>
    <comment_count>17</comment_count>
    <who name="Yael">yael</who>
    <bug_when>2012-10-23 07:08:51 -0700</bug_when>
    <thetext>(In reply to comment #15)
&gt; (From update of attachment 169940 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=169940&amp;action=review
&gt; 
Thanks for continuing to review this :)
&gt; &gt; Source/WebKit2/UIProcess/PageViewportController.h:26
&gt; &gt; +#if USE(COORDINATED_GRAPHICS)
&gt; &gt; +
&gt; 
&gt; Why not change all of them to USE(TILED_BACKING_STORE)?
&gt; COORDINATED_GRAPHICS is about rendering while most of this patch is about viewport and event handling.
&gt; 
Thanks for the explanation, I was very confused about the flags.
&gt; &gt; Source/WebKit2/UIProcess/API/efl/PageViewportControllerClientEfl.cpp:-86
&gt; &gt; -    // Move visibleContentRect inside contentsRect when visibleContentRect goes outside contentsRect. 
&gt; 
&gt; Are you sure you don&apos;t need that code anymore?
&gt; 
WebCore already handles this. Once we add support for gestures and scroll animation, we might need to bring some logic back, Right now it is not needed. The UI side never sees negative coordinated when running script like window.scrollTo(-100, -100), or when trying to over-scroll.

&gt; &gt; Source/WebKit2/UIProcess/API/efl/PageViewportControllerClientEfl.cpp:86
&gt; &gt; +    m_scrollPosition = newScrollPosition;
&gt; 
&gt; Shouldn&apos;t didChangeContentsVisibility get called here too?
&gt; 
will fix in next version
&gt; &gt; Source/WebKit2/UIProcess/API/efl/PageViewportControllerClientEfl.cpp:94
&gt; &gt; +    ViewportUpdateDeferrer deferrer(m_pageViewportController);
&gt; 
&gt; Is there a reason why you need a deferrer here?
&gt; 
Removing it does not seem to have any effect. Will remove in next version.
&gt; &gt; Source/WebKit2/UIProcess/API/efl/PageViewportControllerClientEfl.cpp:110
&gt; &gt; +    drawingArea()-&gt;layerTreeCoordinatorProxy()-&gt;setContentsSize(WebCore::FloatSize(m_contentsSize.width(), m_contentsSize.height()));
&gt; 
&gt; You forgot to remove this...
&gt;
Oops... 
&gt; &gt; Source/WebKit2/UIProcess/efl/WebPageProxyEfl.cpp:107
&gt; &gt; +#if USE(TILED_BACKING_STORE) 
&gt; &gt; +void WebPageProxy::didRenderFrame(const WebCore::IntSize&amp; contentsSize, const WebCore::IntRect&amp; coveredRect)
&gt; &gt; +{
&gt; &gt; +    m_pageClient-&gt;didRenderFrame(contentsSize, coveredRect);
&gt; &gt; +}
&gt; &gt; +
&gt; &gt; +void WebPageProxy::pageTransitionViewportReady()
&gt; &gt; +{
&gt; &gt; +    m_pageClient-&gt;pageTransitionViewportReady();
&gt; &gt; +}
&gt; &gt; +#endif
&gt; &gt; +
&gt; 
&gt; I would prefer that you remove that code from WebPageProxyQt.cpp and move it to WebPageProxy.cpp so that we share it instead of duplicating it.
&gt; 
ok

&gt; &gt; Source/WebKit2/UIProcess/WebPageProxy.h:861
&gt; &gt; +#if USE(TILED_BACKING_STORE) 
&gt; &gt; +    void pageTransitionViewportReady();
&gt; &gt; +#endif
&gt; 
&gt; There is another USE(TILED_BACKING_STORE) block 2 lines above... please use it.
ok</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>748636</commentid>
    <comment_count>18</comment_count>
      <attachid>170164</attachid>
    <who name="Yael">yael</who>
    <bug_when>2012-10-23 07:45:11 -0700</bug_when>
    <thetext>Created attachment 170164
Patch

Updates based on comment #15.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>748638</commentid>
    <comment_count>19</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-23 07:47:26 -0700</bug_when>
    <thetext>Attachment 170164 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebKit2/CMakeLists.txt&apos;, u&apos;Source/W...&quot; exit_code: 1
Source/WebKit2/UIProcess/efl/PageLoadClientEfl.h:59:  The parameter name &quot;frame&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 1 in 18 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>748661</commentid>
    <comment_count>20</comment_count>
      <attachid>170170</attachid>
    <who name="Yael">yael</who>
    <bug_when>2012-10-23 08:15:57 -0700</bug_when>
    <thetext>Created attachment 170170
Patch

Fix style</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>748677</commentid>
    <comment_count>21</comment_count>
      <attachid>170170</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-23 08:44:34 -0700</bug_when>
    <thetext>Comment on attachment 170170
Patch

Clearing flags on attachment: 170170

Committed r132228: &lt;http://trac.webkit.org/changeset/132228&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>748678</commentid>
    <comment_count>22</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-10-23 08:44:40 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>169748</attachid>
            <date>2012-10-19 19:47:28 -0700</date>
            <delta_ts>2012-10-22 10:50:58 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>99850.patch</filename>
            <type>text/plain</type>
            <size>21926</size>
            <attacher name="Yael">yael</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAJ
KHJldmlzaW9uIDEzMTk1MikKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTg1Myw3ICsxODUzLDcgQEAKIAogdm9pZCBX
ZWJQYWdlOjpkaWRDb21wbGV0ZVBhZ2VUcmFuc2l0aW9uKCkKIHsKLSNpZiBQTEFURk9STShRVCkK
KyNpZiBQTEFURk9STShRVCkgfHwgUExBVEZPUk0oRUZMKSAmJiBVU0UoQ09PUkRJTkFURURfR1JB
UEhJQ1MpCiAgICAgaWYgKG1fbWFpbkZyYW1lLT5jb3JlRnJhbWUoKS0+dmlldygpLT5kZWxlZ2F0
ZXNTY3JvbGxpbmcoKSkKICAgICAgICAgLy8gV2FpdCB1bnRpbCB0aGUgVUkgcHJvY2VzcyBzZW50
IHVzIHRoZSB2aXNpYmxlIHJlY3QgaXQgd2FudHMgcmVuZGVyZWQuCiAgICAgICAgIHNlbmQoTWVz
c2FnZXM6OldlYlBhZ2VQcm94eTo6UGFnZVRyYW5zaXRpb25WaWV3cG9ydFJlYWR5KCkpOwpJbmRl
eDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2Vz
LmluCShyZXZpc2lvbiAxMzE5NTIpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5Lm1lc3NhZ2VzLmluCSh3b3JraW5nIGNvcHkpCkBAIC03Miw4ICs3MiwxMSBAQAogI2lm
IFVTRShUSUxFRF9CQUNLSU5HX1NUT1JFKQogICAgIFBhZ2VEaWRSZXF1ZXN0U2Nyb2xsKFdlYkNv
cmU6OkludFBvaW50IHBvaW50KQogI2VuZGlmCisKKyNpZiBQTEFURk9STShRVCkgfHwgUExBVEZP
Uk0oRUZMKSAmJiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCisgICAgUGFnZVRyYW5zaXRpb25W
aWV3cG9ydFJlYWR5KCkKKyNlbmRpZgogI2lmIFBMQVRGT1JNKFFUKQotICAgIFBhZ2VUcmFuc2l0
aW9uVmlld3BvcnRSZWFkeSgpCiAgICAgRGlkRmluZFpvb21hYmxlQXJlYShXZWJDb3JlOjpJbnRQ
b2ludCB0YXJnZXQsIFdlYkNvcmU6OkludFJlY3QgYXJlYSkKICAgICBBdXRoZW50aWNhdGlvblJl
cXVpcmVkUmVxdWVzdChXVEY6OlN0cmluZyBob3N0bmFtZSwgV1RGOjpTdHJpbmcgcmVhbG0sIFdU
Rjo6U3RyaW5nIHByZWZpbGxlZFVzZXJuYW1lKSAtPiAoV1RGOjpTdHJpbmcgdXNlcm5hbWUsIFdU
Rjo6U3RyaW5nIHBhc3N3b3JkKQogICAgIENlcnRpZmljYXRlVmVyaWZpY2F0aW9uUmVxdWVzdChX
VEY6OlN0cmluZyBob3N0bmFtZSkgLT4gKGJvb2wgaWdub3JlRXJyb3JzKQpJbmRleDogU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCShyZXZpc2lvbiAxMzE5NTIpCisrKyBTb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCSh3b3JraW5nIGNvcHkpCkBAIC0xMTcsOSAr
MTE3LDExIEBACiAjaWYgVVNFKFRJTEVEX0JBQ0tJTkdfU1RPUkUpCiAgICAgdmlydHVhbCB2b2lk
IHBhZ2VEaWRSZXF1ZXN0U2Nyb2xsKGNvbnN0IFdlYkNvcmU6OkludFBvaW50JikgPSAwOwogI2Vu
ZGlmCi0jaWYgUExBVEZPUk0oUVQpCisjaWYgUExBVEZPUk0oUVQpIHx8IFBMQVRGT1JNKEVGTCkg
JiYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQogICAgIHZpcnR1YWwgdm9pZCBkaWRSZW5kZXJG
cmFtZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBjb250ZW50c1NpemUsIGNvbnN0IFdlYkNvcmU6
OkludFJlY3QmIGNvdmVyZWRSZWN0KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHBhZ2VUcmFuc2l0
aW9uVmlld3BvcnRSZWFkeSgpID0gMDsKKyNlbmRpZgorI2lmIFBMQVRGT1JNKFFUKQogICAgIHZp
cnR1YWwgdm9pZCBkaWRGaW5kWm9vbWFibGVBcmVhKGNvbnN0IFdlYkNvcmU6OkludFBvaW50Jiwg
Y29uc3QgV2ViQ29yZTo6SW50UmVjdCYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2
ZU1lc3NhZ2VGcm9tTmF2aWdhdG9yUXRPYmplY3QoY29uc3QgU3RyaW5nJikgPSAwOwogICAgIHZp
cnR1YWwgdm9pZCB1cGRhdGVUZXh0SW5wdXRTdGF0ZSgpID0gMDsKSW5kZXg6IFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9QYWdlVmlld3BvcnRDb250cm9sbGVyLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BhZ2VWaWV3cG9ydENvbnRyb2xsZXIuaAkocmV2aXNpb24g
MTMxOTUyKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BhZ2VWaWV3cG9ydENvbnRyb2xs
ZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMjIsNiArMjIsOCBAQAogI2lmbmRlZiBQYWdlVmlld3Bv
cnRDb250cm9sbGVyX2gKICNkZWZpbmUgUGFnZVZpZXdwb3J0Q29udHJvbGxlcl9oCiAKKyNpZiBV
U0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCisKICNpbmNsdWRlIDxXZWJDb3JlL0Zsb2F0UG9pbnQu
aD4KICNpbmNsdWRlIDxXZWJDb3JlL0Zsb2F0UmVjdC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRmxv
YXRTaXplLmg+CkBAIC0xNDAsNCArMTQyLDYgQEAKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CiAK
KyNlbmRpZgorCiAjZW5kaWYgLy8gUGFnZVZpZXdwb3J0Q29udHJvbGxlcl9oCkluZGV4OiBTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGFnZVZpZXdwb3J0Q29udHJvbGxlci5jcHAKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BhZ2VWaWV3cG9ydENvbnRyb2xsZXIuY3Bw
CShyZXZpc2lvbiAxMzE5NTIpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGFnZVZpZXdw
b3J0Q29udHJvbGxlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTIyLDYgKzIyLDggQEAKICNpbmNs
dWRlICJjb25maWcuaCIKICNpbmNsdWRlICJQYWdlVmlld3BvcnRDb250cm9sbGVyLmgiCiAKKyNp
ZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCisKICNpbmNsdWRlICJQYWdlVmlld3BvcnRDb250
cm9sbGVyQ2xpZW50LmgiCiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5LmgiCiAjaW5jbHVkZSA8V2Vi
Q29yZS9GbG9hdFJlY3QuaD4KQEAgLTI5MCwzICsyOTIsNSBAQAogfQogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKKworI2VuZGlmCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2Vm
bC9ld2tfdmlldy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9lZmwvZXdrX3ZpZXcuY3BwCShyZXZpc2lvbiAxMzE5NTIpCisrKyBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTc1LDYgKzc1
LDcgQEAKICNlbmRpZgogCiAjaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQorI2luY2x1ZGUg
IlBhZ2VWaWV3cG9ydENvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJQYWdlVmlld3BvcnRDb250cm9s
bGVyQ2xpZW50RWZsLmgiCiAjZW5kaWYKIApAQCAtMTE2LDYgKzExNyw3IEBACiAgICAgT3duUHRy
PFBhZ2VDbGllbnRJbXBsPiBwYWdlQ2xpZW50OwogI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElD
UykKICAgICBPd25QdHI8UGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudEVmbD4gcGFnZVZpZXdw
b3J0Q29udHJvbGxlckNsaWVudDsKKyAgICBPd25QdHI8UGFnZVZpZXdwb3J0Q29udHJvbGxlcj4g
cGFnZVZpZXdwb3J0Q29udHJvbGxlcjsKICNlbmRpZgogICAgIFJlZlB0cjxXZWJQYWdlUHJveHk+
IHBhZ2VQcm94eTsKIApAQCAtMjc1LDEyICsyNzcsMjggQEAKICAgICByZXR1cm4gdHJ1ZTsKIH0K
IAorI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDUykKK3N0YXRpYyBFdmFzX0Nvb3JkX1BvaW50
IGFkanVzdGVkUG9pbnRGb3JTY2FsaW5nKEV2YXNfQ29vcmRfUG9pbnQgcG9pbnQsIEV3a19WaWV3
X1ByaXZhdGVfRGF0YSogcHJpdikKK3sKKyAgICBFdmFzX0Nvb3JkX1BvaW50IHJlc3VsdDsKKyAg
ICByZXN1bHQueCA9IHBvaW50LnggLyBwcml2LT5wYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50
LT5zY2FsZUZhY3RvcigpOworICAgIHJlc3VsdC55ID0gcG9pbnQueSAvIHByaXYtPnBhZ2VWaWV3
cG9ydENvbnRyb2xsZXJDbGllbnQtPnNjYWxlRmFjdG9yKCk7CisgICAgcmV0dXJuIHJlc3VsdDsK
K30KKyNlbmRpZgorCiBzdGF0aWMgRWluYV9Cb29sIF9ld2tfdmlld19zbWFydF9tb3VzZV93aGVl
bChFd2tfVmlld19TbWFydF9EYXRhKiBzbWFydERhdGEsIGNvbnN0IEV2YXNfRXZlbnRfTW91c2Vf
V2hlZWwqIHdoZWVsRXZlbnQpCiB7CiAgICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNt
YXJ0RGF0YSwgcHJpdiwgZmFsc2UpOwogCiAgICAgRXZhc19Qb2ludCBwb3NpdGlvbiA9IHtzbWFy
dERhdGEtPnZpZXcueCwgc21hcnREYXRhLT52aWV3Lnl9OworI2lmIFVTRShDT09SRElOQVRFRF9H
UkFQSElDUykKKyAgICBFdmFzX0V2ZW50X01vdXNlX1doZWVsIGV2ZW50KCp3aGVlbEV2ZW50KTsK
KyAgICBldmVudC5jYW52YXMgPSBhZGp1c3RlZFBvaW50Rm9yU2NhbGluZyhldmVudC5jYW52YXMs
IHByaXYpOworICAgIHByaXYtPnBhZ2VQcm94eS0+aGFuZGxlV2hlZWxFdmVudChOYXRpdmVXZWJX
aGVlbEV2ZW50KCZldmVudCwgJnBvc2l0aW9uKSk7CisjZWxzZQogICAgIHByaXYtPnBhZ2VQcm94
eS0+aGFuZGxlV2hlZWxFdmVudChOYXRpdmVXZWJXaGVlbEV2ZW50KHdoZWVsRXZlbnQsICZwb3Np
dGlvbikpOworI2VuZGlmCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTI4OSw3ICszMDcsMTMg
QEAKICAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBwcml2LCBmYWxz
ZSk7CiAKICAgICBFdmFzX1BvaW50IHBvc2l0aW9uID0ge3NtYXJ0RGF0YS0+dmlldy54LCBzbWFy
dERhdGEtPnZpZXcueX07CisjaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQorICAgIEV2YXNf
RXZlbnRfTW91c2VfRG93biBldmVudCgqZG93bkV2ZW50KTsKKyAgICBldmVudC5jYW52YXMgPSBh
ZGp1c3RlZFBvaW50Rm9yU2NhbGluZyhldmVudC5jYW52YXMsIHByaXYpOworICAgIHByaXYtPnBh
Z2VQcm94eS0+aGFuZGxlTW91c2VFdmVudChOYXRpdmVXZWJNb3VzZUV2ZW50KCZldmVudCwgJnBv
c2l0aW9uKSk7CisjZWxzZQogICAgIHByaXYtPnBhZ2VQcm94eS0+aGFuZGxlTW91c2VFdmVudChO
YXRpdmVXZWJNb3VzZUV2ZW50KGRvd25FdmVudCwgJnBvc2l0aW9uKSk7CisjZW5kaWYKICAgICBy
ZXR1cm4gdHJ1ZTsKIH0KIApAQCAtMjk4LDcgKzMyMiwxMyBAQAogICAgIEVXS19WSUVXX1BSSVZf
R0VUX09SX1JFVFVSTihzbWFydERhdGEsIHByaXYsIGZhbHNlKTsKIAogICAgIEV2YXNfUG9pbnQg
cG9zaXRpb24gPSB7c21hcnREYXRhLT52aWV3LngsIHNtYXJ0RGF0YS0+dmlldy55fTsKKyNpZiBV
U0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCisgICAgRXZhc19FdmVudF9Nb3VzZV9VcCBldmVudCgq
dXBFdmVudCk7CisgICAgZXZlbnQuY2FudmFzID0gYWRqdXN0ZWRQb2ludEZvclNjYWxpbmcoZXZl
bnQuY2FudmFzLCBwcml2KTsKKyAgICBwcml2LT5wYWdlUHJveHktPmhhbmRsZU1vdXNlRXZlbnQo
TmF0aXZlV2ViTW91c2VFdmVudCgmZXZlbnQsICZwb3NpdGlvbikpOworI2Vsc2UKICAgICBwcml2
LT5wYWdlUHJveHktPmhhbmRsZU1vdXNlRXZlbnQoTmF0aXZlV2ViTW91c2VFdmVudCh1cEV2ZW50
LCAmcG9zaXRpb24pKTsKKyNlbmRpZgogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC0zMDcsNyAr
MzM3LDEzIEBACiAgICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgcHJp
diwgZmFsc2UpOwogCiAgICAgRXZhc19Qb2ludCBwb3NpdGlvbiA9IHtzbWFydERhdGEtPnZpZXcu
eCwgc21hcnREYXRhLT52aWV3Lnl9OworI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDUykKKyAg
ICBFdmFzX0V2ZW50X01vdXNlX01vdmUgZXZlbnQoKm1vdmVFdmVudCk7CisgICAgZXZlbnQuY3Vy
LmNhbnZhcyA9IGFkanVzdGVkUG9pbnRGb3JTY2FsaW5nKGV2ZW50LmN1ci5jYW52YXMsIHByaXYp
OworICAgIHByaXYtPnBhZ2VQcm94eS0+aGFuZGxlTW91c2VFdmVudChOYXRpdmVXZWJNb3VzZUV2
ZW50KCZldmVudCwgJnBvc2l0aW9uKSk7CisjZWxzZQogICAgIHByaXYtPnBhZ2VQcm94eS0+aGFu
ZGxlTW91c2VFdmVudChOYXRpdmVXZWJNb3VzZUV2ZW50KG1vdmVFdmVudCwgJnBvc2l0aW9uKSk7
CisjZW5kaWYKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtODI1LDYgKzg2MSw4IEBACiAKICNp
ZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCiAgICAgcHJpdi0+cGFnZVZpZXdwb3J0Q29udHJv
bGxlckNsaWVudCA9IFBhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnRFZmw6OmNyZWF0ZShld2tW
aWV3KTsKKyAgICBwcml2LT5wYWdlVmlld3BvcnRDb250cm9sbGVyID0gYWRvcHRQdHIobmV3IFBh
Z2VWaWV3cG9ydENvbnRyb2xsZXIocHJpdi0+cGFnZVByb3h5LmdldCgpLCBwcml2LT5wYWdlVmll
d3BvcnRDb250cm9sbGVyQ2xpZW50LmdldCgpKSk7CisgICAgcHJpdi0+cGFnZUNsaWVudC0+c2V0
UGFnZVZpZXdwb3J0Q29udHJvbGxlcihwcml2LT5wYWdlVmlld3BvcnRDb250cm9sbGVyLmdldCgp
KTsKICNlbmRpZgogCiAgICAgV0tQYWdlUmVmIHdrUGFnZSA9IHRvQVBJKHByaXYtPnBhZ2VQcm94
eS5nZXQoKSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9QYWdlQ2xp
ZW50SW1wbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZs
L1BhZ2VDbGllbnRJbXBsLmgJKHJldmlzaW9uIDEzMTk1MikKKysrIFNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZWZsL1BhZ2VDbGllbnRJbXBsLmgJKHdvcmtpbmcgY29weSkKQEAgLTMyLDYg
KzMyLDggQEAKIAogbmFtZXNwYWNlIFdlYktpdCB7CiAKK2NsYXNzIFBhZ2VWaWV3cG9ydENvbnRy
b2xsZXI7CisKIGNsYXNzIFBhZ2VDbGllbnRJbXBsIDogcHVibGljIFBhZ2VDbGllbnQgewogcHVi
bGljOgogICAgIHN0YXRpYyBQYXNzT3duUHRyPFBhZ2VDbGllbnRJbXBsPiBjcmVhdGUoRXZhc19P
YmplY3QqIHZpZXdXaWRnZXQpCkBAIC00MSw4ICs0MywxMCBAQAogICAgIH5QYWdlQ2xpZW50SW1w
bCgpOwogCiAgICAgRXZhc19PYmplY3QqIHZpZXdXaWRnZXQoKSBjb25zdCB7IHJldHVybiBtX3Zp
ZXdXaWRnZXQ7IH0KKyNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCisgICAgdm9pZCBzZXRQ
YWdlVmlld3BvcnRDb250cm9sbGVyKFBhZ2VWaWV3cG9ydENvbnRyb2xsZXIqIGNvbnRyb2xsZXIp
IHsgbV9wYWdlVmlld3BvcnRDb250cm9sbGVyID0gY29udHJvbGxlcjsgfQorI2VuZGlmCiAKLQog
cHJpdmF0ZToKICAgICBleHBsaWNpdCBQYWdlQ2xpZW50SW1wbChFdmFzX09iamVjdCopOwogCkBA
IC0xMTQsOSArMTE4LDE3IEBACiAKICAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hhbmdlQ29udGVudHNT
aXplKGNvbnN0IFdlYkNvcmU6OkludFNpemUmKTsKIAorI2lmIFVTRShDT09SRElOQVRFRF9HUkFQ
SElDUykKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVuZGVyRnJhbWUoY29uc3QgV2ViQ29yZTo6SW50
U2l6ZSYgY29udGVudHNTaXplLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBjb3ZlcmVkUmVjdCk7
CisgICAgdmlydHVhbCB2b2lkIHBhZ2VUcmFuc2l0aW9uVmlld3BvcnRSZWFkeSgpOworI2VuZGlm
CisKIHByaXZhdGU6CiAgICAgRXZhc19PYmplY3QqIG1fdmlld1dpZGdldDsKICAgICBEZWZhdWx0
VW5kb0NvbnRyb2xsZXIgbV91bmRvQ29udHJvbGxlcjsKKyNpZiBVU0UoQ09PUkRJTkFURURfR1JB
UEhJQ1MpCisgICAgUGFnZVZpZXdwb3J0Q29udHJvbGxlciogbV9wYWdlVmlld3BvcnRDb250cm9s
bGVyOworI2VuZGlmCiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL1BhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnRFZmwu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9QYWdlVmll
d3BvcnRDb250cm9sbGVyQ2xpZW50RWZsLmgJKHJldmlzaW9uIDEzMTk1MikKKysrIFNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL1BhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnRFZmwu
aAkod29ya2luZyBjb3B5KQpAQCAtNDQsNiArNDQsNyBAQAogCiAgICAgRHJhd2luZ0FyZWFQcm94
eSogZHJhd2luZ0FyZWEoKSBjb25zdDsKICAgICBXZWJDb3JlOjpJbnRTaXplIHZpZXdTaXplKCkg
eyByZXR1cm4gbV92aWV3cG9ydFNpemU7IH0KKyAgICBmbG9hdCBzY2FsZUZhY3RvcigpIGNvbnN0
IHsgcmV0dXJuIG1fc2NhbGVGYWN0b3I7IH0KIAogICAgIHZvaWQgZGlzcGxheShjb25zdCBXZWJD
b3JlOjpJbnRSZWN0JiByZWN0LCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgdmlld1Bvc2l0aW9u
KTsKICAgICB2b2lkIHVwZGF0ZVZpZXdwb3J0U2l6ZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiB2
aWV3cG9ydFNpemUpOwpAQCAtNjgsNiArNjksNyBAQAogICAgIFdlYkNvcmU6OkludFNpemUgbV9j
b250ZW50c1NpemU7CiAgICAgV2ViQ29yZTo6SW50U2l6ZSBtX3ZpZXdwb3J0U2l6ZTsKICAgICBm
bG9hdCBtX3NjYWxlRmFjdG9yOworICAgIFBhZ2VWaWV3cG9ydENvbnRyb2xsZXIqIG1fcGFnZVZp
ZXdwb3J0Q29udHJvbGxlcjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRleDogU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvUGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVu
dEVmbC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwv
UGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudEVmbC5jcHAJKHJldmlzaW9uIDEzMTk1MikKKysr
IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL1BhZ2VWaWV3cG9ydENvbnRyb2xsZXJD
bGllbnRFZmwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw2ICszMCw3IEBACiAKICNpbmNsdWRl
ICJMYXllclRyZWVDb29yZGluYXRvclByb3h5LmgiCiAjaW5jbHVkZSAiTGF5ZXJUcmVlUmVuZGVy
ZXIuaCIKKyNpbmNsdWRlICJQYWdlVmlld3BvcnRDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiVHJh
bnNmb3JtYXRpb25NYXRyaXguaCIKICNpbmNsdWRlICJld2tfdmlld19wcml2YXRlLmgiCiAKQEAg
LTQwLDYgKzQxLDcgQEAKIFBhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnRFZmw6OlBhZ2VWaWV3
cG9ydENvbnRyb2xsZXJDbGllbnRFZmwoRXZhc19PYmplY3QqIHZpZXdXaWRnZXQpCiAgICAgOiBt
X3ZpZXdXaWRnZXQodmlld1dpZGdldCkKICAgICAsIG1fc2NhbGVGYWN0b3IoMSkKKyAgICAsIG1f
cGFnZVZpZXdwb3J0Q29udHJvbGxlcigwKQogewogICAgIEFTU0VSVChtX3ZpZXdXaWRnZXQpOwog
fQpAQCAtNzYsNiArNzgsNyBAQAogICAgIG1fdmlld3BvcnRTaXplID0gdmlld3BvcnRTaXplOwog
ICAgIGV3a192aWV3X3BhZ2VfZ2V0KG1fdmlld1dpZGdldCktPnNldFZpZXdwb3J0U2l6ZSh2aWV3
cG9ydFNpemUpOwogICAgIHNldFZpc2libGVDb250ZW50c1JlY3QobV92aXNpYmxlQ29udGVudFJl
Y3QubG9jYXRpb24oKSwgbV9zY2FsZUZhY3RvciwgRmxvYXRQb2ludCgpKTsKKyAgICBtX3BhZ2VW
aWV3cG9ydENvbnRyb2xsZXItPmRpZENoYW5nZVZpZXdwb3J0U2l6ZSh2aWV3cG9ydFNpemUpOwog
fQogCiB2b2lkIFBhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnRFZmw6OnNldFZpc2libGVDb250
ZW50c1JlY3QoY29uc3QgSW50UG9pbnQmIG5ld1Njcm9sbFBvc2l0aW9uLCBmbG9hdCBuZXdTY2Fs
ZSwgY29uc3QgRmxvYXRQb2ludCYgdHJhamVjdG9yeSkKQEAgLTgzLDE4ICs4Niw2IEBACiAgICAg
bV9zY2FsZUZhY3RvciA9IG5ld1NjYWxlOwogICAgIG1fdmlzaWJsZUNvbnRlbnRSZWN0ID0gSW50
UmVjdChuZXdTY3JvbGxQb3NpdGlvbiwgbV92aWV3cG9ydFNpemUpOwogCi0gICAgLy8gTW92ZSB2
aXNpYmxlQ29udGVudFJlY3QgaW5zaWRlIGNvbnRlbnRzUmVjdCB3aGVuIHZpc2libGVDb250ZW50
UmVjdCBnb2VzIG91dHNpZGUgY29udGVudHNSZWN0LiAKLSAgICBJbnRTaXplIGNvbnRlbnRzU2l6
ZSA9IG1fY29udGVudHNTaXplOwotICAgIGNvbnRlbnRzU2l6ZS5zY2FsZShtX3NjYWxlRmFjdG9y
KTsKLSAgICBpZiAobV92aXNpYmxlQ29udGVudFJlY3QueCgpID4gY29udGVudHNTaXplLndpZHRo
KCkgLSBtX3Zpc2libGVDb250ZW50UmVjdC53aWR0aCgpKQotICAgICAgICBtX3Zpc2libGVDb250
ZW50UmVjdC5zZXRYKGNvbnRlbnRzU2l6ZS53aWR0aCgpIC0gbV92aXNpYmxlQ29udGVudFJlY3Qu
d2lkdGgoKSk7Ci0gICAgaWYgKG1fdmlzaWJsZUNvbnRlbnRSZWN0LngoKSA8IDApCi0gICAgICAg
IG1fdmlzaWJsZUNvbnRlbnRSZWN0LnNldFgoMCk7Ci0gICAgaWYgKG1fdmlzaWJsZUNvbnRlbnRS
ZWN0LnkoKSA+IGNvbnRlbnRzU2l6ZS5oZWlnaHQoKSAtIG1fdmlzaWJsZUNvbnRlbnRSZWN0Lmhl
aWdodCgpKQotICAgICAgICBtX3Zpc2libGVDb250ZW50UmVjdC5zZXRZKGNvbnRlbnRzU2l6ZS5o
ZWlnaHQoKSAtIG1fdmlzaWJsZUNvbnRlbnRSZWN0LmhlaWdodCgpKTsKLSAgICBpZiAobV92aXNp
YmxlQ29udGVudFJlY3QueSgpIDwgMCkKLSAgICAgICAgbV92aXNpYmxlQ29udGVudFJlY3Quc2V0
WSgwKTsKLQogICAgIEZsb2F0UmVjdCBtYXBSZWN0VG9XZWJDb250ZW50ID0gbV92aXNpYmxlQ29u
dGVudFJlY3Q7CiAgICAgbWFwUmVjdFRvV2ViQ29udGVudC5zY2FsZSgxIC8gbV9zY2FsZUZhY3Rv
cik7CiAgICAgZHJhd2luZ0FyZWEoKS0+c2V0VmlzaWJsZUNvbnRlbnRzUmVjdChlbmNsb3NpbmdJ
bnRSZWN0KG1hcFJlY3RUb1dlYkNvbnRlbnQpLCBtX3NjYWxlRmFjdG9yLCB0cmFqZWN0b3J5KTsK
QEAgLTEwMywyNCArOTQsMzggQEAKIHZvaWQgUGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudEVm
bDo6ZGlkQ2hhbmdlQ29udGVudHNTaXplKGNvbnN0IFdlYkNvcmU6OkludFNpemUmIHNpemUpCiB7
CiAgICAgbV9jb250ZW50c1NpemUgPSBzaXplOwotICAgIHNldFZpc2libGVDb250ZW50c1JlY3Qo
bV92aXNpYmxlQ29udGVudFJlY3QubG9jYXRpb24oKSwgbV9zY2FsZUZhY3RvciwgRmxvYXRQb2lu
dCgpKTsKICAgICBkcmF3aW5nQXJlYSgpLT5sYXllclRyZWVDb29yZGluYXRvclByb3h5KCktPnNl
dENvbnRlbnRzU2l6ZShXZWJDb3JlOjpGbG9hdFNpemUoc2l6ZS53aWR0aCgpLCBzaXplLmhlaWdo
dCgpKSk7CisKKyAgICB7CisgICAgICAgIFZpZXdwb3J0VXBkYXRlRGVmZXJyZXIgZGVmZXJyZXIo
bV9wYWdlVmlld3BvcnRDb250cm9sbGVyKTsKKyAgICAgICAgc2V0VmlzaWJsZUNvbnRlbnRzUmVj
dChtX3Zpc2libGVDb250ZW50UmVjdC5sb2NhdGlvbigpLCBtX3NjYWxlRmFjdG9yLCBGbG9hdFBv
aW50KCkpOworICAgIH0KKyAgICBld2tfdmlld19kaXNwbGF5KG1fdmlld1dpZGdldCwgbV92aXNp
YmxlQ29udGVudFJlY3QpOwogfQogCi12b2lkIFBhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnRF
Zmw6OnNldFZpZXdwb3J0UG9zaXRpb24oY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYgLypjb250
ZW50c1BvaW50Ki8pCit2b2lkIFBhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnRFZmw6OnNldFZp
ZXdwb3J0UG9zaXRpb24oY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYgY29udGVudHNQb2ludCkK
IHsKKyAgICBzZXRWaXNpYmxlQ29udGVudHNSZWN0KEludFBvaW50KGNvbnRlbnRzUG9pbnQueCgp
LCBjb250ZW50c1BvaW50LnkoKSksIG1fc2NhbGVGYWN0b3IsIEZsb2F0UG9pbnQoKSk7CisgICAg
bV9wYWdlVmlld3BvcnRDb250cm9sbGVyLT5kaWRDaGFuZ2VDb250ZW50c1Zpc2liaWxpdHkoY29u
dGVudHNQb2ludCwgbV9zY2FsZUZhY3RvciwgRmxvYXRQb2ludCgpKTsKIH0KIAotdm9pZCBQYWdl
Vmlld3BvcnRDb250cm9sbGVyQ2xpZW50RWZsOjpzZXRDb250ZW50c1NjYWxlKGZsb2F0LCBib29s
IC8qdHJlYXRBc0luaXRpYWxWYWx1ZSovKQordm9pZCBQYWdlVmlld3BvcnRDb250cm9sbGVyQ2xp
ZW50RWZsOjpzZXRDb250ZW50c1NjYWxlKGZsb2F0IG5ld1NjYWxlLCBib29sIHRyZWF0QXNJbml0
aWFsVmFsdWUpCiB7CisgICAgaWYgKHRyZWF0QXNJbml0aWFsVmFsdWUpCisgICAgICAgIG1fdmlz
aWJsZUNvbnRlbnRSZWN0LnNldExvY2F0aW9uKEludFBvaW50KCkpOworICAgIG1fc2NhbGVGYWN0
b3IgPSBuZXdTY2FsZTsKKyAgICBkcmF3aW5nQXJlYSgpLT5sYXllclRyZWVDb29yZGluYXRvclBy
b3h5KCktPnNldENvbnRlbnRzU2l6ZShXZWJDb3JlOjpGbG9hdFNpemUobV9jb250ZW50c1NpemUu
d2lkdGgoKSwgbV9jb250ZW50c1NpemUuaGVpZ2h0KCkpKTsKIH0KIAogdm9pZCBQYWdlVmlld3Bv
cnRDb250cm9sbGVyQ2xpZW50RWZsOjpkaWRSZXN1bWVDb250ZW50KCkKIHsKKyAgICBtX3BhZ2VW
aWV3cG9ydENvbnRyb2xsZXItPmRpZENoYW5nZUNvbnRlbnRzVmlzaWJpbGl0eShtX3Zpc2libGVD
b250ZW50UmVjdC5sb2NhdGlvbigpLCBtX3NjYWxlRmFjdG9yKTsKIH0KIAogdm9pZCBQYWdlVmll
d3BvcnRDb250cm9sbGVyQ2xpZW50RWZsOjpkaWRDaGFuZ2VWaXNpYmxlQ29udGVudHMoKQogewor
ICAgIEludFJlY3QgcmVjdCA9IEludFJlY3QoSW50UG9pbnQoKSwgbV92aXNpYmxlQ29udGVudFJl
Y3Quc2l6ZSgpKTsKKyAgICBld2tfdmlld19kaXNwbGF5KG1fdmlld1dpZGdldCwgcmVjdCk7CiB9
CiAKIHZvaWQgUGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudEVmbDo6ZGlkQ2hhbmdlVmlld3Bv
cnRBdHRyaWJ1dGVzKCkKQEAgLTEyOSw2ICsxMzQsNyBAQAogCiB2b2lkIFBhZ2VWaWV3cG9ydENv
bnRyb2xsZXJDbGllbnRFZmw6OnNldENvbnRyb2xsZXIoUGFnZVZpZXdwb3J0Q29udHJvbGxlciog
cGFnZVZpZXdwb3J0Q29udHJvbGxlcikKIHsKKyAgICBtX3BhZ2VWaWV3cG9ydENvbnRyb2xsZXIg
PSBwYWdlVmlld3BvcnRDb250cm9sbGVyOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL1BhZ2VDbGllbnRJbXBsLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9QYWdlQ2xpZW50
SW1wbC5jcHAJKHJldmlzaW9uIDEzMTk1MikKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZWZsL1BhZ2VDbGllbnRJbXBsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDIsNiArNDIsMTAg
QEAKICNpbmNsdWRlICJld2tfdmlldy5oIgogI2luY2x1ZGUgImV3a192aWV3X3ByaXZhdGUuaCIK
IAorI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDUykKKyNpbmNsdWRlICJQYWdlVmlld3BvcnRD
b250cm9sbGVyLmgiCisjZW5kaWYKKwogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVz
cGFjZSBXZWJLaXQgewpAQCAtMTM4LDkgKzE0MiwxMyBAQAogICAgIG5vdEltcGxlbWVudGVkKCk7
CiB9CiAKLXZvaWQgUGFnZUNsaWVudEltcGw6OmRpZENoYW5nZVZpZXdwb3J0UHJvcGVydGllcyhj
b25zdCBXZWJDb3JlOjpWaWV3cG9ydEF0dHJpYnV0ZXMmKQordm9pZCBQYWdlQ2xpZW50SW1wbDo6
ZGlkQ2hhbmdlVmlld3BvcnRQcm9wZXJ0aWVzKGNvbnN0IFdlYkNvcmU6OlZpZXdwb3J0QXR0cmli
dXRlcyYgYXR0cikKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOworI2lmIFVTRShDT09SRElOQVRF
RF9HUkFQSElDUykKKyAgICBtX3BhZ2VWaWV3cG9ydENvbnRyb2xsZXItPmRpZENoYW5nZVZpZXdw
b3J0QXR0cmlidXRlcyhhdHRyKTsKKyNlbHNlCisgICAgVU5VU0VEX1BBUkFNKGF0dHIpOworI2Vu
ZGlmCiB9CiAKIHZvaWQgUGFnZUNsaWVudEltcGw6OnJlZ2lzdGVyRWRpdENvbW1hbmQoUGFzc1Jl
ZlB0cjxXZWJFZGl0Q29tbWFuZFByb3h5PiBjb21tYW5kLCBXZWJQYWdlUHJveHk6OlVuZG9PclJl
ZG8gdW5kb09yUmVkbykKQEAgLTI4OCwxNSArMjk2LDM1IEBACiB9CiAKICNpZiBVU0UoVElMRURf
QkFDS0lOR19TVE9SRSkKLXZvaWQgUGFnZUNsaWVudEltcGw6OnBhZ2VEaWRSZXF1ZXN0U2Nyb2xs
KGNvbnN0IEludFBvaW50JikKK3ZvaWQgUGFnZUNsaWVudEltcGw6OnBhZ2VEaWRSZXF1ZXN0U2Ny
b2xsKGNvbnN0IEludFBvaW50JiBwb3NpdGlvbikKIHsKLSAgICBub3RJbXBsZW1lbnRlZCgpOwor
I2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDUykKKyAgICBtX3BhZ2VWaWV3cG9ydENvbnRyb2xs
ZXItPnBhZ2VEaWRSZXF1ZXN0U2Nyb2xsKHBvc2l0aW9uKTsKKyNlbHNlCisgICAgVU5VU0VEX1BB
UkFNKHBvc2l0aW9uKTsKKyNlbmRpZgogfQogI2VuZGlmCiAKIHZvaWQgUGFnZUNsaWVudEltcGw6
OmRpZENoYW5nZUNvbnRlbnRzU2l6ZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBzaXplKQogewor
I2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDUykKKyAgICBtX3BhZ2VWaWV3cG9ydENvbnRyb2xs
ZXItPmRpZENoYW5nZUNvbnRlbnRzU2l6ZShzaXplKTsKKyNlbHNlCiAgICAgZXdrX3ZpZXdfY29u
dGVudHNfc2l6ZV9jaGFuZ2VkKG1fdmlld1dpZGdldCwgc2l6ZSk7CisjZW5kaWYKIH0KIAordm9p
ZCBQYWdlQ2xpZW50SW1wbDo6ZGlkUmVuZGVyRnJhbWUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYg
Y29udGVudHNTaXplLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBjb3ZlcmVkUmVjdCkKK3sKKyAg
ICAvLyBUaGUgdmlld3BvcnQgaGFzIHRvIGJlIG5vdGlmaWVkIGZpcnN0IHNvIHRoYXQgdGhlIHZp
ZXdwb3J0IHBvc2l0aW9uCisgICAgLy8gaXMgYWRqdXN0ZWQgYmVmb3JlIHRoZSBsb2FkVmlzdWFs
bHlDb21taXR0ZWQoKSBzaWduYWwuCisgICAgbV9wYWdlVmlld3BvcnRDb250cm9sbGVyLT5kaWRS
ZW5kZXJGcmFtZShjb250ZW50c1NpemUsIGNvdmVyZWRSZWN0KTsKK30KKwordm9pZCBQYWdlQ2xp
ZW50SW1wbDo6cGFnZVRyYW5zaXRpb25WaWV3cG9ydFJlYWR5KCkKK3sKKyAgICBtX3BhZ2VWaWV3
cG9ydENvbnRyb2xsZXItPnBhZ2VUcmFuc2l0aW9uVmlld3BvcnRSZWFkeSgpOworfQorCiB9IC8v
IG5hbWVzcGFjZSBXZWJLaXQKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvV2Vi
UGFnZVByb3h5RWZsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
ZWZsL1dlYlBhZ2VQcm94eUVmbC5jcHAJKHJldmlzaW9uIDEzMTk1MikKKysrIFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9lZmwvV2ViUGFnZVByb3h5RWZsLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
OTMsNCArOTMsMTYgQEAKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCisjaWYgVVNFKENPT1JE
SU5BVEVEX0dSQVBISUNTKQordm9pZCBXZWJQYWdlUHJveHk6OmRpZFJlbmRlckZyYW1lKGNvbnN0
IFdlYkNvcmU6OkludFNpemUmIGNvbnRlbnRzU2l6ZSwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYg
Y292ZXJlZFJlY3QpCit7CisgICAgbV9wYWdlQ2xpZW50LT5kaWRSZW5kZXJGcmFtZShjb250ZW50
c1NpemUsIGNvdmVyZWRSZWN0KTsKK30KKwordm9pZCBXZWJQYWdlUHJveHk6OnBhZ2VUcmFuc2l0
aW9uVmlld3BvcnRSZWFkeSgpCit7CisgICAgbV9wYWdlQ2xpZW50LT5wYWdlVHJhbnNpdGlvblZp
ZXdwb3J0UmVhZHkoKTsKK30KKyNlbmRpZgorCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKSW5kZXg6
IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgJKHJldmlzaW9uIDEzMTk1MikK
KysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAkod29ya2luZyBjb3B5
KQpAQCAtMzU1LDggKzM1NSwxMCBAQAogICAgIAogICAgIGJvb2wgbWFpbnRhaW5zSW5hY3RpdmVT
ZWxlY3Rpb24oKSBjb25zdCB7IHJldHVybiBtX21haW50YWluc0luYWN0aXZlU2VsZWN0aW9uOyB9
CiAgICAgdm9pZCBzZXRNYWludGFpbnNJbmFjdGl2ZVNlbGVjdGlvbihib29sKTsKKyNpZiBQTEFU
Rk9STShRVCkgfHwgUExBVEZPUk0oRUZMKSAmJiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCisg
ICAgdm9pZCBkaWRSZW5kZXJGcmFtZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBjb250ZW50c1Np
emUsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGNvdmVyZWRSZWN0KTsKKyNlbmRpZgogI2lmIFBM
QVRGT1JNKFFUKQotICAgIHZvaWQgZGlkUmVuZGVyRnJhbWUoY29uc3QgV2ViQ29yZTo6SW50U2l6
ZSYgY29udGVudHNTaXplLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBjb3ZlcmVkUmVjdCk7CiAg
ICAgdm9pZCByZWdpc3RlckFwcGxpY2F0aW9uU2NoZW1lKGNvbnN0IFN0cmluZyYgc2NoZW1lKTsK
ICAgICB2b2lkIHJlc29sdmVBcHBsaWNhdGlvblNjaGVtZVJlcXVlc3QoUXROZXR3b3JrUmVxdWVz
dERhdGEpOwogICAgIHZvaWQgc2VuZEFwcGxpY2F0aW9uU2NoZW1lUmVwbHkoY29uc3QgUVF1aWNr
TmV0d29ya1JlcGx5Kik7CkBAIC04NTQsOCArODU2LDEwIEBACiAgICAgdm9pZCBwYWdlRGlkUmVx
dWVzdFNjcm9sbChjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYpOwogI2VuZGlmCiAKKyNpZiBQTEFU
Rk9STShRVCkgfHwgUExBVEZPUk0oRUZMKSAmJiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCisg
ICAgdm9pZCBwYWdlVHJhbnNpdGlvblZpZXdwb3J0UmVhZHkoKTsKKyNlbmRpZgogI2lmIFBMQVRG
T1JNKFFUKQotICAgIHZvaWQgcGFnZVRyYW5zaXRpb25WaWV3cG9ydFJlYWR5KCk7CiAgICAgdm9p
ZCBkaWRGaW5kWm9vbWFibGVBcmVhKGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiwgY29uc3QgV2Vi
Q29yZTo6SW50UmVjdCYpOwogI2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9Db29yZGluYXRlZEdyYXBoaWNzL0xheWVyVHJlZUNvb3JkaW5hdG9yUHJveHkuY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db29yZGluYXRlZEdyYXBoaWNzL0xh
eWVyVHJlZUNvb3JkaW5hdG9yUHJveHkuY3BwCShyZXZpc2lvbiAxMzE5NTIpCisrKyBTb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVDb29yZGluYXRv
clByb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTIwLDcgKzEyMCw3IEBACiB7CiAgICAgZGlz
cGF0Y2hVcGRhdGUoYmluZCgmTGF5ZXJUcmVlUmVuZGVyZXI6OmZsdXNoTGF5ZXJDaGFuZ2VzLCBt
X3JlbmRlcmVyLmdldCgpKSk7CiAgICAgdXBkYXRlVmlld3BvcnQoKTsKLSNpZiBQTEFURk9STShR
VCkKKyNpZiBQTEFURk9STShRVCkgfHwgUExBVEZPUk0oRUZMKSAmJiBVU0UoQ09PUkRJTkFURURf
R1JBUEhJQ1MpCiAgICAgbV9kcmF3aW5nQXJlYVByb3h5LT5wYWdlKCktPmRpZFJlbmRlckZyYW1l
KGNvbnRlbnRzU2l6ZSwgY292ZXJlZFJlY3QpOwogI2Vsc2UKICAgICBVTlVTRURfUEFSQU0oY29u
dGVudHNTaXplKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NNYWtlTGlzdHMudHh0Cj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQyL0NNYWtlTGlzdHMudHh0CShyZXZpc2lvbiAxMzE5NTIpCisr
KyBTb3VyY2UvV2ViS2l0Mi9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpAQCAtMjM2LDYg
KzIzNiw3IEBACiAgICAgVUlQcm9jZXNzL0dlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5h
Z2VyUHJveHkuY3BwCiAgICAgVUlQcm9jZXNzL0dlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RQ
cm94eS5jcHAKIAorICAgIFVJUHJvY2Vzcy9QYWdlVmlld3BvcnRDb250cm9sbGVyLmNwcAogICAg
IFVJUHJvY2Vzcy9SZXNwb25zaXZlbmVzc1RpbWVyLmNwcAogICAgIFVJUHJvY2Vzcy9WaXNpdGVk
TGlua1Byb3ZpZGVyLmNwcAogICAgIFVJUHJvY2Vzcy9XZWJBcHBsaWNhdGlvbkNhY2hlTWFuYWdl
clByb3h5LmNwcApJbmRleDogU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwkocmV2aXNpb24gMTMxOTcyKQorKysgU291cmNlL1dl
YktpdDIvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNjQgQEAKKzIwMTItMTAt
MTkgIFlhZWwgQWhhcm9uICA8eWFlbC5haGFyb25AaW50ZWwuY29tPgorCisgICAgICAgIFtFRkxd
W1dLMl0gVXNlIHRoZSBwb3J0IGluZGVwZW5kZW50IFBhZ2VWaWV3cG9ydENvbnRyb2xsZXIKKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk5ODUwCisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVGFrZSBQYWdlVmll
d3BvcnRDb250cm9sbGVyIGludG8gdXNlLCBhbmQgcmVseSBvbiBpdCB0byBjYWxjdWxhdGUKKyAg
ICAgICAgc2Nyb2xsIHBvc2l0aW9uIGFuZCB6b29tIGxldmVsLgorICAgICAgICBXaXRoIHRoaXMg
cGF0Y2gsIHdlIGNhbiBkbyBpbnRyYSBwYWdlIG5hdmlnYXRpb24gYW5kIHVzZSB0aGUgc2Nyb2xs
d2hlZWwKKyAgICAgICAgdG8gc2Nyb2xsLCB3aGVuIFdURl9VU0VfQ09PUkRJTkFURURfR1JBUEhJ
Q1MgYW5kIGFsbCByZWxhdGVkIGZsYWdzIGFyZSBlbmFibGVkLgorCisgICAgICAgICogQ01ha2VM
aXN0cy50eHQ6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvUGFnZUNsaWVudEltcGwuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6ZGlkQ2hhbmdlVmlld3BvcnRQcm9w
ZXJ0aWVzKToKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6OnBhZ2VEaWRSZXF1ZXN0
U2Nyb2xsKToKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6OmRpZENoYW5nZUNvbnRl
bnRzU2l6ZSk6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50
SW1wbDo6ZGlkUmVuZGVyRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6
cGFnZVRyYW5zaXRpb25WaWV3cG9ydFJlYWR5KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2Vm
bC9QYWdlQ2xpZW50SW1wbC5oOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFBhZ2VDbGll
bnRJbXBsKToKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6OnNldFBhZ2VWaWV3cG9y
dENvbnRyb2xsZXIpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL1BhZ2VWaWV3cG9ydENv
bnRyb2xsZXJDbGllbnRFZmwuY3BwOgorICAgICAgICAoV2ViS2l0OjpQYWdlVmlld3BvcnRDb250
cm9sbGVyQ2xpZW50RWZsOjpQYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50RWZsKToKKyAgICAg
ICAgKFdlYktpdDo6UGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudEVmbDo6dXBkYXRlVmlld3Bv
cnRTaXplKToKKyAgICAgICAgKFdlYktpdDo6UGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudEVm
bDo6c2V0VmlzaWJsZUNvbnRlbnRzUmVjdCk6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VWaWV3cG9y
dENvbnRyb2xsZXJDbGllbnRFZmw6OmRpZENoYW5nZUNvbnRlbnRzU2l6ZSk6CisgICAgICAgIChX
ZWJLaXQ6OlBhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnRFZmw6OnNldFZpZXdwb3J0UG9zaXRp
b24pOgorICAgICAgICAoV2ViS2l0OjpQYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50RWZsOjpz
ZXRDb250ZW50c1NjYWxlKToKKyAgICAgICAgKFdlYktpdDo6UGFnZVZpZXdwb3J0Q29udHJvbGxl
ckNsaWVudEVmbDo6ZGlkUmVzdW1lQ29udGVudCk6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VWaWV3
cG9ydENvbnRyb2xsZXJDbGllbnRFZmw6OmRpZENoYW5nZVZpc2libGVDb250ZW50cyk6CisgICAg
ICAgIChXZWJLaXQ6OlBhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnRFZmw6OnNldENvbnRyb2xs
ZXIpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL1BhZ2VWaWV3cG9ydENvbnRyb2xsZXJD
bGllbnRFZmwuaDoKKyAgICAgICAgKFdlYktpdDo6UGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVu
dEVmbDo6c2NhbGVGYWN0b3IpOgorICAgICAgICAoUGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVu
dEVmbCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuY3BwOgorICAgICAg
ICAoRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKToKKyAgICAgICAgKGFkanVzdGVkUG9pbnRGb3JTY2Fs
aW5nKToKKyAgICAgICAgKF9ld2tfdmlld19zbWFydF9tb3VzZV93aGVlbCk6CisgICAgICAgIChf
ZXdrX3ZpZXdfc21hcnRfbW91c2VfZG93bik6CisgICAgICAgIChfZXdrX3ZpZXdfc21hcnRfbW91
c2VfdXApOgorICAgICAgICAoX2V3a192aWV3X3NtYXJ0X21vdXNlX21vdmUpOgorICAgICAgICAo
X2V3a192aWV3X2luaXRpYWxpemUpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Db29yZGluYXRlZEdy
YXBoaWNzL0xheWVyVHJlZUNvb3JkaW5hdG9yUHJveHkuY3BwOgorICAgICAgICAoV2ViS2l0OjpM
YXllclRyZWVDb29yZGluYXRvclByb3h5OjpkaWRSZW5kZXJGcmFtZSk6CisgICAgICAgICogVUlQ
cm9jZXNzL1BhZ2VDbGllbnQuaDoKKyAgICAgICAgKFBhZ2VDbGllbnQpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9QYWdlVmlld3BvcnRDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
UGFnZVZpZXdwb3J0Q29udHJvbGxlci5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuaDoKKyAgICAgICAgKFdlYlBhZ2VQcm94eSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBh
Z2VQcm94eS5tZXNzYWdlcy5pbjoKKyAgICAgICAgKiBVSVByb2Nlc3MvZWZsL1dlYlBhZ2VQcm94
eUVmbC5jcHA6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJv
eHk6OmRpZFJlbmRlckZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpwYWdl
VHJhbnNpdGlvblZpZXdwb3J0UmVhZHkpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6ZGlkQ29tcGxldGVQYWdlVHJh
bnNpdGlvbik6CisKIDIwMTItMTAtMTkgIEJyYWR5IEVpZHNvbiAgPGJlaWRzb25AYXBwbGUuY29t
PgogCiAgICAgICAgIFdlYlByb2Nlc3Mgc2hvdWxkIG9ubHkgY29ubmVjdCB0byB0aGUgTmV0d29y
a1Byb2Nlc3MgaWYgTmV0d29ya1Byb2Nlc3MgaXMgZW5hYmxlZAo=
</data>
<flag name="commit-queue"
          id="183143"
          type_id="3"
          status="-"
          setter="gyuyoung.kim"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>169940</attachid>
            <date>2012-10-22 10:50:58 -0700</date>
            <delta_ts>2012-10-23 07:45:11 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>99850.patch</filename>
            <type>text/plain</type>
            <size>26525</size>
            <attacher name="Yael">yael</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAJ
KHJldmlzaW9uIDEzMjA4NykKKysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9X
ZWJQYWdlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTg1Myw3ICsxODUzLDcgQEAKIAogdm9pZCBX
ZWJQYWdlOjpkaWRDb21wbGV0ZVBhZ2VUcmFuc2l0aW9uKCkKIHsKLSNpZiBQTEFURk9STShRVCkK
KyNpZiBVU0UoVElMRURfQkFDS0lOR19TVE9SRSkKICAgICBpZiAobV9tYWluRnJhbWUtPmNvcmVG
cmFtZSgpLT52aWV3KCktPmRlbGVnYXRlc1Njcm9sbGluZygpKQogICAgICAgICAvLyBXYWl0IHVu
dGlsIHRoZSBVSSBwcm9jZXNzIHNlbnQgdXMgdGhlIHZpc2libGUgcmVjdCBpdCB3YW50cyByZW5k
ZXJlZC4KICAgICAgICAgc2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpQYWdlVHJhbnNpdGlv
blZpZXdwb3J0UmVhZHkoKSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRp
bmF0ZWRHcmFwaGljcy9MYXllclRyZWVDb29yZGluYXRvclByb3h5LmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVD
b29yZGluYXRvclByb3h5LmNwcAkocmV2aXNpb24gMTMyMDg3KQorKysgU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlQ29vcmRpbmF0b3JQcm94eS5j
cHAJKHdvcmtpbmcgY29weSkKQEAgLTEyMCw3ICsxMjAsNyBAQAogewogICAgIGRpc3BhdGNoVXBk
YXRlKGJpbmQoJkxheWVyVHJlZVJlbmRlcmVyOjpmbHVzaExheWVyQ2hhbmdlcywgbV9yZW5kZXJl
ci5nZXQoKSkpOwogICAgIHVwZGF0ZVZpZXdwb3J0KCk7Ci0jaWYgUExBVEZPUk0oUVQpCisjaWYg
VVNFKFRJTEVEX0JBQ0tJTkdfU1RPUkUpCiAgICAgbV9kcmF3aW5nQXJlYVByb3h5LT5wYWdlKCkt
PmRpZFJlbmRlckZyYW1lKGNvbnRlbnRzU2l6ZSwgY292ZXJlZFJlY3QpOwogI2Vsc2UKICAgICBV
TlVTRURfUEFSQU0oY29udGVudHNTaXplKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkubWVzc2FnZXMuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgkocmV2aXNpb24gMTMyMDg3KQorKysg
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgkod29ya2lu
ZyBjb3B5KQpAQCAtNzEsOSArNzEsOSBAQAogCiAjaWYgVVNFKFRJTEVEX0JBQ0tJTkdfU1RPUkUp
CiAgICAgUGFnZURpZFJlcXVlc3RTY3JvbGwoV2ViQ29yZTo6SW50UG9pbnQgcG9pbnQpCisgICAg
UGFnZVRyYW5zaXRpb25WaWV3cG9ydFJlYWR5KCkKICNlbmRpZgogI2lmIFBMQVRGT1JNKFFUKQot
ICAgIFBhZ2VUcmFuc2l0aW9uVmlld3BvcnRSZWFkeSgpCiAgICAgRGlkRmluZFpvb21hYmxlQXJl
YShXZWJDb3JlOjpJbnRQb2ludCB0YXJnZXQsIFdlYkNvcmU6OkludFJlY3QgYXJlYSkKICAgICBB
dXRoZW50aWNhdGlvblJlcXVpcmVkUmVxdWVzdChXVEY6OlN0cmluZyBob3N0bmFtZSwgV1RGOjpT
dHJpbmcgcmVhbG0sIFdURjo6U3RyaW5nIHByZWZpbGxlZFVzZXJuYW1lKSAtPiAoV1RGOjpTdHJp
bmcgdXNlcm5hbWUsIFdURjo6U3RyaW5nIHBhc3N3b3JkKQogICAgIENlcnRpZmljYXRlVmVyaWZp
Y2F0aW9uUmVxdWVzdChXVEY6OlN0cmluZyBob3N0bmFtZSkgLT4gKGJvb2wgaWdub3JlRXJyb3Jz
KQpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaAo9PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCShyZXZpc2lvbiAxMzIw
ODcpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xMTYsMTAgKzExNiwxMCBAQAogCiAjaWYgVVNFKFRJTEVEX0JBQ0tJTkdfU1RPUkUp
CiAgICAgdmlydHVhbCB2b2lkIHBhZ2VEaWRSZXF1ZXN0U2Nyb2xsKGNvbnN0IFdlYkNvcmU6Oklu
dFBvaW50JikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBkaWRSZW5kZXJGcmFtZShjb25zdCBXZWJD
b3JlOjpJbnRTaXplJiBjb250ZW50c1NpemUsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGNvdmVy
ZWRSZWN0KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHBhZ2VUcmFuc2l0aW9uVmlld3BvcnRSZWFk
eSgpID0gMDsKICNlbmRpZgogI2lmIFBMQVRGT1JNKFFUKQotICAgIHZpcnR1YWwgdm9pZCBkaWRS
ZW5kZXJGcmFtZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBjb250ZW50c1NpemUsIGNvbnN0IFdl
YkNvcmU6OkludFJlY3QmIGNvdmVyZWRSZWN0KSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHBhZ2VU
cmFuc2l0aW9uVmlld3BvcnRSZWFkeSgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkRmluZFpv
b21hYmxlQXJlYShjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYsIGNvbnN0IFdlYkNvcmU6OkludFJl
Y3QmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVNZXNzYWdlRnJvbU5hdmlnYXRv
clF0T2JqZWN0KGNvbnN0IFN0cmluZyYpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlVGV4
dElucHV0U3RhdGUoKSA9IDA7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGFnZVZp
ZXdwb3J0Q29udHJvbGxlci5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9QYWdlVmlld3BvcnRDb250cm9sbGVyLmgJKHJldmlzaW9uIDEzMjA4NykKKysrIFNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9QYWdlVmlld3BvcnRDb250cm9sbGVyLmgJKHdvcmtpbmcgY29weSkK
QEAgLTIyLDYgKzIyLDggQEAKICNpZm5kZWYgUGFnZVZpZXdwb3J0Q29udHJvbGxlcl9oCiAjZGVm
aW5lIFBhZ2VWaWV3cG9ydENvbnRyb2xsZXJfaAogCisjaWYgVVNFKENPT1JESU5BVEVEX0dSQVBI
SUNTKQorCiAjaW5jbHVkZSA8V2ViQ29yZS9GbG9hdFBvaW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29y
ZS9GbG9hdFJlY3QuaD4KICNpbmNsdWRlIDxXZWJDb3JlL0Zsb2F0U2l6ZS5oPgpAQCAtMTQwLDQg
KzE0Miw2IEBACiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCisjZW5kaWYKKwogI2VuZGlmIC8v
IFBhZ2VWaWV3cG9ydENvbnRyb2xsZXJfaApJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1BhZ2VWaWV3cG9ydENvbnRyb2xsZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9QYWdlVmlld3BvcnRDb250cm9sbGVyLmNwcAkocmV2aXNpb24gMTMyMDg3KQor
KysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BhZ2VWaWV3cG9ydENvbnRyb2xsZXIuY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC0yMiw2ICsyMiw4IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5j
bHVkZSAiUGFnZVZpZXdwb3J0Q29udHJvbGxlci5oIgogCisjaWYgVVNFKENPT1JESU5BVEVEX0dS
QVBISUNTKQorCiAjaW5jbHVkZSAiUGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudC5oIgogI2lu
Y2x1ZGUgIldlYlBhZ2VQcm94eS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvRmxvYXRSZWN0Lmg+CkBA
IC0yOTAsMyArMjkyLDUgQEAKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZgpJ
bmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvUGFnZUNsaWVudEltcGwuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL1BhZ2VDbGll
bnRJbXBsLmNwcAkocmV2aXNpb24gMTMyMDg3KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9lZmwvUGFnZUNsaWVudEltcGwuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00Miw2ICs0Miwx
MCBAQAogI2luY2x1ZGUgImV3a192aWV3LmgiCiAjaW5jbHVkZSAiZXdrX3ZpZXdfcHJpdmF0ZS5o
IgogCisjaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQorI2luY2x1ZGUgIlBhZ2VWaWV3cG9y
dENvbnRyb2xsZXIuaCIKKyNlbmRpZgorCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIAogbmFt
ZXNwYWNlIFdlYktpdCB7CkBAIC0xMzgsOSArMTQyLDEzIEBACiAgICAgbm90SW1wbGVtZW50ZWQo
KTsKIH0KIAotdm9pZCBQYWdlQ2xpZW50SW1wbDo6ZGlkQ2hhbmdlVmlld3BvcnRQcm9wZXJ0aWVz
KGNvbnN0IFdlYkNvcmU6OlZpZXdwb3J0QXR0cmlidXRlcyYpCit2b2lkIFBhZ2VDbGllbnRJbXBs
OjpkaWRDaGFuZ2VWaWV3cG9ydFByb3BlcnRpZXMoY29uc3QgV2ViQ29yZTo6Vmlld3BvcnRBdHRy
aWJ1dGVzJiBhdHRyKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7CisjaWYgVVNFKENPT1JESU5B
VEVEX0dSQVBISUNTKQorICAgIG1fcGFnZVZpZXdwb3J0Q29udHJvbGxlci0+ZGlkQ2hhbmdlVmll
d3BvcnRBdHRyaWJ1dGVzKGF0dHIpOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oYXR0cik7Cisj
ZW5kaWYKIH0KIAogdm9pZCBQYWdlQ2xpZW50SW1wbDo6cmVnaXN0ZXJFZGl0Q29tbWFuZChQYXNz
UmVmUHRyPFdlYkVkaXRDb21tYW5kUHJveHk+IGNvbW1hbmQsIFdlYlBhZ2VQcm94eTo6VW5kb09y
UmVkbyB1bmRvT3JSZWRvKQpAQCAtMjg4LDE1ICsyOTYsMzUgQEAKIH0KIAogI2lmIFVTRShUSUxF
RF9CQUNLSU5HX1NUT1JFKQotdm9pZCBQYWdlQ2xpZW50SW1wbDo6cGFnZURpZFJlcXVlc3RTY3Jv
bGwoY29uc3QgSW50UG9pbnQmKQordm9pZCBQYWdlQ2xpZW50SW1wbDo6cGFnZURpZFJlcXVlc3RT
Y3JvbGwoY29uc3QgSW50UG9pbnQmIHBvc2l0aW9uKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7
CisjaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQorICAgIG1fcGFnZVZpZXdwb3J0Q29udHJv
bGxlci0+cGFnZURpZFJlcXVlc3RTY3JvbGwocG9zaXRpb24pOworI2Vsc2UKKyAgICBVTlVTRURf
UEFSQU0ocG9zaXRpb24pOworI2VuZGlmCiB9CiAjZW5kaWYKIAogdm9pZCBQYWdlQ2xpZW50SW1w
bDo6ZGlkQ2hhbmdlQ29udGVudHNTaXplKGNvbnN0IFdlYkNvcmU6OkludFNpemUmIHNpemUpCiB7
CisjaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQorICAgIG1fcGFnZVZpZXdwb3J0Q29udHJv
bGxlci0+ZGlkQ2hhbmdlQ29udGVudHNTaXplKHNpemUpOworI2Vsc2UKICAgICBld2tfdmlld19j
b250ZW50c19zaXplX2NoYW5nZWQobV92aWV3V2lkZ2V0LCBzaXplKTsKKyNlbmRpZgogfQogCisj
aWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQordm9pZCBQYWdlQ2xpZW50SW1wbDo6ZGlkUmVu
ZGVyRnJhbWUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgY29udGVudHNTaXplLCBjb25zdCBXZWJD
b3JlOjpJbnRSZWN0JiBjb3ZlcmVkUmVjdCkKK3sKKyAgICBtX3BhZ2VWaWV3cG9ydENvbnRyb2xs
ZXItPmRpZFJlbmRlckZyYW1lKGNvbnRlbnRzU2l6ZSwgY292ZXJlZFJlY3QpOworfQorCit2b2lk
IFBhZ2VDbGllbnRJbXBsOjpwYWdlVHJhbnNpdGlvblZpZXdwb3J0UmVhZHkoKQoreworICAgIG1f
cGFnZVZpZXdwb3J0Q29udHJvbGxlci0+cGFnZVRyYW5zaXRpb25WaWV3cG9ydFJlYWR5KCk7Cit9
CisjZW5kaWYKKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2VmbC9QYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50RWZsLmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvUGFnZVZpZXdwb3J0Q29u
dHJvbGxlckNsaWVudEVmbC5oCShyZXZpc2lvbiAxMzIwODcpCisrKyBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2VmbC9QYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50RWZsLmgJKHdvcmtp
bmcgY29weSkKQEAgLTQ0LDYgKzQ0LDggQEAKIAogICAgIERyYXdpbmdBcmVhUHJveHkqIGRyYXdp
bmdBcmVhKCkgY29uc3Q7CiAgICAgV2ViQ29yZTo6SW50U2l6ZSB2aWV3U2l6ZSgpIHsgcmV0dXJu
IG1fdmlld3BvcnRTaXplOyB9CisgICAgZmxvYXQgc2NhbGVGYWN0b3IoKSBjb25zdCB7IHJldHVy
biBtX3NjYWxlRmFjdG9yOyB9CisgICAgV2ViQ29yZTo6SW50UG9pbnQgc2Nyb2xsUG9zaXRpb24o
KSB7IHJldHVybiBtX3Njcm9sbFBvc2l0aW9uOyB9CiAKICAgICB2b2lkIGRpc3BsYXkoY29uc3Qg
V2ViQ29yZTo6SW50UmVjdCYgcmVjdCwgY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIHZpZXdQb3Np
dGlvbik7CiAgICAgdm9pZCB1cGRhdGVWaWV3cG9ydFNpemUoY29uc3QgV2ViQ29yZTo6SW50U2l6
ZSYgdmlld3BvcnRTaXplKTsKQEAgLTY0LDEwICs2NiwxMSBAQAogICAgIGV4cGxpY2l0IFBhZ2VW
aWV3cG9ydENvbnRyb2xsZXJDbGllbnRFZmwoRXZhc19PYmplY3QqKTsKIAogICAgIEV2YXNfT2Jq
ZWN0KiBtX3ZpZXdXaWRnZXQ7Ci0gICAgV2ViQ29yZTo6SW50UmVjdCBtX3Zpc2libGVDb250ZW50
UmVjdDsKICAgICBXZWJDb3JlOjpJbnRTaXplIG1fY29udGVudHNTaXplOwogICAgIFdlYkNvcmU6
OkludFNpemUgbV92aWV3cG9ydFNpemU7CisgICAgV2ViQ29yZTo6SW50UG9pbnQgbV9zY3JvbGxQ
b3NpdGlvbjsKICAgICBmbG9hdCBtX3NjYWxlRmFjdG9yOworICAgIFBhZ2VWaWV3cG9ydENvbnRy
b2xsZXIqIG1fcGFnZVZpZXdwb3J0Q29udHJvbGxlcjsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdl
YktpdApJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3
LmNwcAkocmV2aXNpb24gMTMyMDg3KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9l
ZmwvZXdrX3ZpZXcuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC03Niw2ICs3Niw3IEBACiAjZW5kaWYK
IAogI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDUykKKyNpbmNsdWRlICJQYWdlVmlld3BvcnRD
b250cm9sbGVyLmgiCiAjaW5jbHVkZSAiUGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudEVmbC5o
IgogI2VuZGlmCiAKQEAgLTExNyw2ICsxMTgsNyBAQAogICAgIE93blB0cjxQYWdlQ2xpZW50SW1w
bD4gcGFnZUNsaWVudDsKICNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCiAgICAgT3duUHRy
PFBhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnRFZmw+IHBhZ2VWaWV3cG9ydENvbnRyb2xsZXJD
bGllbnQ7CisgICAgT3duUHRyPFBhZ2VWaWV3cG9ydENvbnRyb2xsZXI+IHBhZ2VWaWV3cG9ydENv
bnRyb2xsZXI7CiAjZW5kaWYKICAgICBSZWZQdHI8V2ViUGFnZVByb3h5PiBwYWdlUHJveHk7CiAK
QEAgLTI3NiwxMiArMjc4LDMwIEBACiAgICAgcmV0dXJuIHRydWU7CiB9CiAKKyNpZiBVU0UoQ09P
UkRJTkFURURfR1JBUEhJQ1MpCitzdGF0aWMgRXZhc19Db29yZF9Qb2ludCBtYXBUb1dlYkNvbnRl
bnQoRXdrX1ZpZXdfU21hcnRfRGF0YSogc21hcnREYXRhLCBFdmFzX0Nvb3JkX1BvaW50IHBvaW50
KQoreworICAgIEV2YXNfQ29vcmRfUG9pbnQgcmVzdWx0OworICAgIEVXS19WSUVXX1BSSVZfR0VU
X09SX1JFVFVSTihzbWFydERhdGEsIHByaXYsIHJlc3VsdCk7CisKKyAgICByZXN1bHQueCA9IChw
b2ludC54ICAtIHNtYXJ0RGF0YS0+dmlldy54KSAvIHByaXYtPnBhZ2VWaWV3cG9ydENvbnRyb2xs
ZXJDbGllbnQtPnNjYWxlRmFjdG9yKCkgKyBzbWFydERhdGEtPnZpZXcueCArIHByaXYtPnBhZ2VW
aWV3cG9ydENvbnRyb2xsZXJDbGllbnQtPnNjcm9sbFBvc2l0aW9uKCkueCgpOworICAgIHJlc3Vs
dC55ID0gKHBvaW50LnkgLSBzbWFydERhdGEtPnZpZXcueSkgLyBwcml2LT5wYWdlVmlld3BvcnRD
b250cm9sbGVyQ2xpZW50LT5zY2FsZUZhY3RvcigpICsgc21hcnREYXRhLT52aWV3LnkgKyBwcml2
LT5wYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50LT5zY3JvbGxQb3NpdGlvbigpLnkoKTsKKyAg
ICByZXR1cm4gcmVzdWx0OworfQorI2VuZGlmCisKIHN0YXRpYyBFaW5hX0Jvb2wgX2V3a192aWV3
X3NtYXJ0X21vdXNlX3doZWVsKEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNtYXJ0RGF0YSwgY29uc3Qg
RXZhc19FdmVudF9Nb3VzZV9XaGVlbCogd2hlZWxFdmVudCkKIHsKICAgICBFV0tfVklFV19QUklW
X0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBwcml2LCBmYWxzZSk7CiAKICAgICBFdmFzX1BvaW50
IHBvc2l0aW9uID0ge3NtYXJ0RGF0YS0+dmlldy54LCBzbWFydERhdGEtPnZpZXcueX07CisjaWYg
VVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQorICAgIEV2YXNfRXZlbnRfTW91c2VfV2hlZWwgZXZl
bnQoKndoZWVsRXZlbnQpOworICAgIGV2ZW50LmNhbnZhcyA9IG1hcFRvV2ViQ29udGVudChzbWFy
dERhdGEsIGV2ZW50LmNhbnZhcyk7CisgICAgcHJpdi0+cGFnZVByb3h5LT5oYW5kbGVXaGVlbEV2
ZW50KE5hdGl2ZVdlYldoZWVsRXZlbnQoJmV2ZW50LCAmcG9zaXRpb24pKTsKKyNlbHNlCiAgICAg
cHJpdi0+cGFnZVByb3h5LT5oYW5kbGVXaGVlbEV2ZW50KE5hdGl2ZVdlYldoZWVsRXZlbnQod2hl
ZWxFdmVudCwgJnBvc2l0aW9uKSk7CisjZW5kaWYKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAt
MjkwLDcgKzMxMCwxMyBAQAogICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzbWFydERh
dGEsIHByaXYsIGZhbHNlKTsKIAogICAgIEV2YXNfUG9pbnQgcG9zaXRpb24gPSB7c21hcnREYXRh
LT52aWV3LngsIHNtYXJ0RGF0YS0+dmlldy55fTsKKyNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJ
Q1MpCisgICAgRXZhc19FdmVudF9Nb3VzZV9Eb3duIGV2ZW50KCpkb3duRXZlbnQpOworICAgIGV2
ZW50LmNhbnZhcyA9IG1hcFRvV2ViQ29udGVudChzbWFydERhdGEsIGV2ZW50LmNhbnZhcyk7Cisg
ICAgcHJpdi0+cGFnZVByb3h5LT5oYW5kbGVNb3VzZUV2ZW50KE5hdGl2ZVdlYk1vdXNlRXZlbnQo
JmV2ZW50LCAmcG9zaXRpb24pKTsKKyNlbHNlCiAgICAgcHJpdi0+cGFnZVByb3h5LT5oYW5kbGVN
b3VzZUV2ZW50KE5hdGl2ZVdlYk1vdXNlRXZlbnQoZG93bkV2ZW50LCAmcG9zaXRpb24pKTsKKyNl
bmRpZgogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC0yOTksNyArMzI1LDEzIEBACiAgICAgRVdL
X1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgcHJpdiwgZmFsc2UpOwogCiAgICAg
RXZhc19Qb2ludCBwb3NpdGlvbiA9IHtzbWFydERhdGEtPnZpZXcueCwgc21hcnREYXRhLT52aWV3
Lnl9OworI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDUykKKyAgICBFdmFzX0V2ZW50X01vdXNl
X1VwIGV2ZW50KCp1cEV2ZW50KTsKKyAgICBldmVudC5jYW52YXMgPSBtYXBUb1dlYkNvbnRlbnQo
c21hcnREYXRhLCBldmVudC5jYW52YXMpOworICAgIHByaXYtPnBhZ2VQcm94eS0+aGFuZGxlTW91
c2VFdmVudChOYXRpdmVXZWJNb3VzZUV2ZW50KCZldmVudCwgJnBvc2l0aW9uKSk7CisjZWxzZQog
ICAgIHByaXYtPnBhZ2VQcm94eS0+aGFuZGxlTW91c2VFdmVudChOYXRpdmVXZWJNb3VzZUV2ZW50
KHVwRXZlbnQsICZwb3NpdGlvbikpOworI2VuZGlmCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAg
LTMwOCw3ICszNDAsMTMgQEAKICAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc21hcnRE
YXRhLCBwcml2LCBmYWxzZSk7CiAKICAgICBFdmFzX1BvaW50IHBvc2l0aW9uID0ge3NtYXJ0RGF0
YS0+dmlldy54LCBzbWFydERhdGEtPnZpZXcueX07CisjaWYgVVNFKENPT1JESU5BVEVEX0dSQVBI
SUNTKQorICAgIEV2YXNfRXZlbnRfTW91c2VfTW92ZSBldmVudCgqbW92ZUV2ZW50KTsKKyAgICBl
dmVudC5jdXIuY2FudmFzID0gbWFwVG9XZWJDb250ZW50KHNtYXJ0RGF0YSwgZXZlbnQuY3VyLmNh
bnZhcyk7CisgICAgcHJpdi0+cGFnZVByb3h5LT5oYW5kbGVNb3VzZUV2ZW50KE5hdGl2ZVdlYk1v
dXNlRXZlbnQoJmV2ZW50LCAmcG9zaXRpb24pKTsKKyNlbHNlCiAgICAgcHJpdi0+cGFnZVByb3h5
LT5oYW5kbGVNb3VzZUV2ZW50KE5hdGl2ZVdlYk1vdXNlRXZlbnQobW92ZUV2ZW50LCAmcG9zaXRp
b24pKTsKKyNlbmRpZgogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC04MjYsNiArODY0LDggQEAK
IAogI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDUykKICAgICBwcml2LT5wYWdlVmlld3BvcnRD
b250cm9sbGVyQ2xpZW50ID0gUGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudEVmbDo6Y3JlYXRl
KGV3a1ZpZXcpOworICAgIHByaXYtPnBhZ2VWaWV3cG9ydENvbnRyb2xsZXIgPSBhZG9wdFB0cihu
ZXcgUGFnZVZpZXdwb3J0Q29udHJvbGxlcihwcml2LT5wYWdlUHJveHkuZ2V0KCksIHByaXYtPnBh
Z2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnQuZ2V0KCkpKTsKKyAgICBwcml2LT5wYWdlQ2xpZW50
LT5zZXRQYWdlVmlld3BvcnRDb250cm9sbGVyKHByaXYtPnBhZ2VWaWV3cG9ydENvbnRyb2xsZXIu
Z2V0KCkpOwogI2VuZGlmCiAKICAgICBXS1BhZ2VSZWYgd2tQYWdlID0gdG9BUEkocHJpdi0+cGFn
ZVByb3h5LmdldCgpKTsKQEAgLTE1MTgsNiArMTU1OCwxNiBAQAogICAgIGV2YXNfb2JqZWN0X3Nt
YXJ0X2NhbGxiYWNrX2NhbGwoZXdrVmlldywgImxvYWQscHJvdmlzaW9uYWwsZmFpbGVkIiwgY29u
c3RfY2FzdDxFd2tfRXJyb3IqPihlcnJvcikpOwogfQogCisjaWYgVVNFKENPT1JESU5BVEVEX0dS
QVBISUNTKQordm9pZCBld2tfdmlld19sb2FkX2NvbW1pdHRlZChFdmFzX09iamVjdCogZXdrVmll
dykKK3sKKyAgICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSk7
CisgICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgcHJpdik7CisKKyAg
ICBwcml2LT5wYWdlVmlld3BvcnRDb250cm9sbGVyLT5kaWRDb21taXRMb2FkKCk7Cit9CisjZW5k
aWYKKwogLyoqCiAgKiBAaW50ZXJuYWwKICAqIFJlcG9ydHMgdmlldyByZWNlaXZlZCByZWRpcmVj
dCBmb3IgcHJvdmlzaW9uYWwgbG9hZC4KQEAgLTE5NjAsNiArMjAxMCw4IEBACiAgICAgRVdLX1ZJ
RVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgcHJpdiwgZmFsc2UpOwogCiAgICAgRXZh
c19Qb2ludCBwb3NpdGlvbiA9IHsgc21hcnREYXRhLT52aWV3LngsIHNtYXJ0RGF0YS0+dmlldy55
IH07CisgICAgLy8gRklYTUU6IFRvdWNoIHBvaW50cyBkbyBub3QgdGFrZSBzY3JvbGwgcG9zaXRp
b24gYW5kIHNjYWxlIGludG8gYWNjb3VudCB3aGVuIAorICAgIC8vIENPT1JESU5BVEVEX0dSQVBI
SUNTIGlzIGVuYWJsZWQuCiAgICAgcHJpdi0+cGFnZVByb3h5LT5oYW5kbGVUb3VjaEV2ZW50KE5h
dGl2ZVdlYlRvdWNoRXZlbnQodHlwZSwgcG9pbnRzLCBtb2RpZmllcnMsICZwb3NpdGlvbiwgZWNv
cmVfdGltZV9nZXQoKSkpOwogCiAgICAgcmV0dXJuIHRydWU7CkluZGV4OiBTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2VmbC9QYWdlQ2xpZW50SW1wbC5oCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL1BhZ2VDbGllbnRJbXBsLmgJKHJldmlzaW9uIDEz
MjA4NykKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL1BhZ2VDbGllbnRJbXBs
LmgJKHdvcmtpbmcgY29weSkKQEAgLTMyLDYgKzMyLDggQEAKIAogbmFtZXNwYWNlIFdlYktpdCB7
CiAKK2NsYXNzIFBhZ2VWaWV3cG9ydENvbnRyb2xsZXI7CisKIGNsYXNzIFBhZ2VDbGllbnRJbXBs
IDogcHVibGljIFBhZ2VDbGllbnQgewogcHVibGljOgogICAgIHN0YXRpYyBQYXNzT3duUHRyPFBh
Z2VDbGllbnRJbXBsPiBjcmVhdGUoRXZhc19PYmplY3QqIHZpZXdXaWRnZXQpCkBAIC00MSw4ICs0
MywxMCBAQAogICAgIH5QYWdlQ2xpZW50SW1wbCgpOwogCiAgICAgRXZhc19PYmplY3QqIHZpZXdX
aWRnZXQoKSBjb25zdCB7IHJldHVybiBtX3ZpZXdXaWRnZXQ7IH0KKyNpZiBVU0UoQ09PUkRJTkFU
RURfR1JBUEhJQ1MpCisgICAgdm9pZCBzZXRQYWdlVmlld3BvcnRDb250cm9sbGVyKFBhZ2VWaWV3
cG9ydENvbnRyb2xsZXIqIGNvbnRyb2xsZXIpIHsgbV9wYWdlVmlld3BvcnRDb250cm9sbGVyID0g
Y29udHJvbGxlcjsgfQorI2VuZGlmCiAKLQogcHJpdmF0ZToKICAgICBleHBsaWNpdCBQYWdlQ2xp
ZW50SW1wbChFdmFzX09iamVjdCopOwogCkBAIC0xMTQsOSArMTE4LDE3IEBACiAKICAgICB2aXJ0
dWFsIHZvaWQgZGlkQ2hhbmdlQ29udGVudHNTaXplKGNvbnN0IFdlYkNvcmU6OkludFNpemUmKTsK
IAorI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDUykKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVu
ZGVyRnJhbWUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgY29udGVudHNTaXplLCBjb25zdCBXZWJD
b3JlOjpJbnRSZWN0JiBjb3ZlcmVkUmVjdCk7CisgICAgdmlydHVhbCB2b2lkIHBhZ2VUcmFuc2l0
aW9uVmlld3BvcnRSZWFkeSgpOworI2VuZGlmCisKIHByaXZhdGU6CiAgICAgRXZhc19PYmplY3Qq
IG1fdmlld1dpZGdldDsKICAgICBEZWZhdWx0VW5kb0NvbnRyb2xsZXIgbV91bmRvQ29udHJvbGxl
cjsKKyNpZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCisgICAgUGFnZVZpZXdwb3J0Q29udHJv
bGxlciogbV9wYWdlVmlld3BvcnRDb250cm9sbGVyOworI2VuZGlmCiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJLaXQKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL1BhZ2VW
aWV3cG9ydENvbnRyb2xsZXJDbGllbnRFZmwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZWZsL1BhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnRFZmwuY3Bw
CShyZXZpc2lvbiAxMzIwODcpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9Q
YWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50RWZsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAs
NiArMzAsNyBAQAogCiAjaW5jbHVkZSAiTGF5ZXJUcmVlQ29vcmRpbmF0b3JQcm94eS5oIgogI2lu
Y2x1ZGUgIkxheWVyVHJlZVJlbmRlcmVyLmgiCisjaW5jbHVkZSAiUGFnZVZpZXdwb3J0Q29udHJv
bGxlci5oIgogI2luY2x1ZGUgIlRyYW5zZm9ybWF0aW9uTWF0cml4LmgiCiAjaW5jbHVkZSAiZXdr
X3ZpZXdfcHJpdmF0ZS5oIgogCkBAIC00MCw2ICs0MSw3IEBACiBQYWdlVmlld3BvcnRDb250cm9s
bGVyQ2xpZW50RWZsOjpQYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50RWZsKEV2YXNfT2JqZWN0
KiB2aWV3V2lkZ2V0KQogICAgIDogbV92aWV3V2lkZ2V0KHZpZXdXaWRnZXQpCiAgICAgLCBtX3Nj
YWxlRmFjdG9yKDEpCisgICAgLCBtX3BhZ2VWaWV3cG9ydENvbnRyb2xsZXIoMCkKIHsKICAgICBB
U1NFUlQobV92aWV3V2lkZ2V0KTsKIH0KQEAgLTYxLDcgKzYzLDcgQEAKIHZvaWQgUGFnZVZpZXdw
b3J0Q29udHJvbGxlckNsaWVudEVmbDo6ZGlzcGxheShjb25zdCBJbnRSZWN0JiByZWN0LCBjb25z
dCBJbnRQb2ludCYgdmlld1Bvc2l0aW9uKQogewogICAgIFdlYkNvcmU6OlRyYW5zZm9ybWF0aW9u
TWF0cml4IG1hdHJpeDsKLSAgICBtYXRyaXguc2V0TWF0cml4KG1fc2NhbGVGYWN0b3IsIDAsIDAs
IG1fc2NhbGVGYWN0b3IsIC1tX3Zpc2libGVDb250ZW50UmVjdC54KCkgKyB2aWV3UG9zaXRpb24u
eCgpLCAtbV92aXNpYmxlQ29udGVudFJlY3QueSgpICsgdmlld1Bvc2l0aW9uLnkoKSk7CisgICAg
bWF0cml4LnNldE1hdHJpeChtX3NjYWxlRmFjdG9yLCAwLCAwLCBtX3NjYWxlRmFjdG9yLCAtbV9z
Y3JvbGxQb3NpdGlvbi54KCkgKiBtX3NjYWxlRmFjdG9yICsgdmlld1Bvc2l0aW9uLngoKSAsIC1t
X3Njcm9sbFBvc2l0aW9uLnkoKSAqIG1fc2NhbGVGYWN0b3IgKyB2aWV3UG9zaXRpb24ueSgpKTsK
IAogICAgIExheWVyVHJlZVJlbmRlcmVyKiByZW5kZXJlciA9IGRyYXdpbmdBcmVhKCktPmxheWVy
VHJlZUNvb3JkaW5hdG9yUHJveHkoKS0+bGF5ZXJUcmVlUmVuZGVyZXIoKTsKICAgICByZW5kZXJl
ci0+c2V0QWN0aXZlKHRydWUpOwpAQCAtNzUsNTIgKzc3LDQ4IEBACiB7CiAgICAgbV92aWV3cG9y
dFNpemUgPSB2aWV3cG9ydFNpemU7CiAgICAgZXdrX3ZpZXdfcGFnZV9nZXQobV92aWV3V2lkZ2V0
KS0+c2V0Vmlld3BvcnRTaXplKHZpZXdwb3J0U2l6ZSk7Ci0gICAgc2V0VmlzaWJsZUNvbnRlbnRz
UmVjdChtX3Zpc2libGVDb250ZW50UmVjdC5sb2NhdGlvbigpLCBtX3NjYWxlRmFjdG9yLCBGbG9h
dFBvaW50KCkpOworICAgIG1fcGFnZVZpZXdwb3J0Q29udHJvbGxlci0+ZGlkQ2hhbmdlVmlld3Bv
cnRTaXplKHZpZXdwb3J0U2l6ZSk7CiB9CiAKLXZvaWQgUGFnZVZpZXdwb3J0Q29udHJvbGxlckNs
aWVudEVmbDo6c2V0VmlzaWJsZUNvbnRlbnRzUmVjdChjb25zdCBJbnRQb2ludCYgbmV3U2Nyb2xs
UG9zaXRpb24sIGZsb2F0IG5ld1NjYWxlLCBjb25zdCBGbG9hdFBvaW50JiB0cmFqZWN0b3J5KQor
dm9pZCBQYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50RWZsOjpzZXRWaXNpYmxlQ29udGVudHNS
ZWN0KGNvbnN0IEludFBvaW50JiBuZXdTY3JvbGxQb3NpdGlvbiwgZmxvYXQgbmV3U2NhbGUsIGNv
bnN0IEZsb2F0UG9pbnQmIC8qdHJhamVjdG9yeSovKQogewogICAgIG1fc2NhbGVGYWN0b3IgPSBu
ZXdTY2FsZTsKLSAgICBtX3Zpc2libGVDb250ZW50UmVjdCA9IEludFJlY3QobmV3U2Nyb2xsUG9z
aXRpb24sIG1fdmlld3BvcnRTaXplKTsKLQotICAgIC8vIE1vdmUgdmlzaWJsZUNvbnRlbnRSZWN0
IGluc2lkZSBjb250ZW50c1JlY3Qgd2hlbiB2aXNpYmxlQ29udGVudFJlY3QgZ29lcyBvdXRzaWRl
IGNvbnRlbnRzUmVjdC4gCi0gICAgSW50U2l6ZSBjb250ZW50c1NpemUgPSBtX2NvbnRlbnRzU2l6
ZTsKLSAgICBjb250ZW50c1NpemUuc2NhbGUobV9zY2FsZUZhY3Rvcik7Ci0gICAgaWYgKG1fdmlz
aWJsZUNvbnRlbnRSZWN0LngoKSA+IGNvbnRlbnRzU2l6ZS53aWR0aCgpIC0gbV92aXNpYmxlQ29u
dGVudFJlY3Qud2lkdGgoKSkKLSAgICAgICAgbV92aXNpYmxlQ29udGVudFJlY3Quc2V0WChjb250
ZW50c1NpemUud2lkdGgoKSAtIG1fdmlzaWJsZUNvbnRlbnRSZWN0LndpZHRoKCkpOwotICAgIGlm
IChtX3Zpc2libGVDb250ZW50UmVjdC54KCkgPCAwKQotICAgICAgICBtX3Zpc2libGVDb250ZW50
UmVjdC5zZXRYKDApOwotICAgIGlmIChtX3Zpc2libGVDb250ZW50UmVjdC55KCkgPiBjb250ZW50
c1NpemUuaGVpZ2h0KCkgLSBtX3Zpc2libGVDb250ZW50UmVjdC5oZWlnaHQoKSkKLSAgICAgICAg
bV92aXNpYmxlQ29udGVudFJlY3Quc2V0WShjb250ZW50c1NpemUuaGVpZ2h0KCkgLSBtX3Zpc2li
bGVDb250ZW50UmVjdC5oZWlnaHQoKSk7Ci0gICAgaWYgKG1fdmlzaWJsZUNvbnRlbnRSZWN0Lnko
KSA8IDApCi0gICAgICAgIG1fdmlzaWJsZUNvbnRlbnRSZWN0LnNldFkoMCk7Ci0KLSAgICBGbG9h
dFJlY3QgbWFwUmVjdFRvV2ViQ29udGVudCA9IG1fdmlzaWJsZUNvbnRlbnRSZWN0OwotICAgIG1h
cFJlY3RUb1dlYkNvbnRlbnQuc2NhbGUoMSAvIG1fc2NhbGVGYWN0b3IpOwotICAgIGRyYXdpbmdB
cmVhKCktPnNldFZpc2libGVDb250ZW50c1JlY3QoZW5jbG9zaW5nSW50UmVjdChtYXBSZWN0VG9X
ZWJDb250ZW50KSwgbV9zY2FsZUZhY3RvciwgdHJhamVjdG9yeSk7CisgICAgbV9zY3JvbGxQb3Np
dGlvbiA9IG5ld1Njcm9sbFBvc2l0aW9uOwogfQogCiB2b2lkIFBhZ2VWaWV3cG9ydENvbnRyb2xs
ZXJDbGllbnRFZmw6OmRpZENoYW5nZUNvbnRlbnRzU2l6ZShjb25zdCBXZWJDb3JlOjpJbnRTaXpl
JiBzaXplKQogewogICAgIG1fY29udGVudHNTaXplID0gc2l6ZTsKLSAgICBzZXRWaXNpYmxlQ29u
dGVudHNSZWN0KG1fdmlzaWJsZUNvbnRlbnRSZWN0LmxvY2F0aW9uKCksIG1fc2NhbGVGYWN0b3Is
IEZsb2F0UG9pbnQoKSk7CiAgICAgZHJhd2luZ0FyZWEoKS0+bGF5ZXJUcmVlQ29vcmRpbmF0b3JQ
cm94eSgpLT5zZXRDb250ZW50c1NpemUoV2ViQ29yZTo6RmxvYXRTaXplKHNpemUud2lkdGgoKSwg
c2l6ZS5oZWlnaHQoKSkpOworCisgICAgVmlld3BvcnRVcGRhdGVEZWZlcnJlciBkZWZlcnJlciht
X3BhZ2VWaWV3cG9ydENvbnRyb2xsZXIpOworICAgIEludFJlY3QgcmVjdCA9IEludFJlY3QoSW50
UG9pbnQoKSwgbV92aWV3cG9ydFNpemUpOworICAgIGV3a192aWV3X2Rpc3BsYXkobV92aWV3V2lk
Z2V0LCByZWN0KTsKIH0KIAotdm9pZCBQYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50RWZsOjpz
ZXRWaWV3cG9ydFBvc2l0aW9uKGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmIC8qY29udGVudHNQ
b2ludCovKQordm9pZCBQYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50RWZsOjpzZXRWaWV3cG9y
dFBvc2l0aW9uKGNvbnN0IFdlYkNvcmU6OkZsb2F0UG9pbnQmIGNvbnRlbnRzUG9pbnQpCiB7Cisg
ICAgc2V0VmlzaWJsZUNvbnRlbnRzUmVjdChJbnRQb2ludChjb250ZW50c1BvaW50LngoKSwgY29u
dGVudHNQb2ludC55KCkpLCBtX3NjYWxlRmFjdG9yLCBGbG9hdFBvaW50KCkpOworICAgIG1fcGFn
ZVZpZXdwb3J0Q29udHJvbGxlci0+ZGlkQ2hhbmdlQ29udGVudHNWaXNpYmlsaXR5KGNvbnRlbnRz
UG9pbnQsIG1fc2NhbGVGYWN0b3IsIEZsb2F0UG9pbnQoKSk7CiB9CiAKLXZvaWQgUGFnZVZpZXdw
b3J0Q29udHJvbGxlckNsaWVudEVmbDo6c2V0Q29udGVudHNTY2FsZShmbG9hdCwgYm9vbCAvKnRy
ZWF0QXNJbml0aWFsVmFsdWUqLykKK3ZvaWQgUGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudEVm
bDo6c2V0Q29udGVudHNTY2FsZShmbG9hdCBuZXdTY2FsZSwgYm9vbCB0cmVhdEFzSW5pdGlhbFZh
bHVlKQogeworICAgIGlmICh0cmVhdEFzSW5pdGlhbFZhbHVlKQorICAgICAgICBtX3Njcm9sbFBv
c2l0aW9uID0gSW50UG9pbnQoKTsKKyAgICBtX3NjYWxlRmFjdG9yID0gbmV3U2NhbGU7CisgICAg
ZHJhd2luZ0FyZWEoKS0+bGF5ZXJUcmVlQ29vcmRpbmF0b3JQcm94eSgpLT5zZXRDb250ZW50c1Np
emUoV2ViQ29yZTo6RmxvYXRTaXplKG1fY29udGVudHNTaXplLndpZHRoKCksIG1fY29udGVudHNT
aXplLmhlaWdodCgpKSk7CiB9CiAKIHZvaWQgUGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudEVm
bDo6ZGlkUmVzdW1lQ29udGVudCgpCiB7CisgICAgbV9wYWdlVmlld3BvcnRDb250cm9sbGVyLT5k
aWRDaGFuZ2VDb250ZW50c1Zpc2liaWxpdHkobV9zY3JvbGxQb3NpdGlvbiwgbV9zY2FsZUZhY3Rv
cik7CiB9CiAKIHZvaWQgUGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudEVmbDo6ZGlkQ2hhbmdl
VmlzaWJsZUNvbnRlbnRzKCkKIHsKKyAgICBJbnRSZWN0IHJlY3QgPSBJbnRSZWN0KEludFBvaW50
KCksIG1fdmlld3BvcnRTaXplKTsKKyAgICBld2tfdmlld19kaXNwbGF5KG1fdmlld1dpZGdldCwg
cmVjdCk7CiB9CiAKIHZvaWQgUGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudEVmbDo6ZGlkQ2hh
bmdlVmlld3BvcnRBdHRyaWJ1dGVzKCkKQEAgLTEyOSw2ICsxMjcsNyBAQAogCiB2b2lkIFBhZ2VW
aWV3cG9ydENvbnRyb2xsZXJDbGllbnRFZmw6OnNldENvbnRyb2xsZXIoUGFnZVZpZXdwb3J0Q29u
dHJvbGxlciogcGFnZVZpZXdwb3J0Q29udHJvbGxlcikKIHsKKyAgICBtX3BhZ2VWaWV3cG9ydENv
bnRyb2xsZXIgPSBwYWdlVmlld3BvcnRDb250cm9sbGVyOwogfQogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3X3By
aXZhdGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9l
d2tfdmlld19wcml2YXRlLmgJKHJldmlzaW9uIDEzMjA4NykKKysrIFNvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3X3ByaXZhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtNjks
NiArNjksOSBAQAogdm9pZCBld2tfdmlld19sb2FkX2ZpbmlzaGVkKEV2YXNfT2JqZWN0KiBld2tW
aWV3KTsKIHZvaWQgZXdrX3ZpZXdfbG9hZF9wcm9ncmVzc19jaGFuZ2VkKEV2YXNfT2JqZWN0KiBl
d2tWaWV3LCBkb3VibGUgcHJvZ3Jlc3MpOwogdm9pZCBld2tfdmlld19sb2FkX3Byb3Zpc2lvbmFs
X2ZhaWxlZChFdmFzX09iamVjdCogZXdrVmlldywgY29uc3QgRXdrX0Vycm9yKiBlcnJvcik7Cisj
aWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQordm9pZCBld2tfdmlld19sb2FkX2NvbW1pdHRl
ZChFdmFzX09iamVjdCogZXdrVmlldyk7CisjZW5kaWYKIHZvaWQgZXdrX3ZpZXdfbG9hZF9wcm92
aXNpb25hbF9yZWRpcmVjdChFdmFzX09iamVjdCogZXdrVmlldyk7CiB2b2lkIGV3a192aWV3X2xv
YWRfcHJvdmlzaW9uYWxfc3RhcnRlZChFdmFzX09iamVjdCogZXdrVmlldyk7CiB2b2lkIGV3a192
aWV3X25hdmlnYXRpb25fcG9saWN5X2RlY2lzaW9uKEV2YXNfT2JqZWN0KiBld2tWaWV3LCBFd2tf
TmF2aWdhdGlvbl9Qb2xpY3lfRGVjaXNpb24qIGRlY2lzaW9uKTsKSW5kZXg6IFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3X2xvYWRlcl9jbGllbnQuY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3X2xvYWRlcl9j
bGllbnQuY3BwCShyZXZpc2lvbiAxMzIwODcpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2VmbC9ld2tfdmlld19sb2FkZXJfY2xpZW50LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMTIx
LDYgKzEyMSwxNyBAQAogICAgIGV3a192aWV3X2xvYWRfcHJvdmlzaW9uYWxfZmFpbGVkKGV3a1Zp
ZXcsIGV3a0Vycm9yLmdldCgpKTsKIH0KIAorI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDUykK
K3N0YXRpYyB2b2lkIGRpZENvbW1pdExvYWRGb3JGcmFtZShXS1BhZ2VSZWYsIFdLRnJhbWVSZWYg
ZnJhbWUsIFdLVHlwZVJlZiB1c2VyRGF0YSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKK3sKKyAg
ICBpZiAoIVdLRnJhbWVJc01haW5GcmFtZShmcmFtZSkpCisgICAgICAgIHJldHVybjsKKworICAg
IEV2YXNfT2JqZWN0KiBld2tWaWV3ID0gc3RhdGljX2Nhc3Q8RXZhc19PYmplY3QqPihjb25zdF9j
YXN0PHZvaWQqPihjbGllbnRJbmZvKSk7CisgICAgZXdrX3ZpZXdfbG9hZF9jb21taXR0ZWQoZXdr
Vmlldyk7Cit9CisjZW5kaWYKKwogc3RhdGljIHZvaWQgZGlkQ2hhbmdlQmFja0ZvcndhcmRMaXN0
KFdLUGFnZVJlZiwgV0tCYWNrRm9yd2FyZExpc3RJdGVtUmVmIGFkZGVkSXRlbSwgV0tBcnJheVJl
ZiByZW1vdmVkSXRlbXMsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCiB7CiAgICAgRXZhc19PYmpl
Y3QqIGV3a1ZpZXcgPSBzdGF0aWNfY2FzdDxFdmFzX09iamVjdCo+KGNvbnN0X2Nhc3Q8dm9pZCo+
KGNsaWVudEluZm8pKTsKQEAgLTE2Myw2ICsxNzQsOSBAQAogICAgIGxvYWRDbGllbnQuZGlkU3Rh
cnRQcm92aXNpb25hbExvYWRGb3JGcmFtZSA9IGRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkRm9yRnJh
bWU7CiAgICAgbG9hZENsaWVudC5kaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25h
bExvYWRGb3JGcmFtZSA9IGRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9h
ZEZvckZyYW1lOwogICAgIGxvYWRDbGllbnQuZGlkRmFpbFByb3Zpc2lvbmFsTG9hZFdpdGhFcnJv
ckZvckZyYW1lID0gZGlkRmFpbFByb3Zpc2lvbmFsTG9hZFdpdGhFcnJvckZvckZyYW1lOworI2lm
IFVTRShDT09SRElOQVRFRF9HUkFQSElDUykKKyAgICBsb2FkQ2xpZW50LmRpZENvbW1pdExvYWRG
b3JGcmFtZSA9IGRpZENvbW1pdExvYWRGb3JGcmFtZTsKKyNlbmRpZgogICAgIGxvYWRDbGllbnQu
ZGlkQ2hhbmdlQmFja0ZvcndhcmRMaXN0ID0gZGlkQ2hhbmdlQmFja0ZvcndhcmRMaXN0OwogICAg
IGxvYWRDbGllbnQuZGlkU2FtZURvY3VtZW50TmF2aWdhdGlvbkZvckZyYW1lID0gZGlkU2FtZURv
Y3VtZW50TmF2aWdhdGlvbkZvckZyYW1lOwogICAgIFdLUGFnZVNldFBhZ2VMb2FkZXJDbGllbnQo
cGFnZVJlZiwgJmxvYWRDbGllbnQpOwpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2Vm
bC9XZWJQYWdlUHJveHlFZmwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9lZmwvV2ViUGFnZVByb3h5RWZsLmNwcAkocmV2aXNpb24gMTMyMDg3KQorKysgU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL2VmbC9XZWJQYWdlUHJveHlFZmwuY3BwCSh3b3JraW5nIGNvcHkp
CkBAIC05Myw0ICs5MywxNiBAQAogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKKyNpZiBVU0Uo
VElMRURfQkFDS0lOR19TVE9SRSkgCit2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkUmVuZGVyRnJhbWUo
Y29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgY29udGVudHNTaXplLCBjb25zdCBXZWJDb3JlOjpJbnRS
ZWN0JiBjb3ZlcmVkUmVjdCkKK3sKKyAgICBtX3BhZ2VDbGllbnQtPmRpZFJlbmRlckZyYW1lKGNv
bnRlbnRzU2l6ZSwgY292ZXJlZFJlY3QpOworfQorCit2b2lkIFdlYlBhZ2VQcm94eTo6cGFnZVRy
YW5zaXRpb25WaWV3cG9ydFJlYWR5KCkKK3sKKyAgICBtX3BhZ2VDbGllbnQtPnBhZ2VUcmFuc2l0
aW9uVmlld3BvcnRSZWFkeSgpOworfQorI2VuZGlmCisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApJ
bmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaAkocmV2aXNpb24gMTMy
MDg3KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCSh3b3JraW5n
IGNvcHkpCkBAIC0zNTUsOCArMzU1LDEwIEBACiAgICAgCiAgICAgYm9vbCBtYWludGFpbnNJbmFj
dGl2ZVNlbGVjdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fbWFpbnRhaW5zSW5hY3RpdmVTZWxlY3Rp
b247IH0KICAgICB2b2lkIHNldE1haW50YWluc0luYWN0aXZlU2VsZWN0aW9uKGJvb2wpOworI2lm
IFVTRShUSUxFRF9CQUNLSU5HX1NUT1JFKSAKKyAgICB2b2lkIGRpZFJlbmRlckZyYW1lKGNvbnN0
IFdlYkNvcmU6OkludFNpemUmIGNvbnRlbnRzU2l6ZSwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYg
Y292ZXJlZFJlY3QpOworI2VuZGlmCiAjaWYgUExBVEZPUk0oUVQpCi0gICAgdm9pZCBkaWRSZW5k
ZXJGcmFtZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBjb250ZW50c1NpemUsIGNvbnN0IFdlYkNv
cmU6OkludFJlY3QmIGNvdmVyZWRSZWN0KTsKICAgICB2b2lkIHJlZ2lzdGVyQXBwbGljYXRpb25T
Y2hlbWUoY29uc3QgU3RyaW5nJiBzY2hlbWUpOwogICAgIHZvaWQgcmVzb2x2ZUFwcGxpY2F0aW9u
U2NoZW1lUmVxdWVzdChRdE5ldHdvcmtSZXF1ZXN0RGF0YSk7CiAgICAgdm9pZCBzZW5kQXBwbGlj
YXRpb25TY2hlbWVSZXBseShjb25zdCBRUXVpY2tOZXR3b3JrUmVwbHkqKTsKQEAgLTg1NCw4ICs4
NTYsMTAgQEAKICAgICB2b2lkIHBhZ2VEaWRSZXF1ZXN0U2Nyb2xsKGNvbnN0IFdlYkNvcmU6Oklu
dFBvaW50Jik7CiAjZW5kaWYKIAorI2lmIFVTRShUSUxFRF9CQUNLSU5HX1NUT1JFKSAKKyAgICB2
b2lkIHBhZ2VUcmFuc2l0aW9uVmlld3BvcnRSZWFkeSgpOworI2VuZGlmCiAjaWYgUExBVEZPUk0o
UVQpCi0gICAgdm9pZCBwYWdlVHJhbnNpdGlvblZpZXdwb3J0UmVhZHkoKTsKICAgICB2b2lkIGRp
ZEZpbmRab29tYWJsZUFyZWEoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmLCBjb25zdCBXZWJDb3Jl
OjpJbnRSZWN0Jik7CiAjZW5kaWYKIApJbmRleDogU291cmNlL1dlYktpdDIvQ01ha2VMaXN0cy50
eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9u
IDEzMjA4NykKKysrIFNvdXJjZS9XZWJLaXQyL0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNvcHkp
CkBAIC0yMzcsNiArMjM3LDcgQEAKICAgICBVSVByb2Nlc3MvR2VvbG9jYXRpb25QZXJtaXNzaW9u
UmVxdWVzdE1hbmFnZXJQcm94eS5jcHAKICAgICBVSVByb2Nlc3MvR2VvbG9jYXRpb25QZXJtaXNz
aW9uUmVxdWVzdFByb3h5LmNwcAogCisgICAgVUlQcm9jZXNzL1BhZ2VWaWV3cG9ydENvbnRyb2xs
ZXIuY3BwCiAgICAgVUlQcm9jZXNzL1Jlc3BvbnNpdmVuZXNzVGltZXIuY3BwCiAgICAgVUlQcm9j
ZXNzL1Zpc2l0ZWRMaW5rUHJvdmlkZXIuY3BwCiAgICAgVUlQcm9jZXNzL1dlYkFwcGxpY2F0aW9u
Q2FjaGVNYW5hZ2VyUHJveHkuY3BwCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCShyZXZpc2lvbiAxMzIwODcpCisr
KyBTb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSw3MiBA
QAorMjAxMi0xMC0yMiAgWWFlbCBBaGFyb24gIDx5YWVsLmFoYXJvbkBpbnRlbC5jb20+CisKKyAg
ICAgICAgW0VGTF1bV0syXSBVc2UgdGhlIHBvcnQgaW5kZXBlbmRlbnQgUGFnZVZpZXdwb3J0Q29u
dHJvbGxlcgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
OTk4NTAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBU
YWtlIFBhZ2VWaWV3cG9ydENvbnRyb2xsZXIgaW50byB1c2UsIGFuZCByZWx5IG9uIGl0IHRvIGNh
bGN1bGF0ZQorICAgICAgICBzY3JvbGwgcG9zaXRpb24gYW5kIHpvb20gbGV2ZWwuCisgICAgICAg
IFdpdGggdGhpcyBwYXRjaCwgd2UgY2FuIGRvIGludHJhIHBhZ2UgbmF2aWdhdGlvbiBhbmQgdXNl
IHRoZSBzY3JvbGx3aGVlbAorICAgICAgICB0byBzY3JvbGwsIHdoZW4gV1RGX1VTRV9USUxFRF9C
QUNLSU5HX1NUT1JFIGFuZCBhbGwgcmVsYXRlZCBmbGFncyBhcmUgZW5hYmxlZC4KKworICAgICAg
ICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL1BhZ2VDbGll
bnRJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6OmRpZENoYW5nZVZp
ZXdwb3J0UHJvcGVydGllcyk6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpwYWdl
RGlkUmVxdWVzdFNjcm9sbCk6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpkaWRD
aGFuZ2VDb250ZW50c1NpemUpOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6
UGFnZUNsaWVudEltcGw6OmRpZFJlbmRlckZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6UGFnZUNs
aWVudEltcGw6OnBhZ2VUcmFuc2l0aW9uVmlld3BvcnRSZWFkeSk6CisgICAgICAgICogVUlQcm9j
ZXNzL0FQSS9lZmwvUGFnZUNsaWVudEltcGwuaDoKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAg
IChQYWdlQ2xpZW50SW1wbCk6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjpzZXRQ
YWdlVmlld3BvcnRDb250cm9sbGVyKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9QYWdl
Vmlld3BvcnRDb250cm9sbGVyQ2xpZW50RWZsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGFnZVZp
ZXdwb3J0Q29udHJvbGxlckNsaWVudEVmbDo6UGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudEVm
bCk6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnRFZmw6OmRp
c3BsYXkpOgorICAgICAgICAoV2ViS2l0OjpQYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50RWZs
Ojp1cGRhdGVWaWV3cG9ydFNpemUpOgorICAgICAgICAoV2ViS2l0OjpQYWdlVmlld3BvcnRDb250
cm9sbGVyQ2xpZW50RWZsOjpzZXRWaXNpYmxlQ29udGVudHNSZWN0KToKKyAgICAgICAgKFdlYktp
dDo6UGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudEVmbDo6ZGlkQ2hhbmdlQ29udGVudHNTaXpl
KToKKyAgICAgICAgKFdlYktpdDo6UGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudEVmbDo6c2V0
Vmlld3BvcnRQb3NpdGlvbik6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VWaWV3cG9ydENvbnRyb2xs
ZXJDbGllbnRFZmw6OnNldENvbnRlbnRzU2NhbGUpOgorICAgICAgICAoV2ViS2l0OjpQYWdlVmll
d3BvcnRDb250cm9sbGVyQ2xpZW50RWZsOjpkaWRSZXN1bWVDb250ZW50KToKKyAgICAgICAgKFdl
YktpdDo6UGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudEVmbDo6ZGlkQ2hhbmdlVmlzaWJsZUNv
bnRlbnRzKToKKyAgICAgICAgKFdlYktpdDo6UGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudEVm
bDo6c2V0Q29udHJvbGxlcik6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvUGFnZVZpZXdw
b3J0Q29udHJvbGxlckNsaWVudEVmbC5oOgorICAgICAgICAoV2ViS2l0OjpQYWdlVmlld3BvcnRD
b250cm9sbGVyQ2xpZW50RWZsOjpzY2FsZUZhY3Rvcik6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VW
aWV3cG9ydENvbnRyb2xsZXJDbGllbnRFZmw6OnNjcm9sbFBvc2l0aW9uKToKKyAgICAgICAgKFBh
Z2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnRFZmwpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
ZWZsL2V3a192aWV3LmNwcDoKKyAgICAgICAgKEV3a19WaWV3X1ByaXZhdGVfRGF0YSk6CisgICAg
ICAgIChhZGp1c3RlZFBvaW50Rm9yU2NhbGluZyk6CisgICAgICAgIChfZXdrX3ZpZXdfc21hcnRf
bW91c2Vfd2hlZWwpOgorICAgICAgICAoX2V3a192aWV3X3NtYXJ0X21vdXNlX2Rvd24pOgorICAg
ICAgICAoX2V3a192aWV3X3NtYXJ0X21vdXNlX3VwKToKKyAgICAgICAgKF9ld2tfdmlld19zbWFy
dF9tb3VzZV9tb3ZlKToKKyAgICAgICAgKF9ld2tfdmlld19pbml0aWFsaXplKToKKyAgICAgICAg
KGV3a192aWV3X2xvYWRfY29tbWl0dGVkKToKKyAgICAgICAgKGV3a192aWV3X2ZlZWRfdG91Y2hf
ZXZlbnQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3X2xvYWRlcl9jbGll
bnQuY3BwOgorICAgICAgICAoZGlkQ29tbWl0TG9hZEZvckZyYW1lKToKKyAgICAgICAgKGV3a192
aWV3X2xvYWRlcl9jbGllbnRfYXR0YWNoKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9l
d2tfdmlld19wcml2YXRlLmg6CisgICAgICAgICogVUlQcm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhp
Y3MvTGF5ZXJUcmVlQ29vcmRpbmF0b3JQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkxheWVy
VHJlZUNvb3JkaW5hdG9yUHJveHk6OmRpZFJlbmRlckZyYW1lKToKKyAgICAgICAgKiBVSVByb2Nl
c3MvUGFnZUNsaWVudC5oOgorICAgICAgICAoUGFnZUNsaWVudCk6CisgICAgICAgICogVUlQcm9j
ZXNzL1BhZ2VWaWV3cG9ydENvbnRyb2xsZXIuY3BwOgorICAgICAgICAqIFVJUHJvY2Vzcy9QYWdl
Vmlld3BvcnRDb250cm9sbGVyLmg6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5o
OgorICAgICAgICAoV2ViUGFnZVByb3h5KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFnZVBy
b3h5Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIFVJUHJvY2Vzcy9lZmwvV2ViUGFnZVByb3h5RWZs
LmNwcDoKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6
ZGlkUmVuZGVyRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnBhZ2VUcmFu
c2l0aW9uVmlld3BvcnRSZWFkeSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBh
Z2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpkaWRDb21wbGV0ZVBhZ2VUcmFuc2l0
aW9uKToKKwogMjAxMi0xMC0yMiAgQW5kZXJzIENhcmxzc29uICA8YW5kZXJzY2FAYXBwbGUuY29t
PgogCiAgICAgICAgIERvbid0IHVzZSBDU3RyaW5ncyBmb3IgbWVzc2FnZSByZWNlaXZlciBuYW1l
cyBhbmQgbWVzc2FnZSBuYW1lcwo=
</data>
<flag name="review"
          id="183391"
          type_id="1"
          status="-"
          setter="jturcotte"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>170164</attachid>
            <date>2012-10-23 07:45:11 -0700</date>
            <delta_ts>2012-10-23 08:15:57 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>99850.patch</filename>
            <type>text/plain</type>
            <size>29494</size>
            <attacher name="Yael">yael</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDEzMjIxMCkKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDc4IEBACisyMDEyLTEwLTIzICBZYWVsIEFo
YXJvbiAgPHlhZWwuYWhhcm9uQGludGVsLmNvbT4KKworICAgICAgICBbRUZMXVtXSzJdIFVzZSB0
aGUgcG9ydCBpbmRlcGVuZGVudCBQYWdlVmlld3BvcnRDb250cm9sbGVyCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05OTg1MAorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRha2UgUGFnZVZpZXdwb3J0Q29udHJv
bGxlciBpbnRvIHVzZSwgYW5kIHJlbHkgb24gaXQgdG8gY2FsY3VsYXRlCisgICAgICAgIHNjcm9s
bCBwb3NpdGlvbiBhbmQgem9vbSBsZXZlbC4KKyAgICAgICAgV2l0aCB0aGlzIHBhdGNoLCB3ZSBj
YW4gZG8gaW50cmEgcGFnZSBuYXZpZ2F0aW9uIGFuZCB1c2UgdGhlIHNjcm9sbHdoZWVsCisgICAg
ICAgIHRvIHNjcm9sbCwgd2hlbiBXVEZfVVNFX1RJTEVEX0JBQ0tJTkdfU1RPUkUgYW5kIGFsbCBy
ZWxhdGVkIGZsYWdzIGFyZSBlbmFibGVkLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6Cisg
ICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvUGFnZUNsaWVudEltcGwuY3BwOgorICAgICAgICAo
V2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6ZGlkQ2hhbmdlVmlld3BvcnRQcm9wZXJ0aWVzKToKKyAg
ICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6OnBhZ2VEaWRSZXF1ZXN0U2Nyb2xsKToKKyAg
ICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6OmRpZENoYW5nZUNvbnRlbnRzU2l6ZSk6Cisg
ICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6ZGlkUmVu
ZGVyRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6cGFnZVRyYW5zaXRp
b25WaWV3cG9ydFJlYWR5KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9QYWdlQ2xpZW50
SW1wbC5oOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFBhZ2VDbGllbnRJbXBsKToKKyAg
ICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6OnNldFBhZ2VWaWV3cG9ydENvbnRyb2xsZXIp
OgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL1BhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGll
bnRFZmwuY3BwOgorICAgICAgICAoV2ViS2l0OjpQYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50
RWZsOjpQYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50RWZsKToKKyAgICAgICAgKFdlYktpdDo6
UGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudEVmbDo6ZGlzcGxheSk6CisgICAgICAgIChXZWJL
aXQ6OlBhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnRFZmw6OnVwZGF0ZVZpZXdwb3J0U2l6ZSk6
CisgICAgICAgIChXZWJLaXQ6OlBhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnRFZmw6OnNldFZp
c2libGVDb250ZW50c1JlY3QpOgorICAgICAgICAoV2ViS2l0OjpQYWdlVmlld3BvcnRDb250cm9s
bGVyQ2xpZW50RWZsOjpkaWRDaGFuZ2VDb250ZW50c1NpemUpOgorICAgICAgICAoV2ViS2l0OjpQ
YWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50RWZsOjpzZXRWaWV3cG9ydFBvc2l0aW9uKToKKyAg
ICAgICAgKFdlYktpdDo6UGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudEVmbDo6c2V0Q29udGVu
dHNTY2FsZSk6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnRF
Zmw6OmRpZFJlc3VtZUNvbnRlbnQpOgorICAgICAgICAoV2ViS2l0OjpQYWdlVmlld3BvcnRDb250
cm9sbGVyQ2xpZW50RWZsOjpkaWRDaGFuZ2VWaXNpYmxlQ29udGVudHMpOgorICAgICAgICAoV2Vi
S2l0OjpQYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50RWZsOjpzZXRDb250cm9sbGVyKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9QYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50RWZs
Lmg6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnRFZmw6OnNj
YWxlRmFjdG9yKToKKyAgICAgICAgKFdlYktpdDo6UGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVu
dEVmbDo6c2Nyb2xsUG9zaXRpb24pOgorICAgICAgICAoUGFnZVZpZXdwb3J0Q29udHJvbGxlckNs
aWVudEVmbCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuY3BwOgorICAg
ICAgICAoRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKToKKyAgICAgICAgKG1hcFRvV2ViQ29udGVudCk6
CisgICAgICAgIChfZXdrX3ZpZXdfc21hcnRfbW91c2Vfd2hlZWwpOgorICAgICAgICAoX2V3a192
aWV3X3NtYXJ0X21vdXNlX2Rvd24pOgorICAgICAgICAoX2V3a192aWV3X3NtYXJ0X21vdXNlX3Vw
KToKKyAgICAgICAgKF9ld2tfdmlld19zbWFydF9tb3VzZV9tb3ZlKToKKyAgICAgICAgKF9ld2tf
dmlld19pbml0aWFsaXplKToKKyAgICAgICAgKGV3a192aWV3X2xvYWRfY29tbWl0dGVkKToKKyAg
ICAgICAgKGV3a192aWV3X2ZlZWRfdG91Y2hfZXZlbnQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9B
UEkvZWZsL2V3a192aWV3X3ByaXZhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29vcmRpbmF0
ZWRHcmFwaGljcy9MYXllclRyZWVDb29yZGluYXRvclByb3h5LmNwcDoKKyAgICAgICAgKFdlYktp
dDo6TGF5ZXJUcmVlQ29vcmRpbmF0b3JQcm94eTo6ZGlkUmVuZGVyRnJhbWUpOgorICAgICAgICAq
IFVJUHJvY2Vzcy9QYWdlQ2xpZW50Lmg6CisgICAgICAgIChQYWdlQ2xpZW50KToKKyAgICAgICAg
KiBVSVByb2Nlc3MvUGFnZVZpZXdwb3J0Q29udHJvbGxlci5jcHA6CisgICAgICAgICogVUlQcm9j
ZXNzL1BhZ2VWaWV3cG9ydENvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQ
cm94eTo6cGFnZVRyYW5zaXRpb25WaWV3cG9ydFJlYWR5KToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZVByb3h5OjpkaWRSZW5kZXJGcmFtZSk6CisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQ
cm94eS5oOgorICAgICAgICAoV2ViUGFnZVByb3h5KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2Vi
UGFnZVByb3h5Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIFVJUHJvY2Vzcy9lZmwvUGFnZUxvYWRD
bGllbnRFZmwuY3BwOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktpdDo6UGFnZUxv
YWRDbGllbnRFZmw6OmRpZENvbW1pdExvYWRGb3JGcmFtZSk6CisgICAgICAgIChXZWJLaXQ6OlBh
Z2VMb2FkQ2xpZW50RWZsOjpQYWdlTG9hZENsaWVudEVmbCk6CisgICAgICAgICogVUlQcm9jZXNz
L2VmbC9QYWdlTG9hZENsaWVudEVmbC5oOgorICAgICAgICAoUGFnZUxvYWRDbGllbnRFZmwpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9xdC9XZWJQYWdlUHJveHlRdC5jcHA6CisgICAgICAgIChXZWJL
aXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNldFVzZXJTY3JpcHRzKToKKyAg
ICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2U6OmRpZENvbXBsZXRlUGFnZVRyYW5zaXRpb24pOgorCiAyMDEyLTEwLTIzICBSeXVh
biBDaG9pICA8cnl1YW4uY2hvaUBzYW1zdW5nLmNvbT4KIAogICAgICAgICBbRUZMXVtXSzJdIEFk
ZCBzdXBwb3J0IGZvciBJTUYgY29tcG9zaXRpb24KSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1dlYlBy
b2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAJKHJldmlzaW9uIDEzMjIxMCkKKysrIFNvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAkod29ya2luZyBjb3B5KQpA
QCAtMTg1NCw3ICsxODU0LDcgQEAKIAogdm9pZCBXZWJQYWdlOjpkaWRDb21wbGV0ZVBhZ2VUcmFu
c2l0aW9uKCkKIHsKLSNpZiBQTEFURk9STShRVCkKKyNpZiBVU0UoVElMRURfQkFDS0lOR19TVE9S
RSkKICAgICBpZiAobV9tYWluRnJhbWUtPmNvcmVGcmFtZSgpLT52aWV3KCktPmRlbGVnYXRlc1Nj
cm9sbGluZygpKQogICAgICAgICAvLyBXYWl0IHVudGlsIHRoZSBVSSBwcm9jZXNzIHNlbnQgdXMg
dGhlIHZpc2libGUgcmVjdCBpdCB3YW50cyByZW5kZXJlZC4KICAgICAgICAgc2VuZChNZXNzYWdl
czo6V2ViUGFnZVByb3h5OjpQYWdlVHJhbnNpdGlvblZpZXdwb3J0UmVhZHkoKSk7CkluZGV4OiBT
b3VyY2UvV2ViS2l0Mi9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0
Mi9DTWFrZUxpc3RzLnR4dAkocmV2aXNpb24gMTMyMjEwKQorKysgU291cmNlL1dlYktpdDIvQ01h
a2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTIzNyw2ICsyMzcsNyBAQAogICAgIFVJUHJv
Y2Vzcy9HZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmNwcAogICAgIFVJ
UHJvY2Vzcy9HZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0UHJveHkuY3BwCiAKKyAgICBVSVBy
b2Nlc3MvUGFnZVZpZXdwb3J0Q29udHJvbGxlci5jcHAKICAgICBVSVByb2Nlc3MvUmVzcG9uc2l2
ZW5lc3NUaW1lci5jcHAKICAgICBVSVByb2Nlc3MvVmlzaXRlZExpbmtQcm92aWRlci5jcHAKICAg
ICBVSVByb2Nlc3MvV2ViQXBwbGljYXRpb25DYWNoZU1hbmFnZXJQcm94eS5jcHAKSW5kZXg6IFNv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QYWdlVmlld3BvcnRDb250cm9sbGVyLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BhZ2VWaWV3cG9ydENvbnRyb2xsZXIuaAko
cmV2aXNpb24gMTMyMjEwKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BhZ2VWaWV3cG9y
dENvbnRyb2xsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMjIsNiArMjIsOCBAQAogI2lmbmRlZiBQ
YWdlVmlld3BvcnRDb250cm9sbGVyX2gKICNkZWZpbmUgUGFnZVZpZXdwb3J0Q29udHJvbGxlcl9o
CiAKKyNpZiBVU0UoVElMRURfQkFDS0lOR19TVE9SRSkKKwogI2luY2x1ZGUgPFdlYkNvcmUvRmxv
YXRQb2ludC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvRmxvYXRSZWN0Lmg+CiAjaW5jbHVkZSA8V2Vi
Q29yZS9GbG9hdFNpemUuaD4KQEAgLTE0MCw0ICsxNDIsNiBAQAogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJLaXQKIAorI2VuZGlmCisKICNlbmRpZiAvLyBQYWdlVmlld3BvcnRDb250cm9sbGVyX2gKSW5k
ZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaAkocmV2aXNpb24gMTMyMjEwKQor
KysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaAkod29ya2luZyBjb3B5KQpA
QCAtMTE2LDEwICsxMTYsMTAgQEAKIAogI2lmIFVTRShUSUxFRF9CQUNLSU5HX1NUT1JFKQogICAg
IHZpcnR1YWwgdm9pZCBwYWdlRGlkUmVxdWVzdFNjcm9sbChjb25zdCBXZWJDb3JlOjpJbnRQb2lu
dCYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVuZGVyRnJhbWUoY29uc3QgV2ViQ29yZTo6
SW50U2l6ZSYgY29udGVudHNTaXplLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBjb3ZlcmVkUmVj
dCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCBwYWdlVHJhbnNpdGlvblZpZXdwb3J0UmVhZHkoKSA9
IDA7CiAjZW5kaWYKICNpZiBQTEFURk9STShRVCkKLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVuZGVy
RnJhbWUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgY29udGVudHNTaXplLCBjb25zdCBXZWJDb3Jl
OjpJbnRSZWN0JiBjb3ZlcmVkUmVjdCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBwYWdlVHJhbnNp
dGlvblZpZXdwb3J0UmVhZHkoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZEZpbmRab29tYWJs
ZUFyZWEoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0Jikg
PSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlTWVzc2FnZUZyb21OYXZpZ2F0b3JRdE9i
amVjdChjb25zdCBTdHJpbmcmKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGhhbmRsZUF1dGhlbnRp
Y2F0aW9uUmVxdWlyZWRSZXF1ZXN0KGNvbnN0IFN0cmluZyYgaG9zdG5hbWUsIGNvbnN0IFN0cmlu
ZyYgcmVhbG0sIGNvbnN0IFN0cmluZyYgcHJlZmlsbGVkVXNlcm5hbWUsIFN0cmluZyYgdXNlcm5h
bWUsIFN0cmluZyYgcGFzc3dvcmQpID0gMDsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZWZsL1BhZ2VDbGllbnRJbXBsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9lZmwvUGFnZUNsaWVudEltcGwuaAkocmV2aXNpb24gMTMyMjEwKQorKysg
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvUGFnZUNsaWVudEltcGwuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMzIsNiArMzIsOCBAQAogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAorY2xhc3Mg
UGFnZVZpZXdwb3J0Q29udHJvbGxlcjsKKwogY2xhc3MgUGFnZUNsaWVudEltcGwgOiBwdWJsaWMg
UGFnZUNsaWVudCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NPd25QdHI8UGFnZUNsaWVudElt
cGw+IGNyZWF0ZShFdmFzX09iamVjdCogdmlld1dpZGdldCkKQEAgLTQxLDggKzQzLDEwIEBACiAg
ICAgflBhZ2VDbGllbnRJbXBsKCk7CiAKICAgICBFdmFzX09iamVjdCogdmlld1dpZGdldCgpIGNv
bnN0IHsgcmV0dXJuIG1fdmlld1dpZGdldDsgfQorI2lmIFVTRShUSUxFRF9CQUNLSU5HX1NUT1JF
KQorICAgIHZvaWQgc2V0UGFnZVZpZXdwb3J0Q29udHJvbGxlcihQYWdlVmlld3BvcnRDb250cm9s
bGVyKiBjb250cm9sbGVyKSB7IG1fcGFnZVZpZXdwb3J0Q29udHJvbGxlciA9IGNvbnRyb2xsZXI7
IH0KKyNlbmRpZgogCi0KIHByaXZhdGU6CiAgICAgZXhwbGljaXQgUGFnZUNsaWVudEltcGwoRXZh
c19PYmplY3QqKTsKIApAQCAtMTE1LDkgKzExOSwxNyBAQAogCiAgICAgdmlydHVhbCB2b2lkIGRp
ZENoYW5nZUNvbnRlbnRzU2l6ZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJik7CiAKKyNpZiBVU0Uo
VElMRURfQkFDS0lOR19TVE9SRSkKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVuZGVyRnJhbWUoY29u
c3QgV2ViQ29yZTo6SW50U2l6ZSYgY29udGVudHNTaXplLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0
JiBjb3ZlcmVkUmVjdCk7CisgICAgdmlydHVhbCB2b2lkIHBhZ2VUcmFuc2l0aW9uVmlld3BvcnRS
ZWFkeSgpOworI2VuZGlmCisKIHByaXZhdGU6CiAgICAgRXZhc19PYmplY3QqIG1fdmlld1dpZGdl
dDsKICAgICBEZWZhdWx0VW5kb0NvbnRyb2xsZXIgbV91bmRvQ29udHJvbGxlcjsKKyNpZiBVU0Uo
VElMRURfQkFDS0lOR19TVE9SRSkKKyAgICBQYWdlVmlld3BvcnRDb250cm9sbGVyKiBtX3BhZ2VW
aWV3cG9ydENvbnRyb2xsZXI7CisjZW5kaWYKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApJ
bmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXdfcHJpdmF0ZS5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3
X3ByaXZhdGUuaAkocmV2aXNpb24gMTMyMjEwKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9lZmwvZXdrX3ZpZXdfcHJpdmF0ZS5oCSh3b3JraW5nIGNvcHkpCkBAIC02OSw2ICs2OSw5
IEBACiB2b2lkIGV3a192aWV3X2xvYWRfZmluaXNoZWQoRXZhc19PYmplY3QqIGV3a1ZpZXcpOwog
dm9pZCBld2tfdmlld19sb2FkX3Byb2dyZXNzX2NoYW5nZWQoRXZhc19PYmplY3QqIGV3a1ZpZXcs
IGRvdWJsZSBwcm9ncmVzcyk7CiB2b2lkIGV3a192aWV3X2xvYWRfcHJvdmlzaW9uYWxfZmFpbGVk
KEV2YXNfT2JqZWN0KiBld2tWaWV3LCBjb25zdCBFd2tfRXJyb3IqIGVycm9yKTsKKyNpZiBVU0Uo
VElMRURfQkFDS0lOR19TVE9SRSkKK3ZvaWQgZXdrX3ZpZXdfbG9hZF9jb21taXR0ZWQoRXZhc19P
YmplY3QqIGV3a1ZpZXcpOworI2VuZGlmCiB2b2lkIGV3a192aWV3X2xvYWRfcHJvdmlzaW9uYWxf
cmVkaXJlY3QoRXZhc19PYmplY3QqIGV3a1ZpZXcpOwogdm9pZCBld2tfdmlld19sb2FkX3Byb3Zp
c2lvbmFsX3N0YXJ0ZWQoRXZhc19PYmplY3QqIGV3a1ZpZXcpOwogdm9pZCBld2tfdmlld19uYXZp
Z2F0aW9uX3BvbGljeV9kZWNpc2lvbihFdmFzX09iamVjdCogZXdrVmlldywgRXdrX05hdmlnYXRp
b25fUG9saWN5X0RlY2lzaW9uKiBkZWNpc2lvbik7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2VmbC9QYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50RWZsLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvUGFnZVZpZXdwb3J0Q29udHJv
bGxlckNsaWVudEVmbC5oCShyZXZpc2lvbiAxMzIyMTApCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2VmbC9QYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50RWZsLmgJKHdvcmtpbmcg
Y29weSkKQEAgLTI2LDcgKzI2LDcgQEAKICNpZm5kZWYgUGFnZVZpZXdwb3J0Q29udHJvbGxlckNs
aWVudEVmbF9oCiAjZGVmaW5lIFBhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnRFZmxfaAogCi0j
aWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQorI2lmIFVTRShUSUxFRF9CQUNLSU5HX1NUT1JF
KQogCiAjaW5jbHVkZSAiUGFnZUNsaWVudEltcGwuaCIKICNpbmNsdWRlICJQYWdlVmlld3BvcnRD
b250cm9sbGVyQ2xpZW50LmgiCkBAIC00NCw2ICs0NCw4IEBACiAKICAgICBEcmF3aW5nQXJlYVBy
b3h5KiBkcmF3aW5nQXJlYSgpIGNvbnN0OwogICAgIFdlYkNvcmU6OkludFNpemUgdmlld1NpemUo
KSB7IHJldHVybiBtX3ZpZXdwb3J0U2l6ZTsgfQorICAgIGZsb2F0IHNjYWxlRmFjdG9yKCkgY29u
c3QgeyByZXR1cm4gbV9zY2FsZUZhY3RvcjsgfQorICAgIFdlYkNvcmU6OkludFBvaW50IHNjcm9s
bFBvc2l0aW9uKCkgeyByZXR1cm4gbV9zY3JvbGxQb3NpdGlvbjsgfQogCiAgICAgdm9pZCBkaXNw
bGF5KGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIHJlY3QsIGNvbnN0IFdlYkNvcmU6OkludFBvaW50
JiB2aWV3UG9zaXRpb24pOwogICAgIHZvaWQgdXBkYXRlVmlld3BvcnRTaXplKGNvbnN0IFdlYkNv
cmU6OkludFNpemUmIHZpZXdwb3J0U2l6ZSk7CkBAIC02NCwxMCArNjYsMTEgQEAKICAgICBleHBs
aWNpdCBQYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50RWZsKEV2YXNfT2JqZWN0Kik7CiAKICAg
ICBFdmFzX09iamVjdCogbV92aWV3V2lkZ2V0OwotICAgIFdlYkNvcmU6OkludFJlY3QgbV92aXNp
YmxlQ29udGVudFJlY3Q7CiAgICAgV2ViQ29yZTo6SW50U2l6ZSBtX2NvbnRlbnRzU2l6ZTsKICAg
ICBXZWJDb3JlOjpJbnRTaXplIG1fdmlld3BvcnRTaXplOworICAgIFdlYkNvcmU6OkludFBvaW50
IG1fc2Nyb2xsUG9zaXRpb247CiAgICAgZmxvYXQgbV9zY2FsZUZhY3RvcjsKKyAgICBQYWdlVmll
d3BvcnRDb250cm9sbGVyKiBtX3BhZ2VWaWV3cG9ydENvbnRyb2xsZXI7CiB9OwogCiB9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL1Bh
Z2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnRFZmwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL1BhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnRFZmwu
Y3BwCShyZXZpc2lvbiAxMzIyMTApCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2Vm
bC9QYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50RWZsLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
MjYsMTAgKzI2LDExIEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiUGFnZVZpZXdw
b3J0Q29udHJvbGxlckNsaWVudEVmbC5oIgogCi0jaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNT
KQorI2lmIFVTRShUSUxFRF9CQUNLSU5HX1NUT1JFKQogCiAjaW5jbHVkZSAiTGF5ZXJUcmVlQ29v
cmRpbmF0b3JQcm94eS5oIgogI2luY2x1ZGUgIkxheWVyVHJlZVJlbmRlcmVyLmgiCisjaW5jbHVk
ZSAiUGFnZVZpZXdwb3J0Q29udHJvbGxlci5oIgogI2luY2x1ZGUgIlRyYW5zZm9ybWF0aW9uTWF0
cml4LmgiCiAjaW5jbHVkZSAiZXdrX3ZpZXdfcHJpdmF0ZS5oIgogCkBAIC00MCw2ICs0MSw3IEBA
CiBQYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50RWZsOjpQYWdlVmlld3BvcnRDb250cm9sbGVy
Q2xpZW50RWZsKEV2YXNfT2JqZWN0KiB2aWV3V2lkZ2V0KQogICAgIDogbV92aWV3V2lkZ2V0KHZp
ZXdXaWRnZXQpCiAgICAgLCBtX3NjYWxlRmFjdG9yKDEpCisgICAgLCBtX3BhZ2VWaWV3cG9ydENv
bnRyb2xsZXIoMCkKIHsKICAgICBBU1NFUlQobV92aWV3V2lkZ2V0KTsKIH0KQEAgLTYxLDcgKzYz
LDcgQEAKIHZvaWQgUGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudEVmbDo6ZGlzcGxheShjb25z
dCBJbnRSZWN0JiByZWN0LCBjb25zdCBJbnRQb2ludCYgdmlld1Bvc2l0aW9uKQogewogICAgIFdl
YkNvcmU6OlRyYW5zZm9ybWF0aW9uTWF0cml4IG1hdHJpeDsKLSAgICBtYXRyaXguc2V0TWF0cml4
KG1fc2NhbGVGYWN0b3IsIDAsIDAsIG1fc2NhbGVGYWN0b3IsIC1tX3Zpc2libGVDb250ZW50UmVj
dC54KCkgKyB2aWV3UG9zaXRpb24ueCgpLCAtbV92aXNpYmxlQ29udGVudFJlY3QueSgpICsgdmll
d1Bvc2l0aW9uLnkoKSk7CisgICAgbWF0cml4LnNldE1hdHJpeChtX3NjYWxlRmFjdG9yLCAwLCAw
LCBtX3NjYWxlRmFjdG9yLCAtbV9zY3JvbGxQb3NpdGlvbi54KCkgKiBtX3NjYWxlRmFjdG9yICsg
dmlld1Bvc2l0aW9uLngoKSAsIC1tX3Njcm9sbFBvc2l0aW9uLnkoKSAqIG1fc2NhbGVGYWN0b3Ig
KyB2aWV3UG9zaXRpb24ueSgpKTsKIAogICAgIExheWVyVHJlZVJlbmRlcmVyKiByZW5kZXJlciA9
IGRyYXdpbmdBcmVhKCktPmxheWVyVHJlZUNvb3JkaW5hdG9yUHJveHkoKS0+bGF5ZXJUcmVlUmVu
ZGVyZXIoKTsKICAgICByZW5kZXJlci0+c2V0QWN0aXZlKHRydWUpOwpAQCAtNzUsNTIgKzc3LDQ0
IEBACiB7CiAgICAgbV92aWV3cG9ydFNpemUgPSB2aWV3cG9ydFNpemU7CiAgICAgZXdrX3ZpZXdf
cGFnZV9nZXQobV92aWV3V2lkZ2V0KS0+c2V0Vmlld3BvcnRTaXplKHZpZXdwb3J0U2l6ZSk7Ci0g
ICAgc2V0VmlzaWJsZUNvbnRlbnRzUmVjdChtX3Zpc2libGVDb250ZW50UmVjdC5sb2NhdGlvbigp
LCBtX3NjYWxlRmFjdG9yLCBGbG9hdFBvaW50KCkpOworICAgIG1fcGFnZVZpZXdwb3J0Q29udHJv
bGxlci0+ZGlkQ2hhbmdlVmlld3BvcnRTaXplKHZpZXdwb3J0U2l6ZSk7CiB9CiAKLXZvaWQgUGFn
ZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudEVmbDo6c2V0VmlzaWJsZUNvbnRlbnRzUmVjdChjb25z
dCBJbnRQb2ludCYgbmV3U2Nyb2xsUG9zaXRpb24sIGZsb2F0IG5ld1NjYWxlLCBjb25zdCBGbG9h
dFBvaW50JiB0cmFqZWN0b3J5KQordm9pZCBQYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50RWZs
OjpzZXRWaXNpYmxlQ29udGVudHNSZWN0KGNvbnN0IEludFBvaW50JiBuZXdTY3JvbGxQb3NpdGlv
biwgZmxvYXQgbmV3U2NhbGUsIGNvbnN0IEZsb2F0UG9pbnQmIC8qdHJhamVjdG9yeSovKQogewog
ICAgIG1fc2NhbGVGYWN0b3IgPSBuZXdTY2FsZTsKLSAgICBtX3Zpc2libGVDb250ZW50UmVjdCA9
IEludFJlY3QobmV3U2Nyb2xsUG9zaXRpb24sIG1fdmlld3BvcnRTaXplKTsKLQotICAgIC8vIE1v
dmUgdmlzaWJsZUNvbnRlbnRSZWN0IGluc2lkZSBjb250ZW50c1JlY3Qgd2hlbiB2aXNpYmxlQ29u
dGVudFJlY3QgZ29lcyBvdXRzaWRlIGNvbnRlbnRzUmVjdC4gCi0gICAgSW50U2l6ZSBjb250ZW50
c1NpemUgPSBtX2NvbnRlbnRzU2l6ZTsKLSAgICBjb250ZW50c1NpemUuc2NhbGUobV9zY2FsZUZh
Y3Rvcik7Ci0gICAgaWYgKG1fdmlzaWJsZUNvbnRlbnRSZWN0LngoKSA+IGNvbnRlbnRzU2l6ZS53
aWR0aCgpIC0gbV92aXNpYmxlQ29udGVudFJlY3Qud2lkdGgoKSkKLSAgICAgICAgbV92aXNpYmxl
Q29udGVudFJlY3Quc2V0WChjb250ZW50c1NpemUud2lkdGgoKSAtIG1fdmlzaWJsZUNvbnRlbnRS
ZWN0LndpZHRoKCkpOwotICAgIGlmIChtX3Zpc2libGVDb250ZW50UmVjdC54KCkgPCAwKQotICAg
ICAgICBtX3Zpc2libGVDb250ZW50UmVjdC5zZXRYKDApOwotICAgIGlmIChtX3Zpc2libGVDb250
ZW50UmVjdC55KCkgPiBjb250ZW50c1NpemUuaGVpZ2h0KCkgLSBtX3Zpc2libGVDb250ZW50UmVj
dC5oZWlnaHQoKSkKLSAgICAgICAgbV92aXNpYmxlQ29udGVudFJlY3Quc2V0WShjb250ZW50c1Np
emUuaGVpZ2h0KCkgLSBtX3Zpc2libGVDb250ZW50UmVjdC5oZWlnaHQoKSk7Ci0gICAgaWYgKG1f
dmlzaWJsZUNvbnRlbnRSZWN0LnkoKSA8IDApCi0gICAgICAgIG1fdmlzaWJsZUNvbnRlbnRSZWN0
LnNldFkoMCk7Ci0KLSAgICBGbG9hdFJlY3QgbWFwUmVjdFRvV2ViQ29udGVudCA9IG1fdmlzaWJs
ZUNvbnRlbnRSZWN0OwotICAgIG1hcFJlY3RUb1dlYkNvbnRlbnQuc2NhbGUoMSAvIG1fc2NhbGVG
YWN0b3IpOwotICAgIGRyYXdpbmdBcmVhKCktPnNldFZpc2libGVDb250ZW50c1JlY3QoZW5jbG9z
aW5nSW50UmVjdChtYXBSZWN0VG9XZWJDb250ZW50KSwgbV9zY2FsZUZhY3RvciwgdHJhamVjdG9y
eSk7CisgICAgbV9zY3JvbGxQb3NpdGlvbiA9IG5ld1Njcm9sbFBvc2l0aW9uOworICAgIG1fcGFn
ZVZpZXdwb3J0Q29udHJvbGxlci0+ZGlkQ2hhbmdlQ29udGVudHNWaXNpYmlsaXR5KG1fc2Nyb2xs
UG9zaXRpb24sIG1fc2NhbGVGYWN0b3IsIEZsb2F0UG9pbnQoKSk7CiB9CiAKIHZvaWQgUGFnZVZp
ZXdwb3J0Q29udHJvbGxlckNsaWVudEVmbDo6ZGlkQ2hhbmdlQ29udGVudHNTaXplKGNvbnN0IFdl
YkNvcmU6OkludFNpemUmIHNpemUpCiB7CiAgICAgbV9jb250ZW50c1NpemUgPSBzaXplOwotICAg
IHNldFZpc2libGVDb250ZW50c1JlY3QobV92aXNpYmxlQ29udGVudFJlY3QubG9jYXRpb24oKSwg
bV9zY2FsZUZhY3RvciwgRmxvYXRQb2ludCgpKTsKLSAgICBkcmF3aW5nQXJlYSgpLT5sYXllclRy
ZWVDb29yZGluYXRvclByb3h5KCktPnNldENvbnRlbnRzU2l6ZShXZWJDb3JlOjpGbG9hdFNpemUo
c2l6ZS53aWR0aCgpLCBzaXplLmhlaWdodCgpKSk7CisgICAgSW50UmVjdCByZWN0ID0gSW50UmVj
dChJbnRQb2ludCgpLCBtX3ZpZXdwb3J0U2l6ZSk7CisgICAgZXdrX3ZpZXdfZGlzcGxheShtX3Zp
ZXdXaWRnZXQsIHJlY3QpOwogfQogCi12b2lkIFBhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnRF
Zmw6OnNldFZpZXdwb3J0UG9zaXRpb24oY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYgLypjb250
ZW50c1BvaW50Ki8pCit2b2lkIFBhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnRFZmw6OnNldFZp
ZXdwb3J0UG9zaXRpb24oY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYgY29udGVudHNQb2ludCkK
IHsKKyAgICBzZXRWaXNpYmxlQ29udGVudHNSZWN0KEludFBvaW50KGNvbnRlbnRzUG9pbnQueCgp
LCBjb250ZW50c1BvaW50LnkoKSksIG1fc2NhbGVGYWN0b3IsIEZsb2F0UG9pbnQoKSk7CiB9CiAK
LXZvaWQgUGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudEVmbDo6c2V0Q29udGVudHNTY2FsZShm
bG9hdCwgYm9vbCAvKnRyZWF0QXNJbml0aWFsVmFsdWUqLykKK3ZvaWQgUGFnZVZpZXdwb3J0Q29u
dHJvbGxlckNsaWVudEVmbDo6c2V0Q29udGVudHNTY2FsZShmbG9hdCBuZXdTY2FsZSwgYm9vbCB0
cmVhdEFzSW5pdGlhbFZhbHVlKQogeworICAgIGlmICh0cmVhdEFzSW5pdGlhbFZhbHVlKQorICAg
ICAgICBtX3Njcm9sbFBvc2l0aW9uID0gSW50UG9pbnQoKTsKKyAgICBtX3NjYWxlRmFjdG9yID0g
bmV3U2NhbGU7CiB9CiAKIHZvaWQgUGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudEVmbDo6ZGlk
UmVzdW1lQ29udGVudCgpCiB7CisgICAgbV9wYWdlVmlld3BvcnRDb250cm9sbGVyLT5kaWRDaGFu
Z2VDb250ZW50c1Zpc2liaWxpdHkobV9zY3JvbGxQb3NpdGlvbiwgbV9zY2FsZUZhY3Rvcik7CiB9
CiAKIHZvaWQgUGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudEVmbDo6ZGlkQ2hhbmdlVmlzaWJs
ZUNvbnRlbnRzKCkKIHsKKyAgICBJbnRSZWN0IHJlY3QgPSBJbnRSZWN0KEludFBvaW50KCksIG1f
dmlld3BvcnRTaXplKTsKKyAgICBld2tfdmlld19kaXNwbGF5KG1fdmlld1dpZGdldCwgcmVjdCk7
CiB9CiAKIHZvaWQgUGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudEVmbDo6ZGlkQ2hhbmdlVmll
d3BvcnRBdHRyaWJ1dGVzKCkKQEAgLTEyOSw4ICsxMjMsOSBAQAogCiB2b2lkIFBhZ2VWaWV3cG9y
dENvbnRyb2xsZXJDbGllbnRFZmw6OnNldENvbnRyb2xsZXIoUGFnZVZpZXdwb3J0Q29udHJvbGxl
ciogcGFnZVZpZXdwb3J0Q29udHJvbGxlcikKIHsKKyAgICBtX3BhZ2VWaWV3cG9ydENvbnRyb2xs
ZXIgPSBwYWdlVmlld3BvcnRDb250cm9sbGVyOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
LSNlbmRpZiAvLyBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCisjZW5kaWYgLy8gVVNFKFRJTEVE
X0JBQ0tJTkdfU1RPUkUpCiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZs
L1BhZ2VDbGllbnRJbXBsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2VmbC9QYWdlQ2xpZW50SW1wbC5jcHAJKHJldmlzaW9uIDEzMjIxMCkKKysrIFNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL1BhZ2VDbGllbnRJbXBsLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtNDIsNiArNDIsMTAgQEAKICNpbmNsdWRlICJld2tfdmlldy5oIgogI2luY2x1ZGUg
ImV3a192aWV3X3ByaXZhdGUuaCIKIAorI2lmIFVTRShUSUxFRF9CQUNLSU5HX1NUT1JFKQorI2lu
Y2x1ZGUgIlBhZ2VWaWV3cG9ydENvbnRyb2xsZXIuaCIKKyNlbmRpZgorCiB1c2luZyBuYW1lc3Bh
Y2UgV2ViQ29yZTsKIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC0xMzgsOSArMTQyLDEzIEBACiAg
ICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAotdm9pZCBQYWdlQ2xpZW50SW1wbDo6ZGlkQ2hhbmdl
Vmlld3BvcnRQcm9wZXJ0aWVzKGNvbnN0IFdlYkNvcmU6OlZpZXdwb3J0QXR0cmlidXRlcyYpCit2
b2lkIFBhZ2VDbGllbnRJbXBsOjpkaWRDaGFuZ2VWaWV3cG9ydFByb3BlcnRpZXMoY29uc3QgV2Vi
Q29yZTo6Vmlld3BvcnRBdHRyaWJ1dGVzJiBhdHRyKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7
CisjaWYgVVNFKFRJTEVEX0JBQ0tJTkdfU1RPUkUpCisgICAgbV9wYWdlVmlld3BvcnRDb250cm9s
bGVyLT5kaWRDaGFuZ2VWaWV3cG9ydEF0dHJpYnV0ZXMoYXR0cik7CisjZWxzZQorICAgIFVOVVNF
RF9QQVJBTShhdHRyKTsKKyNlbmRpZgogfQogCiB2b2lkIFBhZ2VDbGllbnRJbXBsOjpyZWdpc3Rl
ckVkaXRDb21tYW5kKFBhc3NSZWZQdHI8V2ViRWRpdENvbW1hbmRQcm94eT4gY29tbWFuZCwgV2Vi
UGFnZVByb3h5OjpVbmRvT3JSZWRvIHVuZG9PclJlZG8pCkBAIC0yOTMsMTUgKzMwMSwzMSBAQAog
fQogCiAjaWYgVVNFKFRJTEVEX0JBQ0tJTkdfU1RPUkUpCi12b2lkIFBhZ2VDbGllbnRJbXBsOjpw
YWdlRGlkUmVxdWVzdFNjcm9sbChjb25zdCBJbnRQb2ludCYpCit2b2lkIFBhZ2VDbGllbnRJbXBs
OjpwYWdlRGlkUmVxdWVzdFNjcm9sbChjb25zdCBJbnRQb2ludCYgcG9zaXRpb24pCiB7Ci0gICAg
bm90SW1wbGVtZW50ZWQoKTsKKyAgICBtX3BhZ2VWaWV3cG9ydENvbnRyb2xsZXItPnBhZ2VEaWRS
ZXF1ZXN0U2Nyb2xsKHBvc2l0aW9uKTsKIH0KICNlbmRpZgogCiB2b2lkIFBhZ2VDbGllbnRJbXBs
OjpkaWRDaGFuZ2VDb250ZW50c1NpemUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgc2l6ZSkKIHsK
KyNpZiBVU0UoVElMRURfQkFDS0lOR19TVE9SRSkKKyAgICBtX3BhZ2VWaWV3cG9ydENvbnRyb2xs
ZXItPmRpZENoYW5nZUNvbnRlbnRzU2l6ZShzaXplKTsKKyNlbHNlCiAgICAgZXdrX3ZpZXdfY29u
dGVudHNfc2l6ZV9jaGFuZ2VkKG1fdmlld1dpZGdldCwgc2l6ZSk7CisjZW5kaWYKIH0KIAorI2lm
IFVTRShUSUxFRF9CQUNLSU5HX1NUT1JFKQordm9pZCBQYWdlQ2xpZW50SW1wbDo6ZGlkUmVuZGVy
RnJhbWUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgY29udGVudHNTaXplLCBjb25zdCBXZWJDb3Jl
OjpJbnRSZWN0JiBjb3ZlcmVkUmVjdCkKK3sKKyAgICBtX3BhZ2VWaWV3cG9ydENvbnRyb2xsZXIt
PmRpZFJlbmRlckZyYW1lKGNvbnRlbnRzU2l6ZSwgY292ZXJlZFJlY3QpOworfQorCit2b2lkIFBh
Z2VDbGllbnRJbXBsOjpwYWdlVHJhbnNpdGlvblZpZXdwb3J0UmVhZHkoKQoreworICAgIG1fcGFn
ZVZpZXdwb3J0Q29udHJvbGxlci0+cGFnZVRyYW5zaXRpb25WaWV3cG9ydFJlYWR5KCk7Cit9Cisj
ZW5kaWYKKwogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuY3BwCShyZXZpc2lvbiAxMzIyMTApCisrKyBTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTc4LDcgKzc4LDggQEAKICNpbmNsdWRlIDxFdmFzX0dMLmg+CiAjZW5kaWYKIAotI2lmIFVT
RShDT09SRElOQVRFRF9HUkFQSElDUykKKyNpZiBVU0UoVElMRURfQkFDS0lOR19TVE9SRSkKKyNp
bmNsdWRlICJQYWdlVmlld3BvcnRDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiUGFnZVZpZXdwb3J0
Q29udHJvbGxlckNsaWVudEVmbC5oIgogI2VuZGlmCiAKQEAgLTExOSw4ICsxMjAsOSBAQAogCiBz
dHJ1Y3QgRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhIHsKICAgICBPd25QdHI8UGFnZUNsaWVudEltcGw+
IHBhZ2VDbGllbnQ7Ci0jaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQorI2lmIFVTRShUSUxF
RF9CQUNLSU5HX1NUT1JFKQogICAgIE93blB0cjxQYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50
RWZsPiBwYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50OworICAgIE93blB0cjxQYWdlVmlld3Bv
cnRDb250cm9sbGVyPiBwYWdlVmlld3BvcnRDb250cm9sbGVyOwogI2VuZGlmCiAgICAgUmVmUHRy
PFdlYlBhZ2VQcm94eT4gcGFnZVByb3h5OwogICAgIE93blB0cjxQYWdlTG9hZENsaWVudEVmbD4g
cGFnZUxvYWRDbGllbnQ7CkBAIC0yODksMTIgKzI5MSwzMCBAQAogICAgIHJldHVybiB0cnVlOwog
fQogCisjaWYgVVNFKFRJTEVEX0JBQ0tJTkdfU1RPUkUpCitzdGF0aWMgRXZhc19Db29yZF9Qb2lu
dCBtYXBUb1dlYkNvbnRlbnQoRXdrX1ZpZXdfU21hcnRfRGF0YSogc21hcnREYXRhLCBFdmFzX0Nv
b3JkX1BvaW50IHBvaW50KQoreworICAgIEV2YXNfQ29vcmRfUG9pbnQgcmVzdWx0OworICAgIEVX
S19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIHByaXYsIHJlc3VsdCk7CisKKyAg
ICByZXN1bHQueCA9IChwb2ludC54ICAtIHNtYXJ0RGF0YS0+dmlldy54KSAvIHByaXYtPnBhZ2VW
aWV3cG9ydENvbnRyb2xsZXJDbGllbnQtPnNjYWxlRmFjdG9yKCkgKyBzbWFydERhdGEtPnZpZXcu
eCArIHByaXYtPnBhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnQtPnNjcm9sbFBvc2l0aW9uKCku
eCgpOworICAgIHJlc3VsdC55ID0gKHBvaW50LnkgLSBzbWFydERhdGEtPnZpZXcueSkgLyBwcml2
LT5wYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50LT5zY2FsZUZhY3RvcigpICsgc21hcnREYXRh
LT52aWV3LnkgKyBwcml2LT5wYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50LT5zY3JvbGxQb3Np
dGlvbigpLnkoKTsKKyAgICByZXR1cm4gcmVzdWx0OworfQorI2VuZGlmCisKIHN0YXRpYyBFaW5h
X0Jvb2wgX2V3a192aWV3X3NtYXJ0X21vdXNlX3doZWVsKEV3a19WaWV3X1NtYXJ0X0RhdGEqIHNt
YXJ0RGF0YSwgY29uc3QgRXZhc19FdmVudF9Nb3VzZV9XaGVlbCogd2hlZWxFdmVudCkKIHsKICAg
ICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc21hcnREYXRhLCBwcml2LCBmYWxzZSk7CiAK
ICAgICBFdmFzX1BvaW50IHBvc2l0aW9uID0ge3NtYXJ0RGF0YS0+dmlldy54LCBzbWFydERhdGEt
PnZpZXcueX07CisjaWYgVVNFKFRJTEVEX0JBQ0tJTkdfU1RPUkUpCisgICAgRXZhc19FdmVudF9N
b3VzZV9XaGVlbCBldmVudCgqd2hlZWxFdmVudCk7CisgICAgZXZlbnQuY2FudmFzID0gbWFwVG9X
ZWJDb250ZW50KHNtYXJ0RGF0YSwgZXZlbnQuY2FudmFzKTsKKyAgICBwcml2LT5wYWdlUHJveHkt
PmhhbmRsZVdoZWVsRXZlbnQoTmF0aXZlV2ViV2hlZWxFdmVudCgmZXZlbnQsICZwb3NpdGlvbikp
OworI2Vsc2UKICAgICBwcml2LT5wYWdlUHJveHktPmhhbmRsZVdoZWVsRXZlbnQoTmF0aXZlV2Vi
V2hlZWxFdmVudCh3aGVlbEV2ZW50LCAmcG9zaXRpb24pKTsKKyNlbmRpZgogICAgIHJldHVybiB0
cnVlOwogfQogCkBAIC0zMDMsNyArMzIzLDEzIEBACiAgICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1Jf
UkVUVVJOKHNtYXJ0RGF0YSwgcHJpdiwgZmFsc2UpOwogCiAgICAgRXZhc19Qb2ludCBwb3NpdGlv
biA9IHtzbWFydERhdGEtPnZpZXcueCwgc21hcnREYXRhLT52aWV3Lnl9OworI2lmIFVTRShUSUxF
RF9CQUNLSU5HX1NUT1JFKQorICAgIEV2YXNfRXZlbnRfTW91c2VfRG93biBldmVudCgqZG93bkV2
ZW50KTsKKyAgICBldmVudC5jYW52YXMgPSBtYXBUb1dlYkNvbnRlbnQoc21hcnREYXRhLCBldmVu
dC5jYW52YXMpOworICAgIHByaXYtPnBhZ2VQcm94eS0+aGFuZGxlTW91c2VFdmVudChOYXRpdmVX
ZWJNb3VzZUV2ZW50KCZldmVudCwgJnBvc2l0aW9uKSk7CisjZWxzZQogICAgIHByaXYtPnBhZ2VQ
cm94eS0+aGFuZGxlTW91c2VFdmVudChOYXRpdmVXZWJNb3VzZUV2ZW50KGRvd25FdmVudCwgJnBv
c2l0aW9uKSk7CisjZW5kaWYKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtMzEyLDcgKzMzOCwx
MyBAQAogICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIHByaXYsIGZh
bHNlKTsKIAogICAgIEV2YXNfUG9pbnQgcG9zaXRpb24gPSB7c21hcnREYXRhLT52aWV3LngsIHNt
YXJ0RGF0YS0+dmlldy55fTsKKyNpZiBVU0UoVElMRURfQkFDS0lOR19TVE9SRSkKKyAgICBFdmFz
X0V2ZW50X01vdXNlX1VwIGV2ZW50KCp1cEV2ZW50KTsKKyAgICBldmVudC5jYW52YXMgPSBtYXBU
b1dlYkNvbnRlbnQoc21hcnREYXRhLCBldmVudC5jYW52YXMpOworICAgIHByaXYtPnBhZ2VQcm94
eS0+aGFuZGxlTW91c2VFdmVudChOYXRpdmVXZWJNb3VzZUV2ZW50KCZldmVudCwgJnBvc2l0aW9u
KSk7CisjZWxzZQogICAgIHByaXYtPnBhZ2VQcm94eS0+aGFuZGxlTW91c2VFdmVudChOYXRpdmVX
ZWJNb3VzZUV2ZW50KHVwRXZlbnQsICZwb3NpdGlvbikpOworI2VuZGlmCiAKICAgICBpZiAocHJp
di0+aW1mQ29udGV4dCkKICAgICAgICAgZWNvcmVfaW1mX2NvbnRleHRfcmVzZXQocHJpdi0+aW1m
Q29udGV4dCk7CkBAIC0zMjUsNyArMzU3LDEzIEBACiAgICAgRVdLX1ZJRVdfUFJJVl9HRVRfT1Jf
UkVUVVJOKHNtYXJ0RGF0YSwgcHJpdiwgZmFsc2UpOwogCiAgICAgRXZhc19Qb2ludCBwb3NpdGlv
biA9IHtzbWFydERhdGEtPnZpZXcueCwgc21hcnREYXRhLT52aWV3Lnl9OworI2lmIFVTRShUSUxF
RF9CQUNLSU5HX1NUT1JFKQorICAgIEV2YXNfRXZlbnRfTW91c2VfTW92ZSBldmVudCgqbW92ZUV2
ZW50KTsKKyAgICBldmVudC5jdXIuY2FudmFzID0gbWFwVG9XZWJDb250ZW50KHNtYXJ0RGF0YSwg
ZXZlbnQuY3VyLmNhbnZhcyk7CisgICAgcHJpdi0+cGFnZVByb3h5LT5oYW5kbGVNb3VzZUV2ZW50
KE5hdGl2ZVdlYk1vdXNlRXZlbnQoJmV2ZW50LCAmcG9zaXRpb24pKTsKKyNlbHNlCiAgICAgcHJp
di0+cGFnZVByb3h5LT5oYW5kbGVNb3VzZUV2ZW50KE5hdGl2ZVdlYk1vdXNlRXZlbnQobW92ZUV2
ZW50LCAmcG9zaXRpb24pKTsKKyNlbmRpZgogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC04Nzks
OCArOTE3LDEwIEBACiAgICAgcHJpdi0+c2V0dGluZ3MgPSBhZG9wdFB0cihuZXcgRXdrX1NldHRp
bmdzKFdLUGFnZUdyb3VwR2V0UHJlZmVyZW5jZXMoV0tQYWdlR2V0UGFnZUdyb3VwKHRvQVBJKHBy
aXYtPnBhZ2VQcm94eS5nZXQoKSkpKSkpOwogICAgIHByaXYtPmNvbnRleHQgPSBjb250ZXh0Owog
Ci0jaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQorI2lmIFVTRShUSUxFRF9CQUNLSU5HX1NU
T1JFKQogICAgIHByaXYtPnBhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnQgPSBQYWdlVmlld3Bv
cnRDb250cm9sbGVyQ2xpZW50RWZsOjpjcmVhdGUoZXdrVmlldyk7CisgICAgcHJpdi0+cGFnZVZp
ZXdwb3J0Q29udHJvbGxlciA9IGFkb3B0UHRyKG5ldyBQYWdlVmlld3BvcnRDb250cm9sbGVyKHBy
aXYtPnBhZ2VQcm94eS5nZXQoKSwgcHJpdi0+cGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudC5n
ZXQoKSkpOworICAgIHByaXYtPnBhZ2VDbGllbnQtPnNldFBhZ2VWaWV3cG9ydENvbnRyb2xsZXIo
cHJpdi0+cGFnZVZpZXdwb3J0Q29udHJvbGxlci5nZXQoKSk7CiAjZW5kaWYKIAogICAgIC8vIElu
aXRpYWxpemUgcGFnZSBjbGllbnRzLgpAQCAtMTYxNiw2ICsxNjU2LDE2IEBACiAgICAgZXZhc19v
YmplY3Rfc21hcnRfY2FsbGJhY2tfY2FsbChld2tWaWV3LCAibG9hZCxwcm92aXNpb25hbCxmYWls
ZWQiLCBjb25zdF9jYXN0PEV3a19FcnJvcio+KGVycm9yKSk7CiB9CiAKKyNpZiBVU0UoVElMRURf
QkFDS0lOR19TVE9SRSkKK3ZvaWQgZXdrX3ZpZXdfbG9hZF9jb21taXR0ZWQoRXZhc19PYmplY3Qq
IGV3a1ZpZXcpCit7CisgICAgRVdLX1ZJRVdfU0RfR0VUX09SX1JFVFVSTihld2tWaWV3LCBzbWFy
dERhdGEpOworICAgIEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIHByaXYp
OworCisgICAgcHJpdi0+cGFnZVZpZXdwb3J0Q29udHJvbGxlci0+ZGlkQ29tbWl0TG9hZCgpOwor
fQorI2VuZGlmCisKIC8qKgogICogQGludGVybmFsCiAgKiBSZXBvcnRzIHZpZXcgcmVjZWl2ZWQg
cmVkaXJlY3QgZm9yIHByb3Zpc2lvbmFsIGxvYWQuCkBAIC0yMDUxLDYgKzIxMDEsOCBAQAogICAg
IEVXS19WSUVXX1BSSVZfR0VUX09SX1JFVFVSTihzbWFydERhdGEsIHByaXYsIGZhbHNlKTsKIAog
ICAgIEV2YXNfUG9pbnQgcG9zaXRpb24gPSB7IHNtYXJ0RGF0YS0+dmlldy54LCBzbWFydERhdGEt
PnZpZXcueSB9OworICAgIC8vIEZJWE1FOiBUb3VjaCBwb2ludHMgZG8gbm90IHRha2Ugc2Nyb2xs
IHBvc2l0aW9uIGFuZCBzY2FsZSBpbnRvIGFjY291bnQgd2hlbiAKKyAgICAvLyBUSUxFRF9CQUNL
SU5HX1NUT1JFIGlzIGVuYWJsZWQuCiAgICAgcHJpdi0+cGFnZVByb3h5LT5oYW5kbGVUb3VjaEV2
ZW50KE5hdGl2ZVdlYlRvdWNoRXZlbnQodHlwZSwgcG9pbnRzLCBtb2RpZmllcnMsICZwb3NpdGlv
biwgZWNvcmVfdGltZV9nZXQoKSkpOwogCiAgICAgcmV0dXJuIHRydWU7CkluZGV4OiBTb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1BhZ2VMb2FkQ2xpZW50RWZsLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1BhZ2VMb2FkQ2xpZW50RWZsLmNwcAkocmV2
aXNpb24gMTMyMjEwKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9QYWdlTG9hZENs
aWVudEVmbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEyMiw2ICsxMjIsMTcgQEAKICAgICBld2tf
dmlld19sb2FkX3Byb3Zpc2lvbmFsX2ZhaWxlZChld2tWaWV3LCBld2tFcnJvci5nZXQoKSk7CiB9
CiAKKyNpZiBVU0UoVElMRURfQkFDS0lOR19TVE9SRSkKK3ZvaWQgUGFnZUxvYWRDbGllbnRFZmw6
OmRpZENvbW1pdExvYWRGb3JGcmFtZShXS1BhZ2VSZWYsIFdLRnJhbWVSZWYgZnJhbWUsIFdLVHlw
ZVJlZiwgY29uc3Qgdm9pZCogY2xpZW50SW5mbykKK3sKKyAgICBpZiAoIVdLRnJhbWVJc01haW5G
cmFtZShmcmFtZSkpCisgICAgICAgIHJldHVybjsKKworICAgIEV2YXNfT2JqZWN0KiBld2tWaWV3
ID0gdG9QYWdlTG9hZENsaWVudEVmbChjbGllbnRJbmZvKS0+dmlldygpOworICAgIGV3a192aWV3
X2xvYWRfY29tbWl0dGVkKGV3a1ZpZXcpOworfQorI2VuZGlmCisKIHZvaWQgUGFnZUxvYWRDbGll
bnRFZmw6OmRpZENoYW5nZUJhY2tGb3J3YXJkTGlzdChXS1BhZ2VSZWYsIFdLQmFja0ZvcndhcmRM
aXN0SXRlbVJlZiBhZGRlZEl0ZW0sIFdLQXJyYXlSZWYgcmVtb3ZlZEl0ZW1zLCBjb25zdCB2b2lk
KiBjbGllbnRJbmZvKQogewogICAgIEV2YXNfT2JqZWN0KiBld2tWaWV3ID0gdG9QYWdlTG9hZENs
aWVudEVmbChjbGllbnRJbmZvKS0+dmlldygpOwpAQCAtMTY4LDYgKzE3OSw5IEBACiAgICAgbG9h
ZENsaWVudC5kaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lID0gZGlkU3RhcnRQcm92aXNp
b25hbExvYWRGb3JGcmFtZTsKICAgICBsb2FkQ2xpZW50LmRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVj
dEZvclByb3Zpc2lvbmFsTG9hZEZvckZyYW1lID0gZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9y
UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWU7CiAgICAgbG9hZENsaWVudC5kaWRGYWlsUHJvdmlzaW9u
YWxMb2FkV2l0aEVycm9yRm9yRnJhbWUgPSBkaWRGYWlsUHJvdmlzaW9uYWxMb2FkV2l0aEVycm9y
Rm9yRnJhbWU7CisjaWYgVVNFKFRJTEVEX0JBQ0tJTkdfU1RPUkUpCisgICAgbG9hZENsaWVudC5k
aWRDb21taXRMb2FkRm9yRnJhbWUgPSBkaWRDb21taXRMb2FkRm9yRnJhbWU7CisjZW5kaWYKICAg
ICBsb2FkQ2xpZW50LmRpZENoYW5nZUJhY2tGb3J3YXJkTGlzdCA9IGRpZENoYW5nZUJhY2tGb3J3
YXJkTGlzdDsKICAgICBsb2FkQ2xpZW50LmRpZFNhbWVEb2N1bWVudE5hdmlnYXRpb25Gb3JGcmFt
ZSA9IGRpZFNhbWVEb2N1bWVudE5hdmlnYXRpb25Gb3JGcmFtZTsKICAgICBXS1BhZ2VTZXRQYWdl
TG9hZGVyQ2xpZW50KHBhZ2VSZWYsICZsb2FkQ2xpZW50KTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9lZmwvUGFnZUxvYWRDbGllbnRFZmwuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1BhZ2VMb2FkQ2xpZW50RWZsLmgJKHJldmlzaW9uIDEzMjIx
MCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvUGFnZUxvYWRDbGllbnRFZmwuaAko
d29ya2luZyBjb3B5KQpAQCAtNTYsNiArNTYsNyBAQAogICAgIHN0YXRpYyB2b2lkIGRpZFN0YXJ0
UHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUoV0tQYWdlUmVmLCBXS0ZyYW1lUmVmLCBXS1R5cGVSZWYg
dXNlckRhdGEsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pOwogICAgIHN0YXRpYyB2b2lkIGRpZFJl
Y2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKFdLUGFnZVJlZiwg
V0tGcmFtZVJlZiwgV0tUeXBlUmVmIHVzZXJEYXRhLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsK
ICAgICBzdGF0aWMgdm9pZCBkaWRGYWlsUHJvdmlzaW9uYWxMb2FkV2l0aEVycm9yRm9yRnJhbWUo
V0tQYWdlUmVmLCBXS0ZyYW1lUmVmLCBXS0Vycm9yUmVmLCBXS1R5cGVSZWYgdXNlckRhdGEsIGNv
bnN0IHZvaWQqIGNsaWVudEluZm8pOworICAgIHN0YXRpYyB2b2lkIGRpZENvbW1pdExvYWRGb3JG
cmFtZShXS1BhZ2VSZWYsIFdLRnJhbWVSZWYgZnJhbWUsIFdLVHlwZVJlZiB1c2VyRGF0YSwgY29u
c3Qgdm9pZCogY2xpZW50SW5mbyk7CiAgICAgc3RhdGljIHZvaWQgZGlkQ2hhbmdlQmFja0Zvcndh
cmRMaXN0KFdLUGFnZVJlZiwgV0tCYWNrRm9yd2FyZExpc3RJdGVtUmVmIGFkZGVkSXRlbSwgV0tB
cnJheVJlZiByZW1vdmVkSXRlbXMsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pOwogICAgIHN0YXRp
YyB2b2lkIGRpZFNhbWVEb2N1bWVudE5hdmlnYXRpb25Gb3JGcmFtZShXS1BhZ2VSZWYsIFdLRnJh
bWVSZWYsIFdLU2FtZURvY3VtZW50TmF2aWdhdGlvblR5cGUsIFdLVHlwZVJlZiwgY29uc3Qgdm9p
ZCogY2xpZW50SW5mbyk7CiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9XZWJQ
YWdlUHJveHlRdC5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0
L1dlYlBhZ2VQcm94eVF0LmNwcAkocmV2aXNpb24gMTMyMjEwKQorKysgU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL3F0L1dlYlBhZ2VQcm94eVF0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtODUsMTEg
Kzg1LDYgQEAKICAgICBwcm9jZXNzKCktPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkNhbmNlbENv
bXBvc2l0aW9uKCksIG1fcGFnZUlEKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OmRpZFJlbmRl
ckZyYW1lKGNvbnN0IFdlYkNvcmU6OkludFNpemUmIGNvbnRlbnRzU2l6ZSwgY29uc3QgV2ViQ29y
ZTo6SW50UmVjdCYgY292ZXJlZFJlY3QpCi17Ci0gICAgbV9wYWdlQ2xpZW50LT5kaWRSZW5kZXJG
cmFtZShjb250ZW50c1NpemUsIGNvdmVyZWRSZWN0KTsKLX0KLQogdm9pZCBXZWJQYWdlUHJveHk6
OnJlZ2lzdGVyQXBwbGljYXRpb25TY2hlbWUoY29uc3QgU3RyaW5nJiBzY2hlbWUpCiB7CiAgICAg
cHJvY2VzcygpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpSZWdpc3RlckFwcGxpY2F0aW9uU2No
ZW1lKHNjaGVtZSksIG1fcGFnZUlEKTsKQEAgLTEyMSwxMSArMTE2LDYgQEAKICAgICBwcm9jZXNz
KCktPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlNldFVzZXJTY3JpcHRzKHNjcmlwdHMpLCBtX3Bh
Z2VJRCk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpwYWdlVHJhbnNpdGlvblZpZXdwb3J0UmVh
ZHkoKQotewotICAgIG1fcGFnZUNsaWVudC0+cGFnZVRyYW5zaXRpb25WaWV3cG9ydFJlYWR5KCk7
Ci19Ci0KIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRGaW5kWm9vbWFibGVBcmVhKGNvbnN0IEludFBv
aW50JiB0YXJnZXQsIGNvbnN0IEludFJlY3QmIGFyZWEpCiB7CiAgICAgbV9wYWdlQ2xpZW50LT5k
aWRGaW5kWm9vbWFibGVBcmVhKHRhcmdldCwgYXJlYSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAkocmV2aXNpb24gMTMyMjEwKQorKysgU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTI2NzUs
NiArMjY3NSwxNyBAQAogewogICAgIG1fcGFnZUNsaWVudC0+cGFnZURpZFJlcXVlc3RTY3JvbGwo
cG9pbnQpOwogfQorCit2b2lkIFdlYlBhZ2VQcm94eTo6cGFnZVRyYW5zaXRpb25WaWV3cG9ydFJl
YWR5KCkKK3sKKyAgICBtX3BhZ2VDbGllbnQtPnBhZ2VUcmFuc2l0aW9uVmlld3BvcnRSZWFkeSgp
OworfQorCit2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkUmVuZGVyRnJhbWUoY29uc3QgV2ViQ29yZTo6
SW50U2l6ZSYgY29udGVudHNTaXplLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBjb3ZlcmVkUmVj
dCkKK3sKKyAgICBtX3BhZ2VDbGllbnQtPmRpZFJlbmRlckZyYW1lKGNvbnRlbnRzU2l6ZSwgY292
ZXJlZFJlY3QpOworfQorCiAjZW5kaWYKIAogdm9pZCBXZWJQYWdlUHJveHk6OmRpZENoYW5nZVZp
ZXdwb3J0UHJvcGVydGllcyhjb25zdCBWaWV3cG9ydEF0dHJpYnV0ZXMmIGF0dHIpCkluZGV4OiBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCShyZXZpc2lvbiAxMzIyMTApCisr
KyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgJKHdvcmtpbmcgY29weSkK
QEAgLTM1NSw4ICszNTUsMTAgQEAKICAgICAKICAgICBib29sIG1haW50YWluc0luYWN0aXZlU2Vs
ZWN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9tYWludGFpbnNJbmFjdGl2ZVNlbGVjdGlvbjsgfQog
ICAgIHZvaWQgc2V0TWFpbnRhaW5zSW5hY3RpdmVTZWxlY3Rpb24oYm9vbCk7CisjaWYgVVNFKFRJ
TEVEX0JBQ0tJTkdfU1RPUkUpIAorICAgIHZvaWQgZGlkUmVuZGVyRnJhbWUoY29uc3QgV2ViQ29y
ZTo6SW50U2l6ZSYgY29udGVudHNTaXplLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBjb3ZlcmVk
UmVjdCk7CisjZW5kaWYKICNpZiBQTEFURk9STShRVCkKLSAgICB2b2lkIGRpZFJlbmRlckZyYW1l
KGNvbnN0IFdlYkNvcmU6OkludFNpemUmIGNvbnRlbnRzU2l6ZSwgY29uc3QgV2ViQ29yZTo6SW50
UmVjdCYgY292ZXJlZFJlY3QpOwogICAgIHZvaWQgcmVnaXN0ZXJBcHBsaWNhdGlvblNjaGVtZShj
b25zdCBTdHJpbmcmIHNjaGVtZSk7CiAgICAgdm9pZCByZXNvbHZlQXBwbGljYXRpb25TY2hlbWVS
ZXF1ZXN0KFF0TmV0d29ya1JlcXVlc3REYXRhKTsKICAgICB2b2lkIHNlbmRBcHBsaWNhdGlvblNj
aGVtZVJlcGx5KGNvbnN0IFFRdWlja05ldHdvcmtSZXBseSopOwpAQCAtODU4LDEwICs4NjAsOSBA
QAogICAgIAogI2lmIFVTRShUSUxFRF9CQUNLSU5HX1NUT1JFKQogICAgIHZvaWQgcGFnZURpZFJl
cXVlc3RTY3JvbGwoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmKTsKKyAgICB2b2lkIHBhZ2VUcmFu
c2l0aW9uVmlld3BvcnRSZWFkeSgpOwogI2VuZGlmCi0KICNpZiBQTEFURk9STShRVCkKLSAgICB2
b2lkIHBhZ2VUcmFuc2l0aW9uVmlld3BvcnRSZWFkeSgpOwogICAgIHZvaWQgZGlkRmluZFpvb21h
YmxlQXJlYShjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYsIGNvbnN0IFdlYkNvcmU6OkludFJlY3Qm
KTsKICNlbmRpZgogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRH
cmFwaGljcy9MYXllclRyZWVDb29yZGluYXRvclByb3h5LmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVDb29yZGlu
YXRvclByb3h5LmNwcAkocmV2aXNpb24gMTMyMjEwKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlQ29vcmRpbmF0b3JQcm94eS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTEyMCw3ICsxMjAsNyBAQAogewogICAgIGRpc3BhdGNoVXBkYXRlKGJp
bmQoJkxheWVyVHJlZVJlbmRlcmVyOjpmbHVzaExheWVyQ2hhbmdlcywgbV9yZW5kZXJlci5nZXQo
KSkpOwogICAgIHVwZGF0ZVZpZXdwb3J0KCk7Ci0jaWYgUExBVEZPUk0oUVQpCisjaWYgVVNFKFRJ
TEVEX0JBQ0tJTkdfU1RPUkUpCiAgICAgbV9kcmF3aW5nQXJlYVByb3h5LT5wYWdlKCktPmRpZFJl
bmRlckZyYW1lKGNvbnRlbnRzU2l6ZSwgY292ZXJlZFJlY3QpOwogI2Vsc2UKICAgICBVTlVTRURf
UEFSQU0oY29udGVudHNTaXplKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQ
YWdlUHJveHkubWVzc2FnZXMuaW4KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgkocmV2aXNpb24gMTMyMjEwKQorKysgU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5tZXNzYWdlcy5pbgkod29ya2luZyBjb3B5
KQpAQCAtNzUsOSArNzUsOSBAQAogCiAjaWYgVVNFKFRJTEVEX0JBQ0tJTkdfU1RPUkUpCiAgICAg
UGFnZURpZFJlcXVlc3RTY3JvbGwoV2ViQ29yZTo6SW50UG9pbnQgcG9pbnQpCisgICAgUGFnZVRy
YW5zaXRpb25WaWV3cG9ydFJlYWR5KCkKICNlbmRpZgogI2lmIFBMQVRGT1JNKFFUKQotICAgIFBh
Z2VUcmFuc2l0aW9uVmlld3BvcnRSZWFkeSgpCiAgICAgRGlkRmluZFpvb21hYmxlQXJlYShXZWJD
b3JlOjpJbnRQb2ludCB0YXJnZXQsIFdlYkNvcmU6OkludFJlY3QgYXJlYSkKICAgICBBdXRoZW50
aWNhdGlvblJlcXVpcmVkUmVxdWVzdChXVEY6OlN0cmluZyBob3N0bmFtZSwgV1RGOjpTdHJpbmcg
cmVhbG0sIFdURjo6U3RyaW5nIHByZWZpbGxlZFVzZXJuYW1lKSAtPiAoV1RGOjpTdHJpbmcgdXNl
cm5hbWUsIFdURjo6U3RyaW5nIHBhc3N3b3JkKQogICAgIENlcnRpZmljYXRlVmVyaWZpY2F0aW9u
UmVxdWVzdChXVEY6OlN0cmluZyBob3N0bmFtZSkgLT4gKGJvb2wgaWdub3JlRXJyb3JzKQpJbmRl
eDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BhZ2VWaWV3cG9ydENvbnRyb2xsZXIuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QYWdlVmlld3BvcnRDb250cm9s
bGVyLmNwcAkocmV2aXNpb24gMTMyMjEwKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1Bh
Z2VWaWV3cG9ydENvbnRyb2xsZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMiw2ICsyMiw4IEBA
CiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiUGFnZVZpZXdwb3J0Q29udHJvbGxlci5o
IgogCisjaWYgVVNFKFRJTEVEX0JBQ0tJTkdfU1RPUkUpCisKICNpbmNsdWRlICJQYWdlVmlld3Bv
cnRDb250cm9sbGVyQ2xpZW50LmgiCiAjaW5jbHVkZSAiV2ViUGFnZVByb3h5LmgiCiAjaW5jbHVk
ZSA8V2ViQ29yZS9GbG9hdFJlY3QuaD4KQEAgLTI4OSwzICsyOTEsNSBAQAogfQogCiB9IC8vIG5h
bWVzcGFjZSBXZWJLaXQKKworI2VuZGlmCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>170170</attachid>
            <date>2012-10-23 08:15:57 -0700</date>
            <delta_ts>2012-10-23 08:44:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>99850.patch</filename>
            <type>text/plain</type>
            <size>29526</size>
            <attacher name="Yael">yael</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9xdC9XZWJQYWdlUHJveHlRdC5jcHAKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1dlYlBhZ2VQcm94eVF0LmNw
cAkocmV2aXNpb24gMTMyMjEwKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL3F0L1dlYlBh
Z2VQcm94eVF0LmNwcAkod29ya2luZyBjb3B5KQpAQCAtODUsMTEgKzg1LDYgQEAKICAgICBwcm9j
ZXNzKCktPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkNhbmNlbENvbXBvc2l0aW9uKCksIG1fcGFn
ZUlEKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OmRpZFJlbmRlckZyYW1lKGNvbnN0IFdlYkNv
cmU6OkludFNpemUmIGNvbnRlbnRzU2l6ZSwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgY292ZXJl
ZFJlY3QpCi17Ci0gICAgbV9wYWdlQ2xpZW50LT5kaWRSZW5kZXJGcmFtZShjb250ZW50c1NpemUs
IGNvdmVyZWRSZWN0KTsKLX0KLQogdm9pZCBXZWJQYWdlUHJveHk6OnJlZ2lzdGVyQXBwbGljYXRp
b25TY2hlbWUoY29uc3QgU3RyaW5nJiBzY2hlbWUpCiB7CiAgICAgcHJvY2VzcygpLT5zZW5kKE1l
c3NhZ2VzOjpXZWJQYWdlOjpSZWdpc3RlckFwcGxpY2F0aW9uU2NoZW1lKHNjaGVtZSksIG1fcGFn
ZUlEKTsKQEAgLTEyMSwxMSArMTE2LDYgQEAKICAgICBwcm9jZXNzKCktPnNlbmQoTWVzc2FnZXM6
OldlYlBhZ2U6OlNldFVzZXJTY3JpcHRzKHNjcmlwdHMpLCBtX3BhZ2VJRCk7CiB9CiAKLXZvaWQg
V2ViUGFnZVByb3h5OjpwYWdlVHJhbnNpdGlvblZpZXdwb3J0UmVhZHkoKQotewotICAgIG1fcGFn
ZUNsaWVudC0+cGFnZVRyYW5zaXRpb25WaWV3cG9ydFJlYWR5KCk7Ci19Ci0KIHZvaWQgV2ViUGFn
ZVByb3h5OjpkaWRGaW5kWm9vbWFibGVBcmVhKGNvbnN0IEludFBvaW50JiB0YXJnZXQsIGNvbnN0
IEludFJlY3QmIGFyZWEpCiB7CiAgICAgbV9wYWdlQ2xpZW50LT5kaWRGaW5kWm9vbWFibGVBcmVh
KHRhcmdldCwgYXJlYSk7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0
ZWRHcmFwaGljcy9MYXllclRyZWVDb29yZGluYXRvclByb3h5LmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVDb29y
ZGluYXRvclByb3h5LmNwcAkocmV2aXNpb24gMTMyMjEwKQorKysgU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0Nvb3JkaW5hdGVkR3JhcGhpY3MvTGF5ZXJUcmVlQ29vcmRpbmF0b3JQcm94eS5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTEyMCw3ICsxMjAsNyBAQAogewogICAgIGRpc3BhdGNoVXBkYXRl
KGJpbmQoJkxheWVyVHJlZVJlbmRlcmVyOjpmbHVzaExheWVyQ2hhbmdlcywgbV9yZW5kZXJlci5n
ZXQoKSkpOwogICAgIHVwZGF0ZVZpZXdwb3J0KCk7Ci0jaWYgUExBVEZPUk0oUVQpCisjaWYgVVNF
KFRJTEVEX0JBQ0tJTkdfU1RPUkUpCiAgICAgbV9kcmF3aW5nQXJlYVByb3h5LT5wYWdlKCktPmRp
ZFJlbmRlckZyYW1lKGNvbnRlbnRzU2l6ZSwgY292ZXJlZFJlY3QpOwogI2Vsc2UKICAgICBVTlVT
RURfUEFSQU0oY29udGVudHNTaXplKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJQYWdlUHJveHkuY3BwCShyZXZpc2lvbiAxMzIyMTApCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjY3NSw2ICsyNjc1LDE3
IEBACiB7CiAgICAgbV9wYWdlQ2xpZW50LT5wYWdlRGlkUmVxdWVzdFNjcm9sbChwb2ludCk7CiB9
CisKK3ZvaWQgV2ViUGFnZVByb3h5OjpwYWdlVHJhbnNpdGlvblZpZXdwb3J0UmVhZHkoKQorewor
ICAgIG1fcGFnZUNsaWVudC0+cGFnZVRyYW5zaXRpb25WaWV3cG9ydFJlYWR5KCk7Cit9CisKK3Zv
aWQgV2ViUGFnZVByb3h5OjpkaWRSZW5kZXJGcmFtZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiBj
b250ZW50c1NpemUsIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGNvdmVyZWRSZWN0KQoreworICAg
IG1fcGFnZUNsaWVudC0+ZGlkUmVuZGVyRnJhbWUoY29udGVudHNTaXplLCBjb3ZlcmVkUmVjdCk7
Cit9CisKICNlbmRpZgogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkQ2hhbmdlVmlld3BvcnRQcm9w
ZXJ0aWVzKGNvbnN0IFZpZXdwb3J0QXR0cmlidXRlcyYgYXR0cikKSW5kZXg6IFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9QYWdlVmlld3BvcnRDb250cm9sbGVyLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGFnZVZpZXdwb3J0Q29udHJvbGxlci5jcHAJKHJldmlz
aW9uIDEzMjIxMCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QYWdlVmlld3BvcnRDb250
cm9sbGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjIsNiArMjIsOCBAQAogI2luY2x1ZGUgImNv
bmZpZy5oIgogI2luY2x1ZGUgIlBhZ2VWaWV3cG9ydENvbnRyb2xsZXIuaCIKIAorI2lmIFVTRShU
SUxFRF9CQUNLSU5HX1NUT1JFKQorCiAjaW5jbHVkZSAiUGFnZVZpZXdwb3J0Q29udHJvbGxlckNs
aWVudC5oIgogI2luY2x1ZGUgIldlYlBhZ2VQcm94eS5oIgogI2luY2x1ZGUgPFdlYkNvcmUvRmxv
YXRSZWN0Lmg+CkBAIC0yODksMyArMjkxLDUgQEAKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0
CisKKyNlbmRpZgpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5t
ZXNzYWdlcy5pbgo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5Lm1lc3NhZ2VzLmluCShyZXZpc2lvbiAxMzIyMTApCisrKyBTb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluCSh3b3JraW5nIGNvcHkpCkBAIC03NSw5
ICs3NSw5IEBACiAKICNpZiBVU0UoVElMRURfQkFDS0lOR19TVE9SRSkKICAgICBQYWdlRGlkUmVx
dWVzdFNjcm9sbChXZWJDb3JlOjpJbnRQb2ludCBwb2ludCkKKyAgICBQYWdlVHJhbnNpdGlvblZp
ZXdwb3J0UmVhZHkoKQogI2VuZGlmCiAjaWYgUExBVEZPUk0oUVQpCi0gICAgUGFnZVRyYW5zaXRp
b25WaWV3cG9ydFJlYWR5KCkKICAgICBEaWRGaW5kWm9vbWFibGVBcmVhKFdlYkNvcmU6OkludFBv
aW50IHRhcmdldCwgV2ViQ29yZTo6SW50UmVjdCBhcmVhKQogICAgIEF1dGhlbnRpY2F0aW9uUmVx
dWlyZWRSZXF1ZXN0KFdURjo6U3RyaW5nIGhvc3RuYW1lLCBXVEY6OlN0cmluZyByZWFsbSwgV1RG
OjpTdHJpbmcgcHJlZmlsbGVkVXNlcm5hbWUpIC0+IChXVEY6OlN0cmluZyB1c2VybmFtZSwgV1RG
OjpTdHJpbmcgcGFzc3dvcmQpCiAgICAgQ2VydGlmaWNhdGVWZXJpZmljYXRpb25SZXF1ZXN0KFdU
Rjo6U3RyaW5nIGhvc3RuYW1lKSAtPiAoYm9vbCBpZ25vcmVFcnJvcnMpCkluZGV4OiBTb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvUGFnZUNsaWVudC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgJKHJldmlzaW9uIDEzMjIxMCkKKysrIFNvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgJKHdvcmtpbmcgY29weSkKQEAgLTExNiwxMCAr
MTE2LDEwIEBACiAKICNpZiBVU0UoVElMRURfQkFDS0lOR19TVE9SRSkKICAgICB2aXJ0dWFsIHZv
aWQgcGFnZURpZFJlcXVlc3RTY3JvbGwoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmKSA9IDA7Cisg
ICAgdmlydHVhbCB2b2lkIGRpZFJlbmRlckZyYW1lKGNvbnN0IFdlYkNvcmU6OkludFNpemUmIGNv
bnRlbnRzU2l6ZSwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgY292ZXJlZFJlY3QpID0gMDsKKyAg
ICB2aXJ0dWFsIHZvaWQgcGFnZVRyYW5zaXRpb25WaWV3cG9ydFJlYWR5KCkgPSAwOwogI2VuZGlm
CiAjaWYgUExBVEZPUk0oUVQpCi0gICAgdmlydHVhbCB2b2lkIGRpZFJlbmRlckZyYW1lKGNvbnN0
IFdlYkNvcmU6OkludFNpemUmIGNvbnRlbnRzU2l6ZSwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYg
Y292ZXJlZFJlY3QpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgcGFnZVRyYW5zaXRpb25WaWV3cG9y
dFJlYWR5KCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5kWm9vbWFibGVBcmVhKGNvbnN0
IFdlYkNvcmU6OkludFBvaW50JiwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYpID0gMDsKICAgICB2
aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZU1lc3NhZ2VGcm9tTmF2aWdhdG9yUXRPYmplY3QoY29uc3Qg
U3RyaW5nJikgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBoYW5kbGVBdXRoZW50aWNhdGlvblJlcXVp
cmVkUmVxdWVzdChjb25zdCBTdHJpbmcmIGhvc3RuYW1lLCBjb25zdCBTdHJpbmcmIHJlYWxtLCBj
b25zdCBTdHJpbmcmIHByZWZpbGxlZFVzZXJuYW1lLCBTdHJpbmcmIHVzZXJuYW1lLCBTdHJpbmcm
IHBhc3N3b3JkKSA9IDA7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5oCShyZXZpc2lvbiAxMzIyMTApCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFn
ZVByb3h5LmgJKHdvcmtpbmcgY29weSkKQEAgLTM1NSw4ICszNTUsMTAgQEAKICAgICAKICAgICBi
b29sIG1haW50YWluc0luYWN0aXZlU2VsZWN0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9tYWludGFp
bnNJbmFjdGl2ZVNlbGVjdGlvbjsgfQogICAgIHZvaWQgc2V0TWFpbnRhaW5zSW5hY3RpdmVTZWxl
Y3Rpb24oYm9vbCk7CisjaWYgVVNFKFRJTEVEX0JBQ0tJTkdfU1RPUkUpIAorICAgIHZvaWQgZGlk
UmVuZGVyRnJhbWUoY29uc3QgV2ViQ29yZTo6SW50U2l6ZSYgY29udGVudHNTaXplLCBjb25zdCBX
ZWJDb3JlOjpJbnRSZWN0JiBjb3ZlcmVkUmVjdCk7CisjZW5kaWYKICNpZiBQTEFURk9STShRVCkK
LSAgICB2b2lkIGRpZFJlbmRlckZyYW1lKGNvbnN0IFdlYkNvcmU6OkludFNpemUmIGNvbnRlbnRz
U2l6ZSwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgY292ZXJlZFJlY3QpOwogICAgIHZvaWQgcmVn
aXN0ZXJBcHBsaWNhdGlvblNjaGVtZShjb25zdCBTdHJpbmcmIHNjaGVtZSk7CiAgICAgdm9pZCBy
ZXNvbHZlQXBwbGljYXRpb25TY2hlbWVSZXF1ZXN0KFF0TmV0d29ya1JlcXVlc3REYXRhKTsKICAg
ICB2b2lkIHNlbmRBcHBsaWNhdGlvblNjaGVtZVJlcGx5KGNvbnN0IFFRdWlja05ldHdvcmtSZXBs
eSopOwpAQCAtODU4LDEwICs4NjAsOSBAQAogICAgIAogI2lmIFVTRShUSUxFRF9CQUNLSU5HX1NU
T1JFKQogICAgIHZvaWQgcGFnZURpZFJlcXVlc3RTY3JvbGwoY29uc3QgV2ViQ29yZTo6SW50UG9p
bnQmKTsKKyAgICB2b2lkIHBhZ2VUcmFuc2l0aW9uVmlld3BvcnRSZWFkeSgpOwogI2VuZGlmCi0K
ICNpZiBQTEFURk9STShRVCkKLSAgICB2b2lkIHBhZ2VUcmFuc2l0aW9uVmlld3BvcnRSZWFkeSgp
OwogICAgIHZvaWQgZGlkRmluZFpvb21hYmxlQXJlYShjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYs
IGNvbnN0IFdlYkNvcmU6OkludFJlY3QmKTsKICNlbmRpZgogCkluZGV4OiBTb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlld19wcml2YXRlLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXdfcHJpdmF0ZS5oCShyZXZpc2lv
biAxMzIyMTApCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlld19w
cml2YXRlLmgJKHdvcmtpbmcgY29weSkKQEAgLTY5LDYgKzY5LDkgQEAKIHZvaWQgZXdrX3ZpZXdf
bG9hZF9maW5pc2hlZChFdmFzX09iamVjdCogZXdrVmlldyk7CiB2b2lkIGV3a192aWV3X2xvYWRf
cHJvZ3Jlc3NfY2hhbmdlZChFdmFzX09iamVjdCogZXdrVmlldywgZG91YmxlIHByb2dyZXNzKTsK
IHZvaWQgZXdrX3ZpZXdfbG9hZF9wcm92aXNpb25hbF9mYWlsZWQoRXZhc19PYmplY3QqIGV3a1Zp
ZXcsIGNvbnN0IEV3a19FcnJvciogZXJyb3IpOworI2lmIFVTRShUSUxFRF9CQUNLSU5HX1NUT1JF
KQordm9pZCBld2tfdmlld19sb2FkX2NvbW1pdHRlZChFdmFzX09iamVjdCogZXdrVmlldyk7Cisj
ZW5kaWYKIHZvaWQgZXdrX3ZpZXdfbG9hZF9wcm92aXNpb25hbF9yZWRpcmVjdChFdmFzX09iamVj
dCogZXdrVmlldyk7CiB2b2lkIGV3a192aWV3X2xvYWRfcHJvdmlzaW9uYWxfc3RhcnRlZChFdmFz
X09iamVjdCogZXdrVmlldyk7CiB2b2lkIGV3a192aWV3X25hdmlnYXRpb25fcG9saWN5X2RlY2lz
aW9uKEV2YXNfT2JqZWN0KiBld2tWaWV3LCBFd2tfTmF2aWdhdGlvbl9Qb2xpY3lfRGVjaXNpb24q
IGRlY2lzaW9uKTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL1BhZ2VW
aWV3cG9ydENvbnRyb2xsZXJDbGllbnRFZmwuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZWZsL1BhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnRFZmwuY3Bw
CShyZXZpc2lvbiAxMzIyMTApCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9Q
YWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50RWZsLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjYs
MTAgKzI2LDExIEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiUGFnZVZpZXdwb3J0
Q29udHJvbGxlckNsaWVudEVmbC5oIgogCi0jaWYgVVNFKENPT1JESU5BVEVEX0dSQVBISUNTKQor
I2lmIFVTRShUSUxFRF9CQUNLSU5HX1NUT1JFKQogCiAjaW5jbHVkZSAiTGF5ZXJUcmVlQ29vcmRp
bmF0b3JQcm94eS5oIgogI2luY2x1ZGUgIkxheWVyVHJlZVJlbmRlcmVyLmgiCisjaW5jbHVkZSAi
UGFnZVZpZXdwb3J0Q29udHJvbGxlci5oIgogI2luY2x1ZGUgIlRyYW5zZm9ybWF0aW9uTWF0cml4
LmgiCiAjaW5jbHVkZSAiZXdrX3ZpZXdfcHJpdmF0ZS5oIgogCkBAIC00MCw2ICs0MSw3IEBACiBQ
YWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50RWZsOjpQYWdlVmlld3BvcnRDb250cm9sbGVyQ2xp
ZW50RWZsKEV2YXNfT2JqZWN0KiB2aWV3V2lkZ2V0KQogICAgIDogbV92aWV3V2lkZ2V0KHZpZXdX
aWRnZXQpCiAgICAgLCBtX3NjYWxlRmFjdG9yKDEpCisgICAgLCBtX3BhZ2VWaWV3cG9ydENvbnRy
b2xsZXIoMCkKIHsKICAgICBBU1NFUlQobV92aWV3V2lkZ2V0KTsKIH0KQEAgLTYxLDcgKzYzLDcg
QEAKIHZvaWQgUGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudEVmbDo6ZGlzcGxheShjb25zdCBJ
bnRSZWN0JiByZWN0LCBjb25zdCBJbnRQb2ludCYgdmlld1Bvc2l0aW9uKQogewogICAgIFdlYkNv
cmU6OlRyYW5zZm9ybWF0aW9uTWF0cml4IG1hdHJpeDsKLSAgICBtYXRyaXguc2V0TWF0cml4KG1f
c2NhbGVGYWN0b3IsIDAsIDAsIG1fc2NhbGVGYWN0b3IsIC1tX3Zpc2libGVDb250ZW50UmVjdC54
KCkgKyB2aWV3UG9zaXRpb24ueCgpLCAtbV92aXNpYmxlQ29udGVudFJlY3QueSgpICsgdmlld1Bv
c2l0aW9uLnkoKSk7CisgICAgbWF0cml4LnNldE1hdHJpeChtX3NjYWxlRmFjdG9yLCAwLCAwLCBt
X3NjYWxlRmFjdG9yLCAtbV9zY3JvbGxQb3NpdGlvbi54KCkgKiBtX3NjYWxlRmFjdG9yICsgdmll
d1Bvc2l0aW9uLngoKSAsIC1tX3Njcm9sbFBvc2l0aW9uLnkoKSAqIG1fc2NhbGVGYWN0b3IgKyB2
aWV3UG9zaXRpb24ueSgpKTsKIAogICAgIExheWVyVHJlZVJlbmRlcmVyKiByZW5kZXJlciA9IGRy
YXdpbmdBcmVhKCktPmxheWVyVHJlZUNvb3JkaW5hdG9yUHJveHkoKS0+bGF5ZXJUcmVlUmVuZGVy
ZXIoKTsKICAgICByZW5kZXJlci0+c2V0QWN0aXZlKHRydWUpOwpAQCAtNzUsNTIgKzc3LDQ0IEBA
CiB7CiAgICAgbV92aWV3cG9ydFNpemUgPSB2aWV3cG9ydFNpemU7CiAgICAgZXdrX3ZpZXdfcGFn
ZV9nZXQobV92aWV3V2lkZ2V0KS0+c2V0Vmlld3BvcnRTaXplKHZpZXdwb3J0U2l6ZSk7Ci0gICAg
c2V0VmlzaWJsZUNvbnRlbnRzUmVjdChtX3Zpc2libGVDb250ZW50UmVjdC5sb2NhdGlvbigpLCBt
X3NjYWxlRmFjdG9yLCBGbG9hdFBvaW50KCkpOworICAgIG1fcGFnZVZpZXdwb3J0Q29udHJvbGxl
ci0+ZGlkQ2hhbmdlVmlld3BvcnRTaXplKHZpZXdwb3J0U2l6ZSk7CiB9CiAKLXZvaWQgUGFnZVZp
ZXdwb3J0Q29udHJvbGxlckNsaWVudEVmbDo6c2V0VmlzaWJsZUNvbnRlbnRzUmVjdChjb25zdCBJ
bnRQb2ludCYgbmV3U2Nyb2xsUG9zaXRpb24sIGZsb2F0IG5ld1NjYWxlLCBjb25zdCBGbG9hdFBv
aW50JiB0cmFqZWN0b3J5KQordm9pZCBQYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50RWZsOjpz
ZXRWaXNpYmxlQ29udGVudHNSZWN0KGNvbnN0IEludFBvaW50JiBuZXdTY3JvbGxQb3NpdGlvbiwg
ZmxvYXQgbmV3U2NhbGUsIGNvbnN0IEZsb2F0UG9pbnQmIC8qdHJhamVjdG9yeSovKQogewogICAg
IG1fc2NhbGVGYWN0b3IgPSBuZXdTY2FsZTsKLSAgICBtX3Zpc2libGVDb250ZW50UmVjdCA9IElu
dFJlY3QobmV3U2Nyb2xsUG9zaXRpb24sIG1fdmlld3BvcnRTaXplKTsKLQotICAgIC8vIE1vdmUg
dmlzaWJsZUNvbnRlbnRSZWN0IGluc2lkZSBjb250ZW50c1JlY3Qgd2hlbiB2aXNpYmxlQ29udGVu
dFJlY3QgZ29lcyBvdXRzaWRlIGNvbnRlbnRzUmVjdC4gCi0gICAgSW50U2l6ZSBjb250ZW50c1Np
emUgPSBtX2NvbnRlbnRzU2l6ZTsKLSAgICBjb250ZW50c1NpemUuc2NhbGUobV9zY2FsZUZhY3Rv
cik7Ci0gICAgaWYgKG1fdmlzaWJsZUNvbnRlbnRSZWN0LngoKSA+IGNvbnRlbnRzU2l6ZS53aWR0
aCgpIC0gbV92aXNpYmxlQ29udGVudFJlY3Qud2lkdGgoKSkKLSAgICAgICAgbV92aXNpYmxlQ29u
dGVudFJlY3Quc2V0WChjb250ZW50c1NpemUud2lkdGgoKSAtIG1fdmlzaWJsZUNvbnRlbnRSZWN0
LndpZHRoKCkpOwotICAgIGlmIChtX3Zpc2libGVDb250ZW50UmVjdC54KCkgPCAwKQotICAgICAg
ICBtX3Zpc2libGVDb250ZW50UmVjdC5zZXRYKDApOwotICAgIGlmIChtX3Zpc2libGVDb250ZW50
UmVjdC55KCkgPiBjb250ZW50c1NpemUuaGVpZ2h0KCkgLSBtX3Zpc2libGVDb250ZW50UmVjdC5o
ZWlnaHQoKSkKLSAgICAgICAgbV92aXNpYmxlQ29udGVudFJlY3Quc2V0WShjb250ZW50c1NpemUu
aGVpZ2h0KCkgLSBtX3Zpc2libGVDb250ZW50UmVjdC5oZWlnaHQoKSk7Ci0gICAgaWYgKG1fdmlz
aWJsZUNvbnRlbnRSZWN0LnkoKSA8IDApCi0gICAgICAgIG1fdmlzaWJsZUNvbnRlbnRSZWN0LnNl
dFkoMCk7Ci0KLSAgICBGbG9hdFJlY3QgbWFwUmVjdFRvV2ViQ29udGVudCA9IG1fdmlzaWJsZUNv
bnRlbnRSZWN0OwotICAgIG1hcFJlY3RUb1dlYkNvbnRlbnQuc2NhbGUoMSAvIG1fc2NhbGVGYWN0
b3IpOwotICAgIGRyYXdpbmdBcmVhKCktPnNldFZpc2libGVDb250ZW50c1JlY3QoZW5jbG9zaW5n
SW50UmVjdChtYXBSZWN0VG9XZWJDb250ZW50KSwgbV9zY2FsZUZhY3RvciwgdHJhamVjdG9yeSk7
CisgICAgbV9zY3JvbGxQb3NpdGlvbiA9IG5ld1Njcm9sbFBvc2l0aW9uOworICAgIG1fcGFnZVZp
ZXdwb3J0Q29udHJvbGxlci0+ZGlkQ2hhbmdlQ29udGVudHNWaXNpYmlsaXR5KG1fc2Nyb2xsUG9z
aXRpb24sIG1fc2NhbGVGYWN0b3IsIEZsb2F0UG9pbnQoKSk7CiB9CiAKIHZvaWQgUGFnZVZpZXdw
b3J0Q29udHJvbGxlckNsaWVudEVmbDo6ZGlkQ2hhbmdlQ29udGVudHNTaXplKGNvbnN0IFdlYkNv
cmU6OkludFNpemUmIHNpemUpCiB7CiAgICAgbV9jb250ZW50c1NpemUgPSBzaXplOwotICAgIHNl
dFZpc2libGVDb250ZW50c1JlY3QobV92aXNpYmxlQ29udGVudFJlY3QubG9jYXRpb24oKSwgbV9z
Y2FsZUZhY3RvciwgRmxvYXRQb2ludCgpKTsKLSAgICBkcmF3aW5nQXJlYSgpLT5sYXllclRyZWVD
b29yZGluYXRvclByb3h5KCktPnNldENvbnRlbnRzU2l6ZShXZWJDb3JlOjpGbG9hdFNpemUoc2l6
ZS53aWR0aCgpLCBzaXplLmhlaWdodCgpKSk7CisgICAgSW50UmVjdCByZWN0ID0gSW50UmVjdChJ
bnRQb2ludCgpLCBtX3ZpZXdwb3J0U2l6ZSk7CisgICAgZXdrX3ZpZXdfZGlzcGxheShtX3ZpZXdX
aWRnZXQsIHJlY3QpOwogfQogCi12b2lkIFBhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnRFZmw6
OnNldFZpZXdwb3J0UG9zaXRpb24oY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYgLypjb250ZW50
c1BvaW50Ki8pCit2b2lkIFBhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnRFZmw6OnNldFZpZXdw
b3J0UG9zaXRpb24oY29uc3QgV2ViQ29yZTo6RmxvYXRQb2ludCYgY29udGVudHNQb2ludCkKIHsK
KyAgICBzZXRWaXNpYmxlQ29udGVudHNSZWN0KEludFBvaW50KGNvbnRlbnRzUG9pbnQueCgpLCBj
b250ZW50c1BvaW50LnkoKSksIG1fc2NhbGVGYWN0b3IsIEZsb2F0UG9pbnQoKSk7CiB9CiAKLXZv
aWQgUGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudEVmbDo6c2V0Q29udGVudHNTY2FsZShmbG9h
dCwgYm9vbCAvKnRyZWF0QXNJbml0aWFsVmFsdWUqLykKK3ZvaWQgUGFnZVZpZXdwb3J0Q29udHJv
bGxlckNsaWVudEVmbDo6c2V0Q29udGVudHNTY2FsZShmbG9hdCBuZXdTY2FsZSwgYm9vbCB0cmVh
dEFzSW5pdGlhbFZhbHVlKQogeworICAgIGlmICh0cmVhdEFzSW5pdGlhbFZhbHVlKQorICAgICAg
ICBtX3Njcm9sbFBvc2l0aW9uID0gSW50UG9pbnQoKTsKKyAgICBtX3NjYWxlRmFjdG9yID0gbmV3
U2NhbGU7CiB9CiAKIHZvaWQgUGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudEVmbDo6ZGlkUmVz
dW1lQ29udGVudCgpCiB7CisgICAgbV9wYWdlVmlld3BvcnRDb250cm9sbGVyLT5kaWRDaGFuZ2VD
b250ZW50c1Zpc2liaWxpdHkobV9zY3JvbGxQb3NpdGlvbiwgbV9zY2FsZUZhY3Rvcik7CiB9CiAK
IHZvaWQgUGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudEVmbDo6ZGlkQ2hhbmdlVmlzaWJsZUNv
bnRlbnRzKCkKIHsKKyAgICBJbnRSZWN0IHJlY3QgPSBJbnRSZWN0KEludFBvaW50KCksIG1fdmll
d3BvcnRTaXplKTsKKyAgICBld2tfdmlld19kaXNwbGF5KG1fdmlld1dpZGdldCwgcmVjdCk7CiB9
CiAKIHZvaWQgUGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudEVmbDo6ZGlkQ2hhbmdlVmlld3Bv
cnRBdHRyaWJ1dGVzKCkKQEAgLTEyOSw4ICsxMjMsOSBAQAogCiB2b2lkIFBhZ2VWaWV3cG9ydENv
bnRyb2xsZXJDbGllbnRFZmw6OnNldENvbnRyb2xsZXIoUGFnZVZpZXdwb3J0Q29udHJvbGxlciog
cGFnZVZpZXdwb3J0Q29udHJvbGxlcikKIHsKKyAgICBtX3BhZ2VWaWV3cG9ydENvbnRyb2xsZXIg
PSBwYWdlVmlld3BvcnRDb250cm9sbGVyOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKLSNl
bmRpZiAvLyBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCisjZW5kaWYgLy8gVVNFKFRJTEVEX0JB
Q0tJTkdfU1RPUkUpCiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3
a192aWV3LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2Vm
bC9ld2tfdmlldy5jcHAJKHJldmlzaW9uIDEzMjIxMCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZWZsL2V3a192aWV3LmNwcAkod29ya2luZyBjb3B5KQpAQCAtNzgsNyArNzgsOCBA
QAogI2luY2x1ZGUgPEV2YXNfR0wuaD4KICNlbmRpZgogCi0jaWYgVVNFKENPT1JESU5BVEVEX0dS
QVBISUNTKQorI2lmIFVTRShUSUxFRF9CQUNLSU5HX1NUT1JFKQorI2luY2x1ZGUgIlBhZ2VWaWV3
cG9ydENvbnRyb2xsZXIuaCIKICNpbmNsdWRlICJQYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50
RWZsLmgiCiAjZW5kaWYKIApAQCAtMTE5LDggKzEyMCw5IEBACiAKIHN0cnVjdCBFd2tfVmlld19Q
cml2YXRlX0RhdGEgewogICAgIE93blB0cjxQYWdlQ2xpZW50SW1wbD4gcGFnZUNsaWVudDsKLSNp
ZiBVU0UoQ09PUkRJTkFURURfR1JBUEhJQ1MpCisjaWYgVVNFKFRJTEVEX0JBQ0tJTkdfU1RPUkUp
CiAgICAgT3duUHRyPFBhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnRFZmw+IHBhZ2VWaWV3cG9y
dENvbnRyb2xsZXJDbGllbnQ7CisgICAgT3duUHRyPFBhZ2VWaWV3cG9ydENvbnRyb2xsZXI+IHBh
Z2VWaWV3cG9ydENvbnRyb2xsZXI7CiAjZW5kaWYKICAgICBSZWZQdHI8V2ViUGFnZVByb3h5PiBw
YWdlUHJveHk7CiAgICAgT3duUHRyPFBhZ2VMb2FkQ2xpZW50RWZsPiBwYWdlTG9hZENsaWVudDsK
QEAgLTI4OSwxMiArMjkxLDMwIEBACiAgICAgcmV0dXJuIHRydWU7CiB9CiAKKyNpZiBVU0UoVElM
RURfQkFDS0lOR19TVE9SRSkKK3N0YXRpYyBFdmFzX0Nvb3JkX1BvaW50IG1hcFRvV2ViQ29udGVu
dChFd2tfVmlld19TbWFydF9EYXRhKiBzbWFydERhdGEsIEV2YXNfQ29vcmRfUG9pbnQgcG9pbnQp
Cit7CisgICAgRXZhc19Db29yZF9Qb2ludCByZXN1bHQ7CisgICAgRVdLX1ZJRVdfUFJJVl9HRVRf
T1JfUkVUVVJOKHNtYXJ0RGF0YSwgcHJpdiwgcmVzdWx0KTsKKworICAgIHJlc3VsdC54ID0gKHBv
aW50LnggIC0gc21hcnREYXRhLT52aWV3LngpIC8gcHJpdi0+cGFnZVZpZXdwb3J0Q29udHJvbGxl
ckNsaWVudC0+c2NhbGVGYWN0b3IoKSArIHNtYXJ0RGF0YS0+dmlldy54ICsgcHJpdi0+cGFnZVZp
ZXdwb3J0Q29udHJvbGxlckNsaWVudC0+c2Nyb2xsUG9zaXRpb24oKS54KCk7CisgICAgcmVzdWx0
LnkgPSAocG9pbnQueSAtIHNtYXJ0RGF0YS0+dmlldy55KSAvIHByaXYtPnBhZ2VWaWV3cG9ydENv
bnRyb2xsZXJDbGllbnQtPnNjYWxlRmFjdG9yKCkgKyBzbWFydERhdGEtPnZpZXcueSArIHByaXYt
PnBhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnQtPnNjcm9sbFBvc2l0aW9uKCkueSgpOworICAg
IHJldHVybiByZXN1bHQ7Cit9CisjZW5kaWYKKwogc3RhdGljIEVpbmFfQm9vbCBfZXdrX3ZpZXdf
c21hcnRfbW91c2Vfd2hlZWwoRXdrX1ZpZXdfU21hcnRfRGF0YSogc21hcnREYXRhLCBjb25zdCBF
dmFzX0V2ZW50X01vdXNlX1doZWVsKiB3aGVlbEV2ZW50KQogewogICAgIEVXS19WSUVXX1BSSVZf
R0VUX09SX1JFVFVSTihzbWFydERhdGEsIHByaXYsIGZhbHNlKTsKIAogICAgIEV2YXNfUG9pbnQg
cG9zaXRpb24gPSB7c21hcnREYXRhLT52aWV3LngsIHNtYXJ0RGF0YS0+dmlldy55fTsKKyNpZiBV
U0UoVElMRURfQkFDS0lOR19TVE9SRSkKKyAgICBFdmFzX0V2ZW50X01vdXNlX1doZWVsIGV2ZW50
KCp3aGVlbEV2ZW50KTsKKyAgICBldmVudC5jYW52YXMgPSBtYXBUb1dlYkNvbnRlbnQoc21hcnRE
YXRhLCBldmVudC5jYW52YXMpOworICAgIHByaXYtPnBhZ2VQcm94eS0+aGFuZGxlV2hlZWxFdmVu
dChOYXRpdmVXZWJXaGVlbEV2ZW50KCZldmVudCwgJnBvc2l0aW9uKSk7CisjZWxzZQogICAgIHBy
aXYtPnBhZ2VQcm94eS0+aGFuZGxlV2hlZWxFdmVudChOYXRpdmVXZWJXaGVlbEV2ZW50KHdoZWVs
RXZlbnQsICZwb3NpdGlvbikpOworI2VuZGlmCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTMw
Myw3ICszMjMsMTMgQEAKICAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc21hcnREYXRh
LCBwcml2LCBmYWxzZSk7CiAKICAgICBFdmFzX1BvaW50IHBvc2l0aW9uID0ge3NtYXJ0RGF0YS0+
dmlldy54LCBzbWFydERhdGEtPnZpZXcueX07CisjaWYgVVNFKFRJTEVEX0JBQ0tJTkdfU1RPUkUp
CisgICAgRXZhc19FdmVudF9Nb3VzZV9Eb3duIGV2ZW50KCpkb3duRXZlbnQpOworICAgIGV2ZW50
LmNhbnZhcyA9IG1hcFRvV2ViQ29udGVudChzbWFydERhdGEsIGV2ZW50LmNhbnZhcyk7CisgICAg
cHJpdi0+cGFnZVByb3h5LT5oYW5kbGVNb3VzZUV2ZW50KE5hdGl2ZVdlYk1vdXNlRXZlbnQoJmV2
ZW50LCAmcG9zaXRpb24pKTsKKyNlbHNlCiAgICAgcHJpdi0+cGFnZVByb3h5LT5oYW5kbGVNb3Vz
ZUV2ZW50KE5hdGl2ZVdlYk1vdXNlRXZlbnQoZG93bkV2ZW50LCAmcG9zaXRpb24pKTsKKyNlbmRp
ZgogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC0zMTIsNyArMzM4LDEzIEBACiAgICAgRVdLX1ZJ
RVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgcHJpdiwgZmFsc2UpOwogCiAgICAgRXZh
c19Qb2ludCBwb3NpdGlvbiA9IHtzbWFydERhdGEtPnZpZXcueCwgc21hcnREYXRhLT52aWV3Lnl9
OworI2lmIFVTRShUSUxFRF9CQUNLSU5HX1NUT1JFKQorICAgIEV2YXNfRXZlbnRfTW91c2VfVXAg
ZXZlbnQoKnVwRXZlbnQpOworICAgIGV2ZW50LmNhbnZhcyA9IG1hcFRvV2ViQ29udGVudChzbWFy
dERhdGEsIGV2ZW50LmNhbnZhcyk7CisgICAgcHJpdi0+cGFnZVByb3h5LT5oYW5kbGVNb3VzZUV2
ZW50KE5hdGl2ZVdlYk1vdXNlRXZlbnQoJmV2ZW50LCAmcG9zaXRpb24pKTsKKyNlbHNlCiAgICAg
cHJpdi0+cGFnZVByb3h5LT5oYW5kbGVNb3VzZUV2ZW50KE5hdGl2ZVdlYk1vdXNlRXZlbnQodXBF
dmVudCwgJnBvc2l0aW9uKSk7CisjZW5kaWYKIAogICAgIGlmIChwcml2LT5pbWZDb250ZXh0KQog
ICAgICAgICBlY29yZV9pbWZfY29udGV4dF9yZXNldChwcml2LT5pbWZDb250ZXh0KTsKQEAgLTMy
NSw3ICszNTcsMTMgQEAKICAgICBFV0tfVklFV19QUklWX0dFVF9PUl9SRVRVUk4oc21hcnREYXRh
LCBwcml2LCBmYWxzZSk7CiAKICAgICBFdmFzX1BvaW50IHBvc2l0aW9uID0ge3NtYXJ0RGF0YS0+
dmlldy54LCBzbWFydERhdGEtPnZpZXcueX07CisjaWYgVVNFKFRJTEVEX0JBQ0tJTkdfU1RPUkUp
CisgICAgRXZhc19FdmVudF9Nb3VzZV9Nb3ZlIGV2ZW50KCptb3ZlRXZlbnQpOworICAgIGV2ZW50
LmN1ci5jYW52YXMgPSBtYXBUb1dlYkNvbnRlbnQoc21hcnREYXRhLCBldmVudC5jdXIuY2FudmFz
KTsKKyAgICBwcml2LT5wYWdlUHJveHktPmhhbmRsZU1vdXNlRXZlbnQoTmF0aXZlV2ViTW91c2VF
dmVudCgmZXZlbnQsICZwb3NpdGlvbikpOworI2Vsc2UKICAgICBwcml2LT5wYWdlUHJveHktPmhh
bmRsZU1vdXNlRXZlbnQoTmF0aXZlV2ViTW91c2VFdmVudChtb3ZlRXZlbnQsICZwb3NpdGlvbikp
OworI2VuZGlmCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAgLTg3OSw4ICs5MTcsMTAgQEAKICAg
ICBwcml2LT5zZXR0aW5ncyA9IGFkb3B0UHRyKG5ldyBFd2tfU2V0dGluZ3MoV0tQYWdlR3JvdXBH
ZXRQcmVmZXJlbmNlcyhXS1BhZ2VHZXRQYWdlR3JvdXAodG9BUEkocHJpdi0+cGFnZVByb3h5Lmdl
dCgpKSkpKSk7CiAgICAgcHJpdi0+Y29udGV4dCA9IGNvbnRleHQ7CiAKLSNpZiBVU0UoQ09PUkRJ
TkFURURfR1JBUEhJQ1MpCisjaWYgVVNFKFRJTEVEX0JBQ0tJTkdfU1RPUkUpCiAgICAgcHJpdi0+
cGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudCA9IFBhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGll
bnRFZmw6OmNyZWF0ZShld2tWaWV3KTsKKyAgICBwcml2LT5wYWdlVmlld3BvcnRDb250cm9sbGVy
ID0gYWRvcHRQdHIobmV3IFBhZ2VWaWV3cG9ydENvbnRyb2xsZXIocHJpdi0+cGFnZVByb3h5Lmdl
dCgpLCBwcml2LT5wYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50LmdldCgpKSk7CisgICAgcHJp
di0+cGFnZUNsaWVudC0+c2V0UGFnZVZpZXdwb3J0Q29udHJvbGxlcihwcml2LT5wYWdlVmlld3Bv
cnRDb250cm9sbGVyLmdldCgpKTsKICNlbmRpZgogCiAgICAgLy8gSW5pdGlhbGl6ZSBwYWdlIGNs
aWVudHMuCkBAIC0xNjE2LDYgKzE2NTYsMTYgQEAKICAgICBldmFzX29iamVjdF9zbWFydF9jYWxs
YmFja19jYWxsKGV3a1ZpZXcsICJsb2FkLHByb3Zpc2lvbmFsLGZhaWxlZCIsIGNvbnN0X2Nhc3Q8
RXdrX0Vycm9yKj4oZXJyb3IpKTsKIH0KIAorI2lmIFVTRShUSUxFRF9CQUNLSU5HX1NUT1JFKQor
dm9pZCBld2tfdmlld19sb2FkX2NvbW1pdHRlZChFdmFzX09iamVjdCogZXdrVmlldykKK3sKKyAg
ICBFV0tfVklFV19TRF9HRVRfT1JfUkVUVVJOKGV3a1ZpZXcsIHNtYXJ0RGF0YSk7CisgICAgRVdL
X1ZJRVdfUFJJVl9HRVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgcHJpdik7CisKKyAgICBwcml2LT5w
YWdlVmlld3BvcnRDb250cm9sbGVyLT5kaWRDb21taXRMb2FkKCk7Cit9CisjZW5kaWYKKwogLyoq
CiAgKiBAaW50ZXJuYWwKICAqIFJlcG9ydHMgdmlldyByZWNlaXZlZCByZWRpcmVjdCBmb3IgcHJv
dmlzaW9uYWwgbG9hZC4KQEAgLTIwNTEsNiArMjEwMSw4IEBACiAgICAgRVdLX1ZJRVdfUFJJVl9H
RVRfT1JfUkVUVVJOKHNtYXJ0RGF0YSwgcHJpdiwgZmFsc2UpOwogCiAgICAgRXZhc19Qb2ludCBw
b3NpdGlvbiA9IHsgc21hcnREYXRhLT52aWV3LngsIHNtYXJ0RGF0YS0+dmlldy55IH07CisgICAg
Ly8gRklYTUU6IFRvdWNoIHBvaW50cyBkbyBub3QgdGFrZSBzY3JvbGwgcG9zaXRpb24gYW5kIHNj
YWxlIGludG8gYWNjb3VudCB3aGVuIAorICAgIC8vIFRJTEVEX0JBQ0tJTkdfU1RPUkUgaXMgZW5h
YmxlZC4KICAgICBwcml2LT5wYWdlUHJveHktPmhhbmRsZVRvdWNoRXZlbnQoTmF0aXZlV2ViVG91
Y2hFdmVudCh0eXBlLCBwb2ludHMsIG1vZGlmaWVycywgJnBvc2l0aW9uLCBlY29yZV90aW1lX2dl
dCgpKSk7CiAKICAgICByZXR1cm4gdHJ1ZTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZWZsL1BhZ2VDbGllbnRJbXBsLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9lZmwvUGFnZUNsaWVudEltcGwuaAkocmV2aXNpb24gMTMyMjEwKQorKysg
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvUGFnZUNsaWVudEltcGwuaAkod29ya2lu
ZyBjb3B5KQpAQCAtMzIsNiArMzIsOCBAQAogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAorY2xhc3Mg
UGFnZVZpZXdwb3J0Q29udHJvbGxlcjsKKwogY2xhc3MgUGFnZUNsaWVudEltcGwgOiBwdWJsaWMg
UGFnZUNsaWVudCB7CiBwdWJsaWM6CiAgICAgc3RhdGljIFBhc3NPd25QdHI8UGFnZUNsaWVudElt
cGw+IGNyZWF0ZShFdmFzX09iamVjdCogdmlld1dpZGdldCkKQEAgLTQxLDggKzQzLDEwIEBACiAg
ICAgflBhZ2VDbGllbnRJbXBsKCk7CiAKICAgICBFdmFzX09iamVjdCogdmlld1dpZGdldCgpIGNv
bnN0IHsgcmV0dXJuIG1fdmlld1dpZGdldDsgfQorI2lmIFVTRShUSUxFRF9CQUNLSU5HX1NUT1JF
KQorICAgIHZvaWQgc2V0UGFnZVZpZXdwb3J0Q29udHJvbGxlcihQYWdlVmlld3BvcnRDb250cm9s
bGVyKiBjb250cm9sbGVyKSB7IG1fcGFnZVZpZXdwb3J0Q29udHJvbGxlciA9IGNvbnRyb2xsZXI7
IH0KKyNlbmRpZgogCi0KIHByaXZhdGU6CiAgICAgZXhwbGljaXQgUGFnZUNsaWVudEltcGwoRXZh
c19PYmplY3QqKTsKIApAQCAtMTE1LDkgKzExOSwxNyBAQAogCiAgICAgdmlydHVhbCB2b2lkIGRp
ZENoYW5nZUNvbnRlbnRzU2l6ZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJik7CiAKKyNpZiBVU0Uo
VElMRURfQkFDS0lOR19TVE9SRSkKKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVuZGVyRnJhbWUoY29u
c3QgV2ViQ29yZTo6SW50U2l6ZSYgY29udGVudHNTaXplLCBjb25zdCBXZWJDb3JlOjpJbnRSZWN0
JiBjb3ZlcmVkUmVjdCk7CisgICAgdmlydHVhbCB2b2lkIHBhZ2VUcmFuc2l0aW9uVmlld3BvcnRS
ZWFkeSgpOworI2VuZGlmCisKIHByaXZhdGU6CiAgICAgRXZhc19PYmplY3QqIG1fdmlld1dpZGdl
dDsKICAgICBEZWZhdWx0VW5kb0NvbnRyb2xsZXIgbV91bmRvQ29udHJvbGxlcjsKKyNpZiBVU0Uo
VElMRURfQkFDS0lOR19TVE9SRSkKKyAgICBQYWdlVmlld3BvcnRDb250cm9sbGVyKiBtX3BhZ2VW
aWV3cG9ydENvbnRyb2xsZXI7CisjZW5kaWYKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApJ
bmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvUGFnZVZpZXdwb3J0Q29udHJv
bGxlckNsaWVudEVmbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZWZsL1BhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnRFZmwuaAkocmV2aXNpb24gMTMyMjEw
KQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvUGFnZVZpZXdwb3J0Q29udHJv
bGxlckNsaWVudEVmbC5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNiw3ICsyNiw3IEBACiAjaWZuZGVm
IFBhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnRFZmxfaAogI2RlZmluZSBQYWdlVmlld3BvcnRD
b250cm9sbGVyQ2xpZW50RWZsX2gKIAotI2lmIFVTRShDT09SRElOQVRFRF9HUkFQSElDUykKKyNp
ZiBVU0UoVElMRURfQkFDS0lOR19TVE9SRSkKIAogI2luY2x1ZGUgIlBhZ2VDbGllbnRJbXBsLmgi
CiAjaW5jbHVkZSAiUGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudC5oIgpAQCAtNDQsNiArNDQs
OCBAQAogCiAgICAgRHJhd2luZ0FyZWFQcm94eSogZHJhd2luZ0FyZWEoKSBjb25zdDsKICAgICBX
ZWJDb3JlOjpJbnRTaXplIHZpZXdTaXplKCkgeyByZXR1cm4gbV92aWV3cG9ydFNpemU7IH0KKyAg
ICBmbG9hdCBzY2FsZUZhY3RvcigpIGNvbnN0IHsgcmV0dXJuIG1fc2NhbGVGYWN0b3I7IH0KKyAg
ICBXZWJDb3JlOjpJbnRQb2ludCBzY3JvbGxQb3NpdGlvbigpIHsgcmV0dXJuIG1fc2Nyb2xsUG9z
aXRpb247IH0KIAogICAgIHZvaWQgZGlzcGxheShjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiByZWN0
LCBjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgdmlld1Bvc2l0aW9uKTsKICAgICB2b2lkIHVwZGF0
ZVZpZXdwb3J0U2l6ZShjb25zdCBXZWJDb3JlOjpJbnRTaXplJiB2aWV3cG9ydFNpemUpOwpAQCAt
NjQsMTAgKzY2LDExIEBACiAgICAgZXhwbGljaXQgUGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVu
dEVmbChFdmFzX09iamVjdCopOwogCiAgICAgRXZhc19PYmplY3QqIG1fdmlld1dpZGdldDsKLSAg
ICBXZWJDb3JlOjpJbnRSZWN0IG1fdmlzaWJsZUNvbnRlbnRSZWN0OwogICAgIFdlYkNvcmU6Oklu
dFNpemUgbV9jb250ZW50c1NpemU7CiAgICAgV2ViQ29yZTo6SW50U2l6ZSBtX3ZpZXdwb3J0U2l6
ZTsKKyAgICBXZWJDb3JlOjpJbnRQb2ludCBtX3Njcm9sbFBvc2l0aW9uOwogICAgIGZsb2F0IG1f
c2NhbGVGYWN0b3I7CisgICAgUGFnZVZpZXdwb3J0Q29udHJvbGxlciogbV9wYWdlVmlld3BvcnRD
b250cm9sbGVyOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CkluZGV4OiBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9QYWdlQ2xpZW50SW1wbC5jcHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvUGFnZUNsaWVudEltcGwuY3BwCShyZXZp
c2lvbiAxMzIyMTApCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9QYWdlQ2xp
ZW50SW1wbC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQyLDYgKzQyLDEwIEBACiAjaW5jbHVkZSAi
ZXdrX3ZpZXcuaCIKICNpbmNsdWRlICJld2tfdmlld19wcml2YXRlLmgiCiAKKyNpZiBVU0UoVElM
RURfQkFDS0lOR19TVE9SRSkKKyNpbmNsdWRlICJQYWdlVmlld3BvcnRDb250cm9sbGVyLmgiCisj
ZW5kaWYKKwogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpA
QCAtMTM4LDkgKzE0MiwxMyBAQAogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKLXZvaWQgUGFn
ZUNsaWVudEltcGw6OmRpZENoYW5nZVZpZXdwb3J0UHJvcGVydGllcyhjb25zdCBXZWJDb3JlOjpW
aWV3cG9ydEF0dHJpYnV0ZXMmKQordm9pZCBQYWdlQ2xpZW50SW1wbDo6ZGlkQ2hhbmdlVmlld3Bv
cnRQcm9wZXJ0aWVzKGNvbnN0IFdlYkNvcmU6OlZpZXdwb3J0QXR0cmlidXRlcyYgYXR0cikKIHsK
LSAgICBub3RJbXBsZW1lbnRlZCgpOworI2lmIFVTRShUSUxFRF9CQUNLSU5HX1NUT1JFKQorICAg
IG1fcGFnZVZpZXdwb3J0Q29udHJvbGxlci0+ZGlkQ2hhbmdlVmlld3BvcnRBdHRyaWJ1dGVzKGF0
dHIpOworI2Vsc2UKKyAgICBVTlVTRURfUEFSQU0oYXR0cik7CisjZW5kaWYKIH0KIAogdm9pZCBQ
YWdlQ2xpZW50SW1wbDo6cmVnaXN0ZXJFZGl0Q29tbWFuZChQYXNzUmVmUHRyPFdlYkVkaXRDb21t
YW5kUHJveHk+IGNvbW1hbmQsIFdlYlBhZ2VQcm94eTo6VW5kb09yUmVkbyB1bmRvT3JSZWRvKQpA
QCAtMjkzLDE1ICszMDEsMzEgQEAKIH0KIAogI2lmIFVTRShUSUxFRF9CQUNLSU5HX1NUT1JFKQot
dm9pZCBQYWdlQ2xpZW50SW1wbDo6cGFnZURpZFJlcXVlc3RTY3JvbGwoY29uc3QgSW50UG9pbnQm
KQordm9pZCBQYWdlQ2xpZW50SW1wbDo6cGFnZURpZFJlcXVlc3RTY3JvbGwoY29uc3QgSW50UG9p
bnQmIHBvc2l0aW9uKQogewotICAgIG5vdEltcGxlbWVudGVkKCk7CisgICAgbV9wYWdlVmlld3Bv
cnRDb250cm9sbGVyLT5wYWdlRGlkUmVxdWVzdFNjcm9sbChwb3NpdGlvbik7CiB9CiAjZW5kaWYK
IAogdm9pZCBQYWdlQ2xpZW50SW1wbDo6ZGlkQ2hhbmdlQ29udGVudHNTaXplKGNvbnN0IFdlYkNv
cmU6OkludFNpemUmIHNpemUpCiB7CisjaWYgVVNFKFRJTEVEX0JBQ0tJTkdfU1RPUkUpCisgICAg
bV9wYWdlVmlld3BvcnRDb250cm9sbGVyLT5kaWRDaGFuZ2VDb250ZW50c1NpemUoc2l6ZSk7Cisj
ZWxzZQogICAgIGV3a192aWV3X2NvbnRlbnRzX3NpemVfY2hhbmdlZChtX3ZpZXdXaWRnZXQsIHNp
emUpOworI2VuZGlmCiB9CiAKKyNpZiBVU0UoVElMRURfQkFDS0lOR19TVE9SRSkKK3ZvaWQgUGFn
ZUNsaWVudEltcGw6OmRpZFJlbmRlckZyYW1lKGNvbnN0IFdlYkNvcmU6OkludFNpemUmIGNvbnRl
bnRzU2l6ZSwgY29uc3QgV2ViQ29yZTo6SW50UmVjdCYgY292ZXJlZFJlY3QpCit7CisgICAgbV9w
YWdlVmlld3BvcnRDb250cm9sbGVyLT5kaWRSZW5kZXJGcmFtZShjb250ZW50c1NpemUsIGNvdmVy
ZWRSZWN0KTsKK30KKwordm9pZCBQYWdlQ2xpZW50SW1wbDo6cGFnZVRyYW5zaXRpb25WaWV3cG9y
dFJlYWR5KCkKK3sKKyAgICBtX3BhZ2VWaWV3cG9ydENvbnRyb2xsZXItPnBhZ2VUcmFuc2l0aW9u
Vmlld3BvcnRSZWFkeSgpOworfQorI2VuZGlmCisKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApJbmRl
eDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BhZ2VWaWV3cG9ydENvbnRyb2xsZXIuaAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGFnZVZpZXdwb3J0Q29udHJvbGxl
ci5oCShyZXZpc2lvbiAxMzIyMTApCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGFnZVZp
ZXdwb3J0Q29udHJvbGxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yMiw2ICsyMiw4IEBACiAjaWZu
ZGVmIFBhZ2VWaWV3cG9ydENvbnRyb2xsZXJfaAogI2RlZmluZSBQYWdlVmlld3BvcnRDb250cm9s
bGVyX2gKIAorI2lmIFVTRShUSUxFRF9CQUNLSU5HX1NUT1JFKQorCiAjaW5jbHVkZSA8V2ViQ29y
ZS9GbG9hdFBvaW50Lmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9GbG9hdFJlY3QuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL0Zsb2F0U2l6ZS5oPgpAQCAtMTQwLDQgKzE0Miw2IEBACiAKIH0gLy8gbmFtZXNw
YWNlIFdlYktpdAogCisjZW5kaWYKKwogI2VuZGlmIC8vIFBhZ2VWaWV3cG9ydENvbnRyb2xsZXJf
aApJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9QYWdlTG9hZENsaWVudEVmbC5o
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvUGFnZUxvYWRDbGll
bnRFZmwuaAkocmV2aXNpb24gMTMyMjEwKQorKysgU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2Vm
bC9QYWdlTG9hZENsaWVudEVmbC5oCSh3b3JraW5nIGNvcHkpCkBAIC01Niw2ICs1Niw5IEBACiAg
ICAgc3RhdGljIHZvaWQgZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZShXS1BhZ2VSZWYs
IFdLRnJhbWVSZWYsIFdLVHlwZVJlZiB1c2VyRGF0YSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7
CiAgICAgc3RhdGljIHZvaWQgZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxM
b2FkRm9yRnJhbWUoV0tQYWdlUmVmLCBXS0ZyYW1lUmVmLCBXS1R5cGVSZWYgdXNlckRhdGEsIGNv
bnN0IHZvaWQqIGNsaWVudEluZm8pOwogICAgIHN0YXRpYyB2b2lkIGRpZEZhaWxQcm92aXNpb25h
bExvYWRXaXRoRXJyb3JGb3JGcmFtZShXS1BhZ2VSZWYsIFdLRnJhbWVSZWYsIFdLRXJyb3JSZWYs
IFdLVHlwZVJlZiB1c2VyRGF0YSwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7CisjaWYgVVNFKFRJ
TEVEX0JBQ0tJTkdfU1RPUkUpCisgICAgc3RhdGljIHZvaWQgZGlkQ29tbWl0TG9hZEZvckZyYW1l
KFdLUGFnZVJlZiwgV0tGcmFtZVJlZiwgV0tUeXBlUmVmIHVzZXJEYXRhLCBjb25zdCB2b2lkKiBj
bGllbnRJbmZvKTsKKyNlbmRpZgogICAgIHN0YXRpYyB2b2lkIGRpZENoYW5nZUJhY2tGb3J3YXJk
TGlzdChXS1BhZ2VSZWYsIFdLQmFja0ZvcndhcmRMaXN0SXRlbVJlZiBhZGRlZEl0ZW0sIFdLQXJy
YXlSZWYgcmVtb3ZlZEl0ZW1zLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsKICAgICBzdGF0aWMg
dm9pZCBkaWRTYW1lRG9jdW1lbnROYXZpZ2F0aW9uRm9yRnJhbWUoV0tQYWdlUmVmLCBXS0ZyYW1l
UmVmLCBXS1NhbWVEb2N1bWVudE5hdmlnYXRpb25UeXBlLCBXS1R5cGVSZWYsIGNvbnN0IHZvaWQq
IGNsaWVudEluZm8pOwogCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1BhZ2VM
b2FkQ2xpZW50RWZsLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
ZWZsL1BhZ2VMb2FkQ2xpZW50RWZsLmNwcAkocmV2aXNpb24gMTMyMjEwKQorKysgU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL2VmbC9QYWdlTG9hZENsaWVudEVmbC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTEyMiw2ICsxMjIsMTcgQEAKICAgICBld2tfdmlld19sb2FkX3Byb3Zpc2lvbmFsX2ZhaWxl
ZChld2tWaWV3LCBld2tFcnJvci5nZXQoKSk7CiB9CiAKKyNpZiBVU0UoVElMRURfQkFDS0lOR19T
VE9SRSkKK3ZvaWQgUGFnZUxvYWRDbGllbnRFZmw6OmRpZENvbW1pdExvYWRGb3JGcmFtZShXS1Bh
Z2VSZWYsIFdLRnJhbWVSZWYgZnJhbWUsIFdLVHlwZVJlZiwgY29uc3Qgdm9pZCogY2xpZW50SW5m
bykKK3sKKyAgICBpZiAoIVdLRnJhbWVJc01haW5GcmFtZShmcmFtZSkpCisgICAgICAgIHJldHVy
bjsKKworICAgIEV2YXNfT2JqZWN0KiBld2tWaWV3ID0gdG9QYWdlTG9hZENsaWVudEVmbChjbGll
bnRJbmZvKS0+dmlldygpOworICAgIGV3a192aWV3X2xvYWRfY29tbWl0dGVkKGV3a1ZpZXcpOwor
fQorI2VuZGlmCisKIHZvaWQgUGFnZUxvYWRDbGllbnRFZmw6OmRpZENoYW5nZUJhY2tGb3J3YXJk
TGlzdChXS1BhZ2VSZWYsIFdLQmFja0ZvcndhcmRMaXN0SXRlbVJlZiBhZGRlZEl0ZW0sIFdLQXJy
YXlSZWYgcmVtb3ZlZEl0ZW1zLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQogewogICAgIEV2YXNf
T2JqZWN0KiBld2tWaWV3ID0gdG9QYWdlTG9hZENsaWVudEVmbChjbGllbnRJbmZvKS0+dmlldygp
OwpAQCAtMTY4LDYgKzE3OSw5IEBACiAgICAgbG9hZENsaWVudC5kaWRTdGFydFByb3Zpc2lvbmFs
TG9hZEZvckZyYW1lID0gZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZTsKICAgICBsb2Fk
Q2xpZW50LmRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZEZvckZyYW1l
ID0gZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWU7CiAg
ICAgbG9hZENsaWVudC5kaWRGYWlsUHJvdmlzaW9uYWxMb2FkV2l0aEVycm9yRm9yRnJhbWUgPSBk
aWRGYWlsUHJvdmlzaW9uYWxMb2FkV2l0aEVycm9yRm9yRnJhbWU7CisjaWYgVVNFKFRJTEVEX0JB
Q0tJTkdfU1RPUkUpCisgICAgbG9hZENsaWVudC5kaWRDb21taXRMb2FkRm9yRnJhbWUgPSBkaWRD
b21taXRMb2FkRm9yRnJhbWU7CisjZW5kaWYKICAgICBsb2FkQ2xpZW50LmRpZENoYW5nZUJhY2tG
b3J3YXJkTGlzdCA9IGRpZENoYW5nZUJhY2tGb3J3YXJkTGlzdDsKICAgICBsb2FkQ2xpZW50LmRp
ZFNhbWVEb2N1bWVudE5hdmlnYXRpb25Gb3JGcmFtZSA9IGRpZFNhbWVEb2N1bWVudE5hdmlnYXRp
b25Gb3JGcmFtZTsKICAgICBXS1BhZ2VTZXRQYWdlTG9hZGVyQ2xpZW50KHBhZ2VSZWYsICZsb2Fk
Q2xpZW50KTsKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBT
b3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDEzMjIxMCkKKysrIFNvdXJjZS9XZWJL
aXQyL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDc4IEBACisyMDEyLTEwLTIz
ICBZYWVsIEFoYXJvbiAgPHlhZWwuYWhhcm9uQGludGVsLmNvbT4KKworICAgICAgICBbRUZMXVtX
SzJdIFVzZSB0aGUgcG9ydCBpbmRlcGVuZGVudCBQYWdlVmlld3BvcnRDb250cm9sbGVyCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05OTg1MAorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRha2UgUGFnZVZpZXdw
b3J0Q29udHJvbGxlciBpbnRvIHVzZSwgYW5kIHJlbHkgb24gaXQgdG8gY2FsY3VsYXRlCisgICAg
ICAgIHNjcm9sbCBwb3NpdGlvbiBhbmQgem9vbSBsZXZlbC4KKyAgICAgICAgV2l0aCB0aGlzIHBh
dGNoLCB3ZSBjYW4gZG8gaW50cmEgcGFnZSBuYXZpZ2F0aW9uIGFuZCB1c2UgdGhlIHNjcm9sbHdo
ZWVsCisgICAgICAgIHRvIHNjcm9sbCwgd2hlbiBXVEZfVVNFX1RJTEVEX0JBQ0tJTkdfU1RPUkUg
YW5kIGFsbCByZWxhdGVkIGZsYWdzIGFyZSBlbmFibGVkLgorCisgICAgICAgICogQ01ha2VMaXN0
cy50eHQ6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvUGFnZUNsaWVudEltcGwuY3BwOgor
ICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6ZGlkQ2hhbmdlVmlld3BvcnRQcm9wZXJ0
aWVzKToKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6OnBhZ2VEaWRSZXF1ZXN0U2Ny
b2xsKToKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6OmRpZENoYW5nZUNvbnRlbnRz
U2l6ZSk6CisgICAgICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1w
bDo6ZGlkUmVuZGVyRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6cGFn
ZVRyYW5zaXRpb25WaWV3cG9ydFJlYWR5KToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9Q
YWdlQ2xpZW50SW1wbC5oOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFBhZ2VDbGllbnRJ
bXBsKToKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6OnNldFBhZ2VWaWV3cG9ydENv
bnRyb2xsZXIpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZWZsL1BhZ2VWaWV3cG9ydENvbnRy
b2xsZXJDbGllbnRFZmwuY3BwOgorICAgICAgICAoV2ViS2l0OjpQYWdlVmlld3BvcnRDb250cm9s
bGVyQ2xpZW50RWZsOjpQYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50RWZsKToKKyAgICAgICAg
KFdlYktpdDo6UGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudEVmbDo6ZGlzcGxheSk6CisgICAg
ICAgIChXZWJLaXQ6OlBhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnRFZmw6OnVwZGF0ZVZpZXdw
b3J0U2l6ZSk6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGllbnRF
Zmw6OnNldFZpc2libGVDb250ZW50c1JlY3QpOgorICAgICAgICAoV2ViS2l0OjpQYWdlVmlld3Bv
cnRDb250cm9sbGVyQ2xpZW50RWZsOjpkaWRDaGFuZ2VDb250ZW50c1NpemUpOgorICAgICAgICAo
V2ViS2l0OjpQYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50RWZsOjpzZXRWaWV3cG9ydFBvc2l0
aW9uKToKKyAgICAgICAgKFdlYktpdDo6UGFnZVZpZXdwb3J0Q29udHJvbGxlckNsaWVudEVmbDo6
c2V0Q29udGVudHNTY2FsZSk6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VWaWV3cG9ydENvbnRyb2xs
ZXJDbGllbnRFZmw6OmRpZFJlc3VtZUNvbnRlbnQpOgorICAgICAgICAoV2ViS2l0OjpQYWdlVmll
d3BvcnRDb250cm9sbGVyQ2xpZW50RWZsOjpkaWRDaGFuZ2VWaXNpYmxlQ29udGVudHMpOgorICAg
ICAgICAoV2ViS2l0OjpQYWdlVmlld3BvcnRDb250cm9sbGVyQ2xpZW50RWZsOjpzZXRDb250cm9s
bGVyKToKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9QYWdlVmlld3BvcnRDb250cm9sbGVy
Q2xpZW50RWZsLmg6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VWaWV3cG9ydENvbnRyb2xsZXJDbGll
bnRFZmw6OnNjYWxlRmFjdG9yKToKKyAgICAgICAgKFdlYktpdDo6UGFnZVZpZXdwb3J0Q29udHJv
bGxlckNsaWVudEVmbDo6c2Nyb2xsUG9zaXRpb24pOgorICAgICAgICAoUGFnZVZpZXdwb3J0Q29u
dHJvbGxlckNsaWVudEVmbCk6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcu
Y3BwOgorICAgICAgICAoRXdrX1ZpZXdfUHJpdmF0ZV9EYXRhKToKKyAgICAgICAgKG1hcFRvV2Vi
Q29udGVudCk6CisgICAgICAgIChfZXdrX3ZpZXdfc21hcnRfbW91c2Vfd2hlZWwpOgorICAgICAg
ICAoX2V3a192aWV3X3NtYXJ0X21vdXNlX2Rvd24pOgorICAgICAgICAoX2V3a192aWV3X3NtYXJ0
X21vdXNlX3VwKToKKyAgICAgICAgKF9ld2tfdmlld19zbWFydF9tb3VzZV9tb3ZlKToKKyAgICAg
ICAgKF9ld2tfdmlld19pbml0aWFsaXplKToKKyAgICAgICAgKGV3a192aWV3X2xvYWRfY29tbWl0
dGVkKToKKyAgICAgICAgKGV3a192aWV3X2ZlZWRfdG91Y2hfZXZlbnQpOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3X3ByaXZhdGUuaDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
Q29vcmRpbmF0ZWRHcmFwaGljcy9MYXllclRyZWVDb29yZGluYXRvclByb3h5LmNwcDoKKyAgICAg
ICAgKFdlYktpdDo6TGF5ZXJUcmVlQ29vcmRpbmF0b3JQcm94eTo6ZGlkUmVuZGVyRnJhbWUpOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9QYWdlQ2xpZW50Lmg6CisgICAgICAgIChQYWdlQ2xpZW50KToK
KyAgICAgICAgKiBVSVByb2Nlc3MvUGFnZVZpZXdwb3J0Q29udHJvbGxlci5jcHA6CisgICAgICAg
ICogVUlQcm9jZXNzL1BhZ2VWaWV3cG9ydENvbnRyb2xsZXIuaDoKKyAgICAgICAgKiBVSVByb2Nl
c3MvV2ViUGFnZVByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdCk6CisgICAgICAgIChXZWJLaXQ6
OldlYlBhZ2VQcm94eTo6cGFnZVRyYW5zaXRpb25WaWV3cG9ydFJlYWR5KToKKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZVByb3h5OjpkaWRSZW5kZXJGcmFtZSk6CisgICAgICAgICogVUlQcm9jZXNz
L1dlYlBhZ2VQcm94eS5oOgorICAgICAgICAoV2ViUGFnZVByb3h5KToKKyAgICAgICAgKiBVSVBy
b2Nlc3MvV2ViUGFnZVByb3h5Lm1lc3NhZ2VzLmluOgorICAgICAgICAqIFVJUHJvY2Vzcy9lZmwv
UGFnZUxvYWRDbGllbnRFZmwuY3BwOgorICAgICAgICAoV2ViS2l0KToKKyAgICAgICAgKFdlYktp
dDo6UGFnZUxvYWRDbGllbnRFZmw6OmRpZENvbW1pdExvYWRGb3JGcmFtZSk6CisgICAgICAgIChX
ZWJLaXQ6OlBhZ2VMb2FkQ2xpZW50RWZsOjpQYWdlTG9hZENsaWVudEVmbCk6CisgICAgICAgICog
VUlQcm9jZXNzL2VmbC9QYWdlTG9hZENsaWVudEVmbC5oOgorICAgICAgICAoUGFnZUxvYWRDbGll
bnRFZmwpOgorICAgICAgICAqIFVJUHJvY2Vzcy9xdC9XZWJQYWdlUHJveHlRdC5jcHA6CisgICAg
ICAgIChXZWJLaXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNldFVzZXJTY3Jp
cHRzKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHA6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2U6OmRpZENvbXBsZXRlUGFnZVRyYW5zaXRpb24pOgorCiAyMDEyLTEw
LTIzICBSeXVhbiBDaG9pICA8cnl1YW4uY2hvaUBzYW1zdW5nLmNvbT4KIAogICAgICAgICBbRUZM
XVtXSzJdIEFkZCBzdXBwb3J0IGZvciBJTUYgY29tcG9zaXRpb24KSW5kZXg6IFNvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAJKHJldmlzaW9uIDEzMjIxMCkK
KysrIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTg1NCw3ICsxODU0LDcgQEAKIAogdm9pZCBXZWJQYWdlOjpkaWRDb21wbGV0
ZVBhZ2VUcmFuc2l0aW9uKCkKIHsKLSNpZiBQTEFURk9STShRVCkKKyNpZiBVU0UoVElMRURfQkFD
S0lOR19TVE9SRSkKICAgICBpZiAobV9tYWluRnJhbWUtPmNvcmVGcmFtZSgpLT52aWV3KCktPmRl
bGVnYXRlc1Njcm9sbGluZygpKQogICAgICAgICAvLyBXYWl0IHVudGlsIHRoZSBVSSBwcm9jZXNz
IHNlbnQgdXMgdGhlIHZpc2libGUgcmVjdCBpdCB3YW50cyByZW5kZXJlZC4KICAgICAgICAgc2Vu
ZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpQYWdlVHJhbnNpdGlvblZpZXdwb3J0UmVhZHkoKSk7
CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvV2ViS2l0Mi9DTWFrZUxpc3RzLnR4dAkocmV2aXNpb24gMTMyMjEwKQorKysgU291cmNlL1dl
YktpdDIvQ01ha2VMaXN0cy50eHQJKHdvcmtpbmcgY29weSkKQEAgLTIzNyw2ICsyMzcsNyBAQAog
ICAgIFVJUHJvY2Vzcy9HZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmNw
cAogICAgIFVJUHJvY2Vzcy9HZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0UHJveHkuY3BwCiAK
KyAgICBVSVByb2Nlc3MvUGFnZVZpZXdwb3J0Q29udHJvbGxlci5jcHAKICAgICBVSVByb2Nlc3Mv
UmVzcG9uc2l2ZW5lc3NUaW1lci5jcHAKICAgICBVSVByb2Nlc3MvVmlzaXRlZExpbmtQcm92aWRl
ci5jcHAKICAgICBVSVByb2Nlc3MvV2ViQXBwbGljYXRpb25DYWNoZU1hbmFnZXJQcm94eS5jcHAK
</data>

          </attachment>
      

    </bug>

</bugzilla>