<?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>213472</bug_id>
          
          <creation_ts>2020-06-22 11:54:42 -0700</creation_ts>
          <short_desc>Allow building JavaScriptCore Mac+arm64 in public SDK build</short_desc>
          <delta_ts>2020-08-06 18:02:02 -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>Other</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="Saam Barati">saam</reporter>
          <assigned_to name="Saam Barati">saam</assigned_to>
          <cc>annulen</cc>
    
    <cc>benjamin</cc>
    
    <cc>cdumez</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fpizlo</cc>
    
    <cc>ggaren</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jbedard</cc>
    
    <cc>keith_miller</cc>
    
    <cc>mark.lam</cc>
    
    <cc>msaboff</cc>
    
    <cc>rmorisset</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sam</cc>
    
    <cc>sergio</cc>
    
    <cc>thorton</cc>
    
    <cc>tzagallo</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>ysuzuki</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1665097</commentid>
    <comment_count>0</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2020-06-22 11:54:42 -0700</bug_when>
    <thetext>...</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1665102</commentid>
    <comment_count>1</comment_count>
      <attachid>402488</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2020-06-22 12:01:41 -0700</bug_when>
    <thetext>Created attachment 402488
WIP

Let&apos;s test EWS. Current patch is a bit old, not even sure it&apos;ll apply to ToT still</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1665156</commentid>
    <comment_count>2</comment_count>
      <attachid>402506</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2020-06-22 13:37:36 -0700</bug_when>
    <thetext>Created attachment 402506
WIP

get it to compile take 2</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1665191</commentid>
    <comment_count>3</comment_count>
      <attachid>402515</attachid>
    <who name="Saam Barati">saam</who>
    <bug_when>2020-06-22 15:17:07 -0700</bug_when>
    <thetext>Created attachment 402515
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1665212</commentid>
    <comment_count>4</comment_count>
      <attachid>402515</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2020-06-22 16:02:04 -0700</bug_when>
    <thetext>Comment on attachment 402515
Patch

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

&gt; Source/WTF/wtf/PlatformEnableCocoa.h:-163
&gt; -/* FIXME: This should probably be HAVE_FAST_JIT_PERMISSIONS and may be entirely unnecessary due to runtime checking support via os_thread_self_restrict_rwx_is_supported(). */
&gt; -#if !defined(ENABLE_FAST_JIT_PERMISSIONS) &amp;&amp; CPU(ARM64) &amp;&amp; !(OS(TVOS) || OS(WATCHOS)) &amp;&amp; USE(APPLE_INTERNAL_SDK)

Excited to see one of my fixme&apos;s being resolved!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1665218</commentid>
    <comment_count>5</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2020-06-22 16:22:43 -0700</bug_when>
    <thetext>(In reply to Sam Weinig from comment #4)
&gt; Comment on attachment 402515 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=402515&amp;action=review
&gt; 
&gt; &gt; Source/WTF/wtf/PlatformEnableCocoa.h:-163
&gt; &gt; -/* FIXME: This should probably be HAVE_FAST_JIT_PERMISSIONS and may be entirely unnecessary due to runtime checking support via os_thread_self_restrict_rwx_is_supported(). */
&gt; &gt; -#if !defined(ENABLE_FAST_JIT_PERMISSIONS) &amp;&amp; CPU(ARM64) &amp;&amp; !(OS(TVOS) || OS(WATCHOS)) &amp;&amp; USE(APPLE_INTERNAL_SDK)
&gt; 
&gt; Excited to see one of my fixme&apos;s being resolved!

:-)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1665248</commentid>
    <comment_count>6</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-06-22 18:28:22 -0700</bug_when>
    <thetext>Committed r263380: &lt;https://trac.webkit.org/changeset/263380&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 402515.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1665249</commentid>
    <comment_count>7</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-06-22 18:29:18 -0700</bug_when>
    <thetext>&lt;rdar://problem/64618340&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1665287</commentid>
    <comment_count>8</comment_count>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2020-06-22 21:32:06 -0700</bug_when>
    <thetext>This broke the watchOS Simulator build:
