<?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>9854</bug_id>
          
          <creation_ts>2006-07-11 10:46:18 -0700</creation_ts>
          <short_desc>HTTP Refresh header with quotes is parsed incorrectly</short_desc>
          <delta_ts>2006-12-08 10:32:30 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>420+</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>OS X 10.4</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc>http://notmuch.com/Quiz/</bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Mark">emark2k</reporter>
          <assigned_to name="Alexey Proskuryakov">ap</assigned_to>
          <cc>ap</cc>
    
    <cc>ddkilzer</cc>
    
    <cc>emark2k</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>49316</commentid>
    <comment_count>0</comment_count>
    <who name="Mark">emark2k</who>
    <bug_when>2006-07-11 10:46:18 -0700</bug_when>
    <thetext>* note: the URL above is to register to get to the quiz page for Public Radio International&apos;s &quot;Whad&apos;Ya Know?&quot; Online Quiz Questions .

To get to the page where the problem exists requires registration (an email and a nickname only) then you will get to the quiz at URL:  http://notmuch.com/Tools/quiz.pl?user_id=XXXXX       (the XXXX is your unique user id - and unfortunately, there is only one question to answer per day, so I set up multiple accounts to try with multiple browsers to interact on same day...will make sense when you get there - really easy).

OK, the bug:  after answering a quiz question the page refreshes once and says your answer is received (this works in Safari / Webkit).  Then, the site is supposed to automatically refresh and go back to the quiz questions to show your answer as correct and incorrect, and your stats for the week.  This is when Safari/Webkit fail.  The error message is:

Submission Failed
Submission failed for the following reason(s):
You have an error in your SQL syntax near &apos;&quot;&apos; at line 1
Query: SELECT username, username_formatted, id, email FROM users WHERE id = XXXXX&quot;
Hit the &apos;back&apos; button and try your submission again, making changes if necessary.


