<?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>28938</bug_id>
          
          <creation_ts>2009-09-03 01:33:40 -0700</creation_ts>
          <short_desc>CSS string value is not correctly serialized when it contains binary characters</short_desc>
          <delta_ts>2010-04-05 17:08: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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Yuta Kitamura">yutak</reporter>
          <assigned_to name="Yuta Kitamura">yutak</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>eric</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>144427</commentid>
    <comment_count>0</comment_count>
    <who name="Yuta Kitamura">yutak</who>
    <bug_when>2009-09-03 01:33:40 -0700</bug_when>
    <thetext>When WebKit serializes a CSS string value, it does not escape binary characters in that value.

For example, suppose that we have an element with the following style:
    font-family: &apos;\0\1\2&apos;;
When we obtain this style using JavaScript (like element.style.fontFamily), it becomes an invisible string, instead of the correctly escaped string. WebKit should escape these characters as specified in CSS spec.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>144472</commentid>
    <comment_count>1</comment_count>
      <attachid>38979</attachid>
    <who name="Yuta Kitamura">yutak</who>
    <bug_when>2009-09-03 03:09:36 -0700</bug_when>
    <thetext>Created attachment 38979
Escape control characters in CSS string value when it is serialized.

When WebKit serializesa CSS string value that contains binary characters
(&apos;\0\1\2&apos; for example), it did not escape these characters. As a result,
users got (invisible) control characters through scripts, which was not good.
This change fixes this issue.

