<?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>194607</bug_id>
          
          <creation_ts>2019-02-13 13:22:38 -0800</creation_ts>
          <short_desc>Web Inspector: CSS Changes: resetting value still shows in the diff</short_desc>
          <delta_ts>2019-06-17 21:57:16 -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>DUPLICATE</resolution>
          <dup_id>195264</dup_id>
          
          <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="Devin Rousso">hi</reporter>
          <assigned_to name="Nikita Vasilyev">nvasilyev</assigned_to>
          <cc>hi</cc>
    
    <cc>inspector-bugzilla-changes</cc>
    
    <cc>nvasilyev</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1505828</commentid>
    <comment_count>0</comment_count>
    <who name="Devin Rousso">hi</who>
    <bug_when>2019-02-13 13:22:38 -0800</bug_when>
    <thetext>Commenting out a property and then uncommenting it back in still shows the property in the changes view.  The same is true for changing a value to something different and then changing it back to the original value.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1505831</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-02-13 13:30:51 -0800</bug_when>
    <thetext>&lt;rdar://problem/48050248&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1512042</commentid>
    <comment_count>2</comment_count>
      <attachid>363482</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2019-03-03 21:21:31 -0800</bug_when>
    <thetext>Created attachment 363482
[Patch] WIP

This was sort of the idea I was thinking of.  What I did is quite buggy, and can reach these very odd states where changed things are considered initial content.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1512043</commentid>
    <comment_count>3</comment_count>
      <attachid>363482</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2019-03-03 21:24:50 -0800</bug_when>
    <thetext>Comment on attachment 363482
[Patch] WIP

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

&gt; Source/WebInspectorUI/UserInterface/Models/CSSStyleDeclaration.js:366
&gt; +            let properties = this._initialState ? this._initialState.properties : this._properties;

I think the buggy-ness may come from this point, as it uses the `initialState`s `properties` instead of whatever&apos;s current (this is why the override on (&gt;384) is there).  I get that we don&apos;t want to use `this._properties` as new properties may have been added to that after the modification, but in order to determine whether something has been &quot;un-modified&quot; we&apos;d need to be able to look at the current state of things and compare it to the &quot;true&quot; initial one.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1512048</commentid>
    <comment_count>4</comment_count>
    <who name="Nikita Vasilyev">nvasilyev</who>
    <bug_when>2019-03-03 21:31:27 -0800</bug_when>
    <thetext>I have a WIP for this as well but I’m away from the keyboard right. I suggest not to invest time into this issue right now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1520485</commentid>
    <comment_count>5</comment_count>
      <attachid>363482</attachid>
    <who name="Nikita Vasilyev">nvasilyev</who>
    <bug_when>2019-03-22 14:58:05 -0700</bug_when>
    <thetext>Comment on attachment 363482
[Patch] WIP

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

&gt; Source/WebInspectorUI/UserInterface/Models/CSSProperty.js:390
&gt; +            if (this._ownerStyle)
&gt; +                this._ownerStyle.checkIfModified();

This happens on every CSS value change. Some of this work can be done when Changes panel is shown. I&apos;m about to upload a patch.

