<?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>164968</bug_id>
          
          <creation_ts>2016-11-18 16:23:51 -0800</creation_ts>
          <short_desc>Fix exception scope verification failures in jsc.cpp.</short_desc>
          <delta_ts>2017-03-15 15:50:43 -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>JavaScriptCore</component>
          <version>WebKit Local 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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>162351</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Mark Lam">mark.lam</reporter>
          <assigned_to name="Mark Lam">mark.lam</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>jfbastien</cc>
    
    <cc>keith_miller</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1252936</commentid>
    <comment_count>0</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2016-11-18 16:23:51 -0800</bug_when>
    <thetext>Patch coming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1252938</commentid>
    <comment_count>1</comment_count>
      <attachid>295213</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2016-11-18 16:29:19 -0800</bug_when>
    <thetext>Created attachment 295213
proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1253239</commentid>
    <comment_count>2</comment_count>
      <attachid>295294</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2016-11-21 08:31:15 -0800</bug_when>
    <thetext>Created attachment 295294
proposed patch with more fixes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1253249</commentid>
    <comment_count>3</comment_count>
      <attachid>295294</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2016-11-21 09:05:06 -0800</bug_when>
    <thetext>Comment on attachment 295294
proposed patch with more fixes.

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

&gt; Source/JavaScriptCore/jsc.cpp:385
&gt; +        RETURN_IF_EXCEPTION(scope, encodedJSValue());

Too late since we already have so may of these, but I really prefer to use &quot;{ }&quot; in cases like this one rather than &quot;encodedJSValue()&quot;.

&gt; Source/JavaScriptCore/jsc.cpp:1443
&gt; +    RELEASE_ASSERT(!scope.exception());

I saw the comment about out of memory, but is this really the right thing to do? This is a command line tool, so shouldn&apos;t we write something out to stderr and then exit instead of aborting? Seems more elegant to me. In all the places where the code now says RELEASE_ASSERT.

&gt; Source/JavaScriptCore/jsc.cpp:2508
&gt; +    RETURN_IF_EXCEPTION(scope, JSValue());

Same thing would work here, using { } instead of JSValue().

In fact, if we made a version of the RETURN_IF_EXCEPTION macro that used { }, we could use it in functions that return JSValue, EncodedJSValue, and any pointer type. We should really do that. The only place we couldn’t use it is in functions that return void, I think.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1253268</commentid>
    <comment_count>4</comment_count>
      <attachid>295294</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2016-11-21 11:02:00 -0800</bug_when>
    <thetext>Comment on attachment 295294
proposed patch with more fixes.

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

&gt;&gt; Source/JavaScriptCore/jsc.cpp:1443
&gt;&gt; +    RELEASE_ASSERT(!scope.exception());
&gt; 
&gt; I saw the comment about out of memory, but is this really the right thing to do? This is a command line tool, so shouldn&apos;t we write something out to stderr and then exit instead of aborting? Seems more elegant to me. In all the places where the code now says RELEASE_ASSERT.

I&apos;ll defer landing this patch until I can do more analysis on this issue, and see if we can do better.

&gt;&gt; Source/JavaScriptCore/jsc.cpp:2508
&gt;&gt; +    RETURN_IF_EXCEPTION(scope, JSValue());
&gt; 
&gt; Same thing would work here, using { } instead of JSValue().
&gt; 
&gt; In fact, if we made a version of the RETURN_IF_EXCEPTION macro that used { }, we could use it in functions that return JSValue, EncodedJSValue, and any pointer type. We should really do that. The only place we couldn’t use it is in functions that return void, I think.

I&apos;ll change these to use { }.  We had entertained having different versions of the RETURN_IF_EXCEPTION() macro before for different return types (2 at the time), but opted to go with just 1 macro for consistency.  If we go with a special macro for returning { }, then we&apos;ll end up with 3 macros: 1 for void, 1 for { }, and 1 for anything else (there are a few places where we need that).  I&apos;ll stick with the 1 RETURN_IF_EXCEPTION() macro that we have currently for now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1253269</commentid>
    <comment_count>5</comment_count>
      <attachid>295302</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2016-11-21 11:03:17 -0800</bug_when>
    <thetext>Created attachment 295302
Updated patch.

Still need to look into the use of RELEASE_ASSERTs, and see if we can do better.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1253620</commentid>
    <comment_count>6</comment_count>
      <attachid>295302</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2016-11-24 13:46:11 -0800</bug_when>
    <thetext>Comment on attachment 295302
Updated patch.

It is invalid to replace returning encodedJSValue() with returning { }.  On 32-bit builds, the former is non-zero, while the latter is 0.  Will fix this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1253621</commentid>
    <comment_count>7</comment_count>
      <attachid>295418</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2016-11-24 13:56:24 -0800</bug_when>
    <thetext>Created attachment 295418
proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1253992</commentid>
    <comment_count>8</comment_count>
      <attachid>295418</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2016-11-28 14:09:36 -0800</bug_when>
    <thetext>Comment on attachment 295418
proposed patch.

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

&gt; Source/JavaScriptCore/jsc.cpp:2510
&gt;      JSString* type = jsCast&lt;JSString*&gt;(wasmValue.get(exec, makeIdentifier(vm, &quot;type&quot;)));
&gt; +    RETURN_IF_EXCEPTION(scope, { });
&gt;      JSValue value = wasmValue.get(exec, makeIdentifier(vm, &quot;value&quot;));
&gt; +    RETURN_IF_EXCEPTION(scope, { });

I&apos;d make these assertions since they&apos;re for testing WASM</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1288237</commentid>
    <comment_count>9</comment_count>
      <attachid>295418</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2017-03-15 14:18:28 -0700</bug_when>
    <thetext>Comment on attachment 295418
proposed patch.

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

&gt;&gt; Source/JavaScriptCore/jsc.cpp:2510
&gt;&gt; +    RETURN_IF_EXCEPTION(scope, { });
&gt; 
&gt; I&apos;d make these assertions since they&apos;re for testing WASM

I&apos;ve applied this change.

&gt; Source/JavaScriptCore/jsc.cpp:2590
&gt; +            for (unsigned argIndex = 0; argIndex &lt; arguments-&gt;length(); ++argIndex) {
&gt; +                JSValue boxedValue = box(exec, vm, arguments-&gt;getIndexQuickly(argIndex));
&gt; +                RETURN_IF_EXCEPTION(scope, encodedJSValue());
&gt; +                boxedArgs.append(boxedValue);
&gt; +            }

Since we&apos;ve changed box() to never throw but to assert no exceptions instead, this change is now unnecessary.

&gt; Source/JavaScriptCore/jsc.cpp:2594
&gt; +            RETURN_IF_EXCEPTION(scope, encodedJSValue());

Ditto.  This can be removed too.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1288238</commentid>
    <comment_count>10</comment_count>
      <attachid>304546</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2017-03-15 14:20:20 -0700</bug_when>
    <thetext>Created attachment 304546
re-based patch for landing.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1288256</commentid>
    <comment_count>11</comment_count>
      <attachid>304553</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2017-03-15 14:55:15 -0700</bug_when>
    <thetext>Created attachment 304553
re-based patch for landing: w/ build fix for release builds.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1288316</commentid>
    <comment_count>12</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2017-03-15 15:50:43 -0700</bug_when>
    <thetext>Thanks for the reviews.  Landed in r214016: &lt;http://trac.webkit.org/r214016&gt;.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>295213</attachid>
            <date>2016-11-18 16:29:19 -0800</date>
            <delta_ts>2016-11-21 08:31:15 -0800</delta_ts>
            <desc>proposed patch.</desc>
            <filename>bug-164968.patch</filename>
            <type>text/plain</type>
            <size>6646</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjA4OTA1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI2IEBA
CisyMDE2LTExLTE4ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBG
aXggZXhjZXB0aW9uIHNjb3BlIHZlcmlmaWNhdGlvbiBmYWlsdXJlcyBpbiBqc2MuY3BwLgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY0OTY4CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBqc2MuY3BwOgor
ICAgICAgICAoV1RGOjpDdXN0b21HZXR0ZXI6OmN1c3RvbUdldHRlcik6CisKKyAgICAgICAgKEds
b2JhbE9iamVjdDo6bW9kdWxlTG9hZGVyUmVzb2x2ZSk6CisgICAgICAgIChHbG9iYWxPYmplY3Q6
Om1vZHVsZUxvYWRlckZldGNoKToKKyAgICAgICAgLSBUaGUgb25seSB3YXkgbW9kdWxlcyB3b3Vs
ZCB0aHJvdyBhbiBleGNlcHRpb24gaXMgaWYgd2UgZW5jb3VudGVyIGFuIE91dE9mTWVtb3J5Cisg
ICAgICAgICAgZXJyb3IuICBUaGlzIHNob3VsZCBiZSBleHRyZW1lbHkgcmFyZS4gIEF0IHRoaXMg
cG9pbnQsIEkgZG9uJ3QgdGhpbmsgaXQncyB3b3J0aAorICAgICAgICAgIGRvaW5nIHRoZSBkYW5j
ZSB0byBwcm9wYWdhdGUgdGhlIGV4Y2VwdGlvbiB3aGVuIHRoaXMgaGFwcGVucy4gIEluc3RlYWQs
IHdlJ2xsCisgICAgICAgICAgc2ltcGx5IGRvIGEgUkVMRUFTRV9BU1NFUlQgdGhhdCB3ZSBkb24n
dCBzZWUgYW55IGV4Y2VwdGlvbnMgaGVyZS4KKworICAgICAgICAoZnVuY3Rpb25SdW4pOgorICAg
ICAgICAoZnVuY3Rpb25SdW5TdHJpbmcpOgorICAgICAgICAoZnVuY3Rpb25DaGVja01vZHVsZVN5
bnRheCk6CisgICAgICAgIChkdW1wRXhjZXB0aW9uKToKKyAgICAgICAgKHJ1bldpdGhTY3JpcHRz
KToKKwogMjAxNi0xMS0xOCAgSmVyZW15IEpvbmVzICA8amVyZW15akBhcHBsZS5jb20+CiAKICAg
ICAgICAgQWRkIHJ1bnRpbWUgZmxhZyB0byBlbmFibGUgcG9pbnRlciBsb2NrLiBFbmFibGUgcG9p
bnRlciBsb2NrIGZlYXR1cmUgZm9yIG1hYy4KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
c2MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCShyZXZp
c2lvbiAyMDg5MDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAkod29ya2luZyBj
b3B5KQpAQCAtMzgyLDYgKzM4Miw3IEBAIHByaXZhdGU6CiAgICAgICAgIGlmICghdGhpc09iamVj
dCkKICAgICAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKICAg
ICAgICAgYm9vbCBzaG91bGRUaHJvdyA9IHRoaXNPYmplY3QtPmdldChleGVjLCBQcm9wZXJ0eU5h
bWUoSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCAic2hvdWxkVGhyb3ciKSkpLnRvQm9vbGVh
bihleGVjKTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFs
dWUoKSk7CiAgICAgICAgIGlmIChzaG91bGRUaHJvdykKICAgICAgICAgICAgIHJldHVybiB0aHJv
d1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZShqc051bWJlcigxMDApKTsKQEAgLTE0MDYsNiArMTQwNyw3IEBAIEpTSW50ZXJuYWxQcm9taXNl
KiBHbG9iYWxPYmplY3Q6Om1vZHVsZUwKICAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9DQVRDSF9T
Q09QRSh2bSk7CiAKICAgICBKU0ludGVybmFsUHJvbWlzZURlZmVycmVkKiBkZWZlcnJlZCA9IEpT
SW50ZXJuYWxQcm9taXNlRGVmZXJyZWQ6OmNyZWF0ZShleGVjLCBnbG9iYWxPYmplY3QpOworICAg
IFJFTEVBU0VfQVNTRVJUKCFzY29wZS5leGNlcHRpb24oKSk7CiAgICAgY29uc3QgSWRlbnRpZmll
ciBrZXkgPSBrZXlWYWx1ZS50b1Byb3BlcnR5S2V5KGV4ZWMpOwogICAgIGlmIChVTkxJS0VMWShz
Y29wZS5leGNlcHRpb24oKSkpIHsKICAgICAgICAgSlNWYWx1ZSBleGNlcHRpb24gPSBzY29wZS5l
eGNlcHRpb24oKTsKQEAgLTE0MzcsNyArMTQzOSw5IEBAIEpTSW50ZXJuYWxQcm9taXNlKiBHbG9i
YWxPYmplY3Q6Om1vZHVsZUwKICAgICAgICAgfQogICAgIH0KIAotICAgIHJldHVybiBkZWZlcnJl
ZC0+cmVzb2x2ZShleGVjLCBqc1N0cmluZyhleGVjLCByZXNvbHZlUGF0aChkaXJlY3RvcnlOYW1l
LCBNb2R1bGVOYW1lKGtleS5pbXBsKCkpKSkpOworICAgIGF1dG8gcmVzdWx0ID0gZGVmZXJyZWQt
PnJlc29sdmUoZXhlYywganNTdHJpbmcoZXhlYywgcmVzb2x2ZVBhdGgoZGlyZWN0b3J5TmFtZSwg
TW9kdWxlTmFtZShrZXkuaW1wbCgpKSkpKTsKKyAgICBSRUxFQVNFX0FTU0VSVCghc2NvcGUuZXhj
ZXB0aW9uKCkpOworICAgIHJldHVybiByZXN1bHQ7CiB9CiAKIHN0YXRpYyB2b2lkIGNvbnZlcnRT
aGViYW5nVG9KU0NvbW1lbnQoVmVjdG9yPGNoYXI+JiBidWZmZXIpCkBAIC0xNTI1LDcgKzE1Mjks
OSBAQCBKU0ludGVybmFsUHJvbWlzZSogR2xvYmFsT2JqZWN0Ojptb2R1bGVMCiAgICAgaWYgKCFm
ZXRjaE1vZHVsZUZyb21Mb2NhbEZpbGVTeXN0ZW0obW9kdWxlS2V5LCB1dGY4KSkKICAgICAgICAg
cmV0dXJuIGRlZmVycmVkLT5yZWplY3QoZXhlYywgY3JlYXRlRXJyb3IoZXhlYywgbWFrZVN0cmlu
ZygiQ291bGQgbm90IG9wZW4gZmlsZSAnIiwgbW9kdWxlS2V5LCAiJy4iKSkpOwogCi0gICAgcmV0
dXJuIGRlZmVycmVkLT5yZXNvbHZlKGV4ZWMsIGpzU3RyaW5nKGV4ZWMsIHN0cmluZ0Zyb21VVEYo
dXRmOCkpKTsKKyAgICBhdXRvIHJlc3VsdCA9IGRlZmVycmVkLT5yZXNvbHZlKGV4ZWMsIGpzU3Ry
aW5nKGV4ZWMsIHN0cmluZ0Zyb21VVEYodXRmOCkpKTsKKyAgICBSRUxFQVNFX0FTU0VSVCghc2Nv
cGUuZXhjZXB0aW9uKCkpOworICAgIHJldHVybiByZXN1bHQ7CiB9CiAKIApAQCAtMTg5NCw4ICsx
OTAwLDExIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25SdW4KICAgICBH
bG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IEdsb2JhbE9iamVjdDo6Y3JlYXRlKHZtLCBHbG9i
YWxPYmplY3Q6OmNyZWF0ZVN0cnVjdHVyZSh2bSwganNOdWxsKCkpLCBWZWN0b3I8U3RyaW5nPigp
KTsKIAogICAgIEpTQXJyYXkqIGFycmF5ID0gY29uc3RydWN0RW1wdHlBcnJheShnbG9iYWxPYmpl
Y3QtPmdsb2JhbEV4ZWMoKSwgMCk7Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMTsgaSA8IGV4ZWMt
PmFyZ3VtZW50Q291bnQoKTsgKytpKQorICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVu
Y29kZWRKU1ZhbHVlKCkpOworICAgIGZvciAodW5zaWduZWQgaSA9IDE7IGkgPCBleGVjLT5hcmd1
bWVudENvdW50KCk7ICsraSkgewogICAgICAgICBhcnJheS0+cHV0RGlyZWN0SW5kZXgoZ2xvYmFs
T2JqZWN0LT5nbG9iYWxFeGVjKCksIGkgLSAxLCBleGVjLT51bmNoZWNrZWRBcmd1bWVudChpKSk7
CisgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwor
ICAgIH0KICAgICBnbG9iYWxPYmplY3QtPnB1dERpcmVjdCgKICAgICAgICAgdm0sIElkZW50aWZp
ZXI6OmZyb21TdHJpbmcoZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCksICJhcmd1bWVudHMiKSwg
YXJyYXkpOwogCkBAIC0xOTI0LDggKzE5MzMsMTEgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBmdW5jdGlvblJ1bgogICAgIEdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gR2xvYmFs
T2JqZWN0OjpjcmVhdGUodm0sIEdsb2JhbE9iamVjdDo6Y3JlYXRlU3RydWN0dXJlKHZtLCBqc051
bGwoKSksIFZlY3RvcjxTdHJpbmc+KCkpOwogCiAgICAgSlNBcnJheSogYXJyYXkgPSBjb25zdHJ1
Y3RFbXB0eUFycmF5KGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpLCAwKTsKLSAgICBmb3IgKHVu
c2lnbmVkIGkgPSAxOyBpIDwgZXhlYy0+YXJndW1lbnRDb3VudCgpOyArK2kpCisgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CisgICAgZm9yICh1bnNpZ25l
ZCBpID0gMTsgaSA8IGV4ZWMtPmFyZ3VtZW50Q291bnQoKTsgKytpKSB7CiAgICAgICAgIGFycmF5
LT5wdXREaXJlY3RJbmRleChnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSwgaSAtIDEsIGV4ZWMt
PnVuY2hlY2tlZEFyZ3VtZW50KGkpKTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29w
ZSwgZW5jb2RlZEpTVmFsdWUoKSk7CisgICAgfQogICAgIGdsb2JhbE9iamVjdC0+cHV0RGlyZWN0
KAogICAgICAgICB2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhnbG9iYWxPYmplY3QtPmdsb2Jh
bEV4ZWMoKSwgImFyZ3VtZW50cyIpLCBhcnJheSk7CiAKQEAgLTI0MTQsNiArMjQyNiw3IEBAIEVu
Y29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25DaGUKIAogICAgIFBhcnNlckVycm9y
IGVycm9yOwogICAgIGJvb2wgdmFsaWRTeW50YXggPSBjaGVja01vZHVsZVN5bnRheChleGVjLCBt
YWtlU291cmNlKHNvdXJjZSwgU3RyaW5nKCksIFRleHRQb3NpdGlvbjo6bWluaW11bVBvc2l0aW9u
KCksIFNvdXJjZVByb3ZpZGVyU291cmNlVHlwZTo6TW9kdWxlKSwgZXJyb3IpOworICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIHN0b3BXYXRjaC5z
dG9wKCk7CiAKICAgICBpZiAoIXZhbGlkU3ludGF4KQpAQCAtMjY5MywxMCArMjcwNiwxNCBAQCBz
dGF0aWMgdm9pZCBkdW1wRXhjZXB0aW9uKEdsb2JhbE9iamVjdCogCiAgICAgcHJpbnRmKCJFeGNl
cHRpb246ICVzXG4iLCBleGNlcHRpb24udG9XVEZTdHJpbmcoZ2xvYmFsT2JqZWN0LT5nbG9iYWxF
eGVjKCkpLnV0ZjgoKS5kYXRhKCkpOwogCiAgICAgSWRlbnRpZmllciBuYW1lSUQgPSBJZGVudGlm
aWVyOjpmcm9tU3RyaW5nKGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpLCAibmFtZSIpOworICAg
IENIRUNLX0VYQ0VQVElPTigpOwogICAgIElkZW50aWZpZXIgZmlsZU5hbWVJRCA9IElkZW50aWZp
ZXI6OmZyb21TdHJpbmcoZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCksICJzb3VyY2VVUkwiKTsK
KyAgICBDSEVDS19FWENFUFRJT04oKTsKICAgICBJZGVudGlmaWVyIGxpbmVOdW1iZXJJRCA9IElk
ZW50aWZpZXI6OmZyb21TdHJpbmcoZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCksICJsaW5lIik7
CisgICAgQ0hFQ0tfRVhDRVBUSU9OKCk7CiAgICAgSWRlbnRpZmllciBzdGFja0lEID0gSWRlbnRp
Zmllcjo6ZnJvbVN0cmluZyhnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSwgInN0YWNrIik7Ci0g
ICAgCisgICAgQ0hFQ0tfRVhDRVBUSU9OKCk7CisKICAgICBKU1ZhbHVlIG5hbWVWYWx1ZSA9IGV4
Y2VwdGlvbi5nZXQoZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCksIG5hbWVJRCk7CiAgICAgQ0hF
Q0tfRVhDRVBUSU9OKCk7CiAgICAgSlNWYWx1ZSBmaWxlTmFtZVZhbHVlID0gZXhjZXB0aW9uLmdl
dChnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSwgZmlsZU5hbWVJRCk7CkBAIC0yNzg3LDkgKzI4
MDQsMTAgQEAgc3RhdGljIGJvb2wgcnVuV2l0aFNjcmlwdHMoR2xvYmFsT2JqZWN0KgogICAgICAg
ICAgICAgaWYgKHNjcmlwdHNbaV0uc3RyaWN0TW9kZSA9PSBTY3JpcHQ6OlN0cmljdE1vZGU6OlN0
cmljdCkKICAgICAgICAgICAgICAgICBzY3JpcHRCdWZmZXIuYXBwZW5kKCJcInVzZSBzdHJpY3Rc
IjtcbiIsIHN0cmxlbigiXCJ1c2Ugc3RyaWN0XCI7XG4iKSk7CiAKLSAgICAgICAgICAgIGlmIChp
c01vZHVsZSkKKyAgICAgICAgICAgIGlmIChpc01vZHVsZSkgewogICAgICAgICAgICAgICAgIHBy
b21pc2UgPSBsb2FkQW5kRXZhbHVhdGVNb2R1bGUoZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCks
IGZpbGVOYW1lKTsKLSAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIFJFTEVBU0Vf
QVNTRVJUKCFzY29wZS5leGNlcHRpb24oKSk7CisgICAgICAgICAgICB9IGVsc2UgewogICAgICAg
ICAgICAgICAgIGlmICghZmV0Y2hTY3JpcHRGcm9tTG9jYWxGaWxlU3lzdGVtKGZpbGVOYW1lLCBz
Y3JpcHRCdWZmZXIpKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7IC8vIGZhaWwg
ZWFybHkgc28gd2UgY2FuIGNhdGNoIG1pc3NpbmcgZmlsZXMKICAgICAgICAgICAgIH0KQEAgLTI4
MTcsNiArMjgzNSw3IEBAIHN0YXRpYyBib29sIHJ1bldpdGhTY3JpcHRzKEdsb2JhbE9iamVjdCoK
ICAgICAgICAgICAgIH0pOwogCiAgICAgICAgICAgICBwcm9taXNlLT50aGVuKGdsb2JhbE9iamVj
dC0+Z2xvYmFsRXhlYygpLCBmdWxmaWxsSGFuZGxlciwgcmVqZWN0SGFuZGxlcik7CisgICAgICAg
ICAgICBSRUxFQVNFX0FTU0VSVCghc2NvcGUuZXhjZXB0aW9uKCkpOwogICAgICAgICAgICAgdm0u
ZHJhaW5NaWNyb3Rhc2tzKCk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBOYWtlZFB0
cjxFeGNlcHRpb24+IGV2YWx1YXRpb25FeGNlcHRpb247Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>295294</attachid>
            <date>2016-11-21 08:31:15 -0800</date>
            <delta_ts>2016-11-21 11:03:17 -0800</delta_ts>
            <desc>proposed patch with more fixes.</desc>
            <filename>bug-164968.patch</filename>
            <type>text/plain</type>
            <size>8695</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjA4OTQ4KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI5IEBA
