<?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>100576</bug_id>
          
          <creation_ts>2012-10-26 16:47:00 -0700</creation_ts>
          <short_desc>Non-special escape character sequences cause JSC::Lexer::parseString to create 16 bit strings</short_desc>
          <delta_ts>2022-02-27 23:26:03 -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>JavaScriptCore</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Michael Saboff">msaboff</reporter>
          <assigned_to name="Michael Saboff">msaboff</assigned_to>
          
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>752578</commentid>
    <comment_count>0</comment_count>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2012-10-26 16:47:00 -0700</bug_when>
    <thetext>During processing escape characters, like \n or \xXX, if parseString() sees an escaped character that doesn&apos;t change it will create a 16 bit string.  That is an escaped character that returns the character itself. A common example would be slashes in a URL:  &quot;http:\/\/foo.com\/bar&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>752698</commentid>
    <comment_count>1</comment_count>
      <attachid>171077</attachid>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2012-10-26 23:46:23 -0700</bug_when>
    <thetext>Created attachment 171077
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>752790</commentid>
    <comment_count>2</comment_count>
      <attachid>171077</attachid>
    <who name="Oliver Hunt">oliver</who>
    <bug_when>2012-10-27 10:27:12 -0700</bug_when>
    <thetext>Comment on attachment 171077
Patch

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

Can you also add tests for characters &lt; 32 and greater than 127

Essentially okay, but i&apos;d like to see the refreshed patch before r+&apos;ing

&gt; Source/JavaScriptCore/parser/Lexer.cpp:654
&gt; +        return singleCharacterEscapeValuesForASCII[c-32];

Alas you&apos;re not using the FixedArray type (you can&apos;t because there&apos;s no nice way to initialize it), so i would at the very least add
ASSERT(c - 32 &lt; ARRAY_SIZE(singleCharacterEscapeValuesForASCII));

&gt; LayoutTests/fast/js/script-tests/normal-character-escapes-in-string-literals.js:9
&gt; +    shouldBe(&apos;eval(\&apos;&quot;&apos; + escapedCharacter + &apos;&quot;\&apos;)&apos;, &quot;expectedResult&quot;);

don&apos;t quote expectedResult here, it will make the test output much more sane.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>753648</commentid>
    <comment_count>3</comment_count>
      <attachid>171285</attachid>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2012-10-29 11:39:41 -0700</bug_when>
    <thetext>Created attachment 171285
Patch with suggested updates

Needed to change the ShouldBe() to shouldBeEqualToString() to work with the unquoted expectedResult.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>753653</commentid>
    <comment_count>4</comment_count>
      <attachid>171285</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2012-10-29 11:51:30 -0700</bug_when>
    <thetext>Comment on attachment 171285
Patch with suggested updates

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

&gt; Source/JavaScriptCore/ChangeLog:16
&gt; +        (JSC::::Lexer):

?

&gt; Source/JavaScriptCore/ChangeLog:19
&gt; +        (JSC::::parseString):
&gt; +        (JSC::::parseStringSlowCase):

Should be:

    (JSC::Lexer::parseString):
    (JSC::Lexer::parseStringSlowCase):

The script gets it wrong, but you could fix it.

&gt; Source/JavaScriptCore/parser/Lexer.cpp:657
&gt; +    if ((c &gt;= 32) &amp;&amp; (c &lt;= 127)) {
&gt; +        ASSERT(static_cast&lt;size_t&gt;(c - 32) &lt; ARRAY_SIZE(singleCharacterEscapeValuesForASCII));
&gt; +        return singleCharacterEscapeValuesForASCII[c - 32];
&gt;      }
&gt; +    return 0;

Why not save two branches by putting a bunch of zeros in for 0..31 and 128..255?

&gt; LayoutTests/ChangeLog:8
&gt; +        Added a new test to validated the behaviorC of the corresponding changes to string processing

Typo: behaviorC

&gt; LayoutTests/fast/js/normal-character-escapes-in-string-literals-expected.txt:88
&gt; +PASS eval(&apos;&quot;\Â &quot;&apos;) is &quot;Â &quot;
&gt; +PASS eval(&apos;&quot;\Â£&quot;&apos;) is &quot;Â£&quot;
&gt; +PASS eval(&apos;&quot;\Â«&quot;&apos;) is &quot;Â«&quot;
&gt; +PASS eval(&apos;&quot;\Â´&quot;&apos;) is &quot;Â´&quot;

All the others are great, but these end up a little ugly.

&gt; LayoutTests/fast/js/script-tests/normal-character-escapes-in-string-literals.js:8
&gt; +    escapedCharacter = &apos;\\&apos; + character;
&gt; +    expectedResult = character;

No need for these local variables.

&gt; LayoutTests/fast/js/script-tests/normal-character-escapes-in-string-literals.js:9
&gt; +    shouldBeEqualToString(&apos;eval(\&apos;&quot;&apos; + escapedCharacter + &apos;&quot;\&apos;)&apos;, expectedResult);

