<?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>78595</bug_id>
          
          <creation_ts>2012-02-14 02:57:08 -0800</creation_ts>
          <short_desc>CollectingRules and QueryingRules modes of SelectorChecker miss some complex selectors with pseudo elements</short_desc>
          <delta_ts>2012-09-27 02:55:39 -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>CSS</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="Pavel Feldman">pfeldman</reporter>
          <assigned_to name="Alexander Pavlov (apavlov)">apavlov</assigned_to>
          <cc>apavlov</cc>
    
    <cc>bweinstein</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>dglazkov</cc>
    
    <cc>joepeck</cc>
    
    <cc>keishi</cc>
    
    <cc>koivisto</cc>
    
    <cc>loislo</cc>
    
    <cc>macpherson</cc>
    
    <cc>menard</cc>
    
    <cc>pfeldman</cc>
    
    <cc>pmuellr</cc>
    
    <cc>rik</cc>
    
    <cc>timothy</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>556171</commentid>
    <comment_count>0</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-02-14 02:57:08 -0800</bug_when>
    <thetext>Consider the case below:

&lt;style&gt;
.section .header::before {
  content: &quot;COLLAPSED&quot;
}
.section.expanded .header::before {
  content: &quot;EXPANDED&quot;,
}
&lt;/style&gt;
&lt;div class=&quot;section&quot;&gt;
  &lt;div class=&quot;header&quot;&gt;HEADER&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;section expanded&quot;&gt;
  &lt;div class=&quot;header&quot;&gt;HEADER&lt;/div&gt;
&lt;/div&gt;

While WebCore renders everything correctly, pseudo element is missing for the second header.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>556274</commentid>
    <comment_count>1</comment_count>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-02-14 06:46:59 -0800</bug_when>
    <thetext>(ignore the &quot;,&quot; - that was a typo, not relevant to the bug described)

&lt;style&gt;
.section .header::before {
  content: &quot;COLLAPSED&quot;
}
.section.expanded .header::before {
  content: &quot;EXPANDED&quot;
}
&lt;/style&gt;
&lt;div class=&quot;section&quot;&gt;
  &lt;div class=&quot;header&quot;&gt;HEADER&lt;/div&gt;
&lt;/div&gt;
&lt;div class=&quot;section expanded&quot;&gt;
  &lt;div class=&quot;header&quot;&gt;HEADER&lt;/div&gt;
&lt;/div&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>556275</commentid>
    <comment_count>2</comment_count>
      <attachid>126970</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-02-14 06:47:32 -0800</bug_when>
    <thetext>Created attachment 126970
[TEST] Test case</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>727670</commentid>
    <comment_count>3</comment_count>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2012-09-25 08:30:11 -0700</bug_when>
    <thetext>Root cause summary: SelectorChecker::checkSelector() operates on the same dynamicPseudo reference when recursively calling self for non-SubSelector selectors, even though dynamicPseudo passed in from StyleResolver::checkSelector() is intended to get the value of the last selector in the list (describing the element to which the selector is applicable).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>727689</commentid>
    <comment_count>4</comment_count>
      <attachid>165622</attachid>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2012-09-25 09:05:11 -0700</bug_when>
    <thetext>Created attachment 165622
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>727795</commentid>
    <comment_count>5</comment_count>
      <attachid>165622</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-09-25 11:04:27 -0700</bug_when>
    <thetext>Comment on attachment 165622
Patch

Attachment 165622 did not pass chromium-ews (chromium-xvfb):
Output: http://queues.webkit.org/results/14026168

New failing tests:
fast/dom/Window/getMatchedCSSRules-with-pseudo-elements-complex.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>727819</commentid>
    <comment_count>6</comment_count>
      <attachid>165622</attachid>
    <who name="Build Bot">buildbot</who>
    <bug_when>2012-09-25 11:28:48 -0700</bug_when>
    <thetext>Comment on attachment 165622
Patch

Attachment 165622 did not pass mac-ews (mac):
Output: http://queues.webkit.org/results/14036129

New failing tests:
fast/dom/Window/getMatchedCSSRules-with-pseudo-elements-complex.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>728252</commentid>
    <comment_count>7</comment_count>
      <attachid>165740</attachid>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2012-09-26 00:02:05 -0700</bug_when>
    <thetext>Created attachment 165740
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>728608</commentid>
    <comment_count>8</comment_count>
      <attachid>165740</attachid>
    <who name="Dimitri Glazkov (Google)">dglazkov</who>
    <bug_when>2012-09-26 08:50:18 -0700</bug_when>
    <thetext>Comment on attachment 165740
Patch