CisyMDE2LTExLTIxICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBG
aXggZXhjZXB0aW9uIHNjb3BlIHZlcmlmaWNhdGlvbiBmYWlsdXJlcyBpbiBqc2MuY3BwLgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY0OTY4CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBqc2MuY3BwOgor
ICAgICAgICAoV1RGOjpDdXN0b21HZXR0ZXI6OmN1c3RvbUdldHRlcik6CisKKyAgICAgICAgKEds
b2JhbE9iamVjdDo6bW9kdWxlTG9hZGVyUmVzb2x2ZSk6CisgICAgICAgIChHbG9iYWxPYmplY3Q6
Om1vZHVsZUxvYWRlckZldGNoKToKKyAgICAgICAgLSBUaGUgb25seSB3YXkgbW9kdWxlcyB3b3Vs
ZCB0aHJvdyBhbiBleGNlcHRpb24gaXMgaWYgd2UgZW5jb3VudGVyIGFuIE91dE9mTWVtb3J5Cisg
ICAgICAgICAgZXJyb3IuICBUaGlzIHNob3VsZCBiZSBleHRyZW1lbHkgcmFyZS4gIEF0IHRoaXMg
cG9pbnQsIEkgZG9uJ3QgdGhpbmsgaXQncyB3b3J0aAorICAgICAgICAgIGRvaW5nIHRoZSBkYW5j
ZSB0byBwcm9wYWdhdGUgdGhlIGV4Y2VwdGlvbiB3aGVuIHRoaXMgaGFwcGVucy4gIEluc3RlYWQs
IHdlJ2xsCisgICAgICAgICAgc2ltcGx5IGRvIGEgUkVMRUFTRV9BU1NFUlQgdGhhdCB3ZSBkb24n
dCBzZWUgYW55IGV4Y2VwdGlvbnMgaGVyZS4KKworICAgICAgICAoZnVuY3Rpb25SdW4pOgorICAg
ICAgICAoZnVuY3Rpb25SdW5TdHJpbmcpOgorICAgICAgICAoZnVuY3Rpb25Mb2FkTW9kdWxlKToK
KyAgICAgICAgKGZ1bmN0aW9uQ2hlY2tNb2R1bGVTeW50YXgpOgorICAgICAgICAoYm94KToKKyAg
ICAgICAgKGZ1bmN0aW9uVGVzdFdhc21Nb2R1bGVGdW5jdGlvbnMpOgorICAgICAgICAoZHVtcEV4
Y2VwdGlvbik6CisgICAgICAgIChydW5XaXRoU2NyaXB0cyk6CisKIDIwMTYtMTEtMjAgIFphbiBE
b2JlcnNlayAgPHpkb2JlcnNla0BpZ2FsaWEuY29tPgogCiAgICAgICAgIFtFbmNyeXB0ZWRNZWRp
YV0gTWFrZSBFTUUgQVBJIHJ1bnRpbWUtZW5hYmxlZApJbmRleDogU291cmNlL0phdmFTY3JpcHRD
b3JlL2pzYy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAJ
KHJldmlzaW9uIDIwODk0NykKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCSh3b3Jr
aW5nIGNvcHkpCkBAIC0zODIsNiArMzgyLDcgQEAgcHJpdmF0ZToKICAgICAgICAgaWYgKCF0aGlz
T2JqZWN0KQogICAgICAgICAgICAgcmV0dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUp
OwogICAgICAgICBib29sIHNob3VsZFRocm93ID0gdGhpc09iamVjdC0+Z2V0KGV4ZWMsIFByb3Bl
cnR5TmFtZShJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGV4ZWMsICJzaG91bGRUaHJvdyIpKSkudG9C
b29sZWFuKGV4ZWMpOworICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVk
SlNWYWx1ZSgpKTsKICAgICAgICAgaWYgKHNob3VsZFRocm93KQogICAgICAgICAgICAgcmV0dXJu
IHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOwogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6
ZW5jb2RlKGpzTnVtYmVyKDEwMCkpOwpAQCAtMTQwNiw2ICsxNDA3LDcgQEAgSlNJbnRlcm5hbFBy
b21pc2UqIEdsb2JhbE9iamVjdDo6bW9kdWxlTAogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJFX0NB
VENIX1NDT1BFKHZtKTsKIAogICAgIEpTSW50ZXJuYWxQcm9taXNlRGVmZXJyZWQqIGRlZmVycmVk
ID0gSlNJbnRlcm5hbFByb21pc2VEZWZlcnJlZDo6Y3JlYXRlKGV4ZWMsIGdsb2JhbE9iamVjdCk7
CisgICAgUkVMRUFTRV9BU1NFUlQoIXNjb3BlLmV4Y2VwdGlvbigpKTsKICAgICBjb25zdCBJZGVu
dGlmaWVyIGtleSA9IGtleVZhbHVlLnRvUHJvcGVydHlLZXkoZXhlYyk7CiAgICAgaWYgKFVOTElL
RUxZKHNjb3BlLmV4Y2VwdGlvbigpKSkgewogICAgICAgICBKU1ZhbHVlIGV4Y2VwdGlvbiA9IHNj
b3BlLmV4Y2VwdGlvbigpOwpAQCAtMTQzNyw3ICsxNDM5LDkgQEAgSlNJbnRlcm5hbFByb21pc2Uq
IEdsb2JhbE9iamVjdDo6bW9kdWxlTAogICAgICAgICB9CiAgICAgfQogCi0gICAgcmV0dXJuIGRl
ZmVycmVkLT5yZXNvbHZlKGV4ZWMsIGpzU3RyaW5nKGV4ZWMsIHJlc29sdmVQYXRoKGRpcmVjdG9y
eU5hbWUsIE1vZHVsZU5hbWUoa2V5LmltcGwoKSkpKSk7CisgICAgYXV0byByZXN1bHQgPSBkZWZl
cnJlZC0+cmVzb2x2ZShleGVjLCBqc1N0cmluZyhleGVjLCByZXNvbHZlUGF0aChkaXJlY3RvcnlO
YW1lLCBNb2R1bGVOYW1lKGtleS5pbXBsKCkpKSkpOworICAgIFJFTEVBU0VfQVNTRVJUKCFzY29w
ZS5leGNlcHRpb24oKSk7CisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogc3RhdGljIHZvaWQgY29u
dmVydFNoZWJhbmdUb0pTQ29tbWVudChWZWN0b3I8Y2hhcj4mIGJ1ZmZlcikKQEAgLTE1MjUsNyAr
MTUyOSw5IEBAIEpTSW50ZXJuYWxQcm9taXNlKiBHbG9iYWxPYmplY3Q6Om1vZHVsZUwKICAgICBp
ZiAoIWZldGNoTW9kdWxlRnJvbUxvY2FsRmlsZVN5c3RlbShtb2R1bGVLZXksIHV0ZjgpKQogICAg
ICAgICByZXR1cm4gZGVmZXJyZWQtPnJlamVjdChleGVjLCBjcmVhdGVFcnJvcihleGVjLCBtYWtl
U3RyaW5nKCJDb3VsZCBub3Qgb3BlbiBmaWxlICciLCBtb2R1bGVLZXksICInLiIpKSk7CiAKLSAg
ICByZXR1cm4gZGVmZXJyZWQtPnJlc29sdmUoZXhlYywganNTdHJpbmcoZXhlYywgc3RyaW5nRnJv
bVVURih1dGY4KSkpOworICAgIGF1dG8gcmVzdWx0ID0gZGVmZXJyZWQtPnJlc29sdmUoZXhlYywg
anNTdHJpbmcoZXhlYywgc3RyaW5nRnJvbVVURih1dGY4KSkpOworICAgIFJFTEVBU0VfQVNTRVJU
KCFzY29wZS5leGNlcHRpb24oKSk7CisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogCkBAIC0xODk0
LDggKzE5MDAsMTEgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblJ1bgog
ICAgIEdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gR2xvYmFsT2JqZWN0OjpjcmVhdGUodm0s
IEdsb2JhbE9iamVjdDo6Y3JlYXRlU3RydWN0dXJlKHZtLCBqc051bGwoKSksIFZlY3RvcjxTdHJp
bmc+KCkpOwogCiAgICAgSlNBcnJheSogYXJyYXkgPSBjb25zdHJ1Y3RFbXB0eUFycmF5KGdsb2Jh
bE9iamVjdC0+Z2xvYmFsRXhlYygpLCAwKTsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAxOyBpIDwg
ZXhlYy0+YXJndW1lbnRDb3VudCgpOyArK2kpCisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29w
ZSwgZW5jb2RlZEpTVmFsdWUoKSk7CisgICAgZm9yICh1bnNpZ25lZCBpID0gMTsgaSA8IGV4ZWMt
PmFyZ3VtZW50Q291bnQoKTsgKytpKSB7CiAgICAgICAgIGFycmF5LT5wdXREaXJlY3RJbmRleChn
bG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSwgaSAtIDEsIGV4ZWMtPnVuY2hlY2tlZEFyZ3VtZW50
KGkpKTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUo
KSk7CisgICAgfQogICAgIGdsb2JhbE9iamVjdC0+cHV0RGlyZWN0KAogICAgICAgICB2bSwgSWRl
bnRpZmllcjo6ZnJvbVN0cmluZyhnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSwgImFyZ3VtZW50
cyIpLCBhcnJheSk7CiAKQEAgLTE5MjQsOCArMTkzMywxMSBAQCBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGZ1bmN0aW9uUnVuCiAgICAgR2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBH
bG9iYWxPYmplY3Q6OmNyZWF0ZSh2bSwgR2xvYmFsT2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUodm0s
IGpzTnVsbCgpKSwgVmVjdG9yPFN0cmluZz4oKSk7CiAKICAgICBKU0FycmF5KiBhcnJheSA9IGNv
bnN0cnVjdEVtcHR5QXJyYXkoZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCksIDApOwotICAgIGZv
ciAodW5zaWduZWQgaSA9IDE7IGkgPCBleGVjLT5hcmd1bWVudENvdW50KCk7ICsraSkKKyAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKKyAgICBmb3IgKHVu
c2lnbmVkIGkgPSAxOyBpIDwgZXhlYy0+YXJndW1lbnRDb3VudCgpOyArK2kpIHsKICAgICAgICAg
YXJyYXktPnB1dERpcmVjdEluZGV4KGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpLCBpIC0gMSwg
ZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoaSkpOworICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9O
KHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKKyAgICB9CiAgICAgZ2xvYmFsT2JqZWN0LT5wdXRE
aXJlY3QoCiAgICAgICAgIHZtLCBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGdsb2JhbE9iamVjdC0+
Z2xvYmFsRXhlYygpLCAiYXJndW1lbnRzIiksIGFycmF5KTsKIApAQCAtMjM3Miw2ICsyMzg0LDcg
QEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkxvYQogICAgIH0pOwogCiAg
ICAgcHJvbWlzZS0+dGhlbihleGVjLCBudWxscHRyLCBlcnJvckhhbmRsZXIpOworICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIHZtLmRyYWluTWlj
cm90YXNrcygpOwogICAgIGlmIChlcnJvcikKICAgICAgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29k
ZSh0aHJvd0V4Y2VwdGlvbihleGVjLCBzY29wZSwgZXJyb3IpKTsKQEAgLTI0MTQsNiArMjQyNyw3
IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25DaGUKIAogICAgIFBhcnNl
ckVycm9yIGVycm9yOwogICAgIGJvb2wgdmFsaWRTeW50YXggPSBjaGVja01vZHVsZVN5bnRheChl
eGVjLCBtYWtlU291cmNlKHNvdXJjZSwgU3RyaW5nKCksIFRleHRQb3NpdGlvbjo6bWluaW11bVBv
c2l0aW9uKCksIFNvdXJjZVByb3ZpZGVyU291cmNlVHlwZTo6TW9kdWxlKSwgZXJyb3IpOworICAg
IFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAgIHN0b3BX
YXRjaC5zdG9wKCk7CiAKICAgICBpZiAoIXZhbGlkU3ludGF4KQpAQCAtMjQ4OCw4ICsyNTAyLDEy
IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25TYW0KIAogc3RhdGljIEpT
VmFsdWUgYm94KEV4ZWNTdGF0ZSogZXhlYywgVk0mIHZtLCBKU1ZhbHVlIHdhc21WYWx1ZSkKIHsK
KyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBKU1N0cmlu
ZyogdHlwZSA9IGpzQ2FzdDxKU1N0cmluZyo+KHdhc21WYWx1ZS5nZXQoZXhlYywgbWFrZUlkZW50
aWZpZXIodm0sICJ0eXBlIikpKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBKU1Zh
bHVlKCkpOwogICAgIEpTVmFsdWUgdmFsdWUgPSB3YXNtVmFsdWUuZ2V0KGV4ZWMsIG1ha2VJZGVu
dGlmaWVyKHZtLCAidmFsdWUiKSk7CisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgSlNW
YWx1ZSgpKTsKIAogICAgIGNvbnN0IFN0cmluZyYgdHlwZVN0cmluZyA9IHR5cGUtPnZhbHVlKGV4
ZWMpOwogICAgIGlmICh0eXBlU3RyaW5nID09ICJpNjQiKSB7CkBAIC0yNTY1LDExICsyNTgzLDE1
IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmMKICAgICAgICAgICAg
IEpTQXJyYXkqIGFyZ3VtZW50cyA9IGpzQ2FzdDxKU0FycmF5Kj4odGVzdC0+Z2V0SW5kZXhRdWlj
a2x5KDEpKTsKIAogICAgICAgICAgICAgVmVjdG9yPEpTVmFsdWU+IGJveGVkQXJnczsKLSAgICAg
ICAgICAgIGZvciAodW5zaWduZWQgYXJnSW5kZXggPSAwOyBhcmdJbmRleCA8IGFyZ3VtZW50cy0+
bGVuZ3RoKCk7ICsrYXJnSW5kZXgpCi0gICAgICAgICAgICAgICAgYm94ZWRBcmdzLmFwcGVuZChi
b3goZXhlYywgdm0sIGFyZ3VtZW50cy0+Z2V0SW5kZXhRdWlja2x5KGFyZ0luZGV4KSkpOworICAg
ICAgICAgICAgZm9yICh1bnNpZ25lZCBhcmdJbmRleCA9IDA7IGFyZ0luZGV4IDwgYXJndW1lbnRz
LT5sZW5ndGgoKTsgKythcmdJbmRleCkgeworICAgICAgICAgICAgICAgIEpTVmFsdWUgYm94ZWRW
YWx1ZSA9IGJveChleGVjLCB2bSwgYXJndW1lbnRzLT5nZXRJbmRleFF1aWNrbHkoYXJnSW5kZXgp
KTsKKyAgICAgICAgICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNW
YWx1ZSgpKTsKKyAgICAgICAgICAgICAgICBib3hlZEFyZ3MuYXBwZW5kKGJveGVkVmFsdWUpOwor
ICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBKU1ZhbHVlIGNhbGxSZXN1bHQgPSBjYWxsV2Fz
bUZ1bmN0aW9uKCZ2bSwgKnBsYW4uY29tcGlsZWRGdW5jdGlvbihpKS0+anNFbnRyeVBvaW50LCBi
b3hlZEFyZ3MpOwogICAgICAgICAgICAgSlNWYWx1ZSBleHBlY3RlZCA9IGJveChleGVjLCB2bSwg
cmVzdWx0KTsKKyAgICAgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRK
U1ZhbHVlKCkpOwogICAgICAgICAgICAgaWYgKGNhbGxSZXN1bHQgIT0gZXhwZWN0ZWQpIHsKICAg
ICAgICAgICAgICAgICBXVEZSZXBvcnRBc3NlcnRpb25GYWlsdXJlKF9fRklMRV9fLCBfX0xJTkVf
XywgV1RGX1BSRVRUWV9GVU5DVElPTiwgdG9DU3RyaW5nKCIgKGNhbGxSZXN1bHQgPT0gIiwgUmF3
UG9pbnRlcihiaXR3aXNlX2Nhc3Q8dm9pZCo+KGNhbGxSZXN1bHQpKSwgIiwgZXhwZWN0ZWQgPT0g
IiwgUmF3UG9pbnRlcihiaXR3aXNlX2Nhc3Q8dm9pZCo+KGV4cGVjdGVkKSksICIpIikuZGF0YSgp
KTsKICAgICAgICAgICAgICAgICBDUkFTSCgpOwpAQCAtMjY5NSwxMCArMjcxNywxNCBAQCBzdGF0
aWMgdm9pZCBkdW1wRXhjZXB0aW9uKEdsb2JhbE9iamVjdCogCiAgICAgcHJpbnRmKCJFeGNlcHRp
b246ICVzXG4iLCBleGNlcHRpb24udG9XVEZTdHJpbmcoZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVj
KCkpLnV0ZjgoKS5kYXRhKCkpOwogCiAgICAgSWRlbnRpZmllciBuYW1lSUQgPSBJZGVudGlmaWVy
Ojpmcm9tU3RyaW5nKGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpLCAibmFtZSIpOworICAgIENI
RUNLX0VYQ0VQVElPTigpOwogICAgIElkZW50aWZpZXIgZmlsZU5hbWVJRCA9IElkZW50aWZpZXI6
OmZyb21TdHJpbmcoZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCksICJzb3VyY2VVUkwiKTsKKyAg
ICBDSEVDS19FWENFUFRJT04oKTsKICAgICBJZGVudGlmaWVyIGxpbmVOdW1iZXJJRCA9IElkZW50
aWZpZXI6OmZyb21TdHJpbmcoZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCksICJsaW5lIik7Cisg
ICAgQ0hFQ0tfRVhDRVBUSU9OKCk7CiAgICAgSWRlbnRpZmllciBzdGFja0lEID0gSWRlbnRpZmll
cjo6ZnJvbVN0cmluZyhnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSwgInN0YWNrIik7Ci0gICAg
CisgICAgQ0hFQ0tfRVhDRVBUSU9OKCk7CisKICAgICBKU1ZhbHVlIG5hbWVWYWx1ZSA9IGV4Y2Vw
dGlvbi5nZXQoZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCksIG5hbWVJRCk7CiAgICAgQ0hFQ0tf
RVhDRVBUSU9OKCk7CiAgICAgSlNWYWx1ZSBmaWxlTmFtZVZhbHVlID0gZXhjZXB0aW9uLmdldChn
bG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSwgZmlsZU5hbWVJRCk7CkBAIC0yNzg5LDkgKzI4MTUs
MTAgQEAgc3RhdGljIGJvb2wgcnVuV2l0aFNjcmlwdHMoR2xvYmFsT2JqZWN0KgogICAgICAgICAg
ICAgaWYgKHNjcmlwdHNbaV0uc3RyaWN0TW9kZSA9PSBTY3JpcHQ6OlN0cmljdE1vZGU6OlN0cmlj
dCkKICAgICAgICAgICAgICAgICBzY3JpcHRCdWZmZXIuYXBwZW5kKCJcInVzZSBzdHJpY3RcIjtc
biIsIHN0cmxlbigiXCJ1c2Ugc3RyaWN0XCI7XG4iKSk7CiAKLSAgICAgICAgICAgIGlmIChpc01v
ZHVsZSkKKyAgICAgICAgICAgIGlmIChpc01vZHVsZSkgewogICAgICAgICAgICAgICAgIHByb21p
c2UgPSBsb2FkQW5kRXZhbHVhdGVNb2R1bGUoZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCksIGZp
bGVOYW1lKTsKLSAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgICAgIFJFTEVBU0VfQVNT
RVJUKCFzY29wZS5leGNlcHRpb24oKSk7CisgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAg
ICAgICAgIGlmICghZmV0Y2hTY3JpcHRGcm9tTG9jYWxGaWxlU3lzdGVtKGZpbGVOYW1lLCBzY3Jp
cHRCdWZmZXIpKQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7IC8vIGZhaWwgZWFy
bHkgc28gd2UgY2FuIGNhdGNoIG1pc3NpbmcgZmlsZXMKICAgICAgICAgICAgIH0KQEAgLTI4MTks
NiArMjg0Niw3IEBAIHN0YXRpYyBib29sIHJ1bldpdGhTY3JpcHRzKEdsb2JhbE9iamVjdCoKICAg
ICAgICAgICAgIH0pOwogCiAgICAgICAgICAgICBwcm9taXNlLT50aGVuKGdsb2JhbE9iamVjdC0+
Z2xvYmFsRXhlYygpLCBmdWxmaWxsSGFuZGxlciwgcmVqZWN0SGFuZGxlcik7CisgICAgICAgICAg
ICBSRUxFQVNFX0FTU0VSVCghc2NvcGUuZXhjZXB0aW9uKCkpOwogICAgICAgICAgICAgdm0uZHJh
aW5NaWNyb3Rhc2tzKCk7CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBOYWtlZFB0cjxF
eGNlcHRpb24+IGV2YWx1YXRpb25FeGNlcHRpb247Cg==
</data>
<flag name="review"
          id="317914"
          type_id="1"
          status="+"
          setter="darin"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>295302</attachid>
            <date>2016-11-21 11:03:17 -0800</date>
            <delta_ts>2016-11-24 13:56:24 -0800</delta_ts>
            <desc>Updated patch.</desc>
            <filename>bug-164968.patch</filename>
            <type>text/plain</type>
            <size>8582</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjA4OTUwKQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI5IEBA