As a side effect, two separate codes for escaping CSS strings are merged, and
become a public function (escapeCSSString).
---
 7 files changed, 185 insertions(+), 52 deletions(-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>144720</commentid>
    <comment_count>2</comment_count>
      <attachid>38979</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-09-04 00:29:11 -0700</bug_when>
    <thetext>Comment on attachment 38979
Escape control characters in CSS string value when it is serialized.

This would be much better as a js test/dom only test:
http://trac.webkit.org/wiki/Writing%20Layout%20Tests%20for%20DumpRenderTree

YOu&apos;d get shouldBeEqualToString for fre, instead of having to make your own pass/fail functions.

This also doesn&apos;t need to be run from onload, you can run this from an inline script tag (which making this a js test will do automatically).

No argument names needed here since tehy don&apos;t add clarity:
6 String quoteCSSString(const String&amp; string);
 217 String quoteCSSStringIfNeeded(const String&amp; string);
 218 String quoteCSSURLIfNeeded(const String&amp; string);</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>144729</commentid>
    <comment_count>3</comment_count>
    <who name="Yuta Kitamura">yutak</who>
    <bug_when>2009-09-04 00:41:04 -0700</bug_when>
    <thetext>Thank you for your review, Eric. I&apos;m going to try again.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>144781</commentid>
    <comment_count>4</comment_count>
      <attachid>39050</attachid>
    <who name="Yuta Kitamura">yutak</who>
    <bug_when>2009-09-04 03:57:19 -0700</bug_when>
    <thetext>Created attachment 39050
Escape control characters in CSS string value when it is serialized.

When WebKit serializesa CSS string value that contains binary characters
(&apos;\0\1\2&apos; for example), it did not escape these characters. As a result,
users got (invisible) control characters through scripts, which was not good.
This change fixes this issue.

As a side effect, two separate codes for escaping CSS strings are merged, and
become a public function (escapeCSSString).
---
 8 files changed, 144 insertions(+), 53 deletions(-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>144782</commentid>
    <comment_count>5</comment_count>
      <attachid>39050</attachid>
    <who name="Yuta Kitamura">yutak</who>
    <bug_when>2009-09-04 04:01:24 -0700</bug_when>
    <thetext>Comment on attachment 39050
Escape control characters in CSS string value when it is serialized.

Oops, I overlooked the first part of Eric&apos;s comment. Let me do this again.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>144786</commentid>
    <comment_count>6</comment_count>
      <attachid>39051</attachid>
    <who name="Yuta Kitamura">yutak</who>
    <bug_when>2009-09-04 04:38:57 -0700</bug_when>
    <thetext>Created attachment 39051
Escape control characters in CSS string value when it is serialized.

When WebKit serializesa CSS string value that contains binary characters
(&apos;\0\1\2&apos; for example), it did not escape these characters. As a result,
users got (invisible) control characters through scripts, which was not good.
This change fixes this issue.

As a side effect, two separate codes for escaping CSS strings are merged, and
become a public function (escapeCSSString).
---
 9 files changed, 151 insertions(+), 53 deletions(-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>144787</commentid>
    <comment_count>7</comment_count>
      <attachid>39052</attachid>
    <who name="Yuta Kitamura">yutak</who>
    <bug_when>2009-09-04 04:51:18 -0700</bug_when>
    <thetext>Created attachment 39052
Escape control characters in CSS string value when it is serialized.

When WebKit serializesa CSS string value that contains binary characters
(&apos;\0\1\2&apos; for example), it did not escape these characters. As a result,
users got (invisible) control characters through scripts, which was not good.
This change fixes this issue.

As a side effect, two separate codes for escaping CSS strings are merged, and
become a public function (escapeCSSString).
---
 9 files changed, 156 insertions(+), 53 deletions(-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>144788</commentid>
    <comment_count>8</comment_count>
    <who name="Yuta Kitamura">yutak</who>
    <bug_when>2009-09-04 04:54:36 -0700</bug_when>
    <thetext>Sorry for uploading patches again and again (I should have been more careful).

I converted the test to a JS test, and fixed some issues as suggested in Eric&apos;s comment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>149831</commentid>
    <comment_count>9</comment_count>
      <attachid>39052</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-09-24 14:05:47 -0700</bug_when>
    <thetext>Comment on attachment 39052
Escape control characters in CSS string value when it is serialized.

I think this will be much slower than the old implementation.  We should at least use StringBuilder instead of String::append() because String::append() will make a new buffer every time. :(

In general the change looks OK, assuming it does not cause a PLT regression.

Could we pre-allocate the length of the new string all at once instead of doing so many mallocs?  StringBuilder will be better, but still slower than the old replace code was I think.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>149832</commentid>
    <comment_count>10</comment_count>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2009-09-24 14:06:07 -0700</bug_when>
    <thetext>Vector&lt;UChar&gt; also would have better append behavior than String does.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>206233</commentid>
    <comment_count>11</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2010-03-30 16:09:21 -0700</bug_when>
    <thetext>It would be nice to move forward on this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>206434</commentid>
    <comment_count>12</comment_count>
    <who name="Yuta Kitamura">yutak</who>
    <bug_when>2010-03-31 02:38:39 -0700</bug_when>
    <thetext>(In reply to comment #11)
&gt; It would be nice to move forward on this.

This patch slipped off from my mind long ago... I&apos;ll continue.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>207651</commentid>
    <comment_count>13</comment_count>
      <attachid>52372</attachid>
    <who name="Yuta Kitamura">yutak</who>
    <bug_when>2010-04-01 21:48:59 -0700</bug_when>
    <thetext>Created attachment 52372
Patch v5.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>207906</commentid>
    <comment_count>14</comment_count>
      <attachid>52372</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-04-02 10:08:15 -0700</bug_when>
    <thetext>Comment on attachment 52372
Patch v5.

Great work. It&apos;s good to handle these cases correctly.

Looking at the tokenizer it seems that tab characters are legal in a CSS quoted string. But we are choosing to escape them as &quot;\9&quot;. I guess that&apos;s OK.

&gt; +            String escape = String::format(&quot;\\%x&quot;, static_cast&lt;int&gt;(ch));
&gt; +            for (unsigned j = 0; j &lt; escape.length(); ++j)
&gt; +                buffer[index++] = escape[j];

This is excessive memory allocation and complexity to convert a two digit number to hex.

Instead something like this:

    static const char hexDigits[17] = &quot;0123456789ABCDEF&quot;;
    buffer[index++] = &apos;\\&apos;;
    if (ch &gt;= 0x10)
        buffer[index++] = hexDigits[ch &gt;&gt; 4];
    buffer[index++] = hexDigits[ch &amp; 0xF];

&gt; +            // Space characeter may be required to separate backslash-escape sequence and normal characters.

Typo: &quot;characeter&quot;.

These functions don&apos;t belong in CSSPrimitiveValue.h. I think they should move to CSSParser.h.

review- because I&apos;d like to see the code changed to not use String::format.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>208384</commentid>
    <comment_count>15</comment_count>
      <attachid>52516</attachid>
    <who name="Yuta Kitamura">yutak</who>
    <bug_when>2010-04-04 19:45:52 -0700</bug_when>
    <thetext>Created attachment 52516
Patch v6 (Applying darin&apos;s comment).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>208385</commentid>
    <comment_count>16</comment_count>
    <who name="Yuta Kitamura">yutak</who>
    <bug_when>2010-04-04 19:47:44 -0700</bug_when>
    <thetext>(In reply to comment #15)
&gt; Created an attachment (id=52516) [details]
&gt; Patch v6 (Applying darin&apos;s comment).

I think I addressed all issues raised so far. Darin, could you please take another look?

Thanks,</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>208386</commentid>
    <comment_count>17</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2010-04-04 19:49:34 -0700</bug_when>
    <thetext>Attachment 52516 did not pass style-queue:

Failed to run &quot;WebKitTools/Scripts/check-webkit-style&quot; exit_code: 1
WebCore/css/CSSParser.cpp:5437:  A case label should not be indented, but line up with its switch statement.  [whitespace/indent] [4]
Total errors found: 1 in 10 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>208387</commentid>
    <comment_count>18</comment_count>
    <who name="Yuta Kitamura">yutak</who>
    <bug_when>2010-04-04 19:58:21 -0700</bug_when>
    <thetext>(In reply to comment #17)
&gt; Attachment 52516 [details] did not pass style-queue:
&gt; 
&gt; Failed to run &quot;WebKitTools/Scripts/check-webkit-style&quot; exit_code: 1
&gt; WebCore/css/CSSParser.cpp:5437:  A case label should not be indented, but line
&gt; up with its switch statement.  [whitespace/indent] [4]
&gt; Total errors found: 1 in 10 files
&gt; 
&gt; 
&gt; If any of these errors are false positives, please file a bug against
&gt; check-webkit-style.

Oops, I&apos;ve forgotten to run check-webkit-style. My bad.

However, I&apos;m wondering if I need to fix this error, because I&apos;ve found there are a lot of both usages (indented and not-indented case labels).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>208392</commentid>
    <comment_count>19</comment_count>
      <attachid>52516</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2010-04-04 21:26:49 -0700</bug_when>
    <thetext>Comment on attachment 52516
Patch v6 (Applying darin&apos;s comment).

&gt; +    if (p == end || !(p[0] == &apos;_&apos; || p[0] &gt;= 128 || isASCIIAlpha(p[0])))

In a later patch (I don&apos;t suggest delaying this one) we should use !isASCII(p[0]) instead of p[0] &gt;= 128 since it’s clearer and probably more efficient as well.

&gt; +        if (!(p[0] == &apos;_&apos; || p[0] == &apos;-&apos; || p[0] &gt;= 128 || isASCIIAlphanumeric(p[0])))

Same here.

&gt; +                if (c &lt; 128)
&gt; +                    return false;

And isASCII(c) here.

&gt; +            static const char hexDigits[17] = &quot;0123456789abcdef&quot;;

I personally prefer capital hex.

&gt; +    String quoteCSSString(const String&amp;);

I think we should make this function be private to the .cpp file instead of exporting it. I can&apos;t think of any case where we&apos;d want other files to use it.

r=me without any changes -- you could make one or more of the changes above in a follow-up patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>208414</commentid>
    <comment_count>20</comment_count>
    <who name="Yuta Kitamura">yutak</who>
    <bug_when>2010-04-05 00:53:16 -0700</bug_when>
    <thetext>(In reply to comment #19)
&gt; r=me without any changes -- you could make one or more of the changes above in
&gt; a follow-up patch

Thanks, I&apos;d be happy to write a follow-up patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>208801</commentid>
    <comment_count>21</comment_count>
      <attachid>52516</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-04-05 17:08:42 -0700</bug_when>
    <thetext>Comment on attachment 52516
Patch v6 (Applying darin&apos;s comment).

Clearing flags on attachment: 52516

Committed r57105: &lt;http://trac.webkit.org/changeset/57105&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>208802</commentid>
    <comment_count>22</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2010-04-05 17:08:48 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>38979</attachid>
            <date>2009-09-03 03:09:36 -0700</date>
            <delta_ts>2009-09-04 03:57:14 -0700</delta_ts>
            <desc>Escape control characters in CSS string value when it is serialized.</desc>
            <filename>bug-28938-20090903190934.patch</filename>
            <type>text/plain</type>
            <size>12081</size>
            <attacher name="Yuta Kitamura">yutak</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAwN2M5YTFjLi5mMGUyMGJkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjMgQEAKKzIwMDktMDkt
MDMgIFl1dGEgS2l0YW11cmEgIDx5dXRha0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRXNjYXBlIGNvbnRyb2wgY2hhcmFjdGVy
cyBpbiBDU1Mgc3RyaW5nIHZhbHVlIHdoZW4gaXQgaXMgc2VyaWFsaXplZC4KKyAgICAgICAgCisg
ICAgICAgIFdoZW4gV2ViS2l0IHNlcmlhbGl6ZXNhIENTUyBzdHJpbmcgdmFsdWUgdGhhdCBjb250
YWlucyBiaW5hcnkgY2hhcmFjdGVycworICAgICAgICAoJ1wwXDFcMicgZm9yIGV4YW1wbGUpLCBp
dCBkaWQgbm90IGVzY2FwZSB0aGVzZSBjaGFyYWN0ZXJzLiBBcyBhIHJlc3VsdCwKKyAgICAgICAg
dXNlcnMgZ290IChpbnZpc2libGUpIGNvbnRyb2wgY2hhcmFjdGVycyB0aHJvdWdoIHNjcmlwdHMs
IHdoaWNoIHdhcyBub3QgZ29vZC4KKyAgICAgICAgVGhpcyBjaGFuZ2UgZml4ZXMgdGhpcyBpc3N1
ZS4KKyAgICAgICAgCisgICAgICAgIEFzIGEgc2lkZSBlZmZlY3QsIHR3byBzZXBhcmF0ZSBjb2Rl
cyBmb3IgZXNjYXBpbmcgQ1NTIHN0cmluZ3MgYXJlIG1lcmdlZCwgYW5kCisgICAgICAgIGJlY29t
ZSBhIHB1YmxpYyBmdW5jdGlvbiAoZXNjYXBlQ1NTU3RyaW5nKS4KKworICAgICAgICBDU1Mgc3Ry
aW5nIHZhbHVlIGlzIG5vdCBjb3JyZWN0bHkgc2VyaWFsaXplZCB3aGVuIGl0IGNvbnRhaW5zIGJp
bmFyeSBjaGFyYWN0ZXJzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yODkzOAorCisgICAgICAgICogZmFzdC9jc3Mvc3RyaW5nLXF1b3RlLWJpbmFyeS1l
eHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvY3NzL3N0cmluZy1xdW90ZS1iaW5h
cnkuaHRtbDogQWRkZWQuCisKIDIwMDktMDktMDMgIFJlbmF0YSBIb2RvdmFuICA8aG9kb3Zhbi5y
ZW5hdGFAc3R1ZC51LXN6ZWdlZC5odT4KIAogICAgICAgICBSZXZpZXdlZCBieSBBcml5YSBIaWRh
eWF0LgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jc3Mvc3RyaW5nLXF1b3RlLWJpbmFy
eS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9zdHJpbmctcXVvdGUtYmluYXJ5
LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMDA5OGUy
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3Mvc3RyaW5nLXF1b3RlLWJp
bmFyeS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxNSBAQAorVGhpcyB0ZXN0IGNoZWNrcyBpZiBD
U1Mgc3RyaW5nIHZhbHVlcyBhcmUgY29ycmVjdGx5IHNlcmlhbGl6ZWQgd2hlbiB0aGV5IGNvbnRh
aW4gYmluYXJ5IGNoYXJhY3RlcnMuCisKK1BBU1M6ICdcMFwxXDJcM1w0XDVcNlw3XDhcOVxhXGJc
Y1xkXGVcZicKK1BBU1M6ICdcMTBcMTFcMTJcMTNcMTRcMTVcMTZcMTdcMThcMTlcMWFcMWJcMWNc
MWRcMWVcMWZcN2YnCitQQVNTOiAnXGFcYlxjXGRcZVxmXDFhXDFiXDFjXDFkXDFlXDFmXDdmJwor
UEFTUzogJ1wwXDFcMicKK1BBU1M6ICdcMCAgXDEgIFwyICAnCitQQVNTOiAnXDAgICBcMSAgIFwy
ICAgJworUEFTUzogJ1xmXDBnJworUEFTUzogJ1wwIDBcMCAxXDAgMlwwIDNcMCA0XDAgNVwwIDZc
MCA3XDAgOFwwIDknCitQQVNTOiAnXDAgQVwwIEJcMCBDXDAgRFwwIEVcMCBGXDBHJworUEFTUzog
J1wwIGFcMCBiXDAgY1wwIGRcMCBlXDAgZlwwZycKKworVGVzdCBzdWNjZWVkZWQuCisKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY3NzL3N0cmluZy1xdW90ZS1iaW5hcnkuaHRtbCBiL0xh
eW91dFRlc3RzL2Zhc3QvY3NzL3N0cmluZy1xdW90ZS1iaW5hcnkuaHRtbApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwLi5mM2EyZGNmCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0
VGVzdHMvZmFzdC9jc3Mvc3RyaW5nLXF1b3RlLWJpbmFyeS5odG1sCkBAIC0wLDAgKzEsODMgQEAK
KzwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxLy9FTiIgImh0dHA6
Ly93d3cudzMub3JnL1RSL2h0bWw0L3N0cmljdC5kdGQiPgorPGh0bWw+CisgIDxoZWFkPgorICAg
IDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFy
c2V0PVVURi04Ij4KKyAgICA8dGl0bGU+Q1NTIHZhbHVlIHNlcmlhbGl6YXRpb24gb24gYmluYXJ5
IHN0cmluZ3M8L3RpdGxlPgorICAgIDxzY3JpcHQgdHlwZT0iYXBwbGljYXRpb24vamF2YXNjcmlw
dCI+CitmdW5jdGlvbiBjb2xvcmVkVGV4dCh0ZXh0LCBjb2xvcikgeworICAgIHZhciBub2RlID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpOworICAgIG5vZGUuc3R5bGUuY29sb3IgPSBj
b2xvcjsKKyAgICBub2RlLmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKHRleHQp
KTsKKyAgICByZXR1cm4gbm9kZTsKK30KKworZnVuY3Rpb24gcGFzc1RleHQoKSB7CisgICAgcmV0
dXJuIGNvbG9yZWRUZXh0KCdQQVNTJywgJ2dyZWVuJyk7Cit9CisKK2Z1bmN0aW9uIGZhaWxUZXh0
KCkgeworICAgIHJldHVybiBjb2xvcmVkVGV4dCgnRkFJTCcsICdyZWQnKTsKK30KKworZnVuY3Rp
b24gYWRkUmVzdWx0KHBhc3NlZCwgcmVzdWx0KSB7CisgICAgdmFyIHJlc3VsdE5vZGUgPSBkb2N1
bWVudC5nZXRFbGVtZW50QnlJZCgncmVzdWx0Jyk7CisgICAgcmVzdWx0Tm9kZS5hcHBlbmRDaGls
ZChwYXNzZWQgPyBwYXNzVGV4dCgpIDogZmFpbFRleHQoKSk7CisgICAgcmVzdWx0Tm9kZS5hcHBl
bmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgnOiAnICsgcmVzdWx0ICsgJ1xuJykpOwor
fQorCitmdW5jdGlvbiBhZGRGaW5hbE1lc3NhZ2UocGFzc2VkKSB7CisgICAgdmFyIHJlc3VsdE5v
ZGUgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgncmVzdWx0Jyk7CisgICAgcmVzdWx0Tm9kZS5h
cHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVUZXh0Tm9kZSgnXG4nKSk7CisgICAgaWYgKHBhc3Nl
ZCkKKyAgICAgICAgcmVzdWx0Tm9kZS5hcHBlbmRDaGlsZChjb2xvcmVkVGV4dCgnVGVzdCBzdWNj
ZWVkZWQuJywgJ2dyZWVuJykpOworICAgIGVsc2UKKyAgICAgICAgcmVzdWx0Tm9kZS5hcHBlbmRD
aGlsZChjb2xvcmVkVGV4dCgnVGVzdCBmYWlsZWQuJywgJ3JlZCcpKTsKKyAgICByZXN1bHROb2Rl
LmFwcGVuZENoaWxkKGRvY3VtZW50LmNyZWF0ZVRleHROb2RlKCdcbicpKTsKK30KKworZnVuY3Rp
b24gb25Mb2FkKCkgeworICAgIHZhciBpbnB1dHMgPSBbIidcXDBcXDFcXDJcXDNcXDRcXDVcXDZc
XDdcXDhcXDlcXGFcXGJcXGNcXGRcXGVcXGYnIiwKKyAgICAgICAgICAgICAgICAgICInXFwxMFxc
MTFcXDEyXFwxM1xcMTRcXDE1XFwxNlxcMTdcXDE4XFwxOVxcMWFcXDFiXFwxY1xcMWRcXDFlXFwx
ZlxcN2YnIiwKKyAgICAgICAgICAgICAgICAgICInXFxBXFxCXFxDXFxEXFxFXFxGXFwxQVxcMUJc
XDFDXFwxRFxcMUVcXDFGXFw3RiciLAorICAgICAgICAgICAgICAgICAgIidcXDAgXFwxIFxcMiAn
IiwKKyAgICAgICAgICAgICAgICAgICInXFwwICBcXDEgIFxcMiAgJyIsCisgICAgICAgICAgICAg
ICAgICAiJ1xcMCAgIFxcMSAgIFxcMiAgICciLAorICAgICAgICAgICAgICAgICAgIidcXDAwMDAw
ZlxcMDAwMDBnJyIsCisgICAgICAgICAgICAgICAgICAiJ1xcMCAwXFwwIDFcXDAgMlxcMCAzXFww
IDRcXDAgNVxcMCA2XFwwIDdcXDAgOFxcMCA5JyIsCisgICAgICAgICAgICAgICAgICAiJ1xcMCBB
XFwwIEJcXDAgQ1xcMCBEXFwwIEVcXDAgRlxcMCBHJyIsCisgICAgICAgICAgICAgICAgICAiJ1xc
MCBhXFwwIGJcXDAgY1xcMCBkXFwwIGVcXDAgZlxcMCBnJyJdOworICAgIHZhciBleHBlY3RlZCA9
IFsiJ1xcMFxcMVxcMlxcM1xcNFxcNVxcNlxcN1xcOFxcOVxcYVxcYlxcY1xcZFxcZVxcZiciLAor
ICAgICAgICAgICAgICAgICAgICAiJ1xcMTBcXDExXFwxMlxcMTNcXDE0XFwxNVxcMTZcXDE3XFwx
OFxcMTlcXDFhXFwxYlxcMWNcXDFkXFwxZVxcMWZcXDdmJyIsCisgICAgICAgICAgICAgICAgICAg
ICInXFxhXFxiXFxjXFxkXFxlXFxmXFwxYVxcMWJcXDFjXFwxZFxcMWVcXDFmXFw3ZiciLAorICAg
ICAgICAgICAgICAgICAgICAiJ1xcMFxcMVxcMiciLAorICAgICAgICAgICAgICAgICAgICAiJ1xc
MCAgXFwxICBcXDIgICciLAorICAgICAgICAgICAgICAgICAgICAiJ1xcMCAgIFxcMSAgIFxcMiAg
ICciLAorICAgICAgICAgICAgICAgICAgICAiJ1xcZlxcMGcnIiwKKyAgICAgICAgICAgICAgICAg
ICAgIidcXDAgMFxcMCAxXFwwIDJcXDAgM1xcMCA0XFwwIDVcXDAgNlxcMCA3XFwwIDhcXDAgOSci
LAorICAgICAgICAgICAgICAgICAgICAiJ1xcMCBBXFwwIEJcXDAgQ1xcMCBEXFwwIEVcXDAgRlxc
MEcnIiwKKyAgICAgICAgICAgICAgICAgICAgIidcXDAgYVxcMCBiXFwwIGNcXDAgZFxcMCBlXFww
IGZcXDBnJyJdOworCisgICAgdmFyIHRlc3QgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgndGVz
dCcpOworICAgIHZhciBhbGxQYXNzZWQgPSB0cnVlOworICAgIGZvciAodmFyIGkgPSAwOyBpIDwg
aW5wdXRzLmxlbmd0aDsgKytpKSB7CisgICAgICAgIHRlc3Quc3R5bGUuZm9udEZhbWlseSA9IGlu
cHV0c1tpXTsKKyAgICAgICAgdmFyIHBhc3NlZCA9IHRlc3Quc3R5bGUuZm9udEZhbWlseSA9PT0g
ZXhwZWN0ZWRbaV07CisgICAgICAgIGFsbFBhc3NlZCAmPSBwYXNzZWQ7CisgICAgICAgIGFkZFJl
c3VsdChwYXNzZWQsIHRlc3Quc3R5bGUuZm9udEZhbWlseSk7CisgICAgfQorCisgICAgYWRkRmlu
YWxNZXNzYWdlKGFsbFBhc3NlZCk7Cit9CisKK2lmIChsYXlvdXRUZXN0Q29udHJvbGxlcikKKyAg
ICBsYXlvdXRUZXN0Q29udHJvbGxlci5kdW1wQXNUZXh0KCk7CisKK3dpbmRvdy5hZGRFdmVudExp
c3RlbmVyKCdsb2FkJywgb25Mb2FkLCBmYWxzZSk7CisgICAgPC9zY3JpcHQ+CisgIDwvaGVhZD4K
KyAgPGJvZHk+CisgICAgPGRpdiBpZD0idGVzdCI+PC9kaXY+CisgICAgPHA+VGhpcyB0ZXN0IGNo
ZWNrcyBpZiBDU1Mgc3RyaW5nIHZhbHVlcyBhcmUgY29ycmVjdGx5IHNlcmlhbGl6ZWQgd2hlbiB0
aGV5IGNvbnRhaW4gYmluYXJ5IGNoYXJhY3RlcnMuPC9wPgorICAgIDxwcmUgaWQ9InJlc3VsdCI+
PC9wcmU+CisgIDwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9n
IGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTkyZjY2ZC4uODExYWY4YSAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMSBA
QAorMjAwOS0wOS0wMyAgWXV0YSBLaXRhbXVyYSAgPHl1dGFrQGNocm9taXVtLm9yZz4KKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBFc2NhcGUgY29udHJv
bCBjaGFyYWN0ZXJzIGluIENTUyBzdHJpbmcgdmFsdWUgd2hlbiBpdCBpcyBzZXJpYWxpemVkLgor
ICAgICAgICAKKyAgICAgICAgV2hlbiBXZWJLaXQgc2VyaWFsaXplc2EgQ1NTIHN0cmluZyB2YWx1
ZSB0aGF0IGNvbnRhaW5zIGJpbmFyeSBjaGFyYWN0ZXJzCisgICAgICAgICgnXDBcMVwyJyBmb3Ig
ZXhhbXBsZSksIGl0IGRpZCBub3QgZXNjYXBlIHRoZXNlIGNoYXJhY3RlcnMuIEFzIGEgcmVzdWx0
LAorICAgICAgICB1c2VycyBnb3QgKGludmlzaWJsZSkgY29udHJvbCBjaGFyYWN0ZXJzIHRocm91
Z2ggc2NyaXB0cywgd2hpY2ggd2FzIG5vdCBnb29kLgorICAgICAgICBUaGlzIGNoYW5nZSBmaXhl
cyB0aGlzIGlzc3VlLgorICAgICAgICAKKyAgICAgICAgQXMgYSBzaWRlIGVmZmVjdCwgdHdvIHNl
cGFyYXRlIGNvZGVzIGZvciBlc2NhcGluZyBDU1Mgc3RyaW5ncyBhcmUgbWVyZ2VkLCBhbmQKKyAg
ICAgICAgYmVjb21lIGEgcHVibGljIGZ1bmN0aW9uIChlc2NhcGVDU1NTdHJpbmcpLgorCisgICAg
ICAgIENTUyBzdHJpbmcgdmFsdWUgaXMgbm90IGNvcnJlY3RseSBzZXJpYWxpemVkIHdoZW4gaXQg
Y29udGFpbnMgYmluYXJ5IGNoYXJhY3RlcnMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTI4OTM4CisKKyAgICAgICAgVGVzdDogZmFzdC9jc3Mvc3RyaW5n
LXF1b3RlLWJpbmFyeS5odG1sCisKKyAgICAgICAgKiBjc3MvQ1NTUHJpbWl0aXZlVmFsdWUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6cXVvdGVDU1NTdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6
cXVvdGVDU1NTdHJpbmdJZk5lZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpxdW90ZUNTU1VSTElm
TmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU1ByaW1pdGl2ZVZhbHVlOjpjc3NUZXh0KToK
KyAgICAgICAgKiBjc3MvQ1NTUHJpbWl0aXZlVmFsdWUuaDoKKyAgICAgICAgKiBjc3MvRm9udEZh
bWlseVZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRGYW1pbHlWYWx1ZTo6Y3NzVGV4
dCk6CisKIDIwMDktMDktMDMgIEtlbnQgVGFtdXJhICA8dGtlbnRAY2hyb21pdW0ub3JnPgogCiAg
ICAgICAgIFJldmlld2VkIGJ5IEVyaWMgU2VpZGVsLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9jc3Mv
Q1NTUHJpbWl0aXZlVmFsdWUuY3BwIGIvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUuY3Bw
CmluZGV4IDFmMmM5Y2EuLjM5MmM5YzQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvY3NzL0NTU1ByaW1p
dGl2ZVZhbHVlLmNwcAorKysgYi9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5jcHAKQEAg
LTE3NiwyMyArMTc2LDQxIEBAIHN0YXRpYyBib29sIGlzQ1NTVG9rZW5pemVyVVJMKGNvbnN0IFN0
cmluZyYgc3RyaW5nKQogfQogCiAvLyBXZSB1c2Ugc2luZ2xlIHF1b3RlcyBmb3Igbm93IGJlY2F1
c2UgbWFya3VwLmNwcCB1c2VzIGRvdWJsZSBxdW90ZXMuCi1zdGF0aWMgU3RyaW5nIHF1b3RlU3Ry
aW5nKGNvbnN0IFN0cmluZyYgc3RyaW5nKQotewotICAgIC8vIEZJWE1FOiBBbHNvIG5lZWQgdG8g
ZXNjYXBlIGNoYXJhY3RlcnMgbGlrZSAnXG4nLgotICAgIFN0cmluZyBzID0gc3RyaW5nOwotICAg
IHMucmVwbGFjZSgnXFwnLCAiXFxcXCIpOwotICAgIHMucmVwbGFjZSgnXCcnLCAiXFwnIik7Ci0g
ICAgcmV0dXJuICInIiArIHMgKyAiJyI7CitTdHJpbmcgcXVvdGVDU1NTdHJpbmcoY29uc3QgU3Ry
aW5nJiBzdHJpbmcpCit7CisgICAgYm9vbCBhZnRlckVzY2FwZSA9IGZhbHNlOworICAgIFN0cmlu
ZyBxdW90ZWRTdHJpbmcoIiciKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc3RyaW5n
Lmxlbmd0aCgpOyArK2kpIHsKKyAgICAgICAgVUNoYXIgY2ggPSBzdHJpbmdbaV07CisgICAgICAg
IGlmIChjaCA9PSAnXFwnKSB7CisgICAgICAgICAgICBxdW90ZWRTdHJpbmcuYXBwZW5kKCJcXFxc
Iik7CisgICAgICAgICAgICBhZnRlckVzY2FwZSA9IGZhbHNlOworICAgICAgICB9IGVsc2UgaWYg
KGNoID09ICdcJycpIHsKKyAgICAgICAgICAgIHF1b3RlZFN0cmluZy5hcHBlbmQoIlxcJyIpOwor
ICAgICAgICAgICAgYWZ0ZXJFc2NhcGUgPSBmYWxzZTsKKyAgICAgICAgfSBlbHNlIGlmIChjaCA8
IDB4MjAgfHwgY2ggPT0gMHg3RikgeworICAgICAgICAgICAgcXVvdGVkU3RyaW5nLmFwcGVuZChT
dHJpbmc6OmZvcm1hdCgiXFwleCIsIHN0YXRpY19jYXN0PGludD4oY2gpKSk7CisgICAgICAgICAg
ICBhZnRlckVzY2FwZSA9IHRydWU7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAvLyBT
cGFjZSBjaGFyYWNldGVyIG1heSBiZSByZXF1aXJlZCB0byBzZXBhcmF0ZSBiYWNrc2xhc2gtZXNj
YXBlIHNlcXVlbmNlIGFuZCBub3JtYWwgY2hhcmFjdGVycy4KKyAgICAgICAgICAgIGlmIChhZnRl
ckVzY2FwZSAmJiAoaXNBU0NJSUhleERpZ2l0KGNoKSB8fCBjaCA9PSAnICcpKQorICAgICAgICAg
ICAgICAgIHF1b3RlZFN0cmluZy5hcHBlbmQoJyAnKTsKKyAgICAgICAgICAgIHF1b3RlZFN0cmlu
Zy5hcHBlbmQoY2gpOworICAgICAgICAgICAgYWZ0ZXJFc2NhcGUgPSBmYWxzZTsKKyAgICAgICAg
fQorICAgIH0KKyAgICBxdW90ZWRTdHJpbmcuYXBwZW5kKCInIik7CisgICAgcmV0dXJuIHF1b3Rl
ZFN0cmluZzsKIH0KIAotc3RhdGljIFN0cmluZyBxdW90ZVN0cmluZ0lmTmVlZGVkKGNvbnN0IFN0
cmluZyYgc3RyaW5nKQorU3RyaW5nIHF1b3RlQ1NTU3RyaW5nSWZOZWVkZWQoY29uc3QgU3RyaW5n
JiBzdHJpbmcpCiB7Ci0gICAgcmV0dXJuIGlzQ1NTVG9rZW5pemVySWRlbnRpZmllcihzdHJpbmcp
ID8gc3RyaW5nIDogcXVvdGVTdHJpbmcoc3RyaW5nKTsKKyAgICByZXR1cm4gaXNDU1NUb2tlbml6
ZXJJZGVudGlmaWVyKHN0cmluZykgPyBzdHJpbmcgOiBxdW90ZUNTU1N0cmluZyhzdHJpbmcpOwog
fQogCi1zdGF0aWMgU3RyaW5nIHF1b3RlVVJMSWZOZWVkZWQoY29uc3QgU3RyaW5nJiBzdHJpbmcp
CitTdHJpbmcgcXVvdGVDU1NVUkxJZk5lZWRlZChjb25zdCBTdHJpbmcmIHN0cmluZykKIHsKLSAg
ICByZXR1cm4gaXNDU1NUb2tlbml6ZXJVUkwoc3RyaW5nKSA/IHN0cmluZyA6IHF1b3RlU3RyaW5n
KHN0cmluZyk7CisgICAgcmV0dXJuIGlzQ1NTVG9rZW5pemVyVVJMKHN0cmluZykgPyBzdHJpbmcg
OiBxdW90ZUNTU1N0cmluZyhzdHJpbmcpOwogfQogCiBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NTUHJp
bWl0aXZlVmFsdWUoKQpAQCAtNzU1LDEwICs3NzMsMTAgQEAgU3RyaW5nIENTU1ByaW1pdGl2ZVZh
bHVlOjpjc3NUZXh0KCkgY29uc3QKICAgICAgICAgICAgIC8vIEZJWE1FCiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgY2FzZSBDU1NfU1RSSU5HOgotICAgICAgICAgICAgdGV4dCA9IHF1b3Rl
U3RyaW5nSWZOZWVkZWQobV92YWx1ZS5zdHJpbmcpOworICAgICAgICAgICAgdGV4dCA9IHF1b3Rl
Q1NTU3RyaW5nSWZOZWVkZWQobV92YWx1ZS5zdHJpbmcpOwogICAgICAgICAgICAgYnJlYWs7CiAg
ICAgICAgIGNhc2UgQ1NTX1VSSToKLSAgICAgICAgICAgIHRleHQgPSAidXJsKCIgKyBxdW90ZVVS
TElmTmVlZGVkKG1fdmFsdWUuc3RyaW5nKSArICIpIjsKKyAgICAgICAgICAgIHRleHQgPSAidXJs
KCIgKyBxdW90ZUNTU1VSTElmTmVlZGVkKG1fdmFsdWUuc3RyaW5nKSArICIpIjsKICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICBjYXNlIENTU19JREVOVDoKICAgICAgICAgICAgIHRleHQgPSB2
YWx1ZU9yUHJvcGVydHlOYW1lKG1fdmFsdWUuaWRlbnQpOwpAQCAtODgzLDcgKzkwMSw3IEBAIFN0
cmluZyBDU1NQcmltaXRpdmVWYWx1ZTo6Y3NzVGV4dCgpIGNvbnN0CiAgICAgICAgICAgICBicmVh
azsKICAgICAgICAgfQogICAgICAgICBjYXNlIENTU19QQVJTRVJfSURFTlRJRklFUjoKLSAgICAg
ICAgICAgIHRleHQgPSBxdW90ZVN0cmluZ0lmTmVlZGVkKG1fdmFsdWUuc3RyaW5nKTsKKyAgICAg
ICAgICAgIHRleHQgPSBxdW90ZUNTU1N0cmluZ0lmTmVlZGVkKG1fdmFsdWUuc3RyaW5nKTsKICAg
ICAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICByZXR1cm4gdGV4dDsKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmggYi9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVW
YWx1ZS5oCmluZGV4IGQ0MTc2MTkuLjY1OGM0YTMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvY3NzL0NT
U1ByaW1pdGl2ZVZhbHVlLmgKKysrIGIvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUuaApA
QCAtMjEzLDYgKzIxMywxMCBAQCBwcml2YXRlOgogICAgIH0gbV92YWx1ZTsKIH07CiAKK1N0cmlu
ZyBxdW90ZUNTU1N0cmluZyhjb25zdCBTdHJpbmcmIHN0cmluZyk7CitTdHJpbmcgcXVvdGVDU1NT
dHJpbmdJZk5lZWRlZChjb25zdCBTdHJpbmcmIHN0cmluZyk7CitTdHJpbmcgcXVvdGVDU1NVUkxJ
Zk5lZWRlZChjb25zdCBTdHJpbmcmIHN0cmluZyk7CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
IAogI2VuZGlmIC8vIENTU1ByaW1pdGl2ZVZhbHVlX2gKZGlmZiAtLWdpdCBhL1dlYkNvcmUvY3Nz
L0ZvbnRGYW1pbHlWYWx1ZS5jcHAgYi9XZWJDb3JlL2Nzcy9Gb250RmFtaWx5VmFsdWUuY3BwCmlu
ZGV4IDkwYThjOWQuLjU3ZDIxNzEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvY3NzL0ZvbnRGYW1pbHlW
YWx1ZS5jcHAKKysrIGIvV2ViQ29yZS9jc3MvRm9udEZhbWlseVZhbHVlLmNwcApAQCAtMjEsNDQg
KzIxLDkgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJGb250RmFtaWx5VmFsdWUu
aCIKIAotbmFtZXNwYWNlIFdlYkNvcmUgewotCi0vLyBGSVhNRTogVGhpcyBhcHBlYXJzIGlkZW50
aWNhbCB0byBpc0NTU1Rva2VuaXplcklkZW50aWZpZXIgZnJvbSBDU1NQcmltaXRpdmVWYWx1ZS5j
cHAsIHdlIHNob3VsZCB1c2UgYSBzaW5nbGUgZnVuY3Rpb24uCi1zdGF0aWMgYm9vbCBpc1ZhbGlk
Q1NTSWRlbnRpZmllcihjb25zdCBTdHJpbmcmIHN0cmluZykKLXsKLSAgICB1bnNpZ25lZCBsZW5n
dGggPSBzdHJpbmcubGVuZ3RoKCk7Ci0gICAgaWYgKCFsZW5ndGgpCi0gICAgICAgIHJldHVybiBm
YWxzZTsKLQotICAgIGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzID0gc3RyaW5nLmNoYXJhY3RlcnMo
KTsKLSAgICBVQ2hhciBjID0gY2hhcmFjdGVyc1swXTsKLSAgICBpZiAoIShjID09ICdfJyB8fCAo
YyA+PSAnYScgJiYgYyA8PSAneicpIHx8IChjID49ICdBJyAmJiBjIDw9ICdaJykgfHwgYyA9PSAn
LScgfHwgYyA+PSAweDgwKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgZm9yICh1bnNp
Z25lZCBpID0gMTsgaSA8IGxlbmd0aDsgKytpKSB7Ci0gICAgICAgIGMgPSBjaGFyYWN0ZXJzW2ld
OwotICAgICAgICBpZiAoIShjID09ICdfJyB8fCAoYyA+PSAnYScgJiYgYyA8PSAneicpIHx8IChj
ID49ICdBJyAmJiBjIDw9ICdaJykgfHwgKGMgPj0gJzAnICYmIGMgPD0gJzknKSB8fCBjID09ICct
JyB8fCBjID49IDB4ODApKQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KKyNpbmNs
dWRlICJDU1NQcmltaXRpdmVWYWx1ZS5oIgogCi0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLS8vIFF1
b3RlcyB0aGUgc3RyaW5nIGlmIGl0IG5lZWRzIHF1b3RpbmcuCi0vLyBXZSB1c2Ugc2luZ2xlIHF1
b3RlcyBiZWNhdXNlIHNlcmlhbGl6YXRpb24gY29kZSB1c2VzIGRvdWJsZSBxdW90ZXMsIGFuZCBp
dCdzIG5pY2UgdG8KLS8vIGF2b2lkIGhhdmluZyB0byB0dXJuIGFsbCB0aGUgcXVvdGUgbWFya3Mg
aW50byAmcXVvdDsgYXMgd2Ugd291bGQgaGF2ZSB0by4KLXN0YXRpYyBTdHJpbmcgcXVvdGVTdHJp
bmdJZk5lZWRlZChjb25zdCBTdHJpbmcmIHN0cmluZykKLXsKLSAgICBpZiAoaXNWYWxpZENTU0lk
ZW50aWZpZXIoc3RyaW5nKSkKLSAgICAgICAgcmV0dXJuIHN0cmluZzsKLQotICAgIC8vIEZJWE1F
OiBBbHNvIG5lZWQgdG8gdHJhbnNmb3JtIGNvbnRyb2wgY2hhcmFjdGVycyAoMDAtMUYpIGludG8g
XCBzZXF1ZW5jZXMuCi0gICAgLy8gRklYTUU6IFRoaXMgaXMgaW5lZmZpY2llbnQgLS0gc2hvdWxk
IHVzZSBhIFZlY3RvcjxVQ2hhcj4gaW5zdGVhZC4KLSAgICBTdHJpbmcgcXVvdGVkU3RyaW5nID0g
c3RyaW5nOwotICAgIHF1b3RlZFN0cmluZy5yZXBsYWNlKCdcXCcsICJcXFxcIik7Ci0gICAgcXVv
dGVkU3RyaW5nLnJlcGxhY2UoJ1wnJywgIlxcJyIpOwotICAgIHJldHVybiAiJyIgKyBxdW90ZWRT
dHJpbmcgKyAiJyI7Ci19CituYW1lc3BhY2UgV2ViQ29yZSB7CiAKIEZvbnRGYW1pbHlWYWx1ZTo6
Rm9udEZhbWlseVZhbHVlKGNvbnN0IFN0cmluZyYgZmFtaWx5TmFtZSkKICAgICA6IENTU1ByaW1p
dGl2ZVZhbHVlKFN0cmluZygpLCBDU1NfU1RSSU5HKQpAQCAtMTAxLDcgKzY2LDcgQEAgdm9pZCBG
b250RmFtaWx5VmFsdWU6OmFwcGVuZFNwYWNlU2VwYXJhdGVkKGNvbnN0IFVDaGFyKiBjaGFyYWN0
ZXJzLCB1bnNpZ25lZCBsZW4KIAogU3RyaW5nIEZvbnRGYW1pbHlWYWx1ZTo6Y3NzVGV4dCgpIGNv
bnN0CiB7Ci0gICAgcmV0dXJuIHF1b3RlU3RyaW5nSWZOZWVkZWQobV9mYW1pbHlOYW1lKTsKKyAg
ICByZXR1cm4gcXVvdGVDU1NTdHJpbmdJZk5lZWRlZChtX2ZhbWlseU5hbWUpOwogfQogCiB9
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>39050</attachid>
            <date>2009-09-04 03:57:19 -0700</date>
            <delta_ts>2009-09-04 04:38:52 -0700</delta_ts>
            <desc>Escape control characters in CSS string value when it is serialized.</desc>
            <filename>bug-28938-20090904195717.patch</filename>
            <type>text/plain</type>
            <size>11949</size>
            <attacher name="Yuta Kitamura">yutak</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCAzNGYyNzNlLi4zOWM5ZWJhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjUgQEAKKzIwMDktMDkt
MDQgIFl1dGEgS2l0YW11cmEgIDx5dXRha0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRXNjYXBlIGNvbnRyb2wgY2hhcmFjdGVy
cyBpbiBDU1Mgc3RyaW5nIHZhbHVlIHdoZW4gaXQgaXMgc2VyaWFsaXplZC4KKyAgICAgICAgCisg
ICAgICAgIFdoZW4gV2ViS2l0IHNlcmlhbGl6ZXNhIENTUyBzdHJpbmcgdmFsdWUgdGhhdCBjb250
YWlucyBiaW5hcnkgY2hhcmFjdGVycworICAgICAgICAoJ1wwXDFcMicgZm9yIGV4YW1wbGUpLCBp
dCBkaWQgbm90IGVzY2FwZSB0aGVzZSBjaGFyYWN0ZXJzLiBBcyBhIHJlc3VsdCwKKyAgICAgICAg
dXNlcnMgZ290IChpbnZpc2libGUpIGNvbnRyb2wgY2hhcmFjdGVycyB0aHJvdWdoIHNjcmlwdHMs
IHdoaWNoIHdhcyBub3QgZ29vZC4KKyAgICAgICAgVGhpcyBjaGFuZ2UgZml4ZXMgdGhpcyBpc3N1
ZS4KKyAgICAgICAgCisgICAgICAgIEFzIGEgc2lkZSBlZmZlY3QsIHR3byBzZXBhcmF0ZSBjb2Rl
cyBmb3IgZXNjYXBpbmcgQ1NTIHN0cmluZ3MgYXJlIG1lcmdlZCwgYW5kCisgICAgICAgIGJlY29t
ZSBhIHB1YmxpYyBmdW5jdGlvbiAoZXNjYXBlQ1NTU3RyaW5nKS4KKworICAgICAgICBDU1Mgc3Ry
aW5nIHZhbHVlIGlzIG5vdCBjb3JyZWN0bHkgc2VyaWFsaXplZCB3aGVuIGl0IGNvbnRhaW5zIGJp
bmFyeSBjaGFyYWN0ZXJzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yODkzOAorCisgICAgICAgICogZmFzdC9jc3Mvc3RyaW5nLXF1b3RlLWJpbmFyeS1l
eHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZhc3QvY3NzL3N0cmluZy1xdW90ZS1iaW5h
cnkuaHRtbDogQWRkZWQuCisgICAgICAgICogZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUu
anM6CisgICAgICAgIChzaG91bGRCZUVxdWFsVG9TdHJpbmcpOgorCiAyMDA5LTA5LTAzICBBbGV4
ZXkgUHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IERh
cmluIEFkbGVyLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jc3Mvc3RyaW5nLXF1b3Rl
LWJpbmFyeS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9zdHJpbmctcXVvdGUt
YmluYXJ5LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5l
M2JhNDU4Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3Mvc3RyaW5nLXF1
b3RlLWJpbmFyeS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwxMyBAQAorVGhpcyB0ZXN0IGNoZWNr
cyBpZiBDU1Mgc3RyaW5nIHZhbHVlcyBhcmUgY29ycmVjdGx5IHNlcmlhbGl6ZWQgd2hlbiB0aGV5
IGNvbnRhaW4gYmluYXJ5IGNoYXJhY3RlcnMuCisKK1BBU1MgdGVzdC5zdHlsZS5mb250RmFtaWx5
IGlzICInXFwwXFwxXFwyXFwzXFw0XFw1XFw2XFw3XFw4XFw5XFxhXFxiXFxjXFxkXFxlXFxmJyIK
K1BBU1MgdGVzdC5zdHlsZS5mb250RmFtaWx5IGlzICInXFwxMFxcMTFcXDEyXFwxM1xcMTRcXDE1
XFwxNlxcMTdcXDE4XFwxOVxcMWFcXDFiXFwxY1xcMWRcXDFlXFwxZlxcN2YnIgorUEFTUyB0ZXN0
LnN0eWxlLmZvbnRGYW1pbHkgaXMgIidcXGFcXGJcXGNcXGRcXGVcXGZcXDFhXFwxYlxcMWNcXDFk
XFwxZVxcMWZcXDdmJyIKK1BBU1MgdGVzdC5zdHlsZS5mb250RmFtaWx5IGlzICInXFwwXFwxXFwy
JyIKK1BBU1MgdGVzdC5zdHlsZS5mb250RmFtaWx5IGlzICInXFwwICBcXDEgIFxcMiAgJyIKK1BB
U1MgdGVzdC5zdHlsZS5mb250RmFtaWx5IGlzICInXFwwICAgXFwxICAgXFwyICAgJyIKK1BBU1Mg
dGVzdC5zdHlsZS5mb250RmFtaWx5IGlzICInXFxmXFwwZyciCitQQVNTIHRlc3Quc3R5bGUuZm9u
dEZhbWlseSBpcyAiJ1xcMCAwXFwwIDFcXDAgMlxcMCAzXFwwIDRcXDAgNVxcMCA2XFwwIDdcXDAg
OFxcMCA5JyIKK1BBU1MgdGVzdC5zdHlsZS5mb250RmFtaWx5IGlzICInXFwwIEFcXDAgQlxcMCBD
XFwwIERcXDAgRVxcMCBGXFwwRyciCitQQVNTIHRlc3Quc3R5bGUuZm9udEZhbWlseSBpcyAiJ1xc
MCBhXFwwIGJcXDAgY1xcMCBkXFwwIGVcXDAgZlxcMGcnIgorCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9mYXN0L2Nzcy9zdHJpbmctcXVvdGUtYmluYXJ5Lmh0bWwgYi9MYXlvdXRUZXN0cy9mYXN0
L2Nzcy9zdHJpbmctcXVvdGUtYmluYXJ5Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMC4uN2U2YzM1ZAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY3Nz
L3N0cmluZy1xdW90ZS1iaW5hcnkuaHRtbApAQCAtMCwwICsxLDQxIEBACis8IURPQ1RZUEUgaHRt
bCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMS8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9U
Ui9odG1sNC9zdHJpY3QuZHRkIj4KKzxodG1sPgorICA8aGVhZD4KKyAgICA8bWV0YSBodHRwLWVx
dWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+Cisg
ICAgPHRpdGxlPkNTUyB2YWx1ZSBzZXJpYWxpemF0aW9uIG9uIGJpbmFyeSBzdHJpbmdzPC90aXRs
ZT4KKyAgICA8c2NyaXB0IHNyYz0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIj48L3Nj
cmlwdD4KKyAgPC9oZWFkPgorICA8Ym9keT4KKyAgICA8ZGl2IGlkPSJ0ZXN0Ij48L2Rpdj4KKyAg
ICA8cD5UaGlzIHRlc3QgY2hlY2tzIGlmIENTUyBzdHJpbmcgdmFsdWVzIGFyZSBjb3JyZWN0bHkg
c2VyaWFsaXplZCB3aGVuIHRoZXkgY29udGFpbiBiaW5hcnkgY2hhcmFjdGVycy48L3A+CisgICAg
PHByZSBpZD0iY29uc29sZSI+PC9wcmU+CisgICAgPHNjcmlwdCB0eXBlPSJhcHBsaWNhdGlvbi9q
YXZhc2NyaXB0Ij4KK3ZhciBpbnB1dHMgPSBbIidcXDBcXDFcXDJcXDNcXDRcXDVcXDZcXDdcXDhc
XDlcXGFcXGJcXGNcXGRcXGVcXGYnIiwKKyAgICAgICAgICAgICAgIidcXDEwXFwxMVxcMTJcXDEz
XFwxNFxcMTVcXDE2XFwxN1xcMThcXDE5XFwxYVxcMWJcXDFjXFwxZFxcMWVcXDFmXFw3ZiciLAor
ICAgICAgICAgICAgICAiJ1xcQVxcQlxcQ1xcRFxcRVxcRlxcMUFcXDFCXFwxQ1xcMURcXDFFXFwx
RlxcN0YnIiwKKyAgICAgICAgICAgICAgIidcXDAgXFwxIFxcMiAnIiwKKyAgICAgICAgICAgICAg
IidcXDAgIFxcMSAgXFwyICAnIiwKKyAgICAgICAgICAgICAgIidcXDAgICBcXDEgICBcXDIgICAn
IiwKKyAgICAgICAgICAgICAgIidcXDAwMDAwZlxcMDAwMDBnJyIsCisgICAgICAgICAgICAgICIn
XFwwIDBcXDAgMVxcMCAyXFwwIDNcXDAgNFxcMCA1XFwwIDZcXDAgN1xcMCA4XFwwIDknIiwKKyAg
ICAgICAgICAgICAgIidcXDAgQVxcMCBCXFwwIENcXDAgRFxcMCBFXFwwIEZcXDAgRyciLAorICAg
ICAgICAgICAgICAiJ1xcMCBhXFwwIGJcXDAgY1xcMCBkXFwwIGVcXDAgZlxcMCBnJyJdOwordmFy
IGV4cGVjdGVkID0gWyInXFwwXFwxXFwyXFwzXFw0XFw1XFw2XFw3XFw4XFw5XFxhXFxiXFxjXFxk
XFxlXFxmJyIsCisgICAgICAgICAgICAgICAgIidcXDEwXFwxMVxcMTJcXDEzXFwxNFxcMTVcXDE2
XFwxN1xcMThcXDE5XFwxYVxcMWJcXDFjXFwxZFxcMWVcXDFmXFw3ZiciLAorICAgICAgICAgICAg
ICAgICInXFxhXFxiXFxjXFxkXFxlXFxmXFwxYVxcMWJcXDFjXFwxZFxcMWVcXDFmXFw3ZiciLAor
ICAgICAgICAgICAgICAgICInXFwwXFwxXFwyJyIsICAgICAgICAgIC8vIE5vIHNwYWNlIGFmdGVy
IGVhY2ggY29udHJvbCBjaGFyYWN0ZXIuCisgICAgICAgICAgICAgICAgIidcXDAgIFxcMSAgXFwy
ICAnIiwgICAgLy8gT25lIHNwYWNlIGRlbGltaXRlciAodGhhdCB3aWxsIGJlIGlnbm9yZWQgYnkg
dGhlIENTUyBwYXJzZXIpLCBwbHVzIG9uZSBhY3R1YWwgc3BhY2UuCisgICAgICAgICAgICAgICAg
IidcXDAgICBcXDEgICBcXDIgICAnIiwgLy8gT25lIHNwYWNlIGRlbGltaXRlciwgcGx1cyB0d28g
YWN0dWFsIHNwYWNlcy4KKyAgICAgICAgICAgICAgICAiJ1xcZlxcMGcnIiwKKyAgICAgICAgICAg
ICAgICAiJ1xcMCAwXFwwIDFcXDAgMlxcMCAzXFwwIDRcXDAgNVxcMCA2XFwwIDdcXDAgOFxcMCA5
JyIsIC8vIE5lZWQgYSBzcGFjZSBiZWZvcmUgWzAtOUEtRmEtZl0sIGJ1dCBub3QgYmVmb3JlIFtH
Z10uCisgICAgICAgICAgICAgICAgIidcXDAgQVxcMCBCXFwwIENcXDAgRFxcMCBFXFwwIEZcXDBH
JyIsCisgICAgICAgICAgICAgICAgIidcXDAgYVxcMCBiXFwwIGNcXDAgZFxcMCBlXFwwIGZcXDBn
JyJdOworCit2YXIgdGVzdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0ZXN0Jyk7Citmb3Ig
KHZhciBpID0gMDsgaSA8IGlucHV0cy5sZW5ndGg7ICsraSkgeworICAgIHRlc3Quc3R5bGUuZm9u
dEZhbWlseSA9IGlucHV0c1tpXTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ3Rlc3Quc3R5
bGUuZm9udEZhbWlseScsIGV4cGVjdGVkW2ldKTsKK30KKyAgICA8L3NjcmlwdD4KKyAgPC9ib2R5
PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9qcy9yZXNvdXJjZXMvanMt
dGVzdC1wcmUuanMgYi9MYXlvdXRUZXN0cy9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5q
cwppbmRleCAxYTY3M2I4Li43YjU1Y2QwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2pz
L3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcworKysgYi9MYXlvdXRUZXN0cy9mYXN0L2pzL3Jlc291
cmNlcy9qcy10ZXN0LXByZS5qcwpAQCAtMTAyLDcgKzEwMiw3IEBAIGZ1bmN0aW9uIHNob3VsZEJl
TnVsbChfYSkgeyBzaG91bGRCZShfYSwgIm51bGwiKTsgfQogCiBmdW5jdGlvbiBzaG91bGRCZUVx
dWFsVG9TdHJpbmcoYSwgYikKIHsKLSAgdmFyIHVuZXZhbGVkU3RyaW5nID0gJyInICsgYi5yZXBs
YWNlKC8iL2csICJcIiIpICsgJyInOworICB2YXIgdW5ldmFsZWRTdHJpbmcgPSAnIicgKyBiLnJl
cGxhY2UoL1xcL2csICJcXFxcIikucmVwbGFjZSgvIi9nLCAiXCIiKSArICciJzsKICAgc2hvdWxk
QmUoYSwgdW5ldmFsZWRTdHJpbmcpOwogfQogCmRpZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5nZUxv
ZyBiL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDhlN2U5ZTkuLjcwMjBjNmQgMTAwNjQ0Ci0tLSBh
L1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzEg
QEAKKzIwMDktMDktMDQgIFl1dGEgS2l0YW11cmEgIDx5dXRha0BjaHJvbWl1bS5vcmc+CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRXNjYXBlIGNvbnRy
b2wgY2hhcmFjdGVycyBpbiBDU1Mgc3RyaW5nIHZhbHVlIHdoZW4gaXQgaXMgc2VyaWFsaXplZC4K
KyAgICAgICAgCisgICAgICAgIFdoZW4gV2ViS2l0IHNlcmlhbGl6ZXNhIENTUyBzdHJpbmcgdmFs
dWUgdGhhdCBjb250YWlucyBiaW5hcnkgY2hhcmFjdGVycworICAgICAgICAoJ1wwXDFcMicgZm9y
IGV4YW1wbGUpLCBpdCBkaWQgbm90IGVzY2FwZSB0aGVzZSBjaGFyYWN0ZXJzLiBBcyBhIHJlc3Vs
dCwKKyAgICAgICAgdXNlcnMgZ290IChpbnZpc2libGUpIGNvbnRyb2wgY2hhcmFjdGVycyB0aHJv
dWdoIHNjcmlwdHMsIHdoaWNoIHdhcyBub3QgZ29vZC4KKyAgICAgICAgVGhpcyBjaGFuZ2UgZml4
ZXMgdGhpcyBpc3N1ZS4KKyAgICAgICAgCisgICAgICAgIEFzIGEgc2lkZSBlZmZlY3QsIHR3byBz
ZXBhcmF0ZSBjb2RlcyBmb3IgZXNjYXBpbmcgQ1NTIHN0cmluZ3MgYXJlIG1lcmdlZCwgYW5kCisg
ICAgICAgIGJlY29tZSBhIHB1YmxpYyBmdW5jdGlvbiAoZXNjYXBlQ1NTU3RyaW5nKS4KKworICAg
ICAgICBDU1Mgc3RyaW5nIHZhbHVlIGlzIG5vdCBjb3JyZWN0bHkgc2VyaWFsaXplZCB3aGVuIGl0
IGNvbnRhaW5zIGJpbmFyeSBjaGFyYWN0ZXJzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yODkzOAorCisgICAgICAgIFRlc3Q6IGZhc3QvY3NzL3N0cmlu
Zy1xdW90ZS1iaW5hcnkuaHRtbAorCisgICAgICAgICogY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OnF1b3RlQ1NTU3RyaW5nKToKKyAgICAgICAgKFdlYkNvcmU6
OnF1b3RlQ1NTU3RyaW5nSWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6cXVvdGVDU1NVUkxJ
Zk5lZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcmltaXRpdmVWYWx1ZTo6Y3NzVGV4dCk6
CisgICAgICAgICogY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmg6CisgICAgICAgICogY3NzL0ZvbnRG
YW1pbHlWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250RmFtaWx5VmFsdWU6OmNzc1Rl
eHQpOgorCiAyMDA5LTA5LTAzICBBbGV4ZXkgUHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgog
CiAgICAgICAgIFJldmlld2VkIGJ5IERhcmluIEFkbGVyLgpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9j
c3MvQ1NTUHJpbWl0aXZlVmFsdWUuY3BwIGIvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUu
Y3BwCmluZGV4IDFmMmM5Y2EuLjM5MmM5YzQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvY3NzL0NTU1By
aW1pdGl2ZVZhbHVlLmNwcAorKysgYi9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5jcHAK
QEAgLTE3NiwyMyArMTc2LDQxIEBAIHN0YXRpYyBib29sIGlzQ1NTVG9rZW5pemVyVVJMKGNvbnN0
IFN0cmluZyYgc3RyaW5nKQogfQogCiAvLyBXZSB1c2Ugc2luZ2xlIHF1b3RlcyBmb3Igbm93IGJl
Y2F1c2UgbWFya3VwLmNwcCB1c2VzIGRvdWJsZSBxdW90ZXMuCi1zdGF0aWMgU3RyaW5nIHF1b3Rl
U3RyaW5nKGNvbnN0IFN0cmluZyYgc3RyaW5nKQotewotICAgIC8vIEZJWE1FOiBBbHNvIG5lZWQg
dG8gZXNjYXBlIGNoYXJhY3RlcnMgbGlrZSAnXG4nLgotICAgIFN0cmluZyBzID0gc3RyaW5nOwot
ICAgIHMucmVwbGFjZSgnXFwnLCAiXFxcXCIpOwotICAgIHMucmVwbGFjZSgnXCcnLCAiXFwnIik7
Ci0gICAgcmV0dXJuICInIiArIHMgKyAiJyI7CitTdHJpbmcgcXVvdGVDU1NTdHJpbmcoY29uc3Qg
U3RyaW5nJiBzdHJpbmcpCit7CisgICAgYm9vbCBhZnRlckVzY2FwZSA9IGZhbHNlOworICAgIFN0
cmluZyBxdW90ZWRTdHJpbmcoIiciKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc3Ry
aW5nLmxlbmd0aCgpOyArK2kpIHsKKyAgICAgICAgVUNoYXIgY2ggPSBzdHJpbmdbaV07CisgICAg
ICAgIGlmIChjaCA9PSAnXFwnKSB7CisgICAgICAgICAgICBxdW90ZWRTdHJpbmcuYXBwZW5kKCJc
XFxcIik7CisgICAgICAgICAgICBhZnRlckVzY2FwZSA9IGZhbHNlOworICAgICAgICB9IGVsc2Ug
aWYgKGNoID09ICdcJycpIHsKKyAgICAgICAgICAgIHF1b3RlZFN0cmluZy5hcHBlbmQoIlxcJyIp
OworICAgICAgICAgICAgYWZ0ZXJFc2NhcGUgPSBmYWxzZTsKKyAgICAgICAgfSBlbHNlIGlmIChj
aCA8IDB4MjAgfHwgY2ggPT0gMHg3RikgeworICAgICAgICAgICAgcXVvdGVkU3RyaW5nLmFwcGVu
ZChTdHJpbmc6OmZvcm1hdCgiXFwleCIsIHN0YXRpY19jYXN0PGludD4oY2gpKSk7CisgICAgICAg
ICAgICBhZnRlckVzY2FwZSA9IHRydWU7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAv
LyBTcGFjZSBjaGFyYWNldGVyIG1heSBiZSByZXF1aXJlZCB0byBzZXBhcmF0ZSBiYWNrc2xhc2gt
ZXNjYXBlIHNlcXVlbmNlIGFuZCBub3JtYWwgY2hhcmFjdGVycy4KKyAgICAgICAgICAgIGlmIChh
ZnRlckVzY2FwZSAmJiAoaXNBU0NJSUhleERpZ2l0KGNoKSB8fCBjaCA9PSAnICcpKQorICAgICAg
ICAgICAgICAgIHF1b3RlZFN0cmluZy5hcHBlbmQoJyAnKTsKKyAgICAgICAgICAgIHF1b3RlZFN0
cmluZy5hcHBlbmQoY2gpOworICAgICAgICAgICAgYWZ0ZXJFc2NhcGUgPSBmYWxzZTsKKyAgICAg
ICAgfQorICAgIH0KKyAgICBxdW90ZWRTdHJpbmcuYXBwZW5kKCInIik7CisgICAgcmV0dXJuIHF1
b3RlZFN0cmluZzsKIH0KIAotc3RhdGljIFN0cmluZyBxdW90ZVN0cmluZ0lmTmVlZGVkKGNvbnN0
IFN0cmluZyYgc3RyaW5nKQorU3RyaW5nIHF1b3RlQ1NTU3RyaW5nSWZOZWVkZWQoY29uc3QgU3Ry
aW5nJiBzdHJpbmcpCiB7Ci0gICAgcmV0dXJuIGlzQ1NTVG9rZW5pemVySWRlbnRpZmllcihzdHJp
bmcpID8gc3RyaW5nIDogcXVvdGVTdHJpbmcoc3RyaW5nKTsKKyAgICByZXR1cm4gaXNDU1NUb2tl
bml6ZXJJZGVudGlmaWVyKHN0cmluZykgPyBzdHJpbmcgOiBxdW90ZUNTU1N0cmluZyhzdHJpbmcp
OwogfQogCi1zdGF0aWMgU3RyaW5nIHF1b3RlVVJMSWZOZWVkZWQoY29uc3QgU3RyaW5nJiBzdHJp
bmcpCitTdHJpbmcgcXVvdGVDU1NVUkxJZk5lZWRlZChjb25zdCBTdHJpbmcmIHN0cmluZykKIHsK
LSAgICByZXR1cm4gaXNDU1NUb2tlbml6ZXJVUkwoc3RyaW5nKSA/IHN0cmluZyA6IHF1b3RlU3Ry
aW5nKHN0cmluZyk7CisgICAgcmV0dXJuIGlzQ1NTVG9rZW5pemVyVVJMKHN0cmluZykgPyBzdHJp
bmcgOiBxdW90ZUNTU1N0cmluZyhzdHJpbmcpOwogfQogCiBDU1NQcmltaXRpdmVWYWx1ZTo6Q1NT
UHJpbWl0aXZlVmFsdWUoKQpAQCAtNzU1LDEwICs3NzMsMTAgQEAgU3RyaW5nIENTU1ByaW1pdGl2
ZVZhbHVlOjpjc3NUZXh0KCkgY29uc3QKICAgICAgICAgICAgIC8vIEZJWE1FCiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgY2FzZSBDU1NfU1RSSU5HOgotICAgICAgICAgICAgdGV4dCA9IHF1
b3RlU3RyaW5nSWZOZWVkZWQobV92YWx1ZS5zdHJpbmcpOworICAgICAgICAgICAgdGV4dCA9IHF1
b3RlQ1NTU3RyaW5nSWZOZWVkZWQobV92YWx1ZS5zdHJpbmcpOwogICAgICAgICAgICAgYnJlYWs7
CiAgICAgICAgIGNhc2UgQ1NTX1VSSToKLSAgICAgICAgICAgIHRleHQgPSAidXJsKCIgKyBxdW90
ZVVSTElmTmVlZGVkKG1fdmFsdWUuc3RyaW5nKSArICIpIjsKKyAgICAgICAgICAgIHRleHQgPSAi
dXJsKCIgKyBxdW90ZUNTU1VSTElmTmVlZGVkKG1fdmFsdWUuc3RyaW5nKSArICIpIjsKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENTU19JREVOVDoKICAgICAgICAgICAgIHRleHQg
PSB2YWx1ZU9yUHJvcGVydHlOYW1lKG1fdmFsdWUuaWRlbnQpOwpAQCAtODgzLDcgKzkwMSw3IEBA
IFN0cmluZyBDU1NQcmltaXRpdmVWYWx1ZTo6Y3NzVGV4dCgpIGNvbnN0CiAgICAgICAgICAgICBi
cmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIENTU19QQVJTRVJfSURFTlRJRklFUjoKLSAg
ICAgICAgICAgIHRleHQgPSBxdW90ZVN0cmluZ0lmTmVlZGVkKG1fdmFsdWUuc3RyaW5nKTsKKyAg
ICAgICAgICAgIHRleHQgPSBxdW90ZUNTU1N0cmluZ0lmTmVlZGVkKG1fdmFsdWUuc3RyaW5nKTsK
ICAgICAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICByZXR1cm4gdGV4dDsKZGlmZiAtLWdpdCBh
L1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmggYi9XZWJDb3JlL2Nzcy9DU1NQcmltaXRp
dmVWYWx1ZS5oCmluZGV4IGQ0MTc2MTkuLjE0YjUxYmQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvY3Nz
L0NTU1ByaW1pdGl2ZVZhbHVlLmgKKysrIGIvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUu
aApAQCAtMjEzLDYgKzIxMywxMCBAQCBwcml2YXRlOgogICAgIH0gbV92YWx1ZTsKIH07CiAKK1N0
cmluZyBxdW90ZUNTU1N0cmluZyhjb25zdCBTdHJpbmcmKTsKK1N0cmluZyBxdW90ZUNTU1N0cmlu
Z0lmTmVlZGVkKGNvbnN0IFN0cmluZyYpOworU3RyaW5nIHF1b3RlQ1NTVVJMSWZOZWVkZWQoY29u
c3QgU3RyaW5nJik7CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIENTU1By
aW1pdGl2ZVZhbHVlX2gKZGlmZiAtLWdpdCBhL1dlYkNvcmUvY3NzL0ZvbnRGYW1pbHlWYWx1ZS5j
cHAgYi9XZWJDb3JlL2Nzcy9Gb250RmFtaWx5VmFsdWUuY3BwCmluZGV4IDkwYThjOWQuLjU3ZDIx
NzEgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvY3NzL0ZvbnRGYW1pbHlWYWx1ZS5jcHAKKysrIGIvV2Vi
Q29yZS9jc3MvRm9udEZhbWlseVZhbHVlLmNwcApAQCAtMjEsNDQgKzIxLDkgQEAKICNpbmNsdWRl
ICJjb25maWcuaCIKICNpbmNsdWRlICJGb250RmFtaWx5VmFsdWUuaCIKIAotbmFtZXNwYWNlIFdl
YkNvcmUgewotCi0vLyBGSVhNRTogVGhpcyBhcHBlYXJzIGlkZW50aWNhbCB0byBpc0NTU1Rva2Vu
aXplcklkZW50aWZpZXIgZnJvbSBDU1NQcmltaXRpdmVWYWx1ZS5jcHAsIHdlIHNob3VsZCB1c2Ug
YSBzaW5nbGUgZnVuY3Rpb24uCi1zdGF0aWMgYm9vbCBpc1ZhbGlkQ1NTSWRlbnRpZmllcihjb25z
dCBTdHJpbmcmIHN0cmluZykKLXsKLSAgICB1bnNpZ25lZCBsZW5ndGggPSBzdHJpbmcubGVuZ3Ro
KCk7Ci0gICAgaWYgKCFsZW5ndGgpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGNvbnN0
IFVDaGFyKiBjaGFyYWN0ZXJzID0gc3RyaW5nLmNoYXJhY3RlcnMoKTsKLSAgICBVQ2hhciBjID0g
Y2hhcmFjdGVyc1swXTsKLSAgICBpZiAoIShjID09ICdfJyB8fCAoYyA+PSAnYScgJiYgYyA8PSAn
eicpIHx8IChjID49ICdBJyAmJiBjIDw9ICdaJykgfHwgYyA9PSAnLScgfHwgYyA+PSAweDgwKSkK
LSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgZm9yICh1bnNpZ25lZCBpID0gMTsgaSA8IGxl
bmd0aDsgKytpKSB7Ci0gICAgICAgIGMgPSBjaGFyYWN0ZXJzW2ldOwotICAgICAgICBpZiAoIShj
ID09ICdfJyB8fCAoYyA+PSAnYScgJiYgYyA8PSAneicpIHx8IChjID49ICdBJyAmJiBjIDw9ICda
JykgfHwgKGMgPj0gJzAnICYmIGMgPD0gJzknKSB8fCBjID09ICctJyB8fCBjID49IDB4ODApKQot
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KKyNpbmNsdWRlICJDU1NQcmltaXRpdmVW
YWx1ZS5oIgogCi0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLS8vIFF1b3RlcyB0aGUgc3RyaW5nIGlm
IGl0IG5lZWRzIHF1b3RpbmcuCi0vLyBXZSB1c2Ugc2luZ2xlIHF1b3RlcyBiZWNhdXNlIHNlcmlh
bGl6YXRpb24gY29kZSB1c2VzIGRvdWJsZSBxdW90ZXMsIGFuZCBpdCdzIG5pY2UgdG8KLS8vIGF2
b2lkIGhhdmluZyB0byB0dXJuIGFsbCB0aGUgcXVvdGUgbWFya3MgaW50byAmcXVvdDsgYXMgd2Ug
d291bGQgaGF2ZSB0by4KLXN0YXRpYyBTdHJpbmcgcXVvdGVTdHJpbmdJZk5lZWRlZChjb25zdCBT
dHJpbmcmIHN0cmluZykKLXsKLSAgICBpZiAoaXNWYWxpZENTU0lkZW50aWZpZXIoc3RyaW5nKSkK
LSAgICAgICAgcmV0dXJuIHN0cmluZzsKLQotICAgIC8vIEZJWE1FOiBBbHNvIG5lZWQgdG8gdHJh
bnNmb3JtIGNvbnRyb2wgY2hhcmFjdGVycyAoMDAtMUYpIGludG8gXCBzZXF1ZW5jZXMuCi0gICAg
Ly8gRklYTUU6IFRoaXMgaXMgaW5lZmZpY2llbnQgLS0gc2hvdWxkIHVzZSBhIFZlY3RvcjxVQ2hh
cj4gaW5zdGVhZC4KLSAgICBTdHJpbmcgcXVvdGVkU3RyaW5nID0gc3RyaW5nOwotICAgIHF1b3Rl
ZFN0cmluZy5yZXBsYWNlKCdcXCcsICJcXFxcIik7Ci0gICAgcXVvdGVkU3RyaW5nLnJlcGxhY2Uo
J1wnJywgIlxcJyIpOwotICAgIHJldHVybiAiJyIgKyBxdW90ZWRTdHJpbmcgKyAiJyI7Ci19Citu
YW1lc3BhY2UgV2ViQ29yZSB7CiAKIEZvbnRGYW1pbHlWYWx1ZTo6Rm9udEZhbWlseVZhbHVlKGNv
bnN0IFN0cmluZyYgZmFtaWx5TmFtZSkKICAgICA6IENTU1ByaW1pdGl2ZVZhbHVlKFN0cmluZygp
LCBDU1NfU1RSSU5HKQpAQCAtMTAxLDcgKzY2LDcgQEAgdm9pZCBGb250RmFtaWx5VmFsdWU6OmFw
cGVuZFNwYWNlU2VwYXJhdGVkKGNvbnN0IFVDaGFyKiBjaGFyYWN0ZXJzLCB1bnNpZ25lZCBsZW4K
IAogU3RyaW5nIEZvbnRGYW1pbHlWYWx1ZTo6Y3NzVGV4dCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJu
IHF1b3RlU3RyaW5nSWZOZWVkZWQobV9mYW1pbHlOYW1lKTsKKyAgICByZXR1cm4gcXVvdGVDU1NT
dHJpbmdJZk5lZWRlZChtX2ZhbWlseU5hbWUpOwogfQogCiB9
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>39051</attachid>
            <date>2009-09-04 04:38:57 -0700</date>
            <delta_ts>2009-09-04 04:51:12 -0700</delta_ts>
            <desc>Escape control characters in CSS string value when it is serialized.</desc>
            <filename>bug-28938-20090904203855.patch</filename>
            <type>text/plain</type>
            <size>12304</size>
            <attacher name="Yuta Kitamura">yutak</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA2MDlhYzVmLi45MGM3NWI3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjYgQEAKKzIwMDktMDkt
MDQgIFl1dGEgS2l0YW11cmEgIDx5dXRha0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRXNjYXBlIGNvbnRyb2wgY2hhcmFjdGVy
cyBpbiBDU1Mgc3RyaW5nIHZhbHVlIHdoZW4gaXQgaXMgc2VyaWFsaXplZC4KKyAgICAgICAgCisg
ICAgICAgIFdoZW4gV2ViS2l0IHNlcmlhbGl6ZXNhIENTUyBzdHJpbmcgdmFsdWUgdGhhdCBjb250
YWlucyBiaW5hcnkgY2hhcmFjdGVycworICAgICAgICAoJ1wwXDFcMicgZm9yIGV4YW1wbGUpLCBp
dCBkaWQgbm90IGVzY2FwZSB0aGVzZSBjaGFyYWN0ZXJzLiBBcyBhIHJlc3VsdCwKKyAgICAgICAg
dXNlcnMgZ290IChpbnZpc2libGUpIGNvbnRyb2wgY2hhcmFjdGVycyB0aHJvdWdoIHNjcmlwdHMs
IHdoaWNoIHdhcyBub3QgZ29vZC4KKyAgICAgICAgVGhpcyBjaGFuZ2UgZml4ZXMgdGhpcyBpc3N1
ZS4KKyAgICAgICAgCisgICAgICAgIEFzIGEgc2lkZSBlZmZlY3QsIHR3byBzZXBhcmF0ZSBjb2Rl
cyBmb3IgZXNjYXBpbmcgQ1NTIHN0cmluZ3MgYXJlIG1lcmdlZCwgYW5kCisgICAgICAgIGJlY29t
ZSBhIHB1YmxpYyBmdW5jdGlvbiAoZXNjYXBlQ1NTU3RyaW5nKS4KKworICAgICAgICBDU1Mgc3Ry
aW5nIHZhbHVlIGlzIG5vdCBjb3JyZWN0bHkgc2VyaWFsaXplZCB3aGVuIGl0IGNvbnRhaW5zIGJp
bmFyeSBjaGFyYWN0ZXJzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yODkzOAorCisgICAgICAgICogZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUu
anM6CisgICAgICAgIChzaG91bGRCZUVxdWFsVG9TdHJpbmcpOgorICAgICAgICAqIGZhc3QvanMv
cmVzb3VyY2VzL3N0cmluZy1xdW90ZS1iaW5hcnkuanM6IEFkZGVkLgorICAgICAgICAqIGZhc3Qv
anMvc3RyaW5nLXF1b3RlLWJpbmFyeS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZh
c3QvanMvc3RyaW5nLXF1b3RlLWJpbmFyeS5odG1sOiBBZGRlZC4KKwogMjAwOS0wOS0wNCAgS2Vu
dCBUYW11cmEgIDx0a2VudEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRXJp
YyBTZWlkZWwuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2pzL3Jlc291cmNlcy9qcy10
ZXN0LXByZS5qcyBiL0xheW91dFRlc3RzL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpz
CmluZGV4IDFhNjczYjguLjdiNTVjZDAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvanMv
cmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvanMvcmVzb3Vy
Y2VzL2pzLXRlc3QtcHJlLmpzCkBAIC0xMDIsNyArMTAyLDcgQEAgZnVuY3Rpb24gc2hvdWxkQmVO
dWxsKF9hKSB7IHNob3VsZEJlKF9hLCAibnVsbCIpOyB9CiAKIGZ1bmN0aW9uIHNob3VsZEJlRXF1
YWxUb1N0cmluZyhhLCBiKQogewotICB2YXIgdW5ldmFsZWRTdHJpbmcgPSAnIicgKyBiLnJlcGxh
Y2UoLyIvZywgIlwiIikgKyAnIic7CisgIHZhciB1bmV2YWxlZFN0cmluZyA9ICciJyArIGIucmVw
bGFjZSgvXFwvZywgIlxcXFwiKS5yZXBsYWNlKC8iL2csICJcIiIpICsgJyInOwogICBzaG91bGRC
ZShhLCB1bmV2YWxlZFN0cmluZyk7CiB9CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qv
anMvcmVzb3VyY2VzL3N0cmluZy1xdW90ZS1iaW5hcnkuanMgYi9MYXlvdXRUZXN0cy9mYXN0L2pz
L3Jlc291cmNlcy9zdHJpbmctcXVvdGUtYmluYXJ5LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAuLjA1YzI0NjAKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0
L2pzL3Jlc291cmNlcy9zdHJpbmctcXVvdGUtYmluYXJ5LmpzCkBAIC0wLDAgKzEsMzAgQEAKK2Rv
Y3VtZW50LmdldEVsZW1lbnRCeUlkKCdkZXNjcmlwdGlvbicpLmlubmVySFRNTCA9ICdUaGlzIHRl
c3QgY2hlY2tzIGlmIENTUyBzdHJpbmcgdmFsdWVzIGFyZSBjb3JyZWN0bHkgc2VyaWFsaXplZCB3
aGVuIHRoZXkgY29udGFpbiBiaW5hcnkgY2hhcmFjdGVycy4nOworCit2YXIgaW5wdXRzID0gWyIn
XFwwXFwxXFwyXFwzXFw0XFw1XFw2XFw3XFw4XFw5XFxhXFxiXFxjXFxkXFxlXFxmJyIsCisgICAg
ICAgICAgICAgICInXFwxMFxcMTFcXDEyXFwxM1xcMTRcXDE1XFwxNlxcMTdcXDE4XFwxOVxcMWFc
XDFiXFwxY1xcMWRcXDFlXFwxZlxcN2YnIiwKKyAgICAgICAgICAgICAgIidcXEFcXEJcXENcXERc
XEVcXEZcXDFBXFwxQlxcMUNcXDFEXFwxRVxcMUZcXDdGJyIsCisgICAgICAgICAgICAgICInXFww
IFxcMSBcXDIgJyIsCisgICAgICAgICAgICAgICInXFwwICBcXDEgIFxcMiAgJyIsCisgICAgICAg
ICAgICAgICInXFwwICAgXFwxICAgXFwyICAgJyIsCisgICAgICAgICAgICAgICInXFwwMDAwMGZc
XDAwMDAwZyciLAorICAgICAgICAgICAgICAiJ1xcMCAwXFwwIDFcXDAgMlxcMCAzXFwwIDRcXDAg
NVxcMCA2XFwwIDdcXDAgOFxcMCA5JyIsCisgICAgICAgICAgICAgICInXFwwIEFcXDAgQlxcMCBD
XFwwIERcXDAgRVxcMCBGXFwwIEcnIiwKKyAgICAgICAgICAgICAgIidcXDAgYVxcMCBiXFwwIGNc
XDAgZFxcMCBlXFwwIGZcXDAgZyciXTsKK3ZhciBleHBlY3RlZCA9IFsiJ1xcMFxcMVxcMlxcM1xc
NFxcNVxcNlxcN1xcOFxcOVxcYVxcYlxcY1xcZFxcZVxcZiciLAorICAgICAgICAgICAgICAgICIn
XFwxMFxcMTFcXDEyXFwxM1xcMTRcXDE1XFwxNlxcMTdcXDE4XFwxOVxcMWFcXDFiXFwxY1xcMWRc
XDFlXFwxZlxcN2YnIiwKKyAgICAgICAgICAgICAgICAiJ1xcYVxcYlxcY1xcZFxcZVxcZlxcMWFc
XDFiXFwxY1xcMWRcXDFlXFwxZlxcN2YnIiwKKyAgICAgICAgICAgICAgICAiJ1xcMFxcMVxcMici
LCAgICAgICAgICAvLyBObyBzcGFjZSBhZnRlciBlYWNoIGNvbnRyb2wgY2hhcmFjdGVyLgorICAg
ICAgICAgICAgICAgICInXFwwICBcXDEgIFxcMiAgJyIsICAgIC8vIE9uZSBzcGFjZSBkZWxpbWl0
ZXIgKHRoYXQgd2lsbCBiZSBpZ25vcmVkIGJ5IHRoZSBDU1MgcGFyc2VyKSwgcGx1cyBvbmUgYWN0
dWFsIHNwYWNlLgorICAgICAgICAgICAgICAgICInXFwwICAgXFwxICAgXFwyICAgJyIsIC8vIE9u
ZSBzcGFjZSBkZWxpbWl0ZXIsIHBsdXMgdHdvIGFjdHVhbCBzcGFjZXMuCisgICAgICAgICAgICAg
ICAgIidcXGZcXDBnJyIsCisgICAgICAgICAgICAgICAgIidcXDAgMFxcMCAxXFwwIDJcXDAgM1xc
MCA0XFwwIDVcXDAgNlxcMCA3XFwwIDhcXDAgOSciLCAvLyBOZWVkIGEgc3BhY2UgYmVmb3JlIFsw
LTlBLUZhLWZdLCBidXQgbm90IGJlZm9yZSBbR2ddLgorICAgICAgICAgICAgICAgICInXFwwIEFc
XDAgQlxcMCBDXFwwIERcXDAgRVxcMCBGXFwwRyciLAorICAgICAgICAgICAgICAgICInXFwwIGFc
XDAgYlxcMCBjXFwwIGRcXDAgZVxcMCBmXFwwZyciXTsKKwordmFyIHRlc3QgPSBkb2N1bWVudC5n
ZXRFbGVtZW50QnlJZCgndGVzdCcpOworZm9yICh2YXIgaSA9IDA7IGkgPCBpbnB1dHMubGVuZ3Ro
OyArK2kpIHsKKyAgICB0ZXN0LnN0eWxlLmZvbnRGYW1pbHkgPSBpbnB1dHNbaV07CisgICAgc2hv
dWxkQmVFcXVhbFRvU3RyaW5nKCd0ZXN0LnN0eWxlLmZvbnRGYW1pbHknLCBleHBlY3RlZFtpXSk7
Cit9CisKK3N1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9mYXN0L2pzL3N0cmluZy1xdW90ZS1iaW5hcnktZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMv
ZmFzdC9qcy9zdHJpbmctcXVvdGUtYmluYXJ5LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwLi4zMGI2ZDg3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvZmFzdC9qcy9zdHJpbmctcXVvdGUtYmluYXJ5LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxLDE2
IEBACitUaGlzIHRlc3QgY2hlY2tzIGlmIENTUyBzdHJpbmcgdmFsdWVzIGFyZSBjb3JyZWN0bHkg
c2VyaWFsaXplZCB3aGVuIHRoZXkgY29udGFpbiBiaW5hcnkgY2hhcmFjdGVycy4KKworUEFTUyB0
ZXN0LnN0eWxlLmZvbnRGYW1pbHkgaXMgIidcXDBcXDFcXDJcXDNcXDRcXDVcXDZcXDdcXDhcXDlc
XGFcXGJcXGNcXGRcXGVcXGYnIgorUEFTUyB0ZXN0LnN0eWxlLmZvbnRGYW1pbHkgaXMgIidcXDEw
XFwxMVxcMTJcXDEzXFwxNFxcMTVcXDE2XFwxN1xcMThcXDE5XFwxYVxcMWJcXDFjXFwxZFxcMWVc
XDFmXFw3ZiciCitQQVNTIHRlc3Quc3R5bGUuZm9udEZhbWlseSBpcyAiJ1xcYVxcYlxcY1xcZFxc
ZVxcZlxcMWFcXDFiXFwxY1xcMWRcXDFlXFwxZlxcN2YnIgorUEFTUyB0ZXN0LnN0eWxlLmZvbnRG
YW1pbHkgaXMgIidcXDBcXDFcXDInIgorUEFTUyB0ZXN0LnN0eWxlLmZvbnRGYW1pbHkgaXMgIidc
XDAgIFxcMSAgXFwyICAnIgorUEFTUyB0ZXN0LnN0eWxlLmZvbnRGYW1pbHkgaXMgIidcXDAgICBc
XDEgICBcXDIgICAnIgorUEFTUyB0ZXN0LnN0eWxlLmZvbnRGYW1pbHkgaXMgIidcXGZcXDBnJyIK
K1BBU1MgdGVzdC5zdHlsZS5mb250RmFtaWx5IGlzICInXFwwIDBcXDAgMVxcMCAyXFwwIDNcXDAg
NFxcMCA1XFwwIDZcXDAgN1xcMCA4XFwwIDknIgorUEFTUyB0ZXN0LnN0eWxlLmZvbnRGYW1pbHkg
aXMgIidcXDAgQVxcMCBCXFwwIENcXDAgRFxcMCBFXFwwIEZcXDBHJyIKK1BBU1MgdGVzdC5zdHls
ZS5mb250RmFtaWx5IGlzICInXFwwIGFcXDAgYlxcMCBjXFwwIGRcXDAgZVxcMCBmXFwwZyciCitQ
QVNTIHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9qcy9zdHJpbmctcXVvdGUtYmluYXJ5Lmh0bWwgYi9MYXlv
dXRUZXN0cy9mYXN0L2pzL3N0cmluZy1xdW90ZS1iaW5hcnkuaHRtbApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwLi40OTdjMGQzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvZmFzdC9qcy9zdHJpbmctcXVvdGUtYmluYXJ5Lmh0bWwKQEAgLTAsMCArMSwxNCBAQAorPCFE
T0NUWVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVh
ZD4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0icmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUu
Y3NzIj4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0Pgor
PC9oZWFkPgorPGJvZHk+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxwcmUgaWQ9ImNvbnNv
bGUiPjwvcHJlPgorPGRpdiBpZD0idGVzdCI+PC9kaXY+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2Vz
L3N0cmluZy1xdW90ZS1iaW5hcnkuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNl
cy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBkNjhhYTMxLi42
NGViOTRkIDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDA5LTA5LTA0ICBZdXRhIEtpdGFtdXJhICA8eXV0YWtA
Y2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgIEVzY2FwZSBjb250cm9sIGNoYXJhY3RlcnMgaW4gQ1NTIHN0cmluZyB2YWx1ZSB3aGVu
IGl0IGlzIHNlcmlhbGl6ZWQuCisgICAgICAgIAorICAgICAgICBXaGVuIFdlYktpdCBzZXJpYWxp
emVzYSBDU1Mgc3RyaW5nIHZhbHVlIHRoYXQgY29udGFpbnMgYmluYXJ5IGNoYXJhY3RlcnMKKyAg
ICAgICAgKCdcMFwxXDInIGZvciBleGFtcGxlKSwgaXQgZGlkIG5vdCBlc2NhcGUgdGhlc2UgY2hh
cmFjdGVycy4gQXMgYSByZXN1bHQsCisgICAgICAgIHVzZXJzIGdvdCAoaW52aXNpYmxlKSBjb250
cm9sIGNoYXJhY3RlcnMgdGhyb3VnaCBzY3JpcHRzLCB3aGljaCB3YXMgbm90IGdvb2QuCisgICAg
ICAgIFRoaXMgY2hhbmdlIGZpeGVzIHRoaXMgaXNzdWUuCisgICAgICAgIAorICAgICAgICBBcyBh
IHNpZGUgZWZmZWN0LCB0d28gc2VwYXJhdGUgY29kZXMgZm9yIGVzY2FwaW5nIENTUyBzdHJpbmdz
IGFyZSBtZXJnZWQsIGFuZAorICAgICAgICBiZWNvbWUgYSBwdWJsaWMgZnVuY3Rpb24gKGVzY2Fw
ZUNTU1N0cmluZykuCisKKyAgICAgICAgQ1NTIHN0cmluZyB2YWx1ZSBpcyBub3QgY29ycmVjdGx5
IHNlcmlhbGl6ZWQgd2hlbiBpdCBjb250YWlucyBiaW5hcnkgY2hhcmFjdGVycworICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mjg5MzgKKworICAgICAgICBU
ZXN0OiBmYXN0L2pzL3N0cmluZy1xdW90ZS1iaW5hcnkuaHRtbAorCisgICAgICAgICogY3NzL0NT
U1ByaW1pdGl2ZVZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnF1b3RlQ1NTU3RyaW5nKToK
KyAgICAgICAgKFdlYkNvcmU6OnF1b3RlQ1NTU3RyaW5nSWZOZWVkZWQpOgorICAgICAgICAoV2Vi
Q29yZTo6cXVvdGVDU1NVUkxJZk5lZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcmltaXRp
dmVWYWx1ZTo6Y3NzVGV4dCk6CisgICAgICAgICogY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmg6Cisg
ICAgICAgICogY3NzL0ZvbnRGYW1pbHlWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250
RmFtaWx5VmFsdWU6OmNzc1RleHQpOgorCiAyMDA5LTA5LTA0ICBCZW4gTXVyZG9jaCAgPGJlbm1A
Z29vZ2xlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBFcmljIFNlaWRlbC4KZGlmZiAtLWdp
dCBhL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmNwcCBiL1dlYkNvcmUvY3NzL0NTU1By
aW1pdGl2ZVZhbHVlLmNwcAppbmRleCAxZjJjOWNhLi4zOTJjOWM0IDEwMDY0NAotLS0gYS9XZWJD
b3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5jcHAKKysrIGIvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0
aXZlVmFsdWUuY3BwCkBAIC0xNzYsMjMgKzE3Niw0MSBAQCBzdGF0aWMgYm9vbCBpc0NTU1Rva2Vu
aXplclVSTChjb25zdCBTdHJpbmcmIHN0cmluZykKIH0KIAogLy8gV2UgdXNlIHNpbmdsZSBxdW90
ZXMgZm9yIG5vdyBiZWNhdXNlIG1hcmt1cC5jcHAgdXNlcyBkb3VibGUgcXVvdGVzLgotc3RhdGlj
IFN0cmluZyBxdW90ZVN0cmluZyhjb25zdCBTdHJpbmcmIHN0cmluZykKLXsKLSAgICAvLyBGSVhN
RTogQWxzbyBuZWVkIHRvIGVzY2FwZSBjaGFyYWN0ZXJzIGxpa2UgJ1xuJy4KLSAgICBTdHJpbmcg
cyA9IHN0cmluZzsKLSAgICBzLnJlcGxhY2UoJ1xcJywgIlxcXFwiKTsKLSAgICBzLnJlcGxhY2Uo
J1wnJywgIlxcJyIpOwotICAgIHJldHVybiAiJyIgKyBzICsgIiciOworU3RyaW5nIHF1b3RlQ1NT
U3RyaW5nKGNvbnN0IFN0cmluZyYgc3RyaW5nKQoreworICAgIGJvb2wgYWZ0ZXJFc2NhcGUgPSBm
YWxzZTsKKyAgICBTdHJpbmcgcXVvdGVkU3RyaW5nKCInIik7CisgICAgZm9yICh1bnNpZ25lZCBp
ID0gMDsgaSA8IHN0cmluZy5sZW5ndGgoKTsgKytpKSB7CisgICAgICAgIFVDaGFyIGNoID0gc3Ry
aW5nW2ldOworICAgICAgICBpZiAoY2ggPT0gJ1xcJykgeworICAgICAgICAgICAgcXVvdGVkU3Ry
aW5nLmFwcGVuZCgiXFxcXCIpOworICAgICAgICAgICAgYWZ0ZXJFc2NhcGUgPSBmYWxzZTsKKyAg
ICAgICAgfSBlbHNlIGlmIChjaCA9PSAnXCcnKSB7CisgICAgICAgICAgICBxdW90ZWRTdHJpbmcu
YXBwZW5kKCJcXCciKTsKKyAgICAgICAgICAgIGFmdGVyRXNjYXBlID0gZmFsc2U7CisgICAgICAg
IH0gZWxzZSBpZiAoY2ggPCAweDIwIHx8IGNoID09IDB4N0YpIHsKKyAgICAgICAgICAgIHF1b3Rl
ZFN0cmluZy5hcHBlbmQoU3RyaW5nOjpmb3JtYXQoIlxcJXgiLCBzdGF0aWNfY2FzdDxpbnQ+KGNo
KSkpOworICAgICAgICAgICAgYWZ0ZXJFc2NhcGUgPSB0cnVlOworICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICAgLy8gU3BhY2UgY2hhcmFjZXRlciBtYXkgYmUgcmVxdWlyZWQgdG8gc2VwYXJh
dGUgYmFja3NsYXNoLWVzY2FwZSBzZXF1ZW5jZSBhbmQgbm9ybWFsIGNoYXJhY3RlcnMuCisgICAg
ICAgICAgICBpZiAoYWZ0ZXJFc2NhcGUgJiYgKGlzQVNDSUlIZXhEaWdpdChjaCkgfHwgY2ggPT0g
JyAnKSkKKyAgICAgICAgICAgICAgICBxdW90ZWRTdHJpbmcuYXBwZW5kKCcgJyk7CisgICAgICAg
ICAgICBxdW90ZWRTdHJpbmcuYXBwZW5kKGNoKTsKKyAgICAgICAgICAgIGFmdGVyRXNjYXBlID0g
ZmFsc2U7CisgICAgICAgIH0KKyAgICB9CisgICAgcXVvdGVkU3RyaW5nLmFwcGVuZCgiJyIpOwor
ICAgIHJldHVybiBxdW90ZWRTdHJpbmc7CiB9CiAKLXN0YXRpYyBTdHJpbmcgcXVvdGVTdHJpbmdJ
Zk5lZWRlZChjb25zdCBTdHJpbmcmIHN0cmluZykKK1N0cmluZyBxdW90ZUNTU1N0cmluZ0lmTmVl
ZGVkKGNvbnN0IFN0cmluZyYgc3RyaW5nKQogewotICAgIHJldHVybiBpc0NTU1Rva2VuaXplcklk
ZW50aWZpZXIoc3RyaW5nKSA/IHN0cmluZyA6IHF1b3RlU3RyaW5nKHN0cmluZyk7CisgICAgcmV0
dXJuIGlzQ1NTVG9rZW5pemVySWRlbnRpZmllcihzdHJpbmcpID8gc3RyaW5nIDogcXVvdGVDU1NT
dHJpbmcoc3RyaW5nKTsKIH0KIAotc3RhdGljIFN0cmluZyBxdW90ZVVSTElmTmVlZGVkKGNvbnN0
IFN0cmluZyYgc3RyaW5nKQorU3RyaW5nIHF1b3RlQ1NTVVJMSWZOZWVkZWQoY29uc3QgU3RyaW5n
JiBzdHJpbmcpCiB7Ci0gICAgcmV0dXJuIGlzQ1NTVG9rZW5pemVyVVJMKHN0cmluZykgPyBzdHJp
bmcgOiBxdW90ZVN0cmluZyhzdHJpbmcpOworICAgIHJldHVybiBpc0NTU1Rva2VuaXplclVSTChz
dHJpbmcpID8gc3RyaW5nIDogcXVvdGVDU1NTdHJpbmcoc3RyaW5nKTsKIH0KIAogQ1NTUHJpbWl0
aXZlVmFsdWU6OkNTU1ByaW1pdGl2ZVZhbHVlKCkKQEAgLTc1NSwxMCArNzczLDEwIEBAIFN0cmlu
ZyBDU1NQcmltaXRpdmVWYWx1ZTo6Y3NzVGV4dCgpIGNvbnN0CiAgICAgICAgICAgICAvLyBGSVhN
RQogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ1NTX1NUUklORzoKLSAgICAgICAg
ICAgIHRleHQgPSBxdW90ZVN0cmluZ0lmTmVlZGVkKG1fdmFsdWUuc3RyaW5nKTsKKyAgICAgICAg
ICAgIHRleHQgPSBxdW90ZUNTU1N0cmluZ0lmTmVlZGVkKG1fdmFsdWUuc3RyaW5nKTsKICAgICAg
ICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENTU19VUkk6Ci0gICAgICAgICAgICB0ZXh0ID0g
InVybCgiICsgcXVvdGVVUkxJZk5lZWRlZChtX3ZhbHVlLnN0cmluZykgKyAiKSI7CisgICAgICAg
ICAgICB0ZXh0ID0gInVybCgiICsgcXVvdGVDU1NVUkxJZk5lZWRlZChtX3ZhbHVlLnN0cmluZykg
KyAiKSI7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBDU1NfSURFTlQ6CiAgICAg
ICAgICAgICB0ZXh0ID0gdmFsdWVPclByb3BlcnR5TmFtZShtX3ZhbHVlLmlkZW50KTsKQEAgLTg4
Myw3ICs5MDEsNyBAQCBTdHJpbmcgQ1NTUHJpbWl0aXZlVmFsdWU6OmNzc1RleHQoKSBjb25zdAog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBDU1NfUEFSU0VSX0lE
RU5USUZJRVI6Ci0gICAgICAgICAgICB0ZXh0ID0gcXVvdGVTdHJpbmdJZk5lZWRlZChtX3ZhbHVl
LnN0cmluZyk7CisgICAgICAgICAgICB0ZXh0ID0gcXVvdGVDU1NTdHJpbmdJZk5lZWRlZChtX3Zh
bHVlLnN0cmluZyk7CiAgICAgICAgICAgICBicmVhazsKICAgICB9CiAgICAgcmV0dXJuIHRleHQ7
CmRpZmYgLS1naXQgYS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5oIGIvV2ViQ29yZS9j
c3MvQ1NTUHJpbWl0aXZlVmFsdWUuaAppbmRleCBkNDE3NjE5Li4xNGI1MWJkIDEwMDY0NAotLS0g
YS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5oCisrKyBiL1dlYkNvcmUvY3NzL0NTU1By
aW1pdGl2ZVZhbHVlLmgKQEAgLTIxMyw2ICsyMTMsMTAgQEAgcHJpdmF0ZToKICAgICB9IG1fdmFs
dWU7CiB9OwogCitTdHJpbmcgcXVvdGVDU1NTdHJpbmcoY29uc3QgU3RyaW5nJik7CitTdHJpbmcg
cXVvdGVDU1NTdHJpbmdJZk5lZWRlZChjb25zdCBTdHJpbmcmKTsKK1N0cmluZyBxdW90ZUNTU1VS
TElmTmVlZGVkKGNvbnN0IFN0cmluZyYpOworCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNl
bmRpZiAvLyBDU1NQcmltaXRpdmVWYWx1ZV9oCmRpZmYgLS1naXQgYS9XZWJDb3JlL2Nzcy9Gb250
RmFtaWx5VmFsdWUuY3BwIGIvV2ViQ29yZS9jc3MvRm9udEZhbWlseVZhbHVlLmNwcAppbmRleCA5
MGE4YzlkLi41N2QyMTcxIDEwMDY0NAotLS0gYS9XZWJDb3JlL2Nzcy9Gb250RmFtaWx5VmFsdWUu
Y3BwCisrKyBiL1dlYkNvcmUvY3NzL0ZvbnRGYW1pbHlWYWx1ZS5jcHAKQEAgLTIxLDQ0ICsyMSw5
IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiRm9udEZhbWlseVZhbHVlLmgiCiAK
LW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotLy8gRklYTUU6IFRoaXMgYXBwZWFycyBpZGVudGljYWwg
dG8gaXNDU1NUb2tlbml6ZXJJZGVudGlmaWVyIGZyb20gQ1NTUHJpbWl0aXZlVmFsdWUuY3BwLCB3
ZSBzaG91bGQgdXNlIGEgc2luZ2xlIGZ1bmN0aW9uLgotc3RhdGljIGJvb2wgaXNWYWxpZENTU0lk
ZW50aWZpZXIoY29uc3QgU3RyaW5nJiBzdHJpbmcpCi17Ci0gICAgdW5zaWduZWQgbGVuZ3RoID0g
c3RyaW5nLmxlbmd0aCgpOwotICAgIGlmICghbGVuZ3RoKQotICAgICAgICByZXR1cm4gZmFsc2U7
Ci0KLSAgICBjb25zdCBVQ2hhciogY2hhcmFjdGVycyA9IHN0cmluZy5jaGFyYWN0ZXJzKCk7Ci0g
ICAgVUNoYXIgYyA9IGNoYXJhY3RlcnNbMF07Ci0gICAgaWYgKCEoYyA9PSAnXycgfHwgKGMgPj0g
J2EnICYmIGMgPD0gJ3onKSB8fCAoYyA+PSAnQScgJiYgYyA8PSAnWicpIHx8IGMgPT0gJy0nIHx8
IGMgPj0gMHg4MCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGZvciAodW5zaWduZWQg
aSA9IDE7IGkgPCBsZW5ndGg7ICsraSkgewotICAgICAgICBjID0gY2hhcmFjdGVyc1tpXTsKLSAg
ICAgICAgaWYgKCEoYyA9PSAnXycgfHwgKGMgPj0gJ2EnICYmIGMgPD0gJ3onKSB8fCAoYyA+PSAn
QScgJiYgYyA8PSAnWicpIHx8IChjID49ICcwJyAmJiBjIDw9ICc5JykgfHwgYyA9PSAnLScgfHwg
YyA+PSAweDgwKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9CisjaW5jbHVkZSAi
Q1NTUHJpbWl0aXZlVmFsdWUuaCIKIAotICAgIHJldHVybiB0cnVlOwotfQotCi0vLyBRdW90ZXMg
dGhlIHN0cmluZyBpZiBpdCBuZWVkcyBxdW90aW5nLgotLy8gV2UgdXNlIHNpbmdsZSBxdW90ZXMg
YmVjYXVzZSBzZXJpYWxpemF0aW9uIGNvZGUgdXNlcyBkb3VibGUgcXVvdGVzLCBhbmQgaXQncyBu
aWNlIHRvCi0vLyBhdm9pZCBoYXZpbmcgdG8gdHVybiBhbGwgdGhlIHF1b3RlIG1hcmtzIGludG8g
JnF1b3Q7IGFzIHdlIHdvdWxkIGhhdmUgdG8uCi1zdGF0aWMgU3RyaW5nIHF1b3RlU3RyaW5nSWZO
ZWVkZWQoY29uc3QgU3RyaW5nJiBzdHJpbmcpCi17Ci0gICAgaWYgKGlzVmFsaWRDU1NJZGVudGlm
aWVyKHN0cmluZykpCi0gICAgICAgIHJldHVybiBzdHJpbmc7Ci0KLSAgICAvLyBGSVhNRTogQWxz
byBuZWVkIHRvIHRyYW5zZm9ybSBjb250cm9sIGNoYXJhY3RlcnMgKDAwLTFGKSBpbnRvIFwgc2Vx
dWVuY2VzLgotICAgIC8vIEZJWE1FOiBUaGlzIGlzIGluZWZmaWNpZW50IC0tIHNob3VsZCB1c2Ug
YSBWZWN0b3I8VUNoYXI+IGluc3RlYWQuCi0gICAgU3RyaW5nIHF1b3RlZFN0cmluZyA9IHN0cmlu
ZzsKLSAgICBxdW90ZWRTdHJpbmcucmVwbGFjZSgnXFwnLCAiXFxcXCIpOwotICAgIHF1b3RlZFN0
cmluZy5yZXBsYWNlKCdcJycsICJcXCciKTsKLSAgICByZXR1cm4gIiciICsgcXVvdGVkU3RyaW5n
ICsgIiciOwotfQorbmFtZXNwYWNlIFdlYkNvcmUgewogCiBGb250RmFtaWx5VmFsdWU6OkZvbnRG
YW1pbHlWYWx1ZShjb25zdCBTdHJpbmcmIGZhbWlseU5hbWUpCiAgICAgOiBDU1NQcmltaXRpdmVW
YWx1ZShTdHJpbmcoKSwgQ1NTX1NUUklORykKQEAgLTEwMSw3ICs2Niw3IEBAIHZvaWQgRm9udEZh
bWlseVZhbHVlOjphcHBlbmRTcGFjZVNlcGFyYXRlZChjb25zdCBVQ2hhciogY2hhcmFjdGVycywg
dW5zaWduZWQgbGVuCiAKIFN0cmluZyBGb250RmFtaWx5VmFsdWU6OmNzc1RleHQoKSBjb25zdAog
ewotICAgIHJldHVybiBxdW90ZVN0cmluZ0lmTmVlZGVkKG1fZmFtaWx5TmFtZSk7CisgICAgcmV0
dXJuIHF1b3RlQ1NTU3RyaW5nSWZOZWVkZWQobV9mYW1pbHlOYW1lKTsKIH0KIAogfQ==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>39052</attachid>
            <date>2009-09-04 04:51:18 -0700</date>
            <delta_ts>2010-04-01 21:48:53 -0700</delta_ts>
            <desc>Escape control characters in CSS string value when it is serialized.</desc>
            <filename>bug-28938-20090904205116.patch</filename>
            <type>text/plain</type>
            <size>12358</size>
            <attacher name="Yuta Kitamura">yutak</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCA2MDlhYzVmLi45MGM3NWI3IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjYgQEAKKzIwMDktMDkt
MDQgIFl1dGEgS2l0YW11cmEgIDx5dXRha0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRXNjYXBlIGNvbnRyb2wgY2hhcmFjdGVy
cyBpbiBDU1Mgc3RyaW5nIHZhbHVlIHdoZW4gaXQgaXMgc2VyaWFsaXplZC4KKyAgICAgICAgCisg
ICAgICAgIFdoZW4gV2ViS2l0IHNlcmlhbGl6ZXNhIENTUyBzdHJpbmcgdmFsdWUgdGhhdCBjb250
YWlucyBiaW5hcnkgY2hhcmFjdGVycworICAgICAgICAoJ1wwXDFcMicgZm9yIGV4YW1wbGUpLCBp
dCBkaWQgbm90IGVzY2FwZSB0aGVzZSBjaGFyYWN0ZXJzLiBBcyBhIHJlc3VsdCwKKyAgICAgICAg
dXNlcnMgZ290IChpbnZpc2libGUpIGNvbnRyb2wgY2hhcmFjdGVycyB0aHJvdWdoIHNjcmlwdHMs
IHdoaWNoIHdhcyBub3QgZ29vZC4KKyAgICAgICAgVGhpcyBjaGFuZ2UgZml4ZXMgdGhpcyBpc3N1
ZS4KKyAgICAgICAgCisgICAgICAgIEFzIGEgc2lkZSBlZmZlY3QsIHR3byBzZXBhcmF0ZSBjb2Rl
cyBmb3IgZXNjYXBpbmcgQ1NTIHN0cmluZ3MgYXJlIG1lcmdlZCwgYW5kCisgICAgICAgIGJlY29t
ZSBhIHB1YmxpYyBmdW5jdGlvbiAoZXNjYXBlQ1NTU3RyaW5nKS4KKworICAgICAgICBDU1Mgc3Ry
aW5nIHZhbHVlIGlzIG5vdCBjb3JyZWN0bHkgc2VyaWFsaXplZCB3aGVuIGl0IGNvbnRhaW5zIGJp
bmFyeSBjaGFyYWN0ZXJzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0yODkzOAorCisgICAgICAgICogZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUu
anM6CisgICAgICAgIChzaG91bGRCZUVxdWFsVG9TdHJpbmcpOgorICAgICAgICAqIGZhc3QvanMv
cmVzb3VyY2VzL3N0cmluZy1xdW90ZS1iaW5hcnkuanM6IEFkZGVkLgorICAgICAgICAqIGZhc3Qv
anMvc3RyaW5nLXF1b3RlLWJpbmFyeS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIGZh
c3QvanMvc3RyaW5nLXF1b3RlLWJpbmFyeS5odG1sOiBBZGRlZC4KKwogMjAwOS0wOS0wNCAgS2Vu
dCBUYW11cmEgIDx0a2VudEBjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRXJp
YyBTZWlkZWwuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2pzL3Jlc291cmNlcy9qcy10
ZXN0LXByZS5qcyBiL0xheW91dFRlc3RzL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpz
CmluZGV4IDFhNjczYjguLjdiNTVjZDAgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvanMv
cmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvanMvcmVzb3Vy
Y2VzL2pzLXRlc3QtcHJlLmpzCkBAIC0xMDIsNyArMTAyLDcgQEAgZnVuY3Rpb24gc2hvdWxkQmVO
dWxsKF9hKSB7IHNob3VsZEJlKF9hLCAibnVsbCIpOyB9CiAKIGZ1bmN0aW9uIHNob3VsZEJlRXF1
YWxUb1N0cmluZyhhLCBiKQogewotICB2YXIgdW5ldmFsZWRTdHJpbmcgPSAnIicgKyBiLnJlcGxh
Y2UoLyIvZywgIlwiIikgKyAnIic7CisgIHZhciB1bmV2YWxlZFN0cmluZyA9ICciJyArIGIucmVw
bGFjZSgvXFwvZywgIlxcXFwiKS5yZXBsYWNlKC8iL2csICJcIiIpICsgJyInOwogICBzaG91bGRC
ZShhLCB1bmV2YWxlZFN0cmluZyk7CiB9CiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3Qv
anMvcmVzb3VyY2VzL3N0cmluZy1xdW90ZS1iaW5hcnkuanMgYi9MYXlvdXRUZXN0cy9mYXN0L2pz
L3Jlc291cmNlcy9zdHJpbmctcXVvdGUtYmluYXJ5LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0Cmlu
ZGV4IDAwMDAwMDAuLjY2MDcxZWMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0
L2pzL3Jlc291cmNlcy9zdHJpbmctcXVvdGUtYmluYXJ5LmpzCkBAIC0wLDAgKzEsMzIgQEAKK2Rl
c2NyaXB0aW9uKAorJ1RoaXMgdGVzdCBjaGVja3MgaWYgQ1NTIHN0cmluZyB2YWx1ZXMgYXJlIGNv
cnJlY3RseSBzZXJpYWxpemVkIHdoZW4gdGhleSBjb250YWluIGJpbmFyeSBjaGFyYWN0ZXJzLicK
Kyk7CisKK3ZhciBpbnB1dHMgPSBbIidcXDBcXDFcXDJcXDNcXDRcXDVcXDZcXDdcXDhcXDlcXGFc
XGJcXGNcXGRcXGVcXGYnIiwKKyAgICAgICAgICAgICAgIidcXDEwXFwxMVxcMTJcXDEzXFwxNFxc
MTVcXDE2XFwxN1xcMThcXDE5XFwxYVxcMWJcXDFjXFwxZFxcMWVcXDFmXFw3ZiciLAorICAgICAg
ICAgICAgICAiJ1xcQVxcQlxcQ1xcRFxcRVxcRlxcMUFcXDFCXFwxQ1xcMURcXDFFXFwxRlxcN0Yn
IiwKKyAgICAgICAgICAgICAgIidcXDAgXFwxIFxcMiAnIiwKKyAgICAgICAgICAgICAgIidcXDAg
IFxcMSAgXFwyICAnIiwKKyAgICAgICAgICAgICAgIidcXDAgICBcXDEgICBcXDIgICAnIiwKKyAg
ICAgICAgICAgICAgIidcXDAwMDAwZlxcMDAwMDBnJyIsCisgICAgICAgICAgICAgICInXFwwIDBc
XDAgMVxcMCAyXFwwIDNcXDAgNFxcMCA1XFwwIDZcXDAgN1xcMCA4XFwwIDknIiwKKyAgICAgICAg
ICAgICAgIidcXDAgQVxcMCBCXFwwIENcXDAgRFxcMCBFXFwwIEZcXDAgRyciLAorICAgICAgICAg
ICAgICAiJ1xcMCBhXFwwIGJcXDAgY1xcMCBkXFwwIGVcXDAgZlxcMCBnJyJdOwordmFyIGV4cGVj
dGVkID0gWyInXFwwXFwxXFwyXFwzXFw0XFw1XFw2XFw3XFw4XFw5XFxhXFxiXFxjXFxkXFxlXFxm
JyIsCisgICAgICAgICAgICAgICAgIidcXDEwXFwxMVxcMTJcXDEzXFwxNFxcMTVcXDE2XFwxN1xc
MThcXDE5XFwxYVxcMWJcXDFjXFwxZFxcMWVcXDFmXFw3ZiciLAorICAgICAgICAgICAgICAgICIn
XFxhXFxiXFxjXFxkXFxlXFxmXFwxYVxcMWJcXDFjXFwxZFxcMWVcXDFmXFw3ZiciLAorICAgICAg
ICAgICAgICAgICInXFwwXFwxXFwyJyIsICAgICAgICAgIC8vIE5vIHNwYWNlIGFmdGVyIGVhY2gg
Y29udHJvbCBjaGFyYWN0ZXIuCisgICAgICAgICAgICAgICAgIidcXDAgIFxcMSAgXFwyICAnIiwg
ICAgLy8gT25lIHNwYWNlIGRlbGltaXRlciAodGhhdCB3aWxsIGJlIGlnbm9yZWQgYnkgdGhlIENT
UyBwYXJzZXIpLCBwbHVzIG9uZSBhY3R1YWwgc3BhY2UuCisgICAgICAgICAgICAgICAgIidcXDAg
ICBcXDEgICBcXDIgICAnIiwgLy8gT25lIHNwYWNlIGRlbGltaXRlciwgcGx1cyB0d28gYWN0dWFs
IHNwYWNlcy4KKyAgICAgICAgICAgICAgICAiJ1xcZlxcMGcnIiwKKyAgICAgICAgICAgICAgICAi
J1xcMCAwXFwwIDFcXDAgMlxcMCAzXFwwIDRcXDAgNVxcMCA2XFwwIDdcXDAgOFxcMCA5JyIsIC8v
IE5lZWQgYSBzcGFjZSBiZWZvcmUgWzAtOUEtRmEtZl0sIGJ1dCBub3QgYmVmb3JlIFtHZ10uCisg
ICAgICAgICAgICAgICAgIidcXDAgQVxcMCBCXFwwIENcXDAgRFxcMCBFXFwwIEZcXDBHJyIsCisg
ICAgICAgICAgICAgICAgIidcXDAgYVxcMCBiXFwwIGNcXDAgZFxcMCBlXFwwIGZcXDBnJyJdOwor
Cit2YXIgdGVzdCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCd0ZXN0Jyk7Citmb3IgKHZhciBp
ID0gMDsgaSA8IGlucHV0cy5sZW5ndGg7ICsraSkgeworICAgIHRlc3Quc3R5bGUuZm9udEZhbWls
eSA9IGlucHV0c1tpXTsKKyAgICBzaG91bGRCZUVxdWFsVG9TdHJpbmcoJ3Rlc3Quc3R5bGUuZm9u
dEZhbWlseScsIGV4cGVjdGVkW2ldKTsKK30KKworc3VjY2Vzc2Z1bGx5UGFyc2VkID0gdHJ1ZTsK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvanMvc3RyaW5nLXF1b3RlLWJpbmFyeS1leHBl
Y3RlZC50eHQgYi9MYXlvdXRUZXN0cy9mYXN0L2pzL3N0cmluZy1xdW90ZS1iaW5hcnktZXhwZWN0
ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZhM2VlNzYKLS0tIC9k
ZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2pzL3N0cmluZy1xdW90ZS1iaW5hcnktZXhw
ZWN0ZWQudHh0CkBAIC0wLDAgKzEsMTkgQEAKK1RoaXMgdGVzdCBjaGVja3MgaWYgQ1NTIHN0cmlu
ZyB2YWx1ZXMgYXJlIGNvcnJlY3RseSBzZXJpYWxpemVkIHdoZW4gdGhleSBjb250YWluIGJpbmFy
eSBjaGFyYWN0ZXJzLgorCitPbiBzdWNjZXNzLCB5b3Ugd2lsbCBzZWUgYSBzZXJpZXMgb2YgIlBB
U1MiIG1lc3NhZ2VzLCBmb2xsb3dlZCBieSAiVEVTVCBDT01QTEVURSIuCisKKworUEFTUyB0ZXN0
LnN0eWxlLmZvbnRGYW1pbHkgaXMgIidcXDBcXDFcXDJcXDNcXDRcXDVcXDZcXDdcXDhcXDlcXGFc
XGJcXGNcXGRcXGVcXGYnIgorUEFTUyB0ZXN0LnN0eWxlLmZvbnRGYW1pbHkgaXMgIidcXDEwXFwx
MVxcMTJcXDEzXFwxNFxcMTVcXDE2XFwxN1xcMThcXDE5XFwxYVxcMWJcXDFjXFwxZFxcMWVcXDFm
XFw3ZiciCitQQVNTIHRlc3Quc3R5bGUuZm9udEZhbWlseSBpcyAiJ1xcYVxcYlxcY1xcZFxcZVxc
ZlxcMWFcXDFiXFwxY1xcMWRcXDFlXFwxZlxcN2YnIgorUEFTUyB0ZXN0LnN0eWxlLmZvbnRGYW1p
bHkgaXMgIidcXDBcXDFcXDInIgorUEFTUyB0ZXN0LnN0eWxlLmZvbnRGYW1pbHkgaXMgIidcXDAg
IFxcMSAgXFwyICAnIgorUEFTUyB0ZXN0LnN0eWxlLmZvbnRGYW1pbHkgaXMgIidcXDAgICBcXDEg
ICBcXDIgICAnIgorUEFTUyB0ZXN0LnN0eWxlLmZvbnRGYW1pbHkgaXMgIidcXGZcXDBnJyIKK1BB
U1MgdGVzdC5zdHlsZS5mb250RmFtaWx5IGlzICInXFwwIDBcXDAgMVxcMCAyXFwwIDNcXDAgNFxc
MCA1XFwwIDZcXDAgN1xcMCA4XFwwIDknIgorUEFTUyB0ZXN0LnN0eWxlLmZvbnRGYW1pbHkgaXMg
IidcXDAgQVxcMCBCXFwwIENcXDAgRFxcMCBFXFwwIEZcXDBHJyIKK1BBU1MgdGVzdC5zdHlsZS5m
b250RmFtaWx5IGlzICInXFwwIGFcXDAgYlxcMCBjXFwwIGRcXDAgZVxcMCBmXFwwZyciCitQQVNT
IHN1Y2Nlc3NmdWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvZmFzdC9qcy9zdHJpbmctcXVvdGUtYmluYXJ5Lmh0bWwgYi9MYXlvdXRU
ZXN0cy9mYXN0L2pzL3N0cmluZy1xdW90ZS1iaW5hcnkuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwLi40OTdjMGQzCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
ZmFzdC9qcy9zdHJpbmctcXVvdGUtYmluYXJ5Lmh0bWwKQEAgLTAsMCArMSwxNCBAQAorPCFET0NU
WVBFIEhUTUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4K
KzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0icmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3Nz
Ij4KKzxzY3JpcHQgc3JjPSJyZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0PgorPC9o
ZWFkPgorPGJvZHk+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxwcmUgaWQ9ImNvbnNvbGUi
PjwvcHJlPgorPGRpdiBpZD0idGVzdCI+PC9kaXY+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL3N0
cmluZy1xdW90ZS1iaW5hcnkuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9InJlc291cmNlcy9q
cy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCBkNjhhYTMxLi42NGVi
OTRkIDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3JlL0NoYW5nZUxv
ZwpAQCAtMSwzICsxLDMxIEBACisyMDA5LTA5LTA0ICBZdXRhIEtpdGFtdXJhICA8eXV0YWtAY2hy
b21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAg
ICAgIEVzY2FwZSBjb250cm9sIGNoYXJhY3RlcnMgaW4gQ1NTIHN0cmluZyB2YWx1ZSB3aGVuIGl0
IGlzIHNlcmlhbGl6ZWQuCisgICAgICAgIAorICAgICAgICBXaGVuIFdlYktpdCBzZXJpYWxpemVz
YSBDU1Mgc3RyaW5nIHZhbHVlIHRoYXQgY29udGFpbnMgYmluYXJ5IGNoYXJhY3RlcnMKKyAgICAg
ICAgKCdcMFwxXDInIGZvciBleGFtcGxlKSwgaXQgZGlkIG5vdCBlc2NhcGUgdGhlc2UgY2hhcmFj
dGVycy4gQXMgYSByZXN1bHQsCisgICAgICAgIHVzZXJzIGdvdCAoaW52aXNpYmxlKSBjb250cm9s
IGNoYXJhY3RlcnMgdGhyb3VnaCBzY3JpcHRzLCB3aGljaCB3YXMgbm90IGdvb2QuCisgICAgICAg
IFRoaXMgY2hhbmdlIGZpeGVzIHRoaXMgaXNzdWUuCisgICAgICAgIAorICAgICAgICBBcyBhIHNp
ZGUgZWZmZWN0LCB0d28gc2VwYXJhdGUgY29kZXMgZm9yIGVzY2FwaW5nIENTUyBzdHJpbmdzIGFy
ZSBtZXJnZWQsIGFuZAorICAgICAgICBiZWNvbWUgYSBwdWJsaWMgZnVuY3Rpb24gKGVzY2FwZUNT
U1N0cmluZykuCisKKyAgICAgICAgQ1NTIHN0cmluZyB2YWx1ZSBpcyBub3QgY29ycmVjdGx5IHNl
cmlhbGl6ZWQgd2hlbiBpdCBjb250YWlucyBiaW5hcnkgY2hhcmFjdGVycworICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mjg5MzgKKworICAgICAgICBUZXN0
OiBmYXN0L2pzL3N0cmluZy1xdW90ZS1iaW5hcnkuaHRtbAorCisgICAgICAgICogY3NzL0NTU1By
aW1pdGl2ZVZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnF1b3RlQ1NTU3RyaW5nKToKKyAg
ICAgICAgKFdlYkNvcmU6OnF1b3RlQ1NTU3RyaW5nSWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29y
ZTo6cXVvdGVDU1NVUkxJZk5lZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NQcmltaXRpdmVW
YWx1ZTo6Y3NzVGV4dCk6CisgICAgICAgICogY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmg6CisgICAg
ICAgICogY3NzL0ZvbnRGYW1pbHlWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250RmFt
aWx5VmFsdWU6OmNzc1RleHQpOgorCiAyMDA5LTA5LTA0ICBCZW4gTXVyZG9jaCAgPGJlbm1AZ29v
Z2xlLmNvbT4KIAogICAgICAgICBSZXZpZXdlZCBieSBFcmljIFNlaWRlbC4KZGlmZiAtLWdpdCBh
L1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmNwcCBiL1dlYkNvcmUvY3NzL0NTU1ByaW1p
dGl2ZVZhbHVlLmNwcAppbmRleCAxZjJjOWNhLi4zOTJjOWM0IDEwMDY0NAotLS0gYS9XZWJDb3Jl
L2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5jcHAKKysrIGIvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZl
VmFsdWUuY3BwCkBAIC0xNzYsMjMgKzE3Niw0MSBAQCBzdGF0aWMgYm9vbCBpc0NTU1Rva2VuaXpl
clVSTChjb25zdCBTdHJpbmcmIHN0cmluZykKIH0KIAogLy8gV2UgdXNlIHNpbmdsZSBxdW90ZXMg
Zm9yIG5vdyBiZWNhdXNlIG1hcmt1cC5jcHAgdXNlcyBkb3VibGUgcXVvdGVzLgotc3RhdGljIFN0
cmluZyBxdW90ZVN0cmluZyhjb25zdCBTdHJpbmcmIHN0cmluZykKLXsKLSAgICAvLyBGSVhNRTog
QWxzbyBuZWVkIHRvIGVzY2FwZSBjaGFyYWN0ZXJzIGxpa2UgJ1xuJy4KLSAgICBTdHJpbmcgcyA9
IHN0cmluZzsKLSAgICBzLnJlcGxhY2UoJ1xcJywgIlxcXFwiKTsKLSAgICBzLnJlcGxhY2UoJ1wn
JywgIlxcJyIpOwotICAgIHJldHVybiAiJyIgKyBzICsgIiciOworU3RyaW5nIHF1b3RlQ1NTU3Ry
aW5nKGNvbnN0IFN0cmluZyYgc3RyaW5nKQoreworICAgIGJvb2wgYWZ0ZXJFc2NhcGUgPSBmYWxz
ZTsKKyAgICBTdHJpbmcgcXVvdGVkU3RyaW5nKCInIik7CisgICAgZm9yICh1bnNpZ25lZCBpID0g
MDsgaSA8IHN0cmluZy5sZW5ndGgoKTsgKytpKSB7CisgICAgICAgIFVDaGFyIGNoID0gc3RyaW5n
W2ldOworICAgICAgICBpZiAoY2ggPT0gJ1xcJykgeworICAgICAgICAgICAgcXVvdGVkU3RyaW5n
LmFwcGVuZCgiXFxcXCIpOworICAgICAgICAgICAgYWZ0ZXJFc2NhcGUgPSBmYWxzZTsKKyAgICAg
ICAgfSBlbHNlIGlmIChjaCA9PSAnXCcnKSB7CisgICAgICAgICAgICBxdW90ZWRTdHJpbmcuYXBw
ZW5kKCJcXCciKTsKKyAgICAgICAgICAgIGFmdGVyRXNjYXBlID0gZmFsc2U7CisgICAgICAgIH0g
ZWxzZSBpZiAoY2ggPCAweDIwIHx8IGNoID09IDB4N0YpIHsKKyAgICAgICAgICAgIHF1b3RlZFN0
cmluZy5hcHBlbmQoU3RyaW5nOjpmb3JtYXQoIlxcJXgiLCBzdGF0aWNfY2FzdDxpbnQ+KGNoKSkp
OworICAgICAgICAgICAgYWZ0ZXJFc2NhcGUgPSB0cnVlOworICAgICAgICB9IGVsc2UgeworICAg
ICAgICAgICAgLy8gU3BhY2UgY2hhcmFjZXRlciBtYXkgYmUgcmVxdWlyZWQgdG8gc2VwYXJhdGUg
YmFja3NsYXNoLWVzY2FwZSBzZXF1ZW5jZSBhbmQgbm9ybWFsIGNoYXJhY3RlcnMuCisgICAgICAg
ICAgICBpZiAoYWZ0ZXJFc2NhcGUgJiYgKGlzQVNDSUlIZXhEaWdpdChjaCkgfHwgY2ggPT0gJyAn
KSkKKyAgICAgICAgICAgICAgICBxdW90ZWRTdHJpbmcuYXBwZW5kKCcgJyk7CisgICAgICAgICAg
ICBxdW90ZWRTdHJpbmcuYXBwZW5kKGNoKTsKKyAgICAgICAgICAgIGFmdGVyRXNjYXBlID0gZmFs
c2U7CisgICAgICAgIH0KKyAgICB9CisgICAgcXVvdGVkU3RyaW5nLmFwcGVuZCgiJyIpOworICAg
IHJldHVybiBxdW90ZWRTdHJpbmc7CiB9CiAKLXN0YXRpYyBTdHJpbmcgcXVvdGVTdHJpbmdJZk5l
ZWRlZChjb25zdCBTdHJpbmcmIHN0cmluZykKK1N0cmluZyBxdW90ZUNTU1N0cmluZ0lmTmVlZGVk
KGNvbnN0IFN0cmluZyYgc3RyaW5nKQogewotICAgIHJldHVybiBpc0NTU1Rva2VuaXplcklkZW50
aWZpZXIoc3RyaW5nKSA/IHN0cmluZyA6IHF1b3RlU3RyaW5nKHN0cmluZyk7CisgICAgcmV0dXJu
IGlzQ1NTVG9rZW5pemVySWRlbnRpZmllcihzdHJpbmcpID8gc3RyaW5nIDogcXVvdGVDU1NTdHJp
bmcoc3RyaW5nKTsKIH0KIAotc3RhdGljIFN0cmluZyBxdW90ZVVSTElmTmVlZGVkKGNvbnN0IFN0
cmluZyYgc3RyaW5nKQorU3RyaW5nIHF1b3RlQ1NTVVJMSWZOZWVkZWQoY29uc3QgU3RyaW5nJiBz
dHJpbmcpCiB7Ci0gICAgcmV0dXJuIGlzQ1NTVG9rZW5pemVyVVJMKHN0cmluZykgPyBzdHJpbmcg
OiBxdW90ZVN0cmluZyhzdHJpbmcpOworICAgIHJldHVybiBpc0NTU1Rva2VuaXplclVSTChzdHJp
bmcpID8gc3RyaW5nIDogcXVvdGVDU1NTdHJpbmcoc3RyaW5nKTsKIH0KIAogQ1NTUHJpbWl0aXZl
VmFsdWU6OkNTU1ByaW1pdGl2ZVZhbHVlKCkKQEAgLTc1NSwxMCArNzczLDEwIEBAIFN0cmluZyBD
U1NQcmltaXRpdmVWYWx1ZTo6Y3NzVGV4dCgpIGNvbnN0CiAgICAgICAgICAgICAvLyBGSVhNRQog
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ1NTX1NUUklORzoKLSAgICAgICAgICAg
IHRleHQgPSBxdW90ZVN0cmluZ0lmTmVlZGVkKG1fdmFsdWUuc3RyaW5nKTsKKyAgICAgICAgICAg
IHRleHQgPSBxdW90ZUNTU1N0cmluZ0lmTmVlZGVkKG1fdmFsdWUuc3RyaW5nKTsKICAgICAgICAg
ICAgIGJyZWFrOwogICAgICAgICBjYXNlIENTU19VUkk6Ci0gICAgICAgICAgICB0ZXh0ID0gInVy
bCgiICsgcXVvdGVVUkxJZk5lZWRlZChtX3ZhbHVlLnN0cmluZykgKyAiKSI7CisgICAgICAgICAg
ICB0ZXh0ID0gInVybCgiICsgcXVvdGVDU1NVUkxJZk5lZWRlZChtX3ZhbHVlLnN0cmluZykgKyAi
KSI7CiAgICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBDU1NfSURFTlQ6CiAgICAgICAg
ICAgICB0ZXh0ID0gdmFsdWVPclByb3BlcnR5TmFtZShtX3ZhbHVlLmlkZW50KTsKQEAgLTg4Myw3
ICs5MDEsNyBAQCBTdHJpbmcgQ1NTUHJpbWl0aXZlVmFsdWU6OmNzc1RleHQoKSBjb25zdAogICAg
ICAgICAgICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgY2FzZSBDU1NfUEFSU0VSX0lERU5U
SUZJRVI6Ci0gICAgICAgICAgICB0ZXh0ID0gcXVvdGVTdHJpbmdJZk5lZWRlZChtX3ZhbHVlLnN0
cmluZyk7CisgICAgICAgICAgICB0ZXh0ID0gcXVvdGVDU1NTdHJpbmdJZk5lZWRlZChtX3ZhbHVl
LnN0cmluZyk7CiAgICAgICAgICAgICBicmVhazsKICAgICB9CiAgICAgcmV0dXJuIHRleHQ7CmRp
ZmYgLS1naXQgYS9XZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5oIGIvV2ViQ29yZS9jc3Mv
Q1NTUHJpbWl0aXZlVmFsdWUuaAppbmRleCBkNDE3NjE5Li4xNGI1MWJkIDEwMDY0NAotLS0gYS9X
ZWJDb3JlL2Nzcy9DU1NQcmltaXRpdmVWYWx1ZS5oCisrKyBiL1dlYkNvcmUvY3NzL0NTU1ByaW1p
dGl2ZVZhbHVlLmgKQEAgLTIxMyw2ICsyMTMsMTAgQEAgcHJpdmF0ZToKICAgICB9IG1fdmFsdWU7
CiB9OwogCitTdHJpbmcgcXVvdGVDU1NTdHJpbmcoY29uc3QgU3RyaW5nJik7CitTdHJpbmcgcXVv
dGVDU1NTdHJpbmdJZk5lZWRlZChjb25zdCBTdHJpbmcmKTsKK1N0cmluZyBxdW90ZUNTU1VSTElm
TmVlZGVkKGNvbnN0IFN0cmluZyYpOworCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRp
ZiAvLyBDU1NQcmltaXRpdmVWYWx1ZV9oCmRpZmYgLS1naXQgYS9XZWJDb3JlL2Nzcy9Gb250RmFt
aWx5VmFsdWUuY3BwIGIvV2ViQ29yZS9jc3MvRm9udEZhbWlseVZhbHVlLmNwcAppbmRleCA5MGE4
YzlkLi41N2QyMTcxIDEwMDY0NAotLS0gYS9XZWJDb3JlL2Nzcy9Gb250RmFtaWx5VmFsdWUuY3Bw
CisrKyBiL1dlYkNvcmUvY3NzL0ZvbnRGYW1pbHlWYWx1ZS5jcHAKQEAgLTIxLDQ0ICsyMSw5IEBA
CiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiRm9udEZhbWlseVZhbHVlLmgiCiAKLW5h
bWVzcGFjZSBXZWJDb3JlIHsKLQotLy8gRklYTUU6IFRoaXMgYXBwZWFycyBpZGVudGljYWwgdG8g
aXNDU1NUb2tlbml6ZXJJZGVudGlmaWVyIGZyb20gQ1NTUHJpbWl0aXZlVmFsdWUuY3BwLCB3ZSBz
aG91bGQgdXNlIGEgc2luZ2xlIGZ1bmN0aW9uLgotc3RhdGljIGJvb2wgaXNWYWxpZENTU0lkZW50
aWZpZXIoY29uc3QgU3RyaW5nJiBzdHJpbmcpCi17Ci0gICAgdW5zaWduZWQgbGVuZ3RoID0gc3Ry
aW5nLmxlbmd0aCgpOwotICAgIGlmICghbGVuZ3RoKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0K
LSAgICBjb25zdCBVQ2hhciogY2hhcmFjdGVycyA9IHN0cmluZy5jaGFyYWN0ZXJzKCk7Ci0gICAg
VUNoYXIgYyA9IGNoYXJhY3RlcnNbMF07Ci0gICAgaWYgKCEoYyA9PSAnXycgfHwgKGMgPj0gJ2En
ICYmIGMgPD0gJ3onKSB8fCAoYyA+PSAnQScgJiYgYyA8PSAnWicpIHx8IGMgPT0gJy0nIHx8IGMg
Pj0gMHg4MCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGZvciAodW5zaWduZWQgaSA9
IDE7IGkgPCBsZW5ndGg7ICsraSkgewotICAgICAgICBjID0gY2hhcmFjdGVyc1tpXTsKLSAgICAg
ICAgaWYgKCEoYyA9PSAnXycgfHwgKGMgPj0gJ2EnICYmIGMgPD0gJ3onKSB8fCAoYyA+PSAnQScg
JiYgYyA8PSAnWicpIHx8IChjID49ICcwJyAmJiBjIDw9ICc5JykgfHwgYyA9PSAnLScgfHwgYyA+
PSAweDgwKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9CisjaW5jbHVkZSAiQ1NT
UHJpbWl0aXZlVmFsdWUuaCIKIAotICAgIHJldHVybiB0cnVlOwotfQotCi0vLyBRdW90ZXMgdGhl
IHN0cmluZyBpZiBpdCBuZWVkcyBxdW90aW5nLgotLy8gV2UgdXNlIHNpbmdsZSBxdW90ZXMgYmVj
YXVzZSBzZXJpYWxpemF0aW9uIGNvZGUgdXNlcyBkb3VibGUgcXVvdGVzLCBhbmQgaXQncyBuaWNl
IHRvCi0vLyBhdm9pZCBoYXZpbmcgdG8gdHVybiBhbGwgdGhlIHF1b3RlIG1hcmtzIGludG8gJnF1
b3Q7IGFzIHdlIHdvdWxkIGhhdmUgdG8uCi1zdGF0aWMgU3RyaW5nIHF1b3RlU3RyaW5nSWZOZWVk
ZWQoY29uc3QgU3RyaW5nJiBzdHJpbmcpCi17Ci0gICAgaWYgKGlzVmFsaWRDU1NJZGVudGlmaWVy
KHN0cmluZykpCi0gICAgICAgIHJldHVybiBzdHJpbmc7Ci0KLSAgICAvLyBGSVhNRTogQWxzbyBu
ZWVkIHRvIHRyYW5zZm9ybSBjb250cm9sIGNoYXJhY3RlcnMgKDAwLTFGKSBpbnRvIFwgc2VxdWVu
Y2VzLgotICAgIC8vIEZJWE1FOiBUaGlzIGlzIGluZWZmaWNpZW50IC0tIHNob3VsZCB1c2UgYSBW
ZWN0b3I8VUNoYXI+IGluc3RlYWQuCi0gICAgU3RyaW5nIHF1b3RlZFN0cmluZyA9IHN0cmluZzsK
LSAgICBxdW90ZWRTdHJpbmcucmVwbGFjZSgnXFwnLCAiXFxcXCIpOwotICAgIHF1b3RlZFN0cmlu
Zy5yZXBsYWNlKCdcJycsICJcXCciKTsKLSAgICByZXR1cm4gIiciICsgcXVvdGVkU3RyaW5nICsg
IiciOwotfQorbmFtZXNwYWNlIFdlYkNvcmUgewogCiBGb250RmFtaWx5VmFsdWU6OkZvbnRGYW1p
bHlWYWx1ZShjb25zdCBTdHJpbmcmIGZhbWlseU5hbWUpCiAgICAgOiBDU1NQcmltaXRpdmVWYWx1
ZShTdHJpbmcoKSwgQ1NTX1NUUklORykKQEAgLTEwMSw3ICs2Niw3IEBAIHZvaWQgRm9udEZhbWls
eVZhbHVlOjphcHBlbmRTcGFjZVNlcGFyYXRlZChjb25zdCBVQ2hhciogY2hhcmFjdGVycywgdW5z
aWduZWQgbGVuCiAKIFN0cmluZyBGb250RmFtaWx5VmFsdWU6OmNzc1RleHQoKSBjb25zdAogewot
ICAgIHJldHVybiBxdW90ZVN0cmluZ0lmTmVlZGVkKG1fZmFtaWx5TmFtZSk7CisgICAgcmV0dXJu
IHF1b3RlQ1NTU3RyaW5nSWZOZWVkZWQobV9mYW1pbHlOYW1lKTsKIH0KIAogfQ==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>52372</attachid>
            <date>2010-04-01 21:48:59 -0700</date>
            <delta_ts>2010-04-04 19:45:47 -0700</delta_ts>
            <desc>Patch v5.</desc>
            <filename>bug-28938-20100402134857.patch</filename>
            <type>text/plain</type>
            <size>13644</size>
            <attacher name="Yuta Kitamura">yutak</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBlMTM3NTU2Li4wMmY2ZTE0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjYgQEAKKzIwMTAtMDQt
MDEgIFl1dGEgS2l0YW11cmEgIDx5dXRha0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRXNjYXBlIGNvbnRyb2wgY2hhcmFjdGVy
cyBpbiBDU1Mgc3RyaW5nIHZhbHVlIHdoZW4gaXQgaXMgc2VyaWFsaWx6ZWQuCisKKyAgICAgICAg
V2hlbiBXZWJLaXQgc2VyaWFsaXplcyBhIENTUyBzdHJpbmcgdmFsdWUgdGhhdCBjb250YWlucyBi
aW5hcnkgY2hhcmFjdGVycworICAgICAgICAoJ1wwXDFcMicgZm9yIGV4YW1wbGUpLCBpdCBkaWQg
bm90IGVzY2FwZSB0aGVzZSBjaGFyYWN0ZXJzLiBBcyBhIHJlc3VsdCwKKyAgICAgICAgdXNlcnMg
Z290IChpbnZpc2libGUpIGNvbnRyb2wgY2hhcmFjdGVycyB0aHJvdWdoIHNjcmlwdHMuIFRoaXMg
Y2hhbmdlIGZpeGVzCisgICAgICAgIHRoaXMgaXNzdWUuCisKKyAgICAgICAgQXMgYSBzaWRlIGVm
ZmVjdCwgdHdvIHNlcGFyYXRlIGNvZGVzIGZvciBlc2NhcGluZyBDU1Mgc3RyaW5ncyBhcmUgbWVy
Z2VkLCBhbmQKKyAgICAgICAgYmVjb21lIGEgcHVibGljIGZ1bmN0aW9uIChlc2NhcGVDU1NTdHJp
bmcpLgorCisgICAgICAgIENTUyBzdHJpbmcgdmFsdWUgaXMgbm90IGNvcnJlY3RseSBzZXJpYWxp
emVkIHdoZW4gaXQgY29udGFpbnMgYmluYXJ5IGNoYXJhY3RlcnMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTI4OTM4CisKKyAgICAgICAgKiBmYXN0L2Nz
cy9zY3JpcHQtdGVzdHMvc3RyaW5nLXF1b3RlLWJpbmFyeS5qczogQWRkZWQuCisgICAgICAgICog
ZmFzdC9jc3Mvc3RyaW5nLXF1b3RlLWJpbmFyeS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAg
ICAqIGZhc3QvY3NzL3N0cmluZy1xdW90ZS1iaW5hcnkuaHRtbDogQWRkZWQuCisgICAgICAgICog
ZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanM6CisgICAgICAgIChzaG91bGRCZUVxdWFs
VG9TdHJpbmcpOiBDb25zaWRlcmluZyB0aGUgY2FzZSB3aGVuIHRoZSBhcmd1bWVudCBjb250YWlu
cyBiaW5hcnkgY2hhcmFjdGVycy4KKwogMjAxMC0wNC0wMSAgUm9sYW5kIFN0ZWluZXIgIDxyb2xh
bmRzdGVpbmVyQGNocm9taXVtLm9yZz4KIAogICAgICAgICBVbnJldmlld2VkIC0gbW9yZSBsYXlv
dXQgdGVzdCByZXN1bHQgYnVpbGQgZml4ZXM6CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0
L2Nzcy9zY3JpcHQtdGVzdHMvc3RyaW5nLXF1b3RlLWJpbmFyeS5qcyBiL0xheW91dFRlc3RzL2Zh
c3QvY3NzL3NjcmlwdC10ZXN0cy9zdHJpbmctcXVvdGUtYmluYXJ5LmpzCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg1YmY5N2IKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRU
ZXN0cy9mYXN0L2Nzcy9zY3JpcHQtdGVzdHMvc3RyaW5nLXF1b3RlLWJpbmFyeS5qcwpAQCAtMCww
ICsxLDMyIEBACitkZXNjcmlwdGlvbigKKydUaGlzIHRlc3QgY2hlY2tzIGlmIENTUyBzdHJpbmcg
dmFsdWVzIGFyZSBjb3JyZWN0bHkgc2VyaWFsaXplZCB3aGVuIHRoZXkgY29udGFpbiBiaW5hcnkg
Y2hhcmFjdGVycy4nCispOworCit2YXIgaW5wdXRzID0gWyInXFwwXFwxXFwyXFwzXFw0XFw1XFw2
XFw3XFw4XFw5XFxhXFxiXFxjXFxkXFxlXFxmJyIsCisgICAgICAgICAgICAgICInXFwxMFxcMTFc
XDEyXFwxM1xcMTRcXDE1XFwxNlxcMTdcXDE4XFwxOVxcMWFcXDFiXFwxY1xcMWRcXDFlXFwxZlxc
N2YnIiwKKyAgICAgICAgICAgICAgIidcXEFcXEJcXENcXERcXEVcXEZcXDFBXFwxQlxcMUNcXDFE
XFwxRVxcMUZcXDdGJyIsCisgICAgICAgICAgICAgICInXFwwIFxcMSBcXDIgJyIsCisgICAgICAg
ICAgICAgICInXFwwICBcXDEgIFxcMiAgJyIsCisgICAgICAgICAgICAgICInXFwwICAgXFwxICAg
XFwyICAgJyIsCisgICAgICAgICAgICAgICInXFwwMDAwMGZcXDAwMDAwZyciLAorICAgICAgICAg
ICAgICAiJ1xcMCAwXFwwIDFcXDAgMlxcMCAzXFwwIDRcXDAgNVxcMCA2XFwwIDdcXDAgOFxcMCA5
JyIsCisgICAgICAgICAgICAgICInXFwwIEFcXDAgQlxcMCBDXFwwIERcXDAgRVxcMCBGXFwwIEcn
IiwKKyAgICAgICAgICAgICAgIidcXDAgYVxcMCBiXFwwIGNcXDAgZFxcMCBlXFwwIGZcXDAgZyci
XTsKK3ZhciBleHBlY3RlZCA9IFsiJ1xcMFxcMVxcMlxcM1xcNFxcNVxcNlxcN1xcOFxcOVxcYVxc
YlxcY1xcZFxcZVxcZiciLAorICAgICAgICAgICAgICAgICInXFwxMFxcMTFcXDEyXFwxM1xcMTRc
XDE1XFwxNlxcMTdcXDE4XFwxOVxcMWFcXDFiXFwxY1xcMWRcXDFlXFwxZlxcN2YnIiwKKyAgICAg
ICAgICAgICAgICAiJ1xcYVxcYlxcY1xcZFxcZVxcZlxcMWFcXDFiXFwxY1xcMWRcXDFlXFwxZlxc
N2YnIiwKKyAgICAgICAgICAgICAgICAiJ1xcMFxcMVxcMiciLCAgICAgICAgICAvLyBObyBzcGFj
ZSBhZnRlciBlYWNoIGNvbnRyb2wgY2hhcmFjdGVyLgorICAgICAgICAgICAgICAgICInXFwwICBc
XDEgIFxcMiAgJyIsICAgIC8vIE9uZSBzcGFjZSBkZWxpbWl0ZXIgKHRoYXQgd2lsbCBiZSBpZ25v
cmVkIGJ5IHRoZSBDU1MgcGFyc2VyKSwgcGx1cyBvbmUgYWN0dWFsIHNwYWNlLgorICAgICAgICAg
ICAgICAgICInXFwwICAgXFwxICAgXFwyICAgJyIsIC8vIE9uZSBzcGFjZSBkZWxpbWl0ZXIsIHBs
dXMgdHdvIGFjdHVhbCBzcGFjZXMuCisgICAgICAgICAgICAgICAgIidcXGZcXDBnJyIsCisgICAg
ICAgICAgICAgICAgIidcXDAgMFxcMCAxXFwwIDJcXDAgM1xcMCA0XFwwIDVcXDAgNlxcMCA3XFww
IDhcXDAgOSciLCAvLyBOZWVkIGEgc3BhY2UgYmVmb3JlIFswLTlBLUZhLWZdLCBidXQgbm90IGJl
Zm9yZSBbR2ddLgorICAgICAgICAgICAgICAgICInXFwwIEFcXDAgQlxcMCBDXFwwIERcXDAgRVxc
MCBGXFwwRyciLAorICAgICAgICAgICAgICAgICInXFwwIGFcXDAgYlxcMCBjXFwwIGRcXDAgZVxc
MCBmXFwwZyciXTsKKwordmFyIHRlc3RFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgn
ZGl2Jyk7Citmb3IgKHZhciBpID0gMDsgaSA8IGlucHV0cy5sZW5ndGg7ICsraSkgeworICAgIHRl
c3RFbGVtZW50LnN0eWxlLmZvbnRGYW1pbHkgPSBpbnB1dHNbaV07CisgICAgc2hvdWxkQmVFcXVh
bFRvU3RyaW5nKCd0ZXN0RWxlbWVudC5zdHlsZS5mb250RmFtaWx5JywgZXhwZWN0ZWRbaV0pOwor
fQorCitzdWNjZXNzZnVsbHlQYXJzZWQgPSB0cnVlOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
ZmFzdC9jc3Mvc3RyaW5nLXF1b3RlLWJpbmFyeS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9m
YXN0L2Nzcy9zdHJpbmctcXVvdGUtYmluYXJ5LWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwLi40MmQ2YzU3Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVz
dHMvZmFzdC9jc3Mvc3RyaW5nLXF1b3RlLWJpbmFyeS1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwx
OSBAQAorVGhpcyB0ZXN0IGNoZWNrcyBpZiBDU1Mgc3RyaW5nIHZhbHVlcyBhcmUgY29ycmVjdGx5
IHNlcmlhbGl6ZWQgd2hlbiB0aGV5IGNvbnRhaW4gYmluYXJ5IGNoYXJhY3RlcnMuCisKK09uIHN1
Y2Nlc3MsIHlvdSB3aWxsIHNlZSBhIHNlcmllcyBvZiAiUEFTUyIgbWVzc2FnZXMsIGZvbGxvd2Vk
IGJ5ICJURVNUIENPTVBMRVRFIi4KKworCitQQVNTIHRlc3RFbGVtZW50LnN0eWxlLmZvbnRGYW1p
bHkgaXMgIidcXDBcXDFcXDJcXDNcXDRcXDVcXDZcXDdcXDhcXDlcXGFcXGJcXGNcXGRcXGVcXGYn
IgorUEFTUyB0ZXN0RWxlbWVudC5zdHlsZS5mb250RmFtaWx5IGlzICInXFwxMFxcMTFcXDEyXFwx
M1xcMTRcXDE1XFwxNlxcMTdcXDE4XFwxOVxcMWFcXDFiXFwxY1xcMWRcXDFlXFwxZlxcN2YnIgor
UEFTUyB0ZXN0RWxlbWVudC5zdHlsZS5mb250RmFtaWx5IGlzICInXFxhXFxiXFxjXFxkXFxlXFxm
XFwxYVxcMWJcXDFjXFwxZFxcMWVcXDFmXFw3ZiciCitQQVNTIHRlc3RFbGVtZW50LnN0eWxlLmZv
bnRGYW1pbHkgaXMgIidcXDBcXDFcXDInIgorUEFTUyB0ZXN0RWxlbWVudC5zdHlsZS5mb250RmFt
aWx5IGlzICInXFwwICBcXDEgIFxcMiAgJyIKK1BBU1MgdGVzdEVsZW1lbnQuc3R5bGUuZm9udEZh
bWlseSBpcyAiJ1xcMCAgIFxcMSAgIFxcMiAgICciCitQQVNTIHRlc3RFbGVtZW50LnN0eWxlLmZv
bnRGYW1pbHkgaXMgIidcXGZcXDBnJyIKK1BBU1MgdGVzdEVsZW1lbnQuc3R5bGUuZm9udEZhbWls
eSBpcyAiJ1xcMCAwXFwwIDFcXDAgMlxcMCAzXFwwIDRcXDAgNVxcMCA2XFwwIDdcXDAgOFxcMCA5
JyIKK1BBU1MgdGVzdEVsZW1lbnQuc3R5bGUuZm9udEZhbWlseSBpcyAiJ1xcMCBBXFwwIEJcXDAg
Q1xcMCBEXFwwIEVcXDAgRlxcMEcnIgorUEFTUyB0ZXN0RWxlbWVudC5zdHlsZS5mb250RmFtaWx5
IGlzICInXFwwIGFcXDAgYlxcMCBjXFwwIGRcXDAgZVxcMCBmXFwwZyciCitQQVNTIHN1Y2Nlc3Nm
dWxseVBhcnNlZCBpcyB0cnVlCisKK1RFU1QgQ09NUExFVEUKKwpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvZmFzdC9jc3Mvc3RyaW5nLXF1b3RlLWJpbmFyeS5odG1sIGIvTGF5b3V0VGVzdHMvZmFz
dC9jc3Mvc3RyaW5nLXF1b3RlLWJpbmFyeS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IDAwMDAwMDAuLjY5ZjZmNTMKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9mYXN0L2Nz
cy9zdHJpbmctcXVvdGUtYmluYXJ5Lmh0bWwKQEAgLTAsMCArMSwxMyBAQAorPCFET0NUWVBFIEhU
TUwgUFVCTElDICItLy9JRVRGLy9EVEQgSFRNTC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxsaW5r
IHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vanMvcmVzb3VyY2VzL2pzLXRlc3Qtc3R5bGUuY3Nz
Ij4KKzxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMiPjwvc2NyaXB0
PgorPC9oZWFkPgorPGJvZHk+Cis8cCBpZD0iZGVzY3JpcHRpb24iPjwvcD4KKzxkaXYgaWQ9ImNv
bnNvbGUiPjwvZGl2PgorPHNjcmlwdCBzcmM9InNjcmlwdC10ZXN0cy9zdHJpbmctcXVvdGUtYmlu
YXJ5LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVzdC1w
b3N0LmpzIj48L3NjcmlwdD4KKzwvYm9keT4KKzwvaHRtbD4KZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2Zhc3QvanMvcmVzb3VyY2VzL2pzLXRlc3QtcHJlLmpzIGIvTGF5b3V0VGVzdHMvZmFzdC9q
cy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMKaW5kZXggM2RmNjFkZS4uZWNmNWZkMCAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMKKysrIGIv
TGF5b3V0VGVzdHMvZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMKQEAgLTEyMiw3ICsx
MjIsNyBAQCBmdW5jdGlvbiBzaG91bGRCZU51bGwoX2EpIHsgc2hvdWxkQmUoX2EsICJudWxsIik7
IH0KIAogZnVuY3Rpb24gc2hvdWxkQmVFcXVhbFRvU3RyaW5nKGEsIGIpCiB7Ci0gIHZhciB1bmV2
YWxlZFN0cmluZyA9ICciJyArIGIucmVwbGFjZSgvIi9nLCAiXCIiKSArICciJzsKKyAgdmFyIHVu
ZXZhbGVkU3RyaW5nID0gJyInICsgYi5yZXBsYWNlKC9cXC9nLCAiXFxcXCIpLnJlcGxhY2UoLyIv
ZywgIlwiIikgKyAnIic7CiAgIHNob3VsZEJlKGEsIHVuZXZhbGVkU3RyaW5nKTsKIH0KIApkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9DaGFuZ2VMb2cgYi9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA5MjBj
MzM5Li5lZDUzOTcwIDEwMDY0NAotLS0gYS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9XZWJDb3Jl
L0NoYW5nZUxvZwpAQCAtMSwzICsxLDMxIEBACisyMDEwLTA0LTAxICBZdXRhIEtpdGFtdXJhICA8
eXV0YWtAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIEVzY2FwZSBjb250cm9sIGNoYXJhY3RlcnMgaW4gQ1NTIHN0cmluZyB2YWx1
ZSB3aGVuIGl0IGlzIHNlcmlhbGlsemVkLgorCisgICAgICAgIFdoZW4gV2ViS2l0IHNlcmlhbGl6
ZXMgYSBDU1Mgc3RyaW5nIHZhbHVlIHRoYXQgY29udGFpbnMgYmluYXJ5IGNoYXJhY3RlcnMKKyAg
ICAgICAgKCdcMFwxXDInIGZvciBleGFtcGxlKSwgaXQgZGlkIG5vdCBlc2NhcGUgdGhlc2UgY2hh
cmFjdGVycy4gQXMgYSByZXN1bHQsCisgICAgICAgIHVzZXJzIGdvdCAoaW52aXNpYmxlKSBjb250
cm9sIGNoYXJhY3RlcnMgdGhyb3VnaCBzY3JpcHRzLiBUaGlzIGNoYW5nZSBmaXhlcworICAgICAg
ICB0aGlzIGlzc3VlLgorCisgICAgICAgIEFzIGEgc2lkZSBlZmZlY3QsIHR3byBzZXBhcmF0ZSBj
b2RlcyBmb3IgZXNjYXBpbmcgQ1NTIHN0cmluZ3MgYXJlIG1lcmdlZCwgYW5kCisgICAgICAgIGJl
Y29tZSBhIHB1YmxpYyBmdW5jdGlvbiAoZXNjYXBlQ1NTU3RyaW5nKS4KKworICAgICAgICBDU1Mg
c3RyaW5nIHZhbHVlIGlzIG5vdCBjb3JyZWN0bHkgc2VyaWFsaXplZCB3aGVuIGl0IGNvbnRhaW5z
IGJpbmFyeSBjaGFyYWN0ZXJzCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0yODkzOAorCisgICAgICAgIFRlc3Q6IGZhc3QvanMvc3RyaW5nLXF1b3RlLWJp
bmFyeS5odG1sCisKKyAgICAgICAgKiBjc3MvQ1NTUHJpbWl0aXZlVmFsdWUuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6cXVvdGVDU1NTdHJpbmcpOgorICAgICAgICAoV2ViQ29yZTo6cXVvdGVDU1NT
dHJpbmdJZk5lZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpxdW90ZUNTU1VSTElmTmVlZGVkKToK
KyAgICAgICAgKFdlYkNvcmU6OkNTU1ByaW1pdGl2ZVZhbHVlOjpjc3NUZXh0KToKKyAgICAgICAg
KiBjc3MvQ1NTUHJpbWl0aXZlVmFsdWUuaDoKKyAgICAgICAgKiBjc3MvRm9udEZhbWlseVZhbHVl
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZvbnRGYW1pbHlWYWx1ZTo6Y3NzVGV4dCk6CisKIDIw
MTAtMDMtMzEgIE1PUklUQSBIYWppbWUgIDxtb3JyaXRhQGdvb2dsZS5jb20+CiAgICAgICAgIAog
ICAgICAgICBSZXZpZXdlZCBieSBEYXJpbiBBZGxlci4KZGlmZiAtLWdpdCBhL1dlYkNvcmUvY3Nz
L0NTU1ByaW1pdGl2ZVZhbHVlLmNwcCBiL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmNw
cAppbmRleCA1YTcwNTNjLi5hODEwZWJkIDEwMDY0NAotLS0gYS9XZWJDb3JlL2Nzcy9DU1NQcmlt
aXRpdmVWYWx1ZS5jcHAKKysrIGIvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUuY3BwCkBA
IC0zMyw2ICszMyw3IEBACiAjaW5jbHVkZSAiUkdCQ29sb3IuaCIKICNpbmNsdWRlICJSZWN0Lmgi
CiAjaW5jbHVkZSAiUmVuZGVyU3R5bGUuaCIKKyNpbmNsdWRlICJTdHJpbmdCdWZmZXIuaCIKICNp
bmNsdWRlIDx3dGYvQVNDSUlDVHlwZS5oPgogI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4K
IApAQCAtMTk1LDIzICsxOTYsNjMgQEAgc3RhdGljIGJvb2wgaXNDU1NUb2tlbml6ZXJVUkwoY29u
c3QgU3RyaW5nJiBzdHJpbmcpCiB9CiAKIC8vIFdlIHVzZSBzaW5nbGUgcXVvdGVzIGZvciBub3cg
YmVjYXVzZSBtYXJrdXAuY3BwIHVzZXMgZG91YmxlIHF1b3Rlcy4KLXN0YXRpYyBTdHJpbmcgcXVv
dGVTdHJpbmcoY29uc3QgU3RyaW5nJiBzdHJpbmcpCitTdHJpbmcgcXVvdGVDU1NTdHJpbmcoY29u
c3QgU3RyaW5nJiBzdHJpbmcpCiB7Ci0gICAgLy8gRklYTUU6IEFsc28gbmVlZCB0byBlc2NhcGUg
Y2hhcmFjdGVycyBsaWtlICdcbicuCi0gICAgU3RyaW5nIHMgPSBzdHJpbmc7Ci0gICAgcy5yZXBs
YWNlKCdcXCcsICJcXFxcIik7Ci0gICAgcy5yZXBsYWNlKCdcJycsICJcXCciKTsKLSAgICByZXR1
cm4gIiciICsgcyArICInIjsKKyAgICAvLyBGb3IgZWZmaWNpZW5jeSwgd2UgZmlyc3QgcHJlLWNh
bGN1bGF0ZSB0aGUgbGVuZ3RoIG9mIHRoZSBxdW90ZWQgc3RyaW5nLCB0aGVuIHdlIGJ1aWxkIHRo
ZSBhY3R1YWwgb25lLgorICAgIC8vIFBsZWFzZSBzZWUgYmVsb3cgZm9yIHRoZSBhY3R1YWwgbG9n
aWMuCisgICAgdW5zaWduZWQgcXVvdGVkU3RyaW5nU2l6ZSA9IDI7IC8vIFR3byBxdW90ZXMgc3Vy
cm91bmRpbmcgdGhlIGVudGlyZSBzdHJpbmcuCisgICAgYm9vbCBhZnRlckVzY2FwZSA9IGZhbHNl
OworICAgIGZvciAodW5zaWduZWQgaSA9IDA7IGkgPCBzdHJpbmcubGVuZ3RoKCk7ICsraSkgewor
ICAgICAgICBVQ2hhciBjaCA9IHN0cmluZ1tpXTsKKyAgICAgICAgaWYgKGNoID09ICdcXCcgfHwg
Y2ggPT0gJ1wnJykgeworICAgICAgICAgICAgcXVvdGVkU3RyaW5nU2l6ZSArPSAyOworICAgICAg
ICAgICAgYWZ0ZXJFc2NhcGUgPSBmYWxzZTsKKyAgICAgICAgfSBlbHNlIGlmIChjaCA8IDB4MjAg
fHwgY2ggPT0gMHg3RikgeworICAgICAgICAgICAgcXVvdGVkU3RyaW5nU2l6ZSArPSAyICsgKGNo
ID49IDB4MTApOworICAgICAgICAgICAgYWZ0ZXJFc2NhcGUgPSB0cnVlOworICAgICAgICB9IGVs
c2UgeworICAgICAgICAgICAgcXVvdGVkU3RyaW5nU2l6ZSArPSAxICsgKGFmdGVyRXNjYXBlICYm
IChpc0FTQ0lJSGV4RGlnaXQoY2gpIHx8IGNoID09ICcgJykpOworICAgICAgICAgICAgYWZ0ZXJF
c2NhcGUgPSBmYWxzZTsKKyAgICAgICAgfQorICAgIH0KKworICAgIFN0cmluZ0J1ZmZlciBidWZm
ZXIocXVvdGVkU3RyaW5nU2l6ZSk7CisgICAgdW5zaWduZWQgaW5kZXggPSAwOworICAgIGJ1ZmZl
cltpbmRleCsrXSA9ICdcJyc7CisgICAgYWZ0ZXJFc2NhcGUgPSBmYWxzZTsKKyAgICBmb3IgKHVu
c2lnbmVkIGkgPSAwOyBpIDwgc3RyaW5nLmxlbmd0aCgpOyArK2kpIHsKKyAgICAgICAgVUNoYXIg
Y2ggPSBzdHJpbmdbaV07CisgICAgICAgIGlmIChjaCA9PSAnXFwnIHx8IGNoID09ICdcJycpIHsK
KyAgICAgICAgICAgIGJ1ZmZlcltpbmRleCsrXSA9ICdcXCc7CisgICAgICAgICAgICBidWZmZXJb
aW5kZXgrK10gPSBjaDsKKyAgICAgICAgICAgIGFmdGVyRXNjYXBlID0gZmFsc2U7CisgICAgICAg
IH0gZWxzZSBpZiAoY2ggPCAweDIwIHx8IGNoID09IDB4N0YpIHsgLy8gQ29udHJvbCBjaGFyYWN0
ZXJzLgorICAgICAgICAgICAgU3RyaW5nIGVzY2FwZSA9IFN0cmluZzo6Zm9ybWF0KCJcXCV4Iiwg
c3RhdGljX2Nhc3Q8aW50PihjaCkpOworICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBqID0gMDsg
aiA8IGVzY2FwZS5sZW5ndGgoKTsgKytqKQorICAgICAgICAgICAgICAgIGJ1ZmZlcltpbmRleCsr
XSA9IGVzY2FwZVtqXTsKKyAgICAgICAgICAgIGFmdGVyRXNjYXBlID0gdHJ1ZTsKKyAgICAgICAg
fSBlbHNlIHsKKyAgICAgICAgICAgIC8vIFNwYWNlIGNoYXJhY2V0ZXIgbWF5IGJlIHJlcXVpcmVk
IHRvIHNlcGFyYXRlIGJhY2tzbGFzaC1lc2NhcGUgc2VxdWVuY2UgYW5kIG5vcm1hbCBjaGFyYWN0
ZXJzLgorICAgICAgICAgICAgaWYgKGFmdGVyRXNjYXBlICYmIChpc0FTQ0lJSGV4RGlnaXQoY2gp
IHx8IGNoID09ICcgJykpCisgICAgICAgICAgICAgICAgYnVmZmVyW2luZGV4KytdID0gJyAnOwor
ICAgICAgICAgICAgYnVmZmVyW2luZGV4KytdID0gY2g7CisgICAgICAgICAgICBhZnRlckVzY2Fw
ZSA9IGZhbHNlOworICAgICAgICB9CisgICAgfQorICAgIGJ1ZmZlcltpbmRleCsrXSA9ICdcJyc7
CisKKyAgICBBU1NFUlQocXVvdGVkU3RyaW5nU2l6ZSA9PSBpbmRleCk7CisgICAgcmV0dXJuIFN0
cmluZzo6YWRvcHQoYnVmZmVyKTsKIH0KIAotc3RhdGljIFN0cmluZyBxdW90ZVN0cmluZ0lmTmVl
ZGVkKGNvbnN0IFN0cmluZyYgc3RyaW5nKQorU3RyaW5nIHF1b3RlQ1NTU3RyaW5nSWZOZWVkZWQo
Y29uc3QgU3RyaW5nJiBzdHJpbmcpCiB7Ci0gICAgcmV0dXJuIGlzQ1NTVG9rZW5pemVySWRlbnRp
ZmllcihzdHJpbmcpID8gc3RyaW5nIDogcXVvdGVTdHJpbmcoc3RyaW5nKTsKKyAgICByZXR1cm4g
aXNDU1NUb2tlbml6ZXJJZGVudGlmaWVyKHN0cmluZykgPyBzdHJpbmcgOiBxdW90ZUNTU1N0cmlu
ZyhzdHJpbmcpOwogfQogCi1zdGF0aWMgU3RyaW5nIHF1b3RlVVJMSWZOZWVkZWQoY29uc3QgU3Ry
aW5nJiBzdHJpbmcpCitTdHJpbmcgcXVvdGVDU1NVUkxJZk5lZWRlZChjb25zdCBTdHJpbmcmIHN0
cmluZykKIHsKLSAgICByZXR1cm4gaXNDU1NUb2tlbml6ZXJVUkwoc3RyaW5nKSA/IHN0cmluZyA6
IHF1b3RlU3RyaW5nKHN0cmluZyk7CisgICAgcmV0dXJuIGlzQ1NTVG9rZW5pemVyVVJMKHN0cmlu
ZykgPyBzdHJpbmcgOiBxdW90ZUNTU1N0cmluZyhzdHJpbmcpOwogfQogCiBDU1NQcmltaXRpdmVW
YWx1ZTo6Q1NTUHJpbWl0aXZlVmFsdWUoKQpAQCAtNzc0LDEwICs4MTUsMTAgQEAgU3RyaW5nIENT
U1ByaW1pdGl2ZVZhbHVlOjpjc3NUZXh0KCkgY29uc3QKICAgICAgICAgICAgIC8vIEZJWE1FCiAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgY2FzZSBDU1NfU1RSSU5HOgotICAgICAgICAgICAg
dGV4dCA9IHF1b3RlU3RyaW5nSWZOZWVkZWQobV92YWx1ZS5zdHJpbmcpOworICAgICAgICAgICAg
dGV4dCA9IHF1b3RlQ1NTU3RyaW5nSWZOZWVkZWQobV92YWx1ZS5zdHJpbmcpOwogICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIGNhc2UgQ1NTX1VSSToKLSAgICAgICAgICAgIHRleHQgPSAidXJs
KCIgKyBxdW90ZVVSTElmTmVlZGVkKG1fdmFsdWUuc3RyaW5nKSArICIpIjsKKyAgICAgICAgICAg
IHRleHQgPSAidXJsKCIgKyBxdW90ZUNTU1VSTElmTmVlZGVkKG1fdmFsdWUuc3RyaW5nKSArICIp
IjsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIENTU19JREVOVDoKICAgICAgICAg
ICAgIHRleHQgPSB2YWx1ZU9yUHJvcGVydHlOYW1lKG1fdmFsdWUuaWRlbnQpOwpAQCAtOTA1LDcg
Kzk0Niw3IEBAIFN0cmluZyBDU1NQcmltaXRpdmVWYWx1ZTo6Y3NzVGV4dCgpIGNvbnN0CiAgICAg
ICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgICBjYXNlIENTU19QQVJTRVJfSURFTlRJ
RklFUjoKLSAgICAgICAgICAgIHRleHQgPSBxdW90ZVN0cmluZ0lmTmVlZGVkKG1fdmFsdWUuc3Ry
aW5nKTsKKyAgICAgICAgICAgIHRleHQgPSBxdW90ZUNTU1N0cmluZ0lmTmVlZGVkKG1fdmFsdWUu
c3RyaW5nKTsKICAgICAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBtX2NhY2hlZENTU1RleHQg
PSB0ZXh0OwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUuaCBiL1dl
YkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmgKaW5kZXggOTQzYWQwNC4uMzdmZTI0NyAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUuaAorKysgYi9XZWJDb3JlL2Nz
cy9DU1NQcmltaXRpdmVWYWx1ZS5oCkBAIC0yMTQsNiArMjE0LDEwIEBAIHByaXZhdGU6CiAgICAg
bXV0YWJsZSBTdHJpbmcgbV9jYWNoZWRDU1NUZXh0OwogfTsKIAorU3RyaW5nIHF1b3RlQ1NTU3Ry
aW5nKGNvbnN0IFN0cmluZyYpOworU3RyaW5nIHF1b3RlQ1NTU3RyaW5nSWZOZWVkZWQoY29uc3Qg
U3RyaW5nJik7CitTdHJpbmcgcXVvdGVDU1NVUkxJZk5lZWRlZChjb25zdCBTdHJpbmcmKTsKKwog
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gQ1NTUHJpbWl0aXZlVmFsdWVfaApk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9jc3MvRm9udEZhbWlseVZhbHVlLmNwcCBiL1dlYkNvcmUvY3Nz
L0ZvbnRGYW1pbHlWYWx1ZS5jcHAKaW5kZXggOTBhOGM5ZC4uNTdkMjE3MSAxMDA2NDQKLS0tIGEv
V2ViQ29yZS9jc3MvRm9udEZhbWlseVZhbHVlLmNwcAorKysgYi9XZWJDb3JlL2Nzcy9Gb250RmFt
aWx5VmFsdWUuY3BwCkBAIC0yMSw0NCArMjEsOSBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2lu
Y2x1ZGUgIkZvbnRGYW1pbHlWYWx1ZS5oIgogCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLS8vIEZJ
WE1FOiBUaGlzIGFwcGVhcnMgaWRlbnRpY2FsIHRvIGlzQ1NTVG9rZW5pemVySWRlbnRpZmllciBm
cm9tIENTU1ByaW1pdGl2ZVZhbHVlLmNwcCwgd2Ugc2hvdWxkIHVzZSBhIHNpbmdsZSBmdW5jdGlv
bi4KLXN0YXRpYyBib29sIGlzVmFsaWRDU1NJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYgc3RyaW5n
KQotewotICAgIHVuc2lnbmVkIGxlbmd0aCA9IHN0cmluZy5sZW5ndGgoKTsKLSAgICBpZiAoIWxl
bmd0aCkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgY29uc3QgVUNoYXIqIGNoYXJhY3Rl
cnMgPSBzdHJpbmcuY2hhcmFjdGVycygpOwotICAgIFVDaGFyIGMgPSBjaGFyYWN0ZXJzWzBdOwot
ICAgIGlmICghKGMgPT0gJ18nIHx8IChjID49ICdhJyAmJiBjIDw9ICd6JykgfHwgKGMgPj0gJ0En
ICYmIGMgPD0gJ1onKSB8fCBjID09ICctJyB8fCBjID49IDB4ODApKQotICAgICAgICByZXR1cm4g
ZmFsc2U7Ci0KLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAxOyBpIDwgbGVuZ3RoOyArK2kpIHsKLSAg
ICAgICAgYyA9IGNoYXJhY3RlcnNbaV07Ci0gICAgICAgIGlmICghKGMgPT0gJ18nIHx8IChjID49
ICdhJyAmJiBjIDw9ICd6JykgfHwgKGMgPj0gJ0EnICYmIGMgPD0gJ1onKSB8fCAoYyA+PSAnMCcg
JiYgYyA8PSAnOScpIHx8IGMgPT0gJy0nIHx8IGMgPj0gMHg4MCkpCi0gICAgICAgICAgICByZXR1
cm4gZmFsc2U7Ci0gICAgfQorI2luY2x1ZGUgIkNTU1ByaW1pdGl2ZVZhbHVlLmgiCiAKLSAgICBy
ZXR1cm4gdHJ1ZTsKLX0KLQotLy8gUXVvdGVzIHRoZSBzdHJpbmcgaWYgaXQgbmVlZHMgcXVvdGlu
Zy4KLS8vIFdlIHVzZSBzaW5nbGUgcXVvdGVzIGJlY2F1c2Ugc2VyaWFsaXphdGlvbiBjb2RlIHVz
ZXMgZG91YmxlIHF1b3RlcywgYW5kIGl0J3MgbmljZSB0bwotLy8gYXZvaWQgaGF2aW5nIHRvIHR1
cm4gYWxsIHRoZSBxdW90ZSBtYXJrcyBpbnRvICZxdW90OyBhcyB3ZSB3b3VsZCBoYXZlIHRvLgot
c3RhdGljIFN0cmluZyBxdW90ZVN0cmluZ0lmTmVlZGVkKGNvbnN0IFN0cmluZyYgc3RyaW5nKQot
ewotICAgIGlmIChpc1ZhbGlkQ1NTSWRlbnRpZmllcihzdHJpbmcpKQotICAgICAgICByZXR1cm4g
c3RyaW5nOwotCi0gICAgLy8gRklYTUU6IEFsc28gbmVlZCB0byB0cmFuc2Zvcm0gY29udHJvbCBj
aGFyYWN0ZXJzICgwMC0xRikgaW50byBcIHNlcXVlbmNlcy4KLSAgICAvLyBGSVhNRTogVGhpcyBp
cyBpbmVmZmljaWVudCAtLSBzaG91bGQgdXNlIGEgVmVjdG9yPFVDaGFyPiBpbnN0ZWFkLgotICAg
IFN0cmluZyBxdW90ZWRTdHJpbmcgPSBzdHJpbmc7Ci0gICAgcXVvdGVkU3RyaW5nLnJlcGxhY2Uo
J1xcJywgIlxcXFwiKTsKLSAgICBxdW90ZWRTdHJpbmcucmVwbGFjZSgnXCcnLCAiXFwnIik7Ci0g
ICAgcmV0dXJuICInIiArIHF1b3RlZFN0cmluZyArICInIjsKLX0KK25hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogRm9udEZhbWlseVZhbHVlOjpGb250RmFtaWx5VmFsdWUoY29uc3QgU3RyaW5nJiBmYW1p
bHlOYW1lKQogICAgIDogQ1NTUHJpbWl0aXZlVmFsdWUoU3RyaW5nKCksIENTU19TVFJJTkcpCkBA
IC0xMDEsNyArNjYsNyBAQCB2b2lkIEZvbnRGYW1pbHlWYWx1ZTo6YXBwZW5kU3BhY2VTZXBhcmF0
ZWQoY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMsIHVuc2lnbmVkIGxlbgogCiBTdHJpbmcgRm9udEZh
bWlseVZhbHVlOjpjc3NUZXh0KCkgY29uc3QKIHsKLSAgICByZXR1cm4gcXVvdGVTdHJpbmdJZk5l
ZWRlZChtX2ZhbWlseU5hbWUpOworICAgIHJldHVybiBxdW90ZUNTU1N0cmluZ0lmTmVlZGVkKG1f
ZmFtaWx5TmFtZSk7CiB9CiAKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>52516</attachid>
            <date>2010-04-04 19:45:52 -0700</date>
            <delta_ts>2010-04-05 17:08:42 -0700</delta_ts>
            <desc>Patch v6 (Applying darin&apos;s comment).</desc>
            <filename>bug-28938-20100405114550.patch</filename>
            <type>text/plain</type>
            <size>17158</size>
            <attacher name="Yuta Kitamura">yutak</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBkNTk4NGFlLi5iY2M4OWExIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VM
b2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjYgQEAKKzIwMTAtMDQt
MDQgIFl1dGEgS2l0YW11cmEgIDx5dXRha0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgRXNjYXBlIGNvbnRyb2wgY2hhcmFjdGVy
cyBpbiBDU1Mgc3RyaW5nIHZhbHVlIHdoZW4gaXQgaXMgc2VyaWFsaWx6ZWQuCisKKyAgICAgICAg
V2hlbiBXZWJLaXQgc2VyaWFsaXplcyBhIENTUyBzdHJpbmcgdmFsdWUgdGhhdCBjb250YWlucyBi
aW5hcnkgY2hhcmFjdGVycworICAgICAgICAoJ1wwXDFcMicgZm9yIGV4YW1wbGUpLCBpdCBkaWQg
bm90IGVzY2FwZSB0aGVzZSBjaGFyYWN0ZXJzLiBBcyBhIHJlc3VsdCwKKyAgICAgICAgdXNlcnMg
Z290IChpbnZpc2libGUpIGNvbnRyb2wgY2hhcmFjdGVycyB0aHJvdWdoIHNjcmlwdHMuIFRoaXMg
Y2hhbmdlIGZpeGVzCisgICAgICAgIHRoaXMgaXNzdWUuCisKKyAgICAgICAgQXMgYSBzaWRlIGVm
ZmVjdCwgdHdvIHNlcGFyYXRlIGNvZGVzIGZvciBlc2NhcGluZyBDU1Mgc3RyaW5ncyBhcmUgbWVy
Z2VkLCBhbmQKKyAgICAgICAgYmVjb21lIGEgcHVibGljIGZ1bmN0aW9uIChxdW90ZUNTU1N0cmlu
ZykuCisKKyAgICAgICAgQ1NTIHN0cmluZyB2YWx1ZSBpcyBub3QgY29ycmVjdGx5IHNlcmlhbGl6
ZWQgd2hlbiBpdCBjb250YWlucyBiaW5hcnkgY2hhcmFjdGVycworICAgICAgICBodHRwczovL2J1
Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mjg5MzgKKworICAgICAgICAqIGZhc3QvY3Nz
L3NjcmlwdC10ZXN0cy9zdHJpbmctcXVvdGUtYmluYXJ5LmpzOiBBZGRlZC4KKyAgICAgICAgKiBm
YXN0L2Nzcy9zdHJpbmctcXVvdGUtYmluYXJ5LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAg
ICogZmFzdC9jc3Mvc3RyaW5nLXF1b3RlLWJpbmFyeS5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBm
YXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qczoKKyAgICAgICAgKHNob3VsZEJlRXF1YWxU
b1N0cmluZyk6IENvbnNpZGVyaW5nIHRoZSBjYXNlIHdoZW4gdGhlIGFyZ3VtZW50IGNvbnRhaW5z
IGJpbmFyeSBjaGFyYWN0ZXJzLgorCiAyMDEwLTA0LTAyICBEYXJpbiBGaXNoZXIgIDxkYXJpbkBj
aHJvbWl1bS5vcmc+CiAKICAgICAgICAgQWRkIGNocm9taXVtIHN1cHByZXNzaW9uIGZvciBodHRw
L3Rlc3RzL3hodG1sbXAgc2luY2Ugd2UgZG8gbm90IHN1cHBvcnQKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2Zhc3QvY3NzL3NjcmlwdC10ZXN0cy9zdHJpbmctcXVvdGUtYmluYXJ5LmpzIGIvTGF5
b3V0VGVzdHMvZmFzdC9jc3Mvc2NyaXB0LXRlc3RzL3N0cmluZy1xdW90ZS1iaW5hcnkuanMKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODViZjk3YgotLS0gL2Rldi9udWxsCisr
KyBiL0xheW91dFRlc3RzL2Zhc3QvY3NzL3NjcmlwdC10ZXN0cy9zdHJpbmctcXVvdGUtYmluYXJ5
LmpzCkBAIC0wLDAgKzEsMzIgQEAKK2Rlc2NyaXB0aW9uKAorJ1RoaXMgdGVzdCBjaGVja3MgaWYg
Q1NTIHN0cmluZyB2YWx1ZXMgYXJlIGNvcnJlY3RseSBzZXJpYWxpemVkIHdoZW4gdGhleSBjb250
YWluIGJpbmFyeSBjaGFyYWN0ZXJzLicKKyk7CisKK3ZhciBpbnB1dHMgPSBbIidcXDBcXDFcXDJc
XDNcXDRcXDVcXDZcXDdcXDhcXDlcXGFcXGJcXGNcXGRcXGVcXGYnIiwKKyAgICAgICAgICAgICAg
IidcXDEwXFwxMVxcMTJcXDEzXFwxNFxcMTVcXDE2XFwxN1xcMThcXDE5XFwxYVxcMWJcXDFjXFwx
ZFxcMWVcXDFmXFw3ZiciLAorICAgICAgICAgICAgICAiJ1xcQVxcQlxcQ1xcRFxcRVxcRlxcMUFc
XDFCXFwxQ1xcMURcXDFFXFwxRlxcN0YnIiwKKyAgICAgICAgICAgICAgIidcXDAgXFwxIFxcMiAn
IiwKKyAgICAgICAgICAgICAgIidcXDAgIFxcMSAgXFwyICAnIiwKKyAgICAgICAgICAgICAgIidc
XDAgICBcXDEgICBcXDIgICAnIiwKKyAgICAgICAgICAgICAgIidcXDAwMDAwZlxcMDAwMDBnJyIs
CisgICAgICAgICAgICAgICInXFwwIDBcXDAgMVxcMCAyXFwwIDNcXDAgNFxcMCA1XFwwIDZcXDAg
N1xcMCA4XFwwIDknIiwKKyAgICAgICAgICAgICAgIidcXDAgQVxcMCBCXFwwIENcXDAgRFxcMCBF
XFwwIEZcXDAgRyciLAorICAgICAgICAgICAgICAiJ1xcMCBhXFwwIGJcXDAgY1xcMCBkXFwwIGVc
XDAgZlxcMCBnJyJdOwordmFyIGV4cGVjdGVkID0gWyInXFwwXFwxXFwyXFwzXFw0XFw1XFw2XFw3
XFw4XFw5XFxhXFxiXFxjXFxkXFxlXFxmJyIsCisgICAgICAgICAgICAgICAgIidcXDEwXFwxMVxc
MTJcXDEzXFwxNFxcMTVcXDE2XFwxN1xcMThcXDE5XFwxYVxcMWJcXDFjXFwxZFxcMWVcXDFmXFw3
ZiciLAorICAgICAgICAgICAgICAgICInXFxhXFxiXFxjXFxkXFxlXFxmXFwxYVxcMWJcXDFjXFwx
ZFxcMWVcXDFmXFw3ZiciLAorICAgICAgICAgICAgICAgICInXFwwXFwxXFwyJyIsICAgICAgICAg
IC8vIE5vIHNwYWNlIGFmdGVyIGVhY2ggY29udHJvbCBjaGFyYWN0ZXIuCisgICAgICAgICAgICAg
ICAgIidcXDAgIFxcMSAgXFwyICAnIiwgICAgLy8gT25lIHNwYWNlIGRlbGltaXRlciAodGhhdCB3
aWxsIGJlIGlnbm9yZWQgYnkgdGhlIENTUyBwYXJzZXIpLCBwbHVzIG9uZSBhY3R1YWwgc3BhY2Uu
CisgICAgICAgICAgICAgICAgIidcXDAgICBcXDEgICBcXDIgICAnIiwgLy8gT25lIHNwYWNlIGRl
bGltaXRlciwgcGx1cyB0d28gYWN0dWFsIHNwYWNlcy4KKyAgICAgICAgICAgICAgICAiJ1xcZlxc
MGcnIiwKKyAgICAgICAgICAgICAgICAiJ1xcMCAwXFwwIDFcXDAgMlxcMCAzXFwwIDRcXDAgNVxc
MCA2XFwwIDdcXDAgOFxcMCA5JyIsIC8vIE5lZWQgYSBzcGFjZSBiZWZvcmUgWzAtOUEtRmEtZl0s
IGJ1dCBub3QgYmVmb3JlIFtHZ10uCisgICAgICAgICAgICAgICAgIidcXDAgQVxcMCBCXFwwIENc
XDAgRFxcMCBFXFwwIEZcXDBHJyIsCisgICAgICAgICAgICAgICAgIidcXDAgYVxcMCBiXFwwIGNc
XDAgZFxcMCBlXFwwIGZcXDBnJyJdOworCit2YXIgdGVzdEVsZW1lbnQgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50KCdkaXYnKTsKK2ZvciAodmFyIGkgPSAwOyBpIDwgaW5wdXRzLmxlbmd0aDsgKytp
KSB7CisgICAgdGVzdEVsZW1lbnQuc3R5bGUuZm9udEZhbWlseSA9IGlucHV0c1tpXTsKKyAgICBz
aG91bGRCZUVxdWFsVG9TdHJpbmcoJ3Rlc3RFbGVtZW50LnN0eWxlLmZvbnRGYW1pbHknLCBleHBl
Y3RlZFtpXSk7Cit9CisKK3N1Y2Nlc3NmdWxseVBhcnNlZCA9IHRydWU7CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9mYXN0L2Nzcy9zdHJpbmctcXVvdGUtYmluYXJ5LWV4cGVjdGVkLnR4dCBiL0xh
eW91dFRlc3RzL2Zhc3QvY3NzL3N0cmluZy1xdW90ZS1iaW5hcnktZXhwZWN0ZWQudHh0Cm5ldyBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQyZDZjNTcKLS0tIC9kZXYvbnVsbAorKysg
Yi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9zdHJpbmctcXVvdGUtYmluYXJ5LWV4cGVjdGVkLnR4dApA
QCAtMCwwICsxLDE5IEBACitUaGlzIHRlc3QgY2hlY2tzIGlmIENTUyBzdHJpbmcgdmFsdWVzIGFy
ZSBjb3JyZWN0bHkgc2VyaWFsaXplZCB3aGVuIHRoZXkgY29udGFpbiBiaW5hcnkgY2hhcmFjdGVy
cy4KKworT24gc3VjY2VzcywgeW91IHdpbGwgc2VlIGEgc2VyaWVzIG9mICJQQVNTIiBtZXNzYWdl
cywgZm9sbG93ZWQgYnkgIlRFU1QgQ09NUExFVEUiLgorCisKK1BBU1MgdGVzdEVsZW1lbnQuc3R5
bGUuZm9udEZhbWlseSBpcyAiJ1xcMFxcMVxcMlxcM1xcNFxcNVxcNlxcN1xcOFxcOVxcYVxcYlxc
Y1xcZFxcZVxcZiciCitQQVNTIHRlc3RFbGVtZW50LnN0eWxlLmZvbnRGYW1pbHkgaXMgIidcXDEw
XFwxMVxcMTJcXDEzXFwxNFxcMTVcXDE2XFwxN1xcMThcXDE5XFwxYVxcMWJcXDFjXFwxZFxcMWVc
XDFmXFw3ZiciCitQQVNTIHRlc3RFbGVtZW50LnN0eWxlLmZvbnRGYW1pbHkgaXMgIidcXGFcXGJc
XGNcXGRcXGVcXGZcXDFhXFwxYlxcMWNcXDFkXFwxZVxcMWZcXDdmJyIKK1BBU1MgdGVzdEVsZW1l
bnQuc3R5bGUuZm9udEZhbWlseSBpcyAiJ1xcMFxcMVxcMiciCitQQVNTIHRlc3RFbGVtZW50LnN0
eWxlLmZvbnRGYW1pbHkgaXMgIidcXDAgIFxcMSAgXFwyICAnIgorUEFTUyB0ZXN0RWxlbWVudC5z
dHlsZS5mb250RmFtaWx5IGlzICInXFwwICAgXFwxICAgXFwyICAgJyIKK1BBU1MgdGVzdEVsZW1l
bnQuc3R5bGUuZm9udEZhbWlseSBpcyAiJ1xcZlxcMGcnIgorUEFTUyB0ZXN0RWxlbWVudC5zdHls
ZS5mb250RmFtaWx5IGlzICInXFwwIDBcXDAgMVxcMCAyXFwwIDNcXDAgNFxcMCA1XFwwIDZcXDAg
N1xcMCA4XFwwIDknIgorUEFTUyB0ZXN0RWxlbWVudC5zdHlsZS5mb250RmFtaWx5IGlzICInXFww
IEFcXDAgQlxcMCBDXFwwIERcXDAgRVxcMCBGXFwwRyciCitQQVNTIHRlc3RFbGVtZW50LnN0eWxl
LmZvbnRGYW1pbHkgaXMgIidcXDAgYVxcMCBiXFwwIGNcXDAgZFxcMCBlXFwwIGZcXDBnJyIKK1BB
U1Mgc3VjY2Vzc2Z1bGx5UGFyc2VkIGlzIHRydWUKKworVEVTVCBDT01QTEVURQorCmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Nzcy9zdHJpbmctcXVvdGUtYmluYXJ5Lmh0bWwgYi9MYXlv
dXRUZXN0cy9mYXN0L2Nzcy9zdHJpbmctcXVvdGUtYmluYXJ5Lmh0bWwKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMC4uNjlmNmY1MwotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRl
c3RzL2Zhc3QvY3NzL3N0cmluZy1xdW90ZS1iaW5hcnkuaHRtbApAQCAtMCwwICsxLDEzIEBACis8
IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL0lFVEYvL0RURCBIVE1MLy9FTiI+Cis8aHRtbD4KKzxo
ZWFkPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi9qcy9yZXNvdXJjZXMvanMtdGVz
dC1zdHlsZS5jc3MiPgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5q
cyI+PC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keT4KKzxwIGlkPSJkZXNjcmlwdGlvbiI+PC9wPgor
PGRpdiBpZD0iY29uc29sZSI+PC9kaXY+Cis8c2NyaXB0IHNyYz0ic2NyaXB0LXRlc3RzL3N0cmlu
Zy1xdW90ZS1iaW5hcnkuanMiPjwvc2NyaXB0PgorPHNjcmlwdCBzcmM9Ii4uL2pzL3Jlc291cmNl
cy9qcy10ZXN0LXBvc3QuanMiPjwvc2NyaXB0PgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvZmFzdC9qcy9yZXNvdXJjZXMvanMtdGVzdC1wcmUuanMgYi9MYXlvdXRU
ZXN0cy9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcwppbmRleCAzZGY2MWRlLi5lY2Y1
ZmQwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXBy
ZS5qcworKysgYi9MYXlvdXRUZXN0cy9mYXN0L2pzL3Jlc291cmNlcy9qcy10ZXN0LXByZS5qcwpA
QCAtMTIyLDcgKzEyMiw3IEBAIGZ1bmN0aW9uIHNob3VsZEJlTnVsbChfYSkgeyBzaG91bGRCZShf
YSwgIm51bGwiKTsgfQogCiBmdW5jdGlvbiBzaG91bGRCZUVxdWFsVG9TdHJpbmcoYSwgYikKIHsK
LSAgdmFyIHVuZXZhbGVkU3RyaW5nID0gJyInICsgYi5yZXBsYWNlKC8iL2csICJcIiIpICsgJyIn
OworICB2YXIgdW5ldmFsZWRTdHJpbmcgPSAnIicgKyBiLnJlcGxhY2UoL1xcL2csICJcXFxcIiku
cmVwbGFjZSgvIi9nLCAiXCIiKSArICciJzsKICAgc2hvdWxkQmUoYSwgdW5ldmFsZWRTdHJpbmcp
OwogfQogCmRpZmYgLS1naXQgYS9XZWJDb3JlL0NoYW5nZUxvZyBiL1dlYkNvcmUvQ2hhbmdlTG9n
CmluZGV4IGZlOGQ5YTQuLjU5ZjcxNTIgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvQ2hhbmdlTG9nCisr
KyBiL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMzQgQEAKKzIwMTAtMDQtMDQgIFl1dGEg
S2l0YW11cmEgIDx5dXRha0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgRXNjYXBlIGNvbnRyb2wgY2hhcmFjdGVycyBpbiBDU1Mg
c3RyaW5nIHZhbHVlIHdoZW4gaXQgaXMgc2VyaWFsaWx6ZWQuCisKKyAgICAgICAgV2hlbiBXZWJL
aXQgc2VyaWFsaXplcyBhIENTUyBzdHJpbmcgdmFsdWUgdGhhdCBjb250YWlucyBiaW5hcnkgY2hh
cmFjdGVycworICAgICAgICAoJ1wwXDFcMicgZm9yIGV4YW1wbGUpLCBpdCBkaWQgbm90IGVzY2Fw
ZSB0aGVzZSBjaGFyYWN0ZXJzLiBBcyBhIHJlc3VsdCwKKyAgICAgICAgdXNlcnMgZ290IChpbnZp
c2libGUpIGNvbnRyb2wgY2hhcmFjdGVycyB0aHJvdWdoIHNjcmlwdHMuIFRoaXMgY2hhbmdlIGZp
eGVzCisgICAgICAgIHRoaXMgaXNzdWUuCisKKyAgICAgICAgQXMgYSBzaWRlIGVmZmVjdCwgdHdv
IHNlcGFyYXRlIGNvZGVzIGZvciBlc2NhcGluZyBDU1Mgc3RyaW5ncyBhcmUgbWVyZ2VkLCBhbmQK
KyAgICAgICAgYmVjb21lIGEgcHVibGljIGZ1bmN0aW9uIChxdW90ZUNTU1N0cmluZykuCisKKyAg
ICAgICAgQ1NTIHN0cmluZyB2YWx1ZSBpcyBub3QgY29ycmVjdGx5IHNlcmlhbGl6ZWQgd2hlbiBp
dCBjb250YWlucyBiaW5hcnkgY2hhcmFjdGVycworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9Mjg5MzgKKworICAgICAgICBUZXN0OiBmYXN0L2Nzcy9zdHJp
bmctcXVvdGUtYmluYXJ5Lmh0bWwKKworICAgICAgICAqIGNzcy9DU1NQYXJzZXIuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6aXNDU1NUb2tlbml6ZXJJZGVudGlmaWVyKToKKyAgICAgICAgKFdlYkNv
cmU6OmlzQ1NTVG9rZW5pemVyVVJMKToKKyAgICAgICAgKFdlYkNvcmU6OnF1b3RlQ1NTU3RyaW5n
KToKKyAgICAgICAgKFdlYkNvcmU6OnF1b3RlQ1NTU3RyaW5nSWZOZWVkZWQpOgorICAgICAgICAo
V2ViQ29yZTo6cXVvdGVDU1NVUkxJZk5lZWRlZCk6CisgICAgICAgICogY3NzL0NTU1BhcnNlci5o
OgorICAgICAgICAqIGNzcy9DU1NQcmltaXRpdmVWYWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpDU1NQcmltaXRpdmVWYWx1ZTo6Y3NzVGV4dCk6CisgICAgICAgICogY3NzL0ZvbnRGYW1pbHlW
YWx1ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGb250RmFtaWx5VmFsdWU6OmNzc1RleHQpOgor
CiAyMDEwLTA0LTAyICBMYXN6bG8gR29tYm9zICA8bGFzemxvLjEuZ29tYm9zQG5va2lhLmNvbT4K
IAogICAgICAgICBVbnJldmlld2VkIGJ1aWxkIGZpeCB3aGVuIGJ1aWxkaW5nIC0tbm8tc3ZnLgpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmNwcCBiL1dlYkNvcmUvY3NzL0NTU1Bh
cnNlci5jcHAKaW5kZXggNzhlZjU3My4uMDRhODg1NSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9jc3Mv
Q1NTUGFyc2VyLmNwcAorKysgYi9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuY3BwCkBAIC02NSw2ICs2
NSw3IEBACiAjaW5jbHVkZSAiUGFpci5oIgogI2luY2x1ZGUgIlJlY3QuaCIKICNpbmNsdWRlICJT
aGFkb3dWYWx1ZS5oIgorI2luY2x1ZGUgIlN0cmluZ0J1ZmZlci5oIgogI2luY2x1ZGUgIldlYktp
dENTU0tleWZyYW1lUnVsZS5oIgogI2luY2x1ZGUgIldlYktpdENTU0tleWZyYW1lc1J1bGUuaCIK
ICNpbmNsdWRlICJXZWJLaXRDU1NUcmFuc2Zvcm1WYWx1ZS5oIgpAQCAtNTQwMCw2ICs1NDAxLDEy
MCBAQCBpbnQgY3NzVmFsdWVLZXl3b3JkSUQoY29uc3QgQ1NTUGFyc2VyU3RyaW5nJiBzdHJpbmcp
CiAgICAgcmV0dXJuIGhhc2hUYWJsZUVudHJ5ID8gaGFzaFRhYmxlRW50cnktPmlkIDogMDsKIH0K
IAorLy8gImlkZW50IiBmcm9tIHRoZSBDU1MgdG9rZW5pemVyLCBtaW51cyBiYWNrc2xhc2gtZXNj
YXBlIHNlcXVlbmNlcworc3RhdGljIGJvb2wgaXNDU1NUb2tlbml6ZXJJZGVudGlmaWVyKGNvbnN0
IFN0cmluZyYgc3RyaW5nKQoreworICAgIGNvbnN0IFVDaGFyKiBwID0gc3RyaW5nLmNoYXJhY3Rl
cnMoKTsKKyAgICBjb25zdCBVQ2hhciogZW5kID0gcCArIHN0cmluZy5sZW5ndGgoKTsKKworICAg
IC8vIC0/CisgICAgaWYgKHAgIT0gZW5kICYmIHBbMF0gPT0gJy0nKQorICAgICAgICArK3A7CisK
KyAgICAvLyB7bm1zdGFydH0KKyAgICBpZiAocCA9PSBlbmQgfHwgIShwWzBdID09ICdfJyB8fCBw
WzBdID49IDEyOCB8fCBpc0FTQ0lJQWxwaGEocFswXSkpKQorICAgICAgICByZXR1cm4gZmFsc2U7
CisgICAgKytwOworCisgICAgLy8ge25tY2hhcn0qCisgICAgZm9yICg7IHAgIT0gZW5kOyArK3Ap
IHsKKyAgICAgICAgaWYgKCEocFswXSA9PSAnXycgfHwgcFswXSA9PSAnLScgfHwgcFswXSA+PSAx
MjggfHwgaXNBU0NJSUFscGhhbnVtZXJpYyhwWzBdKSkpCisgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisgICAgfQorCisgICAgcmV0dXJuIHRydWU7Cit9CisKKy8vICJ1cmwiIGZyb20gdGhlIENT
UyB0b2tlbml6ZXIsIG1pbnVzIGJhY2tzbGFzaC1lc2NhcGUgc2VxdWVuY2VzCitzdGF0aWMgYm9v
bCBpc0NTU1Rva2VuaXplclVSTChjb25zdCBTdHJpbmcmIHN0cmluZykKK3sKKyAgICBjb25zdCBV
Q2hhciogcCA9IHN0cmluZy5jaGFyYWN0ZXJzKCk7CisgICAgY29uc3QgVUNoYXIqIGVuZCA9IHAg
KyBzdHJpbmcubGVuZ3RoKCk7CisKKyAgICBmb3IgKDsgcCAhPSBlbmQ7ICsrcCkgeworICAgICAg
ICBVQ2hhciBjID0gcFswXTsKKyAgICAgICAgc3dpdGNoIChjKSB7CisgICAgICAgICAgICBjYXNl
ICchJzoKKyAgICAgICAgICAgIGNhc2UgJyMnOgorICAgICAgICAgICAgY2FzZSAnJCc6CisgICAg
ICAgICAgICBjYXNlICclJzoKKyAgICAgICAgICAgIGNhc2UgJyYnOgorICAgICAgICAgICAgICAg
IGJyZWFrOworICAgICAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgICAgICBpZiAoYyA8ICcq
JykKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworICAgICAgICAgICAgICAgIGlm
IChjIDw9ICd+JykKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAg
aWYgKGMgPCAxMjgpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICAgICAg
fQorICAgIH0KKworICAgIHJldHVybiB0cnVlOworfQorCisvLyBXZSB1c2Ugc2luZ2xlIHF1b3Rl
cyBmb3Igbm93IGJlY2F1c2UgbWFya3VwLmNwcCB1c2VzIGRvdWJsZSBxdW90ZXMuCitTdHJpbmcg
cXVvdGVDU1NTdHJpbmcoY29uc3QgU3RyaW5nJiBzdHJpbmcpCit7CisgICAgLy8gRm9yIGVmZmlj
aWVuY3ksIHdlIGZpcnN0IHByZS1jYWxjdWxhdGUgdGhlIGxlbmd0aCBvZiB0aGUgcXVvdGVkIHN0
cmluZywgdGhlbiB3ZSBidWlsZCB0aGUgYWN0dWFsIG9uZS4KKyAgICAvLyBQbGVhc2Ugc2VlIGJl
bG93IGZvciB0aGUgYWN0dWFsIGxvZ2ljLgorICAgIHVuc2lnbmVkIHF1b3RlZFN0cmluZ1NpemUg
PSAyOyAvLyBUd28gcXVvdGVzIHN1cnJvdW5kaW5nIHRoZSBlbnRpcmUgc3RyaW5nLgorICAgIGJv
b2wgYWZ0ZXJFc2NhcGUgPSBmYWxzZTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgc3Ry
aW5nLmxlbmd0aCgpOyArK2kpIHsKKyAgICAgICAgVUNoYXIgY2ggPSBzdHJpbmdbaV07CisgICAg
ICAgIGlmIChjaCA9PSAnXFwnIHx8IGNoID09ICdcJycpIHsKKyAgICAgICAgICAgIHF1b3RlZFN0
cmluZ1NpemUgKz0gMjsKKyAgICAgICAgICAgIGFmdGVyRXNjYXBlID0gZmFsc2U7CisgICAgICAg
IH0gZWxzZSBpZiAoY2ggPCAweDIwIHx8IGNoID09IDB4N0YpIHsKKyAgICAgICAgICAgIHF1b3Rl
ZFN0cmluZ1NpemUgKz0gMiArIChjaCA+PSAweDEwKTsKKyAgICAgICAgICAgIGFmdGVyRXNjYXBl
ID0gdHJ1ZTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIHF1b3RlZFN0cmluZ1NpemUg
Kz0gMSArIChhZnRlckVzY2FwZSAmJiAoaXNBU0NJSUhleERpZ2l0KGNoKSB8fCBjaCA9PSAnICcp
KTsKKyAgICAgICAgICAgIGFmdGVyRXNjYXBlID0gZmFsc2U7CisgICAgICAgIH0KKyAgICB9CisK
KyAgICBTdHJpbmdCdWZmZXIgYnVmZmVyKHF1b3RlZFN0cmluZ1NpemUpOworICAgIHVuc2lnbmVk
IGluZGV4ID0gMDsKKyAgICBidWZmZXJbaW5kZXgrK10gPSAnXCcnOworICAgIGFmdGVyRXNjYXBl
ID0gZmFsc2U7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IHN0cmluZy5sZW5ndGgoKTsg
KytpKSB7CisgICAgICAgIFVDaGFyIGNoID0gc3RyaW5nW2ldOworICAgICAgICBpZiAoY2ggPT0g
J1xcJyB8fCBjaCA9PSAnXCcnKSB7CisgICAgICAgICAgICBidWZmZXJbaW5kZXgrK10gPSAnXFwn
OworICAgICAgICAgICAgYnVmZmVyW2luZGV4KytdID0gY2g7CisgICAgICAgICAgICBhZnRlckVz
Y2FwZSA9IGZhbHNlOworICAgICAgICB9IGVsc2UgaWYgKGNoIDwgMHgyMCB8fCBjaCA9PSAweDdG
KSB7IC8vIENvbnRyb2wgY2hhcmFjdGVycy4KKyAgICAgICAgICAgIHN0YXRpYyBjb25zdCBjaGFy
IGhleERpZ2l0c1sxN10gPSAiMDEyMzQ1Njc4OWFiY2RlZiI7CisgICAgICAgICAgICBidWZmZXJb
aW5kZXgrK10gPSAnXFwnOworICAgICAgICAgICAgaWYgKGNoID49IDB4MTApCisgICAgICAgICAg
ICAgICAgYnVmZmVyW2luZGV4KytdID0gaGV4RGlnaXRzW2NoID4+IDRdOworICAgICAgICAgICAg
YnVmZmVyW2luZGV4KytdID0gaGV4RGlnaXRzW2NoICYgMHhGXTsKKyAgICAgICAgICAgIGFmdGVy
RXNjYXBlID0gdHJ1ZTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgIC8vIFNwYWNlIGNo
YXJhY3RlciBtYXkgYmUgcmVxdWlyZWQgdG8gc2VwYXJhdGUgYmFja3NsYXNoLWVzY2FwZSBzZXF1
ZW5jZSBhbmQgbm9ybWFsIGNoYXJhY3RlcnMuCisgICAgICAgICAgICBpZiAoYWZ0ZXJFc2NhcGUg
JiYgKGlzQVNDSUlIZXhEaWdpdChjaCkgfHwgY2ggPT0gJyAnKSkKKyAgICAgICAgICAgICAgICBi
dWZmZXJbaW5kZXgrK10gPSAnICc7CisgICAgICAgICAgICBidWZmZXJbaW5kZXgrK10gPSBjaDsK
KyAgICAgICAgICAgIGFmdGVyRXNjYXBlID0gZmFsc2U7CisgICAgICAgIH0KKyAgICB9CisgICAg
YnVmZmVyW2luZGV4KytdID0gJ1wnJzsKKworICAgIEFTU0VSVChxdW90ZWRTdHJpbmdTaXplID09
IGluZGV4KTsKKyAgICByZXR1cm4gU3RyaW5nOjphZG9wdChidWZmZXIpOworfQorCitTdHJpbmcg
cXVvdGVDU1NTdHJpbmdJZk5lZWRlZChjb25zdCBTdHJpbmcmIHN0cmluZykKK3sKKyAgICByZXR1
cm4gaXNDU1NUb2tlbml6ZXJJZGVudGlmaWVyKHN0cmluZykgPyBzdHJpbmcgOiBxdW90ZUNTU1N0
cmluZyhzdHJpbmcpOworfQorCitTdHJpbmcgcXVvdGVDU1NVUkxJZk5lZWRlZChjb25zdCBTdHJp
bmcmIHN0cmluZykKK3sKKyAgICByZXR1cm4gaXNDU1NUb2tlbml6ZXJVUkwoc3RyaW5nKSA/IHN0
cmluZyA6IHF1b3RlQ1NTU3RyaW5nKHN0cmluZyk7Cit9CisKICNkZWZpbmUgWVlfREVDTCBpbnQg
Q1NTUGFyc2VyOjpsZXgoKQogI2RlZmluZSB5eWNvbnN0IGNvbnN0CiB0eXBlZGVmIGludCB5eV9z
dGF0ZV90eXBlOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9jc3MvQ1NTUGFyc2VyLmggYi9XZWJDb3Jl
L2Nzcy9DU1NQYXJzZXIuaAppbmRleCA5YzZhYTM3Li5jYThjNjZhIDEwMDY0NAotLS0gYS9XZWJD
b3JlL2Nzcy9DU1NQYXJzZXIuaAorKysgYi9XZWJDb3JlL2Nzcy9DU1NQYXJzZXIuaApAQCAtMzIw
LDYgKzMyMCwxMCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIENTU1BhcnNlciogbV9w
YXJzZXI7CiAgICAgfTsKIAorICAgIFN0cmluZyBxdW90ZUNTU1N0cmluZyhjb25zdCBTdHJpbmcm
KTsKKyAgICBTdHJpbmcgcXVvdGVDU1NTdHJpbmdJZk5lZWRlZChjb25zdCBTdHJpbmcmKTsKKyAg
ICBTdHJpbmcgcXVvdGVDU1NVUkxJZk5lZWRlZChjb25zdCBTdHJpbmcmKTsKKwogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gQ1NTUGFyc2VyX2gKZGlmZiAtLWdpdCBhL1dlYkNv
cmUvY3NzL0NTU1ByaW1pdGl2ZVZhbHVlLmNwcCBiL1dlYkNvcmUvY3NzL0NTU1ByaW1pdGl2ZVZh
bHVlLmNwcAppbmRleCA1YTcwNTNjLi4yZDJiMGEyIDEwMDY0NAotLS0gYS9XZWJDb3JlL2Nzcy9D
U1NQcmltaXRpdmVWYWx1ZS5jcHAKKysrIGIvV2ViQ29yZS9jc3MvQ1NTUHJpbWl0aXZlVmFsdWUu
Y3BwCkBAIC0yMiw2ICsyMiw3IEBACiAjaW5jbHVkZSAiQ1NTUHJpbWl0aXZlVmFsdWUuaCIKIAog
I2luY2x1ZGUgIkNTU0hlbHBlci5oIgorI2luY2x1ZGUgIkNTU1BhcnNlci5oIgogI2luY2x1ZGUg
IkNTU1Byb3BlcnR5TmFtZXMuaCIKICNpbmNsdWRlICJDU1NTdHlsZVNoZWV0LmgiCiAjaW5jbHVk
ZSAiQ1NTVmFsdWVLZXl3b3Jkcy5oIgpAQCAtMTQyLDc4ICsxNDMsNiBAQCBzdGF0aWMgY29uc3Qg
QXRvbWljU3RyaW5nJiB2YWx1ZU9yUHJvcGVydHlOYW1lKGludCB2YWx1ZU9yUHJvcGVydHlJRCkK
ICAgICByZXR1cm4gbnVsbEF0b207CiB9CiAKLS8vICJpZGVudCIgZnJvbSB0aGUgQ1NTIHRva2Vu
aXplciwgbWludXMgYmFja3NsYXNoLWVzY2FwZSBzZXF1ZW5jZXMKLXN0YXRpYyBib29sIGlzQ1NT
VG9rZW5pemVySWRlbnRpZmllcihjb25zdCBTdHJpbmcmIHN0cmluZykKLXsKLSAgICBjb25zdCBV
Q2hhciogcCA9IHN0cmluZy5jaGFyYWN0ZXJzKCk7Ci0gICAgY29uc3QgVUNoYXIqIGVuZCA9IHAg
KyBzdHJpbmcubGVuZ3RoKCk7Ci0KLSAgICAvLyAtPwotICAgIGlmIChwICE9IGVuZCAmJiBwWzBd
ID09ICctJykKLSAgICAgICAgKytwOwotCi0gICAgLy8ge25tc3RhcnR9Ci0gICAgaWYgKHAgPT0g
ZW5kIHx8ICEocFswXSA9PSAnXycgfHwgcFswXSA+PSAxMjggfHwgaXNBU0NJSUFscGhhKHBbMF0p
KSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICsrcDsKLQotICAgIC8vIHtubWNoYXJ9Kgot
ICAgIGZvciAoOyBwICE9IGVuZDsgKytwKSB7Ci0gICAgICAgIGlmICghKHBbMF0gPT0gJ18nIHx8
IHBbMF0gPT0gJy0nIHx8IHBbMF0gPj0gMTI4IHx8IGlzQVNDSUlBbHBoYW51bWVyaWMocFswXSkp
KQotICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIH0KLQotICAgIHJldHVybiB0cnVlOwot
fQotCi0vLyAidXJsIiBmcm9tIHRoZSBDU1MgdG9rZW5pemVyLCBtaW51cyBiYWNrc2xhc2gtZXNj
YXBlIHNlcXVlbmNlcwotc3RhdGljIGJvb2wgaXNDU1NUb2tlbml6ZXJVUkwoY29uc3QgU3RyaW5n
JiBzdHJpbmcpCi17Ci0gICAgY29uc3QgVUNoYXIqIHAgPSBzdHJpbmcuY2hhcmFjdGVycygpOwot
ICAgIGNvbnN0IFVDaGFyKiBlbmQgPSBwICsgc3RyaW5nLmxlbmd0aCgpOwotCi0gICAgZm9yICg7
IHAgIT0gZW5kOyArK3ApIHsKLSAgICAgICAgVUNoYXIgYyA9IHBbMF07Ci0gICAgICAgIHN3aXRj
aCAoYykgewotICAgICAgICAgICAgY2FzZSAnISc6Ci0gICAgICAgICAgICBjYXNlICcjJzoKLSAg
ICAgICAgICAgIGNhc2UgJyQnOgotICAgICAgICAgICAgY2FzZSAnJSc6Ci0gICAgICAgICAgICBj
YXNlICcmJzoKLSAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgIGRlZmF1bHQ6Ci0g
ICAgICAgICAgICAgICAgaWYgKGMgPCAnKicpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKLSAgICAgICAgICAgICAgICBpZiAoYyA8PSAnficpCi0gICAgICAgICAgICAgICAgICAg
IGJyZWFrOwotICAgICAgICAgICAgICAgIGlmIChjIDwgMTI4KQotICAgICAgICAgICAgICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLSAgICB9Ci0KLSAgICByZXR1cm4gdHJ1ZTsKLX0K
LQotLy8gV2UgdXNlIHNpbmdsZSBxdW90ZXMgZm9yIG5vdyBiZWNhdXNlIG1hcmt1cC5jcHAgdXNl
cyBkb3VibGUgcXVvdGVzLgotc3RhdGljIFN0cmluZyBxdW90ZVN0cmluZyhjb25zdCBTdHJpbmcm
IHN0cmluZykKLXsKLSAgICAvLyBGSVhNRTogQWxzbyBuZWVkIHRvIGVzY2FwZSBjaGFyYWN0ZXJz
IGxpa2UgJ1xuJy4KLSAgICBTdHJpbmcgcyA9IHN0cmluZzsKLSAgICBzLnJlcGxhY2UoJ1xcJywg
IlxcXFwiKTsKLSAgICBzLnJlcGxhY2UoJ1wnJywgIlxcJyIpOwotICAgIHJldHVybiAiJyIgKyBz
ICsgIiciOwotfQotCi1zdGF0aWMgU3RyaW5nIHF1b3RlU3RyaW5nSWZOZWVkZWQoY29uc3QgU3Ry
aW5nJiBzdHJpbmcpCi17Ci0gICAgcmV0dXJuIGlzQ1NTVG9rZW5pemVySWRlbnRpZmllcihzdHJp
bmcpID8gc3RyaW5nIDogcXVvdGVTdHJpbmcoc3RyaW5nKTsKLX0KLQotc3RhdGljIFN0cmluZyBx
dW90ZVVSTElmTmVlZGVkKGNvbnN0IFN0cmluZyYgc3RyaW5nKQotewotICAgIHJldHVybiBpc0NT
U1Rva2VuaXplclVSTChzdHJpbmcpID8gc3RyaW5nIDogcXVvdGVTdHJpbmcoc3RyaW5nKTsKLX0K
LQogQ1NTUHJpbWl0aXZlVmFsdWU6OkNTU1ByaW1pdGl2ZVZhbHVlKCkKICAgICA6IG1fdHlwZSgw
KQogewpAQCAtNzc0LDEwICs3MDMsMTAgQEAgU3RyaW5nIENTU1ByaW1pdGl2ZVZhbHVlOjpjc3NU
ZXh0KCkgY29uc3QKICAgICAgICAgICAgIC8vIEZJWE1FCiAgICAgICAgICAgICBicmVhazsKICAg
ICAgICAgY2FzZSBDU1NfU1RSSU5HOgotICAgICAgICAgICAgdGV4dCA9IHF1b3RlU3RyaW5nSWZO
ZWVkZWQobV92YWx1ZS5zdHJpbmcpOworICAgICAgICAgICAgdGV4dCA9IHF1b3RlQ1NTU3RyaW5n
SWZOZWVkZWQobV92YWx1ZS5zdHJpbmcpOwogICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGNh
c2UgQ1NTX1VSSToKLSAgICAgICAgICAgIHRleHQgPSAidXJsKCIgKyBxdW90ZVVSTElmTmVlZGVk
KG1fdmFsdWUuc3RyaW5nKSArICIpIjsKKyAgICAgICAgICAgIHRleHQgPSAidXJsKCIgKyBxdW90
ZUNTU1VSTElmTmVlZGVkKG1fdmFsdWUuc3RyaW5nKSArICIpIjsKICAgICAgICAgICAgIGJyZWFr
OwogICAgICAgICBjYXNlIENTU19JREVOVDoKICAgICAgICAgICAgIHRleHQgPSB2YWx1ZU9yUHJv
cGVydHlOYW1lKG1fdmFsdWUuaWRlbnQpOwpAQCAtOTA1LDcgKzgzNCw3IEBAIFN0cmluZyBDU1NQ
cmltaXRpdmVWYWx1ZTo6Y3NzVGV4dCgpIGNvbnN0CiAgICAgICAgICAgICBicmVhazsKICAgICAg
ICAgfQogICAgICAgICBjYXNlIENTU19QQVJTRVJfSURFTlRJRklFUjoKLSAgICAgICAgICAgIHRl
eHQgPSBxdW90ZVN0cmluZ0lmTmVlZGVkKG1fdmFsdWUuc3RyaW5nKTsKKyAgICAgICAgICAgIHRl
eHQgPSBxdW90ZUNTU1N0cmluZ0lmTmVlZGVkKG1fdmFsdWUuc3RyaW5nKTsKICAgICAgICAgICAg
IGJyZWFrOwogICAgIH0KICAgICBtX2NhY2hlZENTU1RleHQgPSB0ZXh0OwpkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9jc3MvRm9udEZhbWlseVZhbHVlLmNwcCBiL1dlYkNvcmUvY3NzL0ZvbnRGYW1pbHlW
YWx1ZS5jcHAKaW5kZXggOTBhOGM5ZC4uZWJlOTY0NSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9jc3Mv
Rm9udEZhbWlseVZhbHVlLmNwcAorKysgYi9XZWJDb3JlL2Nzcy9Gb250RmFtaWx5VmFsdWUuY3Bw
CkBAIC0yMSw0NCArMjEsOSBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2luY2x1ZGUgIkZvbnRG
YW1pbHlWYWx1ZS5oIgogCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLS8vIEZJWE1FOiBUaGlzIGFw
cGVhcnMgaWRlbnRpY2FsIHRvIGlzQ1NTVG9rZW5pemVySWRlbnRpZmllciBmcm9tIENTU1ByaW1p
dGl2ZVZhbHVlLmNwcCwgd2Ugc2hvdWxkIHVzZSBhIHNpbmdsZSBmdW5jdGlvbi4KLXN0YXRpYyBi
b29sIGlzVmFsaWRDU1NJZGVudGlmaWVyKGNvbnN0IFN0cmluZyYgc3RyaW5nKQotewotICAgIHVu
c2lnbmVkIGxlbmd0aCA9IHN0cmluZy5sZW5ndGgoKTsKLSAgICBpZiAoIWxlbmd0aCkKLSAgICAg
ICAgcmV0dXJuIGZhbHNlOwotCi0gICAgY29uc3QgVUNoYXIqIGNoYXJhY3RlcnMgPSBzdHJpbmcu
Y2hhcmFjdGVycygpOwotICAgIFVDaGFyIGMgPSBjaGFyYWN0ZXJzWzBdOwotICAgIGlmICghKGMg
PT0gJ18nIHx8IChjID49ICdhJyAmJiBjIDw9ICd6JykgfHwgKGMgPj0gJ0EnICYmIGMgPD0gJ1on
KSB8fCBjID09ICctJyB8fCBjID49IDB4ODApKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAg
ICBmb3IgKHVuc2lnbmVkIGkgPSAxOyBpIDwgbGVuZ3RoOyArK2kpIHsKLSAgICAgICAgYyA9IGNo
YXJhY3RlcnNbaV07Ci0gICAgICAgIGlmICghKGMgPT0gJ18nIHx8IChjID49ICdhJyAmJiBjIDw9
ICd6JykgfHwgKGMgPj0gJ0EnICYmIGMgPD0gJ1onKSB8fCAoYyA+PSAnMCcgJiYgYyA8PSAnOScp
IHx8IGMgPT0gJy0nIHx8IGMgPj0gMHg4MCkpCi0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0g
ICAgfQorI2luY2x1ZGUgIkNTU1BhcnNlci5oIgogCi0gICAgcmV0dXJuIHRydWU7Ci19Ci0KLS8v
IFF1b3RlcyB0aGUgc3RyaW5nIGlmIGl0IG5lZWRzIHF1b3RpbmcuCi0vLyBXZSB1c2Ugc2luZ2xl
IHF1b3RlcyBiZWNhdXNlIHNlcmlhbGl6YXRpb24gY29kZSB1c2VzIGRvdWJsZSBxdW90ZXMsIGFu
ZCBpdCdzIG5pY2UgdG8KLS8vIGF2b2lkIGhhdmluZyB0byB0dXJuIGFsbCB0aGUgcXVvdGUgbWFy
a3MgaW50byAmcXVvdDsgYXMgd2Ugd291bGQgaGF2ZSB0by4KLXN0YXRpYyBTdHJpbmcgcXVvdGVT
dHJpbmdJZk5lZWRlZChjb25zdCBTdHJpbmcmIHN0cmluZykKLXsKLSAgICBpZiAoaXNWYWxpZENT
U0lkZW50aWZpZXIoc3RyaW5nKSkKLSAgICAgICAgcmV0dXJuIHN0cmluZzsKLQotICAgIC8vIEZJ
WE1FOiBBbHNvIG5lZWQgdG8gdHJhbnNmb3JtIGNvbnRyb2wgY2hhcmFjdGVycyAoMDAtMUYpIGlu
dG8gXCBzZXF1ZW5jZXMuCi0gICAgLy8gRklYTUU6IFRoaXMgaXMgaW5lZmZpY2llbnQgLS0gc2hv
dWxkIHVzZSBhIFZlY3RvcjxVQ2hhcj4gaW5zdGVhZC4KLSAgICBTdHJpbmcgcXVvdGVkU3RyaW5n
ID0gc3RyaW5nOwotICAgIHF1b3RlZFN0cmluZy5yZXBsYWNlKCdcXCcsICJcXFxcIik7Ci0gICAg
cXVvdGVkU3RyaW5nLnJlcGxhY2UoJ1wnJywgIlxcJyIpOwotICAgIHJldHVybiAiJyIgKyBxdW90
ZWRTdHJpbmcgKyAiJyI7Ci19CituYW1lc3BhY2UgV2ViQ29yZSB7CiAKIEZvbnRGYW1pbHlWYWx1
ZTo6Rm9udEZhbWlseVZhbHVlKGNvbnN0IFN0cmluZyYgZmFtaWx5TmFtZSkKICAgICA6IENTU1By
aW1pdGl2ZVZhbHVlKFN0cmluZygpLCBDU1NfU1RSSU5HKQpAQCAtMTAxLDcgKzY2LDcgQEAgdm9p
ZCBGb250RmFtaWx5VmFsdWU6OmFwcGVuZFNwYWNlU2VwYXJhdGVkKGNvbnN0IFVDaGFyKiBjaGFy
YWN0ZXJzLCB1bnNpZ25lZCBsZW4KIAogU3RyaW5nIEZvbnRGYW1pbHlWYWx1ZTo6Y3NzVGV4dCgp
IGNvbnN0CiB7Ci0gICAgcmV0dXJuIHF1b3RlU3RyaW5nSWZOZWVkZWQobV9mYW1pbHlOYW1lKTsK
KyAgICByZXR1cm4gcXVvdGVDU1NTdHJpbmdJZk5lZWRlZChtX2ZhbWlseU5hbWUpOwogfQogCiB9
Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>