<?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>96626</bug_id>
          
          <creation_ts>2012-09-13 03:00:34 -0700</creation_ts>
          <short_desc>Web Inspector: Group selectors to highlight matched selector in the Styles pane of Elements Panel</short_desc>
          <delta_ts>2012-09-21 03:56:49 -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 (Deprecated)</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alexander Pavlov (apavlov)">apavlov</reporter>
          <assigned_to name="Alexander Pavlov (apavlov)">apavlov</assigned_to>
          <cc>apavlov</cc>
    
    <cc>bweinstein</cc>
    
    <cc>doekman</cc>
    
    <cc>joepeck</cc>
    
    <cc>keishi</cc>
    
    <cc>loislo</cc>
    
    <cc>pfeldman</cc>
    
    <cc>pmuellr</cc>
    
    <cc>rik</cc>
    
    <cc>timothy</cc>
    
    <cc>vsevik</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>719287</commentid>
    <comment_count>0</comment_count>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2012-09-13 03:00:34 -0700</bug_when>
    <thetext>It would be really helpful if the Styles pane, in the Elements Panel of the Web Inspector, highlighted or displayed in some way which selector was matched in a group selector. On large projects, selectors can be extended many times, leading to large and confusing selectors. When debugging specificity it would be immensely helpful if we could easily see which selector was matched.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>720484</commentid>
    <comment_count>1</comment_count>
      <attachid>164080</attachid>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2012-09-14 02:50:47 -0700</bug_when>
    <thetext>Created attachment 164080
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>720485</commentid>
    <comment_count>2</comment_count>
      <attachid>164081</attachid>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2012-09-14 02:52:08 -0700</bug_when>
    <thetext>Created attachment 164081
[IMAGE] Screenshot of matching group selectors with the patch applied</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>720518</commentid>
    <comment_count>3</comment_count>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2012-09-14 03:28:58 -0700</bug_when>
    <thetext>Upstreaming http://code.google.com/p/chromium/issues/detail?id=145483</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>720537</commentid>
    <comment_count>4</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-09-14 03:45:33 -0700</bug_when>
    <thetext>I would dim non-matching selectors instead.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>720544</commentid>
    <comment_count>5</comment_count>
      <attachid>164080</attachid>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2012-09-14 03:56:37 -0700</bug_when>
    <thetext>Comment on attachment 164080
Patch

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

&gt; Source/WebCore/inspector/front-end/StylesSidebarPane.js:1154
&gt; +        var selectors = selectorText.split(&quot;,&quot;).map(trim);

var selectors = selectorText.split(&quot;,&quot;).map(String.prototype.trim);

&gt; Source/WebCore/inspector/front-end/StylesSidebarPane.js:1177
&gt; +            if (matches &amp;&amp; node === paneNode)

s/paneNode/this._parentPane.node/

&gt; Source/WebCore/inspector/front-end/StylesSidebarPane.js:1178
&gt; +                selectors[selectorIndex] = &quot;&lt;span class=\&quot;selector-matches\&quot;&gt;&quot; + selectors[selectorIndex].escapeHTML() + &quot;&lt;/span&gt;&quot;;

Let&apos;s create DOM element and setContent instead.