CisyMDE2LTExLTIxICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBG
aXggZXhjZXB0aW9uIHNjb3BlIHZlcmlmaWNhdGlvbiBmYWlsdXJlcyBpbiBqc2MuY3BwLgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY0OTY4CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBqc2MuY3BwOgor
ICAgICAgICAoV1RGOjpDdXN0b21HZXR0ZXI6OmN1c3RvbUdldHRlcik6CisKKyAgICAgICAgKEds
b2JhbE9iamVjdDo6bW9kdWxlTG9hZGVyUmVzb2x2ZSk6CisgICAgICAgIChHbG9iYWxPYmplY3Q6
Om1vZHVsZUxvYWRlckZldGNoKToKKyAgICAgICAgLSBUaGUgb25seSB3YXkgbW9kdWxlcyB3b3Vs
ZCB0aHJvdyBhbiBleGNlcHRpb24gaXMgaWYgd2UgZW5jb3VudGVyIGFuIE91dE9mTWVtb3J5Cisg
ICAgICAgICAgZXJyb3IuICBUaGlzIHNob3VsZCBiZSBleHRyZW1lbHkgcmFyZS4gIEF0IHRoaXMg
cG9pbnQsIEkgZG9uJ3QgdGhpbmsgaXQncyB3b3J0aAorICAgICAgICAgIGRvaW5nIHRoZSBkYW5j
ZSB0byBwcm9wYWdhdGUgdGhlIGV4Y2VwdGlvbiB3aGVuIHRoaXMgaGFwcGVucy4gIEluc3RlYWQs
IHdlJ2xsCisgICAgICAgICAgc2ltcGx5IGRvIGEgUkVMRUFTRV9BU1NFUlQgdGhhdCB3ZSBkb24n
dCBzZWUgYW55IGV4Y2VwdGlvbnMgaGVyZS4KKworICAgICAgICAoZnVuY3Rpb25SdW4pOgorICAg
ICAgICAoZnVuY3Rpb25SdW5TdHJpbmcpOgorICAgICAgICAoZnVuY3Rpb25Mb2FkTW9kdWxlKToK
KyAgICAgICAgKGZ1bmN0aW9uQ2hlY2tNb2R1bGVTeW50YXgpOgorICAgICAgICAoYm94KToKKyAg
ICAgICAgKGZ1bmN0aW9uVGVzdFdhc21Nb2R1bGVGdW5jdGlvbnMpOgorICAgICAgICAoZHVtcEV4
Y2VwdGlvbik6CisgICAgICAgIChydW5XaXRoU2NyaXB0cyk6CisKIDIwMTYtMTEtMjEgIE1hcmsg
TGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgogCiAgICAgICAgIEZpeCBleGNlcHRpb24gc2NvcGUg
dmVyaWZpY2F0aW9uIGZhaWx1cmVzIGluICpFeGVjdXRhYmxlLmNwcCBmaWxlcy4KSW5kZXg6IFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9qc2MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qc2MuY3BwCShyZXZpc2lvbiAyMDg5NTApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvanNjLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzgyLDYgKzM4Miw3IEBAIHByaXZhdGU6CiAg
ICAgICAgIGlmICghdGhpc09iamVjdCkKICAgICAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVy
cm9yKGV4ZWMsIHNjb3BlKTsKICAgICAgICAgYm9vbCBzaG91bGRUaHJvdyA9IHRoaXNPYmplY3Qt
PmdldChleGVjLCBQcm9wZXJ0eU5hbWUoSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCAic2hv
dWxkVGhyb3ciKSkpLnRvQm9vbGVhbihleGVjKTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElP
TihzY29wZSwgeyB9KTsKICAgICAgICAgaWYgKHNob3VsZFRocm93KQogICAgICAgICAgICAgcmV0
dXJuIHRocm93Vk1UeXBlRXJyb3IoZXhlYywgc2NvcGUpOwogICAgICAgICByZXR1cm4gSlNWYWx1
ZTo6ZW5jb2RlKGpzTnVtYmVyKDEwMCkpOwpAQCAtMTQwNiw2ICsxNDA3LDcgQEAgSlNJbnRlcm5h
bFByb21pc2UqIEdsb2JhbE9iamVjdDo6bW9kdWxlTAogICAgIGF1dG8gc2NvcGUgPSBERUNMQVJF
X0NBVENIX1NDT1BFKHZtKTsKIAogICAgIEpTSW50ZXJuYWxQcm9taXNlRGVmZXJyZWQqIGRlZmVy
cmVkID0gSlNJbnRlcm5hbFByb21pc2VEZWZlcnJlZDo6Y3JlYXRlKGV4ZWMsIGdsb2JhbE9iamVj
dCk7CisgICAgUkVMRUFTRV9BU1NFUlQoIXNjb3BlLmV4Y2VwdGlvbigpKTsKICAgICBjb25zdCBJ
ZGVudGlmaWVyIGtleSA9IGtleVZhbHVlLnRvUHJvcGVydHlLZXkoZXhlYyk7CiAgICAgaWYgKFVO
TElLRUxZKHNjb3BlLmV4Y2VwdGlvbigpKSkgewogICAgICAgICBKU1ZhbHVlIGV4Y2VwdGlvbiA9
IHNjb3BlLmV4Y2VwdGlvbigpOwpAQCAtMTQzNyw3ICsxNDM5LDkgQEAgSlNJbnRlcm5hbFByb21p
c2UqIEdsb2JhbE9iamVjdDo6bW9kdWxlTAogICAgICAgICB9CiAgICAgfQogCi0gICAgcmV0dXJu
IGRlZmVycmVkLT5yZXNvbHZlKGV4ZWMsIGpzU3RyaW5nKGV4ZWMsIHJlc29sdmVQYXRoKGRpcmVj
dG9yeU5hbWUsIE1vZHVsZU5hbWUoa2V5LmltcGwoKSkpKSk7CisgICAgYXV0byByZXN1bHQgPSBk
ZWZlcnJlZC0+cmVzb2x2ZShleGVjLCBqc1N0cmluZyhleGVjLCByZXNvbHZlUGF0aChkaXJlY3Rv
cnlOYW1lLCBNb2R1bGVOYW1lKGtleS5pbXBsKCkpKSkpOworICAgIFJFTEVBU0VfQVNTRVJUKCFz
Y29wZS5leGNlcHRpb24oKSk7CisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogc3RhdGljIHZvaWQg
Y29udmVydFNoZWJhbmdUb0pTQ29tbWVudChWZWN0b3I8Y2hhcj4mIGJ1ZmZlcikKQEAgLTE1MjUs
NyArMTUyOSw5IEBAIEpTSW50ZXJuYWxQcm9taXNlKiBHbG9iYWxPYmplY3Q6Om1vZHVsZUwKICAg
ICBpZiAoIWZldGNoTW9kdWxlRnJvbUxvY2FsRmlsZVN5c3RlbShtb2R1bGVLZXksIHV0ZjgpKQog
ICAgICAgICByZXR1cm4gZGVmZXJyZWQtPnJlamVjdChleGVjLCBjcmVhdGVFcnJvcihleGVjLCBt
YWtlU3RyaW5nKCJDb3VsZCBub3Qgb3BlbiBmaWxlICciLCBtb2R1bGVLZXksICInLiIpKSk7CiAK
LSAgICByZXR1cm4gZGVmZXJyZWQtPnJlc29sdmUoZXhlYywganNTdHJpbmcoZXhlYywgc3RyaW5n
RnJvbVVURih1dGY4KSkpOworICAgIGF1dG8gcmVzdWx0ID0gZGVmZXJyZWQtPnJlc29sdmUoZXhl
YywganNTdHJpbmcoZXhlYywgc3RyaW5nRnJvbVVURih1dGY4KSkpOworICAgIFJFTEVBU0VfQVNT
RVJUKCFzY29wZS5leGNlcHRpb24oKSk7CisgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAogCkBAIC0x
ODk0LDggKzE5MDAsMTEgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblJ1
bgogICAgIEdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gR2xvYmFsT2JqZWN0OjpjcmVhdGUo
dm0sIEdsb2JhbE9iamVjdDo6Y3JlYXRlU3RydWN0dXJlKHZtLCBqc051bGwoKSksIFZlY3RvcjxT
dHJpbmc+KCkpOwogCiAgICAgSlNBcnJheSogYXJyYXkgPSBjb25zdHJ1Y3RFbXB0eUFycmF5KGds
b2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpLCAwKTsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAxOyBp
IDwgZXhlYy0+YXJndW1lbnRDb3VudCgpOyArK2kpCisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihz
Y29wZSwgeyB9KTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAxOyBpIDwgZXhlYy0+YXJndW1lbnRD
b3VudCgpOyArK2kpIHsKICAgICAgICAgYXJyYXktPnB1dERpcmVjdEluZGV4KGdsb2JhbE9iamVj
dC0+Z2xvYmFsRXhlYygpLCBpIC0gMSwgZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoaSkpOworICAg
ICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworICAgIH0KICAgICBnbG9iYWxP
YmplY3QtPnB1dERpcmVjdCgKICAgICAgICAgdm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcoZ2xv
YmFsT2JqZWN0LT5nbG9iYWxFeGVjKCksICJhcmd1bWVudHMiKSwgYXJyYXkpOwogCkBAIC0xOTI0
LDggKzE5MzMsMTEgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblJ1bgog
ICAgIEdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gR2xvYmFsT2JqZWN0OjpjcmVhdGUodm0s
IEdsb2JhbE9iamVjdDo6Y3JlYXRlU3RydWN0dXJlKHZtLCBqc051bGwoKSksIFZlY3RvcjxTdHJp
bmc+KCkpOwogCiAgICAgSlNBcnJheSogYXJyYXkgPSBjb25zdHJ1Y3RFbXB0eUFycmF5KGdsb2Jh
bE9iamVjdC0+Z2xvYmFsRXhlYygpLCAwKTsKLSAgICBmb3IgKHVuc2lnbmVkIGkgPSAxOyBpIDwg
ZXhlYy0+YXJndW1lbnRDb3VudCgpOyArK2kpCisgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29w
ZSwgeyB9KTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAxOyBpIDwgZXhlYy0+YXJndW1lbnRDb3Vu
dCgpOyArK2kpIHsKICAgICAgICAgYXJyYXktPnB1dERpcmVjdEluZGV4KGdsb2JhbE9iamVjdC0+
Z2xvYmFsRXhlYygpLCBpIC0gMSwgZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoaSkpOworICAgICAg
ICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOworICAgIH0KICAgICBnbG9iYWxPYmpl
Y3QtPnB1dERpcmVjdCgKICAgICAgICAgdm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcoZ2xvYmFs
T2JqZWN0LT5nbG9iYWxFeGVjKCksICJhcmd1bWVudHMiKSwgYXJyYXkpOwogCkBAIC0yMzcyLDYg
KzIzODQsNyBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uTG9hCiAgICAg
fSk7CiAKICAgICBwcm9taXNlLT50aGVuKGV4ZWMsIG51bGxwdHIsIGVycm9ySGFuZGxlcik7Cisg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKICAgICB2bS5kcmFpbk1pY3JvdGFz
a3MoKTsKICAgICBpZiAoZXJyb3IpCiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodGhy
b3dFeGNlcHRpb24oZXhlYywgc2NvcGUsIGVycm9yKSk7CkBAIC0yNDE0LDYgKzI0MjcsNyBAQCBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uQ2hlCiAKICAgICBQYXJzZXJFcnJv
ciBlcnJvcjsKICAgICBib29sIHZhbGlkU3ludGF4ID0gY2hlY2tNb2R1bGVTeW50YXgoZXhlYywg
bWFrZVNvdXJjZShzb3VyY2UsIFN0cmluZygpLCBUZXh0UG9zaXRpb246Om1pbmltdW1Qb3NpdGlv
bigpLCBTb3VyY2VQcm92aWRlclNvdXJjZVR5cGU6Ok1vZHVsZSksIGVycm9yKTsKKyAgICBSRVRV
Uk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwogICAgIHN0b3BXYXRjaC5zdG9wKCk7CiAKICAg
ICBpZiAoIXZhbGlkU3ludGF4KQpAQCAtMjQ4OCw4ICsyNTAyLDEyIEBAIEVuY29kZWRKU1ZhbHVl
IEpTQ19IT1NUX0NBTEwgZnVuY3Rpb25TYW0KIAogc3RhdGljIEpTVmFsdWUgYm94KEV4ZWNTdGF0
ZSogZXhlYywgVk0mIHZtLCBKU1ZhbHVlIHdhc21WYWx1ZSkKIHsKKyAgICBhdXRvIHNjb3BlID0g
REVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICBKU1N0cmluZyogdHlwZSA9IGpzQ2FzdDxK
U1N0cmluZyo+KHdhc21WYWx1ZS5nZXQoZXhlYywgbWFrZUlkZW50aWZpZXIodm0sICJ0eXBlIikp
KTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwogICAgIEpTVmFsdWUgdmFs
dWUgPSB3YXNtVmFsdWUuZ2V0KGV4ZWMsIG1ha2VJZGVudGlmaWVyKHZtLCAidmFsdWUiKSk7Cisg
ICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgeyB9KTsKIAogICAgIGNvbnN0IFN0cmluZyYg
dHlwZVN0cmluZyA9IHR5cGUtPnZhbHVlKGV4ZWMpOwogICAgIGlmICh0eXBlU3RyaW5nID09ICJp
NjQiKSB7CkBAIC0yNTY1LDExICsyNTgzLDE1IEBAIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBKU0Nf
SE9TVF9DQUxMIGZ1bmMKICAgICAgICAgICAgIEpTQXJyYXkqIGFyZ3VtZW50cyA9IGpzQ2FzdDxK
U0FycmF5Kj4odGVzdC0+Z2V0SW5kZXhRdWlja2x5KDEpKTsKIAogICAgICAgICAgICAgVmVjdG9y
PEpTVmFsdWU+IGJveGVkQXJnczsKLSAgICAgICAgICAgIGZvciAodW5zaWduZWQgYXJnSW5kZXgg
PSAwOyBhcmdJbmRleCA8IGFyZ3VtZW50cy0+bGVuZ3RoKCk7ICsrYXJnSW5kZXgpCi0gICAgICAg
ICAgICAgICAgYm94ZWRBcmdzLmFwcGVuZChib3goZXhlYywgdm0sIGFyZ3VtZW50cy0+Z2V0SW5k
ZXhRdWlja2x5KGFyZ0luZGV4KSkpOworICAgICAgICAgICAgZm9yICh1bnNpZ25lZCBhcmdJbmRl
eCA9IDA7IGFyZ0luZGV4IDwgYXJndW1lbnRzLT5sZW5ndGgoKTsgKythcmdJbmRleCkgeworICAg
ICAgICAgICAgICAgIEpTVmFsdWUgYm94ZWRWYWx1ZSA9IGJveChleGVjLCB2bSwgYXJndW1lbnRz
LT5nZXRJbmRleFF1aWNrbHkoYXJnSW5kZXgpKTsKKyAgICAgICAgICAgICAgICBSRVRVUk5fSUZf
RVhDRVBUSU9OKHNjb3BlLCB7IH0pOworICAgICAgICAgICAgICAgIGJveGVkQXJncy5hcHBlbmQo
Ym94ZWRWYWx1ZSk7CisgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIEpTVmFsdWUgY2FsbFJl
c3VsdCA9IGNhbGxXYXNtRnVuY3Rpb24oJnZtLCAqcGxhbi5jb21waWxlZEZ1bmN0aW9uKGkpLT5q
c0VudHJ5UG9pbnQsIGJveGVkQXJncyk7CiAgICAgICAgICAgICBKU1ZhbHVlIGV4cGVjdGVkID0g
Ym94KGV4ZWMsIHZtLCByZXN1bHQpOworICAgICAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihz
Y29wZSwgeyB9KTsKICAgICAgICAgICAgIGlmIChjYWxsUmVzdWx0ICE9IGV4cGVjdGVkKSB7CiAg
ICAgICAgICAgICAgICAgV1RGUmVwb3J0QXNzZXJ0aW9uRmFpbHVyZShfX0ZJTEVfXywgX19MSU5F
X18sIFdURl9QUkVUVFlfRlVOQ1RJT04sIHRvQ1N0cmluZygiIChjYWxsUmVzdWx0ID09ICIsIFJh
d1BvaW50ZXIoYml0d2lzZV9jYXN0PHZvaWQqPihjYWxsUmVzdWx0KSksICIsIGV4cGVjdGVkID09
ICIsIFJhd1BvaW50ZXIoYml0d2lzZV9jYXN0PHZvaWQqPihleHBlY3RlZCkpLCAiKSIpLmRhdGEo
KSk7CiAgICAgICAgICAgICAgICAgQ1JBU0goKTsKQEAgLTI2OTUsMTAgKzI3MTcsMTQgQEAgc3Rh
dGljIHZvaWQgZHVtcEV4Y2VwdGlvbihHbG9iYWxPYmplY3QqIAogICAgIHByaW50ZigiRXhjZXB0
aW9uOiAlc1xuIiwgZXhjZXB0aW9uLnRvV1RGU3RyaW5nKGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhl
YygpKS51dGY4KCkuZGF0YSgpKTsKIAogICAgIElkZW50aWZpZXIgbmFtZUlEID0gSWRlbnRpZmll
cjo6ZnJvbVN0cmluZyhnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSwgIm5hbWUiKTsKKyAgICBD
SEVDS19FWENFUFRJT04oKTsKICAgICBJZGVudGlmaWVyIGZpbGVOYW1lSUQgPSBJZGVudGlmaWVy
Ojpmcm9tU3RyaW5nKGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpLCAic291cmNlVVJMIik7Cisg
ICAgQ0hFQ0tfRVhDRVBUSU9OKCk7CiAgICAgSWRlbnRpZmllciBsaW5lTnVtYmVySUQgPSBJZGVu
dGlmaWVyOjpmcm9tU3RyaW5nKGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpLCAibGluZSIpOwor
ICAgIENIRUNLX0VYQ0VQVElPTigpOwogICAgIElkZW50aWZpZXIgc3RhY2tJRCA9IElkZW50aWZp
ZXI6OmZyb21TdHJpbmcoZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCksICJzdGFjayIpOwotICAg
IAorICAgIENIRUNLX0VYQ0VQVElPTigpOworCiAgICAgSlNWYWx1ZSBuYW1lVmFsdWUgPSBleGNl
cHRpb24uZ2V0KGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpLCBuYW1lSUQpOwogICAgIENIRUNL
X0VYQ0VQVElPTigpOwogICAgIEpTVmFsdWUgZmlsZU5hbWVWYWx1ZSA9IGV4Y2VwdGlvbi5nZXQo
Z2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCksIGZpbGVOYW1lSUQpOwpAQCAtMjc4OSw5ICsyODE1
LDEwIEBAIHN0YXRpYyBib29sIHJ1bldpdGhTY3JpcHRzKEdsb2JhbE9iamVjdCoKICAgICAgICAg
ICAgIGlmIChzY3JpcHRzW2ldLnN0cmljdE1vZGUgPT0gU2NyaXB0OjpTdHJpY3RNb2RlOjpTdHJp
Y3QpCiAgICAgICAgICAgICAgICAgc2NyaXB0QnVmZmVyLmFwcGVuZCgiXCJ1c2Ugc3RyaWN0XCI7
XG4iLCBzdHJsZW4oIlwidXNlIHN0cmljdFwiO1xuIikpOwogCi0gICAgICAgICAgICBpZiAoaXNN
b2R1bGUpCisgICAgICAgICAgICBpZiAoaXNNb2R1bGUpIHsKICAgICAgICAgICAgICAgICBwcm9t
aXNlID0gbG9hZEFuZEV2YWx1YXRlTW9kdWxlKGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpLCBm
aWxlTmFtZSk7Ci0gICAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgICAgICBSRUxFQVNFX0FT
U0VSVCghc2NvcGUuZXhjZXB0aW9uKCkpOworICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAg
ICAgICAgICBpZiAoIWZldGNoU2NyaXB0RnJvbUxvY2FsRmlsZVN5c3RlbShmaWxlTmFtZSwgc2Ny
aXB0QnVmZmVyKSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOyAvLyBmYWlsIGVh
cmx5IHNvIHdlIGNhbiBjYXRjaCBtaXNzaW5nIGZpbGVzCiAgICAgICAgICAgICB9CkBAIC0yODE5
LDYgKzI4NDYsNyBAQCBzdGF0aWMgYm9vbCBydW5XaXRoU2NyaXB0cyhHbG9iYWxPYmplY3QqCiAg
ICAgICAgICAgICB9KTsKIAogICAgICAgICAgICAgcHJvbWlzZS0+dGhlbihnbG9iYWxPYmplY3Qt
Pmdsb2JhbEV4ZWMoKSwgZnVsZmlsbEhhbmRsZXIsIHJlamVjdEhhbmRsZXIpOworICAgICAgICAg
ICAgUkVMRUFTRV9BU1NFUlQoIXNjb3BlLmV4Y2VwdGlvbigpKTsKICAgICAgICAgICAgIHZtLmRy
YWluTWljcm90YXNrcygpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgTmFrZWRQdHI8
RXhjZXB0aW9uPiBldmFsdWF0aW9uRXhjZXB0aW9uOwo=
</data>
<flag name="review"
          id="318005"
          type_id="1"
          status="-"
          setter="mark.lam"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>295418</attachid>
            <date>2016-11-24 13:56:24 -0800</date>
            <delta_ts>2017-03-15 14:20:20 -0700</delta_ts>
            <desc>proposed patch.</desc>
            <filename>bug-164968.patch</filename>
            <type>text/plain</type>
            <size>8679</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjA4OTc0KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI5IEBA
