<?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>165885</bug_id>
          
          <creation_ts>2016-12-14 18:12:20 -0800</creation_ts>
          <short_desc>REGRESSION (r208902) Null pointer dereference in wkIsPublicSuffix</short_desc>
          <delta_ts>2016-12-15 00:20:39 -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>New Bugs</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=144194</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Alex Christensen">achristensen</reporter>
          <assigned_to name="Alex Christensen">achristensen</assigned_to>
          <cc>ap</cc>
    
    <cc>darin</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1259996</commentid>
    <comment_count>0</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-12-14 18:12:20 -0800</bug_when>
    <thetext>REGRESSION (r208902) Null pointer dereference in wkIsPublicSuffix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1259999</commentid>
    <comment_count>1</comment_count>
      <attachid>297154</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-12-14 18:21:28 -0800</bug_when>
    <thetext>Created attachment 297154
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1260003</commentid>
    <comment_count>2</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-12-14 18:24:58 -0800</bug_when>
    <thetext>rdar://problem/29476917</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1260032</commentid>
    <comment_count>3</comment_count>
      <attachid>297161</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-12-14 19:56:12 -0800</bug_when>
    <thetext>Created attachment 297161
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1260034</commentid>
    <comment_count>4</comment_count>
      <attachid>297162</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-12-14 20:24:08 -0800</bug_when>
    <thetext>Created attachment 297162
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1260049</commentid>
    <comment_count>5</comment_count>
      <attachid>297162</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-12-14 21:44:12 -0800</bug_when>
    <thetext>Comment on attachment 297162
Patch

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

&gt; Source/WebCore/ChangeLog:9
&gt; +        wkIsPublicSuffix crashes if you give it a nil NSString*.

This patch seems to do more than just check for nil; changes the topPrivatelyControlledDomain algorithm.

&gt; Source/WebCore/platform/mac/PublicSuffixMac.mm:49
&gt;      if (domain.isNull() || domain.isEmpty())
&gt;          return String();

Never need to check both isNull and isEmpty. Null strings will all compare as empty.

    if (domain.isEmpty())
        return String();

But also, we should see if we can just leave this check out entirely and test that null and empty strings both work.

&gt; Source/WebCore/platform/mac/PublicSuffixMac.mm:52
&gt; +    if ([decodeHostName(domain) _web_looksLikeIPAddress])
&gt;          return domain;

Do we really need to decode the host name before calling _web_looksLikeIPAddress? That does not seem necessary. The old code did it because the single call to decodeHostName was shared by the entire function, but now I suspect we can get the correct result by just calling it without decoding.

