<?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>178136</bug_id>
          
          <creation_ts>2017-10-10 10:46:56 -0700</creation_ts>
          <short_desc>Web Inspector: Make 3D objects selectable in Layers visualization</short_desc>
          <delta_ts>2017-12-28 12:38:02 -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="Nobody">webkit-unassigned</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>don.olmstead</cc>
    
    <cc>hi</cc>
    
    <cc>inspector-bugzilla-changes</cc>
    
    <cc>philliphuncho</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1358797</commentid>
    <comment_count>0</comment_count>
    <who name="Ross Kirsling">ross.kirsling</who>
    <bug_when>2017-10-10 10:46:56 -0700</bug_when>
    <thetext>Implement selection behavior for the 3D objects in the Layers tab visualization.
This selection state should be properly synced with the data grid in the sidebar.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1358805</commentid>
    <comment_count>1</comment_count>
      <attachid>323322</attachid>
    <who name="Ross Kirsling">ross.kirsling</who>
    <bug_when>2017-10-10 11:03:00 -0700</bug_when>
    <thetext>Created attachment 323322
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1358851</commentid>
    <comment_count>2</comment_count>
      <attachid>323322</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2017-10-10 13:00:06 -0700</bug_when>
    <thetext>Comment on attachment 323322
Patch

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

&gt; Source/WebInspectorUI/UserInterface/Views/Layers3DContentView.js:44
&gt; +        this._fillColor = &quot;hsl(76, 49%, 75%)&quot;;
&gt; +        this._strokeColor = &quot;hsl(79, 45%, 50%)&quot;;
&gt; +        this._selectedFillColor = &quot;hsl(208, 66%, 79%)&quot;;
&gt; +        this._selectedStrokeColor = &quot;hsl(202, 57%, 68%)&quot;;

Since these are shared by all Layers3DContentView, you could make them static (put them at the end of the file).

    WI.Layers3DContentView._fillColor = &quot;hsl(76, 49%, 75%)&quot;;
    WI.Layers3DContentView._strokeColor = &quot;hsl(79, 45%, 50%)&quot;;
    WI.Layers3DContentView._selectedFillColor = &quot;hsl(208, 66%, 79%)&quot;;
    WI.Layers3DContentView._selectedStrokeColor = &quot;hsl(202, 57%, 68%)&quot;;

&gt; Source/WebInspectorUI/UserInterface/Views/Layers3DContentView.js:92
&gt; +        let layerGroup = this._layerGroupsById.get(layerId);

Is it ever possible for a layerId to be given that isn&apos;t valid?  Maybe add a console.assert?

&gt; Source/WebInspectorUI/UserInterface/Views/Layers3DContentView.js:181
&gt; +    _updateLayers(previousLayers)

This is very weird.  I would expect an &quot;update&quot; function to pass in the new value, and internally do it&apos;s own updating.

    _updateLayers(newLayers)
    {
        let {removals, additions, preserved} = WI.layerTreeManager.layerTreeMutations(this._layers, newLayers);

        ...

        this._layers = newLayers;
    }

&gt; Source/WebInspectorUI/UserInterface/Views/Layers3DContentView.js:190
&gt; +            if (!layerGroup)
&gt; +                return;

Will this ever get hit?  I think it should be considered an &quot;error&quot; if we try to remove something that we didn&apos;t previously have, as we shouldn&apos;t have missed any layers.

&gt; Source/WebInspectorUI/UserInterface/Views/Layers3DContentView.js:200
&gt; +        additions.forEach(this._addLayerGroup, this);
&gt; +        preserved.forEach(this._updateLayerGroupPosition, this);

Nice!

&gt; Source/WebInspectorUI/UserInterface/Views/Layers3DContentView.js:219
&gt; +        if (!layerGroup)
&gt; +            return;

Ditto (189).

&gt; Source/WebInspectorUI/UserInterface/Views/Layers3DContentView.js:257
&gt; +        let recursive = true;

Style: should be const or inlined.

&gt; Source/WebInspectorUI/UserInterface/Views/Layers3DContentView.js:274
&gt; +            let [plane, outline] = this._selectedLayerGroup.children;
&gt; +            plane.material.color.set(this._fillColor);
&gt; +            outline.material.color.set(this._strokeColor);

NIT: you could make this into a local function if you want.

    let changeLayerColors = (fillColor, strokeColor) =&gt; {
        let [plane, outline] = this._selectedLayerGroup.children;
        plane.material.color.set(fillColor);
        outline.material.color.set(strokeColor);
    };

    changeLayerColors(WI.Layers3DContentView._fillColor, WI.Layers3DContentView._strokeColor);

&gt; Source/WebInspectorUI/UserInterface/Views/LayersTabContentView.js:88
&gt; +    SelectedLayerChanged: Symbol(&quot;selected-layer-changed&quot;)

