<?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>160144</bug_id>
          
          <creation_ts>2016-07-24 10:54:24 -0700</creation_ts>
          <short_desc>Add specialization for encoding/decoding WebCore::CertificateInfos in the Network Cache</short_desc>
          <delta_ts>2016-07-25 11:47:13 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>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>
          
          
          <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="Sam Weinig">sam</reporter>
          <assigned_to name="Sam Weinig">sam</assigned_to>
          <cc>cdumez</cc>
    
    <cc>cgarcia</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ryanhaddad</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1214057</commentid>
    <comment_count>0</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2016-07-24 10:54:24 -0700</bug_when>
    <thetext>Add specialization for encoding/decoding WebCore::CertificateInfos in the Network Cache</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1214058</commentid>
    <comment_count>1</comment_count>
      <attachid>284447</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2016-07-24 10:56:27 -0700</bug_when>
    <thetext>Created attachment 284447
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1214059</commentid>
    <comment_count>2</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2016-07-24 10:57:21 -0700</bug_when>
    <thetext>&lt;rdar://problem/27409315&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1214072</commentid>
    <comment_count>3</comment_count>
      <attachid>284447</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2016-07-24 11:33:53 -0700</bug_when>
    <thetext>Comment on attachment 284447
Patch

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

r=me % nits.

&gt; Source/WebKit2/NetworkProcess/cache/NetworkCacheCoders.cpp:169
&gt; +    data = adoptCF(CFDataCreate(0, vector.data(), vector.size()));

0 -&gt; nullptr

&gt; Source/WebKit2/NetworkProcess/cache/NetworkCacheCoders.cpp:200
&gt; +    if (!trustData)

Looks like this could be an assertion instead? decodeCFData() would have returned value if trustData were null.

&gt; Source/WebKit2/NetworkProcess/cache/NetworkCacheCoders.cpp:225
&gt; +        RetainPtr&lt;CFDataRef&gt; data = adoptCF(SecCertificateCopyData((SecCertificateRef)values[i]));

Could use auto

&gt; Source/WebKit2/NetworkProcess/cache/NetworkCacheCoders.cpp:236
&gt; +    RetainPtr&lt;CFMutableArrayRef&gt; array = adoptCF(CFArrayCreateMutable(0, 0, &amp;kCFTypeArrayCallBacks));

could use auto.

&gt; Source/WebKit2/NetworkProcess/cache/NetworkCacheCoders.cpp:247
&gt; +    certificateChain = adoptCF(array.leakRef());

certificateChain = WTFMove(array);

may be a bit nicer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1214080</commentid>
    <comment_count>4</comment_count>
      <attachid>284452</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2016-07-24 16:00:04 -0700</bug_when>
    <thetext>Created attachment 284452
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1214083</commentid>
    <comment_count>5</comment_count>
      <attachid>284454</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2016-07-24 16:23:35 -0700</bug_when>
    <thetext>Created attachment 284454
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1214085</commentid>
    <comment_count>6</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2016-07-24 17:50:46 -0700</bug_when>
    <thetext>Fixed in https://trac.webkit.org/r203671.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1214235</commentid>
    <comment_count>7</comment_count>
    <who name="Ryan Haddad">ryanhaddad</who>
    <bug_when>2016-07-25 10:11:37 -0700</bug_when>
    <thetext>Debug WK2 tests are exiting early after failing an assertion added with this change:
ASSERT(CFGetTypeID(values[i]) != SecCertificateGetTypeID()); 

https://build.webkit.org/results/Apple%20El%20Capitan%20Debug%20WK2%20(Tests)/r203684%20(6840)/results.html</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1214286</commentid>
    <comment_count>8</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2016-07-25 11:47:13 -0700</bug_when>
    <thetext>Fixed assertion in https://trac.webkit.org/r203692.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>284447</attachid>
            <date>2016-07-24 10:56:27 -0700</date>
            <delta_ts>2016-07-24 16:00:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-160144-20160724105522.patch</filename>
            <type>text/plain</type>
            <size>7961</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwMzY2NykKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI1IEBACisyMDE2LTA3LTI0ICBTYW0gV2Vp
