<?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>178966</bug_id>
          
          <creation_ts>2017-10-27 16:51:43 -0700</creation_ts>
          <short_desc>Web Inspector: Improve UX of Layers tab visualization</short_desc>
          <delta_ts>2017-11-15 12:36:07 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Inspector</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>174176</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Ross Kirsling">ross.kirsling</reporter>
          <assigned_to name="Ross Kirsling">ross.kirsling</assigned_to>
          <cc>commit-queue</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>1365579</commentid>
    <comment_count>0</comment_count>
    <who name="Ross Kirsling">ross.kirsling</who>
    <bug_when>2017-10-27 16:51:43 -0700</bug_when>
    <thetext>The Layers tab visualization is in need of various UX improvements.

In particular, we need to be able to zoom (restricted by the depth of the current scene) and to move around the scene enough to comfortably see all of the displayed objects (whether that implies pan or something more creative).

Useful test sites:
https://webkit.org/
https://www.playstation.com/en-us/games/horizon-zero-dawn-ps4/
https://www.sony.com/
https://devinrousso.com/projects/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1365590</commentid>
    <comment_count>1</comment_count>
      <attachid>325222</attachid>
    <who name="Ross Kirsling">ross.kirsling</who>
    <bug_when>2017-10-27 17:09:43 -0700</bug_when>
    <thetext>Created attachment 325222
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1365603</commentid>
    <comment_count>2</comment_count>
    <who name="Ross Kirsling">ross.kirsling</who>
    <bug_when>2017-10-27 17:58:17 -0700</bug_when>
    <thetext>I&apos;d be happy to recount all of the failed experiments on the way to this patch, but for now I&apos;ll just summarize the patch contents itself:

0. Rotate: Existing restriction was to allow the camera to rotate in a hemisphere around its target, i.e., it can&apos;t go behind the scene and up is always up. This patch further restricts rotation to a horizontal semicircle, as I don&apos;t consider vertical rotation to be particularly helpful in this visualization.

1. Zoom: Allow camera distance to vary between a fixed minimum close to the target and a variable maximum based on the depth of the scene (which is currently equivalent to &quot;how many layer objects are being shown&quot;).

2. Pan: Allow the camera&apos;s target to be any point which is in the scene&apos;s bounding box *and is on the XY plane*. (Restricting zoom isn&apos;t valid if we start targeting points where Z != 0.) three.js&apos; OrbitControls doesn&apos;t support pan restriction so we have to do this from the outside -- this is basically fine but can imply an odd rate of movement depending on the camera rotation.

3. Recentering: On a new document, the camera is repositioned to look at the center of the viewport (i.e. the visible bounds of the document layer) from a distance near to the maximum. When the layer selection is updated from the data grid, the camera is recentered on the selected layer at a &quot;comfortable&quot; (...comfortable unless you&apos;ve decided to resize WI to be tall and narrow, but you&apos;re asking for a suboptimal experience that way anyway).

I&apos;ve also batched in a couple of uncontroversial fixes here. I can split them out if anybody&apos;s unhappy with that.

