<?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>239880</bug_id>
          
          <creation_ts>2022-04-28 18:09:38 -0700</creation_ts>
          <short_desc>Web Inspector: Importing a timeline leaves timeline overview non-scrollable/non-zoomable until windows is resized</short_desc>
          <delta_ts>2022-05-03 09:04:03 -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>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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Patrick Angle">pangle</reporter>
          <assigned_to name="Patrick Angle">pangle</assigned_to>
          <cc>ews-watchlist</cc>
    
    <cc>hi</cc>
    
    <cc>inspector-bugzilla-changes</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1865306</commentid>
    <comment_count>0</comment_count>
    <who name="Patrick Angle">pangle</who>
    <bug_when>2022-04-28 18:09:38 -0700</bug_when>
    <thetext>View layout state is getting corrupted by clearing descendent child counts for a child view&apos;s layout being canceled while that view is being laid out.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1865310</commentid>
    <comment_count>1</comment_count>
      <attachid>458562</attachid>
    <who name="Patrick Angle">pangle</who>
    <bug_when>2022-04-28 18:23:52 -0700</bug_when>
    <thetext>Created attachment 458562
Patch v1.0</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1865453</commentid>
    <comment_count>2</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2022-04-29 09:46:25 -0700</bug_when>
    <thetext>&lt;rdar://problem/92529233&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1865496</commentid>
    <comment_count>3</comment_count>
      <attachid>458562</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2022-04-29 12:18:35 -0700</bug_when>
    <thetext>Comment on attachment 458562
Patch v1.0

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

&gt; Source/WebInspectorUI/UserInterface/Views/View.js:276
&gt; +        this._isInLayout = true;

something about this feels wrong/icky to me