This fix will look slightly nicer after bug 96445 lands.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>728729</commentid>
    <comment_count>9</comment_count>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2012-09-26 10:49:25 -0700</bug_when>
    <thetext>(In reply to comment #8)
&gt; (From update of attachment 165740 [details])
&gt; This fix will look slightly nicer after bug 96445 lands.

Indeed! Waiting for it to land.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>729169</commentid>
    <comment_count>10</comment_count>
      <attachid>165740</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2012-09-26 20:25:37 -0700</bug_when>
    <thetext>Comment on attachment 165740
Patch

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

&gt; Source/WebCore/ChangeLog:8
&gt; +        Do not use the same dynamicPseudo reference when recursively invoking checkSelector() for non-SubSelector selectors.

Why does this work (or does it?) in ResolvingStyle case?

&gt; Source/WebCore/css/SelectorChecker.cpp:476
&gt; +    PseudoId nonSubSelectorPseudo(NOPSEUDO);
&gt; +    PseudoId&amp; currentDynamicPseudo = relation == CSSSelector::SubSelector ? dynamicPseudo : nonSubSelectorPseudo;

That looks bit funny but I suppose it is ok.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>729346</commentid>
    <comment_count>11</comment_count>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2012-09-27 02:29:58 -0700</bug_when>
    <thetext>(In reply to comment #10)
&gt; (From update of attachment 165740 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=165740&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/ChangeLog:8
&gt; &gt; +        Do not use the same dynamicPseudo reference when recursively invoking checkSelector() for non-SubSelector selectors.
&gt; 
&gt; Why does this work (or does it?) in ResolvingStyle case?

It works in the ResolvingStyle case because the only failing code so far is found in &quot;case CSSSelector::SubSelector&quot; inside SelectorChecker::checkSelector(), and the bail-out condition involves the &quot;m_mode == CollectingRules || m_mode == QueryingRules&quot; check. ResolvingStyle case is not in this list, so the code does not bail out during the style resolve.

&gt; &gt; Source/WebCore/css/SelectorChecker.cpp:476
&gt; &gt; +    PseudoId nonSubSelectorPseudo(NOPSEUDO);
&gt; &gt; +    PseudoId&amp; currentDynamicPseudo = relation == CSSSelector::SubSelector ? dynamicPseudo : nonSubSelectorPseudo;
&gt; 
&gt; That looks bit funny but I suppose it is ok.

I know it&apos;s actually ugly :) but I did not want to migrate the entire code to pointers...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>729362</commentid>
    <comment_count>12</comment_count>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2012-09-27 02:55:39 -0700</bug_when>
    <thetext>Committed r129746: &lt;http://trac.webkit.org/changeset/129746&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>126970</attachid>
            <date>2012-02-14 06:47:32 -0800</date>
            <delta_ts>2012-02-14 06:47:32 -0800</delta_ts>
            <desc>[TEST] Test case</desc>
            <filename>pseudo.html</filename>
            <type>text/html</type>
            <size>266</size>
            <attacher name="Pavel Feldman">pfeldman</attacher>
            
              <data encoding="base64">PHN0eWxlPgouc2VjdGlvbiAuaGVhZGVyOjpiZWZvcmUgewogIGNvbnRlbnQ6ICJDT0xMQVBTRUQi
Cn0KLnNlY3Rpb24uZXhwYW5kZWQgLmhlYWRlcjo6YmVmb3JlIHsKICBjb250ZW50OiAiRVhQQU5E
RUQiCn0KPC9zdHlsZT4KPGRpdiBjbGFzcz0ic2VjdGlvbiI+CiAgPGRpdiBjbGFzcz0iaGVhZGVy
Ij5IRUFERVI8L2Rpdj4KPC9kaXY+CjxkaXYgY2xhc3M9InNlY3Rpb24gZXhwYW5kZWQiPgogIDxk
aXYgY2xhc3M9ImhlYWRlciI+SEVBREVSPC9kaXY+CjwvZGl2Pgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>165622</attachid>
            <date>2012-09-25 09:05:11 -0700</date>
            <delta_ts>2012-09-26 00:01:57 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-78595-20120925200431.patch</filename>
            <type>text/plain</type>
            <size>11668</size>
            <attacher name="Alexander Pavlov (apavlov)">apavlov</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI5NDc4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWIyZjkyYTMxYWQ5Y2I4
NzVhNWY5NWNlM2UwNDI4YzFiMTlmOWYxZC4uYTg3MzRmYzE3ZTNhMTQ4NDk1ZGYyM2ZhNGYyZjI5
NGEwMzBlY2E1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE3IEBACisyMDEyLTA5LTI1ICBBbGV4
YW5kZXIgUGF2bG92ICA8YXBhdmxvdkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgQ29sbGVjdGlu
Z1J1bGVzIGFuZCBRdWVyeWluZ1J1bGVzIG1vZGVzIG9mIFNlbGVjdG9yQ2hlY2tlciBtaXNzIHNv
bWUgY29tcGxleCBzZWxlY3RvcnMgd2l0aCBwc2V1ZG8gZWxlbWVudHMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc4NTk1CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRG8gbm90IHVzZSB0aGUgc2FtZSBkeW5h
bWljUHNldWRvIHJlZmVyZW5jZSB3aGVuIHJlY3Vyc2l2ZWx5IGludm9raW5nIGNoZWNrU2VsZWN0
b3IoKSBmb3Igbm9uLVN1YlNlbGVjdG9yIHNlbGVjdG9ycy4KKworICAgICAgICBUZXN0OiBmYXN0
L2RvbS9XaW5kb3cvZ2V0TWF0Y2hlZENTU1J1bGVzLXdpdGgtcHNldWRvLWVsZW1lbnRzLWNvbXBs
ZXguaHRtbAorCisgICAgICAgICogY3NzL1NlbGVjdG9yQ2hlY2tlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTZWxlY3RvckNoZWNrZXI6OmNoZWNrU2VsZWN0b3IpOiBVc2UgYSBuZXcgTk9QU0VV
RE8gZHluYW1pYyBwc2V1ZG9JZCB2YWx1ZSBmb3Igbm9uLVN1YlNlbGVjdG9yIHNlbGVjdG9ycyBm
dXJ0aGVyIGluIHRoZSB0YWcgaGlzdG9yeS4KKwogMjAxMi0wOS0yMCAgQWxleGFuZGVyIFBhdmxv
diAgPGFwYXZsb3ZAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IFJlbGF0
aXZlIFVSTCBMaW5rIFRvb2x0aXBzIGRvIG5vdCByZXNwZWN0IDxiYXNlPgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9yQ2hlY2tlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9j
c3MvU2VsZWN0b3JDaGVja2VyLmNwcAppbmRleCBhYWU0N2UyY2Y5MzY5ODU0ZjVjYTE3ZDBlYjc3
MDZiMDViMjMwNjM2Li5jMWZjMzYxYjRlNTY4MDljZmJkYzc5ODFhZDcyZDU3YTQyNTIzZjdlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVja2VyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVja2VyLmNwcApAQCAtNDY4LDggKzQ2OCwxMyBA
QCBTZWxlY3RvckNoZWNrZXI6OlNlbGVjdG9yTWF0Y2ggU2VsZWN0b3JDaGVja2VyOjpjaGVja1Nl
bGVjdG9yKGNvbnN0IFNlbGVjdG9yQ2hlYwogICAgICAgICAvLyBEaXNhYmxlIDp2aXNpdGVkIG1h
dGNoaW5nIHdoZW4gd2Ugc2VlIHRoZSBmaXJzdCBsaW5rIG9yIHRyeSB0byBtYXRjaCBhbnl0aGlu
ZyBlbHNlIHRoYW4gYW4gYW5jZXN0b3JzLgogICAgICAgICBpZiAoIWNvbnRleHQuaXNTdWJTZWxl
Y3RvciAmJiAoY29udGV4dC5lbGVtZW50LT5pc0xpbmsoKSB8fCAocmVsYXRpb24gIT0gQ1NTU2Vs
ZWN0b3I6OkRlc2NlbmRhbnQgJiYgcmVsYXRpb24gIT0gQ1NTU2VsZWN0b3I6OkNoaWxkKSkpCiAg
ICAgICAgICAgICBuZXh0Q29udGV4dC52aXNpdGVkTWF0Y2hUeXBlID0gVmlzaXRlZE1hdGNoRGlz
YWJsZWQ7CisKKyAgICAgICAgbmV4dENvbnRleHQucHNldWRvU3R5bGUgPSBOT1BTRVVETzsKICAg
ICB9CiAKKyAgICBQc2V1ZG9JZCBub25TdWJTZWxlY3RvclBzZXVkbyhOT1BTRVVETyk7CisgICAg
UHNldWRvSWQmIGN1cnJlbnREeW5hbWljUHNldWRvID0gcmVsYXRpb24gPT0gQ1NTU2VsZWN0b3I6
OlN1YlNlbGVjdG9yID8gZHluYW1pY1BzZXVkbyA6IG5vblN1YlNlbGVjdG9yUHNldWRvOworCiAg
ICAgc3dpdGNoIChyZWxhdGlvbikgewogICAgIGNhc2UgQ1NTU2VsZWN0b3I6OkRlc2NlbmRhbnQ6
CiAgICAgICAgIG5leHRDb250ZXh0LmVsZW1lbnQgPSBjb250ZXh0LmVsZW1lbnQtPnBhcmVudEVs
ZW1lbnQoKTsKQEAgLTQ3Nyw3ICs0ODIsNyBAQCBTZWxlY3RvckNoZWNrZXI6OlNlbGVjdG9yTWF0
Y2ggU2VsZWN0b3JDaGVja2VyOjpjaGVja1NlbGVjdG9yKGNvbnN0IFNlbGVjdG9yQ2hlYwogICAg
ICAgICBuZXh0Q29udGV4dC5lbGVtZW50U3R5bGUgPSAwOwogICAgICAgICBuZXh0Q29udGV4dC5l
bGVtZW50UGFyZW50U3R5bGUgPSAwOwogICAgICAgICBmb3IgKDsgbmV4dENvbnRleHQuZWxlbWVu
dDsgbmV4dENvbnRleHQuZWxlbWVudCA9IG5leHRDb250ZXh0LmVsZW1lbnQtPnBhcmVudEVsZW1l
bnQoKSkgewotICAgICAgICAgICAgU2VsZWN0b3JNYXRjaCBtYXRjaCA9IGNoZWNrU2VsZWN0b3Io
bmV4dENvbnRleHQsIGR5bmFtaWNQc2V1ZG8sIGhhc1Vua25vd25Qc2V1ZG9FbGVtZW50cyk7Cisg
ICAgICAgICAgICBTZWxlY3Rvck1hdGNoIG1hdGNoID0gY2hlY2tTZWxlY3RvcihuZXh0Q29udGV4
dCwgY3VycmVudER5bmFtaWNQc2V1ZG8sIGhhc1Vua25vd25Qc2V1ZG9FbGVtZW50cyk7CiAgICAg
ICAgICAgICBpZiAobWF0Y2ggPT0gU2VsZWN0b3JNYXRjaGVzIHx8IG1hdGNoID09IFNlbGVjdG9y
RmFpbHNDb21wbGV0ZWx5KQogICAgICAgICAgICAgICAgIHJldHVybiBtYXRjaDsKICAgICAgICAg
ICAgIGlmIChuZXh0Q29udGV4dC5lbGVtZW50ID09IG5leHRDb250ZXh0LnNjb3BlKQpAQCAtNDky
LDcgKzQ5Nyw3IEBAIFNlbGVjdG9yQ2hlY2tlcjo6U2VsZWN0b3JNYXRjaCBTZWxlY3RvckNoZWNr
ZXI6OmNoZWNrU2VsZWN0b3IoY29uc3QgU2VsZWN0b3JDaGVjCiAgICAgICAgIG5leHRDb250ZXh0
LmlzU3ViU2VsZWN0b3IgPSBmYWxzZTsKICAgICAgICAgbmV4dENvbnRleHQuZWxlbWVudFN0eWxl
ID0gMDsKICAgICAgICAgbmV4dENvbnRleHQuZWxlbWVudFBhcmVudFN0eWxlID0gMDsKLSAgICAg
ICAgcmV0dXJuIGNoZWNrU2VsZWN0b3IobmV4dENvbnRleHQsIGR5bmFtaWNQc2V1ZG8sIGhhc1Vu
a25vd25Qc2V1ZG9FbGVtZW50cyk7CisgICAgICAgIHJldHVybiBjaGVja1NlbGVjdG9yKG5leHRD
b250ZXh0LCBjdXJyZW50RHluYW1pY1BzZXVkbywgaGFzVW5rbm93blBzZXVkb0VsZW1lbnRzKTsK
IAogICAgIGNhc2UgQ1NTU2VsZWN0b3I6OkRpcmVjdEFkamFjZW50OgogICAgICAgICBpZiAobV9t
b2RlID09IFJlc29sdmluZ1N0eWxlICYmIGNvbnRleHQuZWxlbWVudC0+cGFyZW50RWxlbWVudCgp
KSB7CkBAIC01MDYsNyArNTExLDcgQEAgU2VsZWN0b3JDaGVja2VyOjpTZWxlY3Rvck1hdGNoIFNl
bGVjdG9yQ2hlY2tlcjo6Y2hlY2tTZWxlY3Rvcihjb25zdCBTZWxlY3RvckNoZWMKICAgICAgICAg
bmV4dENvbnRleHQuaXNTdWJTZWxlY3RvciA9IGZhbHNlOwogICAgICAgICBuZXh0Q29udGV4dC5l
bGVtZW50U3R5bGUgPSAwOwogICAgICAgICBuZXh0Q29udGV4dC5lbGVtZW50UGFyZW50U3R5bGUg
PSAwOwotICAgICAgICByZXR1cm4gY2hlY2tTZWxlY3RvcihuZXh0Q29udGV4dCwgZHluYW1pY1Bz
ZXVkbywgaGFzVW5rbm93blBzZXVkb0VsZW1lbnRzKTsKKyAgICAgICAgcmV0dXJuIGNoZWNrU2Vs
ZWN0b3IobmV4dENvbnRleHQsIGN1cnJlbnREeW5hbWljUHNldWRvLCBoYXNVbmtub3duUHNldWRv
RWxlbWVudHMpOwogCiAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6SW5kaXJlY3RBZGphY2VudDoKICAg
ICAgICAgaWYgKG1fbW9kZSA9PSBSZXNvbHZpbmdTdHlsZSAmJiBjb250ZXh0LmVsZW1lbnQtPnBh
cmVudEVsZW1lbnQoKSkgewpAQCAtNTE5LDcgKzUyNCw3IEBAIFNlbGVjdG9yQ2hlY2tlcjo6U2Vs
ZWN0b3JNYXRjaCBTZWxlY3RvckNoZWNrZXI6OmNoZWNrU2VsZWN0b3IoY29uc3QgU2VsZWN0b3JD
aGVjCiAgICAgICAgIG5leHRDb250ZXh0LmVsZW1lbnRTdHlsZSA9IDA7CiAgICAgICAgIG5leHRD
b250ZXh0LmVsZW1lbnRQYXJlbnRTdHlsZSA9IDA7CiAgICAgICAgIGZvciAoOyBuZXh0Q29udGV4
dC5lbGVtZW50OyBuZXh0Q29udGV4dC5lbGVtZW50ID0gbmV4dENvbnRleHQuZWxlbWVudC0+cHJl
dmlvdXNFbGVtZW50U2libGluZygpKSB7Ci0gICAgICAgICAgICBTZWxlY3Rvck1hdGNoIG1hdGNo
ID0gY2hlY2tTZWxlY3RvcihuZXh0Q29udGV4dCwgZHluYW1pY1BzZXVkbywgaGFzVW5rbm93blBz
ZXVkb0VsZW1lbnRzKTsKKyAgICAgICAgICAgIFNlbGVjdG9yTWF0Y2ggbWF0Y2ggPSBjaGVja1Nl
bGVjdG9yKG5leHRDb250ZXh0LCBjdXJyZW50RHluYW1pY1BzZXVkbywgaGFzVW5rbm93blBzZXVk
b0VsZW1lbnRzKTsKICAgICAgICAgICAgIGlmIChtYXRjaCA9PSBTZWxlY3Rvck1hdGNoZXMgfHwg
bWF0Y2ggPT0gU2VsZWN0b3JGYWlsc0FsbFNpYmxpbmdzIHx8IG1hdGNoID09IFNlbGVjdG9yRmFp
bHNDb21wbGV0ZWx5KQogICAgICAgICAgICAgICAgIHJldHVybiBtYXRjaDsKICAgICAgICAgfTsK
QEAgLTUzMyw3ICs1MzgsNyBAQCBTZWxlY3RvckNoZWNrZXI6OlNlbGVjdG9yTWF0Y2ggU2VsZWN0
b3JDaGVja2VyOjpjaGVja1NlbGVjdG9yKGNvbnN0IFNlbGVjdG9yQ2hlYwogICAgICAgICAgICAg
ICYmICEoKFJlbmRlclNjcm9sbGJhcjo6c2Nyb2xsYmFyRm9yU3R5bGVSZXNvbHZlKCkgfHwgZHlu
YW1pY1BzZXVkbyA9PSBTQ1JPTExCQVJfQ09STkVSIHx8IGR5bmFtaWNQc2V1ZG8gPT0gUkVTSVpF
UikgJiYgbmV4dENvbnRleHQuc2VsZWN0b3ItPm1fbWF0Y2ggPT0gQ1NTU2VsZWN0b3I6OlBzZXVk
b0NsYXNzKSkKICAgICAgICAgICAgIHJldHVybiBTZWxlY3RvckZhaWxzQ29tcGxldGVseTsKICAg
ICAgICAgbmV4dENvbnRleHQuaXNTdWJTZWxlY3RvciA9IHRydWU7Ci0gICAgICAgIHJldHVybiBj
aGVja1NlbGVjdG9yKG5leHRDb250ZXh0LCBkeW5hbWljUHNldWRvLCBoYXNVbmtub3duUHNldWRv
RWxlbWVudHMpOworICAgICAgICByZXR1cm4gY2hlY2tTZWxlY3RvcihuZXh0Q29udGV4dCwgY3Vy
cmVudER5bmFtaWNQc2V1ZG8sIGhhc1Vua25vd25Qc2V1ZG9FbGVtZW50cyk7CiAKICAgICBjYXNl
IENTU1NlbGVjdG9yOjpTaGFkb3dEZXNjZW5kYW50OgogICAgICAgICB7CkBAIC01NDcsNyArNTUy
LDcgQEAgU2VsZWN0b3JDaGVja2VyOjpTZWxlY3Rvck1hdGNoIFNlbGVjdG9yQ2hlY2tlcjo6Y2hl
Y2tTZWxlY3Rvcihjb25zdCBTZWxlY3RvckNoZWMKICAgICAgICAgICAgIG5leHRDb250ZXh0Lmlz
U3ViU2VsZWN0b3IgPSBmYWxzZTsKICAgICAgICAgICAgIG5leHRDb250ZXh0LmVsZW1lbnRTdHls
ZSA9IDA7CiAgICAgICAgICAgICBuZXh0Q29udGV4dC5lbGVtZW50UGFyZW50U3R5bGUgPSAwOwot
ICAgICAgICAgICAgcmV0dXJuIGNoZWNrU2VsZWN0b3IobmV4dENvbnRleHQsIGR5bmFtaWNQc2V1
ZG8sIGhhc1Vua25vd25Qc2V1ZG9FbGVtZW50cyk7CisgICAgICAgICAgICByZXR1cm4gY2hlY2tT
ZWxlY3RvcihuZXh0Q29udGV4dCwgY3VycmVudER5bmFtaWNQc2V1ZG8sIGhhc1Vua25vd25Qc2V1
ZG9FbGVtZW50cyk7CiAgICAgICAgIH0KICAgICB9CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAwNjZmYjljMzZjYTc3Y2Iz
MTU0NzIwMTYyYjllN2VhMTZkNmI2ZDc3Li5mNDdlMzgwZjRlMGRlMDQ4ZDI2ZTkyNDQ0OTg3YWNh
MmM4NjA5ZWU4IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0
VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTItMDktMjUgIEFsZXhhbmRlciBQ
YXZsb3YgIDxhcGF2bG92QGNocm9taXVtLm9yZz4KKworICAgICAgICBDb2xsZWN0aW5nUnVsZXMg
YW5kIFF1ZXJ5aW5nUnVsZXMgbW9kZXMgb2YgU2VsZWN0b3JDaGVja2VyIG1pc3Mgc29tZSBjb21w
bGV4IHNlbGVjdG9ycyB3aXRoIHBzZXVkbyBlbGVtZW50cworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzg1OTUKKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgb3JpZ2luYWwgaXNzdWUgbWVudGlvbmVkIGZh
aWx1cmVzIG9uIHNlbGVjdG9ycyBsaWtlICIuZm9vLm1vbyA+IC5iYXI6YmVmb3JlIiwgd2hpbGUg
dGhpbmdzIHdvcmtlZCBmaW5lIGZvciAiLmZvbyA+IC5iYXI6YmVmb3JlIi4KKyAgICAgICAgVGhl
IHRlc3QgY2hlY2tzIDIgYW5kIDMgc2VsZWN0b3IgbGV2ZWxzIGZvciBhbGwgY29udmVudGlvbmFs
IG5vbi1TdWJTZWxlY3RvciByZWxhdGlvbnMgKENoaWxkLCBEZXNjZW5kYW50LCBEaXJlY3RBZGph
Y2VudCwgSW5kaXJlY3RBZGphY2VudCksCisgICAgICAgIGVhY2ggc2VsZWN0b3IgaW4gYWxsIGxl
dmVscyBidXQgdGhlIGxhc3Qgb25lIGNvbnRhaW5pbmcgYSBTdWJTZWxlY3RvciByZWxhdGlvbi4K
KworICAgICAgICAqIGZhc3QvZG9tL1dpbmRvdy9nZXRNYXRjaGVkQ1NTUnVsZXMtd2l0aC1wc2V1
ZG8tZWxlbWVudHMtY29tcGxleC5odG1sOiBBZGRlZC4KKwogMjAxMi0wOS0yMCAgQWxleGFuZGVy
IFBhdmxvdiAgPGFwYXZsb3ZAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6
IFJlbGF0aXZlIFVSTCBMaW5rIFRvb2x0aXBzIGRvIG5vdCByZXNwZWN0IDxiYXNlPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9kb20vV2luZG93L2dldE1hdGNoZWRDU1NSdWxlcy13aXRo
LXBzZXVkby1lbGVtZW50cy1jb21wbGV4Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9XaW5k
b3cvZ2V0TWF0Y2hlZENTU1J1bGVzLXdpdGgtcHNldWRvLWVsZW1lbnRzLWNvbXBsZXguaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi4xMzA5ZDczZmQ0M2E1ODFiMzM4YzYyODYzMTc3YTZkYjQ1MGUyYTg5Ci0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vV2luZG93L2dldE1hdGNoZWRDU1NS
dWxlcy13aXRoLXBzZXVkby1lbGVtZW50cy1jb21wbGV4Lmh0bWwKQEAgLTAsMCArMSwxMjUgQEAK
KzwhRE9DVFlQRSBodG1sPgorPGh0bWw+CisgIDxoZWFkPgorICAgIDx0aXRsZT5UZXN0IGZvciBX
ZWJLaXQgYnVnIDc4NTk1OiBDb2xsZWN0aW5nUnVsZXMgYW5kIFF1ZXJ5aW5nUnVsZXMgbW9kZXMg
b2YgU2VsZWN0b3JDaGVja2VyIG1pc3Mgc29tZSBjb21wbGV4IHNlbGVjdG9ycyB3aXRoIHBzZXVk
byBlbGVtZW50czwvdGl0bGU+CisgICAgPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KKyAgICAgIC5w
YXJlbnQuc2Vjb25kUGFyZW50IC5maXJzdENoaWxkOmJlZm9yZSB7CisgICAgICAgICAgY29sb3I6
IGJyb3duOworICAgICAgICAgIGNvbnRlbnQ6ICJicm93biI7CisgICAgICB9CisKKyAgICAgIC50
b3BQYXJlbnQudG9wbW9zdCAucGFyZW50LnNlY29uZFBhcmVudCAuc2Vjb25kQ2hpbGQ6YmVmb3Jl
IHsKKyAgICAgICAgICBjb2xvcjogY3lhbjsKKyAgICAgICAgICBjb250ZW50OiAiY3lhbiI7Cisg
ICAgICB9CisKKyAgICAgIC5wYXJlbnQuc2Vjb25kUGFyZW50ID4gLnRoaXJkQ2hpbGQ6YmVmb3Jl
IHsKKyAgICAgICAgICBjb2xvcjogcmVkOworICAgICAgICAgIGNvbnRlbnQ6ICJyZWQiOworICAg
ICAgfQorCisgICAgICAudG9wUGFyZW50LnRvcG1vc3QgPiAucGFyZW50LnNlY29uZFBhcmVudCA+
IC5mb3VydGhDaGlsZDpiZWZvcmUgeworICAgICAgICAgIGNvbG9yOiBtYWdlbnRhOworICAgICAg
ICAgIGNvbnRlbnQ6ICJtYWdlbnRhIjsKKyAgICAgIH0KKworICAgICAgLnBhcmVudC5wcmVkZWNl
c3NvciArIC5wYXJlbnQuZmlyc3RQYXJlbnQ6YmVmb3JlIHsKKyAgICAgICAgICBjb2xvcjogZ3Jl
ZW47CisgICAgICAgICAgY29udGVudDogImdyZWVuIjsKKyAgICAgIH0KKworICAgICAgLnBhcmVu
dC5maXJzdFBhcmVudCB+IC5zZWNvbmRQYXJlbnQ6YmVmb3JlIHsKKyAgICAgICAgICBjb2xvcjog
bGltZTsKKyAgICAgICAgICBjb250ZW50OiAibGltZSI7CisgICAgICB9CisKKyAgICAgIC5wYXJl
bnQuZmlyc3RQYXJlbnQgKyAucGFyZW50LnNlY29uZFBhcmVudCArIC50aGlyZFBhcmVudDpiZWZv
cmUgeworICAgICAgICAgIGNvbG9yOiBibHVlOworICAgICAgICAgIGNvbnRlbnQ6ICJibHVlIjsK
KyAgICAgIH0KKworICAgICAgLnBhcmVudC5wcmVkZWNlc3NvciB+IC5wYXJlbnQuc2Vjb25kUGFy
ZW50IH4gLmZvdXJ0aFBhcmVudDpiZWZvcmUgeworICAgICAgICAgIGNvbG9yOiBjcmltc29uOwor
ICAgICAgICAgIGNvbnRlbnQ6ICJjcmltc29uIjsKKyAgICAgIH0KKworICAgICAgLnBhc3Mgewor
ICAgICAgICAgIGNvbG9yOiBncmVlbjsKKyAgICAgIH0KKworICAgICAgLmZhaWwgeworICAgICAg
ICAgIGNvbG9yOiByZWQ7CisgICAgICB9CisKKyAgICA8L3N0eWxlPgorICAgIDxzY3JpcHQgdHlw
ZT0idGV4dC9qYXZhc2NyaXB0Ij4KKyAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAg
ICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKworICAgICAgdmFyIHRlc3RzID0gWworICAg
ICAgICB7ICdlbGVtZW50SWQnIDogJ2ZpcnN0Q2hpbGQnLCAnZXhwZWN0ZWRWYWx1ZScgOiAncmdi
KDE2NSwgNDIsIDQyKScgfSwKKyAgICAgICAgeyAnZWxlbWVudElkJyA6ICdzZWNvbmRDaGlsZCcs
ICdleHBlY3RlZFZhbHVlJyA6ICdyZ2IoMCwgMjU1LCAyNTUpJyB9LAorICAgICAgICB7ICdlbGVt
ZW50SWQnIDogJ3RoaXJkQ2hpbGQnLCAnZXhwZWN0ZWRWYWx1ZScgOiAncmVkJyB9LAorICAgICAg
ICB7ICdlbGVtZW50SWQnIDogJ2ZvdXJ0aENoaWxkJywgJ2V4cGVjdGVkVmFsdWUnIDogJ3JnYigy
NTUsIDAsIDI1NSknIH0sCisgICAgICAgIHsgJ2VsZW1lbnRJZCcgOiAnZmlyc3RQYXJlbnQnLCAn
ZXhwZWN0ZWRWYWx1ZScgOiAnZ3JlZW4nIH0sCisgICAgICAgIHsgJ2VsZW1lbnRJZCcgOiAnc2Vj
b25kUGFyZW50JywgJ2V4cGVjdGVkVmFsdWUnIDogJ2xpbWUnIH0sCisgICAgICAgIHsgJ2VsZW1l
bnRJZCcgOiAndGhpcmRQYXJlbnQnLCAnZXhwZWN0ZWRWYWx1ZScgOiAnYmx1ZScgfSwKKyAgICAg
ICAgeyAnZWxlbWVudElkJyA6ICdmb3VydGhQYXJlbnQnLCAnZXhwZWN0ZWRWYWx1ZScgOiAncmdi
KDIyMCwgMjAsIDYwKScgfSwKKyAgICAgIF07CisKKyAgICAgIGZ1bmN0aW9uIHJ1blRlc3RzKCkK
KyAgICAgIHsKKyAgICAgICAgdmFyIHJlc3VsdHNFbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoJ3Jlc3VsdHMnKTsKKworICAgICAgICB0ZXN0cy5mb3JFYWNoKGZ1bmN0aW9uKGN1clRl
c3QpIHsKKyAgICAgICAgICB2YXIgbXNnID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7
CisgICAgICAgICAgdmFyIGVsZW1lbnQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCIjIiArIGN1
clRlc3QuZWxlbWVudElkKTsKKworICAgICAgICAgIHZhciBtYWluTWVzc2FnZTsKKyAgICAgICAg
ICB2YXIgbWF0Y2hlZFJ1bGVzOworICAgICAgICAgIGlmICghZWxlbWVudCkKKyAgICAgICAgICAg
ICAgbWFpbk1lc3NhZ2UgPSAiRWxlbWVudCB3aXRoIGlkICMiICsgY3VyVGVzdC5lbGVtZW50SWQg
KyAiIG5vdCBmb3VuZCI7CisgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgIG1hdGNoZWRS
dWxlcyA9IHdpbmRvdy5nZXRNYXRjaGVkQ1NTUnVsZXMoZWxlbWVudCwgImJlZm9yZSIpOworICAg
ICAgICAgICAgICBpZiAoIW1hdGNoZWRSdWxlcyB8fCBtYXRjaGVkUnVsZXMubGVuZ3RoICE9PSAx
KQorICAgICAgICAgICAgICAgICAgbWFpbk1lc3NhZ2UgPSAiIE1hdGNoaW5nIHJ1bGVzIGZvciAj
IiArIGN1clRlc3QuZWxlbWVudElkICsgIjpiZWZvcmUgZG8gbm90IGNvbnRhaW4gYSBzaW5nbGUg
cnVsZSI7CisgICAgICAgICAgfQorICAgICAgICAgIGlmIChtYWluTWVzc2FnZSkgeworICAgICAg
ICAgICAgICBtc2cuaW5uZXJIVE1MID0gIjxzcGFuIGNsYXNzPSdmYWlsJz5GQUlMPC9zcGFuPiIg
KyBtYWluTWVzc2FnZTsKKyAgICAgICAgICAgICAgcmVzdWx0c0VsZW1lbnQuYXBwZW5kQ2hpbGQo
bXNnKTsKKyAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgIH0KKyAgICAgICAgICB2YXIg
dmFsdWUgPSBtYXRjaGVkUnVsZXNbMF0uc3R5bGUuY29sb3I7CisgICAgICAgICAgbWFpbk1lc3Nh
Z2UgPSAiIEV4cGVjdGVkICciICsgY3VyVGVzdC5leHBlY3RlZFZhbHVlICsgIicgZm9yIGNvbG9y
IGluIHRoZSBjb21wdXRlZCBzdHlsZSBmb3IgZWxlbWVudCB3aXRoIGlkICIgKworICAgICAgICAg
ICAgICBjdXJUZXN0LmVsZW1lbnRJZCArICIgYW5kIHBzZXVkby1lbGVtZW50IDpiZWZvcmUiOwor
ICAgICAgICAgIGlmICh2YWx1ZSA9PSBjdXJUZXN0LmV4cGVjdGVkVmFsdWUpCisgICAgICAgICAg
ICAgIG1zZy5pbm5lckhUTUwgPSAiPHNwYW4gY2xhc3M9J3Bhc3MnPlBBU1M8L3NwYW4+IiArIG1h
aW5NZXNzYWdlICsgIiBhbmQgZ290ICciICsgdmFsdWUgKyAiJyI7CisgICAgICAgICAgZWxzZQor
ICAgICAgICAgICAgICBtc2cuaW5uZXJIVE1MID0gIjxzcGFuIGNsYXNzPSdmYWlsJz5GQUlMPC9z
cGFuPiIgKyBtYWluTWVzc2FnZSArICIgYnV0IGluc3RlYWQgZ290ICciICsgdmFsdWUgKyAiJyI7
CisgICAgICAgICAgcmVzdWx0c0VsZW1lbnQuYXBwZW5kQ2hpbGQobXNnKTsKKyAgICAgICAgfSk7
CisKKyAgICAgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKQorICAgICAgICAgICAgdGVzdFJ1bm5l
ci5ub3RpZnlEb25lKCk7CisgICAgICB9CisgICAgPC9zY3JpcHQ+CisgIDwvaGVhZD4KKyAgPGJv
ZHkgb25sb2FkPSJydW5UZXN0cygpOyI+CisgICAgPGgzPlRlc3QgZm9yIDxhIGhyZWY9Imh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yNDAyMSI+V2ViS2l0IGJ1ZyA3ODU5
NTwvYT46IENvbGxlY3RpbmdSdWxlcyBhbmQgUXVlcnlpbmdSdWxlcyBtb2RlcyBvZiBTZWxlY3Rv
ckNoZWNrZXIgbWlzcyBzb21lIGNvbXBsZXggc2VsZWN0b3JzIHdpdGggcHNldWRvIGVsZW1lbnRz
PC9oMz4KKyAgICA8YnIgLz4KKyAgICA8ZGl2IGNsYXNzPSJ0b3BQYXJlbnQgdG9wbW9zdCI+Cisg
ICAgICA8ZGl2IGNsYXNzPSJwYXJlbnQgcHJlZGVjZXNzb3IiPjwvZGl2PgorICAgICAgPGRpdiBj
bGFzcz0icGFyZW50IGZpcnN0UGFyZW50IiBpZD0iZmlyc3RQYXJlbnQiPjwvZGl2PgorICAgICAg
PGRpdiBjbGFzcz0icGFyZW50IHNlY29uZFBhcmVudCIgaWQ9InNlY29uZFBhcmVudCI+CisgICAg
ICAgIDxkaXYgY2xhc3M9ImZpcnN0Q2hpbGQiIGlkPSJmaXJzdENoaWxkIj48L2Rpdj4KKyAgICAg
ICAgPGRpdiBjbGFzcz0ic2Vjb25kQ2hpbGQiIGlkPSJzZWNvbmRDaGlsZCI+PC9kaXY+CisgICAg
ICAgIDxkaXYgY2xhc3M9InRoaXJkQ2hpbGQiIGlkPSJ0aGlyZENoaWxkIj48L2Rpdj4KKyAgICAg
ICAgPGRpdiBjbGFzcz0iZm91cnRoQ2hpbGQiIGlkPSJmb3VydGhDaGlsZCI+PC9kaXY+CisgICAg
ICA8L2Rpdj4KKyAgICAgIDxkaXYgY2xhc3M9InBhcmVudCB0aGlyZFBhcmVudCIgaWQ9InRoaXJk
UGFyZW50Ij48L2Rpdj4KKyAgICAgIDxkaXYgY2xhc3M9InBhcmVudCBmb3VydGhQYXJlbnQiIGlk
PSJmb3VydGhQYXJlbnQiPjwvZGl2PgorICAgIDwvZGl2PgorICAgIDxiciAvPgorICAgIDxkaXYg
aWQ9InJlc3VsdHMiPjwvZGl2PgorICA8L2JvZHk+Cis8L2h0bWw+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>165740</attachid>
            <date>2012-09-26 00:02:05 -0700</date>
            <delta_ts>2012-09-26 20:25:37 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-78595-20120926110123.patch</filename>
            <type>text/plain</type>
            <size>13485</size>
            <attacher name="Alexander Pavlov (apavlov)">apavlov</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTI5NDc4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZWIyZjkyYTMxYWQ5Y2I4
NzVhNWY5NWNlM2UwNDI4YzFiMTlmOWYxZC4uMzQ1NDc5NWZmOGMxY2Q0NTdmODk5NzgzNDVkMGVi
MTY0ZDQ4M2ZiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE4IEBACisyMDEyLTA5LTI1ICBBbGV4
YW5kZXIgUGF2bG92ICA8YXBhdmxvdkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgQ29sbGVjdGlu
Z1J1bGVzIGFuZCBRdWVyeWluZ1J1bGVzIG1vZGVzIG9mIFNlbGVjdG9yQ2hlY2tlciBtaXNzIHNv
bWUgY29tcGxleCBzZWxlY3RvcnMgd2l0aCBwc2V1ZG8gZWxlbWVudHMKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc4NTk1CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRG8gbm90IHVzZSB0aGUgc2FtZSBkeW5h
bWljUHNldWRvIHJlZmVyZW5jZSB3aGVuIHJlY3Vyc2l2ZWx5IGludm9raW5nIGNoZWNrU2VsZWN0
b3IoKSBmb3Igbm9uLVN1YlNlbGVjdG9yIHNlbGVjdG9ycy4KKworICAgICAgICBUZXN0OiBmYXN0
L2RvbS9XaW5kb3cvZ2V0TWF0Y2hlZENTU1J1bGVzLXdpdGgtcHNldWRvLWVsZW1lbnRzLWNvbXBs
ZXguaHRtbAorCisgICAgICAgICogY3NzL1NlbGVjdG9yQ2hlY2tlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTZWxlY3RvckNoZWNrZXI6OmNoZWNrU2VsZWN0b3IpOiBVc2UgbmV3IE5PUFNFVURP
IGR5bmFtaWMgcHNldWRvSWQgdmFsdWVzCisgICAgICAgIGZvciBlYWNoIG5vbi1TdWJTZWxlY3Rv
ciBzZWxlY3RvciBmdXJ0aGVyIGluIHRoZSB0YWcgaGlzdG9yeS4KKwogMjAxMi0wOS0yMCAgQWxl
eGFuZGVyIFBhdmxvdiAgPGFwYXZsb3ZAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFdlYiBJbnNw
ZWN0b3I6IFJlbGF0aXZlIFVSTCBMaW5rIFRvb2x0aXBzIGRvIG5vdCByZXNwZWN0IDxiYXNlPgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL1NlbGVjdG9yQ2hlY2tlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVja2VyLmNwcAppbmRleCBhYWU0N2UyY2Y5MzY5ODU0
ZjVjYTE3ZDBlYjc3MDZiMDViMjMwNjM2Li5jMWZjMzYxYjRlNTY4MDljZmJkYzc5ODFhZDcyZDU3
YTQyNTIzZjdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVja2Vy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvU2VsZWN0b3JDaGVja2VyLmNwcApAQCAtNDY4
LDggKzQ2OCwxMyBAQCBTZWxlY3RvckNoZWNrZXI6OlNlbGVjdG9yTWF0Y2ggU2VsZWN0b3JDaGVj
a2VyOjpjaGVja1NlbGVjdG9yKGNvbnN0IFNlbGVjdG9yQ2hlYwogICAgICAgICAvLyBEaXNhYmxl
IDp2aXNpdGVkIG1hdGNoaW5nIHdoZW4gd2Ugc2VlIHRoZSBmaXJzdCBsaW5rIG9yIHRyeSB0byBt
YXRjaCBhbnl0aGluZyBlbHNlIHRoYW4gYW4gYW5jZXN0b3JzLgogICAgICAgICBpZiAoIWNvbnRl
eHQuaXNTdWJTZWxlY3RvciAmJiAoY29udGV4dC5lbGVtZW50LT5pc0xpbmsoKSB8fCAocmVsYXRp
b24gIT0gQ1NTU2VsZWN0b3I6OkRlc2NlbmRhbnQgJiYgcmVsYXRpb24gIT0gQ1NTU2VsZWN0b3I6
OkNoaWxkKSkpCiAgICAgICAgICAgICBuZXh0Q29udGV4dC52aXNpdGVkTWF0Y2hUeXBlID0gVmlz
aXRlZE1hdGNoRGlzYWJsZWQ7CisKKyAgICAgICAgbmV4dENvbnRleHQucHNldWRvU3R5bGUgPSBO
T1BTRVVETzsKICAgICB9CiAKKyAgICBQc2V1ZG9JZCBub25TdWJTZWxlY3RvclBzZXVkbyhOT1BT
RVVETyk7CisgICAgUHNldWRvSWQmIGN1cnJlbnREeW5hbWljUHNldWRvID0gcmVsYXRpb24gPT0g
Q1NTU2VsZWN0b3I6OlN1YlNlbGVjdG9yID8gZHluYW1pY1BzZXVkbyA6IG5vblN1YlNlbGVjdG9y
UHNldWRvOworCiAgICAgc3dpdGNoIChyZWxhdGlvbikgewogICAgIGNhc2UgQ1NTU2VsZWN0b3I6
OkRlc2NlbmRhbnQ6CiAgICAgICAgIG5leHRDb250ZXh0LmVsZW1lbnQgPSBjb250ZXh0LmVsZW1l
bnQtPnBhcmVudEVsZW1lbnQoKTsKQEAgLTQ3Nyw3ICs0ODIsNyBAQCBTZWxlY3RvckNoZWNrZXI6
OlNlbGVjdG9yTWF0Y2ggU2VsZWN0b3JDaGVja2VyOjpjaGVja1NlbGVjdG9yKGNvbnN0IFNlbGVj
dG9yQ2hlYwogICAgICAgICBuZXh0Q29udGV4dC5lbGVtZW50U3R5bGUgPSAwOwogICAgICAgICBu
ZXh0Q29udGV4dC5lbGVtZW50UGFyZW50U3R5bGUgPSAwOwogICAgICAgICBmb3IgKDsgbmV4dENv
bnRleHQuZWxlbWVudDsgbmV4dENvbnRleHQuZWxlbWVudCA9IG5leHRDb250ZXh0LmVsZW1lbnQt
PnBhcmVudEVsZW1lbnQoKSkgewotICAgICAgICAgICAgU2VsZWN0b3JNYXRjaCBtYXRjaCA9IGNo
ZWNrU2VsZWN0b3IobmV4dENvbnRleHQsIGR5bmFtaWNQc2V1ZG8sIGhhc1Vua25vd25Qc2V1ZG9F
bGVtZW50cyk7CisgICAgICAgICAgICBTZWxlY3Rvck1hdGNoIG1hdGNoID0gY2hlY2tTZWxlY3Rv
cihuZXh0Q29udGV4dCwgY3VycmVudER5bmFtaWNQc2V1ZG8sIGhhc1Vua25vd25Qc2V1ZG9FbGVt
ZW50cyk7CiAgICAgICAgICAgICBpZiAobWF0Y2ggPT0gU2VsZWN0b3JNYXRjaGVzIHx8IG1hdGNo
ID09IFNlbGVjdG9yRmFpbHNDb21wbGV0ZWx5KQogICAgICAgICAgICAgICAgIHJldHVybiBtYXRj
aDsKICAgICAgICAgICAgIGlmIChuZXh0Q29udGV4dC5lbGVtZW50ID09IG5leHRDb250ZXh0LnNj
b3BlKQpAQCAtNDkyLDcgKzQ5Nyw3IEBAIFNlbGVjdG9yQ2hlY2tlcjo6U2VsZWN0b3JNYXRjaCBT
ZWxlY3RvckNoZWNrZXI6OmNoZWNrU2VsZWN0b3IoY29uc3QgU2VsZWN0b3JDaGVjCiAgICAgICAg
IG5leHRDb250ZXh0LmlzU3ViU2VsZWN0b3IgPSBmYWxzZTsKICAgICAgICAgbmV4dENvbnRleHQu
ZWxlbWVudFN0eWxlID0gMDsKICAgICAgICAgbmV4dENvbnRleHQuZWxlbWVudFBhcmVudFN0eWxl
ID0gMDsKLSAgICAgICAgcmV0dXJuIGNoZWNrU2VsZWN0b3IobmV4dENvbnRleHQsIGR5bmFtaWNQ
c2V1ZG8sIGhhc1Vua25vd25Qc2V1ZG9FbGVtZW50cyk7CisgICAgICAgIHJldHVybiBjaGVja1Nl
bGVjdG9yKG5leHRDb250ZXh0LCBjdXJyZW50RHluYW1pY1BzZXVkbywgaGFzVW5rbm93blBzZXVk
b0VsZW1lbnRzKTsKIAogICAgIGNhc2UgQ1NTU2VsZWN0b3I6OkRpcmVjdEFkamFjZW50OgogICAg
ICAgICBpZiAobV9tb2RlID09IFJlc29sdmluZ1N0eWxlICYmIGNvbnRleHQuZWxlbWVudC0+cGFy
ZW50RWxlbWVudCgpKSB7CkBAIC01MDYsNyArNTExLDcgQEAgU2VsZWN0b3JDaGVja2VyOjpTZWxl
Y3Rvck1hdGNoIFNlbGVjdG9yQ2hlY2tlcjo6Y2hlY2tTZWxlY3Rvcihjb25zdCBTZWxlY3RvckNo
ZWMKICAgICAgICAgbmV4dENvbnRleHQuaXNTdWJTZWxlY3RvciA9IGZhbHNlOwogICAgICAgICBu
ZXh0Q29udGV4dC5lbGVtZW50U3R5bGUgPSAwOwogICAgICAgICBuZXh0Q29udGV4dC5lbGVtZW50
UGFyZW50U3R5bGUgPSAwOwotICAgICAgICByZXR1cm4gY2hlY2tTZWxlY3RvcihuZXh0Q29udGV4
dCwgZHluYW1pY1BzZXVkbywgaGFzVW5rbm93blBzZXVkb0VsZW1lbnRzKTsKKyAgICAgICAgcmV0
dXJuIGNoZWNrU2VsZWN0b3IobmV4dENvbnRleHQsIGN1cnJlbnREeW5hbWljUHNldWRvLCBoYXNV
bmtub3duUHNldWRvRWxlbWVudHMpOwogCiAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6SW5kaXJlY3RB
ZGphY2VudDoKICAgICAgICAgaWYgKG1fbW9kZSA9PSBSZXNvbHZpbmdTdHlsZSAmJiBjb250ZXh0
LmVsZW1lbnQtPnBhcmVudEVsZW1lbnQoKSkgewpAQCAtNTE5LDcgKzUyNCw3IEBAIFNlbGVjdG9y
Q2hlY2tlcjo6U2VsZWN0b3JNYXRjaCBTZWxlY3RvckNoZWNrZXI6OmNoZWNrU2VsZWN0b3IoY29u
c3QgU2VsZWN0b3JDaGVjCiAgICAgICAgIG5leHRDb250ZXh0LmVsZW1lbnRTdHlsZSA9IDA7CiAg
ICAgICAgIG5leHRDb250ZXh0LmVsZW1lbnRQYXJlbnRTdHlsZSA9IDA7CiAgICAgICAgIGZvciAo
OyBuZXh0Q29udGV4dC5lbGVtZW50OyBuZXh0Q29udGV4dC5lbGVtZW50ID0gbmV4dENvbnRleHQu
ZWxlbWVudC0+cHJldmlvdXNFbGVtZW50U2libGluZygpKSB7Ci0gICAgICAgICAgICBTZWxlY3Rv
ck1hdGNoIG1hdGNoID0gY2hlY2tTZWxlY3RvcihuZXh0Q29udGV4dCwgZHluYW1pY1BzZXVkbywg
aGFzVW5rbm93blBzZXVkb0VsZW1lbnRzKTsKKyAgICAgICAgICAgIFNlbGVjdG9yTWF0Y2ggbWF0
Y2ggPSBjaGVja1NlbGVjdG9yKG5leHRDb250ZXh0LCBjdXJyZW50RHluYW1pY1BzZXVkbywgaGFz
VW5rbm93blBzZXVkb0VsZW1lbnRzKTsKICAgICAgICAgICAgIGlmIChtYXRjaCA9PSBTZWxlY3Rv
ck1hdGNoZXMgfHwgbWF0Y2ggPT0gU2VsZWN0b3JGYWlsc0FsbFNpYmxpbmdzIHx8IG1hdGNoID09
IFNlbGVjdG9yRmFpbHNDb21wbGV0ZWx5KQogICAgICAgICAgICAgICAgIHJldHVybiBtYXRjaDsK
ICAgICAgICAgfTsKQEAgLTUzMyw3ICs1MzgsNyBAQCBTZWxlY3RvckNoZWNrZXI6OlNlbGVjdG9y
TWF0Y2ggU2VsZWN0b3JDaGVja2VyOjpjaGVja1NlbGVjdG9yKGNvbnN0IFNlbGVjdG9yQ2hlYwog
ICAgICAgICAgICAgICYmICEoKFJlbmRlclNjcm9sbGJhcjo6c2Nyb2xsYmFyRm9yU3R5bGVSZXNv
bHZlKCkgfHwgZHluYW1pY1BzZXVkbyA9PSBTQ1JPTExCQVJfQ09STkVSIHx8IGR5bmFtaWNQc2V1
ZG8gPT0gUkVTSVpFUikgJiYgbmV4dENvbnRleHQuc2VsZWN0b3ItPm1fbWF0Y2ggPT0gQ1NTU2Vs
ZWN0b3I6OlBzZXVkb0NsYXNzKSkKICAgICAgICAgICAgIHJldHVybiBTZWxlY3RvckZhaWxzQ29t
cGxldGVseTsKICAgICAgICAgbmV4dENvbnRleHQuaXNTdWJTZWxlY3RvciA9IHRydWU7Ci0gICAg
ICAgIHJldHVybiBjaGVja1NlbGVjdG9yKG5leHRDb250ZXh0LCBkeW5hbWljUHNldWRvLCBoYXNV
bmtub3duUHNldWRvRWxlbWVudHMpOworICAgICAgICByZXR1cm4gY2hlY2tTZWxlY3RvcihuZXh0
Q29udGV4dCwgY3VycmVudER5bmFtaWNQc2V1ZG8sIGhhc1Vua25vd25Qc2V1ZG9FbGVtZW50cyk7
CiAKICAgICBjYXNlIENTU1NlbGVjdG9yOjpTaGFkb3dEZXNjZW5kYW50OgogICAgICAgICB7CkBA
IC01NDcsNyArNTUyLDcgQEAgU2VsZWN0b3JDaGVja2VyOjpTZWxlY3Rvck1hdGNoIFNlbGVjdG9y
Q2hlY2tlcjo6Y2hlY2tTZWxlY3Rvcihjb25zdCBTZWxlY3RvckNoZWMKICAgICAgICAgICAgIG5l
eHRDb250ZXh0LmlzU3ViU2VsZWN0b3IgPSBmYWxzZTsKICAgICAgICAgICAgIG5leHRDb250ZXh0
LmVsZW1lbnRTdHlsZSA9IDA7CiAgICAgICAgICAgICBuZXh0Q29udGV4dC5lbGVtZW50UGFyZW50
U3R5bGUgPSAwOwotICAgICAgICAgICAgcmV0dXJuIGNoZWNrU2VsZWN0b3IobmV4dENvbnRleHQs
IGR5bmFtaWNQc2V1ZG8sIGhhc1Vua25vd25Qc2V1ZG9FbGVtZW50cyk7CisgICAgICAgICAgICBy
ZXR1cm4gY2hlY2tTZWxlY3RvcihuZXh0Q29udGV4dCwgY3VycmVudER5bmFtaWNQc2V1ZG8sIGhh
c1Vua25vd25Qc2V1ZG9FbGVtZW50cyk7CiAgICAgICAgIH0KICAgICB9CiAKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAwNjZm
YjljMzZjYTc3Y2IzMTU0NzIwMTYyYjllN2VhMTZkNmI2ZDc3Li44MTgyNDRjYWZmZGMyYTQ3Yzc2
M2ZkN2I3OGY5NGU2OWM0YjY3ZmE0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
KysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMTItMDktMjUg
IEFsZXhhbmRlciBQYXZsb3YgIDxhcGF2bG92QGNocm9taXVtLm9yZz4KKworICAgICAgICBDb2xs
ZWN0aW5nUnVsZXMgYW5kIFF1ZXJ5aW5nUnVsZXMgbW9kZXMgb2YgU2VsZWN0b3JDaGVja2VyIG1p
c3Mgc29tZSBjb21wbGV4IHNlbGVjdG9ycyB3aXRoIHBzZXVkbyBlbGVtZW50cworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Nzg1OTUKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGUgb3JpZ2luYWwgaXNzdWUg
bWVudGlvbmVkIGZhaWx1cmVzIG9uIHNlbGVjdG9ycyBsaWtlICIuZm9vLm1vbyA+IC5iYXI6YmVm
b3JlIiwgd2hpbGUgdGhpbmdzIHdvcmtlZCBmaW5lIGZvciAiLmZvbyA+IC5iYXI6YmVmb3JlIi4K
KyAgICAgICAgVGhlIHRlc3QgY2hlY2tzIDIgYW5kIDMgc2VsZWN0b3IgbGV2ZWxzIGZvciBhbGwg
Y29udmVudGlvbmFsIG5vbi1TdWJTZWxlY3RvciByZWxhdGlvbnMgKENoaWxkLCBEZXNjZW5kYW50
LCBEaXJlY3RBZGphY2VudCwgSW5kaXJlY3RBZGphY2VudCksCisgICAgICAgIGVhY2ggc2VsZWN0
b3IgaW4gYWxsIGxldmVscyBidXQgdGhlIGxhc3Qgb25lIGNvbnRhaW5pbmcgYSBTdWJTZWxlY3Rv
ciByZWxhdGlvbi4KKworICAgICAgICAqIGZhc3QvZG9tL1dpbmRvdy9nZXRNYXRjaGVkQ1NTUnVs
ZXMtd2l0aC1wc2V1ZG8tZWxlbWVudHMtY29tcGxleC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBm
YXN0L2RvbS9XaW5kb3cvZ2V0TWF0Y2hlZENTU1J1bGVzLXdpdGgtcHNldWRvLWVsZW1lbnRzLWNv
bXBsZXgtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKwogMjAxMi0wOS0yMCAgQWxleGFuZGVyIFBhdmxv
diAgPGFwYXZsb3ZAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IFJlbGF0
aXZlIFVSTCBMaW5rIFRvb2x0aXBzIGRvIG5vdCByZXNwZWN0IDxiYXNlPgpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvZmFzdC9kb20vV2luZG93L2dldE1hdGNoZWRDU1NSdWxlcy13aXRoLXBzZXVk
by1lbGVtZW50cy1jb21wbGV4LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL1dp
bmRvdy9nZXRNYXRjaGVkQ1NTUnVsZXMtd2l0aC1wc2V1ZG8tZWxlbWVudHMtY29tcGxleC1leHBl
Y3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uNjExZTlhZGFiZjM2MjNkMWZjODY3NzViMmIyODQ4NjY5NDk2
NTJlNQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvZG9tL1dpbmRvdy9nZXRN
YXRjaGVkQ1NTUnVsZXMtd2l0aC1wc2V1ZG8tZWxlbWVudHMtY29tcGxleC1leHBlY3RlZC50eHQK
QEAgLTAsMCArMSwxMiBAQAorVGVzdCBmb3IgV2ViS2l0IGJ1ZyA3ODU5NTogQ29sbGVjdGluZ1J1
bGVzIGFuZCBRdWVyeWluZ1J1bGVzIG1vZGVzIG9mIFNlbGVjdG9yQ2hlY2tlciBtaXNzIHNvbWUg
Y29tcGxleCBzZWxlY3RvcnMgd2l0aCBwc2V1ZG8gZWxlbWVudHMKKworCisKK1BBU1MgRXhwZWN0
ZWQgJ3JnYigxNjUsIDQyLCA0MiknIGZvciBjb2xvciBpbiB0aGUgbWF0Y2hlZCBDU1MgcnVsZSBm
b3IgZWxlbWVudCB3aXRoIGlkIGZpcnN0Q2hpbGQgYW5kIHBzZXVkby1lbGVtZW50IDpiZWZvcmUg
YW5kIGdvdCAncmdiKDE2NSwgNDIsIDQyKScKK1BBU1MgRXhwZWN0ZWQgJ3JnYigwLCAyNTUsIDI1
NSknIGZvciBjb2xvciBpbiB0aGUgbWF0Y2hlZCBDU1MgcnVsZSBmb3IgZWxlbWVudCB3aXRoIGlk
IHNlY29uZENoaWxkIGFuZCBwc2V1ZG8tZWxlbWVudCA6YmVmb3JlIGFuZCBnb3QgJ3JnYigwLCAy
NTUsIDI1NSknCitQQVNTIEV4cGVjdGVkICdyZWQnIGZvciBjb2xvciBpbiB0aGUgbWF0Y2hlZCBD
U1MgcnVsZSBmb3IgZWxlbWVudCB3aXRoIGlkIHRoaXJkQ2hpbGQgYW5kIHBzZXVkby1lbGVtZW50
IDpiZWZvcmUgYW5kIGdvdCAncmVkJworUEFTUyBFeHBlY3RlZCAncmdiKDI1NSwgMCwgMjU1KScg
Zm9yIGNvbG9yIGluIHRoZSBtYXRjaGVkIENTUyBydWxlIGZvciBlbGVtZW50IHdpdGggaWQgZm91
cnRoQ2hpbGQgYW5kIHBzZXVkby1lbGVtZW50IDpiZWZvcmUgYW5kIGdvdCAncmdiKDI1NSwgMCwg
MjU1KScKK1BBU1MgRXhwZWN0ZWQgJ2dyZWVuJyBmb3IgY29sb3IgaW4gdGhlIG1hdGNoZWQgQ1NT
IHJ1bGUgZm9yIGVsZW1lbnQgd2l0aCBpZCBmaXJzdFBhcmVudCBhbmQgcHNldWRvLWVsZW1lbnQg
OmJlZm9yZSBhbmQgZ290ICdncmVlbicKK1BBU1MgRXhwZWN0ZWQgJ2xpbWUnIGZvciBjb2xvciBp
biB0aGUgbWF0Y2hlZCBDU1MgcnVsZSBmb3IgZWxlbWVudCB3aXRoIGlkIHNlY29uZFBhcmVudCBh
bmQgcHNldWRvLWVsZW1lbnQgOmJlZm9yZSBhbmQgZ290ICdsaW1lJworUEFTUyBFeHBlY3RlZCAn
Ymx1ZScgZm9yIGNvbG9yIGluIHRoZSBtYXRjaGVkIENTUyBydWxlIGZvciBlbGVtZW50IHdpdGgg
aWQgdGhpcmRQYXJlbnQgYW5kIHBzZXVkby1lbGVtZW50IDpiZWZvcmUgYW5kIGdvdCAnYmx1ZScK
K1BBU1MgRXhwZWN0ZWQgJ3JnYigyMjAsIDIwLCA2MCknIGZvciBjb2xvciBpbiB0aGUgbWF0Y2hl
ZCBDU1MgcnVsZSBmb3IgZWxlbWVudCB3aXRoIGlkIGZvdXJ0aFBhcmVudCBhbmQgcHNldWRvLWVs
ZW1lbnQgOmJlZm9yZSBhbmQgZ290ICdyZ2IoMjIwLCAyMCwgNjApJwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvZmFzdC9kb20vV2luZG93L2dldE1hdGNoZWRDU1NSdWxlcy13aXRoLXBzZXVkby1l
bGVtZW50cy1jb21wbGV4Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0L2RvbS9XaW5kb3cvZ2V0TWF0
Y2hlZENTU1J1bGVzLXdpdGgtcHNldWRvLWVsZW1lbnRzLWNvbXBsZXguaHRtbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4yYmU5ZWQ3OGY0OTY1YjkxMjc3YjhmODI4ZmI0MmZhYTFiMDhlODM3Ci0tLSAvZGV2L251bGwK
KysrIGIvTGF5b3V0VGVzdHMvZmFzdC9kb20vV2luZG93L2dldE1hdGNoZWRDU1NSdWxlcy13aXRo
LXBzZXVkby1lbGVtZW50cy1jb21wbGV4Lmh0bWwKQEAgLTAsMCArMSwxMjUgQEAKKzwhRE9DVFlQ
RSBodG1sPgorPGh0bWw+CisgIDxoZWFkPgorICAgIDx0aXRsZT5UZXN0IGZvciBXZWJLaXQgYnVn
IDc4NTk1OiBDb2xsZWN0aW5nUnVsZXMgYW5kIFF1ZXJ5aW5nUnVsZXMgbW9kZXMgb2YgU2VsZWN0
b3JDaGVja2VyIG1pc3Mgc29tZSBjb21wbGV4IHNlbGVjdG9ycyB3aXRoIHBzZXVkbyBlbGVtZW50
czwvdGl0bGU+CisgICAgPHN0eWxlIHR5cGU9InRleHQvY3NzIj4KKyAgICAgIC5wYXJlbnQuc2Vj
b25kUGFyZW50IC5maXJzdENoaWxkOmJlZm9yZSB7CisgICAgICAgICAgY29sb3I6IGJyb3duOwor
ICAgICAgICAgIGNvbnRlbnQ6ICJicm93biI7CisgICAgICB9CisKKyAgICAgIC50b3BQYXJlbnQu
dG9wbW9zdCAucGFyZW50LnNlY29uZFBhcmVudCAuc2Vjb25kQ2hpbGQ6YmVmb3JlIHsKKyAgICAg
ICAgICBjb2xvcjogY3lhbjsKKyAgICAgICAgICBjb250ZW50OiAiY3lhbiI7CisgICAgICB9CisK
KyAgICAgIC5wYXJlbnQuc2Vjb25kUGFyZW50ID4gLnRoaXJkQ2hpbGQ6YmVmb3JlIHsKKyAgICAg
ICAgICBjb2xvcjogcmVkOworICAgICAgICAgIGNvbnRlbnQ6ICJyZWQiOworICAgICAgfQorCisg
ICAgICAudG9wUGFyZW50LnRvcG1vc3QgPiAucGFyZW50LnNlY29uZFBhcmVudCA+IC5mb3VydGhD
aGlsZDpiZWZvcmUgeworICAgICAgICAgIGNvbG9yOiBtYWdlbnRhOworICAgICAgICAgIGNvbnRl
bnQ6ICJtYWdlbnRhIjsKKyAgICAgIH0KKworICAgICAgLnBhcmVudC5wcmVkZWNlc3NvciArIC5w
YXJlbnQuZmlyc3RQYXJlbnQ6YmVmb3JlIHsKKyAgICAgICAgICBjb2xvcjogZ3JlZW47CisgICAg
ICAgICAgY29udGVudDogImdyZWVuIjsKKyAgICAgIH0KKworICAgICAgLnBhcmVudC5maXJzdFBh
cmVudCB+IC5zZWNvbmRQYXJlbnQ6YmVmb3JlIHsKKyAgICAgICAgICBjb2xvcjogbGltZTsKKyAg
ICAgICAgICBjb250ZW50OiAibGltZSI7CisgICAgICB9CisKKyAgICAgIC5wYXJlbnQuZmlyc3RQ
YXJlbnQgKyAucGFyZW50LnNlY29uZFBhcmVudCArIC50aGlyZFBhcmVudDpiZWZvcmUgeworICAg
ICAgICAgIGNvbG9yOiBibHVlOworICAgICAgICAgIGNvbnRlbnQ6ICJibHVlIjsKKyAgICAgIH0K
KworICAgICAgLnBhcmVudC5wcmVkZWNlc3NvciB+IC5wYXJlbnQuc2Vjb25kUGFyZW50IH4gLmZv
dXJ0aFBhcmVudDpiZWZvcmUgeworICAgICAgICAgIGNvbG9yOiBjcmltc29uOworICAgICAgICAg
IGNvbnRlbnQ6ICJjcmltc29uIjsKKyAgICAgIH0KKworICAgICAgLnBhc3MgeworICAgICAgICAg
IGNvbG9yOiBncmVlbjsKKyAgICAgIH0KKworICAgICAgLmZhaWwgeworICAgICAgICAgIGNvbG9y
OiByZWQ7CisgICAgICB9CisKKyAgICA8L3N0eWxlPgorICAgIDxzY3JpcHQgdHlwZT0idGV4dC9q
YXZhc2NyaXB0Ij4KKyAgICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikKKyAgICAgICAgICB0ZXN0
UnVubmVyLmR1bXBBc1RleHQoKTsKKworICAgICAgdmFyIHRlc3RzID0gWworICAgICAgICB7ICdl
bGVtZW50SWQnIDogJ2ZpcnN0Q2hpbGQnLCAnZXhwZWN0ZWRWYWx1ZScgOiAncmdiKDE2NSwgNDIs
IDQyKScgfSwKKyAgICAgICAgeyAnZWxlbWVudElkJyA6ICdzZWNvbmRDaGlsZCcsICdleHBlY3Rl
ZFZhbHVlJyA6ICdyZ2IoMCwgMjU1LCAyNTUpJyB9LAorICAgICAgICB7ICdlbGVtZW50SWQnIDog
J3RoaXJkQ2hpbGQnLCAnZXhwZWN0ZWRWYWx1ZScgOiAncmVkJyB9LAorICAgICAgICB7ICdlbGVt
ZW50SWQnIDogJ2ZvdXJ0aENoaWxkJywgJ2V4cGVjdGVkVmFsdWUnIDogJ3JnYigyNTUsIDAsIDI1
NSknIH0sCisgICAgICAgIHsgJ2VsZW1lbnRJZCcgOiAnZmlyc3RQYXJlbnQnLCAnZXhwZWN0ZWRW
YWx1ZScgOiAnZ3JlZW4nIH0sCisgICAgICAgIHsgJ2VsZW1lbnRJZCcgOiAnc2Vjb25kUGFyZW50
JywgJ2V4cGVjdGVkVmFsdWUnIDogJ2xpbWUnIH0sCisgICAgICAgIHsgJ2VsZW1lbnRJZCcgOiAn
dGhpcmRQYXJlbnQnLCAnZXhwZWN0ZWRWYWx1ZScgOiAnYmx1ZScgfSwKKyAgICAgICAgeyAnZWxl
bWVudElkJyA6ICdmb3VydGhQYXJlbnQnLCAnZXhwZWN0ZWRWYWx1ZScgOiAncmdiKDIyMCwgMjAs
IDYwKScgfSwKKyAgICAgIF07CisKKyAgICAgIGZ1bmN0aW9uIHJ1blRlc3RzKCkKKyAgICAgIHsK
KyAgICAgICAgdmFyIHJlc3VsdHNFbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ3Jl
c3VsdHMnKTsKKworICAgICAgICB0ZXN0cy5mb3JFYWNoKGZ1bmN0aW9uKGN1clRlc3QpIHsKKyAg
ICAgICAgICB2YXIgbXNnID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7CisgICAgICAg
ICAgdmFyIGVsZW1lbnQgPSBkb2N1bWVudC5xdWVyeVNlbGVjdG9yKCIjIiArIGN1clRlc3QuZWxl
bWVudElkKTsKKworICAgICAgICAgIHZhciBtYWluTWVzc2FnZTsKKyAgICAgICAgICB2YXIgbWF0
Y2hlZFJ1bGVzOworICAgICAgICAgIGlmICghZWxlbWVudCkKKyAgICAgICAgICAgICAgbWFpbk1l
c3NhZ2UgPSAiRWxlbWVudCB3aXRoIGlkICMiICsgY3VyVGVzdC5lbGVtZW50SWQgKyAiIG5vdCBm
b3VuZCI7CisgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAgIG1hdGNoZWRSdWxlcyA9IHdp
bmRvdy5nZXRNYXRjaGVkQ1NTUnVsZXMoZWxlbWVudCwgImJlZm9yZSIpOworICAgICAgICAgICAg
ICBpZiAoIW1hdGNoZWRSdWxlcyB8fCBtYXRjaGVkUnVsZXMubGVuZ3RoICE9PSAxKQorICAgICAg
ICAgICAgICAgICAgbWFpbk1lc3NhZ2UgPSAiIE1hdGNoaW5nIHJ1bGVzIGZvciAjIiArIGN1clRl
c3QuZWxlbWVudElkICsgIjpiZWZvcmUgZG8gbm90IGNvbnRhaW4gYSBzaW5nbGUgcnVsZSI7Cisg
ICAgICAgICAgfQorICAgICAgICAgIGlmIChtYWluTWVzc2FnZSkgeworICAgICAgICAgICAgICBt
c2cuaW5uZXJIVE1MID0gIjxzcGFuIGNsYXNzPSdmYWlsJz5GQUlMPC9zcGFuPiIgKyBtYWluTWVz
c2FnZTsKKyAgICAgICAgICAgICAgcmVzdWx0c0VsZW1lbnQuYXBwZW5kQ2hpbGQobXNnKTsKKyAg
ICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgIH0KKyAgICAgICAgICB2YXIgdmFsdWUgPSBt
YXRjaGVkUnVsZXNbMF0uc3R5bGUuY29sb3I7CisgICAgICAgICAgbWFpbk1lc3NhZ2UgPSAiIEV4
cGVjdGVkICciICsgY3VyVGVzdC5leHBlY3RlZFZhbHVlICsgIicgZm9yIGNvbG9yIGluIHRoZSBt
YXRjaGVkIENTUyBydWxlIGZvciBlbGVtZW50IHdpdGggaWQgIiArCisgICAgICAgICAgICAgIGN1
clRlc3QuZWxlbWVudElkICsgIiBhbmQgcHNldWRvLWVsZW1lbnQgOmJlZm9yZSI7CisgICAgICAg
ICAgaWYgKHZhbHVlID09IGN1clRlc3QuZXhwZWN0ZWRWYWx1ZSkKKyAgICAgICAgICAgICAgbXNn
LmlubmVySFRNTCA9ICI8c3BhbiBjbGFzcz0ncGFzcyc+UEFTUzwvc3Bhbj4iICsgbWFpbk1lc3Nh
Z2UgKyAiIGFuZCBnb3QgJyIgKyB2YWx1ZSArICInIjsKKyAgICAgICAgICBlbHNlCisgICAgICAg
ICAgICAgIG1zZy5pbm5lckhUTUwgPSAiPHNwYW4gY2xhc3M9J2ZhaWwnPkZBSUw8L3NwYW4+IiAr
IG1haW5NZXNzYWdlICsgIiBidXQgaW5zdGVhZCBnb3QgJyIgKyB2YWx1ZSArICInIjsKKyAgICAg
ICAgICByZXN1bHRzRWxlbWVudC5hcHBlbmRDaGlsZChtc2cpOworICAgICAgICB9KTsKKworICAg
ICAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpCisgICAgICAgICAgICB0ZXN0UnVubmVyLm5vdGlm
eURvbmUoKTsKKyAgICAgIH0KKyAgICA8L3NjcmlwdD4KKyAgPC9oZWFkPgorICA8Ym9keSBvbmxv
YWQ9InJ1blRlc3RzKCk7Ij4KKyAgICA8aDM+VGVzdCBmb3IgPGEgaHJlZj0iaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI0MDIxIj5XZWJLaXQgYnVnIDc4NTk1PC9hPjog
Q29sbGVjdGluZ1J1bGVzIGFuZCBRdWVyeWluZ1J1bGVzIG1vZGVzIG9mIFNlbGVjdG9yQ2hlY2tl
ciBtaXNzIHNvbWUgY29tcGxleCBzZWxlY3RvcnMgd2l0aCBwc2V1ZG8gZWxlbWVudHM8L2gzPgor
ICAgIDxiciAvPgorICAgIDxkaXYgY2xhc3M9InRvcFBhcmVudCB0b3Btb3N0Ij4KKyAgICAgIDxk
aXYgY2xhc3M9InBhcmVudCBwcmVkZWNlc3NvciI+PC9kaXY+CisgICAgICA8ZGl2IGNsYXNzPSJw
YXJlbnQgZmlyc3RQYXJlbnQiIGlkPSJmaXJzdFBhcmVudCI+PC9kaXY+CisgICAgICA8ZGl2IGNs
YXNzPSJwYXJlbnQgc2Vjb25kUGFyZW50IiBpZD0ic2Vjb25kUGFyZW50Ij4KKyAgICAgICAgPGRp
diBjbGFzcz0iZmlyc3RDaGlsZCIgaWQ9ImZpcnN0Q2hpbGQiPjwvZGl2PgorICAgICAgICA8ZGl2
IGNsYXNzPSJzZWNvbmRDaGlsZCIgaWQ9InNlY29uZENoaWxkIj48L2Rpdj4KKyAgICAgICAgPGRp
diBjbGFzcz0idGhpcmRDaGlsZCIgaWQ9InRoaXJkQ2hpbGQiPjwvZGl2PgorICAgICAgICA8ZGl2
IGNsYXNzPSJmb3VydGhDaGlsZCIgaWQ9ImZvdXJ0aENoaWxkIj48L2Rpdj4KKyAgICAgIDwvZGl2
PgorICAgICAgPGRpdiBjbGFzcz0icGFyZW50IHRoaXJkUGFyZW50IiBpZD0idGhpcmRQYXJlbnQi
PjwvZGl2PgorICAgICAgPGRpdiBjbGFzcz0icGFyZW50IGZvdXJ0aFBhcmVudCIgaWQ9ImZvdXJ0
aFBhcmVudCI+PC9kaXY+CisgICAgPC9kaXY+CisgICAgPGJyIC8+CisgICAgPGRpdiBpZD0icmVz
dWx0cyI+PC9kaXY+CisgIDwvYm9keT4KKzwvaHRtbD4K
</data>
<flag name="review"
          id="177875"
          type_id="1"
          status="+"
          setter="koivisto"
    />
          </attachment>
      

    </bug>

</bugzilla>