<?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>38731</bug_id>
          
          <creation_ts>2010-05-07 02:19:43 -0700</creation_ts>
          <short_desc>Make CSS Parser properly handle only-for-pages pseudo-classes</short_desc>
          <delta_ts>2012-06-20 07:35:48 -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>PC</rep_platform>
          <op_sys>OS X 10.5</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>
          
          <blocked>15548</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Yuzo Fujishima">yuzo</reporter>
          <assigned_to name="Yuzo Fujishima">yuzo</assigned_to>
          <cc>ap</cc>
    
    <cc>hamaji</cc>
    
    <cc>hayato</cc>
    
    <cc>hyatt</cc>
    
    <cc>mitz</cc>
    
    <cc>nickshanks</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>yuzo</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>222246</commentid>
    <comment_count>0</comment_count>
    <who name="Yuzo Fujishima">yuzo</who>
    <bug_when>2010-05-07 02:19:43 -0700</bug_when>
    <thetext>According to CSS Paged Media Module Level 3 http://dev.w3.org/csswg/css3-page/ ,
:first, :left, and :right pseudo-classes can be used only for pages,
and no other pseudo-classes can be used for pages.

Fix the CSS parser to enforce the above.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>222247</commentid>
    <comment_count>1</comment_count>
    <who name="Yuzo Fujishima">yuzo</who>
    <bug_when>2010-05-07 02:22:37 -0700</bug_when>
    <thetext>The following bugs were caused by the improper handling mentioned above.

https://bugs.webkit.org/show_bug.cgi?id=38272
https://bugs.webkit.org/show_bug.cgi?id=38697</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>222251</commentid>
    <comment_count>2</comment_count>
      <attachid>55352</attachid>
    <who name="Yuzo Fujishima">yuzo</who>
    <bug_when>2010-05-07 02:40:25 -0700</bug_when>
    <thetext>Created attachment 55352
Make CSS parser properly handle page-only pseudo-classes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>222252</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-05-07 02:45:38 -0700</bug_when>
    <thetext>Attachment 55352 did not pass style-queue:

Failed to run &quot;[&apos;WebKitTools/Scripts/check-webkit-style&apos;, &apos;--no-squash&apos;]&quot; exit_code: 1
WebCore/css/CSSSelector.h:90:  One space before end of line comments  [whitespace/comments] [5]
Total errors found: 1 in 7 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>222256</commentid>
    <comment_count>4</comment_count>
      <attachid>55355</attachid>
    <who name="Yuzo Fujishima">yuzo</who>
    <bug_when>2010-05-07 03:16:45 -0700</bug_when>
    <thetext>Created attachment 55355
Make CSS parser properly handle page-only pseudo-classes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>222404</commentid>
    <comment_count>5</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2010-05-07 08:55:10 -0700</bug_when>
    <thetext>I don&apos;t know this code well enough to review, but here are some comments about regression tests:

         document.getElementById(&quot;result&quot;).innerHTML = result;
+
+        try {
+            document.querySelectorAll(&quot;.login-popup:first&quot;);
+        } catch (e) {
+            document.getElementById(&quot;test2&quot;).style.display = &quot;none&quot;;
+        }
+        try {
+            document.querySelectorAll(&quot;::first&quot;);
+        } catch (e) {
+            document.getElementById(&quot;test3&quot;).style.display = &quot;none&quot;;
+        }

As you&apos;re adding this, you can remove the test I added yesterday.

+&lt;div id=&quot;test2&quot;&gt;FAIL: Test 2&lt;/div&gt;
+&lt;div id=&quot;test3&quot;&gt;FAIL: Test 3&lt;/div&gt;

Ideally, subtest output says &quot;Test didn&apos;t run&quot; initially, and then changes to PASS or FAIL. But it&apos;s not very important.

Please test left and right, too.

Does this patch also make things like &quot;@page :visited&quot; invalid (as they should be)? We&apos;d need tests for that, too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>223204</commentid>
    <comment_count>6</comment_count>
      <attachid>55355</attachid>
    <who name="Shinichiro Hamaji">hamaji</who>
    <bug_when>2010-05-10 02:14:38 -0700</bug_when>
    <thetext>Comment on attachment 55355
Make CSS parser properly handle page-only pseudo-classes.

The C++ code change looks sane to me but I&apos;m putting r- for this patch per Alexey&apos;s comment (thanks!).