Could be:
 
    shouldBeEqualToString(&apos;eval(\&apos;&quot;\\&apos; + character + &apos;&quot;\&apos;)&apos;, character);</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>753722</commentid>
    <comment_count>5</comment_count>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2012-10-29 13:46:37 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; (From update of attachment 171285 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=171285&amp;action=review
&gt; 
&gt; &gt; Source/JavaScriptCore/ChangeLog:16
&gt; &gt; +        (JSC::::Lexer):
&gt; 
&gt; ?

I think this is from the table.  I deleted it.

&gt; &gt; Source/JavaScriptCore/ChangeLog:19
&gt; &gt; +        (JSC::::parseString):
&gt; &gt; +        (JSC::::parseStringSlowCase):
&gt; 
&gt; Should be:
&gt; 
&gt;     (JSC::Lexer::parseString):
&gt;     (JSC::Lexer::parseStringSlowCase):
&gt; 
&gt; The script gets it wrong, but you could fix it.

Fixed.

&gt; &gt; Source/JavaScriptCore/parser/Lexer.cpp:657
&gt; &gt; +    if ((c &gt;= 32) &amp;&amp; (c &lt;= 127)) {
&gt; &gt; +        ASSERT(static_cast&lt;size_t&gt;(c - 32) &lt; ARRAY_SIZE(singleCharacterEscapeValuesForASCII));
&gt; &gt; +        return singleCharacterEscapeValuesForASCII[c - 32];
&gt; &gt;      }
&gt; &gt; +    return 0;
&gt; 
&gt; Why not save two branches by putting a bunch of zeros in for 0..31 and 128..255?

I filled in entries for 0..31 and eliminated one branch and the subtraction.  The argument is an int and can be in the UChar range (0..65535) so I didn&apos;t extend beyond 127.

&gt; &gt; LayoutTests/ChangeLog:8
&gt; &gt; +        Added a new test to validated the behaviorC of the corresponding changes to string processing
&gt; 
&gt; Typo: behaviorC

Fixed.

&gt; &gt; LayoutTests/fast/js/normal-character-escapes-in-string-literals-expected.txt:88
&gt; &gt; +PASS eval(&apos;&quot;\Â &quot;&apos;) is &quot;Â &quot;
&gt; &gt; +PASS eval(&apos;&quot;\Â£&quot;&apos;) is &quot;Â£&quot;
&gt; &gt; +PASS eval(&apos;&quot;\Â«&quot;&apos;) is &quot;Â«&quot;
&gt; &gt; +PASS eval(&apos;&quot;\Â´&quot;&apos;) is &quot;Â´&quot;
&gt; 
&gt; All the others are great, but these end up a little ugly.

I made them half as ugly by using charCodeAt().  New testOther() contains
    shouldEvaluateTo(&apos;eval(\&apos;&quot;\\&apos; + character + &apos;&quot;\&apos;).charCodeAt(0)&apos;, character.charCodeAt(0));

Now those entries are
+PASS eval(&apos;&quot;\ &quot;&apos;).charCodeAt(0) is 160
+PASS eval(&apos;&quot;\£&quot;&apos;).charCodeAt(0) is 163
+PASS eval(&apos;&quot;\«&quot;&apos;).charCodeAt(0) is 171
+PASS eval(&apos;&quot;\´&quot;&apos;).charCodeAt(0) is 180

If we test characters with codes above 127 I think we&apos;ll have this ugliness.

&gt; &gt; LayoutTests/fast/js/script-tests/normal-character-escapes-in-string-literals.js:8
&gt; &gt; +    escapedCharacter = &apos;\\&apos; + character;
&gt; &gt; +    expectedResult = character;
&gt; 
&gt; No need for these local variables.
&gt; 
&gt; &gt; LayoutTests/fast/js/script-tests/normal-character-escapes-in-string-literals.js:9
&gt; &gt; +    shouldBeEqualToString(&apos;eval(\&apos;&quot;&apos; + escapedCharacter + &apos;&quot;\&apos;)&apos;, expectedResult);
&gt; 
&gt; Could be:
&gt; 
&gt;     shouldBeEqualToString(&apos;eval(\&apos;&quot;\\&apos; + character + &apos;&quot;\&apos;)&apos;, character);

Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>753821</commentid>
    <comment_count>6</comment_count>
    <who name="Michael Saboff">msaboff</who>
    <bug_when>2012-10-29 15:50:22 -0700</bug_when>
    <thetext>Committed r132853: &lt;http://trac.webkit.org/changeset/132853&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>171077</attachid>
            <date>2012-10-26 23:46:23 -0700</date>
            <delta_ts>2012-10-29 11:39:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>100576.patch</filename>
            <type>text/plain</type>
            <size>11648</size>
            <attacher name="Michael Saboff">msaboff</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTMyNzIyKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIzIEBA
CisyMDEyLTEwLTI2ICBNaWNoYWVsIFNhYm9mZiAgPG1zYWJvZmZAYXBwbGUuY29tPgorCisgICAg
ICAgIE5vbi1zcGVjaWFsIGVzY2FwZSBjaGFyYWN0ZXIgc2VxdWVuY2VzIGNhdXNlIEpTQzo6TGV4
ZXI6OnBhcnNlU3RyaW5nIHRvIGNyZWF0ZSAxNiBiaXQgc3RyaW5ncworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAwNTc2CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ2hhbmdlZCBzaW5nbGVFc2NhcGUoKSBw
cm9jZXNzaW5nIHRvIGJlIGJhc2VkIG9uIGEgbG9va3VwIG9mIGEgc3RhdGljIHRhYmxlLiAgVGhl
IHRhYmxlCisgICAgICAgIGNvdmVycyBBU0NJSSBjaGFyYWN0ZXJzIFNQQUNFIHRocm91Z2ggREVM
LiAgSWYgYSBjaGFyYWN0ZXIgY2FuIGJlIGEgc2luZ2xlIGNoYXJhY3RlciBlc2NhcGUsCisgICAg
ICAgIHRoZW4gdGhlIHRhYmxlIHByb3ZpZGVzIHRoZSBub24temVybyByZXN1bHQgb2YgdGhhdCBl
c2NhcGUuICBVcGRhdGVkIHRoZSByZXN1bHQgb2YKKyAgICAgICAgc2luZ2xlRXNjYXBlIHRvIGJl
IGFuIExDaGFyIHRvIG1ha2UgdGhlIHRhYmxlIGFzIHNtYWxsIGFzIHBvc3NpYmxlLgorICAgICAg
ICBBZGRlZCBhIG5ldyB0ZXN0IGZhc3QvanMvbm9ybWFsLWNoYXJhY3Rlci1lc2NhcGVzLWluLXN0
cmluZy1saXRlcmFscy5odG1sIHRvIHZhbGlkYXRlZAorICAgICAgICB0aGUgYmVoYXZpb3IuCisK
KyAgICAgICAgKiBwYXJzZXIvTGV4ZXIuY3BwOgorICAgICAgICAoSlNDOjo6OkxleGVyKToKKyAg
ICAgICAgKEpTQzo6c2luZ2xlRXNjYXBlKToKKyAgICAgICAgKEpTQzo6OjpwYXJzZVN0cmluZyk6
CisgICAgICAgIChKU0M6Ojo6cGFyc2VTdHJpbmdTbG93Q2FzZSk6CisKIDIwMTItMTAtMjUgIEZp
bGlwIFBpemxvICA8ZnBpemxvQGFwcGxlLmNvbT4KIAogICAgICAgICBGb3J3YXJkIE9TUiBjYWxj
dWxhdGlvbiBpcyB3cm9uZyBpbiB0aGUgcHJlc2VuY2Ugb2YgbXVsdGlwbGUgU2V0TG9jYWxzLCBv
ciBhIG1peCBvZiBTZXRMb2NhbHMgYW5kIFBoYW50b21zCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcGFyc2VyL0xleGVyLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcGFyc2VyL0xleGVyLmNwcAkocmV2aXNpb24gMTMyNTEwKQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3BhcnNlci9MZXhlci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTM1NSw2ICszNTUsMTA3
IEBAIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBzaG9ydCB0eXBlc09mTGF0aW4KIC8qIDI1NSAtIExs
IGNhdGVnb3J5ICAgICAgICAqLyBDaGFyYWN0ZXJJZGVudGlmaWVyU3RhcnQKIH07CiAKKy8vIFRo
aXMgdGFibGUgcHJvdmlkZXMgdGhlIGNoYXJhY3RlciB0aGF0IHJlc3VsdHMgZnJvbSBcWCB3aGVy
ZSBYIGlzIHRoZSBpbmRleCBpbiB0aGUgdGFibGUgYmVnaW5uaW5nCisvLyB3aXRoIFNQQUNFLiBB
IHRhYmxlIHZhbHVlIG9mIDAgbWVhbnMgdGhhdCBtb3JlIHByb2Nlc3NpbmcgbmVlZHMgdG8gYmUg
ZG9uZS4KK3N0YXRpYyBjb25zdCBMQ2hhciBzaW5nbGVDaGFyYWN0ZXJFc2NhcGVWYWx1ZXNGb3JB
U0NJSVs5Nl0gPSB7CisvKiAgMzIgLSBTcGFjZSAgKi8gJyAnLAorLyogIDMzIC0gISAgICAgICov
ICchJywKKy8qICAzNCAtICIgICAgICAqLyAnIicsCisvKiAgMzUgLSAjICAgICAgKi8gJyMnLAor
LyogIDM2IC0gJCAgICAgICovICckJywKKy8qICAzNyAtICUgICAgICAqLyAnJScsCisvKiAgMzgg
LSAmICAgICAgKi8gJyYnLAorLyogIDM5IC0gJyAgICAgICovICdcJycsCisvKiAgNDAgLSAoICAg
ICAgKi8gJygnLAorLyogIDQxIC0gKSAgICAgICovICcpJywKKy8qICA0MiAtICogICAgICAqLyAn
KicsCisvKiAgNDMgLSArICAgICAgKi8gJysnLAorLyogIDQ0IC0gLCAgICAgICovICcsJywKKy8q
ICA0NSAtIC0gICAgICAqLyAnLScsCisvKiAgNDYgLSAuICAgICAgKi8gJy4nLAorLyogIDQ3IC0g
LyAgICAgICovICcvJywKKy8qICA0OCAtIDAgICAgICAqLyAwLAorLyogIDQ5IC0gMSAgICAgICov
IDAsCisvKiAgNTAgLSAyICAgICAgKi8gMCwKKy8qICA1MSAtIDMgICAgICAqLyAwLAorLyogIDUy
IC0gNCAgICAgICovIDAsCisvKiAgNTMgLSA1ICAgICAgKi8gMCwKKy8qICA1NCAtIDYgICAgICAq
LyAwLAorLyogIDU1IC0gNyAgICAgICovIDAsCisvKiAgNTYgLSA4ICAgICAgKi8gMCwKKy8qICA1
NyAtIDkgICAgICAqLyAwLAorLyogIDU4IC0gOiAgICAgICovICc6JywKKy8qICA1OSAtIDsgICAg
ICAqLyAnOycsCisvKiAgNjAgLSA8ICAgICAgKi8gJzwnLAorLyogIDYxIC0gPSAgICAgICovICc9
JywKKy8qICA2MiAtID4gICAgICAqLyAnPicsCisvKiAgNjMgLSA/ICAgICAgKi8gJz8nLAorLyog
IDY0IC0gQCAgICAgICovICdAJywKKy8qICA2NSAtIEEgICAgICAqLyAnQScsCisvKiAgNjYgLSBC
ICAgICAgKi8gJ0InLAorLyogIDY3IC0gQyAgICAgICovICdDJywKKy8qICA2OCAtIEQgICAgICAq
LyAnRCcsCisvKiAgNjkgLSBFICAgICAgKi8gJ0UnLAorLyogIDcwIC0gRiAgICAgICovICdGJywK
Ky8qICA3MSAtIEcgICAgICAqLyAnRycsCisvKiAgNzIgLSBIICAgICAgKi8gJ0gnLAorLyogIDcz
IC0gSSAgICAgICovICdJJywKKy8qICA3NCAtIEogICAgICAqLyAnSicsCisvKiAgNzUgLSBLICAg
ICAgKi8gJ0snLAorLyogIDc2IC0gTCAgICAgICovICdMJywKKy8qICA3NyAtIE0gICAgICAqLyAn
TScsCisvKiAgNzggLSBOICAgICAgKi8gJ04nLAorLyogIDc5IC0gTyAgICAgICovICdPJywKKy8q
ICA4MCAtIFAgICAgICAqLyAnUCcsCisvKiAgODEgLSBRICAgICAgKi8gJ1EnLAorLyogIDgyIC0g
UiAgICAgICovICdSJywKKy8qICA4MyAtIFMgICAgICAqLyAnUycsCisvKiAgODQgLSBUICAgICAg
Ki8gJ1QnLAorLyogIDg1IC0gVSAgICAgICovICdVJywKKy8qICA4NiAtIFYgICAgICAqLyAnVics
CisvKiAgODcgLSBXICAgICAgKi8gJ1cnLAorLyogIDg4IC0gWCAgICAgICovICdYJywKKy8qICA4
OSAtIFkgICAgICAqLyAnWScsCisvKiAgOTAgLSBaICAgICAgKi8gJ1onLAorLyogIDkxIC0gWyAg
ICAgICovICdbJywKKy8qICA5MiAtIFwgICAgICAqLyAnXFwnLAorLyogIDkzIC0gXSAgICAgICov
ICddJywKKy8qICA5NCAtIF4gICAgICAqLyAnXicsCisvKiAgOTUgLSBfICAgICAgKi8gJ18nLAor
LyogIDk2IC0gYCAgICAgICovICdgJywKKy8qICA5NyAtIGEgICAgICAqLyAnYScsCisvKiAgOTgg
LSBiICAgICAgKi8gMHgwOCwKKy8qICA5OSAtIGMgICAgICAqLyAnYycsCisvKiAxMDAgLSBkICAg
ICAgKi8gJ2QnLAorLyogMTAxIC0gZSAgICAgICovICdlJywKKy8qIDEwMiAtIGYgICAgICAqLyAw
eDBDLAorLyogMTAzIC0gZyAgICAgICovICdnJywKKy8qIDEwNCAtIGggICAgICAqLyAnaCcsCisv
KiAxMDUgLSBpICAgICAgKi8gJ2knLAorLyogMTA2IC0gaiAgICAgICovICdqJywKKy8qIDEwNyAt
IGsgICAgICAqLyAnaycsCisvKiAxMDggLSBsICAgICAgKi8gJ2wnLAorLyogMTA5IC0gbSAgICAg
ICovICdtJywKKy8qIDExMCAtIG4gICAgICAqLyAweDBBLAorLyogMTExIC0gbyAgICAgICovICdv
JywKKy8qIDExMiAtIHAgICAgICAqLyAncCcsCisvKiAxMTMgLSBxICAgICAgKi8gJ3EnLAorLyog
MTE0IC0gciAgICAgICovIDB4MEQsCisvKiAxMTUgLSBzICAgICAgKi8gJ3MnLAorLyogMTE2IC0g
dCAgICAgICovIDB4MDksCisvKiAxMTcgLSB1ICAgICAgKi8gMCwKKy8qIDExOCAtIHYgICAgICAq
LyAweDBCLAorLyogMTE5IC0gdyAgICAgICovICd3JywKKy8qIDEyMCAtIHggICAgICAqLyAwLAor
LyogMTIxIC0geSAgICAgICovICd5JywKKy8qIDEyMiAtIHogICAgICAqLyAneicsCisvKiAxMjMg
LSB7ICAgICAgKi8gJ3snLAorLyogMTI0IC0gfCAgICAgICovICd8JywKKy8qIDEyNSAtIH0gICAg
ICAqLyAnfScsCisvKiAxMjYgLSB+ICAgICAgKi8gJ34nLAorLyogMTI3IC0gRGVsZXRlICovIDAK
K307CisKIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgogTGV4ZXI8VD46OkxleGVyKEpTR2xvYmFsRGF0
YSogZ2xvYmFsRGF0YSkKICAgICA6IG1faXNSZXBhcnNpbmcoZmFsc2UpCkBAIC01NDcsMzAgKzY0
OCwxMSBAQCBzdGF0aWMgQUxXQVlTX0lOTElORSBib29sIGlzSWRlbnRQYXJ0KFVDCiAgICAgcmV0
dXJuIGlzTGF0aW4xKGMpID8gaXNJZGVudFBhcnQoc3RhdGljX2Nhc3Q8TENoYXI+KGMpKSA6IGlz
Tm9uTGF0aW4xSWRlbnRQYXJ0KGMpOwogfQogCi1zdGF0aWMgaW5saW5lIGludCBzaW5nbGVFc2Nh
cGUoaW50IGMpCitzdGF0aWMgaW5saW5lIExDaGFyIHNpbmdsZUVzY2FwZShpbnQgYykKIHsKLSAg
ICBzd2l0Y2ggKGMpIHsKLSAgICBjYXNlICdiJzoKLSAgICAgICAgcmV0dXJuIDB4MDg7Ci0gICAg
Y2FzZSAndCc6Ci0gICAgICAgIHJldHVybiAweDA5OwotICAgIGNhc2UgJ24nOgotICAgICAgICBy
ZXR1cm4gMHgwQTsKLSAgICBjYXNlICd2JzoKLSAgICAgICAgcmV0dXJuIDB4MEI7Ci0gICAgY2Fz
ZSAnZic6Ci0gICAgICAgIHJldHVybiAweDBDOwotICAgIGNhc2UgJ3InOgotICAgICAgICByZXR1
cm4gMHgwRDsKLSAgICBjYXNlICdcXCc6Ci0gICAgICAgIHJldHVybiAnXFwnOwotICAgIGNhc2Ug
J1wnJzoKLSAgICAgICAgcmV0dXJuICdcJyc7Ci0gICAgY2FzZSAnIic6Ci0gICAgICAgIHJldHVy
biAnIic7Ci0gICAgZGVmYXVsdDoKLSAgICAgICAgcmV0dXJuIDA7Ci0gICAgfQorICAgIGlmICgo
YyA+PSAzMikgJiYgKGMgPD0gMTI3KSkKKyAgICAgICAgcmV0dXJuIHNpbmdsZUNoYXJhY3RlckVz
Y2FwZVZhbHVlc0ZvckFTQ0lJW2MtMzJdOworICAgIHJldHVybiAwOwogfQogCiB0ZW1wbGF0ZSA8
dHlwZW5hbWUgVD4KQEAgLTg0Miw3ICs5MjQsNyBAQCB0ZW1wbGF0ZSA8Ym9vbCBzaG91bGRCdWls
ZFN0cmluZ3M+IEFMV0FZCiAgICAgICAgICAgICAgICAgYXBwZW5kOChzdHJpbmdTdGFydCwgY3Vy
cmVudENoYXJhY3RlcigpIC0gc3RyaW5nU3RhcnQpOwogICAgICAgICAgICAgc2hpZnQoKTsKIAot
ICAgICAgICAgICAgaW50IGVzY2FwZSA9IHNpbmdsZUVzY2FwZShtX2N1cnJlbnQpOworICAgICAg
ICAgICAgTENoYXIgZXNjYXBlID0gc2luZ2xlRXNjYXBlKG1fY3VycmVudCk7CiAKICAgICAgICAg
ICAgIC8vIE1vc3QgY29tbW9uIGVzY2FwZSBzZXF1ZW5jZXMgZmlyc3QKICAgICAgICAgICAgIGlm
IChlc2NhcGUpIHsKQEAgLTkwNyw3ICs5ODksNyBAQCB0ZW1wbGF0ZSA8Ym9vbCBzaG91bGRCdWls
ZFN0cmluZ3M+IGJvb2wgCiAgICAgICAgICAgICAgICAgYXBwZW5kMTYoc3RyaW5nU3RhcnQsIGN1
cnJlbnRDaGFyYWN0ZXIoKSAtIHN0cmluZ1N0YXJ0KTsKICAgICAgICAgICAgIHNoaWZ0KCk7CiAK
LSAgICAgICAgICAgIGludCBlc2NhcGUgPSBzaW5nbGVFc2NhcGUobV9jdXJyZW50KTsKKyAgICAg
ICAgICAgIExDaGFyIGVzY2FwZSA9IHNpbmdsZUVzY2FwZShtX2N1cnJlbnQpOwogCiAgICAgICAg
ICAgICAvLyBNb3N0IGNvbW1vbiBlc2NhcGUgc2VxdWVuY2VzIGZpcnN0CiAgICAgICAgICAgICBp
ZiAoZXNjYXBlKSB7CkluZGV4OiBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCShyZXZpc2lvbiAxMzI3MjIpCisrKyBMYXlvdXRUZXN0cy9D
aGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEsMyArMSwxNyBAQAorMjAxMi0xMC0yNiAgTWlj
aGFlbCBTYWJvZmYgIDxtc2Fib2ZmQGFwcGxlLmNvbT4KKworICAgICAgICBOb24tc3BlY2lhbCBl
c2NhcGUgY2hhcmFjdGVyIHNlcXVlbmNlcyBjYXVzZSBKU0M6OkxleGVyOjpwYXJzZVN0cmluZyB0
byBjcmVhdGUgMTYgYml0IHN0cmluZ3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTEwMDU3NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIEFkZGVkIGEgbmV3IHRlc3QgdG8gdmFsaWRhdGVkIHRoZSBiZWhhdmlv
ckMgb2YgdGhlIGNvcnJlc3BvbmRpbmcgY2hhbmdlcyB0byBzdHJpbmcgcHJvY2Vzc2luZworICAg
ICAgICBpbiB0aGUgTGV4ZXIuCisKKyAgICAgICAgKiBmYXN0L2pzL25vcm1hbC1jaGFyYWN0ZXIt
ZXNjYXBlcy1pbi1zdHJpbmctbGl0ZXJhbHMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAg
KiBmYXN0L2pzL25vcm1hbC1jaGFyYWN0ZXItZXNjYXBlcy1pbi1zdHJpbmctbGl0ZXJhbHMuaHRt
bDogQWRkZWQuCisgICAgICAgICogZmFzdC9qcy9zY3JpcHQtdGVzdHMvbm9ybWFsLWNoYXJhY3Rl
ci1lc2NhcGVzLWluLXN0cmluZy1saXRlcmFscy5qczogQWRkZWQuCisKIDIwMTItMTAtMjYgIENo
cmlzIFJvZ2VycyAgPGNyb2dlcnNAZ29vZ2xlLmNvbT4KIAogICAgICAgICBJbXBsZW1lbnQgQXVk
aW9CdWZmZXJTb3VyY2VOb2RlIC5sb29wU3RhcnQgYW5kIC5sb29wRW5kIGF0dHJpYnV0ZXMKSW5k
ZXg6IExheW91dFRlc3RzL2Zhc3QvanMvbm9ybWFsLWNoYXJhY3Rlci1lc2NhcGVzLWluLXN0cmlu
Zy1saXRlcmFscy1leHBlY3RlZC50eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9q
cy9ub3JtYWwtY2hhcmFjdGVyLWVzY2FwZXMtaW4tc3RyaW5nLWxpdGVyYWxzLWV4cGVjdGVkLnR4
dAkocmV2aXNpb24gMCkKKysrIExheW91dFRlc3RzL2Zhc3QvanMvbm9ybWFsLWNoYXJhY3Rlci1l
c2NhcGVzLWluLXN0cmluZy1saXRlcmFscy1leHBlY3RlZC50eHQJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsODQgQEAKK1Rlc3Qgbm9uLWVzY2FwaW5nIGNoYXJhY3RlcnMgaW4gc3RyaW5nIGxpdGVy
YWxzIC0gYWRkZWQgd2l0aCBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTAwNTgwCisKK09uIHN1Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVz
c2FnZXMsIGZvbGxvd2VkIGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIGV2YWwoJyJcICIn
KSBpcyBleHBlY3RlZFJlc3VsdAorUEFTUyBldmFsKCciXCEiJykgaXMgZXhwZWN0ZWRSZXN1bHQK
K1BBU1MgZXZhbCgnIlwjIicpIGlzIGV4cGVjdGVkUmVzdWx0CitQQVNTIGV2YWwoJyJcJCInKSBp
cyBleHBlY3RlZFJlc3VsdAorUEFTUyBldmFsKCciXCUiJykgaXMgZXhwZWN0ZWRSZXN1bHQKK1BB
U1MgZXZhbCgnIlwmIicpIGlzIGV4cGVjdGVkUmVzdWx0CitQQVNTIGV2YWwoJyJcJyInKSBpcyBl
eHBlY3RlZFJlc3VsdAorUEFTUyBldmFsKCciXCgiJykgaXMgZXhwZWN0ZWRSZXN1bHQKK1BBU1Mg
ZXZhbCgnIlwpIicpIGlzIGV4cGVjdGVkUmVzdWx0CitQQVNTIGV2YWwoJyJcKiInKSBpcyBleHBl
Y3RlZFJlc3VsdAorUEFTUyBldmFsKCciXCsiJykgaXMgZXhwZWN0ZWRSZXN1bHQKK1BBU1MgZXZh
bCgnIlwsIicpIGlzIGV4cGVjdGVkUmVzdWx0CitQQVNTIGV2YWwoJyJcLSInKSBpcyBleHBlY3Rl
ZFJlc3VsdAorUEFTUyBldmFsKCciXC4iJykgaXMgZXhwZWN0ZWRSZXN1bHQKK1BBU1MgZXZhbCgn
IlwvIicpIGlzIGV4cGVjdGVkUmVzdWx0CitQQVNTIGV2YWwoJyJcOiInKSBpcyBleHBlY3RlZFJl
c3VsdAorUEFTUyBldmFsKCciXDsiJykgaXMgZXhwZWN0ZWRSZXN1bHQKK1BBU1MgZXZhbCgnIlw8
IicpIGlzIGV4cGVjdGVkUmVzdWx0CitQQVNTIGV2YWwoJyJcPSInKSBpcyBleHBlY3RlZFJlc3Vs
dAorUEFTUyBldmFsKCciXD4iJykgaXMgZXhwZWN0ZWRSZXN1bHQKK1BBU1MgZXZhbCgnIlw/Iicp
IGlzIGV4cGVjdGVkUmVzdWx0CitQQVNTIGV2YWwoJyJcQCInKSBpcyBleHBlY3RlZFJlc3VsdAor
UEFTUyBldmFsKCciXEEiJykgaXMgZXhwZWN0ZWRSZXN1bHQKK1BBU1MgZXZhbCgnIlxCIicpIGlz
IGV4cGVjdGVkUmVzdWx0CitQQVNTIGV2YWwoJyJcQyInKSBpcyBleHBlY3RlZFJlc3VsdAorUEFT
UyBldmFsKCciXEQiJykgaXMgZXhwZWN0ZWRSZXN1bHQKK1BBU1MgZXZhbCgnIlxFIicpIGlzIGV4
cGVjdGVkUmVzdWx0CitQQVNTIGV2YWwoJyJcRiInKSBpcyBleHBlY3RlZFJlc3VsdAorUEFTUyBl
dmFsKCciXEciJykgaXMgZXhwZWN0ZWRSZXN1bHQKK1BBU1MgZXZhbCgnIlxIIicpIGlzIGV4cGVj
dGVkUmVzdWx0CitQQVNTIGV2YWwoJyJcSSInKSBpcyBleHBlY3RlZFJlc3VsdAorUEFTUyBldmFs
KCciXEoiJykgaXMgZXhwZWN0ZWRSZXN1bHQKK1BBU1MgZXZhbCgnIlxLIicpIGlzIGV4cGVjdGVk
UmVzdWx0CitQQVNTIGV2YWwoJyJcTCInKSBpcyBleHBlY3RlZFJlc3VsdAorUEFTUyBldmFsKCci
XE0iJykgaXMgZXhwZWN0ZWRSZXN1bHQKK1BBU1MgZXZhbCgnIlxOIicpIGlzIGV4cGVjdGVkUmVz
dWx0CitQQVNTIGV2YWwoJyJcTyInKSBpcyBleHBlY3RlZFJlc3VsdAorUEFTUyBldmFsKCciXFAi
JykgaXMgZXhwZWN0ZWRSZXN1bHQKK1BBU1MgZXZhbCgnIlxRIicpIGlzIGV4cGVjdGVkUmVzdWx0
CitQQVNTIGV2YWwoJyJcUiInKSBpcyBleHBlY3RlZFJlc3VsdAorUEFTUyBldmFsKCciXFMiJykg
aXMgZXhwZWN0ZWRSZXN1bHQKK1BBU1MgZXZhbCgnIlxUIicpIGlzIGV4cGVjdGVkUmVzdWx0CitQ
QVNTIGV2YWwoJyJcVSInKSBpcyBleHBlY3RlZFJlc3VsdAorUEFTUyBldmFsKCciXFYiJykgaXMg
ZXhwZWN0ZWRSZXN1bHQKK1BBU1MgZXZhbCgnIlxXIicpIGlzIGV4cGVjdGVkUmVzdWx0CitQQVNT
IGV2YWwoJyJcWCInKSBpcyBleHBlY3RlZFJlc3VsdAorUEFTUyBldmFsKCciXFkiJykgaXMgZXhw
ZWN0ZWRSZXN1bHQKK1BBU1MgZXZhbCgnIlxaIicpIGlzIGV4cGVjdGVkUmVzdWx0CitQQVNTIGV2
YWwoJyJcWyInKSBpcyBleHBlY3RlZFJlc3VsdAorUEFTUyBldmFsKCciXF0iJykgaXMgZXhwZWN0
ZWRSZXN1bHQKK1BBU1MgZXZhbCgnIlxeIicpIGlzIGV4cGVjdGVkUmVzdWx0CitQQVNTIGV2YWwo
JyJcXyInKSBpcyBleHBlY3RlZFJlc3VsdAorUEFTUyBldmFsKCciXGAiJykgaXMgZXhwZWN0ZWRS
ZXN1bHQKK1BBU1MgZXZhbCgnIlxhIicpIGlzIGV4cGVjdGVkUmVzdWx0CitQQVNTIGV2YWwoJyJc
YyInKSBpcyBleHBlY3RlZFJlc3VsdAorUEFTUyBldmFsKCciXGQiJykgaXMgZXhwZWN0ZWRSZXN1
bHQKK1BBU1MgZXZhbCgnIlxlIicpIGlzIGV4cGVjdGVkUmVzdWx0CitQQVNTIGV2YWwoJyJcZyIn
KSBpcyBleHBlY3RlZFJlc3VsdAorUEFTUyBldmFsKCciXGgiJykgaXMgZXhwZWN0ZWRSZXN1bHQK
K1BBU1MgZXZhbCgnIlxpIicpIGlzIGV4cGVjdGVkUmVzdWx0CitQQVNTIGV2YWwoJyJcaiInKSBp
cyBleHBlY3RlZFJlc3VsdAorUEFTUyBldmFsKCciXGsiJykgaXMgZXhwZWN0ZWRSZXN1bHQKK1BB
U1MgZXZhbCgnIlxsIicpIGlzIGV4cGVjdGVkUmVzdWx0CitQQVNTIGV2YWwoJyJcbSInKSBpcyBl
eHBlY3RlZFJlc3VsdAorUEFTUyBldmFsKCciXG8iJykgaXMgZXhwZWN0ZWRSZXN1bHQKK1BBU1Mg
ZXZhbCgnIlxwIicpIGlzIGV4cGVjdGVkUmVzdWx0CitQQVNTIGV2YWwoJyJccSInKSBpcyBleHBl
Y3RlZFJlc3VsdAorUEFTUyBldmFsKCciXHMiJykgaXMgZXhwZWN0ZWRSZXN1bHQKK1BBU1MgZXZh
bCgnIlx3IicpIGlzIGV4cGVjdGVkUmVzdWx0CitQQVNTIGV2YWwoJyJceSInKSBpcyBleHBlY3Rl
ZFJlc3VsdAorUEFTUyBldmFsKCciXHoiJykgaXMgZXhwZWN0ZWRSZXN1bHQKK1BBU1MgZXZhbCgn
Ilx7IicpIGlzIGV4cGVjdGVkUmVzdWx0CitQQVNTIGV2YWwoJyJcfCInKSBpcyBleHBlY3RlZFJl
c3VsdAorUEFTUyBldmFsKCciXH0iJykgaXMgZXhwZWN0ZWRSZXN1bHQKK1BBU1MgZXZhbCgnIlx+
IicpIGlzIGV4cGVjdGVkUmVzdWx0CitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisK
K1RFU1QgQ09NUExFVEUKKwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9qcy9ub3JtYWwtY2hhcmFj
dGVyLWVzY2FwZXMtaW4tc3RyaW5nLWxpdGVyYWxzLmh0bWwKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0
VGVzdHMvZmFzdC9qcy9ub3JtYWwtY2hhcmFjdGVyLWVzY2FwZXMtaW4tc3RyaW5nLWxpdGVyYWxz
Lmh0bWwJKHJldmlzaW9uIDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2pzL25vcm1hbC1jaGFyYWN0
ZXItZXNjYXBlcy1pbi1zdHJpbmctbGl0ZXJhbHMuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCAr
MSwxMCBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgor
PGh0bWw+Cis8aGVhZD4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwv
c2NyaXB0PgorPC9oZWFkPgorPGJvZHk+Cis8c2NyaXB0IHNyYz0ic2NyaXB0LXRlc3RzL25vcm1h
bC1jaGFyYWN0ZXItZXNjYXBlcy1pbi1zdHJpbmctbGl0ZXJhbHMuanMiPjwvc2NyaXB0PgorPHNj
cmlwdCBzcmM9InJlc291cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5Pgor
PC9odG1sPgpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9qcy9zY3JpcHQtdGVzdHMvbm9ybWFsLWNo
YXJhY3Rlci1lc2NhcGVzLWluLXN0cmluZy1saXRlcmFscy5qcwo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlv
dXRUZXN0cy9mYXN0L2pzL3NjcmlwdC10ZXN0cy9ub3JtYWwtY2hhcmFjdGVyLWVzY2FwZXMtaW4t
c3RyaW5nLWxpdGVyYWxzLmpzCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9qcy9z
Y3JpcHQtdGVzdHMvbm9ybWFsLWNoYXJhY3Rlci1lc2NhcGVzLWluLXN0cmluZy1saXRlcmFscy5q
cwkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxNSBAQAorZGVzY3JpcHRpb24oCisiVGVzdCBub24t
ZXNjYXBpbmcgY2hhcmFjdGVycyBpbiBzdHJpbmcgbGl0ZXJhbHMgLSBhZGRlZCB3aXRoIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDA1ODAiCispOworCitmdW5jdGlv
biB0ZXN0KGNoYXJhY3RlcikKK3sKKyAgICBlc2NhcGVkQ2hhcmFjdGVyID0gJ1xcJyArIGNoYXJh
Y3RlcjsKKyAgICBleHBlY3RlZFJlc3VsdCA9IGNoYXJhY3RlcjsKKyAgICBzaG91bGRCZSgnZXZh
bChcJyInICsgZXNjYXBlZENoYXJhY3RlciArICciXCcpJywgImV4cGVjdGVkUmVzdWx0Iik7Cit9
CisKK2NoYXJhY3RlcnNUb1Rlc3QgPSAiICEjJCUmXCcoKSorLC0uLzo7PD0+P0BBQkNERUZHSElK
S0xNTk9QUVJTVFVWV1hZWltdXl9gYWNkZWdoaWprbG1vcHFzd3l6e3x9fiI7CisKK2ZvciAoaSA9
IDA7IGkgPCBjaGFyYWN0ZXJzVG9UZXN0Lmxlbmd0aDsgaSsrKQorICAgIHRlc3QoY2hhcmFjdGVy
c1RvVGVzdC5jaGFyQXQoaSkpOwo=
</data>
<flag name="review"
          id="184870"
          type_id="1"
          status="-"
          setter="oliver"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>171285</attachid>
            <date>2012-10-29 11:39:41 -0700</date>
            <delta_ts>2022-02-27 23:26:03 -0800</delta_ts>
            <desc>Patch with suggested updates</desc>
            <filename>100576-2.patch</filename>
            <type>text/plain</type>
            <size>11294</size>
            <attacher name="Michael Saboff">msaboff</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMTMyODI0KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIzIEBA
CisyMDEyLTEwLTI5ICBNaWNoYWVsIFNhYm9mZiAgPG1zYWJvZmZAYXBwbGUuY29tPgorCisgICAg
ICAgIE5vbi1zcGVjaWFsIGVzY2FwZSBjaGFyYWN0ZXIgc2VxdWVuY2VzIGNhdXNlIEpTQzo6TGV4
ZXI6OnBhcnNlU3RyaW5nIHRvIGNyZWF0ZSAxNiBiaXQgc3RyaW5ncworICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAwNTc2CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQ2hhbmdlZCBzaW5nbGVFc2NhcGUoKSBw
cm9jZXNzaW5nIHRvIGJlIGJhc2VkIG9uIGEgbG9va3VwIG9mIGEgc3RhdGljIHRhYmxlLiAgVGhl
IHRhYmxlCisgICAgICAgIGNvdmVycyBBU0NJSSBjaGFyYWN0ZXJzIFNQQUNFIHRocm91Z2ggREVM
LiAgSWYgYSBjaGFyYWN0ZXIgY2FuIGJlIGEgc2luZ2xlIGNoYXJhY3RlciBlc2NhcGUsCisgICAg
ICAgIHRoZW4gdGhlIHRhYmxlIHByb3ZpZGVzIHRoZSBub24temVybyByZXN1bHQgb2YgdGhhdCBl
c2NhcGUuICBVcGRhdGVkIHRoZSByZXN1bHQgb2YKKyAgICAgICAgc2luZ2xlRXNjYXBlIHRvIGJl
IGFuIExDaGFyIHRvIG1ha2UgdGhlIHRhYmxlIGFzIHNtYWxsIGFzIHBvc3NpYmxlLgorICAgICAg
ICBBZGRlZCBhIG5ldyB0ZXN0IGZhc3QvanMvbm9ybWFsLWNoYXJhY3Rlci1lc2NhcGVzLWluLXN0
cmluZy1saXRlcmFscy5odG1sIHRvIHZhbGlkYXRlZAorICAgICAgICB0aGUgYmVoYXZpb3IuCisK
KyAgICAgICAgKiBwYXJzZXIvTGV4ZXIuY3BwOgorICAgICAgICAoSlNDOjo6OkxleGVyKToKKyAg
ICAgICAgKEpTQzo6c2luZ2xlRXNjYXBlKToKKyAgICAgICAgKEpTQzo6OjpwYXJzZVN0cmluZyk6
CisgICAgICAgIChKU0M6Ojo6cGFyc2VTdHJpbmdTbG93Q2FzZSk6CisKIDIwMTItMTAtMjkgIEVu
cmljYSBDYXN1Y2NpICA8ZW5yaWNhQGFwcGxlLmNvbT4KIAogICAgICAgICBBZGQgRU5BQkxFX1VT
RVJTRUxFQ1RfQUxMIGZlYXR1cmUgZmxhZy4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9w
YXJzZXIvTGV4ZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9wYXJz
ZXIvTGV4ZXIuY3BwCShyZXZpc2lvbiAxMzI4MjQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
cGFyc2VyL0xleGVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzU1LDYgKzM1NSwxMDcgQEAgc3Rh
dGljIGNvbnN0IHVuc2lnbmVkIHNob3J0IHR5cGVzT2ZMYXRpbgogLyogMjU1IC0gTGwgY2F0ZWdv
cnkgICAgICAgICovIENoYXJhY3RlcklkZW50aWZpZXJTdGFydAogfTsKIAorLy8gVGhpcyB0YWJs
ZSBwcm92aWRlcyB0aGUgY2hhcmFjdGVyIHRoYXQgcmVzdWx0cyBmcm9tIFxYIHdoZXJlIFggaXMg
dGhlIGluZGV4IGluIHRoZSB0YWJsZSBiZWdpbm5pbmcKKy8vIHdpdGggU1BBQ0UuIEEgdGFibGUg
dmFsdWUgb2YgMCBtZWFucyB0aGF0IG1vcmUgcHJvY2Vzc2luZyBuZWVkcyB0byBiZSBkb25lLgor
c3RhdGljIGNvbnN0IExDaGFyIHNpbmdsZUNoYXJhY3RlckVzY2FwZVZhbHVlc0ZvckFTQ0lJWzk2
XSA9IHsKKy8qICAzMiAtIFNwYWNlICAqLyAnICcsCisvKiAgMzMgLSAhICAgICAgKi8gJyEnLAor
LyogIDM0IC0gIiAgICAgICovICciJywKKy8qICAzNSAtICMgICAgICAqLyAnIycsCisvKiAgMzYg
LSAkICAgICAgKi8gJyQnLAorLyogIDM3IC0gJSAgICAgICovICclJywKKy8qICAzOCAtICYgICAg
ICAqLyAnJicsCisvKiAgMzkgLSAnICAgICAgKi8gJ1wnJywKKy8qICA0MCAtICggICAgICAqLyAn
KCcsCisvKiAgNDEgLSApICAgICAgKi8gJyknLAorLyogIDQyIC0gKiAgICAgICovICcqJywKKy8q
ICA0MyAtICsgICAgICAqLyAnKycsCisvKiAgNDQgLSAsICAgICAgKi8gJywnLAorLyogIDQ1IC0g
LSAgICAgICovICctJywKKy8qICA0NiAtIC4gICAgICAqLyAnLicsCisvKiAgNDcgLSAvICAgICAg
Ki8gJy8nLAorLyogIDQ4IC0gMCAgICAgICovIDAsCisvKiAgNDkgLSAxICAgICAgKi8gMCwKKy8q
ICA1MCAtIDIgICAgICAqLyAwLAorLyogIDUxIC0gMyAgICAgICovIDAsCisvKiAgNTIgLSA0ICAg
ICAgKi8gMCwKKy8qICA1MyAtIDUgICAgICAqLyAwLAorLyogIDU0IC0gNiAgICAgICovIDAsCisv
KiAgNTUgLSA3ICAgICAgKi8gMCwKKy8qICA1NiAtIDggICAgICAqLyAwLAorLyogIDU3IC0gOSAg
ICAgICovIDAsCisvKiAgNTggLSA6ICAgICAgKi8gJzonLAorLyogIDU5IC0gOyAgICAgICovICc7
JywKKy8qICA2MCAtIDwgICAgICAqLyAnPCcsCisvKiAgNjEgLSA9ICAgICAgKi8gJz0nLAorLyog
IDYyIC0gPiAgICAgICovICc+JywKKy8qICA2MyAtID8gICAgICAqLyAnPycsCisvKiAgNjQgLSBA
ICAgICAgKi8gJ0AnLAorLyogIDY1IC0gQSAgICAgICovICdBJywKKy8qICA2NiAtIEIgICAgICAq
LyAnQicsCisvKiAgNjcgLSBDICAgICAgKi8gJ0MnLAorLyogIDY4IC0gRCAgICAgICovICdEJywK
Ky8qICA2OSAtIEUgICAgICAqLyAnRScsCisvKiAgNzAgLSBGICAgICAgKi8gJ0YnLAorLyogIDcx
IC0gRyAgICAgICovICdHJywKKy8qICA3MiAtIEggICAgICAqLyAnSCcsCisvKiAgNzMgLSBJICAg
ICAgKi8gJ0knLAorLyogIDc0IC0gSiAgICAgICovICdKJywKKy8qICA3NSAtIEsgICAgICAqLyAn
SycsCisvKiAgNzYgLSBMICAgICAgKi8gJ0wnLAorLyogIDc3IC0gTSAgICAgICovICdNJywKKy8q
ICA3OCAtIE4gICAgICAqLyAnTicsCisvKiAgNzkgLSBPICAgICAgKi8gJ08nLAorLyogIDgwIC0g
UCAgICAgICovICdQJywKKy8qICA4MSAtIFEgICAgICAqLyAnUScsCisvKiAgODIgLSBSICAgICAg
Ki8gJ1InLAorLyogIDgzIC0gUyAgICAgICovICdTJywKKy8qICA4NCAtIFQgICAgICAqLyAnVCcs
CisvKiAgODUgLSBVICAgICAgKi8gJ1UnLAorLyogIDg2IC0gViAgICAgICovICdWJywKKy8qICA4
NyAtIFcgICAgICAqLyAnVycsCisvKiAgODggLSBYICAgICAgKi8gJ1gnLAorLyogIDg5IC0gWSAg
ICAgICovICdZJywKKy8qICA5MCAtIFogICAgICAqLyAnWicsCisvKiAgOTEgLSBbICAgICAgKi8g
J1snLAorLyogIDkyIC0gXCAgICAgICovICdcXCcsCisvKiAgOTMgLSBdICAgICAgKi8gJ10nLAor
LyogIDk0IC0gXiAgICAgICovICdeJywKKy8qICA5NSAtIF8gICAgICAqLyAnXycsCisvKiAgOTYg
LSBgICAgICAgKi8gJ2AnLAorLyogIDk3IC0gYSAgICAgICovICdhJywKKy8qICA5OCAtIGIgICAg
ICAqLyAweDA4LAorLyogIDk5IC0gYyAgICAgICovICdjJywKKy8qIDEwMCAtIGQgICAgICAqLyAn
ZCcsCisvKiAxMDEgLSBlICAgICAgKi8gJ2UnLAorLyogMTAyIC0gZiAgICAgICovIDB4MEMsCisv
KiAxMDMgLSBnICAgICAgKi8gJ2cnLAorLyogMTA0IC0gaCAgICAgICovICdoJywKKy8qIDEwNSAt
IGkgICAgICAqLyAnaScsCisvKiAxMDYgLSBqICAgICAgKi8gJ2onLAorLyogMTA3IC0gayAgICAg
ICovICdrJywKKy8qIDEwOCAtIGwgICAgICAqLyAnbCcsCisvKiAxMDkgLSBtICAgICAgKi8gJ20n
LAorLyogMTEwIC0gbiAgICAgICovIDB4MEEsCisvKiAxMTEgLSBvICAgICAgKi8gJ28nLAorLyog
MTEyIC0gcCAgICAgICovICdwJywKKy8qIDExMyAtIHEgICAgICAqLyAncScsCisvKiAxMTQgLSBy
ICAgICAgKi8gMHgwRCwKKy8qIDExNSAtIHMgICAgICAqLyAncycsCisvKiAxMTYgLSB0ICAgICAg
Ki8gMHgwOSwKKy8qIDExNyAtIHUgICAgICAqLyAwLAorLyogMTE4IC0gdiAgICAgICovIDB4MEIs
CisvKiAxMTkgLSB3ICAgICAgKi8gJ3cnLAorLyogMTIwIC0geCAgICAgICovIDAsCisvKiAxMjEg
LSB5ICAgICAgKi8gJ3knLAorLyogMTIyIC0geiAgICAgICovICd6JywKKy8qIDEyMyAtIHsgICAg
ICAqLyAneycsCisvKiAxMjQgLSB8ICAgICAgKi8gJ3wnLAorLyogMTI1IC0gfSAgICAgICovICd9
JywKKy8qIDEyNiAtIH4gICAgICAqLyAnficsCisvKiAxMjcgLSBEZWxldGUgKi8gMAorfTsKKwog
dGVtcGxhdGUgPHR5cGVuYW1lIFQ+CiBMZXhlcjxUPjo6TGV4ZXIoSlNHbG9iYWxEYXRhKiBnbG9i
YWxEYXRhKQogICAgIDogbV9pc1JlcGFyc2luZyhmYWxzZSkKQEAgLTU0NywzMCArNjQ4LDEzIEBA
IHN0YXRpYyBBTFdBWVNfSU5MSU5FIGJvb2wgaXNJZGVudFBhcnQoVUMKICAgICByZXR1cm4gaXNM
YXRpbjEoYykgPyBpc0lkZW50UGFydChzdGF0aWNfY2FzdDxMQ2hhcj4oYykpIDogaXNOb25MYXRp
bjFJZGVudFBhcnQoYyk7CiB9CiAKLXN0YXRpYyBpbmxpbmUgaW50IHNpbmdsZUVzY2FwZShpbnQg
YykKK3N0YXRpYyBpbmxpbmUgTENoYXIgc2luZ2xlRXNjYXBlKGludCBjKQogewotICAgIHN3aXRj
aCAoYykgewotICAgIGNhc2UgJ2InOgotICAgICAgICByZXR1cm4gMHgwODsKLSAgICBjYXNlICd0
JzoKLSAgICAgICAgcmV0dXJuIDB4MDk7Ci0gICAgY2FzZSAnbic6Ci0gICAgICAgIHJldHVybiAw
eDBBOwotICAgIGNhc2UgJ3YnOgotICAgICAgICByZXR1cm4gMHgwQjsKLSAgICBjYXNlICdmJzoK
LSAgICAgICAgcmV0dXJuIDB4MEM7Ci0gICAgY2FzZSAncic6Ci0gICAgICAgIHJldHVybiAweDBE
OwotICAgIGNhc2UgJ1xcJzoKLSAgICAgICAgcmV0dXJuICdcXCc7Ci0gICAgY2FzZSAnXCcnOgot
ICAgICAgICByZXR1cm4gJ1wnJzsKLSAgICBjYXNlICciJzoKLSAgICAgICAgcmV0dXJuICciJzsK
LSAgICBkZWZhdWx0OgotICAgICAgICByZXR1cm4gMDsKKyAgICBpZiAoKGMgPj0gMzIpICYmIChj
IDw9IDEyNykpIHsKKyAgICAgICAgQVNTRVJUKHN0YXRpY19jYXN0PHNpemVfdD4oYyAtIDMyKSA8
IEFSUkFZX1NJWkUoc2luZ2xlQ2hhcmFjdGVyRXNjYXBlVmFsdWVzRm9yQVNDSUkpKTsKKyAgICAg
ICAgcmV0dXJuIHNpbmdsZUNoYXJhY3RlckVzY2FwZVZhbHVlc0ZvckFTQ0lJW2MgLSAzMl07CiAg
ICAgfQorICAgIHJldHVybiAwOwogfQogCiB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KQEAgLTg0Miw3
ICs5MjYsNyBAQCB0ZW1wbGF0ZSA8Ym9vbCBzaG91bGRCdWlsZFN0cmluZ3M+IEFMV0FZCiAgICAg
ICAgICAgICAgICAgYXBwZW5kOChzdHJpbmdTdGFydCwgY3VycmVudENoYXJhY3RlcigpIC0gc3Ry
aW5nU3RhcnQpOwogICAgICAgICAgICAgc2hpZnQoKTsKIAotICAgICAgICAgICAgaW50IGVzY2Fw
ZSA9IHNpbmdsZUVzY2FwZShtX2N1cnJlbnQpOworICAgICAgICAgICAgTENoYXIgZXNjYXBlID0g
c2luZ2xlRXNjYXBlKG1fY3VycmVudCk7CiAKICAgICAgICAgICAgIC8vIE1vc3QgY29tbW9uIGVz
Y2FwZSBzZXF1ZW5jZXMgZmlyc3QKICAgICAgICAgICAgIGlmIChlc2NhcGUpIHsKQEAgLTkwNyw3
ICs5OTEsNyBAQCB0ZW1wbGF0ZSA8Ym9vbCBzaG91bGRCdWlsZFN0cmluZ3M+IGJvb2wgCiAgICAg
ICAgICAgICAgICAgYXBwZW5kMTYoc3RyaW5nU3RhcnQsIGN1cnJlbnRDaGFyYWN0ZXIoKSAtIHN0
cmluZ1N0YXJ0KTsKICAgICAgICAgICAgIHNoaWZ0KCk7CiAKLSAgICAgICAgICAgIGludCBlc2Nh
cGUgPSBzaW5nbGVFc2NhcGUobV9jdXJyZW50KTsKKyAgICAgICAgICAgIExDaGFyIGVzY2FwZSA9
IHNpbmdsZUVzY2FwZShtX2N1cnJlbnQpOwogCiAgICAgICAgICAgICAvLyBNb3N0IGNvbW1vbiBl
c2NhcGUgc2VxdWVuY2VzIGZpcnN0CiAgICAgICAgICAgICBpZiAoZXNjYXBlKSB7CkluZGV4OiBM
YXlvdXRUZXN0cy9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiAxMzI4MjQpCisrKyBMYXlvdXRUZXN0cy9DaGFuZ2VMb2cJKHdvcmtpbmcgY29w
eSkKQEAgLTEsMyArMSwxNyBAQAorMjAxMi0xMC0yOSAgTWljaGFlbCBTYWJvZmYgIDxtc2Fib2Zm
QGFwcGxlLmNvbT4KKworICAgICAgICBOb24tc3BlY2lhbCBlc2NhcGUgY2hhcmFjdGVyIHNlcXVl
bmNlcyBjYXVzZSBKU0M6OkxleGVyOjpwYXJzZVN0cmluZyB0byBjcmVhdGUgMTYgYml0IHN0cmlu
Z3MKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMDU3
NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEFkZGVk
IGEgbmV3IHRlc3QgdG8gdmFsaWRhdGVkIHRoZSBiZWhhdmlvckMgb2YgdGhlIGNvcnJlc3BvbmRp
bmcgY2hhbmdlcyB0byBzdHJpbmcgcHJvY2Vzc2luZworICAgICAgICBpbiB0aGUgTGV4ZXIuCisK
KyAgICAgICAgKiBmYXN0L2pzL25vcm1hbC1jaGFyYWN0ZXItZXNjYXBlcy1pbi1zdHJpbmctbGl0
ZXJhbHMtZXhwZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBmYXN0L2pzL25vcm1hbC1jaGFy
YWN0ZXItZXNjYXBlcy1pbi1zdHJpbmctbGl0ZXJhbHMuaHRtbDogQWRkZWQuCisgICAgICAgICog
ZmFzdC9qcy9zY3JpcHQtdGVzdHMvbm9ybWFsLWNoYXJhY3Rlci1lc2NhcGVzLWluLXN0cmluZy1s
aXRlcmFscy5qczogQWRkZWQuCisKIDIwMTItMTAtMjkgIEFsbGFuIFNhbmRmZWxkIEplbnNlbiAg
PGFsbGFuLmplbnNlbkBkaWdpYS5jb20+CiAKICAgICAgICAgW1F0XSBGbGFreSBzZWN1cml0eSB0
ZXN0cwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9qcy9ub3JtYWwtY2hhcmFjdGVyLWVzY2FwZXMt
aW4tc3RyaW5nLWxpdGVyYWxzLWV4cGVjdGVkLnR4dAo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0
cy9mYXN0L2pzL25vcm1hbC1jaGFyYWN0ZXItZXNjYXBlcy1pbi1zdHJpbmctbGl0ZXJhbHMtZXhw
ZWN0ZWQudHh0CShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9qcy9ub3JtYWwtY2hh
cmFjdGVyLWVzY2FwZXMtaW4tc3RyaW5nLWxpdGVyYWxzLWV4cGVjdGVkLnR4dAkocmV2aXNpb24g
MCkKQEAgLTAsMCArMSw5MiBAQAorVGVzdCBub24tZXNjYXBpbmcgY2hhcmFjdGVycyBpbiBzdHJp
bmcgbGl0ZXJhbHMgLSBhZGRlZCB3aXRoIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xMDA1ODAKKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQ
QVNTIiBtZXNzYWdlcywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgZXZh
bCgnIlwgIicpIGlzICIgIgorUEFTUyBldmFsKCciXCEiJykgaXMgIiEiCitQQVNTIGV2YWwoJyJc
IyInKSBpcyAiIyIKK1BBU1MgZXZhbCgnIlwkIicpIGlzICIkIgorUEFTUyBldmFsKCciXCUiJykg
aXMgIiUiCitQQVNTIGV2YWwoJyJcJiInKSBpcyAiJiIKK1BBU1MgZXZhbCgnIlwnIicpIGlzICIn
IgorUEFTUyBldmFsKCciXCgiJykgaXMgIigiCitQQVNTIGV2YWwoJyJcKSInKSBpcyAiKSIKK1BB
U1MgZXZhbCgnIlwqIicpIGlzICIqIgorUEFTUyBldmFsKCciXCsiJykgaXMgIisiCitQQVNTIGV2
YWwoJyJcLCInKSBpcyAiLCIKK1BBU1MgZXZhbCgnIlwtIicpIGlzICItIgorUEFTUyBldmFsKCci
XC4iJykgaXMgIi4iCitQQVNTIGV2YWwoJyJcLyInKSBpcyAiLyIKK1BBU1MgZXZhbCgnIlw6Iicp
IGlzICI6IgorUEFTUyBldmFsKCciXDsiJykgaXMgIjsiCitQQVNTIGV2YWwoJyJcPCInKSBpcyAi
PCIKK1BBU1MgZXZhbCgnIlw9IicpIGlzICI9IgorUEFTUyBldmFsKCciXD4iJykgaXMgIj4iCitQ
QVNTIGV2YWwoJyJcPyInKSBpcyAiPyIKK1BBU1MgZXZhbCgnIlxAIicpIGlzICJAIgorUEFTUyBl
dmFsKCciXEEiJykgaXMgIkEiCitQQVNTIGV2YWwoJyJcQiInKSBpcyAiQiIKK1BBU1MgZXZhbCgn
IlxDIicpIGlzICJDIgorUEFTUyBldmFsKCciXEQiJykgaXMgIkQiCitQQVNTIGV2YWwoJyJcRSIn
KSBpcyAiRSIKK1BBU1MgZXZhbCgnIlxGIicpIGlzICJGIgorUEFTUyBldmFsKCciXEciJykgaXMg
IkciCitQQVNTIGV2YWwoJyJcSCInKSBpcyAiSCIKK1BBU1MgZXZhbCgnIlxJIicpIGlzICJJIgor
UEFTUyBldmFsKCciXEoiJykgaXMgIkoiCitQQVNTIGV2YWwoJyJcSyInKSBpcyAiSyIKK1BBU1Mg
ZXZhbCgnIlxMIicpIGlzICJMIgorUEFTUyBldmFsKCciXE0iJykgaXMgIk0iCitQQVNTIGV2YWwo
JyJcTiInKSBpcyAiTiIKK1BBU1MgZXZhbCgnIlxPIicpIGlzICJPIgorUEFTUyBldmFsKCciXFAi
JykgaXMgIlAiCitQQVNTIGV2YWwoJyJcUSInKSBpcyAiUSIKK1BBU1MgZXZhbCgnIlxSIicpIGlz
ICJSIgorUEFTUyBldmFsKCciXFMiJykgaXMgIlMiCitQQVNTIGV2YWwoJyJcVCInKSBpcyAiVCIK
K1BBU1MgZXZhbCgnIlxVIicpIGlzICJVIgorUEFTUyBldmFsKCciXFYiJykgaXMgIlYiCitQQVNT
IGV2YWwoJyJcVyInKSBpcyAiVyIKK1BBU1MgZXZhbCgnIlxYIicpIGlzICJYIgorUEFTUyBldmFs
KCciXFkiJykgaXMgIlkiCitQQVNTIGV2YWwoJyJcWiInKSBpcyAiWiIKK1BBU1MgZXZhbCgnIlxb
IicpIGlzICJbIgorUEFTUyBldmFsKCciXF0iJykgaXMgIl0iCitQQVNTIGV2YWwoJyJcXiInKSBp
cyAiXiIKK1BBU1MgZXZhbCgnIlxfIicpIGlzICJfIgorUEFTUyBldmFsKCciXGAiJykgaXMgImAi
CitQQVNTIGV2YWwoJyJcYSInKSBpcyAiYSIKK1BBU1MgZXZhbCgnIlxjIicpIGlzICJjIgorUEFT
UyBldmFsKCciXGQiJykgaXMgImQiCitQQVNTIGV2YWwoJyJcZSInKSBpcyAiZSIKK1BBU1MgZXZh
bCgnIlxnIicpIGlzICJnIgorUEFTUyBldmFsKCciXGgiJykgaXMgImgiCitQQVNTIGV2YWwoJyJc
aSInKSBpcyAiaSIKK1BBU1MgZXZhbCgnIlxqIicpIGlzICJqIgorUEFTUyBldmFsKCciXGsiJykg
aXMgImsiCitQQVNTIGV2YWwoJyJcbCInKSBpcyAibCIKK1BBU1MgZXZhbCgnIlxtIicpIGlzICJt
IgorUEFTUyBldmFsKCciXG8iJykgaXMgIm8iCitQQVNTIGV2YWwoJyJccCInKSBpcyAicCIKK1BB
U1MgZXZhbCgnIlxxIicpIGlzICJxIgorUEFTUyBldmFsKCciXHMiJykgaXMgInMiCitQQVNTIGV2
YWwoJyJcdyInKSBpcyAidyIKK1BBU1MgZXZhbCgnIlx5IicpIGlzICJ5IgorUEFTUyBldmFsKCci
XHoiJykgaXMgInoiCitQQVNTIGV2YWwoJyJceyInKSBpcyAieyIKK1BBU1MgZXZhbCgnIlx8Iicp
IGlzICJ8IgorUEFTUyBldmFsKCciXH0iJykgaXMgIn0iCitQQVNTIGV2YWwoJyJcfiInKSBpcyAi
fiIKK1BBU1MgZXZhbCgnIlwBIicpIGlzICJcdTAwMDEiCitQQVNTIGV2YWwoJyJcByInKSBpcyAi
XHUwMDA3IgorUEFTUyBldmFsKCciXAgiJykgaXMgIlxiIgorUEFTUyBldmFsKCciXB8iJykgaXMg
Ilx1MDAxZiIKK1BBU1MgZXZhbCgnIlzCoCInKSBpcyAiwqAiCitQQVNTIGV2YWwoJyJcwqMiJykg
aXMgIsKjIgorUEFTUyBldmFsKCciXMKrIicpIGlzICLCqyIKK1BBU1MgZXZhbCgnIlzCtCInKSBp
cyAiwrQiCitQQVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUK
KwpJbmRleDogTGF5b3V0VGVzdHMvZmFzdC9qcy9ub3JtYWwtY2hhcmFjdGVyLWVzY2FwZXMtaW4t
c3RyaW5nLWxpdGVyYWxzLmh0bWwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gTGF5b3V0VGVzdHMvZmFzdC9qcy9u
b3JtYWwtY2hhcmFjdGVyLWVzY2FwZXMtaW4tc3RyaW5nLWxpdGVyYWxzLmh0bWwJKHJldmlzaW9u
IDApCisrKyBMYXlvdXRUZXN0cy9mYXN0L2pzL25vcm1hbC1jaGFyYWN0ZXItZXNjYXBlcy1pbi1z
dHJpbmctbGl0ZXJhbHMuaHRtbAkocmV2aXNpb24gMCkKQEAgLTAsMCArMSwxMCBAQAorPCFET0NU
WVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4K
KzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9oZWFk
PgorPGJvZHk+Cis8c2NyaXB0IHNyYz0ic2NyaXB0LXRlc3RzL25vcm1hbC1jaGFyYWN0ZXItZXNj
YXBlcy1pbi1zdHJpbmctbGl0ZXJhbHMuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291
cmNlcy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpJbmRleDog
TGF5b3V0VGVzdHMvZmFzdC9qcy9zY3JpcHQtdGVzdHMvbm9ybWFsLWNoYXJhY3Rlci1lc2NhcGVz
LWluLXN0cmluZy1saXRlcmFscy5qcwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBMYXlvdXRUZXN0cy9mYXN0L2pz
L3NjcmlwdC10ZXN0cy9ub3JtYWwtY2hhcmFjdGVyLWVzY2FwZXMtaW4tc3RyaW5nLWxpdGVyYWxz
LmpzCShyZXZpc2lvbiAwKQorKysgTGF5b3V0VGVzdHMvZmFzdC9qcy9zY3JpcHQtdGVzdHMvbm9y
bWFsLWNoYXJhY3Rlci1lc2NhcGVzLWluLXN0cmluZy1saXRlcmFscy5qcwkocmV2aXNpb24gMCkK
QEAgLTAsMCArMSwyMSBAQAorZGVzY3JpcHRpb24oCisiVGVzdCBub24tZXNjYXBpbmcgY2hhcmFj
dGVycyBpbiBzdHJpbmcgbGl0ZXJhbHMgLSBhZGRlZCB3aXRoIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMDA1ODAiCispOworCitmdW5jdGlvbiB0ZXN0KGNoYXJhY3Rl
cikKK3sKKyAgICBlc2NhcGVkQ2hhcmFjdGVyID0gJ1xcJyArIGNoYXJhY3RlcjsKKyAgICBleHBl
Y3RlZFJlc3VsdCA9IGNoYXJhY3RlcjsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ2V2YWwo
XCciJyArIGVzY2FwZWRDaGFyYWN0ZXIgKyAnIlwnKScsIGV4cGVjdGVkUmVzdWx0KTsKK30KKwor
Y2hhcmFjdGVyc1RvVGVzdCA9ICIgISMkJSZcJygpKissLS4vOjs8PT4/QEFCQ0RFRkdISUpLTE1O
T1BRUlNUVVZXWFlaW11eX2BhY2RlZ2hpamtsbW9wcXN3eXp7fH1+IjsKKworZm9yIChpID0gMDsg
aSA8IGNoYXJhY3RlcnNUb1Rlc3QubGVuZ3RoOyBpKyspCisgICAgdGVzdChjaGFyYWN0ZXJzVG9U
ZXN0LmNoYXJBdChpKSk7CisKKy8vIFRlc3Qgc29tZSBjaGFyYWN0ZXJzIG91dHNpZGUgdGhlIHBy
aW50YWJsZSBBU0NJSSByYW5nZQorb3RoZXJDaGFyYWN0ZXJzVG9UZXN0ID0gIlx4MDFceDA3XHgw
OFx4MWZceGEwXHhhM1x4YWJceGI0IjsKKworZm9yIChpID0gMDsgaSA8IG90aGVyQ2hhcmFjdGVy
c1RvVGVzdC5sZW5ndGg7IGkrKykKKyAgICB0ZXN0KG90aGVyQ2hhcmFjdGVyc1RvVGVzdC5jaGFy
QXQoaSkpOwo=
</data>
<flag name="review"
          id="185123"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
      

    </bug>

</bugzilla>