&gt; Source/WebCore/inspector/front-end/StylesSidebarPane.js:1179
&gt; +            if (isLast) {

selectorIndex === selectors.length - 1

&gt; Source/WebCore/inspector/front-end/StylesSidebarPane.js:1180
&gt; +                self._selectorElement.innerHTML = selectors.join(&quot;, &quot;);

We should use appendChild</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>720553</commentid>
    <comment_count>6</comment_count>
      <attachid>164080</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-09-14 04:04:16 -0700</bug_when>
    <thetext>Comment on attachment 164080
Patch

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

&gt;&gt; Source/WebCore/inspector/front-end/StylesSidebarPane.js:1180
&gt;&gt; +                self._selectorElement.innerHTML = selectors.join(&quot;, &quot;);
&gt; 
&gt; We should use appendChild

+1. Let&apos;s agree that any assignment of innerHTML to non-empy string is an automatic r- in the inspector codebase.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>720611</commentid>
    <comment_count>7</comment_count>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2012-09-14 05:13:31 -0700</bug_when>
    <thetext>(In reply to comment #6)
&gt; (From update of attachment 164080 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=164080&amp;action=review
&gt; 
&gt; &gt;&gt; Source/WebCore/inspector/front-end/StylesSidebarPane.js:1180
&gt; &gt;&gt; +                self._selectorElement.innerHTML = selectors.join(&quot;, &quot;);
&gt; &gt; 
&gt; &gt; We should use appendChild
&gt; 
&gt; +1. Let&apos;s agree that any assignment of innerHTML to non-empy string is an automatic r- in the inspector codebase.

I don&apos;t think there is a valid reason to use innerHTML for empty strings.
element.textContent = &quot;&quot; FTW</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>720737</commentid>
    <comment_count>8</comment_count>
      <attachid>164143</attachid>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2012-09-14 07:20:39 -0700</bug_when>
    <thetext>Created attachment 164143
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>720777</commentid>
    <comment_count>9</comment_count>
      <attachid>164156</attachid>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2012-09-14 08:14:29 -0700</bug_when>
    <thetext>Created attachment 164156
[IMAGE] Screenshot - take 2

Non-matching selectors are dimmed. When a section is hovered, all non-matching selectors turn black to improve readability. Inherited element styles&apos; selectors are matched against their respective elements.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>720823</commentid>
    <comment_count>10</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-09-14 09:17:27 -0700</bug_when>
    <thetext>UI lgtm. Why is html rendered as matching in the inherited from body section?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>721737</commentid>
    <comment_count>11</comment_count>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2012-09-17 00:45:16 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; UI lgtm. Why is html rendered as matching in the inherited from body section?

It&apos;s because the mouse pointer is hovering over the section. In that case we un-dim the dimmed selectors to aid users with poor monitors :) and eyesight. Seva said that we should not regress the UI readability in general (that is, it should be possible to view the UI that is not harder to read than it was previously.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>721738</commentid>
    <comment_count>12</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-09-17 00:49:42 -0700</bug_when>
    <thetext>I would only make it solid upon selector editing. I think dimmed selector is still very distinguishable.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>721764</commentid>
    <comment_count>13</comment_count>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2012-09-17 02:09:53 -0700</bug_when>
    <thetext>(In reply to comment #12)
&gt; I would only make it solid upon selector editing. I think dimmed selector is still very distinguishable.

I trust your eyesight! :) Uploading an updated patch shortly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>721768</commentid>
    <comment_count>14</comment_count>
      <attachid>164359</attachid>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2012-09-17 02:23:40 -0700</bug_when>
    <thetext>Created attachment 164359
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>721830</commentid>
    <comment_count>15</comment_count>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2012-09-17 05:46:38 -0700</bug_when>
    <thetext>Committed r128746: &lt;http://trac.webkit.org/changeset/128746&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>722635</commentid>
    <comment_count>16</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-09-18 03:47:49 -0700</bug_when>
    <thetext>I don&apos;t see why we need to make 2 additional requests per matched selectors call. We should change the protocol to return ready-to-use data instead.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>722647</commentid>
    <comment_count>17</comment_count>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2012-09-18 04:14:46 -0700</bug_when>
    <thetext>(In reply to comment #16)
&gt; I don&apos;t see why we need to make 2 additional requests per matched selectors call. We should change the protocol to return ready-to-use data instead.

Are you suggesting to send indices of matched selectors in groups up-front?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>722653</commentid>
    <comment_count>18</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-09-18 04:23:21 -0700</bug_when>
    <thetext>When sending rules, we can send selectors in the model form (array of entities withe the flag responsible for those matching).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>725400</commentid>
    <comment_count>19</comment_count>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2012-09-21 03:56:49 -0700</bug_when>
    <thetext>*** Bug 31211 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>164080</attachid>
            <date>2012-09-14 02:50:47 -0700</date>
            <delta_ts>2012-09-14 07:20:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-96626-20120914135018.patch</filename>
            <type>text/plain</type>
            <size>14970</size>
            <attacher name="Alexander Pavlov (apavlov)">apavlov</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI4NTY1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjY2M2ZmZDI0Zjg1ZGE1
ZTFmZjExNGUyMWI0YWJiOGVlMjA3ODUxNi4uODJjNjU2NjdhYWMzMTZmOGNlMmFmMjVmOWNmOGU3
OWZjY2I3N2RiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI5IEBACisyMDEyLTA5LTEzICBBbGV4
YW5kZXIgUGF2bG92ICA8YXBhdmxvdkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgV2ViIEluc3Bl
Y3RvcjogR3JvdXAgc2VsZWN0b3JzIHRvIGhpZ2hsaWdodCBtYXRjaGVkIHNlbGVjdG9yIGluIHRo
ZSBTdHlsZXMgcGFuZSBvZiBFbGVtZW50cyBQYW5lbAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTY2MjYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBJbnRyb2R1Y2VkIGV2YWx1YXRpb24gb2YgZWxlbWVudC53
ZWJraXRNYXRjaGVzU2VsZWN0b3IoKSBmb3IgZXZlcnkgcGFydCBvZiBhIHNlbGVjdG9yIGdyb3Vw
IChkZWxpbWl0ZWQgYnkgY29tbWFzKS4KKyAgICAgICAgTWF0Y2hpbmcgc2VsZWN0b3JzIGFyZSBo
aWdobGlnaHRlZCBvbmx5IGluIGdyb3Vwcy4KKworICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1l
bmQvU3R5bGVzU2lkZWJhclBhbmUuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU3R5bGVzU2lk
ZWJhclBhbmUucHJvdG90eXBlLl9pbm5lclJlYnVpbGRVcGRhdGUubWFya0NhbGxiYWNrKToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5TdHlsZXNTaWRlYmFyUGFuZS5wcm90b3R5cGUuX2lubmVyUmVi
dWlsZFVwZGF0ZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU3R5bGVQcm9wZXJ0aWVzU2VjdGlv
bik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU3R5bGVQcm9wZXJ0aWVzU2VjdGlvbi5wcm90b3R5
cGUuX21hcmtNYXRjaGVkU2VsZWN0b3JzSW5Hcm91cC5teWNhbGxiYWNrKToKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5TdHlsZVByb3BlcnRpZXNTZWN0aW9uLnByb3RvdHlwZS5fbWFya01hdGNoZWRT
ZWxlY3RvcnNJbkdyb3VwLnRyaW0pOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlN0eWxlUHJvcGVy
dGllc1NlY3Rpb24ucHJvdG90eXBlLl9tYXJrTWF0Y2hlZFNlbGVjdG9yc0luR3JvdXAucmVzb2x2
ZWRDYWxsYmFjayk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU3R5bGVQcm9wZXJ0aWVzU2VjdGlv
bi5wcm90b3R5cGUuX21hcmtNYXRjaGVkU2VsZWN0b3JzSW5Hcm91cCk6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuU3R5bGVQcm9wZXJ0aWVzU2VjdGlvbi5wcm90b3R5cGUuX21hcmtNYXRjaGVkU2Vs
ZWN0b3JzSW5Hcm91cC5tYXRjaGVzQ2FsbGJhY2spOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlN0
eWxlUHJvcGVydGllc1NlY3Rpb24ucHJvdG90eXBlLnN0YXJ0RWRpdGluZ1NlbGVjdG9yKToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5TdHlsZVByb3BlcnRpZXNTZWN0aW9uLnByb3RvdHlwZS5fbW92
ZUVkaXRvckZyb21TZWxlY3Rvci5tYXJrQ2FsbGJhY2spOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LlN0eWxlUHJvcGVydGllc1NlY3Rpb24ucHJvdG90eXBlLl9tb3ZlRWRpdG9yRnJvbVNlbGVjdG9y
KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TdHlsZVByb3BlcnRpZXNTZWN0aW9uLnByb3RvdHlw
ZS5lZGl0aW5nU2VsZWN0b3JDYW5jZWxsZWQpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1l
bmQvZWxlbWVudHNQYW5lbC5jc3M6CisgICAgICAgICguc3R5bGVzLXNlY3Rpb24gLnNlbGVjdG9y
LW1hdGNoZXMpOgorCiAyMDEyLTA5LTE0ICBHeXV5b3VuZyBLaW0gIDxneXV5b3VuZy5raW1Ac2Ft
c3VuZy5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjEyODUwNy4KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU3R5bGVzU2lkZWJh
clBhbmUuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1N0eWxlc1NpZGVi
YXJQYW5lLmpzCmluZGV4IGFmMTNmNDE4OTc1ZDUwMjQ1NjFmM2QwNjM0YjcxZWIxYTYxNTM4M2Qu
LmM2YTQ3MzhmZGUxN2E3YTEwYzcwNjZlZjlhNjhhOTkwZDBjODI2YWUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU3R5bGVzU2lkZWJhclBhbmUuanMKKysr
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TdHlsZXNTaWRlYmFyUGFuZS5q
cwpAQCAtMzU4LDYgKzM1OCw3IEBAIFdlYkluc3BlY3Rvci5TdHlsZXNTaWRlYmFyUGFuZS5wcm90
b3R5cGUgPSB7CiAgICAgICAgIHZhciB1c2VkUHJvcGVydGllcyA9IHt9OwogICAgICAgICB0aGlz
Ll9tYXJrVXNlZFByb3BlcnRpZXMoc3R5bGVSdWxlcywgdXNlZFByb3BlcnRpZXMpOwogICAgICAg
ICB0aGlzLnNlY3Rpb25zWzBdID0gdGhpcy5fcmVidWlsZFNlY3Rpb25zRm9yU3R5bGVSdWxlcyhz
dHlsZVJ1bGVzLCB1c2VkUHJvcGVydGllcywgMCwgbnVsbCk7CisgICAgICAgIHZhciByZXNwb25z
ZXNMZWZ0ID0gdGhpcy5zZWN0aW9uc1swXS5sZW5ndGg7CiAgICAgICAgIHZhciBhbmNob3JFbGVt
ZW50ID0gdGhpcy5zZWN0aW9uc1swXS5pbmhlcml0ZWRQcm9wZXJ0aWVzU2VwYXJhdG9yRWxlbWVu
dDsKIAogICAgICAgICBpZiAoc3R5bGVzLmNvbXB1dGVkU3R5bGUpICAgICAgICAKQEAgLTM4MCw5
ICszODEsMjggQEAgV2ViSW5zcGVjdG9yLlN0eWxlc1NpZGViYXJQYW5lLnByb3RvdHlwZSA9IHsK
ICAgICAgICAgICAgIHVzZWRQcm9wZXJ0aWVzID0ge307CiAgICAgICAgICAgICB0aGlzLl9tYXJr
VXNlZFByb3BlcnRpZXMoc3R5bGVSdWxlcywgdXNlZFByb3BlcnRpZXMpOwogICAgICAgICAgICAg
dGhpcy5zZWN0aW9uc1twc2V1ZG9JZF0gPSB0aGlzLl9yZWJ1aWxkU2VjdGlvbnNGb3JTdHlsZVJ1
bGVzKHN0eWxlUnVsZXMsIHVzZWRQcm9wZXJ0aWVzLCBwc2V1ZG9JZCwgYW5jaG9yRWxlbWVudCk7
CisgICAgICAgICAgICByZXNwb25zZXNMZWZ0ICs9IHRoaXMuc2VjdGlvbnNbcHNldWRvSWRdLmxl
bmd0aDsKICAgICAgICAgfQogCi0gICAgICAgIHRoaXMuX25vZGVTdHlsZXNVcGRhdGVkRm9yVGVz
dChub2RlLCB0cnVlKTsKKyAgICAgICAgLy8gTWFyayBtYXRjaGluZyBzZWxlY3RvcnMgaW4gY29t
bWEtZGVsaW1pdGVkIHNlbGVjdG9yIGdyb3Vwcy4KKyAgICAgICAgdmFyIGJvdW5kTWFya0NhbGxi
YWNrID0gbWFya0NhbGxiYWNrLmJpbmQodGhpcyk7CisgICAgICAgIGZvciAodmFyIGlkIGluIHRo
aXMuc2VjdGlvbnMpIHsKKyAgICAgICAgICAgIHZhciBzZWN0aW9uc0ZvclBzZXVkb0lkID0gdGhp
cy5zZWN0aW9uc1tpZF0uc2xpY2UoKTsKKyAgICAgICAgICAgIGZvciAodmFyIGogPSAwOyBqIDwg
c2VjdGlvbnNGb3JQc2V1ZG9JZC5sZW5ndGg7ICsraikgeworICAgICAgICAgICAgICAgIHZhciBz
ZWN0aW9uID0gc2VjdGlvbnNGb3JQc2V1ZG9JZFtqXTsKKyAgICAgICAgICAgICAgICBpZiAoIXNl
Y3Rpb24uc3R5bGVSdWxlIHx8IHNlY3Rpb24uaXNCbGFuayB8fCBzZWN0aW9uLnN0eWxlUnVsZS5j
b21wdXRlZFN0eWxlIHx8IHNlY3Rpb24uc3R5bGVSdWxlLmlzQXR0cmlidXRlKSB7CisgICAgICAg
ICAgICAgICAgICAgIGJvdW5kTWFya0NhbGxiYWNrKCk7CisgICAgICAgICAgICAgICAgICAgIGNv
bnRpbnVlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBzZWN0aW9uLl9tYXJr
TWF0Y2hlZFNlbGVjdG9yc0luR3JvdXAoYm91bmRNYXJrQ2FsbGJhY2spOworICAgICAgICAgICAg
fQorICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gbWFya0NhbGxiYWNrKCkKKyAgICAgICAg
eworICAgICAgICAgICAgaWYgKCEoLS1yZXNwb25zZXNMZWZ0KSkKKyAgICAgICAgICAgICAgICB0
aGlzLl9ub2RlU3R5bGVzVXBkYXRlZEZvclRlc3Qobm9kZSwgdHJ1ZSk7CisgICAgICAgIH0KICAg
ICB9LAogCiAgICAgX25vZGVTdHlsZXNVcGRhdGVkRm9yVGVzdDogZnVuY3Rpb24obm9kZSwgcmVi
dWlsZCkKQEAgLTkxMyw3ICs5MzMsNyBAQCBXZWJJbnNwZWN0b3IuU3R5bGVQcm9wZXJ0aWVzU2Vj
dGlvbiA9IGZ1bmN0aW9uKHBhcmVudFBhbmUsIHN0eWxlUnVsZSwgZWRpdGFibGUsCiAgICAgdGhp
cy5fc2VsZWN0b3JDb250YWluZXIgPSBzZWxlY3RvckNvbnRhaW5lcjsKIAogICAgIGlmIChpc0lu
aGVyaXRlZCkKLSAgICAgICAgdGhpcy5lbGVtZW50LmFkZFN0eWxlQ2xhc3MoInNob3ctaW5oZXJp
dGVkIik7IC8vIFRoaXMgb25lIGlzIHJlbGF0ZWQgdG8gaW5oZXJpdGVkIHJ1bGVzLCBub3QgY29t
cHRlZCBzdHlsZS4KKyAgICAgICAgdGhpcy5lbGVtZW50LmFkZFN0eWxlQ2xhc3MoInNob3ctaW5o
ZXJpdGVkIik7IC8vIFRoaXMgb25lIGlzIHJlbGF0ZWQgdG8gaW5oZXJpdGVkIHJ1bGVzLCBub3Qg
Y29tcHV0ZWQgc3R5bGUuCiAKICAgICBpZiAoIXRoaXMuZWRpdGFibGUpCiAgICAgICAgIHRoaXMu
ZWxlbWVudC5hZGRTdHlsZUNsYXNzKCJyZWFkLW9ubHkiKTsKQEAgLTExMDMsNiArMTEyMyw2NiBA
QCBXZWJJbnNwZWN0b3IuU3R5bGVQcm9wZXJ0aWVzU2VjdGlvbi5wcm90b3R5cGUgPSB7CiAgICAg
ICAgIHJldHVybiBudWxsOwogICAgIH0sCiAKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge2Z1bmN0
aW9uKCk9fSBjYWxsYmFjaworICAgICAqLworICAgIF9tYXJrTWF0Y2hlZFNlbGVjdG9yc0luR3Jv
dXA6IGZ1bmN0aW9uKGNhbGxiYWNrKQorICAgIHsKKyAgICAgICAgdmFyIHNlbGYgPSB0aGlzOwor
ICAgICAgICBmdW5jdGlvbiBteWNhbGxiYWNrKCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYg
KGNhbGxiYWNrKQorICAgICAgICAgICAgICAgIGNhbGxiYWNrKCk7CisgICAgICAgIH0KKworICAg
ICAgICB2YXIgc2VsZWN0b3JUZXh0ID0gdGhpcy5fc2VsZWN0b3JFbGVtZW50LnRleHRDb250ZW50
OworICAgICAgICBpZiAoIXNlbGVjdG9yVGV4dCB8fCBzZWxlY3RvclRleHQuaW5kZXhPZigiLCIp
ID09PSAtMSkgeworICAgICAgICAgICAgbXljYWxsYmFjaygpOworICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICB9CisKKyAgICAgICAgdmFyIHBhbmVOb2RlID0gdGhpcy5fcGFyZW50UGFuZS5u
b2RlOworICAgICAgICBpZiAoIXBhbmVOb2RlKSB7CisgICAgICAgICAgICBteWNhbGxiYWNrKCk7
CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiB0cmlt
KHRleHQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiB0ZXh0LnRyaW0oKTsKKyAgICAg
ICAgfQorICAgICAgICB2YXIgc2VsZWN0b3JzID0gc2VsZWN0b3JUZXh0LnNwbGl0KCIsIikubWFw
KHRyaW0pOworCisgICAgICAgIFdlYkluc3BlY3Rvci5SZW1vdGVPYmplY3QucmVzb2x2ZU5vZGUo
cGFuZU5vZGUsICIiLCByZXNvbHZlZENhbGxiYWNrKTsKKyAgICAgICAgZnVuY3Rpb24gcmVzb2x2
ZWRDYWxsYmFjayhvYmplY3QpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICghb2JqZWN0KSB7
CisgICAgICAgICAgICAgICAgbXljYWxsYmFjaygpOworICAgICAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZm9yICh2YXIgaSA9IDAsIHNpemUgPSBzZWxl
Y3RvcnMubGVuZ3RoOyBpIDwgc2l6ZTsgKytpKSB7CisgICAgICAgICAgICAgICAgdmFyIHNlbGVj
dG9yID0gc2VsZWN0b3JzW2ldOworICAgICAgICAgICAgICAgIG9iamVjdC5jYWxsRnVuY3Rpb25K
U09OKG1hdGNoZXNTZWxlY3RvciwgW3sgdmFsdWU6IHNlbGVjdG9yc1tpXSB9XSwgbWF0Y2hlc0Nh
bGxiYWNrLmJpbmQodGhpcywgaSwgcGFuZU5vZGUsIGkgPT09IHNpemUgLSAxKSk7CisgICAgICAg
ICAgICB9CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBtYXRjaGVzU2VsZWN0b3Ioc2Vs
ZWN0b3IpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiB0aGlzLndlYmtpdE1hdGNoZXNT
ZWxlY3RvcihzZWxlY3Rvcik7CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBtYXRjaGVz
Q2FsbGJhY2soc2VsZWN0b3JJbmRleCwgbm9kZSwgaXNMYXN0LCBtYXRjaGVzKQorICAgICAgICB7
CisgICAgICAgICAgICBpZiAobWF0Y2hlcyAmJiBub2RlID09PSBwYW5lTm9kZSkKKyAgICAgICAg
ICAgICAgICBzZWxlY3RvcnNbc2VsZWN0b3JJbmRleF0gPSAiPHNwYW4gY2xhc3M9XCJzZWxlY3Rv
ci1tYXRjaGVzXCI+IiArIHNlbGVjdG9yc1tzZWxlY3RvckluZGV4XS5lc2NhcGVIVE1MKCkgKyAi
PC9zcGFuPiI7CisgICAgICAgICAgICBpZiAoaXNMYXN0KSB7CisgICAgICAgICAgICAgICAgc2Vs
Zi5fc2VsZWN0b3JFbGVtZW50LmlubmVySFRNTCA9IHNlbGVjdG9ycy5qb2luKCIsICIpOworICAg
ICAgICAgICAgICAgIG15Y2FsbGJhY2soKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAg
IH0sCisKICAgICBfY2hlY2tXaWxsQ2FuY2VsRWRpdGluZzogZnVuY3Rpb24oKQogICAgIHsKICAg
ICAgICAgdmFyIHdpbGxDYXVzZUNhbmNlbEVkaXRpbmcgPSB0aGlzLl93aWxsQ2F1c2VDYW5jZWxF
ZGl0aW5nOwpAQCAtMTIzMyw3ICsxMzEzLDggQEAgV2ViSW5zcGVjdG9yLlN0eWxlUHJvcGVydGll
c1NlY3Rpb24ucHJvdG90eXBlID0gewogICAgICAgICBpZiAoV2ViSW5zcGVjdG9yLmlzQmVpbmdF
ZGl0ZWQoZWxlbWVudCkpCiAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgdGhpcy5fc2Vs
ZWN0b3JFbGVtZW50LnNjcm9sbEludG9WaWV3SWZOZWVkZWQoZmFsc2UpOworICAgICAgICBlbGVt
ZW50LnNjcm9sbEludG9WaWV3SWZOZWVkZWQoZmFsc2UpOworICAgICAgICBlbGVtZW50LnRleHRD
b250ZW50ID0gZWxlbWVudC50ZXh0Q29udGVudDsgLy8gUmVzZXQgc2VsZWN0b3IgbWFya3MgaW4g
Z3JvdXAuCiAKICAgICAgICAgdmFyIGNvbmZpZyA9IG5ldyBXZWJJbnNwZWN0b3IuRWRpdGluZ0Nv
bmZpZyh0aGlzLmVkaXRpbmdTZWxlY3RvckNvbW1pdHRlZC5iaW5kKHRoaXMpLCB0aGlzLmVkaXRp
bmdTZWxlY3RvckNhbmNlbGxlZC5iaW5kKHRoaXMpKTsKICAgICAgICAgV2ViSW5zcGVjdG9yLnN0
YXJ0RWRpdGluZyh0aGlzLl9zZWxlY3RvckVsZW1lbnQsIGNvbmZpZyk7CkBAIC0xMjQzLDI1ICsx
MzI0LDMyIEBAIFdlYkluc3BlY3Rvci5TdHlsZVByb3BlcnRpZXNTZWN0aW9uLnByb3RvdHlwZSA9
IHsKIAogICAgIF9tb3ZlRWRpdG9yRnJvbVNlbGVjdG9yOiBmdW5jdGlvbihtb3ZlRGlyZWN0aW9u
KQogICAgIHsKLSAgICAgICAgaWYgKCFtb3ZlRGlyZWN0aW9uKQorCisgICAgICAgIGlmICghbW92
ZURpcmVjdGlvbikgeworICAgICAgICAgICAgdGhpcy5fbWFya01hdGNoZWRTZWxlY3RvcnNJbkdy
b3VwKCk7CiAgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KIAotICAgICAgICBpZiAobW92
ZURpcmVjdGlvbiA9PT0gImZvcndhcmQiKSB7Ci0gICAgICAgICAgICB0aGlzLmV4cGFuZCgpOwot
ICAgICAgICAgICAgdmFyIGZpcnN0Q2hpbGQgPSB0aGlzLnByb3BlcnRpZXNUcmVlT3V0bGluZS5j
aGlsZHJlblswXTsKLSAgICAgICAgICAgIHdoaWxlIChmaXJzdENoaWxkICYmIGZpcnN0Q2hpbGQu
aW5oZXJpdGVkKQotICAgICAgICAgICAgICAgIGZpcnN0Q2hpbGQgPSBmaXJzdENoaWxkLm5leHRT
aWJsaW5nOwotICAgICAgICAgICAgaWYgKCFmaXJzdENoaWxkKQotICAgICAgICAgICAgICAgIHRo
aXMuYWRkTmV3QmxhbmtQcm9wZXJ0eSgpLnN0YXJ0RWRpdGluZygpOwotICAgICAgICAgICAgZWxz
ZQotICAgICAgICAgICAgICAgIGZpcnN0Q2hpbGQuc3RhcnRFZGl0aW5nKGZpcnN0Q2hpbGQubmFt
ZUVsZW1lbnQpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgdmFyIHByZXZpb3VzU2Vj
dGlvbiA9IHRoaXMucHJldmlvdXNFZGl0YWJsZVNpYmxpbmcoKTsKLSAgICAgICAgICAgIGlmICgh
cHJldmlvdXNTZWN0aW9uKQotICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgdGhpcy5f
bWFya01hdGNoZWRTZWxlY3RvcnNJbkdyb3VwKG1hcmtDYWxsYmFjay5iaW5kKHRoaXMpKTsKKwor
ICAgICAgICBmdW5jdGlvbiBtYXJrQ2FsbGJhY2soKSB7CisgICAgICAgICAgICBpZiAobW92ZURp
cmVjdGlvbiA9PT0gImZvcndhcmQiKSB7CisgICAgICAgICAgICAgICAgdGhpcy5leHBhbmQoKTsK
KyAgICAgICAgICAgICAgICB2YXIgZmlyc3RDaGlsZCA9IHRoaXMucHJvcGVydGllc1RyZWVPdXRs
aW5lLmNoaWxkcmVuWzBdOworICAgICAgICAgICAgICAgIHdoaWxlIChmaXJzdENoaWxkICYmIGZp
cnN0Q2hpbGQuaW5oZXJpdGVkKQorICAgICAgICAgICAgICAgICAgICBmaXJzdENoaWxkID0gZmly
c3RDaGlsZC5uZXh0U2libGluZzsKKyAgICAgICAgICAgICAgICBpZiAoIWZpcnN0Q2hpbGQpCisg
ICAgICAgICAgICAgICAgICAgIHRoaXMuYWRkTmV3QmxhbmtQcm9wZXJ0eSgpLnN0YXJ0RWRpdGlu
ZygpOworICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgZmlyc3RDaGls
ZC5zdGFydEVkaXRpbmcoZmlyc3RDaGlsZC5uYW1lRWxlbWVudCk7CisgICAgICAgICAgICB9IGVs
c2UgeworICAgICAgICAgICAgICAgIHZhciBwcmV2aW91c1NlY3Rpb24gPSB0aGlzLnByZXZpb3Vz
RWRpdGFibGVTaWJsaW5nKCk7CisgICAgICAgICAgICAgICAgaWYgKCFwcmV2aW91c1NlY3Rpb24p
CisgICAgICAgICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICAgICAgcHJldmlvdXNTZWN0
aW9uLmV4cGFuZCgpOwotICAgICAgICAgICAgcHJldmlvdXNTZWN0aW9uLmFkZE5ld0JsYW5rUHJv
cGVydHkoKS5zdGFydEVkaXRpbmcoKTsKKyAgICAgICAgICAgICAgICBwcmV2aW91c1NlY3Rpb24u
ZXhwYW5kKCk7CisgICAgICAgICAgICAgICAgcHJldmlvdXNTZWN0aW9uLmFkZE5ld0JsYW5rUHJv
cGVydHkoKS5zdGFydEVkaXRpbmcoKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgIH0s
CiAKQEAgLTEyOTksNyArMTM4Nyw5IEBAIFdlYkluc3BlY3Rvci5TdHlsZVByb3BlcnRpZXNTZWN0
aW9uLnByb3RvdHlwZSA9IHsKIAogICAgIGVkaXRpbmdTZWxlY3RvckNhbmNlbGxlZDogZnVuY3Rp
b24oKQogICAgIHsKLSAgICAgICAgLy8gRG8gbm90aGluZywgdGhpcyBpcyBvdmVycmlkZGVuIGJ5
IEJsYW5rU3R5bGVQcm9wZXJ0aWVzU2VjdGlvbi4KKyAgICAgICAgLy8gRG8gbm90aGluZyBidXQg
bWFyayB0aGUgc2VsZWN0b3JzIGluIGdyb3VwIGlmIG5lY2Vzc2FyeS4KKyAgICAgICAgLy8gVGhp
cyBpcyBvdmVycmlkZGVuIGJ5IEJsYW5rU3R5bGVQcm9wZXJ0aWVzU2VjdGlvbi4KKyAgICAgICAg
dGhpcy5fbWFya01hdGNoZWRTZWxlY3RvcnNJbkdyb3VwKCk7CiAgICAgfQogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2VsZW1lbnRzUGFuZWwuY3Nz
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9lbGVtZW50c1BhbmVsLmNzcwpp
bmRleCBlYjEwMmNiZGU2ODE2NWUwNjliNzg1MDUzMzRmMTYxNGE2Y2FmNmRmLi4zNjY0ZDEzNzRk
NDA2Y2YxNGIwMzcwODA0ZTBmYzM0ZDVkNDUwMjU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2VsZW1lbnRzUGFuZWwuY3NzCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvZWxlbWVudHNQYW5lbC5jc3MKQEAgLTIyMyw2ICsyMjMs
MTAgQEAKICAgICBjb2xvcjogaW5oZXJpdDsKIH0KIAorLnN0eWxlcy1zZWN0aW9uIC5zZWxlY3Rv
ci1tYXRjaGVzIHsKKyAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMjE1LCAyNTUsIDIxNSk7Cit9
CisKIC5zdHlsZXMtc2VjdGlvbiBhW2RhdGEtdW5jb3B5YWJsZV0gewogICAgIGRpc3BsYXk6IGlu
bGluZS1ibG9jazsKIH0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91
dFRlc3RzL0NoYW5nZUxvZwppbmRleCAwY2Y3ODYxMWM4ZmU2ODFlM2Y4MTRmMWI5MWI2ZWM4YjI4
ZDk0NmIyLi40ZGEzZTUyNGI4NGY2ZTExYTE2OTE3OWZmYmM0NjE3M2MzNjc1ZjM3IDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTYgQEAKKzIwMTItMDktMTQgIEFsZXhhbmRlciBQYXZsb3YgIDxhcGF2bG92QGNo
cm9taXVtLm9yZz4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBHcm91cCBzZWxlY3RvcnMgdG8g
aGlnaGxpZ2h0IG1hdGNoZWQgc2VsZWN0b3IgaW4gdGhlIFN0eWxlcyBwYW5lIG9mIEVsZW1lbnRz
IFBhbmVsCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05
NjYyNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICog
aHR0cC90ZXN0cy9pbnNwZWN0b3IvZWxlbWVudHMtdGVzdC5qczoKKyAgICAgICAgKGluaXRpYWxp
emVfRWxlbWVudFRlc3QuSW5zcGVjdG9yVGVzdC5kdW1wU2VsZWN0ZWRFbGVtZW50U3R5bGVzLmJ1
aWxkTWFya2VkU2VsZWN0b3JzKToKKyAgICAgICAgKGluaXRpYWxpemVfRWxlbWVudFRlc3QuSW5z
cGVjdG9yVGVzdC5kdW1wU2VsZWN0ZWRFbGVtZW50U3R5bGVzKTogTGV0IHRlc3RzIGdldCBtYXRj
aGVkIHNlbGVjdG9yIG1hcmtpbmdzIGluIGR1bXBlZCBkYXRhCisgICAgICAgICogaW5zcGVjdG9y
L3N0eWxlcy9zdHlsZXMtYWRkLW5ldy1ydWxlLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBpbnNw
ZWN0b3Ivc3R5bGVzL3N0eWxlcy1hZGQtbmV3LXJ1bGUuaHRtbDoKKwogMjAxMi0wOS0xMyAgQ3Nh
YmEgT3N6dHJvZ29uw6FjICA8b3NzeUB3ZWJraXQub3JnPgogCiAgICAgICAgIFtRdF0gVW5yZXZp
ZXdlZCBnYXJkZW5pbmcsIHJlbW92ZSBhbiB1bm5lY2Vzc2FyeSBleHBlY3RlZCBmaWxlLgpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvZWxlbWVudHMtdGVzdC5q
cyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2VsZW1lbnRzLXRlc3QuanMKaW5k
ZXggMjcyMjA0NTRhZGRkNGYwZWFkOWM5YmY4YmE2ZDIzYmI0ZWQxZWY2Ni4uM2Q0ZTc0ZjExZWRh
NGFkYWQ0OGFkOTg4MWUxODI3NDdkZWE4NjM0NiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9pbnNwZWN0b3IvZWxlbWVudHMtdGVzdC5qcworKysgYi9MYXlvdXRUZXN0cy9odHRw
L3Rlc3RzL2luc3BlY3Rvci9lbGVtZW50cy10ZXN0LmpzCkBAIC0xMTgsNyArMTE4LDcgQEAgSW5z
cGVjdG9yVGVzdC5zZWxlY3ROb2RlQW5kV2FpdEZvclN0eWxlc1dpdGhDb21wdXRlZCA9IGZ1bmN0
aW9uKGlkVmFsdWUsIGNhbGxiYWMKICAgICBJbnNwZWN0b3JUZXN0LnNlbGVjdE5vZGVBbmRXYWl0
Rm9yU3R5bGVzKGlkVmFsdWUsIHN0eWxlc0NhbGxiYWNrKTsKIH0KIAotSW5zcGVjdG9yVGVzdC5k
dW1wU2VsZWN0ZWRFbGVtZW50U3R5bGVzID0gZnVuY3Rpb24oZXhjbHVkZUNvbXB1dGVkLCBleGNs
dWRlTWF0Y2hlZCwgb21pdExvbmdoYW5kcykKK0luc3BlY3RvclRlc3QuZHVtcFNlbGVjdGVkRWxl
bWVudFN0eWxlcyA9IGZ1bmN0aW9uKGV4Y2x1ZGVDb21wdXRlZCwgZXhjbHVkZU1hdGNoZWQsIG9t
aXRMb25naGFuZHMsIGluY2x1ZGVTZWxlY3Rvckdyb3VwTWFya3MpCiB7CiAgICAgZnVuY3Rpb24g
ZXh0cmFjdFRleHQoZWxlbWVudCkKICAgICB7CkBAIC0xMjksNiArMTI5LDE4IEBAIEluc3BlY3Rv
clRlc3QuZHVtcFNlbGVjdGVkRWxlbWVudFN0eWxlcyA9IGZ1bmN0aW9uKGV4Y2x1ZGVDb21wdXRl
ZCwgZXhjbHVkZU1hdGNoCiAgICAgICAgIHJldHVybiBlbGVtZW50ID8gZWxlbWVudC5nZXRBdHRy
aWJ1dGUoImRhdGEtdW5jb3B5YWJsZSIpIDogIiI7CiAgICAgfQogCisgICAgZnVuY3Rpb24gYnVp
bGRNYXJrZWRTZWxlY3RvcnMoZWxlbWVudCkKKyAgICB7CisgICAgICAgIHZhciByZXN1bHQgPSAi
IjsKKyAgICAgICAgZm9yICh2YXIgbm9kZSA9IGVsZW1lbnQuZmlyc3RDaGlsZDsgbm9kZTsgbm9k
ZSA9IG5vZGUubmV4dFNpYmxpbmcpIHsKKyAgICAgICAgICAgIGlmIChub2RlLm5vZGVUeXBlID09
PSBOb2RlLkVMRU1FTlRfTk9ERSAmJiBub2RlLmNsYXNzTmFtZSA9PT0gInNlbGVjdG9yLW1hdGNo
ZXMiKQorICAgICAgICAgICAgICAgIHJlc3VsdCArPSAiWyQiICsgbm9kZS50ZXh0Q29udGVudCAr
ICIkXSI7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgcmVzdWx0ICs9IG5vZGUu
dGV4dENvbnRlbnQ7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9CisK
ICAgICB2YXIgc3R5bGVTZWN0aW9ucyA9IFdlYkluc3BlY3Rvci5wYW5lbHMuZWxlbWVudHMuc2lk
ZWJhclBhbmVzLnN0eWxlcy5zZWN0aW9uczsKICAgICBmb3IgKHZhciBwc2V1ZG9JZCBpbiBzdHls
ZVNlY3Rpb25zKSB7CiAgICAgICAgIHZhciBwc2V1ZG9OYW1lID0gV2ViSW5zcGVjdG9yLlN0eWxl
c1NpZGViYXJQYW5lLlBzZXVkb0lkTmFtZXNbcHNldWRvSWRdOwpAQCAtMTQ1LDcgKzE1Nyw3IEBA
IEluc3BlY3RvclRlc3QuZHVtcFNlbGVjdGVkRWxlbWVudFN0eWxlcyA9IGZ1bmN0aW9uKGV4Y2x1
ZGVDb21wdXRlZCwgZXhjbHVkZU1hdGNoCiAgICAgICAgICAgICB2YXIgY2hhaW5FbnRyaWVzID0g
c2VjdGlvbi50aXRsZUVsZW1lbnQuY2hpbGRyZW47CiAgICAgICAgICAgICBmb3IgKHZhciBqID0g
MDsgaiA8IGNoYWluRW50cmllcy5sZW5ndGg7ICsraikgewogICAgICAgICAgICAgICAgIHZhciBj
aGFpbkVudHJ5ID0gY2hhaW5FbnRyaWVzW2pdOwotICAgICAgICAgICAgICAgIHZhciBlbnRyeUxp
bmUgPSBjaGFpbkVudHJ5LmNoaWxkcmVuWzFdLnRleHRDb250ZW50OworICAgICAgICAgICAgICAg
IHZhciBlbnRyeUxpbmUgPSBpbmNsdWRlU2VsZWN0b3JHcm91cE1hcmtzID8gYnVpbGRNYXJrZWRT
ZWxlY3RvcnMoY2hhaW5FbnRyeS5jaGlsZHJlblsxXSkgOiBjaGFpbkVudHJ5LmNoaWxkcmVuWzFd
LnRleHRDb250ZW50OwogICAgICAgICAgICAgICAgIGlmIChjaGFpbkVudHJ5LmNoaWxkcmVuWzJd
KQogICAgICAgICAgICAgICAgICAgICBlbnRyeUxpbmUgKz0gIiAiICsgY2hhaW5FbnRyeS5jaGls
ZHJlblsyXS50ZXh0Q29udGVudDsKICAgICAgICAgICAgICAgICBlbnRyeUxpbmUgKz0gIiAoIiAr
IGV4dHJhY3RUZXh0KGNoYWluRW50cnkuY2hpbGRyZW5bMF0pICsgIikiOwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW5zcGVjdG9yL3N0eWxlcy9zdHlsZXMtYWRkLW5ldy1ydWxlLWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9zdHlsZXMvc3R5bGVzLWFkZC1uZXctcnVsZS1l
eHBlY3RlZC50eHQKaW5kZXggYWQ0NjNhNmFkOTFhMTVmY2UxZmJhMTdjNWYzMTViYTM0MmVmZTM5
Zi4uYjRjODk5YTQxOTFkMjM0M2Y5ZDI0ZGJmMDgzYjA2ZDljMzg4NjA5NCAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvaW5zcGVjdG9yL3N0eWxlcy9zdHlsZXMtYWRkLW5ldy1ydWxlLWV4cGVjdGVk
LnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3Ivc3R5bGVzL3N0eWxlcy1hZGQtbmV3LXJ1
bGUtZXhwZWN0ZWQudHh0CkBAIC05LDcgKzksNyBAQCBmb250LXNpemU6IDEycHg7CiAKID09PT09
PT09IE1hdGNoZWQgQ1NTIFJ1bGVzID09PT09PT09CiBbZXhwYW5kZWRdIAotI2luc3BlY3RlZCAg
eyAoaW5zcGVjdG9yLXN0eWxlc2hlZXQ6MSkKK2ZvbywgWyQjaW5zcGVjdGVkJF0sIGJhciAgeyAo
aW5zcGVjdG9yLXN0eWxlc2hlZXQ6MSkKIGNvbG9yOiBtYXJvb247CiAKIFtleHBhbmRlZF0gCmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3Ivc3R5bGVzL3N0eWxlcy1hZGQtbmV3LXJ1
bGUuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9zdHlsZXMvc3R5bGVzLWFkZC1uZXctcnVs
ZS5odG1sCmluZGV4IDU1ZmVmZDNjNDUxM2UzOGYwZTk1MTFlNWY0M2RkYTIwZGI5MTM5MGUuLmY2
YzBjNDFkN2M0ZjMwZDYwOWU5ODg5NmNlNWUyZmU0OTIwNjYyYjkgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL2luc3BlY3Rvci9zdHlsZXMvc3R5bGVzLWFkZC1uZXctcnVsZS5odG1sCisrKyBiL0xh
eW91dFRlc3RzL2luc3BlY3Rvci9zdHlsZXMvc3R5bGVzLWFkZC1uZXctcnVsZS5odG1sCkBAIC0x
OCw2ICsxOCw3IEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgICAgICAvLyBDbGljayAiQWRkIG5ldyBy
dWxlIi4KICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImFkZC1zdHlsZS1idXR0b24t
dGVzdC1pZCIpLmNsaWNrKCk7CiAgICAgICAgIHZhciBzZWN0aW9uID0gV2ViSW5zcGVjdG9yLnBh
bmVscy5lbGVtZW50cy5zaWRlYmFyUGFuZXMuc3R5bGVzLnNlY3Rpb25zWzBdWzJdOworICAgICAg
ICBzZWN0aW9uLl9zZWxlY3RvckVsZW1lbnQudGV4dENvbnRlbnQgPSAiZm9vLCAiICsgc2VjdGlv
bi5fc2VsZWN0b3JFbGVtZW50LnRleHRDb250ZW50ICsgIiwgYmFyIjsKICAgICAgICAgc2VjdGlv
bi5fc2VsZWN0b3JFbGVtZW50LmRpc3BhdGNoRXZlbnQoSW5zcGVjdG9yVGVzdC5jcmVhdGVLZXlF
dmVudCgiRW50ZXIiKSk7CiAgICAgICAgIEluc3BlY3RvclRlc3QucnVuQWZ0ZXJQZW5kaW5nRGlz
cGF0Y2hlcyhzdGVwMik7CiAgICAgfQpAQCAtNDQsNyArNDUsNyBAQCBmdW5jdGlvbiB0ZXN0KCkK
ICAgICBmdW5jdGlvbiBzdGVwNCgpCiAgICAgewogICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJl
c3VsdCgiQWZ0ZXIgYWRkaW5nIG5ldyBydWxlIChpbnNwZWN0ZWQpOiIpOwotICAgICAgICBJbnNw
ZWN0b3JUZXN0LmR1bXBTZWxlY3RlZEVsZW1lbnRTdHlsZXModHJ1ZSwgZmFsc2UsIHRydWUpOwor
ICAgICAgICBJbnNwZWN0b3JUZXN0LmR1bXBTZWxlY3RlZEVsZW1lbnRTdHlsZXModHJ1ZSwgZmFs
c2UsIHRydWUsIHRydWUpOwogICAgICAgICBJbnNwZWN0b3JUZXN0LnNlbGVjdE5vZGVBbmRXYWl0
Rm9yU3R5bGVzKCJvdGhlciIsIHN0ZXA1KTsKICAgICB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="0"
              isprivate="0"
          >
            <attachid>164081</attachid>
            <date>2012-09-14 02:52:08 -0700</date>
            <delta_ts>2012-09-14 08:14:29 -0700</delta_ts>
            <desc>[IMAGE] Screenshot of matching group selectors with the patch applied</desc>
            <filename>SelectorHighlight.png</filename>
            <type>image/png</type>
            <size>17031</size>
            <attacher name="Alexander Pavlov (apavlov)">apavlov</attacher>
            
              <data encoding="base64">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
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>164143</attachid>
            <date>2012-09-14 07:20:39 -0700</date>
            <delta_ts>2012-09-17 02:23:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-96626-20120914182010.patch</filename>
            <type>text/plain</type>
            <size>18338</size>
            <attacher name="Alexander Pavlov (apavlov)">apavlov</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI4NTg3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjE1MmI5NWQ0ZmJjMDU2
NmQ5OTgwZDA5NDljYWY3M2I0YzgzNGVmZC4uNmMxMzIwNDQyZWRlMDAwMDkyMTc5OTRmYzBkOTNl
MDQwZjY3NDNhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyIEBACisyMDEyLTA5LTE0ICBBbGV4
YW5kZXIgUGF2bG92ICA8YXBhdmxvdkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgV2ViIEluc3Bl
Y3RvcjogR3JvdXAgc2VsZWN0b3JzIHRvIGhpZ2hsaWdodCBtYXRjaGVkIHNlbGVjdG9yIGluIHRo
ZSBTdHlsZXMgcGFuZSBvZiBFbGVtZW50cyBQYW5lbAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTY2MjYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBJbnRyb2R1Y2VkIGV2YWx1YXRpb24gb2YgZWxlbWVudC53
ZWJraXRNYXRjaGVzU2VsZWN0b3IoKSBmb3IgZXZlcnkgcGFydCBvZiBhIHNlbGVjdG9yIGdyb3Vw
IChkZWxpbWl0ZWQgYnkgY29tbWFzKS4KKyAgICAgICAgTWF0Y2hpbmcgc2VsZWN0b3JzIGFyZSBo
aWdobGlnaHRlZCBvbmx5IGluIGdyb3Vwcy4gSWYgZWxlbWVudCBzdHlsZXMgaGF2ZSBjaGFuZ2Vk
IHNvIHRoYXQgaXQgbWF0Y2hlcyBub25lIG9mIHRoZSBzZWxlY3RvcnMsCisgICAgICAgIHRoZSBl
bnRpcmUgZ3JvdXAgaXMgcmVuZGVyZWQgYXMgbWF0Y2hlZC4KKworICAgICAgICAqIGluc3BlY3Rv
ci9mcm9udC1lbmQvU3R5bGVzU2lkZWJhclBhbmUuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
U3R5bGVzU2lkZWJhclBhbmUucHJvdG90eXBlLl9pbm5lclJlYnVpbGRVcGRhdGUubWFya0NhbGxi
YWNrKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TdHlsZXNTaWRlYmFyUGFuZS5wcm90b3R5cGUu
X2lubmVyUmVidWlsZFVwZGF0ZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU3R5bGVzU2lkZWJh
clBhbmUucHJvdG90eXBlLl9yZWJ1aWxkU3R5bGVSdWxlcyk6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuU3R5bGVQcm9wZXJ0aWVzU2VjdGlvbik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU3R5bGVQ
cm9wZXJ0aWVzU2VjdGlvbi5wcm90b3R5cGUuX21hcmtNYXRjaGVkU2VsZWN0b3JzSW5Hcm91cC5t
eWNhbGxiYWNrKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TdHlsZVByb3BlcnRpZXNTZWN0aW9u
LnByb3RvdHlwZS5fbWFya01hdGNoZWRTZWxlY3RvcnNJbkdyb3VwLnRyaW0pOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLlN0eWxlUHJvcGVydGllc1NlY3Rpb24ucHJvdG90eXBlLl9tYXJrTWF0Y2hl
ZFNlbGVjdG9yc0luR3JvdXAucmVzb2x2ZWRDYWxsYmFjayk6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuU3R5bGVQcm9wZXJ0aWVzU2VjdGlvbi5wcm90b3R5cGUuX21hcmtNYXRjaGVkU2VsZWN0b3Jz
SW5Hcm91cCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU3R5bGVQcm9wZXJ0aWVzU2VjdGlvbi5w
cm90b3R5cGUuX21hcmtNYXRjaGVkU2VsZWN0b3JzSW5Hcm91cC5tYXRjaGVzQ2FsbGJhY2spOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLlN0eWxlUHJvcGVydGllc1NlY3Rpb24ucHJvdG90eXBlLnN0
YXJ0RWRpdGluZ1NlbGVjdG9yKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TdHlsZVByb3BlcnRp
ZXNTZWN0aW9uLnByb3RvdHlwZS5fbW92ZUVkaXRvckZyb21TZWxlY3Rvci5tYXJrQ2FsbGJhY2sp
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLlN0eWxlUHJvcGVydGllc1NlY3Rpb24ucHJvdG90eXBl
Ll9tb3ZlRWRpdG9yRnJvbVNlbGVjdG9yKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TdHlsZVBy
b3BlcnRpZXNTZWN0aW9uLnByb3RvdHlwZS5lZGl0aW5nU2VsZWN0b3JDYW5jZWxsZWQpOgorICAg
ICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvZWxlbWVudHNQYW5lbC5jc3M6CisgICAgICAgICgu
c3R5bGVzLXNlY3Rpb24gLnNlbGVjdG9yKToKKyAgICAgICAgKC5zdHlsZXMtc2VjdGlvbiAuc2Vs
ZWN0b3ItbWF0Y2hlcywgLnN0eWxlcy1zZWN0aW9uOmhvdmVyIC5zZWxlY3Rvcik6CisKIDIwMTIt
MDktMTQgIFZzZXZvbG9kIFZsYXNvdiAgPHZzZXZpa0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAg
VW5yZXZpZXdlZCByMTI4NTgwIGZvbGxvdyB1cDogZml4ZWQgcXQgbWluaW1hbCBjb21waWxhdGlv
bi4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU3R5bGVz
U2lkZWJhclBhbmUuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1N0eWxl
c1NpZGViYXJQYW5lLmpzCmluZGV4IGFmMTNmNDE4OTc1ZDUwMjQ1NjFmM2QwNjM0YjcxZWIxYTYx
NTM4M2QuLjZjZTdiNzk4OTMyM2UzYTVkMDhhNjcyMzk0MDMyYTMwMzc1M2ZiMjcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU3R5bGVzU2lkZWJhclBhbmUu
anMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TdHlsZXNTaWRlYmFy
UGFuZS5qcwpAQCAtMzU4LDYgKzM1OCw3IEBAIFdlYkluc3BlY3Rvci5TdHlsZXNTaWRlYmFyUGFu
ZS5wcm90b3R5cGUgPSB7CiAgICAgICAgIHZhciB1c2VkUHJvcGVydGllcyA9IHt9OwogICAgICAg
ICB0aGlzLl9tYXJrVXNlZFByb3BlcnRpZXMoc3R5bGVSdWxlcywgdXNlZFByb3BlcnRpZXMpOwog
ICAgICAgICB0aGlzLnNlY3Rpb25zWzBdID0gdGhpcy5fcmVidWlsZFNlY3Rpb25zRm9yU3R5bGVS
dWxlcyhzdHlsZVJ1bGVzLCB1c2VkUHJvcGVydGllcywgMCwgbnVsbCk7CisgICAgICAgIHZhciBy
ZXNwb25zZXNMZWZ0ID0gdGhpcy5zZWN0aW9uc1swXS5sZW5ndGg7CiAgICAgICAgIHZhciBhbmNo
b3JFbGVtZW50ID0gdGhpcy5zZWN0aW9uc1swXS5pbmhlcml0ZWRQcm9wZXJ0aWVzU2VwYXJhdG9y
RWxlbWVudDsKIAogICAgICAgICBpZiAoc3R5bGVzLmNvbXB1dGVkU3R5bGUpICAgICAgICAKQEAg
LTM4MCw5ICszODEsMjggQEAgV2ViSW5zcGVjdG9yLlN0eWxlc1NpZGViYXJQYW5lLnByb3RvdHlw
ZSA9IHsKICAgICAgICAgICAgIHVzZWRQcm9wZXJ0aWVzID0ge307CiAgICAgICAgICAgICB0aGlz
Ll9tYXJrVXNlZFByb3BlcnRpZXMoc3R5bGVSdWxlcywgdXNlZFByb3BlcnRpZXMpOwogICAgICAg
ICAgICAgdGhpcy5zZWN0aW9uc1twc2V1ZG9JZF0gPSB0aGlzLl9yZWJ1aWxkU2VjdGlvbnNGb3JT
dHlsZVJ1bGVzKHN0eWxlUnVsZXMsIHVzZWRQcm9wZXJ0aWVzLCBwc2V1ZG9JZCwgYW5jaG9yRWxl
bWVudCk7CisgICAgICAgICAgICByZXNwb25zZXNMZWZ0ICs9IHRoaXMuc2VjdGlvbnNbcHNldWRv
SWRdLmxlbmd0aDsKICAgICAgICAgfQogCi0gICAgICAgIHRoaXMuX25vZGVTdHlsZXNVcGRhdGVk
Rm9yVGVzdChub2RlLCB0cnVlKTsKKyAgICAgICAgLy8gTWFyayBtYXRjaGluZyBzZWxlY3RvcnMg
aW4gY29tbWEtZGVsaW1pdGVkIHNlbGVjdG9yIGdyb3Vwcy4KKyAgICAgICAgdmFyIGJvdW5kTWFy
a0NhbGxiYWNrID0gbWFya0NhbGxiYWNrLmJpbmQodGhpcyk7CisgICAgICAgIGZvciAodmFyIGlk
IGluIHRoaXMuc2VjdGlvbnMpIHsKKyAgICAgICAgICAgIHZhciBzZWN0aW9uc0ZvclBzZXVkb0lk
ID0gdGhpcy5zZWN0aW9uc1tpZF0uc2xpY2UoKTsKKyAgICAgICAgICAgIGZvciAodmFyIGogPSAw
OyBqIDwgc2VjdGlvbnNGb3JQc2V1ZG9JZC5sZW5ndGg7ICsraikgeworICAgICAgICAgICAgICAg
IHZhciBzZWN0aW9uID0gc2VjdGlvbnNGb3JQc2V1ZG9JZFtqXTsKKyAgICAgICAgICAgICAgICBp
ZiAoIXNlY3Rpb24uc3R5bGVSdWxlIHx8IHNlY3Rpb24uaXNCbGFuayB8fCBzZWN0aW9uLnN0eWxl
UnVsZS5jb21wdXRlZFN0eWxlIHx8IHNlY3Rpb24uc3R5bGVSdWxlLmlzQXR0cmlidXRlKSB7Cisg
ICAgICAgICAgICAgICAgICAgIGJvdW5kTWFya0NhbGxiYWNrKCk7CisgICAgICAgICAgICAgICAg
ICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBzZWN0aW9u
Ll9tYXJrTWF0Y2hlZFNlbGVjdG9yc0luR3JvdXAoYm91bmRNYXJrQ2FsbGJhY2spOworICAgICAg
ICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gbWFya0NhbGxiYWNrKCkKKyAg
ICAgICAgeworICAgICAgICAgICAgaWYgKCEoLS1yZXNwb25zZXNMZWZ0KSkKKyAgICAgICAgICAg
ICAgICB0aGlzLl9ub2RlU3R5bGVzVXBkYXRlZEZvclRlc3Qobm9kZSwgdHJ1ZSk7CisgICAgICAg
IH0KICAgICB9LAogCiAgICAgX25vZGVTdHlsZXNVcGRhdGVkRm9yVGVzdDogZnVuY3Rpb24obm9k
ZSwgcmVidWlsZCkKQEAgLTQ2NCw3ICs0ODQsNyBAQCBXZWJJbnNwZWN0b3IuU3R5bGVzU2lkZWJh
clBhbmUucHJvdG90eXBlID0gewogICAgICAgICAgICAgdmFyIHNlcGFyYXRvckluc2VydGVkID0g
ZmFsc2U7CiAgICAgICAgICAgICBpZiAocGFyZW50U3R5bGVzLmlubGluZVN0eWxlKSB7CiAgICAg
ICAgICAgICAgICAgaWYgKHRoaXMuX2NvbnRhaW5zSW5oZXJpdGVkKHBhcmVudFN0eWxlcy5pbmxp
bmVTdHlsZSkpIHsKLSAgICAgICAgICAgICAgICAgICAgdmFyIGlubGluZVN0eWxlID0geyBzZWxl
Y3RvclRleHQ6IFdlYkluc3BlY3Rvci5VSVN0cmluZygiU3R5bGUgQXR0cmlidXRlIiksIHN0eWxl
OiBwYXJlbnRTdHlsZXMuaW5saW5lU3R5bGUsIGlzQXR0cmlidXRlOiB0cnVlLCBpc0luaGVyaXRl
ZDogdHJ1ZSB9OworICAgICAgICAgICAgICAgICAgICB2YXIgaW5saW5lU3R5bGUgPSB7IHNlbGVj
dG9yVGV4dDogV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJTdHlsZSBBdHRyaWJ1dGUiKSwgc3R5bGU6
IHBhcmVudFN0eWxlcy5pbmxpbmVTdHlsZSwgaXNBdHRyaWJ1dGU6IHRydWUsIGlzSW5oZXJpdGVk
OiB0cnVlLCBwYXJlbnROb2RlOiBwYXJlbnROb2RlIH07CiAgICAgICAgICAgICAgICAgICAgIGlm
ICghc2VwYXJhdG9ySW5zZXJ0ZWQpIHsKICAgICAgICAgICAgICAgICAgICAgICAgIGluc2VydElu
aGVyaXRlZE5vZGVTZXBhcmF0b3IocGFyZW50Tm9kZSk7CiAgICAgICAgICAgICAgICAgICAgICAg
ICBzZXBhcmF0b3JJbnNlcnRlZCA9IHRydWU7CkBAIC00ODUsNyArNTA1LDcgQEAgV2ViSW5zcGVj
dG9yLlN0eWxlc1NpZGViYXJQYW5lLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgICAgICAgICAg
aW5zZXJ0SW5oZXJpdGVkTm9kZVNlcGFyYXRvcihwYXJlbnROb2RlKTsKICAgICAgICAgICAgICAg
ICAgICAgc2VwYXJhdG9ySW5zZXJ0ZWQgPSB0cnVlOwogICAgICAgICAgICAgICAgIH0KLSAgICAg
ICAgICAgICAgICBzdHlsZVJ1bGVzLnB1c2goeyBzdHlsZTogcnVsZS5zdHlsZSwgc2VsZWN0b3JU
ZXh0OiBydWxlLnNlbGVjdG9yVGV4dCwgbWVkaWE6IHJ1bGUubWVkaWEsIHNvdXJjZVVSTDogcnVs
ZS5zb3VyY2VVUkwsIHJ1bGU6IHJ1bGUsIGlzSW5oZXJpdGVkOiB0cnVlLCBlZGl0YWJsZTogISEo
cnVsZS5zdHlsZSAmJiBydWxlLnN0eWxlLmlkKSB9KTsKKyAgICAgICAgICAgICAgICBzdHlsZVJ1
bGVzLnB1c2goeyBzdHlsZTogcnVsZS5zdHlsZSwgc2VsZWN0b3JUZXh0OiBydWxlLnNlbGVjdG9y
VGV4dCwgbWVkaWE6IHJ1bGUubWVkaWEsIHNvdXJjZVVSTDogcnVsZS5zb3VyY2VVUkwsIHJ1bGU6
IHJ1bGUsIGlzSW5oZXJpdGVkOiB0cnVlLCBwYXJlbnROb2RlOiBwYXJlbnROb2RlLCBlZGl0YWJs
ZTogISEocnVsZS5zdHlsZSAmJiBydWxlLnN0eWxlLmlkKSB9KTsKICAgICAgICAgICAgIH0KICAg
ICAgICAgICAgIHBhcmVudE5vZGUgPSBwYXJlbnROb2RlLnBhcmVudE5vZGU7CiAgICAgICAgIH0K
QEAgLTg3Myw2ICs4OTMsNyBAQCBXZWJJbnNwZWN0b3IuU3R5bGVQcm9wZXJ0aWVzU2VjdGlvbiA9
IGZ1bmN0aW9uKHBhcmVudFBhbmUsIHN0eWxlUnVsZSwgZWRpdGFibGUsCiAKICAgICB2YXIgc2Vs
ZWN0b3JDb250YWluZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKICAgICB0aGlz
Ll9zZWxlY3RvckVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzcGFuIik7CisgICAg
dGhpcy5fc2VsZWN0b3JFbGVtZW50LmFkZFN0eWxlQ2xhc3MoInNlbGVjdG9yLW1hdGNoZXMiKTsK
ICAgICB0aGlzLl9zZWxlY3RvckVsZW1lbnQudGV4dENvbnRlbnQgPSBzdHlsZVJ1bGUuc2VsZWN0
b3JUZXh0OwogICAgIHNlbGVjdG9yQ29udGFpbmVyLmFwcGVuZENoaWxkKHRoaXMuX3NlbGVjdG9y
RWxlbWVudCk7CiAKQEAgLTkxMyw3ICs5MzQsNyBAQCBXZWJJbnNwZWN0b3IuU3R5bGVQcm9wZXJ0
aWVzU2VjdGlvbiA9IGZ1bmN0aW9uKHBhcmVudFBhbmUsIHN0eWxlUnVsZSwgZWRpdGFibGUsCiAg
ICAgdGhpcy5fc2VsZWN0b3JDb250YWluZXIgPSBzZWxlY3RvckNvbnRhaW5lcjsKIAogICAgIGlm
IChpc0luaGVyaXRlZCkKLSAgICAgICAgdGhpcy5lbGVtZW50LmFkZFN0eWxlQ2xhc3MoInNob3ct
aW5oZXJpdGVkIik7IC8vIFRoaXMgb25lIGlzIHJlbGF0ZWQgdG8gaW5oZXJpdGVkIHJ1bGVzLCBu
b3QgY29tcHRlZCBzdHlsZS4KKyAgICAgICAgdGhpcy5lbGVtZW50LmFkZFN0eWxlQ2xhc3MoInNo
b3ctaW5oZXJpdGVkIik7IC8vIFRoaXMgb25lIGlzIHJlbGF0ZWQgdG8gaW5oZXJpdGVkIHJ1bGVz
LCBub3QgY29tcHV0ZWQgc3R5bGUuCiAKICAgICBpZiAoIXRoaXMuZWRpdGFibGUpCiAgICAgICAg
IHRoaXMuZWxlbWVudC5hZGRTdHlsZUNsYXNzKCJyZWFkLW9ubHkiKTsKQEAgLTExMDMsNiArMTEy
NCw5MSBAQCBXZWJJbnNwZWN0b3IuU3R5bGVQcm9wZXJ0aWVzU2VjdGlvbi5wcm90b3R5cGUgPSB7
CiAgICAgICAgIHJldHVybiBudWxsOwogICAgIH0sCiAKKyAgICAvKioKKyAgICAgKiBAcGFyYW0g
e2Z1bmN0aW9uKCk9fSBjYWxsYmFjaworICAgICAqLworICAgIF9tYXJrTWF0Y2hlZFNlbGVjdG9y
c0luR3JvdXA6IGZ1bmN0aW9uKGNhbGxiYWNrKQorICAgIHsKKyAgICAgICAgdmFyIHNlbGYgPSB0
aGlzOworICAgICAgICBmdW5jdGlvbiBteWNhbGxiYWNrKCkKKyAgICAgICAgeworICAgICAgICAg
ICAgaWYgKGNhbGxiYWNrKQorICAgICAgICAgICAgICAgIGNhbGxiYWNrKCk7CisgICAgICAgIH0K
KworICAgICAgICB2YXIgc2VsZWN0b3JUZXh0ID0gdGhpcy5fc2VsZWN0b3JFbGVtZW50LnRleHRD
b250ZW50OworICAgICAgICBpZiAoIXNlbGVjdG9yVGV4dCB8fCBzZWxlY3RvclRleHQuaW5kZXhP
ZigiLCIpID09PSAtMSkgeworICAgICAgICAgICAgbXljYWxsYmFjaygpOworICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgdmFyIHBhbmVOb2RlID0gdGhpcy5fcGFyZW50
UGFuZS5ub2RlOworICAgICAgICB2YXIgcmVsYXRlZE5vZGUgPSB0aGlzLnN0eWxlUnVsZS5wYXJl
bnROb2RlIHx8IHBhbmVOb2RlOworICAgICAgICBpZiAoIXJlbGF0ZWROb2RlKSB7CisgICAgICAg
ICAgICBteWNhbGxiYWNrKCk7CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAg
ICAgICBmdW5jdGlvbiB0cmltKHRleHQpCisgICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiB0
ZXh0LnRyaW0oKTsKKyAgICAgICAgfQorICAgICAgICB2YXIgc2VsZWN0b3JzID0gc2VsZWN0b3JU
ZXh0LnNwbGl0KCIsIikubWFwKHRyaW0pOworCisgICAgICAgIFdlYkluc3BlY3Rvci5SZW1vdGVP
YmplY3QucmVzb2x2ZU5vZGUocmVsYXRlZE5vZGUsICIiLCByZXNvbHZlZENhbGxiYWNrKTsKKyAg
ICAgICAgZnVuY3Rpb24gcmVzb2x2ZWRDYWxsYmFjayhvYmplY3QpCisgICAgICAgIHsKKyAgICAg
ICAgICAgIGlmICghb2JqZWN0KSB7CisgICAgICAgICAgICAgICAgbXljYWxsYmFjaygpOworICAg
ICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKworICAgICAgICAgICAgZm9yICh2
YXIgaSA9IDAsIHNpemUgPSBzZWxlY3RvcnMubGVuZ3RoOyBpIDwgc2l6ZTsgKytpKSB7CisgICAg
ICAgICAgICAgICAgdmFyIHNlbGVjdG9yID0gc2VsZWN0b3JzW2ldOworICAgICAgICAgICAgICAg
IG9iamVjdC5jYWxsRnVuY3Rpb25KU09OKG1hdGNoZXNTZWxlY3RvciwgW3sgdmFsdWU6IHNlbGVj
dG9yc1tpXSB9XSwgbWF0Y2hlc0NhbGxiYWNrLmJpbmQodGhpcywgaSkpOworICAgICAgICAgICAg
fQorICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gbWF0Y2hlc1NlbGVjdG9yKHNlbGVjdG9y
KQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gdGhpcy53ZWJraXRNYXRjaGVzU2VsZWN0
b3Ioc2VsZWN0b3IpOworICAgICAgICB9CisKKyAgICAgICAgdmFyIHJlc3VsdCA9IFtdOworICAg
ICAgICB2YXIgbWF0Y2hGb3VuZDsKKyAgICAgICAgZnVuY3Rpb24gbWF0Y2hlc0NhbGxiYWNrKHNl
bGVjdG9ySW5kZXgsIG1hdGNoZXMpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciBpc0xhc3Qg
PSBzZWxlY3RvckluZGV4ID09PSBzZWxlY3RvcnMubGVuZ3RoIC0gMTsKKyAgICAgICAgICAgIHZh
ciBmcmFnbWVudCA9IGRvY3VtZW50LmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKTsKKyAgICAgICAg
ICAgIHJlc3VsdFtzZWxlY3RvckluZGV4XSA9IGZyYWdtZW50OworCisgICAgICAgICAgICB2YXIg
c2VsZWN0b3JOb2RlOworICAgICAgICAgICAgaWYgKG1hdGNoZXMgJiYgcGFuZU5vZGUgPT09IHNl
bGYuX3BhcmVudFBhbmUubm9kZSkgeworICAgICAgICAgICAgICAgIHNlbGVjdG9yTm9kZSA9IGRv
Y3VtZW50LmNyZWF0ZUVsZW1lbnQoInNwYW4iKTsKKyAgICAgICAgICAgICAgICBzZWxlY3Rvck5v
ZGUuY2xhc3NOYW1lID0gInNlbGVjdG9yLW1hdGNoZXMiOworICAgICAgICAgICAgICAgIHNlbGVj
dG9yTm9kZS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShzZWxlY3RvcnNbc2Vs
ZWN0b3JJbmRleF0pKTsKKyAgICAgICAgICAgICAgICBtYXRjaEZvdW5kID0gdHJ1ZTsKKyAgICAg
ICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAgIHNlbGVjdG9yTm9kZSA9IGRvY3VtZW50LmNy
ZWF0ZVRleHROb2RlKHNlbGVjdG9yc1tzZWxlY3RvckluZGV4XSk7CisKKyAgICAgICAgICAgIGZy
YWdtZW50LmFwcGVuZENoaWxkKHNlbGVjdG9yTm9kZSk7CisgICAgICAgICAgICBpZiAoIWlzTGFz
dCkgeworICAgICAgICAgICAgICAgIGZyYWdtZW50LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0
ZVRleHROb2RlKCIsICIpKTsKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB9
CisKKyAgICAgICAgICAgIC8vIFRoaXMgY2hlY2sgaXMgaGVyZSBpbiBjYXNlIHRoZSBlbGVtZW50
IGNsYXNzIGhhcyBiZWVuIGNoYW5nZWQgZnJvbSBKUyBkdXJpbmcgdGhlIHJvdW5kdHJpcCwKKyAg
ICAgICAgICAgIC8vIHNvIHRoZSBlbGVtZW50IG1hdGNoZXMgbm9uZSBvZiB0aGUgZGlzdGluY3Qg
c2VsZWN0b3JzLiBGYWxsIGJhY2sgdG8gImFsbCBzZWxlY3RvcnMgbWF0Y2giLgorICAgICAgICAg
ICAgaWYgKG1hdGNoRm91bmQpIHsKKyAgICAgICAgICAgICAgICBzZWxmLl9zZWxlY3RvckVsZW1l
bnQuY2xhc3NOYW1lID0gInNlbGVjdG9yIjsKKyAgICAgICAgICAgICAgICBzZWxmLl9zZWxlY3Rv
ckVsZW1lbnQucmVtb3ZlQ2hpbGRyZW4oKTsKKyAgICAgICAgICAgICAgICBmb3IgKHZhciBpID0g
MDsgaSA8IHJlc3VsdC5sZW5ndGg7ICsraSkKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5fc2Vs
ZWN0b3JFbGVtZW50LmFwcGVuZENoaWxkKHJlc3VsdFtpXSk7CisgICAgICAgICAgICB9CisgICAg
ICAgICAgICBteWNhbGxiYWNrKCk7CisgICAgICAgIH0KKyAgICB9LAorCiAgICAgX2NoZWNrV2ls
bENhbmNlbEVkaXRpbmc6IGZ1bmN0aW9uKCkKICAgICB7CiAgICAgICAgIHZhciB3aWxsQ2F1c2VD
YW5jZWxFZGl0aW5nID0gdGhpcy5fd2lsbENhdXNlQ2FuY2VsRWRpdGluZzsKQEAgLTEyMzMsNyAr
MTMzOSw4IEBAIFdlYkluc3BlY3Rvci5TdHlsZVByb3BlcnRpZXNTZWN0aW9uLnByb3RvdHlwZSA9
IHsKICAgICAgICAgaWYgKFdlYkluc3BlY3Rvci5pc0JlaW5nRWRpdGVkKGVsZW1lbnQpKQogICAg
ICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIHRoaXMuX3NlbGVjdG9yRWxlbWVudC5zY3JvbGxJ
bnRvVmlld0lmTmVlZGVkKGZhbHNlKTsKKyAgICAgICAgZWxlbWVudC5zY3JvbGxJbnRvVmlld0lm
TmVlZGVkKGZhbHNlKTsKKyAgICAgICAgZWxlbWVudC50ZXh0Q29udGVudCA9IGVsZW1lbnQudGV4
dENvbnRlbnQ7IC8vIFJlc2V0IHNlbGVjdG9yIG1hcmtzIGluIGdyb3VwLgogCiAgICAgICAgIHZh
ciBjb25maWcgPSBuZXcgV2ViSW5zcGVjdG9yLkVkaXRpbmdDb25maWcodGhpcy5lZGl0aW5nU2Vs
ZWN0b3JDb21taXR0ZWQuYmluZCh0aGlzKSwgdGhpcy5lZGl0aW5nU2VsZWN0b3JDYW5jZWxsZWQu
YmluZCh0aGlzKSk7CiAgICAgICAgIFdlYkluc3BlY3Rvci5zdGFydEVkaXRpbmcodGhpcy5fc2Vs
ZWN0b3JFbGVtZW50LCBjb25maWcpOwpAQCAtMTI0MywyNSArMTM1MCwzMiBAQCBXZWJJbnNwZWN0
b3IuU3R5bGVQcm9wZXJ0aWVzU2VjdGlvbi5wcm90b3R5cGUgPSB7CiAKICAgICBfbW92ZUVkaXRv
ckZyb21TZWxlY3RvcjogZnVuY3Rpb24obW92ZURpcmVjdGlvbikKICAgICB7Ci0gICAgICAgIGlm
ICghbW92ZURpcmVjdGlvbikKKworICAgICAgICBpZiAoIW1vdmVEaXJlY3Rpb24pIHsKKyAgICAg
ICAgICAgIHRoaXMuX21hcmtNYXRjaGVkU2VsZWN0b3JzSW5Hcm91cCgpOwogICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICB9CiAKLSAgICAgICAgaWYgKG1vdmVEaXJlY3Rpb24gPT09ICJmb3J3
YXJkIikgewotICAgICAgICAgICAgdGhpcy5leHBhbmQoKTsKLSAgICAgICAgICAgIHZhciBmaXJz
dENoaWxkID0gdGhpcy5wcm9wZXJ0aWVzVHJlZU91dGxpbmUuY2hpbGRyZW5bMF07Ci0gICAgICAg
ICAgICB3aGlsZSAoZmlyc3RDaGlsZCAmJiBmaXJzdENoaWxkLmluaGVyaXRlZCkKLSAgICAgICAg
ICAgICAgICBmaXJzdENoaWxkID0gZmlyc3RDaGlsZC5uZXh0U2libGluZzsKLSAgICAgICAgICAg
IGlmICghZmlyc3RDaGlsZCkKLSAgICAgICAgICAgICAgICB0aGlzLmFkZE5ld0JsYW5rUHJvcGVy
dHkoKS5zdGFydEVkaXRpbmcoKTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBm
aXJzdENoaWxkLnN0YXJ0RWRpdGluZyhmaXJzdENoaWxkLm5hbWVFbGVtZW50KTsKLSAgICAgICAg
fSBlbHNlIHsKLSAgICAgICAgICAgIHZhciBwcmV2aW91c1NlY3Rpb24gPSB0aGlzLnByZXZpb3Vz
RWRpdGFibGVTaWJsaW5nKCk7Ci0gICAgICAgICAgICBpZiAoIXByZXZpb3VzU2VjdGlvbikKLSAg
ICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgIHRoaXMuX21hcmtNYXRjaGVkU2VsZWN0b3Jz
SW5Hcm91cChtYXJrQ2FsbGJhY2suYmluZCh0aGlzKSk7CisKKyAgICAgICAgZnVuY3Rpb24gbWFy
a0NhbGxiYWNrKCkgeworICAgICAgICAgICAgaWYgKG1vdmVEaXJlY3Rpb24gPT09ICJmb3J3YXJk
IikgeworICAgICAgICAgICAgICAgIHRoaXMuZXhwYW5kKCk7CisgICAgICAgICAgICAgICAgdmFy
IGZpcnN0Q2hpbGQgPSB0aGlzLnByb3BlcnRpZXNUcmVlT3V0bGluZS5jaGlsZHJlblswXTsKKyAg
ICAgICAgICAgICAgICB3aGlsZSAoZmlyc3RDaGlsZCAmJiBmaXJzdENoaWxkLmluaGVyaXRlZCkK
KyAgICAgICAgICAgICAgICAgICAgZmlyc3RDaGlsZCA9IGZpcnN0Q2hpbGQubmV4dFNpYmxpbmc7
CisgICAgICAgICAgICAgICAgaWYgKCFmaXJzdENoaWxkKQorICAgICAgICAgICAgICAgICAgICB0
aGlzLmFkZE5ld0JsYW5rUHJvcGVydHkoKS5zdGFydEVkaXRpbmcoKTsKKyAgICAgICAgICAgICAg
ICBlbHNlCisgICAgICAgICAgICAgICAgICAgIGZpcnN0Q2hpbGQuc3RhcnRFZGl0aW5nKGZpcnN0
Q2hpbGQubmFtZUVsZW1lbnQpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAg
ICB2YXIgcHJldmlvdXNTZWN0aW9uID0gdGhpcy5wcmV2aW91c0VkaXRhYmxlU2libGluZygpOwor
ICAgICAgICAgICAgICAgIGlmICghcHJldmlvdXNTZWN0aW9uKQorICAgICAgICAgICAgICAgICAg
ICByZXR1cm47CiAKLSAgICAgICAgICAgIHByZXZpb3VzU2VjdGlvbi5leHBhbmQoKTsKLSAgICAg
ICAgICAgIHByZXZpb3VzU2VjdGlvbi5hZGROZXdCbGFua1Byb3BlcnR5KCkuc3RhcnRFZGl0aW5n
KCk7CisgICAgICAgICAgICAgICAgcHJldmlvdXNTZWN0aW9uLmV4cGFuZCgpOworICAgICAgICAg
ICAgICAgIHByZXZpb3VzU2VjdGlvbi5hZGROZXdCbGFua1Byb3BlcnR5KCkuc3RhcnRFZGl0aW5n
KCk7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9LAogCkBAIC0xMjk5LDcgKzE0MTMs
OSBAQCBXZWJJbnNwZWN0b3IuU3R5bGVQcm9wZXJ0aWVzU2VjdGlvbi5wcm90b3R5cGUgPSB7CiAK
ICAgICBlZGl0aW5nU2VsZWN0b3JDYW5jZWxsZWQ6IGZ1bmN0aW9uKCkKICAgICB7Ci0gICAgICAg
IC8vIERvIG5vdGhpbmcsIHRoaXMgaXMgb3ZlcnJpZGRlbiBieSBCbGFua1N0eWxlUHJvcGVydGll
c1NlY3Rpb24uCisgICAgICAgIC8vIERvIG5vdGhpbmcgYnV0IG1hcmsgdGhlIHNlbGVjdG9ycyBp
biBncm91cCBpZiBuZWNlc3NhcnkuCisgICAgICAgIC8vIFRoaXMgaXMgb3ZlcnJpZGRlbiBieSBC
bGFua1N0eWxlUHJvcGVydGllc1NlY3Rpb24uCisgICAgICAgIHRoaXMuX21hcmtNYXRjaGVkU2Vs
ZWN0b3JzSW5Hcm91cCgpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC9lbGVtZW50c1BhbmVsLmNzcyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvZWxlbWVudHNQYW5lbC5jc3MKaW5kZXggZWIxMDJjYmRlNjgxNjVl
MDY5Yjc4NTA1MzM0ZjE2MTRhNmNhZjZkZi4uNTk5ZGRjMGJmYmM0NTI4Y2ZmZWM0OGJhYjA0N2Ni
MWQ3MmViNGM4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9lbGVtZW50c1BhbmVsLmNzcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL2VsZW1lbnRzUGFuZWwuY3NzCkBAIC0yMjMsNiArMjIzLDE0IEBACiAgICAgY29sb3I6IGlu
aGVyaXQ7CiB9CiAKKy5zdHlsZXMtc2VjdGlvbiAuc2VsZWN0b3IgeworICAgIGNvbG9yOiAjNzc3
OworfQorCisuc3R5bGVzLXNlY3Rpb24gLnNlbGVjdG9yLW1hdGNoZXMsIC5zdHlsZXMtc2VjdGlv
bjpob3ZlciAuc2VsZWN0b3IgeworICAgIGNvbG9yOiBibGFjazsKK30KKwogLnN0eWxlcy1zZWN0
aW9uIGFbZGF0YS11bmNvcHlhYmxlXSB7CiAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogfQpk
aWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CmluZGV4IDY4NjA0MGE5NzU4OTI5YzkzNjViYjA3MjVhOTRmOTRhMWU1MWE4ZGYuLjM5ZjU0M2Rj
ODNmM2M0Njk1YTgwNDM4OTI4YWY3MDVlZGY5ZDRjMzIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAor
MjAxMi0wOS0xNCAgQWxleGFuZGVyIFBhdmxvdiAgPGFwYXZsb3ZAY2hyb21pdW0ub3JnPgorCisg
ICAgICAgIFdlYiBJbnNwZWN0b3I6IEdyb3VwIHNlbGVjdG9ycyB0byBoaWdobGlnaHQgbWF0Y2hl
ZCBzZWxlY3RvciBpbiB0aGUgU3R5bGVzIHBhbmUgb2YgRWxlbWVudHMgUGFuZWwKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTk2NjI2CisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBodHRwL3Rlc3RzL2luc3Bl
Y3Rvci9lbGVtZW50cy10ZXN0LmpzOgorICAgICAgICAoaW5pdGlhbGl6ZV9FbGVtZW50VGVzdC5J
bnNwZWN0b3JUZXN0LmR1bXBTZWxlY3RlZEVsZW1lbnRTdHlsZXMuYnVpbGRNYXJrZWRTZWxlY3Rv
cnMpOgorICAgICAgICAoaW5pdGlhbGl6ZV9FbGVtZW50VGVzdC5JbnNwZWN0b3JUZXN0LmR1bXBT
ZWxlY3RlZEVsZW1lbnRTdHlsZXMpOiBMZXQgdGVzdHMgZ2V0IG1hdGNoZWQgc2VsZWN0b3IgbWFy
a2luZ3MgaW4gZHVtcGVkIGRhdGEKKyAgICAgICAgKiBpbnNwZWN0b3Ivc3R5bGVzL3N0eWxlcy1h
ZGQtbmV3LXJ1bGUtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIGluc3BlY3Rvci9zdHlsZXMvc3R5
bGVzLWFkZC1uZXctcnVsZS5odG1sOgorCiAyMDEyLTA5LTE0ICBDaHJpc3RvcGhlIER1bWV6ICA8
Y2hyaXN0b3BoZS5kdW1lekBpbnRlbC5jb20+CiAKICAgICAgICAgW1dLMl1bV0tUUl0gVGVzdFJ1
bm5lciBpcyBub3QgZHVtcGluZyBzb21lIGZyYW1lIGxvYWQgY2FsbGJhY2tzIGluZm9ybWF0aW9u
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9lbGVtZW50cy10
ZXN0LmpzIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvZWxlbWVudHMtdGVzdC5q
cwppbmRleCAyNzIyMDQ1NGFkZGQ0ZjBlYWQ5YzliZjhiYTZkMjNiYjRlZDFlZjY2Li4zZDRlNzRm
MTFlZGE0YWRhZDQ4YWQ5ODgxZTE4Mjc0N2RlYTg2MzQ2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9lbGVtZW50cy10ZXN0LmpzCisrKyBiL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvaW5zcGVjdG9yL2VsZW1lbnRzLXRlc3QuanMKQEAgLTExOCw3ICsxMTgsNyBA
QCBJbnNwZWN0b3JUZXN0LnNlbGVjdE5vZGVBbmRXYWl0Rm9yU3R5bGVzV2l0aENvbXB1dGVkID0g
ZnVuY3Rpb24oaWRWYWx1ZSwgY2FsbGJhYwogICAgIEluc3BlY3RvclRlc3Quc2VsZWN0Tm9kZUFu
ZFdhaXRGb3JTdHlsZXMoaWRWYWx1ZSwgc3R5bGVzQ2FsbGJhY2spOwogfQogCi1JbnNwZWN0b3JU
ZXN0LmR1bXBTZWxlY3RlZEVsZW1lbnRTdHlsZXMgPSBmdW5jdGlvbihleGNsdWRlQ29tcHV0ZWQs
IGV4Y2x1ZGVNYXRjaGVkLCBvbWl0TG9uZ2hhbmRzKQorSW5zcGVjdG9yVGVzdC5kdW1wU2VsZWN0
ZWRFbGVtZW50U3R5bGVzID0gZnVuY3Rpb24oZXhjbHVkZUNvbXB1dGVkLCBleGNsdWRlTWF0Y2hl
ZCwgb21pdExvbmdoYW5kcywgaW5jbHVkZVNlbGVjdG9yR3JvdXBNYXJrcykKIHsKICAgICBmdW5j
dGlvbiBleHRyYWN0VGV4dChlbGVtZW50KQogICAgIHsKQEAgLTEyOSw2ICsxMjksMTggQEAgSW5z
cGVjdG9yVGVzdC5kdW1wU2VsZWN0ZWRFbGVtZW50U3R5bGVzID0gZnVuY3Rpb24oZXhjbHVkZUNv
bXB1dGVkLCBleGNsdWRlTWF0Y2gKICAgICAgICAgcmV0dXJuIGVsZW1lbnQgPyBlbGVtZW50Lmdl
dEF0dHJpYnV0ZSgiZGF0YS11bmNvcHlhYmxlIikgOiAiIjsKICAgICB9CiAKKyAgICBmdW5jdGlv
biBidWlsZE1hcmtlZFNlbGVjdG9ycyhlbGVtZW50KQorICAgIHsKKyAgICAgICAgdmFyIHJlc3Vs
dCA9ICIiOworICAgICAgICBmb3IgKHZhciBub2RlID0gZWxlbWVudC5maXJzdENoaWxkOyBub2Rl
OyBub2RlID0gbm9kZS5uZXh0U2libGluZykgeworICAgICAgICAgICAgaWYgKG5vZGUubm9kZVR5
cGUgPT09IE5vZGUuRUxFTUVOVF9OT0RFICYmIG5vZGUuY2xhc3NOYW1lID09PSAic2VsZWN0b3It
bWF0Y2hlcyIpCisgICAgICAgICAgICAgICAgcmVzdWx0ICs9ICJbJCIgKyBub2RlLnRleHRDb250
ZW50ICsgIiRdIjsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICByZXN1bHQgKz0g
bm9kZS50ZXh0Q29udGVudDsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gcmVzdWx0OworICAg
IH0KKwogICAgIHZhciBzdHlsZVNlY3Rpb25zID0gV2ViSW5zcGVjdG9yLnBhbmVscy5lbGVtZW50
cy5zaWRlYmFyUGFuZXMuc3R5bGVzLnNlY3Rpb25zOwogICAgIGZvciAodmFyIHBzZXVkb0lkIGlu
IHN0eWxlU2VjdGlvbnMpIHsKICAgICAgICAgdmFyIHBzZXVkb05hbWUgPSBXZWJJbnNwZWN0b3Iu
U3R5bGVzU2lkZWJhclBhbmUuUHNldWRvSWROYW1lc1twc2V1ZG9JZF07CkBAIC0xNDUsNyArMTU3
LDcgQEAgSW5zcGVjdG9yVGVzdC5kdW1wU2VsZWN0ZWRFbGVtZW50U3R5bGVzID0gZnVuY3Rpb24o
ZXhjbHVkZUNvbXB1dGVkLCBleGNsdWRlTWF0Y2gKICAgICAgICAgICAgIHZhciBjaGFpbkVudHJp
ZXMgPSBzZWN0aW9uLnRpdGxlRWxlbWVudC5jaGlsZHJlbjsKICAgICAgICAgICAgIGZvciAodmFy
IGogPSAwOyBqIDwgY2hhaW5FbnRyaWVzLmxlbmd0aDsgKytqKSB7CiAgICAgICAgICAgICAgICAg
dmFyIGNoYWluRW50cnkgPSBjaGFpbkVudHJpZXNbal07Ci0gICAgICAgICAgICAgICAgdmFyIGVu
dHJ5TGluZSA9IGNoYWluRW50cnkuY2hpbGRyZW5bMV0udGV4dENvbnRlbnQ7CisgICAgICAgICAg
ICAgICAgdmFyIGVudHJ5TGluZSA9IGluY2x1ZGVTZWxlY3Rvckdyb3VwTWFya3MgPyBidWlsZE1h
cmtlZFNlbGVjdG9ycyhjaGFpbkVudHJ5LmNoaWxkcmVuWzFdKSA6IGNoYWluRW50cnkuY2hpbGRy
ZW5bMV0udGV4dENvbnRlbnQ7CiAgICAgICAgICAgICAgICAgaWYgKGNoYWluRW50cnkuY2hpbGRy
ZW5bMl0pCiAgICAgICAgICAgICAgICAgICAgIGVudHJ5TGluZSArPSAiICIgKyBjaGFpbkVudHJ5
LmNoaWxkcmVuWzJdLnRleHRDb250ZW50OwogICAgICAgICAgICAgICAgIGVudHJ5TGluZSArPSAi
ICgiICsgZXh0cmFjdFRleHQoY2hhaW5FbnRyeS5jaGlsZHJlblswXSkgKyAiKSI7CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3Ivc3R5bGVzL3N0eWxlcy1hZGQtbmV3LXJ1bGUtZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3N0eWxlcy9zdHlsZXMtYWRkLW5ldy1y
dWxlLWV4cGVjdGVkLnR4dAppbmRleCBhZDQ2M2E2YWQ5MWExNWZjZTFmYmExN2M1ZjMxNWJhMzQy
ZWZlMzlmLi5iNGM4OTlhNDE5MWQyMzQzZjlkMjRkYmYwODNiMDZkOWMzODg2MDk0IDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3Ivc3R5bGVzL3N0eWxlcy1hZGQtbmV3LXJ1bGUtZXhw
ZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9zdHlsZXMvc3R5bGVzLWFkZC1u
ZXctcnVsZS1leHBlY3RlZC50eHQKQEAgLTksNyArOSw3IEBAIGZvbnQtc2l6ZTogMTJweDsKIAog
PT09PT09PT0gTWF0Y2hlZCBDU1MgUnVsZXMgPT09PT09PT0KIFtleHBhbmRlZF0gCi0jaW5zcGVj
dGVkICB7IChpbnNwZWN0b3Itc3R5bGVzaGVldDoxKQorZm9vLCBbJCNpbnNwZWN0ZWQkXSwgYmFy
ICB7IChpbnNwZWN0b3Itc3R5bGVzaGVldDoxKQogY29sb3I6IG1hcm9vbjsKIAogW2V4cGFuZGVk
XSAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9zdHlsZXMvc3R5bGVzLWFkZC1u
ZXctcnVsZS5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3N0eWxlcy9zdHlsZXMtYWRkLW5l
dy1ydWxlLmh0bWwKaW5kZXggNTVmZWZkM2M0NTEzZTM4ZjBlOTUxMWU1ZjQzZGRhMjBkYjkxMzkw
ZS4uZjZjMGM0MWQ3YzRmMzBkNjA5ZTk4ODk2Y2U1ZTJmZTQ5MjA2NjJiOSAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvaW5zcGVjdG9yL3N0eWxlcy9zdHlsZXMtYWRkLW5ldy1ydWxlLmh0bWwKKysr
IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3N0eWxlcy9zdHlsZXMtYWRkLW5ldy1ydWxlLmh0bWwK
QEAgLTE4LDYgKzE4LDcgQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgICAgIC8vIENsaWNrICJBZGQg
bmV3IHJ1bGUiLgogICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiYWRkLXN0eWxlLWJ1
dHRvbi10ZXN0LWlkIikuY2xpY2soKTsKICAgICAgICAgdmFyIHNlY3Rpb24gPSBXZWJJbnNwZWN0
b3IucGFuZWxzLmVsZW1lbnRzLnNpZGViYXJQYW5lcy5zdHlsZXMuc2VjdGlvbnNbMF1bMl07Cisg
ICAgICAgIHNlY3Rpb24uX3NlbGVjdG9yRWxlbWVudC50ZXh0Q29udGVudCA9ICJmb28sICIgKyBz
ZWN0aW9uLl9zZWxlY3RvckVsZW1lbnQudGV4dENvbnRlbnQgKyAiLCBiYXIiOwogICAgICAgICBz
ZWN0aW9uLl9zZWxlY3RvckVsZW1lbnQuZGlzcGF0Y2hFdmVudChJbnNwZWN0b3JUZXN0LmNyZWF0
ZUtleUV2ZW50KCJFbnRlciIpKTsKICAgICAgICAgSW5zcGVjdG9yVGVzdC5ydW5BZnRlclBlbmRp
bmdEaXNwYXRjaGVzKHN0ZXAyKTsKICAgICB9CkBAIC00NCw3ICs0NSw3IEBAIGZ1bmN0aW9uIHRl
c3QoKQogICAgIGZ1bmN0aW9uIHN0ZXA0KCkKICAgICB7CiAgICAgICAgIEluc3BlY3RvclRlc3Qu
YWRkUmVzdWx0KCJBZnRlciBhZGRpbmcgbmV3IHJ1bGUgKGluc3BlY3RlZCk6Iik7Ci0gICAgICAg
IEluc3BlY3RvclRlc3QuZHVtcFNlbGVjdGVkRWxlbWVudFN0eWxlcyh0cnVlLCBmYWxzZSwgdHJ1
ZSk7CisgICAgICAgIEluc3BlY3RvclRlc3QuZHVtcFNlbGVjdGVkRWxlbWVudFN0eWxlcyh0cnVl
LCBmYWxzZSwgdHJ1ZSwgdHJ1ZSk7CiAgICAgICAgIEluc3BlY3RvclRlc3Quc2VsZWN0Tm9kZUFu
ZFdhaXRGb3JTdHlsZXMoIm90aGVyIiwgc3RlcDUpOwogICAgIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>164156</attachid>
            <date>2012-09-14 08:14:29 -0700</date>
            <delta_ts>2012-09-14 08:14:29 -0700</delta_ts>
            <desc>[IMAGE] Screenshot - take 2</desc>
            <filename>SelectorHighlight.png</filename>
            <type>image/png</type>
            <size>26276</size>
            <attacher name="Alexander Pavlov (apavlov)">apavlov</attacher>
            
              <data encoding="base64">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
V9zFBa1WlIY1hEouh1gmg6qtDffNrHtrDhIfHzTzlKIVSCTwnj8ftZ9/DllcXJdfqUyZMgXvvfce
mpubeduNlcx9/fXXkZiYiMjISItkWlO+NzIyEklJSairq9Nrk8vlkMlkaGtrM1ib2FKfZWVlITU1
lTuh161bh+zs7E752pSepsoTW2qDRCLBa6+9hpUrV2Lt2rVaPjfHZ5bKtHacqeOlq6Cctg3zyC0l
JezqmDGsQCxmV8eMYS0lJQb7636/m5zMLkqlVuW2+cbU7N3Lijw9WZGHB6vcvl2rj/qz7l/1Z91F
S+6+fazQ1ZV3mw+zstiVIUNslovj669eV11dzaKiophUKtXKdWu+1sjV1ZVXRl5eHgPA8vLytNab
kpmcnMy1mcq9q2loaGCxsbHM3d1dr23v3r3M09OTeXh4sO3bt+vJPX/+PJs0aZJFPgsICGCXL1/m
vhcXF2vlWmHktXqGbDClpzFfW2ODevsikYgNHz6cHTt2zCxd+PaLOTKt1cXU8WKNr02Ntcaf9p7T
fmJBm9BG1dHByubNYxXr15MzbMQrr7zCcnJyyAaix/rT5Dsiia6jUCKBS0gIBn/6KTnDRmi+H5Rs
IHqqPyloPyXG0y/jCILobjciCYIgCAraBEEQFLQJgiAICtoEQRCELYK2UCiETCZDSkoKeYkgCMLe
g7ZSqcTZs2eRlpZGXiIIgrD3oC0QCDBq1Ci0tLSQlwiCIOw9aKvx8vJCXl4evXGDIAiiOwTt9evX
IywsDEIh3bMkCIKw+6C9ceNG7Nq1CwqFgrxFEARh70G7oqICMTExEIlE5C2CIAh7D9oA4OjoSJ4i
CIKwAwwWjGKMobCwEB4eHuQlgiAIew/aIpEIMpkMf//738lLBEEQ9h60VSoVeYcgCMLOoOf4CIIg
KGgTBEEQFLQJgiAoaBMEQRAUtAmCIAibIwboDdAEQRDdhf8Pcmo6P9otfH0AAAAASUVORK5CYII=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>164359</attachid>
            <date>2012-09-17 02:23:40 -0700</date>
            <delta_ts>2012-09-17 05:43:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-96626-20120917132308.patch</filename>
            <type>text/plain</type>
            <size>18217</size>
            <attacher name="Alexander Pavlov (apavlov)">apavlov</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI4NzI5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTFiNTZmZjI0NTdhNDY0
ZjQyMjcyNzhhODNlMjYzNzc1NzM4ZjczOS4uNGUxY2E4ODAwZjM3OWM2YjczMjk2NWVkMzlhMmMw
NGU3NzE3MWU1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDMyIEBACisyMDEyLTA5LTE0ICBBbGV4
YW5kZXIgUGF2bG92ICA8YXBhdmxvdkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgV2ViIEluc3Bl
Y3RvcjogR3JvdXAgc2VsZWN0b3JzIHRvIGhpZ2hsaWdodCBtYXRjaGVkIHNlbGVjdG9yIGluIHRo
ZSBTdHlsZXMgcGFuZSBvZiBFbGVtZW50cyBQYW5lbAorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTY2MjYKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICBJbnRyb2R1Y2VkIGV2YWx1YXRpb24gb2YgZWxlbWVudC53
ZWJraXRNYXRjaGVzU2VsZWN0b3IoKSBmb3IgZXZlcnkgcGFydCBvZiBhIHNlbGVjdG9yIGdyb3Vw
IChkZWxpbWl0ZWQgYnkgY29tbWFzKS4KKyAgICAgICAgTm9uLW1hdGNoaW5nIHNlbGVjdG9ycyBp
biBncm91cHMgYXJlIGRpbW1lZC4gSWYgZWxlbWVudCBzdHlsZXMgaGF2ZSBjaGFuZ2VkIHNvIHRo
YXQgdGhlIGVsZW1lbnQgbWF0Y2hlcyBub25lIG9mIHRoZSBzZWxlY3RvcnMsCisgICAgICAgIHRo
ZSBlbnRpcmUgZ3JvdXAgaXMgcmVuZGVyZWQgYXMgbWF0Y2hlZC4KKworICAgICAgICAqIGluc3Bl
Y3Rvci9mcm9udC1lbmQvU3R5bGVzU2lkZWJhclBhbmUuanM6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuU3R5bGVzU2lkZWJhclBhbmUucHJvdG90eXBlLl9pbm5lclJlYnVpbGRVcGRhdGUubWFya0Nh
bGxiYWNrKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TdHlsZXNTaWRlYmFyUGFuZS5wcm90b3R5
cGUuX2lubmVyUmVidWlsZFVwZGF0ZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU3R5bGVzU2lk
ZWJhclBhbmUucHJvdG90eXBlLl9yZWJ1aWxkU3R5bGVSdWxlcyk6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuU3R5bGVQcm9wZXJ0aWVzU2VjdGlvbik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU3R5
bGVQcm9wZXJ0aWVzU2VjdGlvbi5wcm90b3R5cGUuX21hcmtNYXRjaGVkU2VsZWN0b3JzSW5Hcm91
cC5teWNhbGxiYWNrKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TdHlsZVByb3BlcnRpZXNTZWN0
aW9uLnByb3RvdHlwZS5fbWFya01hdGNoZWRTZWxlY3RvcnNJbkdyb3VwLnRyaW0pOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLlN0eWxlUHJvcGVydGllc1NlY3Rpb24ucHJvdG90eXBlLl9tYXJrTWF0
Y2hlZFNlbGVjdG9yc0luR3JvdXAucmVzb2x2ZWRDYWxsYmFjayk6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuU3R5bGVQcm9wZXJ0aWVzU2VjdGlvbi5wcm90b3R5cGUuX21hcmtNYXRjaGVkU2VsZWN0
b3JzSW5Hcm91cCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU3R5bGVQcm9wZXJ0aWVzU2VjdGlv
bi5wcm90b3R5cGUuX21hcmtNYXRjaGVkU2VsZWN0b3JzSW5Hcm91cC5tYXRjaGVzQ2FsbGJhY2sp
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLlN0eWxlUHJvcGVydGllc1NlY3Rpb24ucHJvdG90eXBl
LnN0YXJ0RWRpdGluZ1NlbGVjdG9yKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TdHlsZVByb3Bl
cnRpZXNTZWN0aW9uLnByb3RvdHlwZS5fbW92ZUVkaXRvckZyb21TZWxlY3Rvci5tYXJrQ2FsbGJh
Y2spOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlN0eWxlUHJvcGVydGllc1NlY3Rpb24ucHJvdG90
eXBlLl9tb3ZlRWRpdG9yRnJvbVNlbGVjdG9yKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TdHls
ZVByb3BlcnRpZXNTZWN0aW9uLnByb3RvdHlwZS5lZGl0aW5nU2VsZWN0b3JDYW5jZWxsZWQpOgor
ICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvZWxlbWVudHNQYW5lbC5jc3M6CisgICAgICAg
ICguc3R5bGVzLXNlY3Rpb24gLnNlbGVjdG9yKToKKyAgICAgICAgKC5zdHlsZXMtc2VjdGlvbiAu
c2VsZWN0b3ItbWF0Y2hlcyk6CisKIDIwMTItMDktMTcgIFBoaWxpcCBSb2dlcnMgIDxwZHJAZ29v
Z2xlLmNvbT4KIAogICAgICAgICBNYWtlIFNWR1BhdGhTZWdMaXN0LmFwcGVuZEl0ZW0gTygxKSBp
bnN0ZWFkIG9mIE8obikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9u
dC1lbmQvU3R5bGVzU2lkZWJhclBhbmUuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJv
bnQtZW5kL1N0eWxlc1NpZGViYXJQYW5lLmpzCmluZGV4IGFmMTNmNDE4OTc1ZDUwMjQ1NjFmM2Qw
NjM0YjcxZWIxYTYxNTM4M2QuLjZjZTdiNzk4OTMyM2UzYTVkMDhhNjcyMzk0MDMyYTMwMzc1M2Zi
MjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU3R5bGVz
U2lkZWJhclBhbmUuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9T
dHlsZXNTaWRlYmFyUGFuZS5qcwpAQCAtMzU4LDYgKzM1OCw3IEBAIFdlYkluc3BlY3Rvci5TdHls
ZXNTaWRlYmFyUGFuZS5wcm90b3R5cGUgPSB7CiAgICAgICAgIHZhciB1c2VkUHJvcGVydGllcyA9
IHt9OwogICAgICAgICB0aGlzLl9tYXJrVXNlZFByb3BlcnRpZXMoc3R5bGVSdWxlcywgdXNlZFBy
b3BlcnRpZXMpOwogICAgICAgICB0aGlzLnNlY3Rpb25zWzBdID0gdGhpcy5fcmVidWlsZFNlY3Rp
b25zRm9yU3R5bGVSdWxlcyhzdHlsZVJ1bGVzLCB1c2VkUHJvcGVydGllcywgMCwgbnVsbCk7Cisg
ICAgICAgIHZhciByZXNwb25zZXNMZWZ0ID0gdGhpcy5zZWN0aW9uc1swXS5sZW5ndGg7CiAgICAg
ICAgIHZhciBhbmNob3JFbGVtZW50ID0gdGhpcy5zZWN0aW9uc1swXS5pbmhlcml0ZWRQcm9wZXJ0
aWVzU2VwYXJhdG9yRWxlbWVudDsKIAogICAgICAgICBpZiAoc3R5bGVzLmNvbXB1dGVkU3R5bGUp
ICAgICAgICAKQEAgLTM4MCw5ICszODEsMjggQEAgV2ViSW5zcGVjdG9yLlN0eWxlc1NpZGViYXJQ
YW5lLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHVzZWRQcm9wZXJ0aWVzID0ge307CiAgICAg
ICAgICAgICB0aGlzLl9tYXJrVXNlZFByb3BlcnRpZXMoc3R5bGVSdWxlcywgdXNlZFByb3BlcnRp
ZXMpOwogICAgICAgICAgICAgdGhpcy5zZWN0aW9uc1twc2V1ZG9JZF0gPSB0aGlzLl9yZWJ1aWxk
U2VjdGlvbnNGb3JTdHlsZVJ1bGVzKHN0eWxlUnVsZXMsIHVzZWRQcm9wZXJ0aWVzLCBwc2V1ZG9J
ZCwgYW5jaG9yRWxlbWVudCk7CisgICAgICAgICAgICByZXNwb25zZXNMZWZ0ICs9IHRoaXMuc2Vj
dGlvbnNbcHNldWRvSWRdLmxlbmd0aDsKICAgICAgICAgfQogCi0gICAgICAgIHRoaXMuX25vZGVT
dHlsZXNVcGRhdGVkRm9yVGVzdChub2RlLCB0cnVlKTsKKyAgICAgICAgLy8gTWFyayBtYXRjaGlu
ZyBzZWxlY3RvcnMgaW4gY29tbWEtZGVsaW1pdGVkIHNlbGVjdG9yIGdyb3Vwcy4KKyAgICAgICAg
dmFyIGJvdW5kTWFya0NhbGxiYWNrID0gbWFya0NhbGxiYWNrLmJpbmQodGhpcyk7CisgICAgICAg
IGZvciAodmFyIGlkIGluIHRoaXMuc2VjdGlvbnMpIHsKKyAgICAgICAgICAgIHZhciBzZWN0aW9u
c0ZvclBzZXVkb0lkID0gdGhpcy5zZWN0aW9uc1tpZF0uc2xpY2UoKTsKKyAgICAgICAgICAgIGZv
ciAodmFyIGogPSAwOyBqIDwgc2VjdGlvbnNGb3JQc2V1ZG9JZC5sZW5ndGg7ICsraikgeworICAg
ICAgICAgICAgICAgIHZhciBzZWN0aW9uID0gc2VjdGlvbnNGb3JQc2V1ZG9JZFtqXTsKKyAgICAg
ICAgICAgICAgICBpZiAoIXNlY3Rpb24uc3R5bGVSdWxlIHx8IHNlY3Rpb24uaXNCbGFuayB8fCBz
ZWN0aW9uLnN0eWxlUnVsZS5jb21wdXRlZFN0eWxlIHx8IHNlY3Rpb24uc3R5bGVSdWxlLmlzQXR0
cmlidXRlKSB7CisgICAgICAgICAgICAgICAgICAgIGJvdW5kTWFya0NhbGxiYWNrKCk7CisgICAg
ICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAg
ICAgICBzZWN0aW9uLl9tYXJrTWF0Y2hlZFNlbGVjdG9yc0luR3JvdXAoYm91bmRNYXJrQ2FsbGJh
Y2spOworICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gbWFya0Nh
bGxiYWNrKCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKCEoLS1yZXNwb25zZXNMZWZ0KSkK
KyAgICAgICAgICAgICAgICB0aGlzLl9ub2RlU3R5bGVzVXBkYXRlZEZvclRlc3Qobm9kZSwgdHJ1
ZSk7CisgICAgICAgIH0KICAgICB9LAogCiAgICAgX25vZGVTdHlsZXNVcGRhdGVkRm9yVGVzdDog
ZnVuY3Rpb24obm9kZSwgcmVidWlsZCkKQEAgLTQ2NCw3ICs0ODQsNyBAQCBXZWJJbnNwZWN0b3Iu
U3R5bGVzU2lkZWJhclBhbmUucHJvdG90eXBlID0gewogICAgICAgICAgICAgdmFyIHNlcGFyYXRv
ckluc2VydGVkID0gZmFsc2U7CiAgICAgICAgICAgICBpZiAocGFyZW50U3R5bGVzLmlubGluZVN0
eWxlKSB7CiAgICAgICAgICAgICAgICAgaWYgKHRoaXMuX2NvbnRhaW5zSW5oZXJpdGVkKHBhcmVu
dFN0eWxlcy5pbmxpbmVTdHlsZSkpIHsKLSAgICAgICAgICAgICAgICAgICAgdmFyIGlubGluZVN0
eWxlID0geyBzZWxlY3RvclRleHQ6IFdlYkluc3BlY3Rvci5VSVN0cmluZygiU3R5bGUgQXR0cmli
dXRlIiksIHN0eWxlOiBwYXJlbnRTdHlsZXMuaW5saW5lU3R5bGUsIGlzQXR0cmlidXRlOiB0cnVl
LCBpc0luaGVyaXRlZDogdHJ1ZSB9OworICAgICAgICAgICAgICAgICAgICB2YXIgaW5saW5lU3R5
bGUgPSB7IHNlbGVjdG9yVGV4dDogV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJTdHlsZSBBdHRyaWJ1
dGUiKSwgc3R5bGU6IHBhcmVudFN0eWxlcy5pbmxpbmVTdHlsZSwgaXNBdHRyaWJ1dGU6IHRydWUs
IGlzSW5oZXJpdGVkOiB0cnVlLCBwYXJlbnROb2RlOiBwYXJlbnROb2RlIH07CiAgICAgICAgICAg
ICAgICAgICAgIGlmICghc2VwYXJhdG9ySW5zZXJ0ZWQpIHsKICAgICAgICAgICAgICAgICAgICAg
ICAgIGluc2VydEluaGVyaXRlZE5vZGVTZXBhcmF0b3IocGFyZW50Tm9kZSk7CiAgICAgICAgICAg
ICAgICAgICAgICAgICBzZXBhcmF0b3JJbnNlcnRlZCA9IHRydWU7CkBAIC00ODUsNyArNTA1LDcg
QEAgV2ViSW5zcGVjdG9yLlN0eWxlc1NpZGViYXJQYW5lLnByb3RvdHlwZSA9IHsKICAgICAgICAg
ICAgICAgICAgICAgaW5zZXJ0SW5oZXJpdGVkTm9kZVNlcGFyYXRvcihwYXJlbnROb2RlKTsKICAg
ICAgICAgICAgICAgICAgICAgc2VwYXJhdG9ySW5zZXJ0ZWQgPSB0cnVlOwogICAgICAgICAgICAg
ICAgIH0KLSAgICAgICAgICAgICAgICBzdHlsZVJ1bGVzLnB1c2goeyBzdHlsZTogcnVsZS5zdHls
ZSwgc2VsZWN0b3JUZXh0OiBydWxlLnNlbGVjdG9yVGV4dCwgbWVkaWE6IHJ1bGUubWVkaWEsIHNv
dXJjZVVSTDogcnVsZS5zb3VyY2VVUkwsIHJ1bGU6IHJ1bGUsIGlzSW5oZXJpdGVkOiB0cnVlLCBl
ZGl0YWJsZTogISEocnVsZS5zdHlsZSAmJiBydWxlLnN0eWxlLmlkKSB9KTsKKyAgICAgICAgICAg
ICAgICBzdHlsZVJ1bGVzLnB1c2goeyBzdHlsZTogcnVsZS5zdHlsZSwgc2VsZWN0b3JUZXh0OiBy
dWxlLnNlbGVjdG9yVGV4dCwgbWVkaWE6IHJ1bGUubWVkaWEsIHNvdXJjZVVSTDogcnVsZS5zb3Vy
Y2VVUkwsIHJ1bGU6IHJ1bGUsIGlzSW5oZXJpdGVkOiB0cnVlLCBwYXJlbnROb2RlOiBwYXJlbnRO
b2RlLCBlZGl0YWJsZTogISEocnVsZS5zdHlsZSAmJiBydWxlLnN0eWxlLmlkKSB9KTsKICAgICAg
ICAgICAgIH0KICAgICAgICAgICAgIHBhcmVudE5vZGUgPSBwYXJlbnROb2RlLnBhcmVudE5vZGU7
CiAgICAgICAgIH0KQEAgLTg3Myw2ICs4OTMsNyBAQCBXZWJJbnNwZWN0b3IuU3R5bGVQcm9wZXJ0
aWVzU2VjdGlvbiA9IGZ1bmN0aW9uKHBhcmVudFBhbmUsIHN0eWxlUnVsZSwgZWRpdGFibGUsCiAK
ICAgICB2YXIgc2VsZWN0b3JDb250YWluZXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYi
KTsKICAgICB0aGlzLl9zZWxlY3RvckVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJz
cGFuIik7CisgICAgdGhpcy5fc2VsZWN0b3JFbGVtZW50LmFkZFN0eWxlQ2xhc3MoInNlbGVjdG9y
LW1hdGNoZXMiKTsKICAgICB0aGlzLl9zZWxlY3RvckVsZW1lbnQudGV4dENvbnRlbnQgPSBzdHls
ZVJ1bGUuc2VsZWN0b3JUZXh0OwogICAgIHNlbGVjdG9yQ29udGFpbmVyLmFwcGVuZENoaWxkKHRo
aXMuX3NlbGVjdG9yRWxlbWVudCk7CiAKQEAgLTkxMyw3ICs5MzQsNyBAQCBXZWJJbnNwZWN0b3Iu
U3R5bGVQcm9wZXJ0aWVzU2VjdGlvbiA9IGZ1bmN0aW9uKHBhcmVudFBhbmUsIHN0eWxlUnVsZSwg
ZWRpdGFibGUsCiAgICAgdGhpcy5fc2VsZWN0b3JDb250YWluZXIgPSBzZWxlY3RvckNvbnRhaW5l
cjsKIAogICAgIGlmIChpc0luaGVyaXRlZCkKLSAgICAgICAgdGhpcy5lbGVtZW50LmFkZFN0eWxl
Q2xhc3MoInNob3ctaW5oZXJpdGVkIik7IC8vIFRoaXMgb25lIGlzIHJlbGF0ZWQgdG8gaW5oZXJp
dGVkIHJ1bGVzLCBub3QgY29tcHRlZCBzdHlsZS4KKyAgICAgICAgdGhpcy5lbGVtZW50LmFkZFN0
eWxlQ2xhc3MoInNob3ctaW5oZXJpdGVkIik7IC8vIFRoaXMgb25lIGlzIHJlbGF0ZWQgdG8gaW5o
ZXJpdGVkIHJ1bGVzLCBub3QgY29tcHV0ZWQgc3R5bGUuCiAKICAgICBpZiAoIXRoaXMuZWRpdGFi
bGUpCiAgICAgICAgIHRoaXMuZWxlbWVudC5hZGRTdHlsZUNsYXNzKCJyZWFkLW9ubHkiKTsKQEAg
LTExMDMsNiArMTEyNCw5MSBAQCBXZWJJbnNwZWN0b3IuU3R5bGVQcm9wZXJ0aWVzU2VjdGlvbi5w
cm90b3R5cGUgPSB7CiAgICAgICAgIHJldHVybiBudWxsOwogICAgIH0sCiAKKyAgICAvKioKKyAg
ICAgKiBAcGFyYW0ge2Z1bmN0aW9uKCk9fSBjYWxsYmFjaworICAgICAqLworICAgIF9tYXJrTWF0
Y2hlZFNlbGVjdG9yc0luR3JvdXA6IGZ1bmN0aW9uKGNhbGxiYWNrKQorICAgIHsKKyAgICAgICAg
dmFyIHNlbGYgPSB0aGlzOworICAgICAgICBmdW5jdGlvbiBteWNhbGxiYWNrKCkKKyAgICAgICAg
eworICAgICAgICAgICAgaWYgKGNhbGxiYWNrKQorICAgICAgICAgICAgICAgIGNhbGxiYWNrKCk7
CisgICAgICAgIH0KKworICAgICAgICB2YXIgc2VsZWN0b3JUZXh0ID0gdGhpcy5fc2VsZWN0b3JF
bGVtZW50LnRleHRDb250ZW50OworICAgICAgICBpZiAoIXNlbGVjdG9yVGV4dCB8fCBzZWxlY3Rv
clRleHQuaW5kZXhPZigiLCIpID09PSAtMSkgeworICAgICAgICAgICAgbXljYWxsYmFjaygpOwor
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgdmFyIHBhbmVOb2RlID0g
dGhpcy5fcGFyZW50UGFuZS5ub2RlOworICAgICAgICB2YXIgcmVsYXRlZE5vZGUgPSB0aGlzLnN0
eWxlUnVsZS5wYXJlbnROb2RlIHx8IHBhbmVOb2RlOworICAgICAgICBpZiAoIXJlbGF0ZWROb2Rl
KSB7CisgICAgICAgICAgICBteWNhbGxiYWNrKCk7CisgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgIH0KKworICAgICAgICBmdW5jdGlvbiB0cmltKHRleHQpCisgICAgICAgIHsKKyAgICAgICAg
ICAgIHJldHVybiB0ZXh0LnRyaW0oKTsKKyAgICAgICAgfQorICAgICAgICB2YXIgc2VsZWN0b3Jz
ID0gc2VsZWN0b3JUZXh0LnNwbGl0KCIsIikubWFwKHRyaW0pOworCisgICAgICAgIFdlYkluc3Bl
Y3Rvci5SZW1vdGVPYmplY3QucmVzb2x2ZU5vZGUocmVsYXRlZE5vZGUsICIiLCByZXNvbHZlZENh
bGxiYWNrKTsKKyAgICAgICAgZnVuY3Rpb24gcmVzb2x2ZWRDYWxsYmFjayhvYmplY3QpCisgICAg
ICAgIHsKKyAgICAgICAgICAgIGlmICghb2JqZWN0KSB7CisgICAgICAgICAgICAgICAgbXljYWxs
YmFjaygpOworICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIH0KKworICAgICAg
ICAgICAgZm9yICh2YXIgaSA9IDAsIHNpemUgPSBzZWxlY3RvcnMubGVuZ3RoOyBpIDwgc2l6ZTsg
KytpKSB7CisgICAgICAgICAgICAgICAgdmFyIHNlbGVjdG9yID0gc2VsZWN0b3JzW2ldOworICAg
ICAgICAgICAgICAgIG9iamVjdC5jYWxsRnVuY3Rpb25KU09OKG1hdGNoZXNTZWxlY3RvciwgW3sg
dmFsdWU6IHNlbGVjdG9yc1tpXSB9XSwgbWF0Y2hlc0NhbGxiYWNrLmJpbmQodGhpcywgaSkpOwor
ICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgZnVuY3Rpb24gbWF0Y2hlc1NlbGVj
dG9yKHNlbGVjdG9yKQorICAgICAgICB7CisgICAgICAgICAgICByZXR1cm4gdGhpcy53ZWJraXRN
YXRjaGVzU2VsZWN0b3Ioc2VsZWN0b3IpOworICAgICAgICB9CisKKyAgICAgICAgdmFyIHJlc3Vs
dCA9IFtdOworICAgICAgICB2YXIgbWF0Y2hGb3VuZDsKKyAgICAgICAgZnVuY3Rpb24gbWF0Y2hl
c0NhbGxiYWNrKHNlbGVjdG9ySW5kZXgsIG1hdGNoZXMpCisgICAgICAgIHsKKyAgICAgICAgICAg
IHZhciBpc0xhc3QgPSBzZWxlY3RvckluZGV4ID09PSBzZWxlY3RvcnMubGVuZ3RoIC0gMTsKKyAg
ICAgICAgICAgIHZhciBmcmFnbWVudCA9IGRvY3VtZW50LmNyZWF0ZURvY3VtZW50RnJhZ21lbnQo
KTsKKyAgICAgICAgICAgIHJlc3VsdFtzZWxlY3RvckluZGV4XSA9IGZyYWdtZW50OworCisgICAg
ICAgICAgICB2YXIgc2VsZWN0b3JOb2RlOworICAgICAgICAgICAgaWYgKG1hdGNoZXMgJiYgcGFu
ZU5vZGUgPT09IHNlbGYuX3BhcmVudFBhbmUubm9kZSkgeworICAgICAgICAgICAgICAgIHNlbGVj
dG9yTm9kZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInNwYW4iKTsKKyAgICAgICAgICAgICAg
ICBzZWxlY3Rvck5vZGUuY2xhc3NOYW1lID0gInNlbGVjdG9yLW1hdGNoZXMiOworICAgICAgICAg
ICAgICAgIHNlbGVjdG9yTm9kZS5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZShz
ZWxlY3RvcnNbc2VsZWN0b3JJbmRleF0pKTsKKyAgICAgICAgICAgICAgICBtYXRjaEZvdW5kID0g
dHJ1ZTsKKyAgICAgICAgICAgIH0gZWxzZQorICAgICAgICAgICAgICAgIHNlbGVjdG9yTm9kZSA9
IGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKHNlbGVjdG9yc1tzZWxlY3RvckluZGV4XSk7CisKKyAg
ICAgICAgICAgIGZyYWdtZW50LmFwcGVuZENoaWxkKHNlbGVjdG9yTm9kZSk7CisgICAgICAgICAg
ICBpZiAoIWlzTGFzdCkgeworICAgICAgICAgICAgICAgIGZyYWdtZW50LmFwcGVuZENoaWxkKGRv
Y3VtZW50LmNyZWF0ZVRleHROb2RlKCIsICIpKTsKKyAgICAgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIFRoaXMgY2hlY2sgaXMgaGVyZSBpbiBjYXNl
IHRoZSBlbGVtZW50IGNsYXNzIGhhcyBiZWVuIGNoYW5nZWQgZnJvbSBKUyBkdXJpbmcgdGhlIHJv
dW5kdHJpcCwKKyAgICAgICAgICAgIC8vIHNvIHRoZSBlbGVtZW50IG1hdGNoZXMgbm9uZSBvZiB0
aGUgZGlzdGluY3Qgc2VsZWN0b3JzLiBGYWxsIGJhY2sgdG8gImFsbCBzZWxlY3RvcnMgbWF0Y2gi
LgorICAgICAgICAgICAgaWYgKG1hdGNoRm91bmQpIHsKKyAgICAgICAgICAgICAgICBzZWxmLl9z
ZWxlY3RvckVsZW1lbnQuY2xhc3NOYW1lID0gInNlbGVjdG9yIjsKKyAgICAgICAgICAgICAgICBz
ZWxmLl9zZWxlY3RvckVsZW1lbnQucmVtb3ZlQ2hpbGRyZW4oKTsKKyAgICAgICAgICAgICAgICBm
b3IgKHZhciBpID0gMDsgaSA8IHJlc3VsdC5sZW5ndGg7ICsraSkKKyAgICAgICAgICAgICAgICAg
ICAgc2VsZi5fc2VsZWN0b3JFbGVtZW50LmFwcGVuZENoaWxkKHJlc3VsdFtpXSk7CisgICAgICAg
ICAgICB9CisgICAgICAgICAgICBteWNhbGxiYWNrKCk7CisgICAgICAgIH0KKyAgICB9LAorCiAg
ICAgX2NoZWNrV2lsbENhbmNlbEVkaXRpbmc6IGZ1bmN0aW9uKCkKICAgICB7CiAgICAgICAgIHZh
ciB3aWxsQ2F1c2VDYW5jZWxFZGl0aW5nID0gdGhpcy5fd2lsbENhdXNlQ2FuY2VsRWRpdGluZzsK
QEAgLTEyMzMsNyArMTMzOSw4IEBAIFdlYkluc3BlY3Rvci5TdHlsZVByb3BlcnRpZXNTZWN0aW9u
LnByb3RvdHlwZSA9IHsKICAgICAgICAgaWYgKFdlYkluc3BlY3Rvci5pc0JlaW5nRWRpdGVkKGVs
ZW1lbnQpKQogICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgIHRoaXMuX3NlbGVjdG9yRWxl
bWVudC5zY3JvbGxJbnRvVmlld0lmTmVlZGVkKGZhbHNlKTsKKyAgICAgICAgZWxlbWVudC5zY3Jv
bGxJbnRvVmlld0lmTmVlZGVkKGZhbHNlKTsKKyAgICAgICAgZWxlbWVudC50ZXh0Q29udGVudCA9
IGVsZW1lbnQudGV4dENvbnRlbnQ7IC8vIFJlc2V0IHNlbGVjdG9yIG1hcmtzIGluIGdyb3VwLgog
CiAgICAgICAgIHZhciBjb25maWcgPSBuZXcgV2ViSW5zcGVjdG9yLkVkaXRpbmdDb25maWcodGhp
cy5lZGl0aW5nU2VsZWN0b3JDb21taXR0ZWQuYmluZCh0aGlzKSwgdGhpcy5lZGl0aW5nU2VsZWN0
b3JDYW5jZWxsZWQuYmluZCh0aGlzKSk7CiAgICAgICAgIFdlYkluc3BlY3Rvci5zdGFydEVkaXRp
bmcodGhpcy5fc2VsZWN0b3JFbGVtZW50LCBjb25maWcpOwpAQCAtMTI0MywyNSArMTM1MCwzMiBA
QCBXZWJJbnNwZWN0b3IuU3R5bGVQcm9wZXJ0aWVzU2VjdGlvbi5wcm90b3R5cGUgPSB7CiAKICAg
ICBfbW92ZUVkaXRvckZyb21TZWxlY3RvcjogZnVuY3Rpb24obW92ZURpcmVjdGlvbikKICAgICB7
Ci0gICAgICAgIGlmICghbW92ZURpcmVjdGlvbikKKworICAgICAgICBpZiAoIW1vdmVEaXJlY3Rp
b24pIHsKKyAgICAgICAgICAgIHRoaXMuX21hcmtNYXRjaGVkU2VsZWN0b3JzSW5Hcm91cCgpOwog
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CiAKLSAgICAgICAgaWYgKG1vdmVEaXJlY3Rp
b24gPT09ICJmb3J3YXJkIikgewotICAgICAgICAgICAgdGhpcy5leHBhbmQoKTsKLSAgICAgICAg
ICAgIHZhciBmaXJzdENoaWxkID0gdGhpcy5wcm9wZXJ0aWVzVHJlZU91dGxpbmUuY2hpbGRyZW5b
MF07Ci0gICAgICAgICAgICB3aGlsZSAoZmlyc3RDaGlsZCAmJiBmaXJzdENoaWxkLmluaGVyaXRl
ZCkKLSAgICAgICAgICAgICAgICBmaXJzdENoaWxkID0gZmlyc3RDaGlsZC5uZXh0U2libGluZzsK
LSAgICAgICAgICAgIGlmICghZmlyc3RDaGlsZCkKLSAgICAgICAgICAgICAgICB0aGlzLmFkZE5l
d0JsYW5rUHJvcGVydHkoKS5zdGFydEVkaXRpbmcoKTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAg
ICAgICAgICAgICBmaXJzdENoaWxkLnN0YXJ0RWRpdGluZyhmaXJzdENoaWxkLm5hbWVFbGVtZW50
KTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIHZhciBwcmV2aW91c1NlY3Rpb24gPSB0
aGlzLnByZXZpb3VzRWRpdGFibGVTaWJsaW5nKCk7Ci0gICAgICAgICAgICBpZiAoIXByZXZpb3Vz
U2VjdGlvbikKLSAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgIHRoaXMuX21hcmtNYXRj
aGVkU2VsZWN0b3JzSW5Hcm91cChtYXJrQ2FsbGJhY2suYmluZCh0aGlzKSk7CisKKyAgICAgICAg
ZnVuY3Rpb24gbWFya0NhbGxiYWNrKCkgeworICAgICAgICAgICAgaWYgKG1vdmVEaXJlY3Rpb24g
PT09ICJmb3J3YXJkIikgeworICAgICAgICAgICAgICAgIHRoaXMuZXhwYW5kKCk7CisgICAgICAg
ICAgICAgICAgdmFyIGZpcnN0Q2hpbGQgPSB0aGlzLnByb3BlcnRpZXNUcmVlT3V0bGluZS5jaGls
ZHJlblswXTsKKyAgICAgICAgICAgICAgICB3aGlsZSAoZmlyc3RDaGlsZCAmJiBmaXJzdENoaWxk
LmluaGVyaXRlZCkKKyAgICAgICAgICAgICAgICAgICAgZmlyc3RDaGlsZCA9IGZpcnN0Q2hpbGQu
bmV4dFNpYmxpbmc7CisgICAgICAgICAgICAgICAgaWYgKCFmaXJzdENoaWxkKQorICAgICAgICAg
ICAgICAgICAgICB0aGlzLmFkZE5ld0JsYW5rUHJvcGVydHkoKS5zdGFydEVkaXRpbmcoKTsKKyAg
ICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgIGZpcnN0Q2hpbGQuc3RhcnRF
ZGl0aW5nKGZpcnN0Q2hpbGQubmFtZUVsZW1lbnQpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAg
ICAgICAgICAgICAgICB2YXIgcHJldmlvdXNTZWN0aW9uID0gdGhpcy5wcmV2aW91c0VkaXRhYmxl
U2libGluZygpOworICAgICAgICAgICAgICAgIGlmICghcHJldmlvdXNTZWN0aW9uKQorICAgICAg
ICAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgICAgIHByZXZpb3VzU2VjdGlvbi5leHBh
bmQoKTsKLSAgICAgICAgICAgIHByZXZpb3VzU2VjdGlvbi5hZGROZXdCbGFua1Byb3BlcnR5KCku
c3RhcnRFZGl0aW5nKCk7CisgICAgICAgICAgICAgICAgcHJldmlvdXNTZWN0aW9uLmV4cGFuZCgp
OworICAgICAgICAgICAgICAgIHByZXZpb3VzU2VjdGlvbi5hZGROZXdCbGFua1Byb3BlcnR5KCku
c3RhcnRFZGl0aW5nKCk7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICB9LAogCkBAIC0x
Mjk5LDcgKzE0MTMsOSBAQCBXZWJJbnNwZWN0b3IuU3R5bGVQcm9wZXJ0aWVzU2VjdGlvbi5wcm90
b3R5cGUgPSB7CiAKICAgICBlZGl0aW5nU2VsZWN0b3JDYW5jZWxsZWQ6IGZ1bmN0aW9uKCkKICAg
ICB7Ci0gICAgICAgIC8vIERvIG5vdGhpbmcsIHRoaXMgaXMgb3ZlcnJpZGRlbiBieSBCbGFua1N0
eWxlUHJvcGVydGllc1NlY3Rpb24uCisgICAgICAgIC8vIERvIG5vdGhpbmcgYnV0IG1hcmsgdGhl
IHNlbGVjdG9ycyBpbiBncm91cCBpZiBuZWNlc3NhcnkuCisgICAgICAgIC8vIFRoaXMgaXMgb3Zl
cnJpZGRlbiBieSBCbGFua1N0eWxlUHJvcGVydGllc1NlY3Rpb24uCisgICAgICAgIHRoaXMuX21h
cmtNYXRjaGVkU2VsZWN0b3JzSW5Hcm91cCgpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9lbGVtZW50c1BhbmVsLmNzcyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvZWxlbWVudHNQYW5lbC5jc3MKaW5kZXggZWIx
MDJjYmRlNjgxNjVlMDY5Yjc4NTA1MzM0ZjE2MTRhNmNhZjZkZi4uNTY4ZmQ0MDVmYzk2MGQ0MTUw
NWFjY2Y4ZGY2ZmQ3OWE5NTkyZjEyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9lbGVtZW50c1BhbmVsLmNzcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL2VsZW1lbnRzUGFuZWwuY3NzCkBAIC0yMjMsNiArMjIzLDE0IEBACiAg
ICAgY29sb3I6IGluaGVyaXQ7CiB9CiAKKy5zdHlsZXMtc2VjdGlvbiAuc2VsZWN0b3IgeworICAg
IGNvbG9yOiAjNzc3OworfQorCisuc3R5bGVzLXNlY3Rpb24gLnNlbGVjdG9yLW1hdGNoZXMgewor
ICAgIGNvbG9yOiBibGFjazsKK30KKwogLnN0eWxlcy1zZWN0aW9uIGFbZGF0YS11bmNvcHlhYmxl
XSB7CiAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDk2Yjk2NmIzZmVhY2Ix
M2E1ZmFkMGRlNTE3OTY1YzJmOGQ5NDUxOWIuLmVhMjZjYzdhMWZiMmE3YzA3ODU0NTI2YjNhYTZm
MDYzMmYzZDZkYjkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAxMi0wOS0xNCAgQWxleGFuZGVy
IFBhdmxvdiAgPGFwYXZsb3ZAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6
IEdyb3VwIHNlbGVjdG9ycyB0byBoaWdobGlnaHQgbWF0Y2hlZCBzZWxlY3RvciBpbiB0aGUgU3R5
bGVzIHBhbmUgb2YgRWxlbWVudHMgUGFuZWwKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTk2NjI2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci9lbGVtZW50cy10ZXN0Lmpz
OgorICAgICAgICAoaW5pdGlhbGl6ZV9FbGVtZW50VGVzdC5JbnNwZWN0b3JUZXN0LmR1bXBTZWxl
Y3RlZEVsZW1lbnRTdHlsZXMuYnVpbGRNYXJrZWRTZWxlY3RvcnMpOgorICAgICAgICAoaW5pdGlh
bGl6ZV9FbGVtZW50VGVzdC5JbnNwZWN0b3JUZXN0LmR1bXBTZWxlY3RlZEVsZW1lbnRTdHlsZXMp
OiBMZXQgdGVzdHMgZ2V0IG1hdGNoZWQgc2VsZWN0b3IgbWFya2luZ3MgaW4gZHVtcGVkIGRhdGEK
KyAgICAgICAgKiBpbnNwZWN0b3Ivc3R5bGVzL3N0eWxlcy1hZGQtbmV3LXJ1bGUtZXhwZWN0ZWQu
dHh0OgorICAgICAgICAqIGluc3BlY3Rvci9zdHlsZXMvc3R5bGVzLWFkZC1uZXctcnVsZS5odG1s
OgorCiAyMDEyLTA5LTE3ICBQaGlsaXAgUm9nZXJzICA8cGRyQGdvb2dsZS5jb20+CiAKICAgICAg
ICAgTWFrZSBTVkdQYXRoU2VnTGlzdC5hcHBlbmQgTygxKSBpbnN0ZWFkIG9mIE8obikKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2VsZW1lbnRzLXRlc3QuanMg
Yi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9lbGVtZW50cy10ZXN0LmpzCmluZGV4
IDI3MjIwNDU0YWRkZDRmMGVhZDljOWJmOGJhNmQyM2JiNGVkMWVmNjYuLjNkNGU3NGYxMWVkYTRh
ZGFkNDhhZDk4ODFlMTgyNzQ3ZGVhODYzNDYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvaW5zcGVjdG9yL2VsZW1lbnRzLXRlc3QuanMKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9pbnNwZWN0b3IvZWxlbWVudHMtdGVzdC5qcwpAQCAtMTE4LDcgKzExOCw3IEBAIEluc3Bl
Y3RvclRlc3Quc2VsZWN0Tm9kZUFuZFdhaXRGb3JTdHlsZXNXaXRoQ29tcHV0ZWQgPSBmdW5jdGlv
bihpZFZhbHVlLCBjYWxsYmFjCiAgICAgSW5zcGVjdG9yVGVzdC5zZWxlY3ROb2RlQW5kV2FpdEZv
clN0eWxlcyhpZFZhbHVlLCBzdHlsZXNDYWxsYmFjayk7CiB9CiAKLUluc3BlY3RvclRlc3QuZHVt
cFNlbGVjdGVkRWxlbWVudFN0eWxlcyA9IGZ1bmN0aW9uKGV4Y2x1ZGVDb21wdXRlZCwgZXhjbHVk
ZU1hdGNoZWQsIG9taXRMb25naGFuZHMpCitJbnNwZWN0b3JUZXN0LmR1bXBTZWxlY3RlZEVsZW1l
bnRTdHlsZXMgPSBmdW5jdGlvbihleGNsdWRlQ29tcHV0ZWQsIGV4Y2x1ZGVNYXRjaGVkLCBvbWl0
TG9uZ2hhbmRzLCBpbmNsdWRlU2VsZWN0b3JHcm91cE1hcmtzKQogewogICAgIGZ1bmN0aW9uIGV4
dHJhY3RUZXh0KGVsZW1lbnQpCiAgICAgewpAQCAtMTI5LDYgKzEyOSwxOCBAQCBJbnNwZWN0b3JU
ZXN0LmR1bXBTZWxlY3RlZEVsZW1lbnRTdHlsZXMgPSBmdW5jdGlvbihleGNsdWRlQ29tcHV0ZWQs
IGV4Y2x1ZGVNYXRjaAogICAgICAgICByZXR1cm4gZWxlbWVudCA/IGVsZW1lbnQuZ2V0QXR0cmli
dXRlKCJkYXRhLXVuY29weWFibGUiKSA6ICIiOwogICAgIH0KIAorICAgIGZ1bmN0aW9uIGJ1aWxk
TWFya2VkU2VsZWN0b3JzKGVsZW1lbnQpCisgICAgeworICAgICAgICB2YXIgcmVzdWx0ID0gIiI7
CisgICAgICAgIGZvciAodmFyIG5vZGUgPSBlbGVtZW50LmZpcnN0Q2hpbGQ7IG5vZGU7IG5vZGUg
PSBub2RlLm5leHRTaWJsaW5nKSB7CisgICAgICAgICAgICBpZiAobm9kZS5ub2RlVHlwZSA9PT0g
Tm9kZS5FTEVNRU5UX05PREUgJiYgbm9kZS5jbGFzc05hbWUgPT09ICJzZWxlY3Rvci1tYXRjaGVz
IikKKyAgICAgICAgICAgICAgICByZXN1bHQgKz0gIlskIiArIG5vZGUudGV4dENvbnRlbnQgKyAi
JF0iOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIHJlc3VsdCArPSBub2RlLnRl
eHRDb250ZW50OworICAgICAgICB9CisgICAgICAgIHJldHVybiByZXN1bHQ7CisgICAgfQorCiAg
ICAgdmFyIHN0eWxlU2VjdGlvbnMgPSBXZWJJbnNwZWN0b3IucGFuZWxzLmVsZW1lbnRzLnNpZGVi
YXJQYW5lcy5zdHlsZXMuc2VjdGlvbnM7CiAgICAgZm9yICh2YXIgcHNldWRvSWQgaW4gc3R5bGVT
ZWN0aW9ucykgewogICAgICAgICB2YXIgcHNldWRvTmFtZSA9IFdlYkluc3BlY3Rvci5TdHlsZXNT
aWRlYmFyUGFuZS5Qc2V1ZG9JZE5hbWVzW3BzZXVkb0lkXTsKQEAgLTE0NSw3ICsxNTcsNyBAQCBJ
bnNwZWN0b3JUZXN0LmR1bXBTZWxlY3RlZEVsZW1lbnRTdHlsZXMgPSBmdW5jdGlvbihleGNsdWRl
Q29tcHV0ZWQsIGV4Y2x1ZGVNYXRjaAogICAgICAgICAgICAgdmFyIGNoYWluRW50cmllcyA9IHNl
Y3Rpb24udGl0bGVFbGVtZW50LmNoaWxkcmVuOwogICAgICAgICAgICAgZm9yICh2YXIgaiA9IDA7
IGogPCBjaGFpbkVudHJpZXMubGVuZ3RoOyArK2opIHsKICAgICAgICAgICAgICAgICB2YXIgY2hh
aW5FbnRyeSA9IGNoYWluRW50cmllc1tqXTsKLSAgICAgICAgICAgICAgICB2YXIgZW50cnlMaW5l
ID0gY2hhaW5FbnRyeS5jaGlsZHJlblsxXS50ZXh0Q29udGVudDsKKyAgICAgICAgICAgICAgICB2
YXIgZW50cnlMaW5lID0gaW5jbHVkZVNlbGVjdG9yR3JvdXBNYXJrcyA/IGJ1aWxkTWFya2VkU2Vs
ZWN0b3JzKGNoYWluRW50cnkuY2hpbGRyZW5bMV0pIDogY2hhaW5FbnRyeS5jaGlsZHJlblsxXS50
ZXh0Q29udGVudDsKICAgICAgICAgICAgICAgICBpZiAoY2hhaW5FbnRyeS5jaGlsZHJlblsyXSkK
ICAgICAgICAgICAgICAgICAgICAgZW50cnlMaW5lICs9ICIgIiArIGNoYWluRW50cnkuY2hpbGRy
ZW5bMl0udGV4dENvbnRlbnQ7CiAgICAgICAgICAgICAgICAgZW50cnlMaW5lICs9ICIgKCIgKyBl
eHRyYWN0VGV4dChjaGFpbkVudHJ5LmNoaWxkcmVuWzBdKSArICIpIjsKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL2luc3BlY3Rvci9zdHlsZXMvc3R5bGVzLWFkZC1uZXctcnVsZS1leHBlY3RlZC50
eHQgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3Ivc3R5bGVzL3N0eWxlcy1hZGQtbmV3LXJ1bGUtZXhw
ZWN0ZWQudHh0CmluZGV4IGFkNDYzYTZhZDkxYTE1ZmNlMWZiYTE3YzVmMzE1YmEzNDJlZmUzOWYu
LmI0Yzg5OWE0MTkxZDIzNDNmOWQyNGRiZjA4M2IwNmQ5YzM4ODYwOTQgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2luc3BlY3Rvci9zdHlsZXMvc3R5bGVzLWFkZC1uZXctcnVsZS1leHBlY3RlZC50
eHQKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3N0eWxlcy9zdHlsZXMtYWRkLW5ldy1ydWxl
LWV4cGVjdGVkLnR4dApAQCAtOSw3ICs5LDcgQEAgZm9udC1zaXplOiAxMnB4OwogCiA9PT09PT09
PSBNYXRjaGVkIENTUyBSdWxlcyA9PT09PT09PQogW2V4cGFuZGVkXSAKLSNpbnNwZWN0ZWQgIHsg
KGluc3BlY3Rvci1zdHlsZXNoZWV0OjEpCitmb28sIFskI2luc3BlY3RlZCRdLCBiYXIgIHsgKGlu
c3BlY3Rvci1zdHlsZXNoZWV0OjEpCiBjb2xvcjogbWFyb29uOwogCiBbZXhwYW5kZWRdIApkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3N0eWxlcy9zdHlsZXMtYWRkLW5ldy1ydWxl
Lmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3Ivc3R5bGVzL3N0eWxlcy1hZGQtbmV3LXJ1bGUu
aHRtbAppbmRleCA1NWZlZmQzYzQ1MTNlMzhmMGU5NTExZTVmNDNkZGEyMGRiOTEzOTBlLi5mNmMw
YzQxZDdjNGYzMGQ2MDllOTg4OTZjZTVlMmZlNDkyMDY2MmI5IDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9pbnNwZWN0b3Ivc3R5bGVzL3N0eWxlcy1hZGQtbmV3LXJ1bGUuaHRtbAorKysgYi9MYXlv
dXRUZXN0cy9pbnNwZWN0b3Ivc3R5bGVzL3N0eWxlcy1hZGQtbmV3LXJ1bGUuaHRtbApAQCAtMTgs
NiArMTgsNyBAQCBmdW5jdGlvbiB0ZXN0KCkKICAgICAgICAgLy8gQ2xpY2sgIkFkZCBuZXcgcnVs
ZSIuCiAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJhZGQtc3R5bGUtYnV0dG9uLXRl
c3QtaWQiKS5jbGljaygpOwogICAgICAgICB2YXIgc2VjdGlvbiA9IFdlYkluc3BlY3Rvci5wYW5l
bHMuZWxlbWVudHMuc2lkZWJhclBhbmVzLnN0eWxlcy5zZWN0aW9uc1swXVsyXTsKKyAgICAgICAg
c2VjdGlvbi5fc2VsZWN0b3JFbGVtZW50LnRleHRDb250ZW50ID0gImZvbywgIiArIHNlY3Rpb24u
X3NlbGVjdG9yRWxlbWVudC50ZXh0Q29udGVudCArICIsIGJhciI7CiAgICAgICAgIHNlY3Rpb24u
X3NlbGVjdG9yRWxlbWVudC5kaXNwYXRjaEV2ZW50KEluc3BlY3RvclRlc3QuY3JlYXRlS2V5RXZl
bnQoIkVudGVyIikpOwogICAgICAgICBJbnNwZWN0b3JUZXN0LnJ1bkFmdGVyUGVuZGluZ0Rpc3Bh
dGNoZXMoc3RlcDIpOwogICAgIH0KQEAgLTQ0LDcgKzQ1LDcgQEAgZnVuY3Rpb24gdGVzdCgpCiAg
ICAgZnVuY3Rpb24gc3RlcDQoKQogICAgIHsKICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1
bHQoIkFmdGVyIGFkZGluZyBuZXcgcnVsZSAoaW5zcGVjdGVkKToiKTsKLSAgICAgICAgSW5zcGVj
dG9yVGVzdC5kdW1wU2VsZWN0ZWRFbGVtZW50U3R5bGVzKHRydWUsIGZhbHNlLCB0cnVlKTsKKyAg
ICAgICAgSW5zcGVjdG9yVGVzdC5kdW1wU2VsZWN0ZWRFbGVtZW50U3R5bGVzKHRydWUsIGZhbHNl
LCB0cnVlLCB0cnVlKTsKICAgICAgICAgSW5zcGVjdG9yVGVzdC5zZWxlY3ROb2RlQW5kV2FpdEZv
clN0eWxlcygib3RoZXIiLCBzdGVwNSk7CiAgICAgfQogCg==
</data>
<flag name="review"
          id="176094"
          type_id="1"
          status="+"
          setter="vsevik"
    />
          </attachment>
      

    </bug>

</bugzilla>