<?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>150993</bug_id>
          
          <creation_ts>2015-11-06 19:01:06 -0800</creation_ts>
          <short_desc>Web Inspector: Batch all scheduled layouts and update the view tree in a single animation frame</short_desc>
          <delta_ts>2015-11-10 14:31:25 -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>Web Inspector</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>151058</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Matt Baker">mattbaker</reporter>
          <assigned_to name="Matt Baker">mattbaker</assigned_to>
          <cc>bburg</cc>
    
    <cc>commit-queue</cc>
    
    <cc>graouts</cc>
    
    <cc>joepeck</cc>
    
    <cc>mattbaker</cc>
    
    <cc>nvasilyev</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>timothy</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1140138</commentid>
    <comment_count>0</comment_count>
    <who name="Matt Baker">mattbaker</who>
    <bug_when>2015-11-06 19:01:06 -0800</bug_when>
    <thetext>* SUMMARY
Batch all scheduled updates and layout view tree in a single animation frame.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1140139</commentid>
    <comment_count>1</comment_count>
      <attachid>264990</attachid>
    <who name="Matt Baker">mattbaker</who>
    <bug_when>2015-11-06 19:13:05 -0800</bug_when>
    <thetext>Created attachment 264990
[Patch] WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1140143</commentid>
    <comment_count>2</comment_count>
    <who name="Matt Baker">mattbaker</who>
    <bug_when>2015-11-06 19:32:23 -0800</bug_when>
    <thetext>Noticed a bug in View._unscheduleLayoutForView. Will fix for the next WIP.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1140144</commentid>
    <comment_count>3</comment_count>
    <who name="Matt Baker">mattbaker</who>
    <bug_when>2015-11-06 19:34:05 -0800</bug_when>
    <thetext>While trying out this change I noticed that View._visitViewTreeForLayout is called *very* rarely. Almost every scheduled animation frame is canceled by a forced layout (a call to View.updateLayout). I suspect we&apos;re performing synchronous layouts when scheduled layouts would suffice.

AFAIK, there are only two cases where updateLayout must be used instead of needsLayout:

1) An element&apos;s position/size must be read after updating styles, etc, in order to lay out a related part of the UI. NavigationBar is an example of this.
2) Responsiveness of layouts in quick succession is needed, such as when resizing a sidebar or other &quot;split&quot; view.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1140150</commentid>
    <comment_count>4</comment_count>
      <attachid>264990</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2015-11-06 20:17:10 -0800</bug_when>
    <thetext>Comment on attachment 264990
[Patch] WIP

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

Nifty.

&gt; Source/WebInspectorUI/UserInterface/Views/View.js:174
&gt; +        this._dirty = false;

This should probably also set this._dirtyDescendants = 0, if you are keeping that value up to date.