bmlnICA8c2FtQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQWRkIHNwZWNpYWxpemF0aW9uIGZvciBl
bmNvZGluZy9kZWNvZGluZyBXZWJDb3JlOjpDZXJ0aWZpY2F0ZUluZm9zIGluIHRoZSBOZXR3b3Jr
IENhY2hlCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8yNzQwOTMxNT4KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MDE0NAorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUv
TmV0d29ya0NhY2hlQ29kZXJzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpl
bmNvZGVDRkRhdGEpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OmRlY29kZUNGRGF0
YSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6ZW5jb2RlU2VjVHJ1c3RSZWYpOgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OmRlY29kZVNlY1RydXN0UmVmKToKKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjplbmNvZGVDZXJ0aWZpY2F0ZUNoYWluKToKKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpkZWNvZGVDZXJ0aWZpY2F0ZUNoYWluKToKKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpDb2RlcjxXZWJDb3JlOjpDZXJ0aWZpY2F0ZUluZm8+
OjplbmNvZGUpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OkNvZGVyPFdlYkNvcmU6
OkNlcnRpZmljYXRlSW5mbz46OmRlY29kZSk6CisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9j
YWNoZS9OZXR3b3JrQ2FjaGVTdG9yYWdlLmg6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNo
ZTo6U3RvcmFnZTo6dmVyc2lvbik6CisgICAgICAgIEJ1bXAgdGhlIHZlcnNpb24gYW5kIGxhc3RT
dGFibGVWZXJzaW9uIHRvIGFjY291bnQgZm9yIHRoZSBmb3JtYXQgY2hhbmdlLgorCiAyMDE2LTA3
LTIyICBKb3NlcGggUGVjb3Jhcm8gIDxwZWNvcmFyb0BhcHBsZS5jb20+CiAKICAgICAgICAgV2Vi
IEF1dG9tYXRpb246IEFsbCBrZXkgZXZlbnRzIHNob3VsZCBiZSBwcm9jZXNzZWQgYmVmb3JlIHNl
bmRpbmcgcmVzcG9uc2UKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NhY2hl
L05ldHdvcmtDYWNoZUNvZGVycy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvTmV0
d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlQ29kZXJzLmNwcAkocmV2aXNpb24gMjAzNjY3
KQorKysgU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlQ29k
ZXJzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgsNyArMjgsOSBAQAogCiAjaWYgRU5BQkxFKE5F
VFdPUktfQ0FDSEUpCiAKLSNpbmNsdWRlICJXZWJDb3JlQXJndW1lbnRDb2RlcnMuaCIKKyNpbmNs
dWRlIDxTZWN1cml0eS9TZWNDZXJ0aWZpY2F0ZS5oPgorI2luY2x1ZGUgPFNlY3VyaXR5L1NlY1Ry
dXN0Lmg+CisjaW5jbHVkZSA8d3RmL3NwaS9jb2NvYS9TZWN1cml0eVNQSS5oPgogI2luY2x1ZGUg
PHd0Zi90ZXh0L0NTdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIApA
QCAtMTQ1LDI1ICsxNDcsMTU4IEBAIGJvb2wgQ29kZXI8U3RyaW5nPjo6ZGVjb2RlKERlY29kZXIm
IGRlY28KICAgICByZXR1cm4gZGVjb2RlU3RyaW5nVGV4dDxVQ2hhcj4oZGVjb2RlciwgbGVuZ3Ro
LCByZXN1bHQpOwogfQogCitzdGF0aWMgdm9pZCBlbmNvZGVDRkRhdGEoRW5jb2RlciYgZW5jb2Rl
ciwgQ0ZEYXRhUmVmIGRhdGEpCit7CisgICAgdWludDY0X3QgbGVuZ3RoID0gQ0ZEYXRhR2V0TGVu
Z3RoKGRhdGEpOworICAgIGNvbnN0IHVpbnQ4X3QqIGJ5dGVQdHIgPSBDRkRhdGFHZXRCeXRlUHRy
KGRhdGEpOworCisgICAgZW5jb2RlciA8PCBsZW5ndGg7CisgICAgZW5jb2Rlci5lbmNvZGVGaXhl
ZExlbmd0aERhdGEoYnl0ZVB0ciwgbGVuZ3RoKTsKK30KKworc3RhdGljIGJvb2wgZGVjb2RlQ0ZE
YXRhKERlY29kZXImIGRlY29kZXIsIFJldGFpblB0cjxDRkRhdGFSZWY+JiBkYXRhKQoreworICAg
IHVpbnQ2NF90IHNpemUgPSAwOworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoc2l6ZSkpCisgICAg
ICAgIHJldHVybiBmYWxzZTsKKworICAgIFZlY3Rvcjx1aW50OF90PiB2ZWN0b3Ioc2l6ZSk7Cisg
ICAgaWYgKCFkZWNvZGVyLmRlY29kZUZpeGVkTGVuZ3RoRGF0YSh2ZWN0b3IuZGF0YSgpLCB2ZWN0
b3Iuc2l6ZSgpKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgZGF0YSA9IGFkb3B0Q0Yo
Q0ZEYXRhQ3JlYXRlKDAsIHZlY3Rvci5kYXRhKCksIHZlY3Rvci5zaXplKCkpKTsKKyAgICByZXR1
cm4gdHJ1ZTsKK30KKworCisjaWYgSEFWRShTRUNfVFJVU1RfU0VSSUFMSVpBVElPTikKK3N0YXRp
YyB2b2lkIGVuY29kZVNlY1RydXN0UmVmKEVuY29kZXImIGVuY29kZXIsIFNlY1RydXN0UmVmIHRy
dXN0KQoreworICAgIGF1dG8gZGF0YSA9IGFkb3B0Q0YoU2VjVHJ1c3RTZXJpYWxpemUodHJ1c3Qs
IG51bGxwdHIpKTsKKyAgICBpZiAoIWRhdGEpIHsKKyAgICAgICAgZW5jb2RlciA8PCBmYWxzZTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGVuY29kZXIgPDwgdHJ1ZTsKKyAgICBlbmNv
ZGVDRkRhdGEoZW5jb2RlciwgZGF0YS5nZXQoKSk7Cit9CisKK3N0YXRpYyBib29sIGRlY29kZVNl
Y1RydXN0UmVmKERlY29kZXImIGRlY29kZXIsIFJldGFpblB0cjxTZWNUcnVzdFJlZj4mIHJlc3Vs
dCkKK3sKKyAgICBib29sIGhhc1RydXN0OworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaGFzVHJ1
c3QpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoIWhhc1RydXN0KQorICAgICAg
ICByZXR1cm4gdHJ1ZTsKKworICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IHRydXN0RGF0YTsKKyAg
ICBpZiAoIWRlY29kZUNGRGF0YShkZWNvZGVyLCB0cnVzdERhdGEpKQorICAgICAgICByZXR1cm4g
ZmFsc2U7CisKKyAgICBpZiAoIXRydXN0RGF0YSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCisg
ICAgYXV0byB0cnVzdCA9IGFkb3B0Q0YoU2VjVHJ1c3REZXNlcmlhbGl6ZSh0cnVzdERhdGEuZ2V0
KCksIG51bGxwdHIpKTsKKyAgICBpZiAoIXRydXN0KQorICAgICAgICByZXR1cm4gZmFsc2U7CisK
KyAgICByZXN1bHQgPSBXVEZNb3ZlKHRydXN0KTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKyNlbmRp
ZgorCitzdGF0aWMgdm9pZCBlbmNvZGVDZXJ0aWZpY2F0ZUNoYWluKEVuY29kZXImIGVuY29kZXIs
IENGQXJyYXlSZWYgY2VydGlmaWNhdGVDaGFpbikKK3sKKyAgICBDRkluZGV4IHNpemUgPSBDRkFy
cmF5R2V0Q291bnQoY2VydGlmaWNhdGVDaGFpbik7CisgICAgVmVjdG9yPENGVHlwZVJlZiwgMzI+
IHZhbHVlcyhzaXplKTsKKworICAgIENGQXJyYXlHZXRWYWx1ZXMoY2VydGlmaWNhdGVDaGFpbiwg
Q0ZSYW5nZU1ha2UoMCwgc2l6ZSksIHZhbHVlcy5kYXRhKCkpOworCisgICAgZW5jb2RlciA8PCBz
dGF0aWNfY2FzdDx1aW50NjRfdD4oc2l6ZSk7CisKKyAgICBmb3IgKENGSW5kZXggaSA9IDA7IGkg
PCBzaXplOyArK2kpIHsKKyAgICAgICAgQVNTRVJUKHZhbHVlc1tpXSk7CisgICAgICAgIEFTU0VS
VChDRkdldFR5cGVJRCh2YWx1ZXNbaV0pICE9IFNlY0NlcnRpZmljYXRlR2V0VHlwZUlEKCkpOwor
CisgICAgICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IGRhdGEgPSBhZG9wdENGKFNlY0NlcnRpZmlj
YXRlQ29weURhdGEoKFNlY0NlcnRpZmljYXRlUmVmKXZhbHVlc1tpXSkpOworICAgICAgICBlbmNv
ZGVDRkRhdGEoZW5jb2RlciwgZGF0YS5nZXQoKSk7CisgICAgfQorfQorCitzdGF0aWMgYm9vbCBk
ZWNvZGVDZXJ0aWZpY2F0ZUNoYWluKERlY29kZXImIGRlY29kZXIsIFJldGFpblB0cjxDRkFycmF5
UmVmPiYgY2VydGlmaWNhdGVDaGFpbikKK3sKKyAgICB1aW50NjRfdCBzaXplOworICAgIGlmICgh
ZGVjb2Rlci5kZWNvZGUoc2l6ZSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIFJldGFp
blB0cjxDRk11dGFibGVBcnJheVJlZj4gYXJyYXkgPSBhZG9wdENGKENGQXJyYXlDcmVhdGVNdXRh
YmxlKDAsIDAsICZrQ0ZUeXBlQXJyYXlDYWxsQmFja3MpKTsKKworICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgc2l6ZTsgKytpKSB7CisgICAgICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IGRhdGE7
CisgICAgICAgIGlmICghZGVjb2RlQ0ZEYXRhKGRlY29kZXIsIGRhdGEpKQorICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOworCisgICAgICAgIFJldGFpblB0cjxTZWNDZXJ0aWZpY2F0ZVJlZj4gY2Vy
dGlmaWNhdGUgPSBhZG9wdENGKFNlY0NlcnRpZmljYXRlQ3JlYXRlV2l0aERhdGEoMCwgZGF0YS5n
ZXQoKSkpOworICAgICAgICBDRkFycmF5QXBwZW5kVmFsdWUoYXJyYXkuZ2V0KCksIGNlcnRpZmlj
YXRlLmdldCgpKTsKKyAgICB9CisKKyAgICBjZXJ0aWZpY2F0ZUNoYWluID0gYWRvcHRDRihhcnJh
eS5sZWFrUmVmKCkpOworICAgIHJldHVybiB0cnVlOworfQorCiB2b2lkIENvZGVyPFdlYkNvcmU6
OkNlcnRpZmljYXRlSW5mbz46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBXZWJDb3Jl
OjpDZXJ0aWZpY2F0ZUluZm8mIGNlcnRpZmljYXRlSW5mbykKIHsKLSAgICAvLyBGSVhNRTogQ29j
b2EgQ2VydGlmaWNhdGVJbmZvIGlzIGEgQ0Ygb2JqZWN0IHRyZWUuIEdlbmVyYWxpemUgQ0YgdHlw
ZSBjb2Rpbmcgc28gd2UgZG9uJ3QgbmVlZCB0byB1c2UgQXJndW1lbnRDb2RlciBoZXJlLgotICAg
IElQQzo6QXJndW1lbnRFbmNvZGVyIGFyZ3VtZW50RW5jb2RlcjsKLSAgICBhcmd1bWVudEVuY29k
ZXIgPDwgY2VydGlmaWNhdGVJbmZvOwotICAgIGVuY29kZXIgPDwgc3RhdGljX2Nhc3Q8dWludDY0
X3Q+KGFyZ3VtZW50RW5jb2Rlci5idWZmZXJTaXplKCkpOwotICAgIGVuY29kZXIuZW5jb2RlRml4
ZWRMZW5ndGhEYXRhKGFyZ3VtZW50RW5jb2Rlci5idWZmZXIoKSwgYXJndW1lbnRFbmNvZGVyLmJ1
ZmZlclNpemUoKSk7CisgICAgZW5jb2Rlci5lbmNvZGVFbnVtKGNlcnRpZmljYXRlSW5mby50eXBl
KCkpOworCisgICAgc3dpdGNoIChjZXJ0aWZpY2F0ZUluZm8udHlwZSgpKSB7CisjaWYgSEFWRShT
RUNfVFJVU1RfU0VSSUFMSVpBVElPTikKKyAgICBjYXNlIFdlYkNvcmU6OkNlcnRpZmljYXRlSW5m
bzo6VHlwZTo6VHJ1c3Q6CisgICAgICAgIGVuY29kZVNlY1RydXN0UmVmKGVuY29kZXIsIGNlcnRp
ZmljYXRlSW5mby50cnVzdCgpKTsKKyAgICAgICAgYnJlYWs7CisjZW5kaWYKKyAgICBjYXNlIFdl
YkNvcmU6OkNlcnRpZmljYXRlSW5mbzo6VHlwZTo6Q2VydGlmaWNhdGVDaGFpbjogeworICAgICAg
ICBlbmNvZGVDZXJ0aWZpY2F0ZUNoYWluKGVuY29kZXIsIGNlcnRpZmljYXRlSW5mby5jZXJ0aWZp
Y2F0ZUNoYWluKCkpOworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBXZWJDb3JlOjpD
ZXJ0aWZpY2F0ZUluZm86OlR5cGU6Ok5vbmU6CisgICAgICAgIC8vIERvIG5vdGhpbmcuCisgICAg
ICAgIGJyZWFrOworICAgIH0KIH0KIAogYm9vbCBDb2RlcjxXZWJDb3JlOjpDZXJ0aWZpY2F0ZUlu
Zm8+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgV2ViQ29yZTo6Q2VydGlmaWNhdGVJbmZvJiBj
ZXJ0aWZpY2F0ZUluZm8pCiB7Ci0gICAgdWludDY0X3QgY2VydGlmaWNhdGVTaXplOwotICAgIGlm
ICghZGVjb2Rlci5kZWNvZGUoY2VydGlmaWNhdGVTaXplKSkKLSAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgIFZlY3Rvcjx1aW50OF90PiBkYXRhKGNlcnRpZmljYXRlU2l6ZSk7Ci0gICAgaWYgKCFk
ZWNvZGVyLmRlY29kZUZpeGVkTGVuZ3RoRGF0YShkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpKQor
ICAgIFdlYkNvcmU6OkNlcnRpZmljYXRlSW5mbzo6VHlwZSBjZXJ0aWZpY2F0ZUluZm9UeXBlOwor
ICAgIGlmICghZGVjb2Rlci5kZWNvZGVFbnVtKGNlcnRpZmljYXRlSW5mb1R5cGUpKQogICAgICAg
ICByZXR1cm4gZmFsc2U7Ci0gICAgSVBDOjpBcmd1bWVudERlY29kZXIgYXJndW1lbnREZWNvZGVy
KGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSk7Ci0gICAgcmV0dXJuIGFyZ3VtZW50RGVjb2Rlci5k
ZWNvZGUoY2VydGlmaWNhdGVJbmZvKTsKKworICAgIHN3aXRjaCAoY2VydGlmaWNhdGVJbmZvVHlw
ZSkgeworI2lmIEhBVkUoU0VDX1RSVVNUX1NFUklBTElaQVRJT04pCisgICAgY2FzZSBXZWJDb3Jl
OjpDZXJ0aWZpY2F0ZUluZm86OlR5cGU6OlRydXN0OiB7CisgICAgICAgIFJldGFpblB0cjxTZWNU
cnVzdFJlZj4gdHJ1c3Q7CisgICAgICAgIGlmICghZGVjb2RlU2VjVHJ1c3RSZWYoZGVjb2Rlciwg
dHJ1c3QpKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgICAgIGNlcnRpZmljYXRl
SW5mbyA9IFdlYkNvcmU6OkNlcnRpZmljYXRlSW5mbyhXVEZNb3ZlKHRydXN0KSk7CisgICAgICAg
IHJldHVybiB0cnVlOworICAgIH0KKyNlbmRpZgorICAgIGNhc2UgV2ViQ29yZTo6Q2VydGlmaWNh
dGVJbmZvOjpUeXBlOjpDZXJ0aWZpY2F0ZUNoYWluOiB7CisgICAgICAgIFJldGFpblB0cjxDRkFy
cmF5UmVmPiBjZXJ0aWZpY2F0ZUNoYWluOworICAgICAgICBpZiAoIWRlY29kZUNlcnRpZmljYXRl
Q2hhaW4oZGVjb2RlciwgY2VydGlmaWNhdGVDaGFpbikpCisgICAgICAgICAgICByZXR1cm4gZmFs
c2U7CisKKyAgICAgICAgY2VydGlmaWNhdGVJbmZvID0gV2ViQ29yZTo6Q2VydGlmaWNhdGVJbmZv
KFdURk1vdmUoY2VydGlmaWNhdGVDaGFpbikpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9
ICAgIAorICAgIGNhc2UgV2ViQ29yZTo6Q2VydGlmaWNhdGVJbmZvOjpUeXBlOjpOb25lOgorICAg
ICAgICAvLyBEbyBub3RoaW5nLgorICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICByZXR1cm4g
dHJ1ZTsKIH0KIAogdm9pZCBDb2RlcjxTSEExOjpEaWdlc3Q+OjplbmNvZGUoRW5jb2RlciYgZW5j
b2RlciwgY29uc3QgU0hBMTo6RGlnZXN0JiBkaWdlc3QpCkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9O
ZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdG9yYWdlLmgKPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
U291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3RvcmFnZS5o
CShyZXZpc2lvbiAyMDM2NjcpCisrKyBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNo
ZS9OZXR3b3JrQ2FjaGVTdG9yYWdlLmgJKHdvcmtpbmcgY29weSkKQEAgLTg3LDEwICs4NywxMCBA
QCBwdWJsaWM6CiAgICAgc2l6ZV90IGNhcGFjaXR5KCkgY29uc3QgeyByZXR1cm4gbV9jYXBhY2l0
eTsgfQogICAgIHNpemVfdCBhcHByb3hpbWF0ZVNpemUoKSBjb25zdDsKIAotICAgIHN0YXRpYyBj
b25zdCB1bnNpZ25lZCB2ZXJzaW9uID0gODsKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgdmVy
c2lvbiA9IDk7CiAjaWYgUExBVEZPUk0oTUFDKQogICAgIC8vLyBBbGxvdyB0aGUgbGFzdCBzdGFi
bGUgdmVyc2lvbiBvZiB0aGUgY2FjaGUgdG8gY28tZXhpc3Qgd2l0aCB0aGUgbGF0ZXN0IGRldmVs
b3BtZW50IG9uZS4KLSAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgbGFzdFN0YWJsZVZlcnNpb24g
PSA4OworICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBsYXN0U3RhYmxlVmVyc2lvbiA9IDk7CiAj
ZW5kaWYKIAogICAgIFN0cmluZyBiYXNlUGF0aCgpIGNvbnN0Owo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>284452</attachid>
            <date>2016-07-24 16:00:04 -0700</date>
            <delta_ts>2016-07-24 16:23:31 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-160144-20160724155859.patch</filename>
            <type>text/plain</type>
            <size>10038</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwMzY2NykKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI1IEBACisyMDE2LTA3LTI0ICBTYW0gV2Vp
