<?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>171404</bug_id>
          
          <creation_ts>2017-04-27 16:29:38 -0700</creation_ts>
          <short_desc>Fix some RELEASE_ASSERT failures caused by OutOfMemoryErrors.</short_desc>
          <delta_ts>2017-05-01 15:24:35 -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>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=171516</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Mark Lam">mark.lam</reporter>
          <assigned_to name="Mark Lam">mark.lam</assigned_to>
          <cc>fpizlo</cc>
    
    <cc>jfbastien</cc>
    
    <cc>keith_miller</cc>
    
    <cc>msaboff</cc>
    
    <cc>saam</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1302381</commentid>
    <comment_count>0</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2017-04-27 16:29:38 -0700</bug_when>
    <thetext>Patch coming.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1302382</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2017-04-27 16:30:20 -0700</bug_when>
    <thetext>&lt;rdar://problem/31876178&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1302411</commentid>
    <comment_count>2</comment_count>
      <attachid>308483</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2017-04-27 17:03:41 -0700</bug_when>
    <thetext>Created attachment 308483
proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1302413</commentid>
    <comment_count>3</comment_count>
      <attachid>308483</attachid>
    <who name="JF Bastien">jfbastien</who>
    <bug_when>2017-04-27 17:15:01 -0700</bug_when>
    <thetext>Comment on attachment 308483
proposed patch.

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

&gt; Source/JavaScriptCore/runtime/JSCInlines.h:2
&gt; + * Copyright (C) 2014-2017 Apple Inc. All rights reserved.

Is that legit? I though commas delimited a break, and dashes a range, so you&apos;re adding 2015 in there as a date where work was performed along with 2017.

&gt; Source/JavaScriptCore/runtime/JSCellInlines.h:145
&gt; +template&lt;typename T, bool assertOnFailure, bool takesDeferralContext&gt;

I like having enum classes instead of bools.

&gt; Source/JavaScriptCore/runtime/JSGlobalObject.h:3
&gt; + *  Copyright (C) 2007-2017 Apple Inc. All rights reserved.

Ditto.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1302417</commentid>
    <comment_count>4</comment_count>
      <attachid>308483</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2017-04-27 17:26:02 -0700</bug_when>
    <thetext>Comment on attachment 308483
proposed patch.

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

&gt;&gt; Source/JavaScriptCore/runtime/JSCInlines.h:2
&gt;&gt; + * Copyright (C) 2014-2017 Apple Inc. All rights reserved.
&gt; 
&gt; Is that legit? I though commas delimited a break, and dashes a range, so you&apos;re adding 2015 in there as a date where work was performed along with 2017.

Yes, we&apos;ve been told to do it this way now.  My understanding of it is that we&apos;ve always held the copyright for the file even if we didn&apos;t modify it in those tween years.

&gt;&gt; Source/JavaScriptCore/runtime/JSCellInlines.h:145
&gt;&gt; +template&lt;typename T, bool assertOnFailure, bool takesDeferralContext&gt;
&gt; 
&gt; I like having enum classes instead of bools.

Will apply enum classes to placate you.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1302419</commentid>
    <comment_count>5</comment_count>
      <attachid>308484</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2017-04-27 17:27:54 -0700</bug_when>
    <thetext>Created attachment 308484
proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1302429</commentid>
    <comment_count>6</comment_count>
      <attachid>308484</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-04-27 18:07:41 -0700</bug_when>
    <thetext>Comment on attachment 308484
proposed patch.

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

&gt; Source/JavaScriptCore/runtime/JSCellInlines.h:146
&gt; +template&lt;typename T, AllocationFailureMode mode, GCDeferralContextArgPresense deferralContextArgPresence&gt;
&gt; +void* tryAllocateCellHelper(Heap&amp; heap, GCDeferralContext* deferralContext, size_t size)

I would mark this as ALWAYS_INLINE

