<?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>177419</bug_id>
          
          <creation_ts>2017-09-24 10:42:00 -0700</creation_ts>
          <short_desc>Web Inspector: Create ResourceCollectionContentView and make CollectionContentView easier to extend</short_desc>
          <delta_ts>2017-09-27 13:55:36 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Inspector</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>175485</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Matt Baker">mattbaker</reporter>
          <assigned_to name="Matt Baker">mattbaker</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>1352079</commentid>
    <comment_count>0</comment_count>
    <who name="Matt Baker">mattbaker</who>
    <bug_when>2017-09-24 10:42:00 -0700</bug_when>
    <thetext>Summary:
Create ResourceCollectionContentView and make CollectionContentView easier to extend.

CollectionContentView should be generic, work with any represented object Collection, and not perform any type checking. It should just map items to ContentViews using the provided ContentView constructor.

class CollectionContentView extends ContentView
{
    constructor(collection, contentViewConstructor, title)

    // Public

    addContentViewForItem(item)
    removeContentViewForItem(item)

    // Protected

    contentViewAdded(contentView)
    selectedItemChanged(previousSelection, selectedItem)
}

Subclasses can override `contentViewAdded` and `selectedItemChanged` to add behavior, such as toggling CSS classes or calling WI.showRepresentedObject.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1352080</commentid>
    <comment_count>1</comment_count>
      <attachid>321656</attachid>
    <who name="Matt Baker">mattbaker</who>
    <bug_when>2017-09-24 10:56:06 -0700</bug_when>
    <thetext>Created attachment 321656
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1352331</commentid>
    <comment_count>2</comment_count>
    <who name="Matt Baker">mattbaker</who>
    <bug_when>2017-09-25 12:31:34 -0700</bug_when>
    <thetext>I suppose `title` could be a ResourceCollectionContentView thing, rather than being in the base class. Will change.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1352509</commentid>
    <comment_count>3</comment_count>
      <attachid>321772</attachid>
    <who name="Matt Baker">mattbaker</who>
    <bug_when>2017-09-25 17:06:28 -0700</bug_when>
    <thetext>Created attachment 321772
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1352522</commentid>
    <comment_count>4</comment_count>
    <who name="Matt Baker">mattbaker</who>
    <bug_when>2017-09-25 17:21:45 -0700</bug_when>
    <thetext>(In reply to Matt Baker from comment #2)
&gt; I suppose `title` could be a ResourceCollectionContentView thing, rather
&gt; than being in the base class. Will change.

Decided to keep it in the base class, so that subclasses can provide an empty message.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1352533</commentid>
    <comment_count>5</comment_count>
      <attachid>321772</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2017-09-25 17:50:11 -0700</bug_when>
    <thetext>Comment on attachment 321772
Patch

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

r-, mainly because I think there is some logic inside ResourceCollectionContentView that shouldn&apos;t be there.  If your goal is to truly split these apart, I think you tweak it slightly.

&gt; Source/WebInspectorUI/ChangeLog:36
&gt; +        Made public.

NIT: it&apos;s up to you, but I don&apos;t really find these types of comments that useful.

&gt; Source/WebInspectorUI/UserInterface/Views/CollectionContentView.js:36
&gt; +        this._contentPlaceholder = new WI.TitleView(contentPlaceholerText || WI.UIString(&quot;No Items&quot;));

Instead of &quot;No Text&quot;, perhaps you can create a function for all of the non-resource types we can see in a Collection that provides some text:

    static titleForCollectionType(collection)
    {
        if (!collection || !collection.typeVerifier)
            return WI.UIString(&quot;Collection&quot;); // or something else...

        switch (collection.typeVerifier) {
        case Any:
            return WI.UIString(&quot;Collection&quot;);

        case Frame:
            return WI.UIString(&quot;Frames&quot;);

        case Resource:
            if (collection instanceof WI.ResourceCollection)
                return WI.ResourceCollection.titleForCollectionType(collection); // you&apos;d have to create this function
            return WI.UIString(&quot;Resources&quot;);

        case Script:
            return WI.UIString(&quot;Scripts&quot;);

        case CSSStyleSheet:
            return WI.UIString(&quot;Stylesheets&quot;);

        case Canvas:
            return WI.UIString(&quot;Canvases&quot;);

        case ShaderProgram:
            return WI.UIString(&quot;Shader Programs&quot;);
        }

        console.error(&quot;Unknown type verifier for collection&quot;, collection.typeVerifier);
        return WI.UIString(&quot;Collection&quot;);
    }

&gt; Source/WebInspectorUI/UserInterface/Views/CollectionContentView.js:45
&gt; +    addContentViewForItem(item)

NIT: why does this need to be public?  The only user of this (and `removeContentViewForItem`) is a subclass, so could it be protected instead?

&gt; Source/WebInspectorUI/UserInterface/Views/CollectionContentView.js:63
&gt; +            this.selectedItemChanged(previousSelection, item);

I would imagine that most callers wouldn&apos;t care too much about the previous selection, so I&apos;d reverse the order of the arguments:

    this.selectedItemChanged(item, previousSelection);

&gt; Source/WebInspectorUI/UserInterface/Views/CollectionContentView.js:74
&gt; +    removeContentViewForItem(item)

Ditto (45)

&gt; Source/WebInspectorUI/UserInterface/Views/ContentView.js:165
&gt; +            return new WI.ResourceCollectionContentView(representedObject, extraArguments);

I don&apos;t think this is what we want to do, as this won&apos;t work for Canvases.  We will only want to create a ResourceCollectionContentView if we have an instance of ResourceCollection.

As a side note, it looks like there&apos;s an existing bug in that selecting the Canvases folder doesn&apos;t show any text.  We should probably fix that :|

&gt; Source/WebInspectorUI/UserInterface/Views/ResourceCollectionContentView.js:36
&gt; +            contentViewConstructor = collection.resourceType === WI.Resource.Type.Image ? WI.ImageResourceContentView : null;

Instead of having this ternary, I think it&apos;d be cleaner to just use an if:

    if (collection.resourceType === WI.Resource.Type.Image)
        contentViewConstructor = WI.ImageResourceContentView;

&gt; Source/WebInspectorUI/UserInterface/Views/ResourceCollectionContentView.js:52
&gt; +        } else {
&gt; +            switch (collection.typeVerifier) {
&gt; +            case WI.Collection.TypeVerifier.Frame:
&gt; +                title = WI.UIString(&quot;Frames&quot;);
&gt; +                break;
&gt; +
&gt; +            case WI.Collection.TypeVerifier.Script:
&gt; +                title = WI.UIString(&quot;Extra Scripts&quot;);
&gt; +                break;
&gt; +
&gt; +            case WI.Collection.TypeVerifier.Resource:
&gt; +                title = WI.UIString(&quot;Resource&quot;);
&gt; +                break;
&gt; +            }
&gt; +        }

It seems odd to have this inside ResourceCollectionContentView.  I would expect the provided collection to be a ResourceCollection, and would consider it an error if just a Collection was provided.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1352569</commentid>
    <comment_count>6</comment_count>
      <attachid>321772</attachid>
    <who name="Matt Baker">mattbaker</who>
    <bug_when>2017-09-25 20:55:03 -0700</bug_when>
    <thetext>Comment on attachment 321772
Patch

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

&gt; Source/WebInspectorUI/UserInterface/Views/CollectionContentView.js:50
&gt; +        if (this._contentViewConstructor.parentView)

Oops.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1352695</commentid>
    <comment_count>7</comment_count>
      <attachid>321827</attachid>
    <who name="Matt Baker">mattbaker</who>
    <bug_when>2017-09-26 09:52:43 -0700</bug_when>
    <thetext>Created attachment 321827
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1352698</commentid>
    <comment_count>8</comment_count>
      <attachid>321772</attachid>
    <who name="Matt Baker">mattbaker</who>
    <bug_when>2017-09-26 09:55:36 -0700</bug_when>
    <thetext>Comment on attachment 321772
Patch

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

&gt;&gt; Source/WebInspectorUI/ChangeLog:36
&gt;&gt; +        Made public.
&gt; 
&gt; NIT: it&apos;s up to you, but I don&apos;t really find these types of comments that useful.

Removed.

&gt;&gt; Source/WebInspectorUI/UserInterface/Views/CollectionContentView.js:36
&gt;&gt; +        this._contentPlaceholder = new WI.TitleView(contentPlaceholerText || WI.UIString(&quot;No Items&quot;));
&gt; 
&gt; Instead of &quot;No Text&quot;, perhaps you can create a function for all of the non-resource types we can see in a Collection that provides some text:
&gt; 
&gt;     static titleForCollectionType(collection)
&gt;     {
&gt;         if (!collection || !collection.typeVerifier)
&gt;             return WI.UIString(&quot;Collection&quot;); // or something else...
&gt; 
&gt;         switch (collection.typeVerifier) {
&gt;         case Any:
&gt;             return WI.UIString(&quot;Collection&quot;);
&gt; 
&gt;         case Frame:
&gt;             return WI.UIString(&quot;Frames&quot;);
&gt; 
&gt;         case Resource:
&gt;             if (collection instanceof WI.ResourceCollection)
&gt;                 return WI.ResourceCollection.titleForCollectionType(collection); // you&apos;d have to create this function
&gt;             return WI.UIString(&quot;Resources&quot;);
&gt; 
&gt;         case Script:
&gt;             return WI.UIString(&quot;Scripts&quot;);
&gt; 
&gt;         case CSSStyleSheet:
&gt;             return WI.UIString(&quot;Stylesheets&quot;);
&gt; 
&gt;         case Canvas:
&gt;             return WI.UIString(&quot;Canvases&quot;);
&gt; 
&gt;         case ShaderProgram:
&gt;             return WI.UIString(&quot;Shader Programs&quot;);
&gt;         }
&gt; 
&gt;         console.error(&quot;Unknown type verifier for collection&quot;, collection.typeVerifier);
&gt;         return WI.UIString(&quot;Collection&quot;);
&gt;     }

Done!

&gt;&gt; Source/WebInspectorUI/UserInterface/Views/CollectionContentView.js:45
&gt;&gt; +    addContentViewForItem(item)
&gt; 
&gt; NIT: why does this need to be public?  The only user of this (and `removeContentViewForItem`) is a subclass, so could it be protected instead?

Moved to the protected section.

&gt;&gt; Source/WebInspectorUI/UserInterface/Views/CollectionContentView.js:63
&gt;&gt; +            this.selectedItemChanged(previousSelection, item);
&gt; 
&gt; I would imagine that most callers wouldn&apos;t care too much about the previous selection, so I&apos;d reverse the order of the arguments:
&gt; 
&gt;     this.selectedItemChanged(item, previousSelection);

This has been changed to an event.

&gt;&gt; Source/WebInspectorUI/UserInterface/Views/ResourceCollectionContentView.js:52
&gt;&gt; +        }
&gt; 
&gt; It seems odd to have this inside ResourceCollectionContentView.  I would expect the provided collection to be a ResourceCollection, and would consider it an error if just a Collection was provided.

Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1352701</commentid>
    <comment_count>9</comment_count>
      <attachid>321829</attachid>
    <who name="Matt Baker">mattbaker</who>
    <bug_when>2017-09-26 09:59:14 -0700</bug_when>
    <thetext>Created attachment 321829
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1352756</commentid>
    <comment_count>10</comment_count>
      <attachid>321829</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2017-09-26 11:11:15 -0700</bug_when>
    <thetext>Comment on attachment 321829
Patch

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

&gt; Source/WebInspectorUI/UserInterface/Views/CollectionContentView.js:154
&gt; +        this.representedObject.addEventListener(WI.Collection.Event.ItemAdded, this._handleItemAdded, this);
&gt; +        this.representedObject.addEventListener(WI.Collection.Event.ItemRemoved, this._handleItemRemoved, this);

I think this might have an issue with items that were added in the following scenario:

1. CollectionContentView is shown (initialLayout and attached)
2. A different item in the NavigationSidebar is selected (detached)
3. Items are added to the Collection (which would fire WI.Collection.Event.ItemAdded)
4. The CollectionContentView is shown again (attached)
=&gt; Items are missing from the shown list

We probably want to modify addContentViewForItem to early-return in the case that item is already in _contentViewMap.  This means that all the logic inside initialLayout should really be inside attached, right before the event listeners are added.

&gt; Source/WebInspectorUI/UserInterface/Views/CollectionContentView.js:209
&gt; +        console.error(&quot;Unknown type verifier for collection.&quot;, typeVerifier);

It is allowed for Collection to not have a typeVerifier, so we might only want to error if it is not null.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1352782</commentid>
    <comment_count>11</comment_count>
      <attachid>321829</attachid>
    <who name="Matt Baker">mattbaker</who>
    <bug_when>2017-09-26 12:07:06 -0700</bug_when>
    <thetext>Comment on attachment 321829
Patch

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

&gt;&gt; Source/WebInspectorUI/UserInterface/Views/CollectionContentView.js:154
&gt;&gt; +        this.representedObject.addEventListener(WI.Collection.Event.ItemRemoved, this._handleItemRemoved, this);
&gt; 
&gt; I think this might have an issue with items that were added in the following scenario:
&gt; 
&gt; 1. CollectionContentView is shown (initialLayout and attached)
&gt; 2. A different item in the NavigationSidebar is selected (detached)
&gt; 3. Items are added to the Collection (which would fire WI.Collection.Event.ItemAdded)
&gt; 4. The CollectionContentView is shown again (attached)
&gt; =&gt; Items are missing from the shown list
&gt; 
&gt; We probably want to modify addContentViewForItem to early-return in the case that item is already in _contentViewMap.  This means that all the logic inside initialLayout should really be inside attached, right before the event listeners are added.

We should just track pending added and removed items and sync ContentViews during layout.

&gt;&gt; Source/WebInspectorUI/UserInterface/Views/CollectionContentView.js:209
&gt;&gt; +        console.error(&quot;Unknown type verifier for collection.&quot;, typeVerifier);
&gt; 
&gt; It is allowed for Collection to not have a typeVerifier, so we might only want to error if it is not null.

It could also have a type verifier that isn&apos;t a property of WI.Collection.TypeVerifier. We probably shouldn&apos;t error, even if it is non-null.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1352798</commentid>
    <comment_count>12</comment_count>
      <attachid>321829</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2017-09-26 13:04:14 -0700</bug_when>
    <thetext>Comment on attachment 321829
Patch

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

&gt;&gt;&gt; Source/WebInspectorUI/UserInterface/Views/CollectionContentView.js:154
&gt;&gt;&gt; +        this.representedObject.addEventListener(WI.Collection.Event.ItemRemoved, this._handleItemRemoved, this);
&gt;&gt; 
&gt;&gt; I think this might have an issue with items that were added in the following scenario:
&gt;&gt; 
&gt;&gt; 1. CollectionContentView is shown (initialLayout and attached)
&gt;&gt; 2. A different item in the NavigationSidebar is selected (detached)
&gt;&gt; 3. Items are added to the Collection (which would fire WI.Collection.Event.ItemAdded)
&gt;&gt; 4. The CollectionContentView is shown again (attached)
&gt;&gt; =&gt; Items are missing from the shown list
&gt;&gt; 
&gt;&gt; We probably want to modify addContentViewForItem to early-return in the case that item is already in _contentViewMap.  This means that all the logic inside initialLayout should really be inside attached, right before the event listeners are added.
&gt; 
&gt; We should just track pending added and removed items and sync ContentViews during layout.

This means that an additional set/array is needed to keep track of added items, and more management logic is required to handle this.  I&apos;d personally prefer to keep UI logic confined to only things that are visible, and I think that it would be logically simpler to just iterate over the existing items and compare to the ones in the Collection.  If the view is never attached() again, then all of this management work is unnecessary.

    for (let item of this._contentViewMap.keys()) {
        if (!this.representedObject.items.has(item))
            this.removeContentViewForItem(item);
    }

    for (let item of this.representedObject.items) {
        if (!this._contentViewMap.has(item))
            this.addContentViewForItem(item);
    }

&gt;&gt;&gt; Source/WebInspectorUI/UserInterface/Views/CollectionContentView.js:209
&gt;&gt;&gt; +        console.error(&quot;Unknown type verifier for collection.&quot;, typeVerifier);
&gt;&gt; 
&gt;&gt; It is allowed for Collection to not have a typeVerifier, so we might only want to error if it is not null.
&gt; 
&gt; It could also have a type verifier that isn&apos;t a property of WI.Collection.TypeVerifier. We probably shouldn&apos;t error, even if it is non-null.

In that case, something custom should be provided in the constructor for `contentPlaceholerText`.  I&apos;d want an error to show here so that if we use this in the future we don&apos;t miss it (exactly like what happened with Canvas).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1352817</commentid>
    <comment_count>13</comment_count>
    <who name="Matt Baker">mattbaker</who>
    <bug_when>2017-09-26 13:43:46 -0700</bug_when>
    <thetext>(In reply to Devin Rousso from comment #12)
&gt; Comment on attachment 321829 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=321829&amp;action=review
&gt; 
&gt; &gt;&gt;&gt; Source/WebInspectorUI/UserInterface/Views/CollectionContentView.js:154
&gt; &gt;&gt;&gt; +        this.representedObject.addEventListener(WI.Collection.Event.ItemRemoved, this._handleItemRemoved, this);
&gt; &gt;&gt; 
&gt; &gt;&gt; I think this might have an issue with items that were added in the following scenario:
&gt; &gt;&gt; 
&gt; &gt;&gt; 1. CollectionContentView is shown (initialLayout and attached)
&gt; &gt;&gt; 2. A different item in the NavigationSidebar is selected (detached)
&gt; &gt;&gt; 3. Items are added to the Collection (which would fire WI.Collection.Event.ItemAdded)
&gt; &gt;&gt; 4. The CollectionContentView is shown again (attached)
&gt; &gt;&gt; =&gt; Items are missing from the shown list
&gt; &gt;&gt; 
&gt; &gt;&gt; We probably want to modify addContentViewForItem to early-return in the case that item is already in _contentViewMap.  This means that all the logic inside initialLayout should really be inside attached, right before the event listeners are added.
&gt; &gt; 
&gt; &gt; We should just track pending added and removed items and sync ContentViews during layout.
&gt; 
&gt; This means that an additional set/array is needed to keep track of added
&gt; items, and more management logic is required to handle this.  I&apos;d personally
&gt; prefer to keep UI logic confined to only things that are visible, and I
&gt; think that it would be logically simpler to just iterate over the existing
&gt; items and compare to the ones in the Collection.  If the view is never
&gt; attached() again, then all of this management work is unnecessary.
&gt; 
&gt;     for (let item of this._contentViewMap.keys()) {
&gt;         if (!this.representedObject.items.has(item))
&gt;             this.removeContentViewForItem(item);
&gt;     }

I like this approach, but WeakMap keys cannot be iterated. We&apos;ll need to make it a regular Map.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1352824</commentid>
    <comment_count>14</comment_count>
      <attachid>321864</attachid>
    <who name="Matt Baker">mattbaker</who>
    <bug_when>2017-09-26 13:59:44 -0700</bug_when>
    <thetext>Created attachment 321864
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1352826</commentid>
    <comment_count>15</comment_count>
      <attachid>321829</attachid>
    <who name="Matt Baker">mattbaker</who>
    <bug_when>2017-09-26 14:01:58 -0700</bug_when>
    <thetext>Comment on attachment 321829
Patch

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

&gt;&gt;&gt;&gt; Source/WebInspectorUI/UserInterface/Views/CollectionContentView.js:209
&gt;&gt;&gt;&gt; +        console.error(&quot;Unknown type verifier for collection.&quot;, typeVerifier);
&gt;&gt;&gt; 
&gt;&gt;&gt; It is allowed for Collection to not have a typeVerifier, so we might only want to error if it is not null.
&gt;&gt; 
&gt;&gt; It could also have a type verifier that isn&apos;t a property of WI.Collection.TypeVerifier. We probably shouldn&apos;t error, even if it is non-null.
&gt; 
&gt; In that case, something custom should be provided in the constructor for `contentPlaceholerText`.  I&apos;d want an error to show here so that if we use this in the future we don&apos;t miss it (exactly like what happened with Canvas).

I just made this a console.warn instead, and updated the output message.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1353134</commentid>
    <comment_count>16</comment_count>
      <attachid>321963</attachid>
    <who name="Matt Baker">mattbaker</who>
    <bug_when>2017-09-27 09:32:36 -0700</bug_when>
    <thetext>Created attachment 321963
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1353137</commentid>
    <comment_count>17</comment_count>
    <who name="Matt Baker">mattbaker</who>
    <bug_when>2017-09-27 09:35:01 -0700</bug_when>
    <thetext>(In reply to Matt Baker from comment #16)
&gt; Created attachment 321963 [details]
&gt; Patch

Two changes:
- Use ContentView SupplementalRepresentedObjectsDidChange instead of custom item selection events/hooks.
- Update supplemental represented objects/selection style if the selected item&apos;s ContentView is removed.
- Get rid of ItemClicked event. Go back to just calling WI.showRepresentedObject.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1353138</commentid>
    <comment_count>18</comment_count>
    <who name="Matt Baker">mattbaker</who>
    <bug_when>2017-09-27 09:35:14 -0700</bug_when>
    <thetext>Er, three changes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1353161</commentid>
    <comment_count>19</comment_count>
      <attachid>321971</attachid>
    <who name="Matt Baker">mattbaker</who>
    <bug_when>2017-09-27 10:28:13 -0700</bug_when>
    <thetext>Created attachment 321971
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1353552</commentid>
    <comment_count>20</comment_count>
      <attachid>321971</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2017-09-27 12:38:11 -0700</bug_when>
    <thetext>Comment on attachment 321971
Patch

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

r=me, with a few NITs.

&gt; Source/WebInspectorUI/UserInterface/Views/CollectionContentView.js:28
&gt; +    constructor(collection, contentViewConstructor, contentPlaceholerText)

NIT: typo &quot;contentPlaceholerText&quot; =&gt; &quot;contentPlaceholderText&quot; (missing a &apos;d&apos;)

&gt; Source/WebInspectorUI/UserInterface/Views/CollectionContentView.js:167
&gt; +                if (this._selectedItem === item) {

Style: remove brackets.

&gt; Source/WebInspectorUI/UserInterface/Views/CollectionContentView.js:212
&gt; +    _defaultTitle()

NIT: this could probably be static.

    WI.CollectionContentView.titleForCollection()

...or something like that

&gt; Source/WebInspectorUI/UserInterface/Views/CollectionContentView.js:243
&gt; +            contentView.element.classList.remove(&quot;selected&quot;);

Should we also have an if checking the existence of `contentView`, or is the assertion enough?  Are we doing this mainly for developing purposes or are we trying to avoid crashes?

&gt; Source/WebInspectorUI/UserInterface/Views/CollectionContentView.js:250
&gt; +            console.assert(selectedContentView, &quot;Missing ContentView for selected item.&quot;, this._selectedItem);

Ditto (243).

&gt; Source/WebInspectorUI/UserInterface/Views/CollectionContentView.js:254
&gt; +        this.dispatchEventToListeners(WI.ContentView.Event.SupplementalRepresentedObjectsDidChange);

Nice!  Didn&apos;t even know this existed :P

&gt; Source/WebInspectorUI/UserInterface/Views/ResourceCollectionContentView.js:36
&gt; +        let title = WI.Resource.displayNameForType(collection.resourceType, true);

NIT: use const variable for inline values.

    const plural = true;
    let title = WI.Resource.displayNameForType(collection.resourceType, plural);

&gt; Source/WebInspectorUI/UserInterface/Views/ResourceCollectionContentView.js:38
&gt; +        super(collection, contentViewConstructor, title);

NIT: CollectionContentView uses `contentPlaceholderText` instead of `title`.  I&apos;d prefer to keep the names consistent.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1353764</commentid>
    <comment_count>21</comment_count>
      <attachid>322005</attachid>
    <who name="Matt Baker">mattbaker</who>
    <bug_when>2017-09-27 13:00:58 -0700</bug_when>
    <thetext>Created attachment 322005
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1353816</commentid>
    <comment_count>22</comment_count>
      <attachid>322005</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-09-27 13:41:06 -0700</bug_when>
    <thetext>Comment on attachment 322005
Patch for landing

Clearing flags on attachment: 322005

Committed r222573: &lt;http://trac.webkit.org/changeset/222573&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1353817</commentid>
    <comment_count>23</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-09-27 13:41:08 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1353823</commentid>
    <comment_count>24</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-09-27 13:55:36 -0700</bug_when>
    <thetext>&lt;rdar://problem/34696168&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>321656</attachid>
            <date>2017-09-24 10:56:06 -0700</date>
            <delta_ts>2017-09-25 17:06:26 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-177419-20170924105606.patch</filename>
            <type>text/plain</type>
            <size>17071</size>
            <attacher name="Matt Baker">mattbaker</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIyNDM0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwppbmRleCBl
OGEzNDBhOTE1YTBiMGUzZWMyNzViNzQyNzc0NTRmNWUyMzM0OGVjLi45YzZiZjUwODRlYzQ4NmQ2
MDhmMmNjZDQwZTlhZThmM2U3NDFkOWI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw0NyBAQAorMjAxNy0wOS0yNCAgTWF0dCBCYWtlciAgPG1hdHRiYWtlckBhcHBsZS5jb20+
CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogQ3JlYXRlIFJlc291cmNlQ29sbGVjdGlvbkNvbnRl
bnRWaWV3IGFuZCBtYWtlIENvbGxlY3Rpb25Db250ZW50VmlldyBlYXNpZXIgdG8gZXh0ZW5kCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzc0MTkKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDb2xsZWN0aW9u
Q29udGVudFZpZXcgc2hvdWxkIGJlIGdlbmVyaWMsIHdvcmsgd2l0aCBhbnkgcmVwcmVzZW50ZWQg
b2JqZWN0CisgICAgICAgIENvbGxlY3Rpb24sIGFuZCBub3QgcGVyZm9ybSBhbnkgdHlwZSBjaGVj
a2luZy4gSXQgc2hvdWxkIGp1c3QgbWFwIGl0ZW1zIHRvCisgICAgICAgIENvbnRlbnRWaWV3cyB1
c2luZyB0aGUgcHJvdmlkZWQgQ29udGVudFZpZXcgY29uc3RydWN0b3IuCisKKyAgICAgICAgKiBV
c2VySW50ZXJmYWNlL01haW4uaHRtbDoKKyAgICAgICAgTmV3IGZpbGUsIG1vdmUgQ29sbGVjdGlv
bkNvbnRlbnRWaWV3IGFib3ZlIHN1YmNsYXNzZXMuCisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNl
L1ZpZXdzL0NvbGxlY3Rpb25Db250ZW50Vmlldy5qczoKKyAgICAgICAgTW92ZSB0eXBlIGNoZWNr
aW5nIG9mIHRoZSBjb2xsZWN0aW9uIG91dCBvZiB0aGUgYmFzZSBjbGFzcyBhbmQgYXNzZXJ0Cisg
ICAgICAgIHRoYXQgQ29udGVudFZpZXdzIGFyZSBjcmVhdGVkIHdoZW4gaW52b2tpbmcgYGNvbnRl
bnRWaWV3Q29uc3RydWN0b3JgLgorICAgICAgICAoV0kuQ29sbGVjdGlvbkNvbnRlbnRWaWV3KToK
KyAgICAgICAgKFdJLkNvbGxlY3Rpb25Db250ZW50Vmlldy5wcm90b3R5cGUuYWRkQ29udGVudFZp
ZXdGb3JJdGVtKToKKyAgICAgICAgKFdJLkNvbGxlY3Rpb25Db250ZW50Vmlldy5wcm90b3R5cGUu
cmVtb3ZlQ29udGVudFZpZXdGb3JJdGVtKToKKyAgICAgICAgKFdJLkNvbGxlY3Rpb25Db250ZW50
Vmlldy5wcm90b3R5cGUuc2VsZWN0ZWRJdGVtQ2hhbmdlZCk6CisgICAgICAgIChXSS5Db2xsZWN0
aW9uQ29udGVudFZpZXcucHJvdG90eXBlLmluaXRpYWxMYXlvdXQpOgorICAgICAgICAoV0kuQ29s
bGVjdGlvbkNvbnRlbnRWaWV3LnByb3RvdHlwZS5hdHRhY2hlZCk6CisgICAgICAgIChXSS5Db2xs
ZWN0aW9uQ29udGVudFZpZXcucHJvdG90eXBlLmRldGFjaGVkKToKKyAgICAgICAgKFdJLkNvbGxl
Y3Rpb25Db250ZW50Vmlldy5wcm90b3R5cGUuX2hhbmRsZUl0ZW1BZGRlZCk6CisgICAgICAgIChX
SS5Db2xsZWN0aW9uQ29udGVudFZpZXcucHJvdG90eXBlLl9oYW5kbGVJdGVtUmVtb3ZlZCk6Cisg
ICAgICAgIChXSS5Db2xsZWN0aW9uQ29udGVudFZpZXcucHJvdG90eXBlLl9hZGRDb250ZW50Vmll
d0Zvckl0ZW0pOiBEZWxldGVkLgorICAgICAgICAoV0kuQ29sbGVjdGlvbkNvbnRlbnRWaWV3LnBy
b3RvdHlwZS5fcmVtb3ZlQ29udGVudFZpZXdGb3JJdGVtKTogRGVsZXRlZC4KKyAgICAgICAgTWFk
ZSBwdWJsaWMuCisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL0NvbnRlbnRWaWV3Lmpz
OgorICAgICAgICAoV0kuQ29udGVudFZpZXcuY3JlYXRlRnJvbVJlcHJlc2VudGVkT2JqZWN0KToK
KyAgICAgICAgQ3JlYXRlIGEgUmVzb3VyY2VDb2xsZWN0aW9uQ29udGVudFZpZXcuIEluIHRoZSBm
dXR1cmUsIGFkZGl0aW9uYWwKKyAgICAgICAgQ29sbGVjdGlvbiB0eXBlcyBjYW4gYmUgbWFwcGVk
IHRvIHRoZWlyIGFzc29jaWF0ZWQgQ29sbGVjdGlvbkNvbnRlbnRWaWV3LgorCisgICAgICAgICog
VXNlckludGVyZmFjZS9WaWV3cy9SZXNvdXJjZUNvbGxlY3Rpb25Db250ZW50Vmlldy5qczogQWRk
ZWQuCisgICAgICAgIFJlbG9jYXRlZCByZXNvdXJjZS1zcGVjaWZpYyBsb2dpYyBmcm9tIENvbGxl
Y3Rpb25Db250ZW50VmlldyB0byBhCisgICAgICAgIHNlcGFyYXRlIGNsYXNzLgorICAgICAgICAo
V0kuUmVzb3VyY2VDb2xsZWN0aW9uQ29udGVudFZpZXcpOgorICAgICAgICAoV0kuUmVzb3VyY2VD
b2xsZWN0aW9uQ29udGVudFZpZXcucHJvdG90eXBlLmNvbnRlbnRWaWV3QWRkZWQpOgorICAgICAg
ICAoV0kuUmVzb3VyY2VDb2xsZWN0aW9uQ29udGVudFZpZXcucHJvdG90eXBlLnNlbGVjdGVkSXRl
bUNoYW5nZWQpOgorICAgICAgICAoV0kuUmVzb3VyY2VDb2xsZWN0aW9uQ29udGVudFZpZXcucHJv
dG90eXBlLl9oYW5kbGVDb250ZW50RXJyb3IpOgorICAgICAgICBSZW1vdmUgQ29udGVudFZpZXcg
d2l0aG91dCByZW1vdmluZyB0aGUgcmVzb3VyY2UgZnJvbSBpdHMgY29sbGVjdGlvbi4KKwogMjAx
Ny0wOS0yMiAgTWF0dCBCYWtlciAgPG1hdHRiYWtlckBhcHBsZS5jb20+CiAKICAgICAgICAgV2Vi
IEluc3BlY3RvcjogUmVtb3ZlIFNpZGViYXJQYW5lbCBzaG93L2hpZGUgYW5kIGFkZGVkL3JlbW92
ZWQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01haW4u
aHRtbCBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01haW4uaHRtbAppbmRl
eCAxMmEyOTViZjJmYzkxMTQ0NDc3Zjg4Yzk0ZTI4N2IxZGNiN2YzZjc3Li4yYzhkNTM3MDhmMjY5
MzM4NDNlMzhjZDVjNzgxZjA5ZDVmOWIzZTM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9NYWluLmh0bWwKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvTWFpbi5odG1sCkBAIC01MTYsNiArNTE2LDggQEAKICAgICA8c2NyaXB0
IHNyYz0iVmlld3MvU2V0dGluZ3NHcm91cC5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9
IlZpZXdzL1NldHRpbmdzVmlldy5qcyI+PC9zY3JpcHQ+CiAKKyAgICA8c2NyaXB0IHNyYz0iVmll
d3MvQ29sbGVjdGlvbkNvbnRlbnRWaWV3LmpzIj48L3NjcmlwdD4KKwogICAgIDxzY3JpcHQgc3Jj
PSJWaWV3cy9BY3RpdmF0ZUJ1dHRvbk5hdmlnYXRpb25JdGVtLmpzIj48L3NjcmlwdD4KICAgICA8
c2NyaXB0IHNyYz0iVmlld3MvQWN0aXZhdGVCdXR0b25Ub29sYmFySXRlbS5qcyI+PC9zY3JpcHQ+
CiAgICAgPHNjcmlwdCBzcmM9IlZpZXdzL0FwcGxpY2F0aW9uQ2FjaGVEZXRhaWxzU2lkZWJhclBh
bmVsLmpzIj48L3NjcmlwdD4KQEAgLTU0NCw3ICs1NDYsNiBAQAogICAgIDxzY3JpcHQgc3JjPSJW
aWV3cy9Db2RlTWlycm9yRm9ybWF0dGVycy5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9
IlZpZXdzL0NvZGVNaXJyb3JSZWdleE1vZGUuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3Jj
PSJWaWV3cy9Db2RlTWlycm9yVGV4dE1hcmtlcnMuanMiPjwvc2NyaXB0PgotICAgIDxzY3JpcHQg
c3JjPSJWaWV3cy9Db2xsZWN0aW9uQ29udGVudFZpZXcuanMiPjwvc2NyaXB0PgogICAgIDxzY3Jp
cHQgc3JjPSJWaWV3cy9Db2xvclBpY2tlci5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9
IlZpZXdzL0NvbG9yV2hlZWwuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJWaWV3cy9D
b21wbGV0aW9uU3VnZ2VzdGlvbnNWaWV3LmpzIj48L3NjcmlwdD4KQEAgLTY3Niw2ICs2NzcsNyBA
QAogICAgIDxzY3JpcHQgc3JjPSJWaWV3cy9SZW5kZXJpbmdGcmFtZVRpbWVsaW5lVmlldy5qcyI+
PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IlZpZXdzL1Jlc2l6ZXIuanMiPjwvc2NyaXB0Pgog
ICAgIDxzY3JpcHQgc3JjPSJWaWV3cy9SZXNvdXJjZUNsdXN0ZXJDb250ZW50Vmlldy5qcyI+PC9z
Y3JpcHQ+CisgICAgPHNjcmlwdCBzcmM9IlZpZXdzL1Jlc291cmNlQ29sbGVjdGlvbkNvbnRlbnRW
aWV3LmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iVmlld3MvUmVzb3VyY2VEZXRhaWxz
U2lkZWJhclBhbmVsLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iVmlld3MvUmVzb3Vy
Y2VTaWRlYmFyUGFuZWwuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJWaWV3cy9SZXNv
dXJjZVRpbWVsaW5lRGF0YUdyaWROb2RlLmpzIj48L3NjcmlwdD4KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvbGxlY3Rpb25Db250ZW50Vmll
dy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvbGxlY3Rp
b25Db250ZW50Vmlldy5qcwppbmRleCAwMzcyZDEzNzBmNmJiZWM3YzgyMWU2OWQyOTAwNjNhNDkz
NmUyM2VhLi4yMjkzOTA4OTMxMTA4ODI5ZmVmNjIzMDI5MmM4NThkZTMzZjQxOGY2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Db2xsZWN0aW9u
Q29udGVudFZpZXcuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
Vmlld3MvQ29sbGVjdGlvbkNvbnRlbnRWaWV3LmpzCkBAIC0yNSwxMTggKzI1LDUxIEBACiAKIFdJ
LkNvbGxlY3Rpb25Db250ZW50VmlldyA9IGNsYXNzIENvbGxlY3Rpb25Db250ZW50VmlldyBleHRl
bmRzIFdJLkNvbnRlbnRWaWV3CiB7Ci0gICAgY29uc3RydWN0b3IoY29sbGVjdGlvbikKKyAgICBj
b25zdHJ1Y3Rvcihjb2xsZWN0aW9uLCBjb250ZW50Vmlld0NvbnN0cnVjdG9yLCB0aXRsZSkKICAg
ICB7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGNvbGxlY3Rpb24gaW5zdGFuY2VvZiBXSS5Db2xs
ZWN0aW9uKTsKIAogICAgICAgICBzdXBlcihjb2xsZWN0aW9uKTsKIAotICAgICAgICB0aGlzLnJl
cHJlc2VudGVkT2JqZWN0LmFkZEV2ZW50TGlzdGVuZXIoV0kuQ29sbGVjdGlvbi5FdmVudC5JdGVt
QWRkZWQsIHRoaXMuX2hhbmRsZUl0ZW1BZGRlZCwgdGhpcyk7Ci0gICAgICAgIHRoaXMucmVwcmVz
ZW50ZWRPYmplY3QuYWRkRXZlbnRMaXN0ZW5lcihXSS5Db2xsZWN0aW9uLkV2ZW50Lkl0ZW1SZW1v
dmVkLCB0aGlzLl9oYW5kbGVJdGVtUmVtb3ZlZCwgdGhpcyk7CisgICAgICAgIHRoaXMuZWxlbWVu
dC5jbGFzc0xpc3QuYWRkKCJjb2xsZWN0aW9uIik7CiAKICAgICAgICAgdGhpcy5fY29udGVudFZp
ZXdNYXAgPSBuZXcgV2Vha01hcDsKICAgICAgICAgdGhpcy5faGFuZGxlQ2xpY2tNYXAgPSBuZXcg
V2Vha01hcDsKIAotICAgICAgICB0aGlzLl9jb250ZW50Vmlld0NvbnN0cnVjdG9yID0gbnVsbDsK
LSAgICAgICAgbGV0IHRpdGxlID0gIiI7Ci0gICAgICAgIHN3aXRjaCAodGhpcy5yZXByZXNlbnRl
ZE9iamVjdC50eXBlVmVyaWZpZXIpIHsKLSAgICAgICAgY2FzZSBXSS5Db2xsZWN0aW9uLlR5cGVW
ZXJpZmllci5GcmFtZToKLSAgICAgICAgICAgIHRpdGxlID0gV0kuVUlTdHJpbmcoIkZyYW1lcyIp
OwotICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgY2FzZSBXSS5Db2xsZWN0aW9uLlR5cGVW
ZXJpZmllci5TY3JpcHQ6Ci0gICAgICAgICAgICB0aXRsZSA9IFdJLlVJU3RyaW5nKCJFeHRyYSBT
Y3JpcHRzIik7Ci0gICAgICAgICAgICBicmVhazsKLQotICAgICAgICBjYXNlIFdJLkNvbGxlY3Rp
b24uVHlwZVZlcmlmaWVyLlJlc291cmNlOgotICAgICAgICAgICAgdGl0bGUgPSBXSS5VSVN0cmlu
ZygiUmVzb3VyY2UiKTsKLSAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgIGNhc2UgV0kuUmVz
b3VyY2VDb2xsZWN0aW9uLlR5cGVWZXJpZmllci5Eb2N1bWVudDoKLSAgICAgICAgICAgIHRpdGxl
ID0gV0kuUmVzb3VyY2UuZGlzcGxheU5hbWVGb3JUeXBlKFdJLlJlc291cmNlLlR5cGUuRG9jdW1l
bnQsIHRydWUpOwotICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgY2FzZSBXSS5SZXNvdXJj
ZUNvbGxlY3Rpb24uVHlwZVZlcmlmaWVyLlN0eWxlc2hlZXQ6Ci0gICAgICAgICAgICB0aXRsZSA9
IFdJLlJlc291cmNlLmRpc3BsYXlOYW1lRm9yVHlwZShXSS5SZXNvdXJjZS5UeXBlLlN0eWxlc2hl
ZXQsIHRydWUpOwotICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgY2FzZSBXSS5SZXNvdXJj
ZUNvbGxlY3Rpb24uVHlwZVZlcmlmaWVyLkltYWdlOgotICAgICAgICAgICAgdGhpcy5fY29udGVu
dFZpZXdDb25zdHJ1Y3RvciA9IFdJLkltYWdlUmVzb3VyY2VDb250ZW50VmlldzsKLSAgICAgICAg
ICAgIHRpdGxlID0gV0kuUmVzb3VyY2UuZGlzcGxheU5hbWVGb3JUeXBlKFdJLlJlc291cmNlLlR5
cGUuSW1hZ2UsIHRydWUpOwotICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgY2FzZSBXSS5S
ZXNvdXJjZUNvbGxlY3Rpb24uVHlwZVZlcmlmaWVyLkZvbnQ6Ci0gICAgICAgICAgICB0aXRsZSA9
IFdJLlJlc291cmNlLmRpc3BsYXlOYW1lRm9yVHlwZShXSS5SZXNvdXJjZS5UeXBlLkZvbnQsIHRy
dWUpOwotICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgY2FzZSBXSS5SZXNvdXJjZUNvbGxl
Y3Rpb24uVHlwZVZlcmlmaWVyLlNjcmlwdDoKLSAgICAgICAgICAgIHRpdGxlID0gV0kuUmVzb3Vy
Y2UuZGlzcGxheU5hbWVGb3JUeXBlKFdJLlJlc291cmNlLlR5cGUuU2NyaXB0LCB0cnVlKTsKLSAg
ICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgIGNhc2UgV0kuUmVzb3VyY2VDb2xsZWN0aW9uLlR5
cGVWZXJpZmllci5YSFI6Ci0gICAgICAgICAgICB0aXRsZSA9IFdJLlJlc291cmNlLmRpc3BsYXlO
YW1lRm9yVHlwZShXSS5SZXNvdXJjZS5UeXBlLlhIUiwgdHJ1ZSk7Ci0gICAgICAgICAgICBicmVh
azsKLQotICAgICAgICBjYXNlIFdJLlJlc291cmNlQ29sbGVjdGlvbi5UeXBlVmVyaWZpZXIuRmV0
Y2g6Ci0gICAgICAgICAgICB0aXRsZSA9IFdJLlJlc291cmNlLmRpc3BsYXlOYW1lRm9yVHlwZShX
SS5SZXNvdXJjZS5UeXBlLkZldGNoLCB0cnVlKTsKLSAgICAgICAgICAgIGJyZWFrOwotCi0gICAg
ICAgIGNhc2UgV0kuUmVzb3VyY2VDb2xsZWN0aW9uLlR5cGVWZXJpZmllci5XZWJTb2NrZXQ6Ci0g
ICAgICAgICAgICB0aXRsZSA9IFdJLlJlc291cmNlLmRpc3BsYXlOYW1lRm9yVHlwZShXSS5SZXNv
dXJjZS5UeXBlLldlYlNvY2tldCwgdHJ1ZSk7Ci0gICAgICAgICAgICBicmVhazsKLQotICAgICAg
ICBjYXNlIFdJLlJlc291cmNlQ29sbGVjdGlvbi5UeXBlVmVyaWZpZXIuT3RoZXI6Ci0gICAgICAg
ICAgICB0aXRsZSA9IFdJLlJlc291cmNlLmRpc3BsYXlOYW1lRm9yVHlwZShXSS5SZXNvdXJjZS5U
eXBlLk90aGVyLCB0cnVlKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0KKyAgICAg
ICAgdGhpcy5fY29udGVudFZpZXdDb25zdHJ1Y3RvciA9IGNvbnRlbnRWaWV3Q29uc3RydWN0b3I7
CiAgICAgICAgIHRoaXMuX2NvbnRlbnRQbGFjZWhvbGRlciA9IG5ldyBXSS5UaXRsZVZpZXcodGl0
bGUpOwotCi0gICAgICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJjb2xsZWN0aW9uIik7
CisgICAgICAgIHRoaXMuX3NlbGVjdGVkSXRlbSA9IG51bGw7CiAgICAgfQogCi0gICAgIC8vIFB1
YmxpYworICAgIC8vIFB1YmxpYwogCi0gICAgaW5pdGlhbExheW91dCgpCisgICAgYWRkQ29udGVu
dFZpZXdGb3JJdGVtKGl0ZW0pCiAgICAgewotICAgICAgICBsZXQgaXRlbXMgPSB0aGlzLnJlcHJl
c2VudGVkT2JqZWN0Lml0ZW1zOwotICAgICAgICBpZiAodGhpcy5fY29udGVudFZpZXdDb25zdHJ1
Y3RvciAmJiBpdGVtcy5zaXplKSB7Ci0gICAgICAgICAgICBmb3IgKGxldCBpdGVtIG9mIGl0ZW1z
KQotICAgICAgICAgICAgICAgIHRoaXMuX2FkZENvbnRlbnRWaWV3Rm9ySXRlbShpdGVtKTsKLSAg
ICAgICAgfSBlbHNlCi0gICAgICAgICAgICB0aGlzLmFkZFN1YnZpZXcodGhpcy5fY29udGVudFBs
YWNlaG9sZGVyKTsKLSAgICB9Ci0KLSAgICAgLy8gUHJpdmF0ZQotCi0gICAgX2FkZENvbnRlbnRW
aWV3Rm9ySXRlbShpdGVtKQotICAgIHsKLSAgICAgICAgaWYgKCF0aGlzLl9jb250ZW50Vmlld0Nv
bnN0cnVjdG9yKQotICAgICAgICAgICAgcmV0dXJuOwotCiAgICAgICAgIGlmICh0aGlzLl9jb250
ZW50UGxhY2Vob2xkZXIucGFyZW50VmlldykKICAgICAgICAgICAgIHRoaXMucmVtb3ZlU3Vidmll
dyh0aGlzLl9jb250ZW50UGxhY2Vob2xkZXIpOwogCiAgICAgICAgIGxldCBjb250ZW50VmlldyA9
IG5ldyB0aGlzLl9jb250ZW50Vmlld0NvbnN0cnVjdG9yKGl0ZW0pOwotCi0gICAgICAgIGNvbnRl
bnRWaWV3LmFkZEV2ZW50TGlzdGVuZXIoV0kuUmVzb3VyY2VDb250ZW50Vmlldy5FdmVudC5Db250
ZW50RXJyb3IsIHRoaXMuX2hhbmRsZUNvbnRlbnRFcnJvciwgdGhpcyk7CisgICAgICAgIGNvbnNv
bGUuYXNzZXJ0KGNvbnRlbnRWaWV3IGluc3RhbmNlb2YgV0kuQ29udGVudFZpZXcpOwogCiAgICAg
ICAgIGxldCBoYW5kbGVDbGljayA9IChldmVudCkgPT4gewogICAgICAgICAgICAgaWYgKGV2ZW50
LmJ1dHRvbiAhPT0gMCB8fCBldmVudC5jdHJsS2V5KQogICAgICAgICAgICAgICAgIHJldHVybjsK
IAotICAgICAgICAgICAgV0kuc2hvd1JlcHJlc2VudGVkT2JqZWN0KGl0ZW0pOworICAgICAgICAg
ICAgbGV0IHByZXZpb3VzU2VsZWN0aW9uID0gdGhpcy5fc2VsZWN0ZWRJdGVtOworICAgICAgICAg
ICAgdGhpcy5fc2VsZWN0ZWRJdGVtID0gaXRlbTsKKworICAgICAgICAgICAgdGhpcy5zZWxlY3Rl
ZEl0ZW1DaGFuZ2VkKHByZXZpb3VzU2VsZWN0aW9uLCBpdGVtKTsKICAgICAgICAgfTsKKworICAg
ICAgICB0aGlzLl9jb250ZW50Vmlld01hcC5zZXQoaXRlbSwgY29udGVudFZpZXcpOwogICAgICAg
ICB0aGlzLl9oYW5kbGVDbGlja01hcC5zZXQoaXRlbSwgaGFuZGxlQ2xpY2spOwogICAgICAgICBj
b250ZW50Vmlldy5lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgaGFuZGxlQ2xpY2sp
OwogCi0gICAgICAgIGNvbnRlbnRWaWV3LmVsZW1lbnQudGl0bGUgPSBXSS5kaXNwbGF5TmFtZUZv
clVSTChpdGVtLnVybCwgaXRlbS51cmxDb21wb25lbnRzKTsKLQogICAgICAgICB0aGlzLmFkZFN1
YnZpZXcoY29udGVudFZpZXcpOwotICAgICAgICB0aGlzLl9jb250ZW50Vmlld01hcC5zZXQoaXRl
bSwgY29udGVudFZpZXcpOworICAgICAgICB0aGlzLmNvbnRlbnRWaWV3QWRkZWQoY29udGVudFZp
ZXcpOwogICAgIH0KIAotICAgIF9yZW1vdmVDb250ZW50Vmlld0Zvckl0ZW0oaXRlbSkKKyAgICBy
ZW1vdmVDb250ZW50Vmlld0Zvckl0ZW0oaXRlbSkKICAgICB7CiAgICAgICAgIGlmICghdGhpcy5f
Y29udGVudFZpZXdDb25zdHJ1Y3RvcikKICAgICAgICAgICAgIHJldHVybjsKQEAgLTE1MywyMiAr
ODYsNTkgQEAgV0kuQ29sbGVjdGlvbkNvbnRlbnRWaWV3ID0gY2xhc3MgQ29sbGVjdGlvbkNvbnRl
bnRWaWV3IGV4dGVuZHMgV0kuQ29udGVudFZpZXcKIAogICAgICAgICBsZXQgaGFuZGxlQ2xpY2sg
PSB0aGlzLl9oYW5kbGVDbGlja01hcC5nZXQoaXRlbSk7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0
KGhhbmRsZUNsaWNrKTsKKwogICAgICAgICBpZiAoaGFuZGxlQ2xpY2spIHsKICAgICAgICAgICAg
IGNvbnRlbnRWaWV3LmVsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigiY2xpY2siLCBoYW5kbGVD
bGljayk7CiAgICAgICAgICAgICB0aGlzLl9oYW5kbGVDbGlja01hcC5kZWxldGUoaXRlbSk7CiAg
ICAgICAgIH0KIAotICAgICAgICBpZiAoIXRoaXMucmVwcmVzZW50ZWRPYmplY3QucmVzb3VyY2Vz
Lmxlbmd0aCkKKyAgICAgICAgaWYgKCF0aGlzLnN1YnZpZXdzLmxlbmd0aCkKICAgICAgICAgICAg
IHRoaXMuYWRkU3Vidmlldyh0aGlzLl9jb250ZW50UGxhY2Vob2xkZXIpOwogICAgIH0KIAorICAg
IC8vIFByb3RlY3RlZAorCisgICAgc2VsZWN0ZWRJdGVtQ2hhbmdlZChwcmV2aW91c1NlbGVjdGlv
biwgc2VsZWN0ZWRJdGVtKQorICAgIHsKKyAgICAgICAgLy8gSW1wbGVtZW50ZWQgYnkgc3ViY2xh
c3Nlcy4KKyAgICB9CisKKyAgICBpbml0aWFsTGF5b3V0KCkKKyAgICB7CisgICAgICAgIGxldCBp
dGVtcyA9IHRoaXMucmVwcmVzZW50ZWRPYmplY3QuaXRlbXM7CisgICAgICAgIGlmICghaXRlbXMu
c2l6ZSB8fCAhdGhpcy5fY29udGVudFZpZXdDb25zdHJ1Y3RvcikgeworICAgICAgICAgICAgdGhp
cy5hZGRTdWJ2aWV3KHRoaXMuX2NvbnRlbnRQbGFjZWhvbGRlcik7CisgICAgICAgICAgICByZXR1
cm47CisgICAgICAgIH0KKworICAgICAgICBmb3IgKGxldCBpdGVtIG9mIGl0ZW1zKQorICAgICAg
ICAgICAgdGhpcy5hZGRDb250ZW50Vmlld0Zvckl0ZW0oaXRlbSk7CisgICAgfQorCisgICAgYXR0
YWNoZWQoKQorICAgIHsKKyAgICAgICAgc3VwZXIuYXR0YWNoZWQoKTsKKworICAgICAgICB0aGlz
LnJlcHJlc2VudGVkT2JqZWN0LmFkZEV2ZW50TGlzdGVuZXIoV0kuQ29sbGVjdGlvbi5FdmVudC5J
dGVtQWRkZWQsIHRoaXMuX2hhbmRsZUl0ZW1BZGRlZCwgdGhpcyk7CisgICAgICAgIHRoaXMucmVw
cmVzZW50ZWRPYmplY3QuYWRkRXZlbnRMaXN0ZW5lcihXSS5Db2xsZWN0aW9uLkV2ZW50Lkl0ZW1S
ZW1vdmVkLCB0aGlzLl9oYW5kbGVJdGVtUmVtb3ZlZCwgdGhpcyk7CisgICAgfQorCisgICAgZGV0
YWNoZWQoKQorICAgIHsKKyAgICAgICAgdGhpcy5yZXByZXNlbnRlZE9iamVjdC5yZW1vdmVFdmVu
dExpc3RlbmVyKG51bGwsIG51bGwsIHRoaXMpOworCisgICAgICAgIHN1cGVyLmRldGFjaGVkKCk7
CisgICAgfQorCisgICAgIC8vIFByaXZhdGUKKwogICAgIF9oYW5kbGVJdGVtQWRkZWQoZXZlbnQp
CiAgICAgewogICAgICAgICBsZXQgaXRlbSA9IGV2ZW50LmRhdGEuaXRlbTsKICAgICAgICAgaWYg
KCFpdGVtKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIHRoaXMuX2FkZENvbnRlbnRW
aWV3Rm9ySXRlbShpdGVtKTsKKyAgICAgICAgdGhpcy5hZGRDb250ZW50Vmlld0Zvckl0ZW0oaXRl
bSk7CiAgICAgfQogCiAgICAgX2hhbmRsZUl0ZW1SZW1vdmVkKGV2ZW50KQpAQCAtMTc3LDcgKzE0
Nyw3IEBAIFdJLkNvbGxlY3Rpb25Db250ZW50VmlldyA9IGNsYXNzIENvbGxlY3Rpb25Db250ZW50
VmlldyBleHRlbmRzIFdJLkNvbnRlbnRWaWV3CiAgICAgICAgIGlmICghaXRlbSkKICAgICAgICAg
ICAgIHJldHVybjsKIAotICAgICAgICB0aGlzLl9yZW1vdmVDb250ZW50Vmlld0Zvckl0ZW0oaXRl
bSk7CisgICAgICAgIHRoaXMucmVtb3ZlQ29udGVudFZpZXdGb3JJdGVtKGl0ZW0pOwogICAgIH0K
IAogICAgIF9oYW5kbGVDb250ZW50RXJyb3IoZXZlbnQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Db250ZW50Vmlldy5qcyBiL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvbnRlbnRWaWV3LmpzCmluZGV4IDUw
MjczODRiZmMwYTc0MTgyN2ZmMzA1MzEwZTYxZWVmMTk4NWY3ODMuLjUxOGMxN2FjMTBiZGQ3YjNi
NzJjMTc0ZGFkNjMxZDEyYWVmYWQzZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvbnRlbnRWaWV3LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvbnRlbnRWaWV3LmpzCkBAIC0xNjIsNyArMTYy
LDcgQEAgV0kuQ29udGVudFZpZXcgPSBjbGFzcyBDb250ZW50VmlldyBleHRlbmRzIFdJLlZpZXcK
ICAgICAgICAgICAgIHJldHVybiBuZXcgV0kuUmVjb3JkaW5nQ29udGVudFZpZXcocmVwcmVzZW50
ZWRPYmplY3QsIGV4dHJhQXJndW1lbnRzKTsKIAogICAgICAgICBpZiAocmVwcmVzZW50ZWRPYmpl
Y3QgaW5zdGFuY2VvZiBXSS5Db2xsZWN0aW9uKQotICAgICAgICAgICAgcmV0dXJuIG5ldyBXSS5D
b2xsZWN0aW9uQ29udGVudFZpZXcocmVwcmVzZW50ZWRPYmplY3QsIGV4dHJhQXJndW1lbnRzKTsK
KyAgICAgICAgICAgIHJldHVybiBuZXcgV0kuUmVzb3VyY2VDb2xsZWN0aW9uQ29udGVudFZpZXco
cmVwcmVzZW50ZWRPYmplY3QsIGV4dHJhQXJndW1lbnRzKTsKIAogICAgICAgICBpZiAodHlwZW9m
IHJlcHJlc2VudGVkT2JqZWN0ID09PSAic3RyaW5nIiB8fCByZXByZXNlbnRlZE9iamVjdCBpbnN0
YW5jZW9mIFN0cmluZykKICAgICAgICAgICAgIHJldHVybiBuZXcgV0kuVGV4dENvbnRlbnRWaWV3
KHJlcHJlc2VudGVkT2JqZWN0LCBleHRyYUFyZ3VtZW50cyk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9SZXNvdXJjZUNvbGxlY3Rpb25Db250
ZW50Vmlldy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Jl
c291cmNlQ29sbGVjdGlvbkNvbnRlbnRWaWV3LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmQwMjRmOWQ5NzRlZWQ4
NWM1NzYyNTNlMjgxYzIxZTBjNzE1YWE1MjUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9SZXNvdXJjZUNvbGxlY3Rpb25Db250ZW50
Vmlldy5qcwpAQCAtMCwwICsxLDExNCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBs
ZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
KyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKK1dJLlJlc291cmNlQ29sbGVj
dGlvbkNvbnRlbnRWaWV3ID0gY2xhc3MgUmVzb3VyY2VDb2xsZWN0aW9uQ29udGVudFZpZXcgZXh0
ZW5kcyBXSS5Db2xsZWN0aW9uQ29udGVudFZpZXcKK3sKKyAgICBjb25zdHJ1Y3Rvcihjb2xsZWN0
aW9uKQorICAgIHsKKyAgICAgICAgY29uc29sZS5hc3NlcnQoY29sbGVjdGlvbiBpbnN0YW5jZW9m
IFdJLkNvbGxlY3Rpb24pOworCisgICAgICAgIGxldCBjb250ZW50Vmlld0NvbnN0cnVjdG9yID0g
bnVsbDsKKyAgICAgICAgbGV0IHRpdGxlID0gIiI7CisKKyAgICAgICAgc3dpdGNoIChjb2xsZWN0
aW9uLnR5cGVWZXJpZmllcikgeworICAgICAgICBjYXNlIFdJLkNvbGxlY3Rpb24uVHlwZVZlcmlm
aWVyLkZyYW1lOgorICAgICAgICAgICAgdGl0bGUgPSBXSS5VSVN0cmluZygiRnJhbWVzIik7Cisg
ICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIFdJLkNvbGxlY3Rpb24uVHlwZVZlcmlm
aWVyLlNjcmlwdDoKKyAgICAgICAgICAgIHRpdGxlID0gV0kuVUlTdHJpbmcoIkV4dHJhIFNjcmlw
dHMiKTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgV0kuQ29sbGVjdGlvbi5U
eXBlVmVyaWZpZXIuUmVzb3VyY2U6CisgICAgICAgICAgICB0aXRsZSA9IFdJLlVJU3RyaW5nKCJS
ZXNvdXJjZSIpOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBXSS5SZXNvdXJj
ZUNvbGxlY3Rpb24uVHlwZVZlcmlmaWVyLkRvY3VtZW50OgorICAgICAgICAgICAgdGl0bGUgPSBX
SS5SZXNvdXJjZS5kaXNwbGF5TmFtZUZvclR5cGUoV0kuUmVzb3VyY2UuVHlwZS5Eb2N1bWVudCwg
dHJ1ZSk7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIFdJLlJlc291cmNlQ29s
bGVjdGlvbi5UeXBlVmVyaWZpZXIuU3R5bGVzaGVldDoKKyAgICAgICAgICAgIHRpdGxlID0gV0ku
UmVzb3VyY2UuZGlzcGxheU5hbWVGb3JUeXBlKFdJLlJlc291cmNlLlR5cGUuU3R5bGVzaGVldCwg
dHJ1ZSk7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIFdJLlJlc291cmNlQ29s
bGVjdGlvbi5UeXBlVmVyaWZpZXIuSW1hZ2U6CisgICAgICAgICAgICBjb250ZW50Vmlld0NvbnN0
cnVjdG9yID0gV0kuSW1hZ2VSZXNvdXJjZUNvbnRlbnRWaWV3OworICAgICAgICAgICAgdGl0bGUg
PSBXSS5SZXNvdXJjZS5kaXNwbGF5TmFtZUZvclR5cGUoV0kuUmVzb3VyY2UuVHlwZS5JbWFnZSwg
dHJ1ZSk7CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIFdJLlJlc291cmNlQ29s
bGVjdGlvbi5UeXBlVmVyaWZpZXIuRm9udDoKKyAgICAgICAgICAgIHRpdGxlID0gV0kuUmVzb3Vy
Y2UuZGlzcGxheU5hbWVGb3JUeXBlKFdJLlJlc291cmNlLlR5cGUuRm9udCwgdHJ1ZSk7CisgICAg
ICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlIFdJLlJlc291cmNlQ29sbGVjdGlvbi5UeXBl
VmVyaWZpZXIuU2NyaXB0OgorICAgICAgICAgICAgdGl0bGUgPSBXSS5SZXNvdXJjZS5kaXNwbGF5
TmFtZUZvclR5cGUoV0kuUmVzb3VyY2UuVHlwZS5TY3JpcHQsIHRydWUpOworICAgICAgICAgICAg
YnJlYWs7CisKKyAgICAgICAgY2FzZSBXSS5SZXNvdXJjZUNvbGxlY3Rpb24uVHlwZVZlcmlmaWVy
LlhIUjoKKyAgICAgICAgICAgIHRpdGxlID0gV0kuUmVzb3VyY2UuZGlzcGxheU5hbWVGb3JUeXBl
KFdJLlJlc291cmNlLlR5cGUuWEhSLCB0cnVlKTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAg
ICAgIGNhc2UgV0kuUmVzb3VyY2VDb2xsZWN0aW9uLlR5cGVWZXJpZmllci5GZXRjaDoKKyAgICAg
ICAgICAgIHRpdGxlID0gV0kuUmVzb3VyY2UuZGlzcGxheU5hbWVGb3JUeXBlKFdJLlJlc291cmNl
LlR5cGUuRmV0Y2gsIHRydWUpOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSBX
SS5SZXNvdXJjZUNvbGxlY3Rpb24uVHlwZVZlcmlmaWVyLldlYlNvY2tldDoKKyAgICAgICAgICAg
IHRpdGxlID0gV0kuUmVzb3VyY2UuZGlzcGxheU5hbWVGb3JUeXBlKFdJLlJlc291cmNlLlR5cGUu
V2ViU29ja2V0LCB0cnVlKTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgV0ku
UmVzb3VyY2VDb2xsZWN0aW9uLlR5cGVWZXJpZmllci5PdGhlcjoKKyAgICAgICAgICAgIHRpdGxl
ID0gV0kuUmVzb3VyY2UuZGlzcGxheU5hbWVGb3JUeXBlKFdJLlJlc291cmNlLlR5cGUuT3RoZXIs
IHRydWUpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIH0KKworICAgICAgICBzdXBlcihj
b2xsZWN0aW9uLCBjb250ZW50Vmlld0NvbnN0cnVjdG9yLCB0aXRsZSk7CisgICAgfQorCisgICAg
Ly8gUHJvdGVjdGVkCisKKyAgICBjb250ZW50Vmlld0FkZGVkKGNvbnRlbnRWaWV3KQorICAgIHsK
KyAgICAgICAgY29uc29sZS5hc3NlcnQoY29udGVudFZpZXcgaW5zdGFuY2VvZiBXSS5SZXNvdXJj
ZUNvbnRlbnRWaWV3KTsKKworICAgICAgICBsZXQgcmVzb3VyY2UgPSBjb250ZW50Vmlldy5yZXBy
ZXNlbnRlZE9iamVjdDsKKyAgICAgICAgY29uc29sZS5hc3NlcnQocmVzb3VyY2UgaW5zdGFuY2Vv
ZiBXSS5SZXNvdXJjZSk7CisKKyAgICAgICAgY29udGVudFZpZXcuYWRkRXZlbnRMaXN0ZW5lcihX
SS5SZXNvdXJjZUNvbnRlbnRWaWV3LkV2ZW50LkNvbnRlbnRFcnJvciwgdGhpcy5faGFuZGxlQ29u
dGVudEVycm9yLCB0aGlzKTsKKyAgICAgICAgY29udGVudFZpZXcuZWxlbWVudC50aXRsZSA9IFdJ
LmRpc3BsYXlOYW1lRm9yVVJMKHJlc291cmNlLnVybCwgcmVzb3VyY2UudXJsQ29tcG9uZW50cyk7
CisgICAgfQorCisgICAgc2VsZWN0ZWRJdGVtQ2hhbmdlZChwcmV2aW91c1NlbGVjdGlvbiwgc2Vs
ZWN0ZWRJdGVtKQorICAgIHsKKyAgICAgICAgV0kuc2hvd1JlcHJlc2VudGVkT2JqZWN0KHNlbGVj
dGVkSXRlbSk7CisgICAgfQorCisgICAgLy8gUHJpdmF0ZQorCisgICAgX2hhbmRsZUNvbnRlbnRF
cnJvcihldmVudCkKKyAgICB7CisgICAgICAgIGlmIChldmVudCAmJiBldmVudC50YXJnZXQpCisg
ICAgICAgICAgICB0aGlzLnJlbW92ZUNvbnRlbnRWaWV3Rm9ySXRlbShldmVudC50YXJnZXQucmVw
cmVzZW50ZWRPYmplY3QpOworICAgIH0KK307Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>321772</attachid>
            <date>2017-09-25 17:06:28 -0700</date>
            <delta_ts>2017-09-26 09:52:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-177419-20170925170627.patch</filename>
            <type>text/plain</type>
            <size>17350</size>
            <attacher name="Matt Baker">mattbaker</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIyNDU3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwppbmRleCAy
NWY0YzI4NjdmODg3MzEwMmQ1ZWQxNDQyY2E3YTYxZGNkYzI5YjJiLi41NTgzODM5YjNiMDdmMTBm
MDA0OTZjZjM5ZmFjZWJkYzQ2MDE0MzJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1NSBAQAorMjAxNy0wOS0yNSAgTWF0dCBCYWtlciAgPG1hdHRiYWtlckBhcHBsZS5jb20+
CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogQ3JlYXRlIFJlc291cmNlQ29sbGVjdGlvbkNvbnRl
bnRWaWV3IGFuZCBtYWtlIENvbGxlY3Rpb25Db250ZW50VmlldyBlYXNpZXIgdG8gZXh0ZW5kCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzc0MTkKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDb2xsZWN0aW9u
Q29udGVudFZpZXcgc2hvdWxkIGJlIGdlbmVyaWMsIHdvcmsgd2l0aCBhbnkgcmVwcmVzZW50ZWQg
b2JqZWN0CisgICAgICAgIENvbGxlY3Rpb24sIGFuZCBub3QgcGVyZm9ybSBhbnkgdHlwZSBjaGVj
a2luZy4gSXQgc2hvdWxkIGp1c3QgbWFwIGl0ZW1zIHRvCisgICAgICAgIENvbnRlbnRWaWV3cyB1
c2luZyB0aGUgcHJvdmlkZWQgQ29udGVudFZpZXcgY29uc3RydWN0b3IuCisKKyAgICAgICAgKiBV
c2VySW50ZXJmYWNlL01haW4uaHRtbDoKKyAgICAgICAgTmV3IGZpbGUsIG1vdmUgQ29sbGVjdGlv
bkNvbnRlbnRWaWV3IGFib3ZlIHN1YmNsYXNzZXMuCisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNl
L01vZGVscy9SZXNvdXJjZUNvbGxlY3Rpb24uanM6CisgICAgICAgIChXSS5SZXNvdXJjZUNvbGxl
Y3Rpb24ucHJvdG90eXBlLmdldCByZXNvdXJjZVR5cGUpOgorICAgICAgICBNYWRlIHJlc291cmNl
IHR5cGUgcHVibGljbHkgYXZhaWxhYmxlLgorCisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3
cy9Db2xsZWN0aW9uQ29udGVudFZpZXcuanM6CisgICAgICAgIE1vdmUgdHlwZSBjaGVja2luZyBv
ZiB0aGUgY29sbGVjdGlvbiBvdXQgb2YgdGhlIGJhc2UgY2xhc3MgYW5kIGFzc2VydAorICAgICAg
ICB0aGF0IENvbnRlbnRWaWV3cyBhcmUgY3JlYXRlZCB3aGVuIGludm9raW5nIGBjb250ZW50Vmll
d0NvbnN0cnVjdG9yYC4KKworICAgICAgICAoV0kuQ29sbGVjdGlvbkNvbnRlbnRWaWV3KToKKyAg
ICAgICAgKFdJLkNvbGxlY3Rpb25Db250ZW50Vmlldy5wcm90b3R5cGUuYWRkQ29udGVudFZpZXdG
b3JJdGVtKToKKyAgICAgICAgKFdJLkNvbGxlY3Rpb25Db250ZW50Vmlldy5wcm90b3R5cGUucmVt
b3ZlQ29udGVudFZpZXdGb3JJdGVtKToKKyAgICAgICAgKFdJLkNvbGxlY3Rpb25Db250ZW50Vmll
dy5wcm90b3R5cGUuY29udGVudFZpZXdBZGRlZCk6CisgICAgICAgIChXSS5Db2xsZWN0aW9uQ29u
dGVudFZpZXcucHJvdG90eXBlLmNvbnRlbnRWaWV3UmVtb3ZlZCk6CisgICAgICAgIChXSS5Db2xs
ZWN0aW9uQ29udGVudFZpZXcucHJvdG90eXBlLnNlbGVjdGVkSXRlbUNoYW5nZWQpOgorICAgICAg
ICAoV0kuQ29sbGVjdGlvbkNvbnRlbnRWaWV3LnByb3RvdHlwZS5pbml0aWFsTGF5b3V0KToKKyAg
ICAgICAgKFdJLkNvbGxlY3Rpb25Db250ZW50Vmlldy5wcm90b3R5cGUuYXR0YWNoZWQpOgorICAg
ICAgICAoV0kuQ29sbGVjdGlvbkNvbnRlbnRWaWV3LnByb3RvdHlwZS5kZXRhY2hlZCk6CisgICAg
ICAgIChXSS5Db2xsZWN0aW9uQ29udGVudFZpZXcucHJvdG90eXBlLl9oYW5kbGVJdGVtQWRkZWQp
OgorICAgICAgICAoV0kuQ29sbGVjdGlvbkNvbnRlbnRWaWV3LnByb3RvdHlwZS5faGFuZGxlSXRl
bVJlbW92ZWQpOgorICAgICAgICAoV0kuQ29sbGVjdGlvbkNvbnRlbnRWaWV3LnByb3RvdHlwZS5f
YWRkQ29udGVudFZpZXdGb3JJdGVtKTogRGVsZXRlZC4KKyAgICAgICAgKFdJLkNvbGxlY3Rpb25D
b250ZW50Vmlldy5wcm90b3R5cGUuX3JlbW92ZUNvbnRlbnRWaWV3Rm9ySXRlbSk6IERlbGV0ZWQu
CisgICAgICAgIE1hZGUgcHVibGljLgorCisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9D
b250ZW50Vmlldy5qczoKKyAgICAgICAgKFdJLkNvbnRlbnRWaWV3LmNyZWF0ZUZyb21SZXByZXNl
bnRlZE9iamVjdCk6CisgICAgICAgIENyZWF0ZSBhIFJlc291cmNlQ29sbGVjdGlvbkNvbnRlbnRW
aWV3LiBJbiB0aGUgZnV0dXJlLCBhZGRpdGlvbmFsCisgICAgICAgIENvbGxlY3Rpb24gdHlwZXMg
Y2FuIGJlIG1hcHBlZCB0byB0aGVpciBhc3NvY2lhdGVkIENvbGxlY3Rpb25Db250ZW50Vmlldy4K
KworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvVmlld3MvUmVzb3VyY2VDb2xsZWN0aW9uQ29udGVu
dFZpZXcuanM6IEFkZGVkLgorICAgICAgICBSZWxvY2F0ZWQgcmVzb3VyY2Utc3BlY2lmaWMgbG9n
aWMgZnJvbSBDb2xsZWN0aW9uQ29udGVudFZpZXcgdG8gYQorICAgICAgICBzZXBhcmF0ZSBjbGFz
cy4KKworICAgICAgICAoV0kuUmVzb3VyY2VDb2xsZWN0aW9uQ29udGVudFZpZXcpOgorICAgICAg
ICAoV0kuUmVzb3VyY2VDb2xsZWN0aW9uQ29udGVudFZpZXcucHJvdG90eXBlLmNvbnRlbnRWaWV3
QWRkZWQpOgorICAgICAgICAoV0kuUmVzb3VyY2VDb2xsZWN0aW9uQ29udGVudFZpZXcucHJvdG90
eXBlLnNlbGVjdGVkSXRlbUNoYW5nZWQpOgorICAgICAgICAoV0kuUmVzb3VyY2VDb2xsZWN0aW9u
Q29udGVudFZpZXcucHJvdG90eXBlLl9oYW5kbGVDb250ZW50RXJyb3IpOgorICAgICAgICBSZW1v
dmUgQ29udGVudFZpZXcgd2l0aG91dCByZW1vdmluZyB0aGUgcmVzb3VyY2UgZnJvbSBpdHMgY29s
bGVjdGlvbi4KKwogMjAxNy0wOS0yNCAgSm9zZXBoIFBlY29yYXJvICA8cGVjb3Jhcm9AYXBwbGUu
Y29tPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IFJlZHVjZSB3b3JrIGR1cmluZyByZXNpemlu
ZwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTWFpbi5o
dG1sIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTWFpbi5odG1sCmluZGV4
IDEyYTI5NWJmMmZjOTExNDQ0NzdmODhjOTRlMjg3YjFkY2I3ZjNmNzcuLjJjOGQ1MzcwOGYyNjkz
Mzg0M2UzOGNkNWM3ODFmMDlkNWY5YjNlMzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL01haW4uaHRtbAorKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9NYWluLmh0bWwKQEAgLTUxNiw2ICs1MTYsOCBAQAogICAgIDxzY3JpcHQg
c3JjPSJWaWV3cy9TZXR0aW5nc0dyb3VwLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0i
Vmlld3MvU2V0dGluZ3NWaWV3LmpzIj48L3NjcmlwdD4KIAorICAgIDxzY3JpcHQgc3JjPSJWaWV3
cy9Db2xsZWN0aW9uQ29udGVudFZpZXcuanMiPjwvc2NyaXB0PgorCiAgICAgPHNjcmlwdCBzcmM9
IlZpZXdzL0FjdGl2YXRlQnV0dG9uTmF2aWdhdGlvbkl0ZW0uanMiPjwvc2NyaXB0PgogICAgIDxz
Y3JpcHQgc3JjPSJWaWV3cy9BY3RpdmF0ZUJ1dHRvblRvb2xiYXJJdGVtLmpzIj48L3NjcmlwdD4K
ICAgICA8c2NyaXB0IHNyYz0iVmlld3MvQXBwbGljYXRpb25DYWNoZURldGFpbHNTaWRlYmFyUGFu
ZWwuanMiPjwvc2NyaXB0PgpAQCAtNTQ0LDcgKzU0Niw2IEBACiAgICAgPHNjcmlwdCBzcmM9IlZp
ZXdzL0NvZGVNaXJyb3JGb3JtYXR0ZXJzLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0i
Vmlld3MvQ29kZU1pcnJvclJlZ2V4TW9kZS5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9
IlZpZXdzL0NvZGVNaXJyb3JUZXh0TWFya2Vycy5qcyI+PC9zY3JpcHQ+Ci0gICAgPHNjcmlwdCBz
cmM9IlZpZXdzL0NvbGxlY3Rpb25Db250ZW50Vmlldy5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlw
dCBzcmM9IlZpZXdzL0NvbG9yUGlja2VyLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0i
Vmlld3MvQ29sb3JXaGVlbC5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IlZpZXdzL0Nv
bXBsZXRpb25TdWdnZXN0aW9uc1ZpZXcuanMiPjwvc2NyaXB0PgpAQCAtNjc2LDYgKzY3Nyw3IEBA
CiAgICAgPHNjcmlwdCBzcmM9IlZpZXdzL1JlbmRlcmluZ0ZyYW1lVGltZWxpbmVWaWV3LmpzIj48
L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iVmlld3MvUmVzaXplci5qcyI+PC9zY3JpcHQ+CiAg
ICAgPHNjcmlwdCBzcmM9IlZpZXdzL1Jlc291cmNlQ2x1c3RlckNvbnRlbnRWaWV3LmpzIj48L3Nj
cmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iVmlld3MvUmVzb3VyY2VDb2xsZWN0aW9uQ29udGVudFZp
ZXcuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJWaWV3cy9SZXNvdXJjZURldGFpbHNT
aWRlYmFyUGFuZWwuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJWaWV3cy9SZXNvdXJj
ZVNpZGViYXJQYW5lbC5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IlZpZXdzL1Jlc291
cmNlVGltZWxpbmVEYXRhR3JpZE5vZGUuanMiPjwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL1Jlc291cmNlQ29sbGVjdGlvbi5q
cyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9SZXNvdXJjZUNv
bGxlY3Rpb24uanMKaW5kZXggMjMxYTlhMDhlODE5YjM4YzMwMDJlNTFlNjY0ZmZjZGRhYzNkNDBh
MC4uY2Q3OTZiOGQyNGNjMDY3OGUzYmQ0YmJhYzljNTc5ZjJmNGQ3MDliZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL1Jlc291cmNlQ29sbGVj
dGlvbi5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMv
UmVzb3VyY2VDb2xsZWN0aW9uLmpzCkBAIC02NCw2ICs2NCw4IEBAIFdJLlJlc291cmNlQ29sbGVj
dGlvbiA9IGNsYXNzIFJlc291cmNlQ29sbGVjdGlvbiBleHRlbmRzIFdJLkNvbGxlY3Rpb24KIAog
ICAgIC8vIFB1YmxpYwogCisgICAgZ2V0IHJlc291cmNlVHlwZSgpIHsgcmV0dXJuIHRoaXMuX3Jl
c291cmNlVHlwZTsgfQorCiAgICAgcmVzb3VyY2VGb3JVUkwodXJsKQogICAgIHsKICAgICAgICAg
cmV0dXJuIHRoaXMuX3Jlc291cmNlVVJMTWFwLmdldCh1cmwpIHx8IG51bGw7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Db2xsZWN0aW9uQ29u
dGVudFZpZXcuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9D
b2xsZWN0aW9uQ29udGVudFZpZXcuanMKaW5kZXggMDM3MmQxMzcwZjZiYmVjN2M4MjFlNjlkMjkw
MDYzYTQ5MzZlMjNlYS4uOGQ1Yzg4MjdmMjMzYzQzODg3ZmI5N2VlOThiZWU2MDQ4ZjI1Yjk4MyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ29s
bGVjdGlvbkNvbnRlbnRWaWV3LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL1ZpZXdzL0NvbGxlY3Rpb25Db250ZW50Vmlldy5qcwpAQCAtMjUsMTE4ICsyNSw1MyBA
QAogCiBXSS5Db2xsZWN0aW9uQ29udGVudFZpZXcgPSBjbGFzcyBDb2xsZWN0aW9uQ29udGVudFZp
ZXcgZXh0ZW5kcyBXSS5Db250ZW50VmlldwogewotICAgIGNvbnN0cnVjdG9yKGNvbGxlY3Rpb24p
CisgICAgY29uc3RydWN0b3IoY29sbGVjdGlvbiwgY29udGVudFZpZXdDb25zdHJ1Y3RvciwgY29u
dGVudFBsYWNlaG9sZXJUZXh0KQogICAgIHsKICAgICAgICAgY29uc29sZS5hc3NlcnQoY29sbGVj
dGlvbiBpbnN0YW5jZW9mIFdJLkNvbGxlY3Rpb24pOwogCiAgICAgICAgIHN1cGVyKGNvbGxlY3Rp
b24pOwogCi0gICAgICAgIHRoaXMucmVwcmVzZW50ZWRPYmplY3QuYWRkRXZlbnRMaXN0ZW5lcihX
SS5Db2xsZWN0aW9uLkV2ZW50Lkl0ZW1BZGRlZCwgdGhpcy5faGFuZGxlSXRlbUFkZGVkLCB0aGlz
KTsKLSAgICAgICAgdGhpcy5yZXByZXNlbnRlZE9iamVjdC5hZGRFdmVudExpc3RlbmVyKFdJLkNv
bGxlY3Rpb24uRXZlbnQuSXRlbVJlbW92ZWQsIHRoaXMuX2hhbmRsZUl0ZW1SZW1vdmVkLCB0aGlz
KTsKKyAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5hZGQoImNvbGxlY3Rpb24iKTsKIAor
ICAgICAgICB0aGlzLl9jb250ZW50UGxhY2Vob2xkZXIgPSBuZXcgV0kuVGl0bGVWaWV3KGNvbnRl
bnRQbGFjZWhvbGVyVGV4dCB8fCBXSS5VSVN0cmluZygiTm8gSXRlbXMiKSk7CisgICAgICAgIHRo
aXMuX2NvbnRlbnRWaWV3Q29uc3RydWN0b3IgPSBjb250ZW50Vmlld0NvbnN0cnVjdG9yOwogICAg
ICAgICB0aGlzLl9jb250ZW50Vmlld01hcCA9IG5ldyBXZWFrTWFwOwogICAgICAgICB0aGlzLl9o
YW5kbGVDbGlja01hcCA9IG5ldyBXZWFrTWFwOwotCi0gICAgICAgIHRoaXMuX2NvbnRlbnRWaWV3
Q29uc3RydWN0b3IgPSBudWxsOwotICAgICAgICBsZXQgdGl0bGUgPSAiIjsKLSAgICAgICAgc3dp
dGNoICh0aGlzLnJlcHJlc2VudGVkT2JqZWN0LnR5cGVWZXJpZmllcikgewotICAgICAgICBjYXNl
IFdJLkNvbGxlY3Rpb24uVHlwZVZlcmlmaWVyLkZyYW1lOgotICAgICAgICAgICAgdGl0bGUgPSBX
SS5VSVN0cmluZygiRnJhbWVzIik7Ci0gICAgICAgICAgICBicmVhazsKLQotICAgICAgICBjYXNl
IFdJLkNvbGxlY3Rpb24uVHlwZVZlcmlmaWVyLlNjcmlwdDoKLSAgICAgICAgICAgIHRpdGxlID0g
V0kuVUlTdHJpbmcoIkV4dHJhIFNjcmlwdHMiKTsKLSAgICAgICAgICAgIGJyZWFrOwotCi0gICAg
ICAgIGNhc2UgV0kuQ29sbGVjdGlvbi5UeXBlVmVyaWZpZXIuUmVzb3VyY2U6Ci0gICAgICAgICAg
ICB0aXRsZSA9IFdJLlVJU3RyaW5nKCJSZXNvdXJjZSIpOwotICAgICAgICAgICAgYnJlYWs7Ci0K
LSAgICAgICAgY2FzZSBXSS5SZXNvdXJjZUNvbGxlY3Rpb24uVHlwZVZlcmlmaWVyLkRvY3VtZW50
OgotICAgICAgICAgICAgdGl0bGUgPSBXSS5SZXNvdXJjZS5kaXNwbGF5TmFtZUZvclR5cGUoV0ku
UmVzb3VyY2UuVHlwZS5Eb2N1bWVudCwgdHJ1ZSk7Ci0gICAgICAgICAgICBicmVhazsKLQotICAg
ICAgICBjYXNlIFdJLlJlc291cmNlQ29sbGVjdGlvbi5UeXBlVmVyaWZpZXIuU3R5bGVzaGVldDoK
LSAgICAgICAgICAgIHRpdGxlID0gV0kuUmVzb3VyY2UuZGlzcGxheU5hbWVGb3JUeXBlKFdJLlJl
c291cmNlLlR5cGUuU3R5bGVzaGVldCwgdHJ1ZSk7Ci0gICAgICAgICAgICBicmVhazsKLQotICAg
ICAgICBjYXNlIFdJLlJlc291cmNlQ29sbGVjdGlvbi5UeXBlVmVyaWZpZXIuSW1hZ2U6Ci0gICAg
ICAgICAgICB0aGlzLl9jb250ZW50Vmlld0NvbnN0cnVjdG9yID0gV0kuSW1hZ2VSZXNvdXJjZUNv
bnRlbnRWaWV3OwotICAgICAgICAgICAgdGl0bGUgPSBXSS5SZXNvdXJjZS5kaXNwbGF5TmFtZUZv
clR5cGUoV0kuUmVzb3VyY2UuVHlwZS5JbWFnZSwgdHJ1ZSk7Ci0gICAgICAgICAgICBicmVhazsK
LQotICAgICAgICBjYXNlIFdJLlJlc291cmNlQ29sbGVjdGlvbi5UeXBlVmVyaWZpZXIuRm9udDoK
LSAgICAgICAgICAgIHRpdGxlID0gV0kuUmVzb3VyY2UuZGlzcGxheU5hbWVGb3JUeXBlKFdJLlJl
c291cmNlLlR5cGUuRm9udCwgdHJ1ZSk7Ci0gICAgICAgICAgICBicmVhazsKLQotICAgICAgICBj
YXNlIFdJLlJlc291cmNlQ29sbGVjdGlvbi5UeXBlVmVyaWZpZXIuU2NyaXB0OgotICAgICAgICAg
ICAgdGl0bGUgPSBXSS5SZXNvdXJjZS5kaXNwbGF5TmFtZUZvclR5cGUoV0kuUmVzb3VyY2UuVHlw
ZS5TY3JpcHQsIHRydWUpOwotICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgY2FzZSBXSS5S
ZXNvdXJjZUNvbGxlY3Rpb24uVHlwZVZlcmlmaWVyLlhIUjoKLSAgICAgICAgICAgIHRpdGxlID0g
V0kuUmVzb3VyY2UuZGlzcGxheU5hbWVGb3JUeXBlKFdJLlJlc291cmNlLlR5cGUuWEhSLCB0cnVl
KTsKLSAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgIGNhc2UgV0kuUmVzb3VyY2VDb2xsZWN0
aW9uLlR5cGVWZXJpZmllci5GZXRjaDoKLSAgICAgICAgICAgIHRpdGxlID0gV0kuUmVzb3VyY2Uu
ZGlzcGxheU5hbWVGb3JUeXBlKFdJLlJlc291cmNlLlR5cGUuRmV0Y2gsIHRydWUpOwotICAgICAg
ICAgICAgYnJlYWs7Ci0KLSAgICAgICAgY2FzZSBXSS5SZXNvdXJjZUNvbGxlY3Rpb24uVHlwZVZl
cmlmaWVyLldlYlNvY2tldDoKLSAgICAgICAgICAgIHRpdGxlID0gV0kuUmVzb3VyY2UuZGlzcGxh
eU5hbWVGb3JUeXBlKFdJLlJlc291cmNlLlR5cGUuV2ViU29ja2V0LCB0cnVlKTsKLSAgICAgICAg
ICAgIGJyZWFrOwotCi0gICAgICAgIGNhc2UgV0kuUmVzb3VyY2VDb2xsZWN0aW9uLlR5cGVWZXJp
Zmllci5PdGhlcjoKLSAgICAgICAgICAgIHRpdGxlID0gV0kuUmVzb3VyY2UuZGlzcGxheU5hbWVG
b3JUeXBlKFdJLlJlc291cmNlLlR5cGUuT3RoZXIsIHRydWUpOwotICAgICAgICAgICAgYnJlYWs7
Ci0gICAgICAgIH0KLQotICAgICAgICB0aGlzLl9jb250ZW50UGxhY2Vob2xkZXIgPSBuZXcgV0ku
VGl0bGVWaWV3KHRpdGxlKTsKLQotICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmFkZCgi
Y29sbGVjdGlvbiIpOworICAgICAgICB0aGlzLl9zZWxlY3RlZEl0ZW0gPSBudWxsOwogICAgIH0K
IAotICAgICAvLyBQdWJsaWMKKyAgICAvLyBQdWJsaWMKIAotICAgIGluaXRpYWxMYXlvdXQoKQot
ICAgIHsKLSAgICAgICAgbGV0IGl0ZW1zID0gdGhpcy5yZXByZXNlbnRlZE9iamVjdC5pdGVtczsK
LSAgICAgICAgaWYgKHRoaXMuX2NvbnRlbnRWaWV3Q29uc3RydWN0b3IgJiYgaXRlbXMuc2l6ZSkg
ewotICAgICAgICAgICAgZm9yIChsZXQgaXRlbSBvZiBpdGVtcykKLSAgICAgICAgICAgICAgICB0
aGlzLl9hZGRDb250ZW50Vmlld0Zvckl0ZW0oaXRlbSk7Ci0gICAgICAgIH0gZWxzZQotICAgICAg
ICAgICAgdGhpcy5hZGRTdWJ2aWV3KHRoaXMuX2NvbnRlbnRQbGFjZWhvbGRlcik7Ci0gICAgfQot
Ci0gICAgIC8vIFByaXZhdGUKLQotICAgIF9hZGRDb250ZW50Vmlld0Zvckl0ZW0oaXRlbSkKKyAg
ICBhZGRDb250ZW50Vmlld0Zvckl0ZW0oaXRlbSkKICAgICB7CiAgICAgICAgIGlmICghdGhpcy5f
Y29udGVudFZpZXdDb25zdHJ1Y3RvcikKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICBp
ZiAodGhpcy5fY29udGVudFBsYWNlaG9sZGVyLnBhcmVudFZpZXcpCisgICAgICAgIGlmICh0aGlz
Ll9jb250ZW50Vmlld0NvbnN0cnVjdG9yLnBhcmVudFZpZXcpCiAgICAgICAgICAgICB0aGlzLnJl
bW92ZVN1YnZpZXcodGhpcy5fY29udGVudFBsYWNlaG9sZGVyKTsKIAogICAgICAgICBsZXQgY29u
dGVudFZpZXcgPSBuZXcgdGhpcy5fY29udGVudFZpZXdDb25zdHJ1Y3RvcihpdGVtKTsKLQotICAg
ICAgICBjb250ZW50Vmlldy5hZGRFdmVudExpc3RlbmVyKFdJLlJlc291cmNlQ29udGVudFZpZXcu
RXZlbnQuQ29udGVudEVycm9yLCB0aGlzLl9oYW5kbGVDb250ZW50RXJyb3IsIHRoaXMpOworICAg
ICAgICBjb25zb2xlLmFzc2VydChjb250ZW50VmlldyBpbnN0YW5jZW9mIFdJLkNvbnRlbnRWaWV3
KTsKIAogICAgICAgICBsZXQgaGFuZGxlQ2xpY2sgPSAoZXZlbnQpID0+IHsKICAgICAgICAgICAg
IGlmIChldmVudC5idXR0b24gIT09IDAgfHwgZXZlbnQuY3RybEtleSkKICAgICAgICAgICAgICAg
ICByZXR1cm47CiAKLSAgICAgICAgICAgIFdJLnNob3dSZXByZXNlbnRlZE9iamVjdChpdGVtKTsK
KyAgICAgICAgICAgIGxldCBwcmV2aW91c1NlbGVjdGlvbiA9IHRoaXMuX3NlbGVjdGVkSXRlbTsK
KyAgICAgICAgICAgIHRoaXMuX3NlbGVjdGVkSXRlbSA9IGl0ZW07CisKKyAgICAgICAgICAgIHRo
aXMuc2VsZWN0ZWRJdGVtQ2hhbmdlZChwcmV2aW91c1NlbGVjdGlvbiwgaXRlbSk7CiAgICAgICAg
IH07CisKKyAgICAgICAgdGhpcy5fY29udGVudFZpZXdNYXAuc2V0KGl0ZW0sIGNvbnRlbnRWaWV3
KTsKICAgICAgICAgdGhpcy5faGFuZGxlQ2xpY2tNYXAuc2V0KGl0ZW0sIGhhbmRsZUNsaWNrKTsK
ICAgICAgICAgY29udGVudFZpZXcuZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIGhh
bmRsZUNsaWNrKTsKIAotICAgICAgICBjb250ZW50Vmlldy5lbGVtZW50LnRpdGxlID0gV0kuZGlz
cGxheU5hbWVGb3JVUkwoaXRlbS51cmwsIGl0ZW0udXJsQ29tcG9uZW50cyk7Ci0KICAgICAgICAg
dGhpcy5hZGRTdWJ2aWV3KGNvbnRlbnRWaWV3KTsKLSAgICAgICAgdGhpcy5fY29udGVudFZpZXdN
YXAuc2V0KGl0ZW0sIGNvbnRlbnRWaWV3KTsKKyAgICAgICAgdGhpcy5jb250ZW50Vmlld0FkZGVk
KGNvbnRlbnRWaWV3KTsKICAgICB9CiAKLSAgICBfcmVtb3ZlQ29udGVudFZpZXdGb3JJdGVtKGl0
ZW0pCisgICAgcmVtb3ZlQ29udGVudFZpZXdGb3JJdGVtKGl0ZW0pCiAgICAgewogICAgICAgICBp
ZiAoIXRoaXMuX2NvbnRlbnRWaWV3Q29uc3RydWN0b3IpCiAgICAgICAgICAgICByZXR1cm47CkBA
IC0xNDgsMjcgKzgzLDc1IEBAIFdJLkNvbGxlY3Rpb25Db250ZW50VmlldyA9IGNsYXNzIENvbGxl
Y3Rpb25Db250ZW50VmlldyBleHRlbmRzIFdJLkNvbnRlbnRWaWV3CiAKICAgICAgICAgdGhpcy5y
ZW1vdmVTdWJ2aWV3KGNvbnRlbnRWaWV3KTsKICAgICAgICAgdGhpcy5fY29udGVudFZpZXdNYXAu
ZGVsZXRlKGl0ZW0pOworICAgICAgICB0aGlzLmNvbnRlbnRWaWV3UmVtb3ZlZChjb250ZW50Vmll
dyk7CiAKICAgICAgICAgY29udGVudFZpZXcucmVtb3ZlRXZlbnRMaXN0ZW5lcihudWxsLCBudWxs
LCB0aGlzKTsKIAogICAgICAgICBsZXQgaGFuZGxlQ2xpY2sgPSB0aGlzLl9oYW5kbGVDbGlja01h
cC5nZXQoaXRlbSk7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGhhbmRsZUNsaWNrKTsKKwogICAg
ICAgICBpZiAoaGFuZGxlQ2xpY2spIHsKICAgICAgICAgICAgIGNvbnRlbnRWaWV3LmVsZW1lbnQu
cmVtb3ZlRXZlbnRMaXN0ZW5lcigiY2xpY2siLCBoYW5kbGVDbGljayk7CiAgICAgICAgICAgICB0
aGlzLl9oYW5kbGVDbGlja01hcC5kZWxldGUoaXRlbSk7CiAgICAgICAgIH0KIAotICAgICAgICBp
ZiAoIXRoaXMucmVwcmVzZW50ZWRPYmplY3QucmVzb3VyY2VzLmxlbmd0aCkKKyAgICAgICAgaWYg
KCF0aGlzLnN1YnZpZXdzLmxlbmd0aCkKKyAgICAgICAgICAgIHRoaXMuYWRkU3Vidmlldyh0aGlz
Ll9jb250ZW50UGxhY2Vob2xkZXIpOworICAgIH0KKworICAgIC8vIFByb3RlY3RlZAorCisgICAg
Y29udGVudFZpZXdBZGRlZChjb250ZW50VmlldykKKyAgICB7CisgICAgICAgIC8vIEltcGxlbWVu
dGVkIGJ5IHN1YmNsYXNzZXMuCisgICAgfQorCisgICAgY29udGVudFZpZXdSZW1vdmVkKGNvbnRl
bnRWaWV3KQorICAgIHsKKyAgICAgICAgLy8gSW1wbGVtZW50ZWQgYnkgc3ViY2xhc3Nlcy4KKyAg
ICB9CisKKyAgICBzZWxlY3RlZEl0ZW1DaGFuZ2VkKHByZXZpb3VzU2VsZWN0aW9uLCBzZWxlY3Rl
ZEl0ZW0pCisgICAgeworICAgICAgICAvLyBJbXBsZW1lbnRlZCBieSBzdWJjbGFzc2VzLgorICAg
IH0KKworICAgIGluaXRpYWxMYXlvdXQoKQorICAgIHsKKyAgICAgICAgbGV0IGl0ZW1zID0gdGhp
cy5yZXByZXNlbnRlZE9iamVjdC5pdGVtczsKKyAgICAgICAgaWYgKCFpdGVtcy5zaXplIHx8ICF0
aGlzLl9jb250ZW50Vmlld0NvbnN0cnVjdG9yKSB7CiAgICAgICAgICAgICB0aGlzLmFkZFN1YnZp
ZXcodGhpcy5fY29udGVudFBsYWNlaG9sZGVyKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgfQorCisgICAgICAgIGZvciAobGV0IGl0ZW0gb2YgaXRlbXMpCisgICAgICAgICAgICB0aGlz
LmFkZENvbnRlbnRWaWV3Rm9ySXRlbShpdGVtKTsKKyAgICB9CisKKyAgICBhdHRhY2hlZCgpCisg
ICAgeworICAgICAgICBzdXBlci5hdHRhY2hlZCgpOworCisgICAgICAgIHRoaXMucmVwcmVzZW50
ZWRPYmplY3QuYWRkRXZlbnRMaXN0ZW5lcihXSS5Db2xsZWN0aW9uLkV2ZW50Lkl0ZW1BZGRlZCwg
dGhpcy5faGFuZGxlSXRlbUFkZGVkLCB0aGlzKTsKKyAgICAgICAgdGhpcy5yZXByZXNlbnRlZE9i
amVjdC5hZGRFdmVudExpc3RlbmVyKFdJLkNvbGxlY3Rpb24uRXZlbnQuSXRlbVJlbW92ZWQsIHRo
aXMuX2hhbmRsZUl0ZW1SZW1vdmVkLCB0aGlzKTsKICAgICB9CiAKKyAgICBkZXRhY2hlZCgpCisg
ICAgeworICAgICAgICB0aGlzLnJlcHJlc2VudGVkT2JqZWN0LnJlbW92ZUV2ZW50TGlzdGVuZXIo
bnVsbCwgbnVsbCwgdGhpcyk7CisKKyAgICAgICAgc3VwZXIuZGV0YWNoZWQoKTsKKyAgICB9CisK
KyAgICAgLy8gUHJpdmF0ZQorCiAgICAgX2hhbmRsZUl0ZW1BZGRlZChldmVudCkKICAgICB7CiAg
ICAgICAgIGxldCBpdGVtID0gZXZlbnQuZGF0YS5pdGVtOwogICAgICAgICBpZiAoIWl0ZW0pCiAg
ICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgdGhpcy5fYWRkQ29udGVudFZpZXdGb3JJdGVt
KGl0ZW0pOworICAgICAgICB0aGlzLmFkZENvbnRlbnRWaWV3Rm9ySXRlbShpdGVtKTsKICAgICB9
CiAKICAgICBfaGFuZGxlSXRlbVJlbW92ZWQoZXZlbnQpCkBAIC0xNzcsNyArMTYwLDcgQEAgV0ku
Q29sbGVjdGlvbkNvbnRlbnRWaWV3ID0gY2xhc3MgQ29sbGVjdGlvbkNvbnRlbnRWaWV3IGV4dGVu
ZHMgV0kuQ29udGVudFZpZXcKICAgICAgICAgaWYgKCFpdGVtKQogICAgICAgICAgICAgcmV0dXJu
OwogCi0gICAgICAgIHRoaXMuX3JlbW92ZUNvbnRlbnRWaWV3Rm9ySXRlbShpdGVtKTsKKyAgICAg
ICAgdGhpcy5yZW1vdmVDb250ZW50Vmlld0Zvckl0ZW0oaXRlbSk7CiAgICAgfQogCiAgICAgX2hh
bmRsZUNvbnRlbnRFcnJvcihldmVudCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvbnRlbnRWaWV3LmpzIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ29udGVudFZpZXcuanMKaW5kZXggNTAyNzM4NGJmYzBh
NzQxODI3ZmYzMDUzMTBlNjFlZWYxOTg1Zjc4My4uNTE4YzE3YWMxMGJkZDdiM2I3MmMxNzRkYWQ2
MzFkMTJhZWZhZDNlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvVmlld3MvQ29udGVudFZpZXcuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvVmlld3MvQ29udGVudFZpZXcuanMKQEAgLTE2Miw3ICsxNjIsNyBAQCBXSS5D
b250ZW50VmlldyA9IGNsYXNzIENvbnRlbnRWaWV3IGV4dGVuZHMgV0kuVmlldwogICAgICAgICAg
ICAgcmV0dXJuIG5ldyBXSS5SZWNvcmRpbmdDb250ZW50VmlldyhyZXByZXNlbnRlZE9iamVjdCwg
ZXh0cmFBcmd1bWVudHMpOwogCiAgICAgICAgIGlmIChyZXByZXNlbnRlZE9iamVjdCBpbnN0YW5j
ZW9mIFdJLkNvbGxlY3Rpb24pCi0gICAgICAgICAgICByZXR1cm4gbmV3IFdJLkNvbGxlY3Rpb25D
b250ZW50VmlldyhyZXByZXNlbnRlZE9iamVjdCwgZXh0cmFBcmd1bWVudHMpOworICAgICAgICAg
ICAgcmV0dXJuIG5ldyBXSS5SZXNvdXJjZUNvbGxlY3Rpb25Db250ZW50VmlldyhyZXByZXNlbnRl
ZE9iamVjdCwgZXh0cmFBcmd1bWVudHMpOwogCiAgICAgICAgIGlmICh0eXBlb2YgcmVwcmVzZW50
ZWRPYmplY3QgPT09ICJzdHJpbmciIHx8IHJlcHJlc2VudGVkT2JqZWN0IGluc3RhbmNlb2YgU3Ry
aW5nKQogICAgICAgICAgICAgcmV0dXJuIG5ldyBXSS5UZXh0Q29udGVudFZpZXcocmVwcmVzZW50
ZWRPYmplY3QsIGV4dHJhQXJndW1lbnRzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Jlc291cmNlQ29sbGVjdGlvbkNvbnRlbnRWaWV3Lmpz
IGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvUmVzb3VyY2VDb2xs
ZWN0aW9uQ29udGVudFZpZXcuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uODMxNGNjMmM5MDZhY2UxZjRhODExYmMx
MTdmMjNhYjU4OTc0MTY2NwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Jlc291cmNlQ29sbGVjdGlvbkNvbnRlbnRWaWV3LmpzCkBA
IC0wLDAgKzEsODIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCitXSS5SZXNvdXJjZUNvbGxlY3Rpb25Db250ZW50
VmlldyA9IGNsYXNzIFJlc291cmNlQ29sbGVjdGlvbkNvbnRlbnRWaWV3IGV4dGVuZHMgV0kuQ29s
bGVjdGlvbkNvbnRlbnRWaWV3Cit7CisgICAgY29uc3RydWN0b3IoY29sbGVjdGlvbikKKyAgICB7
CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGNvbGxlY3Rpb24gaW5zdGFuY2VvZiBXSS5Db2xsZWN0
aW9uKTsKKworICAgICAgICBsZXQgY29udGVudFZpZXdDb25zdHJ1Y3RvciA9IG51bGw7CisgICAg
ICAgIGxldCB0aXRsZSA9ICIiOworCisgICAgICAgIGlmIChjb2xsZWN0aW9uIGluc3RhbmNlb2Yg
V0kuUmVzb3VyY2VDb2xsZWN0aW9uKSB7CisgICAgICAgICAgICBjb250ZW50Vmlld0NvbnN0cnVj
dG9yID0gY29sbGVjdGlvbi5yZXNvdXJjZVR5cGUgPT09IFdJLlJlc291cmNlLlR5cGUuSW1hZ2Ug
PyBXSS5JbWFnZVJlc291cmNlQ29udGVudFZpZXcgOiBudWxsOworICAgICAgICAgICAgdGl0bGUg
PSBXSS5SZXNvdXJjZS5kaXNwbGF5TmFtZUZvclR5cGUoY29sbGVjdGlvbi5yZXNvdXJjZVR5cGUs
IHRydWUpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgc3dpdGNoIChjb2xsZWN0aW9u
LnR5cGVWZXJpZmllcikgeworICAgICAgICAgICAgY2FzZSBXSS5Db2xsZWN0aW9uLlR5cGVWZXJp
Zmllci5GcmFtZToKKyAgICAgICAgICAgICAgICB0aXRsZSA9IFdJLlVJU3RyaW5nKCJGcmFtZXMi
KTsKKyAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgY2FzZSBXSS5Db2xsZWN0
aW9uLlR5cGVWZXJpZmllci5TY3JpcHQ6CisgICAgICAgICAgICAgICAgdGl0bGUgPSBXSS5VSVN0
cmluZygiRXh0cmEgU2NyaXB0cyIpOworICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAg
ICAgICBjYXNlIFdJLkNvbGxlY3Rpb24uVHlwZVZlcmlmaWVyLlJlc291cmNlOgorICAgICAgICAg
ICAgICAgIHRpdGxlID0gV0kuVUlTdHJpbmcoIlJlc291cmNlIik7CisgICAgICAgICAgICAgICAg
YnJlYWs7CisgICAgICAgICAgICB9CisgICAgICAgIH0KKworICAgICAgICBzdXBlcihjb2xsZWN0
aW9uLCBjb250ZW50Vmlld0NvbnN0cnVjdG9yLCB0aXRsZSk7CisgICAgfQorCisgICAgLy8gUHJv
dGVjdGVkCisKKyAgICBjb250ZW50Vmlld0FkZGVkKGNvbnRlbnRWaWV3KQorICAgIHsKKyAgICAg
ICAgY29uc29sZS5hc3NlcnQoY29udGVudFZpZXcgaW5zdGFuY2VvZiBXSS5SZXNvdXJjZUNvbnRl
bnRWaWV3KTsKKworICAgICAgICBsZXQgcmVzb3VyY2UgPSBjb250ZW50Vmlldy5yZXByZXNlbnRl
ZE9iamVjdDsKKyAgICAgICAgY29uc29sZS5hc3NlcnQocmVzb3VyY2UgaW5zdGFuY2VvZiBXSS5S
ZXNvdXJjZSk7CisKKyAgICAgICAgY29udGVudFZpZXcuYWRkRXZlbnRMaXN0ZW5lcihXSS5SZXNv
dXJjZUNvbnRlbnRWaWV3LkV2ZW50LkNvbnRlbnRFcnJvciwgdGhpcy5faGFuZGxlQ29udGVudEVy
cm9yLCB0aGlzKTsKKyAgICAgICAgY29udGVudFZpZXcuZWxlbWVudC50aXRsZSA9IFdJLmRpc3Bs
YXlOYW1lRm9yVVJMKHJlc291cmNlLnVybCwgcmVzb3VyY2UudXJsQ29tcG9uZW50cyk7CisgICAg
fQorCisgICAgc2VsZWN0ZWRJdGVtQ2hhbmdlZChwcmV2aW91c1NlbGVjdGlvbiwgc2VsZWN0ZWRJ
dGVtKQorICAgIHsKKyAgICAgICAgV0kuc2hvd1JlcHJlc2VudGVkT2JqZWN0KHNlbGVjdGVkSXRl
bSk7CisgICAgfQorCisgICAgLy8gUHJpdmF0ZQorCisgICAgX2hhbmRsZUNvbnRlbnRFcnJvcihl
dmVudCkKKyAgICB7CisgICAgICAgIGlmIChldmVudCAmJiBldmVudC50YXJnZXQpCisgICAgICAg
ICAgICB0aGlzLnJlbW92ZUNvbnRlbnRWaWV3Rm9ySXRlbShldmVudC50YXJnZXQucmVwcmVzZW50
ZWRPYmplY3QpOworICAgIH0KK307Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>321827</attachid>
            <date>2017-09-26 09:52:43 -0700</date>
            <delta_ts>2017-09-26 09:59:13 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-177419-20170926095242.patch</filename>
            <type>text/plain</type>
            <size>16306</size>
            <attacher name="Matt Baker">mattbaker</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIyNTAyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9NYWluLmh0bWwgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9NYWluLmh0bWwKaW5kZXggYWNiMDJmNmVjZGJkNDYwMWY1OGRlYzAxYzU3Njcy
YzkyODNiYWNjMy4uYzkwNjEwYjdhMjNiMDQ4MDk0OGM2NTg5NmM2MTllN2RmZmJlZWM1YiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTWFpbi5odG1sCisr
KyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01haW4uaHRtbApAQCAtNTIy
LDYgKzUyMiw4IEBACiAgICAgPHNjcmlwdCBzcmM9IlZpZXdzL1NldHRpbmdzR3JvdXAuanMiPjwv
c2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJWaWV3cy9TZXR0aW5nc1ZpZXcuanMiPjwvc2NyaXB0
PgogCisgICAgPHNjcmlwdCBzcmM9IlZpZXdzL0NvbGxlY3Rpb25Db250ZW50Vmlldy5qcyI+PC9z
Y3JpcHQ+CisKICAgICA8c2NyaXB0IHNyYz0iVmlld3MvQWN0aXZhdGVCdXR0b25OYXZpZ2F0aW9u
SXRlbS5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IlZpZXdzL0FjdGl2YXRlQnV0dG9u
VG9vbGJhckl0ZW0uanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJWaWV3cy9BcHBsaWNh
dGlvbkNhY2hlRGV0YWlsc1NpZGViYXJQYW5lbC5qcyI+PC9zY3JpcHQ+CkBAIC01NTAsNyArNTUy
LDYgQEAKICAgICA8c2NyaXB0IHNyYz0iVmlld3MvQ29kZU1pcnJvckZvcm1hdHRlcnMuanMiPjwv
c2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJWaWV3cy9Db2RlTWlycm9yUmVnZXhNb2RlLmpzIj48
L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iVmlld3MvQ29kZU1pcnJvclRleHRNYXJrZXJzLmpz
Ij48L3NjcmlwdD4KLSAgICA8c2NyaXB0IHNyYz0iVmlld3MvQ29sbGVjdGlvbkNvbnRlbnRWaWV3
LmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iVmlld3MvQ29sb3JQaWNrZXIuanMiPjwv
c2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJWaWV3cy9Db2xvcldoZWVsLmpzIj48L3NjcmlwdD4K
ICAgICA8c2NyaXB0IHNyYz0iVmlld3MvQ29tcGxldGlvblN1Z2dlc3Rpb25zVmlldy5qcyI+PC9z
Y3JpcHQ+CkBAIC02ODIsNiArNjgzLDcgQEAKICAgICA8c2NyaXB0IHNyYz0iVmlld3MvUmVuZGVy
aW5nRnJhbWVUaW1lbGluZVZpZXcuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJWaWV3
cy9SZXNpemVyLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iVmlld3MvUmVzb3VyY2VD
bHVzdGVyQ29udGVudFZpZXcuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgc3JjPSJWaWV3cy9S
ZXNvdXJjZUNvbGxlY3Rpb25Db250ZW50Vmlldy5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBz
cmM9IlZpZXdzL1Jlc291cmNlRGV0YWlsc1NpZGViYXJQYW5lbC5qcyI+PC9zY3JpcHQ+CiAgICAg
PHNjcmlwdCBzcmM9IlZpZXdzL1Jlc291cmNlU2lkZWJhclBhbmVsLmpzIj48L3NjcmlwdD4KICAg
ICA8c2NyaXB0IHNyYz0iVmlld3MvUmVzb3VyY2VUaW1lbGluZURhdGFHcmlkTm9kZS5qcyI+PC9z
Y3JpcHQ+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9N
b2RlbHMvUmVzb3VyY2VDb2xsZWN0aW9uLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvTW9kZWxzL1Jlc291cmNlQ29sbGVjdGlvbi5qcwppbmRleCAyMzFhOWEwOGU4MTli
MzhjMzAwMmU1MWU2NjRmZmNkZGFjM2Q0MGEwLi5jZDc5NmI4ZDI0Y2MwNjc4ZTNiZDRiYmFjOWM1
NzlmMmY0ZDcwOWJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9Nb2RlbHMvUmVzb3VyY2VDb2xsZWN0aW9uLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9SZXNvdXJjZUNvbGxlY3Rpb24uanMKQEAgLTY0LDYg
KzY0LDggQEAgV0kuUmVzb3VyY2VDb2xsZWN0aW9uID0gY2xhc3MgUmVzb3VyY2VDb2xsZWN0aW9u
IGV4dGVuZHMgV0kuQ29sbGVjdGlvbgogCiAgICAgLy8gUHVibGljCiAKKyAgICBnZXQgcmVzb3Vy
Y2VUeXBlKCkgeyByZXR1cm4gdGhpcy5fcmVzb3VyY2VUeXBlOyB9CisKICAgICByZXNvdXJjZUZv
clVSTCh1cmwpCiAgICAgewogICAgICAgICByZXR1cm4gdGhpcy5fcmVzb3VyY2VVUkxNYXAuZ2V0
KHVybCkgfHwgbnVsbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL1ZpZXdzL0NvbGxlY3Rpb25Db250ZW50Vmlldy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvbGxlY3Rpb25Db250ZW50Vmlldy5qcwppbmRleCAw
MzcyZDEzNzBmNmJiZWM3YzgyMWU2OWQyOTAwNjNhNDkzNmUyM2VhLi40NmRjZTBmODcyYmQzZDM5
NWQyZDc0ZjNkM2ZjOTBhODE3NWRiNWE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9WaWV3cy9Db2xsZWN0aW9uQ29udGVudFZpZXcuanMKKysrIGIvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ29sbGVjdGlvbkNvbnRlbnRW
aWV3LmpzCkBAIC0yNSw5MSArMjUsNDcgQEAKIAogV0kuQ29sbGVjdGlvbkNvbnRlbnRWaWV3ID0g
Y2xhc3MgQ29sbGVjdGlvbkNvbnRlbnRWaWV3IGV4dGVuZHMgV0kuQ29udGVudFZpZXcKIHsKLSAg
ICBjb25zdHJ1Y3Rvcihjb2xsZWN0aW9uKQorICAgIGNvbnN0cnVjdG9yKGNvbGxlY3Rpb24sIGNv
bnRlbnRWaWV3Q29uc3RydWN0b3IsIGNvbnRlbnRQbGFjZWhvbGVyVGV4dCkKICAgICB7CiAgICAg
ICAgIGNvbnNvbGUuYXNzZXJ0KGNvbGxlY3Rpb24gaW5zdGFuY2VvZiBXSS5Db2xsZWN0aW9uKTsK
IAogICAgICAgICBzdXBlcihjb2xsZWN0aW9uKTsKIAotICAgICAgICB0aGlzLnJlcHJlc2VudGVk
T2JqZWN0LmFkZEV2ZW50TGlzdGVuZXIoV0kuQ29sbGVjdGlvbi5FdmVudC5JdGVtQWRkZWQsIHRo
aXMuX2hhbmRsZUl0ZW1BZGRlZCwgdGhpcyk7Ci0gICAgICAgIHRoaXMucmVwcmVzZW50ZWRPYmpl
Y3QuYWRkRXZlbnRMaXN0ZW5lcihXSS5Db2xsZWN0aW9uLkV2ZW50Lkl0ZW1SZW1vdmVkLCB0aGlz
Ll9oYW5kbGVJdGVtUmVtb3ZlZCwgdGhpcyk7CisgICAgICAgIHRoaXMuZWxlbWVudC5jbGFzc0xp
c3QuYWRkKCJjb2xsZWN0aW9uIik7CiAKKyAgICAgICAgdGhpcy5fY29udGVudFBsYWNlaG9sZGVy
ID0gbmV3IFdJLlRpdGxlVmlldyhjb250ZW50UGxhY2Vob2xlclRleHQgfHwgdGhpcy5fZGVmYXVs
dFRpdGxlKCkpOworICAgICAgICB0aGlzLl9jb250ZW50Vmlld0NvbnN0cnVjdG9yID0gY29udGVu
dFZpZXdDb25zdHJ1Y3RvcjsKICAgICAgICAgdGhpcy5fY29udGVudFZpZXdNYXAgPSBuZXcgV2Vh
a01hcDsKICAgICAgICAgdGhpcy5faGFuZGxlQ2xpY2tNYXAgPSBuZXcgV2Vha01hcDsKKyAgICAg
ICAgdGhpcy5fc2VsZWN0ZWRJdGVtID0gbnVsbDsKKyAgICAgICAgdGhpcy5fc2VsZWN0aW9uRW5h
YmxlZCA9IGZhbHNlOworICAgIH0KIAotICAgICAgICB0aGlzLl9jb250ZW50Vmlld0NvbnN0cnVj
dG9yID0gbnVsbDsKLSAgICAgICAgbGV0IHRpdGxlID0gIiI7Ci0gICAgICAgIHN3aXRjaCAodGhp
cy5yZXByZXNlbnRlZE9iamVjdC50eXBlVmVyaWZpZXIpIHsKLSAgICAgICAgY2FzZSBXSS5Db2xs
ZWN0aW9uLlR5cGVWZXJpZmllci5GcmFtZToKLSAgICAgICAgICAgIHRpdGxlID0gV0kuVUlTdHJp
bmcoIkZyYW1lcyIpOwotICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgY2FzZSBXSS5Db2xs
ZWN0aW9uLlR5cGVWZXJpZmllci5TY3JpcHQ6Ci0gICAgICAgICAgICB0aXRsZSA9IFdJLlVJU3Ry
aW5nKCJFeHRyYSBTY3JpcHRzIik7Ci0gICAgICAgICAgICBicmVhazsKLQotICAgICAgICBjYXNl
IFdJLkNvbGxlY3Rpb24uVHlwZVZlcmlmaWVyLlJlc291cmNlOgotICAgICAgICAgICAgdGl0bGUg
PSBXSS5VSVN0cmluZygiUmVzb3VyY2UiKTsKLSAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAg
IGNhc2UgV0kuUmVzb3VyY2VDb2xsZWN0aW9uLlR5cGVWZXJpZmllci5Eb2N1bWVudDoKLSAgICAg
ICAgICAgIHRpdGxlID0gV0kuUmVzb3VyY2UuZGlzcGxheU5hbWVGb3JUeXBlKFdJLlJlc291cmNl
LlR5cGUuRG9jdW1lbnQsIHRydWUpOwotICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgY2Fz
ZSBXSS5SZXNvdXJjZUNvbGxlY3Rpb24uVHlwZVZlcmlmaWVyLlN0eWxlc2hlZXQ6Ci0gICAgICAg
ICAgICB0aXRsZSA9IFdJLlJlc291cmNlLmRpc3BsYXlOYW1lRm9yVHlwZShXSS5SZXNvdXJjZS5U
eXBlLlN0eWxlc2hlZXQsIHRydWUpOwotICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgY2Fz
ZSBXSS5SZXNvdXJjZUNvbGxlY3Rpb24uVHlwZVZlcmlmaWVyLkltYWdlOgotICAgICAgICAgICAg
dGhpcy5fY29udGVudFZpZXdDb25zdHJ1Y3RvciA9IFdJLkltYWdlUmVzb3VyY2VDb250ZW50Vmll
dzsKLSAgICAgICAgICAgIHRpdGxlID0gV0kuUmVzb3VyY2UuZGlzcGxheU5hbWVGb3JUeXBlKFdJ
LlJlc291cmNlLlR5cGUuSW1hZ2UsIHRydWUpOwotICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAg
ICAgY2FzZSBXSS5SZXNvdXJjZUNvbGxlY3Rpb24uVHlwZVZlcmlmaWVyLkZvbnQ6Ci0gICAgICAg
ICAgICB0aXRsZSA9IFdJLlJlc291cmNlLmRpc3BsYXlOYW1lRm9yVHlwZShXSS5SZXNvdXJjZS5U
eXBlLkZvbnQsIHRydWUpOwotICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgY2FzZSBXSS5S
ZXNvdXJjZUNvbGxlY3Rpb24uVHlwZVZlcmlmaWVyLlNjcmlwdDoKLSAgICAgICAgICAgIHRpdGxl
ID0gV0kuUmVzb3VyY2UuZGlzcGxheU5hbWVGb3JUeXBlKFdJLlJlc291cmNlLlR5cGUuU2NyaXB0
LCB0cnVlKTsKLSAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgIGNhc2UgV0kuUmVzb3VyY2VD
b2xsZWN0aW9uLlR5cGVWZXJpZmllci5YSFI6Ci0gICAgICAgICAgICB0aXRsZSA9IFdJLlJlc291
cmNlLmRpc3BsYXlOYW1lRm9yVHlwZShXSS5SZXNvdXJjZS5UeXBlLlhIUiwgdHJ1ZSk7Ci0gICAg
ICAgICAgICBicmVhazsKLQotICAgICAgICBjYXNlIFdJLlJlc291cmNlQ29sbGVjdGlvbi5UeXBl
VmVyaWZpZXIuRmV0Y2g6Ci0gICAgICAgICAgICB0aXRsZSA9IFdJLlJlc291cmNlLmRpc3BsYXlO
YW1lRm9yVHlwZShXSS5SZXNvdXJjZS5UeXBlLkZldGNoLCB0cnVlKTsKLSAgICAgICAgICAgIGJy
ZWFrOwotCi0gICAgICAgIGNhc2UgV0kuUmVzb3VyY2VDb2xsZWN0aW9uLlR5cGVWZXJpZmllci5X
ZWJTb2NrZXQ6Ci0gICAgICAgICAgICB0aXRsZSA9IFdJLlJlc291cmNlLmRpc3BsYXlOYW1lRm9y
VHlwZShXSS5SZXNvdXJjZS5UeXBlLldlYlNvY2tldCwgdHJ1ZSk7Ci0gICAgICAgICAgICBicmVh
azsKLQotICAgICAgICBjYXNlIFdJLlJlc291cmNlQ29sbGVjdGlvbi5UeXBlVmVyaWZpZXIuT3Ro
ZXI6Ci0gICAgICAgICAgICB0aXRsZSA9IFdJLlJlc291cmNlLmRpc3BsYXlOYW1lRm9yVHlwZShX
SS5SZXNvdXJjZS5UeXBlLk90aGVyLCB0cnVlKTsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAg
ICB9CisgICAgLy8gUHVibGljCisgICAgCisgICAgZ2V0IHNlbGVjdGlvbkVuYWJsZWQoKQorICAg
IHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX3NlbGVjdGlvbkVuYWJsZWQ7CisgICAgfQogCi0gICAg
ICAgIHRoaXMuX2NvbnRlbnRQbGFjZWhvbGRlciA9IG5ldyBXSS5UaXRsZVZpZXcodGl0bGUpOwor
ICAgIHNldCBzZWxlY3Rpb25FbmFibGVkKHZhbHVlKQorICAgIHsKKyAgICAgICAgaWYgKHRoaXMu
X3NlbGVjdGlvbkVuYWJsZWQgPT09IHZhbHVlKQorICAgICAgICAgICAgcmV0dXJuOwogCi0gICAg
ICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJjb2xsZWN0aW9uIik7CisgICAgICAgIHRo
aXMuX3NlbGVjdGlvbkVuYWJsZWQgPSB2YWx1ZTsKKyAgICAgICAgaWYgKCF0aGlzLl9zZWxlY3Rp
b25FbmFibGVkKQorICAgICAgICAgICAgdGhpcy5fc2VsZWN0SXRlbShudWxsKTsKICAgICB9CiAK
LSAgICAgLy8gUHVibGljCi0KLSAgICBpbml0aWFsTGF5b3V0KCkKKyAgICBjb250ZW50Vmlld0Zv
ckl0ZW0oaXRlbSkKICAgICB7Ci0gICAgICAgIGxldCBpdGVtcyA9IHRoaXMucmVwcmVzZW50ZWRP
YmplY3QuaXRlbXM7Ci0gICAgICAgIGlmICh0aGlzLl9jb250ZW50Vmlld0NvbnN0cnVjdG9yICYm
IGl0ZW1zLnNpemUpIHsKLSAgICAgICAgICAgIGZvciAobGV0IGl0ZW0gb2YgaXRlbXMpCi0gICAg
ICAgICAgICAgICAgdGhpcy5fYWRkQ29udGVudFZpZXdGb3JJdGVtKGl0ZW0pOwotICAgICAgICB9
IGVsc2UKLSAgICAgICAgICAgIHRoaXMuYWRkU3Vidmlldyh0aGlzLl9jb250ZW50UGxhY2Vob2xk
ZXIpOworICAgICAgICByZXR1cm4gdGhpcy5fY29udGVudFZpZXdNYXAuZ2V0KGl0ZW0pIHx8IG51
bGw7CiAgICAgfQogCi0gICAgIC8vIFByaXZhdGUKKyAgICAvLyBQcm90ZWN0ZWQKIAotICAgIF9h
ZGRDb250ZW50Vmlld0Zvckl0ZW0oaXRlbSkKKyAgICBhZGRDb250ZW50Vmlld0Zvckl0ZW0oaXRl
bSkKICAgICB7CiAgICAgICAgIGlmICghdGhpcy5fY29udGVudFZpZXdDb25zdHJ1Y3RvcikKICAg
ICAgICAgICAgIHJldHVybjsKQEAgLTExOCwyNSArNzQsMjcgQEAgV0kuQ29sbGVjdGlvbkNvbnRl
bnRWaWV3ID0gY2xhc3MgQ29sbGVjdGlvbkNvbnRlbnRWaWV3IGV4dGVuZHMgV0kuQ29udGVudFZp
ZXcKICAgICAgICAgICAgIHRoaXMucmVtb3ZlU3Vidmlldyh0aGlzLl9jb250ZW50UGxhY2Vob2xk
ZXIpOwogCiAgICAgICAgIGxldCBjb250ZW50VmlldyA9IG5ldyB0aGlzLl9jb250ZW50Vmlld0Nv
bnN0cnVjdG9yKGl0ZW0pOwotCi0gICAgICAgIGNvbnRlbnRWaWV3LmFkZEV2ZW50TGlzdGVuZXIo
V0kuUmVzb3VyY2VDb250ZW50Vmlldy5FdmVudC5Db250ZW50RXJyb3IsIHRoaXMuX2hhbmRsZUNv
bnRlbnRFcnJvciwgdGhpcyk7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGNvbnRlbnRWaWV3IGlu
c3RhbmNlb2YgV0kuQ29udGVudFZpZXcpOwogCiAgICAgICAgIGxldCBoYW5kbGVDbGljayA9IChl
dmVudCkgPT4gewogICAgICAgICAgICAgaWYgKGV2ZW50LmJ1dHRvbiAhPT0gMCB8fCBldmVudC5j
dHJsS2V5KQogICAgICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICAgICAgV0kuc2hvd1Jl
cHJlc2VudGVkT2JqZWN0KGl0ZW0pOworICAgICAgICAgICAgaWYgKHRoaXMuX3NlbGVjdGlvbkVu
YWJsZWQpCisgICAgICAgICAgICAgICAgdGhpcy5fc2VsZWN0SXRlbShpdGVtKTsKKyAgICAgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhX
SS5Db2xsZWN0aW9uQ29udGVudFZpZXcuRXZlbnQuSXRlbUNsaWNrZWQsIHtpdGVtfSk7CiAgICAg
ICAgIH07CisKKyAgICAgICAgdGhpcy5fY29udGVudFZpZXdNYXAuc2V0KGl0ZW0sIGNvbnRlbnRW
aWV3KTsKICAgICAgICAgdGhpcy5faGFuZGxlQ2xpY2tNYXAuc2V0KGl0ZW0sIGhhbmRsZUNsaWNr
KTsKICAgICAgICAgY29udGVudFZpZXcuZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJjbGljayIs
IGhhbmRsZUNsaWNrKTsKIAotICAgICAgICBjb250ZW50Vmlldy5lbGVtZW50LnRpdGxlID0gV0ku
ZGlzcGxheU5hbWVGb3JVUkwoaXRlbS51cmwsIGl0ZW0udXJsQ29tcG9uZW50cyk7Ci0KICAgICAg
ICAgdGhpcy5hZGRTdWJ2aWV3KGNvbnRlbnRWaWV3KTsKLSAgICAgICAgdGhpcy5fY29udGVudFZp
ZXdNYXAuc2V0KGl0ZW0sIGNvbnRlbnRWaWV3KTsKKyAgICAgICAgdGhpcy5jb250ZW50Vmlld0Fk
ZGVkKGNvbnRlbnRWaWV3KTsKICAgICB9CiAKLSAgICBfcmVtb3ZlQ29udGVudFZpZXdGb3JJdGVt
KGl0ZW0pCisgICAgcmVtb3ZlQ29udGVudFZpZXdGb3JJdGVtKGl0ZW0pCiAgICAgewogICAgICAg
ICBpZiAoIXRoaXMuX2NvbnRlbnRWaWV3Q29uc3RydWN0b3IpCiAgICAgICAgICAgICByZXR1cm47
CkBAIC0xNDgsMjcgKzEwNiw2OCBAQCBXSS5Db2xsZWN0aW9uQ29udGVudFZpZXcgPSBjbGFzcyBD
b2xsZWN0aW9uQ29udGVudFZpZXcgZXh0ZW5kcyBXSS5Db250ZW50VmlldwogCiAgICAgICAgIHRo
aXMucmVtb3ZlU3Vidmlldyhjb250ZW50Vmlldyk7CiAgICAgICAgIHRoaXMuX2NvbnRlbnRWaWV3
TWFwLmRlbGV0ZShpdGVtKTsKKyAgICAgICAgdGhpcy5jb250ZW50Vmlld1JlbW92ZWQoY29udGVu
dFZpZXcpOwogCiAgICAgICAgIGNvbnRlbnRWaWV3LnJlbW92ZUV2ZW50TGlzdGVuZXIobnVsbCwg
bnVsbCwgdGhpcyk7CiAKICAgICAgICAgbGV0IGhhbmRsZUNsaWNrID0gdGhpcy5faGFuZGxlQ2xp
Y2tNYXAuZ2V0KGl0ZW0pOwogICAgICAgICBjb25zb2xlLmFzc2VydChoYW5kbGVDbGljayk7CisK
ICAgICAgICAgaWYgKGhhbmRsZUNsaWNrKSB7CiAgICAgICAgICAgICBjb250ZW50Vmlldy5lbGVt
ZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoImNsaWNrIiwgaGFuZGxlQ2xpY2spOwogICAgICAgICAg
ICAgdGhpcy5faGFuZGxlQ2xpY2tNYXAuZGVsZXRlKGl0ZW0pOwogICAgICAgICB9CiAKLSAgICAg
ICAgaWYgKCF0aGlzLnJlcHJlc2VudGVkT2JqZWN0LnJlc291cmNlcy5sZW5ndGgpCisgICAgICAg
IGlmICghdGhpcy5zdWJ2aWV3cy5sZW5ndGgpCiAgICAgICAgICAgICB0aGlzLmFkZFN1YnZpZXco
dGhpcy5fY29udGVudFBsYWNlaG9sZGVyKTsKICAgICB9CiAKKyAgICBjb250ZW50Vmlld0FkZGVk
KGNvbnRlbnRWaWV3KQorICAgIHsKKyAgICAgICAgLy8gSW1wbGVtZW50ZWQgYnkgc3ViY2xhc3Nl
cy4KKyAgICB9CisKKyAgICBjb250ZW50Vmlld1JlbW92ZWQoY29udGVudFZpZXcpCisgICAgewor
ICAgICAgICAvLyBJbXBsZW1lbnRlZCBieSBzdWJjbGFzc2VzLgorICAgIH0KKworICAgIGluaXRp
YWxMYXlvdXQoKQorICAgIHsKKyAgICAgICAgbGV0IGl0ZW1zID0gdGhpcy5yZXByZXNlbnRlZE9i
amVjdC5pdGVtczsKKyAgICAgICAgaWYgKCFpdGVtcy5zaXplIHx8ICF0aGlzLl9jb250ZW50Vmll
d0NvbnN0cnVjdG9yKSB7CisgICAgICAgICAgICB0aGlzLmFkZFN1YnZpZXcodGhpcy5fY29udGVu
dFBsYWNlaG9sZGVyKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAg
IGZvciAobGV0IGl0ZW0gb2YgaXRlbXMpCisgICAgICAgICAgICB0aGlzLmFkZENvbnRlbnRWaWV3
Rm9ySXRlbShpdGVtKTsKKyAgICB9CisKKyAgICBhdHRhY2hlZCgpCisgICAgeworICAgICAgICBz
dXBlci5hdHRhY2hlZCgpOworCisgICAgICAgIHRoaXMucmVwcmVzZW50ZWRPYmplY3QuYWRkRXZl
bnRMaXN0ZW5lcihXSS5Db2xsZWN0aW9uLkV2ZW50Lkl0ZW1BZGRlZCwgdGhpcy5faGFuZGxlSXRl
bUFkZGVkLCB0aGlzKTsKKyAgICAgICAgdGhpcy5yZXByZXNlbnRlZE9iamVjdC5hZGRFdmVudExp
c3RlbmVyKFdJLkNvbGxlY3Rpb24uRXZlbnQuSXRlbVJlbW92ZWQsIHRoaXMuX2hhbmRsZUl0ZW1S
ZW1vdmVkLCB0aGlzKTsKKyAgICB9CisKKyAgICBkZXRhY2hlZCgpCisgICAgeworICAgICAgICB0
aGlzLnJlcHJlc2VudGVkT2JqZWN0LnJlbW92ZUV2ZW50TGlzdGVuZXIobnVsbCwgbnVsbCwgdGhp
cyk7CisKKyAgICAgICAgc3VwZXIuZGV0YWNoZWQoKTsKKyAgICB9CisKKyAgICAgLy8gUHJpdmF0
ZQorCiAgICAgX2hhbmRsZUl0ZW1BZGRlZChldmVudCkKICAgICB7CiAgICAgICAgIGxldCBpdGVt
ID0gZXZlbnQuZGF0YS5pdGVtOwogICAgICAgICBpZiAoIWl0ZW0pCiAgICAgICAgICAgICByZXR1
cm47CiAKLSAgICAgICAgdGhpcy5fYWRkQ29udGVudFZpZXdGb3JJdGVtKGl0ZW0pOworICAgICAg
ICB0aGlzLmFkZENvbnRlbnRWaWV3Rm9ySXRlbShpdGVtKTsKICAgICB9CiAKICAgICBfaGFuZGxl
SXRlbVJlbW92ZWQoZXZlbnQpCkBAIC0xNzcsNyArMTc2LDcgQEAgV0kuQ29sbGVjdGlvbkNvbnRl
bnRWaWV3ID0gY2xhc3MgQ29sbGVjdGlvbkNvbnRlbnRWaWV3IGV4dGVuZHMgV0kuQ29udGVudFZp
ZXcKICAgICAgICAgaWYgKCFpdGVtKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIHRo
aXMuX3JlbW92ZUNvbnRlbnRWaWV3Rm9ySXRlbShpdGVtKTsKKyAgICAgICAgdGhpcy5yZW1vdmVD
b250ZW50Vmlld0Zvckl0ZW0oaXRlbSk7CiAgICAgfQogCiAgICAgX2hhbmRsZUNvbnRlbnRFcnJv
cihldmVudCkKQEAgLTE4NSw0ICsxODQsNTUgQEAgV0kuQ29sbGVjdGlvbkNvbnRlbnRWaWV3ID0g
Y2xhc3MgQ29sbGVjdGlvbkNvbnRlbnRWaWV3IGV4dGVuZHMgV0kuQ29udGVudFZpZXcKICAgICAg
ICAgaWYgKGV2ZW50ICYmIGV2ZW50LnRhcmdldCkKICAgICAgICAgICAgIHRoaXMuX3JlbW92ZUNv
bnRlbnRWaWV3Rm9ySXRlbShldmVudC50YXJnZXQucmVwcmVzZW50ZWRPYmplY3QpOwogICAgIH0K
KworICAgIF9kZWZhdWx0VGl0bGUoKQorICAgIHsKKyAgICAgICAgbGV0IHR5cGVWZXJpZmllciA9
IHRoaXMucmVwcmVzZW50ZWRPYmplY3QudHlwZVZlcmlmaWVyOworCisgICAgICAgIHN3aXRjaCAo
dHlwZVZlcmlmaWVyKSB7CisgICAgICAgIGNhc2UgV0kuQ29sbGVjdGlvbi5UeXBlVmVyaWZpZXIu
RnJhbWU6CisgICAgICAgICAgICByZXR1cm4gV0kuVUlTdHJpbmcoIkZyYW1lcyIpOworICAgICAg
ICBjYXNlIFdJLkNvbGxlY3Rpb24uVHlwZVZlcmlmaWVyLlJlc291cmNlOgorICAgICAgICAgICAg
cmV0dXJuIFdJLlVJU3RyaW5nKCJSZXNvdXJjZXMiKTsKKyAgICAgICAgY2FzZSBXSS5Db2xsZWN0
aW9uLlR5cGVWZXJpZmllci5TY3JpcHQ6CisgICAgICAgICAgICByZXR1cm4gV0kuVUlTdHJpbmco
IlNjcmlwdHMiKTsKKyAgICAgICAgY2FzZSBXSS5Db2xsZWN0aW9uLlR5cGVWZXJpZmllci5DU1NT
dHlsZVNoZWV0OgorICAgICAgICAgICAgcmV0dXJuIFdJLlVJU3RyaW5nKCJTdHlsZXNoZWV0cyIp
OworICAgICAgICBjYXNlIFdJLkNvbGxlY3Rpb24uVHlwZVZlcmlmaWVyLkNhbnZhczoKKyAgICAg
ICAgICAgIHJldHVybiBXSS5VSVN0cmluZygiQ2FudmFzZXMiKTsKKyAgICAgICAgY2FzZSBXSS5D
b2xsZWN0aW9uLlR5cGVWZXJpZmllci5TaGFkZXJQcm9ncmFtOgorICAgICAgICAgICAgcmV0dXJu
IFdJLlVJU3RyaW5nKCJTaGFkZXIgUHJvZ3JhbXMiKTsKKyAgICAgICAgfQorCisgICAgICAgIGNv
bnNvbGUuZXJyb3IoIlVua25vd24gdHlwZSB2ZXJpZmllciBmb3IgY29sbGVjdGlvbi4iLCB0eXBl
VmVyaWZpZXIpOworICAgICAgICByZXR1cm4gV0kuVUlTdHJpbmcoIkNvbGxlY3Rpb24iKTsKKyAg
ICB9CisKKyAgICBfc2VsZWN0SXRlbShpdGVtKQorICAgIHsKKyAgICAgICAgaWYgKHRoaXMuX3Nl
bGVjdGVkSXRlbSA9PT0gaXRlbSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBpZiAo
dGhpcy5fc2VsZWN0ZWRJdGVtKSB7CisgICAgICAgICAgICBsZXQgY29udGVudFZpZXcgPSB0aGlz
Ll9jb250ZW50Vmlld01hcC5nZXQodGhpcy5fc2VsZWN0ZWRJdGVtKTsKKyAgICAgICAgICAgIGNv
bnNvbGUuYXNzZXJ0KGNvbnRlbnRWaWV3KTsKKyAgICAgICAgICAgIGNvbnRlbnRWaWV3LmNsYXNz
TGlzdC5yZW1vdmUoInNlbGVjdGVkIik7CisgICAgICAgIH0KKworICAgICAgICBsZXQgcHJldmlv
dXNTZWxlY3Rpb24gPSB0aGlzLl9zZWxlY3RlZEl0ZW07CisgICAgICAgIHRoaXMuX3NlbGVjdGVk
SXRlbSA9IGl0ZW07CisKKyAgICAgICAgaWYgKHRoaXMuX3NlbGVjdGVkSXRlbSkgeworICAgICAg
ICAgICAgbGV0IHNlbGVjdGVkQ29udGVudFZpZXcgPSB0aGlzLl9jb250ZW50Vmlld01hcC5nZXQo
dGhpcy5fc2VsZWN0ZWRJdGVtKTsKKyAgICAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHNlbGVjdGVk
Q29udGVudFZpZXcpOworICAgICAgICAgICAgc2VsZWN0ZWRDb250ZW50Vmlldy5jbGFzc0xpc3Qu
YWRkKCJzZWxlY3RlZCIpOworICAgICAgICB9CisKKyAgICAgICAgdGhpcy5kaXNwYXRjaFRvRXZl
bnRMaXN0ZW5lcnMoV0kuQ29sbGVjdGlvbkNvbnRlbnRWaWV3LkV2ZW50Lkl0ZW1DbGlja2VkLCB7
cHJldmlvdXNTZWxlY3Rpb259KTsKKyAgICB9Cit9OworCitXSS5Db2xsZWN0aW9uQ29udGVudFZp
ZXcuRXZlbnQgPSB7CisgICAgSXRlbUNsaWNrZWQ6ICJjb2xsZWN0aW9uLWNvbnRlbnQtdmlldy1p
dGVtLWNsaWNrZWQiLAorICAgIFNlbGVjdGVkSXRlbUNoYW5nZWQ6ICJjb2xsZWN0aW9uLWNvbnRl
bnQtdmlldy1zZWxlY3RlZC1pdGVtLWNoYW5nZWQiLAogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvbnRlbnRWaWV3LmpzIGIvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ29udGVudFZpZXcuanMKaW5kZXgg
NTAyNzM4NGJmYzBhNzQxODI3ZmYzMDUzMTBlNjFlZWYxOTg1Zjc4My4uMjFlNzY4YWE0NzAzYTJm
NzFmNmZiMjJhZjA1YzU0NzNhOTcyNDBhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ29udGVudFZpZXcuanMKKysrIGIvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ29udGVudFZpZXcuanMKQEAgLTE2MSw2ICsx
NjEsOSBAQCBXSS5Db250ZW50VmlldyA9IGNsYXNzIENvbnRlbnRWaWV3IGV4dGVuZHMgV0kuVmll
dwogICAgICAgICBpZiAocmVwcmVzZW50ZWRPYmplY3QgaW5zdGFuY2VvZiBXSS5SZWNvcmRpbmcp
CiAgICAgICAgICAgICByZXR1cm4gbmV3IFdJLlJlY29yZGluZ0NvbnRlbnRWaWV3KHJlcHJlc2Vu
dGVkT2JqZWN0LCBleHRyYUFyZ3VtZW50cyk7CiAKKyAgICAgICAgaWYgKHJlcHJlc2VudGVkT2Jq
ZWN0IGluc3RhbmNlb2YgV0kuUmVzb3VyY2VDb2xsZWN0aW9uKQorICAgICAgICAgICAgcmV0dXJu
IG5ldyBXSS5SZXNvdXJjZUNvbGxlY3Rpb25Db250ZW50VmlldyhyZXByZXNlbnRlZE9iamVjdCwg
ZXh0cmFBcmd1bWVudHMpOworCiAgICAgICAgIGlmIChyZXByZXNlbnRlZE9iamVjdCBpbnN0YW5j
ZW9mIFdJLkNvbGxlY3Rpb24pCiAgICAgICAgICAgICByZXR1cm4gbmV3IFdJLkNvbGxlY3Rpb25D
b250ZW50VmlldyhyZXByZXNlbnRlZE9iamVjdCwgZXh0cmFBcmd1bWVudHMpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9SZXNvdXJjZUNv
bGxlY3Rpb25Db250ZW50Vmlldy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL1ZpZXdzL1Jlc291cmNlQ29sbGVjdGlvbkNvbnRlbnRWaWV3LmpzCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE1
YTY5MDMyYzc2YTFiNTc1MjdhNGM3YTg3MDVmOWVlNTczOTU3YzQKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9SZXNvdXJjZUNvbGxl
Y3Rpb25Db250ZW50Vmlldy5qcwpAQCAtMCwwICsxLDcxIEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
KyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3Vy
Y2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAy
LiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3Zl
IGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhl
IGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBU
SElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRP
UlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENP
TlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBC
VVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJ
U0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworV0kuUmVz
b3VyY2VDb2xsZWN0aW9uQ29udGVudFZpZXcgPSBjbGFzcyBSZXNvdXJjZUNvbGxlY3Rpb25Db250
ZW50VmlldyBleHRlbmRzIFdJLkNvbGxlY3Rpb25Db250ZW50VmlldworeworICAgIGNvbnN0cnVj
dG9yKGNvbGxlY3Rpb24pCisgICAgeworICAgICAgICBjb25zb2xlLmFzc2VydChjb2xsZWN0aW9u
IGluc3RhbmNlb2YgV0kuUmVzb3VyY2VDb2xsZWN0aW9uKTsKKworICAgICAgICBsZXQgY29udGVu
dFZpZXdDb25zdHJ1Y3RvciA9IG51bGw7CisgICAgICAgIGlmIChjb2xsZWN0aW9uLnJlc291cmNl
VHlwZSA9PT0gV0kuUmVzb3VyY2UuVHlwZS5JbWFnZSkKKyAgICAgICAgICAgIGNvbnRlbnRWaWV3
Q29uc3RydWN0b3IgPSBXSS5JbWFnZVJlc291cmNlQ29udGVudFZpZXc7CisKKyAgICAgICAgbGV0
IHRpdGxlID0gV0kuUmVzb3VyY2UuZGlzcGxheU5hbWVGb3JUeXBlKGNvbGxlY3Rpb24ucmVzb3Vy
Y2VUeXBlLCB0cnVlKTsKKworICAgICAgICBzdXBlcihjb2xsZWN0aW9uLCBjb250ZW50Vmlld0Nv
bnN0cnVjdG9yLCB0aXRsZSk7CisKKyAgICAgICAgdGhpcy5hZGRFdmVudExpc3RlbmVyKFdJLkNv
bGxlY3Rpb25Db250ZW50Vmlldy5FdmVudC5JdGVtQ2xpY2tlZCwgdGhpcy5faXRlbUNsaWNrZWQs
IHRoaXMpOworICAgIH0KKworICAgIC8vIFByb3RlY3RlZAorCisgICAgY29udGVudFZpZXdBZGRl
ZChjb250ZW50VmlldykKKyAgICB7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGNvbnRlbnRWaWV3
IGluc3RhbmNlb2YgV0kuUmVzb3VyY2VDb250ZW50Vmlldyk7CisKKyAgICAgICAgbGV0IHJlc291
cmNlID0gY29udGVudFZpZXcucmVwcmVzZW50ZWRPYmplY3Q7CisgICAgICAgIGNvbnNvbGUuYXNz
ZXJ0KHJlc291cmNlIGluc3RhbmNlb2YgV0kuUmVzb3VyY2UpOworCisgICAgICAgIGNvbnRlbnRW
aWV3LmFkZEV2ZW50TGlzdGVuZXIoV0kuUmVzb3VyY2VDb250ZW50Vmlldy5FdmVudC5Db250ZW50
RXJyb3IsIHRoaXMuX2hhbmRsZUNvbnRlbnRFcnJvciwgdGhpcyk7CisgICAgICAgIGNvbnRlbnRW
aWV3LmVsZW1lbnQudGl0bGUgPSBXSS5kaXNwbGF5TmFtZUZvclVSTChyZXNvdXJjZS51cmwsIHJl
c291cmNlLnVybENvbXBvbmVudHMpOworICAgIH0KKworICAgIC8vIFByaXZhdGUKKworICAgIF9o
YW5kbGVDb250ZW50RXJyb3IoZXZlbnQpCisgICAgeworICAgICAgICBpZiAoZXZlbnQgJiYgZXZl
bnQudGFyZ2V0KQorICAgICAgICAgICAgdGhpcy5yZW1vdmVDb250ZW50Vmlld0Zvckl0ZW0oZXZl
bnQudGFyZ2V0LnJlcHJlc2VudGVkT2JqZWN0KTsKKyAgICB9CisKKyAgICBfaXRlbUNsaWNrZWQo
ZXZlbnQpCisgICAgeworICAgICAgICBsZXQgcmVwcmVzZW50ZWRPYmplY3QgPSBldmVudC5kYXRh
Lml0ZW07CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHJlcHJlc2VudGVkT2JqZWN0KTsKKworICAg
ICAgICBXSS5zaG93UmVwcmVzZW50ZWRPYmplY3QocmVwcmVzZW50ZWRPYmplY3QpOworICAgIH0K
K307Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>321829</attachid>
            <date>2017-09-26 09:59:14 -0700</date>
            <delta_ts>2017-09-26 13:59:43 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-177419-20170926095913.patch</filename>
            <type>text/plain</type>
            <size>20777</size>
            <attacher name="Matt Baker">mattbaker</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIyNTAyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwppbmRleCBm
N2U1Zjc4ZmVlNDZiYzRjZWFjNWFmMGI0ZmE0ZjJjYzI5M2M5ZWIyLi45NjA2MWI0NGU1OTdlMzBh
ZTNiMGMzYTAxMjhkYjI2N2FlYzQ2ZGNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw2MiBAQAorMjAxNy0wOS0yNiAgTWF0dCBCYWtlciAgPG1hdHRiYWtlckBhcHBsZS5jb20+
CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogQ3JlYXRlIFJlc291cmNlQ29sbGVjdGlvbkNvbnRl
bnRWaWV3IGFuZCBtYWtlIENvbGxlY3Rpb25Db250ZW50VmlldyBlYXNpZXIgdG8gZXh0ZW5kCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzc0MTkKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDb2xsZWN0aW9u
Q29udGVudFZpZXcgc2hvdWxkIGJlIGdlbmVyaWMsIHdvcmsgd2l0aCBhbnkgcmVwcmVzZW50ZWQg
b2JqZWN0CisgICAgICAgIENvbGxlY3Rpb24sIGFuZCBub3QgcGVyZm9ybSBhbnkgdHlwZSBjaGVj
a2luZy4gSXQgc2hvdWxkIGp1c3QgbWFwIGl0ZW1zCisgICAgICAgIHRvIENvbnRlbnRWaWV3cyB1
c2luZyB0aGUgcHJvdmlkZWQgQ29udGVudFZpZXcgY29uc3RydWN0b3IuCisKKyAgICAgICAgVGhp
cyBwYXRjaCBhbHNvIGFkZHMgc29tZSBiYXNpYyBiZWhhdmlvcnMgZm9yIGludGVyYWN0aW5nIHdp
dGggQ29udGVudFZpZXdzLgorICAgICAgICBJZiBzZWxlY3Rpb24gaXMgZW5hYmxlZCwgY2xpY2tp
bmcgYW4gaXRlbSB3aWxsIGNhdXNlIGl0IHRvIGJlY29tZSBzZWxlY3RlZCwKKyAgICAgICAgYW5k
IGEgU2VsZWN0ZWRJdGVtQ2hhbmdlZCBldmVudCBpcyBkaXNwYXRjaGVkLiBJZiBzZWxlY3Rpb24g
aXMgZGlzYWJsZWQKKyAgICAgICAgKHRoZSBkZWZhdWx0KSwgYW4gSXRlbUNsaWNrZWQgZXZlbnQg
aXMgZGlzcGF0Y2hlZC4KKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvTWFpbi5odG1sOgorICAg
ICAgICBOZXcgZmlsZSwgbW92ZSBDb2xsZWN0aW9uQ29udGVudFZpZXcgYWJvdmUgc3ViY2xhc3Nl
cy4KKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvTW9kZWxzL1Jlc291cmNlQ29sbGVjdGlvbi5q
czoKKyAgICAgICAgKFdJLlJlc291cmNlQ29sbGVjdGlvbi5wcm90b3R5cGUuZ2V0IHJlc291cmNl
VHlwZSk6CisgICAgICAgIE1ha2UgcmVzb3VyY2UgdHlwZSBwdWJsaWNseSBhdmFpbGFibGUuCisK
KyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL0NvbGxlY3Rpb25Db250ZW50Vmlldy5qczoK
KyAgICAgICAgTW92ZSB0eXBlIGNoZWNraW5nIG9mIHRoZSBjb2xsZWN0aW9uIG91dCBvZiB0aGUg
YmFzZSBjbGFzcyBhbmQgYXNzZXJ0CisgICAgICAgIHRoYXQgQ29udGVudFZpZXdzIGFyZSBjcmVh
dGVkIHdoZW4gaW52b2tpbmcgYGNvbnRlbnRWaWV3Q29uc3RydWN0b3JgLgorCisgICAgICAgIChX
SS5Db2xsZWN0aW9uQ29udGVudFZpZXcpOgorICAgICAgICAoV0kuQ29sbGVjdGlvbkNvbnRlbnRW
aWV3LnByb3RvdHlwZS5nZXQgc2VsZWN0ZWRJdGVtKToKKyAgICAgICAgKFdJLkNvbGxlY3Rpb25D
b250ZW50Vmlldy5wcm90b3R5cGUuZ2V0IHNlbGVjdGlvbkVuYWJsZWQpOgorICAgICAgICAoV0ku
Q29sbGVjdGlvbkNvbnRlbnRWaWV3LnByb3RvdHlwZS5zZXQgc2VsZWN0aW9uRW5hYmxlZCk6Cisg
ICAgICAgIChXSS5Db2xsZWN0aW9uQ29udGVudFZpZXcucHJvdG90eXBlLmNvbnRlbnRWaWV3Rm9y
SXRlbSk6CisgICAgICAgIChXSS5Db2xsZWN0aW9uQ29udGVudFZpZXcucHJvdG90eXBlLmFkZENv
bnRlbnRWaWV3Rm9ySXRlbSk6CisgICAgICAgIChXSS5Db2xsZWN0aW9uQ29udGVudFZpZXcucHJv
dG90eXBlLnJlbW92ZUNvbnRlbnRWaWV3Rm9ySXRlbSk6CisgICAgICAgIChXSS5Db2xsZWN0aW9u
Q29udGVudFZpZXcucHJvdG90eXBlLmNvbnRlbnRWaWV3QWRkZWQpOgorICAgICAgICAoV0kuQ29s
bGVjdGlvbkNvbnRlbnRWaWV3LnByb3RvdHlwZS5jb250ZW50Vmlld1JlbW92ZWQpOgorICAgICAg
ICAoV0kuQ29sbGVjdGlvbkNvbnRlbnRWaWV3LnByb3RvdHlwZS5pbml0aWFsTGF5b3V0KToKKyAg
ICAgICAgKFdJLkNvbGxlY3Rpb25Db250ZW50Vmlldy5wcm90b3R5cGUuYXR0YWNoZWQpOgorICAg
ICAgICAoV0kuQ29sbGVjdGlvbkNvbnRlbnRWaWV3LnByb3RvdHlwZS5kZXRhY2hlZCk6CisgICAg
ICAgIChXSS5Db2xsZWN0aW9uQ29udGVudFZpZXcucHJvdG90eXBlLl9oYW5kbGVJdGVtQWRkZWQp
OgorICAgICAgICAoV0kuQ29sbGVjdGlvbkNvbnRlbnRWaWV3LnByb3RvdHlwZS5faGFuZGxlSXRl
bVJlbW92ZWQpOgorICAgICAgICAoV0kuQ29sbGVjdGlvbkNvbnRlbnRWaWV3LnByb3RvdHlwZS5f
ZGVmYXVsdFRpdGxlKToKKyAgICAgICAgKFdJLkNvbGxlY3Rpb25Db250ZW50Vmlldy5wcm90b3R5
cGUuX3NlbGVjdEl0ZW0pOgorICAgICAgICAoV0kuQ29sbGVjdGlvbkNvbnRlbnRWaWV3LnByb3Rv
dHlwZS5fYWRkQ29udGVudFZpZXdGb3JJdGVtKTogRGVsZXRlZC4KKyAgICAgICAgKFdJLkNvbGxl
Y3Rpb25Db250ZW50Vmlldy5wcm90b3R5cGUuX3JlbW92ZUNvbnRlbnRWaWV3Rm9ySXRlbSk6IERl
bGV0ZWQuCisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL0NvbnRlbnRWaWV3LmpzOgor
ICAgICAgICAoV0kuQ29udGVudFZpZXcuY3JlYXRlRnJvbVJlcHJlc2VudGVkT2JqZWN0KToKKyAg
ICAgICAgQ3JlYXRlIGEgUmVzb3VyY2VDb2xsZWN0aW9uQ29udGVudFZpZXcuIEluIHRoZSBmdXR1
cmUsIGFkZGl0aW9uYWwKKyAgICAgICAgQ29sbGVjdGlvbiB0eXBlcyBjYW4gYmUgbWFwcGVkIHRv
IHRoZWlyIGFzc29jaWF0ZWQgQ29sbGVjdGlvbkNvbnRlbnRWaWV3LgorCisgICAgICAgICogVXNl
ckludGVyZmFjZS9WaWV3cy9SZXNvdXJjZUNvbGxlY3Rpb25Db250ZW50Vmlldy5qczogQWRkZWQu
CisgICAgICAgIE5ldyBjbGFzcyBmb3IgcmVzb3VyY2Utc3BlY2lmaWMgbG9naWMgcHJldmlvdXNs
eSBpbiBDb2xsZWN0aW9uQ29udGVudFZpZXcuCisgICAgICAgIChXSS5SZXNvdXJjZUNvbGxlY3Rp
b25Db250ZW50Vmlldyk6CisgICAgICAgIChXSS5SZXNvdXJjZUNvbGxlY3Rpb25Db250ZW50Vmll
dy5wcm90b3R5cGUuY29udGVudFZpZXdBZGRlZCk6CisgICAgICAgIChXSS5SZXNvdXJjZUNvbGxl
Y3Rpb25Db250ZW50Vmlldy5wcm90b3R5cGUuX2hhbmRsZUNvbnRlbnRFcnJvcik6CisgICAgICAg
IChXSS5SZXNvdXJjZUNvbGxlY3Rpb25Db250ZW50Vmlldy5wcm90b3R5cGUuX2l0ZW1DbGlja2Vk
KToKKyAgICAgICAgUmVtb3ZlIENvbnRlbnRWaWV3IHdpdGhvdXQgcmVtb3ZpbmcgdGhlIHJlc291
cmNlIGZyb20gaXRzIGNvbGxlY3Rpb24uCisKIDIwMTctMDktMjUgIERldmluIFJvdXNzbyAgPHdl
YmtpdEBkZXZpbnJvdXNzby5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogbW92ZSBDb25z
b2xlLmFkZEluc3BlY3RlZE5vZGUgdG8gRE9NLnNldEluc3BlY3RlZE5vZGUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Mb2NhbGl6YXRpb25zL2VuLmxwcm9qL2xvY2FsaXplZFN0
cmluZ3MuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvTG9jYWxpemF0aW9ucy9lbi5scHJvai9s
b2NhbGl6ZWRTdHJpbmdzLmpzCmluZGV4IDdlODFkOTE3MGRjZTY0NmE4MTU2YWU3NWI0MzM0NzBl
OWE0ZTM5YzguLmI0OWVhMmZiNzZiN2I5ZjNkZTgyMzhlOGU2ZjViOTM4MTdhZDVmYjUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Mb2NhbGl6YXRpb25zL2VuLmxwcm9qL2xvY2Fs
aXplZFN0cmluZ3MuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0xvY2FsaXphdGlvbnMv
ZW4ubHByb2ovbG9jYWxpemVkU3RyaW5ncy5qcwpAQCAtMjA0LDYgKzIwNCw3IEBAIGxvY2FsaXpl
ZFN0cmluZ3NbIkNvZGUiXSA9ICJDb2RlIjsKIGxvY2FsaXplZFN0cmluZ3NbIkNvbGxhcHNlIEFs
bCJdID0gIkNvbGxhcHNlIEFsbCI7CiBsb2NhbGl6ZWRTdHJpbmdzWyJDb2xsYXBzZSBjb2x1bW5z
Il0gPSAiQ29sbGFwc2UgY29sdW1ucyI7CiBsb2NhbGl6ZWRTdHJpbmdzWyJDb2xsZWN0IGdhcmJh
Z2UiXSA9ICJDb2xsZWN0IGdhcmJhZ2UiOworbG9jYWxpemVkU3RyaW5nc1siQ29sbGVjdGlvbiJd
ID0gIkNvbGxlY3Rpb24iOwogbG9jYWxpemVkU3RyaW5nc1siQ29sb3IiXSA9ICJDb2xvciI7CiBs
b2NhbGl6ZWRTdHJpbmdzWyJDb21tZW50Il0gPSAiQ29tbWVudCI7CiBsb2NhbGl6ZWRTdHJpbmdz
WyJDb21tZW50IEFsbCBQcm9wZXJ0aWVzIl0gPSAiQ29tbWVudCBBbGwgUHJvcGVydGllcyI7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9NYWluLmh0bWwg
Yi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9NYWluLmh0bWwKaW5kZXggYWNi
MDJmNmVjZGJkNDYwMWY1OGRlYzAxYzU3NjcyYzkyODNiYWNjMy4uYzkwNjEwYjdhMjNiMDQ4MDk0
OGM2NTg5NmM2MTllN2RmZmJlZWM1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvTWFpbi5odG1sCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL01haW4uaHRtbApAQCAtNTIyLDYgKzUyMiw4IEBACiAgICAgPHNjcmlwdCBzcmM9
IlZpZXdzL1NldHRpbmdzR3JvdXAuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJWaWV3
cy9TZXR0aW5nc1ZpZXcuanMiPjwvc2NyaXB0PgogCisgICAgPHNjcmlwdCBzcmM9IlZpZXdzL0Nv
bGxlY3Rpb25Db250ZW50Vmlldy5qcyI+PC9zY3JpcHQ+CisKICAgICA8c2NyaXB0IHNyYz0iVmll
d3MvQWN0aXZhdGVCdXR0b25OYXZpZ2F0aW9uSXRlbS5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlw
dCBzcmM9IlZpZXdzL0FjdGl2YXRlQnV0dG9uVG9vbGJhckl0ZW0uanMiPjwvc2NyaXB0PgogICAg
IDxzY3JpcHQgc3JjPSJWaWV3cy9BcHBsaWNhdGlvbkNhY2hlRGV0YWlsc1NpZGViYXJQYW5lbC5q
cyI+PC9zY3JpcHQ+CkBAIC01NTAsNyArNTUyLDYgQEAKICAgICA8c2NyaXB0IHNyYz0iVmlld3Mv
Q29kZU1pcnJvckZvcm1hdHRlcnMuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJWaWV3
cy9Db2RlTWlycm9yUmVnZXhNb2RlLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iVmll
d3MvQ29kZU1pcnJvclRleHRNYXJrZXJzLmpzIj48L3NjcmlwdD4KLSAgICA8c2NyaXB0IHNyYz0i
Vmlld3MvQ29sbGVjdGlvbkNvbnRlbnRWaWV3LmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNy
Yz0iVmlld3MvQ29sb3JQaWNrZXIuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJWaWV3
cy9Db2xvcldoZWVsLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iVmlld3MvQ29tcGxl
dGlvblN1Z2dlc3Rpb25zVmlldy5qcyI+PC9zY3JpcHQ+CkBAIC02ODIsNiArNjgzLDcgQEAKICAg
ICA8c2NyaXB0IHNyYz0iVmlld3MvUmVuZGVyaW5nRnJhbWVUaW1lbGluZVZpZXcuanMiPjwvc2Ny
aXB0PgogICAgIDxzY3JpcHQgc3JjPSJWaWV3cy9SZXNpemVyLmpzIj48L3NjcmlwdD4KICAgICA8
c2NyaXB0IHNyYz0iVmlld3MvUmVzb3VyY2VDbHVzdGVyQ29udGVudFZpZXcuanMiPjwvc2NyaXB0
PgorICAgIDxzY3JpcHQgc3JjPSJWaWV3cy9SZXNvdXJjZUNvbGxlY3Rpb25Db250ZW50Vmlldy5q
cyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IlZpZXdzL1Jlc291cmNlRGV0YWlsc1NpZGVi
YXJQYW5lbC5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IlZpZXdzL1Jlc291cmNlU2lk
ZWJhclBhbmVsLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iVmlld3MvUmVzb3VyY2VU
aW1lbGluZURhdGFHcmlkTm9kZS5qcyI+PC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvUmVzb3VyY2VDb2xsZWN0aW9uLmpzIGIv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL1Jlc291cmNlQ29sbGVj
dGlvbi5qcwppbmRleCAyMzFhOWEwOGU4MTliMzhjMzAwMmU1MWU2NjRmZmNkZGFjM2Q0MGEwLi5j
ZDc5NmI4ZDI0Y2MwNjc4ZTNiZDRiYmFjOWM1NzlmMmY0ZDcwOWJmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvUmVzb3VyY2VDb2xsZWN0aW9u
LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9SZXNv
dXJjZUNvbGxlY3Rpb24uanMKQEAgLTY0LDYgKzY0LDggQEAgV0kuUmVzb3VyY2VDb2xsZWN0aW9u
ID0gY2xhc3MgUmVzb3VyY2VDb2xsZWN0aW9uIGV4dGVuZHMgV0kuQ29sbGVjdGlvbgogCiAgICAg
Ly8gUHVibGljCiAKKyAgICBnZXQgcmVzb3VyY2VUeXBlKCkgeyByZXR1cm4gdGhpcy5fcmVzb3Vy
Y2VUeXBlOyB9CisKICAgICByZXNvdXJjZUZvclVSTCh1cmwpCiAgICAgewogICAgICAgICByZXR1
cm4gdGhpcy5fcmVzb3VyY2VVUkxNYXAuZ2V0KHVybCkgfHwgbnVsbDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvbGxlY3Rpb25Db250ZW50
Vmlldy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvbGxl
Y3Rpb25Db250ZW50Vmlldy5qcwppbmRleCAwMzcyZDEzNzBmNmJiZWM3YzgyMWU2OWQyOTAwNjNh
NDkzNmUyM2VhLi40OTFhMzYyNjczZDlmMTRiMDczOTY5NTVlY2FiMDlmYWFmM2Q3NTIxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Db2xsZWN0
aW9uQ29udGVudFZpZXcuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvVmlld3MvQ29sbGVjdGlvbkNvbnRlbnRWaWV3LmpzCkBAIC0yNSw5MSArMjUsNDkgQEAKIAog
V0kuQ29sbGVjdGlvbkNvbnRlbnRWaWV3ID0gY2xhc3MgQ29sbGVjdGlvbkNvbnRlbnRWaWV3IGV4
dGVuZHMgV0kuQ29udGVudFZpZXcKIHsKLSAgICBjb25zdHJ1Y3Rvcihjb2xsZWN0aW9uKQorICAg
IGNvbnN0cnVjdG9yKGNvbGxlY3Rpb24sIGNvbnRlbnRWaWV3Q29uc3RydWN0b3IsIGNvbnRlbnRQ
bGFjZWhvbGVyVGV4dCkKICAgICB7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGNvbGxlY3Rpb24g
aW5zdGFuY2VvZiBXSS5Db2xsZWN0aW9uKTsKIAogICAgICAgICBzdXBlcihjb2xsZWN0aW9uKTsK
IAotICAgICAgICB0aGlzLnJlcHJlc2VudGVkT2JqZWN0LmFkZEV2ZW50TGlzdGVuZXIoV0kuQ29s
bGVjdGlvbi5FdmVudC5JdGVtQWRkZWQsIHRoaXMuX2hhbmRsZUl0ZW1BZGRlZCwgdGhpcyk7Ci0g
ICAgICAgIHRoaXMucmVwcmVzZW50ZWRPYmplY3QuYWRkRXZlbnRMaXN0ZW5lcihXSS5Db2xsZWN0
aW9uLkV2ZW50Lkl0ZW1SZW1vdmVkLCB0aGlzLl9oYW5kbGVJdGVtUmVtb3ZlZCwgdGhpcyk7Cisg
ICAgICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJjb2xsZWN0aW9uIik7CiAKKyAgICAg
ICAgdGhpcy5fY29udGVudFBsYWNlaG9sZGVyID0gbmV3IFdJLlRpdGxlVmlldyhjb250ZW50UGxh
Y2Vob2xlclRleHQgfHwgdGhpcy5fZGVmYXVsdFRpdGxlKCkpOworICAgICAgICB0aGlzLl9jb250
ZW50Vmlld0NvbnN0cnVjdG9yID0gY29udGVudFZpZXdDb25zdHJ1Y3RvcjsKICAgICAgICAgdGhp
cy5fY29udGVudFZpZXdNYXAgPSBuZXcgV2Vha01hcDsKICAgICAgICAgdGhpcy5faGFuZGxlQ2xp
Y2tNYXAgPSBuZXcgV2Vha01hcDsKKyAgICAgICAgdGhpcy5fc2VsZWN0ZWRJdGVtID0gbnVsbDsK
KyAgICAgICAgdGhpcy5fc2VsZWN0aW9uRW5hYmxlZCA9IGZhbHNlOworICAgIH0KIAotICAgICAg
ICB0aGlzLl9jb250ZW50Vmlld0NvbnN0cnVjdG9yID0gbnVsbDsKLSAgICAgICAgbGV0IHRpdGxl
ID0gIiI7Ci0gICAgICAgIHN3aXRjaCAodGhpcy5yZXByZXNlbnRlZE9iamVjdC50eXBlVmVyaWZp
ZXIpIHsKLSAgICAgICAgY2FzZSBXSS5Db2xsZWN0aW9uLlR5cGVWZXJpZmllci5GcmFtZToKLSAg
ICAgICAgICAgIHRpdGxlID0gV0kuVUlTdHJpbmcoIkZyYW1lcyIpOwotICAgICAgICAgICAgYnJl
YWs7Ci0KLSAgICAgICAgY2FzZSBXSS5Db2xsZWN0aW9uLlR5cGVWZXJpZmllci5TY3JpcHQ6Ci0g
ICAgICAgICAgICB0aXRsZSA9IFdJLlVJU3RyaW5nKCJFeHRyYSBTY3JpcHRzIik7Ci0gICAgICAg
ICAgICBicmVhazsKLQotICAgICAgICBjYXNlIFdJLkNvbGxlY3Rpb24uVHlwZVZlcmlmaWVyLlJl
c291cmNlOgotICAgICAgICAgICAgdGl0bGUgPSBXSS5VSVN0cmluZygiUmVzb3VyY2UiKTsKLSAg
ICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgIGNhc2UgV0kuUmVzb3VyY2VDb2xsZWN0aW9uLlR5
cGVWZXJpZmllci5Eb2N1bWVudDoKLSAgICAgICAgICAgIHRpdGxlID0gV0kuUmVzb3VyY2UuZGlz
cGxheU5hbWVGb3JUeXBlKFdJLlJlc291cmNlLlR5cGUuRG9jdW1lbnQsIHRydWUpOwotICAgICAg
ICAgICAgYnJlYWs7Ci0KLSAgICAgICAgY2FzZSBXSS5SZXNvdXJjZUNvbGxlY3Rpb24uVHlwZVZl
cmlmaWVyLlN0eWxlc2hlZXQ6Ci0gICAgICAgICAgICB0aXRsZSA9IFdJLlJlc291cmNlLmRpc3Bs
YXlOYW1lRm9yVHlwZShXSS5SZXNvdXJjZS5UeXBlLlN0eWxlc2hlZXQsIHRydWUpOwotICAgICAg
ICAgICAgYnJlYWs7Ci0KLSAgICAgICAgY2FzZSBXSS5SZXNvdXJjZUNvbGxlY3Rpb24uVHlwZVZl
cmlmaWVyLkltYWdlOgotICAgICAgICAgICAgdGhpcy5fY29udGVudFZpZXdDb25zdHJ1Y3RvciA9
IFdJLkltYWdlUmVzb3VyY2VDb250ZW50VmlldzsKLSAgICAgICAgICAgIHRpdGxlID0gV0kuUmVz
b3VyY2UuZGlzcGxheU5hbWVGb3JUeXBlKFdJLlJlc291cmNlLlR5cGUuSW1hZ2UsIHRydWUpOwot
ICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgY2FzZSBXSS5SZXNvdXJjZUNvbGxlY3Rpb24u
VHlwZVZlcmlmaWVyLkZvbnQ6Ci0gICAgICAgICAgICB0aXRsZSA9IFdJLlJlc291cmNlLmRpc3Bs
YXlOYW1lRm9yVHlwZShXSS5SZXNvdXJjZS5UeXBlLkZvbnQsIHRydWUpOwotICAgICAgICAgICAg
YnJlYWs7Ci0KLSAgICAgICAgY2FzZSBXSS5SZXNvdXJjZUNvbGxlY3Rpb24uVHlwZVZlcmlmaWVy
LlNjcmlwdDoKLSAgICAgICAgICAgIHRpdGxlID0gV0kuUmVzb3VyY2UuZGlzcGxheU5hbWVGb3JU
eXBlKFdJLlJlc291cmNlLlR5cGUuU2NyaXB0LCB0cnVlKTsKLSAgICAgICAgICAgIGJyZWFrOwot
Ci0gICAgICAgIGNhc2UgV0kuUmVzb3VyY2VDb2xsZWN0aW9uLlR5cGVWZXJpZmllci5YSFI6Ci0g
ICAgICAgICAgICB0aXRsZSA9IFdJLlJlc291cmNlLmRpc3BsYXlOYW1lRm9yVHlwZShXSS5SZXNv
dXJjZS5UeXBlLlhIUiwgdHJ1ZSk7Ci0gICAgICAgICAgICBicmVhazsKLQotICAgICAgICBjYXNl
IFdJLlJlc291cmNlQ29sbGVjdGlvbi5UeXBlVmVyaWZpZXIuRmV0Y2g6Ci0gICAgICAgICAgICB0
aXRsZSA9IFdJLlJlc291cmNlLmRpc3BsYXlOYW1lRm9yVHlwZShXSS5SZXNvdXJjZS5UeXBlLkZl
dGNoLCB0cnVlKTsKLSAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgIGNhc2UgV0kuUmVzb3Vy
Y2VDb2xsZWN0aW9uLlR5cGVWZXJpZmllci5XZWJTb2NrZXQ6Ci0gICAgICAgICAgICB0aXRsZSA9
IFdJLlJlc291cmNlLmRpc3BsYXlOYW1lRm9yVHlwZShXSS5SZXNvdXJjZS5UeXBlLldlYlNvY2tl
dCwgdHJ1ZSk7Ci0gICAgICAgICAgICBicmVhazsKKyAgICAvLyBQdWJsaWMKKyAgICAKKyAgICBn
ZXQgc2VsZWN0ZWRJdGVtKCkgeyByZXR1cm4gdGhpcy5fc2VsZWN0ZWRJdGVtOyB9CiAKLSAgICAg
ICAgY2FzZSBXSS5SZXNvdXJjZUNvbGxlY3Rpb24uVHlwZVZlcmlmaWVyLk90aGVyOgotICAgICAg
ICAgICAgdGl0bGUgPSBXSS5SZXNvdXJjZS5kaXNwbGF5TmFtZUZvclR5cGUoV0kuUmVzb3VyY2Uu
VHlwZS5PdGhlciwgdHJ1ZSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQorICAgIGdl
dCBzZWxlY3Rpb25FbmFibGVkKCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl9zZWxlY3Rp
b25FbmFibGVkOworICAgIH0KIAotICAgICAgICB0aGlzLl9jb250ZW50UGxhY2Vob2xkZXIgPSBu
ZXcgV0kuVGl0bGVWaWV3KHRpdGxlKTsKKyAgICBzZXQgc2VsZWN0aW9uRW5hYmxlZCh2YWx1ZSkK
KyAgICB7CisgICAgICAgIGlmICh0aGlzLl9zZWxlY3Rpb25FbmFibGVkID09PSB2YWx1ZSkKKyAg
ICAgICAgICAgIHJldHVybjsKIAotICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmFkZCgi
Y29sbGVjdGlvbiIpOworICAgICAgICB0aGlzLl9zZWxlY3Rpb25FbmFibGVkID0gdmFsdWU7Cisg
ICAgICAgIGlmICghdGhpcy5fc2VsZWN0aW9uRW5hYmxlZCkKKyAgICAgICAgICAgIHRoaXMuX3Nl
bGVjdEl0ZW0obnVsbCk7CiAgICAgfQogCi0gICAgIC8vIFB1YmxpYwotCi0gICAgaW5pdGlhbExh
eW91dCgpCisgICAgY29udGVudFZpZXdGb3JJdGVtKGl0ZW0pCiAgICAgewotICAgICAgICBsZXQg
aXRlbXMgPSB0aGlzLnJlcHJlc2VudGVkT2JqZWN0Lml0ZW1zOwotICAgICAgICBpZiAodGhpcy5f
Y29udGVudFZpZXdDb25zdHJ1Y3RvciAmJiBpdGVtcy5zaXplKSB7Ci0gICAgICAgICAgICBmb3Ig
KGxldCBpdGVtIG9mIGl0ZW1zKQotICAgICAgICAgICAgICAgIHRoaXMuX2FkZENvbnRlbnRWaWV3
Rm9ySXRlbShpdGVtKTsKLSAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICB0aGlzLmFkZFN1YnZp
ZXcodGhpcy5fY29udGVudFBsYWNlaG9sZGVyKTsKKyAgICAgICAgcmV0dXJuIHRoaXMuX2NvbnRl
bnRWaWV3TWFwLmdldChpdGVtKSB8fCBudWxsOwogICAgIH0KIAotICAgICAvLyBQcml2YXRlCisg
ICAgLy8gUHJvdGVjdGVkCiAKLSAgICBfYWRkQ29udGVudFZpZXdGb3JJdGVtKGl0ZW0pCisgICAg
YWRkQ29udGVudFZpZXdGb3JJdGVtKGl0ZW0pCiAgICAgewogICAgICAgICBpZiAoIXRoaXMuX2Nv
bnRlbnRWaWV3Q29uc3RydWN0b3IpCiAgICAgICAgICAgICByZXR1cm47CkBAIC0xMTgsMjUgKzc2
LDI3IEBAIFdJLkNvbGxlY3Rpb25Db250ZW50VmlldyA9IGNsYXNzIENvbGxlY3Rpb25Db250ZW50
VmlldyBleHRlbmRzIFdJLkNvbnRlbnRWaWV3CiAgICAgICAgICAgICB0aGlzLnJlbW92ZVN1YnZp
ZXcodGhpcy5fY29udGVudFBsYWNlaG9sZGVyKTsKIAogICAgICAgICBsZXQgY29udGVudFZpZXcg
PSBuZXcgdGhpcy5fY29udGVudFZpZXdDb25zdHJ1Y3RvcihpdGVtKTsKLQotICAgICAgICBjb250
ZW50Vmlldy5hZGRFdmVudExpc3RlbmVyKFdJLlJlc291cmNlQ29udGVudFZpZXcuRXZlbnQuQ29u
dGVudEVycm9yLCB0aGlzLl9oYW5kbGVDb250ZW50RXJyb3IsIHRoaXMpOworICAgICAgICBjb25z
b2xlLmFzc2VydChjb250ZW50VmlldyBpbnN0YW5jZW9mIFdJLkNvbnRlbnRWaWV3KTsKIAogICAg
ICAgICBsZXQgaGFuZGxlQ2xpY2sgPSAoZXZlbnQpID0+IHsKICAgICAgICAgICAgIGlmIChldmVu
dC5idXR0b24gIT09IDAgfHwgZXZlbnQuY3RybEtleSkKICAgICAgICAgICAgICAgICByZXR1cm47
CiAKLSAgICAgICAgICAgIFdJLnNob3dSZXByZXNlbnRlZE9iamVjdChpdGVtKTsKKyAgICAgICAg
ICAgIGlmICh0aGlzLl9zZWxlY3Rpb25FbmFibGVkKQorICAgICAgICAgICAgICAgIHRoaXMuX3Nl
bGVjdEl0ZW0oaXRlbSk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGhpcy5k
aXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV0kuQ29sbGVjdGlvbkNvbnRlbnRWaWV3LkV2ZW50Lkl0
ZW1DbGlja2VkLCB7aXRlbX0pOwogICAgICAgICB9OworCisgICAgICAgIHRoaXMuX2NvbnRlbnRW
aWV3TWFwLnNldChpdGVtLCBjb250ZW50Vmlldyk7CiAgICAgICAgIHRoaXMuX2hhbmRsZUNsaWNr
TWFwLnNldChpdGVtLCBoYW5kbGVDbGljayk7CiAgICAgICAgIGNvbnRlbnRWaWV3LmVsZW1lbnQu
YWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCBoYW5kbGVDbGljayk7CiAKLSAgICAgICAgY29udGVu
dFZpZXcuZWxlbWVudC50aXRsZSA9IFdJLmRpc3BsYXlOYW1lRm9yVVJMKGl0ZW0udXJsLCBpdGVt
LnVybENvbXBvbmVudHMpOwotCiAgICAgICAgIHRoaXMuYWRkU3Vidmlldyhjb250ZW50Vmlldyk7
Ci0gICAgICAgIHRoaXMuX2NvbnRlbnRWaWV3TWFwLnNldChpdGVtLCBjb250ZW50Vmlldyk7Cisg
ICAgICAgIHRoaXMuY29udGVudFZpZXdBZGRlZChjb250ZW50Vmlldyk7CiAgICAgfQogCi0gICAg
X3JlbW92ZUNvbnRlbnRWaWV3Rm9ySXRlbShpdGVtKQorICAgIHJlbW92ZUNvbnRlbnRWaWV3Rm9y
SXRlbShpdGVtKQogICAgIHsKICAgICAgICAgaWYgKCF0aGlzLl9jb250ZW50Vmlld0NvbnN0cnVj
dG9yKQogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMTQ4LDI3ICsxMDgsNjggQEAgV0kuQ29sbGVj
dGlvbkNvbnRlbnRWaWV3ID0gY2xhc3MgQ29sbGVjdGlvbkNvbnRlbnRWaWV3IGV4dGVuZHMgV0ku
Q29udGVudFZpZXcKIAogICAgICAgICB0aGlzLnJlbW92ZVN1YnZpZXcoY29udGVudFZpZXcpOwog
ICAgICAgICB0aGlzLl9jb250ZW50Vmlld01hcC5kZWxldGUoaXRlbSk7CisgICAgICAgIHRoaXMu
Y29udGVudFZpZXdSZW1vdmVkKGNvbnRlbnRWaWV3KTsKIAogICAgICAgICBjb250ZW50Vmlldy5y
ZW1vdmVFdmVudExpc3RlbmVyKG51bGwsIG51bGwsIHRoaXMpOwogCiAgICAgICAgIGxldCBoYW5k
bGVDbGljayA9IHRoaXMuX2hhbmRsZUNsaWNrTWFwLmdldChpdGVtKTsKICAgICAgICAgY29uc29s
ZS5hc3NlcnQoaGFuZGxlQ2xpY2spOworCiAgICAgICAgIGlmIChoYW5kbGVDbGljaykgewogICAg
ICAgICAgICAgY29udGVudFZpZXcuZWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJjbGljayIs
IGhhbmRsZUNsaWNrKTsKICAgICAgICAgICAgIHRoaXMuX2hhbmRsZUNsaWNrTWFwLmRlbGV0ZShp
dGVtKTsKICAgICAgICAgfQogCi0gICAgICAgIGlmICghdGhpcy5yZXByZXNlbnRlZE9iamVjdC5y
ZXNvdXJjZXMubGVuZ3RoKQorICAgICAgICBpZiAoIXRoaXMuc3Vidmlld3MubGVuZ3RoKQorICAg
ICAgICAgICAgdGhpcy5hZGRTdWJ2aWV3KHRoaXMuX2NvbnRlbnRQbGFjZWhvbGRlcik7CisgICAg
fQorCisgICAgY29udGVudFZpZXdBZGRlZChjb250ZW50VmlldykKKyAgICB7CisgICAgICAgIC8v
IEltcGxlbWVudGVkIGJ5IHN1YmNsYXNzZXMuCisgICAgfQorCisgICAgY29udGVudFZpZXdSZW1v
dmVkKGNvbnRlbnRWaWV3KQorICAgIHsKKyAgICAgICAgLy8gSW1wbGVtZW50ZWQgYnkgc3ViY2xh
c3Nlcy4KKyAgICB9CisKKyAgICBpbml0aWFsTGF5b3V0KCkKKyAgICB7CisgICAgICAgIGxldCBp
dGVtcyA9IHRoaXMucmVwcmVzZW50ZWRPYmplY3QuaXRlbXM7CisgICAgICAgIGlmICghaXRlbXMu
c2l6ZSB8fCAhdGhpcy5fY29udGVudFZpZXdDb25zdHJ1Y3RvcikgewogICAgICAgICAgICAgdGhp
cy5hZGRTdWJ2aWV3KHRoaXMuX2NvbnRlbnRQbGFjZWhvbGRlcik7CisgICAgICAgICAgICByZXR1
cm47CisgICAgICAgIH0KKworICAgICAgICBmb3IgKGxldCBpdGVtIG9mIGl0ZW1zKQorICAgICAg
ICAgICAgdGhpcy5hZGRDb250ZW50Vmlld0Zvckl0ZW0oaXRlbSk7CiAgICAgfQogCisgICAgYXR0
YWNoZWQoKQorICAgIHsKKyAgICAgICAgc3VwZXIuYXR0YWNoZWQoKTsKKworICAgICAgICB0aGlz
LnJlcHJlc2VudGVkT2JqZWN0LmFkZEV2ZW50TGlzdGVuZXIoV0kuQ29sbGVjdGlvbi5FdmVudC5J
dGVtQWRkZWQsIHRoaXMuX2hhbmRsZUl0ZW1BZGRlZCwgdGhpcyk7CisgICAgICAgIHRoaXMucmVw
cmVzZW50ZWRPYmplY3QuYWRkRXZlbnRMaXN0ZW5lcihXSS5Db2xsZWN0aW9uLkV2ZW50Lkl0ZW1S
ZW1vdmVkLCB0aGlzLl9oYW5kbGVJdGVtUmVtb3ZlZCwgdGhpcyk7CisgICAgfQorCisgICAgZGV0
YWNoZWQoKQorICAgIHsKKyAgICAgICAgdGhpcy5yZXByZXNlbnRlZE9iamVjdC5yZW1vdmVFdmVu
dExpc3RlbmVyKG51bGwsIG51bGwsIHRoaXMpOworCisgICAgICAgIHN1cGVyLmRldGFjaGVkKCk7
CisgICAgfQorCisgICAgIC8vIFByaXZhdGUKKwogICAgIF9oYW5kbGVJdGVtQWRkZWQoZXZlbnQp
CiAgICAgewogICAgICAgICBsZXQgaXRlbSA9IGV2ZW50LmRhdGEuaXRlbTsKICAgICAgICAgaWYg
KCFpdGVtKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIHRoaXMuX2FkZENvbnRlbnRW
aWV3Rm9ySXRlbShpdGVtKTsKKyAgICAgICAgdGhpcy5hZGRDb250ZW50Vmlld0Zvckl0ZW0oaXRl
bSk7CiAgICAgfQogCiAgICAgX2hhbmRsZUl0ZW1SZW1vdmVkKGV2ZW50KQpAQCAtMTc3LDcgKzE3
OCw3IEBAIFdJLkNvbGxlY3Rpb25Db250ZW50VmlldyA9IGNsYXNzIENvbGxlY3Rpb25Db250ZW50
VmlldyBleHRlbmRzIFdJLkNvbnRlbnRWaWV3CiAgICAgICAgIGlmICghaXRlbSkKICAgICAgICAg
ICAgIHJldHVybjsKIAotICAgICAgICB0aGlzLl9yZW1vdmVDb250ZW50Vmlld0Zvckl0ZW0oaXRl
bSk7CisgICAgICAgIHRoaXMucmVtb3ZlQ29udGVudFZpZXdGb3JJdGVtKGl0ZW0pOwogICAgIH0K
IAogICAgIF9oYW5kbGVDb250ZW50RXJyb3IoZXZlbnQpCkBAIC0xODUsNCArMTg2LDU1IEBAIFdJ
LkNvbGxlY3Rpb25Db250ZW50VmlldyA9IGNsYXNzIENvbGxlY3Rpb25Db250ZW50VmlldyBleHRl
bmRzIFdJLkNvbnRlbnRWaWV3CiAgICAgICAgIGlmIChldmVudCAmJiBldmVudC50YXJnZXQpCiAg
ICAgICAgICAgICB0aGlzLl9yZW1vdmVDb250ZW50Vmlld0Zvckl0ZW0oZXZlbnQudGFyZ2V0LnJl
cHJlc2VudGVkT2JqZWN0KTsKICAgICB9CisKKyAgICBfZGVmYXVsdFRpdGxlKCkKKyAgICB7Cisg
ICAgICAgIGxldCB0eXBlVmVyaWZpZXIgPSB0aGlzLnJlcHJlc2VudGVkT2JqZWN0LnR5cGVWZXJp
ZmllcjsKKworICAgICAgICBzd2l0Y2ggKHR5cGVWZXJpZmllcikgeworICAgICAgICBjYXNlIFdJ
LkNvbGxlY3Rpb24uVHlwZVZlcmlmaWVyLkZyYW1lOgorICAgICAgICAgICAgcmV0dXJuIFdJLlVJ
U3RyaW5nKCJGcmFtZXMiKTsKKyAgICAgICAgY2FzZSBXSS5Db2xsZWN0aW9uLlR5cGVWZXJpZmll
ci5SZXNvdXJjZToKKyAgICAgICAgICAgIHJldHVybiBXSS5VSVN0cmluZygiUmVzb3VyY2VzIik7
CisgICAgICAgIGNhc2UgV0kuQ29sbGVjdGlvbi5UeXBlVmVyaWZpZXIuU2NyaXB0OgorICAgICAg
ICAgICAgcmV0dXJuIFdJLlVJU3RyaW5nKCJTY3JpcHRzIik7CisgICAgICAgIGNhc2UgV0kuQ29s
bGVjdGlvbi5UeXBlVmVyaWZpZXIuQ1NTU3R5bGVTaGVldDoKKyAgICAgICAgICAgIHJldHVybiBX
SS5VSVN0cmluZygiU3R5bGVzaGVldHMiKTsKKyAgICAgICAgY2FzZSBXSS5Db2xsZWN0aW9uLlR5
cGVWZXJpZmllci5DYW52YXM6CisgICAgICAgICAgICByZXR1cm4gV0kuVUlTdHJpbmcoIkNhbnZh
c2VzIik7CisgICAgICAgIGNhc2UgV0kuQ29sbGVjdGlvbi5UeXBlVmVyaWZpZXIuU2hhZGVyUHJv
Z3JhbToKKyAgICAgICAgICAgIHJldHVybiBXSS5VSVN0cmluZygiU2hhZGVyIFByb2dyYW1zIik7
CisgICAgICAgIH0KKworICAgICAgICBjb25zb2xlLmVycm9yKCJVbmtub3duIHR5cGUgdmVyaWZp
ZXIgZm9yIGNvbGxlY3Rpb24uIiwgdHlwZVZlcmlmaWVyKTsKKyAgICAgICAgcmV0dXJuIFdJLlVJ
U3RyaW5nKCJDb2xsZWN0aW9uIik7CisgICAgfQorCisgICAgX3NlbGVjdEl0ZW0oaXRlbSkKKyAg
ICB7CisgICAgICAgIGlmICh0aGlzLl9zZWxlY3RlZEl0ZW0gPT09IGl0ZW0pCisgICAgICAgICAg
ICByZXR1cm47CisKKyAgICAgICAgaWYgKHRoaXMuX3NlbGVjdGVkSXRlbSkgeworICAgICAgICAg
ICAgbGV0IGNvbnRlbnRWaWV3ID0gdGhpcy5fY29udGVudFZpZXdNYXAuZ2V0KHRoaXMuX3NlbGVj
dGVkSXRlbSk7CisgICAgICAgICAgICBjb25zb2xlLmFzc2VydChjb250ZW50Vmlldyk7CisgICAg
ICAgICAgICBjb250ZW50Vmlldy5jbGFzc0xpc3QucmVtb3ZlKCJzZWxlY3RlZCIpOworICAgICAg
ICB9CisKKyAgICAgICAgbGV0IHByZXZpb3VzU2VsZWN0aW9uID0gdGhpcy5fc2VsZWN0ZWRJdGVt
OworICAgICAgICB0aGlzLl9zZWxlY3RlZEl0ZW0gPSBpdGVtOworCisgICAgICAgIGlmICh0aGlz
Ll9zZWxlY3RlZEl0ZW0pIHsKKyAgICAgICAgICAgIGxldCBzZWxlY3RlZENvbnRlbnRWaWV3ID0g
dGhpcy5fY29udGVudFZpZXdNYXAuZ2V0KHRoaXMuX3NlbGVjdGVkSXRlbSk7CisgICAgICAgICAg
ICBjb25zb2xlLmFzc2VydChzZWxlY3RlZENvbnRlbnRWaWV3KTsKKyAgICAgICAgICAgIHNlbGVj
dGVkQ29udGVudFZpZXcuY2xhc3NMaXN0LmFkZCgic2VsZWN0ZWQiKTsKKyAgICAgICAgfQorCisg
ICAgICAgIHRoaXMuZGlzcGF0Y2hUb0V2ZW50TGlzdGVuZXJzKFdJLkNvbGxlY3Rpb25Db250ZW50
Vmlldy5FdmVudC5JdGVtQ2xpY2tlZCwge3ByZXZpb3VzU2VsZWN0aW9ufSk7CisgICAgfQorfTsK
KworV0kuQ29sbGVjdGlvbkNvbnRlbnRWaWV3LkV2ZW50ID0geworICAgIEl0ZW1DbGlja2VkOiAi
Y29sbGVjdGlvbi1jb250ZW50LXZpZXctaXRlbS1jbGlja2VkIiwKKyAgICBTZWxlY3RlZEl0ZW1D
aGFuZ2VkOiAiY29sbGVjdGlvbi1jb250ZW50LXZpZXctc2VsZWN0ZWQtaXRlbS1jaGFuZ2VkIiwK
IH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3
cy9Db250ZW50Vmlldy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Zp
ZXdzL0NvbnRlbnRWaWV3LmpzCmluZGV4IDUwMjczODRiZmMwYTc0MTgyN2ZmMzA1MzEwZTYxZWVm
MTk4NWY3ODMuLjIxZTc2OGFhNDcwM2EyZjcxZjZmYjIyYWYwNWM1NDczYTk3MjQwYTIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvbnRlbnRW
aWV3LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0Nv
bnRlbnRWaWV3LmpzCkBAIC0xNjEsNiArMTYxLDkgQEAgV0kuQ29udGVudFZpZXcgPSBjbGFzcyBD
b250ZW50VmlldyBleHRlbmRzIFdJLlZpZXcKICAgICAgICAgaWYgKHJlcHJlc2VudGVkT2JqZWN0
IGluc3RhbmNlb2YgV0kuUmVjb3JkaW5nKQogICAgICAgICAgICAgcmV0dXJuIG5ldyBXSS5SZWNv
cmRpbmdDb250ZW50VmlldyhyZXByZXNlbnRlZE9iamVjdCwgZXh0cmFBcmd1bWVudHMpOwogCisg
ICAgICAgIGlmIChyZXByZXNlbnRlZE9iamVjdCBpbnN0YW5jZW9mIFdJLlJlc291cmNlQ29sbGVj
dGlvbikKKyAgICAgICAgICAgIHJldHVybiBuZXcgV0kuUmVzb3VyY2VDb2xsZWN0aW9uQ29udGVu
dFZpZXcocmVwcmVzZW50ZWRPYmplY3QsIGV4dHJhQXJndW1lbnRzKTsKKwogICAgICAgICBpZiAo
cmVwcmVzZW50ZWRPYmplY3QgaW5zdGFuY2VvZiBXSS5Db2xsZWN0aW9uKQogICAgICAgICAgICAg
cmV0dXJuIG5ldyBXSS5Db2xsZWN0aW9uQ29udGVudFZpZXcocmVwcmVzZW50ZWRPYmplY3QsIGV4
dHJhQXJndW1lbnRzKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvVmlld3MvUmVzb3VyY2VDb2xsZWN0aW9uQ29udGVudFZpZXcuanMgYi9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9SZXNvdXJjZUNvbGxlY3Rpb25Db250
ZW50Vmlldy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hNWE2OTAzMmM3NmExYjU3NTI3YTRjN2E4NzA1ZjllZTU3
Mzk1N2M0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvVmlld3MvUmVzb3VyY2VDb2xsZWN0aW9uQ29udGVudFZpZXcuanMKQEAgLTAsMCArMSw3
MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisg
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgorICovCisKK1dJLlJlc291cmNlQ29sbGVjdGlvbkNvbnRlbnRWaWV3ID0gY2xh
c3MgUmVzb3VyY2VDb2xsZWN0aW9uQ29udGVudFZpZXcgZXh0ZW5kcyBXSS5Db2xsZWN0aW9uQ29u
dGVudFZpZXcKK3sKKyAgICBjb25zdHJ1Y3Rvcihjb2xsZWN0aW9uKQorICAgIHsKKyAgICAgICAg
Y29uc29sZS5hc3NlcnQoY29sbGVjdGlvbiBpbnN0YW5jZW9mIFdJLlJlc291cmNlQ29sbGVjdGlv
bik7CisKKyAgICAgICAgbGV0IGNvbnRlbnRWaWV3Q29uc3RydWN0b3IgPSBudWxsOworICAgICAg
ICBpZiAoY29sbGVjdGlvbi5yZXNvdXJjZVR5cGUgPT09IFdJLlJlc291cmNlLlR5cGUuSW1hZ2Up
CisgICAgICAgICAgICBjb250ZW50Vmlld0NvbnN0cnVjdG9yID0gV0kuSW1hZ2VSZXNvdXJjZUNv
bnRlbnRWaWV3OworCisgICAgICAgIGxldCB0aXRsZSA9IFdJLlJlc291cmNlLmRpc3BsYXlOYW1l
Rm9yVHlwZShjb2xsZWN0aW9uLnJlc291cmNlVHlwZSwgdHJ1ZSk7CisKKyAgICAgICAgc3VwZXIo
Y29sbGVjdGlvbiwgY29udGVudFZpZXdDb25zdHJ1Y3RvciwgdGl0bGUpOworCisgICAgICAgIHRo
aXMuYWRkRXZlbnRMaXN0ZW5lcihXSS5Db2xsZWN0aW9uQ29udGVudFZpZXcuRXZlbnQuSXRlbUNs
aWNrZWQsIHRoaXMuX2l0ZW1DbGlja2VkLCB0aGlzKTsKKyAgICB9CisKKyAgICAvLyBQcm90ZWN0
ZWQKKworICAgIGNvbnRlbnRWaWV3QWRkZWQoY29udGVudFZpZXcpCisgICAgeworICAgICAgICBj
b25zb2xlLmFzc2VydChjb250ZW50VmlldyBpbnN0YW5jZW9mIFdJLlJlc291cmNlQ29udGVudFZp
ZXcpOworCisgICAgICAgIGxldCByZXNvdXJjZSA9IGNvbnRlbnRWaWV3LnJlcHJlc2VudGVkT2Jq
ZWN0OworICAgICAgICBjb25zb2xlLmFzc2VydChyZXNvdXJjZSBpbnN0YW5jZW9mIFdJLlJlc291
cmNlKTsKKworICAgICAgICBjb250ZW50Vmlldy5hZGRFdmVudExpc3RlbmVyKFdJLlJlc291cmNl
Q29udGVudFZpZXcuRXZlbnQuQ29udGVudEVycm9yLCB0aGlzLl9oYW5kbGVDb250ZW50RXJyb3Is
IHRoaXMpOworICAgICAgICBjb250ZW50Vmlldy5lbGVtZW50LnRpdGxlID0gV0kuZGlzcGxheU5h
bWVGb3JVUkwocmVzb3VyY2UudXJsLCByZXNvdXJjZS51cmxDb21wb25lbnRzKTsKKyAgICB9CisK
KyAgICAvLyBQcml2YXRlCisKKyAgICBfaGFuZGxlQ29udGVudEVycm9yKGV2ZW50KQorICAgIHsK
KyAgICAgICAgaWYgKGV2ZW50ICYmIGV2ZW50LnRhcmdldCkKKyAgICAgICAgICAgIHRoaXMucmVt
b3ZlQ29udGVudFZpZXdGb3JJdGVtKGV2ZW50LnRhcmdldC5yZXByZXNlbnRlZE9iamVjdCk7Cisg
ICAgfQorCisgICAgX2l0ZW1DbGlja2VkKGV2ZW50KQorICAgIHsKKyAgICAgICAgbGV0IHJlcHJl
c2VudGVkT2JqZWN0ID0gZXZlbnQuZGF0YS5pdGVtOworICAgICAgICBjb25zb2xlLmFzc2VydChy
ZXByZXNlbnRlZE9iamVjdCk7CisKKyAgICAgICAgV0kuc2hvd1JlcHJlc2VudGVkT2JqZWN0KHJl
cHJlc2VudGVkT2JqZWN0KTsKKyAgICB9Cit9Owo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>321864</attachid>
            <date>2017-09-26 13:59:44 -0700</date>
            <delta_ts>2017-09-27 09:32:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-177419-20170926135943.patch</filename>
            <type>text/plain</type>
            <size>21296</size>
            <attacher name="Matt Baker">mattbaker</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIyNTAyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwppbmRleCBm
N2U1Zjc4ZmVlNDZiYzRjZWFjNWFmMGI0ZmE0ZjJjYzI5M2M5ZWIyLi45NjA2MWI0NGU1OTdlMzBh
ZTNiMGMzYTAxMjhkYjI2N2FlYzQ2ZGNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw2MiBAQAorMjAxNy0wOS0yNiAgTWF0dCBCYWtlciAgPG1hdHRiYWtlckBhcHBsZS5jb20+
CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogQ3JlYXRlIFJlc291cmNlQ29sbGVjdGlvbkNvbnRl
bnRWaWV3IGFuZCBtYWtlIENvbGxlY3Rpb25Db250ZW50VmlldyBlYXNpZXIgdG8gZXh0ZW5kCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzc0MTkKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDb2xsZWN0aW9u
Q29udGVudFZpZXcgc2hvdWxkIGJlIGdlbmVyaWMsIHdvcmsgd2l0aCBhbnkgcmVwcmVzZW50ZWQg
b2JqZWN0CisgICAgICAgIENvbGxlY3Rpb24sIGFuZCBub3QgcGVyZm9ybSBhbnkgdHlwZSBjaGVj
a2luZy4gSXQgc2hvdWxkIGp1c3QgbWFwIGl0ZW1zCisgICAgICAgIHRvIENvbnRlbnRWaWV3cyB1
c2luZyB0aGUgcHJvdmlkZWQgQ29udGVudFZpZXcgY29uc3RydWN0b3IuCisKKyAgICAgICAgVGhp
cyBwYXRjaCBhbHNvIGFkZHMgc29tZSBiYXNpYyBiZWhhdmlvcnMgZm9yIGludGVyYWN0aW5nIHdp
dGggQ29udGVudFZpZXdzLgorICAgICAgICBJZiBzZWxlY3Rpb24gaXMgZW5hYmxlZCwgY2xpY2tp
bmcgYW4gaXRlbSB3aWxsIGNhdXNlIGl0IHRvIGJlY29tZSBzZWxlY3RlZCwKKyAgICAgICAgYW5k
IGEgU2VsZWN0ZWRJdGVtQ2hhbmdlZCBldmVudCBpcyBkaXNwYXRjaGVkLiBJZiBzZWxlY3Rpb24g
aXMgZGlzYWJsZWQKKyAgICAgICAgKHRoZSBkZWZhdWx0KSwgYW4gSXRlbUNsaWNrZWQgZXZlbnQg
aXMgZGlzcGF0Y2hlZC4KKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvTWFpbi5odG1sOgorICAg
ICAgICBOZXcgZmlsZSwgbW92ZSBDb2xsZWN0aW9uQ29udGVudFZpZXcgYWJvdmUgc3ViY2xhc3Nl
cy4KKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvTW9kZWxzL1Jlc291cmNlQ29sbGVjdGlvbi5q
czoKKyAgICAgICAgKFdJLlJlc291cmNlQ29sbGVjdGlvbi5wcm90b3R5cGUuZ2V0IHJlc291cmNl
VHlwZSk6CisgICAgICAgIE1ha2UgcmVzb3VyY2UgdHlwZSBwdWJsaWNseSBhdmFpbGFibGUuCisK
KyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL0NvbGxlY3Rpb25Db250ZW50Vmlldy5qczoK
KyAgICAgICAgTW92ZSB0eXBlIGNoZWNraW5nIG9mIHRoZSBjb2xsZWN0aW9uIG91dCBvZiB0aGUg
YmFzZSBjbGFzcyBhbmQgYXNzZXJ0CisgICAgICAgIHRoYXQgQ29udGVudFZpZXdzIGFyZSBjcmVh
dGVkIHdoZW4gaW52b2tpbmcgYGNvbnRlbnRWaWV3Q29uc3RydWN0b3JgLgorCisgICAgICAgIChX
SS5Db2xsZWN0aW9uQ29udGVudFZpZXcpOgorICAgICAgICAoV0kuQ29sbGVjdGlvbkNvbnRlbnRW
aWV3LnByb3RvdHlwZS5nZXQgc2VsZWN0ZWRJdGVtKToKKyAgICAgICAgKFdJLkNvbGxlY3Rpb25D
b250ZW50Vmlldy5wcm90b3R5cGUuZ2V0IHNlbGVjdGlvbkVuYWJsZWQpOgorICAgICAgICAoV0ku
Q29sbGVjdGlvbkNvbnRlbnRWaWV3LnByb3RvdHlwZS5zZXQgc2VsZWN0aW9uRW5hYmxlZCk6Cisg
ICAgICAgIChXSS5Db2xsZWN0aW9uQ29udGVudFZpZXcucHJvdG90eXBlLmNvbnRlbnRWaWV3Rm9y
SXRlbSk6CisgICAgICAgIChXSS5Db2xsZWN0aW9uQ29udGVudFZpZXcucHJvdG90eXBlLmFkZENv
bnRlbnRWaWV3Rm9ySXRlbSk6CisgICAgICAgIChXSS5Db2xsZWN0aW9uQ29udGVudFZpZXcucHJv
dG90eXBlLnJlbW92ZUNvbnRlbnRWaWV3Rm9ySXRlbSk6CisgICAgICAgIChXSS5Db2xsZWN0aW9u
Q29udGVudFZpZXcucHJvdG90eXBlLmNvbnRlbnRWaWV3QWRkZWQpOgorICAgICAgICAoV0kuQ29s
bGVjdGlvbkNvbnRlbnRWaWV3LnByb3RvdHlwZS5jb250ZW50Vmlld1JlbW92ZWQpOgorICAgICAg
ICAoV0kuQ29sbGVjdGlvbkNvbnRlbnRWaWV3LnByb3RvdHlwZS5pbml0aWFsTGF5b3V0KToKKyAg
ICAgICAgKFdJLkNvbGxlY3Rpb25Db250ZW50Vmlldy5wcm90b3R5cGUuYXR0YWNoZWQpOgorICAg
ICAgICAoV0kuQ29sbGVjdGlvbkNvbnRlbnRWaWV3LnByb3RvdHlwZS5kZXRhY2hlZCk6CisgICAg
ICAgIChXSS5Db2xsZWN0aW9uQ29udGVudFZpZXcucHJvdG90eXBlLl9oYW5kbGVJdGVtQWRkZWQp
OgorICAgICAgICAoV0kuQ29sbGVjdGlvbkNvbnRlbnRWaWV3LnByb3RvdHlwZS5faGFuZGxlSXRl
bVJlbW92ZWQpOgorICAgICAgICAoV0kuQ29sbGVjdGlvbkNvbnRlbnRWaWV3LnByb3RvdHlwZS5f
ZGVmYXVsdFRpdGxlKToKKyAgICAgICAgKFdJLkNvbGxlY3Rpb25Db250ZW50Vmlldy5wcm90b3R5
cGUuX3NlbGVjdEl0ZW0pOgorICAgICAgICAoV0kuQ29sbGVjdGlvbkNvbnRlbnRWaWV3LnByb3Rv
dHlwZS5fYWRkQ29udGVudFZpZXdGb3JJdGVtKTogRGVsZXRlZC4KKyAgICAgICAgKFdJLkNvbGxl
Y3Rpb25Db250ZW50Vmlldy5wcm90b3R5cGUuX3JlbW92ZUNvbnRlbnRWaWV3Rm9ySXRlbSk6IERl
bGV0ZWQuCisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL0NvbnRlbnRWaWV3LmpzOgor
ICAgICAgICAoV0kuQ29udGVudFZpZXcuY3JlYXRlRnJvbVJlcHJlc2VudGVkT2JqZWN0KToKKyAg
ICAgICAgQ3JlYXRlIGEgUmVzb3VyY2VDb2xsZWN0aW9uQ29udGVudFZpZXcuIEluIHRoZSBmdXR1
cmUsIGFkZGl0aW9uYWwKKyAgICAgICAgQ29sbGVjdGlvbiB0eXBlcyBjYW4gYmUgbWFwcGVkIHRv
IHRoZWlyIGFzc29jaWF0ZWQgQ29sbGVjdGlvbkNvbnRlbnRWaWV3LgorCisgICAgICAgICogVXNl
ckludGVyZmFjZS9WaWV3cy9SZXNvdXJjZUNvbGxlY3Rpb25Db250ZW50Vmlldy5qczogQWRkZWQu
CisgICAgICAgIE5ldyBjbGFzcyBmb3IgcmVzb3VyY2Utc3BlY2lmaWMgbG9naWMgcHJldmlvdXNs
eSBpbiBDb2xsZWN0aW9uQ29udGVudFZpZXcuCisgICAgICAgIChXSS5SZXNvdXJjZUNvbGxlY3Rp
b25Db250ZW50Vmlldyk6CisgICAgICAgIChXSS5SZXNvdXJjZUNvbGxlY3Rpb25Db250ZW50Vmll
dy5wcm90b3R5cGUuY29udGVudFZpZXdBZGRlZCk6CisgICAgICAgIChXSS5SZXNvdXJjZUNvbGxl
Y3Rpb25Db250ZW50Vmlldy5wcm90b3R5cGUuX2hhbmRsZUNvbnRlbnRFcnJvcik6CisgICAgICAg
IChXSS5SZXNvdXJjZUNvbGxlY3Rpb25Db250ZW50Vmlldy5wcm90b3R5cGUuX2l0ZW1DbGlja2Vk
KToKKyAgICAgICAgUmVtb3ZlIENvbnRlbnRWaWV3IHdpdGhvdXQgcmVtb3ZpbmcgdGhlIHJlc291
cmNlIGZyb20gaXRzIGNvbGxlY3Rpb24uCisKIDIwMTctMDktMjUgIERldmluIFJvdXNzbyAgPHdl
YmtpdEBkZXZpbnJvdXNzby5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogbW92ZSBDb25z
b2xlLmFkZEluc3BlY3RlZE5vZGUgdG8gRE9NLnNldEluc3BlY3RlZE5vZGUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Mb2NhbGl6YXRpb25zL2VuLmxwcm9qL2xvY2FsaXplZFN0
cmluZ3MuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvTG9jYWxpemF0aW9ucy9lbi5scHJvai9s
b2NhbGl6ZWRTdHJpbmdzLmpzCmluZGV4IDdlODFkOTE3MGRjZTY0NmE4MTU2YWU3NWI0MzM0NzBl
OWE0ZTM5YzguLmI0OWVhMmZiNzZiN2I5ZjNkZTgyMzhlOGU2ZjViOTM4MTdhZDVmYjUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Mb2NhbGl6YXRpb25zL2VuLmxwcm9qL2xvY2Fs
aXplZFN0cmluZ3MuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0xvY2FsaXphdGlvbnMv
ZW4ubHByb2ovbG9jYWxpemVkU3RyaW5ncy5qcwpAQCAtMjA0LDYgKzIwNCw3IEBAIGxvY2FsaXpl
ZFN0cmluZ3NbIkNvZGUiXSA9ICJDb2RlIjsKIGxvY2FsaXplZFN0cmluZ3NbIkNvbGxhcHNlIEFs
bCJdID0gIkNvbGxhcHNlIEFsbCI7CiBsb2NhbGl6ZWRTdHJpbmdzWyJDb2xsYXBzZSBjb2x1bW5z
Il0gPSAiQ29sbGFwc2UgY29sdW1ucyI7CiBsb2NhbGl6ZWRTdHJpbmdzWyJDb2xsZWN0IGdhcmJh
Z2UiXSA9ICJDb2xsZWN0IGdhcmJhZ2UiOworbG9jYWxpemVkU3RyaW5nc1siQ29sbGVjdGlvbiJd
ID0gIkNvbGxlY3Rpb24iOwogbG9jYWxpemVkU3RyaW5nc1siQ29sb3IiXSA9ICJDb2xvciI7CiBs
b2NhbGl6ZWRTdHJpbmdzWyJDb21tZW50Il0gPSAiQ29tbWVudCI7CiBsb2NhbGl6ZWRTdHJpbmdz
WyJDb21tZW50IEFsbCBQcm9wZXJ0aWVzIl0gPSAiQ29tbWVudCBBbGwgUHJvcGVydGllcyI7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9NYWluLmh0bWwg
Yi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9NYWluLmh0bWwKaW5kZXggYWNi
MDJmNmVjZGJkNDYwMWY1OGRlYzAxYzU3NjcyYzkyODNiYWNjMy4uYzkwNjEwYjdhMjNiMDQ4MDk0
OGM2NTg5NmM2MTllN2RmZmJlZWM1YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvTWFpbi5odG1sCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2Vy
SW50ZXJmYWNlL01haW4uaHRtbApAQCAtNTIyLDYgKzUyMiw4IEBACiAgICAgPHNjcmlwdCBzcmM9
IlZpZXdzL1NldHRpbmdzR3JvdXAuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJWaWV3
cy9TZXR0aW5nc1ZpZXcuanMiPjwvc2NyaXB0PgogCisgICAgPHNjcmlwdCBzcmM9IlZpZXdzL0Nv
bGxlY3Rpb25Db250ZW50Vmlldy5qcyI+PC9zY3JpcHQ+CisKICAgICA8c2NyaXB0IHNyYz0iVmll
d3MvQWN0aXZhdGVCdXR0b25OYXZpZ2F0aW9uSXRlbS5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlw
dCBzcmM9IlZpZXdzL0FjdGl2YXRlQnV0dG9uVG9vbGJhckl0ZW0uanMiPjwvc2NyaXB0PgogICAg
IDxzY3JpcHQgc3JjPSJWaWV3cy9BcHBsaWNhdGlvbkNhY2hlRGV0YWlsc1NpZGViYXJQYW5lbC5q
cyI+PC9zY3JpcHQ+CkBAIC01NTAsNyArNTUyLDYgQEAKICAgICA8c2NyaXB0IHNyYz0iVmlld3Mv
Q29kZU1pcnJvckZvcm1hdHRlcnMuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJWaWV3
cy9Db2RlTWlycm9yUmVnZXhNb2RlLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iVmll
d3MvQ29kZU1pcnJvclRleHRNYXJrZXJzLmpzIj48L3NjcmlwdD4KLSAgICA8c2NyaXB0IHNyYz0i
Vmlld3MvQ29sbGVjdGlvbkNvbnRlbnRWaWV3LmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNy
Yz0iVmlld3MvQ29sb3JQaWNrZXIuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJWaWV3
cy9Db2xvcldoZWVsLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iVmlld3MvQ29tcGxl
dGlvblN1Z2dlc3Rpb25zVmlldy5qcyI+PC9zY3JpcHQ+CkBAIC02ODIsNiArNjgzLDcgQEAKICAg
ICA8c2NyaXB0IHNyYz0iVmlld3MvUmVuZGVyaW5nRnJhbWVUaW1lbGluZVZpZXcuanMiPjwvc2Ny
aXB0PgogICAgIDxzY3JpcHQgc3JjPSJWaWV3cy9SZXNpemVyLmpzIj48L3NjcmlwdD4KICAgICA8
c2NyaXB0IHNyYz0iVmlld3MvUmVzb3VyY2VDbHVzdGVyQ29udGVudFZpZXcuanMiPjwvc2NyaXB0
PgorICAgIDxzY3JpcHQgc3JjPSJWaWV3cy9SZXNvdXJjZUNvbGxlY3Rpb25Db250ZW50Vmlldy5q
cyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IlZpZXdzL1Jlc291cmNlRGV0YWlsc1NpZGVi
YXJQYW5lbC5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IlZpZXdzL1Jlc291cmNlU2lk
ZWJhclBhbmVsLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iVmlld3MvUmVzb3VyY2VU
aW1lbGluZURhdGFHcmlkTm9kZS5qcyI+PC9zY3JpcHQ+CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvUmVzb3VyY2VDb2xsZWN0aW9uLmpzIGIv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL1Jlc291cmNlQ29sbGVj
dGlvbi5qcwppbmRleCAyMzFhOWEwOGU4MTliMzhjMzAwMmU1MWU2NjRmZmNkZGFjM2Q0MGEwLi5j
ZDc5NmI4ZDI0Y2MwNjc4ZTNiZDRiYmFjOWM1NzlmMmY0ZDcwOWJmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvUmVzb3VyY2VDb2xsZWN0aW9u
LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9SZXNv
dXJjZUNvbGxlY3Rpb24uanMKQEAgLTY0LDYgKzY0LDggQEAgV0kuUmVzb3VyY2VDb2xsZWN0aW9u
ID0gY2xhc3MgUmVzb3VyY2VDb2xsZWN0aW9uIGV4dGVuZHMgV0kuQ29sbGVjdGlvbgogCiAgICAg
Ly8gUHVibGljCiAKKyAgICBnZXQgcmVzb3VyY2VUeXBlKCkgeyByZXR1cm4gdGhpcy5fcmVzb3Vy
Y2VUeXBlOyB9CisKICAgICByZXNvdXJjZUZvclVSTCh1cmwpCiAgICAgewogICAgICAgICByZXR1
cm4gdGhpcy5fcmVzb3VyY2VVUkxNYXAuZ2V0KHVybCkgfHwgbnVsbDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvbGxlY3Rpb25Db250ZW50
Vmlldy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvbGxl
Y3Rpb25Db250ZW50Vmlldy5qcwppbmRleCAwMzcyZDEzNzBmNmJiZWM3YzgyMWU2OWQyOTAwNjNh
NDkzNmUyM2VhLi5iOGFmMGUzYjhjNmIzZjc4YjRlMGI4NjVlYTBkYzQxNmJhMGYzOTBhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Db2xsZWN0
aW9uQ29udGVudFZpZXcuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvVmlld3MvQ29sbGVjdGlvbkNvbnRlbnRWaWV3LmpzCkBAIC0yNSwxMTggKzI1LDgzIEBACiAK
IFdJLkNvbGxlY3Rpb25Db250ZW50VmlldyA9IGNsYXNzIENvbGxlY3Rpb25Db250ZW50VmlldyBl
eHRlbmRzIFdJLkNvbnRlbnRWaWV3CiB7Ci0gICAgY29uc3RydWN0b3IoY29sbGVjdGlvbikKKyAg
ICBjb25zdHJ1Y3Rvcihjb2xsZWN0aW9uLCBjb250ZW50Vmlld0NvbnN0cnVjdG9yLCBjb250ZW50
UGxhY2Vob2xlclRleHQpCiAgICAgewogICAgICAgICBjb25zb2xlLmFzc2VydChjb2xsZWN0aW9u
IGluc3RhbmNlb2YgV0kuQ29sbGVjdGlvbik7CiAKICAgICAgICAgc3VwZXIoY29sbGVjdGlvbik7
CiAKLSAgICAgICAgdGhpcy5yZXByZXNlbnRlZE9iamVjdC5hZGRFdmVudExpc3RlbmVyKFdJLkNv
bGxlY3Rpb24uRXZlbnQuSXRlbUFkZGVkLCB0aGlzLl9oYW5kbGVJdGVtQWRkZWQsIHRoaXMpOwot
ICAgICAgICB0aGlzLnJlcHJlc2VudGVkT2JqZWN0LmFkZEV2ZW50TGlzdGVuZXIoV0kuQ29sbGVj
dGlvbi5FdmVudC5JdGVtUmVtb3ZlZCwgdGhpcy5faGFuZGxlSXRlbVJlbW92ZWQsIHRoaXMpOwor
ICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmFkZCgiY29sbGVjdGlvbiIpOwogCi0gICAg
ICAgIHRoaXMuX2NvbnRlbnRWaWV3TWFwID0gbmV3IFdlYWtNYXA7CisgICAgICAgIHRoaXMuX2Nv
bnRlbnRQbGFjZWhvbGRlciA9IG5ldyBXSS5UaXRsZVZpZXcoY29udGVudFBsYWNlaG9sZXJUZXh0
IHx8IHRoaXMuX2RlZmF1bHRUaXRsZSgpKTsKKyAgICAgICAgdGhpcy5fY29udGVudFZpZXdDb25z
dHJ1Y3RvciA9IGNvbnRlbnRWaWV3Q29uc3RydWN0b3I7CisgICAgICAgIHRoaXMuX2NvbnRlbnRW
aWV3TWFwID0gbmV3IE1hcDsKICAgICAgICAgdGhpcy5faGFuZGxlQ2xpY2tNYXAgPSBuZXcgV2Vh
a01hcDsKKyAgICAgICAgdGhpcy5fc2VsZWN0ZWRJdGVtID0gbnVsbDsKKyAgICAgICAgdGhpcy5f
c2VsZWN0aW9uRW5hYmxlZCA9IGZhbHNlOworICAgIH0KIAotICAgICAgICB0aGlzLl9jb250ZW50
Vmlld0NvbnN0cnVjdG9yID0gbnVsbDsKLSAgICAgICAgbGV0IHRpdGxlID0gIiI7Ci0gICAgICAg
IHN3aXRjaCAodGhpcy5yZXByZXNlbnRlZE9iamVjdC50eXBlVmVyaWZpZXIpIHsKLSAgICAgICAg
Y2FzZSBXSS5Db2xsZWN0aW9uLlR5cGVWZXJpZmllci5GcmFtZToKLSAgICAgICAgICAgIHRpdGxl
ID0gV0kuVUlTdHJpbmcoIkZyYW1lcyIpOwotICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAg
Y2FzZSBXSS5Db2xsZWN0aW9uLlR5cGVWZXJpZmllci5TY3JpcHQ6Ci0gICAgICAgICAgICB0aXRs
ZSA9IFdJLlVJU3RyaW5nKCJFeHRyYSBTY3JpcHRzIik7Ci0gICAgICAgICAgICBicmVhazsKLQot
ICAgICAgICBjYXNlIFdJLkNvbGxlY3Rpb24uVHlwZVZlcmlmaWVyLlJlc291cmNlOgotICAgICAg
ICAgICAgdGl0bGUgPSBXSS5VSVN0cmluZygiUmVzb3VyY2UiKTsKLSAgICAgICAgICAgIGJyZWFr
OwotCi0gICAgICAgIGNhc2UgV0kuUmVzb3VyY2VDb2xsZWN0aW9uLlR5cGVWZXJpZmllci5Eb2N1
bWVudDoKLSAgICAgICAgICAgIHRpdGxlID0gV0kuUmVzb3VyY2UuZGlzcGxheU5hbWVGb3JUeXBl
KFdJLlJlc291cmNlLlR5cGUuRG9jdW1lbnQsIHRydWUpOwotICAgICAgICAgICAgYnJlYWs7Ci0K
LSAgICAgICAgY2FzZSBXSS5SZXNvdXJjZUNvbGxlY3Rpb24uVHlwZVZlcmlmaWVyLlN0eWxlc2hl
ZXQ6Ci0gICAgICAgICAgICB0aXRsZSA9IFdJLlJlc291cmNlLmRpc3BsYXlOYW1lRm9yVHlwZShX
SS5SZXNvdXJjZS5UeXBlLlN0eWxlc2hlZXQsIHRydWUpOwotICAgICAgICAgICAgYnJlYWs7Ci0K
LSAgICAgICAgY2FzZSBXSS5SZXNvdXJjZUNvbGxlY3Rpb24uVHlwZVZlcmlmaWVyLkltYWdlOgot
ICAgICAgICAgICAgdGhpcy5fY29udGVudFZpZXdDb25zdHJ1Y3RvciA9IFdJLkltYWdlUmVzb3Vy
Y2VDb250ZW50VmlldzsKLSAgICAgICAgICAgIHRpdGxlID0gV0kuUmVzb3VyY2UuZGlzcGxheU5h
bWVGb3JUeXBlKFdJLlJlc291cmNlLlR5cGUuSW1hZ2UsIHRydWUpOwotICAgICAgICAgICAgYnJl
YWs7Ci0KLSAgICAgICAgY2FzZSBXSS5SZXNvdXJjZUNvbGxlY3Rpb24uVHlwZVZlcmlmaWVyLkZv
bnQ6Ci0gICAgICAgICAgICB0aXRsZSA9IFdJLlJlc291cmNlLmRpc3BsYXlOYW1lRm9yVHlwZShX
SS5SZXNvdXJjZS5UeXBlLkZvbnQsIHRydWUpOwotICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAg
ICAgY2FzZSBXSS5SZXNvdXJjZUNvbGxlY3Rpb24uVHlwZVZlcmlmaWVyLlNjcmlwdDoKLSAgICAg
ICAgICAgIHRpdGxlID0gV0kuUmVzb3VyY2UuZGlzcGxheU5hbWVGb3JUeXBlKFdJLlJlc291cmNl
LlR5cGUuU2NyaXB0LCB0cnVlKTsKLSAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgIGNhc2Ug
V0kuUmVzb3VyY2VDb2xsZWN0aW9uLlR5cGVWZXJpZmllci5YSFI6Ci0gICAgICAgICAgICB0aXRs
ZSA9IFdJLlJlc291cmNlLmRpc3BsYXlOYW1lRm9yVHlwZShXSS5SZXNvdXJjZS5UeXBlLlhIUiwg
dHJ1ZSk7Ci0gICAgICAgICAgICBicmVhazsKLQotICAgICAgICBjYXNlIFdJLlJlc291cmNlQ29s
bGVjdGlvbi5UeXBlVmVyaWZpZXIuRmV0Y2g6Ci0gICAgICAgICAgICB0aXRsZSA9IFdJLlJlc291
cmNlLmRpc3BsYXlOYW1lRm9yVHlwZShXSS5SZXNvdXJjZS5UeXBlLkZldGNoLCB0cnVlKTsKLSAg
ICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgIGNhc2UgV0kuUmVzb3VyY2VDb2xsZWN0aW9uLlR5
cGVWZXJpZmllci5XZWJTb2NrZXQ6Ci0gICAgICAgICAgICB0aXRsZSA9IFdJLlJlc291cmNlLmRp
c3BsYXlOYW1lRm9yVHlwZShXSS5SZXNvdXJjZS5UeXBlLldlYlNvY2tldCwgdHJ1ZSk7Ci0gICAg
ICAgICAgICBicmVhazsKKyAgICAvLyBQdWJsaWMKKyAgICAKKyAgICBnZXQgc2VsZWN0ZWRJdGVt
KCkgeyByZXR1cm4gdGhpcy5fc2VsZWN0ZWRJdGVtOyB9CiAKLSAgICAgICAgY2FzZSBXSS5SZXNv
dXJjZUNvbGxlY3Rpb24uVHlwZVZlcmlmaWVyLk90aGVyOgotICAgICAgICAgICAgdGl0bGUgPSBX
SS5SZXNvdXJjZS5kaXNwbGF5TmFtZUZvclR5cGUoV0kuUmVzb3VyY2UuVHlwZS5PdGhlciwgdHJ1
ZSk7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQorICAgIGdldCBzZWxlY3Rpb25FbmFi
bGVkKCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl9zZWxlY3Rpb25FbmFibGVkOworICAg
IH0KIAotICAgICAgICB0aGlzLl9jb250ZW50UGxhY2Vob2xkZXIgPSBuZXcgV0kuVGl0bGVWaWV3
KHRpdGxlKTsKKyAgICBzZXQgc2VsZWN0aW9uRW5hYmxlZCh2YWx1ZSkKKyAgICB7CisgICAgICAg
IGlmICh0aGlzLl9zZWxlY3Rpb25FbmFibGVkID09PSB2YWx1ZSkKKyAgICAgICAgICAgIHJldHVy
bjsKIAotICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmFkZCgiY29sbGVjdGlvbiIpOwor
ICAgICAgICB0aGlzLl9zZWxlY3Rpb25FbmFibGVkID0gdmFsdWU7CisgICAgICAgIGlmICghdGhp
cy5fc2VsZWN0aW9uRW5hYmxlZCkKKyAgICAgICAgICAgIHRoaXMuX3NlbGVjdEl0ZW0obnVsbCk7
CiAgICAgfQogCi0gICAgIC8vIFB1YmxpYwotCi0gICAgaW5pdGlhbExheW91dCgpCisgICAgY29u
dGVudFZpZXdGb3JJdGVtKGl0ZW0pCiAgICAgewotICAgICAgICBsZXQgaXRlbXMgPSB0aGlzLnJl
cHJlc2VudGVkT2JqZWN0Lml0ZW1zOwotICAgICAgICBpZiAodGhpcy5fY29udGVudFZpZXdDb25z
dHJ1Y3RvciAmJiBpdGVtcy5zaXplKSB7Ci0gICAgICAgICAgICBmb3IgKGxldCBpdGVtIG9mIGl0
ZW1zKQotICAgICAgICAgICAgICAgIHRoaXMuX2FkZENvbnRlbnRWaWV3Rm9ySXRlbShpdGVtKTsK
LSAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICB0aGlzLmFkZFN1YnZpZXcodGhpcy5fY29udGVu
dFBsYWNlaG9sZGVyKTsKKyAgICAgICAgcmV0dXJuIHRoaXMuX2NvbnRlbnRWaWV3TWFwLmdldChp
dGVtKSB8fCBudWxsOwogICAgIH0KIAotICAgICAvLyBQcml2YXRlCisgICAgLy8gUHJvdGVjdGVk
CiAKLSAgICBfYWRkQ29udGVudFZpZXdGb3JJdGVtKGl0ZW0pCisgICAgYWRkQ29udGVudFZpZXdG
b3JJdGVtKGl0ZW0pCiAgICAgewogICAgICAgICBpZiAoIXRoaXMuX2NvbnRlbnRWaWV3Q29uc3Ry
dWN0b3IpCiAgICAgICAgICAgICByZXR1cm47CiAKKyAgICAgICAgaWYgKHRoaXMuX2NvbnRlbnRW
aWV3TWFwLmhhcyhpdGVtKSkgeworICAgICAgICAgICAgY29uc29sZS5hc3NlcnQoZmFsc2UsICJB
bHJlYWR5IGFkZGVkIENvbnRlbnRWaWV3IGZvciBpdGVtLiIsIGl0ZW0pOworICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICB9CisKICAgICAgICAgaWYgKHRoaXMuX2NvbnRlbnRQbGFjZWhvbGRl
ci5wYXJlbnRWaWV3KQogICAgICAgICAgICAgdGhpcy5yZW1vdmVTdWJ2aWV3KHRoaXMuX2NvbnRl
bnRQbGFjZWhvbGRlcik7CiAKICAgICAgICAgbGV0IGNvbnRlbnRWaWV3ID0gbmV3IHRoaXMuX2Nv
bnRlbnRWaWV3Q29uc3RydWN0b3IoaXRlbSk7Ci0KLSAgICAgICAgY29udGVudFZpZXcuYWRkRXZl
bnRMaXN0ZW5lcihXSS5SZXNvdXJjZUNvbnRlbnRWaWV3LkV2ZW50LkNvbnRlbnRFcnJvciwgdGhp
cy5faGFuZGxlQ29udGVudEVycm9yLCB0aGlzKTsKKyAgICAgICAgY29uc29sZS5hc3NlcnQoY29u
dGVudFZpZXcgaW5zdGFuY2VvZiBXSS5Db250ZW50Vmlldyk7CiAKICAgICAgICAgbGV0IGhhbmRs
ZUNsaWNrID0gKGV2ZW50KSA9PiB7CiAgICAgICAgICAgICBpZiAoZXZlbnQuYnV0dG9uICE9PSAw
IHx8IGV2ZW50LmN0cmxLZXkpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgICAg
ICBXSS5zaG93UmVwcmVzZW50ZWRPYmplY3QoaXRlbSk7CisgICAgICAgICAgICBpZiAodGhpcy5f
c2VsZWN0aW9uRW5hYmxlZCkKKyAgICAgICAgICAgICAgICB0aGlzLl9zZWxlY3RJdGVtKGl0ZW0p
OworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRv
TGlzdGVuZXJzKFdJLkNvbGxlY3Rpb25Db250ZW50Vmlldy5FdmVudC5JdGVtQ2xpY2tlZCwge2l0
ZW19KTsKICAgICAgICAgfTsKKworICAgICAgICB0aGlzLl9jb250ZW50Vmlld01hcC5zZXQoaXRl
bSwgY29udGVudFZpZXcpOwogICAgICAgICB0aGlzLl9oYW5kbGVDbGlja01hcC5zZXQoaXRlbSwg
aGFuZGxlQ2xpY2spOwogICAgICAgICBjb250ZW50Vmlldy5lbGVtZW50LmFkZEV2ZW50TGlzdGVu
ZXIoImNsaWNrIiwgaGFuZGxlQ2xpY2spOwogCi0gICAgICAgIGNvbnRlbnRWaWV3LmVsZW1lbnQu
dGl0bGUgPSBXSS5kaXNwbGF5TmFtZUZvclVSTChpdGVtLnVybCwgaXRlbS51cmxDb21wb25lbnRz
KTsKLQogICAgICAgICB0aGlzLmFkZFN1YnZpZXcoY29udGVudFZpZXcpOwotICAgICAgICB0aGlz
Ll9jb250ZW50Vmlld01hcC5zZXQoaXRlbSwgY29udGVudFZpZXcpOworICAgICAgICB0aGlzLmNv
bnRlbnRWaWV3QWRkZWQoY29udGVudFZpZXcpOwogICAgIH0KIAotICAgIF9yZW1vdmVDb250ZW50
Vmlld0Zvckl0ZW0oaXRlbSkKKyAgICByZW1vdmVDb250ZW50Vmlld0Zvckl0ZW0oaXRlbSkKICAg
ICB7CiAgICAgICAgIGlmICghdGhpcy5fY29udGVudFZpZXdDb25zdHJ1Y3RvcikKICAgICAgICAg
ICAgIHJldHVybjsKQEAgLTE0OCwyNyArMTEzLDc4IEBAIFdJLkNvbGxlY3Rpb25Db250ZW50Vmll
dyA9IGNsYXNzIENvbGxlY3Rpb25Db250ZW50VmlldyBleHRlbmRzIFdJLkNvbnRlbnRWaWV3CiAK
ICAgICAgICAgdGhpcy5yZW1vdmVTdWJ2aWV3KGNvbnRlbnRWaWV3KTsKICAgICAgICAgdGhpcy5f
Y29udGVudFZpZXdNYXAuZGVsZXRlKGl0ZW0pOworICAgICAgICB0aGlzLmNvbnRlbnRWaWV3UmVt
b3ZlZChjb250ZW50Vmlldyk7CiAKICAgICAgICAgY29udGVudFZpZXcucmVtb3ZlRXZlbnRMaXN0
ZW5lcihudWxsLCBudWxsLCB0aGlzKTsKIAogICAgICAgICBsZXQgaGFuZGxlQ2xpY2sgPSB0aGlz
Ll9oYW5kbGVDbGlja01hcC5nZXQoaXRlbSk7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGhhbmRs
ZUNsaWNrKTsKKwogICAgICAgICBpZiAoaGFuZGxlQ2xpY2spIHsKICAgICAgICAgICAgIGNvbnRl
bnRWaWV3LmVsZW1lbnQucmVtb3ZlRXZlbnRMaXN0ZW5lcigiY2xpY2siLCBoYW5kbGVDbGljayk7
CiAgICAgICAgICAgICB0aGlzLl9oYW5kbGVDbGlja01hcC5kZWxldGUoaXRlbSk7CiAgICAgICAg
IH0KIAotICAgICAgICBpZiAoIXRoaXMucmVwcmVzZW50ZWRPYmplY3QucmVzb3VyY2VzLmxlbmd0
aCkKKyAgICAgICAgaWYgKCF0aGlzLnN1YnZpZXdzLmxlbmd0aCkKICAgICAgICAgICAgIHRoaXMu
YWRkU3Vidmlldyh0aGlzLl9jb250ZW50UGxhY2Vob2xkZXIpOwogICAgIH0KIAorICAgIGNvbnRl
bnRWaWV3QWRkZWQoY29udGVudFZpZXcpCisgICAgeworICAgICAgICAvLyBJbXBsZW1lbnRlZCBi
eSBzdWJjbGFzc2VzLgorICAgIH0KKworICAgIGNvbnRlbnRWaWV3UmVtb3ZlZChjb250ZW50Vmll
dykKKyAgICB7CisgICAgICAgIC8vIEltcGxlbWVudGVkIGJ5IHN1YmNsYXNzZXMuCisgICAgfQor
CisgICAgaW5pdGlhbExheW91dCgpCisgICAgeworICAgICAgICBsZXQgaXRlbXMgPSB0aGlzLnJl
cHJlc2VudGVkT2JqZWN0Lml0ZW1zOworICAgICAgICBpZiAoIWl0ZW1zLnNpemUgfHwgIXRoaXMu
X2NvbnRlbnRWaWV3Q29uc3RydWN0b3IpIHsKKyAgICAgICAgICAgIHRoaXMuYWRkU3Vidmlldyh0
aGlzLl9jb250ZW50UGxhY2Vob2xkZXIpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9
CisKKyAgICAgICAgZm9yIChsZXQgaXRlbSBvZiBpdGVtcykKKyAgICAgICAgICAgIHRoaXMuYWRk
Q29udGVudFZpZXdGb3JJdGVtKGl0ZW0pOworICAgIH0KKworICAgIGF0dGFjaGVkKCkKKyAgICB7
CisgICAgICAgIHN1cGVyLmF0dGFjaGVkKCk7CisKKyAgICAgICAgdGhpcy5yZXByZXNlbnRlZE9i
amVjdC5hZGRFdmVudExpc3RlbmVyKFdJLkNvbGxlY3Rpb24uRXZlbnQuSXRlbUFkZGVkLCB0aGlz
Ll9oYW5kbGVJdGVtQWRkZWQsIHRoaXMpOworICAgICAgICB0aGlzLnJlcHJlc2VudGVkT2JqZWN0
LmFkZEV2ZW50TGlzdGVuZXIoV0kuQ29sbGVjdGlvbi5FdmVudC5JdGVtUmVtb3ZlZCwgdGhpcy5f
aGFuZGxlSXRlbVJlbW92ZWQsIHRoaXMpOworCisgICAgICAgIGZvciAobGV0IGl0ZW0gb2YgdGhp
cy5fY29udGVudFZpZXdNYXAua2V5cygpKSB7CisgICAgICAgICAgICBpZiAoIXRoaXMucmVwcmVz
ZW50ZWRPYmplY3QuaXRlbXMuaGFzKGl0ZW0pKQorICAgICAgICAgICAgICAgIHRoaXMucmVtb3Zl
Q29udGVudFZpZXdGb3JJdGVtKGl0ZW0pOworICAgICAgICB9CisKKyAgICAgICAgZm9yIChsZXQg
aXRlbSBvZiB0aGlzLnJlcHJlc2VudGVkT2JqZWN0Lml0ZW1zKSB7CisgICAgICAgICAgICBpZiAo
IXRoaXMuX2NvbnRlbnRWaWV3TWFwLmhhcyhpdGVtKSkKKyAgICAgICAgICAgICAgICB0aGlzLmFk
ZENvbnRlbnRWaWV3Rm9ySXRlbShpdGVtKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGRldGFj
aGVkKCkKKyAgICB7CisgICAgICAgIHRoaXMucmVwcmVzZW50ZWRPYmplY3QucmVtb3ZlRXZlbnRM
aXN0ZW5lcihudWxsLCBudWxsLCB0aGlzKTsKKworICAgICAgICBzdXBlci5kZXRhY2hlZCgpOwor
ICAgIH0KKworICAgICAvLyBQcml2YXRlCisKICAgICBfaGFuZGxlSXRlbUFkZGVkKGV2ZW50KQog
ICAgIHsKICAgICAgICAgbGV0IGl0ZW0gPSBldmVudC5kYXRhLml0ZW07CiAgICAgICAgIGlmICgh
aXRlbSkKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICB0aGlzLl9hZGRDb250ZW50Vmll
d0Zvckl0ZW0oaXRlbSk7CisgICAgICAgIHRoaXMuYWRkQ29udGVudFZpZXdGb3JJdGVtKGl0ZW0p
OwogICAgIH0KIAogICAgIF9oYW5kbGVJdGVtUmVtb3ZlZChldmVudCkKQEAgLTE3Nyw3ICsxOTMs
NyBAQCBXSS5Db2xsZWN0aW9uQ29udGVudFZpZXcgPSBjbGFzcyBDb2xsZWN0aW9uQ29udGVudFZp
ZXcgZXh0ZW5kcyBXSS5Db250ZW50VmlldwogICAgICAgICBpZiAoIWl0ZW0pCiAgICAgICAgICAg
ICByZXR1cm47CiAKLSAgICAgICAgdGhpcy5fcmVtb3ZlQ29udGVudFZpZXdGb3JJdGVtKGl0ZW0p
OworICAgICAgICB0aGlzLnJlbW92ZUNvbnRlbnRWaWV3Rm9ySXRlbShpdGVtKTsKICAgICB9CiAK
ICAgICBfaGFuZGxlQ29udGVudEVycm9yKGV2ZW50KQpAQCAtMTg1LDQgKzIwMSw1NSBAQCBXSS5D
b2xsZWN0aW9uQ29udGVudFZpZXcgPSBjbGFzcyBDb2xsZWN0aW9uQ29udGVudFZpZXcgZXh0ZW5k
cyBXSS5Db250ZW50VmlldwogICAgICAgICBpZiAoZXZlbnQgJiYgZXZlbnQudGFyZ2V0KQogICAg
ICAgICAgICAgdGhpcy5fcmVtb3ZlQ29udGVudFZpZXdGb3JJdGVtKGV2ZW50LnRhcmdldC5yZXBy
ZXNlbnRlZE9iamVjdCk7CiAgICAgfQorCisgICAgX2RlZmF1bHRUaXRsZSgpCisgICAgeworICAg
ICAgICBsZXQgdHlwZVZlcmlmaWVyID0gdGhpcy5yZXByZXNlbnRlZE9iamVjdC50eXBlVmVyaWZp
ZXI7CisKKyAgICAgICAgc3dpdGNoICh0eXBlVmVyaWZpZXIpIHsKKyAgICAgICAgY2FzZSBXSS5D
b2xsZWN0aW9uLlR5cGVWZXJpZmllci5GcmFtZToKKyAgICAgICAgICAgIHJldHVybiBXSS5VSVN0
cmluZygiRnJhbWVzIik7CisgICAgICAgIGNhc2UgV0kuQ29sbGVjdGlvbi5UeXBlVmVyaWZpZXIu
UmVzb3VyY2U6CisgICAgICAgICAgICByZXR1cm4gV0kuVUlTdHJpbmcoIlJlc291cmNlcyIpOwor
ICAgICAgICBjYXNlIFdJLkNvbGxlY3Rpb24uVHlwZVZlcmlmaWVyLlNjcmlwdDoKKyAgICAgICAg
ICAgIHJldHVybiBXSS5VSVN0cmluZygiU2NyaXB0cyIpOworICAgICAgICBjYXNlIFdJLkNvbGxl
Y3Rpb24uVHlwZVZlcmlmaWVyLkNTU1N0eWxlU2hlZXQ6CisgICAgICAgICAgICByZXR1cm4gV0ku
VUlTdHJpbmcoIlN0eWxlc2hlZXRzIik7CisgICAgICAgIGNhc2UgV0kuQ29sbGVjdGlvbi5UeXBl
VmVyaWZpZXIuQ2FudmFzOgorICAgICAgICAgICAgcmV0dXJuIFdJLlVJU3RyaW5nKCJDYW52YXNl
cyIpOworICAgICAgICBjYXNlIFdJLkNvbGxlY3Rpb24uVHlwZVZlcmlmaWVyLlNoYWRlclByb2dy
YW06CisgICAgICAgICAgICByZXR1cm4gV0kuVUlTdHJpbmcoIlNoYWRlciBQcm9ncmFtcyIpOwor
ICAgICAgICB9CisKKyAgICAgICAgY29uc29sZS53YXJuKCJObyBkZWZhdWx0IHRpdGxlIGZvciBD
b2xsZWN0aW9uIHR5cGUgdmVyaWZpZXIuIiwgdHlwZVZlcmlmaWVyKTsKKyAgICAgICAgcmV0dXJu
IFdJLlVJU3RyaW5nKCJDb2xsZWN0aW9uIik7CisgICAgfQorCisgICAgX3NlbGVjdEl0ZW0oaXRl
bSkKKyAgICB7CisgICAgICAgIGlmICh0aGlzLl9zZWxlY3RlZEl0ZW0gPT09IGl0ZW0pCisgICAg
ICAgICAgICByZXR1cm47CisKKyAgICAgICAgaWYgKHRoaXMuX3NlbGVjdGVkSXRlbSkgeworICAg
ICAgICAgICAgbGV0IGNvbnRlbnRWaWV3ID0gdGhpcy5fY29udGVudFZpZXdNYXAuZ2V0KHRoaXMu
X3NlbGVjdGVkSXRlbSk7CisgICAgICAgICAgICBjb25zb2xlLmFzc2VydChjb250ZW50Vmlldyk7
CisgICAgICAgICAgICBjb250ZW50Vmlldy5jbGFzc0xpc3QucmVtb3ZlKCJzZWxlY3RlZCIpOwor
ICAgICAgICB9CisKKyAgICAgICAgbGV0IHByZXZpb3VzU2VsZWN0aW9uID0gdGhpcy5fc2VsZWN0
ZWRJdGVtOworICAgICAgICB0aGlzLl9zZWxlY3RlZEl0ZW0gPSBpdGVtOworCisgICAgICAgIGlm
ICh0aGlzLl9zZWxlY3RlZEl0ZW0pIHsKKyAgICAgICAgICAgIGxldCBzZWxlY3RlZENvbnRlbnRW
aWV3ID0gdGhpcy5fY29udGVudFZpZXdNYXAuZ2V0KHRoaXMuX3NlbGVjdGVkSXRlbSk7CisgICAg
ICAgICAgICBjb25zb2xlLmFzc2VydChzZWxlY3RlZENvbnRlbnRWaWV3KTsKKyAgICAgICAgICAg
IHNlbGVjdGVkQ29udGVudFZpZXcuY2xhc3NMaXN0LmFkZCgic2VsZWN0ZWQiKTsKKyAgICAgICAg
fQorCisgICAgICAgIHRoaXMuZGlzcGF0Y2hUb0V2ZW50TGlzdGVuZXJzKFdJLkNvbGxlY3Rpb25D
b250ZW50Vmlldy5FdmVudC5JdGVtQ2xpY2tlZCwge3ByZXZpb3VzU2VsZWN0aW9ufSk7CisgICAg
fQorfTsKKworV0kuQ29sbGVjdGlvbkNvbnRlbnRWaWV3LkV2ZW50ID0geworICAgIEl0ZW1DbGlj
a2VkOiAiY29sbGVjdGlvbi1jb250ZW50LXZpZXctaXRlbS1jbGlja2VkIiwKKyAgICBTZWxlY3Rl
ZEl0ZW1DaGFuZ2VkOiAiY29sbGVjdGlvbi1jb250ZW50LXZpZXctc2VsZWN0ZWQtaXRlbS1jaGFu
Z2VkIiwKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9WaWV3cy9Db250ZW50Vmlldy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL1ZpZXdzL0NvbnRlbnRWaWV3LmpzCmluZGV4IDUwMjczODRiZmMwYTc0MTgyN2ZmMzA1MzEw
ZTYxZWVmMTk4NWY3ODMuLjIxZTc2OGFhNDcwM2EyZjcxZjZmYjIyYWYwNWM1NDczYTk3MjQwYTIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0Nv
bnRlbnRWaWV3LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Zp
ZXdzL0NvbnRlbnRWaWV3LmpzCkBAIC0xNjEsNiArMTYxLDkgQEAgV0kuQ29udGVudFZpZXcgPSBj
bGFzcyBDb250ZW50VmlldyBleHRlbmRzIFdJLlZpZXcKICAgICAgICAgaWYgKHJlcHJlc2VudGVk
T2JqZWN0IGluc3RhbmNlb2YgV0kuUmVjb3JkaW5nKQogICAgICAgICAgICAgcmV0dXJuIG5ldyBX
SS5SZWNvcmRpbmdDb250ZW50VmlldyhyZXByZXNlbnRlZE9iamVjdCwgZXh0cmFBcmd1bWVudHMp
OwogCisgICAgICAgIGlmIChyZXByZXNlbnRlZE9iamVjdCBpbnN0YW5jZW9mIFdJLlJlc291cmNl
Q29sbGVjdGlvbikKKyAgICAgICAgICAgIHJldHVybiBuZXcgV0kuUmVzb3VyY2VDb2xsZWN0aW9u
Q29udGVudFZpZXcocmVwcmVzZW50ZWRPYmplY3QsIGV4dHJhQXJndW1lbnRzKTsKKwogICAgICAg
ICBpZiAocmVwcmVzZW50ZWRPYmplY3QgaW5zdGFuY2VvZiBXSS5Db2xsZWN0aW9uKQogICAgICAg
ICAgICAgcmV0dXJuIG5ldyBXSS5Db2xsZWN0aW9uQ29udGVudFZpZXcocmVwcmVzZW50ZWRPYmpl
Y3QsIGV4dHJhQXJndW1lbnRzKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvVmlld3MvUmVzb3VyY2VDb2xsZWN0aW9uQ29udGVudFZpZXcuanMgYi9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9SZXNvdXJjZUNvbGxlY3Rp
b25Db250ZW50Vmlldy5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hNWE2OTAzMmM3NmExYjU3NTI3YTRjN2E4NzA1
ZjllZTU3Mzk1N2M0Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvVmlld3MvUmVzb3VyY2VDb2xsZWN0aW9uQ29udGVudFZpZXcuanMKQEAgLTAs
MCArMSw3MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFy
eSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0
aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3
aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBC
WSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwg
T1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElO
CisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJ
R0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
IE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKK1dJLlJlc291cmNlQ29sbGVjdGlvbkNvbnRlbnRWaWV3
ID0gY2xhc3MgUmVzb3VyY2VDb2xsZWN0aW9uQ29udGVudFZpZXcgZXh0ZW5kcyBXSS5Db2xsZWN0
aW9uQ29udGVudFZpZXcKK3sKKyAgICBjb25zdHJ1Y3Rvcihjb2xsZWN0aW9uKQorICAgIHsKKyAg
ICAgICAgY29uc29sZS5hc3NlcnQoY29sbGVjdGlvbiBpbnN0YW5jZW9mIFdJLlJlc291cmNlQ29s
bGVjdGlvbik7CisKKyAgICAgICAgbGV0IGNvbnRlbnRWaWV3Q29uc3RydWN0b3IgPSBudWxsOwor
ICAgICAgICBpZiAoY29sbGVjdGlvbi5yZXNvdXJjZVR5cGUgPT09IFdJLlJlc291cmNlLlR5cGUu
SW1hZ2UpCisgICAgICAgICAgICBjb250ZW50Vmlld0NvbnN0cnVjdG9yID0gV0kuSW1hZ2VSZXNv
dXJjZUNvbnRlbnRWaWV3OworCisgICAgICAgIGxldCB0aXRsZSA9IFdJLlJlc291cmNlLmRpc3Bs
YXlOYW1lRm9yVHlwZShjb2xsZWN0aW9uLnJlc291cmNlVHlwZSwgdHJ1ZSk7CisKKyAgICAgICAg
c3VwZXIoY29sbGVjdGlvbiwgY29udGVudFZpZXdDb25zdHJ1Y3RvciwgdGl0bGUpOworCisgICAg
ICAgIHRoaXMuYWRkRXZlbnRMaXN0ZW5lcihXSS5Db2xsZWN0aW9uQ29udGVudFZpZXcuRXZlbnQu
SXRlbUNsaWNrZWQsIHRoaXMuX2l0ZW1DbGlja2VkLCB0aGlzKTsKKyAgICB9CisKKyAgICAvLyBQ
cm90ZWN0ZWQKKworICAgIGNvbnRlbnRWaWV3QWRkZWQoY29udGVudFZpZXcpCisgICAgeworICAg
ICAgICBjb25zb2xlLmFzc2VydChjb250ZW50VmlldyBpbnN0YW5jZW9mIFdJLlJlc291cmNlQ29u
dGVudFZpZXcpOworCisgICAgICAgIGxldCByZXNvdXJjZSA9IGNvbnRlbnRWaWV3LnJlcHJlc2Vu
dGVkT2JqZWN0OworICAgICAgICBjb25zb2xlLmFzc2VydChyZXNvdXJjZSBpbnN0YW5jZW9mIFdJ
LlJlc291cmNlKTsKKworICAgICAgICBjb250ZW50Vmlldy5hZGRFdmVudExpc3RlbmVyKFdJLlJl
c291cmNlQ29udGVudFZpZXcuRXZlbnQuQ29udGVudEVycm9yLCB0aGlzLl9oYW5kbGVDb250ZW50
RXJyb3IsIHRoaXMpOworICAgICAgICBjb250ZW50Vmlldy5lbGVtZW50LnRpdGxlID0gV0kuZGlz
cGxheU5hbWVGb3JVUkwocmVzb3VyY2UudXJsLCByZXNvdXJjZS51cmxDb21wb25lbnRzKTsKKyAg
ICB9CisKKyAgICAvLyBQcml2YXRlCisKKyAgICBfaGFuZGxlQ29udGVudEVycm9yKGV2ZW50KQor
ICAgIHsKKyAgICAgICAgaWYgKGV2ZW50ICYmIGV2ZW50LnRhcmdldCkKKyAgICAgICAgICAgIHRo
aXMucmVtb3ZlQ29udGVudFZpZXdGb3JJdGVtKGV2ZW50LnRhcmdldC5yZXByZXNlbnRlZE9iamVj
dCk7CisgICAgfQorCisgICAgX2l0ZW1DbGlja2VkKGV2ZW50KQorICAgIHsKKyAgICAgICAgbGV0
IHJlcHJlc2VudGVkT2JqZWN0ID0gZXZlbnQuZGF0YS5pdGVtOworICAgICAgICBjb25zb2xlLmFz
c2VydChyZXByZXNlbnRlZE9iamVjdCk7CisKKyAgICAgICAgV0kuc2hvd1JlcHJlc2VudGVkT2Jq
ZWN0KHJlcHJlc2VudGVkT2JqZWN0KTsKKyAgICB9Cit9Owo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>321963</attachid>
            <date>2017-09-27 09:32:36 -0700</date>
            <delta_ts>2017-09-27 10:28:11 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-177419-20170927093235.patch</filename>
            <type>text/plain</type>
            <size>21044</size>
            <attacher name="Matt Baker">mattbaker</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIyNTU2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwppbmRleCAz
Y2Y5ODU4YzEwZjMwMTYxYTkyZTAyOTk4N2MyMzhkZDBiMWQ2ZDUwLi41MzY2OWU3ZjAyMzZlNDg4
NjlmMzM3NWE2ZmE0YWJhMzhjNmI5MGQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw2NyBAQAorMjAxNy0wOS0yNyAgTWF0dCBCYWtlciAgPG1hdHRiYWtlckBhcHBsZS5jb20+
CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogQ3JlYXRlIFJlc291cmNlQ29sbGVjdGlvbkNvbnRl
bnRWaWV3IGFuZCBtYWtlIENvbGxlY3Rpb25Db250ZW50VmlldyBlYXNpZXIgdG8gZXh0ZW5kCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzc0MTkKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDb2xsZWN0aW9u
Q29udGVudFZpZXcgc2hvdWxkIGJlIGdlbmVyaWMsIHdvcmsgd2l0aCBhbnkgcmVwcmVzZW50ZWQg
b2JqZWN0CisgICAgICAgIENvbGxlY3Rpb24sIGFuZCBub3QgcGVyZm9ybSBhbnkgdHlwZSBjaGVj
a2luZy4gSXQgc2hvdWxkIGp1c3QgbWFwIGl0ZW1zCisgICAgICAgIHRvIENvbnRlbnRWaWV3cyB1
c2luZyB0aGUgcHJvdmlkZWQgQ29udGVudFZpZXcgY29uc3RydWN0b3IuCisKKyAgICAgICAgVGhl
IGJlaGF2aW9yIHdoZW4gY2xpY2tpbmcgYSBDb250ZW50VmlldyBpbiB0aGUgY29sbGVjdGlvbiBo
YXMgYmVlbiBleHRlbmRlZC4KKyAgICAgICAgSWYgc2VsZWN0aW9uIGlzIGVuYWJsZWQsIGNsaWNr
aW5nIGEgQ29udGVudFZpZXcgd2lsbCBjYXVzZSBhICJzZWxlY3RlZCIgY2xhc3MKKyAgICAgICAg
dG8gYmUgYXBwbGllZCB0byBpdHMgZWxlbWVudCwgYW5kIGEgU3VwcGxlbWVudGFsUmVwcmVzZW50
ZWRPYmplY3RzRGlkQ2hhbmdlCisgICAgICAgIGV2ZW50IGlzIGRpc3BhdGNoZWQuCisKKyAgICAg
ICAgKiBVc2VySW50ZXJmYWNlL01haW4uaHRtbDoKKyAgICAgICAgTmV3IGZpbGUsIG1vdmUgQ29s
bGVjdGlvbkNvbnRlbnRWaWV3IGFib3ZlIHN1YmNsYXNzZXMuCisKKyAgICAgICAgKiBVc2VySW50
ZXJmYWNlL01vZGVscy9SZXNvdXJjZUNvbGxlY3Rpb24uanM6CisgICAgICAgIChXSS5SZXNvdXJj
ZUNvbGxlY3Rpb24ucHJvdG90eXBlLmdldCByZXNvdXJjZVR5cGUpOgorICAgICAgICBNYWtlIHJl
c291cmNlIHR5cGUgcHVibGljbHkgYXZhaWxhYmxlLgorCisgICAgICAgICogVXNlckludGVyZmFj
ZS9WaWV3cy9Db2xsZWN0aW9uQ29udGVudFZpZXcuanM6CisgICAgICAgIE1vdmUgdHlwZSBjaGVj
a2luZyBvZiB0aGUgY29sbGVjdGlvbiBvdXQgb2YgdGhlIGJhc2UgY2xhc3MgYW5kIGFzc2VydAor
ICAgICAgICB0aGF0IENvbnRlbnRWaWV3cyBhcmUgY3JlYXRlZCB3aGVuIGludm9raW5nIGBjb250
ZW50Vmlld0NvbnN0cnVjdG9yYC4KKworICAgICAgICAqIExvY2FsaXphdGlvbnMvZW4ubHByb2ov
bG9jYWxpemVkU3RyaW5ncy5qczoKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL01haW4uaHRtbDoK
KworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvTW9kZWxzL1Jlc291cmNlQ29sbGVjdGlvbi5qczoK
KyAgICAgICAgKFdJLlJlc291cmNlQ29sbGVjdGlvbi5wcm90b3R5cGUuZ2V0IHJlc291cmNlVHlw
ZSk6CisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL0NvbGxlY3Rpb25Db250ZW50Vmll
dy5qczoKKyAgICAgICAgKFdJLkNvbGxlY3Rpb25Db250ZW50Vmlldyk6CisgICAgICAgIChXSS5D
b2xsZWN0aW9uQ29udGVudFZpZXcucHJvdG90eXBlLmdldCBzdXBwbGVtZW50YWxSZXByZXNlbnRl
ZE9iamVjdHMpOgorICAgICAgICAoV0kuQ29sbGVjdGlvbkNvbnRlbnRWaWV3LnByb3RvdHlwZS5n
ZXQgc2VsZWN0aW9uRW5hYmxlZCk6CisgICAgICAgIChXSS5Db2xsZWN0aW9uQ29udGVudFZpZXcu
cHJvdG90eXBlLnNldCBzZWxlY3Rpb25FbmFibGVkKToKKyAgICAgICAgKFdJLkNvbGxlY3Rpb25D
b250ZW50Vmlldy5wcm90b3R5cGUuYWRkQ29udGVudFZpZXdGb3JJdGVtKToKKyAgICAgICAgKFdJ
LkNvbGxlY3Rpb25Db250ZW50Vmlldy5wcm90b3R5cGUucmVtb3ZlQ29udGVudFZpZXdGb3JJdGVt
KToKKyAgICAgICAgKFdJLkNvbGxlY3Rpb25Db250ZW50Vmlldy5wcm90b3R5cGUuY29udGVudFZp
ZXdBZGRlZCk6CisgICAgICAgIChXSS5Db2xsZWN0aW9uQ29udGVudFZpZXcucHJvdG90eXBlLmNv
bnRlbnRWaWV3UmVtb3ZlZCk6CisgICAgICAgIChXSS5Db2xsZWN0aW9uQ29udGVudFZpZXcucHJv
dG90eXBlLmluaXRpYWxMYXlvdXQpOgorICAgICAgICAoV0kuQ29sbGVjdGlvbkNvbnRlbnRWaWV3
LnByb3RvdHlwZS5hdHRhY2hlZCk6CisgICAgICAgIChXSS5Db2xsZWN0aW9uQ29udGVudFZpZXcu
cHJvdG90eXBlLmRldGFjaGVkKToKKyAgICAgICAgKFdJLkNvbGxlY3Rpb25Db250ZW50Vmlldy5w
cm90b3R5cGUuX2hhbmRsZUl0ZW1BZGRlZCk6CisgICAgICAgIChXSS5Db2xsZWN0aW9uQ29udGVu
dFZpZXcucHJvdG90eXBlLl9oYW5kbGVJdGVtUmVtb3ZlZCk6CisgICAgICAgIChXSS5Db2xsZWN0
aW9uQ29udGVudFZpZXcucHJvdG90eXBlLl9kZWZhdWx0VGl0bGUpOgorICAgICAgICAoV0kuQ29s
bGVjdGlvbkNvbnRlbnRWaWV3LnByb3RvdHlwZS5fc2VsZWN0SXRlbSk6CisgICAgICAgIChXSS5D
b2xsZWN0aW9uQ29udGVudFZpZXcucHJvdG90eXBlLl9hZGRDb250ZW50Vmlld0Zvckl0ZW0pOiBE
ZWxldGVkLgorICAgICAgICAoV0kuQ29sbGVjdGlvbkNvbnRlbnRWaWV3LnByb3RvdHlwZS5fcmVt
b3ZlQ29udGVudFZpZXdGb3JJdGVtKTogRGVsZXRlZC4KKworICAgICAgICAqIFVzZXJJbnRlcmZh
Y2UvVmlld3MvQ29udGVudFZpZXcuanM6CisgICAgICAgIChXSS5Db250ZW50Vmlldy5jcmVhdGVG
cm9tUmVwcmVzZW50ZWRPYmplY3QpOgorICAgICAgICBDcmVhdGUgYSBSZXNvdXJjZUNvbGxlY3Rp
b25Db250ZW50Vmlldy4gSW4gdGhlIGZ1dHVyZSwgYWRkaXRpb25hbAorICAgICAgICBDb2xsZWN0
aW9uIHR5cGVzIGNhbiBiZSBtYXBwZWQgdG8gdGhlaXIgYXNzb2NpYXRlZCBDb2xsZWN0aW9uQ29u
dGVudFZpZXcuCisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL1Jlc291cmNlQ29sbGVj
dGlvbkNvbnRlbnRWaWV3LmpzOiBBZGRlZC4KKyAgICAgICAgTmV3IGNsYXNzIGZvciByZXNvdXJj
ZS1zcGVjaWZpYyBsb2dpYyBwcmV2aW91c2x5IGluIENvbGxlY3Rpb25Db250ZW50Vmlldy4KKyAg
ICAgICAgKFdJLlJlc291cmNlQ29sbGVjdGlvbkNvbnRlbnRWaWV3KToKKyAgICAgICAgKFdJLlJl
c291cmNlQ29sbGVjdGlvbkNvbnRlbnRWaWV3LnByb3RvdHlwZS5jb250ZW50Vmlld0FkZGVkKToK
KyAgICAgICAgKFdJLlJlc291cmNlQ29sbGVjdGlvbkNvbnRlbnRWaWV3LnByb3RvdHlwZS5faGFu
ZGxlQ29udGVudEVycm9yKToKKyAgICAgICAgUmVtb3ZlIENvbnRlbnRWaWV3IHdpdGhvdXQgcmVt
b3ZpbmcgdGhlIHJlc291cmNlIGZyb20gaXRzIGNvbGxlY3Rpb24uCisKIDIwMTctMDktMjcgIEZ1
amlpIEhpcm9ub3JpICA8SGlyb25vcmkuRnVqaWlAc29ueS5jb20+CiAKICAgICAgICAgW0dUS10g
V2ViIEluc3BlY3RvcjogQWRkIENhbnZhczJELnN2ZyBhbmQgQ2FudmFzM0Quc3ZnCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvTG9jYWxpemF0aW9ucy9lbi5scHJvai9sb2NhbGl6
ZWRTdHJpbmdzLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0xvY2FsaXphdGlvbnMvZW4ubHBy
b2ovbG9jYWxpemVkU3RyaW5ncy5qcwppbmRleCA3ZTgxZDkxNzBkY2U2NDZhODE1NmFlNzViNDMz
NDcwZTlhNGUzOWM4Li5iNDllYTJmYjc2YjdiOWYzZGU4MjM4ZThlNmY1YjkzODE3YWQ1ZmI1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvTG9jYWxpemF0aW9ucy9lbi5scHJvai9s
b2NhbGl6ZWRTdHJpbmdzLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Mb2NhbGl6YXRp
b25zL2VuLmxwcm9qL2xvY2FsaXplZFN0cmluZ3MuanMKQEAgLTIwNCw2ICsyMDQsNyBAQCBsb2Nh
bGl6ZWRTdHJpbmdzWyJDb2RlIl0gPSAiQ29kZSI7CiBsb2NhbGl6ZWRTdHJpbmdzWyJDb2xsYXBz
ZSBBbGwiXSA9ICJDb2xsYXBzZSBBbGwiOwogbG9jYWxpemVkU3RyaW5nc1siQ29sbGFwc2UgY29s
dW1ucyJdID0gIkNvbGxhcHNlIGNvbHVtbnMiOwogbG9jYWxpemVkU3RyaW5nc1siQ29sbGVjdCBn
YXJiYWdlIl0gPSAiQ29sbGVjdCBnYXJiYWdlIjsKK2xvY2FsaXplZFN0cmluZ3NbIkNvbGxlY3Rp
b24iXSA9ICJDb2xsZWN0aW9uIjsKIGxvY2FsaXplZFN0cmluZ3NbIkNvbG9yIl0gPSAiQ29sb3Ii
OwogbG9jYWxpemVkU3RyaW5nc1siQ29tbWVudCJdID0gIkNvbW1lbnQiOwogbG9jYWxpemVkU3Ry
aW5nc1siQ29tbWVudCBBbGwgUHJvcGVydGllcyJdID0gIkNvbW1lbnQgQWxsIFByb3BlcnRpZXMi
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTWFpbi5o
dG1sIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTWFpbi5odG1sCmluZGV4
IGFjYjAyZjZlY2RiZDQ2MDFmNThkZWMwMWM1NzY3MmM5MjgzYmFjYzMuLmM5MDYxMGI3YTIzYjA0
ODA5NDhjNjU4OTZjNjE5ZTdkZmZiZWVjNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL01haW4uaHRtbAorKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9NYWluLmh0bWwKQEAgLTUyMiw2ICs1MjIsOCBAQAogICAgIDxzY3JpcHQg
c3JjPSJWaWV3cy9TZXR0aW5nc0dyb3VwLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0i
Vmlld3MvU2V0dGluZ3NWaWV3LmpzIj48L3NjcmlwdD4KIAorICAgIDxzY3JpcHQgc3JjPSJWaWV3
cy9Db2xsZWN0aW9uQ29udGVudFZpZXcuanMiPjwvc2NyaXB0PgorCiAgICAgPHNjcmlwdCBzcmM9
IlZpZXdzL0FjdGl2YXRlQnV0dG9uTmF2aWdhdGlvbkl0ZW0uanMiPjwvc2NyaXB0PgogICAgIDxz
Y3JpcHQgc3JjPSJWaWV3cy9BY3RpdmF0ZUJ1dHRvblRvb2xiYXJJdGVtLmpzIj48L3NjcmlwdD4K
ICAgICA8c2NyaXB0IHNyYz0iVmlld3MvQXBwbGljYXRpb25DYWNoZURldGFpbHNTaWRlYmFyUGFu
ZWwuanMiPjwvc2NyaXB0PgpAQCAtNTUwLDcgKzU1Miw2IEBACiAgICAgPHNjcmlwdCBzcmM9IlZp
ZXdzL0NvZGVNaXJyb3JGb3JtYXR0ZXJzLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0i
Vmlld3MvQ29kZU1pcnJvclJlZ2V4TW9kZS5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9
IlZpZXdzL0NvZGVNaXJyb3JUZXh0TWFya2Vycy5qcyI+PC9zY3JpcHQ+Ci0gICAgPHNjcmlwdCBz
cmM9IlZpZXdzL0NvbGxlY3Rpb25Db250ZW50Vmlldy5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlw
dCBzcmM9IlZpZXdzL0NvbG9yUGlja2VyLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0i
Vmlld3MvQ29sb3JXaGVlbC5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IlZpZXdzL0Nv
bXBsZXRpb25TdWdnZXN0aW9uc1ZpZXcuanMiPjwvc2NyaXB0PgpAQCAtNjgyLDYgKzY4Myw3IEBA
CiAgICAgPHNjcmlwdCBzcmM9IlZpZXdzL1JlbmRlcmluZ0ZyYW1lVGltZWxpbmVWaWV3LmpzIj48
L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iVmlld3MvUmVzaXplci5qcyI+PC9zY3JpcHQ+CiAg
ICAgPHNjcmlwdCBzcmM9IlZpZXdzL1Jlc291cmNlQ2x1c3RlckNvbnRlbnRWaWV3LmpzIj48L3Nj
cmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iVmlld3MvUmVzb3VyY2VDb2xsZWN0aW9uQ29udGVudFZp
ZXcuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJWaWV3cy9SZXNvdXJjZURldGFpbHNT
aWRlYmFyUGFuZWwuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJWaWV3cy9SZXNvdXJj
ZVNpZGViYXJQYW5lbC5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IlZpZXdzL1Jlc291
cmNlVGltZWxpbmVEYXRhR3JpZE5vZGUuanMiPjwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL1Jlc291cmNlQ29sbGVjdGlvbi5q
cyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9SZXNvdXJjZUNv
bGxlY3Rpb24uanMKaW5kZXggMjMxYTlhMDhlODE5YjM4YzMwMDJlNTFlNjY0ZmZjZGRhYzNkNDBh
MC4uY2Q3OTZiOGQyNGNjMDY3OGUzYmQ0YmJhYzljNTc5ZjJmNGQ3MDliZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL1Jlc291cmNlQ29sbGVj
dGlvbi5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMv
UmVzb3VyY2VDb2xsZWN0aW9uLmpzCkBAIC02NCw2ICs2NCw4IEBAIFdJLlJlc291cmNlQ29sbGVj
dGlvbiA9IGNsYXNzIFJlc291cmNlQ29sbGVjdGlvbiBleHRlbmRzIFdJLkNvbGxlY3Rpb24KIAog
ICAgIC8vIFB1YmxpYwogCisgICAgZ2V0IHJlc291cmNlVHlwZSgpIHsgcmV0dXJuIHRoaXMuX3Jl
c291cmNlVHlwZTsgfQorCiAgICAgcmVzb3VyY2VGb3JVUkwodXJsKQogICAgIHsKICAgICAgICAg
cmV0dXJuIHRoaXMuX3Jlc291cmNlVVJMTWFwLmdldCh1cmwpIHx8IG51bGw7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Db2xsZWN0aW9uQ29u
dGVudFZpZXcuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9D
b2xsZWN0aW9uQ29udGVudFZpZXcuanMKaW5kZXggMDM3MmQxMzcwZjZiYmVjN2M4MjFlNjlkMjkw
MDYzYTQ5MzZlMjNlYS4uZjU0MmUyYWI2NGJhMmVmZjRlYTYyYjQxN2VkMjRlYzdhNjlmYTgxNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ29s
bGVjdGlvbkNvbnRlbnRWaWV3LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL1ZpZXdzL0NvbGxlY3Rpb25Db250ZW50Vmlldy5qcwpAQCAtMjUsMTE4ICsyNSw4MyBA
QAogCiBXSS5Db2xsZWN0aW9uQ29udGVudFZpZXcgPSBjbGFzcyBDb2xsZWN0aW9uQ29udGVudFZp
ZXcgZXh0ZW5kcyBXSS5Db250ZW50VmlldwogewotICAgIGNvbnN0cnVjdG9yKGNvbGxlY3Rpb24p
CisgICAgY29uc3RydWN0b3IoY29sbGVjdGlvbiwgY29udGVudFZpZXdDb25zdHJ1Y3RvciwgY29u
dGVudFBsYWNlaG9sZXJUZXh0KQogICAgIHsKICAgICAgICAgY29uc29sZS5hc3NlcnQoY29sbGVj
dGlvbiBpbnN0YW5jZW9mIFdJLkNvbGxlY3Rpb24pOwogCiAgICAgICAgIHN1cGVyKGNvbGxlY3Rp
b24pOwogCi0gICAgICAgIHRoaXMucmVwcmVzZW50ZWRPYmplY3QuYWRkRXZlbnRMaXN0ZW5lcihX
SS5Db2xsZWN0aW9uLkV2ZW50Lkl0ZW1BZGRlZCwgdGhpcy5faGFuZGxlSXRlbUFkZGVkLCB0aGlz
KTsKLSAgICAgICAgdGhpcy5yZXByZXNlbnRlZE9iamVjdC5hZGRFdmVudExpc3RlbmVyKFdJLkNv
bGxlY3Rpb24uRXZlbnQuSXRlbVJlbW92ZWQsIHRoaXMuX2hhbmRsZUl0ZW1SZW1vdmVkLCB0aGlz
KTsKKyAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5hZGQoImNvbGxlY3Rpb24iKTsKIAot
ICAgICAgICB0aGlzLl9jb250ZW50Vmlld01hcCA9IG5ldyBXZWFrTWFwOworICAgICAgICB0aGlz
Ll9jb250ZW50UGxhY2Vob2xkZXIgPSBuZXcgV0kuVGl0bGVWaWV3KGNvbnRlbnRQbGFjZWhvbGVy
VGV4dCB8fCB0aGlzLl9kZWZhdWx0VGl0bGUoKSk7CisgICAgICAgIHRoaXMuX2NvbnRlbnRWaWV3
Q29uc3RydWN0b3IgPSBjb250ZW50Vmlld0NvbnN0cnVjdG9yOworICAgICAgICB0aGlzLl9jb250
ZW50Vmlld01hcCA9IG5ldyBNYXA7CiAgICAgICAgIHRoaXMuX2hhbmRsZUNsaWNrTWFwID0gbmV3
IFdlYWtNYXA7CisgICAgICAgIHRoaXMuX3NlbGVjdGVkSXRlbSA9IG51bGw7CisgICAgICAgIHRo
aXMuX3NlbGVjdGlvbkVuYWJsZWQgPSBmYWxzZTsKKyAgICB9CiAKLSAgICAgICAgdGhpcy5fY29u
dGVudFZpZXdDb25zdHJ1Y3RvciA9IG51bGw7Ci0gICAgICAgIGxldCB0aXRsZSA9ICIiOwotICAg
ICAgICBzd2l0Y2ggKHRoaXMucmVwcmVzZW50ZWRPYmplY3QudHlwZVZlcmlmaWVyKSB7Ci0gICAg
ICAgIGNhc2UgV0kuQ29sbGVjdGlvbi5UeXBlVmVyaWZpZXIuRnJhbWU6Ci0gICAgICAgICAgICB0
aXRsZSA9IFdJLlVJU3RyaW5nKCJGcmFtZXMiKTsKLSAgICAgICAgICAgIGJyZWFrOwotCi0gICAg
ICAgIGNhc2UgV0kuQ29sbGVjdGlvbi5UeXBlVmVyaWZpZXIuU2NyaXB0OgotICAgICAgICAgICAg
dGl0bGUgPSBXSS5VSVN0cmluZygiRXh0cmEgU2NyaXB0cyIpOwotICAgICAgICAgICAgYnJlYWs7
Ci0KLSAgICAgICAgY2FzZSBXSS5Db2xsZWN0aW9uLlR5cGVWZXJpZmllci5SZXNvdXJjZToKLSAg
ICAgICAgICAgIHRpdGxlID0gV0kuVUlTdHJpbmcoIlJlc291cmNlIik7Ci0gICAgICAgICAgICBi
cmVhazsKLQotICAgICAgICBjYXNlIFdJLlJlc291cmNlQ29sbGVjdGlvbi5UeXBlVmVyaWZpZXIu
RG9jdW1lbnQ6Ci0gICAgICAgICAgICB0aXRsZSA9IFdJLlJlc291cmNlLmRpc3BsYXlOYW1lRm9y
VHlwZShXSS5SZXNvdXJjZS5UeXBlLkRvY3VtZW50LCB0cnVlKTsKLSAgICAgICAgICAgIGJyZWFr
OwotCi0gICAgICAgIGNhc2UgV0kuUmVzb3VyY2VDb2xsZWN0aW9uLlR5cGVWZXJpZmllci5TdHls
ZXNoZWV0OgotICAgICAgICAgICAgdGl0bGUgPSBXSS5SZXNvdXJjZS5kaXNwbGF5TmFtZUZvclR5
cGUoV0kuUmVzb3VyY2UuVHlwZS5TdHlsZXNoZWV0LCB0cnVlKTsKLSAgICAgICAgICAgIGJyZWFr
OwotCi0gICAgICAgIGNhc2UgV0kuUmVzb3VyY2VDb2xsZWN0aW9uLlR5cGVWZXJpZmllci5JbWFn
ZToKLSAgICAgICAgICAgIHRoaXMuX2NvbnRlbnRWaWV3Q29uc3RydWN0b3IgPSBXSS5JbWFnZVJl
c291cmNlQ29udGVudFZpZXc7Ci0gICAgICAgICAgICB0aXRsZSA9IFdJLlJlc291cmNlLmRpc3Bs
YXlOYW1lRm9yVHlwZShXSS5SZXNvdXJjZS5UeXBlLkltYWdlLCB0cnVlKTsKLSAgICAgICAgICAg
IGJyZWFrOwotCi0gICAgICAgIGNhc2UgV0kuUmVzb3VyY2VDb2xsZWN0aW9uLlR5cGVWZXJpZmll
ci5Gb250OgotICAgICAgICAgICAgdGl0bGUgPSBXSS5SZXNvdXJjZS5kaXNwbGF5TmFtZUZvclR5
cGUoV0kuUmVzb3VyY2UuVHlwZS5Gb250LCB0cnVlKTsKLSAgICAgICAgICAgIGJyZWFrOwotCi0g
ICAgICAgIGNhc2UgV0kuUmVzb3VyY2VDb2xsZWN0aW9uLlR5cGVWZXJpZmllci5TY3JpcHQ6Ci0g
ICAgICAgICAgICB0aXRsZSA9IFdJLlJlc291cmNlLmRpc3BsYXlOYW1lRm9yVHlwZShXSS5SZXNv
dXJjZS5UeXBlLlNjcmlwdCwgdHJ1ZSk7Ci0gICAgICAgICAgICBicmVhazsKLQotICAgICAgICBj
YXNlIFdJLlJlc291cmNlQ29sbGVjdGlvbi5UeXBlVmVyaWZpZXIuWEhSOgotICAgICAgICAgICAg
dGl0bGUgPSBXSS5SZXNvdXJjZS5kaXNwbGF5TmFtZUZvclR5cGUoV0kuUmVzb3VyY2UuVHlwZS5Y
SFIsIHRydWUpOwotICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgY2FzZSBXSS5SZXNvdXJj
ZUNvbGxlY3Rpb24uVHlwZVZlcmlmaWVyLkZldGNoOgotICAgICAgICAgICAgdGl0bGUgPSBXSS5S
ZXNvdXJjZS5kaXNwbGF5TmFtZUZvclR5cGUoV0kuUmVzb3VyY2UuVHlwZS5GZXRjaCwgdHJ1ZSk7
Ci0gICAgICAgICAgICBicmVhazsKLQotICAgICAgICBjYXNlIFdJLlJlc291cmNlQ29sbGVjdGlv
bi5UeXBlVmVyaWZpZXIuV2ViU29ja2V0OgotICAgICAgICAgICAgdGl0bGUgPSBXSS5SZXNvdXJj
ZS5kaXNwbGF5TmFtZUZvclR5cGUoV0kuUmVzb3VyY2UuVHlwZS5XZWJTb2NrZXQsIHRydWUpOwot
ICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgY2FzZSBXSS5SZXNvdXJjZUNvbGxlY3Rpb24u
VHlwZVZlcmlmaWVyLk90aGVyOgotICAgICAgICAgICAgdGl0bGUgPSBXSS5SZXNvdXJjZS5kaXNw
bGF5TmFtZUZvclR5cGUoV0kuUmVzb3VyY2UuVHlwZS5PdGhlciwgdHJ1ZSk7Ci0gICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgfQotCi0gICAgICAgIHRoaXMuX2NvbnRlbnRQbGFjZWhvbGRlciA9
IG5ldyBXSS5UaXRsZVZpZXcodGl0bGUpOworICAgIC8vIFB1YmxpYwogCi0gICAgICAgIHRoaXMu
ZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJjb2xsZWN0aW9uIik7CisgICAgZ2V0IHN1cHBsZW1lbnRh
bFJlcHJlc2VudGVkT2JqZWN0cygpCisgICAgeworICAgICAgICBpZiAodGhpcy5fc2VsZWN0ZWRJ
dGVtKQorICAgICAgICAgICAgcmV0dXJuIFt0aGlzLl9zZWxlY3RlZEl0ZW1dOworICAgICAgICBy
ZXR1cm4gW107CiAgICAgfQogCi0gICAgIC8vIFB1YmxpYworICAgIGdldCBzZWxlY3Rpb25FbmFi
bGVkKCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl9zZWxlY3Rpb25FbmFibGVkOworICAg
IH0KIAotICAgIGluaXRpYWxMYXlvdXQoKQorICAgIHNldCBzZWxlY3Rpb25FbmFibGVkKHZhbHVl
KQogICAgIHsKLSAgICAgICAgbGV0IGl0ZW1zID0gdGhpcy5yZXByZXNlbnRlZE9iamVjdC5pdGVt
czsKLSAgICAgICAgaWYgKHRoaXMuX2NvbnRlbnRWaWV3Q29uc3RydWN0b3IgJiYgaXRlbXMuc2l6
ZSkgewotICAgICAgICAgICAgZm9yIChsZXQgaXRlbSBvZiBpdGVtcykKLSAgICAgICAgICAgICAg
ICB0aGlzLl9hZGRDb250ZW50Vmlld0Zvckl0ZW0oaXRlbSk7Ci0gICAgICAgIH0gZWxzZQotICAg
ICAgICAgICAgdGhpcy5hZGRTdWJ2aWV3KHRoaXMuX2NvbnRlbnRQbGFjZWhvbGRlcik7CisgICAg
ICAgIGlmICh0aGlzLl9zZWxlY3Rpb25FbmFibGVkID09PSB2YWx1ZSkKKyAgICAgICAgICAgIHJl
dHVybjsKKworICAgICAgICB0aGlzLl9zZWxlY3Rpb25FbmFibGVkID0gdmFsdWU7CisgICAgICAg
IGlmICghdGhpcy5fc2VsZWN0aW9uRW5hYmxlZCkKKyAgICAgICAgICAgIHRoaXMuX3NlbGVjdEl0
ZW0obnVsbCk7CiAgICAgfQogCi0gICAgIC8vIFByaXZhdGUKKyAgICAvLyBQcm90ZWN0ZWQKIAot
ICAgIF9hZGRDb250ZW50Vmlld0Zvckl0ZW0oaXRlbSkKKyAgICBhZGRDb250ZW50Vmlld0Zvckl0
ZW0oaXRlbSkKICAgICB7CiAgICAgICAgIGlmICghdGhpcy5fY29udGVudFZpZXdDb25zdHJ1Y3Rv
cikKICAgICAgICAgICAgIHJldHVybjsKIAorICAgICAgICBpZiAodGhpcy5fY29udGVudFZpZXdN
YXAuaGFzKGl0ZW0pKSB7CisgICAgICAgICAgICBjb25zb2xlLmFzc2VydChmYWxzZSwgIkFscmVh
ZHkgYWRkZWQgQ29udGVudFZpZXcgZm9yIGl0ZW0uIiwgaXRlbSk7CisgICAgICAgICAgICByZXR1
cm47CisgICAgICAgIH0KKwogICAgICAgICBpZiAodGhpcy5fY29udGVudFBsYWNlaG9sZGVyLnBh
cmVudFZpZXcpCiAgICAgICAgICAgICB0aGlzLnJlbW92ZVN1YnZpZXcodGhpcy5fY29udGVudFBs
YWNlaG9sZGVyKTsKIAogICAgICAgICBsZXQgY29udGVudFZpZXcgPSBuZXcgdGhpcy5fY29udGVu
dFZpZXdDb25zdHJ1Y3RvcihpdGVtKTsKLQotICAgICAgICBjb250ZW50Vmlldy5hZGRFdmVudExp
c3RlbmVyKFdJLlJlc291cmNlQ29udGVudFZpZXcuRXZlbnQuQ29udGVudEVycm9yLCB0aGlzLl9o
YW5kbGVDb250ZW50RXJyb3IsIHRoaXMpOworICAgICAgICBjb25zb2xlLmFzc2VydChjb250ZW50
VmlldyBpbnN0YW5jZW9mIFdJLkNvbnRlbnRWaWV3KTsKIAogICAgICAgICBsZXQgaGFuZGxlQ2xp
Y2sgPSAoZXZlbnQpID0+IHsKICAgICAgICAgICAgIGlmIChldmVudC5idXR0b24gIT09IDAgfHwg
ZXZlbnQuY3RybEtleSkKICAgICAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgICAgIFdJ
LnNob3dSZXByZXNlbnRlZE9iamVjdChpdGVtKTsKKyAgICAgICAgICAgIGlmICh0aGlzLl9zZWxl
Y3Rpb25FbmFibGVkKQorICAgICAgICAgICAgICAgIHRoaXMuX3NlbGVjdEl0ZW0oaXRlbSk7Cisg
ICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgV0kuc2hvd1JlcHJlc2VudGVkT2JqZWN0
KGl0ZW0pOwogICAgICAgICB9OworCisgICAgICAgIHRoaXMuX2NvbnRlbnRWaWV3TWFwLnNldChp
dGVtLCBjb250ZW50Vmlldyk7CiAgICAgICAgIHRoaXMuX2hhbmRsZUNsaWNrTWFwLnNldChpdGVt
LCBoYW5kbGVDbGljayk7CiAgICAgICAgIGNvbnRlbnRWaWV3LmVsZW1lbnQuYWRkRXZlbnRMaXN0
ZW5lcigiY2xpY2siLCBoYW5kbGVDbGljayk7CiAKLSAgICAgICAgY29udGVudFZpZXcuZWxlbWVu
dC50aXRsZSA9IFdJLmRpc3BsYXlOYW1lRm9yVVJMKGl0ZW0udXJsLCBpdGVtLnVybENvbXBvbmVu
dHMpOwotCiAgICAgICAgIHRoaXMuYWRkU3Vidmlldyhjb250ZW50Vmlldyk7Ci0gICAgICAgIHRo
aXMuX2NvbnRlbnRWaWV3TWFwLnNldChpdGVtLCBjb250ZW50Vmlldyk7CisgICAgICAgIHRoaXMu
Y29udGVudFZpZXdBZGRlZChjb250ZW50Vmlldyk7CiAgICAgfQogCi0gICAgX3JlbW92ZUNvbnRl
bnRWaWV3Rm9ySXRlbShpdGVtKQorICAgIHJlbW92ZUNvbnRlbnRWaWV3Rm9ySXRlbShpdGVtKQog
ICAgIHsKICAgICAgICAgaWYgKCF0aGlzLl9jb250ZW50Vmlld0NvbnN0cnVjdG9yKQogICAgICAg
ICAgICAgcmV0dXJuOwpAQCAtMTQ4LDI3ICsxMTMsODUgQEAgV0kuQ29sbGVjdGlvbkNvbnRlbnRW
aWV3ID0gY2xhc3MgQ29sbGVjdGlvbkNvbnRlbnRWaWV3IGV4dGVuZHMgV0kuQ29udGVudFZpZXcK
IAogICAgICAgICB0aGlzLnJlbW92ZVN1YnZpZXcoY29udGVudFZpZXcpOwogICAgICAgICB0aGlz
Ll9jb250ZW50Vmlld01hcC5kZWxldGUoaXRlbSk7CisgICAgICAgIHRoaXMuY29udGVudFZpZXdS
ZW1vdmVkKGNvbnRlbnRWaWV3KTsKIAogICAgICAgICBjb250ZW50Vmlldy5yZW1vdmVFdmVudExp
c3RlbmVyKG51bGwsIG51bGwsIHRoaXMpOwogCiAgICAgICAgIGxldCBoYW5kbGVDbGljayA9IHRo
aXMuX2hhbmRsZUNsaWNrTWFwLmdldChpdGVtKTsKICAgICAgICAgY29uc29sZS5hc3NlcnQoaGFu
ZGxlQ2xpY2spOworCiAgICAgICAgIGlmIChoYW5kbGVDbGljaykgewogICAgICAgICAgICAgY29u
dGVudFZpZXcuZWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJjbGljayIsIGhhbmRsZUNsaWNr
KTsKICAgICAgICAgICAgIHRoaXMuX2hhbmRsZUNsaWNrTWFwLmRlbGV0ZShpdGVtKTsKICAgICAg
ICAgfQogCi0gICAgICAgIGlmICghdGhpcy5yZXByZXNlbnRlZE9iamVjdC5yZXNvdXJjZXMubGVu
Z3RoKQorICAgICAgICBpZiAodGhpcy5fc2VsZWN0ZWRJdGVtID09PSBpdGVtKQorICAgICAgICAg
ICAgdGhpcy5fc2VsZWN0SXRlbShudWxsKTsKKworICAgICAgICBpZiAoIXRoaXMuc3Vidmlld3Mu
bGVuZ3RoKQorICAgICAgICAgICAgdGhpcy5hZGRTdWJ2aWV3KHRoaXMuX2NvbnRlbnRQbGFjZWhv
bGRlcik7CisgICAgfQorCisgICAgY29udGVudFZpZXdBZGRlZChjb250ZW50VmlldykKKyAgICB7
CisgICAgICAgIC8vIEltcGxlbWVudGVkIGJ5IHN1YmNsYXNzZXMuCisgICAgfQorCisgICAgY29u
dGVudFZpZXdSZW1vdmVkKGNvbnRlbnRWaWV3KQorICAgIHsKKyAgICAgICAgLy8gSW1wbGVtZW50
ZWQgYnkgc3ViY2xhc3Nlcy4KKyAgICB9CisKKyAgICBpbml0aWFsTGF5b3V0KCkKKyAgICB7Cisg
ICAgICAgIGxldCBpdGVtcyA9IHRoaXMucmVwcmVzZW50ZWRPYmplY3QuaXRlbXM7CisgICAgICAg
IGlmICghaXRlbXMuc2l6ZSB8fCAhdGhpcy5fY29udGVudFZpZXdDb25zdHJ1Y3RvcikgewogICAg
ICAgICAgICAgdGhpcy5hZGRTdWJ2aWV3KHRoaXMuX2NvbnRlbnRQbGFjZWhvbGRlcik7CisgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBmb3IgKGxldCBpdGVtIG9mIGl0
ZW1zKQorICAgICAgICAgICAgdGhpcy5hZGRDb250ZW50Vmlld0Zvckl0ZW0oaXRlbSk7CiAgICAg
fQogCisgICAgYXR0YWNoZWQoKQorICAgIHsKKyAgICAgICAgc3VwZXIuYXR0YWNoZWQoKTsKKwor
ICAgICAgICB0aGlzLnJlcHJlc2VudGVkT2JqZWN0LmFkZEV2ZW50TGlzdGVuZXIoV0kuQ29sbGVj
dGlvbi5FdmVudC5JdGVtQWRkZWQsIHRoaXMuX2hhbmRsZUl0ZW1BZGRlZCwgdGhpcyk7CisgICAg
ICAgIHRoaXMucmVwcmVzZW50ZWRPYmplY3QuYWRkRXZlbnRMaXN0ZW5lcihXSS5Db2xsZWN0aW9u
LkV2ZW50Lkl0ZW1SZW1vdmVkLCB0aGlzLl9oYW5kbGVJdGVtUmVtb3ZlZCwgdGhpcyk7CisKKyAg
ICAgICAgZm9yIChsZXQgaXRlbSBvZiB0aGlzLl9jb250ZW50Vmlld01hcC5rZXlzKCkpIHsKKyAg
ICAgICAgICAgIGlmICghdGhpcy5yZXByZXNlbnRlZE9iamVjdC5pdGVtcy5oYXMoaXRlbSkpIHsK
KyAgICAgICAgICAgICAgICB0aGlzLnJlbW92ZUNvbnRlbnRWaWV3Rm9ySXRlbShpdGVtKTsKKyAg
ICAgICAgICAgICAgICBpZiAodGhpcy5fc2VsZWN0ZWRJdGVtID09PSBpdGVtKSB7CisgICAgICAg
ICAgICAgICAgICAgIHRoaXMuX3NlbGVjdEl0ZW0obnVsbCk7CisgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgZm9yIChsZXQgaXRlbSBvZiB0aGlz
LnJlcHJlc2VudGVkT2JqZWN0Lml0ZW1zKSB7CisgICAgICAgICAgICBpZiAoIXRoaXMuX2NvbnRl
bnRWaWV3TWFwLmhhcyhpdGVtKSkKKyAgICAgICAgICAgICAgICB0aGlzLmFkZENvbnRlbnRWaWV3
Rm9ySXRlbShpdGVtKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGRldGFjaGVkKCkKKyAgICB7
CisgICAgICAgIHRoaXMucmVwcmVzZW50ZWRPYmplY3QucmVtb3ZlRXZlbnRMaXN0ZW5lcihudWxs
LCBudWxsLCB0aGlzKTsKKworICAgICAgICBzdXBlci5kZXRhY2hlZCgpOworICAgIH0KKworICAg
ICAvLyBQcml2YXRlCisKICAgICBfaGFuZGxlSXRlbUFkZGVkKGV2ZW50KQogICAgIHsKICAgICAg
ICAgbGV0IGl0ZW0gPSBldmVudC5kYXRhLml0ZW07CiAgICAgICAgIGlmICghaXRlbSkKICAgICAg
ICAgICAgIHJldHVybjsKIAotICAgICAgICB0aGlzLl9hZGRDb250ZW50Vmlld0Zvckl0ZW0oaXRl
bSk7CisgICAgICAgIHRoaXMuYWRkQ29udGVudFZpZXdGb3JJdGVtKGl0ZW0pOwogICAgIH0KIAog
ICAgIF9oYW5kbGVJdGVtUmVtb3ZlZChldmVudCkKQEAgLTE3Nyw3ICsyMDAsNyBAQCBXSS5Db2xs
ZWN0aW9uQ29udGVudFZpZXcgPSBjbGFzcyBDb2xsZWN0aW9uQ29udGVudFZpZXcgZXh0ZW5kcyBX
SS5Db250ZW50VmlldwogICAgICAgICBpZiAoIWl0ZW0pCiAgICAgICAgICAgICByZXR1cm47CiAK
LSAgICAgICAgdGhpcy5fcmVtb3ZlQ29udGVudFZpZXdGb3JJdGVtKGl0ZW0pOworICAgICAgICB0
aGlzLnJlbW92ZUNvbnRlbnRWaWV3Rm9ySXRlbShpdGVtKTsKICAgICB9CiAKICAgICBfaGFuZGxl
Q29udGVudEVycm9yKGV2ZW50KQpAQCAtMTg1LDQgKzIwOCw0OSBAQCBXSS5Db2xsZWN0aW9uQ29u
dGVudFZpZXcgPSBjbGFzcyBDb2xsZWN0aW9uQ29udGVudFZpZXcgZXh0ZW5kcyBXSS5Db250ZW50
VmlldwogICAgICAgICBpZiAoZXZlbnQgJiYgZXZlbnQudGFyZ2V0KQogICAgICAgICAgICAgdGhp
cy5fcmVtb3ZlQ29udGVudFZpZXdGb3JJdGVtKGV2ZW50LnRhcmdldC5yZXByZXNlbnRlZE9iamVj
dCk7CiAgICAgfQorCisgICAgX2RlZmF1bHRUaXRsZSgpCisgICAgeworICAgICAgICBsZXQgdHlw
ZVZlcmlmaWVyID0gdGhpcy5yZXByZXNlbnRlZE9iamVjdC50eXBlVmVyaWZpZXI7CisKKyAgICAg
ICAgc3dpdGNoICh0eXBlVmVyaWZpZXIpIHsKKyAgICAgICAgY2FzZSBXSS5Db2xsZWN0aW9uLlR5
cGVWZXJpZmllci5GcmFtZToKKyAgICAgICAgICAgIHJldHVybiBXSS5VSVN0cmluZygiRnJhbWVz
Iik7CisgICAgICAgIGNhc2UgV0kuQ29sbGVjdGlvbi5UeXBlVmVyaWZpZXIuUmVzb3VyY2U6Cisg
ICAgICAgICAgICByZXR1cm4gV0kuVUlTdHJpbmcoIlJlc291cmNlcyIpOworICAgICAgICBjYXNl
IFdJLkNvbGxlY3Rpb24uVHlwZVZlcmlmaWVyLlNjcmlwdDoKKyAgICAgICAgICAgIHJldHVybiBX
SS5VSVN0cmluZygiU2NyaXB0cyIpOworICAgICAgICBjYXNlIFdJLkNvbGxlY3Rpb24uVHlwZVZl
cmlmaWVyLkNTU1N0eWxlU2hlZXQ6CisgICAgICAgICAgICByZXR1cm4gV0kuVUlTdHJpbmcoIlN0
eWxlc2hlZXRzIik7CisgICAgICAgIGNhc2UgV0kuQ29sbGVjdGlvbi5UeXBlVmVyaWZpZXIuQ2Fu
dmFzOgorICAgICAgICAgICAgcmV0dXJuIFdJLlVJU3RyaW5nKCJDYW52YXNlcyIpOworICAgICAg
ICBjYXNlIFdJLkNvbGxlY3Rpb24uVHlwZVZlcmlmaWVyLlNoYWRlclByb2dyYW06CisgICAgICAg
ICAgICByZXR1cm4gV0kuVUlTdHJpbmcoIlNoYWRlciBQcm9ncmFtcyIpOworICAgICAgICB9CisK
KyAgICAgICAgY29uc29sZS53YXJuKCJObyBkZWZhdWx0IHRpdGxlIGZvciBDb2xsZWN0aW9uIHR5
cGUgdmVyaWZpZXIuIiwgdHlwZVZlcmlmaWVyKTsKKyAgICAgICAgcmV0dXJuIFdJLlVJU3RyaW5n
KCJDb2xsZWN0aW9uIik7CisgICAgfQorCisgICAgX3NlbGVjdEl0ZW0oaXRlbSkKKyAgICB7Cisg
ICAgICAgIGlmICh0aGlzLl9zZWxlY3RlZEl0ZW0gPT09IGl0ZW0pCisgICAgICAgICAgICByZXR1
cm47CisKKyAgICAgICAgaWYgKHRoaXMuX3NlbGVjdGVkSXRlbSkgeworICAgICAgICAgICAgbGV0
IGNvbnRlbnRWaWV3ID0gdGhpcy5fY29udGVudFZpZXdNYXAuZ2V0KHRoaXMuX3NlbGVjdGVkSXRl
bSk7CisgICAgICAgICAgICBjb25zb2xlLmFzc2VydChjb250ZW50Vmlldyk7CisgICAgICAgICAg
ICBjb250ZW50Vmlldy5jbGFzc0xpc3QucmVtb3ZlKCJzZWxlY3RlZCIpOworICAgICAgICB9CisK
KyAgICAgICAgdGhpcy5fc2VsZWN0ZWRJdGVtID0gaXRlbTsKKworICAgICAgICBpZiAodGhpcy5f
c2VsZWN0ZWRJdGVtKSB7CisgICAgICAgICAgICBsZXQgc2VsZWN0ZWRDb250ZW50VmlldyA9IHRo
aXMuX2NvbnRlbnRWaWV3TWFwLmdldCh0aGlzLl9zZWxlY3RlZEl0ZW0pOworICAgICAgICAgICAg
Y29uc29sZS5hc3NlcnQoc2VsZWN0ZWRDb250ZW50Vmlldyk7CisgICAgICAgICAgICBzZWxlY3Rl
ZENvbnRlbnRWaWV3LmNsYXNzTGlzdC5hZGQoInNlbGVjdGVkIik7CisgICAgICAgIH0KKworICAg
ICAgICB0aGlzLmRpc3BhdGNoVG9FdmVudExpc3RlbmVycyhXSS5Db250ZW50Vmlldy5FdmVudC5T
dXBwbGVtZW50YWxSZXByZXNlbnRlZE9iamVjdHNEaWRDaGFuZ2UpOworICAgIH0KIH07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Db250ZW50
Vmlldy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvbnRl
bnRWaWV3LmpzCmluZGV4IDUwMjczODRiZmMwYTc0MTgyN2ZmMzA1MzEwZTYxZWVmMTk4NWY3ODMu
LjIxZTc2OGFhNDcwM2EyZjcxZjZmYjIyYWYwNWM1NDczYTk3MjQwYTIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvbnRlbnRWaWV3LmpzCisr
KyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvbnRlbnRWaWV3
LmpzCkBAIC0xNjEsNiArMTYxLDkgQEAgV0kuQ29udGVudFZpZXcgPSBjbGFzcyBDb250ZW50Vmll
dyBleHRlbmRzIFdJLlZpZXcKICAgICAgICAgaWYgKHJlcHJlc2VudGVkT2JqZWN0IGluc3RhbmNl
b2YgV0kuUmVjb3JkaW5nKQogICAgICAgICAgICAgcmV0dXJuIG5ldyBXSS5SZWNvcmRpbmdDb250
ZW50VmlldyhyZXByZXNlbnRlZE9iamVjdCwgZXh0cmFBcmd1bWVudHMpOwogCisgICAgICAgIGlm
IChyZXByZXNlbnRlZE9iamVjdCBpbnN0YW5jZW9mIFdJLlJlc291cmNlQ29sbGVjdGlvbikKKyAg
ICAgICAgICAgIHJldHVybiBuZXcgV0kuUmVzb3VyY2VDb2xsZWN0aW9uQ29udGVudFZpZXcocmVw
cmVzZW50ZWRPYmplY3QsIGV4dHJhQXJndW1lbnRzKTsKKwogICAgICAgICBpZiAocmVwcmVzZW50
ZWRPYmplY3QgaW5zdGFuY2VvZiBXSS5Db2xsZWN0aW9uKQogICAgICAgICAgICAgcmV0dXJuIG5l
dyBXSS5Db2xsZWN0aW9uQ29udGVudFZpZXcocmVwcmVzZW50ZWRPYmplY3QsIGV4dHJhQXJndW1l
bnRzKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
Vmlld3MvUmVzb3VyY2VDb2xsZWN0aW9uQ29udGVudFZpZXcuanMgYi9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9SZXNvdXJjZUNvbGxlY3Rpb25Db250ZW50Vmlldy5q
cwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi4yOGI5ZjkyZWE0OTI3MWEwZjhhYTg5MjU3MjI0ZTdiYmFiYTI0ZmY5Ci0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmll
d3MvUmVzb3VyY2VDb2xsZWN0aW9uQ29udGVudFZpZXcuanMKQEAgLTAsMCArMSw2MSBAQAorLyoK
KyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywg
d2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQg
dGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3Vt
ZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmli
dXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFO
RCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJ
RUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1Q
TElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJU
SUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5U
IE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKK1dJLlJlc291cmNlQ29sbGVjdGlvbkNvbnRlbnRWaWV3ID0gY2xhc3MgUmVzb3Vy
Y2VDb2xsZWN0aW9uQ29udGVudFZpZXcgZXh0ZW5kcyBXSS5Db2xsZWN0aW9uQ29udGVudFZpZXcK
K3sKKyAgICBjb25zdHJ1Y3Rvcihjb2xsZWN0aW9uKQorICAgIHsKKyAgICAgICAgY29uc29sZS5h
c3NlcnQoY29sbGVjdGlvbiBpbnN0YW5jZW9mIFdJLlJlc291cmNlQ29sbGVjdGlvbik7CisKKyAg
ICAgICAgbGV0IGNvbnRlbnRWaWV3Q29uc3RydWN0b3IgPSBudWxsOworICAgICAgICBpZiAoY29s
bGVjdGlvbi5yZXNvdXJjZVR5cGUgPT09IFdJLlJlc291cmNlLlR5cGUuSW1hZ2UpCisgICAgICAg
ICAgICBjb250ZW50Vmlld0NvbnN0cnVjdG9yID0gV0kuSW1hZ2VSZXNvdXJjZUNvbnRlbnRWaWV3
OworCisgICAgICAgIGxldCB0aXRsZSA9IFdJLlJlc291cmNlLmRpc3BsYXlOYW1lRm9yVHlwZShj
b2xsZWN0aW9uLnJlc291cmNlVHlwZSwgdHJ1ZSk7CisKKyAgICAgICAgc3VwZXIoY29sbGVjdGlv
biwgY29udGVudFZpZXdDb25zdHJ1Y3RvciwgdGl0bGUpOworICAgIH0KKworICAgIC8vIFByb3Rl
Y3RlZAorCisgICAgY29udGVudFZpZXdBZGRlZChjb250ZW50VmlldykKKyAgICB7CisgICAgICAg
IGNvbnNvbGUuYXNzZXJ0KGNvbnRlbnRWaWV3IGluc3RhbmNlb2YgV0kuUmVzb3VyY2VDb250ZW50
Vmlldyk7CisKKyAgICAgICAgbGV0IHJlc291cmNlID0gY29udGVudFZpZXcucmVwcmVzZW50ZWRP
YmplY3Q7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHJlc291cmNlIGluc3RhbmNlb2YgV0kuUmVz
b3VyY2UpOworCisgICAgICAgIGNvbnRlbnRWaWV3LmFkZEV2ZW50TGlzdGVuZXIoV0kuUmVzb3Vy
Y2VDb250ZW50Vmlldy5FdmVudC5Db250ZW50RXJyb3IsIHRoaXMuX2hhbmRsZUNvbnRlbnRFcnJv
ciwgdGhpcyk7CisgICAgICAgIGNvbnRlbnRWaWV3LmVsZW1lbnQudGl0bGUgPSBXSS5kaXNwbGF5
TmFtZUZvclVSTChyZXNvdXJjZS51cmwsIHJlc291cmNlLnVybENvbXBvbmVudHMpOworICAgIH0K
KworICAgIC8vIFByaXZhdGUKKworICAgIF9oYW5kbGVDb250ZW50RXJyb3IoZXZlbnQpCisgICAg
eworICAgICAgICBpZiAoZXZlbnQgJiYgZXZlbnQudGFyZ2V0KQorICAgICAgICAgICAgdGhpcy5y
ZW1vdmVDb250ZW50Vmlld0Zvckl0ZW0oZXZlbnQudGFyZ2V0LnJlcHJlc2VudGVkT2JqZWN0KTsK
KyAgICB9Cit9Owo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>321971</attachid>
            <date>2017-09-27 10:28:13 -0700</date>
            <delta_ts>2017-09-27 13:00:56 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-177419-20170927102812.patch</filename>
            <type>text/plain</type>
            <size>21186</size>
            <attacher name="Matt Baker">mattbaker</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIyNTU2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwppbmRleCAz
Y2Y5ODU4YzEwZjMwMTYxYTkyZTAyOTk4N2MyMzhkZDBiMWQ2ZDUwLi41MzY2OWU3ZjAyMzZlNDg4
NjlmMzM3NWE2ZmE0YWJhMzhjNmI5MGQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw2NyBAQAorMjAxNy0wOS0yNyAgTWF0dCBCYWtlciAgPG1hdHRiYWtlckBhcHBsZS5jb20+
CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogQ3JlYXRlIFJlc291cmNlQ29sbGVjdGlvbkNvbnRl
bnRWaWV3IGFuZCBtYWtlIENvbGxlY3Rpb25Db250ZW50VmlldyBlYXNpZXIgdG8gZXh0ZW5kCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzc0MTkKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBDb2xsZWN0aW9u
Q29udGVudFZpZXcgc2hvdWxkIGJlIGdlbmVyaWMsIHdvcmsgd2l0aCBhbnkgcmVwcmVzZW50ZWQg
b2JqZWN0CisgICAgICAgIENvbGxlY3Rpb24sIGFuZCBub3QgcGVyZm9ybSBhbnkgdHlwZSBjaGVj
a2luZy4gSXQgc2hvdWxkIGp1c3QgbWFwIGl0ZW1zCisgICAgICAgIHRvIENvbnRlbnRWaWV3cyB1
c2luZyB0aGUgcHJvdmlkZWQgQ29udGVudFZpZXcgY29uc3RydWN0b3IuCisKKyAgICAgICAgVGhl
IGJlaGF2aW9yIHdoZW4gY2xpY2tpbmcgYSBDb250ZW50VmlldyBpbiB0aGUgY29sbGVjdGlvbiBo
YXMgYmVlbiBleHRlbmRlZC4KKyAgICAgICAgSWYgc2VsZWN0aW9uIGlzIGVuYWJsZWQsIGNsaWNr
aW5nIGEgQ29udGVudFZpZXcgd2lsbCBjYXVzZSBhICJzZWxlY3RlZCIgY2xhc3MKKyAgICAgICAg
dG8gYmUgYXBwbGllZCB0byBpdHMgZWxlbWVudCwgYW5kIGEgU3VwcGxlbWVudGFsUmVwcmVzZW50
ZWRPYmplY3RzRGlkQ2hhbmdlCisgICAgICAgIGV2ZW50IGlzIGRpc3BhdGNoZWQuCisKKyAgICAg
ICAgKiBVc2VySW50ZXJmYWNlL01haW4uaHRtbDoKKyAgICAgICAgTmV3IGZpbGUsIG1vdmUgQ29s
bGVjdGlvbkNvbnRlbnRWaWV3IGFib3ZlIHN1YmNsYXNzZXMuCisKKyAgICAgICAgKiBVc2VySW50
ZXJmYWNlL01vZGVscy9SZXNvdXJjZUNvbGxlY3Rpb24uanM6CisgICAgICAgIChXSS5SZXNvdXJj
ZUNvbGxlY3Rpb24ucHJvdG90eXBlLmdldCByZXNvdXJjZVR5cGUpOgorICAgICAgICBNYWtlIHJl
c291cmNlIHR5cGUgcHVibGljbHkgYXZhaWxhYmxlLgorCisgICAgICAgICogVXNlckludGVyZmFj
ZS9WaWV3cy9Db2xsZWN0aW9uQ29udGVudFZpZXcuanM6CisgICAgICAgIE1vdmUgdHlwZSBjaGVj
a2luZyBvZiB0aGUgY29sbGVjdGlvbiBvdXQgb2YgdGhlIGJhc2UgY2xhc3MgYW5kIGFzc2VydAor
ICAgICAgICB0aGF0IENvbnRlbnRWaWV3cyBhcmUgY3JlYXRlZCB3aGVuIGludm9raW5nIGBjb250
ZW50Vmlld0NvbnN0cnVjdG9yYC4KKworICAgICAgICAqIExvY2FsaXphdGlvbnMvZW4ubHByb2ov
bG9jYWxpemVkU3RyaW5ncy5qczoKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL01haW4uaHRtbDoK
KworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvTW9kZWxzL1Jlc291cmNlQ29sbGVjdGlvbi5qczoK
KyAgICAgICAgKFdJLlJlc291cmNlQ29sbGVjdGlvbi5wcm90b3R5cGUuZ2V0IHJlc291cmNlVHlw
ZSk6CisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL0NvbGxlY3Rpb25Db250ZW50Vmll
dy5qczoKKyAgICAgICAgKFdJLkNvbGxlY3Rpb25Db250ZW50Vmlldyk6CisgICAgICAgIChXSS5D
b2xsZWN0aW9uQ29udGVudFZpZXcucHJvdG90eXBlLmdldCBzdXBwbGVtZW50YWxSZXByZXNlbnRl
ZE9iamVjdHMpOgorICAgICAgICAoV0kuQ29sbGVjdGlvbkNvbnRlbnRWaWV3LnByb3RvdHlwZS5n
ZXQgc2VsZWN0aW9uRW5hYmxlZCk6CisgICAgICAgIChXSS5Db2xsZWN0aW9uQ29udGVudFZpZXcu
cHJvdG90eXBlLnNldCBzZWxlY3Rpb25FbmFibGVkKToKKyAgICAgICAgKFdJLkNvbGxlY3Rpb25D
b250ZW50Vmlldy5wcm90b3R5cGUuYWRkQ29udGVudFZpZXdGb3JJdGVtKToKKyAgICAgICAgKFdJ
LkNvbGxlY3Rpb25Db250ZW50Vmlldy5wcm90b3R5cGUucmVtb3ZlQ29udGVudFZpZXdGb3JJdGVt
KToKKyAgICAgICAgKFdJLkNvbGxlY3Rpb25Db250ZW50Vmlldy5wcm90b3R5cGUuY29udGVudFZp
ZXdBZGRlZCk6CisgICAgICAgIChXSS5Db2xsZWN0aW9uQ29udGVudFZpZXcucHJvdG90eXBlLmNv
bnRlbnRWaWV3UmVtb3ZlZCk6CisgICAgICAgIChXSS5Db2xsZWN0aW9uQ29udGVudFZpZXcucHJv
dG90eXBlLmluaXRpYWxMYXlvdXQpOgorICAgICAgICAoV0kuQ29sbGVjdGlvbkNvbnRlbnRWaWV3
LnByb3RvdHlwZS5hdHRhY2hlZCk6CisgICAgICAgIChXSS5Db2xsZWN0aW9uQ29udGVudFZpZXcu
cHJvdG90eXBlLmRldGFjaGVkKToKKyAgICAgICAgKFdJLkNvbGxlY3Rpb25Db250ZW50Vmlldy5w
cm90b3R5cGUuX2hhbmRsZUl0ZW1BZGRlZCk6CisgICAgICAgIChXSS5Db2xsZWN0aW9uQ29udGVu
dFZpZXcucHJvdG90eXBlLl9oYW5kbGVJdGVtUmVtb3ZlZCk6CisgICAgICAgIChXSS5Db2xsZWN0
aW9uQ29udGVudFZpZXcucHJvdG90eXBlLl9kZWZhdWx0VGl0bGUpOgorICAgICAgICAoV0kuQ29s
bGVjdGlvbkNvbnRlbnRWaWV3LnByb3RvdHlwZS5fc2VsZWN0SXRlbSk6CisgICAgICAgIChXSS5D
b2xsZWN0aW9uQ29udGVudFZpZXcucHJvdG90eXBlLl9hZGRDb250ZW50Vmlld0Zvckl0ZW0pOiBE
ZWxldGVkLgorICAgICAgICAoV0kuQ29sbGVjdGlvbkNvbnRlbnRWaWV3LnByb3RvdHlwZS5fcmVt
b3ZlQ29udGVudFZpZXdGb3JJdGVtKTogRGVsZXRlZC4KKworICAgICAgICAqIFVzZXJJbnRlcmZh
Y2UvVmlld3MvQ29udGVudFZpZXcuanM6CisgICAgICAgIChXSS5Db250ZW50Vmlldy5jcmVhdGVG
cm9tUmVwcmVzZW50ZWRPYmplY3QpOgorICAgICAgICBDcmVhdGUgYSBSZXNvdXJjZUNvbGxlY3Rp
b25Db250ZW50Vmlldy4gSW4gdGhlIGZ1dHVyZSwgYWRkaXRpb25hbAorICAgICAgICBDb2xsZWN0
aW9uIHR5cGVzIGNhbiBiZSBtYXBwZWQgdG8gdGhlaXIgYXNzb2NpYXRlZCBDb2xsZWN0aW9uQ29u
dGVudFZpZXcuCisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL1Jlc291cmNlQ29sbGVj
dGlvbkNvbnRlbnRWaWV3LmpzOiBBZGRlZC4KKyAgICAgICAgTmV3IGNsYXNzIGZvciByZXNvdXJj
ZS1zcGVjaWZpYyBsb2dpYyBwcmV2aW91c2x5IGluIENvbGxlY3Rpb25Db250ZW50Vmlldy4KKyAg
ICAgICAgKFdJLlJlc291cmNlQ29sbGVjdGlvbkNvbnRlbnRWaWV3KToKKyAgICAgICAgKFdJLlJl
c291cmNlQ29sbGVjdGlvbkNvbnRlbnRWaWV3LnByb3RvdHlwZS5jb250ZW50Vmlld0FkZGVkKToK
KyAgICAgICAgKFdJLlJlc291cmNlQ29sbGVjdGlvbkNvbnRlbnRWaWV3LnByb3RvdHlwZS5faGFu
ZGxlQ29udGVudEVycm9yKToKKyAgICAgICAgUmVtb3ZlIENvbnRlbnRWaWV3IHdpdGhvdXQgcmVt
b3ZpbmcgdGhlIHJlc291cmNlIGZyb20gaXRzIGNvbGxlY3Rpb24uCisKIDIwMTctMDktMjcgIEZ1
amlpIEhpcm9ub3JpICA8SGlyb25vcmkuRnVqaWlAc29ueS5jb20+CiAKICAgICAgICAgW0dUS10g
V2ViIEluc3BlY3RvcjogQWRkIENhbnZhczJELnN2ZyBhbmQgQ2FudmFzM0Quc3ZnCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvTG9jYWxpemF0aW9ucy9lbi5scHJvai9sb2NhbGl6
ZWRTdHJpbmdzLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0xvY2FsaXphdGlvbnMvZW4ubHBy
b2ovbG9jYWxpemVkU3RyaW5ncy5qcwppbmRleCA3ZTgxZDkxNzBkY2U2NDZhODE1NmFlNzViNDMz
NDcwZTlhNGUzOWM4Li5iNDllYTJmYjc2YjdiOWYzZGU4MjM4ZThlNmY1YjkzODE3YWQ1ZmI1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvTG9jYWxpemF0aW9ucy9lbi5scHJvai9s
b2NhbGl6ZWRTdHJpbmdzLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Mb2NhbGl6YXRp
b25zL2VuLmxwcm9qL2xvY2FsaXplZFN0cmluZ3MuanMKQEAgLTIwNCw2ICsyMDQsNyBAQCBsb2Nh
bGl6ZWRTdHJpbmdzWyJDb2RlIl0gPSAiQ29kZSI7CiBsb2NhbGl6ZWRTdHJpbmdzWyJDb2xsYXBz
ZSBBbGwiXSA9ICJDb2xsYXBzZSBBbGwiOwogbG9jYWxpemVkU3RyaW5nc1siQ29sbGFwc2UgY29s
dW1ucyJdID0gIkNvbGxhcHNlIGNvbHVtbnMiOwogbG9jYWxpemVkU3RyaW5nc1siQ29sbGVjdCBn
YXJiYWdlIl0gPSAiQ29sbGVjdCBnYXJiYWdlIjsKK2xvY2FsaXplZFN0cmluZ3NbIkNvbGxlY3Rp
b24iXSA9ICJDb2xsZWN0aW9uIjsKIGxvY2FsaXplZFN0cmluZ3NbIkNvbG9yIl0gPSAiQ29sb3Ii
OwogbG9jYWxpemVkU3RyaW5nc1siQ29tbWVudCJdID0gIkNvbW1lbnQiOwogbG9jYWxpemVkU3Ry
aW5nc1siQ29tbWVudCBBbGwgUHJvcGVydGllcyJdID0gIkNvbW1lbnQgQWxsIFByb3BlcnRpZXMi
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTWFpbi5o
dG1sIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTWFpbi5odG1sCmluZGV4
IGFjYjAyZjZlY2RiZDQ2MDFmNThkZWMwMWM1NzY3MmM5MjgzYmFjYzMuLmM5MDYxMGI3YTIzYjA0
ODA5NDhjNjU4OTZjNjE5ZTdkZmZiZWVjNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL01haW4uaHRtbAorKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9NYWluLmh0bWwKQEAgLTUyMiw2ICs1MjIsOCBAQAogICAgIDxzY3JpcHQg
c3JjPSJWaWV3cy9TZXR0aW5nc0dyb3VwLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0i
Vmlld3MvU2V0dGluZ3NWaWV3LmpzIj48L3NjcmlwdD4KIAorICAgIDxzY3JpcHQgc3JjPSJWaWV3
cy9Db2xsZWN0aW9uQ29udGVudFZpZXcuanMiPjwvc2NyaXB0PgorCiAgICAgPHNjcmlwdCBzcmM9
IlZpZXdzL0FjdGl2YXRlQnV0dG9uTmF2aWdhdGlvbkl0ZW0uanMiPjwvc2NyaXB0PgogICAgIDxz
Y3JpcHQgc3JjPSJWaWV3cy9BY3RpdmF0ZUJ1dHRvblRvb2xiYXJJdGVtLmpzIj48L3NjcmlwdD4K
ICAgICA8c2NyaXB0IHNyYz0iVmlld3MvQXBwbGljYXRpb25DYWNoZURldGFpbHNTaWRlYmFyUGFu
ZWwuanMiPjwvc2NyaXB0PgpAQCAtNTUwLDcgKzU1Miw2IEBACiAgICAgPHNjcmlwdCBzcmM9IlZp
ZXdzL0NvZGVNaXJyb3JGb3JtYXR0ZXJzLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0i
Vmlld3MvQ29kZU1pcnJvclJlZ2V4TW9kZS5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9
IlZpZXdzL0NvZGVNaXJyb3JUZXh0TWFya2Vycy5qcyI+PC9zY3JpcHQ+Ci0gICAgPHNjcmlwdCBz
cmM9IlZpZXdzL0NvbGxlY3Rpb25Db250ZW50Vmlldy5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlw
dCBzcmM9IlZpZXdzL0NvbG9yUGlja2VyLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0i
Vmlld3MvQ29sb3JXaGVlbC5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IlZpZXdzL0Nv
bXBsZXRpb25TdWdnZXN0aW9uc1ZpZXcuanMiPjwvc2NyaXB0PgpAQCAtNjgyLDYgKzY4Myw3IEBA
CiAgICAgPHNjcmlwdCBzcmM9IlZpZXdzL1JlbmRlcmluZ0ZyYW1lVGltZWxpbmVWaWV3LmpzIj48
L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iVmlld3MvUmVzaXplci5qcyI+PC9zY3JpcHQ+CiAg
ICAgPHNjcmlwdCBzcmM9IlZpZXdzL1Jlc291cmNlQ2x1c3RlckNvbnRlbnRWaWV3LmpzIj48L3Nj
cmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iVmlld3MvUmVzb3VyY2VDb2xsZWN0aW9uQ29udGVudFZp
ZXcuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJWaWV3cy9SZXNvdXJjZURldGFpbHNT
aWRlYmFyUGFuZWwuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJWaWV3cy9SZXNvdXJj
ZVNpZGViYXJQYW5lbC5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IlZpZXdzL1Jlc291
cmNlVGltZWxpbmVEYXRhR3JpZE5vZGUuanMiPjwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL1Jlc291cmNlQ29sbGVjdGlvbi5q
cyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9SZXNvdXJjZUNv
bGxlY3Rpb24uanMKaW5kZXggMjMxYTlhMDhlODE5YjM4YzMwMDJlNTFlNjY0ZmZjZGRhYzNkNDBh
MC4uY2Q3OTZiOGQyNGNjMDY3OGUzYmQ0YmJhYzljNTc5ZjJmNGQ3MDliZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL1Jlc291cmNlQ29sbGVj
dGlvbi5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMv
UmVzb3VyY2VDb2xsZWN0aW9uLmpzCkBAIC02NCw2ICs2NCw4IEBAIFdJLlJlc291cmNlQ29sbGVj
dGlvbiA9IGNsYXNzIFJlc291cmNlQ29sbGVjdGlvbiBleHRlbmRzIFdJLkNvbGxlY3Rpb24KIAog
ICAgIC8vIFB1YmxpYwogCisgICAgZ2V0IHJlc291cmNlVHlwZSgpIHsgcmV0dXJuIHRoaXMuX3Jl
c291cmNlVHlwZTsgfQorCiAgICAgcmVzb3VyY2VGb3JVUkwodXJsKQogICAgIHsKICAgICAgICAg
cmV0dXJuIHRoaXMuX3Jlc291cmNlVVJMTWFwLmdldCh1cmwpIHx8IG51bGw7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Db2xsZWN0aW9uQ29u
dGVudFZpZXcuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9D
b2xsZWN0aW9uQ29udGVudFZpZXcuanMKaW5kZXggMDM3MmQxMzcwZjZiYmVjN2M4MjFlNjlkMjkw
MDYzYTQ5MzZlMjNlYS4uZjcwNzI4M2Y2MGEzYzVjMjA5OGVhY2RmZDFiNGVjOWE0ZjgxY2Y5YiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ29s
bGVjdGlvbkNvbnRlbnRWaWV3LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL1ZpZXdzL0NvbGxlY3Rpb25Db250ZW50Vmlldy5qcwpAQCAtMjUsMTE4ICsyNSw4MyBA
QAogCiBXSS5Db2xsZWN0aW9uQ29udGVudFZpZXcgPSBjbGFzcyBDb2xsZWN0aW9uQ29udGVudFZp
ZXcgZXh0ZW5kcyBXSS5Db250ZW50VmlldwogewotICAgIGNvbnN0cnVjdG9yKGNvbGxlY3Rpb24p
CisgICAgY29uc3RydWN0b3IoY29sbGVjdGlvbiwgY29udGVudFZpZXdDb25zdHJ1Y3RvciwgY29u
dGVudFBsYWNlaG9sZXJUZXh0KQogICAgIHsKICAgICAgICAgY29uc29sZS5hc3NlcnQoY29sbGVj
dGlvbiBpbnN0YW5jZW9mIFdJLkNvbGxlY3Rpb24pOwogCiAgICAgICAgIHN1cGVyKGNvbGxlY3Rp
b24pOwogCi0gICAgICAgIHRoaXMucmVwcmVzZW50ZWRPYmplY3QuYWRkRXZlbnRMaXN0ZW5lcihX
SS5Db2xsZWN0aW9uLkV2ZW50Lkl0ZW1BZGRlZCwgdGhpcy5faGFuZGxlSXRlbUFkZGVkLCB0aGlz
KTsKLSAgICAgICAgdGhpcy5yZXByZXNlbnRlZE9iamVjdC5hZGRFdmVudExpc3RlbmVyKFdJLkNv
bGxlY3Rpb24uRXZlbnQuSXRlbVJlbW92ZWQsIHRoaXMuX2hhbmRsZUl0ZW1SZW1vdmVkLCB0aGlz
KTsKKyAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5hZGQoImNvbGxlY3Rpb24iKTsKIAot
ICAgICAgICB0aGlzLl9jb250ZW50Vmlld01hcCA9IG5ldyBXZWFrTWFwOworICAgICAgICB0aGlz
Ll9jb250ZW50UGxhY2Vob2xkZXIgPSBuZXcgV0kuVGl0bGVWaWV3KGNvbnRlbnRQbGFjZWhvbGVy
VGV4dCB8fCB0aGlzLl9kZWZhdWx0VGl0bGUoKSk7CisgICAgICAgIHRoaXMuX2NvbnRlbnRWaWV3
Q29uc3RydWN0b3IgPSBjb250ZW50Vmlld0NvbnN0cnVjdG9yOworICAgICAgICB0aGlzLl9jb250
ZW50Vmlld01hcCA9IG5ldyBNYXA7CiAgICAgICAgIHRoaXMuX2hhbmRsZUNsaWNrTWFwID0gbmV3
IFdlYWtNYXA7CisgICAgICAgIHRoaXMuX3NlbGVjdGVkSXRlbSA9IG51bGw7CisgICAgICAgIHRo
aXMuX3NlbGVjdGlvbkVuYWJsZWQgPSBmYWxzZTsKKyAgICB9CiAKLSAgICAgICAgdGhpcy5fY29u
dGVudFZpZXdDb25zdHJ1Y3RvciA9IG51bGw7Ci0gICAgICAgIGxldCB0aXRsZSA9ICIiOwotICAg
ICAgICBzd2l0Y2ggKHRoaXMucmVwcmVzZW50ZWRPYmplY3QudHlwZVZlcmlmaWVyKSB7Ci0gICAg
ICAgIGNhc2UgV0kuQ29sbGVjdGlvbi5UeXBlVmVyaWZpZXIuRnJhbWU6Ci0gICAgICAgICAgICB0
aXRsZSA9IFdJLlVJU3RyaW5nKCJGcmFtZXMiKTsKLSAgICAgICAgICAgIGJyZWFrOwotCi0gICAg
ICAgIGNhc2UgV0kuQ29sbGVjdGlvbi5UeXBlVmVyaWZpZXIuU2NyaXB0OgotICAgICAgICAgICAg
dGl0bGUgPSBXSS5VSVN0cmluZygiRXh0cmEgU2NyaXB0cyIpOwotICAgICAgICAgICAgYnJlYWs7
Ci0KLSAgICAgICAgY2FzZSBXSS5Db2xsZWN0aW9uLlR5cGVWZXJpZmllci5SZXNvdXJjZToKLSAg
ICAgICAgICAgIHRpdGxlID0gV0kuVUlTdHJpbmcoIlJlc291cmNlIik7Ci0gICAgICAgICAgICBi
cmVhazsKLQotICAgICAgICBjYXNlIFdJLlJlc291cmNlQ29sbGVjdGlvbi5UeXBlVmVyaWZpZXIu
RG9jdW1lbnQ6Ci0gICAgICAgICAgICB0aXRsZSA9IFdJLlJlc291cmNlLmRpc3BsYXlOYW1lRm9y
VHlwZShXSS5SZXNvdXJjZS5UeXBlLkRvY3VtZW50LCB0cnVlKTsKLSAgICAgICAgICAgIGJyZWFr
OwotCi0gICAgICAgIGNhc2UgV0kuUmVzb3VyY2VDb2xsZWN0aW9uLlR5cGVWZXJpZmllci5TdHls
ZXNoZWV0OgotICAgICAgICAgICAgdGl0bGUgPSBXSS5SZXNvdXJjZS5kaXNwbGF5TmFtZUZvclR5
cGUoV0kuUmVzb3VyY2UuVHlwZS5TdHlsZXNoZWV0LCB0cnVlKTsKLSAgICAgICAgICAgIGJyZWFr
OwotCi0gICAgICAgIGNhc2UgV0kuUmVzb3VyY2VDb2xsZWN0aW9uLlR5cGVWZXJpZmllci5JbWFn
ZToKLSAgICAgICAgICAgIHRoaXMuX2NvbnRlbnRWaWV3Q29uc3RydWN0b3IgPSBXSS5JbWFnZVJl
c291cmNlQ29udGVudFZpZXc7Ci0gICAgICAgICAgICB0aXRsZSA9IFdJLlJlc291cmNlLmRpc3Bs
YXlOYW1lRm9yVHlwZShXSS5SZXNvdXJjZS5UeXBlLkltYWdlLCB0cnVlKTsKLSAgICAgICAgICAg
IGJyZWFrOwotCi0gICAgICAgIGNhc2UgV0kuUmVzb3VyY2VDb2xsZWN0aW9uLlR5cGVWZXJpZmll
ci5Gb250OgotICAgICAgICAgICAgdGl0bGUgPSBXSS5SZXNvdXJjZS5kaXNwbGF5TmFtZUZvclR5
cGUoV0kuUmVzb3VyY2UuVHlwZS5Gb250LCB0cnVlKTsKLSAgICAgICAgICAgIGJyZWFrOwotCi0g
ICAgICAgIGNhc2UgV0kuUmVzb3VyY2VDb2xsZWN0aW9uLlR5cGVWZXJpZmllci5TY3JpcHQ6Ci0g
ICAgICAgICAgICB0aXRsZSA9IFdJLlJlc291cmNlLmRpc3BsYXlOYW1lRm9yVHlwZShXSS5SZXNv
dXJjZS5UeXBlLlNjcmlwdCwgdHJ1ZSk7Ci0gICAgICAgICAgICBicmVhazsKLQotICAgICAgICBj
YXNlIFdJLlJlc291cmNlQ29sbGVjdGlvbi5UeXBlVmVyaWZpZXIuWEhSOgotICAgICAgICAgICAg
dGl0bGUgPSBXSS5SZXNvdXJjZS5kaXNwbGF5TmFtZUZvclR5cGUoV0kuUmVzb3VyY2UuVHlwZS5Y
SFIsIHRydWUpOwotICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgY2FzZSBXSS5SZXNvdXJj
ZUNvbGxlY3Rpb24uVHlwZVZlcmlmaWVyLkZldGNoOgotICAgICAgICAgICAgdGl0bGUgPSBXSS5S
ZXNvdXJjZS5kaXNwbGF5TmFtZUZvclR5cGUoV0kuUmVzb3VyY2UuVHlwZS5GZXRjaCwgdHJ1ZSk7
Ci0gICAgICAgICAgICBicmVhazsKLQotICAgICAgICBjYXNlIFdJLlJlc291cmNlQ29sbGVjdGlv
bi5UeXBlVmVyaWZpZXIuV2ViU29ja2V0OgotICAgICAgICAgICAgdGl0bGUgPSBXSS5SZXNvdXJj
ZS5kaXNwbGF5TmFtZUZvclR5cGUoV0kuUmVzb3VyY2UuVHlwZS5XZWJTb2NrZXQsIHRydWUpOwot
ICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgY2FzZSBXSS5SZXNvdXJjZUNvbGxlY3Rpb24u
VHlwZVZlcmlmaWVyLk90aGVyOgotICAgICAgICAgICAgdGl0bGUgPSBXSS5SZXNvdXJjZS5kaXNw
bGF5TmFtZUZvclR5cGUoV0kuUmVzb3VyY2UuVHlwZS5PdGhlciwgdHJ1ZSk7Ci0gICAgICAgICAg
ICBicmVhazsKLSAgICAgICAgfQotCi0gICAgICAgIHRoaXMuX2NvbnRlbnRQbGFjZWhvbGRlciA9
IG5ldyBXSS5UaXRsZVZpZXcodGl0bGUpOworICAgIC8vIFB1YmxpYwogCi0gICAgICAgIHRoaXMu
ZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJjb2xsZWN0aW9uIik7CisgICAgZ2V0IHN1cHBsZW1lbnRh
bFJlcHJlc2VudGVkT2JqZWN0cygpCisgICAgeworICAgICAgICBpZiAodGhpcy5fc2VsZWN0ZWRJ
dGVtKQorICAgICAgICAgICAgcmV0dXJuIFt0aGlzLl9zZWxlY3RlZEl0ZW1dOworICAgICAgICBy
ZXR1cm4gW107CiAgICAgfQogCi0gICAgIC8vIFB1YmxpYworICAgIGdldCBzZWxlY3Rpb25FbmFi
bGVkKCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl9zZWxlY3Rpb25FbmFibGVkOworICAg
IH0KIAotICAgIGluaXRpYWxMYXlvdXQoKQorICAgIHNldCBzZWxlY3Rpb25FbmFibGVkKHZhbHVl
KQogICAgIHsKLSAgICAgICAgbGV0IGl0ZW1zID0gdGhpcy5yZXByZXNlbnRlZE9iamVjdC5pdGVt
czsKLSAgICAgICAgaWYgKHRoaXMuX2NvbnRlbnRWaWV3Q29uc3RydWN0b3IgJiYgaXRlbXMuc2l6
ZSkgewotICAgICAgICAgICAgZm9yIChsZXQgaXRlbSBvZiBpdGVtcykKLSAgICAgICAgICAgICAg
ICB0aGlzLl9hZGRDb250ZW50Vmlld0Zvckl0ZW0oaXRlbSk7Ci0gICAgICAgIH0gZWxzZQotICAg
ICAgICAgICAgdGhpcy5hZGRTdWJ2aWV3KHRoaXMuX2NvbnRlbnRQbGFjZWhvbGRlcik7CisgICAg
ICAgIGlmICh0aGlzLl9zZWxlY3Rpb25FbmFibGVkID09PSB2YWx1ZSkKKyAgICAgICAgICAgIHJl
dHVybjsKKworICAgICAgICB0aGlzLl9zZWxlY3Rpb25FbmFibGVkID0gdmFsdWU7CisgICAgICAg
IGlmICghdGhpcy5fc2VsZWN0aW9uRW5hYmxlZCkKKyAgICAgICAgICAgIHRoaXMuX3NlbGVjdEl0
ZW0obnVsbCk7CiAgICAgfQogCi0gICAgIC8vIFByaXZhdGUKKyAgICAvLyBQcm90ZWN0ZWQKIAot
ICAgIF9hZGRDb250ZW50Vmlld0Zvckl0ZW0oaXRlbSkKKyAgICBhZGRDb250ZW50Vmlld0Zvckl0
ZW0oaXRlbSkKICAgICB7CiAgICAgICAgIGlmICghdGhpcy5fY29udGVudFZpZXdDb25zdHJ1Y3Rv
cikKICAgICAgICAgICAgIHJldHVybjsKIAorICAgICAgICBpZiAodGhpcy5fY29udGVudFZpZXdN
YXAuaGFzKGl0ZW0pKSB7CisgICAgICAgICAgICBjb25zb2xlLmFzc2VydChmYWxzZSwgIkFscmVh
ZHkgYWRkZWQgQ29udGVudFZpZXcgZm9yIGl0ZW0uIiwgaXRlbSk7CisgICAgICAgICAgICByZXR1
cm47CisgICAgICAgIH0KKwogICAgICAgICBpZiAodGhpcy5fY29udGVudFBsYWNlaG9sZGVyLnBh
cmVudFZpZXcpCiAgICAgICAgICAgICB0aGlzLnJlbW92ZVN1YnZpZXcodGhpcy5fY29udGVudFBs
YWNlaG9sZGVyKTsKIAogICAgICAgICBsZXQgY29udGVudFZpZXcgPSBuZXcgdGhpcy5fY29udGVu
dFZpZXdDb25zdHJ1Y3RvcihpdGVtKTsKLQotICAgICAgICBjb250ZW50Vmlldy5hZGRFdmVudExp
c3RlbmVyKFdJLlJlc291cmNlQ29udGVudFZpZXcuRXZlbnQuQ29udGVudEVycm9yLCB0aGlzLl9o
YW5kbGVDb250ZW50RXJyb3IsIHRoaXMpOworICAgICAgICBjb25zb2xlLmFzc2VydChjb250ZW50
VmlldyBpbnN0YW5jZW9mIFdJLkNvbnRlbnRWaWV3KTsKIAogICAgICAgICBsZXQgaGFuZGxlQ2xp
Y2sgPSAoZXZlbnQpID0+IHsKICAgICAgICAgICAgIGlmIChldmVudC5idXR0b24gIT09IDAgfHwg
ZXZlbnQuY3RybEtleSkKICAgICAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgICAgIFdJ
LnNob3dSZXByZXNlbnRlZE9iamVjdChpdGVtKTsKKyAgICAgICAgICAgIGlmICh0aGlzLl9zZWxl
Y3Rpb25FbmFibGVkKQorICAgICAgICAgICAgICAgIHRoaXMuX3NlbGVjdEl0ZW0oaXRlbSk7Cisg
ICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgV0kuc2hvd1JlcHJlc2VudGVkT2JqZWN0
KGl0ZW0pOwogICAgICAgICB9OworCisgICAgICAgIHRoaXMuX2NvbnRlbnRWaWV3TWFwLnNldChp
dGVtLCBjb250ZW50Vmlldyk7CiAgICAgICAgIHRoaXMuX2hhbmRsZUNsaWNrTWFwLnNldChpdGVt
LCBoYW5kbGVDbGljayk7CiAgICAgICAgIGNvbnRlbnRWaWV3LmVsZW1lbnQuYWRkRXZlbnRMaXN0
ZW5lcigiY2xpY2siLCBoYW5kbGVDbGljayk7CiAKLSAgICAgICAgY29udGVudFZpZXcuZWxlbWVu
dC50aXRsZSA9IFdJLmRpc3BsYXlOYW1lRm9yVVJMKGl0ZW0udXJsLCBpdGVtLnVybENvbXBvbmVu
dHMpOwotCiAgICAgICAgIHRoaXMuYWRkU3Vidmlldyhjb250ZW50Vmlldyk7Ci0gICAgICAgIHRo
aXMuX2NvbnRlbnRWaWV3TWFwLnNldChpdGVtLCBjb250ZW50Vmlldyk7CisgICAgICAgIHRoaXMu
Y29udGVudFZpZXdBZGRlZChjb250ZW50Vmlldyk7CiAgICAgfQogCi0gICAgX3JlbW92ZUNvbnRl
bnRWaWV3Rm9ySXRlbShpdGVtKQorICAgIHJlbW92ZUNvbnRlbnRWaWV3Rm9ySXRlbShpdGVtKQog
ICAgIHsKICAgICAgICAgaWYgKCF0aGlzLl9jb250ZW50Vmlld0NvbnN0cnVjdG9yKQogICAgICAg
ICAgICAgcmV0dXJuOwpAQCAtMTQ4LDI3ICsxMTMsODUgQEAgV0kuQ29sbGVjdGlvbkNvbnRlbnRW
aWV3ID0gY2xhc3MgQ29sbGVjdGlvbkNvbnRlbnRWaWV3IGV4dGVuZHMgV0kuQ29udGVudFZpZXcK
IAogICAgICAgICB0aGlzLnJlbW92ZVN1YnZpZXcoY29udGVudFZpZXcpOwogICAgICAgICB0aGlz
Ll9jb250ZW50Vmlld01hcC5kZWxldGUoaXRlbSk7CisgICAgICAgIHRoaXMuY29udGVudFZpZXdS
ZW1vdmVkKGNvbnRlbnRWaWV3KTsKIAogICAgICAgICBjb250ZW50Vmlldy5yZW1vdmVFdmVudExp
c3RlbmVyKG51bGwsIG51bGwsIHRoaXMpOwogCiAgICAgICAgIGxldCBoYW5kbGVDbGljayA9IHRo
aXMuX2hhbmRsZUNsaWNrTWFwLmdldChpdGVtKTsKICAgICAgICAgY29uc29sZS5hc3NlcnQoaGFu
ZGxlQ2xpY2spOworCiAgICAgICAgIGlmIChoYW5kbGVDbGljaykgewogICAgICAgICAgICAgY29u
dGVudFZpZXcuZWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVyKCJjbGljayIsIGhhbmRsZUNsaWNr
KTsKICAgICAgICAgICAgIHRoaXMuX2hhbmRsZUNsaWNrTWFwLmRlbGV0ZShpdGVtKTsKICAgICAg
ICAgfQogCi0gICAgICAgIGlmICghdGhpcy5yZXByZXNlbnRlZE9iamVjdC5yZXNvdXJjZXMubGVu
Z3RoKQorICAgICAgICBpZiAodGhpcy5fc2VsZWN0ZWRJdGVtID09PSBpdGVtKQorICAgICAgICAg
ICAgdGhpcy5fc2VsZWN0SXRlbShudWxsKTsKKworICAgICAgICBpZiAoIXRoaXMuc3Vidmlld3Mu
bGVuZ3RoKQorICAgICAgICAgICAgdGhpcy5hZGRTdWJ2aWV3KHRoaXMuX2NvbnRlbnRQbGFjZWhv
bGRlcik7CisgICAgfQorCisgICAgY29udGVudFZpZXdBZGRlZChjb250ZW50VmlldykKKyAgICB7
CisgICAgICAgIC8vIEltcGxlbWVudGVkIGJ5IHN1YmNsYXNzZXMuCisgICAgfQorCisgICAgY29u
dGVudFZpZXdSZW1vdmVkKGNvbnRlbnRWaWV3KQorICAgIHsKKyAgICAgICAgLy8gSW1wbGVtZW50
ZWQgYnkgc3ViY2xhc3Nlcy4KKyAgICB9CisKKyAgICBpbml0aWFsTGF5b3V0KCkKKyAgICB7Cisg
ICAgICAgIGxldCBpdGVtcyA9IHRoaXMucmVwcmVzZW50ZWRPYmplY3QuaXRlbXM7CisgICAgICAg
IGlmICghaXRlbXMuc2l6ZSB8fCAhdGhpcy5fY29udGVudFZpZXdDb25zdHJ1Y3RvcikgewogICAg
ICAgICAgICAgdGhpcy5hZGRTdWJ2aWV3KHRoaXMuX2NvbnRlbnRQbGFjZWhvbGRlcik7CisgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBmb3IgKGxldCBpdGVtIG9mIGl0
ZW1zKQorICAgICAgICAgICAgdGhpcy5hZGRDb250ZW50Vmlld0Zvckl0ZW0oaXRlbSk7CiAgICAg
fQogCisgICAgYXR0YWNoZWQoKQorICAgIHsKKyAgICAgICAgc3VwZXIuYXR0YWNoZWQoKTsKKwor
ICAgICAgICB0aGlzLnJlcHJlc2VudGVkT2JqZWN0LmFkZEV2ZW50TGlzdGVuZXIoV0kuQ29sbGVj
dGlvbi5FdmVudC5JdGVtQWRkZWQsIHRoaXMuX2hhbmRsZUl0ZW1BZGRlZCwgdGhpcyk7CisgICAg
ICAgIHRoaXMucmVwcmVzZW50ZWRPYmplY3QuYWRkRXZlbnRMaXN0ZW5lcihXSS5Db2xsZWN0aW9u
LkV2ZW50Lkl0ZW1SZW1vdmVkLCB0aGlzLl9oYW5kbGVJdGVtUmVtb3ZlZCwgdGhpcyk7CisKKyAg
ICAgICAgZm9yIChsZXQgaXRlbSBvZiB0aGlzLl9jb250ZW50Vmlld01hcC5rZXlzKCkpIHsKKyAg
ICAgICAgICAgIGlmICghdGhpcy5yZXByZXNlbnRlZE9iamVjdC5pdGVtcy5oYXMoaXRlbSkpIHsK
KyAgICAgICAgICAgICAgICB0aGlzLnJlbW92ZUNvbnRlbnRWaWV3Rm9ySXRlbShpdGVtKTsKKyAg
ICAgICAgICAgICAgICBpZiAodGhpcy5fc2VsZWN0ZWRJdGVtID09PSBpdGVtKSB7CisgICAgICAg
ICAgICAgICAgICAgIHRoaXMuX3NlbGVjdEl0ZW0obnVsbCk7CisgICAgICAgICAgICAgICAgfQor
ICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgZm9yIChsZXQgaXRlbSBvZiB0aGlz
LnJlcHJlc2VudGVkT2JqZWN0Lml0ZW1zKSB7CisgICAgICAgICAgICBpZiAoIXRoaXMuX2NvbnRl
bnRWaWV3TWFwLmhhcyhpdGVtKSkKKyAgICAgICAgICAgICAgICB0aGlzLmFkZENvbnRlbnRWaWV3
Rm9ySXRlbShpdGVtKTsKKyAgICAgICAgfQorICAgIH0KKworICAgIGRldGFjaGVkKCkKKyAgICB7
CisgICAgICAgIHRoaXMucmVwcmVzZW50ZWRPYmplY3QucmVtb3ZlRXZlbnRMaXN0ZW5lcihudWxs
LCBudWxsLCB0aGlzKTsKKworICAgICAgICBzdXBlci5kZXRhY2hlZCgpOworICAgIH0KKworICAg
ICAvLyBQcml2YXRlCisKICAgICBfaGFuZGxlSXRlbUFkZGVkKGV2ZW50KQogICAgIHsKICAgICAg
ICAgbGV0IGl0ZW0gPSBldmVudC5kYXRhLml0ZW07CiAgICAgICAgIGlmICghaXRlbSkKICAgICAg
ICAgICAgIHJldHVybjsKIAotICAgICAgICB0aGlzLl9hZGRDb250ZW50Vmlld0Zvckl0ZW0oaXRl
bSk7CisgICAgICAgIHRoaXMuYWRkQ29udGVudFZpZXdGb3JJdGVtKGl0ZW0pOwogICAgIH0KIAog
ICAgIF9oYW5kbGVJdGVtUmVtb3ZlZChldmVudCkKQEAgLTE3Nyw3ICsyMDAsNyBAQCBXSS5Db2xs
ZWN0aW9uQ29udGVudFZpZXcgPSBjbGFzcyBDb2xsZWN0aW9uQ29udGVudFZpZXcgZXh0ZW5kcyBX
SS5Db250ZW50VmlldwogICAgICAgICBpZiAoIWl0ZW0pCiAgICAgICAgICAgICByZXR1cm47CiAK
LSAgICAgICAgdGhpcy5fcmVtb3ZlQ29udGVudFZpZXdGb3JJdGVtKGl0ZW0pOworICAgICAgICB0
aGlzLnJlbW92ZUNvbnRlbnRWaWV3Rm9ySXRlbShpdGVtKTsKICAgICB9CiAKICAgICBfaGFuZGxl
Q29udGVudEVycm9yKGV2ZW50KQpAQCAtMTg1LDQgKzIwOCw0OSBAQCBXSS5Db2xsZWN0aW9uQ29u
dGVudFZpZXcgPSBjbGFzcyBDb2xsZWN0aW9uQ29udGVudFZpZXcgZXh0ZW5kcyBXSS5Db250ZW50
VmlldwogICAgICAgICBpZiAoZXZlbnQgJiYgZXZlbnQudGFyZ2V0KQogICAgICAgICAgICAgdGhp
cy5fcmVtb3ZlQ29udGVudFZpZXdGb3JJdGVtKGV2ZW50LnRhcmdldC5yZXByZXNlbnRlZE9iamVj
dCk7CiAgICAgfQorCisgICAgX2RlZmF1bHRUaXRsZSgpCisgICAgeworICAgICAgICBsZXQgdHlw
ZVZlcmlmaWVyID0gdGhpcy5yZXByZXNlbnRlZE9iamVjdC50eXBlVmVyaWZpZXI7CisKKyAgICAg
ICAgc3dpdGNoICh0eXBlVmVyaWZpZXIpIHsKKyAgICAgICAgY2FzZSBXSS5Db2xsZWN0aW9uLlR5
cGVWZXJpZmllci5GcmFtZToKKyAgICAgICAgICAgIHJldHVybiBXSS5VSVN0cmluZygiRnJhbWVz
Iik7CisgICAgICAgIGNhc2UgV0kuQ29sbGVjdGlvbi5UeXBlVmVyaWZpZXIuUmVzb3VyY2U6Cisg
ICAgICAgICAgICByZXR1cm4gV0kuVUlTdHJpbmcoIlJlc291cmNlcyIpOworICAgICAgICBjYXNl
IFdJLkNvbGxlY3Rpb24uVHlwZVZlcmlmaWVyLlNjcmlwdDoKKyAgICAgICAgICAgIHJldHVybiBX
SS5VSVN0cmluZygiU2NyaXB0cyIpOworICAgICAgICBjYXNlIFdJLkNvbGxlY3Rpb24uVHlwZVZl
cmlmaWVyLkNTU1N0eWxlU2hlZXQ6CisgICAgICAgICAgICByZXR1cm4gV0kuVUlTdHJpbmcoIlN0
eWxlc2hlZXRzIik7CisgICAgICAgIGNhc2UgV0kuQ29sbGVjdGlvbi5UeXBlVmVyaWZpZXIuQ2Fu
dmFzOgorICAgICAgICAgICAgcmV0dXJuIFdJLlVJU3RyaW5nKCJDYW52YXNlcyIpOworICAgICAg
ICBjYXNlIFdJLkNvbGxlY3Rpb24uVHlwZVZlcmlmaWVyLlNoYWRlclByb2dyYW06CisgICAgICAg
ICAgICByZXR1cm4gV0kuVUlTdHJpbmcoIlNoYWRlciBQcm9ncmFtcyIpOworICAgICAgICB9CisK
KyAgICAgICAgY29uc29sZS53YXJuKCJObyBkZWZhdWx0IHRpdGxlIGZvciBDb2xsZWN0aW9uIHR5
cGUgdmVyaWZpZXIuIiwgdHlwZVZlcmlmaWVyKTsKKyAgICAgICAgcmV0dXJuIFdJLlVJU3RyaW5n
KCJDb2xsZWN0aW9uIik7CisgICAgfQorCisgICAgX3NlbGVjdEl0ZW0oaXRlbSkKKyAgICB7Cisg
ICAgICAgIGlmICh0aGlzLl9zZWxlY3RlZEl0ZW0gPT09IGl0ZW0pCisgICAgICAgICAgICByZXR1
cm47CisKKyAgICAgICAgaWYgKHRoaXMuX3NlbGVjdGVkSXRlbSkgeworICAgICAgICAgICAgbGV0
IGNvbnRlbnRWaWV3ID0gdGhpcy5fY29udGVudFZpZXdNYXAuZ2V0KHRoaXMuX3NlbGVjdGVkSXRl
bSk7CisgICAgICAgICAgICBjb25zb2xlLmFzc2VydChjb250ZW50VmlldywgIk1pc3NpbmcgQ29u
dGVudFZpZXcgZm9yIGRlc2VsZWN0ZWQgaXRlbS4iLCB0aGlzLl9zZWxlY3RlZEl0ZW0pOworICAg
ICAgICAgICAgY29udGVudFZpZXcuZWxlbWVudC5jbGFzc0xpc3QucmVtb3ZlKCJzZWxlY3RlZCIp
OworICAgICAgICB9CisKKyAgICAgICAgdGhpcy5fc2VsZWN0ZWRJdGVtID0gaXRlbTsKKworICAg
ICAgICBpZiAodGhpcy5fc2VsZWN0ZWRJdGVtKSB7CisgICAgICAgICAgICBsZXQgc2VsZWN0ZWRD
b250ZW50VmlldyA9IHRoaXMuX2NvbnRlbnRWaWV3TWFwLmdldCh0aGlzLl9zZWxlY3RlZEl0ZW0p
OworICAgICAgICAgICAgY29uc29sZS5hc3NlcnQoc2VsZWN0ZWRDb250ZW50VmlldywgIk1pc3Np
bmcgQ29udGVudFZpZXcgZm9yIHNlbGVjdGVkIGl0ZW0uIiwgdGhpcy5fc2VsZWN0ZWRJdGVtKTsK
KyAgICAgICAgICAgIHNlbGVjdGVkQ29udGVudFZpZXcuZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJz
ZWxlY3RlZCIpOworICAgICAgICB9CisKKyAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0
ZW5lcnMoV0kuQ29udGVudFZpZXcuRXZlbnQuU3VwcGxlbWVudGFsUmVwcmVzZW50ZWRPYmplY3Rz
RGlkQ2hhbmdlKTsKKyAgICB9CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvVmlld3MvQ29udGVudFZpZXcuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvVXNlckludGVyZmFjZS9WaWV3cy9Db250ZW50Vmlldy5qcwppbmRleCA1MDI3Mzg0YmZjMGE3
NDE4MjdmZjMwNTMxMGU2MWVlZjE5ODVmNzgzLi4yMWU3NjhhYTQ3MDNhMmY3MWY2ZmIyMmFmMDVj
NTQ3M2E5NzI0MGEyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9WaWV3cy9Db250ZW50Vmlldy5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9WaWV3cy9Db250ZW50Vmlldy5qcwpAQCAtMTYxLDYgKzE2MSw5IEBAIFdJLkNv
bnRlbnRWaWV3ID0gY2xhc3MgQ29udGVudFZpZXcgZXh0ZW5kcyBXSS5WaWV3CiAgICAgICAgIGlm
IChyZXByZXNlbnRlZE9iamVjdCBpbnN0YW5jZW9mIFdJLlJlY29yZGluZykKICAgICAgICAgICAg
IHJldHVybiBuZXcgV0kuUmVjb3JkaW5nQ29udGVudFZpZXcocmVwcmVzZW50ZWRPYmplY3QsIGV4
dHJhQXJndW1lbnRzKTsKIAorICAgICAgICBpZiAocmVwcmVzZW50ZWRPYmplY3QgaW5zdGFuY2Vv
ZiBXSS5SZXNvdXJjZUNvbGxlY3Rpb24pCisgICAgICAgICAgICByZXR1cm4gbmV3IFdJLlJlc291
cmNlQ29sbGVjdGlvbkNvbnRlbnRWaWV3KHJlcHJlc2VudGVkT2JqZWN0LCBleHRyYUFyZ3VtZW50
cyk7CisKICAgICAgICAgaWYgKHJlcHJlc2VudGVkT2JqZWN0IGluc3RhbmNlb2YgV0kuQ29sbGVj
dGlvbikKICAgICAgICAgICAgIHJldHVybiBuZXcgV0kuQ29sbGVjdGlvbkNvbnRlbnRWaWV3KHJl
cHJlc2VudGVkT2JqZWN0LCBleHRyYUFyZ3VtZW50cyk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Jlc291cmNlQ29sbGVjdGlvbkNvbnRl
bnRWaWV3LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvUmVz
b3VyY2VDb2xsZWN0aW9uQ29udGVudFZpZXcuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMjhiOWY5MmVhNDkyNzFh
MGY4YWE4OTI1NzIyNGU3YmJhYmEyNGZmOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Jlc291cmNlQ29sbGVjdGlvbkNvbnRlbnRW
aWV3LmpzCkBAIC0wLDAgKzEsNjEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTcgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCitXSS5SZXNvdXJjZUNvbGxlY3Rp
b25Db250ZW50VmlldyA9IGNsYXNzIFJlc291cmNlQ29sbGVjdGlvbkNvbnRlbnRWaWV3IGV4dGVu
ZHMgV0kuQ29sbGVjdGlvbkNvbnRlbnRWaWV3Cit7CisgICAgY29uc3RydWN0b3IoY29sbGVjdGlv
bikKKyAgICB7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGNvbGxlY3Rpb24gaW5zdGFuY2VvZiBX
SS5SZXNvdXJjZUNvbGxlY3Rpb24pOworCisgICAgICAgIGxldCBjb250ZW50Vmlld0NvbnN0cnVj
dG9yID0gbnVsbDsKKyAgICAgICAgaWYgKGNvbGxlY3Rpb24ucmVzb3VyY2VUeXBlID09PSBXSS5S
ZXNvdXJjZS5UeXBlLkltYWdlKQorICAgICAgICAgICAgY29udGVudFZpZXdDb25zdHJ1Y3RvciA9
IFdJLkltYWdlUmVzb3VyY2VDb250ZW50VmlldzsKKworICAgICAgICBsZXQgdGl0bGUgPSBXSS5S
ZXNvdXJjZS5kaXNwbGF5TmFtZUZvclR5cGUoY29sbGVjdGlvbi5yZXNvdXJjZVR5cGUsIHRydWUp
OworCisgICAgICAgIHN1cGVyKGNvbGxlY3Rpb24sIGNvbnRlbnRWaWV3Q29uc3RydWN0b3IsIHRp
dGxlKTsKKyAgICB9CisKKyAgICAvLyBQcm90ZWN0ZWQKKworICAgIGNvbnRlbnRWaWV3QWRkZWQo
Y29udGVudFZpZXcpCisgICAgeworICAgICAgICBjb25zb2xlLmFzc2VydChjb250ZW50VmlldyBp
bnN0YW5jZW9mIFdJLlJlc291cmNlQ29udGVudFZpZXcpOworCisgICAgICAgIGxldCByZXNvdXJj
ZSA9IGNvbnRlbnRWaWV3LnJlcHJlc2VudGVkT2JqZWN0OworICAgICAgICBjb25zb2xlLmFzc2Vy
dChyZXNvdXJjZSBpbnN0YW5jZW9mIFdJLlJlc291cmNlKTsKKworICAgICAgICBjb250ZW50Vmll
dy5hZGRFdmVudExpc3RlbmVyKFdJLlJlc291cmNlQ29udGVudFZpZXcuRXZlbnQuQ29udGVudEVy
cm9yLCB0aGlzLl9oYW5kbGVDb250ZW50RXJyb3IsIHRoaXMpOworICAgICAgICBjb250ZW50Vmll
dy5lbGVtZW50LnRpdGxlID0gV0kuZGlzcGxheU5hbWVGb3JVUkwocmVzb3VyY2UudXJsLCByZXNv
dXJjZS51cmxDb21wb25lbnRzKTsKKyAgICB9CisKKyAgICAvLyBQcml2YXRlCisKKyAgICBfaGFu
ZGxlQ29udGVudEVycm9yKGV2ZW50KQorICAgIHsKKyAgICAgICAgaWYgKGV2ZW50ICYmIGV2ZW50
LnRhcmdldCkKKyAgICAgICAgICAgIHRoaXMucmVtb3ZlQ29udGVudFZpZXdGb3JJdGVtKGV2ZW50
LnRhcmdldC5yZXByZXNlbnRlZE9iamVjdCk7CisgICAgfQorfTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>322005</attachid>
            <date>2017-09-27 13:00:58 -0700</date>
            <delta_ts>2017-09-27 13:41:06 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-177419-20170927130057.patch</filename>
            <type>text/plain</type>
            <size>20911</size>
            <attacher name="Matt Baker">mattbaker</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjIyNTU2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwppbmRleCAz
Y2Y5ODU4YzEwZjMwMTYxYTkyZTAyOTk4N2MyMzhkZDBiMWQ2ZDUwLi42ZDFhNDJiOTMxNThmMzBi
YTM1ZDU5OGE1YmIwNmQ5MzQ4OTQ1NTJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw2MCBAQAorMjAxNy0wOS0yNyAgTWF0dCBCYWtlciAgPG1hdHRiYWtlckBhcHBsZS5jb20+
CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogQ3JlYXRlIFJlc291cmNlQ29sbGVjdGlvbkNvbnRl
bnRWaWV3IGFuZCBtYWtlIENvbGxlY3Rpb25Db250ZW50VmlldyBlYXNpZXIgdG8gZXh0ZW5kCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzc0MTkKKwor
ICAgICAgICBSZXZpZXdlZCBieSBEZXZpbiBSb3Vzc28uCisKKyAgICAgICAgQ29sbGVjdGlvbkNv
bnRlbnRWaWV3IHNob3VsZCBiZSBnZW5lcmljLCB3b3JrIHdpdGggYW55IHJlcHJlc2VudGVkIG9i
amVjdAorICAgICAgICBDb2xsZWN0aW9uLCBhbmQgbm90IHBlcmZvcm0gYW55IHR5cGUgY2hlY2tp
bmcuIEl0IHNob3VsZCBqdXN0IG1hcCBpdGVtcworICAgICAgICB0byBDb250ZW50Vmlld3MgdXNp
bmcgdGhlIHByb3ZpZGVkIENvbnRlbnRWaWV3IGNvbnN0cnVjdG9yLgorCisgICAgICAgIFRoZSBi
ZWhhdmlvciB3aGVuIGNsaWNraW5nIGEgQ29udGVudFZpZXcgaW4gdGhlIGNvbGxlY3Rpb24gaGFz
IGJlZW4gZXh0ZW5kZWQuCisgICAgICAgIElmIHNlbGVjdGlvbiBpcyBlbmFibGVkLCBjbGlja2lu
ZyBhIENvbnRlbnRWaWV3IHdpbGwgY2F1c2UgYSAic2VsZWN0ZWQiIGNsYXNzCisgICAgICAgIHRv
IGJlIGFwcGxpZWQgdG8gaXRzIGVsZW1lbnQsIGFuZCBhIFN1cHBsZW1lbnRhbFJlcHJlc2VudGVk
T2JqZWN0c0RpZENoYW5nZQorICAgICAgICBldmVudCBpcyBkaXNwYXRjaGVkLgorCisgICAgICAg
ICogTG9jYWxpemF0aW9ucy9lbi5scHJvai9sb2NhbGl6ZWRTdHJpbmdzLmpzOgorICAgICAgICAq
IFVzZXJJbnRlcmZhY2UvTWFpbi5odG1sOgorICAgICAgICBOZXcgZmlsZSwgbW92ZSBDb2xsZWN0
aW9uQ29udGVudFZpZXcgYWJvdmUgc3ViY2xhc3Nlcy4KKworICAgICAgICAqIFVzZXJJbnRlcmZh
Y2UvTW9kZWxzL1Jlc291cmNlQ29sbGVjdGlvbi5qczoKKyAgICAgICAgKFdJLlJlc291cmNlQ29s
bGVjdGlvbi5wcm90b3R5cGUuZ2V0IHJlc291cmNlVHlwZSk6CisgICAgICAgIE1ha2UgcmVzb3Vy
Y2UgdHlwZSBwdWJsaWNseSBhdmFpbGFibGUuCisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1Zp
ZXdzL0NvbGxlY3Rpb25Db250ZW50Vmlldy5qczoKKyAgICAgICAgTW92ZSB0eXBlIGNoZWNraW5n
IG9mIHRoZSBjb2xsZWN0aW9uIG91dCBvZiB0aGUgYmFzZSBjbGFzcyBhbmQgYXNzZXJ0CisgICAg
ICAgIHRoYXQgQ29udGVudFZpZXdzIGFyZSBjcmVhdGVkIHdoZW4gaW52b2tpbmcgYGNvbnRlbnRW
aWV3Q29uc3RydWN0b3JgLgorICAgICAgICAoV0kuQ29sbGVjdGlvbkNvbnRlbnRWaWV3KToKKyAg
ICAgICAgKFdJLkNvbGxlY3Rpb25Db250ZW50Vmlldy50aXRsZUZvckNvbGxlY3Rpb24pOgorICAg
ICAgICAoV0kuQ29sbGVjdGlvbkNvbnRlbnRWaWV3LnByb3RvdHlwZS5nZXQgc3VwcGxlbWVudGFs
UmVwcmVzZW50ZWRPYmplY3RzKToKKyAgICAgICAgKFdJLkNvbGxlY3Rpb25Db250ZW50Vmlldy5w
cm90b3R5cGUuZ2V0IHNlbGVjdGlvbkVuYWJsZWQpOgorICAgICAgICAoV0kuQ29sbGVjdGlvbkNv
bnRlbnRWaWV3LnByb3RvdHlwZS5zZXQgc2VsZWN0aW9uRW5hYmxlZCk6CisgICAgICAgIChXSS5D
b2xsZWN0aW9uQ29udGVudFZpZXcucHJvdG90eXBlLmFkZENvbnRlbnRWaWV3Rm9ySXRlbSk6Cisg
ICAgICAgIChXSS5Db2xsZWN0aW9uQ29udGVudFZpZXcucHJvdG90eXBlLnJlbW92ZUNvbnRlbnRW
aWV3Rm9ySXRlbSk6CisgICAgICAgIChXSS5Db2xsZWN0aW9uQ29udGVudFZpZXcucHJvdG90eXBl
LmNvbnRlbnRWaWV3QWRkZWQpOgorICAgICAgICAoV0kuQ29sbGVjdGlvbkNvbnRlbnRWaWV3LnBy
b3RvdHlwZS5jb250ZW50Vmlld1JlbW92ZWQpOgorICAgICAgICAoV0kuQ29sbGVjdGlvbkNvbnRl
bnRWaWV3LnByb3RvdHlwZS5pbml0aWFsTGF5b3V0KToKKyAgICAgICAgKFdJLkNvbGxlY3Rpb25D
b250ZW50Vmlldy5wcm90b3R5cGUuYXR0YWNoZWQpOgorICAgICAgICAoV0kuQ29sbGVjdGlvbkNv
bnRlbnRWaWV3LnByb3RvdHlwZS5kZXRhY2hlZCk6CisgICAgICAgIChXSS5Db2xsZWN0aW9uQ29u
dGVudFZpZXcucHJvdG90eXBlLl9oYW5kbGVJdGVtQWRkZWQpOgorICAgICAgICAoV0kuQ29sbGVj
dGlvbkNvbnRlbnRWaWV3LnByb3RvdHlwZS5faGFuZGxlSXRlbVJlbW92ZWQpOgorICAgICAgICAo
V0kuQ29sbGVjdGlvbkNvbnRlbnRWaWV3LnByb3RvdHlwZS5fc2VsZWN0SXRlbSk6CisgICAgICAg
IChXSS5Db2xsZWN0aW9uQ29udGVudFZpZXcucHJvdG90eXBlLl9hZGRDb250ZW50Vmlld0Zvckl0
ZW0pOiBEZWxldGVkLgorICAgICAgICAoV0kuQ29sbGVjdGlvbkNvbnRlbnRWaWV3LnByb3RvdHlw
ZS5fcmVtb3ZlQ29udGVudFZpZXdGb3JJdGVtKTogRGVsZXRlZC4KKworICAgICAgICAqIFVzZXJJ
bnRlcmZhY2UvVmlld3MvQ29udGVudFZpZXcuanM6CisgICAgICAgIChXSS5Db250ZW50Vmlldy5j
cmVhdGVGcm9tUmVwcmVzZW50ZWRPYmplY3QpOgorICAgICAgICBDcmVhdGUgYSBSZXNvdXJjZUNv
bGxlY3Rpb25Db250ZW50Vmlldy4gSW4gdGhlIGZ1dHVyZSwgYWRkaXRpb25hbAorICAgICAgICBD
b2xsZWN0aW9uIHR5cGVzIGNhbiBiZSBtYXBwZWQgdG8gdGhlaXIgYXNzb2NpYXRlZCBDb2xsZWN0
aW9uQ29udGVudFZpZXcuCisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL1Jlc291cmNl
Q29sbGVjdGlvbkNvbnRlbnRWaWV3LmpzOiBBZGRlZC4KKyAgICAgICAgTmV3IGNsYXNzIGZvciBy
ZXNvdXJjZS1zcGVjaWZpYyBsb2dpYyBwcmV2aW91c2x5IGluIENvbGxlY3Rpb25Db250ZW50Vmll
dy4KKyAgICAgICAgKFdJLlJlc291cmNlQ29sbGVjdGlvbkNvbnRlbnRWaWV3KToKKyAgICAgICAg
KFdJLlJlc291cmNlQ29sbGVjdGlvbkNvbnRlbnRWaWV3LnByb3RvdHlwZS5jb250ZW50Vmlld0Fk
ZGVkKToKKyAgICAgICAgKFdJLlJlc291cmNlQ29sbGVjdGlvbkNvbnRlbnRWaWV3LnByb3RvdHlw
ZS5faGFuZGxlQ29udGVudEVycm9yKToKKyAgICAgICAgUmVtb3ZlIENvbnRlbnRWaWV3IHdpdGhv
dXQgcmVtb3ZpbmcgdGhlIHJlc291cmNlIGZyb20gaXRzIGNvbGxlY3Rpb24uCisKIDIwMTctMDkt
MjcgIEZ1amlpIEhpcm9ub3JpICA8SGlyb25vcmkuRnVqaWlAc29ueS5jb20+CiAKICAgICAgICAg
W0dUS10gV2ViIEluc3BlY3RvcjogQWRkIENhbnZhczJELnN2ZyBhbmQgQ2FudmFzM0Quc3ZnCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvTG9jYWxpemF0aW9ucy9lbi5scHJvai9s
b2NhbGl6ZWRTdHJpbmdzLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0xvY2FsaXphdGlvbnMv
ZW4ubHByb2ovbG9jYWxpemVkU3RyaW5ncy5qcwppbmRleCA3ZTgxZDkxNzBkY2U2NDZhODE1NmFl
NzViNDMzNDcwZTlhNGUzOWM4Li5iNDllYTJmYjc2YjdiOWYzZGU4MjM4ZThlNmY1YjkzODE3YWQ1
ZmI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvTG9jYWxpemF0aW9ucy9lbi5s
cHJvai9sb2NhbGl6ZWRTdHJpbmdzLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Mb2Nh
bGl6YXRpb25zL2VuLmxwcm9qL2xvY2FsaXplZFN0cmluZ3MuanMKQEAgLTIwNCw2ICsyMDQsNyBA
QCBsb2NhbGl6ZWRTdHJpbmdzWyJDb2RlIl0gPSAiQ29kZSI7CiBsb2NhbGl6ZWRTdHJpbmdzWyJD
b2xsYXBzZSBBbGwiXSA9ICJDb2xsYXBzZSBBbGwiOwogbG9jYWxpemVkU3RyaW5nc1siQ29sbGFw
c2UgY29sdW1ucyJdID0gIkNvbGxhcHNlIGNvbHVtbnMiOwogbG9jYWxpemVkU3RyaW5nc1siQ29s
bGVjdCBnYXJiYWdlIl0gPSAiQ29sbGVjdCBnYXJiYWdlIjsKK2xvY2FsaXplZFN0cmluZ3NbIkNv
bGxlY3Rpb24iXSA9ICJDb2xsZWN0aW9uIjsKIGxvY2FsaXplZFN0cmluZ3NbIkNvbG9yIl0gPSAi
Q29sb3IiOwogbG9jYWxpemVkU3RyaW5nc1siQ29tbWVudCJdID0gIkNvbW1lbnQiOwogbG9jYWxp
emVkU3RyaW5nc1siQ29tbWVudCBBbGwgUHJvcGVydGllcyJdID0gIkNvbW1lbnQgQWxsIFByb3Bl
cnRpZXMiOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
TWFpbi5odG1sIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTWFpbi5odG1s
CmluZGV4IGFjYjAyZjZlY2RiZDQ2MDFmNThkZWMwMWM1NzY3MmM5MjgzYmFjYzMuLmM5MDYxMGI3
YTIzYjA0ODA5NDhjNjU4OTZjNjE5ZTdkZmZiZWVjNWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01haW4uaHRtbAorKysgYi9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9NYWluLmh0bWwKQEAgLTUyMiw2ICs1MjIsOCBAQAogICAgIDxz
Y3JpcHQgc3JjPSJWaWV3cy9TZXR0aW5nc0dyb3VwLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0
IHNyYz0iVmlld3MvU2V0dGluZ3NWaWV3LmpzIj48L3NjcmlwdD4KIAorICAgIDxzY3JpcHQgc3Jj
PSJWaWV3cy9Db2xsZWN0aW9uQ29udGVudFZpZXcuanMiPjwvc2NyaXB0PgorCiAgICAgPHNjcmlw
dCBzcmM9IlZpZXdzL0FjdGl2YXRlQnV0dG9uTmF2aWdhdGlvbkl0ZW0uanMiPjwvc2NyaXB0Pgog
ICAgIDxzY3JpcHQgc3JjPSJWaWV3cy9BY3RpdmF0ZUJ1dHRvblRvb2xiYXJJdGVtLmpzIj48L3Nj
cmlwdD4KICAgICA8c2NyaXB0IHNyYz0iVmlld3MvQXBwbGljYXRpb25DYWNoZURldGFpbHNTaWRl
YmFyUGFuZWwuanMiPjwvc2NyaXB0PgpAQCAtNTUwLDcgKzU1Miw2IEBACiAgICAgPHNjcmlwdCBz
cmM9IlZpZXdzL0NvZGVNaXJyb3JGb3JtYXR0ZXJzLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0
IHNyYz0iVmlld3MvQ29kZU1pcnJvclJlZ2V4TW9kZS5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlw
dCBzcmM9IlZpZXdzL0NvZGVNaXJyb3JUZXh0TWFya2Vycy5qcyI+PC9zY3JpcHQ+Ci0gICAgPHNj
cmlwdCBzcmM9IlZpZXdzL0NvbGxlY3Rpb25Db250ZW50Vmlldy5qcyI+PC9zY3JpcHQ+CiAgICAg
PHNjcmlwdCBzcmM9IlZpZXdzL0NvbG9yUGlja2VyLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0
IHNyYz0iVmlld3MvQ29sb3JXaGVlbC5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IlZp
ZXdzL0NvbXBsZXRpb25TdWdnZXN0aW9uc1ZpZXcuanMiPjwvc2NyaXB0PgpAQCAtNjgyLDYgKzY4
Myw3IEBACiAgICAgPHNjcmlwdCBzcmM9IlZpZXdzL1JlbmRlcmluZ0ZyYW1lVGltZWxpbmVWaWV3
LmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHNyYz0iVmlld3MvUmVzaXplci5qcyI+PC9zY3Jp
cHQ+CiAgICAgPHNjcmlwdCBzcmM9IlZpZXdzL1Jlc291cmNlQ2x1c3RlckNvbnRlbnRWaWV3Lmpz
Ij48L3NjcmlwdD4KKyAgICA8c2NyaXB0IHNyYz0iVmlld3MvUmVzb3VyY2VDb2xsZWN0aW9uQ29u
dGVudFZpZXcuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJWaWV3cy9SZXNvdXJjZURl
dGFpbHNTaWRlYmFyUGFuZWwuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgc3JjPSJWaWV3cy9S
ZXNvdXJjZVNpZGViYXJQYW5lbC5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCBzcmM9IlZpZXdz
L1Jlc291cmNlVGltZWxpbmVEYXRhR3JpZE5vZGUuanMiPjwvc2NyaXB0PgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL1Jlc291cmNlQ29sbGVj
dGlvbi5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9SZXNv
dXJjZUNvbGxlY3Rpb24uanMKaW5kZXggMjMxYTlhMDhlODE5YjM4YzMwMDJlNTFlNjY0ZmZjZGRh
YzNkNDBhMC4uY2Q3OTZiOGQyNGNjMDY3OGUzYmQ0YmJhYzljNTc5ZjJmNGQ3MDliZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL1Jlc291cmNl
Q29sbGVjdGlvbi5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9N
b2RlbHMvUmVzb3VyY2VDb2xsZWN0aW9uLmpzCkBAIC02NCw2ICs2NCw4IEBAIFdJLlJlc291cmNl
Q29sbGVjdGlvbiA9IGNsYXNzIFJlc291cmNlQ29sbGVjdGlvbiBleHRlbmRzIFdJLkNvbGxlY3Rp
b24KIAogICAgIC8vIFB1YmxpYwogCisgICAgZ2V0IHJlc291cmNlVHlwZSgpIHsgcmV0dXJuIHRo
aXMuX3Jlc291cmNlVHlwZTsgfQorCiAgICAgcmVzb3VyY2VGb3JVUkwodXJsKQogICAgIHsKICAg
ICAgICAgcmV0dXJuIHRoaXMuX3Jlc291cmNlVVJMTWFwLmdldCh1cmwpIHx8IG51bGw7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Db2xsZWN0
aW9uQ29udGVudFZpZXcuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9W
aWV3cy9Db2xsZWN0aW9uQ29udGVudFZpZXcuanMKaW5kZXggMDM3MmQxMzcwZjZiYmVjN2M4MjFl
NjlkMjkwMDYzYTQ5MzZlMjNlYS4uZjU1MDZjNThkMWYxYTRmYzI5YTk5OWVmNGQxMTA5YTVlZGM1
M2EyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmll
d3MvQ29sbGVjdGlvbkNvbnRlbnRWaWV3LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL1ZpZXdzL0NvbGxlY3Rpb25Db250ZW50Vmlldy5qcwpAQCAtMjUsMTE4ICsy
NSwxMDQgQEAKIAogV0kuQ29sbGVjdGlvbkNvbnRlbnRWaWV3ID0gY2xhc3MgQ29sbGVjdGlvbkNv
bnRlbnRWaWV3IGV4dGVuZHMgV0kuQ29udGVudFZpZXcKIHsKLSAgICBjb25zdHJ1Y3Rvcihjb2xs
ZWN0aW9uKQorICAgIGNvbnN0cnVjdG9yKGNvbGxlY3Rpb24sIGNvbnRlbnRWaWV3Q29uc3RydWN0
b3IsIGNvbnRlbnRQbGFjZWhvbGRlclRleHQpCiAgICAgewogICAgICAgICBjb25zb2xlLmFzc2Vy
dChjb2xsZWN0aW9uIGluc3RhbmNlb2YgV0kuQ29sbGVjdGlvbik7CiAKICAgICAgICAgc3VwZXIo
Y29sbGVjdGlvbik7CiAKLSAgICAgICAgdGhpcy5yZXByZXNlbnRlZE9iamVjdC5hZGRFdmVudExp
c3RlbmVyKFdJLkNvbGxlY3Rpb24uRXZlbnQuSXRlbUFkZGVkLCB0aGlzLl9oYW5kbGVJdGVtQWRk
ZWQsIHRoaXMpOwotICAgICAgICB0aGlzLnJlcHJlc2VudGVkT2JqZWN0LmFkZEV2ZW50TGlzdGVu
ZXIoV0kuQ29sbGVjdGlvbi5FdmVudC5JdGVtUmVtb3ZlZCwgdGhpcy5faGFuZGxlSXRlbVJlbW92
ZWQsIHRoaXMpOworICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmFkZCgiY29sbGVjdGlv
biIpOwogCi0gICAgICAgIHRoaXMuX2NvbnRlbnRWaWV3TWFwID0gbmV3IFdlYWtNYXA7CisgICAg
ICAgIHRoaXMuX2NvbnRlbnRQbGFjZWhvbGRlciA9IG5ldyBXSS5UaXRsZVZpZXcoY29udGVudFBs
YWNlaG9sZGVyVGV4dCB8fCBXSS5Db2xsZWN0aW9uQ29udGVudFZpZXcudGl0bGVGb3JDb2xsZWN0
aW9uKGNvbGxlY3Rpb24pKTsKKyAgICAgICAgdGhpcy5fY29udGVudFZpZXdDb25zdHJ1Y3RvciA9
IGNvbnRlbnRWaWV3Q29uc3RydWN0b3I7CisgICAgICAgIHRoaXMuX2NvbnRlbnRWaWV3TWFwID0g
bmV3IE1hcDsKICAgICAgICAgdGhpcy5faGFuZGxlQ2xpY2tNYXAgPSBuZXcgV2Vha01hcDsKKyAg
ICAgICAgdGhpcy5fc2VsZWN0ZWRJdGVtID0gbnVsbDsKKyAgICAgICAgdGhpcy5fc2VsZWN0aW9u
RW5hYmxlZCA9IGZhbHNlOworICAgIH0KIAotICAgICAgICB0aGlzLl9jb250ZW50Vmlld0NvbnN0
cnVjdG9yID0gbnVsbDsKLSAgICAgICAgbGV0IHRpdGxlID0gIiI7Ci0gICAgICAgIHN3aXRjaCAo
dGhpcy5yZXByZXNlbnRlZE9iamVjdC50eXBlVmVyaWZpZXIpIHsKKyAgICBzdGF0aWMgdGl0bGVG
b3JDb2xsZWN0aW9uKGNvbGxlY3Rpb24pCisgICAgeworICAgICAgICBzd2l0Y2ggKGNvbGxlY3Rp
b24udHlwZVZlcmlmaWVyKSB7CiAgICAgICAgIGNhc2UgV0kuQ29sbGVjdGlvbi5UeXBlVmVyaWZp
ZXIuRnJhbWU6Ci0gICAgICAgICAgICB0aXRsZSA9IFdJLlVJU3RyaW5nKCJGcmFtZXMiKTsKLSAg
ICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgIGNhc2UgV0kuQ29sbGVjdGlvbi5UeXBlVmVyaWZp
ZXIuU2NyaXB0OgotICAgICAgICAgICAgdGl0bGUgPSBXSS5VSVN0cmluZygiRXh0cmEgU2NyaXB0
cyIpOwotICAgICAgICAgICAgYnJlYWs7Ci0KKyAgICAgICAgICAgIHJldHVybiBXSS5VSVN0cmlu
ZygiRnJhbWVzIik7CiAgICAgICAgIGNhc2UgV0kuQ29sbGVjdGlvbi5UeXBlVmVyaWZpZXIuUmVz
b3VyY2U6Ci0gICAgICAgICAgICB0aXRsZSA9IFdJLlVJU3RyaW5nKCJSZXNvdXJjZSIpOwotICAg
ICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgY2FzZSBXSS5SZXNvdXJjZUNvbGxlY3Rpb24uVHlw
ZVZlcmlmaWVyLkRvY3VtZW50OgotICAgICAgICAgICAgdGl0bGUgPSBXSS5SZXNvdXJjZS5kaXNw
bGF5TmFtZUZvclR5cGUoV0kuUmVzb3VyY2UuVHlwZS5Eb2N1bWVudCwgdHJ1ZSk7Ci0gICAgICAg
ICAgICBicmVhazsKLQotICAgICAgICBjYXNlIFdJLlJlc291cmNlQ29sbGVjdGlvbi5UeXBlVmVy
aWZpZXIuU3R5bGVzaGVldDoKLSAgICAgICAgICAgIHRpdGxlID0gV0kuUmVzb3VyY2UuZGlzcGxh
eU5hbWVGb3JUeXBlKFdJLlJlc291cmNlLlR5cGUuU3R5bGVzaGVldCwgdHJ1ZSk7Ci0gICAgICAg
ICAgICBicmVhazsKLQotICAgICAgICBjYXNlIFdJLlJlc291cmNlQ29sbGVjdGlvbi5UeXBlVmVy
aWZpZXIuSW1hZ2U6Ci0gICAgICAgICAgICB0aGlzLl9jb250ZW50Vmlld0NvbnN0cnVjdG9yID0g
V0kuSW1hZ2VSZXNvdXJjZUNvbnRlbnRWaWV3OwotICAgICAgICAgICAgdGl0bGUgPSBXSS5SZXNv
dXJjZS5kaXNwbGF5TmFtZUZvclR5cGUoV0kuUmVzb3VyY2UuVHlwZS5JbWFnZSwgdHJ1ZSk7Ci0g
ICAgICAgICAgICBicmVhazsKLQotICAgICAgICBjYXNlIFdJLlJlc291cmNlQ29sbGVjdGlvbi5U
eXBlVmVyaWZpZXIuRm9udDoKLSAgICAgICAgICAgIHRpdGxlID0gV0kuUmVzb3VyY2UuZGlzcGxh
eU5hbWVGb3JUeXBlKFdJLlJlc291cmNlLlR5cGUuRm9udCwgdHJ1ZSk7Ci0gICAgICAgICAgICBi
cmVhazsKLQotICAgICAgICBjYXNlIFdJLlJlc291cmNlQ29sbGVjdGlvbi5UeXBlVmVyaWZpZXIu
U2NyaXB0OgotICAgICAgICAgICAgdGl0bGUgPSBXSS5SZXNvdXJjZS5kaXNwbGF5TmFtZUZvclR5
cGUoV0kuUmVzb3VyY2UuVHlwZS5TY3JpcHQsIHRydWUpOwotICAgICAgICAgICAgYnJlYWs7Ci0K
LSAgICAgICAgY2FzZSBXSS5SZXNvdXJjZUNvbGxlY3Rpb24uVHlwZVZlcmlmaWVyLlhIUjoKLSAg
ICAgICAgICAgIHRpdGxlID0gV0kuUmVzb3VyY2UuZGlzcGxheU5hbWVGb3JUeXBlKFdJLlJlc291
cmNlLlR5cGUuWEhSLCB0cnVlKTsKLSAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgIGNhc2Ug
V0kuUmVzb3VyY2VDb2xsZWN0aW9uLlR5cGVWZXJpZmllci5GZXRjaDoKLSAgICAgICAgICAgIHRp
dGxlID0gV0kuUmVzb3VyY2UuZGlzcGxheU5hbWVGb3JUeXBlKFdJLlJlc291cmNlLlR5cGUuRmV0
Y2gsIHRydWUpOwotICAgICAgICAgICAgYnJlYWs7Ci0KLSAgICAgICAgY2FzZSBXSS5SZXNvdXJj
ZUNvbGxlY3Rpb24uVHlwZVZlcmlmaWVyLldlYlNvY2tldDoKLSAgICAgICAgICAgIHRpdGxlID0g
V0kuUmVzb3VyY2UuZGlzcGxheU5hbWVGb3JUeXBlKFdJLlJlc291cmNlLlR5cGUuV2ViU29ja2V0
LCB0cnVlKTsKLSAgICAgICAgICAgIGJyZWFrOwotCi0gICAgICAgIGNhc2UgV0kuUmVzb3VyY2VD
b2xsZWN0aW9uLlR5cGVWZXJpZmllci5PdGhlcjoKLSAgICAgICAgICAgIHRpdGxlID0gV0kuUmVz
b3VyY2UuZGlzcGxheU5hbWVGb3JUeXBlKFdJLlJlc291cmNlLlR5cGUuT3RoZXIsIHRydWUpOwot
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICByZXR1cm4gV0kuVUlTdHJpbmcoIlJlc291
cmNlcyIpOworICAgICAgICBjYXNlIFdJLkNvbGxlY3Rpb24uVHlwZVZlcmlmaWVyLlNjcmlwdDoK
KyAgICAgICAgICAgIHJldHVybiBXSS5VSVN0cmluZygiU2NyaXB0cyIpOworICAgICAgICBjYXNl
IFdJLkNvbGxlY3Rpb24uVHlwZVZlcmlmaWVyLkNTU1N0eWxlU2hlZXQ6CisgICAgICAgICAgICBy
ZXR1cm4gV0kuVUlTdHJpbmcoIlN0eWxlc2hlZXRzIik7CisgICAgICAgIGNhc2UgV0kuQ29sbGVj
dGlvbi5UeXBlVmVyaWZpZXIuQ2FudmFzOgorICAgICAgICAgICAgcmV0dXJuIFdJLlVJU3RyaW5n
KCJDYW52YXNlcyIpOworICAgICAgICBjYXNlIFdJLkNvbGxlY3Rpb24uVHlwZVZlcmlmaWVyLlNo
YWRlclByb2dyYW06CisgICAgICAgICAgICByZXR1cm4gV0kuVUlTdHJpbmcoIlNoYWRlciBQcm9n
cmFtcyIpOwogICAgICAgICB9CiAKLSAgICAgICAgdGhpcy5fY29udGVudFBsYWNlaG9sZGVyID0g
bmV3IFdJLlRpdGxlVmlldyh0aXRsZSk7CisgICAgICAgIGNvbnNvbGUud2FybigiTm8gZGVmYXVs
dCB0aXRsZSBmb3IgQ29sbGVjdGlvbiB0eXBlIHZlcmlmaWVyLiIsIGNvbGxlY3Rpb24udHlwZVZl
cmlmaWVyKTsKKyAgICAgICAgcmV0dXJuIFdJLlVJU3RyaW5nKCJDb2xsZWN0aW9uIik7CisgICAg
fQogCi0gICAgICAgIHRoaXMuZWxlbWVudC5jbGFzc0xpc3QuYWRkKCJjb2xsZWN0aW9uIik7Cisg
ICAgLy8gUHVibGljCisKKyAgICBnZXQgc3VwcGxlbWVudGFsUmVwcmVzZW50ZWRPYmplY3RzKCkK
KyAgICB7CisgICAgICAgIGlmICh0aGlzLl9zZWxlY3RlZEl0ZW0pCisgICAgICAgICAgICByZXR1
cm4gW3RoaXMuX3NlbGVjdGVkSXRlbV07CisgICAgICAgIHJldHVybiBbXTsKICAgICB9CiAKLSAg
ICAgLy8gUHVibGljCisgICAgZ2V0IHNlbGVjdGlvbkVuYWJsZWQoKQorICAgIHsKKyAgICAgICAg
cmV0dXJuIHRoaXMuX3NlbGVjdGlvbkVuYWJsZWQ7CisgICAgfQogCi0gICAgaW5pdGlhbExheW91
dCgpCisgICAgc2V0IHNlbGVjdGlvbkVuYWJsZWQodmFsdWUpCiAgICAgewotICAgICAgICBsZXQg
aXRlbXMgPSB0aGlzLnJlcHJlc2VudGVkT2JqZWN0Lml0ZW1zOwotICAgICAgICBpZiAodGhpcy5f
Y29udGVudFZpZXdDb25zdHJ1Y3RvciAmJiBpdGVtcy5zaXplKSB7Ci0gICAgICAgICAgICBmb3Ig
KGxldCBpdGVtIG9mIGl0ZW1zKQotICAgICAgICAgICAgICAgIHRoaXMuX2FkZENvbnRlbnRWaWV3
Rm9ySXRlbShpdGVtKTsKLSAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICB0aGlzLmFkZFN1YnZp
ZXcodGhpcy5fY29udGVudFBsYWNlaG9sZGVyKTsKKyAgICAgICAgaWYgKHRoaXMuX3NlbGVjdGlv
bkVuYWJsZWQgPT09IHZhbHVlKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHRoaXMu
X3NlbGVjdGlvbkVuYWJsZWQgPSB2YWx1ZTsKKyAgICAgICAgaWYgKCF0aGlzLl9zZWxlY3Rpb25F
bmFibGVkKQorICAgICAgICAgICAgdGhpcy5fc2VsZWN0SXRlbShudWxsKTsKICAgICB9CiAKLSAg
ICAgLy8gUHJpdmF0ZQorICAgIC8vIFByb3RlY3RlZAogCi0gICAgX2FkZENvbnRlbnRWaWV3Rm9y
SXRlbShpdGVtKQorICAgIGFkZENvbnRlbnRWaWV3Rm9ySXRlbShpdGVtKQogICAgIHsKICAgICAg
ICAgaWYgKCF0aGlzLl9jb250ZW50Vmlld0NvbnN0cnVjdG9yKQogICAgICAgICAgICAgcmV0dXJu
OwogCisgICAgICAgIGlmICh0aGlzLl9jb250ZW50Vmlld01hcC5oYXMoaXRlbSkpIHsKKyAgICAg
ICAgICAgIGNvbnNvbGUuYXNzZXJ0KGZhbHNlLCAiQWxyZWFkeSBhZGRlZCBDb250ZW50VmlldyBm
b3IgaXRlbS4iLCBpdGVtKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCiAgICAg
ICAgIGlmICh0aGlzLl9jb250ZW50UGxhY2Vob2xkZXIucGFyZW50VmlldykKICAgICAgICAgICAg
IHRoaXMucmVtb3ZlU3Vidmlldyh0aGlzLl9jb250ZW50UGxhY2Vob2xkZXIpOwogCiAgICAgICAg
IGxldCBjb250ZW50VmlldyA9IG5ldyB0aGlzLl9jb250ZW50Vmlld0NvbnN0cnVjdG9yKGl0ZW0p
OwotCi0gICAgICAgIGNvbnRlbnRWaWV3LmFkZEV2ZW50TGlzdGVuZXIoV0kuUmVzb3VyY2VDb250
ZW50Vmlldy5FdmVudC5Db250ZW50RXJyb3IsIHRoaXMuX2hhbmRsZUNvbnRlbnRFcnJvciwgdGhp
cyk7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGNvbnRlbnRWaWV3IGluc3RhbmNlb2YgV0kuQ29u
dGVudFZpZXcpOwogCiAgICAgICAgIGxldCBoYW5kbGVDbGljayA9IChldmVudCkgPT4gewogICAg
ICAgICAgICAgaWYgKGV2ZW50LmJ1dHRvbiAhPT0gMCB8fCBldmVudC5jdHJsS2V5KQogICAgICAg
ICAgICAgICAgIHJldHVybjsKIAotICAgICAgICAgICAgV0kuc2hvd1JlcHJlc2VudGVkT2JqZWN0
KGl0ZW0pOworICAgICAgICAgICAgaWYgKHRoaXMuX3NlbGVjdGlvbkVuYWJsZWQpCisgICAgICAg
ICAgICAgICAgdGhpcy5fc2VsZWN0SXRlbShpdGVtKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgICAgICBXSS5zaG93UmVwcmVzZW50ZWRPYmplY3QoaXRlbSk7CiAgICAgICAgIH07CisK
KyAgICAgICAgdGhpcy5fY29udGVudFZpZXdNYXAuc2V0KGl0ZW0sIGNvbnRlbnRWaWV3KTsKICAg
ICAgICAgdGhpcy5faGFuZGxlQ2xpY2tNYXAuc2V0KGl0ZW0sIGhhbmRsZUNsaWNrKTsKICAgICAg
ICAgY29udGVudFZpZXcuZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJjbGljayIsIGhhbmRsZUNs
aWNrKTsKIAotICAgICAgICBjb250ZW50Vmlldy5lbGVtZW50LnRpdGxlID0gV0kuZGlzcGxheU5h
bWVGb3JVUkwoaXRlbS51cmwsIGl0ZW0udXJsQ29tcG9uZW50cyk7Ci0KICAgICAgICAgdGhpcy5h
ZGRTdWJ2aWV3KGNvbnRlbnRWaWV3KTsKLSAgICAgICAgdGhpcy5fY29udGVudFZpZXdNYXAuc2V0
KGl0ZW0sIGNvbnRlbnRWaWV3KTsKKyAgICAgICAgdGhpcy5jb250ZW50Vmlld0FkZGVkKGNvbnRl
bnRWaWV3KTsKICAgICB9CiAKLSAgICBfcmVtb3ZlQ29udGVudFZpZXdGb3JJdGVtKGl0ZW0pCisg
ICAgcmVtb3ZlQ29udGVudFZpZXdGb3JJdGVtKGl0ZW0pCiAgICAgewogICAgICAgICBpZiAoIXRo
aXMuX2NvbnRlbnRWaWV3Q29uc3RydWN0b3IpCiAgICAgICAgICAgICByZXR1cm47CkBAIC0xNDgs
MjcgKzEzNCw4NSBAQCBXSS5Db2xsZWN0aW9uQ29udGVudFZpZXcgPSBjbGFzcyBDb2xsZWN0aW9u
Q29udGVudFZpZXcgZXh0ZW5kcyBXSS5Db250ZW50VmlldwogCiAgICAgICAgIHRoaXMucmVtb3Zl
U3Vidmlldyhjb250ZW50Vmlldyk7CiAgICAgICAgIHRoaXMuX2NvbnRlbnRWaWV3TWFwLmRlbGV0
ZShpdGVtKTsKKyAgICAgICAgdGhpcy5jb250ZW50Vmlld1JlbW92ZWQoY29udGVudFZpZXcpOwog
CiAgICAgICAgIGNvbnRlbnRWaWV3LnJlbW92ZUV2ZW50TGlzdGVuZXIobnVsbCwgbnVsbCwgdGhp
cyk7CiAKICAgICAgICAgbGV0IGhhbmRsZUNsaWNrID0gdGhpcy5faGFuZGxlQ2xpY2tNYXAuZ2V0
KGl0ZW0pOwogICAgICAgICBjb25zb2xlLmFzc2VydChoYW5kbGVDbGljayk7CisKICAgICAgICAg
aWYgKGhhbmRsZUNsaWNrKSB7CiAgICAgICAgICAgICBjb250ZW50Vmlldy5lbGVtZW50LnJlbW92
ZUV2ZW50TGlzdGVuZXIoImNsaWNrIiwgaGFuZGxlQ2xpY2spOwogICAgICAgICAgICAgdGhpcy5f
aGFuZGxlQ2xpY2tNYXAuZGVsZXRlKGl0ZW0pOwogICAgICAgICB9CiAKLSAgICAgICAgaWYgKCF0
aGlzLnJlcHJlc2VudGVkT2JqZWN0LnJlc291cmNlcy5sZW5ndGgpCisgICAgICAgIGlmICh0aGlz
Ll9zZWxlY3RlZEl0ZW0gPT09IGl0ZW0pCisgICAgICAgICAgICB0aGlzLl9zZWxlY3RJdGVtKG51
bGwpOworCisgICAgICAgIGlmICghdGhpcy5zdWJ2aWV3cy5sZW5ndGgpCisgICAgICAgICAgICB0
aGlzLmFkZFN1YnZpZXcodGhpcy5fY29udGVudFBsYWNlaG9sZGVyKTsKKyAgICB9CisKKyAgICBj
b250ZW50Vmlld0FkZGVkKGNvbnRlbnRWaWV3KQorICAgIHsKKyAgICAgICAgLy8gSW1wbGVtZW50
ZWQgYnkgc3ViY2xhc3Nlcy4KKyAgICB9CisKKyAgICBjb250ZW50Vmlld1JlbW92ZWQoY29udGVu
dFZpZXcpCisgICAgeworICAgICAgICAvLyBJbXBsZW1lbnRlZCBieSBzdWJjbGFzc2VzLgorICAg
IH0KKworICAgIGluaXRpYWxMYXlvdXQoKQorICAgIHsKKyAgICAgICAgbGV0IGl0ZW1zID0gdGhp
cy5yZXByZXNlbnRlZE9iamVjdC5pdGVtczsKKyAgICAgICAgaWYgKCFpdGVtcy5zaXplIHx8ICF0
aGlzLl9jb250ZW50Vmlld0NvbnN0cnVjdG9yKSB7CiAgICAgICAgICAgICB0aGlzLmFkZFN1YnZp
ZXcodGhpcy5fY29udGVudFBsYWNlaG9sZGVyKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgfQorCisgICAgICAgIGZvciAobGV0IGl0ZW0gb2YgaXRlbXMpCisgICAgICAgICAgICB0aGlz
LmFkZENvbnRlbnRWaWV3Rm9ySXRlbShpdGVtKTsKICAgICB9CiAKKyAgICBhdHRhY2hlZCgpCisg
ICAgeworICAgICAgICBzdXBlci5hdHRhY2hlZCgpOworCisgICAgICAgIHRoaXMucmVwcmVzZW50
ZWRPYmplY3QuYWRkRXZlbnRMaXN0ZW5lcihXSS5Db2xsZWN0aW9uLkV2ZW50Lkl0ZW1BZGRlZCwg
dGhpcy5faGFuZGxlSXRlbUFkZGVkLCB0aGlzKTsKKyAgICAgICAgdGhpcy5yZXByZXNlbnRlZE9i
amVjdC5hZGRFdmVudExpc3RlbmVyKFdJLkNvbGxlY3Rpb24uRXZlbnQuSXRlbVJlbW92ZWQsIHRo
aXMuX2hhbmRsZUl0ZW1SZW1vdmVkLCB0aGlzKTsKKworICAgICAgICBmb3IgKGxldCBpdGVtIG9m
IHRoaXMuX2NvbnRlbnRWaWV3TWFwLmtleXMoKSkgeworICAgICAgICAgICAgaWYgKHRoaXMucmVw
cmVzZW50ZWRPYmplY3QuaXRlbXMuaGFzKGl0ZW0pKQorICAgICAgICAgICAgICAgIGNvbnRpbnVl
OworCisgICAgICAgICAgICB0aGlzLnJlbW92ZUNvbnRlbnRWaWV3Rm9ySXRlbShpdGVtKTsKKyAg
ICAgICAgICAgIGlmICh0aGlzLl9zZWxlY3RlZEl0ZW0gPT09IGl0ZW0pCisgICAgICAgICAgICAg
ICAgdGhpcy5fc2VsZWN0SXRlbShudWxsKTsKKyAgICAgICAgfQorCisgICAgICAgIGZvciAobGV0
IGl0ZW0gb2YgdGhpcy5yZXByZXNlbnRlZE9iamVjdC5pdGVtcykgeworICAgICAgICAgICAgaWYg
KCF0aGlzLl9jb250ZW50Vmlld01hcC5oYXMoaXRlbSkpCisgICAgICAgICAgICAgICAgdGhpcy5h
ZGRDb250ZW50Vmlld0Zvckl0ZW0oaXRlbSk7CisgICAgICAgIH0KKyAgICB9CisKKyAgICBkZXRh
Y2hlZCgpCisgICAgeworICAgICAgICB0aGlzLnJlcHJlc2VudGVkT2JqZWN0LnJlbW92ZUV2ZW50
TGlzdGVuZXIobnVsbCwgbnVsbCwgdGhpcyk7CisKKyAgICAgICAgc3VwZXIuZGV0YWNoZWQoKTsK
KyAgICB9CisKKyAgICAgLy8gUHJpdmF0ZQorCiAgICAgX2hhbmRsZUl0ZW1BZGRlZChldmVudCkK
ICAgICB7CiAgICAgICAgIGxldCBpdGVtID0gZXZlbnQuZGF0YS5pdGVtOwogICAgICAgICBpZiAo
IWl0ZW0pCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgdGhpcy5fYWRkQ29udGVudFZp
ZXdGb3JJdGVtKGl0ZW0pOworICAgICAgICB0aGlzLmFkZENvbnRlbnRWaWV3Rm9ySXRlbShpdGVt
KTsKICAgICB9CiAKICAgICBfaGFuZGxlSXRlbVJlbW92ZWQoZXZlbnQpCkBAIC0xNzcsNyArMjIx
LDcgQEAgV0kuQ29sbGVjdGlvbkNvbnRlbnRWaWV3ID0gY2xhc3MgQ29sbGVjdGlvbkNvbnRlbnRW
aWV3IGV4dGVuZHMgV0kuQ29udGVudFZpZXcKICAgICAgICAgaWYgKCFpdGVtKQogICAgICAgICAg
ICAgcmV0dXJuOwogCi0gICAgICAgIHRoaXMuX3JlbW92ZUNvbnRlbnRWaWV3Rm9ySXRlbShpdGVt
KTsKKyAgICAgICAgdGhpcy5yZW1vdmVDb250ZW50Vmlld0Zvckl0ZW0oaXRlbSk7CiAgICAgfQog
CiAgICAgX2hhbmRsZUNvbnRlbnRFcnJvcihldmVudCkKQEAgLTE4NSw0ICsyMjksMjYgQEAgV0ku
Q29sbGVjdGlvbkNvbnRlbnRWaWV3ID0gY2xhc3MgQ29sbGVjdGlvbkNvbnRlbnRWaWV3IGV4dGVu
ZHMgV0kuQ29udGVudFZpZXcKICAgICAgICAgaWYgKGV2ZW50ICYmIGV2ZW50LnRhcmdldCkKICAg
ICAgICAgICAgIHRoaXMuX3JlbW92ZUNvbnRlbnRWaWV3Rm9ySXRlbShldmVudC50YXJnZXQucmVw
cmVzZW50ZWRPYmplY3QpOwogICAgIH0KKworICAgIF9zZWxlY3RJdGVtKGl0ZW0pCisgICAgewor
ICAgICAgICBpZiAodGhpcy5fc2VsZWN0ZWRJdGVtID09PSBpdGVtKQorICAgICAgICAgICAgcmV0
dXJuOworCisgICAgICAgIGlmICh0aGlzLl9zZWxlY3RlZEl0ZW0pIHsKKyAgICAgICAgICAgIGxl
dCBjb250ZW50VmlldyA9IHRoaXMuX2NvbnRlbnRWaWV3TWFwLmdldCh0aGlzLl9zZWxlY3RlZEl0
ZW0pOworICAgICAgICAgICAgY29uc29sZS5hc3NlcnQoY29udGVudFZpZXcsICJNaXNzaW5nIENv
bnRlbnRWaWV3IGZvciBkZXNlbGVjdGVkIGl0ZW0uIiwgdGhpcy5fc2VsZWN0ZWRJdGVtKTsKKyAg
ICAgICAgICAgIGNvbnRlbnRWaWV3LmVsZW1lbnQuY2xhc3NMaXN0LnJlbW92ZSgic2VsZWN0ZWQi
KTsKKyAgICAgICAgfQorCisgICAgICAgIHRoaXMuX3NlbGVjdGVkSXRlbSA9IGl0ZW07CisKKyAg
ICAgICAgaWYgKHRoaXMuX3NlbGVjdGVkSXRlbSkgeworICAgICAgICAgICAgbGV0IHNlbGVjdGVk
Q29udGVudFZpZXcgPSB0aGlzLl9jb250ZW50Vmlld01hcC5nZXQodGhpcy5fc2VsZWN0ZWRJdGVt
KTsKKyAgICAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHNlbGVjdGVkQ29udGVudFZpZXcsICJNaXNz
aW5nIENvbnRlbnRWaWV3IGZvciBzZWxlY3RlZCBpdGVtLiIsIHRoaXMuX3NlbGVjdGVkSXRlbSk7
CisgICAgICAgICAgICBzZWxlY3RlZENvbnRlbnRWaWV3LmVsZW1lbnQuY2xhc3NMaXN0LmFkZCgi
c2VsZWN0ZWQiKTsKKyAgICAgICAgfQorCisgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlz
dGVuZXJzKFdJLkNvbnRlbnRWaWV3LkV2ZW50LlN1cHBsZW1lbnRhbFJlcHJlc2VudGVkT2JqZWN0
c0RpZENoYW5nZSk7CisgICAgfQogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NvbnRlbnRWaWV3LmpzIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ29udGVudFZpZXcuanMKaW5kZXggNTAyNzM4NGJmYzBh
NzQxODI3ZmYzMDUzMTBlNjFlZWYxOTg1Zjc4My4uMjFlNzY4YWE0NzAzYTJmNzFmNmZiMjJhZjA1
YzU0NzNhOTcyNDBhMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvVmlld3MvQ29udGVudFZpZXcuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1Vz
ZXJJbnRlcmZhY2UvVmlld3MvQ29udGVudFZpZXcuanMKQEAgLTE2MSw2ICsxNjEsOSBAQCBXSS5D
b250ZW50VmlldyA9IGNsYXNzIENvbnRlbnRWaWV3IGV4dGVuZHMgV0kuVmlldwogICAgICAgICBp
ZiAocmVwcmVzZW50ZWRPYmplY3QgaW5zdGFuY2VvZiBXSS5SZWNvcmRpbmcpCiAgICAgICAgICAg
ICByZXR1cm4gbmV3IFdJLlJlY29yZGluZ0NvbnRlbnRWaWV3KHJlcHJlc2VudGVkT2JqZWN0LCBl
eHRyYUFyZ3VtZW50cyk7CiAKKyAgICAgICAgaWYgKHJlcHJlc2VudGVkT2JqZWN0IGluc3RhbmNl
b2YgV0kuUmVzb3VyY2VDb2xsZWN0aW9uKQorICAgICAgICAgICAgcmV0dXJuIG5ldyBXSS5SZXNv
dXJjZUNvbGxlY3Rpb25Db250ZW50VmlldyhyZXByZXNlbnRlZE9iamVjdCwgZXh0cmFBcmd1bWVu
dHMpOworCiAgICAgICAgIGlmIChyZXByZXNlbnRlZE9iamVjdCBpbnN0YW5jZW9mIFdJLkNvbGxl
Y3Rpb24pCiAgICAgICAgICAgICByZXR1cm4gbmV3IFdJLkNvbGxlY3Rpb25Db250ZW50Vmlldyhy
ZXByZXNlbnRlZE9iamVjdCwgZXh0cmFBcmd1bWVudHMpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9SZXNvdXJjZUNvbGxlY3Rpb25Db250
ZW50Vmlldy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1Jl
c291cmNlQ29sbGVjdGlvbkNvbnRlbnRWaWV3LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmY1NmY0MDQ3ZDkwYjY0
MTBkYTQyYTIyNjM0ZWUyODkxODc1Y2Q5OGIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9SZXNvdXJjZUNvbGxlY3Rpb25Db250ZW50
Vmlldy5qcwpAQCAtMCwwICsxLDYyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworV0kuUmVzb3VyY2VDb2xsZWN0
aW9uQ29udGVudFZpZXcgPSBjbGFzcyBSZXNvdXJjZUNvbGxlY3Rpb25Db250ZW50VmlldyBleHRl
bmRzIFdJLkNvbGxlY3Rpb25Db250ZW50VmlldworeworICAgIGNvbnN0cnVjdG9yKGNvbGxlY3Rp
b24pCisgICAgeworICAgICAgICBjb25zb2xlLmFzc2VydChjb2xsZWN0aW9uIGluc3RhbmNlb2Yg
V0kuUmVzb3VyY2VDb2xsZWN0aW9uKTsKKworICAgICAgICBsZXQgY29udGVudFZpZXdDb25zdHJ1
Y3RvciA9IG51bGw7CisgICAgICAgIGlmIChjb2xsZWN0aW9uLnJlc291cmNlVHlwZSA9PT0gV0ku
UmVzb3VyY2UuVHlwZS5JbWFnZSkKKyAgICAgICAgICAgIGNvbnRlbnRWaWV3Q29uc3RydWN0b3Ig
PSBXSS5JbWFnZVJlc291cmNlQ29udGVudFZpZXc7CisKKyAgICAgICAgY29uc3QgcGx1cmFsID0g
dHJ1ZTsKKyAgICAgICAgbGV0IGNvbnRlbnRQbGFjZWhvbGRlclRleHQgPSBXSS5SZXNvdXJjZS5k
aXNwbGF5TmFtZUZvclR5cGUoY29sbGVjdGlvbi5yZXNvdXJjZVR5cGUsIHBsdXJhbCk7CisKKyAg
ICAgICAgc3VwZXIoY29sbGVjdGlvbiwgY29udGVudFZpZXdDb25zdHJ1Y3RvciwgY29udGVudFBs
YWNlaG9sZGVyVGV4dCk7CisgICAgfQorCisgICAgLy8gUHJvdGVjdGVkCisKKyAgICBjb250ZW50
Vmlld0FkZGVkKGNvbnRlbnRWaWV3KQorICAgIHsKKyAgICAgICAgY29uc29sZS5hc3NlcnQoY29u
dGVudFZpZXcgaW5zdGFuY2VvZiBXSS5SZXNvdXJjZUNvbnRlbnRWaWV3KTsKKworICAgICAgICBs
ZXQgcmVzb3VyY2UgPSBjb250ZW50Vmlldy5yZXByZXNlbnRlZE9iamVjdDsKKyAgICAgICAgY29u
c29sZS5hc3NlcnQocmVzb3VyY2UgaW5zdGFuY2VvZiBXSS5SZXNvdXJjZSk7CisKKyAgICAgICAg
Y29udGVudFZpZXcuYWRkRXZlbnRMaXN0ZW5lcihXSS5SZXNvdXJjZUNvbnRlbnRWaWV3LkV2ZW50
LkNvbnRlbnRFcnJvciwgdGhpcy5faGFuZGxlQ29udGVudEVycm9yLCB0aGlzKTsKKyAgICAgICAg
Y29udGVudFZpZXcuZWxlbWVudC50aXRsZSA9IFdJLmRpc3BsYXlOYW1lRm9yVVJMKHJlc291cmNl
LnVybCwgcmVzb3VyY2UudXJsQ29tcG9uZW50cyk7CisgICAgfQorCisgICAgLy8gUHJpdmF0ZQor
CisgICAgX2hhbmRsZUNvbnRlbnRFcnJvcihldmVudCkKKyAgICB7CisgICAgICAgIGlmIChldmVu
dCAmJiBldmVudC50YXJnZXQpCisgICAgICAgICAgICB0aGlzLnJlbW92ZUNvbnRlbnRWaWV3Rm9y
SXRlbShldmVudC50YXJnZXQucmVwcmVzZW50ZWRPYmplY3QpOworICAgIH0KK307Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>