This event is dispatched by LayersDetailsSidebarPanel and Layers3DContentView.  It shouldn&apos;t be an event on LayersTabContentView, and each of the two dispatchers should instead dispatch their own event.  Also, we typically don&apos;t use Symbol for event listeners.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1358881</commentid>
    <comment_count>3</comment_count>
    <who name="Ross Kirsling">ross.kirsling</who>
    <bug_when>2017-10-10 13:49:00 -0700</bug_when>
    <thetext>(In reply to Devin Rousso from comment #2)
&gt; &gt; Source/WebInspectorUI/UserInterface/Views/Layers3DContentView.js:92
&gt; &gt; +        let layerGroup = this._layerGroupsById.get(layerId);
&gt; 
&gt; Is it ever possible for a layerId to be given that isn&apos;t valid?  Maybe add a
&gt; console.assert?

Map#get returns undefined for *anything* not found so layerGroup is always either a THREE.Group or undefined.

I originally had
`let layerGroup = layerId ? this._layerGroupsById.get(layerId) : null;`
here but removed it because it adds nothing functionality-wise. I can put that back if you think it&apos;s more readable.

&gt; &gt; Source/WebInspectorUI/UserInterface/Views/Layers3DContentView.js:181
&gt; &gt; +    _updateLayers(previousLayers)
&gt; 
&gt; This is very weird.  I would expect an &quot;update&quot; function to pass in the new
&gt; value, and internally do it&apos;s own updating.
&gt; 
&gt;     _updateLayers(newLayers)
&gt;     {
&gt;         let {removals, additions, preserved} =
&gt; WI.layerTreeManager.layerTreeMutations(this._layers, newLayers);
&gt; 
&gt;         ...
&gt; 
&gt;         this._layers = newLayers;
&gt;     }

This approach was based on existing code in the sidebar. I can update both.

&gt; &gt; Source/WebInspectorUI/UserInterface/Views/Layers3DContentView.js:190
&gt; &gt; +            if (!layerGroup)
&gt; &gt; +                return;
&gt; 
&gt; Will this ever get hit?  I think it should be considered an &quot;error&quot; if we
&gt; try to remove something that we didn&apos;t previously have, as we shouldn&apos;t have
&gt; missed any layers.
&gt;
&gt; &gt; Source/WebInspectorUI/UserInterface/Views/Layers3DContentView.js:219
&gt; &gt; +        if (!layerGroup)
&gt; &gt; +            return;
&gt; 
&gt; Ditto (189).

Good call. This is defensive coding based on the type of Map#get and comes from the analogous code in the sidebar, but I suppose it would be good to call an error an error here. I can update both.

&gt; &gt; Source/WebInspectorUI/UserInterface/Views/LayersTabContentView.js:88
&gt; &gt; +    SelectedLayerChanged: Symbol(&quot;selected-layer-changed&quot;)
&gt; 
&gt; This event is dispatched by LayersDetailsSidebarPanel and
&gt; Layers3DContentView.  It shouldn&apos;t be an event on LayersTabContentView, and
&gt; each of the two dispatchers should instead dispatch their own event.  Also,
&gt; we typically don&apos;t use Symbol for event listeners.

I had it that way first but couldn&apos;t decide which was more idiomatic for WI. As for the Symbol, I saw it both ways and thought the Symbol approach might be the newer--doesn&apos;t matter to me otherwise.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1358949</commentid>
    <comment_count>4</comment_count>
      <attachid>323355</attachid>
    <who name="Ross Kirsling">ross.kirsling</who>
    <bug_when>2017-10-10 15:51:47 -0700</bug_when>
    <thetext>Created attachment 323355
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1359263</commentid>
    <comment_count>5</comment_count>
      <attachid>323355</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2017-10-11 11:16:25 -0700</bug_when>
    <thetext>Comment on attachment 323355
Patch

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

r=me, with a few remaining NITs.

&gt; Source/WebInspectorUI/UserInterface/Views/Layers3DContentView.js:117
&gt; +        this._renderer.domElement.addEventListener(&quot;mousedown&quot;, this._canvasMouseDown.bind(this), false);

NIT: the `false` is unnecessary.

&gt; Source/WebInspectorUI/UserInterface/Views/Layers3DContentView.js:281
&gt; +WI.Layers3DContentView._unselectedColor = {

The word &quot;unselect&quot; is very weird.  Maybe just use &quot;_color&quot; and &quot;_selectedColor&quot;?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1359347</commentid>
    <comment_count>6</comment_count>
      <attachid>323450</attachid>
    <who name="Ross Kirsling">ross.kirsling</who>
    <bug_when>2017-10-11 12:58:14 -0700</bug_when>
    <thetext>Created attachment 323450
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1359376</commentid>
    <comment_count>7</comment_count>
      <attachid>323450</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-10-11 13:54:59 -0700</bug_when>
    <thetext>Comment on attachment 323450
Patch

Clearing flags on attachment: 323450

Committed r223209: &lt;https://trac.webkit.org/changeset/223209&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1359377</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-10-11 13:55:01 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1359378</commentid>
    <comment_count>9</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-10-11 13:55:53 -0700</bug_when>
    <thetext>&lt;rdar://problem/34941009&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>323322</attachid>
            <date>2017-10-10 11:03:00 -0700</date>
            <delta_ts>2017-10-10 15:51:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-178136-20171010110259.patch</filename>
            <type>text/plain</type>
            <size>16235</size>
            <attacher name="Ross Kirsling">ross.kirsling</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIyOTQ4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwppbmRleCA2
ODlkZTBkZjYwMjczMTM5ZTc3ZTg4MWQ3ZDYwODVmNGU5ODU5YzU5Li4yMTBmM2M2NzIyYjQwN2E3
ODAwMTMyYzU1ZDQ1MTQxYzEyYTFiOTQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0OSBAQAorMjAxNy0xMC0xMCAgUm9zcyBLaXJzbGluZyAgPHJvc3Mua2lyc2xpbmdAc29u
eS5jb20+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogTWFrZSAzRCBvYmplY3RzIHNlbGVjdGFi
bGUgaW4gTGF5ZXJzIHZpc3VhbGl6YXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE3ODEzNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9MYXllcnMzRENvbnRlbnRW
aWV3LmpzOgorICAgICAgICAoV0kuTGF5ZXJzM0RDb250ZW50Vmlldyk6CisgICAgICAgIChXSS5M
YXllcnMzRENvbnRlbnRWaWV3LnByb3RvdHlwZS5pbml0aWFsTGF5b3V0KToKKyAgICAgICAgKFdJ
LkxheWVyczNEQ29udGVudFZpZXcucHJvdG90eXBlLl9jYW52YXNNb3VzZURvd24pOgorICAgICAg
ICAoV0kuTGF5ZXJzM0RDb250ZW50Vmlldy5wcm90b3R5cGUuX3VwZGF0ZUxheWVyR3JvdXBTZWxl
Y3Rpb24pOgorICAgICAgICBJbXBsZW1lbnQgc2VsZWN0aW9uIG9mIDNEIGxheWVyIG9iamVjdHMu
CisgICAgICAgIAorICAgICAgICAoV0kuTGF5ZXJzM0RDb250ZW50Vmlldy5wcm90b3R5cGUuX2Fk
ZExheWVyR3JvdXApOgorICAgICAgICAoV0kuTGF5ZXJzM0RDb250ZW50Vmlldy5wcm90b3R5cGUu
X3VwZGF0ZUxheWVyR3JvdXBQb3NpdGlvbik6CisgICAgICAgIChXSS5MYXllcnMzRENvbnRlbnRW
aWV3LnByb3RvdHlwZS5fY3JlYXRlTGF5ZXJNZXNoKToKKyAgICAgICAgUmVmYWN0b3IgLS0gb25l
IGdyb3VwIHBlciBsYXllciAodmlzaWJsZSBwbGFuZSBhbmQgY29tcG9zaXRlZCBvdXRsaW5lKSwg
bm90IGdyb3VwcyBieSBzaGFwZS4KKworICAgICAgICAoV0kuTGF5ZXJzM0RDb250ZW50Vmlldy5w
cm90b3R5cGUubGF5b3V0KToKKyAgICAgICAgKFdJLkxheWVyczNEQ29udGVudFZpZXcucHJvdG90
eXBlLl91cGRhdGVMYXllcnMpOgorICAgICAgICAoV0kuTGF5ZXJzM0RDb250ZW50Vmlldy5wcm90
b3R5cGUuX2NsZWFyTGF5ZXJzKTogRGVsZXRlZC4KKyAgICAgICAgKFdJLkxheWVyczNEQ29udGVu
dFZpZXcucHJvdG90eXBlLl9hZGRMYXllcik6IERlbGV0ZWQuCisgICAgICAgIERvbid0IGRlc3Ry
b3kgYWxsIDNEIG9iamVjdHMgb24gZXZlcnkgTGF5ZXJUcmVlRGlkQ2hhbmdlOyBtYWtlIHVzZSBv
ZiBsYXllclRyZWVNdXRhdGlvbnMuCisgICAgICAgIChOb3Qgb25seSBhIHBlcmZvcm1hbmNlIGlt
cHJvdmVtZW50LCBidXQgYWxzbyBuZWNlc3NhcnkgdG8gcHJvcGVybHkgcHJlc2VydmUgaGlnaGxp
Z2h0aW5nLikgCisgICAgICAgIAorICAgICAgICAoV0kuTGF5ZXJzM0RDb250ZW50Vmlldy5wcm90
b3R5cGUuc2VsZWN0TGF5ZXJCeUlkKToKKyAgICAgICAgQWxsb3cgc2VsZWN0aW9uIHRvIGJlIHVw
ZGF0ZWQgZnJvbSB0aGUgb3V0c2lkZS4KKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3Mv
TGF5ZXJEZXRhaWxzU2lkZWJhclBhbmVsLmpzOgorICAgICAgICAoV0kuTGF5ZXJEZXRhaWxzU2lk
ZWJhclBhbmVsLnByb3RvdHlwZS5zZWxlY3ROb2RlQnlMYXllcklkKToKKyAgICAgICAgKFdJLkxh
eWVyRGV0YWlsc1NpZGViYXJQYW5lbC5wcm90b3R5cGUuX2J1aWxkRGF0YUdyaWQpOgorICAgICAg
ICAoV0kuTGF5ZXJEZXRhaWxzU2lkZWJhclBhbmVsLnByb3RvdHlwZS5fZGF0YUdyaWRTZWxlY3Rl
ZE5vZGVDaGFuZ2VkKToKKyAgICAgICAgKFdJLkxheWVyRGV0YWlsc1NpZGViYXJQYW5lbC5wcm90
b3R5cGUuX3VwZGF0ZURpc3BsYXlXaXRoTGF5ZXJzKToKKyAgICAgICAgQWxsb3cgc2VsZWN0aW9u
IHRvIGJlIHVwZGF0ZWQgZnJvbSB0aGUgb3V0c2lkZS4KKworICAgICAgICAoV0kuTGF5ZXJEZXRh
aWxzU2lkZWJhclBhbmVsLnByb3RvdHlwZS5fdXBkYXRlRGF0YUdyaWQpOgorICAgICAgICAoV0ku
TGF5ZXJEZXRhaWxzU2lkZWJhclBhbmVsLnByb3RvdHlwZS5fZGF0YUdyaWROb2RlRm9yTGF5ZXIp
OiBEZWxldGVkLgorICAgICAgICBJbmxpbmUgc3VwZXJmbHVvdXMgbWV0aG9kLgorICAgICAgICAK
KyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL0xheWVyc1RhYkNvbnRlbnRWaWV3LmpzOgor
ICAgICAgICAoV0kuTGF5ZXJzVGFiQ29udGVudFZpZXcpOgorICAgICAgICAoV0kuTGF5ZXJzVGFi
Q29udGVudFZpZXcucHJvdG90eXBlLl9kZXRhaWxzU2lkZWJhclNlbGVjdGVkTGF5ZXJDaGFuZ2Vk
KToKKyAgICAgICAgKFdJLkxheWVyc1RhYkNvbnRlbnRWaWV3LnByb3RvdHlwZS5fY29udGVudFZp
ZXdTZWxlY3RlZExheWVyQ2hhbmdlZCk6CisgICAgICAgIE9yY2hlc3RyYXRlIGNvbW11bmljYXRp
b24gb2Ygc2VsZWN0aW9uIHN0YXRlIGJldHdlZW4gdmlzdWFsaXphdGlvbiBhbmQgc2lkZWJhci4K
KwogMjAxNy0xMC0wNCAgSm9zZXBoIFBlY29yYXJvICA8cGVjb3Jhcm9AYXBwbGUuY29tPgogCiAg
ICAgICAgIFdlYiBJbnNwZWN0b3I6IFdoZW4gc2Nyb2xsZWQgTmV0d29yayBUYWJsZSByZWR1Y2Vz
IHRoZSBudW1iZXIgb2Ygcm93cyBpdCBtYXkgYXBwZWFyIGFzIGJsYW5rCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9MYXllckRldGFpbHNTaWRl
YmFyUGFuZWwuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9M
YXllckRldGFpbHNTaWRlYmFyUGFuZWwuanMKaW5kZXggZDA3NWU1ZTM4NzgwZTQ1OWUzOWM3MmU4
YWU2M2FkZjQ2M2IxZDVhOC4uOWIzZTMwN2FjNzMzNTIwY2M0NmJiYzZlOTYzNjA1ODI0YmQzMjU3
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3Mv
TGF5ZXJEZXRhaWxzU2lkZWJhclBhbmVsLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL1ZpZXdzL0xheWVyRGV0YWlsc1NpZGViYXJQYW5lbC5qcwpAQCAtNjEsNiAr
NjEsMTggQEAgV0kuTGF5ZXJEZXRhaWxzU2lkZWJhclBhbmVsID0gY2xhc3MgTGF5ZXJEZXRhaWxz
U2lkZWJhclBhbmVsIGV4dGVuZHMgV0kuRGV0YWlsc1MKICAgICAgICAgdGhpcy5fcG9wb3ZlciA9
IG51bGw7CiAgICAgfQogCisgICAgc2VsZWN0Tm9kZUJ5TGF5ZXJJZChsYXllcklkKQorICAgIHsK
KyAgICAgICAgbGV0IG5vZGUgPSB0aGlzLl9kYXRhR3JpZE5vZGVzQnlMYXllcklkLmdldChsYXll
cklkKTsKKyAgICAgICAgaWYgKG5vZGUgPT09IHRoaXMuX2RhdGFHcmlkLnNlbGVjdGVkTm9kZSkK
KyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBpZiAobm9kZSkKKyAgICAgICAgICAgIG5v
ZGUucmV2ZWFsQW5kU2VsZWN0KCk7CisgICAgICAgIGVsc2UgaWYgKHRoaXMuX2RhdGFHcmlkLnNl
bGVjdGVkTm9kZSkKKyAgICAgICAgICAgIHRoaXMuX2RhdGFHcmlkLnNlbGVjdGVkTm9kZS5kZXNl
bGVjdCgpOworICAgIH0KKwogICAgIC8vIFByaXZhdGUKIAogICAgIF9idWlsZERhdGFHcmlkKCkK
QEAgLTk1LDYgKzEwNywxMSBAQCBXSS5MYXllckRldGFpbHNTaWRlYmFyUGFuZWwgPSBjbGFzcyBM
YXllckRldGFpbHNTaWRlYmFyUGFuZWwgZXh0ZW5kcyBXSS5EZXRhaWxzUwogICAgICAgICB0aGlz
Ll9kYXRhR3JpZC5lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlbW92ZSIsIHRoaXMuX2Rh
dGFHcmlkTW91c2VNb3ZlLmJpbmQodGhpcyksIGZhbHNlKTsKICAgICAgICAgdGhpcy5fZGF0YUdy
aWQuZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJtb3VzZWxlYXZlIiwgdGhpcy5fZGF0YUdyaWRN
b3VzZUxlYXZlLmJpbmQodGhpcyksIGZhbHNlKTsKIAorICAgICAgICAvLyBGSVhNRTogV2UgY2Fu
J3QgdXNlIHZpcnR1YWxpemVkIHJvd3MgdW50aWwgRGF0YUdyaWQgaXMgYWJsZSB0byBzY3JvbGwg
dGhlbSBwcm9ncmFtbWF0aWNhbGx5LgorICAgICAgICAvLyAgICAgICAgU2VlIFRyZWVFbGVtZW50
I3JldmVhbCAtPiBUcmVlT3V0bGluZSN1cGRhdGVWaXJ0dWFsaXplZEVsZW1lbnRzIGZvciBhbiBh
bmFsb2d5LgorICAgICAgICB0aGlzLl9kYXRhR3JpZC5pbmxpbmUgPSB0cnVlOworICAgICAgICB0
aGlzLl9kYXRhR3JpZC5lbGVtZW50LmNsYXNzTGlzdC5yZW1vdmUoImlubGluZSIpOworCiAgICAg
ICAgIHRoaXMuY29udGVudFZpZXcuYWRkU3Vidmlldyh0aGlzLl9kYXRhR3JpZCk7CiAgICAgfQog
CkBAIC0xMjUsNiArMTQyLDkgQEAgV0kuTGF5ZXJEZXRhaWxzU2lkZWJhclBhbmVsID0gY2xhc3Mg
TGF5ZXJEZXRhaWxzU2lkZWJhclBhbmVsIGV4dGVuZHMgV0kuRGV0YWlsc1MKIAogICAgIF9kYXRh
R3JpZFNlbGVjdGVkTm9kZUNoYW5nZWQoKQogICAgIHsKKyAgICAgICAgbGV0IGxheWVySWQgPSB0
aGlzLl9kYXRhR3JpZC5zZWxlY3RlZE5vZGUgPyB0aGlzLl9kYXRhR3JpZC5zZWxlY3RlZE5vZGUu
bGF5ZXIubGF5ZXJJZCA6IG51bGw7CisgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVu
ZXJzKFdJLkxheWVyc1RhYkNvbnRlbnRWaWV3LkV2ZW50LlNlbGVjdGVkTGF5ZXJDaGFuZ2VkLCB7
bGF5ZXJJZH0pOworCiAgICAgICAgIHRoaXMuX3Nob3dQb3BvdmVyRm9yU2VsZWN0ZWROb2RlKCk7
CiAgICAgfQogCkBAIC0xNjEsNiArMTgxLDkgQEAgV0kuTGF5ZXJEZXRhaWxzU2lkZWJhclBhbmVs
ID0gY2xhc3MgTGF5ZXJEZXRhaWxzU2lkZWJhclBhbmVsIGV4dGVuZHMgV0kuRGV0YWlsc1MKIAog
ICAgIF91cGRhdGVEaXNwbGF5V2l0aExheWVycyhuZXdMYXllcnMpCiAgICAgeworICAgICAgICBp
ZiAodGhpcy5fcG9wb3ZlcikKKyAgICAgICAgICAgIHRoaXMuX3BvcG92ZXIuZGlzbWlzcygpOwor
CiAgICAgICAgIGxldCBwcmV2aW91c0xheWVycyA9IHRoaXMuX2xheWVyczsKICAgICAgICAgdGhp
cy5fbGF5ZXJzID0gbmV3TGF5ZXJzOwogCkBAIC0xODUsNyArMjA4LDkgQEAgV0kuTGF5ZXJEZXRh
aWxzU2lkZWJhclBhbmVsID0gY2xhc3MgTGF5ZXJEZXRhaWxzU2lkZWJhclBhbmVsIGV4dGVuZHMg
V0kuRGV0YWlsc1MKICAgICAgICAgfSk7CiAKICAgICAgICAgbXV0YXRpb25zLmFkZGl0aW9ucy5m
b3JFYWNoKChsYXllcikgPT4gewotICAgICAgICAgICAgbGV0IG5vZGUgPSB0aGlzLl9kYXRhR3Jp
ZE5vZGVGb3JMYXllcihsYXllcik7CisgICAgICAgICAgICBsZXQgbm9kZSA9IG5ldyBXSS5MYXll
clRyZWVEYXRhR3JpZE5vZGUobGF5ZXIpOworICAgICAgICAgICAgdGhpcy5fZGF0YUdyaWROb2Rl
c0J5TGF5ZXJJZC5zZXQobGF5ZXIubGF5ZXJJZCwgbm9kZSk7CisKICAgICAgICAgICAgIHRoaXMu
X2RhdGFHcmlkLmFwcGVuZENoaWxkKG5vZGUpOwogICAgICAgICB9KTsKIApAQCAtMjAwLDE0ICsy
MjUsNiBAQCBXSS5MYXllckRldGFpbHNTaWRlYmFyUGFuZWwgPSBjbGFzcyBMYXllckRldGFpbHNT
aWRlYmFyUGFuZWwgZXh0ZW5kcyBXSS5EZXRhaWxzUwogICAgICAgICB0aGlzLl9zb3J0RGF0YUdy
aWQoKTsKICAgICB9CiAKLSAgICBfZGF0YUdyaWROb2RlRm9yTGF5ZXIobGF5ZXIpCi0gICAgewot
ICAgICAgICBsZXQgbm9kZSA9IG5ldyBXSS5MYXllclRyZWVEYXRhR3JpZE5vZGUobGF5ZXIpOwot
ICAgICAgICB0aGlzLl9kYXRhR3JpZE5vZGVzQnlMYXllcklkLnNldChsYXllci5sYXllcklkLCBu
b2RlKTsKLQotICAgICAgICByZXR1cm4gbm9kZTsKLSAgICB9Ci0KICAgICBfdXBkYXRlQm90dG9t
QmFyKCkKICAgICB7CiAgICAgICAgIGlmICghdGhpcy5fYm90dG9tQmFyKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvTGF5ZXJzM0RDb250ZW50
Vmlldy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0xheWVy
czNEQ29udGVudFZpZXcuanMKaW5kZXggNmNlOWI0NDgwY2UwODc5OTI2NjkwNzMyZTEzMDhhMGNm
ZTgzYjk5OC4uMjdkMjQxNGEyMzdkMjA3NDMyN2M3OTZhZDNkYjAxYjMzYzk2YWJjMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvTGF5ZXJzM0RD
b250ZW50Vmlldy5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9W
aWV3cy9MYXllcnMzRENvbnRlbnRWaWV3LmpzCkBAIC0zNCwxMyArMzQsMjEgQEAgV0kuTGF5ZXJz
M0RDb250ZW50VmlldyA9IGNsYXNzIExheWVyczNEQ29udGVudFZpZXcgZXh0ZW5kcyBXSS5Db250
ZW50VmlldwogICAgICAgICBXSS5sYXllclRyZWVNYW5hZ2VyLmFkZEV2ZW50TGlzdGVuZXIoV0ku
TGF5ZXJUcmVlTWFuYWdlci5FdmVudC5MYXllclRyZWVEaWRDaGFuZ2UsIHRoaXMuX2xheWVyVHJl
ZURpZENoYW5nZSwgdGhpcyk7CiAKICAgICAgICAgdGhpcy5fbGF5ZXJzID0gW107CisgICAgICAg
IHRoaXMuX2xheWVyR3JvdXBzQnlJZCA9IG5ldyBNYXA7CisgICAgICAgIHRoaXMuX3NlbGVjdGVk
TGF5ZXJHcm91cCA9IG51bGw7CiAgICAgICAgIHRoaXMuX2xheWVyc0NoYW5nZWRXaGlsZUhpZGRl
biA9IGZhbHNlOworCisgICAgICAgIHRoaXMuX2ZpbGxDb2xvciA9ICJoc2woNzYsIDQ5JSwgNzUl
KSI7CisgICAgICAgIHRoaXMuX3N0cm9rZUNvbG9yID0gImhzbCg3OSwgNDUlLCA1MCUpIjsKKyAg
ICAgICAgdGhpcy5fc2VsZWN0ZWRGaWxsQ29sb3IgPSAiaHNsKDIwOCwgNjYlLCA3OSUpIjsKKyAg
ICAgICAgdGhpcy5fc2VsZWN0ZWRTdHJva2VDb2xvciA9ICJoc2woMjAyLCA1NyUsIDY4JSkiOwor
CiAgICAgICAgIHRoaXMuX3JlbmRlcmVyID0gbnVsbDsKICAgICAgICAgdGhpcy5fY2FtZXJhID0g
bnVsbDsKICAgICAgICAgdGhpcy5fY29udHJvbHMgPSBudWxsOwotICAgICAgICB0aGlzLl9ib3Vu
ZHNHcm91cCA9IG51bGw7Ci0gICAgICAgIHRoaXMuX2NvbXBvc2l0ZWRCb3VuZHNHcm91cCA9IG51
bGw7CiAgICAgICAgIHRoaXMuX3NjZW5lID0gbnVsbDsKKyAgICAgICAgdGhpcy5fcmF5Y2FzdGVy
ID0gbnVsbDsKKyAgICAgICAgdGhpcy5fbW91c2UgPSBudWxsOwogICAgICAgICB0aGlzLl9hbmlt
YXRpb25GcmFtZVJlcXVlc3RJZCA9IG51bGw7CiAgICAgfQogCkBAIC03OSw2ICs4NywxMiBAQCBX
SS5MYXllcnMzRENvbnRlbnRWaWV3ID0gY2xhc3MgTGF5ZXJzM0RDb250ZW50VmlldyBleHRlbmRz
IFdJLkNvbnRlbnRWaWV3CiAgICAgICAgIHN1cGVyLmNsb3NlZCgpOwogICAgIH0KIAorICAgIHNl
bGVjdExheWVyQnlJZChsYXllcklkKQorICAgIHsKKyAgICAgICAgbGV0IGxheWVyR3JvdXAgPSB0
aGlzLl9sYXllckdyb3Vwc0J5SWQuZ2V0KGxheWVySWQpOworICAgICAgICB0aGlzLl91cGRhdGVM
YXllckdyb3VwU2VsZWN0aW9uKGxheWVyR3JvdXApOworICAgIH0KKwogICAgIC8vIFByb3RlY3Rl
ZAogCiAgICAgaW5pdGlhbExheW91dCgpCkBAIC0xMDAsMTMgKzExNCwxMiBAQCBXSS5MYXllcnMz
RENvbnRlbnRWaWV3ID0gY2xhc3MgTGF5ZXJzM0RDb250ZW50VmlldyBleHRlbmRzIFdJLkNvbnRl
bnRWaWV3CiAgICAgICAgIHRoaXMuX2NvbnRyb2xzLm1pbkF6aW11dGhBbmdsZSA9IC1NYXRoLlBJ
IC8gMjsKICAgICAgICAgdGhpcy5fY29udHJvbHMubWF4QXppbXV0aEFuZ2xlID0gTWF0aC5QSSAv
IDI7CiAKLSAgICAgICAgdGhpcy5fYm91bmRzR3JvdXAgPSBuZXcgVEhSRUUuR3JvdXAoKTsKLSAg
ICAgICAgdGhpcy5fY29tcG9zaXRlZEJvdW5kc0dyb3VwID0gbmV3IFRIUkVFLkdyb3VwKCk7Ci0K
LSAgICAgICAgdGhpcy5fc2NlbmUgPSBuZXcgVEhSRUUuU2NlbmUoKTsKKyAgICAgICAgdGhpcy5f
c2NlbmUgPSBuZXcgVEhSRUUuU2NlbmU7CiAgICAgICAgIHRoaXMuX3NjZW5lLnBvc2l0aW9uLnNl
dCgtdGhpcy5lbGVtZW50Lm9mZnNldFdpZHRoIC8gMiwgdGhpcy5lbGVtZW50Lm9mZnNldEhlaWdo
dCAvIDIsIDApOwotICAgICAgICB0aGlzLl9zY2VuZS5hZGQodGhpcy5fYm91bmRzR3JvdXApOwot
ICAgICAgICB0aGlzLl9zY2VuZS5hZGQodGhpcy5fY29tcG9zaXRlZEJvdW5kc0dyb3VwKTsKKwor
ICAgICAgICB0aGlzLl9yYXljYXN0ZXIgPSBuZXcgVEhSRUUuUmF5Y2FzdGVyOworICAgICAgICB0
aGlzLl9tb3VzZSA9IG5ldyBUSFJFRS5WZWN0b3IyOworICAgICAgICB0aGlzLl9yZW5kZXJlci5k
b21FbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlZG93biIsIHRoaXMuX2NhbnZhc01vdXNl
RG93bi5iaW5kKHRoaXMpLCBmYWxzZSk7CiAKICAgICAgICAgdGhpcy5lbGVtZW50LmFwcGVuZENo
aWxkKHRoaXMuX3JlbmRlcmVyLmRvbUVsZW1lbnQpOwogCkBAIC0xMjAsMTEgKzEzMywxMCBAQCBX
SS5MYXllcnMzRENvbnRlbnRWaWV3ID0gY2xhc3MgTGF5ZXJzM0RDb250ZW50VmlldyBleHRlbmRz
IFdJLkNvbnRlbnRWaWV3CiAKICAgICAgICAgV0kuZG9tVHJlZU1hbmFnZXIucmVxdWVzdERvY3Vt
ZW50KChub2RlKSA9PiB7CiAgICAgICAgICAgICBXSS5sYXllclRyZWVNYW5hZ2VyLmxheWVyc0Zv
ck5vZGUobm9kZSwgKGxheWVyRm9yTm9kZSwgY2hpbGRMYXllcnMpID0+IHsKLSAgICAgICAgICAg
ICAgICB0aGlzLl9jbGVhckxheWVycygpOwotICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAw
OyBpIDwgY2hpbGRMYXllcnMubGVuZ3RoOyBpKyspCi0gICAgICAgICAgICAgICAgICAgIHRoaXMu
X2FkZExheWVyKGNoaWxkTGF5ZXJzW2ldLCBpKTsKLQorICAgICAgICAgICAgICAgIGxldCBwcmV2
aW91c0xheWVycyA9IHRoaXMuX2xheWVyczsKICAgICAgICAgICAgICAgICB0aGlzLl9sYXllcnMg
PSBjaGlsZExheWVyczsKKworICAgICAgICAgICAgICAgIHRoaXMuX3VwZGF0ZUxheWVycyhwcmV2
aW91c0xheWVycyk7CiAgICAgICAgICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5l
cnMoV0kuQ29udGVudFZpZXcuRXZlbnQuU2VsZWN0aW9uUGF0aENvbXBvbmVudHNEaWRDaGFuZ2Up
OwogICAgICAgICAgICAgfSk7CiAgICAgICAgIH0pOwpAQCAtMTY2LDMwICsxNzgsNjAgQEAgV0ku
TGF5ZXJzM0RDb250ZW50VmlldyA9IGNsYXNzIExheWVyczNEQ29udGVudFZpZXcgZXh0ZW5kcyBX
SS5Db250ZW50VmlldwogICAgICAgICB0aGlzLl9hbmltYXRpb25GcmFtZVJlcXVlc3RJZCA9IG51
bGw7CiAgICAgfQogCi0gICAgX2NsZWFyTGF5ZXJzKCkKKyAgICBfdXBkYXRlTGF5ZXJzKHByZXZp
b3VzTGF5ZXJzKQogICAgIHsKLSAgICAgICAgdGhpcy5fYm91bmRzR3JvdXAuY2hpbGRyZW4ubGVu
Z3RoID0gMDsKLSAgICAgICAgdGhpcy5fY29tcG9zaXRlZEJvdW5kc0dyb3VwLmNoaWxkcmVuLmxl
bmd0aCA9IDA7CisgICAgICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBiZSBtYWRlIGludG8gdGhl
IGJhc2ljIHVzYWdlIG9mIHRoZSBtYW5hZ2VyLCBpZiBub3QgdGhlIGFnZW50IGl0c2VsZi4KKyAg
ICAgICAgLy8gICAgICAgIEF0IHRoYXQgcG9pbnQsIHdlIGNhbiByZW1vdmUgdGhpcyBkdXBsaWNh
dGlvbiBmcm9tIHRoZSB2aXN1YWxpemF0aW9uIGFuZCBzaWRlYmFyLgorICAgICAgICBsZXQge3Jl
bW92YWxzLCBhZGRpdGlvbnMsIHByZXNlcnZlZH0gPSBXSS5sYXllclRyZWVNYW5hZ2VyLmxheWVy
VHJlZU11dGF0aW9ucyhwcmV2aW91c0xheWVycywgdGhpcy5fbGF5ZXJzKTsKKworICAgICAgICBm
b3IgKGxldCBsYXllciBvZiByZW1vdmFscykgeworICAgICAgICAgICAgbGV0IGxheWVyR3JvdXAg
PSB0aGlzLl9sYXllckdyb3Vwc0J5SWQuZ2V0KGxheWVyLmxheWVySWQpOworICAgICAgICAgICAg
aWYgKCFsYXllckdyb3VwKQorICAgICAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAgICAg
dGhpcy5fc2NlbmUucmVtb3ZlKGxheWVyR3JvdXApOworICAgICAgICAgICAgdGhpcy5fbGF5ZXJH
cm91cHNCeUlkLmRlbGV0ZShsYXllci5sYXllcklkKTsKKyAgICAgICAgfQorCisgICAgICAgIGlm
ICh0aGlzLl9zZWxlY3RlZExheWVyR3JvdXAgJiYgIXRoaXMuX2xheWVyR3JvdXBzQnlJZC5nZXQo
dGhpcy5fc2VsZWN0ZWRMYXllckdyb3VwLnVzZXJEYXRhLmxheWVySWQpKQorICAgICAgICAgICAg
dGhpcy5zZWxlY3RlZExheWVyR3JvdXAgPSBudWxsOworCisgICAgICAgIGFkZGl0aW9ucy5mb3JF
YWNoKHRoaXMuX2FkZExheWVyR3JvdXAsIHRoaXMpOworICAgICAgICBwcmVzZXJ2ZWQuZm9yRWFj
aCh0aGlzLl91cGRhdGVMYXllckdyb3VwUG9zaXRpb24sIHRoaXMpOwogICAgIH0KIAotICAgIF9h
ZGRMYXllcihsYXllciwgaW5kZXgpCisgICAgX2FkZExheWVyR3JvdXAobGF5ZXIsIGluZGV4KQog
ICAgIHsKLSAgICAgICAgdGhpcy5fYm91bmRzR3JvdXAuYWRkKHRoaXMuX2NyZWF0ZUxheWVyTWVz
aChsYXllci5ib3VuZHMsIGluZGV4KSk7Ci0gICAgICAgIHRoaXMuX2NvbXBvc2l0ZWRCb3VuZHNH
cm91cC5hZGQodGhpcy5fY3JlYXRlTGF5ZXJNZXNoKGxheWVyLmNvbXBvc2l0ZWRCb3VuZHMsIGlu
ZGV4LCB0cnVlKSk7CisgICAgICAgIGxldCBsYXllckdyb3VwID0gbmV3IFRIUkVFLkdyb3VwOwor
ICAgICAgICBsYXllckdyb3VwLnVzZXJEYXRhLmxheWVySWQgPSBsYXllci5sYXllcklkOworICAg
ICAgICBsYXllckdyb3VwLmFkZCh0aGlzLl9jcmVhdGVMYXllck1lc2gobGF5ZXIuYm91bmRzKSk7
CisgICAgICAgIGxheWVyR3JvdXAuYWRkKHRoaXMuX2NyZWF0ZUxheWVyTWVzaChsYXllci5jb21w
b3NpdGVkQm91bmRzLCB0cnVlKSk7CisKKyAgICAgICAgdGhpcy5fbGF5ZXJHcm91cHNCeUlkLnNl
dChsYXllci5sYXllcklkLCBsYXllckdyb3VwKTsKKyAgICAgICAgdGhpcy5fdXBkYXRlTGF5ZXJH
cm91cFBvc2l0aW9uKGxheWVyLCBpbmRleCk7CisKKyAgICAgICAgdGhpcy5fc2NlbmUuYWRkKGxh
eWVyR3JvdXApOwogICAgIH0KIAotICAgIF9jcmVhdGVMYXllck1lc2gocmVjdCwgaW5kZXgsIGlz
T3V0bGluZSA9IGZhbHNlKQotICAgIHsKKyAgICBfdXBkYXRlTGF5ZXJHcm91cFBvc2l0aW9uKGxh
eWVyLCBpbmRleCkgeworICAgICAgICBsZXQgbGF5ZXJHcm91cCA9IHRoaXMuX2xheWVyR3JvdXBz
QnlJZC5nZXQobGF5ZXIubGF5ZXJJZCk7CisgICAgICAgIGlmICghbGF5ZXJHcm91cCkKKyAgICAg
ICAgICAgIHJldHVybjsKKwogICAgICAgICBjb25zdCB6SW50ZXJ2YWwgPSAyNTsKKyAgICAgICAg
bGF5ZXJHcm91cC5wb3NpdGlvbi5zZXQobGF5ZXIuYm91bmRzLngsIC1sYXllci5ib3VuZHMueSwg
aW5kZXggKiB6SW50ZXJ2YWwpOworICAgIH0KIAotICAgICAgICBsZXQgZ2VvbWV0cnkgPSBuZXcg
VEhSRUUuR2VvbWV0cnkoKTsKLSAgICAgICAgZ2VvbWV0cnkudmVydGljZXMucHVzaChuZXcgVEhS
RUUuVmVjdG9yMyhyZWN0LngsICAgICAgICAgICAgICAtcmVjdC55LCAgICAgICAgICAgICAgIGlu
ZGV4ICogekludGVydmFsKSk7Ci0gICAgICAgIGdlb21ldHJ5LnZlcnRpY2VzLnB1c2gobmV3IFRI
UkVFLlZlY3RvcjMocmVjdC54ICsgcmVjdC53aWR0aCwgLXJlY3QueSwgICAgICAgICAgICAgICBp
bmRleCAqIHpJbnRlcnZhbCkpOwotICAgICAgICBnZW9tZXRyeS52ZXJ0aWNlcy5wdXNoKG5ldyBU
SFJFRS5WZWN0b3IzKHJlY3QueCArIHJlY3Qud2lkdGgsIC1yZWN0LnkgLSByZWN0LmhlaWdodCwg
aW5kZXggKiB6SW50ZXJ2YWwpKTsKLSAgICAgICAgZ2VvbWV0cnkudmVydGljZXMucHVzaChuZXcg
VEhSRUUuVmVjdG9yMyhyZWN0LngsICAgICAgICAgICAgICAtcmVjdC55IC0gcmVjdC5oZWlnaHQs
IGluZGV4ICogekludGVydmFsKSk7CisgICAgX2NyZWF0ZUxheWVyTWVzaCh7d2lkdGgsIGhlaWdo
dH0sIGlzT3V0bGluZSA9IGZhbHNlKQorICAgIHsKKyAgICAgICAgbGV0IGdlb21ldHJ5ID0gbmV3
IFRIUkVFLkdlb21ldHJ5OworICAgICAgICBnZW9tZXRyeS52ZXJ0aWNlcy5wdXNoKG5ldyBUSFJF
RS5WZWN0b3IzKDAsICAgICAwLCAgICAgICAwKSk7CisgICAgICAgIGdlb21ldHJ5LnZlcnRpY2Vz
LnB1c2gobmV3IFRIUkVFLlZlY3RvcjMod2lkdGgsIDAsICAgICAgIDApKTsKKyAgICAgICAgZ2Vv
bWV0cnkudmVydGljZXMucHVzaChuZXcgVEhSRUUuVmVjdG9yMyh3aWR0aCwgLWhlaWdodCwgMCkp
OworICAgICAgICBnZW9tZXRyeS52ZXJ0aWNlcy5wdXNoKG5ldyBUSFJFRS5WZWN0b3IzKDAsICAg
ICAtaGVpZ2h0LCAwKSk7CiAKICAgICAgICAgaWYgKGlzT3V0bGluZSkgewotICAgICAgICAgICAg
bGV0IG1hdGVyaWFsID0gbmV3IFRIUkVFLkxpbmVCYXNpY01hdGVyaWFsKHtjb2xvcjogImhzbCg3
OSwgNDUlLCA1MCUpIn0pOworICAgICAgICAgICAgbGV0IG1hdGVyaWFsID0gbmV3IFRIUkVFLkxp
bmVCYXNpY01hdGVyaWFsKHtjb2xvcjogdGhpcy5fc3Ryb2tlQ29sb3J9KTsKICAgICAgICAgICAg
IHJldHVybiBuZXcgVEhSRUUuTGluZUxvb3AoZ2VvbWV0cnksIG1hdGVyaWFsKTsKICAgICAgICAg
fQogCkBAIC0xOTcsNyArMjM5LDcgQEAgV0kuTGF5ZXJzM0RDb250ZW50VmlldyA9IGNsYXNzIExh
eWVyczNEQ29udGVudFZpZXcgZXh0ZW5kcyBXSS5Db250ZW50VmlldwogICAgICAgICBnZW9tZXRy
eS5mYWNlcy5wdXNoKG5ldyBUSFJFRS5GYWNlMygxLCAyLCAzKSk7CiAKICAgICAgICAgbGV0IG1h
dGVyaWFsID0gbmV3IFRIUkVFLk1lc2hCYXNpY01hdGVyaWFsKHsKLSAgICAgICAgICAgIGNvbG9y
OiAiaHNsKDc2LCA0OSUsIDc1JSkiLAorICAgICAgICAgICAgY29sb3I6IHRoaXMuX2ZpbGxDb2xv
ciwKICAgICAgICAgICAgIHRyYW5zcGFyZW50OiB0cnVlLAogICAgICAgICAgICAgb3BhY2l0eTog
MC40LAogICAgICAgICAgICAgc2lkZTogVEhSRUUuRG91YmxlU2lkZSwKQEAgLTIwNSw0ICsyNDcs
MzkgQEAgV0kuTGF5ZXJzM0RDb250ZW50VmlldyA9IGNsYXNzIExheWVyczNEQ29udGVudFZpZXcg
ZXh0ZW5kcyBXSS5Db250ZW50VmlldwogCiAgICAgICAgIHJldHVybiBuZXcgVEhSRUUuTWVzaChn
ZW9tZXRyeSwgbWF0ZXJpYWwpOwogICAgIH0KKworICAgIF9jYW52YXNNb3VzZURvd24oZXZlbnQp
CisgICAgeworICAgICAgICB0aGlzLl9tb3VzZS54ID0gKGV2ZW50Lm9mZnNldFggLyBldmVudC50
YXJnZXQud2lkdGgpICogMiAtIDE7CisgICAgICAgIHRoaXMuX21vdXNlLnkgPSAtKGV2ZW50Lm9m
ZnNldFkgLyBldmVudC50YXJnZXQuaGVpZ2h0KSAqIDIgKyAxOworICAgICAgICB0aGlzLl9yYXlj
YXN0ZXIuc2V0RnJvbUNhbWVyYSh0aGlzLl9tb3VzZSwgdGhpcy5fY2FtZXJhKTsKKworICAgICAg
ICBsZXQgcmVjdXJzaXZlID0gdHJ1ZTsKKyAgICAgICAgbGV0IGludGVyc2VjdHMgPSB0aGlzLl9y
YXljYXN0ZXIuaW50ZXJzZWN0T2JqZWN0cyh0aGlzLl9zY2VuZS5jaGlsZHJlbiwgcmVjdXJzaXZl
KTsKKyAgICAgICAgbGV0IHNlbGVjdGlvbiA9IGludGVyc2VjdHMubGVuZ3RoID8gaW50ZXJzZWN0
c1swXS5vYmplY3QucGFyZW50IDogbnVsbDsKKyAgICAgICAgaWYgKHNlbGVjdGlvbiAmJiBzZWxl
Y3Rpb24gPT09IHRoaXMuX3NlbGVjdGVkTGF5ZXJHcm91cCkKKyAgICAgICAgICAgIHJldHVybjsK
KworICAgICAgICB0aGlzLl91cGRhdGVMYXllckdyb3VwU2VsZWN0aW9uKHNlbGVjdGlvbik7CisK
KyAgICAgICAgbGV0IGxheWVySWQgPSBzZWxlY3Rpb24gPyBzZWxlY3Rpb24udXNlckRhdGEubGF5
ZXJJZCA6IG51bGw7CisgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdJLkxh
eWVyc1RhYkNvbnRlbnRWaWV3LkV2ZW50LlNlbGVjdGVkTGF5ZXJDaGFuZ2VkLCB7bGF5ZXJJZH0p
OworICAgIH0KKworICAgIF91cGRhdGVMYXllckdyb3VwU2VsZWN0aW9uKGxheWVyR3JvdXApCisg
ICAgeworICAgICAgICBpZiAodGhpcy5fc2VsZWN0ZWRMYXllckdyb3VwKSB7CisgICAgICAgICAg
ICBsZXQgW3BsYW5lLCBvdXRsaW5lXSA9IHRoaXMuX3NlbGVjdGVkTGF5ZXJHcm91cC5jaGlsZHJl
bjsKKyAgICAgICAgICAgIHBsYW5lLm1hdGVyaWFsLmNvbG9yLnNldCh0aGlzLl9maWxsQ29sb3Ip
OworICAgICAgICAgICAgb3V0bGluZS5tYXRlcmlhbC5jb2xvci5zZXQodGhpcy5fc3Ryb2tlQ29s
b3IpOworICAgICAgICB9CisKKyAgICAgICAgdGhpcy5fc2VsZWN0ZWRMYXllckdyb3VwID0gbGF5
ZXJHcm91cDsKKworICAgICAgICBpZiAodGhpcy5fc2VsZWN0ZWRMYXllckdyb3VwKSB7CisgICAg
ICAgICAgICBsZXQgW3BsYW5lLCBvdXRsaW5lXSA9IHRoaXMuX3NlbGVjdGVkTGF5ZXJHcm91cC5j
aGlsZHJlbjsKKyAgICAgICAgICAgIHBsYW5lLm1hdGVyaWFsLmNvbG9yLnNldCh0aGlzLl9zZWxl
Y3RlZEZpbGxDb2xvcik7CisgICAgICAgICAgICBvdXRsaW5lLm1hdGVyaWFsLmNvbG9yLnNldCh0
aGlzLl9zZWxlY3RlZFN0cm9rZUNvbG9yKTsKKyAgICAgICAgfQorICAgIH0KIH07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9MYXllcnNUYWJD
b250ZW50Vmlldy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdz
L0xheWVyc1RhYkNvbnRlbnRWaWV3LmpzCmluZGV4IGRmNmQ5ZTUyMjY4M2JmMTU3N2ZhNzczYmU0
MTNmZDAwMGIyZmU5ZDYuLmVjYjRmOTczNDhkZGVjNzk1YmU3MzM3NzA4MDAzNzU2NTIxYTFlYmQg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0xh
eWVyc1RhYkNvbnRlbnRWaWV3LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL1ZpZXdzL0xheWVyc1RhYkNvbnRlbnRWaWV3LmpzCkBAIC0zNSw3ICszNSwxMSBAQCBX
SS5MYXllcnNUYWJDb250ZW50VmlldyA9IGNsYXNzIExheWVyc1RhYkNvbnRlbnRWaWV3IGV4dGVu
ZHMgV0kuQ29udGVudEJyb3dzZXJUYQogICAgICAgICBjb25zdCBkaXNhYmxlQmFja0ZvcndhcmQg
PSB0cnVlOwogICAgICAgICBzdXBlcigibGF5ZXJzIiwgImxheWVycyIsIHRhYkJhckl0ZW0sIG5h
dmlnYXRpb25TaWRlYmFyUGFuZWxDb25zdHJ1Y3RvciwgZGV0YWlsc1NpZGViYXJQYW5lbENvbnN0
cnVjdG9ycywgZGlzYWJsZUJhY2tGb3J3YXJkKTsKIAorICAgICAgICB0aGlzLl9sYXllckRldGFp
bHNTaWRlYmFyUGFuZWwgPSB0aGlzLmRldGFpbHNTaWRlYmFyUGFuZWxzWzBdOworICAgICAgICB0
aGlzLl9sYXllckRldGFpbHNTaWRlYmFyUGFuZWwuYWRkRXZlbnRMaXN0ZW5lcihXSS5MYXllcnNU
YWJDb250ZW50Vmlldy5FdmVudC5TZWxlY3RlZExheWVyQ2hhbmdlZCwgdGhpcy5fZGV0YWlsc1Np
ZGViYXJTZWxlY3RlZExheWVyQ2hhbmdlZCwgdGhpcyk7CisKICAgICAgICAgdGhpcy5fbGF5ZXJz
M0RDb250ZW50VmlldyA9IG5ldyBXSS5MYXllcnMzRENvbnRlbnRWaWV3OworICAgICAgICB0aGlz
Ll9sYXllcnMzRENvbnRlbnRWaWV3LmFkZEV2ZW50TGlzdGVuZXIoV0kuTGF5ZXJzVGFiQ29udGVu
dFZpZXcuRXZlbnQuU2VsZWN0ZWRMYXllckNoYW5nZWQsIHRoaXMuX2NvbnRlbnRWaWV3U2VsZWN0
ZWRMYXllckNoYW5nZWQsIHRoaXMpOwogICAgIH0KIAogICAgIC8vIFN0YXRpYwpAQCAtNjQsNiAr
NjgsMjIgQEAgV0kuTGF5ZXJzVGFiQ29udGVudFZpZXcgPSBjbGFzcyBMYXllcnNUYWJDb250ZW50
VmlldyBleHRlbmRzIFdJLkNvbnRlbnRCcm93c2VyVGEKIAogICAgICAgICB0aGlzLmNvbnRlbnRC
cm93c2VyLnNob3dDb250ZW50Vmlldyh0aGlzLl9sYXllcnMzRENvbnRlbnRWaWV3KTsKICAgICB9
CisKKyAgICAvLyBQcml2YXRlCisKKyAgICBfZGV0YWlsc1NpZGViYXJTZWxlY3RlZExheWVyQ2hh
bmdlZChldmVudCkKKyAgICB7CisgICAgICAgIHRoaXMuX2xheWVyczNEQ29udGVudFZpZXcuc2Vs
ZWN0TGF5ZXJCeUlkKGV2ZW50LmRhdGEubGF5ZXJJZCk7CisgICAgfQorCisgICAgX2NvbnRlbnRW
aWV3U2VsZWN0ZWRMYXllckNoYW5nZWQoZXZlbnQpCisgICAgeworICAgICAgICB0aGlzLl9sYXll
ckRldGFpbHNTaWRlYmFyUGFuZWwuc2VsZWN0Tm9kZUJ5TGF5ZXJJZChldmVudC5kYXRhLmxheWVy
SWQpOworICAgIH0KIH07CiAKIFdJLkxheWVyc1RhYkNvbnRlbnRWaWV3LlR5cGUgPSAibGF5ZXJz
IjsKKworV0kuTGF5ZXJzVGFiQ29udGVudFZpZXcuRXZlbnQgPSB7CisgICAgU2VsZWN0ZWRMYXll
ckNoYW5nZWQ6IFN5bWJvbCgic2VsZWN0ZWQtbGF5ZXItY2hhbmdlZCIpCit9Owo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>323355</attachid>
            <date>2017-10-10 15:51:47 -0700</date>
            <delta_ts>2017-10-11 12:58:12 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-178136-20171010155146.patch</filename>
            <type>text/plain</type>
            <size>18664</size>
            <attacher name="Ross Kirsling">ross.kirsling</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIzMTQwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwppbmRleCAw
N2YwMmE2OWFkNTgzNjg1NGNkOWI5ZmEwZTU5ODRiZjFhMDEzMmRmLi45NTY4MjM0Yzk3Y2NkOGVi
MGEzYzY4YzdlYzM5MjA3OGY3ZGEzMjg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKQEAgLTEs
NSArMSw1MiBAQAogMjAxNy0xMC0xMCAgUm9zcyBLaXJzbGluZyAgPHJvc3Mua2lyc2xpbmdAc29u
eS5jb20+CiAKKyAgICAgICAgV2ViIEluc3BlY3RvcjogTWFrZSAzRCBvYmplY3RzIHNlbGVjdGFi
bGUgaW4gTGF5ZXJzIHZpc3VhbGl6YXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE3ODEzNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9MYXllcnMzRENvbnRlbnRW
aWV3LmpzOgorICAgICAgICAoV0kuTGF5ZXJzM0RDb250ZW50Vmlldyk6CisgICAgICAgIChXSS5M
YXllcnMzRENvbnRlbnRWaWV3LnByb3RvdHlwZS5pbml0aWFsTGF5b3V0KToKKyAgICAgICAgKFdJ
LkxheWVyczNEQ29udGVudFZpZXcucHJvdG90eXBlLl9jYW52YXNNb3VzZURvd24pOgorICAgICAg
ICAoV0kuTGF5ZXJzM0RDb250ZW50Vmlldy5wcm90b3R5cGUuX3VwZGF0ZUxheWVyR3JvdXBTZWxl
Y3Rpb24pOgorICAgICAgICBJbXBsZW1lbnQgc2VsZWN0aW9uIG9mIDNEIGxheWVyIG9iamVjdHMu
CisgICAgICAgIAorICAgICAgICAoV0kuTGF5ZXJzM0RDb250ZW50Vmlldy5wcm90b3R5cGUuX2Fk
ZExheWVyR3JvdXApOiBSZW5hbWVkIGZyb20gX2FkZExheWVyLgorICAgICAgICAoV0kuTGF5ZXJz
M0RDb250ZW50Vmlldy5wcm90b3R5cGUuX3VwZGF0ZUxheWVyR3JvdXBQb3NpdGlvbik6CisgICAg
ICAgIChXSS5MYXllcnMzRENvbnRlbnRWaWV3LnByb3RvdHlwZS5fY3JlYXRlTGF5ZXJNZXNoKToK
KyAgICAgICAgUmVmYWN0b3IgLS0gb25lIGdyb3VwIHBlciBsYXllciAodmlzaWJsZSBwbGFuZSBh
bmQgY29tcG9zaXRlZCBvdXRsaW5lKSwgbm90IGdyb3VwcyBieSBzaGFwZS4KKworICAgICAgICAo
V0kuTGF5ZXJzM0RDb250ZW50Vmlldy5wcm90b3R5cGUubGF5b3V0KToKKyAgICAgICAgKFdJLkxh
eWVyczNEQ29udGVudFZpZXcucHJvdG90eXBlLl91cGRhdGVMYXllcnMpOgorICAgICAgICAoV0ku
TGF5ZXJzM0RDb250ZW50Vmlldy5wcm90b3R5cGUuX2NsZWFyTGF5ZXJzKTogRGVsZXRlZC4KKyAg
ICAgICAgRG9uJ3QgZGVzdHJveSBhbGwgM0Qgb2JqZWN0cyBvbiBldmVyeSBMYXllclRyZWVEaWRD
aGFuZ2U7IG1ha2UgdXNlIG9mIGxheWVyVHJlZU11dGF0aW9ucy4KKyAgICAgICAgKE5vdCBvbmx5
IGEgcGVyZm9ybWFuY2UgaW1wcm92ZW1lbnQsIGJ1dCBhbHNvIG5lY2Vzc2FyeSB0byBwcm9wZXJs
eSBwcmVzZXJ2ZSBoaWdobGlnaHRpbmcuKSAKKyAgICAgICAgCisgICAgICAgIChXSS5MYXllcnMz
RENvbnRlbnRWaWV3LnByb3RvdHlwZS5zZWxlY3RMYXllckJ5SWQpOgorICAgICAgICBBbGxvdyBz
ZWxlY3Rpb24gdG8gYmUgdXBkYXRlZCBmcm9tIHRoZSBvdXRzaWRlLgorCisgICAgICAgICogVXNl
ckludGVyZmFjZS9WaWV3cy9MYXllckRldGFpbHNTaWRlYmFyUGFuZWwuanM6CisgICAgICAgIChX
SS5MYXllckRldGFpbHNTaWRlYmFyUGFuZWwucHJvdG90eXBlLnNlbGVjdE5vZGVCeUxheWVySWQp
OgorICAgICAgICAoV0kuTGF5ZXJEZXRhaWxzU2lkZWJhclBhbmVsLnByb3RvdHlwZS5fYnVpbGRE
YXRhR3JpZCk6CisgICAgICAgIChXSS5MYXllckRldGFpbHNTaWRlYmFyUGFuZWwucHJvdG90eXBl
Ll9kYXRhR3JpZFNlbGVjdGVkTm9kZUNoYW5nZWQpOgorICAgICAgICBBbGxvdyBzZWxlY3Rpb24g
dG8gYmUgdXBkYXRlZCBmcm9tIHRoZSBvdXRzaWRlLgorCisgICAgICAgIChXSS5MYXllckRldGFp
bHNTaWRlYmFyUGFuZWwucHJvdG90eXBlLmluc3BlY3QpOgorICAgICAgICAoV0kuTGF5ZXJEZXRh
aWxzU2lkZWJhclBhbmVsLnByb3RvdHlwZS5fdXBkYXRlTGF5ZXJzKTogUmVuYW1lZCBmcm9tIF91
cGRhdGVEaXNwbGF5V2l0aExheWVycy4KKyAgICAgICAgKFdJLkxheWVyRGV0YWlsc1NpZGViYXJQ
YW5lbC5wcm90b3R5cGUuX3VwZGF0ZURhdGFHcmlkKToKKyAgICAgICAgKFdJLkxheWVyRGV0YWls
c1NpZGViYXJQYW5lbC5wcm90b3R5cGUuX3VwZGF0ZUJvdHRvbUJhcik6CisgICAgICAgIChXSS5M
YXllckRldGFpbHNTaWRlYmFyUGFuZWwucHJvdG90eXBlLl9kYXRhR3JpZE5vZGVGb3JMYXllcik6
IERlbGV0ZWQuCisgICAgICAgIENsZWFudXAuCisgICAgICAgIAorICAgICAgICAqIFVzZXJJbnRl
cmZhY2UvVmlld3MvTGF5ZXJzVGFiQ29udGVudFZpZXcuanM6CisgICAgICAgIChXSS5MYXllcnNU
YWJDb250ZW50Vmlldyk6CisgICAgICAgIChXSS5MYXllcnNUYWJDb250ZW50Vmlldy5wcm90b3R5
cGUuX2RldGFpbHNTaWRlYmFyU2VsZWN0ZWRMYXllckNoYW5nZWQpOgorICAgICAgICAoV0kuTGF5
ZXJzVGFiQ29udGVudFZpZXcucHJvdG90eXBlLl9jb250ZW50Vmlld1NlbGVjdGVkTGF5ZXJDaGFu
Z2VkKToKKyAgICAgICAgT3JjaGVzdHJhdGUgY29tbXVuaWNhdGlvbiBvZiBzZWxlY3Rpb24gc3Rh
dGUgYmV0d2VlbiB2aXN1YWxpemF0aW9uIGFuZCBzaWRlYmFyLgorCisyMDE3LTEwLTEwICBSb3Nz
IEtpcnNsaW5nICA8cm9zcy5raXJzbGluZ0Bzb255LmNvbT4KKwogICAgICAgICBXZWIgSW5zcGVj
dG9yOiBWaWV3cyBzaG91bGQgZXhwbGljaXRseSByZW1vdmUgZXZlbnQgbGlzdGVuZXJzIGZyb20g
bWFuYWdlcnMvRnJhbWUKICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE3NTk1MQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9WaWV3cy9MYXllckRldGFpbHNTaWRlYmFyUGFuZWwuanMgYi9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9MYXllckRldGFpbHNTaWRlYmFyUGFuZWwuanMK
aW5kZXggZDA3NWU1ZTM4NzgwZTQ1OWUzOWM3MmU4YWU2M2FkZjQ2M2IxZDVhOC4uMTk2YjJlZjU4
MDI5ODg2NDFkZmU3YTc2MTU5MzlkYjc0YjczZDA0NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvTGF5ZXJEZXRhaWxzU2lkZWJhclBhbmVsLmpz
CisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0xheWVyRGV0
YWlsc1NpZGViYXJQYW5lbC5qcwpAQCAtNTEsNyArNTEsNyBAQCBXSS5MYXllckRldGFpbHNTaWRl
YmFyUGFuZWwgPSBjbGFzcyBMYXllckRldGFpbHNTaWRlYmFyUGFuZWwgZXh0ZW5kcyBXSS5EZXRh
aWxzUwogICAgICAgICAgICAgb2JqZWN0cyA9IFtvYmplY3RzXTsKIAogICAgICAgICBsZXQgbGF5
ZXJzID0gb2JqZWN0cy5maWx0ZXIoKG9iamVjdCkgPT4gb2JqZWN0IGluc3RhbmNlb2YgV0kuTGF5
ZXIpOwotICAgICAgICB0aGlzLl91cGRhdGVEaXNwbGF5V2l0aExheWVycyhsYXllcnMpOworICAg
ICAgICB0aGlzLl91cGRhdGVMYXllcnMobGF5ZXJzKTsKIAogICAgICAgICByZXR1cm4gISFsYXll
cnMubGVuZ3RoOwogICAgIH0KQEAgLTYxLDYgKzYxLDE4IEBAIFdJLkxheWVyRGV0YWlsc1NpZGVi
YXJQYW5lbCA9IGNsYXNzIExheWVyRGV0YWlsc1NpZGViYXJQYW5lbCBleHRlbmRzIFdJLkRldGFp
bHNTCiAgICAgICAgIHRoaXMuX3BvcG92ZXIgPSBudWxsOwogICAgIH0KIAorICAgIHNlbGVjdE5v
ZGVCeUxheWVySWQobGF5ZXJJZCkKKyAgICB7CisgICAgICAgIGxldCBub2RlID0gdGhpcy5fZGF0
YUdyaWROb2Rlc0J5TGF5ZXJJZC5nZXQobGF5ZXJJZCk7CisgICAgICAgIGlmIChub2RlID09PSB0
aGlzLl9kYXRhR3JpZC5zZWxlY3RlZE5vZGUpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAg
ICAgaWYgKG5vZGUpCisgICAgICAgICAgICBub2RlLnJldmVhbEFuZFNlbGVjdCgpOworICAgICAg
ICBlbHNlIGlmICh0aGlzLl9kYXRhR3JpZC5zZWxlY3RlZE5vZGUpCisgICAgICAgICAgICB0aGlz
Ll9kYXRhR3JpZC5zZWxlY3RlZE5vZGUuZGVzZWxlY3QoKTsKKyAgICB9CisKICAgICAvLyBQcml2
YXRlCiAKICAgICBfYnVpbGREYXRhR3JpZCgpCkBAIC05NSw2ICsxMDcsMTEgQEAgV0kuTGF5ZXJE
ZXRhaWxzU2lkZWJhclBhbmVsID0gY2xhc3MgTGF5ZXJEZXRhaWxzU2lkZWJhclBhbmVsIGV4dGVu
ZHMgV0kuRGV0YWlsc1MKICAgICAgICAgdGhpcy5fZGF0YUdyaWQuZWxlbWVudC5hZGRFdmVudExp
c3RlbmVyKCJtb3VzZW1vdmUiLCB0aGlzLl9kYXRhR3JpZE1vdXNlTW92ZS5iaW5kKHRoaXMpLCBm
YWxzZSk7CiAgICAgICAgIHRoaXMuX2RhdGFHcmlkLmVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigi
bW91c2VsZWF2ZSIsIHRoaXMuX2RhdGFHcmlkTW91c2VMZWF2ZS5iaW5kKHRoaXMpLCBmYWxzZSk7
CiAKKyAgICAgICAgLy8gRklYTUU6IFdlIGNhbid0IHVzZSB2aXJ0dWFsaXplZCByb3dzIHVudGls
IERhdGFHcmlkIGlzIGFibGUgdG8gc2Nyb2xsIHRoZW0gcHJvZ3JhbW1hdGljYWxseS4KKyAgICAg
ICAgLy8gICAgICAgIFNlZSBUcmVlRWxlbWVudCNyZXZlYWwgLT4gVHJlZU91dGxpbmUjdXBkYXRl
VmlydHVhbGl6ZWRFbGVtZW50cyBmb3IgYW4gYW5hbG9neS4KKyAgICAgICAgdGhpcy5fZGF0YUdy
aWQuaW5saW5lID0gdHJ1ZTsKKyAgICAgICAgdGhpcy5fZGF0YUdyaWQuZWxlbWVudC5jbGFzc0xp
c3QucmVtb3ZlKCJpbmxpbmUiKTsKKwogICAgICAgICB0aGlzLmNvbnRlbnRWaWV3LmFkZFN1YnZp
ZXcodGhpcy5fZGF0YUdyaWQpOwogICAgIH0KIApAQCAtMTI1LDYgKzE0Miw5IEBAIFdJLkxheWVy
RGV0YWlsc1NpZGViYXJQYW5lbCA9IGNsYXNzIExheWVyRGV0YWlsc1NpZGViYXJQYW5lbCBleHRl
bmRzIFdJLkRldGFpbHNTCiAKICAgICBfZGF0YUdyaWRTZWxlY3RlZE5vZGVDaGFuZ2VkKCkKICAg
ICB7CisgICAgICAgIGxldCBsYXllcklkID0gdGhpcy5fZGF0YUdyaWQuc2VsZWN0ZWROb2RlID8g
dGhpcy5fZGF0YUdyaWQuc2VsZWN0ZWROb2RlLmxheWVyLmxheWVySWQgOiBudWxsOworICAgICAg
ICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXSS5MYXllckRldGFpbHNTaWRlYmFyUGFu
ZWwuRXZlbnQuU2VsZWN0ZWRMYXllckNoYW5nZWQsIHtsYXllcklkfSk7CisKICAgICAgICAgdGhp
cy5fc2hvd1BvcG92ZXJGb3JTZWxlY3RlZE5vZGUoKTsKICAgICB9CiAKQEAgLTE1OSw2MyArMTc5
LDUyIEBAIFdJLkxheWVyRGV0YWlsc1NpZGViYXJQYW5lbCA9IGNsYXNzIExheWVyRGV0YWlsc1Np
ZGViYXJQYW5lbCBleHRlbmRzIFdJLkRldGFpbHNTCiAgICAgICAgIHRoaXMuX2hvdmVyZWREYXRh
R3JpZE5vZGUgPSBudWxsOwogICAgIH0KIAotICAgIF91cGRhdGVEaXNwbGF5V2l0aExheWVycyhu
ZXdMYXllcnMpCisgICAgX3VwZGF0ZUxheWVycyhuZXdMYXllcnMpCiAgICAgewotICAgICAgICBs
ZXQgcHJldmlvdXNMYXllcnMgPSB0aGlzLl9sYXllcnM7Ci0gICAgICAgIHRoaXMuX2xheWVycyA9
IG5ld0xheWVyczsKKyAgICAgICAgaWYgKHRoaXMuX3BvcG92ZXIpCisgICAgICAgICAgICB0aGlz
Ll9wb3BvdmVyLmRpc21pc3MoKTsKIAotICAgICAgICB0aGlzLl91cGRhdGVEYXRhR3JpZChwcmV2
aW91c0xheWVycyk7Ci0gICAgICAgIHRoaXMuX3VwZGF0ZUJvdHRvbUJhcigpOworICAgICAgICB0
aGlzLl91cGRhdGVEYXRhR3JpZChuZXdMYXllcnMpOworICAgICAgICB0aGlzLl91cGRhdGVCb3R0
b21CYXIobmV3TGF5ZXJzKTsKKworICAgICAgICB0aGlzLl9sYXllcnMgPSBuZXdMYXllcnM7CiAg
ICAgfQogCi0gICAgX3VwZGF0ZURhdGFHcmlkKHByZXZpb3VzTGF5ZXJzKQorICAgIF91cGRhdGVE
YXRhR3JpZChuZXdMYXllcnMpCiAgICAgewogICAgICAgICBpZiAoIXRoaXMuX2RhdGFHcmlkKQog
ICAgICAgICAgICAgdGhpcy5fYnVpbGREYXRhR3JpZCgpOwogCi0gICAgICAgIGxldCBtdXRhdGlv
bnMgPSBXSS5sYXllclRyZWVNYW5hZ2VyLmxheWVyVHJlZU11dGF0aW9ucyhwcmV2aW91c0xheWVy
cywgdGhpcy5fbGF5ZXJzKTsKKyAgICAgICAgbGV0IHtyZW1vdmFscywgYWRkaXRpb25zLCBwcmVz
ZXJ2ZWR9ID0gV0kubGF5ZXJUcmVlTWFuYWdlci5sYXllclRyZWVNdXRhdGlvbnModGhpcy5fbGF5
ZXJzLCBuZXdMYXllcnMpOwogCi0gICAgICAgIG11dGF0aW9ucy5yZW1vdmFscy5mb3JFYWNoKChs
YXllcikgPT4geworICAgICAgICByZW1vdmFscy5mb3JFYWNoKChsYXllcikgPT4gewogICAgICAg
ICAgICAgbGV0IG5vZGUgPSB0aGlzLl9kYXRhR3JpZE5vZGVzQnlMYXllcklkLmdldChsYXllci5s
YXllcklkKTsKLSAgICAgICAgICAgIGlmICghbm9kZSkKLSAgICAgICAgICAgICAgICByZXR1cm47
Ci0KICAgICAgICAgICAgIHRoaXMuX2RhdGFHcmlkLnJlbW92ZUNoaWxkKG5vZGUpOwogICAgICAg
ICAgICAgdGhpcy5fZGF0YUdyaWROb2Rlc0J5TGF5ZXJJZC5kZWxldGUobGF5ZXIubGF5ZXJJZCk7
CiAgICAgICAgIH0pOwogCi0gICAgICAgIG11dGF0aW9ucy5hZGRpdGlvbnMuZm9yRWFjaCgobGF5
ZXIpID0+IHsKLSAgICAgICAgICAgIGxldCBub2RlID0gdGhpcy5fZGF0YUdyaWROb2RlRm9yTGF5
ZXIobGF5ZXIpOworICAgICAgICBhZGRpdGlvbnMuZm9yRWFjaCgobGF5ZXIpID0+IHsKKyAgICAg
ICAgICAgIGxldCBub2RlID0gbmV3IFdJLkxheWVyVHJlZURhdGFHcmlkTm9kZShsYXllcik7Cisg
ICAgICAgICAgICB0aGlzLl9kYXRhR3JpZE5vZGVzQnlMYXllcklkLnNldChsYXllci5sYXllcklk
LCBub2RlKTsKICAgICAgICAgICAgIHRoaXMuX2RhdGFHcmlkLmFwcGVuZENoaWxkKG5vZGUpOwog
ICAgICAgICB9KTsKIAotICAgICAgICBtdXRhdGlvbnMucHJlc2VydmVkLmZvckVhY2goKGxheWVy
KSA9PiB7CisgICAgICAgIHByZXNlcnZlZC5mb3JFYWNoKChsYXllcikgPT4gewogICAgICAgICAg
ICAgbGV0IG5vZGUgPSB0aGlzLl9kYXRhR3JpZE5vZGVzQnlMYXllcklkLmdldChsYXllci5sYXll
cklkKTsKLSAgICAgICAgICAgIGlmICghbm9kZSkKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0K
ICAgICAgICAgICAgIG5vZGUubGF5ZXIgPSBsYXllcjsKICAgICAgICAgfSk7CiAKICAgICAgICAg
dGhpcy5fc29ydERhdGFHcmlkKCk7CiAgICAgfQogCi0gICAgX2RhdGFHcmlkTm9kZUZvckxheWVy
KGxheWVyKQotICAgIHsKLSAgICAgICAgbGV0IG5vZGUgPSBuZXcgV0kuTGF5ZXJUcmVlRGF0YUdy
aWROb2RlKGxheWVyKTsKLSAgICAgICAgdGhpcy5fZGF0YUdyaWROb2Rlc0J5TGF5ZXJJZC5zZXQo
bGF5ZXIubGF5ZXJJZCwgbm9kZSk7Ci0KLSAgICAgICAgcmV0dXJuIG5vZGU7Ci0gICAgfQotCi0g
ICAgX3VwZGF0ZUJvdHRvbUJhcigpCisgICAgX3VwZGF0ZUJvdHRvbUJhcihuZXdMYXllcnMpCiAg
ICAgewogICAgICAgICBpZiAoIXRoaXMuX2JvdHRvbUJhcikKICAgICAgICAgICAgIHRoaXMuX2J1
aWxkQm90dG9tQmFyKCk7CiAKLSAgICAgICAgdGhpcy5fbGF5ZXJzQ291bnRMYWJlbC50ZXh0Q29u
dGVudCA9IFdJLlVJU3RyaW5nKCJMYXllciBDb3VudDogJWQiKS5mb3JtYXQodGhpcy5fbGF5ZXJz
Lmxlbmd0aCk7CisgICAgICAgIHRoaXMuX2xheWVyc0NvdW50TGFiZWwudGV4dENvbnRlbnQgPSBX
SS5VSVN0cmluZygiTGF5ZXIgQ291bnQ6ICVkIikuZm9ybWF0KG5ld0xheWVycy5sZW5ndGgpOwog
Ci0gICAgICAgIGxldCB0b3RhbE1lbW9yeSA9IHRoaXMuX2xheWVycy5yZWR1Y2UoKHRvdGFsLCBs
YXllcikgPT4gdG90YWwgKyAobGF5ZXIubWVtb3J5IHx8IDApLCAwKTsKKyAgICAgICAgbGV0IHRv
dGFsTWVtb3J5ID0gbmV3TGF5ZXJzLnJlZHVjZSgodG90YWwsIGxheWVyKSA9PiB0b3RhbCArIChs
YXllci5tZW1vcnkgfHwgMCksIDApOwogICAgICAgICB0aGlzLl9sYXllcnNNZW1vcnlMYWJlbC50
ZXh0Q29udGVudCA9IFdJLlVJU3RyaW5nKCJNZW1vcnk6ICVzIikuZm9ybWF0KE51bWJlci5ieXRl
c1RvU3RyaW5nKHRvdGFsTWVtb3J5KSk7CiAgICAgfQogCkBAIC0zNDksMyArMzU4LDcgQEAgV0ku
TGF5ZXJEZXRhaWxzU2lkZWJhclBhbmVsID0gY2xhc3MgTGF5ZXJEZXRhaWxzU2lkZWJhclBhbmVs
IGV4dGVuZHMgV0kuRGV0YWlsc1MKICAgICAgICAgICAgIGFkZFJlYXNvbihXSS5VSVN0cmluZygi
RWxlbWVudCBoYXMg4oCcYmxlbmQtbW9kZeKAnSBzdHlsZSIpKTsKICAgICB9CiB9OworCitXSS5M
YXllckRldGFpbHNTaWRlYmFyUGFuZWwuRXZlbnQgPSB7CisgICAgU2VsZWN0ZWRMYXllckNoYW5n
ZWQ6ICJzZWxlY3RlZC1sYXllci1jaGFuZ2VkIgorfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0xheWVyczNEQ29udGVudFZpZXcuanMgYi9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9MYXllcnMzRENvbnRlbnRW
aWV3LmpzCmluZGV4IDZjZTliNDQ4MGNlMDg3OTkyNjY5MDczMmUxMzA4YTBjZmU4M2I5OTguLjFi
MTg1YTBkZGFiNzQzNWMxMDBkZWRkMmM3MTYwMDAxMzY2N2RhZTEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0xheWVyczNEQ29udGVudFZpZXcu
anMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvTGF5ZXJz
M0RDb250ZW50Vmlldy5qcwpAQCAtMzQsMTMgKzM0LDE2IEBAIFdJLkxheWVyczNEQ29udGVudFZp
ZXcgPSBjbGFzcyBMYXllcnMzRENvbnRlbnRWaWV3IGV4dGVuZHMgV0kuQ29udGVudFZpZXcKICAg
ICAgICAgV0kubGF5ZXJUcmVlTWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdJLkxheWVyVHJlZU1h
bmFnZXIuRXZlbnQuTGF5ZXJUcmVlRGlkQ2hhbmdlLCB0aGlzLl9sYXllclRyZWVEaWRDaGFuZ2Us
IHRoaXMpOwogCiAgICAgICAgIHRoaXMuX2xheWVycyA9IFtdOworICAgICAgICB0aGlzLl9sYXll
ckdyb3Vwc0J5SWQgPSBuZXcgTWFwOworICAgICAgICB0aGlzLl9zZWxlY3RlZExheWVyR3JvdXAg
PSBudWxsOwogICAgICAgICB0aGlzLl9sYXllcnNDaGFuZ2VkV2hpbGVIaWRkZW4gPSBmYWxzZTsK
KwogICAgICAgICB0aGlzLl9yZW5kZXJlciA9IG51bGw7CiAgICAgICAgIHRoaXMuX2NhbWVyYSA9
IG51bGw7CiAgICAgICAgIHRoaXMuX2NvbnRyb2xzID0gbnVsbDsKLSAgICAgICAgdGhpcy5fYm91
bmRzR3JvdXAgPSBudWxsOwotICAgICAgICB0aGlzLl9jb21wb3NpdGVkQm91bmRzR3JvdXAgPSBu
dWxsOwogICAgICAgICB0aGlzLl9zY2VuZSA9IG51bGw7CisgICAgICAgIHRoaXMuX3JheWNhc3Rl
ciA9IG51bGw7CisgICAgICAgIHRoaXMuX21vdXNlID0gbnVsbDsKICAgICAgICAgdGhpcy5fYW5p
bWF0aW9uRnJhbWVSZXF1ZXN0SWQgPSBudWxsOwogICAgIH0KIApAQCAtNzksNiArODIsMTIgQEAg
V0kuTGF5ZXJzM0RDb250ZW50VmlldyA9IGNsYXNzIExheWVyczNEQ29udGVudFZpZXcgZXh0ZW5k
cyBXSS5Db250ZW50VmlldwogICAgICAgICBzdXBlci5jbG9zZWQoKTsKICAgICB9CiAKKyAgICBz
ZWxlY3RMYXllckJ5SWQobGF5ZXJJZCkKKyAgICB7CisgICAgICAgIGxldCBsYXllckdyb3VwID0g
dGhpcy5fbGF5ZXJHcm91cHNCeUlkLmdldChsYXllcklkKTsKKyAgICAgICAgdGhpcy5fdXBkYXRl
TGF5ZXJHcm91cFNlbGVjdGlvbihsYXllckdyb3VwKTsKKyAgICB9CisKICAgICAvLyBQcm90ZWN0
ZWQKIAogICAgIGluaXRpYWxMYXlvdXQoKQpAQCAtMTAwLDEzICsxMDksMTIgQEAgV0kuTGF5ZXJz
M0RDb250ZW50VmlldyA9IGNsYXNzIExheWVyczNEQ29udGVudFZpZXcgZXh0ZW5kcyBXSS5Db250
ZW50VmlldwogICAgICAgICB0aGlzLl9jb250cm9scy5taW5BemltdXRoQW5nbGUgPSAtTWF0aC5Q
SSAvIDI7CiAgICAgICAgIHRoaXMuX2NvbnRyb2xzLm1heEF6aW11dGhBbmdsZSA9IE1hdGguUEkg
LyAyOwogCi0gICAgICAgIHRoaXMuX2JvdW5kc0dyb3VwID0gbmV3IFRIUkVFLkdyb3VwKCk7Ci0g
ICAgICAgIHRoaXMuX2NvbXBvc2l0ZWRCb3VuZHNHcm91cCA9IG5ldyBUSFJFRS5Hcm91cCgpOwot
Ci0gICAgICAgIHRoaXMuX3NjZW5lID0gbmV3IFRIUkVFLlNjZW5lKCk7CisgICAgICAgIHRoaXMu
X3NjZW5lID0gbmV3IFRIUkVFLlNjZW5lOwogICAgICAgICB0aGlzLl9zY2VuZS5wb3NpdGlvbi5z
ZXQoLXRoaXMuZWxlbWVudC5vZmZzZXRXaWR0aCAvIDIsIHRoaXMuZWxlbWVudC5vZmZzZXRIZWln
aHQgLyAyLCAwKTsKLSAgICAgICAgdGhpcy5fc2NlbmUuYWRkKHRoaXMuX2JvdW5kc0dyb3VwKTsK
LSAgICAgICAgdGhpcy5fc2NlbmUuYWRkKHRoaXMuX2NvbXBvc2l0ZWRCb3VuZHNHcm91cCk7CisK
KyAgICAgICAgdGhpcy5fcmF5Y2FzdGVyID0gbmV3IFRIUkVFLlJheWNhc3RlcjsKKyAgICAgICAg
dGhpcy5fbW91c2UgPSBuZXcgVEhSRUUuVmVjdG9yMjsKKyAgICAgICAgdGhpcy5fcmVuZGVyZXIu
ZG9tRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJtb3VzZWRvd24iLCB0aGlzLl9jYW52YXNNb3Vz
ZURvd24uYmluZCh0aGlzKSwgZmFsc2UpOwogCiAgICAgICAgIHRoaXMuZWxlbWVudC5hcHBlbmRD
aGlsZCh0aGlzLl9yZW5kZXJlci5kb21FbGVtZW50KTsKIApAQCAtMTIwLDExICsxMjgsNyBAQCBX
SS5MYXllcnMzRENvbnRlbnRWaWV3ID0gY2xhc3MgTGF5ZXJzM0RDb250ZW50VmlldyBleHRlbmRz
IFdJLkNvbnRlbnRWaWV3CiAKICAgICAgICAgV0kuZG9tVHJlZU1hbmFnZXIucmVxdWVzdERvY3Vt
ZW50KChub2RlKSA9PiB7CiAgICAgICAgICAgICBXSS5sYXllclRyZWVNYW5hZ2VyLmxheWVyc0Zv
ck5vZGUobm9kZSwgKGxheWVyRm9yTm9kZSwgY2hpbGRMYXllcnMpID0+IHsKLSAgICAgICAgICAg
ICAgICB0aGlzLl9jbGVhckxheWVycygpOwotICAgICAgICAgICAgICAgIGZvciAobGV0IGkgPSAw
OyBpIDwgY2hpbGRMYXllcnMubGVuZ3RoOyBpKyspCi0gICAgICAgICAgICAgICAgICAgIHRoaXMu
X2FkZExheWVyKGNoaWxkTGF5ZXJzW2ldLCBpKTsKLQotICAgICAgICAgICAgICAgIHRoaXMuX2xh
eWVycyA9IGNoaWxkTGF5ZXJzOworICAgICAgICAgICAgICAgIHRoaXMuX3VwZGF0ZUxheWVycyhj
aGlsZExheWVycyk7CiAgICAgICAgICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5l
cnMoV0kuQ29udGVudFZpZXcuRXZlbnQuU2VsZWN0aW9uUGF0aENvbXBvbmVudHNEaWRDaGFuZ2Up
OwogICAgICAgICAgICAgfSk7CiAgICAgICAgIH0pOwpAQCAtMTY2LDMwICsxNzAsNTggQEAgV0ku
TGF5ZXJzM0RDb250ZW50VmlldyA9IGNsYXNzIExheWVyczNEQ29udGVudFZpZXcgZXh0ZW5kcyBX
SS5Db250ZW50VmlldwogICAgICAgICB0aGlzLl9hbmltYXRpb25GcmFtZVJlcXVlc3RJZCA9IG51
bGw7CiAgICAgfQogCi0gICAgX2NsZWFyTGF5ZXJzKCkKKyAgICBfdXBkYXRlTGF5ZXJzKG5ld0xh
eWVycykKICAgICB7Ci0gICAgICAgIHRoaXMuX2JvdW5kc0dyb3VwLmNoaWxkcmVuLmxlbmd0aCA9
IDA7Ci0gICAgICAgIHRoaXMuX2NvbXBvc2l0ZWRCb3VuZHNHcm91cC5jaGlsZHJlbi5sZW5ndGgg
PSAwOworICAgICAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQgYmUgbWFkZSBpbnRvIHRoZSBiYXNp
YyB1c2FnZSBvZiB0aGUgbWFuYWdlciwgaWYgbm90IHRoZSBhZ2VudCBpdHNlbGYuCisgICAgICAg
IC8vICAgICAgICBBdCB0aGF0IHBvaW50LCB3ZSBjYW4gcmVtb3ZlIHRoaXMgZHVwbGljYXRpb24g
ZnJvbSB0aGUgdmlzdWFsaXphdGlvbiBhbmQgc2lkZWJhci4KKyAgICAgICAgbGV0IHtyZW1vdmFs
cywgYWRkaXRpb25zLCBwcmVzZXJ2ZWR9ID0gV0kubGF5ZXJUcmVlTWFuYWdlci5sYXllclRyZWVN
dXRhdGlvbnModGhpcy5fbGF5ZXJzLCBuZXdMYXllcnMpOworCisgICAgICAgIGZvciAobGV0IGxh
eWVyIG9mIHJlbW92YWxzKSB7CisgICAgICAgICAgICBsZXQgbGF5ZXJHcm91cCA9IHRoaXMuX2xh
eWVyR3JvdXBzQnlJZC5nZXQobGF5ZXIubGF5ZXJJZCk7CisgICAgICAgICAgICB0aGlzLl9zY2Vu
ZS5yZW1vdmUobGF5ZXJHcm91cCk7CisgICAgICAgICAgICB0aGlzLl9sYXllckdyb3Vwc0J5SWQu
ZGVsZXRlKGxheWVyLmxheWVySWQpOworICAgICAgICB9CisKKyAgICAgICAgaWYgKHRoaXMuX3Nl
bGVjdGVkTGF5ZXJHcm91cCAmJiAhdGhpcy5fbGF5ZXJHcm91cHNCeUlkLmdldCh0aGlzLl9zZWxl
Y3RlZExheWVyR3JvdXAudXNlckRhdGEubGF5ZXJJZCkpCisgICAgICAgICAgICB0aGlzLnNlbGVj
dGVkTGF5ZXJHcm91cCA9IG51bGw7CisKKyAgICAgICAgYWRkaXRpb25zLmZvckVhY2godGhpcy5f
YWRkTGF5ZXJHcm91cCwgdGhpcyk7CisgICAgICAgIHByZXNlcnZlZC5mb3JFYWNoKHRoaXMuX3Vw
ZGF0ZUxheWVyR3JvdXBQb3NpdGlvbiwgdGhpcyk7CisKKyAgICAgICAgdGhpcy5fbGF5ZXJzID0g
bmV3TGF5ZXJzOwogICAgIH0KIAotICAgIF9hZGRMYXllcihsYXllciwgaW5kZXgpCisgICAgX2Fk
ZExheWVyR3JvdXAobGF5ZXIsIGluZGV4KQogICAgIHsKLSAgICAgICAgdGhpcy5fYm91bmRzR3Jv
dXAuYWRkKHRoaXMuX2NyZWF0ZUxheWVyTWVzaChsYXllci5ib3VuZHMsIGluZGV4KSk7Ci0gICAg
ICAgIHRoaXMuX2NvbXBvc2l0ZWRCb3VuZHNHcm91cC5hZGQodGhpcy5fY3JlYXRlTGF5ZXJNZXNo
KGxheWVyLmNvbXBvc2l0ZWRCb3VuZHMsIGluZGV4LCB0cnVlKSk7CisgICAgICAgIGxldCBsYXll
ckdyb3VwID0gbmV3IFRIUkVFLkdyb3VwOworICAgICAgICBsYXllckdyb3VwLnVzZXJEYXRhLmxh
eWVySWQgPSBsYXllci5sYXllcklkOworICAgICAgICBsYXllckdyb3VwLmFkZCh0aGlzLl9jcmVh
dGVMYXllck1lc2gobGF5ZXIuYm91bmRzKSk7CisgICAgICAgIGxheWVyR3JvdXAuYWRkKHRoaXMu
X2NyZWF0ZUxheWVyTWVzaChsYXllci5jb21wb3NpdGVkQm91bmRzLCB0cnVlKSk7CisKKyAgICAg
ICAgdGhpcy5fbGF5ZXJHcm91cHNCeUlkLnNldChsYXllci5sYXllcklkLCBsYXllckdyb3VwKTsK
KyAgICAgICAgdGhpcy5fdXBkYXRlTGF5ZXJHcm91cFBvc2l0aW9uKGxheWVyLCBpbmRleCk7CisK
KyAgICAgICAgdGhpcy5fc2NlbmUuYWRkKGxheWVyR3JvdXApOwogICAgIH0KIAotICAgIF9jcmVh
dGVMYXllck1lc2gocmVjdCwgaW5kZXgsIGlzT3V0bGluZSA9IGZhbHNlKQotICAgIHsKKyAgICBf
dXBkYXRlTGF5ZXJHcm91cFBvc2l0aW9uKGxheWVyLCBpbmRleCkgeworICAgICAgICBsZXQgbGF5
ZXJHcm91cCA9IHRoaXMuX2xheWVyR3JvdXBzQnlJZC5nZXQobGF5ZXIubGF5ZXJJZCk7CisgICAg
ICAgIGNvbnNvbGUuYXNzZXJ0KGxheWVyR3JvdXApOworCiAgICAgICAgIGNvbnN0IHpJbnRlcnZh
bCA9IDI1OworICAgICAgICBsYXllckdyb3VwLnBvc2l0aW9uLnNldChsYXllci5ib3VuZHMueCwg
LWxheWVyLmJvdW5kcy55LCBpbmRleCAqIHpJbnRlcnZhbCk7CisgICAgfQogCi0gICAgICAgIGxl
dCBnZW9tZXRyeSA9IG5ldyBUSFJFRS5HZW9tZXRyeSgpOwotICAgICAgICBnZW9tZXRyeS52ZXJ0
aWNlcy5wdXNoKG5ldyBUSFJFRS5WZWN0b3IzKHJlY3QueCwgICAgICAgICAgICAgIC1yZWN0Lnks
ICAgICAgICAgICAgICAgaW5kZXggKiB6SW50ZXJ2YWwpKTsKLSAgICAgICAgZ2VvbWV0cnkudmVy
dGljZXMucHVzaChuZXcgVEhSRUUuVmVjdG9yMyhyZWN0LnggKyByZWN0LndpZHRoLCAtcmVjdC55
LCAgICAgICAgICAgICAgIGluZGV4ICogekludGVydmFsKSk7Ci0gICAgICAgIGdlb21ldHJ5LnZl
cnRpY2VzLnB1c2gobmV3IFRIUkVFLlZlY3RvcjMocmVjdC54ICsgcmVjdC53aWR0aCwgLXJlY3Qu
eSAtIHJlY3QuaGVpZ2h0LCBpbmRleCAqIHpJbnRlcnZhbCkpOwotICAgICAgICBnZW9tZXRyeS52
ZXJ0aWNlcy5wdXNoKG5ldyBUSFJFRS5WZWN0b3IzKHJlY3QueCwgICAgICAgICAgICAgIC1yZWN0
LnkgLSByZWN0LmhlaWdodCwgaW5kZXggKiB6SW50ZXJ2YWwpKTsKKyAgICBfY3JlYXRlTGF5ZXJN
ZXNoKHt3aWR0aCwgaGVpZ2h0fSwgaXNPdXRsaW5lID0gZmFsc2UpCisgICAgeworICAgICAgICBs
ZXQgZ2VvbWV0cnkgPSBuZXcgVEhSRUUuR2VvbWV0cnk7CisgICAgICAgIGdlb21ldHJ5LnZlcnRp
Y2VzLnB1c2gobmV3IFRIUkVFLlZlY3RvcjMoMCwgICAgIDAsICAgICAgIDApKTsKKyAgICAgICAg
Z2VvbWV0cnkudmVydGljZXMucHVzaChuZXcgVEhSRUUuVmVjdG9yMyh3aWR0aCwgMCwgICAgICAg
MCkpOworICAgICAgICBnZW9tZXRyeS52ZXJ0aWNlcy5wdXNoKG5ldyBUSFJFRS5WZWN0b3IzKHdp
ZHRoLCAtaGVpZ2h0LCAwKSk7CisgICAgICAgIGdlb21ldHJ5LnZlcnRpY2VzLnB1c2gobmV3IFRI
UkVFLlZlY3RvcjMoMCwgICAgIC1oZWlnaHQsIDApKTsKIAogICAgICAgICBpZiAoaXNPdXRsaW5l
KSB7Ci0gICAgICAgICAgICBsZXQgbWF0ZXJpYWwgPSBuZXcgVEhSRUUuTGluZUJhc2ljTWF0ZXJp
YWwoe2NvbG9yOiAiaHNsKDc5LCA0NSUsIDUwJSkifSk7CisgICAgICAgICAgICBsZXQgbWF0ZXJp
YWwgPSBuZXcgVEhSRUUuTGluZUJhc2ljTWF0ZXJpYWwoe2NvbG9yOiBXSS5MYXllcnMzRENvbnRl
bnRWaWV3Ll91bnNlbGVjdGVkQ29sb3Iuc3Ryb2tlfSk7CiAgICAgICAgICAgICByZXR1cm4gbmV3
IFRIUkVFLkxpbmVMb29wKGdlb21ldHJ5LCBtYXRlcmlhbCk7CiAgICAgICAgIH0KIApAQCAtMTk3
LDcgKzIyOSw3IEBAIFdJLkxheWVyczNEQ29udGVudFZpZXcgPSBjbGFzcyBMYXllcnMzRENvbnRl
bnRWaWV3IGV4dGVuZHMgV0kuQ29udGVudFZpZXcKICAgICAgICAgZ2VvbWV0cnkuZmFjZXMucHVz
aChuZXcgVEhSRUUuRmFjZTMoMSwgMiwgMykpOwogCiAgICAgICAgIGxldCBtYXRlcmlhbCA9IG5l
dyBUSFJFRS5NZXNoQmFzaWNNYXRlcmlhbCh7Ci0gICAgICAgICAgICBjb2xvcjogImhzbCg3Niwg
NDklLCA3NSUpIiwKKyAgICAgICAgICAgIGNvbG9yOiBXSS5MYXllcnMzRENvbnRlbnRWaWV3Ll91
bnNlbGVjdGVkQ29sb3IuZmlsbCwKICAgICAgICAgICAgIHRyYW5zcGFyZW50OiB0cnVlLAogICAg
ICAgICAgICAgb3BhY2l0eTogMC40LAogICAgICAgICAgICAgc2lkZTogVEhSRUUuRG91YmxlU2lk
ZSwKQEAgLTIwNSw0ICsyMzcsNTcgQEAgV0kuTGF5ZXJzM0RDb250ZW50VmlldyA9IGNsYXNzIExh
eWVyczNEQ29udGVudFZpZXcgZXh0ZW5kcyBXSS5Db250ZW50VmlldwogCiAgICAgICAgIHJldHVy
biBuZXcgVEhSRUUuTWVzaChnZW9tZXRyeSwgbWF0ZXJpYWwpOwogICAgIH0KKworICAgIF9jYW52
YXNNb3VzZURvd24oZXZlbnQpCisgICAgeworICAgICAgICB0aGlzLl9tb3VzZS54ID0gKGV2ZW50
Lm9mZnNldFggLyBldmVudC50YXJnZXQud2lkdGgpICogMiAtIDE7CisgICAgICAgIHRoaXMuX21v
dXNlLnkgPSAtKGV2ZW50Lm9mZnNldFkgLyBldmVudC50YXJnZXQuaGVpZ2h0KSAqIDIgKyAxOwor
ICAgICAgICB0aGlzLl9yYXljYXN0ZXIuc2V0RnJvbUNhbWVyYSh0aGlzLl9tb3VzZSwgdGhpcy5f
Y2FtZXJhKTsKKworICAgICAgICBjb25zdCByZWN1cnNpdmUgPSB0cnVlOworICAgICAgICBsZXQg
aW50ZXJzZWN0cyA9IHRoaXMuX3JheWNhc3Rlci5pbnRlcnNlY3RPYmplY3RzKHRoaXMuX3NjZW5l
LmNoaWxkcmVuLCByZWN1cnNpdmUpOworICAgICAgICBsZXQgc2VsZWN0aW9uID0gaW50ZXJzZWN0
cy5sZW5ndGggPyBpbnRlcnNlY3RzWzBdLm9iamVjdC5wYXJlbnQgOiBudWxsOworICAgICAgICBp
ZiAoc2VsZWN0aW9uICYmIHNlbGVjdGlvbiA9PT0gdGhpcy5fc2VsZWN0ZWRMYXllckdyb3VwKSB7
CisgICAgICAgICAgICBpZiAoIWV2ZW50Lm1ldGFLZXkpCisgICAgICAgICAgICAgICAgcmV0dXJu
OworCisgICAgICAgICAgICBzZWxlY3Rpb24gPSBudWxsOworICAgICAgICB9CisKKyAgICAgICAg
dGhpcy5fdXBkYXRlTGF5ZXJHcm91cFNlbGVjdGlvbihzZWxlY3Rpb24pOworCisgICAgICAgIGxl
dCBsYXllcklkID0gc2VsZWN0aW9uID8gc2VsZWN0aW9uLnVzZXJEYXRhLmxheWVySWQgOiBudWxs
OworICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXSS5MYXllcnMzRENvbnRl
bnRWaWV3LkV2ZW50LlNlbGVjdGVkTGF5ZXJDaGFuZ2VkLCB7bGF5ZXJJZH0pOworICAgIH0KKwor
ICAgIF91cGRhdGVMYXllckdyb3VwU2VsZWN0aW9uKGxheWVyR3JvdXApCisgICAgeworICAgICAg
ICBsZXQgc2V0Q29sb3IgPSAoe2ZpbGwsIHN0cm9rZX0pID0+IHsKKyAgICAgICAgICAgIGxldCBb
cGxhbmUsIG91dGxpbmVdID0gdGhpcy5fc2VsZWN0ZWRMYXllckdyb3VwLmNoaWxkcmVuOworICAg
ICAgICAgICAgcGxhbmUubWF0ZXJpYWwuY29sb3Iuc2V0KGZpbGwpOworICAgICAgICAgICAgb3V0
bGluZS5tYXRlcmlhbC5jb2xvci5zZXQoc3Ryb2tlKTsKKyAgICAgICAgfTsKKworICAgICAgICBp
ZiAodGhpcy5fc2VsZWN0ZWRMYXllckdyb3VwKQorICAgICAgICAgICAgc2V0Q29sb3IoV0kuTGF5
ZXJzM0RDb250ZW50Vmlldy5fdW5zZWxlY3RlZENvbG9yKTsKKworICAgICAgICB0aGlzLl9zZWxl
Y3RlZExheWVyR3JvdXAgPSBsYXllckdyb3VwOworCisgICAgICAgIGlmICh0aGlzLl9zZWxlY3Rl
ZExheWVyR3JvdXApCisgICAgICAgICAgICBzZXRDb2xvcihXSS5MYXllcnMzRENvbnRlbnRWaWV3
Ll9zZWxlY3RlZENvbG9yKTsKKyAgICB9Cit9OworCitXSS5MYXllcnMzRENvbnRlbnRWaWV3Ll91
bnNlbGVjdGVkQ29sb3IgPSB7CisgICAgZmlsbDogImhzbCg3NiwgNDklLCA3NSUpIiwKKyAgICBz
dHJva2U6ICJoc2woNzksIDQ1JSwgNTAlKSIKK307CisKK1dJLkxheWVyczNEQ29udGVudFZpZXcu
X3NlbGVjdGVkQ29sb3IgPSB7CisgICAgZmlsbDogImhzbCgyMDgsIDY2JSwgNzklKSIsCisgICAg
c3Ryb2tlOiAiaHNsKDIwMiwgNTclLCA2OCUpIgorfTsKKworV0kuTGF5ZXJzM0RDb250ZW50Vmll
dy5FdmVudCA9IHsKKyAgICBTZWxlY3RlZExheWVyQ2hhbmdlZDogInNlbGVjdGVkLWxheWVyLWNo
YW5nZWQiCiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvVmlld3MvTGF5ZXJzVGFiQ29udGVudFZpZXcuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9WaWV3cy9MYXllcnNUYWJDb250ZW50Vmlldy5qcwppbmRleCBkZjZkOWU1
MjI2ODNiZjE1NzdmYTc3M2JlNDEzZmQwMDBiMmZlOWQ2Li40MzZmOTUxZTQ2MTc4YmZjYjFjYjll
M2YxMDUxNmI3NWQ0Y2MyNmJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9WaWV3cy9MYXllcnNUYWJDb250ZW50Vmlldy5qcworKysgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9MYXllcnNUYWJDb250ZW50Vmlldy5qcwpA
QCAtMzUsNyArMzUsMTEgQEAgV0kuTGF5ZXJzVGFiQ29udGVudFZpZXcgPSBjbGFzcyBMYXllcnNU
YWJDb250ZW50VmlldyBleHRlbmRzIFdJLkNvbnRlbnRCcm93c2VyVGEKICAgICAgICAgY29uc3Qg
ZGlzYWJsZUJhY2tGb3J3YXJkID0gdHJ1ZTsKICAgICAgICAgc3VwZXIoImxheWVycyIsICJsYXll
cnMiLCB0YWJCYXJJdGVtLCBuYXZpZ2F0aW9uU2lkZWJhclBhbmVsQ29uc3RydWN0b3IsIGRldGFp
bHNTaWRlYmFyUGFuZWxDb25zdHJ1Y3RvcnMsIGRpc2FibGVCYWNrRm9yd2FyZCk7CiAKKyAgICAg
ICAgdGhpcy5fbGF5ZXJEZXRhaWxzU2lkZWJhclBhbmVsID0gdGhpcy5kZXRhaWxzU2lkZWJhclBh
bmVsc1swXTsKKyAgICAgICAgdGhpcy5fbGF5ZXJEZXRhaWxzU2lkZWJhclBhbmVsLmFkZEV2ZW50
TGlzdGVuZXIoV0kuTGF5ZXJEZXRhaWxzU2lkZWJhclBhbmVsLkV2ZW50LlNlbGVjdGVkTGF5ZXJD
aGFuZ2VkLCB0aGlzLl9kZXRhaWxzU2lkZWJhclNlbGVjdGVkTGF5ZXJDaGFuZ2VkLCB0aGlzKTsK
KwogICAgICAgICB0aGlzLl9sYXllcnMzRENvbnRlbnRWaWV3ID0gbmV3IFdJLkxheWVyczNEQ29u
dGVudFZpZXc7CisgICAgICAgIHRoaXMuX2xheWVyczNEQ29udGVudFZpZXcuYWRkRXZlbnRMaXN0
ZW5lcihXSS5MYXllcnMzRENvbnRlbnRWaWV3LkV2ZW50LlNlbGVjdGVkTGF5ZXJDaGFuZ2VkLCB0
aGlzLl9jb250ZW50Vmlld1NlbGVjdGVkTGF5ZXJDaGFuZ2VkLCB0aGlzKTsKICAgICB9CiAKICAg
ICAvLyBTdGF0aWMKQEAgLTY0LDYgKzY4LDE4IEBAIFdJLkxheWVyc1RhYkNvbnRlbnRWaWV3ID0g
Y2xhc3MgTGF5ZXJzVGFiQ29udGVudFZpZXcgZXh0ZW5kcyBXSS5Db250ZW50QnJvd3NlclRhCiAK
ICAgICAgICAgdGhpcy5jb250ZW50QnJvd3Nlci5zaG93Q29udGVudFZpZXcodGhpcy5fbGF5ZXJz
M0RDb250ZW50Vmlldyk7CiAgICAgfQorCisgICAgLy8gUHJpdmF0ZQorCisgICAgX2RldGFpbHNT
aWRlYmFyU2VsZWN0ZWRMYXllckNoYW5nZWQoZXZlbnQpCisgICAgeworICAgICAgICB0aGlzLl9s
YXllcnMzRENvbnRlbnRWaWV3LnNlbGVjdExheWVyQnlJZChldmVudC5kYXRhLmxheWVySWQpOwor
ICAgIH0KKworICAgIF9jb250ZW50Vmlld1NlbGVjdGVkTGF5ZXJDaGFuZ2VkKGV2ZW50KQorICAg
IHsKKyAgICAgICAgdGhpcy5fbGF5ZXJEZXRhaWxzU2lkZWJhclBhbmVsLnNlbGVjdE5vZGVCeUxh
eWVySWQoZXZlbnQuZGF0YS5sYXllcklkKTsKKyAgICB9CiB9OwogCiBXSS5MYXllcnNUYWJDb250
ZW50Vmlldy5UeXBlID0gImxheWVycyI7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>323450</attachid>
            <date>2017-10-11 12:58:14 -0700</date>
            <delta_ts>2017-10-11 13:54:59 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-178136-20171011125812.patch</filename>
            <type>text/plain</type>
            <size>19655</size>
            <attacher name="Ross Kirsling">ross.kirsling</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIzMTQwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwppbmRleCAw
N2YwMmE2OWFkNTgzNjg1NGNkOWI5ZmEwZTU5ODRiZjFhMDEzMmRmLi5jMDBlYTlhMjgwMjA2YmIx
ODNkZTE3ODhmYjdjNmE1MTE4NmI1YTZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1MSBAQAorMjAxNy0xMC0xMSAgUm9zcyBLaXJzbGluZyAgPHJvc3Mua2lyc2xpbmdAc29u
eS5jb20+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogTWFrZSAzRCBvYmplY3RzIHNlbGVjdGFi
bGUgaW4gTGF5ZXJzIHZpc3VhbGl6YXRpb24KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTE3ODEzNgorCisgICAgICAgIFJldmlld2VkIGJ5IERldmluIFJv
dXNzby4KKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvTGF5ZXJzM0RDb250ZW50Vmll
dy5qczoKKyAgICAgICAgKFdJLkxheWVyczNEQ29udGVudFZpZXcpOgorICAgICAgICAoV0kuTGF5
ZXJzM0RDb250ZW50Vmlldy5wcm90b3R5cGUuaW5pdGlhbExheW91dCk6CisgICAgICAgIChXSS5M
YXllcnMzRENvbnRlbnRWaWV3LnByb3RvdHlwZS5fY2FudmFzTW91c2VEb3duKToKKyAgICAgICAg
KFdJLkxheWVyczNEQ29udGVudFZpZXcucHJvdG90eXBlLl91cGRhdGVMYXllckdyb3VwU2VsZWN0
aW9uKToKKyAgICAgICAgSW1wbGVtZW50IHNlbGVjdGlvbiBvZiAzRCBsYXllciBvYmplY3RzLgor
ICAgICAgICAKKyAgICAgICAgKFdJLkxheWVyczNEQ29udGVudFZpZXcucHJvdG90eXBlLl9hZGRM
YXllckdyb3VwKTogUmVuYW1lZCBmcm9tIF9hZGRMYXllci4KKyAgICAgICAgKFdJLkxheWVyczNE
Q29udGVudFZpZXcucHJvdG90eXBlLl91cGRhdGVMYXllckdyb3VwUG9zaXRpb24pOgorICAgICAg
ICAoV0kuTGF5ZXJzM0RDb250ZW50Vmlldy5wcm90b3R5cGUuX2NyZWF0ZUxheWVyTWVzaCk6Cisg
ICAgICAgIFJlZmFjdG9yIC0tIG9uZSBncm91cCBwZXIgbGF5ZXIgKHZpc2libGUgcGxhbmUgYW5k
IGNvbXBvc2l0ZWQgb3V0bGluZSksIG5vdCBncm91cHMgYnkgc2hhcGUuCisKKyAgICAgICAgKFdJ
LkxheWVyczNEQ29udGVudFZpZXcucHJvdG90eXBlLmxheW91dCk6CisgICAgICAgIChXSS5MYXll
cnMzRENvbnRlbnRWaWV3LnByb3RvdHlwZS5fdXBkYXRlTGF5ZXJzKToKKyAgICAgICAgKFdJLkxh
eWVyczNEQ29udGVudFZpZXcucHJvdG90eXBlLl9jbGVhckxheWVycyk6IERlbGV0ZWQuCisgICAg
ICAgIERvbid0IGRlc3Ryb3kgYWxsIDNEIG9iamVjdHMgb24gZXZlcnkgTGF5ZXJUcmVlRGlkQ2hh
bmdlOyBtYWtlIHVzZSBvZiBsYXllclRyZWVNdXRhdGlvbnMuCisgICAgICAgIChOb3Qgb25seSBh
IHBlcmZvcm1hbmNlIGltcHJvdmVtZW50LCBidXQgYWxzbyBuZWNlc3NhcnkgdG8gcHJvcGVybHkg
cHJlc2VydmUgaGlnaGxpZ2h0aW5nLikgCisgICAgICAgIAorICAgICAgICAoV0kuTGF5ZXJzM0RD
b250ZW50Vmlldy5wcm90b3R5cGUuc2VsZWN0TGF5ZXJCeUlkKToKKyAgICAgICAgQWxsb3cgc2Vs
ZWN0aW9uIHRvIGJlIHVwZGF0ZWQgZnJvbSB0aGUgb3V0c2lkZS4KKworICAgICAgICAqIFVzZXJJ
bnRlcmZhY2UvVmlld3MvTGF5ZXJEZXRhaWxzU2lkZWJhclBhbmVsLmpzOgorICAgICAgICAoV0ku
TGF5ZXJEZXRhaWxzU2lkZWJhclBhbmVsLnByb3RvdHlwZS5zZWxlY3ROb2RlQnlMYXllcklkKToK
KyAgICAgICAgKFdJLkxheWVyRGV0YWlsc1NpZGViYXJQYW5lbC5wcm90b3R5cGUuX2J1aWxkRGF0
YUdyaWQpOgorICAgICAgICAoV0kuTGF5ZXJEZXRhaWxzU2lkZWJhclBhbmVsLnByb3RvdHlwZS5f
ZGF0YUdyaWRTZWxlY3RlZE5vZGVDaGFuZ2VkKToKKyAgICAgICAgQWxsb3cgc2VsZWN0aW9uIHRv
IGJlIHVwZGF0ZWQgZnJvbSB0aGUgb3V0c2lkZS4KKworICAgICAgICAoV0kuTGF5ZXJEZXRhaWxz
U2lkZWJhclBhbmVsLnByb3RvdHlwZS5pbnNwZWN0KToKKyAgICAgICAgKFdJLkxheWVyRGV0YWls
c1NpZGViYXJQYW5lbC5wcm90b3R5cGUuX3VwZGF0ZUxheWVycyk6IFJlbmFtZWQgZnJvbSBfdXBk
YXRlRGlzcGxheVdpdGhMYXllcnMuCisgICAgICAgIChXSS5MYXllckRldGFpbHNTaWRlYmFyUGFu
ZWwucHJvdG90eXBlLl91cGRhdGVEYXRhR3JpZCk6CisgICAgICAgIChXSS5MYXllckRldGFpbHNT
aWRlYmFyUGFuZWwucHJvdG90eXBlLl91cGRhdGVCb3R0b21CYXIpOgorICAgICAgICAoV0kuTGF5
ZXJEZXRhaWxzU2lkZWJhclBhbmVsLnByb3RvdHlwZS5fY29udGVudEZvclBvcG92ZXIpOgorICAg
ICAgICAoV0kuTGF5ZXJEZXRhaWxzU2lkZWJhclBhbmVsLnByb3RvdHlwZS5fZGF0YUdyaWROb2Rl
Rm9yTGF5ZXIpOiBEZWxldGVkLgorICAgICAgICBDbGVhbnVwLgorICAgICAgICAKKyAgICAgICAg
KiBVc2VySW50ZXJmYWNlL1ZpZXdzL0xheWVyc1RhYkNvbnRlbnRWaWV3LmpzOgorICAgICAgICAo
V0kuTGF5ZXJzVGFiQ29udGVudFZpZXcpOgorICAgICAgICAoV0kuTGF5ZXJzVGFiQ29udGVudFZp
ZXcucHJvdG90eXBlLl9kZXRhaWxzU2lkZWJhclNlbGVjdGVkTGF5ZXJDaGFuZ2VkKToKKyAgICAg
ICAgKFdJLkxheWVyc1RhYkNvbnRlbnRWaWV3LnByb3RvdHlwZS5fY29udGVudFZpZXdTZWxlY3Rl
ZExheWVyQ2hhbmdlZCk6CisgICAgICAgIE9yY2hlc3RyYXRlIGNvbW11bmljYXRpb24gb2Ygc2Vs
ZWN0aW9uIHN0YXRlIGJldHdlZW4gdmlzdWFsaXphdGlvbiBhbmQgc2lkZWJhci4KKwogMjAxNy0x
MC0xMCAgUm9zcyBLaXJzbGluZyAgPHJvc3Mua2lyc2xpbmdAc29ueS5jb20+CiAKICAgICAgICAg
V2ViIEluc3BlY3RvcjogVmlld3Mgc2hvdWxkIGV4cGxpY2l0bHkgcmVtb3ZlIGV2ZW50IGxpc3Rl
bmVycyBmcm9tIG1hbmFnZXJzL0ZyYW1lCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9WaWV3cy9MYXllckRldGFpbHNTaWRlYmFyUGFuZWwuanMgYi9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9MYXllckRldGFpbHNTaWRlYmFy
UGFuZWwuanMKaW5kZXggZDA3NWU1ZTM4NzgwZTQ1OWUzOWM3MmU4YWU2M2FkZjQ2M2IxZDVhOC4u
YzFjZWVkNjBiMWI0MWY4YTIzZTE3NWEwMDlkZWM2Zjc0MWQ3NzgxOSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvTGF5ZXJEZXRhaWxzU2lkZWJh
clBhbmVsLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdz
L0xheWVyRGV0YWlsc1NpZGViYXJQYW5lbC5qcwpAQCAtNTEsNyArNTEsNyBAQCBXSS5MYXllckRl
dGFpbHNTaWRlYmFyUGFuZWwgPSBjbGFzcyBMYXllckRldGFpbHNTaWRlYmFyUGFuZWwgZXh0ZW5k
cyBXSS5EZXRhaWxzUwogICAgICAgICAgICAgb2JqZWN0cyA9IFtvYmplY3RzXTsKIAogICAgICAg
ICBsZXQgbGF5ZXJzID0gb2JqZWN0cy5maWx0ZXIoKG9iamVjdCkgPT4gb2JqZWN0IGluc3RhbmNl
b2YgV0kuTGF5ZXIpOwotICAgICAgICB0aGlzLl91cGRhdGVEaXNwbGF5V2l0aExheWVycyhsYXll
cnMpOworICAgICAgICB0aGlzLl91cGRhdGVMYXllcnMobGF5ZXJzKTsKIAogICAgICAgICByZXR1
cm4gISFsYXllcnMubGVuZ3RoOwogICAgIH0KQEAgLTYxLDYgKzYxLDE4IEBAIFdJLkxheWVyRGV0
YWlsc1NpZGViYXJQYW5lbCA9IGNsYXNzIExheWVyRGV0YWlsc1NpZGViYXJQYW5lbCBleHRlbmRz
IFdJLkRldGFpbHNTCiAgICAgICAgIHRoaXMuX3BvcG92ZXIgPSBudWxsOwogICAgIH0KIAorICAg
IHNlbGVjdE5vZGVCeUxheWVySWQobGF5ZXJJZCkKKyAgICB7CisgICAgICAgIGxldCBub2RlID0g
dGhpcy5fZGF0YUdyaWROb2Rlc0J5TGF5ZXJJZC5nZXQobGF5ZXJJZCk7CisgICAgICAgIGlmIChu
b2RlID09PSB0aGlzLl9kYXRhR3JpZC5zZWxlY3RlZE5vZGUpCisgICAgICAgICAgICByZXR1cm47
CisKKyAgICAgICAgaWYgKG5vZGUpCisgICAgICAgICAgICBub2RlLnJldmVhbEFuZFNlbGVjdCgp
OworICAgICAgICBlbHNlIGlmICh0aGlzLl9kYXRhR3JpZC5zZWxlY3RlZE5vZGUpCisgICAgICAg
ICAgICB0aGlzLl9kYXRhR3JpZC5zZWxlY3RlZE5vZGUuZGVzZWxlY3QoKTsKKyAgICB9CisKICAg
ICAvLyBQcml2YXRlCiAKICAgICBfYnVpbGREYXRhR3JpZCgpCkBAIC05Miw4ICsxMDQsMTMgQEAg
V0kuTGF5ZXJEZXRhaWxzU2lkZWJhclBhbmVsID0gY2xhc3MgTGF5ZXJEZXRhaWxzU2lkZWJhclBh
bmVsIGV4dGVuZHMgV0kuRGV0YWlsc1MKICAgICAgICAgdGhpcy5fZGF0YUdyaWQuc29ydE9yZGVy
ID0gV0kuRGF0YUdyaWQuU29ydE9yZGVyLkRlc2NlbmRpbmc7CiAgICAgICAgIHRoaXMuX2RhdGFH
cmlkLmNyZWF0ZVNldHRpbmdzKCJsYXllci1kZXRhaWxzLXNpZGViYXItcGFuZWwiKTsKIAotICAg
ICAgICB0aGlzLl9kYXRhR3JpZC5lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlbW92ZSIs
IHRoaXMuX2RhdGFHcmlkTW91c2VNb3ZlLmJpbmQodGhpcyksIGZhbHNlKTsKLSAgICAgICAgdGhp
cy5fZGF0YUdyaWQuZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJtb3VzZWxlYXZlIiwgdGhpcy5f
ZGF0YUdyaWRNb3VzZUxlYXZlLmJpbmQodGhpcyksIGZhbHNlKTsKKyAgICAgICAgdGhpcy5fZGF0
YUdyaWQuZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJtb3VzZW1vdmUiLCB0aGlzLl9kYXRhR3Jp
ZE1vdXNlTW92ZS5iaW5kKHRoaXMpKTsKKyAgICAgICAgdGhpcy5fZGF0YUdyaWQuZWxlbWVudC5h
ZGRFdmVudExpc3RlbmVyKCJtb3VzZWxlYXZlIiwgdGhpcy5fZGF0YUdyaWRNb3VzZUxlYXZlLmJp
bmQodGhpcykpOworCisgICAgICAgIC8vIEZJWE1FOiBXZSBjYW4ndCB1c2UgdmlydHVhbGl6ZWQg
cm93cyB1bnRpbCBEYXRhR3JpZCBpcyBhYmxlIHRvIHNjcm9sbCB0aGVtIHByb2dyYW1tYXRpY2Fs
bHkuCisgICAgICAgIC8vICAgICAgICBTZWUgVHJlZUVsZW1lbnQjcmV2ZWFsIC0+IFRyZWVPdXRs
aW5lI3VwZGF0ZVZpcnR1YWxpemVkRWxlbWVudHMgZm9yIGFuIGFuYWxvZ3kuCisgICAgICAgIHRo
aXMuX2RhdGFHcmlkLmlubGluZSA9IHRydWU7CisgICAgICAgIHRoaXMuX2RhdGFHcmlkLmVsZW1l
bnQuY2xhc3NMaXN0LnJlbW92ZSgiaW5saW5lIik7CiAKICAgICAgICAgdGhpcy5jb250ZW50Vmll
dy5hZGRTdWJ2aWV3KHRoaXMuX2RhdGFHcmlkKTsKICAgICB9CkBAIC0xMjUsNiArMTQyLDkgQEAg
V0kuTGF5ZXJEZXRhaWxzU2lkZWJhclBhbmVsID0gY2xhc3MgTGF5ZXJEZXRhaWxzU2lkZWJhclBh
bmVsIGV4dGVuZHMgV0kuRGV0YWlsc1MKIAogICAgIF9kYXRhR3JpZFNlbGVjdGVkTm9kZUNoYW5n
ZWQoKQogICAgIHsKKyAgICAgICAgbGV0IGxheWVySWQgPSB0aGlzLl9kYXRhR3JpZC5zZWxlY3Rl
ZE5vZGUgPyB0aGlzLl9kYXRhR3JpZC5zZWxlY3RlZE5vZGUubGF5ZXIubGF5ZXJJZCA6IG51bGw7
CisgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdJLkxheWVyRGV0YWlsc1Np
ZGViYXJQYW5lbC5FdmVudC5TZWxlY3RlZExheWVyQ2hhbmdlZCwge2xheWVySWR9KTsKKwogICAg
ICAgICB0aGlzLl9zaG93UG9wb3ZlckZvclNlbGVjdGVkTm9kZSgpOwogICAgIH0KIApAQCAtMTU5
LDYzICsxNzksNTIgQEAgV0kuTGF5ZXJEZXRhaWxzU2lkZWJhclBhbmVsID0gY2xhc3MgTGF5ZXJE
ZXRhaWxzU2lkZWJhclBhbmVsIGV4dGVuZHMgV0kuRGV0YWlsc1MKICAgICAgICAgdGhpcy5faG92
ZXJlZERhdGFHcmlkTm9kZSA9IG51bGw7CiAgICAgfQogCi0gICAgX3VwZGF0ZURpc3BsYXlXaXRo
TGF5ZXJzKG5ld0xheWVycykKKyAgICBfdXBkYXRlTGF5ZXJzKG5ld0xheWVycykKICAgICB7Ci0g
ICAgICAgIGxldCBwcmV2aW91c0xheWVycyA9IHRoaXMuX2xheWVyczsKLSAgICAgICAgdGhpcy5f
bGF5ZXJzID0gbmV3TGF5ZXJzOworICAgICAgICBpZiAodGhpcy5fcG9wb3ZlcikKKyAgICAgICAg
ICAgIHRoaXMuX3BvcG92ZXIuZGlzbWlzcygpOworCisgICAgICAgIHRoaXMuX3VwZGF0ZURhdGFH
cmlkKG5ld0xheWVycyk7CisgICAgICAgIHRoaXMuX3VwZGF0ZUJvdHRvbUJhcihuZXdMYXllcnMp
OwogCi0gICAgICAgIHRoaXMuX3VwZGF0ZURhdGFHcmlkKHByZXZpb3VzTGF5ZXJzKTsKLSAgICAg
ICAgdGhpcy5fdXBkYXRlQm90dG9tQmFyKCk7CisgICAgICAgIHRoaXMuX2xheWVycyA9IG5ld0xh
eWVyczsKICAgICB9CiAKLSAgICBfdXBkYXRlRGF0YUdyaWQocHJldmlvdXNMYXllcnMpCisgICAg
X3VwZGF0ZURhdGFHcmlkKG5ld0xheWVycykKICAgICB7CiAgICAgICAgIGlmICghdGhpcy5fZGF0
YUdyaWQpCiAgICAgICAgICAgICB0aGlzLl9idWlsZERhdGFHcmlkKCk7CiAKLSAgICAgICAgbGV0
IG11dGF0aW9ucyA9IFdJLmxheWVyVHJlZU1hbmFnZXIubGF5ZXJUcmVlTXV0YXRpb25zKHByZXZp
b3VzTGF5ZXJzLCB0aGlzLl9sYXllcnMpOworICAgICAgICBsZXQge3JlbW92YWxzLCBhZGRpdGlv
bnMsIHByZXNlcnZlZH0gPSBXSS5sYXllclRyZWVNYW5hZ2VyLmxheWVyVHJlZU11dGF0aW9ucyh0
aGlzLl9sYXllcnMsIG5ld0xheWVycyk7CiAKLSAgICAgICAgbXV0YXRpb25zLnJlbW92YWxzLmZv
ckVhY2goKGxheWVyKSA9PiB7CisgICAgICAgIHJlbW92YWxzLmZvckVhY2goKGxheWVyKSA9PiB7
CiAgICAgICAgICAgICBsZXQgbm9kZSA9IHRoaXMuX2RhdGFHcmlkTm9kZXNCeUxheWVySWQuZ2V0
KGxheWVyLmxheWVySWQpOwotICAgICAgICAgICAgaWYgKCFub2RlKQotICAgICAgICAgICAgICAg
IHJldHVybjsKLQogICAgICAgICAgICAgdGhpcy5fZGF0YUdyaWQucmVtb3ZlQ2hpbGQobm9kZSk7
CiAgICAgICAgICAgICB0aGlzLl9kYXRhR3JpZE5vZGVzQnlMYXllcklkLmRlbGV0ZShsYXllci5s
YXllcklkKTsKICAgICAgICAgfSk7CiAKLSAgICAgICAgbXV0YXRpb25zLmFkZGl0aW9ucy5mb3JF
YWNoKChsYXllcikgPT4gewotICAgICAgICAgICAgbGV0IG5vZGUgPSB0aGlzLl9kYXRhR3JpZE5v
ZGVGb3JMYXllcihsYXllcik7CisgICAgICAgIGFkZGl0aW9ucy5mb3JFYWNoKChsYXllcikgPT4g
eworICAgICAgICAgICAgbGV0IG5vZGUgPSBuZXcgV0kuTGF5ZXJUcmVlRGF0YUdyaWROb2RlKGxh
eWVyKTsKKyAgICAgICAgICAgIHRoaXMuX2RhdGFHcmlkTm9kZXNCeUxheWVySWQuc2V0KGxheWVy
LmxheWVySWQsIG5vZGUpOwogICAgICAgICAgICAgdGhpcy5fZGF0YUdyaWQuYXBwZW5kQ2hpbGQo
bm9kZSk7CiAgICAgICAgIH0pOwogCi0gICAgICAgIG11dGF0aW9ucy5wcmVzZXJ2ZWQuZm9yRWFj
aCgobGF5ZXIpID0+IHsKKyAgICAgICAgcHJlc2VydmVkLmZvckVhY2goKGxheWVyKSA9PiB7CiAg
ICAgICAgICAgICBsZXQgbm9kZSA9IHRoaXMuX2RhdGFHcmlkTm9kZXNCeUxheWVySWQuZ2V0KGxh
eWVyLmxheWVySWQpOwotICAgICAgICAgICAgaWYgKCFub2RlKQotICAgICAgICAgICAgICAgIHJl
dHVybjsKLQogICAgICAgICAgICAgbm9kZS5sYXllciA9IGxheWVyOwogICAgICAgICB9KTsKIAog
ICAgICAgICB0aGlzLl9zb3J0RGF0YUdyaWQoKTsKICAgICB9CiAKLSAgICBfZGF0YUdyaWROb2Rl
Rm9yTGF5ZXIobGF5ZXIpCi0gICAgewotICAgICAgICBsZXQgbm9kZSA9IG5ldyBXSS5MYXllclRy
ZWVEYXRhR3JpZE5vZGUobGF5ZXIpOwotICAgICAgICB0aGlzLl9kYXRhR3JpZE5vZGVzQnlMYXll
cklkLnNldChsYXllci5sYXllcklkLCBub2RlKTsKLQotICAgICAgICByZXR1cm4gbm9kZTsKLSAg
ICB9Ci0KLSAgICBfdXBkYXRlQm90dG9tQmFyKCkKKyAgICBfdXBkYXRlQm90dG9tQmFyKG5ld0xh
eWVycykKICAgICB7CiAgICAgICAgIGlmICghdGhpcy5fYm90dG9tQmFyKQogICAgICAgICAgICAg
dGhpcy5fYnVpbGRCb3R0b21CYXIoKTsKIAotICAgICAgICB0aGlzLl9sYXllcnNDb3VudExhYmVs
LnRleHRDb250ZW50ID0gV0kuVUlTdHJpbmcoIkxheWVyIENvdW50OiAlZCIpLmZvcm1hdCh0aGlz
Ll9sYXllcnMubGVuZ3RoKTsKKyAgICAgICAgdGhpcy5fbGF5ZXJzQ291bnRMYWJlbC50ZXh0Q29u
dGVudCA9IFdJLlVJU3RyaW5nKCJMYXllciBDb3VudDogJWQiKS5mb3JtYXQobmV3TGF5ZXJzLmxl
bmd0aCk7CiAKLSAgICAgICAgbGV0IHRvdGFsTWVtb3J5ID0gdGhpcy5fbGF5ZXJzLnJlZHVjZSgo
dG90YWwsIGxheWVyKSA9PiB0b3RhbCArIChsYXllci5tZW1vcnkgfHwgMCksIDApOworICAgICAg
ICBsZXQgdG90YWxNZW1vcnkgPSBuZXdMYXllcnMucmVkdWNlKCh0b3RhbCwgbGF5ZXIpID0+IHRv
dGFsICsgKGxheWVyLm1lbW9yeSB8fCAwKSwgMCk7CiAgICAgICAgIHRoaXMuX2xheWVyc01lbW9y
eUxhYmVsLnRleHRDb250ZW50ID0gV0kuVUlTdHJpbmcoIk1lbW9yeTogJXMiKS5mb3JtYXQoTnVt
YmVyLmJ5dGVzVG9TdHJpbmcodG90YWxNZW1vcnkpKTsKICAgICB9CiAKQEAgLTI3MywxMiArMjgy
LDggQEAgV0kuTGF5ZXJEZXRhaWxzU2lkZWJhclBhbmVsID0gY2xhc3MgTGF5ZXJEZXRhaWxzU2lk
ZWJhclBhbmVsIGV4dGVuZHMgV0kuRGV0YWlsc1MKICAgICAgICAgbGV0IGxpc3QgPSBjb250ZW50
LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInVsIikpOwogCiAgICAgICAgIFdJ
LmxheWVyVHJlZU1hbmFnZXIucmVhc29uc0ZvckNvbXBvc2l0aW5nTGF5ZXIobGF5ZXIsIChjb21w
b3NpdGluZ1JlYXNvbnMpID0+IHsKLSAgICAgICAgICAgIGlmIChpc0VtcHR5T2JqZWN0KGNvbXBv
c2l0aW5nUmVhc29ucykpIHsKLSAgICAgICAgICAgICAgICBjYWxsYmFjayhjb250ZW50KTsKLSAg
ICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICB9Ci0KLSAgICAgICAgICAgIHRoaXMu
X3BvcHVsYXRlTGlzdE9mQ29tcG9zaXRpbmdSZWFzb25zKGxpc3QsIGNvbXBvc2l0aW5nUmVhc29u
cyk7CisgICAgICAgICAgICBpZiAoIWlzRW1wdHlPYmplY3QoY29tcG9zaXRpbmdSZWFzb25zKSkK
KyAgICAgICAgICAgICAgICB0aGlzLl9wb3B1bGF0ZUxpc3RPZkNvbXBvc2l0aW5nUmVhc29ucyhs
aXN0LCBjb21wb3NpdGluZ1JlYXNvbnMpOwogCiAgICAgICAgICAgICBjYWxsYmFjayhjb250ZW50
KTsKICAgICAgICAgfSk7CkBAIC0zNDksMyArMzU0LDcgQEAgV0kuTGF5ZXJEZXRhaWxzU2lkZWJh
clBhbmVsID0gY2xhc3MgTGF5ZXJEZXRhaWxzU2lkZWJhclBhbmVsIGV4dGVuZHMgV0kuRGV0YWls
c1MKICAgICAgICAgICAgIGFkZFJlYXNvbihXSS5VSVN0cmluZygiRWxlbWVudCBoYXMg4oCcYmxl
bmQtbW9kZeKAnSBzdHlsZSIpKTsKICAgICB9CiB9OworCitXSS5MYXllckRldGFpbHNTaWRlYmFy
UGFuZWwuRXZlbnQgPSB7CisgICAgU2VsZWN0ZWRMYXllckNoYW5nZWQ6ICJzZWxlY3RlZC1sYXll
ci1jaGFuZ2VkIgorfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL1ZpZXdzL0xheWVyczNEQ29udGVudFZpZXcuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9WaWV3cy9MYXllcnMzRENvbnRlbnRWaWV3LmpzCmluZGV4IDZjZTli
NDQ4MGNlMDg3OTkyNjY5MDczMmUxMzA4YTBjZmU4M2I5OTguLmIxM2FlYmQ0NGQyYWQxYzM1Yzg3
MWZjMDNiMTcyYjkxZTQyODFlZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL1ZpZXdzL0xheWVyczNEQ29udGVudFZpZXcuanMKKysrIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvTGF5ZXJzM0RDb250ZW50Vmlldy5qcwpA
QCAtMzQsMTMgKzM0LDE2IEBAIFdJLkxheWVyczNEQ29udGVudFZpZXcgPSBjbGFzcyBMYXllcnMz
RENvbnRlbnRWaWV3IGV4dGVuZHMgV0kuQ29udGVudFZpZXcKICAgICAgICAgV0kubGF5ZXJUcmVl
TWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdJLkxheWVyVHJlZU1hbmFnZXIuRXZlbnQuTGF5ZXJU
cmVlRGlkQ2hhbmdlLCB0aGlzLl9sYXllclRyZWVEaWRDaGFuZ2UsIHRoaXMpOwogCiAgICAgICAg
IHRoaXMuX2xheWVycyA9IFtdOworICAgICAgICB0aGlzLl9sYXllckdyb3Vwc0J5SWQgPSBuZXcg
TWFwOworICAgICAgICB0aGlzLl9zZWxlY3RlZExheWVyR3JvdXAgPSBudWxsOwogICAgICAgICB0
aGlzLl9sYXllcnNDaGFuZ2VkV2hpbGVIaWRkZW4gPSBmYWxzZTsKKwogICAgICAgICB0aGlzLl9y
ZW5kZXJlciA9IG51bGw7CiAgICAgICAgIHRoaXMuX2NhbWVyYSA9IG51bGw7CiAgICAgICAgIHRo
aXMuX2NvbnRyb2xzID0gbnVsbDsKLSAgICAgICAgdGhpcy5fYm91bmRzR3JvdXAgPSBudWxsOwot
ICAgICAgICB0aGlzLl9jb21wb3NpdGVkQm91bmRzR3JvdXAgPSBudWxsOwogICAgICAgICB0aGlz
Ll9zY2VuZSA9IG51bGw7CisgICAgICAgIHRoaXMuX3JheWNhc3RlciA9IG51bGw7CisgICAgICAg
IHRoaXMuX21vdXNlID0gbnVsbDsKICAgICAgICAgdGhpcy5fYW5pbWF0aW9uRnJhbWVSZXF1ZXN0
SWQgPSBudWxsOwogICAgIH0KIApAQCAtNzksNiArODIsMTIgQEAgV0kuTGF5ZXJzM0RDb250ZW50
VmlldyA9IGNsYXNzIExheWVyczNEQ29udGVudFZpZXcgZXh0ZW5kcyBXSS5Db250ZW50Vmlldwog
ICAgICAgICBzdXBlci5jbG9zZWQoKTsKICAgICB9CiAKKyAgICBzZWxlY3RMYXllckJ5SWQobGF5
ZXJJZCkKKyAgICB7CisgICAgICAgIGxldCBsYXllckdyb3VwID0gdGhpcy5fbGF5ZXJHcm91cHNC
eUlkLmdldChsYXllcklkKTsKKyAgICAgICAgdGhpcy5fdXBkYXRlTGF5ZXJHcm91cFNlbGVjdGlv
bihsYXllckdyb3VwKTsKKyAgICB9CisKICAgICAvLyBQcm90ZWN0ZWQKIAogICAgIGluaXRpYWxM
YXlvdXQoKQpAQCAtMTAwLDEzICsxMDksMTIgQEAgV0kuTGF5ZXJzM0RDb250ZW50VmlldyA9IGNs
YXNzIExheWVyczNEQ29udGVudFZpZXcgZXh0ZW5kcyBXSS5Db250ZW50VmlldwogICAgICAgICB0
aGlzLl9jb250cm9scy5taW5BemltdXRoQW5nbGUgPSAtTWF0aC5QSSAvIDI7CiAgICAgICAgIHRo
aXMuX2NvbnRyb2xzLm1heEF6aW11dGhBbmdsZSA9IE1hdGguUEkgLyAyOwogCi0gICAgICAgIHRo
aXMuX2JvdW5kc0dyb3VwID0gbmV3IFRIUkVFLkdyb3VwKCk7Ci0gICAgICAgIHRoaXMuX2NvbXBv
c2l0ZWRCb3VuZHNHcm91cCA9IG5ldyBUSFJFRS5Hcm91cCgpOwotCi0gICAgICAgIHRoaXMuX3Nj
ZW5lID0gbmV3IFRIUkVFLlNjZW5lKCk7CisgICAgICAgIHRoaXMuX3NjZW5lID0gbmV3IFRIUkVF
LlNjZW5lOwogICAgICAgICB0aGlzLl9zY2VuZS5wb3NpdGlvbi5zZXQoLXRoaXMuZWxlbWVudC5v
ZmZzZXRXaWR0aCAvIDIsIHRoaXMuZWxlbWVudC5vZmZzZXRIZWlnaHQgLyAyLCAwKTsKLSAgICAg
ICAgdGhpcy5fc2NlbmUuYWRkKHRoaXMuX2JvdW5kc0dyb3VwKTsKLSAgICAgICAgdGhpcy5fc2Nl
bmUuYWRkKHRoaXMuX2NvbXBvc2l0ZWRCb3VuZHNHcm91cCk7CisKKyAgICAgICAgdGhpcy5fcmF5
Y2FzdGVyID0gbmV3IFRIUkVFLlJheWNhc3RlcjsKKyAgICAgICAgdGhpcy5fbW91c2UgPSBuZXcg
VEhSRUUuVmVjdG9yMjsKKyAgICAgICAgdGhpcy5fcmVuZGVyZXIuZG9tRWxlbWVudC5hZGRFdmVu
dExpc3RlbmVyKCJtb3VzZWRvd24iLCB0aGlzLl9jYW52YXNNb3VzZURvd24uYmluZCh0aGlzKSk7
CiAKICAgICAgICAgdGhpcy5lbGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX3JlbmRlcmVyLmRvbUVs
ZW1lbnQpOwogCkBAIC0xMjAsMTEgKzEyOCw3IEBAIFdJLkxheWVyczNEQ29udGVudFZpZXcgPSBj
bGFzcyBMYXllcnMzRENvbnRlbnRWaWV3IGV4dGVuZHMgV0kuQ29udGVudFZpZXcKIAogICAgICAg
ICBXSS5kb21UcmVlTWFuYWdlci5yZXF1ZXN0RG9jdW1lbnQoKG5vZGUpID0+IHsKICAgICAgICAg
ICAgIFdJLmxheWVyVHJlZU1hbmFnZXIubGF5ZXJzRm9yTm9kZShub2RlLCAobGF5ZXJGb3JOb2Rl
LCBjaGlsZExheWVycykgPT4gewotICAgICAgICAgICAgICAgIHRoaXMuX2NsZWFyTGF5ZXJzKCk7
Ci0gICAgICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjaGlsZExheWVycy5sZW5ndGg7
IGkrKykKLSAgICAgICAgICAgICAgICAgICAgdGhpcy5fYWRkTGF5ZXIoY2hpbGRMYXllcnNbaV0s
IGkpOwotCi0gICAgICAgICAgICAgICAgdGhpcy5fbGF5ZXJzID0gY2hpbGRMYXllcnM7CisgICAg
ICAgICAgICAgICAgdGhpcy5fdXBkYXRlTGF5ZXJzKGNoaWxkTGF5ZXJzKTsKICAgICAgICAgICAg
ICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXSS5Db250ZW50Vmlldy5FdmVudC5T
ZWxlY3Rpb25QYXRoQ29tcG9uZW50c0RpZENoYW5nZSk7CiAgICAgICAgICAgICB9KTsKICAgICAg
ICAgfSk7CkBAIC0xNjYsMzAgKzE3MCw1OCBAQCBXSS5MYXllcnMzRENvbnRlbnRWaWV3ID0gY2xh
c3MgTGF5ZXJzM0RDb250ZW50VmlldyBleHRlbmRzIFdJLkNvbnRlbnRWaWV3CiAgICAgICAgIHRo
aXMuX2FuaW1hdGlvbkZyYW1lUmVxdWVzdElkID0gbnVsbDsKICAgICB9CiAKLSAgICBfY2xlYXJM
YXllcnMoKQorICAgIF91cGRhdGVMYXllcnMobmV3TGF5ZXJzKQogICAgIHsKLSAgICAgICAgdGhp
cy5fYm91bmRzR3JvdXAuY2hpbGRyZW4ubGVuZ3RoID0gMDsKLSAgICAgICAgdGhpcy5fY29tcG9z
aXRlZEJvdW5kc0dyb3VwLmNoaWxkcmVuLmxlbmd0aCA9IDA7CisgICAgICAgIC8vIEZJWE1FOiBU
aGlzIHNob3VsZCBiZSBtYWRlIGludG8gdGhlIGJhc2ljIHVzYWdlIG9mIHRoZSBtYW5hZ2VyLCBp
ZiBub3QgdGhlIGFnZW50IGl0c2VsZi4KKyAgICAgICAgLy8gICAgICAgIEF0IHRoYXQgcG9pbnQs
IHdlIGNhbiByZW1vdmUgdGhpcyBkdXBsaWNhdGlvbiBmcm9tIHRoZSB2aXN1YWxpemF0aW9uIGFu
ZCBzaWRlYmFyLgorICAgICAgICBsZXQge3JlbW92YWxzLCBhZGRpdGlvbnMsIHByZXNlcnZlZH0g
PSBXSS5sYXllclRyZWVNYW5hZ2VyLmxheWVyVHJlZU11dGF0aW9ucyh0aGlzLl9sYXllcnMsIG5l
d0xheWVycyk7CisKKyAgICAgICAgZm9yIChsZXQgbGF5ZXIgb2YgcmVtb3ZhbHMpIHsKKyAgICAg
ICAgICAgIGxldCBsYXllckdyb3VwID0gdGhpcy5fbGF5ZXJHcm91cHNCeUlkLmdldChsYXllci5s
YXllcklkKTsKKyAgICAgICAgICAgIHRoaXMuX3NjZW5lLnJlbW92ZShsYXllckdyb3VwKTsKKyAg
ICAgICAgICAgIHRoaXMuX2xheWVyR3JvdXBzQnlJZC5kZWxldGUobGF5ZXIubGF5ZXJJZCk7Cisg
ICAgICAgIH0KKworICAgICAgICBpZiAodGhpcy5fc2VsZWN0ZWRMYXllckdyb3VwICYmICF0aGlz
Ll9sYXllckdyb3Vwc0J5SWQuZ2V0KHRoaXMuX3NlbGVjdGVkTGF5ZXJHcm91cC51c2VyRGF0YS5s
YXllcklkKSkKKyAgICAgICAgICAgIHRoaXMuc2VsZWN0ZWRMYXllckdyb3VwID0gbnVsbDsKKwor
ICAgICAgICBhZGRpdGlvbnMuZm9yRWFjaCh0aGlzLl9hZGRMYXllckdyb3VwLCB0aGlzKTsKKyAg
ICAgICAgcHJlc2VydmVkLmZvckVhY2godGhpcy5fdXBkYXRlTGF5ZXJHcm91cFBvc2l0aW9uLCB0
aGlzKTsKKworICAgICAgICB0aGlzLl9sYXllcnMgPSBuZXdMYXllcnM7CiAgICAgfQogCi0gICAg
X2FkZExheWVyKGxheWVyLCBpbmRleCkKKyAgICBfYWRkTGF5ZXJHcm91cChsYXllciwgaW5kZXgp
CiAgICAgewotICAgICAgICB0aGlzLl9ib3VuZHNHcm91cC5hZGQodGhpcy5fY3JlYXRlTGF5ZXJN
ZXNoKGxheWVyLmJvdW5kcywgaW5kZXgpKTsKLSAgICAgICAgdGhpcy5fY29tcG9zaXRlZEJvdW5k
c0dyb3VwLmFkZCh0aGlzLl9jcmVhdGVMYXllck1lc2gobGF5ZXIuY29tcG9zaXRlZEJvdW5kcywg
aW5kZXgsIHRydWUpKTsKKyAgICAgICAgbGV0IGxheWVyR3JvdXAgPSBuZXcgVEhSRUUuR3JvdXA7
CisgICAgICAgIGxheWVyR3JvdXAudXNlckRhdGEubGF5ZXJJZCA9IGxheWVyLmxheWVySWQ7Cisg
ICAgICAgIGxheWVyR3JvdXAuYWRkKHRoaXMuX2NyZWF0ZUxheWVyTWVzaChsYXllci5ib3VuZHMp
KTsKKyAgICAgICAgbGF5ZXJHcm91cC5hZGQodGhpcy5fY3JlYXRlTGF5ZXJNZXNoKGxheWVyLmNv
bXBvc2l0ZWRCb3VuZHMsIHRydWUpKTsKKworICAgICAgICB0aGlzLl9sYXllckdyb3Vwc0J5SWQu
c2V0KGxheWVyLmxheWVySWQsIGxheWVyR3JvdXApOworICAgICAgICB0aGlzLl91cGRhdGVMYXll
ckdyb3VwUG9zaXRpb24obGF5ZXIsIGluZGV4KTsKKworICAgICAgICB0aGlzLl9zY2VuZS5hZGQo
bGF5ZXJHcm91cCk7CiAgICAgfQogCi0gICAgX2NyZWF0ZUxheWVyTWVzaChyZWN0LCBpbmRleCwg
aXNPdXRsaW5lID0gZmFsc2UpCi0gICAgeworICAgIF91cGRhdGVMYXllckdyb3VwUG9zaXRpb24o
bGF5ZXIsIGluZGV4KSB7CisgICAgICAgIGxldCBsYXllckdyb3VwID0gdGhpcy5fbGF5ZXJHcm91
cHNCeUlkLmdldChsYXllci5sYXllcklkKTsKKyAgICAgICAgY29uc29sZS5hc3NlcnQobGF5ZXJH
cm91cCk7CisKICAgICAgICAgY29uc3QgekludGVydmFsID0gMjU7CisgICAgICAgIGxheWVyR3Jv
dXAucG9zaXRpb24uc2V0KGxheWVyLmJvdW5kcy54LCAtbGF5ZXIuYm91bmRzLnksIGluZGV4ICog
ekludGVydmFsKTsKKyAgICB9CiAKLSAgICAgICAgbGV0IGdlb21ldHJ5ID0gbmV3IFRIUkVFLkdl
b21ldHJ5KCk7Ci0gICAgICAgIGdlb21ldHJ5LnZlcnRpY2VzLnB1c2gobmV3IFRIUkVFLlZlY3Rv
cjMocmVjdC54LCAgICAgICAgICAgICAgLXJlY3QueSwgICAgICAgICAgICAgICBpbmRleCAqIHpJ
bnRlcnZhbCkpOwotICAgICAgICBnZW9tZXRyeS52ZXJ0aWNlcy5wdXNoKG5ldyBUSFJFRS5WZWN0
b3IzKHJlY3QueCArIHJlY3Qud2lkdGgsIC1yZWN0LnksICAgICAgICAgICAgICAgaW5kZXggKiB6
SW50ZXJ2YWwpKTsKLSAgICAgICAgZ2VvbWV0cnkudmVydGljZXMucHVzaChuZXcgVEhSRUUuVmVj
dG9yMyhyZWN0LnggKyByZWN0LndpZHRoLCAtcmVjdC55IC0gcmVjdC5oZWlnaHQsIGluZGV4ICog
ekludGVydmFsKSk7Ci0gICAgICAgIGdlb21ldHJ5LnZlcnRpY2VzLnB1c2gobmV3IFRIUkVFLlZl
Y3RvcjMocmVjdC54LCAgICAgICAgICAgICAgLXJlY3QueSAtIHJlY3QuaGVpZ2h0LCBpbmRleCAq
IHpJbnRlcnZhbCkpOworICAgIF9jcmVhdGVMYXllck1lc2goe3dpZHRoLCBoZWlnaHR9LCBpc091
dGxpbmUgPSBmYWxzZSkKKyAgICB7CisgICAgICAgIGxldCBnZW9tZXRyeSA9IG5ldyBUSFJFRS5H
ZW9tZXRyeTsKKyAgICAgICAgZ2VvbWV0cnkudmVydGljZXMucHVzaChuZXcgVEhSRUUuVmVjdG9y
MygwLCAgICAgMCwgICAgICAgMCkpOworICAgICAgICBnZW9tZXRyeS52ZXJ0aWNlcy5wdXNoKG5l
dyBUSFJFRS5WZWN0b3IzKHdpZHRoLCAwLCAgICAgICAwKSk7CisgICAgICAgIGdlb21ldHJ5LnZl
cnRpY2VzLnB1c2gobmV3IFRIUkVFLlZlY3RvcjMod2lkdGgsIC1oZWlnaHQsIDApKTsKKyAgICAg
ICAgZ2VvbWV0cnkudmVydGljZXMucHVzaChuZXcgVEhSRUUuVmVjdG9yMygwLCAgICAgLWhlaWdo
dCwgMCkpOwogCiAgICAgICAgIGlmIChpc091dGxpbmUpIHsKLSAgICAgICAgICAgIGxldCBtYXRl
cmlhbCA9IG5ldyBUSFJFRS5MaW5lQmFzaWNNYXRlcmlhbCh7Y29sb3I6ICJoc2woNzksIDQ1JSwg
NTAlKSJ9KTsKKyAgICAgICAgICAgIGxldCBtYXRlcmlhbCA9IG5ldyBUSFJFRS5MaW5lQmFzaWNN
YXRlcmlhbCh7Y29sb3I6IFdJLkxheWVyczNEQ29udGVudFZpZXcuX2xheWVyQ29sb3Iuc3Ryb2tl
fSk7CiAgICAgICAgICAgICByZXR1cm4gbmV3IFRIUkVFLkxpbmVMb29wKGdlb21ldHJ5LCBtYXRl
cmlhbCk7CiAgICAgICAgIH0KIApAQCAtMTk3LDcgKzIyOSw3IEBAIFdJLkxheWVyczNEQ29udGVu
dFZpZXcgPSBjbGFzcyBMYXllcnMzRENvbnRlbnRWaWV3IGV4dGVuZHMgV0kuQ29udGVudFZpZXcK
ICAgICAgICAgZ2VvbWV0cnkuZmFjZXMucHVzaChuZXcgVEhSRUUuRmFjZTMoMSwgMiwgMykpOwog
CiAgICAgICAgIGxldCBtYXRlcmlhbCA9IG5ldyBUSFJFRS5NZXNoQmFzaWNNYXRlcmlhbCh7Ci0g
ICAgICAgICAgICBjb2xvcjogImhzbCg3NiwgNDklLCA3NSUpIiwKKyAgICAgICAgICAgIGNvbG9y
OiBXSS5MYXllcnMzRENvbnRlbnRWaWV3Ll9sYXllckNvbG9yLmZpbGwsCiAgICAgICAgICAgICB0
cmFuc3BhcmVudDogdHJ1ZSwKICAgICAgICAgICAgIG9wYWNpdHk6IDAuNCwKICAgICAgICAgICAg
IHNpZGU6IFRIUkVFLkRvdWJsZVNpZGUsCkBAIC0yMDUsNCArMjM3LDU3IEBAIFdJLkxheWVyczNE
Q29udGVudFZpZXcgPSBjbGFzcyBMYXllcnMzRENvbnRlbnRWaWV3IGV4dGVuZHMgV0kuQ29udGVu
dFZpZXcKIAogICAgICAgICByZXR1cm4gbmV3IFRIUkVFLk1lc2goZ2VvbWV0cnksIG1hdGVyaWFs
KTsKICAgICB9CisKKyAgICBfY2FudmFzTW91c2VEb3duKGV2ZW50KQorICAgIHsKKyAgICAgICAg
dGhpcy5fbW91c2UueCA9IChldmVudC5vZmZzZXRYIC8gZXZlbnQudGFyZ2V0LndpZHRoKSAqIDIg
LSAxOworICAgICAgICB0aGlzLl9tb3VzZS55ID0gLShldmVudC5vZmZzZXRZIC8gZXZlbnQudGFy
Z2V0LmhlaWdodCkgKiAyICsgMTsKKyAgICAgICAgdGhpcy5fcmF5Y2FzdGVyLnNldEZyb21DYW1l
cmEodGhpcy5fbW91c2UsIHRoaXMuX2NhbWVyYSk7CisKKyAgICAgICAgY29uc3QgcmVjdXJzaXZl
ID0gdHJ1ZTsKKyAgICAgICAgbGV0IGludGVyc2VjdHMgPSB0aGlzLl9yYXljYXN0ZXIuaW50ZXJz
ZWN0T2JqZWN0cyh0aGlzLl9zY2VuZS5jaGlsZHJlbiwgcmVjdXJzaXZlKTsKKyAgICAgICAgbGV0
IHNlbGVjdGlvbiA9IGludGVyc2VjdHMubGVuZ3RoID8gaW50ZXJzZWN0c1swXS5vYmplY3QucGFy
ZW50IDogbnVsbDsKKyAgICAgICAgaWYgKHNlbGVjdGlvbiAmJiBzZWxlY3Rpb24gPT09IHRoaXMu
X3NlbGVjdGVkTGF5ZXJHcm91cCkgeworICAgICAgICAgICAgaWYgKCFldmVudC5tZXRhS2V5KQor
ICAgICAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICAgICAgc2VsZWN0aW9uID0gbnVsbDsK
KyAgICAgICAgfQorCisgICAgICAgIHRoaXMuX3VwZGF0ZUxheWVyR3JvdXBTZWxlY3Rpb24oc2Vs
ZWN0aW9uKTsKKworICAgICAgICBsZXQgbGF5ZXJJZCA9IHNlbGVjdGlvbiA/IHNlbGVjdGlvbi51
c2VyRGF0YS5sYXllcklkIDogbnVsbDsKKyAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0
ZW5lcnMoV0kuTGF5ZXJzM0RDb250ZW50Vmlldy5FdmVudC5TZWxlY3RlZExheWVyQ2hhbmdlZCwg
e2xheWVySWR9KTsKKyAgICB9CisKKyAgICBfdXBkYXRlTGF5ZXJHcm91cFNlbGVjdGlvbihsYXll
ckdyb3VwKQorICAgIHsKKyAgICAgICAgbGV0IHNldENvbG9yID0gKHtmaWxsLCBzdHJva2V9KSA9
PiB7CisgICAgICAgICAgICBsZXQgW3BsYW5lLCBvdXRsaW5lXSA9IHRoaXMuX3NlbGVjdGVkTGF5
ZXJHcm91cC5jaGlsZHJlbjsKKyAgICAgICAgICAgIHBsYW5lLm1hdGVyaWFsLmNvbG9yLnNldChm
aWxsKTsKKyAgICAgICAgICAgIG91dGxpbmUubWF0ZXJpYWwuY29sb3Iuc2V0KHN0cm9rZSk7Cisg
ICAgICAgIH07CisKKyAgICAgICAgaWYgKHRoaXMuX3NlbGVjdGVkTGF5ZXJHcm91cCkKKyAgICAg
ICAgICAgIHNldENvbG9yKFdJLkxheWVyczNEQ29udGVudFZpZXcuX2xheWVyQ29sb3IpOworCisg
ICAgICAgIHRoaXMuX3NlbGVjdGVkTGF5ZXJHcm91cCA9IGxheWVyR3JvdXA7CisKKyAgICAgICAg
aWYgKHRoaXMuX3NlbGVjdGVkTGF5ZXJHcm91cCkKKyAgICAgICAgICAgIHNldENvbG9yKFdJLkxh
eWVyczNEQ29udGVudFZpZXcuX3NlbGVjdGVkTGF5ZXJDb2xvcik7CisgICAgfQorfTsKKworV0ku
TGF5ZXJzM0RDb250ZW50Vmlldy5fbGF5ZXJDb2xvciA9IHsKKyAgICBmaWxsOiAiaHNsKDc2LCA0
OSUsIDc1JSkiLAorICAgIHN0cm9rZTogImhzbCg3OSwgNDUlLCA1MCUpIgorfTsKKworV0kuTGF5
ZXJzM0RDb250ZW50Vmlldy5fc2VsZWN0ZWRMYXllckNvbG9yID0geworICAgIGZpbGw6ICJoc2wo
MjA4LCA2NiUsIDc5JSkiLAorICAgIHN0cm9rZTogImhzbCgyMDIsIDU3JSwgNjglKSIKK307CisK
K1dJLkxheWVyczNEQ29udGVudFZpZXcuRXZlbnQgPSB7CisgICAgU2VsZWN0ZWRMYXllckNoYW5n
ZWQ6ICJzZWxlY3RlZC1sYXllci1jaGFuZ2VkIgogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0xheWVyc1RhYkNvbnRlbnRWaWV3LmpzIGIv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvTGF5ZXJzVGFiQ29udGVu
dFZpZXcuanMKaW5kZXggZGY2ZDllNTIyNjgzYmYxNTc3ZmE3NzNiZTQxM2ZkMDAwYjJmZTlkNi4u
NDM2Zjk1MWU0NjE3OGJmY2IxY2I5ZTNmMTA1MTZiNzVkNGNjMjZiYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvTGF5ZXJzVGFiQ29udGVudFZp
ZXcuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvTGF5
ZXJzVGFiQ29udGVudFZpZXcuanMKQEAgLTM1LDcgKzM1LDExIEBAIFdJLkxheWVyc1RhYkNvbnRl
bnRWaWV3ID0gY2xhc3MgTGF5ZXJzVGFiQ29udGVudFZpZXcgZXh0ZW5kcyBXSS5Db250ZW50QnJv
d3NlclRhCiAgICAgICAgIGNvbnN0IGRpc2FibGVCYWNrRm9yd2FyZCA9IHRydWU7CiAgICAgICAg
IHN1cGVyKCJsYXllcnMiLCAibGF5ZXJzIiwgdGFiQmFySXRlbSwgbmF2aWdhdGlvblNpZGViYXJQ
YW5lbENvbnN0cnVjdG9yLCBkZXRhaWxzU2lkZWJhclBhbmVsQ29uc3RydWN0b3JzLCBkaXNhYmxl
QmFja0ZvcndhcmQpOwogCisgICAgICAgIHRoaXMuX2xheWVyRGV0YWlsc1NpZGViYXJQYW5lbCA9
IHRoaXMuZGV0YWlsc1NpZGViYXJQYW5lbHNbMF07CisgICAgICAgIHRoaXMuX2xheWVyRGV0YWls
c1NpZGViYXJQYW5lbC5hZGRFdmVudExpc3RlbmVyKFdJLkxheWVyRGV0YWlsc1NpZGViYXJQYW5l
bC5FdmVudC5TZWxlY3RlZExheWVyQ2hhbmdlZCwgdGhpcy5fZGV0YWlsc1NpZGViYXJTZWxlY3Rl
ZExheWVyQ2hhbmdlZCwgdGhpcyk7CisKICAgICAgICAgdGhpcy5fbGF5ZXJzM0RDb250ZW50Vmll
dyA9IG5ldyBXSS5MYXllcnMzRENvbnRlbnRWaWV3OworICAgICAgICB0aGlzLl9sYXllcnMzRENv
bnRlbnRWaWV3LmFkZEV2ZW50TGlzdGVuZXIoV0kuTGF5ZXJzM0RDb250ZW50Vmlldy5FdmVudC5T
ZWxlY3RlZExheWVyQ2hhbmdlZCwgdGhpcy5fY29udGVudFZpZXdTZWxlY3RlZExheWVyQ2hhbmdl
ZCwgdGhpcyk7CiAgICAgfQogCiAgICAgLy8gU3RhdGljCkBAIC02NCw2ICs2OCwxOCBAQCBXSS5M
YXllcnNUYWJDb250ZW50VmlldyA9IGNsYXNzIExheWVyc1RhYkNvbnRlbnRWaWV3IGV4dGVuZHMg
V0kuQ29udGVudEJyb3dzZXJUYQogCiAgICAgICAgIHRoaXMuY29udGVudEJyb3dzZXIuc2hvd0Nv
bnRlbnRWaWV3KHRoaXMuX2xheWVyczNEQ29udGVudFZpZXcpOwogICAgIH0KKworICAgIC8vIFBy
aXZhdGUKKworICAgIF9kZXRhaWxzU2lkZWJhclNlbGVjdGVkTGF5ZXJDaGFuZ2VkKGV2ZW50KQor
ICAgIHsKKyAgICAgICAgdGhpcy5fbGF5ZXJzM0RDb250ZW50Vmlldy5zZWxlY3RMYXllckJ5SWQo
ZXZlbnQuZGF0YS5sYXllcklkKTsKKyAgICB9CisKKyAgICBfY29udGVudFZpZXdTZWxlY3RlZExh
eWVyQ2hhbmdlZChldmVudCkKKyAgICB7CisgICAgICAgIHRoaXMuX2xheWVyRGV0YWlsc1NpZGVi
YXJQYW5lbC5zZWxlY3ROb2RlQnlMYXllcklkKGV2ZW50LmRhdGEubGF5ZXJJZCk7CisgICAgfQog
fTsKIAogV0kuTGF5ZXJzVGFiQ29udGVudFZpZXcuVHlwZSA9ICJsYXllcnMiOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>