<?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>50122</bug_id>
          
          <creation_ts>2010-11-27 09:14:23 -0800</creation_ts>
          <short_desc>Add an overload to base64Encode with String output</short_desc>
          <delta_ts>2011-01-23 15:17:40 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebCore Misc.</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Patrick R. Gansterer">paroga</reporter>
          <assigned_to name="Patrick R. Gansterer">paroga</assigned_to>
          <cc>buildbot</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ddkilzer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>314131</commentid>
    <comment_count>0</comment_count>
    <who name="Patrick R. Gansterer">paroga</who>
    <bug_when>2010-11-27 09:14:23 -0800</bug_when>
    <thetext>see patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>314134</commentid>
    <comment_count>1</comment_count>
      <attachid>74960</attachid>
    <who name="Patrick R. Gansterer">paroga</who>
    <bug_when>2010-11-27 09:20:53 -0800</bug_when>
    <thetext>Created attachment 74960
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>314136</commentid>
    <comment_count>2</comment_count>
      <attachid>74961</attachid>
    <who name="Patrick R. Gansterer">paroga</who>
    <bug_when>2010-11-27 09:30:17 -0800</bug_when>
    <thetext>Created attachment 74961
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>320959</commentid>
    <comment_count>3</comment_count>
      <attachid>74961</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2010-12-13 00:31:48 -0800</bug_when>
    <thetext>Comment on attachment 74961
Patch

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

Yeah.  Seems we just want to return the String.  All the callsites want that. :)

&gt; WebCore/platform/text/Base64.h:40
&gt; +void base64Encode(const char*, unsigned, String&amp;, bool insertLFs = false);

Why not just return the String?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>326934</commentid>
    <comment_count>4</comment_count>
      <attachid>77466</attachid>
    <who name="Patrick R. Gansterer">paroga</who>
    <bug_when>2010-12-26 16:07:14 -0800</bug_when>
    <thetext>Created attachment 77466
Alternative Patch

