<?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>181221</bug_id>
          
          <creation_ts>2018-01-02 14:49:52 -0800</creation_ts>
          <short_desc>Ensure that poisoned pointers do not look like double or int32 JSValues.</short_desc>
          <delta_ts>2018-01-02 16:57:58 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>JavaScriptCore</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="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>rmorisset</cc>
    
    <cc>saam</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1385263</commentid>
    <comment_count>0</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2018-01-02 14:49:52 -0800</bug_when>
    <thetext>This means that the top 16 bits of any poisoned bits should be 0.

&lt;rdar://problem/36248638&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1385273</commentid>
    <comment_count>1</comment_count>
      <attachid>330344</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2018-01-02 15:23:44 -0800</bug_when>
    <thetext>Created attachment 330344
proposed patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1385281</commentid>
    <comment_count>2</comment_count>
      <attachid>330344</attachid>
    <who name="JF Bastien">jfbastien</who>
    <bug_when>2018-01-02 15:38:09 -0800</bug_when>
    <thetext>Comment on attachment 330344
proposed patch.

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

r=me

&gt; Source/WTF/wtf/Poisoned.cpp:40
&gt; +    } while (!(poison &gt;&gt; 32)); // Ensure that bits 32-47 are not completely 0.

You only really need to loop for one of the two calls to cryptographicallyRandomNumber, because the first one&apos;s top 16 bits are the only part that are in bits 32-47.

&gt; Source/WTF/wtf/WTFAssertions.cpp:2
&gt; + * Copyright (C) 2017 Apple Inc. All rights reserved.

2018

&gt; Source/WTF/wtf/WTFAssertions.cpp:35
&gt; +struct DummyClass { };

Pedantic pedantry: DummyStruct?

&gt; Source/WTF/wtf/WTFAssertions.cpp:57
&gt; +static_assert(!(makeConstExprPoison(0xffffffff) &amp; 0x3), &quot;ensure bottom 2 alignment bits are available for use as flag bits.&quot;);

You don&apos;t test bit 2 is set.

&gt; Source/WTF/wtf/WTFAssertions.cpp:58
&gt; +

Do you have tests equivalent to these but for the non-constexpr version?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1385291</commentid>
    <comment_count>3</comment_count>
      <attachid>330344</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2018-01-02 15:50:09 -0800</bug_when>
    <thetext>Comment on attachment 330344
proposed patch.

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

&gt;&gt; Source/WTF/wtf/Poisoned.cpp:40
&gt;&gt; +    } while (!(poison &gt;&gt; 32)); // Ensure that bits 32-47 are not completely 0.
&gt; 
&gt; You only really need to loop for one of the two calls to cryptographicallyRandomNumber, because the first one&apos;s top 16 bits are the only part that are in bits 32-47.

The second term can also contribute non-zero bits to bits 32-47.  Plus this function is only executed a finite number of times ever.  So, perf is not a relevant factor here.

&gt;&gt; Source/WTF/wtf/WTFAssertions.cpp:2
&gt;&gt; + * Copyright (C) 2017-2018 Apple Inc. All rights reserved.
&gt; 
&gt; 2018

2017-2018 because this files was renamed from PointerAsserts.cpp which was introduced in 2017.

&gt;&gt; Source/WTF/wtf/WTFAssertions.cpp:35
&gt;&gt;  struct DummyClass { };
&gt; 
&gt; Pedantic pedantry: DummyStruct?

Sure but I&apos;ll do that in a subsequent patch since it is not directly related to this one.

&gt;&gt; Source/WTF/wtf/WTFAssertions.cpp:57
&gt;&gt; +static_assert(!(makeConstExprPoison(0xffffffff) &amp; 0x3), &quot;ensure bottom 2 alignment bits are available for use as flag bits.&quot;);
&gt; 
&gt; You don&apos;t test bit 2 is set.

Sure, I&apos;ll add those asserts just to be pedantic.

&gt;&gt; Source/WTF/wtf/WTFAssertions.cpp:58
&gt;&gt; +
&gt; 
&gt; Do you have tests equivalent to these but for the non-constexpr version?

See body of makePoison().  I have 2 RELEASE_ASSERTs.  The other 2 conditions are explicitly spelled out in the code already.  So, I didn&apos;t assert those 2.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1385295</commentid>
    <comment_count>4</comment_count>
      <attachid>330348</attachid>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2018-01-02 16:06:36 -0800</bug_when>
    <thetext>Created attachment 330348
patch for landing w/ wincairo build fix.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1385316</commentid>
    <comment_count>5</comment_count>
    <who name="Mark Lam">mark.lam</who>
    <bug_when>2018-01-02 16:57:58 -0800</bug_when>
    <thetext>Thanks for the review.  Landed in r226344: &lt;http://trac.webkit.org/r226344&gt;.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>330344</attachid>
            <date>2018-01-02 15:23:44 -0800</date>
            <delta_ts>2018-01-02 16:06:36 -0800</delta_ts>
            <desc>proposed patch.</desc>
            <filename>bug-181221.patch</filename>
            <type>text/plain</type>
            <size>18441</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyMjYzMzcpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDQxIEBACisyMDE4LTAxLTAyICBNYXJrIExhbSAgPG1hcmsubGFt