&gt; Source/WebCore/platform/mac/PublicSuffixMac.mm:67
&gt; +    Vector&lt;size_t, 8&gt; substringStarts;
&gt; +    substringStarts.append(0);
&gt; +    for (size_t i = 0; i &lt; domain.length(); ++i) {
&gt; +        if (domain[i] == &apos;.&apos;)
&gt; +            substringStarts.append(i + 1);
&gt; +    }
&gt; +    
&gt;      // Match the longest possible suffix.
&gt; -    bool hasTopLevelDomain = false;
&gt; -    NSCharacterSet *dot = [[NSCharacterSet characterSetWithCharactersInString:@&quot;.&quot;] retain];
&gt; -    NSRange nextDot = NSMakeRange(0, [host length]);
&gt; -    for (NSRange previousDot = [host rangeOfCharacterFromSet:dot]; previousDot.location != NSNotFound; nextDot = previousDot, previousDot = [host rangeOfCharacterFromSet:dot options:0 range:NSMakeRange(previousDot.location + previousDot.length, [host length] - (previousDot.location + previousDot.length))]) {
&gt; -        NSString *substring = [host substringFromIndex:previousDot.location + previousDot.length];
&gt; -        if (wkIsPublicSuffix(substring)) {
&gt; -            hasTopLevelDomain = true;
&gt; -            break;
&gt; -        }
&gt; +    for (size_t i = 0; i &lt; substringStarts.size(); ++i) {
&gt; +        NSString *host = decodeHostName(domain.substring(substringStarts[i]));
&gt; +        if (host &amp;&amp; wkIsPublicSuffix(host))
&gt; +            return i ? domain.substring(substringStarts[i - 1]) : String();
&gt;      }
&gt; -
&gt; -    [dot release];
&gt; -    if (!hasTopLevelDomain)
&gt; -        return String();
&gt; -
&gt; -    if (!nextDot.location)
&gt; -        return domain;
&gt; -
&gt; -    return encodeHostName([host substringFromIndex:nextDot.location + nextDot.length]);
&gt; +    return String();

If we feel the need to rewrite this to use String, we don’t need to allocate a vector, even on the stack. We can just translate the old algorithm more directly. Here’s my cut at it, taking my lead from your function in changing how it works:

    if (isPublicSuffix(domain))
        return String(); // FIXME: Do we really need this special case? If we really do need this, we should add a test case proving that we do.
    size_t separatorPosition;
    for (unsigned labelStart = 0; (separatorPosition = domain.find(&apos;.&apos;, labelStart)) != notFound; labelStart = separatorPosition + 1) {
        if (isPublicSuffix(domain.substring(separatorPosition + 1)))
            return domain.substring(labelStart);
    }
    return String();

Note that indices into a string are unsigned, not size_t, except for the return value from find, which is peculiar because it uses size_t.

What’s the rationale for calling decodeHostName over and over again? Could that perhaps give incorrect results if there is some special treatment at the very start of a host name? Or maybe it might be bad for performance?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1260079</commentid>
    <comment_count>6</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-12-15 00:09:45 -0800</bug_when>
    <thetext>We do need to call decodeHostName multiple times for correct behavior in the case that caused me to look into this, a url like &quot;r4---asdf.example.com&quot; where the first part causes ICU to fail but the rest is fine.  We could build up a Vector&lt;String&gt; of each section between the dots, but that would require possibly more calls to uidna_nameToUnicode.  I&apos;m not sure whether each call to uidna_nameToUnicode slows it down because it is setting things up, or if uidna_nameToUnicode is slow internally.  I don&apos;t imagine there is much of a performance difference between the two possible implementations of this, both of which require many calls to uidna_nameToUnicode, so I&apos;m going to commit the version you suggested.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1260081</commentid>
    <comment_count>7</comment_count>
      <attachid>297178</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-12-15 00:12:52 -0800</bug_when>
    <thetext>Created attachment 297178
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1260083</commentid>
    <comment_count>8</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2016-12-15 00:20:39 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/209857</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>297154</attachid>
            <date>2016-12-14 18:21:28 -0800</date>
            <delta_ts>2016-12-14 19:56:09 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-165885-20161214182037.patch</filename>
            <type>text/plain</type>
            <size>3396</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwOTgzNykKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIzIEBACisyMDE2LTEyLTE0ICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUkVHUkVTU0lP
TiAocjIwODkwMikgTnVsbCBwb2ludGVyIGRlcmVmZXJlbmNlIGluIHdrSXNQdWJsaWNTdWZmaXgK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NTg4NQor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIHdrSXNQdWJs
aWNTdWZmaXggY3Jhc2hlcyBpZiB5b3UgZ2l2ZSBpdCBhIG51bGwgTlNTdHJpbmcqLgorICAgICAg
ICBkZWNvZGVIb3N0TmFtZSBjYW4gcmV0dXJuIGEgbnVsbCBOU1N0cmluZy4gIFdlIG5lZWQgdG8g
Y2hlY2sgaXQuCisgICAgICAgIFRoaXMgd2FzIHBvc3NpYmxlIGJlZm9yZSBJRE4yMDA4IGFkb3B0
aW9uLCBidXQgaXQncyBtb3JlIGNvbW1vbiBub3cKKyAgICAgICAgYmVjYXVzZSBkb21haW5zIGxp
a2UgInI0LS0tYXNkZiIgZmFpbCBpbiB1aWRuYV9uYW1lVG9BU0NJSSBidXQgbm90IGluIHVpZG5h
X0lETlRvQVNDSUkuCisgICAgICAgIElmIGEgZG9tYWluIGZhaWxzIGluIHVpZG5hX25hbWVUb0FT
Q0lJLCB0aGVuIGl0IGlzIG5ldmVyIGEgdmFsaWQgcHJpdmF0ZWx5IGNvbnRyb2xsZWQgZG9tYWlu
LgorCisgICAgICAgIFRlc3RlZCBieSBuZXcgQVBJIHRlc3RzIHdoaWNoIGNyYXNoIGJlZm9yZSB0
aGlzIGNoYW5nZSBhbmQgdmVyaWZ5IHRoZSBiZWhhdmlvciBtYXRjaGVzIGJlaGF2aW9yIGJlZm9y
ZSByMjA4OTAyLgorCisgICAgICAgICogcGxhdGZvcm0vbWFjL1B1YmxpY1N1ZmZpeE1hYy5tbToK
KyAgICAgICAgKFdlYkNvcmU6OmlzUHVibGljU3VmZml4KToKKyAgICAgICAgKFdlYkNvcmU6OnRv
cFByaXZhdGVseUNvbnRyb2xsZWREb21haW4pOgorICAgICAgICBDaGVjayB0aGUgcmV0dXJuIHZh
bHVlIG9mIGRlY29kZUhvc3ROYW1lIGJlZm9yZSBnaXZpbmcgaXQgdG8gd2tJc1B1YmxpY1N1ZmZp
eC4KKwogMjAxNi0xMi0xNCAgRGF2ZSBIeWF0dCAgPGh5YXR0QGFwcGxlLmNvbT4KIAogICAgICAg
ICBbQ1NTIFBhcnNlcl0gTWFrZSBkZWZlcnJlZCBwYXJzaW5nIHJldGFpbiB0aGUgc2hlZXQgdGV4
dC4gRml4IGludmFsaWRhdGlvbiB0byBhdm9pZCBkZWZlcnJlZCBwYXJzaW5nLgpJbmRleDogU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1B1YmxpY1N1ZmZpeE1hYy5tbQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUHVibGljU3VmZml4TWFjLm1tCShyZXZpc2lv
biAyMDk4MzIpCisrKyBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvUHVibGljU3VmZml4TWFj
Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC0zOSw3ICszOSw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogYm9vbCBpc1B1YmxpY1N1ZmZpeChjb25zdCBTdHJpbmcmIGRvbWFpbikKIHsKLSAgICByZXR1
cm4gd2tJc1B1YmxpY1N1ZmZpeChkZWNvZGVIb3N0TmFtZShkb21haW4pKTsKKyAgICBOU1N0cmlu
ZyAqaG9zdCA9IGRlY29kZUhvc3ROYW1lKGRvbWFpbik7CisgICAgcmV0dXJuIGhvc3QgJiYgd2tJ
c1B1YmxpY1N1ZmZpeChob3N0KTsKIH0KIAogU3RyaW5nIHRvcFByaXZhdGVseUNvbnRyb2xsZWRE
b21haW4oY29uc3QgU3RyaW5nJiBkb21haW4pCkBAIC00OCw2ICs0OSw4IEBAIFN0cmluZyB0b3BQ
cml2YXRlbHlDb250cm9sbGVkRG9tYWluKGNvbnMKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwog
CiAgICAgTlNTdHJpbmcgKmhvc3QgPSBkZWNvZGVIb3N0TmFtZShkb21haW4pOworICAgIGlmICgh
aG9zdCkKKyAgICAgICAgcmV0dXJuIFN0cmluZygpOwogCiAgICAgaWYgKFtob3N0IF93ZWJfbG9v
a3NMaWtlSVBBZGRyZXNzXSkKICAgICAgICAgcmV0dXJuIGRvbWFpbjsKSW5kZXg6IFRvb2xzL0No
YW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBUb29scy9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwOTg0NykK
KysrIFRvb2xzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDE2
LTEyLTE0ICBBbGV4IENocmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAg
ICAgICAgUkVHUkVTU0lPTiAocjIwODkwMikgTnVsbCBwb2ludGVyIGRlcmVmZXJlbmNlIGluIHdr
SXNQdWJsaWNTdWZmaXgKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTE2NTg4NQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvUHVibGljU3VmZml4Lm1tOgorICAgICAg
ICAoVGVzdFdlYktpdEFQSTo6VEVTVF9GKToKKwogMjAxNi0xMi0xNCAgUnlvc3VrZSBOaXdhICA8
cm5pd2FAd2Via2l0Lm9yZz4KIAogICAgICAgICBpT1M6IEFuIGVsZW1lbnQgd2l0aCB0YWJpbmRl
eCBpcyBub3QgZm9jdXNhYmxlIHVubGVzcyB0aGVyZSBpcyBubyBtb3VzZSBldmVudCBoYW5kbGVy
CkluZGV4OiBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9QdWJsaWNTdWZmaXgubW0KPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvUHVibGljU3VmZml4Lm1t
CShyZXZpc2lvbiAyMDk4MzIpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9QdWJs
aWNTdWZmaXgubW0JKHdvcmtpbmcgY29weSkKQEAgLTc0LDYgKzc0LDEzIEBAIFRFU1RfRihQdWJs
aWNTdWZmaXgsIFRvcFByaXZhdGVseUNvbnRyb2wKICAgICBFWFBFQ1RfRVEoU3RyaW5nKCksIHRv
cFByaXZhdGVseUNvbnRyb2xsZWREb21haW4oImNvbSIpKTsKIH0KIAorVEVTVF9GKFB1YmxpY1N1
ZmZpeCwgSW52YWxpZERvbWFpbikKK3sKKyAgICBTdHJpbmcgaW52YWxpZERvbWFpbiA9ICJyNC0t
LWFzZGYiOworICAgIEVYUEVDVF9FUShTdHJpbmcoKSwgdG9wUHJpdmF0ZWx5Q29udHJvbGxlZERv
bWFpbihpbnZhbGlkRG9tYWluKSk7CisgICAgRVhQRUNUX0ZBTFNFKGlzUHVibGljU3VmZml4KGlu
dmFsaWREb21haW4pKTsKK30KKwogfQogCiAjZW5kaWYK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>297161</attachid>
            <date>2016-12-14 19:56:12 -0800</date>
            <delta_ts>2016-12-14 20:24:05 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-165885-20161214195521.patch</filename>
            <type>text/plain</type>
            <size>4185</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwOTg1MSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIyIEBACisyMDE2LTEyLTE0ICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUkVHUkVTU0lP
TiAocjIwODkwMikgTnVsbCBwb2ludGVyIGRlcmVmZXJlbmNlIGluIHdrSXNQdWJsaWNTdWZmaXgK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NTg4NQor
ICAgICAgICA8cmRhcjovL3Byb2JsZW0vMjk0NzY5MTc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgd2tJc1B1YmxpY1N1ZmZpeCBjcmFzaGVzIGlmIHlv
dSBnaXZlIGl0IGEgbmlsIE5TU3RyaW5nKi4KKyAgICAgICAgZGVjb2RlSG9zdE5hbWUgY2FuIHJl
dHVybiBhIG5pbCBOU1N0cmluZy4gIFdlIG5lZWQgdG8gY2hlY2sgaXQuCisgICAgICAgIFRoaXMg
d2FzIHBvc3NpYmxlIGJlZm9yZSBJRE4yMDA4IGFkb3B0aW9uLCBidXQgaXQncyBtb3JlIGNvbW1v
biBub3cKKyAgICAgICAgYmVjYXVzZSBkb21haW5zIGxpa2UgInI0LS0tYXNkZi5leGFtcGxlLmNv
bSIgZmFpbCBpbiB1aWRuYV9uYW1lVG9BU0NJSSBidXQgbm90IGluIHVpZG5hX0lETlRvQVNDSUku
CisgCisgICAgICAgIFRlc3RlZCBieSBuZXcgQVBJIHRlc3RzIHdoaWNoIGNyYXNoIGJlZm9yZSB0
aGlzIGNoYW5nZS4KKworICAgICAgICAqIHBsYXRmb3JtL21hYy9QdWJsaWNTdWZmaXhNYWMubW06
CisgICAgICAgIChXZWJDb3JlOjppc1B1YmxpY1N1ZmZpeCk6CisgICAgICAgIChXZWJDb3JlOjp0
b3BQcml2YXRlbHlDb250cm9sbGVkRG9tYWluKToKKwogMjAxNi0xMi0xNCAgWXVzdWtlIFN1enVr
aSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KIAogICAgICAgICBbR1RLXSBTdXBwb3J0IGxhdGVz
dCBTdWJ0bGVDcnlwdG8gSE1BQyBBUElzCkluZGV4OiBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9t
YWMvUHVibGljU3VmZml4TWFjLm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL21hYy9QdWJsaWNTdWZmaXhNYWMubW0JKHJldmlzaW9uIDIwOTgzMikKKysrIFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21hYy9QdWJsaWNTdWZmaXhNYWMubW0JKHdvcmtpbmcgY29weSkKQEAg
LTM5LDcgKzM5LDggQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBib29sIGlzUHVibGljU3VmZml4
KGNvbnN0IFN0cmluZyYgZG9tYWluKQogewotICAgIHJldHVybiB3a0lzUHVibGljU3VmZml4KGRl
Y29kZUhvc3ROYW1lKGRvbWFpbikpOworICAgIE5TU3RyaW5nICpob3N0ID0gZGVjb2RlSG9zdE5h
bWUoZG9tYWluKTsKKyAgICByZXR1cm4gaG9zdCAmJiB3a0lzUHVibGljU3VmZml4KGhvc3QpOwog
fQogCiBTdHJpbmcgdG9wUHJpdmF0ZWx5Q29udHJvbGxlZERvbWFpbihjb25zdCBTdHJpbmcmIGRv
bWFpbikKQEAgLTQ4LDYgKzQ5LDggQEAgU3RyaW5nIHRvcFByaXZhdGVseUNvbnRyb2xsZWREb21h
aW4oY29ucwogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAKICAgICBOU1N0cmluZyAqaG9zdCA9
IGRlY29kZUhvc3ROYW1lKGRvbWFpbik7CisgICAgaWYgKCFob3N0KQorICAgICAgICByZXR1cm4g
U3RyaW5nKCk7CiAKICAgICBpZiAoW2hvc3QgX3dlYl9sb29rc0xpa2VJUEFkZHJlc3NdKQogICAg
ICAgICByZXR1cm4gZG9tYWluOwpJbmRleDogVG9vbHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFRvb2xzL0NoYW5nZUxvZwkocmV2aXNpb24gMjA5ODQ3KQorKysgVG9vbHMvQ2hhbmdlTG9nCSh3
b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTYtMTItMTQgIEFsZXggQ2hyaXN0ZW5z
ZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAgICBSRUdSRVNTSU9OIChyMjA4
OTAyKSBOdWxsIHBvaW50ZXIgZGVyZWZlcmVuY2UgaW4gd2tJc1B1YmxpY1N1ZmZpeAorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY1ODg1CisgICAgICAg
IDxyZGFyOi8vcHJvYmxlbS8yOTQ3NjkxNz4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL1B1YmxpY1N1ZmZp
eC5tbToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1RfRik6CisKIDIwMTYtMTItMTQgIFJ5
b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CiAKICAgICAgICAgaU9TOiBBbiBlbGVtZW50
IHdpdGggdGFiaW5kZXggaXMgbm90IGZvY3VzYWJsZSB1bmxlc3MgdGhlcmUgaXMgbm8gbW91c2Ug
ZXZlbnQgaGFuZGxlcgpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvUHVibGlj
U3VmZml4Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL1B1
YmxpY1N1ZmZpeC5tbQkocmV2aXNpb24gMjA5ODMyKQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9tYWMvUHVibGljU3VmZml4Lm1tCSh3b3JraW5nIGNvcHkpCkBAIC00NCw2ICs0NCwxOCBA
QCBwdWJsaWM6CiAgICAgfQogfTsKIAordGVtcGxhdGU8c2l6ZV90IGxlbmd0aD4KK3N0YXRpYyBT
dHJpbmcgdXRmMTZTdHJpbmcoY29uc3QgY2hhcjE2X3QgKCZ1cmwpW2xlbmd0aF0pCit7CisgICAg
U3RyaW5nQnVpbGRlciBidWlsZGVyOworICAgIGJ1aWxkZXIucmVzZXJ2ZUNhcGFjaXR5KGxlbmd0
aCAtIDEpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbGVuZ3RoIC0gMTsgKytpKQorICAg
ICAgICBidWlsZGVyLmFwcGVuZChzdGF0aWNfY2FzdDxVQ2hhcj4odXJsW2ldKSk7CisgICAgcmV0
dXJuIGJ1aWxkZXIudG9TdHJpbmcoKTsKK30KKworY29uc3QgY2hhcjE2X3QgYmlkaXJlY3Rpb25h
bERvbWFpblsyNF0gPSB1ImJpZGlyZWN0aW9uYWxcdTA3ODZcdTA3QUVcdTA3ODJcdTA3QjBcdTA3
OTVcdTA3QTlcdTA3OTNcdTA3QTZcdTA3ODNcdTA3QUEiOworCiBURVNUX0YoUHVibGljU3VmZml4
LCBJc1B1YmxpY1N1ZmZpeCkKIHsKICAgICBFWFBFQ1RfVFJVRShpc1B1YmxpY1N1ZmZpeCgiY29t
IikpOwpAQCAtNTUsNiArNjcsOCBAQCBURVNUX0YoUHVibGljU3VmZml4LCBJc1B1YmxpY1N1ZmZp
eCkKICAgICBFWFBFQ1RfRkFMU0UoaXNQdWJsaWNTdWZmaXgoImJsLnVrIikpOwogICAgIEVYUEVD
VF9GQUxTRShpc1B1YmxpY1N1ZmZpeCgidGVzdC5jby51ayIpKTsKICAgICBFWFBFQ1RfVFJVRShp
c1B1YmxpY1N1ZmZpeCgieG4tLXpmMGFvNjRhLnR3IikpOworICAgIEVYUEVDVF9GQUxTRShpc1B1
YmxpY1N1ZmZpeCgicjQtLS1hc2RmLnRlc3QuY29tIikpOworICAgIEVYUEVDVF9GQUxTRShpc1B1
YmxpY1N1ZmZpeCh1dGYxNlN0cmluZyhiaWRpcmVjdGlvbmFsRG9tYWluKSkpOwogfQogCiBURVNU
X0YoUHVibGljU3VmZml4LCBUb3BQcml2YXRlbHlDb250cm9sbGVkRG9tYWluKQpAQCAtNzIsNiAr
ODYsOCBAQCBURVNUX0YoUHVibGljU3VmZml4LCBUb3BQcml2YXRlbHlDb250cm9sCiAgICAgRVhQ
RUNUX0VRKFN0cmluZygiMTI3LjAuMC4xIiksIHRvcFByaXZhdGVseUNvbnRyb2xsZWREb21haW4o
IjEyNy4wLjAuMSIpKTsKICAgICBFWFBFQ1RfRVEoU3RyaW5nKCksIHRvcFByaXZhdGVseUNvbnRy
b2xsZWREb21haW4oIjEiKSk7CiAgICAgRVhQRUNUX0VRKFN0cmluZygpLCB0b3BQcml2YXRlbHlD
b250cm9sbGVkRG9tYWluKCJjb20iKSk7CisgICAgRVhQRUNUX0VRKFN0cmluZygpLCB0b3BQcml2
YXRlbHlDb250cm9sbGVkRG9tYWluKCJyNC0tLWFzZGYudGVzdC5jb20iKSk7CisgICAgRVhQRUNU
X0VRKHV0ZjE2U3RyaW5nKGJpZGlyZWN0aW9uYWxEb21haW4pLCB1dGYxNlN0cmluZyhiaWRpcmVj
dGlvbmFsRG9tYWluKSk7CiB9CiAKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>297162</attachid>
            <date>2016-12-14 20:24:08 -0800</date>
            <delta_ts>2016-12-15 00:12:48 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-165885-20161214202317.patch</filename>
            <type>text/plain</type>
            <size>7647</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwOTg1MSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIyIEBACisyMDE2LTEyLTE0ICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUkVHUkVTU0lP
TiAocjIwODkwMikgTnVsbCBwb2ludGVyIGRlcmVmZXJlbmNlIGluIHdrSXNQdWJsaWNTdWZmaXgK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NTg4NQor
ICAgICAgICA8cmRhcjovL3Byb2JsZW0vMjk0NzY5MTc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgd2tJc1B1YmxpY1N1ZmZpeCBjcmFzaGVzIGlmIHlv
dSBnaXZlIGl0IGEgbmlsIE5TU3RyaW5nKi4KKyAgICAgICAgZGVjb2RlSG9zdE5hbWUgY2FuIHJl
dHVybiBhIG5pbCBOU1N0cmluZy4gIFdlIG5lZWQgdG8gY2hlY2sgaXQuCisgICAgICAgIFRoaXMg
d2FzIHBvc3NpYmxlIGJlZm9yZSBJRE4yMDA4IGFkb3B0aW9uLCBidXQgaXQncyBtb3JlIGNvbW1v
biBub3cKKyAgICAgICAgYmVjYXVzZSBkb21haW5zIGxpa2UgInI0LS0tYXNkZi5leGFtcGxlLmNv
bSIgZmFpbCBpbiB1aWRuYV9uYW1lVG9BU0NJSSBidXQgbm90IGluIHVpZG5hX0lETlRvQVNDSUku
CisgCisgICAgICAgIFRlc3RlZCBieSBuZXcgQVBJIHRlc3RzIHdoaWNoIGNyYXNoIGJlZm9yZSB0
aGlzIGNoYW5nZSBhbmQgdmVyaWZ5IHRoZSBiZWhhdmlvciBtYXRjaGVzIGJlaGF2aW9yIGJlZm9y
ZSByMjA4OTAyLgorCisgICAgICAgICogcGxhdGZvcm0vbWFjL1B1YmxpY1N1ZmZpeE1hYy5tbToK
KyAgICAgICAgKFdlYkNvcmU6OmlzUHVibGljU3VmZml4KToKKyAgICAgICAgKFdlYkNvcmU6OnRv
cFByaXZhdGVseUNvbnRyb2xsZWREb21haW4pOgorCiAyMDE2LTEyLTE0ICBZdXN1a2UgU3V6dWtp
ICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgogCiAgICAgICAgIFtHVEtdIFN1cHBvcnQgbGF0ZXN0
IFN1YnRsZUNyeXB0byBITUFDIEFQSXMKSW5kZXg6IFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21h
Yy9QdWJsaWNTdWZmaXhNYWMubW0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWFjL1B1YmxpY1N1ZmZpeE1hYy5tbQkocmV2aXNpb24gMjA5ODMyKQorKysgU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWFjL1B1YmxpY1N1ZmZpeE1hYy5tbQkod29ya2luZyBjb3B5KQpAQCAt
MzksNyArMzksOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGJvb2wgaXNQdWJsaWNTdWZmaXgo
Y29uc3QgU3RyaW5nJiBkb21haW4pCiB7Ci0gICAgcmV0dXJuIHdrSXNQdWJsaWNTdWZmaXgoZGVj
b2RlSG9zdE5hbWUoZG9tYWluKSk7CisgICAgTlNTdHJpbmcgKmhvc3QgPSBkZWNvZGVIb3N0TmFt
ZShkb21haW4pOworICAgIHJldHVybiBob3N0ICYmIHdrSXNQdWJsaWNTdWZmaXgoaG9zdCk7CiB9
CiAKIFN0cmluZyB0b3BQcml2YXRlbHlDb250cm9sbGVkRG9tYWluKGNvbnN0IFN0cmluZyYgZG9t
YWluKQpAQCAtNDcsMzEgKzQ4LDIzIEBAIFN0cmluZyB0b3BQcml2YXRlbHlDb250cm9sbGVkRG9t
YWluKGNvbnMKICAgICBpZiAoZG9tYWluLmlzTnVsbCgpIHx8IGRvbWFpbi5pc0VtcHR5KCkpCiAg
ICAgICAgIHJldHVybiBTdHJpbmcoKTsKIAotICAgIE5TU3RyaW5nICpob3N0ID0gZGVjb2RlSG9z
dE5hbWUoZG9tYWluKTsKLQotICAgIGlmIChbaG9zdCBfd2ViX2xvb2tzTGlrZUlQQWRkcmVzc10p
CisgICAgaWYgKFtkZWNvZGVIb3N0TmFtZShkb21haW4pIF93ZWJfbG9va3NMaWtlSVBBZGRyZXNz
XSkKICAgICAgICAgcmV0dXJuIGRvbWFpbjsKLQorICAgIAorICAgIFZlY3RvcjxzaXplX3QsIDg+
IHN1YnN0cmluZ1N0YXJ0czsKKyAgICBzdWJzdHJpbmdTdGFydHMuYXBwZW5kKDApOworICAgIGZv
ciAoc2l6ZV90IGkgPSAwOyBpIDwgZG9tYWluLmxlbmd0aCgpOyArK2kpIHsKKyAgICAgICAgaWYg
KGRvbWFpbltpXSA9PSAnLicpCisgICAgICAgICAgICBzdWJzdHJpbmdTdGFydHMuYXBwZW5kKGkg
KyAxKTsKKyAgICB9CisgICAgCiAgICAgLy8gTWF0Y2ggdGhlIGxvbmdlc3QgcG9zc2libGUgc3Vm
Zml4LgotICAgIGJvb2wgaGFzVG9wTGV2ZWxEb21haW4gPSBmYWxzZTsKLSAgICBOU0NoYXJhY3Rl
clNldCAqZG90ID0gW1tOU0NoYXJhY3RlclNldCBjaGFyYWN0ZXJTZXRXaXRoQ2hhcmFjdGVyc0lu
U3RyaW5nOkAiLiJdIHJldGFpbl07Ci0gICAgTlNSYW5nZSBuZXh0RG90ID0gTlNNYWtlUmFuZ2Uo
MCwgW2hvc3QgbGVuZ3RoXSk7Ci0gICAgZm9yIChOU1JhbmdlIHByZXZpb3VzRG90ID0gW2hvc3Qg
cmFuZ2VPZkNoYXJhY3RlckZyb21TZXQ6ZG90XTsgcHJldmlvdXNEb3QubG9jYXRpb24gIT0gTlNO
b3RGb3VuZDsgbmV4dERvdCA9IHByZXZpb3VzRG90LCBwcmV2aW91c0RvdCA9IFtob3N0IHJhbmdl
T2ZDaGFyYWN0ZXJGcm9tU2V0OmRvdCBvcHRpb25zOjAgcmFuZ2U6TlNNYWtlUmFuZ2UocHJldmlv
dXNEb3QubG9jYXRpb24gKyBwcmV2aW91c0RvdC5sZW5ndGgsIFtob3N0IGxlbmd0aF0gLSAocHJl
dmlvdXNEb3QubG9jYXRpb24gKyBwcmV2aW91c0RvdC5sZW5ndGgpKV0pIHsKLSAgICAgICAgTlNT
dHJpbmcgKnN1YnN0cmluZyA9IFtob3N0IHN1YnN0cmluZ0Zyb21JbmRleDpwcmV2aW91c0RvdC5s
b2NhdGlvbiArIHByZXZpb3VzRG90Lmxlbmd0aF07Ci0gICAgICAgIGlmICh3a0lzUHVibGljU3Vm
Zml4KHN1YnN0cmluZykpIHsKLSAgICAgICAgICAgIGhhc1RvcExldmVsRG9tYWluID0gdHJ1ZTsK
LSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkg
PCBzdWJzdHJpbmdTdGFydHMuc2l6ZSgpOyArK2kpIHsKKyAgICAgICAgTlNTdHJpbmcgKmhvc3Qg
PSBkZWNvZGVIb3N0TmFtZShkb21haW4uc3Vic3RyaW5nKHN1YnN0cmluZ1N0YXJ0c1tpXSkpOwor
ICAgICAgICBpZiAoaG9zdCAmJiB3a0lzUHVibGljU3VmZml4KGhvc3QpKQorICAgICAgICAgICAg
cmV0dXJuIGkgPyBkb21haW4uc3Vic3RyaW5nKHN1YnN0cmluZ1N0YXJ0c1tpIC0gMV0pIDogU3Ry
aW5nKCk7CiAgICAgfQotCi0gICAgW2RvdCByZWxlYXNlXTsKLSAgICBpZiAoIWhhc1RvcExldmVs
RG9tYWluKQotICAgICAgICByZXR1cm4gU3RyaW5nKCk7Ci0KLSAgICBpZiAoIW5leHREb3QubG9j
YXRpb24pCi0gICAgICAgIHJldHVybiBkb21haW47Ci0KLSAgICByZXR1cm4gZW5jb2RlSG9zdE5h
bWUoW2hvc3Qgc3Vic3RyaW5nRnJvbUluZGV4Om5leHREb3QubG9jYXRpb24gKyBuZXh0RG90Lmxl
bmd0aF0pOworICAgIHJldHVybiBTdHJpbmcoKTsKIH0KIAogfQpJbmRleDogVG9vbHMvQ2hhbmdl
TG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFRvb2xzL0NoYW5nZUxvZwkocmV2aXNpb24gMjA5ODUxKQorKysg
VG9vbHMvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTkgQEAKKzIwMTYtMTIt
MTQgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KKworICAgICAg
ICBSRUdSRVNTSU9OIChyMjA4OTAyKSBOdWxsIHBvaW50ZXIgZGVyZWZlcmVuY2UgaW4gd2tJc1B1
YmxpY1N1ZmZpeAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/
aWQ9MTY1ODg1CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8yOTQ3NjkxNz4KKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVz
dHMvV2ViQ29yZS9VUkxQYXJzZXIuY3BwOgorICAgICAgICAoVGVzdFdlYktpdEFQSTo6dXRmMTZT
dHJpbmcpOiBEZWxldGVkLgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvVGVzdHMvbWFjL1B1Ymxp
Y1N1ZmZpeC5tbToKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OlRFU1RfRik6CisgICAgICAgICog
VGVzdFdlYktpdEFQSS9XVEZTdHJpbmdVdGlsaXRpZXMuaDoKKyAgICAgICAgKHV0ZjE2U3RyaW5n
KToKKyAgICAgICAgTW92ZWQgZnJvbSBVUkxQYXJzZXIgdG8gc2hhcmUgd2l0aCBvdGhlciB0ZXN0
cy4KKwogMjAxNi0xMi0xNCAgUnlvc3VrZSBOaXdhICA8cm5pd2FAd2Via2l0Lm9yZz4KIAogICAg
ICAgICBpT1M6IEFuIGVsZW1lbnQgd2l0aCB0YWJpbmRleCBpcyBub3QgZm9jdXNhYmxlIHVubGVz
cyB0aGVyZSBpcyBubyBtb3VzZSBldmVudCBoYW5kbGVyCkluZGV4OiBUb29scy9UZXN0V2ViS2l0
QVBJL1dURlN0cmluZ1V0aWxpdGllcy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRB
UEkvV1RGU3RyaW5nVXRpbGl0aWVzLmgJKHJldmlzaW9uIDIwOTgzMikKKysrIFRvb2xzL1Rlc3RX
ZWJLaXRBUEkvV1RGU3RyaW5nVXRpbGl0aWVzLmgJKHdvcmtpbmcgY29weSkKQEAgLTI4LDggKzI4
LDcgQEAKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRlZiBXVEZTdHJpbmdVdGlsaXRpZXNf
aAotI2RlZmluZSBXVEZTdHJpbmdVdGlsaXRpZXNfaAorI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRl
IDx3dGYvQXNzZXJ0aW9ucy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KQEAgLTQ1
LDQgKzQ0LDEyIEBAIGlubGluZSBzdGQ6Om9zdHJlYW0mIG9wZXJhdG9yPDwoc3RkOjpvc3QKIAog
fQogCi0jZW5kaWYgLy8gV1RGU3RyaW5nVXRpbGl0aWVzX2gKK3RlbXBsYXRlPHNpemVfdCBsZW5n
dGg+CitzdGF0aWMgU3RyaW5nIHV0ZjE2U3RyaW5nKGNvbnN0IGNoYXIxNl90ICgmdXJsKVtsZW5n
dGhdKQoreworICAgIFN0cmluZ0J1aWxkZXIgYnVpbGRlcjsKKyAgICBidWlsZGVyLnJlc2VydmVD
YXBhY2l0eShsZW5ndGggLSAxKTsKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxlbmd0aCAt
IDE7ICsraSkKKyAgICAgICAgYnVpbGRlci5hcHBlbmQoc3RhdGljX2Nhc3Q8VUNoYXI+KHVybFtp
XSkpOworICAgIHJldHVybiBidWlsZGVyLnRvU3RyaW5nKCk7Cit9CkluZGV4OiBUb29scy9UZXN0
V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvVVJMUGFyc2VyLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBUb29s
cy9UZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvVVJMUGFyc2VyLmNwcAkocmV2aXNpb24gMjA5
ODMyKQorKysgVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJDb3JlL1VSTFBhcnNlci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTI0LDYgKzI0LDcgQEAKICAqLwogCiAjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiV1RGU3RyaW5nVXRpbGl0aWVzLmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9V
UkxQYXJzZXIuaD4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgogI2luY2x1ZGUgPHd0Zi90
ZXh0L1N0cmluZ0J1aWxkZXIuaD4KQEAgLTMyNSwxNiArMzI2LDYgQEAgc3RhdGljIHZvaWQgY2hl
Y2tVUkwoY29uc3QgU3RyaW5nJiB1cmxTdAogICAgIH0KIH0KIAotdGVtcGxhdGU8c2l6ZV90IGxl
bmd0aD4KLXN0YXRpYyBTdHJpbmcgdXRmMTZTdHJpbmcoY29uc3QgY2hhcjE2X3QgKCZ1cmwpW2xl
bmd0aF0pCi17Ci0gICAgU3RyaW5nQnVpbGRlciBidWlsZGVyOwotICAgIGJ1aWxkZXIucmVzZXJ2
ZUNhcGFjaXR5KGxlbmd0aCAtIDEpOwotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbGVuZ3Ro
IC0gMTsgKytpKQotICAgICAgICBidWlsZGVyLmFwcGVuZChzdGF0aWNfY2FzdDxVQ2hhcj4odXJs
W2ldKSk7Ci0gICAgcmV0dXJuIGJ1aWxkZXIudG9TdHJpbmcoKTsKLX0KLQogVEVTVF9GKFVSTFBh
cnNlclRlc3QsIEJhc2ljKQogewogICAgIGNoZWNrVVJMKCJodHRwOi8vdXNlcjpwYXNzQHdlYmtp
dC5vcmc6MTIzL3BhdGg/cXVlcnkjZnJhZ21lbnQiLCB7Imh0dHAiLCAidXNlciIsICJwYXNzIiwg
IndlYmtpdC5vcmciLCAxMjMsICIvcGF0aCIsICJxdWVyeSIsICJmcmFnbWVudCIsICJodHRwOi8v
dXNlcjpwYXNzQHdlYmtpdC5vcmc6MTIzL3BhdGg/cXVlcnkjZnJhZ21lbnQifSk7CkluZGV4OiBU
b29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9QdWJsaWNTdWZmaXgubW0KPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvUHVibGljU3VmZml4Lm1tCShyZXZpc2lv
biAyMDk4MzIpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9QdWJsaWNTdWZmaXgu
bW0JKHdvcmtpbmcgY29weSkKQEAgLTQ0LDYgKzQ0LDggQEAgcHVibGljOgogICAgIH0KIH07CiAK
K2NvbnN0IGNoYXIxNl90IGJpZGlyZWN0aW9uYWxEb21haW5bMjhdID0gdSJiaWRpcmVjdGlvbmFs
XHUwNzg2XHUwN0FFXHUwNzgyXHUwN0IwXHUwNzk1XHUwN0E5XHUwNzkzXHUwN0E2XHUwNzgzXHUw
N0FBLmNvbSI7CisKIFRFU1RfRihQdWJsaWNTdWZmaXgsIElzUHVibGljU3VmZml4KQogewogICAg
IEVYUEVDVF9UUlVFKGlzUHVibGljU3VmZml4KCJjb20iKSk7CkBAIC01NSw2ICs1Nyw4IEBAIFRF
U1RfRihQdWJsaWNTdWZmaXgsIElzUHVibGljU3VmZml4KQogICAgIEVYUEVDVF9GQUxTRShpc1B1
YmxpY1N1ZmZpeCgiYmwudWsiKSk7CiAgICAgRVhQRUNUX0ZBTFNFKGlzUHVibGljU3VmZml4KCJ0
ZXN0LmNvLnVrIikpOwogICAgIEVYUEVDVF9UUlVFKGlzUHVibGljU3VmZml4KCJ4bi0temYwYW82
NGEudHciKSk7CisgICAgRVhQRUNUX0ZBTFNFKGlzUHVibGljU3VmZml4KCJyNC0tLWFzZGYudGVz
dC5jb20iKSk7CisgICAgRVhQRUNUX0ZBTFNFKGlzUHVibGljU3VmZml4KHV0ZjE2U3RyaW5nKGJp
ZGlyZWN0aW9uYWxEb21haW4pKSk7CiB9CiAKIFRFU1RfRihQdWJsaWNTdWZmaXgsIFRvcFByaXZh
dGVseUNvbnRyb2xsZWREb21haW4pCkBAIC03Miw2ICs3Niw4IEBAIFRFU1RfRihQdWJsaWNTdWZm
aXgsIFRvcFByaXZhdGVseUNvbnRyb2wKICAgICBFWFBFQ1RfRVEoU3RyaW5nKCIxMjcuMC4wLjEi
KSwgdG9wUHJpdmF0ZWx5Q29udHJvbGxlZERvbWFpbigiMTI3LjAuMC4xIikpOwogICAgIEVYUEVD
VF9FUShTdHJpbmcoKSwgdG9wUHJpdmF0ZWx5Q29udHJvbGxlZERvbWFpbigiMSIpKTsKICAgICBF
WFBFQ1RfRVEoU3RyaW5nKCksIHRvcFByaXZhdGVseUNvbnRyb2xsZWREb21haW4oImNvbSIpKTsK
KyAgICBFWFBFQ1RfRVEoU3RyaW5nKCJ0ZXN0LmNvbSIpLCB0b3BQcml2YXRlbHlDb250cm9sbGVk
RG9tYWluKCJyNC0tLWFzZGYudGVzdC5jb20iKSk7CisgICAgRVhQRUNUX0VRKHV0ZjE2U3RyaW5n
KGJpZGlyZWN0aW9uYWxEb21haW4pLCB1dGYxNlN0cmluZyhiaWRpcmVjdGlvbmFsRG9tYWluKSk7
CiB9CiAKIH0K
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>297178</attachid>
            <date>2016-12-15 00:12:52 -0800</date>
            <delta_ts>2016-12-15 00:13:48 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-165885-20161215001200.patch</filename>
            <type>text/plain</type>
            <size>8371</size>
            <attacher name="Alex Christensen">achristensen</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwOTg1NSkKKysrIFNvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDIzIEBACisyMDE2LTEyLTE1ICBBbGV4IENo
cmlzdGVuc2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUkVHUkVTU0lP
TiAocjIwODkwMikgTnVsbCBwb2ludGVyIGRlcmVmZXJlbmNlIGluIHdrSXNQdWJsaWNTdWZmaXgK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NTg4NQor
ICAgICAgICA8cmRhcjovL3Byb2JsZW0vMjk0NzY5MTc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
RGFyaW4gQWRsZXIuCisKKyAgICAgICAgd2tJc1B1YmxpY1N1ZmZpeCBjcmFzaGVzIGlmIHlvdSBn
aXZlIGl0IGEgbmlsIE5TU3RyaW5nKi4KKyAgICAgICAgVGhpcyB3YXMgcG9zc2libGUgYmVmb3Jl
IElETjIwMDggYWRvcHRpb24sIGJ1dCBpdCdzIG1vcmUgY29tbW9uIG5vdworICAgICAgICBiZWNh
dXNlIGRvbWFpbnMgbGlrZSAicjQtLS1hc2RmLmV4YW1wbGUuY29tIiBmYWlsIGluIHVpZG5hX25h
bWVUb0FTQ0lJIGJ1dCBub3QgaW4gdWlkbmFfSUROVG9BU0NJSS4KKyAgICAgICAgZGVjb2RlSG9z
dE5hbWUgY2FuIHJldHVybiBhIG5pbCBOU1N0cmluZy4gIFdlIGNhbid0IHVzZSBpdCB1bmNoZWNr
ZWQsIHNvIGluc3RlYWQgd2UgdXNlIGFuIGFsZ29yaXRobSB0aGF0IGFsbG93cworICAgICAgICBm
b3IgZGVjb2RpbmcgZmFpbHVyZXMgd2hpbGUgc3RpbGwgZmluZGluZyB0b3AgcHJpdmF0ZWx5IGNv
bnRyb2xsZWQgZG9tYWlucyBjb3JyZWN0bHkuCisKKyAgICAgICAgVGVzdGVkIGJ5IG5ldyBBUEkg
dGVzdHMgd2hpY2ggY3Jhc2ggYmVmb3JlIHRoaXMgY2hhbmdlIGFuZCB2ZXJpZnkgdGhlIGJlaGF2
aW9yIG1hdGNoZXMgYmVoYXZpb3IgYmVmb3JlIHIyMDg5MDIuCisKKyAgICAgICAgKiBwbGF0Zm9y
bS9tYWMvUHVibGljU3VmZml4TWFjLm1tOgorICAgICAgICAoV2ViQ29yZTo6aXNQdWJsaWNTdWZm
aXgpOgorICAgICAgICAoV2ViQ29yZTo6dG9wUHJpdmF0ZWx5Q29udHJvbGxlZERvbWFpbik6CisK
IDIwMTYtMTItMTQgIEh1bnNlb3AgSmVvbmcgIDxoczg1Lmplb25nQHNhbXN1bmcuY29tPgogCiAg
ICAgICAgIFVucmV2aWV3ZWQgYnVpbGQgZml4IGFmdGVyIHIyMDk4MzIKSW5kZXg6IFNvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21hYy9QdWJsaWNTdWZmaXhNYWMubW0KPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1B1YmxpY1N1ZmZpeE1hYy5tbQkocmV2aXNpb24gMjA5
ODMyKQorKysgU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1B1YmxpY1N1ZmZpeE1hYy5tbQko
d29ya2luZyBjb3B5KQpAQCAtMzksMzkgKzM5LDIxIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAog
Ym9vbCBpc1B1YmxpY1N1ZmZpeChjb25zdCBTdHJpbmcmIGRvbWFpbikKIHsKLSAgICByZXR1cm4g
d2tJc1B1YmxpY1N1ZmZpeChkZWNvZGVIb3N0TmFtZShkb21haW4pKTsKKyAgICBOU1N0cmluZyAq
aG9zdCA9IGRlY29kZUhvc3ROYW1lKGRvbWFpbik7CisgICAgcmV0dXJuIGhvc3QgJiYgd2tJc1B1
YmxpY1N1ZmZpeChob3N0KTsKIH0KIAogU3RyaW5nIHRvcFByaXZhdGVseUNvbnRyb2xsZWREb21h
aW4oY29uc3QgU3RyaW5nJiBkb21haW4pCiB7Ci0gICAgaWYgKGRvbWFpbi5pc051bGwoKSB8fCBk
b21haW4uaXNFbXB0eSgpKQotICAgICAgICByZXR1cm4gU3RyaW5nKCk7Ci0KLSAgICBOU1N0cmlu
ZyAqaG9zdCA9IGRlY29kZUhvc3ROYW1lKGRvbWFpbik7Ci0KLSAgICBpZiAoW2hvc3QgX3dlYl9s
b29rc0xpa2VJUEFkZHJlc3NdKQorICAgIGlmIChbZG9tYWluIF93ZWJfbG9va3NMaWtlSVBBZGRy
ZXNzXSkKICAgICAgICAgcmV0dXJuIGRvbWFpbjsKIAotICAgIC8vIE1hdGNoIHRoZSBsb25nZXN0
IHBvc3NpYmxlIHN1ZmZpeC4KLSAgICBib29sIGhhc1RvcExldmVsRG9tYWluID0gZmFsc2U7Ci0g
ICAgTlNDaGFyYWN0ZXJTZXQgKmRvdCA9IFtbTlNDaGFyYWN0ZXJTZXQgY2hhcmFjdGVyU2V0V2l0
aENoYXJhY3RlcnNJblN0cmluZzpAIi4iXSByZXRhaW5dOwotICAgIE5TUmFuZ2UgbmV4dERvdCA9
IE5TTWFrZVJhbmdlKDAsIFtob3N0IGxlbmd0aF0pOwotICAgIGZvciAoTlNSYW5nZSBwcmV2aW91
c0RvdCA9IFtob3N0IHJhbmdlT2ZDaGFyYWN0ZXJGcm9tU2V0OmRvdF07IHByZXZpb3VzRG90Lmxv
Y2F0aW9uICE9IE5TTm90Rm91bmQ7IG5leHREb3QgPSBwcmV2aW91c0RvdCwgcHJldmlvdXNEb3Qg
PSBbaG9zdCByYW5nZU9mQ2hhcmFjdGVyRnJvbVNldDpkb3Qgb3B0aW9uczowIHJhbmdlOk5TTWFr
ZVJhbmdlKHByZXZpb3VzRG90LmxvY2F0aW9uICsgcHJldmlvdXNEb3QubGVuZ3RoLCBbaG9zdCBs
ZW5ndGhdIC0gKHByZXZpb3VzRG90LmxvY2F0aW9uICsgcHJldmlvdXNEb3QubGVuZ3RoKSldKSB7
Ci0gICAgICAgIE5TU3RyaW5nICpzdWJzdHJpbmcgPSBbaG9zdCBzdWJzdHJpbmdGcm9tSW5kZXg6
cHJldmlvdXNEb3QubG9jYXRpb24gKyBwcmV2aW91c0RvdC5sZW5ndGhdOwotICAgICAgICBpZiAo
d2tJc1B1YmxpY1N1ZmZpeChzdWJzdHJpbmcpKSB7Ci0gICAgICAgICAgICBoYXNUb3BMZXZlbERv
bWFpbiA9IHRydWU7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgfQorICAgIHNpemVfdCBz
ZXBhcmF0b3JQb3NpdGlvbjsKKyAgICBmb3IgKHVuc2lnbmVkIGxhYmVsU3RhcnQgPSAwOyAoc2Vw
YXJhdG9yUG9zaXRpb24gPSBkb21haW4uZmluZCgnLicsIGxhYmVsU3RhcnQpKSAhPSBub3RGb3Vu
ZDsgbGFiZWxTdGFydCA9IHNlcGFyYXRvclBvc2l0aW9uICsgMSkgeworICAgICAgICBpZiAoaXNQ
dWJsaWNTdWZmaXgoZG9tYWluLnN1YnN0cmluZyhzZXBhcmF0b3JQb3NpdGlvbiArIDEpKSkKKyAg
ICAgICAgICAgIHJldHVybiBkb21haW4uc3Vic3RyaW5nKGxhYmVsU3RhcnQpOwogICAgIH0KLQot
ICAgIFtkb3QgcmVsZWFzZV07Ci0gICAgaWYgKCFoYXNUb3BMZXZlbERvbWFpbikKLSAgICAgICAg
cmV0dXJuIFN0cmluZygpOwotCi0gICAgaWYgKCFuZXh0RG90LmxvY2F0aW9uKQotICAgICAgICBy
ZXR1cm4gZG9tYWluOwotCi0gICAgcmV0dXJuIGVuY29kZUhvc3ROYW1lKFtob3N0IHN1YnN0cmlu
Z0Zyb21JbmRleDpuZXh0RG90LmxvY2F0aW9uICsgbmV4dERvdC5sZW5ndGhdKTsKKyAgICByZXR1
cm4gU3RyaW5nKCk7CiB9CiAKIH0KSW5kZXg6IFRvb2xzL0NoYW5nZUxvZwo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBUb29scy9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwOTg1MSkKKysrIFRvb2xzL0NoYW5nZUxvZwko
d29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDE5IEBACisyMDE2LTEyLTE0ICBBbGV4IENocmlzdGVu
c2VuICA8YWNocmlzdGVuc2VuQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUkVHUkVTU0lPTiAocjIw
ODkwMikgTnVsbCBwb2ludGVyIGRlcmVmZXJlbmNlIGluIHdrSXNQdWJsaWNTdWZmaXgKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2NTg4NQorICAgICAg
ICA8cmRhcjovL3Byb2JsZW0vMjk0NzY5MTc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgRGFyaW4g
QWRsZXIuCisKKyAgICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL1dlYkNvcmUvVVJMUGFyc2Vy
LmNwcDoKKyAgICAgICAgKFRlc3RXZWJLaXRBUEk6OnV0ZjE2U3RyaW5nKTogRGVsZXRlZC4KKyAg
ICAgICAgKiBUZXN0V2ViS2l0QVBJL1Rlc3RzL21hYy9QdWJsaWNTdWZmaXgubW06CisgICAgICAg
IChUZXN0V2ViS2l0QVBJOjpURVNUX0YpOgorICAgICAgICAqIFRlc3RXZWJLaXRBUEkvV1RGU3Ry
aW5nVXRpbGl0aWVzLmg6CisgICAgICAgICh1dGYxNlN0cmluZyk6CisgICAgICAgIE1vdmVkIGZy
b20gVVJMUGFyc2VyIHRvIHNoYXJlIHdpdGggb3RoZXIgdGVzdHMuCisKIDIwMTYtMTItMTQgIFJ5
b3N1a2UgTml3YSAgPHJuaXdhQHdlYmtpdC5vcmc+CiAKICAgICAgICAgaU9TOiBBbiBlbGVtZW50
IHdpdGggdGFiaW5kZXggaXMgbm90IGZvY3VzYWJsZSB1bmxlc3MgdGhlcmUgaXMgbm8gbW91c2Ug
ZXZlbnQgaGFuZGxlcgpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9XVEZTdHJpbmdVdGlsaXRp
ZXMuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBUb29scy9UZXN0V2ViS2l0QVBJL1dURlN0cmluZ1V0aWxpdGll
cy5oCShyZXZpc2lvbiAyMDk4MzIpCisrKyBUb29scy9UZXN0V2ViS2l0QVBJL1dURlN0cmluZ1V0
aWxpdGllcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0yOCw4ICsyOCw3IEBACiAgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgogICovCiAKLSNpZm5kZWYgV1RGU3RyaW5nVXRpbGl0aWVzX2gKLSNkZWZpbmUgV1RGU3RyaW5n
VXRpbGl0aWVzX2gKKyNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4K
ICNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CkBAIC00NSw0ICs0NCwxMiBAQCBpbmxpbmUg
c3RkOjpvc3RyZWFtJiBvcGVyYXRvcjw8KHN0ZDo6b3N0CiAKIH0KIAotI2VuZGlmIC8vIFdURlN0
cmluZ1V0aWxpdGllc19oCit0ZW1wbGF0ZTxzaXplX3QgbGVuZ3RoPgorc3RhdGljIFN0cmluZyB1
dGYxNlN0cmluZyhjb25zdCBjaGFyMTZfdCAoJnVybClbbGVuZ3RoXSkKK3sKKyAgICBTdHJpbmdC
dWlsZGVyIGJ1aWxkZXI7CisgICAgYnVpbGRlci5yZXNlcnZlQ2FwYWNpdHkobGVuZ3RoIC0gMSk7
CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBsZW5ndGggLSAxOyArK2kpCisgICAgICAgIGJ1
aWxkZXIuYXBwZW5kKHN0YXRpY19jYXN0PFVDaGFyPih1cmxbaV0pKTsKKyAgICByZXR1cm4gYnVp
bGRlci50b1N0cmluZygpOworfQpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0cy9XZWJD
b3JlL1VSTFBhcnNlci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gVG9vbHMvVGVzdFdlYktpdEFQSS9UZXN0
cy9XZWJDb3JlL1VSTFBhcnNlci5jcHAJKHJldmlzaW9uIDIwOTgzMikKKysrIFRvb2xzL1Rlc3RX
ZWJLaXRBUEkvVGVzdHMvV2ViQ29yZS9VUkxQYXJzZXIuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0y
NCw2ICsyNCw3IEBACiAgKi8KIAogI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldURlN0
cmluZ1V0aWxpdGllcy5oIgogI2luY2x1ZGUgPFdlYkNvcmUvVVJMUGFyc2VyLmg+CiAjaW5jbHVk
ZSA8d3RmL01haW5UaHJlYWQuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdCdWlsZGVyLmg+
CkBAIC0zMjUsMTYgKzMyNiw2IEBAIHN0YXRpYyB2b2lkIGNoZWNrVVJMKGNvbnN0IFN0cmluZyYg
dXJsU3QKICAgICB9CiB9CiAKLXRlbXBsYXRlPHNpemVfdCBsZW5ndGg+Ci1zdGF0aWMgU3RyaW5n
IHV0ZjE2U3RyaW5nKGNvbnN0IGNoYXIxNl90ICgmdXJsKVtsZW5ndGhdKQotewotICAgIFN0cmlu
Z0J1aWxkZXIgYnVpbGRlcjsKLSAgICBidWlsZGVyLnJlc2VydmVDYXBhY2l0eShsZW5ndGggLSAx
KTsKLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxlbmd0aCAtIDE7ICsraSkKLSAgICAgICAg
YnVpbGRlci5hcHBlbmQoc3RhdGljX2Nhc3Q8VUNoYXI+KHVybFtpXSkpOwotICAgIHJldHVybiBi
dWlsZGVyLnRvU3RyaW5nKCk7Ci19Ci0KIFRFU1RfRihVUkxQYXJzZXJUZXN0LCBCYXNpYykKIHsK
ICAgICBjaGVja1VSTCgiaHR0cDovL3VzZXI6cGFzc0B3ZWJraXQub3JnOjEyMy9wYXRoP3F1ZXJ5
I2ZyYWdtZW50IiwgeyJodHRwIiwgInVzZXIiLCAicGFzcyIsICJ3ZWJraXQub3JnIiwgMTIzLCAi
L3BhdGgiLCAicXVlcnkiLCAiZnJhZ21lbnQiLCAiaHR0cDovL3VzZXI6cGFzc0B3ZWJraXQub3Jn
OjEyMy9wYXRoP3F1ZXJ5I2ZyYWdtZW50In0pOwpJbmRleDogVG9vbHMvVGVzdFdlYktpdEFQSS9U
ZXN0cy9tYWMvUHVibGljU3VmZml4Lm1tCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFRvb2xzL1Rlc3RXZWJLaXRB
UEkvVGVzdHMvbWFjL1B1YmxpY1N1ZmZpeC5tbQkocmV2aXNpb24gMjA5ODMyKQorKysgVG9vbHMv
VGVzdFdlYktpdEFQSS9UZXN0cy9tYWMvUHVibGljU3VmZml4Lm1tCSh3b3JraW5nIGNvcHkpCkBA
IC00NCw2ICs0NCw4IEBAIHB1YmxpYzoKICAgICB9CiB9OwogCitjb25zdCBjaGFyMTZfdCBiaWRp
cmVjdGlvbmFsRG9tYWluWzI4XSA9IHUiYmlkaXJlY3Rpb25hbFx1MDc4Nlx1MDdBRVx1MDc4Mlx1
MDdCMFx1MDc5NVx1MDdBOVx1MDc5M1x1MDdBNlx1MDc4M1x1MDdBQS5jb20iOworCiBURVNUX0Yo
UHVibGljU3VmZml4LCBJc1B1YmxpY1N1ZmZpeCkKIHsKICAgICBFWFBFQ1RfVFJVRShpc1B1Ymxp
Y1N1ZmZpeCgiY29tIikpOwpAQCAtNTUsMTAgKzU3LDE3IEBAIFRFU1RfRihQdWJsaWNTdWZmaXgs
IElzUHVibGljU3VmZml4KQogICAgIEVYUEVDVF9GQUxTRShpc1B1YmxpY1N1ZmZpeCgiYmwudWsi
KSk7CiAgICAgRVhQRUNUX0ZBTFNFKGlzUHVibGljU3VmZml4KCJ0ZXN0LmNvLnVrIikpOwogICAg
IEVYUEVDVF9UUlVFKGlzUHVibGljU3VmZml4KCJ4bi0temYwYW82NGEudHciKSk7CisgICAgRVhQ
RUNUX0ZBTFNFKGlzUHVibGljU3VmZml4KCJyNC0tLWFzZGYudGVzdC5jb20iKSk7CisgICAgRVhQ
RUNUX0ZBTFNFKGlzUHVibGljU3VmZml4KHV0ZjE2U3RyaW5nKGJpZGlyZWN0aW9uYWxEb21haW4p
KSk7CisgICAgRVhQRUNUX1RSVUUoaXNQdWJsaWNTdWZmaXgodXRmMTZTdHJpbmcodSJcdTY4MDNc
dTY3MjguanAiKSkpOwogfQogCiBURVNUX0YoUHVibGljU3VmZml4LCBUb3BQcml2YXRlbHlDb250
cm9sbGVkRG9tYWluKQogeworICAgIEVYUEVDVF9FUSh1dGYxNlN0cmluZyh1Ilx1NjgwM1x1Njcy
OC5qcCIpLCB0b3BQcml2YXRlbHlDb250cm9sbGVkRG9tYWluKHV0ZjE2U3RyaW5nKHUiXHU2ODAz
XHU2NzI4LmpwIikpKTsKKyAgICBFWFBFQ1RfRVEoU3RyaW5nKHV0ZjE2U3RyaW5nKHUiZXhhbXBs
ZS5cdTY4MDNcdTY3MjguanAiKSksIHRvcFByaXZhdGVseUNvbnRyb2xsZWREb21haW4odXRmMTZT
dHJpbmcodSJleGFtcGxlLlx1NjgwM1x1NjcyOC5qcCIpKSk7CisgICAgRVhQRUNUX0VRKFN0cmlu
ZygpLCB0b3BQcml2YXRlbHlDb250cm9sbGVkRG9tYWluKFN0cmluZygpKSk7CisgICAgRVhQRUNU
X0VRKFN0cmluZygpLCB0b3BQcml2YXRlbHlDb250cm9sbGVkRG9tYWluKCIiKSk7CiAgICAgRVhQ
RUNUX0VRKFN0cmluZygidGVzdC5jb20iKSwgdG9wUHJpdmF0ZWx5Q29udHJvbGxlZERvbWFpbigi
dGVzdC5jb20iKSk7CiAgICAgRVhQRUNUX0VRKFN0cmluZygidGVzdC5jb20iKSwgdG9wUHJpdmF0
ZWx5Q29udHJvbGxlZERvbWFpbigiY29tLnRlc3QuY29tIikpOwogICAgIEVYUEVDVF9FUShTdHJp
bmcoInRlc3QuY29tIiksIHRvcFByaXZhdGVseUNvbnRyb2xsZWREb21haW4oInN1YmRvbWFpbi50
ZXN0LmNvbSIpKTsKQEAgLTcyLDYgKzgxLDExIEBAIFRFU1RfRihQdWJsaWNTdWZmaXgsIFRvcFBy
aXZhdGVseUNvbnRyb2wKICAgICBFWFBFQ1RfRVEoU3RyaW5nKCIxMjcuMC4wLjEiKSwgdG9wUHJp
dmF0ZWx5Q29udHJvbGxlZERvbWFpbigiMTI3LjAuMC4xIikpOwogICAgIEVYUEVDVF9FUShTdHJp
bmcoKSwgdG9wUHJpdmF0ZWx5Q29udHJvbGxlZERvbWFpbigiMSIpKTsKICAgICBFWFBFQ1RfRVEo
U3RyaW5nKCksIHRvcFByaXZhdGVseUNvbnRyb2xsZWREb21haW4oImNvbSIpKTsKKyAgICBFWFBF
Q1RfRVEoU3RyaW5nKCJ0ZXN0LmNvbSIpLCB0b3BQcml2YXRlbHlDb250cm9sbGVkRG9tYWluKCJy
NC0tLWFzZGYudGVzdC5jb20iKSk7CisgICAgRVhQRUNUX0VRKFN0cmluZygicjQtLS1hc2RmLmNv
bSIpLCB0b3BQcml2YXRlbHlDb250cm9sbGVkRG9tYWluKCJyNC0tLWFzZGYuY29tIikpOworICAg
IEVYUEVDVF9FUShTdHJpbmcoKSwgdG9wUHJpdmF0ZWx5Q29udHJvbGxlZERvbWFpbigicjQtLS1h
c2RmIikpOworICAgIEVYUEVDVF9FUSh1dGYxNlN0cmluZyhiaWRpcmVjdGlvbmFsRG9tYWluKSwg
dXRmMTZTdHJpbmcoYmlkaXJlY3Rpb25hbERvbWFpbikpOworICAgIAogfQogCiB9Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>