bmlnICA8c2FtQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQWRkIHNwZWNpYWxpemF0aW9uIGZvciBl
bmNvZGluZy9kZWNvZGluZyBXZWJDb3JlOjpDZXJ0aWZpY2F0ZUluZm9zIGluIHRoZSBOZXR3b3Jr
IENhY2hlCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8yNzQwOTMxNT4KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MDE0NAorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUv
TmV0d29ya0NhY2hlQ29kZXJzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpl
bmNvZGVDRkRhdGEpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OmRlY29kZUNGRGF0
YSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6ZW5jb2RlU2VjVHJ1c3RSZWYpOgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OmRlY29kZVNlY1RydXN0UmVmKToKKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjplbmNvZGVDZXJ0aWZpY2F0ZUNoYWluKToKKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpkZWNvZGVDZXJ0aWZpY2F0ZUNoYWluKToKKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpDb2RlcjxXZWJDb3JlOjpDZXJ0aWZpY2F0ZUluZm8+
OjplbmNvZGUpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OkNvZGVyPFdlYkNvcmU6
OkNlcnRpZmljYXRlSW5mbz46OmRlY29kZSk6CisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9j
YWNoZS9OZXR3b3JrQ2FjaGVTdG9yYWdlLmg6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNo
ZTo6U3RvcmFnZTo6dmVyc2lvbik6CisgICAgICAgIEJ1bXAgdGhlIHZlcnNpb24gYW5kIGxhc3RT
dGFibGVWZXJzaW9uIHRvIGFjY291bnQgZm9yIHRoZSBmb3JtYXQgY2hhbmdlLgorCiAyMDE2LTA3
LTIyICBKb3NlcGggUGVjb3Jhcm8gIDxwZWNvcmFyb0BhcHBsZS5jb20+CiAKICAgICAgICAgV2Vi
IEF1dG9tYXRpb246IEFsbCBrZXkgZXZlbnRzIHNob3VsZCBiZSBwcm9jZXNzZWQgYmVmb3JlIHNl
bmRpbmcgcmVzcG9uc2UKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NhY2hl
L05ldHdvcmtDYWNoZUNvZGVycy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvTmV0
d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlQ29kZXJzLmNwcAkocmV2aXNpb24gMjAzNjY3
KQorKysgU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlQ29k
ZXJzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgsMTAgKzI4LDE1IEBACiAKICNpZiBFTkFCTEUo
TkVUV09SS19DQUNIRSkKIAotI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcu
aD4KIAorI2lmIFBMQVRGT1JNKENPQ09BKQorI2luY2x1ZGUgPFNlY3VyaXR5L1NlY0NlcnRpZmlj
YXRlLmg+CisjaW5jbHVkZSA8U2VjdXJpdHkvU2VjVHJ1c3QuaD4KKyNpbmNsdWRlIDx3dGYvc3Bp
L2NvY29hL1NlY3VyaXR5U1BJLmg+CisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYktpdCB7CiBuYW1l
c3BhY2UgTmV0d29ya0NhY2hlIHsKIApAQCAtMTQ1LDI2ICsxNTAsMjE5IEBAIGJvb2wgQ29kZXI8
U3RyaW5nPjo6ZGVjb2RlKERlY29kZXImIGRlY28KICAgICByZXR1cm4gZGVjb2RlU3RyaW5nVGV4
dDxVQ2hhcj4oZGVjb2RlciwgbGVuZ3RoLCByZXN1bHQpOwogfQogCisjaWYgUExBVEZPUk0oQ09D
T0EpCitzdGF0aWMgdm9pZCBlbmNvZGVDRkRhdGEoRW5jb2RlciYgZW5jb2RlciwgQ0ZEYXRhUmVm
IGRhdGEpCit7CisgICAgdWludDY0X3QgbGVuZ3RoID0gQ0ZEYXRhR2V0TGVuZ3RoKGRhdGEpOwor
ICAgIGNvbnN0IHVpbnQ4X3QqIGJ5dGVQdHIgPSBDRkRhdGFHZXRCeXRlUHRyKGRhdGEpOworCisg
ICAgZW5jb2RlciA8PCBsZW5ndGg7CisgICAgZW5jb2Rlci5lbmNvZGVGaXhlZExlbmd0aERhdGEo
Ynl0ZVB0ciwgbGVuZ3RoKTsKK30KKworc3RhdGljIGJvb2wgZGVjb2RlQ0ZEYXRhKERlY29kZXIm
IGRlY29kZXIsIFJldGFpblB0cjxDRkRhdGFSZWY+JiBkYXRhKQoreworICAgIHVpbnQ2NF90IHNp
emUgPSAwOworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoc2l6ZSkpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKworICAgIFZlY3Rvcjx1aW50OF90PiB2ZWN0b3Ioc2l6ZSk7CisgICAgaWYgKCFkZWNv
ZGVyLmRlY29kZUZpeGVkTGVuZ3RoRGF0YSh2ZWN0b3IuZGF0YSgpLCB2ZWN0b3Iuc2l6ZSgpKSkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgZGF0YSA9IGFkb3B0Q0YoQ0ZEYXRhQ3JlYXRl
KG51bGxwdHIsIHZlY3Rvci5kYXRhKCksIHZlY3Rvci5zaXplKCkpKTsKKyAgICByZXR1cm4gdHJ1
ZTsKK30KKworCisjaWYgSEFWRShTRUNfVFJVU1RfU0VSSUFMSVpBVElPTikKK3N0YXRpYyB2b2lk
IGVuY29kZVNlY1RydXN0UmVmKEVuY29kZXImIGVuY29kZXIsIFNlY1RydXN0UmVmIHRydXN0KQor
eworICAgIGF1dG8gZGF0YSA9IGFkb3B0Q0YoU2VjVHJ1c3RTZXJpYWxpemUodHJ1c3QsIG51bGxw
dHIpKTsKKyAgICBpZiAoIWRhdGEpIHsKKyAgICAgICAgZW5jb2RlciA8PCBmYWxzZTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKworICAgIGVuY29kZXIgPDwgdHJ1ZTsKKyAgICBlbmNvZGVDRkRh
dGEoZW5jb2RlciwgZGF0YS5nZXQoKSk7Cit9CisKK3N0YXRpYyBib29sIGRlY29kZVNlY1RydXN0
UmVmKERlY29kZXImIGRlY29kZXIsIFJldGFpblB0cjxTZWNUcnVzdFJlZj4mIHJlc3VsdCkKK3sK
KyAgICBib29sIGhhc1RydXN0OworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaGFzVHJ1c3QpKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoIWhhc1RydXN0KQorICAgICAgICByZXR1
cm4gdHJ1ZTsKKworICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IHRydXN0RGF0YTsKKyAgICBpZiAo
IWRlY29kZUNGRGF0YShkZWNvZGVyLCB0cnVzdERhdGEpKQorICAgICAgICByZXR1cm4gZmFsc2U7
CisKKyAgICBhdXRvIHRydXN0ID0gYWRvcHRDRihTZWNUcnVzdERlc2VyaWFsaXplKHRydXN0RGF0
YS5nZXQoKSwgbnVsbHB0cikpOworICAgIGlmICghdHJ1c3QpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKworICAgIHJlc3VsdCA9IFdURk1vdmUodHJ1c3QpOworICAgIHJldHVybiB0cnVlOworfQor
I2VuZGlmCisKK3N0YXRpYyB2b2lkIGVuY29kZUNlcnRpZmljYXRlQ2hhaW4oRW5jb2RlciYgZW5j
b2RlciwgQ0ZBcnJheVJlZiBjZXJ0aWZpY2F0ZUNoYWluKQoreworICAgIENGSW5kZXggc2l6ZSA9
IENGQXJyYXlHZXRDb3VudChjZXJ0aWZpY2F0ZUNoYWluKTsKKyAgICBWZWN0b3I8Q0ZUeXBlUmVm
LCAzMj4gdmFsdWVzKHNpemUpOworCisgICAgQ0ZBcnJheUdldFZhbHVlcyhjZXJ0aWZpY2F0ZUNo
YWluLCBDRlJhbmdlTWFrZSgwLCBzaXplKSwgdmFsdWVzLmRhdGEoKSk7CisKKyAgICBlbmNvZGVy
IDw8IHN0YXRpY19jYXN0PHVpbnQ2NF90PihzaXplKTsKKworICAgIGZvciAoQ0ZJbmRleCBpID0g
MDsgaSA8IHNpemU7ICsraSkgeworICAgICAgICBBU1NFUlQodmFsdWVzW2ldKTsKKyAgICAgICAg
QVNTRVJUKENGR2V0VHlwZUlEKHZhbHVlc1tpXSkgIT0gU2VjQ2VydGlmaWNhdGVHZXRUeXBlSUQo
KSk7CisKKyAgICAgICAgYXV0byBkYXRhID0gYWRvcHRDRihTZWNDZXJ0aWZpY2F0ZUNvcHlEYXRh
KChTZWNDZXJ0aWZpY2F0ZVJlZil2YWx1ZXNbaV0pKTsKKyAgICAgICAgZW5jb2RlQ0ZEYXRhKGVu
Y29kZXIsIGRhdGEuZ2V0KCkpOworICAgIH0KK30KKworc3RhdGljIGJvb2wgZGVjb2RlQ2VydGlm
aWNhdGVDaGFpbihEZWNvZGVyJiBkZWNvZGVyLCBSZXRhaW5QdHI8Q0ZBcnJheVJlZj4mIGNlcnRp
ZmljYXRlQ2hhaW4pCit7CisgICAgdWludDY0X3Qgc2l6ZTsKKyAgICBpZiAoIWRlY29kZXIuZGVj
b2RlKHNpemUpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBhdXRvIGFycmF5ID0gYWRv
cHRDRihDRkFycmF5Q3JlYXRlTXV0YWJsZSgwLCAwLCAma0NGVHlwZUFycmF5Q2FsbEJhY2tzKSk7
CisKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemU7ICsraSkgeworICAgICAgICBSZXRh
aW5QdHI8Q0ZEYXRhUmVmPiBkYXRhOworICAgICAgICBpZiAoIWRlY29kZUNGRGF0YShkZWNvZGVy
LCBkYXRhKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICBhdXRvIGNlcnRp
ZmljYXRlID0gYWRvcHRDRihTZWNDZXJ0aWZpY2F0ZUNyZWF0ZVdpdGhEYXRhKDAsIGRhdGEuZ2V0
KCkpKTsKKyAgICAgICAgQ0ZBcnJheUFwcGVuZFZhbHVlKGFycmF5LmdldCgpLCBjZXJ0aWZpY2F0
ZS5nZXQoKSk7CisgICAgfQorCisgICAgY2VydGlmaWNhdGVDaGFpbiA9IGFkb3B0Q0YoYXJyYXku
bGVha1JlZigpKTsKKyAgICByZXR1cm4gdHJ1ZTsKK30KKwordm9pZCBDb2RlcjxXZWJDb3JlOjpD
ZXJ0aWZpY2F0ZUluZm8+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgV2ViQ29yZTo6
Q2VydGlmaWNhdGVJbmZvJiBjZXJ0aWZpY2F0ZUluZm8pCit7CisgICAgZW5jb2Rlci5lbmNvZGVF
bnVtKGNlcnRpZmljYXRlSW5mby50eXBlKCkpOworCisgICAgc3dpdGNoIChjZXJ0aWZpY2F0ZUlu
Zm8udHlwZSgpKSB7CisjaWYgSEFWRShTRUNfVFJVU1RfU0VSSUFMSVpBVElPTikKKyAgICBjYXNl
IFdlYkNvcmU6OkNlcnRpZmljYXRlSW5mbzo6VHlwZTo6VHJ1c3Q6CisgICAgICAgIGVuY29kZVNl
Y1RydXN0UmVmKGVuY29kZXIsIGNlcnRpZmljYXRlSW5mby50cnVzdCgpKTsKKyAgICAgICAgYnJl
YWs7CisjZW5kaWYKKyAgICBjYXNlIFdlYkNvcmU6OkNlcnRpZmljYXRlSW5mbzo6VHlwZTo6Q2Vy
dGlmaWNhdGVDaGFpbjogeworICAgICAgICBlbmNvZGVDZXJ0aWZpY2F0ZUNoYWluKGVuY29kZXIs
IGNlcnRpZmljYXRlSW5mby5jZXJ0aWZpY2F0ZUNoYWluKCkpOworICAgICAgICBicmVhazsKKyAg
ICB9CisgICAgY2FzZSBXZWJDb3JlOjpDZXJ0aWZpY2F0ZUluZm86OlR5cGU6Ok5vbmU6CisgICAg
ICAgIC8vIERvIG5vdGhpbmcuCisgICAgICAgIGJyZWFrOworICAgIH0KK30KKworYm9vbCBDb2Rl
cjxXZWJDb3JlOjpDZXJ0aWZpY2F0ZUluZm8+OjpkZWNvZGUoRGVjb2RlciYgZGVjb2RlciwgV2Vi
Q29yZTo6Q2VydGlmaWNhdGVJbmZvJiBjZXJ0aWZpY2F0ZUluZm8pCit7CisgICAgV2ViQ29yZTo6
Q2VydGlmaWNhdGVJbmZvOjpUeXBlIGNlcnRpZmljYXRlSW5mb1R5cGU7CisgICAgaWYgKCFkZWNv
ZGVyLmRlY29kZUVudW0oY2VydGlmaWNhdGVJbmZvVHlwZSkpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKworICAgIHN3aXRjaCAoY2VydGlmaWNhdGVJbmZvVHlwZSkgeworI2lmIEhBVkUoU0VDX1RS
VVNUX1NFUklBTElaQVRJT04pCisgICAgY2FzZSBXZWJDb3JlOjpDZXJ0aWZpY2F0ZUluZm86OlR5
cGU6OlRydXN0OiB7CisgICAgICAgIFJldGFpblB0cjxTZWNUcnVzdFJlZj4gdHJ1c3Q7CisgICAg
ICAgIGlmICghZGVjb2RlU2VjVHJ1c3RSZWYoZGVjb2RlciwgdHJ1c3QpKQorICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOworCisgICAgICAgIGNlcnRpZmljYXRlSW5mbyA9IFdlYkNvcmU6OkNlcnRp
ZmljYXRlSW5mbyhXVEZNb3ZlKHRydXN0KSk7CisgICAgICAgIHJldHVybiB0cnVlOworICAgIH0K
KyNlbmRpZgorICAgIGNhc2UgV2ViQ29yZTo6Q2VydGlmaWNhdGVJbmZvOjpUeXBlOjpDZXJ0aWZp
Y2F0ZUNoYWluOiB7CisgICAgICAgIFJldGFpblB0cjxDRkFycmF5UmVmPiBjZXJ0aWZpY2F0ZUNo
YWluOworICAgICAgICBpZiAoIWRlY29kZUNlcnRpZmljYXRlQ2hhaW4oZGVjb2RlciwgY2VydGlm
aWNhdGVDaGFpbikpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAgICAgY2VydGlm
aWNhdGVJbmZvID0gV2ViQ29yZTo6Q2VydGlmaWNhdGVJbmZvKFdURk1vdmUoY2VydGlmaWNhdGVD
aGFpbikpOworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICB9ICAgIAorICAgIGNhc2UgV2ViQ29y
ZTo6Q2VydGlmaWNhdGVJbmZvOjpUeXBlOjpOb25lOgorICAgICAgICAvLyBEbyBub3RoaW5nLgor
ICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICByZXR1cm4gdHJ1ZTsKK30KKyNlbHNlCiB2b2lk
IENvZGVyPFdlYkNvcmU6OkNlcnRpZmljYXRlSW5mbz46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVy
LCBjb25zdCBXZWJDb3JlOjpDZXJ0aWZpY2F0ZUluZm8mIGNlcnRpZmljYXRlSW5mbykKIHsKLSAg
ICAvLyBGSVhNRTogQ29jb2EgQ2VydGlmaWNhdGVJbmZvIGlzIGEgQ0Ygb2JqZWN0IHRyZWUuIEdl
bmVyYWxpemUgQ0YgdHlwZSBjb2Rpbmcgc28gd2UgZG9uJ3QgbmVlZCB0byB1c2UgQXJndW1lbnRD
b2RlciBoZXJlLgotICAgIElQQzo6QXJndW1lbnRFbmNvZGVyIGFyZ3VtZW50RW5jb2RlcjsKLSAg
ICBhcmd1bWVudEVuY29kZXIgPDwgY2VydGlmaWNhdGVJbmZvOwotICAgIGVuY29kZXIgPDwgc3Rh
dGljX2Nhc3Q8dWludDY0X3Q+KGFyZ3VtZW50RW5jb2Rlci5idWZmZXJTaXplKCkpOwotICAgIGVu
Y29kZXIuZW5jb2RlRml4ZWRMZW5ndGhEYXRhKGFyZ3VtZW50RW5jb2Rlci5idWZmZXIoKSwgYXJn
dW1lbnRFbmNvZGVyLmJ1ZmZlclNpemUoKSk7CisgICAgaWYgKCFjZXJ0aWZpY2F0ZUluZm8uY2Vy
dGlmaWNhdGUoKSkgeworICAgICAgICBlbmNvZGVyIDw8IGZhbHNlOworICAgICAgICByZXR1cm47
CisgICAgfQorCisgICAgR0J5dGVBcnJheSogY2VydGlmaWNhdGVEYXRhID0gMDsKKyAgICBnX29i
amVjdF9nZXQoR19PQkpFQ1QoY2VydGlmaWNhdGVJbmZvLmNlcnRpZmljYXRlKCkpLCAiY2VydGlm
aWNhdGUiLCAmY2VydGlmaWNhdGVEYXRhLCBOVUxMKTsKKyAgICBpZiAoIWNlcnRpZmljYXRlRGF0
YSkgeworICAgICAgICBlbmNvZGVyIDw8IGZhbHNlOworICAgICAgICByZXR1cm47CisgICAgfQor
CisgICAgZW5jb2RlciA8PCB0cnVlOworCisgICAgR1JlZlB0cjxHQnl0ZUFycmF5PiBjZXJ0aWZp
Y2F0ZSA9IGFkb3B0R1JlZihjZXJ0aWZpY2F0ZURhdGEpOworICAgIGVuY29kZXIgPDwgc3RhdGlj
X2Nhc3Q8dWludDY0X3Q+KGNlcnRpZmljYXRlLT5sZW4pOworICAgIGVuY29kZXIuZW5jb2RlRml4
ZWRMZW5ndGhEYXRhKGNlcnRpZmljYXRlLT5kYXRhLCBjZXJ0aWZpY2F0ZS0+bGVuKTsKKworICAg
IGVuY29kZXIgPDwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGNlcnRpZmljYXRlSW5mby50bHNFcnJv
cnMoKSk7CiB9CiAKIGJvb2wgQ29kZXI8V2ViQ29yZTo6Q2VydGlmaWNhdGVJbmZvPjo6ZGVjb2Rl
KERlY29kZXImIGRlY29kZXIsIFdlYkNvcmU6OkNlcnRpZmljYXRlSW5mbyYgY2VydGlmaWNhdGVJ
bmZvKQogewotICAgIHVpbnQ2NF90IGNlcnRpZmljYXRlU2l6ZTsKLSAgICBpZiAoIWRlY29kZXIu
ZGVjb2RlKGNlcnRpZmljYXRlU2l6ZSkpCisgICAgYm9vbCBoYXNDZXJ0aWZpY2F0ZTsKKyAgICBp
ZiAoIWRlY29kZXIuZGVjb2RlKGhhc0NlcnRpZmljYXRlKSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwotICAgIFZlY3Rvcjx1aW50OF90PiBkYXRhKGNlcnRpZmljYXRlU2l6ZSk7Ci0gICAgaWYgKCFk
ZWNvZGVyLmRlY29kZUZpeGVkTGVuZ3RoRGF0YShkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpKQor
CisgICAgaWYgKCFoYXNDZXJ0aWZpY2F0ZSkKKyAgICAgICAgcmV0dXJuIHRydWU7CisKKyAgICB1
aW50NjRfdCBzaXplID0gMDsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlKHNpemUpKQorICAgICAg
ICByZXR1cm4gZmFsc2U7CisKKyAgICBWZWN0b3I8dWludDhfdD4gdmVjdG9yKHNpemUpOworICAg
IGlmICghZGVjb2Rlci5kZWNvZGVGaXhlZExlbmd0aERhdGEodmVjdG9yLmRhdGEoKSwgdmVjdG9y
LnNpemUoKSkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIElQQzo6RGF0YVJlZmVyZW5j
ZSBjZXJ0aWZpY2F0ZURhdGFSZWZlcmVuY2U7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZVZhcmlh
YmxlTGVuZ3RoQnl0ZUFycmF5KGNlcnRpZmljYXRlRGF0YVJlZmVyZW5jZSkpCisgICAgICAgIHJl
dHVybiBmYWxzZTsKKworICAgIEdCeXRlQXJyYXkqIGNlcnRpZmljYXRlRGF0YSA9IGdfYnl0ZV9h
cnJheV9zaXplZF9uZXcodmVjdG9yLnNpemUoKSk7CisgICAgY2VydGlmaWNhdGVEYXRhID0gZ19i
eXRlX2FycmF5X2FwcGVuZChjZXJ0aWZpY2F0ZURhdGEsIHZlY3Rvci5kYXRhKCksIHZlY3Rvci5z
aXplKCkpOworICAgIEdSZWZQdHI8R0J5dGVBcnJheT4gY2VydGlmaWNhdGVCeXRlcyA9IGFkb3B0
R1JlZihjZXJ0aWZpY2F0ZURhdGEpOworCisgICAgR1Rsc0JhY2tlbmQqIGJhY2tlbmQgPSBnX3Rs
c19iYWNrZW5kX2dldF9kZWZhdWx0KCk7CisgICAgR1JlZlB0cjxHVGxzQ2VydGlmaWNhdGU+IGNl
cnRpZmljYXRlID0gYWRvcHRHUmVmKEdfVExTX0NFUlRJRklDQVRFKGdfaW5pdGFibGVfbmV3KAor
ICAgICAgICBnX3Rsc19iYWNrZW5kX2dldF9jZXJ0aWZpY2F0ZV90eXBlKGJhY2tlbmQpLCAwLCAw
LCAiY2VydGlmaWNhdGUiLCBjZXJ0aWZpY2F0ZUJ5dGVzLmdldCgpLCBudWxscHRyKSkpOworICAg
IGNlcnRpZmljYXRlSW5mby5zZXRDZXJ0aWZpY2F0ZShjZXJ0aWZpY2F0ZS5nZXQoKSk7CisKKyAg
ICB1aW50MzJfdCB0bHNFcnJvcnM7CisgICAgaWYgKCFkZWNvZGVyLmRlY29kZSh0bHNFcnJvcnMp
KQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgSVBDOjpBcmd1bWVudERlY29kZXIgYXJndW1l
bnREZWNvZGVyKGRhdGEuZGF0YSgpLCBkYXRhLnNpemUoKSk7Ci0gICAgcmV0dXJuIGFyZ3VtZW50
RGVjb2Rlci5kZWNvZGUoY2VydGlmaWNhdGVJbmZvKTsKKyAgICBjZXJ0aWZpY2F0ZUluZm8uc2V0
VExTRXJyb3JzKHN0YXRpY19jYXN0PEdUbHNDZXJ0aWZpY2F0ZUZsYWdzPih0bHNFcnJvcnMpKTsK
KworICAgIHJldHVybiB0cnVlOwogfQorI2VuZGlmCiAKIHZvaWQgQ29kZXI8U0hBMTo6RGlnZXN0
Pjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFNIQTE6OkRpZ2VzdCYgZGlnZXN0KQog
ewpJbmRleDogU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hl
U3RvcmFnZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2Nh
Y2hlL05ldHdvcmtDYWNoZVN0b3JhZ2UuaAkocmV2aXNpb24gMjAzNjY3KQorKysgU291cmNlL1dl
YktpdDIvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3RvcmFnZS5oCSh3b3JraW5n
IGNvcHkpCkBAIC04NywxMCArODcsMTAgQEAgcHVibGljOgogICAgIHNpemVfdCBjYXBhY2l0eSgp
IGNvbnN0IHsgcmV0dXJuIG1fY2FwYWNpdHk7IH0KICAgICBzaXplX3QgYXBwcm94aW1hdGVTaXpl
KCkgY29uc3Q7CiAKLSAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgdmVyc2lvbiA9IDg7CisgICAg
c3RhdGljIGNvbnN0IHVuc2lnbmVkIHZlcnNpb24gPSA5OwogI2lmIFBMQVRGT1JNKE1BQykKICAg
ICAvLy8gQWxsb3cgdGhlIGxhc3Qgc3RhYmxlIHZlcnNpb24gb2YgdGhlIGNhY2hlIHRvIGNvLWV4
aXN0IHdpdGggdGhlIGxhdGVzdCBkZXZlbG9wbWVudCBvbmUuCi0gICAgc3RhdGljIGNvbnN0IHVu
c2lnbmVkIGxhc3RTdGFibGVWZXJzaW9uID0gODsKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQg
bGFzdFN0YWJsZVZlcnNpb24gPSA5OwogI2VuZGlmCiAKICAgICBTdHJpbmcgYmFzZVBhdGgoKSBj
b25zdDsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>284454</attachid>
            <date>2016-07-24 16:23:35 -0700</date>
            <delta_ts>2016-07-24 17:51:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-160144-20160724162229.patch</filename>
            <type>text/plain</type>
            <size>9878</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDIwMzY2NykKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI1IEBACisyMDE2LTA3LTI0ICBTYW0gV2Vp
