<?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>125752</bug_id>
          
          <creation_ts>2013-12-14 20:14:10 -0800</creation_ts>
          <short_desc>WebKit2 View Gestures: Implement smartMagnifyWithEvent: and make it work</short_desc>
          <delta_ts>2013-12-20 13:58:23 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit2</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="Tim Horton">thorton</reporter>
          <assigned_to name="Tim Horton">thorton</assigned_to>
          <cc>andersca</cc>
    
    <cc>mitz</cc>
    
    <cc>sam</cc>
    
    <cc>simon.fraser</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>959897</commentid>
    <comment_count>0</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2013-12-14 20:14:10 -0800</bug_when>
    <thetext>This is &apos;double-tap-to-zoom-on-an-element&apos;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>959899</commentid>
    <comment_count>1</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2013-12-14 20:39:21 -0800</bug_when>
    <thetext>&lt;rdar://problem/15664245&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>961828</commentid>
    <comment_count>2</comment_count>
      <attachid>219750</attachid>
    <who name="Tim Horton">thorton</who>
    <bug_when>2013-12-20 04:25:28 -0800</bug_when>
    <thetext>Created attachment 219750
patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>962000</commentid>
    <comment_count>3</comment_count>
      <attachid>219750</attachid>
    <who name="Anders Carlsson">andersca</who>
    <bug_when>2013-12-20 12:45:23 -0800</bug_when>
    <thetext>Comment on attachment 219750
patch

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

&gt; Source/WebKit2/WebProcess/WebPage/ViewGestureGeometryCollector.h:30
&gt; +#include &lt;WebCore/FloatPoint.h&gt;

No need to include this here, just forward declare FloatPoint.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>962003</commentid>
    <comment_count>4</comment_count>
      <attachid>219750</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2013-12-20 12:51:48 -0800</bug_when>
    <thetext>Comment on attachment 219750
patch

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

&gt; Source/WebKit2/UIProcess/mac/ViewGestureController.cpp:142
&gt; +static float maximumRectangleComponentDelta(FloatRect a, FloatRect b)

Does not compute.

&gt; Source/WebKit2/UIProcess/mac/ViewGestureController.cpp:147
&gt; +void ViewGestureController::didCollectGeometryForSmartMagnificationGesture(FloatPoint origin, FloatRect renderRect, FloatRect visibleContentRect, bool elementIsReplaced)

Maybe isReplacedElement to make it a bit clearer that this is using the CSS &quot;replaced&quot; terminology.

&gt; Source/WebKit2/UIProcess/mac/ViewGestureController.cpp:149
&gt; +    double currentMagnification = m_webPageProxy.pageScaleFactor();

currentScaleFactor?

&gt; Source/WebKit2/WebProcess/WebPage/ViewGestureGeometryCollector.cpp:74
&gt; +    HitTestRequest request(HitTestRequest::ReadOnly | HitTestRequest::Active | HitTestRequest::DisallowShadowContent);
&gt; +    HitTestResult hitTestResult = HitTestResult(scrolledOrigin);
&gt; +    m_webPage.mainFrameView()-&gt;renderView()-&gt;hitTest(request, hitTestResult);
&gt; +
&gt; +    if (hitTestResult.innerNode()) {
&gt; +        bool isReplaced;
&gt; +        FloatRect renderRect = hitTestResult.innerNode()-&gt;renderRect(&amp;isReplaced);
&gt; +        m_webPage.send(Messages::ViewGestureController::DidCollectGeometryForSmartMagnificationGesture(origin, renderRect, visibleContentRect, isReplaced));
&gt; +    }

Does this find things in subframes?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>962015</commentid>
    <comment_count>5</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2013-12-20 13:08:29 -0800</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 219750 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=219750&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/mac/ViewGestureController.cpp:142
&gt; &gt; +static float maximumRectangleComponentDelta(FloatRect a, FloatRect b)
&gt; 
&gt; Does not compute.

We talked about this on IRC. I agree!

&gt; &gt; Source/WebKit2/UIProcess/mac/ViewGestureController.cpp:147
&gt; &gt; +void ViewGestureController::didCollectGeometryForSmartMagnificationGesture(FloatPoint origin, FloatRect renderRect, FloatRect visibleContentRect, bool elementIsReplaced)
&gt; 
&gt; Maybe isReplacedElement to make it a bit clearer that this is using the CSS &quot;replaced&quot; terminology.

Sure.

&gt; &gt; Source/WebKit2/UIProcess/mac/ViewGestureController.cpp:149
&gt; &gt; +    double currentMagnification = m_webPageProxy.pageScaleFactor();
&gt; 
&gt; currentScaleFactor?

Sure.

&gt; &gt; Source/WebKit2/WebProcess/WebPage/ViewGestureGeometryCollector.cpp:74
&gt; &gt; +    HitTestRequest request(HitTestRequest::ReadOnly | HitTestRequest::Active | HitTestRequest::DisallowShadowContent);
&gt; &gt; +    HitTestResult hitTestResult = HitTestResult(scrolledOrigin);
&gt; &gt; +    m_webPage.mainFrameView()-&gt;renderView()-&gt;hitTest(request, hitTestResult);
&gt; &gt; +
&gt; &gt; +    if (hitTestResult.innerNode()) {
&gt; &gt; +        bool isReplaced;
&gt; &gt; +        FloatRect renderRect = hitTestResult.innerNode()-&gt;renderRect(&amp;isReplaced);
&gt; &gt; +        m_webPage.send(Messages::ViewGestureController::DidCollectGeometryForSmartMagnificationGesture(origin, renderRect, visibleContentRect, isReplaced));
&gt; &gt; +    }
&gt; 
&gt; Does this find things in subframes?

No, nor does the existing implementation. We just zoom on the frame instead. Possible room for improvement! (I actually had it returning subframe results at some point, but not mapping the points into the root document space, so it would zoom somewhere wacky).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>962036</commentid>
    <comment_count>6</comment_count>
    <who name="Tim Horton">thorton</who>
    <bug_when>2013-12-20 13:58:23 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/160923</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>219750</attachid>
            <date>2013-12-20 04:25:28 -0800</date>
            <delta_ts>2013-12-20 12:51:48 -0800</delta_ts>
            <desc>patch</desc>
            <filename>smartzoom.diff</filename>
            <type>text/plain</type>
            <size>17663</size>
            <attacher name="Tim Horton">thorton</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA1NGZjYTM5Li5kZDQwODZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQg
QEAKKzIwMTMtMTItMjAgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CisK
KyAgICAgICAgV2ViS2l0MiBWaWV3IEdlc3R1cmVzOiBJbXBsZW1lbnQgc21hcnRNYWduaWZ5V2l0
aEV2ZW50OiBhbmQgbWFrZSBpdCB3b3JrCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xMjU3NTIKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzE1NjY0MjQ1
PgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2Vi
Q29yZS5leHAuaW46CisgICAgICAgIEFkZCBzb21lIGV4cG9ydHMuCisKIDIwMTMtMTItMTkgIFNp
bW9uIEZyYXNlciAgPHNpbW9uLmZyYXNlckBhcHBsZS5jb20+CiAKICAgICAgICAgQ2xhcmlmeSB0
aGUgYmVoYXZpb3Igb2YgY29tcG9zaXRlZCBjYW52YXNlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS5leHAuaW4gYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgppbmRl
eCA3YjAzZTNjLi45NTYxYjA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4
cC5pbgorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmV4cC5pbgpAQCAtMjgzLDYgKzI4Myw3
IEBAIF9fWk43V2ViQ29yZTEzSFRUUEhlYWRlck1hcEMxRXYKIF9fWk43V2ViQ29yZTEzSFRUUEhl
YWRlck1hcEQxRXYKIF9fWk43V2ViQ29yZTEzSGl0VGVzdFJlc3VsdEMxRVJLTlNfMTFMYXlvdXRQ
b2ludEUKIF9fWk43V2ViQ29yZTEzSGl0VGVzdFJlc3VsdEMxRVJLTlNfMTFMYXlvdXRQb2ludEVq
ampqCitfX1pON1dlYkNvcmUxM0hpdFRlc3RSZXN1bHRDMUVSS05TXzE1SGl0VGVzdExvY2F0aW9u
RQogX19aTjdXZWJDb3JlMTNIaXRUZXN0UmVzdWx0QzFFUktTMF8KIF9fWk43V2ViQ29yZTEzSGl0
VGVzdFJlc3VsdEQxRXYKIF9fWk43V2ViQ29yZTEzSWRlbnRpZmllclJlcDNnZXRFUEtjCkBAIC01
NzYsNiArNTc3LDggQEAgX19aTjdXZWJDb3JlMTVHcmFwaGljc0xheWVyQ0FDMkVQTlNfMTlHcmFw
aGljc0xheWVyQ2xpZW50RQogX19aTjdXZWJDb3JlMTVHcmFwaGljc0xheWVyQ0FEMkV2CiBfX1pO
N1dlYkNvcmUxNUdyYXBoaWNzTGF5ZXJDQTE5c2V0Q3VzdG9tQXBwZWFyYW5jZUVOU18xM0dyYXBo
aWNzTGF5ZXIxNkN1c3RvbUFwcGVhcmFuY2VFCiBfX1pON1dlYkNvcmUxNUhpdFRlc3RMb2NhdGlv
bjEycmVjdEZvclBvaW50RVJLTlNfMTFMYXlvdXRQb2ludEVqampqCitfX1pON1dlYkNvcmUxNUhp
dFRlc3RMb2NhdGlvbkMxRVJLTlNfMTBGbG9hdFBvaW50RQorX19aTjdXZWJDb3JlMTVIaXRUZXN0
TG9jYXRpb25EMUV2CiBfX1pON1dlYkNvcmUxNUpTRE9NV2luZG93QmFzZThjb21tb25WTUV2CiBf
X1pON1dlYkNvcmUxNVBhc3RlYm9hcmRJbWFnZUMxRXYKIF9fWk43V2ViQ29yZTE1UGFzdGVib2Fy
ZEltYWdlRDFFdgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNl
L1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IDI2NDg5MGMuLmRhZTU1ZTcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAg
LTEsMyArMSw2NCBAQAorMjAxMy0xMi0yMCAgVGltIEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFw
cGxlLmNvbT4KKworICAgICAgICBXZWJLaXQyIFZpZXcgR2VzdHVyZXM6IEltcGxlbWVudCBzbWFy
dE1hZ25pZnlXaXRoRXZlbnQ6IGFuZCBtYWtlIGl0IHdvcmsKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNTc1MgorICAgICAgICA8cmRhcjovL3Byb2Js
ZW0vMTU2NjQyNDU+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgSW1wbGVtZW50ICJzbWFydCBtYWduaWZ5Iiwgd2hpY2ggaXMgdGhlIGRvdWJsZS10YXAt
dG8tem9vbSBnZXN0dXJlIG9uIE9TIFguCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL21hYy9X
S1ZpZXcubW06CisgICAgICAgICgtW1dLVmlldyBzbWFydE1hZ25pZnlXaXRoRXZlbnQ6XSk6Cisg
ICAgICAgIEZvcndhcmQgc21hcnRNYWduaWZ5V2l0aEV2ZW50IHRvIFZpZXdHZXN0dXJlQ29udHJv
bGxlci4KKworICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvVmlld0dlc3R1cmVDb250cm9sbGVyLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6Vmlld0dlc3R1cmVDb250cm9sbGVyOjpoYW5kbGVNYWduaWZp
Y2F0aW9uR2VzdHVyZSk6CisgICAgICAgIERyaXZlLWJ5IHJlcGFpciBhIGNvbW1lbnQuCisKKyAg
ICAgICAgKFdlYktpdDo6Vmlld0dlc3R1cmVDb250cm9sbGVyOjpoYW5kbGVTbWFydE1hZ25pZmlj
YXRpb25HZXN0dXJlKToKKyAgICAgICAgQWRkZWQuIEltbWVkaWF0ZWx5IGRpc3BhdGNoIGEgbWVz
c2FnZSB0byB0aGUgd2ViIHByb2Nlc3MgdG8gcmV0cmlldmUKKyAgICAgICAgdGhlIHJlbmRlcmVk
IHJlY3Qgb2YgdGhlIGVsZW1lbnQgdW5kZXIgdGhlIGdlc3R1cmUuCisKKyAgICAgICAgKFdlYktp
dDo6bWF4aW11bVJlY3RhbmdsZUNvbXBvbmVudERlbHRhKToKKyAgICAgICAgUmV0dXJuIHRoZSBh
YnNvbHV0ZSBtYXhpbXVtIGRlbHRhIGJldHdlZW4gY29ycmVzcG9uZGluZyBjb21wb25lbnRzIG9m
IHR3byByZWN0cy4KKworICAgICAgICAoV2ViS2l0OjpWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OmRp
ZENvbGxlY3RHZW9tZXRyeUZvclNtYXJ0TWFnbmlmaWNhdGlvbkdlc3R1cmUpOgorICAgICAgICBP
bmNlIHRoZSBXZWJQcm9jZXNzIGhhcyByZXBsaWVkIHdpdGggdGhlIHJlbGV2YW50IGdlb21ldHJ5
LCB1c2UgaXQgdG8KKyAgICAgICAgZGV0ZXJtaW5lIG91ciB0YXJnZXQgcmVjdGFuZ2xlICh0aGUg
ZWxlbWVudCdzIHJlY3QsIHdpdGggc29tZSBwYWRkaW5nKQorICAgICAgICBhbmQgdGFyZ2V0IG1h
Z25pZmljYXRpb24gKGF0dGVtcHRpbmcgdG8ga2VlcCByZXBsYWNlZCBlbGVtZW50cworICAgICAg
ICBmdWxseSBpbi12aWV3LCBhbmQgb3RoZXJ3aXNlIHpvb21pbmcgaW4gYXMgZmFyIGFzIHBvc3Np
YmxlIHRvIGZpdCB0aGUKKyAgICAgICAgZWxlbWVudCdzIHdpZHRoKS4KKworICAgICAgICBJZiB0
aGlzIGdlc3R1cmUgb2NjdXJzIGFmdGVyIHRoZSBwYWdlIGlzIGFscmVhZHkgbWFnbmlmaWVkLCBh
bmQgdGFyZ2V0cworICAgICAgICBhIHNpbWlsYXIgcmVnaW9uIHRvIHRoZSBwcmV2aW91cyBzbWFy
dCBtYWduaWZpY2F0aW9uIGdlc3R1cmUsIHpvb20gb3V0CisgICAgICAgIGluc3RlYWQgb2YgcGFu
bmluZyBhY3Jvc3MgdGhlIHBhZ2UuCisKKyAgICAgICAgQmVnaW4gYSB0cmFuc2llbnQgem9vbSB3
aXRoIHRoZSBjdXJyZW50IG1hZ25pZmljYXRpb24sIGFuZCBpbW1lZGlhdGVseQorICAgICAgICBj
b21taXQgaXQgYXQgb3VyIHRhcmdldCBtYWduaWZpY2F0aW9uIGFuZCBvZmZzZXQsIHNvIHRoYXQg
dGhlIGRyYXdpbmcKKyAgICAgICAgYXJlYSB3aWxsIGFuaW1hdGUgdG8gdGhlIG5ldyBwYXJhbWV0
ZXJzLgorCisgICAgICAgIChXZWJLaXQ6OlZpZXdHZXN0dXJlQ29udHJvbGxlcjo6ZW5kQWN0aXZl
R2VzdHVyZSk6CisgICAgICAgICogVUlQcm9jZXNzL21hYy9WaWV3R2VzdHVyZUNvbnRyb2xsZXIu
aDoKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1ZpZXdHZXN0dXJlQ29udHJvbGxlci5tZXNzYWdl
cy5pbjoKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvVmlld0dlc3R1cmVHZW9tZXRyeUNv
bGxlY3Rvci5jcHA6CisgICAgICAgIChXZWJLaXQ6OlZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0
b3I6OmNvbGxlY3RHZW9tZXRyeUZvclNtYXJ0TWFnbmlmaWNhdGlvbkdlc3R1cmUpOgorICAgICAg
ICBIaXQtdGVzdCB0aGUgZG9jdW1lbnQgdG8gZGV0ZXJtaW5lIHRoZSBub2RlIHVuZGVyIHRoZSBz
bWFydCBtYWduaWZpY2F0aW9uCisgICAgICAgIGdlc3R1cmUsIGFuZCByZXR1cm4gaXQgdG8gdGhl
IFVJIHByb2Nlc3MgYWxvbmcgd2l0aCB2YXJpb3VzIG90aGVyIGJpdHMgb2YgZGF0YS4KKworICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9WaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yLmg6
CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1ZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0
b3IubWVzc2FnZXMuaW46CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENv
cmVBbmltYXRpb25EcmF3aW5nQXJlYS5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9t
YWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEubW06CisgICAgICAgIChXZWJLaXQ6OlRp
bGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjpUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJl
YSk6CisgICAgICAgIChXZWJLaXQ6OlRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhOjphZGp1
c3RUcmFuc2llbnRab29tKToKKyAgICAgICAgKFdlYktpdDo6VGlsZWRDb3JlQW5pbWF0aW9uRHJh
d2luZ0FyZWE6OmNvbW1pdFRyYW5zaWVudFpvb20pOgorICAgICAgICAoV2ViS2l0OjpUaWxlZENv
cmVBbmltYXRpb25EcmF3aW5nQXJlYTo6YXBwbHlUcmFuc2llbnRab29tVG9QYWdlKToKKyAgICAg
ICAgSW5zdGVhZCBvZiBzaG9ydC1jaXJjdWl0aW5nIHRoZSBhbmltYXRpb24gaWYgd2UgZGlkbid0
IGhhdmUgdG8gY29uc3RyYWluCisgICAgICAgIHRoZSBvcmlnaW4sIHNob3J0LWNpcmN1aXQgaWYg
d2UncmUgYWxyZWFkeSAqYXQqIHRoZSByaWdodCBvcmlnaW4sCisgICAgICAgIGxpa2UgdGhlIGNv
bW1lbnQgc2FpZC4gVGhpcyBwcmV2ZW50cyBqYXJyaW5nIGp1bXBzIHdoZW4gZG91YmxlLXRhcC1w
YW5uaW5nCisgICAgICAgIGJldHdlZW4gZWxlbWVudHMgd2hlbiB6b29tZWQgYWxsIHRoZSB3YXkg
aW4uCisKIDIwMTMtMTItMTkgIEJlbmphbWluIFBvdWxhaW4gIDxicG91bGFpbkBhcHBsZS5jb20+
CiAKICAgICAgICAgW1dLMl1baU9TXSBFbmFibGUgbXVsdGlwcm9jZXNzIGJ5IGRlZmF1bHQKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbSBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvbWFjL1dLVmlldy5tbQppbmRleCAxOWNkZjVmLi42
ZTM2NDIwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL21hYy9XS1Zp
ZXcubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9tYWMvV0tWaWV3Lm1tCkBA
IC0zMjIxLDYgKzMyMjEsMTggQEAgc3RhdGljIE5TU3RyaW5nICpwYXRoV2l0aFVuaXF1ZUZpbGVu
YW1lRm9yUGF0aChOU1N0cmluZyAqcGF0aCkKICAgICBfZGF0YS0+X2dlc3R1cmVDb250cm9sbGVy
LT5oYW5kbGVNYWduaWZpY2F0aW9uR2VzdHVyZShldmVudC5tYWduaWZpY2F0aW9uLCBbc2VsZiBj
b252ZXJ0UG9pbnQ6ZXZlbnQubG9jYXRpb25JbldpbmRvdyBmcm9tVmlldzpuaWxdKTsKIH0KIAor
LSAodm9pZClzbWFydE1hZ25pZnlXaXRoRXZlbnQ6KE5TRXZlbnQgKilldmVudAoreworICAgIGlm
ICghX2RhdGEtPl9hbGxvd3NNYWduaWZpY2F0aW9uKSB7CisgICAgICAgIFtzdXBlciBzbWFydE1h
Z25pZnlXaXRoRXZlbnQ6ZXZlbnRdOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgW3Nl
bGYgX2Vuc3VyZUdlc3R1cmVDb250cm9sbGVyXTsKKworICAgIF9kYXRhLT5fZ2VzdHVyZUNvbnRy
b2xsZXItPmhhbmRsZVNtYXJ0TWFnbmlmaWNhdGlvbkdlc3R1cmUoW3NlbGYgY29udmVydFBvaW50
OmV2ZW50LmxvY2F0aW9uSW5XaW5kb3cgZnJvbVZpZXc6bmlsXSk7Cit9CisKIC0odm9pZCllbmRH
ZXN0dXJlV2l0aEV2ZW50OihOU0V2ZW50ICopZXZlbnQKIHsKICAgICBpZiAoIV9kYXRhLT5fZ2Vz
dHVyZUNvbnRyb2xsZXIpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9t
YWMvVmlld0dlc3R1cmVDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9t
YWMvVmlld0dlc3R1cmVDb250cm9sbGVyLmNwcAppbmRleCBlMGE2MGFjLi43YzQwMTMwIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1ZpZXdHZXN0dXJlQ29udHJvbGxl
ci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9WaWV3R2VzdHVyZUNvbnRy
b2xsZXIuY3BwCkBAIC00Miw2ICs0Miw5IEBAIHN0YXRpYyBjb25zdCBkb3VibGUgbWF4RWxhc3Rp
Y01hZ25pZmljYXRpb24gPSA0Owogc3RhdGljIGNvbnN0IGRvdWJsZSB6b29tT3V0Qm9vc3QgPSAx
LjY7CiBzdGF0aWMgY29uc3QgZG91YmxlIHpvb21PdXRSZXNpc3RhbmNlID0gMC4xMDsKIAorc3Rh
dGljIGNvbnN0IGZsb2F0IHNtYXJ0TWFnbmlmaWNhdGlvbkVsZW1lbnRQYWRkaW5nID0gMC4wNTsK
K3N0YXRpYyBjb25zdCBmbG9hdCBzbWFydE1hZ25pZmljYXRpb25QYW5TY3JvbGxUaHJlc2hvbGQg
PSAxMDA7CisKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBWaWV3R2VzdHVyZUNvbnRyb2xsZXI6OlZp
ZXdHZXN0dXJlQ29udHJvbGxlcihXZWJQYWdlUHJveHkmIHdlYlBhZ2VQcm94eSkKQEAgLTEwNCw3
ICsxMDcsNyBAQCB2b2lkIFZpZXdHZXN0dXJlQ29udHJvbGxlcjo6aGFuZGxlTWFnbmlmaWNhdGlv
bkdlc3R1cmUoZG91YmxlIHNjYWxlLCBGbG9hdFBvaW50CiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKLSAgICAvLyBXZSdyZSBzdGlsbCB3YWl0aW5nIGZvciB0aGUgRGlkQmVnaW5UcmFuc2llbnRa
b29tIGNhbGxiYWNrLgorICAgIC8vIFdlJ3JlIHN0aWxsIHdhaXRpbmcgZm9yIHRoZSBEaWRDb2xs
ZWN0R2VvbWV0cnkgY2FsbGJhY2suCiAgICAgaWYgKCFtX3Zpc2libGVDb250ZW50UmVjdElzVmFs
aWQpCiAgICAgICAgIHJldHVybjsKIApAQCAtMTI4LDEwICsxMzEsNjAgQEAgdm9pZCBWaWV3R2Vz
dHVyZUNvbnRyb2xsZXI6OmVuZE1hZ25pZmljYXRpb25HZXN0dXJlKCkKICAgICBtX3dlYlBhZ2VQ
cm94eS5kcmF3aW5nQXJlYSgpLT5jb21taXRUcmFuc2llbnRab29tKG5ld01hZ25pZmljYXRpb24s
IHNjYWxlZE1hZ25pZmljYXRpb25PcmlnaW4obV9tYWduaWZpY2F0aW9uT3JpZ2luLCBuZXdNYWdu
aWZpY2F0aW9uKSk7CiB9CiAKK3ZvaWQgVmlld0dlc3R1cmVDb250cm9sbGVyOjpoYW5kbGVTbWFy
dE1hZ25pZmljYXRpb25HZXN0dXJlKEZsb2F0UG9pbnQgb3JpZ2luKQoreworICAgIGlmIChtX2Fj
dGl2ZUdlc3R1cmVUeXBlICE9IFZpZXdHZXN0dXJlVHlwZTo6Tm9uZSkKKyAgICAgICAgcmV0dXJu
OworCisgICAgbV93ZWJQYWdlUHJveHkucHJvY2VzcygpLnNlbmQoTWVzc2FnZXM6OlZpZXdHZXN0
dXJlR2VvbWV0cnlDb2xsZWN0b3I6OkNvbGxlY3RHZW9tZXRyeUZvclNtYXJ0TWFnbmlmaWNhdGlv
bkdlc3R1cmUob3JpZ2luKSwgbV93ZWJQYWdlUHJveHkucGFnZUlEKCkpOworfQorCitzdGF0aWMg
ZmxvYXQgbWF4aW11bVJlY3RhbmdsZUNvbXBvbmVudERlbHRhKEZsb2F0UmVjdCBhLCBGbG9hdFJl
Y3QgYikKK3sKKyAgICByZXR1cm4gc3RkOjptYXgoZmFicyhhLngoKSAtIGIueCgpKSwgc3RkOjpt
YXgoZmFicyhhLnkoKSAtIGIueSgpKSwgc3RkOjptYXgoZmFicyhhLndpZHRoKCkgLSBiLndpZHRo
KCkpLCBmYWJzKGEuaGVpZ2h0KCkgLSBiLmhlaWdodCgpKSkpKTsKK30KKwordm9pZCBWaWV3R2Vz
dHVyZUNvbnRyb2xsZXI6OmRpZENvbGxlY3RHZW9tZXRyeUZvclNtYXJ0TWFnbmlmaWNhdGlvbkdl
c3R1cmUoRmxvYXRQb2ludCBvcmlnaW4sIEZsb2F0UmVjdCByZW5kZXJSZWN0LCBGbG9hdFJlY3Qg
dmlzaWJsZUNvbnRlbnRSZWN0LCBib29sIGVsZW1lbnRJc1JlcGxhY2VkKQoreworICAgIGRvdWJs
ZSBjdXJyZW50TWFnbmlmaWNhdGlvbiA9IG1fd2ViUGFnZVByb3h5LnBhZ2VTY2FsZUZhY3Rvcigp
OworCisgICAgRmxvYXRSZWN0IHVuc2NhbGVkVGFyZ2V0UmVjdCA9IHJlbmRlclJlY3Q7CisgICAg
dW5zY2FsZWRUYXJnZXRSZWN0LnNjYWxlKDEgLyBjdXJyZW50TWFnbmlmaWNhdGlvbik7CisgICAg
dW5zY2FsZWRUYXJnZXRSZWN0LmluZmxhdGVYKHVuc2NhbGVkVGFyZ2V0UmVjdC53aWR0aCgpICog
c21hcnRNYWduaWZpY2F0aW9uRWxlbWVudFBhZGRpbmcpOworICAgIHVuc2NhbGVkVGFyZ2V0UmVj
dC5pbmZsYXRlWSh1bnNjYWxlZFRhcmdldFJlY3QuaGVpZ2h0KCkgKiBzbWFydE1hZ25pZmljYXRp
b25FbGVtZW50UGFkZGluZyk7CisKKyAgICBkb3VibGUgdGFyZ2V0TWFnbmlmaWNhdGlvbiA9IHZp
c2libGVDb250ZW50UmVjdC53aWR0aCgpIC8gdW5zY2FsZWRUYXJnZXRSZWN0LndpZHRoKCk7CisK
KyAgICAvLyBGb3IgcmVwbGFjZWQgZWxlbWVudHMgbGlrZSBpbWFnZXMsIHdlIHdhbnQgdG8gZml0
IHRoZSB3aG9sZSBlbGVtZW50CisgICAgLy8gaW4gdGhlIHZpZXcsIHNvIHNjYWxlIGl0IGRvd24g
ZW5vdWdoIHRvIG1ha2UgYm90aCBkaW1lbnNpb25zIGZpdCBpZiBwb3NzaWJsZS4KKyAgICBpZiAo
ZWxlbWVudElzUmVwbGFjZWQpCisgICAgICAgIHRhcmdldE1hZ25pZmljYXRpb24gPSBzdGQ6Om1p
bih0YXJnZXRNYWduaWZpY2F0aW9uLCBzdGF0aWNfY2FzdDxkb3VibGU+KHZpc2libGVDb250ZW50
UmVjdC5oZWlnaHQoKSAvIHVuc2NhbGVkVGFyZ2V0UmVjdC5oZWlnaHQoKSkpOworCisgICAgdGFy
Z2V0TWFnbmlmaWNhdGlvbiA9IHN0ZDo6bWluKHN0ZDo6bWF4KHRhcmdldE1hZ25pZmljYXRpb24s
IG1pbk1hZ25pZmljYXRpb24pLCBtYXhNYWduaWZpY2F0aW9uKTsKKworICAgIC8vIEFsbG93IHBh
bm5pbmcgYmV0d2VlbiBlbGVtZW50cyB2aWEgZG91YmxlLXRhcCB3aGlsZSBtYWduaWZpZWQsIHVu
bGVzcyB0aGUgdGFyZ2V0IHJlY3QgaXMKKyAgICAvLyBzaW1pbGFyIHRvIHRoZSBsYXN0IG9uZSwg
aW4gd2hpY2ggY2FzZSB3ZSdsbCB6b29tIGFsbCB0aGUgd2F5IG91dC4KKyAgICBpZiAoY3VycmVu
dE1hZ25pZmljYXRpb24gPiAxCisgICAgICAgICYmICFtX2xhc3RTbWFydE1hZ25pZmljYXRpb25V
bnNjYWxlZFRhcmdldFJlY3QuaXNFbXB0eSgpCisgICAgICAgICYmIG1heGltdW1SZWN0YW5nbGVD
b21wb25lbnREZWx0YShtX2xhc3RTbWFydE1hZ25pZmljYXRpb25VbnNjYWxlZFRhcmdldFJlY3Qs
IHVuc2NhbGVkVGFyZ2V0UmVjdCkgPCBzbWFydE1hZ25pZmljYXRpb25QYW5TY3JvbGxUaHJlc2hv
bGQpCisgICAgICAgIHRhcmdldE1hZ25pZmljYXRpb24gPSAxOworCisgICAgRmxvYXRSZWN0IHRh
cmdldFJlY3QodW5zY2FsZWRUYXJnZXRSZWN0KTsKKyAgICB0YXJnZXRSZWN0LnNjYWxlKHRhcmdl
dE1hZ25pZmljYXRpb24pOworICAgIEZsb2F0UG9pbnQgdGFyZ2V0T3JpZ2luKHZpc2libGVDb250
ZW50UmVjdC5jZW50ZXIoKSk7CisgICAgdGFyZ2V0T3JpZ2luLm1vdmVCeSgtdGFyZ2V0UmVjdC5j
ZW50ZXIoKSk7CisKKyAgICBtX3dlYlBhZ2VQcm94eS5kcmF3aW5nQXJlYSgpLT5hZGp1c3RUcmFu
c2llbnRab29tKG1fd2ViUGFnZVByb3h5LnBhZ2VTY2FsZUZhY3RvcigpLCBzY2FsZWRNYWduaWZp
Y2F0aW9uT3JpZ2luKEZsb2F0UG9pbnQoKSwgbV93ZWJQYWdlUHJveHkucGFnZVNjYWxlRmFjdG9y
KCkpKTsKKyAgICBtX3dlYlBhZ2VQcm94eS5kcmF3aW5nQXJlYSgpLT5jb21taXRUcmFuc2llbnRa
b29tKHRhcmdldE1hZ25pZmljYXRpb24sIHRhcmdldE9yaWdpbik7CisKKyAgICBtX2xhc3RTbWFy
dE1hZ25pZmljYXRpb25VbnNjYWxlZFRhcmdldFJlY3QgPSB1bnNjYWxlZFRhcmdldFJlY3Q7Cit9
CisKIHZvaWQgVmlld0dlc3R1cmVDb250cm9sbGVyOjplbmRBY3RpdmVHZXN0dXJlKCkKIHsKICAg
ICBzd2l0Y2ggKG1fYWN0aXZlR2VzdHVyZVR5cGUpIHsKICAgICBjYXNlIFZpZXdHZXN0dXJlVHlw
ZTo6Tm9uZToKKyAgICBjYXNlIFZpZXdHZXN0dXJlVHlwZTo6U21hcnRNYWduaWZpY2F0aW9uOgog
ICAgICAgICBicmVhazsKICAgICBjYXNlIFZpZXdHZXN0dXJlVHlwZTo6TWFnbmlmaWNhdGlvbjoK
ICAgICAgICAgZW5kTWFnbmlmaWNhdGlvbkdlc3R1cmUoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9tYWMvVmlld0dlc3R1cmVDb250cm9sbGVyLmggYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvbWFjL1ZpZXdHZXN0dXJlQ29udHJvbGxlci5oCmluZGV4IDI5MDBhNmYu
LmQ2NmViOGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvVmlld0dl
c3R1cmVDb250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9WaWV3
R2VzdHVyZUNvbnRyb2xsZXIuaApAQCAtMzksMTQgKzM5LDE3IEBAIHB1YmxpYzoKICAgICBWaWV3
R2VzdHVyZUNvbnRyb2xsZXIoV2ViUGFnZVByb3h5Jik7CiAgICAgflZpZXdHZXN0dXJlQ29udHJv
bGxlcigpOwogCi0gICAgdm9pZCBoYW5kbGVNYWduaWZpY2F0aW9uR2VzdHVyZShkb3VibGUgc2Nh
bGUsIFdlYkNvcmU6OkZsb2F0UG9pbnQgb3JpZ2luKTsKICAgICBkb3VibGUgbWFnbmlmaWNhdGlv
bigpIGNvbnN0OwogCisgICAgdm9pZCBoYW5kbGVNYWduaWZpY2F0aW9uR2VzdHVyZShkb3VibGUg
c2NhbGUsIFdlYkNvcmU6OkZsb2F0UG9pbnQgb3JpZ2luKTsKKyAgICB2b2lkIGhhbmRsZVNtYXJ0
TWFnbmlmaWNhdGlvbkdlc3R1cmUoV2ViQ29yZTo6RmxvYXRQb2ludCBvcmlnaW4pOworCiAgICAg
dm9pZCBlbmRBY3RpdmVHZXN0dXJlKCk7CiAKICAgICBlbnVtIGNsYXNzIFZpZXdHZXN0dXJlVHlw
ZSB7CiAgICAgICAgIE5vbmUsCiAgICAgICAgIE1hZ25pZmljYXRpb24sCisgICAgICAgIFNtYXJ0
TWFnbmlmaWNhdGlvbiwKICAgICB9OwogCiBwcml2YXRlOgpAQCAtNTUsNiArNTgsNyBAQCBwcml2
YXRlOgogCiAgICAgLy8gTWVzc2FnZSBoYW5kbGVycy4KICAgICB2b2lkIGRpZENvbGxlY3RHZW9t
ZXRyeUZvck1hZ25pZmljYXRpb25HZXN0dXJlKFdlYkNvcmU6OkZsb2F0UmVjdCB2aXNpYmxlQ29u
dGVudEJvdW5kcyk7CisgICAgdm9pZCBkaWRDb2xsZWN0R2VvbWV0cnlGb3JTbWFydE1hZ25pZmlj
YXRpb25HZXN0dXJlKFdlYkNvcmU6OkZsb2F0UG9pbnQgb3JpZ2luLCBXZWJDb3JlOjpGbG9hdFJl
Y3QgcmVuZGVyUmVjdCwgV2ViQ29yZTo6RmxvYXRSZWN0IHZpc2libGVDb250ZW50Qm91bmRzLCBi
b29sIGVsZW1lbnRJc1JlcGxhY2VkKTsKIAogICAgIHZvaWQgZW5kTWFnbmlmaWNhdGlvbkdlc3R1
cmUoKTsKICAgICBXZWJDb3JlOjpGbG9hdFBvaW50IHNjYWxlZE1hZ25pZmljYXRpb25PcmlnaW4o
V2ViQ29yZTo6RmxvYXRQb2ludCBvcmlnaW4sIGRvdWJsZSBzY2FsZSk7CkBAIC02NCw2ICs2OCw4
IEBAIHByaXZhdGU6CiAgICAgZG91YmxlIG1fbWFnbmlmaWNhdGlvbjsKICAgICBXZWJDb3JlOjpG
bG9hdFBvaW50IG1fbWFnbmlmaWNhdGlvbk9yaWdpbjsKIAorICAgIFdlYkNvcmU6OkZsb2F0UmVj
dCBtX2xhc3RTbWFydE1hZ25pZmljYXRpb25VbnNjYWxlZFRhcmdldFJlY3Q7CisKICAgICBWaWV3
R2VzdHVyZVR5cGUgbV9hY3RpdmVHZXN0dXJlVHlwZTsKIAogICAgIFdlYkNvcmU6OkZsb2F0UmVj
dCBtX3Zpc2libGVDb250ZW50UmVjdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9tYWMvVmlld0dlc3R1cmVDb250cm9sbGVyLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL21hYy9WaWV3R2VzdHVyZUNvbnRyb2xsZXIubWVzc2FnZXMuaW4KaW5kZXgg
YmYyOWQ4ZC4uNDYwYzVlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21h
Yy9WaWV3R2VzdHVyZUNvbnRyb2xsZXIubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL21hYy9WaWV3R2VzdHVyZUNvbnRyb2xsZXIubWVzc2FnZXMuaW4KQEAgLTIyLDQg
KzIyLDUgQEAKIAogbWVzc2FnZXMgLT4gVmlld0dlc3R1cmVDb250cm9sbGVyIHsKICAgICBEaWRD
b2xsZWN0R2VvbWV0cnlGb3JNYWduaWZpY2F0aW9uR2VzdHVyZShXZWJDb3JlOjpGbG9hdFJlY3Qg
dmlzaWJsZUNvbnRlbnRCb3VuZHMpCisgICAgRGlkQ29sbGVjdEdlb21ldHJ5Rm9yU21hcnRNYWdu
aWZpY2F0aW9uR2VzdHVyZShXZWJDb3JlOjpGbG9hdFBvaW50IG9yaWdpbiwgV2ViQ29yZTo6Rmxv
YXRSZWN0IHJlbmRlclJlY3QsIFdlYkNvcmU6OkZsb2F0UmVjdCB2aXNpYmxlQ29udGVudEJvdW5k
cywgYm9vbCBlbGVtZW50SXNSZXBsYWNlZCkKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvV2ViUGFnZS9WaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yLmNwcCBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9WaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVj
dG9yLmNwcAppbmRleCBjNzc0YzQzLi5mNDhlYWQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvVmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvci5jcHAKKysr
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1ZpZXdHZXN0dXJlR2VvbWV0cnlD
b2xsZWN0b3IuY3BwCkBAIC0zMiw2ICszMiw4IEBACiAjaW5jbHVkZSAiV2ViUGFnZS5oIgogI2lu
Y2x1ZGUgIldlYlByb2Nlc3MuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0ZyYW1lVmlldy5oPgorI2lu
Y2x1ZGUgPFdlYkNvcmUvSGl0VGVzdFJlc3VsdC5oPgorI2luY2x1ZGUgPFdlYkNvcmUvUmVuZGVy
Vmlldy5oPgogCiB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIApAQCAtNTQsNCArNTYsMjIgQEAg
dm9pZCBWaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yOjpjb2xsZWN0R2VvbWV0cnlGb3JNYWdu
aWZpY2F0aW9uR2VzdHVyZSgpCiAgICAgbV93ZWJQYWdlLnNlbmQoTWVzc2FnZXM6OlZpZXdHZXN0
dXJlQ29udHJvbGxlcjo6RGlkQ29sbGVjdEdlb21ldHJ5Rm9yTWFnbmlmaWNhdGlvbkdlc3R1cmUo
dmlzaWJsZUNvbnRlbnRSZWN0KSk7CiB9CiAKK3ZvaWQgVmlld0dlc3R1cmVHZW9tZXRyeUNvbGxl
Y3Rvcjo6Y29sbGVjdEdlb21ldHJ5Rm9yU21hcnRNYWduaWZpY2F0aW9uR2VzdHVyZShGbG9hdFBv
aW50IG9yaWdpbikKK3sKKyAgICBGbG9hdFJlY3QgdmlzaWJsZUNvbnRlbnRSZWN0ID0gbV93ZWJQ
YWdlLm1haW5GcmFtZVZpZXcoKS0+dmlzaWJsZUNvbnRlbnRSZWN0KFNjcm9sbGFibGVBcmVhOjpJ
bmNsdWRlU2Nyb2xsYmFycyk7CisKKyAgICBGbG9hdFBvaW50IHNjcm9sbGVkT3JpZ2luID0gb3Jp
Z2luOworICAgIHNjcm9sbGVkT3JpZ2luLm1vdmVCeShtX3dlYlBhZ2UubWFpbkZyYW1lVmlldygp
LT5zY3JvbGxQb3NpdGlvbigpKTsKKworICAgIEhpdFRlc3RSZXF1ZXN0IHJlcXVlc3QoSGl0VGVz
dFJlcXVlc3Q6OlJlYWRPbmx5IHwgSGl0VGVzdFJlcXVlc3Q6OkFjdGl2ZSB8IEhpdFRlc3RSZXF1
ZXN0OjpEaXNhbGxvd1NoYWRvd0NvbnRlbnQpOworICAgIEhpdFRlc3RSZXN1bHQgaGl0VGVzdFJl
c3VsdCA9IEhpdFRlc3RSZXN1bHQoc2Nyb2xsZWRPcmlnaW4pOworICAgIG1fd2ViUGFnZS5tYWlu
RnJhbWVWaWV3KCktPnJlbmRlclZpZXcoKS0+aGl0VGVzdChyZXF1ZXN0LCBoaXRUZXN0UmVzdWx0
KTsKKworICAgIGlmIChoaXRUZXN0UmVzdWx0LmlubmVyTm9kZSgpKSB7CisgICAgICAgIGJvb2wg
aXNSZXBsYWNlZDsKKyAgICAgICAgRmxvYXRSZWN0IHJlbmRlclJlY3QgPSBoaXRUZXN0UmVzdWx0
LmlubmVyTm9kZSgpLT5yZW5kZXJSZWN0KCZpc1JlcGxhY2VkKTsKKyAgICAgICAgbV93ZWJQYWdl
LnNlbmQoTWVzc2FnZXM6OlZpZXdHZXN0dXJlQ29udHJvbGxlcjo6RGlkQ29sbGVjdEdlb21ldHJ5
Rm9yU21hcnRNYWduaWZpY2F0aW9uR2VzdHVyZShvcmlnaW4sIHJlbmRlclJlY3QsIHZpc2libGVD
b250ZW50UmVjdCwgaXNSZXBsYWNlZCkpOworICAgIH0KK30KKwogfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvVmlld0dl
c3R1cmVHZW9tZXRyeUNvbGxlY3Rvci5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL1ZpZXdHZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3IuaAppbmRleCA3ZjdiYTU5Li44NmQ0NGE1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvVmlld0dlc3R1
cmVHZW9tZXRyeUNvbGxlY3Rvci5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9WaWV3R2VzdHVyZUdlb21ldHJ5Q29sbGVjdG9yLmgKQEAgLTI3LDYgKzI3LDcgQEAKICNk
ZWZpbmUgVmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvcl9oCiAKICNpbmNsdWRlICJNZXNzYWdl
UmVjZWl2ZXIuaCIKKyNpbmNsdWRlIDxXZWJDb3JlL0Zsb2F0UG9pbnQuaD4KIAogbmFtZXNwYWNl
IFdlYktpdCB7CiAKQEAgLTQzLDYgKzQ0LDcgQEAgcHJpdmF0ZToKIAogICAgIC8vIE1lc3NhZ2Ug
aGFuZGxlcnMuCiAgICAgdm9pZCBjb2xsZWN0R2VvbWV0cnlGb3JNYWduaWZpY2F0aW9uR2VzdHVy
ZSgpOworICAgIHZvaWQgY29sbGVjdEdlb21ldHJ5Rm9yU21hcnRNYWduaWZpY2F0aW9uR2VzdHVy
ZShXZWJDb3JlOjpGbG9hdFBvaW50IG9yaWdpbik7CiAKICAgICBXZWJQYWdlJiBtX3dlYlBhZ2U7
CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1ZpZXdH
ZXN0dXJlR2VvbWV0cnlDb2xsZWN0b3IubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlBhZ2UvVmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvci5tZXNzYWdlcy5pbgpp
bmRleCBiZWY4NjZmLi42NWVhYTU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvVmlld0dlc3R1cmVHZW9tZXRyeUNvbGxlY3Rvci5tZXNzYWdlcy5pbgorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvVmlld0dlc3R1cmVHZW9tZXRyeUNv
bGxlY3Rvci5tZXNzYWdlcy5pbgpAQCAtMjMsNSArMjMsNiBAQAogbWVzc2FnZXMgLT4gVmlld0dl
c3R1cmVHZW9tZXRyeUNvbGxlY3RvciB7CiAKIENvbGxlY3RHZW9tZXRyeUZvck1hZ25pZmljYXRp
b25HZXN0dXJlKCkKK0NvbGxlY3RHZW9tZXRyeUZvclNtYXJ0TWFnbmlmaWNhdGlvbkdlc3R1cmUo
V2ViQ29yZTo6RmxvYXRQb2ludCBvcmlnaW4pCiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWEu
aCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0
aW9uRHJhd2luZ0FyZWEuaAppbmRleCA5YmRkMmRjLi5mMjczN2I5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVkQ29yZUFuaW1hdGlvbkRyYXdp
bmdBcmVhLmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxl
ZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5oCkBAIC0xNDksNiArMTQ5LDcgQEAgcHJpdmF0ZToK
ICAgICBib29sIG1faW5VcGRhdGVHZW9tZXRyeTsKIAogICAgIGRvdWJsZSBtX3RyYW5zaWVudFpv
b21TY2FsZTsKKyAgICBXZWJDb3JlOjpGbG9hdFBvaW50IG1fdHJhbnNpZW50Wm9vbU9yaWdpbjsK
IH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYS5tbSBi
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9tYWMvVGlsZWRDb3JlQW5pbWF0aW9u
RHJhd2luZ0FyZWEubW0KaW5kZXggYjA5MjY4OS4uNzc4YjRjZiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL21hYy9UaWxlZENvcmVBbmltYXRpb25EcmF3aW5n
QXJlYS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvbWFjL1RpbGVk
Q29yZUFuaW1hdGlvbkRyYXdpbmdBcmVhLm1tCkBAIC03Myw2ICs3Myw3IEBAIFRpbGVkQ29yZUFu
aW1hdGlvbkRyYXdpbmdBcmVhOjpUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYShXZWJQYWdl
KiB3ZWJQYWdlLCBjCiAgICAgLCBtX2lzUGFpbnRpbmdTdXNwZW5kZWQoIShwYXJhbWV0ZXJzLnZp
ZXdTdGF0ZSAmIFZpZXdTdGF0ZTo6SXNWaXNpYmxlKSkKICAgICAsIG1fY2xpcHNUb0V4cG9zZWRS
ZWN0KGZhbHNlKQogICAgICwgbV91cGRhdGVJbnRyaW5zaWNDb250ZW50U2l6ZVRpbWVyKHRoaXMs
ICZUaWxlZENvcmVBbmltYXRpb25EcmF3aW5nQXJlYTo6dXBkYXRlSW50cmluc2ljQ29udGVudFNp
emVUaW1lckZpcmVkKQorICAgICwgbV90cmFuc2llbnRab29tU2NhbGUoMSkKIHsKICAgICBtX3dl
YlBhZ2UtPmNvcmVQYWdlKCktPnNldHRpbmdzKCkuc2V0Rm9yY2VDb21wb3NpdGluZ01vZGUodHJ1
ZSk7CiAKQEAgLTcyOSw2ICs3MzAsNyBAQCB2b2lkIFRpbGVkQ29yZUFuaW1hdGlvbkRyYXdpbmdB
cmVhOjphZGp1c3RUcmFuc2llbnRab29tKGRvdWJsZSBzY2FsZSwgRmxvYXRQb2ludAogICAgIHNo
YWRvd0xheWVyLT5zZXRQb3NpdGlvbihvcmlnaW4gKyBzaGFkb3dCb3VuZHMuY2VudGVyKCkpOwog
CiAgICAgbV90cmFuc2llbnRab29tU2NhbGUgPSBzY2FsZTsKKyAgICBtX3RyYW5zaWVudFpvb21P
cmlnaW4gPSBvcmlnaW47CiB9CiAKIHN0YXRpYyBSZXRhaW5QdHI8Q0FCYXNpY0FuaW1hdGlvbj4g
dHJhbnNpZW50Wm9vbVNuYXBBbmltYXRpb25Gb3JLZXlQYXRoKFN0cmluZyBrZXlQYXRoKQpAQCAt
NzY1LDcgKzc2Nyw3IEBAIHZvaWQgVGlsZWRDb3JlQW5pbWF0aW9uRHJhd2luZ0FyZWE6OmNvbW1p
dFRyYW5zaWVudFpvb20oZG91YmxlIHNjYWxlLCBGbG9hdFBvaW50CiAgICAgY29uc3RyYWluZWRP
cmlnaW4ubW92ZUJ5KC12aXNpYmxlQ29udGVudFJlY3QubG9jYXRpb24oKSk7CiAgICAgY29uc3Ry
YWluZWRPcmlnaW4gPSAtY29uc3RyYWluZWRPcmlnaW47CiAKLSAgICBpZiAobV90cmFuc2llbnRa
b29tU2NhbGUgPT0gc2NhbGUgJiYgcm91bmRlZEludFBvaW50KG9yaWdpbikgPT0gcm91bmRlZElu
dFBvaW50KGNvbnN0cmFpbmVkT3JpZ2luKSkgeworICAgIGlmIChtX3RyYW5zaWVudFpvb21TY2Fs
ZSA9PSBzY2FsZSAmJiByb3VuZGVkSW50UG9pbnQobV90cmFuc2llbnRab29tT3JpZ2luKSA9PSBy
b3VuZGVkSW50UG9pbnQoY29uc3RyYWluZWRPcmlnaW4pKSB7CiAgICAgICAgIC8vIFdlJ3JlIGFs
cmVhZHkgYXQgdGhlIHJpZ2h0IHNjYWxlIGFuZCBwb3NpdGlvbiwgc28gd2UgZG9uJ3QgbmVlZCB0
byBhbmltYXRlLgogICAgICAgICBhcHBseVRyYW5zaWVudFpvb21Ub1BhZ2Uoc2NhbGUsIG9yaWdp
bik7CiAgICAgICAgIHJldHVybjsKQEAgLTgyOSw2ICs4MzEsOCBAQCB2b2lkIFRpbGVkQ29yZUFu
aW1hdGlvbkRyYXdpbmdBcmVhOjphcHBseVRyYW5zaWVudFpvb21Ub1BhZ2UoZG91YmxlIHNjYWxl
LCBGbG9hdAogICAgIHVuc2Nyb2xsZWRPcmlnaW4ubW92ZUJ5KC12aXNpYmxlQ29udGVudFJlY3Qu
bG9jYXRpb24oKSk7CiAgICAgbV93ZWJQYWdlLT5zY2FsZVBhZ2Uoc2NhbGUsIHJvdW5kZWRJbnRQ
b2ludCgtdW5zY3JvbGxlZE9yaWdpbikpOwogICAgIGZsdXNoTGF5ZXJzKCk7CisKKyAgICBtX3Ry
YW5zaWVudFpvb21TY2FsZSA9IDE7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAo=
</data>
<flag name="review"
          id="243417"
          type_id="1"
          status="+"
          setter="andersca"
    />
          </attachment>
      

    </bug>

</bugzilla>