&gt; Source/WebInspectorUI/UserInterface/Views/View.js:220
&gt; +        let viewStack = [[WebInspector.View._rootView]];
&gt; +        while (viewStack.length) {

An array of arrays of views sounds unnecessarily complicated. How about just an array of views?:

    let views = [View._rootView];
    while (views.length) {
        let view = views.shift();
        if (view.dirty)
            view._layoutSubtree();
        else {
            views = views.concat(view.subviews);
            view._dirtyDescendants = 0;
        }
    }

Note:
  - this takes into account _layoutSubtree re-setting dirtyDescendants.
  - no need to create a copy of the subviews lists if you don&apos;t modify those lists directly, here we just add the values to the main list
  - JoePeck Fun Fact: &quot;WebInspector.View&quot; can just be &quot;View&quot; in this case, because we are inside &quot;class View {...}&quot; scope!

Or just use the recursive solution, since the depth of our view tree should not be large at all.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1140200</commentid>
    <comment_count>5</comment_count>
      <attachid>264990</attachid>
    <who name="Timothy Hatcher">timothy</who>
    <bug_when>2015-11-07 13:38:02 -0800</bug_when>
    <thetext>Comment on attachment 264990
[Patch] WIP

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

&gt; Source/WebInspectorUI/UserInterface/Views/TimelineRuler.js:212
&gt; -        if (!this._endTimePinned &amp;&amp; this.layoutPending)
&gt; +        if (!this._endTimePinned &amp;&amp; this.dirty)

I like the layoutPending name better, at least as a public API.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1140201</commentid>
    <comment_count>6</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2015-11-07 13:38:23 -0800</bug_when>
    <thetext>&lt;rdar://problem/23454092&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1140280</commentid>
    <comment_count>7</comment_count>
      <attachid>264990</attachid>
    <who name="Matt Baker">mattbaker</who>
    <bug_when>2015-11-08 17:20:10 -0800</bug_when>
    <thetext>Comment on attachment 264990
[Patch] WIP

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

&gt;&gt; Source/WebInspectorUI/UserInterface/Views/TimelineRuler.js:212
&gt;&gt; +        if (!this._endTimePinned &amp;&amp; this.dirty)
&gt; 
&gt; I like the layoutPending name better, at least as a public API.

It does look better. We might want to keep the private variable named this._dirty, since it&apos;s consistent with this._dirtyDescendants.

&gt;&gt; Source/WebInspectorUI/UserInterface/Views/View.js:220
&gt;&gt; +        while (viewStack.length) {
&gt; 
&gt; An array of arrays of views sounds unnecessarily complicated. How about just an array of views?:
&gt; 
&gt;     let views = [View._rootView];
&gt;     while (views.length) {
&gt;         let view = views.shift();
&gt;         if (view.dirty)
&gt;             view._layoutSubtree();
&gt;         else {
&gt;             views = views.concat(view.subviews);
&gt;             view._dirtyDescendants = 0;
&gt;         }
&gt;     }
&gt; 
&gt; Note:
&gt;   - this takes into account _layoutSubtree re-setting dirtyDescendants.
&gt;   - no need to create a copy of the subviews lists if you don&apos;t modify those lists directly, here we just add the values to the main list
&gt;   - JoePeck Fun Fact: &quot;WebInspector.View&quot; can just be &quot;View&quot; in this case, because we are inside &quot;class View {...}&quot; scope!
&gt; 
&gt; Or just use the recursive solution, since the depth of our view tree should not be large at all.

I was on autopilot and wrote it as a depth-first traversal. Definitely not the behavior we want. Nice catch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1140567</commentid>
    <comment_count>8</comment_count>
      <attachid>265107</attachid>
    <who name="Matt Baker">mattbaker</who>
    <bug_when>2015-11-09 15:41:55 -0800</bug_when>
    <thetext>Created attachment 265107
[Patch] Proposed Fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1140906</commentid>
    <comment_count>9</comment_count>
      <attachid>265107</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2015-11-10 12:45:03 -0800</bug_when>
    <thetext>Comment on attachment 265107
[Patch] Proposed Fix

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

r=me, nice work

&gt; Source/WebInspectorUI/UserInterface/Views/View.js:37
&gt; +        this._dirtyDescendants = 0;

I would prefer `this._dirtyDescendantsCount` to emphasize it&apos;s a counter, not a list of descendants.

&gt; Source/WebInspectorUI/UserInterface/Views/View.js:212
&gt; +        let unscheduledLayouts = view._dirtyDescendants;

This variable name took me a while to grok. Maybe `forcedLayoutsCount` or something?

&gt; Source/WebInspectorUI/UserInterface/Views/View.js:226
&gt; +        cancelAnimationFrame(WebInspector.View._scheduledLayoutUpdateIdentifier);

Comment: &apos;No views need layout, so cancel the pending requestAnimationFrame.&apos;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1140927</commentid>
    <comment_count>10</comment_count>
      <attachid>265227</attachid>
    <who name="Matt Baker">mattbaker</who>
    <bug_when>2015-11-10 13:40:32 -0800</bug_when>
    <thetext>Created attachment 265227
[Patch] Proposed Fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1140950</commentid>
    <comment_count>11</comment_count>
      <attachid>265227</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-11-10 14:31:21 -0800</bug_when>
    <thetext>Comment on attachment 265227
[Patch] Proposed Fix

Clearing flags on attachment: 265227

Committed r192272: &lt;http://trac.webkit.org/changeset/192272&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1140951</commentid>
    <comment_count>12</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-11-10 14:31:25 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>264990</attachid>
            <date>2015-11-06 19:13:05 -0800</date>
            <delta_ts>2015-11-09 15:41:53 -0800</delta_ts>
            <desc>[Patch] WIP</desc>
            <filename>bug-150993-20151106191254.patch</filename>
            <type>text/plain</type>
            <size>13175</size>
            <attacher name="Matt Baker">mattbaker</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkyMTI0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwppbmRleCBm
MTRkOWFkYTJhZjM2ZjUyZWQ2ZjQ5MzViYWZlZmM2ODFkZGI1YWY5Li4xM2RhYjAwYTA1N2RhODI5
M2YwZmI2ZjczODIwYmRkOGQ2OWY0MWZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1NSBAQAorMjAxNS0xMS0wNiAgTWF0dCBCYWtlciAgPG1hdHRiYWtlckBhcHBsZS5jb20+
CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogQmF0Y2ggYWxsIHNjaGVkdWxlZCB1cGRhdGVzIGFu
ZCBsYXlvdXQgdmlldyB0cmVlIGluIGEgc2luZ2xlIGFuaW1hdGlvbiBmcmFtZQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTUwOTkzCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgV0lQCisKKyAgICAgICAgKiBV
c2VySW50ZXJmYWNlL0Jhc2UvTWFpbi5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5jb250ZW50
TG9hZGVkKToKKyAgICAgICAgU2V0dXAgcm9vdCB2aWV3LgorCisgICAgICAgICogVXNlckludGVy
ZmFjZS9WaWV3cy9UaW1lbGluZVJ1bGVyLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRpbWVs
aW5lUnVsZXIucHJvdG90eXBlLmdldCBlbmRUaW1lKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5U
aW1lbGluZVJ1bGVyLnByb3RvdHlwZS5nZXQgc2Vjb25kc1BlclBpeGVsKToKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5UaW1lbGluZVJ1bGVyLnByb3RvdHlwZS51cGRhdGVMYXlvdXRJZk5lZWRlZCk6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGltZWxpbmVSdWxlci5wcm90b3R5cGUubmVlZHNMYXlv
dXQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlRpbWVsaW5lUnVsZXIucHJvdG90eXBlLl9uZWVk
c01hcmtlckxheW91dCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVGltZWxpbmVSdWxlci5wcm90
b3R5cGUuX25lZWRzU2VsZWN0aW9uTGF5b3V0KToKKyAgICAgICAgUmVuYW1lZCAibGF5b3V0UGVu
ZGluZyIgdG8gImRpcnR5Ii4KKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvVmlldy5q
czoKKyAgICAgICAgQWRkZWQgcHJpdmF0ZSBjbGFzcyBwcm9wZXJ0aWVzIGZvciByb290IHZpZXcg
cG9pbnRlciBhbmQgckFGIGlkZW50aWZpZXIuCisgICAgICAgIChXZWJJbnNwZWN0b3IuVmlldyk6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuVmlldy5wcm90b3R5cGUuZ2V0IGRpcnR5KToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5WaWV3LnByb3RvdHlwZS5nZXQgcGFyZW50Vmlldyk6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuVmlldy5wcm90b3R5cGUubWFrZVJvb3RWaWV3KToKKyAgICAgICAgU2V0
cyB0aGUgdmlldyBhcyB0aGUgcm9vdCBvZiB0aGUgdmlldyBoaWVyYXJjaHkuCisgICAgICAgIENh
biBvbmx5IGJlIGNhbGxlZCBvbmNlLgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZpZXcucHJvdG90
eXBlLmluc2VydFN1YnZpZXdCZWZvcmUpOgorICAgICAgICBObyBsb25nZXIgYXBwZW5kcyBzdWJ2
aWV3IGVsZW1lbnQgdG8gcGFyZW50IGVsZW1lbnQsIGlmIHN1YnZpZXcgYWxyZWFkeSBpbiB0aGUg
RE9NLgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZpZXcucHJvdG90eXBlLnJlbW92ZVN1YnZpZXcp
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZpZXcucHJvdG90eXBlLnVwZGF0ZUxheW91dCk6Cisg
ICAgICAgIFVuc2NoZWR1bGVzIHZpZXcgZnJvbSB0aGUgbGF5b3V0IG1hbmFnZXIsIGFuZCBwZXJm
b3JtcyBzeW5jaHJvbm91cyBsYXlvdXQuCisgICAgICAgIChXZWJJbnNwZWN0b3IuVmlldy5wcm90
b3R5cGUudXBkYXRlTGF5b3V0SWZOZWVkZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZpZXcu
cHJvdG90eXBlLm5lZWRzTGF5b3V0KToKKyAgICAgICAgU2NoZWR1bGVzIHZpZXcgd2l0aCBsYXlv
dXQgbWFuYWdlciBpZiBub3QgZGlydHkuCisgICAgICAgIChXZWJJbnNwZWN0b3IuVmlldy5wcm90
b3R5cGUuZGlkQXR0YWNoKToKKyAgICAgICAgQ2FsbGVkIHdoZW4gdmlldyBpcyBhZGRlZCB0byBh
IHBhcmVudC4gU2V0cyBwYXJlbnRWaWV3IHByb3BlcnR5LgorICAgICAgICAoV2ViSW5zcGVjdG9y
LlZpZXcucHJvdG90eXBlLmRpZERldGFjaCk6CisgICAgICAgIENhbGxlZCB3aGVuIHZpZXcgaXMg
cmVtb3ZlZCBmcm9tIGl0cyBwYXJlbnQuIFVuc2V0cyBwYXJlbnRWaWV3IHByb3BlcnR5LgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLlZpZXcucHJvdG90eXBlLl9sYXlvdXRTdWJ0cmVlKToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5WaWV3Ll9zY2hlZHVsZUxheW91dEZvclZpZXcpOgorICAgICAgICBD
YWxsZWQgYnkgdmlld3MgdG8gc2NoZWR1bGUgYSBsYXlvdXQuCisgICAgICAgIChXZWJJbnNwZWN0
b3IuVmlldy5fdW5zY2hlZHVsZUxheW91dEZvclZpZXcpOgorICAgICAgICBDYWxsZWQgYnkgdmll
d3MgdGhhdCBwZXJmb3JtIGEgc3luY2hyb25vdXMgbGF5b3V0LgorICAgICAgICAoV2ViSW5zcGVj
dG9yLlZpZXcuX3Zpc2l0Vmlld1RyZWVGb3JMYXlvdXQpOgorICAgICAgICBNYWluIGFuaW1hdGlv
biBmcmFtZSBjYWxsYmFjaywgdHJhdmVyc2VzIHZpZXcgaGllcmFyY2h5LgorICAgICAgICAoV2Vi
SW5zcGVjdG9yLlZpZXcucHJvdG90eXBlLmdldCBsYXlvdXRQZW5kaW5nKTogRGVsZXRlZC4KKyAg
ICAgICAgUmVuYW1lZCB0byBWaWV3LnByb3RvdHlwZS5kaXJ0eS4KKwogMjAxNS0xMS0wNiAgVGlt
b3RoeSBIYXRjaGVyICA8dGltb3RoeUBhcHBsZS5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3Rv
cjogU2VhcmNoIFJlc3VsdHMgdGFiIGNhdXNlcyBqdW1wIHRvIFJlc291cmNlcyB0YWIgb24gcmVs
b2FkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9CYXNl
L01haW4uanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9CYXNlL01haW4u
anMKaW5kZXggN2ZjNmU4YzBkNTJkODY4Zjg1NmYzNjRlNmMxOTc2ZmE3ZmNkNjY3Yy4uNmEyOTQ0
NTRkZDBiOTA1OGY1NTgwZGRkMTU5ZWUzYjJkMTE5ODUxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQmFzZS9NYWluLmpzCisrKyBiL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Jhc2UvTWFpbi5qcwpAQCAtMzU1LDYgKzM1NSw3IEBA
IFdlYkluc3BlY3Rvci5jb250ZW50TG9hZGVkID0gZnVuY3Rpb24oKQogCiAgICAgdGhpcy5fdXBk
YXRlRG9ja05hdmlnYXRpb25JdGVtcygpOwogICAgIHRoaXMuX3VwZGF0ZVRvb2xiYXJIZWlnaHQo
KTsKKyAgICB0aGlzLl9zZXR1cFZpZXdIaWVyYXJjaHkoKTsKIAogICAgIHRoaXMuX3BlbmRpbmdP
cGVuVGFicyA9IFtdOwogCkBAIC0xMzczLDYgKzEzNzQsMjAgQEAgV2ViSW5zcGVjdG9yLl91cGRh
dGVUb29sYmFySGVpZ2h0ID0gZnVuY3Rpb24oKQogICAgICAgICBJbnNwZWN0b3JGcm9udGVuZEhv
c3Quc2V0VG9vbGJhckhlaWdodCh0aGlzLnRvb2xiYXIuZWxlbWVudC5vZmZzZXRIZWlnaHQpOwog
fTsKIAorV2ViSW5zcGVjdG9yLl9zZXR1cFZpZXdIaWVyYXJjaHkgPSBmdW5jdGlvbigpCit7Cisg
ICAgbGV0IHJvb3RWaWV3ID0gbmV3IFdlYkluc3BlY3Rvci5WaWV3KGRvY3VtZW50LmJvZHkpOwor
ICAgIHJvb3RWaWV3LmFkZFN1YnZpZXcodGhpcy50b29sYmFyKTsKKyAgICByb290Vmlldy5hZGRT
dWJ2aWV3KHRoaXMudGFiQmFyKTsKKyAgICAvLyByb290Vmlldy5hZGRTdWJ2aWV3KHRoaXMubmF2
aWdhdGlvblNpZGViYXIpOworICAgIHJvb3RWaWV3LmFkZFN1YnZpZXcodGhpcy50YWJCcm93c2Vy
KTsKKyAgICByb290Vmlldy5hZGRTdWJ2aWV3KHRoaXMuc3BsaXRDb250ZW50QnJvd3Nlcik7Cisg
ICAgcm9vdFZpZXcuYWRkU3Vidmlldyh0aGlzLnF1aWNrQ29uc29sZSk7CisgICAgLy8gcm9vdFZp
ZXcuYWRkU3Vidmlldyh0aGlzLmRldGFpbHNTaWRlYmFyKTsKKworICAgIHJvb3RWaWV3Lm1ha2VS
b290VmlldygpOworfTsKKwogV2ViSW5zcGVjdG9yLl90YWJCcm93c2VyU2VsZWN0ZWRUYWJDb250
ZW50Vmlld0RpZENoYW5nZSA9IGZ1bmN0aW9uKGV2ZW50KQogewogICAgIGlmICh0aGlzLnRhYkJh
ci5zZWxlY3RlZFRhYkJhckl0ZW0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9WaWV3cy9UaW1lbGluZVJ1bGVyLmpzIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVGltZWxpbmVSdWxlci5qcwppbmRleCA0ZWRmZjhkOGJl
NDViMTY3ZjgzNmRiOGI3M2UzOGQ3ODU4YjhhN2VjLi4wZGQxMmNlODFlOTI3MDlkZTM5ZTdjYTQ4
MDI4Y2Q0ODliMjc3M2E3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9WaWV3cy9UaW1lbGluZVJ1bGVyLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RpbWVsaW5lUnVsZXIuanMKQEAgLTIwOSw3ICsyMDksNyBA
QCBXZWJJbnNwZWN0b3IuVGltZWxpbmVSdWxlciA9IGNsYXNzIFRpbWVsaW5lUnVsZXIgZXh0ZW5k
cyBXZWJJbnNwZWN0b3IuVmlldwogCiAgICAgZ2V0IGVuZFRpbWUoKQogICAgIHsKLSAgICAgICAg
aWYgKCF0aGlzLl9lbmRUaW1lUGlubmVkICYmIHRoaXMubGF5b3V0UGVuZGluZykKKyAgICAgICAg
aWYgKCF0aGlzLl9lbmRUaW1lUGlubmVkICYmIHRoaXMuZGlydHkpCiAgICAgICAgICAgICB0aGlz
Ll9yZWNhbGN1bGF0ZSgpOwogICAgICAgICByZXR1cm4gdGhpcy5fZW5kVGltZTsKICAgICB9CkBA
IC0yMjcsNyArMjI3LDcgQEAgV2ViSW5zcGVjdG9yLlRpbWVsaW5lUnVsZXIgPSBjbGFzcyBUaW1l
bGluZVJ1bGVyIGV4dGVuZHMgV2ViSW5zcGVjdG9yLlZpZXcKIAogICAgIGdldCBzZWNvbmRzUGVy
UGl4ZWwoKQogICAgIHsKLSAgICAgICAgaWYgKHRoaXMubGF5b3V0UGVuZGluZykKKyAgICAgICAg
aWYgKHRoaXMuZGlydHkpCiAgICAgICAgICAgICB0aGlzLl9yZWNhbGN1bGF0ZSgpOwogICAgICAg
ICByZXR1cm4gdGhpcy5fc2Vjb25kc1BlclBpeGVsOwogICAgIH0KQEAgLTM0MCw3ICszNDAsNyBA
QCBXZWJJbnNwZWN0b3IuVGltZWxpbmVSdWxlciA9IGNsYXNzIFRpbWVsaW5lUnVsZXIgZXh0ZW5k
cyBXZWJJbnNwZWN0b3IuVmlldwogICAgIHsKICAgICAgICAgLy8gSWYgYSBsYXlvdXQgaXMgcGVu
ZGluZyB3ZSBjYW4gbGV0IHRoZSBiYXNlIGNsYXNzIGhhbmRsZSBpdCBhbmQgcmV0dXJuLCBzaW5j
ZSB0aGF0IHdpbGwgdXBkYXRlCiAgICAgICAgIC8vIG1hcmtlcnMgYW5kIHRoZSBzZWxlY3Rpb24g
YXQgdGhlIHNhbWUgdGltZS4KLSAgICAgICAgaWYgKHRoaXMubGF5b3V0UGVuZGluZykgeworICAg
ICAgICBpZiAodGhpcy5kaXJ0eSkgewogICAgICAgICAgICAgc3VwZXIudXBkYXRlTGF5b3V0SWZO
ZWVkZWQoKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpAQCAtMzU4LDcgKzM1OCw3
IEBAIFdlYkluc3BlY3Rvci5UaW1lbGluZVJ1bGVyID0gY2xhc3MgVGltZWxpbmVSdWxlciBleHRl
bmRzIFdlYkluc3BlY3Rvci5WaWV3CiAKICAgICBuZWVkc0xheW91dCgpCiAgICAgewotICAgICAg
ICBpZiAodGhpcy5sYXlvdXRQZW5kaW5nKQorICAgICAgICBpZiAodGhpcy5kaXJ0eSkKICAgICAg
ICAgICAgIHJldHVybjsKIAogICAgICAgICBpZiAodGhpcy5fc2NoZWR1bGVkTWFya2VyTGF5b3V0
VXBkYXRlSWRlbnRpZmllcikgewpAQCAtNDk0LDggKzQ5NCw4IEBAIFdlYkluc3BlY3Rvci5UaW1l
bGluZVJ1bGVyID0gY2xhc3MgVGltZWxpbmVSdWxlciBleHRlbmRzIFdlYkluc3BlY3Rvci5WaWV3
CiAKICAgICBfbmVlZHNNYXJrZXJMYXlvdXQoKQogICAgIHsKLSAgICAgICAgLy8gSWYgbGF5b3V0
IGlzIHNjaGVkdWxlZCwgYWJvcnQgc2luY2UgbWFya2VycyB3aWxsIGJlIHVwZGF0ZWQgd2hlbiBs
YXlvdXQgaGFwcGVucy4KLSAgICAgICAgaWYgKHRoaXMubGF5b3V0UGVuZGluZykKKyAgICAgICAg
Ly8gSWYgdGhlIHZpZXcgaXMgZGlydHksIGFib3J0IHNpbmNlIG1hcmtlcnMgd2lsbCBiZSB1cGRh
dGVkIHdoZW4gbGF5b3V0IGhhcHBlbnMuCisgICAgICAgIGlmICh0aGlzLmRpcnR5KQogICAgICAg
ICAgICAgcmV0dXJuOwogCiAgICAgICAgIGlmICh0aGlzLl9zY2hlZHVsZWRNYXJrZXJMYXlvdXRV
cGRhdGVJZGVudGlmaWVyKQpAQCAtNTE3LDggKzUxNyw4IEBAIFdlYkluc3BlY3Rvci5UaW1lbGlu
ZVJ1bGVyID0gY2xhc3MgVGltZWxpbmVSdWxlciBleHRlbmRzIFdlYkluc3BlY3Rvci5WaWV3CiAg
ICAgICAgIGlmICghdGhpcy5fYWxsb3dzVGltZVJhbmdlU2VsZWN0aW9uKQogICAgICAgICAgICAg
cmV0dXJuOwogCi0gICAgICAgIC8vIElmIGxheW91dCBpcyBzY2hlZHVsZWQsIGFib3J0IHNpbmNl
IHRoZSBzZWxlY3Rpb24gd2lsbCBiZSB1cGRhdGVkIHdoZW4gbGF5b3V0IGhhcHBlbnMuCi0gICAg
ICAgIGlmICh0aGlzLmxheW91dFBlbmRpbmcpCisgICAgICAgIC8vIElmIHRoZSB2aWV3IGlzIGRp
cnR5LCBhYm9ydCBzaW5jZSB0aGUgc2VsZWN0aW9uIHdpbGwgYmUgdXBkYXRlZCB3aGVuIGxheW91
dCBoYXBwZW5zLgorICAgICAgICBpZiAodGhpcy5kaXJ0eSkKICAgICAgICAgICAgIHJldHVybjsK
IAogICAgICAgICBpZiAodGhpcy5fc2NoZWR1bGVkU2VsZWN0aW9uTGF5b3V0VXBkYXRlSWRlbnRp
ZmllcikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Zp
ZXdzL1ZpZXcuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9W
aWV3LmpzCmluZGV4IDFjMjc5MzlkNzI5NDM0MmIwNTE3NzA5OWY5ZTRiNGUyNDc2NmEyN2EuLjg0
NDYyN2Y1OGVlMzY4MTk4NWVhMmQ0Njg3ZDNmYjA1YjU3NmIyYTMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1ZpZXcuanMKKysrIGIvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVmlldy5qcwpAQCAtMzEsNyArMzEs
MTAgQEAgV2ViSW5zcGVjdG9yLlZpZXcgPSBjbGFzcyBWaWV3IGV4dGVuZHMgV2ViSW5zcGVjdG9y
Lk9iamVjdAogCiAgICAgICAgIHRoaXMuX2VsZW1lbnQgPSBlbGVtZW50IHx8IGRvY3VtZW50LmNy
ZWF0ZUVsZW1lbnQoImRpdiIpOwogICAgICAgICB0aGlzLl9lbGVtZW50Ll9fdmlldyA9IHRoaXM7
CisgICAgICAgIHRoaXMuX3BhcmVudFZpZXcgPSBudWxsOwogICAgICAgICB0aGlzLl9zdWJ2aWV3
cyA9IFtdOworICAgICAgICB0aGlzLl9kaXJ0eSA9IGZhbHNlOworICAgICAgICB0aGlzLl9kaXJ0
eURlc2NlbmRhbnRzID0gMDsKICAgICB9CiAKICAgICAvLyBQdWJsaWMKQEAgLTQxLDkgKzQ0LDE0
IEBAIFdlYkluc3BlY3Rvci5WaWV3ID0gY2xhc3MgVmlldyBleHRlbmRzIFdlYkluc3BlY3Rvci5P
YmplY3QKICAgICAgICAgcmV0dXJuIHRoaXMuX2VsZW1lbnQ7CiAgICAgfQogCi0gICAgZ2V0IGxh
eW91dFBlbmRpbmcoKQorICAgIGdldCBkaXJ0eSgpCiAgICAgewotICAgICAgICByZXR1cm4gISF0
aGlzLl9zY2hlZHVsZWRMYXlvdXRVcGRhdGVJZGVudGlmaWVyOworICAgICAgICByZXR1cm4gdGhp
cy5fZGlydHk7CisgICAgfQorCisgICAgZ2V0IHBhcmVudFZpZXcoKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIHRoaXMuX3BhcmVudFZpZXc7CiAgICAgfQogCiAgICAgZ2V0IHN1YnZpZXdzKCkKQEAg
LTUxLDYgKzU5LDE2IEBAIFdlYkluc3BlY3Rvci5WaWV3ID0gY2xhc3MgVmlldyBleHRlbmRzIFdl
Ykluc3BlY3Rvci5PYmplY3QKICAgICAgICAgcmV0dXJuIHRoaXMuX3N1YnZpZXdzOwogICAgIH0K
IAorICAgIG1ha2VSb290VmlldygpCisgICAgeworICAgICAgICBjb25zb2xlLmFzc2VydCghV2Vi
SW5zcGVjdG9yLlZpZXcuX3Jvb3RWaWV3LCAiQW5vdGhlciB2aWV3IGlzIGFscmVhZHkgdGhlIHJv
b3QuIik7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KCF0aGlzLl9wYXJlbnRWaWV3LCAiUm9vdCB2
aWV3IGNhbm5vdCBiZSBhIHN1YnZpZXcuIikKKyAgICAgICAgaWYgKFdlYkluc3BlY3Rvci5WaWV3
Ll9yb290VmlldykKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBXZWJJbnNwZWN0b3Iu
Vmlldy5fcm9vdFZpZXcgPSB0aGlzOworICAgIH0KKwogICAgIGFkZFN1YnZpZXcodmlldykKICAg
ICB7CiAgICAgICAgIHRoaXMuaW5zZXJ0U3Vidmlld0JlZm9yZSh2aWV3LCBudWxsKTsKQEAgLTYw
LDYgKzc4LDcgQEAgV2ViSW5zcGVjdG9yLlZpZXcgPSBjbGFzcyBWaWV3IGV4dGVuZHMgV2ViSW5z
cGVjdG9yLk9iamVjdAogICAgIHsKICAgICAgICAgY29uc29sZS5hc3NlcnQodmlldyBpbnN0YW5j
ZW9mIFdlYkluc3BlY3Rvci5WaWV3KTsKICAgICAgICAgY29uc29sZS5hc3NlcnQoIXJlZmVyZW5j
ZVZpZXcgfHwgcmVmZXJlbmNlVmlldyBpbnN0YW5jZW9mIFdlYkluc3BlY3Rvci5WaWV3KTsKKyAg
ICAgICAgY29uc29sZS5hc3NlcnQodmlldyAhPT0gV2ViSW5zcGVjdG9yLlZpZXcuX3Jvb3RWaWV3
LCAiUm9vdCB2aWV3IGNhbm5vdCBiZSBhIHN1YnZpZXcuIik7CiAKICAgICAgICAgaWYgKHRoaXMu
X3N1YnZpZXdzLmluY2x1ZGVzKHZpZXcpKSB7CiAgICAgICAgICAgICBjb25zb2xlLmFzc2VydChm
YWxzZSwgIkNhbm5vdCBhZGQgdmlldyB0aGF0IGlzIGFscmVhZHkgYSBzdWJ2aWV3LiIsIHZpZXcp
OwpAQCAtNzMsNyArOTIsMTEgQEAgV2ViSW5zcGVjdG9yLlZpZXcgPSBjbGFzcyBWaWV3IGV4dGVu
ZHMgV2ViSW5zcGVjdG9yLk9iamVjdAogICAgICAgICB9CiAKICAgICAgICAgdGhpcy5fc3Vidmll
d3MuaW5zZXJ0QXRJbmRleCh2aWV3LCBiZWZvcmVJbmRleCk7Ci0gICAgICAgIHRoaXMuX2VsZW1l
bnQuaW5zZXJ0QmVmb3JlKHZpZXcuZWxlbWVudCwgcmVmZXJlbmNlVmlldyA/IHJlZmVyZW5jZVZp
ZXcuZWxlbWVudCA6IG51bGwpOworCisgICAgICAgIGlmICghdmlldy5lbGVtZW50LnBhcmVudE5v
ZGUpCisgICAgICAgICAgICB0aGlzLl9lbGVtZW50Lmluc2VydEJlZm9yZSh2aWV3LmVsZW1lbnQs
IHJlZmVyZW5jZVZpZXcgPyByZWZlcmVuY2VWaWV3LmVsZW1lbnQgOiBudWxsKTsKKworICAgICAg
ICB2aWV3LmRpZEF0dGFjaCh0aGlzKTsKICAgICB9CiAKICAgICByZW1vdmVTdWJ2aWV3KHZpZXcp
CkBAIC04OCw2ICsxMTEsNyBAQCBXZWJJbnNwZWN0b3IuVmlldyA9IGNsYXNzIFZpZXcgZXh0ZW5k
cyBXZWJJbnNwZWN0b3IuT2JqZWN0CiAKICAgICAgICAgdGhpcy5fc3Vidmlld3MucmVtb3ZlKHZp
ZXcsIHRydWUpOwogICAgICAgICB0aGlzLl9lbGVtZW50LnJlbW92ZUNoaWxkKHZpZXcuZWxlbWVu
dCk7CisgICAgICAgIHZpZXcuZGlkRGV0YWNoKCk7CiAgICAgfQogCiAgICAgcmVwbGFjZVN1YnZp
ZXcob2xkVmlldywgbmV3VmlldykKQEAgLTEwMCwxMiArMTI0LDEzIEBAIFdlYkluc3BlY3Rvci5W
aWV3ID0gY2xhc3MgVmlldyBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QKIAogICAgIHVwZGF0
ZUxheW91dCgpCiAgICAgeworICAgICAgICBXZWJJbnNwZWN0b3IuVmlldy5fdW5zY2hlZHVsZUxh
eW91dEZvclZpZXcodGhpcyk7CiAgICAgICAgIHRoaXMuX2xheW91dFN1YnRyZWUoKTsKICAgICB9
CiAKICAgICB1cGRhdGVMYXlvdXRJZk5lZWRlZCgpCiAgICAgewotICAgICAgICBpZiAoIXRoaXMu
X3NjaGVkdWxlZExheW91dFVwZGF0ZUlkZW50aWZpZXIpCisgICAgICAgIGlmICghdGhpcy5fZGly
dHkpCiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgdGhpcy51cGRhdGVMYXlvdXQoKTsK
QEAgLTExMywxNyArMTM4LDI4IEBAIFdlYkluc3BlY3Rvci5WaWV3ID0gY2xhc3MgVmlldyBleHRl
bmRzIFdlYkluc3BlY3Rvci5PYmplY3QKIAogICAgIG5lZWRzTGF5b3V0KCkKICAgICB7Ci0gICAg
ICAgIGlmICh0aGlzLl9zY2hlZHVsZWRMYXlvdXRVcGRhdGVJZGVudGlmaWVyKQorICAgICAgICBp
ZiAodGhpcy5fZGlydHkpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgdGhpcy5fc2No
ZWR1bGVkTGF5b3V0VXBkYXRlSWRlbnRpZmllciA9IHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9
PiB7Ci0gICAgICAgICAgICB0aGlzLl9zY2hlZHVsZWRMYXlvdXRVcGRhdGVJZGVudGlmaWVyID0g
dW5kZWZpbmVkOwotICAgICAgICAgICAgdGhpcy5fbGF5b3V0U3VidHJlZSgpOwotICAgICAgICB9
KTsKKyAgICAgICAgdGhpcy5fZGlydHkgPSB0cnVlOworCisgICAgICAgIFdlYkluc3BlY3Rvci5W
aWV3Ll9zY2hlZHVsZUxheW91dEZvclZpZXcodGhpcyk7CiAgICAgfQogCiAgICAgLy8gUHJvdGVj
dGVkCiAKKyAgICBkaWRBdHRhY2gocGFyZW50VmlldykKKyAgICB7CisgICAgICAgIGNvbnNvbGUu
YXNzZXJ0KCF0aGlzLl9wYXJlbnRWaWV3LCAiQXR0YWNoZWQgdmlldyBhbHJlYWR5IGhhcyBhIHBh
cmVudC4iLCB0aGlzLl9wYXJlbnRWaWV3KTsKKyAgICAgICAgdGhpcy5fcGFyZW50VmlldyA9IHBh
cmVudFZpZXc7CisgICAgfQorCisgICAgZGlkRGV0YWNoKCkKKyAgICB7CisgICAgICAgIGNvbnNv
bGUuYXNzZXJ0KHRoaXMuX3BhcmVudFZpZXcsICJEZXRhY2hlZCB2aWV3IGhhcyBubyBwYXJlbnQu
IikKKyAgICAgICAgdGhpcy5fcGFyZW50VmlldyA9IG51bGw7CisgICAgfQorCiAgICAgbGF5b3V0
KCkKICAgICB7CiAgICAgICAgIC8vIE92ZXJyaWRkZW4gYnkgc3ViY2xhc3Nlcy4KQEAgLTEzNSwx
NCArMTcxLDY3IEBAIFdlYkluc3BlY3Rvci5WaWV3ID0gY2xhc3MgVmlldyBleHRlbmRzIFdlYklu
c3BlY3Rvci5PYmplY3QKIAogICAgIF9sYXlvdXRTdWJ0cmVlKCkKICAgICB7Ci0gICAgICAgIGlm
ICh0aGlzLl9zY2hlZHVsZWRMYXlvdXRVcGRhdGVJZGVudGlmaWVyKSB7Ci0gICAgICAgICAgICBj
YW5jZWxBbmltYXRpb25GcmFtZSh0aGlzLl9zY2hlZHVsZWRMYXlvdXRVcGRhdGVJZGVudGlmaWVy
KTsKLSAgICAgICAgICAgIHRoaXMuX3NjaGVkdWxlZExheW91dFVwZGF0ZUlkZW50aWZpZXIgPSB1
bmRlZmluZWQ7Ci0gICAgICAgIH0KKyAgICAgICAgdGhpcy5fZGlydHkgPSBmYWxzZTsKIAogICAg
ICAgICB0aGlzLmxheW91dCgpOwogCiAgICAgICAgIGZvciAobGV0IHZpZXcgb2YgdGhpcy5fc3Vi
dmlld3MpCiAgICAgICAgICAgICB2aWV3Ll9sYXlvdXRTdWJ0cmVlKCk7CiAgICAgfQorCisgICAg
Ly8gUHJpdmF0ZSBsYXlvdXQgY29udHJvbGxlciBsb2dpYworCisgICAgc3RhdGljIF9zY2hlZHVs
ZUxheW91dEZvclZpZXcodmlldykKKyAgICB7CisgICAgICAgIGxldCBwYXJlbnRWaWV3ID0gdmll
dy5wYXJlbnRWaWV3OworICAgICAgICB3aGlsZSAocGFyZW50VmlldyAmJiAhcGFyZW50Vmlldy5k
aXJ0eSkgeworICAgICAgICAgICAgcGFyZW50Vmlldy5fZGlydHlEZXNjZW5kYW50cysrOworICAg
ICAgICAgICAgcGFyZW50VmlldyA9IHBhcmVudFZpZXcucGFyZW50VmlldzsKKyAgICAgICAgfQor
CisgICAgICAgIFdlYkluc3BlY3Rvci5WaWV3Ll90b3RhbERpcnR5Vmlld3MrKzsKKyAgICAgICAg
aWYgKFdlYkluc3BlY3Rvci5WaWV3Ll9zY2hlZHVsZWRMYXlvdXRVcGRhdGVJZGVudGlmaWVyKQor
ICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIFdlYkluc3BlY3Rvci5WaWV3Ll9zY2hlZHVs
ZWRMYXlvdXRVcGRhdGVJZGVudGlmaWVyID0gcmVxdWVzdEFuaW1hdGlvbkZyYW1lKFdlYkluc3Bl
Y3Rvci5WaWV3Ll92aXNpdFZpZXdUcmVlRm9yTGF5b3V0KTsKKyAgICB9CisKKyAgICBzdGF0aWMg
X3Vuc2NoZWR1bGVMYXlvdXRGb3JWaWV3KHZpZXcpCisgICAgeworICAgICAgICBsZXQgcGFyZW50
VmlldyA9IHZpZXcucGFyZW50VmlldzsKKyAgICAgICAgd2hpbGUgKHBhcmVudFZpZXcgJiYgIXBh
cmVudFZpZXcuZGlydHkpIHsKKyAgICAgICAgICAgIHBhcmVudFZpZXcuX2RpcnR5RGVzY2VuZGFu
dHMrKzsKKyAgICAgICAgICAgIHBhcmVudFZpZXcgPSBwYXJlbnRWaWV3LnBhcmVudFZpZXc7Cisg
ICAgICAgIH0KKworICAgICAgICBXZWJJbnNwZWN0b3IuVmlldy5fdG90YWxEaXJ0eVZpZXdzID0g
TWF0aC5tYXgoMCwgV2ViSW5zcGVjdG9yLlZpZXcuX3RvdGFsRGlydHlWaWV3cyAtIDEpOworICAg
ICAgICBpZiAoV2ViSW5zcGVjdG9yLlZpZXcuX3RvdGFsRGlydHlWaWV3cyB8fCAhV2ViSW5zcGVj
dG9yLlZpZXcuX3NjaGVkdWxlZExheW91dFVwZGF0ZUlkZW50aWZpZXIpCisgICAgICAgICAgICBy
ZXR1cm47CisKKyAgICAgICAgY2FuY2VsQW5pbWF0aW9uRnJhbWUoV2ViSW5zcGVjdG9yLlZpZXcu
X3NjaGVkdWxlZExheW91dFVwZGF0ZUlkZW50aWZpZXIpOworICAgICAgICBXZWJJbnNwZWN0b3Iu
Vmlldy5fc2NoZWR1bGVkTGF5b3V0VXBkYXRlSWRlbnRpZmllciA9IHVuZGVmaW5lZDsKKyAgICB9
CisKKyAgICBzdGF0aWMgX3Zpc2l0Vmlld1RyZWVGb3JMYXlvdXQoKQorICAgIHsKKyAgICAgICAg
Y29uc29sZS5hc3NlcnQoV2ViSW5zcGVjdG9yLlZpZXcuX3Jvb3RWaWV3LCAiQ2Fubm90IGxheW91
dCB2aWV3IHRyZWUgd2l0aG91dCBhIHJvb3QuIik7CisKKyAgICAgICAgbGV0IHZpZXdTdGFjayA9
IFtbV2ViSW5zcGVjdG9yLlZpZXcuX3Jvb3RWaWV3XV07CisgICAgICAgIHdoaWxlICh2aWV3U3Rh
Y2subGVuZ3RoKSB7CisgICAgICAgICAgICBsZXQgY2hpbGRWaWV3cyA9IHZpZXdTdGFjay5sYXN0
VmFsdWU7CisgICAgICAgICAgICBsZXQgdmlldyA9IGNoaWxkVmlld3Muc2hpZnQoKTsKKyAgICAg
ICAgICAgIGlmICghY2hpbGRWaWV3cy5sZW5ndGgpCisgICAgICAgICAgICAgICAgdmlld1N0YWNr
LnBvcCgpOworCisgICAgICAgICAgICBpZiAodmlldy5kaXJ0eSkKKyAgICAgICAgICAgICAgICB2
aWV3Ll9sYXlvdXRTdWJ0cmVlKCk7CisgICAgICAgICAgICBlbHNlIGlmICh2aWV3Ll9kaXJ0eURl
c2NlbmRhbnRzKQorICAgICAgICAgICAgICAgIHZpZXdTdGFjay5wdXNoKHZpZXcuc3Vidmlld3Mu
c2xpY2UoKSk7CisKKyAgICAgICAgICAgIHZpZXcuX2RpcnR5RGVzY2VuZGFudHMgPSAwOworICAg
ICAgICB9CisgICAgfQogfTsKKworV2ViSW5zcGVjdG9yLlZpZXcuX3Jvb3RWaWV3ID0gbnVsbDsK
K1dlYkluc3BlY3Rvci5WaWV3Ll9zY2hlZHVsZWRMYXlvdXRVcGRhdGVJZGVudGlmaWVyID0gdW5k
ZWZpbmVkOwo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>265107</attachid>
            <date>2015-11-09 15:41:55 -0800</date>
            <delta_ts>2015-11-10 13:40:28 -0800</delta_ts>
            <desc>[Patch] Proposed Fix</desc>
            <filename>bug-150993-20151109154152.patch</filename>
            <type>text/plain</type>
            <size>10953</size>
            <attacher name="Matt Baker">mattbaker</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkyMTgyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwppbmRleCA0
NjYyYjE0ZTEzNWE1ODIzZDY4OWVlNWQxNjQ4NjcwMWY2ZjI5OWJmLi4yZjg0Nzk0ZWJhYmJiNzhj
NGQ5NmQwOTRlZTRlMDRjYmE3ZDI1NGExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0OCBAQAorMjAxNS0xMS0wOSAgTWF0dCBCYWtlciAgPG1hdHRiYWtlckBhcHBsZS5jb20+
CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogQmF0Y2ggYWxsIHNjaGVkdWxlZCBsYXlvdXRzIGFu
ZCB1cGRhdGUgdGhlIHZpZXcgdHJlZSBpbiBhIHNpbmdsZSBhbmltYXRpb24gZnJhbWUKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MDk5MworCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFNoaWZ0cyByZXNwb25z
aWJpbGl0eSBmb3Igc2NoZWR1bGluZyBhc3luY2hyb25vdXMgbGF5b3V0cyBmcm9tIHZpZXcgb2Jq
ZWN0cyB0byBhIGNvbnRyb2xsZXIKKyAgICAgICAgbGF5ZXIsIGltcGxlbWVudGVkIGFzIHByaXZh
dGUgc3RhdGljIG1ldGhvZHMgYW5kIHByb3BlcnRpZXMgaW4gdGhlIFZpZXcgY2xhc3MuIEEgc2lu
Z2xlIGFuaW1hdGlvbgorICAgICAgICBmcmFtZSBjYWxsYmFjayBwZXJmb3JtcyBhIGJyZWFkdGgt
Zmlyc3QgdHJhdmVyc2FsIG9mIHRoZSB2aWV3IHRyZWUgc3RhcnRpbmcgYXQgdGhlIHJvb3Qgdmll
dywKKyAgICAgICAgdXBkYXRpbmcgdmlld3MgbWFya2VkIGFzIG5lZWRpbmcgYSBsYXlvdXQuCisK
KyAgICAgICAgKiBVc2VySW50ZXJmYWNlL0Jhc2UvTWFpbi5qczoKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5jb250ZW50TG9hZGVkKToKKyAgICAgICAgU2V0dXAgcm9vdCB2aWV3LgorCisgICAgICAg
ICogVXNlckludGVyZmFjZS9WaWV3cy9WaWV3LmpzOgorICAgICAgICBBZGRlZCBwcml2YXRlIGNs
YXNzIHByb3BlcnRpZXMgZm9yIHJvb3QgdmlldyByZWZlcmVuY2UgYW5kIHJBRiBpZGVudGlmaWVy
LgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZpZXcpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZp
ZXcucHJvdG90eXBlLmdldCBsYXlvdXRQZW5kaW5nKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5W
aWV3LnByb3RvdHlwZS5nZXQgcGFyZW50Vmlldyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVmll
dy5wcm90b3R5cGUubWFrZVJvb3RWaWV3KToKKyAgICAgICAgU2V0IGN1cnJlbnQgdmlldyB0byBi
ZSB0aGUgcm9vdCBvZiB0aGUgdmlldyBoaWVyYXJjaHkuCisgICAgICAgIENhbiBvbmx5IGJlIGNh
bGxlZCBvbmNlLgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZpZXcucHJvdG90eXBlLmluc2VydFN1
YnZpZXdCZWZvcmUpOgorICAgICAgICBObyBsb25nZXIgYXBwZW5kcyBzdWJ2aWV3IGVsZW1lbnQg
dG8gcGFyZW50IGVsZW1lbnQsIGlmIHN1YnZpZXcgYWxyZWFkeSBpbiB0aGUgRE9NLgorICAgICAg
ICBDaGVja3MgdGhhdCB2aWV3IGJlaW5nIGluc2VydGVkIGlzbid0IHRoZSByb290IHZpZXcuCisg
ICAgICAgIChXZWJJbnNwZWN0b3IuVmlldy5wcm90b3R5cGUucmVtb3ZlU3Vidmlldyk6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuVmlldy5wcm90b3R5cGUudXBkYXRlTGF5b3V0KToKKyAgICAgICAg
VW5zY2hlZHVsZXMgdGhlIHZpZXcgZnJvbSB0aGUgbmV4dCBhc3luY2hyb25vdXMgbGF5b3V0LCB0
aGVuIGRvZXMgYSBzeW5jaHJvbm91cyBsYXlvdXQuCisgICAgICAgIChXZWJJbnNwZWN0b3IuVmll
dy5wcm90b3R5cGUudXBkYXRlTGF5b3V0SWZOZWVkZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LlZpZXcucHJvdG90eXBlLm5lZWRzTGF5b3V0KToKKyAgICAgICAgU2NoZWR1bGVzIHZpZXcgZm9y
IHRoZSBuZXh0IGFzeW5jaHJvbm91cyBsYXlvdXQsIGlmIG5vdCBhbHJlYWR5IHNjaGVkdWxlZC4K
KyAgICAgICAgKFdlYkluc3BlY3Rvci5WaWV3LnByb3RvdHlwZS5kaWRBdHRhY2gpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLlZpZXcucHJvdG90eXBlLmRpZERldGFjaCk6CisgICAgICAgIEluZm9y
bSB2aWV3IG9mIGNoYW5naW5nIHBhcmVudCB2aWV3LgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZp
ZXcucHJvdG90eXBlLl9sYXlvdXRTdWJ0cmVlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5WaWV3
Ll9zY2hlZHVsZUxheW91dEZvclZpZXcpOgorICAgICAgICBDYWxsZWQgYnkgdmlld3MgdG8gc2No
ZWR1bGUgYSBsYXlvdXQuCisgICAgICAgIChXZWJJbnNwZWN0b3IuVmlldy5fdW5zY2hlZHVsZUxh
eW91dEZvclZpZXcpOgorICAgICAgICBDYWxsZWQgYnkgdmlld3MgdGhhdCBwZXJmb3JtIGEgc3lu
Y2hyb25vdXMgbGF5b3V0LgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZpZXcuX3Zpc2l0Vmlld1Ry
ZWVGb3JMYXlvdXQpOgorICAgICAgICBBbmltYXRpb24gZnJhbWUgY2FsbGJhY2suIERvZXMgYSBi
cmVhZHRoLWZpcnN0IHRyYXZlcnNhbCBvZiB0aGUgdmlldyB0cmVlLAorICAgICAgICBhbmQgdXBk
YXRlcyB0aGUgbGF5b3V0IG9mIHZpZXdzIG1hcmtlZCBhcyBkaXJ0eS4KKwogMjAxNS0xMS0wOSAg
TmlraXRhIFZhc2lseWV2ICA8bnZhc2lseWV2QGFwcGxlLmNvbT4KIAogICAgICAgICBXZWIgSW5z
cGVjdG9yOiBbUmVncmVzc2lvbl0gW01hdmVyaWNrc10gVG9wIGJvcmRlciBvZiBzZWxlY3RlZCB0
YWIgbWF0Y2hlcyB0aGUgYmFja2dyb3VuZCB3aGVuIFdlYiBJbnNwZWN0b3IgaXMgdW5kb2NrZWQK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Jhc2UvTWFp
bi5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Jhc2UvTWFpbi5qcwpp
bmRleCA3ZmM2ZThjMGQ1MmQ4NjhmODU2ZjM2NGU2YzE5NzZmYTdmY2Q2NjdjLi44MDVhODk0MWU4
ZGViYjcxNGM4N2M5OTM0OWNmNjJkNDEzY2RiNjY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9CYXNlL01haW4uanMKKysrIGIvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvQmFzZS9NYWluLmpzCkBAIC0zNTUsNiArMzU1LDcgQEAgV2Vi
SW5zcGVjdG9yLmNvbnRlbnRMb2FkZWQgPSBmdW5jdGlvbigpCiAKICAgICB0aGlzLl91cGRhdGVE
b2NrTmF2aWdhdGlvbkl0ZW1zKCk7CiAgICAgdGhpcy5fdXBkYXRlVG9vbGJhckhlaWdodCgpOwor
ICAgIHRoaXMuX3NldHVwVmlld0hpZXJhcmNoeSgpOwogCiAgICAgdGhpcy5fcGVuZGluZ09wZW5U
YWJzID0gW107CiAKQEAgLTEzNzMsNiArMTM3NCwyMCBAQCBXZWJJbnNwZWN0b3IuX3VwZGF0ZVRv
b2xiYXJIZWlnaHQgPSBmdW5jdGlvbigpCiAgICAgICAgIEluc3BlY3RvckZyb250ZW5kSG9zdC5z
ZXRUb29sYmFySGVpZ2h0KHRoaXMudG9vbGJhci5lbGVtZW50Lm9mZnNldEhlaWdodCk7CiB9Owog
CitXZWJJbnNwZWN0b3IuX3NldHVwVmlld0hpZXJhcmNoeSA9IGZ1bmN0aW9uKCkKK3sKKyAgICBs
ZXQgcm9vdFZpZXcgPSBuZXcgV2ViSW5zcGVjdG9yLlZpZXcoZG9jdW1lbnQuYm9keSk7CisgICAg
cm9vdFZpZXcuYWRkU3Vidmlldyh0aGlzLnRvb2xiYXIpOworICAgIHJvb3RWaWV3LmFkZFN1YnZp
ZXcodGhpcy50YWJCYXIpOworICAgIHJvb3RWaWV3LmFkZFN1YnZpZXcodGhpcy50YWJCcm93c2Vy
KTsKKyAgICByb290Vmlldy5hZGRTdWJ2aWV3KHRoaXMuc3BsaXRDb250ZW50QnJvd3Nlcik7Cisg
ICAgcm9vdFZpZXcuYWRkU3Vidmlldyh0aGlzLnF1aWNrQ29uc29sZSk7CisKKyAgICAvLyBGSVhN
RTogYWRkIG5hdmlnYXRpb24gYW5kIGRldGFpbHMgc2lkZWJhcnMgdG8gdGhlIHRyZWUgb25jZSA8
aHR0cHM6Ly93ZWJraXQub3JnL2IvMTUxMDU3PiBpcyBmaXhlZC4KKworICAgIHJvb3RWaWV3Lm1h
a2VSb290VmlldygpOworfTsKKwogV2ViSW5zcGVjdG9yLl90YWJCcm93c2VyU2VsZWN0ZWRUYWJD
b250ZW50Vmlld0RpZENoYW5nZSA9IGZ1bmN0aW9uKGV2ZW50KQogewogICAgIGlmICh0aGlzLnRh
YkJhci5zZWxlY3RlZFRhYkJhckl0ZW0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9WaWV3cy9WaWV3LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvVmlld3MvVmlldy5qcwppbmRleCAxYzI3OTM5ZDcyOTQzNDJiMDUxNzcwOTlm
OWU0YjRlMjQ3NjZhMjdhLi4yY2JhNTE3MWVmYmFkMjBmODQyYjNhMjFhMTI4ZjBlNjlkYWJiNzhj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9W
aWV3LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Zp
ZXcuanMKQEAgLTMxLDcgKzMxLDEwIEBAIFdlYkluc3BlY3Rvci5WaWV3ID0gY2xhc3MgVmlldyBl
eHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QKIAogICAgICAgICB0aGlzLl9lbGVtZW50ID0gZWxl
bWVudCB8fCBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKICAgICAgICAgdGhpcy5fZWxl
bWVudC5fX3ZpZXcgPSB0aGlzOworICAgICAgICB0aGlzLl9wYXJlbnRWaWV3ID0gbnVsbDsKICAg
ICAgICAgdGhpcy5fc3Vidmlld3MgPSBbXTsKKyAgICAgICAgdGhpcy5fZGlydHkgPSBmYWxzZTsK
KyAgICAgICAgdGhpcy5fZGlydHlEZXNjZW5kYW50cyA9IDA7CiAgICAgfQogCiAgICAgLy8gUHVi
bGljCkBAIC00Myw3ICs0NiwxMiBAQCBXZWJJbnNwZWN0b3IuVmlldyA9IGNsYXNzIFZpZXcgZXh0
ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0CiAKICAgICBnZXQgbGF5b3V0UGVuZGluZygpCiAgICAg
ewotICAgICAgICByZXR1cm4gISF0aGlzLl9zY2hlZHVsZWRMYXlvdXRVcGRhdGVJZGVudGlmaWVy
OworICAgICAgICByZXR1cm4gdGhpcy5fZGlydHk7CisgICAgfQorCisgICAgZ2V0IHBhcmVudFZp
ZXcoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX3BhcmVudFZpZXc7CiAgICAgfQogCiAg
ICAgZ2V0IHN1YnZpZXdzKCkKQEAgLTUxLDYgKzU5LDE2IEBAIFdlYkluc3BlY3Rvci5WaWV3ID0g
Y2xhc3MgVmlldyBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QKICAgICAgICAgcmV0dXJuIHRo
aXMuX3N1YnZpZXdzOwogICAgIH0KIAorICAgIG1ha2VSb290VmlldygpCisgICAgeworICAgICAg
ICBjb25zb2xlLmFzc2VydCghV2ViSW5zcGVjdG9yLlZpZXcuX3Jvb3RWaWV3LCAiUm9vdCB2aWV3
IGFscmVhZHkgZXhpc3RzLiIpOworICAgICAgICBjb25zb2xlLmFzc2VydCghdGhpcy5fcGFyZW50
VmlldywgIlJvb3QgdmlldyBjYW5ub3QgYmUgYSBzdWJ2aWV3LiIpCisgICAgICAgIGlmIChXZWJJ
bnNwZWN0b3IuVmlldy5fcm9vdFZpZXcpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAg
V2ViSW5zcGVjdG9yLlZpZXcuX3Jvb3RWaWV3ID0gdGhpczsKKyAgICB9CisKICAgICBhZGRTdWJ2
aWV3KHZpZXcpCiAgICAgewogICAgICAgICB0aGlzLmluc2VydFN1YnZpZXdCZWZvcmUodmlldywg
bnVsbCk7CkBAIC02MCw2ICs3OCw3IEBAIFdlYkluc3BlY3Rvci5WaWV3ID0gY2xhc3MgVmlldyBl
eHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QKICAgICB7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0
KHZpZXcgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuVmlldyk7CiAgICAgICAgIGNvbnNvbGUuYXNz
ZXJ0KCFyZWZlcmVuY2VWaWV3IHx8IHJlZmVyZW5jZVZpZXcgaW5zdGFuY2VvZiBXZWJJbnNwZWN0
b3IuVmlldyk7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHZpZXcgIT09IFdlYkluc3BlY3Rvci5W
aWV3Ll9yb290VmlldywgIlJvb3QgdmlldyBjYW5ub3QgYmUgYSBzdWJ2aWV3LiIpOwogCiAgICAg
ICAgIGlmICh0aGlzLl9zdWJ2aWV3cy5pbmNsdWRlcyh2aWV3KSkgewogICAgICAgICAgICAgY29u
c29sZS5hc3NlcnQoZmFsc2UsICJDYW5ub3QgYWRkIHZpZXcgdGhhdCBpcyBhbHJlYWR5IGEgc3Vi
dmlldy4iLCB2aWV3KTsKQEAgLTczLDcgKzkyLDExIEBAIFdlYkluc3BlY3Rvci5WaWV3ID0gY2xh
c3MgVmlldyBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QKICAgICAgICAgfQogCiAgICAgICAg
IHRoaXMuX3N1YnZpZXdzLmluc2VydEF0SW5kZXgodmlldywgYmVmb3JlSW5kZXgpOwotICAgICAg
ICB0aGlzLl9lbGVtZW50Lmluc2VydEJlZm9yZSh2aWV3LmVsZW1lbnQsIHJlZmVyZW5jZVZpZXcg
PyByZWZlcmVuY2VWaWV3LmVsZW1lbnQgOiBudWxsKTsKKworICAgICAgICBpZiAoIXZpZXcuZWxl
bWVudC5wYXJlbnROb2RlKQorICAgICAgICAgICAgdGhpcy5fZWxlbWVudC5pbnNlcnRCZWZvcmUo
dmlldy5lbGVtZW50LCByZWZlcmVuY2VWaWV3ID8gcmVmZXJlbmNlVmlldy5lbGVtZW50IDogbnVs
bCk7CisKKyAgICAgICAgdmlldy5kaWRBdHRhY2godGhpcyk7CiAgICAgfQogCiAgICAgcmVtb3Zl
U3Vidmlldyh2aWV3KQpAQCAtODgsNiArMTExLDcgQEAgV2ViSW5zcGVjdG9yLlZpZXcgPSBjbGFz
cyBWaWV3IGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAogCiAgICAgICAgIHRoaXMuX3N1YnZp
ZXdzLnJlbW92ZSh2aWV3LCB0cnVlKTsKICAgICAgICAgdGhpcy5fZWxlbWVudC5yZW1vdmVDaGls
ZCh2aWV3LmVsZW1lbnQpOworICAgICAgICB2aWV3LmRpZERldGFjaCgpOwogICAgIH0KIAogICAg
IHJlcGxhY2VTdWJ2aWV3KG9sZFZpZXcsIG5ld1ZpZXcpCkBAIC0xMDAsMTIgKzEyNCwxMyBAQCBX
ZWJJbnNwZWN0b3IuVmlldyA9IGNsYXNzIFZpZXcgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0
CiAKICAgICB1cGRhdGVMYXlvdXQoKQogICAgIHsKKyAgICAgICAgV2ViSW5zcGVjdG9yLlZpZXcu
X3Vuc2NoZWR1bGVMYXlvdXRGb3JWaWV3KHRoaXMpOwogICAgICAgICB0aGlzLl9sYXlvdXRTdWJ0
cmVlKCk7CiAgICAgfQogCiAgICAgdXBkYXRlTGF5b3V0SWZOZWVkZWQoKQogICAgIHsKLSAgICAg
ICAgaWYgKCF0aGlzLl9zY2hlZHVsZWRMYXlvdXRVcGRhdGVJZGVudGlmaWVyKQorICAgICAgICBp
ZiAoIXRoaXMuX2RpcnR5KQogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIHRoaXMudXBk
YXRlTGF5b3V0KCk7CkBAIC0xMTMsMTcgKzEzOCwyNiBAQCBXZWJJbnNwZWN0b3IuVmlldyA9IGNs
YXNzIFZpZXcgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0CiAKICAgICBuZWVkc0xheW91dCgp
CiAgICAgewotICAgICAgICBpZiAodGhpcy5fc2NoZWR1bGVkTGF5b3V0VXBkYXRlSWRlbnRpZmll
cikKKyAgICAgICAgaWYgKHRoaXMuX2RpcnR5KQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAg
ICAgIHRoaXMuX3NjaGVkdWxlZExheW91dFVwZGF0ZUlkZW50aWZpZXIgPSByZXF1ZXN0QW5pbWF0
aW9uRnJhbWUoKCkgPT4gewotICAgICAgICAgICAgdGhpcy5fc2NoZWR1bGVkTGF5b3V0VXBkYXRl
SWRlbnRpZmllciA9IHVuZGVmaW5lZDsKLSAgICAgICAgICAgIHRoaXMuX2xheW91dFN1YnRyZWUo
KTsKLSAgICAgICAgfSk7CisgICAgICAgIFdlYkluc3BlY3Rvci5WaWV3Ll9zY2hlZHVsZUxheW91
dEZvclZpZXcodGhpcyk7CiAgICAgfQogCiAgICAgLy8gUHJvdGVjdGVkCiAKKyAgICBkaWRBdHRh
Y2gocGFyZW50VmlldykKKyAgICB7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KCF0aGlzLl9wYXJl
bnRWaWV3LCAiQXR0YWNoZWQgdmlldyBhbHJlYWR5IGhhcyBhIHBhcmVudC4iLCB0aGlzLl9wYXJl
bnRWaWV3KTsKKyAgICAgICAgdGhpcy5fcGFyZW50VmlldyA9IHBhcmVudFZpZXc7CisgICAgfQor
CisgICAgZGlkRGV0YWNoKCkKKyAgICB7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMuX3Bh
cmVudFZpZXcsICJEZXRhY2hlZCB2aWV3IGhhcyBubyBwYXJlbnQuIikKKyAgICAgICAgdGhpcy5f
cGFyZW50VmlldyA9IG51bGw7CisgICAgfQorCiAgICAgbGF5b3V0KCkKICAgICB7CiAgICAgICAg
IC8vIE92ZXJyaWRkZW4gYnkgc3ViY2xhc3Nlcy4KQEAgLTEzNSwxNCArMTY5LDgyIEBAIFdlYklu
c3BlY3Rvci5WaWV3ID0gY2xhc3MgVmlldyBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QKIAog
ICAgIF9sYXlvdXRTdWJ0cmVlKCkKICAgICB7Ci0gICAgICAgIGlmICh0aGlzLl9zY2hlZHVsZWRM
YXlvdXRVcGRhdGVJZGVudGlmaWVyKSB7Ci0gICAgICAgICAgICBjYW5jZWxBbmltYXRpb25GcmFt
ZSh0aGlzLl9zY2hlZHVsZWRMYXlvdXRVcGRhdGVJZGVudGlmaWVyKTsKLSAgICAgICAgICAgIHRo
aXMuX3NjaGVkdWxlZExheW91dFVwZGF0ZUlkZW50aWZpZXIgPSB1bmRlZmluZWQ7Ci0gICAgICAg
IH0KKyAgICAgICAgdGhpcy5fZGlydHkgPSBmYWxzZTsKKyAgICAgICAgdGhpcy5fZGlydHlEZXNj
ZW5kYW50cyA9IDA7CiAKICAgICAgICAgdGhpcy5sYXlvdXQoKTsKIAogICAgICAgICBmb3IgKGxl
dCB2aWV3IG9mIHRoaXMuX3N1YnZpZXdzKQogICAgICAgICAgICAgdmlldy5fbGF5b3V0U3VidHJl
ZSgpOwogICAgIH0KKworICAgIC8vIFByaXZhdGUgbGF5b3V0IGNvbnRyb2xsZXIgbG9naWMKKwor
ICAgIHN0YXRpYyBfc2NoZWR1bGVMYXlvdXRGb3JWaWV3KHZpZXcpCisgICAgeworICAgICAgICAv
LyBBc3luY2hyb25vdXMgbGF5b3V0cyBhcmVuJ3Qgc2NoZWR1bGVkIHVudGlsIHRoZSByb290IHZp
ZXcgaGFzIGJlZW4gc2V0LgorICAgICAgICAvLyBJZiB0aGUgcm9vdCB2aWV3IGhhc24ndCBiZWVu
IHNldCwgc3dpdGNoIHRvIGEgc3luY2hyb25vdXMgbGF5b3V0LgorICAgICAgICBpZiAoIVdlYklu
c3BlY3Rvci5WaWV3Ll9yb290VmlldykgeworICAgICAgICAgICAgdmlldy5fbGF5b3V0U3VidHJl
ZSgpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgdmlldy5fZGly
dHkgPSB0cnVlOworCisgICAgICAgIGxldCBwYXJlbnRWaWV3ID0gdmlldy5wYXJlbnRWaWV3Owor
ICAgICAgICB3aGlsZSAocGFyZW50VmlldykgeworICAgICAgICAgICAgcGFyZW50Vmlldy5fZGly
dHlEZXNjZW5kYW50cysrOworICAgICAgICAgICAgcGFyZW50VmlldyA9IHBhcmVudFZpZXcucGFy
ZW50VmlldzsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChXZWJJbnNwZWN0b3IuVmlldy5fc2No
ZWR1bGVkTGF5b3V0VXBkYXRlSWRlbnRpZmllcikKKyAgICAgICAgICAgIHJldHVybjsKKworICAg
ICAgICBXZWJJbnNwZWN0b3IuVmlldy5fc2NoZWR1bGVkTGF5b3V0VXBkYXRlSWRlbnRpZmllciA9
IHJlcXVlc3RBbmltYXRpb25GcmFtZShXZWJJbnNwZWN0b3IuVmlldy5fdmlzaXRWaWV3VHJlZUZv
ckxheW91dCk7CisgICAgfQorCisgICAgc3RhdGljIF91bnNjaGVkdWxlTGF5b3V0Rm9yVmlldyh2
aWV3KQorICAgIHsKKyAgICAgICAgLy8gQXN5bmNocm9ub3VzIGxheW91dHMgYXJlbid0IHNjaGVk
dWxlZCB1bnRpbCB0aGUgcm9vdCB2aWV3IGhhcyBiZWVuIHNldC4KKyAgICAgICAgaWYgKCFXZWJJ
bnNwZWN0b3IuVmlldy5fcm9vdFZpZXcpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAg
bGV0IHVuc2NoZWR1bGVkTGF5b3V0cyA9IHZpZXcuX2RpcnR5RGVzY2VuZGFudHM7CisgICAgICAg
IGlmICh0aGlzLl9kaXJ0eSkKKyAgICAgICAgICAgIHVuc2NoZWR1bGVkTGF5b3V0cysrOworCisg
ICAgICAgIGxldCBwYXJlbnRWaWV3ID0gdmlldy5wYXJlbnRWaWV3OworICAgICAgICB3aGlsZSAo
cGFyZW50VmlldykgeworICAgICAgICAgICAgbGV0IG9sZERpcnR5RGVzY2VuZGFudHMgPSBwYXJl
bnRWaWV3Ll9kaXJ0eURlc2NlbmRhbnRzOworICAgICAgICAgICAgcGFyZW50Vmlldy5fZGlydHlE
ZXNjZW5kYW50cyA9IE1hdGgubWF4KDAsIHBhcmVudFZpZXcuX2RpcnR5RGVzY2VuZGFudHMgLSB1
bnNjaGVkdWxlZExheW91dHMpOworICAgICAgICAgICAgcGFyZW50VmlldyA9IHBhcmVudFZpZXcu
cGFyZW50VmlldzsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChXZWJJbnNwZWN0b3IuVmlldy5f
cm9vdFZpZXcuX2RpcnR5RGVzY2VuZGFudHMgfHwgIVdlYkluc3BlY3Rvci5WaWV3Ll9zY2hlZHVs
ZWRMYXlvdXRVcGRhdGVJZGVudGlmaWVyKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAg
IGNhbmNlbEFuaW1hdGlvbkZyYW1lKFdlYkluc3BlY3Rvci5WaWV3Ll9zY2hlZHVsZWRMYXlvdXRV
cGRhdGVJZGVudGlmaWVyKTsKKyAgICAgICAgV2ViSW5zcGVjdG9yLlZpZXcuX3NjaGVkdWxlZExh
eW91dFVwZGF0ZUlkZW50aWZpZXIgPSB1bmRlZmluZWQ7CisgICAgfQorCisgICAgc3RhdGljIF92
aXNpdFZpZXdUcmVlRm9yTGF5b3V0KCkKKyAgICB7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KFdl
Ykluc3BlY3Rvci5WaWV3Ll9yb290VmlldywgIkNhbm5vdCBsYXlvdXQgdmlldyB0cmVlIHdpdGhv
dXQgYSByb290LiIpOworCisgICAgICAgIFdlYkluc3BlY3Rvci5WaWV3Ll9zY2hlZHVsZWRMYXlv
dXRVcGRhdGVJZGVudGlmaWVyID0gdW5kZWZpbmVkOworCisgICAgICAgIGxldCB2aWV3cyA9IFtX
ZWJJbnNwZWN0b3IuVmlldy5fcm9vdFZpZXddOworICAgICAgICB3aGlsZSAodmlld3MubGVuZ3Ro
KSB7CisgICAgICAgICAgICBsZXQgdmlldyA9IHZpZXdzLnNoaWZ0KCk7CisgICAgICAgICAgICBp
ZiAodmlldy5sYXlvdXRQZW5kaW5nKQorICAgICAgICAgICAgICAgIHZpZXcuX2xheW91dFN1YnRy
ZWUoKTsKKyAgICAgICAgICAgIGVsc2UgaWYgKHZpZXcuX2RpcnR5RGVzY2VuZGFudHMpIHsKKyAg
ICAgICAgICAgICAgICB2aWV3cyA9IHZpZXdzLmNvbmNhdCh2aWV3LnN1YnZpZXdzKTsKKyAgICAg
ICAgICAgICAgICB2aWV3Ll9kaXJ0eURlc2NlbmRhbnRzID0gMDsKKyAgICAgICAgICAgIH0KKyAg
ICAgICAgfQorICAgIH0KIH07CisKK1dlYkluc3BlY3Rvci5WaWV3Ll9yb290VmlldyA9IG51bGw7
CitXZWJJbnNwZWN0b3IuVmlldy5fc2NoZWR1bGVkTGF5b3V0VXBkYXRlSWRlbnRpZmllciA9IHVu
ZGVmaW5lZDsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>265227</attachid>
            <date>2015-11-10 13:40:32 -0800</date>
            <delta_ts>2015-11-10 14:31:21 -0800</delta_ts>
            <desc>[Patch] Proposed Fix</desc>
            <filename>bug-150993-20151110134027.patch</filename>
            <type>text/plain</type>
            <size>11013</size>
            <attacher name="Matt Baker">mattbaker</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTkyMjYwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwppbmRleCBm
NjM1NjQyZGU1Y2NlOTcyNGI0MWFlNGE0MmRhMTMyNDdlYTI0OTViLi5iMWRjMTQyYjFiYzdlNzg3
N2UxOTRjMmJkNGI3MjZhZjA0M2FiNDdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0OCBAQAorMjAxNS0xMS0xMCAgTWF0dCBCYWtlciAgPG1hdHRiYWtlckBhcHBsZS5jb20+
CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogQmF0Y2ggYWxsIHNjaGVkdWxlZCBsYXlvdXRzIGFu
ZCB1cGRhdGUgdGhlIHZpZXcgdHJlZSBpbiBhIHNpbmdsZSBhbmltYXRpb24gZnJhbWUKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1MDk5MworCisgICAg
ICAgIFJldmlld2VkIGJ5IEJyaWFuIEJ1cmcuCisKKyAgICAgICAgU2hpZnRzIHJlc3BvbnNpYmls
aXR5IGZvciBzY2hlZHVsaW5nIGFzeW5jaHJvbm91cyBsYXlvdXRzIGZyb20gdmlldyBvYmplY3Rz
IHRvIGEgY29udHJvbGxlcgorICAgICAgICBsYXllciwgaW1wbGVtZW50ZWQgYXMgcHJpdmF0ZSBz
dGF0aWMgbWV0aG9kcyBhbmQgcHJvcGVydGllcyBpbiB0aGUgVmlldyBjbGFzcy4gQSBzaW5nbGUg
YW5pbWF0aW9uCisgICAgICAgIGZyYW1lIGNhbGxiYWNrIHBlcmZvcm1zIGEgYnJlYWR0aC1maXJz
dCB0cmF2ZXJzYWwgb2YgdGhlIHZpZXcgdHJlZSBzdGFydGluZyBhdCB0aGUgcm9vdCB2aWV3LAor
ICAgICAgICB1cGRhdGluZyB2aWV3cyBtYXJrZWQgYXMgbmVlZGluZyBhIGxheW91dC4KKworICAg
ICAgICAqIFVzZXJJbnRlcmZhY2UvQmFzZS9NYWluLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LmNvbnRlbnRMb2FkZWQpOgorICAgICAgICBTZXR1cCByb290IHZpZXcuCisKKyAgICAgICAgKiBV
c2VySW50ZXJmYWNlL1ZpZXdzL1ZpZXcuanM6CisgICAgICAgIEFkZGVkIHByaXZhdGUgY2xhc3Mg
cHJvcGVydGllcyBmb3Igcm9vdCB2aWV3IHJlZmVyZW5jZSBhbmQgckFGIGlkZW50aWZpZXIuCisg
ICAgICAgIChXZWJJbnNwZWN0b3IuVmlldyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVmlldy5w
cm90b3R5cGUuZ2V0IGxheW91dFBlbmRpbmcpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZpZXcu
cHJvdG90eXBlLmdldCBwYXJlbnRWaWV3KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5WaWV3LnBy
b3RvdHlwZS5tYWtlUm9vdFZpZXcpOgorICAgICAgICBTZXQgY3VycmVudCB2aWV3IHRvIGJlIHRo
ZSByb290IG9mIHRoZSB2aWV3IGhpZXJhcmNoeS4KKyAgICAgICAgQ2FuIG9ubHkgYmUgY2FsbGVk
IG9uY2UuCisgICAgICAgIChXZWJJbnNwZWN0b3IuVmlldy5wcm90b3R5cGUuaW5zZXJ0U3Vidmll
d0JlZm9yZSk6CisgICAgICAgIE5vIGxvbmdlciBhcHBlbmRzIHN1YnZpZXcgZWxlbWVudCB0byBw
YXJlbnQgZWxlbWVudCwgaWYgc3VidmlldyBhbHJlYWR5IGluIHRoZSBET00uCisgICAgICAgIENo
ZWNrcyB0aGF0IHZpZXcgYmVpbmcgaW5zZXJ0ZWQgaXNuJ3QgdGhlIHJvb3Qgdmlldy4KKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5WaWV3LnByb3RvdHlwZS5yZW1vdmVTdWJ2aWV3KToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5WaWV3LnByb3RvdHlwZS51cGRhdGVMYXlvdXQpOgorICAgICAgICBDYW5j
ZWxzIGFueSBzY2hlZHVsZWQgbGF5b3V0cyBmb3IgdGhlIHZpZXcsIHRoZW4gZG9lcyBhIHN5bmNo
cm9ub3VzIGxheW91dC4KKyAgICAgICAgKFdlYkluc3BlY3Rvci5WaWV3LnByb3RvdHlwZS51cGRh
dGVMYXlvdXRJZk5lZWRlZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuVmlldy5wcm90b3R5cGUu
bmVlZHNMYXlvdXQpOgorICAgICAgICBTY2hlZHVsZXMgdmlldyBmb3IgdGhlIG5leHQgYXN5bmNo
cm9ub3VzIGxheW91dCwgaWYgbm90IGFscmVhZHkgc2NoZWR1bGVkLgorICAgICAgICAoV2ViSW5z
cGVjdG9yLlZpZXcucHJvdG90eXBlLmRpZEF0dGFjaCk6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
Vmlldy5wcm90b3R5cGUuZGlkRGV0YWNoKToKKyAgICAgICAgSW5mb3JtIHZpZXcgb2YgY2hhbmdp
bmcgcGFyZW50IHZpZXcuCisgICAgICAgIChXZWJJbnNwZWN0b3IuVmlldy5wcm90b3R5cGUuX2xh
eW91dFN1YnRyZWUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlZpZXcuX3NjaGVkdWxlTGF5b3V0
Rm9yVmlldyk6CisgICAgICAgIEluY3JlbWVudHMgZGlydHkgY291bnRzIG9uIGFuY2VzdG9yIHZp
ZXdzLCBzY2hlZHVsZXMgYSBsYXlvdXQgaWYgbmVlZGVkLgorICAgICAgICAoV2ViSW5zcGVjdG9y
LlZpZXcuX2NhbmNlbFNjaGVkdWxlZExheW91dEZvclZpZXcpOgorICAgICAgICBEZWNyZW1lbnRz
IGRpcnR5IGNvdW50cyBvbiBhbmNlc3RvciB2aWV3cywgY2FuY2VscyBhIHBlbmRpbmcgbGF5b3V0
IGlmIG5lZWRlZC4KKyAgICAgICAgKFdlYkluc3BlY3Rvci5WaWV3Ll92aXNpdFZpZXdUcmVlRm9y
TGF5b3V0KToKKyAgICAgICAgQW5pbWF0aW9uIGZyYW1lIGNhbGxiYWNrLiBEb2VzIGEgYnJlYWR0
aC1maXJzdCB0cmF2ZXJzYWwgb2YgdGhlIHZpZXcgdHJlZSwKKyAgICAgICAgYW5kIHVwZGF0ZXMg
dGhlIGxheW91dCBvZiB2aWV3cyBtYXJrZWQgYXMgZGlydHkuCisKIDIwMTUtMTEtMDkgIEpvc2Vw
aCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9y
OiBTdXBwb3J0IEdlc3R1cmUgRXZlbnRzIHRvIHpvb20gaW4gLyBvdXQgb2YgdGhlIFRpbWVsaW5l
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9CYXNlL01h
aW4uanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9CYXNlL01haW4uanMK
aW5kZXggN2ZjNmU4YzBkNTJkODY4Zjg1NmYzNjRlNmMxOTc2ZmE3ZmNkNjY3Yy4uODA1YTg5NDFl
OGRlYmI3MTRjODdjOTkzNDljZjYyZDQxM2NkYjY2NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQmFzZS9NYWluLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0Jhc2UvTWFpbi5qcwpAQCAtMzU1LDYgKzM1NSw3IEBAIFdl
Ykluc3BlY3Rvci5jb250ZW50TG9hZGVkID0gZnVuY3Rpb24oKQogCiAgICAgdGhpcy5fdXBkYXRl
RG9ja05hdmlnYXRpb25JdGVtcygpOwogICAgIHRoaXMuX3VwZGF0ZVRvb2xiYXJIZWlnaHQoKTsK
KyAgICB0aGlzLl9zZXR1cFZpZXdIaWVyYXJjaHkoKTsKIAogICAgIHRoaXMuX3BlbmRpbmdPcGVu
VGFicyA9IFtdOwogCkBAIC0xMzczLDYgKzEzNzQsMjAgQEAgV2ViSW5zcGVjdG9yLl91cGRhdGVU
b29sYmFySGVpZ2h0ID0gZnVuY3Rpb24oKQogICAgICAgICBJbnNwZWN0b3JGcm9udGVuZEhvc3Qu
c2V0VG9vbGJhckhlaWdodCh0aGlzLnRvb2xiYXIuZWxlbWVudC5vZmZzZXRIZWlnaHQpOwogfTsK
IAorV2ViSW5zcGVjdG9yLl9zZXR1cFZpZXdIaWVyYXJjaHkgPSBmdW5jdGlvbigpCit7CisgICAg
bGV0IHJvb3RWaWV3ID0gbmV3IFdlYkluc3BlY3Rvci5WaWV3KGRvY3VtZW50LmJvZHkpOworICAg
IHJvb3RWaWV3LmFkZFN1YnZpZXcodGhpcy50b29sYmFyKTsKKyAgICByb290Vmlldy5hZGRTdWJ2
aWV3KHRoaXMudGFiQmFyKTsKKyAgICByb290Vmlldy5hZGRTdWJ2aWV3KHRoaXMudGFiQnJvd3Nl
cik7CisgICAgcm9vdFZpZXcuYWRkU3Vidmlldyh0aGlzLnNwbGl0Q29udGVudEJyb3dzZXIpOwor
ICAgIHJvb3RWaWV3LmFkZFN1YnZpZXcodGhpcy5xdWlja0NvbnNvbGUpOworCisgICAgLy8gRklY
TUU6IGFkZCBuYXZpZ2F0aW9uIGFuZCBkZXRhaWxzIHNpZGViYXJzIHRvIHRoZSB0cmVlIG9uY2Ug
PGh0dHBzOi8vd2Via2l0Lm9yZy9iLzE1MTA1Nz4gaXMgZml4ZWQuCisKKyAgICByb290Vmlldy5t
YWtlUm9vdFZpZXcoKTsKK307CisKIFdlYkluc3BlY3Rvci5fdGFiQnJvd3NlclNlbGVjdGVkVGFi
Q29udGVudFZpZXdEaWRDaGFuZ2UgPSBmdW5jdGlvbihldmVudCkKIHsKICAgICBpZiAodGhpcy50
YWJCYXIuc2VsZWN0ZWRUYWJCYXJJdGVtKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVmlldy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL1ZpZXdzL1ZpZXcuanMKaW5kZXggMWMyNzkzOWQ3Mjk0MzQyYjA1MTc3MDk5
ZjllNGI0ZTI0NzY2YTI3YS4uYjMxNDAzMjcyM2E2OTdiOWRjOWJlNmJiM2U1NWI3MTFmMGU0ZDdi
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3Mv
Vmlldy5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9W
aWV3LmpzCkBAIC0zMSw3ICszMSwxMCBAQCBXZWJJbnNwZWN0b3IuVmlldyA9IGNsYXNzIFZpZXcg
ZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0CiAKICAgICAgICAgdGhpcy5fZWxlbWVudCA9IGVs
ZW1lbnQgfHwgZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2Iik7CiAgICAgICAgIHRoaXMuX2Vs
ZW1lbnQuX192aWV3ID0gdGhpczsKKyAgICAgICAgdGhpcy5fcGFyZW50VmlldyA9IG51bGw7CiAg
ICAgICAgIHRoaXMuX3N1YnZpZXdzID0gW107CisgICAgICAgIHRoaXMuX2RpcnR5ID0gZmFsc2U7
CisgICAgICAgIHRoaXMuX2RpcnR5RGVzY2VuZGFudHNDb3VudCA9IDA7CiAgICAgfQogCiAgICAg
Ly8gUHVibGljCkBAIC00Myw3ICs0NiwxMiBAQCBXZWJJbnNwZWN0b3IuVmlldyA9IGNsYXNzIFZp
ZXcgZXh0ZW5kcyBXZWJJbnNwZWN0b3IuT2JqZWN0CiAKICAgICBnZXQgbGF5b3V0UGVuZGluZygp
CiAgICAgewotICAgICAgICByZXR1cm4gISF0aGlzLl9zY2hlZHVsZWRMYXlvdXRVcGRhdGVJZGVu
dGlmaWVyOworICAgICAgICByZXR1cm4gdGhpcy5fZGlydHk7CisgICAgfQorCisgICAgZ2V0IHBh
cmVudFZpZXcoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX3BhcmVudFZpZXc7CiAgICAg
fQogCiAgICAgZ2V0IHN1YnZpZXdzKCkKQEAgLTUxLDYgKzU5LDE2IEBAIFdlYkluc3BlY3Rvci5W
aWV3ID0gY2xhc3MgVmlldyBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QKICAgICAgICAgcmV0
dXJuIHRoaXMuX3N1YnZpZXdzOwogICAgIH0KIAorICAgIG1ha2VSb290VmlldygpCisgICAgewor
ICAgICAgICBjb25zb2xlLmFzc2VydCghV2ViSW5zcGVjdG9yLlZpZXcuX3Jvb3RWaWV3LCAiUm9v
dCB2aWV3IGFscmVhZHkgZXhpc3RzLiIpOworICAgICAgICBjb25zb2xlLmFzc2VydCghdGhpcy5f
cGFyZW50VmlldywgIlJvb3QgdmlldyBjYW5ub3QgYmUgYSBzdWJ2aWV3LiIpCisgICAgICAgIGlm
IChXZWJJbnNwZWN0b3IuVmlldy5fcm9vdFZpZXcpCisgICAgICAgICAgICByZXR1cm47CisKKyAg
ICAgICAgV2ViSW5zcGVjdG9yLlZpZXcuX3Jvb3RWaWV3ID0gdGhpczsKKyAgICB9CisKICAgICBh
ZGRTdWJ2aWV3KHZpZXcpCiAgICAgewogICAgICAgICB0aGlzLmluc2VydFN1YnZpZXdCZWZvcmUo
dmlldywgbnVsbCk7CkBAIC02MCw2ICs3OCw3IEBAIFdlYkluc3BlY3Rvci5WaWV3ID0gY2xhc3Mg
VmlldyBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QKICAgICB7CiAgICAgICAgIGNvbnNvbGUu
YXNzZXJ0KHZpZXcgaW5zdGFuY2VvZiBXZWJJbnNwZWN0b3IuVmlldyk7CiAgICAgICAgIGNvbnNv
bGUuYXNzZXJ0KCFyZWZlcmVuY2VWaWV3IHx8IHJlZmVyZW5jZVZpZXcgaW5zdGFuY2VvZiBXZWJJ
bnNwZWN0b3IuVmlldyk7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHZpZXcgIT09IFdlYkluc3Bl
Y3Rvci5WaWV3Ll9yb290VmlldywgIlJvb3QgdmlldyBjYW5ub3QgYmUgYSBzdWJ2aWV3LiIpOwog
CiAgICAgICAgIGlmICh0aGlzLl9zdWJ2aWV3cy5pbmNsdWRlcyh2aWV3KSkgewogICAgICAgICAg
ICAgY29uc29sZS5hc3NlcnQoZmFsc2UsICJDYW5ub3QgYWRkIHZpZXcgdGhhdCBpcyBhbHJlYWR5
IGEgc3Vidmlldy4iLCB2aWV3KTsKQEAgLTczLDcgKzkyLDExIEBAIFdlYkluc3BlY3Rvci5WaWV3
ID0gY2xhc3MgVmlldyBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QKICAgICAgICAgfQogCiAg
ICAgICAgIHRoaXMuX3N1YnZpZXdzLmluc2VydEF0SW5kZXgodmlldywgYmVmb3JlSW5kZXgpOwot
ICAgICAgICB0aGlzLl9lbGVtZW50Lmluc2VydEJlZm9yZSh2aWV3LmVsZW1lbnQsIHJlZmVyZW5j
ZVZpZXcgPyByZWZlcmVuY2VWaWV3LmVsZW1lbnQgOiBudWxsKTsKKworICAgICAgICBpZiAoIXZp
ZXcuZWxlbWVudC5wYXJlbnROb2RlKQorICAgICAgICAgICAgdGhpcy5fZWxlbWVudC5pbnNlcnRC
ZWZvcmUodmlldy5lbGVtZW50LCByZWZlcmVuY2VWaWV3ID8gcmVmZXJlbmNlVmlldy5lbGVtZW50
IDogbnVsbCk7CisKKyAgICAgICAgdmlldy5kaWRBdHRhY2godGhpcyk7CiAgICAgfQogCiAgICAg
cmVtb3ZlU3Vidmlldyh2aWV3KQpAQCAtODgsNiArMTExLDcgQEAgV2ViSW5zcGVjdG9yLlZpZXcg
PSBjbGFzcyBWaWV3IGV4dGVuZHMgV2ViSW5zcGVjdG9yLk9iamVjdAogCiAgICAgICAgIHRoaXMu
X3N1YnZpZXdzLnJlbW92ZSh2aWV3LCB0cnVlKTsKICAgICAgICAgdGhpcy5fZWxlbWVudC5yZW1v
dmVDaGlsZCh2aWV3LmVsZW1lbnQpOworICAgICAgICB2aWV3LmRpZERldGFjaCgpOwogICAgIH0K
IAogICAgIHJlcGxhY2VTdWJ2aWV3KG9sZFZpZXcsIG5ld1ZpZXcpCkBAIC0xMDAsMTIgKzEyNCwx
MyBAQCBXZWJJbnNwZWN0b3IuVmlldyA9IGNsYXNzIFZpZXcgZXh0ZW5kcyBXZWJJbnNwZWN0b3Iu
T2JqZWN0CiAKICAgICB1cGRhdGVMYXlvdXQoKQogICAgIHsKKyAgICAgICAgV2ViSW5zcGVjdG9y
LlZpZXcuX2NhbmNlbFNjaGVkdWxlZExheW91dEZvclZpZXcodGhpcyk7CiAgICAgICAgIHRoaXMu
X2xheW91dFN1YnRyZWUoKTsKICAgICB9CiAKICAgICB1cGRhdGVMYXlvdXRJZk5lZWRlZCgpCiAg
ICAgewotICAgICAgICBpZiAoIXRoaXMuX3NjaGVkdWxlZExheW91dFVwZGF0ZUlkZW50aWZpZXIp
CisgICAgICAgIGlmICghdGhpcy5fZGlydHkpCiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAg
ICAgdGhpcy51cGRhdGVMYXlvdXQoKTsKQEAgLTExMywxNyArMTM4LDI2IEBAIFdlYkluc3BlY3Rv
ci5WaWV3ID0gY2xhc3MgVmlldyBleHRlbmRzIFdlYkluc3BlY3Rvci5PYmplY3QKIAogICAgIG5l
ZWRzTGF5b3V0KCkKICAgICB7Ci0gICAgICAgIGlmICh0aGlzLl9zY2hlZHVsZWRMYXlvdXRVcGRh
dGVJZGVudGlmaWVyKQorICAgICAgICBpZiAodGhpcy5fZGlydHkpCiAgICAgICAgICAgICByZXR1
cm47CiAKLSAgICAgICAgdGhpcy5fc2NoZWR1bGVkTGF5b3V0VXBkYXRlSWRlbnRpZmllciA9IHJl
cXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7Ci0gICAgICAgICAgICB0aGlzLl9zY2hlZHVsZWRM
YXlvdXRVcGRhdGVJZGVudGlmaWVyID0gdW5kZWZpbmVkOwotICAgICAgICAgICAgdGhpcy5fbGF5
b3V0U3VidHJlZSgpOwotICAgICAgICB9KTsKKyAgICAgICAgV2ViSW5zcGVjdG9yLlZpZXcuX3Nj
aGVkdWxlTGF5b3V0Rm9yVmlldyh0aGlzKTsKICAgICB9CiAKICAgICAvLyBQcm90ZWN0ZWQKIAor
ICAgIGRpZEF0dGFjaChwYXJlbnRWaWV3KQorICAgIHsKKyAgICAgICAgY29uc29sZS5hc3NlcnQo
IXRoaXMuX3BhcmVudFZpZXcsICJBdHRhY2hlZCB2aWV3IGFscmVhZHkgaGFzIGEgcGFyZW50LiIs
IHRoaXMuX3BhcmVudFZpZXcpOworICAgICAgICB0aGlzLl9wYXJlbnRWaWV3ID0gcGFyZW50Vmll
dzsKKyAgICB9CisKKyAgICBkaWREZXRhY2goKQorICAgIHsKKyAgICAgICAgY29uc29sZS5hc3Nl
cnQodGhpcy5fcGFyZW50VmlldywgIkRldGFjaGVkIHZpZXcgaGFzIG5vIHBhcmVudC4iKQorICAg
ICAgICB0aGlzLl9wYXJlbnRWaWV3ID0gbnVsbDsKKyAgICB9CisKICAgICBsYXlvdXQoKQogICAg
IHsKICAgICAgICAgLy8gT3ZlcnJpZGRlbiBieSBzdWJjbGFzc2VzLgpAQCAtMTM1LDE0ICsxNjks
ODIgQEAgV2ViSW5zcGVjdG9yLlZpZXcgPSBjbGFzcyBWaWV3IGV4dGVuZHMgV2ViSW5zcGVjdG9y
Lk9iamVjdAogCiAgICAgX2xheW91dFN1YnRyZWUoKQogICAgIHsKLSAgICAgICAgaWYgKHRoaXMu
X3NjaGVkdWxlZExheW91dFVwZGF0ZUlkZW50aWZpZXIpIHsKLSAgICAgICAgICAgIGNhbmNlbEFu
aW1hdGlvbkZyYW1lKHRoaXMuX3NjaGVkdWxlZExheW91dFVwZGF0ZUlkZW50aWZpZXIpOwotICAg
ICAgICAgICAgdGhpcy5fc2NoZWR1bGVkTGF5b3V0VXBkYXRlSWRlbnRpZmllciA9IHVuZGVmaW5l
ZDsKLSAgICAgICAgfQorICAgICAgICB0aGlzLl9kaXJ0eSA9IGZhbHNlOworICAgICAgICB0aGlz
Ll9kaXJ0eURlc2NlbmRhbnRzQ291bnQgPSAwOwogCiAgICAgICAgIHRoaXMubGF5b3V0KCk7CiAK
ICAgICAgICAgZm9yIChsZXQgdmlldyBvZiB0aGlzLl9zdWJ2aWV3cykKICAgICAgICAgICAgIHZp
ZXcuX2xheW91dFN1YnRyZWUoKTsKICAgICB9CisKKyAgICAvLyBQcml2YXRlIGxheW91dCBjb250
cm9sbGVyIGxvZ2ljCisKKyAgICBzdGF0aWMgX3NjaGVkdWxlTGF5b3V0Rm9yVmlldyh2aWV3KQor
ICAgIHsKKyAgICAgICAgLy8gQXN5bmNocm9ub3VzIGxheW91dHMgYXJlbid0IHNjaGVkdWxlZCB1
bnRpbCB0aGUgcm9vdCB2aWV3IGhhcyBiZWVuIHNldC4KKyAgICAgICAgLy8gSWYgdGhlIHJvb3Qg
dmlldyBoYXNuJ3QgYmVlbiBzZXQsIHN3aXRjaCB0byBhIHN5bmNocm9ub3VzIGxheW91dC4KKyAg
ICAgICAgaWYgKCFXZWJJbnNwZWN0b3IuVmlldy5fcm9vdFZpZXcpIHsKKyAgICAgICAgICAgIHZp
ZXcuX2xheW91dFN1YnRyZWUoKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisg
ICAgICAgIHZpZXcuX2RpcnR5ID0gdHJ1ZTsKKworICAgICAgICBsZXQgcGFyZW50VmlldyA9IHZp
ZXcucGFyZW50VmlldzsKKyAgICAgICAgd2hpbGUgKHBhcmVudFZpZXcpIHsKKyAgICAgICAgICAg
IHBhcmVudFZpZXcuX2RpcnR5RGVzY2VuZGFudHNDb3VudCsrOworICAgICAgICAgICAgcGFyZW50
VmlldyA9IHBhcmVudFZpZXcucGFyZW50VmlldzsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChX
ZWJJbnNwZWN0b3IuVmlldy5fc2NoZWR1bGVkTGF5b3V0VXBkYXRlSWRlbnRpZmllcikKKyAgICAg
ICAgICAgIHJldHVybjsKKworICAgICAgICBXZWJJbnNwZWN0b3IuVmlldy5fc2NoZWR1bGVkTGF5
b3V0VXBkYXRlSWRlbnRpZmllciA9IHJlcXVlc3RBbmltYXRpb25GcmFtZShXZWJJbnNwZWN0b3Iu
Vmlldy5fdmlzaXRWaWV3VHJlZUZvckxheW91dCk7CisgICAgfQorCisgICAgc3RhdGljIF9jYW5j
ZWxTY2hlZHVsZWRMYXlvdXRGb3JWaWV3KHZpZXcpCisgICAgeworICAgICAgICAvLyBBc3luY2hy
b25vdXMgbGF5b3V0cyBhcmVuJ3Qgc2NoZWR1bGVkIHVudGlsIHRoZSByb290IHZpZXcgaGFzIGJl
ZW4gc2V0LgorICAgICAgICBpZiAoIVdlYkluc3BlY3Rvci5WaWV3Ll9yb290VmlldykKKyAgICAg
ICAgICAgIHJldHVybjsKKworICAgICAgICBsZXQgY2FuY2VsbGVkTGF5b3V0cyA9IHZpZXcuX2Rp
cnR5RGVzY2VuZGFudHNDb3VudDsKKyAgICAgICAgaWYgKHRoaXMuX2RpcnR5KQorICAgICAgICAg
ICAgY2FuY2VsbGVkTGF5b3V0cysrOworCisgICAgICAgIGxldCBwYXJlbnRWaWV3ID0gdmlldy5w
YXJlbnRWaWV3OworICAgICAgICB3aGlsZSAocGFyZW50VmlldykgeworICAgICAgICAgICAgcGFy
ZW50Vmlldy5fZGlydHlEZXNjZW5kYW50c0NvdW50ID0gTWF0aC5tYXgoMCwgcGFyZW50Vmlldy5f
ZGlydHlEZXNjZW5kYW50c0NvdW50IC0gY2FuY2VsbGVkTGF5b3V0cyk7CisgICAgICAgICAgICBw
YXJlbnRWaWV3ID0gcGFyZW50Vmlldy5wYXJlbnRWaWV3OworICAgICAgICB9CisKKyAgICAgICAg
aWYgKFdlYkluc3BlY3Rvci5WaWV3Ll9yb290Vmlldy5fZGlydHlEZXNjZW5kYW50c0NvdW50IHx8
ICFXZWJJbnNwZWN0b3IuVmlldy5fc2NoZWR1bGVkTGF5b3V0VXBkYXRlSWRlbnRpZmllcikKKyAg
ICAgICAgICAgIHJldHVybjsKKworICAgICAgICAvLyBObyB2aWV3cyBuZWVkIGxheW91dCwgc28g
Y2FuY2VsIHRoZSBwZW5kaW5nIHJlcXVlc3RBbmltYXRpb25GcmFtZS4KKyAgICAgICAgY2FuY2Vs
QW5pbWF0aW9uRnJhbWUoV2ViSW5zcGVjdG9yLlZpZXcuX3NjaGVkdWxlZExheW91dFVwZGF0ZUlk
ZW50aWZpZXIpOworICAgICAgICBXZWJJbnNwZWN0b3IuVmlldy5fc2NoZWR1bGVkTGF5b3V0VXBk
YXRlSWRlbnRpZmllciA9IHVuZGVmaW5lZDsKKyAgICB9CisKKyAgICBzdGF0aWMgX3Zpc2l0Vmll
d1RyZWVGb3JMYXlvdXQoKQorICAgIHsKKyAgICAgICAgY29uc29sZS5hc3NlcnQoV2ViSW5zcGVj
dG9yLlZpZXcuX3Jvb3RWaWV3LCAiQ2Fubm90IGxheW91dCB2aWV3IHRyZWUgd2l0aG91dCBhIHJv
b3QuIik7CisKKyAgICAgICAgV2ViSW5zcGVjdG9yLlZpZXcuX3NjaGVkdWxlZExheW91dFVwZGF0
ZUlkZW50aWZpZXIgPSB1bmRlZmluZWQ7CisKKyAgICAgICAgbGV0IHZpZXdzID0gW1dlYkluc3Bl
Y3Rvci5WaWV3Ll9yb290Vmlld107CisgICAgICAgIHdoaWxlICh2aWV3cy5sZW5ndGgpIHsKKyAg
ICAgICAgICAgIGxldCB2aWV3ID0gdmlld3Muc2hpZnQoKTsKKyAgICAgICAgICAgIGlmICh2aWV3
LmxheW91dFBlbmRpbmcpCisgICAgICAgICAgICAgICAgdmlldy5fbGF5b3V0U3VidHJlZSgpOwor
ICAgICAgICAgICAgZWxzZSBpZiAodmlldy5fZGlydHlEZXNjZW5kYW50c0NvdW50KSB7CisgICAg
ICAgICAgICAgICAgdmlld3MgPSB2aWV3cy5jb25jYXQodmlldy5zdWJ2aWV3cyk7CisgICAgICAg
ICAgICAgICAgdmlldy5fZGlydHlEZXNjZW5kYW50c0NvdW50ID0gMDsKKyAgICAgICAgICAgIH0K
KyAgICAgICAgfQorICAgIH0KIH07CisKK1dlYkluc3BlY3Rvci5WaWV3Ll9yb290VmlldyA9IG51
bGw7CitXZWJJbnNwZWN0b3IuVmlldy5fc2NoZWR1bGVkTGF5b3V0VXBkYXRlSWRlbnRpZmllciA9
IHVuZGVmaW5lZDsK
</data>

          </attachment>
      

    </bug>

</bugzilla>