Firefox 1.5.0.4 and IE 5.23 both seem to navigate the site and return one to the appropriate page.  My first response was to write the webmaster and the response was  &quot;it doesn&apos;t happen on my machine...&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>49320</commentid>
    <comment_count>1</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2006-07-11 11:00:19 -0700</bug_when>
    <thetext>(In reply to comment #0)
&gt; The error message is:
&gt; 
&gt; Submission Failed
&gt; Submission failed for the following reason(s):
&gt; You have an error in your SQL syntax near &apos;&quot;&apos; at line 1
&gt; Query: SELECT username, username_formatted, id, email FROM users WHERE id =
&gt; XXXXX&quot;
&gt; Hit the &apos;back&apos; button and try your submission again, making changes if
&gt; necessary.

That message is very scary from a security standpoint.  (That has nothing to do with the issue with Safari, though.)

This bug would probably benefit from some packet analysis using something like Ethereal or tcpdump.  Compare what Firefox sends to the server when answering the question with what Safari+WebKit sends.
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>49329</commentid>
    <comment_count>2</comment_count>
      <attachid>9375</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2006-07-11 11:52:11 -0700</bug_when>
    <thetext>Created attachment 9375
test case

Ugh, looks like Refresh header parsing is quite broken, neither single nor double quotes work!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>49934</commentid>
    <comment_count>3</comment_count>
    <who name="Mark">emark2k</who>
    <bug_when>2006-07-15 08:21:08 -0700</bug_when>
    <thetext>seems they&apos;ve made some changes on their end...or else Safari is behaving differently now to the interaction.  New error message occurs when click on &quot;Answer Question&quot; button--such that you can&apos;t even answer the question.  Tried to duplicate the problem in IE and FireFox and got the same response so this may be a problem on their end.  Send info to web person.

Error message after clicking &quot;answer&quot; question button:

Submission Failed

Submission failed for the following reason(s):

Access denied for user &apos;&apos;@&apos;localhost&apos; to database &apos;quiz&apos;
Query: LOCK TABLES contest WRITE

Hit the &apos;back&apos; button and try your submission again, making changes if necessary.

</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>49979</commentid>
    <comment_count>4</comment_count>
    <who name="Mark">emark2k</who>
    <bug_when>2006-07-15 14:25:42 -0700</bug_when>
    <thetext>sorry, the error message comes up after seeing the question and clicking &quot;that&apos;s my guess&quot;, not the &quot;answer&quot; button...


</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>50198</commentid>
    <comment_count>5</comment_count>
    <who name="Mark">emark2k</who>
    <bug_when>2006-07-17 14:25:43 -0700</bug_when>
    <thetext>*** IGNORE COMMENTS 3 &amp; 4... they switched servers this week...  

*** Now that they&apos;ve got things &quot;fixed&quot; we are back to the original error message and situation.

Thanks all
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>43507</commentid>
    <comment_count>6</comment_count>
      <attachid>11716</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2006-12-03 03:24:38 -0800</bug_when>
    <thetext>Created attachment 11716
proposed fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>43511</commentid>
    <comment_count>7</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2006-12-03 04:45:16 -0800</bug_when>
    <thetext>(In reply to comment #6)
&gt; Created an attachment (id=11716) [edit]
&gt; proposed fix

Apple&apos;s copyright is missing in new HTTPParsers.{h,cpp} files.  Nice patch!

</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>43418</commentid>
    <comment_count>8</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2006-12-03 11:15:20 -0800</bug_when>
    <thetext>&gt; Apple&apos;s copyright is missing in new HTTPParsers.{h,cpp} files.

I was wondering whether it should be there, given that there is no Apple code in these files. Actually, it seems that Apple employees often don&apos;t preserve copyright notices even when moving old code to new files...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>43420</commentid>
    <comment_count>9</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2006-12-03 14:18:37 -0800</bug_when>
    <thetext>(In reply to comment #8)
&gt; &gt; Apple&apos;s copyright is missing in new HTTPParsers.{h,cpp} files.
&gt; 
&gt; I was wondering whether it should be there, given that there is no Apple code
&gt; in these files. Actually, it seems that Apple employees often don&apos;t preserve
&gt; copyright notices even when moving old code to new files...

After writing Comment #8, I began to wonder whether adding an Apple copyright was needed in that case or not, or whether it would only need to be added if they made future changes.
</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>42942</commentid>
    <comment_count>10</comment_count>
      <attachid>11716</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2006-12-07 15:15:38 -0800</bug_when>
    <thetext>Comment on attachment 11716
proposed fix

+        return ok;
+    } else {

Why use else here?

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>42931</commentid>
    <comment_count>11</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2006-12-08 02:54:00 -0800</bug_when>
    <thetext>&gt; Why use else here?

It seemed slightly more readable to me - we are handling two cases, nice to have both at the same indentation level.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>42778</commentid>
    <comment_count>12</comment_count>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2006-12-08 10:32:30 -0800</bug_when>
    <thetext>Committed revision 18077.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="0"
              isprivate="0"
          >
            <attachid>9375</attachid>
            <date>2006-07-11 11:52:11 -0700</date>
            <delta_ts>2006-07-11 11:52:11 -0700</delta_ts>
            <desc>test case</desc>
            <filename>refresh-with-quotes.pl</filename>
            <type>text/x-perl-script</type>
            <size>188</size>
            <attacher name="Alexey Proskuryakov">ap</attacher>
            
              <data encoding="base64">IyEvdXNyL2Jpbi9wZXJsCiMgU2ltcGxlIHNjcmlwdCB0byBnZW5lcmF0ZSBhIHJlZGlyZWN0IHRv
IGEgc3VjY2VzcyBkb2N1bWVudC4KCnByaW50ICJDb250ZW50LXR5cGU6IHRleHQvcGxhaW5cclxu
IjsKcHJpbnQgIlJlZnJlc2g6IDA7IFVSTD1cJy9cJ1xyXG4iOwpwcmludCAiXHJcbiI7Cgpwcmlu
dCAiRkFJTFVSRVxyXG4iOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>11716</attachid>
            <date>2006-12-03 03:24:38 -0800</date>
            <delta_ts>2006-12-07 15:15:38 -0800</delta_ts>
            <desc>proposed fix</desc>
            <filename>9854r1_patch.txt</filename>
            <type>text/plain</type>
            <size>19754</size>
            <attacher name="Alexey Proskuryakov">ap</attacher>
            
              <data encoding="base64">SW5kZXg6IExheW91dFRlc3RzL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9D
aGFuZ2VMb2cJKHJldmlzaW9uIDE3OTg4KQorKysgTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCSh3b3Jr
aW5nIGNvcHkpCkBAIC0xLDMgKzEsMTYgQEAKKzIwMDYtMTItMDMgIEFsZXhleSBQcm9za3VyeWFr
b3YgIDxhcEB3ZWJraXQub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFRlc3QgZm9yIGh0dHA6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dp
P2lkPTk4NTQKKyAgICAgICAgSFRUUCBSZWZyZXNoIGhlYWRlciB3aXRoIHF1b3RlcyBpcyBwYXJz
ZWQgaW5jb3JyZWN0bHkKKworICAgICAgICAqIGh0dHAvdGVzdHMvbWlzYy9yZWRpcmVjdC13aXRo
LXF1b3Rlcy1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvbWlzYy9y
ZWRpcmVjdC13aXRoLXF1b3Rlcy5waHA6IEFkZGVkLgorICAgICAgICAqIGh0dHAvdGVzdHMvbWlz
Yy9yZXNvdXJjZXMvcmVkaXJlY3Qtc3RlcDIucGhwOiBBZGRlZC4KKyAgICAgICAgKiBodHRwL3Rl
c3RzL21pc2MvcmVzb3VyY2VzL3JlZGlyZWN0LXN0ZXAzLnBocDogQWRkZWQuCisgICAgICAgICog
aHR0cC90ZXN0cy9taXNjL3Jlc291cmNlcy9yZWRpcmVjdC1zdGVwNC5waHA6IEFkZGVkLgorCiAy
MDA2LTEyLTAzICBBbGV4ZXkgUHJvc2t1cnlha292ICA8YXBAd2Via2l0Lm9yZz4KIAogICAgICAg
ICBSZXZpZXdlZCBieSBNaXR6LgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9taXNjL3Jl
ZGlyZWN0LXdpdGgtcXVvdGVzLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL21pc2MvcmVkaXJlY3Qtd2l0aC1xdW90ZXMtZXhwZWN0ZWQudHh0CShyZXZp
c2lvbiAwKQorKysgTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9taXNjL3JlZGlyZWN0LXdpdGgtcXVv
dGVzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSBAQAorU1VDQ0VTUwoKUHJv
cGVydHkgY2hhbmdlcyBvbjogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9taXNjL3JlZGlyZWN0LXdp
dGgtcXVvdGVzLWV4cGVjdGVkLnR4dApfX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fCk5hbWU6IHN2bjptaW1lLXR5cGUKICAg
KyB0ZXh0L3BsYWluCk5hbWU6IHN2bjplb2wtc3R5bGUKICAgKyBuYXRpdmUKCkluZGV4OiBMYXlv
dXRUZXN0cy9odHRwL3Rlc3RzL21pc2MvcmVkaXJlY3Qtd2l0aC1xdW90ZXMucGhwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIExheW91dFRlc3RzL2h0dHAvdGVzdHMvbWlzYy9yZWRpcmVjdC13aXRoLXF1b3Rlcy5w
aHAJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21pc2MvcmVkaXJlY3Qt
d2l0aC1xdW90ZXMucGhwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDE4IEBACis8P3BocAorICAv
LyBUZXN0IGZvciB2YXJpb3VzIHN5bnRheGVzIG9mIFJlZnJlc2ggaGVhZGVyLCAKKyAgLy8gPGh0
dHA6Ly9idWd6aWxsYS5vcGVuZGFyd2luLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTg1ND4uCisKKyAg
aGVhZGVyKCdDb250ZW50LXR5cGU6IHRleHQvaHRtbCcpOworICBoZWFkZXIoJ1JlZnJlc2g6IDAs
IFVSTCAJPSAJInJlc291cmNlcy9yZWRpcmVjdC1zdGVwMi5waHAiJyk7Cis/PgorCis8Ym9keT4K
KzxzY3JpcHQ+CisgICBpZiAod2luZG93LmxheW91dFRlc3RDb250cm9sbGVyKSB7CisgICAgICAg
bGF5b3V0VGVzdENvbnRyb2xsZXIud2FpdFVudGlsRG9uZSgpOworICAgICAgIGxheW91dFRlc3RD
b250cm9sbGVyLmR1bXBBc1RleHQoKTsKKyAgIH0KKzwvc2NyaXB0PgorICAgCis8cD5GQUlMVVJF
IC0gc2hvdWxkIHJlZGlyZWN0ICgxKTxwPgorPC9ib2R5PgpJbmRleDogTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9taXNjL3Jlc291cmNlcy9yZWRpcmVjdC1zdGVwMi5waHAKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9taXNjL3Jlc291cmNlcy9yZWRpcmVjdC1zdGVwMi5waHAJ
KHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21pc2MvcmVzb3VyY2VzL3Jl
ZGlyZWN0LXN0ZXAyLnBocAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSw5IEBACis8P3BocAorICAv
LyBUZXN0IGZvciB2YXJpb3VzIHN5bnRheGVzIG9mIFJlZnJlc2ggaGVhZGVyLCAKKyAgLy8gPGh0
dHA6Ly9idWd6aWxsYS5vcGVuZGFyd2luLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTg1ND4uCisKKyAg
aGVhZGVyKCdDb250ZW50LXR5cGU6IHRleHQvaHRtbCcpOworICBoZWFkZXIoJ1JlZnJlc2g6IAkw
CTsJdXJsPSAJXCdyZWRpcmVjdC1zdGVwMy5waHBcJyAJJyk7Cis/PgorCis8cD5GQUlMVVJFIC0g
c2hvdWxkIHJlZGlyZWN0ICgyKTxwPgpJbmRleDogTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9taXNj
L3Jlc291cmNlcy9yZWRpcmVjdC1zdGVwMy5waHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMv
aHR0cC90ZXN0cy9taXNjL3Jlc291cmNlcy9yZWRpcmVjdC1zdGVwMy5waHAJKHJldmlzaW9uIDAp
CisrKyBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21pc2MvcmVzb3VyY2VzL3JlZGlyZWN0LXN0ZXAz
LnBocAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMSBAQAorPD9waHAKKyAgLy8gVGVzdCBmb3Ig
dmFyaW91cyBzeW50YXhlcyBvZiBSZWZyZXNoIGhlYWRlciwgCisgIC8vIDxodHRwOi8vYnVnemls
bGEub3BlbmRhcndpbi5vcmcvc2hvd19idWcuY2dpP2lkPTk4NTQ+LgorCisgIGhlYWRlcignQ29u
dGVudC10eXBlOiB0ZXh0L2h0bWwnKTsKKz8+Cis8aGVhZD4KKyAgPG1ldGEgaHR0cC1lcXVpdj0i
UmVmcmVzaCIgY29udGVudD0iIDAsICdyZWRpcmVjdC1zdGVwNC5waHAnICI+Cis8L2hlYWQ+CisK
KzxwPkZBSUxVUkUgLSBzaG91bGQgcmVkaXJlY3QgKDMpPHA+CkluZGV4OiBMYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL21pc2MvcmVzb3VyY2VzL3JlZGlyZWN0LXN0ZXA0LnBocAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBMYXlvdXRUZXN0cy9odHRwL3Rlc3RzL21pc2MvcmVzb3VyY2VzL3JlZGlyZWN0LXN0ZXA0LnBo
cAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2h0dHAvdGVzdHMvbWlzYy9yZXNvdXJjZXMv
cmVkaXJlY3Qtc3RlcDQucGhwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsxLDExIEBACis8P3BocAor
ICAvLyBUZXN0IGZvciB2YXJpb3VzIHN5bnRheGVzIG9mIFJlZnJlc2ggaGVhZGVyLCAKKyAgLy8g
PGh0dHA6Ly9idWd6aWxsYS5vcGVuZGFyd2luLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTg1ND4uCisK
KyAgaGVhZGVyKCdDb250ZW50LXR5cGU6IHRleHQvaHRtbCcpOworPz4KKzxoZWFkPgorICA8bWV0
YSBodHRwLWVxdWl2PSJSZWZyZXNoIiBjb250ZW50PScJMAkgOwkyMDAuaHRtbAknPgorPC9oZWFk
PgorCis8cD5GQUlMVVJFIC0gc2hvdWxkIHJlZGlyZWN0ICg0KTxwPgpJbmRleDogV2ViQ29yZS9D
aGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gV2ViQ29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDE3OTg4
KQorKysgV2ViQ29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwyNSBAQAor
MjAwNi0xMi0wMyAgQWxleGV5IFByb3NrdXJ5YWtvdiAgPGFwQHdlYmtpdC5vcmc+CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgaHR0cDovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTg1NAorICAgICAgICBIVFRQIFJlZnJlc2ggaGVhZGVy
IHdpdGggcXVvdGVzIGlzIHBhcnNlZCBpbmNvcnJlY3RseQorCisgICAgICAgICogV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICBBZGRlZCBIVFRQUGFyc2Vycy57aCxj
cHB9LiBJIGludGVuZCB0byBtb3ZlIENvbnRlbnQtVHlwZSBwYXJzaW5nIGhlcmUsIGFzIHdlbGwu
CisKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1l
bnQ6OnByb2Nlc3NIdHRwRXF1aXYpOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6cmVjZWl2ZWRGaXJzdERhdGEpOgorICAg
ICAgICBVc2UgdGhlIG5ldyBpbXBsZW1lbnRhdGlvbiBpbiBIVFRQSGVhZGVycy4KKworICAgICAg
ICAqIHBsYXRmb3JtL25ldHdvcmsvSFRUUFBhcnNlcnMuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OnNraXBXaGl0ZVNwYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OnBhcnNlSFRUUFJlZnJl
c2gpOgorICAgICAgICAqIHBsYXRmb3JtL25ldHdvcmsvSFRUUFBhcnNlcnMuaDogQWRkZWQuCisg
ICAgICAgIE1lcmdlZCBhbmQgcmV3cm90ZSBleGlzdGluZyBpbXBsZW1lbnRhdGlvbnMgZm9yIGJl
dHRlciBGaXJlZm94IGNvbXBhdGliaWxpdHkuCisKIDIwMDYtMTItMDIgIEpvaG4gU3VsbGl2YW4g
IDxzdWxsaXZhbkBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgVGltIE9tZXJuaWNr
CkluZGV4OiBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkocmV2aXNp
b24gMTc5ODcpCisrKyBXZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagko
d29ya2luZyBjb3B5KQpAQCAtMjc5NCw2ICsyNzk0LDggQEAKIAkJRTFFQkJCRDQwQUFDOUI4NzAw
MUZFOEUyIC8qIENTU0NoYXJzZXRSdWxlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEUxRUJCQkQzMEFBQzlCODcwMDFGRThFMiAvKiBDU1NDaGFyc2V0
UnVsZS5jcHAgKi87IH07CiAJCUUxRjA0MjQ2MDk4MzkzODkwMDY2OTRFQSAvKiB4bWxodHRwcmVx
dWVzdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBF
MUYwNDI0NDA5ODM5Mzg5MDA2Njk0RUEgLyogeG1saHR0cHJlcXVlc3QuY3BwICovOyB9OwogCQlF
MUYwNDI0NzA5ODM5Mzg5MDA2Njk0RUEgLyogeG1saHR0cHJlcXVlc3QuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUxRjA0MjQ1MDk4MzkzODkwMDY2OTRF
QSAvKiB4bWxodHRwcmVxdWVzdC5oICovOyB9OworCQlFMUYwREE1MTBCMjJERjlEMDA0RDc4MkYg
LyogSFRUUFBhcnNlcnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEUxRjBEQTRGMEIyMkRGOUQwMDRENzgyRiAvKiBIVFRQUGFyc2Vycy5oICovOyB9Owor
CQlFMUYwREE1MjBCMjJERjlEMDA0RDc4MkYgLyogSFRUUFBhcnNlcnMuY3BwIGluIFNvdXJjZXMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRTFGMERBNTAwQjIyREY5RDAwNEQ3
ODJGIC8qIEhUVFBQYXJzZXJzLmNwcCAqLzsgfTsKIAkJRUQwNDhBQkMwODMzRjEzMjAwNkUxRTY3
IC8qIHRleHRBcmVhUmVzaXplQ29ybmVyLnRpZmYgaW4gUmVzb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEVEMDQ4QUJCMDgzM0YxMzIwMDZFMUU2NyAvKiB0ZXh0QXJl
YVJlc2l6ZUNvcm5lci50aWZmICovOyB9OwogCQlFRDJCQTgzQzA5QTI0QjkxMDA2QzBBQzQgLyog
RG9jdW1lbnRNYXJrZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEVEMkJBODNCMDlBMjRCOTEwMDZDMEFDNCAvKiBEb2N1bWVudE1hcmtlci5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUVERUM5ODAzMEFF
RDdFMTcwMDU5MTM3RiAvKiBXZWJDb3JlUHJlZml4LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFREVDOTgwMjBBRUQ3RTE3MDA1OTEzN0YgLyogV2ViQ29y
ZVByZWZpeC5oICovOyB9OwpAQCAtNTg4Myw2ICs1ODg1LDggQEAKIAkJRTFFQkJCRDMwQUFDOUI4
NzAwMUZFOEUyIC8qIENTU0NoYXJzZXRSdWxlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IENTU0NoYXJzZXRSdWxlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJRTFGMDQyNDQwOTgzOTM4OTAwNjY5NEVBIC8qIHhtbGh0dHByZXF1ZXN0LmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IHhtbGh0dHByZXF1ZXN0LmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRTFGMDQyNDUwOTgzOTM4OTAwNjY5NEVBIC8qIHht
bGh0dHByZXF1ZXN0LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IHhtbGh0dHBy
ZXF1ZXN0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUUxRjBEQTRGMEIyMkRGOUQw
MDRENzgyRiAvKiBIVFRQUGFyc2Vycy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBIVFRQUGFyc2Vycy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlFMUYwREE1MDBC
MjJERjlEMDA0RDc4MkYgLyogSFRUUFBhcnNlcnMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gSFRUUFBhcnNlcnMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlFRDA0OEFCQjA4MzNGMTMyMDA2RTFFNjcgLyogdGV4dEFyZWFSZXNpemVDb3JuZXIudGlm
ZiAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IGltYWdl
LnRpZmY7IHBhdGggPSB0ZXh0QXJlYVJlc2l6ZUNvcm5lci50aWZmOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlFRDJCQTgzQjA5QTI0QjkxMDA2QzBBQzQgLyogRG9jdW1lbnRNYXJrZXIu
aCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRG9jdW1lbnRNYXJrZXIuaDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRURFQzk4MDIwQUVEN0UxNzAwNTkxMzdGIC8qIFdl
YkNvcmVQcmVmaXguaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkNvcmVQ
cmVmaXguaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTY1NTcsNiArNjU2MSw4IEBA
CiAJCQkJNjUxODg4ODYwQUZGM0JGNzAwMTY0NzIwIC8qIFJlc291cmNlRXJyb3IuY3BwICovLAog
CQkJCTY1MTg4ODg3MEFGRjNCRjcwMDE2NDcyMCAvKiBSZXNvdXJjZUVycm9yLmggKi8sCiAJCQkJ
NjU1QTgxQkQwQUVGNjdFNjAwMDk3NUYwIC8qIEhUVFBIZWFkZXJNYXAuaCAqLywKKwkJCQlFMUYw
REE0RjBCMjJERjlEMDA0RDc4MkYgLyogSFRUUFBhcnNlcnMuaCAqLywKKwkJCQlFMUYwREE1MDBC
MjJERjlEMDA0RDc4MkYgLyogSFRUUFBhcnNlcnMuY3BwICovLAogCQkJCTY1NkI4NTM3MEFFQTFG
OUEwMEEwOTVCNCAvKiBSZXNvdXJjZUhhbmRsZS5oICovLAogCQkJCTY1NkI4NERDMEFFQTFEMzEw
MEEwOTVCNCAvKiBSZXNvdXJjZUhhbmRsZS5jcHAgKi8sCiAJCQkJNjU2Qjg0REUwQUVBMUQzMTAw
QTA5NUI0IC8qIFJlc291cmNlSGFuZGxlQ2xpZW50LmggKi8sCkBAIC0xMDgwMiw2ICsxMDgwOCw3
IEBACiAJCQkJMDYwMjdDQUQwQjFDQkZDMDAwODg0QjJEIC8qIENvbnRleHRNZW51SXRlbS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJQjIzMTBCNzcwQjFGNDZBMjAwRDU1RDg3IC8qIENnU3VwcG9ydC5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJOTMyODcxQzAwQjIwREVCNzAwNDkwMzVBIC8qIFBsYXRmb3Jt
TWVudURlc2NyaXB0aW9uLmggaW4gSGVhZGVycyAqLywKKwkJCQlFMUYwREE1MTBCMjJERjlEMDA0
RDc4MkYgLyogSFRUUFBhcnNlcnMuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlG
b3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtMTIxMTUsNiArMTIxMjIs
NyBAQAogCQkJCUIyMzEwQjc2MEIxRjQ2QTIwMEQ1NUQ4NyAvKiBDZ1N1cHBvcnQuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJQjIzMTBCNzgwQjFGNDZBMzAwRDU1RDg3IC8qIFJlbmRlclBhdGhDZy5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQlCMkVEOTc3MTBCMUY1NUNFMDAyNTdEMEYgLyogR3JhcGhp
Y3NDb250ZXh0Q0cuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRTFGMERBNTIwQjIyREY5RDAwNEQ3
ODJGIC8qIEhUVFBQYXJzZXJzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlG
b3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpJbmRleDogV2ViQ29yZS9kb20v
RG9jdW1lbnQuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAkocmV2
aXNpb24gMTc5ODcpCisrKyBXZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAJKHdvcmtpbmcgY29weSkK
QEAgLTQ5LDYgKzQ5LDggQEAKICNpbmNsdWRlICJGcmFtZUxvYWRlci5oIgogI2luY2x1ZGUgIkZy
YW1lVHJlZS5oIgogI2luY2x1ZGUgIkZyYW1lVmlldy5oIgorI2luY2x1ZGUgIkhpdFRlc3RSZXF1
ZXN0LmgiCisjaW5jbHVkZSAiSGl0VGVzdFJlc3VsdC5oIgogI2luY2x1ZGUgIkhUTUxCb2R5RWxl
bWVudC5oIgogI2luY2x1ZGUgIkhUTUxEb2N1bWVudC5oIgogI2luY2x1ZGUgIkhUTUxFbGVtZW50
RmFjdG9yeS5oIgpAQCAtNTksOCArNjEsNyBAQAogI2luY2x1ZGUgIkhUTUxOYW1lQ29sbGVjdGlv
bi5oIgogI2luY2x1ZGUgIkhUTUxOYW1lcy5oIgogI2luY2x1ZGUgIkhUTUxTdHlsZUVsZW1lbnQu
aCIKLSNpbmNsdWRlICJIaXRUZXN0UmVxdWVzdC5oIgotI2luY2x1ZGUgIkhpdFRlc3RSZXN1bHQu
aCIKKyNpbmNsdWRlICJIVFRQUGFyc2Vycy5oIgogI2luY2x1ZGUgIkpTRWRpdG9yLmgiCiAjaW5j
bHVkZSAiS2V5Ym9hcmRFdmVudC5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKQEAgLTE2NTIsMzcg
KzE2NTMsMTQgQEAgdm9pZCBEb2N1bWVudDo6cHJvY2Vzc0h0dHBFcXVpdihjb25zdCBTdAogICAg
ICAgICBtX3ByZWZlcnJlZFN0eWxlc2hlZXRTZXQgPSBjb250ZW50OwogICAgICAgICB1cGRhdGVT
dHlsZVNlbGVjdG9yKCk7CiAgICAgfSBlbHNlIGlmIChlcXVhbElnbm9yaW5nQ2FzZShlcXVpdiwg
InJlZnJlc2giKSkgewotICAgICAgICAvLyBnZXQgZGVsYXkgYW5kIHVybAotICAgICAgICBEZXBy
ZWNhdGVkU3RyaW5nIHN0ciA9IGNvbnRlbnQuc3RyaXBXaGl0ZVNwYWNlKCkuZGVwcmVjYXRlZFN0
cmluZygpOwotICAgICAgICBpbnQgcG9zID0gc3RyLmZpbmQoUmVndWxhckV4cHJlc3Npb24oIls7
LF0iKSk7Ci0gICAgICAgIGlmIChwb3MgPT0gLTEpCi0gICAgICAgICAgICBwb3MgPSBzdHIuZmlu
ZChSZWd1bGFyRXhwcmVzc2lvbigiWyBcdF0iKSk7Ci0KLSAgICAgICAgaWYgKHBvcyA9PSAtMSkg
Ly8gVGhlcmUgY2FuIGJlIG5vIHVybCAoRGF2aWQpCi0gICAgICAgIHsKLSAgICAgICAgICAgIGJv
b2wgb2sgPSBmYWxzZTsKLSAgICAgICAgICAgIGludCBkZWxheSA9IDA7Ci0gICAgICAgICAgICBk
ZWxheSA9IHN0ci50b0ludCgmb2spOwotICAgICAgICAgICAgLy8gV2Ugd2FudCBhIG5ldyBoaXN0
b3J5IGl0ZW0gaWYgdGhlIHJlZnJlc2ggdGltZW91dCA+IDEgc2Vjb25kCi0gICAgICAgICAgICBp
ZiAob2sgJiYgZnJhbWUpCisgICAgICAgIGRvdWJsZSBkZWxheTsKKyAgICAgICAgU3RyaW5nIHVy
bDsKKyAgICAgICAgaWYgKGZyYW1lICYmIHBhcnNlSFRUUFJlZnJlc2goY29udGVudCwgZGVsYXks
IHVybCkpIHsKKyAgICAgICAgICAgIGlmICh1cmwuaXNFbXB0eSgpKQogICAgICAgICAgICAgICAg
IGZyYW1lLT5sb2FkZXIoKS0+c2NoZWR1bGVSZWRpcmVjdGlvbihkZWxheSwgZnJhbWUtPmxvYWRl
cigpLT51cmwoKS51cmwoKSwgZGVsYXkgPD0gMSk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAg
ICAgICBkb3VibGUgZGVsYXkgPSAwOwotICAgICAgICAgICAgYm9vbCBvayA9IGZhbHNlOwotICAg
ICAgICAgICAgZGVsYXkgPSBzdHIubGVmdChwb3MpLnN0cmlwV2hpdGVTcGFjZSgpLnRvRG91Ymxl
KCZvayk7Ci0KLSAgICAgICAgICAgIHBvcysrOwotICAgICAgICAgICAgd2hpbGUocG9zIDwgKGlu
dClzdHIubGVuZ3RoKCkgJiYgc3RyW3Bvc10uaXNTcGFjZSgpKSBwb3MrKzsKLSAgICAgICAgICAg
IHN0ciA9IHN0ci5taWQocG9zKTsKLSAgICAgICAgICAgIGlmIChzdHIuZmluZCgidXJsIiwgMCwg
IGZhbHNlKSA9PSAwKQotICAgICAgICAgICAgICAgIHN0ciA9IHN0ci5taWQoMyk7Ci0gICAgICAg
ICAgICBzdHIgPSBzdHIuc3RyaXBXaGl0ZVNwYWNlKCk7Ci0gICAgICAgICAgICBpZiAoc3RyLmxl
bmd0aCgpICYmIHN0clswXSA9PSAnPScpCi0gICAgICAgICAgICAgICAgc3RyID0gc3RyLm1pZCgx
KS5zdHJpcFdoaXRlU3BhY2UoKTsKLSAgICAgICAgICAgIHN0ciA9IHBhcnNlVVJMKFN0cmluZyhz
dHIpKS5kZXByZWNhdGVkU3RyaW5nKCk7Ci0gICAgICAgICAgICBpZiAob2sgJiYgZnJhbWUpCisg
ICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAgLy8gV2Ugd2FudCBhIG5ldyBoaXN0b3J5
IGl0ZW0gaWYgdGhlIHJlZnJlc2ggdGltZW91dCA+IDEgc2Vjb25kCi0gICAgICAgICAgICAgICAg
ZnJhbWUtPmxvYWRlcigpLT5zY2hlZHVsZVJlZGlyZWN0aW9uKGRlbGF5LCBjb21wbGV0ZVVSTChz
dHIpLCBkZWxheSA8PSAxKTsKKyAgICAgICAgICAgICAgICBmcmFtZS0+bG9hZGVyKCktPnNjaGVk
dWxlUmVkaXJlY3Rpb24oZGVsYXksIGNvbXBsZXRlVVJMKHVybCksIGRlbGF5IDw9IDEpOwogICAg
ICAgICB9CiAgICAgfSBlbHNlIGlmIChlcXVhbElnbm9yaW5nQ2FzZShlcXVpdiwgImV4cGlyZXMi
KSkgewogICAgICAgICBTdHJpbmcgc3RyID0gY29udGVudC5zdHJpcFdoaXRlU3BhY2UoKTsKSW5k
ZXg6IFdlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3Jl
L2xvYWRlci9GcmFtZUxvYWRlci5jcHAJKHJldmlzaW9uIDE3OTg3KQorKysgV2ViQ29yZS9sb2Fk
ZXIvRnJhbWVMb2FkZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC01Myw2ICs1Myw3IEBACiAjaW5j
bHVkZSAiSFRNTE5hbWVzLmgiCiAjaW5jbHVkZSAiSFRNTE9iamVjdEVsZW1lbnQuaCIKICNpbmNs
dWRlICJIVE1MUGx1Z0luRWxlbWVudC5oIgorI2luY2x1ZGUgIkhUVFBQYXJzZXJzLmgiCiAjaW5j
bHVkZSAiSWNvbkRhdGFiYXNlLmgiCiAjaW5jbHVkZSAiSWNvbkxvYWRlci5oIgogI2luY2x1ZGUg
Ik1haW5SZXNvdXJjZUxvYWRlci5oIgpAQCAtNzYyLDQxICs3NjMsMTcgQEAgdm9pZCBGcmFtZUxv
YWRlcjo6cmVjZWl2ZWRGaXJzdERhdGEoKQogICAgIG1fd29ya2luZ1VSTCA9IEtVUkwoKTsKIAog
ICAgIGNvbnN0IFN0cmluZyYgcmVmcmVzaCA9IG1fcmVzcG9uc2VSZWZyZXNoSGVhZGVyOwotICAg
IGlmIChyZWZyZXNoLmlzRW1wdHkoKSkKLSAgICAgICAgcmV0dXJuOwogCiAgICAgZG91YmxlIGRl
bGF5OwogICAgIFN0cmluZyBVUkw7CiAKLSAgICBpbnQgcG9zID0gcmVmcmVzaC5maW5kKCc7Jyk7
Ci0gICAgaWYgKHBvcyA9PSAtMSkKLSAgICAgICAgcG9zID0gcmVmcmVzaC5maW5kKCcsJyk7Ci0g
ICAgaWYgKHBvcyA9PSAtMSkgewotICAgICAgICBkZWxheSA9IHJlZnJlc2guc3RyaXBXaGl0ZVNw
YWNlKCkudG9Eb3VibGUoKTsKKyAgICBpZiAoIXBhcnNlSFRUUFJlZnJlc2gocmVmcmVzaCwgZGVs
YXksIFVSTCkpCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChVUkwuaXNFbXB0eSgpKQogICAg
ICAgICBVUkwgPSBtX1VSTC51cmwoKTsKLSAgICB9IGVsc2UgewotICAgICAgICBpbnQgZW5kUG9z
ID0gcmVmcmVzaC5sZW5ndGgoKTsKLSAgICAgICAgZGVsYXkgPSByZWZyZXNoLmxlZnQocG9zKS5z
dHJpcFdoaXRlU3BhY2UoKS50b0RvdWJsZSgpOwotICAgICAgICB3aGlsZSAocmVmcmVzaFsrK3Bv
c10gPT0gJyAnKQotICAgICAgICAgICAgOwotICAgICAgICBpZiAocmVmcmVzaC5maW5kKCJ1cmwi
LCBwb3MsIGZhbHNlKSA9PSBwb3MpIHsKLSAgICAgICAgICAgIHBvcyArPSAzOwotICAgICAgICAg
ICAgd2hpbGUgKHJlZnJlc2hbcG9zXSA9PSAnICcgfHwgcmVmcmVzaFtwb3NdID09ICc9JykKLSAg
ICAgICAgICAgICAgICBwb3MrKzsKLSAgICAgICAgICAgIGlmIChyZWZyZXNoW3Bvc10gPT0gJyIn
KSB7Ci0gICAgICAgICAgICAgICAgcG9zKys7Ci0gICAgICAgICAgICAgICAgaW50IGluZGV4ID0g
ZW5kUG9zIC0gMTsKLSAgICAgICAgICAgICAgICB3aGlsZSAoaW5kZXggPiBwb3MpIHsKLSAgICAg
ICAgICAgICAgICAgICAgaWYgKHJlZnJlc2hbaW5kZXhdID09ICciJykKLSAgICAgICAgICAgICAg
ICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgICBpbmRleC0tOwotICAgICAgICAg
ICAgICAgIH0KLSAgICAgICAgICAgICAgICBpZiAoaW5kZXggPiBwb3MpCi0gICAgICAgICAgICAg
ICAgICAgIGVuZFBvcyA9IGluZGV4OwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAg
IFVSTCA9IG1fZnJhbWUtPmRvY3VtZW50KCktPmNvbXBsZXRlVVJMKHJlZnJlc2guc3Vic3RyaW5n
KHBvcywgZW5kUG9zIC0gcG9zKSk7Ci0gICAgfQorICAgIGVsc2UKKyAgICAgICAgVVJMID0gbV9m
cmFtZS0+ZG9jdW1lbnQoKS0+Y29tcGxldGVVUkwoVVJMKTsKIAogICAgIC8vIFdlIHdhbnQgYSBu
ZXcgaGlzdG9yeSBpdGVtIGlmIHRoZSByZWZyZXNoIHRpbWVvdXQgPiAxIHNlY29uZAogICAgIHNj
aGVkdWxlUmVkaXJlY3Rpb24oZGVsYXksIFVSTCwgZGVsYXkgPD0gMSk7CkluZGV4OiBXZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvSFRUUFBhcnNlcnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUv
cGxhdGZvcm0vbmV0d29yay9IVFRQUGFyc2Vycy5jcHAJKHJldmlzaW9uIDApCisrKyBXZWJDb3Jl
L3BsYXRmb3JtL25ldHdvcmsvSFRUUFBhcnNlcnMuY3BwCShyZXZpc2lvbiAwKQpAQCAtMCwwICsx
LDk4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA2IEFsZXhleSBQcm9za3VyeWFrb3YgKGFw
QHdlYmtpdC5vcmcpCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6
CisgKgorICogMS4gIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLiAKKyAqIDIuICBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLiAKKyAqIDMuICBOZWl0aGVyIHRoZSBuYW1l
IG9mIEFwcGxlIENvbXB1dGVyLCBJbmMuICgiQXBwbGUiKSBub3IgdGhlIG5hbWVzIG9mCisgKiAg
ICAgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJv
ZHVjdHMgZGVyaXZlZAorICogICAgIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmlj
IHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4gCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9W
SURFRCBCWSBBUFBMRSBBTkQgSVRTIENPTlRSSUJVVE9SUyAiQVMgSVMiIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFIElNUExJRUQKKyAqIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUKKyAqIERJU0NMQUlNRUQuIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIE9SIElUUyBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkKKyAq
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTCisgKiAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7CisgKiBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQKKyAqIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YKKyAqIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkhUVFBQYXJzZXJz
LmgiCisKKyNpbmNsdWRlICJQbGF0Zm9ybVN0cmluZy5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKKy8vIHRydWUgaWYgdGhlcmUgaXMgbW9yZSB0byBwYXJzZQorc3RhdGljIGlubGluZSBib29s
IHNraXBXaGl0ZVNwYWNlKGNvbnN0IFN0cmluZyYgc3RyLCBpbnQmIHBvcykKK3sKKyAgICBpbnQg
bGVuID0gc3RyLmxlbmd0aCgpOworCisgICAgd2hpbGUgKHBvcyAhPSBsZW4gJiYgKHN0cltwb3Nd
ID09ICdcdCcgfHwgc3RyW3Bvc10gPT0gJyAnKSkKKyAgICAgICAgKytwb3M7CisgICAgcmV0dXJu
IHBvcyAhPSBsZW47Cit9CisKK2Jvb2wgcGFyc2VIVFRQUmVmcmVzaChjb25zdCBTdHJpbmcmIHJl
ZnJlc2gsIGRvdWJsZSYgZGVsYXksIFN0cmluZyYgdXJsKQoreworICAgIGludCBsZW4gPSByZWZy
ZXNoLmxlbmd0aCgpOworICAgIGludCBwb3MgPSAwOworICAgIAorICAgIGlmICghc2tpcFdoaXRl
U3BhY2UocmVmcmVzaCwgcG9zKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworICAgIAorICAgIHdo
aWxlIChwb3MgIT0gbGVuICYmIHJlZnJlc2hbcG9zXSAhPSAnLCcgJiYgcmVmcmVzaFtwb3NdICE9
ICc7JykKKyAgICAgICAgKytwb3M7CisgICAgCisgICAgaWYgKHBvcyA9PSBsZW4pIHsgLy8gbm8g
VVJMCisgICAgICAgIHVybCA9IFN0cmluZygpOworICAgICAgICBib29sIG9rOworICAgICAgICBk
ZWxheSA9IHJlZnJlc2guc3RyaXBXaGl0ZVNwYWNlKCkudG9Eb3VibGUoJm9rKTsKKyAgICAgICAg
cmV0dXJuIG9rOworICAgIH0gZWxzZSB7CisgICAgICAgIGJvb2wgb2s7CisgICAgICAgIGRlbGF5
ID0gcmVmcmVzaC5sZWZ0KHBvcykuc3RyaXBXaGl0ZVNwYWNlKCkudG9Eb3VibGUoJm9rKTsKKyAg
ICAgICAgaWYgKCFvaykKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAgCisgICAg
ICAgICsrcG9zOworICAgICAgICBza2lwV2hpdGVTcGFjZShyZWZyZXNoLCBwb3MpOworICAgICAg
ICBpbnQgdXJsU3RhcnRQb3MgPSBwb3M7CisgICAgICAgIGlmIChyZWZyZXNoLmZpbmQoInVybCIs
IHVybFN0YXJ0UG9zLCBmYWxzZSkgPT0gdXJsU3RhcnRQb3MpIHsKKyAgICAgICAgICAgIHVybFN0
YXJ0UG9zICs9IDM7CisgICAgICAgICAgICBza2lwV2hpdGVTcGFjZShyZWZyZXNoLCB1cmxTdGFy
dFBvcyk7CisgICAgICAgICAgICBpZiAocmVmcmVzaFt1cmxTdGFydFBvc10gPT0gJz0nKSB7Cisg
ICAgICAgICAgICAgICAgKyt1cmxTdGFydFBvczsKKyAgICAgICAgICAgICAgICBza2lwV2hpdGVT
cGFjZShyZWZyZXNoLCB1cmxTdGFydFBvcyk7CisgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAg
ICAgICAgICB1cmxTdGFydFBvcyA9IHBvczsgIC8vIGUuZy4gIlJlZnJlc2g6IDA7IHVybC5odG1s
IgorICAgICAgICB9CisKKyAgICAgICAgaW50IHVybEVuZFBvcyA9IGxlbjsKKworICAgICAgICBp
ZiAocmVmcmVzaFt1cmxTdGFydFBvc10gPT0gJyInIHx8IHJlZnJlc2hbdXJsU3RhcnRQb3NdID09
ICdcJycpIHsKKyAgICAgICAgICAgIFVDaGFyIHF1b3RhdGlvbk1hcmsgPSByZWZyZXNoW3VybFN0
YXJ0UG9zXTsKKyAgICAgICAgICAgIHVybFN0YXJ0UG9zKys7CisgICAgICAgICAgICB3aGlsZSAo
dXJsRW5kUG9zID4gdXJsU3RhcnRQb3MpIHsKKyAgICAgICAgICAgICAgICB1cmxFbmRQb3MtLTsK
KyAgICAgICAgICAgICAgICBpZiAocmVmcmVzaFt1cmxFbmRQb3NdID09IHF1b3RhdGlvbk1hcmsp
CisgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICB9CisK
KyAgICAgICAgdXJsID0gcmVmcmVzaC5zdWJzdHJpbmcodXJsU3RhcnRQb3MsIHVybEVuZFBvcyAt
IHVybFN0YXJ0UG9zKS5zdHJpcFdoaXRlU3BhY2UoKTsKKyAgICAgICAgcmV0dXJuIHRydWU7Cisg
ICAgfQorfQorCit9CgpQcm9wZXJ0eSBjaGFuZ2VzIG9uOiBXZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvSFRUUFBhcnNlcnMuY3BwCl9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX18KTmFtZTogc3ZuOmVvbC1zdHlsZQogICArIG5h
dGl2ZQoKSW5kZXg6IFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9IVFRQUGFyc2Vycy5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFdlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9IVFRQUGFyc2Vycy5oCShyZXZpc2lv
biAwKQorKysgV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0hUVFBQYXJzZXJzLmgJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsMzkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDYgQWxleGV5IFBy
b3NrdXJ5YWtvdiAoYXBAd2Via2l0Lm9yZykKKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqCisgKiAxLiAgUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuIAorICogMi4gIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uIAorICogMy4gIE5l
aXRoZXIgdGhlIG5hbWUgb2YgQXBwbGUgQ29tcHV0ZXIsIEluYy4gKCJBcHBsZSIpIG5vciB0aGUg
bmFtZXMgb2YKKyAqICAgICBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ug
b3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkCisgKiAgICAgZnJvbSB0aGlzIHNvZnR3YXJlIHdp
dGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLiAKKyAqCisgKiBUSElTIFNP
RlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIEFORCBJVFMgQ09OVFJJQlVUT1JTICJBUyBJUyIg
QU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRAorICogV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRQorICogRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgT1IgSVRTIENPTlRSSUJVVE9SUyBCRSBMSUFC
TEUgRk9SIEFOWQorICogRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMKKyAqIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsK
KyAqIExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORAorICogT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRgorICogVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVmIEhUVFBQYXJzZXJzX2gKKyNkZWZp
bmUgSFRUUFBhcnNlcnNfaAorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKKyAgICBjbGFzcyBTdHJp
bmc7CisKKyAgICBib29sIHBhcnNlSFRUUFJlZnJlc2goY29uc3QgU3RyaW5nJiByZWZyZXNoLCBk
b3VibGUmIGRlbGF5LCBTdHJpbmcmIHVybCk7Cit9CisKKyNlbmRpZgoKUHJvcGVydHkgY2hhbmdl
cyBvbjogV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL0hUVFBQYXJzZXJzLmgKX19fX19fX19fX19f
X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpO
YW1lOiBzdm46ZW9sLXN0eWxlCiAgICsgbmF0aXZlCgo=
</data>
<flag name="review"
          id="4223"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>