&gt; @@ -431,6 +431,7 @@ void CSSSelector::extractPseudoType() const
&gt;  
&gt;      bool element = false; // pseudo-element
&gt;      bool compat = false; // single colon compatbility mode
&gt; +    bool page = false; // pseudo-page
&gt;  
&gt;      switch (m_pseudoType) {
&gt;      case PseudoAfter:

I slightly prefer more descriptive name like isPseudoPage.

&gt; @@ -529,12 +530,13 @@ void CSSSelector::extractPseudoType() const
&gt;      case PseudoFirstPage:
&gt;      case PseudoLeftPage:
&gt;      case PseudoRightPage:
&gt; -        // FIXME: These should only be allowed in @page rules. Disabled them altogether until that&apos;s implemented correctly.
&gt; -        m_pseudoType = PseudoUnknown;
&gt; -        return;
&gt; +        page = true;
&gt; +        break;
&gt;      }
&gt;  
&gt; -    if (m_match == PseudoClass &amp;&amp; element) {
&gt; +    if ((m_match == PseudoPage &amp;&amp; !page) || (m_match != PseudoPage &amp;&amp; page))
&gt; +        m_pseudoType = PseudoUnknown;
&gt; +    else if (m_match == PseudoClass &amp;&amp; element) {
&gt;          if (!compat)
&gt;              m_pseudoType = PseudoUnknown;
&gt;          else

I&apos;d write

bool inPage = (m_match == PseudoPage);
if (inPage != isPseudoPage)
    m_pseudoType = PseudoUnknown;

but I&apos;m not sure if this is the preferred style in WebKit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>223233</commentid>
    <comment_count>7</comment_count>
      <attachid>55539</attachid>
    <who name="Yuzo Fujishima">yuzo</who>
    <bug_when>2010-05-10 03:47:16 -0700</bug_when>
    <thetext>Created attachment 55539
Make CSS parser properly handle page-only pseudo-classes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>223236</commentid>
    <comment_count>8</comment_count>
      <attachid>55541</attachid>
    <who name="Yuzo Fujishima">yuzo</who>
    <bug_when>2010-05-10 04:00:19 -0700</bug_when>
    <thetext>Created attachment 55541
Make CSS parser properly handle page-only pseudo-classes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>223237</commentid>
    <comment_count>9</comment_count>
    <who name="Yuzo Fujishima">yuzo</who>
    <bug_when>2010-05-10 04:01:11 -0700</bug_when>
    <thetext>Alexey, Shinichiro,

Thank you for reviewing this.

(In reply to comment #5)
&gt; I don&apos;t know this code well enough to review, but here are some comments about regression tests:
&gt; 
&gt;          document.getElementById(&quot;result&quot;).innerHTML = result;
&gt; +
&gt; +        try {
&gt; +            document.querySelectorAll(&quot;.login-popup:first&quot;);
&gt; +        } catch (e) {
&gt; +            document.getElementById(&quot;test2&quot;).style.display = &quot;none&quot;;
&gt; +        }
&gt; +        try {
&gt; +            document.querySelectorAll(&quot;::first&quot;);
&gt; +        } catch (e) {
&gt; +            document.getElementById(&quot;test3&quot;).style.display = &quot;none&quot;;
&gt; +        }
&gt; 
&gt; As you&apos;re adding this, you can remove the test I added yesterday.

Done.

&gt; 
&gt; +&lt;div id=&quot;test2&quot;&gt;FAIL: Test 2&lt;/div&gt;
&gt; +&lt;div id=&quot;test3&quot;&gt;FAIL: Test 3&lt;/div&gt;
&gt; 
&gt; Ideally, subtest output says &quot;Test didn&apos;t run&quot; initially, and then changes to PASS or FAIL. But it&apos;s not very important.

Done, except that the string is hidden in case of success.

&gt; 
&gt; Please test left and right, too.

Done.

&gt; 
&gt; Does this patch also make things like &quot;@page :visited&quot; invalid (as they should be)? We&apos;d need tests for that, too.

Added tests.
Fixed the bug found by the tests. (Thank you!)


(In reply to comment #6)
&gt; (From update of attachment 55355 [details])
&gt; The C++ code change looks sane to me but I&apos;m putting r- for this patch per Alexey&apos;s comment (thanks!).
&gt; 
&gt; &gt; @@ -431,6 +431,7 @@ void CSSSelector::extractPseudoType() const
&gt; &gt;  
&gt; &gt;      bool element = false; // pseudo-element
&gt; &gt;      bool compat = false; // single colon compatbility mode
&gt; &gt; +    bool page = false; // pseudo-page
&gt; &gt;  
&gt; &gt;      switch (m_pseudoType) {
&gt; &gt;      case PseudoAfter:
&gt; 
&gt; I slightly prefer more descriptive name like isPseudoPage.

Renamed it isPagePseudoClass.

&gt; 
&gt; &gt; @@ -529,12 +530,13 @@ void CSSSelector::extractPseudoType() const
&gt; &gt;      case PseudoFirstPage:
&gt; &gt;      case PseudoLeftPage:
&gt; &gt;      case PseudoRightPage:
&gt; &gt; -        // FIXME: These should only be allowed in @page rules. Disabled them altogether until that&apos;s implemented correctly.
&gt; &gt; -        m_pseudoType = PseudoUnknown;
&gt; &gt; -        return;
&gt; &gt; +        page = true;
&gt; &gt; +        break;
&gt; &gt;      }
&gt; &gt;  
&gt; &gt; -    if (m_match == PseudoClass &amp;&amp; element) {
&gt; &gt; +    if ((m_match == PseudoPage &amp;&amp; !page) || (m_match != PseudoPage &amp;&amp; page))
&gt; &gt; +        m_pseudoType = PseudoUnknown;
&gt; &gt; +    else if (m_match == PseudoClass &amp;&amp; element) {
&gt; &gt;          if (!compat)
&gt; &gt;              m_pseudoType = PseudoUnknown;
&gt; &gt;          else
&gt; 
&gt; I&apos;d write
&gt; 
&gt; bool inPage = (m_match == PseudoPage);
&gt; if (inPage != isPseudoPage)
&gt;     m_pseudoType = PseudoUnknown;
&gt; 
&gt; but I&apos;m not sure if this is the preferred style in WebKit.

Done.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>223254</commentid>
    <comment_count>10</comment_count>
      <attachid>55541</attachid>
    <who name="Shinichiro Hamaji">hamaji</who>
    <bug_when>2010-05-10 04:59:48 -0700</bug_when>
    <thetext>Comment on attachment 55541
Make CSS parser properly handle page-only pseudo-classes.

A few more comments on the test case.

&gt; +@page world:right { color: red; }

We may want no reds in expectations, even though this won&apos;t show any red in rendering result.

&gt; +@page a_page_name:visited { /* :visited is invalid for @page */
&gt; +    color: blue;
&gt; +}

I think this should not be shown, right? If so, I think red would be better.

&gt; +        try {
&gt; +            document.querySelectorAll(&quot;.login-popup:first&quot;);
&gt; +            document.getElementById(&quot;test2&quot;).innerHTML = &quot;Test 2: FAIL&quot;;
&gt; +        } catch (e) {
&gt; +            document.getElementById(&quot;test2&quot;).style.display = &quot;none&quot;;
&gt; +        }
&gt; +        try {
&gt; +            document.querySelectorAll(&quot;::first&quot;);
&gt; +            document.getElementById(&quot;test3&quot;).innerHTML = &quot;Test 3: FAIL&quot;;
&gt; +        } catch (e) {
&gt; +            document.getElementById(&quot;test3&quot;).style.display = &quot;none&quot;;
&gt; +        }
&gt; +
&gt; +        try {
&gt; +            document.querySelectorAll(&quot;.login-popup:left&quot;);
&gt; +            document.getElementById(&quot;test4&quot;).innerHTML = &quot;Test 4: FAIL&quot;;
&gt; +        } catch (e) {
&gt; +            document.getElementById(&quot;test4&quot;).style.display = &quot;none&quot;;
&gt; +        }
&gt; +        try {
&gt; +            document.querySelectorAll(&quot;::left&quot;);
&gt; +            document.getElementById(&quot;test5&quot;).innerHTML = &quot;Test 5: FAIL&quot;;
&gt; +        } catch (e) {
&gt; +            document.getElementById(&quot;test5&quot;).style.display = &quot;none&quot;;
&gt; +        }
&gt; +
&gt; +        try {
&gt; +            document.querySelectorAll(&quot;.login-popup:right&quot;);
&gt; +            document.getElementById(&quot;test6&quot;).innerHTML = &quot;Test 6: FAIL&quot;;
&gt; +        } catch (e) {
&gt; +            document.getElementById(&quot;test6&quot;).style.display = &quot;none&quot;;
&gt; +        }
&gt; +        try {
&gt; +            document.querySelectorAll(&quot;::right&quot;);
&gt; +            document.getElementById(&quot;test7&quot;).innerHTML = &quot;Test 7: FAIL&quot;;
&gt; +        } catch (e) {
&gt; +            document.getElementById(&quot;test7&quot;).style.display = &quot;none&quot;;
&gt; +        }

I&apos;d write this with a loop. Also, as Alexey suggested, it would be better to have strings like &quot;PASS&quot; when a test passes. Like,

document.getElementById(&quot;test7&quot;).innerHTML = &quot;Test 7: PASS&quot;;

Are there any reason we should remove these divs?

&gt; +    bool matchPagePseudoClass = (m_match == PagePseudoClass);
&gt; +
&gt; +    if (matchPagePseudoClass != isPagePseudoClass)

I&apos;m not sure if we need a blank line here.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>223750</commentid>
    <comment_count>11</comment_count>
      <attachid>55664</attachid>
    <who name="Yuzo Fujishima">yuzo</who>
    <bug_when>2010-05-10 22:40:01 -0700</bug_when>
    <thetext>Created attachment 55664
Make CSS parser properly handle page-only pseudo-classes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>223751</commentid>
    <comment_count>12</comment_count>
    <who name="Yuzo Fujishima">yuzo</who>
    <bug_when>2010-05-10 22:42:23 -0700</bug_when>
    <thetext>Thank you for the review.

(In reply to comment #10)
&gt; (From update of attachment 55541 [details])
&gt; A few more comments on the test case.
&gt; 
&gt; &gt; +@page world:right { color: red; }
&gt; 
&gt; We may want no reds in expectations, even though this won&apos;t show any red in rendering result.
&gt; 
&gt; &gt; +@page a_page_name:visited { /* :visited is invalid for @page */
&gt; &gt; +    color: blue;
&gt; &gt; +}
&gt; 
&gt; I think this should not be shown, right? If so, I think red would be better

Changed to use red.
.
&gt; 
&gt; &gt; +        try {
&gt; &gt; +            document.querySelectorAll(&quot;.login-popup:first&quot;);
&gt; &gt; +            document.getElementById(&quot;test2&quot;).innerHTML = &quot;Test 2: FAIL&quot;;
&gt; &gt; +        } catch (e) {
&gt; &gt; +            document.getElementById(&quot;test2&quot;).style.display = &quot;none&quot;;
&gt; &gt; +        }
&gt; &gt; +        try {
&gt; &gt; +            document.querySelectorAll(&quot;::first&quot;);
&gt; &gt; +            document.getElementById(&quot;test3&quot;).innerHTML = &quot;Test 3: FAIL&quot;;
&gt; &gt; +        } catch (e) {
&gt; &gt; +            document.getElementById(&quot;test3&quot;).style.display = &quot;none&quot;;
&gt; &gt; +        }
&gt; &gt; +
&gt; &gt; +        try {
&gt; &gt; +            document.querySelectorAll(&quot;.login-popup:left&quot;);
&gt; &gt; +            document.getElementById(&quot;test4&quot;).innerHTML = &quot;Test 4: FAIL&quot;;
&gt; &gt; +        } catch (e) {
&gt; &gt; +            document.getElementById(&quot;test4&quot;).style.display = &quot;none&quot;;
&gt; &gt; +        }
&gt; &gt; +        try {
&gt; &gt; +            document.querySelectorAll(&quot;::left&quot;);
&gt; &gt; +            document.getElementById(&quot;test5&quot;).innerHTML = &quot;Test 5: FAIL&quot;;
&gt; &gt; +        } catch (e) {
&gt; &gt; +            document.getElementById(&quot;test5&quot;).style.display = &quot;none&quot;;
&gt; &gt; +        }
&gt; &gt; +
&gt; &gt; +        try {
&gt; &gt; +            document.querySelectorAll(&quot;.login-popup:right&quot;);
&gt; &gt; +            document.getElementById(&quot;test6&quot;).innerHTML = &quot;Test 6: FAIL&quot;;
&gt; &gt; +        } catch (e) {
&gt; &gt; +            document.getElementById(&quot;test6&quot;).style.display = &quot;none&quot;;
&gt; &gt; +        }
&gt; &gt; +        try {
&gt; &gt; +            document.querySelectorAll(&quot;::right&quot;);
&gt; &gt; +            document.getElementById(&quot;test7&quot;).innerHTML = &quot;Test 7: FAIL&quot;;
&gt; &gt; +        } catch (e) {
&gt; &gt; +            document.getElementById(&quot;test7&quot;).style.display = &quot;none&quot;;
&gt; &gt; +        }
&gt; 
&gt; I&apos;d write this with a loop. Also, as Alexey suggested, it would be better to have strings like &quot;PASS&quot; when a test passes. Like,

Changed to use a loop and show &quot;PASS&quot; on success.

&gt; 
&gt; document.getElementById(&quot;test7&quot;).innerHTML = &quot;Test 7: PASS&quot;;
&gt; 
&gt; Are there any reason we should remove these divs?
&gt; 
&gt; &gt; +    bool matchPagePseudoClass = (m_match == PagePseudoClass);
&gt; &gt; +
&gt; &gt; +    if (matchPagePseudoClass != isPagePseudoClass)
&gt; 
&gt; I&apos;m not sure if we need a blank line here.

Removed the blank line.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>223764</commentid>
    <comment_count>13</comment_count>
      <attachid>55664</attachid>
    <who name="Shinichiro Hamaji">hamaji</who>
    <bug_when>2010-05-10 22:58:10 -0700</bug_when>
    <thetext>Comment on attachment 55664
Make CSS parser properly handle page-only pseudo-classes.

&gt; +        var pseudoClasses = [&quot;:first&quot;, &quot;:left&quot;, &quot;:right&quot;, &quot;::first&quot;, &quot;::left&quot;, &quot;::right&quot;];
&gt; +        for (var testId = 2; testId &lt;= 7; testId++) {
&gt; +            var element = document.getElementById(&quot;test&quot; + testId);
&gt; +            var pseudoClass = pseudoClasses[testId - 2];
&gt; +            try {
&gt; +                document.querySelectorAll(&quot;.login-popup&quot; + pseudoClass);
&gt; +                element.innerHTML = &quot;Test &quot; + testId + &quot;: FAIL&quot;;
&gt; +            } catch (e) {
&gt; +                element.innerHTML = &quot;Test &quot; + testId + &quot;: PASS&quot;;
&gt; +                element.style.color = &quot;green&quot;;
&gt; +            }
&gt; +        }

You were checking &quot;.login-popup:first&quot; and &quot;::first&quot; in the previous patch. I guess it&apos;s better to test all combinations?

  var pseudoClasses = [&quot;:first&quot;, &quot;::first&quot;, &quot;.login-popup:first&quot;, &quot;.loging-popup::first&quot;, ...]

Otherwise, this patch looks sane to me. I&apos;d put r+ after while unless someone object.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>223768</commentid>
    <comment_count>14</comment_count>
      <attachid>55668</attachid>
    <who name="Yuzo Fujishima">yuzo</who>
    <bug_when>2010-05-10 23:07:27 -0700</bug_when>
    <thetext>Created attachment 55668
Make CSS parser properly handle page-only pseudo-classes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>223769</commentid>
    <comment_count>15</comment_count>
    <who name="Yuzo Fujishima">yuzo</who>
    <bug_when>2010-05-10 23:08:26 -0700</bug_when>
    <thetext>(In reply to comment #13)
&gt; (From update of attachment 55664 [details])
&gt; &gt; +        var pseudoClasses = [&quot;:first&quot;, &quot;:left&quot;, &quot;:right&quot;, &quot;::first&quot;, &quot;::left&quot;, &quot;::right&quot;];
&gt; &gt; +        for (var testId = 2; testId &lt;= 7; testId++) {
&gt; &gt; +            var element = document.getElementById(&quot;test&quot; + testId);
&gt; &gt; +            var pseudoClass = pseudoClasses[testId - 2];
&gt; &gt; +            try {
&gt; &gt; +                document.querySelectorAll(&quot;.login-popup&quot; + pseudoClass);
&gt; &gt; +                element.innerHTML = &quot;Test &quot; + testId + &quot;: FAIL&quot;;
&gt; &gt; +            } catch (e) {
&gt; &gt; +                element.innerHTML = &quot;Test &quot; + testId + &quot;: PASS&quot;;
&gt; &gt; +                element.style.color = &quot;green&quot;;
&gt; &gt; +            }
&gt; &gt; +        }
&gt; 
&gt; You were checking &quot;.login-popup:first&quot; and &quot;::first&quot; in the previous patch. I guess it&apos;s better to test all combinations?
&gt; 
&gt;   var pseudoClasses = [&quot;:first&quot;, &quot;::first&quot;, &quot;.login-popup:first&quot;, &quot;.loging-popup::first&quot;, ...]
&gt; 
&gt; Otherwise, this patch looks sane to me. I&apos;d put r+ after while unless someone object.

Thank you for the review.

Changed to test 12 combinations.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>225207</commentid>
    <comment_count>16</comment_count>
      <attachid>55668</attachid>
    <who name="Shinichiro Hamaji">hamaji</who>
    <bug_when>2010-05-13 02:14:15 -0700</bug_when>
    <thetext>Comment on attachment 55668
Make CSS parser properly handle page-only pseudo-classes.

This patch looks good to me, but let&apos;s wait one or two days in case CSS specialists have some thought on this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>227727</commentid>
    <comment_count>17</comment_count>
    <who name="Yuzo Fujishima">yuzo</who>
    <bug_when>2010-05-19 00:33:46 -0700</bug_when>
    <thetext>Committed r59751: &lt;http://trac.webkit.org/changeset/59751&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>236580</commentid>
    <comment_count>18</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2010-06-10 16:22:32 -0700</bug_when>
    <thetext>This may have caused some serious problems:
https://bugs.webkit.org/show_bug.cgi?id=40452</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>653456</commentid>
    <comment_count>19</comment_count>
    <who name="Nicholas Shanks">nickshanks</who>
    <bug_when>2012-06-20 07:35:48 -0700</bug_when>
    <thetext>&gt; According to CSS Paged Media Module Level 3 http://dev.w3.org/csswg/css3-page/ ,
&gt; :first, :left, and :right pseudo-classes can be used only for pages,
&gt; and no other pseudo-classes can be used for pages.

You have forgotten :blank</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>55352</attachid>
            <date>2010-05-07 02:40:25 -0700</date>
            <delta_ts>2010-05-07 03:16:38 -0700</delta_ts>
            <desc>Make CSS parser properly handle page-only pseudo-classes.</desc>
            <filename>bug-38731-20100507024023.patch</filename>
            <type>text/plain</type>
            <size>9106</size>
            <attacher name="Yuzo Fujishima">yuzo</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAxNDAwMzkxYzNjMmNlOTA5NTBhMWM4NDQyMmY2OTk2NTA0YmE5YjcwLi5hZDg0M2Q3
YzExNWZlYzliOThmYTk0ZjUwODVkMTUzZTFlZWFjNDcxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAK
KzIwMTAtMDUtMDcgIFl1em8gRnVqaXNoaW1hICA8eXV6b0Bnb29nbGUuY29tPgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1ha2UgQ1NTIFBhcnNlciBw
cm9wZXJseSBoYW5kbGUgb25seS1mb3ItcGFnZXMgcHNldWRvLWNsYXNzZXMuCisKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM4NzMxCisKKyAgICAgICAg
KiBwcmludGluZy9wYWdlLXJ1bGUtY3NzLXRleHQtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHBy
aW50aW5nL3BzZXVkby1jbGFzcy1vdXRzaWRlLXBhZ2UuaHRtbDoKKwogMjAxMC0wNS0wNiAgRGFu
IEJlcm5zdGVpbiAgPG1pdHpAYXBwbGUuY29tPgogCiAgICAgICAgIFNraXAgY29tcG9zaXRpbmcv
bGF5ZXItY3JlYXRpb24vb3ZlcmZsb3ctc2Nyb2xsLW92ZXJsYXAuaHRtbCBmcm9tIHI1ODkzNiwg
c2luY2UgaGFyZHdhcmUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3ByaW50aW5nL3BhZ2UtcnVs
ZS1jc3MtdGV4dC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wcmludGluZy9wYWdlLXJ1bGUt
Y3NzLXRleHQtZXhwZWN0ZWQudHh0CmluZGV4IDcxYzE0NmIwM2I1OTQ5YTU3ZjYyZWJkOWZlOWVk
MGFmYjM5MWY1ODYuLmYxOGIxZTJiY2Q4ZTgyYmU2ZjI4ZjdjMzg3ODMyNWZlODEzNWE3MjIgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL3ByaW50aW5nL3BhZ2UtcnVsZS1jc3MtdGV4dC1leHBlY3Rl
ZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvcHJpbnRpbmcvcGFnZS1ydWxlLWNzcy10ZXh0LWV4cGVj
dGVkLnR4dApAQCAtMSw1ICsxLDEwIEBACiBAcGFnZSB7IG1hcmdpbi10b3A6IDVjbTsgbWFyZ2lu
LWJvdHRvbTogMTBjbTsgfQorQHBhZ2UgOmxlZnQgeyBtYXJnaW4tcmlnaHQ6IDNjbTsgfQorQHBh
Z2UgOnJpZ2h0IHsgbWFyZ2luLWxlZnQ6IDNjbTsgfQorQHBhZ2UgOmZpcnN0IHsgYm9yZGVyLXRv
cC13aWR0aDogMXB4OyBib3JkZXItcmlnaHQtd2lkdGg6IDFweDsgYm9yZGVyLWJvdHRvbS13aWR0
aDogMXB4OyBib3JkZXItbGVmdC13aWR0aDogMXB4OyB9CiBAcGFnZSBoZWxsbyB7IGNvbG9yOiBn
cmVlbjsgfQorQHBhZ2Ugd29ybGQ6cmlnaHQgeyBjb2xvcjogcmVkOyB9CitAbWVkaWEgcHJpbnQg
eyBAcGFnZSBzb21lcGFnZTpmaXJzdCB7IG1hcmdpbi10b3A6IDNjbTsgbWFyZ2luLXJpZ2h0OiAz
Y207IG1hcmdpbi1ib3R0b206IDNjbTsgbWFyZ2luLWxlZnQ6IDNjbTsgfSB9CiBAcGFnZSBhdXRv
X3BhZ2UgeyBzaXplOiBhdXRvOyB9CiBAcGFnZSBzcXVhcmVfcGFnZSB7IHNpemU6IDRpbjsgfQog
QHBhZ2UgbGV0dGVyX3BhZ2UgeyBzaXplOiBsZXR0ZXI7IH0KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3ByaW50aW5nL3BzZXVkby1jbGFzcy1vdXRzaWRlLXBhZ2UuaHRtbCBiL0xheW91dFRlc3Rz
L3ByaW50aW5nL3BzZXVkby1jbGFzcy1vdXRzaWRlLXBhZ2UuaHRtbAppbmRleCA5ZDg4YTAzMzMx
ZDFhMzRmMGFkY2E1ZjVkZDc3Njg4MWNiY2Q5YjYyLi45MGJhYTJkMjUzNzdhZDNkNzc3MWNiNDg3
OTVjYzNjODRiZDE5MWI3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wcmludGluZy9wc2V1ZG8t
Y2xhc3Mtb3V0c2lkZS1wYWdlLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvcHJpbnRpbmcvcHNldWRv
LWNsYXNzLW91dHNpZGUtcGFnZS5odG1sCkBAIC02LDE5ICs2LDIyIEBACiAgICAgI2dyZWVuIHsK
ICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogZ3JlZW47CiAgICAgfQotICAgICN0ZXN0IHsKKyAg
ICAjdGVzdDEgewogICAgICAgICB3aWR0aDogMTAwcHg7CiAgICAgICAgIGhlaWdodDogMTAwcHg7
CiAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IGdyZWVuOwogICAgIH0KKyAgICAjdGVzdDIsICN0
ZXN0MyB7CisgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHJlZDsKKyAgICB9CiAgICAgLyogVGhl
c2Ugc2VsZWN0b3JzIHNob3VsZCBiZSBpZ25vcmVkICovCi0gICAgI3Rlc3Q6Zmlyc3QgeworICAg
ICN0ZXN0MTpmaXJzdCB7CiAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHJlZDsKICAgICB9Ci0g
ICAgI3Rlc3Q6bGVmdCB7CisgICAgI3Rlc3QxOmxlZnQgewogICAgICAgICBiYWNrZ3JvdW5kLWNv
bG9yOiByZWQ7CiAgICAgfQotICAgICN0ZXN0OnJpZ2h0IHsKKyAgICAjdGVzdDE6cmlnaHQgewog
ICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZWQ7CiAgICAgfQogPC9zdHlsZT4KQEAgLTI5LDEx
ICszMiwyMiBAQAogICAgIGZ1bmN0aW9uIHRlc3QoKQogICAgIHsKICAgICAgICAgdmFyIGV4cGVj
dGVkID0gZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZ3JlZW4iKSwg
bnVsbCkuYmFja2dyb3VuZENvbG9yOwotICAgICAgICB2YXIgYWN0dWFsID0gZ2V0Q29tcHV0ZWRT
dHlsZShkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGVzdCIpLCBudWxsKS5iYWNrZ3JvdW5kQ29s
b3I7CisgICAgICAgIHZhciBhY3R1YWwgPSBnZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCJ0ZXN0MSIpLCBudWxsKS5iYWNrZ3JvdW5kQ29sb3I7CiAgICAgICAgIHZhciBy
ZXN1bHQgPSAiUEFTUyI7CiAgICAgICAgIGlmIChhY3R1YWwgIT0gZXhwZWN0ZWQpCiAgICAgICAg
ICAgICByZXN1bHQgPSAiRXhwZWN0ZWQgIiArIGV4cGVjdGVkICsgIiwgYnV0IGNvbWVzICIgKyBh
Y3R1YWw7CiAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1bHQiKS5pbm5lckhU
TUwgPSByZXN1bHQ7CisKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIGRvY3VtZW50LnF1ZXJ5
U2VsZWN0b3JBbGwoIi5sb2dpbi1wb3B1cDpmaXJzdCIpOworICAgICAgICB9IGNhdGNoIChlKSB7
CisgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGVzdDIiKS5zdHlsZS5kaXNw
bGF5ID0gIm5vbmUiOworICAgICAgICB9CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBkb2N1
bWVudC5xdWVyeVNlbGVjdG9yQWxsKCI6OmZpcnN0Iik7CisgICAgICAgIH0gY2F0Y2ggKGUpIHsK
KyAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0ZXN0MyIpLnN0eWxlLmRpc3Bs
YXkgPSAibm9uZSI7CisgICAgICAgIH0KICAgICB9CiA8L3NjcmlwdD4KIDwvaGVhZD4KQEAgLTQ3
LDcgKzYxLDkgQEAgUGFnZWQgbWVkaWEgcmVsYXRlZCBwc2V1ZG8tY2xhc3NlcyBzaG91bGQgYmUg
aWdub3JlZCBvdXRzaWRlIG9mIEBwYWdlLgogWW91IHNob3VsZCBzZWUgYSBncmVlbiBib3guCiAK
IDxkaXYgaWQ9ImdyZWVuIj48L2Rpdj4KLTxkaXYgaWQ9InRlc3QiPjwvZGl2PgorPGRpdiBpZD0i
dGVzdDEiPjwvZGl2PgorPGRpdiBpZD0idGVzdDIiPkZBSUw6IFRlc3QgMjwvZGl2PgorPGRpdiBp
ZD0idGVzdDMiPkZBSUw6IFRlc3QgMzwvZGl2PgogPGRpdiBpZD0icmVzdWx0Ij48L2Rpdj4KIAog
PC9ib2R5PgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxv
ZwppbmRleCA5MWRlMTkwYTg2NmNlMjI0ODAxZDg0NGMwODc0YTYwYzA1NDFjNDg3Li5lODM2YTZj
YjUyYTI1MWM2MmI1MWM2YjkyYTc3NmEyMDgwMjk3NDU0IDEwMDY0NAotLS0gYS9XZWJDb3JlL0No
YW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDEwLTA1
LTA3ICBZdXpvIEZ1amlzaGltYSAgPHl1em9AZ29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNYWtlIENTUyBQYXJzZXIgcHJvcGVybHkg
aGFuZGxlIG9ubHktZm9yLXBhZ2VzIHBzZXVkby1jbGFzc2VzLgorICAgICAgICAKKyAgICAgICAg
QSBuZXcgTWF0Y2ggY2F0ZWdvcnksIFBzZXVkb1BhZ2UsIGlzIGludHJvZHVjZWQgdG8gZGlzdGlu
Z3Vpc2gKKyAgICAgICAgb25seS1mb3ItcGFnZXMgcHNldWRvLWNsYXNzZXMgZnJvbSBvdGhlcnMu
IEEgbmV3IHN5bWJvbCwgcHNldWRvX3BhZ2UsCisgICAgICAgIGlzIGludHJvZHVjZWQgdG8gaGFu
ZGxlIHRoZW0gc2VwYXJhdGVseS4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9Mzg3MzEKKworICAgICAgICAqIGNzcy9DU1NHcmFtbWFyLnk6CisgICAg
ICAgICogY3NzL0NTU1NlbGVjdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1NlbGVjdG9y
OjpleHRyYWN0UHNldWRvVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NTZWxlY3Rvcjo6c2Vs
ZWN0b3JUZXh0KToKKyAgICAgICAgKiBjc3MvQ1NTU2VsZWN0b3IuaDoKKyAgICAgICAgKFdlYkNv
cmU6OkNTU1NlbGVjdG9yOjopOgorICAgICAgICAqIGNzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkNTU1N0eWxlU2VsZWN0b3I6OlNlbGVjdG9yQ2hlY2tlcjo6Y2hl
Y2tPbmVTZWxlY3Rvcik6CisKIDIwMTAtMDQtMjcgIFRvbnkgQ2hhbmcgIDx0b255QGNocm9taXVt
Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBFcmljIFNlaWRlbC4KZGlmZiAtLWdpdCBhL1dl
YkNvcmUvY3NzL0NTU0dyYW1tYXIueSBiL1dlYkNvcmUvY3NzL0NTU0dyYW1tYXIueQppbmRleCA3
Nzk4MjY0YzcyNWMxMmZmN2JmYzVmOGYzYmJkYmU0NjI5M2ZhNzA1Li43OWI0OTE5MzQyZGJmZTAz
YjM2MzkwYjhlOGEwZDNjM2Q2MTczYjI5IDEwMDY0NAotLS0gYS9XZWJDb3JlL2Nzcy9DU1NHcmFt
bWFyLnkKKysrIGIvV2ViQ29yZS9jc3MvQ1NTR3JhbW1hci55CkBAIC0yNTcsNiArMjU3LDcgQEAg
c3RhdGljIGludCBjc3N5eWxleChZWVNUWVBFKiB5eWx2YWwsIHZvaWQqIHBhcnNlcikKICV0eXBl
IDxzZWxlY3Rvcj4gY2xhc3MKICV0eXBlIDxzZWxlY3Rvcj4gYXR0cmliCiAldHlwZSA8c2VsZWN0
b3I+IHBzZXVkbworJXR5cGUgPHNlbGVjdG9yPiBwc2V1ZG9fcGFnZQogJXR5cGUgPHNlbGVjdG9y
PiBwYWdlX3NlbGVjdG9yCiAKICV0eXBlIDxib29sZWFuPiBkZWNsYXJhdGlvbl9saXN0CkBAIC03
NzEsMTMgKzc3MiwxMyBAQCBwYWdlX3NlbGVjdG9yOgogICAgICAgICAkJCA9IHAtPmNyZWF0ZUZs
b2F0aW5nU2VsZWN0b3IoKTsKICAgICAgICAgJCQtPm1fdGFnID0gUXVhbGlmaWVkTmFtZShudWxs
QXRvbSwgJDEsIHAtPm1fZGVmYXVsdE5hbWVzcGFjZSk7CiAgICAgfQotICAgIHwgSURFTlQgcHNl
dWRvIHsKKyAgICB8IElERU5UIHBzZXVkb19wYWdlIHsKICAgICAgICAgQ1NTUGFyc2VyKiBwID0g
c3RhdGljX2Nhc3Q8Q1NTUGFyc2VyKj4ocGFyc2VyKTsKICAgICAgICAgJCQgPSAkMjsKICAgICAg
ICAgaWYgKCQkKQogICAgICAgICAgICAgJCQtPm1fdGFnID0gUXVhbGlmaWVkTmFtZShudWxsQXRv
bSwgJDEsIHAtPm1fZGVmYXVsdE5hbWVzcGFjZSk7CiAgICAgfQotICAgIHwgcHNldWRvIHsKKyAg
ICB8IHBzZXVkb19wYWdlIHsKICAgICAgICAgJCQgPSAkMTsKICAgICB9CiAgICAgfCAvKiBlbXB0
eSAqLyB7CkBAIC0xMTY3LDYgKzExNjgsMTcgQEAgaWRlbnRfb3Jfc3RyaW5nOgogICB8IFNUUklO
RwogICAgIDsKIAorcHNldWRvX3BhZ2U6CisgICAgJzonIElERU5UIHsKKyAgICAgICAgJCQgPSBz
dGF0aWNfY2FzdDxDU1NQYXJzZXIqPihwYXJzZXIpLT5jcmVhdGVGbG9hdGluZ1NlbGVjdG9yKCk7
CisgICAgICAgICQkLT5tX21hdGNoID0gQ1NTU2VsZWN0b3I6OlBzZXVkb1BhZ2U7CisgICAgICAg
ICQyLmxvd2VyKCk7CisgICAgICAgICQkLT5tX3ZhbHVlID0gJDI7CisgICAgICAgIENTU1NlbGVj
dG9yOjpQc2V1ZG9UeXBlIHR5cGUgPSAkJC0+cHNldWRvVHlwZSgpOworICAgICAgICBpZiAodHlw
ZSA9PSBDU1NTZWxlY3Rvcjo6UHNldWRvVW5rbm93bikKKyAgICAgICAgICAgICQkID0gMDsKKyAg
ICB9CisKIHBzZXVkbzoKICAgICAnOicgSURFTlQgewogICAgICAgICAkJCA9IHN0YXRpY19jYXN0
PENTU1BhcnNlcio+KHBhcnNlciktPmNyZWF0ZUZsb2F0aW5nU2VsZWN0b3IoKTsKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9yLmNwcCBiL1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9y
LmNwcAppbmRleCBlZTljODQ2NWM2MzI2MTYwOWRiZGFkOThkOTNmZGQzZTMyYTVmMjRmLi42M2Y5
NTZhZDkyODc0YTU2ZTNiODQyMDY3MjczOWFlNGE0ODZkMzFjIDEwMDY0NAotLS0gYS9XZWJDb3Jl
L2Nzcy9DU1NTZWxlY3Rvci5jcHAKKysrIGIvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3IuY3BwCkBA
IC00MzEsNiArNDMxLDcgQEAgdm9pZCBDU1NTZWxlY3Rvcjo6ZXh0cmFjdFBzZXVkb1R5cGUoKSBj
b25zdAogCiAgICAgYm9vbCBlbGVtZW50ID0gZmFsc2U7IC8vIHBzZXVkby1lbGVtZW50CiAgICAg
Ym9vbCBjb21wYXQgPSBmYWxzZTsgLy8gc2luZ2xlIGNvbG9uIGNvbXBhdGJpbGl0eSBtb2RlCisg
ICAgYm9vbCBwYWdlID0gZmFsc2U7IC8vIHBzZXVkby1wYWdlCiAKICAgICBzd2l0Y2ggKG1fcHNl
dWRvVHlwZSkgewogICAgIGNhc2UgUHNldWRvQWZ0ZXI6CkBAIC01MjksMTIgKzUzMCwxMyBAQCB2
b2lkIENTU1NlbGVjdG9yOjpleHRyYWN0UHNldWRvVHlwZSgpIGNvbnN0CiAgICAgY2FzZSBQc2V1
ZG9GaXJzdFBhZ2U6CiAgICAgY2FzZSBQc2V1ZG9MZWZ0UGFnZToKICAgICBjYXNlIFBzZXVkb1Jp
Z2h0UGFnZToKLSAgICAgICAgLy8gRklYTUU6IFRoZXNlIHNob3VsZCBvbmx5IGJlIGFsbG93ZWQg
aW4gQHBhZ2UgcnVsZXMuIERpc2FibGVkIHRoZW0gYWx0b2dldGhlciB1bnRpbCB0aGF0J3MgaW1w
bGVtZW50ZWQgY29ycmVjdGx5LgotICAgICAgICBtX3BzZXVkb1R5cGUgPSBQc2V1ZG9Vbmtub3du
OwotICAgICAgICByZXR1cm47CisgICAgICAgIHBhZ2UgPSB0cnVlOworICAgICAgICBicmVhazsK
ICAgICB9CiAKLSAgICBpZiAobV9tYXRjaCA9PSBQc2V1ZG9DbGFzcyAmJiBlbGVtZW50KSB7Cisg
ICAgaWYgKChtX21hdGNoID09IFBzZXVkb1BhZ2UgJiYgIXBhZ2UpIHx8IChtX21hdGNoICE9IFBz
ZXVkb1BhZ2UgJiYgcGFnZSkpCisgICAgICAgIG1fcHNldWRvVHlwZSA9IFBzZXVkb1Vua25vd247
CisgICAgZWxzZSBpZiAobV9tYXRjaCA9PSBQc2V1ZG9DbGFzcyAmJiBlbGVtZW50KSB7CiAgICAg
ICAgIGlmICghY29tcGF0KQogICAgICAgICAgICAgbV9wc2V1ZG9UeXBlID0gUHNldWRvVW5rbm93
bjsKICAgICAgICAgZWxzZQpAQCAtNTg2LDcgKzU4OCw3IEBAIFN0cmluZyBDU1NTZWxlY3Rvcjo6
c2VsZWN0b3JUZXh0KCkgY29uc3QKICAgICAgICAgfSBlbHNlIGlmIChjcy0+bV9tYXRjaCA9PSBD
U1NTZWxlY3Rvcjo6Q2xhc3MpIHsKICAgICAgICAgICAgIHN0ciArPSAiLiI7CiAgICAgICAgICAg
ICBzdHIgKz0gY3MtPm1fdmFsdWU7Ci0gICAgICAgIH0gZWxzZSBpZiAoY3MtPm1fbWF0Y2ggPT0g
Q1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzKSB7CisgICAgICAgIH0gZWxzZSBpZiAoY3MtPm1fbWF0
Y2ggPT0gQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzIHx8IGNzLT5tX21hdGNoID09IENTU1NlbGVj
dG9yOjpQc2V1ZG9QYWdlKSB7CiAgICAgICAgICAgICBzdHIgKz0gIjoiOwogICAgICAgICAgICAg
c3RyICs9IGNzLT5tX3ZhbHVlOwogICAgICAgICAgICAgaWYgKGNzLT5wc2V1ZG9UeXBlKCkgPT0g
UHNldWRvTm90KSB7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvci5oIGIvV2Vi
Q29yZS9jc3MvQ1NTU2VsZWN0b3IuaAppbmRleCA4Zjg0YjA1OGE2MTRiYzU5OTc2ZTFiZjI1ODIw
Nzk4MWJjOTMyNzMyLi4yOGI1Y2U3MTExMWQ4Mjc3ZTQ3YjllYTQ3NGY2M2M1ZDllZmI1YTQ0IDEw
MDY0NAotLS0gYS9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvci5oCisrKyBiL1dlYkNvcmUvY3NzL0NT
U1NlbGVjdG9yLmgKQEAgLTg3LDcgKzg3LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAg
ICAgICAgUHNldWRvRWxlbWVudCwKICAgICAgICAgICAgIENvbnRhaW4sICAgLy8gY3NzMzogRVtm
b28qPSJiYXIiXQogICAgICAgICAgICAgQmVnaW4sICAgICAvLyBjc3MzOiBFW2Zvb149ImJhciJd
Ci0gICAgICAgICAgICBFbmQgICAgICAgIC8vIGNzczM6IEVbZm9vJD0iYmFyIl0KKyAgICAgICAg
ICAgIEVuZCwgICAgICAgLy8gY3NzMzogRVtmb28kPSJiYXIiXQorICAgICAgICAgICAgUHNldWRv
UGFnZQogICAgICAgICB9OwogCiAgICAgICAgIGVudW0gUmVsYXRpb24gewpkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAgYi9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNl
bGVjdG9yLmNwcAppbmRleCA5NmIzNmJiZDA4YmQ1MzVkODBiM2VlM2IzMTkyYWU3ZjVhN2I2NTNl
Li4wYjQyODA5Yjk0ZTNkMWQ4ZjUyZTIxM2VlMTFjMzIyNzdkMzQyYmM0IDEwMDY0NAotLS0gYS9X
ZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcAorKysgYi9XZWJDb3JlL2Nzcy9DU1NTdHls
ZVNlbGVjdG9yLmNwcApAQCAtMjU1NCwxMSArMjU1NCw2IEBAIGJvb2wgQ1NTU3R5bGVTZWxlY3Rv
cjo6U2VsZWN0b3JDaGVja2VyOjpjaGVja09uZVNlbGVjdG9yKENTU1NlbGVjdG9yKiBzZWwsIEVs
ZW1lCiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIHJldHVybiB0
cnVlOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6UHNldWRv
TGVmdFBhZ2U6Ci0gICAgICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpQc2V1ZG9SaWdodFBhZ2U6
Ci0gICAgICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpQc2V1ZG9GaXJzdFBhZ2U6Ci0gICAgICAg
ICAgICAgICAgLy8gUGFnZSBtZWRpYSByZWxhdGVkIHBzZXVkby1jbGFzc2VzIGFyZSBub3QgaGFu
ZGxlZCB5ZXQuCi0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgY2Fz
ZSBDU1NTZWxlY3Rvcjo6UHNldWRvVW5rbm93bjoKICAgICAgICAgICAgIGNhc2UgQ1NTU2VsZWN0
b3I6OlBzZXVkb05vdFBhcnNlZDoKICAgICAgICAgICAgIGRlZmF1bHQ6Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>55355</attachid>
            <date>2010-05-07 03:16:45 -0700</date>
            <delta_ts>2010-05-10 03:47:09 -0700</delta_ts>
            <desc>Make CSS parser properly handle page-only pseudo-classes.</desc>
            <filename>bug-38731-20100507031643.patch</filename>
            <type>text/plain</type>
            <size>9236</size>
            <attacher name="Yuzo Fujishima">yuzo</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAxNDAwMzkxYzNjMmNlOTA5NTBhMWM4NDQyMmY2OTk2NTA0YmE5YjcwLi5hZDg0M2Q3
YzExNWZlYzliOThmYTk0ZjUwODVkMTUzZTFlZWFjNDcxIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAK
KzIwMTAtMDUtMDcgIFl1em8gRnVqaXNoaW1hICA8eXV6b0Bnb29nbGUuY29tPgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1ha2UgQ1NTIFBhcnNlciBw
cm9wZXJseSBoYW5kbGUgb25seS1mb3ItcGFnZXMgcHNldWRvLWNsYXNzZXMuCisKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM4NzMxCisKKyAgICAgICAg
KiBwcmludGluZy9wYWdlLXJ1bGUtY3NzLXRleHQtZXhwZWN0ZWQudHh0OgorICAgICAgICAqIHBy
aW50aW5nL3BzZXVkby1jbGFzcy1vdXRzaWRlLXBhZ2UuaHRtbDoKKwogMjAxMC0wNS0wNiAgRGFu
IEJlcm5zdGVpbiAgPG1pdHpAYXBwbGUuY29tPgogCiAgICAgICAgIFNraXAgY29tcG9zaXRpbmcv
bGF5ZXItY3JlYXRpb24vb3ZlcmZsb3ctc2Nyb2xsLW92ZXJsYXAuaHRtbCBmcm9tIHI1ODkzNiwg
c2luY2UgaGFyZHdhcmUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3ByaW50aW5nL3BhZ2UtcnVs
ZS1jc3MtdGV4dC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9wcmludGluZy9wYWdlLXJ1bGUt
Y3NzLXRleHQtZXhwZWN0ZWQudHh0CmluZGV4IDcxYzE0NmIwM2I1OTQ5YTU3ZjYyZWJkOWZlOWVk
MGFmYjM5MWY1ODYuLmYxOGIxZTJiY2Q4ZTgyYmU2ZjI4ZjdjMzg3ODMyNWZlODEzNWE3MjIgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL3ByaW50aW5nL3BhZ2UtcnVsZS1jc3MtdGV4dC1leHBlY3Rl
ZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvcHJpbnRpbmcvcGFnZS1ydWxlLWNzcy10ZXh0LWV4cGVj
dGVkLnR4dApAQCAtMSw1ICsxLDEwIEBACiBAcGFnZSB7IG1hcmdpbi10b3A6IDVjbTsgbWFyZ2lu
LWJvdHRvbTogMTBjbTsgfQorQHBhZ2UgOmxlZnQgeyBtYXJnaW4tcmlnaHQ6IDNjbTsgfQorQHBh
Z2UgOnJpZ2h0IHsgbWFyZ2luLWxlZnQ6IDNjbTsgfQorQHBhZ2UgOmZpcnN0IHsgYm9yZGVyLXRv
cC13aWR0aDogMXB4OyBib3JkZXItcmlnaHQtd2lkdGg6IDFweDsgYm9yZGVyLWJvdHRvbS13aWR0
aDogMXB4OyBib3JkZXItbGVmdC13aWR0aDogMXB4OyB9CiBAcGFnZSBoZWxsbyB7IGNvbG9yOiBn
cmVlbjsgfQorQHBhZ2Ugd29ybGQ6cmlnaHQgeyBjb2xvcjogcmVkOyB9CitAbWVkaWEgcHJpbnQg
eyBAcGFnZSBzb21lcGFnZTpmaXJzdCB7IG1hcmdpbi10b3A6IDNjbTsgbWFyZ2luLXJpZ2h0OiAz
Y207IG1hcmdpbi1ib3R0b206IDNjbTsgbWFyZ2luLWxlZnQ6IDNjbTsgfSB9CiBAcGFnZSBhdXRv
X3BhZ2UgeyBzaXplOiBhdXRvOyB9CiBAcGFnZSBzcXVhcmVfcGFnZSB7IHNpemU6IDRpbjsgfQog
QHBhZ2UgbGV0dGVyX3BhZ2UgeyBzaXplOiBsZXR0ZXI7IH0KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3ByaW50aW5nL3BzZXVkby1jbGFzcy1vdXRzaWRlLXBhZ2UuaHRtbCBiL0xheW91dFRlc3Rz
L3ByaW50aW5nL3BzZXVkby1jbGFzcy1vdXRzaWRlLXBhZ2UuaHRtbAppbmRleCA5ZDg4YTAzMzMx
ZDFhMzRmMGFkY2E1ZjVkZDc3Njg4MWNiY2Q5YjYyLi45MGJhYTJkMjUzNzdhZDNkNzc3MWNiNDg3
OTVjYzNjODRiZDE5MWI3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wcmludGluZy9wc2V1ZG8t
Y2xhc3Mtb3V0c2lkZS1wYWdlLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvcHJpbnRpbmcvcHNldWRv
LWNsYXNzLW91dHNpZGUtcGFnZS5odG1sCkBAIC02LDE5ICs2LDIyIEBACiAgICAgI2dyZWVuIHsK
ICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogZ3JlZW47CiAgICAgfQotICAgICN0ZXN0IHsKKyAg
ICAjdGVzdDEgewogICAgICAgICB3aWR0aDogMTAwcHg7CiAgICAgICAgIGhlaWdodDogMTAwcHg7
CiAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IGdyZWVuOwogICAgIH0KKyAgICAjdGVzdDIsICN0
ZXN0MyB7CisgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHJlZDsKKyAgICB9CiAgICAgLyogVGhl
c2Ugc2VsZWN0b3JzIHNob3VsZCBiZSBpZ25vcmVkICovCi0gICAgI3Rlc3Q6Zmlyc3QgeworICAg
ICN0ZXN0MTpmaXJzdCB7CiAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHJlZDsKICAgICB9Ci0g
ICAgI3Rlc3Q6bGVmdCB7CisgICAgI3Rlc3QxOmxlZnQgewogICAgICAgICBiYWNrZ3JvdW5kLWNv
bG9yOiByZWQ7CiAgICAgfQotICAgICN0ZXN0OnJpZ2h0IHsKKyAgICAjdGVzdDE6cmlnaHQgewog
ICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZWQ7CiAgICAgfQogPC9zdHlsZT4KQEAgLTI5LDEx
ICszMiwyMiBAQAogICAgIGZ1bmN0aW9uIHRlc3QoKQogICAgIHsKICAgICAgICAgdmFyIGV4cGVj
dGVkID0gZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZ3JlZW4iKSwg
bnVsbCkuYmFja2dyb3VuZENvbG9yOwotICAgICAgICB2YXIgYWN0dWFsID0gZ2V0Q29tcHV0ZWRT
dHlsZShkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGVzdCIpLCBudWxsKS5iYWNrZ3JvdW5kQ29s
b3I7CisgICAgICAgIHZhciBhY3R1YWwgPSBnZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKCJ0ZXN0MSIpLCBudWxsKS5iYWNrZ3JvdW5kQ29sb3I7CiAgICAgICAgIHZhciBy
ZXN1bHQgPSAiUEFTUyI7CiAgICAgICAgIGlmIChhY3R1YWwgIT0gZXhwZWN0ZWQpCiAgICAgICAg
ICAgICByZXN1bHQgPSAiRXhwZWN0ZWQgIiArIGV4cGVjdGVkICsgIiwgYnV0IGNvbWVzICIgKyBh
Y3R1YWw7CiAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1bHQiKS5pbm5lckhU
TUwgPSByZXN1bHQ7CisKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIGRvY3VtZW50LnF1ZXJ5
U2VsZWN0b3JBbGwoIi5sb2dpbi1wb3B1cDpmaXJzdCIpOworICAgICAgICB9IGNhdGNoIChlKSB7
CisgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGVzdDIiKS5zdHlsZS5kaXNw
bGF5ID0gIm5vbmUiOworICAgICAgICB9CisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBkb2N1
bWVudC5xdWVyeVNlbGVjdG9yQWxsKCI6OmZpcnN0Iik7CisgICAgICAgIH0gY2F0Y2ggKGUpIHsK
KyAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0ZXN0MyIpLnN0eWxlLmRpc3Bs
YXkgPSAibm9uZSI7CisgICAgICAgIH0KICAgICB9CiA8L3NjcmlwdD4KIDwvaGVhZD4KQEAgLTQ3
LDcgKzYxLDkgQEAgUGFnZWQgbWVkaWEgcmVsYXRlZCBwc2V1ZG8tY2xhc3NlcyBzaG91bGQgYmUg
aWdub3JlZCBvdXRzaWRlIG9mIEBwYWdlLgogWW91IHNob3VsZCBzZWUgYSBncmVlbiBib3guCiAK
IDxkaXYgaWQ9ImdyZWVuIj48L2Rpdj4KLTxkaXYgaWQ9InRlc3QiPjwvZGl2PgorPGRpdiBpZD0i
dGVzdDEiPjwvZGl2PgorPGRpdiBpZD0idGVzdDIiPkZBSUw6IFRlc3QgMjwvZGl2PgorPGRpdiBp
ZD0idGVzdDMiPkZBSUw6IFRlc3QgMzwvZGl2PgogPGRpdiBpZD0icmVzdWx0Ij48L2Rpdj4KIAog
PC9ib2R5PgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxv
ZwppbmRleCA5MWRlMTkwYTg2NmNlMjI0ODAxZDg0NGMwODc0YTYwYzA1NDFjNDg3Li5lODM2YTZj
YjUyYTI1MWM2MmI1MWM2YjkyYTc3NmEyMDgwMjk3NDU0IDEwMDY0NAotLS0gYS9XZWJDb3JlL0No
YW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDEwLTA1
LTA3ICBZdXpvIEZ1amlzaGltYSAgPHl1em9AZ29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNYWtlIENTUyBQYXJzZXIgcHJvcGVybHkg
aGFuZGxlIG9ubHktZm9yLXBhZ2VzIHBzZXVkby1jbGFzc2VzLgorICAgICAgICAKKyAgICAgICAg
QSBuZXcgTWF0Y2ggY2F0ZWdvcnksIFBzZXVkb1BhZ2UsIGlzIGludHJvZHVjZWQgdG8gZGlzdGlu
Z3Vpc2gKKyAgICAgICAgb25seS1mb3ItcGFnZXMgcHNldWRvLWNsYXNzZXMgZnJvbSBvdGhlcnMu
IEEgbmV3IHN5bWJvbCwgcHNldWRvX3BhZ2UsCisgICAgICAgIGlzIGludHJvZHVjZWQgdG8gaGFu
ZGxlIHRoZW0gc2VwYXJhdGVseS4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9Mzg3MzEKKworICAgICAgICAqIGNzcy9DU1NHcmFtbWFyLnk6CisgICAg
ICAgICogY3NzL0NTU1NlbGVjdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1NlbGVjdG9y
OjpleHRyYWN0UHNldWRvVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NTZWxlY3Rvcjo6c2Vs
ZWN0b3JUZXh0KToKKyAgICAgICAgKiBjc3MvQ1NTU2VsZWN0b3IuaDoKKyAgICAgICAgKFdlYkNv
cmU6OkNTU1NlbGVjdG9yOjopOgorICAgICAgICAqIGNzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkNTU1N0eWxlU2VsZWN0b3I6OlNlbGVjdG9yQ2hlY2tlcjo6Y2hl
Y2tPbmVTZWxlY3Rvcik6CisKIDIwMTAtMDQtMjcgIFRvbnkgQ2hhbmcgIDx0b255QGNocm9taXVt
Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBFcmljIFNlaWRlbC4KZGlmZiAtLWdpdCBhL1dl
YkNvcmUvY3NzL0NTU0dyYW1tYXIueSBiL1dlYkNvcmUvY3NzL0NTU0dyYW1tYXIueQppbmRleCA3
Nzk4MjY0YzcyNWMxMmZmN2JmYzVmOGYzYmJkYmU0NjI5M2ZhNzA1Li43OWI0OTE5MzQyZGJmZTAz
YjM2MzkwYjhlOGEwZDNjM2Q2MTczYjI5IDEwMDY0NAotLS0gYS9XZWJDb3JlL2Nzcy9DU1NHcmFt
bWFyLnkKKysrIGIvV2ViQ29yZS9jc3MvQ1NTR3JhbW1hci55CkBAIC0yNTcsNiArMjU3LDcgQEAg
c3RhdGljIGludCBjc3N5eWxleChZWVNUWVBFKiB5eWx2YWwsIHZvaWQqIHBhcnNlcikKICV0eXBl
IDxzZWxlY3Rvcj4gY2xhc3MKICV0eXBlIDxzZWxlY3Rvcj4gYXR0cmliCiAldHlwZSA8c2VsZWN0
b3I+IHBzZXVkbworJXR5cGUgPHNlbGVjdG9yPiBwc2V1ZG9fcGFnZQogJXR5cGUgPHNlbGVjdG9y
PiBwYWdlX3NlbGVjdG9yCiAKICV0eXBlIDxib29sZWFuPiBkZWNsYXJhdGlvbl9saXN0CkBAIC03
NzEsMTMgKzc3MiwxMyBAQCBwYWdlX3NlbGVjdG9yOgogICAgICAgICAkJCA9IHAtPmNyZWF0ZUZs
b2F0aW5nU2VsZWN0b3IoKTsKICAgICAgICAgJCQtPm1fdGFnID0gUXVhbGlmaWVkTmFtZShudWxs
QXRvbSwgJDEsIHAtPm1fZGVmYXVsdE5hbWVzcGFjZSk7CiAgICAgfQotICAgIHwgSURFTlQgcHNl
dWRvIHsKKyAgICB8IElERU5UIHBzZXVkb19wYWdlIHsKICAgICAgICAgQ1NTUGFyc2VyKiBwID0g
c3RhdGljX2Nhc3Q8Q1NTUGFyc2VyKj4ocGFyc2VyKTsKICAgICAgICAgJCQgPSAkMjsKICAgICAg
ICAgaWYgKCQkKQogICAgICAgICAgICAgJCQtPm1fdGFnID0gUXVhbGlmaWVkTmFtZShudWxsQXRv
bSwgJDEsIHAtPm1fZGVmYXVsdE5hbWVzcGFjZSk7CiAgICAgfQotICAgIHwgcHNldWRvIHsKKyAg
ICB8IHBzZXVkb19wYWdlIHsKICAgICAgICAgJCQgPSAkMTsKICAgICB9CiAgICAgfCAvKiBlbXB0
eSAqLyB7CkBAIC0xMTY3LDYgKzExNjgsMTcgQEAgaWRlbnRfb3Jfc3RyaW5nOgogICB8IFNUUklO
RwogICAgIDsKIAorcHNldWRvX3BhZ2U6CisgICAgJzonIElERU5UIHsKKyAgICAgICAgJCQgPSBz
dGF0aWNfY2FzdDxDU1NQYXJzZXIqPihwYXJzZXIpLT5jcmVhdGVGbG9hdGluZ1NlbGVjdG9yKCk7
CisgICAgICAgICQkLT5tX21hdGNoID0gQ1NTU2VsZWN0b3I6OlBzZXVkb1BhZ2U7CisgICAgICAg
ICQyLmxvd2VyKCk7CisgICAgICAgICQkLT5tX3ZhbHVlID0gJDI7CisgICAgICAgIENTU1NlbGVj
dG9yOjpQc2V1ZG9UeXBlIHR5cGUgPSAkJC0+cHNldWRvVHlwZSgpOworICAgICAgICBpZiAodHlw
ZSA9PSBDU1NTZWxlY3Rvcjo6UHNldWRvVW5rbm93bikKKyAgICAgICAgICAgICQkID0gMDsKKyAg
ICB9CisKIHBzZXVkbzoKICAgICAnOicgSURFTlQgewogICAgICAgICAkJCA9IHN0YXRpY19jYXN0
PENTU1BhcnNlcio+KHBhcnNlciktPmNyZWF0ZUZsb2F0aW5nU2VsZWN0b3IoKTsKZGlmZiAtLWdp
dCBhL1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9yLmNwcCBiL1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9y
LmNwcAppbmRleCBlZTljODQ2NWM2MzI2MTYwOWRiZGFkOThkOTNmZGQzZTMyYTVmMjRmLi42M2Y5
NTZhZDkyODc0YTU2ZTNiODQyMDY3MjczOWFlNGE0ODZkMzFjIDEwMDY0NAotLS0gYS9XZWJDb3Jl
L2Nzcy9DU1NTZWxlY3Rvci5jcHAKKysrIGIvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3IuY3BwCkBA
IC00MzEsNiArNDMxLDcgQEAgdm9pZCBDU1NTZWxlY3Rvcjo6ZXh0cmFjdFBzZXVkb1R5cGUoKSBj
b25zdAogCiAgICAgYm9vbCBlbGVtZW50ID0gZmFsc2U7IC8vIHBzZXVkby1lbGVtZW50CiAgICAg
Ym9vbCBjb21wYXQgPSBmYWxzZTsgLy8gc2luZ2xlIGNvbG9uIGNvbXBhdGJpbGl0eSBtb2RlCisg
ICAgYm9vbCBwYWdlID0gZmFsc2U7IC8vIHBzZXVkby1wYWdlCiAKICAgICBzd2l0Y2ggKG1fcHNl
dWRvVHlwZSkgewogICAgIGNhc2UgUHNldWRvQWZ0ZXI6CkBAIC01MjksMTIgKzUzMCwxMyBAQCB2
b2lkIENTU1NlbGVjdG9yOjpleHRyYWN0UHNldWRvVHlwZSgpIGNvbnN0CiAgICAgY2FzZSBQc2V1
ZG9GaXJzdFBhZ2U6CiAgICAgY2FzZSBQc2V1ZG9MZWZ0UGFnZToKICAgICBjYXNlIFBzZXVkb1Jp
Z2h0UGFnZToKLSAgICAgICAgLy8gRklYTUU6IFRoZXNlIHNob3VsZCBvbmx5IGJlIGFsbG93ZWQg
aW4gQHBhZ2UgcnVsZXMuIERpc2FibGVkIHRoZW0gYWx0b2dldGhlciB1bnRpbCB0aGF0J3MgaW1w
bGVtZW50ZWQgY29ycmVjdGx5LgotICAgICAgICBtX3BzZXVkb1R5cGUgPSBQc2V1ZG9Vbmtub3du
OwotICAgICAgICByZXR1cm47CisgICAgICAgIHBhZ2UgPSB0cnVlOworICAgICAgICBicmVhazsK
ICAgICB9CiAKLSAgICBpZiAobV9tYXRjaCA9PSBQc2V1ZG9DbGFzcyAmJiBlbGVtZW50KSB7Cisg
ICAgaWYgKChtX21hdGNoID09IFBzZXVkb1BhZ2UgJiYgIXBhZ2UpIHx8IChtX21hdGNoICE9IFBz
ZXVkb1BhZ2UgJiYgcGFnZSkpCisgICAgICAgIG1fcHNldWRvVHlwZSA9IFBzZXVkb1Vua25vd247
CisgICAgZWxzZSBpZiAobV9tYXRjaCA9PSBQc2V1ZG9DbGFzcyAmJiBlbGVtZW50KSB7CiAgICAg
ICAgIGlmICghY29tcGF0KQogICAgICAgICAgICAgbV9wc2V1ZG9UeXBlID0gUHNldWRvVW5rbm93
bjsKICAgICAgICAgZWxzZQpAQCAtNTg2LDcgKzU4OCw3IEBAIFN0cmluZyBDU1NTZWxlY3Rvcjo6
c2VsZWN0b3JUZXh0KCkgY29uc3QKICAgICAgICAgfSBlbHNlIGlmIChjcy0+bV9tYXRjaCA9PSBD
U1NTZWxlY3Rvcjo6Q2xhc3MpIHsKICAgICAgICAgICAgIHN0ciArPSAiLiI7CiAgICAgICAgICAg
ICBzdHIgKz0gY3MtPm1fdmFsdWU7Ci0gICAgICAgIH0gZWxzZSBpZiAoY3MtPm1fbWF0Y2ggPT0g
Q1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzKSB7CisgICAgICAgIH0gZWxzZSBpZiAoY3MtPm1fbWF0
Y2ggPT0gQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzIHx8IGNzLT5tX21hdGNoID09IENTU1NlbGVj
dG9yOjpQc2V1ZG9QYWdlKSB7CiAgICAgICAgICAgICBzdHIgKz0gIjoiOwogICAgICAgICAgICAg
c3RyICs9IGNzLT5tX3ZhbHVlOwogICAgICAgICAgICAgaWYgKGNzLT5wc2V1ZG9UeXBlKCkgPT0g
UHNldWRvTm90KSB7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvci5oIGIvV2Vi
Q29yZS9jc3MvQ1NTU2VsZWN0b3IuaAppbmRleCA4Zjg0YjA1OGE2MTRiYzU5OTc2ZTFiZjI1ODIw
Nzk4MWJjOTMyNzMyLi5mZmQzNzE2NTI1NWE3MjNiNzYwODVjOWZkYWE3Y2JhYTIwZjAyNjhlIDEw
MDY0NAotLS0gYS9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvci5oCisrKyBiL1dlYkNvcmUvY3NzL0NT
U1NlbGVjdG9yLmgKQEAgLTg1LDkgKzg1LDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAg
ICAgICAgIEh5cGhlbiwKICAgICAgICAgICAgIFBzZXVkb0NsYXNzLAogICAgICAgICAgICAgUHNl
dWRvRWxlbWVudCwKLSAgICAgICAgICAgIENvbnRhaW4sICAgLy8gY3NzMzogRVtmb28qPSJiYXIi
XQotICAgICAgICAgICAgQmVnaW4sICAgICAvLyBjc3MzOiBFW2Zvb149ImJhciJdCi0gICAgICAg
ICAgICBFbmQgICAgICAgIC8vIGNzczM6IEVbZm9vJD0iYmFyIl0KKyAgICAgICAgICAgIENvbnRh
aW4sIC8vIGNzczM6IEVbZm9vKj0iYmFyIl0KKyAgICAgICAgICAgIEJlZ2luLCAvLyBjc3MzOiBF
W2Zvb149ImJhciJdCisgICAgICAgICAgICBFbmQsIC8vIGNzczM6IEVbZm9vJD0iYmFyIl0KKyAg
ICAgICAgICAgIFBzZXVkb1BhZ2UKICAgICAgICAgfTsKIAogICAgICAgICBlbnVtIFJlbGF0aW9u
IHsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwIGIvV2ViQ29y
ZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAKaW5kZXggOTZiMzZiYmQwOGJkNTM1ZDgwYjNlZTNi
MzE5MmFlN2Y1YTdiNjUzZS4uMGI0MjgwOWI5NGUzZDFkOGY1MmUyMTNlZTExYzMyMjc3ZDM0MmJj
NCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAKKysrIGIvV2Vi
Q29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAKQEAgLTI1NTQsMTEgKzI1NTQsNiBAQCBib29s
IENTU1N0eWxlU2VsZWN0b3I6OlNlbGVjdG9yQ2hlY2tlcjo6Y2hlY2tPbmVTZWxlY3RvcihDU1NT
ZWxlY3Rvciogc2VsLCBFbGVtZQogICAgICAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIGNhc2UgQ1NT
U2VsZWN0b3I6OlBzZXVkb0xlZnRQYWdlOgotICAgICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6
UHNldWRvUmlnaHRQYWdlOgotICAgICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6UHNldWRvRmly
c3RQYWdlOgotICAgICAgICAgICAgICAgIC8vIFBhZ2UgbWVkaWEgcmVsYXRlZCBwc2V1ZG8tY2xh
c3NlcyBhcmUgbm90IGhhbmRsZWQgeWV0LgotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlBzZXVkb1Vua25vd246CiAgICAgICAgICAg
ICBjYXNlIENTU1NlbGVjdG9yOjpQc2V1ZG9Ob3RQYXJzZWQ6CiAgICAgICAgICAgICBkZWZhdWx0
Ogo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>55539</attachid>
            <date>2010-05-10 03:47:16 -0700</date>
            <delta_ts>2010-05-10 04:00:10 -0700</delta_ts>
            <desc>Make CSS parser properly handle page-only pseudo-classes.</desc>
            <filename>bug-38731-20100510034714.patch</filename>
            <type>text/plain</type>
            <size>15204</size>
            <attacher name="Yuzo Fujishima">yuzo</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA1NGVkNTNjMmMzMmFmYjAwM2JiYzUwYzg0MmU5MTI0YmUzM2Q3ZDkyLi5lY2FhYThk
ZjQ4MjM1OWI2MTczNjNmNGVjZWNlNjEyNzMwZTgzYTEyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAK
KzIwMTAtMDUtMTAgIFl1em8gRnVqaXNoaW1hICA8eXV6b0Bnb29nbGUuY29tPgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1ha2UgQ1NTIFBhcnNlciBw
cm9wZXJseSBoYW5kbGUgb25seS1mb3ItcGFnZXMgcHNldWRvLWNsYXNzZXMuCisKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM4NzMxCisKKyAgICAgICAg
KiBmYXN0L2Nzcy9taXNwbGFjZWQtcGFnZWQtbWVkaWEtcHNldWRvLWV4cGVjdGVkLnR4dDogUmVt
b3ZlZC4KKyAgICAgICAgKiBmYXN0L2Nzcy9taXNwbGFjZWQtcGFnZWQtbWVkaWEtcHNldWRvLmh0
bWw6IFJlbW92ZWQuCisgICAgICAgICogcHJpbnRpbmcvcGFnZS1ydWxlLWNzcy10ZXh0LWV4cGVj
dGVkLnR4dDoKKyAgICAgICAgKiBwcmludGluZy9wYWdlLXJ1bGUtY3NzLXRleHQuaHRtbDoKKyAg
ICAgICAgKiBwcmludGluZy9wc2V1ZG8tY2xhc3Mtb3V0c2lkZS1wYWdlLmh0bWw6CisKIDIwMTAt
MDUtMDkgIE9saXZlciBIdW50ICA8b2xpdmVyQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdl
ZCBieSBHYXZpbiBCYXJyYWNsb3VnaC4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY3Nz
L21pc3BsYWNlZC1wYWdlZC1tZWRpYS1wc2V1ZG8tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
ZmFzdC9jc3MvbWlzcGxhY2VkLXBhZ2VkLW1lZGlhLXBzZXVkby1leHBlY3RlZC50eHQKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFkODU1ODU1ZjE5NjllM2IxMDIxN2U2MjFhYjc3YWM4
NTJjMjk4ZmMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
TGF5b3V0VGVzdHMvZmFzdC9jc3MvbWlzcGxhY2VkLXBhZ2VkLW1lZGlhLXBzZXVkby1leHBlY3Rl
ZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLVRlc3QgZm9yIGJ1ZyAzODY5Nzog
UmVwbHlpbmcgb24gcmVkZGl0LmNvbSBubyBsb25nZXIgd29ya3MuCi0KLVBBU1MKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2Zhc3QvY3NzL21pc3BsYWNlZC1wYWdlZC1tZWRpYS1wc2V1ZG8uaHRt
bCBiL0xheW91dFRlc3RzL2Zhc3QvY3NzL21pc3BsYWNlZC1wYWdlZC1tZWRpYS1wc2V1ZG8uaHRt
bApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTQ1ZDk1NDkxNzJmNWIyMjRmZWE1ZjVm
ZThkZTRkM2FjYjlkZmRlZC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9taXNwbGFjZWQtcGFnZWQtbWVkaWEtcHNldWRv
Lmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxNSArMCwwIEBACi08Ym9keT4KLTxwPlRlc3QgZm9y
IDxhIGhyZWY9Imh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zODY5NyI+
YnVnIDM4Njk3PGEvPjoKLVJlcGx5aW5nIG9uIHJlZGRpdC5jb20gbm8gbG9uZ2VyIHdvcmtzLjwv
cD4KLTxzY3JpcHQ+Ci1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgIGxheW91
dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKLQotdHJ5IHsKLSAgICBkb2N1bWVudC5xdWVy
eVNlbGVjdG9yQWxsKCIubG9naW4tcG9wdXA6Zmlyc3QiKTsKLSAgICBkb2N1bWVudC53cml0ZSgi
RkFJTCIpOwotfSBjYXRjaCAoRVgpIHsKLSAgICBkb2N1bWVudC53cml0ZSgiUEFTUyIpOwotfQot
PC9zY3JpcHQ+Ci08L2JvZHk+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wcmludGluZy9wYWdl
LXJ1bGUtY3NzLXRleHQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcHJpbnRpbmcvcGFnZS1y
dWxlLWNzcy10ZXh0LWV4cGVjdGVkLnR4dAppbmRleCA3MWMxNDZiMDNiNTk0OWE1N2Y2MmViZDlm
ZTllZDBhZmIzOTFmNTg2Li5mMThiMWUyYmNkOGU4MmJlNmYyOGY3YzM4NzgzMjVmZTgxMzVhNzIy
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wcmludGluZy9wYWdlLXJ1bGUtY3NzLXRleHQtZXhw
ZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3ByaW50aW5nL3BhZ2UtcnVsZS1jc3MtdGV4dC1l
eHBlY3RlZC50eHQKQEAgLTEsNSArMSwxMCBAQAogQHBhZ2UgeyBtYXJnaW4tdG9wOiA1Y207IG1h
cmdpbi1ib3R0b206IDEwY207IH0KK0BwYWdlIDpsZWZ0IHsgbWFyZ2luLXJpZ2h0OiAzY207IH0K
K0BwYWdlIDpyaWdodCB7IG1hcmdpbi1sZWZ0OiAzY207IH0KK0BwYWdlIDpmaXJzdCB7IGJvcmRl
ci10b3Atd2lkdGg6IDFweDsgYm9yZGVyLXJpZ2h0LXdpZHRoOiAxcHg7IGJvcmRlci1ib3R0b20t
d2lkdGg6IDFweDsgYm9yZGVyLWxlZnQtd2lkdGg6IDFweDsgfQogQHBhZ2UgaGVsbG8geyBjb2xv
cjogZ3JlZW47IH0KK0BwYWdlIHdvcmxkOnJpZ2h0IHsgY29sb3I6IHJlZDsgfQorQG1lZGlhIHBy
aW50IHsgQHBhZ2Ugc29tZXBhZ2U6Zmlyc3QgeyBtYXJnaW4tdG9wOiAzY207IG1hcmdpbi1yaWdo
dDogM2NtOyBtYXJnaW4tYm90dG9tOiAzY207IG1hcmdpbi1sZWZ0OiAzY207IH0gfQogQHBhZ2Ug
YXV0b19wYWdlIHsgc2l6ZTogYXV0bzsgfQogQHBhZ2Ugc3F1YXJlX3BhZ2UgeyBzaXplOiA0aW47
IH0KIEBwYWdlIGxldHRlcl9wYWdlIHsgc2l6ZTogbGV0dGVyOyB9CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9wcmludGluZy9wYWdlLXJ1bGUtY3NzLXRleHQuaHRtbCBiL0xheW91dFRlc3RzL3By
aW50aW5nL3BhZ2UtcnVsZS1jc3MtdGV4dC5odG1sCmluZGV4IGU4YTJhZjEzMzdiYjM4NTUxZjQ3
NjcxOGZkZTdlYjJlZTU2YjZhNzkuLjJiODFmMmY0MTFjZTcwN2EwMTg1YzVhZjIxZDkwNGU3NDA0
MTY2NDUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3ByaW50aW5nL3BhZ2UtcnVsZS1jc3MtdGV4
dC5odG1sCisrKyBiL0xheW91dFRlc3RzL3ByaW50aW5nL3BhZ2UtcnVsZS1jc3MtdGV4dC5odG1s
CkBAIC0yLDYgKzIsMTQgQEAKIDxodG1sPgogPGhlYWQ+CiA8c3R5bGUgdHlwZT0idGV4dC9jc3Mi
PgorQHBhZ2UgOnZpc2l0ZWQgeyAvKiA6dmlzaXRlZCBpcyBpbnZhbGlkIGZvciBAcGFnZSAqLwor
ICAgIGNvbG9yOiByZWQ7Cit9CisKK0BwYWdlIGFfcGFnZV9uYW1lOnZpc2l0ZWQgeyAvKiA6dmlz
aXRlZCBpcyBpbnZhbGlkIGZvciBAcGFnZSAqLworICAgIGNvbG9yOiBibHVlOworfQorCiBAcGFn
ZSB7CiAgICAgbWFyZ2luLXRvcDo1Y207CiAgICAgbWFyZ2luLWJvdHRvbToxMGNtOwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvcHJpbnRpbmcvcHNldWRvLWNsYXNzLW91dHNpZGUtcGFnZS5odG1s
IGIvTGF5b3V0VGVzdHMvcHJpbnRpbmcvcHNldWRvLWNsYXNzLW91dHNpZGUtcGFnZS5odG1sCmlu
ZGV4IDlkODhhMDMzMzFkMWEzNGYwYWRjYTVmNWRkNzc2ODgxY2JjZDliNjIuLjEzNjFmMGUxZTFk
MzY3NDFhYzU0NDg3NTcyZDQyYTMxZTFmNGJmMDcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3By
aW50aW5nL3BzZXVkby1jbGFzcy1vdXRzaWRlLXBhZ2UuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9w
cmludGluZy9wc2V1ZG8tY2xhc3Mtb3V0c2lkZS1wYWdlLmh0bWwKQEAgLTYsMTkgKzYsMjIgQEAK
ICAgICAjZ3JlZW4gewogICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBncmVlbjsKICAgICB9Ci0g
ICAgI3Rlc3QgeworICAgICN0ZXN0MSB7CiAgICAgICAgIHdpZHRoOiAxMDBweDsKICAgICAgICAg
aGVpZ2h0OiAxMDBweDsKICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogZ3JlZW47CiAgICAgfQor
ICAgIC5leGNlcHRpb25fdGVzdCB7CisgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHJlZDsKKyAg
ICB9CiAgICAgLyogVGhlc2Ugc2VsZWN0b3JzIHNob3VsZCBiZSBpZ25vcmVkICovCi0gICAgI3Rl
c3Q6Zmlyc3QgeworICAgICN0ZXN0MTpmaXJzdCB7CiAgICAgICAgIGJhY2tncm91bmQtY29sb3I6
IHJlZDsKICAgICB9Ci0gICAgI3Rlc3Q6bGVmdCB7CisgICAgI3Rlc3QxOmxlZnQgewogICAgICAg
ICBiYWNrZ3JvdW5kLWNvbG9yOiByZWQ7CiAgICAgfQotICAgICN0ZXN0OnJpZ2h0IHsKKyAgICAj
dGVzdDE6cmlnaHQgewogICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZWQ7CiAgICAgfQogPC9z
dHlsZT4KQEAgLTI5LDExICszMiw1MCBAQAogICAgIGZ1bmN0aW9uIHRlc3QoKQogICAgIHsKICAg
ICAgICAgdmFyIGV4cGVjdGVkID0gZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgiZ3JlZW4iKSwgbnVsbCkuYmFja2dyb3VuZENvbG9yOwotICAgICAgICB2YXIgYWN0dWFs
ID0gZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGVzdCIpLCBudWxs
KS5iYWNrZ3JvdW5kQ29sb3I7CisgICAgICAgIHZhciBhY3R1YWwgPSBnZXRDb21wdXRlZFN0eWxl
KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0ZXN0MSIpLCBudWxsKS5iYWNrZ3JvdW5kQ29sb3I7
CiAgICAgICAgIHZhciByZXN1bHQgPSAiUEFTUyI7CiAgICAgICAgIGlmIChhY3R1YWwgIT0gZXhw
ZWN0ZWQpCiAgICAgICAgICAgICByZXN1bHQgPSAiRXhwZWN0ZWQgIiArIGV4cGVjdGVkICsgIiwg
YnV0IGNvbWVzICIgKyBhY3R1YWw7CiAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJy
ZXN1bHQiKS5pbm5lckhUTUwgPSByZXN1bHQ7CisKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAg
IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoIi5sb2dpbi1wb3B1cDpmaXJzdCIpOworICAgICAg
ICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRlc3QyIikuaW5uZXJIVE1MID0gIlRlc3Qg
MjogRkFJTCI7CisgICAgICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgICAgIGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCJ0ZXN0MiIpLnN0eWxlLmRpc3BsYXkgPSAibm9uZSI7CisgICAgICAgIH0K
KyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoIjo6
Zmlyc3QiKTsKKyAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0ZXN0MyIpLmlu
bmVySFRNTCA9ICJUZXN0IDM6IEZBSUwiOworICAgICAgICB9IGNhdGNoIChlKSB7CisgICAgICAg
ICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGVzdDMiKS5zdHlsZS5kaXNwbGF5ID0gIm5v
bmUiOworICAgICAgICB9CisKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIGRvY3VtZW50LnF1
ZXJ5U2VsZWN0b3JBbGwoIi5sb2dpbi1wb3B1cDpsZWZ0Iik7CisgICAgICAgICAgICBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgidGVzdDQiKS5pbm5lckhUTUwgPSAiVGVzdCA0OiBGQUlMIjsKKyAg
ICAgICAgfSBjYXRjaCAoZSkgeworICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
InRlc3Q0Iikuc3R5bGUuZGlzcGxheSA9ICJub25lIjsKKyAgICAgICAgfQorICAgICAgICB0cnkg
eworICAgICAgICAgICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgiOjpsZWZ0Iik7CisgICAg
ICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGVzdDUiKS5pbm5lckhUTUwgPSAiVGVz
dCA1OiBGQUlMIjsKKyAgICAgICAgfSBjYXRjaCAoZSkgeworICAgICAgICAgICAgZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoInRlc3Q1Iikuc3R5bGUuZGlzcGxheSA9ICJub25lIjsKKyAgICAgICAg
fQorCisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxs
KCIubG9naW4tcG9wdXA6cmlnaHQiKTsKKyAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCJ0ZXN0NiIpLmlubmVySFRNTCA9ICJUZXN0IDY6IEZBSUwiOworICAgICAgICB9IGNhdGNo
IChlKSB7CisgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGVzdDYiKS5zdHls
ZS5kaXNwbGF5ID0gIm5vbmUiOworICAgICAgICB9CisgICAgICAgIHRyeSB7CisgICAgICAgICAg
ICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCI6OnJpZ2h0Iik7CisgICAgICAgICAgICBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgidGVzdDciKS5pbm5lckhUTUwgPSAiVGVzdCA3OiBGQUlMIjsK
KyAgICAgICAgfSBjYXRjaCAoZSkgeworICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoInRlc3Q3Iikuc3R5bGUuZGlzcGxheSA9ICJub25lIjsKKyAgICAgICAgfQogICAgIH0KIDwv
c2NyaXB0PgogPC9oZWFkPgpAQCAtNDcsNyArODksMTMgQEAgUGFnZWQgbWVkaWEgcmVsYXRlZCBw
c2V1ZG8tY2xhc3NlcyBzaG91bGQgYmUgaWdub3JlZCBvdXRzaWRlIG9mIEBwYWdlLgogWW91IHNo
b3VsZCBzZWUgYSBncmVlbiBib3guCiAKIDxkaXYgaWQ9ImdyZWVuIj48L2Rpdj4KLTxkaXYgaWQ9
InRlc3QiPjwvZGl2PgorPGRpdiBpZD0idGVzdDEiPjwvZGl2PgorPGRpdiBpZD0idGVzdDIiIGNs
YXNzPSJleGNlcHRpb25fdGVzdCI+VGVzdCAyOiBEaWRuJ3QgcnVuPC9kaXY+Cis8ZGl2IGlkPSJ0
ZXN0MyIgY2xhc3M9ImV4Y2VwdGlvbl90ZXN0Ij5UZXN0IDM6IERpZG4ndCBydW48L2Rpdj4KKzxk
aXYgaWQ9InRlc3Q0IiBjbGFzcz0iZXhjZXB0aW9uX3Rlc3QiPlRlc3QgNDogRGlkbid0IHJ1bjwv
ZGl2PgorPGRpdiBpZD0idGVzdDUiIGNsYXNzPSJleGNlcHRpb25fdGVzdCI+VGVzdCA1OiBEaWRu
J3QgcnVuPC9kaXY+Cis8ZGl2IGlkPSJ0ZXN0NiIgY2xhc3M9ImV4Y2VwdGlvbl90ZXN0Ij5UZXN0
IDY6IERpZG4ndCBydW48L2Rpdj4KKzxkaXYgaWQ9InRlc3Q3IiBjbGFzcz0iZXhjZXB0aW9uX3Rl
c3QiPlRlc3QgNzogRGlkbid0IHJ1bjwvZGl2PgogPGRpdiBpZD0icmVzdWx0Ij48L2Rpdj4KIAog
PC9ib2R5PgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxv
ZwppbmRleCBhNGI3N2JhYjMzNmYyNzE4YzE2Y2FlMzk0MDg3YTlmZmQ0YjZlYzNkLi5jMWNlNzI5
MTZlYWQxODM5YzQwNmJhZTFkZDQ3MTg5YTQ5ZWU5YjJiIDEwMDY0NAotLS0gYS9XZWJDb3JlL0No
YW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDEwLTA1
LTEwICBZdXpvIEZ1amlzaGltYSAgPHl1em9AZ29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNYWtlIENTUyBQYXJzZXIgcHJvcGVybHkg
aGFuZGxlIG9ubHktZm9yLXBhZ2VzIHBzZXVkby1jbGFzc2VzLgorCisgICAgICAgIEEgbmV3IE1h
dGNoIGNhdGVnb3J5LCBQc2V1ZG9QYWdlLCBpcyBpbnRyb2R1Y2VkIHRvIGRpc3Rpbmd1aXNoCisg
ICAgICAgIG9ubHktZm9yLXBhZ2VzIHBzZXVkby1jbGFzc2VzIGZyb20gb3RoZXJzLiBBIG5ldyBz
eW1ib2wsIHBzZXVkb19wYWdlLAorICAgICAgICBpcyBpbnRyb2R1Y2VkIHRvIGhhbmRsZSB0aGVt
IHNlcGFyYXRlbHkuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTM4NzMxCisKKyAgICAgICAgKiBjc3MvQ1NTR3JhbW1hci55OgorICAgICAgICAqIGNz
cy9DU1NQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpjcmVhdGVNYXJn
aW5BdFJ1bGUpOgorICAgICAgICAqIGNzcy9DU1NQYXJzZXIuaDoKKyAgICAgICAgKiBjc3MvQ1NT
U2VsZWN0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU2VsZWN0b3I6OmV4dHJhY3RQc2V1
ZG9UeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1NlbGVjdG9yOjpzZWxlY3RvclRleHQpOgor
ICAgICAgICAqIGNzcy9DU1NTZWxlY3Rvci5oOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU2VsZWN0
b3I6Oik6CisgICAgICAgICogY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6Q1NTU3R5bGVTZWxlY3Rvcjo6U2VsZWN0b3JDaGVja2VyOjpjaGVja09uZVNlbGVjdG9y
KToKKwogMjAxMC0wNS0xMCAgSWx5YSBUaWtob25vdnNreSAgPGxvaXNsb0BjaHJvbWl1bS5vcmc+
CiAKICAgICAgICAgTm90IHJldmlld2VkOiByb2xsYmFjayB0aGUgY29tbWl0IHI1OTA2MgpkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9jc3MvQ1NTR3JhbW1hci55IGIvV2ViQ29yZS9jc3MvQ1NTR3JhbW1h
ci55CmluZGV4IDc3OTgyNjRjNzI1YzEyZmY3YmZjNWY4ZjNiYmRiZTQ2MjkzZmE3MDUuLjlmMzk0
MTQ0MzM0NzhjMzcwZDY1Y2YwOWI0YTliOTk0OGZmNWFhMjEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUv
Y3NzL0NTU0dyYW1tYXIueQorKysgYi9XZWJDb3JlL2Nzcy9DU1NHcmFtbWFyLnkKQEAgLTI1Nyw2
ICsyNTcsNyBAQCBzdGF0aWMgaW50IGNzc3l5bGV4KFlZU1RZUEUqIHl5bHZhbCwgdm9pZCogcGFy
c2VyKQogJXR5cGUgPHNlbGVjdG9yPiBjbGFzcwogJXR5cGUgPHNlbGVjdG9yPiBhdHRyaWIKICV0
eXBlIDxzZWxlY3Rvcj4gcHNldWRvCisldHlwZSA8c2VsZWN0b3I+IHBzZXVkb19wYWdlCiAldHlw
ZSA8c2VsZWN0b3I+IHBhZ2Vfc2VsZWN0b3IKIAogJXR5cGUgPGJvb2xlYW4+IGRlY2xhcmF0aW9u
X2xpc3QKQEAgLTc1NSw3ICs3NTYsMTQgQEAgcGFnZToKICAgICBQQUdFX1NZTSBtYXliZV9zcGFj
ZSBwYWdlX3NlbGVjdG9yIG1heWJlX3NwYWNlCiAgICAgJ3snIG1heWJlX3NwYWNlIGRlY2xhcmF0
aW9uc19hbmRfbWFyZ2lucyBjbG9zaW5nX2JyYWNlIHsKICAgICAgICAgQ1NTUGFyc2VyKiBwID0g
c3RhdGljX2Nhc3Q8Q1NTUGFyc2VyKj4ocGFyc2VyKTsKLSAgICAgICAgJCQgPSBwLT5jcmVhdGVQ
YWdlUnVsZShwLT5zaW5rRmxvYXRpbmdTZWxlY3RvcigkMykpOworICAgICAgICBpZiAoJDMpCisg
ICAgICAgICAgICAkJCA9IHAtPmNyZWF0ZVBhZ2VSdWxlKHAtPnNpbmtGbG9hdGluZ1NlbGVjdG9y
KCQzKSk7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgLy8gQ2xlYXIgcHJvcGVydGllcyBp
biB0aGUgaW52YWxpZCBAcGFnZSBydWxlLgorICAgICAgICAgICAgcC0+Y2xlYXJQcm9wZXJ0aWVz
KCk7CisgICAgICAgICAgICAvLyBBbHNvIGNsZWFyIG1hcmdpbiBhdC1ydWxlcyBoZXJlIG9uY2Ug
d2UgZnVsbHkgaW1wbGVtZW50IG1hcmdpbiBhdC1ydWxlcyBwYXJzaW5nLgorICAgICAgICAgICAg
JCQgPSAwOworICAgICAgICB9CiAgICAgfQogICAgIHwgUEFHRV9TWU0gZXJyb3IgaW52YWxpZF9i
bG9jayB7CiAgICAgICAkJCA9IDA7CkBAIC03NzEsMTMgKzc3OSwxMyBAQCBwYWdlX3NlbGVjdG9y
OgogICAgICAgICAkJCA9IHAtPmNyZWF0ZUZsb2F0aW5nU2VsZWN0b3IoKTsKICAgICAgICAgJCQt
Pm1fdGFnID0gUXVhbGlmaWVkTmFtZShudWxsQXRvbSwgJDEsIHAtPm1fZGVmYXVsdE5hbWVzcGFj
ZSk7CiAgICAgfQotICAgIHwgSURFTlQgcHNldWRvIHsKKyAgICB8IElERU5UIHBzZXVkb19wYWdl
IHsKICAgICAgICAgQ1NTUGFyc2VyKiBwID0gc3RhdGljX2Nhc3Q8Q1NTUGFyc2VyKj4ocGFyc2Vy
KTsKICAgICAgICAgJCQgPSAkMjsKICAgICAgICAgaWYgKCQkKQogICAgICAgICAgICAgJCQtPm1f
dGFnID0gUXVhbGlmaWVkTmFtZShudWxsQXRvbSwgJDEsIHAtPm1fZGVmYXVsdE5hbWVzcGFjZSk7
CiAgICAgfQotICAgIHwgcHNldWRvIHsKKyAgICB8IHBzZXVkb19wYWdlIHsKICAgICAgICAgJCQg
PSAkMTsKICAgICB9CiAgICAgfCAvKiBlbXB0eSAqLyB7CkBAIC0xMTY3LDYgKzExNzUsMTcgQEAg
aWRlbnRfb3Jfc3RyaW5nOgogICB8IFNUUklORwogICAgIDsKIAorcHNldWRvX3BhZ2U6CisgICAg
JzonIElERU5UIHsKKyAgICAgICAgJCQgPSBzdGF0aWNfY2FzdDxDU1NQYXJzZXIqPihwYXJzZXIp
LT5jcmVhdGVGbG9hdGluZ1NlbGVjdG9yKCk7CisgICAgICAgICQkLT5tX21hdGNoID0gQ1NTU2Vs
ZWN0b3I6OlBzZXVkb1BhZ2U7CisgICAgICAgICQyLmxvd2VyKCk7CisgICAgICAgICQkLT5tX3Zh
bHVlID0gJDI7CisgICAgICAgIENTU1NlbGVjdG9yOjpQc2V1ZG9UeXBlIHR5cGUgPSAkJC0+cHNl
dWRvVHlwZSgpOworICAgICAgICBpZiAodHlwZSA9PSBDU1NTZWxlY3Rvcjo6UHNldWRvVW5rbm93
bikKKyAgICAgICAgICAgICQkID0gMDsKKyAgICB9CisKIHBzZXVkbzoKICAgICAnOicgSURFTlQg
ewogICAgICAgICAkJCA9IHN0YXRpY19jYXN0PENTU1BhcnNlcio+KHBhcnNlciktPmNyZWF0ZUZs
b2F0aW5nU2VsZWN0b3IoKTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAg
Yi9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwCmluZGV4IDZmN2NmMTJkZGQzNGM1YmE5MDkyZjRh
ZGE1MmJiY2E0NjYxMWIxOWUuLjg1OTRkYTI5YjkzODcxMWI0MDhjMjJmNWZhYTZlNmM0NjdjYjcz
MzIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAKKysrIGIvV2ViQ29yZS9j
c3MvQ1NTUGFyc2VyLmNwcApAQCAtNTM0Nyw2ICs1MzQ3LDcgQEAgQ1NTUnVsZSogQ1NTUGFyc2Vy
OjpjcmVhdGVNYXJnaW5BdFJ1bGUoQ1NTU2VsZWN0b3I6Ok1hcmdpbkJveFR5cGUgLyogbWFyZ2lu
Qm94ICoKICAgICAvLyBGSVhNRTogSW1wbGVtZW50IG1hcmdpbiBhdC1ydWxlIGhlcmUsIHVzaW5n
OgogICAgIC8vICAgICAgICAtIG1hcmdpbkJveDogbWFyZ2luIGJveAogICAgIC8vICAgICAgICAt
IG1fcGFyc2VkUHJvcGVydGllczogcHJvcGVydGllcyBhdCBbbV9udW1QYXJzZWRQcm9wZXJ0aWVz
QmVmb3JlTWFyZ2luQm94LCBtX251bVBhcnNlZFByb3BlcnRpZXMpIGFyZSBmb3IgdGhpcyBhdC1y
dWxlLgorICAgIC8vIERvbid0IGZvcmdldCB0byBhbHNvIHVwZGF0ZSB0aGUgYWN0aW9uIGZvciBw
YWdlIHN5bWJvbCBpbiBDU1NHcmFtbWFyLnkgc3VjaCB0aGF0IG1hcmdpbiBhdC1ydWxlIGRhdGEg
aXMgY2xlYXJlZCBpZiBwYWdlX3NlbGVjdG9yIGlzIGludmFsaWQuCiAKICAgICBlbmREZWNsYXJh
dGlvbnNGb3JNYXJnaW5Cb3goKTsKICAgICByZXR1cm4gMDsgLy8gdW50aWwgdGhpcyBtZXRob2Qg
aXMgaW1wbGVtZW50ZWQuCmRpZmYgLS1naXQgYS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuaCBiL1dl
YkNvcmUvY3NzL0NTU1BhcnNlci5oCmluZGV4IDZlMDM1NGVmMzE5MWI4NmJlOTczYmJlOTM3M2Uw
NDExY2IyM2YyN2YuLmViOWUwMWExMDUzYjBkMmFiMDJkYzk1MmM5YmU1MTZiNTBhYWIxYTQgMTAw
NjQ0Ci0tLSBhL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5oCisrKyBiL1dlYkNvcmUvY3NzL0NTU1Bh
cnNlci5oCkBAIC0yMDksNiArMjA5LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAg
IHZvaWQgdXBkYXRlTGFzdFNlbGVjdG9yTGluZSgpIHsgbV9sYXN0U2VsZWN0b3JMaW5lID0gbV9s
aW5lOyB9CiAKKyAgICAgICAgdm9pZCBjbGVhclByb3BlcnRpZXMoKTsKKwogICAgICAgICBib29s
IG1fc3RyaWN0OwogICAgICAgICBib29sIG1faW1wb3J0YW50OwogICAgICAgICBpbnQgbV9pZDsK
QEAgLTI0NSw4ICsyNDcsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgcHJpdmF0ZToKICAg
ICAgICAgdm9pZCByZWNoZWNrQXRLZXl3b3JkKGNvbnN0IFVDaGFyKiBzdHIsIGludCBsZW4pOwog
ICAgIAotICAgICAgICB2b2lkIGNsZWFyUHJvcGVydGllcygpOwotCiAgICAgICAgIHZvaWQgc2V0
dXBQYXJzZXIoY29uc3QgY2hhciogcHJlZml4LCBjb25zdCBTdHJpbmcmLCBjb25zdCBjaGFyKiBz
dWZmaXgpOwogCiAgICAgICAgIGJvb2wgaW5TaG9ydGhhbmQoKSBjb25zdCB7IHJldHVybiBtX2lu
UGFyc2VTaG9ydGhhbmQ7IH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9yLmNw
cCBiL1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9yLmNwcAppbmRleCBlZTljODQ2NWM2MzI2MTYwOWRi
ZGFkOThkOTNmZGQzZTMyYTVmMjRmLi44OWM2ZjUyMDA4YTdhYzliYTJjMWI2MThlZjMyMDY5OGU4
NWRjYWQzIDEwMDY0NAotLS0gYS9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvci5jcHAKKysrIGIvV2Vi
Q29yZS9jc3MvQ1NTU2VsZWN0b3IuY3BwCkBAIC00MjQsMTMgKzQyNCwxNCBAQCBDU1NTZWxlY3Rv
cjo6UHNldWRvVHlwZSBDU1NTZWxlY3Rvcjo6cGFyc2VQc2V1ZG9UeXBlKGNvbnN0IEF0b21pY1N0
cmluZyYgbmFtZSkKIAogdm9pZCBDU1NTZWxlY3Rvcjo6ZXh0cmFjdFBzZXVkb1R5cGUoKSBjb25z
dAogewotICAgIGlmIChtX21hdGNoICE9IFBzZXVkb0NsYXNzICYmIG1fbWF0Y2ggIT0gUHNldWRv
RWxlbWVudCkKKyAgICBpZiAobV9tYXRjaCAhPSBQc2V1ZG9DbGFzcyAmJiBtX21hdGNoICE9IFBz
ZXVkb0VsZW1lbnQgJiYgbV9tYXRjaCAhPSBQc2V1ZG9QYWdlKQogICAgICAgICByZXR1cm47CiAK
ICAgICBtX3BzZXVkb1R5cGUgPSBwYXJzZVBzZXVkb1R5cGUobV92YWx1ZSk7CiAKICAgICBib29s
IGVsZW1lbnQgPSBmYWxzZTsgLy8gcHNldWRvLWVsZW1lbnQKICAgICBib29sIGNvbXBhdCA9IGZh
bHNlOyAvLyBzaW5nbGUgY29sb24gY29tcGF0YmlsaXR5IG1vZGUKKyAgICBib29sIGlzUGFnZVBz
ZXVkb0NsYXNzID0gZmFsc2U7IC8vIFBhZ2UgcHNldWRvLWNsYXNzCiAKICAgICBzd2l0Y2ggKG1f
cHNldWRvVHlwZSkgewogICAgIGNhc2UgUHNldWRvQWZ0ZXI6CkBAIC01MjksMTIgKzUzMCwxNSBA
QCB2b2lkIENTU1NlbGVjdG9yOjpleHRyYWN0UHNldWRvVHlwZSgpIGNvbnN0CiAgICAgY2FzZSBQ
c2V1ZG9GaXJzdFBhZ2U6CiAgICAgY2FzZSBQc2V1ZG9MZWZ0UGFnZToKICAgICBjYXNlIFBzZXVk
b1JpZ2h0UGFnZToKLSAgICAgICAgLy8gRklYTUU6IFRoZXNlIHNob3VsZCBvbmx5IGJlIGFsbG93
ZWQgaW4gQHBhZ2UgcnVsZXMuIERpc2FibGVkIHRoZW0gYWx0b2dldGhlciB1bnRpbCB0aGF0J3Mg
aW1wbGVtZW50ZWQgY29ycmVjdGx5LgotICAgICAgICBtX3BzZXVkb1R5cGUgPSBQc2V1ZG9Vbmtu
b3duOwotICAgICAgICByZXR1cm47CisgICAgICAgIGlzUGFnZVBzZXVkb0NsYXNzID0gdHJ1ZTsK
KyAgICAgICAgYnJlYWs7CiAgICAgfQogCi0gICAgaWYgKG1fbWF0Y2ggPT0gUHNldWRvQ2xhc3Mg
JiYgZWxlbWVudCkgeworICAgIGJvb2wgbWF0Y2hQc2V1ZG9QYWdlID0gKG1fbWF0Y2ggPT0gUHNl
dWRvUGFnZSk7CisKKyAgICBpZiAobWF0Y2hQc2V1ZG9QYWdlICE9IGlzUGFnZVBzZXVkb0NsYXNz
KQorICAgICAgICBtX3BzZXVkb1R5cGUgPSBQc2V1ZG9Vbmtub3duOworICAgIGVsc2UgaWYgKG1f
bWF0Y2ggPT0gUHNldWRvQ2xhc3MgJiYgZWxlbWVudCkgewogICAgICAgICBpZiAoIWNvbXBhdCkK
ICAgICAgICAgICAgIG1fcHNldWRvVHlwZSA9IFBzZXVkb1Vua25vd247CiAgICAgICAgIGVsc2UK
QEAgLTU4Niw3ICs1OTAsNyBAQCBTdHJpbmcgQ1NTU2VsZWN0b3I6OnNlbGVjdG9yVGV4dCgpIGNv
bnN0CiAgICAgICAgIH0gZWxzZSBpZiAoY3MtPm1fbWF0Y2ggPT0gQ1NTU2VsZWN0b3I6OkNsYXNz
KSB7CiAgICAgICAgICAgICBzdHIgKz0gIi4iOwogICAgICAgICAgICAgc3RyICs9IGNzLT5tX3Zh
bHVlOwotICAgICAgICB9IGVsc2UgaWYgKGNzLT5tX21hdGNoID09IENTU1NlbGVjdG9yOjpQc2V1
ZG9DbGFzcykgeworICAgICAgICB9IGVsc2UgaWYgKGNzLT5tX21hdGNoID09IENTU1NlbGVjdG9y
OjpQc2V1ZG9DbGFzcyB8fCBjcy0+bV9tYXRjaCA9PSBDU1NTZWxlY3Rvcjo6UHNldWRvUGFnZSkg
ewogICAgICAgICAgICAgc3RyICs9ICI6IjsKICAgICAgICAgICAgIHN0ciArPSBjcy0+bV92YWx1
ZTsKICAgICAgICAgICAgIGlmIChjcy0+cHNldWRvVHlwZSgpID09IFBzZXVkb05vdCkgewpkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3IuaCBiL1dlYkNvcmUvY3NzL0NTU1NlbGVj
dG9yLmgKaW5kZXggOGY4NGIwNThhNjE0YmM1OTk3NmUxYmYyNTgyMDc5ODFiYzkzMjczMi4uZmZk
MzcxNjUyNTVhNzIzYjc2MDg1YzlmZGFhN2NiYWEyMGYwMjY4ZSAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9jc3MvQ1NTU2VsZWN0b3IuaAorKysgYi9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvci5oCkBAIC04
NSw5ICs4NSwxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgICAgICBIeXBoZW4sCiAg
ICAgICAgICAgICBQc2V1ZG9DbGFzcywKICAgICAgICAgICAgIFBzZXVkb0VsZW1lbnQsCi0gICAg
ICAgICAgICBDb250YWluLCAgIC8vIGNzczM6IEVbZm9vKj0iYmFyIl0KLSAgICAgICAgICAgIEJl
Z2luLCAgICAgLy8gY3NzMzogRVtmb29ePSJiYXIiXQotICAgICAgICAgICAgRW5kICAgICAgICAv
LyBjc3MzOiBFW2ZvbyQ9ImJhciJdCisgICAgICAgICAgICBDb250YWluLCAvLyBjc3MzOiBFW2Zv
byo9ImJhciJdCisgICAgICAgICAgICBCZWdpbiwgLy8gY3NzMzogRVtmb29ePSJiYXIiXQorICAg
ICAgICAgICAgRW5kLCAvLyBjc3MzOiBFW2ZvbyQ9ImJhciJdCisgICAgICAgICAgICBQc2V1ZG9Q
YWdlCiAgICAgICAgIH07CiAKICAgICAgICAgZW51bSBSZWxhdGlvbiB7CmRpZmYgLS1naXQgYS9X
ZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcCBiL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2Vs
ZWN0b3IuY3BwCmluZGV4IDk2YjM2YmJkMDhiZDUzNWQ4MGIzZWUzYjMxOTJhZTdmNWE3YjY1M2Uu
LjBiNDI4MDliOTRlM2QxZDhmNTJlMjEzZWUxMWMzMjI3N2QzNDJiYzQgMTAwNjQ0Ci0tLSBhL1dl
YkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwCisrKyBiL1dlYkNvcmUvY3NzL0NTU1N0eWxl
U2VsZWN0b3IuY3BwCkBAIC0yNTU0LDExICsyNTU0LDYgQEAgYm9vbCBDU1NTdHlsZVNlbGVjdG9y
OjpTZWxlY3RvckNoZWNrZXI6OmNoZWNrT25lU2VsZWN0b3IoQ1NTU2VsZWN0b3IqIHNlbCwgRWxl
bWUKICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgcmV0dXJuIHRy
dWU7CiAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpQc2V1ZG9M
ZWZ0UGFnZToKLSAgICAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlBzZXVkb1JpZ2h0UGFnZToK
LSAgICAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlBzZXVkb0ZpcnN0UGFnZToKLSAgICAgICAg
ICAgICAgICAvLyBQYWdlIG1lZGlhIHJlbGF0ZWQgcHNldWRvLWNsYXNzZXMgYXJlIG5vdCBoYW5k
bGVkIHlldC4KLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICBjYXNl
IENTU1NlbGVjdG9yOjpQc2V1ZG9Vbmtub3duOgogICAgICAgICAgICAgY2FzZSBDU1NTZWxlY3Rv
cjo6UHNldWRvTm90UGFyc2VkOgogICAgICAgICAgICAgZGVmYXVsdDoK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>55541</attachid>
            <date>2010-05-10 04:00:19 -0700</date>
            <delta_ts>2010-05-10 22:39:53 -0700</delta_ts>
            <desc>Make CSS parser properly handle page-only pseudo-classes.</desc>
            <filename>bug-38731-20100510040017.patch</filename>
            <type>text/plain</type>
            <size>15244</size>
            <attacher name="Yuzo Fujishima">yuzo</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA1NGVkNTNjMmMzMmFmYjAwM2JiYzUwYzg0MmU5MTI0YmUzM2Q3ZDkyLi5lY2FhYThk
ZjQ4MjM1OWI2MTczNjNmNGVjZWNlNjEyNzMwZTgzYTEyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAK
KzIwMTAtMDUtMTAgIFl1em8gRnVqaXNoaW1hICA8eXV6b0Bnb29nbGUuY29tPgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1ha2UgQ1NTIFBhcnNlciBw
cm9wZXJseSBoYW5kbGUgb25seS1mb3ItcGFnZXMgcHNldWRvLWNsYXNzZXMuCisKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM4NzMxCisKKyAgICAgICAg
KiBmYXN0L2Nzcy9taXNwbGFjZWQtcGFnZWQtbWVkaWEtcHNldWRvLWV4cGVjdGVkLnR4dDogUmVt
b3ZlZC4KKyAgICAgICAgKiBmYXN0L2Nzcy9taXNwbGFjZWQtcGFnZWQtbWVkaWEtcHNldWRvLmh0
bWw6IFJlbW92ZWQuCisgICAgICAgICogcHJpbnRpbmcvcGFnZS1ydWxlLWNzcy10ZXh0LWV4cGVj
dGVkLnR4dDoKKyAgICAgICAgKiBwcmludGluZy9wYWdlLXJ1bGUtY3NzLXRleHQuaHRtbDoKKyAg
ICAgICAgKiBwcmludGluZy9wc2V1ZG8tY2xhc3Mtb3V0c2lkZS1wYWdlLmh0bWw6CisKIDIwMTAt
MDUtMDkgIE9saXZlciBIdW50ICA8b2xpdmVyQGFwcGxlLmNvbT4KIAogICAgICAgICBSZXZpZXdl
ZCBieSBHYXZpbiBCYXJyYWNsb3VnaC4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY3Nz
L21pc3BsYWNlZC1wYWdlZC1tZWRpYS1wc2V1ZG8tZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
ZmFzdC9jc3MvbWlzcGxhY2VkLXBhZ2VkLW1lZGlhLXBzZXVkby1leHBlY3RlZC50eHQKZGVsZXRl
ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFkODU1ODU1ZjE5NjllM2IxMDIxN2U2MjFhYjc3YWM4
NTJjMjk4ZmMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEv
TGF5b3V0VGVzdHMvZmFzdC9jc3MvbWlzcGxhY2VkLXBhZ2VkLW1lZGlhLXBzZXVkby1leHBlY3Rl
ZC50eHQKKysrIC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLVRlc3QgZm9yIGJ1ZyAzODY5Nzog
UmVwbHlpbmcgb24gcmVkZGl0LmNvbSBubyBsb25nZXIgd29ya3MuCi0KLVBBU1MKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2Zhc3QvY3NzL21pc3BsYWNlZC1wYWdlZC1tZWRpYS1wc2V1ZG8uaHRt
bCBiL0xheW91dFRlc3RzL2Zhc3QvY3NzL21pc3BsYWNlZC1wYWdlZC1tZWRpYS1wc2V1ZG8uaHRt
bApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTQ1ZDk1NDkxNzJmNWIyMjRmZWE1ZjVm
ZThkZTRkM2FjYjlkZmRlZC4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9taXNwbGFjZWQtcGFnZWQtbWVkaWEtcHNldWRv
Lmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxNSArMCwwIEBACi08Ym9keT4KLTxwPlRlc3QgZm9y
IDxhIGhyZWY9Imh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zODY5NyI+
YnVnIDM4Njk3PGEvPjoKLVJlcGx5aW5nIG9uIHJlZGRpdC5jb20gbm8gbG9uZ2VyIHdvcmtzLjwv
cD4KLTxzY3JpcHQ+Ci1pZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKQotICAgIGxheW91
dFRlc3RDb250cm9sbGVyLmR1bXBBc1RleHQoKTsKLQotdHJ5IHsKLSAgICBkb2N1bWVudC5xdWVy
eVNlbGVjdG9yQWxsKCIubG9naW4tcG9wdXA6Zmlyc3QiKTsKLSAgICBkb2N1bWVudC53cml0ZSgi
RkFJTCIpOwotfSBjYXRjaCAoRVgpIHsKLSAgICBkb2N1bWVudC53cml0ZSgiUEFTUyIpOwotfQot
PC9zY3JpcHQ+Ci08L2JvZHk+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wcmludGluZy9wYWdl
LXJ1bGUtY3NzLXRleHQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcHJpbnRpbmcvcGFnZS1y
dWxlLWNzcy10ZXh0LWV4cGVjdGVkLnR4dAppbmRleCA3MWMxNDZiMDNiNTk0OWE1N2Y2MmViZDlm
ZTllZDBhZmIzOTFmNTg2Li5mMThiMWUyYmNkOGU4MmJlNmYyOGY3YzM4NzgzMjVmZTgxMzVhNzIy
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wcmludGluZy9wYWdlLXJ1bGUtY3NzLXRleHQtZXhw
ZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL3ByaW50aW5nL3BhZ2UtcnVsZS1jc3MtdGV4dC1l
eHBlY3RlZC50eHQKQEAgLTEsNSArMSwxMCBAQAogQHBhZ2UgeyBtYXJnaW4tdG9wOiA1Y207IG1h
cmdpbi1ib3R0b206IDEwY207IH0KK0BwYWdlIDpsZWZ0IHsgbWFyZ2luLXJpZ2h0OiAzY207IH0K
K0BwYWdlIDpyaWdodCB7IG1hcmdpbi1sZWZ0OiAzY207IH0KK0BwYWdlIDpmaXJzdCB7IGJvcmRl
ci10b3Atd2lkdGg6IDFweDsgYm9yZGVyLXJpZ2h0LXdpZHRoOiAxcHg7IGJvcmRlci1ib3R0b20t
d2lkdGg6IDFweDsgYm9yZGVyLWxlZnQtd2lkdGg6IDFweDsgfQogQHBhZ2UgaGVsbG8geyBjb2xv
cjogZ3JlZW47IH0KK0BwYWdlIHdvcmxkOnJpZ2h0IHsgY29sb3I6IHJlZDsgfQorQG1lZGlhIHBy
aW50IHsgQHBhZ2Ugc29tZXBhZ2U6Zmlyc3QgeyBtYXJnaW4tdG9wOiAzY207IG1hcmdpbi1yaWdo
dDogM2NtOyBtYXJnaW4tYm90dG9tOiAzY207IG1hcmdpbi1sZWZ0OiAzY207IH0gfQogQHBhZ2Ug
YXV0b19wYWdlIHsgc2l6ZTogYXV0bzsgfQogQHBhZ2Ugc3F1YXJlX3BhZ2UgeyBzaXplOiA0aW47
IH0KIEBwYWdlIGxldHRlcl9wYWdlIHsgc2l6ZTogbGV0dGVyOyB9CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9wcmludGluZy9wYWdlLXJ1bGUtY3NzLXRleHQuaHRtbCBiL0xheW91dFRlc3RzL3By
aW50aW5nL3BhZ2UtcnVsZS1jc3MtdGV4dC5odG1sCmluZGV4IGU4YTJhZjEzMzdiYjM4NTUxZjQ3
NjcxOGZkZTdlYjJlZTU2YjZhNzkuLjJiODFmMmY0MTFjZTcwN2EwMTg1YzVhZjIxZDkwNGU3NDA0
MTY2NDUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3ByaW50aW5nL3BhZ2UtcnVsZS1jc3MtdGV4
dC5odG1sCisrKyBiL0xheW91dFRlc3RzL3ByaW50aW5nL3BhZ2UtcnVsZS1jc3MtdGV4dC5odG1s
CkBAIC0yLDYgKzIsMTQgQEAKIDxodG1sPgogPGhlYWQ+CiA8c3R5bGUgdHlwZT0idGV4dC9jc3Mi
PgorQHBhZ2UgOnZpc2l0ZWQgeyAvKiA6dmlzaXRlZCBpcyBpbnZhbGlkIGZvciBAcGFnZSAqLwor
ICAgIGNvbG9yOiByZWQ7Cit9CisKK0BwYWdlIGFfcGFnZV9uYW1lOnZpc2l0ZWQgeyAvKiA6dmlz
aXRlZCBpcyBpbnZhbGlkIGZvciBAcGFnZSAqLworICAgIGNvbG9yOiBibHVlOworfQorCiBAcGFn
ZSB7CiAgICAgbWFyZ2luLXRvcDo1Y207CiAgICAgbWFyZ2luLWJvdHRvbToxMGNtOwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvcHJpbnRpbmcvcHNldWRvLWNsYXNzLW91dHNpZGUtcGFnZS5odG1s
IGIvTGF5b3V0VGVzdHMvcHJpbnRpbmcvcHNldWRvLWNsYXNzLW91dHNpZGUtcGFnZS5odG1sCmlu
ZGV4IDlkODhhMDMzMzFkMWEzNGYwYWRjYTVmNWRkNzc2ODgxY2JjZDliNjIuLjEzNjFmMGUxZTFk
MzY3NDFhYzU0NDg3NTcyZDQyYTMxZTFmNGJmMDcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3By
aW50aW5nL3BzZXVkby1jbGFzcy1vdXRzaWRlLXBhZ2UuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9w
cmludGluZy9wc2V1ZG8tY2xhc3Mtb3V0c2lkZS1wYWdlLmh0bWwKQEAgLTYsMTkgKzYsMjIgQEAK
ICAgICAjZ3JlZW4gewogICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBncmVlbjsKICAgICB9Ci0g
ICAgI3Rlc3QgeworICAgICN0ZXN0MSB7CiAgICAgICAgIHdpZHRoOiAxMDBweDsKICAgICAgICAg
aGVpZ2h0OiAxMDBweDsKICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogZ3JlZW47CiAgICAgfQor
ICAgIC5leGNlcHRpb25fdGVzdCB7CisgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHJlZDsKKyAg
ICB9CiAgICAgLyogVGhlc2Ugc2VsZWN0b3JzIHNob3VsZCBiZSBpZ25vcmVkICovCi0gICAgI3Rl
c3Q6Zmlyc3QgeworICAgICN0ZXN0MTpmaXJzdCB7CiAgICAgICAgIGJhY2tncm91bmQtY29sb3I6
IHJlZDsKICAgICB9Ci0gICAgI3Rlc3Q6bGVmdCB7CisgICAgI3Rlc3QxOmxlZnQgewogICAgICAg
ICBiYWNrZ3JvdW5kLWNvbG9yOiByZWQ7CiAgICAgfQotICAgICN0ZXN0OnJpZ2h0IHsKKyAgICAj
dGVzdDE6cmlnaHQgewogICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZWQ7CiAgICAgfQogPC9z
dHlsZT4KQEAgLTI5LDExICszMiw1MCBAQAogICAgIGZ1bmN0aW9uIHRlc3QoKQogICAgIHsKICAg
ICAgICAgdmFyIGV4cGVjdGVkID0gZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5nZXRFbGVtZW50
QnlJZCgiZ3JlZW4iKSwgbnVsbCkuYmFja2dyb3VuZENvbG9yOwotICAgICAgICB2YXIgYWN0dWFs
ID0gZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGVzdCIpLCBudWxs
KS5iYWNrZ3JvdW5kQ29sb3I7CisgICAgICAgIHZhciBhY3R1YWwgPSBnZXRDb21wdXRlZFN0eWxl
KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0ZXN0MSIpLCBudWxsKS5iYWNrZ3JvdW5kQ29sb3I7
CiAgICAgICAgIHZhciByZXN1bHQgPSAiUEFTUyI7CiAgICAgICAgIGlmIChhY3R1YWwgIT0gZXhw
ZWN0ZWQpCiAgICAgICAgICAgICByZXN1bHQgPSAiRXhwZWN0ZWQgIiArIGV4cGVjdGVkICsgIiwg
YnV0IGNvbWVzICIgKyBhY3R1YWw7CiAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJy
ZXN1bHQiKS5pbm5lckhUTUwgPSByZXN1bHQ7CisKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAg
IGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoIi5sb2dpbi1wb3B1cDpmaXJzdCIpOworICAgICAg
ICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRlc3QyIikuaW5uZXJIVE1MID0gIlRlc3Qg
MjogRkFJTCI7CisgICAgICAgIH0gY2F0Y2ggKGUpIHsKKyAgICAgICAgICAgIGRvY3VtZW50Lmdl
dEVsZW1lbnRCeUlkKCJ0ZXN0MiIpLnN0eWxlLmRpc3BsYXkgPSAibm9uZSI7CisgICAgICAgIH0K
KyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoIjo6
Zmlyc3QiKTsKKyAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJ0ZXN0MyIpLmlu
bmVySFRNTCA9ICJUZXN0IDM6IEZBSUwiOworICAgICAgICB9IGNhdGNoIChlKSB7CisgICAgICAg
ICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGVzdDMiKS5zdHlsZS5kaXNwbGF5ID0gIm5v
bmUiOworICAgICAgICB9CisKKyAgICAgICAgdHJ5IHsKKyAgICAgICAgICAgIGRvY3VtZW50LnF1
ZXJ5U2VsZWN0b3JBbGwoIi5sb2dpbi1wb3B1cDpsZWZ0Iik7CisgICAgICAgICAgICBkb2N1bWVu
dC5nZXRFbGVtZW50QnlJZCgidGVzdDQiKS5pbm5lckhUTUwgPSAiVGVzdCA0OiBGQUlMIjsKKyAg
ICAgICAgfSBjYXRjaCAoZSkgeworICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQo
InRlc3Q0Iikuc3R5bGUuZGlzcGxheSA9ICJub25lIjsKKyAgICAgICAgfQorICAgICAgICB0cnkg
eworICAgICAgICAgICAgZG9jdW1lbnQucXVlcnlTZWxlY3RvckFsbCgiOjpsZWZ0Iik7CisgICAg
ICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGVzdDUiKS5pbm5lckhUTUwgPSAiVGVz
dCA1OiBGQUlMIjsKKyAgICAgICAgfSBjYXRjaCAoZSkgeworICAgICAgICAgICAgZG9jdW1lbnQu
Z2V0RWxlbWVudEJ5SWQoInRlc3Q1Iikuc3R5bGUuZGlzcGxheSA9ICJub25lIjsKKyAgICAgICAg
fQorCisgICAgICAgIHRyeSB7CisgICAgICAgICAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxs
KCIubG9naW4tcG9wdXA6cmlnaHQiKTsKKyAgICAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRC
eUlkKCJ0ZXN0NiIpLmlubmVySFRNTCA9ICJUZXN0IDY6IEZBSUwiOworICAgICAgICB9IGNhdGNo
IChlKSB7CisgICAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGVzdDYiKS5zdHls
ZS5kaXNwbGF5ID0gIm5vbmUiOworICAgICAgICB9CisgICAgICAgIHRyeSB7CisgICAgICAgICAg
ICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKCI6OnJpZ2h0Iik7CisgICAgICAgICAgICBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgidGVzdDciKS5pbm5lckhUTUwgPSAiVGVzdCA3OiBGQUlMIjsK
KyAgICAgICAgfSBjYXRjaCAoZSkgeworICAgICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5
SWQoInRlc3Q3Iikuc3R5bGUuZGlzcGxheSA9ICJub25lIjsKKyAgICAgICAgfQogICAgIH0KIDwv
c2NyaXB0PgogPC9oZWFkPgpAQCAtNDcsNyArODksMTMgQEAgUGFnZWQgbWVkaWEgcmVsYXRlZCBw
c2V1ZG8tY2xhc3NlcyBzaG91bGQgYmUgaWdub3JlZCBvdXRzaWRlIG9mIEBwYWdlLgogWW91IHNo
b3VsZCBzZWUgYSBncmVlbiBib3guCiAKIDxkaXYgaWQ9ImdyZWVuIj48L2Rpdj4KLTxkaXYgaWQ9
InRlc3QiPjwvZGl2PgorPGRpdiBpZD0idGVzdDEiPjwvZGl2PgorPGRpdiBpZD0idGVzdDIiIGNs
YXNzPSJleGNlcHRpb25fdGVzdCI+VGVzdCAyOiBEaWRuJ3QgcnVuPC9kaXY+Cis8ZGl2IGlkPSJ0
ZXN0MyIgY2xhc3M9ImV4Y2VwdGlvbl90ZXN0Ij5UZXN0IDM6IERpZG4ndCBydW48L2Rpdj4KKzxk
aXYgaWQ9InRlc3Q0IiBjbGFzcz0iZXhjZXB0aW9uX3Rlc3QiPlRlc3QgNDogRGlkbid0IHJ1bjwv
ZGl2PgorPGRpdiBpZD0idGVzdDUiIGNsYXNzPSJleGNlcHRpb25fdGVzdCI+VGVzdCA1OiBEaWRu
J3QgcnVuPC9kaXY+Cis8ZGl2IGlkPSJ0ZXN0NiIgY2xhc3M9ImV4Y2VwdGlvbl90ZXN0Ij5UZXN0
IDY6IERpZG4ndCBydW48L2Rpdj4KKzxkaXYgaWQ9InRlc3Q3IiBjbGFzcz0iZXhjZXB0aW9uX3Rl
c3QiPlRlc3QgNzogRGlkbid0IHJ1bjwvZGl2PgogPGRpdiBpZD0icmVzdWx0Ij48L2Rpdj4KIAog
PC9ib2R5PgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxv
ZwppbmRleCBhNGI3N2JhYjMzNmYyNzE4YzE2Y2FlMzk0MDg3YTlmZmQ0YjZlYzNkLi4wYTJjZmJm
OTI2NTcxYTE1NjBhZGIwOTU5MTEyYzVlYmU5N2NjMDZhIDEwMDY0NAotLS0gYS9XZWJDb3JlL0No
YW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3IEBACisyMDEwLTA1
LTEwICBZdXpvIEZ1amlzaGltYSAgPHl1em9AZ29vZ2xlLmNvbT4KKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNYWtlIENTUyBQYXJzZXIgcHJvcGVybHkg
aGFuZGxlIG9ubHktZm9yLXBhZ2VzIHBzZXVkby1jbGFzc2VzLgorCisgICAgICAgIEEgbmV3IE1h
dGNoIGNhdGVnb3J5LCBQYWdlUHNldWRvQ2xhc3MsIGlzIGludHJvZHVjZWQgdG8gZGlzdGluZ3Vp
c2gKKyAgICAgICAgb25seS1mb3ItcGFnZXMgcHNldWRvLWNsYXNzZXMgZnJvbSBvdGhlcnMuIEEg
bmV3IHN5bWJvbCwgcHNldWRvX3BhZ2UsCisgICAgICAgIGlzIGludHJvZHVjZWQgdG8gaGFuZGxl
IHRoZW0gc2VwYXJhdGVseS4KKworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93
X2J1Zy5jZ2k/aWQ9Mzg3MzEKKworICAgICAgICAqIGNzcy9DU1NHcmFtbWFyLnk6CisgICAgICAg
ICogY3NzL0NTU1BhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NQYXJzZXI6OmNyZWF0
ZU1hcmdpbkF0UnVsZSk6CisgICAgICAgICogY3NzL0NTU1BhcnNlci5oOgorICAgICAgICAqIGNz
cy9DU1NTZWxlY3Rvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NTZWxlY3Rvcjo6ZXh0cmFj
dFBzZXVkb1R5cGUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU2VsZWN0b3I6OnNlbGVjdG9yVGV4
dCk6CisgICAgICAgICogY3NzL0NTU1NlbGVjdG9yLmg6CisgICAgICAgIChXZWJDb3JlOjpDU1NT
ZWxlY3Rvcjo6KToKKyAgICAgICAgKiBjc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpDU1NTdHlsZVNlbGVjdG9yOjpTZWxlY3RvckNoZWNrZXI6OmNoZWNrT25lU2Vs
ZWN0b3IpOgorCiAyMDEwLTA1LTEwICBJbHlhIFRpa2hvbm92c2t5ICA8bG9pc2xvQGNocm9taXVt
Lm9yZz4KIAogICAgICAgICBOb3QgcmV2aWV3ZWQ6IHJvbGxiYWNrIHRoZSBjb21taXQgcjU5MDYy
CmRpZmYgLS1naXQgYS9XZWJDb3JlL2Nzcy9DU1NHcmFtbWFyLnkgYi9XZWJDb3JlL2Nzcy9DU1NH
cmFtbWFyLnkKaW5kZXggNzc5ODI2NGM3MjVjMTJmZjdiZmM1ZjhmM2JiZGJlNDYyOTNmYTcwNS4u
MzdjNTM4NTRjZWI0ZjA2YTM0YmMwM2NiMTZhNzdkMWM3NWFiODJmMCAxMDA2NDQKLS0tIGEvV2Vi
Q29yZS9jc3MvQ1NTR3JhbW1hci55CisrKyBiL1dlYkNvcmUvY3NzL0NTU0dyYW1tYXIueQpAQCAt
MjU3LDYgKzI1Nyw3IEBAIHN0YXRpYyBpbnQgY3NzeXlsZXgoWVlTVFlQRSogeXlsdmFsLCB2b2lk
KiBwYXJzZXIpCiAldHlwZSA8c2VsZWN0b3I+IGNsYXNzCiAldHlwZSA8c2VsZWN0b3I+IGF0dHJp
YgogJXR5cGUgPHNlbGVjdG9yPiBwc2V1ZG8KKyV0eXBlIDxzZWxlY3Rvcj4gcHNldWRvX3BhZ2UK
ICV0eXBlIDxzZWxlY3Rvcj4gcGFnZV9zZWxlY3RvcgogCiAldHlwZSA8Ym9vbGVhbj4gZGVjbGFy
YXRpb25fbGlzdApAQCAtNzU1LDcgKzc1NiwxNCBAQCBwYWdlOgogICAgIFBBR0VfU1lNIG1heWJl
X3NwYWNlIHBhZ2Vfc2VsZWN0b3IgbWF5YmVfc3BhY2UKICAgICAneycgbWF5YmVfc3BhY2UgZGVj
bGFyYXRpb25zX2FuZF9tYXJnaW5zIGNsb3NpbmdfYnJhY2UgewogICAgICAgICBDU1NQYXJzZXIq
IHAgPSBzdGF0aWNfY2FzdDxDU1NQYXJzZXIqPihwYXJzZXIpOwotICAgICAgICAkJCA9IHAtPmNy
ZWF0ZVBhZ2VSdWxlKHAtPnNpbmtGbG9hdGluZ1NlbGVjdG9yKCQzKSk7CisgICAgICAgIGlmICgk
MykKKyAgICAgICAgICAgICQkID0gcC0+Y3JlYXRlUGFnZVJ1bGUocC0+c2lua0Zsb2F0aW5nU2Vs
ZWN0b3IoJDMpKTsKKyAgICAgICAgZWxzZSB7CisgICAgICAgICAgICAvLyBDbGVhciBwcm9wZXJ0
aWVzIGluIHRoZSBpbnZhbGlkIEBwYWdlIHJ1bGUuCisgICAgICAgICAgICBwLT5jbGVhclByb3Bl
cnRpZXMoKTsKKyAgICAgICAgICAgIC8vIEFsc28gY2xlYXIgbWFyZ2luIGF0LXJ1bGVzIGhlcmUg
b25jZSB3ZSBmdWxseSBpbXBsZW1lbnQgbWFyZ2luIGF0LXJ1bGVzIHBhcnNpbmcuCisgICAgICAg
ICAgICAkJCA9IDA7CisgICAgICAgIH0KICAgICB9CiAgICAgfCBQQUdFX1NZTSBlcnJvciBpbnZh
bGlkX2Jsb2NrIHsKICAgICAgICQkID0gMDsKQEAgLTc3MSwxMyArNzc5LDEzIEBAIHBhZ2Vfc2Vs
ZWN0b3I6CiAgICAgICAgICQkID0gcC0+Y3JlYXRlRmxvYXRpbmdTZWxlY3RvcigpOwogICAgICAg
ICAkJC0+bV90YWcgPSBRdWFsaWZpZWROYW1lKG51bGxBdG9tLCAkMSwgcC0+bV9kZWZhdWx0TmFt
ZXNwYWNlKTsKICAgICB9Ci0gICAgfCBJREVOVCBwc2V1ZG8geworICAgIHwgSURFTlQgcHNldWRv
X3BhZ2UgewogICAgICAgICBDU1NQYXJzZXIqIHAgPSBzdGF0aWNfY2FzdDxDU1NQYXJzZXIqPihw
YXJzZXIpOwogICAgICAgICAkJCA9ICQyOwogICAgICAgICBpZiAoJCQpCiAgICAgICAgICAgICAk
JC0+bV90YWcgPSBRdWFsaWZpZWROYW1lKG51bGxBdG9tLCAkMSwgcC0+bV9kZWZhdWx0TmFtZXNw
YWNlKTsKICAgICB9Ci0gICAgfCBwc2V1ZG8geworICAgIHwgcHNldWRvX3BhZ2UgewogICAgICAg
ICAkJCA9ICQxOwogICAgIH0KICAgICB8IC8qIGVtcHR5ICovIHsKQEAgLTExNjcsNiArMTE3NSwx
NyBAQCBpZGVudF9vcl9zdHJpbmc6CiAgIHwgU1RSSU5HCiAgICAgOwogCitwc2V1ZG9fcGFnZToK
KyAgICAnOicgSURFTlQgeworICAgICAgICAkJCA9IHN0YXRpY19jYXN0PENTU1BhcnNlcio+KHBh
cnNlciktPmNyZWF0ZUZsb2F0aW5nU2VsZWN0b3IoKTsKKyAgICAgICAgJCQtPm1fbWF0Y2ggPSBD
U1NTZWxlY3Rvcjo6UGFnZVBzZXVkb0NsYXNzOworICAgICAgICAkMi5sb3dlcigpOworICAgICAg
ICAkJC0+bV92YWx1ZSA9ICQyOworICAgICAgICBDU1NTZWxlY3Rvcjo6UHNldWRvVHlwZSB0eXBl
ID0gJCQtPnBzZXVkb1R5cGUoKTsKKyAgICAgICAgaWYgKHR5cGUgPT0gQ1NTU2VsZWN0b3I6OlBz
ZXVkb1Vua25vd24pCisgICAgICAgICAgICAkJCA9IDA7CisgICAgfQorCiBwc2V1ZG86CiAgICAg
JzonIElERU5UIHsKICAgICAgICAgJCQgPSBzdGF0aWNfY2FzdDxDU1NQYXJzZXIqPihwYXJzZXIp
LT5jcmVhdGVGbG9hdGluZ1NlbGVjdG9yKCk7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2Nzcy9DU1NQ
YXJzZXIuY3BwIGIvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcAppbmRleCA2ZjdjZjEyZGRkMzRj
NWJhOTA5MmY0YWRhNTJiYmNhNDY2MTFiMTllLi44NTk0ZGEyOWI5Mzg3MTFiNDA4YzIyZjVmYWE2
ZTZjNDY3Y2I3MzMyIDEwMDY0NAotLS0gYS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwCisrKyBi
L1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAKQEAgLTUzNDcsNiArNTM0Nyw3IEBAIENTU1J1bGUq
IENTU1BhcnNlcjo6Y3JlYXRlTWFyZ2luQXRSdWxlKENTU1NlbGVjdG9yOjpNYXJnaW5Cb3hUeXBl
IC8qIG1hcmdpbkJveCAqCiAgICAgLy8gRklYTUU6IEltcGxlbWVudCBtYXJnaW4gYXQtcnVsZSBo
ZXJlLCB1c2luZzoKICAgICAvLyAgICAgICAgLSBtYXJnaW5Cb3g6IG1hcmdpbiBib3gKICAgICAv
LyAgICAgICAgLSBtX3BhcnNlZFByb3BlcnRpZXM6IHByb3BlcnRpZXMgYXQgW21fbnVtUGFyc2Vk
UHJvcGVydGllc0JlZm9yZU1hcmdpbkJveCwgbV9udW1QYXJzZWRQcm9wZXJ0aWVzKSBhcmUgZm9y
IHRoaXMgYXQtcnVsZS4KKyAgICAvLyBEb24ndCBmb3JnZXQgdG8gYWxzbyB1cGRhdGUgdGhlIGFj
dGlvbiBmb3IgcGFnZSBzeW1ib2wgaW4gQ1NTR3JhbW1hci55IHN1Y2ggdGhhdCBtYXJnaW4gYXQt
cnVsZSBkYXRhIGlzIGNsZWFyZWQgaWYgcGFnZV9zZWxlY3RvciBpcyBpbnZhbGlkLgogCiAgICAg
ZW5kRGVjbGFyYXRpb25zRm9yTWFyZ2luQm94KCk7CiAgICAgcmV0dXJuIDA7IC8vIHVudGlsIHRo
aXMgbWV0aG9kIGlzIGltcGxlbWVudGVkLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9jc3MvQ1NTUGFy
c2VyLmggYi9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuaAppbmRleCA2ZTAzNTRlZjMxOTFiODZiZTk3
M2JiZTkzNzNlMDQxMWNiMjNmMjdmLi5lYjllMDFhMTA1M2IwZDJhYjAyZGM5NTJjOWJlNTE2YjUw
YWFiMWE0IDEwMDY0NAotLS0gYS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuaAorKysgYi9XZWJDb3Jl
L2Nzcy9DU1NQYXJzZXIuaApAQCAtMjA5LDYgKzIwOSw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogICAgICAgICB2b2lkIHVwZGF0ZUxhc3RTZWxlY3RvckxpbmUoKSB7IG1fbGFzdFNlbGVjdG9y
TGluZSA9IG1fbGluZTsgfQogCisgICAgICAgIHZvaWQgY2xlYXJQcm9wZXJ0aWVzKCk7CisKICAg
ICAgICAgYm9vbCBtX3N0cmljdDsKICAgICAgICAgYm9vbCBtX2ltcG9ydGFudDsKICAgICAgICAg
aW50IG1faWQ7CkBAIC0yNDUsOCArMjQ3LDYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIHBy
aXZhdGU6CiAgICAgICAgIHZvaWQgcmVjaGVja0F0S2V5d29yZChjb25zdCBVQ2hhciogc3RyLCBp
bnQgbGVuKTsKICAgICAKLSAgICAgICAgdm9pZCBjbGVhclByb3BlcnRpZXMoKTsKLQogICAgICAg
ICB2b2lkIHNldHVwUGFyc2VyKGNvbnN0IGNoYXIqIHByZWZpeCwgY29uc3QgU3RyaW5nJiwgY29u
c3QgY2hhciogc3VmZml4KTsKIAogICAgICAgICBib29sIGluU2hvcnRoYW5kKCkgY29uc3QgeyBy
ZXR1cm4gbV9pblBhcnNlU2hvcnRoYW5kOyB9CmRpZmYgLS1naXQgYS9XZWJDb3JlL2Nzcy9DU1NT
ZWxlY3Rvci5jcHAgYi9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvci5jcHAKaW5kZXggZWU5Yzg0NjVj
NjMyNjE2MDlkYmRhZDk4ZDkzZmRkM2UzMmE1ZjI0Zi4uNzQ3YTA1NDllMTRmYzE0MjgzMmE5NTY4
ZDA3ZWRmZjk5NjE0N2I1ZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3IuY3Bw
CisrKyBiL1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9yLmNwcApAQCAtNDI0LDEzICs0MjQsMTQgQEAg
Q1NTU2VsZWN0b3I6OlBzZXVkb1R5cGUgQ1NTU2VsZWN0b3I6OnBhcnNlUHNldWRvVHlwZShjb25z
dCBBdG9taWNTdHJpbmcmIG5hbWUpCiAKIHZvaWQgQ1NTU2VsZWN0b3I6OmV4dHJhY3RQc2V1ZG9U
eXBlKCkgY29uc3QKIHsKLSAgICBpZiAobV9tYXRjaCAhPSBQc2V1ZG9DbGFzcyAmJiBtX21hdGNo
ICE9IFBzZXVkb0VsZW1lbnQpCisgICAgaWYgKG1fbWF0Y2ggIT0gUHNldWRvQ2xhc3MgJiYgbV9t
YXRjaCAhPSBQc2V1ZG9FbGVtZW50ICYmIG1fbWF0Y2ggIT0gUGFnZVBzZXVkb0NsYXNzKQogICAg
ICAgICByZXR1cm47CiAKICAgICBtX3BzZXVkb1R5cGUgPSBwYXJzZVBzZXVkb1R5cGUobV92YWx1
ZSk7CiAKICAgICBib29sIGVsZW1lbnQgPSBmYWxzZTsgLy8gcHNldWRvLWVsZW1lbnQKICAgICBi
b29sIGNvbXBhdCA9IGZhbHNlOyAvLyBzaW5nbGUgY29sb24gY29tcGF0YmlsaXR5IG1vZGUKKyAg
ICBib29sIGlzUGFnZVBzZXVkb0NsYXNzID0gZmFsc2U7IC8vIFBhZ2UgcHNldWRvLWNsYXNzCiAK
ICAgICBzd2l0Y2ggKG1fcHNldWRvVHlwZSkgewogICAgIGNhc2UgUHNldWRvQWZ0ZXI6CkBAIC01
MjksMTIgKzUzMCwxNSBAQCB2b2lkIENTU1NlbGVjdG9yOjpleHRyYWN0UHNldWRvVHlwZSgpIGNv
bnN0CiAgICAgY2FzZSBQc2V1ZG9GaXJzdFBhZ2U6CiAgICAgY2FzZSBQc2V1ZG9MZWZ0UGFnZToK
ICAgICBjYXNlIFBzZXVkb1JpZ2h0UGFnZToKLSAgICAgICAgLy8gRklYTUU6IFRoZXNlIHNob3Vs
ZCBvbmx5IGJlIGFsbG93ZWQgaW4gQHBhZ2UgcnVsZXMuIERpc2FibGVkIHRoZW0gYWx0b2dldGhl
ciB1bnRpbCB0aGF0J3MgaW1wbGVtZW50ZWQgY29ycmVjdGx5LgotICAgICAgICBtX3BzZXVkb1R5
cGUgPSBQc2V1ZG9Vbmtub3duOwotICAgICAgICByZXR1cm47CisgICAgICAgIGlzUGFnZVBzZXVk
b0NsYXNzID0gdHJ1ZTsKKyAgICAgICAgYnJlYWs7CiAgICAgfQogCi0gICAgaWYgKG1fbWF0Y2gg
PT0gUHNldWRvQ2xhc3MgJiYgZWxlbWVudCkgeworICAgIGJvb2wgbWF0Y2hQYWdlUHNldWRvQ2xh
c3MgPSAobV9tYXRjaCA9PSBQYWdlUHNldWRvQ2xhc3MpOworCisgICAgaWYgKG1hdGNoUGFnZVBz
ZXVkb0NsYXNzICE9IGlzUGFnZVBzZXVkb0NsYXNzKQorICAgICAgICBtX3BzZXVkb1R5cGUgPSBQ
c2V1ZG9Vbmtub3duOworICAgIGVsc2UgaWYgKG1fbWF0Y2ggPT0gUHNldWRvQ2xhc3MgJiYgZWxl
bWVudCkgewogICAgICAgICBpZiAoIWNvbXBhdCkKICAgICAgICAgICAgIG1fcHNldWRvVHlwZSA9
IFBzZXVkb1Vua25vd247CiAgICAgICAgIGVsc2UKQEAgLTU4Niw3ICs1OTAsNyBAQCBTdHJpbmcg
Q1NTU2VsZWN0b3I6OnNlbGVjdG9yVGV4dCgpIGNvbnN0CiAgICAgICAgIH0gZWxzZSBpZiAoY3Mt
Pm1fbWF0Y2ggPT0gQ1NTU2VsZWN0b3I6OkNsYXNzKSB7CiAgICAgICAgICAgICBzdHIgKz0gIi4i
OwogICAgICAgICAgICAgc3RyICs9IGNzLT5tX3ZhbHVlOwotICAgICAgICB9IGVsc2UgaWYgKGNz
LT5tX21hdGNoID09IENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzcykgeworICAgICAgICB9IGVsc2Ug
aWYgKGNzLT5tX21hdGNoID09IENTU1NlbGVjdG9yOjpQc2V1ZG9DbGFzcyB8fCBjcy0+bV9tYXRj
aCA9PSBDU1NTZWxlY3Rvcjo6UGFnZVBzZXVkb0NsYXNzKSB7CiAgICAgICAgICAgICBzdHIgKz0g
IjoiOwogICAgICAgICAgICAgc3RyICs9IGNzLT5tX3ZhbHVlOwogICAgICAgICAgICAgaWYgKGNz
LT5wc2V1ZG9UeXBlKCkgPT0gUHNldWRvTm90KSB7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2Nzcy9D
U1NTZWxlY3Rvci5oIGIvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3IuaAppbmRleCA4Zjg0YjA1OGE2
MTRiYzU5OTc2ZTFiZjI1ODIwNzk4MWJjOTMyNzMyLi5lNDFkNDk4ZTI4MmI0MTAxODAwNzVhZTUy
Mjg3NzZkMzY3YWEzMmYwIDEwMDY0NAotLS0gYS9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvci5oCisr
KyBiL1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9yLmgKQEAgLTg1LDkgKzg1LDEwIEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKICAgICAgICAgICAgIEh5cGhlbiwKICAgICAgICAgICAgIFBzZXVkb0NsYXNz
LAogICAgICAgICAgICAgUHNldWRvRWxlbWVudCwKLSAgICAgICAgICAgIENvbnRhaW4sICAgLy8g
Y3NzMzogRVtmb28qPSJiYXIiXQotICAgICAgICAgICAgQmVnaW4sICAgICAvLyBjc3MzOiBFW2Zv
b149ImJhciJdCi0gICAgICAgICAgICBFbmQgICAgICAgIC8vIGNzczM6IEVbZm9vJD0iYmFyIl0K
KyAgICAgICAgICAgIENvbnRhaW4sIC8vIGNzczM6IEVbZm9vKj0iYmFyIl0KKyAgICAgICAgICAg
IEJlZ2luLCAvLyBjc3MzOiBFW2Zvb149ImJhciJdCisgICAgICAgICAgICBFbmQsIC8vIGNzczM6
IEVbZm9vJD0iYmFyIl0KKyAgICAgICAgICAgIFBhZ2VQc2V1ZG9DbGFzcwogICAgICAgICB9Owog
CiAgICAgICAgIGVudW0gUmVsYXRpb24gewpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9jc3MvQ1NTU3R5
bGVTZWxlY3Rvci5jcHAgYi9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcAppbmRleCA5
NmIzNmJiZDA4YmQ1MzVkODBiM2VlM2IzMTkyYWU3ZjVhN2I2NTNlLi4wYjQyODA5Yjk0ZTNkMWQ4
ZjUyZTIxM2VlMTFjMzIyNzdkMzQyYmM0IDEwMDY0NAotLS0gYS9XZWJDb3JlL2Nzcy9DU1NTdHls
ZVNlbGVjdG9yLmNwcAorKysgYi9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcApAQCAt
MjU1NCwxMSArMjU1NCw2IEBAIGJvb2wgQ1NTU3R5bGVTZWxlY3Rvcjo6U2VsZWN0b3JDaGVja2Vy
OjpjaGVja09uZVNlbGVjdG9yKENTU1NlbGVjdG9yKiBzZWwsIEVsZW1lCiAgICAgICAgICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAg
fQotICAgICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6UHNldWRvTGVmdFBhZ2U6Ci0gICAgICAg
ICAgICBjYXNlIENTU1NlbGVjdG9yOjpQc2V1ZG9SaWdodFBhZ2U6Ci0gICAgICAgICAgICBjYXNl
IENTU1NlbGVjdG9yOjpQc2V1ZG9GaXJzdFBhZ2U6Ci0gICAgICAgICAgICAgICAgLy8gUGFnZSBt
ZWRpYSByZWxhdGVkIHBzZXVkby1jbGFzc2VzIGFyZSBub3QgaGFuZGxlZCB5ZXQuCi0gICAgICAg
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6UHNl
dWRvVW5rbm93bjoKICAgICAgICAgICAgIGNhc2UgQ1NTU2VsZWN0b3I6OlBzZXVkb05vdFBhcnNl
ZDoKICAgICAgICAgICAgIGRlZmF1bHQ6Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>55664</attachid>
            <date>2010-05-10 22:40:01 -0700</date>
            <delta_ts>2010-05-10 23:07:19 -0700</delta_ts>
            <desc>Make CSS parser properly handle page-only pseudo-classes.</desc>
            <filename>bug-38731-20100510223959.patch</filename>
            <type>text/plain</type>
            <size>15445</size>
            <attacher name="Yuzo Fujishima">yuzo</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA1NDBmMjQwYTMyMDkxNWUzMTU3M2VmMWE0NTU2NGNiZTFlOGJlMWZmLi4wZTE4ZTc4
NjE5MTgxOGI0ZWY1ZTAwNDQ0ZjBmOWY2Mjk3NmZmYzRmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAK
KzIwMTAtMDUtMTAgIFl1em8gRnVqaXNoaW1hICA8eXV6b0Bnb29nbGUuY29tPgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1ha2UgQ1NTIFBhcnNlciBw
cm9wZXJseSBoYW5kbGUgb25seS1mb3ItcGFnZXMgcHNldWRvLWNsYXNzZXMuCisKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM4NzMxCisKKyAgICAgICAg
KiBmYXN0L2Nzcy9taXNwbGFjZWQtcGFnZWQtbWVkaWEtcHNldWRvLWV4cGVjdGVkLnR4dDogUmVt
b3ZlZC4KKyAgICAgICAgKiBmYXN0L2Nzcy9taXNwbGFjZWQtcGFnZWQtbWVkaWEtcHNldWRvLmh0
bWw6IFJlbW92ZWQuCisgICAgICAgICogcHJpbnRpbmcvcGFnZS1ydWxlLWNzcy10ZXh0LWV4cGVj
dGVkLnR4dDoKKyAgICAgICAgKiBwcmludGluZy9wYWdlLXJ1bGUtY3NzLXRleHQuaHRtbDoKKyAg
ICAgICAgKiBwcmludGluZy9wc2V1ZG8tY2xhc3Mtb3V0c2lkZS1wYWdlLWV4cGVjdGVkLnR4dDoK
KyAgICAgICAgKiBwcmludGluZy9wc2V1ZG8tY2xhc3Mtb3V0c2lkZS1wYWdlLmh0bWw6CisKIDIw
MTAtMDUtMTAgIEVyaWMgU2VpZGVsICA8ZXJpY0B3ZWJraXQub3JnPgogCiAgICAgICAgIFVucmV2
aWV3ZWQsIGp1c3QgcmVtb3ZpbmcgbmV3bGluZSBmcm9tIC1leHBlY3RlZC50eHQgZmlsZQpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jc3MvbWlzcGxhY2VkLXBhZ2VkLW1lZGlhLXBzZXVk
by1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9taXNwbGFjZWQtcGFnZWQtbWVk
aWEtcHNldWRvLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWQ4
NTU4NTVmMTk2OWUzYjEwMjE3ZTYyMWFiNzdhYzg1MmMyOThmYy4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9taXNwbGFj
ZWQtcGFnZWQtbWVkaWEtcHNldWRvLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDMg
KzAsMCBAQAotVGVzdCBmb3IgYnVnIDM4Njk3OiBSZXBseWluZyBvbiByZWRkaXQuY29tIG5vIGxv
bmdlciB3b3Jrcy4KLQotUEFTUwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jc3MvbWlz
cGxhY2VkLXBhZ2VkLW1lZGlhLXBzZXVkby5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MvbWlz
cGxhY2VkLXBhZ2VkLW1lZGlhLXBzZXVkby5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCBhNDVkOTU0OTE3MmY1YjIyNGZlYTVmNWZlOGRlNGQzYWNiOWRmZGVkLi4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2Zhc3QvY3Nz
L21pc3BsYWNlZC1wYWdlZC1tZWRpYS1wc2V1ZG8uaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDE1
ICswLDAgQEAKLTxib2R5PgotPHA+VGVzdCBmb3IgPGEgaHJlZj0iaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTM4Njk3Ij5idWcgMzg2OTc8YS8+OgotUmVwbHlpbmcgb24g
cmVkZGl0LmNvbSBubyBsb25nZXIgd29ya3MuPC9wPgotPHNjcmlwdD4KLWlmICh3aW5kb3cubGF5
b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgp
OwotCi10cnkgewotICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoIi5sb2dpbi1wb3B1cDpm
aXJzdCIpOwotICAgIGRvY3VtZW50LndyaXRlKCJGQUlMIik7Ci19IGNhdGNoIChFWCkgewotICAg
IGRvY3VtZW50LndyaXRlKCJQQVNTIik7Ci19Ci08L3NjcmlwdD4KLTwvYm9keT4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3ByaW50aW5nL3BhZ2UtcnVsZS1jc3MtdGV4dC1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9wcmludGluZy9wYWdlLXJ1bGUtY3NzLXRleHQtZXhwZWN0ZWQudHh0Cmlu
ZGV4IDcxYzE0NmIwM2I1OTQ5YTU3ZjYyZWJkOWZlOWVkMGFmYjM5MWY1ODYuLjE5Y2Q4MTNhNjMw
MDgwM2NhMjQ1ZDkyNDk3YzkxYjJiYjhmMmU5YWMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3By
aW50aW5nL3BhZ2UtcnVsZS1jc3MtdGV4dC1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMv
cHJpbnRpbmcvcGFnZS1ydWxlLWNzcy10ZXh0LWV4cGVjdGVkLnR4dApAQCAtMSw1ICsxLDEwIEBA
CiBAcGFnZSB7IG1hcmdpbi10b3A6IDVjbTsgbWFyZ2luLWJvdHRvbTogMTBjbTsgfQorQHBhZ2Ug
OmxlZnQgeyBtYXJnaW4tcmlnaHQ6IDNjbTsgfQorQHBhZ2UgOnJpZ2h0IHsgbWFyZ2luLWxlZnQ6
IDNjbTsgfQorQHBhZ2UgOmZpcnN0IHsgYm9yZGVyLXRvcC13aWR0aDogMXB4OyBib3JkZXItcmln
aHQtd2lkdGg6IDFweDsgYm9yZGVyLWJvdHRvbS13aWR0aDogMXB4OyBib3JkZXItbGVmdC13aWR0
aDogMXB4OyB9CiBAcGFnZSBoZWxsbyB7IGNvbG9yOiBncmVlbjsgfQorQHBhZ2Ugd29ybGQ6cmln
aHQgeyBiYWNrZ3JvdW5kLWNvbG9yOiBncmVlbjsgfQorQG1lZGlhIHByaW50IHsgQHBhZ2Ugc29t
ZXBhZ2U6Zmlyc3QgeyBtYXJnaW4tdG9wOiAzY207IG1hcmdpbi1yaWdodDogM2NtOyBtYXJnaW4t
Ym90dG9tOiAzY207IG1hcmdpbi1sZWZ0OiAzY207IH0gfQogQHBhZ2UgYXV0b19wYWdlIHsgc2l6
ZTogYXV0bzsgfQogQHBhZ2Ugc3F1YXJlX3BhZ2UgeyBzaXplOiA0aW47IH0KIEBwYWdlIGxldHRl
cl9wYWdlIHsgc2l6ZTogbGV0dGVyOyB9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wcmludGlu
Zy9wYWdlLXJ1bGUtY3NzLXRleHQuaHRtbCBiL0xheW91dFRlc3RzL3ByaW50aW5nL3BhZ2UtcnVs
ZS1jc3MtdGV4dC5odG1sCmluZGV4IGU4YTJhZjEzMzdiYjM4NTUxZjQ3NjcxOGZkZTdlYjJlZTU2
YjZhNzkuLjg4MTM5MzBmYjhkZThmYzZmYWNkMjcxNTU1ZDZkOTM1ZmMxZTc1ZDQgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL3ByaW50aW5nL3BhZ2UtcnVsZS1jc3MtdGV4dC5odG1sCisrKyBiL0xh
eW91dFRlc3RzL3ByaW50aW5nL3BhZ2UtcnVsZS1jc3MtdGV4dC5odG1sCkBAIC0yLDYgKzIsMTMg
QEAKIDxodG1sPgogPGhlYWQ+CiA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgorQHBhZ2UgOnZpc2l0
ZWQgeyAvKiA6dmlzaXRlZCBpcyBpbnZhbGlkIGZvciBAcGFnZSAqLworICAgIGNvbG9yOiByZWQ7
Cit9CitAcGFnZSBhX3BhZ2VfbmFtZTp2aXNpdGVkIHsgLyogOnZpc2l0ZWQgaXMgaW52YWxpZCBm
b3IgQHBhZ2UgKi8KKyAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZWQ7Cit9CisKIEBwYWdlIHsKICAg
ICBtYXJnaW4tdG9wOjVjbTsKICAgICBtYXJnaW4tYm90dG9tOjEwY207CkBAIC0xOSw3ICsyNiw3
IEBACiAgICAgY29sb3I6Z3JlZW47CiB9CiBAcGFnZSB3b3JsZDpyaWdodCB7Ci0gICAgY29sb3I6
cmVkOworICAgIGJhY2tncm91bmQtY29sb3I6Z3JlZW47CiB9CiBAbWVkaWEgcHJpbnQgewogICAg
IEBwYWdlIHNvbWVwYWdlOmZpcnN0IHsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3ByaW50aW5n
L3BzZXVkby1jbGFzcy1vdXRzaWRlLXBhZ2UtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcHJp
bnRpbmcvcHNldWRvLWNsYXNzLW91dHNpZGUtcGFnZS1leHBlY3RlZC50eHQKaW5kZXggMWQ2NDdl
MDc1MjFiZTc1NTIyOGFjZWIzYWRmZWFjMzk4M2Y2YmZhZC4uZjQ1OWYwNDk4ODg2MjcxMmIyNTRl
OTZlMWUyYzg0NjBhMmY5NGMyMCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcHJpbnRpbmcvcHNl
dWRvLWNsYXNzLW91dHNpZGUtcGFnZS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvcHJp
bnRpbmcvcHNldWRvLWNsYXNzLW91dHNpZGUtcGFnZS1leHBlY3RlZC50eHQKQEAgLTEsNSArMSwx
MSBAQAogVGVzdCBjYXNlIGZvciBTSE9VTEQgTkVWRVIgQkUgUkVBQ0hFRCBhc3NlcnRpb24gbG9h
ZGluZyBmb3JiZXMuY29tLiBQYWdlZCBtZWRpYSByZWxhdGVkIHBzZXVkby1jbGFzc2VzIHNob3Vs
ZCBiZSBpZ25vcmVkIG91dHNpZGUgb2YgQHBhZ2UuCiAKLVlvdSBzaG91bGQgc2VlIGEgZ3JlZW4g
Ym94LgorWW91IHNob3VsZCBzZWUgYSBncmVlbiBib3ggZm9yIFRlc3QgMSwgIlRlc3QgbjogUEFT
UyIgZm9yIHRoZSByZXN0LgogCitUZXN0IDI6IFBBU1MKK1Rlc3QgMzogUEFTUworVGVzdCA0OiBQ
QVNTCitUZXN0IDU6IFBBU1MKK1Rlc3QgNjogUEFTUworVGVzdCA3OiBQQVNTCiBQQVNTCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9wcmludGluZy9wc2V1ZG8tY2xhc3Mtb3V0c2lkZS1wYWdlLmh0
bWwgYi9MYXlvdXRUZXN0cy9wcmludGluZy9wc2V1ZG8tY2xhc3Mtb3V0c2lkZS1wYWdlLmh0bWwK
aW5kZXggOWQ4OGEwMzMzMWQxYTM0ZjBhZGNhNWY1ZGQ3NzY4ODFjYmNkOWI2Mi4uMTJiOTkyYWY1
MmVkMDQzNzUxNTMxNWE4ODNjZjJiYjcwYzA4OTRiNSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
cHJpbnRpbmcvcHNldWRvLWNsYXNzLW91dHNpZGUtcGFnZS5odG1sCisrKyBiL0xheW91dFRlc3Rz
L3ByaW50aW5nL3BzZXVkby1jbGFzcy1vdXRzaWRlLXBhZ2UuaHRtbApAQCAtNiwxOSArNiwyMiBA
QAogICAgICNncmVlbiB7CiAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IGdyZWVuOwogICAgIH0K
LSAgICAjdGVzdCB7CisgICAgI3Rlc3QxIHsKICAgICAgICAgd2lkdGg6IDEwMHB4OwogICAgICAg
ICBoZWlnaHQ6IDEwMHB4OwogICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiBncmVlbjsKICAgICB9
CisgICAgLmV4Y2VwdGlvbl90ZXN0IHsKKyAgICAgICAgY29sb3I6IHJlZDsKKyAgICB9CiAgICAg
LyogVGhlc2Ugc2VsZWN0b3JzIHNob3VsZCBiZSBpZ25vcmVkICovCi0gICAgI3Rlc3Q6Zmlyc3Qg
eworICAgICN0ZXN0MTpmaXJzdCB7CiAgICAgICAgIGJhY2tncm91bmQtY29sb3I6IHJlZDsKICAg
ICB9Ci0gICAgI3Rlc3Q6bGVmdCB7CisgICAgI3Rlc3QxOmxlZnQgewogICAgICAgICBiYWNrZ3Jv
dW5kLWNvbG9yOiByZWQ7CiAgICAgfQotICAgICN0ZXN0OnJpZ2h0IHsKKyAgICAjdGVzdDE6cmln
aHQgewogICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZWQ7CiAgICAgfQogPC9zdHlsZT4KQEAg
LTI5LDExICszMiwyNCBAQAogICAgIGZ1bmN0aW9uIHRlc3QoKQogICAgIHsKICAgICAgICAgdmFy
IGV4cGVjdGVkID0gZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiZ3Jl
ZW4iKSwgbnVsbCkuYmFja2dyb3VuZENvbG9yOwotICAgICAgICB2YXIgYWN0dWFsID0gZ2V0Q29t
cHV0ZWRTdHlsZShkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGVzdCIpLCBudWxsKS5iYWNrZ3Jv
dW5kQ29sb3I7CisgICAgICAgIHZhciBhY3R1YWwgPSBnZXRDb21wdXRlZFN0eWxlKGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCJ0ZXN0MSIpLCBudWxsKS5iYWNrZ3JvdW5kQ29sb3I7CiAgICAgICAg
IHZhciByZXN1bHQgPSAiUEFTUyI7CiAgICAgICAgIGlmIChhY3R1YWwgIT0gZXhwZWN0ZWQpCiAg
ICAgICAgICAgICByZXN1bHQgPSAiRXhwZWN0ZWQgIiArIGV4cGVjdGVkICsgIiwgYnV0IGNvbWVz
ICIgKyBhY3R1YWw7CiAgICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJyZXN1bHQiKS5p
bm5lckhUTUwgPSByZXN1bHQ7CisKKyAgICAgICAgdmFyIHBzZXVkb0NsYXNzZXMgPSBbIjpmaXJz
dCIsICI6bGVmdCIsICI6cmlnaHQiLCAiOjpmaXJzdCIsICI6OmxlZnQiLCAiOjpyaWdodCJdOwor
ICAgICAgICBmb3IgKHZhciB0ZXN0SWQgPSAyOyB0ZXN0SWQgPD0gNzsgdGVzdElkKyspIHsKKyAg
ICAgICAgICAgIHZhciBlbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRlc3QiICsg
dGVzdElkKTsKKyAgICAgICAgICAgIHZhciBwc2V1ZG9DbGFzcyA9IHBzZXVkb0NsYXNzZXNbdGVz
dElkIC0gMl07CisgICAgICAgICAgICB0cnkgeworICAgICAgICAgICAgICAgIGRvY3VtZW50LnF1
ZXJ5U2VsZWN0b3JBbGwoIi5sb2dpbi1wb3B1cCIgKyBwc2V1ZG9DbGFzcyk7CisgICAgICAgICAg
ICAgICAgZWxlbWVudC5pbm5lckhUTUwgPSAiVGVzdCAiICsgdGVzdElkICsgIjogRkFJTCI7Cisg
ICAgICAgICAgICB9IGNhdGNoIChlKSB7CisgICAgICAgICAgICAgICAgZWxlbWVudC5pbm5lckhU
TUwgPSAiVGVzdCAiICsgdGVzdElkICsgIjogUEFTUyI7CisgICAgICAgICAgICAgICAgZWxlbWVu
dC5zdHlsZS5jb2xvciA9ICJncmVlbiI7CisgICAgICAgICAgICB9CisgICAgICAgIH0KICAgICB9
CiA8L3NjcmlwdD4KIDwvaGVhZD4KQEAgLTQ0LDEwICs2MCwxNiBAQCBUZXN0IGNhc2UgZm9yIDxh
IGhyZWY9Imh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0zODI3MiI+U0hP
VUxEIE5FVgogUGFnZWQgbWVkaWEgcmVsYXRlZCBwc2V1ZG8tY2xhc3NlcyBzaG91bGQgYmUgaWdu
b3JlZCBvdXRzaWRlIG9mIEBwYWdlLgogCiA8cD4KLVlvdSBzaG91bGQgc2VlIGEgZ3JlZW4gYm94
LgorWW91IHNob3VsZCBzZWUgYSBncmVlbiBib3ggZm9yIFRlc3QgMSwgIlRlc3QgbjogUEFTUyIg
Zm9yIHRoZSByZXN0LgogCiA8ZGl2IGlkPSJncmVlbiI+PC9kaXY+Ci08ZGl2IGlkPSJ0ZXN0Ij48
L2Rpdj4KKzxkaXYgaWQ9InRlc3QxIj48L2Rpdj4KKzxkaXYgaWQ9InRlc3QyIiBjbGFzcz0iZXhj
ZXB0aW9uX3Rlc3QiPlRlc3QgMjogRGlkbid0IHJ1bjwvZGl2PgorPGRpdiBpZD0idGVzdDMiIGNs
YXNzPSJleGNlcHRpb25fdGVzdCI+VGVzdCAzOiBEaWRuJ3QgcnVuPC9kaXY+Cis8ZGl2IGlkPSJ0
ZXN0NCIgY2xhc3M9ImV4Y2VwdGlvbl90ZXN0Ij5UZXN0IDQ6IERpZG4ndCBydW48L2Rpdj4KKzxk
aXYgaWQ9InRlc3Q1IiBjbGFzcz0iZXhjZXB0aW9uX3Rlc3QiPlRlc3QgNTogRGlkbid0IHJ1bjwv
ZGl2PgorPGRpdiBpZD0idGVzdDYiIGNsYXNzPSJleGNlcHRpb25fdGVzdCI+VGVzdCA2OiBEaWRu
J3QgcnVuPC9kaXY+Cis8ZGl2IGlkPSJ0ZXN0NyIgY2xhc3M9ImV4Y2VwdGlvbl90ZXN0Ij5UZXN0
IDc6IERpZG4ndCBydW48L2Rpdj4KIDxkaXYgaWQ9InJlc3VsdCI+PC9kaXY+CiAKIDwvYm9keT4K
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MWRiZmY1NThlYjdlNTZlNWJjY2E5N2M5ZjRmZmI5ZjZjNTVkMDYxMC4uMjBlM2MwZDc3MDhmMjc0
NzRjNzkyZTNhMjI3Y2QxNWI2Njk5MTFlNyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cK
KysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyNyBAQAorMjAxMC0wNS0xMCAgWXV6
byBGdWppc2hpbWEgIDx5dXpvQGdvb2dsZS5jb20+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgTWFrZSBDU1MgUGFyc2VyIHByb3Blcmx5IGhhbmRsZSBv
bmx5LWZvci1wYWdlcyBwc2V1ZG8tY2xhc3Nlcy4KKworICAgICAgICBBIG5ldyBNYXRjaCBjYXRl
Z29yeSwgUGFnZVBzZXVkb0NsYXNzLCBpcyBpbnRyb2R1Y2VkIHRvIGRpc3Rpbmd1aXNoCisgICAg
ICAgIG9ubHktZm9yLXBhZ2VzIHBzZXVkby1jbGFzc2VzIGZyb20gb3RoZXJzLiBBIG5ldyBzeW1i
b2wsIHBzZXVkb19wYWdlLAorICAgICAgICBpcyBpbnRyb2R1Y2VkIHRvIGhhbmRsZSB0aGVtIHNl
cGFyYXRlbHkuCisKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTM4NzMxCisKKyAgICAgICAgKiBjc3MvQ1NTR3JhbW1hci55OgorICAgICAgICAqIGNzcy9D
U1NQYXJzZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTUGFyc2VyOjpjcmVhdGVNYXJnaW5B
dFJ1bGUpOgorICAgICAgICAqIGNzcy9DU1NQYXJzZXIuaDoKKyAgICAgICAgKiBjc3MvQ1NTU2Vs
ZWN0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU2VsZWN0b3I6OmV4dHJhY3RQc2V1ZG9U
eXBlKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1NlbGVjdG9yOjpzZWxlY3RvclRleHQpOgorICAg
ICAgICAqIGNzcy9DU1NTZWxlY3Rvci5oOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU2VsZWN0b3I6
Oik6CisgICAgICAgICogY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6Q1NTU3R5bGVTZWxlY3Rvcjo6U2VsZWN0b3JDaGVja2VyOjpjaGVja09uZVNlbGVjdG9yKToK
KwogMjAxMC0wNS0xMCAgRHVtaXRydSBEYW5pbGl1YyAgPGR1bWlAY2hyb21pdW0ub3JnPgogCiAg
ICAgICAgIFJldmlld2VkIGJ5IEJyYWR5IEVpZHNvbi4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvY3Nz
L0NTU0dyYW1tYXIueSBiL1dlYkNvcmUvY3NzL0NTU0dyYW1tYXIueQppbmRleCA3Nzk4MjY0Yzcy
NWMxMmZmN2JmYzVmOGYzYmJkYmU0NjI5M2ZhNzA1Li4zN2M1Mzg1NGNlYjRmMDZhMzRiYzAzY2Ix
NmE3N2QxYzc1YWI4MmYwIDEwMDY0NAotLS0gYS9XZWJDb3JlL2Nzcy9DU1NHcmFtbWFyLnkKKysr
IGIvV2ViQ29yZS9jc3MvQ1NTR3JhbW1hci55CkBAIC0yNTcsNiArMjU3LDcgQEAgc3RhdGljIGlu
dCBjc3N5eWxleChZWVNUWVBFKiB5eWx2YWwsIHZvaWQqIHBhcnNlcikKICV0eXBlIDxzZWxlY3Rv
cj4gY2xhc3MKICV0eXBlIDxzZWxlY3Rvcj4gYXR0cmliCiAldHlwZSA8c2VsZWN0b3I+IHBzZXVk
bworJXR5cGUgPHNlbGVjdG9yPiBwc2V1ZG9fcGFnZQogJXR5cGUgPHNlbGVjdG9yPiBwYWdlX3Nl
bGVjdG9yCiAKICV0eXBlIDxib29sZWFuPiBkZWNsYXJhdGlvbl9saXN0CkBAIC03NTUsNyArNzU2
LDE0IEBAIHBhZ2U6CiAgICAgUEFHRV9TWU0gbWF5YmVfc3BhY2UgcGFnZV9zZWxlY3RvciBtYXli
ZV9zcGFjZQogICAgICd7JyBtYXliZV9zcGFjZSBkZWNsYXJhdGlvbnNfYW5kX21hcmdpbnMgY2xv
c2luZ19icmFjZSB7CiAgICAgICAgIENTU1BhcnNlciogcCA9IHN0YXRpY19jYXN0PENTU1BhcnNl
cio+KHBhcnNlcik7Ci0gICAgICAgICQkID0gcC0+Y3JlYXRlUGFnZVJ1bGUocC0+c2lua0Zsb2F0
aW5nU2VsZWN0b3IoJDMpKTsKKyAgICAgICAgaWYgKCQzKQorICAgICAgICAgICAgJCQgPSBwLT5j
cmVhdGVQYWdlUnVsZShwLT5zaW5rRmxvYXRpbmdTZWxlY3RvcigkMykpOworICAgICAgICBlbHNl
IHsKKyAgICAgICAgICAgIC8vIENsZWFyIHByb3BlcnRpZXMgaW4gdGhlIGludmFsaWQgQHBhZ2Ug
cnVsZS4KKyAgICAgICAgICAgIHAtPmNsZWFyUHJvcGVydGllcygpOworICAgICAgICAgICAgLy8g
QWxzbyBjbGVhciBtYXJnaW4gYXQtcnVsZXMgaGVyZSBvbmNlIHdlIGZ1bGx5IGltcGxlbWVudCBt
YXJnaW4gYXQtcnVsZXMgcGFyc2luZy4KKyAgICAgICAgICAgICQkID0gMDsKKyAgICAgICAgfQog
ICAgIH0KICAgICB8IFBBR0VfU1lNIGVycm9yIGludmFsaWRfYmxvY2sgewogICAgICAgJCQgPSAw
OwpAQCAtNzcxLDEzICs3NzksMTMgQEAgcGFnZV9zZWxlY3RvcjoKICAgICAgICAgJCQgPSBwLT5j
cmVhdGVGbG9hdGluZ1NlbGVjdG9yKCk7CiAgICAgICAgICQkLT5tX3RhZyA9IFF1YWxpZmllZE5h
bWUobnVsbEF0b20sICQxLCBwLT5tX2RlZmF1bHROYW1lc3BhY2UpOwogICAgIH0KLSAgICB8IElE
RU5UIHBzZXVkbyB7CisgICAgfCBJREVOVCBwc2V1ZG9fcGFnZSB7CiAgICAgICAgIENTU1BhcnNl
ciogcCA9IHN0YXRpY19jYXN0PENTU1BhcnNlcio+KHBhcnNlcik7CiAgICAgICAgICQkID0gJDI7
CiAgICAgICAgIGlmICgkJCkKICAgICAgICAgICAgICQkLT5tX3RhZyA9IFF1YWxpZmllZE5hbWUo
bnVsbEF0b20sICQxLCBwLT5tX2RlZmF1bHROYW1lc3BhY2UpOwogICAgIH0KLSAgICB8IHBzZXVk
byB7CisgICAgfCBwc2V1ZG9fcGFnZSB7CiAgICAgICAgICQkID0gJDE7CiAgICAgfQogICAgIHwg
LyogZW1wdHkgKi8gewpAQCAtMTE2Nyw2ICsxMTc1LDE3IEBAIGlkZW50X29yX3N0cmluZzoKICAg
fCBTVFJJTkcKICAgICA7CiAKK3BzZXVkb19wYWdlOgorICAgICc6JyBJREVOVCB7CisgICAgICAg
ICQkID0gc3RhdGljX2Nhc3Q8Q1NTUGFyc2VyKj4ocGFyc2VyKS0+Y3JlYXRlRmxvYXRpbmdTZWxl
Y3RvcigpOworICAgICAgICAkJC0+bV9tYXRjaCA9IENTU1NlbGVjdG9yOjpQYWdlUHNldWRvQ2xh
c3M7CisgICAgICAgICQyLmxvd2VyKCk7CisgICAgICAgICQkLT5tX3ZhbHVlID0gJDI7CisgICAg
ICAgIENTU1NlbGVjdG9yOjpQc2V1ZG9UeXBlIHR5cGUgPSAkJC0+cHNldWRvVHlwZSgpOworICAg
ICAgICBpZiAodHlwZSA9PSBDU1NTZWxlY3Rvcjo6UHNldWRvVW5rbm93bikKKyAgICAgICAgICAg
ICQkID0gMDsKKyAgICB9CisKIHBzZXVkbzoKICAgICAnOicgSURFTlQgewogICAgICAgICAkJCA9
IHN0YXRpY19jYXN0PENTU1BhcnNlcio+KHBhcnNlciktPmNyZWF0ZUZsb2F0aW5nU2VsZWN0b3Io
KTsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAgYi9XZWJDb3JlL2Nzcy9D
U1NQYXJzZXIuY3BwCmluZGV4IDZmN2NmMTJkZGQzNGM1YmE5MDkyZjRhZGE1MmJiY2E0NjYxMWIx
OWUuLjg1OTRkYTI5YjkzODcxMWI0MDhjMjJmNWZhYTZlNmM0NjdjYjczMzIgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAKKysrIGIvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNw
cApAQCAtNTM0Nyw2ICs1MzQ3LDcgQEAgQ1NTUnVsZSogQ1NTUGFyc2VyOjpjcmVhdGVNYXJnaW5B
dFJ1bGUoQ1NTU2VsZWN0b3I6Ok1hcmdpbkJveFR5cGUgLyogbWFyZ2luQm94ICoKICAgICAvLyBG
SVhNRTogSW1wbGVtZW50IG1hcmdpbiBhdC1ydWxlIGhlcmUsIHVzaW5nOgogICAgIC8vICAgICAg
ICAtIG1hcmdpbkJveDogbWFyZ2luIGJveAogICAgIC8vICAgICAgICAtIG1fcGFyc2VkUHJvcGVy
dGllczogcHJvcGVydGllcyBhdCBbbV9udW1QYXJzZWRQcm9wZXJ0aWVzQmVmb3JlTWFyZ2luQm94
LCBtX251bVBhcnNlZFByb3BlcnRpZXMpIGFyZSBmb3IgdGhpcyBhdC1ydWxlLgorICAgIC8vIERv
bid0IGZvcmdldCB0byBhbHNvIHVwZGF0ZSB0aGUgYWN0aW9uIGZvciBwYWdlIHN5bWJvbCBpbiBD
U1NHcmFtbWFyLnkgc3VjaCB0aGF0IG1hcmdpbiBhdC1ydWxlIGRhdGEgaXMgY2xlYXJlZCBpZiBw
YWdlX3NlbGVjdG9yIGlzIGludmFsaWQuCiAKICAgICBlbmREZWNsYXJhdGlvbnNGb3JNYXJnaW5C
b3goKTsKICAgICByZXR1cm4gMDsgLy8gdW50aWwgdGhpcyBtZXRob2QgaXMgaW1wbGVtZW50ZWQu
CmRpZmYgLS1naXQgYS9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuaCBiL1dlYkNvcmUvY3NzL0NTU1Bh
cnNlci5oCmluZGV4IDZlMDM1NGVmMzE5MWI4NmJlOTczYmJlOTM3M2UwNDExY2IyM2YyN2YuLmVi
OWUwMWExMDUzYjBkMmFiMDJkYzk1MmM5YmU1MTZiNTBhYWIxYTQgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvY3NzL0NTU1BhcnNlci5oCisrKyBiL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5oCkBAIC0yMDks
NiArMjA5LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIHZvaWQgdXBkYXRlTGFz
dFNlbGVjdG9yTGluZSgpIHsgbV9sYXN0U2VsZWN0b3JMaW5lID0gbV9saW5lOyB9CiAKKyAgICAg
ICAgdm9pZCBjbGVhclByb3BlcnRpZXMoKTsKKwogICAgICAgICBib29sIG1fc3RyaWN0OwogICAg
ICAgICBib29sIG1faW1wb3J0YW50OwogICAgICAgICBpbnQgbV9pZDsKQEAgLTI0NSw4ICsyNDcs
NiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgcHJpdmF0ZToKICAgICAgICAgdm9pZCByZWNo
ZWNrQXRLZXl3b3JkKGNvbnN0IFVDaGFyKiBzdHIsIGludCBsZW4pOwogICAgIAotICAgICAgICB2
b2lkIGNsZWFyUHJvcGVydGllcygpOwotCiAgICAgICAgIHZvaWQgc2V0dXBQYXJzZXIoY29uc3Qg
Y2hhciogcHJlZml4LCBjb25zdCBTdHJpbmcmLCBjb25zdCBjaGFyKiBzdWZmaXgpOwogCiAgICAg
ICAgIGJvb2wgaW5TaG9ydGhhbmQoKSBjb25zdCB7IHJldHVybiBtX2luUGFyc2VTaG9ydGhhbmQ7
IH0KZGlmZiAtLWdpdCBhL1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9yLmNwcCBiL1dlYkNvcmUvY3Nz
L0NTU1NlbGVjdG9yLmNwcAppbmRleCBlZTljODQ2NWM2MzI2MTYwOWRiZGFkOThkOTNmZGQzZTMy
YTVmMjRmLi41YWRkOTBiZWZhNjRmMjFmMGU1YWEyNTU2NmYzYjZhNmMzNzM0MjgxIDEwMDY0NAot
LS0gYS9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvci5jcHAKKysrIGIvV2ViQ29yZS9jc3MvQ1NTU2Vs
ZWN0b3IuY3BwCkBAIC00MjQsMTMgKzQyNCwxNCBAQCBDU1NTZWxlY3Rvcjo6UHNldWRvVHlwZSBD
U1NTZWxlY3Rvcjo6cGFyc2VQc2V1ZG9UeXBlKGNvbnN0IEF0b21pY1N0cmluZyYgbmFtZSkKIAog
dm9pZCBDU1NTZWxlY3Rvcjo6ZXh0cmFjdFBzZXVkb1R5cGUoKSBjb25zdAogewotICAgIGlmICht
X21hdGNoICE9IFBzZXVkb0NsYXNzICYmIG1fbWF0Y2ggIT0gUHNldWRvRWxlbWVudCkKKyAgICBp
ZiAobV9tYXRjaCAhPSBQc2V1ZG9DbGFzcyAmJiBtX21hdGNoICE9IFBzZXVkb0VsZW1lbnQgJiYg
bV9tYXRjaCAhPSBQYWdlUHNldWRvQ2xhc3MpCiAgICAgICAgIHJldHVybjsKIAogICAgIG1fcHNl
dWRvVHlwZSA9IHBhcnNlUHNldWRvVHlwZShtX3ZhbHVlKTsKIAogICAgIGJvb2wgZWxlbWVudCA9
IGZhbHNlOyAvLyBwc2V1ZG8tZWxlbWVudAogICAgIGJvb2wgY29tcGF0ID0gZmFsc2U7IC8vIHNp
bmdsZSBjb2xvbiBjb21wYXRiaWxpdHkgbW9kZQorICAgIGJvb2wgaXNQYWdlUHNldWRvQ2xhc3Mg
PSBmYWxzZTsgLy8gUGFnZSBwc2V1ZG8tY2xhc3MKIAogICAgIHN3aXRjaCAobV9wc2V1ZG9UeXBl
KSB7CiAgICAgY2FzZSBQc2V1ZG9BZnRlcjoKQEAgLTUyOSwxMiArNTMwLDE0IEBAIHZvaWQgQ1NT
U2VsZWN0b3I6OmV4dHJhY3RQc2V1ZG9UeXBlKCkgY29uc3QKICAgICBjYXNlIFBzZXVkb0ZpcnN0
UGFnZToKICAgICBjYXNlIFBzZXVkb0xlZnRQYWdlOgogICAgIGNhc2UgUHNldWRvUmlnaHRQYWdl
OgotICAgICAgICAvLyBGSVhNRTogVGhlc2Ugc2hvdWxkIG9ubHkgYmUgYWxsb3dlZCBpbiBAcGFn
ZSBydWxlcy4gRGlzYWJsZWQgdGhlbSBhbHRvZ2V0aGVyIHVudGlsIHRoYXQncyBpbXBsZW1lbnRl
ZCBjb3JyZWN0bHkuCi0gICAgICAgIG1fcHNldWRvVHlwZSA9IFBzZXVkb1Vua25vd247Ci0gICAg
ICAgIHJldHVybjsKKyAgICAgICAgaXNQYWdlUHNldWRvQ2xhc3MgPSB0cnVlOworICAgICAgICBi
cmVhazsKICAgICB9CiAKLSAgICBpZiAobV9tYXRjaCA9PSBQc2V1ZG9DbGFzcyAmJiBlbGVtZW50
KSB7CisgICAgYm9vbCBtYXRjaFBhZ2VQc2V1ZG9DbGFzcyA9IChtX21hdGNoID09IFBhZ2VQc2V1
ZG9DbGFzcyk7CisgICAgaWYgKG1hdGNoUGFnZVBzZXVkb0NsYXNzICE9IGlzUGFnZVBzZXVkb0Ns
YXNzKQorICAgICAgICBtX3BzZXVkb1R5cGUgPSBQc2V1ZG9Vbmtub3duOworICAgIGVsc2UgaWYg
KG1fbWF0Y2ggPT0gUHNldWRvQ2xhc3MgJiYgZWxlbWVudCkgewogICAgICAgICBpZiAoIWNvbXBh
dCkKICAgICAgICAgICAgIG1fcHNldWRvVHlwZSA9IFBzZXVkb1Vua25vd247CiAgICAgICAgIGVs
c2UKQEAgLTU4Niw3ICs1ODksNyBAQCBTdHJpbmcgQ1NTU2VsZWN0b3I6OnNlbGVjdG9yVGV4dCgp
IGNvbnN0CiAgICAgICAgIH0gZWxzZSBpZiAoY3MtPm1fbWF0Y2ggPT0gQ1NTU2VsZWN0b3I6OkNs
YXNzKSB7CiAgICAgICAgICAgICBzdHIgKz0gIi4iOwogICAgICAgICAgICAgc3RyICs9IGNzLT5t
X3ZhbHVlOwotICAgICAgICB9IGVsc2UgaWYgKGNzLT5tX21hdGNoID09IENTU1NlbGVjdG9yOjpQ
c2V1ZG9DbGFzcykgeworICAgICAgICB9IGVsc2UgaWYgKGNzLT5tX21hdGNoID09IENTU1NlbGVj
dG9yOjpQc2V1ZG9DbGFzcyB8fCBjcy0+bV9tYXRjaCA9PSBDU1NTZWxlY3Rvcjo6UGFnZVBzZXVk
b0NsYXNzKSB7CiAgICAgICAgICAgICBzdHIgKz0gIjoiOwogICAgICAgICAgICAgc3RyICs9IGNz
LT5tX3ZhbHVlOwogICAgICAgICAgICAgaWYgKGNzLT5wc2V1ZG9UeXBlKCkgPT0gUHNldWRvTm90
KSB7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvci5oIGIvV2ViQ29yZS9jc3Mv
Q1NTU2VsZWN0b3IuaAppbmRleCA4Zjg0YjA1OGE2MTRiYzU5OTc2ZTFiZjI1ODIwNzk4MWJjOTMy
NzMyLi5lNDFkNDk4ZTI4MmI0MTAxODAwNzVhZTUyMjg3NzZkMzY3YWEzMmYwIDEwMDY0NAotLS0g
YS9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvci5oCisrKyBiL1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9y
LmgKQEAgLTg1LDkgKzg1LDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgICAgIEh5
cGhlbiwKICAgICAgICAgICAgIFBzZXVkb0NsYXNzLAogICAgICAgICAgICAgUHNldWRvRWxlbWVu
dCwKLSAgICAgICAgICAgIENvbnRhaW4sICAgLy8gY3NzMzogRVtmb28qPSJiYXIiXQotICAgICAg
ICAgICAgQmVnaW4sICAgICAvLyBjc3MzOiBFW2Zvb149ImJhciJdCi0gICAgICAgICAgICBFbmQg
ICAgICAgIC8vIGNzczM6IEVbZm9vJD0iYmFyIl0KKyAgICAgICAgICAgIENvbnRhaW4sIC8vIGNz
czM6IEVbZm9vKj0iYmFyIl0KKyAgICAgICAgICAgIEJlZ2luLCAvLyBjc3MzOiBFW2Zvb149ImJh
ciJdCisgICAgICAgICAgICBFbmQsIC8vIGNzczM6IEVbZm9vJD0iYmFyIl0KKyAgICAgICAgICAg
IFBhZ2VQc2V1ZG9DbGFzcwogICAgICAgICB9OwogCiAgICAgICAgIGVudW0gUmVsYXRpb24gewpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9jc3MvQ1NTU3R5bGVTZWxlY3Rvci5jcHAgYi9XZWJDb3JlL2Nz
cy9DU1NTdHlsZVNlbGVjdG9yLmNwcAppbmRleCA5NmIzNmJiZDA4YmQ1MzVkODBiM2VlM2IzMTky
YWU3ZjVhN2I2NTNlLi4wYjQyODA5Yjk0ZTNkMWQ4ZjUyZTIxM2VlMTFjMzIyNzdkMzQyYmM0IDEw
MDY0NAotLS0gYS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcAorKysgYi9XZWJDb3Jl
L2Nzcy9DU1NTdHlsZVNlbGVjdG9yLmNwcApAQCAtMjU1NCwxMSArMjU1NCw2IEBAIGJvb2wgQ1NT
U3R5bGVTZWxlY3Rvcjo6U2VsZWN0b3JDaGVja2VyOjpjaGVja09uZVNlbGVjdG9yKENTU1NlbGVj
dG9yKiBzZWwsIEVsZW1lCiAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAg
ICAgIHJldHVybiB0cnVlOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgY2FzZSBDU1NTZWxl
Y3Rvcjo6UHNldWRvTGVmdFBhZ2U6Ci0gICAgICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpQc2V1
ZG9SaWdodFBhZ2U6Ci0gICAgICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpQc2V1ZG9GaXJzdFBh
Z2U6Ci0gICAgICAgICAgICAgICAgLy8gUGFnZSBtZWRpYSByZWxhdGVkIHBzZXVkby1jbGFzc2Vz
IGFyZSBub3QgaGFuZGxlZCB5ZXQuCi0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
ICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6UHNldWRvVW5rbm93bjoKICAgICAgICAgICAgIGNh
c2UgQ1NTU2VsZWN0b3I6OlBzZXVkb05vdFBhcnNlZDoKICAgICAgICAgICAgIGRlZmF1bHQ6Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>55668</attachid>
            <date>2010-05-10 23:07:27 -0700</date>
            <delta_ts>2010-05-13 02:14:15 -0700</delta_ts>
            <desc>Make CSS parser properly handle page-only pseudo-classes.</desc>
            <filename>bug-38731-20100510230725.patch</filename>
            <type>text/plain</type>
            <size>16095</size>
            <attacher name="Yuzo Fujishima">yuzo</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA1NDBmMjQwYTMyMDkxNWUzMTU3M2VmMWE0NTU2NGNiZTFlOGJlMWZmLi4wZTE4ZTc4
NjE5MTgxOGI0ZWY1ZTAwNDQ0ZjBmOWY2Mjk3NmZmYzRmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAK
KzIwMTAtMDUtMTAgIFl1em8gRnVqaXNoaW1hICA8eXV6b0Bnb29nbGUuY29tPgorCisgICAgICAg
IFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1ha2UgQ1NTIFBhcnNlciBw
cm9wZXJseSBoYW5kbGUgb25seS1mb3ItcGFnZXMgcHNldWRvLWNsYXNzZXMuCisKKyAgICAgICAg
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTM4NzMxCisKKyAgICAgICAg
KiBmYXN0L2Nzcy9taXNwbGFjZWQtcGFnZWQtbWVkaWEtcHNldWRvLWV4cGVjdGVkLnR4dDogUmVt
b3ZlZC4KKyAgICAgICAgKiBmYXN0L2Nzcy9taXNwbGFjZWQtcGFnZWQtbWVkaWEtcHNldWRvLmh0
bWw6IFJlbW92ZWQuCisgICAgICAgICogcHJpbnRpbmcvcGFnZS1ydWxlLWNzcy10ZXh0LWV4cGVj
dGVkLnR4dDoKKyAgICAgICAgKiBwcmludGluZy9wYWdlLXJ1bGUtY3NzLXRleHQuaHRtbDoKKyAg
ICAgICAgKiBwcmludGluZy9wc2V1ZG8tY2xhc3Mtb3V0c2lkZS1wYWdlLWV4cGVjdGVkLnR4dDoK
KyAgICAgICAgKiBwcmludGluZy9wc2V1ZG8tY2xhc3Mtb3V0c2lkZS1wYWdlLmh0bWw6CisKIDIw
MTAtMDUtMTAgIEVyaWMgU2VpZGVsICA8ZXJpY0B3ZWJraXQub3JnPgogCiAgICAgICAgIFVucmV2
aWV3ZWQsIGp1c3QgcmVtb3ZpbmcgbmV3bGluZSBmcm9tIC1leHBlY3RlZC50eHQgZmlsZQpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jc3MvbWlzcGxhY2VkLXBhZ2VkLW1lZGlhLXBzZXVk
by1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9taXNwbGFjZWQtcGFnZWQtbWVk
aWEtcHNldWRvLWV4cGVjdGVkLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWQ4
NTU4NTVmMTk2OWUzYjEwMjE3ZTYyMWFiNzdhYzg1MmMyOThmYy4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9taXNwbGFj
ZWQtcGFnZWQtbWVkaWEtcHNldWRvLWV4cGVjdGVkLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDMg
KzAsMCBAQAotVGVzdCBmb3IgYnVnIDM4Njk3OiBSZXBseWluZyBvbiByZWRkaXQuY29tIG5vIGxv
bmdlciB3b3Jrcy4KLQotUEFTUwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jc3MvbWlz
cGxhY2VkLXBhZ2VkLW1lZGlhLXBzZXVkby5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MvbWlz
cGxhY2VkLXBhZ2VkLW1lZGlhLXBzZXVkby5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp
bmRleCBhNDVkOTU0OTE3MmY1YjIyNGZlYTVmNWZlOGRlNGQzYWNiOWRmZGVkLi4wMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL0xheW91dFRlc3RzL2Zhc3QvY3Nz
L21pc3BsYWNlZC1wYWdlZC1tZWRpYS1wc2V1ZG8uaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDE1
ICswLDAgQEAKLTxib2R5PgotPHA+VGVzdCBmb3IgPGEgaHJlZj0iaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTM4Njk3Ij5idWcgMzg2OTc8YS8+OgotUmVwbHlpbmcgb24g
cmVkZGl0LmNvbSBubyBsb25nZXIgd29ya3MuPC9wPgotPHNjcmlwdD4KLWlmICh3aW5kb3cubGF5
b3V0VGVzdENvbnRyb2xsZXIpCi0gICAgbGF5b3V0VGVzdENvbnRyb2xsZXIuZHVtcEFzVGV4dCgp
OwotCi10cnkgewotICAgIGRvY3VtZW50LnF1ZXJ5U2VsZWN0b3JBbGwoIi5sb2dpbi1wb3B1cDpm
aXJzdCIpOwotICAgIGRvY3VtZW50LndyaXRlKCJGQUlMIik7Ci19IGNhdGNoIChFWCkgewotICAg
IGRvY3VtZW50LndyaXRlKCJQQVNTIik7Ci19Ci08L3NjcmlwdD4KLTwvYm9keT4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3ByaW50aW5nL3BhZ2UtcnVsZS1jc3MtdGV4dC1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9wcmludGluZy9wYWdlLXJ1bGUtY3NzLXRleHQtZXhwZWN0ZWQudHh0Cmlu
ZGV4IDcxYzE0NmIwM2I1OTQ5YTU3ZjYyZWJkOWZlOWVkMGFmYjM5MWY1ODYuLjE5Y2Q4MTNhNjMw
MDgwM2NhMjQ1ZDkyNDk3YzkxYjJiYjhmMmU5YWMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3By
aW50aW5nL3BhZ2UtcnVsZS1jc3MtdGV4dC1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMv
cHJpbnRpbmcvcGFnZS1ydWxlLWNzcy10ZXh0LWV4cGVjdGVkLnR4dApAQCAtMSw1ICsxLDEwIEBA
CiBAcGFnZSB7IG1hcmdpbi10b3A6IDVjbTsgbWFyZ2luLWJvdHRvbTogMTBjbTsgfQorQHBhZ2Ug
OmxlZnQgeyBtYXJnaW4tcmlnaHQ6IDNjbTsgfQorQHBhZ2UgOnJpZ2h0IHsgbWFyZ2luLWxlZnQ6
IDNjbTsgfQorQHBhZ2UgOmZpcnN0IHsgYm9yZGVyLXRvcC13aWR0aDogMXB4OyBib3JkZXItcmln
aHQtd2lkdGg6IDFweDsgYm9yZGVyLWJvdHRvbS13aWR0aDogMXB4OyBib3JkZXItbGVmdC13aWR0
aDogMXB4OyB9CiBAcGFnZSBoZWxsbyB7IGNvbG9yOiBncmVlbjsgfQorQHBhZ2Ugd29ybGQ6cmln
aHQgeyBiYWNrZ3JvdW5kLWNvbG9yOiBncmVlbjsgfQorQG1lZGlhIHByaW50IHsgQHBhZ2Ugc29t
ZXBhZ2U6Zmlyc3QgeyBtYXJnaW4tdG9wOiAzY207IG1hcmdpbi1yaWdodDogM2NtOyBtYXJnaW4t
Ym90dG9tOiAzY207IG1hcmdpbi1sZWZ0OiAzY207IH0gfQogQHBhZ2UgYXV0b19wYWdlIHsgc2l6
ZTogYXV0bzsgfQogQHBhZ2Ugc3F1YXJlX3BhZ2UgeyBzaXplOiA0aW47IH0KIEBwYWdlIGxldHRl
cl9wYWdlIHsgc2l6ZTogbGV0dGVyOyB9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wcmludGlu
Zy9wYWdlLXJ1bGUtY3NzLXRleHQuaHRtbCBiL0xheW91dFRlc3RzL3ByaW50aW5nL3BhZ2UtcnVs
ZS1jc3MtdGV4dC5odG1sCmluZGV4IGU4YTJhZjEzMzdiYjM4NTUxZjQ3NjcxOGZkZTdlYjJlZTU2
YjZhNzkuLjg4MTM5MzBmYjhkZThmYzZmYWNkMjcxNTU1ZDZkOTM1ZmMxZTc1ZDQgMTAwNjQ0Ci0t
LSBhL0xheW91dFRlc3RzL3ByaW50aW5nL3BhZ2UtcnVsZS1jc3MtdGV4dC5odG1sCisrKyBiL0xh
eW91dFRlc3RzL3ByaW50aW5nL3BhZ2UtcnVsZS1jc3MtdGV4dC5odG1sCkBAIC0yLDYgKzIsMTMg
QEAKIDxodG1sPgogPGhlYWQ+CiA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgorQHBhZ2UgOnZpc2l0
ZWQgeyAvKiA6dmlzaXRlZCBpcyBpbnZhbGlkIGZvciBAcGFnZSAqLworICAgIGNvbG9yOiByZWQ7
Cit9CitAcGFnZSBhX3BhZ2VfbmFtZTp2aXNpdGVkIHsgLyogOnZpc2l0ZWQgaXMgaW52YWxpZCBm
b3IgQHBhZ2UgKi8KKyAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZWQ7Cit9CisKIEBwYWdlIHsKICAg
ICBtYXJnaW4tdG9wOjVjbTsKICAgICBtYXJnaW4tYm90dG9tOjEwY207CkBAIC0xOSw3ICsyNiw3
IEBACiAgICAgY29sb3I6Z3JlZW47CiB9CiBAcGFnZSB3b3JsZDpyaWdodCB7Ci0gICAgY29sb3I6
cmVkOworICAgIGJhY2tncm91bmQtY29sb3I6Z3JlZW47CiB9CiBAbWVkaWEgcHJpbnQgewogICAg
IEBwYWdlIHNvbWVwYWdlOmZpcnN0IHsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3ByaW50aW5n
L3BzZXVkby1jbGFzcy1vdXRzaWRlLXBhZ2UtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvcHJp
bnRpbmcvcHNldWRvLWNsYXNzLW91dHNpZGUtcGFnZS1leHBlY3RlZC50eHQKaW5kZXggMWQ2NDdl
MDc1MjFiZTc1NTIyOGFjZWIzYWRmZWFjMzk4M2Y2YmZhZC4uYzdiNTdjMDc3MjcxZDIxNTc3OTBl
ZjJlMTg2ODJiMjU2NGI2Yjg4NyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcHJpbnRpbmcvcHNl
dWRvLWNsYXNzLW91dHNpZGUtcGFnZS1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvcHJp
bnRpbmcvcHNldWRvLWNsYXNzLW91dHNpZGUtcGFnZS1leHBlY3RlZC50eHQKQEAgLTEsNSArMSwx
NyBAQAogVGVzdCBjYXNlIGZvciBTSE9VTEQgTkVWRVIgQkUgUkVBQ0hFRCBhc3NlcnRpb24gbG9h
ZGluZyBmb3JiZXMuY29tLiBQYWdlZCBtZWRpYSByZWxhdGVkIHBzZXVkby1jbGFzc2VzIHNob3Vs
ZCBiZSBpZ25vcmVkIG91dHNpZGUgb2YgQHBhZ2UuCiAKLVlvdSBzaG91bGQgc2VlIGEgZ3JlZW4g
Ym94LgorWW91IHNob3VsZCBzZWUgYSBncmVlbiBib3ggZm9yIFRlc3QgMSwgIlRlc3QgbjogUEFT
UyIgZm9yIHRoZSByZXN0LgogCitUZXN0IDI6IFBBU1MKK1Rlc3QgMzogUEFTUworVGVzdCA0OiBQ
QVNTCitUZXN0IDU6IFBBU1MKK1Rlc3QgNjogUEFTUworVGVzdCA3OiBQQVNTCitUZXN0IDg6IFBB
U1MKK1Rlc3QgOTogUEFTUworVGVzdCAxMDogUEFTUworVGVzdCAxMTogUEFTUworVGVzdCAxMjog
UEFTUworVGVzdCAxMzogUEFTUwogUEFTUwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcHJpbnRp
bmcvcHNldWRvLWNsYXNzLW91dHNpZGUtcGFnZS5odG1sIGIvTGF5b3V0VGVzdHMvcHJpbnRpbmcv
cHNldWRvLWNsYXNzLW91dHNpZGUtcGFnZS5odG1sCmluZGV4IDlkODhhMDMzMzFkMWEzNGYwYWRj
YTVmNWRkNzc2ODgxY2JjZDliNjIuLjA5MDlkOTg2NDBkOWI4ZWVjZDU2ZTAyYmQ1Y2JiMTA2Nzcx
Y2QzODEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL3ByaW50aW5nL3BzZXVkby1jbGFzcy1vdXRz
aWRlLXBhZ2UuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9wcmludGluZy9wc2V1ZG8tY2xhc3Mtb3V0
c2lkZS1wYWdlLmh0bWwKQEAgLTYsMTkgKzYsMjIgQEAKICAgICAjZ3JlZW4gewogICAgICAgICBi
YWNrZ3JvdW5kLWNvbG9yOiBncmVlbjsKICAgICB9Ci0gICAgI3Rlc3QgeworICAgICN0ZXN0MSB7
CiAgICAgICAgIHdpZHRoOiAxMDBweDsKICAgICAgICAgaGVpZ2h0OiAxMDBweDsKICAgICAgICAg
YmFja2dyb3VuZC1jb2xvcjogZ3JlZW47CiAgICAgfQorICAgIC5leGNlcHRpb25fdGVzdCB7Cisg
ICAgICAgIGNvbG9yOiByZWQ7CisgICAgfQogICAgIC8qIFRoZXNlIHNlbGVjdG9ycyBzaG91bGQg
YmUgaWdub3JlZCAqLwotICAgICN0ZXN0OmZpcnN0IHsKKyAgICAjdGVzdDE6Zmlyc3QgewogICAg
ICAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZWQ7CiAgICAgfQotICAgICN0ZXN0OmxlZnQgeworICAg
ICN0ZXN0MTpsZWZ0IHsKICAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogcmVkOwogICAgIH0KLSAg
ICAjdGVzdDpyaWdodCB7CisgICAgI3Rlc3QxOnJpZ2h0IHsKICAgICAgICAgYmFja2dyb3VuZC1j
b2xvcjogcmVkOwogICAgIH0KIDwvc3R5bGU+CkBAIC0yOSwxMSArMzIsMjUgQEAKICAgICBmdW5j
dGlvbiB0ZXN0KCkKICAgICB7CiAgICAgICAgIHZhciBleHBlY3RlZCA9IGdldENvbXB1dGVkU3R5
bGUoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImdyZWVuIiksIG51bGwpLmJhY2tncm91bmRDb2xv
cjsKLSAgICAgICAgdmFyIGFjdHVhbCA9IGdldENvbXB1dGVkU3R5bGUoZG9jdW1lbnQuZ2V0RWxl
bWVudEJ5SWQoInRlc3QiKSwgbnVsbCkuYmFja2dyb3VuZENvbG9yOworICAgICAgICB2YXIgYWN0
dWFsID0gZ2V0Q29tcHV0ZWRTdHlsZShkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidGVzdDEiKSwg
bnVsbCkuYmFja2dyb3VuZENvbG9yOwogICAgICAgICB2YXIgcmVzdWx0ID0gIlBBU1MiOwogICAg
ICAgICBpZiAoYWN0dWFsICE9IGV4cGVjdGVkKQogICAgICAgICAgICAgcmVzdWx0ID0gIkV4cGVj
dGVkICIgKyBleHBlY3RlZCArICIsIGJ1dCBjb21lcyAiICsgYWN0dWFsOwogICAgICAgICBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgicmVzdWx0IikuaW5uZXJIVE1MID0gcmVzdWx0OworCisgICAg
ICAgIHZhciBpbnZhbGlkU2VsZWN0b3JzID0gWyI6Zmlyc3QiLCAiOmxlZnQiLCAiOnJpZ2h0Iiwg
Ijo6Zmlyc3QiLCAiOjpsZWZ0IiwgIjo6cmlnaHQiLAorICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAiLmxvZ2luLXBvcHVwOmZpcnN0IiwgIi5sb2dpbi1wb3B1cDpsZWZ0IiwgIi5sb2dp
bi1wb3B1cDpyaWdodCIsICIubG9naW4tcG9wdXA6OmZpcnN0IiwgIi5sb2dpbi1wb3B1cDo6bGVm
dCIsICIubG9naW4tcG9wdXA6OnJpZ2h0Il07CisgICAgICAgIGZvciAodmFyIHRlc3RJZCA9IDI7
IHRlc3RJZCA8PSAxMzsgdGVzdElkKyspIHsKKyAgICAgICAgICAgIHZhciBlbGVtZW50ID0gZG9j
dW1lbnQuZ2V0RWxlbWVudEJ5SWQoInRlc3QiICsgdGVzdElkKTsKKyAgICAgICAgICAgIHZhciBp
bnZhbGlkU2VsZWN0b3IgPSBpbnZhbGlkU2VsZWN0b3JzW3Rlc3RJZCAtIDJdOworICAgICAgICAg
ICAgdHJ5IHsKKyAgICAgICAgICAgICAgICBkb2N1bWVudC5xdWVyeVNlbGVjdG9yQWxsKGludmFs
aWRTZWxlY3Rvcik7CisgICAgICAgICAgICAgICAgZWxlbWVudC5pbm5lckhUTUwgPSAiVGVzdCAi
ICsgdGVzdElkICsgIjogRkFJTCI7CisgICAgICAgICAgICB9IGNhdGNoIChlKSB7CisgICAgICAg
ICAgICAgICAgZWxlbWVudC5pbm5lckhUTUwgPSAiVGVzdCAiICsgdGVzdElkICsgIjogUEFTUyI7
CisgICAgICAgICAgICAgICAgZWxlbWVudC5zdHlsZS5jb2xvciA9ICJncmVlbiI7CisgICAgICAg
ICAgICB9CisgICAgICAgIH0KICAgICB9CiA8L3NjcmlwdD4KIDwvaGVhZD4KQEAgLTQ0LDEwICs2
MSwyMiBAQCBUZXN0IGNhc2UgZm9yIDxhIGhyZWY9Imh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0zODI3MiI+U0hPVUxEIE5FVgogUGFnZWQgbWVkaWEgcmVsYXRlZCBwc2V1
ZG8tY2xhc3NlcyBzaG91bGQgYmUgaWdub3JlZCBvdXRzaWRlIG9mIEBwYWdlLgogCiA8cD4KLVlv
dSBzaG91bGQgc2VlIGEgZ3JlZW4gYm94LgorWW91IHNob3VsZCBzZWUgYSBncmVlbiBib3ggZm9y
IFRlc3QgMSwgIlRlc3QgbjogUEFTUyIgZm9yIHRoZSByZXN0LgogCiA8ZGl2IGlkPSJncmVlbiI+
PC9kaXY+Ci08ZGl2IGlkPSJ0ZXN0Ij48L2Rpdj4KKzxkaXYgaWQ9InRlc3QxIj48L2Rpdj4KKzxk
aXYgaWQ9InRlc3QyIiBjbGFzcz0iZXhjZXB0aW9uX3Rlc3QiPlRlc3QgMjogRGlkbid0IHJ1bjwv
ZGl2PgorPGRpdiBpZD0idGVzdDMiIGNsYXNzPSJleGNlcHRpb25fdGVzdCI+VGVzdCAzOiBEaWRu
J3QgcnVuPC9kaXY+Cis8ZGl2IGlkPSJ0ZXN0NCIgY2xhc3M9ImV4Y2VwdGlvbl90ZXN0Ij5UZXN0
IDQ6IERpZG4ndCBydW48L2Rpdj4KKzxkaXYgaWQ9InRlc3Q1IiBjbGFzcz0iZXhjZXB0aW9uX3Rl
c3QiPlRlc3QgNTogRGlkbid0IHJ1bjwvZGl2PgorPGRpdiBpZD0idGVzdDYiIGNsYXNzPSJleGNl
cHRpb25fdGVzdCI+VGVzdCA2OiBEaWRuJ3QgcnVuPC9kaXY+Cis8ZGl2IGlkPSJ0ZXN0NyIgY2xh
c3M9ImV4Y2VwdGlvbl90ZXN0Ij5UZXN0IDc6IERpZG4ndCBydW48L2Rpdj4KKzxkaXYgaWQ9InRl
c3Q4IiBjbGFzcz0iZXhjZXB0aW9uX3Rlc3QiPlRlc3QgODogRGlkbid0IHJ1bjwvZGl2PgorPGRp
diBpZD0idGVzdDkiIGNsYXNzPSJleGNlcHRpb25fdGVzdCI+VGVzdCA5OiBEaWRuJ3QgcnVuPC9k
aXY+Cis8ZGl2IGlkPSJ0ZXN0MTAiIGNsYXNzPSJleGNlcHRpb25fdGVzdCI+VGVzdCAxMDogRGlk
bid0IHJ1bjwvZGl2PgorPGRpdiBpZD0idGVzdDExIiBjbGFzcz0iZXhjZXB0aW9uX3Rlc3QiPlRl
c3QgMTE6IERpZG4ndCBydW48L2Rpdj4KKzxkaXYgaWQ9InRlc3QxMiIgY2xhc3M9ImV4Y2VwdGlv
bl90ZXN0Ij5UZXN0IDEyOiBEaWRuJ3QgcnVuPC9kaXY+Cis8ZGl2IGlkPSJ0ZXN0MTMiIGNsYXNz
PSJleGNlcHRpb25fdGVzdCI+VGVzdCAxMzogRGlkbid0IHJ1bjwvZGl2PgogPGRpdiBpZD0icmVz
dWx0Ij48L2Rpdj4KIAogPC9ib2R5PgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9X
ZWJDb3JlL0NoYW5nZUxvZwppbmRleCAxZGJmZjU1OGViN2U1NmU1YmNjYTk3YzlmNGZmYjlmNmM1
NWQwNjEwLi4yMGUzYzBkNzcwOGYyNzQ3NGM3OTJlM2EyMjdjZDE1YjY2OTkxMWU3IDEwMDY0NAot
LS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDI3IEBACisyMDEwLTA1LTEwICBZdXpvIEZ1amlzaGltYSAgPHl1em9AZ29vZ2xlLmNvbT4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBNYWtlIENTUyBQ
YXJzZXIgcHJvcGVybHkgaGFuZGxlIG9ubHktZm9yLXBhZ2VzIHBzZXVkby1jbGFzc2VzLgorCisg
ICAgICAgIEEgbmV3IE1hdGNoIGNhdGVnb3J5LCBQYWdlUHNldWRvQ2xhc3MsIGlzIGludHJvZHVj
ZWQgdG8gZGlzdGluZ3Vpc2gKKyAgICAgICAgb25seS1mb3ItcGFnZXMgcHNldWRvLWNsYXNzZXMg
ZnJvbSBvdGhlcnMuIEEgbmV3IHN5bWJvbCwgcHNldWRvX3BhZ2UsCisgICAgICAgIGlzIGludHJv
ZHVjZWQgdG8gaGFuZGxlIHRoZW0gc2VwYXJhdGVseS4KKworICAgICAgICBodHRwczovL2J1Z3Mu
d2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mzg3MzEKKworICAgICAgICAqIGNzcy9DU1NHcmFt
bWFyLnk6CisgICAgICAgICogY3NzL0NTU1BhcnNlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpD
U1NQYXJzZXI6OmNyZWF0ZU1hcmdpbkF0UnVsZSk6CisgICAgICAgICogY3NzL0NTU1BhcnNlci5o
OgorICAgICAgICAqIGNzcy9DU1NTZWxlY3Rvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NT
ZWxlY3Rvcjo6ZXh0cmFjdFBzZXVkb1R5cGUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTU2VsZWN0
b3I6OnNlbGVjdG9yVGV4dCk6CisgICAgICAgICogY3NzL0NTU1NlbGVjdG9yLmg6CisgICAgICAg
IChXZWJDb3JlOjpDU1NTZWxlY3Rvcjo6KToKKyAgICAgICAgKiBjc3MvQ1NTU3R5bGVTZWxlY3Rv
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NTdHlsZVNlbGVjdG9yOjpTZWxlY3RvckNoZWNr
ZXI6OmNoZWNrT25lU2VsZWN0b3IpOgorCiAyMDEwLTA1LTEwICBEdW1pdHJ1IERhbmlsaXVjICA8
ZHVtaUBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgQnJhZHkgRWlkc29uLgpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9jc3MvQ1NTR3JhbW1hci55IGIvV2ViQ29yZS9jc3MvQ1NTR3Jh
bW1hci55CmluZGV4IDc3OTgyNjRjNzI1YzEyZmY3YmZjNWY4ZjNiYmRiZTQ2MjkzZmE3MDUuLjM3
YzUzODU0Y2ViNGYwNmEzNGJjMDNjYjE2YTc3ZDFjNzVhYjgyZjAgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvY3NzL0NTU0dyYW1tYXIueQorKysgYi9XZWJDb3JlL2Nzcy9DU1NHcmFtbWFyLnkKQEAgLTI1
Nyw2ICsyNTcsNyBAQCBzdGF0aWMgaW50IGNzc3l5bGV4KFlZU1RZUEUqIHl5bHZhbCwgdm9pZCog
cGFyc2VyKQogJXR5cGUgPHNlbGVjdG9yPiBjbGFzcwogJXR5cGUgPHNlbGVjdG9yPiBhdHRyaWIK
ICV0eXBlIDxzZWxlY3Rvcj4gcHNldWRvCisldHlwZSA8c2VsZWN0b3I+IHBzZXVkb19wYWdlCiAl
dHlwZSA8c2VsZWN0b3I+IHBhZ2Vfc2VsZWN0b3IKIAogJXR5cGUgPGJvb2xlYW4+IGRlY2xhcmF0
aW9uX2xpc3QKQEAgLTc1NSw3ICs3NTYsMTQgQEAgcGFnZToKICAgICBQQUdFX1NZTSBtYXliZV9z
cGFjZSBwYWdlX3NlbGVjdG9yIG1heWJlX3NwYWNlCiAgICAgJ3snIG1heWJlX3NwYWNlIGRlY2xh
cmF0aW9uc19hbmRfbWFyZ2lucyBjbG9zaW5nX2JyYWNlIHsKICAgICAgICAgQ1NTUGFyc2VyKiBw
ID0gc3RhdGljX2Nhc3Q8Q1NTUGFyc2VyKj4ocGFyc2VyKTsKLSAgICAgICAgJCQgPSBwLT5jcmVh
dGVQYWdlUnVsZShwLT5zaW5rRmxvYXRpbmdTZWxlY3RvcigkMykpOworICAgICAgICBpZiAoJDMp
CisgICAgICAgICAgICAkJCA9IHAtPmNyZWF0ZVBhZ2VSdWxlKHAtPnNpbmtGbG9hdGluZ1NlbGVj
dG9yKCQzKSk7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgLy8gQ2xlYXIgcHJvcGVydGll
cyBpbiB0aGUgaW52YWxpZCBAcGFnZSBydWxlLgorICAgICAgICAgICAgcC0+Y2xlYXJQcm9wZXJ0
aWVzKCk7CisgICAgICAgICAgICAvLyBBbHNvIGNsZWFyIG1hcmdpbiBhdC1ydWxlcyBoZXJlIG9u
Y2Ugd2UgZnVsbHkgaW1wbGVtZW50IG1hcmdpbiBhdC1ydWxlcyBwYXJzaW5nLgorICAgICAgICAg
ICAgJCQgPSAwOworICAgICAgICB9CiAgICAgfQogICAgIHwgUEFHRV9TWU0gZXJyb3IgaW52YWxp
ZF9ibG9jayB7CiAgICAgICAkJCA9IDA7CkBAIC03NzEsMTMgKzc3OSwxMyBAQCBwYWdlX3NlbGVj
dG9yOgogICAgICAgICAkJCA9IHAtPmNyZWF0ZUZsb2F0aW5nU2VsZWN0b3IoKTsKICAgICAgICAg
JCQtPm1fdGFnID0gUXVhbGlmaWVkTmFtZShudWxsQXRvbSwgJDEsIHAtPm1fZGVmYXVsdE5hbWVz
cGFjZSk7CiAgICAgfQotICAgIHwgSURFTlQgcHNldWRvIHsKKyAgICB8IElERU5UIHBzZXVkb19w
YWdlIHsKICAgICAgICAgQ1NTUGFyc2VyKiBwID0gc3RhdGljX2Nhc3Q8Q1NTUGFyc2VyKj4ocGFy
c2VyKTsKICAgICAgICAgJCQgPSAkMjsKICAgICAgICAgaWYgKCQkKQogICAgICAgICAgICAgJCQt
Pm1fdGFnID0gUXVhbGlmaWVkTmFtZShudWxsQXRvbSwgJDEsIHAtPm1fZGVmYXVsdE5hbWVzcGFj
ZSk7CiAgICAgfQotICAgIHwgcHNldWRvIHsKKyAgICB8IHBzZXVkb19wYWdlIHsKICAgICAgICAg
JCQgPSAkMTsKICAgICB9CiAgICAgfCAvKiBlbXB0eSAqLyB7CkBAIC0xMTY3LDYgKzExNzUsMTcg
QEAgaWRlbnRfb3Jfc3RyaW5nOgogICB8IFNUUklORwogICAgIDsKIAorcHNldWRvX3BhZ2U6Cisg
ICAgJzonIElERU5UIHsKKyAgICAgICAgJCQgPSBzdGF0aWNfY2FzdDxDU1NQYXJzZXIqPihwYXJz
ZXIpLT5jcmVhdGVGbG9hdGluZ1NlbGVjdG9yKCk7CisgICAgICAgICQkLT5tX21hdGNoID0gQ1NT
U2VsZWN0b3I6OlBhZ2VQc2V1ZG9DbGFzczsKKyAgICAgICAgJDIubG93ZXIoKTsKKyAgICAgICAg
JCQtPm1fdmFsdWUgPSAkMjsKKyAgICAgICAgQ1NTU2VsZWN0b3I6OlBzZXVkb1R5cGUgdHlwZSA9
ICQkLT5wc2V1ZG9UeXBlKCk7CisgICAgICAgIGlmICh0eXBlID09IENTU1NlbGVjdG9yOjpQc2V1
ZG9Vbmtub3duKQorICAgICAgICAgICAgJCQgPSAwOworICAgIH0KKwogcHNldWRvOgogICAgICc6
JyBJREVOVCB7CiAgICAgICAgICQkID0gc3RhdGljX2Nhc3Q8Q1NTUGFyc2VyKj4ocGFyc2VyKS0+
Y3JlYXRlRmxvYXRpbmdTZWxlY3RvcigpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9jc3MvQ1NTUGFy
c2VyLmNwcCBiL1dlYkNvcmUvY3NzL0NTU1BhcnNlci5jcHAKaW5kZXggNmY3Y2YxMmRkZDM0YzVi
YTkwOTJmNGFkYTUyYmJjYTQ2NjExYjE5ZS4uODU5NGRhMjliOTM4NzExYjQwOGMyMmY1ZmFhNmU2
YzQ2N2NiNzMzMiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcAorKysgYi9X
ZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwCkBAIC01MzQ3LDYgKzUzNDcsNyBAQCBDU1NSdWxlKiBD
U1NQYXJzZXI6OmNyZWF0ZU1hcmdpbkF0UnVsZShDU1NTZWxlY3Rvcjo6TWFyZ2luQm94VHlwZSAv
KiBtYXJnaW5Cb3ggKgogICAgIC8vIEZJWE1FOiBJbXBsZW1lbnQgbWFyZ2luIGF0LXJ1bGUgaGVy
ZSwgdXNpbmc6CiAgICAgLy8gICAgICAgIC0gbWFyZ2luQm94OiBtYXJnaW4gYm94CiAgICAgLy8g
ICAgICAgIC0gbV9wYXJzZWRQcm9wZXJ0aWVzOiBwcm9wZXJ0aWVzIGF0IFttX251bVBhcnNlZFBy
b3BlcnRpZXNCZWZvcmVNYXJnaW5Cb3gsIG1fbnVtUGFyc2VkUHJvcGVydGllcykgYXJlIGZvciB0
aGlzIGF0LXJ1bGUuCisgICAgLy8gRG9uJ3QgZm9yZ2V0IHRvIGFsc28gdXBkYXRlIHRoZSBhY3Rp
b24gZm9yIHBhZ2Ugc3ltYm9sIGluIENTU0dyYW1tYXIueSBzdWNoIHRoYXQgbWFyZ2luIGF0LXJ1
bGUgZGF0YSBpcyBjbGVhcmVkIGlmIHBhZ2Vfc2VsZWN0b3IgaXMgaW52YWxpZC4KIAogICAgIGVu
ZERlY2xhcmF0aW9uc0Zvck1hcmdpbkJveCgpOwogICAgIHJldHVybiAwOyAvLyB1bnRpbCB0aGlz
IG1ldGhvZCBpcyBpbXBsZW1lbnRlZC4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvY3NzL0NTU1BhcnNl
ci5oIGIvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmgKaW5kZXggNmUwMzU0ZWYzMTkxYjg2YmU5NzNi
YmU5MzczZTA0MTFjYjIzZjI3Zi4uZWI5ZTAxYTEwNTNiMGQyYWIwMmRjOTUyYzliZTUxNmI1MGFh
YjFhNCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmgKKysrIGIvV2ViQ29yZS9j
c3MvQ1NTUGFyc2VyLmgKQEAgLTIwOSw2ICsyMDksOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAK
ICAgICAgICAgdm9pZCB1cGRhdGVMYXN0U2VsZWN0b3JMaW5lKCkgeyBtX2xhc3RTZWxlY3Rvckxp
bmUgPSBtX2xpbmU7IH0KIAorICAgICAgICB2b2lkIGNsZWFyUHJvcGVydGllcygpOworCiAgICAg
ICAgIGJvb2wgbV9zdHJpY3Q7CiAgICAgICAgIGJvb2wgbV9pbXBvcnRhbnQ7CiAgICAgICAgIGlu
dCBtX2lkOwpAQCAtMjQ1LDggKzI0Nyw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBwcml2
YXRlOgogICAgICAgICB2b2lkIHJlY2hlY2tBdEtleXdvcmQoY29uc3QgVUNoYXIqIHN0ciwgaW50
IGxlbik7CiAgICAgCi0gICAgICAgIHZvaWQgY2xlYXJQcm9wZXJ0aWVzKCk7Ci0KICAgICAgICAg
dm9pZCBzZXR1cFBhcnNlcihjb25zdCBjaGFyKiBwcmVmaXgsIGNvbnN0IFN0cmluZyYsIGNvbnN0
IGNoYXIqIHN1ZmZpeCk7CiAKICAgICAgICAgYm9vbCBpblNob3J0aGFuZCgpIGNvbnN0IHsgcmV0
dXJuIG1faW5QYXJzZVNob3J0aGFuZDsgfQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9jc3MvQ1NTU2Vs
ZWN0b3IuY3BwIGIvV2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3IuY3BwCmluZGV4IGVlOWM4NDY1YzYz
MjYxNjA5ZGJkYWQ5OGQ5M2ZkZDNlMzJhNWYyNGYuLjVhZGQ5MGJlZmE2NGYyMWYwZTVhYTI1NTY2
ZjNiNmE2YzM3MzQyODEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9yLmNwcAor
KysgYi9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvci5jcHAKQEAgLTQyNCwxMyArNDI0LDE0IEBAIENT
U1NlbGVjdG9yOjpQc2V1ZG9UeXBlIENTU1NlbGVjdG9yOjpwYXJzZVBzZXVkb1R5cGUoY29uc3Qg
QXRvbWljU3RyaW5nJiBuYW1lKQogCiB2b2lkIENTU1NlbGVjdG9yOjpleHRyYWN0UHNldWRvVHlw
ZSgpIGNvbnN0CiB7Ci0gICAgaWYgKG1fbWF0Y2ggIT0gUHNldWRvQ2xhc3MgJiYgbV9tYXRjaCAh
PSBQc2V1ZG9FbGVtZW50KQorICAgIGlmIChtX21hdGNoICE9IFBzZXVkb0NsYXNzICYmIG1fbWF0
Y2ggIT0gUHNldWRvRWxlbWVudCAmJiBtX21hdGNoICE9IFBhZ2VQc2V1ZG9DbGFzcykKICAgICAg
ICAgcmV0dXJuOwogCiAgICAgbV9wc2V1ZG9UeXBlID0gcGFyc2VQc2V1ZG9UeXBlKG1fdmFsdWUp
OwogCiAgICAgYm9vbCBlbGVtZW50ID0gZmFsc2U7IC8vIHBzZXVkby1lbGVtZW50CiAgICAgYm9v
bCBjb21wYXQgPSBmYWxzZTsgLy8gc2luZ2xlIGNvbG9uIGNvbXBhdGJpbGl0eSBtb2RlCisgICAg
Ym9vbCBpc1BhZ2VQc2V1ZG9DbGFzcyA9IGZhbHNlOyAvLyBQYWdlIHBzZXVkby1jbGFzcwogCiAg
ICAgc3dpdGNoIChtX3BzZXVkb1R5cGUpIHsKICAgICBjYXNlIFBzZXVkb0FmdGVyOgpAQCAtNTI5
LDEyICs1MzAsMTQgQEAgdm9pZCBDU1NTZWxlY3Rvcjo6ZXh0cmFjdFBzZXVkb1R5cGUoKSBjb25z
dAogICAgIGNhc2UgUHNldWRvRmlyc3RQYWdlOgogICAgIGNhc2UgUHNldWRvTGVmdFBhZ2U6CiAg
ICAgY2FzZSBQc2V1ZG9SaWdodFBhZ2U6Ci0gICAgICAgIC8vIEZJWE1FOiBUaGVzZSBzaG91bGQg
b25seSBiZSBhbGxvd2VkIGluIEBwYWdlIHJ1bGVzLiBEaXNhYmxlZCB0aGVtIGFsdG9nZXRoZXIg
dW50aWwgdGhhdCdzIGltcGxlbWVudGVkIGNvcnJlY3RseS4KLSAgICAgICAgbV9wc2V1ZG9UeXBl
ID0gUHNldWRvVW5rbm93bjsKLSAgICAgICAgcmV0dXJuOworICAgICAgICBpc1BhZ2VQc2V1ZG9D
bGFzcyA9IHRydWU7CisgICAgICAgIGJyZWFrOwogICAgIH0KIAotICAgIGlmIChtX21hdGNoID09
IFBzZXVkb0NsYXNzICYmIGVsZW1lbnQpIHsKKyAgICBib29sIG1hdGNoUGFnZVBzZXVkb0NsYXNz
ID0gKG1fbWF0Y2ggPT0gUGFnZVBzZXVkb0NsYXNzKTsKKyAgICBpZiAobWF0Y2hQYWdlUHNldWRv
Q2xhc3MgIT0gaXNQYWdlUHNldWRvQ2xhc3MpCisgICAgICAgIG1fcHNldWRvVHlwZSA9IFBzZXVk
b1Vua25vd247CisgICAgZWxzZSBpZiAobV9tYXRjaCA9PSBQc2V1ZG9DbGFzcyAmJiBlbGVtZW50
KSB7CiAgICAgICAgIGlmICghY29tcGF0KQogICAgICAgICAgICAgbV9wc2V1ZG9UeXBlID0gUHNl
dWRvVW5rbm93bjsKICAgICAgICAgZWxzZQpAQCAtNTg2LDcgKzU4OSw3IEBAIFN0cmluZyBDU1NT
ZWxlY3Rvcjo6c2VsZWN0b3JUZXh0KCkgY29uc3QKICAgICAgICAgfSBlbHNlIGlmIChjcy0+bV9t
YXRjaCA9PSBDU1NTZWxlY3Rvcjo6Q2xhc3MpIHsKICAgICAgICAgICAgIHN0ciArPSAiLiI7CiAg
ICAgICAgICAgICBzdHIgKz0gY3MtPm1fdmFsdWU7Ci0gICAgICAgIH0gZWxzZSBpZiAoY3MtPm1f
bWF0Y2ggPT0gQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzKSB7CisgICAgICAgIH0gZWxzZSBpZiAo
Y3MtPm1fbWF0Y2ggPT0gQ1NTU2VsZWN0b3I6OlBzZXVkb0NsYXNzIHx8IGNzLT5tX21hdGNoID09
IENTU1NlbGVjdG9yOjpQYWdlUHNldWRvQ2xhc3MpIHsKICAgICAgICAgICAgIHN0ciArPSAiOiI7
CiAgICAgICAgICAgICBzdHIgKz0gY3MtPm1fdmFsdWU7CiAgICAgICAgICAgICBpZiAoY3MtPnBz
ZXVkb1R5cGUoKSA9PSBQc2V1ZG9Ob3QpIHsKZGlmZiAtLWdpdCBhL1dlYkNvcmUvY3NzL0NTU1Nl
bGVjdG9yLmggYi9XZWJDb3JlL2Nzcy9DU1NTZWxlY3Rvci5oCmluZGV4IDhmODRiMDU4YTYxNGJj
NTk5NzZlMWJmMjU4MjA3OTgxYmM5MzI3MzIuLmU0MWQ0OThlMjgyYjQxMDE4MDA3NWFlNTIyODc3
NmQzNjdhYTMyZjAgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvY3NzL0NTU1NlbGVjdG9yLmgKKysrIGIv
V2ViQ29yZS9jc3MvQ1NTU2VsZWN0b3IuaApAQCAtODUsOSArODUsMTAgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogICAgICAgICAgICAgSHlwaGVuLAogICAgICAgICAgICAgUHNldWRvQ2xhc3MsCiAg
ICAgICAgICAgICBQc2V1ZG9FbGVtZW50LAotICAgICAgICAgICAgQ29udGFpbiwgICAvLyBjc3Mz
OiBFW2Zvbyo9ImJhciJdCi0gICAgICAgICAgICBCZWdpbiwgICAgIC8vIGNzczM6IEVbZm9vXj0i
YmFyIl0KLSAgICAgICAgICAgIEVuZCAgICAgICAgLy8gY3NzMzogRVtmb28kPSJiYXIiXQorICAg
ICAgICAgICAgQ29udGFpbiwgLy8gY3NzMzogRVtmb28qPSJiYXIiXQorICAgICAgICAgICAgQmVn
aW4sIC8vIGNzczM6IEVbZm9vXj0iYmFyIl0KKyAgICAgICAgICAgIEVuZCwgLy8gY3NzMzogRVtm
b28kPSJiYXIiXQorICAgICAgICAgICAgUGFnZVBzZXVkb0NsYXNzCiAgICAgICAgIH07CiAKICAg
ICAgICAgZW51bSBSZWxhdGlvbiB7CmRpZmYgLS1naXQgYS9XZWJDb3JlL2Nzcy9DU1NTdHlsZVNl
bGVjdG9yLmNwcCBiL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwCmluZGV4IDk2YjM2
YmJkMDhiZDUzNWQ4MGIzZWUzYjMxOTJhZTdmNWE3YjY1M2UuLjBiNDI4MDliOTRlM2QxZDhmNTJl
MjEzZWUxMWMzMjI3N2QzNDJiYzQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2Vs
ZWN0b3IuY3BwCisrKyBiL1dlYkNvcmUvY3NzL0NTU1N0eWxlU2VsZWN0b3IuY3BwCkBAIC0yNTU0
LDExICsyNTU0LDYgQEAgYm9vbCBDU1NTdHlsZVNlbGVjdG9yOjpTZWxlY3RvckNoZWNrZXI6OmNo
ZWNrT25lU2VsZWN0b3IoQ1NTU2VsZWN0b3IqIHNlbCwgRWxlbWUKICAgICAgICAgICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICB9Ci0g
ICAgICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpQc2V1ZG9MZWZ0UGFnZToKLSAgICAgICAgICAg
IGNhc2UgQ1NTU2VsZWN0b3I6OlBzZXVkb1JpZ2h0UGFnZToKLSAgICAgICAgICAgIGNhc2UgQ1NT
U2VsZWN0b3I6OlBzZXVkb0ZpcnN0UGFnZToKLSAgICAgICAgICAgICAgICAvLyBQYWdlIG1lZGlh
IHJlbGF0ZWQgcHNldWRvLWNsYXNzZXMgYXJlIG5vdCBoYW5kbGVkIHlldC4KLSAgICAgICAgICAg
ICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgICAgICBjYXNlIENTU1NlbGVjdG9yOjpQc2V1ZG9V
bmtub3duOgogICAgICAgICAgICAgY2FzZSBDU1NTZWxlY3Rvcjo6UHNldWRvTm90UGFyc2VkOgog
ICAgICAgICAgICAgZGVmYXVsdDoK
</data>
<flag name="review"
          id="39903"
          type_id="1"
          status="+"
          setter="hamaji"
    />
          </attachment>
      

    </bug>

</bugzilla>