https://build.webkit.org/builders/Apple-watchOS-Simulator-6-Release-Build/builds/69</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1665289</commentid>
    <comment_count>9</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2020-06-22 22:04:54 -0700</bug_when>
    <thetext>(In reply to Jonathan Bedard from comment #8)
&gt; This broke the watchOS Simulator build:
&gt; https://build.webkit.org/builders/Apple-watchOS-Simulator-6-Release-Build/
&gt; builds/69

Will fix</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1665293</commentid>
    <comment_count>10</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2020-06-22 22:28:49 -0700</bug_when>
    <thetext>attempted fix in:
https://trac.webkit.org/changeset/263385/webkit</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1665381</commentid>
    <comment_count>11</comment_count>
    <who name="Jonathan Bedard">jbedard</who>
    <bug_when>2020-06-23 07:43:27 -0700</bug_when>
    <thetext>(In reply to Saam Barati from comment #10)
&gt; attempted fix in:
&gt; https://trac.webkit.org/changeset/263385/webkit

Thank you!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1678488</commentid>
    <comment_count>12</comment_count>
    <who name="Saam Barati">saam</who>
    <bug_when>2020-08-06 18:02:02 -0700</bug_when>
    <thetext>*** Bug 213102 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>402488</attachid>
            <date>2020-06-22 12:01:41 -0700</date>
            <delta_ts>2020-06-22 13:37:36 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>b-backup.diff</filename>
            <type>text/plain</type>
            <size>24842</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDI2MjkyNikK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpA
QCAtNDY3LDYgKzQ2Nyw3IEBAIHNldChKYXZhU2NyaXB0Q29yZV9QUklWQVRFX0ZSQU1FV09SS19I
RUEKICAgICBhc3NlbWJsZXIvQXNzZW1ibGVyQ29tbW9uLmgKICAgICBhc3NlbWJsZXIvQ1BVLmgK
ICAgICBhc3NlbWJsZXIvQ29kZUxvY2F0aW9uLmgKKyAgICBhc3NlbWJsZXIvRmFzdEpJVFBlcm1p
c3Npb25zLmgKICAgICBhc3NlbWJsZXIvTGlua0J1ZmZlci5oCiAgICAgYXNzZW1ibGVyL01JUFNB
c3NlbWJsZXIuaAogICAgIGFzc2VtYmxlci9NSVBTUmVnaXN0ZXJzLmgKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyNjI5MjYpCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBj
b3B5KQpAQCAtOTAwLDYgKzkwMCw3IEBACiAJCTUyNUM5Q0RGMjIwMjg1ODMwMDgyREJGRCAvKiBX
YXNtQWlySVJHZW5lcmF0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNTI4NDdBRDkyMUZGQjg2MzAwNjFBOURCIC8qIFdhc21BaXJJUkdlbmVyYXRv
ci5jcHAgKi87IH07CiAJCTUyNjc4RjhGMUEwMzEwMDkwMDZBMzA2RCAvKiBCYXNpY0Jsb2NrTG9j
YXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUy
Njc4RjhEMUEwMzEwMDkwMDZBMzA2RCAvKiBCYXNpY0Jsb2NrTG9jYXRpb24uaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MjY3OEY5MTFBMDQxNzdD
MDA2QTMwNkQgLyogQ29udHJvbEZsb3dQcm9maWxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTI2NzhGOTAxQTA0MTc3QzAwNkEzMDZEIC8qIENvbnRy
b2xGbG93UHJvZmlsZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OworCQk1MjY3Q0Y4MjI0OTMxNkIxMDAyMkJGNkQgLyogRmFzdEpJVFBlcm1pc3Npb25z
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MjY3Q0Y4
MTI0OTMxNkFEMDAyMkJGNkQgLyogRmFzdEpJVFBlcm1pc3Npb25zLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTI2QUM0QjcxRTk3N0M1RDAwMzUw
MEUxIC8qIFdhc21Db2RlQmxvY2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDUyNkFDNEI1MUU5NzdDNUQwMDM1MDBFMSAvKiBXYXNtQ29kZUJsb2NrLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTI3Q0Uz
NTQyMjU1NUZFNTAwQzZGMzgyIC8qIEpTVG9XYXNtSUNDYWxsZWUuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUyN0NFMzUzMjI1NTVGREQwMEM2RjM4MiAv
KiBKU1RvV2FzbUlDQ2FsbGVlLmggKi87IH07CiAJCTUyODQ3QURDMjFGRkI4NjkwMDYxQTlEQiAv
KiBXYXNtQWlySVJHZW5lcmF0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDUyODQ3QURBMjFGRkI4NjMwMDYxQTlEQiAvKiBXYXNtQWlySVJHZW5lcmF0
b3IuaCAqLzsgfTsKQEAgLTM1NzEsNiArMzU3Miw3IEBACiAJCTUyNjc4RjhDMUEwMzEwMDkwMDZB
MzA2RCAvKiBCYXNpY0Jsb2NrTG9jYXRpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gQmFzaWNCbG9ja0xvY2F0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNTI2NzhGOEQxQTAzMTAwOTAwNkEzMDZEIC8qIEJhc2ljQmxvY2tMb2NhdGlvbi5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBCYXNpY0Jsb2NrTG9jYXRpb24uaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTI2NzhGOTAxQTA0MTc3QzAwNkEzMDZEIC8q
IENvbnRyb2xGbG93UHJvZmlsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
Q29udHJvbEZsb3dQcm9maWxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MjY3
Q0Y4MTI0OTMxNkFEMDAyMkJGNkQgLyogRmFzdEpJVFBlcm1pc3Npb25zLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEZhc3RKSVRQZXJtaXNzaW9ucy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1
MjZBQzRCNDFFOTc3QzVEMDAzNTAwRTEgLyogV2FzbUNvZGVCbG9jay5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXYXNtQ29kZUJsb2NrLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNTI2QUM0QjUxRTk3N0M1RDAwMzUwMEUxIC8qIFdhc21Db2RlQmxv
Y2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2FzbUNvZGVCbG9jay5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MjcyOTg3QjIzNUZDOEJBMDA1Qzk4MkMgLyog
R0NNZW1vcnlPcGVyYXRpb25zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdDTWVtb3J5T3BlcmF0aW9ucy5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtODE5OSw2ICs4MjAxLDcgQEAKIAkJCQk1
MjMzNTYyODIyNUVCOEU5MDAyNjhCRDIgLyogQ1BVLmNwcCAqLywKIAkJCQkwRjMwRDdCRjFEOTVE
NjJGMDA1MzA4OUQgLyogQ1BVLmggKi8sCiAJCQkJMEYzNzMwOEUxQzBDRDY4NTAwMDUyQkZBIC8q
IERpc2FsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZS5oICovLAorCQkJCTUyNjdDRjgxMjQ5
MzE2QUQwMDIyQkY2RCAvKiBGYXN0SklUUGVybWlzc2lvbnMuaCAqLywKIAkJCQkwRkY0Mjc1NjE1
OTE0QTIwMDA0Q0I5RkYgLyogTGlua0J1ZmZlci5jcHAgKi8sCiAJCQkJODZEM0IzQzExMDE1OUQ3
RjAwMjg2NUU3IC8qIExpbmtCdWZmZXIuaCAqLywKIAkJCQkwRkVCM0VDRTE2MjM3RjY3MDBBQjY3
QUQgLyogTWFjcm9Bc3NlbWJsZXIuY3BwICovLApAQCAtOTE3MSw2ICs5MTc0LDcgQEAKIAkJCQkw
RkI3RjM5ODE1RUQ4RTQ2MDBGMTY3QjIgLyogQnV0dGVyZmx5SW5saW5lcy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQzJGQ0FFMTExN0E5QzI0RTAwMzRDNzM1IC8qIEJ5dGVjb2RlQmFzaWNCbG9jay5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMTQzNTk1MjEyMkE1MjFDRDAwRTgwODZEIC8qIEJ5dGVjb2Rl
Q2FjaGVFcnJvci5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTI2N0NGODIyNDkzMTZCMTAwMjJCRjZE
IC8qIEZhc3RKSVRQZXJtaXNzaW9ucy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyMUMyN0YxNEJF
QUE4MjAwQURDNjRCIC8qIEJ5dGVjb2RlQ29udmVudGlvbnMuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUUzRDg3Nzc0MUU2NUMwQTAwMEJFOTQ1QSAvKiBCeXRlY29kZUR1bXBlci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJOTY5QTA3MjMwRUQxQ0UzMzAwRjFGNjgxIC8qIEJ5dGVjb2RlR2VuZXJhdG9yLmgg
aW4gSGVhZGVycyAqLywKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQVJN
NjRBc3NlbWJsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1i
bGVyL0FSTTY0QXNzZW1ibGVyLmgJKHJldmlzaW9uIDI2MjkyNikKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9hc3NlbWJsZXIvQVJNNjRBc3NlbWJsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMTQ5
MCw3ICsxNDkwLDcgQEAgcHVibGljOgogICAgIHVzaW5nIENvcHlGdW5jdGlvbiA9IHZvaWQqKCYp
KHZvaWQqLCBjb25zdCB2b2lkKiwgc2l6ZV90KTsKIAogICAgIHRlbXBsYXRlIDxDb3B5RnVuY3Rp
b24gY29weT4KLSAgICBzdGF0aWMgdm9pZCBmaWxsTm9wcyh2b2lkKiBiYXNlLCBzaXplX3Qgc2l6
ZSkKKyAgICBBTFdBWVNfSU5MSU5FIHN0YXRpYyB2b2lkIGZpbGxOb3BzKHZvaWQqIGJhc2UsIHNp
emVfdCBzaXplKQogICAgIHsKICAgICAgICAgUkVMRUFTRV9BU1NFUlQoIShzaXplICUgc2l6ZW9m
KGludDMyX3QpKSk7CiAgICAgICAgIHNpemVfdCBuID0gc2l6ZSAvIHNpemVvZihpbnQzMl90KTsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQVJNdjdBc3NlbWJsZXIuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0FSTXY3QXNzZW1i
bGVyLmgJKHJldmlzaW9uIDI2MjkyNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJs
ZXIvQVJNdjdBc3NlbWJsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMTk3Niw3ICsxOTc2LDcgQEAg
cHVibGljOgogICAgIHVzaW5nIENvcHlGdW5jdGlvbiA9IHZvaWQqKCYpKHZvaWQqLCBjb25zdCB2
b2lkKiwgc2l6ZV90KTsKIAogICAgIHRlbXBsYXRlIDxDb3B5RnVuY3Rpb24gY29weT4KLSAgICBz
dGF0aWMgdm9pZCBmaWxsTm9wcyh2b2lkKiBiYXNlLCBzaXplX3Qgc2l6ZSkKKyAgICBBTFdBWVNf
SU5MSU5FIHN0YXRpYyB2b2lkIGZpbGxOb3BzKHZvaWQqIGJhc2UsIHNpemVfdCBzaXplKQogICAg
IHsKICAgICAgICAgUkVMRUFTRV9BU1NFUlQoIShzaXplICUgc2l6ZW9mKGludDE2X3QpKSk7CiAK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvRmFzdEpJVFBlcm1pc3Npb25z
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9GYXN0SklU
UGVybWlzc2lvbnMuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNz
ZW1ibGVyL0Zhc3RKSVRQZXJtaXNzaW9ucy5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTA4
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisg
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdt
YSBvbmNlCisKKyNpZiBPUyhEQVJXSU4pICYmIENQVShBUk02NCkKKworI2lmICgoKFBMQVRGT1JN
KElPUykgfHwgUExBVEZPUk0oTUFDQ0FUQUxZU1QpKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01J
Tl9SRVFVSVJFRCA+PSAxNDAwMDApIFwKKyAgICB8fCAoUExBVEZPUk0oV0FUQ0hPUykgJiYgX19X
QVRDSF9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSA3MDAwMCkgXAorICAgIHx8IChQTEFURk9S
TShBUFBMRVRWKSAmJiBfX1RWX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDE0MDAwMCkgXAor
ICAgIHx8IChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQg
Pj0gMTAxNjAwKSkKKyNkZWZpbmUgSEFWRV9QVEhSRUFEX0pJVF9QRVJNSVNTSU9OU19BUEkgMQor
I2VuZGlmCisKKyNpZiBIQVZFKFBUSFJFQURfSklUX1BFUk1JU1NJT05TX0FQSSkKKyNpbmNsdWRl
IDxwdGhyZWFkLmg+CisjZWxpZiBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQorI2luY2x1ZGUgPG9z
L3RocmVhZF9zZWxmX3Jlc3RyaWN0Lmg+IAorI2VuZGlmCisKK3N0YXRpYyBBTFdBWVNfSU5MSU5F
IGJvb2wgdXNlRmFzdEpJVFBlcm1pc3Npb25zKCkKK3sKKyNpZiBDUFUoQVJNNjRFKQorICAgIHJl
dHVybiB0cnVlOworI2VsaWYgSEFWRShQVEhSRUFEX0pJVF9QRVJNSVNTSU9OU19BUEkpIAorICAg
IHJldHVybiAhIXB0aHJlYWRfaml0X3dyaXRlX3Byb3RlY3Rfc3VwcG9ydGVkX25wKCk7CisjZWxp
ZiBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQorICAgIHJldHVybiAhIW9zX3RocmVhZF9zZWxmX3Jl
c3RyaWN0X3J3eF9pc19zdXBwb3J0ZWQoKTsKKyNlbHNlCisgICAgcmV0dXJuIGZhbHNlOworI2Vu
ZGlmCit9CisKK3N0YXRpYyBBTFdBWVNfSU5MSU5FIHZvaWQgdGhyZWFkU2VsZlJlc3RyaWN0UldY
VG9SVygpCit7CisgICAgQVNTRVJUKHVzZUZhc3RKSVRQZXJtaXNzaW9ucygpKTsKKworI2lmIEhB
VkUoUFRIUkVBRF9KSVRfUEVSTUlTU0lPTlNfQVBJKSAKKyAgICBwdGhyZWFkX2ppdF93cml0ZV9w
cm90ZWN0X25wKGZhbHNlKTsKKyNlbGlmIFVTRShBUFBMRV9JTlRFUk5BTF9TREspCisgICAgb3Nf
dGhyZWFkX3NlbGZfcmVzdHJpY3Rfcnd4X3RvX3J3KCk7CisjZWxzZQorICAgIGJvb2wgdGF1dG9s
b2d5VG9JZ25vcmVXYXJuaW5nID0gdHJ1ZTsKKyAgICBpZiAodGF1dG9sb2d5VG9JZ25vcmVXYXJu
aW5nKQorICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworI2VuZGlmCit9CisK
K3N0YXRpYyBBTFdBWVNfSU5MSU5FIHZvaWQgdGhyZWFkU2VsZlJlc3RyaWN0UldYVG9SWCgpCit7
CisgICAgQVNTRVJUKHVzZUZhc3RKSVRQZXJtaXNzaW9ucygpKTsKKworI2lmIEhBVkUoUFRIUkVB
RF9KSVRfUEVSTUlTU0lPTlNfQVBJKSAKKyAgICBwdGhyZWFkX2ppdF93cml0ZV9wcm90ZWN0X25w
KHRydWUpOworI2VsaWYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykKKyAgICBvc190aHJlYWRfc2Vs
Zl9yZXN0cmljdF9yd3hfdG9fcngoKTsKKyNlbHNlCisgICAgYm9vbCB0YXV0b2xvZ3lUb0lnbm9y
ZVdhcm5pbmcgPSB0cnVlOworICAgIGlmICh0YXV0b2xvZ3lUb0lnbm9yZVdhcm5pbmcpCisgICAg
ICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisjZW5kaWYKK30KKworI2Vsc2UgLy8g
Tm90IE9TKERBUldJTikgJiYgQ1BVKEFSTTY0KQorCitjb25zdGV4cHIgYm9vbCBmYXN0SklUUGVy
bWlzc2lvbnNJc1N1cHBvcnRlZCgpCit7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitjb25zdGV4
cHIgYm9vbCB1c2VGYXN0SklUUGVybWlzc2lvbnMoKQoreworICAgIHJldHVybiBmYWxzZTsKK30K
KworTk9fUkVUVVJOX0RVRV9UT19DUkFTSCBzdGF0aWMgdm9pZCB0aHJlYWRTZWxmUmVzdHJpY3RS
V1hUb1JXKCkKK3sKKyAgICBDUkFTSCgpOworfQorCitOT19SRVRVUk5fRFVFX1RPX0NSQVNIIHN0
YXRpYyB2b2lkIHRocmVhZFNlbGZSZXN0cmljdFJXWFRvUlgoKQoreworICAgIENSQVNIKCk7Cit9
CisKKyNlbmRpZiAvLyBPUyhEQVJXSU4pICYmIENQVShBUk02NCkKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9hc3NlbWJsZXIvTGlua0J1ZmZlci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9MaW5rQnVmZmVyLmNwcAkocmV2aXNpb24gMjYyOTI2
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9MaW5rQnVmZmVyLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTE5LDI3ICsxMTksMTMgQEAgTGlua0J1ZmZlcjo6Q29kZVJlZjxMaW5r
QnVmZmVyUHRyVGFnPiBMaQogfQogCiAjaWYgRU5BQkxFKEJSQU5DSF9DT01QQUNUSU9OKQorCiAj
aWYgQ1BVKEFSTTY0RSkKICNkZWZpbmUgRU5BQkxFX1ZFUklGWV9KSVRfSEFTSCAxCiAjZWxzZQog
I2RlZmluZSBFTkFCTEVfVkVSSUZZX0pJVF9IQVNIIDAKICNlbmRpZgogCi0jaWYgRU5BQkxFKEZB
U1RfSklUX1BFUk1JU1NJT05TKSAmJiAhRU5BQkxFKFNFUEFSQVRFRF9XWF9IRUFQKQotIyAgIGRl
ZmluZSBJRl9GQVNUX0pJVF9QRVJNSVNTSU9OUyh0aGVuU3RtdCkgdGhlblN0bXQKLSMgICBkZWZp
bmUgSUZfRkFTVF9KSVRfUEVSTUlTU0lPTlNfRUxTRSh0aGVuU3RtdCwgZWxzZVN0bXQpIHRoZW5T
dG10Ci0jZWxpZiBFTkFCTEUoRkFTVF9KSVRfUEVSTUlTU0lPTlMpCi0jICAgZGVmaW5lIElGX0ZB
U1RfSklUX1BFUk1JU1NJT05TKHRoZW5TdG10KSBpZiAodXNlRmFzdEpJVFBlcm1pc3Npb25zKCkp
IFwKLSAgICAgICAgdGhlblN0bXQKLSMgICBkZWZpbmUgSUZfRkFTVF9KSVRfUEVSTUlTU0lPTlNf
RUxTRSh0aGVuU3RtdCwgZWxzZVN0bXQpIGlmICh1c2VGYXN0SklUUGVybWlzc2lvbnMoKSkgXAot
ICAgICAgICAgICAgdGhlblN0bXQ7IFwKLSAgICAgICAgZWxzZSBcCi0gICAgICAgICAgICBlbHNl
U3RtdAotI2Vsc2UKLSMgICBkZWZpbmUgSUZfRkFTVF9KSVRfUEVSTUlTU0lPTlModGhlblN0bXQp
Ci0jICAgZGVmaW5lIElGX0ZBU1RfSklUX1BFUk1JU1NJT05TX0VMU0UodGhlblN0bXQsIGVsc2VT
dG10KSBlbHNlU3RtdAotI2VuZGlmCi0KIGNsYXNzIEJyYW5jaENvbXBhY3Rpb25MaW5rQnVmZmVy
OwogCiB1c2luZyBUaHJlYWRTcGVjaWZpY0JyYW5jaENvbXBhY3Rpb25MaW5rQnVmZmVyID0gVGhy
ZWFkU3BlY2lmaWM8QnJhbmNoQ29tcGFjdGlvbkxpbmtCdWZmZXIsIFdURjo6Q2FuQmVHQ1RocmVh
ZDo6VHJ1ZT47CkBAIC0yNjgsNyArMjU0LDggQEAgdm9pZCBMaW5rQnVmZmVyOjpjb3B5Q29tcGFj
dEFuZExpbmtDb2RlKAogICAgIGludCB3cml0ZVB0ciA9IDA7CiAgICAgdW5zaWduZWQganVtcENv
dW50ID0ganVtcHNUb0xpbmsuc2l6ZSgpOwogCi0gICAgSUZfRkFTVF9KSVRfUEVSTUlTU0lPTlMo
b3NfdGhyZWFkX3NlbGZfcmVzdHJpY3Rfcnd4X3RvX3J3KCkpOworICAgIGlmICh1c2VGYXN0SklU
UGVybWlzc2lvbnMoKSkKKyAgICAgICAgdGhyZWFkU2VsZlJlc3RyaWN0UldYVG9SVygpOwogCiAg
ICAgaWYgKG1fc2hvdWxkUGVyZm9ybUJyYW5jaENvbXBhY3Rpb24pIHsKICAgICAgICAgZm9yICh1
bnNpZ25lZCBpID0gMDsgaSA8IGp1bXBDb3VudDsgKytpKSB7CkBAIC0zNTYsMTggKzM0MywyNCBA
QCB2b2lkIExpbmtCdWZmZXI6OmNvcHlDb21wYWN0QW5kTGlua0NvZGUoCiAgICAgZm9yICh1bnNp
Z25lZCBpID0gMDsgaSA8IGp1bXBDb3VudDsgKytpKSB7CiAgICAgICAgIHVpbnQ4X3QqIGxvY2F0
aW9uID0gY29kZU91dERhdGEgKyBqdW1wc1RvTGlua1tpXS5mcm9tKCk7CiAgICAgICAgIHVpbnQ4
X3QqIHRhcmdldCA9IGNvZGVPdXREYXRhICsganVtcHNUb0xpbmtbaV0udG8oKSAtIGV4ZWN1dGFi
bGVPZmZzZXRGb3IoanVtcHNUb0xpbmtbaV0udG8oKSk7Ci0gICAgICAgIElGX0ZBU1RfSklUX1BF
Uk1JU1NJT05TX0VMU0UoTWFjcm9Bc3NlbWJsZXI6Omxpbms8bWVtY3B5PihqdW1wc1RvTGlua1tp
XSwgb3V0RGF0YSArIGp1bXBzVG9MaW5rW2ldLmZyb20oKSwgbG9jYXRpb24sIHRhcmdldCksIFwK
LSAgICAgICAgICAgIE1hY3JvQXNzZW1ibGVyOjpsaW5rPHBlcmZvcm1KSVRNZW1jcHk+KGp1bXBz
VG9MaW5rW2ldLCBvdXREYXRhICsganVtcHNUb0xpbmtbaV0uZnJvbSgpLCBsb2NhdGlvbiwgdGFy
Z2V0KSk7CisgICAgICAgIGlmICh1c2VGYXN0SklUUGVybWlzc2lvbnMoKSkKKyAgICAgICAgICAg
IE1hY3JvQXNzZW1ibGVyOjpsaW5rPG1lbWNweT4oanVtcHNUb0xpbmtbaV0sIG91dERhdGEgKyBq
dW1wc1RvTGlua1tpXS5mcm9tKCksIGxvY2F0aW9uLCB0YXJnZXQpOworICAgICAgICBlbHNlCisg
ICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6bGluazxwZXJmb3JtSklUTWVtY3B5PihqdW1wc1Rv
TGlua1tpXSwgb3V0RGF0YSArIGp1bXBzVG9MaW5rW2ldLmZyb20oKSwgbG9jYXRpb24sIHRhcmdl
dCk7CiAgICAgfQogCiAgICAgc2l6ZV90IGNvbXBhY3RTaXplID0gd3JpdGVQdHIgKyBpbml0aWFs
U2l6ZSAtIHJlYWRQdHI7CiAgICAgaWYgKCFtX2V4ZWN1dGFibGVNZW1vcnkpIHsKICAgICAgICAg
c2l6ZV90IG5vcFNpemVJbkJ5dGVzID0gaW5pdGlhbFNpemUgLSBjb21wYWN0U2l6ZTsKLSAgICAg
ICAgSUZfRkFTVF9KSVRfUEVSTUlTU0lPTlNfRUxTRShBc3NlbWJsZXI6OmZpbGxOb3BzPG1lbWNw
eT4ob3V0RGF0YSArIGNvbXBhY3RTaXplLCBub3BTaXplSW5CeXRlcyksIFwKLSAgICAgICAgICAg
IEFzc2VtYmxlcjo6ZmlsbE5vcHM8cGVyZm9ybUpJVE1lbWNweT4ob3V0RGF0YSArIGNvbXBhY3RT
aXplLCBub3BTaXplSW5CeXRlcykpOworCisgICAgICAgIGlmICh1c2VGYXN0SklUUGVybWlzc2lv
bnMoKSkKKyAgICAgICAgICAgIEFzc2VtYmxlcjo6ZmlsbE5vcHM8bWVtY3B5PihvdXREYXRhICsg
Y29tcGFjdFNpemUsIG5vcFNpemVJbkJ5dGVzKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAg
QXNzZW1ibGVyOjpmaWxsTm9wczxwZXJmb3JtSklUTWVtY3B5PihvdXREYXRhICsgY29tcGFjdFNp
emUsIG5vcFNpemVJbkJ5dGVzKTsKICAgICB9CiAKLSAgICBJRl9GQVNUX0pJVF9QRVJNSVNTSU9O
Uyhvc190aHJlYWRfc2VsZl9yZXN0cmljdF9yd3hfdG9fcngoKSk7CisgICAgaWYgKHVzZUZhc3RK
SVRQZXJtaXNzaW9ucygpKQorICAgICAgICB0aHJlYWRTZWxmUmVzdHJpY3RSV1hUb1JYKCk7CiAK
ICAgICBpZiAobV9leGVjdXRhYmxlTWVtb3J5KSB7CiAgICAgICAgIG1fc2l6ZSA9IGNvbXBhY3RT
aXplOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NSVBTQXNzZW1ibGVy
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NSVBTQXNz
ZW1ibGVyLmgJKHJldmlzaW9uIDI2MjkyNikKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3Nl
bWJsZXIvTUlQU0Fzc2VtYmxlci5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNjUsNyArMTY1LDcgQEAg
cHVibGljOgogICAgIHVzaW5nIENvcHlGdW5jdGlvbiA9IHZvaWQqKCYpKHZvaWQqLCBjb25zdCB2
b2lkKiwgc2l6ZV90KTsKIAogICAgIHRlbXBsYXRlIDxDb3B5RnVuY3Rpb24gY29weT4KLSAgICBz
dGF0aWMgdm9pZCBmaWxsTm9wcyh2b2lkKiBiYXNlLCBzaXplX3Qgc2l6ZSkKKyAgICBBTFdBWVNf
SU5MSU5FIHN0YXRpYyB2b2lkIGZpbGxOb3BzKHZvaWQqIGJhc2UsIHNpemVfdCBzaXplKQogICAg
IHsKICAgICAgICAgVU5VU0VEX1BBUkFNKGNvcHkpOwogICAgICAgICBSRUxFQVNFX0FTU0VSVCgh
KHNpemUgJSBzaXplb2YoaW50MzJfdCkpKTsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9h
c3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk02NC5oCShyZXZpc2lvbiAyNjI5
MjYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJN
NjQuaAkod29ya2luZyBjb3B5KQpAQCAtODYsOCArODYsOSBAQCBwdWJsaWM6CiAgICAgc3RhdGlj
IEp1bXBMaW5rVHlwZSBjb21wdXRlSnVtcFR5cGUoSnVtcFR5cGUganVtcFR5cGUsIGNvbnN0IHVp
bnQ4X3QqIGZyb20sIGNvbnN0IHVpbnQ4X3QqIHRvKSB7IHJldHVybiBBc3NlbWJsZXI6OmNvbXB1
dGVKdW1wVHlwZShqdW1wVHlwZSwgZnJvbSwgdG8pOyB9CiAgICAgc3RhdGljIEp1bXBMaW5rVHlw
ZSBjb21wdXRlSnVtcFR5cGUoTGlua1JlY29yZCYgcmVjb3JkLCBjb25zdCB1aW50OF90KiBmcm9t
LCBjb25zdCB1aW50OF90KiB0bykgeyByZXR1cm4gQXNzZW1ibGVyOjpjb21wdXRlSnVtcFR5cGUo
cmVjb3JkLCBmcm9tLCB0byk7IH0KICAgICBzdGF0aWMgaW50IGp1bXBTaXplRGVsdGEoSnVtcFR5
cGUganVtcFR5cGUsIEp1bXBMaW5rVHlwZSBqdW1wTGlua1R5cGUpIHsgcmV0dXJuIEFzc2VtYmxl
cjo6anVtcFNpemVEZWx0YShqdW1wVHlwZSwganVtcExpbmtUeXBlKTsgfQorCiAgICAgdGVtcGxh
dGUgPEFzc2VtYmxlcjo6Q29weUZ1bmN0aW9uIGNvcHk+Ci0gICAgc3RhdGljIHZvaWQgbGluayhM
aW5rUmVjb3JkJiByZWNvcmQsIHVpbnQ4X3QqIGZyb20sIGNvbnN0IHVpbnQ4X3QqIGZyb21JbnN0
cnVjdGlvbiwgdWludDhfdCogdG8pIHsgcmV0dXJuIEFzc2VtYmxlcjo6bGluazxjb3B5PihyZWNv
cmQsIGZyb20sIGZyb21JbnN0cnVjdGlvbiwgdG8pOyB9CisgICAgQUxXQVlTX0lOTElORSBzdGF0
aWMgdm9pZCBsaW5rKExpbmtSZWNvcmQmIHJlY29yZCwgdWludDhfdCogZnJvbSwgY29uc3QgdWlu
dDhfdCogZnJvbUluc3RydWN0aW9uLCB1aW50OF90KiB0bykgeyByZXR1cm4gQXNzZW1ibGVyOjps
aW5rPGNvcHk+KHJlY29yZCwgZnJvbSwgZnJvbUluc3RydWN0aW9uLCB0byk7IH0KIAogICAgIHN0
YXRpYyBjb25zdGV4cHIgU2NhbGUgU2NhbGVQdHIgPSBUaW1lc0VpZ2h0OwogCkluZGV4OiBTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNdjcuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJN
djcuaAkocmV2aXNpb24gMjYyOTI2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxl
ci9NYWNyb0Fzc2VtYmxlckFSTXY3LmgJKHdvcmtpbmcgY29weSkKQEAgLTcxLDggKzcxLDkgQEAg
cHVibGljOgogICAgIHN0YXRpYyBKdW1wTGlua1R5cGUgY29tcHV0ZUp1bXBUeXBlKEp1bXBUeXBl
IGp1bXBUeXBlLCBjb25zdCB1aW50OF90KiBmcm9tLCBjb25zdCB1aW50OF90KiB0bykgeyByZXR1
cm4gQVJNdjdBc3NlbWJsZXI6OmNvbXB1dGVKdW1wVHlwZShqdW1wVHlwZSwgZnJvbSwgdG8pOyB9
CiAgICAgc3RhdGljIEp1bXBMaW5rVHlwZSBjb21wdXRlSnVtcFR5cGUoTGlua1JlY29yZCYgcmVj
b3JkLCBjb25zdCB1aW50OF90KiBmcm9tLCBjb25zdCB1aW50OF90KiB0bykgeyByZXR1cm4gQVJN
djdBc3NlbWJsZXI6OmNvbXB1dGVKdW1wVHlwZShyZWNvcmQsIGZyb20sIHRvKTsgfQogICAgIHN0
YXRpYyBpbnQganVtcFNpemVEZWx0YShKdW1wVHlwZSBqdW1wVHlwZSwgSnVtcExpbmtUeXBlIGp1
bXBMaW5rVHlwZSkgeyByZXR1cm4gQVJNdjdBc3NlbWJsZXI6Omp1bXBTaXplRGVsdGEoanVtcFR5
cGUsIGp1bXBMaW5rVHlwZSk7IH0KKwogICAgIHRlbXBsYXRlIDxBc3NlbWJsZXI6OkNvcHlGdW5j
dGlvbiBjb3B5PgotICAgIHN0YXRpYyB2b2lkIGxpbmsoTGlua1JlY29yZCYgcmVjb3JkLCB1aW50
OF90KiBmcm9tLCBjb25zdCB1aW50OF90KiBmcm9tSW5zdHJ1Y3Rpb24sIHVpbnQ4X3QqIHRvKSB7
IHJldHVybiBBUk12N0Fzc2VtYmxlcjo6bGluazxjb3B5PihyZWNvcmQsIGZyb20sIGZyb21JbnN0
cnVjdGlvbiwgdG8pOyB9CisgICAgQUxXQVlTX0lOTElORSBzdGF0aWMgdm9pZCBsaW5rKExpbmtS
ZWNvcmQmIHJlY29yZCwgdWludDhfdCogZnJvbSwgY29uc3QgdWludDhfdCogZnJvbUluc3RydWN0
aW9uLCB1aW50OF90KiB0bykgeyByZXR1cm4gQVJNdjdBc3NlbWJsZXI6Omxpbms8Y29weT4ocmVj
b3JkLCBmcm9tLCBmcm9tSW5zdHJ1Y3Rpb24sIHRvKTsgfQogCiAgICAgc3RydWN0IEFybUFkZHJl
c3MgewogICAgICAgICBlbnVtIEFkZHJlc3NUeXBlIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9qaXQvRXhlY3V0YWJsZUFsbG9jYXRvci5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0ph
dmFTY3JpcHRDb3JlL2ppdC9FeGVjdXRhYmxlQWxsb2NhdG9yLmNwcAkocmV2aXNpb24gMjYyOTI2
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9FeGVjdXRhYmxlQWxsb2NhdG9yLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtMzM0LDI3ICszMzQsMjEgQEAgc3RhdGljIEFMV0FZU19JTkxJTkUg
SklUUmVzZXJ2YXRpb24gaW5pdAogICAgICAgICBBU1NFUlQocmVzZXJ2YXRpb24ucGFnZVJlc2Vy
dmF0aW9uLnNpemUoKSA9PSByZXNlcnZhdGlvbi5zaXplKTsKICAgICAgICAgcmVzZXJ2YXRpb24u
YmFzZSA9IHJlc2VydmF0aW9uLnBhZ2VSZXNlcnZhdGlvbi5iYXNlKCk7CiAKLSNpZiBFTkFCTEUo
RkFTVF9KSVRfUEVSTUlTU0lPTlMpICYmICFFTkFCTEUoU0VQQVJBVEVEX1dYX0hFQVApCi0gICAg
ICAgIFJFTEVBU0VfQVNTRVJUKG9zX3RocmVhZF9zZWxmX3Jlc3RyaWN0X3J3eF9pc19zdXBwb3J0
ZWQoKSk7Ci0gICAgICAgIG9zX3RocmVhZF9zZWxmX3Jlc3RyaWN0X3J3eF90b19yeCgpOwotCi0j
ZWxzZSAvLyBub3QgRU5BQkxFKEZBU1RfSklUX1BFUk1JU1NJT05TKSBvciBFTkFCTEUoU0VQQVJB
VEVEX1dYX0hFQVApCi0jaWYgRU5BQkxFKEZBU1RfSklUX1BFUk1JU1NJT05TKQotICAgICAgICBp
ZiAob3NfdGhyZWFkX3NlbGZfcmVzdHJpY3Rfcnd4X2lzX3N1cHBvcnRlZCgpKSB7Ci0gICAgICAg
ICAgICBnX2pzY0NvbmZpZy51c2VGYXN0UGVybWlzaW9uc0pJVENvcHkgPSB0cnVlOwotICAgICAg
ICAgICAgb3NfdGhyZWFkX3NlbGZfcmVzdHJpY3Rfcnd4X3RvX3J4KCk7Ci0gICAgICAgIH0gZWxz
ZQotI2VuZGlmCi0gICAgICAgIGlmIChPcHRpb25zOjp1c2VTZXBhcmF0ZWRXWEhlYXAoKSkgewor
ICAgICAgICBib29sIGZhc3RKSVRQZXJtaXNzaW9uc0lzU3VwcG9ydGVkID0gdXNlRmFzdEpJVFBl
cm1pc3Npb25zKCk7CisgICAgICAgIGlmIChmYXN0SklUUGVybWlzc2lvbnNJc1N1cHBvcnRlZCkK
KyAgICAgICAgICAgIHRocmVhZFNlbGZSZXN0cmljdFJXWFRvUlgoKTsKKworI2lmIEVOQUJMRShT
RVBBUkFURURfV1hfSEVBUCkKKyAgICAgICAgaWYgKCFmYXN0SklUUGVybWlzc2lvbnNJc1N1cHBv
cnRlZCkgewogICAgICAgICAgICAgLy8gRmlyc3QgcGFnZSBvZiBvdXIgSklUIGFsbG9jYXRpb24g
aXMgcmVzZXJ2ZWQuCiAgICAgICAgICAgICBBU1NFUlQocmVzZXJ2YXRpb24uc2l6ZSA+PSBwYWdl
U2l6ZSgpICogMik7CiAgICAgICAgICAgICByZXNlcnZhdGlvbi5iYXNlID0gKHZvaWQqKSgodWlu
dHB0cl90KShyZXNlcnZhdGlvbi5iYXNlKSArIHBhZ2VTaXplKCkpOwogICAgICAgICAgICAgcmVz
ZXJ2YXRpb24uc2l6ZSAtPSBwYWdlU2l6ZSgpOwogICAgICAgICAgICAgaW5pdGlhbGl6ZVNlcGFy
YXRlZFdYSGVhcHMocmVzZXJ2YXRpb24ucGFnZVJlc2VydmF0aW9uLmJhc2UoKSwgcGFnZVNpemUo
KSwgcmVzZXJ2YXRpb24uYmFzZSwgcmVzZXJ2YXRpb24uc2l6ZSk7CiAgICAgICAgIH0KLSNlbmRp
ZiAvLyBub3QgRU5BQkxFKEZBU1RfSklUX1BFUk1JU1NJT05TKSBvciBFTkFCTEUoU0VQQVJBVEVE
X1dYX0hFQVApCi0gICAgICAgIHZvaWQqIHJlc2VydmF0aW9uRW5kID0gcmVpbnRlcnByZXRfY2Fz
dDx1aW50OF90Kj4ocmVzZXJ2YXRpb24uYmFzZSkgKyByZXNlcnZhdGlvbi5zaXplOworI2VuZGlm
CiAKKyAgICAgICAgdm9pZCogcmVzZXJ2YXRpb25FbmQgPSByZWludGVycHJldF9jYXN0PHVpbnQ4
X3QqPihyZXNlcnZhdGlvbi5iYXNlKSArIHJlc2VydmF0aW9uLnNpemU7CiAgICAgICAgIGdfanNj
Q29uZmlnLnN0YXJ0RXhlY3V0YWJsZU1lbW9yeSA9IHRhZ0NvZGVQdHI8RXhlY3V0YWJsZU1lbW9y
eVB0clRhZz4ocmVzZXJ2YXRpb24uYmFzZSk7CiAgICAgICAgIGdfanNjQ29uZmlnLmVuZEV4ZWN1
dGFibGVNZW1vcnkgPSB0YWdDb2RlUHRyPEV4ZWN1dGFibGVNZW1vcnlQdHJUYWc+KHJlc2VydmF0
aW9uRW5kKTsKICAgICB9CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0V4ZWN1dGFi
bGVBbGxvY2F0b3IuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvaml0L0V4
ZWN1dGFibGVBbGxvY2F0b3IuaAkocmV2aXNpb24gMjYyOTI2KQorKysgU291cmNlL0phdmFTY3Jp
cHRDb3JlL2ppdC9FeGVjdXRhYmxlQWxsb2NhdG9yLmgJKHdvcmtpbmcgY29weSkKQEAgLTI1LDYg
KzI1LDcgQEAKIAogI3ByYWdtYSBvbmNlCiAKKyNpbmNsdWRlICJGYXN0SklUUGVybWlzc2lvbnMu
aCIKICNpbmNsdWRlICJKSVRDb21waWxhdGlvbkVmZm9ydC5oIgogI2luY2x1ZGUgIkpTQ0NvbmZp
Zy5oIgogI2luY2x1ZGUgIkpTQ1B0clRhZy5oIgpAQCAtNDYsOSArNDcsNiBAQAogI2luY2x1ZGUg
PHN5cy9jYWNoZWN0bC5oPgogI2VuZGlmCiAKLSNpZiBFTkFCTEUoRkFTVF9KSVRfUEVSTUlTU0lP
TlMpCi0jaW5jbHVkZSA8b3MvdGhyZWFkX3NlbGZfcmVzdHJpY3QuaD4gCi0jZW5kaWYKICNkZWZp
bmUgSklUX0FMTE9DQVRPUl9MQVJHRV9BTExPQ19TSVpFIChwYWdlU2l6ZSgpICogNCkKIAogI2Rl
ZmluZSBFWEVDVVRBQkxFX1BPT0xfV1JJVEFCTEUgdHJ1ZQpAQCAtMTEzLDE3ICsxMTEsNiBAQCBK
U19FWFBPUlRfUFJJVkFURSBib29sIGlzSklUUEModm9pZCogcGMpCiAKIEpTX0VYUE9SVF9QUklW
QVRFIHZvaWQgZHVtcEpJVE1lbW9yeShjb25zdCB2b2lkKiwgY29uc3Qgdm9pZCosIHNpemVfdCk7
CiAKLXN0YXRpYyBBTFdBWVNfSU5MSU5FIGJvb2wgdXNlRmFzdEpJVFBlcm1pc3Npb25zKCkKLXsK
LSNpZiBFTkFCTEUoRkFTVF9KSVRfUEVSTUlTU0lPTlMpICYmICFFTkFCTEUoU0VQQVJBVEVEX1dY
X0hFQVApCi0gICAgcmV0dXJuIHRydWU7Ci0jZWxpZiBFTkFCTEUoRkFTVF9KSVRfUEVSTUlTU0lP
TlMpCi0gICAgcmV0dXJuIGdfanNjQ29uZmlnLnVzZUZhc3RQZXJtaXNpb25zSklUQ29weTsKLSNl
bHNlCi0gICAgcmV0dXJuIGZhbHNlOwotI2VuZGlmCi19Ci0KIHN0YXRpYyBBTFdBWVNfSU5MSU5F
IHZvaWQqIHBlcmZvcm1KSVRNZW1jcHkodm9pZCAqZHN0LCBjb25zdCB2b2lkICpzcmMsIHNpemVf
dCBuKQogewogI2lmIENQVShBUk02NCkKQEAgLTEzMiwyMCArMTE5LDE4IEBAIHN0YXRpYyBBTFdB
WVNfSU5MSU5FIHZvaWQqIHBlcmZvcm1KSVRNZW0KICAgICBSRUxFQVNFX0FTU0VSVChyb3VuZFVw
VG9NdWx0aXBsZU9mPGluc3RydWN0aW9uU2l6ZT4oc3JjKSA9PSBzcmMpOwogI2VuZGlmCiAgICAg
aWYgKGlzSklUUEMoZHN0KSkgeworICAgICAgICBSRUxFQVNFX0FTU0VSVCghR2lnYWNhZ2U6OmNv
bnRhaW5zKHNyYykpOwogICAgICAgICBSRUxFQVNFX0FTU0VSVChyZWludGVycHJldF9jYXN0PHVp
bnQ4X3QqPihkc3QpICsgbiA8PSBlbmRPZkZpeGVkRXhlY3V0YWJsZU1lbW9yeVBvb2woKSk7CiAK
ICAgICAgICAgaWYgKFVOTElLRUxZKE9wdGlvbnM6OmR1bXBKSVRNZW1vcnlQYXRoKCkpKQogICAg
ICAgICAgICAgZHVtcEpJVE1lbW9yeShkc3QsIHNyYywgbik7Ci0jaWYgRU5BQkxFKEZBU1RfSklU
X1BFUk1JU1NJT05TKQotICAgICAgICBpZiAodXNlRmFzdEpJVFBlcm1pc3Npb25zKCkpCi0gICAg
ICAgIHsKLSAgICAgICAgICAgIG9zX3RocmVhZF9zZWxmX3Jlc3RyaWN0X3J3eF90b19ydygpOwor
CisgICAgICAgIGlmICh1c2VGYXN0SklUUGVybWlzc2lvbnMoKSkgeworICAgICAgICAgICAgdGhy
ZWFkU2VsZlJlc3RyaWN0UldYVG9SVygpOwogICAgICAgICAgICAgbWVtY3B5KGRzdCwgc3JjLCBu
KTsKLSAgICAgICAgICAgIFJFTEVBU0VfQVNTRVJUKCFHaWdhY2FnZTo6Y29udGFpbnMoc3JjKSk7
Ci0gICAgICAgICAgICBvc190aHJlYWRfc2VsZl9yZXN0cmljdF9yd3hfdG9fcngoKTsKKyAgICAg
ICAgICAgIHRocmVhZFNlbGZSZXN0cmljdFJXWFRvUlgoKTsKICAgICAgICAgICAgIHJldHVybiBk
c3Q7CiAgICAgICAgIH0KLSNlbmRpZiAvLyBFTkFCTEUoRkFTVF9KSVRfUEVSTUlTU0lPTlMpCiAK
ICNpZiBFTkFCTEUoU0VQQVJBVEVEX1dYX0hFQVApCiAgICAgICAgIGlmIChnX2pzY0NvbmZpZy5q
aXRXcml0ZVNlcGFyYXRlSGVhcHMpIHsKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQ0NvbmZpZy5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50
aW1lL0pTQ0NvbmZpZy5oCShyZXZpc2lvbiAyNjI5MjYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENv
cmUvcnVudGltZS9KU0NDb25maWcuaAkod29ya2luZyBjb3B5KQpAQCAtNzIsNyArNzIsNiBAQCBz
dHJ1Y3QgQ29uZmlnIHsKIAogI2lmIEVOQUJMRShTRVBBUkFURURfV1hfSEVBUCkKICAgICBKSVRX
cml0ZVNlcGFyYXRlSGVhcHNGdW5jdGlvbiBqaXRXcml0ZVNlcGFyYXRlSGVhcHM7Ci0gICAgYm9v
bCB1c2VGYXN0UGVybWlzaW9uc0pJVENvcHk7CiAjZW5kaWYKIAogICAgIE9wdGlvbnNTdG9yYWdl
IG9wdGlvbnM7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zLmNw
cAkocmV2aXNpb24gMjYyOTI2KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0
aW9ucy5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTQ2MiwxNCArNDYyLDYgQEAgc3RhdGljIHZvaWQg
cmVjb21wdXRlRGVwZW5kZW50T3B0aW9ucygpCiAgICAgICAgIE9wdGlvbnM6Om1heGltdW1FdmFs
Q2FjaGVhYmxlU291cmNlTGVuZ3RoKCkgPSAxNTAwMDA7CiAgICAgICAgIE9wdGlvbnM6OnVzZUNv
bmN1cnJlbnRKSVQoKSA9IGZhbHNlOwogICAgIH0KLSNpZiBFTkFCTEUoU0VQQVJBVEVEX1dYX0hF
QVApCi0gICAgLy8gT3ZlcnJpZGUgZ2xvYmFsbHkgZm9yIG5vdy4gTG9uZ2VyIHRlcm0gd2UnbGwg
anVzdCBtYWtlIHRoZSBkZWZhdWx0Ci0gICAgLy8gYmUgdG8gaGF2ZSB0aGlzIG9wdGlvbiBlbmFi
bGVkLCBhbmQgaGF2ZSBwbGF0Zm9ybXMgdGhhdCBkb24ndCBzdXBwb3J0Ci0gICAgLy8gaXQganVz
dCBzaWxlbnRseSB1c2UgYSBzaW5nbGUgbWFwcGluZy4KLSAgICBPcHRpb25zOjp1c2VTZXBhcmF0
ZWRXWEhlYXAoKSA9IHRydWU7Ci0jZWxzZQotICAgIE9wdGlvbnM6OnVzZVNlcGFyYXRlZFdYSGVh
cCgpID0gZmFsc2U7Ci0jZW5kaWYKIAogICAgIGlmIChPcHRpb25zOjphbHdheXNVc2VTaGFkb3dD
aGlja2VuKCkpCiAgICAgICAgIE9wdGlvbnM6Om1heGltdW1JbmxpbmluZ0RlcHRoKCkgPSAxOwpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9uc0xpc3QuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zTGlzdC5oCShyZXZp
c2lvbiAyNjI5MjYpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zTGlz
dC5oCSh3b3JraW5nIGNvcHkpCkBAIC05Niw3ICs5Niw2IEBAIGNvbnN0ZXhwciBib29sIGVuYWJs
ZVdlYkFzc2VtYmx5U3RyZWFtaW4KICAgICBcCiAgICAgdihCb29sLCBjcmFzaElmQ2FudEFsbG9j
YXRlSklUTWVtb3J5LCBmYWxzZSwgTm9ybWFsLCBudWxscHRyKSBcCiAgICAgdihVbnNpZ25lZCwg
aml0TWVtb3J5UmVzZXJ2YXRpb25TaXplLCAwLCBOb3JtYWwsICJTZXQgdGhpcyBudW1iZXIgdG8g
Y2hhbmdlIHRoZSBleGVjdXRhYmxlIGFsbG9jYXRpb24gc2l6ZSBpbiBFeGVjdXRhYmxlQWxsb2Nh
dG9yRml4ZWRWTVBvb2wuIChJbiBieXRlcy4pIikgXAotICAgIHYoQm9vbCwgdXNlU2VwYXJhdGVk
V1hIZWFwLCBmYWxzZSwgTm9ybWFsLCBudWxscHRyKSBcCiAgICAgXAogICAgIHYoQm9vbCwgZm9y
Y2VDb2RlQmxvY2tMaXZlbmVzcywgZmFsc2UsIE5vcm1hbCwgbnVsbHB0cikgXAogICAgIHYoQm9v
bCwgZm9yY2VJQ0ZhaWx1cmUsIGZhbHNlLCBOb3JtYWwsIG51bGxwdHIpIFwKSW5kZXg6IFNvdXJj
ZS9XVEYvd3RmL1BsYXRmb3JtRW5hYmxlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYv
UGxhdGZvcm1FbmFibGUuaAkocmV2aXNpb24gMjYyOTI2KQorKysgU291cmNlL1dURi93dGYvUGxh
dGZvcm1FbmFibGUuaAkod29ya2luZyBjb3B5KQpAQCAtMjU3LDEwICsyNTcsNiBAQAogI2RlZmlu
ZSBFTkFCTEVfRU5DUllQVEVEX01FRElBIDAKICNlbmRpZgogCi0jaWYgIWRlZmluZWQoRU5BQkxF
X0ZBU1RfSklUX1BFUk1JU1NJT05TKQotI2RlZmluZSBFTkFCTEVfRkFTVF9KSVRfUEVSTUlTU0lP
TlMgMAotI2VuZGlmCi0KICNpZiAhZGVmaW5lZChFTkFCTEVfRklMVEVSU19MRVZFTF8yKQogI2Rl
ZmluZSBFTkFCTEVfRklMVEVSU19MRVZFTF8yIDAKICNlbmRpZgpJbmRleDogU291cmNlL1dURi93
dGYvUGxhdGZvcm1FbmFibGVDb2NvYS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL1Bs
YXRmb3JtRW5hYmxlQ29jb2EuaAkocmV2aXNpb24gMjYyOTI2KQorKysgU291cmNlL1dURi93dGYv
UGxhdGZvcm1FbmFibGVDb2NvYS5oCSh3b3JraW5nIGNvcHkpCkBAIC0xNzksMTEgKzE3OSw2IEBA
CiAjZGVmaW5lIEVOQUJMRV9EUkFHX1NVUFBPUlQgMAogI2VuZGlmCiAKLS8qIEZJWE1FOiBUaGlz
IHNob3VsZCBwcm9iYWJseSBiZSBIQVZFX0ZBU1RfSklUX1BFUk1JU1NJT05TIGFuZCBtYXkgYmUg
ZW50aXJlbHkgdW5uZWNlc3NhcnkgZHVlIHRvIHJ1bnRpbWUgY2hlY2tpbmcgc3VwcG9ydCB2aWEg
b3NfdGhyZWFkX3NlbGZfcmVzdHJpY3Rfcnd4X2lzX3N1cHBvcnRlZCgpLiAqLwotI2lmICFkZWZp
bmVkKEVOQUJMRV9GQVNUX0pJVF9QRVJNSVNTSU9OUykgJiYgQ1BVKEFSTTY0KSAmJiAhKE9TKFRW
T1MpIHx8IE9TKFdBVENIT1MpKSAmJiBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQotI2RlZmluZSBF
TkFCTEVfRkFTVF9KSVRfUEVSTUlTU0lPTlMgMQotI2VuZGlmCi0KICNpZiAhZGVmaW5lZChFTkFC
TEVfRklMRV9SRVBMQUNFTUVOVCkKICNkZWZpbmUgRU5BQkxFX0ZJTEVfUkVQTEFDRU1FTlQgMQog
I2VuZGlmCkBAIC0zODQsNyArMzc5LDcgQEAKICNkZWZpbmUgRU5BQkxFX1NFQ19JVEVNX1NISU0g
MQogI2VuZGlmCiAKLSNpZiAhZGVmaW5lZChFTkFCTEVfU0VQQVJBVEVEX1dYX0hFQVApICYmIFBM
QVRGT1JNKElPU19GQU1JTFkpICYmIENQVShBUk02NCkgJiYgKCFFTkFCTEUoRkFTVF9KSVRfUEVS
TUlTU0lPTlMpIHx8ICFDUFUoQVJNNjRFKSkKKyNpZiAhZGVmaW5lZChFTkFCTEVfU0VQQVJBVEVE
X1dYX0hFQVApICYmIFBMQVRGT1JNKElPU19GQU1JTFkpICYmIENQVShBUk02NCkgJiYgIUNQVShB
Uk02NEUpCiAjZGVmaW5lIEVOQUJMRV9TRVBBUkFURURfV1hfSEVBUCAxCiAjZW5kaWYKIApJbmRl
eDogU291cmNlL2NtYWtlL09wdGlvbnNGVFcuY21ha2UKPT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL2Nt
YWtlL09wdGlvbnNGVFcuY21ha2UJKHJldmlzaW9uIDI2MjkyNikKKysrIFNvdXJjZS9jbWFrZS9P
cHRpb25zRlRXLmNtYWtlCSh3b3JraW5nIGNvcHkpCkBAIC03Niw3ICs3Niw2IEBAIFdFQktJVF9P
UFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV8KIFdFQktJVF9PUFRJT05fREVGQVVMVF9Q
T1JUX1ZBTFVFKEVOQUJMRV9DU1NfU0VMRUNUT1JTX0xFVkVMNCBQUklWQVRFIE9OKQogV0VCS0lU
X09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX0NVUlNPUl9WSVNJQklMSVRZIFBSSVZB
VEUgT04pCiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfRFJBR19TVVBQ
T1JUIFBSSVZBVEUgT04pCi1XRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVf
RkFTVF9KSVRfUEVSTUlTU0lPTlMgUFJJVkFURSBPRkYpCiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRf
UE9SVF9WQUxVRShFTkFCTEVfRklMVEVSU19MRVZFTF8yIFBSSVZBVEUgT04pCiBXRUJLSVRfT1BU
SU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfRlRMX0pJVCBQUklWQVRFIE9GRikKIFdFQktJ
VF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9GVFBESVIgUFJJVkFURSBPTikKSW5k
ZXg6IFNvdXJjZS9jbWFrZS9XZWJLaXRGZWF0dXJlcy5jbWFrZQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3Vy
Y2UvY21ha2UvV2ViS2l0RmVhdHVyZXMuY21ha2UJKHJldmlzaW9uIDI2MjkyNikKKysrIFNvdXJj
ZS9jbWFrZS9XZWJLaXRGZWF0dXJlcy5jbWFrZQkod29ya2luZyBjb3B5KQpAQCAtMTM2LDcgKzEz
Niw2IEBAIG1hY3JvKFdFQktJVF9PUFRJT05fQkVHSU4pCiAgICAgV0VCS0lUX09QVElPTl9ERUZJ
TkUoRU5BQkxFX0RSQUdfU1VQUE9SVCAiVG9nZ2xlIHN1cHBvcnQgb2YgZHJhZyBhY3Rpb25zIChp
bmNsdWRpbmcgc2VsZWN0aW9uIG9mIHRleHQgd2l0aCBtb3VzZSkiIFBSSVZBVEUgT0ZGKQogICAg
IFdFQktJVF9PUFRJT05fREVGSU5FKEVOQUJMRV9FTkNSWVBURURfTUVESUEgIlRvZ2dsZSBFTUUg
VjMgc3VwcG9ydCIgUFJJVkFURSBPRkYpCiAgICAgV0VCS0lUX09QVElPTl9ERUZJTkUoRU5BQkxF
X0VYUEVSSU1FTlRBTF9GRUFUVVJFUyAiRW5hYmxlIGV4cGVyaW1lbnRhbCBmZWF0dXJlcyIgUFJJ
VkFURSBPRkYpCi0gICAgV0VCS0lUX09QVElPTl9ERUZJTkUoRU5BQkxFX0ZBU1RfSklUX1BFUk1J
U1NJT05TICJUb2dnbGUgZmFzdCBKSVQgcGVybWlzc2lvbnMgc3VwcG9ydCIgUFJJVkFURSBPRkYp
CiAgICAgV0VCS0lUX09QVElPTl9ERUZJTkUoRU5BQkxFX0ZJTFRFUlNfTEVWRUxfMiAiVG9nZ2xl
IEZpbHRlcnMgTW9kdWxlIExldmVsIDIiIFBSSVZBVEUgT0ZGKQogICAgIFdFQktJVF9PUFRJT05f
REVGSU5FKEVOQUJMRV9GVExfSklUICJUb2dnbGUgRlRMIEpJVCBzdXBwb3J0IiBQUklWQVRFICR7
RU5BQkxFX0ZUTF9ERUZBVUxUfSkKICAgICBXRUJLSVRfT1BUSU9OX0RFRklORShFTkFCTEVfRlRQ
RElSICJUb2dnbGUgRlRQIERpcmVjdG9yeSBzdXBwb3J0IiBQUklWQVRFIE9OKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>402506</attachid>
            <date>2020-06-22 13:37:36 -0700</date>
            <delta_ts>2020-06-22 15:17:05 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>b-backup.diff</filename>
            <type>text/plain</type>
            <size>25243</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQJKHJldmlzaW9uIDI2MzM2MCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAkod29ya2luZyBjb3B5KQpA
QCAtNDY3LDYgKzQ2Nyw3IEBAIHNldChKYXZhU2NyaXB0Q29yZV9QUklWQVRFX0ZSQU1FV09SS19I
RUEKICAgICBhc3NlbWJsZXIvQXNzZW1ibGVyQ29tbW9uLmgKICAgICBhc3NlbWJsZXIvQ1BVLmgK
ICAgICBhc3NlbWJsZXIvQ29kZUxvY2F0aW9uLmgKKyAgICBhc3NlbWJsZXIvRmFzdEpJVFBlcm1p
c3Npb25zLmgKICAgICBhc3NlbWJsZXIvTGlua0J1ZmZlci5oCiAgICAgYXNzZW1ibGVyL01JUFNB
c3NlbWJsZXIuaAogICAgIGFzc2VtYmxlci9NSVBTUmVnaXN0ZXJzLmgKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCj09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCShyZXZpc2lvbiAyNjMzNjApCisrKyBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvSmF2YVNjcmlwdENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagkod29ya2luZyBj
b3B5KQpAQCAtOTAwLDYgKzkwMCw3IEBACiAJCTUyNUM5Q0RGMjIwMjg1ODMwMDgyREJGRCAvKiBX
YXNtQWlySVJHZW5lcmF0b3IuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gNTI4NDdBRDkyMUZGQjg2MzAwNjFBOURCIC8qIFdhc21BaXJJUkdlbmVyYXRv
ci5jcHAgKi87IH07CiAJCTUyNjc4RjhGMUEwMzEwMDkwMDZBMzA2RCAvKiBCYXNpY0Jsb2NrTG9j
YXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUy
Njc4RjhEMUEwMzEwMDkwMDZBMzA2RCAvKiBCYXNpY0Jsb2NrTG9jYXRpb24uaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MjY3OEY5MTFBMDQxNzdD
MDA2QTMwNkQgLyogQ29udHJvbEZsb3dQcm9maWxlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTI2NzhGOTAxQTA0MTc3QzAwNkEzMDZEIC8qIENvbnRy
b2xGbG93UHJvZmlsZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OworCQk1MjY3Q0Y4MjI0OTMxNkIxMDAyMkJGNkQgLyogRmFzdEpJVFBlcm1pc3Npb25z
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA1MjY3Q0Y4
MTI0OTMxNkFEMDAyMkJGNkQgLyogRmFzdEpJVFBlcm1pc3Npb25zLmggKi87IHNldHRpbmdzID0g
e0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTI2QUM0QjcxRTk3N0M1RDAwMzUw
MEUxIC8qIFdhc21Db2RlQmxvY2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDUyNkFDNEI1MUU5NzdDNUQwMDM1MDBFMSAvKiBXYXNtQ29kZUJsb2NrLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNTI3Q0Uz
NTQyMjU1NUZFNTAwQzZGMzgyIC8qIEpTVG9XYXNtSUNDYWxsZWUuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUyN0NFMzUzMjI1NTVGREQwMEM2RjM4MiAv
KiBKU1RvV2FzbUlDQ2FsbGVlLmggKi87IH07CiAJCTUyODQ3QURDMjFGRkI4NjkwMDYxQTlEQiAv
KiBXYXNtQWlySVJHZW5lcmF0b3IuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDUyODQ3QURBMjFGRkI4NjMwMDYxQTlEQiAvKiBXYXNtQWlySVJHZW5lcmF0
b3IuaCAqLzsgfTsKQEAgLTM1NzEsNiArMzU3Miw3IEBACiAJCTUyNjc4RjhDMUEwMzEwMDkwMDZB
MzA2RCAvKiBCYXNpY0Jsb2NrTG9jYXRpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gQmFzaWNCbG9ja0xvY2F0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNTI2NzhGOEQxQTAzMTAwOTAwNkEzMDZEIC8qIEJhc2ljQmxvY2tMb2NhdGlvbi5o
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBCYXNpY0Jsb2NrTG9jYXRpb24uaDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNTI2NzhGOTAxQTA0MTc3QzAwNkEzMDZEIC8q
IENvbnRyb2xGbG93UHJvZmlsZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
Q29udHJvbEZsb3dQcm9maWxlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk1MjY3
Q0Y4MTI0OTMxNkFEMDAyMkJGNkQgLyogRmFzdEpJVFBlcm1pc3Npb25zLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEZhc3RKSVRQZXJtaXNzaW9ucy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1
MjZBQzRCNDFFOTc3QzVEMDAzNTAwRTEgLyogV2FzbUNvZGVCbG9jay5jcHAgKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXYXNtQ29kZUJsb2NrLmNwcDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJNTI2QUM0QjUxRTk3N0M1RDAwMzUwMEUxIC8qIFdhc21Db2RlQmxv
Y2suaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2FzbUNvZGVCbG9jay5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk1MjcyOTg3QjIzNUZDOEJBMDA1Qzk4MkMgLyog
R0NNZW1vcnlPcGVyYXRpb25zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEdDTWVtb3J5T3BlcmF0aW9ucy5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtODE5OSw2ICs4MjAxLDcgQEAKIAkJCQk1
MjMzNTYyODIyNUVCOEU5MDAyNjhCRDIgLyogQ1BVLmNwcCAqLywKIAkJCQkwRjMwRDdCRjFEOTVE
NjJGMDA1MzA4OUQgLyogQ1BVLmggKi8sCiAJCQkJMEYzNzMwOEUxQzBDRDY4NTAwMDUyQkZBIC8q
IERpc2FsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZS5oICovLAorCQkJCTUyNjdDRjgxMjQ5
MzE2QUQwMDIyQkY2RCAvKiBGYXN0SklUUGVybWlzc2lvbnMuaCAqLywKIAkJCQkwRkY0Mjc1NjE1
OTE0QTIwMDA0Q0I5RkYgLyogTGlua0J1ZmZlci5jcHAgKi8sCiAJCQkJODZEM0IzQzExMDE1OUQ3
RjAwMjg2NUU3IC8qIExpbmtCdWZmZXIuaCAqLywKIAkJCQkwRkVCM0VDRTE2MjM3RjY3MDBBQjY3
QUQgLyogTWFjcm9Bc3NlbWJsZXIuY3BwICovLApAQCAtOTE3MSw2ICs5MTc0LDcgQEAKIAkJCQkw
RkI3RjM5ODE1RUQ4RTQ2MDBGMTY3QjIgLyogQnV0dGVyZmx5SW5saW5lcy5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJQzJGQ0FFMTExN0E5QzI0RTAwMzRDNzM1IC8qIEJ5dGVjb2RlQmFzaWNCbG9jay5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJMTQzNTk1MjEyMkE1MjFDRDAwRTgwODZEIC8qIEJ5dGVjb2Rl
Q2FjaGVFcnJvci5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTI2N0NGODIyNDkzMTZCMTAwMjJCRjZE
IC8qIEZhc3RKSVRQZXJtaXNzaW9ucy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyMUMyN0YxNEJF
QUE4MjAwQURDNjRCIC8qIEJ5dGVjb2RlQ29udmVudGlvbnMuaCBpbiBIZWFkZXJzICovLAogCQkJ
CUUzRDg3Nzc0MUU2NUMwQTAwMEJFOTQ1QSAvKiBCeXRlY29kZUR1bXBlci5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJOTY5QTA3MjMwRUQxQ0UzMzAwRjFGNjgxIC8qIEJ5dGVjb2RlR2VuZXJhdG9yLmgg
aW4gSGVhZGVycyAqLywKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQVJN
NjRBc3NlbWJsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1i
bGVyL0FSTTY0QXNzZW1ibGVyLmgJKHJldmlzaW9uIDI2MzM2MCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9hc3NlbWJsZXIvQVJNNjRBc3NlbWJsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMTQ5
MCw3ICsxNDkwLDcgQEAgcHVibGljOgogICAgIHVzaW5nIENvcHlGdW5jdGlvbiA9IHZvaWQqKCYp
KHZvaWQqLCBjb25zdCB2b2lkKiwgc2l6ZV90KTsKIAogICAgIHRlbXBsYXRlIDxDb3B5RnVuY3Rp
b24gY29weT4KLSAgICBzdGF0aWMgdm9pZCBmaWxsTm9wcyh2b2lkKiBiYXNlLCBzaXplX3Qgc2l6
ZSkKKyAgICBBTFdBWVNfSU5MSU5FIHN0YXRpYyB2b2lkIGZpbGxOb3BzKHZvaWQqIGJhc2UsIHNp
emVfdCBzaXplKQogICAgIHsKICAgICAgICAgUkVMRUFTRV9BU1NFUlQoIShzaXplICUgc2l6ZW9m
KGludDMyX3QpKSk7CiAgICAgICAgIHNpemVfdCBuID0gc2l6ZSAvIHNpemVvZihpbnQzMl90KTsK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQVJNdjdBc3NlbWJsZXIuaAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0FSTXY3QXNzZW1i
bGVyLmgJKHJldmlzaW9uIDI2MzM2MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJs
ZXIvQVJNdjdBc3NlbWJsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMTk3Niw3ICsxOTc2LDcgQEAg
cHVibGljOgogICAgIHVzaW5nIENvcHlGdW5jdGlvbiA9IHZvaWQqKCYpKHZvaWQqLCBjb25zdCB2
b2lkKiwgc2l6ZV90KTsKIAogICAgIHRlbXBsYXRlIDxDb3B5RnVuY3Rpb24gY29weT4KLSAgICBz
dGF0aWMgdm9pZCBmaWxsTm9wcyh2b2lkKiBiYXNlLCBzaXplX3Qgc2l6ZSkKKyAgICBBTFdBWVNf
SU5MSU5FIHN0YXRpYyB2b2lkIGZpbGxOb3BzKHZvaWQqIGJhc2UsIHNpemVfdCBzaXplKQogICAg
IHsKICAgICAgICAgUkVMRUFTRV9BU1NFUlQoIShzaXplICUgc2l6ZW9mKGludDE2X3QpKSk7CiAK
SW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvRmFzdEpJVFBlcm1pc3Npb25z
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9GYXN0SklU
UGVybWlzc2lvbnMuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNz
ZW1ibGVyL0Zhc3RKSVRQZXJtaXNzaW9ucy5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTA4
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisg
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdt
YSBvbmNlCisKKyNpZiBPUyhEQVJXSU4pICYmIENQVShBUk02NCkKKworI2lmICgoKFBMQVRGT1JN
KElPUykgfHwgUExBVEZPUk0oTUFDQ0FUQUxZU1QpKSAmJiBfX0lQSE9ORV9PU19WRVJTSU9OX01J
Tl9SRVFVSVJFRCA+PSAxNDAwMDApIFwKKyAgICB8fCAoUExBVEZPUk0oV0FUQ0hPUykgJiYgX19X
QVRDSF9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSA3MDAwMCkgXAorICAgIHx8IChQTEFURk9S
TShBUFBMRVRWKSAmJiBfX1RWX09TX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDE0MDAwMCkgXAor
ICAgIHx8IChQTEFURk9STShNQUMpICYmIF9fTUFDX09TX1hfVkVSU0lPTl9NSU5fUkVRVUlSRUQg
Pj0gMTAxNjAwKSkKKyNkZWZpbmUgSEFWRV9QVEhSRUFEX0pJVF9QRVJNSVNTSU9OU19BUEkgMQor
I2VuZGlmCisKKyNpZiBIQVZFKFBUSFJFQURfSklUX1BFUk1JU1NJT05TX0FQSSkKKyNpbmNsdWRl
IDxwdGhyZWFkLmg+CisjZWxpZiBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQorI2luY2x1ZGUgPG9z
L3RocmVhZF9zZWxmX3Jlc3RyaWN0Lmg+IAorI2VuZGlmCisKK3N0YXRpYyBBTFdBWVNfSU5MSU5F
IGJvb2wgdXNlRmFzdEpJVFBlcm1pc3Npb25zKCkKK3sKKyNpZiBDUFUoQVJNNjRFKQorICAgIHJl
dHVybiB0cnVlOworI2VsaWYgSEFWRShQVEhSRUFEX0pJVF9QRVJNSVNTSU9OU19BUEkpIAorICAg
IHJldHVybiAhIXB0aHJlYWRfaml0X3dyaXRlX3Byb3RlY3Rfc3VwcG9ydGVkX25wKCk7CisjZWxp
ZiBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQorICAgIHJldHVybiAhIW9zX3RocmVhZF9zZWxmX3Jl
c3RyaWN0X3J3eF9pc19zdXBwb3J0ZWQoKTsKKyNlbHNlCisgICAgcmV0dXJuIGZhbHNlOworI2Vu
ZGlmCit9CisKK3N0YXRpYyBBTFdBWVNfSU5MSU5FIHZvaWQgdGhyZWFkU2VsZlJlc3RyaWN0UldY
VG9SVygpCit7CisgICAgQVNTRVJUKHVzZUZhc3RKSVRQZXJtaXNzaW9ucygpKTsKKworI2lmIEhB
VkUoUFRIUkVBRF9KSVRfUEVSTUlTU0lPTlNfQVBJKSAKKyAgICBwdGhyZWFkX2ppdF93cml0ZV9w
cm90ZWN0X25wKGZhbHNlKTsKKyNlbGlmIFVTRShBUFBMRV9JTlRFUk5BTF9TREspCisgICAgb3Nf
dGhyZWFkX3NlbGZfcmVzdHJpY3Rfcnd4X3RvX3J3KCk7CisjZWxzZQorICAgIGJvb2wgdGF1dG9s
b2d5VG9JZ25vcmVXYXJuaW5nID0gdHJ1ZTsKKyAgICBpZiAodGF1dG9sb2d5VG9JZ25vcmVXYXJu
aW5nKQorICAgICAgICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworI2VuZGlmCit9CisK
K3N0YXRpYyBBTFdBWVNfSU5MSU5FIHZvaWQgdGhyZWFkU2VsZlJlc3RyaWN0UldYVG9SWCgpCit7
CisgICAgQVNTRVJUKHVzZUZhc3RKSVRQZXJtaXNzaW9ucygpKTsKKworI2lmIEhBVkUoUFRIUkVB
RF9KSVRfUEVSTUlTU0lPTlNfQVBJKSAKKyAgICBwdGhyZWFkX2ppdF93cml0ZV9wcm90ZWN0X25w
KHRydWUpOworI2VsaWYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykKKyAgICBvc190aHJlYWRfc2Vs
Zl9yZXN0cmljdF9yd3hfdG9fcngoKTsKKyNlbHNlCisgICAgYm9vbCB0YXV0b2xvZ3lUb0lnbm9y
ZVdhcm5pbmcgPSB0cnVlOworICAgIGlmICh0YXV0b2xvZ3lUb0lnbm9yZVdhcm5pbmcpCisgICAg
ICAgIFJFTEVBU0VfQVNTRVJUX05PVF9SRUFDSEVEKCk7CisjZW5kaWYKK30KKworI2Vsc2UgLy8g
Tm90IE9TKERBUldJTikgJiYgQ1BVKEFSTTY0KQorCitjb25zdGV4cHIgYm9vbCBmYXN0SklUUGVy
bWlzc2lvbnNJc1N1cHBvcnRlZCgpCit7CisgICAgcmV0dXJuIGZhbHNlOworfQorCitjb25zdGV4
cHIgYm9vbCB1c2VGYXN0SklUUGVybWlzc2lvbnMoKQoreworICAgIHJldHVybiBmYWxzZTsKK30K
KworTk9fUkVUVVJOX0RVRV9UT19DUkFTSCBzdGF0aWMgdm9pZCB0aHJlYWRTZWxmUmVzdHJpY3RS
V1hUb1JXKCkKK3sKKyAgICBDUkFTSCgpOworfQorCitOT19SRVRVUk5fRFVFX1RPX0NSQVNIIHN0
YXRpYyB2b2lkIHRocmVhZFNlbGZSZXN0cmljdFJXWFRvUlgoKQoreworICAgIENSQVNIKCk7Cit9
CisKKyNlbmRpZiAvLyBPUyhEQVJXSU4pICYmIENQVShBUk02NCkKSW5kZXg6IFNvdXJjZS9KYXZh
U2NyaXB0Q29yZS9hc3NlbWJsZXIvTGlua0J1ZmZlci5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNl
L0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9MaW5rQnVmZmVyLmNwcAkocmV2aXNpb24gMjYzMzYw
KQorKysgU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9MaW5rQnVmZmVyLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtMTE5LDI3ICsxMTksMTMgQEAgTGlua0J1ZmZlcjo6Q29kZVJlZjxMaW5r
QnVmZmVyUHRyVGFnPiBMaQogfQogCiAjaWYgRU5BQkxFKEJSQU5DSF9DT01QQUNUSU9OKQorCiAj
aWYgQ1BVKEFSTTY0RSkKICNkZWZpbmUgRU5BQkxFX1ZFUklGWV9KSVRfSEFTSCAxCiAjZWxzZQog
I2RlZmluZSBFTkFCTEVfVkVSSUZZX0pJVF9IQVNIIDAKICNlbmRpZgogCi0jaWYgRU5BQkxFKEZB
U1RfSklUX1BFUk1JU1NJT05TKSAmJiAhRU5BQkxFKFNFUEFSQVRFRF9XWF9IRUFQKQotIyAgIGRl
ZmluZSBJRl9GQVNUX0pJVF9QRVJNSVNTSU9OUyh0aGVuU3RtdCkgdGhlblN0bXQKLSMgICBkZWZp
bmUgSUZfRkFTVF9KSVRfUEVSTUlTU0lPTlNfRUxTRSh0aGVuU3RtdCwgZWxzZVN0bXQpIHRoZW5T
dG10Ci0jZWxpZiBFTkFCTEUoRkFTVF9KSVRfUEVSTUlTU0lPTlMpCi0jICAgZGVmaW5lIElGX0ZB
U1RfSklUX1BFUk1JU1NJT05TKHRoZW5TdG10KSBpZiAodXNlRmFzdEpJVFBlcm1pc3Npb25zKCkp
IFwKLSAgICAgICAgdGhlblN0bXQKLSMgICBkZWZpbmUgSUZfRkFTVF9KSVRfUEVSTUlTU0lPTlNf
RUxTRSh0aGVuU3RtdCwgZWxzZVN0bXQpIGlmICh1c2VGYXN0SklUUGVybWlzc2lvbnMoKSkgXAot
ICAgICAgICAgICAgdGhlblN0bXQ7IFwKLSAgICAgICAgZWxzZSBcCi0gICAgICAgICAgICBlbHNl
U3RtdAotI2Vsc2UKLSMgICBkZWZpbmUgSUZfRkFTVF9KSVRfUEVSTUlTU0lPTlModGhlblN0bXQp
Ci0jICAgZGVmaW5lIElGX0ZBU1RfSklUX1BFUk1JU1NJT05TX0VMU0UodGhlblN0bXQsIGVsc2VT
dG10KSBlbHNlU3RtdAotI2VuZGlmCi0KIGNsYXNzIEJyYW5jaENvbXBhY3Rpb25MaW5rQnVmZmVy
OwogCiB1c2luZyBUaHJlYWRTcGVjaWZpY0JyYW5jaENvbXBhY3Rpb25MaW5rQnVmZmVyID0gVGhy
ZWFkU3BlY2lmaWM8QnJhbmNoQ29tcGFjdGlvbkxpbmtCdWZmZXIsIFdURjo6Q2FuQmVHQ1RocmVh
ZDo6VHJ1ZT47CkBAIC0yMzcsNiArMjIzLDExIEBAIHN0YXRpYyBBTFdBWVNfSU5MSU5FIHZvaWQg
cmVjb3JkTGlua09mZnMKICAgICAgICAgb2Zmc2V0c1twdHIrK10gPSBvZmZzZXQ7CiB9CiAKK0FM
V0FZU19JTkxJTkUgdm9pZCogbWVtY3B5V3JhcHBlcih2b2lkKiBkc3QsIGNvbnN0IHZvaWQqIHNy
Yywgc2l6ZV90IGJ5dGVzKQoreworICAgIHJldHVybiBtZW1jcHkoZHN0LCBzcmMsIGJ5dGVzKTsK
K30KKwogdGVtcGxhdGUgPHR5cGVuYW1lIEluc3RydWN0aW9uVHlwZT4KIHZvaWQgTGlua0J1ZmZl
cjo6Y29weUNvbXBhY3RBbmRMaW5rQ29kZShNYWNyb0Fzc2VtYmxlciYgbWFjcm9Bc3NlbWJsZXIs
IEpJVENvbXBpbGF0aW9uRWZmb3J0IGVmZm9ydCkKIHsKQEAgLTI2OCw3ICsyNTksOCBAQCB2b2lk
IExpbmtCdWZmZXI6OmNvcHlDb21wYWN0QW5kTGlua0NvZGUoCiAgICAgaW50IHdyaXRlUHRyID0g
MDsKICAgICB1bnNpZ25lZCBqdW1wQ291bnQgPSBqdW1wc1RvTGluay5zaXplKCk7CiAKLSAgICBJ
Rl9GQVNUX0pJVF9QRVJNSVNTSU9OUyhvc190aHJlYWRfc2VsZl9yZXN0cmljdF9yd3hfdG9fcnco
KSk7CisgICAgaWYgKHVzZUZhc3RKSVRQZXJtaXNzaW9ucygpKQorICAgICAgICB0aHJlYWRTZWxm
UmVzdHJpY3RSV1hUb1JXKCk7CiAKICAgICBpZiAobV9zaG91bGRQZXJmb3JtQnJhbmNoQ29tcGFj
dGlvbikgewogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwganVtcENvdW50OyArK2kp
IHsKQEAgLTM1NiwxOCArMzQ4LDI0IEBAIHZvaWQgTGlua0J1ZmZlcjo6Y29weUNvbXBhY3RBbmRM
aW5rQ29kZSgKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwganVtcENvdW50OyArK2kpIHsK
ICAgICAgICAgdWludDhfdCogbG9jYXRpb24gPSBjb2RlT3V0RGF0YSArIGp1bXBzVG9MaW5rW2ld
LmZyb20oKTsKICAgICAgICAgdWludDhfdCogdGFyZ2V0ID0gY29kZU91dERhdGEgKyBqdW1wc1Rv
TGlua1tpXS50bygpIC0gZXhlY3V0YWJsZU9mZnNldEZvcihqdW1wc1RvTGlua1tpXS50bygpKTsK
LSAgICAgICAgSUZfRkFTVF9KSVRfUEVSTUlTU0lPTlNfRUxTRShNYWNyb0Fzc2VtYmxlcjo6bGlu
azxtZW1jcHk+KGp1bXBzVG9MaW5rW2ldLCBvdXREYXRhICsganVtcHNUb0xpbmtbaV0uZnJvbSgp
LCBsb2NhdGlvbiwgdGFyZ2V0KSwgXAotICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Omxpbms8
cGVyZm9ybUpJVE1lbWNweT4oanVtcHNUb0xpbmtbaV0sIG91dERhdGEgKyBqdW1wc1RvTGlua1tp
XS5mcm9tKCksIGxvY2F0aW9uLCB0YXJnZXQpKTsKKyAgICAgICAgaWYgKHVzZUZhc3RKSVRQZXJt
aXNzaW9ucygpKQorICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Omxpbms8bWVtY3B5V3JhcHBl
cj4oanVtcHNUb0xpbmtbaV0sIG91dERhdGEgKyBqdW1wc1RvTGlua1tpXS5mcm9tKCksIGxvY2F0
aW9uLCB0YXJnZXQpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBNYWNyb0Fzc2VtYmxlcjo6
bGluazxwZXJmb3JtSklUTWVtY3B5PihqdW1wc1RvTGlua1tpXSwgb3V0RGF0YSArIGp1bXBzVG9M
aW5rW2ldLmZyb20oKSwgbG9jYXRpb24sIHRhcmdldCk7CiAgICAgfQogCiAgICAgc2l6ZV90IGNv
bXBhY3RTaXplID0gd3JpdGVQdHIgKyBpbml0aWFsU2l6ZSAtIHJlYWRQdHI7CiAgICAgaWYgKCFt
X2V4ZWN1dGFibGVNZW1vcnkpIHsKICAgICAgICAgc2l6ZV90IG5vcFNpemVJbkJ5dGVzID0gaW5p
dGlhbFNpemUgLSBjb21wYWN0U2l6ZTsKLSAgICAgICAgSUZfRkFTVF9KSVRfUEVSTUlTU0lPTlNf
RUxTRShBc3NlbWJsZXI6OmZpbGxOb3BzPG1lbWNweT4ob3V0RGF0YSArIGNvbXBhY3RTaXplLCBu
b3BTaXplSW5CeXRlcyksIFwKLSAgICAgICAgICAgIEFzc2VtYmxlcjo6ZmlsbE5vcHM8cGVyZm9y
bUpJVE1lbWNweT4ob3V0RGF0YSArIGNvbXBhY3RTaXplLCBub3BTaXplSW5CeXRlcykpOworCisg
ICAgICAgIGlmICh1c2VGYXN0SklUUGVybWlzc2lvbnMoKSkKKyAgICAgICAgICAgIEFzc2VtYmxl
cjo6ZmlsbE5vcHM8bWVtY3B5V3JhcHBlcj4ob3V0RGF0YSArIGNvbXBhY3RTaXplLCBub3BTaXpl
SW5CeXRlcyk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIEFzc2VtYmxlcjo6ZmlsbE5vcHM8
cGVyZm9ybUpJVE1lbWNweT4ob3V0RGF0YSArIGNvbXBhY3RTaXplLCBub3BTaXplSW5CeXRlcyk7
CiAgICAgfQogCi0gICAgSUZfRkFTVF9KSVRfUEVSTUlTU0lPTlMob3NfdGhyZWFkX3NlbGZfcmVz
dHJpY3Rfcnd4X3RvX3J4KCkpOworICAgIGlmICh1c2VGYXN0SklUUGVybWlzc2lvbnMoKSkKKyAg
ICAgICAgdGhyZWFkU2VsZlJlc3RyaWN0UldYVG9SWCgpOwogCiAgICAgaWYgKG1fZXhlY3V0YWJs
ZU1lbW9yeSkgewogICAgICAgICBtX3NpemUgPSBjb21wYWN0U2l6ZTsKSW5kZXg6IFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTUlQU0Fzc2VtYmxlci5oCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTUlQU0Fzc2VtYmxlci5oCShyZXZpc2lvbiAy
NjMzNjApCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01JUFNBc3NlbWJsZXIu
aAkod29ya2luZyBjb3B5KQpAQCAtMTY1LDcgKzE2NSw3IEBAIHB1YmxpYzoKICAgICB1c2luZyBD
b3B5RnVuY3Rpb24gPSB2b2lkKigmKSh2b2lkKiwgY29uc3Qgdm9pZCosIHNpemVfdCk7CiAKICAg
ICB0ZW1wbGF0ZSA8Q29weUZ1bmN0aW9uIGNvcHk+Ci0gICAgc3RhdGljIHZvaWQgZmlsbE5vcHMo
dm9pZCogYmFzZSwgc2l6ZV90IHNpemUpCisgICAgQUxXQVlTX0lOTElORSBzdGF0aWMgdm9pZCBm
aWxsTm9wcyh2b2lkKiBiYXNlLCBzaXplX3Qgc2l6ZSkKICAgICB7CiAgICAgICAgIFVOVVNFRF9Q
QVJBTShjb3B5KTsKICAgICAgICAgUkVMRUFTRV9BU1NFUlQoIShzaXplICUgc2l6ZW9mKGludDMy
X3QpKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01hY3JvQXNzZW1i
bGVyQVJNNjQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVy
L01hY3JvQXNzZW1ibGVyQVJNNjQuaAkocmV2aXNpb24gMjYzMzYwKQorKysgU291cmNlL0phdmFT
Y3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0LmgJKHdvcmtpbmcgY29weSkK
QEAgLTg2LDggKzg2LDkgQEAgcHVibGljOgogICAgIHN0YXRpYyBKdW1wTGlua1R5cGUgY29tcHV0
ZUp1bXBUeXBlKEp1bXBUeXBlIGp1bXBUeXBlLCBjb25zdCB1aW50OF90KiBmcm9tLCBjb25zdCB1
aW50OF90KiB0bykgeyByZXR1cm4gQXNzZW1ibGVyOjpjb21wdXRlSnVtcFR5cGUoanVtcFR5cGUs
IGZyb20sIHRvKTsgfQogICAgIHN0YXRpYyBKdW1wTGlua1R5cGUgY29tcHV0ZUp1bXBUeXBlKExp
bmtSZWNvcmQmIHJlY29yZCwgY29uc3QgdWludDhfdCogZnJvbSwgY29uc3QgdWludDhfdCogdG8p
IHsgcmV0dXJuIEFzc2VtYmxlcjo6Y29tcHV0ZUp1bXBUeXBlKHJlY29yZCwgZnJvbSwgdG8pOyB9
CiAgICAgc3RhdGljIGludCBqdW1wU2l6ZURlbHRhKEp1bXBUeXBlIGp1bXBUeXBlLCBKdW1wTGlu
a1R5cGUganVtcExpbmtUeXBlKSB7IHJldHVybiBBc3NlbWJsZXI6Omp1bXBTaXplRGVsdGEoanVt
cFR5cGUsIGp1bXBMaW5rVHlwZSk7IH0KKwogICAgIHRlbXBsYXRlIDxBc3NlbWJsZXI6OkNvcHlG
dW5jdGlvbiBjb3B5PgotICAgIHN0YXRpYyB2b2lkIGxpbmsoTGlua1JlY29yZCYgcmVjb3JkLCB1
aW50OF90KiBmcm9tLCBjb25zdCB1aW50OF90KiBmcm9tSW5zdHJ1Y3Rpb24sIHVpbnQ4X3QqIHRv
KSB7IHJldHVybiBBc3NlbWJsZXI6Omxpbms8Y29weT4ocmVjb3JkLCBmcm9tLCBmcm9tSW5zdHJ1
Y3Rpb24sIHRvKTsgfQorICAgIEFMV0FZU19JTkxJTkUgc3RhdGljIHZvaWQgbGluayhMaW5rUmVj
b3JkJiByZWNvcmQsIHVpbnQ4X3QqIGZyb20sIGNvbnN0IHVpbnQ4X3QqIGZyb21JbnN0cnVjdGlv
biwgdWludDhfdCogdG8pIHsgcmV0dXJuIEFzc2VtYmxlcjo6bGluazxjb3B5PihyZWNvcmQsIGZy
b20sIGZyb21JbnN0cnVjdGlvbiwgdG8pOyB9CiAKICAgICBzdGF0aWMgYm9vbCBpc0NvbXBhY3RQ
dHJBbGlnbmVkQWRkcmVzc09mZnNldChwdHJkaWZmX3QgdmFsdWUpCiAgICAgewpJbmRleDogU291
cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTXY3LmgKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFS
TXY3LmgJKHJldmlzaW9uIDI2MzM2MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJs
ZXIvTWFjcm9Bc3NlbWJsZXJBUk12Ny5oCSh3b3JraW5nIGNvcHkpCkBAIC03MSw4ICs3MSw5IEBA
IHB1YmxpYzoKICAgICBzdGF0aWMgSnVtcExpbmtUeXBlIGNvbXB1dGVKdW1wVHlwZShKdW1wVHlw
ZSBqdW1wVHlwZSwgY29uc3QgdWludDhfdCogZnJvbSwgY29uc3QgdWludDhfdCogdG8pIHsgcmV0
dXJuIEFSTXY3QXNzZW1ibGVyOjpjb21wdXRlSnVtcFR5cGUoanVtcFR5cGUsIGZyb20sIHRvKTsg
fQogICAgIHN0YXRpYyBKdW1wTGlua1R5cGUgY29tcHV0ZUp1bXBUeXBlKExpbmtSZWNvcmQmIHJl
Y29yZCwgY29uc3QgdWludDhfdCogZnJvbSwgY29uc3QgdWludDhfdCogdG8pIHsgcmV0dXJuIEFS
TXY3QXNzZW1ibGVyOjpjb21wdXRlSnVtcFR5cGUocmVjb3JkLCBmcm9tLCB0byk7IH0KICAgICBz
dGF0aWMgaW50IGp1bXBTaXplRGVsdGEoSnVtcFR5cGUganVtcFR5cGUsIEp1bXBMaW5rVHlwZSBq
dW1wTGlua1R5cGUpIHsgcmV0dXJuIEFSTXY3QXNzZW1ibGVyOjpqdW1wU2l6ZURlbHRhKGp1bXBU
eXBlLCBqdW1wTGlua1R5cGUpOyB9CisKICAgICB0ZW1wbGF0ZSA8QXNzZW1ibGVyOjpDb3B5RnVu
Y3Rpb24gY29weT4KLSAgICBzdGF0aWMgdm9pZCBsaW5rKExpbmtSZWNvcmQmIHJlY29yZCwgdWlu
dDhfdCogZnJvbSwgY29uc3QgdWludDhfdCogZnJvbUluc3RydWN0aW9uLCB1aW50OF90KiB0bykg
eyByZXR1cm4gQVJNdjdBc3NlbWJsZXI6Omxpbms8Y29weT4ocmVjb3JkLCBmcm9tLCBmcm9tSW5z
dHJ1Y3Rpb24sIHRvKTsgfQorICAgIEFMV0FZU19JTkxJTkUgc3RhdGljIHZvaWQgbGluayhMaW5r
UmVjb3JkJiByZWNvcmQsIHVpbnQ4X3QqIGZyb20sIGNvbnN0IHVpbnQ4X3QqIGZyb21JbnN0cnVj
dGlvbiwgdWludDhfdCogdG8pIHsgcmV0dXJuIEFSTXY3QXNzZW1ibGVyOjpsaW5rPGNvcHk+KHJl
Y29yZCwgZnJvbSwgZnJvbUluc3RydWN0aW9uLCB0byk7IH0KIAogICAgIHN0cnVjdCBBcm1BZGRy
ZXNzIHsKICAgICAgICAgZW51bSBBZGRyZXNzVHlwZSB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvaml0L0V4ZWN1dGFibGVBbGxvY2F0b3IuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9qaXQvRXhlY3V0YWJsZUFsbG9jYXRvci5jcHAJKHJldmlzaW9uIDI2MzM2
MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvRXhlY3V0YWJsZUFsbG9jYXRvci5jcHAJ
KHdvcmtpbmcgY29weSkKQEAgLTMzNCwyNyArMzM0LDIxIEBAIHN0YXRpYyBBTFdBWVNfSU5MSU5F
IEpJVFJlc2VydmF0aW9uIGluaXQKICAgICAgICAgQVNTRVJUKHJlc2VydmF0aW9uLnBhZ2VSZXNl
cnZhdGlvbi5zaXplKCkgPT0gcmVzZXJ2YXRpb24uc2l6ZSk7CiAgICAgICAgIHJlc2VydmF0aW9u
LmJhc2UgPSByZXNlcnZhdGlvbi5wYWdlUmVzZXJ2YXRpb24uYmFzZSgpOwogCi0jaWYgRU5BQkxF
KEZBU1RfSklUX1BFUk1JU1NJT05TKSAmJiAhRU5BQkxFKFNFUEFSQVRFRF9XWF9IRUFQKQotICAg
ICAgICBSRUxFQVNFX0FTU0VSVChvc190aHJlYWRfc2VsZl9yZXN0cmljdF9yd3hfaXNfc3VwcG9y
dGVkKCkpOwotICAgICAgICBvc190aHJlYWRfc2VsZl9yZXN0cmljdF9yd3hfdG9fcngoKTsKLQot
I2Vsc2UgLy8gbm90IEVOQUJMRShGQVNUX0pJVF9QRVJNSVNTSU9OUykgb3IgRU5BQkxFKFNFUEFS
QVRFRF9XWF9IRUFQKQotI2lmIEVOQUJMRShGQVNUX0pJVF9QRVJNSVNTSU9OUykKLSAgICAgICAg
aWYgKG9zX3RocmVhZF9zZWxmX3Jlc3RyaWN0X3J3eF9pc19zdXBwb3J0ZWQoKSkgewotICAgICAg
ICAgICAgZ19qc2NDb25maWcudXNlRmFzdFBlcm1pc2lvbnNKSVRDb3B5ID0gdHJ1ZTsKLSAgICAg
ICAgICAgIG9zX3RocmVhZF9zZWxmX3Jlc3RyaWN0X3J3eF90b19yeCgpOwotICAgICAgICB9IGVs
c2UKLSNlbmRpZgotICAgICAgICBpZiAoT3B0aW9uczo6dXNlU2VwYXJhdGVkV1hIZWFwKCkpIHsK
KyAgICAgICAgYm9vbCBmYXN0SklUUGVybWlzc2lvbnNJc1N1cHBvcnRlZCA9IHVzZUZhc3RKSVRQ
ZXJtaXNzaW9ucygpOworICAgICAgICBpZiAoZmFzdEpJVFBlcm1pc3Npb25zSXNTdXBwb3J0ZWQp
CisgICAgICAgICAgICB0aHJlYWRTZWxmUmVzdHJpY3RSV1hUb1JYKCk7CisKKyNpZiBFTkFCTEUo
U0VQQVJBVEVEX1dYX0hFQVApCisgICAgICAgIGlmICghZmFzdEpJVFBlcm1pc3Npb25zSXNTdXBw
b3J0ZWQpIHsKICAgICAgICAgICAgIC8vIEZpcnN0IHBhZ2Ugb2Ygb3VyIEpJVCBhbGxvY2F0aW9u
IGlzIHJlc2VydmVkLgogICAgICAgICAgICAgQVNTRVJUKHJlc2VydmF0aW9uLnNpemUgPj0gcGFn
ZVNpemUoKSAqIDIpOwogICAgICAgICAgICAgcmVzZXJ2YXRpb24uYmFzZSA9ICh2b2lkKikoKHVp
bnRwdHJfdCkocmVzZXJ2YXRpb24uYmFzZSkgKyBwYWdlU2l6ZSgpKTsKICAgICAgICAgICAgIHJl
c2VydmF0aW9uLnNpemUgLT0gcGFnZVNpemUoKTsKICAgICAgICAgICAgIGluaXRpYWxpemVTZXBh
cmF0ZWRXWEhlYXBzKHJlc2VydmF0aW9uLnBhZ2VSZXNlcnZhdGlvbi5iYXNlKCksIHBhZ2VTaXpl
KCksIHJlc2VydmF0aW9uLmJhc2UsIHJlc2VydmF0aW9uLnNpemUpOwogICAgICAgICB9Ci0jZW5k
aWYgLy8gbm90IEVOQUJMRShGQVNUX0pJVF9QRVJNSVNTSU9OUykgb3IgRU5BQkxFKFNFUEFSQVRF
RF9XWF9IRUFQKQotICAgICAgICB2b2lkKiByZXNlcnZhdGlvbkVuZCA9IHJlaW50ZXJwcmV0X2Nh
c3Q8dWludDhfdCo+KHJlc2VydmF0aW9uLmJhc2UpICsgcmVzZXJ2YXRpb24uc2l6ZTsKKyNlbmRp
ZgogCisgICAgICAgIHZvaWQqIHJlc2VydmF0aW9uRW5kID0gcmVpbnRlcnByZXRfY2FzdDx1aW50
OF90Kj4ocmVzZXJ2YXRpb24uYmFzZSkgKyByZXNlcnZhdGlvbi5zaXplOwogICAgICAgICBnX2pz
Y0NvbmZpZy5zdGFydEV4ZWN1dGFibGVNZW1vcnkgPSB0YWdDb2RlUHRyPEV4ZWN1dGFibGVNZW1v
cnlQdHJUYWc+KHJlc2VydmF0aW9uLmJhc2UpOwogICAgICAgICBnX2pzY0NvbmZpZy5lbmRFeGVj
dXRhYmxlTWVtb3J5ID0gdGFnQ29kZVB0cjxFeGVjdXRhYmxlTWVtb3J5UHRyVGFnPihyZXNlcnZh
dGlvbkVuZCk7CiAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9FeGVjdXRh
YmxlQWxsb2NhdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2ppdC9F
eGVjdXRhYmxlQWxsb2NhdG9yLmgJKHJldmlzaW9uIDI2MzM2MCkKKysrIFNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9qaXQvRXhlY3V0YWJsZUFsbG9jYXRvci5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNSw2
ICsyNSw3IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiRmFzdEpJVFBlcm1pc3Npb25z
LmgiCiAjaW5jbHVkZSAiSklUQ29tcGlsYXRpb25FZmZvcnQuaCIKICNpbmNsdWRlICJKU0NDb25m
aWcuaCIKICNpbmNsdWRlICJKU0NQdHJUYWcuaCIKQEAgLTQ2LDkgKzQ3LDYgQEAKICNpbmNsdWRl
IDxzeXMvY2FjaGVjdGwuaD4KICNlbmRpZgogCi0jaWYgRU5BQkxFKEZBU1RfSklUX1BFUk1JU1NJ
T05TKQotI2luY2x1ZGUgPG9zL3RocmVhZF9zZWxmX3Jlc3RyaWN0Lmg+IAotI2VuZGlmCiAjZGVm
aW5lIEpJVF9BTExPQ0FUT1JfTEFSR0VfQUxMT0NfU0laRSAocGFnZVNpemUoKSAqIDQpCiAKICNk
ZWZpbmUgRVhFQ1VUQUJMRV9QT09MX1dSSVRBQkxFIHRydWUKQEAgLTExMywxNyArMTExLDYgQEAg
SlNfRVhQT1JUX1BSSVZBVEUgYm9vbCBpc0pJVFBDKHZvaWQqIHBjKQogCiBKU19FWFBPUlRfUFJJ
VkFURSB2b2lkIGR1bXBKSVRNZW1vcnkoY29uc3Qgdm9pZCosIGNvbnN0IHZvaWQqLCBzaXplX3Qp
OwogCi1zdGF0aWMgQUxXQVlTX0lOTElORSBib29sIHVzZUZhc3RKSVRQZXJtaXNzaW9ucygpCi17
Ci0jaWYgRU5BQkxFKEZBU1RfSklUX1BFUk1JU1NJT05TKSAmJiAhRU5BQkxFKFNFUEFSQVRFRF9X
WF9IRUFQKQotICAgIHJldHVybiB0cnVlOwotI2VsaWYgRU5BQkxFKEZBU1RfSklUX1BFUk1JU1NJ
T05TKQotICAgIHJldHVybiBnX2pzY0NvbmZpZy51c2VGYXN0UGVybWlzaW9uc0pJVENvcHk7Ci0j
ZWxzZQotICAgIHJldHVybiBmYWxzZTsKLSNlbmRpZgotfQotCiBzdGF0aWMgQUxXQVlTX0lOTElO
RSB2b2lkKiBwZXJmb3JtSklUTWVtY3B5KHZvaWQgKmRzdCwgY29uc3Qgdm9pZCAqc3JjLCBzaXpl
X3QgbikKIHsKICNpZiBDUFUoQVJNNjQpCkBAIC0xMzIsMjAgKzExOSwxOCBAQCBzdGF0aWMgQUxX
QVlTX0lOTElORSB2b2lkKiBwZXJmb3JtSklUTWVtCiAgICAgUkVMRUFTRV9BU1NFUlQocm91bmRV
cFRvTXVsdGlwbGVPZjxpbnN0cnVjdGlvblNpemU+KHNyYykgPT0gc3JjKTsKICNlbmRpZgogICAg
IGlmIChpc0pJVFBDKGRzdCkpIHsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoIUdpZ2FjYWdlOjpj
b250YWlucyhzcmMpKTsKICAgICAgICAgUkVMRUFTRV9BU1NFUlQocmVpbnRlcnByZXRfY2FzdDx1
aW50OF90Kj4oZHN0KSArIG4gPD0gZW5kT2ZGaXhlZEV4ZWN1dGFibGVNZW1vcnlQb29sKCkpOwog
CiAgICAgICAgIGlmIChVTkxJS0VMWShPcHRpb25zOjpkdW1wSklUTWVtb3J5UGF0aCgpKSkKICAg
ICAgICAgICAgIGR1bXBKSVRNZW1vcnkoZHN0LCBzcmMsIG4pOwotI2lmIEVOQUJMRShGQVNUX0pJ
VF9QRVJNSVNTSU9OUykKLSAgICAgICAgaWYgKHVzZUZhc3RKSVRQZXJtaXNzaW9ucygpKQotICAg
ICAgICB7Ci0gICAgICAgICAgICBvc190aHJlYWRfc2VsZl9yZXN0cmljdF9yd3hfdG9fcncoKTsK
KworICAgICAgICBpZiAodXNlRmFzdEpJVFBlcm1pc3Npb25zKCkpIHsKKyAgICAgICAgICAgIHRo
cmVhZFNlbGZSZXN0cmljdFJXWFRvUlcoKTsKICAgICAgICAgICAgIG1lbWNweShkc3QsIHNyYywg
bik7Ci0gICAgICAgICAgICBSRUxFQVNFX0FTU0VSVCghR2lnYWNhZ2U6OmNvbnRhaW5zKHNyYykp
OwotICAgICAgICAgICAgb3NfdGhyZWFkX3NlbGZfcmVzdHJpY3Rfcnd4X3RvX3J4KCk7CisgICAg
ICAgICAgICB0aHJlYWRTZWxmUmVzdHJpY3RSV1hUb1JYKCk7CiAgICAgICAgICAgICByZXR1cm4g
ZHN0OwogICAgICAgICB9Ci0jZW5kaWYgLy8gRU5BQkxFKEZBU1RfSklUX1BFUk1JU1NJT05TKQog
CiAjaWYgRU5BQkxFKFNFUEFSQVRFRF9XWF9IRUFQKQogICAgICAgICBpZiAoZ19qc2NDb25maWcu
aml0V3JpdGVTZXBhcmF0ZUhlYXBzKSB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0NDb25maWcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVu
dGltZS9KU0NDb25maWcuaAkocmV2aXNpb24gMjYzMzYwKQorKysgU291cmNlL0phdmFTY3JpcHRD
b3JlL3J1bnRpbWUvSlNDQ29uZmlnLmgJKHdvcmtpbmcgY29weSkKQEAgLTc5LDcgKzc5LDYgQEAg
c3RydWN0IENvbmZpZyB7CiAKICNpZiBFTkFCTEUoU0VQQVJBVEVEX1dYX0hFQVApCiAgICAgSklU
V3JpdGVTZXBhcmF0ZUhlYXBzRnVuY3Rpb24gaml0V3JpdGVTZXBhcmF0ZUhlYXBzOwotICAgIGJv
b2wgdXNlRmFzdFBlcm1pc2lvbnNKSVRDb3B5OwogI2VuZGlmCiAKICAgICBPcHRpb25zU3RvcmFn
ZSBvcHRpb25zOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5j
cHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUvT3B0aW9ucy5j
cHAJKHJldmlzaW9uIDI2MzM2MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09w
dGlvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NzUsMTQgKzQ3NSw2IEBAIHZvaWQgT3B0aW9u
czo6cmVjb21wdXRlRGVwZW5kZW50T3B0aW9ucygKICAgICAgICAgT3B0aW9uczo6bWF4aW11bUV2
YWxDYWNoZWFibGVTb3VyY2VMZW5ndGgoKSA9IDE1MDAwMDsKICAgICAgICAgT3B0aW9uczo6dXNl
Q29uY3VycmVudEpJVCgpID0gZmFsc2U7CiAgICAgfQotI2lmIEVOQUJMRShTRVBBUkFURURfV1hf
SEVBUCkKLSAgICAvLyBPdmVycmlkZSBnbG9iYWxseSBmb3Igbm93LiBMb25nZXIgdGVybSB3ZSds
bCBqdXN0IG1ha2UgdGhlIGRlZmF1bHQKLSAgICAvLyBiZSB0byBoYXZlIHRoaXMgb3B0aW9uIGVu
YWJsZWQsIGFuZCBoYXZlIHBsYXRmb3JtcyB0aGF0IGRvbid0IHN1cHBvcnQKLSAgICAvLyBpdCBq
dXN0IHNpbGVudGx5IHVzZSBhIHNpbmdsZSBtYXBwaW5nLgotICAgIE9wdGlvbnM6OnVzZVNlcGFy
YXRlZFdYSGVhcCgpID0gdHJ1ZTsKLSNlbHNlCi0gICAgT3B0aW9uczo6dXNlU2VwYXJhdGVkV1hI
ZWFwKCkgPSBmYWxzZTsKLSNlbmRpZgogCiAgICAgaWYgKE9wdGlvbnM6OmFsd2F5c1VzZVNoYWRv
d0NoaWNrZW4oKSkKICAgICAgICAgT3B0aW9uczo6bWF4aW11bUlubGluaW5nRGVwdGgoKSA9IDE7
CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zTGlzdC5oCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnNMaXN0LmgJKHJl
dmlzaW9uIDI2MzM2MCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnNM
aXN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTk2LDcgKzk2LDYgQEAgY29uc3RleHByIGJvb2wgZW5h
YmxlV2ViQXNzZW1ibHlTdHJlYW1pbgogICAgIFwKICAgICB2KEJvb2wsIGNyYXNoSWZDYW50QWxs
b2NhdGVKSVRNZW1vcnksIGZhbHNlLCBOb3JtYWwsIG51bGxwdHIpIFwKICAgICB2KFVuc2lnbmVk
LCBqaXRNZW1vcnlSZXNlcnZhdGlvblNpemUsIDAsIE5vcm1hbCwgIlNldCB0aGlzIG51bWJlciB0
byBjaGFuZ2UgdGhlIGV4ZWN1dGFibGUgYWxsb2NhdGlvbiBzaXplIGluIEV4ZWN1dGFibGVBbGxv
Y2F0b3JGaXhlZFZNUG9vbC4gKEluIGJ5dGVzLikiKSBcCi0gICAgdihCb29sLCB1c2VTZXBhcmF0
ZWRXWEhlYXAsIGZhbHNlLCBOb3JtYWwsIG51bGxwdHIpIFwKICAgICBcCiAgICAgdihCb29sLCBm
b3JjZUNvZGVCbG9ja0xpdmVuZXNzLCBmYWxzZSwgTm9ybWFsLCBudWxscHRyKSBcCiAgICAgdihC
b29sLCBmb3JjZUlDRmFpbHVyZSwgZmFsc2UsIE5vcm1hbCwgbnVsbHB0cikgXApJbmRleDogU291
cmNlL1dURi93dGYvUGxhdGZvcm1FbmFibGUuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0
Zi9QbGF0Zm9ybUVuYWJsZS5oCShyZXZpc2lvbiAyNjMzNjApCisrKyBTb3VyY2UvV1RGL3d0Zi9Q
bGF0Zm9ybUVuYWJsZS5oCSh3b3JraW5nIGNvcHkpCkBAIC0yNTcsMTAgKzI1Nyw2IEBACiAjZGVm
aW5lIEVOQUJMRV9FTkNSWVBURURfTUVESUEgMAogI2VuZGlmCiAKLSNpZiAhZGVmaW5lZChFTkFC
TEVfRkFTVF9KSVRfUEVSTUlTU0lPTlMpCi0jZGVmaW5lIEVOQUJMRV9GQVNUX0pJVF9QRVJNSVNT
SU9OUyAwCi0jZW5kaWYKLQogI2lmICFkZWZpbmVkKEVOQUJMRV9GSUxURVJTX0xFVkVMXzIpCiAj
ZGVmaW5lIEVOQUJMRV9GSUxURVJTX0xFVkVMXzIgMAogI2VuZGlmCkluZGV4OiBTb3VyY2UvV1RG
L3d0Zi9QbGF0Zm9ybUVuYWJsZUNvY29hLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi93dGYv
UGxhdGZvcm1FbmFibGVDb2NvYS5oCShyZXZpc2lvbiAyNjMzNjApCisrKyBTb3VyY2UvV1RGL3d0
Zi9QbGF0Zm9ybUVuYWJsZUNvY29hLmgJKHdvcmtpbmcgY29weSkKQEAgLTE1OSwxMSArMTU5LDYg
QEAKICNkZWZpbmUgRU5BQkxFX0RSQUdfU1VQUE9SVCAwCiAjZW5kaWYKIAotLyogRklYTUU6IFRo
aXMgc2hvdWxkIHByb2JhYmx5IGJlIEhBVkVfRkFTVF9KSVRfUEVSTUlTU0lPTlMgYW5kIG1heSBi
ZSBlbnRpcmVseSB1bm5lY2Vzc2FyeSBkdWUgdG8gcnVudGltZSBjaGVja2luZyBzdXBwb3J0IHZp
YSBvc190aHJlYWRfc2VsZl9yZXN0cmljdF9yd3hfaXNfc3VwcG9ydGVkKCkuICovCi0jaWYgIWRl
ZmluZWQoRU5BQkxFX0ZBU1RfSklUX1BFUk1JU1NJT05TKSAmJiBDUFUoQVJNNjQpICYmICEoT1Mo
VFZPUykgfHwgT1MoV0FUQ0hPUykpICYmIFVTRShBUFBMRV9JTlRFUk5BTF9TREspCi0jZGVmaW5l
IEVOQUJMRV9GQVNUX0pJVF9QRVJNSVNTSU9OUyAxCi0jZW5kaWYKLQogI2lmICFkZWZpbmVkKEVO
QUJMRV9GSUxFX1JFUExBQ0VNRU5UKQogI2RlZmluZSBFTkFCTEVfRklMRV9SRVBMQUNFTUVOVCAx
CiAjZW5kaWYKQEAgLTM2NCw3ICszNTksNyBAQAogI2RlZmluZSBFTkFCTEVfU0VDX0lURU1fU0hJ
TSAxCiAjZW5kaWYKIAotI2lmICFkZWZpbmVkKEVOQUJMRV9TRVBBUkFURURfV1hfSEVBUCkgJiYg
UExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgQ1BVKEFSTTY0KSAmJiAoIUVOQUJMRShGQVNUX0pJVF9Q
RVJNSVNTSU9OUykgfHwgIUNQVShBUk02NEUpKQorI2lmICFkZWZpbmVkKEVOQUJMRV9TRVBBUkFU
RURfV1hfSEVBUCkgJiYgUExBVEZPUk0oSU9TX0ZBTUlMWSkgJiYgQ1BVKEFSTTY0KSAmJiAhQ1BV
KEFSTTY0RSkKICNkZWZpbmUgRU5BQkxFX1NFUEFSQVRFRF9XWF9IRUFQIDEKICNlbmRpZgogCklu
ZGV4OiBTb3VyY2UvY21ha2UvT3B0aW9uc0ZUVy5jbWFrZQo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2Uv
Y21ha2UvT3B0aW9uc0ZUVy5jbWFrZQkocmV2aXNpb24gMjYzMzYwKQorKysgU291cmNlL2NtYWtl
L09wdGlvbnNGVFcuY21ha2UJKHdvcmtpbmcgY29weSkKQEAgLTc2LDcgKzc2LDYgQEAgV0VCS0lU
X09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFXwogV0VCS0lUX09QVElPTl9ERUZBVUxU
X1BPUlRfVkFMVUUoRU5BQkxFX0NTU19TRUxFQ1RPUlNfTEVWRUw0IFBSSVZBVEUgT04pCiBXRUJL
SVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfQ1VSU09SX1ZJU0lCSUxJVFkgUFJJ
VkFURSBPTikKIFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9EUkFHX1NV
UFBPUlQgUFJJVkFURSBPTikKLVdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJM
RV9GQVNUX0pJVF9QRVJNSVNTSU9OUyBQUklWQVRFIE9GRikKIFdFQktJVF9PUFRJT05fREVGQVVM
VF9QT1JUX1ZBTFVFKEVOQUJMRV9GSUxURVJTX0xFVkVMXzIgUFJJVkFURSBPTikKIFdFQktJVF9P
UFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9GVExfSklUIFBSSVZBVEUgT0ZGKQogV0VC
S0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX0ZUUERJUiBQUklWQVRFIE9OKQpJ
bmRleDogU291cmNlL2NtYWtlL1dlYktpdEZlYXR1cmVzLmNtYWtlCj09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNv
dXJjZS9jbWFrZS9XZWJLaXRGZWF0dXJlcy5jbWFrZQkocmV2aXNpb24gMjYzMzYwKQorKysgU291
cmNlL2NtYWtlL1dlYktpdEZlYXR1cmVzLmNtYWtlCSh3b3JraW5nIGNvcHkpCkBAIC0xMzYsNyAr
MTM2LDYgQEAgbWFjcm8oV0VCS0lUX09QVElPTl9CRUdJTikKICAgICBXRUJLSVRfT1BUSU9OX0RF
RklORShFTkFCTEVfRFJBR19TVVBQT1JUICJUb2dnbGUgc3VwcG9ydCBvZiBkcmFnIGFjdGlvbnMg
KGluY2x1ZGluZyBzZWxlY3Rpb24gb2YgdGV4dCB3aXRoIG1vdXNlKSIgUFJJVkFURSBPRkYpCiAg
ICAgV0VCS0lUX09QVElPTl9ERUZJTkUoRU5BQkxFX0VOQ1JZUFRFRF9NRURJQSAiVG9nZ2xlIEVN
RSBWMyBzdXBwb3J0IiBQUklWQVRFIE9GRikKICAgICBXRUJLSVRfT1BUSU9OX0RFRklORShFTkFC
TEVfRVhQRVJJTUVOVEFMX0ZFQVRVUkVTICJFbmFibGUgZXhwZXJpbWVudGFsIGZlYXR1cmVzIiBQ
UklWQVRFIE9GRikKLSAgICBXRUJLSVRfT1BUSU9OX0RFRklORShFTkFCTEVfRkFTVF9KSVRfUEVS
TUlTU0lPTlMgIlRvZ2dsZSBmYXN0IEpJVCBwZXJtaXNzaW9ucyBzdXBwb3J0IiBQUklWQVRFIE9G
RikKICAgICBXRUJLSVRfT1BUSU9OX0RFRklORShFTkFCTEVfRklMVEVSU19MRVZFTF8yICJUb2dn
bGUgRmlsdGVycyBNb2R1bGUgTGV2ZWwgMiIgUFJJVkFURSBPRkYpCiAgICAgV0VCS0lUX09QVElP
Tl9ERUZJTkUoRU5BQkxFX0ZUTF9KSVQgIlRvZ2dsZSBGVEwgSklUIHN1cHBvcnQiIFBSSVZBVEUg
JHtFTkFCTEVfRlRMX0RFRkFVTFR9KQogICAgIFdFQktJVF9PUFRJT05fREVGSU5FKEVOQUJMRV9G
VFBESVIgIlRvZ2dsZSBGVFAgRGlyZWN0b3J5IHN1cHBvcnQiIFBSSVZBVEUgT04pCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>402515</attachid>
            <date>2020-06-22 15:17:07 -0700</date>
            <delta_ts>2020-06-22 18:28:23 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-213472-20200622151706.patch</filename>
            <type>text/plain</type>
            <size>31232</size>
            <attacher name="Saam Barati">saam</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBDaGFuZ2VMb2cJKHJldmlzaW9uIDI2MzM2
NCkKKysrIENoYW5nZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDEzIEBACisyMDIwLTA2
LTIyICBTYWFtIEJhcmF0aSAgPHNiYXJhdGlAYXBwbGUuY29tPgorCisgICAgICAgIEFsbG93IGJ1
aWxkaW5nIEphdmFTY3JpcHRDb3JlIE1hYythcm02NCBpbiBwdWJsaWMgU0RLIGJ1aWxkCisgICAg
ICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTM0NzIKKworICAg
ICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFNvdXJjZS9jbWFr
ZS9PcHRpb25zRlRXLmNtYWtlOgorICAgICAgICAqIFNvdXJjZS9jbWFrZS9XZWJLaXRGZWF0dXJl
cy5jbWFrZToKKwogMjAyMC0wNi0xOCAgVGltIEhvcnRvbiAgPHRpbW90aHlfaG9ydG9uQGFwcGxl
LmNvbT4KIAogICAgICAgICBSZW1vdmUgc29tZSB2ZXN0aWdlcyBvZiB0aGUgMzItYml0IFBsdWdp
biBQcm9jZXNzCkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cJKHJldmlzaW9uIDI2MzM2OCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cJKHdvcmtpbmcgY29weSkKQEAgLTEs
MyArMSw1NCBAQAorMjAyMC0wNi0yMiAgU2FhbSBCYXJhdGkgIDxzYmFyYXRpQGFwcGxlLmNvbT4K
KworICAgICAgICBBbGxvdyBidWlsZGluZyBKYXZhU2NyaXB0Q29yZSBNYWMrYXJtNjQgaW4gcHVi
bGljIFNESyBidWlsZAorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MjEzNDcyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgV2UgdXNlZCB0byBvbmx5IGJ1aWxsZCBjb2RlIGZvciBmYXN0IHBlcm1pc3Npb24gc3dp
dGNoaW5nIHdoZW4gdXNpbmcgdGhlCisgICAgICAgIEFwcGxlIGludGVybmFsIFNESy4gSG93ZXZl
ciwgd2l0aCBhcm02NCBvbiBtYWNPUywgdGhpcyBpcyBubyBsb25nZXIgYSB2aWFibGUKKyAgICAg
ICAgaW1wbGVtZW50YXRpb24gc3RyYXRlZ3kuCisgICAgICAgIAorICAgICAgICBUaGlzIHBhdGNo
IG1ha2VzIGl0IHNvIHdlIGNhbiBidWlsZCBKU0Mgb24gbWFjT1MrYXJtNjQgdXNpbmcgdGhlIHB1
YmxpYyBYY29kZQorICAgICAgICBTREsuCisgICAgICAgIAorICAgICAgICAtIEVOQUJMRV9GQVNU
X0pJVF9QRVJNSVNTSU9OUyBpcyByZW1vdmVkLiBXZSBub3cgdXNlIHJ1bnRpbWUgY2hlY2tzIGlu
c3RlYWQuCisgICAgICAgIC0gSW4gdGhlIG5ldyBzdWl0ZSBvZiBPUyBiZXRhcywgcHRocmVhZHMg
aGFzIGFkZGVkIEFQSSBmb3IgZmFzdCBwZXJtaXNzaW9ucworICAgICAgICAgIHN3aXRjaGluZy4g
V2Ugbm93IHVzZSB0aGlzIEFQSSBpbnN0ZWFkIG9mIHVzaW5nIHRoZSBub24tcHVibGljIFNESyBm
b3VuZCBpbgorICAgICAgICAgIHRoZSBrZXJuZWwgaGVhZGVycy4KKyAgICAgICAgLSBXZSBmYWxs
IGJhY2sgdG8gdGhlIHNlcGFyYXRlZCBXL1ggaGVhcHMgd2hlbiBmYXN0IHBlcm1pc3Npb25zIGNo
ZWNraW5nIGlzCisgICAgICAgICAgbm90IHN1cHBvcnRlZC4gVGhpcyBhbGwgaGFwcGVucyBhdCBy
dW50aW1lLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogSmF2YVNjcmlw
dENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBhc3NlbWJsZXIvQVJN
NjRBc3NlbWJsZXIuaDoKKyAgICAgICAgKEpTQzo6QVJNNjRBc3NlbWJsZXI6OmZpbGxOb3BzKToK
KyAgICAgICAgKiBhc3NlbWJsZXIvQVJNdjdBc3NlbWJsZXIuaDoKKyAgICAgICAgKEpTQzo6QVJN
djdBc3NlbWJsZXI6OmZpbGxOb3BzKToKKyAgICAgICAgKiBhc3NlbWJsZXIvRmFzdEpJVFBlcm1p
c3Npb25zLmg6IEFkZGVkLgorICAgICAgICAodXNlRmFzdEpJVFBlcm1pc3Npb25zKToKKyAgICAg
ICAgKHRocmVhZFNlbGZSZXN0cmljdFJXWFRvUlcpOgorICAgICAgICAodGhyZWFkU2VsZlJlc3Ry
aWN0UldYVG9SWCk6CisgICAgICAgIChmYXN0SklUUGVybWlzc2lvbnNJc1N1cHBvcnRlZCk6Cisg
ICAgICAgICogYXNzZW1ibGVyL0xpbmtCdWZmZXIuY3BwOgorICAgICAgICAoSlNDOjptZW1jcHlX
cmFwcGVyKToKKyAgICAgICAgKEpTQzo6TGlua0J1ZmZlcjo6Y29weUNvbXBhY3RBbmRMaW5rQ29k
ZSk6CisgICAgICAgICogYXNzZW1ibGVyL01JUFNBc3NlbWJsZXIuaDoKKyAgICAgICAgKEpTQzo6
TUlQU0Fzc2VtYmxlcjo6ZmlsbE5vcHMpOgorICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2Vt
YmxlckFSTTY0Lmg6CisgICAgICAgIChKU0M6Ok1hY3JvQXNzZW1ibGVyQVJNNjQ6OmxpbmspOgor
ICAgICAgICAqIGFzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTXY3Lmg6CisgICAgICAgIChKU0M6
Ok1hY3JvQXNzZW1ibGVyQVJNdjc6OmxpbmspOgorICAgICAgICAqIGppdC9FeGVjdXRhYmxlQWxs
b2NhdG9yLmNwcDoKKyAgICAgICAgKEpTQzo6aW5pdGlhbGl6ZUpJVFBhZ2VSZXNlcnZhdGlvbik6
CisgICAgICAgICogaml0L0V4ZWN1dGFibGVBbGxvY2F0b3IuaDoKKyAgICAgICAgKEpTQzo6cGVy
Zm9ybUpJVE1lbWNweSk6CisgICAgICAgIChKU0M6OnVzZUZhc3RKSVRQZXJtaXNzaW9ucyk6IERl
bGV0ZWQuCisgICAgICAgICogcnVudGltZS9KU0NDb25maWcuaDoKKyAgICAgICAgKiBydW50aW1l
L09wdGlvbnMuY3BwOgorICAgICAgICAoSlNDOjpPcHRpb25zOjpyZWNvbXB1dGVEZXBlbmRlbnRP
cHRpb25zKToKKyAgICAgICAgKiBydW50aW1lL09wdGlvbnNMaXN0Lmg6CisKIDIwMjAtMDYtMjIg
IFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CiAKICAgICAgICAgRGlzYWJs
ZSB0aGUgSlMgSklUIHdoZW4gcnVubmluZyBpbiBhIHRyYW5zbGF0ZWQgcHJvY2VzcwpJbmRleDog
U291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0Cj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9DTWFrZUxpc3RzLnR4dAkocmV2aXNpb24gMjYzMzY0KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CSh3b3JraW5nIGNvcHkpCkBAIC00Njcs
NiArNDY3LDcgQEAgc2V0KEphdmFTY3JpcHRDb3JlX1BSSVZBVEVfRlJBTUVXT1JLX0hFQQogICAg
IGFzc2VtYmxlci9Bc3NlbWJsZXJDb21tb24uaAogICAgIGFzc2VtYmxlci9DUFUuaAogICAgIGFz
c2VtYmxlci9Db2RlTG9jYXRpb24uaAorICAgIGFzc2VtYmxlci9GYXN0SklUUGVybWlzc2lvbnMu
aAogICAgIGFzc2VtYmxlci9MaW5rQnVmZmVyLmgKICAgICBhc3NlbWJsZXIvTUlQU0Fzc2VtYmxl
ci5oCiAgICAgYXNzZW1ibGVyL01JUFNSZWdpc3RlcnMuaApJbmRleDogU291cmNlL0phdmFTY3Jp
cHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oJKHJldmlzaW9uIDI2MzM2NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9K
YXZhU2NyaXB0Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBA
IC05MDAsNiArOTAwLDcgQEAKIAkJNTI1QzlDREYyMjAyODU4MzAwODJEQkZEIC8qIFdhc21BaXJJ
UkdlbmVyYXRvci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSA1Mjg0N0FEOTIxRkZCODYzMDA2MUE5REIgLyogV2FzbUFpcklSR2VuZXJhdG9yLmNwcCAq
LzsgfTsKIAkJNTI2NzhGOEYxQTAzMTAwOTAwNkEzMDZEIC8qIEJhc2ljQmxvY2tMb2NhdGlvbi5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTI2NzhGOEQx
QTAzMTAwOTAwNkEzMDZEIC8qIEJhc2ljQmxvY2tMb2NhdGlvbi5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTUyNjc4RjkxMUEwNDE3N0MwMDZBMzA2
RCAvKiBDb250cm9sRmxvd1Byb2ZpbGVyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSA1MjY3OEY5MDFBMDQxNzdDMDA2QTMwNkQgLyogQ29udHJvbEZsb3dQ
cm9maWxlci5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CisJCTUyNjdDRjgyMjQ5MzE2QjEwMDIyQkY2RCAvKiBGYXN0SklUUGVybWlzc2lvbnMuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDUyNjdDRjgxMjQ5MzE2
QUQwMDIyQkY2RCAvKiBGYXN0SklUUGVybWlzc2lvbnMuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklC
VVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MjZBQzRCNzFFOTc3QzVEMDAzNTAwRTEgLyog
V2FzbUNvZGVCbG9jay5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNTI2QUM0QjUxRTk3N0M1RDAwMzUwMEUxIC8qIFdhc21Db2RlQmxvY2suaCAqLzsgc2V0
dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk1MjdDRTM1NDIyNTU1
RkU1MDBDNkYzODIgLyogSlNUb1dhc21JQ0NhbGxlZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNTI3Q0UzNTMyMjU1NUZERDAwQzZGMzgyIC8qIEpTVG9X
YXNtSUNDYWxsZWUuaCAqLzsgfTsKIAkJNTI4NDdBREMyMUZGQjg2OTAwNjFBOURCIC8qIFdhc21B
aXJJUkdlbmVyYXRvci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gNTI4NDdBREEyMUZGQjg2MzAwNjFBOURCIC8qIFdhc21BaXJJUkdlbmVyYXRvci5oICov
OyB9OwpAQCAtMzU3MSw2ICszNTcyLDcgQEAKIAkJNTI2NzhGOEMxQTAzMTAwOTAwNkEzMDZEIC8q
IEJhc2ljQmxvY2tMb2NhdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBh
dGggPSBCYXNpY0Jsb2NrTG9jYXRpb24uY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9Owog
CQk1MjY3OEY4RDFBMDMxMDA5MDA2QTMwNkQgLyogQmFzaWNCbG9ja0xvY2F0aW9uLmggKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEJhc2ljQmxvY2tMb2NhdGlvbi5oOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk1MjY3OEY5MDFBMDQxNzdDMDA2QTMwNkQgLyogQ29udHJv
bEZsb3dQcm9maWxlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBDb250cm9s
Rmxvd1Byb2ZpbGVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTUyNjdDRjgxMjQ5
MzE2QUQwMDIyQkY2RCAvKiBGYXN0SklUUGVybWlzc2lvbnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRmFz
dEpJVFBlcm1pc3Npb25zLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUyNkFDNEI0
MUU5NzdDNUQwMDM1MDBFMSAvKiBXYXNtQ29kZUJsb2NrLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuY3BwLmNwcDsgcGF0aCA9IFdhc21Db2RlQmxvY2suY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk1MjZBQzRCNTFFOTc3QzVEMDAzNTAwRTEgLyogV2FzbUNvZGVCbG9jay5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBXYXNtQ29kZUJsb2NrLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTUyNzI5ODdCMjM1RkM4QkEwMDVDOTgyQyAvKiBHQ01lbW9y
eU9wZXJhdGlvbnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR0NNZW1vcnlPcGVyYXRpb25zLmg7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC03NzQyLDEyICs3NzQ0LDEyIEBACiAJCQkJRkUxQkQw
MjAxRTcyMDI3MDAwMTM0QkM5IC8qIENlbGxQcm9maWxlLmggKi8sCiAJCQkJMEY0RjExRTcyMDlC
Q0RBMTAwNzA5NjU0IC8qIENvbXBpbGVyVGltaW5nU2NvcGUuY3BwICovLAogCQkJCTBGNEYxMUU2
MjA5QkNEQTEwMDcwOTY1NCAvKiBDb21waWxlclRpbWluZ1Njb3BlLmggKi8sCisJCQkJNTJFRUQ3
OTIyNDkyQjg2ODAwOEY0QzkzIC8qIEZ1bmN0aW9uQWxsb3dsaXN0LmNwcCAqLywKKwkJCQk1MkVF
RDc5MzI0OTJCODY4MDA4RjRDOTMgLyogRnVuY3Rpb25BbGxvd2xpc3QuaCAqLywKIAkJCQlGRTRC
RkYyOTFBRDQ3NkU3MDAwODhGODcgLyogRnVuY3Rpb25PdmVycmlkZXMuY3BwICovLAogCQkJCUZF
NEJGRjJBMUFENDc2RTcwMDA4OEY4NyAvKiBGdW5jdGlvbk92ZXJyaWRlcy5oICovLAogCQkJCUZF
MUJEMDIyMUU3MjA1MkYwMDEzNEJDOSAvKiBIZWFwVmVyaWZpZXIuY3BwICovLAogCQkJCUZFMUJE
MDIzMUU3MjA1MkYwMDEzNEJDOSAvKiBIZWFwVmVyaWZpZXIuaCAqLywKLQkJCQk1MkVFRDc5MjI0
OTJCODY4MDA4RjRDOTMgLyogRnVuY3Rpb25BbGxvd2xpc3QuY3BwICovLAotCQkJCTUyRUVENzkz
MjQ5MkI4NjgwMDhGNEM5MyAvKiBGdW5jdGlvbkFsbG93bGlzdC5oICovLAogCQkJCUZFQzU3OTc0
MjMxMDVGNDIwMEJDQTgzRiAvKiBJbnRlZ3JpdHkuY3BwICovLAogCQkJCUZFQzU3OTc1MjMxMDVG
NDMwMEJDQTgzRiAvKiBJbnRlZ3JpdHkuaCAqLywKIAkJCQlGRUM1Nzk3NzIzMTA5NTRCMDBCQ0E4
M0YgLyogSW50ZWdyaXR5SW5saW5lcy5oICovLApAQCAtODE5OSw2ICs4MjAxLDcgQEAKIAkJCQk1
MjMzNTYyODIyNUVCOEU5MDAyNjhCRDIgLyogQ1BVLmNwcCAqLywKIAkJCQkwRjMwRDdCRjFEOTVE
NjJGMDA1MzA4OUQgLyogQ1BVLmggKi8sCiAJCQkJMEYzNzMwOEUxQzBDRDY4NTAwMDUyQkZBIC8q
IERpc2FsbG93TWFjcm9TY3JhdGNoUmVnaXN0ZXJVc2FnZS5oICovLAorCQkJCTUyNjdDRjgxMjQ5
MzE2QUQwMDIyQkY2RCAvKiBGYXN0SklUUGVybWlzc2lvbnMuaCAqLywKIAkJCQkwRkY0Mjc1NjE1
OTE0QTIwMDA0Q0I5RkYgLyogTGlua0J1ZmZlci5jcHAgKi8sCiAJCQkJODZEM0IzQzExMDE1OUQ3
RjAwMjg2NUU3IC8qIExpbmtCdWZmZXIuaCAqLywKIAkJCQkwRkVCM0VDRTE2MjM3RjY3MDBBQjY3
QUQgLyogTWFjcm9Bc3NlbWJsZXIuY3BwICovLApAQCAtOTM5Myw3ICs5Mzk2LDYgQEAKIAkJCQlB
NzY3QjVCNjE3QTBCOTY1MDA2M0Q5NDAgLyogREZHTG9vcFByZUhlYWRlckNyZWF0aW9uUGhhc2Uu
aCBpbiBIZWFkZXJzICovLAogCQkJCTBGNTg3NEVFMTk0RkVCMTIwMEFBQjJDMSAvKiBERkdNYXlF
eGl0LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjJCREM0NTE1MjI4MDFCMDBDRDg5MTAgLyogREZH
TWluaWZpZWRHcmFwaC5oIGluIEhlYWRlcnMgKi8sCi0JCQkJNTJFRUQ3OTQyNDkyQjg3MDAwOEY0
QzkzIC8qIEZ1bmN0aW9uQWxsb3dsaXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjJFODkyRDE2
RDAyQkFGMDA5RTRGRDIgLyogREZHTWluaWZpZWRJRC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTM4
NTBCMTUyMjZFRDY0MTAwOUFCRjlDIC8qIERGR01pbmlmaWVkSURJbmxpbmVzLmggaW4gSGVhZGVy
cyAqLywKIAkJCQkwRjJCREM0NjE1MjI4MDIwMDBDRDg5MTAgLyogREZHTWluaWZpZWROb2RlLmgg
aW4gSGVhZGVycyAqLywKQEAgLTk1MjQsNiArOTUyNiw3IEBACiAJCQkJMEYzQUM3NTQxODhFNUVD
ODAwMzIwMjlGIC8qIEV4aXRpbmdKSVRUeXBlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRkIxMDU4
NjE2NzU0ODEyMDBGOEFCNkUgLyogRXhpdEtpbmQuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGMEI4
M0FCMTRCQ0Y1QkIwMDg4NUI0RiAvKiBFeHByZXNzaW9uUmFuZ2VJbmZvLmggaW4gSGVhZGVycyAq
LywKKwkJCQk1MjY3Q0Y4MjI0OTMxNkIxMDAyMkJGNkQgLyogRmFzdEpJVFBlcm1pc3Npb25zLmgg
aW4gSGVhZGVycyAqLywKIAkJCQkwRkVDM0M1NzFGMzNBNDUzMDBGNTlCNkMgLyogRmFzdE1hbGxv
Y0FsaWduZWRNZW1vcnlBbGxvY2F0b3IuaCBpbiBIZWFkZXJzICovLAogCQkJCUNFQ0ZBRDM3MjM3
MkRBRDQwMDI5MTU5OSAvKiBGaWxlQmFzZWRGdXp6ZXJBZ2VudC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQ0UyMEJEMDUyMzdEM0UyMzAwNDZFNTIwIC8qIEZpbGVCYXNlZEZ1enplckFnZW50QmFzZS5o
IGluIEhlYWRlcnMgKi8sCkBAIC05NTgzLDYgKzk1ODYsNyBAQAogCQkJCTBGNjY2RUMxMTgzNTY2
RjkwMEQwMTdGMSAvKiBGdWxsQnl0ZWNvZGVMaXZlbmVzcy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
QUQ0MjUyNTExRTVEMEUxNDAwOUQyQTk3IC8qIEZ1bGxDb2RlT3JpZ2luLmggaW4gSGVhZGVycyAq
LywKIAkJCQkyQTgzNjM4QTE4RDdEMEZFMDAwMEVCQ0MgLyogRnVsbEdDQWN0aXZpdHlDYWxsYmFj
ay5oIGluIEhlYWRlcnMgKi8sCisJCQkJNTJFRUQ3OTQyNDkyQjg3MDAwOEY0QzkzIC8qIEZ1bmN0
aW9uQWxsb3dsaXN0LmggaW4gSGVhZGVycyAqLywKIAkJCQkxNEFEOTEwRDFEQ0E5Mjk0MDAxNEY5
RkUgLyogRnVuY3Rpb25Db2RlQmxvY2suaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDNDA0MEUx
NkY1Q0QwMEIzNDQ2MCAvKiBGdW5jdGlvbkNvbnN0cnVjdG9yLmggaW4gSGVhZGVycyAqLywKIAkJ
CQkxNDczNDFEODFEQzAyRjk5MDBBQTI5QkEgLyogRnVuY3Rpb25FeGVjdXRhYmxlLmggaW4gSGVh
ZGVycyAqLywKSW5kZXg6IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQVJNNjRBc3Nl
bWJsZXIuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0FS
TTY0QXNzZW1ibGVyLmgJKHJldmlzaW9uIDI2MzM2NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9hc3NlbWJsZXIvQVJNNjRBc3NlbWJsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMTQ5MCw3ICsx
NDkwLDcgQEAgcHVibGljOgogICAgIHVzaW5nIENvcHlGdW5jdGlvbiA9IHZvaWQqKCYpKHZvaWQq
LCBjb25zdCB2b2lkKiwgc2l6ZV90KTsKIAogICAgIHRlbXBsYXRlIDxDb3B5RnVuY3Rpb24gY29w
eT4KLSAgICBzdGF0aWMgdm9pZCBmaWxsTm9wcyh2b2lkKiBiYXNlLCBzaXplX3Qgc2l6ZSkKKyAg
ICBBTFdBWVNfSU5MSU5FIHN0YXRpYyB2b2lkIGZpbGxOb3BzKHZvaWQqIGJhc2UsIHNpemVfdCBz
aXplKQogICAgIHsKICAgICAgICAgUkVMRUFTRV9BU1NFUlQoIShzaXplICUgc2l6ZW9mKGludDMy
X3QpKSk7CiAgICAgICAgIHNpemVfdCBuID0gc2l6ZSAvIHNpemVvZihpbnQzMl90KTsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQVJNdjdBc3NlbWJsZXIuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL0FSTXY3QXNzZW1ibGVyLmgJ
KHJldmlzaW9uIDI2MzM2NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvQVJN
djdBc3NlbWJsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMTk3Niw3ICsxOTc2LDcgQEAgcHVibGlj
OgogICAgIHVzaW5nIENvcHlGdW5jdGlvbiA9IHZvaWQqKCYpKHZvaWQqLCBjb25zdCB2b2lkKiwg
c2l6ZV90KTsKIAogICAgIHRlbXBsYXRlIDxDb3B5RnVuY3Rpb24gY29weT4KLSAgICBzdGF0aWMg
dm9pZCBmaWxsTm9wcyh2b2lkKiBiYXNlLCBzaXplX3Qgc2l6ZSkKKyAgICBBTFdBWVNfSU5MSU5F
IHN0YXRpYyB2b2lkIGZpbGxOb3BzKHZvaWQqIGJhc2UsIHNpemVfdCBzaXplKQogICAgIHsKICAg
ICAgICAgUkVMRUFTRV9BU1NFUlQoIShzaXplICUgc2l6ZW9mKGludDE2X3QpKSk7CiAKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvRmFzdEpJVFBlcm1pc3Npb25zLmgKPT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9GYXN0SklUUGVybWlz
c2lvbnMuaAkobm9uZXhpc3RlbnQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVy
L0Zhc3RKSVRQZXJtaXNzaW9ucy5oCSh3b3JraW5nIGNvcHkpCkBAIC0wLDAgKzEsMTAzIEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
KyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05U
UklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwg
U1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJ
TkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09P
RFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVT
SU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICog
T0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBU
T1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFO
WSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNF
RCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNl
CisKKyNpZiBPUyhEQVJXSU4pICYmIENQVShBUk02NCkKKworI2luY2x1ZGUgPHd0Zi9QbGF0Zm9y
bS5oPgorCisjaWYgSEFWRShQVEhSRUFEX0pJVF9QRVJNSVNTSU9OU19BUEkpCisjaW5jbHVkZSA8
cHRocmVhZC5oPgorI2VsaWYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykKKyNpbmNsdWRlIDxvcy90
aHJlYWRfc2VsZl9yZXN0cmljdC5oPiAKKyNlbmRpZgorCitzdGF0aWMgQUxXQVlTX0lOTElORSBi
b29sIHVzZUZhc3RKSVRQZXJtaXNzaW9ucygpCit7CisjaWYgQ1BVKEFSTTY0RSkKKyAgICByZXR1
cm4gdHJ1ZTsKKyNlbGlmIEhBVkUoUFRIUkVBRF9KSVRfUEVSTUlTU0lPTlNfQVBJKSAKKyAgICBy
ZXR1cm4gISFwdGhyZWFkX2ppdF93cml0ZV9wcm90ZWN0X3N1cHBvcnRlZF9ucCgpOworI2VsaWYg
VVNFKEFQUExFX0lOVEVSTkFMX1NESykKKyAgICByZXR1cm4gISFvc190aHJlYWRfc2VsZl9yZXN0
cmljdF9yd3hfaXNfc3VwcG9ydGVkKCk7CisjZWxzZQorICAgIHJldHVybiBmYWxzZTsKKyNlbmRp
ZgorfQorCitzdGF0aWMgQUxXQVlTX0lOTElORSB2b2lkIHRocmVhZFNlbGZSZXN0cmljdFJXWFRv
UlcoKQoreworICAgIEFTU0VSVCh1c2VGYXN0SklUUGVybWlzc2lvbnMoKSk7CisKKyNpZiBIQVZF
KFBUSFJFQURfSklUX1BFUk1JU1NJT05TX0FQSSkgCisgICAgcHRocmVhZF9qaXRfd3JpdGVfcHJv
dGVjdF9ucChmYWxzZSk7CisjZWxpZiBVU0UoQVBQTEVfSU5URVJOQUxfU0RLKQorICAgIG9zX3Ro
cmVhZF9zZWxmX3Jlc3RyaWN0X3J3eF90b19ydygpOworI2Vsc2UKKyAgICBib29sIHRhdXRvbG9n
eVRvSWdub3JlV2FybmluZyA9IHRydWU7CisgICAgaWYgKHRhdXRvbG9neVRvSWdub3JlV2Fybmlu
ZykKKyAgICAgICAgUkVMRUFTRV9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyNlbmRpZgorfQorCitz
dGF0aWMgQUxXQVlTX0lOTElORSB2b2lkIHRocmVhZFNlbGZSZXN0cmljdFJXWFRvUlgoKQorewor
ICAgIEFTU0VSVCh1c2VGYXN0SklUUGVybWlzc2lvbnMoKSk7CisKKyNpZiBIQVZFKFBUSFJFQURf
SklUX1BFUk1JU1NJT05TX0FQSSkgCisgICAgcHRocmVhZF9qaXRfd3JpdGVfcHJvdGVjdF9ucCh0
cnVlKTsKKyNlbGlmIFVTRShBUFBMRV9JTlRFUk5BTF9TREspCisgICAgb3NfdGhyZWFkX3NlbGZf
cmVzdHJpY3Rfcnd4X3RvX3J4KCk7CisjZWxzZQorICAgIGJvb2wgdGF1dG9sb2d5VG9JZ25vcmVX
YXJuaW5nID0gdHJ1ZTsKKyAgICBpZiAodGF1dG9sb2d5VG9JZ25vcmVXYXJuaW5nKQorICAgICAg
ICBSRUxFQVNFX0FTU0VSVF9OT1RfUkVBQ0hFRCgpOworI2VuZGlmCit9CisKKyNlbHNlIC8vIE5v
dCBPUyhEQVJXSU4pICYmIENQVShBUk02NCkKKworY29uc3RleHByIGJvb2wgZmFzdEpJVFBlcm1p
c3Npb25zSXNTdXBwb3J0ZWQoKQoreworICAgIHJldHVybiBmYWxzZTsKK30KKworY29uc3RleHBy
IGJvb2wgdXNlRmFzdEpJVFBlcm1pc3Npb25zKCkKK3sKKyAgICByZXR1cm4gZmFsc2U7Cit9CisK
K05PX1JFVFVSTl9EVUVfVE9fQ1JBU0ggc3RhdGljIHZvaWQgdGhyZWFkU2VsZlJlc3RyaWN0UldY
VG9SVygpCit7CisgICAgQ1JBU0goKTsKK30KKworTk9fUkVUVVJOX0RVRV9UT19DUkFTSCBzdGF0
aWMgdm9pZCB0aHJlYWRTZWxmUmVzdHJpY3RSV1hUb1JYKCkKK3sKKyAgICBDUkFTSCgpOworfQor
CisjZW5kaWYgLy8gT1MoREFSV0lOKSAmJiBDUFUoQVJNNjQpCkluZGV4OiBTb3VyY2UvSmF2YVNj
cmlwdENvcmUvYXNzZW1ibGVyL0xpbmtCdWZmZXIuY3BwCj09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9K
YXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTGlua0J1ZmZlci5jcHAJKHJldmlzaW9uIDI2MzM2NCkK
KysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTGlua0J1ZmZlci5jcHAJKHdvcmtp
bmcgY29weSkKQEAgLTExOSwyNyArMTE5LDEzIEBAIExpbmtCdWZmZXI6OkNvZGVSZWY8TGlua0J1
ZmZlclB0clRhZz4gTGkKIH0KIAogI2lmIEVOQUJMRShCUkFOQ0hfQ09NUEFDVElPTikKKwogI2lm
IENQVShBUk02NEUpCiAjZGVmaW5lIEVOQUJMRV9WRVJJRllfSklUX0hBU0ggMQogI2Vsc2UKICNk
ZWZpbmUgRU5BQkxFX1ZFUklGWV9KSVRfSEFTSCAwCiAjZW5kaWYKIAotI2lmIEVOQUJMRShGQVNU
X0pJVF9QRVJNSVNTSU9OUykgJiYgIUVOQUJMRShTRVBBUkFURURfV1hfSEVBUCkKLSMgICBkZWZp
bmUgSUZfRkFTVF9KSVRfUEVSTUlTU0lPTlModGhlblN0bXQpIHRoZW5TdG10Ci0jICAgZGVmaW5l
IElGX0ZBU1RfSklUX1BFUk1JU1NJT05TX0VMU0UodGhlblN0bXQsIGVsc2VTdG10KSB0aGVuU3Rt
dAotI2VsaWYgRU5BQkxFKEZBU1RfSklUX1BFUk1JU1NJT05TKQotIyAgIGRlZmluZSBJRl9GQVNU
X0pJVF9QRVJNSVNTSU9OUyh0aGVuU3RtdCkgaWYgKHVzZUZhc3RKSVRQZXJtaXNzaW9ucygpKSBc
Ci0gICAgICAgIHRoZW5TdG10Ci0jICAgZGVmaW5lIElGX0ZBU1RfSklUX1BFUk1JU1NJT05TX0VM
U0UodGhlblN0bXQsIGVsc2VTdG10KSBpZiAodXNlRmFzdEpJVFBlcm1pc3Npb25zKCkpIFwKLSAg
ICAgICAgICAgIHRoZW5TdG10OyBcCi0gICAgICAgIGVsc2UgXAotICAgICAgICAgICAgZWxzZVN0
bXQKLSNlbHNlCi0jICAgZGVmaW5lIElGX0ZBU1RfSklUX1BFUk1JU1NJT05TKHRoZW5TdG10KQot
IyAgIGRlZmluZSBJRl9GQVNUX0pJVF9QRVJNSVNTSU9OU19FTFNFKHRoZW5TdG10LCBlbHNlU3Rt
dCkgZWxzZVN0bXQKLSNlbmRpZgotCiBjbGFzcyBCcmFuY2hDb21wYWN0aW9uTGlua0J1ZmZlcjsK
IAogdXNpbmcgVGhyZWFkU3BlY2lmaWNCcmFuY2hDb21wYWN0aW9uTGlua0J1ZmZlciA9IFRocmVh
ZFNwZWNpZmljPEJyYW5jaENvbXBhY3Rpb25MaW5rQnVmZmVyLCBXVEY6OkNhbkJlR0NUaHJlYWQ6
OlRydWU+OwpAQCAtMjM3LDYgKzIyMywxMyBAQCBzdGF0aWMgQUxXQVlTX0lOTElORSB2b2lkIHJl
Y29yZExpbmtPZmZzCiAgICAgICAgIG9mZnNldHNbcHRyKytdID0gb2Zmc2V0OwogfQogCisvLyBX
ZSB1c2UgdGhpcyB0byBwcmV2ZW50IGNvbXBpbGUgZXJyb3JzIG9uIHNvbWUgcGxhdGZvcm1zIHRo
YXQgYXJlIHVuaGFwcHkKKy8vIGFib3V0IHRoZSBzaWduYXR1cmUgb2YgdGhlIHN5c3RlbSdzIG1l
bWNweS4KK0FMV0FZU19JTkxJTkUgdm9pZCogbWVtY3B5V3JhcHBlcih2b2lkKiBkc3QsIGNvbnN0
IHZvaWQqIHNyYywgc2l6ZV90IGJ5dGVzKQoreworICAgIHJldHVybiBtZW1jcHkoZHN0LCBzcmMs
IGJ5dGVzKTsKK30KKwogdGVtcGxhdGUgPHR5cGVuYW1lIEluc3RydWN0aW9uVHlwZT4KIHZvaWQg
TGlua0J1ZmZlcjo6Y29weUNvbXBhY3RBbmRMaW5rQ29kZShNYWNyb0Fzc2VtYmxlciYgbWFjcm9B
c3NlbWJsZXIsIEpJVENvbXBpbGF0aW9uRWZmb3J0IGVmZm9ydCkKIHsKQEAgLTI2OCw3ICsyNjEs
OCBAQCB2b2lkIExpbmtCdWZmZXI6OmNvcHlDb21wYWN0QW5kTGlua0NvZGUoCiAgICAgaW50IHdy
aXRlUHRyID0gMDsKICAgICB1bnNpZ25lZCBqdW1wQ291bnQgPSBqdW1wc1RvTGluay5zaXplKCk7
CiAKLSAgICBJRl9GQVNUX0pJVF9QRVJNSVNTSU9OUyhvc190aHJlYWRfc2VsZl9yZXN0cmljdF9y
d3hfdG9fcncoKSk7CisgICAgaWYgKHVzZUZhc3RKSVRQZXJtaXNzaW9ucygpKQorICAgICAgICB0
aHJlYWRTZWxmUmVzdHJpY3RSV1hUb1JXKCk7CiAKICAgICBpZiAobV9zaG91bGRQZXJmb3JtQnJh
bmNoQ29tcGFjdGlvbikgewogICAgICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwganVtcENv
dW50OyArK2kpIHsKQEAgLTM1NiwxOCArMzUwLDI0IEBAIHZvaWQgTGlua0J1ZmZlcjo6Y29weUNv
bXBhY3RBbmRMaW5rQ29kZSgKICAgICBmb3IgKHVuc2lnbmVkIGkgPSAwOyBpIDwganVtcENvdW50
OyArK2kpIHsKICAgICAgICAgdWludDhfdCogbG9jYXRpb24gPSBjb2RlT3V0RGF0YSArIGp1bXBz
VG9MaW5rW2ldLmZyb20oKTsKICAgICAgICAgdWludDhfdCogdGFyZ2V0ID0gY29kZU91dERhdGEg
KyBqdW1wc1RvTGlua1tpXS50bygpIC0gZXhlY3V0YWJsZU9mZnNldEZvcihqdW1wc1RvTGlua1tp
XS50bygpKTsKLSAgICAgICAgSUZfRkFTVF9KSVRfUEVSTUlTU0lPTlNfRUxTRShNYWNyb0Fzc2Vt
Ymxlcjo6bGluazxtZW1jcHk+KGp1bXBzVG9MaW5rW2ldLCBvdXREYXRhICsganVtcHNUb0xpbmtb
aV0uZnJvbSgpLCBsb2NhdGlvbiwgdGFyZ2V0KSwgXAotICAgICAgICAgICAgTWFjcm9Bc3NlbWJs
ZXI6Omxpbms8cGVyZm9ybUpJVE1lbWNweT4oanVtcHNUb0xpbmtbaV0sIG91dERhdGEgKyBqdW1w
c1RvTGlua1tpXS5mcm9tKCksIGxvY2F0aW9uLCB0YXJnZXQpKTsKKyAgICAgICAgaWYgKHVzZUZh
c3RKSVRQZXJtaXNzaW9ucygpKQorICAgICAgICAgICAgTWFjcm9Bc3NlbWJsZXI6Omxpbms8bWVt
Y3B5V3JhcHBlcj4oanVtcHNUb0xpbmtbaV0sIG91dERhdGEgKyBqdW1wc1RvTGlua1tpXS5mcm9t
KCksIGxvY2F0aW9uLCB0YXJnZXQpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBNYWNyb0Fz
c2VtYmxlcjo6bGluazxwZXJmb3JtSklUTWVtY3B5PihqdW1wc1RvTGlua1tpXSwgb3V0RGF0YSAr
IGp1bXBzVG9MaW5rW2ldLmZyb20oKSwgbG9jYXRpb24sIHRhcmdldCk7CiAgICAgfQogCiAgICAg
c2l6ZV90IGNvbXBhY3RTaXplID0gd3JpdGVQdHIgKyBpbml0aWFsU2l6ZSAtIHJlYWRQdHI7CiAg
ICAgaWYgKCFtX2V4ZWN1dGFibGVNZW1vcnkpIHsKICAgICAgICAgc2l6ZV90IG5vcFNpemVJbkJ5
dGVzID0gaW5pdGlhbFNpemUgLSBjb21wYWN0U2l6ZTsKLSAgICAgICAgSUZfRkFTVF9KSVRfUEVS
TUlTU0lPTlNfRUxTRShBc3NlbWJsZXI6OmZpbGxOb3BzPG1lbWNweT4ob3V0RGF0YSArIGNvbXBh
Y3RTaXplLCBub3BTaXplSW5CeXRlcyksIFwKLSAgICAgICAgICAgIEFzc2VtYmxlcjo6ZmlsbE5v
cHM8cGVyZm9ybUpJVE1lbWNweT4ob3V0RGF0YSArIGNvbXBhY3RTaXplLCBub3BTaXplSW5CeXRl
cykpOworCisgICAgICAgIGlmICh1c2VGYXN0SklUUGVybWlzc2lvbnMoKSkKKyAgICAgICAgICAg
IEFzc2VtYmxlcjo6ZmlsbE5vcHM8bWVtY3B5V3JhcHBlcj4ob3V0RGF0YSArIGNvbXBhY3RTaXpl
LCBub3BTaXplSW5CeXRlcyk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIEFzc2VtYmxlcjo6
ZmlsbE5vcHM8cGVyZm9ybUpJVE1lbWNweT4ob3V0RGF0YSArIGNvbXBhY3RTaXplLCBub3BTaXpl
SW5CeXRlcyk7CiAgICAgfQogCi0gICAgSUZfRkFTVF9KSVRfUEVSTUlTU0lPTlMob3NfdGhyZWFk
X3NlbGZfcmVzdHJpY3Rfcnd4X3RvX3J4KCkpOworICAgIGlmICh1c2VGYXN0SklUUGVybWlzc2lv
bnMoKSkKKyAgICAgICAgdGhyZWFkU2VsZlJlc3RyaWN0UldYVG9SWCgpOwogCiAgICAgaWYgKG1f
ZXhlY3V0YWJsZU1lbW9yeSkgewogICAgICAgICBtX3NpemUgPSBjb21wYWN0U2l6ZTsKSW5kZXg6
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTUlQU0Fzc2VtYmxlci5oCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9hc3NlbWJsZXIvTUlQU0Fzc2VtYmxlci5oCShy
ZXZpc2lvbiAyNjMzNjQpCisrKyBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01JUFNB
c3NlbWJsZXIuaAkod29ya2luZyBjb3B5KQpAQCAtMTY1LDcgKzE2NSw3IEBAIHB1YmxpYzoKICAg
ICB1c2luZyBDb3B5RnVuY3Rpb24gPSB2b2lkKigmKSh2b2lkKiwgY29uc3Qgdm9pZCosIHNpemVf
dCk7CiAKICAgICB0ZW1wbGF0ZSA8Q29weUZ1bmN0aW9uIGNvcHk+Ci0gICAgc3RhdGljIHZvaWQg
ZmlsbE5vcHModm9pZCogYmFzZSwgc2l6ZV90IHNpemUpCisgICAgQUxXQVlTX0lOTElORSBzdGF0
aWMgdm9pZCBmaWxsTm9wcyh2b2lkKiBiYXNlLCBzaXplX3Qgc2l6ZSkKICAgICB7CiAgICAgICAg
IFVOVVNFRF9QQVJBTShjb3B5KTsKICAgICAgICAgUkVMRUFTRV9BU1NFUlQoIShzaXplICUgc2l6
ZW9mKGludDMyX3QpKSk7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvYXNzZW1ibGVyL01h
Y3JvQXNzZW1ibGVyQVJNNjQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlwdENvcmUv
YXNzZW1ibGVyL01hY3JvQXNzZW1ibGVyQVJNNjQuaAkocmV2aXNpb24gMjYzMzY0KQorKysgU291
cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTTY0LmgJKHdvcmtp
bmcgY29weSkKQEAgLTg2LDggKzg2LDkgQEAgcHVibGljOgogICAgIHN0YXRpYyBKdW1wTGlua1R5
cGUgY29tcHV0ZUp1bXBUeXBlKEp1bXBUeXBlIGp1bXBUeXBlLCBjb25zdCB1aW50OF90KiBmcm9t
LCBjb25zdCB1aW50OF90KiB0bykgeyByZXR1cm4gQXNzZW1ibGVyOjpjb21wdXRlSnVtcFR5cGUo
anVtcFR5cGUsIGZyb20sIHRvKTsgfQogICAgIHN0YXRpYyBKdW1wTGlua1R5cGUgY29tcHV0ZUp1
bXBUeXBlKExpbmtSZWNvcmQmIHJlY29yZCwgY29uc3QgdWludDhfdCogZnJvbSwgY29uc3QgdWlu
dDhfdCogdG8pIHsgcmV0dXJuIEFzc2VtYmxlcjo6Y29tcHV0ZUp1bXBUeXBlKHJlY29yZCwgZnJv
bSwgdG8pOyB9CiAgICAgc3RhdGljIGludCBqdW1wU2l6ZURlbHRhKEp1bXBUeXBlIGp1bXBUeXBl
LCBKdW1wTGlua1R5cGUganVtcExpbmtUeXBlKSB7IHJldHVybiBBc3NlbWJsZXI6Omp1bXBTaXpl
RGVsdGEoanVtcFR5cGUsIGp1bXBMaW5rVHlwZSk7IH0KKwogICAgIHRlbXBsYXRlIDxBc3NlbWJs
ZXI6OkNvcHlGdW5jdGlvbiBjb3B5PgotICAgIHN0YXRpYyB2b2lkIGxpbmsoTGlua1JlY29yZCYg
cmVjb3JkLCB1aW50OF90KiBmcm9tLCBjb25zdCB1aW50OF90KiBmcm9tSW5zdHJ1Y3Rpb24sIHVp
bnQ4X3QqIHRvKSB7IHJldHVybiBBc3NlbWJsZXI6Omxpbms8Y29weT4ocmVjb3JkLCBmcm9tLCBm
cm9tSW5zdHJ1Y3Rpb24sIHRvKTsgfQorICAgIEFMV0FZU19JTkxJTkUgc3RhdGljIHZvaWQgbGlu
ayhMaW5rUmVjb3JkJiByZWNvcmQsIHVpbnQ4X3QqIGZyb20sIGNvbnN0IHVpbnQ4X3QqIGZyb21J
bnN0cnVjdGlvbiwgdWludDhfdCogdG8pIHsgcmV0dXJuIEFzc2VtYmxlcjo6bGluazxjb3B5Pihy
ZWNvcmQsIGZyb20sIGZyb21JbnN0cnVjdGlvbiwgdG8pOyB9CiAKICAgICBzdGF0aWMgYm9vbCBp
c0NvbXBhY3RQdHJBbGlnbmVkQWRkcmVzc09mZnNldChwdHJkaWZmX3QgdmFsdWUpCiAgICAgewpJ
bmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fzc2VtYmxlckFSTXY3
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL2Fzc2VtYmxlci9NYWNyb0Fz
c2VtYmxlckFSTXY3LmgJKHJldmlzaW9uIDI2MzM2NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9hc3NlbWJsZXIvTWFjcm9Bc3NlbWJsZXJBUk12Ny5oCSh3b3JraW5nIGNvcHkpCkBAIC03MSw4
ICs3MSw5IEBAIHB1YmxpYzoKICAgICBzdGF0aWMgSnVtcExpbmtUeXBlIGNvbXB1dGVKdW1wVHlw
ZShKdW1wVHlwZSBqdW1wVHlwZSwgY29uc3QgdWludDhfdCogZnJvbSwgY29uc3QgdWludDhfdCog
dG8pIHsgcmV0dXJuIEFSTXY3QXNzZW1ibGVyOjpjb21wdXRlSnVtcFR5cGUoanVtcFR5cGUsIGZy
b20sIHRvKTsgfQogICAgIHN0YXRpYyBKdW1wTGlua1R5cGUgY29tcHV0ZUp1bXBUeXBlKExpbmtS
ZWNvcmQmIHJlY29yZCwgY29uc3QgdWludDhfdCogZnJvbSwgY29uc3QgdWludDhfdCogdG8pIHsg
cmV0dXJuIEFSTXY3QXNzZW1ibGVyOjpjb21wdXRlSnVtcFR5cGUocmVjb3JkLCBmcm9tLCB0byk7
IH0KICAgICBzdGF0aWMgaW50IGp1bXBTaXplRGVsdGEoSnVtcFR5cGUganVtcFR5cGUsIEp1bXBM
aW5rVHlwZSBqdW1wTGlua1R5cGUpIHsgcmV0dXJuIEFSTXY3QXNzZW1ibGVyOjpqdW1wU2l6ZURl
bHRhKGp1bXBUeXBlLCBqdW1wTGlua1R5cGUpOyB9CisKICAgICB0ZW1wbGF0ZSA8QXNzZW1ibGVy
OjpDb3B5RnVuY3Rpb24gY29weT4KLSAgICBzdGF0aWMgdm9pZCBsaW5rKExpbmtSZWNvcmQmIHJl
Y29yZCwgdWludDhfdCogZnJvbSwgY29uc3QgdWludDhfdCogZnJvbUluc3RydWN0aW9uLCB1aW50
OF90KiB0bykgeyByZXR1cm4gQVJNdjdBc3NlbWJsZXI6Omxpbms8Y29weT4ocmVjb3JkLCBmcm9t
LCBmcm9tSW5zdHJ1Y3Rpb24sIHRvKTsgfQorICAgIEFMV0FZU19JTkxJTkUgc3RhdGljIHZvaWQg
bGluayhMaW5rUmVjb3JkJiByZWNvcmQsIHVpbnQ4X3QqIGZyb20sIGNvbnN0IHVpbnQ4X3QqIGZy
b21JbnN0cnVjdGlvbiwgdWludDhfdCogdG8pIHsgcmV0dXJuIEFSTXY3QXNzZW1ibGVyOjpsaW5r
PGNvcHk+KHJlY29yZCwgZnJvbSwgZnJvbUluc3RydWN0aW9uLCB0byk7IH0KIAogICAgIHN0cnVj
dCBBcm1BZGRyZXNzIHsKICAgICAgICAgZW51bSBBZGRyZXNzVHlwZSB7CkluZGV4OiBTb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaml0L0V4ZWN1dGFibGVBbGxvY2F0b3IuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvRXhlY3V0YWJsZUFsbG9jYXRvci5jcHAJKHJldmlz
aW9uIDI2MzM2NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9qaXQvRXhlY3V0YWJsZUFsbG9j
YXRvci5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTMzNCwyNyArMzM0LDIxIEBAIHN0YXRpYyBBTFdB
WVNfSU5MSU5FIEpJVFJlc2VydmF0aW9uIGluaXQKICAgICAgICAgQVNTRVJUKHJlc2VydmF0aW9u
LnBhZ2VSZXNlcnZhdGlvbi5zaXplKCkgPT0gcmVzZXJ2YXRpb24uc2l6ZSk7CiAgICAgICAgIHJl
c2VydmF0aW9uLmJhc2UgPSByZXNlcnZhdGlvbi5wYWdlUmVzZXJ2YXRpb24uYmFzZSgpOwogCi0j
aWYgRU5BQkxFKEZBU1RfSklUX1BFUk1JU1NJT05TKSAmJiAhRU5BQkxFKFNFUEFSQVRFRF9XWF9I
RUFQKQotICAgICAgICBSRUxFQVNFX0FTU0VSVChvc190aHJlYWRfc2VsZl9yZXN0cmljdF9yd3hf
aXNfc3VwcG9ydGVkKCkpOwotICAgICAgICBvc190aHJlYWRfc2VsZl9yZXN0cmljdF9yd3hfdG9f
cngoKTsKLQotI2Vsc2UgLy8gbm90IEVOQUJMRShGQVNUX0pJVF9QRVJNSVNTSU9OUykgb3IgRU5B
QkxFKFNFUEFSQVRFRF9XWF9IRUFQKQotI2lmIEVOQUJMRShGQVNUX0pJVF9QRVJNSVNTSU9OUykK
LSAgICAgICAgaWYgKG9zX3RocmVhZF9zZWxmX3Jlc3RyaWN0X3J3eF9pc19zdXBwb3J0ZWQoKSkg
ewotICAgICAgICAgICAgZ19qc2NDb25maWcudXNlRmFzdFBlcm1pc2lvbnNKSVRDb3B5ID0gdHJ1
ZTsKLSAgICAgICAgICAgIG9zX3RocmVhZF9zZWxmX3Jlc3RyaWN0X3J3eF90b19yeCgpOwotICAg
ICAgICB9IGVsc2UKLSNlbmRpZgotICAgICAgICBpZiAoT3B0aW9uczo6dXNlU2VwYXJhdGVkV1hI
ZWFwKCkpIHsKKyAgICAgICAgYm9vbCBmYXN0SklUUGVybWlzc2lvbnNJc1N1cHBvcnRlZCA9IHVz
ZUZhc3RKSVRQZXJtaXNzaW9ucygpOworICAgICAgICBpZiAoZmFzdEpJVFBlcm1pc3Npb25zSXNT
dXBwb3J0ZWQpCisgICAgICAgICAgICB0aHJlYWRTZWxmUmVzdHJpY3RSV1hUb1JYKCk7CisKKyNp
ZiBFTkFCTEUoU0VQQVJBVEVEX1dYX0hFQVApCisgICAgICAgIGlmICghZmFzdEpJVFBlcm1pc3Np
b25zSXNTdXBwb3J0ZWQpIHsKICAgICAgICAgICAgIC8vIEZpcnN0IHBhZ2Ugb2Ygb3VyIEpJVCBh
bGxvY2F0aW9uIGlzIHJlc2VydmVkLgogICAgICAgICAgICAgQVNTRVJUKHJlc2VydmF0aW9uLnNp
emUgPj0gcGFnZVNpemUoKSAqIDIpOwogICAgICAgICAgICAgcmVzZXJ2YXRpb24uYmFzZSA9ICh2
b2lkKikoKHVpbnRwdHJfdCkocmVzZXJ2YXRpb24uYmFzZSkgKyBwYWdlU2l6ZSgpKTsKICAgICAg
ICAgICAgIHJlc2VydmF0aW9uLnNpemUgLT0gcGFnZVNpemUoKTsKICAgICAgICAgICAgIGluaXRp
YWxpemVTZXBhcmF0ZWRXWEhlYXBzKHJlc2VydmF0aW9uLnBhZ2VSZXNlcnZhdGlvbi5iYXNlKCks
IHBhZ2VTaXplKCksIHJlc2VydmF0aW9uLmJhc2UsIHJlc2VydmF0aW9uLnNpemUpOwogICAgICAg
ICB9Ci0jZW5kaWYgLy8gbm90IEVOQUJMRShGQVNUX0pJVF9QRVJNSVNTSU9OUykgb3IgRU5BQkxF
KFNFUEFSQVRFRF9XWF9IRUFQKQotICAgICAgICB2b2lkKiByZXNlcnZhdGlvbkVuZCA9IHJlaW50
ZXJwcmV0X2Nhc3Q8dWludDhfdCo+KHJlc2VydmF0aW9uLmJhc2UpICsgcmVzZXJ2YXRpb24uc2l6
ZTsKKyNlbmRpZgogCisgICAgICAgIHZvaWQqIHJlc2VydmF0aW9uRW5kID0gcmVpbnRlcnByZXRf
Y2FzdDx1aW50OF90Kj4ocmVzZXJ2YXRpb24uYmFzZSkgKyByZXNlcnZhdGlvbi5zaXplOwogICAg
ICAgICBnX2pzY0NvbmZpZy5zdGFydEV4ZWN1dGFibGVNZW1vcnkgPSB0YWdDb2RlUHRyPEV4ZWN1
dGFibGVNZW1vcnlQdHJUYWc+KHJlc2VydmF0aW9uLmJhc2UpOwogICAgICAgICBnX2pzY0NvbmZp
Zy5lbmRFeGVjdXRhYmxlTWVtb3J5ID0gdGFnQ29kZVB0cjxFeGVjdXRhYmxlTWVtb3J5UHRyVGFn
PihyZXNlcnZhdGlvbkVuZCk7CiAgICAgfQpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL2pp
dC9FeGVjdXRhYmxlQWxsb2NhdG9yLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRD
b3JlL2ppdC9FeGVjdXRhYmxlQWxsb2NhdG9yLmgJKHJldmlzaW9uIDI2MzM2NCkKKysrIFNvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9qaXQvRXhlY3V0YWJsZUFsbG9jYXRvci5oCSh3b3JraW5nIGNvcHkp
CkBAIC0yNSw2ICsyNSw3IEBACiAKICNwcmFnbWEgb25jZQogCisjaW5jbHVkZSAiRmFzdEpJVFBl
cm1pc3Npb25zLmgiCiAjaW5jbHVkZSAiSklUQ29tcGlsYXRpb25FZmZvcnQuaCIKICNpbmNsdWRl
ICJKU0NDb25maWcuaCIKICNpbmNsdWRlICJKU0NQdHJUYWcuaCIKQEAgLTQ2LDkgKzQ3LDYgQEAK
ICNpbmNsdWRlIDxzeXMvY2FjaGVjdGwuaD4KICNlbmRpZgogCi0jaWYgRU5BQkxFKEZBU1RfSklU
X1BFUk1JU1NJT05TKQotI2luY2x1ZGUgPG9zL3RocmVhZF9zZWxmX3Jlc3RyaWN0Lmg+IAotI2Vu
ZGlmCiAjZGVmaW5lIEpJVF9BTExPQ0FUT1JfTEFSR0VfQUxMT0NfU0laRSAocGFnZVNpemUoKSAq
IDQpCiAKICNkZWZpbmUgRVhFQ1VUQUJMRV9QT09MX1dSSVRBQkxFIHRydWUKQEAgLTExMywxNyAr
MTExLDYgQEAgSlNfRVhQT1JUX1BSSVZBVEUgYm9vbCBpc0pJVFBDKHZvaWQqIHBjKQogCiBKU19F
WFBPUlRfUFJJVkFURSB2b2lkIGR1bXBKSVRNZW1vcnkoY29uc3Qgdm9pZCosIGNvbnN0IHZvaWQq
LCBzaXplX3QpOwogCi1zdGF0aWMgQUxXQVlTX0lOTElORSBib29sIHVzZUZhc3RKSVRQZXJtaXNz
aW9ucygpCi17Ci0jaWYgRU5BQkxFKEZBU1RfSklUX1BFUk1JU1NJT05TKSAmJiAhRU5BQkxFKFNF
UEFSQVRFRF9XWF9IRUFQKQotICAgIHJldHVybiB0cnVlOwotI2VsaWYgRU5BQkxFKEZBU1RfSklU
X1BFUk1JU1NJT05TKQotICAgIHJldHVybiBnX2pzY0NvbmZpZy51c2VGYXN0UGVybWlzaW9uc0pJ
VENvcHk7Ci0jZWxzZQotICAgIHJldHVybiBmYWxzZTsKLSNlbmRpZgotfQotCiBzdGF0aWMgQUxX
QVlTX0lOTElORSB2b2lkKiBwZXJmb3JtSklUTWVtY3B5KHZvaWQgKmRzdCwgY29uc3Qgdm9pZCAq
c3JjLCBzaXplX3QgbikKIHsKICNpZiBDUFUoQVJNNjQpCkBAIC0xMzIsMjAgKzExOSwxOCBAQCBz
dGF0aWMgQUxXQVlTX0lOTElORSB2b2lkKiBwZXJmb3JtSklUTWVtCiAgICAgUkVMRUFTRV9BU1NF
UlQocm91bmRVcFRvTXVsdGlwbGVPZjxpbnN0cnVjdGlvblNpemU+KHNyYykgPT0gc3JjKTsKICNl
bmRpZgogICAgIGlmIChpc0pJVFBDKGRzdCkpIHsKKyAgICAgICAgUkVMRUFTRV9BU1NFUlQoIUdp
Z2FjYWdlOjpjb250YWlucyhzcmMpKTsKICAgICAgICAgUkVMRUFTRV9BU1NFUlQocmVpbnRlcnBy
ZXRfY2FzdDx1aW50OF90Kj4oZHN0KSArIG4gPD0gZW5kT2ZGaXhlZEV4ZWN1dGFibGVNZW1vcnlQ
b29sKCkpOwogCiAgICAgICAgIGlmIChVTkxJS0VMWShPcHRpb25zOjpkdW1wSklUTWVtb3J5UGF0
aCgpKSkKICAgICAgICAgICAgIGR1bXBKSVRNZW1vcnkoZHN0LCBzcmMsIG4pOwotI2lmIEVOQUJM
RShGQVNUX0pJVF9QRVJNSVNTSU9OUykKLSAgICAgICAgaWYgKHVzZUZhc3RKSVRQZXJtaXNzaW9u
cygpKQotICAgICAgICB7Ci0gICAgICAgICAgICBvc190aHJlYWRfc2VsZl9yZXN0cmljdF9yd3hf
dG9fcncoKTsKKworICAgICAgICBpZiAodXNlRmFzdEpJVFBlcm1pc3Npb25zKCkpIHsKKyAgICAg
ICAgICAgIHRocmVhZFNlbGZSZXN0cmljdFJXWFRvUlcoKTsKICAgICAgICAgICAgIG1lbWNweShk
c3QsIHNyYywgbik7Ci0gICAgICAgICAgICBSRUxFQVNFX0FTU0VSVCghR2lnYWNhZ2U6OmNvbnRh
aW5zKHNyYykpOwotICAgICAgICAgICAgb3NfdGhyZWFkX3NlbGZfcmVzdHJpY3Rfcnd4X3RvX3J4
KCk7CisgICAgICAgICAgICB0aHJlYWRTZWxmUmVzdHJpY3RSV1hUb1JYKCk7CiAgICAgICAgICAg
ICByZXR1cm4gZHN0OwogICAgICAgICB9Ci0jZW5kaWYgLy8gRU5BQkxFKEZBU1RfSklUX1BFUk1J
U1NJT05TKQogCiAjaWYgRU5BQkxFKFNFUEFSQVRFRF9XWF9IRUFQKQogICAgICAgICBpZiAoZ19q
c2NDb25maWcuaml0V3JpdGVTZXBhcmF0ZUhlYXBzKSB7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0NDb25maWcuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvSmF2YVNjcmlw
dENvcmUvcnVudGltZS9KU0NDb25maWcuaAkocmV2aXNpb24gMjYzMzY0KQorKysgU291cmNlL0ph
dmFTY3JpcHRDb3JlL3J1bnRpbWUvSlNDQ29uZmlnLmgJKHdvcmtpbmcgY29weSkKQEAgLTc5LDcg
Kzc5LDYgQEAgc3RydWN0IENvbmZpZyB7CiAKICNpZiBFTkFCTEUoU0VQQVJBVEVEX1dYX0hFQVAp
CiAgICAgSklUV3JpdGVTZXBhcmF0ZUhlYXBzRnVuY3Rpb24gaml0V3JpdGVTZXBhcmF0ZUhlYXBz
OwotICAgIGJvb2wgdXNlRmFzdFBlcm1pc2lvbnNKSVRDb3B5OwogI2VuZGlmCiAKICAgICBPcHRp
b25zU3RvcmFnZSBvcHRpb25zOwpJbmRleDogU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
T3B0aW9ucy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL0phdmFTY3JpcHRDb3JlL3J1bnRpbWUv
T3B0aW9ucy5jcHAJKHJldmlzaW9uIDI2MzM2NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9y
dW50aW1lL09wdGlvbnMuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00NzUsMTQgKzQ3NSw2IEBAIHZv
aWQgT3B0aW9uczo6cmVjb21wdXRlRGVwZW5kZW50T3B0aW9ucygKICAgICAgICAgT3B0aW9uczo6
bWF4aW11bUV2YWxDYWNoZWFibGVTb3VyY2VMZW5ndGgoKSA9IDE1MDAwMDsKICAgICAgICAgT3B0
aW9uczo6dXNlQ29uY3VycmVudEpJVCgpID0gZmFsc2U7CiAgICAgfQotI2lmIEVOQUJMRShTRVBB
UkFURURfV1hfSEVBUCkKLSAgICAvLyBPdmVycmlkZSBnbG9iYWxseSBmb3Igbm93LiBMb25nZXIg
dGVybSB3ZSdsbCBqdXN0IG1ha2UgdGhlIGRlZmF1bHQKLSAgICAvLyBiZSB0byBoYXZlIHRoaXMg
b3B0aW9uIGVuYWJsZWQsIGFuZCBoYXZlIHBsYXRmb3JtcyB0aGF0IGRvbid0IHN1cHBvcnQKLSAg
ICAvLyBpdCBqdXN0IHNpbGVudGx5IHVzZSBhIHNpbmdsZSBtYXBwaW5nLgotICAgIE9wdGlvbnM6
OnVzZVNlcGFyYXRlZFdYSGVhcCgpID0gdHJ1ZTsKLSNlbHNlCi0gICAgT3B0aW9uczo6dXNlU2Vw
YXJhdGVkV1hIZWFwKCkgPSBmYWxzZTsKLSNlbmRpZgogCiAgICAgaWYgKE9wdGlvbnM6OmFsd2F5
c1VzZVNoYWRvd0NoaWNrZW4oKSkKICAgICAgICAgT3B0aW9uczo6bWF4aW11bUlubGluaW5nRGVw
dGgoKSA9IDE7CkluZGV4OiBTb3VyY2UvSmF2YVNjcmlwdENvcmUvcnVudGltZS9PcHRpb25zTGlz
dC5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1lL09wdGlvbnNM
aXN0LmgJKHJldmlzaW9uIDI2MzM2NCkKKysrIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9ydW50aW1l
L09wdGlvbnNMaXN0LmgJKHdvcmtpbmcgY29weSkKQEAgLTk2LDcgKzk2LDYgQEAgY29uc3RleHBy
IGJvb2wgZW5hYmxlV2ViQXNzZW1ibHlTdHJlYW1pbgogICAgIFwKICAgICB2KEJvb2wsIGNyYXNo
SWZDYW50QWxsb2NhdGVKSVRNZW1vcnksIGZhbHNlLCBOb3JtYWwsIG51bGxwdHIpIFwKICAgICB2
KFVuc2lnbmVkLCBqaXRNZW1vcnlSZXNlcnZhdGlvblNpemUsIDAsIE5vcm1hbCwgIlNldCB0aGlz
IG51bWJlciB0byBjaGFuZ2UgdGhlIGV4ZWN1dGFibGUgYWxsb2NhdGlvbiBzaXplIGluIEV4ZWN1
dGFibGVBbGxvY2F0b3JGaXhlZFZNUG9vbC4gKEluIGJ5dGVzLikiKSBcCi0gICAgdihCb29sLCB1
c2VTZXBhcmF0ZWRXWEhlYXAsIGZhbHNlLCBOb3JtYWwsIG51bGxwdHIpIFwKICAgICBcCiAgICAg
dihCb29sLCBmb3JjZUNvZGVCbG9ja0xpdmVuZXNzLCBmYWxzZSwgTm9ybWFsLCBudWxscHRyKSBc
CiAgICAgdihCb29sLCBmb3JjZUlDRmFpbHVyZSwgZmFsc2UsIE5vcm1hbCwgbnVsbHB0cikgXApJ
bmRleDogU291cmNlL1dURi9DaGFuZ2VMb2cKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dURi9DaGFu
Z2VMb2cJKHJldmlzaW9uIDI2MzM2NCkKKysrIFNvdXJjZS9XVEYvQ2hhbmdlTG9nCSh3b3JraW5n
IGNvcHkpCkBAIC0xLDMgKzEsMTQgQEAKKzIwMjAtMDYtMjIgIFNhYW0gQmFyYXRpICA8c2JhcmF0
aUBhcHBsZS5jb20+CisKKyAgICAgICAgQWxsb3cgYnVpbGRpbmcgSmF2YVNjcmlwdENvcmUgTWFj
K2FybTY0IGluIHB1YmxpYyBTREsgYnVpbGQKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIxMzQ3MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgICogd3RmL1BsYXRmb3JtRW5hYmxlLmg6CisgICAgICAgICogd3Rm
L1BsYXRmb3JtRW5hYmxlQ29jb2EuaDoKKyAgICAgICAgKiB3dGYvUGxhdGZvcm1IYXZlLmg6CisK
IDIwMjAtMDYtMjIgIFRpbSBIb3J0b24gIDx0aW1vdGh5X2hvcnRvbkBhcHBsZS5jb20+CiAKICAg
ICAgICAgVXBkYXRlIG1hY09TIHZlcnNpb24gbWFjcm9zCkluZGV4OiBTb3VyY2UvV1RGL3d0Zi9Q
bGF0Zm9ybUVuYWJsZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL1BsYXRmb3JtRW5h
YmxlLmgJKHJldmlzaW9uIDI2MzM2NCkKKysrIFNvdXJjZS9XVEYvd3RmL1BsYXRmb3JtRW5hYmxl
LmgJKHdvcmtpbmcgY29weSkKQEAgLTI1NywxMCArMjU3LDYgQEAKICNkZWZpbmUgRU5BQkxFX0VO
Q1JZUFRFRF9NRURJQSAwCiAjZW5kaWYKIAotI2lmICFkZWZpbmVkKEVOQUJMRV9GQVNUX0pJVF9Q
RVJNSVNTSU9OUykKLSNkZWZpbmUgRU5BQkxFX0ZBU1RfSklUX1BFUk1JU1NJT05TIDAKLSNlbmRp
ZgotCiAjaWYgIWRlZmluZWQoRU5BQkxFX0ZJTFRFUlNfTEVWRUxfMikKICNkZWZpbmUgRU5BQkxF
X0ZJTFRFUlNfTEVWRUxfMiAwCiAjZW5kaWYKSW5kZXg6IFNvdXJjZS9XVEYvd3RmL1BsYXRmb3Jt
RW5hYmxlQ29jb2EuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUVuYWJs
ZUNvY29hLmgJKHJldmlzaW9uIDI2MzM2NCkKKysrIFNvdXJjZS9XVEYvd3RmL1BsYXRmb3JtRW5h
YmxlQ29jb2EuaAkod29ya2luZyBjb3B5KQpAQCAtMTU5LDExICsxNTksNiBAQAogI2RlZmluZSBF
TkFCTEVfRFJBR19TVVBQT1JUIDAKICNlbmRpZgogCi0vKiBGSVhNRTogVGhpcyBzaG91bGQgcHJv
YmFibHkgYmUgSEFWRV9GQVNUX0pJVF9QRVJNSVNTSU9OUyBhbmQgbWF5IGJlIGVudGlyZWx5IHVu
bmVjZXNzYXJ5IGR1ZSB0byBydW50aW1lIGNoZWNraW5nIHN1cHBvcnQgdmlhIG9zX3RocmVhZF9z
ZWxmX3Jlc3RyaWN0X3J3eF9pc19zdXBwb3J0ZWQoKS4gKi8KLSNpZiAhZGVmaW5lZChFTkFCTEVf
RkFTVF9KSVRfUEVSTUlTU0lPTlMpICYmIENQVShBUk02NCkgJiYgIShPUyhUVk9TKSB8fCBPUyhX
QVRDSE9TKSkgJiYgVVNFKEFQUExFX0lOVEVSTkFMX1NESykKLSNkZWZpbmUgRU5BQkxFX0ZBU1Rf
SklUX1BFUk1JU1NJT05TIDEKLSNlbmRpZgotCiAjaWYgIWRlZmluZWQoRU5BQkxFX0ZJTEVfUkVQ
TEFDRU1FTlQpCiAjZGVmaW5lIEVOQUJMRV9GSUxFX1JFUExBQ0VNRU5UIDEKICNlbmRpZgpAQCAt
MzY0LDcgKzM1OSw3IEBACiAjZGVmaW5lIEVOQUJMRV9TRUNfSVRFTV9TSElNIDEKICNlbmRpZgog
Ci0jaWYgIWRlZmluZWQoRU5BQkxFX1NFUEFSQVRFRF9XWF9IRUFQKSAmJiBQTEFURk9STShJT1Nf
RkFNSUxZKSAmJiBDUFUoQVJNNjQpICYmICghRU5BQkxFKEZBU1RfSklUX1BFUk1JU1NJT05TKSB8
fCAhQ1BVKEFSTTY0RSkpCisjaWYgIWRlZmluZWQoRU5BQkxFX1NFUEFSQVRFRF9XWF9IRUFQKSAm
JiBQTEFURk9STShJT1NfRkFNSUxZKSAmJiBDUFUoQVJNNjQpICYmICFDUFUoQVJNNjRFKQogI2Rl
ZmluZSBFTkFCTEVfU0VQQVJBVEVEX1dYX0hFQVAgMQogI2VuZGlmCiAKSW5kZXg6IFNvdXJjZS9X
VEYvd3RmL1BsYXRmb3JtSGF2ZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJjZS9XVEYvd3RmL1BsYXRm
b3JtSGF2ZS5oCShyZXZpc2lvbiAyNjMzNjQpCisrKyBTb3VyY2UvV1RGL3d0Zi9QbGF0Zm9ybUhh
dmUuaAkod29ya2luZyBjb3B5KQpAQCAtNjQ5LDMgKzY0OSwxMCBAQAogI2lmIFBMQVRGT1JNKElP
U19GQU1JTFkpICYmICFQTEFURk9STShNQUNDQVRBTFlTVCkKICNkZWZpbmUgSEFWRV9GUk9OVEJP
QVJEX1NZU1RFTV9BUFBfU0VSVklDRVMgMQogI2VuZGlmCisKKyNpZiAoKChQTEFURk9STShJT1Mp
IHx8IFBMQVRGT1JNKE1BQ0NBVEFMWVNUKSkgJiYgX19JUEhPTkVfT1NfVkVSU0lPTl9NSU5fUkVR
VUlSRUQgPj0gMTQwMDAwKSBcCisgICAgfHwgKFBMQVRGT1JNKFdBVENIT1MpICYmIF9fV0FUQ0hf
T1NfVkVSU0lPTl9NSU5fUkVRVUlSRUQgPj0gNzAwMDApIFwKKyAgICB8fCAoUExBVEZPUk0oQVBQ
TEVUVikgJiYgX19UVl9PU19WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxNDAwMDApIFwKKyAgICB8
fCAoUExBVEZPUk0oTUFDKSAmJiBfX01BQ19PU19YX1ZFUlNJT05fTUlOX1JFUVVJUkVEID49IDEx
MDAwMCkpCisjZGVmaW5lIEhBVkVfUFRIUkVBRF9KSVRfUEVSTUlTU0lPTlNfQVBJIDEKKyNlbmRp
ZgpJbmRleDogU291cmNlL2NtYWtlL09wdGlvbnNGVFcuY21ha2UKPT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291
cmNlL2NtYWtlL09wdGlvbnNGVFcuY21ha2UJKHJldmlzaW9uIDI2MzM2NCkKKysrIFNvdXJjZS9j
bWFrZS9PcHRpb25zRlRXLmNtYWtlCSh3b3JraW5nIGNvcHkpCkBAIC03Niw3ICs3Niw2IEBAIFdF
QktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV8KIFdFQktJVF9PUFRJT05fREVG
QVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9DU1NfU0VMRUNUT1JTX0xFVkVMNCBQUklWQVRFIE9OKQog
V0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX0NVUlNPUl9WSVNJQklMSVRZ
IFBSSVZBVEUgT04pCiBXRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfRFJB
R19TVVBQT1JUIFBSSVZBVEUgT04pCi1XRUJLSVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShF
TkFCTEVfRkFTVF9KSVRfUEVSTUlTU0lPTlMgUFJJVkFURSBPRkYpCiBXRUJLSVRfT1BUSU9OX0RF
RkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfRklMVEVSU19MRVZFTF8yIFBSSVZBVEUgT04pCiBXRUJL
SVRfT1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfRlRMX0pJVCBQUklWQVRFIE9GRikK
IFdFQktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9GVFBESVIgUFJJVkFURSBP
TikKSW5kZXg6IFNvdXJjZS9jbWFrZS9XZWJLaXRGZWF0dXJlcy5jbWFrZQo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBTb3VyY2UvY21ha2UvV2ViS2l0RmVhdHVyZXMuY21ha2UJKHJldmlzaW9uIDI2MzM2NCkKKysr
IFNvdXJjZS9jbWFrZS9XZWJLaXRGZWF0dXJlcy5jbWFrZQkod29ya2luZyBjb3B5KQpAQCAtMTM2
LDcgKzEzNiw2IEBAIG1hY3JvKFdFQktJVF9PUFRJT05fQkVHSU4pCiAgICAgV0VCS0lUX09QVElP
Tl9ERUZJTkUoRU5BQkxFX0RSQUdfU1VQUE9SVCAiVG9nZ2xlIHN1cHBvcnQgb2YgZHJhZyBhY3Rp
b25zIChpbmNsdWRpbmcgc2VsZWN0aW9uIG9mIHRleHQgd2l0aCBtb3VzZSkiIFBSSVZBVEUgT0ZG
KQogICAgIFdFQktJVF9PUFRJT05fREVGSU5FKEVOQUJMRV9FTkNSWVBURURfTUVESUEgIlRvZ2ds
ZSBFTUUgVjMgc3VwcG9ydCIgUFJJVkFURSBPRkYpCiAgICAgV0VCS0lUX09QVElPTl9ERUZJTkUo
RU5BQkxFX0VYUEVSSU1FTlRBTF9GRUFUVVJFUyAiRW5hYmxlIGV4cGVyaW1lbnRhbCBmZWF0dXJl
cyIgUFJJVkFURSBPRkYpCi0gICAgV0VCS0lUX09QVElPTl9ERUZJTkUoRU5BQkxFX0ZBU1RfSklU
X1BFUk1JU1NJT05TICJUb2dnbGUgZmFzdCBKSVQgcGVybWlzc2lvbnMgc3VwcG9ydCIgUFJJVkFU
RSBPRkYpCiAgICAgV0VCS0lUX09QVElPTl9ERUZJTkUoRU5BQkxFX0ZJTFRFUlNfTEVWRUxfMiAi
VG9nZ2xlIEZpbHRlcnMgTW9kdWxlIExldmVsIDIiIFBSSVZBVEUgT0ZGKQogICAgIFdFQktJVF9P
UFRJT05fREVGSU5FKEVOQUJMRV9GVExfSklUICJUb2dnbGUgRlRMIEpJVCBzdXBwb3J0IiBQUklW
QVRFICR7RU5BQkxFX0ZUTF9ERUZBVUxUfSkKICAgICBXRUJLSVRfT1BUSU9OX0RFRklORShFTkFC
TEVfRlRQRElSICJUb2dnbGUgRlRQIERpcmVjdG9yeSBzdXBwb3J0IiBQUklWQVRFIE9OKQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>