QGFwcGxlLmNvbT4KKworICAgICAgICBFbnN1cmUgdGhhdCBwb2lzb25lZCBwb2ludGVycyBkbyBu
b3QgbG9vayBsaWtlIGRvdWJsZSBvciBpbnQzMiBKU1ZhbHVlcy4KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MTIyMQorICAgICAgICA8cmRhcjovL3By
b2JsZW0vMzYyNDg2Mzg+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgQ2hhbmdlZCBwb2lzb24gdmFsdWVzIHRvIGVuc3VyZSB0aGF0IHBvaXNvbmVkIGJp
dHMgKGkuZS4gcG9pbnRlciBeIHBvaXNvbikKKyAgICAgICAgc2F0aXNmaWVzIHRoZSBmb2xsb3dp
bmcgY29uZGl0aW9uczoKKyAgICAgICAgMS4gYml0cyA0OC02MyBhcmUgMDogdGhpcyBlbnN1cmVz
IHRoYXQgcG9pc29uZWQgYml0cyBsb29rIGxpa2UgYSBwb2ludGVyIGFuZAorICAgICAgICAgICBu
b3QgYSBkb3VibGUgb3IgaW50MzIgSlNWYWx1ZS4KKyAgICAgICAgMi4gYml0cyAzMi00NyBhcmUg
bm90IGNvbXBsZXRlbHkgMC4KKyAgICAgICAgMy4gYml0IDIgaXMgbmV2ZXIgMDogdGhpcyBlbnN1
cmVzIHRoYXQgdGhlIHBvaXNvbmVkIHZhbHVlIG9mIGEgbm9uLW51bGwgcG9pbnRlcgorICAgICAg
ICAgICB3aWxsIG5ldmVyIGJlIG51bGwuCisgICAgICAgIDQuIGJpdCAwLTEgaXMgYWx3YXlzIDA6
IHRoaXMgZW5zdXJlcyB0aGF0IGNsaWVudHMgY2FuIHN0aWxsIHVzZSB0aGUgMiBib3R0b20KKyAg
ICAgICAgICAgYml0cyBvZiB0aGUgcG9pc29uZWQgdmFsdWUgYXMgZmxhZyBiaXRzIChqdXN0IGxp
a2UgdGhleSB3ZXJlIGFibGUgdG8gZG8gd2l0aAorICAgICAgICAgICBwb2ludGVyIHZhbHVlcyku
ICBUaGUgb25seSBkaWZmZXJlbmNlIGlzIHRoYXQgYml0IDIgY2FuIG5vIGxvbmdlciBiZSB1c2Vk
IGZvcgorICAgICAgICAgICBmbGFnIGJpdHMgYmVjYXVzZSBwb2lzb25lZCB2YWx1ZXMgbmVlZCBp
dCB0byBhbHdheXMgYmUgc2V0LgorCisgICAgICAgICogV1RGLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2o6CisgICAgICAgICogd3RmL0NNYWtlTGlzdHMudHh0OgorICAgICAgICAqIHd0Zi9Qb2lu
dGVyQXNzZXJ0cy5jcHA6IFJlbW92ZWQuCisKKyAgICAgICAgKiB3dGYvUG9pc29uZWQuY3BwOgor
ICAgICAgICAoV1RGOjptYWtlUG9pc29uKToKKyAgICAgICAgLSBVcGRhdGVkIHRvIHNhdGlzZnkg
dGhlIGFib3ZlIHJlcXVpcmVtZW50cy4KKyAgICAgICAgCisgICAgICAgICogd3RmL1BvaXNvbmVk
Lmg6CisgICAgICAgIChXVEY6Om1ha2VDb25zdEV4cHJQb2lzb24pOgorICAgICAgICAoV1RGOjpt
YWtlUG9pc29uKTogRGVsZXRlZC4KKworICAgICAgICAqIHd0Zi9XVEZBc3NlcnRpb25zLmNwcDog
Q29waWVkIGZyb20gU291cmNlL1dURi93dGYvUG9pbnRlckFzc2VydHMuY3BwLgorICAgICAgICAt
IFJlbmFtZWQgZnJvbSBQb2ludGVyQXNzZXJ0cy5jcHAgYmVjYXVzZSB3ZSBhc3NlcnQgbW9yZSB0
aGluZ3MgdGhhbiBqdXN0CisgICAgICAgICAgcG9pbnRlcnMgaGVyZS4KKyAgICAgICAgLSBBZGRl
ZCBzb21lIGFzc2VydGlvbnMgdG8gdGVzdCBtYWtlQ29uc3RFeHByUG9pc29uKCkgdG8gZW5zdXJl
IHRoYXQgaXQgc2F0aXNmaWVzCisgICAgICAgICAgdGhlIGFib3ZlIHJlcXVpcmVtZW50cy4KKwog
MjAxNy0xMi0yOCAgWXVzdWtlIFN1enVraSAgPHV0YXRhbmUudGVhQGdtYWlsLmNvbT4KIAogICAg
ICAgICBSZW1vdmUgc3RkOjpjaHJvbm8gaWYgaXQgaXMgbm90IHVzZWQgZm9yIEFyZ3VtZW50Q29k
ZXIgb3IgUGVyc2lzdGVudENvZGVyCkluZGV4OiBTb3VyY2UvV1RGL1dURi54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oJKHJldmlzaW9uIDIyNjMyOCkKKysrIFNvdXJjZS9XVEYvV1RGLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oJKHdvcmtpbmcgY29weSkKQEAgLTE1MCw3ICsxNTAsNyBAQAogCQlF
M0EzMkJDNDFGQzgzMEUyMDA3RDdFNzYgLyogSlNWYWx1ZU1hbGxvYy5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFM0EzMkJDMjFGQzgzMEUyMDA3RDdF
NzYgLyogSlNWYWx1ZU1hbGxvYy5jcHAgKi87IH07CiAJCUU0QTBBRDM5MUE5NjI0NTUwMDUzNkRG
NiAvKiBXb3JrUXVldWUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gRTRBMEFEMzcxQTk2MjQ1NTAwNTM2REY2IC8qIFdvcmtRdWV1ZS5jcHAgKi87IH07
CiAJCUU0QTBBRDNEMUE5NjI1M0MwMDUzNkRGNiAvKiBXb3JrUXVldWVDb2NvYS5jcHAgaW4gU291
cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBFNEEwQUQzQzFBOTYyNTND
MDA1MzZERjYgLyogV29ya1F1ZXVlQ29jb2EuY3BwICovOyB9OwotCQlGRTA1RkFGRjFGRTUwMDc1
MDAwOTMyMzAgLyogUG9pbnRlckFzc2VydHMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gRkUwNUZBRkUxRkU1MDA3NTAwMDkzMjMwIC8qIFBvaW50ZXJB
c3NlcnRzLmNwcCAqLzsgfTsKKwkJRkUwNUZBRkYxRkU1MDA3NTAwMDkzMjMwIC8qIFdURkFzc2Vy
dGlvbnMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RkUwNUZBRkUxRkU1MDA3NTAwMDkzMjMwIC8qIFdURkFzc2VydGlvbnMuY3BwICovOyB9OwogCQlG
RTg1NDE2RTFGQkUyODVEMDA4REE1REEgLyogUG9pc29uZWQuY3BwIGluIFNvdXJjZXMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRkU4NTQxNkMxRkJFMjg1QjAwOERBNURBIC8q
IFBvaXNvbmVkLmNwcCAqLzsgfTsKIAkJRkVEQUNEM0QxNjMwRjgzRjAwQzY5NjM0IC8qIFN0YWNr
U3RhdHMuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
RkVEQUNEM0IxNjMwRjgzRjAwQzY5NjM0IC8qIFN0YWNrU3RhdHMuY3BwICovOyB9OwogLyogRW5k
IFBCWEJ1aWxkRmlsZSBzZWN0aW9uICovCkBAIC02MTksNyArNjE5LDcgQEAKIAkJRUY3RDZDRDU5
RDg2NDJBOEEwREE4NkFEIC8qIFN0YWNrVHJhY2UuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gU3RhY2tUcmFjZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGNzJC
QkRCMTA3RkE0MjQ4ODYxNzhCOUUgLyogU3ltYm9sSW1wbC5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBTeW1ib2xJbXBsLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJRkUwNUZBRTYxRkRCMjE0MzAwMDkzMjMwIC8qIER1bWJQdHJUcmFpdHMuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRHVtYlB0clRyYWl0cy5oOyBzb3VyY2VUcmVl
ID0gIjxncm91cD4iOyB9OwotCQlGRTA1RkFGRTFGRTUwMDc1MDAwOTMyMzAgLyogUG9pbnRlckFz
c2VydHMuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUG9pbnRlckFz
c2VydHMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlGRTA1RkFGRTFGRTUwMDc1
MDAwOTMyMzAgLyogV1RGQXNzZXJ0aW9ucy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5j
cHA7IHBhdGggPSBXVEZBc3NlcnRpb25zLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJRkUwNUZCMDQxRkU4NDUzMjAwMDkzMjMwIC8qIFBvaXNvbmVkVW5pcXVlUHRyLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFBvaXNvbmVkVW5pcXVlUHRyLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUZFODIyNTMwMUIyQTFFNUIwMEJBNjhGRCAvKiBOYWtlZFB0
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBOYWtlZFB0ci5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQlGRTg1NDE2QzFGQkUyODVCMDA4REE1REEgLyogUG9pc29u
ZWQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gUG9pc29uZWQuY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtOTgzLDcgKzk4Myw2IEBACiAJCQkJMEY4
MjRBNjUxQjc0NDNBMDAwMkUzNDVEIC8qIFBhcmtpbmdMb3QuaCAqLywKIAkJCQlBODc2REJENzE1
MTgxNkU1MDBEQURCOTUgLyogUGxhdGZvcm0uaCAqLywKIAkJCQlFMzIwMEFCNDFFOUE1MzZEMDAz
QjU5RDIgLyogUGxhdGZvcm1SZWdpc3RlcnMuaCAqLywKLQkJCQlGRTA1RkFGRTFGRTUwMDc1MDAw
OTMyMzAgLyogUG9pbnRlckFzc2VydHMuY3BwICovLAogCQkJCTBGRjg2MDk0MUJDQ0JENzQwMDQ1
MTI3RiAvKiBQb2ludGVyQ29tcGFyaXNvbi5oICovLAogCQkJCUZFODU0MTZDMUZCRTI4NUIwMDhE
QTVEQSAvKiBQb2lzb25lZC5jcHAgKi8sCiAJCQkJRkU4NTQxNkQxRkJFMjg1QzAwOERBNURBIC8q
IFBvaXNvbmVkLmggKi8sCkBAIC0xMDg5LDYgKzEwODgsNyBAQAogCQkJCUE4QTQ3MzcwMTUxQTgy
NUIwMDQxMjNGRiAvKiBWZWN0b3IuaCAqLywKIAkJCQlBOEE0NzM3MTE1MUE4MjVCMDA0MTIzRkYg
LyogVmVjdG9yVHJhaXRzLmggKi8sCiAJCQkJQThBNDczNzIxNTFBODI1QjAwNDEyM0ZGIC8qIFZN
VGFncy5oICovLAorCQkJCUZFMDVGQUZFMUZFNTAwNzUwMDA5MzIzMCAvKiBXVEZBc3NlcnRpb25z
LmNwcCAqLywKIAkJCQkwRjY2QjI4ODFEQzk3QkFCMDA0QTFEM0YgLyogV2FsbFRpbWUuY3BwICov
LAogCQkJCTBGNjZCMjg5MURDOTdCQUIwMDRBMUQzRiAvKiBXYWxsVGltZS5oICovLAogCQkJCTk3
NENGQzhEMTZBNEYzMjcwMDZENTQwNCAvKiBXZWFrUHRyLmggKi8sCkBAIC0xNDIwLDcgKzE0MjAs
NyBAQAogCQkJCTBGNjZCMjhBMURDOTdCQUIwMDRBMUQzRiAvKiBDbG9ja1R5cGUuY3BwIGluIFNv
dXJjZXMgKi8sCiAJCQkJQThBNDc0NjAxNTFBODI1QjAwNDEyM0ZGIC8qIENvbGxhdG9yRGVmYXVs
dC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBOEE0NzQ2MzE1MUE4MjVCMDA0MTIzRkYgLyogQ29s
bGF0b3JJQ1UuY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJRkUwNUZBRkYxRkU1MDA3NTAwMDkzMjMw
IC8qIFBvaW50ZXJBc3NlcnRzLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUZFMDVGQUZGMUZFNTAw
NzUwMDA5MzIzMCAvKiBXVEZBc3NlcnRpb25zLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGOEYy
QjkyMTcyRTAxMDMwMDdEQkRBNSAvKiBDb21waWxhdGlvblRocmVhZC5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQkwRjMwQ0I1QTFGQ0RGMTM0MDA0QjUzMjMgLyogQ29uY3VycmVudFB0ckhhc2hTZXQu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY4RTg1REIxRkQ0ODVCMDAwNjkxODg5IC8qIENvdW50
aW5nTG9jay5jcHAgaW4gU291cmNlcyAqLywKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL0NNYWtlTGlz
dHMudHh0Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0CShyZXZp
c2lvbiAyMjYzMjgpCisrKyBTb3VyY2UvV1RGL3d0Zi9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBj
b3B5KQpAQCAtMjYzLDcgKzI2Myw2IEBAIHNldChXVEZfU09VUkNFUwogICAgIFBhcmFsbGVsSGVs
cGVyUG9vbC5jcHAKICAgICBQYXJhbGxlbEpvYnNHZW5lcmljLmNwcAogICAgIFBhcmtpbmdMb3Qu
Y3BwCi0gICAgUG9pbnRlckFzc2VydHMuY3BwCiAgICAgUG9pc29uZWQuY3BwCiAgICAgUHJpbnRT
dHJlYW0uY3BwCiAgICAgUkFNU2l6ZS5jcHAKQEAgLTI4NSw2ICsyODQsNyBAQCBzZXQoV1RGX1NP
VVJDRVMKICAgICBUaW1lV2l0aER5bmFtaWNDbG9ja1R5cGUuY3BwCiAgICAgVGltaW5nU2NvcGUu
Y3BwCiAgICAgVVVJRC5jcHAKKyAgICBXVEZBc3NlcnRpb25zLmNwcAogICAgIFdhbGxUaW1lLmNw
cAogICAgIFdvcmRMb2NrLmNwcAogICAgIFdvcmtRdWV1ZS5jcHAKSW5kZXg6IFNvdXJjZS9XVEYv
d3RmL1BvaW50ZXJBc3NlcnRzLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9Qb2lu
dGVyQXNzZXJ0cy5jcHAJKHJldmlzaW9uIDIyNjMyOCkKKysrIFNvdXJjZS9XVEYvd3RmL1BvaW50
ZXJBc3NlcnRzLmNwcAkobm9uZXhpc3RlbnQpCkBAIC0xLDQ5ICswLDAgQEAKLS8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgot
ICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycg
QU5EIEFOWQotICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAot
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCi0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0K
LSNpbmNsdWRlIDx3dGYvUG9pc29uZWQuaD4KLSNpbmNsdWRlIDx3dGYvUG9pc29uZWRVbmlxdWVQ
dHIuaD4KLSNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+Ci0KLW5hbWVzcGFjZSBXVEYgewotCi1uYW1l
c3BhY2Ugewotc3RydWN0IER1bW15Q2xhc3MgeyB9OwotfQotCi1zdGF0aWNfYXNzZXJ0KHNpemVv
ZihSZWY8RHVtbXlDbGFzcz4pID09IHNpemVvZihEdW1teUNsYXNzKiksICIiKTsKLXN0YXRpY19h
c3NlcnQoc2l6ZW9mKFBvaXNvbmVkUmVmPDB4ZmZmZiwgRHVtbXlDbGFzcz4pID09IHNpemVvZihE
dW1teUNsYXNzKiksICIiKTsKLQotc3RhdGljX2Fzc2VydChzaXplb2YoUmVmUHRyPER1bW15Q2xh
c3M+KSA9PSBzaXplb2YoRHVtbXlDbGFzcyopLCAiIik7Ci1zdGF0aWNfYXNzZXJ0KHNpemVvZihQ
b2lzb25lZFJlZlB0cjwweGZmZmYsIER1bW15Q2xhc3M+KSA9PSBzaXplb2YoRHVtbXlDbGFzcyop
LCAiIik7Ci0KLXN0YXRpY19hc3NlcnQoc2l6ZW9mKFBvaXNvbmVkVW5pcXVlUHRyPDB4ZmZmZiwg
RHVtbXlDbGFzcz4pID09IHNpemVvZihEdW1teUNsYXNzKiksICIiKTsKLXN0YXRpY19hc3NlcnQo
c2l6ZW9mKFBvaXNvbmVkVW5pcXVlUHRyPDB4ZmZmZiwgaW50W10+KSA9PSBzaXplb2YoaW50Kiks
ICIiKTsKLXN0YXRpY19hc3NlcnQoc2l6ZW9mKFBvaXNvbmVkVW5pcXVlUHRyPDB4ZmZmZiwgRHVt
bXlDbGFzc1tdPikgPT0gc2l6ZW9mKER1bW15Q2xhc3MqKSwgIiIpOwotCi19IC8vIG5hbWVzcGFj
ZSBXVEYKLQpJbmRleDogU291cmNlL1dURi93dGYvUG9pc29uZWQuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XVEYvd3RmL1BvaXNvbmVkLmNwcAkocmV2aXNpb24gMjI2MzI4KQorKysgU291cmNl
L1dURi93dGYvUG9pc29uZWQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDUgKzEsNSBAQAogLyoK
LSAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTctMjAxOCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CiAgKgogICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CiAgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKQEAgLTMyLDIyICszMiwyOSBAQCBuYW1l
c3BhY2UgV1RGIHsKIAogdWludHB0cl90IG1ha2VQb2lzb24oKQogewotICAgIHVpbnRwdHJfdCBr
ZXkgPSBjcnlwdG9ncmFwaGljYWxseVJhbmRvbU51bWJlcigpOworICAgIHVpbnRwdHJfdCBwb2lz
b24gPSAwOwogI2lmIEVOQUJMRShQT0lTT04pCi0gICAga2V5ID0gKGtleSA8PCAzMikgXiAoc3Rh
dGljX2Nhc3Q8dWludHB0cl90PihjcnlwdG9ncmFwaGljYWxseVJhbmRvbU51bWJlcigpKSA8PCAz
KTsKLSAgICAvLyBFbnN1cmUgdGhhdCB0aGUgcG9pc29uZWQgYml0cyAocG9pbnRlciBeIGtleSkg
ZG8gbm90IG1ha2UgYSB2YWxpZCBwb2ludGVyIGFuZAotICAgIC8vIGNhbm5vdCBiZSAwLiBXZSBl
bnN1cmUgdGhhdCBpdCBpcyB6ZXJvIHNvIHRoYXQgdGhlIHBvaXNvbmVkIGJpdHMgY2FuIGFsc28g
YmUKLSAgICAvLyB1c2VkIGZvciBhIG5vdG1hbCB6ZXJvIGNoZWNrIHdpdGhvdXQgbmVlZGluZyB0
byBkZWNvZGVkIGZpcnN0LgotICAgIGtleSB8PSAoc3RhdGljX2Nhc3Q8dWludHB0cl90PigweDEp
IDw8IDYzKTsKLSAgICAvLyBFbnN1cmUgdGhhdCB0aGUgYm90dG9tIGFsaWdubWVudCBiaXRzIGFy
ZSBzdGlsbCAwIHNvIHRoYXQgdGhlIHBvaXNvbmVkIGJpdHMgd2lsbAorICAgIGRvIHsKKyAgICAg
ICAgcG9pc29uID0gY3J5cHRvZ3JhcGhpY2FsbHlSYW5kb21OdW1iZXIoKTsKKyAgICAgICAgcG9p
c29uID0gKHBvaXNvbiA8PCAxNikgXiAoc3RhdGljX2Nhc3Q8dWludHB0cl90PihjcnlwdG9ncmFw
aGljYWxseVJhbmRvbU51bWJlcigpKSA8PCAzKTsKKyAgICB9IHdoaWxlICghKHBvaXNvbiA+PiAz
MikpOyAvLyBFbnN1cmUgdGhhdCBiaXRzIDMyLTQ3IGFyZSBub3QgY29tcGxldGVseSAwLgorCisg
ICAgLy8gRW5zdXJlIHRoYXQgdGhlIHBvaXNvbmVkIGJpdHMgKHBvaW50ZXIgXiBwb2lzb24pIGxv
b2tzIGxpa2UgYSB2YWxpZCBwb2ludGVyLgorICAgIFJFTEVBU0VfQVNTRVJUKHBvaXNvbiAmJiAh
KHBvaXNvbiA+PiA0OCkpOworCisgICAgLy8gRW5zdXJlIHRoYXQgdGhlIHBvaXNvbmVkIGJpdHMg
KHBvaW50ZXIgXiBwb2lzb24pIGNhbm5vdCBiZSAwLiBUaGlzIGlzIHNvIHRoYXQgdGhlIHBvaXNv
bmVkCisgICAgLy8gYml0cyBjYW4gYWxzbyBiZSB1c2VkIGZvciBhIG5vcm1hbCB6ZXJvIGNoZWNr
IHdpdGhvdXQgbmVlZGluZyB0byBiZSBkZWNvZGVkIGZpcnN0LgorICAgIHBvaXNvbiB8PSAoMSA8
PCAyKTsKKworICAgIC8vIEVuc3VyZSB0aGF0IHRoZSBib3R0b20gMiBhbGlnbm1lbnQgYml0cyBh
cmUgc3RpbGwgMCBzbyB0aGF0IHRoZSBwb2lzb25lZCBiaXRzIHdpbGwKICAgICAvLyBzdGlsbCBw
cmVzZXJ2ZSB0aGUgcHJvcGVydGllcyBvZiBhIHBvaW50ZXIgd2hlcmUgdGhlc2UgYml0cyBhcmUg
ZXhwZWN0ZWQgdG8gYmUgMC4KICAgICAvLyBUaGlzIGFsbG93cyB0aGUgcG9pc29uZWQgYml0cyB0
byBiZSB1c2VkIGluIHBsYWNlIG9mIHRoZSBwb2ludGVyIGJ5IGNsaWVudHMgdGhhdAogICAgIC8v
IHJlbHkgb24gdGhpcyBwcm9wZXJ0eSBvZiBwb2ludGVycyBhbmQgc2V0cyBmbGFncyBpbiB0aGUg
bG93IGJpdHMuCi0gICAga2V5ICY9IH5zdGF0aWNfY2FzdDx1aW50cHRyX3Q+KDB4Nyk7Ci0jZWxz
ZQotICAgIGtleSA9IDA7IC8vIFBvaXNvbmluZyBpcyBub3Qgc3VwcG9ydGVkIG9uIDMyLWJpdCBv
ciBub24tZGFyd2luIHBsYXRmb3JtcyB5ZXQuCisgICAgLy8gTm90ZTogYSByZWd1bGFyIHBvaW50
ZXIgaGFzIDMgYWxpZ25tZW50IGJpdHMsIGJ1dCB0aGUgcG9pc29uZWQgYml0cyBuZWVkIHRvIHVz
ZSBvbmUKKyAgICAvLyAoc2VlIGFib3ZlKS4gSGVuY2UsIGNsaWVudHMgY2FuIG9ubHkgdXNlIDIg
Yml0cyBmb3IgZmxhZ3MuCisgICAgUkVMRUFTRV9BU1NFUlQoIShwb2lzb24gJiAweDMpKTsKICNl
bmRpZgotICAgIHJldHVybiBrZXk7CisgICAgcmV0dXJuIHBvaXNvbjsKIH0KIAogfSAvLyBuYW1l
c3BhY2UgV1RGCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9Qb2lzb25lZC5oCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XVEYvd3RmL1BvaXNvbmVkLmgJKHJldmlzaW9uIDIyNjMyOCkKKysrIFNvdXJjZS9X
VEYvd3RmL1BvaXNvbmVkLmgJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICog
Q29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAxNy0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMjE0LDEyICsyMTQsMTYgQEAgaW5saW5l
IHZvaWQgc3dhcChQb2lzb25lZEltcGw8SzEsIGsxLCBUMQogCiBXVEZfRVhQT1JUX1BSSVZBVEUg
dWludHB0cl90IG1ha2VQb2lzb24oKTsKIAotaW5saW5lIGNvbnN0ZXhwciB1aW50cHRyX3QgbWFr
ZVBvaXNvbih1aW50MzJfdCBrZXkpCitpbmxpbmUgY29uc3RleHByIHVpbnRwdHJfdCBtYWtlQ29u
c3RFeHByUG9pc29uKHVpbnQzMl90IGtleSkKIHsKICNpZiBFTkFCTEUoUE9JU09OKQotICAgIHVp
bnRwdHJfdCBwb2lzb24xID0gc3RhdGljX2Nhc3Q8dWludHB0cl90PihrZXkpICogNjkwNjk2OTA2
OSArIDEyMzQ1Njc7Ci0gICAgdWludHB0cl90IHBvaXNvbjIgPSBzdGF0aWNfY2FzdDx1aW50cHRy
X3Q+KGtleSkgKiA4MjUzNzI5ICsgMjM5NjQwMzsKLSAgICByZXR1cm4gKChwb2lzb24xIDw8IDMp
IF4gKHBvaXNvbjIgPDwgMzIpKSB8IChzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KDEpIDw8IDYzKTsK
KyAgICB1aW50cHRyX3QgdWludHB0cktleSA9IGtleTsKKyAgICB1aW50cHRyX3QgcG9pc29uMSA9
IHVpbnRwdHJLZXkgKiA2OTA2OTY5MDY5ICsgMTIzNDU2NzsKKyAgICB1aW50cHRyX3QgcG9pc29u
MiA9IHVpbnRwdHJLZXkgKiA4MjUzNzI5ICsgMjM5NjQwMzsKKyAgICB1aW50cHRyX3QgcG9pc29u
ID0gKHBvaXNvbjEgPDwgMykgXiAocG9pc29uMiA8PCAxNik7CisgICAgcG9pc29uICY9IH4oc3Rh
dGljX2Nhc3Q8dWludHB0cl90PigweGZmZmYpIDw8IDQ4KTsgLy8gRW5zdXJlIHRoYXQgcG9pc29u
ZWQgYml0cyBsb29rIGxpa2UgYSBwb2ludGVyLgorICAgIHBvaXNvbiB8PSAoMSA8PCAyKTsgLy8g
RW5zdXJlIHRoYXQgcG9pc29uZWQgYml0cyBjYW5ub3QgYmUgMC4KKyAgICByZXR1cm4gcG9pc29u
OwogI2Vsc2UKICAgICByZXR1cm4gKHZvaWQpa2V5LCAwOwogI2VuZGlmCkBAIC0yMjksNyArMjMz
LDcgQEAgdGVtcGxhdGU8dWludHB0cl90JiBrZXksIHR5cGVuYW1lIFQ+CiB1c2luZyBQb2lzb25l
ZCA9IFBvaXNvbmVkSW1wbDx1aW50cHRyX3QmLCBrZXksIFQ+OwogCiB0ZW1wbGF0ZTx1aW50MzJf
dCBrZXksIHR5cGVuYW1lIFQ+Ci11c2luZyBDb25zdEV4cHJQb2lzb25lZCA9IFBvaXNvbmVkSW1w
bDx1aW50cHRyX3QsIG1ha2VQb2lzb24oa2V5KSwgVD47Cit1c2luZyBDb25zdEV4cHJQb2lzb25l
ZCA9IFBvaXNvbmVkSW1wbDx1aW50cHRyX3QsIG1ha2VDb25zdEV4cHJQb2lzb24oa2V5KSwgVD47
CiAKIHRlbXBsYXRlPHVpbnQzMl90IGtleSwgdHlwZW5hbWUgVD4KIHN0cnVjdCBDb25zdEV4cHJQ
b2lzb25lZFB0clRyYWl0cyB7CkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9XVEZBc3NlcnRpb25zLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9XVEZBc3NlcnRpb25zLmNwcAkocmV2aXNp
b24gMjI2MzI4KQkoZnJvbSBTb3VyY2UvV1RGL3d0Zi9Qb2ludGVyQXNzZXJ0cy5jcHA6MjI2MzI4
KQorKysgU291cmNlL1dURi93dGYvV1RGQXNzZXJ0aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAg
LTAsMCArMSw0OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJF
Q1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwg
REFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBP
RiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAq
IFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9O
IEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNU
IExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICov
CisKKyNpbmNsdWRlICJjb25maWcuaCIKKworI2luY2x1ZGUgPHd0Zi9Qb2lzb25lZC5oPgorI2lu
Y2x1ZGUgPHd0Zi9Qb2lzb25lZFVuaXF1ZVB0ci5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4K
KworbmFtZXNwYWNlIFdURiB7CisKK25hbWVzcGFjZSB7CitzdHJ1Y3QgRHVtbXlDbGFzcyB7IH07
Cit9CisKK3N0YXRpY19hc3NlcnQoc2l6ZW9mKFJlZjxEdW1teUNsYXNzPikgPT0gc2l6ZW9mKER1
bW15Q2xhc3MqKSwgIiIpOworc3RhdGljX2Fzc2VydChzaXplb2YoUG9pc29uZWRSZWY8MHhmZmZm
LCBEdW1teUNsYXNzPikgPT0gc2l6ZW9mKER1bW15Q2xhc3MqKSwgIiIpOworCitzdGF0aWNfYXNz
ZXJ0KHNpemVvZihSZWZQdHI8RHVtbXlDbGFzcz4pID09IHNpemVvZihEdW1teUNsYXNzKiksICIi
KTsKK3N0YXRpY19hc3NlcnQoc2l6ZW9mKFBvaXNvbmVkUmVmUHRyPDB4ZmZmZiwgRHVtbXlDbGFz
cz4pID09IHNpemVvZihEdW1teUNsYXNzKiksICIiKTsKKworc3RhdGljX2Fzc2VydChzaXplb2Yo
UG9pc29uZWRVbmlxdWVQdHI8MHhmZmZmLCBEdW1teUNsYXNzPikgPT0gc2l6ZW9mKER1bW15Q2xh
c3MqKSwgIiIpOworc3RhdGljX2Fzc2VydChzaXplb2YoUG9pc29uZWRVbmlxdWVQdHI8MHhmZmZm
LCBpbnRbXT4pID09IHNpemVvZihpbnQqKSwgIiIpOworc3RhdGljX2Fzc2VydChzaXplb2YoUG9p
c29uZWRVbmlxdWVQdHI8MHhmZmZmLCBEdW1teUNsYXNzW10+KSA9PSBzaXplb2YoRHVtbXlDbGFz
cyopLCAiIik7CisKK30gLy8gbmFtZXNwYWNlIFdURgorCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9X
VEZBc3NlcnRpb25zLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9XVEZBc3NlcnRp
b25zLmNwcAkocmV2aXNpb24gMjI2MzI4KQorKysgU291cmNlL1dURi93dGYvV1RGQXNzZXJ0aW9u
cy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChD
KSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENvcHlyaWdodCAoQykg
MjAxNy0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwpAQCAtMzUsNiArMzUsMjcgQEAgbmFtZXNwYWNlIHsKIHN0cnVjdCBE
dW1teUNsYXNzIHsgfTsKIH0KIAorc3RhdGljX2Fzc2VydCghKG1ha2VDb25zdEV4cHJQb2lzb24o
MSkgPj4gNDgpLCAicG9pc29uZWQgYml0cyBzaG91bGQgbG9vayBsaWtlIGEgcG9pbnRlci4iKTsK
K3N0YXRpY19hc3NlcnQoIShtYWtlQ29uc3RFeHByUG9pc29uKDEwMCkgPj4gNDgpLCAicG9pc29u
ZWQgYml0cyBzaG91bGQgbG9vayBsaWtlIGEgcG9pbnRlci4iKTsKK3N0YXRpY19hc3NlcnQoISht
YWtlQ29uc3RFeHByUG9pc29uKDEwMDApID4+IDQ4KSwgInBvaXNvbmVkIGJpdHMgc2hvdWxkIGxv
b2sgbGlrZSBhIHBvaW50ZXIuIik7CitzdGF0aWNfYXNzZXJ0KCEobWFrZUNvbnN0RXhwclBvaXNv
bigxMDAwMCkgPj4gNDgpLCAicG9pc29uZWQgYml0cyBzaG91bGQgbG9vayBsaWtlIGEgcG9pbnRl
ci4iKTsKK3N0YXRpY19hc3NlcnQoIShtYWtlQ29uc3RFeHByUG9pc29uKDEwMDAwMDApID4+IDQ4
KSwgInBvaXNvbmVkIGJpdHMgc2hvdWxkIGxvb2sgbGlrZSBhIHBvaW50ZXIuIik7CitzdGF0aWNf
YXNzZXJ0KCEobWFrZUNvbnN0RXhwclBvaXNvbigweGZmZmZmZmZmKSA+PiA0OCksICJwb2lzb25l
ZCBiaXRzIHNob3VsZCBsb29rIGxpa2UgYSBwb2ludGVyLiIpOworCitzdGF0aWNfYXNzZXJ0KCht
YWtlQ29uc3RFeHByUG9pc29uKDEpID4+IDMyKSwgImJpdHMgMzItNDcgb2YgcG9pc29uZWQgYml0
cyBzaG91bGQgbm90IGJlIG5vdCBjb21wbGV0ZWx5IDAuIik7CitzdGF0aWNfYXNzZXJ0KChtYWtl
Q29uc3RFeHByUG9pc29uKDEwMCkgPj4gMzIpLCAiYml0cyAzMi00NyBvZiBwb2lzb25lZCBiaXRz
IHNob3VsZCBub3QgYmUgbm90IGNvbXBsZXRlbHkgMC4iKTsKK3N0YXRpY19hc3NlcnQoKG1ha2VD
b25zdEV4cHJQb2lzb24oMTAwMCkgPj4gMzIpLCAiYml0cyAzMi00NyBvZiBwb2lzb25lZCBiaXRz
IHNob3VsZCBub3QgYmUgbm90IGNvbXBsZXRlbHkgMC4iKTsKK3N0YXRpY19hc3NlcnQoKG1ha2VD
b25zdEV4cHJQb2lzb24oMTAwMDApID4+IDMyKSwgImJpdHMgMzItNDcgb2YgcG9pc29uZWQgYml0
cyBzaG91bGQgbm90IGJlIG5vdCBjb21wbGV0ZWx5IDAuIik7CitzdGF0aWNfYXNzZXJ0KChtYWtl
Q29uc3RFeHByUG9pc29uKDEwMDAwMDApID4+IDMyKSwgImJpdHMgMzItNDcgb2YgcG9pc29uZWQg
Yml0cyBzaG91bGQgbm90IGJlIG5vdCBjb21wbGV0ZWx5IDAuIik7CitzdGF0aWNfYXNzZXJ0KCht
YWtlQ29uc3RFeHByUG9pc29uKDB4ZmZmZmZmZmYpID4+IDMyKSwgImJpdHMgMzItNDcgb2YgcG9p
c29uZWQgYml0cyBzaG91bGQgbm90IGJlIG5vdCBjb21wbGV0ZWx5IDAuIik7CisKK3N0YXRpY19h
c3NlcnQoIShtYWtlQ29uc3RFeHByUG9pc29uKDEpICYgMHgzKSwgImVuc3VyZSBib3R0b20gMiBh
bGlnbm1lbnQgYml0cyBhcmUgYXZhaWxhYmxlIGZvciB1c2UgYXMgZmxhZyBiaXRzLiIpOworc3Rh
dGljX2Fzc2VydCghKG1ha2VDb25zdEV4cHJQb2lzb24oMTAwKSAmIDB4MyksICJlbnN1cmUgYm90
dG9tIDIgYWxpZ25tZW50IGJpdHMgYXJlIGF2YWlsYWJsZSBmb3IgdXNlIGFzIGZsYWcgYml0cy4i
KTsKK3N0YXRpY19hc3NlcnQoIShtYWtlQ29uc3RFeHByUG9pc29uKDEwMDApICYgMHgzKSwgImVu
c3VyZSBib3R0b20gMiBhbGlnbm1lbnQgYml0cyBhcmUgYXZhaWxhYmxlIGZvciB1c2UgYXMgZmxh
ZyBiaXRzLiIpOworc3RhdGljX2Fzc2VydCghKG1ha2VDb25zdEV4cHJQb2lzb24oMTAwMDApICYg
MHgzKSwgImVuc3VyZSBib3R0b20gMiBhbGlnbm1lbnQgYml0cyBhcmUgYXZhaWxhYmxlIGZvciB1
c2UgYXMgZmxhZyBiaXRzLiIpOworc3RhdGljX2Fzc2VydCghKG1ha2VDb25zdEV4cHJQb2lzb24o
MTAwMDAwMCkgJiAweDMpLCAiZW5zdXJlIGJvdHRvbSAyIGFsaWdubWVudCBiaXRzIGFyZSBhdmFp
bGFibGUgZm9yIHVzZSBhcyBmbGFnIGJpdHMuIik7CitzdGF0aWNfYXNzZXJ0KCEobWFrZUNvbnN0
RXhwclBvaXNvbigweGZmZmZmZmZmKSAmIDB4MyksICJlbnN1cmUgYm90dG9tIDIgYWxpZ25tZW50
IGJpdHMgYXJlIGF2YWlsYWJsZSBmb3IgdXNlIGFzIGZsYWcgYml0cy4iKTsKKwogc3RhdGljX2Fz
c2VydChzaXplb2YoUmVmPER1bW15Q2xhc3M+KSA9PSBzaXplb2YoRHVtbXlDbGFzcyopLCAiIik7
CiBzdGF0aWNfYXNzZXJ0KHNpemVvZihQb2lzb25lZFJlZjwweGZmZmYsIER1bW15Q2xhc3M+KSA9
PSBzaXplb2YoRHVtbXlDbGFzcyopLCAiIik7CiAK
</data>
<flag name="review"
          id="349364"
          type_id="1"
          status="+"
          setter="jfbastien"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>330348</attachid>
            <date>2018-01-02 16:06:36 -0800</date>
            <delta_ts>2018-01-02 16:06:36 -0800</delta_ts>
            <desc>patch for landing w/ wincairo build fix.</desc>
            <filename>bug-181221.patch</filename>
            <type>text/plain</type>
            <size>18983</size>
            <attacher name="Mark Lam">mark.lam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XVEYvQ2hhbmdlTG9nCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvQ2hh