(In reply to comment #3)
&gt; (From update of attachment 74961 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=74961&amp;action=review
&gt; 
&gt; Yeah.  Seems we just want to return the String.  All the callsites want that. :)
&gt; 
&gt; &gt; WebCore/platform/text/Base64.h:40
&gt; &gt; +void base64Encode(const char*, unsigned, String&amp;, bool insertLFs = false);
&gt; 
&gt; Why not just return the String?
I wanted to keep all the callsites consistent (pass the output argument instead of returning), but it makes sense to return String directly</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>326935</commentid>
    <comment_count>5</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2010-12-26 16:29:59 -0800</bug_when>
    <thetext>Attachment 77466 did not build on win:
Build output: http://queues.webkit.org/results/7253194</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>326936</commentid>
    <comment_count>6</comment_count>
      <attachid>77467</attachid>
    <who name="Patrick R. Gansterer">paroga</who>
    <bug_when>2010-12-26 16:39:37 -0800</bug_when>
    <thetext>Created attachment 77467
Alternative Patch

Fixed Windows Build</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>338699</commentid>
    <comment_count>7</comment_count>
      <attachid>74961</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2011-01-23 09:19:28 -0800</bug_when>
    <thetext>Comment on attachment 74961
Patch

r-

I think base64Encode() should return a String instead of taking it as an out parameter.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>338700</commentid>
    <comment_count>8</comment_count>
      <attachid>77467</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2011-01-23 09:40:18 -0800</bug_when>
    <thetext>Comment on attachment 77467
Alternative Patch

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

r=me with the add base64Encode(const String&amp;) method and fixing the DOMWindow.cpp changes.

&gt; WebCore/page/DOMWindow.cpp:978
&gt; +    CString in = stringToEncode.latin1();
&gt; +    return base64Encode(in.data(), in.length());

Converting the string to latin1() here doesn&apos;t seem correct.  Why don&apos;t you do this instead?

    return base64Encode(stringToEncode.data(), stringToEncode.length());

To be honest, there seems to be a few cases where you just want to encode another String, too, so I think you should add an inline convenience method for these cases (to make the code more readable):

    String base64Encode(const String&amp; in, bool insertLFs = false) { return base64Encode(in.data(), in.length(), insertLFs); }

Then the above just becomes:

    return base64Encode(stringToEncode);

&gt; WebCore/platform/network/cf/ResourceHandleCFNet.cpp:128
&gt; +    return base64Encode(unencodedString.data(), unencodedString.length());

return base64Encode(unencodedString);

&gt; WebCore/platform/network/mac/ResourceHandleMac.mm:166
&gt; +    return base64Encode(unencodedString.data(), unencodedString.length());

return base64Encode(unencodedString);</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>338704</commentid>
    <comment_count>9</comment_count>
      <attachid>79868</attachid>
    <who name="Patrick R. Gansterer">paroga</who>
    <bug_when>2011-01-23 10:39:19 -0800</bug_when>
    <thetext>Created attachment 79868
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>338705</commentid>
    <comment_count>10</comment_count>
    <who name="Patrick R. Gansterer">paroga</who>
    <bug_when>2011-01-23 10:43:10 -0800</bug_when>
    <thetext>(In reply to comment #8)
&gt; r=me with the add base64Encode(const String&amp;) method and fixing the DOMWindow.cpp changes.
I don&apos;t think that your proposed change is correct, so can you pleas have an other look at this patch.

&gt; &gt; WebCore/page/DOMWindow.cpp:978
&gt; &gt; +    CString in = stringToEncode.latin1();
&gt; &gt; +    return base64Encode(in.data(), in.length());
&gt; 
&gt; Converting the string to latin1() here doesn&apos;t seem correct.  Why don&apos;t you do this instead?
&gt; 
&gt;     return base64Encode(stringToEncode.data(), stringToEncode.length());
String::data() returns UChar instead of char ;-)
String::latin1() returns char. The valid-check is done in the code lines before.

&gt; To be honest, there seems to be a few cases where you just want to encode another String, too, so I think you should add an inline convenience method for these cases (to make the code more readable):
I also inlined one of the decode functions...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>338708</commentid>
    <comment_count>11</comment_count>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2011-01-23 11:07:01 -0800</bug_when>
    <thetext>(In reply to comment #10)
&gt; (In reply to comment #8)
&gt; &gt; r=me with the add base64Encode(const String&amp;) method and fixing the DOMWindow.cpp changes.
&gt; I don&apos;t think that your proposed change is correct, so can you pleas have an other look at this patch.

Thank you!

&gt; &gt; &gt; WebCore/page/DOMWindow.cpp:978
&gt; &gt; &gt; +    CString in = stringToEncode.latin1();
&gt; &gt; &gt; +    return base64Encode(in.data(), in.length());
&gt; &gt; 
&gt; &gt; Converting the string to latin1() here doesn&apos;t seem correct.  Why don&apos;t you do this instead?
&gt; &gt; 
&gt; &gt;     return base64Encode(stringToEncode.data(), stringToEncode.length());
&gt; String::data() returns UChar instead of char ;-)
&gt; String::latin1() returns char. The valid-check is done in the code lines before.

Thanks, didn&apos;t see that when I looked at the source code before.

&gt; &gt; To be honest, there seems to be a few cases where you just want to encode another String, too, so I think you should add an inline convenience method for these cases (to make the code more readable):
&gt; I also inlined one of the decode functions...

Will do!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>338711</commentid>
    <comment_count>12</comment_count>
      <attachid>79868</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2011-01-23 11:14:42 -0800</bug_when>
    <thetext>Comment on attachment 79868
Patch

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

Patch seems OK as is, but I think it could be refined a bit more.

&gt; Source/WebCore/page/DOMWindow.cpp:987
&gt; +    // String::latin1() will return character values in the range 0..255.

This comment is oblique. To some it might be helpful, but to me it seems that it makes a statement about the behavior of the latin1 function without making clear why that’s relevant here.

A better comment would be one that points out that since the isSafeToConvertCharList has already checked for non-Latin-1 characters so we are guaranteed all that characters are in the Latin-1 range and so we can call latin1() without losing anything. Or a comment that says something about how the desired behavior  of the atob function is to base-64-encode only Latin-1 characters as single bytes, and so that’s why we want to call latin1(). Or no comment at all.

I also think that the isSafeToConvertCharList should be probably be renamed isAllLatin1. Or we could come up with a new term like singleByteCharacter and use it in functions like latin1() throughout the WebKit project.

&gt; Source/WebCore/platform/graphics/skia/FontCustomPlatformData.cpp:115
&gt;  static String createUniqueFontName()

It’s not good that we have three identical copies of this function. Not your fault, though.

&gt; Source/WebCore/platform/network/cf/ResourceHandleCFNet.cpp:127
&gt;  static String encodeBasicAuthorization(const String&amp; user, const String&amp; password)

It’s not good that we have two identical copies of this function. Not your fault, though.

&gt; Source/WebCore/platform/network/cf/ResourceHandleCFNet.cpp:130
&gt;      CString unencodedString = (user + &quot;:&quot; + password).utf8();
&gt; -    Vector&lt;char&gt; unencoded(unencodedString.length());
&gt; -    std::copy(unencodedString.data(), unencodedString.data() + unencodedString.length(), unencoded.begin());
&gt; -    Vector&lt;char&gt; encoded;
&gt; -    base64Encode(unencoded, encoded);
&gt; -    return String(encoded.data(), encoded.size());
&gt; +    return base64Encode(unencodedString);

No need for a local variable any more. This would read better in a single line.

&gt; Source/WebCore/platform/text/Base64.cpp:64
&gt; +template&lt;typename T&gt;
&gt; +static inline void base64EncodeInternal(const char* data, unsigned len, Vector&lt;T&gt;&amp; out, bool insertLFs)

I seems a bit awkward to have to compile a whole extra copy of this entire function just to avoid copying from a char vector into a UChar vector. It does take less memory allocation at runtime though. I’m ambivalent about it, I guess.

&gt; Source/WebCore/platform/text/Base64.cpp:125
&gt; +String base64Encode(const char* data, unsigned len, bool insertLFs)

How about using the word “length” instead of the abbreviation “len”?

&gt; Source/WebCore/platform/text/Base64.cpp:127
&gt; +    Vector&lt;UChar&gt; out;

I don’t think “out” is a great name even though it’s used elsewhere in the file. How about “result”?

&gt; Source/WebCore/platform/text/Base64.cpp:128
&gt; +    base64EncodeInternal&lt;UChar&gt;(data, len, out, insertLFs);

You should not need to specify &lt;UChar&gt; here. Could you try without it?

&gt; Source/WebCore/platform/text/Base64.cpp:132
&gt; +void base64Encode(const char* data, unsigned len, Vector&lt;char&gt;&amp; out, bool insertLFs)

How about using the word “length” instead of the abbreviation “len”?

&gt; Source/WebCore/platform/text/Base64.cpp:134
&gt; +    base64EncodeInternal&lt;char&gt;(data, len, out, insertLFs);

You should not need to specify &lt;char&gt; here. Could you try without it?

&gt; Source/WebCore/platform/text/Base64.cpp:138
&gt; +}
&gt; +
&gt; +
&gt;  bool base64Decode(const Vector&lt;char&gt;&amp; in, Vector&lt;char&gt;&amp; out, Base64DecodePolicy policy)

Just one blank line between functions, not two.

&gt; Source/WebCore/platform/text/Base64.h:43
&gt; -void base64Encode(const Vector&lt;char&gt;&amp;, Vector&lt;char&gt;&amp;, bool insertLFs = false);
&gt;  void base64Encode(const char*, unsigned, Vector&lt;char&gt;&amp;, bool insertLFs = false);
&gt; +inline void base64Encode(const Vector&lt;char&gt;&amp; in, Vector&lt;char&gt;&amp; out, bool insertLFs = false) { base64Encode(in.data(), in.size(), out, insertLFs); }
&gt; +inline void base64Encode(const CString&amp; in, Vector&lt;char&gt;&amp; out, bool insertLFs = false) { base64Encode(in.data(), in.length(), out, insertLFs); }
&gt; +String base64Encode(const char*, unsigned, bool insertLFs = false);
&gt; +inline String base64Encode(const Vector&lt;char&gt;&amp; in, bool insertLFs = false) { return base64Encode(in.data(), in.size(), insertLFs); }
&gt; +inline String base64Encode(const CString&amp; in, bool insertLFs = false) { return base64Encode(in.data(), in.length(), insertLFs); }

The insertLFs argument suffers from the same unreadable boolean constant argument problem we’ve encountered elsewhere. The true or false is unnecessarily mysterious at call sites. We should probably change it into an enum, although that’s not directly related to this patch.

The inline function bodies make it a little harder to read the header. The inlines, extra argument names, and function bodies distract from the list of functions you can call. I’d slightly prefer putting the inline function definitions at the end of the file after all the function declarations. Makes it a little easier to find the function you want to use with fewer distractions.

What do you think?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>338723</commentid>
    <comment_count>13</comment_count>
      <attachid>79870</attachid>
    <who name="Patrick R. Gansterer">paroga</who>
    <bug_when>2011-01-23 12:09:55 -0800</bug_when>
    <thetext>Created attachment 79870
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>338735</commentid>
    <comment_count>14</comment_count>
      <attachid>79870</attachid>
    <who name="David Kilzer (:ddkilzer)">ddkilzer</who>
    <bug_when>2011-01-23 12:50:13 -0800</bug_when>
    <thetext>Comment on attachment 79870
Patch

r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>338770</commentid>
    <comment_count>15</comment_count>
      <attachid>79870</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-01-23 15:17:34 -0800</bug_when>
    <thetext>Comment on attachment 79870
Patch

Clearing flags on attachment: 79870

Committed r76472: &lt;http://trac.webkit.org/changeset/76472&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>338771</commentid>
    <comment_count>16</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2011-01-23 15:17:40 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>74960</attachid>
            <date>2010-11-27 09:20:53 -0800</date>
            <delta_ts>2010-11-27 09:30:17 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-50122.patch</filename>
            <type>text/plain</type>
            <size>10766</size>
            <attacher name="Patrick R. Gansterer">paroga</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MmNiZWYwNC4uZmVhYzQ4NCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMyBAQAorMjAxMC0xMS0yNyAgUGF0cmljayBHYW5z
dGVyZXIgIDxwYXJvZ2FAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBBZGQgYW4gb3ZlcmxvYWQgdG8gYmFzZTY0RW5jb2RlIHdpdGgg
U3RyaW5nIG91dHB1dAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NTAxMjIKKworICAgICAgICBBdm9pZCBhZGRpdGlvbmFsIG1hbGxvYyArIG1lbWNweSB3
aGVuIG91dHB1dCBuZWVkcyB0byBiZSBhIFN0cmluZy4KKworICAgICAgICAqIGluc3BlY3Rvci9J
bnNwZWN0b3JSZXNvdXJjZUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclJl
c291cmNlQWdlbnQ6OnJlc291cmNlQ29udGVudEJhc2U2NCk6CisgICAgICAgICogcGFnZS9ET01X
aW5kb3cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NV2luZG93OjpidG9hKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9za2lhL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Y3JlYXRlVW5pcXVlRm9udE5hbWUpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmNyZWF0ZVVuaXF1ZUZvbnROYW1lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93
aW5jZS9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0
ZVVuaXF1ZUZvbnROYW1lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNl
SGFuZGxlQ0ZOZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZW5jb2RlQmFzaWNBdXRob3JpemF0
aW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZUhhbmRsZU1hYy5t
bToKKyAgICAgICAgKFdlYkNvcmU6OmVuY29kZUJhc2ljQXV0aG9yaXphdGlvbik6CisgICAgICAg
ICogcGxhdGZvcm0vdGV4dC9CYXNlNjQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6YmFzZTY0RW5j
b2RlKToKKyAgICAgICAgKFdlYkNvcmU6OmJhc2U2NEVuY29kZUludGVybmFsKToKKyAgICAgICAg
KiBwbGF0Zm9ybS90ZXh0L0Jhc2U2NC5oOgorICAgICAgICAqIHBsYXRmb3JtL3dpbmNlL0tleWdl
bldpbkNFLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkNvcmU6OnNpZ25lZFB1YmxpY0tleUFu
ZENoYWxsZW5nZVN0cmluZyk6CisKIDIwMTAtMTEtMjYgIFJvYiBCdWlzICA8cndsYnVpc0BnbWFp
bC5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gRnJhc2VyLgpkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5jcHAgYi9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmNwcAppbmRleCA5ZGFiMjRhLi5lMzY0YjM5
IDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmNw
cAorKysgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmNwcApAQCAt
OTMsOCArOTMsNyBAQCBib29sIEluc3BlY3RvclJlc291cmNlQWdlbnQ6OnJlc291cmNlQ29udGVu
dEJhc2U2NChGcmFtZSogZnJhbWUsIGNvbnN0IEtVUkwmIHVybAogICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgfQogCi0gICAgYmFzZTY0RW5jb2RlKGRhdGEtPmJ1ZmZlcigpLCBvdXQpOwotICAg
ICpyZXN1bHQgPSBTdHJpbmcob3V0LmRhdGEoKSwgb3V0LnNpemUoKSk7CisgICAgYmFzZTY0RW5j
b2RlKGRhdGEtPmJ1ZmZlcigpLCAqcmVzdWx0KTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAgYi9XZWJDb3JlL3BhZ2UvRE9NV2lu
ZG93LmNwcAppbmRleCBlYmIzZGI1Li44YTBmNGUwIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BhZ2Uv
RE9NV2luZG93LmNwcAorKysgYi9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcApAQCAtOTg0LDEz
ICs5ODQsMTAgQEAgU3RyaW5nIERPTVdpbmRvdzo6YnRvYShjb25zdCBTdHJpbmcmIHN0cmluZ1Rv
RW5jb2RlLCBFeGNlcHRpb25Db2RlJiBlYykKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogICAg
IH0KIAotICAgIFZlY3RvcjxjaGFyPiBpbjsKLSAgICBpbi5hcHBlbmQoc3RyaW5nVG9FbmNvZGUu
Y2hhcmFjdGVycygpLCBzdHJpbmdUb0VuY29kZS5sZW5ndGgoKSk7Ci0gICAgVmVjdG9yPGNoYXI+
IG91dDsKLQotICAgIGJhc2U2NEVuY29kZShpbiwgb3V0KTsKLQotICAgIHJldHVybiBTdHJpbmco
b3V0LmRhdGEoKSwgb3V0LnNpemUoKSk7CisgICAgQ1N0cmluZyBpbiA9IHN0cmluZ1RvRW5jb2Rl
LmxhdGluMSgpOworICAgIFN0cmluZyBvdXQ7CisgICAgYmFzZTY0RW5jb2RlKGluLmRhdGEoKSwg
aW4ubGVuZ3RoKCksIG91dCk7CisgICAgcmV0dXJuIG91dDsKIH0KIAogU3RyaW5nIERPTVdpbmRv
dzo6YXRvYihjb25zdCBTdHJpbmcmIGVuY29kZWRTdHJpbmcsIEV4Y2VwdGlvbkNvZGUmIGVjKQpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL0ZvbnRDdXN0b21QbGF0
Zm9ybURhdGEuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL0ZvbnRDdXN0b21Q
bGF0Zm9ybURhdGEuY3BwCmluZGV4IDJlYTU2OGIuLjg3ZDYzYTEgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcAorKysg
Yi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5j
cHAKQEAgLTExNCwxMyArMTE0LDEzIEBAIEZvbnRQbGF0Zm9ybURhdGEgRm9udEN1c3RvbVBsYXRm
b3JtRGF0YTo6Zm9udFBsYXRmb3JtRGF0YShpbnQgc2l6ZSwgYm9vbCBib2xkLCBiCiAvLyBub3Qg
YWxsb3cgYWNjZXNzIGZyb20gQ1NTLgogc3RhdGljIFN0cmluZyBjcmVhdGVVbmlxdWVGb250TmFt
ZSgpCiB7Ci0gICAgVmVjdG9yPGNoYXI+IGZvbnRVdWlkKHNpemVvZihHVUlEKSk7Ci0gICAgQ29D
cmVhdGVHdWlkKHJlaW50ZXJwcmV0X2Nhc3Q8R1VJRCo+KGZvbnRVdWlkLmRhdGEoKSkpOworICAg
IEdVSUQgZm9udFV1aWQ7CisgICAgQ29DcmVhdGVHdWlkKCZmb250VXVpZCk7CiAKLSAgICBWZWN0
b3I8Y2hhcj4gZm9udE5hbWVWZWN0b3I7Ci0gICAgYmFzZTY0RW5jb2RlKGZvbnRVdWlkLCBmb250
TmFtZVZlY3Rvcik7Ci0gICAgQVNTRVJUKGZvbnROYW1lVmVjdG9yLnNpemUoKSA8IExGX0ZBQ0VT
SVpFKTsKLSAgICByZXR1cm4gU3RyaW5nKGZvbnROYW1lVmVjdG9yLmRhdGEoKSwgZm9udE5hbWVW
ZWN0b3Iuc2l6ZSgpKTsKKyAgICBTdHJpbmcgZm9udE5hbWU7CisgICAgYmFzZTY0RW5jb2RlKHJl
aW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGZvbnRVdWlkKSwgc2l6ZW9mKGZvbnRVdWlkKSwgZm9udE5h
bWUpOworICAgIEFTU0VSVChmb250TmFtZS5sZW5ndGgoKSA8IExGX0ZBQ0VTSVpFKTsKKyAgICBy
ZXR1cm4gZm9udE5hbWU7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAgYi9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcAppbmRleCA5Y2FlOTli
Li42YWQyNzRhIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250
Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dp
bi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcApAQCAtMTU0LDEzICsxNTQsMTMgQEAgc3RhdGlj
IHVuc2lnbmVkIGxvbmcgV0lOQVBJViByZWFkRW1iZWRQcm9jKHZvaWQqIHN0cmVhbSwgdm9pZCog
YnVmZmVyLCB1bnNpZ25lZAogLy8gbm90IGFsbG93IGFjY2VzcyBmcm9tIENTUy4KIHN0YXRpYyBT
dHJpbmcgY3JlYXRlVW5pcXVlRm9udE5hbWUoKQogewotICAgIFZlY3RvcjxjaGFyPiBmb250VXVp
ZChzaXplb2YoR1VJRCkpOwotICAgIENvQ3JlYXRlR3VpZChyZWludGVycHJldF9jYXN0PEdVSUQq
Pihmb250VXVpZC5kYXRhKCkpKTsKKyAgICBHVUlEIGZvbnRVdWlkOworICAgIENvQ3JlYXRlR3Vp
ZCgmZm9udFV1aWQpOwogCi0gICAgVmVjdG9yPGNoYXI+IGZvbnROYW1lVmVjdG9yOwotICAgIGJh
c2U2NEVuY29kZShmb250VXVpZCwgZm9udE5hbWVWZWN0b3IpOwotICAgIEFTU0VSVChmb250TmFt
ZVZlY3Rvci5zaXplKCkgPCBMRl9GQUNFU0laRSk7Ci0gICAgcmV0dXJuIFN0cmluZyhmb250TmFt
ZVZlY3Rvci5kYXRhKCksIGZvbnROYW1lVmVjdG9yLnNpemUoKSk7CisgICAgU3RyaW5nIGZvbnRO
YW1lOworICAgIGJhc2U2NEVuY29kZShyZWludGVycHJldF9jYXN0PGNoYXIqPihmb250VXVpZCks
IHNpemVvZihmb250VXVpZCksIGZvbnROYW1lKTsKKyAgICBBU1NFUlQoZm9udE5hbWUubGVuZ3Ro
KCkgPCBMRl9GQUNFU0laRSk7CisgICAgcmV0dXJuIGZvbnROYW1lOwogfQogCiBGb250Q3VzdG9t
UGxhdGZvcm1EYXRhKiBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKFNoYXJlZEJ1ZmZlciog
YnVmZmVyKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW5jZS9Gb250
Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luY2Uv
Rm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAKaW5kZXggZjYxYWU4ZS4uNjRkZDA4MiAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW5jZS9Gb250Q3VzdG9tUGxhdGZvcm1E
YXRhLmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbmNlL0ZvbnRDdXN0b21Q
bGF0Zm9ybURhdGEuY3BwCkBAIC01OSwxNiArNTksMTUgQEAgRm9udFBsYXRmb3JtRGF0YSBGb250
Q3VzdG9tUGxhdGZvcm1EYXRhOjpmb250UGxhdGZvcm1EYXRhKGludCBzaXplLCBib29sIGJvbGQs
IGIKIC8vIG5vdCBhbGxvdyBhY2Nlc3MgZnJvbSBDU1MuCiBzdGF0aWMgU3RyaW5nIGNyZWF0ZVVu
aXF1ZUZvbnROYW1lKCkKIHsKLSAgICBWZWN0b3I8Y2hhcj4gZm9udFV1aWQoc2l6ZW9mKEdVSUQp
KTsKKyAgICBHVUlEIGZvbnRVdWlkOwogCi0gICAgdW5zaWduZWQgaW50KiBwdHIgPSByZWludGVy
cHJldF9jYXN0PHVuc2lnbmVkIGludCo+KGZvbnRVdWlkLmRhdGEoKSk7CisgICAgdW5zaWduZWQg
aW50KiBwdHIgPSByZWludGVycHJldF9jYXN0PHVuc2lnbmVkIGludCo+KCZmb250VXVpZCk7CiAg
ICAgZm9yIChpbnQgaSA9IDA7IGkgPCBzaXplb2YoR1VJRCkgLyBzaXplb2YoaW50KSA7ICsraSkK
ICAgICAgICAgKihwdHIgKyBpKSA9IHN0YXRpY19jYXN0PHVuc2lnbmVkIGludD4ocmFuZG9tTnVt
YmVyKCkgKiAoc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpICsgMS4wKSk7CiAK
LSAgICBWZWN0b3I8Y2hhcj4gZm9udE5hbWVWZWN0b3I7Ci0gICAgYmFzZTY0RW5jb2RlKGZvbnRV
dWlkLCBmb250TmFtZVZlY3Rvcik7Ci0gICAgQVNTRVJUKGZvbnROYW1lVmVjdG9yLnNpemUoKSA8
IExGX0ZBQ0VTSVpFKTsKLSAgICBTdHJpbmcgZm9udE5hbWUoZm9udE5hbWVWZWN0b3IuZGF0YSgp
LCBmb250TmFtZVZlY3Rvci5zaXplKCkpOworICAgIFN0cmluZyBmb250TmFtZTsKKyAgICBiYXNl
NjRFbmNvZGUocmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oZm9udFV1aWQpLCBzaXplb2YoZm9udFV1
aWQpLCBmb250TmFtZSk7CisgICAgQVNTRVJUKGZvbnROYW1lLmxlbmd0aCgpIDwgTEZfRkFDRVNJ
WkUpOwogICAgIHJldHVybiBmb250TmFtZS5yZXBsYWNlKCcvJywgJ18nKTsKIH0KIApkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZOZXQuY3Bw
IGIvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZOZXQuY3BwCmlu
ZGV4IGU0OGJkMmQuLmZlZmQwMDMgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jZi9SZXNvdXJjZUhhbmRsZUNGTmV0LmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY2YvUmVzb3VyY2VIYW5kbGVDRk5ldC5jcHAKQEAgLTEyNyw5ICsxMjcsOSBAQCBzdGF0aWMg
U3RyaW5nIGVuY29kZUJhc2ljQXV0aG9yaXphdGlvbihjb25zdCBTdHJpbmcmIHVzZXIsIGNvbnN0
IFN0cmluZyYgcGFzc3dvcgogICAgIENTdHJpbmcgdW5lbmNvZGVkU3RyaW5nID0gKHVzZXIgKyAi
OiIgKyBwYXNzd29yZCkudXRmOCgpOwogICAgIFZlY3RvcjxjaGFyPiB1bmVuY29kZWQodW5lbmNv
ZGVkU3RyaW5nLmxlbmd0aCgpKTsKICAgICBzdGQ6OmNvcHkodW5lbmNvZGVkU3RyaW5nLmRhdGEo
KSwgdW5lbmNvZGVkU3RyaW5nLmRhdGEoKSArIHVuZW5jb2RlZFN0cmluZy5sZW5ndGgoKSwgdW5l
bmNvZGVkLmJlZ2luKCkpOwotICAgIFZlY3RvcjxjaGFyPiBlbmNvZGVkOworICAgIFN0cmluZyBl
bmNvZGVkOwogICAgIGJhc2U2NEVuY29kZSh1bmVuY29kZWQsIGVuY29kZWQpOwotICAgIHJldHVy
biBTdHJpbmcoZW5jb2RlZC5kYXRhKCksIGVuY29kZWQuc2l6ZSgpKTsKKyAgICByZXR1cm4gZW5j
b2RlZDsKIH0KIAogQ0ZVUkxSZXF1ZXN0UmVmIHdpbGxTZW5kUmVxdWVzdChDRlVSTENvbm5lY3Rp
b25SZWYgY29ubiwgQ0ZVUkxSZXF1ZXN0UmVmIGNmUmVxdWVzdCwgQ0ZVUkxSZXNwb25zZVJlZiBj
ZlJlZGlyZWN0UmVzcG9uc2UsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCmRpZmYgLS1naXQgYS9X
ZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291cmNlSGFuZGxlTWFjLm1tIGIvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZUhhbmRsZU1hYy5tbQppbmRleCBkYWVjMzY2
Li4yYTE2Yjk5IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291
cmNlSGFuZGxlTWFjLm1tCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3Vy
Y2VIYW5kbGVNYWMubW0KQEAgLTE2NSw5ICsxNjUsOSBAQCBzdGF0aWMgU3RyaW5nIGVuY29kZUJh
c2ljQXV0aG9yaXphdGlvbihjb25zdCBTdHJpbmcmIHVzZXIsIGNvbnN0IFN0cmluZyYgcGFzc3dv
cgogICAgIENTdHJpbmcgdW5lbmNvZGVkU3RyaW5nID0gKHVzZXIgKyAiOiIgKyBwYXNzd29yZCku
dXRmOCgpOwogICAgIFZlY3RvcjxjaGFyPiB1bmVuY29kZWQodW5lbmNvZGVkU3RyaW5nLmxlbmd0
aCgpKTsKICAgICBzdGQ6OmNvcHkodW5lbmNvZGVkU3RyaW5nLmRhdGEoKSwgdW5lbmNvZGVkU3Ry
aW5nLmRhdGEoKSArIHVuZW5jb2RlZFN0cmluZy5sZW5ndGgoKSwgdW5lbmNvZGVkLmJlZ2luKCkp
OwotICAgIFZlY3RvcjxjaGFyPiBlbmNvZGVkOworICAgIFN0cmluZyBlbmNvZGVkOwogICAgIGJh
c2U2NEVuY29kZSh1bmVuY29kZWQsIGVuY29kZWQpOwotICAgIHJldHVybiBTdHJpbmcoZW5jb2Rl
ZC5kYXRhKCksIGVuY29kZWQuc2l6ZSgpKTsKKyAgICByZXR1cm4gZW5jb2RlZDsKIH0KICNlbmRp
ZgogCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvQmFzZTY0LmNwcCBiL1dlYkNv
cmUvcGxhdGZvcm0vdGV4dC9CYXNlNjQuY3BwCmluZGV4IDk4YjUzN2EuLmNlOTExMGYgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9CYXNlNjQuY3BwCisrKyBiL1dlYkNvcmUvcGxh
dGZvcm0vdGV4dC9CYXNlNjQuY3BwCkBAIC02MCwxMiArNjAsMTggQEAgc3RhdGljIGNvbnN0IGNo
YXIgYmFzZTY0RGVjTWFwWzEyOF0gPSB7CiAgICAgMHgzMSwgMHgzMiwgMHgzMywgMHgwMCwgMHgw
MCwgMHgwMCwgMHgwMCwgMHgwMAogfTsKIAordm9pZCBiYXNlNjRFbmNvZGUoY29uc3QgVmVjdG9y
PGNoYXI+JiBpbiwgU3RyaW5nJiBvdXQsIGJvb2wgaW5zZXJ0TEZzKQoreworICAgIGJhc2U2NEVu
Y29kZShpbi5kYXRhKCksIGluLnNpemUoKSwgb3V0LCBpbnNlcnRMRnMpOworfQorCiB2b2lkIGJh
c2U2NEVuY29kZShjb25zdCBWZWN0b3I8Y2hhcj4mIGluLCBWZWN0b3I8Y2hhcj4mIG91dCwgYm9v
bCBpbnNlcnRMRnMpCiB7CiAgICAgYmFzZTY0RW5jb2RlKGluLmRhdGEoKSwgaW4uc2l6ZSgpLCBv
dXQsIGluc2VydExGcyk7CiB9CiAKLXZvaWQgYmFzZTY0RW5jb2RlKGNvbnN0IGNoYXIqIGRhdGEs
IHVuc2lnbmVkIGxlbiwgVmVjdG9yPGNoYXI+JiBvdXQsIGJvb2wgaW5zZXJ0TEZzKQordGVtcGxh
dGU8dHlwZW5hbWUgVD4KK3N0YXRpYyBpbmxpbmUgdm9pZCBiYXNlNjRFbmNvZGVJbnRlcm5hbChj
b25zdCBjaGFyKiBkYXRhLCB1bnNpZ25lZCBsZW4sIFZlY3RvcjxUPiYgb3V0LCBib29sIGluc2Vy
dExGcykKIHsKICAgICBvdXQuY2xlYXIoKTsKICAgICBpZiAoIWxlbikKQEAgLTEyNiw2ICsxMzIs
MTkgQEAgdm9pZCBiYXNlNjRFbmNvZGUoY29uc3QgY2hhciogZGF0YSwgdW5zaWduZWQgbGVuLCBW
ZWN0b3I8Y2hhcj4mIG91dCwgYm9vbCBpbnNlcnQKICAgICB9CiB9CiAKK3ZvaWQgYmFzZTY0RW5j
b2RlKGNvbnN0IGNoYXIqIGRhdGEsIHVuc2lnbmVkIGxlbiwgU3RyaW5nJiBzdHIsIGJvb2wgaW5z
ZXJ0TEZzKQoreworICAgIFZlY3RvcjxVQ2hhcj4gb3V0OworICAgIGJhc2U2NEVuY29kZUludGVy
bmFsPFVDaGFyPihkYXRhLCBsZW4sIG91dCwgaW5zZXJ0TEZzKTsKKyAgICBzdHIgPSBTdHJpbmc6
OmFkb3B0KG91dCk7Cit9CisKK3ZvaWQgYmFzZTY0RW5jb2RlKGNvbnN0IGNoYXIqIGRhdGEsIHVu
c2lnbmVkIGxlbiwgVmVjdG9yPGNoYXI+JiBvdXQsIGJvb2wgaW5zZXJ0TEZzKQorewkKKyAgICBi
YXNlNjRFbmNvZGVJbnRlcm5hbDxjaGFyPihkYXRhLCBsZW4sIG91dCwgaW5zZXJ0TEZzKTsKK30K
KworCiBib29sIGJhc2U2NERlY29kZShjb25zdCBWZWN0b3I8Y2hhcj4mIGluLCBWZWN0b3I8Y2hh
cj4mIG91dCwgQmFzZTY0RGVjb2RlUG9saWN5IHBvbGljeSkKIHsKICAgICBvdXQuY2xlYXIoKTsK
ZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9CYXNlNjQuaCBiL1dlYkNvcmUvcGxh
dGZvcm0vdGV4dC9CYXNlNjQuaAppbmRleCAyMTFiZDNjLi43MmU5YTgwIDEwMDY0NAotLS0gYS9X
ZWJDb3JlL3BsYXRmb3JtL3RleHQvQmFzZTY0LmgKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0
L0Jhc2U2NC5oCkBAIC0zNiwxMSArMzYsMTMgQEAgZW51bSBCYXNlNjREZWNvZGVQb2xpY3kgeyBG
YWlsT25JbnZhbGlkQ2hhcmFjdGVyLCBJZ25vcmVXaGl0ZXNwYWNlLCBJZ25vcmVJbnZhbGkKIAog
dm9pZCBiYXNlNjRFbmNvZGUoY29uc3QgVmVjdG9yPGNoYXI+JiwgVmVjdG9yPGNoYXI+JiwgYm9v
bCBpbnNlcnRMRnMgPSBmYWxzZSk7CiB2b2lkIGJhc2U2NEVuY29kZShjb25zdCBjaGFyKiwgdW5z
aWduZWQsIFZlY3RvcjxjaGFyPiYsIGJvb2wgaW5zZXJ0TEZzID0gZmFsc2UpOwordm9pZCBiYXNl
NjRFbmNvZGUoY29uc3QgVmVjdG9yPGNoYXI+JiwgU3RyaW5nJiwgYm9vbCBpbnNlcnRMRnMgPSBm
YWxzZSk7Cit2b2lkIGJhc2U2NEVuY29kZShjb25zdCBjaGFyKiwgdW5zaWduZWQsIFN0cmluZyYs
IGJvb2wgaW5zZXJ0TEZzID0gZmFsc2UpOwogCiBib29sIGJhc2U2NERlY29kZShjb25zdCBTdHJp
bmcmLCBWZWN0b3I8Y2hhcj4mLCBCYXNlNjREZWNvZGVQb2xpY3kgPSBGYWlsT25JbnZhbGlkQ2hh
cmFjdGVyKTsKIGJvb2wgYmFzZTY0RGVjb2RlKGNvbnN0IFZlY3RvcjxjaGFyPiYsIFZlY3Rvcjxj
aGFyPiYsIEJhc2U2NERlY29kZVBvbGljeSA9IEZhaWxPbkludmFsaWRDaGFyYWN0ZXIpOwogYm9v
bCBiYXNlNjREZWNvZGUoY29uc3QgY2hhciosIHVuc2lnbmVkLCBWZWN0b3I8Y2hhcj4mLCBCYXNl
NjREZWNvZGVQb2xpY3kgPSBGYWlsT25JbnZhbGlkQ2hhcmFjdGVyKTsKIAotfQorfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gQmFzZTY0X2gKZGlmZiAtLWdpdCBhL1dlYkNvcmUv
cGxhdGZvcm0vd2luY2UvS2V5Z2VuV2luQ0UuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS93aW5jZS9L
ZXlnZW5XaW5DRS5jcHAKaW5kZXggMGMxYjNjNi4uZDZhMmYwNCAxMDA2NDQKLS0tIGEvV2ViQ29y
ZS9wbGF0Zm9ybS93aW5jZS9LZXlnZW5XaW5DRS5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS93
aW5jZS9LZXlnZW5XaW5DRS5jcHAKQEAgLTgwLDEwICs4MCw3IEBAIFN0cmluZyBXZWJDb3JlOjpz
aWduZWRQdWJsaWNLZXlBbmRDaGFsbGVuZ2VTdHJpbmcodW5zaWduZWQgaW5kZXgsIGNvbnN0IFN0
cmluZyYKICAgICAgICAgaWYgKCFDcnlwdFNpZ25BbmRFbmNvZGVDZXJ0aWZpY2F0ZShoQ29udGV4
dCwgQVRfS0VZRVhDSEFOR0UsIFg1MDlfQVNOX0VOQ09ESU5HLCBYNTA5X0tFWUdFTl9SRVFVRVNU
X1RPX0JFX1NJR05FRCwgJnJlcXVlc3RJbmZvLCAmc2lnbkFsZ28sIDAsIHJlaW50ZXJwcmV0X2Nh
c3Q8TFBCWVRFPihiaW5hcnkuZGF0YSgpKSwgJmR3RW5jb2RlZExlbmd0aCkpCiAgICAgICAgICAg
ICBicmVhazsKIAotICAgICAgICBWZWN0b3I8Y2hhcj4gYmFzZTY0OwotICAgICAgICBiYXNlNjRF
bmNvZGUoYmluYXJ5LCBiYXNlNjQpOwotICAgICAgICBrZXlTdHJpbmcgPSBTdHJpbmcoYmFzZTY0
LmRhdGEoKSwgYmFzZTY0LnNpemUoKSk7Ci0KKyAgICAgICAgYmFzZTY0RW5jb2RlKGJpbmFyeSwg
a2V5U3RyaW5nKTsKICAgICB9IHdoaWxlKDApOwogCiAgICAgaWYgKHBQdWJJbmZvKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>74961</attachid>
            <date>2010-11-27 09:30:17 -0800</date>
            <delta_ts>2011-01-23 10:39:04 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-50122.patch</filename>
            <type>text/plain</type>
            <size>11002</size>
            <attacher name="Patrick R. Gansterer">paroga</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
MmNiZWYwNC4uZmVhYzQ4NCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMyBAQAorMjAxMC0xMS0yNyAgUGF0cmljayBHYW5z
dGVyZXIgIDxwYXJvZ2FAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBBZGQgYW4gb3ZlcmxvYWQgdG8gYmFzZTY0RW5jb2RlIHdpdGgg
U3RyaW5nIG91dHB1dAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NTAxMjIKKworICAgICAgICBBdm9pZCBhZGRpdGlvbmFsIG1hbGxvYyArIG1lbWNweSB3
aGVuIG91dHB1dCBuZWVkcyB0byBiZSBhIFN0cmluZy4KKworICAgICAgICAqIGluc3BlY3Rvci9J
bnNwZWN0b3JSZXNvdXJjZUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclJl
c291cmNlQWdlbnQ6OnJlc291cmNlQ29udGVudEJhc2U2NCk6CisgICAgICAgICogcGFnZS9ET01X
aW5kb3cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NV2luZG93OjpidG9hKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9za2lhL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Y3JlYXRlVW5pcXVlRm9udE5hbWUpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmNyZWF0ZVVuaXF1ZUZvbnROYW1lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93
aW5jZS9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0
ZVVuaXF1ZUZvbnROYW1lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNl
SGFuZGxlQ0ZOZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZW5jb2RlQmFzaWNBdXRob3JpemF0
aW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZUhhbmRsZU1hYy5t
bToKKyAgICAgICAgKFdlYkNvcmU6OmVuY29kZUJhc2ljQXV0aG9yaXphdGlvbik6CisgICAgICAg
ICogcGxhdGZvcm0vdGV4dC9CYXNlNjQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6YmFzZTY0RW5j
b2RlKToKKyAgICAgICAgKFdlYkNvcmU6OmJhc2U2NEVuY29kZUludGVybmFsKToKKyAgICAgICAg
KiBwbGF0Zm9ybS90ZXh0L0Jhc2U2NC5oOgorICAgICAgICAqIHBsYXRmb3JtL3dpbmNlL0tleWdl
bldpbkNFLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkNvcmU6OnNpZ25lZFB1YmxpY0tleUFu
ZENoYWxsZW5nZVN0cmluZyk6CisKIDIwMTAtMTEtMjYgIFJvYiBCdWlzICA8cndsYnVpc0BnbWFp
bC5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgU2ltb24gRnJhc2VyLgpkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5jcHAgYi9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmNwcAppbmRleCA5ZGFiMjRhLi5lMzY0YjM5
IDEwMDY0NAotLS0gYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmNw
cAorKysgYi9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmNwcApAQCAt
OTMsOCArOTMsNyBAQCBib29sIEluc3BlY3RvclJlc291cmNlQWdlbnQ6OnJlc291cmNlQ29udGVu
dEJhc2U2NChGcmFtZSogZnJhbWUsIGNvbnN0IEtVUkwmIHVybAogICAgICAgICByZXR1cm4gZmFs
c2U7CiAgICAgfQogCi0gICAgYmFzZTY0RW5jb2RlKGRhdGEtPmJ1ZmZlcigpLCBvdXQpOwotICAg
ICpyZXN1bHQgPSBTdHJpbmcob3V0LmRhdGEoKSwgb3V0LnNpemUoKSk7CisgICAgYmFzZTY0RW5j
b2RlKGRhdGEtPmJ1ZmZlcigpLCAqcmVzdWx0KTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAgYi9XZWJDb3JlL3BhZ2UvRE9NV2lu
ZG93LmNwcAppbmRleCBlYmIzZGI1Li44YTBmNGUwIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BhZ2Uv
RE9NV2luZG93LmNwcAorKysgYi9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcApAQCAtOTg0LDEz
ICs5ODQsMTAgQEAgU3RyaW5nIERPTVdpbmRvdzo6YnRvYShjb25zdCBTdHJpbmcmIHN0cmluZ1Rv
RW5jb2RlLCBFeGNlcHRpb25Db2RlJiBlYykKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogICAg
IH0KIAotICAgIFZlY3RvcjxjaGFyPiBpbjsKLSAgICBpbi5hcHBlbmQoc3RyaW5nVG9FbmNvZGUu
Y2hhcmFjdGVycygpLCBzdHJpbmdUb0VuY29kZS5sZW5ndGgoKSk7Ci0gICAgVmVjdG9yPGNoYXI+
IG91dDsKLQotICAgIGJhc2U2NEVuY29kZShpbiwgb3V0KTsKLQotICAgIHJldHVybiBTdHJpbmco
b3V0LmRhdGEoKSwgb3V0LnNpemUoKSk7CisgICAgQ1N0cmluZyBpbiA9IHN0cmluZ1RvRW5jb2Rl
LmxhdGluMSgpOworICAgIFN0cmluZyBvdXQ7CisgICAgYmFzZTY0RW5jb2RlKGluLmRhdGEoKSwg
aW4ubGVuZ3RoKCksIG91dCk7CisgICAgcmV0dXJuIG91dDsKIH0KIAogU3RyaW5nIERPTVdpbmRv
dzo6YXRvYihjb25zdCBTdHJpbmcmIGVuY29kZWRTdHJpbmcsIEV4Y2VwdGlvbkNvZGUmIGVjKQpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL0ZvbnRDdXN0b21QbGF0
Zm9ybURhdGEuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL0ZvbnRDdXN0b21Q
bGF0Zm9ybURhdGEuY3BwCmluZGV4IDJlYTU2OGIuLjg3ZDYzYTEgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcAorKysg
Yi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5j
cHAKQEAgLTExNCwxMyArMTE0LDEzIEBAIEZvbnRQbGF0Zm9ybURhdGEgRm9udEN1c3RvbVBsYXRm
b3JtRGF0YTo6Zm9udFBsYXRmb3JtRGF0YShpbnQgc2l6ZSwgYm9vbCBib2xkLCBiCiAvLyBub3Qg
YWxsb3cgYWNjZXNzIGZyb20gQ1NTLgogc3RhdGljIFN0cmluZyBjcmVhdGVVbmlxdWVGb250TmFt
ZSgpCiB7Ci0gICAgVmVjdG9yPGNoYXI+IGZvbnRVdWlkKHNpemVvZihHVUlEKSk7Ci0gICAgQ29D
cmVhdGVHdWlkKHJlaW50ZXJwcmV0X2Nhc3Q8R1VJRCo+KGZvbnRVdWlkLmRhdGEoKSkpOworICAg
IEdVSUQgZm9udFV1aWQ7CisgICAgQ29DcmVhdGVHdWlkKCZmb250VXVpZCk7CiAKLSAgICBWZWN0
b3I8Y2hhcj4gZm9udE5hbWVWZWN0b3I7Ci0gICAgYmFzZTY0RW5jb2RlKGZvbnRVdWlkLCBmb250
TmFtZVZlY3Rvcik7Ci0gICAgQVNTRVJUKGZvbnROYW1lVmVjdG9yLnNpemUoKSA8IExGX0ZBQ0VT
SVpFKTsKLSAgICByZXR1cm4gU3RyaW5nKGZvbnROYW1lVmVjdG9yLmRhdGEoKSwgZm9udE5hbWVW
ZWN0b3Iuc2l6ZSgpKTsKKyAgICBTdHJpbmcgZm9udE5hbWU7CisgICAgYmFzZTY0RW5jb2RlKHJl
aW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGZvbnRVdWlkKSwgc2l6ZW9mKGZvbnRVdWlkKSwgZm9udE5h
bWUpOworICAgIEFTU0VSVChmb250TmFtZS5sZW5ndGgoKSA8IExGX0ZBQ0VTSVpFKTsKKyAgICBy
ZXR1cm4gZm9udE5hbWU7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAgYi9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcAppbmRleCA5Y2FlOTli
Li42YWQyNzRhIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250
Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dp
bi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcApAQCAtMTU0LDEzICsxNTQsMTMgQEAgc3RhdGlj
IHVuc2lnbmVkIGxvbmcgV0lOQVBJViByZWFkRW1iZWRQcm9jKHZvaWQqIHN0cmVhbSwgdm9pZCog
YnVmZmVyLCB1bnNpZ25lZAogLy8gbm90IGFsbG93IGFjY2VzcyBmcm9tIENTUy4KIHN0YXRpYyBT
dHJpbmcgY3JlYXRlVW5pcXVlRm9udE5hbWUoKQogewotICAgIFZlY3RvcjxjaGFyPiBmb250VXVp
ZChzaXplb2YoR1VJRCkpOwotICAgIENvQ3JlYXRlR3VpZChyZWludGVycHJldF9jYXN0PEdVSUQq
Pihmb250VXVpZC5kYXRhKCkpKTsKKyAgICBHVUlEIGZvbnRVdWlkOworICAgIENvQ3JlYXRlR3Vp
ZCgmZm9udFV1aWQpOwogCi0gICAgVmVjdG9yPGNoYXI+IGZvbnROYW1lVmVjdG9yOwotICAgIGJh
c2U2NEVuY29kZShmb250VXVpZCwgZm9udE5hbWVWZWN0b3IpOwotICAgIEFTU0VSVChmb250TmFt
ZVZlY3Rvci5zaXplKCkgPCBMRl9GQUNFU0laRSk7Ci0gICAgcmV0dXJuIFN0cmluZyhmb250TmFt
ZVZlY3Rvci5kYXRhKCksIGZvbnROYW1lVmVjdG9yLnNpemUoKSk7CisgICAgU3RyaW5nIGZvbnRO
YW1lOworICAgIGJhc2U2NEVuY29kZShyZWludGVycHJldF9jYXN0PGNoYXIqPihmb250VXVpZCks
IHNpemVvZihmb250VXVpZCksIGZvbnROYW1lKTsKKyAgICBBU1NFUlQoZm9udE5hbWUubGVuZ3Ro
KCkgPCBMRl9GQUNFU0laRSk7CisgICAgcmV0dXJuIGZvbnROYW1lOwogfQogCiBGb250Q3VzdG9t
UGxhdGZvcm1EYXRhKiBjcmVhdGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKFNoYXJlZEJ1ZmZlciog
YnVmZmVyKQpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW5jZS9Gb250
Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luY2Uv
Rm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAKaW5kZXggZjYxYWU4ZS4uNjRkZDA4MiAxMDA2NDQK
LS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW5jZS9Gb250Q3VzdG9tUGxhdGZvcm1E
YXRhLmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbmNlL0ZvbnRDdXN0b21Q
bGF0Zm9ybURhdGEuY3BwCkBAIC01OSwxNiArNTksMTUgQEAgRm9udFBsYXRmb3JtRGF0YSBGb250
Q3VzdG9tUGxhdGZvcm1EYXRhOjpmb250UGxhdGZvcm1EYXRhKGludCBzaXplLCBib29sIGJvbGQs
IGIKIC8vIG5vdCBhbGxvdyBhY2Nlc3MgZnJvbSBDU1MuCiBzdGF0aWMgU3RyaW5nIGNyZWF0ZVVu
aXF1ZUZvbnROYW1lKCkKIHsKLSAgICBWZWN0b3I8Y2hhcj4gZm9udFV1aWQoc2l6ZW9mKEdVSUQp
KTsKKyAgICBHVUlEIGZvbnRVdWlkOwogCi0gICAgdW5zaWduZWQgaW50KiBwdHIgPSByZWludGVy
cHJldF9jYXN0PHVuc2lnbmVkIGludCo+KGZvbnRVdWlkLmRhdGEoKSk7CisgICAgdW5zaWduZWQg
aW50KiBwdHIgPSByZWludGVycHJldF9jYXN0PHVuc2lnbmVkIGludCo+KCZmb250VXVpZCk7CiAg
ICAgZm9yIChpbnQgaSA9IDA7IGkgPCBzaXplb2YoR1VJRCkgLyBzaXplb2YoaW50KSA7ICsraSkK
ICAgICAgICAgKihwdHIgKyBpKSA9IHN0YXRpY19jYXN0PHVuc2lnbmVkIGludD4ocmFuZG9tTnVt
YmVyKCkgKiAoc3RkOjpudW1lcmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpICsgMS4wKSk7CiAK
LSAgICBWZWN0b3I8Y2hhcj4gZm9udE5hbWVWZWN0b3I7Ci0gICAgYmFzZTY0RW5jb2RlKGZvbnRV
dWlkLCBmb250TmFtZVZlY3Rvcik7Ci0gICAgQVNTRVJUKGZvbnROYW1lVmVjdG9yLnNpemUoKSA8
IExGX0ZBQ0VTSVpFKTsKLSAgICBTdHJpbmcgZm9udE5hbWUoZm9udE5hbWVWZWN0b3IuZGF0YSgp
LCBmb250TmFtZVZlY3Rvci5zaXplKCkpOworICAgIFN0cmluZyBmb250TmFtZTsKKyAgICBiYXNl
NjRFbmNvZGUocmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oZm9udFV1aWQpLCBzaXplb2YoZm9udFV1
aWQpLCBmb250TmFtZSk7CisgICAgQVNTRVJUKGZvbnROYW1lLmxlbmd0aCgpIDwgTEZfRkFDRVNJ
WkUpOwogICAgIHJldHVybiBmb250TmFtZS5yZXBsYWNlKCcvJywgJ18nKTsKIH0KIApkaWZmIC0t
Z2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZOZXQuY3Bw
IGIvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZOZXQuY3BwCmlu
ZGV4IGU0OGJkMmQuLjVhMjVmMzQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jZi9SZXNvdXJjZUhhbmRsZUNGTmV0LmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvY2YvUmVzb3VyY2VIYW5kbGVDRk5ldC5jcHAKQEAgLTEyNSwxMSArMTI1LDkgQEAgc3RhdGlj
IHZvaWQgc2V0RGVmYXVsdE1JTUVUeXBlKENGVVJMUmVzcG9uc2VSZWYgcmVzcG9uc2UpCiBzdGF0
aWMgU3RyaW5nIGVuY29kZUJhc2ljQXV0aG9yaXphdGlvbihjb25zdCBTdHJpbmcmIHVzZXIsIGNv
bnN0IFN0cmluZyYgcGFzc3dvcmQpCiB7CiAgICAgQ1N0cmluZyB1bmVuY29kZWRTdHJpbmcgPSAo
dXNlciArICI6IiArIHBhc3N3b3JkKS51dGY4KCk7Ci0gICAgVmVjdG9yPGNoYXI+IHVuZW5jb2Rl
ZCh1bmVuY29kZWRTdHJpbmcubGVuZ3RoKCkpOwotICAgIHN0ZDo6Y29weSh1bmVuY29kZWRTdHJp
bmcuZGF0YSgpLCB1bmVuY29kZWRTdHJpbmcuZGF0YSgpICsgdW5lbmNvZGVkU3RyaW5nLmxlbmd0
aCgpLCB1bmVuY29kZWQuYmVnaW4oKSk7Ci0gICAgVmVjdG9yPGNoYXI+IGVuY29kZWQ7Ci0gICAg
YmFzZTY0RW5jb2RlKHVuZW5jb2RlZCwgZW5jb2RlZCk7Ci0gICAgcmV0dXJuIFN0cmluZyhlbmNv
ZGVkLmRhdGEoKSwgZW5jb2RlZC5zaXplKCkpOworICAgIFN0cmluZyBlbmNvZGVkOworICAgIGJh
c2U2NEVuY29kZSh1bmVuY29kZWRTdHJpbmcuZGF0YSgpLCB1bmVuY29kZWRTdHJpbmcubGVuZ3Ro
KCksIGVuY29kZWQpOworICAgIHJldHVybiBlbmNvZGVkOwogfQogCiBDRlVSTFJlcXVlc3RSZWYg
d2lsbFNlbmRSZXF1ZXN0KENGVVJMQ29ubmVjdGlvblJlZiBjb25uLCBDRlVSTFJlcXVlc3RSZWYg
Y2ZSZXF1ZXN0LCBDRlVSTFJlc3BvbnNlUmVmIGNmUmVkaXJlY3RSZXNwb25zZSwgY29uc3Qgdm9p
ZCogY2xpZW50SW5mbykKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMv
UmVzb3VyY2VIYW5kbGVNYWMubW0gYi9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvbWFjL1Jlc291
cmNlSGFuZGxlTWFjLm1tCmluZGV4IGRhZWMzNjYuLjA3OGI2ZmYgMTAwNjQ0Ci0tLSBhL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VIYW5kbGVNYWMubW0KKysrIGIvV2ViQ29y
ZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZUhhbmRsZU1hYy5tbQpAQCAtMTYzLDExICsx
NjMsOSBAQCBwdWJsaWM6CiBzdGF0aWMgU3RyaW5nIGVuY29kZUJhc2ljQXV0aG9yaXphdGlvbihj
b25zdCBTdHJpbmcmIHVzZXIsIGNvbnN0IFN0cmluZyYgcGFzc3dvcmQpCiB7CiAgICAgQ1N0cmlu
ZyB1bmVuY29kZWRTdHJpbmcgPSAodXNlciArICI6IiArIHBhc3N3b3JkKS51dGY4KCk7Ci0gICAg
VmVjdG9yPGNoYXI+IHVuZW5jb2RlZCh1bmVuY29kZWRTdHJpbmcubGVuZ3RoKCkpOwotICAgIHN0
ZDo6Y29weSh1bmVuY29kZWRTdHJpbmcuZGF0YSgpLCB1bmVuY29kZWRTdHJpbmcuZGF0YSgpICsg
dW5lbmNvZGVkU3RyaW5nLmxlbmd0aCgpLCB1bmVuY29kZWQuYmVnaW4oKSk7Ci0gICAgVmVjdG9y
PGNoYXI+IGVuY29kZWQ7Ci0gICAgYmFzZTY0RW5jb2RlKHVuZW5jb2RlZCwgZW5jb2RlZCk7Ci0g
ICAgcmV0dXJuIFN0cmluZyhlbmNvZGVkLmRhdGEoKSwgZW5jb2RlZC5zaXplKCkpOworICAgIFN0
cmluZyBlbmNvZGVkOworICAgIGJhc2U2NEVuY29kZSh1bmVuY29kZWRTdHJpbmcuZGF0YSgpLCB1
bmVuY29kZWRTdHJpbmcubGVuZ3RoKCksIGVuY29kZWQpOworICAgIHJldHVybiBlbmNvZGVkOwog
fQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9CYXNlNjQuY3Bw
IGIvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L0Jhc2U2NC5jcHAKaW5kZXggOThiNTM3YS4uY2U5MTEw
ZiAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L0Jhc2U2NC5jcHAKKysrIGIvV2Vi
Q29yZS9wbGF0Zm9ybS90ZXh0L0Jhc2U2NC5jcHAKQEAgLTYwLDEyICs2MCwxOCBAQCBzdGF0aWMg
Y29uc3QgY2hhciBiYXNlNjREZWNNYXBbMTI4XSA9IHsKICAgICAweDMxLCAweDMyLCAweDMzLCAw
eDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwCiB9OwogCit2b2lkIGJhc2U2NEVuY29kZShjb25z
dCBWZWN0b3I8Y2hhcj4mIGluLCBTdHJpbmcmIG91dCwgYm9vbCBpbnNlcnRMRnMpCit7CisgICAg
YmFzZTY0RW5jb2RlKGluLmRhdGEoKSwgaW4uc2l6ZSgpLCBvdXQsIGluc2VydExGcyk7Cit9CisK
IHZvaWQgYmFzZTY0RW5jb2RlKGNvbnN0IFZlY3RvcjxjaGFyPiYgaW4sIFZlY3RvcjxjaGFyPiYg
b3V0LCBib29sIGluc2VydExGcykKIHsKICAgICBiYXNlNjRFbmNvZGUoaW4uZGF0YSgpLCBpbi5z
aXplKCksIG91dCwgaW5zZXJ0TEZzKTsKIH0KIAotdm9pZCBiYXNlNjRFbmNvZGUoY29uc3QgY2hh
ciogZGF0YSwgdW5zaWduZWQgbGVuLCBWZWN0b3I8Y2hhcj4mIG91dCwgYm9vbCBpbnNlcnRMRnMp
Cit0ZW1wbGF0ZTx0eXBlbmFtZSBUPgorc3RhdGljIGlubGluZSB2b2lkIGJhc2U2NEVuY29kZUlu
dGVybmFsKGNvbnN0IGNoYXIqIGRhdGEsIHVuc2lnbmVkIGxlbiwgVmVjdG9yPFQ+JiBvdXQsIGJv
b2wgaW5zZXJ0TEZzKQogewogICAgIG91dC5jbGVhcigpOwogICAgIGlmICghbGVuKQpAQCAtMTI2
LDYgKzEzMiwxOSBAQCB2b2lkIGJhc2U2NEVuY29kZShjb25zdCBjaGFyKiBkYXRhLCB1bnNpZ25l
ZCBsZW4sIFZlY3RvcjxjaGFyPiYgb3V0LCBib29sIGluc2VydAogICAgIH0KIH0KIAordm9pZCBi
YXNlNjRFbmNvZGUoY29uc3QgY2hhciogZGF0YSwgdW5zaWduZWQgbGVuLCBTdHJpbmcmIHN0ciwg
Ym9vbCBpbnNlcnRMRnMpCit7CisgICAgVmVjdG9yPFVDaGFyPiBvdXQ7CisgICAgYmFzZTY0RW5j
b2RlSW50ZXJuYWw8VUNoYXI+KGRhdGEsIGxlbiwgb3V0LCBpbnNlcnRMRnMpOworICAgIHN0ciA9
IFN0cmluZzo6YWRvcHQob3V0KTsKK30KKwordm9pZCBiYXNlNjRFbmNvZGUoY29uc3QgY2hhciog
ZGF0YSwgdW5zaWduZWQgbGVuLCBWZWN0b3I8Y2hhcj4mIG91dCwgYm9vbCBpbnNlcnRMRnMpCit7
CQorICAgIGJhc2U2NEVuY29kZUludGVybmFsPGNoYXI+KGRhdGEsIGxlbiwgb3V0LCBpbnNlcnRM
RnMpOworfQorCisKIGJvb2wgYmFzZTY0RGVjb2RlKGNvbnN0IFZlY3RvcjxjaGFyPiYgaW4sIFZl
Y3RvcjxjaGFyPiYgb3V0LCBCYXNlNjREZWNvZGVQb2xpY3kgcG9saWN5KQogewogICAgIG91dC5j
bGVhcigpOwpkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L0Jhc2U2NC5oIGIvV2Vi
Q29yZS9wbGF0Zm9ybS90ZXh0L0Jhc2U2NC5oCmluZGV4IDIxMWJkM2MuLjcyZTlhODAgMTAwNjQ0
Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9CYXNlNjQuaAorKysgYi9XZWJDb3JlL3BsYXRm
b3JtL3RleHQvQmFzZTY0LmgKQEAgLTM2LDExICszNiwxMyBAQCBlbnVtIEJhc2U2NERlY29kZVBv
bGljeSB7IEZhaWxPbkludmFsaWRDaGFyYWN0ZXIsIElnbm9yZVdoaXRlc3BhY2UsIElnbm9yZUlu
dmFsaQogCiB2b2lkIGJhc2U2NEVuY29kZShjb25zdCBWZWN0b3I8Y2hhcj4mLCBWZWN0b3I8Y2hh
cj4mLCBib29sIGluc2VydExGcyA9IGZhbHNlKTsKIHZvaWQgYmFzZTY0RW5jb2RlKGNvbnN0IGNo
YXIqLCB1bnNpZ25lZCwgVmVjdG9yPGNoYXI+JiwgYm9vbCBpbnNlcnRMRnMgPSBmYWxzZSk7Cit2
b2lkIGJhc2U2NEVuY29kZShjb25zdCBWZWN0b3I8Y2hhcj4mLCBTdHJpbmcmLCBib29sIGluc2Vy
dExGcyA9IGZhbHNlKTsKK3ZvaWQgYmFzZTY0RW5jb2RlKGNvbnN0IGNoYXIqLCB1bnNpZ25lZCwg
U3RyaW5nJiwgYm9vbCBpbnNlcnRMRnMgPSBmYWxzZSk7CiAKIGJvb2wgYmFzZTY0RGVjb2RlKGNv
bnN0IFN0cmluZyYsIFZlY3RvcjxjaGFyPiYsIEJhc2U2NERlY29kZVBvbGljeSA9IEZhaWxPbklu
dmFsaWRDaGFyYWN0ZXIpOwogYm9vbCBiYXNlNjREZWNvZGUoY29uc3QgVmVjdG9yPGNoYXI+Jiwg
VmVjdG9yPGNoYXI+JiwgQmFzZTY0RGVjb2RlUG9saWN5ID0gRmFpbE9uSW52YWxpZENoYXJhY3Rl
cik7CiBib29sIGJhc2U2NERlY29kZShjb25zdCBjaGFyKiwgdW5zaWduZWQsIFZlY3RvcjxjaGFy
PiYsIEJhc2U2NERlY29kZVBvbGljeSA9IEZhaWxPbkludmFsaWRDaGFyYWN0ZXIpOwogCi19Cit9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBCYXNlNjRfaApkaWZmIC0tZ2l0IGEv
V2ViQ29yZS9wbGF0Zm9ybS93aW5jZS9LZXlnZW5XaW5DRS5jcHAgYi9XZWJDb3JlL3BsYXRmb3Jt
L3dpbmNlL0tleWdlbldpbkNFLmNwcAppbmRleCAwYzFiM2M2Li5kNmEyZjA0IDEwMDY0NAotLS0g
YS9XZWJDb3JlL3BsYXRmb3JtL3dpbmNlL0tleWdlbldpbkNFLmNwcAorKysgYi9XZWJDb3JlL3Bs
YXRmb3JtL3dpbmNlL0tleWdlbldpbkNFLmNwcApAQCAtODAsMTAgKzgwLDcgQEAgU3RyaW5nIFdl
YkNvcmU6OnNpZ25lZFB1YmxpY0tleUFuZENoYWxsZW5nZVN0cmluZyh1bnNpZ25lZCBpbmRleCwg
Y29uc3QgU3RyaW5nJgogICAgICAgICBpZiAoIUNyeXB0U2lnbkFuZEVuY29kZUNlcnRpZmljYXRl
KGhDb250ZXh0LCBBVF9LRVlFWENIQU5HRSwgWDUwOV9BU05fRU5DT0RJTkcsIFg1MDlfS0VZR0VO
X1JFUVVFU1RfVE9fQkVfU0lHTkVELCAmcmVxdWVzdEluZm8sICZzaWduQWxnbywgMCwgcmVpbnRl
cnByZXRfY2FzdDxMUEJZVEU+KGJpbmFyeS5kYXRhKCkpLCAmZHdFbmNvZGVkTGVuZ3RoKSkKICAg
ICAgICAgICAgIGJyZWFrOwogCi0gICAgICAgIFZlY3RvcjxjaGFyPiBiYXNlNjQ7Ci0gICAgICAg
IGJhc2U2NEVuY29kZShiaW5hcnksIGJhc2U2NCk7Ci0gICAgICAgIGtleVN0cmluZyA9IFN0cmlu
ZyhiYXNlNjQuZGF0YSgpLCBiYXNlNjQuc2l6ZSgpKTsKLQorICAgICAgICBiYXNlNjRFbmNvZGUo
YmluYXJ5LCBrZXlTdHJpbmcpOwogICAgIH0gd2hpbGUoMCk7CiAKICAgICBpZiAocFB1YkluZm8p
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>77466</attachid>
            <date>2010-12-26 16:07:14 -0800</date>
            <delta_ts>2010-12-26 16:39:37 -0800</delta_ts>
            <desc>Alternative Patch</desc>
            <filename>bug-50122b.patch</filename>
            <type>text/plain</type>
            <size>11192</size>
            <attacher name="Patrick R. Gansterer">paroga</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
ZDcwMjM0OC4uNDhlY2ZjOCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMyBAQAorMjAxMC0xMi0yNyAgUGF0cmljayBHYW5z
dGVyZXIgIDxwYXJvZ2FAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBBZGQgYW4gb3ZlcmxvYWQgdG8gYmFzZTY0RW5jb2RlIHdpdGgg
U3RyaW5nIG91dHB1dAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NTAxMjIKKworICAgICAgICBBdm9pZCBhZGRpdGlvbmFsIG1hbGxvYyArIG1lbWNweSB3
aGVuIG91dHB1dCBuZWVkcyB0byBiZSBhIFN0cmluZy4KKworICAgICAgICAqIGluc3BlY3Rvci9J
bnNwZWN0b3JSZXNvdXJjZUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclJl
c291cmNlQWdlbnQ6OnJlc291cmNlQ29udGVudEJhc2U2NCk6CisgICAgICAgICogcGFnZS9ET01X
aW5kb3cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NV2luZG93OjpidG9hKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9za2lhL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Y3JlYXRlVW5pcXVlRm9udE5hbWUpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmNyZWF0ZVVuaXF1ZUZvbnROYW1lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93
aW5jZS9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0
ZVVuaXF1ZUZvbnROYW1lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNl
SGFuZGxlQ0ZOZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZW5jb2RlQmFzaWNBdXRob3JpemF0
aW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZUhhbmRsZU1hYy5t
bToKKyAgICAgICAgKFdlYkNvcmU6OmVuY29kZUJhc2ljQXV0aG9yaXphdGlvbik6CisgICAgICAg
ICogcGxhdGZvcm0vdGV4dC9CYXNlNjQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6YmFzZTY0RW5j
b2RlKToKKyAgICAgICAgKFdlYkNvcmU6OmJhc2U2NEVuY29kZUludGVybmFsKToKKyAgICAgICAg
KiBwbGF0Zm9ybS90ZXh0L0Jhc2U2NC5oOgorICAgICAgICAqIHBsYXRmb3JtL3dpbmNlL0tleWdl
bldpbkNFLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkNvcmU6OnNpZ25lZFB1YmxpY0tleUFu
ZENoYWxsZW5nZVN0cmluZyk6CisKIDIwMTAtMTItMjYgIFBhdHJpY2sgR2Fuc3RlcmVyICA8cGFy
b2dhQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBTZWlkZWwuCmRpZmYg
LS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmNwcCBiL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuY3BwCmluZGV4IDhmNTQ1Nzgu
LjhjNTA3MjkgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNl
QWdlbnQuY3BwCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQu
Y3BwCkBAIC04Nyw3ICs4Nyw2IEBAIGJvb2wgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6cmVzb3Vy
Y2VDb250ZW50KEZyYW1lKiBmcmFtZSwgY29uc3QgS1VSTCYgdXJsLCBTdHJpCiAKIGJvb2wgSW5z
cGVjdG9yUmVzb3VyY2VBZ2VudDo6cmVzb3VyY2VDb250ZW50QmFzZTY0KEZyYW1lKiBmcmFtZSwg
Y29uc3QgS1VSTCYgdXJsLCBTdHJpbmcqIHJlc3VsdCkKIHsKLSAgICBWZWN0b3I8Y2hhcj4gb3V0
OwogICAgIFN0cmluZyB0ZXh0RW5jb2RpbmdOYW1lOwogICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IGRhdGEgPSBJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpyZXNvdXJjZURhdGEoZnJhbWUsIHVybCwg
JnRleHRFbmNvZGluZ05hbWUpOwogICAgIGlmICghZGF0YSkgewpAQCAtOTUsOCArOTQsNyBAQCBi
b29sIEluc3BlY3RvclJlc291cmNlQWdlbnQ6OnJlc291cmNlQ29udGVudEJhc2U2NChGcmFtZSog
ZnJhbWUsIGNvbnN0IEtVUkwmIHVybAogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0g
ICAgYmFzZTY0RW5jb2RlKGRhdGEtPmJ1ZmZlcigpLCBvdXQpOwotICAgICpyZXN1bHQgPSBTdHJp
bmcob3V0LmRhdGEoKSwgb3V0LnNpemUoKSk7CisgICAgKnJlc3VsdCA9IGJhc2U2NEVuY29kZShk
YXRhLT5idWZmZXIoKSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKZGlmZiAtLWdpdCBhL1dlYkNv
cmUvcGFnZS9ET01XaW5kb3cuY3BwIGIvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAKaW5kZXgg
ZTYyOTYwZi4uMGU1ZjY5NCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAK
KysrIGIvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAKQEAgLTk3NCwxMyArOTc0LDggQEAgU3Ry
aW5nIERPTVdpbmRvdzo6YnRvYShjb25zdCBTdHJpbmcmIHN0cmluZ1RvRW5jb2RlLCBFeGNlcHRp
b25Db2RlJiBlYykKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogICAgIH0KIAotICAgIFZlY3Rv
cjxjaGFyPiBpbjsKLSAgICBpbi5hcHBlbmQoc3RyaW5nVG9FbmNvZGUuY2hhcmFjdGVycygpLCBz
dHJpbmdUb0VuY29kZS5sZW5ndGgoKSk7Ci0gICAgVmVjdG9yPGNoYXI+IG91dDsKLQotICAgIGJh
c2U2NEVuY29kZShpbiwgb3V0KTsKLQotICAgIHJldHVybiBTdHJpbmcob3V0LmRhdGEoKSwgb3V0
LnNpemUoKSk7CisgICAgQ1N0cmluZyBpbiA9IHN0cmluZ1RvRW5jb2RlLmxhdGluMSgpOworICAg
IHJldHVybiBiYXNlNjRFbmNvZGUoaW4uZGF0YSgpLCBpbi5sZW5ndGgoKSk7CiB9CiAKIFN0cmlu
ZyBET01XaW5kb3c6OmF0b2IoY29uc3QgU3RyaW5nJiBlbmNvZGVkU3RyaW5nLCBFeGNlcHRpb25D
b2RlJiBlYykKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9Gb250
Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9G
b250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcAppbmRleCAxNjFmZWU5Li4wNTljZWEyIDEwMDY0NAot
LS0gYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvRm9udEN1c3RvbVBsYXRmb3JtRGF0
YS5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL0ZvbnRDdXN0b21QbGF0
Zm9ybURhdGEuY3BwCkBAIC0xMTQsMTMgKzExNCwxMiBAQCBGb250UGxhdGZvcm1EYXRhIEZvbnRD
dXN0b21QbGF0Zm9ybURhdGE6OmZvbnRQbGF0Zm9ybURhdGEoaW50IHNpemUsIGJvb2wgYm9sZCwg
YgogLy8gbm90IGFsbG93IGFjY2VzcyBmcm9tIENTUy4KIHN0YXRpYyBTdHJpbmcgY3JlYXRlVW5p
cXVlRm9udE5hbWUoKQogewotICAgIFZlY3RvcjxjaGFyPiBmb250VXVpZChzaXplb2YoR1VJRCkp
OwotICAgIENvQ3JlYXRlR3VpZChyZWludGVycHJldF9jYXN0PEdVSUQqPihmb250VXVpZC5kYXRh
KCkpKTsKKyAgICBHVUlEIGZvbnRVdWlkOworICAgIENvQ3JlYXRlR3VpZCgmZm9udFV1aWQpOwog
Ci0gICAgVmVjdG9yPGNoYXI+IGZvbnROYW1lVmVjdG9yOwotICAgIGJhc2U2NEVuY29kZShmb250
VXVpZCwgZm9udE5hbWVWZWN0b3IpOwotICAgIEFTU0VSVChmb250TmFtZVZlY3Rvci5zaXplKCkg
PCBMRl9GQUNFU0laRSk7Ci0gICAgcmV0dXJuIFN0cmluZyhmb250TmFtZVZlY3Rvci5kYXRhKCks
IGZvbnROYW1lVmVjdG9yLnNpemUoKSk7CisgICAgU3RyaW5nIGZvbnROYW1lID0gYmFzZTY0RW5j
b2RlKHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KGZvbnRVdWlkKSwgc2l6ZW9mKGZvbnRVdWlkKSk7
CisgICAgQVNTRVJUKGZvbnROYW1lLmxlbmd0aCgpIDwgTEZfRkFDRVNJWkUpOworICAgIHJldHVy
biBmb250TmFtZTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwCmluZGV4IDljYWU5OWIuLjE4
NzQ1NmUgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0
b21QbGF0Zm9ybURhdGEuY3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0Zv
bnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwCkBAIC0xNTQsMTMgKzE1NCwxMiBAQCBzdGF0aWMgdW5z
aWduZWQgbG9uZyBXSU5BUElWIHJlYWRFbWJlZFByb2Modm9pZCogc3RyZWFtLCB2b2lkKiBidWZm
ZXIsIHVuc2lnbmVkCiAvLyBub3QgYWxsb3cgYWNjZXNzIGZyb20gQ1NTLgogc3RhdGljIFN0cmlu
ZyBjcmVhdGVVbmlxdWVGb250TmFtZSgpCiB7Ci0gICAgVmVjdG9yPGNoYXI+IGZvbnRVdWlkKHNp
emVvZihHVUlEKSk7Ci0gICAgQ29DcmVhdGVHdWlkKHJlaW50ZXJwcmV0X2Nhc3Q8R1VJRCo+KGZv
bnRVdWlkLmRhdGEoKSkpOworICAgIEdVSUQgZm9udFV1aWQ7CisgICAgQ29DcmVhdGVHdWlkKCZm
b250VXVpZCk7CiAKLSAgICBWZWN0b3I8Y2hhcj4gZm9udE5hbWVWZWN0b3I7Ci0gICAgYmFzZTY0
RW5jb2RlKGZvbnRVdWlkLCBmb250TmFtZVZlY3Rvcik7Ci0gICAgQVNTRVJUKGZvbnROYW1lVmVj
dG9yLnNpemUoKSA8IExGX0ZBQ0VTSVpFKTsKLSAgICByZXR1cm4gU3RyaW5nKGZvbnROYW1lVmVj
dG9yLmRhdGEoKSwgZm9udE5hbWVWZWN0b3Iuc2l6ZSgpKTsKKyAgICBTdHJpbmcgZm9udE5hbWUg
PSBiYXNlNjRFbmNvZGUocmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oZm9udFV1aWQpLCBzaXplb2Yo
Zm9udFV1aWQpKTsKKyAgICBBU1NFUlQoZm9udE5hbWUubGVuZ3RoKCkgPCBMRl9GQUNFU0laRSk7
CisgICAgcmV0dXJuIGZvbnROYW1lOwogfQogCiBGb250Q3VzdG9tUGxhdGZvcm1EYXRhKiBjcmVh
dGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKFNoYXJlZEJ1ZmZlciogYnVmZmVyKQpkaWZmIC0tZ2l0
IGEvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW5jZS9Gb250Q3VzdG9tUGxhdGZvcm1EYXRh
LmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luY2UvRm9udEN1c3RvbVBsYXRmb3Jt
RGF0YS5jcHAKaW5kZXggZjYxYWU4ZS4uMmViYTdiMyAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy93aW5jZS9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcAorKysgYi9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbmNlL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwCkBA
IC01OSwxNiArNTksMTQgQEAgRm9udFBsYXRmb3JtRGF0YSBGb250Q3VzdG9tUGxhdGZvcm1EYXRh
Ojpmb250UGxhdGZvcm1EYXRhKGludCBzaXplLCBib29sIGJvbGQsIGIKIC8vIG5vdCBhbGxvdyBh
Y2Nlc3MgZnJvbSBDU1MuCiBzdGF0aWMgU3RyaW5nIGNyZWF0ZVVuaXF1ZUZvbnROYW1lKCkKIHsK
LSAgICBWZWN0b3I8Y2hhcj4gZm9udFV1aWQoc2l6ZW9mKEdVSUQpKTsKKyAgICBHVUlEIGZvbnRV
dWlkOwogCi0gICAgdW5zaWduZWQgaW50KiBwdHIgPSByZWludGVycHJldF9jYXN0PHVuc2lnbmVk
IGludCo+KGZvbnRVdWlkLmRhdGEoKSk7CisgICAgdW5zaWduZWQgaW50KiBwdHIgPSByZWludGVy
cHJldF9jYXN0PHVuc2lnbmVkIGludCo+KCZmb250VXVpZCk7CiAgICAgZm9yIChpbnQgaSA9IDA7
IGkgPCBzaXplb2YoR1VJRCkgLyBzaXplb2YoaW50KSA7ICsraSkKICAgICAgICAgKihwdHIgKyBp
KSA9IHN0YXRpY19jYXN0PHVuc2lnbmVkIGludD4ocmFuZG9tTnVtYmVyKCkgKiAoc3RkOjpudW1l
cmljX2xpbWl0czx1bnNpZ25lZD46Om1heCgpICsgMS4wKSk7CiAKLSAgICBWZWN0b3I8Y2hhcj4g
Zm9udE5hbWVWZWN0b3I7Ci0gICAgYmFzZTY0RW5jb2RlKGZvbnRVdWlkLCBmb250TmFtZVZlY3Rv
cik7Ci0gICAgQVNTRVJUKGZvbnROYW1lVmVjdG9yLnNpemUoKSA8IExGX0ZBQ0VTSVpFKTsKLSAg
ICBTdHJpbmcgZm9udE5hbWUoZm9udE5hbWVWZWN0b3IuZGF0YSgpLCBmb250TmFtZVZlY3Rvci5z
aXplKCkpOworICAgIFN0cmluZyBmb250TmFtZSA9IGJhc2U2NEVuY29kZShyZWludGVycHJldF9j
YXN0PGNoYXIqPihmb250VXVpZCksIHNpemVvZihmb250VXVpZCkpOworICAgIEFTU0VSVChmb250
TmFtZS5sZW5ndGgoKSA8IExGX0ZBQ0VTSVpFKTsKICAgICByZXR1cm4gZm9udE5hbWUucmVwbGFj
ZSgnLycsICdfJyk7CiB9CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
Zi9SZXNvdXJjZUhhbmRsZUNGTmV0LmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9S
ZXNvdXJjZUhhbmRsZUNGTmV0LmNwcAppbmRleCBmMDc3M2QyLi5hZjJlNWE2IDEwMDY0NAotLS0g
YS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRk5ldC5jcHAKKysr
IGIvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZOZXQuY3BwCkBA
IC0xMjUsMTEgKzEyNSw3IEBAIHN0YXRpYyB2b2lkIHNldERlZmF1bHRNSU1FVHlwZShDRlVSTFJl
c3BvbnNlUmVmIHJlc3BvbnNlKQogc3RhdGljIFN0cmluZyBlbmNvZGVCYXNpY0F1dGhvcml6YXRp
b24oY29uc3QgU3RyaW5nJiB1c2VyLCBjb25zdCBTdHJpbmcmIHBhc3N3b3JkKQogewogICAgIENT
dHJpbmcgdW5lbmNvZGVkU3RyaW5nID0gKHVzZXIgKyAiOiIgKyBwYXNzd29yZCkudXRmOCgpOwot
ICAgIFZlY3RvcjxjaGFyPiB1bmVuY29kZWQodW5lbmNvZGVkU3RyaW5nLmxlbmd0aCgpKTsKLSAg
ICBzdGQ6OmNvcHkodW5lbmNvZGVkU3RyaW5nLmRhdGEoKSwgdW5lbmNvZGVkU3RyaW5nLmRhdGEo
KSArIHVuZW5jb2RlZFN0cmluZy5sZW5ndGgoKSwgdW5lbmNvZGVkLmJlZ2luKCkpOwotICAgIFZl
Y3RvcjxjaGFyPiBlbmNvZGVkOwotICAgIGJhc2U2NEVuY29kZSh1bmVuY29kZWQsIGVuY29kZWQp
OwotICAgIHJldHVybiBTdHJpbmcoZW5jb2RlZC5kYXRhKCksIGVuY29kZWQuc2l6ZSgpKTsKKyAg
ICByZXR1cm4gYmFzZTY0RW5jb2RlKHVuZW5jb2RlZFN0cmluZy5kYXRhKCksIHVuZW5jb2RlZFN0
cmluZy5sZW5ndGgoKSk7CiB9CiAKIENGVVJMUmVxdWVzdFJlZiB3aWxsU2VuZFJlcXVlc3QoQ0ZV
UkxDb25uZWN0aW9uUmVmIGNvbm4sIENGVVJMUmVxdWVzdFJlZiBjZlJlcXVlc3QsIENGVVJMUmVz
cG9uc2VSZWYgY2ZSZWRpcmVjdFJlc3BvbnNlLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQpkaWZm
IC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZUhhbmRsZU1hYy5t
bSBiL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VIYW5kbGVNYWMubW0KaW5k
ZXggY2FhMzNkNy4uYWNlNTBkYSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3Jr
L21hYy9SZXNvdXJjZUhhbmRsZU1hYy5tbQorKysgYi9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
bWFjL1Jlc291cmNlSGFuZGxlTWFjLm1tCkBAIC0xNjMsMTEgKzE2Myw3IEBAIHB1YmxpYzoKIHN0
YXRpYyBTdHJpbmcgZW5jb2RlQmFzaWNBdXRob3JpemF0aW9uKGNvbnN0IFN0cmluZyYgdXNlciwg
Y29uc3QgU3RyaW5nJiBwYXNzd29yZCkKIHsKICAgICBDU3RyaW5nIHVuZW5jb2RlZFN0cmluZyA9
ICh1c2VyICsgIjoiICsgcGFzc3dvcmQpLnV0ZjgoKTsKLSAgICBWZWN0b3I8Y2hhcj4gdW5lbmNv
ZGVkKHVuZW5jb2RlZFN0cmluZy5sZW5ndGgoKSk7Ci0gICAgc3RkOjpjb3B5KHVuZW5jb2RlZFN0
cmluZy5kYXRhKCksIHVuZW5jb2RlZFN0cmluZy5kYXRhKCkgKyB1bmVuY29kZWRTdHJpbmcubGVu
Z3RoKCksIHVuZW5jb2RlZC5iZWdpbigpKTsKLSAgICBWZWN0b3I8Y2hhcj4gZW5jb2RlZDsKLSAg
ICBiYXNlNjRFbmNvZGUodW5lbmNvZGVkLCBlbmNvZGVkKTsKLSAgICByZXR1cm4gU3RyaW5nKGVu
Y29kZWQuZGF0YSgpLCBlbmNvZGVkLnNpemUoKSk7CisgICAgcmV0dXJuIGJhc2U2NEVuY29kZSh1
bmVuY29kZWRTdHJpbmcuZGF0YSgpLCB1bmVuY29kZWRTdHJpbmcubGVuZ3RoKCkpOwogfQogI2Vu
ZGlmCiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9CYXNlNjQuY3BwIGIvV2Vi
Q29yZS9wbGF0Zm9ybS90ZXh0L0Jhc2U2NC5jcHAKaW5kZXggOThiNTM3YS4uMmZkNWI5MiAxMDA2
NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L0Jhc2U2NC5jcHAKKysrIGIvV2ViQ29yZS9w
bGF0Zm9ybS90ZXh0L0Jhc2U2NC5jcHAKQEAgLTYwLDEyICs2MCwxOCBAQCBzdGF0aWMgY29uc3Qg
Y2hhciBiYXNlNjREZWNNYXBbMTI4XSA9IHsKICAgICAweDMxLCAweDMyLCAweDMzLCAweDAwLCAw
eDAwLCAweDAwLCAweDAwLCAweDAwCiB9OwogCitTdHJpbmcgYmFzZTY0RW5jb2RlKGNvbnN0IFZl
Y3RvcjxjaGFyPiYgaW4sIGJvb2wgaW5zZXJ0TEZzKQoreworICAgIHJldHVybiBiYXNlNjRFbmNv
ZGUoaW4uZGF0YSgpLCBpbi5zaXplKCksIGluc2VydExGcyk7Cit9CisKIHZvaWQgYmFzZTY0RW5j
b2RlKGNvbnN0IFZlY3RvcjxjaGFyPiYgaW4sIFZlY3RvcjxjaGFyPiYgb3V0LCBib29sIGluc2Vy
dExGcykKIHsKICAgICBiYXNlNjRFbmNvZGUoaW4uZGF0YSgpLCBpbi5zaXplKCksIG91dCwgaW5z
ZXJ0TEZzKTsKIH0KIAotdm9pZCBiYXNlNjRFbmNvZGUoY29uc3QgY2hhciogZGF0YSwgdW5zaWdu
ZWQgbGVuLCBWZWN0b3I8Y2hhcj4mIG91dCwgYm9vbCBpbnNlcnRMRnMpCit0ZW1wbGF0ZTx0eXBl
bmFtZSBUPgorc3RhdGljIGlubGluZSB2b2lkIGJhc2U2NEVuY29kZUludGVybmFsKGNvbnN0IGNo
YXIqIGRhdGEsIHVuc2lnbmVkIGxlbiwgVmVjdG9yPFQ+JiBvdXQsIGJvb2wgaW5zZXJ0TEZzKQog
ewogICAgIG91dC5jbGVhcigpOwogICAgIGlmICghbGVuKQpAQCAtMTI2LDYgKzEzMiwxOSBAQCB2
b2lkIGJhc2U2NEVuY29kZShjb25zdCBjaGFyKiBkYXRhLCB1bnNpZ25lZCBsZW4sIFZlY3Rvcjxj
aGFyPiYgb3V0LCBib29sIGluc2VydAogICAgIH0KIH0KIAorU3RyaW5nIGJhc2U2NEVuY29kZShj
b25zdCBjaGFyKiBkYXRhLCB1bnNpZ25lZCBsZW4sIGJvb2wgaW5zZXJ0TEZzKQoreworICAgIFZl
Y3RvcjxVQ2hhcj4gb3V0OworICAgIGJhc2U2NEVuY29kZUludGVybmFsPFVDaGFyPihkYXRhLCBs
ZW4sIG91dCwgaW5zZXJ0TEZzKTsKKyAgICByZXR1cm4gU3RyaW5nOjphZG9wdChvdXQpOworfQor
Cit2b2lkIGJhc2U2NEVuY29kZShjb25zdCBjaGFyKiBkYXRhLCB1bnNpZ25lZCBsZW4sIFZlY3Rv
cjxjaGFyPiYgb3V0LCBib29sIGluc2VydExGcykKK3sJCisgICAgYmFzZTY0RW5jb2RlSW50ZXJu
YWw8Y2hhcj4oZGF0YSwgbGVuLCBvdXQsIGluc2VydExGcyk7Cit9CisKKwogYm9vbCBiYXNlNjRE
ZWNvZGUoY29uc3QgVmVjdG9yPGNoYXI+JiBpbiwgVmVjdG9yPGNoYXI+JiBvdXQsIEJhc2U2NERl
Y29kZVBvbGljeSBwb2xpY3kpCiB7CiAgICAgb3V0LmNsZWFyKCk7CmRpZmYgLS1naXQgYS9XZWJD
b3JlL3BsYXRmb3JtL3RleHQvQmFzZTY0LmggYi9XZWJDb3JlL3BsYXRmb3JtL3RleHQvQmFzZTY0
LmgKaW5kZXggMjExYmQzYy4uMzQ0ODEwMCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS90
ZXh0L0Jhc2U2NC5oCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9CYXNlNjQuaApAQCAtMzYs
MTEgKzM2LDEzIEBAIGVudW0gQmFzZTY0RGVjb2RlUG9saWN5IHsgRmFpbE9uSW52YWxpZENoYXJh
Y3RlciwgSWdub3JlV2hpdGVzcGFjZSwgSWdub3JlSW52YWxpCiAKIHZvaWQgYmFzZTY0RW5jb2Rl
KGNvbnN0IFZlY3RvcjxjaGFyPiYsIFZlY3RvcjxjaGFyPiYsIGJvb2wgaW5zZXJ0TEZzID0gZmFs
c2UpOwogdm9pZCBiYXNlNjRFbmNvZGUoY29uc3QgY2hhciosIHVuc2lnbmVkLCBWZWN0b3I8Y2hh
cj4mLCBib29sIGluc2VydExGcyA9IGZhbHNlKTsKK1N0cmluZyBiYXNlNjRFbmNvZGUoY29uc3Qg
VmVjdG9yPGNoYXI+JiwgYm9vbCBpbnNlcnRMRnMgPSBmYWxzZSk7CitTdHJpbmcgYmFzZTY0RW5j
b2RlKGNvbnN0IGNoYXIqLCB1bnNpZ25lZCwgYm9vbCBpbnNlcnRMRnMgPSBmYWxzZSk7CiAKIGJv
b2wgYmFzZTY0RGVjb2RlKGNvbnN0IFN0cmluZyYsIFZlY3RvcjxjaGFyPiYsIEJhc2U2NERlY29k
ZVBvbGljeSA9IEZhaWxPbkludmFsaWRDaGFyYWN0ZXIpOwogYm9vbCBiYXNlNjREZWNvZGUoY29u
c3QgVmVjdG9yPGNoYXI+JiwgVmVjdG9yPGNoYXI+JiwgQmFzZTY0RGVjb2RlUG9saWN5ID0gRmFp
bE9uSW52YWxpZENoYXJhY3Rlcik7CiBib29sIGJhc2U2NERlY29kZShjb25zdCBjaGFyKiwgdW5z
aWduZWQsIFZlY3RvcjxjaGFyPiYsIEJhc2U2NERlY29kZVBvbGljeSA9IEZhaWxPbkludmFsaWRD
aGFyYWN0ZXIpOwogCi19Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBCYXNl
NjRfaApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS93aW5jZS9LZXlnZW5XaW5DRS5jcHAg
Yi9XZWJDb3JlL3BsYXRmb3JtL3dpbmNlL0tleWdlbldpbkNFLmNwcAppbmRleCAwYzFiM2M2Li44
NTM3ZjQ0IDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL3dpbmNlL0tleWdlbldpbkNFLmNw
cAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL3dpbmNlL0tleWdlbldpbkNFLmNwcApAQCAtODAsMTAg
KzgwLDcgQEAgU3RyaW5nIFdlYkNvcmU6OnNpZ25lZFB1YmxpY0tleUFuZENoYWxsZW5nZVN0cmlu
Zyh1bnNpZ25lZCBpbmRleCwgY29uc3QgU3RyaW5nJgogICAgICAgICBpZiAoIUNyeXB0U2lnbkFu
ZEVuY29kZUNlcnRpZmljYXRlKGhDb250ZXh0LCBBVF9LRVlFWENIQU5HRSwgWDUwOV9BU05fRU5D
T0RJTkcsIFg1MDlfS0VZR0VOX1JFUVVFU1RfVE9fQkVfU0lHTkVELCAmcmVxdWVzdEluZm8sICZz
aWduQWxnbywgMCwgcmVpbnRlcnByZXRfY2FzdDxMUEJZVEU+KGJpbmFyeS5kYXRhKCkpLCAmZHdF
bmNvZGVkTGVuZ3RoKSkKICAgICAgICAgICAgIGJyZWFrOwogCi0gICAgICAgIFZlY3RvcjxjaGFy
PiBiYXNlNjQ7Ci0gICAgICAgIGJhc2U2NEVuY29kZShiaW5hcnksIGJhc2U2NCk7Ci0gICAgICAg
IGtleVN0cmluZyA9IFN0cmluZyhiYXNlNjQuZGF0YSgpLCBiYXNlNjQuc2l6ZSgpKTsKLQorICAg
ICAgICBrZXlTdHJpbmcgPSBiYXNlNjRFbmNvZGUoYmluYXJ5KTsKICAgICB9IHdoaWxlKDApOwog
CiAgICAgaWYgKHBQdWJJbmZvKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>77467</attachid>
            <date>2010-12-26 16:39:37 -0800</date>
            <delta_ts>2011-01-23 10:39:12 -0800</delta_ts>
            <desc>Alternative Patch</desc>
            <filename>bug-50122b.patch</filename>
            <type>text/plain</type>
            <size>11194</size>
            <attacher name="Patrick R. Gansterer">paroga</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1dlYkNvcmUvQ2hhbmdlTG9nIGIvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXgg
ZDcwMjM0OC4uNDhlY2ZjOCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvV2Vi
Q29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMyBAQAorMjAxMC0xMi0yNyAgUGF0cmljayBHYW5z
dGVyZXIgIDxwYXJvZ2FAd2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICBBZGQgYW4gb3ZlcmxvYWQgdG8gYmFzZTY0RW5jb2RlIHdpdGgg
U3RyaW5nIG91dHB1dAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9NTAxMjIKKworICAgICAgICBBdm9pZCBhZGRpdGlvbmFsIG1hbGxvYyArIG1lbWNweSB3
aGVuIG91dHB1dCBuZWVkcyB0byBiZSBhIFN0cmluZy4KKworICAgICAgICAqIGluc3BlY3Rvci9J
bnNwZWN0b3JSZXNvdXJjZUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclJl
c291cmNlQWdlbnQ6OnJlc291cmNlQ29udGVudEJhc2U2NCk6CisgICAgICAgICogcGFnZS9ET01X
aW5kb3cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NV2luZG93OjpidG9hKToKKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9za2lhL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6Y3JlYXRlVW5pcXVlRm9udE5hbWUpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmNyZWF0ZVVuaXF1ZUZvbnROYW1lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93
aW5jZS9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0
ZVVuaXF1ZUZvbnROYW1lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNl
SGFuZGxlQ0ZOZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZW5jb2RlQmFzaWNBdXRob3JpemF0
aW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZUhhbmRsZU1hYy5t
bToKKyAgICAgICAgKFdlYkNvcmU6OmVuY29kZUJhc2ljQXV0aG9yaXphdGlvbik6CisgICAgICAg
ICogcGxhdGZvcm0vdGV4dC9CYXNlNjQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6YmFzZTY0RW5j
b2RlKToKKyAgICAgICAgKFdlYkNvcmU6OmJhc2U2NEVuY29kZUludGVybmFsKToKKyAgICAgICAg
KiBwbGF0Zm9ybS90ZXh0L0Jhc2U2NC5oOgorICAgICAgICAqIHBsYXRmb3JtL3dpbmNlL0tleWdl
bldpbkNFLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkNvcmU6OnNpZ25lZFB1YmxpY0tleUFu
ZENoYWxsZW5nZVN0cmluZyk6CisKIDIwMTAtMTItMjYgIFBhdHJpY2sgR2Fuc3RlcmVyICA8cGFy
b2dhQHdlYmtpdC5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRXJpYyBTZWlkZWwuCmRpZmYg
LS1naXQgYS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmNwcCBiL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuY3BwCmluZGV4IDhmNTQ1Nzgu
LjhjNTA3MjkgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNl
QWdlbnQuY3BwCisrKyBiL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQu
Y3BwCkBAIC04Nyw3ICs4Nyw2IEBAIGJvb2wgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6cmVzb3Vy
Y2VDb250ZW50KEZyYW1lKiBmcmFtZSwgY29uc3QgS1VSTCYgdXJsLCBTdHJpCiAKIGJvb2wgSW5z
cGVjdG9yUmVzb3VyY2VBZ2VudDo6cmVzb3VyY2VDb250ZW50QmFzZTY0KEZyYW1lKiBmcmFtZSwg
Y29uc3QgS1VSTCYgdXJsLCBTdHJpbmcqIHJlc3VsdCkKIHsKLSAgICBWZWN0b3I8Y2hhcj4gb3V0
OwogICAgIFN0cmluZyB0ZXh0RW5jb2RpbmdOYW1lOwogICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IGRhdGEgPSBJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpyZXNvdXJjZURhdGEoZnJhbWUsIHVybCwg
JnRleHRFbmNvZGluZ05hbWUpOwogICAgIGlmICghZGF0YSkgewpAQCAtOTUsOCArOTQsNyBAQCBi
b29sIEluc3BlY3RvclJlc291cmNlQWdlbnQ6OnJlc291cmNlQ29udGVudEJhc2U2NChGcmFtZSog
ZnJhbWUsIGNvbnN0IEtVUkwmIHVybAogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0g
ICAgYmFzZTY0RW5jb2RlKGRhdGEtPmJ1ZmZlcigpLCBvdXQpOwotICAgICpyZXN1bHQgPSBTdHJp
bmcob3V0LmRhdGEoKSwgb3V0LnNpemUoKSk7CisgICAgKnJlc3VsdCA9IGJhc2U2NEVuY29kZShk
YXRhLT5idWZmZXIoKSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKZGlmZiAtLWdpdCBhL1dlYkNv
cmUvcGFnZS9ET01XaW5kb3cuY3BwIGIvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAKaW5kZXgg
ZTYyOTYwZi4uMGU1ZjY5NCAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAK
KysrIGIvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAKQEAgLTk3NCwxMyArOTc0LDggQEAgU3Ry
aW5nIERPTVdpbmRvdzo6YnRvYShjb25zdCBTdHJpbmcmIHN0cmluZ1RvRW5jb2RlLCBFeGNlcHRp
b25Db2RlJiBlYykKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogICAgIH0KIAotICAgIFZlY3Rv
cjxjaGFyPiBpbjsKLSAgICBpbi5hcHBlbmQoc3RyaW5nVG9FbmNvZGUuY2hhcmFjdGVycygpLCBz
dHJpbmdUb0VuY29kZS5sZW5ndGgoKSk7Ci0gICAgVmVjdG9yPGNoYXI+IG91dDsKLQotICAgIGJh
c2U2NEVuY29kZShpbiwgb3V0KTsKLQotICAgIHJldHVybiBTdHJpbmcob3V0LmRhdGEoKSwgb3V0
LnNpemUoKSk7CisgICAgQ1N0cmluZyBpbiA9IHN0cmluZ1RvRW5jb2RlLmxhdGluMSgpOworICAg
IHJldHVybiBiYXNlNjRFbmNvZGUoaW4uZGF0YSgpLCBpbi5sZW5ndGgoKSk7CiB9CiAKIFN0cmlu
ZyBET01XaW5kb3c6OmF0b2IoY29uc3QgU3RyaW5nJiBlbmNvZGVkU3RyaW5nLCBFeGNlcHRpb25D
b2RlJiBlYykKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9Gb250
Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9G
b250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcAppbmRleCAxNjFmZWU5Li4wNTljZWEyIDEwMDY0NAot
LS0gYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvRm9udEN1c3RvbVBsYXRmb3JtRGF0
YS5jcHAKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL0ZvbnRDdXN0b21QbGF0
Zm9ybURhdGEuY3BwCkBAIC0xMTQsMTMgKzExNCwxMiBAQCBGb250UGxhdGZvcm1EYXRhIEZvbnRD
dXN0b21QbGF0Zm9ybURhdGE6OmZvbnRQbGF0Zm9ybURhdGEoaW50IHNpemUsIGJvb2wgYm9sZCwg
YgogLy8gbm90IGFsbG93IGFjY2VzcyBmcm9tIENTUy4KIHN0YXRpYyBTdHJpbmcgY3JlYXRlVW5p
cXVlRm9udE5hbWUoKQogewotICAgIFZlY3RvcjxjaGFyPiBmb250VXVpZChzaXplb2YoR1VJRCkp
OwotICAgIENvQ3JlYXRlR3VpZChyZWludGVycHJldF9jYXN0PEdVSUQqPihmb250VXVpZC5kYXRh
KCkpKTsKKyAgICBHVUlEIGZvbnRVdWlkOworICAgIENvQ3JlYXRlR3VpZCgmZm9udFV1aWQpOwog
Ci0gICAgVmVjdG9yPGNoYXI+IGZvbnROYW1lVmVjdG9yOwotICAgIGJhc2U2NEVuY29kZShmb250
VXVpZCwgZm9udE5hbWVWZWN0b3IpOwotICAgIEFTU0VSVChmb250TmFtZVZlY3Rvci5zaXplKCkg
PCBMRl9GQUNFU0laRSk7Ci0gICAgcmV0dXJuIFN0cmluZyhmb250TmFtZVZlY3Rvci5kYXRhKCks
IGZvbnROYW1lVmVjdG9yLnNpemUoKSk7CisgICAgU3RyaW5nIGZvbnROYW1lID0gYmFzZTY0RW5j
b2RlKHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KCZmb250VXVpZCksIHNpemVvZihmb250VXVpZCkp
OworICAgIEFTU0VSVChmb250TmFtZS5sZW5ndGgoKSA8IExGX0ZBQ0VTSVpFKTsKKyAgICByZXR1
cm4gZm9udE5hbWU7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAgYi9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcAppbmRleCA5Y2FlOTliLi4x
ODc0NTZlIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3Vz
dG9tUGxhdGZvcm1EYXRhLmNwcAorKysgYi9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9G
b250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcApAQCAtMTU0LDEzICsxNTQsMTIgQEAgc3RhdGljIHVu
c2lnbmVkIGxvbmcgV0lOQVBJViByZWFkRW1iZWRQcm9jKHZvaWQqIHN0cmVhbSwgdm9pZCogYnVm
ZmVyLCB1bnNpZ25lZAogLy8gbm90IGFsbG93IGFjY2VzcyBmcm9tIENTUy4KIHN0YXRpYyBTdHJp
bmcgY3JlYXRlVW5pcXVlRm9udE5hbWUoKQogewotICAgIFZlY3RvcjxjaGFyPiBmb250VXVpZChz
aXplb2YoR1VJRCkpOwotICAgIENvQ3JlYXRlR3VpZChyZWludGVycHJldF9jYXN0PEdVSUQqPihm
b250VXVpZC5kYXRhKCkpKTsKKyAgICBHVUlEIGZvbnRVdWlkOworICAgIENvQ3JlYXRlR3VpZCgm
Zm9udFV1aWQpOwogCi0gICAgVmVjdG9yPGNoYXI+IGZvbnROYW1lVmVjdG9yOwotICAgIGJhc2U2
NEVuY29kZShmb250VXVpZCwgZm9udE5hbWVWZWN0b3IpOwotICAgIEFTU0VSVChmb250TmFtZVZl
Y3Rvci5zaXplKCkgPCBMRl9GQUNFU0laRSk7Ci0gICAgcmV0dXJuIFN0cmluZyhmb250TmFtZVZl
Y3Rvci5kYXRhKCksIGZvbnROYW1lVmVjdG9yLnNpemUoKSk7CisgICAgU3RyaW5nIGZvbnROYW1l
ID0gYmFzZTY0RW5jb2RlKHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KCZmb250VXVpZCksIHNpemVv
Zihmb250VXVpZCkpOworICAgIEFTU0VSVChmb250TmFtZS5sZW5ndGgoKSA8IExGX0ZBQ0VTSVpF
KTsKKyAgICByZXR1cm4gZm9udE5hbWU7CiB9CiAKIEZvbnRDdXN0b21QbGF0Zm9ybURhdGEqIGNy
ZWF0ZUZvbnRDdXN0b21QbGF0Zm9ybURhdGEoU2hhcmVkQnVmZmVyKiBidWZmZXIpCmRpZmYgLS1n
aXQgYS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbmNlL0ZvbnRDdXN0b21QbGF0Zm9ybURh
dGEuY3BwIGIvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW5jZS9Gb250Q3VzdG9tUGxhdGZv
cm1EYXRhLmNwcAppbmRleCBmNjFhZThlLi4yZWJhN2IzIDEwMDY0NAotLS0gYS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL3dpbmNlL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwCisrKyBiL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luY2UvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAK
QEAgLTU5LDE2ICs1OSwxNCBAQCBGb250UGxhdGZvcm1EYXRhIEZvbnRDdXN0b21QbGF0Zm9ybURh
dGE6OmZvbnRQbGF0Zm9ybURhdGEoaW50IHNpemUsIGJvb2wgYm9sZCwgYgogLy8gbm90IGFsbG93
IGFjY2VzcyBmcm9tIENTUy4KIHN0YXRpYyBTdHJpbmcgY3JlYXRlVW5pcXVlRm9udE5hbWUoKQog
ewotICAgIFZlY3RvcjxjaGFyPiBmb250VXVpZChzaXplb2YoR1VJRCkpOworICAgIEdVSUQgZm9u
dFV1aWQ7CiAKLSAgICB1bnNpZ25lZCBpbnQqIHB0ciA9IHJlaW50ZXJwcmV0X2Nhc3Q8dW5zaWdu
ZWQgaW50Kj4oZm9udFV1aWQuZGF0YSgpKTsKKyAgICB1bnNpZ25lZCBpbnQqIHB0ciA9IHJlaW50
ZXJwcmV0X2Nhc3Q8dW5zaWduZWQgaW50Kj4oJmZvbnRVdWlkKTsKICAgICBmb3IgKGludCBpID0g
MDsgaSA8IHNpemVvZihHVUlEKSAvIHNpemVvZihpbnQpIDsgKytpKQogICAgICAgICAqKHB0ciAr
IGkpID0gc3RhdGljX2Nhc3Q8dW5zaWduZWQgaW50PihyYW5kb21OdW1iZXIoKSAqIChzdGQ6Om51
bWVyaWNfbGltaXRzPHVuc2lnbmVkPjo6bWF4KCkgKyAxLjApKTsKIAotICAgIFZlY3RvcjxjaGFy
PiBmb250TmFtZVZlY3RvcjsKLSAgICBiYXNlNjRFbmNvZGUoZm9udFV1aWQsIGZvbnROYW1lVmVj
dG9yKTsKLSAgICBBU1NFUlQoZm9udE5hbWVWZWN0b3Iuc2l6ZSgpIDwgTEZfRkFDRVNJWkUpOwot
ICAgIFN0cmluZyBmb250TmFtZShmb250TmFtZVZlY3Rvci5kYXRhKCksIGZvbnROYW1lVmVjdG9y
LnNpemUoKSk7CisgICAgU3RyaW5nIGZvbnROYW1lID0gYmFzZTY0RW5jb2RlKHJlaW50ZXJwcmV0
X2Nhc3Q8Y2hhcio+KCZmb250VXVpZCksIHNpemVvZihmb250VXVpZCkpOworICAgIEFTU0VSVChm
b250TmFtZS5sZW5ndGgoKSA8IExGX0ZBQ0VTSVpFKTsKICAgICByZXR1cm4gZm9udE5hbWUucmVw
bGFjZSgnLycsICdfJyk7CiB9CiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29y
ay9jZi9SZXNvdXJjZUhhbmRsZUNGTmV0LmNwcCBiL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9j
Zi9SZXNvdXJjZUhhbmRsZUNGTmV0LmNwcAppbmRleCBmMDc3M2QyLi5hZjJlNWE2IDEwMDY0NAot
LS0gYS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVDRk5ldC5jcHAK
KysrIGIvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNlSGFuZGxlQ0ZOZXQuY3Bw
CkBAIC0xMjUsMTEgKzEyNSw3IEBAIHN0YXRpYyB2b2lkIHNldERlZmF1bHRNSU1FVHlwZShDRlVS
TFJlc3BvbnNlUmVmIHJlc3BvbnNlKQogc3RhdGljIFN0cmluZyBlbmNvZGVCYXNpY0F1dGhvcml6
YXRpb24oY29uc3QgU3RyaW5nJiB1c2VyLCBjb25zdCBTdHJpbmcmIHBhc3N3b3JkKQogewogICAg
IENTdHJpbmcgdW5lbmNvZGVkU3RyaW5nID0gKHVzZXIgKyAiOiIgKyBwYXNzd29yZCkudXRmOCgp
OwotICAgIFZlY3RvcjxjaGFyPiB1bmVuY29kZWQodW5lbmNvZGVkU3RyaW5nLmxlbmd0aCgpKTsK
LSAgICBzdGQ6OmNvcHkodW5lbmNvZGVkU3RyaW5nLmRhdGEoKSwgdW5lbmNvZGVkU3RyaW5nLmRh
dGEoKSArIHVuZW5jb2RlZFN0cmluZy5sZW5ndGgoKSwgdW5lbmNvZGVkLmJlZ2luKCkpOwotICAg
IFZlY3RvcjxjaGFyPiBlbmNvZGVkOwotICAgIGJhc2U2NEVuY29kZSh1bmVuY29kZWQsIGVuY29k
ZWQpOwotICAgIHJldHVybiBTdHJpbmcoZW5jb2RlZC5kYXRhKCksIGVuY29kZWQuc2l6ZSgpKTsK
KyAgICByZXR1cm4gYmFzZTY0RW5jb2RlKHVuZW5jb2RlZFN0cmluZy5kYXRhKCksIHVuZW5jb2Rl
ZFN0cmluZy5sZW5ndGgoKSk7CiB9CiAKIENGVVJMUmVxdWVzdFJlZiB3aWxsU2VuZFJlcXVlc3Qo
Q0ZVUkxDb25uZWN0aW9uUmVmIGNvbm4sIENGVVJMUmVxdWVzdFJlZiBjZlJlcXVlc3QsIENGVVJM
UmVzcG9uc2VSZWYgY2ZSZWRpcmVjdFJlc3BvbnNlLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQpk
aWZmIC0tZ2l0IGEvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZUhhbmRsZU1h
Yy5tbSBiL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VIYW5kbGVNYWMubW0K
aW5kZXggY2FhMzNkNy4uYWNlNTBkYSAxMDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3
b3JrL21hYy9SZXNvdXJjZUhhbmRsZU1hYy5tbQorKysgYi9XZWJDb3JlL3BsYXRmb3JtL25ldHdv
cmsvbWFjL1Jlc291cmNlSGFuZGxlTWFjLm1tCkBAIC0xNjMsMTEgKzE2Myw3IEBAIHB1YmxpYzoK
IHN0YXRpYyBTdHJpbmcgZW5jb2RlQmFzaWNBdXRob3JpemF0aW9uKGNvbnN0IFN0cmluZyYgdXNl
ciwgY29uc3QgU3RyaW5nJiBwYXNzd29yZCkKIHsKICAgICBDU3RyaW5nIHVuZW5jb2RlZFN0cmlu
ZyA9ICh1c2VyICsgIjoiICsgcGFzc3dvcmQpLnV0ZjgoKTsKLSAgICBWZWN0b3I8Y2hhcj4gdW5l
bmNvZGVkKHVuZW5jb2RlZFN0cmluZy5sZW5ndGgoKSk7Ci0gICAgc3RkOjpjb3B5KHVuZW5jb2Rl
ZFN0cmluZy5kYXRhKCksIHVuZW5jb2RlZFN0cmluZy5kYXRhKCkgKyB1bmVuY29kZWRTdHJpbmcu
bGVuZ3RoKCksIHVuZW5jb2RlZC5iZWdpbigpKTsKLSAgICBWZWN0b3I8Y2hhcj4gZW5jb2RlZDsK
LSAgICBiYXNlNjRFbmNvZGUodW5lbmNvZGVkLCBlbmNvZGVkKTsKLSAgICByZXR1cm4gU3RyaW5n
KGVuY29kZWQuZGF0YSgpLCBlbmNvZGVkLnNpemUoKSk7CisgICAgcmV0dXJuIGJhc2U2NEVuY29k
ZSh1bmVuY29kZWRTdHJpbmcuZGF0YSgpLCB1bmVuY29kZWRTdHJpbmcubGVuZ3RoKCkpOwogfQog
I2VuZGlmCiAKZGlmZiAtLWdpdCBhL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9CYXNlNjQuY3BwIGIv
V2ViQ29yZS9wbGF0Zm9ybS90ZXh0L0Jhc2U2NC5jcHAKaW5kZXggOThiNTM3YS4uMmZkNWI5MiAx
MDA2NDQKLS0tIGEvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L0Jhc2U2NC5jcHAKKysrIGIvV2ViQ29y
ZS9wbGF0Zm9ybS90ZXh0L0Jhc2U2NC5jcHAKQEAgLTYwLDEyICs2MCwxOCBAQCBzdGF0aWMgY29u
c3QgY2hhciBiYXNlNjREZWNNYXBbMTI4XSA9IHsKICAgICAweDMxLCAweDMyLCAweDMzLCAweDAw
LCAweDAwLCAweDAwLCAweDAwLCAweDAwCiB9OwogCitTdHJpbmcgYmFzZTY0RW5jb2RlKGNvbnN0
IFZlY3RvcjxjaGFyPiYgaW4sIGJvb2wgaW5zZXJ0TEZzKQoreworICAgIHJldHVybiBiYXNlNjRF
bmNvZGUoaW4uZGF0YSgpLCBpbi5zaXplKCksIGluc2VydExGcyk7Cit9CisKIHZvaWQgYmFzZTY0
RW5jb2RlKGNvbnN0IFZlY3RvcjxjaGFyPiYgaW4sIFZlY3RvcjxjaGFyPiYgb3V0LCBib29sIGlu
c2VydExGcykKIHsKICAgICBiYXNlNjRFbmNvZGUoaW4uZGF0YSgpLCBpbi5zaXplKCksIG91dCwg
aW5zZXJ0TEZzKTsKIH0KIAotdm9pZCBiYXNlNjRFbmNvZGUoY29uc3QgY2hhciogZGF0YSwgdW5z
aWduZWQgbGVuLCBWZWN0b3I8Y2hhcj4mIG91dCwgYm9vbCBpbnNlcnRMRnMpCit0ZW1wbGF0ZTx0
eXBlbmFtZSBUPgorc3RhdGljIGlubGluZSB2b2lkIGJhc2U2NEVuY29kZUludGVybmFsKGNvbnN0
IGNoYXIqIGRhdGEsIHVuc2lnbmVkIGxlbiwgVmVjdG9yPFQ+JiBvdXQsIGJvb2wgaW5zZXJ0TEZz
KQogewogICAgIG91dC5jbGVhcigpOwogICAgIGlmICghbGVuKQpAQCAtMTI2LDYgKzEzMiwxOSBA
QCB2b2lkIGJhc2U2NEVuY29kZShjb25zdCBjaGFyKiBkYXRhLCB1bnNpZ25lZCBsZW4sIFZlY3Rv
cjxjaGFyPiYgb3V0LCBib29sIGluc2VydAogICAgIH0KIH0KIAorU3RyaW5nIGJhc2U2NEVuY29k
ZShjb25zdCBjaGFyKiBkYXRhLCB1bnNpZ25lZCBsZW4sIGJvb2wgaW5zZXJ0TEZzKQoreworICAg
IFZlY3RvcjxVQ2hhcj4gb3V0OworICAgIGJhc2U2NEVuY29kZUludGVybmFsPFVDaGFyPihkYXRh
LCBsZW4sIG91dCwgaW5zZXJ0TEZzKTsKKyAgICByZXR1cm4gU3RyaW5nOjphZG9wdChvdXQpOwor
fQorCit2b2lkIGJhc2U2NEVuY29kZShjb25zdCBjaGFyKiBkYXRhLCB1bnNpZ25lZCBsZW4sIFZl
Y3RvcjxjaGFyPiYgb3V0LCBib29sIGluc2VydExGcykKK3sKKyAgICBiYXNlNjRFbmNvZGVJbnRl
cm5hbDxjaGFyPihkYXRhLCBsZW4sIG91dCwgaW5zZXJ0TEZzKTsKK30KKworCiBib29sIGJhc2U2
NERlY29kZShjb25zdCBWZWN0b3I8Y2hhcj4mIGluLCBWZWN0b3I8Y2hhcj4mIG91dCwgQmFzZTY0
RGVjb2RlUG9saWN5IHBvbGljeSkKIHsKICAgICBvdXQuY2xlYXIoKTsKZGlmZiAtLWdpdCBhL1dl
YkNvcmUvcGxhdGZvcm0vdGV4dC9CYXNlNjQuaCBiL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9CYXNl
NjQuaAppbmRleCAyMTFiZDNjLi4zNDQ4MTAwIDEwMDY0NAotLS0gYS9XZWJDb3JlL3BsYXRmb3Jt
L3RleHQvQmFzZTY0LmgKKysrIGIvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L0Jhc2U2NC5oCkBAIC0z
NiwxMSArMzYsMTMgQEAgZW51bSBCYXNlNjREZWNvZGVQb2xpY3kgeyBGYWlsT25JbnZhbGlkQ2hh
cmFjdGVyLCBJZ25vcmVXaGl0ZXNwYWNlLCBJZ25vcmVJbnZhbGkKIAogdm9pZCBiYXNlNjRFbmNv
ZGUoY29uc3QgVmVjdG9yPGNoYXI+JiwgVmVjdG9yPGNoYXI+JiwgYm9vbCBpbnNlcnRMRnMgPSBm
YWxzZSk7CiB2b2lkIGJhc2U2NEVuY29kZShjb25zdCBjaGFyKiwgdW5zaWduZWQsIFZlY3Rvcjxj
aGFyPiYsIGJvb2wgaW5zZXJ0TEZzID0gZmFsc2UpOworU3RyaW5nIGJhc2U2NEVuY29kZShjb25z
dCBWZWN0b3I8Y2hhcj4mLCBib29sIGluc2VydExGcyA9IGZhbHNlKTsKK1N0cmluZyBiYXNlNjRF
bmNvZGUoY29uc3QgY2hhciosIHVuc2lnbmVkLCBib29sIGluc2VydExGcyA9IGZhbHNlKTsKIAog
Ym9vbCBiYXNlNjREZWNvZGUoY29uc3QgU3RyaW5nJiwgVmVjdG9yPGNoYXI+JiwgQmFzZTY0RGVj
b2RlUG9saWN5ID0gRmFpbE9uSW52YWxpZENoYXJhY3Rlcik7CiBib29sIGJhc2U2NERlY29kZShj
b25zdCBWZWN0b3I8Y2hhcj4mLCBWZWN0b3I8Y2hhcj4mLCBCYXNlNjREZWNvZGVQb2xpY3kgPSBG
YWlsT25JbnZhbGlkQ2hhcmFjdGVyKTsKIGJvb2wgYmFzZTY0RGVjb2RlKGNvbnN0IGNoYXIqLCB1
bnNpZ25lZCwgVmVjdG9yPGNoYXI+JiwgQmFzZTY0RGVjb2RlUG9saWN5ID0gRmFpbE9uSW52YWxp
ZENoYXJhY3Rlcik7CiAKLX0KK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAogI2VuZGlmIC8vIEJh
c2U2NF9oCmRpZmYgLS1naXQgYS9XZWJDb3JlL3BsYXRmb3JtL3dpbmNlL0tleWdlbldpbkNFLmNw
cCBiL1dlYkNvcmUvcGxhdGZvcm0vd2luY2UvS2V5Z2VuV2luQ0UuY3BwCmluZGV4IDBjMWIzYzYu
Ljg1MzdmNDQgMTAwNjQ0Ci0tLSBhL1dlYkNvcmUvcGxhdGZvcm0vd2luY2UvS2V5Z2VuV2luQ0Uu
Y3BwCisrKyBiL1dlYkNvcmUvcGxhdGZvcm0vd2luY2UvS2V5Z2VuV2luQ0UuY3BwCkBAIC04MCwx
MCArODAsNyBAQCBTdHJpbmcgV2ViQ29yZTo6c2lnbmVkUHVibGljS2V5QW5kQ2hhbGxlbmdlU3Ry
aW5nKHVuc2lnbmVkIGluZGV4LCBjb25zdCBTdHJpbmcmCiAgICAgICAgIGlmICghQ3J5cHRTaWdu
QW5kRW5jb2RlQ2VydGlmaWNhdGUoaENvbnRleHQsIEFUX0tFWUVYQ0hBTkdFLCBYNTA5X0FTTl9F
TkNPRElORywgWDUwOV9LRVlHRU5fUkVRVUVTVF9UT19CRV9TSUdORUQsICZyZXF1ZXN0SW5mbywg
JnNpZ25BbGdvLCAwLCByZWludGVycHJldF9jYXN0PExQQllURT4oYmluYXJ5LmRhdGEoKSksICZk
d0VuY29kZWRMZW5ndGgpKQogICAgICAgICAgICAgYnJlYWs7CiAKLSAgICAgICAgVmVjdG9yPGNo
YXI+IGJhc2U2NDsKLSAgICAgICAgYmFzZTY0RW5jb2RlKGJpbmFyeSwgYmFzZTY0KTsKLSAgICAg
ICAga2V5U3RyaW5nID0gU3RyaW5nKGJhc2U2NC5kYXRhKCksIGJhc2U2NC5zaXplKCkpOwotCisg
ICAgICAgIGtleVN0cmluZyA9IGJhc2U2NEVuY29kZShiaW5hcnkpOwogICAgIH0gd2hpbGUoMCk7
CiAKICAgICBpZiAocFB1YkluZm8pCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>79868</attachid>
            <date>2011-01-23 10:39:19 -0800</date>
            <delta_ts>2011-01-23 12:09:47 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-50122-20110123193916.patch</filename>
            <type>text/plain</type>
            <size>12760</size>
            <attacher name="Patrick R. Gansterer">paroga</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBiZDgzMDQ4N2U1Y2I2ZDkzNzhmYjFmMzgyN2NjOWExM2RlNjUwMWQ1Li4y
OTJkNzI3Y2EzYmU3ZjE1MGI2ZmY2ZTczY2JmNGM4ZWU5N2E1MmMwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMzMgQEAKKzIwMTEtMDEtMjMgIFBhdHJpY2sgR2Fuc3RlcmVyICA8cGFyb2dhQHdlYmtp
dC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
QWRkIGFuIG92ZXJsb2FkIHRvIGJhc2U2NEVuY29kZSB3aXRoIFN0cmluZyBvdXRwdXQKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUwMTIyCisKKyAgICAg
ICAgQXZvaWQgYWRkaXRpb25hbCBtYWxsb2MgKyBtZW1jcHkgd2hlbiBvdXRwdXQgbmVlZHMgdG8g
YmUgYSBTdHJpbmcuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2Vu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpyZXNvdXJj
ZUNvbnRlbnRCYXNlNjQpOgorICAgICAgICAqIHBhZ2UvRE9NV2luZG93LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkRPTVdpbmRvdzo6YnRvYSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
c2tpYS9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0
ZVVuaXF1ZUZvbnROYW1lKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1
c3RvbVBsYXRmb3JtRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVVbmlxdWVGb250
TmFtZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvd2luY2UvRm9udEN1c3RvbVBsYXRm
b3JtRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVVbmlxdWVGb250TmFtZSk6Cisg
ICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNGTmV0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OmVuY29kZUJhc2ljQXV0aG9yaXphdGlvbik6CisgICAgICAgICogcGxh
dGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VIYW5kbGVNYWMubW06CisgICAgICAgIChXZWJDb3Jl
OjplbmNvZGVCYXNpY0F1dGhvcml6YXRpb24pOgorICAgICAgICAqIHBsYXRmb3JtL3RleHQvQmFz
ZTY0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmJhc2U2NEVuY29kZSk6CisgICAgICAgIChXZWJD
b3JlOjpiYXNlNjRFbmNvZGVJbnRlcm5hbCk6CisgICAgICAgICogcGxhdGZvcm0vdGV4dC9CYXNl
NjQuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS93aW5jZS9LZXlnZW5XaW5DRS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpXZWJDb3JlOjpzaWduZWRQdWJsaWNLZXlBbmRDaGFsbGVuZ2VTdHJpbmcpOgor
CiAyMDExLTAxLTIyICBDaHJpcyBSb2dlcnMgIDxjcm9nZXJzQGdvb2dsZS5jb20+CiAKICAgICAg
ICAgUnViYmVyLXN0YW1wZWQgYnkgQW5kZXJzIENhcmxzc29uLgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuY3BwCmluZGV4IDAyOWM3OWQ4
NTc4ODhhYTBlNDVkYzM4ZjlkN2ZhNTNjMjZiMDcwZjMuLjE2ZDJiNjY4YzBjMGU4Mzg3NWM0Mjhl
ZmFlZmFhNDYzZDhmYmVmYzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JSZXNvdXJjZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5jcHAKQEAgLTk1LDcgKzk1LDYgQEAgYm9vbCBJbnNwZWN0
b3JSZXNvdXJjZUFnZW50OjpyZXNvdXJjZUNvbnRlbnQoRnJhbWUqIGZyYW1lLCBjb25zdCBLVVJM
JiB1cmwsIFN0cmkKIAogYm9vbCBJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpyZXNvdXJjZUNvbnRl
bnRCYXNlNjQoRnJhbWUqIGZyYW1lLCBjb25zdCBLVVJMJiB1cmwsIFN0cmluZyogcmVzdWx0KQog
ewotICAgIFZlY3RvcjxjaGFyPiBvdXQ7CiAgICAgU3RyaW5nIHRleHRFbmNvZGluZ05hbWU7CiAg
ICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gZGF0YSA9IEluc3BlY3RvclJlc291cmNlQWdlbnQ6OnJl
c291cmNlRGF0YShmcmFtZSwgdXJsLCAmdGV4dEVuY29kaW5nTmFtZSk7CiAgICAgaWYgKCFkYXRh
KSB7CkBAIC0xMDMsOCArMTAyLDcgQEAgYm9vbCBJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpyZXNv
dXJjZUNvbnRlbnRCYXNlNjQoRnJhbWUqIGZyYW1lLCBjb25zdCBLVVJMJiB1cmwKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIGJhc2U2NEVuY29kZShkYXRhLT5idWZmZXIoKSwg
b3V0KTsKLSAgICAqcmVzdWx0ID0gU3RyaW5nKG91dC5kYXRhKCksIG91dC5zaXplKCkpOworICAg
ICpyZXN1bHQgPSBiYXNlNjRFbmNvZGUoZGF0YS0+YnVmZmVyKCkpOwogICAgIHJldHVybiB0cnVl
OwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAKaW5kZXggNGNhMTZkMDJlYTcxNjAyMmVi
OGQ2MzNmNzQ3OGY5NTRiMzZmNzI3MC4uZWZhNTA5MzUwZjQ4NjdkODcwY2YwYjhjYmY2YmJmOWQ2
MjRiY2NjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcApAQCAtOTg0LDEzICs5ODQsOCBA
QCBTdHJpbmcgRE9NV2luZG93OjpidG9hKGNvbnN0IFN0cmluZyYgc3RyaW5nVG9FbmNvZGUsIEV4
Y2VwdGlvbkNvZGUmIGVjKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAgICAgfQogCi0gICAg
VmVjdG9yPGNoYXI+IGluOwotICAgIGluLmFwcGVuZChzdHJpbmdUb0VuY29kZS5jaGFyYWN0ZXJz
KCksIHN0cmluZ1RvRW5jb2RlLmxlbmd0aCgpKTsKLSAgICBWZWN0b3I8Y2hhcj4gb3V0OwotCi0g
ICAgYmFzZTY0RW5jb2RlKGluLCBvdXQpOwotCi0gICAgcmV0dXJuIFN0cmluZyhvdXQuZGF0YSgp
LCBvdXQuc2l6ZSgpKTsKKyAgICAvLyBTdHJpbmc6OmxhdGluMSgpIHdpbGwgcmV0dXJuIGNoYXJh
Y3RlciB2YWx1ZXMgaW4gdGhlIHJhbmdlIDAuLjI1NS4KKyAgICByZXR1cm4gYmFzZTY0RW5jb2Rl
KHN0cmluZ1RvRW5jb2RlLmxhdGluMSgpKTsKIH0KIAogU3RyaW5nIERPTVdpbmRvdzo6YXRvYihj
b25zdCBTdHJpbmcmIGVuY29kZWRTdHJpbmcsIEV4Y2VwdGlvbkNvZGUmIGVjKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9Gb250Q3VzdG9tUGxhdGZv
cm1EYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvRm9udEN1
c3RvbVBsYXRmb3JtRGF0YS5jcHAKaW5kZXggMGIzMWRmYThhMDlmMGRhYjk3YjA4OGMwZGYzMTQ2
NDBhYTU3YjBkMC4uYjY0MjdiMDA3YWRhY2VjZjc4YThlZDllNzFlNjc2ZjliYWI1OGQ5OCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9Gb250Q3VzdG9t
UGxhdGZvcm1EYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9z
a2lhL0ZvbnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwCkBAIC0xMTQsMTMgKzExNCwxMiBAQCBGb250
UGxhdGZvcm1EYXRhIEZvbnRDdXN0b21QbGF0Zm9ybURhdGE6OmZvbnRQbGF0Zm9ybURhdGEoaW50
IHNpemUsIGJvb2wgYm9sZCwgYgogLy8gbm90IGFsbG93IGFjY2VzcyBmcm9tIENTUy4KIHN0YXRp
YyBTdHJpbmcgY3JlYXRlVW5pcXVlRm9udE5hbWUoKQogewotICAgIFZlY3RvcjxjaGFyPiBmb250
VXVpZChzaXplb2YoR1VJRCkpOwotICAgIENvQ3JlYXRlR3VpZChyZWludGVycHJldF9jYXN0PEdV
SUQqPihmb250VXVpZC5kYXRhKCkpKTsKKyAgICBHVUlEIGZvbnRVdWlkOworICAgIENvQ3JlYXRl
R3VpZCgmZm9udFV1aWQpOwogCi0gICAgVmVjdG9yPGNoYXI+IGZvbnROYW1lVmVjdG9yOwotICAg
IGJhc2U2NEVuY29kZShmb250VXVpZCwgZm9udE5hbWVWZWN0b3IpOwotICAgIEFTU0VSVChmb250
TmFtZVZlY3Rvci5zaXplKCkgPCBMRl9GQUNFU0laRSk7Ci0gICAgcmV0dXJuIFN0cmluZyhmb250
TmFtZVZlY3Rvci5kYXRhKCksIGZvbnROYW1lVmVjdG9yLnNpemUoKSk7CisgICAgU3RyaW5nIGZv
bnROYW1lID0gYmFzZTY0RW5jb2RlKHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KCZmb250VXVpZCks
IHNpemVvZihmb250VXVpZCkpOworICAgIEFTU0VSVChmb250TmFtZS5sZW5ndGgoKSA8IExGX0ZB
Q0VTSVpFKTsKKyAgICByZXR1cm4gZm9udE5hbWU7CiB9CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21QbGF0Zm9ybURh
dGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0ZvbnRDdXN0b21Q
bGF0Zm9ybURhdGEuY3BwCmluZGV4IDljYWU5OWJmNjNmZWFhODNjMGEyMzIyMDA5NDFkNmY4YzQ4
MWU2OGYuLjFiYjIwNTAwMGFkODAzZWVhNTM0YmY2MGYzYzc5YTY1MmI0ZGJkZTcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZv
cm1EYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9u
dEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAKQEAgLTE1NCwxMyArMTU0LDEyIEBAIHN0YXRpYyB1bnNp
Z25lZCBsb25nIFdJTkFQSVYgcmVhZEVtYmVkUHJvYyh2b2lkKiBzdHJlYW0sIHZvaWQqIGJ1ZmZl
ciwgdW5zaWduZWQKIC8vIG5vdCBhbGxvdyBhY2Nlc3MgZnJvbSBDU1MuCiBzdGF0aWMgU3RyaW5n
IGNyZWF0ZVVuaXF1ZUZvbnROYW1lKCkKIHsKLSAgICBWZWN0b3I8Y2hhcj4gZm9udFV1aWQoc2l6
ZW9mKEdVSUQpKTsKLSAgICBDb0NyZWF0ZUd1aWQocmVpbnRlcnByZXRfY2FzdDxHVUlEKj4oZm9u
dFV1aWQuZGF0YSgpKSk7CisgICAgR1VJRCBmb250VXVpZDsKKyAgICBDb0NyZWF0ZUd1aWQoJmZv
bnRVdWlkKTsKIAotICAgIFZlY3RvcjxjaGFyPiBmb250TmFtZVZlY3RvcjsKLSAgICBiYXNlNjRF
bmNvZGUoZm9udFV1aWQsIGZvbnROYW1lVmVjdG9yKTsKLSAgICBBU1NFUlQoZm9udE5hbWVWZWN0
b3Iuc2l6ZSgpIDwgTEZfRkFDRVNJWkUpOwotICAgIHJldHVybiBTdHJpbmcoZm9udE5hbWVWZWN0
b3IuZGF0YSgpLCBmb250TmFtZVZlY3Rvci5zaXplKCkpOworICAgIFN0cmluZyBmb250TmFtZSA9
IGJhc2U2NEVuY29kZShyZWludGVycHJldF9jYXN0PGNoYXIqPigmZm9udFV1aWQpLCBzaXplb2Yo
Zm9udFV1aWQpKTsKKyAgICBBU1NFUlQoZm9udE5hbWUubGVuZ3RoKCkgPCBMRl9GQUNFU0laRSk7
CisgICAgcmV0dXJuIGZvbnROYW1lOwogfQogCiBGb250Q3VzdG9tUGxhdGZvcm1EYXRhKiBjcmVh
dGVGb250Q3VzdG9tUGxhdGZvcm1EYXRhKFNoYXJlZEJ1ZmZlciogYnVmZmVyKQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luY2UvRm9udEN1c3RvbVBsYXRm
b3JtRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW5jZS9Gb250
Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcAppbmRleCBmNjFhZThlNzI2ZTYzMGI1NzcxZDdiMDc1NmU5
OGMwMWNlNjQwMmRmLi40MjRiNjRhYTZmM2RhMzkxZGUxNjFhMDg1NTViOGE0NTIyOWVhZDA5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW5jZS9Gb250Q3Vz
dG9tUGxhdGZvcm1EYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy93aW5jZS9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcApAQCAtNTksMTYgKzU5LDE0IEBAIEZv
bnRQbGF0Zm9ybURhdGEgRm9udEN1c3RvbVBsYXRmb3JtRGF0YTo6Zm9udFBsYXRmb3JtRGF0YShp
bnQgc2l6ZSwgYm9vbCBib2xkLCBiCiAvLyBub3QgYWxsb3cgYWNjZXNzIGZyb20gQ1NTLgogc3Rh
dGljIFN0cmluZyBjcmVhdGVVbmlxdWVGb250TmFtZSgpCiB7Ci0gICAgVmVjdG9yPGNoYXI+IGZv
bnRVdWlkKHNpemVvZihHVUlEKSk7CisgICAgR1VJRCBmb250VXVpZDsKIAotICAgIHVuc2lnbmVk
IGludCogcHRyID0gcmVpbnRlcnByZXRfY2FzdDx1bnNpZ25lZCBpbnQqPihmb250VXVpZC5kYXRh
KCkpOworICAgIHVuc2lnbmVkIGludCogcHRyID0gcmVpbnRlcnByZXRfY2FzdDx1bnNpZ25lZCBp
bnQqPigmZm9udFV1aWQpOwogICAgIGZvciAoaW50IGkgPSAwOyBpIDwgc2l6ZW9mKEdVSUQpIC8g
c2l6ZW9mKGludCkgOyArK2kpCiAgICAgICAgICoocHRyICsgaSkgPSBzdGF0aWNfY2FzdDx1bnNp
Z25lZCBpbnQ+KHJhbmRvbU51bWJlcigpICogKHN0ZDo6bnVtZXJpY19saW1pdHM8dW5zaWduZWQ+
OjptYXgoKSArIDEuMCkpOwogCi0gICAgVmVjdG9yPGNoYXI+IGZvbnROYW1lVmVjdG9yOwotICAg
IGJhc2U2NEVuY29kZShmb250VXVpZCwgZm9udE5hbWVWZWN0b3IpOwotICAgIEFTU0VSVChmb250
TmFtZVZlY3Rvci5zaXplKCkgPCBMRl9GQUNFU0laRSk7Ci0gICAgU3RyaW5nIGZvbnROYW1lKGZv
bnROYW1lVmVjdG9yLmRhdGEoKSwgZm9udE5hbWVWZWN0b3Iuc2l6ZSgpKTsKKyAgICBTdHJpbmcg
Zm9udE5hbWUgPSBiYXNlNjRFbmNvZGUocmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oJmZvbnRVdWlk
KSwgc2l6ZW9mKGZvbnRVdWlkKSk7CisgICAgQVNTRVJUKGZvbnROYW1lLmxlbmd0aCgpIDwgTEZf
RkFDRVNJWkUpOwogICAgIHJldHVybiBmb250TmFtZS5yZXBsYWNlKCcvJywgJ18nKTsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhh
bmRsZUNGTmV0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3Vy
Y2VIYW5kbGVDRk5ldC5jcHAKaW5kZXggNjZhZTVhMDkxODYwOWEzNTc0MTg5MjZiMjRmMjY4MDc2
NDViMjc5Yy4uNmNmMzk0MGU4MTA0OTA0ZWJiMTJjOWM5MzNjNjUwNzE0MTU0OWNiOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJjZUhhbmRsZUNG
TmV0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291cmNl
SGFuZGxlQ0ZOZXQuY3BwCkBAIC0xMjcsMTEgKzEyNyw3IEBAIHN0YXRpYyB2b2lkIHNldERlZmF1
bHRNSU1FVHlwZShDRlVSTFJlc3BvbnNlUmVmIHJlc3BvbnNlKQogc3RhdGljIFN0cmluZyBlbmNv
ZGVCYXNpY0F1dGhvcml6YXRpb24oY29uc3QgU3RyaW5nJiB1c2VyLCBjb25zdCBTdHJpbmcmIHBh
c3N3b3JkKQogewogICAgIENTdHJpbmcgdW5lbmNvZGVkU3RyaW5nID0gKHVzZXIgKyAiOiIgKyBw
YXNzd29yZCkudXRmOCgpOwotICAgIFZlY3RvcjxjaGFyPiB1bmVuY29kZWQodW5lbmNvZGVkU3Ry
aW5nLmxlbmd0aCgpKTsKLSAgICBzdGQ6OmNvcHkodW5lbmNvZGVkU3RyaW5nLmRhdGEoKSwgdW5l
bmNvZGVkU3RyaW5nLmRhdGEoKSArIHVuZW5jb2RlZFN0cmluZy5sZW5ndGgoKSwgdW5lbmNvZGVk
LmJlZ2luKCkpOwotICAgIFZlY3RvcjxjaGFyPiBlbmNvZGVkOwotICAgIGJhc2U2NEVuY29kZSh1
bmVuY29kZWQsIGVuY29kZWQpOwotICAgIHJldHVybiBTdHJpbmcoZW5jb2RlZC5kYXRhKCksIGVu
Y29kZWQuc2l6ZSgpKTsKKyAgICByZXR1cm4gYmFzZTY0RW5jb2RlKHVuZW5jb2RlZFN0cmluZyk7
CiB9CiAKIENGVVJMUmVxdWVzdFJlZiB3aWxsU2VuZFJlcXVlc3QoQ0ZVUkxDb25uZWN0aW9uUmVm
IGNvbm4sIENGVVJMUmVxdWVzdFJlZiBjZlJlcXVlc3QsIENGVVJMUmVzcG9uc2VSZWYgY2ZSZWRp
cmVjdFJlc3BvbnNlLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VIYW5kbGVNYWMubW0gYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZUhhbmRsZU1hYy5tbQppbmRl
eCA4NGI2NTZjZWJmZmMyMmJiOWNlZjJjNzhjOGM2YzUxZjc4ZGQ5ZjdkLi41NTI2YjEwYjVjMTJl
NTM1NWQzYzBhODE3MGQxMDFmOThhMGU3YmFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZUhhbmRsZU1hYy5tbQorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZUhhbmRsZU1hYy5tbQpAQCAtMTY1LDEx
ICsxNjUsNyBAQCBwdWJsaWM6CiBzdGF0aWMgU3RyaW5nIGVuY29kZUJhc2ljQXV0aG9yaXphdGlv
bihjb25zdCBTdHJpbmcmIHVzZXIsIGNvbnN0IFN0cmluZyYgcGFzc3dvcmQpCiB7CiAgICAgQ1N0
cmluZyB1bmVuY29kZWRTdHJpbmcgPSAodXNlciArICI6IiArIHBhc3N3b3JkKS51dGY4KCk7Ci0g
ICAgVmVjdG9yPGNoYXI+IHVuZW5jb2RlZCh1bmVuY29kZWRTdHJpbmcubGVuZ3RoKCkpOwotICAg
IHN0ZDo6Y29weSh1bmVuY29kZWRTdHJpbmcuZGF0YSgpLCB1bmVuY29kZWRTdHJpbmcuZGF0YSgp
ICsgdW5lbmNvZGVkU3RyaW5nLmxlbmd0aCgpLCB1bmVuY29kZWQuYmVnaW4oKSk7Ci0gICAgVmVj
dG9yPGNoYXI+IGVuY29kZWQ7Ci0gICAgYmFzZTY0RW5jb2RlKHVuZW5jb2RlZCwgZW5jb2RlZCk7
Ci0gICAgcmV0dXJuIFN0cmluZyhlbmNvZGVkLmRhdGEoKSwgZW5jb2RlZC5zaXplKCkpOworICAg
IHJldHVybiBiYXNlNjRFbmNvZGUodW5lbmNvZGVkU3RyaW5nKTsKIH0KICNlbmRpZgogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L0Jhc2U2NC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS90ZXh0L0Jhc2U2NC5jcHAKaW5kZXggOThiNTM3YTkwNTljZDBiNTkw
Njg1MjU4ODc0YzhmNDdhNGI3MDU1Yy4uMGMxNmU1OGM5ZDVmMmM1ZDBhMjkzMmQxMTAxOGRiNGM1
NDk3MDQxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9CYXNlNjQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvQmFzZTY0LmNwcApAQCAtNjAs
MTIgKzYwLDggQEAgc3RhdGljIGNvbnN0IGNoYXIgYmFzZTY0RGVjTWFwWzEyOF0gPSB7CiAgICAg
MHgzMSwgMHgzMiwgMHgzMywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMAogfTsKIAotdm9p
ZCBiYXNlNjRFbmNvZGUoY29uc3QgVmVjdG9yPGNoYXI+JiBpbiwgVmVjdG9yPGNoYXI+JiBvdXQs
IGJvb2wgaW5zZXJ0TEZzKQotewotICAgIGJhc2U2NEVuY29kZShpbi5kYXRhKCksIGluLnNpemUo
KSwgb3V0LCBpbnNlcnRMRnMpOwotfQotCi12b2lkIGJhc2U2NEVuY29kZShjb25zdCBjaGFyKiBk
YXRhLCB1bnNpZ25lZCBsZW4sIFZlY3RvcjxjaGFyPiYgb3V0LCBib29sIGluc2VydExGcykKK3Rl
bXBsYXRlPHR5cGVuYW1lIFQ+CitzdGF0aWMgaW5saW5lIHZvaWQgYmFzZTY0RW5jb2RlSW50ZXJu
YWwoY29uc3QgY2hhciogZGF0YSwgdW5zaWduZWQgbGVuLCBWZWN0b3I8VD4mIG91dCwgYm9vbCBp
bnNlcnRMRnMpCiB7CiAgICAgb3V0LmNsZWFyKCk7CiAgICAgaWYgKCFsZW4pCkBAIC0xMjYsNiAr
MTIyLDE5IEBAIHZvaWQgYmFzZTY0RW5jb2RlKGNvbnN0IGNoYXIqIGRhdGEsIHVuc2lnbmVkIGxl
biwgVmVjdG9yPGNoYXI+JiBvdXQsIGJvb2wgaW5zZXJ0CiAgICAgfQogfQogCitTdHJpbmcgYmFz
ZTY0RW5jb2RlKGNvbnN0IGNoYXIqIGRhdGEsIHVuc2lnbmVkIGxlbiwgYm9vbCBpbnNlcnRMRnMp
Cit7CisgICAgVmVjdG9yPFVDaGFyPiBvdXQ7CisgICAgYmFzZTY0RW5jb2RlSW50ZXJuYWw8VUNo
YXI+KGRhdGEsIGxlbiwgb3V0LCBpbnNlcnRMRnMpOworICAgIHJldHVybiBTdHJpbmc6OmFkb3B0
KG91dCk7Cit9CisKK3ZvaWQgYmFzZTY0RW5jb2RlKGNvbnN0IGNoYXIqIGRhdGEsIHVuc2lnbmVk
IGxlbiwgVmVjdG9yPGNoYXI+JiBvdXQsIGJvb2wgaW5zZXJ0TEZzKQoreworICAgIGJhc2U2NEVu
Y29kZUludGVybmFsPGNoYXI+KGRhdGEsIGxlbiwgb3V0LCBpbnNlcnRMRnMpOworfQorCisKIGJv
b2wgYmFzZTY0RGVjb2RlKGNvbnN0IFZlY3RvcjxjaGFyPiYgaW4sIFZlY3RvcjxjaGFyPiYgb3V0
LCBCYXNlNjREZWNvZGVQb2xpY3kgcG9saWN5KQogewogICAgIG91dC5jbGVhcigpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9CYXNlNjQuaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3RleHQvQmFzZTY0LmgKaW5kZXggMjExYmQzYzY1ZmYzMDhmYjQ4MDAxZTM3
MmUzNTE0ODRlNjllZDg5Ni4uMjJlMmI4OGRmYzNmNTBkYTRhZjJlZDI4YjY5MjM2YWU0ZmQ0ODA3
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9CYXNlNjQuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L0Jhc2U2NC5oCkBAIC0yNywyMCArMjcsMjUg
QEAKICNpZm5kZWYgQmFzZTY0X2gKICNkZWZpbmUgQmFzZTY0X2gKIAotI2luY2x1ZGUgPHd0Zi9G
b3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0NT
dHJpbmcuaD4KKyNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCiBlbnVtIEJhc2U2NERlY29kZVBvbGljeSB7IEZhaWxPbkludmFsaWRDaGFyYWN0
ZXIsIElnbm9yZVdoaXRlc3BhY2UsIElnbm9yZUludmFsaWRDaGFyYWN0ZXJzIH07CiAKLXZvaWQg
YmFzZTY0RW5jb2RlKGNvbnN0IFZlY3RvcjxjaGFyPiYsIFZlY3RvcjxjaGFyPiYsIGJvb2wgaW5z
ZXJ0TEZzID0gZmFsc2UpOwogdm9pZCBiYXNlNjRFbmNvZGUoY29uc3QgY2hhciosIHVuc2lnbmVk
LCBWZWN0b3I8Y2hhcj4mLCBib29sIGluc2VydExGcyA9IGZhbHNlKTsKK2lubGluZSB2b2lkIGJh
c2U2NEVuY29kZShjb25zdCBWZWN0b3I8Y2hhcj4mIGluLCBWZWN0b3I8Y2hhcj4mIG91dCwgYm9v
bCBpbnNlcnRMRnMgPSBmYWxzZSkgeyBiYXNlNjRFbmNvZGUoaW4uZGF0YSgpLCBpbi5zaXplKCks
IG91dCwgaW5zZXJ0TEZzKTsgfQoraW5saW5lIHZvaWQgYmFzZTY0RW5jb2RlKGNvbnN0IENTdHJp
bmcmIGluLCBWZWN0b3I8Y2hhcj4mIG91dCwgYm9vbCBpbnNlcnRMRnMgPSBmYWxzZSkgeyBiYXNl
NjRFbmNvZGUoaW4uZGF0YSgpLCBpbi5sZW5ndGgoKSwgb3V0LCBpbnNlcnRMRnMpOyB9CitTdHJp
bmcgYmFzZTY0RW5jb2RlKGNvbnN0IGNoYXIqLCB1bnNpZ25lZCwgYm9vbCBpbnNlcnRMRnMgPSBm
YWxzZSk7CitpbmxpbmUgU3RyaW5nIGJhc2U2NEVuY29kZShjb25zdCBWZWN0b3I8Y2hhcj4mIGlu
LCBib29sIGluc2VydExGcyA9IGZhbHNlKSB7IHJldHVybiBiYXNlNjRFbmNvZGUoaW4uZGF0YSgp
LCBpbi5zaXplKCksIGluc2VydExGcyk7IH0KK2lubGluZSBTdHJpbmcgYmFzZTY0RW5jb2RlKGNv
bnN0IENTdHJpbmcmIGluLCBib29sIGluc2VydExGcyA9IGZhbHNlKSB7IHJldHVybiBiYXNlNjRF
bmNvZGUoaW4uZGF0YSgpLCBpbi5sZW5ndGgoKSwgaW5zZXJ0TEZzKTsgfQogCiBib29sIGJhc2U2
NERlY29kZShjb25zdCBTdHJpbmcmLCBWZWN0b3I8Y2hhcj4mLCBCYXNlNjREZWNvZGVQb2xpY3kg
PSBGYWlsT25JbnZhbGlkQ2hhcmFjdGVyKTsKIGJvb2wgYmFzZTY0RGVjb2RlKGNvbnN0IFZlY3Rv
cjxjaGFyPiYsIFZlY3RvcjxjaGFyPiYsIEJhc2U2NERlY29kZVBvbGljeSA9IEZhaWxPbkludmFs
aWRDaGFyYWN0ZXIpOwogYm9vbCBiYXNlNjREZWNvZGUoY29uc3QgY2hhciosIHVuc2lnbmVkLCBW
ZWN0b3I8Y2hhcj4mLCBCYXNlNjREZWNvZGVQb2xpY3kgPSBGYWlsT25JbnZhbGlkQ2hhcmFjdGVy
KTsKIAotfQorfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gQmFzZTY0X2gKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbmNlL0tleWdlbldpbkNFLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3dpbmNlL0tleWdlbldpbkNFLmNwcAppbmRleCAwYzFi
M2M2OWJhOWRjYmExNjE0OGRkY2UzNmM2MTg4NTM4ZjZkMTk4Li44NTM3ZjQ0OWY3NjdhYWUwMmNl
NzJlZTJiOGJmNzBkM2VhMTVhNjRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS93aW5jZS9LZXlnZW5XaW5DRS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2lu
Y2UvS2V5Z2VuV2luQ0UuY3BwCkBAIC04MCwxMCArODAsNyBAQCBTdHJpbmcgV2ViQ29yZTo6c2ln
bmVkUHVibGljS2V5QW5kQ2hhbGxlbmdlU3RyaW5nKHVuc2lnbmVkIGluZGV4LCBjb25zdCBTdHJp
bmcmCiAgICAgICAgIGlmICghQ3J5cHRTaWduQW5kRW5jb2RlQ2VydGlmaWNhdGUoaENvbnRleHQs
IEFUX0tFWUVYQ0hBTkdFLCBYNTA5X0FTTl9FTkNPRElORywgWDUwOV9LRVlHRU5fUkVRVUVTVF9U
T19CRV9TSUdORUQsICZyZXF1ZXN0SW5mbywgJnNpZ25BbGdvLCAwLCByZWludGVycHJldF9jYXN0
PExQQllURT4oYmluYXJ5LmRhdGEoKSksICZkd0VuY29kZWRMZW5ndGgpKQogICAgICAgICAgICAg
YnJlYWs7CiAKLSAgICAgICAgVmVjdG9yPGNoYXI+IGJhc2U2NDsKLSAgICAgICAgYmFzZTY0RW5j
b2RlKGJpbmFyeSwgYmFzZTY0KTsKLSAgICAgICAga2V5U3RyaW5nID0gU3RyaW5nKGJhc2U2NC5k
YXRhKCksIGJhc2U2NC5zaXplKCkpOwotCisgICAgICAgIGtleVN0cmluZyA9IGJhc2U2NEVuY29k
ZShiaW5hcnkpOwogICAgIH0gd2hpbGUoMCk7CiAKICAgICBpZiAocFB1YkluZm8pCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>79870</attachid>
            <date>2011-01-23 12:09:55 -0800</date>
            <delta_ts>2011-01-23 15:17:34 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-50122-20110123210952.patch</filename>
            <type>text/plain</type>
            <size>12454</size>
            <attacher name="Patrick R. Gansterer">paroga</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBiZDgzMDQ4N2U1Y2I2ZDkzNzhmYjFmMzgyN2NjOWExM2RlNjUwMWQ1Li4y
MGJjZWY2OGY0YWVmMDE0MmQxZTllN2UwMzdmNjg0NjExNzdjNzcyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMzMgQEAKKzIwMTEtMDEtMjMgIFBhdHJpY2sgR2Fuc3RlcmVyICA8cGFyb2dhQHdlYmtp
dC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAg
QWRkIGFuIG92ZXJsb2FkIHRvIGJhc2U2NEVuY29kZSB3aXRoIFN0cmluZyBvdXRwdXQKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTUwMTIyCisKKyAgICAg
ICAgVGhpcyBjaGFuZ2UgcmVtb3ZlcyBkdXBsaWNhdGVkIGNvZGUuCisKKyAgICAgICAgKiBpbnNw
ZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JSZXNvdXJjZUFnZW50OjpyZXNvdXJjZUNvbnRlbnRCYXNlNjQpOgorICAgICAgICAqIHBh
Z2UvRE9NV2luZG93LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRvdzo6YnRvYSk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OmNyZWF0ZVVuaXF1ZUZvbnROYW1lKToKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpjcmVhdGVVbmlxdWVGb250TmFtZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3Mvd2luY2UvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpjcmVhdGVVbmlxdWVGb250TmFtZSk6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9jZi9S
ZXNvdXJjZUhhbmRsZUNGTmV0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmVuY29kZUJhc2ljQXV0
aG9yaXphdGlvbik6CisgICAgICAgICogcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VIYW5k
bGVNYWMubW06CisgICAgICAgIChXZWJDb3JlOjplbmNvZGVCYXNpY0F1dGhvcml6YXRpb24pOgor
ICAgICAgICAqIHBsYXRmb3JtL3RleHQvQmFzZTY0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmJh
c2U2NEVuY29kZSk6CisgICAgICAgICogcGxhdGZvcm0vdGV4dC9CYXNlNjQuaDoKKyAgICAgICAg
KFdlYkNvcmU6OmJhc2U2NEVuY29kZSk6CisgICAgICAgICogcGxhdGZvcm0vd2luY2UvS2V5Z2Vu
V2luQ0UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2ViQ29yZTo6c2lnbmVkUHVibGljS2V5QW5k
Q2hhbGxlbmdlU3RyaW5nKToKKwogMjAxMS0wMS0yMiAgQ2hyaXMgUm9nZXJzICA8Y3JvZ2Vyc0Bn
b29nbGUuY29tPgogCiAgICAgICAgIFJ1YmJlci1zdGFtcGVkIGJ5IEFuZGVycyBDYXJsc3Nvbi4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFn
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50
LmNwcAppbmRleCAwMjljNzlkODU3ODg4YWEwZTQ1ZGMzOGY5ZDdmYTUzYzI2YjA3MGYzLi4xNmQy
YjY2OGMwYzBlODM4NzVjNDI4ZWZhZWZhYTQ2M2Q4ZmJlZmM0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuY3BwCkBAIC05NSw3ICs5
NSw2IEBAIGJvb2wgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6cmVzb3VyY2VDb250ZW50KEZyYW1l
KiBmcmFtZSwgY29uc3QgS1VSTCYgdXJsLCBTdHJpCiAKIGJvb2wgSW5zcGVjdG9yUmVzb3VyY2VB
Z2VudDo6cmVzb3VyY2VDb250ZW50QmFzZTY0KEZyYW1lKiBmcmFtZSwgY29uc3QgS1VSTCYgdXJs
LCBTdHJpbmcqIHJlc3VsdCkKIHsKLSAgICBWZWN0b3I8Y2hhcj4gb3V0OwogICAgIFN0cmluZyB0
ZXh0RW5jb2RpbmdOYW1lOwogICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+IGRhdGEgPSBJbnNwZWN0
b3JSZXNvdXJjZUFnZW50OjpyZXNvdXJjZURhdGEoZnJhbWUsIHVybCwgJnRleHRFbmNvZGluZ05h
bWUpOwogICAgIGlmICghZGF0YSkgewpAQCAtMTAzLDggKzEwMiw3IEBAIGJvb2wgSW5zcGVjdG9y
UmVzb3VyY2VBZ2VudDo6cmVzb3VyY2VDb250ZW50QmFzZTY0KEZyYW1lKiBmcmFtZSwgY29uc3Qg
S1VSTCYgdXJsCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICBiYXNlNjRFbmNv
ZGUoZGF0YS0+YnVmZmVyKCksIG91dCk7Ci0gICAgKnJlc3VsdCA9IFN0cmluZyhvdXQuZGF0YSgp
LCBvdXQuc2l6ZSgpKTsKKyAgICAqcmVzdWx0ID0gYmFzZTY0RW5jb2RlKGRhdGEtPmJ1ZmZlcigp
KTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9ET01XaW5kb3cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCmluZGV4
IDRjYTE2ZDAyZWE3MTYwMjJlYjhkNjMzZjc0NzhmOTU0YjM2ZjcyNzAuLjY5YTM3MzZjMTEyY2E0
NGMwMTQ0ZjQyMzRkZDRhNjQ1M2VmZjRlZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRE9NV2luZG93LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAK
QEAgLTk4NCwxMyArOTg0LDcgQEAgU3RyaW5nIERPTVdpbmRvdzo6YnRvYShjb25zdCBTdHJpbmcm
IHN0cmluZ1RvRW5jb2RlLCBFeGNlcHRpb25Db2RlJiBlYykKICAgICAgICAgcmV0dXJuIFN0cmlu
ZygpOwogICAgIH0KIAotICAgIFZlY3RvcjxjaGFyPiBpbjsKLSAgICBpbi5hcHBlbmQoc3RyaW5n
VG9FbmNvZGUuY2hhcmFjdGVycygpLCBzdHJpbmdUb0VuY29kZS5sZW5ndGgoKSk7Ci0gICAgVmVj
dG9yPGNoYXI+IG91dDsKLQotICAgIGJhc2U2NEVuY29kZShpbiwgb3V0KTsKLQotICAgIHJldHVy
biBTdHJpbmcob3V0LmRhdGEoKSwgb3V0LnNpemUoKSk7CisgICAgcmV0dXJuIGJhc2U2NEVuY29k
ZShzdHJpbmdUb0VuY29kZS5sYXRpbjEoKSk7CiB9CiAKIFN0cmluZyBET01XaW5kb3c6OmF0b2Io
Y29uc3QgU3RyaW5nJiBlbmNvZGVkU3RyaW5nLCBFeGNlcHRpb25Db2RlJiBlYykKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvRm9udEN1c3RvbVBsYXRm
b3JtRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL0ZvbnRD
dXN0b21QbGF0Zm9ybURhdGEuY3BwCmluZGV4IDBiMzFkZmE4YTA5ZjBkYWI5N2IwODhjMGRmMzE0
NjQwYWE1N2IwZDAuLmI2NDI3YjAwN2FkYWNlY2Y3OGE4ZWQ5ZTcxZTY3NmY5YmFiNThkOTggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvRm9udEN1c3Rv
bVBsYXRmb3JtRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
c2tpYS9Gb250Q3VzdG9tUGxhdGZvcm1EYXRhLmNwcApAQCAtMTE0LDEzICsxMTQsMTIgQEAgRm9u
dFBsYXRmb3JtRGF0YSBGb250Q3VzdG9tUGxhdGZvcm1EYXRhOjpmb250UGxhdGZvcm1EYXRhKGlu
dCBzaXplLCBib29sIGJvbGQsIGIKIC8vIG5vdCBhbGxvdyBhY2Nlc3MgZnJvbSBDU1MuCiBzdGF0
aWMgU3RyaW5nIGNyZWF0ZVVuaXF1ZUZvbnROYW1lKCkKIHsKLSAgICBWZWN0b3I8Y2hhcj4gZm9u
dFV1aWQoc2l6ZW9mKEdVSUQpKTsKLSAgICBDb0NyZWF0ZUd1aWQocmVpbnRlcnByZXRfY2FzdDxH
VUlEKj4oZm9udFV1aWQuZGF0YSgpKSk7CisgICAgR1VJRCBmb250VXVpZDsKKyAgICBDb0NyZWF0
ZUd1aWQoJmZvbnRVdWlkKTsKIAotICAgIFZlY3RvcjxjaGFyPiBmb250TmFtZVZlY3RvcjsKLSAg
ICBiYXNlNjRFbmNvZGUoZm9udFV1aWQsIGZvbnROYW1lVmVjdG9yKTsKLSAgICBBU1NFUlQoZm9u
dE5hbWVWZWN0b3Iuc2l6ZSgpIDwgTEZfRkFDRVNJWkUpOwotICAgIHJldHVybiBTdHJpbmcoZm9u
dE5hbWVWZWN0b3IuZGF0YSgpLCBmb250TmFtZVZlY3Rvci5zaXplKCkpOworICAgIFN0cmluZyBm
b250TmFtZSA9IGJhc2U2NEVuY29kZShyZWludGVycHJldF9jYXN0PGNoYXIqPigmZm9udFV1aWQp
LCBzaXplb2YoZm9udFV1aWQpKTsKKyAgICBBU1NFUlQoZm9udE5hbWUubGVuZ3RoKCkgPCBMRl9G
QUNFU0laRSk7CisgICAgcmV0dXJuIGZvbnROYW1lOwogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9tUGxhdGZvcm1E
YXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbi9Gb250Q3VzdG9t
UGxhdGZvcm1EYXRhLmNwcAppbmRleCA5Y2FlOTliZjYzZmVhYTgzYzBhMjMyMjAwOTQxZDZmOGM0
ODFlNjhmLi4xYmIyMDUwMDBhZDgwM2VlYTUzNGJmNjBmM2M3OWE2NTJiNGRiZGU3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy93aW4vRm9udEN1c3RvbVBsYXRm
b3JtRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luL0Zv
bnRDdXN0b21QbGF0Zm9ybURhdGEuY3BwCkBAIC0xNTQsMTMgKzE1NCwxMiBAQCBzdGF0aWMgdW5z
aWduZWQgbG9uZyBXSU5BUElWIHJlYWRFbWJlZFByb2Modm9pZCogc3RyZWFtLCB2b2lkKiBidWZm
ZXIsIHVuc2lnbmVkCiAvLyBub3QgYWxsb3cgYWNjZXNzIGZyb20gQ1NTLgogc3RhdGljIFN0cmlu
ZyBjcmVhdGVVbmlxdWVGb250TmFtZSgpCiB7Ci0gICAgVmVjdG9yPGNoYXI+IGZvbnRVdWlkKHNp
emVvZihHVUlEKSk7Ci0gICAgQ29DcmVhdGVHdWlkKHJlaW50ZXJwcmV0X2Nhc3Q8R1VJRCo+KGZv
bnRVdWlkLmRhdGEoKSkpOworICAgIEdVSUQgZm9udFV1aWQ7CisgICAgQ29DcmVhdGVHdWlkKCZm
b250VXVpZCk7CiAKLSAgICBWZWN0b3I8Y2hhcj4gZm9udE5hbWVWZWN0b3I7Ci0gICAgYmFzZTY0
RW5jb2RlKGZvbnRVdWlkLCBmb250TmFtZVZlY3Rvcik7Ci0gICAgQVNTRVJUKGZvbnROYW1lVmVj
dG9yLnNpemUoKSA8IExGX0ZBQ0VTSVpFKTsKLSAgICByZXR1cm4gU3RyaW5nKGZvbnROYW1lVmVj
dG9yLmRhdGEoKSwgZm9udE5hbWVWZWN0b3Iuc2l6ZSgpKTsKKyAgICBTdHJpbmcgZm9udE5hbWUg
PSBiYXNlNjRFbmNvZGUocmVpbnRlcnByZXRfY2FzdDxjaGFyKj4oJmZvbnRVdWlkKSwgc2l6ZW9m
KGZvbnRVdWlkKSk7CisgICAgQVNTRVJUKGZvbnROYW1lLmxlbmd0aCgpIDwgTEZfRkFDRVNJWkUp
OworICAgIHJldHVybiBmb250TmFtZTsKIH0KIAogRm9udEN1c3RvbVBsYXRmb3JtRGF0YSogY3Jl
YXRlRm9udEN1c3RvbVBsYXRmb3JtRGF0YShTaGFyZWRCdWZmZXIqIGJ1ZmZlcikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3dpbmNlL0ZvbnRDdXN0b21QbGF0
Zm9ybURhdGEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luY2UvRm9u
dEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAKaW5kZXggZjYxYWU4ZTcyNmU2MzBiNTc3MWQ3YjA3NTZl
OThjMDFjZTY0MDJkZi4uNDI0YjY0YWE2ZjNkYTM5MWRlMTYxYTA4NTU1YjhhNDUyMjllYWQwOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvd2luY2UvRm9udEN1
c3RvbVBsYXRmb3JtRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvd2luY2UvRm9udEN1c3RvbVBsYXRmb3JtRGF0YS5jcHAKQEAgLTU5LDE2ICs1OSwxNCBAQCBG
b250UGxhdGZvcm1EYXRhIEZvbnRDdXN0b21QbGF0Zm9ybURhdGE6OmZvbnRQbGF0Zm9ybURhdGEo
aW50IHNpemUsIGJvb2wgYm9sZCwgYgogLy8gbm90IGFsbG93IGFjY2VzcyBmcm9tIENTUy4KIHN0
YXRpYyBTdHJpbmcgY3JlYXRlVW5pcXVlRm9udE5hbWUoKQogewotICAgIFZlY3RvcjxjaGFyPiBm
b250VXVpZChzaXplb2YoR1VJRCkpOworICAgIEdVSUQgZm9udFV1aWQ7CiAKLSAgICB1bnNpZ25l
ZCBpbnQqIHB0ciA9IHJlaW50ZXJwcmV0X2Nhc3Q8dW5zaWduZWQgaW50Kj4oZm9udFV1aWQuZGF0
YSgpKTsKKyAgICB1bnNpZ25lZCBpbnQqIHB0ciA9IHJlaW50ZXJwcmV0X2Nhc3Q8dW5zaWduZWQg
aW50Kj4oJmZvbnRVdWlkKTsKICAgICBmb3IgKGludCBpID0gMDsgaSA8IHNpemVvZihHVUlEKSAv
IHNpemVvZihpbnQpIDsgKytpKQogICAgICAgICAqKHB0ciArIGkpID0gc3RhdGljX2Nhc3Q8dW5z
aWduZWQgaW50PihyYW5kb21OdW1iZXIoKSAqIChzdGQ6Om51bWVyaWNfbGltaXRzPHVuc2lnbmVk
Pjo6bWF4KCkgKyAxLjApKTsKIAotICAgIFZlY3RvcjxjaGFyPiBmb250TmFtZVZlY3RvcjsKLSAg
ICBiYXNlNjRFbmNvZGUoZm9udFV1aWQsIGZvbnROYW1lVmVjdG9yKTsKLSAgICBBU1NFUlQoZm9u
dE5hbWVWZWN0b3Iuc2l6ZSgpIDwgTEZfRkFDRVNJWkUpOwotICAgIFN0cmluZyBmb250TmFtZShm
b250TmFtZVZlY3Rvci5kYXRhKCksIGZvbnROYW1lVmVjdG9yLnNpemUoKSk7CisgICAgU3RyaW5n
IGZvbnROYW1lID0gYmFzZTY0RW5jb2RlKHJlaW50ZXJwcmV0X2Nhc3Q8Y2hhcio+KCZmb250VXVp
ZCksIHNpemVvZihmb250VXVpZCkpOworICAgIEFTU0VSVChmb250TmFtZS5sZW5ndGgoKSA8IExG
X0ZBQ0VTSVpFKTsKICAgICByZXR1cm4gZm9udE5hbWUucmVwbGFjZSgnLycsICdfJyk7CiB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VI
YW5kbGVDRk5ldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL2NmL1Jlc291
cmNlSGFuZGxlQ0ZOZXQuY3BwCmluZGV4IDY2YWU1YTA5MTg2MDlhMzU3NDE4OTI2YjI0ZjI2ODA3
NjQ1YjI3OWMuLjUyYjEwMGY2NWE5YzQ2YzgwMDExOWU4NzA1ZmE5OGQ3ZDJiYzFiZmYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvY2YvUmVzb3VyY2VIYW5kbGVD
Rk5ldC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9jZi9SZXNvdXJj
ZUhhbmRsZUNGTmV0LmNwcApAQCAtMTI2LDEyICsxMjYsNyBAQCBzdGF0aWMgdm9pZCBzZXREZWZh
dWx0TUlNRVR5cGUoQ0ZVUkxSZXNwb25zZVJlZiByZXNwb25zZSkKIAogc3RhdGljIFN0cmluZyBl
bmNvZGVCYXNpY0F1dGhvcml6YXRpb24oY29uc3QgU3RyaW5nJiB1c2VyLCBjb25zdCBTdHJpbmcm
IHBhc3N3b3JkKQogewotICAgIENTdHJpbmcgdW5lbmNvZGVkU3RyaW5nID0gKHVzZXIgKyAiOiIg
KyBwYXNzd29yZCkudXRmOCgpOwotICAgIFZlY3RvcjxjaGFyPiB1bmVuY29kZWQodW5lbmNvZGVk
U3RyaW5nLmxlbmd0aCgpKTsKLSAgICBzdGQ6OmNvcHkodW5lbmNvZGVkU3RyaW5nLmRhdGEoKSwg
dW5lbmNvZGVkU3RyaW5nLmRhdGEoKSArIHVuZW5jb2RlZFN0cmluZy5sZW5ndGgoKSwgdW5lbmNv
ZGVkLmJlZ2luKCkpOwotICAgIFZlY3RvcjxjaGFyPiBlbmNvZGVkOwotICAgIGJhc2U2NEVuY29k
ZSh1bmVuY29kZWQsIGVuY29kZWQpOwotICAgIHJldHVybiBTdHJpbmcoZW5jb2RlZC5kYXRhKCks
IGVuY29kZWQuc2l6ZSgpKTsKKyAgICByZXR1cm4gYmFzZTY0RW5jb2RlKCh1c2VyICsgIjoiICsg
cGFzc3dvcmQpLnV0ZjgoKSk7CiB9CiAKIENGVVJMUmVxdWVzdFJlZiB3aWxsU2VuZFJlcXVlc3Qo
Q0ZVUkxDb25uZWN0aW9uUmVmIGNvbm4sIENGVVJMUmVxdWVzdFJlZiBjZlJlcXVlc3QsIENGVVJM
UmVzcG9uc2VSZWYgY2ZSZWRpcmVjdFJlc3BvbnNlLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9tYWMvUmVzb3VyY2VI
YW5kbGVNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJj
ZUhhbmRsZU1hYy5tbQppbmRleCA4NGI2NTZjZWJmZmMyMmJiOWNlZjJjNzhjOGM2YzUxZjc4ZGQ5
ZjdkLi4yZDY4N2MwMzUyODBjZGZhYjMzZTdkODBiMjNkMzFmOGVlZmI0YTI5IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZUhhbmRsZU1hYy5t
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL21hYy9SZXNvdXJjZUhhbmRs
ZU1hYy5tbQpAQCAtMTY0LDEyICsxNjQsNyBAQCBwdWJsaWM6CiAjaWZuZGVmIEJVSUxESU5HX09O
X1RJR0VSCiBzdGF0aWMgU3RyaW5nIGVuY29kZUJhc2ljQXV0aG9yaXphdGlvbihjb25zdCBTdHJp
bmcmIHVzZXIsIGNvbnN0IFN0cmluZyYgcGFzc3dvcmQpCiB7Ci0gICAgQ1N0cmluZyB1bmVuY29k
ZWRTdHJpbmcgPSAodXNlciArICI6IiArIHBhc3N3b3JkKS51dGY4KCk7Ci0gICAgVmVjdG9yPGNo
YXI+IHVuZW5jb2RlZCh1bmVuY29kZWRTdHJpbmcubGVuZ3RoKCkpOwotICAgIHN0ZDo6Y29weSh1
bmVuY29kZWRTdHJpbmcuZGF0YSgpLCB1bmVuY29kZWRTdHJpbmcuZGF0YSgpICsgdW5lbmNvZGVk
U3RyaW5nLmxlbmd0aCgpLCB1bmVuY29kZWQuYmVnaW4oKSk7Ci0gICAgVmVjdG9yPGNoYXI+IGVu
Y29kZWQ7Ci0gICAgYmFzZTY0RW5jb2RlKHVuZW5jb2RlZCwgZW5jb2RlZCk7Ci0gICAgcmV0dXJu
IFN0cmluZyhlbmNvZGVkLmRhdGEoKSwgZW5jb2RlZC5zaXplKCkpOworICAgIHJldHVybiBiYXNl
NjRFbmNvZGUoKHVzZXIgKyAiOiIgKyBwYXNzd29yZCkudXRmOCgpKTsKIH0KICNlbmRpZgogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L0Jhc2U2NC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS90ZXh0L0Jhc2U2NC5jcHAKaW5kZXggOThiNTM3YTkwNTljZDBi
NTkwNjg1MjU4ODc0YzhmNDdhNGI3MDU1Yy4uYmY3MDZmNjhiNTMxMGUzOGExOGQ5NjZjMjIxMTNi
Y2I5NmRjNjAwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9CYXNl
NjQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvQmFzZTY0LmNwcApAQCAt
NjAsOSArNjAsMTEgQEAgc3RhdGljIGNvbnN0IGNoYXIgYmFzZTY0RGVjTWFwWzEyOF0gPSB7CiAg
ICAgMHgzMSwgMHgzMiwgMHgzMywgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMAogfTsKIAot
dm9pZCBiYXNlNjRFbmNvZGUoY29uc3QgVmVjdG9yPGNoYXI+JiBpbiwgVmVjdG9yPGNoYXI+JiBv
dXQsIGJvb2wgaW5zZXJ0TEZzKQorU3RyaW5nIGJhc2U2NEVuY29kZShjb25zdCBjaGFyKiBkYXRh
LCB1bnNpZ25lZCBsZW5ndGgsIGJvb2wgaW5zZXJ0TEZzKQogewotICAgIGJhc2U2NEVuY29kZShp
bi5kYXRhKCksIGluLnNpemUoKSwgb3V0LCBpbnNlcnRMRnMpOworICAgIFZlY3RvcjxjaGFyPiBy
ZXN1bHQ7CisgICAgYmFzZTY0RW5jb2RlKGRhdGEsIGxlbmd0aCwgcmVzdWx0LCBpbnNlcnRMRnMp
OworICAgIHJldHVybiBTdHJpbmcocmVzdWx0LmRhdGEoKSwgcmVzdWx0LnNpemUoKSk7CiB9CiAK
IHZvaWQgYmFzZTY0RW5jb2RlKGNvbnN0IGNoYXIqIGRhdGEsIHVuc2lnbmVkIGxlbiwgVmVjdG9y
PGNoYXI+JiBvdXQsIGJvb2wgaW5zZXJ0TEZzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vdGV4dC9CYXNlNjQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RleHQvQmFz
ZTY0LmgKaW5kZXggMjExYmQzYzY1ZmYzMDhmYjQ4MDAxZTM3MmUzNTE0ODRlNjllZDg5Ni4uNzA4
NTVkZTA0MWFhMmYzM2FhM2Q0YTk0MzdkM2U3ODhjN2Y5ZGNlYyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vdGV4dC9CYXNlNjQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS90ZXh0L0Jhc2U2NC5oCkBAIC0yNywyMCArMjcsNDUgQEAKICNpZm5kZWYgQmFzZTY0X2gK
ICNkZWZpbmUgQmFzZTY0X2gKIAotI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8
d3RmL1ZlY3Rvci5oPgorI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KKyNpbmNsdWRlIDx3
dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBlbnVtIEJhc2U2
NERlY29kZVBvbGljeSB7IEZhaWxPbkludmFsaWRDaGFyYWN0ZXIsIElnbm9yZVdoaXRlc3BhY2Us
IElnbm9yZUludmFsaWRDaGFyYWN0ZXJzIH07CiAKLXZvaWQgYmFzZTY0RW5jb2RlKGNvbnN0IFZl
Y3RvcjxjaGFyPiYsIFZlY3RvcjxjaGFyPiYsIGJvb2wgaW5zZXJ0TEZzID0gZmFsc2UpOwogdm9p
ZCBiYXNlNjRFbmNvZGUoY29uc3QgY2hhciosIHVuc2lnbmVkLCBWZWN0b3I8Y2hhcj4mLCBib29s
IGluc2VydExGcyA9IGZhbHNlKTsKK3ZvaWQgYmFzZTY0RW5jb2RlKGNvbnN0IFZlY3RvcjxjaGFy
PiYsIFZlY3RvcjxjaGFyPiYsIGJvb2wgaW5zZXJ0TEZzID0gZmFsc2UpOwordm9pZCBiYXNlNjRF
bmNvZGUoY29uc3QgQ1N0cmluZyYsIFZlY3RvcjxjaGFyPiYsIGJvb2wgaW5zZXJ0TEZzID0gZmFs
c2UpOworU3RyaW5nIGJhc2U2NEVuY29kZShjb25zdCBjaGFyKiwgdW5zaWduZWQsIGJvb2wgaW5z
ZXJ0TEZzID0gZmFsc2UpOworU3RyaW5nIGJhc2U2NEVuY29kZShjb25zdCBWZWN0b3I8Y2hhcj4m
LCBib29sIGluc2VydExGcyA9IGZhbHNlKTsKK1N0cmluZyBiYXNlNjRFbmNvZGUoY29uc3QgQ1N0
cmluZyYsIGJvb2wgaW5zZXJ0TEZzID0gZmFsc2UpOwogCiBib29sIGJhc2U2NERlY29kZShjb25z
dCBTdHJpbmcmLCBWZWN0b3I8Y2hhcj4mLCBCYXNlNjREZWNvZGVQb2xpY3kgPSBGYWlsT25JbnZh
bGlkQ2hhcmFjdGVyKTsKIGJvb2wgYmFzZTY0RGVjb2RlKGNvbnN0IFZlY3RvcjxjaGFyPiYsIFZl
Y3RvcjxjaGFyPiYsIEJhc2U2NERlY29kZVBvbGljeSA9IEZhaWxPbkludmFsaWRDaGFyYWN0ZXIp
OwogYm9vbCBiYXNlNjREZWNvZGUoY29uc3QgY2hhciosIHVuc2lnbmVkLCBWZWN0b3I8Y2hhcj4m
LCBCYXNlNjREZWNvZGVQb2xpY3kgPSBGYWlsT25JbnZhbGlkQ2hhcmFjdGVyKTsKIAoraW5saW5l
IHZvaWQgYmFzZTY0RW5jb2RlKGNvbnN0IFZlY3RvcjxjaGFyPiYgaW4sIFZlY3RvcjxjaGFyPiYg
b3V0LCBib29sIGluc2VydExGcykKK3sKKyAgICBiYXNlNjRFbmNvZGUoaW4uZGF0YSgpLCBpbi5z
aXplKCksIG91dCwgaW5zZXJ0TEZzKTsKIH0KIAoraW5saW5lIHZvaWQgYmFzZTY0RW5jb2RlKGNv
bnN0IENTdHJpbmcmIGluLCBWZWN0b3I8Y2hhcj4mIG91dCwgYm9vbCBpbnNlcnRMRnMpCit7Cisg
ICAgYmFzZTY0RW5jb2RlKGluLmRhdGEoKSwgaW4ubGVuZ3RoKCksIG91dCwgaW5zZXJ0TEZzKTsK
K30KKworaW5saW5lIFN0cmluZyBiYXNlNjRFbmNvZGUoY29uc3QgVmVjdG9yPGNoYXI+JiBpbiwg
Ym9vbCBpbnNlcnRMRnMpCit7CisgICAgcmV0dXJuIGJhc2U2NEVuY29kZShpbi5kYXRhKCksIGlu
LnNpemUoKSwgaW5zZXJ0TEZzKTsKK30KKworaW5saW5lIFN0cmluZyBiYXNlNjRFbmNvZGUoY29u
c3QgQ1N0cmluZyYgaW4sIGJvb2wgaW5zZXJ0TEZzKQoreworICAgIHJldHVybiBiYXNlNjRFbmNv
ZGUoaW4uZGF0YSgpLCBpbi5sZW5ndGgoKSwgaW5zZXJ0TEZzKTsKK30KKworfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQorCiAjZW5kaWYgLy8gQmFzZTY0X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL3dpbmNlL0tleWdlbldpbkNFLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3dpbmNlL0tleWdlbldpbkNFLmNwcAppbmRleCAwYzFiM2M2OWJhOWRjYmExNjE0OGRkY2Uz
NmM2MTg4NTM4ZjZkMTk4Li44NTM3ZjQ0OWY3NjdhYWUwMmNlNzJlZTJiOGJmNzBkM2VhMTVhNjRh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS93aW5jZS9LZXlnZW5XaW5DRS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vd2luY2UvS2V5Z2VuV2luQ0UuY3BwCkBA
IC04MCwxMCArODAsNyBAQCBTdHJpbmcgV2ViQ29yZTo6c2lnbmVkUHVibGljS2V5QW5kQ2hhbGxl
bmdlU3RyaW5nKHVuc2lnbmVkIGluZGV4LCBjb25zdCBTdHJpbmcmCiAgICAgICAgIGlmICghQ3J5
cHRTaWduQW5kRW5jb2RlQ2VydGlmaWNhdGUoaENvbnRleHQsIEFUX0tFWUVYQ0hBTkdFLCBYNTA5
X0FTTl9FTkNPRElORywgWDUwOV9LRVlHRU5fUkVRVUVTVF9UT19CRV9TSUdORUQsICZyZXF1ZXN0
SW5mbywgJnNpZ25BbGdvLCAwLCByZWludGVycHJldF9jYXN0PExQQllURT4oYmluYXJ5LmRhdGEo
KSksICZkd0VuY29kZWRMZW5ndGgpKQogICAgICAgICAgICAgYnJlYWs7CiAKLSAgICAgICAgVmVj
dG9yPGNoYXI+IGJhc2U2NDsKLSAgICAgICAgYmFzZTY0RW5jb2RlKGJpbmFyeSwgYmFzZTY0KTsK
LSAgICAgICAga2V5U3RyaW5nID0gU3RyaW5nKGJhc2U2NC5kYXRhKCksIGJhc2U2NC5zaXplKCkp
OwotCisgICAgICAgIGtleVN0cmluZyA9IGJhc2U2NEVuY29kZShiaW5hcnkpOwogICAgIH0gd2hp
bGUoMCk7CiAKICAgICBpZiAocFB1YkluZm8pCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>