CisyMDE2LTExLTI0ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBG
aXggZXhjZXB0aW9uIHNjb3BlIHZlcmlmaWNhdGlvbiBmYWlsdXJlcyBpbiBqc2MuY3BwLgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY0OTY4CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBqc2MuY3BwOgor
ICAgICAgICAoV1RGOjpDdXN0b21HZXR0ZXI6OmN1c3RvbUdldHRlcik6CisKKyAgICAgICAgKEds
b2JhbE9iamVjdDo6bW9kdWxlTG9hZGVyUmVzb2x2ZSk6CisgICAgICAgIChHbG9iYWxPYmplY3Q6
Om1vZHVsZUxvYWRlckZldGNoKToKKyAgICAgICAgLSBUaGUgb25seSB3YXkgbW9kdWxlcyB3b3Vs
ZCB0aHJvdyBhbiBleGNlcHRpb24gaXMgaWYgd2UgZW5jb3VudGVyIGFuIE91dE9mTWVtb3J5Cisg
ICAgICAgICAgZXJyb3IuICBUaGlzIHNob3VsZCBiZSBleHRyZW1lbHkgcmFyZS4gIEF0IHRoaXMg
cG9pbnQsIEkgZG9uJ3QgdGhpbmsgaXQncyB3b3J0aAorICAgICAgICAgIGRvaW5nIHRoZSBkYW5j
ZSB0byBwcm9wYWdhdGUgdGhlIGV4Y2VwdGlvbiB3aGVuIHRoaXMgaGFwcGVucy4gIEluc3RlYWQs
IHdlJ2xsCisgICAgICAgICAgc2ltcGx5IGRvIGEgUkVMRUFTRV9BU1NFUlQgdGhhdCB3ZSBkb24n
dCBzZWUgYW55IGV4Y2VwdGlvbnMgaGVyZS4KKworICAgICAgICAoZnVuY3Rpb25SdW4pOgorICAg
ICAgICAoZnVuY3Rpb25SdW5TdHJpbmcpOgorICAgICAgICAoZnVuY3Rpb25Mb2FkTW9kdWxlKToK
KyAgICAgICAgKGZ1bmN0aW9uQ2hlY2tNb2R1bGVTeW50YXgpOgorICAgICAgICAoYm94KToKKyAg
ICAgICAgKGZ1bmN0aW9uVGVzdFdhc21Nb2R1bGVGdW5jdGlvbnMpOgorICAgICAgICAoZHVtcEV4
Y2VwdGlvbik6CisgICAgICAgIChydW5XaXRoU2NyaXB0cyk6CisKIDIwMTYtMTEtMjMgIFphbiBE
b2JlcnNlayAgPHpkb2JlcnNla0BpZ2FsaWEuY29tPgogCiAgICAgICAgIFJlbW92ZSBFTkFCTEVf
QVNTRU1CTEVSX1dYX0VYQ0xVU0lWRSBjb2RlCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
anNjLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNwcAkocmV2
aXNpb24gMjA4OTc0KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2pzYy5jcHAJKHdvcmtpbmcg
Y29weSkKQEAgLTM4Miw2ICszODIsNyBAQCBwcml2YXRlOgogICAgICAgICBpZiAoIXRoaXNPYmpl
Y3QpCiAgICAgICAgICAgICByZXR1cm4gdGhyb3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7CiAg
ICAgICAgIGJvb2wgc2hvdWxkVGhyb3cgPSB0aGlzT2JqZWN0LT5nZXQoZXhlYywgUHJvcGVydHlO
YW1lKElkZW50aWZpZXI6OmZyb21TdHJpbmcoZXhlYywgInNob3VsZFRocm93IikpKS50b0Jvb2xl
YW4oZXhlYyk7CisgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1Zh
bHVlKCkpOwogICAgICAgICBpZiAoc2hvdWxkVGhyb3cpCiAgICAgICAgICAgICByZXR1cm4gdGhy
b3dWTVR5cGVFcnJvcihleGVjLCBzY29wZSk7CiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNv
ZGUoanNOdW1iZXIoMTAwKSk7CkBAIC0xNDA2LDYgKzE0MDcsNyBAQCBKU0ludGVybmFsUHJvbWlz
ZSogR2xvYmFsT2JqZWN0Ojptb2R1bGVMCiAgICAgYXV0byBzY29wZSA9IERFQ0xBUkVfQ0FUQ0hf
U0NPUEUodm0pOwogCiAgICAgSlNJbnRlcm5hbFByb21pc2VEZWZlcnJlZCogZGVmZXJyZWQgPSBK
U0ludGVybmFsUHJvbWlzZURlZmVycmVkOjpjcmVhdGUoZXhlYywgZ2xvYmFsT2JqZWN0KTsKKyAg
ICBSRUxFQVNFX0FTU0VSVCghc2NvcGUuZXhjZXB0aW9uKCkpOwogICAgIGNvbnN0IElkZW50aWZp
ZXIga2V5ID0ga2V5VmFsdWUudG9Qcm9wZXJ0eUtleShleGVjKTsKICAgICBpZiAoVU5MSUtFTFko
c2NvcGUuZXhjZXB0aW9uKCkpKSB7CiAgICAgICAgIEpTVmFsdWUgZXhjZXB0aW9uID0gc2NvcGUu
ZXhjZXB0aW9uKCk7CkBAIC0xNDM3LDcgKzE0MzksOSBAQCBKU0ludGVybmFsUHJvbWlzZSogR2xv
YmFsT2JqZWN0Ojptb2R1bGVMCiAgICAgICAgIH0KICAgICB9CiAKLSAgICByZXR1cm4gZGVmZXJy
ZWQtPnJlc29sdmUoZXhlYywganNTdHJpbmcoZXhlYywgcmVzb2x2ZVBhdGgoZGlyZWN0b3J5TmFt
ZSwgTW9kdWxlTmFtZShrZXkuaW1wbCgpKSkpKTsKKyAgICBhdXRvIHJlc3VsdCA9IGRlZmVycmVk
LT5yZXNvbHZlKGV4ZWMsIGpzU3RyaW5nKGV4ZWMsIHJlc29sdmVQYXRoKGRpcmVjdG9yeU5hbWUs
IE1vZHVsZU5hbWUoa2V5LmltcGwoKSkpKSk7CisgICAgUkVMRUFTRV9BU1NFUlQoIXNjb3BlLmV4
Y2VwdGlvbigpKTsKKyAgICByZXR1cm4gcmVzdWx0OwogfQogCiBzdGF0aWMgdm9pZCBjb252ZXJ0
U2hlYmFuZ1RvSlNDb21tZW50KFZlY3RvcjxjaGFyPiYgYnVmZmVyKQpAQCAtMTUyNSw3ICsxNTI5
LDkgQEAgSlNJbnRlcm5hbFByb21pc2UqIEdsb2JhbE9iamVjdDo6bW9kdWxlTAogICAgIGlmICgh
ZmV0Y2hNb2R1bGVGcm9tTG9jYWxGaWxlU3lzdGVtKG1vZHVsZUtleSwgdXRmOCkpCiAgICAgICAg
IHJldHVybiBkZWZlcnJlZC0+cmVqZWN0KGV4ZWMsIGNyZWF0ZUVycm9yKGV4ZWMsIG1ha2VTdHJp
bmcoIkNvdWxkIG5vdCBvcGVuIGZpbGUgJyIsIG1vZHVsZUtleSwgIicuIikpKTsKIAotICAgIHJl
dHVybiBkZWZlcnJlZC0+cmVzb2x2ZShleGVjLCBqc1N0cmluZyhleGVjLCBzdHJpbmdGcm9tVVRG
KHV0ZjgpKSk7CisgICAgYXV0byByZXN1bHQgPSBkZWZlcnJlZC0+cmVzb2x2ZShleGVjLCBqc1N0
cmluZyhleGVjLCBzdHJpbmdGcm9tVVRGKHV0ZjgpKSk7CisgICAgUkVMRUFTRV9BU1NFUlQoIXNj
b3BlLmV4Y2VwdGlvbigpKTsKKyAgICByZXR1cm4gcmVzdWx0OwogfQogCiAKQEAgLTE4OTQsOCAr
MTkwMCwxMSBAQCBFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uUnVuCiAgICAg
R2xvYmFsT2JqZWN0KiBnbG9iYWxPYmplY3QgPSBHbG9iYWxPYmplY3Q6OmNyZWF0ZSh2bSwgR2xv
YmFsT2JqZWN0OjpjcmVhdGVTdHJ1Y3R1cmUodm0sIGpzTnVsbCgpKSwgVmVjdG9yPFN0cmluZz4o
KSk7CiAKICAgICBKU0FycmF5KiBhcnJheSA9IGNvbnN0cnVjdEVtcHR5QXJyYXkoZ2xvYmFsT2Jq
ZWN0LT5nbG9iYWxFeGVjKCksIDApOwotICAgIGZvciAodW5zaWduZWQgaSA9IDE7IGkgPCBleGVj
LT5hcmd1bWVudENvdW50KCk7ICsraSkKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBl
bmNvZGVkSlNWYWx1ZSgpKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAxOyBpIDwgZXhlYy0+YXJn
dW1lbnRDb3VudCgpOyArK2kpIHsKICAgICAgICAgYXJyYXktPnB1dERpcmVjdEluZGV4KGdsb2Jh
bE9iamVjdC0+Z2xvYmFsRXhlYygpLCBpIC0gMSwgZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoaSkp
OworICAgICAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsK
KyAgICB9CiAgICAgZ2xvYmFsT2JqZWN0LT5wdXREaXJlY3QoCiAgICAgICAgIHZtLCBJZGVudGlm
aWVyOjpmcm9tU3RyaW5nKGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpLCAiYXJndW1lbnRzIiks
IGFycmF5KTsKIApAQCAtMTkyNCw4ICsxOTMzLDExIEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NU
X0NBTEwgZnVuY3Rpb25SdW4KICAgICBHbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCA9IEdsb2Jh
bE9iamVjdDo6Y3JlYXRlKHZtLCBHbG9iYWxPYmplY3Q6OmNyZWF0ZVN0cnVjdHVyZSh2bSwganNO
dWxsKCkpLCBWZWN0b3I8U3RyaW5nPigpKTsKIAogICAgIEpTQXJyYXkqIGFycmF5ID0gY29uc3Ry
dWN0RW1wdHlBcnJheShnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSwgMCk7Ci0gICAgZm9yICh1
bnNpZ25lZCBpID0gMTsgaSA8IGV4ZWMtPmFyZ3VtZW50Q291bnQoKTsgKytpKQorICAgIFJFVFVS
Tl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOworICAgIGZvciAodW5zaWdu
ZWQgaSA9IDE7IGkgPCBleGVjLT5hcmd1bWVudENvdW50KCk7ICsraSkgewogICAgICAgICBhcnJh
eS0+cHV0RGlyZWN0SW5kZXgoZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCksIGkgLSAxLCBleGVj
LT51bmNoZWNrZWRBcmd1bWVudChpKSk7CisgICAgICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2Nv
cGUsIGVuY29kZWRKU1ZhbHVlKCkpOworICAgIH0KICAgICBnbG9iYWxPYmplY3QtPnB1dERpcmVj
dCgKICAgICAgICAgdm0sIElkZW50aWZpZXI6OmZyb21TdHJpbmcoZ2xvYmFsT2JqZWN0LT5nbG9i
YWxFeGVjKCksICJhcmd1bWVudHMiKSwgYXJyYXkpOwogCkBAIC0yMzcyLDYgKzIzODQsNyBAQCBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uTG9hCiAgICAgfSk7CiAKICAgICBw
cm9taXNlLT50aGVuKGV4ZWMsIG51bGxwdHIsIGVycm9ySGFuZGxlcik7CisgICAgUkVUVVJOX0lG
X0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgdm0uZHJhaW5NaWNyb3Rh
c2tzKCk7CiAgICAgaWYgKGVycm9yKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRo
cm93RXhjZXB0aW9uKGV4ZWMsIHNjb3BlLCBlcnJvcikpOwpAQCAtMjQxNCw2ICsyNDI3LDcgQEAg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvbkNoZQogCiAgICAgUGFyc2VyRXJy
b3IgZXJyb3I7CiAgICAgYm9vbCB2YWxpZFN5bnRheCA9IGNoZWNrTW9kdWxlU3ludGF4KGV4ZWMs
IG1ha2VTb3VyY2Uoc291cmNlLCBTdHJpbmcoKSwgVGV4dFBvc2l0aW9uOjptaW5pbXVtUG9zaXRp
b24oKSwgU291cmNlUHJvdmlkZXJTb3VyY2VUeXBlOjpNb2R1bGUpLCBlcnJvcik7CisgICAgUkVU
VVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgc3RvcFdhdGNo
LnN0b3AoKTsKIAogICAgIGlmICghdmFsaWRTeW50YXgpCkBAIC0yNDg4LDggKzI1MDIsMTIgQEAg
RW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlvblNhbQogCiBzdGF0aWMgSlNWYWx1
ZSBib3goRXhlY1N0YXRlKiBleGVjLCBWTSYgdm0sIEpTVmFsdWUgd2FzbVZhbHVlKQogeworICAg
IGF1dG8gc2NvcGUgPSBERUNMQVJFX1RIUk9XX1NDT1BFKHZtKTsKKwogICAgIEpTU3RyaW5nKiB0
eXBlID0ganNDYXN0PEpTU3RyaW5nKj4od2FzbVZhbHVlLmdldChleGVjLCBtYWtlSWRlbnRpZmll
cih2bSwgInR5cGUiKSkpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIHsgfSk7CiAg
ICAgSlNWYWx1ZSB2YWx1ZSA9IHdhc21WYWx1ZS5nZXQoZXhlYywgbWFrZUlkZW50aWZpZXIodm0s
ICJ2YWx1ZSIpKTsKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCB7IH0pOwogCiAgICAg
Y29uc3QgU3RyaW5nJiB0eXBlU3RyaW5nID0gdHlwZS0+dmFsdWUoZXhlYyk7CiAgICAgaWYgKHR5
cGVTdHJpbmcgPT0gImk2NCIpIHsKQEAgLTI1NjUsMTEgKzI1ODMsMTUgQEAgc3RhdGljIEVuY29k
ZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuYwogICAgICAgICAgICAgSlNBcnJheSogYXJndW1l
bnRzID0ganNDYXN0PEpTQXJyYXkqPih0ZXN0LT5nZXRJbmRleFF1aWNrbHkoMSkpOwogCiAgICAg
ICAgICAgICBWZWN0b3I8SlNWYWx1ZT4gYm94ZWRBcmdzOwotICAgICAgICAgICAgZm9yICh1bnNp
Z25lZCBhcmdJbmRleCA9IDA7IGFyZ0luZGV4IDwgYXJndW1lbnRzLT5sZW5ndGgoKTsgKythcmdJ
bmRleCkKLSAgICAgICAgICAgICAgICBib3hlZEFyZ3MuYXBwZW5kKGJveChleGVjLCB2bSwgYXJn
dW1lbnRzLT5nZXRJbmRleFF1aWNrbHkoYXJnSW5kZXgpKSk7CisgICAgICAgICAgICBmb3IgKHVu
c2lnbmVkIGFyZ0luZGV4ID0gMDsgYXJnSW5kZXggPCBhcmd1bWVudHMtPmxlbmd0aCgpOyArK2Fy
Z0luZGV4KSB7CisgICAgICAgICAgICAgICAgSlNWYWx1ZSBib3hlZFZhbHVlID0gYm94KGV4ZWMs
IHZtLCBhcmd1bWVudHMtPmdldEluZGV4UXVpY2tseShhcmdJbmRleCkpOworICAgICAgICAgICAg
ICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOworICAgICAg
ICAgICAgICAgIGJveGVkQXJncy5hcHBlbmQoYm94ZWRWYWx1ZSk7CisgICAgICAgICAgICB9CiAK
ICAgICAgICAgICAgIEpTVmFsdWUgY2FsbFJlc3VsdCA9IGNhbGxXYXNtRnVuY3Rpb24oJnZtLCAq
cGxhbi5jb21waWxlZEZ1bmN0aW9uKGkpLT5qc0VudHJ5UG9pbnQsIGJveGVkQXJncyk7CiAgICAg
ICAgICAgICBKU1ZhbHVlIGV4cGVjdGVkID0gYm94KGV4ZWMsIHZtLCByZXN1bHQpOworICAgICAg
ICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAg
ICAgICAgICBpZiAoY2FsbFJlc3VsdCAhPSBleHBlY3RlZCkgewogICAgICAgICAgICAgICAgIFdU
RlJlcG9ydEFzc2VydGlvbkZhaWx1cmUoX19GSUxFX18sIF9fTElORV9fLCBXVEZfUFJFVFRZX0ZV
TkNUSU9OLCB0b0NTdHJpbmcoIiAoY2FsbFJlc3VsdCA9PSAiLCBSYXdQb2ludGVyKGJpdHdpc2Vf
Y2FzdDx2b2lkKj4oY2FsbFJlc3VsdCkpLCAiLCBleHBlY3RlZCA9PSAiLCBSYXdQb2ludGVyKGJp
dHdpc2VfY2FzdDx2b2lkKj4oZXhwZWN0ZWQpKSwgIikiKS5kYXRhKCkpOwogICAgICAgICAgICAg
ICAgIENSQVNIKCk7CkBAIC0yNjk1LDEwICsyNzE3LDE0IEBAIHN0YXRpYyB2b2lkIGR1bXBFeGNl
cHRpb24oR2xvYmFsT2JqZWN0KiAKICAgICBwcmludGYoIkV4Y2VwdGlvbjogJXNcbiIsIGV4Y2Vw
dGlvbi50b1dURlN0cmluZyhnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSkudXRmOCgpLmRhdGEo
KSk7CiAKICAgICBJZGVudGlmaWVyIG5hbWVJRCA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcoZ2xv
YmFsT2JqZWN0LT5nbG9iYWxFeGVjKCksICJuYW1lIik7CisgICAgQ0hFQ0tfRVhDRVBUSU9OKCk7
CiAgICAgSWRlbnRpZmllciBmaWxlTmFtZUlEID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhnbG9i
YWxPYmplY3QtPmdsb2JhbEV4ZWMoKSwgInNvdXJjZVVSTCIpOworICAgIENIRUNLX0VYQ0VQVElP
TigpOwogICAgIElkZW50aWZpZXIgbGluZU51bWJlcklEID0gSWRlbnRpZmllcjo6ZnJvbVN0cmlu
ZyhnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSwgImxpbmUiKTsKKyAgICBDSEVDS19FWENFUFRJ
T04oKTsKICAgICBJZGVudGlmaWVyIHN0YWNrSUQgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGds
b2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpLCAic3RhY2siKTsKLSAgICAKKyAgICBDSEVDS19FWENF
UFRJT04oKTsKKwogICAgIEpTVmFsdWUgbmFtZVZhbHVlID0gZXhjZXB0aW9uLmdldChnbG9iYWxP
YmplY3QtPmdsb2JhbEV4ZWMoKSwgbmFtZUlEKTsKICAgICBDSEVDS19FWENFUFRJT04oKTsKICAg
ICBKU1ZhbHVlIGZpbGVOYW1lVmFsdWUgPSBleGNlcHRpb24uZ2V0KGdsb2JhbE9iamVjdC0+Z2xv
YmFsRXhlYygpLCBmaWxlTmFtZUlEKTsKQEAgLTI3ODksOSArMjgxNSwxMCBAQCBzdGF0aWMgYm9v
bCBydW5XaXRoU2NyaXB0cyhHbG9iYWxPYmplY3QqCiAgICAgICAgICAgICBpZiAoc2NyaXB0c1tp
XS5zdHJpY3RNb2RlID09IFNjcmlwdDo6U3RyaWN0TW9kZTo6U3RyaWN0KQogICAgICAgICAgICAg
ICAgIHNjcmlwdEJ1ZmZlci5hcHBlbmQoIlwidXNlIHN0cmljdFwiO1xuIiwgc3RybGVuKCJcInVz
ZSBzdHJpY3RcIjtcbiIpKTsKIAotICAgICAgICAgICAgaWYgKGlzTW9kdWxlKQorICAgICAgICAg
ICAgaWYgKGlzTW9kdWxlKSB7CiAgICAgICAgICAgICAgICAgcHJvbWlzZSA9IGxvYWRBbmRFdmFs
dWF0ZU1vZHVsZShnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSwgZmlsZU5hbWUpOwotICAgICAg
ICAgICAgZWxzZSB7CisgICAgICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoIXNjb3BlLmV4Y2Vw
dGlvbigpKTsKKyAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgaWYgKCFmZXRj
aFNjcmlwdEZyb21Mb2NhbEZpbGVTeXN0ZW0oZmlsZU5hbWUsIHNjcmlwdEJ1ZmZlcikpCiAgICAg
ICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsgLy8gZmFpbCBlYXJseSBzbyB3ZSBjYW4gY2F0
Y2ggbWlzc2luZyBmaWxlcwogICAgICAgICAgICAgfQpAQCAtMjgxOSw2ICsyODQ2LDcgQEAgc3Rh
dGljIGJvb2wgcnVuV2l0aFNjcmlwdHMoR2xvYmFsT2JqZWN0KgogICAgICAgICAgICAgfSk7CiAK
ICAgICAgICAgICAgIHByb21pc2UtPnRoZW4oZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCksIGZ1
bGZpbGxIYW5kbGVyLCByZWplY3RIYW5kbGVyKTsKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJU
KCFzY29wZS5leGNlcHRpb24oKSk7CiAgICAgICAgICAgICB2bS5kcmFpbk1pY3JvdGFza3MoKTsK
ICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIE5ha2VkUHRyPEV4Y2VwdGlvbj4gZXZhbHVh
dGlvbkV4Y2VwdGlvbjsK
</data>
<flag name="review"
          id="318091"
          type_id="1"
          status="+"
          setter="saam"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>304546</attachid>
            <date>2017-03-15 14:20:20 -0700</date>
            <delta_ts>2017-03-15 14:55:15 -0700</delta_ts>
            <desc>re-based patch for landing.</desc>
            <filename>bug-164968.patch</filename>
            <type>text/plain</type>
            <size>7920</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjE0MDA1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI4IEBA