bmdlTG9nCShyZXZpc2lvbiAyMjYzMzcpCisrKyBTb3VyY2UvV1RGL0NoYW5nZUxvZwkod29ya2lu
ZyBjb3B5KQpAQCAtMSwzICsxLDQxIEBACisyMDE4LTAxLTAyICBNYXJrIExhbSAgPG1hcmsubGFt
QGFwcGxlLmNvbT4KKworICAgICAgICBFbnN1cmUgdGhhdCBwb2lzb25lZCBwb2ludGVycyBkbyBu
b3QgbG9vayBsaWtlIGRvdWJsZSBvciBpbnQzMiBKU1ZhbHVlcy4KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE4MTIyMQorICAgICAgICA8cmRhcjovL3By
b2JsZW0vMzYyNDg2Mzg+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgSkYgQmFzdGllbi4KKworICAg
ICAgICBDaGFuZ2VkIHBvaXNvbiB2YWx1ZXMgdG8gZW5zdXJlIHRoYXQgcG9pc29uZWQgYml0cyAo
aS5lLiBwb2ludGVyIF4gcG9pc29uKQorICAgICAgICBzYXRpc2ZpZXMgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zOgorICAgICAgICAxLiBiaXRzIDQ4LTYzIGFyZSAwOiB0aGlzIGVuc3VyZXMgdGhh
dCBwb2lzb25lZCBiaXRzIGxvb2sgbGlrZSBhIHBvaW50ZXIgYW5kCisgICAgICAgICAgIG5vdCBh
IGRvdWJsZSBvciBpbnQzMiBKU1ZhbHVlLgorICAgICAgICAyLiBiaXRzIDMyLTQ3IGFyZSBub3Qg
Y29tcGxldGVseSAwLgorICAgICAgICAzLiBiaXQgMiBpcyBuZXZlciAwOiB0aGlzIGVuc3VyZXMg
dGhhdCB0aGUgcG9pc29uZWQgdmFsdWUgb2YgYSBub24tbnVsbCBwb2ludGVyCisgICAgICAgICAg
IHdpbGwgbmV2ZXIgYmUgbnVsbC4KKyAgICAgICAgNC4gYml0IDAtMSBpcyBhbHdheXMgMDogdGhp
cyBlbnN1cmVzIHRoYXQgY2xpZW50cyBjYW4gc3RpbGwgdXNlIHRoZSAyIGJvdHRvbQorICAgICAg
ICAgICBiaXRzIG9mIHRoZSBwb2lzb25lZCB2YWx1ZSBhcyBmbGFnIGJpdHMgKGp1c3QgbGlrZSB0
aGV5IHdlcmUgYWJsZSB0byBkbyB3aXRoCisgICAgICAgICAgIHBvaW50ZXIgdmFsdWVzKS4gIFRo
ZSBvbmx5IGRpZmZlcmVuY2UgaXMgdGhhdCBiaXQgMiBjYW4gbm8gbG9uZ2VyIGJlIHVzZWQgZm9y
CisgICAgICAgICAgIGZsYWcgYml0cyBiZWNhdXNlIHBvaXNvbmVkIHZhbHVlcyBuZWVkIGl0IHRv
IGFsd2F5cyBiZSBzZXQuCisKKyAgICAgICAgKiBXVEYueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
ajoKKyAgICAgICAgKiB3dGYvQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogd3RmL1BvaW50ZXJB
c3NlcnRzLmNwcDogUmVtb3ZlZC4KKworICAgICAgICAqIHd0Zi9Qb2lzb25lZC5jcHA6CisgICAg
ICAgIChXVEY6Om1ha2VQb2lzb24pOgorICAgICAgICAtIFVwZGF0ZWQgdG8gc2F0aXNmeSB0aGUg
YWJvdmUgcmVxdWlyZW1lbnRzLgorICAgICAgICAKKyAgICAgICAgKiB3dGYvUG9pc29uZWQuaDoK
KyAgICAgICAgKFdURjo6bWFrZUNvbnN0RXhwclBvaXNvbik6CisgICAgICAgIChXVEY6Om1ha2VQ
b2lzb24pOiBEZWxldGVkLgorCisgICAgICAgICogd3RmL1dURkFzc2VydGlvbnMuY3BwOiBDb3Bp
ZWQgZnJvbSBTb3VyY2UvV1RGL3d0Zi9Qb2ludGVyQXNzZXJ0cy5jcHAuCisgICAgICAgIC0gUmVu
YW1lZCBmcm9tIFBvaW50ZXJBc3NlcnRzLmNwcCBiZWNhdXNlIHdlIGFzc2VydCBtb3JlIHRoaW5n
cyB0aGFuIGp1c3QKKyAgICAgICAgICBwb2ludGVycyBoZXJlLgorICAgICAgICAtIEFkZGVkIHNv
bWUgYXNzZXJ0aW9ucyB0byB0ZXN0IG1ha2VDb25zdEV4cHJQb2lzb24oKSB0byBlbnN1cmUgdGhh
dCBpdCBzYXRpc2ZpZXMKKyAgICAgICAgICB0aGUgYWJvdmUgcmVxdWlyZW1lbnRzLgorCiAyMDE3
LTEyLTI4ICBZdXN1a2UgU3V6dWtpICA8dXRhdGFuZS50ZWFAZ21haWwuY29tPgogCiAgICAgICAg
IFJlbW92ZSBzdGQ6OmNocm9ubyBpZiBpdCBpcyBub3QgdXNlZCBmb3IgQXJndW1lbnRDb2RlciBv
ciBQZXJzaXN0ZW50Q29kZXIKSW5kZXg6IFNvdXJjZS9XVEYvV1RGLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagkocmV2aXNpb24gMjI2MzI4KQorKysgU291cmNlL1dURi9XVEYueGNvZGVwcm9qL3By
b2plY3QucGJ4cHJvagkod29ya2luZyBjb3B5KQpAQCAtMTUwLDcgKzE1MCw3IEBACiAJCUUzQTMy
QkM0MUZDODMwRTIwMDdEN0U3NiAvKiBKU1ZhbHVlTWFsbG9jLmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEUzQTMyQkMyMUZDODMwRTIwMDdEN0U3NiAv
KiBKU1ZhbHVlTWFsbG9jLmNwcCAqLzsgfTsKIAkJRTRBMEFEMzkxQTk2MjQ1NTAwNTM2REY2IC8q
IFdvcmtRdWV1ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBFNEEwQUQzNzFBOTYyNDU1MDA1MzZERjYgLyogV29ya1F1ZXVlLmNwcCAqLzsgfTsKIAkJ
RTRBMEFEM0QxQTk2MjUzQzAwNTM2REY2IC8qIFdvcmtRdWV1ZUNvY29hLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEU0QTBBRDNDMUE5NjI1M0MwMDUz
NkRGNiAvKiBXb3JrUXVldWVDb2NvYS5jcHAgKi87IH07Ci0JCUZFMDVGQUZGMUZFNTAwNzUwMDA5
MzIzMCAvKiBQb2ludGVyQXNzZXJ0cy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBGRTA1RkFGRTFGRTUwMDc1MDAwOTMyMzAgLyogUG9pbnRlckFzc2Vy
dHMuY3BwICovOyB9OworCQlGRTA1RkFGRjFGRTUwMDc1MDAwOTMyMzAgLyogV1RGQXNzZXJ0aW9u
cy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTA1
RkFGRTFGRTUwMDc1MDAwOTMyMzAgLyogV1RGQXNzZXJ0aW9ucy5jcHAgKi87IH07CiAJCUZFODU0
MTZFMUZCRTI4NUQwMDhEQTVEQSAvKiBQb2lzb25lZC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRTg1NDE2QzFGQkUyODVCMDA4REE1REEgLyogUG9p
c29uZWQuY3BwICovOyB9OwogCQlGRURBQ0QzRDE2MzBGODNGMDBDNjk2MzQgLyogU3RhY2tTdGF0
cy5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGRURB
Q0QzQjE2MzBGODNGMDBDNjk2MzQgLyogU3RhY2tTdGF0cy5jcHAgKi87IH07CiAvKiBFbmQgUEJY
QnVpbGRGaWxlIHNlY3Rpb24gKi8KQEAgLTYxOSw3ICs2MTksNyBAQAogCQlFRjdENkNENTlEODY0
MkE4QTBEQTg2QUQgLyogU3RhY2tUcmFjZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBTdGFja1RyYWNlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUY3MkJCREIx
MDdGQTQyNDg4NjE3OEI5RSAvKiBTeW1ib2xJbXBsLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IFN5bWJvbEltcGwuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQlGRTA1RkFFNjFGREIyMTQzMDAwOTMyMzAgLyogRHVtYlB0clRyYWl0cy5oICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBEdW1iUHRyVHJhaXRzLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07Ci0JCUZFMDVGQUZFMUZFNTAwNzUwMDA5MzIzMCAvKiBQb2ludGVyQXNzZXJ0
cy5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQb2ludGVyQXNzZXJ0
cy5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUZFMDVGQUZFMUZFNTAwNzUwMDA5
MzIzMCAvKiBXVEZBc3NlcnRpb25zLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IFdURkFzc2VydGlvbnMuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlG
RTA1RkIwNDFGRTg0NTMyMDAwOTMyMzAgLyogUG9pc29uZWRVbmlxdWVQdHIuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUG9pc29uZWRVbmlxdWVQdHIuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJRkU4MjI1MzAxQjJBMUU1QjAwQkE2OEZEIC8qIE5ha2VkUHRyLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE5ha2VkUHRyLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUZFODU0MTZDMUZCRTI4NUIwMDhEQTVEQSAvKiBQb2lzb25lZC5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBQb2lzb25lZC5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC05ODMsNyArOTgzLDYgQEAKIAkJCQkwRjgyNEE2
NTFCNzQ0M0EwMDAyRTM0NUQgLyogUGFya2luZ0xvdC5oICovLAogCQkJCUE4NzZEQkQ3MTUxODE2
RTUwMERBREI5NSAvKiBQbGF0Zm9ybS5oICovLAogCQkJCUUzMjAwQUI0MUU5QTUzNkQwMDNCNTlE
MiAvKiBQbGF0Zm9ybVJlZ2lzdGVycy5oICovLAotCQkJCUZFMDVGQUZFMUZFNTAwNzUwMDA5MzIz
MCAvKiBQb2ludGVyQXNzZXJ0cy5jcHAgKi8sCiAJCQkJMEZGODYwOTQxQkNDQkQ3NDAwNDUxMjdG
IC8qIFBvaW50ZXJDb21wYXJpc29uLmggKi8sCiAJCQkJRkU4NTQxNkMxRkJFMjg1QjAwOERBNURB
IC8qIFBvaXNvbmVkLmNwcCAqLywKIAkJCQlGRTg1NDE2RDFGQkUyODVDMDA4REE1REEgLyogUG9p
c29uZWQuaCAqLywKQEAgLTEwODksNiArMTA4OCw3IEBACiAJCQkJQThBNDczNzAxNTFBODI1QjAw
NDEyM0ZGIC8qIFZlY3Rvci5oICovLAogCQkJCUE4QTQ3MzcxMTUxQTgyNUIwMDQxMjNGRiAvKiBW
ZWN0b3JUcmFpdHMuaCAqLywKIAkJCQlBOEE0NzM3MjE1MUE4MjVCMDA0MTIzRkYgLyogVk1UYWdz
LmggKi8sCisJCQkJRkUwNUZBRkUxRkU1MDA3NTAwMDkzMjMwIC8qIFdURkFzc2VydGlvbnMuY3Bw
ICovLAogCQkJCTBGNjZCMjg4MURDOTdCQUIwMDRBMUQzRiAvKiBXYWxsVGltZS5jcHAgKi8sCiAJ
CQkJMEY2NkIyODkxREM5N0JBQjAwNEExRDNGIC8qIFdhbGxUaW1lLmggKi8sCiAJCQkJOTc0Q0ZD
OEQxNkE0RjMyNzAwNkQ1NDA0IC8qIFdlYWtQdHIuaCAqLywKQEAgLTE0MjAsNyArMTQyMCw3IEBA
CiAJCQkJMEY2NkIyOEExREM5N0JBQjAwNEExRDNGIC8qIENsb2NrVHlwZS5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQlBOEE0NzQ2MDE1MUE4MjVCMDA0MTIzRkYgLyogQ29sbGF0b3JEZWZhdWx0LmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCUE4QTQ3NDYzMTUxQTgyNUIwMDQxMjNGRiAvKiBDb2xsYXRv
cklDVS5jcHAgaW4gU291cmNlcyAqLywKLQkJCQlGRTA1RkFGRjFGRTUwMDc1MDAwOTMyMzAgLyog
UG9pbnRlckFzc2VydHMuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJRkUwNUZBRkYxRkU1MDA3NTAw
MDkzMjMwIC8qIFdURkFzc2VydGlvbnMuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEY4RjJCOTIx
NzJFMDEwMzAwN0RCREE1IC8qIENvbXBpbGF0aW9uVGhyZWFkLmNwcCBpbiBTb3VyY2VzICovLAog
CQkJCTBGMzBDQjVBMUZDREYxMzQwMDRCNTMyMyAvKiBDb25jdXJyZW50UHRySGFzaFNldC5jcHAg
aW4gU291cmNlcyAqLywKIAkJCQkwRjhFODVEQjFGRDQ4NUIwMDA2OTE4ODkgLyogQ291bnRpbmdM
b2NrLmNwcCBpbiBTb3VyY2VzICovLApJbmRleDogU291cmNlL1dURi93dGYvQ01ha2VMaXN0cy50
eHQKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9u
IDIyNjMyOCkKKysrIFNvdXJjZS9XVEYvd3RmL0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNvcHkp
CkBAIC0yNjMsNyArMjYzLDYgQEAgc2V0KFdURl9TT1VSQ0VTCiAgICAgUGFyYWxsZWxIZWxwZXJQ
b29sLmNwcAogICAgIFBhcmFsbGVsSm9ic0dlbmVyaWMuY3BwCiAgICAgUGFya2luZ0xvdC5jcHAK
LSAgICBQb2ludGVyQXNzZXJ0cy5jcHAKICAgICBQb2lzb25lZC5jcHAKICAgICBQcmludFN0cmVh
bS5jcHAKICAgICBSQU1TaXplLmNwcApAQCAtMjg1LDYgKzI4NCw3IEBAIHNldChXVEZfU09VUkNF
UwogICAgIFRpbWVXaXRoRHluYW1pY0Nsb2NrVHlwZS5jcHAKICAgICBUaW1pbmdTY29wZS5jcHAK
ICAgICBVVUlELmNwcAorICAgIFdURkFzc2VydGlvbnMuY3BwCiAgICAgV2FsbFRpbWUuY3BwCiAg
ICAgV29yZExvY2suY3BwCiAgICAgV29ya1F1ZXVlLmNwcApJbmRleDogU291cmNlL1dURi93dGYv
UG9pbnRlckFzc2VydHMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL1BvaW50ZXJB
c3NlcnRzLmNwcAkocmV2aXNpb24gMjI2MzI4KQorKysgU291cmNlL1dURi93dGYvUG9pbnRlckFz
c2VydHMuY3BwCShub25leGlzdGVudCkKQEAgLTEsNDkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdo
dCAoQykgMjAxNyBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgot
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgot
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQg
QU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLQotI2lu
Y2x1ZGUgPHd0Zi9Qb2lzb25lZC5oPgotI2luY2x1ZGUgPHd0Zi9Qb2lzb25lZFVuaXF1ZVB0ci5o
PgotI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KLQotbmFtZXNwYWNlIFdURiB7Ci0KLW5hbWVzcGFj
ZSB7Ci1zdHJ1Y3QgRHVtbXlDbGFzcyB7IH07Ci19Ci0KLXN0YXRpY19hc3NlcnQoc2l6ZW9mKFJl
ZjxEdW1teUNsYXNzPikgPT0gc2l6ZW9mKER1bW15Q2xhc3MqKSwgIiIpOwotc3RhdGljX2Fzc2Vy
dChzaXplb2YoUG9pc29uZWRSZWY8MHhmZmZmLCBEdW1teUNsYXNzPikgPT0gc2l6ZW9mKER1bW15
Q2xhc3MqKSwgIiIpOwotCi1zdGF0aWNfYXNzZXJ0KHNpemVvZihSZWZQdHI8RHVtbXlDbGFzcz4p
ID09IHNpemVvZihEdW1teUNsYXNzKiksICIiKTsKLXN0YXRpY19hc3NlcnQoc2l6ZW9mKFBvaXNv
bmVkUmVmUHRyPDB4ZmZmZiwgRHVtbXlDbGFzcz4pID09IHNpemVvZihEdW1teUNsYXNzKiksICIi
KTsKLQotc3RhdGljX2Fzc2VydChzaXplb2YoUG9pc29uZWRVbmlxdWVQdHI8MHhmZmZmLCBEdW1t
eUNsYXNzPikgPT0gc2l6ZW9mKER1bW15Q2xhc3MqKSwgIiIpOwotc3RhdGljX2Fzc2VydChzaXpl
b2YoUG9pc29uZWRVbmlxdWVQdHI8MHhmZmZmLCBpbnRbXT4pID09IHNpemVvZihpbnQqKSwgIiIp
Owotc3RhdGljX2Fzc2VydChzaXplb2YoUG9pc29uZWRVbmlxdWVQdHI8MHhmZmZmLCBEdW1teUNs
YXNzW10+KSA9PSBzaXplb2YoRHVtbXlDbGFzcyopLCAiIik7Ci0KLX0gLy8gbmFtZXNwYWNlIFdU
RgotCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9Qb2lzb25lZC5jcHAKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dURi93dGYvUG9pc29uZWQuY3BwCShyZXZpc2lvbiAyMjYzMjgpCisrKyBTb3VyY2UvV1RG
L3d0Zi9Qb2lzb25lZC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsNSArMSw1IEBACiAvKgotICog
Q29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqIENv
cHlyaWdodCAoQykgMjAxNy0yMDE4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KICAq
CiAgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwpAQCAtMzIsMjIgKzMyLDI5IEBAIG5hbWVzcGFj
ZSBXVEYgewogCiB1aW50cHRyX3QgbWFrZVBvaXNvbigpCiB7Ci0gICAgdWludHB0cl90IGtleSA9
IGNyeXB0b2dyYXBoaWNhbGx5UmFuZG9tTnVtYmVyKCk7CisgICAgdWludHB0cl90IHBvaXNvbiA9
IDA7CiAjaWYgRU5BQkxFKFBPSVNPTikKLSAgICBrZXkgPSAoa2V5IDw8IDMyKSBeIChzdGF0aWNf
Y2FzdDx1aW50cHRyX3Q+KGNyeXB0b2dyYXBoaWNhbGx5UmFuZG9tTnVtYmVyKCkpIDw8IDMpOwot
ICAgIC8vIEVuc3VyZSB0aGF0IHRoZSBwb2lzb25lZCBiaXRzIChwb2ludGVyIF4ga2V5KSBkbyBu
b3QgbWFrZSBhIHZhbGlkIHBvaW50ZXIgYW5kCi0gICAgLy8gY2Fubm90IGJlIDAuIFdlIGVuc3Vy
ZSB0aGF0IGl0IGlzIHplcm8gc28gdGhhdCB0aGUgcG9pc29uZWQgYml0cyBjYW4gYWxzbyBiZQot
ICAgIC8vIHVzZWQgZm9yIGEgbm90bWFsIHplcm8gY2hlY2sgd2l0aG91dCBuZWVkaW5nIHRvIGRl
Y29kZWQgZmlyc3QuCi0gICAga2V5IHw9IChzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KDB4MSkgPDwg
NjMpOwotICAgIC8vIEVuc3VyZSB0aGF0IHRoZSBib3R0b20gYWxpZ25tZW50IGJpdHMgYXJlIHN0
aWxsIDAgc28gdGhhdCB0aGUgcG9pc29uZWQgYml0cyB3aWxsCisgICAgZG8geworICAgICAgICBw
b2lzb24gPSBjcnlwdG9ncmFwaGljYWxseVJhbmRvbU51bWJlcigpOworICAgICAgICBwb2lzb24g
PSAocG9pc29uIDw8IDE2KSBeIChzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KGNyeXB0b2dyYXBoaWNh
bGx5UmFuZG9tTnVtYmVyKCkpIDw8IDMpOworICAgIH0gd2hpbGUgKCEocG9pc29uID4+IDMyKSk7
IC8vIEVuc3VyZSB0aGF0IGJpdHMgMzItNDcgYXJlIG5vdCBjb21wbGV0ZWx5IDAuCisKKyAgICAv
LyBFbnN1cmUgdGhhdCB0aGUgcG9pc29uZWQgYml0cyAocG9pbnRlciBeIHBvaXNvbikgbG9va3Mg
bGlrZSBhIHZhbGlkIHBvaW50ZXIuCisgICAgUkVMRUFTRV9BU1NFUlQocG9pc29uICYmICEocG9p
c29uID4+IDQ4KSk7CisKKyAgICAvLyBFbnN1cmUgdGhhdCB0aGUgcG9pc29uZWQgYml0cyAocG9p
bnRlciBeIHBvaXNvbikgY2Fubm90IGJlIDAuIFRoaXMgaXMgc28gdGhhdCB0aGUgcG9pc29uZWQK
KyAgICAvLyBiaXRzIGNhbiBhbHNvIGJlIHVzZWQgZm9yIGEgbm9ybWFsIHplcm8gY2hlY2sgd2l0
aG91dCBuZWVkaW5nIHRvIGJlIGRlY29kZWQgZmlyc3QuCisgICAgcG9pc29uIHw9ICgxIDw8IDIp
OworCisgICAgLy8gRW5zdXJlIHRoYXQgdGhlIGJvdHRvbSAyIGFsaWdubWVudCBiaXRzIGFyZSBz
dGlsbCAwIHNvIHRoYXQgdGhlIHBvaXNvbmVkIGJpdHMgd2lsbAogICAgIC8vIHN0aWxsIHByZXNl
cnZlIHRoZSBwcm9wZXJ0aWVzIG9mIGEgcG9pbnRlciB3aGVyZSB0aGVzZSBiaXRzIGFyZSBleHBl
Y3RlZCB0byBiZSAwLgogICAgIC8vIFRoaXMgYWxsb3dzIHRoZSBwb2lzb25lZCBiaXRzIHRvIGJl
IHVzZWQgaW4gcGxhY2Ugb2YgdGhlIHBvaW50ZXIgYnkgY2xpZW50cyB0aGF0CiAgICAgLy8gcmVs
eSBvbiB0aGlzIHByb3BlcnR5IG9mIHBvaW50ZXJzIGFuZCBzZXRzIGZsYWdzIGluIHRoZSBsb3cg
Yml0cy4KLSAgICBrZXkgJj0gfnN0YXRpY19jYXN0PHVpbnRwdHJfdD4oMHg3KTsKLSNlbHNlCi0g
ICAga2V5ID0gMDsgLy8gUG9pc29uaW5nIGlzIG5vdCBzdXBwb3J0ZWQgb24gMzItYml0IG9yIG5v
bi1kYXJ3aW4gcGxhdGZvcm1zIHlldC4KKyAgICAvLyBOb3RlOiBhIHJlZ3VsYXIgcG9pbnRlciBo
YXMgMyBhbGlnbm1lbnQgYml0cywgYnV0IHRoZSBwb2lzb25lZCBiaXRzIG5lZWQgdG8gdXNlIG9u
ZQorICAgIC8vIChzZWUgYWJvdmUpLiBIZW5jZSwgY2xpZW50cyBjYW4gb25seSB1c2UgMiBiaXRz
IGZvciBmbGFncy4KKyAgICBSRUxFQVNFX0FTU0VSVCghKHBvaXNvbiAmIDB4MykpOwogI2VuZGlm
Ci0gICAgcmV0dXJuIGtleTsKKyAgICByZXR1cm4gcG9pc29uOwogfQogCiB9IC8vIG5hbWVzcGFj
ZSBXVEYKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL1BvaXNvbmVkLmgKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL1dURi93dGYvUG9pc29uZWQuaAkocmV2aXNpb24gMjI2MzI4KQorKysgU291cmNlL1dURi93
dGYvUG9pc29uZWQuaAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJp
Z2h0IChDKSAyMDE3LTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAogICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCkBAIC0yMTQsMTIgKzIxNCwxNiBAQCBpbmxpbmUgdm9p
ZCBzd2FwKFBvaXNvbmVkSW1wbDxLMSwgazEsIFQxCiAKIFdURl9FWFBPUlRfUFJJVkFURSB1aW50
cHRyX3QgbWFrZVBvaXNvbigpOwogCi1pbmxpbmUgY29uc3RleHByIHVpbnRwdHJfdCBtYWtlUG9p
c29uKHVpbnQzMl90IGtleSkKK2lubGluZSBjb25zdGV4cHIgdWludHB0cl90IG1ha2VDb25zdEV4
cHJQb2lzb24odWludDMyX3Qga2V5KQogewogI2lmIEVOQUJMRShQT0lTT04pCi0gICAgdWludHB0
cl90IHBvaXNvbjEgPSBzdGF0aWNfY2FzdDx1aW50cHRyX3Q+KGtleSkgKiA2OTA2OTY5MDY5ICsg
MTIzNDU2NzsKLSAgICB1aW50cHRyX3QgcG9pc29uMiA9IHN0YXRpY19jYXN0PHVpbnRwdHJfdD4o
a2V5KSAqIDgyNTM3MjkgKyAyMzk2NDAzOwotICAgIHJldHVybiAoKHBvaXNvbjEgPDwgMykgXiAo
cG9pc29uMiA8PCAzMikpIHwgKHN0YXRpY19jYXN0PHVpbnRwdHJfdD4oMSkgPDwgNjMpOworICAg
IHVpbnRwdHJfdCB1aW50cHRyS2V5ID0ga2V5OworICAgIHVpbnRwdHJfdCBwb2lzb24xID0gdWlu
dHB0cktleSAqIDY5MDY5NjkwNjkgKyAxMjM0NTY3OworICAgIHVpbnRwdHJfdCBwb2lzb24yID0g
dWludHB0cktleSAqIDgyNTM3MjkgKyAyMzk2NDAzOworICAgIHVpbnRwdHJfdCBwb2lzb24gPSAo
cG9pc29uMSA8PCAzKSBeIChwb2lzb24yIDw8IDE2KTsKKyAgICBwb2lzb24gJj0gfihzdGF0aWNf
Y2FzdDx1aW50cHRyX3Q+KDB4ZmZmZikgPDwgNDgpOyAvLyBFbnN1cmUgdGhhdCBwb2lzb25lZCBi
aXRzIGxvb2sgbGlrZSBhIHBvaW50ZXIuCisgICAgcG9pc29uIHw9ICgxIDw8IDIpOyAvLyBFbnN1
cmUgdGhhdCBwb2lzb25lZCBiaXRzIGNhbm5vdCBiZSAwLgorICAgIHJldHVybiBwb2lzb247CiAj
ZWxzZQogICAgIHJldHVybiAodm9pZClrZXksIDA7CiAjZW5kaWYKQEAgLTIyOSw3ICsyMzMsNyBA
QCB0ZW1wbGF0ZTx1aW50cHRyX3QmIGtleSwgdHlwZW5hbWUgVD4KIHVzaW5nIFBvaXNvbmVkID0g
UG9pc29uZWRJbXBsPHVpbnRwdHJfdCYsIGtleSwgVD47CiAKIHRlbXBsYXRlPHVpbnQzMl90IGtl
eSwgdHlwZW5hbWUgVD4KLXVzaW5nIENvbnN0RXhwclBvaXNvbmVkID0gUG9pc29uZWRJbXBsPHVp
bnRwdHJfdCwgbWFrZVBvaXNvbihrZXkpLCBUPjsKK3VzaW5nIENvbnN0RXhwclBvaXNvbmVkID0g
UG9pc29uZWRJbXBsPHVpbnRwdHJfdCwgbWFrZUNvbnN0RXhwclBvaXNvbihrZXkpLCBUPjsKIAog
dGVtcGxhdGU8dWludDMyX3Qga2V5LCB0eXBlbmFtZSBUPgogc3RydWN0IENvbnN0RXhwclBvaXNv
bmVkUHRyVHJhaXRzIHsKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL1dURkFzc2VydGlvbnMuY3BwCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL1dURkFzc2VydGlvbnMuY3BwCShyZXZpc2lvbiAy
MjYzMjgpCShmcm9tIFNvdXJjZS9XVEYvd3RmL1BvaW50ZXJBc3NlcnRzLmNwcDoyMjYzMjgpCisr
KyBTb3VyY2UvV1RGL3d0Zi9XVEZBc3NlcnRpb25zLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMCww
ICsxLDQ5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE3IEFwcGxlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMu
IE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJP
RklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVW
RU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I2luY2x1ZGUgImNvbmZpZy5oIgorCisjaW5jbHVkZSA8d3RmL1BvaXNvbmVkLmg+CisjaW5jbHVk
ZSA8d3RmL1BvaXNvbmVkVW5pcXVlUHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorCitu
YW1lc3BhY2UgV1RGIHsKKworbmFtZXNwYWNlIHsKK3N0cnVjdCBEdW1teUNsYXNzIHsgfTsKK30K
Kworc3RhdGljX2Fzc2VydChzaXplb2YoUmVmPER1bW15Q2xhc3M+KSA9PSBzaXplb2YoRHVtbXlD
bGFzcyopLCAiIik7CitzdGF0aWNfYXNzZXJ0KHNpemVvZihQb2lzb25lZFJlZjwweGZmZmYsIER1
bW15Q2xhc3M+KSA9PSBzaXplb2YoRHVtbXlDbGFzcyopLCAiIik7CisKK3N0YXRpY19hc3NlcnQo
c2l6ZW9mKFJlZlB0cjxEdW1teUNsYXNzPikgPT0gc2l6ZW9mKER1bW15Q2xhc3MqKSwgIiIpOwor
c3RhdGljX2Fzc2VydChzaXplb2YoUG9pc29uZWRSZWZQdHI8MHhmZmZmLCBEdW1teUNsYXNzPikg
PT0gc2l6ZW9mKER1bW15Q2xhc3MqKSwgIiIpOworCitzdGF0aWNfYXNzZXJ0KHNpemVvZihQb2lz
b25lZFVuaXF1ZVB0cjwweGZmZmYsIER1bW15Q2xhc3M+KSA9PSBzaXplb2YoRHVtbXlDbGFzcyop
LCAiIik7CitzdGF0aWNfYXNzZXJ0KHNpemVvZihQb2lzb25lZFVuaXF1ZVB0cjwweGZmZmYsIGlu
dFtdPikgPT0gc2l6ZW9mKGludCopLCAiIik7CitzdGF0aWNfYXNzZXJ0KHNpemVvZihQb2lzb25l
ZFVuaXF1ZVB0cjwweGZmZmYsIER1bW15Q2xhc3NbXT4pID09IHNpemVvZihEdW1teUNsYXNzKiks
ICIiKTsKKworfSAvLyBuYW1lc3BhY2UgV1RGCisKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL1dURkFz
c2VydGlvbnMuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL1dURkFzc2VydGlvbnMu
Y3BwCShyZXZpc2lvbiAyMjYzMjgpCisrKyBTb3VyY2UvV1RGL3d0Zi9XVEZBc3NlcnRpb25zLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiBDb3B5cmlnaHQgKEMpIDIw
MTcgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogQ29weXJpZ2h0IChDKSAyMDE3
LTIwMTggQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICoKICAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAog
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCkBAIC0zNSw2ICszNSwzNiBAQCBuYW1lc3BhY2Ugewogc3RydWN0IER1bW15
Q2xhc3MgeyB9OwogfQogCisjaWYgRU5BQkxFKFBPSVNPTikKK3N0YXRpY19hc3NlcnQoIShtYWtl
Q29uc3RFeHByUG9pc29uKDEpID4+IDQ4KSwgInBvaXNvbmVkIGJpdHMgc2hvdWxkIGxvb2sgbGlr
ZSBhIHBvaW50ZXIuIik7CitzdGF0aWNfYXNzZXJ0KCEobWFrZUNvbnN0RXhwclBvaXNvbigxMDAp
ID4+IDQ4KSwgInBvaXNvbmVkIGJpdHMgc2hvdWxkIGxvb2sgbGlrZSBhIHBvaW50ZXIuIik7Citz
dGF0aWNfYXNzZXJ0KCEobWFrZUNvbnN0RXhwclBvaXNvbigxMDAwKSA+PiA0OCksICJwb2lzb25l
ZCBiaXRzIHNob3VsZCBsb29rIGxpa2UgYSBwb2ludGVyLiIpOworc3RhdGljX2Fzc2VydCghKG1h
a2VDb25zdEV4cHJQb2lzb24oMTAwMDApID4+IDQ4KSwgInBvaXNvbmVkIGJpdHMgc2hvdWxkIGxv
b2sgbGlrZSBhIHBvaW50ZXIuIik7CitzdGF0aWNfYXNzZXJ0KCEobWFrZUNvbnN0RXhwclBvaXNv
bigxMDAwMDAwKSA+PiA0OCksICJwb2lzb25lZCBiaXRzIHNob3VsZCBsb29rIGxpa2UgYSBwb2lu
dGVyLiIpOworc3RhdGljX2Fzc2VydCghKG1ha2VDb25zdEV4cHJQb2lzb24oMHhmZmZmZmZmZikg
Pj4gNDgpLCAicG9pc29uZWQgYml0cyBzaG91bGQgbG9vayBsaWtlIGEgcG9pbnRlci4iKTsKKwor
c3RhdGljX2Fzc2VydCgobWFrZUNvbnN0RXhwclBvaXNvbigxKSA+PiAzMiksICJiaXRzIDMyLTQ3
IG9mIHBvaXNvbmVkIGJpdHMgc2hvdWxkIG5vdCBiZSBub3QgY29tcGxldGVseSAwLiIpOworc3Rh
dGljX2Fzc2VydCgobWFrZUNvbnN0RXhwclBvaXNvbigxMDApID4+IDMyKSwgImJpdHMgMzItNDcg
b2YgcG9pc29uZWQgYml0cyBzaG91bGQgbm90IGJlIG5vdCBjb21wbGV0ZWx5IDAuIik7CitzdGF0
aWNfYXNzZXJ0KChtYWtlQ29uc3RFeHByUG9pc29uKDEwMDApID4+IDMyKSwgImJpdHMgMzItNDcg
b2YgcG9pc29uZWQgYml0cyBzaG91bGQgbm90IGJlIG5vdCBjb21wbGV0ZWx5IDAuIik7CitzdGF0
aWNfYXNzZXJ0KChtYWtlQ29uc3RFeHByUG9pc29uKDEwMDAwKSA+PiAzMiksICJiaXRzIDMyLTQ3
IG9mIHBvaXNvbmVkIGJpdHMgc2hvdWxkIG5vdCBiZSBub3QgY29tcGxldGVseSAwLiIpOworc3Rh
dGljX2Fzc2VydCgobWFrZUNvbnN0RXhwclBvaXNvbigxMDAwMDAwKSA+PiAzMiksICJiaXRzIDMy
LTQ3IG9mIHBvaXNvbmVkIGJpdHMgc2hvdWxkIG5vdCBiZSBub3QgY29tcGxldGVseSAwLiIpOwor
c3RhdGljX2Fzc2VydCgobWFrZUNvbnN0RXhwclBvaXNvbigweGZmZmZmZmZmKSA+PiAzMiksICJi
aXRzIDMyLTQ3IG9mIHBvaXNvbmVkIGJpdHMgc2hvdWxkIG5vdCBiZSBub3QgY29tcGxldGVseSAw
LiIpOworCitzdGF0aWNfYXNzZXJ0KChtYWtlQ29uc3RFeHByUG9pc29uKDEpICYgMHg0KSwgImJp
dCAyIHNob3VsZCBhbHdheXMgYmUgc2V0LiIpOworc3RhdGljX2Fzc2VydCgobWFrZUNvbnN0RXhw
clBvaXNvbigxMDApICYgMHg0KSwgImJpdCAyIHNob3VsZCBhbHdheXMgYmUgc2V0LiIpOworc3Rh
dGljX2Fzc2VydCgobWFrZUNvbnN0RXhwclBvaXNvbigxMDAwKSAmIDB4NCksICJiaXQgMiBzaG91
bGQgYWx3YXlzIGJlIHNldC4iKTsKK3N0YXRpY19hc3NlcnQoKG1ha2VDb25zdEV4cHJQb2lzb24o
MTAwMDApICYgMHg0KSwgImJpdCAyIHNob3VsZCBhbHdheXMgYmUgc2V0LiIpOworc3RhdGljX2Fz
c2VydCgobWFrZUNvbnN0RXhwclBvaXNvbigxMDAwMDAwKSAmIDB4NCksICJiaXQgMiBzaG91bGQg
YWx3YXlzIGJlIHNldC4iKTsKK3N0YXRpY19hc3NlcnQoKG1ha2VDb25zdEV4cHJQb2lzb24oMHhm
ZmZmZmZmZikgJiAweDQpLCAiYml0IDIgc2hvdWxkIGFsd2F5cyBiZSBzZXQuIik7CisKK3N0YXRp
Y19hc3NlcnQoIShtYWtlQ29uc3RFeHByUG9pc29uKDEpICYgMHgzKSwgImVuc3VyZSBib3R0b20g
MiBhbGlnbm1lbnQgYml0cyBhcmUgYXZhaWxhYmxlIGZvciB1c2UgYXMgZmxhZyBiaXRzLiIpOwor
c3RhdGljX2Fzc2VydCghKG1ha2VDb25zdEV4cHJQb2lzb24oMTAwKSAmIDB4MyksICJlbnN1cmUg
Ym90dG9tIDIgYWxpZ25tZW50IGJpdHMgYXJlIGF2YWlsYWJsZSBmb3IgdXNlIGFzIGZsYWcgYml0
cy4iKTsKK3N0YXRpY19hc3NlcnQoIShtYWtlQ29uc3RFeHByUG9pc29uKDEwMDApICYgMHgzKSwg
ImVuc3VyZSBib3R0b20gMiBhbGlnbm1lbnQgYml0cyBhcmUgYXZhaWxhYmxlIGZvciB1c2UgYXMg
ZmxhZyBiaXRzLiIpOworc3RhdGljX2Fzc2VydCghKG1ha2VDb25zdEV4cHJQb2lzb24oMTAwMDAp
ICYgMHgzKSwgImVuc3VyZSBib3R0b20gMiBhbGlnbm1lbnQgYml0cyBhcmUgYXZhaWxhYmxlIGZv
ciB1c2UgYXMgZmxhZyBiaXRzLiIpOworc3RhdGljX2Fzc2VydCghKG1ha2VDb25zdEV4cHJQb2lz
b24oMTAwMDAwMCkgJiAweDMpLCAiZW5zdXJlIGJvdHRvbSAyIGFsaWdubWVudCBiaXRzIGFyZSBh
dmFpbGFibGUgZm9yIHVzZSBhcyBmbGFnIGJpdHMuIik7CitzdGF0aWNfYXNzZXJ0KCEobWFrZUNv
bnN0RXhwclBvaXNvbigweGZmZmZmZmZmKSAmIDB4MyksICJlbnN1cmUgYm90dG9tIDIgYWxpZ25t
ZW50IGJpdHMgYXJlIGF2YWlsYWJsZSBmb3IgdXNlIGFzIGZsYWcgYml0cy4iKTsKKyNlbmRpZiAv
LyBFTkFCTEUoUE9JU09OKQorCiBzdGF0aWNfYXNzZXJ0KHNpemVvZihSZWY8RHVtbXlDbGFzcz4p
ID09IHNpemVvZihEdW1teUNsYXNzKiksICIiKTsKIHN0YXRpY19hc3NlcnQoc2l6ZW9mKFBvaXNv
bmVkUmVmPDB4ZmZmZiwgRHVtbXlDbGFzcz4pID09IHNpemVvZihEdW1teUNsYXNzKiksICIiKTsK
IAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>