<?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>202065</bug_id>
          
          <creation_ts>2019-09-20 17:15:48 -0700</creation_ts>
          <short_desc>REGRESSION(r243264): Web Inspector: Style pane doesn&apos;t update after toggling CSS class</short_desc>
          <delta_ts>2020-09-01 23:57: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>WebKit Nightly Build</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Nikita Vasilyev">nvasilyev</reporter>
          <assigned_to name="Nikita Vasilyev">nvasilyev</assigned_to>
          <cc>bburg</cc>
    
    <cc>hi</cc>
    
    <cc>inspector-bugzilla-changes</cc>
    
    <cc>joepeck</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1572965</commentid>
    <comment_count>0</comment_count>
      <attachid>379288</attachid>
    <who name="Nikita Vasilyev">nvasilyev</who>
    <bug_when>2019-09-20 17:15:48 -0700</bug_when>
    <thetext>Created attachment 379288
Reduction 1

Steps:
1. Open toggle-class.html
2. Inspect &lt;div class=&quot;a b&quot;&gt;
3. Click &quot;Classes&quot; button at the bottom right corner of Web Inspector
4. Unckeck &quot;b&quot; class

Expected:
The style editor should not show &quot;b&quot; style rule anymore.

Actual:
The style editor doesn&apos;t update — &quot;b&quot; style rule is still visible.

Notes:
Regressed in bug 178489: Web Inspector: Styles Redesign: Editing selector should not hide the rule
https://trac.webkit.org/changeset/243264/webkit

Interestingly, editing &quot;class&quot; attribute in the DOM outline works fine.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1572966</commentid>
    <comment_count>1</comment_count>
    <who name="Nikita Vasilyev">nvasilyev</who>
    <bug_when>2019-09-20 17:16:51 -0700</bug_when>
    <thetext>&lt;rdar://problem/55149141&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1572989</commentid>
    <comment_count>2</comment_count>
    <who name="Nikita Vasilyev">nvasilyev</who>
    <bug_when>2019-09-20 17:46:53 -0700</bug_when>
    <thetext>r243264 removed code that cleared the maps. After r243264, maps don&apos;t get cleared.

         function fetchedMatchedStyles(error, matchedRulesPayload, pseudoElementRulesPayload, inheritedRulesPayload)
         {
@@ -142,20 +188,12 @@ WI.DOMNodeStyles = class DOMNodeStyles extends WI.Object
             pseudoElementRulesPayload = pseudoElementRulesPayload || [];
             inheritedRulesPayload = inheritedRulesPayload || [];
 
-            // Move the current maps to previous.
-            this._previousRulesMap = this._rulesMap;
-            this._previousStyleDeclarationsMap = this._styleDeclarationsMap;
-
-            // Clear the current maps.
-            this._rulesMap = {};
-            this._styleDeclarationsMap = {};

Because of this, WI.DOMNodeStyles.Event.Refreshed gets called with significantChange set to false. significantChange can be true only when a style rule is new (and not present in previousStylesMap).

The style rules only get updated when WI.DOMNodeStyles.Event.Refreshed is fired with significantChange set to true.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1572996</commentid>
    <comment_count>3</comment_count>
      <attachid>379298</attachid>
    <who name="Nikita Vasilyev">nvasilyev</who>
    <bug_when>2019-09-20 18:06:29 -0700</bug_when>
    <thetext>Created attachment 379298
Patch

This fixes the bug and clears the maps as it was before the regression was introduced.

However, I&apos;ve noticed that the existing (and pretty old) code may have race conditions. `fetchedMatchedStyles` and` fetchedComputedStyle` are called in parallel and they modify the same variables. I&apos;ll take a closer look.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1573003</commentid>
    <comment_count>4</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2019-09-20 18:12:11 -0700</bug_when>
    <thetext>&gt; However, I&apos;ve noticed that the existing (and pretty old) code may have race
&gt; conditions. `fetchedMatchedStyles` and` fetchedComputedStyle` are called in
&gt; parallel and they modify the same variables. I&apos;ll take a closer look.

Backend commands, unless they are marked `async`, are serial. So the order of responses should be deterministic.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1573006</commentid>
    <comment_count>5</comment_count>
      <attachid>379298</attachid>
    <who name="Nikita Vasilyev">nvasilyev</who>
    <bug_when>2019-09-20 18:15:53 -0700</bug_when>
    <thetext>Comment on attachment 379298
Patch

Oh, the patch should be good to review then!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1573053</commentid>
    <comment_count>6</comment_count>
      <attachid>379298</attachid>
    <who name="Nikita Vasilyev">nvasilyev</who>
    <bug_when>2019-09-21 01:18:34 -0700</bug_when>
    <thetext>Comment on attachment 379298
Patch

Several tests are failing :(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1573533</commentid>
    <comment_count>7</comment_count>
      <attachid>379419</attachid>
    <who name="Nikita Vasilyev">nvasilyev</who>
    <bug_when>2019-09-23 20:22:30 -0700</bug_when>
    <thetext>Created attachment 379419
Patch

To run on bots. Not for review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1573534</commentid>
    <comment_count>8</comment_count>
      <attachid>379419</attachid>
    <who name="Nikita Vasilyev">nvasilyev</who>
    <bug_when>2019-09-23 20:36:32 -0700</bug_when>
    <thetext>Comment on attachment 379419
Patch

Setting r? so the bots run the tests. Don&apos;t review.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1573535</commentid>
    <comment_count>9</comment_count>
      <attachid>379420</attachid>
    <who name="Nikita Vasilyev">nvasilyev</who>
    <bug_when>2019-09-23 20:37:56 -0700</bug_when>
    <thetext>Created attachment 379420
Patch for bots</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1573828</commentid>
    <comment_count>10</comment_count>
      <attachid>379420</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2019-09-24 14:24:18 -0700</bug_when>
    <thetext>Comment on attachment 379420
Patch for bots

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

r-, we don&apos;t want to just revert these changes, as IIRC they were necessary in order for r243264 to work correctly.

(In reply to Nikita Vasilyev from comment #2)
&gt; r243264 removed code that cleared the maps. After r243264, maps don&apos;t get cleared.
&gt; 
&gt;          function fetchedMatchedStyles(error, matchedRulesPayload, pseudoElementRulesPayload, inheritedRulesPayload)
&gt;          {
&gt; @@ -142,20 +188,12 @@ WI.DOMNodeStyles = class DOMNodeStyles extends WI.Object
&gt;              pseudoElementRulesPayload = pseudoElementRulesPayload || [];
&gt;              inheritedRulesPayload = inheritedRulesPayload || [];
&gt;  
&gt; -            // Move the current maps to previous.
&gt; -            this._previousRulesMap = this._rulesMap;
&gt; -            this._previousStyleDeclarationsMap = this._styleDeclarationsMap;
&gt; -
&gt; -            // Clear the current maps.
&gt; -            this._rulesMap = {};
&gt; -            this._styleDeclarationsMap = {};
&gt; 
&gt; Because of this, WI.DOMNodeStyles.Event.Refreshed gets called with significantChange set to false. significantChange can be true only when a style rule is new (and not present in previousStylesMap).
&gt; 
&gt; The style rules only get updated when WI.DOMNodeStyles.Event.Refreshed is fired with significantChange set to true.
If that&apos;s the case, can we change the logic for how `significantChange` is determined instead?  It seems like that is the real issue here, not how (or what) we decide to keep in a map.

&gt; Source/WebInspectorUI/ChangeLog:9
&gt; +        Revert all changes related to `_styleDeclarationsMap`.

Why does this solve the problem?  Please add some description either to your investigation or why/how you arrived at this conclusion in the ChangeLog.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1573843</commentid>
    <comment_count>11</comment_count>
    <who name="Nikita Vasilyev">nvasilyev</who>
    <bug_when>2019-09-24 14:34:32 -0700</bug_when>
    <thetext>This wasn’t ready for review. Sorry it wasn’t obvious. Bots don’t run tests if I set “r-“ :/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1574215</commentid>
    <comment_count>12</comment_count>
      <attachid>379579</attachid>
    <who name="Nikita Vasilyev">nvasilyev</who>
    <bug_when>2019-09-25 14:25:29 -0700</bug_when>
    <thetext>Created attachment 379579
Patch for bots, not for review</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1574327</commentid>
    <comment_count>13</comment_count>
      <attachid>379611</attachid>
    <who name="Nikita Vasilyev">nvasilyev</who>
    <bug_when>2019-09-25 19:23:21 -0700</bug_when>
    <thetext>Created attachment 379611
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1574329</commentid>
    <comment_count>14</comment_count>
      <attachid>379612</attachid>
    <who name="Nikita Vasilyev">nvasilyev</who>
    <bug_when>2019-09-25 19:28:31 -0700</bug_when>
    <thetext>Created attachment 379612
[Animated GIF] With patch applied</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1575881</commentid>
    <comment_count>15</comment_count>
      <attachid>379611</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2019-10-01 21:22:03 -0700</bug_when>
    <thetext>Comment on attachment 379611
Patch

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

This causes a UI regression the Styles panel:
1. inspect &lt;https://devinrousso.com&gt;
2. select the node matching `body &gt; header &gt; nav &gt; ul &gt; li:nth-child(1) &gt; a` in the Elements Tab
3. change the `a.roll` selector to be some garbage (e.g. &quot;asdasdasd&quot;)
4. change the `header&gt;nav&gt;ul&gt;li&gt;a.selected` selector to be some garbage (e.g. &quot;zxczxczxc&quot;)
 =&gt; all the group &quot;headers&quot; (e.g. &quot;Pseudo-Element ...&quot; or &quot;Inherited From ...&quot;) move to the bottom of the styles sidebar

I think this has something to do with the fact that `_headerMap` (`WI.SpreadsheetRulesStyleDetailsPanel`) uses the specific `WI.CSSStyleDeclaration` instance as a key to reference the DOM node group &quot;header&quot;.

&gt; Source/WebInspectorUI/ChangeLog:9
&gt; +        r243264 never cleared `_styleMap`. Create and clear `_styleMap` at the same place as it was before r243264.

Why does clearing the `_styleMap` fix this issue?  Can you explain what&apos;s going on here?

&gt; Source/WebInspectorUI/UserInterface/Models/DOMNodeStyles.js:-161
&gt; -        let previousStylesMap = this._stylesMap.copy();

I think this was the only usage of `Multimap.prototype.copy`.  If it&apos;s this expensive, perhaps we should remove it?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1576109</commentid>
    <comment_count>16</comment_count>
    <who name="Nikita Vasilyev">nvasilyev</who>
    <bug_when>2019-10-02 12:27:09 -0700</bug_when>
    <thetext>(In reply to Devin Rousso from comment #15)
&gt; Comment on attachment 379611 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=379611&amp;action=review
&gt; 
&gt; This causes a UI regression the Styles panel: [...]

Yes, I can reproduce it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1577482</commentid>
    <comment_count>17</comment_count>
    <who name="Nikita Vasilyev">nvasilyev</who>
    <bug_when>2019-10-07 13:44:19 -0700</bug_when>
    <thetext>(In reply to Devin Rousso from comment #15)
&gt; Comment on attachment 379611 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=379611&amp;action=review
&gt; 
&gt; This causes a UI regression the Styles panel:
&gt; 1. inspect &lt;https://devinrousso.com&gt;
&gt; 2. select the node matching `body &gt; header &gt; nav &gt; ul &gt; li:nth-child(1) &gt; a`
&gt; in the Elements Tab
&gt; 3. change the `a.roll` selector to be some garbage (e.g. &quot;asdasdasd&quot;)
&gt; 4. change the `header&gt;nav&gt;ul&gt;li&gt;a.selected` selector to be some garbage
&gt; (e.g. &quot;zxczxczxc&quot;)
&gt;  =&gt; all the group &quot;headers&quot; (e.g. &quot;Pseudo-Element ...&quot; or &quot;Inherited From
&gt; ...&quot;) move to the bottom of the styles sidebar

This causes the UI regression because it fixed the significantChange logic.

r243264 introduced a regression in the significantChange logic, so WI.SpreadsheetRulesStyleDetailsPanel#layout wouldn&apos;t get called when it should. That was the real reason non-matching rules stayed visible.

This code was added in r243264:


    layout()
    {
        ...
        if (preservedSections.length) {
            for (let section of oldSections) {
                if (!preservedSections.includes(section))
                    this.removeSubview(section);
            }
            for (let header of this._headerMap.values())
                header.remove();
        }

It&apos;s a dead code. If you go through the steps on ToT WebKit, you can see that WI.SpreadsheetRulesStyleDetailsPanel#layout doesn&apos;t even get called on step 3 or 4.

When I reverted significantChange logic back to normal, this code started running.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1585784</commentid>
    <comment_count>18</comment_count>
      <attachid>379611</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2019-10-30 22:26:45 -0700</bug_when>
    <thetext>Comment on attachment 379611
Patch

r-, since this causes a regression.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1683763</commentid>
    <comment_count>19</comment_count>
      <attachid>407500</attachid>
    <who name="Nikita Vasilyev">nvasilyev</who>
    <bug_when>2020-08-28 14:27:10 -0700</bug_when>
    <thetext>Created attachment 407500
Reduction 2

This also reproduces when JS on a web page changes CSS classes related to the inspected element. (via rdar://67419397)

Steps:
1. Open &quot;Reduction 2&quot;
2. Inspect &lt;body&gt;
3. Press &quot;Toggle background&quot; button on the web page

Expected:
The Styles sidebar should no longer show &quot;.foo&quot; rule.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1684141</commentid>
    <comment_count>20</comment_count>
    <who name="Nikita Vasilyev">nvasilyev</who>
    <bug_when>2020-08-31 09:07:11 -0700</bug_when>
    <thetext>There are two distinct use cases in play here:

1. CSS class added/removed from an element causing the style editor to update. The style editor should update with CSSAgent.getMatchedStylesForNode payload. (Currently broken.)

2. Web developer modified CSS selector in the style editor. The style editor should NOT update — the modified CSS rule should stay visible.

Pretty straightforward so far.

What happens if the 2nd case is followed by the 1st? This is where it may get complicated. Two different solutions:

EASY
Show only matching rules. That’s what both Chrome DevTools and Firefox DevTools do.

HARD
Show both matching rules and non-matching rules. If we do this, how do we reconcile matching and non-matching rules? The existing code in WI.SpreadsheetRulesStyleDetailsPanel attempts to save and restore the index of the non-matching rules (note that this code doesn’t actually work, see Comment 17 above). This would cause rather strange behavior when the matching rules change significantly.

I think modifying selector to something that doesn’t match the inspected element is relatively rare. Getting CSS classes added/removed after editing a selector to something that doesn’t match the inspected element must be very-very rare. I think we should go with the easy approach.

I have a working patch, and I’m working on the tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1684217</commentid>
    <comment_count>21</comment_count>
      <attachid>407617</attachid>
    <who name="Nikita Vasilyev">nvasilyev</who>
    <bug_when>2020-08-31 12:50:35 -0700</bug_when>
    <thetext>Created attachment 407617
Patch

DOMNodeStyles.js changes here are the same as in the previous patch.
SpreadsheetRulesStyleDetailsPanel.js changes are new.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1684223</commentid>
    <comment_count>22</comment_count>
    <who name="Nikita Vasilyev">nvasilyev</who>
    <bug_when>2020-08-31 12:57:52 -0700</bug_when>
    <thetext>(In reply to Nikita Vasilyev from comment #20)
&gt; EASY
&gt; Show only matching rules. That’s what both Chrome DevTools and Firefox
&gt; DevTools do.

The most straightforward way of implementing this would be to add a flag like _ignoreNextLayout in SpreadsheetRulesStyleDetailsPanel, that is added after editing a selector. This might have worked, but in my experience introducing a state like this tends to produce more error prone code. I didn&apos;t pursue this approach.

I&apos;ve gone a slightly different route of implementing the easy approach (see the patch).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1684256</commentid>
    <comment_count>23</comment_count>
      <attachid>407617</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2020-08-31 14:28:09 -0700</bug_when>
    <thetext>Comment on attachment 407617
Patch

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

&gt; Source/WebInspectorUI/ChangeLog:15
&gt; +        the same place as it was before r243264.

Nit: explain that if the map isn&apos;t cleared, then it is not possible to diff old and new style declarations.

&gt; Source/WebInspectorUI/ChangeLog:21
&gt; +        exiting exiting layout early.

Nit: exiting exiting

&gt; Source/WebInspectorUI/UserInterface/Views/SpreadsheetRulesStyleDetailsPanel.js:345
&gt; +    _getStyleIds(styles)

It&apos;s weird to put this method here considering it doesn&apos;t use `this`. It should be a static method or added to DOMNodeStyles. And the name should be more descriptive, i.e., used like this

    styles.authorStyles().map((style) =&gt; style.stringId)

That said, I don&apos;t quite understand why this method exists at all. Is it just a workaround for https://webkit.org/b/110055?

&gt; Source/WebInspectorUI/UserInterface/Views/SpreadsheetRulesStyleDetailsPanel.js:348
&gt; +            // FIXME: &lt;https://webkit.org/b/110055&gt; Web Inspector: User Agent style stylesheet identifier keeps incrementing

Not sure why this FIXME is relevant. Can you explain or remove it?

&gt; Source/WebInspectorUI/UserInterface/Views/SpreadsheetRulesStyleDetailsPanel.js:378
&gt; +        console.assert(found, &quot;Could not find style rule of edited selector.&quot;);

Nit: please include the relevant object(s) as extra arguments to console.assert. Here it would be this._renderedStyleIds and section.style.stringId</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1684263</commentid>
    <comment_count>24</comment_count>
      <attachid>407617</attachid>
    <who name="Nikita Vasilyev">nvasilyev</who>
    <bug_when>2020-08-31 14:50:58 -0700</bug_when>
    <thetext>Comment on attachment 407617
Patch

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

&gt;&gt; Source/WebInspectorUI/ChangeLog:15
&gt;&gt; +        the same place as it was before r243264.
&gt; 
&gt; Nit: explain that if the map isn&apos;t cleared, then it is not possible to diff old and new style declarations.

Good point.

&gt;&gt; Source/WebInspectorUI/UserInterface/Views/SpreadsheetRulesStyleDetailsPanel.js:345
&gt;&gt; +    _getStyleIds(styles)
&gt; 
&gt; It&apos;s weird to put this method here considering it doesn&apos;t use `this`. It should be a static method or added to DOMNodeStyles. And the name should be more descriptive, i.e., used like this
&gt; 
&gt;     styles.authorStyles().map((style) =&gt; style.stringId)
&gt; 
&gt; That said, I don&apos;t quite understand why this method exists at all. Is it just a workaround for https://webkit.org/b/110055?

Yes, it&apos;s a workaround for https://webkit.org/b/110055. I check if the style ids have changed on line 227. Unfortunately, the UserAgent style ids increment every time and are unreliable. It&apos;s safe to exclude them here because UserAgent styles don&apos;t get affected by CSS classes being added/removed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1684270</commentid>
    <comment_count>25</comment_count>
      <attachid>407617</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2020-08-31 15:03:01 -0700</bug_when>
    <thetext>Comment on attachment 407617
Patch

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

&gt;&gt;&gt; Source/WebInspectorUI/UserInterface/Views/SpreadsheetRulesStyleDetailsPanel.js:345
&gt;&gt;&gt; +    _getStyleIds(styles)
&gt;&gt; 
&gt;&gt; It&apos;s weird to put this method here considering it doesn&apos;t use `this`. It should be a static method or added to DOMNodeStyles. And the name should be more descriptive, i.e., used like this
&gt;&gt; 
&gt;&gt;     styles.authorStyles().map((style) =&gt; style.stringId)
&gt;&gt; 
&gt;&gt; That said, I don&apos;t quite understand why this method exists at all. Is it just a workaround for https://webkit.org/b/110055?
&gt; 
&gt; Yes, it&apos;s a workaround for https://webkit.org/b/110055. I check if the style ids have changed on line 227. Unfortunately, the UserAgent style ids increment every time and are unreliable. It&apos;s safe to exclude them here because UserAgent styles don&apos;t get affected by CSS classes being added/removed.

That isn&apos;t entirely accurate.  There is UserAgent CSS for media controls that adjusts depending on a class, not to mention rules that may/not apply if other things are changed (e.g. the tag of a node, the `type` of an `input`, etc.) although these may already be considered a `significantChange` for other reasons.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1684273</commentid>
    <comment_count>26</comment_count>
    <who name="Nikita Vasilyev">nvasilyev</who>
    <bug_when>2020-08-31 15:10:13 -0700</bug_when>
    <thetext>Yeah, my patch has an issue with changing &lt;input type=checkbox&gt; to &lt;input type=text&gt; - styles don&apos;t update :(
I tried it on http://nv.github.io/webkit-inspector-bugs/all-element-types.html.

Just curious, what&apos;s UserAgent CSS for media controls that adjusts depending on a class?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1684278</commentid>
    <comment_count>27</comment_count>
    <who name="Nikita Vasilyev">nvasilyev</who>
    <bug_when>2020-08-31 15:18:28 -0700</bug_when>
    <thetext>Changing &lt;input type=checkbox&gt; to &lt;input type=text&gt; doesn&apos;t update styles and it has been broken long before r243264. To fix that, we really need to fix Bug 110055 - Web Inspector: User Agent style stylesheet identifier keeps incrementing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1684279</commentid>
    <comment_count>28</comment_count>
    <who name="Devin Rousso">hi</who>
    <bug_when>2020-08-31 15:21:00 -0700</bug_when>
    <thetext>(In reply to Nikita Vasilyev from comment #26)
&gt; Yeah, my patch has an issue with changing &lt;input type=checkbox&gt; to &lt;input type=text&gt; - styles don&apos;t update :(
&gt; I tried it on http://nv.github.io/webkit-inspector-bugs/all-element-types.html.
&gt; 
&gt; Just curious, what&apos;s UserAgent CSS for media controls that adjusts depending on a class?

I dunno off the top of my head, but I wouldn&apos;t be surprised if you could find a handful of examples in Source/WebCore/modules/modern-media-controls/</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1684530</commentid>
    <comment_count>29</comment_count>
      <attachid>407694</attachid>
    <who name="Nikita Vasilyev">nvasilyev</who>
    <bug_when>2020-09-01 10:28:40 -0700</bug_when>
    <thetext>Created attachment 407694
Patch

cq- because there&apos;s still no tests.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1684531</commentid>
    <comment_count>30</comment_count>
    <who name="Nikita Vasilyev">nvasilyev</who>
    <bug_when>2020-09-01 10:30:23 -0700</bug_when>
    <thetext>(In reply to Nikita Vasilyev from comment #27)
&gt; Changing &lt;input type=checkbox&gt; to &lt;input type=text&gt; doesn&apos;t update styles
&gt; and it has been broken long before r243264. To fix that, we really need to
&gt; fix Bug 110055 - Web Inspector: User Agent style stylesheet identifier keeps
&gt; incrementing.

I filed &quot;bug 216040: Web Inspector: Elements: styles don&apos;t update for certain cases related to UserAgent styles&quot; for this particular case.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1684650</commentid>
    <comment_count>31</comment_count>
      <attachid>407715</attachid>
    <who name="Nikita Vasilyev">nvasilyev</who>
    <bug_when>2020-09-01 15:59:59 -0700</bug_when>
    <thetext>Created attachment 407715
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1684659</commentid>
    <comment_count>32</comment_count>
      <attachid>407715</attachid>
    <who name="Blaze Burg">bburg</who>
    <bug_when>2020-09-01 16:15:02 -0700</bug_when>
    <thetext>Comment on attachment 407715
Patch

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

r=me, great work!

&gt; LayoutTests/ChangeLog:9
&gt; +        Added a test to veryfy that WI.DOMNodeStyles.Event.Refreshed fires with appropriate

Nit: verify

&gt; Source/WebInspectorUI/UserInterface/Views/SpreadsheetRulesStyleDetailsPanel.js:47
&gt; +        this._ignoreLayoutAfterSelectorChange = false;

Nit: please rename. We typically name this &apos;suppress&apos; if it&apos;s stopping something from happening. i.e., this._suppressLayoutAfterSelectorChange.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1684663</commentid>
    <comment_count>33</comment_count>
      <attachid>407718</attachid>
    <who name="Nikita Vasilyev">nvasilyev</who>
    <bug_when>2020-09-01 16:24:53 -0700</bug_when>
    <thetext>Created attachment 407718
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1684664</commentid>
    <comment_count>34</comment_count>
      <attachid>407715</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2020-09-01 16:25:21 -0700</bug_when>
    <thetext>Comment on attachment 407715
Patch

nice UI fix, well done :)

&gt; LayoutTests/inspector/css/node-styles-refreshed.html:12
&gt; +        test(resolve, reject) {

NIT: can we make these tests `async` and use `await` instead?

&gt; Source/WebInspectorUI/UserInterface/Views/SpreadsheetRulesStyleDetailsPanel.js:45
&gt; +        this._renderedStyleIds = null;

NIT: not used

&gt; Source/WebInspectorUI/UserInterface/Views/SpreadsheetRulesStyleDetailsPanel.js:224
&gt; +        let uniqueOrderedStyles = this.nodeStyles.uniqueOrderedStyles;

NIT: I think you can undo this move now

&gt; Source/WebInspectorUI/UserInterface/Views/SpreadsheetRulesStyleDetailsPanel.js:229
&gt; +            if (this._selectedNodeId &amp;&amp; this._selectedNodeId === this.nodeStyles.node.id)
&gt; +                return;

Is this still needed?  I don&apos;t think a selector change will also change the `this.nodeStyles.node.id`.

&gt; Source/WebInspectorUI/UserInterface/Views/SpreadsheetRulesStyleDetailsPanel.js:366
&gt; +        this._ignoreLayoutAfterSelectorChange = true;

Rather than ignoring the next `layout`, can we use `cancelLayout` instead?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1684667</commentid>
    <comment_count>35</comment_count>
      <attachid>407715</attachid>
    <who name="Nikita Vasilyev">nvasilyev</who>
    <bug_when>2020-09-01 16:49:04 -0700</bug_when>
    <thetext>Comment on attachment 407715
Patch

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

&gt;&gt; LayoutTests/inspector/css/node-styles-refreshed.html:12
&gt;&gt; +        test(resolve, reject) {
&gt; 
&gt; NIT: can we make these tests `async` and use `await` instead?

Where would I use `await` in this test? I&apos;m a bit of a noob here.

&gt;&gt; Source/WebInspectorUI/UserInterface/Views/SpreadsheetRulesStyleDetailsPanel.js:45
&gt;&gt; +        this._renderedStyleIds = null;
&gt; 
&gt; NIT: not used

Thanks!

&gt;&gt; Source/WebInspectorUI/UserInterface/Views/SpreadsheetRulesStyleDetailsPanel.js:224
&gt;&gt; +        let uniqueOrderedStyles = this.nodeStyles.uniqueOrderedStyles;
&gt; 
&gt; NIT: I think you can undo this move now

Yep.

&gt;&gt; Source/WebInspectorUI/UserInterface/Views/SpreadsheetRulesStyleDetailsPanel.js:229
&gt;&gt; +                return;
&gt; 
&gt; Is this still needed?  I don&apos;t think a selector change will also change the `this.nodeStyles.node.id`.

Yes. I want to always re-layout the style editor when selecting a different element in the DOM tree outline.

&gt;&gt; Source/WebInspectorUI/UserInterface/Views/SpreadsheetRulesStyleDetailsPanel.js:366
&gt;&gt; +        this._ignoreLayoutAfterSelectorChange = true;
&gt; 
&gt; Rather than ignoring the next `layout`, can we use `cancelLayout` instead?

Hm, I&apos;m a bit concerned by how much WI.View._cancelScheduledLayoutForView is doing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1684670</commentid>
    <comment_count>36</comment_count>
      <attachid>407715</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2020-09-01 17:08:15 -0700</bug_when>
    <thetext>Comment on attachment 407715
Patch

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

&gt;&gt;&gt; LayoutTests/inspector/css/node-styles-refreshed.html:12
&gt;&gt;&gt; +        test(resolve, reject) {
&gt;&gt; 
&gt;&gt; NIT: can we make these tests `async` and use `await` instead?
&gt; 
&gt; Where would I use `await` in this test? I&apos;m a bit of a noob here.

Fundamentally, tests are very synchronous in the sense that the output has to match the expectation file exactly, meaning that there is an order to &quot;all the things&quot;.  `async` and `await` allow you to write asynchronous code in such a way that it appears synchronous, even though it&apos;s not.

In the case of these tests, because `WI.Object` event listeners fire synchronously, we know that the `Promise` returned from `nodeStyles.refresh()` will resolve _after_ `WI.DOMNodeStyles.Event.Refreshed` is dispatched, meaning we know that the `InspectorTest.expectTrue` will be executed before the `finally`.  As such, we can simply change this test to be like so:
```
    async test() {
        nodeStyles.singleFireEventListener(WI.DOMNodeStyles.Event.Refreshed, (event) =&gt; {
            InspectorTest.expectTrue(event.data.significantChange, `Adding &apos;.baz&apos; class should cause a significant change.`);
        });

        InspectorTest.evaluateInPage(`document.body.classList.add(&quot;baz&quot;)`);

        await nodeStyles.refresh();
    }
```
IMO the majority of asynchronous Web Inspector tests could be written with `async` and be _far_ more readable than if they used `resolve`/`reject`.  I&apos;d suggest searching for `async test()` in `LayoutTests/inspector/` (the changes I recently made for r266074 are a good example) and looking at how it&apos;s used elsewhere too :)

&gt;&gt;&gt; Source/WebInspectorUI/UserInterface/Views/SpreadsheetRulesStyleDetailsPanel.js:229
&gt;&gt;&gt; +                return;
&gt;&gt; 
&gt;&gt; Is this still needed?  I don&apos;t think a selector change will also change the `this.nodeStyles.node.id`.
&gt; 
&gt; Yes. I want to always re-layout the style editor when selecting a different element in the DOM tree outline.

Right, but when will this code actually be used in practice?  A `layout` should happen after the selector is changed, so any future `layout` (such as if the node is changed) shouldn&apos;t have `this._ignoreLayoutAfterSelectorChange` set anyways.

&gt;&gt;&gt; Source/WebInspectorUI/UserInterface/Views/SpreadsheetRulesStyleDetailsPanel.js:366
&gt;&gt;&gt; +        this._ignoreLayoutAfterSelectorChange = true;
&gt;&gt; 
&gt;&gt; Rather than ignoring the next `layout`, can we use `cancelLayout` instead?
&gt; 
&gt; Hm, I&apos;m a bit concerned by how much WI.View._cancelScheduledLayoutForView is doing.

It&apos;s just reversing what&apos;s done in `WI.View._scheduleLayoutForView`.  It&apos;s possible that `cancelLayout` might not work, but if it does work I think that&apos;s preferred to keeping another property.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1684671</commentid>
    <comment_count>37</comment_count>
      <attachid>407715</attachid>
    <who name="Nikita Vasilyev">nvasilyev</who>
    <bug_when>2020-09-01 17:32:29 -0700</bug_when>
    <thetext>Comment on attachment 407715
Patch

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

&gt;&gt;&gt;&gt; LayoutTests/inspector/css/node-styles-refreshed.html:12
&gt;&gt;&gt;&gt; +        test(resolve, reject) {
&gt;&gt;&gt; 
&gt;&gt;&gt; NIT: can we make these tests `async` and use `await` instead?
&gt;&gt; 
&gt;&gt; Where would I use `await` in this test? I&apos;m a bit of a noob here.
&gt; 
&gt; Fundamentally, tests are very synchronous in the sense that the output has to match the expectation file exactly, meaning that there is an order to &quot;all the things&quot;.  `async` and `await` allow you to write asynchronous code in such a way that it appears synchronous, even though it&apos;s not.
&gt; 
&gt; In the case of these tests, because `WI.Object` event listeners fire synchronously, we know that the `Promise` returned from `nodeStyles.refresh()` will resolve _after_ `WI.DOMNodeStyles.Event.Refreshed` is dispatched, meaning we know that the `InspectorTest.expectTrue` will be executed before the `finally`.  As such, we can simply change this test to be like so:
&gt; ```
&gt;     async test() {
&gt;         nodeStyles.singleFireEventListener(WI.DOMNodeStyles.Event.Refreshed, (event) =&gt; {
&gt;             InspectorTest.expectTrue(event.data.significantChange, `Adding &apos;.baz&apos; class should cause a significant change.`);
&gt;         });
&gt; 
&gt;         InspectorTest.evaluateInPage(`document.body.classList.add(&quot;baz&quot;)`);
&gt; 
&gt;         await nodeStyles.refresh();
&gt;     }
&gt; ```
&gt; IMO the majority of asynchronous Web Inspector tests could be written with `async` and be _far_ more readable than if they used `resolve`/`reject`.  I&apos;d suggest searching for `async test()` in `LayoutTests/inspector/` (the changes I recently made for r266074 are a good example) and looking at how it&apos;s used elsewhere too :)

Neat! I like it.

&gt;&gt;&gt;&gt; Source/WebInspectorUI/UserInterface/Views/SpreadsheetRulesStyleDetailsPanel.js:229
&gt;&gt;&gt;&gt; +                return;
&gt;&gt;&gt; 
&gt;&gt;&gt; Is this still needed?  I don&apos;t think a selector change will also change the `this.nodeStyles.node.id`.
&gt;&gt; 
&gt;&gt; Yes. I want to always re-layout the style editor when selecting a different element in the DOM tree outline.
&gt; 
&gt; Right, but when will this code actually be used in practice?  A `layout` should happen after the selector is changed, so any future `layout` (such as if the node is changed) shouldn&apos;t have `this._ignoreLayoutAfterSelectorChange` set anyways.

Oh, I see what you&apos;re saying. This extra precaution would make sense if there were cases when `layout` doesn&apos;t happen after editing a selector. I haven&apos;t found such cases so it should be safe to remove it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1684726</commentid>
    <comment_count>38</comment_count>
      <attachid>407741</attachid>
    <who name="Nikita Vasilyev">nvasilyev</who>
    <bug_when>2020-09-01 23:21:07 -0700</bug_when>
    <thetext>Created attachment 407741
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1684727</commentid>
    <comment_count>39</comment_count>
      <attachid>407715</attachid>
    <who name="Nikita Vasilyev">nvasilyev</who>
    <bug_when>2020-09-01 23:23:10 -0700</bug_when>
    <thetext>Comment on attachment 407715
Patch

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

&gt;&gt;&gt;&gt; Source/WebInspectorUI/UserInterface/Views/SpreadsheetRulesStyleDetailsPanel.js:366
&gt;&gt;&gt;&gt; +        this._ignoreLayoutAfterSelectorChange = true;
&gt;&gt;&gt; 
&gt;&gt;&gt; Rather than ignoring the next `layout`, can we use `cancelLayout` instead?
&gt;&gt; 
&gt;&gt; Hm, I&apos;m a bit concerned by how much WI.View._cancelScheduledLayoutForView is doing.
&gt; 
&gt; It&apos;s just reversing what&apos;s done in `WI.View._scheduleLayoutForView`.  It&apos;s possible that `cancelLayout` might not work, but if it does work I think that&apos;s preferred to keeping another property.

`cancelLayout` doesn&apos;t work here because it cancels a scheduled layout. Here, the layout hasn&apos;t been scheduled yet.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1684734</commentid>
    <comment_count>40</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-09-01 23:57:12 -0700</bug_when>
    <thetext>Committed r266451: &lt;https://trac.webkit.org/changeset/266451&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 407741.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>379288</attachid>
            <date>2019-09-20 17:15:48 -0700</date>
            <delta_ts>2020-08-28 14:21:04 -0700</delta_ts>
            <desc>Reduction 1</desc>
            <filename>toggle-class.html</filename>
            <type>text/html</type>
            <size>249</size>
            <attacher name="Nikita Vasilyev">nvasilyev</attacher>
            
              <data encoding="base64">PCFET0NUWVBFIGh0bWw+CjxodG1sPgo8aGVhZD4KICAgIDxtZXRhIGNoYXJzZXQ9IlVURi04Ij4K
ICAgIDx0aXRsZT5Ub2dnbGluZyBDbGFzc2VzPC90aXRsZT4KICAgIDxzdHlsZT4KICAgIC5hIHti
b3JkZXI6IDFweCBzb2xpZCByZWR9CiAgICAuYiB7YmFja2dyb3VuZDogI2ZmZThjNn0KICAgIDwv
c3R5bGU+CjwvaGVhZD4KPGJvZHk+CjxkaXYgY2xhc3M9ImEgYiI+VG9nZ2xpbmcgQ2xhc3Nlczwv
ZGl2Pgo8L2JvZHk+CjwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>379298</attachid>
            <date>2019-09-20 18:06:29 -0700</date>
            <delta_ts>2019-09-23 20:22:30 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>1522</size>
            <attacher name="Nikita Vasilyev">nvasilyev</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvQ2hhbmdlTG9nCmluZGV4IDZlMzVlZmRhNWI3Li5iMDFiYzYzZmE0NyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTktMDktMjAgIE5pa2l0
YSBWYXNpbHlldiAgPG52YXNpbHlldkBhcHBsZS5jb20+CisKKyAgICAgICAgUkVHUkVTU0lPTihy
MjQzMjY0KTogV2ViIEluc3BlY3RvcjogU3R5bGUgcGFuZSBkb2Vzbid0IHVwZGF0ZSBhZnRlciB0
b2dnbGluZyBDU1MgY2xhc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIwMjA2NQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTUxNDkxNDE+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ2xlYXIgc3R5bGUg
YW5kIHJ1bGUgbWFwcyBhcyBpdCB3YXMgYmVmb3JlIHIyNDMyNjQuCisKKyAgICAgICAgKiBVc2Vy
SW50ZXJmYWNlL01vZGVscy9ET01Ob2RlU3R5bGVzLmpzOgorICAgICAgICAoV0kuRE9NTm9kZVN0
eWxlcy5wcm90b3R5cGUucmVmcmVzaC5mZXRjaGVkTWF0Y2hlZFN0eWxlcyk6CisKIDIwMTktMDkt
MTMgIEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWIg
SW5zcGVjdG9yOiBUaWdodGVyIGF1dG9jb21wbGV0ZSBidWJibGVzCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvRE9NTm9kZVN0eWxlcy5qcyBi
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9ET01Ob2RlU3R5bGVz
LmpzCmluZGV4IDVkOWM3YmNkMGQ4Li41NjRiYjAzY2FlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0RPTU5vZGVTdHlsZXMuanMKKysrIGIv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0RPTU5vZGVTdHlsZXMu
anMKQEAgLTE5Nyw2ICsxOTcsOSBAQCBXSS5ET01Ob2RlU3R5bGVzID0gY2xhc3MgRE9NTm9kZVN0
eWxlcyBleHRlbmRzIFdJLk9iamVjdAogICAgICAgICAgICAgcHNldWRvRWxlbWVudFJ1bGVzUGF5
bG9hZCA9IHBzZXVkb0VsZW1lbnRSdWxlc1BheWxvYWQgfHwgW107CiAgICAgICAgICAgICBpbmhl
cml0ZWRSdWxlc1BheWxvYWQgPSBpbmhlcml0ZWRSdWxlc1BheWxvYWQgfHwgW107CiAKKyAgICAg
ICAgICAgIHRoaXMuX3J1bGVzTWFwLmNsZWFyKCk7CisgICAgICAgICAgICB0aGlzLl9zdHlsZXNN
YXAuY2xlYXIoKTsKKwogICAgICAgICAgICAgdGhpcy5fbWF0Y2hlZFJ1bGVzID0gcGFyc2VSdWxl
TWF0Y2hBcnJheVBheWxvYWQobWF0Y2hlZFJ1bGVzUGF5bG9hZCwgdGhpcy5fbm9kZSk7CiAKICAg
ICAgICAgICAgIHRoaXMuX3BzZXVkb0VsZW1lbnRzLmNsZWFyKCk7Cg==
</data>
<flag name="review"
          id="395001"
          type_id="1"
          status="-"
          setter="nvasilyev"
    />
    <flag name="commit-queue"
          id="395002"
          type_id="3"
          status="-"
          setter="nvasilyev"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>379419</attachid>
            <date>2019-09-23 20:22:30 -0700</date>
            <delta_ts>2019-09-23 20:37:56 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>WIP.txt</filename>
            <type>text/plain</type>
            <size>14827</size>
            <attacher name="Nikita Vasilyev">nvasilyev</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvQ2hhbmdlTG9nCmluZGV4IDZlMzVlZmRhNWI3Li45OGY3ZjdhMzg2NSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjIgQEAKKzIwMTktMDktMjMgIE5pa2l0
YSBWYXNpbHlldiAgPG52YXNpbHlldkBhcHBsZS5jb20+CisKKyAgICAgICAgUkVHUkVTU0lPTihy
MjQzMjY0KTogV2ViIEluc3BlY3RvcjogU3R5bGUgcGFuZSBkb2Vzbid0IHVwZGF0ZSBhZnRlciB0
b2dnbGluZyBDU1MgY2xhc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIwMjA2NQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTUxNDkxNDE+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmV2ZXJ0IGFsbCBj
aGFuZ2VzIHJlbGF0ZWQgdG8gYF9zdHlsZURlY2xhcmF0aW9uc01hcGAuCisKKyAgICAgICAgKiBV
c2VySW50ZXJmYWNlL01vZGVscy9ET01Ob2RlU3R5bGVzLmpzOgorICAgICAgICAoV0kuRE9NTm9k
ZVN0eWxlcyk6CisgICAgICAgIChXSS5ET01Ob2RlU3R5bGVzLnByb3RvdHlwZS5yZWZyZXNoLmZl
dGNoZWRNYXRjaGVkU3R5bGVzKToKKyAgICAgICAgKFdJLkRPTU5vZGVTdHlsZXMucHJvdG90eXBl
LnJlZnJlc2guZmV0Y2hlZElubGluZVN0eWxlcyk6CisgICAgICAgIChXSS5ET01Ob2RlU3R5bGVz
LnByb3RvdHlwZS5yZWZyZXNoLmZldGNoZWRDb21wdXRlZFN0eWxlKToKKyAgICAgICAgKFdJLkRP
TU5vZGVTdHlsZXMucHJvdG90eXBlLnJlZnJlc2gpOgorICAgICAgICAoV0kuRE9NTm9kZVN0eWxl
cy5wcm90b3R5cGUuX3BhcnNlU3R5bGVEZWNsYXJhdGlvblBheWxvYWQpOgorICAgICAgICAoV0ku
RE9NTm9kZVN0eWxlcy5wcm90b3R5cGUuX3BhcnNlUnVsZVBheWxvYWQpOgorCiAyMDE5LTA5LTEz
ICBKb3NlcGggUGVjb3Jhcm8gIDxwZWNvcmFyb0BhcHBsZS5jb20+CiAKICAgICAgICAgV2ViIElu
c3BlY3RvcjogVGlnaHRlciBhdXRvY29tcGxldGUgYnViYmxlcwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0RPTU5vZGVTdHlsZXMuanMgYi9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvRE9NTm9kZVN0eWxlcy5q
cwppbmRleCA1ZDljN2JjZDBkOC4uZmRiODFiZmVmNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9ET01Ob2RlU3R5bGVzLmpzCisrKyBiL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9ET01Ob2RlU3R5bGVzLmpz
CkBAIC0zMyw3ICszMyw3IEBAIFdJLkRPTU5vZGVTdHlsZXMgPSBjbGFzcyBET01Ob2RlU3R5bGVz
IGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgICAgIHRoaXMuX25vZGUgPSBub2RlIHx8IG51bGw7CiAK
ICAgICAgICAgdGhpcy5fcnVsZXNNYXAgPSBuZXcgTWFwOwotICAgICAgICB0aGlzLl9zdHlsZXNN
YXAgPSBuZXcgTXVsdGltYXA7CisgICAgICAgIHRoaXMuX3N0eWxlRGVjbGFyYXRpb25zTWFwID0g
e307CiAKICAgICAgICAgdGhpcy5fbWF0Y2hlZFJ1bGVzID0gW107CiAgICAgICAgIHRoaXMuX2lu
aGVyaXRlZFJ1bGVzID0gW107CkBAIC0xNTgsOCArMTU4LDYgQEAgV0kuRE9NTm9kZVN0eWxlcyA9
IGNsYXNzIERPTU5vZGVTdHlsZXMgZXh0ZW5kcyBXSS5PYmplY3QKIAogICAgICAgICB0aGlzLl9u
ZWVkc1JlZnJlc2ggPSBmYWxzZTsKIAotICAgICAgICBsZXQgcHJldmlvdXNTdHlsZXNNYXAgPSB0
aGlzLl9zdHlsZXNNYXAuY29weSgpOwotCiAgICAgICAgIGxldCBmZXRjaGVkTWF0Y2hlZFN0eWxl
c1Byb21pc2UgPSBuZXcgV0kuV3JhcHBlZFByb21pc2U7CiAgICAgICAgIGxldCBmZXRjaGVkSW5s
aW5lU3R5bGVzUHJvbWlzZSA9IG5ldyBXSS5XcmFwcGVkUHJvbWlzZTsKICAgICAgICAgbGV0IGZl
dGNoZWRDb21wdXRlZFN0eWxlc1Byb21pc2UgPSBuZXcgV0kuV3JhcHBlZFByb21pc2U7CkBAIC0x
OTcsNiArMTk1LDkgQEAgV0kuRE9NTm9kZVN0eWxlcyA9IGNsYXNzIERPTU5vZGVTdHlsZXMgZXh0
ZW5kcyBXSS5PYmplY3QKICAgICAgICAgICAgIHBzZXVkb0VsZW1lbnRSdWxlc1BheWxvYWQgPSBw
c2V1ZG9FbGVtZW50UnVsZXNQYXlsb2FkIHx8IFtdOwogICAgICAgICAgICAgaW5oZXJpdGVkUnVs
ZXNQYXlsb2FkID0gaW5oZXJpdGVkUnVsZXNQYXlsb2FkIHx8IFtdOwogCisgICAgICAgICAgICB0
aGlzLl9wcmV2aW91c1N0eWxlRGVjbGFyYXRpb25zTWFwID0gdGhpcy5fc3R5bGVEZWNsYXJhdGlv
bnNNYXA7CisgICAgICAgICAgICB0aGlzLl9zdHlsZURlY2xhcmF0aW9uc01hcCA9IHt9OworCiAg
ICAgICAgICAgICB0aGlzLl9tYXRjaGVkUnVsZXMgPSBwYXJzZVJ1bGVNYXRjaEFycmF5UGF5bG9h
ZChtYXRjaGVkUnVsZXNQYXlsb2FkLCB0aGlzLl9ub2RlKTsKIAogICAgICAgICAgICAgdGhpcy5f
cHNldWRvRWxlbWVudHMuY2xlYXIoKTsKQEAgLTIxMyw4ICsyMTQsOCBAQCBXSS5ET01Ob2RlU3R5
bGVzID0gY2xhc3MgRE9NTm9kZVN0eWxlcyBleHRlbmRzIFdJLk9iamVjdAogICAgICAgICAgICAg
ICAgIHZhciBpbmhlcml0ZWRSdWxlUGF5bG9hZCA9IGluaGVyaXRlZFJ1bGVzUGF5bG9hZFtpXTsK
IAogICAgICAgICAgICAgICAgIHZhciBpbmhlcml0ZWRSdWxlSW5mbyA9IHtub2RlOiBjdXJyZW50
Tm9kZX07Ci0gICAgICAgICAgICAgICAgaW5oZXJpdGVkUnVsZUluZm8uaW5saW5lU3R5bGUgPSBp
bmhlcml0ZWRSdWxlUGF5bG9hZC5pbmxpbmVTdHlsZSA/IHRoaXMuX3BhcnNlU3R5bGVEZWNsYXJh
dGlvblBheWxvYWQoaW5oZXJpdGVkUnVsZVBheWxvYWQuaW5saW5lU3R5bGUsIGN1cnJlbnROb2Rl
LCB0cnVlLCBudWxsLCBXSS5DU1NTdHlsZURlY2xhcmF0aW9uLlR5cGUuSW5saW5lKSA6IG51bGw7
Ci0gICAgICAgICAgICAgICAgaW5oZXJpdGVkUnVsZUluZm8ubWF0Y2hlZFJ1bGVzID0gaW5oZXJp
dGVkUnVsZVBheWxvYWQubWF0Y2hlZENTU1J1bGVzID8gcGFyc2VSdWxlTWF0Y2hBcnJheVBheWxv
YWQoaW5oZXJpdGVkUnVsZVBheWxvYWQubWF0Y2hlZENTU1J1bGVzLCBjdXJyZW50Tm9kZSwgdHJ1
ZSkgOiBbXTsKKyAgICAgICAgICAgICAgICBpbmhlcml0ZWRSdWxlSW5mby5pbmxpbmVTdHlsZSA9
IGluaGVyaXRlZFJ1bGVQYXlsb2FkLmlubGluZVN0eWxlID8gdGhpcy5fcGFyc2VTdHlsZURlY2xh
cmF0aW9uUGF5bG9hZChpbmhlcml0ZWRSdWxlUGF5bG9hZC5pbmxpbmVTdHlsZSwgY3VycmVudE5v
ZGUsIHRydWUsIFdJLkNTU1N0eWxlRGVjbGFyYXRpb24uVHlwZS5JbmxpbmUpIDogbnVsbDsKKyAg
ICAgICAgICAgICAgICBpbmhlcml0ZWRSdWxlSW5mby5tYXRjaGVkUnVsZXMgPSBpbmhlcml0ZWRS
dWxlUGF5bG9hZC5tYXRjaGVkQ1NTUnVsZXMgPyBwYXJzZVJ1bGVNYXRjaEFycmF5UGF5bG9hZC5j
YWxsKHRoaXMsIGluaGVyaXRlZFJ1bGVQYXlsb2FkLm1hdGNoZWRDU1NSdWxlcywgY3VycmVudE5v
ZGUsIHRydWUpIDogW107CiAKICAgICAgICAgICAgICAgICBpZiAoaW5oZXJpdGVkUnVsZUluZm8u
aW5saW5lU3R5bGUgfHwgaW5oZXJpdGVkUnVsZUluZm8ubWF0Y2hlZFJ1bGVzLmxlbmd0aCkKICAg
ICAgICAgICAgICAgICAgICAgdGhpcy5faW5oZXJpdGVkUnVsZXMucHVzaChpbmhlcml0ZWRSdWxl
SW5mbyk7CkBAIC0yMjgsOSArMjI5LDggQEAgV0kuRE9NTm9kZVN0eWxlcyA9IGNsYXNzIERPTU5v
ZGVTdHlsZXMgZXh0ZW5kcyBXSS5PYmplY3QKIAogICAgICAgICBmdW5jdGlvbiBmZXRjaGVkSW5s
aW5lU3R5bGVzKGVycm9yLCBpbmxpbmVTdHlsZVBheWxvYWQsIGF0dHJpYnV0ZXNTdHlsZVBheWxv
YWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHRoaXMuX2lubGluZVN0eWxlID0gaW5saW5lU3R5
bGVQYXlsb2FkID8gdGhpcy5fcGFyc2VTdHlsZURlY2xhcmF0aW9uUGF5bG9hZChpbmxpbmVTdHls
ZVBheWxvYWQsIHRoaXMuX25vZGUsIGZhbHNlLCBudWxsLCBXSS5DU1NTdHlsZURlY2xhcmF0aW9u
LlR5cGUuSW5saW5lKSA6IG51bGw7Ci0gICAgICAgICAgICB0aGlzLl9hdHRyaWJ1dGVzU3R5bGUg
PSBhdHRyaWJ1dGVzU3R5bGVQYXlsb2FkID8gdGhpcy5fcGFyc2VTdHlsZURlY2xhcmF0aW9uUGF5
bG9hZChhdHRyaWJ1dGVzU3R5bGVQYXlsb2FkLCB0aGlzLl9ub2RlLCBmYWxzZSwgbnVsbCwgV0ku
Q1NTU3R5bGVEZWNsYXJhdGlvbi5UeXBlLkF0dHJpYnV0ZSkgOiBudWxsOwotCisgICAgICAgICAg
ICB0aGlzLl9pbmxpbmVTdHlsZSA9IGlubGluZVN0eWxlUGF5bG9hZCA/IHRoaXMuX3BhcnNlU3R5
bGVEZWNsYXJhdGlvblBheWxvYWQoaW5saW5lU3R5bGVQYXlsb2FkLCB0aGlzLl9ub2RlLCBmYWxz
ZSwgV0kuQ1NTU3R5bGVEZWNsYXJhdGlvbi5UeXBlLklubGluZSkgOiBudWxsOworICAgICAgICAg
ICAgdGhpcy5fYXR0cmlidXRlc1N0eWxlID0gYXR0cmlidXRlc1N0eWxlUGF5bG9hZCA/IHRoaXMu
X3BhcnNlU3R5bGVEZWNsYXJhdGlvblBheWxvYWQoYXR0cmlidXRlc1N0eWxlUGF5bG9hZCwgdGhp
cy5fbm9kZSwgZmFsc2UsIFdJLkNTU1N0eWxlRGVjbGFyYXRpb24uVHlwZS5BdHRyaWJ1dGUpIDog
bnVsbDsKICAgICAgICAgICAgIHRoaXMuX3VwZGF0ZVN0eWxlQ2FzY2FkZSgpOwogCiAgICAgICAg
ICAgICBmZXRjaGVkSW5saW5lU3R5bGVzUHJvbWlzZS5yZXNvbHZlKCk7CkBAIC0yNTcsMTUgKzI1
NywxOCBAQCBXSS5ET01Ob2RlU3R5bGVzID0gY2xhc3MgRE9NTm9kZVN0eWxlcyBleHRlbmRzIFdJ
Lk9iamVjdAogICAgICAgICAgICAgICAgIHRoaXMuX2NvbXB1dGVkU3R5bGUgPSBuZXcgV0kuQ1NT
U3R5bGVEZWNsYXJhdGlvbih0aGlzLCBudWxsLCBudWxsLCBXSS5DU1NTdHlsZURlY2xhcmF0aW9u
LlR5cGUuQ29tcHV0ZWQsIHRoaXMuX25vZGUsIGZhbHNlLCBudWxsLCBwcm9wZXJ0aWVzKTsKIAog
ICAgICAgICAgICAgbGV0IHNpZ25pZmljYW50Q2hhbmdlID0gZmFsc2U7Ci0gICAgICAgICAgICBm
b3IgKGxldCBba2V5LCBzdHlsZXNdIG9mIHRoaXMuX3N0eWxlc01hcC5zZXRzKCkpIHsKLSAgICAg
ICAgICAgICAgICBsZXQgcHJldmlvdXNTdHlsZXMgPSBwcmV2aW91c1N0eWxlc01hcC5nZXQoa2V5
KTsKLSAgICAgICAgICAgICAgICBpZiAocHJldmlvdXNTdHlsZXMpIHsKKyAgICAgICAgICAgIGZv
ciAobGV0IGtleSBpbiB0aGlzLl9zdHlsZURlY2xhcmF0aW9uc01hcCkgeworICAgICAgICAgICAg
ICAgIC8vIENoZWNrIGlmIHRoZSBzYW1lIGtleSBleGlzdHMgaW4gdGhlIHByZXZpb3VzIG1hcCBh
bmQgaGFzIHRoZSBzYW1lIHN0eWxlIG9iamVjdHMuCisgICAgICAgICAgICAgICAgaWYgKGtleSBp
biB0aGlzLl9wcmV2aW91c1N0eWxlRGVjbGFyYXRpb25zTWFwKSB7CisgICAgICAgICAgICAgICAg
ICAgIGlmIChBcnJheS5zaGFsbG93RXF1YWwodGhpcy5fc3R5bGVEZWNsYXJhdGlvbnNNYXBba2V5
XSwgdGhpcy5fcHJldmlvdXNTdHlsZURlY2xhcmF0aW9uc01hcFtrZXldKSkKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnRpbnVlOworCiAgICAgICAgICAgICAgICAgICAgIC8vIFNvbWUgc3R5
bGVzIGhhdmUgc2VsZWN0b3JzIHN1Y2ggdGhhdCB0aGV5IHdpbGwgbWF0Y2ggd2l0aCB0aGUgRE9N
IG5vZGUgdHdpY2UgKGZvciBleGFtcGxlICI6OmJlZm9yZSwgOjphZnRlciIpLgogICAgICAgICAg
ICAgICAgICAgICAvLyBJbiB0aGlzIGNhc2UgYSBzZWNvbmQgc3R5bGUgZm9yIGEgc2Vjb25kIG1h
dGNoaW5nIG1heSBiZSBnZW5lcmF0ZWQgYW5kIGFkZGVkIHdoaWNoIHdpbGwgY2F1c2UgdGhlIHNo
YWxsb3dFcXVhbAogICAgICAgICAgICAgICAgICAgICAvLyB0byBub3QgcmV0dXJuIHRydWUsIHNv
IGluIHRoaXMgY2FzZSB3ZSBqdXN0IHdhbnQgdG8gZW5zdXJlIHRoYXQgYWxsIHRoZSBjdXJyZW50
IHN0eWxlcyBleGlzdGVkIHByZXZpb3VzbHkuCiAgICAgICAgICAgICAgICAgICAgIGxldCBzdHls
ZUZvdW5kID0gZmFsc2U7Ci0gICAgICAgICAgICAgICAgICAgIGZvciAobGV0IHN0eWxlIG9mIHN0
eWxlcykgewotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHByZXZpb3VzU3R5bGVzLmhhcyhz
dHlsZSkpIHsKKyAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgc3R5bGUgb2YgdGhpcy5fc3R5
bGVEZWNsYXJhdGlvbnNNYXBba2V5XSkgeworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRo
aXMuX3ByZXZpb3VzU3R5bGVEZWNsYXJhdGlvbnNNYXBba2V5XS5pbmNsdWRlcyhzdHlsZSkpIHsK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZUZvdW5kID0gdHJ1ZTsKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgIH0KQEAg
LTI3Nyw3ICsyODAsNyBAQCBXSS5ET01Ob2RlU3R5bGVzID0gY2xhc3MgRE9NTm9kZVN0eWxlcyBl
eHRlbmRzIFdJLk9iamVjdAogCiAgICAgICAgICAgICAgICAgaWYgKCF0aGlzLl9pbmNsdWRlVXNl
ckFnZW50UnVsZXNPbk5leHRSZWZyZXNoKSB7CiAgICAgICAgICAgICAgICAgICAgIC8vIFdlIGNh
biBhc3N1bWUgYWxsIHRoZSBzdHlsZXMgd2l0aCB0aGUgc2FtZSBrZXkgYXJlIGZyb20gdGhlIHNh
bWUgc3R5bGVzaGVldCBhbmQgcnVsZSwgc28gd2Ugb25seSBjaGVjayB0aGUgZmlyc3QuCi0gICAg
ICAgICAgICAgICAgICAgIGxldCBmaXJzdFN0eWxlID0gc3R5bGVzLmZpcnN0VmFsdWU7CisgICAg
ICAgICAgICAgICAgICAgIGxldCBmaXJzdFN0eWxlID0gdGhpcy5fc3R5bGVEZWNsYXJhdGlvbnNN
YXBba2V5XVswXTsKICAgICAgICAgICAgICAgICAgICAgaWYgKGZpcnN0U3R5bGUgJiYgZmlyc3RT
dHlsZS5vd25lclJ1bGUgJiYgZmlyc3RTdHlsZS5vd25lclJ1bGUudHlwZSA9PT0gV0kuQ1NTU3R5
bGVTaGVldC5UeXBlLlVzZXJBZ2VudCkgewogICAgICAgICAgICAgICAgICAgICAgICAgLy8gVXNl
ciBBZ2VudCBzdHlsZXMgZ2V0IGRpZmZlcmVudCBpZGVudGlmaWVycyBhZnRlciBzb21lIGVkaXRz
LiBUaGlzIHdvdWxkIGNhdXNlIHVzIHRvIGZpcmUgYSBzaWduaWZpY2FudCByZWZyZXNoZWQKICAg
ICAgICAgICAgICAgICAgICAgICAgIC8vIGV2ZW50IG1vcmUgdGhhbiBpdCBpcyBoZWxwZnVsLiBB
bmQgc2luY2UgdGhlIHVzZXIgYWdlbnQgc3R5bGVzaGVldCBpcyBzdGF0aWMgaXQgc2hvdWxkbid0
IG1hdGNoIGRpZmZlcmVudGx5CkBAIC0yOTIsMTQgKzI5NSwxNCBAQCBXSS5ET01Ob2RlU3R5bGVz
ID0gY2xhc3MgRE9NTm9kZVN0eWxlcyBleHRlbmRzIFdJLk9iamVjdAogICAgICAgICAgICAgfQog
CiAgICAgICAgICAgICBpZiAoIXNpZ25pZmljYW50Q2hhbmdlKSB7Ci0gICAgICAgICAgICAgICAg
Zm9yIChsZXQgW2tleSwgcHJldmlvdXNTdHlsZXNdIG9mIHByZXZpb3VzU3R5bGVzTWFwLnNldHMo
KSkgeworICAgICAgICAgICAgICAgIGZvciAodmFyIGtleSBpbiB0aGlzLl9wcmV2aW91c1N0eWxl
RGVjbGFyYXRpb25zTWFwKSB7CiAgICAgICAgICAgICAgICAgICAgIC8vIENoZWNrIGlmIHRoZSBz
YW1lIGtleSBleGlzdHMgaW4gY3VycmVudCBtYXAuIElmIGl0IGRvZXMgZXhpc3QgaXQgd2FzIGFs
cmVhZHkgY2hlY2tlZCBmb3IgZXF1YWxpdHkgYWJvdmUuCi0gICAgICAgICAgICAgICAgICAgIGlm
ICh0aGlzLl9zdHlsZXNNYXAuaGFzKGtleSkpCisgICAgICAgICAgICAgICAgICAgIGlmIChrZXkg
aW4gdGhpcy5fc3R5bGVEZWNsYXJhdGlvbnNNYXApCiAgICAgICAgICAgICAgICAgICAgICAgICBj
b250aW51ZTsKIAogICAgICAgICAgICAgICAgICAgICBpZiAoIXRoaXMuX2luY2x1ZGVVc2VyQWdl
bnRSdWxlc09uTmV4dFJlZnJlc2gpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFNlZSBh
Ym92ZSBmb3Igd2h5IHdlIHNraXAgdXNlciBhZ2VudCBzdHlsZSBydWxlcy4KLSAgICAgICAgICAg
ICAgICAgICAgICAgIGxldCBmaXJzdFN0eWxlID0gcHJldmlvdXNTdHlsZXMuZmlyc3RWYWx1ZTsK
KyAgICAgICAgICAgICAgICAgICAgICAgIGxldCBmaXJzdFN0eWxlID0gdGhpcy5fcHJldmlvdXNT
dHlsZURlY2xhcmF0aW9uc01hcFtrZXldWzBdOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYg
KGZpcnN0U3R5bGUgJiYgZmlyc3RTdHlsZS5vd25lclJ1bGUgJiYgZmlyc3RTdHlsZS5vd25lclJ1
bGUudHlwZSA9PT0gV0kuQ1NTU3R5bGVTaGVldC5UeXBlLlVzZXJBZ2VudCkKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICAgICAgfQpAQCAtMzEw
LDYgKzMxMyw3IEBAIFdJLkRPTU5vZGVTdHlsZXMgPSBjbGFzcyBET01Ob2RlU3R5bGVzIGV4dGVu
ZHMgV0kuT2JqZWN0CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogCisgICAgICAg
ICAgICB0aGlzLl9wcmV2aW91c1N0eWxlRGVjbGFyYXRpb25zTWFwID0gbnVsbDsKICAgICAgICAg
ICAgIHRoaXMuX2luY2x1ZGVVc2VyQWdlbnRSdWxlc09uTmV4dFJlZnJlc2ggPSBmYWxzZTsKIAog
ICAgICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV0kuRE9NTm9kZVN0eWxl
cy5FdmVudC5SZWZyZXNoZWQsIHtzaWduaWZpY2FudENoYW5nZX0pOwpAQCAtNTQ4LDcgKzU1Miw3
IEBAIFdJLkRPTU5vZGVTdHlsZXMgPSBjbGFzcyBET01Ob2RlU3R5bGVzIGV4dGVuZHMgV0kuT2Jq
ZWN0CiAgICAgICAgIHJldHVybiBuZXcgV0kuQ1NTUHJvcGVydHkoaW5kZXgsIHRleHQsIG5hbWUs
IHZhbHVlLCBwcmlvcml0eSwgZW5hYmxlZCwgb3ZlcnJpZGRlbiwgaW1wbGljaXQsIGFub255bW91
cywgdmFsaWQsIHN0eWxlU2hlZXRUZXh0UmFuZ2UpOwogICAgIH0KIAotICAgIF9wYXJzZVN0eWxl
RGVjbGFyYXRpb25QYXlsb2FkKHBheWxvYWQsIG5vZGUsIGluaGVyaXRlZCwgcHNldWRvSWQsIHR5
cGUsIHJ1bGUpCisgICAgX3BhcnNlU3R5bGVEZWNsYXJhdGlvblBheWxvYWQocGF5bG9hZCwgbm9k
ZSwgaW5oZXJpdGVkLCB0eXBlLCBydWxlLCB1cGRhdGVBbGxTdHlsZXMpCiAgICAgewogICAgICAg
ICBpZiAoIXBheWxvYWQpCiAgICAgICAgICAgICByZXR1cm4gbnVsbDsKQEAgLTU1OCwyNSArNTYy
LDYwIEBAIFdJLkRPTU5vZGVTdHlsZXMgPSBjbGFzcyBET01Ob2RlU3R5bGVzIGV4dGVuZHMgV0ku
T2JqZWN0CiAKICAgICAgICAgdmFyIGlkID0gcGF5bG9hZC5zdHlsZUlkOwogICAgICAgICB2YXIg
bWFwS2V5ID0gaWQgPyBpZC5zdHlsZVNoZWV0SWQgKyAiOiIgKyBpZC5vcmRpbmFsIDogbnVsbDsK
LSAgICAgICAgaWYgKHBzZXVkb0lkKQotICAgICAgICAgICAgbWFwS2V5ICs9ICI6IiArIHBzZXVk
b0lkOworCiAgICAgICAgIGlmICh0eXBlID09PSBXSS5DU1NTdHlsZURlY2xhcmF0aW9uLlR5cGUu
QXR0cmlidXRlKQotICAgICAgICAgICAgbWFwS2V5ICs9ICI6IiArIG5vZGUuaWQgKyAiOmF0dHJp
YnV0ZSI7CisgICAgICAgICAgICBtYXBLZXkgPSBub2RlLmlkICsgIjphdHRyaWJ1dGUiOworCisg
ICAgICAgIHZhciBzdHlsZURlY2xhcmF0aW9uID0gcnVsZSA/IHJ1bGUuc3R5bGUgOiBudWxsOwor
ICAgICAgICB2YXIgc3R5bGVEZWNsYXJhdGlvbnMgPSBbXTsKKworICAgICAgICAvLyBMb29rIGZv
ciBleGlzdGluZyBzdHlsZXMgaW4gdGhlIHByZXZpb3VzIG1hcCBpZiB0aGVyZSBpcyBvbmUsIG90
aGVyd2lzZSB1c2UgdGhlIGN1cnJlbnQgbWFwLgorICAgICAgICB2YXIgcHJldmlvdXNTdHlsZURl
Y2xhcmF0aW9uc01hcCA9IHRoaXMuX3ByZXZpb3VzU3R5bGVEZWNsYXJhdGlvbnNNYXAgfHwgdGhp
cy5fc3R5bGVEZWNsYXJhdGlvbnNNYXA7CisgICAgICAgIGlmIChtYXBLZXkgJiYgbWFwS2V5IGlu
IHByZXZpb3VzU3R5bGVEZWNsYXJhdGlvbnNNYXApIHsKKyAgICAgICAgICAgIHN0eWxlRGVjbGFy
YXRpb25zID0gcHJldmlvdXNTdHlsZURlY2xhcmF0aW9uc01hcFttYXBLZXldOworCisgICAgICAg
ICAgICAvLyBJZiB3ZSBuZWVkIHRvIHVwZGF0ZSBhbGwgc3R5bGVzLCB0aGVuIHN0b3AgaGVyZSBh
bmQgY2FsbCBfcGFyc2VTdHlsZURlY2xhcmF0aW9uUGF5bG9hZCBmb3IgZWFjaCBzdHlsZS4KKyAg
ICAgICAgICAgIC8vIFdlIG5lZWQgdG8gcGFyc2UgbXVsdGlwbGUgdGltZXMgc28gd2UgcmV1c2Ug
dGhlIHJpZ2h0IHByb3BlcnRpZXMgZnJvbSBlYWNoIHN0eWxlLgorICAgICAgICAgICAgaWYgKHVw
ZGF0ZUFsbFN0eWxlcyAmJiBzdHlsZURlY2xhcmF0aW9ucy5sZW5ndGgpIHsKKyAgICAgICAgICAg
ICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHN0eWxlRGVjbGFyYXRpb25zLmxlbmd0aDsgKytpKSB7
CisgICAgICAgICAgICAgICAgICAgIHZhciBzdHlsZURlY2xhcmF0aW9uID0gc3R5bGVEZWNsYXJh
dGlvbnNbaV07CisgICAgICAgICAgICAgICAgICAgIHRoaXMuX3BhcnNlU3R5bGVEZWNsYXJhdGlv
blBheWxvYWQocGF5bG9hZCwgc3R5bGVEZWNsYXJhdGlvbi5ub2RlLCBzdHlsZURlY2xhcmF0aW9u
LmluaGVyaXRlZCwgc3R5bGVEZWNsYXJhdGlvbi50eXBlLCBzdHlsZURlY2xhcmF0aW9uLm93bmVy
UnVsZSk7CisgICAgICAgICAgICAgICAgfQogCi0gICAgICAgIGxldCBzdHlsZSA9IHJ1bGUgPyBy
dWxlLnN0eWxlIDogbnVsbDsKKyAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDsKKyAgICAgICAg
ICAgIH0KIAotICAgICAgICBsZXQgZXhpc3RpbmdTdHlsZXMgPSB0aGlzLl9zdHlsZXNNYXAuZ2V0
KG1hcEtleSk7Ci0gICAgICAgIGlmIChleGlzdGluZ1N0eWxlcyAmJiAhc3R5bGUpIHsKLSAgICAg
ICAgICAgIGZvciAobGV0IGV4aXN0aW5nU3R5bGUgb2YgZXhpc3RpbmdTdHlsZXMpIHsKLSAgICAg
ICAgICAgICAgICBpZiAoZXhpc3RpbmdTdHlsZS5ub2RlID09PSBub2RlICYmIGV4aXN0aW5nU3R5
bGUuaW5oZXJpdGVkID09PSBpbmhlcml0ZWQpIHsKLSAgICAgICAgICAgICAgICAgICAgc3R5bGUg
PSBleGlzdGluZ1N0eWxlOwotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICBpZiAoIXN0eWxlRGVjbGFyYXRpb24pIHsKKyAgICAgICAgICAg
ICAgICB2YXIgZmlsdGVyZWRTdHlsZURlY2xhcmF0aW9ucyA9IHN0eWxlRGVjbGFyYXRpb25zLmZp
bHRlcihmdW5jdGlvbihzdHlsZURlY2xhcmF0aW9uKSB7CisgICAgICAgICAgICAgICAgICAgIC8v
IFRoaXMgY2FzZSBvbmx5IGFwcGxpZXMgZm9yIHN0eWxlcyB0aGF0IGFyZSBub3QgcGFydCBvZiBh
IHJ1bGUuCisgICAgICAgICAgICAgICAgICAgIGlmIChzdHlsZURlY2xhcmF0aW9uLm93bmVyUnVs
ZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5hc3NlcnQoIXJ1bGUpOworICAg
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgICAgICAgICAgaWYgKHN0eWxlRGVjbGFyYXRpb24ubm9kZSAhPT0gbm9k
ZSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICAgICAg
ICAgICAgICBpZiAoc3R5bGVEZWNsYXJhdGlvbi5pbmhlcml0ZWQgIT09IGluaGVyaXRlZCkKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgICAgICB9KTsKKworICAgICAgICAgICAgICAgIGNv
bnNvbGUuYXNzZXJ0KGZpbHRlcmVkU3R5bGVEZWNsYXJhdGlvbnMubGVuZ3RoIDw9IDEpOworICAg
ICAgICAgICAgICAgIHN0eWxlRGVjbGFyYXRpb24gPSBmaWx0ZXJlZFN0eWxlRGVjbGFyYXRpb25z
WzBdIHx8IG51bGw7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIAotICAgICAgICBpZiAoc3R5
bGUpCi0gICAgICAgICAgICB0aGlzLl9zdHlsZXNNYXAuYWRkKG1hcEtleSwgc3R5bGUpOworICAg
ICAgICBpZiAocHJldmlvdXNTdHlsZURlY2xhcmF0aW9uc01hcCAhPT0gdGhpcy5fc3R5bGVEZWNs
YXJhdGlvbnNNYXApIHsKKyAgICAgICAgICAgIC8vIElmIHRoZSBwcmV2aW91cyBhbmQgY3VycmVu
dCBtYXBzIGRpZmZlciB0aGVuIG1ha2Ugc3VyZSB0aGUgZm91bmQgc3R5bGVEZWNsYXJhdGlvbiBp
cyBhZGRlZCB0byB0aGUgY3VycmVudCBtYXAuCisgICAgICAgICAgICBzdHlsZURlY2xhcmF0aW9u
cyA9IG1hcEtleSAmJiBtYXBLZXkgaW4gdGhpcy5fc3R5bGVEZWNsYXJhdGlvbnNNYXAgPyB0aGlz
Ll9zdHlsZURlY2xhcmF0aW9uc01hcFttYXBLZXldIDogW107CisKKyAgICAgICAgICAgIGlmIChz
dHlsZURlY2xhcmF0aW9uICYmICFzdHlsZURlY2xhcmF0aW9ucy5pbmNsdWRlcyhzdHlsZURlY2xh
cmF0aW9uKSkgeworICAgICAgICAgICAgICAgIHN0eWxlRGVjbGFyYXRpb25zLnB1c2goc3R5bGVE
ZWNsYXJhdGlvbik7CisgICAgICAgICAgICAgICAgdGhpcy5fc3R5bGVEZWNsYXJhdGlvbnNNYXBb
bWFwS2V5XSA9IHN0eWxlRGVjbGFyYXRpb25zOworICAgICAgICAgICAgfQorICAgICAgICB9CiAK
ICAgICAgICAgdmFyIHNob3J0aGFuZHMgPSB7fTsKICAgICAgICAgZm9yICh2YXIgaSA9IDA7IHBh
eWxvYWQuc2hvcnRoYW5kRW50cmllcyAmJiBpIDwgcGF5bG9hZC5zaG9ydGhhbmRFbnRyaWVzLmxl
bmd0aDsgKytpKSB7CkBAIC01OTMsMTYgKzYzMiwxNiBAQCBXSS5ET01Ob2RlU3R5bGVzID0gY2xh
c3MgRE9NTm9kZVN0eWxlcyBleHRlbmRzIFdJLk9iamVjdAogICAgICAgICAgICAgaWYgKGluaGVy
aXRlZCAmJiBXSS5DU1NQcm9wZXJ0eS5pc0luaGVyaXRlZFByb3BlcnR5TmFtZShwcm9wZXJ0eVBh
eWxvYWQubmFtZSkpCiAgICAgICAgICAgICAgICAgKytpbmhlcml0ZWRQcm9wZXJ0eUNvdW50Owog
Ci0gICAgICAgICAgICBsZXQgcHJvcGVydHkgPSB0aGlzLl9wYXJzZVN0eWxlUHJvcGVydHlQYXls
b2FkKHByb3BlcnR5UGF5bG9hZCwgaSwgc3R5bGUpOworICAgICAgICAgICAgbGV0IHByb3BlcnR5
ID0gdGhpcy5fcGFyc2VTdHlsZVByb3BlcnR5UGF5bG9hZChwcm9wZXJ0eVBheWxvYWQsIGksIHN0
eWxlRGVjbGFyYXRpb24pOwogICAgICAgICAgICAgcHJvcGVydGllcy5wdXNoKHByb3BlcnR5KTsK
ICAgICAgICAgfQogCiAgICAgICAgIGxldCB0ZXh0ID0gcGF5bG9hZC5jc3NUZXh0OwogICAgICAg
ICB2YXIgc3R5bGVTaGVldFRleHRSYW5nZSA9IHRoaXMuX3BhcnNlU291cmNlUmFuZ2VQYXlsb2Fk
KHBheWxvYWQucmFuZ2UpOwogCi0gICAgICAgIGlmIChzdHlsZSkgewotICAgICAgICAgICAgc3R5
bGUudXBkYXRlKHRleHQsIHByb3BlcnRpZXMsIHN0eWxlU2hlZXRUZXh0UmFuZ2UpOwotICAgICAg
ICAgICAgcmV0dXJuIHN0eWxlOworICAgICAgICBpZiAoc3R5bGVEZWNsYXJhdGlvbikgeworICAg
ICAgICAgICAgc3R5bGVEZWNsYXJhdGlvbi51cGRhdGUodGV4dCwgcHJvcGVydGllcywgc3R5bGVT
aGVldFRleHRSYW5nZSk7CisgICAgICAgICAgICByZXR1cm4gc3R5bGVEZWNsYXJhdGlvbjsKICAg
ICAgICAgfQogCiAgICAgICAgIHZhciBzdHlsZVNoZWV0ID0gaWQgPyBXSS5jc3NNYW5hZ2VyLnN0
eWxlU2hlZXRGb3JJZGVudGlmaWVyKGlkLnN0eWxlU2hlZXRJZCkgOiBudWxsOwpAQCAtNjE1LDEy
ICs2NTQsMTQgQEAgV0kuRE9NTm9kZVN0eWxlcyA9IGNsYXNzIERPTU5vZGVTdHlsZXMgZXh0ZW5k
cyBXSS5PYmplY3QKICAgICAgICAgaWYgKGluaGVyaXRlZCAmJiAhaW5oZXJpdGVkUHJvcGVydHlD
b3VudCkKICAgICAgICAgICAgIHJldHVybiBudWxsOwogCi0gICAgICAgIHN0eWxlID0gbmV3IFdJ
LkNTU1N0eWxlRGVjbGFyYXRpb24odGhpcywgc3R5bGVTaGVldCwgaWQsIHR5cGUsIG5vZGUsIGlu
aGVyaXRlZCwgdGV4dCwgcHJvcGVydGllcywgc3R5bGVTaGVldFRleHRSYW5nZSk7CisgICAgICAg
IHN0eWxlRGVjbGFyYXRpb24gPSBuZXcgV0kuQ1NTU3R5bGVEZWNsYXJhdGlvbih0aGlzLCBzdHls
ZVNoZWV0LCBpZCwgdHlwZSwgbm9kZSwgaW5oZXJpdGVkLCB0ZXh0LCBwcm9wZXJ0aWVzLCBzdHls
ZVNoZWV0VGV4dFJhbmdlKTsKIAotICAgICAgICBpZiAobWFwS2V5KQotICAgICAgICAgICAgdGhp
cy5fc3R5bGVzTWFwLmFkZChtYXBLZXksIHN0eWxlKTsKKyAgICAgICAgaWYgKG1hcEtleSkgewor
ICAgICAgICAgICAgc3R5bGVEZWNsYXJhdGlvbnMucHVzaChzdHlsZURlY2xhcmF0aW9uKTsKKyAg
ICAgICAgICAgIHRoaXMuX3N0eWxlRGVjbGFyYXRpb25zTWFwW21hcEtleV0gPSBzdHlsZURlY2xh
cmF0aW9uczsKKyAgICAgICAgfQogCi0gICAgICAgIHJldHVybiBzdHlsZTsKKyAgICAgICAgcmV0
dXJuIHN0eWxlRGVjbGFyYXRpb247CiAgICAgfQogCiAgICAgX3BhcnNlUnVsZVBheWxvYWQocGF5
bG9hZCwgbWF0Y2hlZFNlbGVjdG9ySW5kaWNlcywgbm9kZSwgaW5oZXJpdGVkLCBwc2V1ZG9JZCwg
cnVsZU9jY3VycmVuY2VzKQpAQCAtNjUxLDcgKzY5Miw3IEBAIFdJLkRPTU5vZGVTdHlsZXMgPSBj
bGFzcyBET01Ob2RlU3R5bGVzIGV4dGVuZHMgV0kuT2JqZWN0CiAKICAgICAgICAgbGV0IHJ1bGUg
PSB0aGlzLl9ydWxlc01hcC5nZXQobWFwS2V5KTsKIAotICAgICAgICB2YXIgc3R5bGUgPSB0aGlz
Ll9wYXJzZVN0eWxlRGVjbGFyYXRpb25QYXlsb2FkKHBheWxvYWQuc3R5bGUsIG5vZGUsIGluaGVy
aXRlZCwgcHNldWRvSWQsIFdJLkNTU1N0eWxlRGVjbGFyYXRpb24uVHlwZS5SdWxlLCBydWxlKTsK
KyAgICAgICAgdmFyIHN0eWxlID0gdGhpcy5fcGFyc2VTdHlsZURlY2xhcmF0aW9uUGF5bG9hZChw
YXlsb2FkLnN0eWxlLCBub2RlLCBpbmhlcml0ZWQsIFdJLkNTU1N0eWxlRGVjbGFyYXRpb24uVHlw
ZS5SdWxlLCBydWxlKTsKICAgICAgICAgaWYgKCFzdHlsZSkKICAgICAgICAgICAgIHJldHVybiBu
dWxsOwogCg==
</data>
<flag name="commit-queue"
          id="395133"
          type_id="3"
          status="-"
          setter="nvasilyev"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>379420</attachid>
            <date>2019-09-23 20:37:56 -0700</date>
            <delta_ts>2019-09-25 14:25:29 -0700</delta_ts>
            <desc>Patch for bots</desc>
            <filename>WIP.txt</filename>
            <type>text/plain</type>
            <size>14827</size>
            <attacher name="Nikita Vasilyev">nvasilyev</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvQ2hhbmdlTG9nCmluZGV4IDZlMzVlZmRhNWI3Li45OGY3ZjdhMzg2NSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjIgQEAKKzIwMTktMDktMjMgIE5pa2l0
YSBWYXNpbHlldiAgPG52YXNpbHlldkBhcHBsZS5jb20+CisKKyAgICAgICAgUkVHUkVTU0lPTihy
MjQzMjY0KTogV2ViIEluc3BlY3RvcjogU3R5bGUgcGFuZSBkb2Vzbid0IHVwZGF0ZSBhZnRlciB0
b2dnbGluZyBDU1MgY2xhc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIwMjA2NQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTUxNDkxNDE+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgUmV2ZXJ0IGFsbCBj
aGFuZ2VzIHJlbGF0ZWQgdG8gYF9zdHlsZURlY2xhcmF0aW9uc01hcGAuCisKKyAgICAgICAgKiBV
c2VySW50ZXJmYWNlL01vZGVscy9ET01Ob2RlU3R5bGVzLmpzOgorICAgICAgICAoV0kuRE9NTm9k
ZVN0eWxlcyk6CisgICAgICAgIChXSS5ET01Ob2RlU3R5bGVzLnByb3RvdHlwZS5yZWZyZXNoLmZl
dGNoZWRNYXRjaGVkU3R5bGVzKToKKyAgICAgICAgKFdJLkRPTU5vZGVTdHlsZXMucHJvdG90eXBl
LnJlZnJlc2guZmV0Y2hlZElubGluZVN0eWxlcyk6CisgICAgICAgIChXSS5ET01Ob2RlU3R5bGVz
LnByb3RvdHlwZS5yZWZyZXNoLmZldGNoZWRDb21wdXRlZFN0eWxlKToKKyAgICAgICAgKFdJLkRP
TU5vZGVTdHlsZXMucHJvdG90eXBlLnJlZnJlc2gpOgorICAgICAgICAoV0kuRE9NTm9kZVN0eWxl
cy5wcm90b3R5cGUuX3BhcnNlU3R5bGVEZWNsYXJhdGlvblBheWxvYWQpOgorICAgICAgICAoV0ku
RE9NTm9kZVN0eWxlcy5wcm90b3R5cGUuX3BhcnNlUnVsZVBheWxvYWQpOgorCiAyMDE5LTA5LTEz
ICBKb3NlcGggUGVjb3Jhcm8gIDxwZWNvcmFyb0BhcHBsZS5jb20+CiAKICAgICAgICAgV2ViIElu
c3BlY3RvcjogVGlnaHRlciBhdXRvY29tcGxldGUgYnViYmxlcwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0RPTU5vZGVTdHlsZXMuanMgYi9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvRE9NTm9kZVN0eWxlcy5q
cwppbmRleCA1ZDljN2JjZDBkOC4uZmRiODFiZmVmNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9ET01Ob2RlU3R5bGVzLmpzCisrKyBiL1Nv
dXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9ET01Ob2RlU3R5bGVzLmpz
CkBAIC0zMyw3ICszMyw3IEBAIFdJLkRPTU5vZGVTdHlsZXMgPSBjbGFzcyBET01Ob2RlU3R5bGVz
IGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgICAgIHRoaXMuX25vZGUgPSBub2RlIHx8IG51bGw7CiAK
ICAgICAgICAgdGhpcy5fcnVsZXNNYXAgPSBuZXcgTWFwOwotICAgICAgICB0aGlzLl9zdHlsZXNN
YXAgPSBuZXcgTXVsdGltYXA7CisgICAgICAgIHRoaXMuX3N0eWxlRGVjbGFyYXRpb25zTWFwID0g
e307CiAKICAgICAgICAgdGhpcy5fbWF0Y2hlZFJ1bGVzID0gW107CiAgICAgICAgIHRoaXMuX2lu
aGVyaXRlZFJ1bGVzID0gW107CkBAIC0xNTgsOCArMTU4LDYgQEAgV0kuRE9NTm9kZVN0eWxlcyA9
IGNsYXNzIERPTU5vZGVTdHlsZXMgZXh0ZW5kcyBXSS5PYmplY3QKIAogICAgICAgICB0aGlzLl9u
ZWVkc1JlZnJlc2ggPSBmYWxzZTsKIAotICAgICAgICBsZXQgcHJldmlvdXNTdHlsZXNNYXAgPSB0
aGlzLl9zdHlsZXNNYXAuY29weSgpOwotCiAgICAgICAgIGxldCBmZXRjaGVkTWF0Y2hlZFN0eWxl
c1Byb21pc2UgPSBuZXcgV0kuV3JhcHBlZFByb21pc2U7CiAgICAgICAgIGxldCBmZXRjaGVkSW5s
aW5lU3R5bGVzUHJvbWlzZSA9IG5ldyBXSS5XcmFwcGVkUHJvbWlzZTsKICAgICAgICAgbGV0IGZl
dGNoZWRDb21wdXRlZFN0eWxlc1Byb21pc2UgPSBuZXcgV0kuV3JhcHBlZFByb21pc2U7CkBAIC0x
OTcsNiArMTk1LDkgQEAgV0kuRE9NTm9kZVN0eWxlcyA9IGNsYXNzIERPTU5vZGVTdHlsZXMgZXh0
ZW5kcyBXSS5PYmplY3QKICAgICAgICAgICAgIHBzZXVkb0VsZW1lbnRSdWxlc1BheWxvYWQgPSBw
c2V1ZG9FbGVtZW50UnVsZXNQYXlsb2FkIHx8IFtdOwogICAgICAgICAgICAgaW5oZXJpdGVkUnVs
ZXNQYXlsb2FkID0gaW5oZXJpdGVkUnVsZXNQYXlsb2FkIHx8IFtdOwogCisgICAgICAgICAgICB0
aGlzLl9wcmV2aW91c1N0eWxlRGVjbGFyYXRpb25zTWFwID0gdGhpcy5fc3R5bGVEZWNsYXJhdGlv
bnNNYXA7CisgICAgICAgICAgICB0aGlzLl9zdHlsZURlY2xhcmF0aW9uc01hcCA9IHt9OworCiAg
ICAgICAgICAgICB0aGlzLl9tYXRjaGVkUnVsZXMgPSBwYXJzZVJ1bGVNYXRjaEFycmF5UGF5bG9h
ZChtYXRjaGVkUnVsZXNQYXlsb2FkLCB0aGlzLl9ub2RlKTsKIAogICAgICAgICAgICAgdGhpcy5f
cHNldWRvRWxlbWVudHMuY2xlYXIoKTsKQEAgLTIxMyw4ICsyMTQsOCBAQCBXSS5ET01Ob2RlU3R5
bGVzID0gY2xhc3MgRE9NTm9kZVN0eWxlcyBleHRlbmRzIFdJLk9iamVjdAogICAgICAgICAgICAg
ICAgIHZhciBpbmhlcml0ZWRSdWxlUGF5bG9hZCA9IGluaGVyaXRlZFJ1bGVzUGF5bG9hZFtpXTsK
IAogICAgICAgICAgICAgICAgIHZhciBpbmhlcml0ZWRSdWxlSW5mbyA9IHtub2RlOiBjdXJyZW50
Tm9kZX07Ci0gICAgICAgICAgICAgICAgaW5oZXJpdGVkUnVsZUluZm8uaW5saW5lU3R5bGUgPSBp
bmhlcml0ZWRSdWxlUGF5bG9hZC5pbmxpbmVTdHlsZSA/IHRoaXMuX3BhcnNlU3R5bGVEZWNsYXJh
dGlvblBheWxvYWQoaW5oZXJpdGVkUnVsZVBheWxvYWQuaW5saW5lU3R5bGUsIGN1cnJlbnROb2Rl
LCB0cnVlLCBudWxsLCBXSS5DU1NTdHlsZURlY2xhcmF0aW9uLlR5cGUuSW5saW5lKSA6IG51bGw7
Ci0gICAgICAgICAgICAgICAgaW5oZXJpdGVkUnVsZUluZm8ubWF0Y2hlZFJ1bGVzID0gaW5oZXJp
dGVkUnVsZVBheWxvYWQubWF0Y2hlZENTU1J1bGVzID8gcGFyc2VSdWxlTWF0Y2hBcnJheVBheWxv
YWQoaW5oZXJpdGVkUnVsZVBheWxvYWQubWF0Y2hlZENTU1J1bGVzLCBjdXJyZW50Tm9kZSwgdHJ1
ZSkgOiBbXTsKKyAgICAgICAgICAgICAgICBpbmhlcml0ZWRSdWxlSW5mby5pbmxpbmVTdHlsZSA9
IGluaGVyaXRlZFJ1bGVQYXlsb2FkLmlubGluZVN0eWxlID8gdGhpcy5fcGFyc2VTdHlsZURlY2xh
cmF0aW9uUGF5bG9hZChpbmhlcml0ZWRSdWxlUGF5bG9hZC5pbmxpbmVTdHlsZSwgY3VycmVudE5v
ZGUsIHRydWUsIFdJLkNTU1N0eWxlRGVjbGFyYXRpb24uVHlwZS5JbmxpbmUpIDogbnVsbDsKKyAg
ICAgICAgICAgICAgICBpbmhlcml0ZWRSdWxlSW5mby5tYXRjaGVkUnVsZXMgPSBpbmhlcml0ZWRS
dWxlUGF5bG9hZC5tYXRjaGVkQ1NTUnVsZXMgPyBwYXJzZVJ1bGVNYXRjaEFycmF5UGF5bG9hZC5j
YWxsKHRoaXMsIGluaGVyaXRlZFJ1bGVQYXlsb2FkLm1hdGNoZWRDU1NSdWxlcywgY3VycmVudE5v
ZGUsIHRydWUpIDogW107CiAKICAgICAgICAgICAgICAgICBpZiAoaW5oZXJpdGVkUnVsZUluZm8u
aW5saW5lU3R5bGUgfHwgaW5oZXJpdGVkUnVsZUluZm8ubWF0Y2hlZFJ1bGVzLmxlbmd0aCkKICAg
ICAgICAgICAgICAgICAgICAgdGhpcy5faW5oZXJpdGVkUnVsZXMucHVzaChpbmhlcml0ZWRSdWxl
SW5mbyk7CkBAIC0yMjgsOSArMjI5LDggQEAgV0kuRE9NTm9kZVN0eWxlcyA9IGNsYXNzIERPTU5v
ZGVTdHlsZXMgZXh0ZW5kcyBXSS5PYmplY3QKIAogICAgICAgICBmdW5jdGlvbiBmZXRjaGVkSW5s
aW5lU3R5bGVzKGVycm9yLCBpbmxpbmVTdHlsZVBheWxvYWQsIGF0dHJpYnV0ZXNTdHlsZVBheWxv
YWQpCiAgICAgICAgIHsKLSAgICAgICAgICAgIHRoaXMuX2lubGluZVN0eWxlID0gaW5saW5lU3R5
bGVQYXlsb2FkID8gdGhpcy5fcGFyc2VTdHlsZURlY2xhcmF0aW9uUGF5bG9hZChpbmxpbmVTdHls
ZVBheWxvYWQsIHRoaXMuX25vZGUsIGZhbHNlLCBudWxsLCBXSS5DU1NTdHlsZURlY2xhcmF0aW9u
LlR5cGUuSW5saW5lKSA6IG51bGw7Ci0gICAgICAgICAgICB0aGlzLl9hdHRyaWJ1dGVzU3R5bGUg
PSBhdHRyaWJ1dGVzU3R5bGVQYXlsb2FkID8gdGhpcy5fcGFyc2VTdHlsZURlY2xhcmF0aW9uUGF5
bG9hZChhdHRyaWJ1dGVzU3R5bGVQYXlsb2FkLCB0aGlzLl9ub2RlLCBmYWxzZSwgbnVsbCwgV0ku
Q1NTU3R5bGVEZWNsYXJhdGlvbi5UeXBlLkF0dHJpYnV0ZSkgOiBudWxsOwotCisgICAgICAgICAg
ICB0aGlzLl9pbmxpbmVTdHlsZSA9IGlubGluZVN0eWxlUGF5bG9hZCA/IHRoaXMuX3BhcnNlU3R5
bGVEZWNsYXJhdGlvblBheWxvYWQoaW5saW5lU3R5bGVQYXlsb2FkLCB0aGlzLl9ub2RlLCBmYWxz
ZSwgV0kuQ1NTU3R5bGVEZWNsYXJhdGlvbi5UeXBlLklubGluZSkgOiBudWxsOworICAgICAgICAg
ICAgdGhpcy5fYXR0cmlidXRlc1N0eWxlID0gYXR0cmlidXRlc1N0eWxlUGF5bG9hZCA/IHRoaXMu
X3BhcnNlU3R5bGVEZWNsYXJhdGlvblBheWxvYWQoYXR0cmlidXRlc1N0eWxlUGF5bG9hZCwgdGhp
cy5fbm9kZSwgZmFsc2UsIFdJLkNTU1N0eWxlRGVjbGFyYXRpb24uVHlwZS5BdHRyaWJ1dGUpIDog
bnVsbDsKICAgICAgICAgICAgIHRoaXMuX3VwZGF0ZVN0eWxlQ2FzY2FkZSgpOwogCiAgICAgICAg
ICAgICBmZXRjaGVkSW5saW5lU3R5bGVzUHJvbWlzZS5yZXNvbHZlKCk7CkBAIC0yNTcsMTUgKzI1
NywxOCBAQCBXSS5ET01Ob2RlU3R5bGVzID0gY2xhc3MgRE9NTm9kZVN0eWxlcyBleHRlbmRzIFdJ
Lk9iamVjdAogICAgICAgICAgICAgICAgIHRoaXMuX2NvbXB1dGVkU3R5bGUgPSBuZXcgV0kuQ1NT
U3R5bGVEZWNsYXJhdGlvbih0aGlzLCBudWxsLCBudWxsLCBXSS5DU1NTdHlsZURlY2xhcmF0aW9u
LlR5cGUuQ29tcHV0ZWQsIHRoaXMuX25vZGUsIGZhbHNlLCBudWxsLCBwcm9wZXJ0aWVzKTsKIAog
ICAgICAgICAgICAgbGV0IHNpZ25pZmljYW50Q2hhbmdlID0gZmFsc2U7Ci0gICAgICAgICAgICBm
b3IgKGxldCBba2V5LCBzdHlsZXNdIG9mIHRoaXMuX3N0eWxlc01hcC5zZXRzKCkpIHsKLSAgICAg
ICAgICAgICAgICBsZXQgcHJldmlvdXNTdHlsZXMgPSBwcmV2aW91c1N0eWxlc01hcC5nZXQoa2V5
KTsKLSAgICAgICAgICAgICAgICBpZiAocHJldmlvdXNTdHlsZXMpIHsKKyAgICAgICAgICAgIGZv
ciAobGV0IGtleSBpbiB0aGlzLl9zdHlsZURlY2xhcmF0aW9uc01hcCkgeworICAgICAgICAgICAg
ICAgIC8vIENoZWNrIGlmIHRoZSBzYW1lIGtleSBleGlzdHMgaW4gdGhlIHByZXZpb3VzIG1hcCBh
bmQgaGFzIHRoZSBzYW1lIHN0eWxlIG9iamVjdHMuCisgICAgICAgICAgICAgICAgaWYgKGtleSBp
biB0aGlzLl9wcmV2aW91c1N0eWxlRGVjbGFyYXRpb25zTWFwKSB7CisgICAgICAgICAgICAgICAg
ICAgIGlmIChBcnJheS5zaGFsbG93RXF1YWwodGhpcy5fc3R5bGVEZWNsYXJhdGlvbnNNYXBba2V5
XSwgdGhpcy5fcHJldmlvdXNTdHlsZURlY2xhcmF0aW9uc01hcFtrZXldKSkKKyAgICAgICAgICAg
ICAgICAgICAgICAgIGNvbnRpbnVlOworCiAgICAgICAgICAgICAgICAgICAgIC8vIFNvbWUgc3R5
bGVzIGhhdmUgc2VsZWN0b3JzIHN1Y2ggdGhhdCB0aGV5IHdpbGwgbWF0Y2ggd2l0aCB0aGUgRE9N
IG5vZGUgdHdpY2UgKGZvciBleGFtcGxlICI6OmJlZm9yZSwgOjphZnRlciIpLgogICAgICAgICAg
ICAgICAgICAgICAvLyBJbiB0aGlzIGNhc2UgYSBzZWNvbmQgc3R5bGUgZm9yIGEgc2Vjb25kIG1h
dGNoaW5nIG1heSBiZSBnZW5lcmF0ZWQgYW5kIGFkZGVkIHdoaWNoIHdpbGwgY2F1c2UgdGhlIHNo
YWxsb3dFcXVhbAogICAgICAgICAgICAgICAgICAgICAvLyB0byBub3QgcmV0dXJuIHRydWUsIHNv
IGluIHRoaXMgY2FzZSB3ZSBqdXN0IHdhbnQgdG8gZW5zdXJlIHRoYXQgYWxsIHRoZSBjdXJyZW50
IHN0eWxlcyBleGlzdGVkIHByZXZpb3VzbHkuCiAgICAgICAgICAgICAgICAgICAgIGxldCBzdHls
ZUZvdW5kID0gZmFsc2U7Ci0gICAgICAgICAgICAgICAgICAgIGZvciAobGV0IHN0eWxlIG9mIHN0
eWxlcykgewotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHByZXZpb3VzU3R5bGVzLmhhcyhz
dHlsZSkpIHsKKyAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgc3R5bGUgb2YgdGhpcy5fc3R5
bGVEZWNsYXJhdGlvbnNNYXBba2V5XSkgeworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHRo
aXMuX3ByZXZpb3VzU3R5bGVEZWNsYXJhdGlvbnNNYXBba2V5XS5pbmNsdWRlcyhzdHlsZSkpIHsK
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHlsZUZvdW5kID0gdHJ1ZTsKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgICAgICAgICAgICAgIH0KQEAg
LTI3Nyw3ICsyODAsNyBAQCBXSS5ET01Ob2RlU3R5bGVzID0gY2xhc3MgRE9NTm9kZVN0eWxlcyBl
eHRlbmRzIFdJLk9iamVjdAogCiAgICAgICAgICAgICAgICAgaWYgKCF0aGlzLl9pbmNsdWRlVXNl
ckFnZW50UnVsZXNPbk5leHRSZWZyZXNoKSB7CiAgICAgICAgICAgICAgICAgICAgIC8vIFdlIGNh
biBhc3N1bWUgYWxsIHRoZSBzdHlsZXMgd2l0aCB0aGUgc2FtZSBrZXkgYXJlIGZyb20gdGhlIHNh
bWUgc3R5bGVzaGVldCBhbmQgcnVsZSwgc28gd2Ugb25seSBjaGVjayB0aGUgZmlyc3QuCi0gICAg
ICAgICAgICAgICAgICAgIGxldCBmaXJzdFN0eWxlID0gc3R5bGVzLmZpcnN0VmFsdWU7CisgICAg
ICAgICAgICAgICAgICAgIGxldCBmaXJzdFN0eWxlID0gdGhpcy5fc3R5bGVEZWNsYXJhdGlvbnNN
YXBba2V5XVswXTsKICAgICAgICAgICAgICAgICAgICAgaWYgKGZpcnN0U3R5bGUgJiYgZmlyc3RT
dHlsZS5vd25lclJ1bGUgJiYgZmlyc3RTdHlsZS5vd25lclJ1bGUudHlwZSA9PT0gV0kuQ1NTU3R5
bGVTaGVldC5UeXBlLlVzZXJBZ2VudCkgewogICAgICAgICAgICAgICAgICAgICAgICAgLy8gVXNl
ciBBZ2VudCBzdHlsZXMgZ2V0IGRpZmZlcmVudCBpZGVudGlmaWVycyBhZnRlciBzb21lIGVkaXRz
LiBUaGlzIHdvdWxkIGNhdXNlIHVzIHRvIGZpcmUgYSBzaWduaWZpY2FudCByZWZyZXNoZWQKICAg
ICAgICAgICAgICAgICAgICAgICAgIC8vIGV2ZW50IG1vcmUgdGhhbiBpdCBpcyBoZWxwZnVsLiBB
bmQgc2luY2UgdGhlIHVzZXIgYWdlbnQgc3R5bGVzaGVldCBpcyBzdGF0aWMgaXQgc2hvdWxkbid0
IG1hdGNoIGRpZmZlcmVudGx5CkBAIC0yOTIsMTQgKzI5NSwxNCBAQCBXSS5ET01Ob2RlU3R5bGVz
ID0gY2xhc3MgRE9NTm9kZVN0eWxlcyBleHRlbmRzIFdJLk9iamVjdAogICAgICAgICAgICAgfQog
CiAgICAgICAgICAgICBpZiAoIXNpZ25pZmljYW50Q2hhbmdlKSB7Ci0gICAgICAgICAgICAgICAg
Zm9yIChsZXQgW2tleSwgcHJldmlvdXNTdHlsZXNdIG9mIHByZXZpb3VzU3R5bGVzTWFwLnNldHMo
KSkgeworICAgICAgICAgICAgICAgIGZvciAodmFyIGtleSBpbiB0aGlzLl9wcmV2aW91c1N0eWxl
RGVjbGFyYXRpb25zTWFwKSB7CiAgICAgICAgICAgICAgICAgICAgIC8vIENoZWNrIGlmIHRoZSBz
YW1lIGtleSBleGlzdHMgaW4gY3VycmVudCBtYXAuIElmIGl0IGRvZXMgZXhpc3QgaXQgd2FzIGFs
cmVhZHkgY2hlY2tlZCBmb3IgZXF1YWxpdHkgYWJvdmUuCi0gICAgICAgICAgICAgICAgICAgIGlm
ICh0aGlzLl9zdHlsZXNNYXAuaGFzKGtleSkpCisgICAgICAgICAgICAgICAgICAgIGlmIChrZXkg
aW4gdGhpcy5fc3R5bGVEZWNsYXJhdGlvbnNNYXApCiAgICAgICAgICAgICAgICAgICAgICAgICBj
b250aW51ZTsKIAogICAgICAgICAgICAgICAgICAgICBpZiAoIXRoaXMuX2luY2x1ZGVVc2VyQWdl
bnRSdWxlc09uTmV4dFJlZnJlc2gpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFNlZSBh
Ym92ZSBmb3Igd2h5IHdlIHNraXAgdXNlciBhZ2VudCBzdHlsZSBydWxlcy4KLSAgICAgICAgICAg
ICAgICAgICAgICAgIGxldCBmaXJzdFN0eWxlID0gcHJldmlvdXNTdHlsZXMuZmlyc3RWYWx1ZTsK
KyAgICAgICAgICAgICAgICAgICAgICAgIGxldCBmaXJzdFN0eWxlID0gdGhpcy5fcHJldmlvdXNT
dHlsZURlY2xhcmF0aW9uc01hcFtrZXldWzBdOwogICAgICAgICAgICAgICAgICAgICAgICAgaWYg
KGZpcnN0U3R5bGUgJiYgZmlyc3RTdHlsZS5vd25lclJ1bGUgJiYgZmlyc3RTdHlsZS5vd25lclJ1
bGUudHlwZSA9PT0gV0kuQ1NTU3R5bGVTaGVldC5UeXBlLlVzZXJBZ2VudCkKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICAgICAgfQpAQCAtMzEw
LDYgKzMxMyw3IEBAIFdJLkRPTU5vZGVTdHlsZXMgPSBjbGFzcyBET01Ob2RlU3R5bGVzIGV4dGVu
ZHMgV0kuT2JqZWN0CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogCisgICAgICAg
ICAgICB0aGlzLl9wcmV2aW91c1N0eWxlRGVjbGFyYXRpb25zTWFwID0gbnVsbDsKICAgICAgICAg
ICAgIHRoaXMuX2luY2x1ZGVVc2VyQWdlbnRSdWxlc09uTmV4dFJlZnJlc2ggPSBmYWxzZTsKIAog
ICAgICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV0kuRE9NTm9kZVN0eWxl
cy5FdmVudC5SZWZyZXNoZWQsIHtzaWduaWZpY2FudENoYW5nZX0pOwpAQCAtNTQ4LDcgKzU1Miw3
IEBAIFdJLkRPTU5vZGVTdHlsZXMgPSBjbGFzcyBET01Ob2RlU3R5bGVzIGV4dGVuZHMgV0kuT2Jq
ZWN0CiAgICAgICAgIHJldHVybiBuZXcgV0kuQ1NTUHJvcGVydHkoaW5kZXgsIHRleHQsIG5hbWUs
IHZhbHVlLCBwcmlvcml0eSwgZW5hYmxlZCwgb3ZlcnJpZGRlbiwgaW1wbGljaXQsIGFub255bW91
cywgdmFsaWQsIHN0eWxlU2hlZXRUZXh0UmFuZ2UpOwogICAgIH0KIAotICAgIF9wYXJzZVN0eWxl
RGVjbGFyYXRpb25QYXlsb2FkKHBheWxvYWQsIG5vZGUsIGluaGVyaXRlZCwgcHNldWRvSWQsIHR5
cGUsIHJ1bGUpCisgICAgX3BhcnNlU3R5bGVEZWNsYXJhdGlvblBheWxvYWQocGF5bG9hZCwgbm9k
ZSwgaW5oZXJpdGVkLCB0eXBlLCBydWxlLCB1cGRhdGVBbGxTdHlsZXMpCiAgICAgewogICAgICAg
ICBpZiAoIXBheWxvYWQpCiAgICAgICAgICAgICByZXR1cm4gbnVsbDsKQEAgLTU1OCwyNSArNTYy
LDYwIEBAIFdJLkRPTU5vZGVTdHlsZXMgPSBjbGFzcyBET01Ob2RlU3R5bGVzIGV4dGVuZHMgV0ku
T2JqZWN0CiAKICAgICAgICAgdmFyIGlkID0gcGF5bG9hZC5zdHlsZUlkOwogICAgICAgICB2YXIg
bWFwS2V5ID0gaWQgPyBpZC5zdHlsZVNoZWV0SWQgKyAiOiIgKyBpZC5vcmRpbmFsIDogbnVsbDsK
LSAgICAgICAgaWYgKHBzZXVkb0lkKQotICAgICAgICAgICAgbWFwS2V5ICs9ICI6IiArIHBzZXVk
b0lkOworCiAgICAgICAgIGlmICh0eXBlID09PSBXSS5DU1NTdHlsZURlY2xhcmF0aW9uLlR5cGUu
QXR0cmlidXRlKQotICAgICAgICAgICAgbWFwS2V5ICs9ICI6IiArIG5vZGUuaWQgKyAiOmF0dHJp
YnV0ZSI7CisgICAgICAgICAgICBtYXBLZXkgPSBub2RlLmlkICsgIjphdHRyaWJ1dGUiOworCisg
ICAgICAgIHZhciBzdHlsZURlY2xhcmF0aW9uID0gcnVsZSA/IHJ1bGUuc3R5bGUgOiBudWxsOwor
ICAgICAgICB2YXIgc3R5bGVEZWNsYXJhdGlvbnMgPSBbXTsKKworICAgICAgICAvLyBMb29rIGZv
ciBleGlzdGluZyBzdHlsZXMgaW4gdGhlIHByZXZpb3VzIG1hcCBpZiB0aGVyZSBpcyBvbmUsIG90
aGVyd2lzZSB1c2UgdGhlIGN1cnJlbnQgbWFwLgorICAgICAgICB2YXIgcHJldmlvdXNTdHlsZURl
Y2xhcmF0aW9uc01hcCA9IHRoaXMuX3ByZXZpb3VzU3R5bGVEZWNsYXJhdGlvbnNNYXAgfHwgdGhp
cy5fc3R5bGVEZWNsYXJhdGlvbnNNYXA7CisgICAgICAgIGlmIChtYXBLZXkgJiYgbWFwS2V5IGlu
IHByZXZpb3VzU3R5bGVEZWNsYXJhdGlvbnNNYXApIHsKKyAgICAgICAgICAgIHN0eWxlRGVjbGFy
YXRpb25zID0gcHJldmlvdXNTdHlsZURlY2xhcmF0aW9uc01hcFttYXBLZXldOworCisgICAgICAg
ICAgICAvLyBJZiB3ZSBuZWVkIHRvIHVwZGF0ZSBhbGwgc3R5bGVzLCB0aGVuIHN0b3AgaGVyZSBh
bmQgY2FsbCBfcGFyc2VTdHlsZURlY2xhcmF0aW9uUGF5bG9hZCBmb3IgZWFjaCBzdHlsZS4KKyAg
ICAgICAgICAgIC8vIFdlIG5lZWQgdG8gcGFyc2UgbXVsdGlwbGUgdGltZXMgc28gd2UgcmV1c2Ug
dGhlIHJpZ2h0IHByb3BlcnRpZXMgZnJvbSBlYWNoIHN0eWxlLgorICAgICAgICAgICAgaWYgKHVw
ZGF0ZUFsbFN0eWxlcyAmJiBzdHlsZURlY2xhcmF0aW9ucy5sZW5ndGgpIHsKKyAgICAgICAgICAg
ICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHN0eWxlRGVjbGFyYXRpb25zLmxlbmd0aDsgKytpKSB7
CisgICAgICAgICAgICAgICAgICAgIHZhciBzdHlsZURlY2xhcmF0aW9uID0gc3R5bGVEZWNsYXJh
dGlvbnNbaV07CisgICAgICAgICAgICAgICAgICAgIHRoaXMuX3BhcnNlU3R5bGVEZWNsYXJhdGlv
blBheWxvYWQocGF5bG9hZCwgc3R5bGVEZWNsYXJhdGlvbi5ub2RlLCBzdHlsZURlY2xhcmF0aW9u
LmluaGVyaXRlZCwgc3R5bGVEZWNsYXJhdGlvbi50eXBlLCBzdHlsZURlY2xhcmF0aW9uLm93bmVy
UnVsZSk7CisgICAgICAgICAgICAgICAgfQogCi0gICAgICAgIGxldCBzdHlsZSA9IHJ1bGUgPyBy
dWxlLnN0eWxlIDogbnVsbDsKKyAgICAgICAgICAgICAgICByZXR1cm4gbnVsbDsKKyAgICAgICAg
ICAgIH0KIAotICAgICAgICBsZXQgZXhpc3RpbmdTdHlsZXMgPSB0aGlzLl9zdHlsZXNNYXAuZ2V0
KG1hcEtleSk7Ci0gICAgICAgIGlmIChleGlzdGluZ1N0eWxlcyAmJiAhc3R5bGUpIHsKLSAgICAg
ICAgICAgIGZvciAobGV0IGV4aXN0aW5nU3R5bGUgb2YgZXhpc3RpbmdTdHlsZXMpIHsKLSAgICAg
ICAgICAgICAgICBpZiAoZXhpc3RpbmdTdHlsZS5ub2RlID09PSBub2RlICYmIGV4aXN0aW5nU3R5
bGUuaW5oZXJpdGVkID09PSBpbmhlcml0ZWQpIHsKLSAgICAgICAgICAgICAgICAgICAgc3R5bGUg
PSBleGlzdGluZ1N0eWxlOwotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAg
ICAgICB9CisgICAgICAgICAgICBpZiAoIXN0eWxlRGVjbGFyYXRpb24pIHsKKyAgICAgICAgICAg
ICAgICB2YXIgZmlsdGVyZWRTdHlsZURlY2xhcmF0aW9ucyA9IHN0eWxlRGVjbGFyYXRpb25zLmZp
bHRlcihmdW5jdGlvbihzdHlsZURlY2xhcmF0aW9uKSB7CisgICAgICAgICAgICAgICAgICAgIC8v
IFRoaXMgY2FzZSBvbmx5IGFwcGxpZXMgZm9yIHN0eWxlcyB0aGF0IGFyZSBub3QgcGFydCBvZiBh
IHJ1bGUuCisgICAgICAgICAgICAgICAgICAgIGlmIChzdHlsZURlY2xhcmF0aW9uLm93bmVyUnVs
ZSkgeworICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5hc3NlcnQoIXJ1bGUpOworICAg
ICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgICAgICAgICAgaWYgKHN0eWxlRGVjbGFyYXRpb24ubm9kZSAhPT0gbm9k
ZSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICAgICAg
ICAgICAgICBpZiAoc3R5bGVEZWNsYXJhdGlvbi5pbmhlcml0ZWQgIT09IGluaGVyaXRlZCkKKyAg
ICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgICAgICB9KTsKKworICAgICAgICAgICAgICAgIGNv
bnNvbGUuYXNzZXJ0KGZpbHRlcmVkU3R5bGVEZWNsYXJhdGlvbnMubGVuZ3RoIDw9IDEpOworICAg
ICAgICAgICAgICAgIHN0eWxlRGVjbGFyYXRpb24gPSBmaWx0ZXJlZFN0eWxlRGVjbGFyYXRpb25z
WzBdIHx8IG51bGw7CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KIAotICAgICAgICBpZiAoc3R5
bGUpCi0gICAgICAgICAgICB0aGlzLl9zdHlsZXNNYXAuYWRkKG1hcEtleSwgc3R5bGUpOworICAg
ICAgICBpZiAocHJldmlvdXNTdHlsZURlY2xhcmF0aW9uc01hcCAhPT0gdGhpcy5fc3R5bGVEZWNs
YXJhdGlvbnNNYXApIHsKKyAgICAgICAgICAgIC8vIElmIHRoZSBwcmV2aW91cyBhbmQgY3VycmVu
dCBtYXBzIGRpZmZlciB0aGVuIG1ha2Ugc3VyZSB0aGUgZm91bmQgc3R5bGVEZWNsYXJhdGlvbiBp
cyBhZGRlZCB0byB0aGUgY3VycmVudCBtYXAuCisgICAgICAgICAgICBzdHlsZURlY2xhcmF0aW9u
cyA9IG1hcEtleSAmJiBtYXBLZXkgaW4gdGhpcy5fc3R5bGVEZWNsYXJhdGlvbnNNYXAgPyB0aGlz
Ll9zdHlsZURlY2xhcmF0aW9uc01hcFttYXBLZXldIDogW107CisKKyAgICAgICAgICAgIGlmIChz
dHlsZURlY2xhcmF0aW9uICYmICFzdHlsZURlY2xhcmF0aW9ucy5pbmNsdWRlcyhzdHlsZURlY2xh
cmF0aW9uKSkgeworICAgICAgICAgICAgICAgIHN0eWxlRGVjbGFyYXRpb25zLnB1c2goc3R5bGVE
ZWNsYXJhdGlvbik7CisgICAgICAgICAgICAgICAgdGhpcy5fc3R5bGVEZWNsYXJhdGlvbnNNYXBb
bWFwS2V5XSA9IHN0eWxlRGVjbGFyYXRpb25zOworICAgICAgICAgICAgfQorICAgICAgICB9CiAK
ICAgICAgICAgdmFyIHNob3J0aGFuZHMgPSB7fTsKICAgICAgICAgZm9yICh2YXIgaSA9IDA7IHBh
eWxvYWQuc2hvcnRoYW5kRW50cmllcyAmJiBpIDwgcGF5bG9hZC5zaG9ydGhhbmRFbnRyaWVzLmxl
bmd0aDsgKytpKSB7CkBAIC01OTMsMTYgKzYzMiwxNiBAQCBXSS5ET01Ob2RlU3R5bGVzID0gY2xh
c3MgRE9NTm9kZVN0eWxlcyBleHRlbmRzIFdJLk9iamVjdAogICAgICAgICAgICAgaWYgKGluaGVy
aXRlZCAmJiBXSS5DU1NQcm9wZXJ0eS5pc0luaGVyaXRlZFByb3BlcnR5TmFtZShwcm9wZXJ0eVBh
eWxvYWQubmFtZSkpCiAgICAgICAgICAgICAgICAgKytpbmhlcml0ZWRQcm9wZXJ0eUNvdW50Owog
Ci0gICAgICAgICAgICBsZXQgcHJvcGVydHkgPSB0aGlzLl9wYXJzZVN0eWxlUHJvcGVydHlQYXls
b2FkKHByb3BlcnR5UGF5bG9hZCwgaSwgc3R5bGUpOworICAgICAgICAgICAgbGV0IHByb3BlcnR5
ID0gdGhpcy5fcGFyc2VTdHlsZVByb3BlcnR5UGF5bG9hZChwcm9wZXJ0eVBheWxvYWQsIGksIHN0
eWxlRGVjbGFyYXRpb24pOwogICAgICAgICAgICAgcHJvcGVydGllcy5wdXNoKHByb3BlcnR5KTsK
ICAgICAgICAgfQogCiAgICAgICAgIGxldCB0ZXh0ID0gcGF5bG9hZC5jc3NUZXh0OwogICAgICAg
ICB2YXIgc3R5bGVTaGVldFRleHRSYW5nZSA9IHRoaXMuX3BhcnNlU291cmNlUmFuZ2VQYXlsb2Fk
KHBheWxvYWQucmFuZ2UpOwogCi0gICAgICAgIGlmIChzdHlsZSkgewotICAgICAgICAgICAgc3R5
bGUudXBkYXRlKHRleHQsIHByb3BlcnRpZXMsIHN0eWxlU2hlZXRUZXh0UmFuZ2UpOwotICAgICAg
ICAgICAgcmV0dXJuIHN0eWxlOworICAgICAgICBpZiAoc3R5bGVEZWNsYXJhdGlvbikgeworICAg
ICAgICAgICAgc3R5bGVEZWNsYXJhdGlvbi51cGRhdGUodGV4dCwgcHJvcGVydGllcywgc3R5bGVT
aGVldFRleHRSYW5nZSk7CisgICAgICAgICAgICByZXR1cm4gc3R5bGVEZWNsYXJhdGlvbjsKICAg
ICAgICAgfQogCiAgICAgICAgIHZhciBzdHlsZVNoZWV0ID0gaWQgPyBXSS5jc3NNYW5hZ2VyLnN0
eWxlU2hlZXRGb3JJZGVudGlmaWVyKGlkLnN0eWxlU2hlZXRJZCkgOiBudWxsOwpAQCAtNjE1LDEy
ICs2NTQsMTQgQEAgV0kuRE9NTm9kZVN0eWxlcyA9IGNsYXNzIERPTU5vZGVTdHlsZXMgZXh0ZW5k
cyBXSS5PYmplY3QKICAgICAgICAgaWYgKGluaGVyaXRlZCAmJiAhaW5oZXJpdGVkUHJvcGVydHlD
b3VudCkKICAgICAgICAgICAgIHJldHVybiBudWxsOwogCi0gICAgICAgIHN0eWxlID0gbmV3IFdJ
LkNTU1N0eWxlRGVjbGFyYXRpb24odGhpcywgc3R5bGVTaGVldCwgaWQsIHR5cGUsIG5vZGUsIGlu
aGVyaXRlZCwgdGV4dCwgcHJvcGVydGllcywgc3R5bGVTaGVldFRleHRSYW5nZSk7CisgICAgICAg
IHN0eWxlRGVjbGFyYXRpb24gPSBuZXcgV0kuQ1NTU3R5bGVEZWNsYXJhdGlvbih0aGlzLCBzdHls
ZVNoZWV0LCBpZCwgdHlwZSwgbm9kZSwgaW5oZXJpdGVkLCB0ZXh0LCBwcm9wZXJ0aWVzLCBzdHls
ZVNoZWV0VGV4dFJhbmdlKTsKIAotICAgICAgICBpZiAobWFwS2V5KQotICAgICAgICAgICAgdGhp
cy5fc3R5bGVzTWFwLmFkZChtYXBLZXksIHN0eWxlKTsKKyAgICAgICAgaWYgKG1hcEtleSkgewor
ICAgICAgICAgICAgc3R5bGVEZWNsYXJhdGlvbnMucHVzaChzdHlsZURlY2xhcmF0aW9uKTsKKyAg
ICAgICAgICAgIHRoaXMuX3N0eWxlRGVjbGFyYXRpb25zTWFwW21hcEtleV0gPSBzdHlsZURlY2xh
cmF0aW9uczsKKyAgICAgICAgfQogCi0gICAgICAgIHJldHVybiBzdHlsZTsKKyAgICAgICAgcmV0
dXJuIHN0eWxlRGVjbGFyYXRpb247CiAgICAgfQogCiAgICAgX3BhcnNlUnVsZVBheWxvYWQocGF5
bG9hZCwgbWF0Y2hlZFNlbGVjdG9ySW5kaWNlcywgbm9kZSwgaW5oZXJpdGVkLCBwc2V1ZG9JZCwg
cnVsZU9jY3VycmVuY2VzKQpAQCAtNjUxLDcgKzY5Miw3IEBAIFdJLkRPTU5vZGVTdHlsZXMgPSBj
bGFzcyBET01Ob2RlU3R5bGVzIGV4dGVuZHMgV0kuT2JqZWN0CiAKICAgICAgICAgbGV0IHJ1bGUg
PSB0aGlzLl9ydWxlc01hcC5nZXQobWFwS2V5KTsKIAotICAgICAgICB2YXIgc3R5bGUgPSB0aGlz
Ll9wYXJzZVN0eWxlRGVjbGFyYXRpb25QYXlsb2FkKHBheWxvYWQuc3R5bGUsIG5vZGUsIGluaGVy
aXRlZCwgcHNldWRvSWQsIFdJLkNTU1N0eWxlRGVjbGFyYXRpb24uVHlwZS5SdWxlLCBydWxlKTsK
KyAgICAgICAgdmFyIHN0eWxlID0gdGhpcy5fcGFyc2VTdHlsZURlY2xhcmF0aW9uUGF5bG9hZChw
YXlsb2FkLnN0eWxlLCBub2RlLCBpbmhlcml0ZWQsIFdJLkNTU1N0eWxlRGVjbGFyYXRpb24uVHlw
ZS5SdWxlLCBydWxlKTsKICAgICAgICAgaWYgKCFzdHlsZSkKICAgICAgICAgICAgIHJldHVybiBu
dWxsOwogCg==
</data>
<flag name="review"
          id="395134"
          type_id="1"
          status="-"
          setter="hi"
    />
    <flag name="commit-queue"
          id="395135"
          type_id="3"
          status="-"
          setter="nvasilyev"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>379579</attachid>
            <date>2019-09-25 14:25:29 -0700</date>
            <delta_ts>2019-09-25 19:23:21 -0700</delta_ts>
            <desc>Patch for bots, not for review</desc>
            <filename>WIP.txt</filename>
            <type>text/plain</type>
            <size>9344</size>
            <attacher name="Nikita Vasilyev">nvasilyev</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvQ2hhbmdlTG9nCmluZGV4IDZlMzVlZmRhNWI3Li4wMjE3MmVkYWI3YSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjUgQEAKKzIwMTktMDktMjMgIE5pa2l0
YSBWYXNpbHlldiAgPG52YXNpbHlldkBhcHBsZS5jb20+CisKKyAgICAgICAgUkVHUkVTU0lPTihy
MjQzMjY0KTogV2ViIEluc3BlY3RvcjogU3R5bGUgcGFuZSBkb2Vzbid0IHVwZGF0ZSBhZnRlciB0
b2dnbGluZyBDU1MgY2xhc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIwMjA2NQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTUxNDkxNDE+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWZ0ZXIgcjI0MzI2
NCBgX3N0eWxlTWFwYCBuZXZlciBjbGVhcnMuCisKKyAgICAgICAgcjI0MzI2NCBhbHNvIGNoYW5n
ZWQgYHNpZ25pZmljYW50Q2hhbmdlYCBsb2dpYy4gUmV2ZXJ0IGBBcnJheS5zaGFsbG93RXF1YWwo
c3R5bGVzLCBwcmV2aW91c1N0eWxlcylgCisgICAgICAgIGNoZWNrLgorCisgICAgICAgICogVXNl
ckludGVyZmFjZS9Nb2RlbHMvRE9NTm9kZVN0eWxlcy5qczoKKyAgICAgICAgKFdJLkRPTU5vZGVT
dHlsZXMpOgorICAgICAgICAoV0kuRE9NTm9kZVN0eWxlcy5wcm90b3R5cGUucmVmcmVzaC5mZXRj
aGVkTWF0Y2hlZFN0eWxlcyk6CisgICAgICAgIChXSS5ET01Ob2RlU3R5bGVzLnByb3RvdHlwZS5y
ZWZyZXNoLmZldGNoZWRJbmxpbmVTdHlsZXMpOgorICAgICAgICAoV0kuRE9NTm9kZVN0eWxlcy5w
cm90b3R5cGUucmVmcmVzaC5mZXRjaGVkQ29tcHV0ZWRTdHlsZSk6CisgICAgICAgIChXSS5ET01O
b2RlU3R5bGVzLnByb3RvdHlwZS5yZWZyZXNoKToKKyAgICAgICAgKFdJLkRPTU5vZGVTdHlsZXMu
cHJvdG90eXBlLl9wYXJzZVN0eWxlRGVjbGFyYXRpb25QYXlsb2FkKToKKyAgICAgICAgKFdJLkRP
TU5vZGVTdHlsZXMucHJvdG90eXBlLl9wYXJzZVJ1bGVQYXlsb2FkKToKKwogMjAxOS0wOS0xMyAg
Sm9zZXBoIFBlY29yYXJvICA8cGVjb3Jhcm9AYXBwbGUuY29tPgogCiAgICAgICAgIFdlYiBJbnNw
ZWN0b3I6IFRpZ2h0ZXIgYXV0b2NvbXBsZXRlIGJ1YmJsZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9ET01Ob2RlU3R5bGVzLmpzIGIvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0RPTU5vZGVTdHlsZXMuanMK
aW5kZXggNWQ5YzdiY2QwZDguLmI2MjZmNmZlNTYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvRE9NTm9kZVN0eWxlcy5qcworKysgYi9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvRE9NTm9kZVN0eWxlcy5qcwpA
QCAtMzMsNyArMzMsNyBAQCBXSS5ET01Ob2RlU3R5bGVzID0gY2xhc3MgRE9NTm9kZVN0eWxlcyBl
eHRlbmRzIFdJLk9iamVjdAogICAgICAgICB0aGlzLl9ub2RlID0gbm9kZSB8fCBudWxsOwogCiAg
ICAgICAgIHRoaXMuX3J1bGVzTWFwID0gbmV3IE1hcDsKLSAgICAgICAgdGhpcy5fc3R5bGVzTWFw
ID0gbmV3IE11bHRpbWFwOworICAgICAgICB0aGlzLl9zdHlsZU1hcCA9IG5ldyBNYXA7CiAKICAg
ICAgICAgdGhpcy5fbWF0Y2hlZFJ1bGVzID0gW107CiAgICAgICAgIHRoaXMuX2luaGVyaXRlZFJ1
bGVzID0gW107CkBAIC0xNTgsOCArMTU4LDYgQEAgV0kuRE9NTm9kZVN0eWxlcyA9IGNsYXNzIERP
TU5vZGVTdHlsZXMgZXh0ZW5kcyBXSS5PYmplY3QKIAogICAgICAgICB0aGlzLl9uZWVkc1JlZnJl
c2ggPSBmYWxzZTsKIAotICAgICAgICBsZXQgcHJldmlvdXNTdHlsZXNNYXAgPSB0aGlzLl9zdHls
ZXNNYXAuY29weSgpOwotCiAgICAgICAgIGxldCBmZXRjaGVkTWF0Y2hlZFN0eWxlc1Byb21pc2Ug
PSBuZXcgV0kuV3JhcHBlZFByb21pc2U7CiAgICAgICAgIGxldCBmZXRjaGVkSW5saW5lU3R5bGVz
UHJvbWlzZSA9IG5ldyBXSS5XcmFwcGVkUHJvbWlzZTsKICAgICAgICAgbGV0IGZldGNoZWRDb21w
dXRlZFN0eWxlc1Byb21pc2UgPSBuZXcgV0kuV3JhcHBlZFByb21pc2U7CkBAIC0xOTcsNiArMTk1
LDkgQEAgV0kuRE9NTm9kZVN0eWxlcyA9IGNsYXNzIERPTU5vZGVTdHlsZXMgZXh0ZW5kcyBXSS5P
YmplY3QKICAgICAgICAgICAgIHBzZXVkb0VsZW1lbnRSdWxlc1BheWxvYWQgPSBwc2V1ZG9FbGVt
ZW50UnVsZXNQYXlsb2FkIHx8IFtdOwogICAgICAgICAgICAgaW5oZXJpdGVkUnVsZXNQYXlsb2Fk
ID0gaW5oZXJpdGVkUnVsZXNQYXlsb2FkIHx8IFtdOwogCisgICAgICAgICAgICB0aGlzLl9wcmV2
aW91c1N0eWxlTWFwID0gdGhpcy5fc3R5bGVNYXA7CisgICAgICAgICAgICB0aGlzLl9zdHlsZU1h
cCA9IG5ldyBNYXA7CisKICAgICAgICAgICAgIHRoaXMuX21hdGNoZWRSdWxlcyA9IHBhcnNlUnVs
ZU1hdGNoQXJyYXlQYXlsb2FkKG1hdGNoZWRSdWxlc1BheWxvYWQsIHRoaXMuX25vZGUpOwogCiAg
ICAgICAgICAgICB0aGlzLl9wc2V1ZG9FbGVtZW50cy5jbGVhcigpOwpAQCAtMjU3LDE1ICsyNTgs
MTkgQEAgV0kuRE9NTm9kZVN0eWxlcyA9IGNsYXNzIERPTU5vZGVTdHlsZXMgZXh0ZW5kcyBXSS5P
YmplY3QKICAgICAgICAgICAgICAgICB0aGlzLl9jb21wdXRlZFN0eWxlID0gbmV3IFdJLkNTU1N0
eWxlRGVjbGFyYXRpb24odGhpcywgbnVsbCwgbnVsbCwgV0kuQ1NTU3R5bGVEZWNsYXJhdGlvbi5U
eXBlLkNvbXB1dGVkLCB0aGlzLl9ub2RlLCBmYWxzZSwgbnVsbCwgcHJvcGVydGllcyk7CiAKICAg
ICAgICAgICAgIGxldCBzaWduaWZpY2FudENoYW5nZSA9IGZhbHNlOwotICAgICAgICAgICAgZm9y
IChsZXQgW2tleSwgc3R5bGVzXSBvZiB0aGlzLl9zdHlsZXNNYXAuc2V0cygpKSB7Ci0gICAgICAg
ICAgICAgICAgbGV0IHByZXZpb3VzU3R5bGVzID0gcHJldmlvdXNTdHlsZXNNYXAuZ2V0KGtleSk7
CisgICAgICAgICAgICBmb3IgKGxldCBba2V5LCBzdHlsZXNdIG9mIHRoaXMuX3N0eWxlTWFwKSB7
CisgICAgICAgICAgICAgICAgLy8gQ2hlY2sgaWYgdGhlIHNhbWUga2V5IGV4aXN0cyBpbiB0aGUg
cHJldmlvdXMgbWFwIGFuZCBoYXMgdGhlIHNhbWUgc3R5bGUgb2JqZWN0cy4KKyAgICAgICAgICAg
ICAgICBsZXQgcHJldmlvdXNTdHlsZXMgPSB0aGlzLl9wcmV2aW91c1N0eWxlTWFwLmdldChrZXkp
OwogICAgICAgICAgICAgICAgIGlmIChwcmV2aW91c1N0eWxlcykgeworICAgICAgICAgICAgICAg
ICAgICBpZiAoQXJyYXkuc2hhbGxvd0VxdWFsKHN0eWxlcywgcHJldmlvdXNTdHlsZXMpKQorICAg
ICAgICAgICAgICAgICAgICAgICAgY29udGludWU7CisKICAgICAgICAgICAgICAgICAgICAgLy8g
U29tZSBzdHlsZXMgaGF2ZSBzZWxlY3RvcnMgc3VjaCB0aGF0IHRoZXkgd2lsbCBtYXRjaCB3aXRo
IHRoZSBET00gbm9kZSB0d2ljZSAoZm9yIGV4YW1wbGUgIjo6YmVmb3JlLCA6OmFmdGVyIikuCiAg
ICAgICAgICAgICAgICAgICAgIC8vIEluIHRoaXMgY2FzZSBhIHNlY29uZCBzdHlsZSBmb3IgYSBz
ZWNvbmQgbWF0Y2hpbmcgbWF5IGJlIGdlbmVyYXRlZCBhbmQgYWRkZWQgd2hpY2ggd2lsbCBjYXVz
ZSB0aGUgc2hhbGxvd0VxdWFsCiAgICAgICAgICAgICAgICAgICAgIC8vIHRvIG5vdCByZXR1cm4g
dHJ1ZSwgc28gaW4gdGhpcyBjYXNlIHdlIGp1c3Qgd2FudCB0byBlbnN1cmUgdGhhdCBhbGwgdGhl
IGN1cnJlbnQgc3R5bGVzIGV4aXN0ZWQgcHJldmlvdXNseS4KICAgICAgICAgICAgICAgICAgICAg
bGV0IHN0eWxlRm91bmQgPSBmYWxzZTsKICAgICAgICAgICAgICAgICAgICAgZm9yIChsZXQgc3R5
bGUgb2Ygc3R5bGVzKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICBpZiAocHJldmlvdXNTdHls
ZXMuaGFzKHN0eWxlKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHByZXZpb3VzU3R5
bGVzLmluY2x1ZGVzKHN0eWxlKSkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0eWxl
Rm91bmQgPSB0cnVlOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICAgICAgICAgICAgICAgICAgfQpAQCAtMjc3LDcgKzI4Miw3IEBAIFdJLkRPTU5vZGVTdHlsZXMg
PSBjbGFzcyBET01Ob2RlU3R5bGVzIGV4dGVuZHMgV0kuT2JqZWN0CiAKICAgICAgICAgICAgICAg
ICBpZiAoIXRoaXMuX2luY2x1ZGVVc2VyQWdlbnRSdWxlc09uTmV4dFJlZnJlc2gpIHsKICAgICAg
ICAgICAgICAgICAgICAgLy8gV2UgY2FuIGFzc3VtZSBhbGwgdGhlIHN0eWxlcyB3aXRoIHRoZSBz
YW1lIGtleSBhcmUgZnJvbSB0aGUgc2FtZSBzdHlsZXNoZWV0IGFuZCBydWxlLCBzbyB3ZSBvbmx5
IGNoZWNrIHRoZSBmaXJzdC4KLSAgICAgICAgICAgICAgICAgICAgbGV0IGZpcnN0U3R5bGUgPSBz
dHlsZXMuZmlyc3RWYWx1ZTsKKyAgICAgICAgICAgICAgICAgICAgbGV0IGZpcnN0U3R5bGUgPSBz
dHlsZXNbMF07CiAgICAgICAgICAgICAgICAgICAgIGlmIChmaXJzdFN0eWxlICYmIGZpcnN0U3R5
bGUub3duZXJSdWxlICYmIGZpcnN0U3R5bGUub3duZXJSdWxlLnR5cGUgPT09IFdJLkNTU1N0eWxl
U2hlZXQuVHlwZS5Vc2VyQWdlbnQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFVzZXIg
QWdlbnQgc3R5bGVzIGdldCBkaWZmZXJlbnQgaWRlbnRpZmllcnMgYWZ0ZXIgc29tZSBlZGl0cy4g
VGhpcyB3b3VsZCBjYXVzZSB1cyB0byBmaXJlIGEgc2lnbmlmaWNhbnQgcmVmcmVzaGVkCiAgICAg
ICAgICAgICAgICAgICAgICAgICAvLyBldmVudCBtb3JlIHRoYW4gaXQgaXMgaGVscGZ1bC4gQW5k
IHNpbmNlIHRoZSB1c2VyIGFnZW50IHN0eWxlc2hlZXQgaXMgc3RhdGljIGl0IHNob3VsZG4ndCBt
YXRjaCBkaWZmZXJlbnRseQpAQCAtMjkyLDE0ICsyOTcsMTQgQEAgV0kuRE9NTm9kZVN0eWxlcyA9
IGNsYXNzIERPTU5vZGVTdHlsZXMgZXh0ZW5kcyBXSS5PYmplY3QKICAgICAgICAgICAgIH0KIAog
ICAgICAgICAgICAgaWYgKCFzaWduaWZpY2FudENoYW5nZSkgewotICAgICAgICAgICAgICAgIGZv
ciAobGV0IFtrZXksIHByZXZpb3VzU3R5bGVzXSBvZiBwcmV2aW91c1N0eWxlc01hcC5zZXRzKCkp
IHsKKyAgICAgICAgICAgICAgICBmb3IgKGxldCBba2V5LCBwcmV2aW91c1N0eWxlXSBvZiB0aGlz
Ll9wcmV2aW91c1N0eWxlTWFwKSB7CiAgICAgICAgICAgICAgICAgICAgIC8vIENoZWNrIGlmIHRo
ZSBzYW1lIGtleSBleGlzdHMgaW4gY3VycmVudCBtYXAuIElmIGl0IGRvZXMgZXhpc3QgaXQgd2Fz
IGFscmVhZHkgY2hlY2tlZCBmb3IgZXF1YWxpdHkgYWJvdmUuCi0gICAgICAgICAgICAgICAgICAg
IGlmICh0aGlzLl9zdHlsZXNNYXAuaGFzKGtleSkpCisgICAgICAgICAgICAgICAgICAgIGlmICh0
aGlzLl9zdHlsZU1hcC5oYXMoa2V5KSkKICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVl
OwogCiAgICAgICAgICAgICAgICAgICAgIGlmICghdGhpcy5faW5jbHVkZVVzZXJBZ2VudFJ1bGVz
T25OZXh0UmVmcmVzaCkgewogICAgICAgICAgICAgICAgICAgICAgICAgLy8gU2VlIGFib3ZlIGZv
ciB3aHkgd2Ugc2tpcCB1c2VyIGFnZW50IHN0eWxlIHJ1bGVzLgotICAgICAgICAgICAgICAgICAg
ICAgICAgbGV0IGZpcnN0U3R5bGUgPSBwcmV2aW91c1N0eWxlcy5maXJzdFZhbHVlOworICAgICAg
ICAgICAgICAgICAgICAgICAgbGV0IGZpcnN0U3R5bGUgPSBwcmV2aW91c1N0eWxlWzBdOwogICAg
ICAgICAgICAgICAgICAgICAgICAgaWYgKGZpcnN0U3R5bGUgJiYgZmlyc3RTdHlsZS5vd25lclJ1
bGUgJiYgZmlyc3RTdHlsZS5vd25lclJ1bGUudHlwZSA9PT0gV0kuQ1NTU3R5bGVTaGVldC5UeXBl
LlVzZXJBZ2VudCkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAg
ICAgICAgICAgICAgICAgfQpAQCAtMzEwLDYgKzMxNSw3IEBAIFdJLkRPTU5vZGVTdHlsZXMgPSBj
bGFzcyBET01Ob2RlU3R5bGVzIGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgICAgICAgICAgICAgfQog
ICAgICAgICAgICAgfQogCisgICAgICAgICAgICB0aGlzLl9wcmV2aW91c1N0eWxlTWFwID0gbnVs
bDsKICAgICAgICAgICAgIHRoaXMuX2luY2x1ZGVVc2VyQWdlbnRSdWxlc09uTmV4dFJlZnJlc2gg
PSBmYWxzZTsKIAogICAgICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV0ku
RE9NTm9kZVN0eWxlcy5FdmVudC5SZWZyZXNoZWQsIHtzaWduaWZpY2FudENoYW5nZX0pOwpAQCAt
NTYwLDIzICs1NjYsNDkgQEAgV0kuRE9NTm9kZVN0eWxlcyA9IGNsYXNzIERPTU5vZGVTdHlsZXMg
ZXh0ZW5kcyBXSS5PYmplY3QKICAgICAgICAgdmFyIG1hcEtleSA9IGlkID8gaWQuc3R5bGVTaGVl
dElkICsgIjoiICsgaWQub3JkaW5hbCA6IG51bGw7CiAgICAgICAgIGlmIChwc2V1ZG9JZCkKICAg
ICAgICAgICAgIG1hcEtleSArPSAiOiIgKyBwc2V1ZG9JZDsKKwogICAgICAgICBpZiAodHlwZSA9
PT0gV0kuQ1NTU3R5bGVEZWNsYXJhdGlvbi5UeXBlLkF0dHJpYnV0ZSkKICAgICAgICAgICAgIG1h
cEtleSArPSAiOiIgKyBub2RlLmlkICsgIjphdHRyaWJ1dGUiOwogCi0gICAgICAgIGxldCBzdHls
ZSA9IHJ1bGUgPyBydWxlLnN0eWxlIDogbnVsbDsKKyAgICAgICAgdmFyIHN0eWxlID0gcnVsZSA/
IHJ1bGUuc3R5bGUgOiBudWxsOworICAgICAgICB2YXIgc3R5bGVEZWNsYXJhdGlvbnMgPSBbXTsK
IAotICAgICAgICBsZXQgZXhpc3RpbmdTdHlsZXMgPSB0aGlzLl9zdHlsZXNNYXAuZ2V0KG1hcEtl
eSk7Ci0gICAgICAgIGlmIChleGlzdGluZ1N0eWxlcyAmJiAhc3R5bGUpIHsKLSAgICAgICAgICAg
IGZvciAobGV0IGV4aXN0aW5nU3R5bGUgb2YgZXhpc3RpbmdTdHlsZXMpIHsKLSAgICAgICAgICAg
ICAgICBpZiAoZXhpc3RpbmdTdHlsZS5ub2RlID09PSBub2RlICYmIGV4aXN0aW5nU3R5bGUuaW5o
ZXJpdGVkID09PSBpbmhlcml0ZWQpIHsKLSAgICAgICAgICAgICAgICAgICAgc3R5bGUgPSBleGlz
dGluZ1N0eWxlOwotICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICB9
CisgICAgICAgIC8vIExvb2sgZm9yIGV4aXN0aW5nIHN0eWxlcyBpbiB0aGUgcHJldmlvdXMgbWFw
IGlmIHRoZXJlIGlzIG9uZSwgb3RoZXJ3aXNlIHVzZSB0aGUgY3VycmVudCBtYXAuCisgICAgICAg
IHZhciBwcmV2aW91c1N0eWxlTWFwID0gdGhpcy5fcHJldmlvdXNTdHlsZU1hcCB8fCB0aGlzLl9z
dHlsZU1hcDsKKyAgICAgICAgaWYgKG1hcEtleSAmJiBwcmV2aW91c1N0eWxlTWFwLmhhcyhtYXBL
ZXkpKSB7CisgICAgICAgICAgICBzdHlsZURlY2xhcmF0aW9ucyA9IHByZXZpb3VzU3R5bGVNYXAu
Z2V0KG1hcEtleSk7CisKKyAgICAgICAgICAgIGlmICghc3R5bGUpIHsKKyAgICAgICAgICAgICAg
ICB2YXIgZmlsdGVyZWRTdHlsZURlY2xhcmF0aW9ucyA9IHN0eWxlRGVjbGFyYXRpb25zLmZpbHRl
cihmdW5jdGlvbihzdHlsZURlY2xhcmF0aW9uKSB7CisgICAgICAgICAgICAgICAgICAgIC8vIFRo
aXMgY2FzZSBvbmx5IGFwcGxpZXMgZm9yIHN0eWxlcyB0aGF0IGFyZSBub3QgcGFydCBvZiBhIHJ1
bGUuCisgICAgICAgICAgICAgICAgICAgIGlmIChzdHlsZURlY2xhcmF0aW9uLm93bmVyUnVsZSkg
eworICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZS5hc3NlcnQoIXJ1bGUpOworICAgICAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgICAgICB9CisK
KyAgICAgICAgICAgICAgICAgICAgaWYgKHN0eWxlRGVjbGFyYXRpb24ubm9kZSAhPT0gbm9kZSkK
KyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICAgICAgICAg
ICAgICBpZiAoc3R5bGVEZWNsYXJhdGlvbi5pbmhlcml0ZWQgIT09IGluaGVyaXRlZCkKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICAgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKKyAgICAgICAgICAgICAgICB9KTsKKworICAgICAgICAgICAgICAgIGNvbnNv
bGUuYXNzZXJ0KGZpbHRlcmVkU3R5bGVEZWNsYXJhdGlvbnMubGVuZ3RoIDw9IDEpOworICAgICAg
ICAgICAgICAgIHN0eWxlID0gZmlsdGVyZWRTdHlsZURlY2xhcmF0aW9uc1swXSB8fCBudWxsOwog
ICAgICAgICAgICAgfQogICAgICAgICB9CiAKLSAgICAgICAgaWYgKHN0eWxlKQotICAgICAgICAg
ICAgdGhpcy5fc3R5bGVzTWFwLmFkZChtYXBLZXksIHN0eWxlKTsKKyAgICAgICAgaWYgKHByZXZp
b3VzU3R5bGVNYXAgIT09IHRoaXMuX3N0eWxlTWFwKSB7CisgICAgICAgICAgICAvLyBJZiB0aGUg
cHJldmlvdXMgYW5kIGN1cnJlbnQgbWFwcyBkaWZmZXIgdGhlbiBtYWtlIHN1cmUgdGhlIGZvdW5k
IHN0eWxlRGVjbGFyYXRpb24gaXMgYWRkZWQgdG8gdGhlIGN1cnJlbnQgbWFwLgorICAgICAgICAg
ICAgc3R5bGVEZWNsYXJhdGlvbnMgPSBtYXBLZXkgJiYgdGhpcy5fc3R5bGVNYXAuZ2V0KG1hcEtl
eSkgfHwgW107CisKKyAgICAgICAgICAgIGlmIChzdHlsZSAmJiAhc3R5bGVEZWNsYXJhdGlvbnMu
aW5jbHVkZXMoc3R5bGUpKSB7CisgICAgICAgICAgICAgICAgc3R5bGVEZWNsYXJhdGlvbnMucHVz
aChzdHlsZSk7CisgICAgICAgICAgICAgICAgdGhpcy5fc3R5bGVNYXAuc2V0KG1hcEtleSwgc3R5
bGVEZWNsYXJhdGlvbnMpOworICAgICAgICAgICAgfQorICAgICAgICB9CiAKICAgICAgICAgdmFy
IHNob3J0aGFuZHMgPSB7fTsKICAgICAgICAgZm9yICh2YXIgaSA9IDA7IHBheWxvYWQuc2hvcnRo
YW5kRW50cmllcyAmJiBpIDwgcGF5bG9hZC5zaG9ydGhhbmRFbnRyaWVzLmxlbmd0aDsgKytpKSB7
CkBAIC02MTcsOCArNjQ5LDEwIEBAIFdJLkRPTU5vZGVTdHlsZXMgPSBjbGFzcyBET01Ob2RlU3R5
bGVzIGV4dGVuZHMgV0kuT2JqZWN0CiAKICAgICAgICAgc3R5bGUgPSBuZXcgV0kuQ1NTU3R5bGVE
ZWNsYXJhdGlvbih0aGlzLCBzdHlsZVNoZWV0LCBpZCwgdHlwZSwgbm9kZSwgaW5oZXJpdGVkLCB0
ZXh0LCBwcm9wZXJ0aWVzLCBzdHlsZVNoZWV0VGV4dFJhbmdlKTsKIAotICAgICAgICBpZiAobWFw
S2V5KQotICAgICAgICAgICAgdGhpcy5fc3R5bGVzTWFwLmFkZChtYXBLZXksIHN0eWxlKTsKKyAg
ICAgICAgaWYgKG1hcEtleSkgeworICAgICAgICAgICAgc3R5bGVEZWNsYXJhdGlvbnMucHVzaChz
dHlsZSk7CisgICAgICAgICAgICB0aGlzLl9zdHlsZU1hcC5zZXQobWFwS2V5LCBzdHlsZURlY2xh
cmF0aW9ucyk7CisgICAgICAgIH0KIAogICAgICAgICByZXR1cm4gc3R5bGU7CiAgICAgfQo=
</data>
<flag name="commit-queue"
          id="395305"
          type_id="3"
          status="-"
          setter="nvasilyev"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>379611</attachid>
            <date>2019-09-25 19:23:21 -0700</date>
            <delta_ts>2020-08-31 12:50:35 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>4450</size>
            <attacher name="Nikita Vasilyev">nvasilyev</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvQ2hhbmdlTG9nCmluZGV4IDZlMzVlZmRhNWI3Li4zMDZhZWNjZmNiYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjQgQEAKKzIwMTktMDktMjUgIE5pa2l0
YSBWYXNpbHlldiAgPG52YXNpbHlldkBhcHBsZS5jb20+CisKKyAgICAgICAgUkVHUkVTU0lPTihy
MjQzMjY0KTogV2ViIEluc3BlY3RvcjogU3R5bGUgcGFuZSBkb2Vzbid0IHVwZGF0ZSBhZnRlciB0
b2dnbGluZyBDU1MgY2xhc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTIwMjA2NQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTUxNDkxNDE+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgcjI0MzI2NCBuZXZl
ciBjbGVhcmVkIGBfc3R5bGVNYXBgLiBDcmVhdGUgYW5kIGNsZWFyIGBfc3R5bGVNYXBgIGF0IHRo
ZSBzYW1lIHBsYWNlIGFzIGl0IHdhcyBiZWZvcmUgcjI0MzI2NC4KKworICAgICAgICAqIFVzZXJJ
bnRlcmZhY2UvTW9kZWxzL0RPTU5vZGVTdHlsZXMuanM6CisgICAgICAgIChXSS5ET01Ob2RlU3R5
bGVzKToKKyAgICAgICAgQXZvaWQgY29weWluZyBhIE11bHRpbWFwIGFzIGl0IGlzIHVubmVjZXNz
YXJ5IGV4cGVuc2l2ZS4KKworICAgICAgICAoV0kuRE9NTm9kZVN0eWxlcy5wcm90b3R5cGUucmVm
cmVzaC5mZXRjaGVkTWF0Y2hlZFN0eWxlcyk6CisgICAgICAgIChXSS5ET01Ob2RlU3R5bGVzLnBy
b3RvdHlwZS5yZWZyZXNoLmZldGNoZWRJbmxpbmVTdHlsZXMpOgorICAgICAgICAoV0kuRE9NTm9k
ZVN0eWxlcy5wcm90b3R5cGUucmVmcmVzaC5mZXRjaGVkQ29tcHV0ZWRTdHlsZSk6CisgICAgICAg
IChXSS5ET01Ob2RlU3R5bGVzLnByb3RvdHlwZS5yZWZyZXNoKToKKyAgICAgICAgKFdJLkRPTU5v
ZGVTdHlsZXMucHJvdG90eXBlLl9wYXJzZVN0eWxlRGVjbGFyYXRpb25QYXlsb2FkKToKKyAgICAg
ICAgKFdJLkRPTU5vZGVTdHlsZXMucHJvdG90eXBlLl9wYXJzZVJ1bGVQYXlsb2FkKToKKwogMjAx
OS0wOS0xMyAgSm9zZXBoIFBlY29yYXJvICA8cGVjb3Jhcm9AYXBwbGUuY29tPgogCiAgICAgICAg
IFdlYiBJbnNwZWN0b3I6IFRpZ2h0ZXIgYXV0b2NvbXBsZXRlIGJ1YmJsZXMKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9ET01Ob2RlU3R5bGVz
LmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0RPTU5vZGVT
dHlsZXMuanMKaW5kZXggNWQ5YzdiY2QwZDguLjI3MDJjZGE4N2MzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvRE9NTm9kZVN0eWxlcy5qcwor
KysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvRE9NTm9kZVN0
eWxlcy5qcwpAQCAtMTU4LDggKzE1OCw2IEBAIFdJLkRPTU5vZGVTdHlsZXMgPSBjbGFzcyBET01O
b2RlU3R5bGVzIGV4dGVuZHMgV0kuT2JqZWN0CiAKICAgICAgICAgdGhpcy5fbmVlZHNSZWZyZXNo
ID0gZmFsc2U7CiAKLSAgICAgICAgbGV0IHByZXZpb3VzU3R5bGVzTWFwID0gdGhpcy5fc3R5bGVz
TWFwLmNvcHkoKTsKLQogICAgICAgICBsZXQgZmV0Y2hlZE1hdGNoZWRTdHlsZXNQcm9taXNlID0g
bmV3IFdJLldyYXBwZWRQcm9taXNlOwogICAgICAgICBsZXQgZmV0Y2hlZElubGluZVN0eWxlc1By
b21pc2UgPSBuZXcgV0kuV3JhcHBlZFByb21pc2U7CiAgICAgICAgIGxldCBmZXRjaGVkQ29tcHV0
ZWRTdHlsZXNQcm9taXNlID0gbmV3IFdJLldyYXBwZWRQcm9taXNlOwpAQCAtMTk3LDYgKzE5NSw5
IEBAIFdJLkRPTU5vZGVTdHlsZXMgPSBjbGFzcyBET01Ob2RlU3R5bGVzIGV4dGVuZHMgV0kuT2Jq
ZWN0CiAgICAgICAgICAgICBwc2V1ZG9FbGVtZW50UnVsZXNQYXlsb2FkID0gcHNldWRvRWxlbWVu
dFJ1bGVzUGF5bG9hZCB8fCBbXTsKICAgICAgICAgICAgIGluaGVyaXRlZFJ1bGVzUGF5bG9hZCA9
IGluaGVyaXRlZFJ1bGVzUGF5bG9hZCB8fCBbXTsKIAorICAgICAgICAgICAgdGhpcy5fcHJldmlv
dXNTdHlsZXNNYXAgPSB0aGlzLl9zdHlsZXNNYXA7CisgICAgICAgICAgICB0aGlzLl9zdHlsZXNN
YXAgPSBuZXcgTXVsdGltYXA7CisKICAgICAgICAgICAgIHRoaXMuX21hdGNoZWRSdWxlcyA9IHBh
cnNlUnVsZU1hdGNoQXJyYXlQYXlsb2FkKG1hdGNoZWRSdWxlc1BheWxvYWQsIHRoaXMuX25vZGUp
OwogCiAgICAgICAgICAgICB0aGlzLl9wc2V1ZG9FbGVtZW50cy5jbGVhcigpOwpAQCAtMjU4LDcg
KzI1OSw4IEBAIFdJLkRPTU5vZGVTdHlsZXMgPSBjbGFzcyBET01Ob2RlU3R5bGVzIGV4dGVuZHMg
V0kuT2JqZWN0CiAKICAgICAgICAgICAgIGxldCBzaWduaWZpY2FudENoYW5nZSA9IGZhbHNlOwog
ICAgICAgICAgICAgZm9yIChsZXQgW2tleSwgc3R5bGVzXSBvZiB0aGlzLl9zdHlsZXNNYXAuc2V0
cygpKSB7Ci0gICAgICAgICAgICAgICAgbGV0IHByZXZpb3VzU3R5bGVzID0gcHJldmlvdXNTdHls
ZXNNYXAuZ2V0KGtleSk7CisgICAgICAgICAgICAgICAgLy8gQ2hlY2sgaWYgdGhlIHNhbWUga2V5
IGV4aXN0cyBpbiB0aGUgcHJldmlvdXMgbWFwIGFuZCBoYXMgdGhlIHNhbWUgc3R5bGUgb2JqZWN0
cy4KKyAgICAgICAgICAgICAgICBsZXQgcHJldmlvdXNTdHlsZXMgPSB0aGlzLl9wcmV2aW91c1N0
eWxlc01hcC5nZXQoa2V5KTsKICAgICAgICAgICAgICAgICBpZiAocHJldmlvdXNTdHlsZXMpIHsK
ICAgICAgICAgICAgICAgICAgICAgLy8gU29tZSBzdHlsZXMgaGF2ZSBzZWxlY3RvcnMgc3VjaCB0
aGF0IHRoZXkgd2lsbCBtYXRjaCB3aXRoIHRoZSBET00gbm9kZSB0d2ljZSAoZm9yIGV4YW1wbGUg
Ijo6YmVmb3JlLCA6OmFmdGVyIikuCiAgICAgICAgICAgICAgICAgICAgIC8vIEluIHRoaXMgY2Fz
ZSBhIHNlY29uZCBzdHlsZSBmb3IgYSBzZWNvbmQgbWF0Y2hpbmcgbWF5IGJlIGdlbmVyYXRlZCBh
bmQgYWRkZWQgd2hpY2ggd2lsbCBjYXVzZSB0aGUgc2hhbGxvd0VxdWFsCkBAIC0yOTIsNyArMjk0
LDcgQEAgV0kuRE9NTm9kZVN0eWxlcyA9IGNsYXNzIERPTU5vZGVTdHlsZXMgZXh0ZW5kcyBXSS5P
YmplY3QKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgaWYgKCFzaWduaWZpY2FudENoYW5n
ZSkgewotICAgICAgICAgICAgICAgIGZvciAobGV0IFtrZXksIHByZXZpb3VzU3R5bGVzXSBvZiBw
cmV2aW91c1N0eWxlc01hcC5zZXRzKCkpIHsKKyAgICAgICAgICAgICAgICBmb3IgKGxldCBba2V5
LCBwcmV2aW91c1N0eWxlc10gb2YgdGhpcy5fcHJldmlvdXNTdHlsZXNNYXAuc2V0cygpKSB7CiAg
ICAgICAgICAgICAgICAgICAgIC8vIENoZWNrIGlmIHRoZSBzYW1lIGtleSBleGlzdHMgaW4gY3Vy
cmVudCBtYXAuIElmIGl0IGRvZXMgZXhpc3QgaXQgd2FzIGFscmVhZHkgY2hlY2tlZCBmb3IgZXF1
YWxpdHkgYWJvdmUuCiAgICAgICAgICAgICAgICAgICAgIGlmICh0aGlzLl9zdHlsZXNNYXAuaGFz
KGtleSkpCiAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKQEAgLTMxMCw2ICszMTIs
NyBAQCBXSS5ET01Ob2RlU3R5bGVzID0gY2xhc3MgRE9NTm9kZVN0eWxlcyBleHRlbmRzIFdJLk9i
amVjdAogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KIAorICAgICAgICAgICAgdGhp
cy5fcHJldmlvdXNTdHlsZXNNYXAgPSBudWxsOwogICAgICAgICAgICAgdGhpcy5faW5jbHVkZVVz
ZXJBZ2VudFJ1bGVzT25OZXh0UmVmcmVzaCA9IGZhbHNlOwogCiAgICAgICAgICAgICB0aGlzLmRp
c3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXSS5ET01Ob2RlU3R5bGVzLkV2ZW50LlJlZnJlc2hlZCwg
e3NpZ25pZmljYW50Q2hhbmdlfSk7CkBAIC01NjUsNyArNTY4LDggQEAgV0kuRE9NTm9kZVN0eWxl
cyA9IGNsYXNzIERPTU5vZGVTdHlsZXMgZXh0ZW5kcyBXSS5PYmplY3QKIAogICAgICAgICBsZXQg
c3R5bGUgPSBydWxlID8gcnVsZS5zdHlsZSA6IG51bGw7CiAKLSAgICAgICAgbGV0IGV4aXN0aW5n
U3R5bGVzID0gdGhpcy5fc3R5bGVzTWFwLmdldChtYXBLZXkpOworICAgICAgICBjb25zb2xlLmFz
c2VydCh0aGlzLl9wcmV2aW91c1N0eWxlc01hcCk7CisgICAgICAgIGxldCBleGlzdGluZ1N0eWxl
cyA9IHRoaXMuX3ByZXZpb3VzU3R5bGVzTWFwLmdldChtYXBLZXkpOwogICAgICAgICBpZiAoZXhp
c3RpbmdTdHlsZXMgJiYgIXN0eWxlKSB7CiAgICAgICAgICAgICBmb3IgKGxldCBleGlzdGluZ1N0
eWxlIG9mIGV4aXN0aW5nU3R5bGVzKSB7CiAgICAgICAgICAgICAgICAgaWYgKGV4aXN0aW5nU3R5
bGUubm9kZSA9PT0gbm9kZSAmJiBleGlzdGluZ1N0eWxlLmluaGVyaXRlZCA9PT0gaW5oZXJpdGVk
KSB7Cg==
</data>
<flag name="review"
          id="395341"
          type_id="1"
          status="-"
          setter="hi"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>379612</attachid>
            <date>2019-09-25 19:28:31 -0700</date>
            <delta_ts>2019-09-25 19:28:31 -0700</delta_ts>
            <desc>[Animated GIF] With patch applied</desc>
            <filename>styles-toggling-classes.gif</filename>
            <type>image/gif</type>
            <size>23871</size>
            <attacher name="Nikita Vasilyev">nvasilyev</attacher>
            
              <data encoding="base64">R0lGODlh+gDGAHcAACH/C05FVFNDQVBFMi4wAwEAAAAh+QQAugAAACwAAAAA+gDGAIcCAgIMDAwU
FBQaGhoiIiIsLCwzMzM7OztERERLS0tTU1NbW1tjY2Nqampzc3N9fX0Cev4Mff4Qfv8seu0vffEz
f/QTgP4bhP4ih/8jif8qjP4/guc+gugzgfUzg/wxjv47hfQ4hvs6iPw0kP47lf8+mf9EhelIiOdC
jPxEmv9OkPZIkPpMnf9YkulXl/ZVnvpOoP9VpP9bpv9dqP9kn/Zjq/9upfZrrf1tsP56qO1wp/l0
q/t/r/d0tP54tPZ5tf5+uv+zKya6RkG/S0e/S0jrEA3/AAClDo6nE4+nFJCoF5GpHJOsI5auJ5mt
KJeuKpmwLZuyM520OJ+zNqC1O6G3QaS4Q6W6SKe7S6m+UqzBV6/BWrDEY7THa7jIbrnKcrzNe7/N
fMGDg4OLi4uTk5Obm5u4qZWlpaWrq6uzs7O8vLyArveArviDu/+Lu/aKvf6OwP6Tw/+bxf2eyP6i
yv+qyfOqzv+t0P+z0/+80/O51/+72P/PgcLRhcTTisbUjcjVksrYl83Zm87andDbo9LeqNTgrdbh
r9jis9nlu93nv+DVw6jYxqvDw8PLy8vY0cfZ0sjR0dHd3d3H2vbB2//I3//L4f/W4fDU5f3W6P/Y
5fnb6v7mxMPsysnnwODpxOLry+Xu0+nw1uvy3O3/6Mbk5OTi5+/j6O/t7e3h7f/l8P/s8/704/H2
6PT47Pbz8/Px9v30+f769Pn+/v4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAI/wBRCRxIsKDBgwgTKlzIsKHDhxAjSpxIsaLFixgzatzIsaPH
jwjr+BhJsqTJkyhR1gHJsqXLlzALvoBAs6bNmzhz6oTwIqbPn0CDKqyzs6jRnSuFKl3K1KOPo1Cj
+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
Ooj9RIToQoz8To/1SJD6VYzgV5f2bJTSbJndcp3dZJnmZJvsZJ/2YqD+bqX2bqf+eafseqjtdKf1
cKf5f6/3iYmJl5eXm5ubo6Ojq6urs7Ozvb29kavRgK73ncP9v8TKocb/vdP1xcXFy8vL0tLS2tra
x9r2w9r9yN7/0N3w1OL53ur95eXl4+fv4+jv7e3t4unx6/L79PT08vb79Pj//v7+AAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAB/+AQYKDNAcEAQAB
BAc0g46OBQQtREeVRC0EBY+DNQA1R0REg6FHnTWbA6BBQCYUD6+vMDoCP44AqkEvERK8vRIwOQCD
BTWighS+vBElFjIumjQER44PyRIeRyASRgSFk9TJED0zC78thqHUEevrMEUNux9Eh9PqJEMVGEcj
Dr1HiPUGMTgiYgcPHjgU7JLw4EiigEF8JKikQUiRCQt5/SOQTpAPBEekbbjAIGOIeQe+eczgUBoH
COt45TgXLaCPGA4BSOvA4AGFFyEbETPm4xOAo9J8+AhCpIYmQbdEFc2J9MhSh49SEZl6tKu0IAM2
mSJig6rXUks3RVJh9qzSTUFoWhjISUBnpbs34HIlcKOuChopVtDIy6Kw4RUoQh5hkcLuCRQqVrDY
NPVIihQhAazwcSMt5U8rWrSwoUJnkLxwI96gUcOGDRaZj9jwTLmz0taVbsxOvelGixWCUfN2xNl1
5+F6aSNHHggAIfkEAAYAAAAsAACSABUAHwCGAAAADAwMICAgNDQ0UFBQXFxcbW1tdXV1LXLaOHfW
L3fkLHrtL33xMXrqMX7yPoLoNYP2M4P8OYX1OYb6Ooj9Q4PmQYv7TY7zSJD6V5b1bJTRZJvsap3s
ZJ/2faTeYqD+bqX2eqjtcKf5f6/3mJiYpKSkq6urs7Ozvb29gK73p7fQn8DxnML7v8TKocb/pMj/
vdP1xcXFysvL09PT2traxtn1wdj7z9zx09zp0uH53On95eXl4OTq4+jv7e3t5ev07O/z9PT08vb8
9Pn//v7+AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAB/+APoKDMQYDAQABAwYxg46OBAMoQUSVQSgDBI+DMgAyREFBg6FEnTKbAqCb
o0QCjwCqPj0jFhG2ty46AIMEMqKCKRMUw8TDLiqaMQNEjhbFwxMiGBRDA4WTjhHPFB1EIBQsKIah
2RPCwxI6MAwUH0GHzOUQEuYsQg/nRIjxgw5EKz8uZCASAsKwCEQS8fOxQ0ElHDdy1FhwjoK+AeQE
7UBAZBkPIBUquluETWOChMs8NDA37IU4Zfx2aEgIYBkHesI6Nur1a0cLmjWJbHBgwYYMTYJgidrx
CYDToDt8JHyUKghToE6X+XD1yFSQGVizloq6KVKJsGJ3kH2EogDNAUFgK1WisepqTRpwS8QgYSIG
3U1Xl8UoEfSEjBlRTyhebIJEpQMHOgLQW8KEYsCfTKBAMYPwAB9/69KIcXjGCclEEK/SSEMtU7BE
aKhe/YgGChN9Q9MetEP2jNa7664NTjwQACH5BAAMAAAALAAAkQAVAB8AhgAAAAwMDCAgIDQ0NFBQ
UFxcXG1tbSxw1i1y2jh21S935Cx67C998TJ+8j6C6DWB8zOD/DqE9DmG+jqI/UGA4EuK7EKL/UiQ
+laV82yU0WSX5mSb7Gqd7GSf9mKg/m6l9nqo7XCn+Xus9ICAgIyMjJycnKOjo6ysrLOzs76+voCu
95u/9Ke20J3D/L/EyqTI/r3T9cXFxcrKy9PT09ra2sXX88LZ/M3b8tLc6tfl+t7q/eXl5eHm7OXo
7e3t7fT09PL2/PT5//7+/gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAf/gD6CgzEGAwEAAQMGMYOOjgQDKT9ClT8pAwSP
gzIAMkI/P4OhQp0ymwKgm6NCAo8AqqusAIMEMqKCPSIWEL2+FjYymjEDQo4qEhPKy8oSQgOFk44W
zM0hFxMvKYahjhASycsdQh8THj+Hxt7g4BMROjAMykKI6oMNQiIP4C1ADskQhCSy52OHgko8KmAQ
AuLBMnoDugnageCZEBw3aiwId26RtIkHBBbrQWGfshbbiNnbkUAggGIaIrQLAs2HLVw7Mrh8KYSD
zBYsNAmCJWqHi508N6zIQctRqh87PgGYOrWYD1ePTP2YgbRqqR2rIpno6nUH2E0pCrgcwLNSJRqr
XKKKpMHWRIwSJ2LA3SS3WAwTPFHImHH2kVwhJUo8A3BiB42zKCJLPqF4BAkSKUq8pGHiRGS+NGIM
noFisRDCsgo+Njv4LerUjmikOJF3L+xBjmfMeHybb+HetwMBACH5BAARAAAALAAAkQAWAB4AhQAA
AAwMDCAgIDU1NVBQUFxcXG1tbS9y1TJz1TJ12it56i998TR75DJ/8zaA7z6C6DWB9DOD/DuF9DmG
+jqI/EKL/EiQ+lSR7G2T0XCb3mqd7GSf9m6h626l9naj53qn7Huo7nCn+Xus9ICAgIyMjJycnKOj
o6urq7Ozs76+voCu94Cu+JvA97/R7LvR88XFxcvLy9PT09ra2sHY+9Hb69rf5t7q/eXl5ePo7+3t
7fT09PL1+f7+/gAAAAAAAAAAAAb/wJxwmHsZBgFAYGB4EZ9DwiCl41l1qQEBOoQBYDydbijmeWFc
QZgrrAqggDW7zQMQCbBxDieqRP6AFSs7MFtFAzxDKhMUjY6NEys8A04GVEMVj5AhFhQVWAY5A2JD
EROnjhs8HRQRYgM5AYmlp7USNi4LrTk8ATlxRBEQPCIQECw7D4wRvHayRBAMVh4XPB8Qjcy9oqRC
DQmTPDQtCoytYm+WejkNCHWIGQ6orlmHszkS7gAAiBoSpxUmnRCCRw+IA3X29fs3oxCROGNqYEio
kAcHFzvsPFGj4waYfSAR5XgD5YyOGBRDmrnBRoqJlCpvsOSSokDCAfys6JTBxuM7Wxk4TbwoceIF
Ty4+Eb0wkRMFjBgzofjkUaLEJAAnbsiYiaKrVxQnrI4gQSJFCX4yTJzoilTGi6cxUFzlAXVODq0y
PaLkIaOuXSIyUpwoevTvEK0xYmw1LDWqkCAAIfkEADYAAAAsAQCRABUAHwCFAAAACwsLGBgYICAg
NTU1UFBQXV1dbW1tdXV1L3LVMnPWM3XaLHrsL33xNHvkMn/0PoLoNYL1M4P8PIXzOYb7Ooj8QYDg
S4vtQov8SJD6VpXzbZPRZJfmZJvsap3sZJ/2bqX2eqjtcKf5fq71mJiYpKSkq6urs7Ozvb29gK73
nMH4vdP1xcXFy8vL09PT2traxdfzwdf9wtn8zdvy0tzq2t/m3ur95eXl5ejt7e3t6u709PT08vb8
9/j7/v7+AAAABv/AnHBILBqNrAMhAAgQDqwjsUBA7XzYHYpQkLYALd9uNxz7vi3jQCzNXQdFABs3
wkjueEysBxgWWmQ5KRQVhYaFFDItXSwEPkMYh4giGRUYPgRJVkMSkhUfPiAVElpKY5wUqYUTNisN
o2NLj6gREakqPBCEEjk+TLNCEhE+OhcaPiERhbw+TcA5EQ5YNDMwDISjvU6nQg8LmD44FrbLYwIH
m0ITCs2OHBOqGFoGjcAhCc0Ajh7wFCmYUf4EqrEhnz4fHSaM2LFoiBwyN8IAmHjwRq8+RNbsiGhw
oqMccIqg2eGio8czFo1QKWHy5I2URVAYyEfgIBYsL45w1PeiZglVFiRMsMhphKMjFiUOnmjhwuKJ
p1BNkMCCAAEmAD9LmHhaNIwJFChcJCWQg6jOFyyYujhx1UfTNjdevIxY0seLt22IvEBhQqjZvELi
unAhF3BRmEKCAAAh+QQACwAAACwHAJYADAAMAIUAAAA3NzcFWtUGXdoFYeICYOoFZfMFZ/kGaPUG
avwLavcebugbbvIcc/slbt8idOwwffE+ifZcidBEheVGiexOkfVMkfhpm+xsn/RtofeGtPizzfW3
0fu/0/O50vzN2erF1vLZ3ubY5vzi5+/n6ezo7PTw8vfx9fz3+Pv+/v4AAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGV8BRppEo
GhscVMbINHqIzYSFCG1GUpVoUSHaGJgGAyKhOS0OxYMhVXpAUpdv0UBIpT6gTgE8SAVSJA5yRQwC
KQB/E4MNF4YAiCkUYwkZIRKHj38UDBgmQQAh+QQATgAAACwAAE0A+gBVAIYAAAALCwsUFBQbGxsj
IyMqKiozMzM6OjpCQkJMTExQUFBdXV1kZGRtbW10dHR+fn4seu0vffEzf/Q/guc+gugzgfUzg/w7
hfQ4hvs6iPxEhelIiOdCjPxOkPZIkPpYkulXl/Zkn/ZupfZ6qO1wp/l2qvl/r/elEo+nF5GoF5Go
GZKqIZWvKpqvMJuwLZqxNJ22QaS4RKW7S6i9U6zAWK/BXrLCYrLKer2Dg4OLi4uTk5Obm5ujo6Or
q6uzs7O6urqArveArvicwfi90/XOgMHTj8fTkcjXnM3Zo8/aptHbqNPfsdbhutrDw8PLy8vR0dHd
3d3H2vbW5PvY5fne6v3lxN/mx+HpzOPr0uXs1+ju2+rj4+Pi5+/j6O/v4O3t7e3s8/zw4+3y5fD0
6/L09PTy9vz2+f349vf49/j6+voAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH/4BpgoOEhYaHiImKi4yNjo+QkZKTlJWWjj9f
hFBOl56QT0+JWz4+UJVkZIOpqF+qn4JkW1CviayKZFBbr66eXzw4ODyakThbhD88sMuxOcSDPj+J
X046TZU8PtDKlE0PnZROp4NbOTjm11/ShjqiiU7n56c57o6chtmuPtyGZKHPX558MZYmF5Rkgr7s
enIsTcBxgqA8oZXwH6QtE1/JMkjmC5QHDDXJ2vKsYKhaPK4Neugo27ZYtQrGLFhIR44dhWbqfMVj
nSAePFQ1wSELx6F2MA3luEaGB056t2LlfNWE3yCisYweurkDhygoOHbkeHCMRw4dwgQ5yXGW6JOw
Of96CPIhjJ5DHDp26HjU5OZNVVse6KX3Y4fgHaK+iNUW8ewOnD9VpnkrVi4jl3OV/Qi2Q9NmHD38
6bUsaItXHMSG5uAh94m5zml0AMPRZCgOcGl2hC7YhMxYHdYK0kP6eXdWlVs63Qx2bQtapE3PNTGN
g/GgB4SwHyK2L7e2J2TButrBzcmDU6mW3j2mntVaqY56DTwVWBorMmQL9bCuu/SglM2kQ9AimKWx
DxleNeXEWiRZY14TJXWXgzSmCSTbQE80pcxNXwzV1A+1vCUMhGmARUZhJRLVDoNfBAfNA3E5ocpq
ZPQVmw81EuXDDrngcBCPhWgniJCF/GBOWGnk0An/fsntlQZCaVSz0gPBBCMKXTzIeJcOPjTUyBZd
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
P4LnPoLoNIH1M4P8O4XzOYb7Ooj8QYDgRIXpSIjnS4vtQov8TpD2SJD6WJLpVpb0bZPRZJfmZJvs
ap3sZJ/2bqX2eqjtcKf5dqr5fq72sysmukZBv0tHv0tI6xAN/wAApQ6OpxWQqBeRqRuSrSSWrSiX
riqZsC2bsjOetDiftDegtT2it0KluUWmu0upvVGswVqwxWS0yW66ynK8zXu/zHnAg4ODi4uLk5OT
nJycpaWlq6urs7Ozu7u7gK73gK74nMH4vdP10ILD04nG04zI1ZLK2JfN2JrN26PR36nV4a/Y5Lnc
w8PDzMzM0NDQ3t7exdfzwdf9x9r2wtn8zdvy0tzq2t/m1uT72OX53ur95sTD7MrJ6MTh68rl7tTp
8t3u4+Pj4ufv5Oju7e3t6u707PP89OTx9+j0+Ov18/Pz8vb89vj8+vP5/v7+AAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAACP8ACQkcSLCgwYMC9SBcyLChw4cQI0qcSLGixYsYMQKaQkVhxo8gQ4rU
OBEQSYkmRy68Q0Wly5cwD1JJOfGJmYiAHlwkA4UgoJYLcxKMQpToGIhmqJRpaOZozKdQQza5M5Cm
Q5sOUwq1yJPgnSYMtwokQ3ZMk6UOoQxAQEABw6ZR48qdOOZBEz1mmzxRaNZJlCmEzDhpEuUJIaxU
mjSRUlAPFLtkhAJ60sRJS8GVqUpRDHggGSdPHjwB5ER0mSeUpUTRq0fy3oFTGD/0qAcA2oKAkt6c
y7s3wiZmvmqG8tXM5CiEnIwBtPmwmTJOWj9xKpAoIDJ3dVJBbkYnFMBUppj/aQKItEdC2I07IfMV
PfA7D6ZMXq6T0HKB462+TTBgAADqBOlRxhRU+WaggVON0VNgTSgo0BhRwCdQezZJ8QQVVEARhRlE
lXFWQluVkeEDGy22lB5NQDHGeegZRkgUY7RHhosPaDZTfUMBhdAUnRGCQAMmCaCjQWUAeOCRUSWI
HCEeQvhghGARQqEZFpJFhhl6kFXchEJNMV0ZJAY2hV+EAALhVJ4tCKOMCz6gkBQ3FvQViwYBAEBK
BjhBiBQADFkQXEgGChVw47254V3HAfJhczaNoSchUAz5nX1OCDUdeiQ6sRR0XR1GhoDoqRkjWJ26
uWecTJrkIEN2phQFAAMc/yCAkV75KeitIq2mx2ZOREfIFIo9gRx2KYKF1WopWnXHYGcJlZhfTkhh
FmWR9QradXp2Ki0henV616mSmRqFrQ0BUmBY4Z2L67ofaUWbUzzaZ9JpjdE5kL3lCWSSuTTdYS+7
AAc8UhlFFRzFZ1BsRhUUT2xGBoQGRyzxxBRXbPHFSwqsscDXlUFTGZ9uLPLIJJfM7haDXBRGHSqZ
G1V3D5BREBW0SiGzQXHIEMPOPMcwgxwWLWtyXDf8cdERX4ikqAAARHUHFAa4OJBdBiUgNUEy1GDD
1lzbUMMMXAkwdFQ39EFHHwMNQocdBLFdB8uEqN0H0gKpzfZAbsNNSGsLkf+BwBNNJ6SHGTfrUWBu
K1FxM34rEmS1V/5WFePjBsXQ9eUx/Ine4kXS1NQYYuv779gZ3QBEETqIQYgdPRDRAxIC9XHDEUL0
MMcgQQjxQw9Jz7GDET1kEfvstc8h5RS3IVRG4IQ4MEABBCAQmJCELODWQWMEgIAB9TkggKzUUb73
AQM4kFAB0A9w9UCWX8515gPdAUACBQzQUgIEkH8TFAGQH7p9PSJdSG6QNC8IgRBKgN0fdEAHQsiu
C3XzwhDipoOk+QAMDsQB2h5Yt70ppSHLG4gDCFCmAQBmCgNwAgFGxwAG6EtKtmme9AQiPoE0wHzJ
McDeArA+gbTPfTaA34T/APAoQEChACZpwAIIIQDGPOB/YyCXAC9SNkLUAQeEIELSCFGEpMkuZQJJ
AhME0kU/3IAHPehB6hx4AzBKJIQCcYALCZGAKDHgPwuZQgCsZhIUCoQKAxhIDQlxQ4EwAIcH6CEh
fug+IcLwPHfsjwAMID+FUOF/U1TJDdymAy5uUYtsJIgSlEDGL/zhBn4oiOwMki+GwLF5S6SjngBR
AAFECSF3eAIBXHhJgfiRhusrJCEbIJBEHoSRmPMK8wg5x4QAwJL/a2UmP3IDLhBCC0UgxBKMsDoc
sGyVA/nCDwbRhxwkTQhbEEgDQ+kV5IWFDHeK4wD0oIcAtIQBCTAD9Q6C/5Ym6FB+R1lAAgbSgOsR
FIdQIEBuAKBIZHbNkfIjiBQGQJUsEWIAPWkAFOUzTWoSwQc7aKAfaqcD4bFzIEbYQQ9+kLQ6BMEH
K00ZOOPnzoUQwE4AcIsDahmAJUZhni8CqkEaEAAC2FMgTwjAAAhwGzMUAAA6acIAAqDUSiFAAEtt
KBC3BtFlNq+oPPyVUg2wUf101CKpJIgf3IgQoxXkD24ViQOANLqFDA436oJIXgsyA625rwYyeIhx
qkKnKSzurIg9yFw3Jgca9IxnMohDuzyW2Moa5DmWzaxF+KbZznr2IWOo6WdHS9qBJKW0qB0tS1LL
Ws3eIYCtje00f8Ie2f/aNpNjGMNubsvbkr22t8D1rRSDS9xbnba4yF1XeHab3OY697nQja50p0vd
6lr3utjNrna3GxN6eve74A2veMdL3vKa97zoTa9618ve9rr3vfB9L3fnWxEe2fe++M2vfvfL3/76
978ADrCAB0zgAhv4wAg+cHwXzOAGO/jBEI6whCdM4Qpb+MIYzrCGN8zhDnv4wxweQxlGTOISm/jE
KE6xilfM4ha7+MUwjrGMZ0zjGtvYxeBlLn13XC/v6pjHQM4xkId8r+/+mMjzFTKSg2zkgpQBX34i
XICSl7yJCIgMaPnJkkWm5IRsqzGyGUiRCEKlLIfZytIaEGB2teWNdRn/PVQIMyBGfAfZ3AHLYzat
FKSgEOboC2RUmbNAnrw3dSkONk+WTZZCJiWyeIRwlG1zXN7MZ/GUKc17lpLNyPBl/CgOMH7+1Rg4
rZny2Mw+h+UzmPe2aSkAYldFYowZkIchSU+6yRMCjIjEhB/GjPpBADqtYf1MpfI8jBBUMMOsT3ge
5uiHzWUqE4HqHGgmdSTatoZKl8cAp9jM2SlsTvagg92SXVGJSVKw71GKpFsCnXlPdGLzRtItBapw
+tRmSveRsz0SJTMnOCwpw6x7jWpgkxkoZcj0wMtkEj3w6DpTMJJhB5JsNpMBKATKV51bM69381sl
Sh6QaQEDp3tr+mGd/w6MjuLsSxFLAS0c0bSOdzXq8Lxa1i+P8x3qHGuIi2i4H/+IkndelaXM+clo
ERCW1HXXP/+5thMqUKSnLOJ9oYVwdxjsnSMN6aB3F9det+6bwz7dsZM9uuC9krLXzva2u/3tcI+7
3OdO97rb/e54z7ve9873vtcdxIAPvOAH/+AxNMAAAQBAAAzQgBUR/vGQj3yGFWCAmVSFCgZQgOQ3
z/nOuxeeMiuPd/MFes+b/vSo1wMJXz1ek6ww9bCPveCb9uo8wEAEGsi97kWABkE8M722x73ucy8C
K+BB9shPfnkVEBl6VoEDHYi+9KPPATWQQfPoff70p88BK9DzDo5Xvv/4Yz8GHXpXBNvvAAdcQIIO
iIAQBgh/edG//fW3XwT0JIMAxs//1DdgJt6lAem3AoTAAh2gAT/RAOglgNtHgAaoAfm3f/03gZ1n
AKJHTxrAARoYfRsAB1hAAQdYHgbAAFTFAOTFgNLXgR94gBFIgiZEgTBIeAGwNwHIARmQARp4BYGA
AdAHgYTQU89hT+PFgBrIATrIgyyYJQBwF04wTzH4hCDWNN+lARlACHsQAiZACC2QAdHng33SBM7D
Z+IlgC/AByOQhVvYhfkXAN41K1D4hhw2g9+VARUgEGywBmcwAdDHgj8oAA6gS2IYXgK4AW/gBm6Q
BnqohlnChvTkhnCy+IgXZoGspwcWIAHwRwh54AE42IXlsRaLGIjgJYAacAF8IAgfsIdJCE97EQUC
4C+Q+IoT9n+TuAERQAgAoEMosAEbKAI/sQADMEkFAIrfRX8ZAAIlYAHTh39ZMgAJIAABEAWwGI0R
Vn40qActAAG2eIuEoAK6yAFVAH8rgiXlZQV7eIOo2AFVAF6uKI3s6GDMx3ptcALZqI0psAEwcB3Y
d155YAXCN3wiUAXH144C+WABAQAh+QQABgAAACwBAJIAOgAkAIYAAAACBgwLCwsSEhIaGhoMGzMV
GyIhISEtLS0gKTU1NTUXO3AaPnRGRkZKSkpJTVVRUVFcXFxjY2NtbW11dXV9fX00bMEzdNQ8eNAs
eu0vffEzf/Q/guc+gugzgPUzg/w6hPM4hvs6iPxEhelIiOdCi/xOkPZIkPpYkulXl/Zkn/Zin/hi
oP5upfZ6qO1wp/l2qvl+rvaBgYGLi4uUlJScnJyQoryjo6Oqqqqzs7O8vLyMosKArveArvicwfi7
w8+jw/Shxv+vy/W90/bDw8PLy8vEydHU1NTb29vH2vbP3fLe4urW5PvY5fne6v3k5OTi5+/j6O/t
7e3l7vvs8/z09PTy9vz0+P7+/v4AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAH/4BSgoOEhYaHiImKi4yNjo+QkZKTlJWHUTElH5ucJT1Q
kJianJueoJE8ISKrrKshPZCpra2vgk9EjiWzIiEvJyIlkLqzvRgMBQIAyRO4ix+7KlgtIh+Qz7Mq
EAk7SljeRToKEM6zIE5DGtSDEgICEonXrBcAP1dBLIJFDjlVMgBF8FyFCOHDSgdV1aQUiYDkiAAd
iK4NDGEACxCE+QDIUKjjQEAYVEykwOLCw6qEUnTIoEAAR0QRIE0AwDLEpDqFAgbNkALgJYgmTJgk
yaDq5o0BFGgccHno2c8HRqYQPZkvp6ABT4qMM/TsAwcqV0YUvUmhAU6mXKlZUIBFLKuERf8A0JBy
9AkWBc0IDfNAAsWGVsEUEhigAAHaQsMW2BDyl1XgIgQcDBBwQ0oVHRMM9SjqwcNYETwIIVm0WUQB
JSvGhohR6MmgKlUUGIrSYxSpEjxOOaJdIsAVaqViLFGExaqlRjNbY5Hi+hCWnscbCVg+6MkRb0+a
FyoevZEC2NWL3MWSvRBs2d0XTdBRJfxztuVfY06/iAhb9wAAwNd+Ny99RBAU0R5z4uWnH3muVaHV
f4zM1F5WzxkInxTPCZLDhRhmqOGGHHaYIQFSIIEDDRFKiAUSBGDI4CJxCXidgSYWod2Ki0CgwA0l
wrgfjY3oEEGEChzojTej0QeOhxqO+N6qEUHWkAMFMtBww2GWFEHEjIpAyBYRNxyYQxFHYGlJDpBA
iEUNNdwFAA5PICHmmGWKh4MOOhzRpWxF0kfmIUgQkQMRebZJBJhH5KAmFmE6YhYje4pWwww45IDD
DDUU2WZ2WV13YqKNLLpIo4IcMQNEhOgwwxGGIKEDDjgAClCnjYD6xAyvFlLEDDM+IUMFFCSFhAxH
5JmIp4qAuqoUHEoRKSFPVIDEs9ohEQgAIfkEAAYAAAAsJgCYAHQALgCFAAAADAwMExMTGxsbIiIi
MjIyPDw8S0tLUFBQY2NjbW1tf39/LHrtL33xM3/0P4LnPoLoM4H1M4T9PIf3OIb6Ooj8RIXpSIjn
Qoz8TpD2SJD6WJLpV5f2ZJ/2bqX2eqjtcKf5g4ODioqKk5OTnJycoqKiq6urs7OzvLy8gK73nMH4
vdP1xMTEzMzM1NTU29vbx9r21uT72OX53ur94+Pj4ufv7e3t7PP89fX18vb89vn9/f39AAAAAAAA
AAAAAAAABv/AirBCAWkqGJutJVA6n9CodEqtWq9Y7LDS2XkqEiUzSy6bz+jncDJbNcBiQSIwOKXv
+DyWwlflIBRwSwAhNiIDeomKejcZHDsfEUJhSwFOAiyLmptZMjExMAyBgi2WSpicqapQDzc6FqOk
ACM2JQI0q7mpERcbDltJSwMHAgElusiaFRERsRUpULjJ04kS1tcYKTXU3N3e3+Dh4uPk5ebn6Onq
6+ztUifw8fLz9PX29/j5+vv8+e7/AAMKJNevoMGDCBP6G8iwocOHeE6weAEx3AkTIkhQrAgOhQgX
V1ooAclxUQsR0pTQCMEyBImVLl4UsoGiZBp5NkzYcUJjwQv/GkCdyLTR0yYanC5o8VwARcSLoSEW
hBBZguVOlyFIGnUSz8lMlQtQsJhoI8TTQkVpjqDxQoTIECZSblXSVclXogtK6H17Fq+SEiPgiahp
di4UeE6SPknrtW9avWPJFjbMdWdOy36fmB3akyKKtTlBTh7IQkGBAAACFFCQicpJuYzt9rVBYmot
lsfKygWIoAAKHDuC40BRAMEUFh8pk2kBoMUOHDicQN/BXCRdjBqVkyEQXLgN4M+/7yDAFcVG7VgA
PN8RwACJHSQMBNihBDgA9GcQtIgO/MSAAnVAJ10LxuGXBQsF0CcdCwCwEB0UOxTQmoFWKPAbhOpJ
MZwCCnXoLuGH8xBAAwvz7KBePSzQQB6FVswXhYkKvmgKi1RkiGGMGNJYhYtPBKcejk6wFwQAIfkE
ADYAAAAshQC6ABUADACAs7Oz7u7uAhGMj6nL7Q+jnLROgLPe3PqvFAAh+QQASAAAACwHAJYAKAAM
AIQMDAwREREbGxsjIyMtLS0yMjJDQ0NLS0tQUFBdXV1jY2Nvb290dHR4eHiDg4OWlpabm5uhoaGp
qam1tbW5ubnFxcXNzc3T09Pd3d3k5OTt7e319fX9/f0AAAAAAAAAAAAFq6BWUVNpUpWmrmy7juaZ
VperXqmt0zpebZygMLXJ6Vw/4VBTtCiDF0OFYznanM/o1HJ5chIN6EoBACiO3ScYmhZCDhqxxpLA
XACU3vMd51y6FQgZGAYTQjUqFA4MAhJ6gYOFh10bCpYLSogRAQwPA442lJYKmJNBGQgGGZkqDAZz
AKAuaaiqmW0YWIcqFgIBBQSyLbi6bH1eGogqGFbJx0/Of9LTys0s1NQaIQA7
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>407500</attachid>
            <date>2020-08-28 14:27:10 -0700</date>
            <delta_ts>2020-08-28 14:27:10 -0700</delta_ts>
            <desc>Reduction 2</desc>
            <filename>index.html</filename>
            <type>text/html</type>
            <size>387</size>
            <attacher name="Nikita Vasilyev">nvasilyev</attacher>
            
              <data encoding="base64">PCFET0NUWVBFIGh0bWw+CjxodG1sPgo8aGVhZD4KICAgIDxtZXRhIGNoYXJzZXQ9IlVURi04Ij4K
ICAgIDx0aXRsZT5DaGFuZ2luZyBjbGFzczwvdGl0bGU+CiAgICA8c3R5bGU+CiAgICBodG1sIHsK
ICAgICAgICBmb250LXNpemU6IDEycHg7CiAgICB9CiAgICAuYmFyIHsKICAgICAgICBjb2xvcjog
ZGFya2dyZWVuOwogICAgfQogICAgLmZvbyB7CiAgICAgICAgYmFja2dyb3VuZDogaHNsKDc0LCAy
NCUsIDg5JSk7CiAgICB9CiAgICA8L3N0eWxlPgo8L2hlYWQ+Cjxib2R5IGNsYXNzPSJmb28gYmFy
Ij4KPGJ1dHRvbiBvbmNsaWNrPSJkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC50b2dnbGUoJ2Zvbycp
Ij5Ub2dnbGUgYmFja2dyb3VuZDwvYnV0dG9uPgo8L2JvZHk+CjwvaHRtbD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>407617</attachid>
            <date>2020-08-31 12:50:35 -0700</date>
            <delta_ts>2020-09-01 10:28:40 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>11206</size>
            <attacher name="Nikita Vasilyev">nvasilyev</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvQ2hhbmdlTG9nCmluZGV4IDgzZmNhMTcwMDA0OS4uMzBjMDYyYTdjNGY4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMiBAQAorMjAyMC0wOC0zMSAgTmlr
aXRhIFZhc2lseWV2ICA8bnZhc2lseWV2QGFwcGxlLmNvbT4KKworICAgICAgICBSRUdSRVNTSU9O
KHIyNDMyNjQpOiBXZWIgSW5zcGVjdG9yOiBTdHlsZSBwYW5lIGRvZXNuJ3QgdXBkYXRlIGFmdGVy
IHRvZ2dsaW5nIENTUyBjbGFzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjAyMDY1CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81NTE0OTE0MT4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFVzZXJJbnRl
cmZhY2UvTW9kZWxzL0RPTU5vZGVTdHlsZXMuanM6CisgICAgICAgIChXSS5ET01Ob2RlU3R5bGVz
LnByb3RvdHlwZS5yZWZyZXNoLmZldGNoZWRNYXRjaGVkU3R5bGVzKToKKyAgICAgICAgKFdJLkRP
TU5vZGVTdHlsZXMucHJvdG90eXBlLnJlZnJlc2guZmV0Y2hlZENvbXB1dGVkU3R5bGUpOgorICAg
ICAgICAoV0kuRE9NTm9kZVN0eWxlcy5wcm90b3R5cGUucmVmcmVzaCk6CisgICAgICAgIChXSS5E
T01Ob2RlU3R5bGVzLnByb3RvdHlwZS5fcGFyc2VTdHlsZURlY2xhcmF0aW9uUGF5bG9hZCk6Cisg
ICAgICAgIHIyNDMyNjQgaW50cm9kdWNlZCB0aGlzIGJ1ZyBieSBuZXZlciBjbGVhcmluZyBgX3N0
eWxlTWFwYC4gQ3JlYXRlIGFuZCBjbGVhciBgX3N0eWxlTWFwYCBhdAorICAgICAgICB0aGUgc2Ft
ZSBwbGFjZSBhcyBpdCB3YXMgYmVmb3JlIHIyNDMyNjQuCisKKyAgICAgICAgKiBVc2VySW50ZXJm
YWNlL1ZpZXdzL1NwcmVhZHNoZWV0UnVsZXNTdHlsZURldGFpbHNQYW5lbC5qczoKKyAgICAgICAg
KFdJLlNwcmVhZHNoZWV0UnVsZXNTdHlsZURldGFpbHNQYW5lbCk6CisgICAgICAgIChXSS5TcHJl
YWRzaGVldFJ1bGVzU3R5bGVEZXRhaWxzUGFuZWwucHJvdG90eXBlLmxheW91dCk6CisgICAgICAg
IExheW91dCBub3cgYWx3YXlzIHJlLWxheW91dHMgZXZlcnl0aGluZy4gUnVsZXMgd2l0aCBtb2Rp
ZmllZCBzZWxlY3RvcnMgYXJlIG5vdyBwcmVzZXJ2ZWQgYnkKKyAgICAgICAgZXhpdGluZyBleGl0
aW5nIGxheW91dCBlYXJseS4KKworICAgICAgICAoV0kuU3ByZWFkc2hlZXRSdWxlc1N0eWxlRGV0
YWlsc1BhbmVsLnByb3RvdHlwZS5fZ2V0U3R5bGVJZHMpOgorICAgICAgICAoV0kuU3ByZWFkc2hl
ZXRSdWxlc1N0eWxlRGV0YWlsc1BhbmVsLnByb3RvdHlwZS5faGFuZGxlU2VjdGlvblNlbGVjdG9y
V2lsbENoYW5nZSk6CisgICAgICAgIFJlbW92ZSBsb2dpYyB0aGF0IHRyaWVkIHRvIHByZXNlcnZl
IGluZGV4ZXMgb2YgQ1NTIHJ1bGVzIHdpdGggbW9kaWZpZWQgc2VsZWN0b3JzIHRoYXQKKyAgICAg
ICAgZG9uJ3QgbWF0Y2ggKFNlY3Rpb25JbmRleFN5bWJvbCBhbmQgZXZlcnl0aGluZyByZWxhdGVk
IHRvIGl0KS4KKyAgICAgICAgRXhpdCBsYXlvdXQgZWFybHkgaWYgdGhlIGlkcyBvZiByZW5kZXJl
ZCBzdHlsZXMgKGV4Y2x1ZGluZyB0aGUgaWRzIG9mIGVkaXRlZCBydWxlcyEpIG1hdGNoCisgICAg
ICAgIHRoZSBuZXcgcnVsZXMuCisKIDIwMjAtMDgtMjggIERldmluIFJvdXNzbyAgPGRyb3Vzc29A
YXBwbGUuY29tPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IEF1ZGl0OiBzaG91bGQgYmUgYWJs
ZSB0byBjcmVhdGUvZWRpdCBpbXBvcnRlZCBhdWRpdHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9ET01Ob2RlU3R5bGVzLmpzIGIvU291cmNl
L1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0RPTU5vZGVTdHlsZXMuanMKaW5k
ZXggYmZmYjQxMzA2NTI0Li42NzU3MTc2MjgwYjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9ET01Ob2RlU3R5bGVzLmpzCisrKyBiL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9ET01Ob2RlU3R5bGVzLmpzCkBA
IC0xNTAsOCArMTUwLDYgQEAgV0kuRE9NTm9kZVN0eWxlcyA9IGNsYXNzIERPTU5vZGVTdHlsZXMg
ZXh0ZW5kcyBXSS5PYmplY3QKIAogICAgICAgICB0aGlzLl9uZWVkc1JlZnJlc2ggPSBmYWxzZTsK
IAotICAgICAgICBsZXQgcHJldmlvdXNTdHlsZXNNYXAgPSB0aGlzLl9zdHlsZXNNYXAuY29weSgp
OwotCiAgICAgICAgIGxldCBmZXRjaGVkTWF0Y2hlZFN0eWxlc1Byb21pc2UgPSBuZXcgV0kuV3Jh
cHBlZFByb21pc2U7CiAgICAgICAgIGxldCBmZXRjaGVkSW5saW5lU3R5bGVzUHJvbWlzZSA9IG5l
dyBXSS5XcmFwcGVkUHJvbWlzZTsKICAgICAgICAgbGV0IGZldGNoZWRDb21wdXRlZFN0eWxlc1By
b21pc2UgPSBuZXcgV0kuV3JhcHBlZFByb21pc2U7CkBAIC0xODksNiArMTg3LDkgQEAgV0kuRE9N
Tm9kZVN0eWxlcyA9IGNsYXNzIERPTU5vZGVTdHlsZXMgZXh0ZW5kcyBXSS5PYmplY3QKICAgICAg
ICAgICAgIHBzZXVkb0VsZW1lbnRSdWxlc1BheWxvYWQgPSBwc2V1ZG9FbGVtZW50UnVsZXNQYXls
b2FkIHx8IFtdOwogICAgICAgICAgICAgaW5oZXJpdGVkUnVsZXNQYXlsb2FkID0gaW5oZXJpdGVk
UnVsZXNQYXlsb2FkIHx8IFtdOwogCisgICAgICAgICAgICB0aGlzLl9wcmV2aW91c1N0eWxlc01h
cCA9IHRoaXMuX3N0eWxlc01hcDsKKyAgICAgICAgICAgIHRoaXMuX3N0eWxlc01hcCA9IG5ldyBN
dWx0aW1hcDsKKwogICAgICAgICAgICAgdGhpcy5fbWF0Y2hlZFJ1bGVzID0gcGFyc2VSdWxlTWF0
Y2hBcnJheVBheWxvYWQobWF0Y2hlZFJ1bGVzUGF5bG9hZCwgdGhpcy5fbm9kZSk7CiAKICAgICAg
ICAgICAgIHRoaXMuX3BzZXVkb0VsZW1lbnRzLmNsZWFyKCk7CkBAIC0yNTAsNyArMjUxLDggQEAg
V0kuRE9NTm9kZVN0eWxlcyA9IGNsYXNzIERPTU5vZGVTdHlsZXMgZXh0ZW5kcyBXSS5PYmplY3QK
IAogICAgICAgICAgICAgbGV0IHNpZ25pZmljYW50Q2hhbmdlID0gZmFsc2U7CiAgICAgICAgICAg
ICBmb3IgKGxldCBba2V5LCBzdHlsZXNdIG9mIHRoaXMuX3N0eWxlc01hcC5zZXRzKCkpIHsKLSAg
ICAgICAgICAgICAgICBsZXQgcHJldmlvdXNTdHlsZXMgPSBwcmV2aW91c1N0eWxlc01hcC5nZXQo
a2V5KTsKKyAgICAgICAgICAgICAgICAvLyBDaGVjayBpZiB0aGUgc2FtZSBrZXkgZXhpc3RzIGlu
IHRoZSBwcmV2aW91cyBtYXAgYW5kIGhhcyB0aGUgc2FtZSBzdHlsZSBvYmplY3RzLgorICAgICAg
ICAgICAgICAgIGxldCBwcmV2aW91c1N0eWxlcyA9IHRoaXMuX3ByZXZpb3VzU3R5bGVzTWFwLmdl
dChrZXkpOwogICAgICAgICAgICAgICAgIGlmIChwcmV2aW91c1N0eWxlcykgewogICAgICAgICAg
ICAgICAgICAgICAvLyBTb21lIHN0eWxlcyBoYXZlIHNlbGVjdG9ycyBzdWNoIHRoYXQgdGhleSB3
aWxsIG1hdGNoIHdpdGggdGhlIERPTSBub2RlIHR3aWNlIChmb3IgZXhhbXBsZSAiOjpiZWZvcmUs
IDo6YWZ0ZXIiKS4KICAgICAgICAgICAgICAgICAgICAgLy8gSW4gdGhpcyBjYXNlIGEgc2Vjb25k
IHN0eWxlIGZvciBhIHNlY29uZCBtYXRjaGluZyBtYXkgYmUgZ2VuZXJhdGVkIGFuZCBhZGRlZCB3
aGljaCB3aWxsIGNhdXNlIHRoZSBzaGFsbG93RXF1YWwKQEAgLTI4NCw3ICsyODYsNyBAQCBXSS5E
T01Ob2RlU3R5bGVzID0gY2xhc3MgRE9NTm9kZVN0eWxlcyBleHRlbmRzIFdJLk9iamVjdAogICAg
ICAgICAgICAgfQogCiAgICAgICAgICAgICBpZiAoIXNpZ25pZmljYW50Q2hhbmdlKSB7Ci0gICAg
ICAgICAgICAgICAgZm9yIChsZXQgW2tleSwgcHJldmlvdXNTdHlsZXNdIG9mIHByZXZpb3VzU3R5
bGVzTWFwLnNldHMoKSkgeworICAgICAgICAgICAgICAgIGZvciAobGV0IFtrZXksIHByZXZpb3Vz
U3R5bGVzXSBvZiB0aGlzLl9wcmV2aW91c1N0eWxlc01hcC5zZXRzKCkpIHsKICAgICAgICAgICAg
ICAgICAgICAgLy8gQ2hlY2sgaWYgdGhlIHNhbWUga2V5IGV4aXN0cyBpbiBjdXJyZW50IG1hcC4g
SWYgaXQgZG9lcyBleGlzdCBpdCB3YXMgYWxyZWFkeSBjaGVja2VkIGZvciBlcXVhbGl0eSBhYm92
ZS4KICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuX3N0eWxlc01hcC5oYXMoa2V5KSkKICAg
ICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwpAQCAtMzAyLDYgKzMwNCw3IEBAIFdJLkRP
TU5vZGVTdHlsZXMgPSBjbGFzcyBET01Ob2RlU3R5bGVzIGV4dGVuZHMgV0kuT2JqZWN0CiAgICAg
ICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogCisgICAgICAgICAgICB0aGlzLl9wcmV2aW91
c1N0eWxlc01hcCA9IG51bGw7CiAgICAgICAgICAgICB0aGlzLl9pbmNsdWRlVXNlckFnZW50UnVs
ZXNPbk5leHRSZWZyZXNoID0gZmFsc2U7CiAKICAgICAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVu
dFRvTGlzdGVuZXJzKFdJLkRPTU5vZGVTdHlsZXMuRXZlbnQuUmVmcmVzaGVkLCB7c2lnbmlmaWNh
bnRDaGFuZ2V9KTsKQEAgLTU2MSw3ICs1NjQsOCBAQCBXSS5ET01Ob2RlU3R5bGVzID0gY2xhc3Mg
RE9NTm9kZVN0eWxlcyBleHRlbmRzIFdJLk9iamVjdAogICAgICAgICBjb25zb2xlLmFzc2VydCht
YXRjaGVzTm9kZSB8fCBzdHlsZSk7CiAKICAgICAgICAgaWYgKG1hdGNoZXNOb2RlKSB7Ci0gICAg
ICAgICAgICBsZXQgZXhpc3RpbmdTdHlsZXMgPSB0aGlzLl9zdHlsZXNNYXAuZ2V0KG1hcEtleSk7
CisgICAgICAgICAgICBjb25zb2xlLmFzc2VydCh0aGlzLl9wcmV2aW91c1N0eWxlc01hcCk7Cisg
ICAgICAgICAgICBsZXQgZXhpc3RpbmdTdHlsZXMgPSB0aGlzLl9wcmV2aW91c1N0eWxlc01hcC5n
ZXQobWFwS2V5KTsKICAgICAgICAgICAgIGlmIChleGlzdGluZ1N0eWxlcyAmJiAhc3R5bGUpIHsK
ICAgICAgICAgICAgICAgICBmb3IgKGxldCBleGlzdGluZ1N0eWxlIG9mIGV4aXN0aW5nU3R5bGVz
KSB7CiAgICAgICAgICAgICAgICAgICAgIGlmIChleGlzdGluZ1N0eWxlLm5vZGUgPT09IG5vZGUg
JiYgZXhpc3RpbmdTdHlsZS5pbmhlcml0ZWQgPT09IGluaGVyaXRlZCkgewpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU3ByZWFkc2hlZXRSdWxl
c1N0eWxlRGV0YWlsc1BhbmVsLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvVmlld3MvU3ByZWFkc2hlZXRSdWxlc1N0eWxlRGV0YWlsc1BhbmVsLmpzCmluZGV4IGNiMmJi
MzUwNmE3Yy4uZTA4NzYwZDliYzM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9WaWV3cy9TcHJlYWRzaGVldFJ1bGVzU3R5bGVEZXRhaWxzUGFuZWwuanMK
KysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU3ByZWFkc2hl
ZXRSdWxlc1N0eWxlRGV0YWlsc1BhbmVsLmpzCkBAIC00Miw2ICs0Miw4IEBAIFdJLlNwcmVhZHNo
ZWV0UnVsZXNTdHlsZURldGFpbHNQYW5lbCA9IGNsYXNzIFNwcmVhZHNoZWV0UnVsZXNTdHlsZURl
dGFpbHNQYW5lbCBlCiAgICAgICAgIHRoaXMuX3Byb3BlcnR5VG9TZWxlY3RBbmRIaWdobGlnaHQg
PSBudWxsOwogICAgICAgICB0aGlzLl9maWx0ZXJUZXh0ID0gbnVsbDsKICAgICAgICAgdGhpcy5f
c2hvdWxkUmVmcmVzaFN1YnZpZXdzID0gZmFsc2U7CisgICAgICAgIHRoaXMuX3JlbmRlcmVkU3R5
bGVJZHMgPSBudWxsOworICAgICAgICB0aGlzLl9zZWxlY3RlZE5vZGVJZCA9IG51bGw7CiAKICAg
ICAgICAgdGhpcy5fZW1wdHlGaWx0ZXJSZXN1bHRzRWxlbWVudCA9IFdJLmNyZWF0ZU1lc3NhZ2VU
ZXh0VmlldyhXSS5VSVN0cmluZygiTm8gUmVzdWx0cyBGb3VuZCIpKTsKICAgICB9CkBAIC0yMTgs
MjYgKzIyMCwxOSBAQCBXSS5TcHJlYWRzaGVldFJ1bGVzU3R5bGVEZXRhaWxzUGFuZWwgPSBjbGFz
cyBTcHJlYWRzaGVldFJ1bGVzU3R5bGVEZXRhaWxzUGFuZWwgZQogICAgICAgICAgICAgcmV0dXJu
OwogCiAgICAgICAgIHRoaXMuX3Nob3VsZFJlZnJlc2hTdWJ2aWV3cyA9IGZhbHNlOworICAgICAg
ICBsZXQgdW5pcXVlT3JkZXJlZFN0eWxlcyA9IHRoaXMubm9kZVN0eWxlcy51bmlxdWVPcmRlcmVk
U3R5bGVzOwogCi0gICAgICAgIGxldCBvbGRTZWN0aW9ucyA9IHRoaXMuX3NlY3Rpb25zLnNsaWNl
KCk7Ci0gICAgICAgIGxldCBwcmVzZXJ2ZWRTZWN0aW9ucyA9IG9sZFNlY3Rpb25zLmZpbHRlcigo
c2VjdGlvbikgPT4gewotICAgICAgICAgICAgaWYgKHNlY3Rpb25bU3ByZWFkc2hlZXRSdWxlc1N0
eWxlRGV0YWlsc1BhbmVsLlNlY3Rpb25TaG93aW5nRm9yTm9kZVN5bWJvbF0gIT09IHRoaXMubm9k
ZVN0eWxlcy5ub2RlKSB7Ci0gICAgICAgICAgICAgICAgc2VjdGlvbltTcHJlYWRzaGVldFJ1bGVz
U3R5bGVEZXRhaWxzUGFuZWwuU2VjdGlvblNob3dpbmdGb3JOb2RlU3ltYm9sXSA9IG51bGw7Ci0g
ICAgICAgICAgICAgICAgc2VjdGlvbltTcHJlYWRzaGVldFJ1bGVzU3R5bGVEZXRhaWxzUGFuZWwu
U2VjdGlvbkluZGV4U3ltYm9sXSA9IC0xOworICAgICAgICBpZiAodGhpcy5fcmVuZGVyZWRTdHls
ZUlkcyAmJiB0aGlzLl9zZWxlY3RlZE5vZGVJZCAmJiB0aGlzLl9zZWxlY3RlZE5vZGVJZCA9PT0g
dGhpcy5ub2RlU3R5bGVzLm5vZGUuaWQpIHsKKyAgICAgICAgICAgIGxldCBjdXJyZW50U3R5bGVJ
ZHMgPSB0aGlzLl9nZXRTdHlsZUlkcyh1bmlxdWVPcmRlcmVkU3R5bGVzKTsKKyAgICAgICAgICAg
IGlmIChBcnJheS5zaGFsbG93RXF1YWwoY3VycmVudFN0eWxlSWRzLCB0aGlzLl9yZW5kZXJlZFN0
eWxlSWRzKSkgeworICAgICAgICAgICAgICAgIC8vIERvbid0IHJlLWxheW91dCBhbnl0aGluZyB3
aGVuIGVkaXRpbmcgYSBzZWxlY3Rvci4KKyAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAg
ICAgICB9Ci0gICAgICAgICAgICByZXR1cm4gc2VjdGlvbltTcHJlYWRzaGVldFJ1bGVzU3R5bGVE
ZXRhaWxzUGFuZWwuU2VjdGlvblNob3dpbmdGb3JOb2RlU3ltYm9sXTsKLSAgICAgICAgfSk7Cisg
ICAgICAgIH0KIAotICAgICAgICBpZiAocHJlc2VydmVkU2VjdGlvbnMubGVuZ3RoKSB7Ci0gICAg
ICAgICAgICBmb3IgKGxldCBzZWN0aW9uIG9mIG9sZFNlY3Rpb25zKSB7Ci0gICAgICAgICAgICAg
ICAgaWYgKCFwcmVzZXJ2ZWRTZWN0aW9ucy5pbmNsdWRlcyhzZWN0aW9uKSkKLSAgICAgICAgICAg
ICAgICAgICAgdGhpcy5yZW1vdmVTdWJ2aWV3KHNlY3Rpb24pOwotICAgICAgICAgICAgfQotICAg
ICAgICAgICAgZm9yIChsZXQgaGVhZGVyIG9mIHRoaXMuX2hlYWRlck1hcC52YWx1ZXMoKSkKLSAg
ICAgICAgICAgICAgICBoZWFkZXIucmVtb3ZlKCk7Ci0gICAgICAgIH0gZWxzZQotICAgICAgICAg
ICAgdGhpcy5yZW1vdmVBbGxTdWJ2aWV3cygpOworICAgICAgICB0aGlzLnJlbW92ZUFsbFN1YnZp
ZXdzKCk7CiAKKyAgICAgICAgdGhpcy5fc2VsZWN0ZWROb2RlSWQgPSB0aGlzLm5vZGVTdHlsZXMu
bm9kZS5pZDsKICAgICAgICAgbGV0IHByZXZpb3VzU3R5bGUgPSBudWxsOwogICAgICAgICBsZXQg
Y3VycmVudEhlYWRlciA9IG51bGw7CiAgICAgICAgIHRoaXMuX2hlYWRlck1hcC5jbGVhcigpOwpA
QCAtMjYzLDEzICsyNTgsNyBAQCBXSS5TcHJlYWRzaGVldFJ1bGVzU3R5bGVEZXRhaWxzUGFuZWwg
PSBjbGFzcyBTcHJlYWRzaGVldFJ1bGVzU3R5bGVEZXRhaWxzUGFuZWwgZQogICAgICAgICAgICAg
aWYgKHNlY3Rpb24uc3R5bGUuaW5oZXJpdGVkICYmICghcHJldmlvdXNTdHlsZSB8fCBwcmV2aW91
c1N0eWxlLm5vZGUgIT09IHNlY3Rpb24uc3R5bGUubm9kZSkpCiAgICAgICAgICAgICAgICAgYWRk
SGVhZGVyKFdJLlVJU3RyaW5nKCJJbmhlcml0ZWQgRnJvbSIsICJBIHNlY3Rpb24gb2YgQ1NTIHJ1
bGVzIG1hdGNoaW5nIGFuIGFuY2VzdG9yIERPTSBub2RlIiksIHNlY3Rpb24uc3R5bGUubm9kZSk7
CiAKLSAgICAgICAgICAgIGlmICghc2VjdGlvbi5pc0Rlc2NlbmRhbnRPZih0aGlzKSkgewotICAg
ICAgICAgICAgICAgIGxldCByZWZlcmVuY2VWaWV3ID0gdGhpcy5zdWJ2aWV3c1t0aGlzLl9zZWN0
aW9ucy5sZW5ndGhdOwotICAgICAgICAgICAgICAgIGlmICghcmVmZXJlbmNlVmlldyB8fCByZWZl
cmVuY2VWaWV3W1NwcmVhZHNoZWV0UnVsZXNTdHlsZURldGFpbHNQYW5lbC5TZWN0aW9uSW5kZXhT
eW1ib2xdID09PSB0aGlzLl9zZWN0aW9ucy5sZW5ndGgpCi0gICAgICAgICAgICAgICAgICAgIHRo
aXMuYWRkU3VidmlldyhzZWN0aW9uKTsKLSAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAg
ICAgICAgICAgIHRoaXMuaW5zZXJ0U3Vidmlld0JlZm9yZShzZWN0aW9uLCByZWZlcmVuY2VWaWV3
KTsKLSAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHRoaXMuYWRkU3VidmlldyhzZWN0aW9uKTsK
IAogICAgICAgICAgICAgdGhpcy5fc2VjdGlvbnMucHVzaChzZWN0aW9uKTsKICAgICAgICAgICAg
IHNlY3Rpb24ubmVlZHNMYXlvdXQoKTsKQEAgLTI5MywxMCArMjgyLDYgQEAgV0kuU3ByZWFkc2hl
ZXRSdWxlc1N0eWxlRGV0YWlsc1BhbmVsID0gY2xhc3MgU3ByZWFkc2hlZXRSdWxlc1N0eWxlRGV0
YWlsc1BhbmVsIGUKICAgICAgICAgICAgICAgICBzZWN0aW9uLnN0YXJ0RWRpdGluZ1J1bGVTZWxl
Y3RvcigpOwogCiAgICAgICAgICAgICBhZGRTZWN0aW9uKHNlY3Rpb24pOwotCi0gICAgICAgICAg
ICBsZXQgcHJlc2VydmVkU2VjdGlvbiA9IHByZXNlcnZlZFNlY3Rpb25zLmZpbmQoKHNlY3Rpb25U
b1ByZXNlcnZlKSA9PiBzZWN0aW9uVG9QcmVzZXJ2ZVtTcHJlYWRzaGVldFJ1bGVzU3R5bGVEZXRh
aWxzUGFuZWwuU2VjdGlvbkluZGV4U3ltYm9sXSA9PT0gdGhpcy5fc2VjdGlvbnMubGVuZ3RoIC0g
MSk7Ci0gICAgICAgICAgICBpZiAocHJlc2VydmVkU2VjdGlvbikKLSAgICAgICAgICAgICAgICBh
ZGRTZWN0aW9uKHByZXNlcnZlZFNlY3Rpb24pOwogICAgICAgICB9OwogCiAgICAgICAgIGxldCBh
ZGRlZFBzZXVkb1N0eWxlcyA9IGZhbHNlOwpAQCAtMzMxLDcgKzMxNiw3IEBAIFdJLlNwcmVhZHNo
ZWV0UnVsZXNTdHlsZURldGFpbHNQYW5lbCA9IGNsYXNzIFNwcmVhZHNoZWV0UnVsZXNTdHlsZURl
dGFpbHNQYW5lbCBlCiAgICAgICAgICAgICBhZGRlZFBzZXVkb1N0eWxlcyA9IHRydWU7CiAgICAg
ICAgIH07CiAKLSAgICAgICAgZm9yIChsZXQgc3R5bGUgb2YgdGhpcy5ub2RlU3R5bGVzLnVuaXF1
ZU9yZGVyZWRTdHlsZXMpIHsKKyAgICAgICAgZm9yIChsZXQgc3R5bGUgb2YgdW5pcXVlT3JkZXJl
ZFN0eWxlcykgewogICAgICAgICAgICAgaWYgKHN0eWxlLmluaGVyaXRlZCkKICAgICAgICAgICAg
ICAgICBhZGRQc2V1ZG9TdHlsZXMoKTsKICAgICAgICAgICAgIGNyZWF0ZVNlY3Rpb24oc3R5bGUp
OwpAQCAtMzM5LDYgKzMyNCw3IEBAIFdJLlNwcmVhZHNoZWV0UnVsZXNTdHlsZURldGFpbHNQYW5l
bCA9IGNsYXNzIFNwcmVhZHNoZWV0UnVsZXNTdHlsZURldGFpbHNQYW5lbCBlCiAKICAgICAgICAg
YWRkUHNldWRvU3R5bGVzKCk7CiAKKyAgICAgICAgdGhpcy5fcmVuZGVyZWRTdHlsZUlkcyA9IHRo
aXMuX2dldFN0eWxlSWRzKHVuaXF1ZU9yZGVyZWRTdHlsZXMpOwogICAgICAgICB0aGlzLl9uZXdS
dWxlU2VsZWN0b3IgPSBudWxsOwogCiAgICAgICAgIHRoaXMuZWxlbWVudC5hcHBlbmQodGhpcy5f
ZW1wdHlGaWx0ZXJSZXN1bHRzRWxlbWVudCk7CkBAIC0zNTYsNiArMzQyLDE0IEBAIFdJLlNwcmVh
ZHNoZWV0UnVsZXNTdHlsZURldGFpbHNQYW5lbCA9IGNsYXNzIFNwcmVhZHNoZWV0UnVsZXNTdHls
ZURldGFpbHNQYW5lbCBlCiAKICAgICAvLyBQcml2YXRlCiAKKyAgICBfZ2V0U3R5bGVJZHMoc3R5
bGVzKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHN0eWxlcy5maWx0ZXIoKHN0eWxlKSA9PiB7Cisg
ICAgICAgICAgICAvLyBGSVhNRTogPGh0dHBzOi8vd2Via2l0Lm9yZy9iLzExMDA1NT4gV2ViIElu
c3BlY3RvcjogVXNlciBBZ2VudCBzdHlsZSBzdHlsZXNoZWV0IGlkZW50aWZpZXIga2VlcHMgaW5j
cmVtZW50aW5nCisgICAgICAgICAgICByZXR1cm4gIXN0eWxlLm93bmVyUnVsZSB8fCBzdHlsZS5v
d25lclJ1bGUudHlwZSAhPT0gV0kuQ1NTU3R5bGVTaGVldC5UeXBlLlVzZXJBZ2VudDsKKyAgICAg
ICAgfSkubWFwKChzdHlsZSkgPT4gc3R5bGUuc3RyaW5nSWQpOworICAgIH0KKwogICAgIF9oYW5k
bGVTZWN0aW9uRmlsdGVyQXBwbGllZChldmVudCkKICAgICB7CiAgICAgICAgIGlmICghZXZlbnQu
ZGF0YS5tYXRjaGVzKQpAQCAtMzgwLDEyICszNzQsOSBAQCBXSS5TcHJlYWRzaGVldFJ1bGVzU3R5
bGVEZXRhaWxzUGFuZWwgPSBjbGFzcyBTcHJlYWRzaGVldFJ1bGVzU3R5bGVEZXRhaWxzUGFuZWwg
ZQogICAgIF9oYW5kbGVTZWN0aW9uU2VsZWN0b3JXaWxsQ2hhbmdlKGV2ZW50KQogICAgIHsKICAg
ICAgICAgbGV0IHNlY3Rpb24gPSBldmVudC50YXJnZXQ7Ci0gICAgICAgIHNlY3Rpb25bU3ByZWFk
c2hlZXRSdWxlc1N0eWxlRGV0YWlsc1BhbmVsLlNlY3Rpb25TaG93aW5nRm9yTm9kZVN5bWJvbF0g
PSB0aGlzLm5vZGVTdHlsZXMubm9kZTsKLSAgICAgICAgc2VjdGlvbltTcHJlYWRzaGVldFJ1bGVz
U3R5bGVEZXRhaWxzUGFuZWwuU2VjdGlvbkluZGV4U3ltYm9sXSA9IHRoaXMuX3NlY3Rpb25zLmlu
ZGV4T2Yoc2VjdGlvbik7Ci0gICAgICAgIGNvbnNvbGUuYXNzZXJ0KHNlY3Rpb25bU3ByZWFkc2hl
ZXRSdWxlc1N0eWxlRGV0YWlsc1BhbmVsLlNlY3Rpb25JbmRleFN5bWJvbF0gPj0gMCk7CisgICAg
ICAgIGxldCBmb3VuZCA9IHRoaXMuX3JlbmRlcmVkU3R5bGVJZHMucmVtb3ZlKHNlY3Rpb24uc3R5
bGUuc3RyaW5nSWQpOworICAgICAgICBjb25zb2xlLmFzc2VydChmb3VuZCwgIkNvdWxkIG5vdCBm
aW5kIHN0eWxlIHJ1bGUgb2YgZWRpdGVkIHNlbGVjdG9yLiIpOwogICAgIH0KIH07CiAKIFdJLlNw
cmVhZHNoZWV0UnVsZXNTdHlsZURldGFpbHNQYW5lbC5TdHlsZVNlY3Rpb25TeW1ib2wgPSBTeW1i
b2woInN0eWxlLXNlY3Rpb24iKTsKLVdJLlNwcmVhZHNoZWV0UnVsZXNTdHlsZURldGFpbHNQYW5l
bC5TZWN0aW9uU2hvd2luZ0Zvck5vZGVTeW1ib2wgPSBTeW1ib2woInN0eWxlLXNob3dpbmctZm9y
LW5vZGUiKTsKLVdJLlNwcmVhZHNoZWV0UnVsZXNTdHlsZURldGFpbHNQYW5lbC5TZWN0aW9uSW5k
ZXhTeW1ib2wgPSBTeW1ib2woInN0eWxlLWluZGV4Iik7Cg==
</data>
<flag name="review"
          id="422982"
          type_id="1"
          status="-"
          setter="nvasilyev"
    />
    <flag name="commit-queue"
          id="422983"
          type_id="3"
          status="-"
          setter="nvasilyev"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>407694</attachid>
            <date>2020-09-01 10:28:40 -0700</date>
            <delta_ts>2020-09-01 15:59:59 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>10076</size>
            <attacher name="Nikita Vasilyev">nvasilyev</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvQ2hhbmdlTG9nCmluZGV4IDgzZmNhMTcwMDA0OS4uMjRhMGNmYzcyODlhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMCBAQAorMjAyMC0wOC0zMSAgTmlr
aXRhIFZhc2lseWV2ICA8bnZhc2lseWV2QGFwcGxlLmNvbT4KKworICAgICAgICBSRUdSRVNTSU9O
KHIyNDMyNjQpOiBXZWIgSW5zcGVjdG9yOiBTdHlsZSBwYW5lIGRvZXNuJ3QgdXBkYXRlIGFmdGVy
IHRvZ2dsaW5nIENTUyBjbGFzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9MjAyMDY1CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS81NTE0OTE0MT4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFVzZXJJbnRl
cmZhY2UvTW9kZWxzL0RPTU5vZGVTdHlsZXMuanM6CisgICAgICAgIChXSS5ET01Ob2RlU3R5bGVz
LnByb3RvdHlwZS5yZWZyZXNoLmZldGNoZWRNYXRjaGVkU3R5bGVzKToKKyAgICAgICAgKFdJLkRP
TU5vZGVTdHlsZXMucHJvdG90eXBlLnJlZnJlc2guZmV0Y2hlZENvbXB1dGVkU3R5bGUpOgorICAg
ICAgICAoV0kuRE9NTm9kZVN0eWxlcy5wcm90b3R5cGUucmVmcmVzaCk6CisgICAgICAgIChXSS5E
T01Ob2RlU3R5bGVzLnByb3RvdHlwZS5fcGFyc2VTdHlsZURlY2xhcmF0aW9uUGF5bG9hZCk6Cisg
ICAgICAgIHIyNDMyNjQgaW50cm9kdWNlZCB0aGlzIGJ1ZyBieSBuZXZlciBjbGVhcmluZyBgX3N0
eWxlTWFwYCBtYWtpbmcgaXQgaW1wb3NzaWJsZSB0byBkaWZmIG9sZAorICAgICAgICBhbmQgbmV3
IHN0eWxlIGRlY2xhcmF0aW9ucy4gQ3JlYXRlIGFuZCBjbGVhciBgX3N0eWxlTWFwYCBhdCB0aGUg
c2FtZSBwbGFjZSBhcyBpdCB3YXMgYmVmb3JlIHIyNDMyNjQuCisKKyAgICAgICAgKiBVc2VySW50
ZXJmYWNlL1ZpZXdzL1NwcmVhZHNoZWV0UnVsZXNTdHlsZURldGFpbHNQYW5lbC5qczoKKyAgICAg
ICAgKFdJLlNwcmVhZHNoZWV0UnVsZXNTdHlsZURldGFpbHNQYW5lbCk6CisgICAgICAgIChXSS5T
cHJlYWRzaGVldFJ1bGVzU3R5bGVEZXRhaWxzUGFuZWwucHJvdG90eXBlLmxheW91dCk6CisgICAg
ICAgIExheW91dCBub3cgYWx3YXlzIHJlLWxheW91dHMgZXZlcnl0aGluZy4gUnVsZXMgd2l0aCBt
b2RpZmllZCBzZWxlY3RvcnMgYXJlIG5vdyBwcmVzZXJ2ZWQgYnkKKyAgICAgICAgZXhpdGluZyBs
YXlvdXQgZWFybHkuCisKKyAgICAgICAgKFdJLlNwcmVhZHNoZWV0UnVsZXNTdHlsZURldGFpbHNQ
YW5lbC5wcm90b3R5cGUuX2hhbmRsZVNlY3Rpb25TZWxlY3RvcldpbGxDaGFuZ2UpOgorICAgICAg
ICBSZW1vdmUgbG9naWMgdGhhdCB0cmllZCB0byBwcmVzZXJ2ZSBpbmRleGVzIG9mIENTUyBydWxl
cyB3aXRoIG1vZGlmaWVkIHNlbGVjdG9ycyB0aGF0CisgICAgICAgIGRvbid0IG1hdGNoIChTZWN0
aW9uSW5kZXhTeW1ib2wgYW5kIGV2ZXJ5dGhpbmcgcmVsYXRlZCB0byBpdCkuIEluc3RlYWQsIGF2
b2lkIHJlLWxheW91dCBhZnRlcgorICAgICAgICBlZGl0aW5nIGEgc2VsZWN0b3IuCisKIDIwMjAt
MDgtMjggIERldmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29tPgogCiAgICAgICAgIFdlYiBJ
bnNwZWN0b3I6IEF1ZGl0OiBzaG91bGQgYmUgYWJsZSB0byBjcmVhdGUvZWRpdCBpbXBvcnRlZCBh
dWRpdHMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01v
ZGVscy9ET01Ob2RlU3R5bGVzLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvTW9kZWxzL0RPTU5vZGVTdHlsZXMuanMKaW5kZXggYmZmYjQxMzA2NTI0Li42NzU3MTc2Mjgw
YjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVs
cy9ET01Ob2RlU3R5bGVzLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL01vZGVscy9ET01Ob2RlU3R5bGVzLmpzCkBAIC0xNTAsOCArMTUwLDYgQEAgV0kuRE9NTm9k
ZVN0eWxlcyA9IGNsYXNzIERPTU5vZGVTdHlsZXMgZXh0ZW5kcyBXSS5PYmplY3QKIAogICAgICAg
ICB0aGlzLl9uZWVkc1JlZnJlc2ggPSBmYWxzZTsKIAotICAgICAgICBsZXQgcHJldmlvdXNTdHls
ZXNNYXAgPSB0aGlzLl9zdHlsZXNNYXAuY29weSgpOwotCiAgICAgICAgIGxldCBmZXRjaGVkTWF0
Y2hlZFN0eWxlc1Byb21pc2UgPSBuZXcgV0kuV3JhcHBlZFByb21pc2U7CiAgICAgICAgIGxldCBm
ZXRjaGVkSW5saW5lU3R5bGVzUHJvbWlzZSA9IG5ldyBXSS5XcmFwcGVkUHJvbWlzZTsKICAgICAg
ICAgbGV0IGZldGNoZWRDb21wdXRlZFN0eWxlc1Byb21pc2UgPSBuZXcgV0kuV3JhcHBlZFByb21p
c2U7CkBAIC0xODksNiArMTg3LDkgQEAgV0kuRE9NTm9kZVN0eWxlcyA9IGNsYXNzIERPTU5vZGVT
dHlsZXMgZXh0ZW5kcyBXSS5PYmplY3QKICAgICAgICAgICAgIHBzZXVkb0VsZW1lbnRSdWxlc1Bh
eWxvYWQgPSBwc2V1ZG9FbGVtZW50UnVsZXNQYXlsb2FkIHx8IFtdOwogICAgICAgICAgICAgaW5o
ZXJpdGVkUnVsZXNQYXlsb2FkID0gaW5oZXJpdGVkUnVsZXNQYXlsb2FkIHx8IFtdOwogCisgICAg
ICAgICAgICB0aGlzLl9wcmV2aW91c1N0eWxlc01hcCA9IHRoaXMuX3N0eWxlc01hcDsKKyAgICAg
ICAgICAgIHRoaXMuX3N0eWxlc01hcCA9IG5ldyBNdWx0aW1hcDsKKwogICAgICAgICAgICAgdGhp
cy5fbWF0Y2hlZFJ1bGVzID0gcGFyc2VSdWxlTWF0Y2hBcnJheVBheWxvYWQobWF0Y2hlZFJ1bGVz
UGF5bG9hZCwgdGhpcy5fbm9kZSk7CiAKICAgICAgICAgICAgIHRoaXMuX3BzZXVkb0VsZW1lbnRz
LmNsZWFyKCk7CkBAIC0yNTAsNyArMjUxLDggQEAgV0kuRE9NTm9kZVN0eWxlcyA9IGNsYXNzIERP
TU5vZGVTdHlsZXMgZXh0ZW5kcyBXSS5PYmplY3QKIAogICAgICAgICAgICAgbGV0IHNpZ25pZmlj
YW50Q2hhbmdlID0gZmFsc2U7CiAgICAgICAgICAgICBmb3IgKGxldCBba2V5LCBzdHlsZXNdIG9m
IHRoaXMuX3N0eWxlc01hcC5zZXRzKCkpIHsKLSAgICAgICAgICAgICAgICBsZXQgcHJldmlvdXNT
dHlsZXMgPSBwcmV2aW91c1N0eWxlc01hcC5nZXQoa2V5KTsKKyAgICAgICAgICAgICAgICAvLyBD
aGVjayBpZiB0aGUgc2FtZSBrZXkgZXhpc3RzIGluIHRoZSBwcmV2aW91cyBtYXAgYW5kIGhhcyB0
aGUgc2FtZSBzdHlsZSBvYmplY3RzLgorICAgICAgICAgICAgICAgIGxldCBwcmV2aW91c1N0eWxl
cyA9IHRoaXMuX3ByZXZpb3VzU3R5bGVzTWFwLmdldChrZXkpOwogICAgICAgICAgICAgICAgIGlm
IChwcmV2aW91c1N0eWxlcykgewogICAgICAgICAgICAgICAgICAgICAvLyBTb21lIHN0eWxlcyBo
YXZlIHNlbGVjdG9ycyBzdWNoIHRoYXQgdGhleSB3aWxsIG1hdGNoIHdpdGggdGhlIERPTSBub2Rl
IHR3aWNlIChmb3IgZXhhbXBsZSAiOjpiZWZvcmUsIDo6YWZ0ZXIiKS4KICAgICAgICAgICAgICAg
ICAgICAgLy8gSW4gdGhpcyBjYXNlIGEgc2Vjb25kIHN0eWxlIGZvciBhIHNlY29uZCBtYXRjaGlu
ZyBtYXkgYmUgZ2VuZXJhdGVkIGFuZCBhZGRlZCB3aGljaCB3aWxsIGNhdXNlIHRoZSBzaGFsbG93
RXF1YWwKQEAgLTI4NCw3ICsyODYsNyBAQCBXSS5ET01Ob2RlU3R5bGVzID0gY2xhc3MgRE9NTm9k
ZVN0eWxlcyBleHRlbmRzIFdJLk9iamVjdAogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBp
ZiAoIXNpZ25pZmljYW50Q2hhbmdlKSB7Ci0gICAgICAgICAgICAgICAgZm9yIChsZXQgW2tleSwg
cHJldmlvdXNTdHlsZXNdIG9mIHByZXZpb3VzU3R5bGVzTWFwLnNldHMoKSkgeworICAgICAgICAg
ICAgICAgIGZvciAobGV0IFtrZXksIHByZXZpb3VzU3R5bGVzXSBvZiB0aGlzLl9wcmV2aW91c1N0
eWxlc01hcC5zZXRzKCkpIHsKICAgICAgICAgICAgICAgICAgICAgLy8gQ2hlY2sgaWYgdGhlIHNh
bWUga2V5IGV4aXN0cyBpbiBjdXJyZW50IG1hcC4gSWYgaXQgZG9lcyBleGlzdCBpdCB3YXMgYWxy
ZWFkeSBjaGVja2VkIGZvciBlcXVhbGl0eSBhYm92ZS4KICAgICAgICAgICAgICAgICAgICAgaWYg
KHRoaXMuX3N0eWxlc01hcC5oYXMoa2V5KSkKICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRp
bnVlOwpAQCAtMzAyLDYgKzMwNCw3IEBAIFdJLkRPTU5vZGVTdHlsZXMgPSBjbGFzcyBET01Ob2Rl
U3R5bGVzIGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAg
fQogCisgICAgICAgICAgICB0aGlzLl9wcmV2aW91c1N0eWxlc01hcCA9IG51bGw7CiAgICAgICAg
ICAgICB0aGlzLl9pbmNsdWRlVXNlckFnZW50UnVsZXNPbk5leHRSZWZyZXNoID0gZmFsc2U7CiAK
ICAgICAgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdJLkRPTU5vZGVTdHls
ZXMuRXZlbnQuUmVmcmVzaGVkLCB7c2lnbmlmaWNhbnRDaGFuZ2V9KTsKQEAgLTU2MSw3ICs1NjQs
OCBAQCBXSS5ET01Ob2RlU3R5bGVzID0gY2xhc3MgRE9NTm9kZVN0eWxlcyBleHRlbmRzIFdJLk9i
amVjdAogICAgICAgICBjb25zb2xlLmFzc2VydChtYXRjaGVzTm9kZSB8fCBzdHlsZSk7CiAKICAg
ICAgICAgaWYgKG1hdGNoZXNOb2RlKSB7Ci0gICAgICAgICAgICBsZXQgZXhpc3RpbmdTdHlsZXMg
PSB0aGlzLl9zdHlsZXNNYXAuZ2V0KG1hcEtleSk7CisgICAgICAgICAgICBjb25zb2xlLmFzc2Vy
dCh0aGlzLl9wcmV2aW91c1N0eWxlc01hcCk7CisgICAgICAgICAgICBsZXQgZXhpc3RpbmdTdHls
ZXMgPSB0aGlzLl9wcmV2aW91c1N0eWxlc01hcC5nZXQobWFwS2V5KTsKICAgICAgICAgICAgIGlm
IChleGlzdGluZ1N0eWxlcyAmJiAhc3R5bGUpIHsKICAgICAgICAgICAgICAgICBmb3IgKGxldCBl
eGlzdGluZ1N0eWxlIG9mIGV4aXN0aW5nU3R5bGVzKSB7CiAgICAgICAgICAgICAgICAgICAgIGlm
IChleGlzdGluZ1N0eWxlLm5vZGUgPT09IG5vZGUgJiYgZXhpc3RpbmdTdHlsZS5pbmhlcml0ZWQg
PT09IGluaGVyaXRlZCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJ
bnRlcmZhY2UvVmlld3MvU3ByZWFkc2hlZXRSdWxlc1N0eWxlRGV0YWlsc1BhbmVsLmpzIGIvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU3ByZWFkc2hlZXRSdWxlc1N0
eWxlRGV0YWlsc1BhbmVsLmpzCmluZGV4IGNiMmJiMzUwNmE3Yy4uZmM1Yjc1ODA4NjY4IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9TcHJlYWRz
aGVldFJ1bGVzU3R5bGVEZXRhaWxzUGFuZWwuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvVmlld3MvU3ByZWFkc2hlZXRSdWxlc1N0eWxlRGV0YWlsc1BhbmVsLmpz
CkBAIC00Miw2ICs0Miw5IEBAIFdJLlNwcmVhZHNoZWV0UnVsZXNTdHlsZURldGFpbHNQYW5lbCA9
IGNsYXNzIFNwcmVhZHNoZWV0UnVsZXNTdHlsZURldGFpbHNQYW5lbCBlCiAgICAgICAgIHRoaXMu
X3Byb3BlcnR5VG9TZWxlY3RBbmRIaWdobGlnaHQgPSBudWxsOwogICAgICAgICB0aGlzLl9maWx0
ZXJUZXh0ID0gbnVsbDsKICAgICAgICAgdGhpcy5fc2hvdWxkUmVmcmVzaFN1YnZpZXdzID0gZmFs
c2U7CisgICAgICAgIHRoaXMuX3JlbmRlcmVkU3R5bGVJZHMgPSBudWxsOworICAgICAgICB0aGlz
Ll9zZWxlY3RlZE5vZGVJZCA9IG51bGw7CisgICAgICAgIHRoaXMuX2lnbm9yZUxheW91dEFmdGVy
U2VsZWN0b3JDaGFuZ2UgPSBmYWxzZTsKIAogICAgICAgICB0aGlzLl9lbXB0eUZpbHRlclJlc3Vs
dHNFbGVtZW50ID0gV0kuY3JlYXRlTWVzc2FnZVRleHRWaWV3KFdJLlVJU3RyaW5nKCJObyBSZXN1
bHRzIEZvdW5kIikpOwogICAgIH0KQEAgLTIxOCwyNiArMjIxLDE3IEBAIFdJLlNwcmVhZHNoZWV0
UnVsZXNTdHlsZURldGFpbHNQYW5lbCA9IGNsYXNzIFNwcmVhZHNoZWV0UnVsZXNTdHlsZURldGFp
bHNQYW5lbCBlCiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgdGhpcy5fc2hvdWxkUmVm
cmVzaFN1YnZpZXdzID0gZmFsc2U7CisgICAgICAgIGxldCB1bmlxdWVPcmRlcmVkU3R5bGVzID0g
dGhpcy5ub2RlU3R5bGVzLnVuaXF1ZU9yZGVyZWRTdHlsZXM7CiAKLSAgICAgICAgbGV0IG9sZFNl
Y3Rpb25zID0gdGhpcy5fc2VjdGlvbnMuc2xpY2UoKTsKLSAgICAgICAgbGV0IHByZXNlcnZlZFNl
Y3Rpb25zID0gb2xkU2VjdGlvbnMuZmlsdGVyKChzZWN0aW9uKSA9PiB7Ci0gICAgICAgICAgICBp
ZiAoc2VjdGlvbltTcHJlYWRzaGVldFJ1bGVzU3R5bGVEZXRhaWxzUGFuZWwuU2VjdGlvblNob3dp
bmdGb3JOb2RlU3ltYm9sXSAhPT0gdGhpcy5ub2RlU3R5bGVzLm5vZGUpIHsKLSAgICAgICAgICAg
ICAgICBzZWN0aW9uW1NwcmVhZHNoZWV0UnVsZXNTdHlsZURldGFpbHNQYW5lbC5TZWN0aW9uU2hv
d2luZ0Zvck5vZGVTeW1ib2xdID0gbnVsbDsKLSAgICAgICAgICAgICAgICBzZWN0aW9uW1NwcmVh
ZHNoZWV0UnVsZXNTdHlsZURldGFpbHNQYW5lbC5TZWN0aW9uSW5kZXhTeW1ib2xdID0gLTE7Ci0g
ICAgICAgICAgICB9Ci0gICAgICAgICAgICByZXR1cm4gc2VjdGlvbltTcHJlYWRzaGVldFJ1bGVz
U3R5bGVEZXRhaWxzUGFuZWwuU2VjdGlvblNob3dpbmdGb3JOb2RlU3ltYm9sXTsKLSAgICAgICAg
fSk7CisgICAgICAgIGlmICh0aGlzLl9pZ25vcmVMYXlvdXRBZnRlclNlbGVjdG9yQ2hhbmdlKSB7
CisgICAgICAgICAgICB0aGlzLl9pZ25vcmVMYXlvdXRBZnRlclNlbGVjdG9yQ2hhbmdlID0gZmFs
c2U7CisgICAgICAgICAgICBpZiAodGhpcy5fc2VsZWN0ZWROb2RlSWQgJiYgdGhpcy5fc2VsZWN0
ZWROb2RlSWQgPT09IHRoaXMubm9kZVN0eWxlcy5ub2RlLmlkKQorICAgICAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgfQogCi0gICAgICAgIGlmIChwcmVzZXJ2ZWRTZWN0aW9ucy5sZW5ndGgp
IHsKLSAgICAgICAgICAgIGZvciAobGV0IHNlY3Rpb24gb2Ygb2xkU2VjdGlvbnMpIHsKLSAgICAg
ICAgICAgICAgICBpZiAoIXByZXNlcnZlZFNlY3Rpb25zLmluY2x1ZGVzKHNlY3Rpb24pKQotICAg
ICAgICAgICAgICAgICAgICB0aGlzLnJlbW92ZVN1YnZpZXcoc2VjdGlvbik7Ci0gICAgICAgICAg
ICB9Ci0gICAgICAgICAgICBmb3IgKGxldCBoZWFkZXIgb2YgdGhpcy5faGVhZGVyTWFwLnZhbHVl
cygpKQotICAgICAgICAgICAgICAgIGhlYWRlci5yZW1vdmUoKTsKLSAgICAgICAgfSBlbHNlCi0g
ICAgICAgICAgICB0aGlzLnJlbW92ZUFsbFN1YnZpZXdzKCk7CisgICAgICAgIHRoaXMucmVtb3Zl
QWxsU3Vidmlld3MoKTsKIAorICAgICAgICB0aGlzLl9zZWxlY3RlZE5vZGVJZCA9IHRoaXMubm9k
ZVN0eWxlcy5ub2RlLmlkOwogICAgICAgICBsZXQgcHJldmlvdXNTdHlsZSA9IG51bGw7CiAgICAg
ICAgIGxldCBjdXJyZW50SGVhZGVyID0gbnVsbDsKICAgICAgICAgdGhpcy5faGVhZGVyTWFwLmNs
ZWFyKCk7CkBAIC0yNjMsMTMgKzI1Nyw3IEBAIFdJLlNwcmVhZHNoZWV0UnVsZXNTdHlsZURldGFp
bHNQYW5lbCA9IGNsYXNzIFNwcmVhZHNoZWV0UnVsZXNTdHlsZURldGFpbHNQYW5lbCBlCiAgICAg
ICAgICAgICBpZiAoc2VjdGlvbi5zdHlsZS5pbmhlcml0ZWQgJiYgKCFwcmV2aW91c1N0eWxlIHx8
IHByZXZpb3VzU3R5bGUubm9kZSAhPT0gc2VjdGlvbi5zdHlsZS5ub2RlKSkKICAgICAgICAgICAg
ICAgICBhZGRIZWFkZXIoV0kuVUlTdHJpbmcoIkluaGVyaXRlZCBGcm9tIiwgIkEgc2VjdGlvbiBv
ZiBDU1MgcnVsZXMgbWF0Y2hpbmcgYW4gYW5jZXN0b3IgRE9NIG5vZGUiKSwgc2VjdGlvbi5zdHls
ZS5ub2RlKTsKIAotICAgICAgICAgICAgaWYgKCFzZWN0aW9uLmlzRGVzY2VuZGFudE9mKHRoaXMp
KSB7Ci0gICAgICAgICAgICAgICAgbGV0IHJlZmVyZW5jZVZpZXcgPSB0aGlzLnN1YnZpZXdzW3Ro
aXMuX3NlY3Rpb25zLmxlbmd0aF07Ci0gICAgICAgICAgICAgICAgaWYgKCFyZWZlcmVuY2VWaWV3
IHx8IHJlZmVyZW5jZVZpZXdbU3ByZWFkc2hlZXRSdWxlc1N0eWxlRGV0YWlsc1BhbmVsLlNlY3Rp
b25JbmRleFN5bWJvbF0gPT09IHRoaXMuX3NlY3Rpb25zLmxlbmd0aCkKLSAgICAgICAgICAgICAg
ICAgICAgdGhpcy5hZGRTdWJ2aWV3KHNlY3Rpb24pOwotICAgICAgICAgICAgICAgIGVsc2UKLSAg
ICAgICAgICAgICAgICAgICAgdGhpcy5pbnNlcnRTdWJ2aWV3QmVmb3JlKHNlY3Rpb24sIHJlZmVy
ZW5jZVZpZXcpOwotICAgICAgICAgICAgfQorICAgICAgICAgICAgdGhpcy5hZGRTdWJ2aWV3KHNl
Y3Rpb24pOwogCiAgICAgICAgICAgICB0aGlzLl9zZWN0aW9ucy5wdXNoKHNlY3Rpb24pOwogICAg
ICAgICAgICAgc2VjdGlvbi5uZWVkc0xheW91dCgpOwpAQCAtMjkzLDEwICsyODEsNiBAQCBXSS5T
cHJlYWRzaGVldFJ1bGVzU3R5bGVEZXRhaWxzUGFuZWwgPSBjbGFzcyBTcHJlYWRzaGVldFJ1bGVz
U3R5bGVEZXRhaWxzUGFuZWwgZQogICAgICAgICAgICAgICAgIHNlY3Rpb24uc3RhcnRFZGl0aW5n
UnVsZVNlbGVjdG9yKCk7CiAKICAgICAgICAgICAgIGFkZFNlY3Rpb24oc2VjdGlvbik7Ci0KLSAg
ICAgICAgICAgIGxldCBwcmVzZXJ2ZWRTZWN0aW9uID0gcHJlc2VydmVkU2VjdGlvbnMuZmluZCgo
c2VjdGlvblRvUHJlc2VydmUpID0+IHNlY3Rpb25Ub1ByZXNlcnZlW1NwcmVhZHNoZWV0UnVsZXNT
dHlsZURldGFpbHNQYW5lbC5TZWN0aW9uSW5kZXhTeW1ib2xdID09PSB0aGlzLl9zZWN0aW9ucy5s
ZW5ndGggLSAxKTsKLSAgICAgICAgICAgIGlmIChwcmVzZXJ2ZWRTZWN0aW9uKQotICAgICAgICAg
ICAgICAgIGFkZFNlY3Rpb24ocHJlc2VydmVkU2VjdGlvbik7CiAgICAgICAgIH07CiAKICAgICAg
ICAgbGV0IGFkZGVkUHNldWRvU3R5bGVzID0gZmFsc2U7CkBAIC0zMzEsNyArMzE1LDcgQEAgV0ku
U3ByZWFkc2hlZXRSdWxlc1N0eWxlRGV0YWlsc1BhbmVsID0gY2xhc3MgU3ByZWFkc2hlZXRSdWxl
c1N0eWxlRGV0YWlsc1BhbmVsIGUKICAgICAgICAgICAgIGFkZGVkUHNldWRvU3R5bGVzID0gdHJ1
ZTsKICAgICAgICAgfTsKIAotICAgICAgICBmb3IgKGxldCBzdHlsZSBvZiB0aGlzLm5vZGVTdHls
ZXMudW5pcXVlT3JkZXJlZFN0eWxlcykgeworICAgICAgICBmb3IgKGxldCBzdHlsZSBvZiB1bmlx
dWVPcmRlcmVkU3R5bGVzKSB7CiAgICAgICAgICAgICBpZiAoc3R5bGUuaW5oZXJpdGVkKQogICAg
ICAgICAgICAgICAgIGFkZFBzZXVkb1N0eWxlcygpOwogICAgICAgICAgICAgY3JlYXRlU2VjdGlv
bihzdHlsZSk7CkBAIC0zNzksMTMgKzM2Myw4IEBAIFdJLlNwcmVhZHNoZWV0UnVsZXNTdHlsZURl
dGFpbHNQYW5lbCA9IGNsYXNzIFNwcmVhZHNoZWV0UnVsZXNTdHlsZURldGFpbHNQYW5lbCBlCiAK
ICAgICBfaGFuZGxlU2VjdGlvblNlbGVjdG9yV2lsbENoYW5nZShldmVudCkKICAgICB7Ci0gICAg
ICAgIGxldCBzZWN0aW9uID0gZXZlbnQudGFyZ2V0OwotICAgICAgICBzZWN0aW9uW1NwcmVhZHNo
ZWV0UnVsZXNTdHlsZURldGFpbHNQYW5lbC5TZWN0aW9uU2hvd2luZ0Zvck5vZGVTeW1ib2xdID0g
dGhpcy5ub2RlU3R5bGVzLm5vZGU7Ci0gICAgICAgIHNlY3Rpb25bU3ByZWFkc2hlZXRSdWxlc1N0
eWxlRGV0YWlsc1BhbmVsLlNlY3Rpb25JbmRleFN5bWJvbF0gPSB0aGlzLl9zZWN0aW9ucy5pbmRl
eE9mKHNlY3Rpb24pOwotICAgICAgICBjb25zb2xlLmFzc2VydChzZWN0aW9uW1NwcmVhZHNoZWV0
UnVsZXNTdHlsZURldGFpbHNQYW5lbC5TZWN0aW9uSW5kZXhTeW1ib2xdID49IDApOworICAgICAg
ICB0aGlzLl9pZ25vcmVMYXlvdXRBZnRlclNlbGVjdG9yQ2hhbmdlID0gdHJ1ZTsKICAgICB9CiB9
OwogCiBXSS5TcHJlYWRzaGVldFJ1bGVzU3R5bGVEZXRhaWxzUGFuZWwuU3R5bGVTZWN0aW9uU3lt
Ym9sID0gU3ltYm9sKCJzdHlsZS1zZWN0aW9uIik7Ci1XSS5TcHJlYWRzaGVldFJ1bGVzU3R5bGVE
ZXRhaWxzUGFuZWwuU2VjdGlvblNob3dpbmdGb3JOb2RlU3ltYm9sID0gU3ltYm9sKCJzdHlsZS1z
aG93aW5nLWZvci1ub2RlIik7Ci1XSS5TcHJlYWRzaGVldFJ1bGVzU3R5bGVEZXRhaWxzUGFuZWwu
U2VjdGlvbkluZGV4U3ltYm9sID0gU3ltYm9sKCJzdHlsZS1pbmRleCIpOwo=
</data>
<flag name="commit-queue"
          id="423055"
          type_id="3"
          status="-"
          setter="nvasilyev"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>407715</attachid>
            <date>2020-09-01 15:59:59 -0700</date>
            <delta_ts>2020-09-01 16:24:53 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>15490</size>
            <attacher name="Nikita Vasilyev">nvasilyev</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBhNjU0ZWJjMjFhOTQuLjJkNTY3Njk4N2IwOCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBA
CisyMDIwLTA5LTAxICBOaWtpdGEgVmFzaWx5ZXYgIDxudmFzaWx5ZXZAYXBwbGUuY29tPgorCisg
ICAgICAgIFJFR1JFU1NJT04ocjI0MzI2NCk6IFdlYiBJbnNwZWN0b3I6IFN0eWxlIHBhbmUgZG9l
c24ndCB1cGRhdGUgYWZ0ZXIgdG9nZ2xpbmcgQ1NTIGNsYXNzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDIwNjUKKyAgICAgICAgPHJkYXI6Ly9wcm9i
bGVtLzU1MTQ5MTQxPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEFkZGVkIGEgdGVzdCB0byB2ZXJ5ZnkgdGhhdCBXSS5ET01Ob2RlU3R5bGVzLkV2ZW50
LlJlZnJlc2hlZCBmaXJlcyB3aXRoIGFwcHJvcHJpYXRlCisgICAgICAgIGBzaWduaWZpY2FudENo
YW5nZWAgZmxhZy4KKworICAgICAgICAqIGluc3BlY3Rvci9jc3Mvbm9kZS1zdHlsZXMtcmVmcmVz
aGVkLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogaW5zcGVjdG9yL2Nzcy9ub2RlLXN0
eWxlcy1yZWZyZXNoZWQuaHRtbDogQWRkZWQuCisKIDIwMjAtMDgtMzEgIEhlY3RvciBMb3BleiAg
PGhlY3Rvcl9pX2xvcGV6QGFwcGxlLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCByZXZlcnRp
bmcgcjI2NjM1MC4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9jc3Mvbm9kZS1z
dHlsZXMtcmVmcmVzaGVkLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9jc3Mv
bm9kZS1zdHlsZXMtcmVmcmVzaGVkLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCAwMDAwMDAwMDAwMDAuLjg2NTYyZDI4NDk3ZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91
dFRlc3RzL2luc3BlY3Rvci9jc3Mvbm9kZS1zdHlsZXMtcmVmcmVzaGVkLWV4cGVjdGVkLnR4dApA
QCAtMCwwICsxLDE2IEBACitUZXN0aW5nIHRoYXQgV0kuRE9NTm9kZVN0eWxlcy5FdmVudC5SZWZy
ZXNoZWQgZXZlbnQgZGlzcGF0Y2hlcyB3aXRoIGNvcnJlY3Qgc2lnbmlmaWNhbnRDaGFuZ2UgZmxh
Zy4KKworCis9PSBSdW5uaW5nIHRlc3Qgc3VpdGU6IE5vZGVTdHlsZXNSZWZyZXNoZWQKKy0tIFJ1
bm5pbmcgdGVzdCBjYXNlOiBOb2RlU3R5bGVzUmVmcmVzaGVkLkNsYXNzQWRkZWQKK1BBU1M6IEFk
ZGluZyAnLmJheicgY2xhc3Mgc2hvdWxkIGNhdXNlIGEgc2lnbmlmaWNhbnQgY2hhbmdlLgorCist
LSBSdW5uaW5nIHRlc3QgY2FzZTogTm9kZVN0eWxlc1JlZnJlc2hlZC5DbGFzc1JlbW92ZWQKK1BB
U1M6IFJlbW92aW5nICcuZm9vJyBjbGFzcyBzaG91bGQgY2F1c2UgYSBzaWduaWZpY2FudCBjaGFu
Z2UuCisKKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBOb2RlU3R5bGVzUmVmcmVzaGVkLklycmVsZXZh
bnRDbGFzc0FkZGVkCitQQVNTOiBBZGRpbmcgJy5ibGFoJyBjbGFzcyBzaG91bGRuJ3QgY2F1c2Ug
YSBzaWduaWZpY2FudCBjaGFuZ2UuCisKKy0tIFJ1bm5pbmcgdGVzdCBjYXNlOiBOb2RlU3R5bGVz
UmVmcmVzaGVkLklycmVsZXZhbnRDbGFzc1JlbW92ZWQKK1BBU1M6IFJlbW92aW5nICcuYmxhaCcg
Y2xhc3Mgc2hvdWxkbid0IGNhdXNlIGEgc2lnbmlmaWNhbnQgY2hhbmdlLgorCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvY3NzL25vZGUtc3R5bGVzLXJlZnJlc2hlZC5odG1sIGIv
TGF5b3V0VGVzdHMvaW5zcGVjdG9yL2Nzcy9ub2RlLXN0eWxlcy1yZWZyZXNoZWQuaHRtbApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAuLmUwOTkxMDI4OTg1YQotLS0gL2Rl
di9udWxsCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9jc3Mvbm9kZS1zdHlsZXMtcmVmcmVz
aGVkLmh0bWwKQEAgLTAsMCArMSw5NSBAQAorPGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSIu
Li8uLi9odHRwL3Rlc3RzL2luc3BlY3Rvci9yZXNvdXJjZXMvaW5zcGVjdG9yLXRlc3QuanMiPjwv
c2NyaXB0PgorPHNjcmlwdD4KK2Z1bmN0aW9uIHRlc3QoKQoreworICAgIGxldCBub2RlU3R5bGVz
ID0gbnVsbDsKKyAgICBsZXQgc3VpdGUgPSBJbnNwZWN0b3JUZXN0LmNyZWF0ZUFzeW5jU3VpdGUo
Ik5vZGVTdHlsZXNSZWZyZXNoZWQiKTsKKworICAgIHN1aXRlLmFkZFRlc3RDYXNlKHsKKyAgICAg
ICAgbmFtZTogIk5vZGVTdHlsZXNSZWZyZXNoZWQuQ2xhc3NBZGRlZCIsCisgICAgICAgIHRlc3Qo
cmVzb2x2ZSwgcmVqZWN0KSB7CisgICAgICAgICAgICBub2RlU3R5bGVzLnNpbmdsZUZpcmVFdmVu
dExpc3RlbmVyKFdJLkRPTU5vZGVTdHlsZXMuRXZlbnQuUmVmcmVzaGVkLCAoZXZlbnQpID0+IHsK
KyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdFRydWUoZXZlbnQuZGF0YS5zaWdu
aWZpY2FudENoYW5nZSwgYEFkZGluZyAnLmJheicgY2xhc3Mgc2hvdWxkIGNhdXNlIGEgc2lnbmlm
aWNhbnQgY2hhbmdlLmApOworICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgIEluc3BlY3Rv
clRlc3QuZXZhbHVhdGVJblBhZ2UoYGRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LmFkZCgiYmF6Iilg
KTsKKyAgICAgICAgICAgIG5vZGVTdHlsZXMucmVmcmVzaCgpLmZpbmFsbHkoZnVuY3Rpb24oKSB7
CisgICAgICAgICAgICAgICAgcmVzb2x2ZSgpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0K
KyAgICB9KTsKKworICAgIHN1aXRlLmFkZFRlc3RDYXNlKHsKKyAgICAgICAgbmFtZTogIk5vZGVT
dHlsZXNSZWZyZXNoZWQuQ2xhc3NSZW1vdmVkIiwKKyAgICAgICAgdGVzdChyZXNvbHZlLCByZWpl
Y3QpIHsKKyAgICAgICAgICAgIG5vZGVTdHlsZXMuc2luZ2xlRmlyZUV2ZW50TGlzdGVuZXIoV0ku
RE9NTm9kZVN0eWxlcy5FdmVudC5SZWZyZXNoZWQsIChldmVudCkgPT4geworICAgICAgICAgICAg
ICAgIEluc3BlY3RvclRlc3QuZXhwZWN0VHJ1ZShldmVudC5kYXRhLnNpZ25pZmljYW50Q2hhbmdl
LCBgUmVtb3ZpbmcgJy5mb28nIGNsYXNzIHNob3VsZCBjYXVzZSBhIHNpZ25pZmljYW50IGNoYW5n
ZS5gKTsKKyAgICAgICAgICAgIH0pOworCisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV2YWx1
YXRlSW5QYWdlKGBkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC5yZW1vdmUoImZvbyIpYCk7CisKKyAg
ICAgICAgICAgIG5vZGVTdHlsZXMucmVmcmVzaCgpLmZpbmFsbHkoZnVuY3Rpb24oKSB7CisgICAg
ICAgICAgICAgICAgcmVzb2x2ZSgpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0KKyAgICB9
KTsKKworICAgIHN1aXRlLmFkZFRlc3RDYXNlKHsKKyAgICAgICAgbmFtZTogIk5vZGVTdHlsZXNS
ZWZyZXNoZWQuSXJyZWxldmFudENsYXNzQWRkZWQiLAorICAgICAgICB0ZXN0KHJlc29sdmUsIHJl
amVjdCkgeworICAgICAgICAgICAgbm9kZVN0eWxlcy5zaW5nbGVGaXJlRXZlbnRMaXN0ZW5lcihX
SS5ET01Ob2RlU3R5bGVzLkV2ZW50LlJlZnJlc2hlZCwgKGV2ZW50KSA9PiB7CisgICAgICAgICAg
ICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RGYWxzZShldmVudC5kYXRhLnNpZ25pZmljYW50Q2hh
bmdlLCBgQWRkaW5nICcuYmxhaCcgY2xhc3Mgc2hvdWxkbid0IGNhdXNlIGEgc2lnbmlmaWNhbnQg
Y2hhbmdlLmApOworICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3Qu
ZXZhbHVhdGVJblBhZ2UoYGRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LmFkZCgiYmxhaCIpYCk7CisK
KyAgICAgICAgICAgIG5vZGVTdHlsZXMucmVmcmVzaCgpLmZpbmFsbHkoZnVuY3Rpb24oKSB7Cisg
ICAgICAgICAgICAgICAgcmVzb2x2ZSgpOworICAgICAgICAgICAgfSk7CisgICAgICAgIH0KKyAg
ICB9KTsKKworICAgIHN1aXRlLmFkZFRlc3RDYXNlKHsKKyAgICAgICAgbmFtZTogIk5vZGVTdHls
ZXNSZWZyZXNoZWQuSXJyZWxldmFudENsYXNzUmVtb3ZlZCIsCisgICAgICAgIHRlc3QocmVzb2x2
ZSwgcmVqZWN0KSB7CisgICAgICAgICAgICBub2RlU3R5bGVzLnNpbmdsZUZpcmVFdmVudExpc3Rl
bmVyKFdJLkRPTU5vZGVTdHlsZXMuRXZlbnQuUmVmcmVzaGVkLCAoZXZlbnQpID0+IHsKKyAgICAg
ICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEZhbHNlKGV2ZW50LmRhdGEuc2lnbmlmaWNh
bnRDaGFuZ2UsIGBSZW1vdmluZyAnLmJsYWgnIGNsYXNzIHNob3VsZG4ndCBjYXVzZSBhIHNpZ25p
ZmljYW50IGNoYW5nZS5gKTsKKyAgICAgICAgICAgIH0pOworCisgICAgICAgICAgICBJbnNwZWN0
b3JUZXN0LmV2YWx1YXRlSW5QYWdlKGBkb2N1bWVudC5ib2R5LmNsYXNzTGlzdC5yZW1vdmUoImJs
YWgiKWApOworCisgICAgICAgICAgICBub2RlU3R5bGVzLnJlZnJlc2goKS5maW5hbGx5KGZ1bmN0
aW9uKCkgeworICAgICAgICAgICAgICAgIHJlc29sdmUoKTsKKyAgICAgICAgICAgIH0pOworICAg
ICAgICB9CisgICAgfSk7CisKKyAgICBXSS5kb21NYW5hZ2VyLnJlcXVlc3REb2N1bWVudCgoZG9j
dW1lbnROb2RlKSA9PiB7CisgICAgICAgIGRvY3VtZW50Tm9kZS5xdWVyeVNlbGVjdG9yKCJib2R5
IiwgKGNvbnRlbnROb2RlSWQpID0+IHsKKyAgICAgICAgICAgIGlmIChjb250ZW50Tm9kZUlkKSB7
CisgICAgICAgICAgICAgICAgbGV0IGRvbU5vZGUgPSBXSS5kb21NYW5hZ2VyLm5vZGVGb3JJZChj
b250ZW50Tm9kZUlkKTsKKyAgICAgICAgICAgICAgICBub2RlU3R5bGVzID0gV0kuY3NzTWFuYWdl
ci5zdHlsZXNGb3JOb2RlKGRvbU5vZGUpOworCisgICAgICAgICAgICAgICAgbm9kZVN0eWxlcy5y
ZWZyZXNoSWZOZWVkZWQoKS50aGVuKGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgICAgICBz
dWl0ZS5ydW5UZXN0Q2FzZXNBbmRGaW5pc2goKTsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAg
ICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5mYWlsKCJET00g
bm9kZSBub3QgZm91bmQuIik7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5jb21wbGV0
ZVRlc3QoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSk7CisgICAgfSk7Cit9Cis8L3Njcmlw
dD4KKzwvaGVhZD4KKzxib2R5IG9uTG9hZD0icnVuVGVzdCgpIiBjbGFzcz0iZm9vIGJhciI+Cis8
cD5UZXN0aW5nIHRoYXQgV0kuRE9NTm9kZVN0eWxlcy5FdmVudC5SZWZyZXNoZWQgZXZlbnQgZGlz
cGF0Y2hlcyB3aXRoIGNvcnJlY3Qgc2lnbmlmaWNhbnRDaGFuZ2UgZmxhZy48L3A+Cis8c3R5bGU+
CisuZm9vIHtmb250LXNpemU6IDEycHg7fQorLmJhciB7YmFja2dyb3VuZDogbGlnaHR5ZWxsb3c7
fQorLmJheiB7Y29sb3I6IGRhcmtncmVlbjt9Cis8L3N0eWxlPgorPC9ib2R5PgorPC9odG1sPgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9DaGFuZ2VMb2cKaW5kZXggODNmY2ExNzAwMDQ5Li44YTQzYThhMjA4NmEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDIwLTA5LTAxICBOaWtp
dGEgVmFzaWx5ZXYgIDxudmFzaWx5ZXZAYXBwbGUuY29tPgorCisgICAgICAgIFJFR1JFU1NJT04o
cjI0MzI2NCk6IFdlYiBJbnNwZWN0b3I6IFN0eWxlIHBhbmUgZG9lc24ndCB1cGRhdGUgYWZ0ZXIg
dG9nZ2xpbmcgQ1NTIGNsYXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yMDIwNjUKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU1MTQ5MTQxPgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogVXNlckludGVy
ZmFjZS9Nb2RlbHMvRE9NTm9kZVN0eWxlcy5qczoKKyAgICAgICAgKFdJLkRPTU5vZGVTdHlsZXMu
cHJvdG90eXBlLnJlZnJlc2guZmV0Y2hlZE1hdGNoZWRTdHlsZXMpOgorICAgICAgICAoV0kuRE9N
Tm9kZVN0eWxlcy5wcm90b3R5cGUucmVmcmVzaC5mZXRjaGVkQ29tcHV0ZWRTdHlsZSk6CisgICAg
ICAgIChXSS5ET01Ob2RlU3R5bGVzLnByb3RvdHlwZS5yZWZyZXNoKToKKyAgICAgICAgKFdJLkRP
TU5vZGVTdHlsZXMucHJvdG90eXBlLl9wYXJzZVN0eWxlRGVjbGFyYXRpb25QYXlsb2FkKToKKyAg
ICAgICAgcjI0MzI2NCBpbnRyb2R1Y2VkIHRoaXMgYnVnIGJ5IG5ldmVyIGNsZWFyaW5nIGBfc3R5
bGVNYXBgIG1ha2luZyBpdCBpbXBvc3NpYmxlIHRvIGRpZmYgb2xkCisgICAgICAgIGFuZCBuZXcg
c3R5bGUgZGVjbGFyYXRpb25zLiBDcmVhdGUgYW5kIGNsZWFyIGBfc3R5bGVNYXBgIGF0IHRoZSBz
YW1lIHBsYWNlIGFzIGl0IHdhcyBiZWZvcmUgcjI0MzI2NC4KKworICAgICAgICAqIFVzZXJJbnRl
cmZhY2UvVmlld3MvU3ByZWFkc2hlZXRSdWxlc1N0eWxlRGV0YWlsc1BhbmVsLmpzOgorICAgICAg
ICAoV0kuU3ByZWFkc2hlZXRSdWxlc1N0eWxlRGV0YWlsc1BhbmVsKToKKyAgICAgICAgKFdJLlNw
cmVhZHNoZWV0UnVsZXNTdHlsZURldGFpbHNQYW5lbC5wcm90b3R5cGUubGF5b3V0KToKKyAgICAg
ICAgTGF5b3V0IG5vdyBhbHdheXMgcmUtbGF5b3V0cyBldmVyeXRoaW5nLiBSdWxlcyB3aXRoIG1v
ZGlmaWVkIHNlbGVjdG9ycyBhcmUgbm93IHByZXNlcnZlZCBieQorICAgICAgICBleGl0aW5nIGxh
eW91dCBlYXJseS4KKworICAgICAgICAoV0kuU3ByZWFkc2hlZXRSdWxlc1N0eWxlRGV0YWlsc1Bh
bmVsLnByb3RvdHlwZS5faGFuZGxlU2VjdGlvblNlbGVjdG9yV2lsbENoYW5nZSk6CisgICAgICAg
IFJlbW92ZSBsb2dpYyB0aGF0IHRyaWVkIHRvIHByZXNlcnZlIGluZGV4ZXMgb2YgQ1NTIHJ1bGVz
IHdpdGggbW9kaWZpZWQgc2VsZWN0b3JzIHRoYXQKKyAgICAgICAgZG9uJ3QgbWF0Y2ggKFNlY3Rp
b25JbmRleFN5bWJvbCBhbmQgZXZlcnl0aGluZyByZWxhdGVkIHRvIGl0KS4gSW5zdGVhZCwgYXZv
aWQgcmUtbGF5b3V0IGFmdGVyCisgICAgICAgIGVkaXRpbmcgYSBzZWxlY3Rvci4KKwogMjAyMC0w
OC0yOCAgRGV2aW4gUm91c3NvICA8ZHJvdXNzb0BhcHBsZS5jb20+CiAKICAgICAgICAgV2ViIElu
c3BlY3RvcjogQXVkaXQ6IHNob3VsZCBiZSBhYmxlIHRvIGNyZWF0ZS9lZGl0IGltcG9ydGVkIGF1
ZGl0cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9k
ZWxzL0RPTU5vZGVTdHlsZXMuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9Nb2RlbHMvRE9NTm9kZVN0eWxlcy5qcwppbmRleCBiZmZiNDEzMDY1MjQuLjY3NTcxNzYyODBi
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxz
L0RPTU5vZGVTdHlsZXMuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZh
Y2UvTW9kZWxzL0RPTU5vZGVTdHlsZXMuanMKQEAgLTE1MCw4ICsxNTAsNiBAQCBXSS5ET01Ob2Rl
U3R5bGVzID0gY2xhc3MgRE9NTm9kZVN0eWxlcyBleHRlbmRzIFdJLk9iamVjdAogCiAgICAgICAg
IHRoaXMuX25lZWRzUmVmcmVzaCA9IGZhbHNlOwogCi0gICAgICAgIGxldCBwcmV2aW91c1N0eWxl
c01hcCA9IHRoaXMuX3N0eWxlc01hcC5jb3B5KCk7Ci0KICAgICAgICAgbGV0IGZldGNoZWRNYXRj
aGVkU3R5bGVzUHJvbWlzZSA9IG5ldyBXSS5XcmFwcGVkUHJvbWlzZTsKICAgICAgICAgbGV0IGZl
dGNoZWRJbmxpbmVTdHlsZXNQcm9taXNlID0gbmV3IFdJLldyYXBwZWRQcm9taXNlOwogICAgICAg
ICBsZXQgZmV0Y2hlZENvbXB1dGVkU3R5bGVzUHJvbWlzZSA9IG5ldyBXSS5XcmFwcGVkUHJvbWlz
ZTsKQEAgLTE4OSw2ICsxODcsOSBAQCBXSS5ET01Ob2RlU3R5bGVzID0gY2xhc3MgRE9NTm9kZVN0
eWxlcyBleHRlbmRzIFdJLk9iamVjdAogICAgICAgICAgICAgcHNldWRvRWxlbWVudFJ1bGVzUGF5
bG9hZCA9IHBzZXVkb0VsZW1lbnRSdWxlc1BheWxvYWQgfHwgW107CiAgICAgICAgICAgICBpbmhl
cml0ZWRSdWxlc1BheWxvYWQgPSBpbmhlcml0ZWRSdWxlc1BheWxvYWQgfHwgW107CiAKKyAgICAg
ICAgICAgIHRoaXMuX3ByZXZpb3VzU3R5bGVzTWFwID0gdGhpcy5fc3R5bGVzTWFwOworICAgICAg
ICAgICAgdGhpcy5fc3R5bGVzTWFwID0gbmV3IE11bHRpbWFwOworCiAgICAgICAgICAgICB0aGlz
Ll9tYXRjaGVkUnVsZXMgPSBwYXJzZVJ1bGVNYXRjaEFycmF5UGF5bG9hZChtYXRjaGVkUnVsZXNQ
YXlsb2FkLCB0aGlzLl9ub2RlKTsKIAogICAgICAgICAgICAgdGhpcy5fcHNldWRvRWxlbWVudHMu
Y2xlYXIoKTsKQEAgLTI1MCw3ICsyNTEsOCBAQCBXSS5ET01Ob2RlU3R5bGVzID0gY2xhc3MgRE9N
Tm9kZVN0eWxlcyBleHRlbmRzIFdJLk9iamVjdAogCiAgICAgICAgICAgICBsZXQgc2lnbmlmaWNh
bnRDaGFuZ2UgPSBmYWxzZTsKICAgICAgICAgICAgIGZvciAobGV0IFtrZXksIHN0eWxlc10gb2Yg
dGhpcy5fc3R5bGVzTWFwLnNldHMoKSkgewotICAgICAgICAgICAgICAgIGxldCBwcmV2aW91c1N0
eWxlcyA9IHByZXZpb3VzU3R5bGVzTWFwLmdldChrZXkpOworICAgICAgICAgICAgICAgIC8vIENo
ZWNrIGlmIHRoZSBzYW1lIGtleSBleGlzdHMgaW4gdGhlIHByZXZpb3VzIG1hcCBhbmQgaGFzIHRo
ZSBzYW1lIHN0eWxlIG9iamVjdHMuCisgICAgICAgICAgICAgICAgbGV0IHByZXZpb3VzU3R5bGVz
ID0gdGhpcy5fcHJldmlvdXNTdHlsZXNNYXAuZ2V0KGtleSk7CiAgICAgICAgICAgICAgICAgaWYg
KHByZXZpb3VzU3R5bGVzKSB7CiAgICAgICAgICAgICAgICAgICAgIC8vIFNvbWUgc3R5bGVzIGhh
dmUgc2VsZWN0b3JzIHN1Y2ggdGhhdCB0aGV5IHdpbGwgbWF0Y2ggd2l0aCB0aGUgRE9NIG5vZGUg
dHdpY2UgKGZvciBleGFtcGxlICI6OmJlZm9yZSwgOjphZnRlciIpLgogICAgICAgICAgICAgICAg
ICAgICAvLyBJbiB0aGlzIGNhc2UgYSBzZWNvbmQgc3R5bGUgZm9yIGEgc2Vjb25kIG1hdGNoaW5n
IG1heSBiZSBnZW5lcmF0ZWQgYW5kIGFkZGVkIHdoaWNoIHdpbGwgY2F1c2UgdGhlIHNoYWxsb3dF
cXVhbApAQCAtMjg0LDcgKzI4Niw3IEBAIFdJLkRPTU5vZGVTdHlsZXMgPSBjbGFzcyBET01Ob2Rl
U3R5bGVzIGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGlm
ICghc2lnbmlmaWNhbnRDaGFuZ2UpIHsKLSAgICAgICAgICAgICAgICBmb3IgKGxldCBba2V5LCBw
cmV2aW91c1N0eWxlc10gb2YgcHJldmlvdXNTdHlsZXNNYXAuc2V0cygpKSB7CisgICAgICAgICAg
ICAgICAgZm9yIChsZXQgW2tleSwgcHJldmlvdXNTdHlsZXNdIG9mIHRoaXMuX3ByZXZpb3VzU3R5
bGVzTWFwLnNldHMoKSkgewogICAgICAgICAgICAgICAgICAgICAvLyBDaGVjayBpZiB0aGUgc2Ft
ZSBrZXkgZXhpc3RzIGluIGN1cnJlbnQgbWFwLiBJZiBpdCBkb2VzIGV4aXN0IGl0IHdhcyBhbHJl
YWR5IGNoZWNrZWQgZm9yIGVxdWFsaXR5IGFib3ZlLgogICAgICAgICAgICAgICAgICAgICBpZiAo
dGhpcy5fc3R5bGVzTWFwLmhhcyhrZXkpKQogICAgICAgICAgICAgICAgICAgICAgICAgY29udGlu
dWU7CkBAIC0zMDIsNiArMzA0LDcgQEAgV0kuRE9NTm9kZVN0eWxlcyA9IGNsYXNzIERPTU5vZGVT
dHlsZXMgZXh0ZW5kcyBXSS5PYmplY3QKICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICB9
CiAKKyAgICAgICAgICAgIHRoaXMuX3ByZXZpb3VzU3R5bGVzTWFwID0gbnVsbDsKICAgICAgICAg
ICAgIHRoaXMuX2luY2x1ZGVVc2VyQWdlbnRSdWxlc09uTmV4dFJlZnJlc2ggPSBmYWxzZTsKIAog
ICAgICAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV0kuRE9NTm9kZVN0eWxl
cy5FdmVudC5SZWZyZXNoZWQsIHtzaWduaWZpY2FudENoYW5nZX0pOwpAQCAtNTYxLDcgKzU2NCw4
IEBAIFdJLkRPTU5vZGVTdHlsZXMgPSBjbGFzcyBET01Ob2RlU3R5bGVzIGV4dGVuZHMgV0kuT2Jq
ZWN0CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KG1hdGNoZXNOb2RlIHx8IHN0eWxlKTsKIAogICAg
ICAgICBpZiAobWF0Y2hlc05vZGUpIHsKLSAgICAgICAgICAgIGxldCBleGlzdGluZ1N0eWxlcyA9
IHRoaXMuX3N0eWxlc01hcC5nZXQobWFwS2V5KTsKKyAgICAgICAgICAgIGNvbnNvbGUuYXNzZXJ0
KHRoaXMuX3ByZXZpb3VzU3R5bGVzTWFwKTsKKyAgICAgICAgICAgIGxldCBleGlzdGluZ1N0eWxl
cyA9IHRoaXMuX3ByZXZpb3VzU3R5bGVzTWFwLmdldChtYXBLZXkpOwogICAgICAgICAgICAgaWYg
KGV4aXN0aW5nU3R5bGVzICYmICFzdHlsZSkgewogICAgICAgICAgICAgICAgIGZvciAobGV0IGV4
aXN0aW5nU3R5bGUgb2YgZXhpc3RpbmdTdHlsZXMpIHsKICAgICAgICAgICAgICAgICAgICAgaWYg
KGV4aXN0aW5nU3R5bGUubm9kZSA9PT0gbm9kZSAmJiBleGlzdGluZ1N0eWxlLmluaGVyaXRlZCA9
PT0gaW5oZXJpdGVkKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9WaWV3cy9TcHJlYWRzaGVldFJ1bGVzU3R5bGVEZXRhaWxzUGFuZWwuanMgYi9Tb3Vy
Y2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9TcHJlYWRzaGVldFJ1bGVzU3R5
bGVEZXRhaWxzUGFuZWwuanMKaW5kZXggY2IyYmIzNTA2YTdjLi5mYzViNzU4MDg2NjggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1NwcmVhZHNo
ZWV0UnVsZXNTdHlsZURldGFpbHNQYW5lbC5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9WaWV3cy9TcHJlYWRzaGVldFJ1bGVzU3R5bGVEZXRhaWxzUGFuZWwuanMK
QEAgLTQyLDYgKzQyLDkgQEAgV0kuU3ByZWFkc2hlZXRSdWxlc1N0eWxlRGV0YWlsc1BhbmVsID0g
Y2xhc3MgU3ByZWFkc2hlZXRSdWxlc1N0eWxlRGV0YWlsc1BhbmVsIGUKICAgICAgICAgdGhpcy5f
cHJvcGVydHlUb1NlbGVjdEFuZEhpZ2hsaWdodCA9IG51bGw7CiAgICAgICAgIHRoaXMuX2ZpbHRl
clRleHQgPSBudWxsOwogICAgICAgICB0aGlzLl9zaG91bGRSZWZyZXNoU3Vidmlld3MgPSBmYWxz
ZTsKKyAgICAgICAgdGhpcy5fcmVuZGVyZWRTdHlsZUlkcyA9IG51bGw7CisgICAgICAgIHRoaXMu
X3NlbGVjdGVkTm9kZUlkID0gbnVsbDsKKyAgICAgICAgdGhpcy5faWdub3JlTGF5b3V0QWZ0ZXJT
ZWxlY3RvckNoYW5nZSA9IGZhbHNlOwogCiAgICAgICAgIHRoaXMuX2VtcHR5RmlsdGVyUmVzdWx0
c0VsZW1lbnQgPSBXSS5jcmVhdGVNZXNzYWdlVGV4dFZpZXcoV0kuVUlTdHJpbmcoIk5vIFJlc3Vs
dHMgRm91bmQiKSk7CiAgICAgfQpAQCAtMjE4LDI2ICsyMjEsMTcgQEAgV0kuU3ByZWFkc2hlZXRS
dWxlc1N0eWxlRGV0YWlsc1BhbmVsID0gY2xhc3MgU3ByZWFkc2hlZXRSdWxlc1N0eWxlRGV0YWls
c1BhbmVsIGUKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICB0aGlzLl9zaG91bGRSZWZy
ZXNoU3Vidmlld3MgPSBmYWxzZTsKKyAgICAgICAgbGV0IHVuaXF1ZU9yZGVyZWRTdHlsZXMgPSB0
aGlzLm5vZGVTdHlsZXMudW5pcXVlT3JkZXJlZFN0eWxlczsKIAotICAgICAgICBsZXQgb2xkU2Vj
dGlvbnMgPSB0aGlzLl9zZWN0aW9ucy5zbGljZSgpOwotICAgICAgICBsZXQgcHJlc2VydmVkU2Vj
dGlvbnMgPSBvbGRTZWN0aW9ucy5maWx0ZXIoKHNlY3Rpb24pID0+IHsKLSAgICAgICAgICAgIGlm
IChzZWN0aW9uW1NwcmVhZHNoZWV0UnVsZXNTdHlsZURldGFpbHNQYW5lbC5TZWN0aW9uU2hvd2lu
Z0Zvck5vZGVTeW1ib2xdICE9PSB0aGlzLm5vZGVTdHlsZXMubm9kZSkgewotICAgICAgICAgICAg
ICAgIHNlY3Rpb25bU3ByZWFkc2hlZXRSdWxlc1N0eWxlRGV0YWlsc1BhbmVsLlNlY3Rpb25TaG93
aW5nRm9yTm9kZVN5bWJvbF0gPSBudWxsOwotICAgICAgICAgICAgICAgIHNlY3Rpb25bU3ByZWFk
c2hlZXRSdWxlc1N0eWxlRGV0YWlsc1BhbmVsLlNlY3Rpb25JbmRleFN5bWJvbF0gPSAtMTsKLSAg
ICAgICAgICAgIH0KLSAgICAgICAgICAgIHJldHVybiBzZWN0aW9uW1NwcmVhZHNoZWV0UnVsZXNT
dHlsZURldGFpbHNQYW5lbC5TZWN0aW9uU2hvd2luZ0Zvck5vZGVTeW1ib2xdOwotICAgICAgICB9
KTsKKyAgICAgICAgaWYgKHRoaXMuX2lnbm9yZUxheW91dEFmdGVyU2VsZWN0b3JDaGFuZ2UpIHsK
KyAgICAgICAgICAgIHRoaXMuX2lnbm9yZUxheW91dEFmdGVyU2VsZWN0b3JDaGFuZ2UgPSBmYWxz
ZTsKKyAgICAgICAgICAgIGlmICh0aGlzLl9zZWxlY3RlZE5vZGVJZCAmJiB0aGlzLl9zZWxlY3Rl
ZE5vZGVJZCA9PT0gdGhpcy5ub2RlU3R5bGVzLm5vZGUuaWQpCisgICAgICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICB9CiAKLSAgICAgICAgaWYgKHByZXNlcnZlZFNlY3Rpb25zLmxlbmd0aCkg
ewotICAgICAgICAgICAgZm9yIChsZXQgc2VjdGlvbiBvZiBvbGRTZWN0aW9ucykgewotICAgICAg
ICAgICAgICAgIGlmICghcHJlc2VydmVkU2VjdGlvbnMuaW5jbHVkZXMoc2VjdGlvbikpCi0gICAg
ICAgICAgICAgICAgICAgIHRoaXMucmVtb3ZlU3VidmlldyhzZWN0aW9uKTsKLSAgICAgICAgICAg
IH0KLSAgICAgICAgICAgIGZvciAobGV0IGhlYWRlciBvZiB0aGlzLl9oZWFkZXJNYXAudmFsdWVz
KCkpCi0gICAgICAgICAgICAgICAgaGVhZGVyLnJlbW92ZSgpOwotICAgICAgICB9IGVsc2UKLSAg
ICAgICAgICAgIHRoaXMucmVtb3ZlQWxsU3Vidmlld3MoKTsKKyAgICAgICAgdGhpcy5yZW1vdmVB
bGxTdWJ2aWV3cygpOwogCisgICAgICAgIHRoaXMuX3NlbGVjdGVkTm9kZUlkID0gdGhpcy5ub2Rl
U3R5bGVzLm5vZGUuaWQ7CiAgICAgICAgIGxldCBwcmV2aW91c1N0eWxlID0gbnVsbDsKICAgICAg
ICAgbGV0IGN1cnJlbnRIZWFkZXIgPSBudWxsOwogICAgICAgICB0aGlzLl9oZWFkZXJNYXAuY2xl
YXIoKTsKQEAgLTI2MywxMyArMjU3LDcgQEAgV0kuU3ByZWFkc2hlZXRSdWxlc1N0eWxlRGV0YWls
c1BhbmVsID0gY2xhc3MgU3ByZWFkc2hlZXRSdWxlc1N0eWxlRGV0YWlsc1BhbmVsIGUKICAgICAg
ICAgICAgIGlmIChzZWN0aW9uLnN0eWxlLmluaGVyaXRlZCAmJiAoIXByZXZpb3VzU3R5bGUgfHwg
cHJldmlvdXNTdHlsZS5ub2RlICE9PSBzZWN0aW9uLnN0eWxlLm5vZGUpKQogICAgICAgICAgICAg
ICAgIGFkZEhlYWRlcihXSS5VSVN0cmluZygiSW5oZXJpdGVkIEZyb20iLCAiQSBzZWN0aW9uIG9m
IENTUyBydWxlcyBtYXRjaGluZyBhbiBhbmNlc3RvciBET00gbm9kZSIpLCBzZWN0aW9uLnN0eWxl
Lm5vZGUpOwogCi0gICAgICAgICAgICBpZiAoIXNlY3Rpb24uaXNEZXNjZW5kYW50T2YodGhpcykp
IHsKLSAgICAgICAgICAgICAgICBsZXQgcmVmZXJlbmNlVmlldyA9IHRoaXMuc3Vidmlld3NbdGhp
cy5fc2VjdGlvbnMubGVuZ3RoXTsKLSAgICAgICAgICAgICAgICBpZiAoIXJlZmVyZW5jZVZpZXcg
fHwgcmVmZXJlbmNlVmlld1tTcHJlYWRzaGVldFJ1bGVzU3R5bGVEZXRhaWxzUGFuZWwuU2VjdGlv
bkluZGV4U3ltYm9sXSA9PT0gdGhpcy5fc2VjdGlvbnMubGVuZ3RoKQotICAgICAgICAgICAgICAg
ICAgICB0aGlzLmFkZFN1YnZpZXcoc2VjdGlvbik7Ci0gICAgICAgICAgICAgICAgZWxzZQotICAg
ICAgICAgICAgICAgICAgICB0aGlzLmluc2VydFN1YnZpZXdCZWZvcmUoc2VjdGlvbiwgcmVmZXJl
bmNlVmlldyk7Ci0gICAgICAgICAgICB9CisgICAgICAgICAgICB0aGlzLmFkZFN1YnZpZXcoc2Vj
dGlvbik7CiAKICAgICAgICAgICAgIHRoaXMuX3NlY3Rpb25zLnB1c2goc2VjdGlvbik7CiAgICAg
ICAgICAgICBzZWN0aW9uLm5lZWRzTGF5b3V0KCk7CkBAIC0yOTMsMTAgKzI4MSw2IEBAIFdJLlNw
cmVhZHNoZWV0UnVsZXNTdHlsZURldGFpbHNQYW5lbCA9IGNsYXNzIFNwcmVhZHNoZWV0UnVsZXNT
dHlsZURldGFpbHNQYW5lbCBlCiAgICAgICAgICAgICAgICAgc2VjdGlvbi5zdGFydEVkaXRpbmdS
dWxlU2VsZWN0b3IoKTsKIAogICAgICAgICAgICAgYWRkU2VjdGlvbihzZWN0aW9uKTsKLQotICAg
ICAgICAgICAgbGV0IHByZXNlcnZlZFNlY3Rpb24gPSBwcmVzZXJ2ZWRTZWN0aW9ucy5maW5kKChz
ZWN0aW9uVG9QcmVzZXJ2ZSkgPT4gc2VjdGlvblRvUHJlc2VydmVbU3ByZWFkc2hlZXRSdWxlc1N0
eWxlRGV0YWlsc1BhbmVsLlNlY3Rpb25JbmRleFN5bWJvbF0gPT09IHRoaXMuX3NlY3Rpb25zLmxl
bmd0aCAtIDEpOwotICAgICAgICAgICAgaWYgKHByZXNlcnZlZFNlY3Rpb24pCi0gICAgICAgICAg
ICAgICAgYWRkU2VjdGlvbihwcmVzZXJ2ZWRTZWN0aW9uKTsKICAgICAgICAgfTsKIAogICAgICAg
ICBsZXQgYWRkZWRQc2V1ZG9TdHlsZXMgPSBmYWxzZTsKQEAgLTMzMSw3ICszMTUsNyBAQCBXSS5T
cHJlYWRzaGVldFJ1bGVzU3R5bGVEZXRhaWxzUGFuZWwgPSBjbGFzcyBTcHJlYWRzaGVldFJ1bGVz
U3R5bGVEZXRhaWxzUGFuZWwgZQogICAgICAgICAgICAgYWRkZWRQc2V1ZG9TdHlsZXMgPSB0cnVl
OwogICAgICAgICB9OwogCi0gICAgICAgIGZvciAobGV0IHN0eWxlIG9mIHRoaXMubm9kZVN0eWxl
cy51bmlxdWVPcmRlcmVkU3R5bGVzKSB7CisgICAgICAgIGZvciAobGV0IHN0eWxlIG9mIHVuaXF1
ZU9yZGVyZWRTdHlsZXMpIHsKICAgICAgICAgICAgIGlmIChzdHlsZS5pbmhlcml0ZWQpCiAgICAg
ICAgICAgICAgICAgYWRkUHNldWRvU3R5bGVzKCk7CiAgICAgICAgICAgICBjcmVhdGVTZWN0aW9u
KHN0eWxlKTsKQEAgLTM3OSwxMyArMzYzLDggQEAgV0kuU3ByZWFkc2hlZXRSdWxlc1N0eWxlRGV0
YWlsc1BhbmVsID0gY2xhc3MgU3ByZWFkc2hlZXRSdWxlc1N0eWxlRGV0YWlsc1BhbmVsIGUKIAog
ICAgIF9oYW5kbGVTZWN0aW9uU2VsZWN0b3JXaWxsQ2hhbmdlKGV2ZW50KQogICAgIHsKLSAgICAg
ICAgbGV0IHNlY3Rpb24gPSBldmVudC50YXJnZXQ7Ci0gICAgICAgIHNlY3Rpb25bU3ByZWFkc2hl
ZXRSdWxlc1N0eWxlRGV0YWlsc1BhbmVsLlNlY3Rpb25TaG93aW5nRm9yTm9kZVN5bWJvbF0gPSB0
aGlzLm5vZGVTdHlsZXMubm9kZTsKLSAgICAgICAgc2VjdGlvbltTcHJlYWRzaGVldFJ1bGVzU3R5
bGVEZXRhaWxzUGFuZWwuU2VjdGlvbkluZGV4U3ltYm9sXSA9IHRoaXMuX3NlY3Rpb25zLmluZGV4
T2Yoc2VjdGlvbik7Ci0gICAgICAgIGNvbnNvbGUuYXNzZXJ0KHNlY3Rpb25bU3ByZWFkc2hlZXRS
dWxlc1N0eWxlRGV0YWlsc1BhbmVsLlNlY3Rpb25JbmRleFN5bWJvbF0gPj0gMCk7CisgICAgICAg
IHRoaXMuX2lnbm9yZUxheW91dEFmdGVyU2VsZWN0b3JDaGFuZ2UgPSB0cnVlOwogICAgIH0KIH07
CiAKIFdJLlNwcmVhZHNoZWV0UnVsZXNTdHlsZURldGFpbHNQYW5lbC5TdHlsZVNlY3Rpb25TeW1i
b2wgPSBTeW1ib2woInN0eWxlLXNlY3Rpb24iKTsKLVdJLlNwcmVhZHNoZWV0UnVsZXNTdHlsZURl
dGFpbHNQYW5lbC5TZWN0aW9uU2hvd2luZ0Zvck5vZGVTeW1ib2wgPSBTeW1ib2woInN0eWxlLXNo
b3dpbmctZm9yLW5vZGUiKTsKLVdJLlNwcmVhZHNoZWV0UnVsZXNTdHlsZURldGFpbHNQYW5lbC5T
ZWN0aW9uSW5kZXhTeW1ib2wgPSBTeW1ib2woInN0eWxlLWluZGV4Iik7Cg==
</data>
<flag name="review"
          id="423078"
          type_id="1"
          status="+"
          setter="bburg"
    />
    <flag name="commit-queue"
          id="423079"
          type_id="3"
          status="-"
          setter="bburg"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>407718</attachid>
            <date>2020-09-01 16:24:53 -0700</date>
            <delta_ts>2020-09-01 23:21:07 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>15490</size>
            <attacher name="Nikita Vasilyev">nvasilyev</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBhNjU0ZWJjMjFhOTQuLmNkNTU0NGUxYzI0ZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBA
CisyMDIwLTA5LTAxICBOaWtpdGEgVmFzaWx5ZXYgIDxudmFzaWx5ZXZAYXBwbGUuY29tPgorCisg
ICAgICAgIFJFR1JFU1NJT04ocjI0MzI2NCk6IFdlYiBJbnNwZWN0b3I6IFN0eWxlIHBhbmUgZG9l
c24ndCB1cGRhdGUgYWZ0ZXIgdG9nZ2xpbmcgQ1NTIGNsYXNzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDIwNjUKKyAgICAgICAgPHJkYXI6Ly9wcm9i
bGVtLzU1MTQ5MTQxPgorCisgICAgICAgIFJldmlld2VkIGJ5IEJyaWFuIEJ1cmcuCisKKyAgICAg
ICAgQWRkZWQgYSB0ZXN0IHRvIHZlcmlmeSB0aGF0IFdJLkRPTU5vZGVTdHlsZXMuRXZlbnQuUmVm
cmVzaGVkIGZpcmVzIHdpdGggYXBwcm9wcmlhdGUKKyAgICAgICAgYHNpZ25pZmljYW50Q2hhbmdl
YCBmbGFnLgorCisgICAgICAgICogaW5zcGVjdG9yL2Nzcy9ub2RlLXN0eWxlcy1yZWZyZXNoZWQt
ZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBpbnNwZWN0b3IvY3NzL25vZGUtc3R5bGVz
LXJlZnJlc2hlZC5odG1sOiBBZGRlZC4KKwogMjAyMC0wOC0zMSAgSGVjdG9yIExvcGV6ICA8aGVj
dG9yX2lfbG9wZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJldmVydGluZyBy
MjY2MzUwLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2Nzcy9ub2RlLXN0eWxl
cy1yZWZyZXNoZWQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2Nzcy9ub2Rl
LXN0eWxlcy1yZWZyZXNoZWQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMC4uODY1NjJkMjg0OTdkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW5zcGVjdG9yL2Nzcy9ub2RlLXN0eWxlcy1yZWZyZXNoZWQtZXhwZWN0ZWQudHh0CkBAIC0w
LDAgKzEsMTYgQEAKK1Rlc3RpbmcgdGhhdCBXSS5ET01Ob2RlU3R5bGVzLkV2ZW50LlJlZnJlc2hl
ZCBldmVudCBkaXNwYXRjaGVzIHdpdGggY29ycmVjdCBzaWduaWZpY2FudENoYW5nZSBmbGFnLgor
CisKKz09IFJ1bm5pbmcgdGVzdCBzdWl0ZTogTm9kZVN0eWxlc1JlZnJlc2hlZAorLS0gUnVubmlu
ZyB0ZXN0IGNhc2U6IE5vZGVTdHlsZXNSZWZyZXNoZWQuQ2xhc3NBZGRlZAorUEFTUzogQWRkaW5n
ICcuYmF6JyBjbGFzcyBzaG91bGQgY2F1c2UgYSBzaWduaWZpY2FudCBjaGFuZ2UuCisKKy0tIFJ1
bm5pbmcgdGVzdCBjYXNlOiBOb2RlU3R5bGVzUmVmcmVzaGVkLkNsYXNzUmVtb3ZlZAorUEFTUzog
UmVtb3ZpbmcgJy5mb28nIGNsYXNzIHNob3VsZCBjYXVzZSBhIHNpZ25pZmljYW50IGNoYW5nZS4K
KworLS0gUnVubmluZyB0ZXN0IGNhc2U6IE5vZGVTdHlsZXNSZWZyZXNoZWQuSXJyZWxldmFudENs
YXNzQWRkZWQKK1BBU1M6IEFkZGluZyAnLmJsYWgnIGNsYXNzIHNob3VsZG4ndCBjYXVzZSBhIHNp
Z25pZmljYW50IGNoYW5nZS4KKworLS0gUnVubmluZyB0ZXN0IGNhc2U6IE5vZGVTdHlsZXNSZWZy
ZXNoZWQuSXJyZWxldmFudENsYXNzUmVtb3ZlZAorUEFTUzogUmVtb3ZpbmcgJy5ibGFoJyBjbGFz
cyBzaG91bGRuJ3QgY2F1c2UgYSBzaWduaWZpY2FudCBjaGFuZ2UuCisKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2luc3BlY3Rvci9jc3Mvbm9kZS1zdHlsZXMtcmVmcmVzaGVkLmh0bWwgYi9MYXlv
dXRUZXN0cy9pbnNwZWN0b3IvY3NzL25vZGUtc3R5bGVzLXJlZnJlc2hlZC5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uZTA5OTEwMjg5ODVhCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2Nzcy9ub2RlLXN0eWxlcy1yZWZyZXNoZWQu
aHRtbApAQCAtMCwwICsxLDk1IEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4u
L2h0dHAvdGVzdHMvaW5zcGVjdG9yL3Jlc291cmNlcy9pbnNwZWN0b3ItdGVzdC5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0PgorZnVuY3Rpb24gdGVzdCgpCit7CisgICAgbGV0IG5vZGVTdHlsZXMgPSBu
dWxsOworICAgIGxldCBzdWl0ZSA9IEluc3BlY3RvclRlc3QuY3JlYXRlQXN5bmNTdWl0ZSgiTm9k
ZVN0eWxlc1JlZnJlc2hlZCIpOworCisgICAgc3VpdGUuYWRkVGVzdENhc2UoeworICAgICAgICBu
YW1lOiAiTm9kZVN0eWxlc1JlZnJlc2hlZC5DbGFzc0FkZGVkIiwKKyAgICAgICAgdGVzdChyZXNv
bHZlLCByZWplY3QpIHsKKyAgICAgICAgICAgIG5vZGVTdHlsZXMuc2luZ2xlRmlyZUV2ZW50TGlz
dGVuZXIoV0kuRE9NTm9kZVN0eWxlcy5FdmVudC5SZWZyZXNoZWQsIChldmVudCkgPT4geworICAg
ICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0VHJ1ZShldmVudC5kYXRhLnNpZ25pZmlj
YW50Q2hhbmdlLCBgQWRkaW5nICcuYmF6JyBjbGFzcyBzaG91bGQgY2F1c2UgYSBzaWduaWZpY2Fu
dCBjaGFuZ2UuYCk7CisgICAgICAgICAgICB9KTsKKworICAgICAgICAgICAgSW5zcGVjdG9yVGVz
dC5ldmFsdWF0ZUluUGFnZShgZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QuYWRkKCJiYXoiKWApOwor
ICAgICAgICAgICAgbm9kZVN0eWxlcy5yZWZyZXNoKCkuZmluYWxseShmdW5jdGlvbigpIHsKKyAg
ICAgICAgICAgICAgICByZXNvbHZlKCk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfQorICAg
IH0pOworCisgICAgc3VpdGUuYWRkVGVzdENhc2UoeworICAgICAgICBuYW1lOiAiTm9kZVN0eWxl
c1JlZnJlc2hlZC5DbGFzc1JlbW92ZWQiLAorICAgICAgICB0ZXN0KHJlc29sdmUsIHJlamVjdCkg
eworICAgICAgICAgICAgbm9kZVN0eWxlcy5zaW5nbGVGaXJlRXZlbnRMaXN0ZW5lcihXSS5ET01O
b2RlU3R5bGVzLkV2ZW50LlJlZnJlc2hlZCwgKGV2ZW50KSA9PiB7CisgICAgICAgICAgICAgICAg
SW5zcGVjdG9yVGVzdC5leHBlY3RUcnVlKGV2ZW50LmRhdGEuc2lnbmlmaWNhbnRDaGFuZ2UsIGBS
ZW1vdmluZyAnLmZvbycgY2xhc3Mgc2hvdWxkIGNhdXNlIGEgc2lnbmlmaWNhbnQgY2hhbmdlLmAp
OworICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXZhbHVhdGVJ
blBhZ2UoYGRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LnJlbW92ZSgiZm9vIilgKTsKKworICAgICAg
ICAgICAgbm9kZVN0eWxlcy5yZWZyZXNoKCkuZmluYWxseShmdW5jdGlvbigpIHsKKyAgICAgICAg
ICAgICAgICByZXNvbHZlKCk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfQorICAgIH0pOwor
CisgICAgc3VpdGUuYWRkVGVzdENhc2UoeworICAgICAgICBuYW1lOiAiTm9kZVN0eWxlc1JlZnJl
c2hlZC5JcnJlbGV2YW50Q2xhc3NBZGRlZCIsCisgICAgICAgIHRlc3QocmVzb2x2ZSwgcmVqZWN0
KSB7CisgICAgICAgICAgICBub2RlU3R5bGVzLnNpbmdsZUZpcmVFdmVudExpc3RlbmVyKFdJLkRP
TU5vZGVTdHlsZXMuRXZlbnQuUmVmcmVzaGVkLCAoZXZlbnQpID0+IHsKKyAgICAgICAgICAgICAg
ICBJbnNwZWN0b3JUZXN0LmV4cGVjdEZhbHNlKGV2ZW50LmRhdGEuc2lnbmlmaWNhbnRDaGFuZ2Us
IGBBZGRpbmcgJy5ibGFoJyBjbGFzcyBzaG91bGRuJ3QgY2F1c2UgYSBzaWduaWZpY2FudCBjaGFu
Z2UuYCk7CisgICAgICAgICAgICB9KTsKKworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5ldmFs
dWF0ZUluUGFnZShgZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QuYWRkKCJibGFoIilgKTsKKworICAg
ICAgICAgICAgbm9kZVN0eWxlcy5yZWZyZXNoKCkuZmluYWxseShmdW5jdGlvbigpIHsKKyAgICAg
ICAgICAgICAgICByZXNvbHZlKCk7CisgICAgICAgICAgICB9KTsKKyAgICAgICAgfQorICAgIH0p
OworCisgICAgc3VpdGUuYWRkVGVzdENhc2UoeworICAgICAgICBuYW1lOiAiTm9kZVN0eWxlc1Jl
ZnJlc2hlZC5JcnJlbGV2YW50Q2xhc3NSZW1vdmVkIiwKKyAgICAgICAgdGVzdChyZXNvbHZlLCBy
ZWplY3QpIHsKKyAgICAgICAgICAgIG5vZGVTdHlsZXMuc2luZ2xlRmlyZUV2ZW50TGlzdGVuZXIo
V0kuRE9NTm9kZVN0eWxlcy5FdmVudC5SZWZyZXNoZWQsIChldmVudCkgPT4geworICAgICAgICAg
ICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0RmFsc2UoZXZlbnQuZGF0YS5zaWduaWZpY2FudENo
YW5nZSwgYFJlbW92aW5nICcuYmxhaCcgY2xhc3Mgc2hvdWxkbid0IGNhdXNlIGEgc2lnbmlmaWNh
bnQgY2hhbmdlLmApOworICAgICAgICAgICAgfSk7CisKKyAgICAgICAgICAgIEluc3BlY3RvclRl
c3QuZXZhbHVhdGVJblBhZ2UoYGRvY3VtZW50LmJvZHkuY2xhc3NMaXN0LnJlbW92ZSgiYmxhaCIp
YCk7CisKKyAgICAgICAgICAgIG5vZGVTdHlsZXMucmVmcmVzaCgpLmZpbmFsbHkoZnVuY3Rpb24o
KSB7CisgICAgICAgICAgICAgICAgcmVzb2x2ZSgpOworICAgICAgICAgICAgfSk7CisgICAgICAg
IH0KKyAgICB9KTsKKworICAgIFdJLmRvbU1hbmFnZXIucmVxdWVzdERvY3VtZW50KChkb2N1bWVu
dE5vZGUpID0+IHsKKyAgICAgICAgZG9jdW1lbnROb2RlLnF1ZXJ5U2VsZWN0b3IoImJvZHkiLCAo
Y29udGVudE5vZGVJZCkgPT4geworICAgICAgICAgICAgaWYgKGNvbnRlbnROb2RlSWQpIHsKKyAg
ICAgICAgICAgICAgICBsZXQgZG9tTm9kZSA9IFdJLmRvbU1hbmFnZXIubm9kZUZvcklkKGNvbnRl
bnROb2RlSWQpOworICAgICAgICAgICAgICAgIG5vZGVTdHlsZXMgPSBXSS5jc3NNYW5hZ2VyLnN0
eWxlc0Zvck5vZGUoZG9tTm9kZSk7CisKKyAgICAgICAgICAgICAgICBub2RlU3R5bGVzLnJlZnJl
c2hJZk5lZWRlZCgpLnRoZW4oZnVuY3Rpb24oKSB7CisgICAgICAgICAgICAgICAgICAgIHN1aXRl
LnJ1blRlc3RDYXNlc0FuZEZpbmlzaCgpOworICAgICAgICAgICAgICAgIH0pOworICAgICAgICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmZhaWwoIkRPTSBub2Rl
IG5vdCBmb3VuZC4iKTsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmNvbXBsZXRlVGVz
dCgpOworICAgICAgICAgICAgfQorICAgICAgICB9KTsKKyAgICB9KTsKK30KKzwvc2NyaXB0Pgor
PC9oZWFkPgorPGJvZHkgb25Mb2FkPSJydW5UZXN0KCkiIGNsYXNzPSJmb28gYmFyIj4KKzxwPlRl
c3RpbmcgdGhhdCBXSS5ET01Ob2RlU3R5bGVzLkV2ZW50LlJlZnJlc2hlZCBldmVudCBkaXNwYXRj
aGVzIHdpdGggY29ycmVjdCBzaWduaWZpY2FudENoYW5nZSBmbGFnLjwvcD4KKzxzdHlsZT4KKy5m
b28ge2ZvbnQtc2l6ZTogMTJweDt9CisuYmFyIHtiYWNrZ3JvdW5kOiBsaWdodHllbGxvdzt9Cisu
YmF6IHtjb2xvcjogZGFya2dyZWVuO30KKzwvc3R5bGU+Cis8L2JvZHk+Cis8L2h0bWw+CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkluc3Bl
Y3RvclVJL0NoYW5nZUxvZwppbmRleCA4M2ZjYTE3MDAwNDkuLjdkODg4ZmI2ZTNiYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzAgQEAKKzIwMjAtMDktMDEgIE5pa2l0YSBW
YXNpbHlldiAgPG52YXNpbHlldkBhcHBsZS5jb20+CisKKyAgICAgICAgUkVHUkVTU0lPTihyMjQz
MjY0KTogV2ViIEluc3BlY3RvcjogU3R5bGUgcGFuZSBkb2Vzbid0IHVwZGF0ZSBhZnRlciB0b2dn
bGluZyBDU1MgY2xhc3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIwMjA2NQorICAgICAgICA8cmRhcjovL3Byb2JsZW0vNTUxNDkxNDE+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgQnJpYW4gQnVyZy4KKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvTW9k
ZWxzL0RPTU5vZGVTdHlsZXMuanM6CisgICAgICAgIChXSS5ET01Ob2RlU3R5bGVzLnByb3RvdHlw
ZS5yZWZyZXNoLmZldGNoZWRNYXRjaGVkU3R5bGVzKToKKyAgICAgICAgKFdJLkRPTU5vZGVTdHls
ZXMucHJvdG90eXBlLnJlZnJlc2guZmV0Y2hlZENvbXB1dGVkU3R5bGUpOgorICAgICAgICAoV0ku
RE9NTm9kZVN0eWxlcy5wcm90b3R5cGUucmVmcmVzaCk6CisgICAgICAgIChXSS5ET01Ob2RlU3R5
bGVzLnByb3RvdHlwZS5fcGFyc2VTdHlsZURlY2xhcmF0aW9uUGF5bG9hZCk6CisgICAgICAgIHIy
NDMyNjQgaW50cm9kdWNlZCB0aGlzIGJ1ZyBieSBuZXZlciBjbGVhcmluZyBgX3N0eWxlTWFwYCBt
YWtpbmcgaXQgaW1wb3NzaWJsZSB0byBkaWZmIG9sZAorICAgICAgICBhbmQgbmV3IHN0eWxlIGRl
Y2xhcmF0aW9ucy4gQ3JlYXRlIGFuZCBjbGVhciBgX3N0eWxlTWFwYCBhdCB0aGUgc2FtZSBwbGFj
ZSBhcyBpdCB3YXMgYmVmb3JlIHIyNDMyNjQuCisKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL1Zp
ZXdzL1NwcmVhZHNoZWV0UnVsZXNTdHlsZURldGFpbHNQYW5lbC5qczoKKyAgICAgICAgKFdJLlNw
cmVhZHNoZWV0UnVsZXNTdHlsZURldGFpbHNQYW5lbCk6CisgICAgICAgIChXSS5TcHJlYWRzaGVl
dFJ1bGVzU3R5bGVEZXRhaWxzUGFuZWwucHJvdG90eXBlLmxheW91dCk6CisgICAgICAgIExheW91
dCBub3cgYWx3YXlzIHJlLWxheW91dHMgZXZlcnl0aGluZy4gUnVsZXMgd2l0aCBtb2RpZmllZCBz
ZWxlY3RvcnMgYXJlIG5vdyBwcmVzZXJ2ZWQgYnkKKyAgICAgICAgZXhpdGluZyBsYXlvdXQgZWFy
bHkuCisKKyAgICAgICAgKFdJLlNwcmVhZHNoZWV0UnVsZXNTdHlsZURldGFpbHNQYW5lbC5wcm90
b3R5cGUuX2hhbmRsZVNlY3Rpb25TZWxlY3RvcldpbGxDaGFuZ2UpOgorICAgICAgICBSZW1vdmUg
bG9naWMgdGhhdCB0cmllZCB0byBwcmVzZXJ2ZSBpbmRleGVzIG9mIENTUyBydWxlcyB3aXRoIG1v
ZGlmaWVkIHNlbGVjdG9ycyB0aGF0CisgICAgICAgIGRvbid0IG1hdGNoIChTZWN0aW9uSW5kZXhT
eW1ib2wgYW5kIGV2ZXJ5dGhpbmcgcmVsYXRlZCB0byBpdCkuIEluc3RlYWQsIGF2b2lkIHJlLWxh
eW91dCBhZnRlcgorICAgICAgICBlZGl0aW5nIGEgc2VsZWN0b3IuCisKIDIwMjAtMDgtMjggIERl
dmluIFJvdXNzbyAgPGRyb3Vzc29AYXBwbGUuY29tPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6
IEF1ZGl0OiBzaG91bGQgYmUgYWJsZSB0byBjcmVhdGUvZWRpdCBpbXBvcnRlZCBhdWRpdHMKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9ET01O
b2RlU3R5bGVzLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxz
L0RPTU5vZGVTdHlsZXMuanMKaW5kZXggYmZmYjQxMzA2NTI0Li42NzU3MTc2MjgwYjIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9ET01Ob2Rl
U3R5bGVzLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVs
cy9ET01Ob2RlU3R5bGVzLmpzCkBAIC0xNTAsOCArMTUwLDYgQEAgV0kuRE9NTm9kZVN0eWxlcyA9
IGNsYXNzIERPTU5vZGVTdHlsZXMgZXh0ZW5kcyBXSS5PYmplY3QKIAogICAgICAgICB0aGlzLl9u
ZWVkc1JlZnJlc2ggPSBmYWxzZTsKIAotICAgICAgICBsZXQgcHJldmlvdXNTdHlsZXNNYXAgPSB0
aGlzLl9zdHlsZXNNYXAuY29weSgpOwotCiAgICAgICAgIGxldCBmZXRjaGVkTWF0Y2hlZFN0eWxl
c1Byb21pc2UgPSBuZXcgV0kuV3JhcHBlZFByb21pc2U7CiAgICAgICAgIGxldCBmZXRjaGVkSW5s
aW5lU3R5bGVzUHJvbWlzZSA9IG5ldyBXSS5XcmFwcGVkUHJvbWlzZTsKICAgICAgICAgbGV0IGZl
dGNoZWRDb21wdXRlZFN0eWxlc1Byb21pc2UgPSBuZXcgV0kuV3JhcHBlZFByb21pc2U7CkBAIC0x
ODksNiArMTg3LDkgQEAgV0kuRE9NTm9kZVN0eWxlcyA9IGNsYXNzIERPTU5vZGVTdHlsZXMgZXh0
ZW5kcyBXSS5PYmplY3QKICAgICAgICAgICAgIHBzZXVkb0VsZW1lbnRSdWxlc1BheWxvYWQgPSBw
c2V1ZG9FbGVtZW50UnVsZXNQYXlsb2FkIHx8IFtdOwogICAgICAgICAgICAgaW5oZXJpdGVkUnVs
ZXNQYXlsb2FkID0gaW5oZXJpdGVkUnVsZXNQYXlsb2FkIHx8IFtdOwogCisgICAgICAgICAgICB0
aGlzLl9wcmV2aW91c1N0eWxlc01hcCA9IHRoaXMuX3N0eWxlc01hcDsKKyAgICAgICAgICAgIHRo
aXMuX3N0eWxlc01hcCA9IG5ldyBNdWx0aW1hcDsKKwogICAgICAgICAgICAgdGhpcy5fbWF0Y2hl
ZFJ1bGVzID0gcGFyc2VSdWxlTWF0Y2hBcnJheVBheWxvYWQobWF0Y2hlZFJ1bGVzUGF5bG9hZCwg
dGhpcy5fbm9kZSk7CiAKICAgICAgICAgICAgIHRoaXMuX3BzZXVkb0VsZW1lbnRzLmNsZWFyKCk7
CkBAIC0yNTAsNyArMjUxLDggQEAgV0kuRE9NTm9kZVN0eWxlcyA9IGNsYXNzIERPTU5vZGVTdHls
ZXMgZXh0ZW5kcyBXSS5PYmplY3QKIAogICAgICAgICAgICAgbGV0IHNpZ25pZmljYW50Q2hhbmdl
ID0gZmFsc2U7CiAgICAgICAgICAgICBmb3IgKGxldCBba2V5LCBzdHlsZXNdIG9mIHRoaXMuX3N0
eWxlc01hcC5zZXRzKCkpIHsKLSAgICAgICAgICAgICAgICBsZXQgcHJldmlvdXNTdHlsZXMgPSBw
cmV2aW91c1N0eWxlc01hcC5nZXQoa2V5KTsKKyAgICAgICAgICAgICAgICAvLyBDaGVjayBpZiB0
aGUgc2FtZSBrZXkgZXhpc3RzIGluIHRoZSBwcmV2aW91cyBtYXAgYW5kIGhhcyB0aGUgc2FtZSBz
dHlsZSBvYmplY3RzLgorICAgICAgICAgICAgICAgIGxldCBwcmV2aW91c1N0eWxlcyA9IHRoaXMu
X3ByZXZpb3VzU3R5bGVzTWFwLmdldChrZXkpOwogICAgICAgICAgICAgICAgIGlmIChwcmV2aW91
c1N0eWxlcykgewogICAgICAgICAgICAgICAgICAgICAvLyBTb21lIHN0eWxlcyBoYXZlIHNlbGVj
dG9ycyBzdWNoIHRoYXQgdGhleSB3aWxsIG1hdGNoIHdpdGggdGhlIERPTSBub2RlIHR3aWNlIChm
b3IgZXhhbXBsZSAiOjpiZWZvcmUsIDo6YWZ0ZXIiKS4KICAgICAgICAgICAgICAgICAgICAgLy8g
SW4gdGhpcyBjYXNlIGEgc2Vjb25kIHN0eWxlIGZvciBhIHNlY29uZCBtYXRjaGluZyBtYXkgYmUg
Z2VuZXJhdGVkIGFuZCBhZGRlZCB3aGljaCB3aWxsIGNhdXNlIHRoZSBzaGFsbG93RXF1YWwKQEAg
LTI4NCw3ICsyODYsNyBAQCBXSS5ET01Ob2RlU3R5bGVzID0gY2xhc3MgRE9NTm9kZVN0eWxlcyBl
eHRlbmRzIFdJLk9iamVjdAogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBpZiAoIXNpZ25p
ZmljYW50Q2hhbmdlKSB7Ci0gICAgICAgICAgICAgICAgZm9yIChsZXQgW2tleSwgcHJldmlvdXNT
dHlsZXNdIG9mIHByZXZpb3VzU3R5bGVzTWFwLnNldHMoKSkgeworICAgICAgICAgICAgICAgIGZv
ciAobGV0IFtrZXksIHByZXZpb3VzU3R5bGVzXSBvZiB0aGlzLl9wcmV2aW91c1N0eWxlc01hcC5z
ZXRzKCkpIHsKICAgICAgICAgICAgICAgICAgICAgLy8gQ2hlY2sgaWYgdGhlIHNhbWUga2V5IGV4
aXN0cyBpbiBjdXJyZW50IG1hcC4gSWYgaXQgZG9lcyBleGlzdCBpdCB3YXMgYWxyZWFkeSBjaGVj
a2VkIGZvciBlcXVhbGl0eSBhYm92ZS4KICAgICAgICAgICAgICAgICAgICAgaWYgKHRoaXMuX3N0
eWxlc01hcC5oYXMoa2V5KSkKICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwpAQCAt
MzAyLDYgKzMwNCw3IEBAIFdJLkRPTU5vZGVTdHlsZXMgPSBjbGFzcyBET01Ob2RlU3R5bGVzIGV4
dGVuZHMgV0kuT2JqZWN0CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgfQogCisgICAg
ICAgICAgICB0aGlzLl9wcmV2aW91c1N0eWxlc01hcCA9IG51bGw7CiAgICAgICAgICAgICB0aGlz
Ll9pbmNsdWRlVXNlckFnZW50UnVsZXNPbk5leHRSZWZyZXNoID0gZmFsc2U7CiAKICAgICAgICAg
ICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdJLkRPTU5vZGVTdHlsZXMuRXZlbnQu
UmVmcmVzaGVkLCB7c2lnbmlmaWNhbnRDaGFuZ2V9KTsKQEAgLTU2MSw3ICs1NjQsOCBAQCBXSS5E
T01Ob2RlU3R5bGVzID0gY2xhc3MgRE9NTm9kZVN0eWxlcyBleHRlbmRzIFdJLk9iamVjdAogICAg
ICAgICBjb25zb2xlLmFzc2VydChtYXRjaGVzTm9kZSB8fCBzdHlsZSk7CiAKICAgICAgICAgaWYg
KG1hdGNoZXNOb2RlKSB7Ci0gICAgICAgICAgICBsZXQgZXhpc3RpbmdTdHlsZXMgPSB0aGlzLl9z
dHlsZXNNYXAuZ2V0KG1hcEtleSk7CisgICAgICAgICAgICBjb25zb2xlLmFzc2VydCh0aGlzLl9w
cmV2aW91c1N0eWxlc01hcCk7CisgICAgICAgICAgICBsZXQgZXhpc3RpbmdTdHlsZXMgPSB0aGlz
Ll9wcmV2aW91c1N0eWxlc01hcC5nZXQobWFwS2V5KTsKICAgICAgICAgICAgIGlmIChleGlzdGlu
Z1N0eWxlcyAmJiAhc3R5bGUpIHsKICAgICAgICAgICAgICAgICBmb3IgKGxldCBleGlzdGluZ1N0
eWxlIG9mIGV4aXN0aW5nU3R5bGVzKSB7CiAgICAgICAgICAgICAgICAgICAgIGlmIChleGlzdGlu
Z1N0eWxlLm5vZGUgPT09IG5vZGUgJiYgZXhpc3RpbmdTdHlsZS5pbmhlcml0ZWQgPT09IGluaGVy
aXRlZCkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
Vmlld3MvU3ByZWFkc2hlZXRSdWxlc1N0eWxlRGV0YWlsc1BhbmVsLmpzIGIvU291cmNlL1dlYklu
c3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU3ByZWFkc2hlZXRSdWxlc1N0eWxlRGV0YWls
c1BhbmVsLmpzCmluZGV4IGNiMmJiMzUwNmE3Yy4uNGRiOGFhNjZiMTg4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9TcHJlYWRzaGVldFJ1bGVz
U3R5bGVEZXRhaWxzUGFuZWwuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRl
cmZhY2UvVmlld3MvU3ByZWFkc2hlZXRSdWxlc1N0eWxlRGV0YWlsc1BhbmVsLmpzCkBAIC00Miw2
ICs0Miw5IEBAIFdJLlNwcmVhZHNoZWV0UnVsZXNTdHlsZURldGFpbHNQYW5lbCA9IGNsYXNzIFNw
cmVhZHNoZWV0UnVsZXNTdHlsZURldGFpbHNQYW5lbCBlCiAgICAgICAgIHRoaXMuX3Byb3BlcnR5
VG9TZWxlY3RBbmRIaWdobGlnaHQgPSBudWxsOwogICAgICAgICB0aGlzLl9maWx0ZXJUZXh0ID0g
bnVsbDsKICAgICAgICAgdGhpcy5fc2hvdWxkUmVmcmVzaFN1YnZpZXdzID0gZmFsc2U7CisgICAg
ICAgIHRoaXMuX3JlbmRlcmVkU3R5bGVJZHMgPSBudWxsOworICAgICAgICB0aGlzLl9zZWxlY3Rl
ZE5vZGVJZCA9IG51bGw7CisgICAgICAgIHRoaXMuX3N1cHByZXNzTGF5b3V0QWZ0ZXJTZWxlY3Rv
ckNoYW5nZSA9IGZhbHNlOwogCiAgICAgICAgIHRoaXMuX2VtcHR5RmlsdGVyUmVzdWx0c0VsZW1l
bnQgPSBXSS5jcmVhdGVNZXNzYWdlVGV4dFZpZXcoV0kuVUlTdHJpbmcoIk5vIFJlc3VsdHMgRm91
bmQiKSk7CiAgICAgfQpAQCAtMjE4LDI2ICsyMjEsMTcgQEAgV0kuU3ByZWFkc2hlZXRSdWxlc1N0
eWxlRGV0YWlsc1BhbmVsID0gY2xhc3MgU3ByZWFkc2hlZXRSdWxlc1N0eWxlRGV0YWlsc1BhbmVs
IGUKICAgICAgICAgICAgIHJldHVybjsKIAogICAgICAgICB0aGlzLl9zaG91bGRSZWZyZXNoU3Vi
dmlld3MgPSBmYWxzZTsKKyAgICAgICAgbGV0IHVuaXF1ZU9yZGVyZWRTdHlsZXMgPSB0aGlzLm5v
ZGVTdHlsZXMudW5pcXVlT3JkZXJlZFN0eWxlczsKIAotICAgICAgICBsZXQgb2xkU2VjdGlvbnMg
PSB0aGlzLl9zZWN0aW9ucy5zbGljZSgpOwotICAgICAgICBsZXQgcHJlc2VydmVkU2VjdGlvbnMg
PSBvbGRTZWN0aW9ucy5maWx0ZXIoKHNlY3Rpb24pID0+IHsKLSAgICAgICAgICAgIGlmIChzZWN0
aW9uW1NwcmVhZHNoZWV0UnVsZXNTdHlsZURldGFpbHNQYW5lbC5TZWN0aW9uU2hvd2luZ0Zvck5v
ZGVTeW1ib2xdICE9PSB0aGlzLm5vZGVTdHlsZXMubm9kZSkgewotICAgICAgICAgICAgICAgIHNl
Y3Rpb25bU3ByZWFkc2hlZXRSdWxlc1N0eWxlRGV0YWlsc1BhbmVsLlNlY3Rpb25TaG93aW5nRm9y
Tm9kZVN5bWJvbF0gPSBudWxsOwotICAgICAgICAgICAgICAgIHNlY3Rpb25bU3ByZWFkc2hlZXRS
dWxlc1N0eWxlRGV0YWlsc1BhbmVsLlNlY3Rpb25JbmRleFN5bWJvbF0gPSAtMTsKLSAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgIHJldHVybiBzZWN0aW9uW1NwcmVhZHNoZWV0UnVsZXNTdHlsZURl
dGFpbHNQYW5lbC5TZWN0aW9uU2hvd2luZ0Zvck5vZGVTeW1ib2xdOwotICAgICAgICB9KTsKKyAg
ICAgICAgaWYgKHRoaXMuX3N1cHByZXNzTGF5b3V0QWZ0ZXJTZWxlY3RvckNoYW5nZSkgeworICAg
ICAgICAgICAgdGhpcy5fc3VwcHJlc3NMYXlvdXRBZnRlclNlbGVjdG9yQ2hhbmdlID0gZmFsc2U7
CisgICAgICAgICAgICBpZiAodGhpcy5fc2VsZWN0ZWROb2RlSWQgJiYgdGhpcy5fc2VsZWN0ZWRO
b2RlSWQgPT09IHRoaXMubm9kZVN0eWxlcy5ub2RlLmlkKQorICAgICAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgfQogCi0gICAgICAgIGlmIChwcmVzZXJ2ZWRTZWN0aW9ucy5sZW5ndGgpIHsK
LSAgICAgICAgICAgIGZvciAobGV0IHNlY3Rpb24gb2Ygb2xkU2VjdGlvbnMpIHsKLSAgICAgICAg
ICAgICAgICBpZiAoIXByZXNlcnZlZFNlY3Rpb25zLmluY2x1ZGVzKHNlY3Rpb24pKQotICAgICAg
ICAgICAgICAgICAgICB0aGlzLnJlbW92ZVN1YnZpZXcoc2VjdGlvbik7Ci0gICAgICAgICAgICB9
Ci0gICAgICAgICAgICBmb3IgKGxldCBoZWFkZXIgb2YgdGhpcy5faGVhZGVyTWFwLnZhbHVlcygp
KQotICAgICAgICAgICAgICAgIGhlYWRlci5yZW1vdmUoKTsKLSAgICAgICAgfSBlbHNlCi0gICAg
ICAgICAgICB0aGlzLnJlbW92ZUFsbFN1YnZpZXdzKCk7CisgICAgICAgIHRoaXMucmVtb3ZlQWxs
U3Vidmlld3MoKTsKIAorICAgICAgICB0aGlzLl9zZWxlY3RlZE5vZGVJZCA9IHRoaXMubm9kZVN0
eWxlcy5ub2RlLmlkOwogICAgICAgICBsZXQgcHJldmlvdXNTdHlsZSA9IG51bGw7CiAgICAgICAg
IGxldCBjdXJyZW50SGVhZGVyID0gbnVsbDsKICAgICAgICAgdGhpcy5faGVhZGVyTWFwLmNsZWFy
KCk7CkBAIC0yNjMsMTMgKzI1Nyw3IEBAIFdJLlNwcmVhZHNoZWV0UnVsZXNTdHlsZURldGFpbHNQ
YW5lbCA9IGNsYXNzIFNwcmVhZHNoZWV0UnVsZXNTdHlsZURldGFpbHNQYW5lbCBlCiAgICAgICAg
ICAgICBpZiAoc2VjdGlvbi5zdHlsZS5pbmhlcml0ZWQgJiYgKCFwcmV2aW91c1N0eWxlIHx8IHBy
ZXZpb3VzU3R5bGUubm9kZSAhPT0gc2VjdGlvbi5zdHlsZS5ub2RlKSkKICAgICAgICAgICAgICAg
ICBhZGRIZWFkZXIoV0kuVUlTdHJpbmcoIkluaGVyaXRlZCBGcm9tIiwgIkEgc2VjdGlvbiBvZiBD
U1MgcnVsZXMgbWF0Y2hpbmcgYW4gYW5jZXN0b3IgRE9NIG5vZGUiKSwgc2VjdGlvbi5zdHlsZS5u
b2RlKTsKIAotICAgICAgICAgICAgaWYgKCFzZWN0aW9uLmlzRGVzY2VuZGFudE9mKHRoaXMpKSB7
Ci0gICAgICAgICAgICAgICAgbGV0IHJlZmVyZW5jZVZpZXcgPSB0aGlzLnN1YnZpZXdzW3RoaXMu
X3NlY3Rpb25zLmxlbmd0aF07Ci0gICAgICAgICAgICAgICAgaWYgKCFyZWZlcmVuY2VWaWV3IHx8
IHJlZmVyZW5jZVZpZXdbU3ByZWFkc2hlZXRSdWxlc1N0eWxlRGV0YWlsc1BhbmVsLlNlY3Rpb25J
bmRleFN5bWJvbF0gPT09IHRoaXMuX3NlY3Rpb25zLmxlbmd0aCkKLSAgICAgICAgICAgICAgICAg
ICAgdGhpcy5hZGRTdWJ2aWV3KHNlY3Rpb24pOwotICAgICAgICAgICAgICAgIGVsc2UKLSAgICAg
ICAgICAgICAgICAgICAgdGhpcy5pbnNlcnRTdWJ2aWV3QmVmb3JlKHNlY3Rpb24sIHJlZmVyZW5j
ZVZpZXcpOwotICAgICAgICAgICAgfQorICAgICAgICAgICAgdGhpcy5hZGRTdWJ2aWV3KHNlY3Rp
b24pOwogCiAgICAgICAgICAgICB0aGlzLl9zZWN0aW9ucy5wdXNoKHNlY3Rpb24pOwogICAgICAg
ICAgICAgc2VjdGlvbi5uZWVkc0xheW91dCgpOwpAQCAtMjkzLDEwICsyODEsNiBAQCBXSS5TcHJl
YWRzaGVldFJ1bGVzU3R5bGVEZXRhaWxzUGFuZWwgPSBjbGFzcyBTcHJlYWRzaGVldFJ1bGVzU3R5
bGVEZXRhaWxzUGFuZWwgZQogICAgICAgICAgICAgICAgIHNlY3Rpb24uc3RhcnRFZGl0aW5nUnVs
ZVNlbGVjdG9yKCk7CiAKICAgICAgICAgICAgIGFkZFNlY3Rpb24oc2VjdGlvbik7Ci0KLSAgICAg
ICAgICAgIGxldCBwcmVzZXJ2ZWRTZWN0aW9uID0gcHJlc2VydmVkU2VjdGlvbnMuZmluZCgoc2Vj
dGlvblRvUHJlc2VydmUpID0+IHNlY3Rpb25Ub1ByZXNlcnZlW1NwcmVhZHNoZWV0UnVsZXNTdHls
ZURldGFpbHNQYW5lbC5TZWN0aW9uSW5kZXhTeW1ib2xdID09PSB0aGlzLl9zZWN0aW9ucy5sZW5n
dGggLSAxKTsKLSAgICAgICAgICAgIGlmIChwcmVzZXJ2ZWRTZWN0aW9uKQotICAgICAgICAgICAg
ICAgIGFkZFNlY3Rpb24ocHJlc2VydmVkU2VjdGlvbik7CiAgICAgICAgIH07CiAKICAgICAgICAg
bGV0IGFkZGVkUHNldWRvU3R5bGVzID0gZmFsc2U7CkBAIC0zMzEsNyArMzE1LDcgQEAgV0kuU3By
ZWFkc2hlZXRSdWxlc1N0eWxlRGV0YWlsc1BhbmVsID0gY2xhc3MgU3ByZWFkc2hlZXRSdWxlc1N0
eWxlRGV0YWlsc1BhbmVsIGUKICAgICAgICAgICAgIGFkZGVkUHNldWRvU3R5bGVzID0gdHJ1ZTsK
ICAgICAgICAgfTsKIAotICAgICAgICBmb3IgKGxldCBzdHlsZSBvZiB0aGlzLm5vZGVTdHlsZXMu
dW5pcXVlT3JkZXJlZFN0eWxlcykgeworICAgICAgICBmb3IgKGxldCBzdHlsZSBvZiB1bmlxdWVP
cmRlcmVkU3R5bGVzKSB7CiAgICAgICAgICAgICBpZiAoc3R5bGUuaW5oZXJpdGVkKQogICAgICAg
ICAgICAgICAgIGFkZFBzZXVkb1N0eWxlcygpOwogICAgICAgICAgICAgY3JlYXRlU2VjdGlvbihz
dHlsZSk7CkBAIC0zNzksMTMgKzM2Myw4IEBAIFdJLlNwcmVhZHNoZWV0UnVsZXNTdHlsZURldGFp
bHNQYW5lbCA9IGNsYXNzIFNwcmVhZHNoZWV0UnVsZXNTdHlsZURldGFpbHNQYW5lbCBlCiAKICAg
ICBfaGFuZGxlU2VjdGlvblNlbGVjdG9yV2lsbENoYW5nZShldmVudCkKICAgICB7Ci0gICAgICAg
IGxldCBzZWN0aW9uID0gZXZlbnQudGFyZ2V0OwotICAgICAgICBzZWN0aW9uW1NwcmVhZHNoZWV0
UnVsZXNTdHlsZURldGFpbHNQYW5lbC5TZWN0aW9uU2hvd2luZ0Zvck5vZGVTeW1ib2xdID0gdGhp
cy5ub2RlU3R5bGVzLm5vZGU7Ci0gICAgICAgIHNlY3Rpb25bU3ByZWFkc2hlZXRSdWxlc1N0eWxl
RGV0YWlsc1BhbmVsLlNlY3Rpb25JbmRleFN5bWJvbF0gPSB0aGlzLl9zZWN0aW9ucy5pbmRleE9m
KHNlY3Rpb24pOwotICAgICAgICBjb25zb2xlLmFzc2VydChzZWN0aW9uW1NwcmVhZHNoZWV0UnVs
ZXNTdHlsZURldGFpbHNQYW5lbC5TZWN0aW9uSW5kZXhTeW1ib2xdID49IDApOworICAgICAgICB0
aGlzLl9zdXBwcmVzc0xheW91dEFmdGVyU2VsZWN0b3JDaGFuZ2UgPSB0cnVlOwogICAgIH0KIH07
CiAKIFdJLlNwcmVhZHNoZWV0UnVsZXNTdHlsZURldGFpbHNQYW5lbC5TdHlsZVNlY3Rpb25TeW1i
b2wgPSBTeW1ib2woInN0eWxlLXNlY3Rpb24iKTsKLVdJLlNwcmVhZHNoZWV0UnVsZXNTdHlsZURl
dGFpbHNQYW5lbC5TZWN0aW9uU2hvd2luZ0Zvck5vZGVTeW1ib2wgPSBTeW1ib2woInN0eWxlLXNo
b3dpbmctZm9yLW5vZGUiKTsKLVdJLlNwcmVhZHNoZWV0UnVsZXNTdHlsZURldGFpbHNQYW5lbC5T
ZWN0aW9uSW5kZXhTeW1ib2wgPSBTeW1ib2woInN0eWxlLWluZGV4Iik7Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>407741</attachid>
            <date>2020-09-01 23:21:07 -0700</date>
            <delta_ts>2020-09-01 23:57:13 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>14480</size>
            <attacher name="Nikita Vasilyev">nvasilyev</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBhNjU0ZWJjMjFhOTQuLmNkNTU0NGUxYzI0ZSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBA
CisyMDIwLTA5LTAxICBOaWtpdGEgVmFzaWx5ZXYgIDxudmFzaWx5ZXZAYXBwbGUuY29tPgorCisg
ICAgICAgIFJFR1JFU1NJT04ocjI0MzI2NCk6IFdlYiBJbnNwZWN0b3I6IFN0eWxlIHBhbmUgZG9l
c24ndCB1cGRhdGUgYWZ0ZXIgdG9nZ2xpbmcgQ1NTIGNsYXNzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDIwNjUKKyAgICAgICAgPHJkYXI6Ly9wcm9i
bGVtLzU1MTQ5MTQxPgorCisgICAgICAgIFJldmlld2VkIGJ5IEJyaWFuIEJ1cmcuCisKKyAgICAg
ICAgQWRkZWQgYSB0ZXN0IHRvIHZlcmlmeSB0aGF0IFdJLkRPTU5vZGVTdHlsZXMuRXZlbnQuUmVm
cmVzaGVkIGZpcmVzIHdpdGggYXBwcm9wcmlhdGUKKyAgICAgICAgYHNpZ25pZmljYW50Q2hhbmdl
YCBmbGFnLgorCisgICAgICAgICogaW5zcGVjdG9yL2Nzcy9ub2RlLXN0eWxlcy1yZWZyZXNoZWQt
ZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBpbnNwZWN0b3IvY3NzL25vZGUtc3R5bGVz
LXJlZnJlc2hlZC5odG1sOiBBZGRlZC4KKwogMjAyMC0wOC0zMSAgSGVjdG9yIExvcGV6ICA8aGVj
dG9yX2lfbG9wZXpAYXBwbGUuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQsIHJldmVydGluZyBy
MjY2MzUwLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2Nzcy9ub2RlLXN0eWxl
cy1yZWZyZXNoZWQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2Nzcy9ub2Rl
LXN0eWxlcy1yZWZyZXNoZWQtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAwMDAwMC4uODY1NjJkMjg0OTdkCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvaW5zcGVjdG9yL2Nzcy9ub2RlLXN0eWxlcy1yZWZyZXNoZWQtZXhwZWN0ZWQudHh0CkBAIC0w
LDAgKzEsMTYgQEAKK1Rlc3RpbmcgdGhhdCBXSS5ET01Ob2RlU3R5bGVzLkV2ZW50LlJlZnJlc2hl
ZCBldmVudCBkaXNwYXRjaGVzIHdpdGggY29ycmVjdCBzaWduaWZpY2FudENoYW5nZSBmbGFnLgor
CisKKz09IFJ1bm5pbmcgdGVzdCBzdWl0ZTogTm9kZVN0eWxlc1JlZnJlc2hlZAorLS0gUnVubmlu
ZyB0ZXN0IGNhc2U6IE5vZGVTdHlsZXNSZWZyZXNoZWQuQ2xhc3NBZGRlZAorUEFTUzogQWRkaW5n
ICcuYmF6JyBjbGFzcyBzaG91bGQgY2F1c2UgYSBzaWduaWZpY2FudCBjaGFuZ2UuCisKKy0tIFJ1
bm5pbmcgdGVzdCBjYXNlOiBOb2RlU3R5bGVzUmVmcmVzaGVkLkNsYXNzUmVtb3ZlZAorUEFTUzog
UmVtb3ZpbmcgJy5mb28nIGNsYXNzIHNob3VsZCBjYXVzZSBhIHNpZ25pZmljYW50IGNoYW5nZS4K
KworLS0gUnVubmluZyB0ZXN0IGNhc2U6IE5vZGVTdHlsZXNSZWZyZXNoZWQuSXJyZWxldmFudENs
YXNzQWRkZWQKK1BBU1M6IEFkZGluZyAnLmJsYWgnIGNsYXNzIHNob3VsZG4ndCBjYXVzZSBhIHNp
Z25pZmljYW50IGNoYW5nZS4KKworLS0gUnVubmluZyB0ZXN0IGNhc2U6IE5vZGVTdHlsZXNSZWZy
ZXNoZWQuSXJyZWxldmFudENsYXNzUmVtb3ZlZAorUEFTUzogUmVtb3ZpbmcgJy5ibGFoJyBjbGFz
cyBzaG91bGRuJ3QgY2F1c2UgYSBzaWduaWZpY2FudCBjaGFuZ2UuCisKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2luc3BlY3Rvci9jc3Mvbm9kZS1zdHlsZXMtcmVmcmVzaGVkLmh0bWwgYi9MYXlv
dXRUZXN0cy9pbnNwZWN0b3IvY3NzL25vZGUtc3R5bGVzLXJlZnJlc2hlZC5odG1sCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uNWY3ODRhY2ViNzRkCi0tLSAvZGV2L251
bGwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2Nzcy9ub2RlLXN0eWxlcy1yZWZyZXNoZWQu
aHRtbApAQCAtMCwwICsxLDg0IEBACis8aHRtbD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4u
L2h0dHAvdGVzdHMvaW5zcGVjdG9yL3Jlc291cmNlcy9pbnNwZWN0b3ItdGVzdC5qcyI+PC9zY3Jp
cHQ+Cis8c2NyaXB0PgorZnVuY3Rpb24gdGVzdCgpCit7CisgICAgbGV0IG5vZGVTdHlsZXMgPSBu
dWxsOworICAgIGxldCBzdWl0ZSA9IEluc3BlY3RvclRlc3QuY3JlYXRlQXN5bmNTdWl0ZSgiTm9k
ZVN0eWxlc1JlZnJlc2hlZCIpOworCisgICAgc3VpdGUuYWRkVGVzdENhc2UoeworICAgICAgICBu
YW1lOiAiTm9kZVN0eWxlc1JlZnJlc2hlZC5DbGFzc0FkZGVkIiwKKyAgICAgICAgYXN5bmMgdGVz
dCgpIHsKKyAgICAgICAgICAgIG5vZGVTdHlsZXMuc2luZ2xlRmlyZUV2ZW50TGlzdGVuZXIoV0ku
RE9NTm9kZVN0eWxlcy5FdmVudC5SZWZyZXNoZWQsIChldmVudCkgPT4geworICAgICAgICAgICAg
ICAgIEluc3BlY3RvclRlc3QuZXhwZWN0VHJ1ZShldmVudC5kYXRhLnNpZ25pZmljYW50Q2hhbmdl
LCBgQWRkaW5nICcuYmF6JyBjbGFzcyBzaG91bGQgY2F1c2UgYSBzaWduaWZpY2FudCBjaGFuZ2Uu
YCk7CisgICAgICAgICAgICB9KTsKKworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5ldmFsdWF0
ZUluUGFnZShgZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QuYWRkKCJiYXoiKWApOworICAgICAgICAg
ICAgYXdhaXQgbm9kZVN0eWxlcy5yZWZyZXNoKCk7CisgICAgICAgIH0KKyAgICB9KTsKKworICAg
IHN1aXRlLmFkZFRlc3RDYXNlKHsKKyAgICAgICAgbmFtZTogIk5vZGVTdHlsZXNSZWZyZXNoZWQu
Q2xhc3NSZW1vdmVkIiwKKyAgICAgICAgYXN5bmMgdGVzdCgpIHsKKyAgICAgICAgICAgIG5vZGVT
dHlsZXMuc2luZ2xlRmlyZUV2ZW50TGlzdGVuZXIoV0kuRE9NTm9kZVN0eWxlcy5FdmVudC5SZWZy
ZXNoZWQsIChldmVudCkgPT4geworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXhwZWN0
VHJ1ZShldmVudC5kYXRhLnNpZ25pZmljYW50Q2hhbmdlLCBgUmVtb3ZpbmcgJy5mb28nIGNsYXNz
IHNob3VsZCBjYXVzZSBhIHNpZ25pZmljYW50IGNoYW5nZS5gKTsKKyAgICAgICAgICAgIH0pOwor
CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV2YWx1YXRlSW5QYWdlKGBkb2N1bWVudC5ib2R5
LmNsYXNzTGlzdC5yZW1vdmUoImZvbyIpYCk7CisgICAgICAgICAgICBhd2FpdCBub2RlU3R5bGVz
LnJlZnJlc2goKTsKKyAgICAgICAgfQorICAgIH0pOworCisgICAgc3VpdGUuYWRkVGVzdENhc2Uo
eworICAgICAgICBuYW1lOiAiTm9kZVN0eWxlc1JlZnJlc2hlZC5JcnJlbGV2YW50Q2xhc3NBZGRl
ZCIsCisgICAgICAgIGFzeW5jIHRlc3QoKSB7CisgICAgICAgICAgICBub2RlU3R5bGVzLnNpbmds
ZUZpcmVFdmVudExpc3RlbmVyKFdJLkRPTU5vZGVTdHlsZXMuRXZlbnQuUmVmcmVzaGVkLCAoZXZl
bnQpID0+IHsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmV4cGVjdEZhbHNlKGV2ZW50
LmRhdGEuc2lnbmlmaWNhbnRDaGFuZ2UsIGBBZGRpbmcgJy5ibGFoJyBjbGFzcyBzaG91bGRuJ3Qg
Y2F1c2UgYSBzaWduaWZpY2FudCBjaGFuZ2UuYCk7CisgICAgICAgICAgICB9KTsKKworICAgICAg
ICAgICAgSW5zcGVjdG9yVGVzdC5ldmFsdWF0ZUluUGFnZShgZG9jdW1lbnQuYm9keS5jbGFzc0xp
c3QuYWRkKCJibGFoIilgKTsKKyAgICAgICAgICAgIGF3YWl0IG5vZGVTdHlsZXMucmVmcmVzaCgp
OworICAgICAgICB9CisgICAgfSk7CisKKyAgICBzdWl0ZS5hZGRUZXN0Q2FzZSh7CisgICAgICAg
IG5hbWU6ICJOb2RlU3R5bGVzUmVmcmVzaGVkLklycmVsZXZhbnRDbGFzc1JlbW92ZWQiLAorICAg
ICAgICBhc3luYyB0ZXN0KCkgeworICAgICAgICAgICAgbm9kZVN0eWxlcy5zaW5nbGVGaXJlRXZl
bnRMaXN0ZW5lcihXSS5ET01Ob2RlU3R5bGVzLkV2ZW50LlJlZnJlc2hlZCwgKGV2ZW50KSA9PiB7
CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5leHBlY3RGYWxzZShldmVudC5kYXRhLnNp
Z25pZmljYW50Q2hhbmdlLCBgUmVtb3ZpbmcgJy5ibGFoJyBjbGFzcyBzaG91bGRuJ3QgY2F1c2Ug
YSBzaWduaWZpY2FudCBjaGFuZ2UuYCk7CisgICAgICAgICAgICB9KTsKKworICAgICAgICAgICAg
SW5zcGVjdG9yVGVzdC5ldmFsdWF0ZUluUGFnZShgZG9jdW1lbnQuYm9keS5jbGFzc0xpc3QucmVt
b3ZlKCJibGFoIilgKTsKKyAgICAgICAgICAgIGF3YWl0IG5vZGVTdHlsZXMucmVmcmVzaCgpOwor
ICAgICAgICB9CisgICAgfSk7CisKKyAgICBXSS5kb21NYW5hZ2VyLnJlcXVlc3REb2N1bWVudCgo
ZG9jdW1lbnROb2RlKSA9PiB7CisgICAgICAgIGRvY3VtZW50Tm9kZS5xdWVyeVNlbGVjdG9yKCJi
b2R5IiwgKGNvbnRlbnROb2RlSWQpID0+IHsKKyAgICAgICAgICAgIGlmIChjb250ZW50Tm9kZUlk
KSB7CisgICAgICAgICAgICAgICAgbGV0IGRvbU5vZGUgPSBXSS5kb21NYW5hZ2VyLm5vZGVGb3JJ
ZChjb250ZW50Tm9kZUlkKTsKKyAgICAgICAgICAgICAgICBub2RlU3R5bGVzID0gV0kuY3NzTWFu
YWdlci5zdHlsZXNGb3JOb2RlKGRvbU5vZGUpOworCisgICAgICAgICAgICAgICAgbm9kZVN0eWxl
cy5yZWZyZXNoSWZOZWVkZWQoKS50aGVuKGZ1bmN0aW9uKCkgeworICAgICAgICAgICAgICAgICAg
ICBzdWl0ZS5ydW5UZXN0Q2FzZXNBbmRGaW5pc2goKTsKKyAgICAgICAgICAgICAgICB9KTsKKyAg
ICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5mYWlsKCJE
T00gbm9kZSBub3QgZm91bmQuIik7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5jb21w
bGV0ZVRlc3QoKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSk7CisgICAgfSk7Cit9Cis8L3Nj
cmlwdD4KKzwvaGVhZD4KKzxib2R5IG9uTG9hZD0icnVuVGVzdCgpIiBjbGFzcz0iZm9vIGJhciI+
Cis8cD5UZXN0aW5nIHRoYXQgV0kuRE9NTm9kZVN0eWxlcy5FdmVudC5SZWZyZXNoZWQgZXZlbnQg
ZGlzcGF0Y2hlcyB3aXRoIGNvcnJlY3Qgc2lnbmlmaWNhbnRDaGFuZ2UgZmxhZy48L3A+Cis8c3R5
bGU+CisuZm9vIHtmb250LXNpemU6IDEycHg7fQorLmJhciB7YmFja2dyb3VuZDogbGlnaHR5ZWxs
b3c7fQorLmJheiB7Y29sb3I6IGRhcmtncmVlbjt9Cis8L3N0eWxlPgorPC9ib2R5PgorPC9odG1s
PgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZyBiL1NvdXJjZS9X
ZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKaW5kZXggODNmY2ExNzAwMDQ5Li43ZDg4OGZiNmUzYmIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cKKysrIGIvU291cmNl
L1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMwIEBACisyMDIwLTA5LTAxICBO
aWtpdGEgVmFzaWx5ZXYgIDxudmFzaWx5ZXZAYXBwbGUuY29tPgorCisgICAgICAgIFJFR1JFU1NJ
T04ocjI0MzI2NCk6IFdlYiBJbnNwZWN0b3I6IFN0eWxlIHBhbmUgZG9lc24ndCB1cGRhdGUgYWZ0
ZXIgdG9nZ2xpbmcgQ1NTIGNsYXNzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0yMDIwNjUKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU1MTQ5MTQxPgor
CisgICAgICAgIFJldmlld2VkIGJ5IEJyaWFuIEJ1cmcuCisKKyAgICAgICAgKiBVc2VySW50ZXJm
YWNlL01vZGVscy9ET01Ob2RlU3R5bGVzLmpzOgorICAgICAgICAoV0kuRE9NTm9kZVN0eWxlcy5w
cm90b3R5cGUucmVmcmVzaC5mZXRjaGVkTWF0Y2hlZFN0eWxlcyk6CisgICAgICAgIChXSS5ET01O
b2RlU3R5bGVzLnByb3RvdHlwZS5yZWZyZXNoLmZldGNoZWRDb21wdXRlZFN0eWxlKToKKyAgICAg
ICAgKFdJLkRPTU5vZGVTdHlsZXMucHJvdG90eXBlLnJlZnJlc2gpOgorICAgICAgICAoV0kuRE9N
Tm9kZVN0eWxlcy5wcm90b3R5cGUuX3BhcnNlU3R5bGVEZWNsYXJhdGlvblBheWxvYWQpOgorICAg
ICAgICByMjQzMjY0IGludHJvZHVjZWQgdGhpcyBidWcgYnkgbmV2ZXIgY2xlYXJpbmcgYF9zdHls
ZU1hcGAgbWFraW5nIGl0IGltcG9zc2libGUgdG8gZGlmZiBvbGQKKyAgICAgICAgYW5kIG5ldyBz
dHlsZSBkZWNsYXJhdGlvbnMuIENyZWF0ZSBhbmQgY2xlYXIgYF9zdHlsZU1hcGAgYXQgdGhlIHNh
bWUgcGxhY2UgYXMgaXQgd2FzIGJlZm9yZSByMjQzMjY0LgorCisgICAgICAgICogVXNlckludGVy
ZmFjZS9WaWV3cy9TcHJlYWRzaGVldFJ1bGVzU3R5bGVEZXRhaWxzUGFuZWwuanM6CisgICAgICAg
IChXSS5TcHJlYWRzaGVldFJ1bGVzU3R5bGVEZXRhaWxzUGFuZWwpOgorICAgICAgICAoV0kuU3By
ZWFkc2hlZXRSdWxlc1N0eWxlRGV0YWlsc1BhbmVsLnByb3RvdHlwZS5sYXlvdXQpOgorICAgICAg
ICBMYXlvdXQgbm93IGFsd2F5cyByZS1sYXlvdXRzIGV2ZXJ5dGhpbmcuIFJ1bGVzIHdpdGggbW9k
aWZpZWQgc2VsZWN0b3JzIGFyZSBub3cgcHJlc2VydmVkIGJ5CisgICAgICAgIGV4aXRpbmcgbGF5
b3V0IGVhcmx5LgorCisgICAgICAgIChXSS5TcHJlYWRzaGVldFJ1bGVzU3R5bGVEZXRhaWxzUGFu
ZWwucHJvdG90eXBlLl9oYW5kbGVTZWN0aW9uU2VsZWN0b3JXaWxsQ2hhbmdlKToKKyAgICAgICAg
UmVtb3ZlIGxvZ2ljIHRoYXQgdHJpZWQgdG8gcHJlc2VydmUgaW5kZXhlcyBvZiBDU1MgcnVsZXMg
d2l0aCBtb2RpZmllZCBzZWxlY3RvcnMgdGhhdAorICAgICAgICBkb24ndCBtYXRjaCAoU2VjdGlv
bkluZGV4U3ltYm9sIGFuZCBldmVyeXRoaW5nIHJlbGF0ZWQgdG8gaXQpLiBJbnN0ZWFkLCBhdm9p
ZCByZS1sYXlvdXQgYWZ0ZXIKKyAgICAgICAgZWRpdGluZyBhIHNlbGVjdG9yLgorCiAyMDIwLTA4
LTI4ICBEZXZpbiBSb3Vzc28gIDxkcm91c3NvQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWIgSW5z
cGVjdG9yOiBBdWRpdDogc2hvdWxkIGJlIGFibGUgdG8gY3JlYXRlL2VkaXQgaW1wb3J0ZWQgYXVk
aXRzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2Rl
bHMvRE9NTm9kZVN0eWxlcy5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNl
L01vZGVscy9ET01Ob2RlU3R5bGVzLmpzCmluZGV4IGJmZmI0MTMwNjUyNC4uNjc1NzE3NjI4MGIy
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMv
RE9NTm9kZVN0eWxlcy5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9Nb2RlbHMvRE9NTm9kZVN0eWxlcy5qcwpAQCAtMTUwLDggKzE1MCw2IEBAIFdJLkRPTU5vZGVT
dHlsZXMgPSBjbGFzcyBET01Ob2RlU3R5bGVzIGV4dGVuZHMgV0kuT2JqZWN0CiAKICAgICAgICAg
dGhpcy5fbmVlZHNSZWZyZXNoID0gZmFsc2U7CiAKLSAgICAgICAgbGV0IHByZXZpb3VzU3R5bGVz
TWFwID0gdGhpcy5fc3R5bGVzTWFwLmNvcHkoKTsKLQogICAgICAgICBsZXQgZmV0Y2hlZE1hdGNo
ZWRTdHlsZXNQcm9taXNlID0gbmV3IFdJLldyYXBwZWRQcm9taXNlOwogICAgICAgICBsZXQgZmV0
Y2hlZElubGluZVN0eWxlc1Byb21pc2UgPSBuZXcgV0kuV3JhcHBlZFByb21pc2U7CiAgICAgICAg
IGxldCBmZXRjaGVkQ29tcHV0ZWRTdHlsZXNQcm9taXNlID0gbmV3IFdJLldyYXBwZWRQcm9taXNl
OwpAQCAtMTg5LDYgKzE4Nyw5IEBAIFdJLkRPTU5vZGVTdHlsZXMgPSBjbGFzcyBET01Ob2RlU3R5
bGVzIGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgICAgICAgICBwc2V1ZG9FbGVtZW50UnVsZXNQYXls
b2FkID0gcHNldWRvRWxlbWVudFJ1bGVzUGF5bG9hZCB8fCBbXTsKICAgICAgICAgICAgIGluaGVy
aXRlZFJ1bGVzUGF5bG9hZCA9IGluaGVyaXRlZFJ1bGVzUGF5bG9hZCB8fCBbXTsKIAorICAgICAg
ICAgICAgdGhpcy5fcHJldmlvdXNTdHlsZXNNYXAgPSB0aGlzLl9zdHlsZXNNYXA7CisgICAgICAg
ICAgICB0aGlzLl9zdHlsZXNNYXAgPSBuZXcgTXVsdGltYXA7CisKICAgICAgICAgICAgIHRoaXMu
X21hdGNoZWRSdWxlcyA9IHBhcnNlUnVsZU1hdGNoQXJyYXlQYXlsb2FkKG1hdGNoZWRSdWxlc1Bh
eWxvYWQsIHRoaXMuX25vZGUpOwogCiAgICAgICAgICAgICB0aGlzLl9wc2V1ZG9FbGVtZW50cy5j
bGVhcigpOwpAQCAtMjUwLDcgKzI1MSw4IEBAIFdJLkRPTU5vZGVTdHlsZXMgPSBjbGFzcyBET01O
b2RlU3R5bGVzIGV4dGVuZHMgV0kuT2JqZWN0CiAKICAgICAgICAgICAgIGxldCBzaWduaWZpY2Fu
dENoYW5nZSA9IGZhbHNlOwogICAgICAgICAgICAgZm9yIChsZXQgW2tleSwgc3R5bGVzXSBvZiB0
aGlzLl9zdHlsZXNNYXAuc2V0cygpKSB7Ci0gICAgICAgICAgICAgICAgbGV0IHByZXZpb3VzU3R5
bGVzID0gcHJldmlvdXNTdHlsZXNNYXAuZ2V0KGtleSk7CisgICAgICAgICAgICAgICAgLy8gQ2hl
Y2sgaWYgdGhlIHNhbWUga2V5IGV4aXN0cyBpbiB0aGUgcHJldmlvdXMgbWFwIGFuZCBoYXMgdGhl
IHNhbWUgc3R5bGUgb2JqZWN0cy4KKyAgICAgICAgICAgICAgICBsZXQgcHJldmlvdXNTdHlsZXMg
PSB0aGlzLl9wcmV2aW91c1N0eWxlc01hcC5nZXQoa2V5KTsKICAgICAgICAgICAgICAgICBpZiAo
cHJldmlvdXNTdHlsZXMpIHsKICAgICAgICAgICAgICAgICAgICAgLy8gU29tZSBzdHlsZXMgaGF2
ZSBzZWxlY3RvcnMgc3VjaCB0aGF0IHRoZXkgd2lsbCBtYXRjaCB3aXRoIHRoZSBET00gbm9kZSB0
d2ljZSAoZm9yIGV4YW1wbGUgIjo6YmVmb3JlLCA6OmFmdGVyIikuCiAgICAgICAgICAgICAgICAg
ICAgIC8vIEluIHRoaXMgY2FzZSBhIHNlY29uZCBzdHlsZSBmb3IgYSBzZWNvbmQgbWF0Y2hpbmcg
bWF5IGJlIGdlbmVyYXRlZCBhbmQgYWRkZWQgd2hpY2ggd2lsbCBjYXVzZSB0aGUgc2hhbGxvd0Vx
dWFsCkBAIC0yODQsNyArMjg2LDcgQEAgV0kuRE9NTm9kZVN0eWxlcyA9IGNsYXNzIERPTU5vZGVT
dHlsZXMgZXh0ZW5kcyBXSS5PYmplY3QKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgaWYg
KCFzaWduaWZpY2FudENoYW5nZSkgewotICAgICAgICAgICAgICAgIGZvciAobGV0IFtrZXksIHBy
ZXZpb3VzU3R5bGVzXSBvZiBwcmV2aW91c1N0eWxlc01hcC5zZXRzKCkpIHsKKyAgICAgICAgICAg
ICAgICBmb3IgKGxldCBba2V5LCBwcmV2aW91c1N0eWxlc10gb2YgdGhpcy5fcHJldmlvdXNTdHls
ZXNNYXAuc2V0cygpKSB7CiAgICAgICAgICAgICAgICAgICAgIC8vIENoZWNrIGlmIHRoZSBzYW1l
IGtleSBleGlzdHMgaW4gY3VycmVudCBtYXAuIElmIGl0IGRvZXMgZXhpc3QgaXQgd2FzIGFscmVh
ZHkgY2hlY2tlZCBmb3IgZXF1YWxpdHkgYWJvdmUuCiAgICAgICAgICAgICAgICAgICAgIGlmICh0
aGlzLl9zdHlsZXNNYXAuaGFzKGtleSkpCiAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51
ZTsKQEAgLTMwMiw2ICszMDQsNyBAQCBXSS5ET01Ob2RlU3R5bGVzID0gY2xhc3MgRE9NTm9kZVN0
eWxlcyBleHRlbmRzIFdJLk9iamVjdAogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0K
IAorICAgICAgICAgICAgdGhpcy5fcHJldmlvdXNTdHlsZXNNYXAgPSBudWxsOwogICAgICAgICAg
ICAgdGhpcy5faW5jbHVkZVVzZXJBZ2VudFJ1bGVzT25OZXh0UmVmcmVzaCA9IGZhbHNlOwogCiAg
ICAgICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXSS5ET01Ob2RlU3R5bGVz
LkV2ZW50LlJlZnJlc2hlZCwge3NpZ25pZmljYW50Q2hhbmdlfSk7CkBAIC01NjEsNyArNTY0LDgg
QEAgV0kuRE9NTm9kZVN0eWxlcyA9IGNsYXNzIERPTU5vZGVTdHlsZXMgZXh0ZW5kcyBXSS5PYmpl
Y3QKICAgICAgICAgY29uc29sZS5hc3NlcnQobWF0Y2hlc05vZGUgfHwgc3R5bGUpOwogCiAgICAg
ICAgIGlmIChtYXRjaGVzTm9kZSkgewotICAgICAgICAgICAgbGV0IGV4aXN0aW5nU3R5bGVzID0g
dGhpcy5fc3R5bGVzTWFwLmdldChtYXBLZXkpOworICAgICAgICAgICAgY29uc29sZS5hc3NlcnQo
dGhpcy5fcHJldmlvdXNTdHlsZXNNYXApOworICAgICAgICAgICAgbGV0IGV4aXN0aW5nU3R5bGVz
ID0gdGhpcy5fcHJldmlvdXNTdHlsZXNNYXAuZ2V0KG1hcEtleSk7CiAgICAgICAgICAgICBpZiAo
ZXhpc3RpbmdTdHlsZXMgJiYgIXN0eWxlKSB7CiAgICAgICAgICAgICAgICAgZm9yIChsZXQgZXhp
c3RpbmdTdHlsZSBvZiBleGlzdGluZ1N0eWxlcykgewogICAgICAgICAgICAgICAgICAgICBpZiAo
ZXhpc3RpbmdTdHlsZS5ub2RlID09PSBub2RlICYmIGV4aXN0aW5nU3R5bGUuaW5oZXJpdGVkID09
PSBpbmhlcml0ZWQpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL1ZpZXdzL1NwcmVhZHNoZWV0UnVsZXNTdHlsZURldGFpbHNQYW5lbC5qcyBiL1NvdXJj
ZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdzL1NwcmVhZHNoZWV0UnVsZXNTdHls
ZURldGFpbHNQYW5lbC5qcwppbmRleCBjYjJiYjM1MDZhN2MuLjE5YWZkN2FlM2RmNyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvU3ByZWFkc2hl
ZXRSdWxlc1N0eWxlRGV0YWlsc1BhbmVsLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9V
c2VySW50ZXJmYWNlL1ZpZXdzL1NwcmVhZHNoZWV0UnVsZXNTdHlsZURldGFpbHNQYW5lbC5qcwpA
QCAtNDIsNiArNDIsNyBAQCBXSS5TcHJlYWRzaGVldFJ1bGVzU3R5bGVEZXRhaWxzUGFuZWwgPSBj
bGFzcyBTcHJlYWRzaGVldFJ1bGVzU3R5bGVEZXRhaWxzUGFuZWwgZQogICAgICAgICB0aGlzLl9w
cm9wZXJ0eVRvU2VsZWN0QW5kSGlnaGxpZ2h0ID0gbnVsbDsKICAgICAgICAgdGhpcy5fZmlsdGVy
VGV4dCA9IG51bGw7CiAgICAgICAgIHRoaXMuX3Nob3VsZFJlZnJlc2hTdWJ2aWV3cyA9IGZhbHNl
OworICAgICAgICB0aGlzLl9zdXBwcmVzc0xheW91dEFmdGVyU2VsZWN0b3JDaGFuZ2UgPSBmYWxz
ZTsKIAogICAgICAgICB0aGlzLl9lbXB0eUZpbHRlclJlc3VsdHNFbGVtZW50ID0gV0kuY3JlYXRl
TWVzc2FnZVRleHRWaWV3KFdJLlVJU3RyaW5nKCJObyBSZXN1bHRzIEZvdW5kIikpOwogICAgIH0K
QEAgLTIxOSwyNCArMjIwLDEyIEBAIFdJLlNwcmVhZHNoZWV0UnVsZXNTdHlsZURldGFpbHNQYW5l
bCA9IGNsYXNzIFNwcmVhZHNoZWV0UnVsZXNTdHlsZURldGFpbHNQYW5lbCBlCiAKICAgICAgICAg
dGhpcy5fc2hvdWxkUmVmcmVzaFN1YnZpZXdzID0gZmFsc2U7CiAKLSAgICAgICAgbGV0IG9sZFNl
Y3Rpb25zID0gdGhpcy5fc2VjdGlvbnMuc2xpY2UoKTsKLSAgICAgICAgbGV0IHByZXNlcnZlZFNl
Y3Rpb25zID0gb2xkU2VjdGlvbnMuZmlsdGVyKChzZWN0aW9uKSA9PiB7Ci0gICAgICAgICAgICBp
ZiAoc2VjdGlvbltTcHJlYWRzaGVldFJ1bGVzU3R5bGVEZXRhaWxzUGFuZWwuU2VjdGlvblNob3dp
bmdGb3JOb2RlU3ltYm9sXSAhPT0gdGhpcy5ub2RlU3R5bGVzLm5vZGUpIHsKLSAgICAgICAgICAg
ICAgICBzZWN0aW9uW1NwcmVhZHNoZWV0UnVsZXNTdHlsZURldGFpbHNQYW5lbC5TZWN0aW9uU2hv
d2luZ0Zvck5vZGVTeW1ib2xdID0gbnVsbDsKLSAgICAgICAgICAgICAgICBzZWN0aW9uW1NwcmVh
ZHNoZWV0UnVsZXNTdHlsZURldGFpbHNQYW5lbC5TZWN0aW9uSW5kZXhTeW1ib2xdID0gLTE7Ci0g
ICAgICAgICAgICB9Ci0gICAgICAgICAgICByZXR1cm4gc2VjdGlvbltTcHJlYWRzaGVldFJ1bGVz
U3R5bGVEZXRhaWxzUGFuZWwuU2VjdGlvblNob3dpbmdGb3JOb2RlU3ltYm9sXTsKLSAgICAgICAg
fSk7CisgICAgICAgIGlmICh0aGlzLl9zdXBwcmVzc0xheW91dEFmdGVyU2VsZWN0b3JDaGFuZ2Up
IHsKKyAgICAgICAgICAgIHRoaXMuX3N1cHByZXNzTGF5b3V0QWZ0ZXJTZWxlY3RvckNoYW5nZSA9
IGZhbHNlOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CiAKLSAgICAgICAgaWYgKHBy
ZXNlcnZlZFNlY3Rpb25zLmxlbmd0aCkgewotICAgICAgICAgICAgZm9yIChsZXQgc2VjdGlvbiBv
ZiBvbGRTZWN0aW9ucykgewotICAgICAgICAgICAgICAgIGlmICghcHJlc2VydmVkU2VjdGlvbnMu
aW5jbHVkZXMoc2VjdGlvbikpCi0gICAgICAgICAgICAgICAgICAgIHRoaXMucmVtb3ZlU3Vidmll
dyhzZWN0aW9uKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGZvciAobGV0IGhlYWRlciBv
ZiB0aGlzLl9oZWFkZXJNYXAudmFsdWVzKCkpCi0gICAgICAgICAgICAgICAgaGVhZGVyLnJlbW92
ZSgpOwotICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIHRoaXMucmVtb3ZlQWxsU3Vidmlld3Mo
KTsKKyAgICAgICAgdGhpcy5yZW1vdmVBbGxTdWJ2aWV3cygpOwogCiAgICAgICAgIGxldCBwcmV2
aW91c1N0eWxlID0gbnVsbDsKICAgICAgICAgbGV0IGN1cnJlbnRIZWFkZXIgPSBudWxsOwpAQCAt
MjYzLDEzICsyNTIsNyBAQCBXSS5TcHJlYWRzaGVldFJ1bGVzU3R5bGVEZXRhaWxzUGFuZWwgPSBj
bGFzcyBTcHJlYWRzaGVldFJ1bGVzU3R5bGVEZXRhaWxzUGFuZWwgZQogICAgICAgICAgICAgaWYg
KHNlY3Rpb24uc3R5bGUuaW5oZXJpdGVkICYmICghcHJldmlvdXNTdHlsZSB8fCBwcmV2aW91c1N0
eWxlLm5vZGUgIT09IHNlY3Rpb24uc3R5bGUubm9kZSkpCiAgICAgICAgICAgICAgICAgYWRkSGVh
ZGVyKFdJLlVJU3RyaW5nKCJJbmhlcml0ZWQgRnJvbSIsICJBIHNlY3Rpb24gb2YgQ1NTIHJ1bGVz
IG1hdGNoaW5nIGFuIGFuY2VzdG9yIERPTSBub2RlIiksIHNlY3Rpb24uc3R5bGUubm9kZSk7CiAK
LSAgICAgICAgICAgIGlmICghc2VjdGlvbi5pc0Rlc2NlbmRhbnRPZih0aGlzKSkgewotICAgICAg
ICAgICAgICAgIGxldCByZWZlcmVuY2VWaWV3ID0gdGhpcy5zdWJ2aWV3c1t0aGlzLl9zZWN0aW9u
cy5sZW5ndGhdOwotICAgICAgICAgICAgICAgIGlmICghcmVmZXJlbmNlVmlldyB8fCByZWZlcmVu
Y2VWaWV3W1NwcmVhZHNoZWV0UnVsZXNTdHlsZURldGFpbHNQYW5lbC5TZWN0aW9uSW5kZXhTeW1i
b2xdID09PSB0aGlzLl9zZWN0aW9ucy5sZW5ndGgpCi0gICAgICAgICAgICAgICAgICAgIHRoaXMu
YWRkU3VidmlldyhzZWN0aW9uKTsKLSAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAg
ICAgICAgIHRoaXMuaW5zZXJ0U3Vidmlld0JlZm9yZShzZWN0aW9uLCByZWZlcmVuY2VWaWV3KTsK
LSAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHRoaXMuYWRkU3VidmlldyhzZWN0aW9uKTsKIAog
ICAgICAgICAgICAgdGhpcy5fc2VjdGlvbnMucHVzaChzZWN0aW9uKTsKICAgICAgICAgICAgIHNl
Y3Rpb24ubmVlZHNMYXlvdXQoKTsKQEAgLTI5MywxMCArMjc2LDYgQEAgV0kuU3ByZWFkc2hlZXRS
dWxlc1N0eWxlRGV0YWlsc1BhbmVsID0gY2xhc3MgU3ByZWFkc2hlZXRSdWxlc1N0eWxlRGV0YWls
c1BhbmVsIGUKICAgICAgICAgICAgICAgICBzZWN0aW9uLnN0YXJ0RWRpdGluZ1J1bGVTZWxlY3Rv
cigpOwogCiAgICAgICAgICAgICBhZGRTZWN0aW9uKHNlY3Rpb24pOwotCi0gICAgICAgICAgICBs
ZXQgcHJlc2VydmVkU2VjdGlvbiA9IHByZXNlcnZlZFNlY3Rpb25zLmZpbmQoKHNlY3Rpb25Ub1By
ZXNlcnZlKSA9PiBzZWN0aW9uVG9QcmVzZXJ2ZVtTcHJlYWRzaGVldFJ1bGVzU3R5bGVEZXRhaWxz
UGFuZWwuU2VjdGlvbkluZGV4U3ltYm9sXSA9PT0gdGhpcy5fc2VjdGlvbnMubGVuZ3RoIC0gMSk7
Ci0gICAgICAgICAgICBpZiAocHJlc2VydmVkU2VjdGlvbikKLSAgICAgICAgICAgICAgICBhZGRT
ZWN0aW9uKHByZXNlcnZlZFNlY3Rpb24pOwogICAgICAgICB9OwogCiAgICAgICAgIGxldCBhZGRl
ZFBzZXVkb1N0eWxlcyA9IGZhbHNlOwpAQCAtMzc5LDEzICszNTgsOCBAQCBXSS5TcHJlYWRzaGVl
dFJ1bGVzU3R5bGVEZXRhaWxzUGFuZWwgPSBjbGFzcyBTcHJlYWRzaGVldFJ1bGVzU3R5bGVEZXRh
aWxzUGFuZWwgZQogCiAgICAgX2hhbmRsZVNlY3Rpb25TZWxlY3RvcldpbGxDaGFuZ2UoZXZlbnQp
CiAgICAgewotICAgICAgICBsZXQgc2VjdGlvbiA9IGV2ZW50LnRhcmdldDsKLSAgICAgICAgc2Vj
dGlvbltTcHJlYWRzaGVldFJ1bGVzU3R5bGVEZXRhaWxzUGFuZWwuU2VjdGlvblNob3dpbmdGb3JO
b2RlU3ltYm9sXSA9IHRoaXMubm9kZVN0eWxlcy5ub2RlOwotICAgICAgICBzZWN0aW9uW1NwcmVh
ZHNoZWV0UnVsZXNTdHlsZURldGFpbHNQYW5lbC5TZWN0aW9uSW5kZXhTeW1ib2xdID0gdGhpcy5f
c2VjdGlvbnMuaW5kZXhPZihzZWN0aW9uKTsKLSAgICAgICAgY29uc29sZS5hc3NlcnQoc2VjdGlv
bltTcHJlYWRzaGVldFJ1bGVzU3R5bGVEZXRhaWxzUGFuZWwuU2VjdGlvbkluZGV4U3ltYm9sXSA+
PSAwKTsKKyAgICAgICAgdGhpcy5fc3VwcHJlc3NMYXlvdXRBZnRlclNlbGVjdG9yQ2hhbmdlID0g
dHJ1ZTsKICAgICB9CiB9OwogCiBXSS5TcHJlYWRzaGVldFJ1bGVzU3R5bGVEZXRhaWxzUGFuZWwu
U3R5bGVTZWN0aW9uU3ltYm9sID0gU3ltYm9sKCJzdHlsZS1zZWN0aW9uIik7Ci1XSS5TcHJlYWRz
aGVldFJ1bGVzU3R5bGVEZXRhaWxzUGFuZWwuU2VjdGlvblNob3dpbmdGb3JOb2RlU3ltYm9sID0g
U3ltYm9sKCJzdHlsZS1zaG93aW5nLWZvci1ub2RlIik7Ci1XSS5TcHJlYWRzaGVldFJ1bGVzU3R5
bGVEZXRhaWxzUGFuZWwuU2VjdGlvbkluZGV4U3ltYm9sID0gU3ltYm9sKCJzdHlsZS1pbmRleCIp
Owo=
</data>

          </attachment>
      

    </bug>

</bugzilla>