instead of having another member variable, is there any way to introspect the `_dirtyDescendantsCount` _after_ we&apos;ve `layout`?  i guess i&apos;m not entirely sure what the order of events is for this bug.  im not sure i see where/how &quot;Cancelling an in-progress layout&quot; happens</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1865543</commentid>
    <comment_count>4</comment_count>
    <who name="Patrick Angle">pangle</who>
    <bug_when>2022-04-29 14:34:26 -0700</bug_when>
    <thetext>(In reply to Devin Rousso from comment #3)
&gt; Comment on attachment 458562 [details]
&gt; Patch v1.0
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=458562&amp;action=review
&gt; 
&gt; &gt; Source/WebInspectorUI/UserInterface/Views/View.js:276
&gt; &gt; +        this._isInLayout = true;
&gt; 
&gt; something about this feels wrong/icky to me
&gt; 
&gt; instead of having another member variable, is there any way to introspect
&gt; the `_dirtyDescendantsCount` _after_ we&apos;ve `layout`?  i guess i&apos;m not
&gt; entirely sure what the order of events is for this bug.  im not sure i see
&gt; where/how &quot;Cancelling an in-progress layout&quot; happens

This was tricky to work out while I was debugging, but hopefully this helps explain my findings more clearly...

Each view has two member variables that track whether we need to be interested in actually laying it out (since all layout starts from the root view). These are `_dirty`, which tracks if the view itself is dirty and needs `layout()` and related functions called, and `_dirtyDescendantsCount`, which tracks how many children of this view are dirty and need layout called.

In `WI.View._visitViewTreeForLayout`: during layout if the root view is not `_dirty` but has a non-zero `_dirtyDescendantsCount`, each subview is has the same `_dirty`/`_dirtyDescendantsCount` check performed until we reach a view that is marked as dirty. Once we&apos;ve identifier a dirty view, we don&apos;t check its descendents since the view and all of its content will have `layout()` called.

Right before we actual lay out a view, its `_dirty` flag is set to false and its `_dirtyDescendantsCount` is set to zero, since we know it and all of its subviews will be laid out soon. This also allows a subview to mark a superview as needing layout as a result of its own layout (for example, a NavigationItem does this to its parent NavigationBar when it is hidden/shown, since it may mean that more/fewer items have to be collapsed).

After performing layout on the dirty view, each subview (and in turn their subviews...) are laid out, which includes the initial step of setting `_dirty` to false and `_dirtyDescendantsCount` to zero.

The bug here comes when laying out a view causes itself or one of its subviews to call WI.View.prototype.cancelLayout, which in this bug happens with the following stack trace:
	cancelLayout (View.js:182)
	updateLayout (View.js:156)
	_positionHeaderViews (DataGrid.js:1077)
	_updateHeaderAndScrollbar (DataGrid.js:948)
	sizeDidChange (DataGrid.js:942)
	_layoutSubtree (View.js:287)
	_layoutSubtree (View.js:309)
	_layoutSubtree (View.js:309)
	_layoutSubtree (View.js:309)
	_layoutSubtree (View.js:309)
	_visitViewTreeForLayout (View.js:400)
	--- requestAnimationFrame ---
	_scheduleLayoutForView (View.js:361)
	
`cancelLayout()` is turn calls `WI.View._cancelScheduledLayoutForView()`, and this is where the bug actually occurs. A count of cancelled layouts is calculated to be the number of dirty descendents (plus one if the view itself was `_dirty`. We then walk the ancestor chain back to the root view and reduce each ancestors `_dirtyDescendantsCount` by the count of cancelled layouts. This logic is sound for views not in middle of being laid out, but in this case we are cancelling a layout that is already in progress which has some unfortunate consequences. Firstly, the remaining subviews will still be laid out anyways and have their `_dirty` flag set to false and their `_dirtyDescendantsCount` set to zero as part of their being laid out. Secondly, parent views have already consumed the `_dirtyDescendantsCount` as part of their layout, which means that we are subtracting some number of dirty descendants from zero. The Math.max(0, ...) smells pretty bad here since it means we are removing a count of more dirty subviews than we believe we have. Thirdly, and most critical to this bug, we may have, as part of laying out views, needed to perform work that invalidated some part of the view hierarchy. In this case, it means that a parent view that has already laid out may have a non-zero `_dirtyDescendantsCount` to reflect that some part of the view hierarchy below it needs additional layout, which will have been scheduled. If we zero out the `_dirtyDescendantsCount`, it means that the dirty descendant may never be reached in `WI.View._visitViewTreeForLayout`, leaving it stuck as `_dirty`, but with no way to reach it until something like a dirtying of the root view (e.g. from a resize of the window) occurs.

In this case, that inconsistent state with an &quot;unreachable&quot; (in terms of _dirtyDescendantsCount) dirty view means that the view is stuck `_dirty`, which means even future calls to `needsLayout()` will early-return without walking the ancestor tree to increment their `_dirtyDescendantsCount`s.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1865850</commentid>
    <comment_count>5</comment_count>
      <attachid>458687</attachid>
    <who name="Patrick Angle">pangle</who>
    <bug_when>2022-05-02 09:16:11 -0700</bug_when>
    <thetext>Created attachment 458687
Patch v1.1 - Improved accounting approach, removed cancelLayout</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1865872</commentid>
    <comment_count>6</comment_count>
      <attachid>458687</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2022-05-02 10:17:48 -0700</bug_when>
    <thetext>Comment on attachment 458687
Patch v1.1 - Improved accounting approach, removed cancelLayout

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

&gt; Source/WebInspectorUI/UserInterface/Views/View.js:244
&gt; +        console.assert(this._parentView || !(this._isDirty || this._dirtyDescendantsCount));

I think this assertion may be triggered if `view.needsLayout()` and then `parentView.removeSubview(view)`.

Style: i think we usually prefer applying the `!` to the inside of the `(` `)` so there&apos;s less mental math
```
console.assert(this._parentView || (!this._isDirty &amp;&amp; !this._dirtyDescendantsCount));
```

&gt; Source/WebInspectorUI/UserInterface/Views/View.js:266
&gt; +        function recursivelySetNotDirty(view) {

NIT: we might want to do this with an array and a `while` just in case we do ever get a deep enough hierarchy that this would cause a &quot;stack too deep&quot; error

&gt; Source/WebInspectorUI/UserInterface/Views/View.js:371
&gt; +        view._setDirty(true);

Hmm, do we need to do this before the `if` above?  Otherwise, will `_dirty` ever be set if `needsLayout()` is called on something not yet attached to the root?

And in that case, what would happen if the parent of the detached tree is then added to the root?  Would we actually crawl the entire tree, or only until the parent of the previously detached tree?

Adding something new to _any_ tree should probably mark it as being `_dirty` (and maybe propagate the `_dirtyDescendantsCount` up to the root).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1865886</commentid>
    <comment_count>7</comment_count>
      <attachid>458687</attachid>
    <who name="Patrick Angle">pangle</who>
    <bug_when>2022-05-02 11:11:00 -0700</bug_when>
    <thetext>Comment on attachment 458687
Patch v1.1 - Improved accounting approach, removed cancelLayout

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

&gt;&gt; Source/WebInspectorUI/UserInterface/Views/View.js:244
&gt;&gt; +        console.assert(this._parentView || !(this._isDirty || this._dirtyDescendantsCount));
&gt; 
&gt; I think this assertion may be triggered if `view.needsLayout()` and then `parentView.removeSubview(view)`.
&gt; 
&gt; Style: i think we usually prefer applying the `!` to the inside of the `(` `)` so there&apos;s less mental math
&gt; ```
&gt; console.assert(this._parentView || (!this._isDirty &amp;&amp; !this._dirtyDescendantsCount));
&gt; ```

This assertion verifies that the view either: has a parent view before moving to the new parent -or- is not dirty in any way (we no longer mark detached trees as dirty as that would be redundant, see :368-371 and my response below). In your example `view` starts with a parent (from which you then remove it), and therefor will not trigger this assertion. This assertion exists to ensure that we aren&apos;t needlessly setting the dirty flag/dirtying the subtree before a view is attached.

&gt;&gt; Source/WebInspectorUI/UserInterface/Views/View.js:266
&gt;&gt; +        function recursivelySetNotDirty(view) {
&gt; 
&gt; NIT: we might want to do this with an array and a `while` just in case we do ever get a deep enough hierarchy that this would cause a &quot;stack too deep&quot; error

Good point.

&gt;&gt; Source/WebInspectorUI/UserInterface/Views/View.js:371
&gt;&gt; +        view._setDirty(true);
&gt; 
&gt; Hmm, do we need to do this before the `if` above?  Otherwise, will `_dirty` ever be set if `needsLayout()` is called on something not yet attached to the root?
&gt; 
&gt; And in that case, what would happen if the parent of the detached tree is then added to the root?  Would we actually crawl the entire tree, or only until the parent of the previously detached tree?
&gt; 
&gt; Adding something new to _any_ tree should probably mark it as being `_dirty` (and maybe propagate the `_dirtyDescendantsCount` up to the root).

This is handled in `_didMoveToParent`, which will call `_scheduleLayoutForView` once the view is actually attached, which means the entire subtree being attached will get laid out at that time. Marking views within that subtree as dirty before it is attached would be redundant. This works because once we encounter a dirty view during layout, all of its subviews are also laid out.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1865888</commentid>
    <comment_count>8</comment_count>
      <attachid>458693</attachid>
    <who name="Patrick Angle">pangle</who>
    <bug_when>2022-05-02 11:19:10 -0700</bug_when>
    <thetext>Created attachment 458693
Patch v1.2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1865902</commentid>
    <comment_count>9</comment_count>
      <attachid>458693</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2022-05-02 11:46:22 -0700</bug_when>
    <thetext>Comment on attachment 458693
Patch v1.2

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

r=me, nice fix =D

&gt; Source/WebInspectorUI/ChangeLog:29
&gt; +        `_dirtyDescendantsCount` and at what times relative to layout.

would be awesome to have some tests for this (e.g. calling `updateLayout` inside the `layout` of a parent)

&gt; Source/WebInspectorUI/ChangeLog:31
&gt; +        The only time in this patch that we do not do a +1/-1 adjustment to the layout count is in the special case of

would be awesome to have some tests for this (e.g. ensuring that the accounting is done correctly if a dirty `WI.View` is removed)

&gt; Source/WebInspectorUI/ChangeLog:52
&gt; +        - A special case of recursively calling `_setDirty(false)` that is able to optimize away the need to walk the

Aside: Reading this made me think a bit, and im pretty sure there&apos;s actually another unrelated bug.  Nowhere in `WI.View` do we check to see if when adding new subviews that the given subview is not already a subview somewhere else.  We probably should add a `console.assert(!view.parentView)` somewhere inside `WI.View.prototype.insertSubviewBefore` to catch this (or just add logic to automatically call `view.parentView.removeSubview(view)` in this case).

&gt; Source/WebInspectorUI/UserInterface/Views/View.js:251
&gt; +        this._setSelfAndDescendantsAttachedToRoot(isAttachedToRoot);

It seems like both `_setSelfAndDescendantsNotDirty` and `_setSelfAndDescendantsAttachedToRoot` crawl down the entire view hierarchy underneath the `parentView`.  Can we perhaps combine those two methods into a single function (or inlined here) so that we only have to crawl down once?

&gt; Source/WebInspectorUI/UserInterface/Views/View.js:268
&gt; +            let view = views.shift();

NIT: rather than call `shift()`, which is pretty expensive, can we instead just keep an index (e.g. `for (let i = 0; i &lt; views.length; ++i)`)?  We might wanna do that in `WI.View._visitViewTreeForLayout` too 😅</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1866002</commentid>
    <comment_count>10</comment_count>
      <attachid>458714</attachid>
    <who name="Patrick Angle">pangle</who>
    <bug_when>2022-05-02 16:52:43 -0700</bug_when>
    <thetext>Created attachment 458714
Patch v1.3</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1866142</commentid>
    <comment_count>11</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-05-03 09:03:58 -0700</bug_when>
    <thetext>Committed r293727 (250215@main): &lt;https://commits.webkit.org/250215@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 458714.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>458562</attachid>
            <date>2022-04-28 18:23:52 -0700</date>
            <delta_ts>2022-05-02 09:16:09 -0700</delta_ts>
            <desc>Patch v1.0</desc>
            <filename>bug-239880-20220428182351.patch</filename>
            <type>text/plain</type>
            <size>3930</size>
            <attacher name="Patrick Angle">pangle</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkzNTcyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwppbmRleCA5
MzM1NjI4YjJmOGE3OGFiYTNhNjEyN2RkNzRhNDIwYjBkY2UzNjVmLi4xYzc3NDAwZDQzMTBjOTNi
ZDdkZmFlYTc0Zjg0NThhMGJiMTkxZWU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNyBAQAorMjAyMi0wNC0yOCAgUGF0cmljayBBbmdsZSAgPHBhbmdsZUBhcHBsZS5jb20+
CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogSW1wb3J0aW5nIGEgdGltZWxpbmUgbGVhdmVzIHRp
bWVsaW5lIG92ZXJ2aWV3IG5vbi1zY3JvbGxhYmxlL25vbi16b29tYWJsZSB1bnRpbCB3aW5kb3dz
IGlzIHJlc2l6ZWQuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNn
aT9pZD0yMzk4ODAKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICBDYW5jZWxsaW5nIGFuIGluLXByb2dyZXNzIGxheW91dCAob3IgdGhlIGxheW91dCBvZiBh
IGNoaWxkIG9mIGEgdmlldyBpbiBtaWRkbGUgb2YgbGF5aW5nIG91dCkgd2lsbCBsZWFkIHRvCisg
ICAgICAgIGBfZGlydHlEZXNjZW5kYW50c0NvdW50YCBiZWluZyBpbiBhbiBpbmNvbnNpc3RlbnQg
c3RhdGUuIFZpZXdzIGhhdmUgdGhlaXIgYF9kaXJ0eURlc2NlbmRhbnRzQ291bnRgIGNsZWFyZWQK
KyAgICAgICAgYmVmb3JlIHRoZXkgYXJlIGxhaWQgb3V0LCBzbyBldmVyeSBub24temVybyBgX2Rp
cnR5RGVzY2VuZGFudHNDb3VudGAgb2YgYSB2aWV3IGluIHRoZSBwcm9jZXNzIG9mIGJlaW5nIGxh
aWQgb3V0CisgICAgICAgIG1lYW5zIHRoYXQgZHVyaW5nIGxheW91dCBgbmVlZHNMYXlvdXQoKWAg
d2FzIGNhbGxlZCB0byBkaXJ0eSB0aGF0IHZpZXcgb3Igb25lIG9mIGl0cyBjaGlsZHJlbiwgYW5k
IHdlIHNob3VsZCBub3QKKyAgICAgICAgcmVtb3ZlIHRoYXQgY291bnQuIFRoZSBzYW1lIG11c3Qg
YWxzbyBiZSBjaGVja2VkIGZvciBwYXJlbnQgdmlld3MsIGF0IHdoaWNoIHBvaW50IHdlIHNob3Vs
ZCBzdG9wIHdhbGtpbmcgdGhlCisgICAgICAgIHZpZXcgaGllcmFyY2h5IHVwLgorCisgICAgICAg
IEluIHRoaXMgY2FzZSwgYSBwcmV2aW91cyBjYW5jZWxsYXRpb24gbWVhbnQgdGhhdCB0aGUgVGlt
ZWxpbmVPdmVydmlldyBlbmRlZCB1cCBpbiBhbiBpbmNvbnNpdGFudCBzdGF0ZSB3aGVyZSBpdHMK
KyAgICAgICAgcGFyZW50IHZpZXcgdHJlZSB3YXMgbm90IGF3YXJlIHRoYXQgaXQgbmVlZGVkIGxh
eW91dCBiZWNhdXNlIGl0IHJlYWNoZWQgYSB6ZXJvIGBfZGlydHlEZXNjZW5kYW50c0NvdW50YCB3
aGlsZQorICAgICAgICB3YWxraW5nIGRvd24gdGhlIHZpZXcgaGVpcmFyY2h5LCB3aGljaCBtZWFu
dCB0aGF0IHRoZSBUaW1lbGluZU92ZXJ2aWV3IHdhcyBwZXJwZXR1YWxseSBzdHVjayB1bnRpbCB0
aGUgZW50aXJlCisgICAgICAgIHZpZXcgaGVpcmFyY2h5IG5lZWRlZCByZS1sYWlkIG91dCBkdWUg
dG8gYSB3aW5kb3cgcmVzaXplIG9yIHNpbWlsYXIgZXZlbnQuCisKKyAgICAgICAgKiBVc2VySW50
ZXJmYWNlL1ZpZXdzL1ZpZXcuanM6CisgICAgICAgIChXSS5WaWV3KToKKyAgICAgICAgKFdJLlZp
ZXcucHJvdG90eXBlLl9sYXlvdXRTdWJ0cmVlKToKKyAgICAgICAgKFdJLlZpZXcuX2NhbmNlbFNj
aGVkdWxlZExheW91dEZvclZpZXcpOgorCiAyMDIyLTA0LTI3ICBEZXZpbiBSb3Vzc28gIDxkcm91
c3NvQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBVbmNhdWdodCBFeGNlcHRp
b246IHVuZGVmaW5lZCBpcyBub3QgYW4gb2JqZWN0IChldmFsdWF0aW5nICd0aGlzLnJlc291cmNl
LmhhZExvYWRpbmdFcnJvcicpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9WaWV3cy9WaWV3LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvVmlld3MvVmlldy5qcwppbmRleCBiNmQwZGE0YmQ1ZjIwZTYwNDkxMzEzYzI4Yzc1YjEz
MWZkMGU2ZGExLi40ZGRlYjQ3OWIyODYxYzVhMGY4YTc4NjU3MzIxYzg5OTRiNzQzZmE0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9WaWV3Lmpz
CisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1ZpZXcuanMK
QEAgLTM4LDYgKzM4LDcgQEAgV0kuVmlldyA9IGNsYXNzIFZpZXcgZXh0ZW5kcyBXSS5PYmplY3QK
ICAgICAgICAgdGhpcy5faXNBdHRhY2hlZFRvUm9vdCA9IGZhbHNlOwogICAgICAgICB0aGlzLl9s
YXlvdXRSZWFzb24gPSBudWxsOwogICAgICAgICB0aGlzLl9kaWRJbml0aWFsTGF5b3V0ID0gZmFs
c2U7CisgICAgICAgIHRoaXMuX2lzSW5MYXlvdXQgPSBmYWxzZTsKICAgICB9CiAKICAgICAvLyBT
dGF0aWMKQEAgLTI3Miw2ICsyNzMsOCBAQCBXSS5WaWV3ID0gY2xhc3MgVmlldyBleHRlbmRzIFdJ
Lk9iamVjdAogCiAgICAgX2xheW91dFN1YnRyZWUoKQogICAgIHsKKyAgICAgICAgdGhpcy5faXNJ
bkxheW91dCA9IHRydWU7CisKICAgICAgICAgdGhpcy5fZGlydHkgPSBmYWxzZTsKICAgICAgICAg
dGhpcy5fZGlydHlEZXNjZW5kYW50c0NvdW50ID0gMDsKICAgICAgICAgbGV0IGlzSW5pdGlhbExh
eW91dCA9ICF0aGlzLl9kaWRJbml0aWFsTGF5b3V0OwpAQCAtMzE0LDYgKzMxNyw4IEBAIFdJLlZp
ZXcgPSBjbGFzcyBWaWV3IGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0
KFdJLnNldFJlZW50cmFudENoZWNrKHRoaXMsICJkaWRMYXlvdXRTdWJ0cmVlIiksICJFUlJPUjog
Y2FsbGluZyBgZGlkTGF5b3V0U3VidHJlZWAgd2hpbGUgYWxyZWFkeSBpbiBpdCIsIHRoaXMpOwog
ICAgICAgICB0aGlzLmRpZExheW91dFN1YnRyZWUoKTsKICAgICAgICAgY29uc29sZS5hc3NlcnQo
V0kuY2xlYXJSZWVudHJhbnRDaGVjayh0aGlzLCAiZGlkTGF5b3V0U3VidHJlZSIpLCAiRVJST1I6
IG1pc3NpbmcgcmV0dXJuIGZyb20gYGRpZExheW91dFN1YnRyZWVgIiwgdGhpcyk7CisKKyAgICAg
ICAgdGhpcy5faXNJbkxheW91dCA9IGZhbHNlOwogICAgIH0KIAogICAgIF9zZXRMYXlvdXRSZWFz
b24obGF5b3V0UmVhc29uKQpAQCAtMzYzLDEyICszNjgsMTkgQEAgV0kuVmlldyA9IGNsYXNzIFZp
ZXcgZXh0ZW5kcyBXSS5PYmplY3QKIAogICAgIHN0YXRpYyBfY2FuY2VsU2NoZWR1bGVkTGF5b3V0
Rm9yVmlldyh2aWV3KQogICAgIHsKKyAgICAgICAgaWYgKHZpZXcuX2lzSW5MYXlvdXQpCisgICAg
ICAgICAgICByZXR1cm47CisKICAgICAgICAgbGV0IGNhbmNlbGxlZExheW91dHNDb3VudCA9IHZp
ZXcuX2RpcnR5RGVzY2VuZGFudHNDb3VudDsKICAgICAgICAgaWYgKHZpZXcubGF5b3V0UGVuZGlu
ZykKICAgICAgICAgICAgIGNhbmNlbGxlZExheW91dHNDb3VudCsrOwogCiAgICAgICAgIGxldCBw
YXJlbnRWaWV3ID0gdmlldy5wYXJlbnRWaWV3OwogICAgICAgICB3aGlsZSAocGFyZW50Vmlldykg
eworICAgICAgICAgICAgaWYgKHBhcmVudFZpZXcuX2lzSW5MYXlvdXQpCisgICAgICAgICAgICAg
ICAgYnJlYWs7CisKKyAgICAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHBhcmVudFZpZXcuX2RpcnR5
RGVzY2VuZGFudHNDb3VudCA+PSBjYW5jZWxsZWRMYXlvdXRzQ291bnQpOwogICAgICAgICAgICAg
cGFyZW50Vmlldy5fZGlydHlEZXNjZW5kYW50c0NvdW50ID0gTWF0aC5tYXgoMCwgcGFyZW50Vmll
dy5fZGlydHlEZXNjZW5kYW50c0NvdW50IC0gY2FuY2VsbGVkTGF5b3V0c0NvdW50KTsKICAgICAg
ICAgICAgIHBhcmVudFZpZXcgPSBwYXJlbnRWaWV3LnBhcmVudFZpZXc7CiAgICAgICAgIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>458687</attachid>
            <date>2022-05-02 09:16:11 -0700</date>
            <delta_ts>2022-05-02 11:19:08 -0700</delta_ts>
            <desc>Patch v1.1 - Improved accounting approach, removed cancelLayout</desc>
            <filename>bug-239880-20220502091610.patch</filename>
            <type>text/plain</type>
            <size>14741</size>
            <attacher name="Patrick Angle">pangle</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkzNjQwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwppbmRleCA3
MzVlZThkZWQ0MGE3MzlhZjk2ZDlmNWQwNjczMmExNjk1OGIzY2JlLi4xMWZmNjc5ODI0ZjE1YWUz
ZGM0NjQxNmVjMjkxODU2ODFiMDNiY2UyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw3OCBAQAorMjAyMi0wNS0wMiAgUGF0cmljayBBbmdsZSAgPHBhbmdsZUBhcHBsZS5jb20+
CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogSW1wb3J0aW5nIGEgdGltZWxpbmUgbGVhdmVzIHRp
bWVsaW5lIG92ZXJ2aWV3IG5vbi1zY3JvbGxhYmxlL25vbi16b29tYWJsZSB1bnRpbCB3aW5kb3dz
IGlzIHJlc2l6ZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIzOTg4MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIENhbmNlbGxpbmcgYW4gaW4tcHJvZ3Jlc3MgbGF5b3V0IChvciB0aGUgbGF5b3V0IG9mIGEg
Y2hpbGQgb2YgYSB2aWV3IGluIG1pZGRsZSBvZiBsYXlpbmcgb3V0KSBsZWQgdG8KKyAgICAgICAg
YF9kaXJ0eURlc2NlbmRhbnRzQ291bnRgIGJlaW5nIGluIGFuIGluY29uc2lzdGVudCBzdGF0ZS4g
Vmlld3MgaGFkIHRoZWlyIGBfZGlydHlEZXNjZW5kYW50c0NvdW50YCBjbGVhcmVkIGJlZm9yZQor
ICAgICAgICB0aGV5IGFyZSBsYWlkIG91dCwgc28gZXZlcnkgbm9uLXplcm8gYF9kaXJ0eURlc2Nl
bmRhbnRzQ291bnRgIG9mIGEgdmlldyBpbiB0aGUgcHJvY2VzcyBvZiBiZWluZyBsYWlkIG91dCBt
ZWFudAorICAgICAgICB0aGF0IGR1cmluZyBsYXlvdXQgYG5lZWRzTGF5b3V0KClgIHdhcyBjYWxs
ZWQgdG8gZGlydHkgdGhhdCB2aWV3IG9yIG9uZSBvZiBpdHMgY2hpbGRyZW4uIEluIHRoaXMgY2Fz
ZSwgYQorICAgICAgICBwcmV2aW91cyBjYW5jZWxsYXRpb24gbWVhbnQgdGhhdCB0aGUgVGltZWxp
bmVPdmVydmlldyBlbmRlZCB1cCBpbiBhbiBpbmNvbnNpc3RlbnQgc3RhdGUgd2hlcmUgaXRzIHBh
cmVudCB2aWV3CisgICAgICAgIHRyZWUgd2FzIG5vdCBhd2FyZSB0aGF0IGl0IG5lZWRlZCBsYXlv
dXQgYmVjYXVzZSBpdCByZWFjaGVkIGEgemVybyBgX2RpcnR5RGVzY2VuZGFudHNDb3VudGAgd2hp
bGUgd2Fsa2luZyBkb3duCisgICAgICAgIHRoZSB2aWV3IGhpZXJhcmNoeSwgd2hpY2ggbWVhbnQg
dGhhdCB0aGUgVGltZWxpbmVPdmVydmlldyB3YXMgcGVycGV0dWFsbHkgc3R1Y2sgdW50aWwgdGhl
IGVudGlyZSB2aWV3IGhpZXJhcmNoeQorICAgICAgICBuZWVkZWQgcmUtbGFpZCBvdXQgZHVlIHRv
IGEgd2luZG93IHJlc2l6ZSBvciBzaW1pbGFyIGV2ZW50LgorCisgICAgICAgIE91ciBjdXJyZW50
IGFjY291bnRpbmcgZm9yIGBfZGlydHlEZXNjZW5kYW50c0NvdW50YCBpbiBWaWV3IG1ha2VzIGFz
c3VtcHRpb25zIHRoYXQgYXJlIG5vdCBhbHdheXMgdHJ1ZSBkdXJpbmcKKyAgICAgICAgbGF5b3V0
LiBTcGVjaWZpY2FsbHkgdGhhdCBwYXJlbnRzIG9mIHZpZXdzIHVuZGVyZ29pbmcgbGF5b3V0IHdp
bGwgaGF2ZSBhIG5vbi16ZXJvIGBfZGlydHlEZXNjZW5kYW50c0NvdW50YCBzdGlsbAorICAgICAg
ICBmcm9tIHdoaWNoIHRvIHN1YnRyYWN0IGluIGBfY2FuY2VsU2NoZWR1bGVkTGF5b3V0Rm9yVmll
d2AuIFRoaXMgd2Fzbid0IGFsd2F5cyB0cnVlIGJlY2F1c2UgYXMgc29vbiBhcyB3ZSBiZWdhbgor
ICAgICAgICBsYXlpbmcgb3V0IGEgcGFyZW50IHZpZXcsIHdlIGNsZWFyZWQgYm90aCB0aGUgYF9k
aXJ0eWAgZmxhZyBhcyB3ZWxsIGFzIHplcm9lZCBvdXQgYF9kaXJ0eURlc2NlbmRhbnRzQ291bnRg
LiBJbgorICAgICAgICB0aGUgY2FzZSBvZiBjYW5jZWxsaW5nIGEgbGF5b3V0IGZyb20gd2l0aGlu
IGEgbGF5b3V0LCB0aGUgY2FuY2VsbGF0aW9uIHdvdWxkbid0IGFjdHVhbGx5IHRha2UgZWZmZWN0
IGFueXdheXMsCisgICAgICAgIGFuZCBzaW5jZSBgY2FuY2VsTGF5b3V0YCB3YXMgb25seSBldmVy
IGludm9rZWQgZnJvbSBgdXBkYXRlTGF5b3V0YCwgdGhlIHJlbGV2YW50IGxheW91dCBmbGFncyBz
aG91bGQgaW5zdGVhZCBiZQorICAgICAgICBjbGVhcmVkIGFzIHBhcnQgb2YgYWN0dWFsbHkgcGVy
Zm9ybWluZyB0aGUgbGF5b3V0LiBgY2FuY2VsTGF5b3V0YCBhdCBtb3N0IHNhdmVkIHVzIGEgckFG
IGNhbGxiYWNrIG9ubHkgdG8KKyAgICAgICAgcmVhbGl6ZSB3ZSBubyBsb25nZXIgaGF2ZSBhbnkg
dmlld3MgaW4gbmVlZCBvZiBsYXlvdXQsIGJ1dCB0aGlzIGJlbmVmaXQgd2FzIG5lZ2xpZ2libGUs
IGFuZCBpbiBnZW5lcmFsIHdlIHNob3VsZAorICAgICAgICBwcmVmZXIgbm90IHRvIGJlIGNhbGxp
bmcgYHVwZGF0ZUxheW91dGAgZm9yIHBlcmZvcm1hbmNlIHJlYXNvbnMgYW55d2F5cy4KKworICAg
ICAgICBUaGlzIHBhdGNoIGltcHJvdmVzIHRoZSBhY2NvdW50aW5nIGFyb3VuZCBgX2RpcnR5RGVz
Y2VuZGFudHNDb3VudGAsIG1ha2luZyBzdXJlIHRvIGRlY3JlbWVudCBpdCBhcyB3ZSBwZXJmb3Jt
CisgICAgICAgIGxheW91dCwgaW5zdGVhZCBvZiBhbGwgYXQgb25jZS4gVGhpcyByZWR1Y2VzIG91
ciByZWxpYW5jZSBvbiBhc3N1bXB0aW9ucyBhYm91dCB3aG8gd2lsbCBtb2RpZnkgdGhlCisgICAg
ICAgIGBfZGlydHlEZXNjZW5kYW50c0NvdW50YCBhbmQgYXQgd2hhdCB0aW1lcyByZWxhdGl2ZSB0
byBsYXlvdXQuCisKKyAgICAgICAgVGhlIG9ubHkgdGltZSBpbiB0aGlzIHBhdGNoIHRoYXQgd2Ug
ZG8gbm90IGRvIGEgKzEvLTEgYWRqdXN0bWVudCB0byB0aGUgbGF5b3V0IGNvdW50IGlzIGluIHRo
ZSBzcGVjaWFsIGNhc2Ugb2YKKyAgICAgICAgYXR0YWNoaW5nL2RldGFjaGluZyBhIHZpZXcuIElu
IHRoYXQgY2FzZSwgdGhlIHBhcmVudCB0cmVlIGZyb20gd2hpY2ggd2UgYXJlIGRldGFjaGluZyB0
aGUgdmlldyB3aWxsIGhhdmUgdGhlCisgICAgICAgIGBfZGlydHlEZXNjZW5kYW50c0NvdW50YCBv
ZiB0aGUgZGV0YWNoZWQgcGFyZW50IGFkanVzdGVkIGJ5IHRoZSBgX2RpcnR5RGVzY2VuZGFudHND
b3VudGAgb2YgdGhlIGZvcm1lciBjaGlsZAorICAgICAgICB2aWV3LiBUaGlzIGlzIGRvbmUgYnkg
YF9zZXRTZWxmQW5kRGVzY2VuZGFudHNOb3REaXJ0eWAsIHdoaWNoIGFsbG93cyB1cyB0byBhdm9p
ZCBhbiBleHBvbmVudGlhbCB3YWxraW5nIG9mIHRoZQorICAgICAgICB0cmVlIGZvciB0aGlzIG90
aGVyd2lzZSBzZWxmLWNvbnRhaW5lZCBvcGVyYXRpb24gKHdlIGRvbid0IGNhbGwgaW50byBhbnkg
b3ZlcnJpZGFibGUgZnVuY3Rpb25zIHRoYXQgY291bGQgbW9kaWZ5CisgICAgICAgIHRoZSBgX2Rp
cnR5YCBmbGFnIG9yIGBfZGlydHlEZXNjZW5kYW50c0NvdW50YCkuCisKKyAgICAgICAgQWZ0ZXIg
d2UgaGF2ZSBjbGVhbmVkIHVwIHRoZSBmb3JtZXIgcGFyZW50IGJyYW5jaCBvZiB0aGUgdHJlZSwg
d2UgbWFyayB0aGUgbmV3bHkgYXR0YWNoZWQgdmlldyBhcyBuZWVkaW5nCisgICAgICAgIGxheW91
dCwgd2hpY2ggd2lsbCB0aGVuIGVuc3VyZSB0aGUgY2hpbGQgdmlldyBnZXRzIGxhaWQgb3V0IGFn
YWluIGJ5IG1hcmtpbmcgaXQgYXMgYGRpcnR5YCBhbmQgaW5jcmVtZW50aW5nIGl0cworICAgICAg
ICBuZXcgcGFyZW50IGJyYW5jaCBvZiB0aGUgdHJlZSdzIGBfZGlydHlEZXNjZW5kYW50c0NvdW50
YC4KKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvVmlldy5qczoKKyAgICAgICAgKFdJ
LlZpZXcucHJvdG90eXBlLl9zZXREaXJ0eSk6CisgICAgICAgIC0gTmV3IHV0aWxpdHkgbWV0aG9k
IHRocm91Z2ggd2hpY2ggKGFsbW9zdCkgYWxsIG1hcmtpbmcgb2YgZGlydHkvbm90IGRpcnR5IHNo
b3VsZCBiZSBkb25lIGluIG9yZGVyIHRvIGVuc3VyZQorICAgICAgICB0aGF0IGBfZGlydHlEZXNj
ZW5kYW50c0NvdW50YCBpcyBjb3JyZWN0bHkgYWRqdXN0ZWQuCisKKyAgICAgICAgKFdJLlZpZXcu
cHJvdG90eXBlLl9kaWRNb3ZlVG9QYXJlbnQpOgorICAgICAgICAtIE1hcmsgdGhlIHZpZXcgYW5k
IGFsbCBzdWJ2aWV3cyBhcyBub3QgZGlydHkgYmVmb3JlIHJlbW92aW5nIGl0IGZyb20gaXRzIHBy
ZXZpb3VzIHBhcmVudCBpbiBvcmRlciB0byBhZGp1c3QKKyAgICAgICAgYF9kaXJ0eURlc2NlbmRh
bnRzQ291bnRgIGFwcHJvcHJpYXRlbHksIGFuZCB0aGVuIG1hcmsgdGhlIHZpZXcgYXMgZGlydHkg
b25jZSBhdHRhY2hlZCB0byBpdHMgbmV3IHBhcmVudC4KKworICAgICAgICAoV0kuVmlldy5wcm90
b3R5cGUuX3NldFNlbGZBbmREZXNjZW5kYW50c05vdERpcnR5KToKKyAgICAgICAgLSBBIHNwZWNp
YWwgY2FzZSBvZiByZWN1cnNpdmVseSBjYWxsaW5nIGBfc2V0RGlydHkoZmFsc2UpYCB0aGF0IGlz
IGFibGUgdG8gb3B0aW1pemUgYXdheSB0aGUgbmVlZCB0byB3YWxrIHRoZQorICAgICAgICBlbnRp
cmUgcGFyZW50IHRyZWUgZm9yIGVhY2ggc3Vidmlldy9zdWJ2aWV3cyBvZiBzdWJ2aWV3cy9ldGMu
IGJlY2F1c2UgdGhlIG9wZXJhdGlvbiB0YWtlcyBwbGFjZSBhbGwgYXQgb25jZSB3aXRoCisgICAg
ICAgIG5vIG92ZXJyaWRhYmxlIGZ1bmN0aW9uIGJlaW5nIGNhbGxlZCB3aGVyZSB3ZSBoYXZlIHRv
IHdvcnJ5IGFib3V0IG11dGF0aW9ucyB0byBgX2RpcnR5YC9gX2RpcnR5RGVzY2VuZGFudHNDb3Vu
dGAuCisKKyAgICAgICAgKFdJLlZpZXcucHJvdG90eXBlLl9zZXRTZWxmQW5kRGVzY2VuZGFudHNB
dHRhY2hlZFRvUm9vdCk6IFJlbmFtZWQgZnJvbSBXSS5WaWV3LnByb3RvdHlwZS5fZGlkTW92ZVRv
V2luZG93CisgICAgICAgIC0gUmVuYW1lZCB0byBiZXR0ZXIgY29tbXVuaWNhdGUgd2hhdCB0aGUg
ZnVuY3Rpb24gYWN0dWFsbHkgZG9lcywgdHdlYWtlZCB0byBubyBsb25nZXIgbWFyayBlYWNoIHZp
ZXdzL3N1YnZpZXcKKyAgICAgICAgYXMgbmVlZGluZyBsYXlvdXQsIHNpbmNlIG1hcmtpbmcgdGhl
IHZpZXcgdGhhdCBpcyBhY3R1YWxseSBiZWluZyBhdHRhY2hlZC9kZXRhY2hlZCBhcyBuZWVkaW5n
IGxheW91dCB3aWxsIGNhdXNlCisgICAgICAgIGFsbCBzdWJ2aWV3cyB0byBiZSBsYWlkIG91dCBh
cyB3ZWxsLgorCisgICAgICAgIChXSS5WaWV3LnByb3RvdHlwZS5fbGF5b3V0U3VidHJlZSk6Cisg
ICAgICAgIChXSS5WaWV3Ll92aXNpdFZpZXdUcmVlRm9yTGF5b3V0KToKKyAgICAgICAgLSBEb24n
dCB6ZXJvIG91dCB0aGUgYF9kaXJ0eURlc2NlbmRhbnRzQ291bnRgLCBhbmQgaW5zdGVhZCB1c2Ug
dGhlIG5ldyBgX3NldERpcnR5YCBoZWxwZXIuCisKKyAgICAgICAgKFdJLlZpZXcuX3NjaGVkdWxl
TGF5b3V0Rm9yVmlldyk6CisgICAgICAgIC0gRG9uJ3QgemVybyBvdXQgdGhlIGBfZGlydHlEZXNj
ZW5kYW50c0NvdW50YCwgYW5kIGluc3RlYWQgdXNlIHRoZSBuZXcgYF9zZXREaXJ0eWAgaGVscGVy
LgorICAgICAgICAtIE1hcmsgdGhlIHZpZXcgYXMgZGlydHkgYWZ0ZXIgY2hlY2tpbmcgaWYgaXRz
IGF0dGFjaGVkIGEgdmlldyBzbyB0aGF0IGRldGFjaGVkIHZpZXdzIGhhdmUgbm8gZGlydHkgc3Rh
dGUgdW50aWwKKyAgICAgICAgdGhleSBhcmUgYXR0YWNoZWQsIGF0IHdoaWNoIHBvaW50IHRoZSBy
b290IG9mIHRoZSBwcmV2aW91cyBkZXRhY2hlZCBzdWJ0cmVlIHdpbGwgYmUgbWFya2VkIGFzIGRp
cnR5LgorCisgICAgICAgIChXSS5WaWV3LnByb3RvdHlwZS51cGRhdGVMYXlvdXQpOgorICAgICAg
ICAoV0kuVmlldy5wcm90b3R5cGUuY2FuY2VsTGF5b3V0KTogRGVsZXRlZC4KKyAgICAgICAgKFdJ
LlZpZXcuX2NhbmNlbFNjaGVkdWxlZExheW91dEZvclZpZXcpOiBEZWxldGVkLgorICAgICAgICAt
IFJlbW92ZSB0aGUgY29uY2VwdCBvZiAiY2FuY2VsaW5nIiBsYXlvdXQsIHNpbmNlIGl0IGlzIG9u
bHkgdXNlZCBieSBgdXBkYXRlTGF5b3V0YCwgYW5kIHRoZSBjYWxsIHRvCisgICAgICAgIGBfbGF5
b3V0U3VidHJlZWAgaW4gYHVwZGF0ZUxheW91dGAgd2lsbCBjYXVzZSB0aGUgdmlldywgZGlydHkg
b3Igbm90LCB0byBiZSBtYXJrZWQgYXMgbm90IGRpcnR5LgorCiAyMDIyLTA0LTI5ICBQYXRyaWNr
IEFuZ2xlICA8cGFuZ2xlQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBSZWdy
ZXNzaW9uKHIyNjcwMzgpIEltcG9ydCBhIHRpbWVsaW5lIGRvZXMgbm90IHJlbmRlciB0aGUgdGlt
ZWxpbmUsIG9ubHkgbGlzdHMgdGhlIGV2ZW50cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVmlldy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1ZpZXcuanMKaW5kZXggYjZkMGRhNGJkNWYyMGU2MDQ5MTMx
M2MyOGM3NWIxMzFmZDBlNmRhMS4uMjJhZWVjMTM4NWRjNDEyYzkwMzQ5MTlhMjljODBhNjVmYWE4
NDc0ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmll
d3MvVmlldy5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3
cy9WaWV3LmpzCkBAIC0xNTMsOCArMTUzLDYgQEAgV0kuVmlldyA9IGNsYXNzIFZpZXcgZXh0ZW5k
cyBXSS5PYmplY3QKIAogICAgIHVwZGF0ZUxheW91dChsYXlvdXRSZWFzb24pCiAgICAgewotICAg
ICAgICB0aGlzLmNhbmNlbExheW91dCgpOwotCiAgICAgICAgIHRoaXMuX3NldExheW91dFJlYXNv
bihsYXlvdXRSZWFzb24pOwogICAgICAgICB0aGlzLl9sYXlvdXRTdWJ0cmVlKCk7CiAgICAgfQpA
QCAtMTc3LDExICsxNzUsNiBAQCBXSS5WaWV3ID0gY2xhc3MgVmlldyBleHRlbmRzIFdJLk9iamVj
dAogICAgICAgICBXSS5WaWV3Ll9zY2hlZHVsZUxheW91dEZvclZpZXcodGhpcyk7CiAgICAgfQog
Ci0gICAgY2FuY2VsTGF5b3V0KCkKLSAgICB7Ci0gICAgICAgIFdJLlZpZXcuX2NhbmNlbFNjaGVk
dWxlZExheW91dEZvclZpZXcodGhpcyk7Ci0gICAgfQotCiAgICAgLy8gUHJvdGVjdGVkCiAKICAg
ICBnZXQgbGF5b3V0UmVhc29uKCkgeyByZXR1cm4gdGhpcy5fbGF5b3V0UmVhc29uOyB9CkBAIC0y
MzAsNTAgKzIyMyw3OCBAQCBXSS5WaWV3ID0gY2xhc3MgVmlldyBleHRlbmRzIFdJLk9iamVjdAog
CiAgICAgLy8gUHJpdmF0ZQogCisgICAgX3NldERpcnR5KGRpcnR5KQorICAgIHsKKyAgICAgICAg
aWYgKHRoaXMuX2RpcnR5ID09PSBkaXJ0eSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAg
ICB0aGlzLl9kaXJ0eSA9IGRpcnR5OworCisgICAgICAgIGZvciAobGV0IHBhcmVudFZpZXcgPSB0
aGlzLnBhcmVudFZpZXc7IHBhcmVudFZpZXc7IHBhcmVudFZpZXcgPSBwYXJlbnRWaWV3LnBhcmVu
dFZpZXcpIHsKKyAgICAgICAgICAgIHBhcmVudFZpZXcuX2RpcnR5RGVzY2VuZGFudHNDb3VudCAr
PSB0aGlzLl9kaXJ0eSA/IDEgOiAtMTsKKyAgICAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHBhcmVu
dFZpZXcuX2RpcnR5RGVzY2VuZGFudHNDb3VudCA+PSAwKTsKKyAgICAgICAgfQorICAgIH0KKwog
ICAgIF9kaWRNb3ZlVG9QYXJlbnQocGFyZW50VmlldykKICAgICB7CisgICAgICAgIGlmICh0aGlz
Ll9wYXJlbnRWaWV3ID09PSBwYXJlbnRWaWV3KQorICAgICAgICAgICAgcmV0dXJuOworCisgICAg
ICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMuX3BhcmVudFZpZXcgfHwgISh0aGlzLl9pc0RpcnR5IHx8
IHRoaXMuX2RpcnR5RGVzY2VuZGFudHNDb3VudCkpOworCisgICAgICAgIHRoaXMuX3NldFNlbGZB
bmREZXNjZW5kYW50c05vdERpcnR5KCk7CisKICAgICAgICAgdGhpcy5fcGFyZW50VmlldyA9IHBh
cmVudFZpZXc7CiAKICAgICAgICAgbGV0IGlzQXR0YWNoZWRUb1Jvb3QgPSB0aGlzLmlzRGVzY2Vu
ZGFudE9mKFdJLlZpZXcuX3Jvb3RWaWV3KTsKLSAgICAgICAgdGhpcy5fZGlkTW92ZVRvV2luZG93
KGlzQXR0YWNoZWRUb1Jvb3QpOworICAgICAgICB0aGlzLl9zZXRTZWxmQW5kRGVzY2VuZGFudHNB
dHRhY2hlZFRvUm9vdChpc0F0dGFjaGVkVG9Sb290KTsKIAotICAgICAgICBpZiAoIXRoaXMuX3Bh
cmVudFZpZXcpCi0gICAgICAgICAgICByZXR1cm47CisgICAgICAgIGlmIChpc0F0dGFjaGVkVG9S
b290KQorICAgICAgICAgICAgV0kuVmlldy5fc2NoZWR1bGVMYXlvdXRGb3JWaWV3KHRoaXMpOwor
ICAgIH0KIAotICAgICAgICBsZXQgcGVuZGluZ0xheW91dHNDb3VudCA9IHRoaXMuX2RpcnR5RGVz
Y2VuZGFudHNDb3VudDsKKyAgICBfc2V0U2VsZkFuZERlc2NlbmRhbnRzTm90RGlydHkoKQorICAg
IHsKKyAgICAgICAgbGV0IGRpcnR5RGVzY2VuZGFudHNDb3VudCA9IHRoaXMuX2RpcnR5RGVzY2Vu
ZGFudHNDb3VudDsKICAgICAgICAgaWYgKHRoaXMuX2RpcnR5KQotICAgICAgICAgICAgcGVuZGlu
Z0xheW91dHNDb3VudCsrOworICAgICAgICAgICAgKytkaXJ0eURlc2NlbmRhbnRzQ291bnQ7CisK
KyAgICAgICAgaWYgKCFkaXJ0eURlc2NlbmRhbnRzQ291bnQpCisgICAgICAgICAgICByZXR1cm47
CiAKLSAgICAgICAgbGV0IHZpZXcgPSB0aGlzLl9wYXJlbnRWaWV3OwotICAgICAgICB3aGlsZSAo
dmlldykgewotICAgICAgICAgICAgdmlldy5fZGlydHlEZXNjZW5kYW50c0NvdW50ICs9IHBlbmRp
bmdMYXlvdXRzQ291bnQ7Ci0gICAgICAgICAgICB2aWV3ID0gdmlldy5wYXJlbnRWaWV3OworICAg
ICAgICBmdW5jdGlvbiByZWN1cnNpdmVseVNldE5vdERpcnR5KHZpZXcpIHsKKyAgICAgICAgICAg
IHZpZXcuX2RpcnR5ID0gZmFsc2U7CisgICAgICAgICAgICB2aWV3Ll9kaXJ0eURlc2NlbmRhbnRz
Q291bnQgPSAwOworICAgICAgICAgICAgZm9yIChsZXQgc3VidmlldyBvZiB2aWV3LnN1YnZpZXdz
KQorICAgICAgICAgICAgICAgIHJlY3Vyc2l2ZWx5U2V0Tm90RGlydHkoc3Vidmlldyk7CisgICAg
ICAgIH0KKyAgICAgICAgcmVjdXJzaXZlbHlTZXROb3REaXJ0eSh0aGlzKTsKKworICAgICAgICBm
b3IgKGxldCBwYXJlbnRWaWV3ID0gdGhpcy5wYXJlbnRWaWV3OyBwYXJlbnRWaWV3OyBwYXJlbnRW
aWV3ID0gcGFyZW50Vmlldy5wYXJlbnRWaWV3KSB7CisgICAgICAgICAgICBwYXJlbnRWaWV3Ll9k
aXJ0eURlc2NlbmRhbnRzQ291bnQgLT0gZGlydHlEZXNjZW5kYW50c0NvdW50OworICAgICAgICAg
ICAgY29uc29sZS5hc3NlcnQocGFyZW50Vmlldy5fZGlydHlEZXNjZW5kYW50c0NvdW50ID49IDAp
OwogICAgICAgICB9CiAgICAgfQogCi0gICAgX2RpZE1vdmVUb1dpbmRvdyhpc0F0dGFjaGVkVG9S
b290KQorICAgIF9zZXRTZWxmQW5kRGVzY2VuZGFudHNBdHRhY2hlZFRvUm9vdChpc0F0dGFjaGVk
VG9Sb290KQogICAgIHsKICAgICAgICAgaWYgKHRoaXMuX2lzQXR0YWNoZWRUb1Jvb3QgPT09IGlz
QXR0YWNoZWRUb1Jvb3QpCiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgdGhpcy5faXNB
dHRhY2hlZFRvUm9vdCA9IGlzQXR0YWNoZWRUb1Jvb3Q7Ci0gICAgICAgIGlmICh0aGlzLl9pc0F0
dGFjaGVkVG9Sb290KSB7Ci0gICAgICAgICAgICBXSS5WaWV3Ll9zY2hlZHVsZUxheW91dEZvclZp
ZXcodGhpcyk7CisgICAgICAgIGlmICh0aGlzLl9pc0F0dGFjaGVkVG9Sb290KQogICAgICAgICAg
ICAgdGhpcy5hdHRhY2hlZCgpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgaWYgKHRo
aXMuX2RpcnR5KQotICAgICAgICAgICAgICAgIHRoaXMuY2FuY2VsTGF5b3V0KCk7CisgICAgICAg
IGVsc2UKICAgICAgICAgICAgIHRoaXMuZGV0YWNoZWQoKTsKLSAgICAgICAgfQogCi0gICAgICAg
IGZvciAobGV0IHZpZXcgb2YgdGhpcy5fc3Vidmlld3MpCi0gICAgICAgICAgICB2aWV3Ll9kaWRN
b3ZlVG9XaW5kb3coaXNBdHRhY2hlZFRvUm9vdCk7CisgICAgICAgIGZvciAobGV0IHN1YnZpZXcg
b2YgdGhpcy5zdWJ2aWV3cykKKyAgICAgICAgICAgIHN1YnZpZXcuX3NldFNlbGZBbmREZXNjZW5k
YW50c0F0dGFjaGVkVG9Sb290KGlzQXR0YWNoZWRUb1Jvb3QpOwogICAgIH0KIAogICAgIF9sYXlv
dXRTdWJ0cmVlKCkKICAgICB7Ci0gICAgICAgIHRoaXMuX2RpcnR5ID0gZmFsc2U7Ci0gICAgICAg
IHRoaXMuX2RpcnR5RGVzY2VuZGFudHNDb3VudCA9IDA7CisgICAgICAgIHRoaXMuX3NldERpcnR5
KGZhbHNlKTsKICAgICAgICAgbGV0IGlzSW5pdGlhbExheW91dCA9ICF0aGlzLl9kaWRJbml0aWFs
TGF5b3V0OwogCiAgICAgICAgIGlmIChpc0luaXRpYWxMYXlvdXQpIHsKQEAgLTM0NCw0OSArMzY1
LDE3IEBAIFdJLlZpZXcgPSBjbGFzcyBWaWV3IGV4dGVuZHMgV0kuT2JqZWN0CiAKICAgICBzdGF0
aWMgX3NjaGVkdWxlTGF5b3V0Rm9yVmlldyh2aWV3KQogICAgIHsKLSAgICAgICAgdmlldy5fZGly
dHkgPSB0cnVlOwotCi0gICAgICAgIGxldCBwYXJlbnRWaWV3ID0gdmlldy5wYXJlbnRWaWV3Owot
ICAgICAgICB3aGlsZSAocGFyZW50VmlldykgewotICAgICAgICAgICAgcGFyZW50Vmlldy5fZGly
dHlEZXNjZW5kYW50c0NvdW50Kys7Ci0gICAgICAgICAgICBwYXJlbnRWaWV3ID0gcGFyZW50Vmll
dy5wYXJlbnRWaWV3OwotICAgICAgICB9Ci0KICAgICAgICAgaWYgKCF2aWV3Ll9pc0F0dGFjaGVk
VG9Sb290KQogICAgICAgICAgICAgcmV0dXJuOwogCisgICAgICAgIHZpZXcuX3NldERpcnR5KHRy
dWUpOworCiAgICAgICAgIGlmIChXSS5WaWV3Ll9zY2hlZHVsZWRMYXlvdXRVcGRhdGVJZGVudGlm
aWVyKQogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIFdJLlZpZXcuX3NjaGVkdWxlZExh
eW91dFVwZGF0ZUlkZW50aWZpZXIgPSByZXF1ZXN0QW5pbWF0aW9uRnJhbWUoV0kuVmlldy5fdmlz
aXRWaWV3VHJlZUZvckxheW91dCk7CiAgICAgfQogCi0gICAgc3RhdGljIF9jYW5jZWxTY2hlZHVs
ZWRMYXlvdXRGb3JWaWV3KHZpZXcpCi0gICAgewotICAgICAgICBsZXQgY2FuY2VsbGVkTGF5b3V0
c0NvdW50ID0gdmlldy5fZGlydHlEZXNjZW5kYW50c0NvdW50OwotICAgICAgICBpZiAodmlldy5s
YXlvdXRQZW5kaW5nKQotICAgICAgICAgICAgY2FuY2VsbGVkTGF5b3V0c0NvdW50Kys7Ci0KLSAg
ICAgICAgbGV0IHBhcmVudFZpZXcgPSB2aWV3LnBhcmVudFZpZXc7Ci0gICAgICAgIHdoaWxlIChw
YXJlbnRWaWV3KSB7Ci0gICAgICAgICAgICBwYXJlbnRWaWV3Ll9kaXJ0eURlc2NlbmRhbnRzQ291
bnQgPSBNYXRoLm1heCgwLCBwYXJlbnRWaWV3Ll9kaXJ0eURlc2NlbmRhbnRzQ291bnQgLSBjYW5j
ZWxsZWRMYXlvdXRzQ291bnQpOwotICAgICAgICAgICAgcGFyZW50VmlldyA9IHBhcmVudFZpZXcu
cGFyZW50VmlldzsKLSAgICAgICAgfQotCi0gICAgICAgIHZpZXcuX2RpcnR5ID0gZmFsc2U7Ci0K
LSAgICAgICAgaWYgKCFXSS5WaWV3Ll9zY2hlZHVsZWRMYXlvdXRVcGRhdGVJZGVudGlmaWVyKQot
ICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIGxldCByb290VmlldyA9IFdJLlZpZXcuX3Jv
b3RWaWV3OwotICAgICAgICBpZiAoIXJvb3RWaWV3IHx8IHJvb3RWaWV3Ll9kaXJ0eURlc2NlbmRh
bnRzQ291bnQpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgLy8gTm8gdmlld3MgbmVl
ZCBsYXlvdXQsIHNvIGNhbmNlbCB0aGUgcGVuZGluZyByZXF1ZXN0QW5pbWF0aW9uRnJhbWUuCi0g
ICAgICAgIGNhbmNlbEFuaW1hdGlvbkZyYW1lKFdJLlZpZXcuX3NjaGVkdWxlZExheW91dFVwZGF0
ZUlkZW50aWZpZXIpOwotICAgICAgICBXSS5WaWV3Ll9zY2hlZHVsZWRMYXlvdXRVcGRhdGVJZGVu
dGlmaWVyID0gdW5kZWZpbmVkOwotICAgIH0KLQogICAgIHN0YXRpYyBfdmlzaXRWaWV3VHJlZUZv
ckxheW91dCgpCiAgICAgewogICAgICAgICBjb25zb2xlLmFzc2VydChXSS5WaWV3Ll9yb290Vmll
dywgIkNhbm5vdCBsYXlvdXQgdmlldyB0cmVlIHdpdGhvdXQgYSByb290LiIpOwpAQCAtNDAwLDcg
KzM4OSw2IEBAIFdJLlZpZXcgPSBjbGFzcyBWaWV3IGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgICAg
ICAgICAgICAgdmlldy5fbGF5b3V0U3VidHJlZSgpOwogICAgICAgICAgICAgZWxzZSBpZiAodmll
dy5fZGlydHlEZXNjZW5kYW50c0NvdW50KSB7CiAgICAgICAgICAgICAgICAgdmlld3MucHVzaEFs
bCh2aWV3LnN1YnZpZXdzKTsKLSAgICAgICAgICAgICAgICB2aWV3Ll9kaXJ0eURlc2NlbmRhbnRz
Q291bnQgPSAwOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDAxODZl
OGEzZjNjNjkyOTU4YzFjMTYwZDJmNmUyODRkNjUwYTY4NGEuLmUwMTgwZDNhNzEzNWI1MDEzYTBi
MTQ0MTJiZjliNmJlYWJjNTIzMzEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZwor
KysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAyMi0wNS0wMiAg
UGF0cmljayBBbmdsZSAgPHBhbmdsZUBhcHBsZS5jb20+CisKKyAgICAgICAgV2ViIEluc3BlY3Rv
cjogSW1wb3J0aW5nIGEgdGltZWxpbmUgbGVhdmVzIHRpbWVsaW5lIG92ZXJ2aWV3IG5vbi1zY3Jv
bGxhYmxlL25vbi16b29tYWJsZSB1bnRpbCB3aW5kb3dzIGlzIHJlc2l6ZWQKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzOTg4MAorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogaW5zcGVjdG9yL3ZpZXcvYXN5
bmNocm9ub3VzLWxheW91dC1leHBlY3RlZC50eHQ6CisgICAgICAgICogaW5zcGVjdG9yL3ZpZXcv
YXN5bmNocm9ub3VzLWxheW91dC5odG1sOgorICAgICAgICAtIFJlbW92ZSB0ZXN0IGNhc2UgZm9y
IHJlbW92ZWQgYFZpZXcucHJvdG90eXBlLmNhbmNlbExheW91dGAuCisKIDIwMjItMDQtMjcgIEpl
YW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KIAogICAgICAgICBbIE1vbnRlcmV5IFdL
MiBdIG1lZGlhL21lZGlhLXNvdXJjZS9tZWRpYS1zb3VyY2Utd2VibS12b3JiaXMtcGFydGlhbC5o
dG1sIGlzIGEgY29uc3RhbnQgZmFpbHVyZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVj
dG9yL3ZpZXcvYXN5bmNocm9ub3VzLWxheW91dC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9p
bnNwZWN0b3Ivdmlldy9hc3luY2hyb25vdXMtbGF5b3V0LWV4cGVjdGVkLnR4dAppbmRleCA5YTE1
OWE0ZTdhOTJmYjVkNjljOTRmNDdjN2VkNDUwM2E3NWJkY2Q2Li42MGJjNDY5YTEyNGU5YTRiN2E2
ZjNjNjdkYzk2N2UxZTk4NTdlMGJjIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3Iv
dmlldy9hc3luY2hyb25vdXMtbGF5b3V0LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9p
bnNwZWN0b3Ivdmlldy9hc3luY2hyb25vdXMtbGF5b3V0LWV4cGVjdGVkLnR4dApAQCAtMjYsOSAr
MjYsMyBAQCBMYXlvdXQgY29tcGxldGUuCiBQQVNTOiBDaGxpZCB2aWV3IHNob3VsZCBkbyBhbiBp
bml0aWFsIGxheW91dC4KIFBBU1M6IENoaWxkIHZpZXcgc2hvdWxkIHVwZGF0ZSBpdHMgbGF5b3V0
LgogCi0tLSBSdW5uaW5nIHRlc3QgY2FzZTogVmlldy5jYW5jZWxMYXlvdXQKLUNhbmNlbCBhdXRv
bWF0aWMgbGF5b3V0LgotUEFTUzogVmlldyBzaG91bGQgbm90IGhhdmUgYSBwZW5kaW5nIGxheW91
dC4KLUNhbmNlbCBzY2hlZHVsZWQgbGF5b3V0LgotUEFTUzogVmlldyBzaG91bGQgbm90IGhhdmUg
YSBwZW5kaW5nIGxheW91dC4KLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3Zp
ZXcvYXN5bmNocm9ub3VzLWxheW91dC5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3ZpZXcv
YXN5bmNocm9ub3VzLWxheW91dC5odG1sCmluZGV4IDFjZmEwNGJlNzZmNDQxOTFmN2M5YzAyZTEy
M2FhZGVmN2I2MmFjNDMuLjc3YTFhOGZlODVlMzNiNTgyMjJmODZkNjBhYmYzNjI0NTg3YTc0NmYg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci92aWV3L2FzeW5jaHJvbm91cy1sYXlv
dXQuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3Ivdmlldy9hc3luY2hyb25vdXMtbGF5
b3V0Lmh0bWwKQEAgLTgwLDI0ICs4MCw2IEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgICAgICB9CiAg
ICAgfSk7CiAKLSAgICBzdWl0ZS5hZGRUZXN0Q2FzZSh7Ci0gICAgICAgIG5hbWU6ICJWaWV3LmNh
bmNlbExheW91dCIsCi0gICAgICAgIHRlc3QocmVzb2x2ZSwgcmVqZWN0KSB7Ci0gICAgICAgICAg
ICBsZXQgdmlldyA9IG5ldyBXSS5UZXN0VmlldzsKLSAgICAgICAgICAgIFdJLlZpZXcucm9vdFZp
ZXcoKS5hZGRTdWJ2aWV3KHZpZXcpOwotCi0gICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygi
Q2FuY2VsIGF1dG9tYXRpYyBsYXlvdXQuIik7Ci0gICAgICAgICAgICB2aWV3LmNhbmNlbExheW91
dCgpOwotICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RGYWxzZSh2aWV3LmxheW91dFBl
bmRpbmcsICJWaWV3IHNob3VsZCBub3QgaGF2ZSBhIHBlbmRpbmcgbGF5b3V0LiIpOwotCi0gICAg
ICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygiQ2FuY2VsIHNjaGVkdWxlZCBsYXlvdXQuIik7Ci0g
ICAgICAgICAgICB2aWV3Lm5lZWRzTGF5b3V0KCk7Ci0gICAgICAgICAgICB2aWV3LmNhbmNlbExh
eW91dCgpOwotICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RGYWxzZSh2aWV3LmxheW91
dFBlbmRpbmcsICJWaWV3IHNob3VsZCBub3QgaGF2ZSBhIHBlbmRpbmcgbGF5b3V0LiIpOwotICAg
ICAgICAgICAgcmVzb2x2ZSgpOwotICAgICAgICB9Ci0gICAgfSk7Ci0KICAgICBzdWl0ZS5ydW5U
ZXN0Q2FzZXNBbmRGaW5pc2goKTsKIH0KIDwvc2NyaXB0Pgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>458693</attachid>
            <date>2022-05-02 11:19:10 -0700</date>
            <delta_ts>2022-05-02 16:52:42 -0700</delta_ts>
            <desc>Patch v1.2</desc>
            <filename>bug-239880-20220502111909.patch</filename>
            <type>text/plain</type>
            <size>14698</size>
            <attacher name="Patrick Angle">pangle</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkzNjQwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwppbmRleCA3
MzVlZThkZWQ0MGE3MzlhZjk2ZDlmNWQwNjczMmExNjk1OGIzY2JlLi4xMWZmNjc5ODI0ZjE1YWUz
ZGM0NjQxNmVjMjkxODU2ODFiMDNiY2UyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw3OCBAQAorMjAyMi0wNS0wMiAgUGF0cmljayBBbmdsZSAgPHBhbmdsZUBhcHBsZS5jb20+
CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogSW1wb3J0aW5nIGEgdGltZWxpbmUgbGVhdmVzIHRp
bWVsaW5lIG92ZXJ2aWV3IG5vbi1zY3JvbGxhYmxlL25vbi16b29tYWJsZSB1bnRpbCB3aW5kb3dz
IGlzIHJlc2l6ZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIzOTg4MAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIENhbmNlbGxpbmcgYW4gaW4tcHJvZ3Jlc3MgbGF5b3V0IChvciB0aGUgbGF5b3V0IG9mIGEg
Y2hpbGQgb2YgYSB2aWV3IGluIG1pZGRsZSBvZiBsYXlpbmcgb3V0KSBsZWQgdG8KKyAgICAgICAg
YF9kaXJ0eURlc2NlbmRhbnRzQ291bnRgIGJlaW5nIGluIGFuIGluY29uc2lzdGVudCBzdGF0ZS4g
Vmlld3MgaGFkIHRoZWlyIGBfZGlydHlEZXNjZW5kYW50c0NvdW50YCBjbGVhcmVkIGJlZm9yZQor
ICAgICAgICB0aGV5IGFyZSBsYWlkIG91dCwgc28gZXZlcnkgbm9uLXplcm8gYF9kaXJ0eURlc2Nl
bmRhbnRzQ291bnRgIG9mIGEgdmlldyBpbiB0aGUgcHJvY2VzcyBvZiBiZWluZyBsYWlkIG91dCBt
ZWFudAorICAgICAgICB0aGF0IGR1cmluZyBsYXlvdXQgYG5lZWRzTGF5b3V0KClgIHdhcyBjYWxs
ZWQgdG8gZGlydHkgdGhhdCB2aWV3IG9yIG9uZSBvZiBpdHMgY2hpbGRyZW4uIEluIHRoaXMgY2Fz
ZSwgYQorICAgICAgICBwcmV2aW91cyBjYW5jZWxsYXRpb24gbWVhbnQgdGhhdCB0aGUgVGltZWxp
bmVPdmVydmlldyBlbmRlZCB1cCBpbiBhbiBpbmNvbnNpc3RlbnQgc3RhdGUgd2hlcmUgaXRzIHBh
cmVudCB2aWV3CisgICAgICAgIHRyZWUgd2FzIG5vdCBhd2FyZSB0aGF0IGl0IG5lZWRlZCBsYXlv
dXQgYmVjYXVzZSBpdCByZWFjaGVkIGEgemVybyBgX2RpcnR5RGVzY2VuZGFudHNDb3VudGAgd2hp
bGUgd2Fsa2luZyBkb3duCisgICAgICAgIHRoZSB2aWV3IGhpZXJhcmNoeSwgd2hpY2ggbWVhbnQg
dGhhdCB0aGUgVGltZWxpbmVPdmVydmlldyB3YXMgcGVycGV0dWFsbHkgc3R1Y2sgdW50aWwgdGhl
IGVudGlyZSB2aWV3IGhpZXJhcmNoeQorICAgICAgICBuZWVkZWQgcmUtbGFpZCBvdXQgZHVlIHRv
IGEgd2luZG93IHJlc2l6ZSBvciBzaW1pbGFyIGV2ZW50LgorCisgICAgICAgIE91ciBjdXJyZW50
IGFjY291bnRpbmcgZm9yIGBfZGlydHlEZXNjZW5kYW50c0NvdW50YCBpbiBWaWV3IG1ha2VzIGFz
c3VtcHRpb25zIHRoYXQgYXJlIG5vdCBhbHdheXMgdHJ1ZSBkdXJpbmcKKyAgICAgICAgbGF5b3V0
LiBTcGVjaWZpY2FsbHkgdGhhdCBwYXJlbnRzIG9mIHZpZXdzIHVuZGVyZ29pbmcgbGF5b3V0IHdp
bGwgaGF2ZSBhIG5vbi16ZXJvIGBfZGlydHlEZXNjZW5kYW50c0NvdW50YCBzdGlsbAorICAgICAg
ICBmcm9tIHdoaWNoIHRvIHN1YnRyYWN0IGluIGBfY2FuY2VsU2NoZWR1bGVkTGF5b3V0Rm9yVmll
d2AuIFRoaXMgd2Fzbid0IGFsd2F5cyB0cnVlIGJlY2F1c2UgYXMgc29vbiBhcyB3ZSBiZWdhbgor
ICAgICAgICBsYXlpbmcgb3V0IGEgcGFyZW50IHZpZXcsIHdlIGNsZWFyZWQgYm90aCB0aGUgYF9k
aXJ0eWAgZmxhZyBhcyB3ZWxsIGFzIHplcm9lZCBvdXQgYF9kaXJ0eURlc2NlbmRhbnRzQ291bnRg
LiBJbgorICAgICAgICB0aGUgY2FzZSBvZiBjYW5jZWxsaW5nIGEgbGF5b3V0IGZyb20gd2l0aGlu
IGEgbGF5b3V0LCB0aGUgY2FuY2VsbGF0aW9uIHdvdWxkbid0IGFjdHVhbGx5IHRha2UgZWZmZWN0
IGFueXdheXMsCisgICAgICAgIGFuZCBzaW5jZSBgY2FuY2VsTGF5b3V0YCB3YXMgb25seSBldmVy
IGludm9rZWQgZnJvbSBgdXBkYXRlTGF5b3V0YCwgdGhlIHJlbGV2YW50IGxheW91dCBmbGFncyBz
aG91bGQgaW5zdGVhZCBiZQorICAgICAgICBjbGVhcmVkIGFzIHBhcnQgb2YgYWN0dWFsbHkgcGVy
Zm9ybWluZyB0aGUgbGF5b3V0LiBgY2FuY2VsTGF5b3V0YCBhdCBtb3N0IHNhdmVkIHVzIGEgckFG
IGNhbGxiYWNrIG9ubHkgdG8KKyAgICAgICAgcmVhbGl6ZSB3ZSBubyBsb25nZXIgaGF2ZSBhbnkg
dmlld3MgaW4gbmVlZCBvZiBsYXlvdXQsIGJ1dCB0aGlzIGJlbmVmaXQgd2FzIG5lZ2xpZ2libGUs
IGFuZCBpbiBnZW5lcmFsIHdlIHNob3VsZAorICAgICAgICBwcmVmZXIgbm90IHRvIGJlIGNhbGxp
bmcgYHVwZGF0ZUxheW91dGAgZm9yIHBlcmZvcm1hbmNlIHJlYXNvbnMgYW55d2F5cy4KKworICAg
ICAgICBUaGlzIHBhdGNoIGltcHJvdmVzIHRoZSBhY2NvdW50aW5nIGFyb3VuZCBgX2RpcnR5RGVz
Y2VuZGFudHNDb3VudGAsIG1ha2luZyBzdXJlIHRvIGRlY3JlbWVudCBpdCBhcyB3ZSBwZXJmb3Jt
CisgICAgICAgIGxheW91dCwgaW5zdGVhZCBvZiBhbGwgYXQgb25jZS4gVGhpcyByZWR1Y2VzIG91
ciByZWxpYW5jZSBvbiBhc3N1bXB0aW9ucyBhYm91dCB3aG8gd2lsbCBtb2RpZnkgdGhlCisgICAg
ICAgIGBfZGlydHlEZXNjZW5kYW50c0NvdW50YCBhbmQgYXQgd2hhdCB0aW1lcyByZWxhdGl2ZSB0
byBsYXlvdXQuCisKKyAgICAgICAgVGhlIG9ubHkgdGltZSBpbiB0aGlzIHBhdGNoIHRoYXQgd2Ug
ZG8gbm90IGRvIGEgKzEvLTEgYWRqdXN0bWVudCB0byB0aGUgbGF5b3V0IGNvdW50IGlzIGluIHRo
ZSBzcGVjaWFsIGNhc2Ugb2YKKyAgICAgICAgYXR0YWNoaW5nL2RldGFjaGluZyBhIHZpZXcuIElu
IHRoYXQgY2FzZSwgdGhlIHBhcmVudCB0cmVlIGZyb20gd2hpY2ggd2UgYXJlIGRldGFjaGluZyB0
aGUgdmlldyB3aWxsIGhhdmUgdGhlCisgICAgICAgIGBfZGlydHlEZXNjZW5kYW50c0NvdW50YCBv
ZiB0aGUgZGV0YWNoZWQgcGFyZW50IGFkanVzdGVkIGJ5IHRoZSBgX2RpcnR5RGVzY2VuZGFudHND
b3VudGAgb2YgdGhlIGZvcm1lciBjaGlsZAorICAgICAgICB2aWV3LiBUaGlzIGlzIGRvbmUgYnkg
YF9zZXRTZWxmQW5kRGVzY2VuZGFudHNOb3REaXJ0eWAsIHdoaWNoIGFsbG93cyB1cyB0byBhdm9p
ZCBhbiBleHBvbmVudGlhbCB3YWxraW5nIG9mIHRoZQorICAgICAgICB0cmVlIGZvciB0aGlzIG90
aGVyd2lzZSBzZWxmLWNvbnRhaW5lZCBvcGVyYXRpb24gKHdlIGRvbid0IGNhbGwgaW50byBhbnkg
b3ZlcnJpZGFibGUgZnVuY3Rpb25zIHRoYXQgY291bGQgbW9kaWZ5CisgICAgICAgIHRoZSBgX2Rp
cnR5YCBmbGFnIG9yIGBfZGlydHlEZXNjZW5kYW50c0NvdW50YCkuCisKKyAgICAgICAgQWZ0ZXIg
d2UgaGF2ZSBjbGVhbmVkIHVwIHRoZSBmb3JtZXIgcGFyZW50IGJyYW5jaCBvZiB0aGUgdHJlZSwg
d2UgbWFyayB0aGUgbmV3bHkgYXR0YWNoZWQgdmlldyBhcyBuZWVkaW5nCisgICAgICAgIGxheW91
dCwgd2hpY2ggd2lsbCB0aGVuIGVuc3VyZSB0aGUgY2hpbGQgdmlldyBnZXRzIGxhaWQgb3V0IGFn
YWluIGJ5IG1hcmtpbmcgaXQgYXMgYGRpcnR5YCBhbmQgaW5jcmVtZW50aW5nIGl0cworICAgICAg
ICBuZXcgcGFyZW50IGJyYW5jaCBvZiB0aGUgdHJlZSdzIGBfZGlydHlEZXNjZW5kYW50c0NvdW50
YC4KKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvVmlldy5qczoKKyAgICAgICAgKFdJ
LlZpZXcucHJvdG90eXBlLl9zZXREaXJ0eSk6CisgICAgICAgIC0gTmV3IHV0aWxpdHkgbWV0aG9k
IHRocm91Z2ggd2hpY2ggKGFsbW9zdCkgYWxsIG1hcmtpbmcgb2YgZGlydHkvbm90IGRpcnR5IHNo
b3VsZCBiZSBkb25lIGluIG9yZGVyIHRvIGVuc3VyZQorICAgICAgICB0aGF0IGBfZGlydHlEZXNj
ZW5kYW50c0NvdW50YCBpcyBjb3JyZWN0bHkgYWRqdXN0ZWQuCisKKyAgICAgICAgKFdJLlZpZXcu
cHJvdG90eXBlLl9kaWRNb3ZlVG9QYXJlbnQpOgorICAgICAgICAtIE1hcmsgdGhlIHZpZXcgYW5k
IGFsbCBzdWJ2aWV3cyBhcyBub3QgZGlydHkgYmVmb3JlIHJlbW92aW5nIGl0IGZyb20gaXRzIHBy
ZXZpb3VzIHBhcmVudCBpbiBvcmRlciB0byBhZGp1c3QKKyAgICAgICAgYF9kaXJ0eURlc2NlbmRh
bnRzQ291bnRgIGFwcHJvcHJpYXRlbHksIGFuZCB0aGVuIG1hcmsgdGhlIHZpZXcgYXMgZGlydHkg
b25jZSBhdHRhY2hlZCB0byBpdHMgbmV3IHBhcmVudC4KKworICAgICAgICAoV0kuVmlldy5wcm90
b3R5cGUuX3NldFNlbGZBbmREZXNjZW5kYW50c05vdERpcnR5KToKKyAgICAgICAgLSBBIHNwZWNp
YWwgY2FzZSBvZiByZWN1cnNpdmVseSBjYWxsaW5nIGBfc2V0RGlydHkoZmFsc2UpYCB0aGF0IGlz
IGFibGUgdG8gb3B0aW1pemUgYXdheSB0aGUgbmVlZCB0byB3YWxrIHRoZQorICAgICAgICBlbnRp
cmUgcGFyZW50IHRyZWUgZm9yIGVhY2ggc3Vidmlldy9zdWJ2aWV3cyBvZiBzdWJ2aWV3cy9ldGMu
IGJlY2F1c2UgdGhlIG9wZXJhdGlvbiB0YWtlcyBwbGFjZSBhbGwgYXQgb25jZSB3aXRoCisgICAg
ICAgIG5vIG92ZXJyaWRhYmxlIGZ1bmN0aW9uIGJlaW5nIGNhbGxlZCB3aGVyZSB3ZSBoYXZlIHRv
IHdvcnJ5IGFib3V0IG11dGF0aW9ucyB0byBgX2RpcnR5YC9gX2RpcnR5RGVzY2VuZGFudHNDb3Vu
dGAuCisKKyAgICAgICAgKFdJLlZpZXcucHJvdG90eXBlLl9zZXRTZWxmQW5kRGVzY2VuZGFudHNB
dHRhY2hlZFRvUm9vdCk6IFJlbmFtZWQgZnJvbSBXSS5WaWV3LnByb3RvdHlwZS5fZGlkTW92ZVRv
V2luZG93CisgICAgICAgIC0gUmVuYW1lZCB0byBiZXR0ZXIgY29tbXVuaWNhdGUgd2hhdCB0aGUg
ZnVuY3Rpb24gYWN0dWFsbHkgZG9lcywgdHdlYWtlZCB0byBubyBsb25nZXIgbWFyayBlYWNoIHZp
ZXdzL3N1YnZpZXcKKyAgICAgICAgYXMgbmVlZGluZyBsYXlvdXQsIHNpbmNlIG1hcmtpbmcgdGhl
IHZpZXcgdGhhdCBpcyBhY3R1YWxseSBiZWluZyBhdHRhY2hlZC9kZXRhY2hlZCBhcyBuZWVkaW5n
IGxheW91dCB3aWxsIGNhdXNlCisgICAgICAgIGFsbCBzdWJ2aWV3cyB0byBiZSBsYWlkIG91dCBh
cyB3ZWxsLgorCisgICAgICAgIChXSS5WaWV3LnByb3RvdHlwZS5fbGF5b3V0U3VidHJlZSk6Cisg
ICAgICAgIChXSS5WaWV3Ll92aXNpdFZpZXdUcmVlRm9yTGF5b3V0KToKKyAgICAgICAgLSBEb24n
dCB6ZXJvIG91dCB0aGUgYF9kaXJ0eURlc2NlbmRhbnRzQ291bnRgLCBhbmQgaW5zdGVhZCB1c2Ug
dGhlIG5ldyBgX3NldERpcnR5YCBoZWxwZXIuCisKKyAgICAgICAgKFdJLlZpZXcuX3NjaGVkdWxl
TGF5b3V0Rm9yVmlldyk6CisgICAgICAgIC0gRG9uJ3QgemVybyBvdXQgdGhlIGBfZGlydHlEZXNj
ZW5kYW50c0NvdW50YCwgYW5kIGluc3RlYWQgdXNlIHRoZSBuZXcgYF9zZXREaXJ0eWAgaGVscGVy
LgorICAgICAgICAtIE1hcmsgdGhlIHZpZXcgYXMgZGlydHkgYWZ0ZXIgY2hlY2tpbmcgaWYgaXRz
IGF0dGFjaGVkIGEgdmlldyBzbyB0aGF0IGRldGFjaGVkIHZpZXdzIGhhdmUgbm8gZGlydHkgc3Rh
dGUgdW50aWwKKyAgICAgICAgdGhleSBhcmUgYXR0YWNoZWQsIGF0IHdoaWNoIHBvaW50IHRoZSBy
b290IG9mIHRoZSBwcmV2aW91cyBkZXRhY2hlZCBzdWJ0cmVlIHdpbGwgYmUgbWFya2VkIGFzIGRp
cnR5LgorCisgICAgICAgIChXSS5WaWV3LnByb3RvdHlwZS51cGRhdGVMYXlvdXQpOgorICAgICAg
ICAoV0kuVmlldy5wcm90b3R5cGUuY2FuY2VsTGF5b3V0KTogRGVsZXRlZC4KKyAgICAgICAgKFdJ
LlZpZXcuX2NhbmNlbFNjaGVkdWxlZExheW91dEZvclZpZXcpOiBEZWxldGVkLgorICAgICAgICAt
IFJlbW92ZSB0aGUgY29uY2VwdCBvZiAiY2FuY2VsaW5nIiBsYXlvdXQsIHNpbmNlIGl0IGlzIG9u
bHkgdXNlZCBieSBgdXBkYXRlTGF5b3V0YCwgYW5kIHRoZSBjYWxsIHRvCisgICAgICAgIGBfbGF5
b3V0U3VidHJlZWAgaW4gYHVwZGF0ZUxheW91dGAgd2lsbCBjYXVzZSB0aGUgdmlldywgZGlydHkg
b3Igbm90LCB0byBiZSBtYXJrZWQgYXMgbm90IGRpcnR5LgorCiAyMDIyLTA0LTI5ICBQYXRyaWNr
IEFuZ2xlICA8cGFuZ2xlQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBSZWdy
ZXNzaW9uKHIyNjcwMzgpIEltcG9ydCBhIHRpbWVsaW5lIGRvZXMgbm90IHJlbmRlciB0aGUgdGlt
ZWxpbmUsIG9ubHkgbGlzdHMgdGhlIGV2ZW50cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVmlldy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1ZpZXcuanMKaW5kZXggYjZkMGRhNGJkNWYyMGU2MDQ5MTMx
M2MyOGM3NWIxMzFmZDBlNmRhMS4uNDcxMDkwMjlkOGM1NDdkNTA4YWM5Zjc5YzViZDgyNjk0YjZj
ZTc2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmll
d3MvVmlldy5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3
cy9WaWV3LmpzCkBAIC0xNTMsOCArMTUzLDYgQEAgV0kuVmlldyA9IGNsYXNzIFZpZXcgZXh0ZW5k
cyBXSS5PYmplY3QKIAogICAgIHVwZGF0ZUxheW91dChsYXlvdXRSZWFzb24pCiAgICAgewotICAg
ICAgICB0aGlzLmNhbmNlbExheW91dCgpOwotCiAgICAgICAgIHRoaXMuX3NldExheW91dFJlYXNv
bihsYXlvdXRSZWFzb24pOwogICAgICAgICB0aGlzLl9sYXlvdXRTdWJ0cmVlKCk7CiAgICAgfQpA
QCAtMTc3LDExICsxNzUsNiBAQCBXSS5WaWV3ID0gY2xhc3MgVmlldyBleHRlbmRzIFdJLk9iamVj
dAogICAgICAgICBXSS5WaWV3Ll9zY2hlZHVsZUxheW91dEZvclZpZXcodGhpcyk7CiAgICAgfQog
Ci0gICAgY2FuY2VsTGF5b3V0KCkKLSAgICB7Ci0gICAgICAgIFdJLlZpZXcuX2NhbmNlbFNjaGVk
dWxlZExheW91dEZvclZpZXcodGhpcyk7Ci0gICAgfQotCiAgICAgLy8gUHJvdGVjdGVkCiAKICAg
ICBnZXQgbGF5b3V0UmVhc29uKCkgeyByZXR1cm4gdGhpcy5fbGF5b3V0UmVhc29uOyB9CkBAIC0y
MzAsNTAgKzIyMyw3OCBAQCBXSS5WaWV3ID0gY2xhc3MgVmlldyBleHRlbmRzIFdJLk9iamVjdAog
CiAgICAgLy8gUHJpdmF0ZQogCisgICAgX3NldERpcnR5KGRpcnR5KQorICAgIHsKKyAgICAgICAg
aWYgKHRoaXMuX2RpcnR5ID09PSBkaXJ0eSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAg
ICB0aGlzLl9kaXJ0eSA9IGRpcnR5OworCisgICAgICAgIGZvciAobGV0IHBhcmVudFZpZXcgPSB0
aGlzLnBhcmVudFZpZXc7IHBhcmVudFZpZXc7IHBhcmVudFZpZXcgPSBwYXJlbnRWaWV3LnBhcmVu
dFZpZXcpIHsKKyAgICAgICAgICAgIHBhcmVudFZpZXcuX2RpcnR5RGVzY2VuZGFudHNDb3VudCAr
PSB0aGlzLl9kaXJ0eSA/IDEgOiAtMTsKKyAgICAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHBhcmVu
dFZpZXcuX2RpcnR5RGVzY2VuZGFudHNDb3VudCA+PSAwKTsKKyAgICAgICAgfQorICAgIH0KKwog
ICAgIF9kaWRNb3ZlVG9QYXJlbnQocGFyZW50VmlldykKICAgICB7CisgICAgICAgIGlmICh0aGlz
Ll9wYXJlbnRWaWV3ID09PSBwYXJlbnRWaWV3KQorICAgICAgICAgICAgcmV0dXJuOworCisgICAg
ICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMuX3BhcmVudFZpZXcgfHwgISh0aGlzLl9pc0RpcnR5IHx8
IHRoaXMuX2RpcnR5RGVzY2VuZGFudHNDb3VudCkpOworCisgICAgICAgIHRoaXMuX3NldFNlbGZB
bmREZXNjZW5kYW50c05vdERpcnR5KCk7CisKICAgICAgICAgdGhpcy5fcGFyZW50VmlldyA9IHBh
cmVudFZpZXc7CiAKICAgICAgICAgbGV0IGlzQXR0YWNoZWRUb1Jvb3QgPSB0aGlzLmlzRGVzY2Vu
ZGFudE9mKFdJLlZpZXcuX3Jvb3RWaWV3KTsKLSAgICAgICAgdGhpcy5fZGlkTW92ZVRvV2luZG93
KGlzQXR0YWNoZWRUb1Jvb3QpOworICAgICAgICB0aGlzLl9zZXRTZWxmQW5kRGVzY2VuZGFudHNB
dHRhY2hlZFRvUm9vdChpc0F0dGFjaGVkVG9Sb290KTsKIAotICAgICAgICBpZiAoIXRoaXMuX3Bh
cmVudFZpZXcpCi0gICAgICAgICAgICByZXR1cm47CisgICAgICAgIGlmIChpc0F0dGFjaGVkVG9S
b290KQorICAgICAgICAgICAgV0kuVmlldy5fc2NoZWR1bGVMYXlvdXRGb3JWaWV3KHRoaXMpOwor
ICAgIH0KIAotICAgICAgICBsZXQgcGVuZGluZ0xheW91dHNDb3VudCA9IHRoaXMuX2RpcnR5RGVz
Y2VuZGFudHNDb3VudDsKKyAgICBfc2V0U2VsZkFuZERlc2NlbmRhbnRzTm90RGlydHkoKQorICAg
IHsKKyAgICAgICAgbGV0IGRpcnR5RGVzY2VuZGFudHNDb3VudCA9IHRoaXMuX2RpcnR5RGVzY2Vu
ZGFudHNDb3VudDsKICAgICAgICAgaWYgKHRoaXMuX2RpcnR5KQotICAgICAgICAgICAgcGVuZGlu
Z0xheW91dHNDb3VudCsrOworICAgICAgICAgICAgKytkaXJ0eURlc2NlbmRhbnRzQ291bnQ7CisK
KyAgICAgICAgaWYgKCFkaXJ0eURlc2NlbmRhbnRzQ291bnQpCisgICAgICAgICAgICByZXR1cm47
CisKKyAgICAgICAgbGV0IHZpZXdzID0gW3RoaXNdOworICAgICAgICB3aGlsZSAodmlld3MubGVu
Z3RoKSB7CisgICAgICAgICAgICBsZXQgdmlldyA9IHZpZXdzLnNoaWZ0KCk7CisgICAgICAgICAg
ICB2aWV3Ll9kaXJ0eSA9IGZhbHNlOworICAgICAgICAgICAgdmlldy5fZGlydHlEZXNjZW5kYW50
c0NvdW50ID0gMDsKKyAgICAgICAgICAgIHZpZXdzLnB1c2hBbGwodmlldy5zdWJ2aWV3cyk7Cisg
ICAgICAgIH0KIAotICAgICAgICBsZXQgdmlldyA9IHRoaXMuX3BhcmVudFZpZXc7Ci0gICAgICAg
IHdoaWxlICh2aWV3KSB7Ci0gICAgICAgICAgICB2aWV3Ll9kaXJ0eURlc2NlbmRhbnRzQ291bnQg
Kz0gcGVuZGluZ0xheW91dHNDb3VudDsKLSAgICAgICAgICAgIHZpZXcgPSB2aWV3LnBhcmVudFZp
ZXc7CisgICAgICAgIGZvciAobGV0IHBhcmVudFZpZXcgPSB0aGlzLnBhcmVudFZpZXc7IHBhcmVu
dFZpZXc7IHBhcmVudFZpZXcgPSBwYXJlbnRWaWV3LnBhcmVudFZpZXcpIHsKKyAgICAgICAgICAg
IHBhcmVudFZpZXcuX2RpcnR5RGVzY2VuZGFudHNDb3VudCAtPSBkaXJ0eURlc2NlbmRhbnRzQ291
bnQ7CisgICAgICAgICAgICBjb25zb2xlLmFzc2VydChwYXJlbnRWaWV3Ll9kaXJ0eURlc2NlbmRh
bnRzQ291bnQgPj0gMCk7CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBfZGlkTW92ZVRvV2luZG93
KGlzQXR0YWNoZWRUb1Jvb3QpCisgICAgX3NldFNlbGZBbmREZXNjZW5kYW50c0F0dGFjaGVkVG9S
b290KGlzQXR0YWNoZWRUb1Jvb3QpCiAgICAgewogICAgICAgICBpZiAodGhpcy5faXNBdHRhY2hl
ZFRvUm9vdCA9PT0gaXNBdHRhY2hlZFRvUm9vdCkKICAgICAgICAgICAgIHJldHVybjsKIAogICAg
ICAgICB0aGlzLl9pc0F0dGFjaGVkVG9Sb290ID0gaXNBdHRhY2hlZFRvUm9vdDsKLSAgICAgICAg
aWYgKHRoaXMuX2lzQXR0YWNoZWRUb1Jvb3QpIHsKLSAgICAgICAgICAgIFdJLlZpZXcuX3NjaGVk
dWxlTGF5b3V0Rm9yVmlldyh0aGlzKTsKKyAgICAgICAgaWYgKHRoaXMuX2lzQXR0YWNoZWRUb1Jv
b3QpCiAgICAgICAgICAgICB0aGlzLmF0dGFjaGVkKCk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAg
ICAgICAgICBpZiAodGhpcy5fZGlydHkpCi0gICAgICAgICAgICAgICAgdGhpcy5jYW5jZWxMYXlv
dXQoKTsKKyAgICAgICAgZWxzZQogICAgICAgICAgICAgdGhpcy5kZXRhY2hlZCgpOwotICAgICAg
ICB9CiAKLSAgICAgICAgZm9yIChsZXQgdmlldyBvZiB0aGlzLl9zdWJ2aWV3cykKLSAgICAgICAg
ICAgIHZpZXcuX2RpZE1vdmVUb1dpbmRvdyhpc0F0dGFjaGVkVG9Sb290KTsKKyAgICAgICAgZm9y
IChsZXQgc3VidmlldyBvZiB0aGlzLnN1YnZpZXdzKQorICAgICAgICAgICAgc3Vidmlldy5fc2V0
U2VsZkFuZERlc2NlbmRhbnRzQXR0YWNoZWRUb1Jvb3QoaXNBdHRhY2hlZFRvUm9vdCk7CiAgICAg
fQogCiAgICAgX2xheW91dFN1YnRyZWUoKQogICAgIHsKLSAgICAgICAgdGhpcy5fZGlydHkgPSBm
YWxzZTsKLSAgICAgICAgdGhpcy5fZGlydHlEZXNjZW5kYW50c0NvdW50ID0gMDsKKyAgICAgICAg
dGhpcy5fc2V0RGlydHkoZmFsc2UpOwogICAgICAgICBsZXQgaXNJbml0aWFsTGF5b3V0ID0gIXRo
aXMuX2RpZEluaXRpYWxMYXlvdXQ7CiAKICAgICAgICAgaWYgKGlzSW5pdGlhbExheW91dCkgewpA
QCAtMzQ0LDQ5ICszNjUsMTcgQEAgV0kuVmlldyA9IGNsYXNzIFZpZXcgZXh0ZW5kcyBXSS5PYmpl
Y3QKIAogICAgIHN0YXRpYyBfc2NoZWR1bGVMYXlvdXRGb3JWaWV3KHZpZXcpCiAgICAgewotICAg
ICAgICB2aWV3Ll9kaXJ0eSA9IHRydWU7Ci0KLSAgICAgICAgbGV0IHBhcmVudFZpZXcgPSB2aWV3
LnBhcmVudFZpZXc7Ci0gICAgICAgIHdoaWxlIChwYXJlbnRWaWV3KSB7Ci0gICAgICAgICAgICBw
YXJlbnRWaWV3Ll9kaXJ0eURlc2NlbmRhbnRzQ291bnQrKzsKLSAgICAgICAgICAgIHBhcmVudFZp
ZXcgPSBwYXJlbnRWaWV3LnBhcmVudFZpZXc7Ci0gICAgICAgIH0KLQogICAgICAgICBpZiAoIXZp
ZXcuX2lzQXR0YWNoZWRUb1Jvb3QpCiAgICAgICAgICAgICByZXR1cm47CiAKKyAgICAgICAgdmll
dy5fc2V0RGlydHkodHJ1ZSk7CisKICAgICAgICAgaWYgKFdJLlZpZXcuX3NjaGVkdWxlZExheW91
dFVwZGF0ZUlkZW50aWZpZXIpCiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgV0kuVmll
dy5fc2NoZWR1bGVkTGF5b3V0VXBkYXRlSWRlbnRpZmllciA9IHJlcXVlc3RBbmltYXRpb25GcmFt
ZShXSS5WaWV3Ll92aXNpdFZpZXdUcmVlRm9yTGF5b3V0KTsKICAgICB9CiAKLSAgICBzdGF0aWMg
X2NhbmNlbFNjaGVkdWxlZExheW91dEZvclZpZXcodmlldykKLSAgICB7Ci0gICAgICAgIGxldCBj
YW5jZWxsZWRMYXlvdXRzQ291bnQgPSB2aWV3Ll9kaXJ0eURlc2NlbmRhbnRzQ291bnQ7Ci0gICAg
ICAgIGlmICh2aWV3LmxheW91dFBlbmRpbmcpCi0gICAgICAgICAgICBjYW5jZWxsZWRMYXlvdXRz
Q291bnQrKzsKLQotICAgICAgICBsZXQgcGFyZW50VmlldyA9IHZpZXcucGFyZW50VmlldzsKLSAg
ICAgICAgd2hpbGUgKHBhcmVudFZpZXcpIHsKLSAgICAgICAgICAgIHBhcmVudFZpZXcuX2RpcnR5
RGVzY2VuZGFudHNDb3VudCA9IE1hdGgubWF4KDAsIHBhcmVudFZpZXcuX2RpcnR5RGVzY2VuZGFu
dHNDb3VudCAtIGNhbmNlbGxlZExheW91dHNDb3VudCk7Ci0gICAgICAgICAgICBwYXJlbnRWaWV3
ID0gcGFyZW50Vmlldy5wYXJlbnRWaWV3OwotICAgICAgICB9Ci0KLSAgICAgICAgdmlldy5fZGly
dHkgPSBmYWxzZTsKLQotICAgICAgICBpZiAoIVdJLlZpZXcuX3NjaGVkdWxlZExheW91dFVwZGF0
ZUlkZW50aWZpZXIpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgbGV0IHJvb3RWaWV3
ID0gV0kuVmlldy5fcm9vdFZpZXc7Ci0gICAgICAgIGlmICghcm9vdFZpZXcgfHwgcm9vdFZpZXcu
X2RpcnR5RGVzY2VuZGFudHNDb3VudCkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICAv
LyBObyB2aWV3cyBuZWVkIGxheW91dCwgc28gY2FuY2VsIHRoZSBwZW5kaW5nIHJlcXVlc3RBbmlt
YXRpb25GcmFtZS4KLSAgICAgICAgY2FuY2VsQW5pbWF0aW9uRnJhbWUoV0kuVmlldy5fc2NoZWR1
bGVkTGF5b3V0VXBkYXRlSWRlbnRpZmllcik7Ci0gICAgICAgIFdJLlZpZXcuX3NjaGVkdWxlZExh
eW91dFVwZGF0ZUlkZW50aWZpZXIgPSB1bmRlZmluZWQ7Ci0gICAgfQotCiAgICAgc3RhdGljIF92
aXNpdFZpZXdUcmVlRm9yTGF5b3V0KCkKICAgICB7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KFdJ
LlZpZXcuX3Jvb3RWaWV3LCAiQ2Fubm90IGxheW91dCB2aWV3IHRyZWUgd2l0aG91dCBhIHJvb3Qu
Iik7CkBAIC00MDAsNyArMzg5LDYgQEAgV0kuVmlldyA9IGNsYXNzIFZpZXcgZXh0ZW5kcyBXSS5P
YmplY3QKICAgICAgICAgICAgICAgICB2aWV3Ll9sYXlvdXRTdWJ0cmVlKCk7CiAgICAgICAgICAg
ICBlbHNlIGlmICh2aWV3Ll9kaXJ0eURlc2NlbmRhbnRzQ291bnQpIHsKICAgICAgICAgICAgICAg
ICB2aWV3cy5wdXNoQWxsKHZpZXcuc3Vidmlld3MpOwotICAgICAgICAgICAgICAgIHZpZXcuX2Rp
cnR5RGVzY2VuZGFudHNDb3VudCA9IDA7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKaW5kZXggMDE4NmU4YTNmM2M2OTI5NThjMWMxNjBkMmY2ZTI4NGQ2NTBhNjg0YS4uZTAxODBk
M2E3MTM1YjUwMTNhMGIxNDQxMmJmOWI2YmVhYmM1MjMzMSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBA
CisyMDIyLTA1LTAyICBQYXRyaWNrIEFuZ2xlICA8cGFuZ2xlQGFwcGxlLmNvbT4KKworICAgICAg
ICBXZWIgSW5zcGVjdG9yOiBJbXBvcnRpbmcgYSB0aW1lbGluZSBsZWF2ZXMgdGltZWxpbmUgb3Zl
cnZpZXcgbm9uLXNjcm9sbGFibGUvbm9uLXpvb21hYmxlIHVudGlsIHdpbmRvd3MgaXMgcmVzaXpl
ZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjM5ODgw
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBpbnNw
ZWN0b3Ivdmlldy9hc3luY2hyb25vdXMtbGF5b3V0LWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBp
bnNwZWN0b3Ivdmlldy9hc3luY2hyb25vdXMtbGF5b3V0Lmh0bWw6CisgICAgICAgIC0gUmVtb3Zl
IHRlc3QgY2FzZSBmb3IgcmVtb3ZlZCBgVmlldy5wcm90b3R5cGUuY2FuY2VsTGF5b3V0YC4KKwog
MjAyMi0wNC0yNyAgSmVhbi1ZdmVzIEF2ZW5hcmQgIDxqeWFAYXBwbGUuY29tPgogCiAgICAgICAg
IFsgTW9udGVyZXkgV0syIF0gbWVkaWEvbWVkaWEtc291cmNlL21lZGlhLXNvdXJjZS13ZWJtLXZv
cmJpcy1wYXJ0aWFsLmh0bWwgaXMgYSBjb25zdGFudCBmYWlsdXJlCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbnNwZWN0b3Ivdmlldy9hc3luY2hyb25vdXMtbGF5b3V0LWV4cGVjdGVkLnR4dCBi
L0xheW91dFRlc3RzL2luc3BlY3Rvci92aWV3L2FzeW5jaHJvbm91cy1sYXlvdXQtZXhwZWN0ZWQu
dHh0CmluZGV4IDlhMTU5YTRlN2E5MmZiNWQ2OWM5NGY0N2M3ZWQ0NTAzYTc1YmRjZDYuLjYwYmM0
NjlhMTI0ZTlhNGI3YTZmM2M2N2RjOTY3ZTFlOTg1N2UwYmMgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL2luc3BlY3Rvci92aWV3L2FzeW5jaHJvbm91cy1sYXlvdXQtZXhwZWN0ZWQudHh0CisrKyBi
L0xheW91dFRlc3RzL2luc3BlY3Rvci92aWV3L2FzeW5jaHJvbm91cy1sYXlvdXQtZXhwZWN0ZWQu
dHh0CkBAIC0yNiw5ICsyNiwzIEBAIExheW91dCBjb21wbGV0ZS4KIFBBU1M6IENobGlkIHZpZXcg
c2hvdWxkIGRvIGFuIGluaXRpYWwgbGF5b3V0LgogUEFTUzogQ2hpbGQgdmlldyBzaG91bGQgdXBk
YXRlIGl0cyBsYXlvdXQuCiAKLS0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBWaWV3LmNhbmNlbExheW91
dAotQ2FuY2VsIGF1dG9tYXRpYyBsYXlvdXQuCi1QQVNTOiBWaWV3IHNob3VsZCBub3QgaGF2ZSBh
IHBlbmRpbmcgbGF5b3V0LgotQ2FuY2VsIHNjaGVkdWxlZCBsYXlvdXQuCi1QQVNTOiBWaWV3IHNo
b3VsZCBub3QgaGF2ZSBhIHBlbmRpbmcgbGF5b3V0LgotCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9pbnNwZWN0b3Ivdmlldy9hc3luY2hyb25vdXMtbGF5b3V0Lmh0bWwgYi9MYXlvdXRUZXN0cy9p
bnNwZWN0b3Ivdmlldy9hc3luY2hyb25vdXMtbGF5b3V0Lmh0bWwKaW5kZXggMWNmYTA0YmU3NmY0
NDE5MWY3YzljMDJlMTIzYWFkZWY3YjYyYWM0My4uNzdhMWE4ZmU4NWUzM2I1ODIyMmY4NmQ2MGFi
ZjM2MjQ1ODdhNzQ2ZiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3ZpZXcvYXN5
bmNocm9ub3VzLWxheW91dC5odG1sCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci92aWV3L2Fz
eW5jaHJvbm91cy1sYXlvdXQuaHRtbApAQCAtODAsMjQgKzgwLDYgQEAgZnVuY3Rpb24gdGVzdCgp
CiAgICAgICAgIH0KICAgICB9KTsKIAotICAgIHN1aXRlLmFkZFRlc3RDYXNlKHsKLSAgICAgICAg
bmFtZTogIlZpZXcuY2FuY2VsTGF5b3V0IiwKLSAgICAgICAgdGVzdChyZXNvbHZlLCByZWplY3Qp
IHsKLSAgICAgICAgICAgIGxldCB2aWV3ID0gbmV3IFdJLlRlc3RWaWV3OwotICAgICAgICAgICAg
V0kuVmlldy5yb290VmlldygpLmFkZFN1YnZpZXcodmlldyk7Ci0KLSAgICAgICAgICAgIEluc3Bl
Y3RvclRlc3QubG9nKCJDYW5jZWwgYXV0b21hdGljIGxheW91dC4iKTsKLSAgICAgICAgICAgIHZp
ZXcuY2FuY2VsTGF5b3V0KCk7Ci0gICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEZhbHNl
KHZpZXcubGF5b3V0UGVuZGluZywgIlZpZXcgc2hvdWxkIG5vdCBoYXZlIGEgcGVuZGluZyBsYXlv
dXQuIik7Ci0KLSAgICAgICAgICAgIEluc3BlY3RvclRlc3QubG9nKCJDYW5jZWwgc2NoZWR1bGVk
IGxheW91dC4iKTsKLSAgICAgICAgICAgIHZpZXcubmVlZHNMYXlvdXQoKTsKLSAgICAgICAgICAg
IHZpZXcuY2FuY2VsTGF5b3V0KCk7Ci0gICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEZh
bHNlKHZpZXcubGF5b3V0UGVuZGluZywgIlZpZXcgc2hvdWxkIG5vdCBoYXZlIGEgcGVuZGluZyBs
YXlvdXQuIik7Ci0gICAgICAgICAgICByZXNvbHZlKCk7Ci0gICAgICAgIH0KLSAgICB9KTsKLQog
ICAgIHN1aXRlLnJ1blRlc3RDYXNlc0FuZEZpbmlzaCgpOwogfQogPC9zY3JpcHQ+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>458714</attachid>
            <date>2022-05-02 16:52:43 -0700</date>
            <delta_ts>2022-05-03 09:04:00 -0700</delta_ts>
            <desc>Patch v1.3</desc>
            <filename>bug-239880-20220502165242.patch</filename>
            <type>text/plain</type>
            <size>25872</size>
            <attacher name="Patrick Angle">pangle</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkzNjQwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwppbmRleCA3
MzVlZThkZWQ0MGE3MzlhZjk2ZDlmNWQwNjczMmExNjk1OGIzY2JlLi5iOTk1Y2EyZjg3OTA4ZTEz
N2E1YWVkZjQ2YjU2YzBhZDRmOTQ1MDAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw3OSBAQAorMjAyMi0wNS0wMiAgUGF0cmljayBBbmdsZSAgPHBhbmdsZUBhcHBsZS5jb20+
CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogSW1wb3J0aW5nIGEgdGltZWxpbmUgbGVhdmVzIHRp
bWVsaW5lIG92ZXJ2aWV3IG5vbi1zY3JvbGxhYmxlL25vbi16b29tYWJsZSB1bnRpbCB3aW5kb3dz
IGlzIHJlc2l6ZWQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTIzOTg4MAorCisgICAgICAgIFJldmlld2VkIGJ5IERldmluIFJvdXNzby4KKworICAgICAg
ICBDYW5jZWxsaW5nIGFuIGluLXByb2dyZXNzIGxheW91dCAob3IgdGhlIGxheW91dCBvZiBhIGNo
aWxkIG9mIGEgdmlldyBpbiBtaWRkbGUgb2YgbGF5aW5nIG91dCkgbGVkIHRvCisgICAgICAgIGBf
ZGlydHlEZXNjZW5kYW50c0NvdW50YCBiZWluZyBpbiBhbiBpbmNvbnNpc3RlbnQgc3RhdGUuIFZp
ZXdzIGhhZCB0aGVpciBgX2RpcnR5RGVzY2VuZGFudHNDb3VudGAgY2xlYXJlZCBiZWZvcmUKKyAg
ICAgICAgdGhleSBhcmUgbGFpZCBvdXQsIHNvIGV2ZXJ5IG5vbi16ZXJvIGBfZGlydHlEZXNjZW5k
YW50c0NvdW50YCBvZiBhIHZpZXcgaW4gdGhlIHByb2Nlc3Mgb2YgYmVpbmcgbGFpZCBvdXQgbWVh
bnQKKyAgICAgICAgdGhhdCBkdXJpbmcgbGF5b3V0IGBuZWVkc0xheW91dCgpYCB3YXMgY2FsbGVk
IHRvIGRpcnR5IHRoYXQgdmlldyBvciBvbmUgb2YgaXRzIGNoaWxkcmVuLiBJbiB0aGlzIGNhc2Us
IGEKKyAgICAgICAgcHJldmlvdXMgY2FuY2VsbGF0aW9uIG1lYW50IHRoYXQgdGhlIFRpbWVsaW5l
T3ZlcnZpZXcgZW5kZWQgdXAgaW4gYW4gaW5jb25zaXN0ZW50IHN0YXRlIHdoZXJlIGl0cyBwYXJl
bnQgdmlldworICAgICAgICB0cmVlIHdhcyBub3QgYXdhcmUgdGhhdCBpdCBuZWVkZWQgbGF5b3V0
IGJlY2F1c2UgaXQgcmVhY2hlZCBhIHplcm8gYF9kaXJ0eURlc2NlbmRhbnRzQ291bnRgIHdoaWxl
IHdhbGtpbmcgZG93bgorICAgICAgICB0aGUgdmlldyBoaWVyYXJjaHksIHdoaWNoIG1lYW50IHRo
YXQgdGhlIFRpbWVsaW5lT3ZlcnZpZXcgd2FzIHBlcnBldHVhbGx5IHN0dWNrIHVudGlsIHRoZSBl
bnRpcmUgdmlldyBoaWVyYXJjaHkKKyAgICAgICAgbmVlZGVkIHJlLWxhaWQgb3V0IGR1ZSB0byBh
IHdpbmRvdyByZXNpemUgb3Igc2ltaWxhciBldmVudC4KKworICAgICAgICBPdXIgY3VycmVudCBh
Y2NvdW50aW5nIGZvciBgX2RpcnR5RGVzY2VuZGFudHNDb3VudGAgaW4gVmlldyBtYWtlcyBhc3N1
bXB0aW9ucyB0aGF0IGFyZSBub3QgYWx3YXlzIHRydWUgZHVyaW5nCisgICAgICAgIGxheW91dC4g
U3BlY2lmaWNhbGx5IHRoYXQgcGFyZW50cyBvZiB2aWV3cyB1bmRlcmdvaW5nIGxheW91dCB3aWxs
IGhhdmUgYSBub24temVybyBgX2RpcnR5RGVzY2VuZGFudHNDb3VudGAgc3RpbGwKKyAgICAgICAg
ZnJvbSB3aGljaCB0byBzdWJ0cmFjdCBpbiBgX2NhbmNlbFNjaGVkdWxlZExheW91dEZvclZpZXdg
LiBUaGlzIHdhc24ndCBhbHdheXMgdHJ1ZSBiZWNhdXNlIGFzIHNvb24gYXMgd2UgYmVnYW4KKyAg
ICAgICAgbGF5aW5nIG91dCBhIHBhcmVudCB2aWV3LCB3ZSBjbGVhcmVkIGJvdGggdGhlIGBfZGly
dHlgIGZsYWcgYXMgd2VsbCBhcyB6ZXJvZWQgb3V0IGBfZGlydHlEZXNjZW5kYW50c0NvdW50YC4g
SW4KKyAgICAgICAgdGhlIGNhc2Ugb2YgY2FuY2VsbGluZyBhIGxheW91dCBmcm9tIHdpdGhpbiBh
IGxheW91dCwgdGhlIGNhbmNlbGxhdGlvbiB3b3VsZG4ndCBhY3R1YWxseSB0YWtlIGVmZmVjdCBh
bnl3YXlzLAorICAgICAgICBhbmQgc2luY2UgYGNhbmNlbExheW91dGAgd2FzIG9ubHkgZXZlciBp
bnZva2VkIGZyb20gYHVwZGF0ZUxheW91dGAsIHRoZSByZWxldmFudCBsYXlvdXQgZmxhZ3Mgc2hv
dWxkIGluc3RlYWQgYmUKKyAgICAgICAgY2xlYXJlZCBhcyBwYXJ0IG9mIGFjdHVhbGx5IHBlcmZv
cm1pbmcgdGhlIGxheW91dC4gYGNhbmNlbExheW91dGAgYXQgbW9zdCBzYXZlZCB1cyBhIHJBRiBj
YWxsYmFjayBvbmx5IHRvCisgICAgICAgIHJlYWxpemUgd2Ugbm8gbG9uZ2VyIGhhdmUgYW55IHZp
ZXdzIGluIG5lZWQgb2YgbGF5b3V0LCBidXQgdGhpcyBiZW5lZml0IHdhcyBuZWdsaWdpYmxlLCBh
bmQgaW4gZ2VuZXJhbCB3ZSBzaG91bGQKKyAgICAgICAgcHJlZmVyIG5vdCB0byBiZSBjYWxsaW5n
IGB1cGRhdGVMYXlvdXRgIGZvciBwZXJmb3JtYW5jZSByZWFzb25zIGFueXdheXMuCisKKyAgICAg
ICAgVGhpcyBwYXRjaCBpbXByb3ZlcyB0aGUgYWNjb3VudGluZyBhcm91bmQgYF9kaXJ0eURlc2Nl
bmRhbnRzQ291bnRgLCBtYWtpbmcgc3VyZSB0byBkZWNyZW1lbnQgaXQgYXMgd2UgcGVyZm9ybQor
ICAgICAgICBsYXlvdXQsIGluc3RlYWQgb2YgYWxsIGF0IG9uY2UuIFRoaXMgcmVkdWNlcyBvdXIg
cmVsaWFuY2Ugb24gYXNzdW1wdGlvbnMgYWJvdXQgd2hvIHdpbGwgbW9kaWZ5IHRoZQorICAgICAg
ICBgX2RpcnR5RGVzY2VuZGFudHNDb3VudGAgYW5kIGF0IHdoYXQgdGltZXMgcmVsYXRpdmUgdG8g
bGF5b3V0LgorCisgICAgICAgIFRoZSBvbmx5IHRpbWUgaW4gdGhpcyBwYXRjaCB0aGF0IHdlIGRv
IG5vdCBkbyBhICsxLy0xIGFkanVzdG1lbnQgdG8gdGhlIGxheW91dCBjb3VudCBpcyBpbiB0aGUg
c3BlY2lhbCBjYXNlIG9mCisgICAgICAgIGF0dGFjaGluZy9kZXRhY2hpbmcgYSB2aWV3LiBJbiB0
aGF0IGNhc2UsIHRoZSBwYXJlbnQgdHJlZSBmcm9tIHdoaWNoIHdlIGFyZSBkZXRhY2hpbmcgdGhl
IHZpZXcgd2lsbCBoYXZlIHRoZQorICAgICAgICBgX2RpcnR5RGVzY2VuZGFudHNDb3VudGAgb2Yg
dGhlIGRldGFjaGVkIHBhcmVudCBhZGp1c3RlZCBieSB0aGUgYF9kaXJ0eURlc2NlbmRhbnRzQ291
bnRgIG9mIHRoZSBmb3JtZXIgY2hpbGQKKyAgICAgICAgdmlldy4gVGhpcyBpcyBkb25lIGJ5IGBf
c2V0U2VsZkFuZERlc2NlbmRhbnRzTm90RGlydHlgLCB3aGljaCBhbGxvd3MgdXMgdG8gYXZvaWQg
YW4gZXhwb25lbnRpYWwgd2Fsa2luZyBvZiB0aGUKKyAgICAgICAgdHJlZSBmb3IgdGhpcyBvdGhl
cndpc2Ugc2VsZi1jb250YWluZWQgb3BlcmF0aW9uICh3ZSBkb24ndCBjYWxsIGludG8gYW55IG92
ZXJyaWRhYmxlIGZ1bmN0aW9ucyB0aGF0IGNvdWxkIG1vZGlmeQorICAgICAgICB0aGUgYF9kaXJ0
eWAgZmxhZyBvciBgX2RpcnR5RGVzY2VuZGFudHNDb3VudGApLgorCisgICAgICAgIEFmdGVyIHdl
IGhhdmUgY2xlYW5lZCB1cCB0aGUgZm9ybWVyIHBhcmVudCBicmFuY2ggb2YgdGhlIHRyZWUsIHdl
IG1hcmsgdGhlIG5ld2x5IGF0dGFjaGVkIHZpZXcgYXMgbmVlZGluZworICAgICAgICBsYXlvdXQs
IHdoaWNoIHdpbGwgdGhlbiBlbnN1cmUgdGhlIGNoaWxkIHZpZXcgZ2V0cyBsYWlkIG91dCBhZ2Fp
biBieSBtYXJraW5nIGl0IGFzIGBkaXJ0eWAgYW5kIGluY3JlbWVudGluZyBpdHMKKyAgICAgICAg
bmV3IHBhcmVudCBicmFuY2ggb2YgdGhlIHRyZWUncyBgX2RpcnR5RGVzY2VuZGFudHNDb3VudGAu
CisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL1ZpZXcuanM6CisgICAgICAgIChXSS5W
aWV3LnByb3RvdHlwZS5pbnNlcnRTdWJ2aWV3QmVmb3JlKToKKyAgICAgICAgLSBBZGQgYXNzZXJ0
aW9uIHRoYXQgdGhlIHZpZXcgaXMgbm90IGN1cnJlbnRseSBhIGNoaWxkIG9mIGEgZGlmZmVyZW50
IHZpZXcgaW4gYWRkaXRpb24gdG8gdGhlIGV4aXN0aW5nIGNoZWNrCisgICAgICAgIHRoYXQgYSB2
aWV3IGlzIG5vdCBhbHJlYWR5IGEgY2hpbGQgb2YgdGhlIHRhcmdldCB2aWV3LgorCisgICAgICAg
IChXSS5WaWV3LnByb3RvdHlwZS5fc2V0RGlydHkpOgorICAgICAgICAtIE5ldyB1dGlsaXR5IG1l
dGhvZCB0aHJvdWdoIHdoaWNoIChhbG1vc3QpIGFsbCBtYXJraW5nIG9mIGRpcnR5L25vdCBkaXJ0
eSBzaG91bGQgYmUgZG9uZSBpbiBvcmRlciB0byBlbnN1cmUKKyAgICAgICAgdGhhdCBgX2RpcnR5
RGVzY2VuZGFudHNDb3VudGAgaXMgY29ycmVjdGx5IGFkanVzdGVkLgorCisgICAgICAgIChXSS5W
aWV3LnByb3RvdHlwZS5fZGlkTW92ZVRvUGFyZW50KToKKyAgICAgICAgLSBNYXJrIHRoZSB2aWV3
IGFuZCBhbGwgc3Vidmlld3MgYXMgbm90IGRpcnR5IGJlZm9yZSByZW1vdmluZyBpdCBmcm9tIGl0
cyBwcmV2aW91cyBwYXJlbnQgaW4gb3JkZXIgdG8gYWRqdXN0CisgICAgICAgIGBfZGlydHlEZXNj
ZW5kYW50c0NvdW50YCBhcHByb3ByaWF0ZWx5LCBhbmQgdGhlbiBtYXJrIHRoZSB2aWV3IGFzIGRp
cnR5IG9uY2UgYXR0YWNoZWQgdG8gaXRzIG5ldyBwYXJlbnQuCisgICAgICAgIC0gSW5saW5lIHRo
ZSBsb2dpYyBmcm9tIFdJLlZpZXcucHJvdG90eXBlLl9kaWRNb3ZlVG9XaW5kb3cgaW4gb3JkZXIg
dG8gYWxzbyBoYW5kbGUgbWFya2luZyBjaGlsZHJlbiBhcyBub3QgZGlydHkKKyAgICAgICAgYW5k
IGhhdmluZyBhIHplcm9lZCBgX2RpcnR5RGVzY2VuZGFudHNDb3VudGAuCisgICAgICAgIC0gVGhp
cyBtZXRob2QgY29udGFpbnMgdGhlIGV4Y2VwdGlvbiB0byB0aGUgcnVsZSB0aGF0IF9kaXJ0eURl
c2NlbmRhbnRzQ291bnQgaXMgYWx3YXlzIGluY3JlbWVudGVkL2RlY3JlbWVudGVkCisgICAgICAg
IGJ5IG9uZS4gSGVyZSB3ZSBhcmUgYWJsZSB0byBvcHRpbWl6ZSBhd2F5IHRoZSBuZWVkIHRvIHdh
bGsgdGhlIGVudGlyZSBwYXJlbnQgdHJlZSBmb3IgZWFjaCBzdWJ2aWV3L3N1YnZpZXdzIG9mCisg
ICAgICAgIHN1YnZpZXdzL2V0Yy4gYmVjYXVzZSB0aGUgb3BlcmF0aW9uIHRha2VzIHBsYWNlIGFs
bCBhdCBvbmNlIHdpdGggbm8gb3ZlcnJpZGFibGUgZnVuY3Rpb24gYmVpbmcgY2FsbGVkIHdoZXJl
IHdlCisgICAgICAgIGhhdmUgdG8gd29ycnkgYWJvdXQgbXV0YXRpb25zIHRvIGBfZGlydHlgL2Bf
ZGlydHlEZXNjZW5kYW50c0NvdW50YC4KKworICAgICAgICAoV0kuVmlldy5wcm90b3R5cGUuX2xh
eW91dFN1YnRyZWUpOgorICAgICAgICAoV0kuVmlldy5fdmlzaXRWaWV3VHJlZUZvckxheW91dCk6
CisgICAgICAgIC0gRG9uJ3QgemVybyBvdXQgdGhlIGBfZGlydHlEZXNjZW5kYW50c0NvdW50YCwg
YW5kIGluc3RlYWQgdXNlIHRoZSBuZXcgYF9zZXREaXJ0eWAgaGVscGVyLgorCisgICAgICAgIChX
SS5WaWV3Ll9zY2hlZHVsZUxheW91dEZvclZpZXcpOgorICAgICAgICAtIERvbid0IHplcm8gb3V0
IHRoZSBgX2RpcnR5RGVzY2VuZGFudHNDb3VudGAsIGFuZCBpbnN0ZWFkIHVzZSB0aGUgbmV3IGBf
c2V0RGlydHlgIGhlbHBlci4KKyAgICAgICAgLSBNYXJrIHRoZSB2aWV3IGFzIGRpcnR5IGFmdGVy
IGNoZWNraW5nIGlmIGl0cyBhdHRhY2hlZCBhIHZpZXcgc28gdGhhdCBkZXRhY2hlZCB2aWV3cyBo
YXZlIG5vIGRpcnR5IHN0YXRlIHVudGlsCisgICAgICAgIHRoZXkgYXJlIGF0dGFjaGVkLCBhdCB3
aGljaCBwb2ludCB0aGUgcm9vdCBvZiB0aGUgcHJldmlvdXMgZGV0YWNoZWQgc3VidHJlZSB3aWxs
IGJlIG1hcmtlZCBhcyBkaXJ0eS4KKyAgICAgICAgLSBEcml2ZS1ieSBjaGFuZ2UgdG8gdXNlIGEg
Zm9yLWxvb3AgaW5zdGVhZCBvZiBhIHdoaWxlLWxvb3AgdG8gYXZvaWQgYEFycmF5LnByb3RvdHlw
ZS5zaGlmdCgpYC4KKworICAgICAgICAoV0kuVmlldy5wcm90b3R5cGUudXBkYXRlTGF5b3V0KToK
KyAgICAgICAgKFdJLlZpZXcucHJvdG90eXBlLmNhbmNlbExheW91dCk6IERlbGV0ZWQuCisgICAg
ICAgIChXSS5WaWV3Ll9jYW5jZWxTY2hlZHVsZWRMYXlvdXRGb3JWaWV3KTogRGVsZXRlZC4KKyAg
ICAgICAgLSBSZW1vdmUgdGhlIGNvbmNlcHQgb2YgImNhbmNlbGluZyIgbGF5b3V0LCBzaW5jZSBp
dCBpcyBvbmx5IHVzZWQgYnkgYHVwZGF0ZUxheW91dGAsIGFuZCB0aGUgY2FsbCB0bworICAgICAg
ICBgX2xheW91dFN1YnRyZWVgIGluIGB1cGRhdGVMYXlvdXRgIHdpbGwgY2F1c2UgdGhlIHZpZXcs
IGRpcnR5IG9yIG5vdCwgdG8gYmUgbWFya2VkIGFzIG5vdCBkaXJ0eS4KKwogMjAyMi0wNC0yOSAg
UGF0cmljayBBbmdsZSAgPHBhbmdsZUBhcHBsZS5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3Rv
cjogUmVncmVzc2lvbihyMjY3MDM4KSBJbXBvcnQgYSB0aW1lbGluZSBkb2VzIG5vdCByZW5kZXIg
dGhlIHRpbWVsaW5lLCBvbmx5IGxpc3RzIHRoZSBldmVudHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1ZpZXcuanMgYi9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9WaWV3LmpzCmluZGV4IGI2ZDBkYTRiZDVmMjBl
NjA0OTEzMTNjMjhjNzViMTMxZmQwZTZkYTEuLmY3ZDM4ZmQzODczNzM0MmExY2FlMTdkYWE0Mjcz
NWFlZjYyOTM1NjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL1ZpZXdzL1ZpZXcuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvVmlld3MvVmlldy5qcwpAQCAtOTUsNiArOTUsOCBAQCBXSS5WaWV3ID0gY2xhc3MgVmlldyBl
eHRlbmRzIFdJLk9iamVjdAogICAgICAgICBjb25zb2xlLmFzc2VydCghcmVmZXJlbmNlVmlldyB8
fCByZWZlcmVuY2VWaWV3IGluc3RhbmNlb2YgV0kuVmlldyk7CiAgICAgICAgIGNvbnNvbGUuYXNz
ZXJ0KHZpZXcgIT09IFdJLlZpZXcuX3Jvb3RWaWV3LCAiUm9vdCB2aWV3IGNhbm5vdCBiZSBhIHN1
YnZpZXcuIik7CiAKKyAgICAgICAgY29uc29sZS5hc3NlcnQoIXZpZXcucGFyZW50Vmlldywgdmll
dyk7CisKICAgICAgICAgaWYgKHRoaXMuX3N1YnZpZXdzLmluY2x1ZGVzKHZpZXcpKSB7CiAgICAg
ICAgICAgICBjb25zb2xlLmFzc2VydChmYWxzZSwgIkNhbm5vdCBhZGQgdmlldyB0aGF0IGlzIGFs
cmVhZHkgYSBzdWJ2aWV3LiIsIHZpZXcpOwogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMTUzLDgg
KzE1NSw2IEBAIFdJLlZpZXcgPSBjbGFzcyBWaWV3IGV4dGVuZHMgV0kuT2JqZWN0CiAKICAgICB1
cGRhdGVMYXlvdXQobGF5b3V0UmVhc29uKQogICAgIHsKLSAgICAgICAgdGhpcy5jYW5jZWxMYXlv
dXQoKTsKLQogICAgICAgICB0aGlzLl9zZXRMYXlvdXRSZWFzb24obGF5b3V0UmVhc29uKTsKICAg
ICAgICAgdGhpcy5fbGF5b3V0U3VidHJlZSgpOwogICAgIH0KQEAgLTE3NywxMSArMTc3LDYgQEAg
V0kuVmlldyA9IGNsYXNzIFZpZXcgZXh0ZW5kcyBXSS5PYmplY3QKICAgICAgICAgV0kuVmlldy5f
c2NoZWR1bGVMYXlvdXRGb3JWaWV3KHRoaXMpOwogICAgIH0KIAotICAgIGNhbmNlbExheW91dCgp
Ci0gICAgewotICAgICAgICBXSS5WaWV3Ll9jYW5jZWxTY2hlZHVsZWRMYXlvdXRGb3JWaWV3KHRo
aXMpOwotICAgIH0KLQogICAgIC8vIFByb3RlY3RlZAogCiAgICAgZ2V0IGxheW91dFJlYXNvbigp
IHsgcmV0dXJuIHRoaXMuX2xheW91dFJlYXNvbjsgfQpAQCAtMjMwLDUwICsyMjUsNjUgQEAgV0ku
VmlldyA9IGNsYXNzIFZpZXcgZXh0ZW5kcyBXSS5PYmplY3QKIAogICAgIC8vIFByaXZhdGUKIAot
ICAgIF9kaWRNb3ZlVG9QYXJlbnQocGFyZW50VmlldykKKyAgICBfc2V0RGlydHkoZGlydHkpCiAg
ICAgewotICAgICAgICB0aGlzLl9wYXJlbnRWaWV3ID0gcGFyZW50VmlldzsKLQotICAgICAgICBs
ZXQgaXNBdHRhY2hlZFRvUm9vdCA9IHRoaXMuaXNEZXNjZW5kYW50T2YoV0kuVmlldy5fcm9vdFZp
ZXcpOwotICAgICAgICB0aGlzLl9kaWRNb3ZlVG9XaW5kb3coaXNBdHRhY2hlZFRvUm9vdCk7Ci0K
LSAgICAgICAgaWYgKCF0aGlzLl9wYXJlbnRWaWV3KQorICAgICAgICBpZiAodGhpcy5fZGlydHkg
PT09IGRpcnR5KQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIGxldCBwZW5kaW5nTGF5
b3V0c0NvdW50ID0gdGhpcy5fZGlydHlEZXNjZW5kYW50c0NvdW50OwotICAgICAgICBpZiAodGhp
cy5fZGlydHkpCi0gICAgICAgICAgICBwZW5kaW5nTGF5b3V0c0NvdW50Kys7CisgICAgICAgIHRo
aXMuX2RpcnR5ID0gZGlydHk7CiAKLSAgICAgICAgbGV0IHZpZXcgPSB0aGlzLl9wYXJlbnRWaWV3
OwotICAgICAgICB3aGlsZSAodmlldykgewotICAgICAgICAgICAgdmlldy5fZGlydHlEZXNjZW5k
YW50c0NvdW50ICs9IHBlbmRpbmdMYXlvdXRzQ291bnQ7Ci0gICAgICAgICAgICB2aWV3ID0gdmll
dy5wYXJlbnRWaWV3OworICAgICAgICBmb3IgKGxldCBwYXJlbnRWaWV3ID0gdGhpcy5wYXJlbnRW
aWV3OyBwYXJlbnRWaWV3OyBwYXJlbnRWaWV3ID0gcGFyZW50Vmlldy5wYXJlbnRWaWV3KSB7Cisg
ICAgICAgICAgICBwYXJlbnRWaWV3Ll9kaXJ0eURlc2NlbmRhbnRzQ291bnQgKz0gdGhpcy5fZGly
dHkgPyAxIDogLTE7CisgICAgICAgICAgICBjb25zb2xlLmFzc2VydChwYXJlbnRWaWV3Ll9kaXJ0
eURlc2NlbmRhbnRzQ291bnQgPj0gMCk7CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBfZGlkTW92
ZVRvV2luZG93KGlzQXR0YWNoZWRUb1Jvb3QpCisgICAgX2RpZE1vdmVUb1BhcmVudChwYXJlbnRW
aWV3KQogICAgIHsKLSAgICAgICAgaWYgKHRoaXMuX2lzQXR0YWNoZWRUb1Jvb3QgPT09IGlzQXR0
YWNoZWRUb1Jvb3QpCisgICAgICAgIGlmICh0aGlzLl9wYXJlbnRWaWV3ID09PSBwYXJlbnRWaWV3
KQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIHRoaXMuX2lzQXR0YWNoZWRUb1Jvb3Qg
PSBpc0F0dGFjaGVkVG9Sb290OwotICAgICAgICBpZiAodGhpcy5faXNBdHRhY2hlZFRvUm9vdCkg
ewotICAgICAgICAgICAgV0kuVmlldy5fc2NoZWR1bGVMYXlvdXRGb3JWaWV3KHRoaXMpOwotICAg
ICAgICAgICAgdGhpcy5hdHRhY2hlZCgpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAg
aWYgKHRoaXMuX2RpcnR5KQotICAgICAgICAgICAgICAgIHRoaXMuY2FuY2VsTGF5b3V0KCk7Ci0g
ICAgICAgICAgICB0aGlzLmRldGFjaGVkKCk7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMu
X3BhcmVudFZpZXcgfHwgISh0aGlzLl9pc0RpcnR5IHx8IHRoaXMuX2RpcnR5RGVzY2VuZGFudHND
b3VudCkpOworCisgICAgICAgIGxldCBkaXJ0eURlc2NlbmRhbnRzQ291bnQgPSB0aGlzLl9kaXJ0
eURlc2NlbmRhbnRzQ291bnQ7CisgICAgICAgIGlmICh0aGlzLl9kaXJ0eSkKKyAgICAgICAgICAg
ICsrZGlydHlEZXNjZW5kYW50c0NvdW50OworCisgICAgICAgIGlmIChkaXJ0eURlc2NlbmRhbnRz
Q291bnQpIHsKKyAgICAgICAgICAgIGZvciAobGV0IHZpZXcgPSB0aGlzLnBhcmVudFZpZXc7IHZp
ZXc7IHZpZXcgPSB2aWV3LnBhcmVudFZpZXcpIHsKKyAgICAgICAgICAgICAgICB2aWV3Ll9kaXJ0
eURlc2NlbmRhbnRzQ291bnQgLT0gZGlydHlEZXNjZW5kYW50c0NvdW50OworICAgICAgICAgICAg
ICAgIGNvbnNvbGUuYXNzZXJ0KHZpZXcuX2RpcnR5RGVzY2VuZGFudHNDb3VudCA+PSAwKTsKKyAg
ICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIHRoaXMuX3BhcmVudFZpZXcgPSBwYXJl
bnRWaWV3OworICAgICAgICBsZXQgaXNBdHRhY2hlZFRvUm9vdCA9IHRoaXMuaXNEZXNjZW5kYW50
T2YoV0kuVmlldy5fcm9vdFZpZXcpOworCisgICAgICAgIGxldCB2aWV3cyA9IFt0aGlzXTsKKyAg
ICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB2aWV3cy5sZW5ndGg7ICsraSkgeworICAgICAgICAg
ICAgbGV0IHZpZXcgPSB2aWV3c1tpXTsKKyAgICAgICAgICAgIHZpZXdzLnB1c2hBbGwodmlldy5z
dWJ2aWV3cyk7CisKKyAgICAgICAgICAgIHZpZXcuX2RpcnR5ID0gZmFsc2U7CisgICAgICAgICAg
ICB2aWV3Ll9kaXJ0eURlc2NlbmRhbnRzQ291bnQgPSAwOworCisgICAgICAgICAgICBpZiAodmll
dy5faXNBdHRhY2hlZFRvUm9vdCA9PT0gaXNBdHRhY2hlZFRvUm9vdCkKKyAgICAgICAgICAgICAg
ICBjb250aW51ZTsKKworICAgICAgICAgICAgdmlldy5faXNBdHRhY2hlZFRvUm9vdCA9IGlzQXR0
YWNoZWRUb1Jvb3Q7CisgICAgICAgICAgICBpZiAodmlldy5faXNBdHRhY2hlZFRvUm9vdCkKKyAg
ICAgICAgICAgICAgICB2aWV3LmF0dGFjaGVkKCk7CisgICAgICAgICAgICBlbHNlCisgICAgICAg
ICAgICAgICAgdmlldy5kZXRhY2hlZCgpOwogICAgICAgICB9CiAKLSAgICAgICAgZm9yIChsZXQg
dmlldyBvZiB0aGlzLl9zdWJ2aWV3cykKLSAgICAgICAgICAgIHZpZXcuX2RpZE1vdmVUb1dpbmRv
dyhpc0F0dGFjaGVkVG9Sb290KTsKKyAgICAgICAgaWYgKGlzQXR0YWNoZWRUb1Jvb3QpCisgICAg
ICAgICAgICBXSS5WaWV3Ll9zY2hlZHVsZUxheW91dEZvclZpZXcodGhpcyk7CiAgICAgfQogCiAg
ICAgX2xheW91dFN1YnRyZWUoKQogICAgIHsKLSAgICAgICAgdGhpcy5fZGlydHkgPSBmYWxzZTsK
LSAgICAgICAgdGhpcy5fZGlydHlEZXNjZW5kYW50c0NvdW50ID0gMDsKKyAgICAgICAgdGhpcy5f
c2V0RGlydHkoZmFsc2UpOwogICAgICAgICBsZXQgaXNJbml0aWFsTGF5b3V0ID0gIXRoaXMuX2Rp
ZEluaXRpYWxMYXlvdXQ7CiAKICAgICAgICAgaWYgKGlzSW5pdGlhbExheW91dCkgewpAQCAtMzQ0
LDQ5ICszNTQsMTcgQEAgV0kuVmlldyA9IGNsYXNzIFZpZXcgZXh0ZW5kcyBXSS5PYmplY3QKIAog
ICAgIHN0YXRpYyBfc2NoZWR1bGVMYXlvdXRGb3JWaWV3KHZpZXcpCiAgICAgewotICAgICAgICB2
aWV3Ll9kaXJ0eSA9IHRydWU7Ci0KLSAgICAgICAgbGV0IHBhcmVudFZpZXcgPSB2aWV3LnBhcmVu
dFZpZXc7Ci0gICAgICAgIHdoaWxlIChwYXJlbnRWaWV3KSB7Ci0gICAgICAgICAgICBwYXJlbnRW
aWV3Ll9kaXJ0eURlc2NlbmRhbnRzQ291bnQrKzsKLSAgICAgICAgICAgIHBhcmVudFZpZXcgPSBw
YXJlbnRWaWV3LnBhcmVudFZpZXc7Ci0gICAgICAgIH0KLQogICAgICAgICBpZiAoIXZpZXcuX2lz
QXR0YWNoZWRUb1Jvb3QpCiAgICAgICAgICAgICByZXR1cm47CiAKKyAgICAgICAgdmlldy5fc2V0
RGlydHkodHJ1ZSk7CisKICAgICAgICAgaWYgKFdJLlZpZXcuX3NjaGVkdWxlZExheW91dFVwZGF0
ZUlkZW50aWZpZXIpCiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgV0kuVmlldy5fc2No
ZWR1bGVkTGF5b3V0VXBkYXRlSWRlbnRpZmllciA9IHJlcXVlc3RBbmltYXRpb25GcmFtZShXSS5W
aWV3Ll92aXNpdFZpZXdUcmVlRm9yTGF5b3V0KTsKICAgICB9CiAKLSAgICBzdGF0aWMgX2NhbmNl
bFNjaGVkdWxlZExheW91dEZvclZpZXcodmlldykKLSAgICB7Ci0gICAgICAgIGxldCBjYW5jZWxs
ZWRMYXlvdXRzQ291bnQgPSB2aWV3Ll9kaXJ0eURlc2NlbmRhbnRzQ291bnQ7Ci0gICAgICAgIGlm
ICh2aWV3LmxheW91dFBlbmRpbmcpCi0gICAgICAgICAgICBjYW5jZWxsZWRMYXlvdXRzQ291bnQr
KzsKLQotICAgICAgICBsZXQgcGFyZW50VmlldyA9IHZpZXcucGFyZW50VmlldzsKLSAgICAgICAg
d2hpbGUgKHBhcmVudFZpZXcpIHsKLSAgICAgICAgICAgIHBhcmVudFZpZXcuX2RpcnR5RGVzY2Vu
ZGFudHNDb3VudCA9IE1hdGgubWF4KDAsIHBhcmVudFZpZXcuX2RpcnR5RGVzY2VuZGFudHNDb3Vu
dCAtIGNhbmNlbGxlZExheW91dHNDb3VudCk7Ci0gICAgICAgICAgICBwYXJlbnRWaWV3ID0gcGFy
ZW50Vmlldy5wYXJlbnRWaWV3OwotICAgICAgICB9Ci0KLSAgICAgICAgdmlldy5fZGlydHkgPSBm
YWxzZTsKLQotICAgICAgICBpZiAoIVdJLlZpZXcuX3NjaGVkdWxlZExheW91dFVwZGF0ZUlkZW50
aWZpZXIpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgbGV0IHJvb3RWaWV3ID0gV0ku
Vmlldy5fcm9vdFZpZXc7Ci0gICAgICAgIGlmICghcm9vdFZpZXcgfHwgcm9vdFZpZXcuX2RpcnR5
RGVzY2VuZGFudHNDb3VudCkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICAvLyBObyB2
aWV3cyBuZWVkIGxheW91dCwgc28gY2FuY2VsIHRoZSBwZW5kaW5nIHJlcXVlc3RBbmltYXRpb25G
cmFtZS4KLSAgICAgICAgY2FuY2VsQW5pbWF0aW9uRnJhbWUoV0kuVmlldy5fc2NoZWR1bGVkTGF5
b3V0VXBkYXRlSWRlbnRpZmllcik7Ci0gICAgICAgIFdJLlZpZXcuX3NjaGVkdWxlZExheW91dFVw
ZGF0ZUlkZW50aWZpZXIgPSB1bmRlZmluZWQ7Ci0gICAgfQotCiAgICAgc3RhdGljIF92aXNpdFZp
ZXdUcmVlRm9yTGF5b3V0KCkKICAgICB7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KFdJLlZpZXcu
X3Jvb3RWaWV3LCAiQ2Fubm90IGxheW91dCB2aWV3IHRyZWUgd2l0aG91dCBhIHJvb3QuIik7CkBA
IC0zOTQsMTQgKzM3MiwxMiBAQCBXSS5WaWV3ID0gY2xhc3MgVmlldyBleHRlbmRzIFdJLk9iamVj
dAogICAgICAgICBXSS5WaWV3Ll9zY2hlZHVsZWRMYXlvdXRVcGRhdGVJZGVudGlmaWVyID0gdW5k
ZWZpbmVkOwogCiAgICAgICAgIGxldCB2aWV3cyA9IFtXSS5WaWV3Ll9yb290Vmlld107Ci0gICAg
ICAgIHdoaWxlICh2aWV3cy5sZW5ndGgpIHsKLSAgICAgICAgICAgIGxldCB2aWV3ID0gdmlld3Mu
c2hpZnQoKTsKKyAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB2aWV3cy5sZW5ndGg7ICsraSkg
eworICAgICAgICAgICAgbGV0IHZpZXcgPSB2aWV3c1tpXTsKICAgICAgICAgICAgIGlmICh2aWV3
LmxheW91dFBlbmRpbmcpCiAgICAgICAgICAgICAgICAgdmlldy5fbGF5b3V0U3VidHJlZSgpOwot
ICAgICAgICAgICAgZWxzZSBpZiAodmlldy5fZGlydHlEZXNjZW5kYW50c0NvdW50KSB7CisgICAg
ICAgICAgICBlbHNlIGlmICh2aWV3Ll9kaXJ0eURlc2NlbmRhbnRzQ291bnQpCiAgICAgICAgICAg
ICAgICAgdmlld3MucHVzaEFsbCh2aWV3LnN1YnZpZXdzKTsKLSAgICAgICAgICAgICAgICB2aWV3
Ll9kaXJ0eURlc2NlbmRhbnRzQ291bnQgPSAwOwotICAgICAgICAgICAgfQogICAgICAgICB9CiAg
ICAgfQogfTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3Rz
L0NoYW5nZUxvZwppbmRleCAwMTg2ZThhM2YzYzY5Mjk1OGMxYzE2MGQyZjZlMjg0ZDY1MGE2ODRh
Li5kNWM3M2RhOTMwNDg0YzZkNDcwMzA4MTRlMDI0NWVmNDAwMzA4NDg0IDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMjAgQEAKKzIwMjItMDUtMDIgIFBhdHJpY2sgQW5nbGUgIDxwYW5nbGVAYXBwbGUuY29tPgor
CisgICAgICAgIFdlYiBJbnNwZWN0b3I6IEltcG9ydGluZyBhIHRpbWVsaW5lIGxlYXZlcyB0aW1l
bGluZSBvdmVydmlldyBub24tc2Nyb2xsYWJsZS9ub24tem9vbWFibGUgdW50aWwgd2luZG93cyBp
cyByZXNpemVkCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0yMzk4ODAKKworICAgICAgICBSZXZpZXdlZCBieSBEZXZpbiBSb3Vzc28uCisKKyAgICAgICAg
KiBpbnNwZWN0b3Ivdmlldy9hc3luY2hyb25vdXMtbGF5b3V0LWV4cGVjdGVkLnR4dDoKKyAgICAg
ICAgKiBpbnNwZWN0b3Ivdmlldy9hc3luY2hyb25vdXMtbGF5b3V0Lmh0bWw6CisgICAgICAgIC0g
QWRkZWQgdGVzdCBjYXNlIGZvciBjYWxscyB0byBgdXBkYXRlTGF5b3V0KClgIGR1cmluZyBhc3lu
Y2hyb25vdXMgYGxheW91dCgpYC4KKyAgICAgICAgLSBSZW1vdmUgdGVzdCBjYXNlIGZvciByZW1v
dmVkIGBWaWV3LnByb3RvdHlwZS5jYW5jZWxMYXlvdXRgLgorCisgICAgICAgICogaW5zcGVjdG9y
L3ZpZXcvYmFzaWNzLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBpbnNwZWN0b3Ivdmlldy9iYXNp
Y3MuaHRtbDoKKyAgICAgICAgLSBBZGRlZCB0ZXN0IGNhc2UgdG8gdmVyaWZ5IHRoYXQgYF9kaXJ0
eURlc2NlbmRhbnRzQ291bnRgIGlzIGFuIGV4cGVjdGVkIHZhbHVlIGF0IHZhcmlvdXMgcG9pbnRz
IG9mCisgICAgICAgIGF0dGFjaGluZy9kZXRhY2hpbmcgdmlld3MuCisKIDIwMjItMDQtMjcgIEpl
YW4tWXZlcyBBdmVuYXJkICA8anlhQGFwcGxlLmNvbT4KIAogICAgICAgICBbIE1vbnRlcmV5IFdL
MiBdIG1lZGlhL21lZGlhLXNvdXJjZS9tZWRpYS1zb3VyY2Utd2VibS12b3JiaXMtcGFydGlhbC5o
dG1sIGlzIGEgY29uc3RhbnQgZmFpbHVyZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVj
dG9yL3ZpZXcvYXN5bmNocm9ub3VzLWxheW91dC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9p
bnNwZWN0b3Ivdmlldy9hc3luY2hyb25vdXMtbGF5b3V0LWV4cGVjdGVkLnR4dAppbmRleCA5YTE1
OWE0ZTdhOTJmYjVkNjljOTRmNDdjN2VkNDUwM2E3NWJkY2Q2Li4wYzBkZGY0ZjVhZWFjOTMwODBi
Y2I3YzA1NjRhYmJiMDZiZjVkMmUxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3Iv
dmlldy9hc3luY2hyb25vdXMtbGF5b3V0LWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9p
bnNwZWN0b3Ivdmlldy9hc3luY2hyb25vdXMtbGF5b3V0LWV4cGVjdGVkLnR4dApAQCAtMjAsMTUg
KzIwLDMzIEBAIExheW91dCBjb21wbGV0ZS4KIFBBU1M6IFZpZXcgc2hvdWxkIHVwZGF0ZSBpdHMg
bGF5b3V0LgogUEFTUzogVmlldyBzaG91bGQgbm90IGhhdmUgYSBwZW5kaW5nIGxheW91dC4KIAor
LS0gUnVubmluZyB0ZXN0IGNhc2U6IFZpZXcuU3luY3Jvbm91c0xheW91dER1cmluZ0FzeW5jcm9u
b3VzTGF5b3V0CitQQVNTOiBSb290IHZpZXcgc2hvdWxkIGhhdmUgMiBkaXJ0eSBkZXNjZW5kYW50
cy4KK1BBU1M6IFBhcmVudCB2aWV3IHNob3VsZCBoYXZlIDEgZGlydHkgZGVzY2VuZGFudC4KK1BB
U1M6IENoaWxkIHZpZXcgc2hvdWxkIGhhdmUgMCBkaXJ0eSBkZXNjZW5kYW50cy4KK1BBU1M6IFZp
ZXcgc2hvdWxkIGhhdmUgYSBwZW5kaW5nIGxheW91dC4KK0NoaWxkIHZpZXcgY29tcGxldGVkIGEg
bGF5b3V0LgorUEFTUzogUm9vdCB2aWV3IHNob3VsZCBoYXZlIDEgZGlydHkgZGVzY2VuZGFudC4K
K1BBU1M6IFBhcmVudCB2aWV3IHNob3VsZCBoYXZlIDAgZGlydHkgZGVzY2VuZGFudHMuCitQQVNT
OiBDaGlsZCB2aWV3IHNob3VsZCBoYXZlIDAgZGlydHkgZGVzY2VuZGFudHMuCitQQVNTOiBQYXJl
bnQgdmlldyBzaG91bGQgaGF2ZSBzdGFydGVkIGEgbGF5b3V0LgorUEFTUzogQ2hpbGQgdmlldyBz
aG91bGQgaGF2ZSBjb21wbGV0ZWQgMSBsYXlvdXQuCitDaGlsZCB2aWV3IGNvbXBsZXRlZCBhIGxh
eW91dC4KK1BBU1M6IFJvb3QgdmlldyBzaG91bGQgaGF2ZSAwIGRpcnR5IGRlc2NlbmRhbnRzLgor
UEFTUzogUGFyZW50IHZpZXcgc2hvdWxkIGhhdmUgMCBkaXJ0eSBkZXNjZW5kYW50cy4KK1BBU1M6
IENoaWxkIHZpZXcgc2hvdWxkIGhhdmUgMCBkaXJ0eSBkZXNjZW5kYW50cy4KK1BBU1M6IFBhcmVu
dCB2aWV3IHNob3VsZCBoYXZlIHN0YXJ0ZWQgYSBsYXlvdXQuCitQQVNTOiBDaGlsZCB2aWV3IHNo
b3VsZCBoYXZlIGNvbXBsZXRlZCAyIGxheW91dHMuCitQYXJlbnQgdmlldyBjb21wbGV0ZWQgYSBs
YXlvdXQuCitQQVNTOiBSb290IHZpZXcgc2hvdWxkIGhhdmUgMCBkaXJ0eSBkZXNjZW5kYW50cy4K
K1BBU1M6IFJvb3QgdmlldyBzaG91bGQgaGF2ZSAwIGRpcnR5IGRlc2NlbmRhbnRzLgorUEFTUzog
Um9vdCB2aWV3IHNob3VsZCBoYXZlIDAgZGlydHkgZGVzY2VuZGFudHMuCitQQVNTOiBQYXJlbnQg
dmlldyBzaG91bGQgaGF2ZSBjb21wbGV0ZWQgMSBsYXlvdXQuCitQQVNTOiBQYXJlbnQgdmlldyBz
aG91bGQgbm90IGhhdmUgYSBwZW5kaW5nIGxheW91dC4KKwogLS0gUnVubmluZyB0ZXN0IGNhc2U6
IFZpZXcubmVlZHNMYXlvdXQucHJvcG9nYXRlVG9TdWJ2aWV3CiBTY2hlZHVsZSBwYXJlbnQgdmll
dyB1cGRhdGUuCiBMYXlvdXQgY29tcGxldGUuCiBQQVNTOiBDaGxpZCB2aWV3IHNob3VsZCBkbyBh
biBpbml0aWFsIGxheW91dC4KIFBBU1M6IENoaWxkIHZpZXcgc2hvdWxkIHVwZGF0ZSBpdHMgbGF5
b3V0LgogCi0tLSBSdW5uaW5nIHRlc3QgY2FzZTogVmlldy5jYW5jZWxMYXlvdXQKLUNhbmNlbCBh
dXRvbWF0aWMgbGF5b3V0LgotUEFTUzogVmlldyBzaG91bGQgbm90IGhhdmUgYSBwZW5kaW5nIGxh
eW91dC4KLUNhbmNlbCBzY2hlZHVsZWQgbGF5b3V0LgotUEFTUzogVmlldyBzaG91bGQgbm90IGhh
dmUgYSBwZW5kaW5nIGxheW91dC4KLQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9y
L3ZpZXcvYXN5bmNocm9ub3VzLWxheW91dC5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3Zp
ZXcvYXN5bmNocm9ub3VzLWxheW91dC5odG1sCmluZGV4IDFjZmEwNGJlNzZmNDQxOTFmN2M5YzAy
ZTEyM2FhZGVmN2I2MmFjNDMuLmNhOGUxNDA3YWQ1YzI3NzVhOGYwNzI3MjVlMjc2OTg5ZDdmNGJi
OWMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci92aWV3L2FzeW5jaHJvbm91cy1s
YXlvdXQuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3Ivdmlldy9hc3luY2hyb25vdXMt
bGF5b3V0Lmh0bWwKQEAgLTYxLDYgKzYxLDY1IEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgICAgICB9
CiAgICAgfSk7CiAKKyAgICBzdWl0ZS5hZGRUZXN0Q2FzZSh7CisgICAgICAgIG5hbWU6ICJWaWV3
LlN5bmNyb25vdXNMYXlvdXREdXJpbmdBc3luY3Jvbm91c0xheW91dCIsCisgICAgICAgIHRlc3Qo
cmVzb2x2ZSwgcmVqZWN0KSB7CisgICAgICAgICAgICBsZXQgVXBkYXRlTGF5b3V0VGVzdFZpZXcg
PSBjbGFzcyBVcGRhdGVMYXlvdXRUZXN0VmlldyBleHRlbmRzIFdJLlRlc3RWaWV3IHsKKyAgICAg
ICAgICAgICAgICBsYXlvdXQoKSB7CisgICAgICAgICAgICAgICAgICAgIHN1cGVyLmxheW91dCgp
OworCisgICAgICAgICAgICAgICAgICAgIHRoaXMuc3Vidmlld3NbMF0udXBkYXRlTGF5b3V0KCk7
CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICBsZXQgcm9v
dFZpZXcgPSBXSS5WaWV3LnJvb3RWaWV3KCk7CisgICAgICAgICAgICBsZXQgcGFyZW50VmlldyA9
IG5ldyBVcGRhdGVMYXlvdXRUZXN0VmlldzsKKyAgICAgICAgICAgIGxldCBjaGlsZFZpZXcgPSBu
ZXcgV0kuVGVzdFZpZXc7CisKKyAgICAgICAgICAgIHJvb3RWaWV3LmFkZFN1YnZpZXcocGFyZW50
Vmlldyk7CisgICAgICAgICAgICBwYXJlbnRWaWV3LmFkZFN1YnZpZXcoY2hpbGRWaWV3KTsKKwor
ICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RFcXVhbChyb290Vmlldy5fZGlydHlEZXNj
ZW5kYW50c0NvdW50LCAyLCAiUm9vdCB2aWV3IHNob3VsZCBoYXZlIDIgZGlydHkgZGVzY2VuZGFu
dHMuIik7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEVxdWFsKHBhcmVudFZpZXcu
X2RpcnR5RGVzY2VuZGFudHNDb3VudCwgMSwgIlBhcmVudCB2aWV3IHNob3VsZCBoYXZlIDEgZGly
dHkgZGVzY2VuZGFudC4iKTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RXF1YWwo
Y2hpbGRWaWV3Ll9kaXJ0eURlc2NlbmRhbnRzQ291bnQsIDAsICJDaGlsZCB2aWV3IHNob3VsZCBo
YXZlIDAgZGlydHkgZGVzY2VuZGFudHMuIik7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4
cGVjdFRoYXQocGFyZW50Vmlldy5sYXlvdXRQZW5kaW5nLCAiVmlldyBzaG91bGQgaGF2ZSBhIHBl
bmRpbmcgbGF5b3V0LiIpOworCisgICAgICAgICAgICBjaGlsZFZpZXcuZXZhbHVhdGVBZnRlckxh
eW91dCgoKSA9PiB7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIkNoaWxkIHZp
ZXcgY29tcGxldGVkIGEgbGF5b3V0LiIpOworCisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVz
dC5leHBlY3RFcXVhbChyb290Vmlldy5fZGlydHlEZXNjZW5kYW50c0NvdW50LCAwLCAiUm9vdCB2
aWV3IHNob3VsZCBoYXZlIDEgZGlydHkgZGVzY2VuZGFudC4iKTsKKyAgICAgICAgICAgICAgICBJ
bnNwZWN0b3JUZXN0LmV4cGVjdEVxdWFsKHBhcmVudFZpZXcuX2RpcnR5RGVzY2VuZGFudHNDb3Vu
dCwgMCwgIlBhcmVudCB2aWV3IHNob3VsZCBoYXZlIDAgZGlydHkgZGVzY2VuZGFudHMuIik7Cisg
ICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RFcXVhbChjaGlsZFZpZXcuX2RpcnR5
RGVzY2VuZGFudHNDb3VudCwgMCwgIkNoaWxkIHZpZXcgc2hvdWxkIGhhdmUgMCBkaXJ0eSBkZXNj
ZW5kYW50cy4iKTsKKworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RXF1YWwo
cGFyZW50Vmlldy5sYXlvdXRDb3VudCwgMSwgIlBhcmVudCB2aWV3IHNob3VsZCBoYXZlIHN0YXJ0
ZWQgYSBsYXlvdXQuIik7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RFcXVh
bChjaGlsZFZpZXcubGF5b3V0Q291bnQsIDEsICJDaGlsZCB2aWV3IHNob3VsZCBoYXZlIGNvbXBs
ZXRlZCAxIGxheW91dC4iKTsKKworICAgICAgICAgICAgICAgIGNoaWxkVmlldy5ldmFsdWF0ZUFm
dGVyTGF5b3V0KCgpID0+IHsKKyAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2co
IkNoaWxkIHZpZXcgY29tcGxldGVkIGEgbGF5b3V0LiIpOworICAgICAgICAgICAgICAgICAgICBJ
bnNwZWN0b3JUZXN0LmV4cGVjdEVxdWFsKHJvb3RWaWV3Ll9kaXJ0eURlc2NlbmRhbnRzQ291bnQs
IDAsICJSb290IHZpZXcgc2hvdWxkIGhhdmUgMCBkaXJ0eSBkZXNjZW5kYW50cy4iKTsKKyAgICAg
ICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RFcXVhbChwYXJlbnRWaWV3Ll9kaXJ0
eURlc2NlbmRhbnRzQ291bnQsIDAsICJQYXJlbnQgdmlldyBzaG91bGQgaGF2ZSAwIGRpcnR5IGRl
c2NlbmRhbnRzLiIpOworICAgICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEVx
dWFsKGNoaWxkVmlldy5fZGlydHlEZXNjZW5kYW50c0NvdW50LCAwLCAiQ2hpbGQgdmlldyBzaG91
bGQgaGF2ZSAwIGRpcnR5IGRlc2NlbmRhbnRzLiIpOworCisgICAgICAgICAgICAgICAgICAgIElu
c3BlY3RvclRlc3QuZXhwZWN0RXF1YWwocGFyZW50Vmlldy5sYXlvdXRDb3VudCwgMSwgIlBhcmVu
dCB2aWV3IHNob3VsZCBoYXZlIHN0YXJ0ZWQgYSBsYXlvdXQuIik7CisgICAgICAgICAgICAgICAg
ICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RXF1YWwoY2hpbGRWaWV3LmxheW91dENvdW50LCAyLCAi
Q2hpbGQgdmlldyBzaG91bGQgaGF2ZSBjb21wbGV0ZWQgMiBsYXlvdXRzLiIpOworICAgICAgICAg
ICAgICAgIH0pOworICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgIHBhcmVudFZpZXcuZXZh
bHVhdGVBZnRlckxheW91dCgoKSA9PiB7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5s
b2coIlBhcmVudCB2aWV3IGNvbXBsZXRlZCBhIGxheW91dC4iKTsKKworICAgICAgICAgICAgICAg
IEluc3BlY3RvclRlc3QuZXhwZWN0RXF1YWwocm9vdFZpZXcuX2RpcnR5RGVzY2VuZGFudHNDb3Vu
dCwgMCwgIlJvb3QgdmlldyBzaG91bGQgaGF2ZSAwIGRpcnR5IGRlc2NlbmRhbnRzLiIpOworICAg
ICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RXF1YWwocGFyZW50Vmlldy5fZGlydHlE
ZXNjZW5kYW50c0NvdW50LCAwLCAiUm9vdCB2aWV3IHNob3VsZCBoYXZlIDAgZGlydHkgZGVzY2Vu
ZGFudHMuIik7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RFcXVhbChjaGls
ZFZpZXcuX2RpcnR5RGVzY2VuZGFudHNDb3VudCwgMCwgIlJvb3QgdmlldyBzaG91bGQgaGF2ZSAw
IGRpcnR5IGRlc2NlbmRhbnRzLiIpOworCisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5l
eHBlY3RFcXVhbChwYXJlbnRWaWV3LmxheW91dENvdW50LCAxLCAiUGFyZW50IHZpZXcgc2hvdWxk
IGhhdmUgY29tcGxldGVkIDEgbGF5b3V0LiIpOworICAgICAgICAgICAgICAgIEluc3BlY3RvclRl
c3QuZXhwZWN0RmFsc2UocGFyZW50Vmlldy5sYXlvdXRQZW5kaW5nLCAiUGFyZW50IHZpZXcgc2hv
dWxkIG5vdCBoYXZlIGEgcGVuZGluZyBsYXlvdXQuIik7CisKKyAgICAgICAgICAgICAgICByZXNv
bHZlKCk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfQorICAgIH0pOworCiAgICAgc3VpdGUu
YWRkVGVzdENhc2UoewogICAgICAgICBuYW1lOiAiVmlldy5uZWVkc0xheW91dC5wcm9wb2dhdGVU
b1N1YnZpZXciLAogICAgICAgICB0ZXN0KHJlc29sdmUsIHJlamVjdCkgewpAQCAtODAsMjQgKzEz
OSw2IEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgICAgICB9CiAgICAgfSk7CiAKLSAgICBzdWl0ZS5h
ZGRUZXN0Q2FzZSh7Ci0gICAgICAgIG5hbWU6ICJWaWV3LmNhbmNlbExheW91dCIsCi0gICAgICAg
IHRlc3QocmVzb2x2ZSwgcmVqZWN0KSB7Ci0gICAgICAgICAgICBsZXQgdmlldyA9IG5ldyBXSS5U
ZXN0VmlldzsKLSAgICAgICAgICAgIFdJLlZpZXcucm9vdFZpZXcoKS5hZGRTdWJ2aWV3KHZpZXcp
OwotCi0gICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmxvZygiQ2FuY2VsIGF1dG9tYXRpYyBsYXlv
dXQuIik7Ci0gICAgICAgICAgICB2aWV3LmNhbmNlbExheW91dCgpOwotICAgICAgICAgICAgSW5z
cGVjdG9yVGVzdC5leHBlY3RGYWxzZSh2aWV3LmxheW91dFBlbmRpbmcsICJWaWV3IHNob3VsZCBu
b3QgaGF2ZSBhIHBlbmRpbmcgbGF5b3V0LiIpOwotCi0gICAgICAgICAgICBJbnNwZWN0b3JUZXN0
LmxvZygiQ2FuY2VsIHNjaGVkdWxlZCBsYXlvdXQuIik7Ci0gICAgICAgICAgICB2aWV3Lm5lZWRz
TGF5b3V0KCk7Ci0gICAgICAgICAgICB2aWV3LmNhbmNlbExheW91dCgpOwotICAgICAgICAgICAg
SW5zcGVjdG9yVGVzdC5leHBlY3RGYWxzZSh2aWV3LmxheW91dFBlbmRpbmcsICJWaWV3IHNob3Vs
ZCBub3QgaGF2ZSBhIHBlbmRpbmcgbGF5b3V0LiIpOwotICAgICAgICAgICAgcmVzb2x2ZSgpOwot
ICAgICAgICB9Ci0gICAgfSk7Ci0KICAgICBzdWl0ZS5ydW5UZXN0Q2FzZXNBbmRGaW5pc2goKTsK
IH0KIDwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3ZpZXcvYmFz
aWNzLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci92aWV3L2Jhc2ljcy1leHBl
Y3RlZC50eHQKaW5kZXggOTQ0ZmNiYWRmMGIzNDU3NzFkZjM5YjIyYTQ5ZjZmNmI2YTBkNDUyZC4u
NzVkZWQxNzFjOWNhYjAzODU5OTU0NmNjNjJlYzA0NTRkZTAwODJkZiAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvaW5zcGVjdG9yL3ZpZXcvYmFzaWNzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRU
ZXN0cy9pbnNwZWN0b3Ivdmlldy9iYXNpY3MtZXhwZWN0ZWQudHh0CkBAIC01OSwzICs1OSwyNyBA
QCBQQVNTOiBTaG91bGQgcmV0dXJuIG51bGwgZm9yIGFuIGVsZW1lbnQgbm90IGFzc29jaWF0ZWQg
d2l0aCBhbnkgdmlldy4KIFBBU1M6IFNob3VsZCByZXR1cm4gbnVsbCBmb3Igbm9uLWVsZW1lbnQu
CiBQQVNTOiBTaG91bGQgcmV0dXJuIG51bGwgZm9yIG51bGwgZWxlbWVudC4KIAorLS0gUnVubmlu
ZyB0ZXN0IGNhc2U6IFZpZXcuRGlydHlEZXNjZW5kYW50c0NvdW50CistIEFkZGluZyBwYXJlbnQg
dmlldyB0byByb290IHZpZXcuCitQQVNTOiBSb290IHZpZXcgc2hvdWxkIGhhdmUgMSBkaXJ0eSBk
ZXNjZW5kYW50LgorUEFTUzogUm9vdCB2aWV3IHNob3VsZCBub3QgYmUgZGlydHkuCitQQVNTOiBQ
YXJlbnQgYXR0YWNoZWQgdG8gcm9vdCB2aWV3IHNob3VsZCBiZSBkaXJ0eS4KKy0gQWRkaW5nIGNo
aWxkIHZpZXcgdG8gcGFyZW50IHZpZXcuCitQQVNTOiBSb290IHZpZXcgc2hvdWxkIGhhdmUgMiBk
aXJ0eSBkZXNjZW5kYW50cy4KK1BBU1M6IFBhcmVudCBhdHRhY2hlZCB0byByb290IHZpZXcgc2hv
dWxkIGhhdmUgMSBkaXJ0eSBkZXNjZW5kYW50LgorUEFTUzogUm9vdCB2aWV3IHNob3VsZCBub3Qg
YmUgZGlydHkuCitQQVNTOiBQYXJlbnQgYXR0YWNoZWQgdG8gcm9vdCB2aWV3IHNob3VsZCBiZSBk
aXJ0eS4KK1BBU1M6IENoaWxkIGF0dGFjaGVkIHRvIHBhcmVudCB2aWV3IHNob3VsZCBiZSBkaXJ0
eS4KKy0gUmVtb3ZpbmcgcGFyZW50IHZpZXcgZnJvbSByb290IHZpZXcuCitQQVNTOiBSb290IHZp
ZXcgc2hvdWxkIGhhdmUgMCBkaXJ0eSBkZXNjZW5kYW50cy4KK1BBU1M6IFBhcmVudCBkZXRhY2hl
ZCBmcm9tIHJvb3QgdmlldyBzaG91bGQgaGF2ZSAwIGRpcnR5IGRlc2NlbmRhbnRzLgorUEFTUzog
Um9vdCB2aWV3IHNob3VsZCBub3QgYmUgZGlydHkuCitQQVNTOiBQYXJlbnQgZGV0YWNoZWQgZnJv
bSByb290IHZpZXcgc2hvdWxkIG5vdCBiZSBkaXJ0eS4KK1BBU1M6IENoaWxkIGF0dGFjaGVkIHRv
IGRldGFjaGVkIHBhcmVudCB2aWV3IHNob3VsZCBub3QgYmUgZGlydHkuCistIEFkZGluZyBwYXJl
bnQgdmlldyB0byByb290IHZpZXcuCitQQVNTOiBSb290IHZpZXcgc2hvdWxkIGhhdmUgMSBkaXJ0
eSBkZXNjZW5kYW50LgorUEFTUzogUGFyZW50IGRldGFjaGVkIGZyb20gcm9vdCB2aWV3IHNob3Vs
ZCBoYXZlIDAgZGlydHkgZGVzY2VuZGFudHMuCitQQVNTOiBSb290IHZpZXcgc2hvdWxkIG5vdCBi
ZSBkaXJ0eS4KK1BBU1M6IFBhcmVudCBhdHRhY2hlZCB0byByb290IHZpZXcgc2hvdWxkIGJlIGRp
cnR5LgorUEFTUzogQ2hpbGQgYXR0YWNoZWQgdG8gcGFyZW50IHZpZXcgc2hvdWxkIG5vdCBiZSBk
aXJ0eS4KKwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3ZpZXcvYmFzaWNzLmh0
bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3Ivdmlldy9iYXNpY3MuaHRtbAppbmRleCA2ODMzMmY1
MTkyMzA0ZTI4YzgzZmMzOThlM2YyZWVkZmQ5MWRlOTBkLi42ZTRkZGRmNTFhNGY1MzBkMGU2ZjVi
ODA1ZDUwN2U1YTMwMDI2Yzc0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3Ivdmll
dy9iYXNpY3MuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3Ivdmlldy9iYXNpY3MuaHRt
bApAQCAtMTc5LDYgKzE3OSw1NCBAQCBmdW5jdGlvbiB0ZXN0KCkKICAgICAgICAgfQogICAgIH0p
OwogCisgICAgc3VpdGUuYWRkVGVzdENhc2UoeworICAgICAgICBuYW1lOiAiVmlldy5EaXJ0eURl
c2NlbmRhbnRzQ291bnQiLAorICAgICAgICB0ZXN0KCkgeworICAgICAgICAgICAgbGV0IHJvb3RW
aWV3ID0gV0kuVmlldy5yb290VmlldygpOworICAgICAgICAgICAgbGV0IHBhcmVudCA9IG5ldyBX
SS5WaWV3OworICAgICAgICAgICAgbGV0IGNoaWxkID0gbmV3IFdJLlZpZXc7CisKKyAgICAgICAg
ICAgIC8vIFRoZSByb290IHZpZXcgbWF5IHN0aWxsIGJlIGRpcnR5IGZyb20gYSBwcmV2aW91cyB0
ZXN0IHJlbW92aW5nIGEgc3Vidmlldy4KKyAgICAgICAgICAgIHJvb3RWaWV3Ll9kaXJ0eSA9IGZh
bHNlOworICAgICAgICAgICAgcm9vdFZpZXcuX2RpcnR5RGVzY2VuZGFudHNDb3VudCA9IDA7CisK
KyAgICAgICAgICAgIEluc3BlY3RvclRlc3QubG9nKCItIEFkZGluZyBwYXJlbnQgdmlldyB0byBy
b290IHZpZXcuIik7CisgICAgICAgICAgICByb290Vmlldy5hZGRTdWJ2aWV3KHBhcmVudCk7Cisg
ICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEVxdWFsKHJvb3RWaWV3Ll9kaXJ0eURlc2Nl
bmRhbnRzQ291bnQsIDEsICJSb290IHZpZXcgc2hvdWxkIGhhdmUgMSBkaXJ0eSBkZXNjZW5kYW50
LiIpOworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RGYWxzZShyb290Vmlldy5fZGly
dHksICJSb290IHZpZXcgc2hvdWxkIG5vdCBiZSBkaXJ0eS4iKTsKKyAgICAgICAgICAgIEluc3Bl
Y3RvclRlc3QuZXhwZWN0VHJ1ZShwYXJlbnQuX2RpcnR5LCAiUGFyZW50IGF0dGFjaGVkIHRvIHJv
b3QgdmlldyBzaG91bGQgYmUgZGlydHkuIik7CisKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3Qu
bG9nKCItIEFkZGluZyBjaGlsZCB2aWV3IHRvIHBhcmVudCB2aWV3LiIpOworICAgICAgICAgICAg
cGFyZW50LmFkZFN1YnZpZXcoY2hpbGQpOworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBl
Y3RFcXVhbChyb290Vmlldy5fZGlydHlEZXNjZW5kYW50c0NvdW50LCAyLCAiUm9vdCB2aWV3IHNo
b3VsZCBoYXZlIDIgZGlydHkgZGVzY2VuZGFudHMuIik7CisgICAgICAgICAgICBJbnNwZWN0b3JU
ZXN0LmV4cGVjdEVxdWFsKHBhcmVudC5fZGlydHlEZXNjZW5kYW50c0NvdW50LCAxLCAiUGFyZW50
IGF0dGFjaGVkIHRvIHJvb3QgdmlldyBzaG91bGQgaGF2ZSAxIGRpcnR5IGRlc2NlbmRhbnQuIik7
CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEZhbHNlKHJvb3RWaWV3Ll9kaXJ0eSwg
IlJvb3QgdmlldyBzaG91bGQgbm90IGJlIGRpcnR5LiIpOworICAgICAgICAgICAgSW5zcGVjdG9y
VGVzdC5leHBlY3RUcnVlKHBhcmVudC5fZGlydHksICJQYXJlbnQgYXR0YWNoZWQgdG8gcm9vdCB2
aWV3IHNob3VsZCBiZSBkaXJ0eS4iKTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0
VHJ1ZShjaGlsZC5fZGlydHksICJDaGlsZCBhdHRhY2hlZCB0byBwYXJlbnQgdmlldyBzaG91bGQg
YmUgZGlydHkuIik7CisKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QubG9nKCItIFJlbW92aW5n
IHBhcmVudCB2aWV3IGZyb20gcm9vdCB2aWV3LiIpOworICAgICAgICAgICAgcm9vdFZpZXcucmVt
b3ZlU3VidmlldyhwYXJlbnQpOworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RFcXVh
bChyb290Vmlldy5fZGlydHlEZXNjZW5kYW50c0NvdW50LCAwLCAiUm9vdCB2aWV3IHNob3VsZCBo
YXZlIDAgZGlydHkgZGVzY2VuZGFudHMuIik7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4
cGVjdEVxdWFsKHBhcmVudC5fZGlydHlEZXNjZW5kYW50c0NvdW50LCAwLCAiUGFyZW50IGRldGFj
aGVkIGZyb20gcm9vdCB2aWV3IHNob3VsZCBoYXZlIDAgZGlydHkgZGVzY2VuZGFudHMuIik7Cisg
ICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEZhbHNlKHJvb3RWaWV3Ll9kaXJ0eSwgIlJv
b3QgdmlldyBzaG91bGQgbm90IGJlIGRpcnR5LiIpOworICAgICAgICAgICAgSW5zcGVjdG9yVGVz
dC5leHBlY3RGYWxzZShwYXJlbnQuX2RpcnR5LCAiUGFyZW50IGRldGFjaGVkIGZyb20gcm9vdCB2
aWV3IHNob3VsZCBub3QgYmUgZGlydHkuIik7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4
cGVjdEZhbHNlKGNoaWxkLl9kaXJ0eSwgIkNoaWxkIGF0dGFjaGVkIHRvIGRldGFjaGVkIHBhcmVu
dCB2aWV3IHNob3VsZCBub3QgYmUgZGlydHkuIik7CisKKyAgICAgICAgICAgIEluc3BlY3RvclRl
c3QubG9nKCItIEFkZGluZyBwYXJlbnQgdmlldyB0byByb290IHZpZXcuIik7CisgICAgICAgICAg
ICByb290Vmlldy5hZGRTdWJ2aWV3KHBhcmVudCk7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0
LmV4cGVjdEVxdWFsKHJvb3RWaWV3Ll9kaXJ0eURlc2NlbmRhbnRzQ291bnQsIDEsICJSb290IHZp
ZXcgc2hvdWxkIGhhdmUgMSBkaXJ0eSBkZXNjZW5kYW50LiIpOworICAgICAgICAgICAgSW5zcGVj
dG9yVGVzdC5leHBlY3RFcXVhbChwYXJlbnQuX2RpcnR5RGVzY2VuZGFudHNDb3VudCwgMCwgIlBh
cmVudCBkZXRhY2hlZCBmcm9tIHJvb3QgdmlldyBzaG91bGQgaGF2ZSAwIGRpcnR5IGRlc2NlbmRh
bnRzLiIpOworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RGYWxzZShyb290Vmlldy5f
ZGlydHksICJSb290IHZpZXcgc2hvdWxkIG5vdCBiZSBkaXJ0eS4iKTsKKyAgICAgICAgICAgIElu
c3BlY3RvclRlc3QuZXhwZWN0VHJ1ZShwYXJlbnQuX2RpcnR5LCAiUGFyZW50IGF0dGFjaGVkIHRv
IHJvb3QgdmlldyBzaG91bGQgYmUgZGlydHkuIik7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0
LmV4cGVjdEZhbHNlKGNoaWxkLl9kaXJ0eSwgIkNoaWxkIGF0dGFjaGVkIHRvIHBhcmVudCB2aWV3
IHNob3VsZCBub3QgYmUgZGlydHkuIik7CisKKyAgICAgICAgICAgIC8vIENsZWFuIHVwIHZpZXdz
IGZvciB0aGUgbmV4dCB0ZXN0LgorICAgICAgICAgICAgcm9vdFZpZXcucmVtb3ZlU3Vidmlldyhw
YXJlbnQpOworCisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgIH0pOwor
CiAgICAgc3VpdGUucnVuVGVzdENhc2VzQW5kRmluaXNoKCk7CiB9CiA8L3NjcmlwdD4K
</data>

          </attachment>
      

    </bug>

</bugzilla>