&gt; Source/JavaScriptCore/runtime/JSFixedArray.h:47
&gt;      ALWAYS_INLINE static JSFixedArray* createFromArray(ExecState* exec, VM&amp; vm, JSArray* array)
&gt;      {

The caller of this from operationMaterializeObjectInOSR is not OK w/ returning nullptr here. Please fix to make that release assert.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1302469</commentid>
    <comment_count>7</comment_count>
      <attachid>308484</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2017-04-27 21:02:40 -0700</bug_when>
    <thetext>Comment on attachment 308484
proposed patch.

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

Thanks for the review.

&gt;&gt; Source/JavaScriptCore/runtime/JSCellInlines.h:146
&gt;&gt; +void* tryAllocateCellHelper(Heap&amp; heap, GCDeferralContext* deferralContext, size_t size)
&gt; 
&gt; I would mark this as ALWAYS_INLINE

Fixed.

&gt;&gt; Source/JavaScriptCore/runtime/JSFixedArray.h:47
&gt;&gt;      {
&gt; 
&gt; The caller of this from operationMaterializeObjectInOSR is not OK w/ returning nullptr here. Please fix to make that release assert.

I did.  See above diff in FTLOperations.cpp.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1302474</commentid>
    <comment_count>8</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2017-04-27 21:16:40 -0700</bug_when>
    <thetext>Landed in r215919: &lt;http://trac.webkit.org/r215919&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1302489</commentid>
    <comment_count>9</comment_count>
      <attachid>308484</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2017-04-27 21:57:25 -0700</bug_when>
    <thetext>Comment on attachment 308484
proposed patch.

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

&gt;&gt;&gt; Source/JavaScriptCore/runtime/JSFixedArray.h:47
&gt;&gt;&gt;      {
&gt;&gt; 
&gt;&gt; The caller of this from operationMaterializeObjectInOSR is not OK w/ returning nullptr here. Please fix to make that release assert.
&gt; 
&gt; I did.  See above diff in FTLOperations.cpp.

👍🏽. I missed that when reading the code.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>308483</attachid>
            <date>2017-04-27 17:03:41 -0700</date>
            <delta_ts>2017-04-27 17:27:54 -0700</delta_ts>
            <desc>proposed patch.</desc>
            <filename>bug-171404.patch</filename>
            <type>text/plain</type>
            <size>13375</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IEpTVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyMTU5MDQpCisrKyBKU1Rlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDEzIEBACisyMDE3LTA0LTI3ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNv
bT4KKworICAgICAgICBGaXggc29tZSBSRUxFQVNFX0FTU0VSVCBmYWlsdXJlcyBjYXVzZWQgYnkg
T3V0T2ZNZW1vcnlFcnJvcnMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNzE0MDQKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzMxODc2MTc4PgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogc3RyZXNzL2pz
LWZpeGVkLWFycmF5LW91dC1vZi1tZW1vcnkuanM6IEFkZGVkLgorCiAyMDE3LTA0LTI3ICBEYXZp
ZCBLaWx6ZXIgIDxkZGtpbHplckBhcHBsZS5jb20+CiAKICAgICAgICAgRW5oYW5jZSBzaG91bGRC
ZSgpL3Nob3VsZE5vdEJlKCkgdG8gYWNjZXB0IGFub255bW91cyBmdW5jdGlvbiBhcmd1bWVudHMK
SW5kZXg6IEpTVGVzdHMvc3RyZXNzL2pzLWZpeGVkLWFycmF5LW91dC1vZi1tZW1vcnkuanMKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gSlNUZXN0cy9zdHJlc3MvanMtZml4ZWQtYXJyYXktb3V0LW9mLW1lbW9yeS5q
cwkobm9uZXhpc3RlbnQpCisrKyBKU1Rlc3RzL3N0cmVzcy9qcy1maXhlZC1hcnJheS1vdXQtb2Yt
bWVtb3J5LmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMjUgQEAKKy8vQCBpZiAkYnVpbGRU
eXBlID09ICJkZWJ1ZyIgdGhlbiBydW5EZWZhdWx0KCItLW1heFNpbmdsZUFsbG9jYXRpb25TaXpl
PTEwNDg1NzYiKSBlbHNlIHNraXAgZW5kCisKK3ZhciBleGNlcHRpb247CisKK2Z1bmN0aW9uIGZv
bygpIHsgfTsKKworZnVuY3Rpb24gdGVzdChsZW5ndGgpIHsKKyAgICB0cnkgeworICAgICAgICBm
b28oWy4uLm5ldyBBcnJheShsZW5ndGgpXS5maWx0ZXIoKCkgPT4geyB9KSk7CisgICAgfSBjYXRj
aCAoZSkgeworICAgICAgICBleGNlcHRpb24gPSBlOworICAgIH0KKworICAgIGlmIChleGNlcHRp
b24gJiYgZXhjZXB0aW9uICE9ICJFcnJvcjogT3V0IG9mIG1lbW9yeSIpCisgICAgICAgIHRocm93
ICJFUlJPUjogbGVuZ3RoICIgKyBsZW5ndGggKyAiOiB1bmV4cGVjdGVkIGV4Y2VwdGlvbiAiICsg
ZXhjZXB0aW9uOworfQorCit2YXIgc2l6ZXMgPSBbCisgICAgMSwgMTAsIDUwLCAxMDAsIDUwMCwg
MTAwMCwgNTAwMCwgMTAwMDAsIDUwMDAwLCAxMDAwMDAsIDUwMDAwMCwKKyAgICAxMDAwMDAwLCA1
MDAwMDAwLCAxMDAwMDAwMCwgNTAwMDAwMDAsIDEwMDAwMDAwMCwgNTAwMDAwMDAwLCAxMDAwMDAw
MDAwCitdOworCitmb3IgKHNpemUgb2Ygc2l6ZXMpCisgICAgdGVzdChzaXplKTsKKwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMTU4OTUpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzUgQEAKKzIwMTct
MDQtMjcgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgorCisgICAgICAgIEZpeCBzb21l
IFJFTEVBU0VfQVNTRVJUIGZhaWx1cmVzIGNhdXNlZCBieSBPdXRPZk1lbW9yeUVycm9ycy4KKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MTQwNAorICAg
ICAgICA8cmRhcjovL3Byb2JsZW0vMzE4NzYxNzg+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgMS4gQWRkZWQgc29tZSB0cnlBbGxvY2F0ZSgpIGZ1bmN0
aW9ucyBpbiBKU0NlbGxJbmxpbmVzLmguCisgICAgICAgIDIuIENvbnNvbGlkYXRlZCB0aGUgaW1w
bGVtZW50YXRpb25zIG9mIGFsbG9jYXRlQ2VsbCgpIHRlbXBsYXRlIGZ1bmN0aW9ucyBpbnRvIGEK
KyAgICAgICAgICAgc2luZ2xlIHRyeUFsbG9jYXRlQ2VsbEhlbHBlcigpIHRvIHJlZHVjZSByZWR1
bmRhbmN5IGFuZCBlbGltaW5hdGUgbmVlZGluZyB0bworICAgICAgICAgICBjb3B5LXBhc3RlIGZv
ciB2YXJpYXRpb25zIG9mIGFsbG9jYXRlQ2VsbCBhbmQgdHJ5QWxsb2NhdGVDZWxsLgorICAgICAg
ICAzLiBDaGFuZ2VkIEpTRml4ZWRBcnJheTo6Y3JlYXRlRnJvbUFycmF5KCkgYW5kIGNvbnN0cnVj
dEVtcHR5QXJyYXkoKSB0byBjaGVjayBmb3IKKyAgICAgICAgICAgYWxsb2NhdGlvbiBmYWlsdXJl
IGFuZCB0aHJvdyBhbiBPdXRPZk1lbW9yeUVycm9yLiAgSXQgd2FzIGFscmVhZHkgcG9zc2libGUg
dG8KKyAgICAgICAgICAgdGhyb3cgZXJyb3JzIGZyb20gdGhlc2UgZnVuY3Rpb25zIGZvciBvdGhl
ciByZWFzb25zLiAgU28sIHRoZWlyIGNsaWVudHMgYXJlCisgICAgICAgICAgIGFscmVhZHkgcmVh
ZHkgdG8gaGFuZGxlIE9PTUVzLgorCisgICAgICAgICogZnRsL0ZUTE9wZXJhdGlvbnMuY3BwOgor
ICAgICAgICAoSlNDOjpGVEw6Om9wZXJhdGlvbk1hdGVyaWFsaXplT2JqZWN0SW5PU1IpOgorICAg
ICAgICAqIHJ1bnRpbWUvSlNDSW5saW5lcy5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNDZWxsLmg6
CisgICAgICAgICogcnVudGltZS9KU0NlbGxJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OnRyeUFs
bG9jYXRlQ2VsbEhlbHBlcik6CisgICAgICAgIChKU0M6OmFsbG9jYXRlQ2VsbCk6CisgICAgICAg
IChKU0M6OnRyeUFsbG9jYXRlQ2VsbCk6CisgICAgICAgICogcnVudGltZS9KU0ZpeGVkQXJyYXku
aDoKKyAgICAgICAgKEpTQzo6SlNGaXhlZEFycmF5OjpjcmVhdGVGcm9tQXJyYXkpOgorICAgICAg
ICAoSlNDOjpKU0ZpeGVkQXJyYXk6OnRyeUNyZWF0ZSk6CisgICAgICAgIChKU0M6OkpTRml4ZWRB
cnJheTo6Y3JlYXRlKTogRGVsZXRlZC4KKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0
Lmg6CisgICAgICAgIChKU0M6OmNvbnN0cnVjdEVtcHR5QXJyYXkpOgorCiAyMDE3LTA0LTI3ICBT
YWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgogCiAgICAgICAgIFJlc3RvcmUgc29tZSBj
YWNoaW5nIGZ1bmN0aW9uYWxpdHkgdGhhdCBnb3QgYWNjaWRlbnRhbGx5IHJlbW92ZWQgd2hlbiBk
b2luZyBXYXNtIFBJQyBwYXRjaGVzCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZU
TE9wZXJhdGlvbnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwv
RlRMT3BlcmF0aW9ucy5jcHAJKHJldmlzaW9uIDIxNTg5NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9mdGwvRlRMT3BlcmF0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQzMiw2ICs0MzIs
NyBAQCBleHRlcm4gIkMiIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpCiAgICAgICAgIC8v
IHRoYXQgd2Ugb25seSBzdXBwb3J0IFBoYW50b21TcHJlYWQgb3ZlciBDcmVhdGVSZXN0LCB3aGlj
aCBpcyBhbiBhcnJheSB3ZSBjcmVhdGUuCiAgICAgICAgIC8vIEFueSBhdHRlbXB0cyB0byBwdXQg
YSBnZXR0ZXIgb24gYW55IGluZGljZXMgb24gdGhlIHJlc3QgYXJyYXkgd2lsbCBlc2NhcGUgdGhl
IGFycmF5LgogICAgICAgICBKU0ZpeGVkQXJyYXkqIGZpeGVkQXJyYXkgPSBKU0ZpeGVkQXJyYXk6
OmNyZWF0ZUZyb21BcnJheShleGVjLCB2bSwgYXJyYXkpOworICAgICAgICBSRUxFQVNFX0FTU0VS
VChmaXhlZEFycmF5KTsKICAgICAgICAgcmV0dXJuIGZpeGVkQXJyYXk7CiAgICAgfQogCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NJbmxpbmVzLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSW5saW5lcy5oCShyZXZpc2lvbiAy
MTU4OTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NJbmxpbmVzLmgJKHdv
cmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE0LCAy
MDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAx
NC0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpAQCAtNDIsNiArNDIsNyBAQAogI2luY2x1ZGUgIklkZW50aWZpZXJJbmxp
bmVzLmgiCiAjaW5jbHVkZSAiSlNBcnJheUJ1ZmZlclZpZXdJbmxpbmVzLmgiCiAjaW5jbHVkZSAi
SlNDSlNWYWx1ZUlubGluZXMuaCIKKyNpbmNsdWRlICJKU0NlbGxJbmxpbmVzLmgiCiAjaW5jbHVk
ZSAiSlNGdW5jdGlvbklubGluZXMuaCIKICNpbmNsdWRlICJKU0dsb2JhbE9iamVjdElubGluZXMu
aCIKICNpbmNsdWRlICJKU09iamVjdElubGluZXMuaCIKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTQ2VsbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTQ2VsbC5oCShyZXZpc2lvbiAyMTU4OTUpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0NlbGwuaAkod29ya2luZyBjb3B5KQpAQCAtNTAsMTEgKzUwLDEwIEBA
IGNsYXNzIFByb3BlcnR5RGVzY3JpcHRvcjsKIGNsYXNzIFByb3BlcnR5TmFtZUFycmF5OwogY2xh
c3MgU3RydWN0dXJlOwogCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPiB2b2lkKiBhbGxvY2F0ZUNlbGwo
SGVhcCYpOwotdGVtcGxhdGU8dHlwZW5hbWUgVD4gdm9pZCogYWxsb2NhdGVDZWxsKEhlYXAmLCBz
aXplX3QpOwotCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPiB2b2lkKiBhbGxvY2F0ZUNlbGwoSGVhcCYs
IEdDRGVmZXJyYWxDb250ZXh0Kik7Ci10ZW1wbGF0ZTx0eXBlbmFtZSBUPiB2b2lkKiBhbGxvY2F0
ZUNlbGwoSGVhcCYsIEdDRGVmZXJyYWxDb250ZXh0Kiwgc2l6ZV90KTsKK3RlbXBsYXRlPHR5cGVu
YW1lIFQ+IHZvaWQqIGFsbG9jYXRlQ2VsbChIZWFwJiwgc2l6ZV90ID0gc2l6ZW9mKFQpKTsKK3Rl
bXBsYXRlPHR5cGVuYW1lIFQ+IHZvaWQqIHRyeUFsbG9jYXRlQ2VsbChIZWFwJiwgc2l6ZV90ID0g
c2l6ZW9mKFQpKTsKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IHZvaWQqIGFsbG9jYXRlQ2VsbChIZWFw
JiwgR0NEZWZlcnJhbENvbnRleHQqLCBzaXplX3QgPSBzaXplb2YoVCkpOwordGVtcGxhdGU8dHlw
ZW5hbWUgVD4gdm9pZCogdHJ5QWxsb2NhdGVDZWxsKEhlYXAmLCBHQ0RlZmVycmFsQ29udGV4dCos
IHNpemVfdCA9IHNpemVvZihUKSk7CiAKICNkZWZpbmUgREVDTEFSRV9FWFBPUlRfSU5GTyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICAgIHByb3Rl
Y3RlZDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBcCkBAIC03MSwxMCArNzAsOCBAQCB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiB2b2lk
KiBhbGxvY2F0ZUNlbGwoCiBjbGFzcyBKU0NlbGwgOiBwdWJsaWMgSGVhcENlbGwgewogICAgIGZy
aWVuZCBjbGFzcyBKU1ZhbHVlOwogICAgIGZyaWVuZCBjbGFzcyBNYXJrZWRCbG9jazsKLSAgICB0
ZW1wbGF0ZTx0eXBlbmFtZSBUPiBmcmllbmQgdm9pZCogYWxsb2NhdGVDZWxsKEhlYXAmKTsKLSAg
ICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBmcmllbmQgdm9pZCogYWxsb2NhdGVDZWxsKEhlYXAmLCBz
aXplX3QpOwotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGZyaWVuZCB2b2lkKiBhbGxvY2F0ZUNl
bGwoSGVhcCYsIEdDRGVmZXJyYWxDb250ZXh0Kik7Ci0gICAgdGVtcGxhdGU8dHlwZW5hbWUgVD4g
ZnJpZW5kIHZvaWQqIGFsbG9jYXRlQ2VsbChIZWFwJiwgR0NEZWZlcnJhbENvbnRleHQqLCBzaXpl
X3QpOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIGJvb2wsIGJvb2w+CisgICAgZnJpZW5kIHZv
aWQqIHRyeUFsbG9jYXRlQ2VsbEhlbHBlcihIZWFwJiwgR0NEZWZlcnJhbENvbnRleHQqLCBzaXpl
X3QpOwogCiBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIFN0cnVjdHVyZUZsYWdz
ID0gMDsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbElubGluZXMu
aAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NlbGxJbmxp
bmVzLmgJKHJldmlzaW9uIDIxNTg5NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L0pTQ2VsbElubGluZXMuaAkod29ya2luZyBjb3B5KQpAQCAtMTQyLDEyICsxNDIsMjMgQEAgU3Vi
c3BhY2UqIEpTQ2VsbDo6c3Vic3BhY2VGb3IoVk0mIHZtKQogICAgIHJldHVybiAmdm0uY2VsbFNw
YWNlOwogfQogCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPgotdm9pZCogYWxsb2NhdGVDZWxsKEhlYXAm
IGhlYXAsIHNpemVfdCBzaXplKQordGVtcGxhdGU8dHlwZW5hbWUgVCwgYm9vbCBhc3NlcnRPbkZh
aWx1cmUsIGJvb2wgdGFrZXNEZWZlcnJhbENvbnRleHQ+Cit2b2lkKiB0cnlBbGxvY2F0ZUNlbGxI
ZWxwZXIoSGVhcCYgaGVhcCwgR0NEZWZlcnJhbENvbnRleHQqIGRlZmVycmFsQ29udGV4dCwgc2l6
ZV90IHNpemUpCiB7Ci0gICAgQVNTRVJUKCFEaXNhbGxvd0dDOjppc0luRWZmZWN0T25DdXJyZW50
VGhyZWFkKCkpOworICAgIEFTU0VSVChkZWZlcnJhbENvbnRleHQgfHwgIURpc2FsbG93R0M6Omlz
SW5FZmZlY3RPbkN1cnJlbnRUaHJlYWQoKSk7CiAgICAgQVNTRVJUKHNpemUgPj0gc2l6ZW9mKFQp
KTsKLSAgICBKU0NlbGwqIHJlc3VsdCA9IHN0YXRpY19jYXN0PEpTQ2VsbCo+KHN1YnNwYWNlRm9y
PFQ+KCpoZWFwLnZtKCkpLT5hbGxvY2F0ZShzaXplKSk7CisgICAgSlNDZWxsKiByZXN1bHQ7Cisg
ICAgaWYgKGFzc2VydE9uRmFpbHVyZSkgeworICAgICAgICByZXN1bHQgPSB0YWtlc0RlZmVycmFs
Q29udGV4dAorICAgICAgICAgICAgPyBzdGF0aWNfY2FzdDxKU0NlbGwqPihzdWJzcGFjZUZvcjxU
PigqaGVhcC52bSgpKS0+YWxsb2NhdGUoZGVmZXJyYWxDb250ZXh0LCBzaXplKSkKKyAgICAgICAg
ICAgIDogc3RhdGljX2Nhc3Q8SlNDZWxsKj4oc3Vic3BhY2VGb3I8VD4oKmhlYXAudm0oKSktPmFs
bG9jYXRlKHNpemUpKTsKKyAgICB9IGVsc2UgeworICAgICAgICByZXN1bHQgPSB0YWtlc0RlZmVy
cmFsQ29udGV4dAorICAgICAgICAgICAgPyBzdGF0aWNfY2FzdDxKU0NlbGwqPihzdWJzcGFjZUZv
cjxUPigqaGVhcC52bSgpKS0+dHJ5QWxsb2NhdGUoZGVmZXJyYWxDb250ZXh0LCBzaXplKSkKKyAg
ICAgICAgICAgIDogc3RhdGljX2Nhc3Q8SlNDZWxsKj4oc3Vic3BhY2VGb3I8VD4oKmhlYXAudm0o
KSktPnRyeUFsbG9jYXRlKHNpemUpKTsKKyAgICAgICAgaWYgKFVOTElLRUxZKCFyZXN1bHQpKQor
ICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQogI2lmIEVOQUJMRShHQ19WQUxJREFU
SU9OKQogICAgIEFTU0VSVCghaGVhcC52bSgpLT5pc0luaXRpYWxpemluZ09iamVjdCgpKTsKICAg
ICBoZWFwLnZtKCktPnNldEluaXRpYWxpemluZ09iamVjdENsYXNzKFQ6OmluZm8oKSk7CkBAIC0x
NTUsMzIgKzE2NiwzOSBAQCB2b2lkKiBhbGxvY2F0ZUNlbGwoSGVhcCYgaGVhcCwgc2l6ZV90IHNp
CiAgICAgcmVzdWx0LT5jbGVhclN0cnVjdHVyZSgpOwogICAgIHJldHVybiByZXN1bHQ7CiB9Ci0g
ICAgCisKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+Cit2b2lkKiBhbGxvY2F0ZUNlbGwoSGVhcCYgaGVh
cCwgc2l6ZV90IHNpemUpCit7CisgICAgc3RhdGljIGNvbnN0IGJvb2wgYXNzZXJ0T25GYWlsdXJl
ID0gdHJ1ZTsKKyAgICBzdGF0aWMgY29uc3QgYm9vbCB0YWtlc0RlZmVycmFsQ29udGV4dCA9IGZh
bHNlOworICAgIHJldHVybiB0cnlBbGxvY2F0ZUNlbGxIZWxwZXI8VCwgYXNzZXJ0T25GYWlsdXJl
LCB0YWtlc0RlZmVycmFsQ29udGV4dD4oaGVhcCwgbnVsbHB0ciwgc2l6ZSk7Cit9CisKIHRlbXBs
YXRlPHR5cGVuYW1lIFQ+Ci12b2lkKiBhbGxvY2F0ZUNlbGwoSGVhcCYgaGVhcCkKK3ZvaWQqIHRy
eUFsbG9jYXRlQ2VsbChIZWFwJiBoZWFwLCBzaXplX3Qgc2l6ZSkKIHsKLSAgICByZXR1cm4gYWxs
b2NhdGVDZWxsPFQ+KGhlYXAsIHNpemVvZihUKSk7CisgICAgc3RhdGljIGNvbnN0IGJvb2wgYXNz
ZXJ0T25GYWlsdXJlID0gZmFsc2U7CisgICAgc3RhdGljIGNvbnN0IGJvb2wgdGFrZXNEZWZlcnJh
bENvbnRleHQgPSBmYWxzZTsKKyAgICByZXR1cm4gdHJ5QWxsb2NhdGVDZWxsSGVscGVyPFQsIGFz
c2VydE9uRmFpbHVyZSwgdGFrZXNEZWZlcnJhbENvbnRleHQ+KGhlYXAsIG51bGxwdHIsIHNpemUp
OwogfQotICAgIAorCiB0ZW1wbGF0ZTx0eXBlbmFtZSBUPgogdm9pZCogYWxsb2NhdGVDZWxsKEhl
YXAmIGhlYXAsIEdDRGVmZXJyYWxDb250ZXh0KiBkZWZlcnJhbENvbnRleHQsIHNpemVfdCBzaXpl
KQogewotICAgIEFTU0VSVChzaXplID49IHNpemVvZihUKSk7Ci0gICAgSlNDZWxsKiByZXN1bHQg
PSBzdGF0aWNfY2FzdDxKU0NlbGwqPihzdWJzcGFjZUZvcjxUPigqaGVhcC52bSgpKS0+YWxsb2Nh
dGUoZGVmZXJyYWxDb250ZXh0LCBzaXplKSk7Ci0jaWYgRU5BQkxFKEdDX1ZBTElEQVRJT04pCi0g
ICAgQVNTRVJUKCFoZWFwLnZtKCktPmlzSW5pdGlhbGl6aW5nT2JqZWN0KCkpOwotICAgIGhlYXAu
dm0oKS0+c2V0SW5pdGlhbGl6aW5nT2JqZWN0Q2xhc3MoVDo6aW5mbygpKTsKLSNlbmRpZgotICAg
IHJlc3VsdC0+Y2xlYXJTdHJ1Y3R1cmUoKTsKLSAgICByZXR1cm4gcmVzdWx0OworICAgIHN0YXRp
YyBjb25zdCBib29sIGFzc2VydE9uRmFpbHVyZSA9IHRydWU7CisgICAgc3RhdGljIGNvbnN0IGJv
b2wgdGFrZXNEZWZlcnJhbENvbnRleHQgPSB0cnVlOworICAgIHJldHVybiB0cnlBbGxvY2F0ZUNl
bGxIZWxwZXI8VCwgYXNzZXJ0T25GYWlsdXJlLCB0YWtlc0RlZmVycmFsQ29udGV4dD4oaGVhcCwg
ZGVmZXJyYWxDb250ZXh0LCBzaXplKTsKIH0KLSAgICAKKwogdGVtcGxhdGU8dHlwZW5hbWUgVD4K
LXZvaWQqIGFsbG9jYXRlQ2VsbChIZWFwJiBoZWFwLCBHQ0RlZmVycmFsQ29udGV4dCogZGVmZXJy
YWxDb250ZXh0KQordm9pZCogdHJ5QWxsb2NhdGVDZWxsKEhlYXAmIGhlYXAsIEdDRGVmZXJyYWxD
b250ZXh0KiBkZWZlcnJhbENvbnRleHQsIHNpemVfdCBzaXplKQogewotICAgIHJldHVybiBhbGxv
Y2F0ZUNlbGw8VD4oaGVhcCwgZGVmZXJyYWxDb250ZXh0LCBzaXplb2YoVCkpOworICAgIHN0YXRp
YyBjb25zdCBib29sIGFzc2VydE9uRmFpbHVyZSA9IGZhbHNlOworICAgIHN0YXRpYyBjb25zdCBi
b29sIHRha2VzRGVmZXJyYWxDb250ZXh0ID0gdHJ1ZTsKKyAgICByZXR1cm4gdHJ5QWxsb2NhdGVD
ZWxsSGVscGVyPFQsIGFzc2VydE9uRmFpbHVyZSwgdGFrZXNEZWZlcnJhbENvbnRleHQ+KGhlYXAs
IGRlZmVycmFsQ29udGV4dCwgc2l6ZSk7CiB9Ci0gICAgCisKIGlubGluZSBib29sIEpTQ2VsbDo6
aXNPYmplY3QoKSBjb25zdAogewogICAgIHJldHVybiBUeXBlSW5mbzo6aXNPYmplY3QobV90eXBl
KTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRml4ZWRBcnJheS5oCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTRml4ZWRBcnJheS5o
CShyZXZpc2lvbiAyMTU4OTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0Zp
eGVkQXJyYXkuaAkod29ya2luZyBjb3B5KQpAQCAtNDUsOSArNDUsMTUgQEAgcHVibGljOgogCiAg
ICAgQUxXQVlTX0lOTElORSBzdGF0aWMgSlNGaXhlZEFycmF5KiBjcmVhdGVGcm9tQXJyYXkoRXhl
Y1N0YXRlKiBleGVjLCBWTSYgdm0sIEpTQXJyYXkqIGFycmF5KQogICAgIHsKKyAgICAgICAgYXV0
byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2bSk7CisKICAgICAgICAgSW5kZXhp
bmdUeXBlIGluZGV4aW5nVHlwZSA9IGFycmF5LT5pbmRleGluZ1R5cGUoKSAmIEluZGV4aW5nU2hh
cGVNYXNrOwogICAgICAgICB1bnNpZ25lZCBsZW5ndGggPSBhcnJheS0+bGVuZ3RoKCk7Ci0gICAg
ICAgIEpTRml4ZWRBcnJheSogcmVzdWx0ID0gSlNGaXhlZEFycmF5OjpjcmVhdGUodm0sIHZtLmZp
eGVkQXJyYXlTdHJ1Y3R1cmUuZ2V0KCksIGxlbmd0aCk7CisgICAgICAgIEpTRml4ZWRBcnJheSog
cmVzdWx0ID0gSlNGaXhlZEFycmF5Ojp0cnlDcmVhdGUodm0sIHZtLmZpeGVkQXJyYXlTdHJ1Y3R1
cmUuZ2V0KCksIGxlbmd0aCk7CisgICAgICAgIGlmIChVTkxJS0VMWSghcmVzdWx0KSkgeworICAg
ICAgICAgICAgdGhyb3dPdXRPZk1lbW9yeUVycm9yKGV4ZWMsIHRocm93U2NvcGUpOworICAgICAg
ICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIH0KIAogICAgICAgICBpZiAoIWxlbmd0aCkK
ICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CkBAIC03MCw4ICs3Niw2IEBAIHB1YmxpYzoKICAg
ICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgIH0KIAotCi0gICAgICAgIGF1dG8gdGhy
b3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwogICAgICAgICBmb3IgKHVuc2lnbmVk
IGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHsKICAgICAgICAgICAgIEpTVmFsdWUgdmFsdWUgPSBh
cnJheS0+Z2V0RGlyZWN0SW5kZXgoZXhlYywgaSk7CiAgICAgICAgICAgICBpZiAoIXZhbHVlKSB7
CkBAIC0xMTYsOSArMTIwLDEyIEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgdW5zaWduZWQgbV9z
aXplOwogCi0gICAgQUxXQVlTX0lOTElORSBzdGF0aWMgSlNGaXhlZEFycmF5KiBjcmVhdGUoVk0m
IHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgdW5zaWduZWQgc2l6ZSkKKyAgICBBTFdBWVNfSU5M
SU5FIHN0YXRpYyBKU0ZpeGVkQXJyYXkqIHRyeUNyZWF0ZShWTSYgdm0sIFN0cnVjdHVyZSogc3Ry
dWN0dXJlLCB1bnNpZ25lZCBzaXplKQogICAgIHsKLSAgICAgICAgSlNGaXhlZEFycmF5KiByZXN1
bHQgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU0ZpeGVkQXJyYXk+KHZtLmhlYXAsIGFs
bG9jYXRpb25TaXplKHNpemUpKSkgSlNGaXhlZEFycmF5KHZtLCBzdHJ1Y3R1cmUsIHNpemUpOwor
ICAgICAgICB2b2lkKiBidWZmZXIgPSB0cnlBbGxvY2F0ZUNlbGw8SlNGaXhlZEFycmF5Pih2bS5o
ZWFwLCBhbGxvY2F0aW9uU2l6ZShzaXplKSk7CisgICAgICAgIGlmIChVTkxJS0VMWSghYnVmZmVy
KSkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICBKU0ZpeGVkQXJyYXkqIHJl
c3VsdCA9IG5ldyAoTm90TnVsbCwgYnVmZmVyKSBKU0ZpeGVkQXJyYXkodm0sIHN0cnVjdHVyZSwg
c2l6ZSk7CiAgICAgICAgIHJlc3VsdC0+ZmluaXNoQ3JlYXRpb24odm0pOwogICAgICAgICByZXR1
cm4gcmVzdWx0OwogICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pT
R2xvYmFsT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRp
bWUvSlNHbG9iYWxPYmplY3QuaAkocmV2aXNpb24gMjE1ODk1KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAkod29ya2luZyBjb3B5KQpAQCAtMSw2ICsx
LDYgQEAKIC8qCiAgKiAgQ29weXJpZ2h0IChDKSAyMDA3IEVyaWMgU2VpZGVsIDxlcmljQHdlYmtp
dC5vcmc+Ci0gKiAgQ29weXJpZ2h0IChDKSAyMDA3LTIwMDksIDIwMTQtMjAxNiBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAgQ29weXJpZ2h0IChDKSAyMDA3LTIwMTcgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBz
b2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiAgbW9kaWZ5IGl0IHVu
ZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTIzLDYg
KzIzLDcgQEAKIAogI2luY2x1ZGUgIkFycmF5QWxsb2NhdGlvblByb2ZpbGUuaCIKICNpbmNsdWRl
ICJBcnJheUJ1ZmZlclNoYXJpbmdNb2RlLmgiCisjaW5jbHVkZSAiRXhjZXB0aW9uSGVscGVycy5o
IgogI2luY2x1ZGUgIkludGVybmFsRnVuY3Rpb24uaCIKICNpbmNsdWRlICJKU0FycmF5LmgiCiAj
aW5jbHVkZSAiSlNBcnJheUJ1ZmZlclByb3RvdHlwZS5oIgpAQCAtODcyLDcgKzg3MywxMiBAQCBp
bmxpbmUgSlNBcnJheSogY29uc3RydWN0RW1wdHlBcnJheShFeGVjCiAgICAgICAgIHN0cnVjdHVy
ZSA9IGdsb2JhbE9iamVjdC0+YXJyYXlTdHJ1Y3R1cmVGb3JQcm9maWxlRHVyaW5nQWxsb2NhdGlv
bihleGVjLCBwcm9maWxlLCBuZXdUYXJnZXQpOwogICAgIFJFVFVSTl9JRl9FWENFUFRJT04oc2Nv
cGUsIG51bGxwdHIpOwogCi0gICAgcmV0dXJuIEFycmF5QWxsb2NhdGlvblByb2ZpbGU6OnVwZGF0
ZUxhc3RBbGxvY2F0aW9uRm9yKHByb2ZpbGUsIEpTQXJyYXk6OmNyZWF0ZShleGVjLT52bSgpLCBz
dHJ1Y3R1cmUsIGluaXRpYWxMZW5ndGgpKTsKKyAgICBKU0FycmF5KiByZXN1bHQgPSBKU0FycmF5
Ojp0cnlDcmVhdGUodm0sIHN0cnVjdHVyZSwgaW5pdGlhbExlbmd0aCk7CisgICAgaWYgKFVOTElL
RUxZKCFyZXN1bHQpKSB7CisgICAgICAgIHRocm93T3V0T2ZNZW1vcnlFcnJvcihleGVjLCBzY29w
ZSk7CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KKyAgICByZXR1cm4gQXJyYXlBbGxv
Y2F0aW9uUHJvZmlsZTo6dXBkYXRlTGFzdEFsbG9jYXRpb25Gb3IocHJvZmlsZSwgcmVzdWx0KTsK
IH0KIAogaW5saW5lIEpTQXJyYXkqIGNvbnN0cnVjdEVtcHR5QXJyYXkoRXhlY1N0YXRlKiBleGVj
LCBBcnJheUFsbG9jYXRpb25Qcm9maWxlKiBwcm9maWxlLCB1bnNpZ25lZCBpbml0aWFsTGVuZ3Ro
ID0gMCwgSlNWYWx1ZSBuZXdUYXJnZXQgPSBKU1ZhbHVlKCkpCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>308484</attachid>
            <date>2017-04-27 17:27:54 -0700</date>
            <delta_ts>2017-04-27 18:07:41 -0700</delta_ts>
            <desc>proposed patch.</desc>
            <filename>bug-171404.patch</filename>
            <type>text/plain</type>
            <size>13567</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IEpTVGVzdHMvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIEpTVGVzdHMvQ2hhbmdlTG9n
CShyZXZpc2lvbiAyMTU5MDQpCisrKyBKU1Rlc3RzL0NoYW5nZUxvZwkod29ya2luZyBjb3B5KQpA
QCAtMSwzICsxLDEzIEBACisyMDE3LTA0LTI3ICBNYXJrIExhbSAgPG1hcmsubGFtQGFwcGxlLmNv
bT4KKworICAgICAgICBGaXggc29tZSBSRUxFQVNFX0FTU0VSVCBmYWlsdXJlcyBjYXVzZWQgYnkg
T3V0T2ZNZW1vcnlFcnJvcnMuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3df
YnVnLmNnaT9pZD0xNzE0MDQKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzMxODc2MTc4PgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogc3RyZXNzL2pz
LWZpeGVkLWFycmF5LW91dC1vZi1tZW1vcnkuanM6IEFkZGVkLgorCiAyMDE3LTA0LTI3ICBEYXZp
ZCBLaWx6ZXIgIDxkZGtpbHplckBhcHBsZS5jb20+CiAKICAgICAgICAgRW5oYW5jZSBzaG91bGRC
ZSgpL3Nob3VsZE5vdEJlKCkgdG8gYWNjZXB0IGFub255bW91cyBmdW5jdGlvbiBhcmd1bWVudHMK
SW5kZXg6IEpTVGVzdHMvc3RyZXNzL2pzLWZpeGVkLWFycmF5LW91dC1vZi1tZW1vcnkuanMKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gSlNUZXN0cy9zdHJlc3MvanMtZml4ZWQtYXJyYXktb3V0LW9mLW1lbW9yeS5q
cwkobm9uZXhpc3RlbnQpCisrKyBKU1Rlc3RzL3N0cmVzcy9qcy1maXhlZC1hcnJheS1vdXQtb2Yt
bWVtb3J5LmpzCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMjUgQEAKKy8vQCBpZiAkYnVpbGRU
eXBlID09ICJkZWJ1ZyIgdGhlbiBydW5EZWZhdWx0KCItLW1heFNpbmdsZUFsbG9jYXRpb25TaXpl
PTEwNDg1NzYiKSBlbHNlIHNraXAgZW5kCisKK3ZhciBleGNlcHRpb247CisKK2Z1bmN0aW9uIGZv
bygpIHsgfTsKKworZnVuY3Rpb24gdGVzdChsZW5ndGgpIHsKKyAgICB0cnkgeworICAgICAgICBm
b28oWy4uLm5ldyBBcnJheShsZW5ndGgpXS5maWx0ZXIoKCkgPT4geyB9KSk7CisgICAgfSBjYXRj
aCAoZSkgeworICAgICAgICBleGNlcHRpb24gPSBlOworICAgIH0KKworICAgIGlmIChleGNlcHRp
b24gJiYgZXhjZXB0aW9uICE9ICJFcnJvcjogT3V0IG9mIG1lbW9yeSIpCisgICAgICAgIHRocm93
ICJFUlJPUjogbGVuZ3RoICIgKyBsZW5ndGggKyAiOiB1bmV4cGVjdGVkIGV4Y2VwdGlvbiAiICsg
ZXhjZXB0aW9uOworfQorCit2YXIgc2l6ZXMgPSBbCisgICAgMSwgMTAsIDUwLCAxMDAsIDUwMCwg
MTAwMCwgNTAwMCwgMTAwMDAsIDUwMDAwLCAxMDAwMDAsIDUwMDAwMCwKKyAgICAxMDAwMDAwLCA1
MDAwMDAwLCAxMDAwMDAwMCwgNTAwMDAwMDAsIDEwMDAwMDAwMCwgNTAwMDAwMDAwLCAxMDAwMDAw
MDAwCitdOworCitmb3IgKHNpemUgb2Ygc2l6ZXMpCisgICAgdGVzdChzaXplKTsKKwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCShyZXZpc2lvbiAyMTU4OTUpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzUgQEAKKzIwMTct
MDQtMjcgIE1hcmsgTGFtICA8bWFyay5sYW1AYXBwbGUuY29tPgorCisgICAgICAgIEZpeCBzb21l
IFJFTEVBU0VfQVNTRVJUIGZhaWx1cmVzIGNhdXNlZCBieSBPdXRPZk1lbW9yeUVycm9ycy4KKyAg
ICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3MTQwNAorICAg
ICAgICA8cmRhcjovL3Byb2JsZW0vMzE4NzYxNzg+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgMS4gQWRkZWQgc29tZSB0cnlBbGxvY2F0ZSgpIGZ1bmN0
aW9ucyBpbiBKU0NlbGxJbmxpbmVzLmguCisgICAgICAgIDIuIENvbnNvbGlkYXRlZCB0aGUgaW1w
bGVtZW50YXRpb25zIG9mIGFsbG9jYXRlQ2VsbCgpIHRlbXBsYXRlIGZ1bmN0aW9ucyBpbnRvIGEK
KyAgICAgICAgICAgc2luZ2xlIHRyeUFsbG9jYXRlQ2VsbEhlbHBlcigpIHRvIHJlZHVjZSByZWR1
bmRhbmN5IGFuZCBlbGltaW5hdGUgbmVlZGluZyB0bworICAgICAgICAgICBjb3B5LXBhc3RlIGZv
ciB2YXJpYXRpb25zIG9mIGFsbG9jYXRlQ2VsbCBhbmQgdHJ5QWxsb2NhdGVDZWxsLgorICAgICAg
ICAzLiBDaGFuZ2VkIEpTRml4ZWRBcnJheTo6Y3JlYXRlRnJvbUFycmF5KCkgYW5kIGNvbnN0cnVj
dEVtcHR5QXJyYXkoKSB0byBjaGVjayBmb3IKKyAgICAgICAgICAgYWxsb2NhdGlvbiBmYWlsdXJl
IGFuZCB0aHJvdyBhbiBPdXRPZk1lbW9yeUVycm9yLiAgSXQgd2FzIGFscmVhZHkgcG9zc2libGUg
dG8KKyAgICAgICAgICAgdGhyb3cgZXJyb3JzIGZyb20gdGhlc2UgZnVuY3Rpb25zIGZvciBvdGhl
ciByZWFzb25zLiAgU28sIHRoZWlyIGNsaWVudHMgYXJlCisgICAgICAgICAgIGFscmVhZHkgcmVh
ZHkgdG8gaGFuZGxlIE9PTUVzLgorCisgICAgICAgICogZnRsL0ZUTE9wZXJhdGlvbnMuY3BwOgor
ICAgICAgICAoSlNDOjpGVEw6Om9wZXJhdGlvbk1hdGVyaWFsaXplT2JqZWN0SW5PU1IpOgorICAg
ICAgICAqIHJ1bnRpbWUvSlNDSW5saW5lcy5oOgorICAgICAgICAqIHJ1bnRpbWUvSlNDZWxsLmg6
CisgICAgICAgICogcnVudGltZS9KU0NlbGxJbmxpbmVzLmg6CisgICAgICAgIChKU0M6OnRyeUFs
bG9jYXRlQ2VsbEhlbHBlcik6CisgICAgICAgIChKU0M6OmFsbG9jYXRlQ2VsbCk6CisgICAgICAg
IChKU0M6OnRyeUFsbG9jYXRlQ2VsbCk6CisgICAgICAgICogcnVudGltZS9KU0ZpeGVkQXJyYXku
aDoKKyAgICAgICAgKEpTQzo6SlNGaXhlZEFycmF5OjpjcmVhdGVGcm9tQXJyYXkpOgorICAgICAg
ICAoSlNDOjpKU0ZpeGVkQXJyYXk6OnRyeUNyZWF0ZSk6CisgICAgICAgIChKU0M6OkpTRml4ZWRB
cnJheTo6Y3JlYXRlKTogRGVsZXRlZC4KKyAgICAgICAgKiBydW50aW1lL0pTR2xvYmFsT2JqZWN0
Lmg6CisgICAgICAgIChKU0M6OmNvbnN0cnVjdEVtcHR5QXJyYXkpOgorCiAyMDE3LTA0LTI3ICBT
YWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgogCiAgICAgICAgIFJlc3RvcmUgc29tZSBj
YWNoaW5nIGZ1bmN0aW9uYWxpdHkgdGhhdCBnb3QgYWNjaWRlbnRhbGx5IHJlbW92ZWQgd2hlbiBk
b2luZyBXYXNtIFBJQyBwYXRjaGVzCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvZnRsL0ZU
TE9wZXJhdGlvbnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9mdGwv
RlRMT3BlcmF0aW9ucy5jcHAJKHJldmlzaW9uIDIxNTg5NSkKKysrIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9mdGwvRlRMT3BlcmF0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQzMiw2ICs0MzIs
NyBAQCBleHRlcm4gIkMiIEpTQ2VsbCogSklUX09QRVJBVElPTiBvcGVyYXRpCiAgICAgICAgIC8v
IHRoYXQgd2Ugb25seSBzdXBwb3J0IFBoYW50b21TcHJlYWQgb3ZlciBDcmVhdGVSZXN0LCB3aGlj
aCBpcyBhbiBhcnJheSB3ZSBjcmVhdGUuCiAgICAgICAgIC8vIEFueSBhdHRlbXB0cyB0byBwdXQg
YSBnZXR0ZXIgb24gYW55IGluZGljZXMgb24gdGhlIHJlc3QgYXJyYXkgd2lsbCBlc2NhcGUgdGhl
IGFycmF5LgogICAgICAgICBKU0ZpeGVkQXJyYXkqIGZpeGVkQXJyYXkgPSBKU0ZpeGVkQXJyYXk6
OmNyZWF0ZUZyb21BcnJheShleGVjLCB2bSwgYXJyYXkpOworICAgICAgICBSRUxFQVNFX0FTU0VS
VChmaXhlZEFycmF5KTsKICAgICAgICAgcmV0dXJuIGZpeGVkQXJyYXk7CiAgICAgfQogCkluZGV4
OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NJbmxpbmVzLmgKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDSW5saW5lcy5oCShyZXZpc2lvbiAy
MTU4OTUpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9KU0NJbmxpbmVzLmgJKHdv
cmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDE0LCAy
MDE2IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykgMjAx
NC0yMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3RyaWJ1
dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQK
ICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9ucwpAQCAtNDIsNiArNDIsNyBAQAogI2luY2x1ZGUgIklkZW50aWZpZXJJbmxp
bmVzLmgiCiAjaW5jbHVkZSAiSlNBcnJheUJ1ZmZlclZpZXdJbmxpbmVzLmgiCiAjaW5jbHVkZSAi
SlNDSlNWYWx1ZUlubGluZXMuaCIKKyNpbmNsdWRlICJKU0NlbGxJbmxpbmVzLmgiCiAjaW5jbHVk
ZSAiSlNGdW5jdGlvbklubGluZXMuaCIKICNpbmNsdWRlICJKU0dsb2JhbE9iamVjdElubGluZXMu
aCIKICNpbmNsdWRlICJKU09iamVjdElubGluZXMuaCIKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9ydW50aW1lL0pTQ2VsbC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9ydW50aW1lL0pTQ2VsbC5oCShyZXZpc2lvbiAyMTU4OTUpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0NlbGwuaAkod29ya2luZyBjb3B5KQpAQCAtNTAsMTEgKzUwLDIwIEBA
IGNsYXNzIFByb3BlcnR5RGVzY3JpcHRvcjsKIGNsYXNzIFByb3BlcnR5TmFtZUFycmF5OwogY2xh
c3MgU3RydWN0dXJlOwogCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPiB2b2lkKiBhbGxvY2F0ZUNlbGwo
SGVhcCYpOwotdGVtcGxhdGU8dHlwZW5hbWUgVD4gdm9pZCogYWxsb2NhdGVDZWxsKEhlYXAmLCBz
aXplX3QpOworZW51bSBjbGFzcyBBbGxvY2F0aW9uRmFpbHVyZU1vZGUgeworICAgIFNob3VsZEFz
c2VydE9uRmFpbHVyZSwKKyAgICBTaG91bGROb3RBc3NlcnRPbkZhaWx1cmUKK307CisKK2VudW0g
Y2xhc3MgR0NEZWZlcnJhbENvbnRleHRBcmdQcmVzZW5zZSB7CisgICAgSGFzQXJnLAorICAgIERv
ZXNOb3RIYXZlQXJnCit9OwogCi10ZW1wbGF0ZTx0eXBlbmFtZSBUPiB2b2lkKiBhbGxvY2F0ZUNl
bGwoSGVhcCYsIEdDRGVmZXJyYWxDb250ZXh0Kik7Ci10ZW1wbGF0ZTx0eXBlbmFtZSBUPiB2b2lk
KiBhbGxvY2F0ZUNlbGwoSGVhcCYsIEdDRGVmZXJyYWxDb250ZXh0Kiwgc2l6ZV90KTsKK3RlbXBs
YXRlPHR5cGVuYW1lIFQ+IHZvaWQqIGFsbG9jYXRlQ2VsbChIZWFwJiwgc2l6ZV90ID0gc2l6ZW9m
KFQpKTsKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IHZvaWQqIHRyeUFsbG9jYXRlQ2VsbChIZWFwJiwg
c2l6ZV90ID0gc2l6ZW9mKFQpKTsKK3RlbXBsYXRlPHR5cGVuYW1lIFQ+IHZvaWQqIGFsbG9jYXRl
Q2VsbChIZWFwJiwgR0NEZWZlcnJhbENvbnRleHQqLCBzaXplX3QgPSBzaXplb2YoVCkpOwordGVt
cGxhdGU8dHlwZW5hbWUgVD4gdm9pZCogdHJ5QWxsb2NhdGVDZWxsKEhlYXAmLCBHQ0RlZmVycmFs
Q29udGV4dCosIHNpemVfdCA9IHNpemVvZihUKSk7CiAKICNkZWZpbmUgREVDTEFSRV9FWFBPUlRf
SU5GTyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAog
ICAgIHByb3RlY3RlZDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBcCkBAIC03MSwxMCArODAsOCBAQCB0ZW1wbGF0ZTx0eXBlbmFt
ZSBUPiB2b2lkKiBhbGxvY2F0ZUNlbGwoCiBjbGFzcyBKU0NlbGwgOiBwdWJsaWMgSGVhcENlbGwg
ewogICAgIGZyaWVuZCBjbGFzcyBKU1ZhbHVlOwogICAgIGZyaWVuZCBjbGFzcyBNYXJrZWRCbG9j
azsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBmcmllbmQgdm9pZCogYWxsb2NhdGVDZWxsKEhl
YXAmKTsKLSAgICB0ZW1wbGF0ZTx0eXBlbmFtZSBUPiBmcmllbmQgdm9pZCogYWxsb2NhdGVDZWxs
KEhlYXAmLCBzaXplX3QpOwotICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQ+IGZyaWVuZCB2b2lkKiBh
bGxvY2F0ZUNlbGwoSGVhcCYsIEdDRGVmZXJyYWxDb250ZXh0Kik7Ci0gICAgdGVtcGxhdGU8dHlw
ZW5hbWUgVD4gZnJpZW5kIHZvaWQqIGFsbG9jYXRlQ2VsbChIZWFwJiwgR0NEZWZlcnJhbENvbnRl
eHQqLCBzaXplX3QpOworICAgIHRlbXBsYXRlPHR5cGVuYW1lIFQsIEFsbG9jYXRpb25GYWlsdXJl
TW9kZSwgR0NEZWZlcnJhbENvbnRleHRBcmdQcmVzZW5zZT4KKyAgICBmcmllbmQgdm9pZCogdHJ5
QWxsb2NhdGVDZWxsSGVscGVyKEhlYXAmLCBHQ0RlZmVycmFsQ29udGV4dCosIHNpemVfdCk7CiAK
IHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgU3RydWN0dXJlRmxhZ3MgPSAwOwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxsSW5saW5lcy5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL0pTQ2VsbElubGluZXMuaAko
cmV2aXNpb24gMjE1ODk1KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDZWxs
SW5saW5lcy5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNDIsMTIgKzE0MiwyMyBAQCBTdWJzcGFjZSog
SlNDZWxsOjpzdWJzcGFjZUZvcihWTSYgdm0pCiAgICAgcmV0dXJuICZ2bS5jZWxsU3BhY2U7CiB9
CiAKLXRlbXBsYXRlPHR5cGVuYW1lIFQ+Ci12b2lkKiBhbGxvY2F0ZUNlbGwoSGVhcCYgaGVhcCwg
c2l6ZV90IHNpemUpCit0ZW1wbGF0ZTx0eXBlbmFtZSBULCBBbGxvY2F0aW9uRmFpbHVyZU1vZGUg
bW9kZSwgR0NEZWZlcnJhbENvbnRleHRBcmdQcmVzZW5zZSBkZWZlcnJhbENvbnRleHRBcmdQcmVz
ZW5jZT4KK3ZvaWQqIHRyeUFsbG9jYXRlQ2VsbEhlbHBlcihIZWFwJiBoZWFwLCBHQ0RlZmVycmFs
Q29udGV4dCogZGVmZXJyYWxDb250ZXh0LCBzaXplX3Qgc2l6ZSkKIHsKLSAgICBBU1NFUlQoIURp
c2FsbG93R0M6OmlzSW5FZmZlY3RPbkN1cnJlbnRUaHJlYWQoKSk7CisgICAgQVNTRVJUKGRlZmVy
cmFsQ29udGV4dCB8fCAhRGlzYWxsb3dHQzo6aXNJbkVmZmVjdE9uQ3VycmVudFRocmVhZCgpKTsK
ICAgICBBU1NFUlQoc2l6ZSA+PSBzaXplb2YoVCkpOwotICAgIEpTQ2VsbCogcmVzdWx0ID0gc3Rh
dGljX2Nhc3Q8SlNDZWxsKj4oc3Vic3BhY2VGb3I8VD4oKmhlYXAudm0oKSktPmFsbG9jYXRlKHNp
emUpKTsKKyAgICBKU0NlbGwqIHJlc3VsdDsKKyAgICBpZiAobW9kZSA9PSBBbGxvY2F0aW9uRmFp
bHVyZU1vZGU6OlNob3VsZEFzc2VydE9uRmFpbHVyZSkgeworICAgICAgICByZXN1bHQgPSAoZGVm
ZXJyYWxDb250ZXh0QXJnUHJlc2VuY2UgPT0gR0NEZWZlcnJhbENvbnRleHRBcmdQcmVzZW5zZTo6
SGFzQXJnKQorICAgICAgICAgICAgPyBzdGF0aWNfY2FzdDxKU0NlbGwqPihzdWJzcGFjZUZvcjxU
PigqaGVhcC52bSgpKS0+YWxsb2NhdGUoZGVmZXJyYWxDb250ZXh0LCBzaXplKSkKKyAgICAgICAg
ICAgIDogc3RhdGljX2Nhc3Q8SlNDZWxsKj4oc3Vic3BhY2VGb3I8VD4oKmhlYXAudm0oKSktPmFs
bG9jYXRlKHNpemUpKTsKKyAgICB9IGVsc2UgeworICAgICAgICByZXN1bHQgPSAoZGVmZXJyYWxD
b250ZXh0QXJnUHJlc2VuY2UgPT0gR0NEZWZlcnJhbENvbnRleHRBcmdQcmVzZW5zZTo6SGFzQXJn
KQorICAgICAgICAgICAgPyBzdGF0aWNfY2FzdDxKU0NlbGwqPihzdWJzcGFjZUZvcjxUPigqaGVh
cC52bSgpKS0+dHJ5QWxsb2NhdGUoZGVmZXJyYWxDb250ZXh0LCBzaXplKSkKKyAgICAgICAgICAg
IDogc3RhdGljX2Nhc3Q8SlNDZWxsKj4oc3Vic3BhY2VGb3I8VD4oKmhlYXAudm0oKSktPnRyeUFs
bG9jYXRlKHNpemUpKTsKKyAgICAgICAgaWYgKFVOTElLRUxZKCFyZXN1bHQpKQorICAgICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CisgICAgfQogI2lmIEVOQUJMRShHQ19WQUxJREFUSU9OKQogICAg
IEFTU0VSVCghaGVhcC52bSgpLT5pc0luaXRpYWxpemluZ09iamVjdCgpKTsKICAgICBoZWFwLnZt
KCktPnNldEluaXRpYWxpemluZ09iamVjdENsYXNzKFQ6OmluZm8oKSk7CkBAIC0xNTUsMzIgKzE2
NiwzMSBAQCB2b2lkKiBhbGxvY2F0ZUNlbGwoSGVhcCYgaGVhcCwgc2l6ZV90IHNpCiAgICAgcmVz
dWx0LT5jbGVhclN0cnVjdHVyZSgpOwogICAgIHJldHVybiByZXN1bHQ7CiB9Ci0gICAgCisKK3Rl
bXBsYXRlPHR5cGVuYW1lIFQ+Cit2b2lkKiBhbGxvY2F0ZUNlbGwoSGVhcCYgaGVhcCwgc2l6ZV90
IHNpemUpCit7CisgICAgcmV0dXJuIHRyeUFsbG9jYXRlQ2VsbEhlbHBlcjxULCBBbGxvY2F0aW9u
RmFpbHVyZU1vZGU6OlNob3VsZEFzc2VydE9uRmFpbHVyZSwgR0NEZWZlcnJhbENvbnRleHRBcmdQ
cmVzZW5zZTo6RG9lc05vdEhhdmVBcmc+KGhlYXAsIG51bGxwdHIsIHNpemUpOworfQorCiB0ZW1w
bGF0ZTx0eXBlbmFtZSBUPgotdm9pZCogYWxsb2NhdGVDZWxsKEhlYXAmIGhlYXApCit2b2lkKiB0
cnlBbGxvY2F0ZUNlbGwoSGVhcCYgaGVhcCwgc2l6ZV90IHNpemUpCiB7Ci0gICAgcmV0dXJuIGFs
bG9jYXRlQ2VsbDxUPihoZWFwLCBzaXplb2YoVCkpOworICAgIHJldHVybiB0cnlBbGxvY2F0ZUNl
bGxIZWxwZXI8VCwgQWxsb2NhdGlvbkZhaWx1cmVNb2RlOjpTaG91bGROb3RBc3NlcnRPbkZhaWx1
cmUsIEdDRGVmZXJyYWxDb250ZXh0QXJnUHJlc2Vuc2U6OkRvZXNOb3RIYXZlQXJnPihoZWFwLCBu
dWxscHRyLCBzaXplKTsKIH0KLSAgICAKKwogdGVtcGxhdGU8dHlwZW5hbWUgVD4KIHZvaWQqIGFs
bG9jYXRlQ2VsbChIZWFwJiBoZWFwLCBHQ0RlZmVycmFsQ29udGV4dCogZGVmZXJyYWxDb250ZXh0
LCBzaXplX3Qgc2l6ZSkKIHsKLSAgICBBU1NFUlQoc2l6ZSA+PSBzaXplb2YoVCkpOwotICAgIEpT
Q2VsbCogcmVzdWx0ID0gc3RhdGljX2Nhc3Q8SlNDZWxsKj4oc3Vic3BhY2VGb3I8VD4oKmhlYXAu
dm0oKSktPmFsbG9jYXRlKGRlZmVycmFsQ29udGV4dCwgc2l6ZSkpOwotI2lmIEVOQUJMRShHQ19W
QUxJREFUSU9OKQotICAgIEFTU0VSVCghaGVhcC52bSgpLT5pc0luaXRpYWxpemluZ09iamVjdCgp
KTsKLSAgICBoZWFwLnZtKCktPnNldEluaXRpYWxpemluZ09iamVjdENsYXNzKFQ6OmluZm8oKSk7
Ci0jZW5kaWYKLSAgICByZXN1bHQtPmNsZWFyU3RydWN0dXJlKCk7Ci0gICAgcmV0dXJuIHJlc3Vs
dDsKKyAgICByZXR1cm4gdHJ5QWxsb2NhdGVDZWxsSGVscGVyPFQsIEFsbG9jYXRpb25GYWlsdXJl
TW9kZTo6U2hvdWxkQXNzZXJ0T25GYWlsdXJlLCBHQ0RlZmVycmFsQ29udGV4dEFyZ1ByZXNlbnNl
OjpIYXNBcmc+KGhlYXAsIGRlZmVycmFsQ29udGV4dCwgc2l6ZSk7CiB9Ci0gICAgCisKIHRlbXBs
YXRlPHR5cGVuYW1lIFQ+Ci12b2lkKiBhbGxvY2F0ZUNlbGwoSGVhcCYgaGVhcCwgR0NEZWZlcnJh
bENvbnRleHQqIGRlZmVycmFsQ29udGV4dCkKK3ZvaWQqIHRyeUFsbG9jYXRlQ2VsbChIZWFwJiBo
ZWFwLCBHQ0RlZmVycmFsQ29udGV4dCogZGVmZXJyYWxDb250ZXh0LCBzaXplX3Qgc2l6ZSkKIHsK
LSAgICByZXR1cm4gYWxsb2NhdGVDZWxsPFQ+KGhlYXAsIGRlZmVycmFsQ29udGV4dCwgc2l6ZW9m
KFQpKTsKKyAgICByZXR1cm4gdHJ5QWxsb2NhdGVDZWxsSGVscGVyPFQsIEFsbG9jYXRpb25GYWls
dXJlTW9kZTo6U2hvdWxkTm90QXNzZXJ0T25GYWlsdXJlLCBHQ0RlZmVycmFsQ29udGV4dEFyZ1By
ZXNlbnNlOjpIYXNBcmc+KGhlYXAsIGRlZmVycmFsQ29udGV4dCwgc2l6ZSk7CiB9Ci0gICAgCisK
IGlubGluZSBib29sIEpTQ2VsbDo6aXNPYmplY3QoKSBjb25zdAogewogICAgIHJldHVybiBUeXBl
SW5mbzo6aXNPYmplY3QobV90eXBlKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTRml4ZWRBcnJheS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL0pTRml4ZWRBcnJheS5oCShyZXZpc2lvbiAyMTU4OTUpCisrKyBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvcnVudGltZS9KU0ZpeGVkQXJyYXkuaAkod29ya2luZyBjb3B5KQpAQCAtNDUsOSAr
NDUsMTUgQEAgcHVibGljOgogCiAgICAgQUxXQVlTX0lOTElORSBzdGF0aWMgSlNGaXhlZEFycmF5
KiBjcmVhdGVGcm9tQXJyYXkoRXhlY1N0YXRlKiBleGVjLCBWTSYgdm0sIEpTQXJyYXkqIGFycmF5
KQogICAgIHsKKyAgICAgICAgYXV0byB0aHJvd1Njb3BlID0gREVDTEFSRV9USFJPV19TQ09QRSh2
bSk7CisKICAgICAgICAgSW5kZXhpbmdUeXBlIGluZGV4aW5nVHlwZSA9IGFycmF5LT5pbmRleGlu
Z1R5cGUoKSAmIEluZGV4aW5nU2hhcGVNYXNrOwogICAgICAgICB1bnNpZ25lZCBsZW5ndGggPSBh
cnJheS0+bGVuZ3RoKCk7Ci0gICAgICAgIEpTRml4ZWRBcnJheSogcmVzdWx0ID0gSlNGaXhlZEFy
cmF5OjpjcmVhdGUodm0sIHZtLmZpeGVkQXJyYXlTdHJ1Y3R1cmUuZ2V0KCksIGxlbmd0aCk7Cisg
ICAgICAgIEpTRml4ZWRBcnJheSogcmVzdWx0ID0gSlNGaXhlZEFycmF5Ojp0cnlDcmVhdGUodm0s
IHZtLmZpeGVkQXJyYXlTdHJ1Y3R1cmUuZ2V0KCksIGxlbmd0aCk7CisgICAgICAgIGlmIChVTkxJ
S0VMWSghcmVzdWx0KSkgeworICAgICAgICAgICAgdGhyb3dPdXRPZk1lbW9yeUVycm9yKGV4ZWMs
IHRocm93U2NvcGUpOworICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIH0KIAog
ICAgICAgICBpZiAoIWxlbmd0aCkKICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CkBAIC03MCw4
ICs3Niw2IEBAIHB1YmxpYzoKICAgICAgICAgICAgIHJldHVybiByZXN1bHQ7CiAgICAgICAgIH0K
IAotCi0gICAgICAgIGF1dG8gdGhyb3dTY29wZSA9IERFQ0xBUkVfVEhST1dfU0NPUEUodm0pOwog
ICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwgbGVuZ3RoOyBpKyspIHsKICAgICAgICAg
ICAgIEpTVmFsdWUgdmFsdWUgPSBhcnJheS0+Z2V0RGlyZWN0SW5kZXgoZXhlYywgaSk7CiAgICAg
ICAgICAgICBpZiAoIXZhbHVlKSB7CkBAIC0xMTYsOSArMTIwLDEyIEBAIHB1YmxpYzoKIHByaXZh
dGU6CiAgICAgdW5zaWduZWQgbV9zaXplOwogCi0gICAgQUxXQVlTX0lOTElORSBzdGF0aWMgSlNG
aXhlZEFycmF5KiBjcmVhdGUoVk0mIHZtLCBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSwgdW5zaWduZWQg
c2l6ZSkKKyAgICBBTFdBWVNfSU5MSU5FIHN0YXRpYyBKU0ZpeGVkQXJyYXkqIHRyeUNyZWF0ZShW
TSYgdm0sIFN0cnVjdHVyZSogc3RydWN0dXJlLCB1bnNpZ25lZCBzaXplKQogICAgIHsKLSAgICAg
ICAgSlNGaXhlZEFycmF5KiByZXN1bHQgPSBuZXcgKE5vdE51bGwsIGFsbG9jYXRlQ2VsbDxKU0Zp
eGVkQXJyYXk+KHZtLmhlYXAsIGFsbG9jYXRpb25TaXplKHNpemUpKSkgSlNGaXhlZEFycmF5KHZt
LCBzdHJ1Y3R1cmUsIHNpemUpOworICAgICAgICB2b2lkKiBidWZmZXIgPSB0cnlBbGxvY2F0ZUNl
bGw8SlNGaXhlZEFycmF5Pih2bS5oZWFwLCBhbGxvY2F0aW9uU2l6ZShzaXplKSk7CisgICAgICAg
IGlmIChVTkxJS0VMWSghYnVmZmVyKSkKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAg
ICAgICBKU0ZpeGVkQXJyYXkqIHJlc3VsdCA9IG5ldyAoTm90TnVsbCwgYnVmZmVyKSBKU0ZpeGVk
QXJyYXkodm0sIHN0cnVjdHVyZSwgc2l6ZSk7CiAgICAgICAgIHJlc3VsdC0+ZmluaXNoQ3JlYXRp
b24odm0pOwogICAgICAgICByZXR1cm4gcmVzdWx0OwogICAgIH0KSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9ydW50aW1lL0pTR2xvYmFsT2JqZWN0LmgKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAkocmV2aXNpb24gMjE1ODk1
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNHbG9iYWxPYmplY3QuaAkod29y
a2luZyBjb3B5KQpAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiAgQ29weXJpZ2h0IChDKSAyMDA3IEVy
aWMgU2VpZGVsIDxlcmljQHdlYmtpdC5vcmc+Ci0gKiAgQ29weXJpZ2h0IChDKSAyMDA3LTIwMDks
IDIwMTQtMjAxNiBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiAgQ29weXJpZ2h0
IChDKSAyMDA3LTIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqICBU
aGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5k
L29yCiAgKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2Vu
ZXJhbCBQdWJsaWMKQEAgLTIzLDYgKzIzLDcgQEAKIAogI2luY2x1ZGUgIkFycmF5QWxsb2NhdGlv
blByb2ZpbGUuaCIKICNpbmNsdWRlICJBcnJheUJ1ZmZlclNoYXJpbmdNb2RlLmgiCisjaW5jbHVk
ZSAiRXhjZXB0aW9uSGVscGVycy5oIgogI2luY2x1ZGUgIkludGVybmFsRnVuY3Rpb24uaCIKICNp
bmNsdWRlICJKU0FycmF5LmgiCiAjaW5jbHVkZSAiSlNBcnJheUJ1ZmZlclByb3RvdHlwZS5oIgpA
QCAtODcyLDcgKzg3MywxMiBAQCBpbmxpbmUgSlNBcnJheSogY29uc3RydWN0RW1wdHlBcnJheShF
eGVjCiAgICAgICAgIHN0cnVjdHVyZSA9IGdsb2JhbE9iamVjdC0+YXJyYXlTdHJ1Y3R1cmVGb3JQ
cm9maWxlRHVyaW5nQWxsb2NhdGlvbihleGVjLCBwcm9maWxlLCBuZXdUYXJnZXQpOwogICAgIFJF
VFVSTl9JRl9FWENFUFRJT04oc2NvcGUsIG51bGxwdHIpOwogCi0gICAgcmV0dXJuIEFycmF5QWxs
b2NhdGlvblByb2ZpbGU6OnVwZGF0ZUxhc3RBbGxvY2F0aW9uRm9yKHByb2ZpbGUsIEpTQXJyYXk6
OmNyZWF0ZShleGVjLT52bSgpLCBzdHJ1Y3R1cmUsIGluaXRpYWxMZW5ndGgpKTsKKyAgICBKU0Fy
cmF5KiByZXN1bHQgPSBKU0FycmF5Ojp0cnlDcmVhdGUodm0sIHN0cnVjdHVyZSwgaW5pdGlhbExl
bmd0aCk7CisgICAgaWYgKFVOTElLRUxZKCFyZXN1bHQpKSB7CisgICAgICAgIHRocm93T3V0T2ZN
ZW1vcnlFcnJvcihleGVjLCBzY29wZSk7CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0K
KyAgICByZXR1cm4gQXJyYXlBbGxvY2F0aW9uUHJvZmlsZTo6dXBkYXRlTGFzdEFsbG9jYXRpb25G
b3IocHJvZmlsZSwgcmVzdWx0KTsKIH0KIAogaW5saW5lIEpTQXJyYXkqIGNvbnN0cnVjdEVtcHR5
QXJyYXkoRXhlY1N0YXRlKiBleGVjLCBBcnJheUFsbG9jYXRpb25Qcm9maWxlKiBwcm9maWxlLCB1
bnNpZ25lZCBpbml0aWFsTGVuZ3RoID0gMCwgSlNWYWx1ZSBuZXdUYXJnZXQgPSBKU1ZhbHVlKCkp
Cg==
</data>
<flag name="review"
          id="329640"
          type_id="1"
          status="+"
          setter="saam"
    />
          </attachment>
      

    </bug>

</bugzilla>