CisyMDE3LTAzLTE1ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBG
aXggZXhjZXB0aW9uIHNjb3BlIHZlcmlmaWNhdGlvbiBmYWlsdXJlcyBpbiBqc2MuY3BwLgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY0OTY4CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgU2FhbSBCYXJhdGkuCisKKyAgICAgICAgKiBqc2MuY3BwOgorICAg
ICAgICAoV1RGOjpDdXN0b21HZXR0ZXI6OmN1c3RvbUdldHRlcik6CisKKyAgICAgICAgKEdsb2Jh
bE9iamVjdDo6bW9kdWxlTG9hZGVyUmVzb2x2ZSk6CisgICAgICAgIChHbG9iYWxPYmplY3Q6Om1v
ZHVsZUxvYWRlckZldGNoKToKKyAgICAgICAgLSBUaGUgb25seSB3YXkgbW9kdWxlcyB3b3VsZCB0
aHJvdyBhbiBleGNlcHRpb24gaXMgaWYgd2UgZW5jb3VudGVyIGFuIE91dE9mTWVtb3J5CisgICAg
ICAgICAgZXJyb3IuICBUaGlzIHNob3VsZCBiZSBleHRyZW1lbHkgcmFyZS4gIEF0IHRoaXMgcG9p
bnQsIEkgZG9uJ3QgdGhpbmsgaXQncyB3b3J0aAorICAgICAgICAgIGRvaW5nIHRoZSBkYW5jZSB0
byBwcm9wYWdhdGUgdGhlIGV4Y2VwdGlvbiB3aGVuIHRoaXMgaGFwcGVucy4gIEluc3RlYWQsIHdl
J2xsCisgICAgICAgICAgc2ltcGx5IGRvIGEgUkVMRUFTRV9BU1NFUlQgdGhhdCB3ZSBkb24ndCBz
ZWUgYW55IGV4Y2VwdGlvbnMgaGVyZS4KKworICAgICAgICAoZnVuY3Rpb25SdW4pOgorICAgICAg
ICAoZnVuY3Rpb25SdW5TdHJpbmcpOgorICAgICAgICAoZnVuY3Rpb25Mb2FkTW9kdWxlKToKKyAg
ICAgICAgKGZ1bmN0aW9uQ2hlY2tNb2R1bGVTeW50YXgpOgorICAgICAgICAoYm94KToKKyAgICAg
ICAgKGR1bXBFeGNlcHRpb24pOgorICAgICAgICAocnVuV2l0aFNjcmlwdHMpOgorCiAyMDE3LTAz
LTE1ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBGaXggbWlzc2lu
ZyBleGNlcHRpb24gY2hlY2tzIGluIEludGVycHJldGVyLmNwcC4KSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qc2MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
c2MuY3BwCShyZXZpc2lvbiAyMTQwMDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzkwLDYgKzM5MCw3IEBAIHByaXZhdGU6CiAgICAgICAgIGlm
ICghdGhpc09iamVjdCkKICAgICAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMs
IHNjb3BlKTsKICAgICAgICAgYm9vbCBzaG91bGRUaHJvdyA9IHRoaXNPYmplY3QtPmdldChleGVj
LCBQcm9wZXJ0eU5hbWUoSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCAic2hvdWxkVGhyb3ci
KSkpLnRvQm9vbGVhbihleGVjKTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwg
ZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgICAgIGlmIChzaG91bGRUaHJvdykKICAgICAgICAgICAg
IHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKICAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc051bWJlcigxMDApKTsKQEAgLTE1OTQsNiArMTU5NSw3IEBAIEpTSW50
ZXJuYWxQcm9taXNlKiBHbG9iYWxPYmplY3Q6Om1vZHVsZUwKICAgICBhdXRvIHNjb3BlID0gREVD
TEFSRV9DQVRDSF9TQ09QRSh2bSk7CiAKICAgICBKU0ludGVybmFsUHJvbWlzZURlZmVycmVkKiBk
ZWZlcnJlZCA9IEpTSW50ZXJuYWxQcm9taXNlRGVmZXJyZWQ6OmNyZWF0ZShleGVjLCBnbG9iYWxP
YmplY3QpOworICAgIFJFTEVBU0VfQVNTRVJUKCFzY29wZS5leGNlcHRpb24oKSk7CiAgICAgY29u
c3QgSWRlbnRpZmllciBrZXkgPSBrZXlWYWx1ZS50b1Byb3BlcnR5S2V5KGV4ZWMpOwogICAgIGlm
IChVTkxJS0VMWShzY29wZS5leGNlcHRpb24oKSkpIHsKICAgICAgICAgSlNWYWx1ZSBleGNlcHRp
b24gPSBzY29wZS5leGNlcHRpb24oKTsKQEAgLTE2MjksNyArMTYzMSw5IEBAIEpTSW50ZXJuYWxQ
cm9taXNlKiBHbG9iYWxPYmplY3Q6Om1vZHVsZUwKICAgICBhdXRvIGRpcmVjdG9yeU5hbWUgPSBl
eHRyYWN0RGlyZWN0b3J5TmFtZShyZWZlcnJlci5pbXBsKCkpOwogICAgIGlmICghZGlyZWN0b3J5
TmFtZSkKICAgICAgICAgcmV0dXJuIGRlZmVycmVkLT5yZWplY3QoZXhlYywgY3JlYXRlRXJyb3Io
ZXhlYywgbWFrZVN0cmluZygiQ291bGQgbm90IHJlc29sdmUgdGhlIHJlZmVycmVyIG5hbWUgJyIs
IFN0cmluZyhyZWZlcnJlci5pbXBsKCkpLCAiJy4iKSkpOwotICAgIHJldHVybiBkZWZlcnJlZC0+
cmVzb2x2ZShleGVjLCBqc1N0cmluZyhleGVjLCByZXNvbHZlUGF0aChkaXJlY3RvcnlOYW1lLnZh
bHVlKCksIE1vZHVsZU5hbWUoa2V5LmltcGwoKSkpKSk7CisgICAgYXV0byByZXN1bHQgPSBkZWZl
cnJlZC0+cmVzb2x2ZShleGVjLCBqc1N0cmluZyhleGVjLCByZXNvbHZlUGF0aChkaXJlY3RvcnlO
YW1lLnZhbHVlKCksIE1vZHVsZU5hbWUoa2V5LmltcGwoKSkpKSk7CisgICAgUkVMRUFTRV9BU1NF
UlQoIXNjb3BlLmV4Y2VwdGlvbigpKTsKKyAgICByZXR1cm4gcmVzdWx0OwogfQogCiBzdGF0aWMg
dm9pZCBjb252ZXJ0U2hlYmFuZ1RvSlNDb21tZW50KFZlY3RvcjxjaGFyPiYgYnVmZmVyKQpAQCAt
MTcxNyw3ICsxNzIxLDkgQEAgSlNJbnRlcm5hbFByb21pc2UqIEdsb2JhbE9iamVjdDo6bW9kdWxl
TAogICAgIGlmICghZmV0Y2hNb2R1bGVGcm9tTG9jYWxGaWxlU3lzdGVtKG1vZHVsZUtleSwgdXRm
OCkpCiAgICAgICAgIHJldHVybiBkZWZlcnJlZC0+cmVqZWN0KGV4ZWMsIGNyZWF0ZUVycm9yKGV4
ZWMsIG1ha2VTdHJpbmcoIkNvdWxkIG5vdCBvcGVuIGZpbGUgJyIsIG1vZHVsZUtleSwgIicuIikp
KTsKIAotICAgIHJldHVybiBkZWZlcnJlZC0+cmVzb2x2ZShleGVjLCBKU1NvdXJjZUNvZGU6OmNy
ZWF0ZShleGVjLT52bSgpLCBtYWtlU291cmNlKHN0cmluZ0Zyb21VVEYodXRmOCksIFNvdXJjZU9y
aWdpbiB7IG1vZHVsZUtleSB9LCBtb2R1bGVLZXksIFRleHRQb3NpdGlvbigpLCBTb3VyY2VQcm92
aWRlclNvdXJjZVR5cGU6Ok1vZHVsZSkpKTsKKyAgICBhdXRvIHJlc3VsdCA9IGRlZmVycmVkLT5y
ZXNvbHZlKGV4ZWMsIEpTU291cmNlQ29kZTo6Y3JlYXRlKGV4ZWMtPnZtKCksIG1ha2VTb3VyY2Uo
c3RyaW5nRnJvbVVURih1dGY4KSwgU291cmNlT3JpZ2luIHsgbW9kdWxlS2V5IH0sIG1vZHVsZUtl
eSwgVGV4dFBvc2l0aW9uKCksIFNvdXJjZVByb3ZpZGVyU291cmNlVHlwZTo6TW9kdWxlKSkpOwor
ICAgIFJFTEVBU0VfQVNTRVJUKCFzY29wZS5leGNlcHRpb24oKSk7CisgICAgcmV0dXJuIHJlc3Vs
dDsKIH0KIAogCkBAIC0yMDk0LDggKzIxMDAsMTEgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBmdW5jdGlvblJ1bgogICAgIEdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gR2xvYmFs
T2JqZWN0OjpjcmVhdGUodm0sIEdsb2JhbE9iamVjdDo6Y3JlYXRlU3RydWN0dXJlKHZtLCBqc051
bGwoKSksIFZlY3RvcjxTdHJpbmc+KCkpOwogCiAgICAgSlNBcnJheSogYXJyYXkgPSBjb25zdHJ1
Y3RFbXB0eUFycmF5KGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpLCAwKTsKLSAgICBmb3IgKHVu
c2lnbmVkIGkgPSAxOyBpIDwgZXhlYy0+YXJndW1lbnRDb3VudCgpOyArK2kpCisgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CisgICAgZm9yICh1bnNpZ25l
ZCBpID0gMTsgaSA8IGV4ZWMtPmFyZ3VtZW50Q291bnQoKTsgKytpKSB7CiAgICAgICAgIGFycmF5
LT5wdXREaXJlY3RJbmRleChnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSwgaSAtIDEsIGV4ZWMt
PnVuY2hlY2tlZEFyZ3VtZW50KGkpKTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29w
ZSwgZW5jb2RlZEpTVmFsdWUoKSk7CisgICAgfQogICAgIGdsb2JhbE9iamVjdC0+cHV0RGlyZWN0
KAogICAgICAgICB2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhnbG9iYWxPYmplY3QtPmdsb2Jh
bEV4ZWMoKSwgImFyZ3VtZW50cyIpLCBhcnJheSk7CiAKQEAgLTIxMjQsOCArMjEzMywxMSBAQCBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uUnVuCiAgICAgR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QgPSBHbG9iYWxPYmplY3Q6OmNyZWF0ZSh2bSwgR2xvYmFsT2JqZWN0Ojpj
cmVhdGVTdHJ1Y3R1cmUodm0sIGpzTnVsbCgpKSwgVmVjdG9yPFN0cmluZz4oKSk7CiAKICAgICBK
U0FycmF5KiBhcnJheSA9IGNvbnN0cnVjdEVtcHR5QXJyYXkoZ2xvYmFsT2JqZWN0LT5nbG9iYWxF
eGVjKCksIDApOwotICAgIGZvciAodW5zaWduZWQgaSA9IDE7IGkgPCBleGVjLT5hcmd1bWVudENv
dW50KCk7ICsraSkKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1
ZSgpKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAxOyBpIDwgZXhlYy0+YXJndW1lbnRDb3VudCgp
OyArK2kpIHsKICAgICAgICAgYXJyYXktPnB1dERpcmVjdEluZGV4KGdsb2JhbE9iamVjdC0+Z2xv
YmFsRXhlYygpLCBpIC0gMSwgZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoaSkpOworICAgICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKKyAgICB9CiAgICAg
Z2xvYmFsT2JqZWN0LT5wdXREaXJlY3QoCiAgICAgICAgIHZtLCBJZGVudGlmaWVyOjpmcm9tU3Ry
aW5nKGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpLCAiYXJndW1lbnRzIiksIGFycmF5KTsKIApA
QCAtMjkxNyw2ICsyOTI5LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlv
bkxvYQogICAgIH0pOwogCiAgICAgcHJvbWlzZS0+dGhlbihleGVjLCBudWxscHRyLCBlcnJvckhh
bmRsZXIpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkp
OwogICAgIHZtLmRyYWluTWljcm90YXNrcygpOwogICAgIGlmIChlcnJvcikKICAgICAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0V4Y2VwdGlvbihleGVjLCBzY29wZSwgZXJyb3IpKTsK
QEAgLTI5NTksNiArMjk3Miw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rp
b25DaGUKIAogICAgIFBhcnNlckVycm9yIGVycm9yOwogICAgIGJvb2wgdmFsaWRTeW50YXggPSBj
aGVja01vZHVsZVN5bnRheChleGVjLCBtYWtlU291cmNlKHNvdXJjZSwgeyB9LCBTdHJpbmcoKSwg
VGV4dFBvc2l0aW9uKCksIFNvdXJjZVByb3ZpZGVyU291cmNlVHlwZTo6TW9kdWxlKSwgZXJyb3Ip
OworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAg
IHN0b3BXYXRjaC5zdG9wKCk7CiAKICAgICBpZiAoIXZhbGlkU3ludGF4KQpAQCAtMzA1MSw5ICsz
MDY1LDEyIEBAIHN0YXRpYyBDU3RyaW5nIHZhbHVlV2l0aFR5cGVPZldhc21WYWx1ZSgKIAogc3Rh
dGljIEpTVmFsdWUgYm94KEV4ZWNTdGF0ZSogZXhlYywgVk0mIHZtLCBKU1ZhbHVlIHdhc21WYWx1
ZSkKIHsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9DQVRDSF9TQ09QRSh2bSk7CiAKICAgICBK
U1N0cmluZyogdHlwZSA9IGFzU3RyaW5nKHdhc21WYWx1ZS5nZXQoZXhlYywgbWFrZUlkZW50aWZp
ZXIodm0sICJ0eXBlIikpKTsKKyAgICBBU1NFUlQoIXNjb3BlLmV4Y2VwdGlvbigpKTsKICAgICBK
U1ZhbHVlIHZhbHVlID0gd2FzbVZhbHVlLmdldChleGVjLCBtYWtlSWRlbnRpZmllcih2bSwgInZh
bHVlIikpOworICAgIEFTU0VSVCghc2NvcGUuZXhjZXB0aW9uKCkpOwogCiAgICAgYXV0byB1bmJv
eFN0cmluZyA9IFsmXSAoY29uc3QgY2hhciogaGV4Rm9ybWF0LCBjb25zdCBjaGFyKiBkZWNGb3Jt
YXQsIGF1dG8mIHJlc3VsdCkgewogICAgICAgICBpZiAoIXZhbHVlLmlzU3RyaW5nKCkpCkBAIC0z
MzA4LDEwICszMzI1LDE0IEBAIHN0YXRpYyB2b2lkIGR1bXBFeGNlcHRpb24oR2xvYmFsT2JqZWN0
KiAKICAgICBwcmludGYoIkV4Y2VwdGlvbjogJXNcbiIsIGV4Y2VwdGlvbi50b1dURlN0cmluZyhn
bG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSkudXRmOCgpLmRhdGEoKSk7CiAKICAgICBJZGVudGlm
aWVyIG5hbWVJRCA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcoZ2xvYmFsT2JqZWN0LT5nbG9iYWxF
eGVjKCksICJuYW1lIik7CisgICAgQ0hFQ0tfRVhDRVBUSU9OKCk7CiAgICAgSWRlbnRpZmllciBm
aWxlTmFtZUlEID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhnbG9iYWxPYmplY3QtPmdsb2JhbEV4
ZWMoKSwgInNvdXJjZVVSTCIpOworICAgIENIRUNLX0VYQ0VQVElPTigpOwogICAgIElkZW50aWZp
ZXIgbGluZU51bWJlcklEID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhnbG9iYWxPYmplY3QtPmds
b2JhbEV4ZWMoKSwgImxpbmUiKTsKKyAgICBDSEVDS19FWENFUFRJT04oKTsKICAgICBJZGVudGlm
aWVyIHN0YWNrSUQgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGdsb2JhbE9iamVjdC0+Z2xvYmFs
RXhlYygpLCAic3RhY2siKTsKLSAgICAKKyAgICBDSEVDS19FWENFUFRJT04oKTsKKwogICAgIEpT
VmFsdWUgbmFtZVZhbHVlID0gZXhjZXB0aW9uLmdldChnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMo
KSwgbmFtZUlEKTsKICAgICBDSEVDS19FWENFUFRJT04oKTsKICAgICBKU1ZhbHVlIGZpbGVOYW1l
VmFsdWUgPSBleGNlcHRpb24uZ2V0KGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpLCBmaWxlTmFt
ZUlEKTsKQEAgLTM0MDQsOSArMzQyNSwxMCBAQCBzdGF0aWMgYm9vbCBydW5XaXRoU2NyaXB0cyhH
bG9iYWxPYmplY3QqCiAgICAgICAgICAgICBpZiAoc2NyaXB0c1tpXS5zdHJpY3RNb2RlID09IFNj
cmlwdDo6U3RyaWN0TW9kZTo6U3RyaWN0KQogICAgICAgICAgICAgICAgIHNjcmlwdEJ1ZmZlci5h
cHBlbmQoIlwidXNlIHN0cmljdFwiO1xuIiwgc3RybGVuKCJcInVzZSBzdHJpY3RcIjtcbiIpKTsK
IAotICAgICAgICAgICAgaWYgKGlzTW9kdWxlKQorICAgICAgICAgICAgaWYgKGlzTW9kdWxlKSB7
CiAgICAgICAgICAgICAgICAgcHJvbWlzZSA9IGxvYWRBbmRFdmFsdWF0ZU1vZHVsZShnbG9iYWxP
YmplY3QtPmdsb2JhbEV4ZWMoKSwgZmlsZU5hbWUpOwotICAgICAgICAgICAgZWxzZSB7CisgICAg
ICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoIXNjb3BlLmV4Y2VwdGlvbigpKTsKKyAgICAgICAg
ICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgaWYgKCFmZXRjaFNjcmlwdEZyb21Mb2NhbEZp
bGVTeXN0ZW0oZmlsZU5hbWUsIHNjcmlwdEJ1ZmZlcikpCiAgICAgICAgICAgICAgICAgICAgIHJl
dHVybiBmYWxzZTsgLy8gZmFpbCBlYXJseSBzbyB3ZSBjYW4gY2F0Y2ggbWlzc2luZyBmaWxlcwog
ICAgICAgICAgICAgfQpAQCAtMzQzNCw2ICszNDU2LDcgQEAgc3RhdGljIGJvb2wgcnVuV2l0aFNj
cmlwdHMoR2xvYmFsT2JqZWN0KgogICAgICAgICAgICAgfSk7CiAKICAgICAgICAgICAgIHByb21p
c2UtPnRoZW4oZ2xvYmFsT2JqZWN0LT5nbG9iYWxFeGVjKCksIGZ1bGZpbGxIYW5kbGVyLCByZWpl
Y3RIYW5kbGVyKTsKKyAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKCFzY29wZS5leGNlcHRpb24o
KSk7CiAgICAgICAgICAgICB2bS5kcmFpbk1pY3JvdGFza3MoKTsKICAgICAgICAgfSBlbHNlIHsK
ICAgICAgICAgICAgIE5ha2VkUHRyPEV4Y2VwdGlvbj4gZXZhbHVhdGlvbkV4Y2VwdGlvbjsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>304553</attachid>
            <date>2017-03-15 14:55:15 -0700</date>
            <delta_ts>2017-03-15 14:55:15 -0700</delta_ts>
            <desc>re-based patch for landing: w/ build fix for release builds.</desc>
            <filename>bug-164968.patch</filename>
            <type>text/plain</type>
            <size>7934</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkocmV2aXNpb24gMjE0MDA1KQorKysgU291cmNl
