<?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>66381</bug_id>
          
          <creation_ts>2011-08-17 08:30:59 -0700</creation_ts>
          <short_desc>Web Inspector: support multiple selection/deletion of cookie records</short_desc>
          <delta_ts>2018-11-02 12:39:13 -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>528+ (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>P5</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>189705</dependson>
    
    <dependson>189803</dependson>
          <blocked>191095</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Trevor Cortez">trevor.cortez</reporter>
          <assigned_to name="Matt Baker">mattbaker</assigned_to>
          <cc>apavlov</cc>
    
    <cc>bugzilla</cc>
    
    <cc>bweinstein</cc>
    
    <cc>commit-queue</cc>
    
    <cc>graouts</cc>
    
    <cc>hi</cc>
    
    <cc>inspector-bugzilla-changes</cc>
    
    <cc>jonowells</cc>
    
    <cc>keishi</cc>
    
    <cc>loislo</cc>
    
    <cc>pfeldman</cc>
    
    <cc>pmuellr</cc>
    
    <cc>rik</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>452271</commentid>
    <comment_count>0</comment_count>
    <who name="Trevor Cortez">trevor.cortez</who>
    <bug_when>2011-08-17 08:30:59 -0700</bug_when>
    <thetext>* SUMMARY
Web Inspector: Cookies/Storage Record Selection Handling Improvements

* STEPS TO REPRODUCE
1. Visit some site that will store cookies (amazon.com)
2. Open the web inspector Resources tab to view stored cookies
3. Try to delete all the cookies for www.amazon.com 

* RESULT
Only one record can be selected at a time, so all the cookies can&apos;t be deleted in bulk.

* EXPECTED RESULT
Either multiple selection should be allowed, OR when deleting a record, the next or previous indexed row should be selected, to make rapid-fire delete clicks quickly delete all the records. 

* NOTES 
I think this has been a problem since the inception of cookie listing in the inspector.  Not sure how it behaves on Windows, only tested on Mac OS 10.6.x/10.7.x</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1056426</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2014-12-17 11:23:02 -0800</bug_when>
    <thetext>&lt;rdar://problem/19281525&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1187664</commentid>
    <comment_count>2</comment_count>
    <who name="Matt Baker">mattbaker</who>
    <bug_when>2016-04-26 23:28:26 -0700</bug_when>
    <thetext>Adding multiple selection to the grid comes up from time to time, and this seems like a good time to add it. I&apos;ll pattern the UI on multiple selection in OS X (Finder, grid controls, etc):

Shift-Click — select a range of rows
Command-Click — toggle the row&apos;s selected state, without affecting other selected rows
Command-A — select all
Shift-Command-A — deselect all

It&apos;s tempting to use the delete key to remove rows. Using context menus or the mouse can be cumbersome (and an Accessibility consideration as well).

Note: Other ports may want to change the shortcuts to something more appropriate.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1460687</commentid>
    <comment_count>3</comment_count>
      <attachid>350042</attachid>
    <who name="Matt Baker">mattbaker</who>
    <bug_when>2018-09-18 13:00:09 -0700</bug_when>
    <thetext>Created attachment 350042
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1460857</commentid>
    <comment_count>4</comment_count>
      <attachid>350042</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2018-09-18 22:57:10 -0700</bug_when>
    <thetext>Comment on attachment 350042
WIP

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

&gt; Source/WebInspectorUI/UserInterface/Views/CookieStorageContentView.js:-100
&gt; -            columns.size.title = WI.UIString(&quot;Size&quot;);

Do we not want to show size information anymore?

&gt; Source/WebInspectorUI/UserInterface/Views/CookieStorageContentView.js:86
&gt; +        this._cookies = this._cookies.sort(comparator);

NIT: no need to reassign `this._cookies` since `.sort()` is in-place.

&gt; Source/WebInspectorUI/UserInterface/Views/CookieStorageContentView.js:112
&gt; +    tableSelectedRowChanged(table, rowIndex)

Oops?

&gt; Source/WebInspectorUI/UserInterface/Views/CookieStorageContentView.js:136
&gt; +            cell.textContent = cookie.expires ? cookie.expires.toLocaleString() : WI.UIString(&quot;Session&quot;);

Is &quot;Session&quot; something we want to style differently, similar to &quot;(memory)&quot; in the Network tab?

&gt; Source/WebInspectorUI/UserInterface/Views/CookieStorageContentView.js:205
&gt; +        if (!sortColumnIdentifier) {

Is this ever possible?  Shouldn&apos;t there always be a sort?

&gt; Source/WebInspectorUI/UserInterface/Views/CookieStorageContentView.js:218
&gt; +            // String.

This comments isn&apos;t really necessary.

&gt; Source/WebInspectorUI/UserInterface/Views/CookieStorageContentView.js:224
&gt; +            // Boolean.

Ditto (218).

&gt; Source/WebInspectorUI/UserInterface/Views/CookieStorageContentView.js:229
&gt; +            // Date.

Ditto (218).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1466178</commentid>
    <comment_count>5</comment_count>
      <attachid>351546</attachid>
    <who name="Matt Baker">mattbaker</who>
    <bug_when>2018-10-03 14:14:34 -0700</bug_when>
    <thetext>Created attachment 351546
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1466179</commentid>
    <comment_count>6</comment_count>
      <attachid>351546</attachid>
    <who name="Matt Baker">mattbaker</who>
    <bug_when>2018-10-03 14:15:34 -0700</bug_when>
    <thetext>Comment on attachment 351546
WIP

Still needs refinements to column widths.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1466180</commentid>
    <comment_count>7</comment_count>
    <who name="Matt Baker">mattbaker</who>
    <bug_when>2018-10-03 14:17:48 -0700</bug_when>
    <thetext>This WIP patch includes new table delegate methods that will be introduced in https://bugs.webkit.org/show_bug.cgi?id=189803. Ignore them for now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1466199</commentid>
    <comment_count>8</comment_count>
      <attachid>351546</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2018-10-03 15:19:16 -0700</bug_when>
    <thetext>Comment on attachment 351546
WIP

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

&gt; Source/WebInspectorUI/UserInterface/Views/CookieStorageContentView.js:58
&gt; +            this._table.reloadData();

You should put this behind a `didInitialLayout` check, since it might not always play out nicely (`update` is called in the constructor).  Additionally, calling `reloadData` in `initialLayout` might also be needed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1472168</commentid>
    <comment_count>9</comment_count>
      <attachid>353102</attachid>
    <who name="Matt Baker">mattbaker</who>
    <bug_when>2018-10-25 13:19:48 -0700</bug_when>
    <thetext>Created attachment 353102
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1472321</commentid>
    <comment_count>10</comment_count>
      <attachid>353155</attachid>
    <who name="Matt Baker">mattbaker</who>
    <bug_when>2018-10-25 21:26:41 -0700</bug_when>
    <thetext>Created attachment 353155
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1472322</commentid>
    <comment_count>11</comment_count>
    <who name="Matt Baker">mattbaker</who>
    <bug_when>2018-10-25 21:27:31 -0700</bug_when>
    <thetext>(In reply to Matt Baker from comment #10)
&gt; Created attachment 353155 [details]
&gt; Patch

Fixed an issue where the sort comparator wasn&apos;t being applied after reloading cookies.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1472338</commentid>
    <comment_count>12</comment_count>
      <attachid>353102</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2018-10-25 22:36:59 -0700</bug_when>
    <thetext>Comment on attachment 353102
Patch

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

r-, as this doesn&apos;t re-sort when fetching new cookies

&gt; Source/WebInspectorUI/UserInterface/Views/CookieStorageContentView.js:41
&gt; +        this._removeSelectedCookiesNavigationItem.addEventListener(WI.ButtonNavigationItem.Event.Clicked, () =&gt; { this._table.removeSelectedRows(); });

NIT: I prefer to make class functions even for cases like this, but it&apos;s not a strong preference

&gt; Source/WebInspectorUI/UserInterface/Views/CookieStorageContentView.js:74
&gt; +        let comparator = this._generateSortComparator();

You should save this to a member variable so that it can be used in other places (similar to `WI.NetworkTableContentView`).

&gt; Source/WebInspectorUI/UserInterface/Views/CookieStorageContentView.js:88
&gt; +        contextMenu.appendSeparator();

NIT: you might want to add a separator below &quot;Delete&quot; as well

&gt; Source/WebInspectorUI/UserInterface/Views/CookieStorageContentView.js:90
&gt; +            if (table.isRowSelected(rowIndex))

NIT: we should have some sort of visual distinction for the contextmenu row, as it&apos;s not always clear what row it&apos;ll effect.  Finder uses an inset blue border.

&gt; Source/WebInspectorUI/UserInterface/Views/CookieStorageContentView.js:168
&gt; +        this._table.addColumn(new WI.TableColumn(&quot;name&quot;, WI.UIString(&quot;Name&quot;), {minWidth: 150, maxWidth: 300, initialWidth: 200, resizeType: WI.TableColumn.ResizeType.Locked}));

Style: I&apos;d prefer it if objects with many properties like this were spread out onto separate lines.  It makes it easier to read (and any future diffs cleaner).  Same is true for all the calls below.

&gt; Source/WebInspectorUI/UserInterface/Views/CookieStorageContentView.js:170
&gt; +        this._table.addColumn(new WI.TableColumn(&quot;domain&quot;, WI.unlocalizedString(&quot;Domain&quot;), {}));

Style: the `{}` is not needed

&gt; Source/WebInspectorUI/UserInterface/Views/CookieStorageContentView.js:242
&gt; +                let aExpires = a.expires;

Style: since these values are plain members on a `WI.Cookie`, I don&apos;t think it&apos;s necessary to save them to a variable

&gt; Source/WebInspectorUI/UserInterface/Views/CookieStorageContentView.js:253
&gt; +            console.assert(&quot;Unexpected sort column&quot;, sortColumnIdentifier);

NIT: you should also return here

&gt; Source/WebInspectorUI/UserInterface/Views/CookieStorageContentView.js:268
&gt; +            this._cookies = this._filterCookies(payload.cookies);

You need to resort this based on the current sort.

&gt; Source/WebInspectorUI/UserInterface/Views/CookieStorageContentView.js:277
&gt; +        if (event.keyCode === 8 || event.keyCode === 46)

Can you use `WI.KeyboardShortcut.Key.Backspace.key`?  Would it also be valid to just use `event.key === &quot;Backspace&quot;`?

&gt; Source/WebInspectorUI/UserInterface/Views/Table.js:1345
&gt; +        if (!this._delegate.tableCellContextMenuClicked)

This shouldn&apos;t be necessary, `_handleContextMenu` isn&apos;t added unless `this._delegate.tableCellContextMenuClicked` is defined</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1472339</commentid>
    <comment_count>13</comment_count>
      <attachid>353102</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2018-10-25 22:40:32 -0700</bug_when>
    <thetext>Comment on attachment 353102
Patch

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

&gt;&gt; Source/WebInspectorUI/UserInterface/Views/CookieStorageContentView.js:268
&gt;&gt; +            this._cookies = this._filterCookies(payload.cookies);
&gt; 
&gt; You need to resort this based on the current sort.

Just saw that attachment 353155 fixes this.  My mistake :P</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1472340</commentid>
    <comment_count>14</comment_count>
      <attachid>353155</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2018-10-25 22:45:40 -0700</bug_when>
    <thetext>Comment on attachment 353155
Patch

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

&gt; Source/WebInspectorUI/UserInterface/Views/CookieStorageContentView.js:42
&gt; +        this._removeSelectedCookiesNavigationItem.addEventListener(WI.ButtonNavigationItem.Event.Clicked, () =&gt; { this._table.removeSelectedRows(); });

This seems somewhat off.  In every other case in WebInspector, the &quot;clear&quot; button wipes out everything in that view.  Is there a reason that we don&apos;t want to do that here?

&gt; Source/WebInspectorUI/UserInterface/Views/CookieStorageContentView.js:81
&gt; +        this._table.reloadData();

I&apos;d move this inside `_updateSort`, since whenever you change the order of the rows, you&apos;d also want to re-render them.

&gt; Source/WebInspectorUI/UserInterface/Views/CookieStorageContentView.js:165
&gt; +        super.initialLayout();

You should add back the FIXME for &lt;https://webkit.org/b/151400&gt; (or just fix it).

&gt; Source/WebInspectorUI/UserInterface/Views/CookieStorageContentView.js:270
&gt; +            this._cookies = this._filterCookies(payload.cookies);

Not sure if this is in the &quot;scope&quot; of this patch, but the previous selection isn&apos;t restored when refreshing.

Also, the `_removeSelectedCookiesNavigationItem` stays `enabled` after refreshing, even though nothing is selected.

&gt; Source/WebInspectorUI/UserInterface/Views/CookieStorageContentView.js:272
&gt; +            this._table.reloadData();

Ditto (81)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1472341</commentid>
    <comment_count>15</comment_count>
      <attachid>353155</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2018-10-25 22:50:11 -0700</bug_when>
    <thetext>Comment on attachment 353155
Patch

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

&gt; Source/WebInspectorUI/UserInterface/Views/CookieStorageContentView.js:110
&gt; +            this._cookies.splice(index, 1);

This causes the assertion on 106 (and Table.js:1500) to fire, since you&apos;re mutating the array while trying to retrieve values from it.  You should copy/filter/separate `_cookies` based on whether the index is in `rowIndexes`.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1473541</commentid>
    <comment_count>16</comment_count>
      <attachid>353102</attachid>
    <who name="Matt Baker">mattbaker</who>
    <bug_when>2018-10-30 17:53:38 -0700</bug_when>
    <thetext>Comment on attachment 353102
Patch

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

&gt;&gt; Source/WebInspectorUI/UserInterface/Views/CookieStorageContentView.js:74
&gt;&gt; +        let comparator = this._generateSortComparator();
&gt; 
&gt; You should save this to a member variable so that it can be used in other places (similar to `WI.NetworkTableContentView`).

This was changed in: https://bugs.webkit.org/attachment.cgi?id=353155&amp;action=diff

&gt;&gt; Source/WebInspectorUI/UserInterface/Views/CookieStorageContentView.js:90
&gt;&gt; +            if (table.isRowSelected(rowIndex))
&gt; 
&gt; NIT: we should have some sort of visual distinction for the contextmenu row, as it&apos;s not always clear what row it&apos;ll effect.  Finder uses an inset blue border.

Agree. Filed an issue for this:

Web Inspector: Table should style an unselected row when it is right-clicked
https://bugs.webkit.org/show_bug.cgi?id=191095

&gt;&gt; Source/WebInspectorUI/UserInterface/Views/CookieStorageContentView.js:168
&gt;&gt; +        this._table.addColumn(new WI.TableColumn(&quot;name&quot;, WI.UIString(&quot;Name&quot;), {minWidth: 150, maxWidth: 300, initialWidth: 200, resizeType: WI.TableColumn.ResizeType.Locked}));
&gt; 
&gt; Style: I&apos;d prefer it if objects with many properties like this were spread out onto separate lines.  It makes it easier to read (and any future diffs cleaner).  Same is true for all the calls below.

Agreed. I&apos;m also going to come up with some more reasonable values for min/max/initialWidth.

&gt;&gt; Source/WebInspectorUI/UserInterface/Views/CookieStorageContentView.js:277
&gt;&gt; +        if (event.keyCode === 8 || event.keyCode === 46)
&gt; 
&gt; Can you use `WI.KeyboardShortcut.Key.Backspace.key`?  Would it also be valid to just use `event.key === &quot;Backspace&quot;`?

I changed it to:

if (event.keyCode === WI.KeyboardShortcut.Key.Backspace.keyCode || event.keyCode === WI.KeyboardShortcut.Key.Delete.keyCode) { ... }

It&apos;s a little long, but very clear.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1474225</commentid>
    <comment_count>17</comment_count>
      <attachid>353635</attachid>
    <who name="Matt Baker">mattbaker</who>
    <bug_when>2018-11-01 12:26:27 -0700</bug_when>
    <thetext>Created attachment 353635
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1474226</commentid>
    <comment_count>18</comment_count>
    <who name="Matt Baker">mattbaker</who>
    <bug_when>2018-11-01 12:27:47 -0700</bug_when>
    <thetext>(In reply to Matt Baker from comment #17)
&gt; Created attachment 353635 [details]
&gt; Patch

I removed the &quot;Remove Cookies&quot; button. I agree it was confusing since elsewhere it means &quot;Clear All&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1474578</commentid>
    <comment_count>19</comment_count>
      <attachid>353635</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2018-11-02 11:44:37 -0700</bug_when>
    <thetext>Comment on attachment 353635
Patch

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

r=me, nice work!

&gt; Source/WebInspectorUI/UserInterface/Views/CookieStorageContentView.js:110
&gt; +            let cookieURL = (cookie.secure ? &quot;https://&quot; : &quot;http://&quot;) + cookie.domain + cookie.path;

This should probably be a member of `WI.Cookie`.

&gt; Source/WebInspectorUI/UserInterface/Views/CookieStorageContentView.js:164
&gt; +            minWidth: 70,

Just out of curiosity, where did you get these values?

&gt; Source/WebInspectorUI/UserInterface/Views/CookieStorageContentView.js:317
&gt; +    _reloadCookies()

It might be worth adding this to a `shown()` function, so that it auto-updates whenever the view becomes visible (only once `didInitialLayout`).

&gt; Source/WebInspectorUI/UserInterface/Views/CookieStorageContentView.js:319
&gt; +        PageAgent.getCookies().then((payload) =&gt; {

I wish we had a manager for this so that it isn&apos;t directly invoked by view code :(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1474589</commentid>
    <comment_count>20</comment_count>
      <attachid>353635</attachid>
    <who name="Matt Baker">mattbaker</who>
    <bug_when>2018-11-02 12:10:47 -0700</bug_when>
    <thetext>Comment on attachment 353635
Patch

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

&gt;&gt; Source/WebInspectorUI/UserInterface/Views/CookieStorageContentView.js:110
&gt;&gt; +            let cookieURL = (cookie.secure ? &quot;https://&quot; : &quot;http://&quot;) + cookie.domain + cookie.path;
&gt; 
&gt; This should probably be a member of `WI.Cookie`.

Good idea. I&apos;ve added a FIXME to do this in:

Web Inspector: Cookies view should use model objects instead of raw payload data
https://bugs.webkit.org/show_bug.cgi?id=189533

&gt;&gt; Source/WebInspectorUI/UserInterface/Views/CookieStorageContentView.js:164
&gt;&gt; +            minWidth: 70,
&gt; 
&gt; Just out of curiosity, where did you get these values?

Experimentation. For minimum width in particular, I checked that the column header and sort arrow fit without being truncated. We may need to adjust these values after living on this.

&gt;&gt; Source/WebInspectorUI/UserInterface/Views/CookieStorageContentView.js:317
&gt;&gt; +    _reloadCookies()
&gt; 
&gt; It might be worth adding this to a `shown()` function, so that it auto-updates whenever the view becomes visible (only once `didInitialLayout`).

Maybe, but for now I wanted to keep the original behavior. Currently we automatically load cookies on initialLayout only.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1474590</commentid>
    <comment_count>21</comment_count>
      <attachid>353723</attachid>
    <who name="Matt Baker">mattbaker</who>
    <bug_when>2018-11-02 12:13:59 -0700</bug_when>
    <thetext>Created attachment 353723
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1474593</commentid>
    <comment_count>22</comment_count>
      <attachid>353723</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-11-02 12:39:11 -0700</bug_when>
    <thetext>Comment on attachment 353723
Patch for landing

Clearing flags on attachment: 353723

Committed r237746: &lt;https://trac.webkit.org/changeset/237746&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1474594</commentid>
    <comment_count>23</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2018-11-02 12:39:13 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>350042</attachid>
            <date>2018-09-18 13:00:09 -0700</date>
            <delta_ts>2018-10-03 14:14:33 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>bug-66381-20180918130005.patch</filename>
            <type>text/plain</type>
            <size>13935</size>
            <attacher name="Matt Baker">mattbaker</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM2MTQ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwppbmRleCAw
MzI4ZDgxMThiZjhiN2Q3ZmYxMTY4ODMwYzdiZmE5YWM5NTU1MGFjLi5jYWRmZTgxM2ZmMWZiYWMy
ZTc0NzJkOWZkZjM2NDFmNmYzNWI5ZmNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyOSBAQAorMjAxOC0wOS0xOCAgTWF0dCBCYWtlciAgPG1hdHRiYWtlckBhcHBsZS5jb20+
CisKKyAgICAgICAgV2ViIEluc3BlY3Rvcjogc3VwcG9ydCBtdWx0aXBsZSBzZWxlY3Rpb24vZGVs
ZXRpb24gb2YgY29va2llIHJlY29yZHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTY2MzgxCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8xOTI4MTUyNT4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFVzZXJJ
bnRlcmZhY2UvVmlld3MvQ29va2llU3RvcmFnZUNvbnRlbnRWaWV3LmpzOgorICAgICAgICAoV0ku
Q29va2llU3RvcmFnZUNvbnRlbnRWaWV3KToKKyAgICAgICAgKFdJLkNvb2tpZVN0b3JhZ2VDb250
ZW50Vmlldy5wcm90b3R5cGUudXBkYXRlKToKKyAgICAgICAgKFdJLkNvb2tpZVN0b3JhZ2VDb250
ZW50Vmlldy5wcm90b3R5cGUuZ2V0IHNjcm9sbGFibGVFbGVtZW50cyk6CisgICAgICAgIChXSS5D
b29raWVTdG9yYWdlQ29udGVudFZpZXcucHJvdG90eXBlLnRhYmxlTnVtYmVyT2ZSb3dzKToKKyAg
ICAgICAgKFdJLkNvb2tpZVN0b3JhZ2VDb250ZW50Vmlldy5wcm90b3R5cGUudGFibGVTb3J0Q2hh
bmdlZCk6CisgICAgICAgIChXSS5Db29raWVTdG9yYWdlQ29udGVudFZpZXcucHJvdG90eXBlLnRh
YmxlQ2VsbE1vdXNlRG93bik6CisgICAgICAgIChXSS5Db29raWVTdG9yYWdlQ29udGVudFZpZXcu
cHJvdG90eXBlLnRhYmxlQ2VsbENvbnRleHRNZW51Q2xpY2tlZCk6CisgICAgICAgIChXSS5Db29r
aWVTdG9yYWdlQ29udGVudFZpZXcucHJvdG90eXBlLnRhYmxlU2VsZWN0ZWRSb3dDaGFuZ2VkKToK
KyAgICAgICAgKFdJLkNvb2tpZVN0b3JhZ2VDb250ZW50Vmlldy5wcm90b3R5cGUudGFibGVQb3B1
bGF0ZUNlbGwpOgorICAgICAgICAoV0kuQ29va2llU3RvcmFnZUNvbnRlbnRWaWV3LnByb3RvdHlw
ZS5pbml0aWFsTGF5b3V0KToKKyAgICAgICAgKFdJLkNvb2tpZVN0b3JhZ2VDb250ZW50Vmlldy5w
cm90b3R5cGUuX2dlbmVyYXRlU29ydENvbXBhcmF0b3IpOgorICAgICAgICAoV0kuQ29va2llU3Rv
cmFnZUNvbnRlbnRWaWV3LnByb3RvdHlwZS5fcmVidWlsZFRhYmxlKTogRGVsZXRlZC4KKyAgICAg
ICAgKFdJLkNvb2tpZVN0b3JhZ2VDb250ZW50Vmlldy5wcm90b3R5cGUuX3NvcnREYXRhR3JpZC5s
b2NhbGVDb21wYXJlKTogRGVsZXRlZC4KKyAgICAgICAgKFdJLkNvb2tpZVN0b3JhZ2VDb250ZW50
Vmlldy5wcm90b3R5cGUuX3NvcnREYXRhR3JpZC5udW1iZXJDb21wYXJlKTogRGVsZXRlZC4KKyAg
ICAgICAgKFdJLkNvb2tpZVN0b3JhZ2VDb250ZW50Vmlldy5wcm90b3R5cGUuX3NvcnREYXRhR3Jp
ZC5leHBpcmVzQ29tcGFyZSk6IERlbGV0ZWQuCisgICAgICAgIChXSS5Db29raWVTdG9yYWdlQ29u
dGVudFZpZXcucHJvdG90eXBlLl9zb3J0RGF0YUdyaWQpOiBEZWxldGVkLgorCiAyMDE4LTA5LTE3
ICBEZXZpbiBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVj
dG9yOiBnZW5lcmF0ZSBDU1NLZXl3b3JkQ29tcGxldGlvbnMgZnJvbSBiYWNrZW5kIHZhbHVlcwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ29v
a2llU3RvcmFnZUNvbnRlbnRWaWV3LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvVmlld3MvQ29va2llU3RvcmFnZUNvbnRlbnRWaWV3LmpzCmluZGV4IDBmNmY2MjcxNmZj
NTNmZmM2M2JjYWRkMjQ3ODZiNzdjMDA2ZTkxZmQuLjFmMzFhNzhiYzBhODkyZDMzMjZkMTU1ZGNm
Nzc3NDA4NGMwOWI4MTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL1ZpZXdzL0Nvb2tpZVN0b3JhZ2VDb250ZW50Vmlldy5qcworKysgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Db29raWVTdG9yYWdlQ29udGVudFZpZXcu
anMKQEAgLTMxLDYgKzMxLDkgQEAgV0kuQ29va2llU3RvcmFnZUNvbnRlbnRWaWV3ID0gY2xhc3Mg
Q29va2llU3RvcmFnZUNvbnRlbnRWaWV3IGV4dGVuZHMgV0kuQ29udGVudFYKIAogICAgICAgICB0
aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmFkZCgiY29va2llLXN0b3JhZ2UiKTsKIAorICAgICAgICB0
aGlzLl9jb29raWVzID0gW107CisgICAgICAgIHRoaXMuX3RhYmxlID0gbnVsbDsKKwogICAgICAg
ICB0aGlzLl9yZWZyZXNoQnV0dG9uTmF2aWdhdGlvbkl0ZW0gPSBuZXcgV0kuQnV0dG9uTmF2aWdh
dGlvbkl0ZW0oImNvb2tpZS1zdG9yYWdlLXJlZnJlc2giLCBXSS5VSVN0cmluZygiUmVmcmVzaCIp
LCAiSW1hZ2VzL1JlbG9hZEZ1bGwuc3ZnIiwgMTMsIDEzKTsKICAgICAgICAgdGhpcy5fcmVmcmVz
aEJ1dHRvbk5hdmlnYXRpb25JdGVtLmFkZEV2ZW50TGlzdGVuZXIoV0kuQnV0dG9uTmF2aWdhdGlv
bkl0ZW0uRXZlbnQuQ2xpY2tlZCwgdGhpcy5fcmVmcmVzaEJ1dHRvbkNsaWNrZWQsIHRoaXMpOwog
CkBAIC00OCw3ICs1MSw3IEBAIFdJLkNvb2tpZVN0b3JhZ2VDb250ZW50VmlldyA9IGNsYXNzIENv
b2tpZVN0b3JhZ2VDb250ZW50VmlldyBleHRlbmRzIFdJLkNvbnRlbnRWCiAgICAgewogICAgICAg
ICBQYWdlQWdlbnQuZ2V0Q29va2llcygpLnRoZW4oKHBheWxvYWQpID0+IHsKICAgICAgICAgICAg
IHRoaXMuX2Nvb2tpZXMgPSB0aGlzLl9maWx0ZXJDb29raWVzKHBheWxvYWQuY29va2llcyk7Ci0g
ICAgICAgICAgICB0aGlzLl9yZWJ1aWxkVGFibGUoKTsKKyAgICAgICAgICAgIHRoaXMuX3RhYmxl
LnJlbG9hZERhdGEoKTsKICAgICAgICAgfSkuY2F0Y2goKGVycm9yKSA9PiB7CiAgICAgICAgICAg
ICBjb25zb2xlLmVycm9yKCJDb3VsZCBub3QgZmV0Y2ggY29va2llczogIiwgZXJyb3IpOwogICAg
ICAgICB9KTsKQEAgLTYyLDk3ICs2NSwxMTcgQEAgV0kuQ29va2llU3RvcmFnZUNvbnRlbnRWaWV3
ID0gY2xhc3MgQ29va2llU3RvcmFnZUNvbnRlbnRWaWV3IGV4dGVuZHMgV0kuQ29udGVudFYKIAog
ICAgIGdldCBzY3JvbGxhYmxlRWxlbWVudHMoKQogICAgIHsKLSAgICAgICAgaWYgKCF0aGlzLl9k
YXRhR3JpZCkKKyAgICAgICAgaWYgKCF0aGlzLl90YWJsZSkKICAgICAgICAgICAgIHJldHVybiBb
XTsKLSAgICAgICAgcmV0dXJuIFt0aGlzLl9kYXRhR3JpZC5zY3JvbGxDb250YWluZXJdOworICAg
ICAgICByZXR1cm4gW3RoaXMuX3RhYmxlLnNjcm9sbENvbnRhaW5lcl07CiAgICAgfQogCi0gICAg
Ly8gUHJpdmF0ZQorICAgIC8vIFRhYmxlIGRhdGFTb3VyY2UKIAotICAgIF9yZWJ1aWxkVGFibGUo
KQotICAgIHsKLSAgICAgICAgLy8gRklYTUUgPGh0dHBzOi8vd2Via2l0Lm9yZy9iLzE1MTQwMD46
IElmIHRoZXJlIGFyZSBubyBjb29raWVzLCBhZGQgcGxhY2Vob2xkZXIgZXhwbGFuYXRvcnkgdGV4
dC4KLSAgICAgICAgaWYgKCF0aGlzLl9kYXRhR3JpZCkgewotICAgICAgICAgICAgdmFyIGNvbHVt
bnMgPSB7bmFtZToge30sIHZhbHVlOiB7fSwgZG9tYWluOiB7fSwgcGF0aDoge30sIGV4cGlyZXM6
IHt9LCBzaXplOiB7fSwgaHR0cDoge30sIHNlY3VyZToge30sIHNhbWVTaXRlOiB7fX07Ci0KLSAg
ICAgICAgICAgIGNvbHVtbnMubmFtZS50aXRsZSA9IFdJLlVJU3RyaW5nKCJOYW1lIik7Ci0gICAg
ICAgICAgICBjb2x1bW5zLm5hbWUuc29ydGFibGUgPSB0cnVlOwotICAgICAgICAgICAgY29sdW1u
cy5uYW1lLndpZHRoID0gIjI0JSI7Ci0gICAgICAgICAgICBjb2x1bW5zLm5hbWUubG9ja2VkID0g
dHJ1ZTsKLQotICAgICAgICAgICAgY29sdW1ucy52YWx1ZS50aXRsZSA9IFdJLlVJU3RyaW5nKCJW
YWx1ZSIpOwotICAgICAgICAgICAgY29sdW1ucy52YWx1ZS5zb3J0YWJsZSA9IHRydWU7Ci0gICAg
ICAgICAgICBjb2x1bW5zLnZhbHVlLndpZHRoID0gIjM0JSI7Ci0gICAgICAgICAgICBjb2x1bW5z
LnZhbHVlLmxvY2tlZCA9IHRydWU7Ci0KLSAgICAgICAgICAgIGNvbHVtbnMuZG9tYWluLnRpdGxl
ID0gV0kuVUlTdHJpbmcoIkRvbWFpbiIpOwotICAgICAgICAgICAgY29sdW1ucy5kb21haW4uc29y
dGFibGUgPSB0cnVlOwotICAgICAgICAgICAgY29sdW1ucy5kb21haW4ud2lkdGggPSAiNiUiOwot
Ci0gICAgICAgICAgICBjb2x1bW5zLnBhdGgudGl0bGUgPSBXSS5VSVN0cmluZygiUGF0aCIpOwot
ICAgICAgICAgICAgY29sdW1ucy5wYXRoLnNvcnRhYmxlID0gdHJ1ZTsKLSAgICAgICAgICAgIGNv
bHVtbnMucGF0aC53aWR0aCA9ICI2JSI7Ci0KLSAgICAgICAgICAgIGNvbHVtbnMuZXhwaXJlcy50
aXRsZSA9IFdJLlVJU3RyaW5nKCJFeHBpcmVzIik7Ci0gICAgICAgICAgICBjb2x1bW5zLmV4cGly
ZXMuc29ydGFibGUgPSB0cnVlOwotICAgICAgICAgICAgY29sdW1ucy5leHBpcmVzLndpZHRoID0g
IjYlIjsKLQotICAgICAgICAgICAgY29sdW1ucy5zaXplLnRpdGxlID0gV0kuVUlTdHJpbmcoIlNp
emUiKTsKLSAgICAgICAgICAgIGNvbHVtbnMuc2l6ZS5hbGlnbmVkID0gInJpZ2h0IjsKLSAgICAg
ICAgICAgIGNvbHVtbnMuc2l6ZS5zb3J0YWJsZSA9IHRydWU7Ci0gICAgICAgICAgICBjb2x1bW5z
LnNpemUud2lkdGggPSAiNiUiOwotCi0gICAgICAgICAgICBjb2x1bW5zLmh0dHAudGl0bGUgPSBX
SS5VSVN0cmluZygiSFRUUCIpOwotICAgICAgICAgICAgY29sdW1ucy5odHRwLmFsaWduZWQgPSAi
Y2VudGVyZWQiOwotICAgICAgICAgICAgY29sdW1ucy5odHRwLnNvcnRhYmxlID0gdHJ1ZTsKLSAg
ICAgICAgICAgIGNvbHVtbnMuaHR0cC53aWR0aCA9ICI2JSI7Ci0KLSAgICAgICAgICAgIGNvbHVt
bnMuc2VjdXJlLnRpdGxlID0gV0kuVUlTdHJpbmcoIlNlY3VyZSIpOwotICAgICAgICAgICAgY29s
dW1ucy5zZWN1cmUuYWxpZ25lZCA9ICJjZW50ZXJlZCI7Ci0gICAgICAgICAgICBjb2x1bW5zLnNl
Y3VyZS5zb3J0YWJsZSA9IHRydWU7Ci0gICAgICAgICAgICBjb2x1bW5zLnNlY3VyZS53aWR0aCA9
ICI2JSI7Ci0KLSAgICAgICAgICAgIGNvbHVtbnMuc2FtZVNpdGUudGl0bGUgPSBXSS5VSVN0cmlu
ZygiU2FtZS1TaXRlIik7Ci0gICAgICAgICAgICBjb2x1bW5zLnNhbWVTaXRlLnNvcnRhYmxlID0g
dHJ1ZTsKLSAgICAgICAgICAgIGNvbHVtbnMuc2FtZVNpdGUud2lkdGggPSAiNiUiOwotCi0gICAg
ICAgICAgICB0aGlzLl9kYXRhR3JpZCA9IG5ldyBXSS5EYXRhR3JpZChjb2x1bW5zLCBudWxsLCB0
aGlzLl9kZWxldGVDYWxsYmFjay5iaW5kKHRoaXMpKTsKLSAgICAgICAgICAgIHRoaXMuX2RhdGFH
cmlkLmNvbHVtbkNob29zZXJFbmFibGVkID0gdHJ1ZTsKLSAgICAgICAgICAgIHRoaXMuX2RhdGFH
cmlkLmFkZEV2ZW50TGlzdGVuZXIoV0kuRGF0YUdyaWQuRXZlbnQuU29ydENoYW5nZWQsIHRoaXMu
X3NvcnREYXRhR3JpZCwgdGhpcyk7Ci0gICAgICAgICAgICB0aGlzLl9kYXRhR3JpZC5zb3J0Q29s
dW1uSWRlbnRpZmllciA9ICJuYW1lIjsKLSAgICAgICAgICAgIHRoaXMuX2RhdGFHcmlkLmNyZWF0
ZVNldHRpbmdzKCJjb29raWUtc3RvcmFnZS1jb250ZW50LXZpZXciKTsKLQotICAgICAgICAgICAg
dGhpcy5hZGRTdWJ2aWV3KHRoaXMuX2RhdGFHcmlkKTsKLSAgICAgICAgICAgIHRoaXMuX2RhdGFH
cmlkLnVwZGF0ZUxheW91dCgpOwotICAgICAgICB9CisgICAgdGFibGVOdW1iZXJPZlJvd3ModGFi
bGUpCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5fY29va2llcy5sZW5ndGg7CisgICAgfQog
Ci0gICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMuX2RhdGFHcmlkKTsKLSAgICAgICAgdGhpcy5f
ZGF0YUdyaWQucmVtb3ZlQ2hpbGRyZW4oKTsKLQotICAgICAgICBmb3IgKGxldCBjb29raWUgb2Yg
dGhpcy5fY29va2llcykgewotICAgICAgICAgICAgY29uc3QgY2hlY2ttYXJrID0gIlx1MjcxMyI7
Ci0gICAgICAgICAgICB2YXIgZGF0YSA9IHsKLSAgICAgICAgICAgICAgICBuYW1lOiBjb29raWUu
bmFtZSwKLSAgICAgICAgICAgICAgICB2YWx1ZTogY29va2llLnZhbHVlLAotICAgICAgICAgICAg
ICAgIGRvbWFpbjogY29va2llLmRvbWFpbiB8fCAiIiwKLSAgICAgICAgICAgICAgICBwYXRoOiBj
b29raWUucGF0aCB8fCAiIiwKLSAgICAgICAgICAgICAgICBleHBpcmVzOiAiIiwKLSAgICAgICAg
ICAgICAgICBzaXplOiBOdW1iZXIuYnl0ZXNUb1N0cmluZyhjb29raWUuc2l6ZSksCi0gICAgICAg
ICAgICAgICAgaHR0cDogY29va2llLmh0dHBPbmx5ID8gY2hlY2ttYXJrIDogIiIsCi0gICAgICAg
ICAgICAgICAgc2VjdXJlOiBjb29raWUuc2VjdXJlID8gY2hlY2ttYXJrIDogIiIsCi0gICAgICAg
ICAgICAgICAgc2FtZVNpdGU6IGNvb2tpZS5zYW1lU2l0ZSAmJiBjb29raWUuc2FtZVNpdGUgIT09
IFdJLkNvb2tpZS5TYW1lU2l0ZVR5cGUuTm9uZSA/IFdJLkNvb2tpZS5kaXNwbGF5TmFtZUZvclNh
bWVTaXRlVHlwZShjb29raWUuc2FtZVNpdGUpIDogIiIsCi0gICAgICAgICAgICB9OworICAgIHRh
YmxlU29ydENoYW5nZWQodGFibGUpCisgICAgeworICAgICAgICBsZXQgY29tcGFyYXRvciA9IHRo
aXMuX2dlbmVyYXRlU29ydENvbXBhcmF0b3IoKTsKKyAgICAgICAgaWYgKCFjb21wYXJhdG9yKQor
ICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHRoaXMuX2Nvb2tpZXMgPSB0aGlzLl9jb29r
aWVzLnNvcnQoY29tcGFyYXRvcik7CisgICAgICAgIHRoaXMuX3RhYmxlLnJlbG9hZERhdGEoKTsK
KyAgICB9CisKKyAgICAvLyBUYWJsZSBkZWxlZ2F0ZQorCisgICAgdGFibGVDZWxsTW91c2VEb3du
KHRhYmxlLCBjZWxsLCBjb2x1bW4sIHJvd0luZGV4LCBldmVudCkKKyAgICB7CisgICAgICAgIHRo
aXMuX3RhYmxlLnNlbGVjdFJvdyhyb3dJbmRleCk7CisgICAgfQorCisgICAgdGFibGVDZWxsQ29u
dGV4dE1lbnVDbGlja2VkKHRhYmxlLCBjZWxsLCBjb2x1bW4sIHJvd0luZGV4LCBldmVudCkKKyAg
ICB7CisgICAgICAgIGlmIChjb2x1bW4gIT09IHRoaXMuX25hbWVDb2x1bW4pCisgICAgICAgICAg
ICByZXR1cm47CisKKyAgICAgICAgdGhpcy5fdGFibGUuc2VsZWN0Um93KHJvd0luZGV4KTsKKwor
ICAgICAgICBsZXQgZW50cnkgPSB0aGlzLl9maWx0ZXJlZEVudHJpZXNbcm93SW5kZXhdOworICAg
ICAgICBsZXQgY29udGV4dE1lbnUgPSBXSS5Db250ZXh0TWVudS5jcmVhdGVGcm9tRXZlbnQoZXZl
bnQpOworICAgICAgICBXSS5hcHBlbmRDb250ZXh0TWVudUl0ZW1zRm9yU291cmNlQ29kZShjb250
ZXh0TWVudSwgZW50cnkucmVzb3VyY2UpOwogCi0gICAgICAgICAgICBpZiAoY29va2llLnR5cGUg
IT09IFdJLkNvb2tpZVR5cGUuUmVxdWVzdCkKLSAgICAgICAgICAgICAgICBkYXRhWyJleHBpcmVz
Il0gPSBjb29raWUuc2Vzc2lvbiA/IFdJLlVJU3RyaW5nKCJTZXNzaW9uIikgOiBuZXcgRGF0ZShj
b29raWUuZXhwaXJlcykudG9Mb2NhbGVTdHJpbmcoKTsKKyAgICAgICAgY29udGV4dE1lbnUuYXBw
ZW5kU2VwYXJhdG9yKCk7CisgICAgICAgIGNvbnRleHRNZW51LmFwcGVuZEl0ZW0oV0kuVUlTdHJp
bmcoIkV4cG9ydCBIQVIiKSwgKCkgPT4geyB0aGlzLl9leHBvcnRIQVIoKTsgfSk7CisgICAgfQog
Ci0gICAgICAgICAgICB2YXIgbm9kZSA9IG5ldyBXSS5EYXRhR3JpZE5vZGUoZGF0YSk7Ci0gICAg
ICAgICAgICBub2RlLmNvb2tpZSA9IGNvb2tpZTsKKyAgICB0YWJsZVNlbGVjdGVkUm93Q2hhbmdl
ZCh0YWJsZSwgcm93SW5kZXgpCisgICAgeworICAgIH0KIAotICAgICAgICAgICAgdGhpcy5fZGF0
YUdyaWQuYXBwZW5kQ2hpbGQobm9kZSk7CisgICAgdGFibGVQb3B1bGF0ZUNlbGwodGFibGUsIGNl
bGwsIGNvbHVtbiwgcm93SW5kZXgpCisgICAgeworICAgICAgICBsZXQgY29va2llID0gdGhpcy5f
Y29va2llc1tyb3dJbmRleF07CisKKyAgICAgICAgY29uc3QgY2hlY2ttYXJrID0gIlx1MjcxMyI7
CisKKyAgICAgICAgc3dpdGNoIChjb2x1bW4uaWRlbnRpZmllcikgeworICAgICAgICBjYXNlICJu
YW1lIjoKKyAgICAgICAgICAgIGNlbGwudGV4dENvbnRlbnQgPSBjb29raWUubmFtZTsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICBjYXNlICJ2YWx1ZSI6CisgICAgICAgICAgICBjZWxsLnRl
eHRDb250ZW50ID0gY29va2llLnZhbHVlOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNh
c2UgImRvbWFpbiI6CisgICAgICAgICAgICBjZWxsLnRleHRDb250ZW50ID0gY29va2llLmRvbWFp
biB8fCBlbURhc2g7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSAicGF0aCI6Cisg
ICAgICAgICAgICBjZWxsLnRleHRDb250ZW50ID0gY29va2llLnBhdGggfHwgZW1EYXNoOworICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgImV4cGlyZXMiOgorICAgICAgICAgICAgY2Vs
bC50ZXh0Q29udGVudCA9IGNvb2tpZS5leHBpcmVzID8gY29va2llLmV4cGlyZXMudG9Mb2NhbGVT
dHJpbmcoKSA6IFdJLlVJU3RyaW5nKCJTZXNzaW9uIik7CisgICAgICAgICAgICBicmVhazsKKyAg
ICAgICAgY2FzZSAic2VjdXJlIjoKKyAgICAgICAgICAgIGNlbGwudGV4dENvbnRlbnQgPSBjb29r
aWUuc2VjdXJlID8gY2hlY2ttYXJrIDogemVyb1dpZHRoU3BhY2U7CisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgY2FzZSAiaHR0cE9ubHkiOgorICAgICAgICAgICAgY2VsbC50ZXh0Q29udGVu
dCA9IGNvb2tpZS5odHRwT25seSA/IGNoZWNrbWFyayA6IHplcm9XaWR0aFNwYWNlOworICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgInNhbWVTaXRlIjoKKyAgICAgICAgICAgIGNlbGwu
dGV4dENvbnRlbnQgPSBjb29raWUuc2FtZVNpdGUgPT09IFdJLkNvb2tpZS5TYW1lU2l0ZVR5cGUu
Tm9uZSA/IGVtRGFzaCA6IFdJLkNvb2tpZS5kaXNwbGF5TmFtZUZvclNhbWVTaXRlVHlwZShjb29r
aWUuc2FtZVNpdGUpOworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KKworICAgICAgICBy
ZXR1cm4gY2VsbDsKICAgICB9CiAKKyAgICAvLyBQcm90ZWN0ZWQKKworICAgIGluaXRpYWxMYXlv
dXQoKQorICAgIHsKKyAgICAgICAgc3VwZXIuaW5pdGlhbExheW91dCgpOworCisgICAgICAgIHRo
aXMuX3RhYmxlID0gbmV3IFdJLlRhYmxlKCJjb29raWVzLXRhYmxlIiwgdGhpcywgdGhpcywgMjAp
OworICAgICAgICB0aGlzLl90YWJsZS5hbGxvd3NNdWx0aXBsZVNlbGVjdGlvbiA9IHRydWU7CisK
KyAgICAgICAgdGhpcy5fdGFibGUuYWRkQ29sdW1uKG5ldyBXSS5UYWJsZUNvbHVtbigibmFtZSIs
IFdJLlVJU3RyaW5nKCJOYW1lIiksIHttaW5XaWR0aDogMTUwLCBtYXhXaWR0aDogMzAwLCBpbml0
aWFsV2lkdGg6IDIwMCwgcmVzaXplVHlwZTogV0kuVGFibGVDb2x1bW4uUmVzaXplVHlwZS5Mb2Nr
ZWR9KSk7CisgICAgICAgIHRoaXMuX3RhYmxlLmFkZENvbHVtbihuZXcgV0kuVGFibGVDb2x1bW4o
InZhbHVlIiwgV0kuVUlTdHJpbmcoIlZhbHVlIiksIHttaW5XaWR0aDogMTUwLCBoaWRlYWJsZTog
ZmFsc2V9KSk7CisgICAgICAgIHRoaXMuX3RhYmxlLmFkZENvbHVtbihuZXcgV0kuVGFibGVDb2x1
bW4oImRvbWFpbiIsIFdJLnVubG9jYWxpemVkU3RyaW5nKCJEb21haW4iKSwge30pKTsKKyAgICAg
ICAgdGhpcy5fdGFibGUuYWRkQ29sdW1uKG5ldyBXSS5UYWJsZUNvbHVtbigicGF0aCIsIFdJLnVu
bG9jYWxpemVkU3RyaW5nKCJQYXRoIiksIHt9KSk7CisgICAgICAgIHRoaXMuX3RhYmxlLmFkZENv
bHVtbihuZXcgV0kuVGFibGVDb2x1bW4oImV4cGlyZXMiLCBXSS51bmxvY2FsaXplZFN0cmluZygi
RXhwaXJlcyIpLCB7bWF4V2lkdGg6IDE1MH0pKTsKKyAgICAgICAgdGhpcy5fdGFibGUuYWRkQ29s
dW1uKG5ldyBXSS5UYWJsZUNvbHVtbigic2VjdXJlIiwgV0kudW5sb2NhbGl6ZWRTdHJpbmcoIlNl
Y3VyZSIpLCB7bWluV2lkdGg6IDU1LCBtYXhXaWR0aDogNjUsIGFsaWduOiAiY2VudGVyIn0pKTsK
KyAgICAgICAgdGhpcy5fdGFibGUuYWRkQ29sdW1uKG5ldyBXSS5UYWJsZUNvbHVtbigiaHR0cE9u
bHkiLCBXSS51bmxvY2FsaXplZFN0cmluZygiSHR0cE9ubHkiKSwge21pbldpZHRoOiA1NSwgbWF4
V2lkdGg6IDY1LCBhbGlnbjogImNlbnRlciJ9KSk7CisgICAgICAgIHRoaXMuX3RhYmxlLmFkZENv
bHVtbihuZXcgV0kuVGFibGVDb2x1bW4oInNhbWVTaXRlIiwgV0kudW5sb2NhbGl6ZWRTdHJpbmco
IlNhbWVTaXRlIiksIHttaW5XaWR0aDogNTUsIG1heFdpZHRoOiA2NX0pKTsKKworICAgICAgICBp
ZiAoIXRoaXMuX3RhYmxlLnNvcnRDb2x1bW5JZGVudGlmaWVyKSB7CisgICAgICAgICAgICB0aGlz
Ll90YWJsZS5zb3J0T3JkZXIgPSBXSS5UYWJsZS5Tb3J0T3JkZXIuQXNjZW5kaW5nOworICAgICAg
ICAgICAgdGhpcy5fdGFibGUuc29ydENvbHVtbklkZW50aWZpZXIgPSAibmFtZSI7CisgICAgICAg
IH0KKworICAgICAgICB0aGlzLmFkZFN1YnZpZXcodGhpcy5fdGFibGUpOworICAgIH0KKyAgICAv
LyBQcml2YXRlCisKICAgICBfZmlsdGVyQ29va2llcyhjb29raWVzKQogICAgIHsKICAgICAgICAg
bGV0IHJlc291cmNlTWF0Y2hlc1N0b3JhZ2VEb21haW4gPSAocmVzb3VyY2UpID0+IHsKQEAgLTE3
Niw0NSArMTk5LDUxIEBAIFdJLkNvb2tpZVN0b3JhZ2VDb250ZW50VmlldyA9IGNsYXNzIENvb2tp
ZVN0b3JhZ2VDb250ZW50VmlldyBleHRlbmRzIFdJLkNvbnRlbnRWCiAgICAgICAgIHJldHVybiBj
b29raWVzRm9yRG9tYWluOwogICAgIH0KIAotICAgIF9zb3J0RGF0YUdyaWQoKQorICAgIF9nZW5l
cmF0ZVNvcnRDb21wYXJhdG9yKCkKICAgICB7Ci0gICAgICAgIGZ1bmN0aW9uIGxvY2FsZUNvbXBh
cmUoZmllbGQsIG5vZGVBLCBub2RlQikKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIChu
b2RlQS5kYXRhW2ZpZWxkXSArICIiKS5leHRlbmRlZExvY2FsZUNvbXBhcmUobm9kZUIuZGF0YVtm
aWVsZF0gKyAiIik7Ci0gICAgICAgIH0KLQotICAgICAgICBmdW5jdGlvbiBudW1iZXJDb21wYXJl
KGZpZWxkLCBub2RlQSwgbm9kZUIpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBub2Rl
QS5jb29raWVbZmllbGRdIC0gbm9kZUIuY29va2llW2ZpZWxkXTsKKyAgICAgICAgbGV0IHNvcnRD
b2x1bW5JZGVudGlmaWVyID0gdGhpcy5fdGFibGUuc29ydENvbHVtbklkZW50aWZpZXI7CisgICAg
ICAgIGlmICghc29ydENvbHVtbklkZW50aWZpZXIpIHsKKyAgICAgICAgICAgIHRoaXMuX2VudHJp
ZXNTb3J0Q29tcGFyYXRvciA9IG51bGw7CisgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0K
IAotICAgICAgICBmdW5jdGlvbiBleHBpcmVzQ29tcGFyZShub2RlQSwgbm9kZUIpCi0gICAgICAg
IHsKLSAgICAgICAgICAgIGlmIChub2RlQS5jb29raWUuc2Vzc2lvbiAhPT0gbm9kZUIuY29va2ll
LnNlc3Npb24pCi0gICAgICAgICAgICAgICAgcmV0dXJuIG5vZGVBLmNvb2tpZS5zZXNzaW9uID8g
LTEgOiAxOwotCi0gICAgICAgICAgICBpZiAobm9kZUEuY29va2llLnNlc3Npb24pCi0gICAgICAg
ICAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICAgICAgICAgIHJldHVybiBub2RlQS5jb29raWUuZXhw
aXJlcyAtIG5vZGVCLmNvb2tpZS5leHBpcmVzOwotICAgICAgICB9CisgICAgICAgIGxldCBjb21w
YXJhdG9yID0gbnVsbDsKKworICAgICAgICBzd2l0Y2ggKHNvcnRDb2x1bW5JZGVudGlmaWVyKSB7
CisgICAgICAgIGNhc2UgIm5hbWUiOgorICAgICAgICBjYXNlICJ2YWx1ZSI6CisgICAgICAgIGNh
c2UgImRvbWFpbiI6CisgICAgICAgIGNhc2UgInBhdGgiOgorICAgICAgICBjYXNlICJzYW1lU2l0
ZSI6CisgICAgICAgICAgICAvLyBTdHJpbmcuCisgICAgICAgICAgICBjb21wYXJhdG9yID0gKGEs
IGIpID0+IChhW3NvcnRDb2x1bW5JZGVudGlmaWVyXSB8fCAiIikuZXh0ZW5kZWRMb2NhbGVDb21w
YXJlKGJbc29ydENvbHVtbklkZW50aWZpZXJdIHx8ICIiKTsKKyAgICAgICAgICAgIGJyZWFrOwor
CisgICAgICAgIGNhc2UgImh0dHBPbmx5IjoKKyAgICAgICAgY2FzZSAic2VjdXJlIjoKKyAgICAg
ICAgICAgIC8vIEJvb2xlYW4uCisgICAgICAgICAgICBjb21wYXJhdG9yID0gKGEsIGIpID0+IGFb
c29ydENvbHVtbklkZW50aWZpZXJdIC0gYltzb3J0Q29sdW1uSWRlbnRpZmllcl07CisgICAgICAg
ICAgICBicmVhazsKKworICAgICAgICBjYXNlICJleHBpcmVzIjoKKyAgICAgICAgICAgIC8vIERh
dGUuCisgICAgICAgICAgICBjb21wYXJhdG9yID0gKGEsIGIpID0+IHsKKyAgICAgICAgICAgICAg
ICBsZXQgYUV4cGlyZXMgPSBhLmV4cGlyZXM7CisgICAgICAgICAgICAgICAgaWYgKCFhRXhwaXJl
cykKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDE7CisgICAgICAgICAgICAgICAgbGV0IGJF
eHBpcmVzID0gYi5leHBpcmVzOworICAgICAgICAgICAgICAgIGlmICghYkV4cGlyZXMpCisgICAg
ICAgICAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgICAgICAgICByZXR1cm4gYUV4cGly
ZXMuZ2V0VGltZSgpIC0gYkV4cGlyZXMuZ2V0VGltZSgpOworICAgICAgICAgICAgfTsKKyAgICAg
ICAgICAgIGJyZWFrOwogCi0gICAgICAgIHZhciBjb21wYXJhdG9yOwotICAgICAgICBzd2l0Y2gg
KHRoaXMuX2RhdGFHcmlkLnNvcnRDb2x1bW5JZGVudGlmaWVyKSB7Ci0gICAgICAgICAgICBjYXNl
ICJ2YWx1ZSI6IGNvbXBhcmF0b3IgPSBsb2NhbGVDb21wYXJlLmJpbmQodGhpcywgInZhbHVlIik7
IGJyZWFrOwotICAgICAgICAgICAgY2FzZSAiZG9tYWluIjogY29tcGFyYXRvciA9IGxvY2FsZUNv
bXBhcmUuYmluZCh0aGlzLCAiZG9tYWluIik7IGJyZWFrOwotICAgICAgICAgICAgY2FzZSAicGF0
aCI6IGNvbXBhcmF0b3IgPSBsb2NhbGVDb21wYXJlLmJpbmQodGhpcywgInBhdGgiKTsgYnJlYWs7
Ci0gICAgICAgICAgICBjYXNlICJleHBpcmVzIjogY29tcGFyYXRvciA9IGV4cGlyZXNDb21wYXJl
OyBicmVhazsKLSAgICAgICAgICAgIGNhc2UgInNpemUiOiBjb21wYXJhdG9yID0gbnVtYmVyQ29t
cGFyZS5iaW5kKHRoaXMsICJzaXplIik7IGJyZWFrOwotICAgICAgICAgICAgY2FzZSAiaHR0cCI6
IGNvbXBhcmF0b3IgPSBsb2NhbGVDb21wYXJlLmJpbmQodGhpcywgImh0dHAiKTsgYnJlYWs7Ci0g
ICAgICAgICAgICBjYXNlICJzZWN1cmUiOiBjb21wYXJhdG9yID0gbG9jYWxlQ29tcGFyZS5iaW5k
KHRoaXMsICJzZWN1cmUiKTsgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlICJzYW1lU2l0ZSI6IGNv
bXBhcmF0b3IgPSBsb2NhbGVDb21wYXJlLmJpbmQodGhpcywgInNhbWVTaXRlIik7IGJyZWFrOwot
ICAgICAgICAgICAgY2FzZSAibmFtZSI6Ci0gICAgICAgICAgICBkZWZhdWx0OiBjb21wYXJhdG9y
ID0gbG9jYWxlQ29tcGFyZS5iaW5kKHRoaXMsICJuYW1lIik7IGJyZWFrOworICAgICAgICBkZWZh
dWx0OgorICAgICAgICAgICAgY29uc29sZS5hc3NlcnQoIlVuZXhwZWN0ZWQgc29ydCBjb2x1bW4i
LCBzb3J0Q29sdW1uSWRlbnRpZmllcik7CiAgICAgICAgIH0KIAotICAgICAgICBjb25zb2xlLmFz
c2VydChjb21wYXJhdG9yKTsKLSAgICAgICAgdGhpcy5fZGF0YUdyaWQuc29ydE5vZGVzKGNvbXBh
cmF0b3IpOworICAgICAgICBsZXQgcmV2ZXJzZUZhY3RvciA9IHRoaXMuX3RhYmxlLnNvcnRPcmRl
ciA9PT0gV0kuVGFibGUuU29ydE9yZGVyLkFzY2VuZGluZyA/IDEgOiAtMTsKKyAgICAgICAgcmV0
dXJuIChhLCBiKSA9PiByZXZlcnNlRmFjdG9yICogY29tcGFyYXRvcihhLCBiKTsKICAgICB9CiAK
ICAgICBfZGVsZXRlQ2FsbGJhY2sobm9kZSkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>351546</attachid>
            <date>2018-10-03 14:14:34 -0700</date>
            <delta_ts>2018-10-25 13:19:46 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>bug-66381-20181003141431.patch</filename>
            <type>text/plain</type>
            <size>12826</size>
            <attacher name="Matt Baker">mattbaker</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM2ODA2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Db29raWVTdG9yYWdlQ29udGVudFZpZXcuanMgYi9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Db29raWVTdG9yYWdlQ29u
dGVudFZpZXcuanMKaW5kZXggMTdhZTg2OTBjMzE4NTk4NzNmZGMxOTNlYWJkYThlMzhhNzEzZDQx
My4uYzViNTU2Y2Q3NTY1MTMxNjdmNDJmYTFiZDQzOGQ1YjIzNDdlYjk0NiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ29va2llU3RvcmFnZUNv
bnRlbnRWaWV3LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Zp
ZXdzL0Nvb2tpZVN0b3JhZ2VDb250ZW50Vmlldy5qcwpAQCAtMzEsNiArMzEsMTAgQEAgV0kuQ29v
a2llU3RvcmFnZUNvbnRlbnRWaWV3ID0gY2xhc3MgQ29va2llU3RvcmFnZUNvbnRlbnRWaWV3IGV4
dGVuZHMgV0kuQ29udGVudFYKIAogICAgICAgICB0aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmFkZCgi
Y29va2llLXN0b3JhZ2UiKTsKIAorICAgICAgICB0aGlzLl9jb29raWVzID0gW107CisgICAgICAg
IHRoaXMuX3RhYmxlID0gbnVsbDsKKyAgICAgICAgdGhpcy5fY29va2llc1BlbmRpbmdEZWxldGlv
biA9IFtdOworCiAgICAgICAgIHRoaXMuX3JlZnJlc2hCdXR0b25OYXZpZ2F0aW9uSXRlbSA9IG5l
dyBXSS5CdXR0b25OYXZpZ2F0aW9uSXRlbSgiY29va2llLXN0b3JhZ2UtcmVmcmVzaCIsIFdJLlVJ
U3RyaW5nKCJSZWZyZXNoIiksICJJbWFnZXMvUmVsb2FkRnVsbC5zdmciLCAxMywgMTMpOwogICAg
ICAgICB0aGlzLl9yZWZyZXNoQnV0dG9uTmF2aWdhdGlvbkl0ZW0uYWRkRXZlbnRMaXN0ZW5lcihX
SS5CdXR0b25OYXZpZ2F0aW9uSXRlbS5FdmVudC5DbGlja2VkLCB0aGlzLl9yZWZyZXNoQnV0dG9u
Q2xpY2tlZCwgdGhpcyk7CiAKQEAgLTQ2LDkgKzUwLDEyIEBAIFdJLkNvb2tpZVN0b3JhZ2VDb250
ZW50VmlldyA9IGNsYXNzIENvb2tpZVN0b3JhZ2VDb250ZW50VmlldyBleHRlbmRzIFdJLkNvbnRl
bnRWCiAKICAgICB1cGRhdGUoKQogICAgIHsKKyAgICAgICAgdGhpcy5fY29va2llc1BlbmRpbmdE
ZWxldGlvbiA9IFtdOworICAgICAgICB0aGlzLl9kZWxldGVDb29raWVzLmNhbmNlbERlYm91bmNl
KCk7CisKICAgICAgICAgUGFnZUFnZW50LmdldENvb2tpZXMoKS50aGVuKChwYXlsb2FkKSA9PiB7
CiAgICAgICAgICAgICB0aGlzLl9jb29raWVzID0gdGhpcy5fZmlsdGVyQ29va2llcyhwYXlsb2Fk
LmNvb2tpZXMpOwotICAgICAgICAgICAgdGhpcy5fcmVidWlsZFRhYmxlKCk7CisgICAgICAgICAg
ICB0aGlzLl90YWJsZS5yZWxvYWREYXRhKCk7CiAgICAgICAgIH0pLmNhdGNoKChlcnJvcikgPT4g
ewogICAgICAgICAgICAgY29uc29sZS5lcnJvcigiQ291bGQgbm90IGZldGNoIGNvb2tpZXM6ICIs
IGVycm9yKTsKICAgICAgICAgfSk7CkBAIC02Miw5NSArNjksMTI4IEBAIFdJLkNvb2tpZVN0b3Jh
Z2VDb250ZW50VmlldyA9IGNsYXNzIENvb2tpZVN0b3JhZ2VDb250ZW50VmlldyBleHRlbmRzIFdJ
LkNvbnRlbnRWCiAKICAgICBnZXQgc2Nyb2xsYWJsZUVsZW1lbnRzKCkKICAgICB7Ci0gICAgICAg
IGlmICghdGhpcy5fZGF0YUdyaWQpCisgICAgICAgIGlmICghdGhpcy5fdGFibGUpCiAgICAgICAg
ICAgICByZXR1cm4gW107Ci0gICAgICAgIHJldHVybiBbdGhpcy5fZGF0YUdyaWQuc2Nyb2xsQ29u
dGFpbmVyXTsKKyAgICAgICAgcmV0dXJuIFt0aGlzLl90YWJsZS5zY3JvbGxDb250YWluZXJdOwog
ICAgIH0KIAotICAgIC8vIFByaXZhdGUKKyAgICAvLyBUYWJsZSBkYXRhU291cmNlCiAKLSAgICBf
cmVidWlsZFRhYmxlKCkKLSAgICB7Ci0gICAgICAgIC8vIEZJWE1FIDxodHRwczovL3dlYmtpdC5v
cmcvYi8xNTE0MDA+OiBJZiB0aGVyZSBhcmUgbm8gY29va2llcywgYWRkIHBsYWNlaG9sZGVyIGV4
cGxhbmF0b3J5IHRleHQuCi0gICAgICAgIGlmICghdGhpcy5fZGF0YUdyaWQpIHsKLSAgICAgICAg
ICAgIHZhciBjb2x1bW5zID0ge25hbWU6IHt9LCB2YWx1ZToge30sIGRvbWFpbjoge30sIHBhdGg6
IHt9LCBleHBpcmVzOiB7fSwgc2l6ZToge30sIGh0dHA6IHt9LCBzZWN1cmU6IHt9LCBzYW1lU2l0
ZToge319OwotCi0gICAgICAgICAgICBjb2x1bW5zLm5hbWUudGl0bGUgPSBXSS5VSVN0cmluZygi
TmFtZSIpOwotICAgICAgICAgICAgY29sdW1ucy5uYW1lLnNvcnRhYmxlID0gdHJ1ZTsKLSAgICAg
ICAgICAgIGNvbHVtbnMubmFtZS53aWR0aCA9ICIyNCUiOwotICAgICAgICAgICAgY29sdW1ucy5u
YW1lLmxvY2tlZCA9IHRydWU7Ci0KLSAgICAgICAgICAgIGNvbHVtbnMudmFsdWUudGl0bGUgPSBX
SS5VSVN0cmluZygiVmFsdWUiKTsKLSAgICAgICAgICAgIGNvbHVtbnMudmFsdWUuc29ydGFibGUg
PSB0cnVlOwotICAgICAgICAgICAgY29sdW1ucy52YWx1ZS53aWR0aCA9ICIzNCUiOwotICAgICAg
ICAgICAgY29sdW1ucy52YWx1ZS5sb2NrZWQgPSB0cnVlOwotCi0gICAgICAgICAgICBjb2x1bW5z
LmRvbWFpbi50aXRsZSA9IFdJLlVJU3RyaW5nKCJEb21haW4iKTsKLSAgICAgICAgICAgIGNvbHVt
bnMuZG9tYWluLnNvcnRhYmxlID0gdHJ1ZTsKLSAgICAgICAgICAgIGNvbHVtbnMuZG9tYWluLndp
ZHRoID0gIjYlIjsKLQotICAgICAgICAgICAgY29sdW1ucy5wYXRoLnRpdGxlID0gV0kuVUlTdHJp
bmcoIlBhdGgiKTsKLSAgICAgICAgICAgIGNvbHVtbnMucGF0aC5zb3J0YWJsZSA9IHRydWU7Ci0g
ICAgICAgICAgICBjb2x1bW5zLnBhdGgud2lkdGggPSAiNiUiOwotCi0gICAgICAgICAgICBjb2x1
bW5zLmV4cGlyZXMudGl0bGUgPSBXSS5VSVN0cmluZygiRXhwaXJlcyIpOwotICAgICAgICAgICAg
Y29sdW1ucy5leHBpcmVzLnNvcnRhYmxlID0gdHJ1ZTsKLSAgICAgICAgICAgIGNvbHVtbnMuZXhw
aXJlcy53aWR0aCA9ICI2JSI7Ci0KLSAgICAgICAgICAgIGNvbHVtbnMuc2l6ZS50aXRsZSA9IFdJ
LlVJU3RyaW5nKCJTaXplIik7Ci0gICAgICAgICAgICBjb2x1bW5zLnNpemUuYWxpZ25lZCA9ICJy
aWdodCI7Ci0gICAgICAgICAgICBjb2x1bW5zLnNpemUuc29ydGFibGUgPSB0cnVlOwotICAgICAg
ICAgICAgY29sdW1ucy5zaXplLndpZHRoID0gIjYlIjsKLQotICAgICAgICAgICAgY29sdW1ucy5o
dHRwLnRpdGxlID0gV0kuVUlTdHJpbmcoIkhUVFAiKTsKLSAgICAgICAgICAgIGNvbHVtbnMuaHR0
cC5hbGlnbmVkID0gImNlbnRlcmVkIjsKLSAgICAgICAgICAgIGNvbHVtbnMuaHR0cC5zb3J0YWJs
ZSA9IHRydWU7Ci0gICAgICAgICAgICBjb2x1bW5zLmh0dHAud2lkdGggPSAiNiUiOwotCi0gICAg
ICAgICAgICBjb2x1bW5zLnNlY3VyZS50aXRsZSA9IFdJLlVJU3RyaW5nKCJTZWN1cmUiKTsKLSAg
ICAgICAgICAgIGNvbHVtbnMuc2VjdXJlLmFsaWduZWQgPSAiY2VudGVyZWQiOwotICAgICAgICAg
ICAgY29sdW1ucy5zZWN1cmUuc29ydGFibGUgPSB0cnVlOwotICAgICAgICAgICAgY29sdW1ucy5z
ZWN1cmUud2lkdGggPSAiNiUiOwotCi0gICAgICAgICAgICBjb2x1bW5zLnNhbWVTaXRlLnRpdGxl
ID0gV0kuVUlTdHJpbmcoIlNhbWUtU2l0ZSIpOwotICAgICAgICAgICAgY29sdW1ucy5zYW1lU2l0
ZS5zb3J0YWJsZSA9IHRydWU7Ci0gICAgICAgICAgICBjb2x1bW5zLnNhbWVTaXRlLndpZHRoID0g
IjYlIjsKLQotICAgICAgICAgICAgdGhpcy5fZGF0YUdyaWQgPSBuZXcgV0kuRGF0YUdyaWQoY29s
dW1ucywgbnVsbCwgdGhpcy5fZGVsZXRlQ2FsbGJhY2suYmluZCh0aGlzKSk7Ci0gICAgICAgICAg
ICB0aGlzLl9kYXRhR3JpZC5jb2x1bW5DaG9vc2VyRW5hYmxlZCA9IHRydWU7Ci0gICAgICAgICAg
ICB0aGlzLl9kYXRhR3JpZC5hZGRFdmVudExpc3RlbmVyKFdJLkRhdGFHcmlkLkV2ZW50LlNvcnRD
aGFuZ2VkLCB0aGlzLl9zb3J0RGF0YUdyaWQsIHRoaXMpOwotICAgICAgICAgICAgdGhpcy5fZGF0
YUdyaWQuc29ydENvbHVtbklkZW50aWZpZXIgPSAibmFtZSI7Ci0gICAgICAgICAgICB0aGlzLl9k
YXRhR3JpZC5jcmVhdGVTZXR0aW5ncygiY29va2llLXN0b3JhZ2UtY29udGVudC12aWV3Iik7Ci0K
LSAgICAgICAgICAgIHRoaXMuYWRkU3Vidmlldyh0aGlzLl9kYXRhR3JpZCk7Ci0gICAgICAgICAg
ICB0aGlzLl9kYXRhR3JpZC51cGRhdGVMYXlvdXQoKTsKLSAgICAgICAgfQorICAgIHRhYmxlTnVt
YmVyT2ZSb3dzKHRhYmxlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX2Nvb2tpZXMubGVu
Z3RoOworICAgIH0KIAotICAgICAgICBjb25zb2xlLmFzc2VydCh0aGlzLl9kYXRhR3JpZCk7Ci0g
ICAgICAgIHRoaXMuX2RhdGFHcmlkLnJlbW92ZUNoaWxkcmVuKCk7Ci0KLSAgICAgICAgZm9yIChs
ZXQgY29va2llIG9mIHRoaXMuX2Nvb2tpZXMpIHsKLSAgICAgICAgICAgIGNvbnN0IGNoZWNrbWFy
ayA9ICJcdTI3MTMiOwotICAgICAgICAgICAgdmFyIGRhdGEgPSB7Ci0gICAgICAgICAgICAgICAg
bmFtZTogY29va2llLm5hbWUsCi0gICAgICAgICAgICAgICAgdmFsdWU6IGNvb2tpZS52YWx1ZSwK
LSAgICAgICAgICAgICAgICBkb21haW46IGNvb2tpZS5kb21haW4gfHwgIiIsCi0gICAgICAgICAg
ICAgICAgcGF0aDogY29va2llLnBhdGggfHwgIiIsCi0gICAgICAgICAgICAgICAgZXhwaXJlczog
IiIsCi0gICAgICAgICAgICAgICAgc2l6ZTogTnVtYmVyLmJ5dGVzVG9TdHJpbmcoY29va2llLnNp
emUpLAotICAgICAgICAgICAgICAgIGh0dHA6IGNvb2tpZS5odHRwT25seSA/IGNoZWNrbWFyayA6
ICIiLAotICAgICAgICAgICAgICAgIHNlY3VyZTogY29va2llLnNlY3VyZSA/IGNoZWNrbWFyayA6
ICIiLAotICAgICAgICAgICAgICAgIHNhbWVTaXRlOiBjb29raWUuc2FtZVNpdGUgJiYgY29va2ll
LnNhbWVTaXRlICE9PSBXSS5Db29raWUuU2FtZVNpdGVUeXBlLk5vbmUgPyBXSS5Db29raWUuZGlz
cGxheU5hbWVGb3JTYW1lU2l0ZVR5cGUoY29va2llLnNhbWVTaXRlKSA6ICIiLAotICAgICAgICAg
ICAgfTsKKyAgICB0YWJsZVNvcnRDaGFuZ2VkKHRhYmxlKQorICAgIHsKKyAgICAgICAgbGV0IGNv
bXBhcmF0b3IgPSB0aGlzLl9nZW5lcmF0ZVNvcnRDb21wYXJhdG9yKCk7CisgICAgICAgIGlmICgh
Y29tcGFyYXRvcikKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICB0aGlzLl9jb29raWVz
LnNvcnQoY29tcGFyYXRvcik7CisgICAgICAgIHRoaXMuX3RhYmxlLnJlbG9hZERhdGEoKTsKKyAg
ICB9CisKKyAgICAvLyBUYWJsZSBkZWxlZ2F0ZQorCisgICAgdGFibGVDZWxsQ29udGV4dE1lbnVD
bGlja2VkKHRhYmxlLCBjZWxsLCBjb2x1bW4sIHJvd0luZGV4LCBldmVudCkKKyAgICB7CisgICAg
ICAgIC8vIFRPRE8KKyAgICB9CiAKLSAgICAgICAgICAgIGlmIChjb29raWUudHlwZSAhPT0gV0ku
Q29va2llVHlwZS5SZXF1ZXN0KQotICAgICAgICAgICAgICAgIGRhdGFbImV4cGlyZXMiXSA9IGNv
b2tpZS5zZXNzaW9uID8gV0kuVUlTdHJpbmcoIlNlc3Npb24iKSA6IG5ldyBEYXRlKGNvb2tpZS5l
eHBpcmVzKS50b0xvY2FsZVN0cmluZygpOworICAgIHRhYmxlU2hvdWxkUmVtb3ZlUm93KHRhYmxl
LCByb3dJbmRleCkKKyAgICB7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0KKworICAgIHRh
YmxlRGlkUmVtb3ZlUm93KHRhYmxlLCByb3dJbmRleCkKKyAgICB7CisgICAgICAgIGxldCBjb29r
aWUgPSB0aGlzLl9jb29raWVzW3Jvd0luZGV4XTsKKyAgICAgICAgY29uc29sZS5hc3NlcnQoY29v
a2llLCAiTWlzc2luZyBjb29raWUgZm9yIHJvdyAiICsgcm93SW5kZXgpOworICAgICAgICBpZiAo
IWNvb2tpZSkKKyAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICAgICAgdmFyIG5vZGUgPSBu
ZXcgV0kuRGF0YUdyaWROb2RlKGRhdGEpOwotICAgICAgICAgICAgbm9kZS5jb29raWUgPSBjb29r
aWU7CisgICAgICAgIGxldCBjb29raWVVUkwgPSAoY29va2llLnNlY3VyZSA/ICJodHRwczovLyIg
OiAiaHR0cDovLyIpICsgY29va2llLmRvbWFpbiArIGNvb2tpZS5wYXRoOworICAgICAgICB0aGlz
Ll9jb29raWVzUGVuZGluZ0RlbGV0aW9uLnB1c2goe25hbWU6IGNvb2tpZS5uYW1lLCBjb29raWVV
Ukx9KTsKIAotICAgICAgICAgICAgdGhpcy5fZGF0YUdyaWQuYXBwZW5kQ2hpbGQobm9kZSk7Cisg
ICAgICAgIHRoaXMuc29vbi5fZGVsZXRlQ29va2llcygpOworICAgIH0KKworICAgIHRhYmxlUG9w
dWxhdGVDZWxsKHRhYmxlLCBjZWxsLCBjb2x1bW4sIHJvd0luZGV4KQorICAgIHsKKyAgICAgICAg
bGV0IGNvb2tpZSA9IHRoaXMuX2Nvb2tpZXNbcm93SW5kZXhdOworCisgICAgICAgIGNvbnN0IGNo
ZWNrbWFyayA9ICJcdTI3MTMiOworCisgICAgICAgIHN3aXRjaCAoY29sdW1uLmlkZW50aWZpZXIp
IHsKKyAgICAgICAgY2FzZSAibmFtZSI6CisgICAgICAgICAgICBjZWxsLnRleHRDb250ZW50ID0g
Y29va2llLm5hbWU7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSAidmFsdWUiOgor
ICAgICAgICAgICAgY2VsbC50ZXh0Q29udGVudCA9IGNvb2tpZS52YWx1ZTsKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICBjYXNlICJkb21haW4iOgorICAgICAgICAgICAgY2VsbC50ZXh0Q29u
dGVudCA9IGNvb2tpZS5kb21haW4gfHwgZW1EYXNoOworICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIGNhc2UgInBhdGgiOgorICAgICAgICAgICAgY2VsbC50ZXh0Q29udGVudCA9IGNvb2tpZS5w
YXRoIHx8IGVtRGFzaDsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlICJleHBpcmVz
IjoKKyAgICAgICAgICAgIGNlbGwudGV4dENvbnRlbnQgPSBjb29raWUuZXhwaXJlcyA/IG5ldyBE
YXRlKGNvb2tpZS5leHBpcmVzKS50b0xvY2FsZVN0cmluZygpIDogV0kuVUlTdHJpbmcoIlNlc3Np
b24iKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlICJzaXplIjoKKyAgICAgICAg
ICAgIGNlbGwudGV4dENvbnRlbnQgPSBOdW1iZXIuYnl0ZXNUb1N0cmluZyhjb29raWUuc2l6ZSk7
CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSAic2VjdXJlIjoKKyAgICAgICAgICAg
IGNlbGwudGV4dENvbnRlbnQgPSBjb29raWUuc2VjdXJlID8gY2hlY2ttYXJrIDogemVyb1dpZHRo
U3BhY2U7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSAiaHR0cE9ubHkiOgorICAg
ICAgICAgICAgY2VsbC50ZXh0Q29udGVudCA9IGNvb2tpZS5odHRwT25seSA/IGNoZWNrbWFyayA6
IHplcm9XaWR0aFNwYWNlOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgInNhbWVT
aXRlIjoKKyAgICAgICAgICAgIGNlbGwudGV4dENvbnRlbnQgPSBjb29raWUuc2FtZVNpdGUgPT09
IFdJLkNvb2tpZS5TYW1lU2l0ZVR5cGUuTm9uZSA/IGVtRGFzaCA6IFdJLkNvb2tpZS5kaXNwbGF5
TmFtZUZvclNhbWVTaXRlVHlwZShjb29raWUuc2FtZVNpdGUpOworICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIH0KKworICAgICAgICByZXR1cm4gY2VsbDsKKyAgICB9CisKKyAgICAvLyBQcm90
ZWN0ZWQKKworICAgIGluaXRpYWxMYXlvdXQoKQorICAgIHsKKyAgICAgICAgc3VwZXIuaW5pdGlh
bExheW91dCgpOworCisgICAgICAgIHRoaXMuX3RhYmxlID0gbmV3IFdJLlRhYmxlKCJjb29raWVz
LXRhYmxlIiwgdGhpcywgdGhpcywgMjApOworICAgICAgICB0aGlzLl90YWJsZS5hbGxvd3NNdWx0
aXBsZVNlbGVjdGlvbiA9IHRydWU7CisKKyAgICAgICAgdGhpcy5fdGFibGUuYWRkQ29sdW1uKG5l
dyBXSS5UYWJsZUNvbHVtbigibmFtZSIsIFdJLlVJU3RyaW5nKCJOYW1lIiksIHttaW5XaWR0aDog
MTUwLCBtYXhXaWR0aDogMzAwLCBpbml0aWFsV2lkdGg6IDIwMCwgcmVzaXplVHlwZTogV0kuVGFi
bGVDb2x1bW4uUmVzaXplVHlwZS5Mb2NrZWR9KSk7CisgICAgICAgIHRoaXMuX3RhYmxlLmFkZENv
bHVtbihuZXcgV0kuVGFibGVDb2x1bW4oInZhbHVlIiwgV0kuVUlTdHJpbmcoIlZhbHVlIiksIHtt
aW5XaWR0aDogMTUwLCBoaWRlYWJsZTogZmFsc2V9KSk7CisgICAgICAgIHRoaXMuX3RhYmxlLmFk
ZENvbHVtbihuZXcgV0kuVGFibGVDb2x1bW4oImRvbWFpbiIsIFdJLnVubG9jYWxpemVkU3RyaW5n
KCJEb21haW4iKSwge30pKTsKKyAgICAgICAgdGhpcy5fdGFibGUuYWRkQ29sdW1uKG5ldyBXSS5U
YWJsZUNvbHVtbigicGF0aCIsIFdJLnVubG9jYWxpemVkU3RyaW5nKCJQYXRoIiksIHt9KSk7Cisg
ICAgICAgIHRoaXMuX3RhYmxlLmFkZENvbHVtbihuZXcgV0kuVGFibGVDb2x1bW4oImV4cGlyZXMi
LCBXSS51bmxvY2FsaXplZFN0cmluZygiRXhwaXJlcyIpLCB7bWF4V2lkdGg6IDE1MH0pKTsKKyAg
ICAgICAgdGhpcy5fdGFibGUuYWRkQ29sdW1uKG5ldyBXSS5UYWJsZUNvbHVtbigic2l6ZSIsIFdJ
LnVubG9jYWxpemVkU3RyaW5nKCJTaXplIiksIHttaW5XaWR0aDogNTUsIG1heFdpZHRoOiA2NSwg
YWxpZ246ICJyaWdodCJ9KSk7CisgICAgICAgIHRoaXMuX3RhYmxlLmFkZENvbHVtbihuZXcgV0ku
VGFibGVDb2x1bW4oInNlY3VyZSIsIFdJLnVubG9jYWxpemVkU3RyaW5nKCJTZWN1cmUiKSwge21p
bldpZHRoOiA1NSwgbWF4V2lkdGg6IDY1LCBhbGlnbjogImNlbnRlciJ9KSk7CisgICAgICAgIHRo
aXMuX3RhYmxlLmFkZENvbHVtbihuZXcgV0kuVGFibGVDb2x1bW4oImh0dHBPbmx5IiwgV0kudW5s
b2NhbGl6ZWRTdHJpbmcoIkh0dHBPbmx5IiksIHttaW5XaWR0aDogNTUsIG1heFdpZHRoOiA2NSwg
YWxpZ246ICJjZW50ZXIifSkpOworICAgICAgICB0aGlzLl90YWJsZS5hZGRDb2x1bW4obmV3IFdJ
LlRhYmxlQ29sdW1uKCJzYW1lU2l0ZSIsIFdJLnVubG9jYWxpemVkU3RyaW5nKCJTYW1lU2l0ZSIp
LCB7bWluV2lkdGg6IDU1LCBtYXhXaWR0aDogNjV9KSk7CisKKyAgICAgICAgaWYgKCF0aGlzLl90
YWJsZS5zb3J0Q29sdW1uSWRlbnRpZmllcikgeworICAgICAgICAgICAgdGhpcy5fdGFibGUuc29y
dE9yZGVyID0gV0kuVGFibGUuU29ydE9yZGVyLkFzY2VuZGluZzsKKyAgICAgICAgICAgIHRoaXMu
X3RhYmxlLnNvcnRDb2x1bW5JZGVudGlmaWVyID0gIm5hbWUiOworICAgICAgICB9CisKKyAgICAg
ICAgdGhpcy5hZGRTdWJ2aWV3KHRoaXMuX3RhYmxlKTsKKyAgICB9CisKKyAgICAvLyBQcml2YXRl
CisKKyAgICBfZGVsZXRlQ29va2llcygpCisgICAgeworICAgICAgICBmb3IgKGxldCB7bmFtZSwg
Y29va2llVVJMfSBvZiB0aGlzLl9jb29raWVzUGVuZGluZ0RlbGV0aW9uKQorICAgICAgICAgICAg
UGFnZUFnZW50LmRlbGV0ZUNvb2tpZShuYW1lLCBjb29raWVVUkwpOworCisgICAgICAgIHRoaXMu
X2Nvb2tpZXNQZW5kaW5nRGVsZXRpb24gPSBbXTsKKyAgICAgICAgdGhpcy51cGRhdGUoKTsKICAg
ICB9CiAKICAgICBfZmlsdGVyQ29va2llcyhjb29raWVzKQpAQCAtMTc2LDU3ICsyMTYsNDkgQEAg
V0kuQ29va2llU3RvcmFnZUNvbnRlbnRWaWV3ID0gY2xhc3MgQ29va2llU3RvcmFnZUNvbnRlbnRW
aWV3IGV4dGVuZHMgV0kuQ29udGVudFYKICAgICAgICAgcmV0dXJuIGNvb2tpZXNGb3JEb21haW47
CiAgICAgfQogCi0gICAgX3NvcnREYXRhR3JpZCgpCisgICAgX2dlbmVyYXRlU29ydENvbXBhcmF0
b3IoKQogICAgIHsKLSAgICAgICAgZnVuY3Rpb24gbG9jYWxlQ29tcGFyZShmaWVsZCwgbm9kZUEs
IG5vZGVCKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gKG5vZGVBLmRhdGFbZmllbGRd
ICsgIiIpLmV4dGVuZGVkTG9jYWxlQ29tcGFyZShub2RlQi5kYXRhW2ZpZWxkXSArICIiKTsKLSAg
ICAgICAgfQotCi0gICAgICAgIGZ1bmN0aW9uIG51bWJlckNvbXBhcmUoZmllbGQsIG5vZGVBLCBu
b2RlQikKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIG5vZGVBLmNvb2tpZVtmaWVsZF0g
LSBub2RlQi5jb29raWVbZmllbGRdOworICAgICAgICBsZXQgc29ydENvbHVtbklkZW50aWZpZXIg
PSB0aGlzLl90YWJsZS5zb3J0Q29sdW1uSWRlbnRpZmllcjsKKyAgICAgICAgaWYgKCFzb3J0Q29s
dW1uSWRlbnRpZmllcikgeworICAgICAgICAgICAgdGhpcy5fZW50cmllc1NvcnRDb21wYXJhdG9y
ID0gbnVsbDsKKyAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCi0gICAgICAgIGZ1bmN0
aW9uIGV4cGlyZXNDb21wYXJlKG5vZGVBLCBub2RlQikKLSAgICAgICAgewotICAgICAgICAgICAg
aWYgKG5vZGVBLmNvb2tpZS5zZXNzaW9uICE9PSBub2RlQi5jb29raWUuc2Vzc2lvbikKLSAgICAg
ICAgICAgICAgICByZXR1cm4gbm9kZUEuY29va2llLnNlc3Npb24gPyAtMSA6IDE7Ci0KLSAgICAg
ICAgICAgIGlmIChub2RlQS5jb29raWUuc2Vzc2lvbikKLSAgICAgICAgICAgICAgICByZXR1cm4g
MDsKLQotICAgICAgICAgICAgcmV0dXJuIG5vZGVBLmNvb2tpZS5leHBpcmVzIC0gbm9kZUIuY29v
a2llLmV4cGlyZXM7Ci0gICAgICAgIH0KKyAgICAgICAgbGV0IGNvbXBhcmF0b3IgPSBudWxsOwor
CisgICAgICAgIHN3aXRjaCAoc29ydENvbHVtbklkZW50aWZpZXIpIHsKKyAgICAgICAgY2FzZSAi
bmFtZSI6CisgICAgICAgIGNhc2UgInZhbHVlIjoKKyAgICAgICAgY2FzZSAiZG9tYWluIjoKKyAg
ICAgICAgY2FzZSAicGF0aCI6CisgICAgICAgIGNhc2UgInNhbWVTaXRlIjoKKyAgICAgICAgICAg
IGNvbXBhcmF0b3IgPSAoYSwgYikgPT4gKGFbc29ydENvbHVtbklkZW50aWZpZXJdIHx8ICIiKS5l
eHRlbmRlZExvY2FsZUNvbXBhcmUoYltzb3J0Q29sdW1uSWRlbnRpZmllcl0gfHwgIiIpOworICAg
ICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgY2FzZSAic2l6ZSI6CisgICAgICAgIGNhc2UgImh0
dHBPbmx5IjoKKyAgICAgICAgY2FzZSAic2VjdXJlIjoKKyAgICAgICAgICAgIGNvbXBhcmF0b3Ig
PSAoYSwgYikgPT4gYVtzb3J0Q29sdW1uSWRlbnRpZmllcl0gLSBiW3NvcnRDb2x1bW5JZGVudGlm
aWVyXTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgImV4cGlyZXMiOgorICAg
ICAgICAgICAgY29tcGFyYXRvciA9IChhLCBiKSA9PiB7CisgICAgICAgICAgICAgICAgbGV0IGFF
eHBpcmVzID0gYS5leHBpcmVzOworICAgICAgICAgICAgICAgIGlmICghYUV4cGlyZXMpCisgICAg
ICAgICAgICAgICAgICAgIHJldHVybiAxOworICAgICAgICAgICAgICAgIGxldCBiRXhwaXJlcyA9
IGIuZXhwaXJlczsKKyAgICAgICAgICAgICAgICBpZiAoIWJFeHBpcmVzKQorICAgICAgICAgICAg
ICAgICAgICByZXR1cm4gLTE7CisgICAgICAgICAgICAgICAgcmV0dXJuIGFFeHBpcmVzLmdldFRp
bWUoKSAtIGJFeHBpcmVzLmdldFRpbWUoKTsKKyAgICAgICAgICAgIH07CisgICAgICAgICAgICBi
cmVhazsKIAotICAgICAgICB2YXIgY29tcGFyYXRvcjsKLSAgICAgICAgc3dpdGNoICh0aGlzLl9k
YXRhR3JpZC5zb3J0Q29sdW1uSWRlbnRpZmllcikgewotICAgICAgICAgICAgY2FzZSAidmFsdWUi
OiBjb21wYXJhdG9yID0gbG9jYWxlQ29tcGFyZS5iaW5kKHRoaXMsICJ2YWx1ZSIpOyBicmVhazsK
LSAgICAgICAgICAgIGNhc2UgImRvbWFpbiI6IGNvbXBhcmF0b3IgPSBsb2NhbGVDb21wYXJlLmJp
bmQodGhpcywgImRvbWFpbiIpOyBicmVhazsKLSAgICAgICAgICAgIGNhc2UgInBhdGgiOiBjb21w
YXJhdG9yID0gbG9jYWxlQ29tcGFyZS5iaW5kKHRoaXMsICJwYXRoIik7IGJyZWFrOwotICAgICAg
ICAgICAgY2FzZSAiZXhwaXJlcyI6IGNvbXBhcmF0b3IgPSBleHBpcmVzQ29tcGFyZTsgYnJlYWs7
Ci0gICAgICAgICAgICBjYXNlICJzaXplIjogY29tcGFyYXRvciA9IG51bWJlckNvbXBhcmUuYmlu
ZCh0aGlzLCAic2l6ZSIpOyBicmVhazsKLSAgICAgICAgICAgIGNhc2UgImh0dHAiOiBjb21wYXJh
dG9yID0gbG9jYWxlQ29tcGFyZS5iaW5kKHRoaXMsICJodHRwIik7IGJyZWFrOwotICAgICAgICAg
ICAgY2FzZSAic2VjdXJlIjogY29tcGFyYXRvciA9IGxvY2FsZUNvbXBhcmUuYmluZCh0aGlzLCAi
c2VjdXJlIik7IGJyZWFrOwotICAgICAgICAgICAgY2FzZSAic2FtZVNpdGUiOiBjb21wYXJhdG9y
ID0gbG9jYWxlQ29tcGFyZS5iaW5kKHRoaXMsICJzYW1lU2l0ZSIpOyBicmVhazsKLSAgICAgICAg
ICAgIGNhc2UgIm5hbWUiOgotICAgICAgICAgICAgZGVmYXVsdDogY29tcGFyYXRvciA9IGxvY2Fs
ZUNvbXBhcmUuYmluZCh0aGlzLCAibmFtZSIpOyBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAg
ICAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KCJVbmV4cGVjdGVkIHNvcnQgY29sdW1uIiwgc29ydENv
bHVtbklkZW50aWZpZXIpOwogICAgICAgICB9CiAKLSAgICAgICAgY29uc29sZS5hc3NlcnQoY29t
cGFyYXRvcik7Ci0gICAgICAgIHRoaXMuX2RhdGFHcmlkLnNvcnROb2Rlcyhjb21wYXJhdG9yKTsK
LSAgICB9Ci0KLSAgICBfZGVsZXRlQ2FsbGJhY2sobm9kZSkKLSAgICB7Ci0gICAgICAgIGlmICgh
bm9kZSB8fCAhbm9kZS5jb29raWUpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgdmFy
IGNvb2tpZSA9IG5vZGUuY29va2llOwotICAgICAgICB2YXIgY29va2llVVJMID0gKGNvb2tpZS5z
ZWN1cmUgPyAiaHR0cHM6Ly8iIDogImh0dHA6Ly8iKSArIGNvb2tpZS5kb21haW4gKyBjb29raWUu
cGF0aDsKLSAgICAgICAgUGFnZUFnZW50LmRlbGV0ZUNvb2tpZShjb29raWUubmFtZSwgY29va2ll
VVJMKTsKLQotICAgICAgICB0aGlzLnVwZGF0ZSgpOworICAgICAgICBsZXQgcmV2ZXJzZUZhY3Rv
ciA9IHRoaXMuX3RhYmxlLnNvcnRPcmRlciA9PT0gV0kuVGFibGUuU29ydE9yZGVyLkFzY2VuZGlu
ZyA/IDEgOiAtMTsKKyAgICAgICAgcmV0dXJuIChhLCBiKSA9PiByZXZlcnNlRmFjdG9yICogY29t
cGFyYXRvcihhLCBiKTsKICAgICB9CiAKICAgICBfcmVmcmVzaEJ1dHRvbkNsaWNrZWQoZXZlbnQp
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>353102</attachid>
            <date>2018-10-25 13:19:48 -0700</date>
            <delta_ts>2018-10-25 22:40:32 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-66381-20181025131944.patch</filename>
            <type>text/plain</type>
            <size>22970</size>
            <attacher name="Matt Baker">mattbaker</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM3NDA1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwppbmRleCAw
MjE2YmY5ZDUzNGFlODk2OGI5YjlhOWU0YjBlZDg4ZDIyMTIzZmI4Li44MTgzMzA2ZTBjYzcyNjU4
YmM0ODY1ZGYzMDVjYWEwOWNjMjViZTEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1MyBAQAorMjAxOC0xMC0yNSAgTWF0dCBCYWtlciAgPG1hdHRiYWtlckBhcHBsZS5jb20+
CisKKyAgICAgICAgV2ViIEluc3BlY3Rvcjogc3VwcG9ydCBtdWx0aXBsZSBzZWxlY3Rpb24vZGVs
ZXRpb24gb2YgY29va2llIHJlY29yZHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTY2MzgxCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8xOTI4MTUyNT4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIExvY2Fs
aXphdGlvbnMvZW4ubHByb2ovbG9jYWxpemVkU3RyaW5ncy5qczoKKworICAgICAgICAqIFVzZXJJ
bnRlcmZhY2UvVmlld3MvQ29va2llU3RvcmFnZUNvbnRlbnRWaWV3LmpzOgorICAgICAgICAoV0ku
Q29va2llU3RvcmFnZUNvbnRlbnRWaWV3KToKKyAgICAgICAgKFdJLkNvb2tpZVN0b3JhZ2VDb250
ZW50Vmlldy5wcm90b3R5cGUuZ2V0IG5hdmlnYXRpb25JdGVtcyk6CisgICAgICAgIChXSS5Db29r
aWVTdG9yYWdlQ29udGVudFZpZXcucHJvdG90eXBlLmdldCBzY3JvbGxhYmxlRWxlbWVudHMpOgor
ICAgICAgICAoV0kuQ29va2llU3RvcmFnZUNvbnRlbnRWaWV3LnByb3RvdHlwZS50YWJsZU51bWJl
ck9mUm93cyk6CisgICAgICAgIChXSS5Db29raWVTdG9yYWdlQ29udGVudFZpZXcucHJvdG90eXBl
LnRhYmxlU29ydENoYW5nZWQpOgorICAgICAgICAoV0kuQ29va2llU3RvcmFnZUNvbnRlbnRWaWV3
LnByb3RvdHlwZS50YWJsZUNlbGxDb250ZXh0TWVudUNsaWNrZWQpOgorICAgICAgICAoV0kuQ29v
a2llU3RvcmFnZUNvbnRlbnRWaWV3LnByb3RvdHlwZS50YWJsZURpZFJlbW92ZVJvd3MpOgorICAg
ICAgICAoV0kuQ29va2llU3RvcmFnZUNvbnRlbnRWaWV3LnByb3RvdHlwZS50YWJsZVBvcHVsYXRl
Q2VsbCk6CisgICAgICAgIChXSS5Db29raWVTdG9yYWdlQ29udGVudFZpZXcucHJvdG90eXBlLnRh
YmxlU2VsZWN0aW9uRGlkQ2hhbmdlKToKKyAgICAgICAgKFdJLkNvb2tpZVN0b3JhZ2VDb250ZW50
Vmlldy5wcm90b3R5cGUuaW5pdGlhbExheW91dCk6CisgICAgICAgIChXSS5Db29raWVTdG9yYWdl
Q29udGVudFZpZXcucHJvdG90eXBlLl9nZW5lcmF0ZVNvcnRDb21wYXJhdG9yKToKKyAgICAgICAg
KFdJLkNvb2tpZVN0b3JhZ2VDb250ZW50Vmlldy5wcm90b3R5cGUuX3JlZnJlc2hCdXR0b25DbGlj
a2VkKToKKyAgICAgICAgKFdJLkNvb2tpZVN0b3JhZ2VDb250ZW50Vmlldy5wcm90b3R5cGUuX3Jl
bG9hZENvb2tpZXMpOgorICAgICAgICAoV0kuQ29va2llU3RvcmFnZUNvbnRlbnRWaWV3LnByb3Rv
dHlwZS5faGFuZGxlVGFibGVLZXlEb3duKToKKyAgICAgICAgKFdJLkNvb2tpZVN0b3JhZ2VDb250
ZW50Vmlldy5wcm90b3R5cGUudXBkYXRlKTogRGVsZXRlZC4KKyAgICAgICAgKFdJLkNvb2tpZVN0
b3JhZ2VDb250ZW50Vmlldy5wcm90b3R5cGUuX3JlYnVpbGRUYWJsZSk6IERlbGV0ZWQuCisgICAg
ICAgIChXSS5Db29raWVTdG9yYWdlQ29udGVudFZpZXcucHJvdG90eXBlLl9zb3J0RGF0YUdyaWQu
bG9jYWxlQ29tcGFyZSk6IERlbGV0ZWQuCisgICAgICAgIChXSS5Db29raWVTdG9yYWdlQ29udGVu
dFZpZXcucHJvdG90eXBlLl9zb3J0RGF0YUdyaWQubnVtYmVyQ29tcGFyZSk6IERlbGV0ZWQuCisg
ICAgICAgIChXSS5Db29raWVTdG9yYWdlQ29udGVudFZpZXcucHJvdG90eXBlLl9zb3J0RGF0YUdy
aWQuZXhwaXJlc0NvbXBhcmUpOiBEZWxldGVkLgorICAgICAgICAoV0kuQ29va2llU3RvcmFnZUNv
bnRlbnRWaWV3LnByb3RvdHlwZS5fc29ydERhdGFHcmlkKTogRGVsZXRlZC4KKyAgICAgICAgKFdJ
LkNvb2tpZVN0b3JhZ2VDb250ZW50Vmlldy5wcm90b3R5cGUuX2RlbGV0ZUNhbGxiYWNrKTogRGVs
ZXRlZC4KKyAgICAgICAgUmVwbGFjZSBEYXRhR3JpZCB3aXRoIFRhYmxlLiBUaGUgY29udGVudCB2
aWV3IHNlcnZlcyBhcyB0aGUgdGFibGUKKyAgICAgICAgZGVsZWdhdGUgYW5kIGRhdGEgc291cmNl
LCBhbmQgaGFuZGxlcyBkZWxldGUgYW5kIGJhY2tzcGFjZSBrZXkgZXZlbnRzCisgICAgICAgIHRv
IGFsbG93IGRlbGV0aW5nIHRoZSBzZWxlY3RlZCBjb29raWVzLiBDb29raWVzIG1heSBhbHNvIGJl
IGRlbGV0ZWQgZnJvbQorICAgICAgICB0aGUgdGFibGUgY29udGV4dCBtZW51IGFuZCBhIG5ldyBi
dXR0b24gaW4gdGhlIG5hdmlnYXRpb24gYmFyLgorCisgICAgICAgICogVXNlckludGVyZmFjZS9W
aWV3cy9UYWJsZS5qczoKKyAgICAgICAgKFdJLlRhYmxlLnByb3RvdHlwZS5pc1Jvd1NlbGVjdGVk
KToKKyAgICAgICAgKFdJLlRhYmxlLnByb3RvdHlwZS5zZWxlY3RSb3cpOgorICAgICAgICAoV0ku
VGFibGUucHJvdG90eXBlLmRlc2VsZWN0Um93KToKKyAgICAgICAgKFdJLlRhYmxlLnByb3RvdHlw
ZS5yZW1vdmVSb3cpOgorICAgICAgICAoV0kuVGFibGUucHJvdG90eXBlLl9nZXRPckNyZWF0ZVJv
dyk6CisgICAgICAgIChXSS5UYWJsZS5wcm90b3R5cGUuX2hhbmRsZU1vdXNlRG93bik6CisgICAg
ICAgIChXSS5UYWJsZS5wcm90b3R5cGUuX2hhbmRsZUNvbnRleHRNZW51KToKKyAgICAgICAgKFdJ
LlRhYmxlLnByb3RvdHlwZS5fcmVtb3ZlUm93cyk6CisgICAgICAgIChXSS5UYWJsZS5wcm90b3R5
cGUuX2lzUm93U2VsZWN0ZWQpOiBEZWxldGVkLgorICAgICAgICBNYWtlIGBpc1NlbGVjdGVkUm93
YCBwdWJsaWMuIEl0IGlzIG1vcmUgY29udmVuaWVudCBhbmQgZWZmaWNpZW50IHRoYW4KKyAgICAg
ICAgY2FsbGluZyBgVGFibGUucHJvdG90eXBlLnNlbGVjdGVkUm93cy5pbmNsdWRlcyhyb3dJbmRl
eClgLgorCiAyMDE4LTEwLTI0ICBNYXR0IEJha2VyICA8bWF0dGJha2VyQGFwcGxlLmNvbT4KIAog
ICAgICAgICBXZWIgSW5zcGVjdG9yOiBUYWJsZSBzaG91bGQgc3VwcG9ydCBkZWxldGluZyByb3dz
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvTG9jYWxpemF0aW9ucy9lbi5scHJv
ai9sb2NhbGl6ZWRTdHJpbmdzLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0xvY2FsaXphdGlv
bnMvZW4ubHByb2ovbG9jYWxpemVkU3RyaW5ncy5qcwppbmRleCAxZTg0OWQ4NzlkMTNhZjU1NjRi
MWM0N2FlMzlmOWUzNGY5ODY1NmYyLi4zOTMxOGVmODlhMWUwNTQ0MTExZDIzN2YxY2EzNWUwNGE3
NzMyMWI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvTG9jYWxpemF0aW9ucy9l
bi5scHJvai9sb2NhbGl6ZWRTdHJpbmdzLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9M
b2NhbGl6YXRpb25zL2VuLmxwcm9qL2xvY2FsaXplZFN0cmluZ3MuanMKQEAgLTM1OSw3ICszNTks
NiBAQCBsb2NhbGl6ZWRTdHJpbmdzWyJFeHBhbmQgQWxsIl0gPSAiRXhwYW5kIEFsbCI7CiBsb2Nh
bGl6ZWRTdHJpbmdzWyJFeHBhbmQgY29sdW1ucyJdID0gIkV4cGFuZCBjb2x1bW5zIjsKIGxvY2Fs
aXplZFN0cmluZ3NbIkV4cGFuZGVkIl0gPSAiRXhwYW5kZWQiOwogbG9jYWxpemVkU3RyaW5nc1si
RXhwZXJpbWVudGFsIl0gPSAiRXhwZXJpbWVudGFsIjsKLWxvY2FsaXplZFN0cmluZ3NbIkV4cGly
ZXMiXSA9ICJFeHBpcmVzIjsKIGxvY2FsaXplZFN0cmluZ3NbIkV4cG9ydCJdID0gIkV4cG9ydCI7
CiBsb2NhbGl6ZWRTdHJpbmdzWyJFeHBvcnQgSEFSIl0gPSAiRXhwb3J0IEhBUiI7CiBsb2NhbGl6
ZWRTdHJpbmdzWyJFeHBvcnQgcmVjb3JkaW5nICglcykiXSA9ICJFeHBvcnQgcmVjb3JkaW5nICgl
cykiOwpAQCAtNDIwLDcgKzQxOSw2IEBAIGxvY2FsaXplZFN0cmluZ3NbIkdyb3VwaW5nIE1ldGhv
ZCJdID0gIkdyb3VwaW5nIE1ldGhvZCI7CiBsb2NhbGl6ZWRTdHJpbmdzWyJIQVIgRXhwb3J0ICgl
cykiXSA9ICJIQVIgRXhwb3J0ICglcykiOwogbG9jYWxpemVkU3RyaW5nc1siSFRNTCJdID0gIkhU
TUwiOwogbG9jYWxpemVkU3RyaW5nc1siSFRNTCBBdHRyaWJ1dGVzIl0gPSAiSFRNTCBBdHRyaWJ1
dGVzIjsKLWxvY2FsaXplZFN0cmluZ3NbIkhUVFAiXSA9ICJIVFRQIjsKIGxvY2FsaXplZFN0cmlu
Z3NbIkhlYWRlcnMiXSA9ICJIZWFkZXJzIjsKIGxvY2FsaXplZFN0cmluZ3NbIkhlYWRlcnM6Il0g
PSAiSGVhZGVyczoiOwogbG9jYWxpemVkU3RyaW5nc1siSGVhZGluZyBMZXZlbCJdID0gIkhlYWRp
bmcgTGV2ZWwiOwpAQCAtNjY3LDYgKzY2NSw3IEBAIGxvY2FsaXplZFN0cmluZ3NbIlJlZ3VsYXIg
RXhwcmVzc2lvbiJdID0gIlJlZ3VsYXIgRXhwcmVzc2lvbiI7CiBsb2NhbGl6ZWRTdHJpbmdzWyJS
ZWxvYWQgV2ViIEluc3BlY3RvciJdID0gIlJlbG9hZCBXZWIgSW5zcGVjdG9yIjsKIGxvY2FsaXpl
ZFN0cmluZ3NbIlJlbG9hZCBwYWdlICglcylcblJlbG9hZCBwYWdlIGlnbm9yaW5nIGNhY2hlICgl
cykiXSA9ICJSZWxvYWQgcGFnZSAoJXMpXG5SZWxvYWQgcGFnZSBpZ25vcmluZyBjYWNoZSAoJXMp
IjsKIGxvY2FsaXplZFN0cmluZ3NbIlJlbW92YWxzIl0gPSAiUmVtb3ZhbHMiOworbG9jYWxpemVk
U3RyaW5nc1siUmVtb3ZlIENvb2tpZXMiXSA9ICJSZW1vdmUgQ29va2llcyI7CiBsb2NhbGl6ZWRT
dHJpbmdzWyJSZW1vdmUgV2F0Y2ggRXhwcmVzc2lvbiJdID0gIlJlbW92ZSBXYXRjaCBFeHByZXNz
aW9uIjsKIGxvY2FsaXplZFN0cmluZ3NbIlJlbW92ZSBwcm9iZSJdID0gIlJlbW92ZSBwcm9iZSI7
CiBsb2NhbGl6ZWRTdHJpbmdzWyJSZW1vdmUgdGhpcyBicmVha3BvaW50IGFjdGlvbiJdID0gIlJl
bW92ZSB0aGlzIGJyZWFrcG9pbnQgYWN0aW9uIjsKQEAgLTcxMSw3ICs3MTAsNiBAQCBsb2NhbGl6
ZWRTdHJpbmdzWyJSZXZlYWwgaW4gTmV0d29yayBUYWIiXSA9ICJSZXZlYWwgaW4gTmV0d29yayBU
YWIiOwogbG9jYWxpemVkU3RyaW5nc1siUmV2ZWFsIGluIE9yaWdpbmFsIFJlc291cmNlIl0gPSAi
UmV2ZWFsIGluIE9yaWdpbmFsIFJlc291cmNlIjsKIGxvY2FsaXplZFN0cmluZ3NbIlJldmVhbCBp
biBSZXNvdXJjZXMgVGFiIl0gPSAiUmV2ZWFsIGluIFJlc291cmNlcyBUYWIiOwogbG9jYWxpemVk
U3RyaW5nc1siUm9sZSJdID0gIlJvbGUiOwotbG9jYWxpemVkU3RyaW5nc1siU2FtZS1TaXRlIl0g
PSAiU2FtZS1TaXRlIjsKIGxvY2FsaXplZFN0cmluZ3NbIlNhbXBsZXMiXSA9ICJTYW1wbGVzIjsK
IGxvY2FsaXplZFN0cmluZ3NbIlNhdmUgRmlsZSJdID0gIlNhdmUgRmlsZSI7CiBsb2NhbGl6ZWRT
dHJpbmdzWyJTYXZlIFNlbGVjdGVkIl0gPSAiU2F2ZSBTZWxlY3RlZCI7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Db29raWVTdG9yYWdlQ29u
dGVudFZpZXcuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9D
b29raWVTdG9yYWdlQ29udGVudFZpZXcuanMKaW5kZXggMTdhZTg2OTBjMzE4NTk4NzNmZGMxOTNl
YWJkYThlMzhhNzEzZDQxMy4uMjNhYTM4MDljMGZmNWU1ZThmMDM3N2FhZjliZjIzMWVhZTI3ODI3
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3Mv
Q29va2llU3RvcmFnZUNvbnRlbnRWaWV3LmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL1ZpZXdzL0Nvb2tpZVN0b3JhZ2VDb250ZW50Vmlldy5qcwpAQCAtMzEsMjcg
KzMxLDIyIEBAIFdJLkNvb2tpZVN0b3JhZ2VDb250ZW50VmlldyA9IGNsYXNzIENvb2tpZVN0b3Jh
Z2VDb250ZW50VmlldyBleHRlbmRzIFdJLkNvbnRlbnRWCiAKICAgICAgICAgdGhpcy5lbGVtZW50
LmNsYXNzTGlzdC5hZGQoImNvb2tpZS1zdG9yYWdlIik7CiAKKyAgICAgICAgdGhpcy5fY29va2ll
cyA9IFtdOworICAgICAgICB0aGlzLl90YWJsZSA9IG51bGw7CisKICAgICAgICAgdGhpcy5fcmVm
cmVzaEJ1dHRvbk5hdmlnYXRpb25JdGVtID0gbmV3IFdJLkJ1dHRvbk5hdmlnYXRpb25JdGVtKCJj
b29raWUtc3RvcmFnZS1yZWZyZXNoIiwgV0kuVUlTdHJpbmcoIlJlZnJlc2giKSwgIkltYWdlcy9S
ZWxvYWRGdWxsLnN2ZyIsIDEzLCAxMyk7CiAgICAgICAgIHRoaXMuX3JlZnJlc2hCdXR0b25OYXZp
Z2F0aW9uSXRlbS5hZGRFdmVudExpc3RlbmVyKFdJLkJ1dHRvbk5hdmlnYXRpb25JdGVtLkV2ZW50
LkNsaWNrZWQsIHRoaXMuX3JlZnJlc2hCdXR0b25DbGlja2VkLCB0aGlzKTsKIAotICAgICAgICB0
aGlzLnVwZGF0ZSgpOworICAgICAgICB0aGlzLl9yZW1vdmVTZWxlY3RlZENvb2tpZXNOYXZpZ2F0
aW9uSXRlbSA9IG5ldyBXSS5CdXR0b25OYXZpZ2F0aW9uSXRlbSgicmVtb3ZlLXNlbGVjdGVkLWNv
b2tpZXMiLCBXSS5VSVN0cmluZygiUmVtb3ZlIENvb2tpZXMiKSwgIkltYWdlcy9OYXZpZ2F0aW9u
SXRlbVRyYXNoLnN2ZyIsIDE1LCAxNSk7CisgICAgICAgIHRoaXMuX3JlbW92ZVNlbGVjdGVkQ29v
a2llc05hdmlnYXRpb25JdGVtLmFkZEV2ZW50TGlzdGVuZXIoV0kuQnV0dG9uTmF2aWdhdGlvbkl0
ZW0uRXZlbnQuQ2xpY2tlZCwgKCkgPT4geyB0aGlzLl90YWJsZS5yZW1vdmVTZWxlY3RlZFJvd3Mo
KTsgfSk7CisgICAgICAgIHRoaXMuX3JlbW92ZVNlbGVjdGVkQ29va2llc05hdmlnYXRpb25JdGVt
LmVuYWJsZWQgPSBmYWxzZTsKICAgICB9CiAKICAgICAvLyBQdWJsaWMKIAogICAgIGdldCBuYXZp
Z2F0aW9uSXRlbXMoKQogICAgIHsKLSAgICAgICAgcmV0dXJuIFt0aGlzLl9yZWZyZXNoQnV0dG9u
TmF2aWdhdGlvbkl0ZW1dOwotICAgIH0KLQotICAgIHVwZGF0ZSgpCi0gICAgewotICAgICAgICBQ
YWdlQWdlbnQuZ2V0Q29va2llcygpLnRoZW4oKHBheWxvYWQpID0+IHsKLSAgICAgICAgICAgIHRo
aXMuX2Nvb2tpZXMgPSB0aGlzLl9maWx0ZXJDb29raWVzKHBheWxvYWQuY29va2llcyk7Ci0gICAg
ICAgICAgICB0aGlzLl9yZWJ1aWxkVGFibGUoKTsKLSAgICAgICAgfSkuY2F0Y2goKGVycm9yKSA9
PiB7Ci0gICAgICAgICAgICBjb25zb2xlLmVycm9yKCJDb3VsZCBub3QgZmV0Y2ggY29va2llczog
IiwgZXJyb3IpOwotICAgICAgICB9KTsKKyAgICAgICAgcmV0dXJuIFt0aGlzLl9yZWZyZXNoQnV0
dG9uTmF2aWdhdGlvbkl0ZW0sIHRoaXMuX3JlbW92ZVNlbGVjdGVkQ29va2llc05hdmlnYXRpb25J
dGVtXTsKICAgICB9CiAKICAgICBzYXZlVG9Db29raWUoY29va2llKQpAQCAtNjIsOTcgKzU3LDEz
OCBAQCBXSS5Db29raWVTdG9yYWdlQ29udGVudFZpZXcgPSBjbGFzcyBDb29raWVTdG9yYWdlQ29u
dGVudFZpZXcgZXh0ZW5kcyBXSS5Db250ZW50VgogCiAgICAgZ2V0IHNjcm9sbGFibGVFbGVtZW50
cygpCiAgICAgewotICAgICAgICBpZiAoIXRoaXMuX2RhdGFHcmlkKQorICAgICAgICBpZiAoIXRo
aXMuX3RhYmxlKQogICAgICAgICAgICAgcmV0dXJuIFtdOwotICAgICAgICByZXR1cm4gW3RoaXMu
X2RhdGFHcmlkLnNjcm9sbENvbnRhaW5lcl07CisgICAgICAgIHJldHVybiBbdGhpcy5fdGFibGUu
c2Nyb2xsQ29udGFpbmVyXTsKICAgICB9CiAKLSAgICAvLyBQcml2YXRlCisgICAgLy8gVGFibGUg
ZGF0YVNvdXJjZQogCi0gICAgX3JlYnVpbGRUYWJsZSgpCi0gICAgewotICAgICAgICAvLyBGSVhN
RSA8aHR0cHM6Ly93ZWJraXQub3JnL2IvMTUxNDAwPjogSWYgdGhlcmUgYXJlIG5vIGNvb2tpZXMs
IGFkZCBwbGFjZWhvbGRlciBleHBsYW5hdG9yeSB0ZXh0LgotICAgICAgICBpZiAoIXRoaXMuX2Rh
dGFHcmlkKSB7Ci0gICAgICAgICAgICB2YXIgY29sdW1ucyA9IHtuYW1lOiB7fSwgdmFsdWU6IHt9
LCBkb21haW46IHt9LCBwYXRoOiB7fSwgZXhwaXJlczoge30sIHNpemU6IHt9LCBodHRwOiB7fSwg
c2VjdXJlOiB7fSwgc2FtZVNpdGU6IHt9fTsKLQotICAgICAgICAgICAgY29sdW1ucy5uYW1lLnRp
dGxlID0gV0kuVUlTdHJpbmcoIk5hbWUiKTsKLSAgICAgICAgICAgIGNvbHVtbnMubmFtZS5zb3J0
YWJsZSA9IHRydWU7Ci0gICAgICAgICAgICBjb2x1bW5zLm5hbWUud2lkdGggPSAiMjQlIjsKLSAg
ICAgICAgICAgIGNvbHVtbnMubmFtZS5sb2NrZWQgPSB0cnVlOwotCi0gICAgICAgICAgICBjb2x1
bW5zLnZhbHVlLnRpdGxlID0gV0kuVUlTdHJpbmcoIlZhbHVlIik7Ci0gICAgICAgICAgICBjb2x1
bW5zLnZhbHVlLnNvcnRhYmxlID0gdHJ1ZTsKLSAgICAgICAgICAgIGNvbHVtbnMudmFsdWUud2lk
dGggPSAiMzQlIjsKLSAgICAgICAgICAgIGNvbHVtbnMudmFsdWUubG9ja2VkID0gdHJ1ZTsKLQot
ICAgICAgICAgICAgY29sdW1ucy5kb21haW4udGl0bGUgPSBXSS5VSVN0cmluZygiRG9tYWluIik7
Ci0gICAgICAgICAgICBjb2x1bW5zLmRvbWFpbi5zb3J0YWJsZSA9IHRydWU7Ci0gICAgICAgICAg
ICBjb2x1bW5zLmRvbWFpbi53aWR0aCA9ICI2JSI7Ci0KLSAgICAgICAgICAgIGNvbHVtbnMucGF0
aC50aXRsZSA9IFdJLlVJU3RyaW5nKCJQYXRoIik7Ci0gICAgICAgICAgICBjb2x1bW5zLnBhdGgu
c29ydGFibGUgPSB0cnVlOwotICAgICAgICAgICAgY29sdW1ucy5wYXRoLndpZHRoID0gIjYlIjsK
LQotICAgICAgICAgICAgY29sdW1ucy5leHBpcmVzLnRpdGxlID0gV0kuVUlTdHJpbmcoIkV4cGly
ZXMiKTsKLSAgICAgICAgICAgIGNvbHVtbnMuZXhwaXJlcy5zb3J0YWJsZSA9IHRydWU7Ci0gICAg
ICAgICAgICBjb2x1bW5zLmV4cGlyZXMud2lkdGggPSAiNiUiOwotCi0gICAgICAgICAgICBjb2x1
bW5zLnNpemUudGl0bGUgPSBXSS5VSVN0cmluZygiU2l6ZSIpOwotICAgICAgICAgICAgY29sdW1u
cy5zaXplLmFsaWduZWQgPSAicmlnaHQiOwotICAgICAgICAgICAgY29sdW1ucy5zaXplLnNvcnRh
YmxlID0gdHJ1ZTsKLSAgICAgICAgICAgIGNvbHVtbnMuc2l6ZS53aWR0aCA9ICI2JSI7Ci0KLSAg
ICAgICAgICAgIGNvbHVtbnMuaHR0cC50aXRsZSA9IFdJLlVJU3RyaW5nKCJIVFRQIik7Ci0gICAg
ICAgICAgICBjb2x1bW5zLmh0dHAuYWxpZ25lZCA9ICJjZW50ZXJlZCI7Ci0gICAgICAgICAgICBj
b2x1bW5zLmh0dHAuc29ydGFibGUgPSB0cnVlOwotICAgICAgICAgICAgY29sdW1ucy5odHRwLndp
ZHRoID0gIjYlIjsKLQotICAgICAgICAgICAgY29sdW1ucy5zZWN1cmUudGl0bGUgPSBXSS5VSVN0
cmluZygiU2VjdXJlIik7Ci0gICAgICAgICAgICBjb2x1bW5zLnNlY3VyZS5hbGlnbmVkID0gImNl
bnRlcmVkIjsKLSAgICAgICAgICAgIGNvbHVtbnMuc2VjdXJlLnNvcnRhYmxlID0gdHJ1ZTsKLSAg
ICAgICAgICAgIGNvbHVtbnMuc2VjdXJlLndpZHRoID0gIjYlIjsKLQotICAgICAgICAgICAgY29s
dW1ucy5zYW1lU2l0ZS50aXRsZSA9IFdJLlVJU3RyaW5nKCJTYW1lLVNpdGUiKTsKLSAgICAgICAg
ICAgIGNvbHVtbnMuc2FtZVNpdGUuc29ydGFibGUgPSB0cnVlOwotICAgICAgICAgICAgY29sdW1u
cy5zYW1lU2l0ZS53aWR0aCA9ICI2JSI7Ci0KLSAgICAgICAgICAgIHRoaXMuX2RhdGFHcmlkID0g
bmV3IFdJLkRhdGFHcmlkKGNvbHVtbnMsIG51bGwsIHRoaXMuX2RlbGV0ZUNhbGxiYWNrLmJpbmQo
dGhpcykpOwotICAgICAgICAgICAgdGhpcy5fZGF0YUdyaWQuY29sdW1uQ2hvb3NlckVuYWJsZWQg
PSB0cnVlOwotICAgICAgICAgICAgdGhpcy5fZGF0YUdyaWQuYWRkRXZlbnRMaXN0ZW5lcihXSS5E
YXRhR3JpZC5FdmVudC5Tb3J0Q2hhbmdlZCwgdGhpcy5fc29ydERhdGFHcmlkLCB0aGlzKTsKLSAg
ICAgICAgICAgIHRoaXMuX2RhdGFHcmlkLnNvcnRDb2x1bW5JZGVudGlmaWVyID0gIm5hbWUiOwot
ICAgICAgICAgICAgdGhpcy5fZGF0YUdyaWQuY3JlYXRlU2V0dGluZ3MoImNvb2tpZS1zdG9yYWdl
LWNvbnRlbnQtdmlldyIpOwotCi0gICAgICAgICAgICB0aGlzLmFkZFN1YnZpZXcodGhpcy5fZGF0
YUdyaWQpOwotICAgICAgICAgICAgdGhpcy5fZGF0YUdyaWQudXBkYXRlTGF5b3V0KCk7Ci0gICAg
ICAgIH0KKyAgICB0YWJsZU51bWJlck9mUm93cyh0YWJsZSkKKyAgICB7CisgICAgICAgIHJldHVy
biB0aGlzLl9jb29raWVzLmxlbmd0aDsKKyAgICB9CiAKLSAgICAgICAgY29uc29sZS5hc3NlcnQo
dGhpcy5fZGF0YUdyaWQpOwotICAgICAgICB0aGlzLl9kYXRhR3JpZC5yZW1vdmVDaGlsZHJlbigp
OwotCi0gICAgICAgIGZvciAobGV0IGNvb2tpZSBvZiB0aGlzLl9jb29raWVzKSB7Ci0gICAgICAg
ICAgICBjb25zdCBjaGVja21hcmsgPSAiXHUyNzEzIjsKLSAgICAgICAgICAgIHZhciBkYXRhID0g
ewotICAgICAgICAgICAgICAgIG5hbWU6IGNvb2tpZS5uYW1lLAotICAgICAgICAgICAgICAgIHZh
bHVlOiBjb29raWUudmFsdWUsCi0gICAgICAgICAgICAgICAgZG9tYWluOiBjb29raWUuZG9tYWlu
IHx8ICIiLAotICAgICAgICAgICAgICAgIHBhdGg6IGNvb2tpZS5wYXRoIHx8ICIiLAotICAgICAg
ICAgICAgICAgIGV4cGlyZXM6ICIiLAotICAgICAgICAgICAgICAgIHNpemU6IE51bWJlci5ieXRl
c1RvU3RyaW5nKGNvb2tpZS5zaXplKSwKLSAgICAgICAgICAgICAgICBodHRwOiBjb29raWUuaHR0
cE9ubHkgPyBjaGVja21hcmsgOiAiIiwKLSAgICAgICAgICAgICAgICBzZWN1cmU6IGNvb2tpZS5z
ZWN1cmUgPyBjaGVja21hcmsgOiAiIiwKLSAgICAgICAgICAgICAgICBzYW1lU2l0ZTogY29va2ll
LnNhbWVTaXRlICYmIGNvb2tpZS5zYW1lU2l0ZSAhPT0gV0kuQ29va2llLlNhbWVTaXRlVHlwZS5O
b25lID8gV0kuQ29va2llLmRpc3BsYXlOYW1lRm9yU2FtZVNpdGVUeXBlKGNvb2tpZS5zYW1lU2l0
ZSkgOiAiIiwKLSAgICAgICAgICAgIH07CisgICAgdGFibGVTb3J0Q2hhbmdlZCh0YWJsZSkKKyAg
ICB7CisgICAgICAgIGxldCBjb21wYXJhdG9yID0gdGhpcy5fZ2VuZXJhdGVTb3J0Q29tcGFyYXRv
cigpOworICAgICAgICBpZiAoIWNvbXBhcmF0b3IpCisgICAgICAgICAgICByZXR1cm47CiAKLSAg
ICAgICAgICAgIGlmIChjb29raWUudHlwZSAhPT0gV0kuQ29va2llVHlwZS5SZXF1ZXN0KQotICAg
ICAgICAgICAgICAgIGRhdGFbImV4cGlyZXMiXSA9IGNvb2tpZS5zZXNzaW9uID8gV0kuVUlTdHJp
bmcoIlNlc3Npb24iKSA6IG5ldyBEYXRlKGNvb2tpZS5leHBpcmVzKS50b0xvY2FsZVN0cmluZygp
OworICAgICAgICB0aGlzLl9jb29raWVzLnNvcnQoY29tcGFyYXRvcik7CisgICAgICAgIHRoaXMu
X3RhYmxlLnJlbG9hZERhdGEoKTsKKyAgICB9CisKKyAgICAvLyBUYWJsZSBkZWxlZ2F0ZQorCisg
ICAgdGFibGVDZWxsQ29udGV4dE1lbnVDbGlja2VkKHRhYmxlLCBjZWxsLCBjb2x1bW4sIHJvd0lu
ZGV4LCBldmVudCkKKyAgICB7CisgICAgICAgIGxldCBjb250ZXh0TWVudSA9IFdJLkNvbnRleHRN
ZW51LmNyZWF0ZUZyb21FdmVudChldmVudCk7CisKKyAgICAgICAgY29udGV4dE1lbnUuYXBwZW5k
U2VwYXJhdG9yKCk7CisgICAgICAgIGNvbnRleHRNZW51LmFwcGVuZEl0ZW0oV0kuVUlTdHJpbmco
IkRlbGV0ZSIpLCAoKSA9PiB7CisgICAgICAgICAgICBpZiAodGFibGUuaXNSb3dTZWxlY3RlZChy
b3dJbmRleCkpCisgICAgICAgICAgICAgICAgdGFibGUucmVtb3ZlU2VsZWN0ZWRSb3dzKCk7Cisg
ICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGFibGUucmVtb3ZlUm93KHJvd0luZGV4
KTsKKyAgICAgICAgfSk7CisgICAgfQorCisgICAgdGFibGVEaWRSZW1vdmVSb3dzKHRhYmxlLCBy
b3dJbmRleGVzKQorICAgIHsKKyAgICAgICAgaWYgKCFyb3dJbmRleGVzLmxlbmd0aCkKKyAgICAg
ICAgICAgIHJldHVybjsKKworICAgICAgICBmb3IgKGxldCBpbmRleCBvZiByb3dJbmRleGVzKSB7
CisgICAgICAgICAgICBsZXQgY29va2llID0gdGhpcy5fY29va2llc1tpbmRleF07CisgICAgICAg
ICAgICBjb25zb2xlLmFzc2VydChjb29raWUsICJNaXNzaW5nIGNvb2tpZSBmb3Igcm93ICIgKyBp
bmRleCk7CisgICAgICAgICAgICBpZiAoIWNvb2tpZSkKKyAgICAgICAgICAgICAgICBjb250aW51
ZTsKIAotICAgICAgICAgICAgdmFyIG5vZGUgPSBuZXcgV0kuRGF0YUdyaWROb2RlKGRhdGEpOwot
ICAgICAgICAgICAgbm9kZS5jb29raWUgPSBjb29raWU7CisgICAgICAgICAgICB0aGlzLl9jb29r
aWVzLnNwbGljZShpbmRleCwgMSk7CisKKyAgICAgICAgICAgIGxldCBjb29raWVVUkwgPSAoY29v
a2llLnNlY3VyZSA/ICJodHRwczovLyIgOiAiaHR0cDovLyIpICsgY29va2llLmRvbWFpbiArIGNv
b2tpZS5wYXRoOworICAgICAgICAgICAgUGFnZUFnZW50LmRlbGV0ZUNvb2tpZShjb29raWUubmFt
ZSwgY29va2llVVJMKTsKKyAgICAgICAgIH0KKyAgICB9CiAKLSAgICAgICAgICAgIHRoaXMuX2Rh
dGFHcmlkLmFwcGVuZENoaWxkKG5vZGUpOworICAgIHRhYmxlUG9wdWxhdGVDZWxsKHRhYmxlLCBj
ZWxsLCBjb2x1bW4sIHJvd0luZGV4KQorICAgIHsKKyAgICAgICAgbGV0IGNvb2tpZSA9IHRoaXMu
X2Nvb2tpZXNbcm93SW5kZXhdOworCisgICAgICAgIGNvbnN0IGNoZWNrbWFyayA9ICJcdTI3MTMi
OworCisgICAgICAgIHN3aXRjaCAoY29sdW1uLmlkZW50aWZpZXIpIHsKKyAgICAgICAgY2FzZSAi
bmFtZSI6CisgICAgICAgICAgICBjZWxsLnRleHRDb250ZW50ID0gY29va2llLm5hbWU7CisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSAidmFsdWUiOgorICAgICAgICAgICAgY2VsbC50
ZXh0Q29udGVudCA9IGNvb2tpZS52YWx1ZTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBj
YXNlICJkb21haW4iOgorICAgICAgICAgICAgY2VsbC50ZXh0Q29udGVudCA9IGNvb2tpZS5kb21h
aW4gfHwgZW1EYXNoOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgInBhdGgiOgor
ICAgICAgICAgICAgY2VsbC50ZXh0Q29udGVudCA9IGNvb2tpZS5wYXRoIHx8IGVtRGFzaDsKKyAg
ICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlICJleHBpcmVzIjoKKyAgICAgICAgICAgIGNl
bGwudGV4dENvbnRlbnQgPSBjb29raWUuZXhwaXJlcyA/IG5ldyBEYXRlKGNvb2tpZS5leHBpcmVz
KS50b0xvY2FsZVN0cmluZygpIDogV0kuVUlTdHJpbmcoIlNlc3Npb24iKTsKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICBjYXNlICJzaXplIjoKKyAgICAgICAgICAgIGNlbGwudGV4dENvbnRl
bnQgPSBOdW1iZXIuYnl0ZXNUb1N0cmluZyhjb29raWUuc2l6ZSk7CisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgY2FzZSAic2VjdXJlIjoKKyAgICAgICAgICAgIGNlbGwudGV4dENvbnRlbnQg
PSBjb29raWUuc2VjdXJlID8gY2hlY2ttYXJrIDogemVyb1dpZHRoU3BhY2U7CisgICAgICAgICAg
ICBicmVhazsKKyAgICAgICAgY2FzZSAiaHR0cE9ubHkiOgorICAgICAgICAgICAgY2VsbC50ZXh0
Q29udGVudCA9IGNvb2tpZS5odHRwT25seSA/IGNoZWNrbWFyayA6IHplcm9XaWR0aFNwYWNlOwor
ICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgInNhbWVTaXRlIjoKKyAgICAgICAgICAg
IGNlbGwudGV4dENvbnRlbnQgPSBjb29raWUuc2FtZVNpdGUgPT09IFdJLkNvb2tpZS5TYW1lU2l0
ZVR5cGUuTm9uZSA/IGVtRGFzaCA6IFdJLkNvb2tpZS5kaXNwbGF5TmFtZUZvclNhbWVTaXRlVHlw
ZShjb29raWUuc2FtZVNpdGUpOworICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KKworICAg
ICAgICByZXR1cm4gY2VsbDsKICAgICB9CiAKKyAgICB0YWJsZVNlbGVjdGlvbkRpZENoYW5nZSh0
YWJsZSkKKyAgICB7CisgICAgICAgIHRoaXMuX3JlbW92ZVNlbGVjdGVkQ29va2llc05hdmlnYXRp
b25JdGVtLmVuYWJsZWQgPSAhIXRoaXMuX3RhYmxlLnNlbGVjdGVkUm93cy5sZW5ndGg7CisgICAg
fQorCisgICAgLy8gUHJvdGVjdGVkCisKKyAgICBpbml0aWFsTGF5b3V0KCkKKyAgICB7CisgICAg
ICAgIHN1cGVyLmluaXRpYWxMYXlvdXQoKTsKKworICAgICAgICB0aGlzLl90YWJsZSA9IG5ldyBX
SS5UYWJsZSgiY29va2llcy10YWJsZSIsIHRoaXMsIHRoaXMsIDIwKTsKKyAgICAgICAgdGhpcy5f
dGFibGUuYWxsb3dzTXVsdGlwbGVTZWxlY3Rpb24gPSB0cnVlOworCisgICAgICAgIHRoaXMuX3Rh
YmxlLmFkZENvbHVtbihuZXcgV0kuVGFibGVDb2x1bW4oIm5hbWUiLCBXSS5VSVN0cmluZygiTmFt
ZSIpLCB7bWluV2lkdGg6IDE1MCwgbWF4V2lkdGg6IDMwMCwgaW5pdGlhbFdpZHRoOiAyMDAsIHJl
c2l6ZVR5cGU6IFdJLlRhYmxlQ29sdW1uLlJlc2l6ZVR5cGUuTG9ja2VkfSkpOworICAgICAgICB0
aGlzLl90YWJsZS5hZGRDb2x1bW4obmV3IFdJLlRhYmxlQ29sdW1uKCJ2YWx1ZSIsIFdJLlVJU3Ry
aW5nKCJWYWx1ZSIpLCB7bWluV2lkdGg6IDE1MCwgaGlkZWFibGU6IGZhbHNlfSkpOworICAgICAg
ICB0aGlzLl90YWJsZS5hZGRDb2x1bW4obmV3IFdJLlRhYmxlQ29sdW1uKCJkb21haW4iLCBXSS51
bmxvY2FsaXplZFN0cmluZygiRG9tYWluIiksIHt9KSk7CisgICAgICAgIHRoaXMuX3RhYmxlLmFk
ZENvbHVtbihuZXcgV0kuVGFibGVDb2x1bW4oInBhdGgiLCBXSS51bmxvY2FsaXplZFN0cmluZygi
UGF0aCIpLCB7bWluV2lkdGg6IDMwLCBtYXhXaWR0aDogMzAwLCBpbml0aWFsV2lkdGg6IDY1LH0p
KTsKKyAgICAgICAgdGhpcy5fdGFibGUuYWRkQ29sdW1uKG5ldyBXSS5UYWJsZUNvbHVtbigiZXhw
aXJlcyIsIFdJLnVubG9jYWxpemVkU3RyaW5nKCJFeHBpcmVzIiksIHttYXhXaWR0aDogMTUwfSkp
OworICAgICAgICB0aGlzLl90YWJsZS5hZGRDb2x1bW4obmV3IFdJLlRhYmxlQ29sdW1uKCJzaXpl
IiwgV0kudW5sb2NhbGl6ZWRTdHJpbmcoIlNpemUiKSwge21pbldpZHRoOiA1NSwgbWF4V2lkdGg6
IDY1LCBhbGlnbjogInJpZ2h0In0pKTsKKyAgICAgICAgdGhpcy5fdGFibGUuYWRkQ29sdW1uKG5l
dyBXSS5UYWJsZUNvbHVtbigic2VjdXJlIiwgV0kudW5sb2NhbGl6ZWRTdHJpbmcoIlNlY3VyZSIp
LCB7bWluV2lkdGg6IDU1LCBtYXhXaWR0aDogNjUsIGFsaWduOiAiY2VudGVyIn0pKTsKKyAgICAg
ICAgdGhpcy5fdGFibGUuYWRkQ29sdW1uKG5ldyBXSS5UYWJsZUNvbHVtbigiaHR0cE9ubHkiLCBX
SS51bmxvY2FsaXplZFN0cmluZygiSHR0cE9ubHkiKSwge21pbldpZHRoOiA1NSwgbWF4V2lkdGg6
IDY1LCBhbGlnbjogImNlbnRlciJ9KSk7CisgICAgICAgIHRoaXMuX3RhYmxlLmFkZENvbHVtbihu
ZXcgV0kuVGFibGVDb2x1bW4oInNhbWVTaXRlIiwgV0kudW5sb2NhbGl6ZWRTdHJpbmcoIlNhbWVT
aXRlIiksIHttaW5XaWR0aDogNTUsIG1heFdpZHRoOiA2NX0pKTsKKworICAgICAgICBpZiAoIXRo
aXMuX3RhYmxlLnNvcnRDb2x1bW5JZGVudGlmaWVyKSB7CisgICAgICAgICAgICB0aGlzLl90YWJs
ZS5zb3J0T3JkZXIgPSBXSS5UYWJsZS5Tb3J0T3JkZXIuQXNjZW5kaW5nOworICAgICAgICAgICAg
dGhpcy5fdGFibGUuc29ydENvbHVtbklkZW50aWZpZXIgPSAibmFtZSI7CisgICAgICAgICB9CisK
KyAgICAgICAgdGhpcy5hZGRTdWJ2aWV3KHRoaXMuX3RhYmxlKTsKKworICAgICAgICB0aGlzLl90
YWJsZS5lbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImtleWRvd24iLCB0aGlzLl9oYW5kbGVUYWJs
ZUtleURvd24uYmluZCh0aGlzKSk7CisKKyAgICAgICAgdGhpcy5fcmVsb2FkQ29va2llcygpOwor
ICAgIH0KKworICAgIC8vIFByaXZhdGUKKwogICAgIF9maWx0ZXJDb29raWVzKGNvb2tpZXMpCiAg
ICAgewogICAgICAgICBsZXQgcmVzb3VyY2VNYXRjaGVzU3RvcmFnZURvbWFpbiA9IChyZXNvdXJj
ZSkgPT4gewpAQCAtMTc2LDYyICsyMTIsNzAgQEAgV0kuQ29va2llU3RvcmFnZUNvbnRlbnRWaWV3
ID0gY2xhc3MgQ29va2llU3RvcmFnZUNvbnRlbnRWaWV3IGV4dGVuZHMgV0kuQ29udGVudFYKICAg
ICAgICAgcmV0dXJuIGNvb2tpZXNGb3JEb21haW47CiAgICAgfQogCi0gICAgX3NvcnREYXRhR3Jp
ZCgpCisgICAgX2dlbmVyYXRlU29ydENvbXBhcmF0b3IoKQogICAgIHsKLSAgICAgICAgZnVuY3Rp
b24gbG9jYWxlQ29tcGFyZShmaWVsZCwgbm9kZUEsIG5vZGVCKQotICAgICAgICB7Ci0gICAgICAg
ICAgICByZXR1cm4gKG5vZGVBLmRhdGFbZmllbGRdICsgIiIpLmV4dGVuZGVkTG9jYWxlQ29tcGFy
ZShub2RlQi5kYXRhW2ZpZWxkXSArICIiKTsKLSAgICAgICAgfQotCi0gICAgICAgIGZ1bmN0aW9u
IG51bWJlckNvbXBhcmUoZmllbGQsIG5vZGVBLCBub2RlQikKLSAgICAgICAgewotICAgICAgICAg
ICAgcmV0dXJuIG5vZGVBLmNvb2tpZVtmaWVsZF0gLSBub2RlQi5jb29raWVbZmllbGRdOworICAg
ICAgICBsZXQgc29ydENvbHVtbklkZW50aWZpZXIgPSB0aGlzLl90YWJsZS5zb3J0Q29sdW1uSWRl
bnRpZmllcjsKKyAgICAgICAgaWYgKCFzb3J0Q29sdW1uSWRlbnRpZmllcikgeworICAgICAgICAg
ICAgdGhpcy5fZW50cmllc1NvcnRDb21wYXJhdG9yID0gbnVsbDsKKyAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgfQogCi0gICAgICAgIGZ1bmN0aW9uIGV4cGlyZXNDb21wYXJlKG5vZGVBLCBu
b2RlQikKLSAgICAgICAgewotICAgICAgICAgICAgaWYgKG5vZGVBLmNvb2tpZS5zZXNzaW9uICE9
PSBub2RlQi5jb29raWUuc2Vzc2lvbikKLSAgICAgICAgICAgICAgICByZXR1cm4gbm9kZUEuY29v
a2llLnNlc3Npb24gPyAtMSA6IDE7Ci0KLSAgICAgICAgICAgIGlmIChub2RlQS5jb29raWUuc2Vz
c2lvbikKLSAgICAgICAgICAgICAgICByZXR1cm4gMDsKLQotICAgICAgICAgICAgcmV0dXJuIG5v
ZGVBLmNvb2tpZS5leHBpcmVzIC0gbm9kZUIuY29va2llLmV4cGlyZXM7Ci0gICAgICAgIH0KKyAg
ICAgICAgbGV0IGNvbXBhcmF0b3IgPSBudWxsOworCisgICAgICAgIHN3aXRjaCAoc29ydENvbHVt
bklkZW50aWZpZXIpIHsKKyAgICAgICAgY2FzZSAibmFtZSI6CisgICAgICAgIGNhc2UgInZhbHVl
IjoKKyAgICAgICAgY2FzZSAiZG9tYWluIjoKKyAgICAgICAgY2FzZSAicGF0aCI6CisgICAgICAg
IGNhc2UgInNhbWVTaXRlIjoKKyAgICAgICAgICAgIGNvbXBhcmF0b3IgPSAoYSwgYikgPT4gKGFb
c29ydENvbHVtbklkZW50aWZpZXJdIHx8ICIiKS5leHRlbmRlZExvY2FsZUNvbXBhcmUoYltzb3J0
Q29sdW1uSWRlbnRpZmllcl0gfHwgIiIpOworICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAg
Y2FzZSAic2l6ZSI6CisgICAgICAgIGNhc2UgImh0dHBPbmx5IjoKKyAgICAgICAgY2FzZSAic2Vj
dXJlIjoKKyAgICAgICAgICAgIGNvbXBhcmF0b3IgPSAoYSwgYikgPT4gYVtzb3J0Q29sdW1uSWRl
bnRpZmllcl0gLSBiW3NvcnRDb2x1bW5JZGVudGlmaWVyXTsKKyAgICAgICAgICAgIGJyZWFrOwor
CisgICAgICAgIGNhc2UgImV4cGlyZXMiOgorICAgICAgICAgICAgY29tcGFyYXRvciA9IChhLCBi
KSA9PiB7CisgICAgICAgICAgICAgICAgbGV0IGFFeHBpcmVzID0gYS5leHBpcmVzOworICAgICAg
ICAgICAgICAgIGlmICghYUV4cGlyZXMpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiAxOwor
ICAgICAgICAgICAgICAgIGxldCBiRXhwaXJlcyA9IGIuZXhwaXJlczsKKyAgICAgICAgICAgICAg
ICBpZiAoIWJFeHBpcmVzKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gLTE7CisgICAgICAg
ICAgICAgICAgcmV0dXJuIGFFeHBpcmVzLmdldFRpbWUoKSAtIGJFeHBpcmVzLmdldFRpbWUoKTsK
KyAgICAgICAgICAgIH07CisgICAgICAgICAgICBicmVhazsKIAotICAgICAgICB2YXIgY29tcGFy
YXRvcjsKLSAgICAgICAgc3dpdGNoICh0aGlzLl9kYXRhR3JpZC5zb3J0Q29sdW1uSWRlbnRpZmll
cikgewotICAgICAgICAgICAgY2FzZSAidmFsdWUiOiBjb21wYXJhdG9yID0gbG9jYWxlQ29tcGFy
ZS5iaW5kKHRoaXMsICJ2YWx1ZSIpOyBicmVhazsKLSAgICAgICAgICAgIGNhc2UgImRvbWFpbiI6
IGNvbXBhcmF0b3IgPSBsb2NhbGVDb21wYXJlLmJpbmQodGhpcywgImRvbWFpbiIpOyBicmVhazsK
LSAgICAgICAgICAgIGNhc2UgInBhdGgiOiBjb21wYXJhdG9yID0gbG9jYWxlQ29tcGFyZS5iaW5k
KHRoaXMsICJwYXRoIik7IGJyZWFrOwotICAgICAgICAgICAgY2FzZSAiZXhwaXJlcyI6IGNvbXBh
cmF0b3IgPSBleHBpcmVzQ29tcGFyZTsgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlICJzaXplIjog
Y29tcGFyYXRvciA9IG51bWJlckNvbXBhcmUuYmluZCh0aGlzLCAic2l6ZSIpOyBicmVhazsKLSAg
ICAgICAgICAgIGNhc2UgImh0dHAiOiBjb21wYXJhdG9yID0gbG9jYWxlQ29tcGFyZS5iaW5kKHRo
aXMsICJodHRwIik7IGJyZWFrOwotICAgICAgICAgICAgY2FzZSAic2VjdXJlIjogY29tcGFyYXRv
ciA9IGxvY2FsZUNvbXBhcmUuYmluZCh0aGlzLCAic2VjdXJlIik7IGJyZWFrOwotICAgICAgICAg
ICAgY2FzZSAic2FtZVNpdGUiOiBjb21wYXJhdG9yID0gbG9jYWxlQ29tcGFyZS5iaW5kKHRoaXMs
ICJzYW1lU2l0ZSIpOyBicmVhazsKLSAgICAgICAgICAgIGNhc2UgIm5hbWUiOgotICAgICAgICAg
ICAgZGVmYXVsdDogY29tcGFyYXRvciA9IGxvY2FsZUNvbXBhcmUuYmluZCh0aGlzLCAibmFtZSIp
OyBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KCJV
bmV4cGVjdGVkIHNvcnQgY29sdW1uIiwgc29ydENvbHVtbklkZW50aWZpZXIpOwogICAgICAgICB9
CiAKLSAgICAgICAgY29uc29sZS5hc3NlcnQoY29tcGFyYXRvcik7Ci0gICAgICAgIHRoaXMuX2Rh
dGFHcmlkLnNvcnROb2Rlcyhjb21wYXJhdG9yKTsKKyAgICAgICAgbGV0IHJldmVyc2VGYWN0b3Ig
PSB0aGlzLl90YWJsZS5zb3J0T3JkZXIgPT09IFdJLlRhYmxlLlNvcnRPcmRlci5Bc2NlbmRpbmcg
PyAxIDogLTE7CisgICAgICAgIHJldHVybiAoYSwgYikgPT4gcmV2ZXJzZUZhY3RvciAqIGNvbXBh
cmF0b3IoYSwgYik7CiAgICAgfQogCi0gICAgX2RlbGV0ZUNhbGxiYWNrKG5vZGUpCisgICAgX3Jl
ZnJlc2hCdXR0b25DbGlja2VkKGV2ZW50KQogICAgIHsKLSAgICAgICAgaWYgKCFub2RlIHx8ICFu
b2RlLmNvb2tpZSkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICB2YXIgY29va2llID0g
bm9kZS5jb29raWU7Ci0gICAgICAgIHZhciBjb29raWVVUkwgPSAoY29va2llLnNlY3VyZSA/ICJo
dHRwczovLyIgOiAiaHR0cDovLyIpICsgY29va2llLmRvbWFpbiArIGNvb2tpZS5wYXRoOwotICAg
ICAgICBQYWdlQWdlbnQuZGVsZXRlQ29va2llKGNvb2tpZS5uYW1lLCBjb29raWVVUkwpOworICAg
ICAgICB0aGlzLl9yZWxvYWRDb29raWVzKCk7CisgICAgfQogCi0gICAgICAgIHRoaXMudXBkYXRl
KCk7CisgICAgX3JlbG9hZENvb2tpZXMoKQorICAgIHsKKyAgICAgICAgUGFnZUFnZW50LmdldENv
b2tpZXMoKS50aGVuKChwYXlsb2FkKSA9PiB7CisgICAgICAgICAgICB0aGlzLl9jb29raWVzID0g
dGhpcy5fZmlsdGVyQ29va2llcyhwYXlsb2FkLmNvb2tpZXMpOworICAgICAgICAgICAgdGhpcy5f
dGFibGUucmVsb2FkRGF0YSgpOworICAgICAgICB9KS5jYXRjaCgoZXJyb3IpID0+IHsKKyAgICAg
ICAgICAgIGNvbnNvbGUuZXJyb3IoIkNvdWxkIG5vdCBmZXRjaCBjb29raWVzOiAiLCBlcnJvcik7
CisgICAgICAgIH0pOwogICAgIH0KIAotICAgIF9yZWZyZXNoQnV0dG9uQ2xpY2tlZChldmVudCkK
KyAgICBfaGFuZGxlVGFibGVLZXlEb3duKGV2ZW50KQogICAgIHsKLSAgICAgICAgdGhpcy51cGRh
dGUoKTsKKyAgICAgICAgaWYgKGV2ZW50LmtleUNvZGUgPT09IDggfHwgZXZlbnQua2V5Q29kZSA9
PT0gNDYpCisgICAgICAgICAgICB0aGlzLl90YWJsZS5yZW1vdmVTZWxlY3RlZFJvd3MoKTsKICAg
ICB9CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9WaWV3cy9UYWJsZS5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Zp
ZXdzL1RhYmxlLmpzCmluZGV4IGQ5ZGFlN2JkYmE4YzI2OTVmZWZmNTAyN2JiMWM2ZDE1NDNiMzJk
YzIuLmQ5MGRhZWQ4NDJmY2VjNzMzMzYxMWQ1MjViMGVhMGYyZDIwMWM0ZjIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RhYmxlLmpzCisrKyBi
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RhYmxlLmpzCkBAIC0y
MzUsNiArMjM1LDExIEBAIFdJLlRhYmxlID0gY2xhc3MgVGFibGUgZXh0ZW5kcyBXSS5WaWV3CiAg
ICAgICAgICAgICB0aGlzLl9ub3RpZnlTZWxlY3Rpb25EaWRDaGFuZ2UoKTsKICAgICB9CiAKKyAg
ICBpc1Jvd1NlbGVjdGVkKHJvd0luZGV4KQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX3Nl
bGVjdGVkUm93cy5oYXMocm93SW5kZXgpOworICAgIH0KKwogICAgIHJlc2l6ZSgpCiAgICAgewog
ICAgICAgICB0aGlzLl9jYWNoZWRXaWR0aCA9IE5hTjsKQEAgLTMyMCw3ICszMjUsNyBAQCBXSS5U
YWJsZSA9IGNsYXNzIFRhYmxlIGV4dGVuZHMgV0kuVmlldwogICAgIHsKICAgICAgICAgY29uc29s
ZS5hc3NlcnQoIWV4dGVuZFNlbGVjdGlvbiB8fCB0aGlzLl9hbGxvd3NNdWx0aXBsZVNlbGVjdGlv
biwgIkNhbm5vdCBleHRlbmQgc2VsZWN0aW9uIHdpdGggbXVsdGlwbGUgc2VsZWN0aW9uIGRpc2Fi
bGVkLiIpOwogCi0gICAgICAgIGlmICh0aGlzLl9pc1Jvd1NlbGVjdGVkKHJvd0luZGV4KSkgewor
ICAgICAgICBpZiAodGhpcy5pc1Jvd1NlbGVjdGVkKHJvd0luZGV4KSkgewogICAgICAgICAgICAg
aWYgKCFleHRlbmRTZWxlY3Rpb24pCiAgICAgICAgICAgICAgICAgdGhpcy5fZGVzZWxlY3RBbGxB
bmRTZWxlY3Qocm93SW5kZXgpOwogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMzQzLDcgKzM0OCw3
IEBAIFdJLlRhYmxlID0gY2xhc3MgVGFibGUgZXh0ZW5kcyBXSS5WaWV3CiAKICAgICBkZXNlbGVj
dFJvdyhyb3dJbmRleCkKICAgICB7Ci0gICAgICAgIGlmICghdGhpcy5faXNSb3dTZWxlY3RlZChy
b3dJbmRleCkpCisgICAgICAgIGlmICghdGhpcy5pc1Jvd1NlbGVjdGVkKHJvd0luZGV4KSkKICAg
ICAgICAgICAgIHJldHVybjsKIAogICAgICAgICBsZXQgb2xkU2VsZWN0ZWRSb3cgPSB0aGlzLl9j
YWNoZWRSb3dzLmdldChyb3dJbmRleCk7CkBAIC0zODgsNyArMzkzLDcgQEAgV0kuVGFibGUgPSBj
bGFzcyBUYWJsZSBleHRlbmRzIFdJLlZpZXcKICAgICAgICAgaWYgKHJvd0luZGV4ID49IHRoaXMu
bnVtYmVyT2ZSb3dzKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIGlmICh0aGlzLl9p
c1Jvd1NlbGVjdGVkKHJvd0luZGV4KSkKKyAgICAgICAgaWYgKHRoaXMuaXNSb3dTZWxlY3RlZChy
b3dJbmRleCkpCiAgICAgICAgICAgICB0aGlzLmRlc2VsZWN0Um93KHJvd0luZGV4KTsKIAogICAg
ICAgICB0aGlzLl9yZW1vdmVSb3dzKG5ldyBXSS5JbmRleFNldChbcm93SW5kZXhdKSk7CkBAIC03
OTYsNyArODAxLDcgQEAgV0kuVGFibGUgPSBjbGFzcyBUYWJsZSBleHRlbmRzIFdJLlZpZXcKICAg
ICAgICAgbGV0IHJvdyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImxpIik7CiAgICAgICAgIHJv
dy5fX2luZGV4ID0gcm93SW5kZXg7CiAgICAgICAgIHJvdy5fX3dpZHRoR2VuZXJhdGlvbiA9IDA7
Ci0gICAgICAgIGlmICh0aGlzLl9pc1Jvd1NlbGVjdGVkKHJvd0luZGV4KSkKKyAgICAgICAgaWYg
KHRoaXMuaXNSb3dTZWxlY3RlZChyb3dJbmRleCkpCiAgICAgICAgICAgICByb3cuY2xhc3NMaXN0
LmFkZCgic2VsZWN0ZWQiKTsKIAogICAgICAgICB0aGlzLl9jYWNoZWRSb3dzLnNldChyb3dJbmRl
eCwgcm93KTsKQEAgLTEzMjAsNyArMTMyNSw3IEBAIFdJLlRhYmxlID0gY2xhc3MgVGFibGUgZXh0
ZW5kcyBXSS5WaWV3CiAgICAgICAgIGxldCBjb2x1bW4gPSB0aGlzLl92aXNpYmxlQ29sdW1uc1tj
b2x1bW5JbmRleF07CiAgICAgICAgIGxldCByb3dJbmRleCA9IHJvdy5fX2luZGV4OwogCi0gICAg
ICAgIGlmICh0aGlzLl9pc1Jvd1NlbGVjdGVkKHJvd0luZGV4KSkgeworICAgICAgICBpZiAodGhp
cy5pc1Jvd1NlbGVjdGVkKHJvd0luZGV4KSkgewogICAgICAgICAgICAgaWYgKGV2ZW50Lm1ldGFL
ZXkpCiAgICAgICAgICAgICAgICAgdGhpcy5kZXNlbGVjdFJvdyhyb3dJbmRleCkKICAgICAgICAg
ICAgIGVsc2UKQEAgLTEzMzcsNiArMTM0Miw5IEBAIFdJLlRhYmxlID0gY2xhc3MgVGFibGUgZXh0
ZW5kcyBXSS5WaWV3CiAKICAgICBfaGFuZGxlQ29udGV4dE1lbnUoZXZlbnQpCiAgICAgeworICAg
ICAgICBpZiAoIXRoaXMuX2RlbGVnYXRlLnRhYmxlQ2VsbENvbnRleHRNZW51Q2xpY2tlZCkKKyAg
ICAgICAgICAgIHJldHVybjsKKwogICAgICAgICBsZXQgY2VsbCA9IGV2ZW50LnRhcmdldC5lbmNs
b3NpbmdOb2RlT3JTZWxmV2l0aENsYXNzKCJjZWxsIik7CiAgICAgICAgIGlmICghY2VsbCkKICAg
ICAgICAgICAgIHJldHVybjsKQEAgLTE0NTIsNyArMTQ2MCw3IEBAIFdJLlRhYmxlID0gY2xhc3Mg
VGFibGUgZXh0ZW5kcyBXSS5WaWV3CiAgICAgICAgICAgICAgICAgdGhpcy5fY2FjaGVkUm93cy5z
ZXQobmV3SW5kZXgsIHJvdyk7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGlmICh0aGlz
Ll9pc1Jvd1NlbGVjdGVkKHJvd0luZGV4KSkgeworICAgICAgICAgICAgaWYgKHRoaXMuaXNSb3dT
ZWxlY3RlZChyb3dJbmRleCkpIHsKICAgICAgICAgICAgICAgICB0aGlzLl9zZWxlY3RlZFJvd3Mu
ZGVsZXRlKHJvd0luZGV4KTsKICAgICAgICAgICAgICAgICB0aGlzLl9zZWxlY3RlZFJvd3MuYWRk
KG5ld0luZGV4KTsKICAgICAgICAgICAgICAgICBpZiAodGhpcy5fc2VsZWN0ZWRSb3dJbmRleCA9
PT0gcm93SW5kZXgpCkBAIC0xNDkzLDExICsxNTAxLDYgQEAgV0kuVGFibGUgPSBjbGFzcyBUYWJs
ZSBleHRlbmRzIFdJLlZpZXcKICAgICAgICAgfQogICAgIH0KIAotICAgIF9pc1Jvd1NlbGVjdGVk
KHJvd0luZGV4KQotICAgIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuX3NlbGVjdGVkUm93cy5oYXMo
cm93SW5kZXgpOwotICAgIH0KLQogICAgIF9ub3RpZnlTZWxlY3Rpb25EaWRDaGFuZ2UoKQogICAg
IHsKICAgICAgICAgaWYgKHRoaXMuX3N1cHByZXNzTmV4dFNlbGVjdGlvbkRpZENoYW5nZSkgewo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>353155</attachid>
            <date>2018-10-25 21:26:41 -0700</date>
            <delta_ts>2018-11-01 12:26:25 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-66381-20181025212637.patch</filename>
            <type>text/plain</type>
            <size>23236</size>
            <attacher name="Matt Baker">mattbaker</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM3NDA1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwppbmRleCAw
MjE2YmY5ZDUzNGFlODk2OGI5YjlhOWU0YjBlZDg4ZDIyMTIzZmI4Li5jODc1ZDQ3ZGFhMDNiMmRk
MTA3NzAzNTBhZDk0Yjk5OWM2YWJmMzMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1NCBAQAorMjAxOC0xMC0yNSAgTWF0dCBCYWtlciAgPG1hdHRiYWtlckBhcHBsZS5jb20+
CisKKyAgICAgICAgV2ViIEluc3BlY3Rvcjogc3VwcG9ydCBtdWx0aXBsZSBzZWxlY3Rpb24vZGVs
ZXRpb24gb2YgY29va2llIHJlY29yZHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTY2MzgxCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8xOTI4MTUyNT4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIExvY2Fs
aXphdGlvbnMvZW4ubHByb2ovbG9jYWxpemVkU3RyaW5ncy5qczoKKworICAgICAgICAqIFVzZXJJ
bnRlcmZhY2UvVmlld3MvQ29va2llU3RvcmFnZUNvbnRlbnRWaWV3LmpzOgorICAgICAgICAoV0ku
Q29va2llU3RvcmFnZUNvbnRlbnRWaWV3KToKKyAgICAgICAgKFdJLkNvb2tpZVN0b3JhZ2VDb250
ZW50Vmlldy5wcm90b3R5cGUuZ2V0IG5hdmlnYXRpb25JdGVtcyk6CisgICAgICAgIChXSS5Db29r
aWVTdG9yYWdlQ29udGVudFZpZXcucHJvdG90eXBlLmdldCBzY3JvbGxhYmxlRWxlbWVudHMpOgor
ICAgICAgICAoV0kuQ29va2llU3RvcmFnZUNvbnRlbnRWaWV3LnByb3RvdHlwZS50YWJsZU51bWJl
ck9mUm93cyk6CisgICAgICAgIChXSS5Db29raWVTdG9yYWdlQ29udGVudFZpZXcucHJvdG90eXBl
LnRhYmxlU29ydENoYW5nZWQpOgorICAgICAgICAoV0kuQ29va2llU3RvcmFnZUNvbnRlbnRWaWV3
LnByb3RvdHlwZS50YWJsZUNlbGxDb250ZXh0TWVudUNsaWNrZWQpOgorICAgICAgICAoV0kuQ29v
a2llU3RvcmFnZUNvbnRlbnRWaWV3LnByb3RvdHlwZS50YWJsZURpZFJlbW92ZVJvd3MpOgorICAg
ICAgICAoV0kuQ29va2llU3RvcmFnZUNvbnRlbnRWaWV3LnByb3RvdHlwZS50YWJsZVBvcHVsYXRl
Q2VsbCk6CisgICAgICAgIChXSS5Db29raWVTdG9yYWdlQ29udGVudFZpZXcucHJvdG90eXBlLnRh
YmxlU2VsZWN0aW9uRGlkQ2hhbmdlKToKKyAgICAgICAgKFdJLkNvb2tpZVN0b3JhZ2VDb250ZW50
Vmlldy5wcm90b3R5cGUuaW5pdGlhbExheW91dCk6CisgICAgICAgIChXSS5Db29raWVTdG9yYWdl
Q29udGVudFZpZXcucHJvdG90eXBlLl9nZW5lcmF0ZVNvcnRDb21wYXJhdG9yKToKKyAgICAgICAg
KFdJLkNvb2tpZVN0b3JhZ2VDb250ZW50Vmlldy5wcm90b3R5cGUuX3JlZnJlc2hCdXR0b25DbGlj
a2VkKToKKyAgICAgICAgKFdJLkNvb2tpZVN0b3JhZ2VDb250ZW50Vmlldy5wcm90b3R5cGUuX3Jl
bG9hZENvb2tpZXMpOgorICAgICAgICAoV0kuQ29va2llU3RvcmFnZUNvbnRlbnRWaWV3LnByb3Rv
dHlwZS5fdXBkYXRlU29ydCk6CisgICAgICAgIChXSS5Db29raWVTdG9yYWdlQ29udGVudFZpZXcu
cHJvdG90eXBlLl9oYW5kbGVUYWJsZUtleURvd24pOgorICAgICAgICAoV0kuQ29va2llU3RvcmFn
ZUNvbnRlbnRWaWV3LnByb3RvdHlwZS51cGRhdGUpOiBEZWxldGVkLgorICAgICAgICAoV0kuQ29v
a2llU3RvcmFnZUNvbnRlbnRWaWV3LnByb3RvdHlwZS5fcmVidWlsZFRhYmxlKTogRGVsZXRlZC4K
KyAgICAgICAgKFdJLkNvb2tpZVN0b3JhZ2VDb250ZW50Vmlldy5wcm90b3R5cGUuX3NvcnREYXRh
R3JpZC5sb2NhbGVDb21wYXJlKTogRGVsZXRlZC4KKyAgICAgICAgKFdJLkNvb2tpZVN0b3JhZ2VD
b250ZW50Vmlldy5wcm90b3R5cGUuX3NvcnREYXRhR3JpZC5udW1iZXJDb21wYXJlKTogRGVsZXRl
ZC4KKyAgICAgICAgKFdJLkNvb2tpZVN0b3JhZ2VDb250ZW50Vmlldy5wcm90b3R5cGUuX3NvcnRE
YXRhR3JpZC5leHBpcmVzQ29tcGFyZSk6IERlbGV0ZWQuCisgICAgICAgIChXSS5Db29raWVTdG9y
YWdlQ29udGVudFZpZXcucHJvdG90eXBlLl9zb3J0RGF0YUdyaWQpOiBEZWxldGVkLgorICAgICAg
ICAoV0kuQ29va2llU3RvcmFnZUNvbnRlbnRWaWV3LnByb3RvdHlwZS5fZGVsZXRlQ2FsbGJhY2sp
OiBEZWxldGVkLgorICAgICAgICBSZXBsYWNlIERhdGFHcmlkIHdpdGggVGFibGUuIFRoZSBjb250
ZW50IHZpZXcgc2VydmVzIGFzIHRoZSB0YWJsZQorICAgICAgICBkZWxlZ2F0ZSBhbmQgZGF0YSBz
b3VyY2UsIGFuZCBoYW5kbGVzIGRlbGV0ZSBhbmQgYmFja3NwYWNlIGtleSBldmVudHMKKyAgICAg
ICAgdG8gYWxsb3cgZGVsZXRpbmcgdGhlIHNlbGVjdGVkIGNvb2tpZXMuIENvb2tpZXMgbWF5IGFs
c28gYmUgZGVsZXRlZCBmcm9tCisgICAgICAgIHRoZSB0YWJsZSBjb250ZXh0IG1lbnUgYW5kIGEg
bmV3IGJ1dHRvbiBpbiB0aGUgbmF2aWdhdGlvbiBiYXIuCisKKyAgICAgICAgKiBVc2VySW50ZXJm
YWNlL1ZpZXdzL1RhYmxlLmpzOgorICAgICAgICAoV0kuVGFibGUucHJvdG90eXBlLmlzUm93U2Vs
ZWN0ZWQpOgorICAgICAgICAoV0kuVGFibGUucHJvdG90eXBlLnNlbGVjdFJvdyk6CisgICAgICAg
IChXSS5UYWJsZS5wcm90b3R5cGUuZGVzZWxlY3RSb3cpOgorICAgICAgICAoV0kuVGFibGUucHJv
dG90eXBlLnJlbW92ZVJvdyk6CisgICAgICAgIChXSS5UYWJsZS5wcm90b3R5cGUuX2dldE9yQ3Jl
YXRlUm93KToKKyAgICAgICAgKFdJLlRhYmxlLnByb3RvdHlwZS5faGFuZGxlTW91c2VEb3duKToK
KyAgICAgICAgKFdJLlRhYmxlLnByb3RvdHlwZS5faGFuZGxlQ29udGV4dE1lbnUpOgorICAgICAg
ICAoV0kuVGFibGUucHJvdG90eXBlLl9yZW1vdmVSb3dzKToKKyAgICAgICAgKFdJLlRhYmxlLnBy
b3RvdHlwZS5faXNSb3dTZWxlY3RlZCk6IERlbGV0ZWQuCisgICAgICAgIE1ha2UgYGlzU2VsZWN0
ZWRSb3dgIHB1YmxpYy4gSXQgaXMgbW9yZSBjb252ZW5pZW50IGFuZCBlZmZpY2llbnQgdGhhbgor
ICAgICAgICBjYWxsaW5nIGBUYWJsZS5wcm90b3R5cGUuc2VsZWN0ZWRSb3dzLmluY2x1ZGVzKHJv
d0luZGV4KWAuCisKIDIwMTgtMTAtMjQgIE1hdHQgQmFrZXIgIDxtYXR0YmFrZXJAYXBwbGUuY29t
PgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IFRhYmxlIHNob3VsZCBzdXBwb3J0IGRlbGV0aW5n
IHJvd3MKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Mb2NhbGl6YXRpb25zL2Vu
Lmxwcm9qL2xvY2FsaXplZFN0cmluZ3MuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvTG9jYWxp
emF0aW9ucy9lbi5scHJvai9sb2NhbGl6ZWRTdHJpbmdzLmpzCmluZGV4IDFlODQ5ZDg3OWQxM2Fm
NTU2NGIxYzQ3YWUzOWY5ZTM0Zjk4NjU2ZjIuLjM5MzE4ZWY4OWExZTA1NDQxMTFkMjM3ZjFjYTM1
ZTA0YTc3MzIxYjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Mb2NhbGl6YXRp
b25zL2VuLmxwcm9qL2xvY2FsaXplZFN0cmluZ3MuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL0xvY2FsaXphdGlvbnMvZW4ubHByb2ovbG9jYWxpemVkU3RyaW5ncy5qcwpAQCAtMzU5LDcg
KzM1OSw2IEBAIGxvY2FsaXplZFN0cmluZ3NbIkV4cGFuZCBBbGwiXSA9ICJFeHBhbmQgQWxsIjsK
IGxvY2FsaXplZFN0cmluZ3NbIkV4cGFuZCBjb2x1bW5zIl0gPSAiRXhwYW5kIGNvbHVtbnMiOwog
bG9jYWxpemVkU3RyaW5nc1siRXhwYW5kZWQiXSA9ICJFeHBhbmRlZCI7CiBsb2NhbGl6ZWRTdHJp
bmdzWyJFeHBlcmltZW50YWwiXSA9ICJFeHBlcmltZW50YWwiOwotbG9jYWxpemVkU3RyaW5nc1si
RXhwaXJlcyJdID0gIkV4cGlyZXMiOwogbG9jYWxpemVkU3RyaW5nc1siRXhwb3J0Il0gPSAiRXhw
b3J0IjsKIGxvY2FsaXplZFN0cmluZ3NbIkV4cG9ydCBIQVIiXSA9ICJFeHBvcnQgSEFSIjsKIGxv
Y2FsaXplZFN0cmluZ3NbIkV4cG9ydCByZWNvcmRpbmcgKCVzKSJdID0gIkV4cG9ydCByZWNvcmRp
bmcgKCVzKSI7CkBAIC00MjAsNyArNDE5LDYgQEAgbG9jYWxpemVkU3RyaW5nc1siR3JvdXBpbmcg
TWV0aG9kIl0gPSAiR3JvdXBpbmcgTWV0aG9kIjsKIGxvY2FsaXplZFN0cmluZ3NbIkhBUiBFeHBv
cnQgKCVzKSJdID0gIkhBUiBFeHBvcnQgKCVzKSI7CiBsb2NhbGl6ZWRTdHJpbmdzWyJIVE1MIl0g
PSAiSFRNTCI7CiBsb2NhbGl6ZWRTdHJpbmdzWyJIVE1MIEF0dHJpYnV0ZXMiXSA9ICJIVE1MIEF0
dHJpYnV0ZXMiOwotbG9jYWxpemVkU3RyaW5nc1siSFRUUCJdID0gIkhUVFAiOwogbG9jYWxpemVk
U3RyaW5nc1siSGVhZGVycyJdID0gIkhlYWRlcnMiOwogbG9jYWxpemVkU3RyaW5nc1siSGVhZGVy
czoiXSA9ICJIZWFkZXJzOiI7CiBsb2NhbGl6ZWRTdHJpbmdzWyJIZWFkaW5nIExldmVsIl0gPSAi
SGVhZGluZyBMZXZlbCI7CkBAIC02NjcsNiArNjY1LDcgQEAgbG9jYWxpemVkU3RyaW5nc1siUmVn
dWxhciBFeHByZXNzaW9uIl0gPSAiUmVndWxhciBFeHByZXNzaW9uIjsKIGxvY2FsaXplZFN0cmlu
Z3NbIlJlbG9hZCBXZWIgSW5zcGVjdG9yIl0gPSAiUmVsb2FkIFdlYiBJbnNwZWN0b3IiOwogbG9j
YWxpemVkU3RyaW5nc1siUmVsb2FkIHBhZ2UgKCVzKVxuUmVsb2FkIHBhZ2UgaWdub3JpbmcgY2Fj
aGUgKCVzKSJdID0gIlJlbG9hZCBwYWdlICglcylcblJlbG9hZCBwYWdlIGlnbm9yaW5nIGNhY2hl
ICglcykiOwogbG9jYWxpemVkU3RyaW5nc1siUmVtb3ZhbHMiXSA9ICJSZW1vdmFscyI7Citsb2Nh
bGl6ZWRTdHJpbmdzWyJSZW1vdmUgQ29va2llcyJdID0gIlJlbW92ZSBDb29raWVzIjsKIGxvY2Fs
aXplZFN0cmluZ3NbIlJlbW92ZSBXYXRjaCBFeHByZXNzaW9uIl0gPSAiUmVtb3ZlIFdhdGNoIEV4
cHJlc3Npb24iOwogbG9jYWxpemVkU3RyaW5nc1siUmVtb3ZlIHByb2JlIl0gPSAiUmVtb3ZlIHBy
b2JlIjsKIGxvY2FsaXplZFN0cmluZ3NbIlJlbW92ZSB0aGlzIGJyZWFrcG9pbnQgYWN0aW9uIl0g
PSAiUmVtb3ZlIHRoaXMgYnJlYWtwb2ludCBhY3Rpb24iOwpAQCAtNzExLDcgKzcxMCw2IEBAIGxv
Y2FsaXplZFN0cmluZ3NbIlJldmVhbCBpbiBOZXR3b3JrIFRhYiJdID0gIlJldmVhbCBpbiBOZXR3
b3JrIFRhYiI7CiBsb2NhbGl6ZWRTdHJpbmdzWyJSZXZlYWwgaW4gT3JpZ2luYWwgUmVzb3VyY2Ui
XSA9ICJSZXZlYWwgaW4gT3JpZ2luYWwgUmVzb3VyY2UiOwogbG9jYWxpemVkU3RyaW5nc1siUmV2
ZWFsIGluIFJlc291cmNlcyBUYWIiXSA9ICJSZXZlYWwgaW4gUmVzb3VyY2VzIFRhYiI7CiBsb2Nh
bGl6ZWRTdHJpbmdzWyJSb2xlIl0gPSAiUm9sZSI7Ci1sb2NhbGl6ZWRTdHJpbmdzWyJTYW1lLVNp
dGUiXSA9ICJTYW1lLVNpdGUiOwogbG9jYWxpemVkU3RyaW5nc1siU2FtcGxlcyJdID0gIlNhbXBs
ZXMiOwogbG9jYWxpemVkU3RyaW5nc1siU2F2ZSBGaWxlIl0gPSAiU2F2ZSBGaWxlIjsKIGxvY2Fs
aXplZFN0cmluZ3NbIlNhdmUgU2VsZWN0ZWQiXSA9ICJTYXZlIFNlbGVjdGVkIjsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0Nvb2tpZVN0b3Jh
Z2VDb250ZW50Vmlldy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Zp
ZXdzL0Nvb2tpZVN0b3JhZ2VDb250ZW50Vmlldy5qcwppbmRleCAxN2FlODY5MGMzMTg1OTg3M2Zk
YzE5M2VhYmRhOGUzOGE3MTNkNDEzLi4wNGU5MTRlMzk5OWZiMGMxOTU4MWRlMGQyYmYyNmE5YjMy
YTk2OTMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9W
aWV3cy9Db29raWVTdG9yYWdlQ29udGVudFZpZXcuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ29va2llU3RvcmFnZUNvbnRlbnRWaWV3LmpzCkBAIC0z
MSwyNyArMzEsMjMgQEAgV0kuQ29va2llU3RvcmFnZUNvbnRlbnRWaWV3ID0gY2xhc3MgQ29va2ll
U3RvcmFnZUNvbnRlbnRWaWV3IGV4dGVuZHMgV0kuQ29udGVudFYKIAogICAgICAgICB0aGlzLmVs
ZW1lbnQuY2xhc3NMaXN0LmFkZCgiY29va2llLXN0b3JhZ2UiKTsKIAorICAgICAgICB0aGlzLl9j
b29raWVzID0gW107CisgICAgICAgIHRoaXMuX3NvcnRDb21wYXJhdG9yID0gbnVsbDsKKyAgICAg
ICAgdGhpcy5fdGFibGUgPSBudWxsOworCiAgICAgICAgIHRoaXMuX3JlZnJlc2hCdXR0b25OYXZp
Z2F0aW9uSXRlbSA9IG5ldyBXSS5CdXR0b25OYXZpZ2F0aW9uSXRlbSgiY29va2llLXN0b3JhZ2Ut
cmVmcmVzaCIsIFdJLlVJU3RyaW5nKCJSZWZyZXNoIiksICJJbWFnZXMvUmVsb2FkRnVsbC5zdmci
LCAxMywgMTMpOwogICAgICAgICB0aGlzLl9yZWZyZXNoQnV0dG9uTmF2aWdhdGlvbkl0ZW0uYWRk
RXZlbnRMaXN0ZW5lcihXSS5CdXR0b25OYXZpZ2F0aW9uSXRlbS5FdmVudC5DbGlja2VkLCB0aGlz
Ll9yZWZyZXNoQnV0dG9uQ2xpY2tlZCwgdGhpcyk7CiAKLSAgICAgICAgdGhpcy51cGRhdGUoKTsK
KyAgICAgICAgdGhpcy5fcmVtb3ZlU2VsZWN0ZWRDb29raWVzTmF2aWdhdGlvbkl0ZW0gPSBuZXcg
V0kuQnV0dG9uTmF2aWdhdGlvbkl0ZW0oInJlbW92ZS1zZWxlY3RlZC1jb29raWVzIiwgV0kuVUlT
dHJpbmcoIlJlbW92ZSBDb29raWVzIiksICJJbWFnZXMvTmF2aWdhdGlvbkl0ZW1UcmFzaC5zdmci
LCAxNSwgMTUpOworICAgICAgICB0aGlzLl9yZW1vdmVTZWxlY3RlZENvb2tpZXNOYXZpZ2F0aW9u
SXRlbS5hZGRFdmVudExpc3RlbmVyKFdJLkJ1dHRvbk5hdmlnYXRpb25JdGVtLkV2ZW50LkNsaWNr
ZWQsICgpID0+IHsgdGhpcy5fdGFibGUucmVtb3ZlU2VsZWN0ZWRSb3dzKCk7IH0pOworICAgICAg
ICB0aGlzLl9yZW1vdmVTZWxlY3RlZENvb2tpZXNOYXZpZ2F0aW9uSXRlbS5lbmFibGVkID0gZmFs
c2U7CiAgICAgfQogCiAgICAgLy8gUHVibGljCiAKICAgICBnZXQgbmF2aWdhdGlvbkl0ZW1zKCkK
ICAgICB7Ci0gICAgICAgIHJldHVybiBbdGhpcy5fcmVmcmVzaEJ1dHRvbk5hdmlnYXRpb25JdGVt
XTsKLSAgICB9Ci0KLSAgICB1cGRhdGUoKQotICAgIHsKLSAgICAgICAgUGFnZUFnZW50LmdldENv
b2tpZXMoKS50aGVuKChwYXlsb2FkKSA9PiB7Ci0gICAgICAgICAgICB0aGlzLl9jb29raWVzID0g
dGhpcy5fZmlsdGVyQ29va2llcyhwYXlsb2FkLmNvb2tpZXMpOwotICAgICAgICAgICAgdGhpcy5f
cmVidWlsZFRhYmxlKCk7Ci0gICAgICAgIH0pLmNhdGNoKChlcnJvcikgPT4gewotICAgICAgICAg
ICAgY29uc29sZS5lcnJvcigiQ291bGQgbm90IGZldGNoIGNvb2tpZXM6ICIsIGVycm9yKTsKLSAg
ICAgICAgfSk7CisgICAgICAgIHJldHVybiBbdGhpcy5fcmVmcmVzaEJ1dHRvbk5hdmlnYXRpb25J
dGVtLCB0aGlzLl9yZW1vdmVTZWxlY3RlZENvb2tpZXNOYXZpZ2F0aW9uSXRlbV07CiAgICAgfQog
CiAgICAgc2F2ZVRvQ29va2llKGNvb2tpZSkKQEAgLTYyLDk3ICs1OCwxMzkgQEAgV0kuQ29va2ll
U3RvcmFnZUNvbnRlbnRWaWV3ID0gY2xhc3MgQ29va2llU3RvcmFnZUNvbnRlbnRWaWV3IGV4dGVu
ZHMgV0kuQ29udGVudFYKIAogICAgIGdldCBzY3JvbGxhYmxlRWxlbWVudHMoKQogICAgIHsKLSAg
ICAgICAgaWYgKCF0aGlzLl9kYXRhR3JpZCkKKyAgICAgICAgaWYgKCF0aGlzLl90YWJsZSkKICAg
ICAgICAgICAgIHJldHVybiBbXTsKLSAgICAgICAgcmV0dXJuIFt0aGlzLl9kYXRhR3JpZC5zY3Jv
bGxDb250YWluZXJdOworICAgICAgICByZXR1cm4gW3RoaXMuX3RhYmxlLnNjcm9sbENvbnRhaW5l
cl07CiAgICAgfQogCi0gICAgLy8gUHJpdmF0ZQorICAgIC8vIFRhYmxlIGRhdGFTb3VyY2UKIAot
ICAgIF9yZWJ1aWxkVGFibGUoKQotICAgIHsKLSAgICAgICAgLy8gRklYTUUgPGh0dHBzOi8vd2Vi
a2l0Lm9yZy9iLzE1MTQwMD46IElmIHRoZXJlIGFyZSBubyBjb29raWVzLCBhZGQgcGxhY2Vob2xk
ZXIgZXhwbGFuYXRvcnkgdGV4dC4KLSAgICAgICAgaWYgKCF0aGlzLl9kYXRhR3JpZCkgewotICAg
ICAgICAgICAgdmFyIGNvbHVtbnMgPSB7bmFtZToge30sIHZhbHVlOiB7fSwgZG9tYWluOiB7fSwg
cGF0aDoge30sIGV4cGlyZXM6IHt9LCBzaXplOiB7fSwgaHR0cDoge30sIHNlY3VyZToge30sIHNh
bWVTaXRlOiB7fX07Ci0KLSAgICAgICAgICAgIGNvbHVtbnMubmFtZS50aXRsZSA9IFdJLlVJU3Ry
aW5nKCJOYW1lIik7Ci0gICAgICAgICAgICBjb2x1bW5zLm5hbWUuc29ydGFibGUgPSB0cnVlOwot
ICAgICAgICAgICAgY29sdW1ucy5uYW1lLndpZHRoID0gIjI0JSI7Ci0gICAgICAgICAgICBjb2x1
bW5zLm5hbWUubG9ja2VkID0gdHJ1ZTsKLQotICAgICAgICAgICAgY29sdW1ucy52YWx1ZS50aXRs
ZSA9IFdJLlVJU3RyaW5nKCJWYWx1ZSIpOwotICAgICAgICAgICAgY29sdW1ucy52YWx1ZS5zb3J0
YWJsZSA9IHRydWU7Ci0gICAgICAgICAgICBjb2x1bW5zLnZhbHVlLndpZHRoID0gIjM0JSI7Ci0g
ICAgICAgICAgICBjb2x1bW5zLnZhbHVlLmxvY2tlZCA9IHRydWU7Ci0KLSAgICAgICAgICAgIGNv
bHVtbnMuZG9tYWluLnRpdGxlID0gV0kuVUlTdHJpbmcoIkRvbWFpbiIpOwotICAgICAgICAgICAg
Y29sdW1ucy5kb21haW4uc29ydGFibGUgPSB0cnVlOwotICAgICAgICAgICAgY29sdW1ucy5kb21h
aW4ud2lkdGggPSAiNiUiOwotCi0gICAgICAgICAgICBjb2x1bW5zLnBhdGgudGl0bGUgPSBXSS5V
SVN0cmluZygiUGF0aCIpOwotICAgICAgICAgICAgY29sdW1ucy5wYXRoLnNvcnRhYmxlID0gdHJ1
ZTsKLSAgICAgICAgICAgIGNvbHVtbnMucGF0aC53aWR0aCA9ICI2JSI7Ci0KLSAgICAgICAgICAg
IGNvbHVtbnMuZXhwaXJlcy50aXRsZSA9IFdJLlVJU3RyaW5nKCJFeHBpcmVzIik7Ci0gICAgICAg
ICAgICBjb2x1bW5zLmV4cGlyZXMuc29ydGFibGUgPSB0cnVlOwotICAgICAgICAgICAgY29sdW1u
cy5leHBpcmVzLndpZHRoID0gIjYlIjsKLQotICAgICAgICAgICAgY29sdW1ucy5zaXplLnRpdGxl
ID0gV0kuVUlTdHJpbmcoIlNpemUiKTsKLSAgICAgICAgICAgIGNvbHVtbnMuc2l6ZS5hbGlnbmVk
ID0gInJpZ2h0IjsKLSAgICAgICAgICAgIGNvbHVtbnMuc2l6ZS5zb3J0YWJsZSA9IHRydWU7Ci0g
ICAgICAgICAgICBjb2x1bW5zLnNpemUud2lkdGggPSAiNiUiOwotCi0gICAgICAgICAgICBjb2x1
bW5zLmh0dHAudGl0bGUgPSBXSS5VSVN0cmluZygiSFRUUCIpOwotICAgICAgICAgICAgY29sdW1u
cy5odHRwLmFsaWduZWQgPSAiY2VudGVyZWQiOwotICAgICAgICAgICAgY29sdW1ucy5odHRwLnNv
cnRhYmxlID0gdHJ1ZTsKLSAgICAgICAgICAgIGNvbHVtbnMuaHR0cC53aWR0aCA9ICI2JSI7Ci0K
LSAgICAgICAgICAgIGNvbHVtbnMuc2VjdXJlLnRpdGxlID0gV0kuVUlTdHJpbmcoIlNlY3VyZSIp
OwotICAgICAgICAgICAgY29sdW1ucy5zZWN1cmUuYWxpZ25lZCA9ICJjZW50ZXJlZCI7Ci0gICAg
ICAgICAgICBjb2x1bW5zLnNlY3VyZS5zb3J0YWJsZSA9IHRydWU7Ci0gICAgICAgICAgICBjb2x1
bW5zLnNlY3VyZS53aWR0aCA9ICI2JSI7Ci0KLSAgICAgICAgICAgIGNvbHVtbnMuc2FtZVNpdGUu
dGl0bGUgPSBXSS5VSVN0cmluZygiU2FtZS1TaXRlIik7Ci0gICAgICAgICAgICBjb2x1bW5zLnNh
bWVTaXRlLnNvcnRhYmxlID0gdHJ1ZTsKLSAgICAgICAgICAgIGNvbHVtbnMuc2FtZVNpdGUud2lk
dGggPSAiNiUiOwotCi0gICAgICAgICAgICB0aGlzLl9kYXRhR3JpZCA9IG5ldyBXSS5EYXRhR3Jp
ZChjb2x1bW5zLCBudWxsLCB0aGlzLl9kZWxldGVDYWxsYmFjay5iaW5kKHRoaXMpKTsKLSAgICAg
ICAgICAgIHRoaXMuX2RhdGFHcmlkLmNvbHVtbkNob29zZXJFbmFibGVkID0gdHJ1ZTsKLSAgICAg
ICAgICAgIHRoaXMuX2RhdGFHcmlkLmFkZEV2ZW50TGlzdGVuZXIoV0kuRGF0YUdyaWQuRXZlbnQu
U29ydENoYW5nZWQsIHRoaXMuX3NvcnREYXRhR3JpZCwgdGhpcyk7Ci0gICAgICAgICAgICB0aGlz
Ll9kYXRhR3JpZC5zb3J0Q29sdW1uSWRlbnRpZmllciA9ICJuYW1lIjsKLSAgICAgICAgICAgIHRo
aXMuX2RhdGFHcmlkLmNyZWF0ZVNldHRpbmdzKCJjb29raWUtc3RvcmFnZS1jb250ZW50LXZpZXci
KTsKLQotICAgICAgICAgICAgdGhpcy5hZGRTdWJ2aWV3KHRoaXMuX2RhdGFHcmlkKTsKLSAgICAg
ICAgICAgIHRoaXMuX2RhdGFHcmlkLnVwZGF0ZUxheW91dCgpOwotICAgICAgICB9CisgICAgdGFi
bGVOdW1iZXJPZlJvd3ModGFibGUpCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5fY29va2ll
cy5sZW5ndGg7CisgICAgfQogCi0gICAgICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMuX2RhdGFHcmlk
KTsKLSAgICAgICAgdGhpcy5fZGF0YUdyaWQucmVtb3ZlQ2hpbGRyZW4oKTsKLQotICAgICAgICBm
b3IgKGxldCBjb29raWUgb2YgdGhpcy5fY29va2llcykgewotICAgICAgICAgICAgY29uc3QgY2hl
Y2ttYXJrID0gIlx1MjcxMyI7Ci0gICAgICAgICAgICB2YXIgZGF0YSA9IHsKLSAgICAgICAgICAg
ICAgICBuYW1lOiBjb29raWUubmFtZSwKLSAgICAgICAgICAgICAgICB2YWx1ZTogY29va2llLnZh
bHVlLAotICAgICAgICAgICAgICAgIGRvbWFpbjogY29va2llLmRvbWFpbiB8fCAiIiwKLSAgICAg
ICAgICAgICAgICBwYXRoOiBjb29raWUucGF0aCB8fCAiIiwKLSAgICAgICAgICAgICAgICBleHBp
cmVzOiAiIiwKLSAgICAgICAgICAgICAgICBzaXplOiBOdW1iZXIuYnl0ZXNUb1N0cmluZyhjb29r
aWUuc2l6ZSksCi0gICAgICAgICAgICAgICAgaHR0cDogY29va2llLmh0dHBPbmx5ID8gY2hlY2tt
YXJrIDogIiIsCi0gICAgICAgICAgICAgICAgc2VjdXJlOiBjb29raWUuc2VjdXJlID8gY2hlY2tt
YXJrIDogIiIsCi0gICAgICAgICAgICAgICAgc2FtZVNpdGU6IGNvb2tpZS5zYW1lU2l0ZSAmJiBj
b29raWUuc2FtZVNpdGUgIT09IFdJLkNvb2tpZS5TYW1lU2l0ZVR5cGUuTm9uZSA/IFdJLkNvb2tp
ZS5kaXNwbGF5TmFtZUZvclNhbWVTaXRlVHlwZShjb29raWUuc2FtZVNpdGUpIDogIiIsCi0gICAg
ICAgICAgICB9OworICAgIHRhYmxlU29ydENoYW5nZWQodGFibGUpCisgICAgeworICAgICAgICB0
aGlzLl9nZW5lcmF0ZVNvcnRDb21wYXJhdG9yKCk7CiAKLSAgICAgICAgICAgIGlmIChjb29raWUu
dHlwZSAhPT0gV0kuQ29va2llVHlwZS5SZXF1ZXN0KQotICAgICAgICAgICAgICAgIGRhdGFbImV4
cGlyZXMiXSA9IGNvb2tpZS5zZXNzaW9uID8gV0kuVUlTdHJpbmcoIlNlc3Npb24iKSA6IG5ldyBE
YXRlKGNvb2tpZS5leHBpcmVzKS50b0xvY2FsZVN0cmluZygpOworICAgICAgICBpZiAoIXRoaXMu
X3NvcnRDb21wYXJhdG9yKQorICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgICAgICB2YXIg
bm9kZSA9IG5ldyBXSS5EYXRhR3JpZE5vZGUoZGF0YSk7Ci0gICAgICAgICAgICBub2RlLmNvb2tp
ZSA9IGNvb2tpZTsKKyAgICAgICAgdGhpcy5fdXBkYXRlU29ydCgpOworICAgICAgICB0aGlzLl90
YWJsZS5yZWxvYWREYXRhKCk7CisgICAgfQogCi0gICAgICAgICAgICB0aGlzLl9kYXRhR3JpZC5h
cHBlbmRDaGlsZChub2RlKTsKKyAgICAvLyBUYWJsZSBkZWxlZ2F0ZQorCisgICAgdGFibGVDZWxs
Q29udGV4dE1lbnVDbGlja2VkKHRhYmxlLCBjZWxsLCBjb2x1bW4sIHJvd0luZGV4LCBldmVudCkK
KyAgICB7CisgICAgICAgIGxldCBjb250ZXh0TWVudSA9IFdJLkNvbnRleHRNZW51LmNyZWF0ZUZy
b21FdmVudChldmVudCk7CisKKyAgICAgICAgY29udGV4dE1lbnUuYXBwZW5kU2VwYXJhdG9yKCk7
CisgICAgICAgIGNvbnRleHRNZW51LmFwcGVuZEl0ZW0oV0kuVUlTdHJpbmcoIkRlbGV0ZSIpLCAo
KSA9PiB7CisgICAgICAgICAgICBpZiAodGFibGUuaXNSb3dTZWxlY3RlZChyb3dJbmRleCkpCisg
ICAgICAgICAgICAgICAgdGFibGUucmVtb3ZlU2VsZWN0ZWRSb3dzKCk7CisgICAgICAgICAgICBl
bHNlCisgICAgICAgICAgICAgICAgdGFibGUucmVtb3ZlUm93KHJvd0luZGV4KTsKKyAgICAgICAg
fSk7CisgICAgfQorCisgICAgdGFibGVEaWRSZW1vdmVSb3dzKHRhYmxlLCByb3dJbmRleGVzKQor
ICAgIHsKKyAgICAgICAgaWYgKCFyb3dJbmRleGVzLmxlbmd0aCkKKyAgICAgICAgICAgIHJldHVy
bjsKKworICAgICAgICBmb3IgKGxldCBpbmRleCBvZiByb3dJbmRleGVzKSB7CisgICAgICAgICAg
ICBsZXQgY29va2llID0gdGhpcy5fY29va2llc1tpbmRleF07CisgICAgICAgICAgICBjb25zb2xl
LmFzc2VydChjb29raWUsICJNaXNzaW5nIGNvb2tpZSBmb3Igcm93ICIgKyBpbmRleCk7CisgICAg
ICAgICAgICBpZiAoIWNvb2tpZSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAg
ICAgICAgdGhpcy5fY29va2llcy5zcGxpY2UoaW5kZXgsIDEpOworCisgICAgICAgICAgICBsZXQg
Y29va2llVVJMID0gKGNvb2tpZS5zZWN1cmUgPyAiaHR0cHM6Ly8iIDogImh0dHA6Ly8iKSArIGNv
b2tpZS5kb21haW4gKyBjb29raWUucGF0aDsKKyAgICAgICAgICAgIFBhZ2VBZ2VudC5kZWxldGVD
b29raWUoY29va2llLm5hbWUsIGNvb2tpZVVSTCk7CisgICAgICAgICB9CisgICAgfQorCisgICAg
dGFibGVQb3B1bGF0ZUNlbGwodGFibGUsIGNlbGwsIGNvbHVtbiwgcm93SW5kZXgpCisgICAgewor
ICAgICAgICBsZXQgY29va2llID0gdGhpcy5fY29va2llc1tyb3dJbmRleF07CisKKyAgICAgICAg
Y29uc3QgY2hlY2ttYXJrID0gIlx1MjcxMyI7CisKKyAgICAgICAgc3dpdGNoIChjb2x1bW4uaWRl
bnRpZmllcikgeworICAgICAgICBjYXNlICJuYW1lIjoKKyAgICAgICAgICAgIGNlbGwudGV4dENv
bnRlbnQgPSBjb29raWUubmFtZTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlICJ2
YWx1ZSI6CisgICAgICAgICAgICBjZWxsLnRleHRDb250ZW50ID0gY29va2llLnZhbHVlOworICAg
ICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgImRvbWFpbiI6CisgICAgICAgICAgICBjZWxs
LnRleHRDb250ZW50ID0gY29va2llLmRvbWFpbiB8fCBlbURhc2g7CisgICAgICAgICAgICBicmVh
azsKKyAgICAgICAgY2FzZSAicGF0aCI6CisgICAgICAgICAgICBjZWxsLnRleHRDb250ZW50ID0g
Y29va2llLnBhdGggfHwgZW1EYXNoOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2Ug
ImV4cGlyZXMiOgorICAgICAgICAgICAgY2VsbC50ZXh0Q29udGVudCA9IGNvb2tpZS5leHBpcmVz
ID8gbmV3IERhdGUoY29va2llLmV4cGlyZXMpLnRvTG9jYWxlU3RyaW5nKCkgOiBXSS5VSVN0cmlu
ZygiU2Vzc2lvbiIpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgInNpemUiOgor
ICAgICAgICAgICAgY2VsbC50ZXh0Q29udGVudCA9IE51bWJlci5ieXRlc1RvU3RyaW5nKGNvb2tp
ZS5zaXplKTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlICJzZWN1cmUiOgorICAg
ICAgICAgICAgY2VsbC50ZXh0Q29udGVudCA9IGNvb2tpZS5zZWN1cmUgPyBjaGVja21hcmsgOiB6
ZXJvV2lkdGhTcGFjZTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlICJodHRwT25s
eSI6CisgICAgICAgICAgICBjZWxsLnRleHRDb250ZW50ID0gY29va2llLmh0dHBPbmx5ID8gY2hl
Y2ttYXJrIDogemVyb1dpZHRoU3BhY2U7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2Fz
ZSAic2FtZVNpdGUiOgorICAgICAgICAgICAgY2VsbC50ZXh0Q29udGVudCA9IGNvb2tpZS5zYW1l
U2l0ZSA9PT0gV0kuQ29va2llLlNhbWVTaXRlVHlwZS5Ob25lID8gZW1EYXNoIDogV0kuQ29va2ll
LmRpc3BsYXlOYW1lRm9yU2FtZVNpdGVUeXBlKGNvb2tpZS5zYW1lU2l0ZSk7CisgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgfQorCisgICAgICAgIHJldHVybiBjZWxsOwogICAgIH0KIAorICAg
IHRhYmxlU2VsZWN0aW9uRGlkQ2hhbmdlKHRhYmxlKQorICAgIHsKKyAgICAgICAgdGhpcy5fcmVt
b3ZlU2VsZWN0ZWRDb29raWVzTmF2aWdhdGlvbkl0ZW0uZW5hYmxlZCA9ICEhdGhpcy5fdGFibGUu
c2VsZWN0ZWRSb3dzLmxlbmd0aDsKKyAgICB9CisKKyAgICAvLyBQcm90ZWN0ZWQKKworICAgIGlu
aXRpYWxMYXlvdXQoKQorICAgIHsKKyAgICAgICAgc3VwZXIuaW5pdGlhbExheW91dCgpOworCisg
ICAgICAgIHRoaXMuX3RhYmxlID0gbmV3IFdJLlRhYmxlKCJjb29raWVzLXRhYmxlIiwgdGhpcywg
dGhpcywgMjApOworICAgICAgICB0aGlzLl90YWJsZS5hbGxvd3NNdWx0aXBsZVNlbGVjdGlvbiA9
IHRydWU7CisKKyAgICAgICAgdGhpcy5fdGFibGUuYWRkQ29sdW1uKG5ldyBXSS5UYWJsZUNvbHVt
bigibmFtZSIsIFdJLlVJU3RyaW5nKCJOYW1lIiksIHttaW5XaWR0aDogMTUwLCBtYXhXaWR0aDog
MzAwLCBpbml0aWFsV2lkdGg6IDIwMCwgcmVzaXplVHlwZTogV0kuVGFibGVDb2x1bW4uUmVzaXpl
VHlwZS5Mb2NrZWR9KSk7CisgICAgICAgIHRoaXMuX3RhYmxlLmFkZENvbHVtbihuZXcgV0kuVGFi
bGVDb2x1bW4oInZhbHVlIiwgV0kuVUlTdHJpbmcoIlZhbHVlIiksIHttaW5XaWR0aDogMTUwLCBo
aWRlYWJsZTogZmFsc2V9KSk7CisgICAgICAgIHRoaXMuX3RhYmxlLmFkZENvbHVtbihuZXcgV0ku
VGFibGVDb2x1bW4oImRvbWFpbiIsIFdJLnVubG9jYWxpemVkU3RyaW5nKCJEb21haW4iKSwge30p
KTsKKyAgICAgICAgdGhpcy5fdGFibGUuYWRkQ29sdW1uKG5ldyBXSS5UYWJsZUNvbHVtbigicGF0
aCIsIFdJLnVubG9jYWxpemVkU3RyaW5nKCJQYXRoIiksIHttaW5XaWR0aDogMzAsIG1heFdpZHRo
OiAzMDAsIGluaXRpYWxXaWR0aDogNjUsfSkpOworICAgICAgICB0aGlzLl90YWJsZS5hZGRDb2x1
bW4obmV3IFdJLlRhYmxlQ29sdW1uKCJleHBpcmVzIiwgV0kudW5sb2NhbGl6ZWRTdHJpbmcoIkV4
cGlyZXMiKSwge21heFdpZHRoOiAxNTB9KSk7CisgICAgICAgIHRoaXMuX3RhYmxlLmFkZENvbHVt
bihuZXcgV0kuVGFibGVDb2x1bW4oInNpemUiLCBXSS51bmxvY2FsaXplZFN0cmluZygiU2l6ZSIp
LCB7bWluV2lkdGg6IDU1LCBtYXhXaWR0aDogNjUsIGFsaWduOiAicmlnaHQifSkpOworICAgICAg
ICB0aGlzLl90YWJsZS5hZGRDb2x1bW4obmV3IFdJLlRhYmxlQ29sdW1uKCJzZWN1cmUiLCBXSS51
bmxvY2FsaXplZFN0cmluZygiU2VjdXJlIiksIHttaW5XaWR0aDogNTUsIG1heFdpZHRoOiA2NSwg
YWxpZ246ICJjZW50ZXIifSkpOworICAgICAgICB0aGlzLl90YWJsZS5hZGRDb2x1bW4obmV3IFdJ
LlRhYmxlQ29sdW1uKCJodHRwT25seSIsIFdJLnVubG9jYWxpemVkU3RyaW5nKCJIdHRwT25seSIp
LCB7bWluV2lkdGg6IDU1LCBtYXhXaWR0aDogNjUsIGFsaWduOiAiY2VudGVyIn0pKTsKKyAgICAg
ICAgdGhpcy5fdGFibGUuYWRkQ29sdW1uKG5ldyBXSS5UYWJsZUNvbHVtbigic2FtZVNpdGUiLCBX
SS51bmxvY2FsaXplZFN0cmluZygiU2FtZVNpdGUiKSwge21pbldpZHRoOiA1NSwgbWF4V2lkdGg6
IDY1fSkpOworCisgICAgICAgIGlmICghdGhpcy5fdGFibGUuc29ydENvbHVtbklkZW50aWZpZXIp
IHsKKyAgICAgICAgICAgIHRoaXMuX3RhYmxlLnNvcnRPcmRlciA9IFdJLlRhYmxlLlNvcnRPcmRl
ci5Bc2NlbmRpbmc7CisgICAgICAgICAgICB0aGlzLl90YWJsZS5zb3J0Q29sdW1uSWRlbnRpZmll
ciA9ICJuYW1lIjsKKyAgICAgICAgIH0KKworICAgICAgICB0aGlzLmFkZFN1YnZpZXcodGhpcy5f
dGFibGUpOworCisgICAgICAgIHRoaXMuX3RhYmxlLmVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigi
a2V5ZG93biIsIHRoaXMuX2hhbmRsZVRhYmxlS2V5RG93bi5iaW5kKHRoaXMpKTsKKworICAgICAg
ICB0aGlzLl9yZWxvYWRDb29raWVzKCk7CisgICAgfQorCisgICAgLy8gUHJpdmF0ZQorCiAgICAg
X2ZpbHRlckNvb2tpZXMoY29va2llcykKICAgICB7CiAgICAgICAgIGxldCByZXNvdXJjZU1hdGNo
ZXNTdG9yYWdlRG9tYWluID0gKHJlc291cmNlKSA9PiB7CkBAIC0xNzYsNjIgKzIxNCw3OSBAQCBX
SS5Db29raWVTdG9yYWdlQ29udGVudFZpZXcgPSBjbGFzcyBDb29raWVTdG9yYWdlQ29udGVudFZp
ZXcgZXh0ZW5kcyBXSS5Db250ZW50VgogICAgICAgICByZXR1cm4gY29va2llc0ZvckRvbWFpbjsK
ICAgICB9CiAKLSAgICBfc29ydERhdGFHcmlkKCkKKyAgICBfZ2VuZXJhdGVTb3J0Q29tcGFyYXRv
cigpCiAgICAgewotICAgICAgICBmdW5jdGlvbiBsb2NhbGVDb21wYXJlKGZpZWxkLCBub2RlQSwg
bm9kZUIpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiAobm9kZUEuZGF0YVtmaWVsZF0g
KyAiIikuZXh0ZW5kZWRMb2NhbGVDb21wYXJlKG5vZGVCLmRhdGFbZmllbGRdICsgIiIpOwotICAg
ICAgICB9Ci0KLSAgICAgICAgZnVuY3Rpb24gbnVtYmVyQ29tcGFyZShmaWVsZCwgbm9kZUEsIG5v
ZGVCKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gbm9kZUEuY29va2llW2ZpZWxkXSAt
IG5vZGVCLmNvb2tpZVtmaWVsZF07CisgICAgICAgIGxldCBzb3J0Q29sdW1uSWRlbnRpZmllciA9
IHRoaXMuX3RhYmxlLnNvcnRDb2x1bW5JZGVudGlmaWVyOworICAgICAgICBpZiAoIXNvcnRDb2x1
bW5JZGVudGlmaWVyKSB7CisgICAgICAgICAgICB0aGlzLl9zb3J0Q29tcGFyYXRvciA9IG51bGw7
CisgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICBmdW5jdGlvbiBleHBp
cmVzQ29tcGFyZShub2RlQSwgbm9kZUIpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGlmIChub2Rl
QS5jb29raWUuc2Vzc2lvbiAhPT0gbm9kZUIuY29va2llLnNlc3Npb24pCi0gICAgICAgICAgICAg
ICAgcmV0dXJuIG5vZGVBLmNvb2tpZS5zZXNzaW9uID8gLTEgOiAxOwotCi0gICAgICAgICAgICBp
ZiAobm9kZUEuY29va2llLnNlc3Npb24pCi0gICAgICAgICAgICAgICAgcmV0dXJuIDA7CisgICAg
ICAgIGxldCBjb21wYXJhdG9yID0gbnVsbDsKKworICAgICAgICBzd2l0Y2ggKHNvcnRDb2x1bW5J
ZGVudGlmaWVyKSB7CisgICAgICAgIGNhc2UgIm5hbWUiOgorICAgICAgICBjYXNlICJ2YWx1ZSI6
CisgICAgICAgIGNhc2UgImRvbWFpbiI6CisgICAgICAgIGNhc2UgInBhdGgiOgorICAgICAgICBj
YXNlICJzYW1lU2l0ZSI6CisgICAgICAgICAgICBjb21wYXJhdG9yID0gKGEsIGIpID0+IChhW3Nv
cnRDb2x1bW5JZGVudGlmaWVyXSB8fCAiIikuZXh0ZW5kZWRMb2NhbGVDb21wYXJlKGJbc29ydENv
bHVtbklkZW50aWZpZXJdIHx8ICIiKTsKKyAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgIGNh
c2UgInNpemUiOgorICAgICAgICBjYXNlICJodHRwT25seSI6CisgICAgICAgIGNhc2UgInNlY3Vy
ZSI6CisgICAgICAgICAgICBjb21wYXJhdG9yID0gKGEsIGIpID0+IGFbc29ydENvbHVtbklkZW50
aWZpZXJdIC0gYltzb3J0Q29sdW1uSWRlbnRpZmllcl07CisgICAgICAgICAgICBicmVhazsKKwor
ICAgICAgICBjYXNlICJleHBpcmVzIjoKKyAgICAgICAgICAgIGNvbXBhcmF0b3IgPSAoYSwgYikg
PT4geworICAgICAgICAgICAgICAgIGxldCBhRXhwaXJlcyA9IGEuZXhwaXJlczsKKyAgICAgICAg
ICAgICAgICBpZiAoIWFFeHBpcmVzKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gMTsKKyAg
ICAgICAgICAgICAgICBsZXQgYkV4cGlyZXMgPSBiLmV4cGlyZXM7CisgICAgICAgICAgICAgICAg
aWYgKCFiRXhwaXJlcykKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICAg
ICAgICAgIHJldHVybiBhRXhwaXJlcy5nZXRUaW1lKCkgLSBiRXhwaXJlcy5nZXRUaW1lKCk7Cisg
ICAgICAgICAgICB9OworICAgICAgICAgICAgYnJlYWs7CiAKLSAgICAgICAgICAgIHJldHVybiBu
b2RlQS5jb29raWUuZXhwaXJlcyAtIG5vZGVCLmNvb2tpZS5leHBpcmVzOworICAgICAgICBkZWZh
dWx0OgorICAgICAgICAgICAgY29uc29sZS5hc3NlcnQoIlVuZXhwZWN0ZWQgc29ydCBjb2x1bW4i
LCBzb3J0Q29sdW1uSWRlbnRpZmllcik7CiAgICAgICAgIH0KIAotICAgICAgICB2YXIgY29tcGFy
YXRvcjsKLSAgICAgICAgc3dpdGNoICh0aGlzLl9kYXRhR3JpZC5zb3J0Q29sdW1uSWRlbnRpZmll
cikgewotICAgICAgICAgICAgY2FzZSAidmFsdWUiOiBjb21wYXJhdG9yID0gbG9jYWxlQ29tcGFy
ZS5iaW5kKHRoaXMsICJ2YWx1ZSIpOyBicmVhazsKLSAgICAgICAgICAgIGNhc2UgImRvbWFpbiI6
IGNvbXBhcmF0b3IgPSBsb2NhbGVDb21wYXJlLmJpbmQodGhpcywgImRvbWFpbiIpOyBicmVhazsK
LSAgICAgICAgICAgIGNhc2UgInBhdGgiOiBjb21wYXJhdG9yID0gbG9jYWxlQ29tcGFyZS5iaW5k
KHRoaXMsICJwYXRoIik7IGJyZWFrOwotICAgICAgICAgICAgY2FzZSAiZXhwaXJlcyI6IGNvbXBh
cmF0b3IgPSBleHBpcmVzQ29tcGFyZTsgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlICJzaXplIjog
Y29tcGFyYXRvciA9IG51bWJlckNvbXBhcmUuYmluZCh0aGlzLCAic2l6ZSIpOyBicmVhazsKLSAg
ICAgICAgICAgIGNhc2UgImh0dHAiOiBjb21wYXJhdG9yID0gbG9jYWxlQ29tcGFyZS5iaW5kKHRo
aXMsICJodHRwIik7IGJyZWFrOwotICAgICAgICAgICAgY2FzZSAic2VjdXJlIjogY29tcGFyYXRv
ciA9IGxvY2FsZUNvbXBhcmUuYmluZCh0aGlzLCAic2VjdXJlIik7IGJyZWFrOwotICAgICAgICAg
ICAgY2FzZSAic2FtZVNpdGUiOiBjb21wYXJhdG9yID0gbG9jYWxlQ29tcGFyZS5iaW5kKHRoaXMs
ICJzYW1lU2l0ZSIpOyBicmVhazsKLSAgICAgICAgICAgIGNhc2UgIm5hbWUiOgotICAgICAgICAg
ICAgZGVmYXVsdDogY29tcGFyYXRvciA9IGxvY2FsZUNvbXBhcmUuYmluZCh0aGlzLCAibmFtZSIp
OyBicmVhazsKLSAgICAgICAgfQorICAgICAgICBsZXQgcmV2ZXJzZUZhY3RvciA9IHRoaXMuX3Rh
YmxlLnNvcnRPcmRlciA9PT0gV0kuVGFibGUuU29ydE9yZGVyLkFzY2VuZGluZyA/IDEgOiAtMTsK
KyAgICAgICAgdGhpcy5fc29ydENvbXBhcmF0b3IgPSAoYSwgYikgPT4gcmV2ZXJzZUZhY3RvciAq
IGNvbXBhcmF0b3IoYSwgYik7CisgICAgfQogCi0gICAgICAgIGNvbnNvbGUuYXNzZXJ0KGNvbXBh
cmF0b3IpOwotICAgICAgICB0aGlzLl9kYXRhR3JpZC5zb3J0Tm9kZXMoY29tcGFyYXRvcik7Cisg
ICAgX3JlZnJlc2hCdXR0b25DbGlja2VkKGV2ZW50KQorICAgIHsKKyAgICAgICAgdGhpcy5fcmVs
b2FkQ29va2llcygpOwogICAgIH0KIAotICAgIF9kZWxldGVDYWxsYmFjayhub2RlKQorICAgIF9y
ZWxvYWRDb29raWVzKCkKICAgICB7Ci0gICAgICAgIGlmICghbm9kZSB8fCAhbm9kZS5jb29raWUp
Ci0gICAgICAgICAgICByZXR1cm47CisgICAgICAgIFBhZ2VBZ2VudC5nZXRDb29raWVzKCkudGhl
bigocGF5bG9hZCkgPT4geworICAgICAgICAgICAgdGhpcy5fY29va2llcyA9IHRoaXMuX2ZpbHRl
ckNvb2tpZXMocGF5bG9hZC5jb29raWVzKTsKKyAgICAgICAgICAgIHRoaXMuX3VwZGF0ZVNvcnQo
KTsKKyAgICAgICAgICAgIHRoaXMuX3RhYmxlLnJlbG9hZERhdGEoKTsKKyAgICAgICAgfSkuY2F0
Y2goKGVycm9yKSA9PiB7CisgICAgICAgICAgICBjb25zb2xlLmVycm9yKCJDb3VsZCBub3QgZmV0
Y2ggY29va2llczogIiwgZXJyb3IpOworICAgICAgICB9KTsKKyAgICB9CiAKLSAgICAgICAgdmFy
IGNvb2tpZSA9IG5vZGUuY29va2llOwotICAgICAgICB2YXIgY29va2llVVJMID0gKGNvb2tpZS5z
ZWN1cmUgPyAiaHR0cHM6Ly8iIDogImh0dHA6Ly8iKSArIGNvb2tpZS5kb21haW4gKyBjb29raWUu
cGF0aDsKLSAgICAgICAgUGFnZUFnZW50LmRlbGV0ZUNvb2tpZShjb29raWUubmFtZSwgY29va2ll
VVJMKTsKKyAgICBfdXBkYXRlU29ydCgpCisgICAgeworICAgICAgICBpZiAoIXRoaXMuX3NvcnRD
b21wYXJhdG9yKQorICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIHRoaXMudXBkYXRlKCk7
CisgICAgICAgIHRoaXMuX2Nvb2tpZXMuc29ydCh0aGlzLl9zb3J0Q29tcGFyYXRvcik7CiAgICAg
fQogCi0gICAgX3JlZnJlc2hCdXR0b25DbGlja2VkKGV2ZW50KQorICAgIF9oYW5kbGVUYWJsZUtl
eURvd24oZXZlbnQpCiAgICAgewotICAgICAgICB0aGlzLnVwZGF0ZSgpOworICAgICAgICBpZiAo
ZXZlbnQua2V5Q29kZSA9PT0gOCB8fCBldmVudC5rZXlDb2RlID09PSA0NikKKyAgICAgICAgICAg
IHRoaXMuX3RhYmxlLnJlbW92ZVNlbGVjdGVkUm93cygpOwogICAgIH0KIH07CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RhYmxlLmpzIGIv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVGFibGUuanMKaW5kZXgg
ZDlkYWU3YmRiYThjMjY5NWZlZmY1MDI3YmIxYzZkMTU0M2IzMmRjMi4uZDkwZGFlZDg0MmZjZWM3
MzMzNjExZDUyNWIwZWEwZjJkMjAxYzRmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVGFibGUuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVGFibGUuanMKQEAgLTIzNSw2ICsyMzUsMTEgQEAgV0ku
VGFibGUgPSBjbGFzcyBUYWJsZSBleHRlbmRzIFdJLlZpZXcKICAgICAgICAgICAgIHRoaXMuX25v
dGlmeVNlbGVjdGlvbkRpZENoYW5nZSgpOwogICAgIH0KIAorICAgIGlzUm93U2VsZWN0ZWQocm93
SW5kZXgpCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5fc2VsZWN0ZWRSb3dzLmhhcyhyb3dJ
bmRleCk7CisgICAgfQorCiAgICAgcmVzaXplKCkKICAgICB7CiAgICAgICAgIHRoaXMuX2NhY2hl
ZFdpZHRoID0gTmFOOwpAQCAtMzIwLDcgKzMyNSw3IEBAIFdJLlRhYmxlID0gY2xhc3MgVGFibGUg
ZXh0ZW5kcyBXSS5WaWV3CiAgICAgewogICAgICAgICBjb25zb2xlLmFzc2VydCghZXh0ZW5kU2Vs
ZWN0aW9uIHx8IHRoaXMuX2FsbG93c011bHRpcGxlU2VsZWN0aW9uLCAiQ2Fubm90IGV4dGVuZCBz
ZWxlY3Rpb24gd2l0aCBtdWx0aXBsZSBzZWxlY3Rpb24gZGlzYWJsZWQuIik7CiAKLSAgICAgICAg
aWYgKHRoaXMuX2lzUm93U2VsZWN0ZWQocm93SW5kZXgpKSB7CisgICAgICAgIGlmICh0aGlzLmlz
Um93U2VsZWN0ZWQocm93SW5kZXgpKSB7CiAgICAgICAgICAgICBpZiAoIWV4dGVuZFNlbGVjdGlv
bikKICAgICAgICAgICAgICAgICB0aGlzLl9kZXNlbGVjdEFsbEFuZFNlbGVjdChyb3dJbmRleCk7
CiAgICAgICAgICAgICByZXR1cm47CkBAIC0zNDMsNyArMzQ4LDcgQEAgV0kuVGFibGUgPSBjbGFz
cyBUYWJsZSBleHRlbmRzIFdJLlZpZXcKIAogICAgIGRlc2VsZWN0Um93KHJvd0luZGV4KQogICAg
IHsKLSAgICAgICAgaWYgKCF0aGlzLl9pc1Jvd1NlbGVjdGVkKHJvd0luZGV4KSkKKyAgICAgICAg
aWYgKCF0aGlzLmlzUm93U2VsZWN0ZWQocm93SW5kZXgpKQogICAgICAgICAgICAgcmV0dXJuOwog
CiAgICAgICAgIGxldCBvbGRTZWxlY3RlZFJvdyA9IHRoaXMuX2NhY2hlZFJvd3MuZ2V0KHJvd0lu
ZGV4KTsKQEAgLTM4OCw3ICszOTMsNyBAQCBXSS5UYWJsZSA9IGNsYXNzIFRhYmxlIGV4dGVuZHMg
V0kuVmlldwogICAgICAgICBpZiAocm93SW5kZXggPj0gdGhpcy5udW1iZXJPZlJvd3MpCiAgICAg
ICAgICAgICByZXR1cm47CiAKLSAgICAgICAgaWYgKHRoaXMuX2lzUm93U2VsZWN0ZWQocm93SW5k
ZXgpKQorICAgICAgICBpZiAodGhpcy5pc1Jvd1NlbGVjdGVkKHJvd0luZGV4KSkKICAgICAgICAg
ICAgIHRoaXMuZGVzZWxlY3RSb3cocm93SW5kZXgpOwogCiAgICAgICAgIHRoaXMuX3JlbW92ZVJv
d3MobmV3IFdJLkluZGV4U2V0KFtyb3dJbmRleF0pKTsKQEAgLTc5Niw3ICs4MDEsNyBAQCBXSS5U
YWJsZSA9IGNsYXNzIFRhYmxlIGV4dGVuZHMgV0kuVmlldwogICAgICAgICBsZXQgcm93ID0gZG9j
dW1lbnQuY3JlYXRlRWxlbWVudCgibGkiKTsKICAgICAgICAgcm93Ll9faW5kZXggPSByb3dJbmRl
eDsKICAgICAgICAgcm93Ll9fd2lkdGhHZW5lcmF0aW9uID0gMDsKLSAgICAgICAgaWYgKHRoaXMu
X2lzUm93U2VsZWN0ZWQocm93SW5kZXgpKQorICAgICAgICBpZiAodGhpcy5pc1Jvd1NlbGVjdGVk
KHJvd0luZGV4KSkKICAgICAgICAgICAgIHJvdy5jbGFzc0xpc3QuYWRkKCJzZWxlY3RlZCIpOwog
CiAgICAgICAgIHRoaXMuX2NhY2hlZFJvd3Muc2V0KHJvd0luZGV4LCByb3cpOwpAQCAtMTMyMCw3
ICsxMzI1LDcgQEAgV0kuVGFibGUgPSBjbGFzcyBUYWJsZSBleHRlbmRzIFdJLlZpZXcKICAgICAg
ICAgbGV0IGNvbHVtbiA9IHRoaXMuX3Zpc2libGVDb2x1bW5zW2NvbHVtbkluZGV4XTsKICAgICAg
ICAgbGV0IHJvd0luZGV4ID0gcm93Ll9faW5kZXg7CiAKLSAgICAgICAgaWYgKHRoaXMuX2lzUm93
U2VsZWN0ZWQocm93SW5kZXgpKSB7CisgICAgICAgIGlmICh0aGlzLmlzUm93U2VsZWN0ZWQocm93
SW5kZXgpKSB7CiAgICAgICAgICAgICBpZiAoZXZlbnQubWV0YUtleSkKICAgICAgICAgICAgICAg
ICB0aGlzLmRlc2VsZWN0Um93KHJvd0luZGV4KQogICAgICAgICAgICAgZWxzZQpAQCAtMTMzNyw2
ICsxMzQyLDkgQEAgV0kuVGFibGUgPSBjbGFzcyBUYWJsZSBleHRlbmRzIFdJLlZpZXcKIAogICAg
IF9oYW5kbGVDb250ZXh0TWVudShldmVudCkKICAgICB7CisgICAgICAgIGlmICghdGhpcy5fZGVs
ZWdhdGUudGFibGVDZWxsQ29udGV4dE1lbnVDbGlja2VkKQorICAgICAgICAgICAgcmV0dXJuOwor
CiAgICAgICAgIGxldCBjZWxsID0gZXZlbnQudGFyZ2V0LmVuY2xvc2luZ05vZGVPclNlbGZXaXRo
Q2xhc3MoImNlbGwiKTsKICAgICAgICAgaWYgKCFjZWxsKQogICAgICAgICAgICAgcmV0dXJuOwpA
QCAtMTQ1Miw3ICsxNDYwLDcgQEAgV0kuVGFibGUgPSBjbGFzcyBUYWJsZSBleHRlbmRzIFdJLlZp
ZXcKICAgICAgICAgICAgICAgICB0aGlzLl9jYWNoZWRSb3dzLnNldChuZXdJbmRleCwgcm93KTsK
ICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgaWYgKHRoaXMuX2lzUm93U2VsZWN0ZWQocm93
SW5kZXgpKSB7CisgICAgICAgICAgICBpZiAodGhpcy5pc1Jvd1NlbGVjdGVkKHJvd0luZGV4KSkg
ewogICAgICAgICAgICAgICAgIHRoaXMuX3NlbGVjdGVkUm93cy5kZWxldGUocm93SW5kZXgpOwog
ICAgICAgICAgICAgICAgIHRoaXMuX3NlbGVjdGVkUm93cy5hZGQobmV3SW5kZXgpOwogICAgICAg
ICAgICAgICAgIGlmICh0aGlzLl9zZWxlY3RlZFJvd0luZGV4ID09PSByb3dJbmRleCkKQEAgLTE0
OTMsMTEgKzE1MDEsNiBAQCBXSS5UYWJsZSA9IGNsYXNzIFRhYmxlIGV4dGVuZHMgV0kuVmlldwog
ICAgICAgICB9CiAgICAgfQogCi0gICAgX2lzUm93U2VsZWN0ZWQocm93SW5kZXgpCi0gICAgewot
ICAgICAgICByZXR1cm4gdGhpcy5fc2VsZWN0ZWRSb3dzLmhhcyhyb3dJbmRleCk7Ci0gICAgfQot
CiAgICAgX25vdGlmeVNlbGVjdGlvbkRpZENoYW5nZSgpCiAgICAgewogICAgICAgICBpZiAodGhp
cy5fc3VwcHJlc3NOZXh0U2VsZWN0aW9uRGlkQ2hhbmdlKSB7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>353635</attachid>
            <date>2018-11-01 12:26:27 -0700</date>
            <delta_ts>2018-11-02 12:13:56 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-66381-20181101122547.patch</filename>
            <type>text/plain</type>
            <size>22977</size>
            <attacher name="Matt Baker">mattbaker</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM3Njk1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwppbmRleCBj
Y2M1MWM1Mjk5ZDQ3YWY5MGFiNWFlZGU1ZTFkMTg4NDdhY2Q5ZDBmLi5jOTM1YjMzZTg5MDY1MzQ5
YmQ0M2ExN2IyYjk3YjY1NGY2NDVkZGY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1MSBAQAorMjAxOC0xMS0wMSAgTWF0dCBCYWtlciAgPG1hdHRiYWtlckBhcHBsZS5jb20+
CisKKyAgICAgICAgV2ViIEluc3BlY3Rvcjogc3VwcG9ydCBtdWx0aXBsZSBzZWxlY3Rpb24vZGVs
ZXRpb24gb2YgY29va2llIHJlY29yZHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTY2MzgxCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8xOTI4MTUyNT4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIExvY2Fs
aXphdGlvbnMvZW4ubHByb2ovbG9jYWxpemVkU3RyaW5ncy5qczoKKworICAgICAgICAqIFVzZXJJ
bnRlcmZhY2UvVmlld3MvQ29va2llU3RvcmFnZUNvbnRlbnRWaWV3LmpzOgorICAgICAgICAoV0ku
Q29va2llU3RvcmFnZUNvbnRlbnRWaWV3KToKKyAgICAgICAgKFdJLkNvb2tpZVN0b3JhZ2VDb250
ZW50Vmlldy5wcm90b3R5cGUuZ2V0IHNjcm9sbGFibGVFbGVtZW50cyk6CisgICAgICAgIChXSS5D
b29raWVTdG9yYWdlQ29udGVudFZpZXcucHJvdG90eXBlLnRhYmxlTnVtYmVyT2ZSb3dzKToKKyAg
ICAgICAgKFdJLkNvb2tpZVN0b3JhZ2VDb250ZW50Vmlldy5wcm90b3R5cGUudGFibGVTb3J0Q2hh
bmdlZCk6CisgICAgICAgIChXSS5Db29raWVTdG9yYWdlQ29udGVudFZpZXcucHJvdG90eXBlLnRh
YmxlQ2VsbENvbnRleHRNZW51Q2xpY2tlZCk6CisgICAgICAgIChXSS5Db29raWVTdG9yYWdlQ29u
dGVudFZpZXcucHJvdG90eXBlLnRhYmxlRGlkUmVtb3ZlUm93cyk6CisgICAgICAgIChXSS5Db29r
aWVTdG9yYWdlQ29udGVudFZpZXcucHJvdG90eXBlLnRhYmxlUG9wdWxhdGVDZWxsKToKKyAgICAg
ICAgKFdJLkNvb2tpZVN0b3JhZ2VDb250ZW50Vmlldy5wcm90b3R5cGUuaW5pdGlhbExheW91dCk6
CisgICAgICAgIChXSS5Db29raWVTdG9yYWdlQ29udGVudFZpZXcucHJvdG90eXBlLl9nZW5lcmF0
ZVNvcnRDb21wYXJhdG9yKToKKyAgICAgICAgKFdJLkNvb2tpZVN0b3JhZ2VDb250ZW50Vmlldy5w
cm90b3R5cGUuX3JlZnJlc2hCdXR0b25DbGlja2VkKToKKyAgICAgICAgKFdJLkNvb2tpZVN0b3Jh
Z2VDb250ZW50Vmlldy5wcm90b3R5cGUuX3JlbG9hZENvb2tpZXMpOgorICAgICAgICAoV0kuQ29v
a2llU3RvcmFnZUNvbnRlbnRWaWV3LnByb3RvdHlwZS5fdXBkYXRlU29ydCk6CisgICAgICAgIChX
SS5Db29raWVTdG9yYWdlQ29udGVudFZpZXcucHJvdG90eXBlLl9oYW5kbGVUYWJsZUtleURvd24p
OgorICAgICAgICAoV0kuQ29va2llU3RvcmFnZUNvbnRlbnRWaWV3LnByb3RvdHlwZS51cGRhdGUp
OiBEZWxldGVkLgorICAgICAgICAoV0kuQ29va2llU3RvcmFnZUNvbnRlbnRWaWV3LnByb3RvdHlw
ZS5fcmVidWlsZFRhYmxlKTogRGVsZXRlZC4KKyAgICAgICAgKFdJLkNvb2tpZVN0b3JhZ2VDb250
ZW50Vmlldy5wcm90b3R5cGUuX3NvcnREYXRhR3JpZC5sb2NhbGVDb21wYXJlKTogRGVsZXRlZC4K
KyAgICAgICAgKFdJLkNvb2tpZVN0b3JhZ2VDb250ZW50Vmlldy5wcm90b3R5cGUuX3NvcnREYXRh
R3JpZC5udW1iZXJDb21wYXJlKTogRGVsZXRlZC4KKyAgICAgICAgKFdJLkNvb2tpZVN0b3JhZ2VD
b250ZW50Vmlldy5wcm90b3R5cGUuX3NvcnREYXRhR3JpZC5leHBpcmVzQ29tcGFyZSk6IERlbGV0
ZWQuCisgICAgICAgIChXSS5Db29raWVTdG9yYWdlQ29udGVudFZpZXcucHJvdG90eXBlLl9zb3J0
RGF0YUdyaWQpOiBEZWxldGVkLgorICAgICAgICAoV0kuQ29va2llU3RvcmFnZUNvbnRlbnRWaWV3
LnByb3RvdHlwZS5fZGVsZXRlQ2FsbGJhY2spOiBEZWxldGVkLgorICAgICAgICBSZXBsYWNlIERh
dGFHcmlkIHdpdGggVGFibGUuIFRoZSBjb250ZW50IHZpZXcgc2VydmVzIGFzIHRoZSB0YWJsZQor
ICAgICAgICBkZWxlZ2F0ZSBhbmQgZGF0YSBzb3VyY2UsIGFuZCBoYW5kbGVzIGRlbGV0ZSBhbmQg
YmFja3NwYWNlIGtleSBldmVudHMKKyAgICAgICAgdG8gYWxsb3cgZGVsZXRpbmcgdGhlIHNlbGVj
dGVkIGNvb2tpZXMuIENvb2tpZXMgbWF5IGFsc28gYmUgZGVsZXRlZCBmcm9tCisgICAgICAgIHRo
ZSB0YWJsZSBjb250ZXh0IG1lbnUgYW5kIGEgbmV3IGJ1dHRvbiBpbiB0aGUgbmF2aWdhdGlvbiBi
YXIuCisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1ZpZXdzL1RhYmxlLmpzOgorICAgICAgICAo
V0kuVGFibGUucHJvdG90eXBlLmlzUm93U2VsZWN0ZWQpOgorICAgICAgICAoV0kuVGFibGUucHJv
dG90eXBlLnNlbGVjdFJvdyk6CisgICAgICAgIChXSS5UYWJsZS5wcm90b3R5cGUuZGVzZWxlY3RS
b3cpOgorICAgICAgICAoV0kuVGFibGUucHJvdG90eXBlLnJlbW92ZVJvdyk6CisgICAgICAgIChX
SS5UYWJsZS5wcm90b3R5cGUuX2dldE9yQ3JlYXRlUm93KToKKyAgICAgICAgKFdJLlRhYmxlLnBy
b3RvdHlwZS5faGFuZGxlTW91c2VEb3duKToKKyAgICAgICAgKFdJLlRhYmxlLnByb3RvdHlwZS5f
cmVtb3ZlUm93cyk6CisgICAgICAgIChXSS5UYWJsZS5wcm90b3R5cGUuX2lzUm93U2VsZWN0ZWQp
OiBEZWxldGVkLgorICAgICAgICBNYWtlIGBpc1NlbGVjdGVkUm93YCBwdWJsaWMuIEl0IGlzIG1v
cmUgY29udmVuaWVudCBhbmQgZWZmaWNpZW50IHRoYW4KKyAgICAgICAgY2FsbGluZyBgVGFibGUu
cHJvdG90eXBlLnNlbGVjdGVkUm93cy5pbmNsdWRlcyhyb3dJbmRleClgLgorCiAyMDE4LTExLTAx
ICBOaWtpdGEgVmFzaWx5ZXYgIDxudmFzaWx5ZXZAYXBwbGUuY29tPgogCiAgICAgICAgIFJFR1JF
U1NJT04ocjIzNzY1Mik6IFdlYiBJbnNwZWN0b3I6IGR1bXBJbnNwZWN0b3JQcm90b2NvbE1lc3Nh
Z2VzIGlzIGFsd2F5cyBlbmFibGVkCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
TG9jYWxpemF0aW9ucy9lbi5scHJvai9sb2NhbGl6ZWRTdHJpbmdzLmpzIGIvU291cmNlL1dlYklu
c3BlY3RvclVJL0xvY2FsaXphdGlvbnMvZW4ubHByb2ovbG9jYWxpemVkU3RyaW5ncy5qcwppbmRl
eCBmNzA4YzdlMWZlYTlmZDdmN2E4NGVkZmMxMWFhOGY4ZWQxZTEwODBhLi4wYTFjYTdmMDg2MmU0
MDJmNmI1ZTQ2MWUzYjkyMWVjOWJmMTEzZjQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvTG9jYWxpemF0aW9ucy9lbi5scHJvai9sb2NhbGl6ZWRTdHJpbmdzLmpzCisrKyBiL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Mb2NhbGl6YXRpb25zL2VuLmxwcm9qL2xvY2FsaXplZFN0cmlu
Z3MuanMKQEAgLTM3NSw3ICszNzUsNiBAQCBsb2NhbGl6ZWRTdHJpbmdzWyJFeHBhbmQgQWxsIl0g
PSAiRXhwYW5kIEFsbCI7CiBsb2NhbGl6ZWRTdHJpbmdzWyJFeHBhbmQgY29sdW1ucyJdID0gIkV4
cGFuZCBjb2x1bW5zIjsKIGxvY2FsaXplZFN0cmluZ3NbIkV4cGFuZGVkIl0gPSAiRXhwYW5kZWQi
OwogbG9jYWxpemVkU3RyaW5nc1siRXhwZXJpbWVudGFsIl0gPSAiRXhwZXJpbWVudGFsIjsKLWxv
Y2FsaXplZFN0cmluZ3NbIkV4cGlyZXMiXSA9ICJFeHBpcmVzIjsKIGxvY2FsaXplZFN0cmluZ3Nb
IkV4cG9ydCJdID0gIkV4cG9ydCI7CiBsb2NhbGl6ZWRTdHJpbmdzWyJFeHBvcnQgSEFSIl0gPSAi
RXhwb3J0IEhBUiI7CiBsb2NhbGl6ZWRTdHJpbmdzWyJFeHBvcnQgUmVzdWx0Il0gPSAiRXhwb3J0
IFJlc3VsdCI7CkBAIC00NDAsNyArNDM5LDYgQEAgbG9jYWxpemVkU3RyaW5nc1siR3JvdXBpbmcg
TWV0aG9kIl0gPSAiR3JvdXBpbmcgTWV0aG9kIjsKIGxvY2FsaXplZFN0cmluZ3NbIkhBUiBFeHBv
cnQgKCVzKSJdID0gIkhBUiBFeHBvcnQgKCVzKSI7CiBsb2NhbGl6ZWRTdHJpbmdzWyJIVE1MIl0g
PSAiSFRNTCI7CiBsb2NhbGl6ZWRTdHJpbmdzWyJIVE1MIEF0dHJpYnV0ZXMiXSA9ICJIVE1MIEF0
dHJpYnV0ZXMiOwotbG9jYWxpemVkU3RyaW5nc1siSFRUUCJdID0gIkhUVFAiOwogbG9jYWxpemVk
U3RyaW5nc1siSGVhZGVycyJdID0gIkhlYWRlcnMiOwogbG9jYWxpemVkU3RyaW5nc1siSGVhZGVy
czoiXSA9ICJIZWFkZXJzOiI7CiBsb2NhbGl6ZWRTdHJpbmdzWyJIZWFkaW5nIExldmVsIl0gPSAi
SGVhZGluZyBMZXZlbCI7CkBAIC03NDUsNyArNzQzLDYgQEAgbG9jYWxpemVkU3RyaW5nc1siUmV2
ZWFsIGluIFJlc291cmNlcyBUYWIiXSA9ICJSZXZlYWwgaW4gUmVzb3VyY2VzIFRhYiI7CiBsb2Nh
bGl6ZWRTdHJpbmdzWyJSb2xlIl0gPSAiUm9sZSI7CiBsb2NhbGl6ZWRTdHJpbmdzWyJSdW4gJWQi
XSA9ICJSdW4gJWQiOwogbG9jYWxpemVkU3RyaW5nc1siUnVubmluZyB0aGUg4oCcJXPigJwgYXVk
aXQiXSA9ICJSdW5uaW5nIHRoZSDigJwlc+KAnCBhdWRpdCI7Ci1sb2NhbGl6ZWRTdHJpbmdzWyJT
YW1lLVNpdGUiXSA9ICJTYW1lLVNpdGUiOwogbG9jYWxpemVkU3RyaW5nc1siU2FtcGxlcyJdID0g
IlNhbXBsZXMiOwogbG9jYWxpemVkU3RyaW5nc1siU2F2ZSBGaWxlIl0gPSAiU2F2ZSBGaWxlIjsK
IGxvY2FsaXplZFN0cmluZ3NbIlNhdmUgU2VsZWN0ZWQiXSA9ICJTYXZlIFNlbGVjdGVkIjsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0Nvb2tp
ZVN0b3JhZ2VDb250ZW50Vmlldy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL1ZpZXdzL0Nvb2tpZVN0b3JhZ2VDb250ZW50Vmlldy5qcwppbmRleCAxN2FlODY5MGMzMTg1
OTg3M2ZkYzE5M2VhYmRhOGUzOGE3MTNkNDEzLi4yOTQ1NDBlN2ZmZTkyYWU2YmY4MTcxODdlZTVj
MDRlZWUxMDdlODUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9WaWV3cy9Db29raWVTdG9yYWdlQ29udGVudFZpZXcuanMKKysrIGIvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ29va2llU3RvcmFnZUNvbnRlbnRWaWV3Lmpz
CkBAIC0zMSwxMCArMzEsMTIgQEAgV0kuQ29va2llU3RvcmFnZUNvbnRlbnRWaWV3ID0gY2xhc3Mg
Q29va2llU3RvcmFnZUNvbnRlbnRWaWV3IGV4dGVuZHMgV0kuQ29udGVudFYKIAogICAgICAgICB0
aGlzLmVsZW1lbnQuY2xhc3NMaXN0LmFkZCgiY29va2llLXN0b3JhZ2UiKTsKIAorICAgICAgICB0
aGlzLl9jb29raWVzID0gW107CisgICAgICAgIHRoaXMuX3NvcnRDb21wYXJhdG9yID0gbnVsbDsK
KyAgICAgICAgdGhpcy5fdGFibGUgPSBudWxsOworCiAgICAgICAgIHRoaXMuX3JlZnJlc2hCdXR0
b25OYXZpZ2F0aW9uSXRlbSA9IG5ldyBXSS5CdXR0b25OYXZpZ2F0aW9uSXRlbSgiY29va2llLXN0
b3JhZ2UtcmVmcmVzaCIsIFdJLlVJU3RyaW5nKCJSZWZyZXNoIiksICJJbWFnZXMvUmVsb2FkRnVs
bC5zdmciLCAxMywgMTMpOwogICAgICAgICB0aGlzLl9yZWZyZXNoQnV0dG9uTmF2aWdhdGlvbkl0
ZW0uYWRkRXZlbnRMaXN0ZW5lcihXSS5CdXR0b25OYXZpZ2F0aW9uSXRlbS5FdmVudC5DbGlja2Vk
LCB0aGlzLl9yZWZyZXNoQnV0dG9uQ2xpY2tlZCwgdGhpcyk7Ci0KLSAgICAgICAgdGhpcy51cGRh
dGUoKTsKICAgICB9CiAKICAgICAvLyBQdWJsaWMKQEAgLTQ0LDE2ICs0Niw2IEBAIFdJLkNvb2tp
ZVN0b3JhZ2VDb250ZW50VmlldyA9IGNsYXNzIENvb2tpZVN0b3JhZ2VDb250ZW50VmlldyBleHRl
bmRzIFdJLkNvbnRlbnRWCiAgICAgICAgIHJldHVybiBbdGhpcy5fcmVmcmVzaEJ1dHRvbk5hdmln
YXRpb25JdGVtXTsKICAgICB9CiAKLSAgICB1cGRhdGUoKQotICAgIHsKLSAgICAgICAgUGFnZUFn
ZW50LmdldENvb2tpZXMoKS50aGVuKChwYXlsb2FkKSA9PiB7Ci0gICAgICAgICAgICB0aGlzLl9j
b29raWVzID0gdGhpcy5fZmlsdGVyQ29va2llcyhwYXlsb2FkLmNvb2tpZXMpOwotICAgICAgICAg
ICAgdGhpcy5fcmVidWlsZFRhYmxlKCk7Ci0gICAgICAgIH0pLmNhdGNoKChlcnJvcikgPT4gewot
ICAgICAgICAgICAgY29uc29sZS5lcnJvcigiQ291bGQgbm90IGZldGNoIGNvb2tpZXM6ICIsIGVy
cm9yKTsKLSAgICAgICAgfSk7Ci0gICAgfQotCiAgICAgc2F2ZVRvQ29va2llKGNvb2tpZSkKICAg
ICB7CiAgICAgICAgIGNvb2tpZS50eXBlID0gV0kuQ29udGVudFZpZXdDb29raWVUeXBlLkNvb2tp
ZVN0b3JhZ2U7CkBAIC02Miw5NyArNTQsMTk0IEBAIFdJLkNvb2tpZVN0b3JhZ2VDb250ZW50Vmll
dyA9IGNsYXNzIENvb2tpZVN0b3JhZ2VDb250ZW50VmlldyBleHRlbmRzIFdJLkNvbnRlbnRWCiAK
ICAgICBnZXQgc2Nyb2xsYWJsZUVsZW1lbnRzKCkKICAgICB7Ci0gICAgICAgIGlmICghdGhpcy5f
ZGF0YUdyaWQpCisgICAgICAgIGlmICghdGhpcy5fdGFibGUpCiAgICAgICAgICAgICByZXR1cm4g
W107Ci0gICAgICAgIHJldHVybiBbdGhpcy5fZGF0YUdyaWQuc2Nyb2xsQ29udGFpbmVyXTsKKyAg
ICAgICAgcmV0dXJuIFt0aGlzLl90YWJsZS5zY3JvbGxDb250YWluZXJdOwogICAgIH0KIAotICAg
IC8vIFByaXZhdGUKKyAgICAvLyBUYWJsZSBkYXRhU291cmNlCiAKLSAgICBfcmVidWlsZFRhYmxl
KCkKLSAgICB7Ci0gICAgICAgIC8vIEZJWE1FIDxodHRwczovL3dlYmtpdC5vcmcvYi8xNTE0MDA+
OiBJZiB0aGVyZSBhcmUgbm8gY29va2llcywgYWRkIHBsYWNlaG9sZGVyIGV4cGxhbmF0b3J5IHRl
eHQuCi0gICAgICAgIGlmICghdGhpcy5fZGF0YUdyaWQpIHsKLSAgICAgICAgICAgIHZhciBjb2x1
bW5zID0ge25hbWU6IHt9LCB2YWx1ZToge30sIGRvbWFpbjoge30sIHBhdGg6IHt9LCBleHBpcmVz
OiB7fSwgc2l6ZToge30sIGh0dHA6IHt9LCBzZWN1cmU6IHt9LCBzYW1lU2l0ZToge319OwotCi0g
ICAgICAgICAgICBjb2x1bW5zLm5hbWUudGl0bGUgPSBXSS5VSVN0cmluZygiTmFtZSIpOwotICAg
ICAgICAgICAgY29sdW1ucy5uYW1lLnNvcnRhYmxlID0gdHJ1ZTsKLSAgICAgICAgICAgIGNvbHVt
bnMubmFtZS53aWR0aCA9ICIyNCUiOwotICAgICAgICAgICAgY29sdW1ucy5uYW1lLmxvY2tlZCA9
IHRydWU7Ci0KLSAgICAgICAgICAgIGNvbHVtbnMudmFsdWUudGl0bGUgPSBXSS5VSVN0cmluZygi
VmFsdWUiKTsKLSAgICAgICAgICAgIGNvbHVtbnMudmFsdWUuc29ydGFibGUgPSB0cnVlOwotICAg
ICAgICAgICAgY29sdW1ucy52YWx1ZS53aWR0aCA9ICIzNCUiOwotICAgICAgICAgICAgY29sdW1u
cy52YWx1ZS5sb2NrZWQgPSB0cnVlOwotCi0gICAgICAgICAgICBjb2x1bW5zLmRvbWFpbi50aXRs
ZSA9IFdJLlVJU3RyaW5nKCJEb21haW4iKTsKLSAgICAgICAgICAgIGNvbHVtbnMuZG9tYWluLnNv
cnRhYmxlID0gdHJ1ZTsKLSAgICAgICAgICAgIGNvbHVtbnMuZG9tYWluLndpZHRoID0gIjYlIjsK
LQotICAgICAgICAgICAgY29sdW1ucy5wYXRoLnRpdGxlID0gV0kuVUlTdHJpbmcoIlBhdGgiKTsK
LSAgICAgICAgICAgIGNvbHVtbnMucGF0aC5zb3J0YWJsZSA9IHRydWU7Ci0gICAgICAgICAgICBj
b2x1bW5zLnBhdGgud2lkdGggPSAiNiUiOwotCi0gICAgICAgICAgICBjb2x1bW5zLmV4cGlyZXMu
dGl0bGUgPSBXSS5VSVN0cmluZygiRXhwaXJlcyIpOwotICAgICAgICAgICAgY29sdW1ucy5leHBp
cmVzLnNvcnRhYmxlID0gdHJ1ZTsKLSAgICAgICAgICAgIGNvbHVtbnMuZXhwaXJlcy53aWR0aCA9
ICI2JSI7Ci0KLSAgICAgICAgICAgIGNvbHVtbnMuc2l6ZS50aXRsZSA9IFdJLlVJU3RyaW5nKCJT
aXplIik7Ci0gICAgICAgICAgICBjb2x1bW5zLnNpemUuYWxpZ25lZCA9ICJyaWdodCI7Ci0gICAg
ICAgICAgICBjb2x1bW5zLnNpemUuc29ydGFibGUgPSB0cnVlOwotICAgICAgICAgICAgY29sdW1u
cy5zaXplLndpZHRoID0gIjYlIjsKLQotICAgICAgICAgICAgY29sdW1ucy5odHRwLnRpdGxlID0g
V0kuVUlTdHJpbmcoIkhUVFAiKTsKLSAgICAgICAgICAgIGNvbHVtbnMuaHR0cC5hbGlnbmVkID0g
ImNlbnRlcmVkIjsKLSAgICAgICAgICAgIGNvbHVtbnMuaHR0cC5zb3J0YWJsZSA9IHRydWU7Ci0g
ICAgICAgICAgICBjb2x1bW5zLmh0dHAud2lkdGggPSAiNiUiOwotCi0gICAgICAgICAgICBjb2x1
bW5zLnNlY3VyZS50aXRsZSA9IFdJLlVJU3RyaW5nKCJTZWN1cmUiKTsKLSAgICAgICAgICAgIGNv
bHVtbnMuc2VjdXJlLmFsaWduZWQgPSAiY2VudGVyZWQiOwotICAgICAgICAgICAgY29sdW1ucy5z
ZWN1cmUuc29ydGFibGUgPSB0cnVlOwotICAgICAgICAgICAgY29sdW1ucy5zZWN1cmUud2lkdGgg
PSAiNiUiOwotCi0gICAgICAgICAgICBjb2x1bW5zLnNhbWVTaXRlLnRpdGxlID0gV0kuVUlTdHJp
bmcoIlNhbWUtU2l0ZSIpOwotICAgICAgICAgICAgY29sdW1ucy5zYW1lU2l0ZS5zb3J0YWJsZSA9
IHRydWU7Ci0gICAgICAgICAgICBjb2x1bW5zLnNhbWVTaXRlLndpZHRoID0gIjYlIjsKLQotICAg
ICAgICAgICAgdGhpcy5fZGF0YUdyaWQgPSBuZXcgV0kuRGF0YUdyaWQoY29sdW1ucywgbnVsbCwg
dGhpcy5fZGVsZXRlQ2FsbGJhY2suYmluZCh0aGlzKSk7Ci0gICAgICAgICAgICB0aGlzLl9kYXRh
R3JpZC5jb2x1bW5DaG9vc2VyRW5hYmxlZCA9IHRydWU7Ci0gICAgICAgICAgICB0aGlzLl9kYXRh
R3JpZC5hZGRFdmVudExpc3RlbmVyKFdJLkRhdGFHcmlkLkV2ZW50LlNvcnRDaGFuZ2VkLCB0aGlz
Ll9zb3J0RGF0YUdyaWQsIHRoaXMpOwotICAgICAgICAgICAgdGhpcy5fZGF0YUdyaWQuc29ydENv
bHVtbklkZW50aWZpZXIgPSAibmFtZSI7Ci0gICAgICAgICAgICB0aGlzLl9kYXRhR3JpZC5jcmVh
dGVTZXR0aW5ncygiY29va2llLXN0b3JhZ2UtY29udGVudC12aWV3Iik7Ci0KLSAgICAgICAgICAg
IHRoaXMuYWRkU3Vidmlldyh0aGlzLl9kYXRhR3JpZCk7Ci0gICAgICAgICAgICB0aGlzLl9kYXRh
R3JpZC51cGRhdGVMYXlvdXQoKTsKLSAgICAgICAgfQorICAgIHRhYmxlTnVtYmVyT2ZSb3dzKHRh
YmxlKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX2Nvb2tpZXMubGVuZ3RoOworICAgIH0K
IAotICAgICAgICBjb25zb2xlLmFzc2VydCh0aGlzLl9kYXRhR3JpZCk7Ci0gICAgICAgIHRoaXMu
X2RhdGFHcmlkLnJlbW92ZUNoaWxkcmVuKCk7Ci0KLSAgICAgICAgZm9yIChsZXQgY29va2llIG9m
IHRoaXMuX2Nvb2tpZXMpIHsKLSAgICAgICAgICAgIGNvbnN0IGNoZWNrbWFyayA9ICJcdTI3MTMi
OwotICAgICAgICAgICAgdmFyIGRhdGEgPSB7Ci0gICAgICAgICAgICAgICAgbmFtZTogY29va2ll
Lm5hbWUsCi0gICAgICAgICAgICAgICAgdmFsdWU6IGNvb2tpZS52YWx1ZSwKLSAgICAgICAgICAg
ICAgICBkb21haW46IGNvb2tpZS5kb21haW4gfHwgIiIsCi0gICAgICAgICAgICAgICAgcGF0aDog
Y29va2llLnBhdGggfHwgIiIsCi0gICAgICAgICAgICAgICAgZXhwaXJlczogIiIsCi0gICAgICAg
ICAgICAgICAgc2l6ZTogTnVtYmVyLmJ5dGVzVG9TdHJpbmcoY29va2llLnNpemUpLAotICAgICAg
ICAgICAgICAgIGh0dHA6IGNvb2tpZS5odHRwT25seSA/IGNoZWNrbWFyayA6ICIiLAotICAgICAg
ICAgICAgICAgIHNlY3VyZTogY29va2llLnNlY3VyZSA/IGNoZWNrbWFyayA6ICIiLAotICAgICAg
ICAgICAgICAgIHNhbWVTaXRlOiBjb29raWUuc2FtZVNpdGUgJiYgY29va2llLnNhbWVTaXRlICE9
PSBXSS5Db29raWUuU2FtZVNpdGVUeXBlLk5vbmUgPyBXSS5Db29raWUuZGlzcGxheU5hbWVGb3JT
YW1lU2l0ZVR5cGUoY29va2llLnNhbWVTaXRlKSA6ICIiLAotICAgICAgICAgICAgfTsKKyAgICB0
YWJsZVNvcnRDaGFuZ2VkKHRhYmxlKQorICAgIHsKKyAgICAgICAgdGhpcy5fZ2VuZXJhdGVTb3J0
Q29tcGFyYXRvcigpOworCisgICAgICAgIGlmICghdGhpcy5fc29ydENvbXBhcmF0b3IpCisgICAg
ICAgICAgICByZXR1cm47CisKKyAgICAgICAgdGhpcy5fdXBkYXRlU29ydCgpOworICAgICAgICB0
aGlzLl90YWJsZS5yZWxvYWREYXRhKCk7CisgICAgfQorCisgICAgLy8gVGFibGUgZGVsZWdhdGUK
IAotICAgICAgICAgICAgaWYgKGNvb2tpZS50eXBlICE9PSBXSS5Db29raWVUeXBlLlJlcXVlc3Qp
Ci0gICAgICAgICAgICAgICAgZGF0YVsiZXhwaXJlcyJdID0gY29va2llLnNlc3Npb24gPyBXSS5V
SVN0cmluZygiU2Vzc2lvbiIpIDogbmV3IERhdGUoY29va2llLmV4cGlyZXMpLnRvTG9jYWxlU3Ry
aW5nKCk7CisgICAgdGFibGVDZWxsQ29udGV4dE1lbnVDbGlja2VkKHRhYmxlLCBjZWxsLCBjb2x1
bW4sIHJvd0luZGV4LCBldmVudCkKKyAgICB7CisgICAgICAgIGxldCBjb250ZXh0TWVudSA9IFdJ
LkNvbnRleHRNZW51LmNyZWF0ZUZyb21FdmVudChldmVudCk7CisKKyAgICAgICAgY29udGV4dE1l
bnUuYXBwZW5kU2VwYXJhdG9yKCk7CisgICAgICAgIGNvbnRleHRNZW51LmFwcGVuZEl0ZW0oV0ku
VUlTdHJpbmcoIkRlbGV0ZSIpLCAoKSA9PiB7CisgICAgICAgICAgICBpZiAodGFibGUuaXNSb3dT
ZWxlY3RlZChyb3dJbmRleCkpCisgICAgICAgICAgICAgICAgdGFibGUucmVtb3ZlU2VsZWN0ZWRS
b3dzKCk7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgdGFibGUucmVtb3ZlUm93
KHJvd0luZGV4KTsKKyAgICAgICAgfSk7CisgICAgICAgIGNvbnRleHRNZW51LmFwcGVuZFNlcGFy
YXRvcigpOworICAgIH0KKworICAgIHRhYmxlRGlkUmVtb3ZlUm93cyh0YWJsZSwgcm93SW5kZXhl
cykKKyAgICB7CisgICAgICAgIGlmICghcm93SW5kZXhlcy5sZW5ndGgpCisgICAgICAgICAgICBy
ZXR1cm47CiAKLSAgICAgICAgICAgIHZhciBub2RlID0gbmV3IFdJLkRhdGFHcmlkTm9kZShkYXRh
KTsKLSAgICAgICAgICAgIG5vZGUuY29va2llID0gY29va2llOworICAgICAgICBmb3IgKGxldCBp
ID0gcm93SW5kZXhlcy5sZW5ndGggLSAxOyBpID49IDA7IC0taSkgeworICAgICAgICAgICAgbGV0
IHJvd0luZGV4ID0gcm93SW5kZXhlc1tpXTsKKyAgICAgICAgICAgIGxldCBjb29raWUgPSB0aGlz
Ll9jb29raWVzW3Jvd0luZGV4XTsKKyAgICAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KGNvb2tpZSwg
Ik1pc3NpbmcgY29va2llIGZvciByb3cgIiArIHJvd0luZGV4KTsKKyAgICAgICAgICAgIGlmICgh
Y29va2llKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogCi0gICAgICAgICAgICB0aGlzLl9k
YXRhR3JpZC5hcHBlbmRDaGlsZChub2RlKTsKKyAgICAgICAgICAgIHRoaXMuX2Nvb2tpZXMuc3Bs
aWNlKHJvd0luZGV4LCAxKTsKKworICAgICAgICAgICAgbGV0IGNvb2tpZVVSTCA9IChjb29raWUu
c2VjdXJlID8gImh0dHBzOi8vIiA6ICJodHRwOi8vIikgKyBjb29raWUuZG9tYWluICsgY29va2ll
LnBhdGg7CisgICAgICAgICAgICBQYWdlQWdlbnQuZGVsZXRlQ29va2llKGNvb2tpZS5uYW1lLCBj
b29raWVVUkwpOwogICAgICAgICB9CiAgICAgfQogCisgICAgdGFibGVQb3B1bGF0ZUNlbGwodGFi
bGUsIGNlbGwsIGNvbHVtbiwgcm93SW5kZXgpCisgICAgeworICAgICAgICBsZXQgY29va2llID0g
dGhpcy5fY29va2llc1tyb3dJbmRleF07CisKKyAgICAgICAgY29uc3QgY2hlY2ttYXJrID0gIlx1
MjcxMyI7CisKKyAgICAgICAgc3dpdGNoIChjb2x1bW4uaWRlbnRpZmllcikgeworICAgICAgICBj
YXNlICJuYW1lIjoKKyAgICAgICAgICAgIGNlbGwudGV4dENvbnRlbnQgPSBjb29raWUubmFtZTsK
KyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlICJ2YWx1ZSI6CisgICAgICAgICAgICBj
ZWxsLnRleHRDb250ZW50ID0gY29va2llLnZhbHVlOworICAgICAgICAgICAgYnJlYWs7CisgICAg
ICAgIGNhc2UgImRvbWFpbiI6CisgICAgICAgICAgICBjZWxsLnRleHRDb250ZW50ID0gY29va2ll
LmRvbWFpbiB8fCBlbURhc2g7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSAicGF0
aCI6CisgICAgICAgICAgICBjZWxsLnRleHRDb250ZW50ID0gY29va2llLnBhdGggfHwgZW1EYXNo
OworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgImV4cGlyZXMiOgorICAgICAgICAg
ICAgY2VsbC50ZXh0Q29udGVudCA9IGNvb2tpZS5leHBpcmVzID8gbmV3IERhdGUoY29va2llLmV4
cGlyZXMpLnRvTG9jYWxlU3RyaW5nKCkgOiBXSS5VSVN0cmluZygiU2Vzc2lvbiIpOworICAgICAg
ICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgInNpemUiOgorICAgICAgICAgICAgY2VsbC50ZXh0
Q29udGVudCA9IE51bWJlci5ieXRlc1RvU3RyaW5nKGNvb2tpZS5zaXplKTsKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICBjYXNlICJzZWN1cmUiOgorICAgICAgICAgICAgY2VsbC50ZXh0Q29u
dGVudCA9IGNvb2tpZS5zZWN1cmUgPyBjaGVja21hcmsgOiB6ZXJvV2lkdGhTcGFjZTsKKyAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICBjYXNlICJodHRwT25seSI6CisgICAgICAgICAgICBjZWxs
LnRleHRDb250ZW50ID0gY29va2llLmh0dHBPbmx5ID8gY2hlY2ttYXJrIDogemVyb1dpZHRoU3Bh
Y2U7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSAic2FtZVNpdGUiOgorICAgICAg
ICAgICAgY2VsbC50ZXh0Q29udGVudCA9IGNvb2tpZS5zYW1lU2l0ZSA9PT0gV0kuQ29va2llLlNh
bWVTaXRlVHlwZS5Ob25lID8gZW1EYXNoIDogV0kuQ29va2llLmRpc3BsYXlOYW1lRm9yU2FtZVNp
dGVUeXBlKGNvb2tpZS5zYW1lU2l0ZSk7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQor
CisgICAgICAgIHJldHVybiBjZWxsOworICAgIH0KKworICAgIC8vIFByb3RlY3RlZAorCisgICAg
aW5pdGlhbExheW91dCgpCisgICAgeworICAgICAgICBzdXBlci5pbml0aWFsTGF5b3V0KCk7CisK
KyAgICAgICAgdGhpcy5fdGFibGUgPSBuZXcgV0kuVGFibGUoImNvb2tpZXMtdGFibGUiLCB0aGlz
LCB0aGlzLCAyMCk7CisgICAgICAgIHRoaXMuX3RhYmxlLmFsbG93c011bHRpcGxlU2VsZWN0aW9u
ID0gdHJ1ZTsKKworICAgICAgICB0aGlzLl9uYW1lQ29sdW1uID0gbmV3IFdJLlRhYmxlQ29sdW1u
KCJuYW1lIiwgV0kuVUlTdHJpbmcoIk5hbWUiKSwgeworICAgICAgICAgICAgbWluV2lkdGg6IDcw
LAorICAgICAgICAgICAgbWF4V2lkdGg6IDMwMCwKKyAgICAgICAgICAgIGluaXRpYWxXaWR0aDog
MjAwLAorICAgICAgICAgICAgcmVzaXplVHlwZTogV0kuVGFibGVDb2x1bW4uUmVzaXplVHlwZS5M
b2NrZWQsCisgICAgICAgIH0pOworCisgICAgICAgIHRoaXMuX3ZhbHVlQ29sdW1uID0gbmV3IFdJ
LlRhYmxlQ29sdW1uKCJ2YWx1ZSIsIFdJLlVJU3RyaW5nKCJWYWx1ZSIpLCB7CisgICAgICAgICAg
ICBtaW5XaWR0aDogMTAwLAorICAgICAgICAgICAgbWF4V2lkdGg6IDYwMCwKKyAgICAgICAgICAg
IGluaXRpYWxXaWR0aDogMjAwLAorICAgICAgICAgICAgaGlkZWFibGU6IGZhbHNlLAorICAgICAg
ICB9KTsKKworICAgICAgICB0aGlzLl9kb21haW5Db2x1bW4gPSBuZXcgV0kuVGFibGVDb2x1bW4o
ImRvbWFpbiIsIFdJLnVubG9jYWxpemVkU3RyaW5nKCJEb21haW4iKSwgeworICAgICAgICAgICAg
bWluV2lkdGg6IDEwMCwKKyAgICAgICAgICAgIG1heFdpZHRoOiAyMDAsCisgICAgICAgICAgICBp
bml0aWFsV2lkdGg6IDEyMCwKKyAgICAgICAgfSk7CisKKyAgICAgICAgdGhpcy5fcGF0aENvbHVt
biA9IG5ldyBXSS5UYWJsZUNvbHVtbigicGF0aCIsIFdJLnVubG9jYWxpemVkU3RyaW5nKCJQYXRo
IiksIHsKKyAgICAgICAgICAgIG1pbldpZHRoOiA1MCwKKyAgICAgICAgICAgIG1heFdpZHRoOiAz
MDAsCisgICAgICAgICAgICBpbml0aWFsV2lkdGg6IDEwMCwKKyAgICAgICAgfSk7CisKKyAgICAg
ICAgdGhpcy5fZXhwaXJlc0NvbHVtbiA9IG5ldyBXSS5UYWJsZUNvbHVtbigiZXhwaXJlcyIsIFdJ
LnVubG9jYWxpemVkU3RyaW5nKCJFeHBpcmVzIiksIHsKKyAgICAgICAgICAgIG1pbldpZHRoOiAx
MDAsCisgICAgICAgICAgICBtYXhXaWR0aDogMjAwLAorICAgICAgICAgICAgaW5pdGlhbFdpZHRo
OiAxNTAsCisgICAgICAgIH0pOworCisgICAgICAgIHRoaXMuX3NpemVDb2x1bW4gPSBuZXcgV0ku
VGFibGVDb2x1bW4oInNpemUiLCBXSS51bmxvY2FsaXplZFN0cmluZygiU2l6ZSIpLCB7CisgICAg
ICAgICAgICBtaW5XaWR0aDogNTAsCisgICAgICAgICAgICBtYXhXaWR0aDogODAsCisgICAgICAg
ICAgICBpbml0aWFsV2lkdGg6IDY1LAorICAgICAgICAgICAgYWxpZ246ICJyaWdodCIsCisgICAg
ICAgIH0pOworCisgICAgICAgIHRoaXMuX3NlY3VyZUNvbHVtbiA9IG5ldyBXSS5UYWJsZUNvbHVt
bigic2VjdXJlIiwgV0kudW5sb2NhbGl6ZWRTdHJpbmcoIlNlY3VyZSIpLCB7CisgICAgICAgICAg
ICBtaW5XaWR0aDogNzAsCisgICAgICAgICAgICBtYXhXaWR0aDogNzAsCisgICAgICAgICAgICBh
bGlnbjogImNlbnRlciIsCisgICAgICAgIH0pOworCisgICAgICAgIHRoaXMuX2h0dHBPbmx5Q29s
dW1uID0gbmV3IFdJLlRhYmxlQ29sdW1uKCJodHRwT25seSIsIFdJLnVubG9jYWxpemVkU3RyaW5n
KCJIdHRwT25seSIpLCB7CisgICAgICAgICAgICBtaW5XaWR0aDogODAsCisgICAgICAgICAgICBt
YXhXaWR0aDogODAsCisgICAgICAgICAgICBhbGlnbjogImNlbnRlciIsCisgICAgICAgIH0pOwor
CisgICAgICAgIHRoaXMuX3NhbWVTaXRlQ29sdW1uID0gbmV3IFdJLlRhYmxlQ29sdW1uKCJzYW1l
U2l0ZSIsIFdJLnVubG9jYWxpemVkU3RyaW5nKCJTYW1lU2l0ZSIpLCB7CisgICAgICAgICAgICBt
aW5XaWR0aDogNDAsCisgICAgICAgICAgICBtYXhXaWR0aDogODAsCisgICAgICAgICAgICBpbml0
aWFsV2lkdGg6IDcwLAorICAgICAgICAgICAgYWxpZ246ICJjZW50ZXIiLAorICAgICAgICB9KTsK
KworICAgICAgICB0aGlzLl90YWJsZS5hZGRDb2x1bW4odGhpcy5fbmFtZUNvbHVtbik7CisgICAg
ICAgIHRoaXMuX3RhYmxlLmFkZENvbHVtbih0aGlzLl92YWx1ZUNvbHVtbik7CisgICAgICAgIHRo
aXMuX3RhYmxlLmFkZENvbHVtbih0aGlzLl9kb21haW5Db2x1bW4pOworICAgICAgICB0aGlzLl90
YWJsZS5hZGRDb2x1bW4odGhpcy5fcGF0aENvbHVtbik7CisgICAgICAgIHRoaXMuX3RhYmxlLmFk
ZENvbHVtbih0aGlzLl9leHBpcmVzQ29sdW1uKTsKKyAgICAgICAgdGhpcy5fdGFibGUuYWRkQ29s
dW1uKHRoaXMuX3NpemVDb2x1bW4pOworICAgICAgICB0aGlzLl90YWJsZS5hZGRDb2x1bW4odGhp
cy5fc2VjdXJlQ29sdW1uKTsKKyAgICAgICAgdGhpcy5fdGFibGUuYWRkQ29sdW1uKHRoaXMuX2h0
dHBPbmx5Q29sdW1uKTsKKyAgICAgICAgdGhpcy5fdGFibGUuYWRkQ29sdW1uKHRoaXMuX3NhbWVT
aXRlQ29sdW1uKTsKKworICAgICAgICBpZiAoIXRoaXMuX3RhYmxlLnNvcnRDb2x1bW5JZGVudGlm
aWVyKSB7CisgICAgICAgICAgICB0aGlzLl90YWJsZS5zb3J0T3JkZXIgPSBXSS5UYWJsZS5Tb3J0
T3JkZXIuQXNjZW5kaW5nOworICAgICAgICAgICAgdGhpcy5fdGFibGUuc29ydENvbHVtbklkZW50
aWZpZXIgPSAibmFtZSI7CisgICAgICAgICB9CisKKyAgICAgICAgdGhpcy5hZGRTdWJ2aWV3KHRo
aXMuX3RhYmxlKTsKKworICAgICAgICB0aGlzLl90YWJsZS5lbGVtZW50LmFkZEV2ZW50TGlzdGVu
ZXIoImtleWRvd24iLCB0aGlzLl9oYW5kbGVUYWJsZUtleURvd24uYmluZCh0aGlzKSk7CisKKyAg
ICAgICAgdGhpcy5fcmVsb2FkQ29va2llcygpOworICAgIH0KKworICAgIC8vIFByaXZhdGUKKwog
ICAgIF9maWx0ZXJDb29raWVzKGNvb2tpZXMpCiAgICAgewogICAgICAgICBsZXQgcmVzb3VyY2VN
YXRjaGVzU3RvcmFnZURvbWFpbiA9IChyZXNvdXJjZSkgPT4gewpAQCAtMTc2LDYyICsyNjUsNzgg
QEAgV0kuQ29va2llU3RvcmFnZUNvbnRlbnRWaWV3ID0gY2xhc3MgQ29va2llU3RvcmFnZUNvbnRl
bnRWaWV3IGV4dGVuZHMgV0kuQ29udGVudFYKICAgICAgICAgcmV0dXJuIGNvb2tpZXNGb3JEb21h
aW47CiAgICAgfQogCi0gICAgX3NvcnREYXRhR3JpZCgpCisgICAgX2dlbmVyYXRlU29ydENvbXBh
cmF0b3IoKQogICAgIHsKLSAgICAgICAgZnVuY3Rpb24gbG9jYWxlQ29tcGFyZShmaWVsZCwgbm9k
ZUEsIG5vZGVCKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1cm4gKG5vZGVBLmRhdGFbZmll
bGRdICsgIiIpLmV4dGVuZGVkTG9jYWxlQ29tcGFyZShub2RlQi5kYXRhW2ZpZWxkXSArICIiKTsK
LSAgICAgICAgfQotCi0gICAgICAgIGZ1bmN0aW9uIG51bWJlckNvbXBhcmUoZmllbGQsIG5vZGVB
LCBub2RlQikKLSAgICAgICAgewotICAgICAgICAgICAgcmV0dXJuIG5vZGVBLmNvb2tpZVtmaWVs
ZF0gLSBub2RlQi5jb29raWVbZmllbGRdOworICAgICAgICBsZXQgc29ydENvbHVtbklkZW50aWZp
ZXIgPSB0aGlzLl90YWJsZS5zb3J0Q29sdW1uSWRlbnRpZmllcjsKKyAgICAgICAgaWYgKCFzb3J0
Q29sdW1uSWRlbnRpZmllcikgeworICAgICAgICAgICAgdGhpcy5fc29ydENvbXBhcmF0b3IgPSBu
dWxsOworICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgZnVuY3Rpb24g
ZXhwaXJlc0NvbXBhcmUobm9kZUEsIG5vZGVCKQotICAgICAgICB7Ci0gICAgICAgICAgICBpZiAo
bm9kZUEuY29va2llLnNlc3Npb24gIT09IG5vZGVCLmNvb2tpZS5zZXNzaW9uKQotICAgICAgICAg
ICAgICAgIHJldHVybiBub2RlQS5jb29raWUuc2Vzc2lvbiA/IC0xIDogMTsKLQotICAgICAgICAg
ICAgaWYgKG5vZGVBLmNvb2tpZS5zZXNzaW9uKQotICAgICAgICAgICAgICAgIHJldHVybiAwOwor
ICAgICAgICBsZXQgY29tcGFyYXRvciA9IG51bGw7CisKKyAgICAgICAgc3dpdGNoIChzb3J0Q29s
dW1uSWRlbnRpZmllcikgeworICAgICAgICBjYXNlICJuYW1lIjoKKyAgICAgICAgY2FzZSAidmFs
dWUiOgorICAgICAgICBjYXNlICJkb21haW4iOgorICAgICAgICBjYXNlICJwYXRoIjoKKyAgICAg
ICAgY2FzZSAic2FtZVNpdGUiOgorICAgICAgICAgICAgY29tcGFyYXRvciA9IChhLCBiKSA9PiAo
YVtzb3J0Q29sdW1uSWRlbnRpZmllcl0gfHwgIiIpLmV4dGVuZGVkTG9jYWxlQ29tcGFyZShiW3Nv
cnRDb2x1bW5JZGVudGlmaWVyXSB8fCAiIik7CisgICAgICAgICAgICBicmVhazsKKworICAgICAg
ICBjYXNlICJzaXplIjoKKyAgICAgICAgY2FzZSAiaHR0cE9ubHkiOgorICAgICAgICBjYXNlICJz
ZWN1cmUiOgorICAgICAgICAgICAgY29tcGFyYXRvciA9IChhLCBiKSA9PiBhW3NvcnRDb2x1bW5J
ZGVudGlmaWVyXSAtIGJbc29ydENvbHVtbklkZW50aWZpZXJdOworICAgICAgICAgICAgYnJlYWs7
CisKKyAgICAgICAgY2FzZSAiZXhwaXJlcyI6CisgICAgICAgICAgICBjb21wYXJhdG9yID0gKGEs
IGIpID0+IHsKKyAgICAgICAgICAgICAgICBpZiAoIWEuZXhwaXJlcykKKyAgICAgICAgICAgICAg
ICAgICAgcmV0dXJuIDE7CisgICAgICAgICAgICAgICAgaWYgKCFiLmV4cGlyZXMpCisgICAgICAg
ICAgICAgICAgICAgIHJldHVybiAtMTsKKyAgICAgICAgICAgICAgICByZXR1cm4gYS5leHBpcmVz
IC0gYi5leHBpcmVzOworICAgICAgICAgICAgfTsKKyAgICAgICAgICAgIGJyZWFrOwogCi0gICAg
ICAgICAgICByZXR1cm4gbm9kZUEuY29va2llLmV4cGlyZXMgLSBub2RlQi5jb29raWUuZXhwaXJl
czsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KCJVbmV4cGVj
dGVkIHNvcnQgY29sdW1uIiwgc29ydENvbHVtbklkZW50aWZpZXIpOworICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICB9CiAKLSAgICAgICAgdmFyIGNvbXBhcmF0b3I7Ci0gICAgICAgIHN3aXRj
aCAodGhpcy5fZGF0YUdyaWQuc29ydENvbHVtbklkZW50aWZpZXIpIHsKLSAgICAgICAgICAgIGNh
c2UgInZhbHVlIjogY29tcGFyYXRvciA9IGxvY2FsZUNvbXBhcmUuYmluZCh0aGlzLCAidmFsdWUi
KTsgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlICJkb21haW4iOiBjb21wYXJhdG9yID0gbG9jYWxl
Q29tcGFyZS5iaW5kKHRoaXMsICJkb21haW4iKTsgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlICJw
YXRoIjogY29tcGFyYXRvciA9IGxvY2FsZUNvbXBhcmUuYmluZCh0aGlzLCAicGF0aCIpOyBicmVh
azsKLSAgICAgICAgICAgIGNhc2UgImV4cGlyZXMiOiBjb21wYXJhdG9yID0gZXhwaXJlc0NvbXBh
cmU7IGJyZWFrOwotICAgICAgICAgICAgY2FzZSAic2l6ZSI6IGNvbXBhcmF0b3IgPSBudW1iZXJD
b21wYXJlLmJpbmQodGhpcywgInNpemUiKTsgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlICJodHRw
IjogY29tcGFyYXRvciA9IGxvY2FsZUNvbXBhcmUuYmluZCh0aGlzLCAiaHR0cCIpOyBicmVhazsK
LSAgICAgICAgICAgIGNhc2UgInNlY3VyZSI6IGNvbXBhcmF0b3IgPSBsb2NhbGVDb21wYXJlLmJp
bmQodGhpcywgInNlY3VyZSIpOyBicmVhazsKLSAgICAgICAgICAgIGNhc2UgInNhbWVTaXRlIjog
Y29tcGFyYXRvciA9IGxvY2FsZUNvbXBhcmUuYmluZCh0aGlzLCAic2FtZVNpdGUiKTsgYnJlYWs7
Ci0gICAgICAgICAgICBjYXNlICJuYW1lIjoKLSAgICAgICAgICAgIGRlZmF1bHQ6IGNvbXBhcmF0
b3IgPSBsb2NhbGVDb21wYXJlLmJpbmQodGhpcywgIm5hbWUiKTsgYnJlYWs7Ci0gICAgICAgIH0K
KyAgICAgICAgbGV0IHJldmVyc2VGYWN0b3IgPSB0aGlzLl90YWJsZS5zb3J0T3JkZXIgPT09IFdJ
LlRhYmxlLlNvcnRPcmRlci5Bc2NlbmRpbmcgPyAxIDogLTE7CisgICAgICAgIHRoaXMuX3NvcnRD
b21wYXJhdG9yID0gKGEsIGIpID0+IHJldmVyc2VGYWN0b3IgKiBjb21wYXJhdG9yKGEsIGIpOwor
ICAgIH0KKworICAgIF9yZWZyZXNoQnV0dG9uQ2xpY2tlZChldmVudCkKKyAgICB7CisgICAgICAg
IHRoaXMuX3JlbG9hZENvb2tpZXMoKTsKKyAgICB9CiAKLSAgICAgICAgY29uc29sZS5hc3NlcnQo
Y29tcGFyYXRvcik7Ci0gICAgICAgIHRoaXMuX2RhdGFHcmlkLnNvcnROb2Rlcyhjb21wYXJhdG9y
KTsKKyAgICBfcmVsb2FkQ29va2llcygpCisgICAgeworICAgICAgICBQYWdlQWdlbnQuZ2V0Q29v
a2llcygpLnRoZW4oKHBheWxvYWQpID0+IHsKKyAgICAgICAgICAgIHRoaXMuX2Nvb2tpZXMgPSB0
aGlzLl9maWx0ZXJDb29raWVzKHBheWxvYWQuY29va2llcyk7CisgICAgICAgICAgICB0aGlzLl91
cGRhdGVTb3J0KCk7CisgICAgICAgICAgICB0aGlzLl90YWJsZS5yZWxvYWREYXRhKCk7CisgICAg
ICAgIH0pLmNhdGNoKChlcnJvcikgPT4geworICAgICAgICAgICAgY29uc29sZS5lcnJvcigiQ291
bGQgbm90IGZldGNoIGNvb2tpZXM6ICIsIGVycm9yKTsKKyAgICAgICAgfSk7CiAgICAgfQogCi0g
ICAgX2RlbGV0ZUNhbGxiYWNrKG5vZGUpCisgICAgX3VwZGF0ZVNvcnQoKQogICAgIHsKLSAgICAg
ICAgaWYgKCFub2RlIHx8ICFub2RlLmNvb2tpZSkKKyAgICAgICAgaWYgKCF0aGlzLl9zb3J0Q29t
cGFyYXRvcikKICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICB2YXIgY29va2llID0gbm9k
ZS5jb29raWU7Ci0gICAgICAgIHZhciBjb29raWVVUkwgPSAoY29va2llLnNlY3VyZSA/ICJodHRw
czovLyIgOiAiaHR0cDovLyIpICsgY29va2llLmRvbWFpbiArIGNvb2tpZS5wYXRoOwotICAgICAg
ICBQYWdlQWdlbnQuZGVsZXRlQ29va2llKGNvb2tpZS5uYW1lLCBjb29raWVVUkwpOwotCi0gICAg
ICAgIHRoaXMudXBkYXRlKCk7CisgICAgICAgIHRoaXMuX2Nvb2tpZXMuc29ydCh0aGlzLl9zb3J0
Q29tcGFyYXRvcik7CiAgICAgfQogCi0gICAgX3JlZnJlc2hCdXR0b25DbGlja2VkKGV2ZW50KQor
ICAgIF9oYW5kbGVUYWJsZUtleURvd24oZXZlbnQpCiAgICAgewotICAgICAgICB0aGlzLnVwZGF0
ZSgpOworICAgICAgICBpZiAoZXZlbnQua2V5Q29kZSA9PT0gV0kuS2V5Ym9hcmRTaG9ydGN1dC5L
ZXkuQmFja3NwYWNlLmtleUNvZGUgfHwgZXZlbnQua2V5Q29kZSA9PT0gV0kuS2V5Ym9hcmRTaG9y
dGN1dC5LZXkuRGVsZXRlLmtleUNvZGUpCisgICAgICAgICAgICB0aGlzLl90YWJsZS5yZW1vdmVT
ZWxlY3RlZFJvd3MoKTsKICAgICB9CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9UYWJsZS5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RhYmxlLmpzCmluZGV4IDUxMjA4ZDhiMWVkYzU4MTBlM2Uy
ZGUyZDY4NDdhZTliYzUxMjc4MDIuLmNkY2ExNmU2NDc4NjZmN2FmYWZkZmEyNDIyOWY5NGE3YWNk
OWYwYzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Zp
ZXdzL1RhYmxlLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1Zp
ZXdzL1RhYmxlLmpzCkBAIC0yMzUsNiArMjM1LDExIEBAIFdJLlRhYmxlID0gY2xhc3MgVGFibGUg
ZXh0ZW5kcyBXSS5WaWV3CiAgICAgICAgICAgICB0aGlzLl9ub3RpZnlTZWxlY3Rpb25EaWRDaGFu
Z2UoKTsKICAgICB9CiAKKyAgICBpc1Jvd1NlbGVjdGVkKHJvd0luZGV4KQorICAgIHsKKyAgICAg
ICAgcmV0dXJuIHRoaXMuX3NlbGVjdGVkUm93cy5oYXMocm93SW5kZXgpOworICAgIH0KKwogICAg
IHJlc2l6ZSgpCiAgICAgewogICAgICAgICB0aGlzLl9jYWNoZWRXaWR0aCA9IE5hTjsKQEAgLTMy
MSw3ICszMjYsNyBAQCBXSS5UYWJsZSA9IGNsYXNzIFRhYmxlIGV4dGVuZHMgV0kuVmlldwogICAg
ICAgICBjb25zb2xlLmFzc2VydCghZXh0ZW5kU2VsZWN0aW9uIHx8IHRoaXMuX2FsbG93c011bHRp
cGxlU2VsZWN0aW9uLCAiQ2Fubm90IGV4dGVuZCBzZWxlY3Rpb24gd2l0aCBtdWx0aXBsZSBzZWxl
Y3Rpb24gZGlzYWJsZWQuIik7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHJvd0luZGV4ID49IDAg
JiYgcm93SW5kZXggPCB0aGlzLm51bWJlck9mUm93cyk7CiAKLSAgICAgICAgaWYgKHRoaXMuX2lz
Um93U2VsZWN0ZWQocm93SW5kZXgpKSB7CisgICAgICAgIGlmICh0aGlzLmlzUm93U2VsZWN0ZWQo
cm93SW5kZXgpKSB7CiAgICAgICAgICAgICBpZiAoIWV4dGVuZFNlbGVjdGlvbikKICAgICAgICAg
ICAgICAgICB0aGlzLl9kZXNlbGVjdEFsbEFuZFNlbGVjdChyb3dJbmRleCk7CiAgICAgICAgICAg
ICByZXR1cm47CkBAIC0zNDYsNyArMzUxLDcgQEAgV0kuVGFibGUgPSBjbGFzcyBUYWJsZSBleHRl
bmRzIFdJLlZpZXcKICAgICB7CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KHJvd0luZGV4ID49IDAg
JiYgcm93SW5kZXggPCB0aGlzLm51bWJlck9mUm93cyk7CiAKLSAgICAgICAgaWYgKCF0aGlzLl9p
c1Jvd1NlbGVjdGVkKHJvd0luZGV4KSkKKyAgICAgICAgaWYgKCF0aGlzLmlzUm93U2VsZWN0ZWQo
cm93SW5kZXgpKQogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAgICAgIGxldCBvbGRTZWxlY3Rl
ZFJvdyA9IHRoaXMuX2NhY2hlZFJvd3MuZ2V0KHJvd0luZGV4KTsKQEAgLTM5MCw3ICszOTUsNyBA
QCBXSS5UYWJsZSA9IGNsYXNzIFRhYmxlIGV4dGVuZHMgV0kuVmlldwogICAgIHsKICAgICAgICAg
Y29uc29sZS5hc3NlcnQocm93SW5kZXggPj0gMCAmJiByb3dJbmRleCA8IHRoaXMubnVtYmVyT2ZS
b3dzKTsKIAotICAgICAgICBpZiAodGhpcy5faXNSb3dTZWxlY3RlZChyb3dJbmRleCkpCisgICAg
ICAgIGlmICh0aGlzLmlzUm93U2VsZWN0ZWQocm93SW5kZXgpKQogICAgICAgICAgICAgdGhpcy5k
ZXNlbGVjdFJvdyhyb3dJbmRleCk7CiAKICAgICAgICAgdGhpcy5fcmVtb3ZlUm93cyhuZXcgV0ku
SW5kZXhTZXQoW3Jvd0luZGV4XSkpOwpAQCAtNzk3LDcgKzgwMiw3IEBAIFdJLlRhYmxlID0gY2xh
c3MgVGFibGUgZXh0ZW5kcyBXSS5WaWV3CiAgICAgICAgIGxldCByb3cgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCJsaSIpOwogICAgICAgICByb3cuX19pbmRleCA9IHJvd0luZGV4OwogICAgICAg
ICByb3cuX193aWR0aEdlbmVyYXRpb24gPSAwOwotICAgICAgICBpZiAodGhpcy5faXNSb3dTZWxl
Y3RlZChyb3dJbmRleCkpCisgICAgICAgIGlmICh0aGlzLmlzUm93U2VsZWN0ZWQocm93SW5kZXgp
KQogICAgICAgICAgICAgcm93LmNsYXNzTGlzdC5hZGQoInNlbGVjdGVkIik7CiAKICAgICAgICAg
dGhpcy5fY2FjaGVkUm93cy5zZXQocm93SW5kZXgsIHJvdyk7CkBAIC0xMzIxLDcgKzEzMjYsNyBA
QCBXSS5UYWJsZSA9IGNsYXNzIFRhYmxlIGV4dGVuZHMgV0kuVmlldwogICAgICAgICBsZXQgY29s
dW1uID0gdGhpcy5fdmlzaWJsZUNvbHVtbnNbY29sdW1uSW5kZXhdOwogICAgICAgICBsZXQgcm93
SW5kZXggPSByb3cuX19pbmRleDsKIAotICAgICAgICBpZiAodGhpcy5faXNSb3dTZWxlY3RlZChy
b3dJbmRleCkpIHsKKyAgICAgICAgaWYgKHRoaXMuaXNSb3dTZWxlY3RlZChyb3dJbmRleCkpIHsK
ICAgICAgICAgICAgIGlmIChldmVudC5tZXRhS2V5KQogICAgICAgICAgICAgICAgIHRoaXMuZGVz
ZWxlY3RSb3cocm93SW5kZXgpCiAgICAgICAgICAgICBlbHNlCkBAIC0xNDUyLDcgKzE0NTcsNyBA
QCBXSS5UYWJsZSA9IGNsYXNzIFRhYmxlIGV4dGVuZHMgV0kuVmlldwogICAgICAgICAgICAgICAg
IHRoaXMuX2NhY2hlZFJvd3Muc2V0KG5ld0luZGV4LCByb3cpOwogICAgICAgICAgICAgfQogCi0g
ICAgICAgICAgICBpZiAodGhpcy5faXNSb3dTZWxlY3RlZChpbmRleCkpIHsKKyAgICAgICAgICAg
IGlmICh0aGlzLmlzUm93U2VsZWN0ZWQoaW5kZXgpKSB7CiAgICAgICAgICAgICAgICAgdGhpcy5f
c2VsZWN0ZWRSb3dzLmRlbGV0ZShpbmRleCk7CiAgICAgICAgICAgICAgICAgdGhpcy5fc2VsZWN0
ZWRSb3dzLmFkZChuZXdJbmRleCk7CiAgICAgICAgICAgICAgICAgaWYgKHRoaXMuX3NlbGVjdGVk
Um93SW5kZXggPT09IGluZGV4KQpAQCAtMTQ5MywxMSArMTQ5OCw2IEBAIFdJLlRhYmxlID0gY2xh
c3MgVGFibGUgZXh0ZW5kcyBXSS5WaWV3CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBfaXNSb3dT
ZWxlY3RlZChyb3dJbmRleCkKLSAgICB7Ci0gICAgICAgIHJldHVybiB0aGlzLl9zZWxlY3RlZFJv
d3MuaGFzKHJvd0luZGV4KTsKLSAgICB9Ci0KICAgICBfbm90aWZ5U2VsZWN0aW9uRGlkQ2hhbmdl
KCkKICAgICB7CiAgICAgICAgIGlmICh0aGlzLl9zdXBwcmVzc05leHRTZWxlY3Rpb25EaWRDaGFu
Z2UpIHsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>353723</attachid>
            <date>2018-11-02 12:13:59 -0700</date>
            <delta_ts>2018-11-02 12:39:11 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-66381-20181102121358.patch</filename>
            <type>text/plain</type>
            <size>23111</size>
            <attacher name="Matt Baker">mattbaker</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjM3NzQwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwppbmRleCA3
OGYwMmE2OTAwOGQ5YWYyZGI3NTk4MmU4Zjk0N2RmMjlkMjQ3MzJkLi5iOTQ0ZWNjM2M5YjA5M2Jl
Y2U0OWZiZDY3NmM0YTUyYWJjZTk4MDkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9y
VUkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1MSBAQAorMjAxOC0xMS0wMiAgTWF0dCBCYWtlciAgPG1hdHRiYWtlckBhcHBsZS5jb20+
CisKKyAgICAgICAgV2ViIEluc3BlY3Rvcjogc3VwcG9ydCBtdWx0aXBsZSBzZWxlY3Rpb24vZGVs
ZXRpb24gb2YgY29va2llIHJlY29yZHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTY2MzgxCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8xOTI4MTUyNT4K
KworICAgICAgICBSZXZpZXdlZCBieSBEZXZpbiBSb3Vzc28uCisKKyAgICAgICAgKiBMb2NhbGl6
YXRpb25zL2VuLmxwcm9qL2xvY2FsaXplZFN0cmluZ3MuanM6CisKKyAgICAgICAgKiBVc2VySW50
ZXJmYWNlL1ZpZXdzL0Nvb2tpZVN0b3JhZ2VDb250ZW50Vmlldy5qczoKKyAgICAgICAgKFdJLkNv
b2tpZVN0b3JhZ2VDb250ZW50Vmlldyk6CisgICAgICAgIChXSS5Db29raWVTdG9yYWdlQ29udGVu
dFZpZXcucHJvdG90eXBlLmdldCBzY3JvbGxhYmxlRWxlbWVudHMpOgorICAgICAgICAoV0kuQ29v
a2llU3RvcmFnZUNvbnRlbnRWaWV3LnByb3RvdHlwZS50YWJsZU51bWJlck9mUm93cyk6CisgICAg
ICAgIChXSS5Db29raWVTdG9yYWdlQ29udGVudFZpZXcucHJvdG90eXBlLnRhYmxlU29ydENoYW5n
ZWQpOgorICAgICAgICAoV0kuQ29va2llU3RvcmFnZUNvbnRlbnRWaWV3LnByb3RvdHlwZS50YWJs
ZUNlbGxDb250ZXh0TWVudUNsaWNrZWQpOgorICAgICAgICAoV0kuQ29va2llU3RvcmFnZUNvbnRl
bnRWaWV3LnByb3RvdHlwZS50YWJsZURpZFJlbW92ZVJvd3MpOgorICAgICAgICAoV0kuQ29va2ll
U3RvcmFnZUNvbnRlbnRWaWV3LnByb3RvdHlwZS50YWJsZVBvcHVsYXRlQ2VsbCk6CisgICAgICAg
IChXSS5Db29raWVTdG9yYWdlQ29udGVudFZpZXcucHJvdG90eXBlLmluaXRpYWxMYXlvdXQpOgor
ICAgICAgICAoV0kuQ29va2llU3RvcmFnZUNvbnRlbnRWaWV3LnByb3RvdHlwZS5fZ2VuZXJhdGVT
b3J0Q29tcGFyYXRvcik6CisgICAgICAgIChXSS5Db29raWVTdG9yYWdlQ29udGVudFZpZXcucHJv
dG90eXBlLl9yZWZyZXNoQnV0dG9uQ2xpY2tlZCk6CisgICAgICAgIChXSS5Db29raWVTdG9yYWdl
Q29udGVudFZpZXcucHJvdG90eXBlLl9yZWxvYWRDb29raWVzKToKKyAgICAgICAgKFdJLkNvb2tp
ZVN0b3JhZ2VDb250ZW50Vmlldy5wcm90b3R5cGUuX3VwZGF0ZVNvcnQpOgorICAgICAgICAoV0ku
Q29va2llU3RvcmFnZUNvbnRlbnRWaWV3LnByb3RvdHlwZS5faGFuZGxlVGFibGVLZXlEb3duKToK
KyAgICAgICAgKFdJLkNvb2tpZVN0b3JhZ2VDb250ZW50Vmlldy5wcm90b3R5cGUudXBkYXRlKTog
RGVsZXRlZC4KKyAgICAgICAgKFdJLkNvb2tpZVN0b3JhZ2VDb250ZW50Vmlldy5wcm90b3R5cGUu
X3JlYnVpbGRUYWJsZSk6IERlbGV0ZWQuCisgICAgICAgIChXSS5Db29raWVTdG9yYWdlQ29udGVu
dFZpZXcucHJvdG90eXBlLl9zb3J0RGF0YUdyaWQubG9jYWxlQ29tcGFyZSk6IERlbGV0ZWQuCisg
ICAgICAgIChXSS5Db29raWVTdG9yYWdlQ29udGVudFZpZXcucHJvdG90eXBlLl9zb3J0RGF0YUdy
aWQubnVtYmVyQ29tcGFyZSk6IERlbGV0ZWQuCisgICAgICAgIChXSS5Db29raWVTdG9yYWdlQ29u
dGVudFZpZXcucHJvdG90eXBlLl9zb3J0RGF0YUdyaWQuZXhwaXJlc0NvbXBhcmUpOiBEZWxldGVk
LgorICAgICAgICAoV0kuQ29va2llU3RvcmFnZUNvbnRlbnRWaWV3LnByb3RvdHlwZS5fc29ydERh
dGFHcmlkKTogRGVsZXRlZC4KKyAgICAgICAgKFdJLkNvb2tpZVN0b3JhZ2VDb250ZW50Vmlldy5w
cm90b3R5cGUuX2RlbGV0ZUNhbGxiYWNrKTogRGVsZXRlZC4KKyAgICAgICAgUmVwbGFjZSBEYXRh
R3JpZCB3aXRoIFRhYmxlLiBUaGUgY29udGVudCB2aWV3IHNlcnZlcyBhcyB0aGUgdGFibGUKKyAg
ICAgICAgZGVsZWdhdGUgYW5kIGRhdGEgc291cmNlLCBhbmQgaGFuZGxlcyBkZWxldGUgYW5kIGJh
Y2tzcGFjZSBrZXkgZXZlbnRzCisgICAgICAgIHRvIGFsbG93IGRlbGV0aW5nIHRoZSBzZWxlY3Rl
ZCBjb29raWVzLiBDb29raWVzIG1heSBhbHNvIGJlIGRlbGV0ZWQgZnJvbQorICAgICAgICB0aGUg
dGFibGUgY29udGV4dCBtZW51IGFuZCBhIG5ldyBidXR0b24gaW4gdGhlIG5hdmlnYXRpb24gYmFy
LgorCisgICAgICAgICogVXNlckludGVyZmFjZS9WaWV3cy9UYWJsZS5qczoKKyAgICAgICAgKFdJ
LlRhYmxlLnByb3RvdHlwZS5pc1Jvd1NlbGVjdGVkKToKKyAgICAgICAgKFdJLlRhYmxlLnByb3Rv
dHlwZS5zZWxlY3RSb3cpOgorICAgICAgICAoV0kuVGFibGUucHJvdG90eXBlLmRlc2VsZWN0Um93
KToKKyAgICAgICAgKFdJLlRhYmxlLnByb3RvdHlwZS5yZW1vdmVSb3cpOgorICAgICAgICAoV0ku
VGFibGUucHJvdG90eXBlLl9nZXRPckNyZWF0ZVJvdyk6CisgICAgICAgIChXSS5UYWJsZS5wcm90
b3R5cGUuX2hhbmRsZU1vdXNlRG93bik6CisgICAgICAgIChXSS5UYWJsZS5wcm90b3R5cGUuX3Jl
bW92ZVJvd3MpOgorICAgICAgICAoV0kuVGFibGUucHJvdG90eXBlLl9pc1Jvd1NlbGVjdGVkKTog
RGVsZXRlZC4KKyAgICAgICAgTWFrZSBgaXNTZWxlY3RlZFJvd2AgcHVibGljLiBJdCBpcyBtb3Jl
IGNvbnZlbmllbnQgYW5kIGVmZmljaWVudCB0aGFuCisgICAgICAgIGNhbGxpbmcgYFRhYmxlLnBy
b3RvdHlwZS5zZWxlY3RlZFJvd3MuaW5jbHVkZXMocm93SW5kZXgpYC4KKwogMjAxOC0xMS0wMSAg
RGV2aW4gUm91c3NvICA8ZHJvdXNzb0BhcHBsZS5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3Rv
cjogVmlldzogaW50cm9kdWNlIGEgZGlkTGF5b3V0U3VidHJlZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkluc3BlY3RvclVJL0xvY2FsaXphdGlvbnMvZW4ubHByb2ovbG9jYWxpemVkU3RyaW5ncy5q
cyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Mb2NhbGl6YXRpb25zL2VuLmxwcm9qL2xvY2FsaXpl
ZFN0cmluZ3MuanMKaW5kZXggNGRiOGMxNjJmMzRmN2IxZWFkY2ViZGE3OWM1NGE3YTI0NmJhOGE3
Mi4uNmRmNmI0ZTNiZGU1Zjc3Yjk3ZTIwYTgzMDJkY2VkYWY1MzFiMjZkZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkluc3BlY3RvclVJL0xvY2FsaXphdGlvbnMvZW4ubHByb2ovbG9jYWxpemVkU3Ry
aW5ncy5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvTG9jYWxpemF0aW9ucy9lbi5scHJv
ai9sb2NhbGl6ZWRTdHJpbmdzLmpzCkBAIC0zNzUsNyArMzc1LDYgQEAgbG9jYWxpemVkU3RyaW5n
c1siRXhwYW5kIEFsbCJdID0gIkV4cGFuZCBBbGwiOwogbG9jYWxpemVkU3RyaW5nc1siRXhwYW5k
IGNvbHVtbnMiXSA9ICJFeHBhbmQgY29sdW1ucyI7CiBsb2NhbGl6ZWRTdHJpbmdzWyJFeHBhbmRl
ZCJdID0gIkV4cGFuZGVkIjsKIGxvY2FsaXplZFN0cmluZ3NbIkV4cGVyaW1lbnRhbCJdID0gIkV4
cGVyaW1lbnRhbCI7Ci1sb2NhbGl6ZWRTdHJpbmdzWyJFeHBpcmVzIl0gPSAiRXhwaXJlcyI7CiBs
b2NhbGl6ZWRTdHJpbmdzWyJFeHBvcnQiXSA9ICJFeHBvcnQiOwogbG9jYWxpemVkU3RyaW5nc1si
RXhwb3J0IEhBUiJdID0gIkV4cG9ydCBIQVIiOwogbG9jYWxpemVkU3RyaW5nc1siRXhwb3J0IFJl
c3VsdCJdID0gIkV4cG9ydCBSZXN1bHQiOwpAQCAtNDQxLDcgKzQ0MCw2IEBAIGxvY2FsaXplZFN0
cmluZ3NbIkdyb3VwaW5nIE1ldGhvZCJdID0gIkdyb3VwaW5nIE1ldGhvZCI7CiBsb2NhbGl6ZWRT
dHJpbmdzWyJIQVIgRXhwb3J0ICglcykiXSA9ICJIQVIgRXhwb3J0ICglcykiOwogbG9jYWxpemVk
U3RyaW5nc1siSFRNTCJdID0gIkhUTUwiOwogbG9jYWxpemVkU3RyaW5nc1siSFRNTCBBdHRyaWJ1
dGVzIl0gPSAiSFRNTCBBdHRyaWJ1dGVzIjsKLWxvY2FsaXplZFN0cmluZ3NbIkhUVFAiXSA9ICJI
VFRQIjsKIGxvY2FsaXplZFN0cmluZ3NbIkhlYWRlcnMiXSA9ICJIZWFkZXJzIjsKIGxvY2FsaXpl
ZFN0cmluZ3NbIkhlYWRlcnM6Il0gPSAiSGVhZGVyczoiOwogbG9jYWxpemVkU3RyaW5nc1siSGVh
ZGluZyBMZXZlbCJdID0gIkhlYWRpbmcgTGV2ZWwiOwpAQCAtNzQ2LDcgKzc0NCw2IEBAIGxvY2Fs
aXplZFN0cmluZ3NbIlJldmVhbCBpbiBSZXNvdXJjZXMgVGFiIl0gPSAiUmV2ZWFsIGluIFJlc291
cmNlcyBUYWIiOwogbG9jYWxpemVkU3RyaW5nc1siUm9sZSJdID0gIlJvbGUiOwogbG9jYWxpemVk
U3RyaW5nc1siUnVuICVkIl0gPSAiUnVuICVkIjsKIGxvY2FsaXplZFN0cmluZ3NbIlJ1bm5pbmcg
dGhlIOKAnCVz4oCcIGF1ZGl0Il0gPSAiUnVubmluZyB0aGUg4oCcJXPigJwgYXVkaXQiOwotbG9j
YWxpemVkU3RyaW5nc1siU2FtZS1TaXRlIl0gPSAiU2FtZS1TaXRlIjsKIGxvY2FsaXplZFN0cmlu
Z3NbIlNhbXBsZXMiXSA9ICJTYW1wbGVzIjsKIGxvY2FsaXplZFN0cmluZ3NbIlNhdmUgRmlsZSJd
ID0gIlNhdmUgRmlsZSI7CiBsb2NhbGl6ZWRTdHJpbmdzWyJTYXZlIFNlbGVjdGVkIl0gPSAiU2F2
ZSBTZWxlY3RlZCI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVy
ZmFjZS9WaWV3cy9Db29raWVTdG9yYWdlQ29udGVudFZpZXcuanMgYi9Tb3VyY2UvV2ViSW5zcGVj
dG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9Db29raWVTdG9yYWdlQ29udGVudFZpZXcuanMKaW5k
ZXggMTdhZTg2OTBjMzE4NTk4NzNmZGMxOTNlYWJkYThlMzhhNzEzZDQxMy4uZDkxNjAxZmI1Yzk4
MjhmZjhjNmMxNWVkNDI2ODhiZDU1ZjNjYWEyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3Bl
Y3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ29va2llU3RvcmFnZUNvbnRlbnRWaWV3LmpzCisr
KyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0Nvb2tpZVN0b3Jh
Z2VDb250ZW50Vmlldy5qcwpAQCAtMzEsMTAgKzMxLDEyIEBAIFdJLkNvb2tpZVN0b3JhZ2VDb250
ZW50VmlldyA9IGNsYXNzIENvb2tpZVN0b3JhZ2VDb250ZW50VmlldyBleHRlbmRzIFdJLkNvbnRl
bnRWCiAKICAgICAgICAgdGhpcy5lbGVtZW50LmNsYXNzTGlzdC5hZGQoImNvb2tpZS1zdG9yYWdl
Iik7CiAKKyAgICAgICAgdGhpcy5fY29va2llcyA9IFtdOworICAgICAgICB0aGlzLl9zb3J0Q29t
cGFyYXRvciA9IG51bGw7CisgICAgICAgIHRoaXMuX3RhYmxlID0gbnVsbDsKKwogICAgICAgICB0
aGlzLl9yZWZyZXNoQnV0dG9uTmF2aWdhdGlvbkl0ZW0gPSBuZXcgV0kuQnV0dG9uTmF2aWdhdGlv
bkl0ZW0oImNvb2tpZS1zdG9yYWdlLXJlZnJlc2giLCBXSS5VSVN0cmluZygiUmVmcmVzaCIpLCAi
SW1hZ2VzL1JlbG9hZEZ1bGwuc3ZnIiwgMTMsIDEzKTsKICAgICAgICAgdGhpcy5fcmVmcmVzaEJ1
dHRvbk5hdmlnYXRpb25JdGVtLmFkZEV2ZW50TGlzdGVuZXIoV0kuQnV0dG9uTmF2aWdhdGlvbkl0
ZW0uRXZlbnQuQ2xpY2tlZCwgdGhpcy5fcmVmcmVzaEJ1dHRvbkNsaWNrZWQsIHRoaXMpOwotCi0g
ICAgICAgIHRoaXMudXBkYXRlKCk7CiAgICAgfQogCiAgICAgLy8gUHVibGljCkBAIC00NCwxNiAr
NDYsNiBAQCBXSS5Db29raWVTdG9yYWdlQ29udGVudFZpZXcgPSBjbGFzcyBDb29raWVTdG9yYWdl
Q29udGVudFZpZXcgZXh0ZW5kcyBXSS5Db250ZW50VgogICAgICAgICByZXR1cm4gW3RoaXMuX3Jl
ZnJlc2hCdXR0b25OYXZpZ2F0aW9uSXRlbV07CiAgICAgfQogCi0gICAgdXBkYXRlKCkKLSAgICB7
Ci0gICAgICAgIFBhZ2VBZ2VudC5nZXRDb29raWVzKCkudGhlbigocGF5bG9hZCkgPT4gewotICAg
ICAgICAgICAgdGhpcy5fY29va2llcyA9IHRoaXMuX2ZpbHRlckNvb2tpZXMocGF5bG9hZC5jb29r
aWVzKTsKLSAgICAgICAgICAgIHRoaXMuX3JlYnVpbGRUYWJsZSgpOwotICAgICAgICB9KS5jYXRj
aCgoZXJyb3IpID0+IHsKLSAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoIkNvdWxkIG5vdCBmZXRj
aCBjb29raWVzOiAiLCBlcnJvcik7Ci0gICAgICAgIH0pOwotICAgIH0KLQogICAgIHNhdmVUb0Nv
b2tpZShjb29raWUpCiAgICAgewogICAgICAgICBjb29raWUudHlwZSA9IFdJLkNvbnRlbnRWaWV3
Q29va2llVHlwZS5Db29raWVTdG9yYWdlOwpAQCAtNjIsOTcgKzU0LDE5NiBAQCBXSS5Db29raWVT
dG9yYWdlQ29udGVudFZpZXcgPSBjbGFzcyBDb29raWVTdG9yYWdlQ29udGVudFZpZXcgZXh0ZW5k
cyBXSS5Db250ZW50VgogCiAgICAgZ2V0IHNjcm9sbGFibGVFbGVtZW50cygpCiAgICAgewotICAg
ICAgICBpZiAoIXRoaXMuX2RhdGFHcmlkKQorICAgICAgICBpZiAoIXRoaXMuX3RhYmxlKQogICAg
ICAgICAgICAgcmV0dXJuIFtdOwotICAgICAgICByZXR1cm4gW3RoaXMuX2RhdGFHcmlkLnNjcm9s
bENvbnRhaW5lcl07CisgICAgICAgIHJldHVybiBbdGhpcy5fdGFibGUuc2Nyb2xsQ29udGFpbmVy
XTsKICAgICB9CiAKLSAgICAvLyBQcml2YXRlCisgICAgLy8gVGFibGUgZGF0YVNvdXJjZQogCi0g
ICAgX3JlYnVpbGRUYWJsZSgpCi0gICAgewotICAgICAgICAvLyBGSVhNRSA8aHR0cHM6Ly93ZWJr
aXQub3JnL2IvMTUxNDAwPjogSWYgdGhlcmUgYXJlIG5vIGNvb2tpZXMsIGFkZCBwbGFjZWhvbGRl
ciBleHBsYW5hdG9yeSB0ZXh0LgotICAgICAgICBpZiAoIXRoaXMuX2RhdGFHcmlkKSB7Ci0gICAg
ICAgICAgICB2YXIgY29sdW1ucyA9IHtuYW1lOiB7fSwgdmFsdWU6IHt9LCBkb21haW46IHt9LCBw
YXRoOiB7fSwgZXhwaXJlczoge30sIHNpemU6IHt9LCBodHRwOiB7fSwgc2VjdXJlOiB7fSwgc2Ft
ZVNpdGU6IHt9fTsKLQotICAgICAgICAgICAgY29sdW1ucy5uYW1lLnRpdGxlID0gV0kuVUlTdHJp
bmcoIk5hbWUiKTsKLSAgICAgICAgICAgIGNvbHVtbnMubmFtZS5zb3J0YWJsZSA9IHRydWU7Ci0g
ICAgICAgICAgICBjb2x1bW5zLm5hbWUud2lkdGggPSAiMjQlIjsKLSAgICAgICAgICAgIGNvbHVt
bnMubmFtZS5sb2NrZWQgPSB0cnVlOwotCi0gICAgICAgICAgICBjb2x1bW5zLnZhbHVlLnRpdGxl
ID0gV0kuVUlTdHJpbmcoIlZhbHVlIik7Ci0gICAgICAgICAgICBjb2x1bW5zLnZhbHVlLnNvcnRh
YmxlID0gdHJ1ZTsKLSAgICAgICAgICAgIGNvbHVtbnMudmFsdWUud2lkdGggPSAiMzQlIjsKLSAg
ICAgICAgICAgIGNvbHVtbnMudmFsdWUubG9ja2VkID0gdHJ1ZTsKLQotICAgICAgICAgICAgY29s
dW1ucy5kb21haW4udGl0bGUgPSBXSS5VSVN0cmluZygiRG9tYWluIik7Ci0gICAgICAgICAgICBj
b2x1bW5zLmRvbWFpbi5zb3J0YWJsZSA9IHRydWU7Ci0gICAgICAgICAgICBjb2x1bW5zLmRvbWFp
bi53aWR0aCA9ICI2JSI7Ci0KLSAgICAgICAgICAgIGNvbHVtbnMucGF0aC50aXRsZSA9IFdJLlVJ
U3RyaW5nKCJQYXRoIik7Ci0gICAgICAgICAgICBjb2x1bW5zLnBhdGguc29ydGFibGUgPSB0cnVl
OwotICAgICAgICAgICAgY29sdW1ucy5wYXRoLndpZHRoID0gIjYlIjsKLQotICAgICAgICAgICAg
Y29sdW1ucy5leHBpcmVzLnRpdGxlID0gV0kuVUlTdHJpbmcoIkV4cGlyZXMiKTsKLSAgICAgICAg
ICAgIGNvbHVtbnMuZXhwaXJlcy5zb3J0YWJsZSA9IHRydWU7Ci0gICAgICAgICAgICBjb2x1bW5z
LmV4cGlyZXMud2lkdGggPSAiNiUiOwotCi0gICAgICAgICAgICBjb2x1bW5zLnNpemUudGl0bGUg
PSBXSS5VSVN0cmluZygiU2l6ZSIpOwotICAgICAgICAgICAgY29sdW1ucy5zaXplLmFsaWduZWQg
PSAicmlnaHQiOwotICAgICAgICAgICAgY29sdW1ucy5zaXplLnNvcnRhYmxlID0gdHJ1ZTsKLSAg
ICAgICAgICAgIGNvbHVtbnMuc2l6ZS53aWR0aCA9ICI2JSI7Ci0KLSAgICAgICAgICAgIGNvbHVt
bnMuaHR0cC50aXRsZSA9IFdJLlVJU3RyaW5nKCJIVFRQIik7Ci0gICAgICAgICAgICBjb2x1bW5z
Lmh0dHAuYWxpZ25lZCA9ICJjZW50ZXJlZCI7Ci0gICAgICAgICAgICBjb2x1bW5zLmh0dHAuc29y
dGFibGUgPSB0cnVlOwotICAgICAgICAgICAgY29sdW1ucy5odHRwLndpZHRoID0gIjYlIjsKLQot
ICAgICAgICAgICAgY29sdW1ucy5zZWN1cmUudGl0bGUgPSBXSS5VSVN0cmluZygiU2VjdXJlIik7
Ci0gICAgICAgICAgICBjb2x1bW5zLnNlY3VyZS5hbGlnbmVkID0gImNlbnRlcmVkIjsKLSAgICAg
ICAgICAgIGNvbHVtbnMuc2VjdXJlLnNvcnRhYmxlID0gdHJ1ZTsKLSAgICAgICAgICAgIGNvbHVt
bnMuc2VjdXJlLndpZHRoID0gIjYlIjsKLQotICAgICAgICAgICAgY29sdW1ucy5zYW1lU2l0ZS50
aXRsZSA9IFdJLlVJU3RyaW5nKCJTYW1lLVNpdGUiKTsKLSAgICAgICAgICAgIGNvbHVtbnMuc2Ft
ZVNpdGUuc29ydGFibGUgPSB0cnVlOwotICAgICAgICAgICAgY29sdW1ucy5zYW1lU2l0ZS53aWR0
aCA9ICI2JSI7Ci0KLSAgICAgICAgICAgIHRoaXMuX2RhdGFHcmlkID0gbmV3IFdJLkRhdGFHcmlk
KGNvbHVtbnMsIG51bGwsIHRoaXMuX2RlbGV0ZUNhbGxiYWNrLmJpbmQodGhpcykpOwotICAgICAg
ICAgICAgdGhpcy5fZGF0YUdyaWQuY29sdW1uQ2hvb3NlckVuYWJsZWQgPSB0cnVlOwotICAgICAg
ICAgICAgdGhpcy5fZGF0YUdyaWQuYWRkRXZlbnRMaXN0ZW5lcihXSS5EYXRhR3JpZC5FdmVudC5T
b3J0Q2hhbmdlZCwgdGhpcy5fc29ydERhdGFHcmlkLCB0aGlzKTsKLSAgICAgICAgICAgIHRoaXMu
X2RhdGFHcmlkLnNvcnRDb2x1bW5JZGVudGlmaWVyID0gIm5hbWUiOwotICAgICAgICAgICAgdGhp
cy5fZGF0YUdyaWQuY3JlYXRlU2V0dGluZ3MoImNvb2tpZS1zdG9yYWdlLWNvbnRlbnQtdmlldyIp
OwotCi0gICAgICAgICAgICB0aGlzLmFkZFN1YnZpZXcodGhpcy5fZGF0YUdyaWQpOwotICAgICAg
ICAgICAgdGhpcy5fZGF0YUdyaWQudXBkYXRlTGF5b3V0KCk7Ci0gICAgICAgIH0KKyAgICB0YWJs
ZU51bWJlck9mUm93cyh0YWJsZSkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl9jb29raWVz
Lmxlbmd0aDsKKyAgICB9CiAKLSAgICAgICAgY29uc29sZS5hc3NlcnQodGhpcy5fZGF0YUdyaWQp
OwotICAgICAgICB0aGlzLl9kYXRhR3JpZC5yZW1vdmVDaGlsZHJlbigpOwotCi0gICAgICAgIGZv
ciAobGV0IGNvb2tpZSBvZiB0aGlzLl9jb29raWVzKSB7Ci0gICAgICAgICAgICBjb25zdCBjaGVj
a21hcmsgPSAiXHUyNzEzIjsKLSAgICAgICAgICAgIHZhciBkYXRhID0gewotICAgICAgICAgICAg
ICAgIG5hbWU6IGNvb2tpZS5uYW1lLAotICAgICAgICAgICAgICAgIHZhbHVlOiBjb29raWUudmFs
dWUsCi0gICAgICAgICAgICAgICAgZG9tYWluOiBjb29raWUuZG9tYWluIHx8ICIiLAotICAgICAg
ICAgICAgICAgIHBhdGg6IGNvb2tpZS5wYXRoIHx8ICIiLAotICAgICAgICAgICAgICAgIGV4cGly
ZXM6ICIiLAotICAgICAgICAgICAgICAgIHNpemU6IE51bWJlci5ieXRlc1RvU3RyaW5nKGNvb2tp
ZS5zaXplKSwKLSAgICAgICAgICAgICAgICBodHRwOiBjb29raWUuaHR0cE9ubHkgPyBjaGVja21h
cmsgOiAiIiwKLSAgICAgICAgICAgICAgICBzZWN1cmU6IGNvb2tpZS5zZWN1cmUgPyBjaGVja21h
cmsgOiAiIiwKLSAgICAgICAgICAgICAgICBzYW1lU2l0ZTogY29va2llLnNhbWVTaXRlICYmIGNv
b2tpZS5zYW1lU2l0ZSAhPT0gV0kuQ29va2llLlNhbWVTaXRlVHlwZS5Ob25lID8gV0kuQ29va2ll
LmRpc3BsYXlOYW1lRm9yU2FtZVNpdGVUeXBlKGNvb2tpZS5zYW1lU2l0ZSkgOiAiIiwKLSAgICAg
ICAgICAgIH07CisgICAgdGFibGVTb3J0Q2hhbmdlZCh0YWJsZSkKKyAgICB7CisgICAgICAgIHRo
aXMuX2dlbmVyYXRlU29ydENvbXBhcmF0b3IoKTsKKworICAgICAgICBpZiAoIXRoaXMuX3NvcnRD
b21wYXJhdG9yKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHRoaXMuX3VwZGF0ZVNv
cnQoKTsKKyAgICAgICAgdGhpcy5fdGFibGUucmVsb2FkRGF0YSgpOworICAgIH0KKworICAgIC8v
IFRhYmxlIGRlbGVnYXRlCiAKLSAgICAgICAgICAgIGlmIChjb29raWUudHlwZSAhPT0gV0kuQ29v
a2llVHlwZS5SZXF1ZXN0KQotICAgICAgICAgICAgICAgIGRhdGFbImV4cGlyZXMiXSA9IGNvb2tp
ZS5zZXNzaW9uID8gV0kuVUlTdHJpbmcoIlNlc3Npb24iKSA6IG5ldyBEYXRlKGNvb2tpZS5leHBp
cmVzKS50b0xvY2FsZVN0cmluZygpOworICAgIHRhYmxlQ2VsbENvbnRleHRNZW51Q2xpY2tlZCh0
YWJsZSwgY2VsbCwgY29sdW1uLCByb3dJbmRleCwgZXZlbnQpCisgICAgeworICAgICAgICBsZXQg
Y29udGV4dE1lbnUgPSBXSS5Db250ZXh0TWVudS5jcmVhdGVGcm9tRXZlbnQoZXZlbnQpOworCisg
ICAgICAgIGNvbnRleHRNZW51LmFwcGVuZFNlcGFyYXRvcigpOworICAgICAgICBjb250ZXh0TWVu
dS5hcHBlbmRJdGVtKFdJLlVJU3RyaW5nKCJEZWxldGUiKSwgKCkgPT4geworICAgICAgICAgICAg
aWYgKHRhYmxlLmlzUm93U2VsZWN0ZWQocm93SW5kZXgpKQorICAgICAgICAgICAgICAgIHRhYmxl
LnJlbW92ZVNlbGVjdGVkUm93cygpOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAg
IHRhYmxlLnJlbW92ZVJvdyhyb3dJbmRleCk7CisgICAgICAgIH0pOworICAgICAgICBjb250ZXh0
TWVudS5hcHBlbmRTZXBhcmF0b3IoKTsKKyAgICB9CisKKyAgICB0YWJsZURpZFJlbW92ZVJvd3Mo
dGFibGUsIHJvd0luZGV4ZXMpCisgICAgeworICAgICAgICBpZiAoIXJvd0luZGV4ZXMubGVuZ3Ro
KQorICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgICAgICB2YXIgbm9kZSA9IG5ldyBXSS5E
YXRhR3JpZE5vZGUoZGF0YSk7Ci0gICAgICAgICAgICBub2RlLmNvb2tpZSA9IGNvb2tpZTsKKyAg
ICAgICAgZm9yIChsZXQgaSA9IHJvd0luZGV4ZXMubGVuZ3RoIC0gMTsgaSA+PSAwOyAtLWkpIHsK
KyAgICAgICAgICAgIGxldCByb3dJbmRleCA9IHJvd0luZGV4ZXNbaV07CisgICAgICAgICAgICBs
ZXQgY29va2llID0gdGhpcy5fY29va2llc1tyb3dJbmRleF07CisgICAgICAgICAgICBjb25zb2xl
LmFzc2VydChjb29raWUsICJNaXNzaW5nIGNvb2tpZSBmb3Igcm93ICIgKyByb3dJbmRleCk7Cisg
ICAgICAgICAgICBpZiAoIWNvb2tpZSkKKyAgICAgICAgICAgICAgICBjb250aW51ZTsKIAotICAg
ICAgICAgICAgdGhpcy5fZGF0YUdyaWQuYXBwZW5kQ2hpbGQobm9kZSk7CisgICAgICAgICAgICB0
aGlzLl9jb29raWVzLnNwbGljZShyb3dJbmRleCwgMSk7CisKKyAgICAgICAgICAgIC8vIEZJWE1F
OiA8aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvYi8xODk1MzM+IGFkZCBhIFdJLkNvb2tpZS51cmwg
cHJvcGVydHkKKyAgICAgICAgICAgIC8vIG9uY2Ugd2Ugc3dpdGNoIG92ZXIgdG8gdXNpbmcgbW9k
ZWwgb2JqZWN0cyBpbnN0ZWFkIG9mIHJhdyBwYXlsb2FkIGRhdGEuCisgICAgICAgICAgICBsZXQg
Y29va2llVVJMID0gKGNvb2tpZS5zZWN1cmUgPyAiaHR0cHM6Ly8iIDogImh0dHA6Ly8iKSArIGNv
b2tpZS5kb21haW4gKyBjb29raWUucGF0aDsKKyAgICAgICAgICAgIFBhZ2VBZ2VudC5kZWxldGVD
b29raWUoY29va2llLm5hbWUsIGNvb2tpZVVSTCk7CiAgICAgICAgIH0KICAgICB9CiAKKyAgICB0
YWJsZVBvcHVsYXRlQ2VsbCh0YWJsZSwgY2VsbCwgY29sdW1uLCByb3dJbmRleCkKKyAgICB7Cisg
ICAgICAgIGxldCBjb29raWUgPSB0aGlzLl9jb29raWVzW3Jvd0luZGV4XTsKKworICAgICAgICBj
b25zdCBjaGVja21hcmsgPSAiXHUyNzEzIjsKKworICAgICAgICBzd2l0Y2ggKGNvbHVtbi5pZGVu
dGlmaWVyKSB7CisgICAgICAgIGNhc2UgIm5hbWUiOgorICAgICAgICAgICAgY2VsbC50ZXh0Q29u
dGVudCA9IGNvb2tpZS5uYW1lOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgInZh
bHVlIjoKKyAgICAgICAgICAgIGNlbGwudGV4dENvbnRlbnQgPSBjb29raWUudmFsdWU7CisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSAiZG9tYWluIjoKKyAgICAgICAgICAgIGNlbGwu
dGV4dENvbnRlbnQgPSBjb29raWUuZG9tYWluIHx8IGVtRGFzaDsKKyAgICAgICAgICAgIGJyZWFr
OworICAgICAgICBjYXNlICJwYXRoIjoKKyAgICAgICAgICAgIGNlbGwudGV4dENvbnRlbnQgPSBj
b29raWUucGF0aCB8fCBlbURhc2g7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSAi
ZXhwaXJlcyI6CisgICAgICAgICAgICBjZWxsLnRleHRDb250ZW50ID0gY29va2llLmV4cGlyZXMg
PyBuZXcgRGF0ZShjb29raWUuZXhwaXJlcykudG9Mb2NhbGVTdHJpbmcoKSA6IFdJLlVJU3RyaW5n
KCJTZXNzaW9uIik7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSAic2l6ZSI6Cisg
ICAgICAgICAgICBjZWxsLnRleHRDb250ZW50ID0gTnVtYmVyLmJ5dGVzVG9TdHJpbmcoY29va2ll
LnNpemUpOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgInNlY3VyZSI6CisgICAg
ICAgICAgICBjZWxsLnRleHRDb250ZW50ID0gY29va2llLnNlY3VyZSA/IGNoZWNrbWFyayA6IHpl
cm9XaWR0aFNwYWNlOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgImh0dHBPbmx5
IjoKKyAgICAgICAgICAgIGNlbGwudGV4dENvbnRlbnQgPSBjb29raWUuaHR0cE9ubHkgPyBjaGVj
a21hcmsgOiB6ZXJvV2lkdGhTcGFjZTsKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNl
ICJzYW1lU2l0ZSI6CisgICAgICAgICAgICBjZWxsLnRleHRDb250ZW50ID0gY29va2llLnNhbWVT
aXRlID09PSBXSS5Db29raWUuU2FtZVNpdGVUeXBlLk5vbmUgPyBlbURhc2ggOiBXSS5Db29raWUu
ZGlzcGxheU5hbWVGb3JTYW1lU2l0ZVR5cGUoY29va2llLnNhbWVTaXRlKTsKKyAgICAgICAgICAg
IGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgcmV0dXJuIGNlbGw7CisgICAgfQorCisgICAg
Ly8gUHJvdGVjdGVkCisKKyAgICBpbml0aWFsTGF5b3V0KCkKKyAgICB7CisgICAgICAgIHN1cGVy
LmluaXRpYWxMYXlvdXQoKTsKKworICAgICAgICB0aGlzLl90YWJsZSA9IG5ldyBXSS5UYWJsZSgi
Y29va2llcy10YWJsZSIsIHRoaXMsIHRoaXMsIDIwKTsKKyAgICAgICAgdGhpcy5fdGFibGUuYWxs
b3dzTXVsdGlwbGVTZWxlY3Rpb24gPSB0cnVlOworCisgICAgICAgIHRoaXMuX25hbWVDb2x1bW4g
PSBuZXcgV0kuVGFibGVDb2x1bW4oIm5hbWUiLCBXSS5VSVN0cmluZygiTmFtZSIpLCB7CisgICAg
ICAgICAgICBtaW5XaWR0aDogNzAsCisgICAgICAgICAgICBtYXhXaWR0aDogMzAwLAorICAgICAg
ICAgICAgaW5pdGlhbFdpZHRoOiAyMDAsCisgICAgICAgICAgICByZXNpemVUeXBlOiBXSS5UYWJs
ZUNvbHVtbi5SZXNpemVUeXBlLkxvY2tlZCwKKyAgICAgICAgfSk7CisKKyAgICAgICAgdGhpcy5f
dmFsdWVDb2x1bW4gPSBuZXcgV0kuVGFibGVDb2x1bW4oInZhbHVlIiwgV0kuVUlTdHJpbmcoIlZh
bHVlIiksIHsKKyAgICAgICAgICAgIG1pbldpZHRoOiAxMDAsCisgICAgICAgICAgICBtYXhXaWR0
aDogNjAwLAorICAgICAgICAgICAgaW5pdGlhbFdpZHRoOiAyMDAsCisgICAgICAgICAgICBoaWRl
YWJsZTogZmFsc2UsCisgICAgICAgIH0pOworCisgICAgICAgIHRoaXMuX2RvbWFpbkNvbHVtbiA9
IG5ldyBXSS5UYWJsZUNvbHVtbigiZG9tYWluIiwgV0kudW5sb2NhbGl6ZWRTdHJpbmcoIkRvbWFp
biIpLCB7CisgICAgICAgICAgICBtaW5XaWR0aDogMTAwLAorICAgICAgICAgICAgbWF4V2lkdGg6
IDIwMCwKKyAgICAgICAgICAgIGluaXRpYWxXaWR0aDogMTIwLAorICAgICAgICB9KTsKKworICAg
ICAgICB0aGlzLl9wYXRoQ29sdW1uID0gbmV3IFdJLlRhYmxlQ29sdW1uKCJwYXRoIiwgV0kudW5s
b2NhbGl6ZWRTdHJpbmcoIlBhdGgiKSwgeworICAgICAgICAgICAgbWluV2lkdGg6IDUwLAorICAg
ICAgICAgICAgbWF4V2lkdGg6IDMwMCwKKyAgICAgICAgICAgIGluaXRpYWxXaWR0aDogMTAwLAor
ICAgICAgICB9KTsKKworICAgICAgICB0aGlzLl9leHBpcmVzQ29sdW1uID0gbmV3IFdJLlRhYmxl
Q29sdW1uKCJleHBpcmVzIiwgV0kudW5sb2NhbGl6ZWRTdHJpbmcoIkV4cGlyZXMiKSwgeworICAg
ICAgICAgICAgbWluV2lkdGg6IDEwMCwKKyAgICAgICAgICAgIG1heFdpZHRoOiAyMDAsCisgICAg
ICAgICAgICBpbml0aWFsV2lkdGg6IDE1MCwKKyAgICAgICAgfSk7CisKKyAgICAgICAgdGhpcy5f
c2l6ZUNvbHVtbiA9IG5ldyBXSS5UYWJsZUNvbHVtbigic2l6ZSIsIFdJLnVubG9jYWxpemVkU3Ry
aW5nKCJTaXplIiksIHsKKyAgICAgICAgICAgIG1pbldpZHRoOiA1MCwKKyAgICAgICAgICAgIG1h
eFdpZHRoOiA4MCwKKyAgICAgICAgICAgIGluaXRpYWxXaWR0aDogNjUsCisgICAgICAgICAgICBh
bGlnbjogInJpZ2h0IiwKKyAgICAgICAgfSk7CisKKyAgICAgICAgdGhpcy5fc2VjdXJlQ29sdW1u
ID0gbmV3IFdJLlRhYmxlQ29sdW1uKCJzZWN1cmUiLCBXSS51bmxvY2FsaXplZFN0cmluZygiU2Vj
dXJlIiksIHsKKyAgICAgICAgICAgIG1pbldpZHRoOiA3MCwKKyAgICAgICAgICAgIG1heFdpZHRo
OiA3MCwKKyAgICAgICAgICAgIGFsaWduOiAiY2VudGVyIiwKKyAgICAgICAgfSk7CisKKyAgICAg
ICAgdGhpcy5faHR0cE9ubHlDb2x1bW4gPSBuZXcgV0kuVGFibGVDb2x1bW4oImh0dHBPbmx5Iiwg
V0kudW5sb2NhbGl6ZWRTdHJpbmcoIkh0dHBPbmx5IiksIHsKKyAgICAgICAgICAgIG1pbldpZHRo
OiA4MCwKKyAgICAgICAgICAgIG1heFdpZHRoOiA4MCwKKyAgICAgICAgICAgIGFsaWduOiAiY2Vu
dGVyIiwKKyAgICAgICAgfSk7CisKKyAgICAgICAgdGhpcy5fc2FtZVNpdGVDb2x1bW4gPSBuZXcg
V0kuVGFibGVDb2x1bW4oInNhbWVTaXRlIiwgV0kudW5sb2NhbGl6ZWRTdHJpbmcoIlNhbWVTaXRl
IiksIHsKKyAgICAgICAgICAgIG1pbldpZHRoOiA0MCwKKyAgICAgICAgICAgIG1heFdpZHRoOiA4
MCwKKyAgICAgICAgICAgIGluaXRpYWxXaWR0aDogNzAsCisgICAgICAgICAgICBhbGlnbjogImNl
bnRlciIsCisgICAgICAgIH0pOworCisgICAgICAgIHRoaXMuX3RhYmxlLmFkZENvbHVtbih0aGlz
Ll9uYW1lQ29sdW1uKTsKKyAgICAgICAgdGhpcy5fdGFibGUuYWRkQ29sdW1uKHRoaXMuX3ZhbHVl
Q29sdW1uKTsKKyAgICAgICAgdGhpcy5fdGFibGUuYWRkQ29sdW1uKHRoaXMuX2RvbWFpbkNvbHVt
bik7CisgICAgICAgIHRoaXMuX3RhYmxlLmFkZENvbHVtbih0aGlzLl9wYXRoQ29sdW1uKTsKKyAg
ICAgICAgdGhpcy5fdGFibGUuYWRkQ29sdW1uKHRoaXMuX2V4cGlyZXNDb2x1bW4pOworICAgICAg
ICB0aGlzLl90YWJsZS5hZGRDb2x1bW4odGhpcy5fc2l6ZUNvbHVtbik7CisgICAgICAgIHRoaXMu
X3RhYmxlLmFkZENvbHVtbih0aGlzLl9zZWN1cmVDb2x1bW4pOworICAgICAgICB0aGlzLl90YWJs
ZS5hZGRDb2x1bW4odGhpcy5faHR0cE9ubHlDb2x1bW4pOworICAgICAgICB0aGlzLl90YWJsZS5h
ZGRDb2x1bW4odGhpcy5fc2FtZVNpdGVDb2x1bW4pOworCisgICAgICAgIGlmICghdGhpcy5fdGFi
bGUuc29ydENvbHVtbklkZW50aWZpZXIpIHsKKyAgICAgICAgICAgIHRoaXMuX3RhYmxlLnNvcnRP
cmRlciA9IFdJLlRhYmxlLlNvcnRPcmRlci5Bc2NlbmRpbmc7CisgICAgICAgICAgICB0aGlzLl90
YWJsZS5zb3J0Q29sdW1uSWRlbnRpZmllciA9ICJuYW1lIjsKKyAgICAgICAgIH0KKworICAgICAg
ICB0aGlzLmFkZFN1YnZpZXcodGhpcy5fdGFibGUpOworCisgICAgICAgIHRoaXMuX3RhYmxlLmVs
ZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigia2V5ZG93biIsIHRoaXMuX2hhbmRsZVRhYmxlS2V5RG93
bi5iaW5kKHRoaXMpKTsKKworICAgICAgICB0aGlzLl9yZWxvYWRDb29raWVzKCk7CisgICAgfQor
CisgICAgLy8gUHJpdmF0ZQorCiAgICAgX2ZpbHRlckNvb2tpZXMoY29va2llcykKICAgICB7CiAg
ICAgICAgIGxldCByZXNvdXJjZU1hdGNoZXNTdG9yYWdlRG9tYWluID0gKHJlc291cmNlKSA9PiB7
CkBAIC0xNzYsNjIgKzI2Nyw3OCBAQCBXSS5Db29raWVTdG9yYWdlQ29udGVudFZpZXcgPSBjbGFz
cyBDb29raWVTdG9yYWdlQ29udGVudFZpZXcgZXh0ZW5kcyBXSS5Db250ZW50VgogICAgICAgICBy
ZXR1cm4gY29va2llc0ZvckRvbWFpbjsKICAgICB9CiAKLSAgICBfc29ydERhdGFHcmlkKCkKKyAg
ICBfZ2VuZXJhdGVTb3J0Q29tcGFyYXRvcigpCiAgICAgewotICAgICAgICBmdW5jdGlvbiBsb2Nh
bGVDb21wYXJlKGZpZWxkLCBub2RlQSwgbm9kZUIpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJl
dHVybiAobm9kZUEuZGF0YVtmaWVsZF0gKyAiIikuZXh0ZW5kZWRMb2NhbGVDb21wYXJlKG5vZGVC
LmRhdGFbZmllbGRdICsgIiIpOwotICAgICAgICB9Ci0KLSAgICAgICAgZnVuY3Rpb24gbnVtYmVy
Q29tcGFyZShmaWVsZCwgbm9kZUEsIG5vZGVCKQotICAgICAgICB7Ci0gICAgICAgICAgICByZXR1
cm4gbm9kZUEuY29va2llW2ZpZWxkXSAtIG5vZGVCLmNvb2tpZVtmaWVsZF07CisgICAgICAgIGxl
dCBzb3J0Q29sdW1uSWRlbnRpZmllciA9IHRoaXMuX3RhYmxlLnNvcnRDb2x1bW5JZGVudGlmaWVy
OworICAgICAgICBpZiAoIXNvcnRDb2x1bW5JZGVudGlmaWVyKSB7CisgICAgICAgICAgICB0aGlz
Ll9zb3J0Q29tcGFyYXRvciA9IG51bGw7CisgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0K
IAotICAgICAgICBmdW5jdGlvbiBleHBpcmVzQ29tcGFyZShub2RlQSwgbm9kZUIpCi0gICAgICAg
IHsKLSAgICAgICAgICAgIGlmIChub2RlQS5jb29raWUuc2Vzc2lvbiAhPT0gbm9kZUIuY29va2ll
LnNlc3Npb24pCi0gICAgICAgICAgICAgICAgcmV0dXJuIG5vZGVBLmNvb2tpZS5zZXNzaW9uID8g
LTEgOiAxOwotCi0gICAgICAgICAgICBpZiAobm9kZUEuY29va2llLnNlc3Npb24pCi0gICAgICAg
ICAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIGxldCBjb21wYXJhdG9yID0gbnVsbDsKKworICAg
ICAgICBzd2l0Y2ggKHNvcnRDb2x1bW5JZGVudGlmaWVyKSB7CisgICAgICAgIGNhc2UgIm5hbWUi
OgorICAgICAgICBjYXNlICJ2YWx1ZSI6CisgICAgICAgIGNhc2UgImRvbWFpbiI6CisgICAgICAg
IGNhc2UgInBhdGgiOgorICAgICAgICBjYXNlICJzYW1lU2l0ZSI6CisgICAgICAgICAgICBjb21w
YXJhdG9yID0gKGEsIGIpID0+IChhW3NvcnRDb2x1bW5JZGVudGlmaWVyXSB8fCAiIikuZXh0ZW5k
ZWRMb2NhbGVDb21wYXJlKGJbc29ydENvbHVtbklkZW50aWZpZXJdIHx8ICIiKTsKKyAgICAgICAg
ICAgIGJyZWFrOworCisgICAgICAgIGNhc2UgInNpemUiOgorICAgICAgICBjYXNlICJodHRwT25s
eSI6CisgICAgICAgIGNhc2UgInNlY3VyZSI6CisgICAgICAgICAgICBjb21wYXJhdG9yID0gKGEs
IGIpID0+IGFbc29ydENvbHVtbklkZW50aWZpZXJdIC0gYltzb3J0Q29sdW1uSWRlbnRpZmllcl07
CisgICAgICAgICAgICBicmVhazsKKworICAgICAgICBjYXNlICJleHBpcmVzIjoKKyAgICAgICAg
ICAgIGNvbXBhcmF0b3IgPSAoYSwgYikgPT4geworICAgICAgICAgICAgICAgIGlmICghYS5leHBp
cmVzKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gMTsKKyAgICAgICAgICAgICAgICBpZiAo
IWIuZXhwaXJlcykKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIC0xOworICAgICAgICAgICAg
ICAgIHJldHVybiBhLmV4cGlyZXMgLSBiLmV4cGlyZXM7CisgICAgICAgICAgICB9OworICAgICAg
ICAgICAgYnJlYWs7CiAKLSAgICAgICAgICAgIHJldHVybiBub2RlQS5jb29raWUuZXhwaXJlcyAt
IG5vZGVCLmNvb2tpZS5leHBpcmVzOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgY29u
c29sZS5hc3NlcnQoIlVuZXhwZWN0ZWQgc29ydCBjb2x1bW4iLCBzb3J0Q29sdW1uSWRlbnRpZmll
cik7CisgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAotICAgICAgICB2YXIgY29tcGFy
YXRvcjsKLSAgICAgICAgc3dpdGNoICh0aGlzLl9kYXRhR3JpZC5zb3J0Q29sdW1uSWRlbnRpZmll
cikgewotICAgICAgICAgICAgY2FzZSAidmFsdWUiOiBjb21wYXJhdG9yID0gbG9jYWxlQ29tcGFy
ZS5iaW5kKHRoaXMsICJ2YWx1ZSIpOyBicmVhazsKLSAgICAgICAgICAgIGNhc2UgImRvbWFpbiI6
IGNvbXBhcmF0b3IgPSBsb2NhbGVDb21wYXJlLmJpbmQodGhpcywgImRvbWFpbiIpOyBicmVhazsK
LSAgICAgICAgICAgIGNhc2UgInBhdGgiOiBjb21wYXJhdG9yID0gbG9jYWxlQ29tcGFyZS5iaW5k
KHRoaXMsICJwYXRoIik7IGJyZWFrOwotICAgICAgICAgICAgY2FzZSAiZXhwaXJlcyI6IGNvbXBh
cmF0b3IgPSBleHBpcmVzQ29tcGFyZTsgYnJlYWs7Ci0gICAgICAgICAgICBjYXNlICJzaXplIjog
Y29tcGFyYXRvciA9IG51bWJlckNvbXBhcmUuYmluZCh0aGlzLCAic2l6ZSIpOyBicmVhazsKLSAg
ICAgICAgICAgIGNhc2UgImh0dHAiOiBjb21wYXJhdG9yID0gbG9jYWxlQ29tcGFyZS5iaW5kKHRo
aXMsICJodHRwIik7IGJyZWFrOwotICAgICAgICAgICAgY2FzZSAic2VjdXJlIjogY29tcGFyYXRv
ciA9IGxvY2FsZUNvbXBhcmUuYmluZCh0aGlzLCAic2VjdXJlIik7IGJyZWFrOwotICAgICAgICAg
ICAgY2FzZSAic2FtZVNpdGUiOiBjb21wYXJhdG9yID0gbG9jYWxlQ29tcGFyZS5iaW5kKHRoaXMs
ICJzYW1lU2l0ZSIpOyBicmVhazsKLSAgICAgICAgICAgIGNhc2UgIm5hbWUiOgotICAgICAgICAg
ICAgZGVmYXVsdDogY29tcGFyYXRvciA9IGxvY2FsZUNvbXBhcmUuYmluZCh0aGlzLCAibmFtZSIp
OyBicmVhazsKLSAgICAgICAgfQorICAgICAgICBsZXQgcmV2ZXJzZUZhY3RvciA9IHRoaXMuX3Rh
YmxlLnNvcnRPcmRlciA9PT0gV0kuVGFibGUuU29ydE9yZGVyLkFzY2VuZGluZyA/IDEgOiAtMTsK
KyAgICAgICAgdGhpcy5fc29ydENvbXBhcmF0b3IgPSAoYSwgYikgPT4gcmV2ZXJzZUZhY3RvciAq
IGNvbXBhcmF0b3IoYSwgYik7CisgICAgfQorCisgICAgX3JlZnJlc2hCdXR0b25DbGlja2VkKGV2
ZW50KQorICAgIHsKKyAgICAgICAgdGhpcy5fcmVsb2FkQ29va2llcygpOworICAgIH0KIAotICAg
ICAgICBjb25zb2xlLmFzc2VydChjb21wYXJhdG9yKTsKLSAgICAgICAgdGhpcy5fZGF0YUdyaWQu
c29ydE5vZGVzKGNvbXBhcmF0b3IpOworICAgIF9yZWxvYWRDb29raWVzKCkKKyAgICB7CisgICAg
ICAgIFBhZ2VBZ2VudC5nZXRDb29raWVzKCkudGhlbigocGF5bG9hZCkgPT4geworICAgICAgICAg
ICAgdGhpcy5fY29va2llcyA9IHRoaXMuX2ZpbHRlckNvb2tpZXMocGF5bG9hZC5jb29raWVzKTsK
KyAgICAgICAgICAgIHRoaXMuX3VwZGF0ZVNvcnQoKTsKKyAgICAgICAgICAgIHRoaXMuX3RhYmxl
LnJlbG9hZERhdGEoKTsKKyAgICAgICAgfSkuY2F0Y2goKGVycm9yKSA9PiB7CisgICAgICAgICAg
ICBjb25zb2xlLmVycm9yKCJDb3VsZCBub3QgZmV0Y2ggY29va2llczogIiwgZXJyb3IpOworICAg
ICAgICB9KTsKICAgICB9CiAKLSAgICBfZGVsZXRlQ2FsbGJhY2sobm9kZSkKKyAgICBfdXBkYXRl
U29ydCgpCiAgICAgewotICAgICAgICBpZiAoIW5vZGUgfHwgIW5vZGUuY29va2llKQorICAgICAg
ICBpZiAoIXRoaXMuX3NvcnRDb21wYXJhdG9yKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAg
ICAgIHZhciBjb29raWUgPSBub2RlLmNvb2tpZTsKLSAgICAgICAgdmFyIGNvb2tpZVVSTCA9IChj
b29raWUuc2VjdXJlID8gImh0dHBzOi8vIiA6ICJodHRwOi8vIikgKyBjb29raWUuZG9tYWluICsg
Y29va2llLnBhdGg7Ci0gICAgICAgIFBhZ2VBZ2VudC5kZWxldGVDb29raWUoY29va2llLm5hbWUs
IGNvb2tpZVVSTCk7Ci0KLSAgICAgICAgdGhpcy51cGRhdGUoKTsKKyAgICAgICAgdGhpcy5fY29v
a2llcy5zb3J0KHRoaXMuX3NvcnRDb21wYXJhdG9yKTsKICAgICB9CiAKLSAgICBfcmVmcmVzaEJ1
dHRvbkNsaWNrZWQoZXZlbnQpCisgICAgX2hhbmRsZVRhYmxlS2V5RG93bihldmVudCkKICAgICB7
Ci0gICAgICAgIHRoaXMudXBkYXRlKCk7CisgICAgICAgIGlmIChldmVudC5rZXlDb2RlID09PSBX
SS5LZXlib2FyZFNob3J0Y3V0LktleS5CYWNrc3BhY2Uua2V5Q29kZSB8fCBldmVudC5rZXlDb2Rl
ID09PSBXSS5LZXlib2FyZFNob3J0Y3V0LktleS5EZWxldGUua2V5Q29kZSkKKyAgICAgICAgICAg
IHRoaXMuX3RhYmxlLnJlbW92ZVNlbGVjdGVkUm93cygpOwogICAgIH0KIH07CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1RhYmxlLmpzIGIv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVGFibGUuanMKaW5kZXgg
NTEyMDhkOGIxZWRjNTgxMGUzZTJkZTJkNjg0N2FlOWJjNTEyNzgwMi4uY2RjYTE2ZTY0Nzg2NmY3
YWZhZmRmYTI0MjI5Zjk0YTdhY2Q5ZjBjNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVGFibGUuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3Rv
clVJL1VzZXJJbnRlcmZhY2UvVmlld3MvVGFibGUuanMKQEAgLTIzNSw2ICsyMzUsMTEgQEAgV0ku
VGFibGUgPSBjbGFzcyBUYWJsZSBleHRlbmRzIFdJLlZpZXcKICAgICAgICAgICAgIHRoaXMuX25v
dGlmeVNlbGVjdGlvbkRpZENoYW5nZSgpOwogICAgIH0KIAorICAgIGlzUm93U2VsZWN0ZWQocm93
SW5kZXgpCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5fc2VsZWN0ZWRSb3dzLmhhcyhyb3dJ
bmRleCk7CisgICAgfQorCiAgICAgcmVzaXplKCkKICAgICB7CiAgICAgICAgIHRoaXMuX2NhY2hl
ZFdpZHRoID0gTmFOOwpAQCAtMzIxLDcgKzMyNiw3IEBAIFdJLlRhYmxlID0gY2xhc3MgVGFibGUg
ZXh0ZW5kcyBXSS5WaWV3CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KCFleHRlbmRTZWxlY3Rpb24g
fHwgdGhpcy5fYWxsb3dzTXVsdGlwbGVTZWxlY3Rpb24sICJDYW5ub3QgZXh0ZW5kIHNlbGVjdGlv
biB3aXRoIG11bHRpcGxlIHNlbGVjdGlvbiBkaXNhYmxlZC4iKTsKICAgICAgICAgY29uc29sZS5h
c3NlcnQocm93SW5kZXggPj0gMCAmJiByb3dJbmRleCA8IHRoaXMubnVtYmVyT2ZSb3dzKTsKIAot
ICAgICAgICBpZiAodGhpcy5faXNSb3dTZWxlY3RlZChyb3dJbmRleCkpIHsKKyAgICAgICAgaWYg
KHRoaXMuaXNSb3dTZWxlY3RlZChyb3dJbmRleCkpIHsKICAgICAgICAgICAgIGlmICghZXh0ZW5k
U2VsZWN0aW9uKQogICAgICAgICAgICAgICAgIHRoaXMuX2Rlc2VsZWN0QWxsQW5kU2VsZWN0KHJv
d0luZGV4KTsKICAgICAgICAgICAgIHJldHVybjsKQEAgLTM0Niw3ICszNTEsNyBAQCBXSS5UYWJs
ZSA9IGNsYXNzIFRhYmxlIGV4dGVuZHMgV0kuVmlldwogICAgIHsKICAgICAgICAgY29uc29sZS5h
c3NlcnQocm93SW5kZXggPj0gMCAmJiByb3dJbmRleCA8IHRoaXMubnVtYmVyT2ZSb3dzKTsKIAot
ICAgICAgICBpZiAoIXRoaXMuX2lzUm93U2VsZWN0ZWQocm93SW5kZXgpKQorICAgICAgICBpZiAo
IXRoaXMuaXNSb3dTZWxlY3RlZChyb3dJbmRleCkpCiAgICAgICAgICAgICByZXR1cm47CiAKICAg
ICAgICAgbGV0IG9sZFNlbGVjdGVkUm93ID0gdGhpcy5fY2FjaGVkUm93cy5nZXQocm93SW5kZXgp
OwpAQCAtMzkwLDcgKzM5NSw3IEBAIFdJLlRhYmxlID0gY2xhc3MgVGFibGUgZXh0ZW5kcyBXSS5W
aWV3CiAgICAgewogICAgICAgICBjb25zb2xlLmFzc2VydChyb3dJbmRleCA+PSAwICYmIHJvd0lu
ZGV4IDwgdGhpcy5udW1iZXJPZlJvd3MpOwogCi0gICAgICAgIGlmICh0aGlzLl9pc1Jvd1NlbGVj
dGVkKHJvd0luZGV4KSkKKyAgICAgICAgaWYgKHRoaXMuaXNSb3dTZWxlY3RlZChyb3dJbmRleCkp
CiAgICAgICAgICAgICB0aGlzLmRlc2VsZWN0Um93KHJvd0luZGV4KTsKIAogICAgICAgICB0aGlz
Ll9yZW1vdmVSb3dzKG5ldyBXSS5JbmRleFNldChbcm93SW5kZXhdKSk7CkBAIC03OTcsNyArODAy
LDcgQEAgV0kuVGFibGUgPSBjbGFzcyBUYWJsZSBleHRlbmRzIFdJLlZpZXcKICAgICAgICAgbGV0
IHJvdyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImxpIik7CiAgICAgICAgIHJvdy5fX2luZGV4
ID0gcm93SW5kZXg7CiAgICAgICAgIHJvdy5fX3dpZHRoR2VuZXJhdGlvbiA9IDA7Ci0gICAgICAg
IGlmICh0aGlzLl9pc1Jvd1NlbGVjdGVkKHJvd0luZGV4KSkKKyAgICAgICAgaWYgKHRoaXMuaXNS
b3dTZWxlY3RlZChyb3dJbmRleCkpCiAgICAgICAgICAgICByb3cuY2xhc3NMaXN0LmFkZCgic2Vs
ZWN0ZWQiKTsKIAogICAgICAgICB0aGlzLl9jYWNoZWRSb3dzLnNldChyb3dJbmRleCwgcm93KTsK
QEAgLTEzMjEsNyArMTMyNiw3IEBAIFdJLlRhYmxlID0gY2xhc3MgVGFibGUgZXh0ZW5kcyBXSS5W
aWV3CiAgICAgICAgIGxldCBjb2x1bW4gPSB0aGlzLl92aXNpYmxlQ29sdW1uc1tjb2x1bW5JbmRl
eF07CiAgICAgICAgIGxldCByb3dJbmRleCA9IHJvdy5fX2luZGV4OwogCi0gICAgICAgIGlmICh0
aGlzLl9pc1Jvd1NlbGVjdGVkKHJvd0luZGV4KSkgeworICAgICAgICBpZiAodGhpcy5pc1Jvd1Nl
bGVjdGVkKHJvd0luZGV4KSkgewogICAgICAgICAgICAgaWYgKGV2ZW50Lm1ldGFLZXkpCiAgICAg
ICAgICAgICAgICAgdGhpcy5kZXNlbGVjdFJvdyhyb3dJbmRleCkKICAgICAgICAgICAgIGVsc2UK
QEAgLTE0NTIsNyArMTQ1Nyw3IEBAIFdJLlRhYmxlID0gY2xhc3MgVGFibGUgZXh0ZW5kcyBXSS5W
aWV3CiAgICAgICAgICAgICAgICAgdGhpcy5fY2FjaGVkUm93cy5zZXQobmV3SW5kZXgsIHJvdyk7
CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGlmICh0aGlzLl9pc1Jvd1NlbGVjdGVkKGlu
ZGV4KSkgeworICAgICAgICAgICAgaWYgKHRoaXMuaXNSb3dTZWxlY3RlZChpbmRleCkpIHsKICAg
ICAgICAgICAgICAgICB0aGlzLl9zZWxlY3RlZFJvd3MuZGVsZXRlKGluZGV4KTsKICAgICAgICAg
ICAgICAgICB0aGlzLl9zZWxlY3RlZFJvd3MuYWRkKG5ld0luZGV4KTsKICAgICAgICAgICAgICAg
ICBpZiAodGhpcy5fc2VsZWN0ZWRSb3dJbmRleCA9PT0gaW5kZXgpCkBAIC0xNDkzLDExICsxNDk4
LDYgQEAgV0kuVGFibGUgPSBjbGFzcyBUYWJsZSBleHRlbmRzIFdJLlZpZXcKICAgICAgICAgfQog
ICAgIH0KIAotICAgIF9pc1Jvd1NlbGVjdGVkKHJvd0luZGV4KQotICAgIHsKLSAgICAgICAgcmV0
dXJuIHRoaXMuX3NlbGVjdGVkUm93cy5oYXMocm93SW5kZXgpOwotICAgIH0KLQogICAgIF9ub3Rp
ZnlTZWxlY3Rpb25EaWRDaGFuZ2UoKQogICAgIHsKICAgICAgICAgaWYgKHRoaXMuX3N1cHByZXNz
TmV4dFNlbGVjdGlvbkRpZENoYW5nZSkgewo=
</data>

          </attachment>
      

    </bug>

</bugzilla>