It goes without saying that any feedback here is welcome, but with this, I&apos;ve at least reached something I&apos;m not embarrassed to put on display.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1365605</commentid>
    <comment_count>3</comment_count>
    <who name="Ross Kirsling">ross.kirsling</who>
    <bug_when>2017-10-27 18:02:26 -0700</bug_when>
    <thetext>(In reply to Ross Kirsling from comment #2)
&gt; ...the camera is recentered on the selected layer at a &quot;comfortable&quot; (...).

Forgot the word &apos;distance&apos; here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1366145</commentid>
    <comment_count>4</comment_count>
      <attachid>325372</attachid>
    <who name="Ross Kirsling">ross.kirsling</who>
    <bug_when>2017-10-30 13:12:47 -0700</bug_when>
    <thetext>Created attachment 325372
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1367049</commentid>
    <comment_count>5</comment_count>
      <attachid>325372</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2017-11-01 14:25:11 -0700</bug_when>
    <thetext>Comment on attachment 325372
Patch

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

r=me.  This feels a LOT better =D

My only negative is that when you select a layer, in addition to moving the camera to center on the layer, it also resets the angle.  I would personally not expect that to happen, and found it annoying, especially on layer-heavy pages where it isn&apos;t always obvious how the layers interact.

&gt; Source/WebInspectorUI/UserInterface/Views/LayerDetailsSidebarPanel.js:70
&gt; +        const suppressEvent = true;

NIT: use the actual name `suppressSelectEvent`

&gt; Source/WebInspectorUI/UserInterface/Views/Layers3DContentView.js:113
&gt; +        this._controls.minPolarAngle = Math.PI / 2;
&gt; +        this._controls.maxPolarAngle = Math.PI / 2;

I think the user should also be able to pan the Y axis in addition to the X.  If my page is very long (lots of scrolling), I might want to see what the layers look like for items down the page while still scrolled to the top.  It seems oddly restrictive to allow horizontal view changes, but not vertical ones, especially since we often move vertically when changing layer selection.

&gt; Source/WebInspectorUI/UserInterface/Views/Layers3DContentView.js:116
&gt; +        this._renderer.domElement.addEventListener(&quot;contextmenu&quot;, (event) =&gt; { event.stopPropagation(); });

Is there a specific reason we want to prevent contextmenu?

&gt; Source/WebInspectorUI/UserInterface/Views/Layers3DContentView.js:313
&gt; +        this._controls.target.set(x + width / 2, -y - height / 2, 0);
&gt; +        this._camera.position.set(x + width / 2, -y - height / 2, this._selectedLayerGroup.position.z + WI.Layers3DContentView._zPadding / 2);

Style: we typically wrap different arithmetic operations in parenthesis for clarity.

this._controls.target.set(x + (width / 2), -y - (height / 2), 0);
this._camera.position.set(x + (width / 2), -y - (height / 2), this._selectedLayerGroup.position.z + (WI.Layers3DContentView._zPadding / 2));

&gt; Source/WebInspectorUI/UserInterface/Views/Layers3DContentView.js:320
&gt; +        this._controls.target.set(x + width / 2, -y - height / 2, 0);
&gt; +        this._camera.position.set(x + width / 2, -y - height / 2, this._controls.maxDistance - WI.Layers3DContentView._zPadding / 2);

Ditto (312).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1367068</commentid>
    <comment_count>6</comment_count>
      <attachid>325637</attachid>
    <who name="Ross Kirsling">ross.kirsling</who>
    <bug_when>2017-11-01 14:58:39 -0700</bug_when>
    <thetext>Created attachment 325637
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1367087</commentid>
    <comment_count>7</comment_count>
      <attachid>325637</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-11-01 15:47:17 -0700</bug_when>
    <thetext>Comment on attachment 325637
Patch

Clearing flags on attachment: 325637

Committed r224303: &lt;https://trac.webkit.org/changeset/224303&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1367088</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-11-01 15:47:19 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1372198</commentid>
    <comment_count>9</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-11-15 12:36:07 -0800</bug_when>
    <thetext>&lt;rdar://problem/35567852&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>325222</attachid>
            <date>2017-10-27 17:09:43 -0700</date>
            <delta_ts>2017-10-30 13:12:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-178966-20171027170943.patch</filename>
            <type>text/plain</type>
            <size>13946</size>
            <attacher name="Ross Kirsling">ross.kirsling</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIzOTQ3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwppbmRleCA0
ZTZiOGVmZTkzZmY5ODkyZTAzNGI4MTdiZjMyZjExYjg1OWQ1N2Q5Li4yN2Y4ZmJkOTA4N2Y2ZDVk
NDE0MTQ4MDEzYmY1OWE5NWJkNGIxMDhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0MyBAQAorMjAxNy0xMC0yNyAgUm9zcyBLaXJzbGluZyAgPHJvc3Mua2lyc2xpbmdAc29u
eS5jb20+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogSW1wcm92ZSBVWCBvZiBMYXllcnMgdGFi
IHZpc3VhbGl6YXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE3ODk2NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9MYXllcnMzRENvbnRlbnRWaWV3LmpzOgorICAg
ICAgICAoV0kuTGF5ZXJzM0RDb250ZW50Vmlldyk6CisgICAgICAgIChXSS5MYXllcnMzRENvbnRl
bnRWaWV3LnByb3RvdHlwZS5pbml0aWFsTGF5b3V0KToKKyAgICAgICAgKFdJLkxheWVyczNEQ29u
dGVudFZpZXcucHJvdG90eXBlLl9jYW52YXNNb3VzZURvd24pOgorICAgICAgICAoV0kuTGF5ZXJz
M0RDb250ZW50Vmlldy5wcm90b3R5cGUuX2NyZWF0ZUxheWVyR3JvdXApOiBSZW5hbWVkIGZyb20g
X2FkZExheWVyR3JvdXAuCisgICAgICAgIChXSS5MYXllcnMzRENvbnRlbnRWaWV3LnByb3RvdHlw
ZS5fdXBkYXRlTGF5ZXJHcm91cFBvc2l0aW9uKTogTWVyZ2VkIGludG8gX3VwZGF0ZUxheWVycy4K
KyAgICAgICAgU2V0IHVwIHpvb20gYW5kIHBhbi4KKyAgICAgICAgCisgICAgICAgIChXSS5MYXll
cnMzRENvbnRlbnRWaWV3LnByb3RvdHlwZS5fYW5pbWF0ZSk6CisgICAgICAgIChXSS5MYXllcnMz
RENvbnRlbnRWaWV3LnByb3RvdHlwZS5fcmVzdHJpY3RQYW4pOgorICAgICAgICBSZXN0cmljdCBw
YW4gdG8gYm91bmRpbmcgYm94IG9uIFhZIHBsYW5lLgorCisgICAgICAgIChXSS5MYXllcnMzRENv
bnRlbnRWaWV3LnByb3RvdHlwZS5sYXlvdXQpOgorICAgICAgICAoV0kuTGF5ZXJzM0RDb250ZW50
Vmlldy5wcm90b3R5cGUuX3VwZGF0ZURvY3VtZW50KToKKyAgICAgICAgKFdJLkxheWVyczNEQ29u
dGVudFZpZXcucHJvdG90eXBlLl9yZXNldENhbWVyYSk6CisgICAgICAgIE9uIG5ldyBkb2N1bWVu
dCwgdGhyb3cgb3V0IGFsbCBvbGQgbGF5ZXJzIGFuZCBjZW50ZXIgdGhlIGNhbWVyYSBvbiB0aGUg
bmV3IGRvY3VtZW50IGxheWVyLgorICAgICAgICAKKyAgICAgICAgKFdJLkxheWVyczNEQ29udGVu
dFZpZXcucHJvdG90eXBlLnNlbGVjdExheWVyQnlJZCk6CisgICAgICAgIChXSS5MYXllcnMzRENv
bnRlbnRWaWV3LnByb3RvdHlwZS5fY2VudGVyT25TZWxlY3Rpb24pOgorICAgICAgICBSZWNlbnRl
ciB0aGUgY2FtZXJhIHdoZW4gbGF5ZXIgZ3JvdXAgc2VsZWN0aW9uIGlzIHVwZGF0ZWQgcHJvZ3Jh
bW1hdGljYWxseS4KKyAgICAgICAgCisgICAgICAgIChXSS5MYXllcnMzRENvbnRlbnRWaWV3LnBy
b3RvdHlwZS5fdXBkYXRlTGF5ZXJzKToKKyAgICAgICAgKFdJLkxheWVyczNEQ29udGVudFZpZXcu
cHJvdG90eXBlLl9jcmVhdGVMYXllck1lc2gpOgorICAgICAgICBGaXggdmlzdWFsIGFydGlmYWN0
IGR1ZSB0byAiZGVwdGhXcml0ZSIgZmxhZy4KKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmll
d3MvTGF5ZXJEZXRhaWxzU2lkZWJhclBhbmVsLmpzOgorICAgICAgICAoV0kuTGF5ZXJEZXRhaWxz
U2lkZWJhclBhbmVsLnByb3RvdHlwZS5zZWxlY3ROb2RlQnlMYXllcklkKToKKyAgICAgICAgU3Vw
cHJlc3Mgc2VsZWN0aW9uIHVwZGF0ZSBldmVudCB3aGVuIHRoZSBkYXRhIGdyaWQgc2VsZWN0aW9u
IGlzIHVwZGF0ZWQgcHJvZ3JhbW1hdGljYWxseS4KKyAgICAgICAgCisgICAgICAgICogVXNlcklu
dGVyZmFjZS9WaWV3cy9EYXRhR3JpZE5vZGUuanM6CisgICAgICAgIChXSS5EYXRhR3JpZE5vZGUu
cHJvdG90eXBlLnJldmVhbEFuZFNlbGVjdCk6CisgICAgICAgIEFsbG93IGZvcndhcmRpbmcgb2Yg
c2VsZWN0KCkncyBwYXJhbWV0ZXIuCisKIDIwMTctMTAtMjQgIEpvc2VwaCBQZWNvcmFybyAgPHBl
Y29yYXJvQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBDb25zb2xlIERyYXdl
ciByZXNpemluZyBkb2Vzbid0IG1hdGNoIGN1cnNvciBwb3NpdGlvbgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRGF0YUdyaWROb2RlLmpzIGIv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRGF0YUdyaWROb2RlLmpz
CmluZGV4IDkyNTc2OWQzODRhYjUyOGEyMmI4Yzg4ZDcwYzNlNjU0Njg4MGZhY2EuLjQzYzhiMzNk
MjUwODk0ZWUzZWIyOWY3NTNmMTQzNGIzZTI0NDA0ZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RhdGFHcmlkTm9kZS5qcworKysgYi9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9EYXRhR3JpZE5vZGUuanMKQEAg
LTU2OSwxMCArNTY5LDEwIEBAIFdJLkRhdGFHcmlkTm9kZSA9IGNsYXNzIERhdGFHcmlkTm9kZSBl
eHRlbmRzIFdJLk9iamVjdAogICAgICAgICAgICAgdGhpcy5kYXRhR3JpZC5kaXNwYXRjaEV2ZW50
VG9MaXN0ZW5lcnMoV0kuRGF0YUdyaWQuRXZlbnQuU2VsZWN0ZWROb2RlQ2hhbmdlZCwge29sZFNl
bGVjdGVkTm9kZX0pOwogICAgIH0KIAotICAgIHJldmVhbEFuZFNlbGVjdCgpCisgICAgcmV2ZWFs
QW5kU2VsZWN0KHN1cHByZXNzU2VsZWN0ZWRFdmVudCkKICAgICB7CiAgICAgICAgIHRoaXMucmV2
ZWFsKCk7Ci0gICAgICAgIHRoaXMuc2VsZWN0KCk7CisgICAgICAgIHRoaXMuc2VsZWN0KHN1cHBy
ZXNzU2VsZWN0ZWRFdmVudCk7CiAgICAgfQogCiAgICAgZGVzZWxlY3Qoc3VwcHJlc3NEZXNlbGVj
dGVkRXZlbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9WaWV3cy9MYXllckRldGFpbHNTaWRlYmFyUGFuZWwuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9WaWV3cy9MYXllckRldGFpbHNTaWRlYmFyUGFuZWwuanMKaW5kZXgg
YzFjZWVkNjBiMWI0MWY4YTIzZTE3NWEwMDlkZWM2Zjc0MWQ3NzgxOS4uOGY3NWUwNzdhYjBkMmJk
NWY5MzAwZTI5YzMwODcwMDdhY2EwNWEwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvVmlld3MvTGF5ZXJEZXRhaWxzU2lkZWJhclBhbmVsLmpzCisrKyBi
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0xheWVyRGV0YWlsc1Np
ZGViYXJQYW5lbC5qcwpAQCAtNjcsMTAgKzY3LDExIEBAIFdJLkxheWVyRGV0YWlsc1NpZGViYXJQ
YW5lbCA9IGNsYXNzIExheWVyRGV0YWlsc1NpZGViYXJQYW5lbCBleHRlbmRzIFdJLkRldGFpbHNT
CiAgICAgICAgIGlmIChub2RlID09PSB0aGlzLl9kYXRhR3JpZC5zZWxlY3RlZE5vZGUpCiAgICAg
ICAgICAgICByZXR1cm47CiAKKyAgICAgICAgY29uc3Qgc3VwcHJlc3NFdmVudCA9IHRydWU7CiAg
ICAgICAgIGlmIChub2RlKQotICAgICAgICAgICAgbm9kZS5yZXZlYWxBbmRTZWxlY3QoKTsKKyAg
ICAgICAgICAgIG5vZGUucmV2ZWFsQW5kU2VsZWN0KHN1cHByZXNzRXZlbnQpOwogICAgICAgICBl
bHNlIGlmICh0aGlzLl9kYXRhR3JpZC5zZWxlY3RlZE5vZGUpCi0gICAgICAgICAgICB0aGlzLl9k
YXRhR3JpZC5zZWxlY3RlZE5vZGUuZGVzZWxlY3QoKTsKKyAgICAgICAgICAgIHRoaXMuX2RhdGFH
cmlkLnNlbGVjdGVkTm9kZS5kZXNlbGVjdChzdXBwcmVzc0V2ZW50KTsKICAgICB9CiAKICAgICAv
LyBQcml2YXRlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9WaWV3cy9MYXllcnMzRENvbnRlbnRWaWV3LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvVmlld3MvTGF5ZXJzM0RDb250ZW50Vmlldy5qcwppbmRleCBjZDk0OWE4MDMx
N2JjOTcwNDQ2ZDI4MjM3MjVhMWRiMmVhZmIyYzQ4Li40MzNiOTIyMGM5YjJhNmYzMDVkOWYyMDk3
ZTM5NjdjNTAxZWM0ZTJkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9WaWV3cy9MYXllcnMzRENvbnRlbnRWaWV3LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0xheWVyczNEQ29udGVudFZpZXcuanMKQEAgLTQy
LDkgKzQyLDExIEBAIFdJLkxheWVyczNEQ29udGVudFZpZXcgPSBjbGFzcyBMYXllcnMzRENvbnRl
bnRWaWV3IGV4dGVuZHMgV0kuQ29udGVudFZpZXcKICAgICAgICAgdGhpcy5fY2FtZXJhID0gbnVs
bDsKICAgICAgICAgdGhpcy5fY29udHJvbHMgPSBudWxsOwogICAgICAgICB0aGlzLl9zY2VuZSA9
IG51bGw7CisgICAgICAgIHRoaXMuX2JvdW5kaW5nQm94ID0gbnVsbDsKICAgICAgICAgdGhpcy5f
cmF5Y2FzdGVyID0gbnVsbDsKICAgICAgICAgdGhpcy5fbW91c2UgPSBudWxsOwogICAgICAgICB0
aGlzLl9hbmltYXRpb25GcmFtZVJlcXVlc3RJZCA9IG51bGw7CisgICAgICAgIHRoaXMuX2RvY3Vt
ZW50Tm9kZSA9IG51bGw7CiAgICAgfQogCiAgICAgLy8gUHVibGljCkBAIC04Niw2ICs4OCw3IEBA
IFdJLkxheWVyczNEQ29udGVudFZpZXcgPSBjbGFzcyBMYXllcnMzRENvbnRlbnRWaWV3IGV4dGVu
ZHMgV0kuQ29udGVudFZpZXcKICAgICB7CiAgICAgICAgIGxldCBsYXllckdyb3VwID0gdGhpcy5f
bGF5ZXJHcm91cHNCeUlkLmdldChsYXllcklkKTsKICAgICAgICAgdGhpcy5fdXBkYXRlTGF5ZXJH
cm91cFNlbGVjdGlvbihsYXllckdyb3VwKTsKKyAgICAgICAgdGhpcy5fY2VudGVyT25TZWxlY3Rp
b24oKTsKICAgICB9CiAKICAgICAvLyBQcm90ZWN0ZWQKQEAgLTk5LDE4ICsxMDIsMjEgQEAgV0ku
TGF5ZXJzM0RDb250ZW50VmlldyA9IGNsYXNzIExheWVyczNEQ29udGVudFZpZXcgZXh0ZW5kcyBX
SS5Db250ZW50VmlldwogICAgICAgICB0aGlzLl9yZW5kZXJlci5zZXRTaXplKHRoaXMuZWxlbWVu
dC5vZmZzZXRXaWR0aCwgdGhpcy5lbGVtZW50Lm9mZnNldEhlaWdodCk7CiAKICAgICAgICAgdGhp
cy5fY2FtZXJhID0gbmV3IFRIUkVFLlBlcnNwZWN0aXZlQ2FtZXJhKDQ1LCB0aGlzLmVsZW1lbnQu
b2Zmc2V0V2lkdGggLyB0aGlzLmVsZW1lbnQub2Zmc2V0SGVpZ2h0LCAxLCAxMDAwMDApOwotICAg
ICAgICB0aGlzLl9jYW1lcmEucG9zaXRpb24uc2V0KDAsIDAsIDQwMDApOwotICAgICAgICB0aGlz
Ll9jYW1lcmEubG9va0F0KG5ldyBUSFJFRS5WZWN0b3IzKDAsIDAsIDApKTsKIAogICAgICAgICB0
aGlzLl9jb250cm9scyA9IG5ldyBUSFJFRS5PcmJpdENvbnRyb2xzKHRoaXMuX2NhbWVyYSwgdGhp
cy5fcmVuZGVyZXIuZG9tRWxlbWVudCk7CiAgICAgICAgIHRoaXMuX2NvbnRyb2xzLmVuYWJsZURh
bXBpbmcgPSB0cnVlOwotICAgICAgICB0aGlzLl9jb250cm9scy5lbmFibGVab29tID0gZmFsc2U7
Ci0gICAgICAgIHRoaXMuX2NvbnRyb2xzLmVuYWJsZVBhbiA9IGZhbHNlOworICAgICAgICB0aGlz
Ll9jb250cm9scy5lbmFibGVLZXlzID0gZmFsc2U7CisgICAgICAgIHRoaXMuX2NvbnRyb2xzLnpv
b21TcGVlZCA9IDAuNTsKKyAgICAgICAgdGhpcy5fY29udHJvbHMubWluRGlzdGFuY2UgPSAxMDAw
OworICAgICAgICB0aGlzLl9jb250cm9scy5yb3RhdGVTcGVlZCA9IDAuNTsKKyAgICAgICAgdGhp
cy5fY29udHJvbHMubWluUG9sYXJBbmdsZSA9IE1hdGguUEkgLyAyOworICAgICAgICB0aGlzLl9j
b250cm9scy5tYXhQb2xhckFuZ2xlID0gTWF0aC5QSSAvIDI7CiAgICAgICAgIHRoaXMuX2NvbnRy
b2xzLm1pbkF6aW11dGhBbmdsZSA9IC1NYXRoLlBJIC8gMjsKICAgICAgICAgdGhpcy5fY29udHJv
bHMubWF4QXppbXV0aEFuZ2xlID0gTWF0aC5QSSAvIDI7CisgICAgICAgIHRoaXMuX3JlbmRlcmVy
LmRvbUVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiY29udGV4dG1lbnUiLCAoZXZlbnQpID0+IHsg
ZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7IH0pOwogCiAgICAgICAgIHRoaXMuX3NjZW5lID0gbmV3
IFRIUkVFLlNjZW5lOwotICAgICAgICB0aGlzLl9zY2VuZS5wb3NpdGlvbi5zZXQoLXRoaXMuZWxl
bWVudC5vZmZzZXRXaWR0aCAvIDIsIHRoaXMuZWxlbWVudC5vZmZzZXRIZWlnaHQgLyAyLCAwKTsK
KyAgICAgICAgdGhpcy5fYm91bmRpbmdCb3ggPSBuZXcgVEhSRUUuQm94MzsKIAogICAgICAgICB0
aGlzLl9yYXljYXN0ZXIgPSBuZXcgVEhSRUUuUmF5Y2FzdGVyOwogICAgICAgICB0aGlzLl9tb3Vz
ZSA9IG5ldyBUSFJFRS5WZWN0b3IyOwpAQCAtMTI3LDkgKzEzMywxMiBAQCBXSS5MYXllcnMzRENv
bnRlbnRWaWV3ID0gY2xhc3MgTGF5ZXJzM0RDb250ZW50VmlldyBleHRlbmRzIFdJLkNvbnRlbnRW
aWV3CiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgV0kuZG9tVHJlZU1hbmFnZXIucmVx
dWVzdERvY3VtZW50KChub2RlKSA9PiB7CisgICAgICAgICAgICBsZXQgZG9jdW1lbnRXYXNVcGRh
dGVkID0gdGhpcy5fdXBkYXRlRG9jdW1lbnQobm9kZSk7CisKICAgICAgICAgICAgIFdJLmxheWVy
VHJlZU1hbmFnZXIubGF5ZXJzRm9yTm9kZShub2RlLCAobGF5ZXJzKSA9PiB7CiAgICAgICAgICAg
ICAgICAgdGhpcy5fdXBkYXRlTGF5ZXJzKGxheWVycyk7Ci0gICAgICAgICAgICAgICAgdGhpcy5k
aXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV0kuQ29udGVudFZpZXcuRXZlbnQuU2VsZWN0aW9uUGF0
aENvbXBvbmVudHNEaWRDaGFuZ2UpOworICAgICAgICAgICAgICAgIGlmIChkb2N1bWVudFdhc1Vw
ZGF0ZWQpCisgICAgICAgICAgICAgICAgICAgIHRoaXMuX3Jlc2V0Q2FtZXJhKCk7CiAgICAgICAg
ICAgICB9KTsKICAgICAgICAgfSk7CiAgICAgfQpAQCAtMTU5LDYgKzE2OCw3IEBAIFdJLkxheWVy
czNEQ29udGVudFZpZXcgPSBjbGFzcyBMYXllcnMzRENvbnRlbnRWaWV3IGV4dGVuZHMgV0kuQ29u
dGVudFZpZXcKIAogICAgIF9hbmltYXRlKCkKICAgICB7CisgICAgICAgIHRoaXMuX3Jlc3RyaWN0
UGFuKCk7CiAgICAgICAgIHRoaXMuX2NvbnRyb2xzLnVwZGF0ZSgpOwogICAgICAgICB0aGlzLl9y
ZW5kZXJlci5yZW5kZXIodGhpcy5fc2NlbmUsIHRoaXMuX2NhbWVyYSk7CiAgICAgICAgIHRoaXMu
X2FuaW1hdGlvbkZyYW1lUmVxdWVzdElkID0gcmVxdWVzdEFuaW1hdGlvbkZyYW1lKCgpID0+IHsg
dGhpcy5fYW5pbWF0ZSgpOyB9KTsKQEAgLTE3MCwxMSArMTgwLDI1IEBAIFdJLkxheWVyczNEQ29u
dGVudFZpZXcgPSBjbGFzcyBMYXllcnMzRENvbnRlbnRWaWV3IGV4dGVuZHMgV0kuQ29udGVudFZp
ZXcKICAgICAgICAgdGhpcy5fYW5pbWF0aW9uRnJhbWVSZXF1ZXN0SWQgPSBudWxsOwogICAgIH0K
IAorICAgIF91cGRhdGVEb2N1bWVudChkb2N1bWVudE5vZGUpCisgICAgeworICAgICAgICBpZiAo
ZG9jdW1lbnROb2RlID09PSB0aGlzLl9kb2N1bWVudE5vZGUpCisgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CisKKyAgICAgICAgdGhpcy5fc2NlbmUuY2hpbGRyZW4ubGVuZ3RoID0gMDsKKyAgICAg
ICAgdGhpcy5fbGF5ZXJHcm91cHNCeUlkLmNsZWFyKCk7CisgICAgICAgIHRoaXMuX2xheWVycy5s
ZW5ndGggPSAwOworCisgICAgICAgIHRoaXMuX2RvY3VtZW50Tm9kZSA9IGRvY3VtZW50Tm9kZTsK
KworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKICAgICBfdXBkYXRlTGF5ZXJzKG5ld0xh
eWVycykKICAgICB7CiAgICAgICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBiZSBtYWRlIGludG8g
dGhlIGJhc2ljIHVzYWdlIG9mIHRoZSBtYW5hZ2VyLCBpZiBub3QgdGhlIGFnZW50IGl0c2VsZi4K
ICAgICAgICAgLy8gICAgICAgIEF0IHRoYXQgcG9pbnQsIHdlIGNhbiByZW1vdmUgdGhpcyBkdXBs
aWNhdGlvbiBmcm9tIHRoZSB2aXN1YWxpemF0aW9uIGFuZCBzaWRlYmFyLgotICAgICAgICBsZXQg
e3JlbW92YWxzLCBhZGRpdGlvbnMsIHByZXNlcnZlZH0gPSBXSS5sYXllclRyZWVNYW5hZ2VyLmxh
eWVyVHJlZU11dGF0aW9ucyh0aGlzLl9sYXllcnMsIG5ld0xheWVycyk7CisgICAgICAgIGxldCB7
cmVtb3ZhbHMsIGFkZGl0aW9uc30gPSBXSS5sYXllclRyZWVNYW5hZ2VyLmxheWVyVHJlZU11dGF0
aW9ucyh0aGlzLl9sYXllcnMsIG5ld0xheWVycyk7CiAKICAgICAgICAgZm9yIChsZXQgbGF5ZXIg
b2YgcmVtb3ZhbHMpIHsKICAgICAgICAgICAgIGxldCBsYXllckdyb3VwID0gdGhpcy5fbGF5ZXJH
cm91cHNCeUlkLmdldChsYXllci5sYXllcklkKTsKQEAgLTE4Miw1NyArMjA2LDU5IEBAIFdJLkxh
eWVyczNEQ29udGVudFZpZXcgPSBjbGFzcyBMYXllcnMzRENvbnRlbnRWaWV3IGV4dGVuZHMgV0ku
Q29udGVudFZpZXcKICAgICAgICAgICAgIHRoaXMuX2xheWVyR3JvdXBzQnlJZC5kZWxldGUobGF5
ZXIubGF5ZXJJZCk7CiAgICAgICAgIH0KIAotICAgICAgICBpZiAodGhpcy5fc2VsZWN0ZWRMYXll
ckdyb3VwICYmICF0aGlzLl9sYXllckdyb3Vwc0J5SWQuZ2V0KHRoaXMuX3NlbGVjdGVkTGF5ZXJH
cm91cC51c2VyRGF0YS5sYXllcklkKSkKKyAgICAgICAgaWYgKHRoaXMuX3NlbGVjdGVkTGF5ZXJH
cm91cCAmJiAhdGhpcy5fbGF5ZXJHcm91cHNCeUlkLmdldCh0aGlzLl9zZWxlY3RlZExheWVyR3Jv
dXAudXNlckRhdGEubGF5ZXIubGF5ZXJJZCkpCiAgICAgICAgICAgICB0aGlzLnNlbGVjdGVkTGF5
ZXJHcm91cCA9IG51bGw7CiAKLSAgICAgICAgYWRkaXRpb25zLmZvckVhY2godGhpcy5fYWRkTGF5
ZXJHcm91cCwgdGhpcyk7Ci0gICAgICAgIHByZXNlcnZlZC5mb3JFYWNoKHRoaXMuX3VwZGF0ZUxh
eWVyR3JvdXBQb3NpdGlvbiwgdGhpcyk7Ci0KLSAgICAgICAgdGhpcy5fbGF5ZXJzID0gbmV3TGF5
ZXJzOwotICAgIH0KKyAgICAgICAgZm9yIChsZXQgbGF5ZXIgb2YgYWRkaXRpb25zKSB7CisgICAg
ICAgICAgICBsZXQgbGF5ZXJHcm91cCA9IHRoaXMuX2NyZWF0ZUxheWVyR3JvdXAobGF5ZXIpOwor
ICAgICAgICAgICAgdGhpcy5fbGF5ZXJHcm91cHNCeUlkLnNldChsYXllci5sYXllcklkLCBsYXll
ckdyb3VwKTsKKyAgICAgICAgICAgIHRoaXMuX3NjZW5lLmFkZChsYXllckdyb3VwKTsKKyAgICAg
ICAgfQogCi0gICAgX2FkZExheWVyR3JvdXAobGF5ZXIsIGluZGV4KQotICAgIHsKLSAgICAgICAg
bGV0IGxheWVyR3JvdXAgPSBuZXcgVEhSRUUuR3JvdXA7Ci0gICAgICAgIGxheWVyR3JvdXAudXNl
ckRhdGEubGF5ZXJJZCA9IGxheWVyLmxheWVySWQ7Ci0gICAgICAgIGxheWVyR3JvdXAuYWRkKHRo
aXMuX2NyZWF0ZUxheWVyTWVzaChsYXllci5ib3VuZHMpKTsKLSAgICAgICAgbGF5ZXJHcm91cC5h
ZGQodGhpcy5fY3JlYXRlTGF5ZXJNZXNoKGxheWVyLmNvbXBvc2l0ZWRCb3VuZHMsIHRydWUpKTsK
KyAgICAgICAgLy8gRklYTUU6IFVwZGF0ZSB0aGUgYmFja2VuZCB0byBwcm92aWRlIGEgbGl0ZXJh
bCAibGF5ZXIgdHJlZSIgc28gd2UgY2FuIGRlY2lkZSB6LWluZGljZXMgbGVzcyBuYWl2ZWx5Lgor
ICAgICAgICBjb25zdCB6SW50ZXJ2YWwgPSAyNTsKKyAgICAgICAgbmV3TGF5ZXJzLmZvckVhY2go
KGxheWVyLCBpbmRleCkgPT4geworICAgICAgICAgICAgbGV0IGxheWVyR3JvdXAgPSB0aGlzLl9s
YXllckdyb3Vwc0J5SWQuZ2V0KGxheWVyLmxheWVySWQpOworICAgICAgICAgICAgbGF5ZXJHcm91
cC5wb3NpdGlvbi5zZXQobGF5ZXIuYm91bmRzLngsIC1sYXllci5ib3VuZHMueSwgaW5kZXggKiB6
SW50ZXJ2YWwpOworICAgICAgICB9KTsKIAotICAgICAgICB0aGlzLl9sYXllckdyb3Vwc0J5SWQu
c2V0KGxheWVyLmxheWVySWQsIGxheWVyR3JvdXApOwotICAgICAgICB0aGlzLl91cGRhdGVMYXll
ckdyb3VwUG9zaXRpb24obGF5ZXIsIGluZGV4KTsKKyAgICAgICAgdGhpcy5fYm91bmRpbmdCb3gu
c2V0RnJvbU9iamVjdCh0aGlzLl9zY2VuZSk7CisgICAgICAgIHRoaXMuX2NvbnRyb2xzLm1heERp
c3RhbmNlID0gdGhpcy5fYm91bmRpbmdCb3gubWF4LnogKyBXSS5MYXllcnMzRENvbnRlbnRWaWV3
Ll96UGFkZGluZzsKIAotICAgICAgICB0aGlzLl9zY2VuZS5hZGQobGF5ZXJHcm91cCk7CisgICAg
ICAgIHRoaXMuX2xheWVycyA9IG5ld0xheWVyczsKKyAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50
VG9MaXN0ZW5lcnMoV0kuQ29udGVudFZpZXcuRXZlbnQuU2VsZWN0aW9uUGF0aENvbXBvbmVudHNE
aWRDaGFuZ2UpOwogICAgIH0KIAotICAgIF91cGRhdGVMYXllckdyb3VwUG9zaXRpb24obGF5ZXIs
IGluZGV4KSB7Ci0gICAgICAgIGxldCBsYXllckdyb3VwID0gdGhpcy5fbGF5ZXJHcm91cHNCeUlk
LmdldChsYXllci5sYXllcklkKTsKLSAgICAgICAgY29uc29sZS5hc3NlcnQobGF5ZXJHcm91cCk7
Ci0KLSAgICAgICAgY29uc3QgekludGVydmFsID0gMjU7Ci0gICAgICAgIGxheWVyR3JvdXAucG9z
aXRpb24uc2V0KGxheWVyLmJvdW5kcy54LCAtbGF5ZXIuYm91bmRzLnksIGluZGV4ICogekludGVy
dmFsKTsKKyAgICBfY3JlYXRlTGF5ZXJHcm91cChsYXllcikgeworICAgICAgICBsZXQgbGF5ZXJH
cm91cCA9IG5ldyBUSFJFRS5Hcm91cDsKKyAgICAgICAgbGF5ZXJHcm91cC51c2VyRGF0YS5sYXll
ciA9IGxheWVyOworICAgICAgICBsYXllckdyb3VwLmFkZCh0aGlzLl9jcmVhdGVMYXllck1lc2go
bGF5ZXIuYm91bmRzKSwgdGhpcy5fY3JlYXRlTGF5ZXJNZXNoKGxheWVyLmNvbXBvc2l0ZWRCb3Vu
ZHMsIHRydWUpKTsKKyAgICAgICAgcmV0dXJuIGxheWVyR3JvdXA7CiAgICAgfQogCiAgICAgX2Ny
ZWF0ZUxheWVyTWVzaCh7d2lkdGgsIGhlaWdodH0sIGlzT3V0bGluZSA9IGZhbHNlKQogICAgIHsK
ICAgICAgICAgbGV0IGdlb21ldHJ5ID0gbmV3IFRIUkVFLkdlb21ldHJ5OwotICAgICAgICBnZW9t
ZXRyeS52ZXJ0aWNlcy5wdXNoKG5ldyBUSFJFRS5WZWN0b3IzKDAsICAgICAwLCAgICAgICAwKSk7
Ci0gICAgICAgIGdlb21ldHJ5LnZlcnRpY2VzLnB1c2gobmV3IFRIUkVFLlZlY3RvcjMod2lkdGgs
IDAsICAgICAgIDApKTsKLSAgICAgICAgZ2VvbWV0cnkudmVydGljZXMucHVzaChuZXcgVEhSRUUu
VmVjdG9yMyh3aWR0aCwgLWhlaWdodCwgMCkpOwotICAgICAgICBnZW9tZXRyeS52ZXJ0aWNlcy5w
dXNoKG5ldyBUSFJFRS5WZWN0b3IzKDAsICAgICAtaGVpZ2h0LCAwKSk7CisgICAgICAgIGdlb21l
dHJ5LnZlcnRpY2VzLnB1c2goCisgICAgICAgICAgICBuZXcgVEhSRUUuVmVjdG9yMygwLCAgICAg
MCwgICAgICAgMCksCisgICAgICAgICAgICBuZXcgVEhSRUUuVmVjdG9yMygwLCAgICAgLWhlaWdo
dCwgMCksCisgICAgICAgICAgICBuZXcgVEhSRUUuVmVjdG9yMyh3aWR0aCwgLWhlaWdodCwgMCks
CisgICAgICAgICAgICBuZXcgVEhSRUUuVmVjdG9yMyh3aWR0aCwgMCwgICAgICAgMCkKKyAgICAg
ICAgKTsKIAogICAgICAgICBpZiAoaXNPdXRsaW5lKSB7CiAgICAgICAgICAgICBsZXQgbWF0ZXJp
YWwgPSBuZXcgVEhSRUUuTGluZUJhc2ljTWF0ZXJpYWwoe2NvbG9yOiBXSS5MYXllcnMzRENvbnRl
bnRWaWV3Ll9sYXllckNvbG9yLnN0cm9rZX0pOwogICAgICAgICAgICAgcmV0dXJuIG5ldyBUSFJF
RS5MaW5lTG9vcChnZW9tZXRyeSwgbWF0ZXJpYWwpOwogICAgICAgICB9CiAKLSAgICAgICAgZ2Vv
bWV0cnkuZmFjZXMucHVzaChuZXcgVEhSRUUuRmFjZTMoMCwgMSwgMykpOwotICAgICAgICBnZW9t
ZXRyeS5mYWNlcy5wdXNoKG5ldyBUSFJFRS5GYWNlMygxLCAyLCAzKSk7CisgICAgICAgIGdlb21l
dHJ5LmZhY2VzLnB1c2gobmV3IFRIUkVFLkZhY2UzKDAsIDEsIDMpLCBuZXcgVEhSRUUuRmFjZTMo
MSwgMiwgMykpOwogCiAgICAgICAgIGxldCBtYXRlcmlhbCA9IG5ldyBUSFJFRS5NZXNoQmFzaWNN
YXRlcmlhbCh7CiAgICAgICAgICAgICBjb2xvcjogV0kuTGF5ZXJzM0RDb250ZW50Vmlldy5fbGF5
ZXJDb2xvci5maWxsLAogICAgICAgICAgICAgdHJhbnNwYXJlbnQ6IHRydWUsCiAgICAgICAgICAg
ICBvcGFjaXR5OiAwLjQsCiAgICAgICAgICAgICBzaWRlOiBUSFJFRS5Eb3VibGVTaWRlLAorICAg
ICAgICAgICAgZGVwdGhXcml0ZTogZmFsc2UsCiAgICAgICAgIH0pOwogCiAgICAgICAgIHJldHVy
biBuZXcgVEhSRUUuTWVzaChnZW9tZXRyeSwgbWF0ZXJpYWwpOwpAQCAtMjU2LDcgKzI4Miw3IEBA
IFdJLkxheWVyczNEQ29udGVudFZpZXcgPSBjbGFzcyBMYXllcnMzRENvbnRlbnRWaWV3IGV4dGVu
ZHMgV0kuQ29udGVudFZpZXcKIAogICAgICAgICB0aGlzLl91cGRhdGVMYXllckdyb3VwU2VsZWN0
aW9uKHNlbGVjdGlvbik7CiAKLSAgICAgICAgbGV0IGxheWVySWQgPSBzZWxlY3Rpb24gPyBzZWxl
Y3Rpb24udXNlckRhdGEubGF5ZXJJZCA6IG51bGw7CisgICAgICAgIGxldCBsYXllcklkID0gc2Vs
ZWN0aW9uID8gc2VsZWN0aW9uLnVzZXJEYXRhLmxheWVyLmxheWVySWQgOiBudWxsOwogICAgICAg
ICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXSS5MYXllcnMzRENvbnRlbnRWaWV3LkV2
ZW50LlNlbGVjdGVkTGF5ZXJDaGFuZ2VkLCB7bGF5ZXJJZH0pOwogICAgIH0KIApAQCAtMjc2LDgg
KzMwMiwzNCBAQCBXSS5MYXllcnMzRENvbnRlbnRWaWV3ID0gY2xhc3MgTGF5ZXJzM0RDb250ZW50
VmlldyBleHRlbmRzIFdJLkNvbnRlbnRWaWV3CiAgICAgICAgIGlmICh0aGlzLl9zZWxlY3RlZExh
eWVyR3JvdXApCiAgICAgICAgICAgICBzZXRDb2xvcihXSS5MYXllcnMzRENvbnRlbnRWaWV3Ll9z
ZWxlY3RlZExheWVyQ29sb3IpOwogICAgIH0KKworICAgIF9jZW50ZXJPblNlbGVjdGlvbigpCisg
ICAgeworICAgICAgICBpZiAoIXRoaXMuX3NlbGVjdGVkTGF5ZXJHcm91cCkKKyAgICAgICAgICAg
IHJldHVybjsKKworICAgICAgICBsZXQge3gsIHksIHdpZHRoLCBoZWlnaHR9ID0gdGhpcy5fc2Vs
ZWN0ZWRMYXllckdyb3VwLnVzZXJEYXRhLmxheWVyLmJvdW5kczsKKyAgICAgICAgdGhpcy5fY29u
dHJvbHMudGFyZ2V0LnNldCh4ICsgd2lkdGggLyAyLCAteSAtIGhlaWdodCAvIDIsIDApOworICAg
ICAgICB0aGlzLl9jYW1lcmEucG9zaXRpb24uc2V0KHggKyB3aWR0aCAvIDIsIC15IC0gaGVpZ2h0
IC8gMiwgdGhpcy5fc2VsZWN0ZWRMYXllckdyb3VwLnBvc2l0aW9uLnogKyBXSS5MYXllcnMzRENv
bnRlbnRWaWV3Ll96UGFkZGluZyAvIDIpOworICAgIH0KKworICAgIF9yZXNldENhbWVyYSgpCisg
ICAgeworICAgICAgICBsZXQge3gsIHksIHdpZHRoLCBoZWlnaHR9ID0gdGhpcy5fbGF5ZXJzWzBd
LmJvdW5kczsKKyAgICAgICAgdGhpcy5fY29udHJvbHMudGFyZ2V0LnNldCh4ICsgd2lkdGggLyAy
LCAteSAtIGhlaWdodCAvIDIsIDApOworICAgICAgICB0aGlzLl9jYW1lcmEucG9zaXRpb24uc2V0
KHggKyB3aWR0aCAvIDIsIC15IC0gaGVpZ2h0IC8gMiwgdGhpcy5fY29udHJvbHMubWF4RGlzdGFu
Y2UgLSBXSS5MYXllcnMzRENvbnRlbnRWaWV3Ll96UGFkZGluZyAvIDIpOworICAgIH0KKworICAg
IF9yZXN0cmljdFBhbigpCisgICAgeworICAgICAgICBsZXQgZGVsdGEgPSB0aGlzLl9ib3VuZGlu
Z0JveC5jbGFtcFBvaW50KHRoaXMuX2NvbnRyb2xzLnRhcmdldCkuc2V0WigwKS5zdWIodGhpcy5f
Y29udHJvbHMudGFyZ2V0KTsKKyAgICAgICAgdGhpcy5fY29udHJvbHMudGFyZ2V0LmFkZChkZWx0
YSk7CisgICAgICAgIHRoaXMuX2NhbWVyYS5wb3NpdGlvbi5hZGQoZGVsdGEpOworICAgIH0KIH07
CiAKK1dJLkxheWVyczNEQ29udGVudFZpZXcuX3pQYWRkaW5nID0gMzAwMDsKKwogV0kuTGF5ZXJz
M0RDb250ZW50Vmlldy5fbGF5ZXJDb2xvciA9IHsKICAgICBmaWxsOiAiaHNsKDc2LCA0OSUsIDc1
JSkiLAogICAgIHN0cm9rZTogImhzbCg3OSwgNDUlLCA1MCUpIgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>325372</attachid>
            <date>2017-10-30 13:12:47 -0700</date>
            <delta_ts>2017-11-01 14:58:37 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-178966-20171030131249.patch</filename>
            <type>text/plain</type>
            <size>13888</size>
            <attacher name="Ross Kirsling">ross.kirsling</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI0MTkzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwppbmRleCA1
NWZhZjdmMTU2MWFkZTIyMzEzZGM4N2VkNzBiYjdjMzg0MGNlZThlLi44YjExNzdiZTU0MzQ5OWY1
NDAyZTE2MDk1ZmFiMTIzMGVhYWExNmQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0MyBAQAorMjAxNy0xMC0zMCAgUm9zcyBLaXJzbGluZyAgPHJvc3Mua2lyc2xpbmdAc29u
eS5jb20+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogSW1wcm92ZSBVWCBvZiBMYXllcnMgdGFi
IHZpc3VhbGl6YXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE3ODk2NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9MYXllcnMzRENvbnRlbnRWaWV3LmpzOgorICAg
ICAgICAoV0kuTGF5ZXJzM0RDb250ZW50Vmlldyk6CisgICAgICAgIChXSS5MYXllcnMzRENvbnRl
bnRWaWV3LnByb3RvdHlwZS5pbml0aWFsTGF5b3V0KToKKyAgICAgICAgKFdJLkxheWVyczNEQ29u
dGVudFZpZXcucHJvdG90eXBlLl9jYW52YXNNb3VzZURvd24pOgorICAgICAgICAoV0kuTGF5ZXJz
M0RDb250ZW50Vmlldy5wcm90b3R5cGUuX2NyZWF0ZUxheWVyR3JvdXApOiBSZW5hbWVkIGZyb20g
X2FkZExheWVyR3JvdXAuCisgICAgICAgIChXSS5MYXllcnMzRENvbnRlbnRWaWV3LnByb3RvdHlw
ZS5fdXBkYXRlTGF5ZXJHcm91cFBvc2l0aW9uKTogTWVyZ2VkIGludG8gX3VwZGF0ZUxheWVycy4K
KyAgICAgICAgU2V0IHVwIHpvb20gYW5kIHBhbi4KKworICAgICAgICAoV0kuTGF5ZXJzM0RDb250
ZW50Vmlldy5wcm90b3R5cGUuX2FuaW1hdGUpOgorICAgICAgICAoV0kuTGF5ZXJzM0RDb250ZW50
Vmlldy5wcm90b3R5cGUuX3Jlc3RyaWN0UGFuKToKKyAgICAgICAgUmVzdHJpY3QgcGFuIHRvIGJv
dW5kaW5nIGJveCBvbiBYWSBwbGFuZS4KKworICAgICAgICAoV0kuTGF5ZXJzM0RDb250ZW50Vmll
dy5wcm90b3R5cGUubGF5b3V0KToKKyAgICAgICAgKFdJLkxheWVyczNEQ29udGVudFZpZXcucHJv
dG90eXBlLl91cGRhdGVEb2N1bWVudCk6CisgICAgICAgIChXSS5MYXllcnMzRENvbnRlbnRWaWV3
LnByb3RvdHlwZS5fcmVzZXRDYW1lcmEpOgorICAgICAgICBPbiBuZXcgZG9jdW1lbnQsIHRocm93
IG91dCBhbGwgb2xkIGxheWVycyBhbmQgY2VudGVyIHRoZSBjYW1lcmEgb24gdGhlIG5ldyBkb2N1
bWVudCBsYXllci4KKworICAgICAgICAoV0kuTGF5ZXJzM0RDb250ZW50Vmlldy5wcm90b3R5cGUu
c2VsZWN0TGF5ZXJCeUlkKToKKyAgICAgICAgKFdJLkxheWVyczNEQ29udGVudFZpZXcucHJvdG90
eXBlLl9jZW50ZXJPblNlbGVjdGlvbik6CisgICAgICAgIFJlY2VudGVyIHRoZSBjYW1lcmEgd2hl
biBsYXllciBncm91cCBzZWxlY3Rpb24gaXMgdXBkYXRlZCBwcm9ncmFtbWF0aWNhbGx5LgorCisg
ICAgICAgIChXSS5MYXllcnMzRENvbnRlbnRWaWV3LnByb3RvdHlwZS5fdXBkYXRlTGF5ZXJzKToK
KyAgICAgICAgKFdJLkxheWVyczNEQ29udGVudFZpZXcucHJvdG90eXBlLl9jcmVhdGVMYXllck1l
c2gpOgorICAgICAgICBGaXggdmlzdWFsIGFydGlmYWN0IGR1ZSB0byAiZGVwdGhXcml0ZSIgZmxh
Zy4KKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvTGF5ZXJEZXRhaWxzU2lkZWJhclBh
bmVsLmpzOgorICAgICAgICAoV0kuTGF5ZXJEZXRhaWxzU2lkZWJhclBhbmVsLnByb3RvdHlwZS5z
ZWxlY3ROb2RlQnlMYXllcklkKToKKyAgICAgICAgU3VwcHJlc3Mgc2VsZWN0aW9uIHVwZGF0ZSBl
dmVudCB3aGVuIHRoZSBkYXRhIGdyaWQgc2VsZWN0aW9uIGlzIHVwZGF0ZWQgcHJvZ3JhbW1hdGlj
YWxseS4KKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvRGF0YUdyaWROb2RlLmpzOgor
ICAgICAgICAoV0kuRGF0YUdyaWROb2RlLnByb3RvdHlwZS5yZXZlYWxBbmRTZWxlY3QpOgorICAg
ICAgICBBbGxvdyBmb3J3YXJkaW5nIG9mIHNlbGVjdCgpJ3MgcGFyYW1ldGVyLgorCiAyMDE3LTEw
LTMwICBGdWppaSBIaXJvbm9yaSAgPEhpcm9ub3JpLkZ1amlpQHNvbnkuY29tPgogCiAgICAgICAg
IFtHVEtdIFdlYiBJbnNwZWN0b3I6IEFkZCBQYXRoLnN2ZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRGF0YUdyaWROb2RlLmpzIGIvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRGF0YUdyaWROb2RlLmpzCmluZGV4
IDkyNTc2OWQzODRhYjUyOGEyMmI4Yzg4ZDcwYzNlNjU0Njg4MGZhY2EuLjQzYzhiMzNkMjUwODk0
ZWUzZWIyOWY3NTNmMTQzNGIzZTI0NDA0ZGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RhdGFHcmlkTm9kZS5qcworKysgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9EYXRhR3JpZE5vZGUuanMKQEAgLTU2OSwx
MCArNTY5LDEwIEBAIFdJLkRhdGFHcmlkTm9kZSA9IGNsYXNzIERhdGFHcmlkTm9kZSBleHRlbmRz
IFdJLk9iamVjdAogICAgICAgICAgICAgdGhpcy5kYXRhR3JpZC5kaXNwYXRjaEV2ZW50VG9MaXN0
ZW5lcnMoV0kuRGF0YUdyaWQuRXZlbnQuU2VsZWN0ZWROb2RlQ2hhbmdlZCwge29sZFNlbGVjdGVk
Tm9kZX0pOwogICAgIH0KIAotICAgIHJldmVhbEFuZFNlbGVjdCgpCisgICAgcmV2ZWFsQW5kU2Vs
ZWN0KHN1cHByZXNzU2VsZWN0ZWRFdmVudCkKICAgICB7CiAgICAgICAgIHRoaXMucmV2ZWFsKCk7
Ci0gICAgICAgIHRoaXMuc2VsZWN0KCk7CisgICAgICAgIHRoaXMuc2VsZWN0KHN1cHByZXNzU2Vs
ZWN0ZWRFdmVudCk7CiAgICAgfQogCiAgICAgZGVzZWxlY3Qoc3VwcHJlc3NEZXNlbGVjdGVkRXZl
bnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3
cy9MYXllckRldGFpbHNTaWRlYmFyUGFuZWwuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9WaWV3cy9MYXllckRldGFpbHNTaWRlYmFyUGFuZWwuanMKaW5kZXggYzFjZWVk
NjBiMWI0MWY4YTIzZTE3NWEwMDlkZWM2Zjc0MWQ3NzgxOS4uOGY3NWUwNzdhYjBkMmJkNWY5MzAw
ZTI5YzMwODcwMDdhY2EwNWEwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvVmlld3MvTGF5ZXJEZXRhaWxzU2lkZWJhclBhbmVsLmpzCisrKyBiL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0xheWVyRGV0YWlsc1NpZGViYXJQ
YW5lbC5qcwpAQCAtNjcsMTAgKzY3LDExIEBAIFdJLkxheWVyRGV0YWlsc1NpZGViYXJQYW5lbCA9
IGNsYXNzIExheWVyRGV0YWlsc1NpZGViYXJQYW5lbCBleHRlbmRzIFdJLkRldGFpbHNTCiAgICAg
ICAgIGlmIChub2RlID09PSB0aGlzLl9kYXRhR3JpZC5zZWxlY3RlZE5vZGUpCiAgICAgICAgICAg
ICByZXR1cm47CiAKKyAgICAgICAgY29uc3Qgc3VwcHJlc3NFdmVudCA9IHRydWU7CiAgICAgICAg
IGlmIChub2RlKQotICAgICAgICAgICAgbm9kZS5yZXZlYWxBbmRTZWxlY3QoKTsKKyAgICAgICAg
ICAgIG5vZGUucmV2ZWFsQW5kU2VsZWN0KHN1cHByZXNzRXZlbnQpOwogICAgICAgICBlbHNlIGlm
ICh0aGlzLl9kYXRhR3JpZC5zZWxlY3RlZE5vZGUpCi0gICAgICAgICAgICB0aGlzLl9kYXRhR3Jp
ZC5zZWxlY3RlZE5vZGUuZGVzZWxlY3QoKTsKKyAgICAgICAgICAgIHRoaXMuX2RhdGFHcmlkLnNl
bGVjdGVkTm9kZS5kZXNlbGVjdChzdXBwcmVzc0V2ZW50KTsKICAgICB9CiAKICAgICAvLyBQcml2
YXRlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3
cy9MYXllcnMzRENvbnRlbnRWaWV3LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvVmlld3MvTGF5ZXJzM0RDb250ZW50Vmlldy5qcwppbmRleCBjZDk0OWE4MDMxN2JjOTcw
NDQ2ZDI4MjM3MjVhMWRiMmVhZmIyYzQ4Li42OTFlMzFlYzAyNTZjYWVhMmM3NGZlMWFiYWM5OWUy
MDk3NjgzYzI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9WaWV3cy9MYXllcnMzRENvbnRlbnRWaWV3LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0xheWVyczNEQ29udGVudFZpZXcuanMKQEAgLTQyLDkgKzQy
LDExIEBAIFdJLkxheWVyczNEQ29udGVudFZpZXcgPSBjbGFzcyBMYXllcnMzRENvbnRlbnRWaWV3
IGV4dGVuZHMgV0kuQ29udGVudFZpZXcKICAgICAgICAgdGhpcy5fY2FtZXJhID0gbnVsbDsKICAg
ICAgICAgdGhpcy5fY29udHJvbHMgPSBudWxsOwogICAgICAgICB0aGlzLl9zY2VuZSA9IG51bGw7
CisgICAgICAgIHRoaXMuX2JvdW5kaW5nQm94ID0gbnVsbDsKICAgICAgICAgdGhpcy5fcmF5Y2Fz
dGVyID0gbnVsbDsKICAgICAgICAgdGhpcy5fbW91c2UgPSBudWxsOwogICAgICAgICB0aGlzLl9h
bmltYXRpb25GcmFtZVJlcXVlc3RJZCA9IG51bGw7CisgICAgICAgIHRoaXMuX2RvY3VtZW50Tm9k
ZSA9IG51bGw7CiAgICAgfQogCiAgICAgLy8gUHVibGljCkBAIC04Niw2ICs4OCw3IEBAIFdJLkxh
eWVyczNEQ29udGVudFZpZXcgPSBjbGFzcyBMYXllcnMzRENvbnRlbnRWaWV3IGV4dGVuZHMgV0ku
Q29udGVudFZpZXcKICAgICB7CiAgICAgICAgIGxldCBsYXllckdyb3VwID0gdGhpcy5fbGF5ZXJH
cm91cHNCeUlkLmdldChsYXllcklkKTsKICAgICAgICAgdGhpcy5fdXBkYXRlTGF5ZXJHcm91cFNl
bGVjdGlvbihsYXllckdyb3VwKTsKKyAgICAgICAgdGhpcy5fY2VudGVyT25TZWxlY3Rpb24oKTsK
ICAgICB9CiAKICAgICAvLyBQcm90ZWN0ZWQKQEAgLTk5LDE4ICsxMDIsMjEgQEAgV0kuTGF5ZXJz
M0RDb250ZW50VmlldyA9IGNsYXNzIExheWVyczNEQ29udGVudFZpZXcgZXh0ZW5kcyBXSS5Db250
ZW50VmlldwogICAgICAgICB0aGlzLl9yZW5kZXJlci5zZXRTaXplKHRoaXMuZWxlbWVudC5vZmZz
ZXRXaWR0aCwgdGhpcy5lbGVtZW50Lm9mZnNldEhlaWdodCk7CiAKICAgICAgICAgdGhpcy5fY2Ft
ZXJhID0gbmV3IFRIUkVFLlBlcnNwZWN0aXZlQ2FtZXJhKDQ1LCB0aGlzLmVsZW1lbnQub2Zmc2V0
V2lkdGggLyB0aGlzLmVsZW1lbnQub2Zmc2V0SGVpZ2h0LCAxLCAxMDAwMDApOwotICAgICAgICB0
aGlzLl9jYW1lcmEucG9zaXRpb24uc2V0KDAsIDAsIDQwMDApOwotICAgICAgICB0aGlzLl9jYW1l
cmEubG9va0F0KG5ldyBUSFJFRS5WZWN0b3IzKDAsIDAsIDApKTsKIAogICAgICAgICB0aGlzLl9j
b250cm9scyA9IG5ldyBUSFJFRS5PcmJpdENvbnRyb2xzKHRoaXMuX2NhbWVyYSwgdGhpcy5fcmVu
ZGVyZXIuZG9tRWxlbWVudCk7CiAgICAgICAgIHRoaXMuX2NvbnRyb2xzLmVuYWJsZURhbXBpbmcg
PSB0cnVlOwotICAgICAgICB0aGlzLl9jb250cm9scy5lbmFibGVab29tID0gZmFsc2U7Ci0gICAg
ICAgIHRoaXMuX2NvbnRyb2xzLmVuYWJsZVBhbiA9IGZhbHNlOworICAgICAgICB0aGlzLl9jb250
cm9scy5lbmFibGVLZXlzID0gZmFsc2U7CisgICAgICAgIHRoaXMuX2NvbnRyb2xzLnpvb21TcGVl
ZCA9IDAuNTsKKyAgICAgICAgdGhpcy5fY29udHJvbHMubWluRGlzdGFuY2UgPSAxMDAwOworICAg
ICAgICB0aGlzLl9jb250cm9scy5yb3RhdGVTcGVlZCA9IDAuNTsKKyAgICAgICAgdGhpcy5fY29u
dHJvbHMubWluUG9sYXJBbmdsZSA9IE1hdGguUEkgLyAyOworICAgICAgICB0aGlzLl9jb250cm9s
cy5tYXhQb2xhckFuZ2xlID0gTWF0aC5QSSAvIDI7CiAgICAgICAgIHRoaXMuX2NvbnRyb2xzLm1p
bkF6aW11dGhBbmdsZSA9IC1NYXRoLlBJIC8gMjsKICAgICAgICAgdGhpcy5fY29udHJvbHMubWF4
QXppbXV0aEFuZ2xlID0gTWF0aC5QSSAvIDI7CisgICAgICAgIHRoaXMuX3JlbmRlcmVyLmRvbUVs
ZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiY29udGV4dG1lbnUiLCAoZXZlbnQpID0+IHsgZXZlbnQu
c3RvcFByb3BhZ2F0aW9uKCk7IH0pOwogCiAgICAgICAgIHRoaXMuX3NjZW5lID0gbmV3IFRIUkVF
LlNjZW5lOwotICAgICAgICB0aGlzLl9zY2VuZS5wb3NpdGlvbi5zZXQoLXRoaXMuZWxlbWVudC5v
ZmZzZXRXaWR0aCAvIDIsIHRoaXMuZWxlbWVudC5vZmZzZXRIZWlnaHQgLyAyLCAwKTsKKyAgICAg
ICAgdGhpcy5fYm91bmRpbmdCb3ggPSBuZXcgVEhSRUUuQm94MzsKIAogICAgICAgICB0aGlzLl9y
YXljYXN0ZXIgPSBuZXcgVEhSRUUuUmF5Y2FzdGVyOwogICAgICAgICB0aGlzLl9tb3VzZSA9IG5l
dyBUSFJFRS5WZWN0b3IyOwpAQCAtMTI3LDkgKzEzMywxMiBAQCBXSS5MYXllcnMzRENvbnRlbnRW
aWV3ID0gY2xhc3MgTGF5ZXJzM0RDb250ZW50VmlldyBleHRlbmRzIFdJLkNvbnRlbnRWaWV3CiAg
ICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgV0kuZG9tVHJlZU1hbmFnZXIucmVxdWVzdERv
Y3VtZW50KChub2RlKSA9PiB7CisgICAgICAgICAgICBsZXQgZG9jdW1lbnRXYXNVcGRhdGVkID0g
dGhpcy5fdXBkYXRlRG9jdW1lbnQobm9kZSk7CisKICAgICAgICAgICAgIFdJLmxheWVyVHJlZU1h
bmFnZXIubGF5ZXJzRm9yTm9kZShub2RlLCAobGF5ZXJzKSA9PiB7CiAgICAgICAgICAgICAgICAg
dGhpcy5fdXBkYXRlTGF5ZXJzKGxheWVycyk7Ci0gICAgICAgICAgICAgICAgdGhpcy5kaXNwYXRj
aEV2ZW50VG9MaXN0ZW5lcnMoV0kuQ29udGVudFZpZXcuRXZlbnQuU2VsZWN0aW9uUGF0aENvbXBv
bmVudHNEaWRDaGFuZ2UpOworICAgICAgICAgICAgICAgIGlmIChkb2N1bWVudFdhc1VwZGF0ZWQp
CisgICAgICAgICAgICAgICAgICAgIHRoaXMuX3Jlc2V0Q2FtZXJhKCk7CiAgICAgICAgICAgICB9
KTsKICAgICAgICAgfSk7CiAgICAgfQpAQCAtMTYwLDYgKzE2OSw3IEBAIFdJLkxheWVyczNEQ29u
dGVudFZpZXcgPSBjbGFzcyBMYXllcnMzRENvbnRlbnRWaWV3IGV4dGVuZHMgV0kuQ29udGVudFZp
ZXcKICAgICBfYW5pbWF0ZSgpCiAgICAgewogICAgICAgICB0aGlzLl9jb250cm9scy51cGRhdGUo
KTsKKyAgICAgICAgdGhpcy5fcmVzdHJpY3RQYW4oKTsKICAgICAgICAgdGhpcy5fcmVuZGVyZXIu
cmVuZGVyKHRoaXMuX3NjZW5lLCB0aGlzLl9jYW1lcmEpOwogICAgICAgICB0aGlzLl9hbmltYXRp
b25GcmFtZVJlcXVlc3RJZCA9IHJlcXVlc3RBbmltYXRpb25GcmFtZSgoKSA9PiB7IHRoaXMuX2Fu
aW1hdGUoKTsgfSk7CiAgICAgfQpAQCAtMTcwLDExICsxODAsMjUgQEAgV0kuTGF5ZXJzM0RDb250
ZW50VmlldyA9IGNsYXNzIExheWVyczNEQ29udGVudFZpZXcgZXh0ZW5kcyBXSS5Db250ZW50Vmll
dwogICAgICAgICB0aGlzLl9hbmltYXRpb25GcmFtZVJlcXVlc3RJZCA9IG51bGw7CiAgICAgfQog
CisgICAgX3VwZGF0ZURvY3VtZW50KGRvY3VtZW50Tm9kZSkKKyAgICB7CisgICAgICAgIGlmIChk
b2N1bWVudE5vZGUgPT09IHRoaXMuX2RvY3VtZW50Tm9kZSkKKyAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKKworICAgICAgICB0aGlzLl9zY2VuZS5jaGlsZHJlbi5sZW5ndGggPSAwOworICAgICAg
ICB0aGlzLl9sYXllckdyb3Vwc0J5SWQuY2xlYXIoKTsKKyAgICAgICAgdGhpcy5fbGF5ZXJzLmxl
bmd0aCA9IDA7CisKKyAgICAgICAgdGhpcy5fZG9jdW1lbnROb2RlID0gZG9jdW1lbnROb2RlOwor
CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKwogICAgIF91cGRhdGVMYXllcnMobmV3TGF5
ZXJzKQogICAgIHsKICAgICAgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIGJlIG1hZGUgaW50byB0
aGUgYmFzaWMgdXNhZ2Ugb2YgdGhlIG1hbmFnZXIsIGlmIG5vdCB0aGUgYWdlbnQgaXRzZWxmLgog
ICAgICAgICAvLyAgICAgICAgQXQgdGhhdCBwb2ludCwgd2UgY2FuIHJlbW92ZSB0aGlzIGR1cGxp
Y2F0aW9uIGZyb20gdGhlIHZpc3VhbGl6YXRpb24gYW5kIHNpZGViYXIuCi0gICAgICAgIGxldCB7
cmVtb3ZhbHMsIGFkZGl0aW9ucywgcHJlc2VydmVkfSA9IFdJLmxheWVyVHJlZU1hbmFnZXIubGF5
ZXJUcmVlTXV0YXRpb25zKHRoaXMuX2xheWVycywgbmV3TGF5ZXJzKTsKKyAgICAgICAgbGV0IHty
ZW1vdmFscywgYWRkaXRpb25zfSA9IFdJLmxheWVyVHJlZU1hbmFnZXIubGF5ZXJUcmVlTXV0YXRp
b25zKHRoaXMuX2xheWVycywgbmV3TGF5ZXJzKTsKIAogICAgICAgICBmb3IgKGxldCBsYXllciBv
ZiByZW1vdmFscykgewogICAgICAgICAgICAgbGV0IGxheWVyR3JvdXAgPSB0aGlzLl9sYXllckdy
b3Vwc0J5SWQuZ2V0KGxheWVyLmxheWVySWQpOwpAQCAtMTgyLDU3ICsyMDYsNTkgQEAgV0kuTGF5
ZXJzM0RDb250ZW50VmlldyA9IGNsYXNzIExheWVyczNEQ29udGVudFZpZXcgZXh0ZW5kcyBXSS5D
b250ZW50VmlldwogICAgICAgICAgICAgdGhpcy5fbGF5ZXJHcm91cHNCeUlkLmRlbGV0ZShsYXll
ci5sYXllcklkKTsKICAgICAgICAgfQogCi0gICAgICAgIGlmICh0aGlzLl9zZWxlY3RlZExheWVy
R3JvdXAgJiYgIXRoaXMuX2xheWVyR3JvdXBzQnlJZC5nZXQodGhpcy5fc2VsZWN0ZWRMYXllckdy
b3VwLnVzZXJEYXRhLmxheWVySWQpKQorICAgICAgICBpZiAodGhpcy5fc2VsZWN0ZWRMYXllckdy
b3VwICYmICF0aGlzLl9sYXllckdyb3Vwc0J5SWQuZ2V0KHRoaXMuX3NlbGVjdGVkTGF5ZXJHcm91
cC51c2VyRGF0YS5sYXllci5sYXllcklkKSkKICAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRMYXll
ckdyb3VwID0gbnVsbDsKIAotICAgICAgICBhZGRpdGlvbnMuZm9yRWFjaCh0aGlzLl9hZGRMYXll
ckdyb3VwLCB0aGlzKTsKLSAgICAgICAgcHJlc2VydmVkLmZvckVhY2godGhpcy5fdXBkYXRlTGF5
ZXJHcm91cFBvc2l0aW9uLCB0aGlzKTsKLQotICAgICAgICB0aGlzLl9sYXllcnMgPSBuZXdMYXll
cnM7Ci0gICAgfQorICAgICAgICBmb3IgKGxldCBsYXllciBvZiBhZGRpdGlvbnMpIHsKKyAgICAg
ICAgICAgIGxldCBsYXllckdyb3VwID0gdGhpcy5fY3JlYXRlTGF5ZXJHcm91cChsYXllcik7Cisg
ICAgICAgICAgICB0aGlzLl9sYXllckdyb3Vwc0J5SWQuc2V0KGxheWVyLmxheWVySWQsIGxheWVy
R3JvdXApOworICAgICAgICAgICAgdGhpcy5fc2NlbmUuYWRkKGxheWVyR3JvdXApOworICAgICAg
ICB9CiAKLSAgICBfYWRkTGF5ZXJHcm91cChsYXllciwgaW5kZXgpCi0gICAgewotICAgICAgICBs
ZXQgbGF5ZXJHcm91cCA9IG5ldyBUSFJFRS5Hcm91cDsKLSAgICAgICAgbGF5ZXJHcm91cC51c2Vy
RGF0YS5sYXllcklkID0gbGF5ZXIubGF5ZXJJZDsKLSAgICAgICAgbGF5ZXJHcm91cC5hZGQodGhp
cy5fY3JlYXRlTGF5ZXJNZXNoKGxheWVyLmJvdW5kcykpOwotICAgICAgICBsYXllckdyb3VwLmFk
ZCh0aGlzLl9jcmVhdGVMYXllck1lc2gobGF5ZXIuY29tcG9zaXRlZEJvdW5kcywgdHJ1ZSkpOwor
ICAgICAgICAvLyBGSVhNRTogVXBkYXRlIHRoZSBiYWNrZW5kIHRvIHByb3ZpZGUgYSBsaXRlcmFs
ICJsYXllciB0cmVlIiBzbyB3ZSBjYW4gZGVjaWRlIHotaW5kaWNlcyBsZXNzIG5haXZlbHkuCisg
ICAgICAgIGNvbnN0IHpJbnRlcnZhbCA9IDI1OworICAgICAgICBuZXdMYXllcnMuZm9yRWFjaCgo
bGF5ZXIsIGluZGV4KSA9PiB7CisgICAgICAgICAgICBsZXQgbGF5ZXJHcm91cCA9IHRoaXMuX2xh
eWVyR3JvdXBzQnlJZC5nZXQobGF5ZXIubGF5ZXJJZCk7CisgICAgICAgICAgICBsYXllckdyb3Vw
LnBvc2l0aW9uLnNldChsYXllci5ib3VuZHMueCwgLWxheWVyLmJvdW5kcy55LCBpbmRleCAqIHpJ
bnRlcnZhbCk7CisgICAgICAgIH0pOwogCi0gICAgICAgIHRoaXMuX2xheWVyR3JvdXBzQnlJZC5z
ZXQobGF5ZXIubGF5ZXJJZCwgbGF5ZXJHcm91cCk7Ci0gICAgICAgIHRoaXMuX3VwZGF0ZUxheWVy
R3JvdXBQb3NpdGlvbihsYXllciwgaW5kZXgpOworICAgICAgICB0aGlzLl9ib3VuZGluZ0JveC5z
ZXRGcm9tT2JqZWN0KHRoaXMuX3NjZW5lKTsKKyAgICAgICAgdGhpcy5fY29udHJvbHMubWF4RGlz
dGFuY2UgPSB0aGlzLl9ib3VuZGluZ0JveC5tYXgueiArIFdJLkxheWVyczNEQ29udGVudFZpZXcu
X3pQYWRkaW5nOwogCi0gICAgICAgIHRoaXMuX3NjZW5lLmFkZChsYXllckdyb3VwKTsKKyAgICAg
ICAgdGhpcy5fbGF5ZXJzID0gbmV3TGF5ZXJzOworICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRU
b0xpc3RlbmVycyhXSS5Db250ZW50Vmlldy5FdmVudC5TZWxlY3Rpb25QYXRoQ29tcG9uZW50c0Rp
ZENoYW5nZSk7CiAgICAgfQogCi0gICAgX3VwZGF0ZUxheWVyR3JvdXBQb3NpdGlvbihsYXllciwg
aW5kZXgpIHsKLSAgICAgICAgbGV0IGxheWVyR3JvdXAgPSB0aGlzLl9sYXllckdyb3Vwc0J5SWQu
Z2V0KGxheWVyLmxheWVySWQpOwotICAgICAgICBjb25zb2xlLmFzc2VydChsYXllckdyb3VwKTsK
LQotICAgICAgICBjb25zdCB6SW50ZXJ2YWwgPSAyNTsKLSAgICAgICAgbGF5ZXJHcm91cC5wb3Np
dGlvbi5zZXQobGF5ZXIuYm91bmRzLngsIC1sYXllci5ib3VuZHMueSwgaW5kZXggKiB6SW50ZXJ2
YWwpOworICAgIF9jcmVhdGVMYXllckdyb3VwKGxheWVyKSB7CisgICAgICAgIGxldCBsYXllckdy
b3VwID0gbmV3IFRIUkVFLkdyb3VwOworICAgICAgICBsYXllckdyb3VwLnVzZXJEYXRhLmxheWVy
ID0gbGF5ZXI7CisgICAgICAgIGxheWVyR3JvdXAuYWRkKHRoaXMuX2NyZWF0ZUxheWVyTWVzaChs
YXllci5ib3VuZHMpLCB0aGlzLl9jcmVhdGVMYXllck1lc2gobGF5ZXIuY29tcG9zaXRlZEJvdW5k
cywgdHJ1ZSkpOworICAgICAgICByZXR1cm4gbGF5ZXJHcm91cDsKICAgICB9CiAKICAgICBfY3Jl
YXRlTGF5ZXJNZXNoKHt3aWR0aCwgaGVpZ2h0fSwgaXNPdXRsaW5lID0gZmFsc2UpCiAgICAgewog
ICAgICAgICBsZXQgZ2VvbWV0cnkgPSBuZXcgVEhSRUUuR2VvbWV0cnk7Ci0gICAgICAgIGdlb21l
dHJ5LnZlcnRpY2VzLnB1c2gobmV3IFRIUkVFLlZlY3RvcjMoMCwgICAgIDAsICAgICAgIDApKTsK
LSAgICAgICAgZ2VvbWV0cnkudmVydGljZXMucHVzaChuZXcgVEhSRUUuVmVjdG9yMyh3aWR0aCwg
MCwgICAgICAgMCkpOwotICAgICAgICBnZW9tZXRyeS52ZXJ0aWNlcy5wdXNoKG5ldyBUSFJFRS5W
ZWN0b3IzKHdpZHRoLCAtaGVpZ2h0LCAwKSk7Ci0gICAgICAgIGdlb21ldHJ5LnZlcnRpY2VzLnB1
c2gobmV3IFRIUkVFLlZlY3RvcjMoMCwgICAgIC1oZWlnaHQsIDApKTsKKyAgICAgICAgZ2VvbWV0
cnkudmVydGljZXMucHVzaCgKKyAgICAgICAgICAgIG5ldyBUSFJFRS5WZWN0b3IzKDAsICAgICAw
LCAgICAgICAwKSwKKyAgICAgICAgICAgIG5ldyBUSFJFRS5WZWN0b3IzKDAsICAgICAtaGVpZ2h0
LCAwKSwKKyAgICAgICAgICAgIG5ldyBUSFJFRS5WZWN0b3IzKHdpZHRoLCAtaGVpZ2h0LCAwKSwK
KyAgICAgICAgICAgIG5ldyBUSFJFRS5WZWN0b3IzKHdpZHRoLCAwLCAgICAgICAwKQorICAgICAg
ICApOwogCiAgICAgICAgIGlmIChpc091dGxpbmUpIHsKICAgICAgICAgICAgIGxldCBtYXRlcmlh
bCA9IG5ldyBUSFJFRS5MaW5lQmFzaWNNYXRlcmlhbCh7Y29sb3I6IFdJLkxheWVyczNEQ29udGVu
dFZpZXcuX2xheWVyQ29sb3Iuc3Ryb2tlfSk7CiAgICAgICAgICAgICByZXR1cm4gbmV3IFRIUkVF
LkxpbmVMb29wKGdlb21ldHJ5LCBtYXRlcmlhbCk7CiAgICAgICAgIH0KIAotICAgICAgICBnZW9t
ZXRyeS5mYWNlcy5wdXNoKG5ldyBUSFJFRS5GYWNlMygwLCAxLCAzKSk7Ci0gICAgICAgIGdlb21l
dHJ5LmZhY2VzLnB1c2gobmV3IFRIUkVFLkZhY2UzKDEsIDIsIDMpKTsKKyAgICAgICAgZ2VvbWV0
cnkuZmFjZXMucHVzaChuZXcgVEhSRUUuRmFjZTMoMCwgMSwgMyksIG5ldyBUSFJFRS5GYWNlMygx
LCAyLCAzKSk7CiAKICAgICAgICAgbGV0IG1hdGVyaWFsID0gbmV3IFRIUkVFLk1lc2hCYXNpY01h
dGVyaWFsKHsKICAgICAgICAgICAgIGNvbG9yOiBXSS5MYXllcnMzRENvbnRlbnRWaWV3Ll9sYXll
ckNvbG9yLmZpbGwsCiAgICAgICAgICAgICB0cmFuc3BhcmVudDogdHJ1ZSwKICAgICAgICAgICAg
IG9wYWNpdHk6IDAuNCwKICAgICAgICAgICAgIHNpZGU6IFRIUkVFLkRvdWJsZVNpZGUsCisgICAg
ICAgICAgICBkZXB0aFdyaXRlOiBmYWxzZSwKICAgICAgICAgfSk7CiAKICAgICAgICAgcmV0dXJu
IG5ldyBUSFJFRS5NZXNoKGdlb21ldHJ5LCBtYXRlcmlhbCk7CkBAIC0yNTYsNyArMjgyLDcgQEAg
V0kuTGF5ZXJzM0RDb250ZW50VmlldyA9IGNsYXNzIExheWVyczNEQ29udGVudFZpZXcgZXh0ZW5k
cyBXSS5Db250ZW50VmlldwogCiAgICAgICAgIHRoaXMuX3VwZGF0ZUxheWVyR3JvdXBTZWxlY3Rp
b24oc2VsZWN0aW9uKTsKIAotICAgICAgICBsZXQgbGF5ZXJJZCA9IHNlbGVjdGlvbiA/IHNlbGVj
dGlvbi51c2VyRGF0YS5sYXllcklkIDogbnVsbDsKKyAgICAgICAgbGV0IGxheWVySWQgPSBzZWxl
Y3Rpb24gPyBzZWxlY3Rpb24udXNlckRhdGEubGF5ZXIubGF5ZXJJZCA6IG51bGw7CiAgICAgICAg
IHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdJLkxheWVyczNEQ29udGVudFZpZXcuRXZl
bnQuU2VsZWN0ZWRMYXllckNoYW5nZWQsIHtsYXllcklkfSk7CiAgICAgfQogCkBAIC0yNzYsOCAr
MzAyLDM0IEBAIFdJLkxheWVyczNEQ29udGVudFZpZXcgPSBjbGFzcyBMYXllcnMzRENvbnRlbnRW
aWV3IGV4dGVuZHMgV0kuQ29udGVudFZpZXcKICAgICAgICAgaWYgKHRoaXMuX3NlbGVjdGVkTGF5
ZXJHcm91cCkKICAgICAgICAgICAgIHNldENvbG9yKFdJLkxheWVyczNEQ29udGVudFZpZXcuX3Nl
bGVjdGVkTGF5ZXJDb2xvcik7CiAgICAgfQorCisgICAgX2NlbnRlck9uU2VsZWN0aW9uKCkKKyAg
ICB7CisgICAgICAgIGlmICghdGhpcy5fc2VsZWN0ZWRMYXllckdyb3VwKQorICAgICAgICAgICAg
cmV0dXJuOworCisgICAgICAgIGxldCB7eCwgeSwgd2lkdGgsIGhlaWdodH0gPSB0aGlzLl9zZWxl
Y3RlZExheWVyR3JvdXAudXNlckRhdGEubGF5ZXIuYm91bmRzOworICAgICAgICB0aGlzLl9jb250
cm9scy50YXJnZXQuc2V0KHggKyB3aWR0aCAvIDIsIC15IC0gaGVpZ2h0IC8gMiwgMCk7CisgICAg
ICAgIHRoaXMuX2NhbWVyYS5wb3NpdGlvbi5zZXQoeCArIHdpZHRoIC8gMiwgLXkgLSBoZWlnaHQg
LyAyLCB0aGlzLl9zZWxlY3RlZExheWVyR3JvdXAucG9zaXRpb24ueiArIFdJLkxheWVyczNEQ29u
dGVudFZpZXcuX3pQYWRkaW5nIC8gMik7CisgICAgfQorCisgICAgX3Jlc2V0Q2FtZXJhKCkKKyAg
ICB7CisgICAgICAgIGxldCB7eCwgeSwgd2lkdGgsIGhlaWdodH0gPSB0aGlzLl9sYXllcnNbMF0u
Ym91bmRzOworICAgICAgICB0aGlzLl9jb250cm9scy50YXJnZXQuc2V0KHggKyB3aWR0aCAvIDIs
IC15IC0gaGVpZ2h0IC8gMiwgMCk7CisgICAgICAgIHRoaXMuX2NhbWVyYS5wb3NpdGlvbi5zZXQo
eCArIHdpZHRoIC8gMiwgLXkgLSBoZWlnaHQgLyAyLCB0aGlzLl9jb250cm9scy5tYXhEaXN0YW5j
ZSAtIFdJLkxheWVyczNEQ29udGVudFZpZXcuX3pQYWRkaW5nIC8gMik7CisgICAgfQorCisgICAg
X3Jlc3RyaWN0UGFuKCkKKyAgICB7CisgICAgICAgIGxldCBkZWx0YSA9IHRoaXMuX2JvdW5kaW5n
Qm94LmNsYW1wUG9pbnQodGhpcy5fY29udHJvbHMudGFyZ2V0KS5zZXRaKDApLnN1Yih0aGlzLl9j
b250cm9scy50YXJnZXQpOworICAgICAgICB0aGlzLl9jb250cm9scy50YXJnZXQuYWRkKGRlbHRh
KTsKKyAgICAgICAgdGhpcy5fY2FtZXJhLnBvc2l0aW9uLmFkZChkZWx0YSk7CisgICAgfQogfTsK
IAorV0kuTGF5ZXJzM0RDb250ZW50Vmlldy5felBhZGRpbmcgPSAzMDAwOworCiBXSS5MYXllcnMz
RENvbnRlbnRWaWV3Ll9sYXllckNvbG9yID0gewogICAgIGZpbGw6ICJoc2woNzYsIDQ5JSwgNzUl
KSIsCiAgICAgc3Ryb2tlOiAiaHNsKDc5LCA0NSUsIDUwJSkiCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>325637</attachid>
            <date>2017-11-01 14:58:39 -0700</date>
            <delta_ts>2017-11-01 15:47:17 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-178966-20171101145840.patch</filename>
            <type>text/plain</type>
            <size>13864</size>
            <attacher name="Ross Kirsling">ross.kirsling</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjI0MjkxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwppbmRleCAw
ZmQ2NzkxNjYzZTFiN2M2MzhiNzcyYjc2YTE2MTZkMzA4Y2UxYmRlLi5iZmY3NmJjOGEyNmY5YTNh
YTMwYjhlYmVmODhjNmU2NjY4ZTlmODRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0MyBAQAorMjAxNy0xMS0wMSAgUm9zcyBLaXJzbGluZyAgPHJvc3Mua2lyc2xpbmdAc29u
eS5jb20+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogSW1wcm92ZSBVWCBvZiBMYXllcnMgdGFi
IHZpc3VhbGl6YXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE3ODk2NgorCisgICAgICAgIFJldmlld2VkIGJ5IERldmluIFJvdXNzby4KKworICAg
ICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvTGF5ZXJzM0RDb250ZW50Vmlldy5qczoKKyAgICAg
ICAgKFdJLkxheWVyczNEQ29udGVudFZpZXcpOgorICAgICAgICAoV0kuTGF5ZXJzM0RDb250ZW50
Vmlldy5wcm90b3R5cGUuaW5pdGlhbExheW91dCk6CisgICAgICAgIChXSS5MYXllcnMzRENvbnRl
bnRWaWV3LnByb3RvdHlwZS5fY2FudmFzTW91c2VEb3duKToKKyAgICAgICAgKFdJLkxheWVyczNE
Q29udGVudFZpZXcucHJvdG90eXBlLl9jcmVhdGVMYXllckdyb3VwKTogUmVuYW1lZCBmcm9tIF9h
ZGRMYXllckdyb3VwLgorICAgICAgICAoV0kuTGF5ZXJzM0RDb250ZW50Vmlldy5wcm90b3R5cGUu
X3VwZGF0ZUxheWVyR3JvdXBQb3NpdGlvbik6IE1lcmdlZCBpbnRvIF91cGRhdGVMYXllcnMuCisg
ICAgICAgIFNldCB1cCB6b29tIGFuZCBwYW4uCisKKyAgICAgICAgKFdJLkxheWVyczNEQ29udGVu
dFZpZXcucHJvdG90eXBlLl9hbmltYXRlKToKKyAgICAgICAgKFdJLkxheWVyczNEQ29udGVudFZp
ZXcucHJvdG90eXBlLl9yZXN0cmljdFBhbik6CisgICAgICAgIFJlc3RyaWN0IHBhbiB0byBib3Vu
ZGluZyBib3ggb24gWFkgcGxhbmUuCisKKyAgICAgICAgKFdJLkxheWVyczNEQ29udGVudFZpZXcu
cHJvdG90eXBlLmxheW91dCk6CisgICAgICAgIChXSS5MYXllcnMzRENvbnRlbnRWaWV3LnByb3Rv
dHlwZS5fdXBkYXRlRG9jdW1lbnQpOgorICAgICAgICAoV0kuTGF5ZXJzM0RDb250ZW50Vmlldy5w
cm90b3R5cGUuX3Jlc2V0Q2FtZXJhKToKKyAgICAgICAgT24gbmV3IGRvY3VtZW50LCB0aHJvdyBv
dXQgYWxsIG9sZCBsYXllcnMgYW5kIGNlbnRlciB0aGUgY2FtZXJhIG9uIHRoZSBuZXcgZG9jdW1l
bnQgbGF5ZXIuCisKKyAgICAgICAgKFdJLkxheWVyczNEQ29udGVudFZpZXcucHJvdG90eXBlLnNl
bGVjdExheWVyQnlJZCk6CisgICAgICAgIChXSS5MYXllcnMzRENvbnRlbnRWaWV3LnByb3RvdHlw
ZS5fY2VudGVyT25TZWxlY3Rpb24pOgorICAgICAgICBSZWNlbnRlciB0aGUgY2FtZXJhIHdoZW4g
bGF5ZXIgZ3JvdXAgc2VsZWN0aW9uIGlzIHVwZGF0ZWQgcHJvZ3JhbW1hdGljYWxseS4KKworICAg
ICAgICAoV0kuTGF5ZXJzM0RDb250ZW50Vmlldy5wcm90b3R5cGUuX3VwZGF0ZUxheWVycyk6Cisg
ICAgICAgIChXSS5MYXllcnMzRENvbnRlbnRWaWV3LnByb3RvdHlwZS5fY3JlYXRlTGF5ZXJNZXNo
KToKKyAgICAgICAgRml4IHZpc3VhbCBhcnRpZmFjdCBkdWUgdG8gImRlcHRoV3JpdGUiIGZsYWcu
CisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL0xheWVyRGV0YWlsc1NpZGViYXJQYW5l
bC5qczoKKyAgICAgICAgKFdJLkxheWVyRGV0YWlsc1NpZGViYXJQYW5lbC5wcm90b3R5cGUuc2Vs
ZWN0Tm9kZUJ5TGF5ZXJJZCk6CisgICAgICAgIFN1cHByZXNzIHNlbGVjdGlvbiB1cGRhdGUgZXZl
bnQgd2hlbiB0aGUgZGF0YSBncmlkIHNlbGVjdGlvbiBpcyB1cGRhdGVkIHByb2dyYW1tYXRpY2Fs
bHkuCisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL0RhdGFHcmlkTm9kZS5qczoKKyAg
ICAgICAgKFdJLkRhdGFHcmlkTm9kZS5wcm90b3R5cGUucmV2ZWFsQW5kU2VsZWN0KToKKyAgICAg
ICAgQWxsb3cgZm9yd2FyZGluZyBvZiBzZWxlY3QoKSdzIHBhcmFtZXRlci4KKwogMjAxNy0xMS0w
MSAgTmlraXRhIFZhc2lseWV2ICA8bnZhc2lseWV2QGFwcGxlLmNvbT4KIAogICAgICAgICBXZWIg
SW5zcGVjdG9yOiBTdHlsZXMgUmVkZXNpZ246IEhvdmVyaW5nIG92ZXIgYSBzZWxlY3RvciBzaG91
bGQgaGlnaGxpZ2h0IG1hdGNoaW5nIGVsZW1lbnRzIG9uIHRoZSBwYWdlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9EYXRhR3JpZE5vZGUuanMg
Yi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9EYXRhR3JpZE5vZGUu
anMKaW5kZXggOTI1NzY5ZDM4NGFiNTI4YTIyYjhjODhkNzBjM2U2NTQ2ODgwZmFjYS4uNDNjOGIz
M2QyNTA4OTRlZTNlYjI5Zjc1M2YxNDM0YjNlMjQ0MDRkYyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvRGF0YUdyaWROb2RlLmpzCisrKyBiL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0RhdGFHcmlkTm9kZS5qcwpA
QCAtNTY5LDEwICs1NjksMTAgQEAgV0kuRGF0YUdyaWROb2RlID0gY2xhc3MgRGF0YUdyaWROb2Rl
IGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgICAgICAgICB0aGlzLmRhdGFHcmlkLmRpc3BhdGNoRXZl
bnRUb0xpc3RlbmVycyhXSS5EYXRhR3JpZC5FdmVudC5TZWxlY3RlZE5vZGVDaGFuZ2VkLCB7b2xk
U2VsZWN0ZWROb2RlfSk7CiAgICAgfQogCi0gICAgcmV2ZWFsQW5kU2VsZWN0KCkKKyAgICByZXZl
YWxBbmRTZWxlY3Qoc3VwcHJlc3NTZWxlY3RlZEV2ZW50KQogICAgIHsKICAgICAgICAgdGhpcy5y
ZXZlYWwoKTsKLSAgICAgICAgdGhpcy5zZWxlY3QoKTsKKyAgICAgICAgdGhpcy5zZWxlY3Qoc3Vw
cHJlc3NTZWxlY3RlZEV2ZW50KTsKICAgICB9CiAKICAgICBkZXNlbGVjdChzdXBwcmVzc0Rlc2Vs
ZWN0ZWRFdmVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL1ZpZXdzL0xheWVyRGV0YWlsc1NpZGViYXJQYW5lbC5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0xheWVyRGV0YWlsc1NpZGViYXJQYW5lbC5qcwppbmRl
eCBjMWNlZWQ2MGIxYjQxZjhhMjNlMTc1YTAwOWRlYzZmNzQxZDc3ODE5Li44Zjc1ZTA3N2FiMGQy
YmQ1ZjkzMDBlMjljMzA4NzAwN2FjYTA1YTAxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9MYXllckRldGFpbHNTaWRlYmFyUGFuZWwuanMKKysr
IGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvTGF5ZXJEZXRhaWxz
U2lkZWJhclBhbmVsLmpzCkBAIC02NywxMCArNjcsMTEgQEAgV0kuTGF5ZXJEZXRhaWxzU2lkZWJh
clBhbmVsID0gY2xhc3MgTGF5ZXJEZXRhaWxzU2lkZWJhclBhbmVsIGV4dGVuZHMgV0kuRGV0YWls
c1MKICAgICAgICAgaWYgKG5vZGUgPT09IHRoaXMuX2RhdGFHcmlkLnNlbGVjdGVkTm9kZSkKICAg
ICAgICAgICAgIHJldHVybjsKIAorICAgICAgICBjb25zdCBzdXBwcmVzc0V2ZW50ID0gdHJ1ZTsK
ICAgICAgICAgaWYgKG5vZGUpCi0gICAgICAgICAgICBub2RlLnJldmVhbEFuZFNlbGVjdCgpOwor
ICAgICAgICAgICAgbm9kZS5yZXZlYWxBbmRTZWxlY3Qoc3VwcHJlc3NFdmVudCk7CiAgICAgICAg
IGVsc2UgaWYgKHRoaXMuX2RhdGFHcmlkLnNlbGVjdGVkTm9kZSkKLSAgICAgICAgICAgIHRoaXMu
X2RhdGFHcmlkLnNlbGVjdGVkTm9kZS5kZXNlbGVjdCgpOworICAgICAgICAgICAgdGhpcy5fZGF0
YUdyaWQuc2VsZWN0ZWROb2RlLmRlc2VsZWN0KHN1cHByZXNzRXZlbnQpOwogICAgIH0KIAogICAg
IC8vIFByaXZhdGUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL1ZpZXdzL0xheWVyczNEQ29udGVudFZpZXcuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9WaWV3cy9MYXllcnMzRENvbnRlbnRWaWV3LmpzCmluZGV4IGNkOTQ5YTgw
MzE3YmM5NzA0NDZkMjgyMzcyNWExZGIyZWFmYjJjNDguLjExZWE0YmJmZDRmMDI5MTU3NGZhZGNj
MjI1MjUzNTQ1NmM2YWUxNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL1ZpZXdzL0xheWVyczNEQ29udGVudFZpZXcuanMKKysrIGIvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvTGF5ZXJzM0RDb250ZW50Vmlldy5qcwpAQCAt
NDIsOSArNDIsMTEgQEAgV0kuTGF5ZXJzM0RDb250ZW50VmlldyA9IGNsYXNzIExheWVyczNEQ29u
dGVudFZpZXcgZXh0ZW5kcyBXSS5Db250ZW50VmlldwogICAgICAgICB0aGlzLl9jYW1lcmEgPSBu
dWxsOwogICAgICAgICB0aGlzLl9jb250cm9scyA9IG51bGw7CiAgICAgICAgIHRoaXMuX3NjZW5l
ID0gbnVsbDsKKyAgICAgICAgdGhpcy5fYm91bmRpbmdCb3ggPSBudWxsOwogICAgICAgICB0aGlz
Ll9yYXljYXN0ZXIgPSBudWxsOwogICAgICAgICB0aGlzLl9tb3VzZSA9IG51bGw7CiAgICAgICAg
IHRoaXMuX2FuaW1hdGlvbkZyYW1lUmVxdWVzdElkID0gbnVsbDsKKyAgICAgICAgdGhpcy5fZG9j
dW1lbnROb2RlID0gbnVsbDsKICAgICB9CiAKICAgICAvLyBQdWJsaWMKQEAgLTg2LDYgKzg4LDcg
QEAgV0kuTGF5ZXJzM0RDb250ZW50VmlldyA9IGNsYXNzIExheWVyczNEQ29udGVudFZpZXcgZXh0
ZW5kcyBXSS5Db250ZW50VmlldwogICAgIHsKICAgICAgICAgbGV0IGxheWVyR3JvdXAgPSB0aGlz
Ll9sYXllckdyb3Vwc0J5SWQuZ2V0KGxheWVySWQpOwogICAgICAgICB0aGlzLl91cGRhdGVMYXll
ckdyb3VwU2VsZWN0aW9uKGxheWVyR3JvdXApOworICAgICAgICB0aGlzLl9jZW50ZXJPblNlbGVj
dGlvbigpOwogICAgIH0KIAogICAgIC8vIFByb3RlY3RlZApAQCAtOTksMTggKzEwMiwxOSBAQCBX
SS5MYXllcnMzRENvbnRlbnRWaWV3ID0gY2xhc3MgTGF5ZXJzM0RDb250ZW50VmlldyBleHRlbmRz
IFdJLkNvbnRlbnRWaWV3CiAgICAgICAgIHRoaXMuX3JlbmRlcmVyLnNldFNpemUodGhpcy5lbGVt
ZW50Lm9mZnNldFdpZHRoLCB0aGlzLmVsZW1lbnQub2Zmc2V0SGVpZ2h0KTsKIAogICAgICAgICB0
aGlzLl9jYW1lcmEgPSBuZXcgVEhSRUUuUGVyc3BlY3RpdmVDYW1lcmEoNDUsIHRoaXMuZWxlbWVu
dC5vZmZzZXRXaWR0aCAvIHRoaXMuZWxlbWVudC5vZmZzZXRIZWlnaHQsIDEsIDEwMDAwMCk7Ci0g
ICAgICAgIHRoaXMuX2NhbWVyYS5wb3NpdGlvbi5zZXQoMCwgMCwgNDAwMCk7Ci0gICAgICAgIHRo
aXMuX2NhbWVyYS5sb29rQXQobmV3IFRIUkVFLlZlY3RvcjMoMCwgMCwgMCkpOwogCiAgICAgICAg
IHRoaXMuX2NvbnRyb2xzID0gbmV3IFRIUkVFLk9yYml0Q29udHJvbHModGhpcy5fY2FtZXJhLCB0
aGlzLl9yZW5kZXJlci5kb21FbGVtZW50KTsKICAgICAgICAgdGhpcy5fY29udHJvbHMuZW5hYmxl
RGFtcGluZyA9IHRydWU7Ci0gICAgICAgIHRoaXMuX2NvbnRyb2xzLmVuYWJsZVpvb20gPSBmYWxz
ZTsKLSAgICAgICAgdGhpcy5fY29udHJvbHMuZW5hYmxlUGFuID0gZmFsc2U7CisgICAgICAgIHRo
aXMuX2NvbnRyb2xzLmVuYWJsZUtleXMgPSBmYWxzZTsKKyAgICAgICAgdGhpcy5fY29udHJvbHMu
em9vbVNwZWVkID0gMC41OworICAgICAgICB0aGlzLl9jb250cm9scy5taW5EaXN0YW5jZSA9IDEw
MDA7CisgICAgICAgIHRoaXMuX2NvbnRyb2xzLnJvdGF0ZVNwZWVkID0gMC41OwogICAgICAgICB0
aGlzLl9jb250cm9scy5taW5BemltdXRoQW5nbGUgPSAtTWF0aC5QSSAvIDI7CiAgICAgICAgIHRo
aXMuX2NvbnRyb2xzLm1heEF6aW11dGhBbmdsZSA9IE1hdGguUEkgLyAyOworICAgICAgICB0aGlz
Ll9yZW5kZXJlci5kb21FbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImNvbnRleHRtZW51IiwgKGV2
ZW50KSA9PiB7IGV2ZW50LnN0b3BQcm9wYWdhdGlvbigpOyB9KTsKIAogICAgICAgICB0aGlzLl9z
Y2VuZSA9IG5ldyBUSFJFRS5TY2VuZTsKLSAgICAgICAgdGhpcy5fc2NlbmUucG9zaXRpb24uc2V0
KC10aGlzLmVsZW1lbnQub2Zmc2V0V2lkdGggLyAyLCB0aGlzLmVsZW1lbnQub2Zmc2V0SGVpZ2h0
IC8gMiwgMCk7CisgICAgICAgIHRoaXMuX2JvdW5kaW5nQm94ID0gbmV3IFRIUkVFLkJveDM7CiAK
ICAgICAgICAgdGhpcy5fcmF5Y2FzdGVyID0gbmV3IFRIUkVFLlJheWNhc3RlcjsKICAgICAgICAg
dGhpcy5fbW91c2UgPSBuZXcgVEhSRUUuVmVjdG9yMjsKQEAgLTEyNyw5ICsxMzEsMTIgQEAgV0ku
TGF5ZXJzM0RDb250ZW50VmlldyA9IGNsYXNzIExheWVyczNEQ29udGVudFZpZXcgZXh0ZW5kcyBX
SS5Db250ZW50VmlldwogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIFdJLmRvbVRyZWVN
YW5hZ2VyLnJlcXVlc3REb2N1bWVudCgobm9kZSkgPT4geworICAgICAgICAgICAgbGV0IGRvY3Vt
ZW50V2FzVXBkYXRlZCA9IHRoaXMuX3VwZGF0ZURvY3VtZW50KG5vZGUpOworCiAgICAgICAgICAg
ICBXSS5sYXllclRyZWVNYW5hZ2VyLmxheWVyc0Zvck5vZGUobm9kZSwgKGxheWVycykgPT4gewog
ICAgICAgICAgICAgICAgIHRoaXMuX3VwZGF0ZUxheWVycyhsYXllcnMpOwotICAgICAgICAgICAg
ICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdJLkNvbnRlbnRWaWV3LkV2ZW50LlNl
bGVjdGlvblBhdGhDb21wb25lbnRzRGlkQ2hhbmdlKTsKKyAgICAgICAgICAgICAgICBpZiAoZG9j
dW1lbnRXYXNVcGRhdGVkKQorICAgICAgICAgICAgICAgICAgICB0aGlzLl9yZXNldENhbWVyYSgp
OwogICAgICAgICAgICAgfSk7CiAgICAgICAgIH0pOwogICAgIH0KQEAgLTE2MCw2ICsxNjcsNyBA
QCBXSS5MYXllcnMzRENvbnRlbnRWaWV3ID0gY2xhc3MgTGF5ZXJzM0RDb250ZW50VmlldyBleHRl
bmRzIFdJLkNvbnRlbnRWaWV3CiAgICAgX2FuaW1hdGUoKQogICAgIHsKICAgICAgICAgdGhpcy5f
Y29udHJvbHMudXBkYXRlKCk7CisgICAgICAgIHRoaXMuX3Jlc3RyaWN0UGFuKCk7CiAgICAgICAg
IHRoaXMuX3JlbmRlcmVyLnJlbmRlcih0aGlzLl9zY2VuZSwgdGhpcy5fY2FtZXJhKTsKICAgICAg
ICAgdGhpcy5fYW5pbWF0aW9uRnJhbWVSZXF1ZXN0SWQgPSByZXF1ZXN0QW5pbWF0aW9uRnJhbWUo
KCkgPT4geyB0aGlzLl9hbmltYXRlKCk7IH0pOwogICAgIH0KQEAgLTE3MCwxMSArMTc4LDI1IEBA
IFdJLkxheWVyczNEQ29udGVudFZpZXcgPSBjbGFzcyBMYXllcnMzRENvbnRlbnRWaWV3IGV4dGVu
ZHMgV0kuQ29udGVudFZpZXcKICAgICAgICAgdGhpcy5fYW5pbWF0aW9uRnJhbWVSZXF1ZXN0SWQg
PSBudWxsOwogICAgIH0KIAorICAgIF91cGRhdGVEb2N1bWVudChkb2N1bWVudE5vZGUpCisgICAg
eworICAgICAgICBpZiAoZG9jdW1lbnROb2RlID09PSB0aGlzLl9kb2N1bWVudE5vZGUpCisgICAg
ICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgdGhpcy5fc2NlbmUuY2hpbGRyZW4ubGVu
Z3RoID0gMDsKKyAgICAgICAgdGhpcy5fbGF5ZXJHcm91cHNCeUlkLmNsZWFyKCk7CisgICAgICAg
IHRoaXMuX2xheWVycy5sZW5ndGggPSAwOworCisgICAgICAgIHRoaXMuX2RvY3VtZW50Tm9kZSA9
IGRvY3VtZW50Tm9kZTsKKworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9CisKICAgICBfdXBk
YXRlTGF5ZXJzKG5ld0xheWVycykKICAgICB7CiAgICAgICAgIC8vIEZJWE1FOiBUaGlzIHNob3Vs
ZCBiZSBtYWRlIGludG8gdGhlIGJhc2ljIHVzYWdlIG9mIHRoZSBtYW5hZ2VyLCBpZiBub3QgdGhl
IGFnZW50IGl0c2VsZi4KICAgICAgICAgLy8gICAgICAgIEF0IHRoYXQgcG9pbnQsIHdlIGNhbiBy
ZW1vdmUgdGhpcyBkdXBsaWNhdGlvbiBmcm9tIHRoZSB2aXN1YWxpemF0aW9uIGFuZCBzaWRlYmFy
LgotICAgICAgICBsZXQge3JlbW92YWxzLCBhZGRpdGlvbnMsIHByZXNlcnZlZH0gPSBXSS5sYXll
clRyZWVNYW5hZ2VyLmxheWVyVHJlZU11dGF0aW9ucyh0aGlzLl9sYXllcnMsIG5ld0xheWVycyk7
CisgICAgICAgIGxldCB7cmVtb3ZhbHMsIGFkZGl0aW9uc30gPSBXSS5sYXllclRyZWVNYW5hZ2Vy
LmxheWVyVHJlZU11dGF0aW9ucyh0aGlzLl9sYXllcnMsIG5ld0xheWVycyk7CiAKICAgICAgICAg
Zm9yIChsZXQgbGF5ZXIgb2YgcmVtb3ZhbHMpIHsKICAgICAgICAgICAgIGxldCBsYXllckdyb3Vw
ID0gdGhpcy5fbGF5ZXJHcm91cHNCeUlkLmdldChsYXllci5sYXllcklkKTsKQEAgLTE4Miw1NyAr
MjA0LDU5IEBAIFdJLkxheWVyczNEQ29udGVudFZpZXcgPSBjbGFzcyBMYXllcnMzRENvbnRlbnRW
aWV3IGV4dGVuZHMgV0kuQ29udGVudFZpZXcKICAgICAgICAgICAgIHRoaXMuX2xheWVyR3JvdXBz
QnlJZC5kZWxldGUobGF5ZXIubGF5ZXJJZCk7CiAgICAgICAgIH0KIAotICAgICAgICBpZiAodGhp
cy5fc2VsZWN0ZWRMYXllckdyb3VwICYmICF0aGlzLl9sYXllckdyb3Vwc0J5SWQuZ2V0KHRoaXMu
X3NlbGVjdGVkTGF5ZXJHcm91cC51c2VyRGF0YS5sYXllcklkKSkKKyAgICAgICAgaWYgKHRoaXMu
X3NlbGVjdGVkTGF5ZXJHcm91cCAmJiAhdGhpcy5fbGF5ZXJHcm91cHNCeUlkLmdldCh0aGlzLl9z
ZWxlY3RlZExheWVyR3JvdXAudXNlckRhdGEubGF5ZXIubGF5ZXJJZCkpCiAgICAgICAgICAgICB0
aGlzLnNlbGVjdGVkTGF5ZXJHcm91cCA9IG51bGw7CiAKLSAgICAgICAgYWRkaXRpb25zLmZvckVh
Y2godGhpcy5fYWRkTGF5ZXJHcm91cCwgdGhpcyk7Ci0gICAgICAgIHByZXNlcnZlZC5mb3JFYWNo
KHRoaXMuX3VwZGF0ZUxheWVyR3JvdXBQb3NpdGlvbiwgdGhpcyk7Ci0KLSAgICAgICAgdGhpcy5f
bGF5ZXJzID0gbmV3TGF5ZXJzOwotICAgIH0KKyAgICAgICAgZm9yIChsZXQgbGF5ZXIgb2YgYWRk
aXRpb25zKSB7CisgICAgICAgICAgICBsZXQgbGF5ZXJHcm91cCA9IHRoaXMuX2NyZWF0ZUxheWVy
R3JvdXAobGF5ZXIpOworICAgICAgICAgICAgdGhpcy5fbGF5ZXJHcm91cHNCeUlkLnNldChsYXll
ci5sYXllcklkLCBsYXllckdyb3VwKTsKKyAgICAgICAgICAgIHRoaXMuX3NjZW5lLmFkZChsYXll
ckdyb3VwKTsKKyAgICAgICAgfQogCi0gICAgX2FkZExheWVyR3JvdXAobGF5ZXIsIGluZGV4KQot
ICAgIHsKLSAgICAgICAgbGV0IGxheWVyR3JvdXAgPSBuZXcgVEhSRUUuR3JvdXA7Ci0gICAgICAg
IGxheWVyR3JvdXAudXNlckRhdGEubGF5ZXJJZCA9IGxheWVyLmxheWVySWQ7Ci0gICAgICAgIGxh
eWVyR3JvdXAuYWRkKHRoaXMuX2NyZWF0ZUxheWVyTWVzaChsYXllci5ib3VuZHMpKTsKLSAgICAg
ICAgbGF5ZXJHcm91cC5hZGQodGhpcy5fY3JlYXRlTGF5ZXJNZXNoKGxheWVyLmNvbXBvc2l0ZWRC
b3VuZHMsIHRydWUpKTsKKyAgICAgICAgLy8gRklYTUU6IFVwZGF0ZSB0aGUgYmFja2VuZCB0byBw
cm92aWRlIGEgbGl0ZXJhbCAibGF5ZXIgdHJlZSIgc28gd2UgY2FuIGRlY2lkZSB6LWluZGljZXMg
bGVzcyBuYWl2ZWx5LgorICAgICAgICBjb25zdCB6SW50ZXJ2YWwgPSAyNTsKKyAgICAgICAgbmV3
TGF5ZXJzLmZvckVhY2goKGxheWVyLCBpbmRleCkgPT4geworICAgICAgICAgICAgbGV0IGxheWVy
R3JvdXAgPSB0aGlzLl9sYXllckdyb3Vwc0J5SWQuZ2V0KGxheWVyLmxheWVySWQpOworICAgICAg
ICAgICAgbGF5ZXJHcm91cC5wb3NpdGlvbi5zZXQobGF5ZXIuYm91bmRzLngsIC1sYXllci5ib3Vu
ZHMueSwgaW5kZXggKiB6SW50ZXJ2YWwpOworICAgICAgICB9KTsKIAotICAgICAgICB0aGlzLl9s
YXllckdyb3Vwc0J5SWQuc2V0KGxheWVyLmxheWVySWQsIGxheWVyR3JvdXApOwotICAgICAgICB0
aGlzLl91cGRhdGVMYXllckdyb3VwUG9zaXRpb24obGF5ZXIsIGluZGV4KTsKKyAgICAgICAgdGhp
cy5fYm91bmRpbmdCb3guc2V0RnJvbU9iamVjdCh0aGlzLl9zY2VuZSk7CisgICAgICAgIHRoaXMu
X2NvbnRyb2xzLm1heERpc3RhbmNlID0gdGhpcy5fYm91bmRpbmdCb3gubWF4LnogKyBXSS5MYXll
cnMzRENvbnRlbnRWaWV3Ll96UGFkZGluZzsKIAotICAgICAgICB0aGlzLl9zY2VuZS5hZGQobGF5
ZXJHcm91cCk7CisgICAgICAgIHRoaXMuX2xheWVycyA9IG5ld0xheWVyczsKKyAgICAgICAgdGhp
cy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV0kuQ29udGVudFZpZXcuRXZlbnQuU2VsZWN0aW9u
UGF0aENvbXBvbmVudHNEaWRDaGFuZ2UpOwogICAgIH0KIAotICAgIF91cGRhdGVMYXllckdyb3Vw
UG9zaXRpb24obGF5ZXIsIGluZGV4KSB7Ci0gICAgICAgIGxldCBsYXllckdyb3VwID0gdGhpcy5f
bGF5ZXJHcm91cHNCeUlkLmdldChsYXllci5sYXllcklkKTsKLSAgICAgICAgY29uc29sZS5hc3Nl
cnQobGF5ZXJHcm91cCk7Ci0KLSAgICAgICAgY29uc3QgekludGVydmFsID0gMjU7Ci0gICAgICAg
IGxheWVyR3JvdXAucG9zaXRpb24uc2V0KGxheWVyLmJvdW5kcy54LCAtbGF5ZXIuYm91bmRzLnks
IGluZGV4ICogekludGVydmFsKTsKKyAgICBfY3JlYXRlTGF5ZXJHcm91cChsYXllcikgeworICAg
ICAgICBsZXQgbGF5ZXJHcm91cCA9IG5ldyBUSFJFRS5Hcm91cDsKKyAgICAgICAgbGF5ZXJHcm91
cC51c2VyRGF0YS5sYXllciA9IGxheWVyOworICAgICAgICBsYXllckdyb3VwLmFkZCh0aGlzLl9j
cmVhdGVMYXllck1lc2gobGF5ZXIuYm91bmRzKSwgdGhpcy5fY3JlYXRlTGF5ZXJNZXNoKGxheWVy
LmNvbXBvc2l0ZWRCb3VuZHMsIHRydWUpKTsKKyAgICAgICAgcmV0dXJuIGxheWVyR3JvdXA7CiAg
ICAgfQogCiAgICAgX2NyZWF0ZUxheWVyTWVzaCh7d2lkdGgsIGhlaWdodH0sIGlzT3V0bGluZSA9
IGZhbHNlKQogICAgIHsKICAgICAgICAgbGV0IGdlb21ldHJ5ID0gbmV3IFRIUkVFLkdlb21ldHJ5
OwotICAgICAgICBnZW9tZXRyeS52ZXJ0aWNlcy5wdXNoKG5ldyBUSFJFRS5WZWN0b3IzKDAsICAg
ICAwLCAgICAgICAwKSk7Ci0gICAgICAgIGdlb21ldHJ5LnZlcnRpY2VzLnB1c2gobmV3IFRIUkVF
LlZlY3RvcjMod2lkdGgsIDAsICAgICAgIDApKTsKLSAgICAgICAgZ2VvbWV0cnkudmVydGljZXMu
cHVzaChuZXcgVEhSRUUuVmVjdG9yMyh3aWR0aCwgLWhlaWdodCwgMCkpOwotICAgICAgICBnZW9t
ZXRyeS52ZXJ0aWNlcy5wdXNoKG5ldyBUSFJFRS5WZWN0b3IzKDAsICAgICAtaGVpZ2h0LCAwKSk7
CisgICAgICAgIGdlb21ldHJ5LnZlcnRpY2VzLnB1c2goCisgICAgICAgICAgICBuZXcgVEhSRUUu
VmVjdG9yMygwLCAgICAgMCwgICAgICAgMCksCisgICAgICAgICAgICBuZXcgVEhSRUUuVmVjdG9y
MygwLCAgICAgLWhlaWdodCwgMCksCisgICAgICAgICAgICBuZXcgVEhSRUUuVmVjdG9yMyh3aWR0
aCwgLWhlaWdodCwgMCksCisgICAgICAgICAgICBuZXcgVEhSRUUuVmVjdG9yMyh3aWR0aCwgMCwg
ICAgICAgMCksCisgICAgICAgICk7CiAKICAgICAgICAgaWYgKGlzT3V0bGluZSkgewogICAgICAg
ICAgICAgbGV0IG1hdGVyaWFsID0gbmV3IFRIUkVFLkxpbmVCYXNpY01hdGVyaWFsKHtjb2xvcjog
V0kuTGF5ZXJzM0RDb250ZW50Vmlldy5fbGF5ZXJDb2xvci5zdHJva2V9KTsKICAgICAgICAgICAg
IHJldHVybiBuZXcgVEhSRUUuTGluZUxvb3AoZ2VvbWV0cnksIG1hdGVyaWFsKTsKICAgICAgICAg
fQogCi0gICAgICAgIGdlb21ldHJ5LmZhY2VzLnB1c2gobmV3IFRIUkVFLkZhY2UzKDAsIDEsIDMp
KTsKLSAgICAgICAgZ2VvbWV0cnkuZmFjZXMucHVzaChuZXcgVEhSRUUuRmFjZTMoMSwgMiwgMykp
OworICAgICAgICBnZW9tZXRyeS5mYWNlcy5wdXNoKG5ldyBUSFJFRS5GYWNlMygwLCAxLCAzKSwg
bmV3IFRIUkVFLkZhY2UzKDEsIDIsIDMpKTsKIAogICAgICAgICBsZXQgbWF0ZXJpYWwgPSBuZXcg
VEhSRUUuTWVzaEJhc2ljTWF0ZXJpYWwoewogICAgICAgICAgICAgY29sb3I6IFdJLkxheWVyczNE
Q29udGVudFZpZXcuX2xheWVyQ29sb3IuZmlsbCwKICAgICAgICAgICAgIHRyYW5zcGFyZW50OiB0
cnVlLAogICAgICAgICAgICAgb3BhY2l0eTogMC40LAogICAgICAgICAgICAgc2lkZTogVEhSRUUu
RG91YmxlU2lkZSwKKyAgICAgICAgICAgIGRlcHRoV3JpdGU6IGZhbHNlLAogICAgICAgICB9KTsK
IAogICAgICAgICByZXR1cm4gbmV3IFRIUkVFLk1lc2goZ2VvbWV0cnksIG1hdGVyaWFsKTsKQEAg
LTI1Niw3ICsyODAsNyBAQCBXSS5MYXllcnMzRENvbnRlbnRWaWV3ID0gY2xhc3MgTGF5ZXJzM0RD
b250ZW50VmlldyBleHRlbmRzIFdJLkNvbnRlbnRWaWV3CiAKICAgICAgICAgdGhpcy5fdXBkYXRl
TGF5ZXJHcm91cFNlbGVjdGlvbihzZWxlY3Rpb24pOwogCi0gICAgICAgIGxldCBsYXllcklkID0g
c2VsZWN0aW9uID8gc2VsZWN0aW9uLnVzZXJEYXRhLmxheWVySWQgOiBudWxsOworICAgICAgICBs
ZXQgbGF5ZXJJZCA9IHNlbGVjdGlvbiA/IHNlbGVjdGlvbi51c2VyRGF0YS5sYXllci5sYXllcklk
IDogbnVsbDsKICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV0kuTGF5ZXJz
M0RDb250ZW50Vmlldy5FdmVudC5TZWxlY3RlZExheWVyQ2hhbmdlZCwge2xheWVySWR9KTsKICAg
ICB9CiAKQEAgLTI3Niw4ICszMDAsMzQgQEAgV0kuTGF5ZXJzM0RDb250ZW50VmlldyA9IGNsYXNz
IExheWVyczNEQ29udGVudFZpZXcgZXh0ZW5kcyBXSS5Db250ZW50VmlldwogICAgICAgICBpZiAo
dGhpcy5fc2VsZWN0ZWRMYXllckdyb3VwKQogICAgICAgICAgICAgc2V0Q29sb3IoV0kuTGF5ZXJz
M0RDb250ZW50Vmlldy5fc2VsZWN0ZWRMYXllckNvbG9yKTsKICAgICB9CisKKyAgICBfY2VudGVy
T25TZWxlY3Rpb24oKQorICAgIHsKKyAgICAgICAgaWYgKCF0aGlzLl9zZWxlY3RlZExheWVyR3Jv
dXApCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgbGV0IHt4LCB5LCB3aWR0aCwgaGVp
Z2h0fSA9IHRoaXMuX3NlbGVjdGVkTGF5ZXJHcm91cC51c2VyRGF0YS5sYXllci5ib3VuZHM7Cisg
ICAgICAgIHRoaXMuX2NvbnRyb2xzLnRhcmdldC5zZXQoeCArICh3aWR0aCAvIDIpLCAteSAtICho
ZWlnaHQgLyAyKSwgMCk7CisgICAgICAgIHRoaXMuX2NhbWVyYS5wb3NpdGlvbi5zZXQoeCArICh3
aWR0aCAvIDIpLCAteSAtIChoZWlnaHQgLyAyKSwgdGhpcy5fc2VsZWN0ZWRMYXllckdyb3VwLnBv
c2l0aW9uLnogKyBXSS5MYXllcnMzRENvbnRlbnRWaWV3Ll96UGFkZGluZyAvIDIpOworICAgIH0K
KworICAgIF9yZXNldENhbWVyYSgpCisgICAgeworICAgICAgICBsZXQge3gsIHksIHdpZHRoLCBo
ZWlnaHR9ID0gdGhpcy5fbGF5ZXJzWzBdLmJvdW5kczsKKyAgICAgICAgdGhpcy5fY29udHJvbHMu
dGFyZ2V0LnNldCh4ICsgKHdpZHRoIC8gMiksIC15IC0gKGhlaWdodCAvIDIpLCAwKTsKKyAgICAg
ICAgdGhpcy5fY2FtZXJhLnBvc2l0aW9uLnNldCh4ICsgKHdpZHRoIC8gMiksIC15IC0gKGhlaWdo
dCAvIDIpLCB0aGlzLl9jb250cm9scy5tYXhEaXN0YW5jZSAtIFdJLkxheWVyczNEQ29udGVudFZp
ZXcuX3pQYWRkaW5nIC8gMik7CisgICAgfQorCisgICAgX3Jlc3RyaWN0UGFuKCkKKyAgICB7Cisg
ICAgICAgIGxldCBkZWx0YSA9IHRoaXMuX2JvdW5kaW5nQm94LmNsYW1wUG9pbnQodGhpcy5fY29u
dHJvbHMudGFyZ2V0KS5zZXRaKDApLnN1Yih0aGlzLl9jb250cm9scy50YXJnZXQpOworICAgICAg
ICB0aGlzLl9jb250cm9scy50YXJnZXQuYWRkKGRlbHRhKTsKKyAgICAgICAgdGhpcy5fY2FtZXJh
LnBvc2l0aW9uLmFkZChkZWx0YSk7CisgICAgfQogfTsKIAorV0kuTGF5ZXJzM0RDb250ZW50Vmll
dy5felBhZGRpbmcgPSAzMDAwOworCiBXSS5MYXllcnMzRENvbnRlbnRWaWV3Ll9sYXllckNvbG9y
ID0gewogICAgIGZpbGw6ICJoc2woNzYsIDQ5JSwgNzUlKSIsCiAgICAgc3Ryb2tlOiAiaHNsKDc5
LCA0NSUsIDUwJSkiCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>