L0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDI4IEBA
CisyMDE3LTAzLTE1ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KKworICAgICAgICBG
aXggZXhjZXB0aW9uIHNjb3BlIHZlcmlmaWNhdGlvbiBmYWlsdXJlcyBpbiBqc2MuY3BwLgorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY0OTY4CisKKyAg
ICAgICAgUmV2aWV3ZWQgYnkgU2FhbSBCYXJhdGkuCisKKyAgICAgICAgKiBqc2MuY3BwOgorICAg
ICAgICAoV1RGOjpDdXN0b21HZXR0ZXI6OmN1c3RvbUdldHRlcik6CisKKyAgICAgICAgKEdsb2Jh
bE9iamVjdDo6bW9kdWxlTG9hZGVyUmVzb2x2ZSk6CisgICAgICAgIChHbG9iYWxPYmplY3Q6Om1v
ZHVsZUxvYWRlckZldGNoKToKKyAgICAgICAgLSBUaGUgb25seSB3YXkgbW9kdWxlcyB3b3VsZCB0
aHJvdyBhbiBleGNlcHRpb24gaXMgaWYgd2UgZW5jb3VudGVyIGFuIE91dE9mTWVtb3J5CisgICAg
ICAgICAgZXJyb3IuICBUaGlzIHNob3VsZCBiZSBleHRyZW1lbHkgcmFyZS4gIEF0IHRoaXMgcG9p
bnQsIEkgZG9uJ3QgdGhpbmsgaXQncyB3b3J0aAorICAgICAgICAgIGRvaW5nIHRoZSBkYW5jZSB0
byBwcm9wYWdhdGUgdGhlIGV4Y2VwdGlvbiB3aGVuIHRoaXMgaGFwcGVucy4gIEluc3RlYWQsIHdl
J2xsCisgICAgICAgICAgc2ltcGx5IGRvIGEgUkVMRUFTRV9BU1NFUlQgdGhhdCB3ZSBkb24ndCBz
ZWUgYW55IGV4Y2VwdGlvbnMgaGVyZS4KKworICAgICAgICAoZnVuY3Rpb25SdW4pOgorICAgICAg
ICAoZnVuY3Rpb25SdW5TdHJpbmcpOgorICAgICAgICAoZnVuY3Rpb25Mb2FkTW9kdWxlKToKKyAg
ICAgICAgKGZ1bmN0aW9uQ2hlY2tNb2R1bGVTeW50YXgpOgorICAgICAgICAoYm94KToKKyAgICAg
ICAgKGR1bXBFeGNlcHRpb24pOgorICAgICAgICAocnVuV2l0aFNjcmlwdHMpOgorCiAyMDE3LTAz
LTE1ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNvbT4KIAogICAgICAgICBGaXggbWlzc2lu
ZyBleGNlcHRpb24gY2hlY2tzIGluIEludGVycHJldGVyLmNwcC4KSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9qc2MuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9q
c2MuY3BwCShyZXZpc2lvbiAyMTQwMDUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvanNjLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzkwLDYgKzM5MCw3IEBAIHByaXZhdGU6CiAgICAgICAgIGlm
ICghdGhpc09iamVjdCkKICAgICAgICAgICAgIHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMs
IHNjb3BlKTsKICAgICAgICAgYm9vbCBzaG91bGRUaHJvdyA9IHRoaXNPYmplY3QtPmdldChleGVj
LCBQcm9wZXJ0eU5hbWUoSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhleGVjLCAic2hvdWxkVGhyb3ci
KSkpLnRvQm9vbGVhbihleGVjKTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29wZSwg
ZW5jb2RlZEpTVmFsdWUoKSk7CiAgICAgICAgIGlmIChzaG91bGRUaHJvdykKICAgICAgICAgICAg
IHJldHVybiB0aHJvd1ZNVHlwZUVycm9yKGV4ZWMsIHNjb3BlKTsKICAgICAgICAgcmV0dXJuIEpT
VmFsdWU6OmVuY29kZShqc051bWJlcigxMDApKTsKQEAgLTE1OTQsNiArMTU5NSw3IEBAIEpTSW50
ZXJuYWxQcm9taXNlKiBHbG9iYWxPYmplY3Q6Om1vZHVsZUwKICAgICBhdXRvIHNjb3BlID0gREVD
TEFSRV9DQVRDSF9TQ09QRSh2bSk7CiAKICAgICBKU0ludGVybmFsUHJvbWlzZURlZmVycmVkKiBk
ZWZlcnJlZCA9IEpTSW50ZXJuYWxQcm9taXNlRGVmZXJyZWQ6OmNyZWF0ZShleGVjLCBnbG9iYWxP
YmplY3QpOworICAgIFJFTEVBU0VfQVNTRVJUKCFzY29wZS5leGNlcHRpb24oKSk7CiAgICAgY29u
c3QgSWRlbnRpZmllciBrZXkgPSBrZXlWYWx1ZS50b1Byb3BlcnR5S2V5KGV4ZWMpOwogICAgIGlm
IChVTkxJS0VMWShzY29wZS5leGNlcHRpb24oKSkpIHsKICAgICAgICAgSlNWYWx1ZSBleGNlcHRp
b24gPSBzY29wZS5leGNlcHRpb24oKTsKQEAgLTE2MjksNyArMTYzMSw5IEBAIEpTSW50ZXJuYWxQ
cm9taXNlKiBHbG9iYWxPYmplY3Q6Om1vZHVsZUwKICAgICBhdXRvIGRpcmVjdG9yeU5hbWUgPSBl
eHRyYWN0RGlyZWN0b3J5TmFtZShyZWZlcnJlci5pbXBsKCkpOwogICAgIGlmICghZGlyZWN0b3J5
TmFtZSkKICAgICAgICAgcmV0dXJuIGRlZmVycmVkLT5yZWplY3QoZXhlYywgY3JlYXRlRXJyb3Io
ZXhlYywgbWFrZVN0cmluZygiQ291bGQgbm90IHJlc29sdmUgdGhlIHJlZmVycmVyIG5hbWUgJyIs
IFN0cmluZyhyZWZlcnJlci5pbXBsKCkpLCAiJy4iKSkpOwotICAgIHJldHVybiBkZWZlcnJlZC0+
cmVzb2x2ZShleGVjLCBqc1N0cmluZyhleGVjLCByZXNvbHZlUGF0aChkaXJlY3RvcnlOYW1lLnZh
bHVlKCksIE1vZHVsZU5hbWUoa2V5LmltcGwoKSkpKSk7CisgICAgYXV0byByZXN1bHQgPSBkZWZl
cnJlZC0+cmVzb2x2ZShleGVjLCBqc1N0cmluZyhleGVjLCByZXNvbHZlUGF0aChkaXJlY3RvcnlO
YW1lLnZhbHVlKCksIE1vZHVsZU5hbWUoa2V5LmltcGwoKSkpKSk7CisgICAgUkVMRUFTRV9BU1NF
UlQoIXNjb3BlLmV4Y2VwdGlvbigpKTsKKyAgICByZXR1cm4gcmVzdWx0OwogfQogCiBzdGF0aWMg
dm9pZCBjb252ZXJ0U2hlYmFuZ1RvSlNDb21tZW50KFZlY3RvcjxjaGFyPiYgYnVmZmVyKQpAQCAt
MTcxNyw3ICsxNzIxLDkgQEAgSlNJbnRlcm5hbFByb21pc2UqIEdsb2JhbE9iamVjdDo6bW9kdWxl
TAogICAgIGlmICghZmV0Y2hNb2R1bGVGcm9tTG9jYWxGaWxlU3lzdGVtKG1vZHVsZUtleSwgdXRm
OCkpCiAgICAgICAgIHJldHVybiBkZWZlcnJlZC0+cmVqZWN0KGV4ZWMsIGNyZWF0ZUVycm9yKGV4
ZWMsIG1ha2VTdHJpbmcoIkNvdWxkIG5vdCBvcGVuIGZpbGUgJyIsIG1vZHVsZUtleSwgIicuIikp
KTsKIAotICAgIHJldHVybiBkZWZlcnJlZC0+cmVzb2x2ZShleGVjLCBKU1NvdXJjZUNvZGU6OmNy
ZWF0ZShleGVjLT52bSgpLCBtYWtlU291cmNlKHN0cmluZ0Zyb21VVEYodXRmOCksIFNvdXJjZU9y
aWdpbiB7IG1vZHVsZUtleSB9LCBtb2R1bGVLZXksIFRleHRQb3NpdGlvbigpLCBTb3VyY2VQcm92
aWRlclNvdXJjZVR5cGU6Ok1vZHVsZSkpKTsKKyAgICBhdXRvIHJlc3VsdCA9IGRlZmVycmVkLT5y
ZXNvbHZlKGV4ZWMsIEpTU291cmNlQ29kZTo6Y3JlYXRlKGV4ZWMtPnZtKCksIG1ha2VTb3VyY2Uo
c3RyaW5nRnJvbVVURih1dGY4KSwgU291cmNlT3JpZ2luIHsgbW9kdWxlS2V5IH0sIG1vZHVsZUtl
eSwgVGV4dFBvc2l0aW9uKCksIFNvdXJjZVByb3ZpZGVyU291cmNlVHlwZTo6TW9kdWxlKSkpOwor
ICAgIFJFTEVBU0VfQVNTRVJUKCFzY29wZS5leGNlcHRpb24oKSk7CisgICAgcmV0dXJuIHJlc3Vs
dDsKIH0KIAogCkBAIC0yMDk0LDggKzIxMDAsMTEgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1Rf
Q0FMTCBmdW5jdGlvblJ1bgogICAgIEdsb2JhbE9iamVjdCogZ2xvYmFsT2JqZWN0ID0gR2xvYmFs
T2JqZWN0OjpjcmVhdGUodm0sIEdsb2JhbE9iamVjdDo6Y3JlYXRlU3RydWN0dXJlKHZtLCBqc051
bGwoKSksIFZlY3RvcjxTdHJpbmc+KCkpOwogCiAgICAgSlNBcnJheSogYXJyYXkgPSBjb25zdHJ1
Y3RFbXB0eUFycmF5KGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpLCAwKTsKLSAgICBmb3IgKHVu
c2lnbmVkIGkgPSAxOyBpIDwgZXhlYy0+YXJndW1lbnRDb3VudCgpOyArK2kpCisgICAgUkVUVVJO
X0lGX0VYQ0VQVElPTihzY29wZSwgZW5jb2RlZEpTVmFsdWUoKSk7CisgICAgZm9yICh1bnNpZ25l
ZCBpID0gMTsgaSA8IGV4ZWMtPmFyZ3VtZW50Q291bnQoKTsgKytpKSB7CiAgICAgICAgIGFycmF5
LT5wdXREaXJlY3RJbmRleChnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSwgaSAtIDEsIGV4ZWMt
PnVuY2hlY2tlZEFyZ3VtZW50KGkpKTsKKyAgICAgICAgUkVUVVJOX0lGX0VYQ0VQVElPTihzY29w
ZSwgZW5jb2RlZEpTVmFsdWUoKSk7CisgICAgfQogICAgIGdsb2JhbE9iamVjdC0+cHV0RGlyZWN0
KAogICAgICAgICB2bSwgSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhnbG9iYWxPYmplY3QtPmdsb2Jh
bEV4ZWMoKSwgImFyZ3VtZW50cyIpLCBhcnJheSk7CiAKQEAgLTIxMjQsOCArMjEzMywxMSBAQCBF
bmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIGZ1bmN0aW9uUnVuCiAgICAgR2xvYmFsT2JqZWN0
KiBnbG9iYWxPYmplY3QgPSBHbG9iYWxPYmplY3Q6OmNyZWF0ZSh2bSwgR2xvYmFsT2JqZWN0Ojpj
cmVhdGVTdHJ1Y3R1cmUodm0sIGpzTnVsbCgpKSwgVmVjdG9yPFN0cmluZz4oKSk7CiAKICAgICBK
U0FycmF5KiBhcnJheSA9IGNvbnN0cnVjdEVtcHR5QXJyYXkoZ2xvYmFsT2JqZWN0LT5nbG9iYWxF
eGVjKCksIDApOwotICAgIGZvciAodW5zaWduZWQgaSA9IDE7IGkgPCBleGVjLT5hcmd1bWVudENv
dW50KCk7ICsraSkKKyAgICBSRVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1
ZSgpKTsKKyAgICBmb3IgKHVuc2lnbmVkIGkgPSAxOyBpIDwgZXhlYy0+YXJndW1lbnRDb3VudCgp
OyArK2kpIHsKICAgICAgICAgYXJyYXktPnB1dERpcmVjdEluZGV4KGdsb2JhbE9iamVjdC0+Z2xv
YmFsRXhlYygpLCBpIC0gMSwgZXhlYy0+dW5jaGVja2VkQXJndW1lbnQoaSkpOworICAgICAgICBS
RVRVUk5fSUZfRVhDRVBUSU9OKHNjb3BlLCBlbmNvZGVkSlNWYWx1ZSgpKTsKKyAgICB9CiAgICAg
Z2xvYmFsT2JqZWN0LT5wdXREaXJlY3QoCiAgICAgICAgIHZtLCBJZGVudGlmaWVyOjpmcm9tU3Ry
aW5nKGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpLCAiYXJndW1lbnRzIiksIGFycmF5KTsKIApA
QCAtMjkxNyw2ICsyOTI5LDcgQEAgRW5jb2RlZEpTVmFsdWUgSlNDX0hPU1RfQ0FMTCBmdW5jdGlv
bkxvYQogICAgIH0pOwogCiAgICAgcHJvbWlzZS0+dGhlbihleGVjLCBudWxscHRyLCBlcnJvckhh
bmRsZXIpOworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkp
OwogICAgIHZtLmRyYWluTWljcm90YXNrcygpOwogICAgIGlmIChlcnJvcikKICAgICAgICAgcmV0
dXJuIEpTVmFsdWU6OmVuY29kZSh0aHJvd0V4Y2VwdGlvbihleGVjLCBzY29wZSwgZXJyb3IpKTsK
QEAgLTI5NTksNiArMjk3Miw3IEBAIEVuY29kZWRKU1ZhbHVlIEpTQ19IT1NUX0NBTEwgZnVuY3Rp
b25DaGUKIAogICAgIFBhcnNlckVycm9yIGVycm9yOwogICAgIGJvb2wgdmFsaWRTeW50YXggPSBj
aGVja01vZHVsZVN5bnRheChleGVjLCBtYWtlU291cmNlKHNvdXJjZSwgeyB9LCBTdHJpbmcoKSwg
VGV4dFBvc2l0aW9uKCksIFNvdXJjZVByb3ZpZGVyU291cmNlVHlwZTo6TW9kdWxlKSwgZXJyb3Ip
OworICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIGVuY29kZWRKU1ZhbHVlKCkpOwogICAg
IHN0b3BXYXRjaC5zdG9wKCk7CiAKICAgICBpZiAoIXZhbGlkU3ludGF4KQpAQCAtMzA1MSw5ICsz
MDY1LDEyIEBAIHN0YXRpYyBDU3RyaW5nIHZhbHVlV2l0aFR5cGVPZldhc21WYWx1ZSgKIAogc3Rh
dGljIEpTVmFsdWUgYm94KEV4ZWNTdGF0ZSogZXhlYywgVk0mIHZtLCBKU1ZhbHVlIHdhc21WYWx1
ZSkKIHsKKyAgICBhdXRvIHNjb3BlID0gREVDTEFSRV9DQVRDSF9TQ09QRSh2bSk7CiAKICAgICBK
U1N0cmluZyogdHlwZSA9IGFzU3RyaW5nKHdhc21WYWx1ZS5nZXQoZXhlYywgbWFrZUlkZW50aWZp
ZXIodm0sICJ0eXBlIikpKTsKKyAgICBBU1NFUlRfVU5VU0VEKHNjb3BlLCAhc2NvcGUuZXhjZXB0
aW9uKCkpOwogICAgIEpTVmFsdWUgdmFsdWUgPSB3YXNtVmFsdWUuZ2V0KGV4ZWMsIG1ha2VJZGVu
dGlmaWVyKHZtLCAidmFsdWUiKSk7CisgICAgQVNTRVJUKCFzY29wZS5leGNlcHRpb24oKSk7CiAK
ICAgICBhdXRvIHVuYm94U3RyaW5nID0gWyZdIChjb25zdCBjaGFyKiBoZXhGb3JtYXQsIGNvbnN0
IGNoYXIqIGRlY0Zvcm1hdCwgYXV0byYgcmVzdWx0KSB7CiAgICAgICAgIGlmICghdmFsdWUuaXNT
dHJpbmcoKSkKQEAgLTMzMDgsMTAgKzMzMjUsMTQgQEAgc3RhdGljIHZvaWQgZHVtcEV4Y2VwdGlv
bihHbG9iYWxPYmplY3QqIAogICAgIHByaW50ZigiRXhjZXB0aW9uOiAlc1xuIiwgZXhjZXB0aW9u
LnRvV1RGU3RyaW5nKGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpKS51dGY4KCkuZGF0YSgpKTsK
IAogICAgIElkZW50aWZpZXIgbmFtZUlEID0gSWRlbnRpZmllcjo6ZnJvbVN0cmluZyhnbG9iYWxP
YmplY3QtPmdsb2JhbEV4ZWMoKSwgIm5hbWUiKTsKKyAgICBDSEVDS19FWENFUFRJT04oKTsKICAg
ICBJZGVudGlmaWVyIGZpbGVOYW1lSUQgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGdsb2JhbE9i
amVjdC0+Z2xvYmFsRXhlYygpLCAic291cmNlVVJMIik7CisgICAgQ0hFQ0tfRVhDRVBUSU9OKCk7
CiAgICAgSWRlbnRpZmllciBsaW5lTnVtYmVySUQgPSBJZGVudGlmaWVyOjpmcm9tU3RyaW5nKGds
b2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpLCAibGluZSIpOworICAgIENIRUNLX0VYQ0VQVElPTigp
OwogICAgIElkZW50aWZpZXIgc3RhY2tJRCA9IElkZW50aWZpZXI6OmZyb21TdHJpbmcoZ2xvYmFs
T2JqZWN0LT5nbG9iYWxFeGVjKCksICJzdGFjayIpOwotICAgIAorICAgIENIRUNLX0VYQ0VQVElP
TigpOworCiAgICAgSlNWYWx1ZSBuYW1lVmFsdWUgPSBleGNlcHRpb24uZ2V0KGdsb2JhbE9iamVj
dC0+Z2xvYmFsRXhlYygpLCBuYW1lSUQpOwogICAgIENIRUNLX0VYQ0VQVElPTigpOwogICAgIEpT
VmFsdWUgZmlsZU5hbWVWYWx1ZSA9IGV4Y2VwdGlvbi5nZXQoZ2xvYmFsT2JqZWN0LT5nbG9iYWxF
eGVjKCksIGZpbGVOYW1lSUQpOwpAQCAtMzQwNCw5ICszNDI1LDEwIEBAIHN0YXRpYyBib29sIHJ1
bldpdGhTY3JpcHRzKEdsb2JhbE9iamVjdCoKICAgICAgICAgICAgIGlmIChzY3JpcHRzW2ldLnN0
cmljdE1vZGUgPT0gU2NyaXB0OjpTdHJpY3RNb2RlOjpTdHJpY3QpCiAgICAgICAgICAgICAgICAg
c2NyaXB0QnVmZmVyLmFwcGVuZCgiXCJ1c2Ugc3RyaWN0XCI7XG4iLCBzdHJsZW4oIlwidXNlIHN0
cmljdFwiO1xuIikpOwogCi0gICAgICAgICAgICBpZiAoaXNNb2R1bGUpCisgICAgICAgICAgICBp
ZiAoaXNNb2R1bGUpIHsKICAgICAgICAgICAgICAgICBwcm9taXNlID0gbG9hZEFuZEV2YWx1YXRl
TW9kdWxlKGdsb2JhbE9iamVjdC0+Z2xvYmFsRXhlYygpLCBmaWxlTmFtZSk7Ci0gICAgICAgICAg
ICBlbHNlIHsKKyAgICAgICAgICAgICAgICBSRUxFQVNFX0FTU0VSVCghc2NvcGUuZXhjZXB0aW9u
KCkpOworICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICBpZiAoIWZldGNoU2Ny
aXB0RnJvbUxvY2FsRmlsZVN5c3RlbShmaWxlTmFtZSwgc2NyaXB0QnVmZmVyKSkKICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOyAvLyBmYWlsIGVhcmx5IHNvIHdlIGNhbiBjYXRjaCBt
aXNzaW5nIGZpbGVzCiAgICAgICAgICAgICB9CkBAIC0zNDM0LDYgKzM0NTYsNyBAQCBzdGF0aWMg
Ym9vbCBydW5XaXRoU2NyaXB0cyhHbG9iYWxPYmplY3QqCiAgICAgICAgICAgICB9KTsKIAogICAg
ICAgICAgICAgcHJvbWlzZS0+dGhlbihnbG9iYWxPYmplY3QtPmdsb2JhbEV4ZWMoKSwgZnVsZmls
bEhhbmRsZXIsIHJlamVjdEhhbmRsZXIpOworICAgICAgICAgICAgUkVMRUFTRV9BU1NFUlQoIXNj
b3BlLmV4Y2VwdGlvbigpKTsKICAgICAgICAgICAgIHZtLmRyYWluTWljcm90YXNrcygpOwogICAg
ICAgICB9IGVsc2UgewogICAgICAgICAgICAgTmFrZWRQdHI8RXhjZXB0aW9uPiBldmFsdWF0aW9u
RXhjZXB0aW9uOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>