&gt; Source/WebInspectorUI/UserInterface/Models/CSSRule.js:163
&gt; +            if (this._initialState.style.__original &amp;&amp; !this._initialState.style.__original.modified) {

I don&apos;t think adding `__original` is necessary.

&gt; Source/WebInspectorUI/UserInterface/Models/CSSRule.js:182
&gt; +        this._initialState.__original = this;

Ditton.

&gt; Source/WebInspectorUI/UserInterface/Models/CSSStyleDeclaration.js:365
&gt; +        if (!this._initialState || this._initialState.properties.some((property) =&gt; property.__original &amp;&amp; property.__original.modified)) {

Ditto.

&gt; Source/WebInspectorUI/UserInterface/Models/CSSStyleDeclaration.js:379
&gt; +                this._initialState.__original = this;

Ditto.

&gt; Source/WebInspectorUI/UserInterface/Models/CSSStyleDeclaration.js:384
&gt; +                if (property.__original)
&gt; +                    property = property.__original;

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1520489</commentid>
    <comment_count>6</comment_count>
      <attachid>365764</attachid>
    <who name="Nikita Vasilyev">nvasilyev</who>
    <bug_when>2019-03-22 15:06:05 -0700</bug_when>
    <thetext>Created attachment 365764
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1520532</commentid>
    <comment_count>7</comment_count>
      <attachid>365764</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2019-03-22 16:54:48 -0700</bug_when>
    <thetext>Comment on attachment 365764
Patch

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

Nice work!

I&apos;m encountering a few edge cases where this doesn&apos;t seem to work exactly right, and I&apos;m not sure if this is an existing bug or something new, but otherwise it looks great :)

# STEPS TO REPRODUCE:
1. inspect any page
2. open the Elements tab
3. select any element that has at least one rule with at least one property
4. delete the last property of any style that has at least one property (e.g. select the name, press ⌫, and press ↵)
5. add a new property that matches the exact text of the removed property in the same position/index in the same style
6. show the Changes panel
 =&gt; the property is shown as both added and removed even though the rendered text appears the same

# STEPS TO REPRODUCE:
1. inspect any page
2. open the Elements tab
3. select any element that has at least one rule with at least two properties
4. disable (e.g. comment out) the first property of the rule with at least two properties
5. show the Changes panel
 =&gt; all properties after the disabled one appear as changed

# STEPS TO REPRODUCE:
1. inspect any page
2. open the Elements tab
3. select any element that has at least one rule with at least two properties
4. disable (e.g. comment out) the first property of the rule with at least two properties
5. add a new property immediately after the first property
 =&gt; the green &quot;modified&quot; border/highlight next to the first property disappears

All of these are reproducible on &lt;https://devinrousso.com/demo/WebKit/test.html&gt;.

&gt; Source/WebInspectorUI/UserInterface/Controllers/CSSManager.js:433
&gt; +            let hasModified = style.visibleProperties.some((property) =&gt; property.modified);
&gt; +            if (hasModified) {
&gt; +                // Update properties array.
&gt; +                style.markModified();
&gt; +            } else
&gt; +                style.unmarkModifiedIfNeeded();

Rather than have this work be done in `WI.CSSManager`, could we move this to `WI.CSSStyleDeclaration` as an `updateModifiedState`?  That way `WI.CSSManager` doesn&apos;t need to know about &quot;Update properties array.&quot;, as that is &quot;internal&quot; functionality of `WI.CSSStyleDeclaration`.

&gt; Source/WebInspectorUI/UserInterface/Models/CSSStyleDeclaration.js:393
&gt; +        let visibleProperties = this.visibleProperties;

Why save this to a local?  If you prefer it as a local, please make `this._initialState.visibleProperties` into a local as well for consistency (like `initialVisibleProperties`).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1520684</commentid>
    <comment_count>8</comment_count>
    <who name="Nikita Vasilyev">nvasilyev</who>
    <bug_when>2019-03-24 02:22:20 -0700</bug_when>
    <thetext>(In reply to Devin Rousso from comment #7)
&gt; Comment on attachment 365764 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=365764&amp;action=review
&gt; 
&gt; Nice work!
&gt; 
&gt; I&apos;m encountering a few edge cases where this doesn&apos;t seem to work exactly
&gt; right, and I&apos;m not sure if this is an existing bug or something new, but
&gt; otherwise it looks great :)
&gt; 
&gt; # STEPS TO REPRODUCE:
&gt; 1. inspect any page
&gt; 2. open the Elements tab
&gt; 3. select any element that has at least one rule with at least one property
&gt; 4. delete the last property of any style that has at least one property
&gt; (e.g. select the name, press ⌫, and press ↵)
&gt; 5. add a new property that matches the exact text of the removed property in
&gt; the same position/index in the same style
&gt; 6. show the Changes panel
&gt;  =&gt; the property is shown as both added and removed even though the rendered
&gt; text appears the same

This is tricky since I use Array.diffArrays, which does a strict equality check of CSSproperty models and doesn&apos;t do the full-text comparison. I think, for this particular case (a removed property followed by an added property) I could do a full-text comparison.

&gt; # STEPS TO REPRODUCE:
&gt; 1. inspect any page
&gt; 2. open the Elements tab
&gt; 3. select any element that has at least one rule with at least two properties
&gt; 4. disable (e.g. comment out) the first property of the rule with at least
&gt; two properties
&gt; 5. show the Changes panel
&gt;  =&gt; all properties after the disabled one appear as changed

This should be resolved by https://bugs.webkit.org/show_bug.cgi?id=196038.

&gt; 
&gt; # STEPS TO REPRODUCE:
&gt; 1. inspect any page
&gt; 2. open the Elements tab
&gt; 3. select any element that has at least one rule with at least two properties
&gt; 4. disable (e.g. comment out) the first property of the rule with at least
&gt; two properties
&gt; 5. add a new property immediately after the first property
&gt;  =&gt; the green &quot;modified&quot; border/highlight next to the first property
&gt; disappears

This broke with https://bugs.webkit.org/show_bug.cgi?id=196038 :(</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1521004</commentid>
    <comment_count>9</comment_count>
      <attachid>365897</attachid>
    <who name="Nikita Vasilyev">nvasilyev</who>
    <bug_when>2019-03-25 14:08:01 -0700</bug_when>
    <thetext>Created attachment 365897
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1521011</commentid>
    <comment_count>10</comment_count>
    <who name="Nikita Vasilyev">nvasilyev</who>
    <bug_when>2019-03-25 14:14:48 -0700</bug_when>
    <thetext>(In reply to Nikita Vasilyev from comment #8)
&gt; (In reply to Devin Rousso from comment #7)
&gt; &gt; Comment on attachment 365764 [details]
&gt; &gt; Patch
&gt; &gt; 
&gt; &gt; View in context:
&gt; &gt; https://bugs.webkit.org/attachment.cgi?id=365764&amp;action=review
&gt; &gt; 
&gt; &gt; Nice work!
&gt; &gt; 
&gt; &gt; I&apos;m encountering a few edge cases where this doesn&apos;t seem to work exactly
&gt; &gt; right, and I&apos;m not sure if this is an existing bug or something new, but
&gt; &gt; otherwise it looks great :)
&gt; &gt; 
&gt; &gt; # STEPS TO REPRODUCE:
&gt; &gt; 1. inspect any page
&gt; &gt; 2. open the Elements tab
&gt; &gt; 3. select any element that has at least one rule with at least one property
&gt; &gt; 4. delete the last property of any style that has at least one property
&gt; &gt; (e.g. select the name, press ⌫, and press ↵)
&gt; &gt; 5. add a new property that matches the exact text of the removed property in
&gt; &gt; the same position/index in the same style
&gt; &gt; 6. show the Changes panel
&gt; &gt;  =&gt; the property is shown as both added and removed even though the rendered
&gt; &gt; text appears the same
&gt; 
&gt; This is tricky since I use Array.diffArrays, which does a strict equality
&gt; check of CSSproperty models and doesn&apos;t do the full-text comparison. I
&gt; think, for this particular case (a removed property followed by an added
&gt; property) I could do a full-text comparison.

I fixed it in the latest patch.

&gt; &gt; 
&gt; &gt; # STEPS TO REPRODUCE:
&gt; &gt; 1. inspect any page
&gt; &gt; 2. open the Elements tab
&gt; &gt; 3. select any element that has at least one rule with at least two properties
&gt; &gt; 4. disable (e.g. comment out) the first property of the rule with at least
&gt; &gt; two properties
&gt; &gt; 5. add a new property immediately after the first property
&gt; &gt;  =&gt; the green &quot;modified&quot; border/highlight next to the first property
&gt; &gt; disappears
&gt; 
&gt; This broke with https://bugs.webkit.org/show_bug.cgi?id=196038 :(

I filed Bug 196215 - Web Inspector: Green highlight disappears from edited properties when adding a new property.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1521345</commentid>
    <comment_count>11</comment_count>
      <attachid>365897</attachid>
    <who name="Devin Rousso">hi</who>
    <bug_when>2019-03-26 10:31:23 -0700</bug_when>
    <thetext>Comment on attachment 365897
Patch

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

&gt; Source/WebInspectorUI/UserInterface/Models/CSSStyleDeclaration.js:397
&gt; +        } else {

NIT: use an early return rather than an `else`.

&gt; Source/WebInspectorUI/UserInterface/Views/ChangesDetailsSidebarPanel.js:159
&gt; +                    propertiesDiff.push({cssProperty: cssProperty.initialState, action: -1});

Why not just use the string?  Having the &quot;conversion&quot; be done in the loop at the bottom seems &quot;unnecessary&quot; when you could also be using it here (e.g. `action: &quot;remove&quot;`).

&gt; Source/WebInspectorUI/UserInterface/Views/ChangesDetailsSidebarPanel.js:164
&gt; +                if (propertiesDiff.lastValue &amp;&amp; propertiesDiff.lastValue.action === -1 &amp;&amp; cssProperty.equals(propertiesDiff.lastValue.cssProperty)) {

It seems like this check could be done (possibly as a form of sanity check) for every property that&apos;s added, not just removed-&gt;added.  If any property is equal to the previous property, we shouldn&apos;t show it twice and it should only be shown as &quot;unchanged&quot;.

&gt; Source/WebInspectorUI/UserInterface/Views/ChangesDetailsSidebarPanel.js:170
&gt; +                propertiesDiff.push({cssProperty, action});

Is it possible that a we would have an added-&gt;removed situation (the reverse of the one on &gt;164)?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1521496</commentid>
    <comment_count>12</comment_count>
      <attachid>365897</attachid>
    <who name="Nikita Vasilyev">nvasilyev</who>
    <bug_when>2019-03-26 15:47:55 -0700</bug_when>
    <thetext>Comment on attachment 365897
Patch

There are a couple more CSS Changes bugs:
- Bug 195264 - Web Inspector: CSS Changes: modifications aren&apos;t shared for rules that match multiple elements
- Bug 196215 - Web Inspector: Green highlight disappears from edited properties when adding a new property

To fix them, I&apos;m going to try a different approach:

- Check property equality based on their content. Unfortunately, CSSProperty instances sometimes get re-created with the same content and strict equality checks of models doesn&apos;t work.
- Copy all properties of a style declaration on the first edit. Updating `this._initialState.properties` on each edit turned out to be unnecessary confusing and error-prone.

This different approach would make this patch above obsolete.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1527132</commentid>
    <comment_count>13</comment_count>
    <who name="Nikita Vasilyev">nvasilyev</who>
    <bug_when>2019-04-14 19:05:05 -0700</bug_when>
    <thetext>(In reply to Nikita Vasilyev from comment #12)
&gt; Comment on attachment 365897 [details]
&gt; Patch
&gt; 
&gt; There are a couple more CSS Changes bugs:
&gt; - Bug 195264 - Web Inspector: CSS Changes: modifications aren&apos;t shared for
&gt; rules that match multiple elements
&gt; - Bug 196215 - Web Inspector: Green highlight disappears from edited
&gt; properties when adding a new property
&gt; 
&gt; To fix them, I&apos;m going to try a different approach:
&gt; 
&gt; - Check property equality based on their content. Unfortunately, CSSProperty
&gt; instances sometimes get re-created with the same content and strict equality
&gt; checks of models doesn&apos;t work.
&gt; - Copy all properties of a style declaration on the first edit. Updating
&gt; `this._initialState.properties` on each edit turned out to be unnecessary
&gt; confusing and error-prone.
&gt; 
&gt; This different approach would make this patch above obsolete.

The patch is in https://bugs.webkit.org/show_bug.cgi?id=195264#c17.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1545550</commentid>
    <comment_count>14</comment_count>
    <who name="Devin Rousso">hi</who>
    <bug_when>2019-06-17 21:57:16 -0700</bug_when>
    <thetext>

*** This bug has been marked as a duplicate of bug 195264 ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>363482</attachid>
            <date>2019-03-03 21:21:31 -0800</date>
            <delta_ts>2019-03-22 15:06:05 -0700</delta_ts>
            <desc>[Patch] WIP</desc>
            <filename>194607.diff</filename>
            <type>text/plain</type>
            <size>6706</size>
            <attacher name="Devin Rousso">hi</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9D
U1NQcm9wZXJ0eS5qcyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVs
cy9DU1NQcm9wZXJ0eS5qcwppbmRleCAwNzlhMDU2MzAxNi4uNjQyY2QzYmVhYWEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9DU1NQcm9wZXJ0
eS5qcworKysgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvQ1NT
UHJvcGVydHkuanMKQEAgLTM4Myw2ICszODMsMTMgQEAgV0kuQ1NTUHJvcGVydHkgPSBjbGFzcyBD
U1NQcm9wZXJ0eSBleHRlbmRzIFdJLk9iamVjdAogICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICB9CiAKKyAgICAgICAgaWYgKHRoaXMuX2luaXRpYWxTdGF0ZSAmJiB0aGlzLl9pbml0aWFsU3Rh
dGUudGV4dCA9PT0gbmV3VGV4dCkgeworICAgICAgICAgICAgdGhpcy5faW5pdGlhbFN0YXRlID0g
bnVsbDsKKworICAgICAgICAgICAgaWYgKHRoaXMuX293bmVyU3R5bGUpCisgICAgICAgICAgICAg
ICAgdGhpcy5fb3duZXJTdHlsZS5jaGVja0lmTW9kaWZpZWQoKTsKKyAgICAgICAgfQorCiAgICAg
ICAgIGNvbnNvbGUuYXNzZXJ0KHRoaXMuX293bmVyU3R5bGUpOwogICAgICAgICBpZiAoIXRoaXMu
X293bmVyU3R5bGUpCiAgICAgICAgICAgICByZXR1cm47CkBAIC00MzUsMjQgKzQ0MiwyNCBAQCBX
SS5DU1NQcm9wZXJ0eSA9IGNsYXNzIENTU1Byb3BlcnR5IGV4dGVuZHMgV0kuT2JqZWN0CiAKICAg
ICBfbWFya01vZGlmaWVkKCkKICAgICB7Ci0gICAgICAgIGlmICh0aGlzLm1vZGlmaWVkKQotICAg
ICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgIHRoaXMuX2luaXRpYWxTdGF0ZSA9IG5ldyBXSS5D
U1NQcm9wZXJ0eSgKLSAgICAgICAgICAgIHRoaXMuX2luZGV4LAotICAgICAgICAgICAgdGhpcy5f
dGV4dCwKLSAgICAgICAgICAgIHRoaXMuX25hbWUsCi0gICAgICAgICAgICB0aGlzLl9yYXdWYWx1
ZSwKLSAgICAgICAgICAgIHRoaXMuX3ByaW9yaXR5LAotICAgICAgICAgICAgdGhpcy5fZW5hYmxl
ZCwKLSAgICAgICAgICAgIHRoaXMuX292ZXJyaWRkZW4sCi0gICAgICAgICAgICB0aGlzLl9pbXBs
aWNpdCwKLSAgICAgICAgICAgIHRoaXMuX2Fub255bW91cywKLSAgICAgICAgICAgIHRoaXMuX3Zh
bGlkLAotICAgICAgICAgICAgdGhpcy5fc3R5bGVTaGVldFRleHRSYW5nZSk7CisgICAgICAgIGlm
ICghdGhpcy5faW5pdGlhbFN0YXRlKSB7CisgICAgICAgICAgICB0aGlzLl9pbml0aWFsU3RhdGUg
PSBuZXcgV0kuQ1NTUHJvcGVydHkoCisgICAgICAgICAgICAgICAgdGhpcy5faW5kZXgsCisgICAg
ICAgICAgICAgICAgdGhpcy5fdGV4dCwKKyAgICAgICAgICAgICAgICB0aGlzLl9uYW1lLAorICAg
ICAgICAgICAgICAgIHRoaXMuX3Jhd1ZhbHVlLAorICAgICAgICAgICAgICAgIHRoaXMuX3ByaW9y
aXR5LAorICAgICAgICAgICAgICAgIHRoaXMuX2VuYWJsZWQsCisgICAgICAgICAgICAgICAgdGhp
cy5fb3ZlcnJpZGRlbiwKKyAgICAgICAgICAgICAgICB0aGlzLl9pbXBsaWNpdCwKKyAgICAgICAg
ICAgICAgICB0aGlzLl9hbm9ueW1vdXMsCisgICAgICAgICAgICAgICAgdGhpcy5fdmFsaWQsCisg
ICAgICAgICAgICAgICAgdGhpcy5fc3R5bGVTaGVldFRleHRSYW5nZSk7CisgICAgICAgICAgICB0
aGlzLl9pbml0aWFsU3RhdGUuX19vcmlnaW5hbCA9IHRoaXM7CisgICAgICAgIH0KIAogICAgICAg
ICBpZiAodGhpcy5fb3duZXJTdHlsZSkgewotICAgICAgICAgICAgdGhpcy5fb3duZXJTdHlsZS5t
YXJrTW9kaWZpZWQoKTsKKyAgICAgICAgICAgIHRoaXMuX293bmVyU3R5bGUuY2hlY2tJZk1vZGlm
aWVkKCk7CiAgICAgICAgICAgICB0aGlzLl9pbml0aWFsU3RhdGUub3duZXJTdHlsZSA9IHRoaXMu
X293bmVyU3R5bGUuaW5pdGlhbFN0YXRlOwogICAgICAgICB9CiAgICAgfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0NTU1J1bGUuanMgYi9T
b3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvQ1NTUnVsZS5qcwppbmRl
eCAzNzU4NDViOGRmNi4uYmIyMGE1Y2QxNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9DU1NSdWxlLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9DU1NSdWxlLmpzCkBAIC0xNDQsNiArMTQ0LDEx
IEBAIFdJLkNTU1J1bGUgPSBjbGFzcyBDU1NSdWxlIGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgICAg
IHJldHVybiB0aGlzLl9tZWRpYUxpc3Q7CiAgICAgfQogCisgICAgZ2V0IG1vZGlmaWVkKCkKKyAg
ICB7CisgICAgICAgIHJldHVybiAhIXRoaXMuX2luaXRpYWxTdGF0ZTsKKyAgICB9CisKICAgICBp
c0VxdWFsVG8ocnVsZSkKICAgICB7CiAgICAgICAgIGlmICghcnVsZSkKQEAgLTE1MiwxMCArMTU3
LDE1IEBAIFdJLkNTU1J1bGUgPSBjbGFzcyBDU1NSdWxlIGV4dGVuZHMgV0kuT2JqZWN0CiAgICAg
ICAgIHJldHVybiBPYmplY3Quc2hhbGxvd0VxdWFsKHRoaXMuX2lkLCBydWxlLmlkKTsKICAgICB9
CiAKLSAgICBtYXJrTW9kaWZpZWQoKQorICAgIGNoZWNrSWZNb2RpZmllZCgpCiAgICAgewotICAg
ICAgICBpZiAodGhpcy5faW5pdGlhbFN0YXRlKQorICAgICAgICBpZiAodGhpcy5faW5pdGlhbFN0
YXRlKSB7CisgICAgICAgICAgICBpZiAodGhpcy5faW5pdGlhbFN0YXRlLnN0eWxlLl9fb3JpZ2lu
YWwgJiYgIXRoaXMuX2luaXRpYWxTdGF0ZS5zdHlsZS5fX29yaWdpbmFsLm1vZGlmaWVkKSB7Cisg
ICAgICAgICAgICAgICAgdGhpcy5faW5pdGlhbFN0YXRlID0gbnVsbDsKKyAgICAgICAgICAgICAg
ICBXSS5jc3NNYW5hZ2VyLnJlbW92ZU1vZGlmaWVkQ1NTUnVsZSh0aGlzKTsKKyAgICAgICAgICAg
IH0KICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQogCiAgICAgICAgIGxldCBpbml0aWFs
U3R5bGUgPSB0aGlzLl9zdHlsZS5pbml0aWFsU3RhdGUgfHwgdGhpcy5fc3R5bGU7CiAgICAgICAg
IHRoaXMuX2luaXRpYWxTdGF0ZSA9IG5ldyBXSS5DU1NSdWxlKApAQCAtMTY5LDYgKzE3OSw3IEBA
IFdJLkNTU1J1bGUgPSBjbGFzcyBDU1NSdWxlIGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgICAgICAg
ICB0aGlzLl9tYXRjaGVkU2VsZWN0b3JJbmRpY2VzLAogICAgICAgICAgICAgaW5pdGlhbFN0eWxl
LAogICAgICAgICAgICAgdGhpcy5fbWVkaWFMaXN0KTsKKyAgICAgICAgdGhpcy5faW5pdGlhbFN0
YXRlLl9fb3JpZ2luYWwgPSB0aGlzOwogCiAgICAgICAgIFdJLmNzc01hbmFnZXIuYWRkTW9kaWZp
ZWRDU1NSdWxlKHRoaXMpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL01vZGVscy9DU1NTdHlsZURlY2xhcmF0aW9uLmpzIGIvU291cmNlL1dl
Ykluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxzL0NTU1N0eWxlRGVjbGFyYXRpb24uanMK
aW5kZXggMjA0N2FmMzE1N2IuLjQ0YjRiYTViYWQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5z
cGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvQ1NTU3R5bGVEZWNsYXJhdGlvbi5qcworKysg
Yi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvQ1NTU3R5bGVEZWNs
YXJhdGlvbi5qcwpAQCAtMjg5LDYgKzI4OSwxMSBAQCBXSS5DU1NTdHlsZURlY2xhcmF0aW9uID0g
Y2xhc3MgQ1NTU3R5bGVEZWNsYXJhdGlvbiBleHRlbmRzIFdJLk9iamVjdAogICAgICAgICByZXR1
cm4gdGhpcy5fbm9kZS5hcHByb3ByaWF0ZVNlbGVjdG9yRm9yKHRydWUpOwogICAgIH0KIAorICAg
IGdldCBtb2RpZmllZCgpCisgICAgeworICAgICAgICByZXR1cm4gISF0aGlzLl9pbml0aWFsU3Rh
dGU7CisgICAgfQorCiAgICAgcHJvcGVydHlGb3JOYW1lKG5hbWUsIGRvbnRDcmVhdGVJZk1pc3Np
bmcpCiAgICAgewogICAgICAgICBjb25zb2xlLmFzc2VydChuYW1lKTsKQEAgLTM0Myw3ICszNDgs
NyBAQCBXSS5DU1NTdHlsZURlY2xhcmF0aW9uID0gY2xhc3MgQ1NTU3R5bGVEZWNsYXJhdGlvbiBl
eHRlbmRzIFdJLk9iamVjdAogICAgICAgICBsZXQgdmFsaWQgPSBmYWxzZTsKICAgICAgICAgbGV0
IHN0eWxlU2hlZXRUZXh0UmFuZ2UgPSB0aGlzLl9yYW5nZUFmdGVyUHJvcGVydHlBdEluZGV4KHBy
b3BlcnR5SW5kZXggLSAxKTsKIAotICAgICAgICB0aGlzLm1hcmtNb2RpZmllZCgpOworICAgICAg
ICB0aGlzLmNoZWNrSWZNb2RpZmllZCgpOwogICAgICAgICBsZXQgcHJvcGVydHkgPSBuZXcgV0ku
Q1NTUHJvcGVydHkocHJvcGVydHlJbmRleCwgdGV4dCwgbmFtZSwgdmFsdWUsIHByaW9yaXR5LCBl
bmFibGVkLCBvdmVycmlkZGVuLCBpbXBsaWNpdCwgYW5vbnltb3VzLCB2YWxpZCwgc3R5bGVTaGVl
dFRleHRSYW5nZSk7CiAKICAgICAgICAgdGhpcy5fcHJvcGVydGllcy5pbnNlcnRBdEluZGV4KHBy
b3BlcnR5LCBwcm9wZXJ0eUluZGV4KTsKQEAgLTM1NSwyNyArMzYwLDM1IEBAIFdJLkNTU1N0eWxl
RGVjbGFyYXRpb24gPSBjbGFzcyBDU1NTdHlsZURlY2xhcmF0aW9uIGV4dGVuZHMgV0kuT2JqZWN0
CiAgICAgICAgIHJldHVybiBwcm9wZXJ0eTsKICAgICB9CiAKLSAgICBtYXJrTW9kaWZpZWQoKQor
ICAgIGNoZWNrSWZNb2RpZmllZCgpCiAgICAgewotICAgICAgICBsZXQgcHJvcGVydGllcyA9IHRo
aXMuX2luaXRpYWxTdGF0ZSA/IHRoaXMuX2luaXRpYWxTdGF0ZS5wcm9wZXJ0aWVzIDogdGhpcy5f
cHJvcGVydGllczsKKyAgICAgICAgaWYgKCF0aGlzLl9pbml0aWFsU3RhdGUgfHwgdGhpcy5faW5p
dGlhbFN0YXRlLnByb3BlcnRpZXMuc29tZSgocHJvcGVydHkpID0+IHByb3BlcnR5Ll9fb3JpZ2lu
YWwgJiYgcHJvcGVydHkuX19vcmlnaW5hbC5tb2RpZmllZCkpIHsKKyAgICAgICAgICAgIGxldCBw
cm9wZXJ0aWVzID0gdGhpcy5faW5pdGlhbFN0YXRlID8gdGhpcy5faW5pdGlhbFN0YXRlLnByb3Bl
cnRpZXMgOiB0aGlzLl9wcm9wZXJ0aWVzOwogCi0gICAgICAgIGlmICghdGhpcy5faW5pdGlhbFN0
YXRlKSB7Ci0gICAgICAgICAgICB0aGlzLl9pbml0aWFsU3RhdGUgPSBuZXcgV0kuQ1NTU3R5bGVE
ZWNsYXJhdGlvbigKLSAgICAgICAgICAgICAgICB0aGlzLl9ub2RlU3R5bGVzLAotICAgICAgICAg
ICAgICAgIHRoaXMuX293bmVyU3R5bGVTaGVldCwKLSAgICAgICAgICAgICAgICB0aGlzLl9pZCwK
LSAgICAgICAgICAgICAgICB0aGlzLl90eXBlLAotICAgICAgICAgICAgICAgIHRoaXMuX25vZGUs
Ci0gICAgICAgICAgICAgICAgdGhpcy5faW5oZXJpdGVkLAotICAgICAgICAgICAgICAgIHRoaXMu
X3RleHQsCi0gICAgICAgICAgICAgICAgW10sIC8vIFBhc3NpbmcgQ1NTIHByb3BlcnRpZXMgaGVy
ZSB3b3VsZCBjaGFuZ2UgdGhlaXIgb3duZXJTdHlsZS4KLSAgICAgICAgICAgICAgICB0aGlzLl9z
dHlsZVNoZWV0VGV4dFJhbmdlKTsKLSAgICAgICAgfQorICAgICAgICAgICAgaWYgKCF0aGlzLl9p
bml0aWFsU3RhdGUpIHsKKyAgICAgICAgICAgICAgICB0aGlzLl9pbml0aWFsU3RhdGUgPSBuZXcg
V0kuQ1NTU3R5bGVEZWNsYXJhdGlvbigKKyAgICAgICAgICAgICAgICAgICAgdGhpcy5fbm9kZVN0
eWxlcywKKyAgICAgICAgICAgICAgICAgICAgdGhpcy5fb3duZXJTdHlsZVNoZWV0LAorICAgICAg
ICAgICAgICAgICAgICB0aGlzLl9pZCwKKyAgICAgICAgICAgICAgICAgICAgdGhpcy5fdHlwZSwK
KyAgICAgICAgICAgICAgICAgICAgdGhpcy5fbm9kZSwKKyAgICAgICAgICAgICAgICAgICAgdGhp
cy5faW5oZXJpdGVkLAorICAgICAgICAgICAgICAgICAgICB0aGlzLl90ZXh0LAorICAgICAgICAg
ICAgICAgICAgICBbXSwgLy8gUGFzc2luZyBDU1MgcHJvcGVydGllcyBoZXJlIHdvdWxkIGNoYW5n
ZSB0aGVpciBvd25lclN0eWxlLgorICAgICAgICAgICAgICAgICAgICB0aGlzLl9zdHlsZVNoZWV0
VGV4dFJhbmdlKTsKKyAgICAgICAgICAgICAgICB0aGlzLl9pbml0aWFsU3RhdGUuX19vcmlnaW5h
bCA9IHRoaXM7CisgICAgICAgICAgICB9CiAKLSAgICAgICAgdGhpcy5faW5pdGlhbFN0YXRlLnBy
b3BlcnRpZXMgPSBwcm9wZXJ0aWVzLm1hcCgocHJvcGVydHkpID0+IHsgcmV0dXJuIHByb3BlcnR5
LmluaXRpYWxTdGF0ZSB8fCBwcm9wZXJ0eSB9KTsKKyAgICAgICAgICAgIHRoaXMuX2luaXRpYWxT
dGF0ZS5wcm9wZXJ0aWVzID0gcHJvcGVydGllcy5tYXAoKHByb3BlcnR5KSA9PiB7CisgICAgICAg
ICAgICAgICAgaWYgKHByb3BlcnR5Ll9fb3JpZ2luYWwpCisgICAgICAgICAgICAgICAgICAgIHBy
b3BlcnR5ID0gcHJvcGVydHkuX19vcmlnaW5hbDsKKyAgICAgICAgICAgICAgICByZXR1cm4gcHJv
cGVydHkuaW5pdGlhbFN0YXRlIHx8IHByb3BlcnR5OworICAgICAgICAgICAgfSk7CisgICAgICAg
IH0gZWxzZQorICAgICAgICAgICAgdGhpcy5faW5pdGlhbFN0YXRlID0gbnVsbDsKIAogICAgICAg
ICBpZiAodGhpcy5fb3duZXJSdWxlKQotICAgICAgICAgICAgdGhpcy5fb3duZXJSdWxlLm1hcmtN
b2RpZmllZCgpOworICAgICAgICAgICAgdGhpcy5fb3duZXJSdWxlLmNoZWNrSWZNb2RpZmllZCgp
OwogICAgIH0KIAogICAgIHNoaWZ0UHJvcGVydGllc0FmdGVyKGNzc1Byb3BlcnR5LCBsaW5lRGVs
dGEsIGNvbHVtbkRlbHRhLCBwcm9wZXJ0eVdhc1JlbW92ZWQpCg==
</data>
<flag name="commit-queue"
          id="380077"
          type_id="3"
          status="-"
          setter="hi"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>365764</attachid>
            <date>2019-03-22 15:06:05 -0700</date>
            <delta_ts>2019-03-25 14:08:01 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>5029</size>
            <attacher name="Nikita Vasilyev">nvasilyev</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvQ2hhbmdlTG9nCmluZGV4IDQzZDQ4YWJhZWM4Li5mNjMyMDdjYjA2MiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjcgQEAKKzIwMTktMDMtMjIgIE5pa2l0
YSBWYXNpbHlldiAgPG52YXNpbHlldkBhcHBsZS5jb20+CisKKyAgICAgICAgV2ViIEluc3BlY3Rv
cjogQ1NTIENoYW5nZXM6IHJlc2V0dGluZyB2YWx1ZSBzdGlsbCBzaG93cyBpbiB0aGUgZGlmZgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk0NjA3Cisg
ICAgICAgIDxyZGFyOi8vcHJvYmxlbS80ODA1MDI0OD4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvQ1NT
TWFuYWdlci5qczoKKyAgICAgICAgKFdJLkNTU01hbmFnZXIucHJvdG90eXBlLmdldCBtb2RpZmll
ZFN0eWxlcyk6CisgICAgICAgIEZpbmQgYW5kIHJlbW92ZSBzdHlsZSBkZWNsYXJhdGlvbnMgdGhh
dCB3ZXJlIHJldmVydGVkIHRvIHRoZWlyIG9yaWdpbmFsIHN0YXRlCisgICAgICAgIHdoZW4gdGhl
IENoYW5nZXMgcGFuZWwgaXMgc2VsZWN0ZWQuCisKKyAgICAgICAgKFdJLkNTU01hbmFnZXIucHJv
dG90eXBlLnJlbW92ZU1vZGlmaWVkU3R5bGUpOgorICAgICAgICAqIFVzZXJJbnRlcmZhY2UvTW9k
ZWxzL0NTU1Byb3BlcnR5LmpzOgorICAgICAgICAoV0kuQ1NTUHJvcGVydHkucHJvdG90eXBlLmVx
dWFscyk6CisgICAgICAgIChXSS5DU1NQcm9wZXJ0eS5wcm90b3R5cGUudW5tYXJrTW9kaWZpZWRJ
Zk5lZWRlZCk6CisgICAgICAgIChXSS5DU1NQcm9wZXJ0eS5wcm90b3R5cGUuX3VwZGF0ZU93bmVy
U3R5bGVUZXh0KToKKyAgICAgICAgQ2hlY2sgaWYgdGhlIGN1cnJlbnQgcHJvcGVydHkgc3RhdGUg
aXMgaWRlbnRpY2FsIHRvIHRoZSBzdGF0ZSBvbiBldmVyeSBwcm9wZXJ0eSBjaGFuZ2UKKyAgICAg
ICAgc28gdGhlIGdyZWVuIGJhY2tncm91bmQgaGlnaGxpZ2h0IG9mIG1vZGlmaWVkIHByb3BlcnRp
ZXMgaXMgYWx3YXlzIGFjY3VyYXRlLgorCisgICAgICAgICogVXNlckludGVyZmFjZS9Nb2RlbHMv
Q1NTU3R5bGVEZWNsYXJhdGlvbi5qczoKKyAgICAgICAgKFdJLkNTU1N0eWxlRGVjbGFyYXRpb24u
cHJvdG90eXBlLnVubWFya01vZGlmaWVkSWZOZWVkZWQpOgorCiAyMDE5LTAzLTE2ICBOaWtpdGEg
VmFzaWx5ZXYgIDxudmFzaWx5ZXZAYXBwbGUuY29tPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6
IENoYW5nZXM6IHN0eWxlIGF0dHJpYnV0ZSBjaGFuZ2VzIGFyZW4ndCBiZWluZyB0cmFja2VkCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Db250cm9sbGVy
cy9DU1NNYW5hZ2VyLmpzIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvQ29u
dHJvbGxlcnMvQ1NTTWFuYWdlci5qcwppbmRleCAxOTlmM2Q5M2VkMC4uODc2ODQ1ODJiY2EgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJz
L0NTU01hbmFnZXIuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
Q29udHJvbGxlcnMvQ1NTTWFuYWdlci5qcwpAQCAtNDIzLDYgKzQyMywxNiBAQCBXSS5DU1NNYW5h
Z2VyID0gY2xhc3MgQ1NTTWFuYWdlciBleHRlbmRzIFdJLk9iamVjdAogCiAgICAgZ2V0IG1vZGlm
aWVkU3R5bGVzKCkKICAgICB7CisgICAgICAgIC8vIFBydW5lIHN0eWxlIGRlY2xhcmF0aW9ucyB0
aGF0IGhhdmUgbm8gbW9kaWZpZWQgcHJvcGVydGllcy4KKyAgICAgICAgZm9yIChsZXQgc3R5bGUg
b2YgdGhpcy5fbW9kaWZpZWRTdHlsZXMudmFsdWVzKCkpIHsKKyAgICAgICAgICAgIGxldCBoYXNN
b2RpZmllZCA9IHN0eWxlLnZpc2libGVQcm9wZXJ0aWVzLnNvbWUoKHByb3BlcnR5KSA9PiBwcm9w
ZXJ0eS5tb2RpZmllZCk7CisgICAgICAgICAgICBpZiAoaGFzTW9kaWZpZWQpIHsKKyAgICAgICAg
ICAgICAgICAvLyBVcGRhdGUgcHJvcGVydGllcyBhcnJheS4KKyAgICAgICAgICAgICAgICBzdHls
ZS5tYXJrTW9kaWZpZWQoKTsKKyAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAgIHN0
eWxlLnVubWFya01vZGlmaWVkSWZOZWVkZWQoKTsKKyAgICAgICAgfQorCiAgICAgICAgIHJldHVy
biBBcnJheS5mcm9tKHRoaXMuX21vZGlmaWVkU3R5bGVzLnZhbHVlcygpKTsKICAgICB9CiAKQEAg
LTQzMSw2ICs0NDEsMTEgQEAgV0kuQ1NTTWFuYWdlciA9IGNsYXNzIENTU01hbmFnZXIgZXh0ZW5k
cyBXSS5PYmplY3QKICAgICAgICAgdGhpcy5fbW9kaWZpZWRTdHlsZXMuc2V0KHN0eWxlLnN0cmlu
Z0lkLCBzdHlsZSk7CiAgICAgfQogCisgICAgcmVtb3ZlTW9kaWZpZWRTdHlsZShzdHlsZSkKKyAg
ICB7CisgICAgICAgIHRoaXMuX21vZGlmaWVkU3R5bGVzLmRlbGV0ZShzdHlsZS5zdHJpbmdJZCk7
CisgICAgfQorCiAgICAgLy8gUHJvdGVjdGVkCiAKICAgICBtZWRpYVF1ZXJ5UmVzdWx0Q2hhbmdl
ZCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2Rl
bHMvQ1NTUHJvcGVydHkuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9N
b2RlbHMvQ1NTUHJvcGVydHkuanMKaW5kZXggMmMxMDg5NWNjNzguLjkxYjE0NzgxYmU5IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvQ1NTUHJv
cGVydHkuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9kZWxz
L0NTU1Byb3BlcnR5LmpzCkBAIC0zNzcsNiArMzc3LDIzIEBAIFdJLkNTU1Byb3BlcnR5ID0gY2xh
c3MgQ1NTUHJvcGVydHkgZXh0ZW5kcyBXSS5PYmplY3QKICAgICAgICAgcmV0dXJuIHRoaXMuX2hh
c090aGVyVmVuZG9yTmFtZU9yS2V5d29yZDsKICAgICB9CiAKKyAgICBlcXVhbHMocHJvcGVydHkp
CisgICAgeworICAgICAgICBpZiAoIXByb3BlcnR5KQorICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OworCisgICAgICAgIGlmICh0aGlzID09PSBwcm9wZXJ0eSkKKyAgICAgICAgICAgIHJldHVybiB0
cnVlOworCisgICAgICAgIHJldHVybiB0aGlzLl9uYW1lID09PSBwcm9wZXJ0eS5uYW1lICYmIHRo
aXMuX3Jhd1ZhbHVlID09PSBwcm9wZXJ0eS5yYXdWYWx1ZSAmJiB0aGlzLl9lbmFibGVkID09PSBw
cm9wZXJ0eS5lbmFibGVkOworICAgIH0KKworICAgIHVubWFya01vZGlmaWVkSWZOZWVkZWQoKQor
ICAgIHsKKyAgICAgICAgaWYgKHRoaXMuZXF1YWxzKHRoaXMuX2luaXRpYWxTdGF0ZSkpCisgICAg
ICAgICAgICB0aGlzLl9pbml0aWFsU3RhdGUgPSBudWxsOworICAgIH0KKwogICAgIC8vIFByaXZh
dGUKIAogICAgIF91cGRhdGVTdHlsZVRleHQoZm9yY2VSZW1vdmUgPSBmYWxzZSkKQEAgLTQzNyw2
ICs0NTQsNyBAQCBXSS5DU1NQcm9wZXJ0eSA9IGNsYXNzIENTU1Byb3BlcnR5IGV4dGVuZHMgV0ku
T2JqZWN0CiAKICAgICAgICAgbGV0IHByb3BlcnR5V2FzUmVtb3ZlZCA9ICFuZXdUZXh0OwogICAg
ICAgICB0aGlzLl9vd25lclN0eWxlLnNoaWZ0UHJvcGVydGllc0FmdGVyKHRoaXMsIGxpbmVEZWx0
YSwgY29sdW1uRGVsdGEsIHByb3BlcnR5V2FzUmVtb3ZlZCk7CisgICAgICAgIHRoaXMudW5tYXJr
TW9kaWZpZWRJZk5lZWRlZCgpOwogICAgIH0KIAogICAgIF9wcmVwZW5kU2VtaWNvbG9uSWZOZWVk
ZWQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9k
ZWxzL0NTU1N0eWxlRGVjbGFyYXRpb24uanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlcklu
dGVyZmFjZS9Nb2RlbHMvQ1NTU3R5bGVEZWNsYXJhdGlvbi5qcwppbmRleCBlMjc3NDg4NjU4Zi4u
YTUxNDVhN2Y4MGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJm
YWNlL01vZGVscy9DU1NTdHlsZURlY2xhcmF0aW9uLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0
b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9DU1NTdHlsZURlY2xhcmF0aW9uLmpzCkBAIC0zODUs
NiArMzg1LDI1IEBAIFdJLkNTU1N0eWxlRGVjbGFyYXRpb24gPSBjbGFzcyBDU1NTdHlsZURlY2xh
cmF0aW9uIGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgICAgIFdJLmNzc01hbmFnZXIuYWRkTW9kaWZp
ZWRTdHlsZSh0aGlzKTsKICAgICB9CiAKKyAgICB1bm1hcmtNb2RpZmllZElmTmVlZGVkKCkKKyAg
ICB7CisgICAgICAgIGlmICghdGhpcy5faW5pdGlhbFN0YXRlKQorICAgICAgICAgICAgcmV0dXJu
OworCisgICAgICAgIGxldCB2aXNpYmxlUHJvcGVydGllcyA9IHRoaXMudmlzaWJsZVByb3BlcnRp
ZXM7CisgICAgICAgIGlmICh0aGlzLl9pbml0aWFsU3RhdGUudmlzaWJsZVByb3BlcnRpZXMubGVu
Z3RoICE9PSB2aXNpYmxlUHJvcGVydGllcy5sZW5ndGgpCisgICAgICAgICAgICByZXR1cm47CisK
KyAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCB2aXNpYmxlUHJvcGVydGllcy5sZW5ndGg7ICsr
aSkgeworICAgICAgICAgICAgaWYgKCF2aXNpYmxlUHJvcGVydGllc1tpXS5lcXVhbHModGhpcy5f
aW5pdGlhbFN0YXRlLnZpc2libGVQcm9wZXJ0aWVzW2ldKSkKKyAgICAgICAgICAgICAgICByZXR1
cm47CisgICAgICAgIH0KKworICAgICAgICB0aGlzLl9pbml0aWFsU3RhdGUgPSBudWxsOworCisg
ICAgICAgIFdJLmNzc01hbmFnZXIucmVtb3ZlTW9kaWZpZWRTdHlsZSh0aGlzKTsKKyAgICB9CisK
ICAgICBzaGlmdFByb3BlcnRpZXNBZnRlcihjc3NQcm9wZXJ0eSwgbGluZURlbHRhLCBjb2x1bW5E
ZWx0YSwgcHJvcGVydHlXYXNSZW1vdmVkKQogICAgIHsKICAgICAgICAgLy8gY3NzUHJvcGVydHku
aW5kZXggY291bGQgYmUgc2V0IHRvIE5hTiBieSBXSS5DU1NTdHlsZURlY2xhcmF0aW9uLnByb3Rv
dHlwZS51cGRhdGUuCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>365897</attachid>
            <date>2019-03-25 14:08:01 -0700</date>
            <delta_ts>2019-04-14 19:05:20 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>patch.txt</filename>
            <type>text/plain</type>
            <size>8647</size>
            <attacher name="Nikita Vasilyev">nvasilyev</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvQ2hhbmdlTG9nCmluZGV4IDQzZDQ4YWJhZWM4Li5mMTczNDBkMGViMiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkluc3BlY3RvclVJL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2Vi
SW5zcGVjdG9yVUkvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzEgQEAKKzIwMTktMDMtMjUgIE5pa2l0
YSBWYXNpbHlldiAgPG52YXNpbHlldkBhcHBsZS5jb20+CisKKyAgICAgICAgV2ViIEluc3BlY3Rv
cjogQ1NTIENoYW5nZXM6IHJlc2V0dGluZyB2YWx1ZSBzdGlsbCBzaG93cyBpbiB0aGUgZGlmZgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTk0NjA3Cisg
ICAgICAgIDxyZGFyOi8vcHJvYmxlbS80ODA1MDI0OD4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvQ1NT
TWFuYWdlci5qczoKKyAgICAgICAgKFdJLkNTU01hbmFnZXIucHJvdG90eXBlLmdldCBtb2RpZmll
ZFN0eWxlcyk6CisgICAgICAgIChXSS5DU1NNYW5hZ2VyLnByb3RvdHlwZS5yZW1vdmVNb2RpZmll
ZFN0eWxlKToKKyAgICAgICAgKiBVc2VySW50ZXJmYWNlL01vZGVscy9DU1NQcm9wZXJ0eS5qczoK
KyAgICAgICAgKFdJLkNTU1Byb3BlcnR5LnByb3RvdHlwZS5lcXVhbHMpOgorICAgICAgICAoV0ku
Q1NTUHJvcGVydHkucHJvdG90eXBlLnVubWFya01vZGlmaWVkSWZOZWVkZWQpOgorICAgICAgICAo
V0kuQ1NTUHJvcGVydHkucHJvdG90eXBlLl91cGRhdGVPd25lclN0eWxlVGV4dCk6CisgICAgICAg
IENoZWNrIGlmIHRoZSBjdXJyZW50IHByb3BlcnR5IHN0YXRlIGlzIGlkZW50aWNhbCB0byB0aGUg
c3RhdGUgb24gZXZlcnkgcHJvcGVydHkgY2hhbmdlCisgICAgICAgIHNvIHRoZSBncmVlbiBiYWNr
Z3JvdW5kIGhpZ2hsaWdodCBvZiBtb2RpZmllZCBwcm9wZXJ0aWVzIGlzIGFsd2F5cyBhY2N1cmF0
ZS4KKworICAgICAgICAqIFVzZXJJbnRlcmZhY2UvTW9kZWxzL0NTU1N0eWxlRGVjbGFyYXRpb24u
anM6CisgICAgICAgIChXSS5DU1NTdHlsZURlY2xhcmF0aW9uLnByb3RvdHlwZS51cGRhdGVNb2Rp
ZmllZFN0YXRlKToKKyAgICAgICAgRmluZCBhbmQgcmVtb3ZlIHN0eWxlIGRlY2xhcmF0aW9ucyB0
aGF0IHdlcmUgcmV2ZXJ0ZWQgdG8gdGhlaXIgb3JpZ2luYWwgc3RhdGUKKyAgICAgICAgd2hlbiB0
aGUgQ2hhbmdlcyBwYW5lbCBpcyBzZWxlY3RlZC4KKworICAgICAgICAqIFVzZXJJbnRlcmZhY2Uv
Vmlld3MvQ2hhbmdlc0RldGFpbHNTaWRlYmFyUGFuZWwuanM6CisgICAgICAgIChXSS5DaGFuZ2Vz
RGV0YWlsc1NpZGViYXJQYW5lbC5wcm90b3R5cGUuX2NyZWF0ZVJ1bGVFbGVtZW50KToKKyAgICAg
ICAgV2hlbiBhIHJlbW92ZWQgQ1NTIHByb3BlcnR5IGlzIGZvbGxvd2VkIGJ5IHRoZSBzYW1lIGFk
ZGVkIHByb3BlcnR5LCBkaXNwbGF5IGl0CisgICAgICAgIGFzIGFuIHVuY2hhbmdlZCBwcm9wZXJ0
eS4KKwogMjAxOS0wMy0xNiAgTmlraXRhIFZhc2lseWV2ICA8bnZhc2lseWV2QGFwcGxlLmNvbT4K
IAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBDaGFuZ2VzOiBzdHlsZSBhdHRyaWJ1dGUgY2hhbmdl
cyBhcmVuJ3QgYmVpbmcgdHJhY2tlZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJ
L1VzZXJJbnRlcmZhY2UvQ29udHJvbGxlcnMvQ1NTTWFuYWdlci5qcyBiL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0NTU01hbmFnZXIuanMKaW5kZXggMTk5
ZjNkOTNlZDAuLjdjYmYwNTFjNzE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkv
VXNlckludGVyZmFjZS9Db250cm9sbGVycy9DU1NNYW5hZ2VyLmpzCisrKyBiL1NvdXJjZS9XZWJJ
bnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL0NvbnRyb2xsZXJzL0NTU01hbmFnZXIuanMKQEAgLTQy
Myw2ICs0MjMsMTAgQEAgV0kuQ1NTTWFuYWdlciA9IGNsYXNzIENTU01hbmFnZXIgZXh0ZW5kcyBX
SS5PYmplY3QKIAogICAgIGdldCBtb2RpZmllZFN0eWxlcygpCiAgICAgeworICAgICAgICAvLyBQ
cnVuZSBzdHlsZSBkZWNsYXJhdGlvbnMgdGhhdCBoYXZlIG5vIG1vZGlmaWVkIHByb3BlcnRpZXMu
CisgICAgICAgIGZvciAobGV0IHN0eWxlIG9mIHRoaXMuX21vZGlmaWVkU3R5bGVzLnZhbHVlcygp
KQorICAgICAgICAgICAgc3R5bGUudXBkYXRlTW9kaWZpZWRTdGF0ZSgpOworCiAgICAgICAgIHJl
dHVybiBBcnJheS5mcm9tKHRoaXMuX21vZGlmaWVkU3R5bGVzLnZhbHVlcygpKTsKICAgICB9CiAK
QEAgLTQzMSw2ICs0MzUsMTEgQEAgV0kuQ1NTTWFuYWdlciA9IGNsYXNzIENTU01hbmFnZXIgZXh0
ZW5kcyBXSS5PYmplY3QKICAgICAgICAgdGhpcy5fbW9kaWZpZWRTdHlsZXMuc2V0KHN0eWxlLnN0
cmluZ0lkLCBzdHlsZSk7CiAgICAgfQogCisgICAgcmVtb3ZlTW9kaWZpZWRTdHlsZShzdHlsZSkK
KyAgICB7CisgICAgICAgIHRoaXMuX21vZGlmaWVkU3R5bGVzLmRlbGV0ZShzdHlsZS5zdHJpbmdJ
ZCk7CisgICAgfQorCiAgICAgLy8gUHJvdGVjdGVkCiAKICAgICBtZWRpYVF1ZXJ5UmVzdWx0Q2hh
bmdlZCgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9N
b2RlbHMvQ1NTUHJvcGVydHkuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFj
ZS9Nb2RlbHMvQ1NTUHJvcGVydHkuanMKaW5kZXggMmMxMDg5NWNjNzguLjkxYjE0NzgxYmU5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9Nb2RlbHMvQ1NT
UHJvcGVydHkuanMKKysrIGIvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvTW9k
ZWxzL0NTU1Byb3BlcnR5LmpzCkBAIC0zNzcsNiArMzc3LDIzIEBAIFdJLkNTU1Byb3BlcnR5ID0g
Y2xhc3MgQ1NTUHJvcGVydHkgZXh0ZW5kcyBXSS5PYmplY3QKICAgICAgICAgcmV0dXJuIHRoaXMu
X2hhc090aGVyVmVuZG9yTmFtZU9yS2V5d29yZDsKICAgICB9CiAKKyAgICBlcXVhbHMocHJvcGVy
dHkpCisgICAgeworICAgICAgICBpZiAoIXByb3BlcnR5KQorICAgICAgICAgICAgcmV0dXJuIGZh
bHNlOworCisgICAgICAgIGlmICh0aGlzID09PSBwcm9wZXJ0eSkKKyAgICAgICAgICAgIHJldHVy
biB0cnVlOworCisgICAgICAgIHJldHVybiB0aGlzLl9uYW1lID09PSBwcm9wZXJ0eS5uYW1lICYm
IHRoaXMuX3Jhd1ZhbHVlID09PSBwcm9wZXJ0eS5yYXdWYWx1ZSAmJiB0aGlzLl9lbmFibGVkID09
PSBwcm9wZXJ0eS5lbmFibGVkOworICAgIH0KKworICAgIHVubWFya01vZGlmaWVkSWZOZWVkZWQo
KQorICAgIHsKKyAgICAgICAgaWYgKHRoaXMuZXF1YWxzKHRoaXMuX2luaXRpYWxTdGF0ZSkpCisg
ICAgICAgICAgICB0aGlzLl9pbml0aWFsU3RhdGUgPSBudWxsOworICAgIH0KKwogICAgIC8vIFBy
aXZhdGUKIAogICAgIF91cGRhdGVTdHlsZVRleHQoZm9yY2VSZW1vdmUgPSBmYWxzZSkKQEAgLTQz
Nyw2ICs0NTQsNyBAQCBXSS5DU1NQcm9wZXJ0eSA9IGNsYXNzIENTU1Byb3BlcnR5IGV4dGVuZHMg
V0kuT2JqZWN0CiAKICAgICAgICAgbGV0IHByb3BlcnR5V2FzUmVtb3ZlZCA9ICFuZXdUZXh0Owog
ICAgICAgICB0aGlzLl9vd25lclN0eWxlLnNoaWZ0UHJvcGVydGllc0FmdGVyKHRoaXMsIGxpbmVE
ZWx0YSwgY29sdW1uRGVsdGEsIHByb3BlcnR5V2FzUmVtb3ZlZCk7CisgICAgICAgIHRoaXMudW5t
YXJrTW9kaWZpZWRJZk5lZWRlZCgpOwogICAgIH0KIAogICAgIF9wcmVwZW5kU2VtaWNvbG9uSWZO
ZWVkZWQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2Uv
TW9kZWxzL0NTU1N0eWxlRGVjbGFyYXRpb24uanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNl
ckludGVyZmFjZS9Nb2RlbHMvQ1NTU3R5bGVEZWNsYXJhdGlvbi5qcwppbmRleCBlMjc3NDg4NjU4
Zi4uMjJkYjc5YjI2NTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50
ZXJmYWNlL01vZGVscy9DU1NTdHlsZURlY2xhcmF0aW9uLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNw
ZWN0b3JVSS9Vc2VySW50ZXJmYWNlL01vZGVscy9DU1NTdHlsZURlY2xhcmF0aW9uLmpzCkBAIC0z
ODUsNiArMzg1LDMxIEBAIFdJLkNTU1N0eWxlRGVjbGFyYXRpb24gPSBjbGFzcyBDU1NTdHlsZURl
Y2xhcmF0aW9uIGV4dGVuZHMgV0kuT2JqZWN0CiAgICAgICAgIFdJLmNzc01hbmFnZXIuYWRkTW9k
aWZpZWRTdHlsZSh0aGlzKTsKICAgICB9CiAKKyAgICB1cGRhdGVNb2RpZmllZFN0YXRlKCkKKyAg
ICB7CisgICAgICAgIGlmICghdGhpcy5faW5pdGlhbFN0YXRlKQorICAgICAgICAgICAgcmV0dXJu
OworCisgICAgICAgIGxldCBoYXNNb2RpZmllZCA9IHRoaXMudmlzaWJsZVByb3BlcnRpZXMuc29t
ZSgocHJvcGVydHkpID0+IHByb3BlcnR5Lm1vZGlmaWVkKTsKKyAgICAgICAgaWYgKGhhc01vZGlm
aWVkKSB7CisgICAgICAgICAgICAvLyBVcGRhdGUgcHJvcGVydGllcyBhcnJheS4KKyAgICAgICAg
ICAgIHRoaXMubWFya01vZGlmaWVkKCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBs
ZXQgdmlzaWJsZVByb3BlcnRpZXMgPSB0aGlzLnZpc2libGVQcm9wZXJ0aWVzOworICAgICAgICAg
ICAgbGV0IGluaXRpYWxWaXNpYmxlUHJvcGVydGllcyA9IHRoaXMuX2luaXRpYWxTdGF0ZS52aXNp
YmxlUHJvcGVydGllczsKKyAgICAgICAgICAgIGlmIChpbml0aWFsVmlzaWJsZVByb3BlcnRpZXMu
bGVuZ3RoICE9PSB2aXNpYmxlUHJvcGVydGllcy5sZW5ndGgpCisgICAgICAgICAgICAgICAgcmV0
dXJuOworCisgICAgICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHZpc2libGVQcm9wZXJ0aWVz
Lmxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICAgICAgaWYgKCF2aXNpYmxlUHJvcGVydGllc1tp
XS5lcXVhbHMoaW5pdGlhbFZpc2libGVQcm9wZXJ0aWVzW2ldKSkKKyAgICAgICAgICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICAgICAgfQorCisgICAgICAgICAgICB0aGlzLl9pbml0aWFsU3Rh
dGUgPSBudWxsOworICAgICAgICAgICAgV0kuY3NzTWFuYWdlci5yZW1vdmVNb2RpZmllZFN0eWxl
KHRoaXMpOworICAgICAgICB9CisgICAgfQorCiAgICAgc2hpZnRQcm9wZXJ0aWVzQWZ0ZXIoY3Nz
UHJvcGVydHksIGxpbmVEZWx0YSwgY29sdW1uRGVsdGEsIHByb3BlcnR5V2FzUmVtb3ZlZCkKICAg
ICB7CiAgICAgICAgIC8vIGNzc1Byb3BlcnR5LmluZGV4IGNvdWxkIGJlIHNldCB0byBOYU4gYnkg
V0kuQ1NTU3R5bGVEZWNsYXJhdGlvbi5wcm90b3R5cGUudXBkYXRlLgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkluc3BlY3RvclVJL1VzZXJJbnRlcmZhY2UvVmlld3MvQ2hhbmdlc0RldGFpbHNTaWRl
YmFyUGFuZWwuanMgYi9Tb3VyY2UvV2ViSW5zcGVjdG9yVUkvVXNlckludGVyZmFjZS9WaWV3cy9D
aGFuZ2VzRGV0YWlsc1NpZGViYXJQYW5lbC5qcwppbmRleCA4ZmVmN2FmZjVhNi4uMWIyOWU2MjEz
NmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJJbnNwZWN0b3JVSS9Vc2VySW50ZXJmYWNlL1ZpZXdz
L0NoYW5nZXNEZXRhaWxzU2lkZWJhclBhbmVsLmpzCisrKyBiL1NvdXJjZS9XZWJJbnNwZWN0b3JV
SS9Vc2VySW50ZXJmYWNlL1ZpZXdzL0NoYW5nZXNEZXRhaWxzU2lkZWJhclBhbmVsLmpzCkBAIC0x
NDksMjkgKzE0OSw0MiBAQCBXSS5DaGFuZ2VzRGV0YWlsc1NpZGViYXJQYW5lbCA9IGNsYXNzIENo
YW5nZXNEZXRhaWxzU2lkZWJhclBhbmVsIGV4dGVuZHMgV0kuRE9NRAogCiAgICAgICAgIHNlbGVj
dG9yTGluZUVsZW1lbnQuYXBwZW5kKCIge1xuIik7CiAKLSAgICAgICAgbGV0IGFwcGVuZFByb3Bl
cnR5ID0gKGNzc1Byb3BlcnR5LCBjbGFzc05hbWUpID0+IHsKLSAgICAgICAgICAgIGxldCBwcm9w
ZXJ0eUxpbmVFbGVtZW50ID0gcnVsZUVsZW1lbnQuYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgiZGl2IikpOwotICAgICAgICAgICAgcHJvcGVydHlMaW5lRWxlbWVudC5jbGFzc0xp
c3QuYWRkKCJjc3MtcHJvcGVydHktbGluZSIsIGNsYXNzTmFtZSk7Ci0gICAgICAgICAgICBsZXQg
c3R5bGVQcm9wZXJ0eVZpZXcgPSBuZXcgV0kuU3ByZWFkc2hlZXRTdHlsZVByb3BlcnR5KG51bGws
IGNzc1Byb3BlcnR5LCB7cmVhZE9ubHk6IHRydWV9KTsKLSAgICAgICAgICAgIHByb3BlcnR5TGlu
ZUVsZW1lbnQuYXBwZW5kKFdJLmluZGVudFN0cmluZygpLCBzdHlsZVByb3BlcnR5Vmlldy5lbGVt
ZW50LCAiXG4iKTsKLSAgICAgICAgfTsKLQogICAgICAgICBsZXQgaW5pdGlhbENTU1Byb3BlcnRp
ZXMgPSBzdHlsZS5pbml0aWFsU3RhdGUudmlzaWJsZVByb3BlcnRpZXM7CiAgICAgICAgIGxldCBj
c3NQcm9wZXJ0aWVzID0gc3R5bGUudmlzaWJsZVByb3BlcnRpZXM7CiAKKyAgICAgICAgbGV0IHBy
b3BlcnRpZXNEaWZmID0gW107CiAgICAgICAgIEFycmF5LmRpZmZBcnJheXMoaW5pdGlhbENTU1By
b3BlcnRpZXMsIGNzc1Byb3BlcnRpZXMsIChjc3NQcm9wZXJ0eSwgYWN0aW9uKSA9PiB7CiAgICAg
ICAgICAgICBpZiAoYWN0aW9uID09PSAwKSB7CiAgICAgICAgICAgICAgICAgaWYgKGNzc1Byb3Bl
cnR5Lm1vZGlmaWVkKSB7Ci0gICAgICAgICAgICAgICAgICAgIGFwcGVuZFByb3BlcnR5KGNzc1By
b3BlcnR5LmluaXRpYWxTdGF0ZSwgInJlbW92ZWQiKTsKLSAgICAgICAgICAgICAgICAgICAgYXBw
ZW5kUHJvcGVydHkoY3NzUHJvcGVydHksICJhZGRlZCIpOworICAgICAgICAgICAgICAgICAgICBw
cm9wZXJ0aWVzRGlmZi5wdXNoKHtjc3NQcm9wZXJ0eTogY3NzUHJvcGVydHkuaW5pdGlhbFN0YXRl
LCBhY3Rpb246IC0xfSk7CisgICAgICAgICAgICAgICAgICAgIHByb3BlcnRpZXNEaWZmLnB1c2go
e2Nzc1Byb3BlcnR5LCBhY3Rpb246IDF9KTsKICAgICAgICAgICAgICAgICB9IGVsc2UKLSAgICAg
ICAgICAgICAgICAgICAgYXBwZW5kUHJvcGVydHkoY3NzUHJvcGVydHksICJ1bmNoYW5nZWQiKTsK
LSAgICAgICAgICAgIH0gZWxzZSBpZiAoYWN0aW9uID09PSAxKQotICAgICAgICAgICAgICAgIGFw
cGVuZFByb3BlcnR5KGNzc1Byb3BlcnR5LCAiYWRkZWQiKTsKLSAgICAgICAgICAgIGVsc2UgaWYg
KGFjdGlvbiA9PT0gLTEpCi0gICAgICAgICAgICAgICAgYXBwZW5kUHJvcGVydHkoY3NzUHJvcGVy
dHksICJyZW1vdmVkIik7CisgICAgICAgICAgICAgICAgICAgIHByb3BlcnRpZXNEaWZmLnB1c2go
e2Nzc1Byb3BlcnR5LCBhY3Rpb259KTsKKyAgICAgICAgICAgIH0gZWxzZSBpZiAoYWN0aW9uID09
PSAxKSB7CisgICAgICAgICAgICAgICAgaWYgKHByb3BlcnRpZXNEaWZmLmxhc3RWYWx1ZSAmJiBw
cm9wZXJ0aWVzRGlmZi5sYXN0VmFsdWUuYWN0aW9uID09PSAtMSAmJiBjc3NQcm9wZXJ0eS5lcXVh
bHMocHJvcGVydGllc0RpZmYubGFzdFZhbHVlLmNzc1Byb3BlcnR5KSkgeworICAgICAgICAgICAg
ICAgICAgICAvLyBTa2lwIGlmIHRoZSBhZGRlZCBwcm9wZXJ0eSBtYXRjaGVzIHRoZSByZW1vdmVk
IG9uZS4KKyAgICAgICAgICAgICAgICAgICAgcHJvcGVydGllc0RpZmYubGFzdFZhbHVlLmFjdGlv
biA9IDA7CisgICAgICAgICAgICAgICAgfSBlbHNlCisgICAgICAgICAgICAgICAgICAgIHByb3Bl
cnRpZXNEaWZmLnB1c2goe2Nzc1Byb3BlcnR5LCBhY3Rpb259KTsKKyAgICAgICAgICAgIH0gZWxz
ZSBpZiAoYWN0aW9uID09PSAtMSkKKyAgICAgICAgICAgICAgICBwcm9wZXJ0aWVzRGlmZi5wdXNo
KHtjc3NQcm9wZXJ0eSwgYWN0aW9ufSk7CiAgICAgICAgIH0pOwogCisgICAgICAgIGZvciAobGV0
IHtjc3NQcm9wZXJ0eSwgYWN0aW9ufSBvZiBwcm9wZXJ0aWVzRGlmZikgeworICAgICAgICAgICAg
bGV0IGNsYXNzTmFtZSA9ICIiOworICAgICAgICAgICAgaWYgKGFjdGlvbiA9PT0gMSkKKyAgICAg
ICAgICAgICAgICBjbGFzc05hbWUgPSAiYWRkZWQiOworICAgICAgICAgICAgZWxzZSBpZiAoYWN0
aW9uID09PSAtMSkKKyAgICAgICAgICAgICAgICBjbGFzc05hbWUgPSAicmVtb3ZlZCI7CisgICAg
ICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgY2xhc3NOYW1lID0gInVuY2hhbmdlZCI7CisK
KyAgICAgICAgICAgIGxldCBwcm9wZXJ0eUxpbmVFbGVtZW50ID0gcnVsZUVsZW1lbnQuYXBwZW5k
Q2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiZGl2IikpOworICAgICAgICAgICAgcHJvcGVy
dHlMaW5lRWxlbWVudC5jbGFzc0xpc3QuYWRkKCJjc3MtcHJvcGVydHktbGluZSIsIGNsYXNzTmFt
ZSk7CisgICAgICAgICAgICBsZXQgc3R5bGVQcm9wZXJ0eVZpZXcgPSBuZXcgV0kuU3ByZWFkc2hl
ZXRTdHlsZVByb3BlcnR5KG51bGwsIGNzc1Byb3BlcnR5LCB7cmVhZE9ubHk6IHRydWV9KTsKKyAg
ICAgICAgICAgIHByb3BlcnR5TGluZUVsZW1lbnQuYXBwZW5kKFdJLmluZGVudFN0cmluZygpLCBz
dHlsZVByb3BlcnR5Vmlldy5lbGVtZW50LCAiXG4iKTsKKyAgICAgICAgfQorCiAgICAgICAgIGxl
dCBjbG9zZUJyYWNlRWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNwYW4iKTsKICAg
ICAgICAgY2xvc2VCcmFjZUVsZW1lbnQuY2xhc3NOYW1lID0gImNsb3NlLWJyYWNlIjsKICAgICAg
ICAgY2xvc2VCcmFjZUVsZW1lbnQudGV4dENvbnRlbnQgPSAifSI7Cg==
</data>
<flag name="review"
          id="382316"
          type_id="1"
          status="-"
          setter="nvasilyev"
    />
    <flag name="commit-queue"
          id="382317"
          type_id="3"
          status="-"
          setter="nvasilyev"
    />
          </attachment>
      

    </bug>

</bugzilla>