bmlnICA8c2FtQHdlYmtpdC5vcmc+CisKKyAgICAgICAgQWRkIHNwZWNpYWxpemF0aW9uIGZvciBl
bmNvZGluZy9kZWNvZGluZyBXZWJDb3JlOjpDZXJ0aWZpY2F0ZUluZm9zIGluIHRoZSBOZXR3b3Jr
IENhY2hlCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS8yNzQwOTMxNT4KKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE2MDE0NAorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUv
TmV0d29ya0NhY2hlQ29kZXJzLmNwcDoKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpl
bmNvZGVDRkRhdGEpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OmRlY29kZUNGRGF0
YSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6ZW5jb2RlU2VjVHJ1c3RSZWYpOgor
ICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OmRlY29kZVNlY1RydXN0UmVmKToKKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjplbmNvZGVDZXJ0aWZpY2F0ZUNoYWluKToKKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpkZWNvZGVDZXJ0aWZpY2F0ZUNoYWluKToKKyAgICAg
ICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpDb2RlcjxXZWJDb3JlOjpDZXJ0aWZpY2F0ZUluZm8+
OjplbmNvZGUpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OkNvZGVyPFdlYkNvcmU6
OkNlcnRpZmljYXRlSW5mbz46OmRlY29kZSk6CisKKyAgICAgICAgKiBOZXR3b3JrUHJvY2Vzcy9j
YWNoZS9OZXR3b3JrQ2FjaGVTdG9yYWdlLmg6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNo
ZTo6U3RvcmFnZTo6dmVyc2lvbik6CisgICAgICAgIEJ1bXAgdGhlIHZlcnNpb24gYW5kIGxhc3RT
dGFibGVWZXJzaW9uIHRvIGFjY291bnQgZm9yIHRoZSBmb3JtYXQgY2hhbmdlLgorCiAyMDE2LTA3
LTIyICBKb3NlcGggUGVjb3Jhcm8gIDxwZWNvcmFyb0BhcHBsZS5jb20+CiAKICAgICAgICAgV2Vi
IEF1dG9tYXRpb246IEFsbCBrZXkgZXZlbnRzIHNob3VsZCBiZSBwcm9jZXNzZWQgYmVmb3JlIHNl
bmRpbmcgcmVzcG9uc2UKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL05ldHdvcmtQcm9jZXNzL2NhY2hl
L05ldHdvcmtDYWNoZUNvZGVycy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvTmV0
d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlQ29kZXJzLmNwcAkocmV2aXNpb24gMjAzNjY3
KQorKysgU291cmNlL1dlYktpdDIvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlQ29k
ZXJzLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMjgsMTAgKzI4LDE1IEBACiAKICNpZiBFTkFCTEUo
TkVUV09SS19DQUNIRSkKIAotI2luY2x1ZGUgIldlYkNvcmVBcmd1bWVudENvZGVycy5oIgogI2lu
Y2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcu
aD4KIAorI2lmIFBMQVRGT1JNKENPQ09BKQorI2luY2x1ZGUgPFNlY3VyaXR5L1NlY0NlcnRpZmlj
YXRlLmg+CisjaW5jbHVkZSA8U2VjdXJpdHkvU2VjVHJ1c3QuaD4KKyNpbmNsdWRlIDx3dGYvc3Bp
L2NvY29hL1NlY3VyaXR5U1BJLmg+CisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYktpdCB7CiBuYW1l
c3BhY2UgTmV0d29ya0NhY2hlIHsKIApAQCAtMTQ1LDI2ICsxNTAsMjE1IEBAIGJvb2wgQ29kZXI8
U3RyaW5nPjo6ZGVjb2RlKERlY29kZXImIGRlY28KICAgICByZXR1cm4gZGVjb2RlU3RyaW5nVGV4
dDxVQ2hhcj4oZGVjb2RlciwgbGVuZ3RoLCByZXN1bHQpOwogfQogCisjaWYgUExBVEZPUk0oQ09D
T0EpCitzdGF0aWMgdm9pZCBlbmNvZGVDRkRhdGEoRW5jb2RlciYgZW5jb2RlciwgQ0ZEYXRhUmVm
IGRhdGEpCit7CisgICAgdWludDY0X3QgbGVuZ3RoID0gQ0ZEYXRhR2V0TGVuZ3RoKGRhdGEpOwor
ICAgIGNvbnN0IHVpbnQ4X3QqIGJ5dGVQdHIgPSBDRkRhdGFHZXRCeXRlUHRyKGRhdGEpOworCisg
ICAgZW5jb2RlciA8PCBsZW5ndGg7CisgICAgZW5jb2Rlci5lbmNvZGVGaXhlZExlbmd0aERhdGEo
Ynl0ZVB0ciwgbGVuZ3RoKTsKK30KKworc3RhdGljIGJvb2wgZGVjb2RlQ0ZEYXRhKERlY29kZXIm
IGRlY29kZXIsIFJldGFpblB0cjxDRkRhdGFSZWY+JiBkYXRhKQoreworICAgIHVpbnQ2NF90IHNp
emUgPSAwOworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoc2l6ZSkpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKworICAgIFZlY3Rvcjx1aW50OF90PiB2ZWN0b3Ioc2l6ZSk7CisgICAgaWYgKCFkZWNv
ZGVyLmRlY29kZUZpeGVkTGVuZ3RoRGF0YSh2ZWN0b3IuZGF0YSgpLCB2ZWN0b3Iuc2l6ZSgpKSkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgZGF0YSA9IGFkb3B0Q0YoQ0ZEYXRhQ3JlYXRl
KG51bGxwdHIsIHZlY3Rvci5kYXRhKCksIHZlY3Rvci5zaXplKCkpKTsKKyAgICByZXR1cm4gdHJ1
ZTsKK30KKworCisjaWYgSEFWRShTRUNfVFJVU1RfU0VSSUFMSVpBVElPTikKK3N0YXRpYyB2b2lk
IGVuY29kZVNlY1RydXN0UmVmKEVuY29kZXImIGVuY29kZXIsIFNlY1RydXN0UmVmIHRydXN0KQor
eworICAgIGF1dG8gZGF0YSA9IGFkb3B0Q0YoU2VjVHJ1c3RTZXJpYWxpemUodHJ1c3QsIG51bGxw
dHIpKTsKKyAgICBpZiAoIWRhdGEpIHsKKyAgICAgICAgZW5jb2RlciA8PCBmYWxzZTsKKyAgICAg
ICAgcmV0dXJuOworICAgIH0KKworICAgIGVuY29kZXIgPDwgdHJ1ZTsKKyAgICBlbmNvZGVDRkRh
dGEoZW5jb2RlciwgZGF0YS5nZXQoKSk7Cit9CisKK3N0YXRpYyBib29sIGRlY29kZVNlY1RydXN0
UmVmKERlY29kZXImIGRlY29kZXIsIFJldGFpblB0cjxTZWNUcnVzdFJlZj4mIHJlc3VsdCkKK3sK
KyAgICBib29sIGhhc1RydXN0OworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoaGFzVHJ1c3QpKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAoIWhhc1RydXN0KQorICAgICAgICByZXR1
cm4gdHJ1ZTsKKworICAgIFJldGFpblB0cjxDRkRhdGFSZWY+IHRydXN0RGF0YTsKKyAgICBpZiAo
IWRlY29kZUNGRGF0YShkZWNvZGVyLCB0cnVzdERhdGEpKQorICAgICAgICByZXR1cm4gZmFsc2U7
CisKKyAgICBhdXRvIHRydXN0ID0gYWRvcHRDRihTZWNUcnVzdERlc2VyaWFsaXplKHRydXN0RGF0
YS5nZXQoKSwgbnVsbHB0cikpOworICAgIGlmICghdHJ1c3QpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKworICAgIHJlc3VsdCA9IFdURk1vdmUodHJ1c3QpOworICAgIHJldHVybiB0cnVlOworfQor
I2VuZGlmCisKK3N0YXRpYyB2b2lkIGVuY29kZUNlcnRpZmljYXRlQ2hhaW4oRW5jb2RlciYgZW5j
b2RlciwgQ0ZBcnJheVJlZiBjZXJ0aWZpY2F0ZUNoYWluKQoreworICAgIENGSW5kZXggc2l6ZSA9
IENGQXJyYXlHZXRDb3VudChjZXJ0aWZpY2F0ZUNoYWluKTsKKyAgICBWZWN0b3I8Q0ZUeXBlUmVm
LCAzMj4gdmFsdWVzKHNpemUpOworCisgICAgQ0ZBcnJheUdldFZhbHVlcyhjZXJ0aWZpY2F0ZUNo
YWluLCBDRlJhbmdlTWFrZSgwLCBzaXplKSwgdmFsdWVzLmRhdGEoKSk7CisKKyAgICBlbmNvZGVy
IDw8IHN0YXRpY19jYXN0PHVpbnQ2NF90PihzaXplKTsKKworICAgIGZvciAoQ0ZJbmRleCBpID0g
MDsgaSA8IHNpemU7ICsraSkgeworICAgICAgICBBU1NFUlQodmFsdWVzW2ldKTsKKyAgICAgICAg
QVNTRVJUKENGR2V0VHlwZUlEKHZhbHVlc1tpXSkgIT0gU2VjQ2VydGlmaWNhdGVHZXRUeXBlSUQo
KSk7CisKKyAgICAgICAgYXV0byBkYXRhID0gYWRvcHRDRihTZWNDZXJ0aWZpY2F0ZUNvcHlEYXRh
KChTZWNDZXJ0aWZpY2F0ZVJlZil2YWx1ZXNbaV0pKTsKKyAgICAgICAgZW5jb2RlQ0ZEYXRhKGVu
Y29kZXIsIGRhdGEuZ2V0KCkpOworICAgIH0KK30KKworc3RhdGljIGJvb2wgZGVjb2RlQ2VydGlm
aWNhdGVDaGFpbihEZWNvZGVyJiBkZWNvZGVyLCBSZXRhaW5QdHI8Q0ZBcnJheVJlZj4mIGNlcnRp
ZmljYXRlQ2hhaW4pCit7CisgICAgdWludDY0X3Qgc2l6ZTsKKyAgICBpZiAoIWRlY29kZXIuZGVj
b2RlKHNpemUpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBhdXRvIGFycmF5ID0gYWRv
cHRDRihDRkFycmF5Q3JlYXRlTXV0YWJsZSgwLCAwLCAma0NGVHlwZUFycmF5Q2FsbEJhY2tzKSk7
CisKKyAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHNpemU7ICsraSkgeworICAgICAgICBSZXRh
aW5QdHI8Q0ZEYXRhUmVmPiBkYXRhOworICAgICAgICBpZiAoIWRlY29kZUNGRGF0YShkZWNvZGVy
LCBkYXRhKSkKKyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICBhdXRvIGNlcnRp
ZmljYXRlID0gYWRvcHRDRihTZWNDZXJ0aWZpY2F0ZUNyZWF0ZVdpdGhEYXRhKDAsIGRhdGEuZ2V0
KCkpKTsKKyAgICAgICAgQ0ZBcnJheUFwcGVuZFZhbHVlKGFycmF5LmdldCgpLCBjZXJ0aWZpY2F0
ZS5nZXQoKSk7CisgICAgfQorCisgICAgY2VydGlmaWNhdGVDaGFpbiA9IFdURk1vdmUoYXJyYXkp
OworICAgIHJldHVybiB0cnVlOworfQorCiB2b2lkIENvZGVyPFdlYkNvcmU6OkNlcnRpZmljYXRl
SW5mbz46OmVuY29kZShFbmNvZGVyJiBlbmNvZGVyLCBjb25zdCBXZWJDb3JlOjpDZXJ0aWZpY2F0
ZUluZm8mIGNlcnRpZmljYXRlSW5mbykKIHsKLSAgICAvLyBGSVhNRTogQ29jb2EgQ2VydGlmaWNh
dGVJbmZvIGlzIGEgQ0Ygb2JqZWN0IHRyZWUuIEdlbmVyYWxpemUgQ0YgdHlwZSBjb2Rpbmcgc28g
d2UgZG9uJ3QgbmVlZCB0byB1c2UgQXJndW1lbnRDb2RlciBoZXJlLgotICAgIElQQzo6QXJndW1l
bnRFbmNvZGVyIGFyZ3VtZW50RW5jb2RlcjsKLSAgICBhcmd1bWVudEVuY29kZXIgPDwgY2VydGlm
aWNhdGVJbmZvOwotICAgIGVuY29kZXIgPDwgc3RhdGljX2Nhc3Q8dWludDY0X3Q+KGFyZ3VtZW50
RW5jb2Rlci5idWZmZXJTaXplKCkpOwotICAgIGVuY29kZXIuZW5jb2RlRml4ZWRMZW5ndGhEYXRh
KGFyZ3VtZW50RW5jb2Rlci5idWZmZXIoKSwgYXJndW1lbnRFbmNvZGVyLmJ1ZmZlclNpemUoKSk7
CisgICAgZW5jb2Rlci5lbmNvZGVFbnVtKGNlcnRpZmljYXRlSW5mby50eXBlKCkpOworCisgICAg
c3dpdGNoIChjZXJ0aWZpY2F0ZUluZm8udHlwZSgpKSB7CisjaWYgSEFWRShTRUNfVFJVU1RfU0VS
SUFMSVpBVElPTikKKyAgICBjYXNlIFdlYkNvcmU6OkNlcnRpZmljYXRlSW5mbzo6VHlwZTo6VHJ1
c3Q6CisgICAgICAgIGVuY29kZVNlY1RydXN0UmVmKGVuY29kZXIsIGNlcnRpZmljYXRlSW5mby50
cnVzdCgpKTsKKyAgICAgICAgYnJlYWs7CisjZW5kaWYKKyAgICBjYXNlIFdlYkNvcmU6OkNlcnRp
ZmljYXRlSW5mbzo6VHlwZTo6Q2VydGlmaWNhdGVDaGFpbjogeworICAgICAgICBlbmNvZGVDZXJ0
aWZpY2F0ZUNoYWluKGVuY29kZXIsIGNlcnRpZmljYXRlSW5mby5jZXJ0aWZpY2F0ZUNoYWluKCkp
OworICAgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBXZWJDb3JlOjpDZXJ0aWZpY2F0ZUlu
Zm86OlR5cGU6Ok5vbmU6CisgICAgICAgIC8vIERvIG5vdGhpbmcuCisgICAgICAgIGJyZWFrOwor
ICAgIH0KIH0KIAogYm9vbCBDb2RlcjxXZWJDb3JlOjpDZXJ0aWZpY2F0ZUluZm8+OjpkZWNvZGUo
RGVjb2RlciYgZGVjb2RlciwgV2ViQ29yZTo6Q2VydGlmaWNhdGVJbmZvJiBjZXJ0aWZpY2F0ZUlu
Zm8pCiB7Ci0gICAgdWludDY0X3QgY2VydGlmaWNhdGVTaXplOwotICAgIGlmICghZGVjb2Rlci5k
ZWNvZGUoY2VydGlmaWNhdGVTaXplKSkKKyAgICBXZWJDb3JlOjpDZXJ0aWZpY2F0ZUluZm86OlR5
cGUgY2VydGlmaWNhdGVJbmZvVHlwZTsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2RlRW51bShjZXJ0
aWZpY2F0ZUluZm9UeXBlKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIFZlY3Rvcjx1aW50
OF90PiBkYXRhKGNlcnRpZmljYXRlU2l6ZSk7Ci0gICAgaWYgKCFkZWNvZGVyLmRlY29kZUZpeGVk
TGVuZ3RoRGF0YShkYXRhLmRhdGEoKSwgZGF0YS5zaXplKCkpKQorCisgICAgc3dpdGNoIChjZXJ0
aWZpY2F0ZUluZm9UeXBlKSB7CisjaWYgSEFWRShTRUNfVFJVU1RfU0VSSUFMSVpBVElPTikKKyAg
ICBjYXNlIFdlYkNvcmU6OkNlcnRpZmljYXRlSW5mbzo6VHlwZTo6VHJ1c3Q6IHsKKyAgICAgICAg
UmV0YWluUHRyPFNlY1RydXN0UmVmPiB0cnVzdDsKKyAgICAgICAgaWYgKCFkZWNvZGVTZWNUcnVz
dFJlZihkZWNvZGVyLCB0cnVzdCkpCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICAg
ICAgY2VydGlmaWNhdGVJbmZvID0gV2ViQ29yZTo6Q2VydGlmaWNhdGVJbmZvKFdURk1vdmUodHJ1
c3QpKTsKKyAgICAgICAgcmV0dXJuIHRydWU7CisgICAgfQorI2VuZGlmCisgICAgY2FzZSBXZWJD
b3JlOjpDZXJ0aWZpY2F0ZUluZm86OlR5cGU6OkNlcnRpZmljYXRlQ2hhaW46IHsKKyAgICAgICAg
UmV0YWluUHRyPENGQXJyYXlSZWY+IGNlcnRpZmljYXRlQ2hhaW47CisgICAgICAgIGlmICghZGVj
b2RlQ2VydGlmaWNhdGVDaGFpbihkZWNvZGVyLCBjZXJ0aWZpY2F0ZUNoYWluKSkKKyAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKKworICAgICAgICBjZXJ0aWZpY2F0ZUluZm8gPSBXZWJDb3JlOjpD
ZXJ0aWZpY2F0ZUluZm8oV1RGTW92ZShjZXJ0aWZpY2F0ZUNoYWluKSk7CisgICAgICAgIHJldHVy
biB0cnVlOworICAgIH0gICAgCisgICAgY2FzZSBXZWJDb3JlOjpDZXJ0aWZpY2F0ZUluZm86OlR5
cGU6Ok5vbmU6CisgICAgICAgIC8vIERvIG5vdGhpbmcuCisgICAgICAgIGJyZWFrOworICAgIH0K
KworICAgIHJldHVybiB0cnVlOworfQorI2Vsc2UKK3ZvaWQgQ29kZXI8V2ViQ29yZTo6Q2VydGlm
aWNhdGVJbmZvPjo6ZW5jb2RlKEVuY29kZXImIGVuY29kZXIsIGNvbnN0IFdlYkNvcmU6OkNlcnRp
ZmljYXRlSW5mbyYgY2VydGlmaWNhdGVJbmZvKQoreworICAgIGlmICghY2VydGlmaWNhdGVJbmZv
LmNlcnRpZmljYXRlKCkpIHsKKyAgICAgICAgZW5jb2RlciA8PCBmYWxzZTsKKyAgICAgICAgcmV0
dXJuOworICAgIH0KKworICAgIEdCeXRlQXJyYXkqIGNlcnRpZmljYXRlRGF0YSA9IDA7CisgICAg
Z19vYmplY3RfZ2V0KEdfT0JKRUNUKGNlcnRpZmljYXRlSW5mby5jZXJ0aWZpY2F0ZSgpKSwgImNl
cnRpZmljYXRlIiwgJmNlcnRpZmljYXRlRGF0YSwgTlVMTCk7CisgICAgaWYgKCFjZXJ0aWZpY2F0
ZURhdGEpIHsKKyAgICAgICAgZW5jb2RlciA8PCBmYWxzZTsKKyAgICAgICAgcmV0dXJuOworICAg
IH0KKworICAgIGVuY29kZXIgPDwgdHJ1ZTsKKworICAgIEdSZWZQdHI8R0J5dGVBcnJheT4gY2Vy
dGlmaWNhdGUgPSBhZG9wdEdSZWYoY2VydGlmaWNhdGVEYXRhKTsKKyAgICBlbmNvZGVyIDw8IHN0
YXRpY19jYXN0PHVpbnQ2NF90PihjZXJ0aWZpY2F0ZS0+bGVuKTsKKyAgICBlbmNvZGVyLmVuY29k
ZUZpeGVkTGVuZ3RoRGF0YShjZXJ0aWZpY2F0ZS0+ZGF0YSwgY2VydGlmaWNhdGUtPmxlbik7CisK
KyAgICBlbmNvZGVyIDw8IHN0YXRpY19jYXN0PHVpbnQzMl90PihjZXJ0aWZpY2F0ZUluZm8udGxz
RXJyb3JzKCkpOworfQorCitib29sIENvZGVyPFdlYkNvcmU6OkNlcnRpZmljYXRlSW5mbz46OmRl
Y29kZShEZWNvZGVyJiBkZWNvZGVyLCBXZWJDb3JlOjpDZXJ0aWZpY2F0ZUluZm8mIGNlcnRpZmlj
YXRlSW5mbykKK3sKKyAgICBib29sIGhhc0NlcnRpZmljYXRlOworICAgIGlmICghZGVjb2Rlci5k
ZWNvZGUoaGFzQ2VydGlmaWNhdGUpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBpZiAo
IWhhc0NlcnRpZmljYXRlKQorICAgICAgICByZXR1cm4gdHJ1ZTsKKworICAgIHVpbnQ2NF90IHNp
emUgPSAwOworICAgIGlmICghZGVjb2Rlci5kZWNvZGUoc2l6ZSkpCisgICAgICAgIHJldHVybiBm
YWxzZTsKKworICAgIFZlY3Rvcjx1aW50OF90PiB2ZWN0b3Ioc2l6ZSk7CisgICAgaWYgKCFkZWNv
ZGVyLmRlY29kZUZpeGVkTGVuZ3RoRGF0YSh2ZWN0b3IuZGF0YSgpLCB2ZWN0b3Iuc2l6ZSgpKSkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworCisgICAgR0J5dGVBcnJheSogY2VydGlmaWNhdGVEYXRh
ID0gZ19ieXRlX2FycmF5X3NpemVkX25ldyh2ZWN0b3Iuc2l6ZSgpKTsKKyAgICBjZXJ0aWZpY2F0
ZURhdGEgPSBnX2J5dGVfYXJyYXlfYXBwZW5kKGNlcnRpZmljYXRlRGF0YSwgdmVjdG9yLmRhdGEo
KSwgdmVjdG9yLnNpemUoKSk7CisgICAgR1JlZlB0cjxHQnl0ZUFycmF5PiBjZXJ0aWZpY2F0ZUJ5
dGVzID0gYWRvcHRHUmVmKGNlcnRpZmljYXRlRGF0YSk7CisKKyAgICBHVGxzQmFja2VuZCogYmFj
a2VuZCA9IGdfdGxzX2JhY2tlbmRfZ2V0X2RlZmF1bHQoKTsKKyAgICBHUmVmUHRyPEdUbHNDZXJ0
aWZpY2F0ZT4gY2VydGlmaWNhdGUgPSBhZG9wdEdSZWYoR19UTFNfQ0VSVElGSUNBVEUoZ19pbml0
YWJsZV9uZXcoCisgICAgICAgIGdfdGxzX2JhY2tlbmRfZ2V0X2NlcnRpZmljYXRlX3R5cGUoYmFj
a2VuZCksIDAsIDAsICJjZXJ0aWZpY2F0ZSIsIGNlcnRpZmljYXRlQnl0ZXMuZ2V0KCksIG51bGxw
dHIpKSk7CisgICAgY2VydGlmaWNhdGVJbmZvLnNldENlcnRpZmljYXRlKGNlcnRpZmljYXRlLmdl
dCgpKTsKKworICAgIHVpbnQzMl90IHRsc0Vycm9yczsKKyAgICBpZiAoIWRlY29kZXIuZGVjb2Rl
KHRsc0Vycm9ycykpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBJUEM6OkFyZ3VtZW50RGVj
b2RlciBhcmd1bWVudERlY29kZXIoZGF0YS5kYXRhKCksIGRhdGEuc2l6ZSgpKTsKLSAgICByZXR1
cm4gYXJndW1lbnREZWNvZGVyLmRlY29kZShjZXJ0aWZpY2F0ZUluZm8pOworICAgIGNlcnRpZmlj
YXRlSW5mby5zZXRUTFNFcnJvcnMoc3RhdGljX2Nhc3Q8R1Rsc0NlcnRpZmljYXRlRmxhZ3M+KHRs
c0Vycm9ycykpOworCisgICAgcmV0dXJuIHRydWU7CiB9CisjZW5kaWYKIAogdm9pZCBDb2RlcjxT
SEExOjpEaWdlc3Q+OjplbmNvZGUoRW5jb2RlciYgZW5jb2RlciwgY29uc3QgU0hBMTo6RGlnZXN0
JiBkaWdlc3QpCiB7CkluZGV4OiBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9O
ZXR3b3JrQ2FjaGVTdG9yYWdlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvTmV0d29y
a1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlU3RvcmFnZS5oCShyZXZpc2lvbiAyMDM2NjcpCisr
KyBTb3VyY2UvV2ViS2l0Mi9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVTdG9yYWdl
LmgJKHdvcmtpbmcgY29weSkKQEAgLTg3LDEwICs4NywxMCBAQCBwdWJsaWM6CiAgICAgc2l6ZV90
IGNhcGFjaXR5KCkgY29uc3QgeyByZXR1cm4gbV9jYXBhY2l0eTsgfQogICAgIHNpemVfdCBhcHBy
b3hpbWF0ZVNpemUoKSBjb25zdDsKIAotICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCB2ZXJzaW9u
ID0gODsKKyAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgdmVyc2lvbiA9IDk7CiAjaWYgUExBVEZP
Uk0oTUFDKQogICAgIC8vLyBBbGxvdyB0aGUgbGFzdCBzdGFibGUgdmVyc2lvbiBvZiB0aGUgY2Fj
aGUgdG8gY28tZXhpc3Qgd2l0aCB0aGUgbGF0ZXN0IGRldmVsb3BtZW50IG9uZS4KLSAgICBzdGF0
aWMgY29uc3QgdW5zaWduZWQgbGFzdFN0YWJsZVZlcnNpb24gPSA4OworICAgIHN0YXRpYyBjb25z
dCB1bnNpZ25lZCBsYXN0U3RhYmxlVmVyc2lvbiA9IDk7CiAjZW5kaWYKIAogICAgIFN0cmluZyBi
YXNlUGF0aCgpIGNvbnN0Owo=
</data>

          </attachment>
      

    </bug>

</bugzilla>