<?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>221206</bug_id>
          
          <creation_ts>2021-02-01 07:13:29 -0800</creation_ts>
          <short_desc>[SOUP] Stop using SoupBuffer in preparation for libsoup3</short_desc>
          <delta_ts>2021-02-02 00:52:51 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKitGTK</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>Gtk</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>220508</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Carlos Garcia Campos">cgarcia</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>annulen</cc>
    
    <cc>aperez</cc>
    
    <cc>berto</cc>
    
    <cc>bugs-noreply</cc>
    
    <cc>cdumez</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>gustavo</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sergio</cc>
    
    <cc>svillar</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1724232</commentid>
    <comment_count>0</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2021-02-01 07:13:29 -0800</bug_when>
    <thetext>It&apos;s gone in libsoup3, we can just use GBytes instead.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1724234</commentid>
    <comment_count>1</comment_count>
      <attachid>418870</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2021-02-01 07:16:48 -0800</bug_when>
    <thetext>Created attachment 418870
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1724242</commentid>
    <comment_count>2</comment_count>
      <attachid>418874</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2021-02-01 07:56:22 -0800</bug_when>
    <thetext>Created attachment 418874
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1724243</commentid>
    <comment_count>3</comment_count>
      <attachid>418874</attachid>
    <who name="Sergio Villar Senin">svillar</who>
    <bug_when>2021-02-01 08:03:18 -0800</bug_when>
    <thetext>Comment on attachment 418874
Patch

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

&gt; Source/WebCore/platform/network/soup/ResourceRequestSoup.cpp:69
&gt; +        SoupBuffer* soupBuffer = soup_buffer_new_with_owner(g_bytes_get_data(data, nullptr),

auto* soupBuffer ?

Also I guess this would be migrated later right? Consider adding a comment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1724253</commentid>
    <comment_count>4</comment_count>
      <attachid>418874</attachid>
    <who name="Adrian Perez">aperez</who>
    <bug_when>2021-02-01 08:19:41 -0800</bug_when>
    <thetext>Comment on attachment 418874
Patch

LGTM as well

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

&gt;&gt; Source/WebCore/platform/network/soup/ResourceRequestSoup.cpp:69
&gt;&gt; +        SoupBuffer* soupBuffer = soup_buffer_new_with_owner(g_bytes_get_data(data, nullptr),
&gt; 
&gt; auto* soupBuffer ?
&gt; 
&gt; Also I guess this would be migrated later right? Consider adding a comment.

I assume that there will be later a patch adding the support to actually
use libsoup3 inside “#if SOUP_CHECK_VERSION(2, 91, 0)” guards (or similar) and
this version of the code will be in the “#else” arm of the conditional =]</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1724559</commentid>
    <comment_count>5</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2021-02-02 00:51:01 -0800</bug_when>
    <thetext>(In reply to Adrian Perez from comment #4)
&gt; Comment on attachment 418874 [details]
&gt; Patch
&gt; 
&gt; LGTM as well
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=418874&amp;action=review
&gt; 
&gt; &gt;&gt; Source/WebCore/platform/network/soup/ResourceRequestSoup.cpp:69
&gt; &gt;&gt; +        SoupBuffer* soupBuffer = soup_buffer_new_with_owner(g_bytes_get_data(data, nullptr),
&gt; &gt; 
&gt; &gt; auto* soupBuffer ?
&gt; &gt; 
&gt; &gt; Also I guess this would be migrated later right? Consider adding a comment.
&gt; 
&gt; I assume that there will be later a patch adding the support to actually
&gt; use libsoup3 inside “#if SOUP_CHECK_VERSION(2, 91, 0)” guards (or similar)
&gt; and
&gt; this version of the code will be in the “#else” arm of the conditional =]

Exactly, it will be kept in the libsoup2 branch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1724560</commentid>
    <comment_count>6</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2021-02-02 00:52:51 -0800</bug_when>
    <thetext>Committed r272196: &lt;https://trac.webkit.org/changeset/272196&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>418870</attachid>
            <date>2021-02-01 07:16:48 -0800</date>
            <delta_ts>2021-02-01 07:56:22 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>wk2-no-soup-buffer.diff</filename>
            <type>text/plain</type>
            <size>36206</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA0ZDM3MDkxNTJjMWYuLjQ5ZjhjMzA4MWU3NiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDI1IEBACisyMDIxLTAyLTAxICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFA
aWdhbGlhLmNvbT4KKworICAgICAgICBbU09VUF0gU3RvcCB1c2luZyBTb3VwQnVmZmVyIGluIHBy
ZXBhcmF0aW9uIGZvciBsaWJzb3VwMworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjIxMjA2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgUmVtb3ZlIHVzZSBvZiBTb3VwQnVmZmVyIGZyb20gcGxhdGZvcm0gc2lu
Y2UgaXQncyBub3cgdW51c2VkLgorCisgICAgICAgICogcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6OmRhdGEgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudDo6c2l6ZSBj
b25zdCk6CisgICAgICAgICogcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmg6CisgICAgICAgICogcGxh
dGZvcm0vU291cC5jbWFrZToKKyAgICAgICAgKiBwbGF0Zm9ybS9Tb3VyY2VzU291cC50eHQ6Cisg
ICAgICAgICogcGxhdGZvcm0vbmV0d29yay9zb3VwL0dSZWZQdHJTb3VwLmNwcDogUmVtb3ZlZC4K
KyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvR1JlZlB0clNvdXAuaDogUmVtb3ZlZC4K
KyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvR1VuaXF1ZVB0clNvdXAuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VSZXF1ZXN0U291cC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Q6OnVwZGF0ZVNvdXBNZXNzYWdlQm9keSBjb25z
dCk6CisgICAgICAgICogcGxhdGZvcm0vc291cC9TaGFyZWRCdWZmZXJTb3VwLmNwcDogUmVtb3Zl
ZC4KKwogMjAyMS0wMi0wMSAgWGFiaWVyIFJvZHJpZ3VleiBDYWx2YXIgIDxjYWx2YXJpc0BpZ2Fs
aWEuY29tPgogCiAgICAgICAgIFtHU3RyZWFtZXJdW0VNRV1bVGh1bmRlcl0gQWRkIHZpZGVvL3gt
dnA5IGFzIHN1cHBvcnRlZCBmb3IgY2VuYyBhbmQgY2JjcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1NoYXJlZEJ1ZmZlci5jcHAKaW5kZXggNjY4YWU1NDdiOGUzLi41MWJjNGFhOTgzYzggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcApAQCAtMjM2LDkgKzIzNiw2IEBA
IGNvbnN0IGNoYXIqIFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6OmRhdGEoKSBjb25zdAogI2lm
IFVTRShDRikKICAgICAgICAgW10oY29uc3QgUmV0YWluUHRyPENGRGF0YVJlZj4mIGRhdGEpIHsg
cmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KENGRGF0YUdldEJ5dGVQdHIoZGF0
YS5nZXQoKSkpOyB9LAogI2VuZGlmCi0jaWYgVVNFKFNPVVApCi0gICAgICAgIFtdKGNvbnN0IEdV
bmlxdWVQdHI8U291cEJ1ZmZlcj4mIGRhdGEpIHsgcmV0dXJuIGRhdGEtPmRhdGE7IH0sCi0jZW5k
aWYKICNpZiBVU0UoR0xJQikKICAgICAgICAgW10oY29uc3QgR1JlZlB0cjxHQnl0ZXM+JiBkYXRh
KSB7IHJldHVybiByZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihnX2J5dGVzX2dldF9kYXRh
KGRhdGEuZ2V0KCksIG51bGxwdHIpKTsgfSwKICNlbmRpZgpAQCAtMzE3LDkgKzMxNCw2IEBAIHNp
emVfdCBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50OjpzaXplKCkgY29uc3QKICNpZiBVU0UoQ0Yp
CiAgICAgICAgIFtdKGNvbnN0IFJldGFpblB0cjxDRkRhdGFSZWY+JiBkYXRhKSB7IHJldHVybiBD
RkRhdGFHZXRMZW5ndGgoZGF0YS5nZXQoKSk7IH0sCiAjZW5kaWYKLSNpZiBVU0UoU09VUCkKLSAg
ICAgICAgW10oY29uc3QgR1VuaXF1ZVB0cjxTb3VwQnVmZmVyPiYgZGF0YSkgeyByZXR1cm4gc3Rh
dGljX2Nhc3Q8c2l6ZV90PihkYXRhLT5sZW5ndGgpOyB9LAotI2VuZGlmCiAjaWYgVVNFKEdMSUIp
CiAgICAgICAgIFtdKGNvbnN0IEdSZWZQdHI8R0J5dGVzPiYgZGF0YSkgeyByZXR1cm4gZ19ieXRl
c19nZXRfc2l6ZShkYXRhLmdldCgpKTsgfSwKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9T
aGFyZWRCdWZmZXIuaAppbmRleCA2OTcwMzVlZmNmOTcuLjIzYmY1YThlZGI0YyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmgKQEAgLTM5LDEwICszOSw2IEBACiAjaW5jbHVk
ZSA8d3RmL1JldGFpblB0ci5oPgogI2VuZGlmCiAKLSNpZiBVU0UoU09VUCkKLSNpbmNsdWRlICJH
VW5pcXVlUHRyU291cC5oIgotI2VuZGlmCi0KICNpZiBVU0UoR0xJQikKICNpbmNsdWRlIDx3dGYv
Z2xpYi9HUmVmUHRyLmg+CiB0eXBlZGVmIHN0cnVjdCBfR0J5dGVzIEdCeXRlczsKQEAgLTg5LDEx
ICs4NSw2IEBAIHB1YmxpYzoKICAgICB2b2lkIGFwcGVuZChDRkRhdGFSZWYpOwogI2VuZGlmCiAK
LSNpZiBVU0UoU09VUCkKLSAgICBHVW5pcXVlUHRyPFNvdXBCdWZmZXI+IGNyZWF0ZVNvdXBCdWZm
ZXIodW5zaWduZWQgb2Zmc2V0ID0gMCwgdW5zaWduZWQgc2l6ZSA9IDApOwotICAgIHN0YXRpYyBS
ZWY8U2hhcmVkQnVmZmVyPiB3cmFwU291cEJ1ZmZlcihTb3VwQnVmZmVyKik7Ci0jZW5kaWYKLQog
I2lmIFVTRShHTElCKQogICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoR0J5dGVz
Kik7CiAgICAgR1JlZlB0cjxHQnl0ZXM+IGNyZWF0ZUdCeXRlcygpIGNvbnN0OwpAQCAtMTQwLDkg
KzEzMSw2IEBAIHB1YmxpYzoKICNpZiBVU0UoQ0YpCiAgICAgICAgIHN0YXRpYyBSZWY8RGF0YVNl
Z21lbnQ+IGNyZWF0ZShSZXRhaW5QdHI8Q0ZEYXRhUmVmPiYmIGRhdGEpIHsgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgRGF0YVNlZ21lbnQoV1RGTW92ZShkYXRhKSkpOyB9CiAjZW5kaWYKLSNpZiBVU0Uo
U09VUCkKLSAgICAgICAgc3RhdGljIFJlZjxEYXRhU2VnbWVudD4gY3JlYXRlKEdVbmlxdWVQdHI8
U291cEJ1ZmZlcj4mJiBkYXRhKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFTZWdtZW50KFdU
Rk1vdmUoZGF0YSkpKTsgfQotI2VuZGlmCiAjaWYgVVNFKEdMSUIpCiAgICAgICAgIHN0YXRpYyBS
ZWY8RGF0YVNlZ21lbnQ+IGNyZWF0ZShHUmVmUHRyPEdCeXRlcz4mJiBkYXRhKSB7IHJldHVybiBh
ZG9wdFJlZigqbmV3IERhdGFTZWdtZW50KFdURk1vdmUoZGF0YSkpKTsgfQogI2VuZGlmCkBAIC0x
NjIsMTAgKzE1MCw2IEBAIHB1YmxpYzoKICAgICAgICAgRGF0YVNlZ21lbnQoUmV0YWluUHRyPENG
RGF0YVJlZj4mJiBkYXRhKQogICAgICAgICAgICAgOiBtX2ltbXV0YWJsZURhdGEoV1RGTW92ZShk
YXRhKSkgeyB9CiAjZW5kaWYKLSNpZiBVU0UoU09VUCkKLSAgICAgICAgRGF0YVNlZ21lbnQoR1Vu
aXF1ZVB0cjxTb3VwQnVmZmVyPiYmIGRhdGEpCi0gICAgICAgICAgICA6IG1faW1tdXRhYmxlRGF0
YShXVEZNb3ZlKGRhdGEpKSB7IH0KLSNlbmRpZgogI2lmIFVTRShHTElCKQogICAgICAgICBEYXRh
U2VnbWVudChHUmVmUHRyPEdCeXRlcz4mJiBkYXRhKQogICAgICAgICAgICAgOiBtX2ltbXV0YWJs
ZURhdGEoV1RGTW92ZShkYXRhKSkgeyB9CkBAIC0xODEsOSArMTY1LDYgQEAgcHVibGljOgogI2lm
IFVTRShDRikKICAgICAgICAgICAgIFJldGFpblB0cjxDRkRhdGFSZWY+LAogI2VuZGlmCi0jaWYg
VVNFKFNPVVApCi0gICAgICAgICAgICBHVW5pcXVlUHRyPFNvdXBCdWZmZXI+LAotI2VuZGlmCiAj
aWYgVVNFKEdMSUIpCiAgICAgICAgICAgICBHUmVmUHRyPEdCeXRlcz4sCiAjZW5kaWYKQEAgLTIy
Myw5ICsyMDQsNiBAQCBwcml2YXRlOgogI2lmIFVTRShDRikKICAgICBleHBsaWNpdCBTaGFyZWRC
dWZmZXIoQ0ZEYXRhUmVmKTsKICNlbmRpZgotI2lmIFVTRShTT1VQKQotICAgIGV4cGxpY2l0IFNo
YXJlZEJ1ZmZlcihTb3VwQnVmZmVyKik7Ci0jZW5kaWYKICNpZiBVU0UoR0xJQikKICAgICBleHBs
aWNpdCBTaGFyZWRCdWZmZXIoR0J5dGVzKik7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1NvdXAuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Tb3Vw
LmNtYWtlCmluZGV4IGQ3ZDg5MmJkYjA3Yi4uMDAxNTgxM2M5MWMyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9Tb3VwLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1NvdXAuY21ha2UKQEAgLTksNyArOSw2IEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVfVU5JRklF
RF9TT1VSQ0VfTElTVF9GSUxFUwogbGlzdChBUFBFTkQgV2ViQ29yZV9QUklWQVRFX0ZSQU1FV09S
S19IRUFERVJTCiAgICAgcGxhdGZvcm0vbmV0d29yay9zb3VwL0F1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlLmgKICAgICBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvQ2VydGlmaWNhdGVJbmZvLmgKLSAgICBw
bGF0Zm9ybS9uZXR3b3JrL3NvdXAvR1JlZlB0clNvdXAuaAogICAgIHBsYXRmb3JtL25ldHdvcmsv
c291cC9HVW5pcXVlUHRyU291cC5oCiAgICAgcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNl
RXJyb3IuaAogICAgIHBsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZVJlcXVlc3QuaApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU291cmNlc1NvdXAudHh0IGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vU291cmNlc1NvdXAudHh0CmluZGV4IDg3ZGMxNjc3NWYxMi4uOWQ4
YzhiNmYzMmY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Tb3VyY2VzU291
cC50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU291cmNlc1NvdXAudHh0CkBAIC0y
Niw3ICsyNiw2IEBAIHBsYXRmb3JtL25ldHdvcmsvc291cC9DZXJ0aWZpY2F0ZUluZm9Tb3VwLmNw
cAogcGxhdGZvcm0vbmV0d29yay9zb3VwL0Nvb2tpZVNvdXAuY3BwCiBwbGF0Zm9ybS9uZXR3b3Jr
L3NvdXAvQ29va2llU3RvcmFnZVNvdXAuY3BwCiBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvQ3JlZGVu
dGlhbFN0b3JhZ2VTb3VwLmNwcAotcGxhdGZvcm0vbmV0d29yay9zb3VwL0dSZWZQdHJTb3VwLmNw
cAogcGxhdGZvcm0vbmV0d29yay9zb3VwL05ldHdvcmtTdG9yYWdlU2Vzc2lvblNvdXAuY3BwCiBw
bGF0Zm9ybS9uZXR3b3JrL3NvdXAvUHJveHlTZXJ2ZXJTb3VwLmNwcAogcGxhdGZvcm0vbmV0d29y
ay9zb3VwL1Jlc291cmNlRXJyb3JTb3VwLmNwcApAQCAtMzksNCArMzgsMyBAQCBwbGF0Zm9ybS9u
ZXR3b3JrL3NvdXAvVVJMU291cC5jcHAKIHBsYXRmb3JtL25ldHdvcmsvc291cC9XZWJLaXRGb3Jt
RGF0YUlucHV0U3RyZWFtLmNwcCBAbm8tdW5pZnkKIAogcGxhdGZvcm0vc291cC9QdWJsaWNTdWZm
aXhTb3VwLmNwcAotcGxhdGZvcm0vc291cC9TaGFyZWRCdWZmZXJTb3VwLmNwcApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL0dSZWZQdHJTb3VwLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9HUmVmUHRyU291cC5jcHAKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwOWFlYzE2OGY0NS4uMDAwMDAwMDAwMDAwCi0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9HUmVmUHRyU291cC5jcHAK
KysrIC9kZXYvbnVsbApAQCAtMSwzNSArMCwwIEBACi0vKgotICogIENvcHlyaWdodCAoQykgMjAx
NSBJZ2FsaWEgUy5MLgotICoKLSAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91
IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJt
cyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwotICogIExpY2Vuc2UgYXMgcHVibGlz
aGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogIHZlcnNpb24g
MiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4K
LSAqCi0gKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQg
d2lsbCBiZSB1c2VmdWwsCi0gKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2
ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICogIExlc3NlciBHZW5l
cmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICogIFlvdSBzaG91bGQg
aGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKLSAq
ICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBG
cmVlIFNvZnR3YXJlCi0gKiAgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBG
aWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMwMSAgVVNBCi0gKi8KLQotI2luY2x1ZGUg
ImNvbmZpZy5oIgotI2luY2x1ZGUgIkdSZWZQdHJTb3VwLmgiCi0KLW5hbWVzcGFjZSBXVEYgewot
Ci10ZW1wbGF0ZSA8PiBTb3VwQnVmZmVyKiByZWZHUHRyKFNvdXBCdWZmZXIqIHB0cikKLXsKLSAg
ICByZXR1cm4gcHRyID8gc291cF9idWZmZXJfY29weShwdHIpIDogbnVsbHB0cjsKLX0KLQotdGVt
cGxhdGUgPD4gdm9pZCBkZXJlZkdQdHIoU291cEJ1ZmZlciogcHRyKQotewotICAgIGlmIChwdHIp
Ci0gICAgICAgIHNvdXBfYnVmZmVyX2ZyZWUocHRyKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV1RG
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvR1JlZlB0
clNvdXAuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9HUmVmUHRyU291
cC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhNTk4OGUyZmI5N2QuLjAwMDAwMDAw
MDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvR1JlZlB0clNv
dXAuaAorKysgL2Rldi9udWxsCkBAIC0xLDM3ICswLDAgQEAKLS8qCi0gKiAgQ29weXJpZ2h0IChD
KSAyMDE1IElnYWxpYSBTLkwuCi0gKgotICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJl
OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqICBtb2RpZnkgaXQgdW5kZXIgdGhl
IHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICogIExpY2Vuc2UgYXMg
cHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogIHZl
cnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVy
c2lvbi4KLSAqCi0gKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRo
YXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRo
b3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqICBNRVJDSEFOVEFCSUxJVFkgb3Ig
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICogIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqICBZb3Ug
c2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYyBMaWNlbnNlCi0gKiAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBD
T1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAqICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu
ZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICogIEJvc3Rv
biwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICovCi0KLSNpZm5kZWYgR1JlZlB0clNvdXBfaAotI2Rl
ZmluZSBHUmVmUHRyU291cF9oCi0KLSNpZiBVU0UoU09VUCkKLQotI2luY2x1ZGUgPGxpYnNvdXAv
c291cC5oPgotI2luY2x1ZGUgPHd0Zi9nbGliL0dSZWZQdHIuaD4KLQotbmFtZXNwYWNlIFdURiB7
Ci0KLXRlbXBsYXRlIDw+IFNvdXBCdWZmZXIqIHJlZkdQdHIoU291cEJ1ZmZlciopOwotdGVtcGxh
dGUgPD4gdm9pZCBkZXJlZkdQdHIoU291cEJ1ZmZlciopOwotCi19IC8vIG5hbWVzcGFjZSBXVEYK
LQotI2VuZGlmIC8vIFVTRShTT1VQKQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9HVW5pcXVlUHRyU291cC5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL0dVbmlxdWVQdHJTb3VwLmgKaW5kZXggZjU5ZjJjODc3
OTg5Li5hZmJlODQ3MTIxYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvc291cC9HVW5pcXVlUHRyU291cC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvc291cC9HVW5pcXVlUHRyU291cC5oCkBAIC0zMSw3ICszMSw2IEBAIG5hbWVzcGFj
ZSBXVEYgewogV1RGX0RFRklORV9HUFRSX0RFTEVURVIoU291cFVSSSwgc291cF91cmlfZnJlZSkK
IFdURl9ERUZJTkVfR1BUUl9ERUxFVEVSKFNvdXBDb29raWUsIHNvdXBfY29va2llX2ZyZWUpCiBX
VEZfREVGSU5FX0dQVFJfREVMRVRFUihTb3VwTWVzc2FnZUhlYWRlcnMsIHNvdXBfbWVzc2FnZV9o
ZWFkZXJzX2ZyZWUpCi1XVEZfREVGSU5FX0dQVFJfREVMRVRFUihTb3VwQnVmZmVyLCBzb3VwX2J1
ZmZlcl9mcmVlKQogI2lmIFNPVVBfQ0hFQ0tfVkVSU0lPTigyLCA2NywgMSkKIFdURl9ERUZJTkVf
R1BUUl9ERUxFVEVSKFNvdXBIU1RTUG9saWN5LCBzb3VwX2hzdHNfcG9saWN5X2ZyZWUpCiAjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNv
dXJjZVJlcXVlc3RTb3VwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291
cC9SZXNvdXJjZVJlcXVlc3RTb3VwLmNwcAppbmRleCBjNzAxYmNkOWFmYmQuLjMxZGU0N2Y5YTRk
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291
cmNlUmVxdWVzdFNvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
c291cC9SZXNvdXJjZVJlcXVlc3RTb3VwLmNwcApAQCAtNjYsOSArNjYsMTAgQEAgdm9pZCBSZXNv
dXJjZVJlcXVlc3Q6OnVwZGF0ZVNvdXBNZXNzYWdlQm9keShTb3VwTWVzc2FnZSogc291cE1lc3Nh
Z2UsIEJsb2JSZWdpc3QKICAgICBHUmVmUHRyPEdJbnB1dFN0cmVhbT4gc3RyZWFtID0gd2Via2l0
Rm9ybURhdGFJbnB1dFN0cmVhbU5ldyhXVEZNb3ZlKHJlc29sdmVkRm9ybURhdGEpKTsKICAgICBp
ZiAoR0J5dGVzKiBkYXRhID0gd2Via2l0Rm9ybURhdGFJbnB1dFN0cmVhbVJlYWRBbGwoV0VCS0lU
X0ZPUk1fREFUQV9JTlBVVF9TVFJFQU0oc3RyZWFtLmdldCgpKSkpIHsKICAgICAgICAgc291cF9t
ZXNzYWdlX2JvZHlfc2V0X2FjY3VtdWxhdGUoc291cE1lc3NhZ2UtPnJlcXVlc3RfYm9keSwgRkFM
U0UpOwotICAgICAgICBHVW5pcXVlUHRyPFNvdXBCdWZmZXI+IHNvdXBCdWZmZXIoc291cF9idWZm
ZXJfbmV3X3dpdGhfb3duZXIoZ19ieXRlc19nZXRfZGF0YShkYXRhLCBudWxscHRyKSwKLSAgICAg
ICAgICAgIGdfYnl0ZXNfZ2V0X3NpemUoZGF0YSksIGRhdGEsIHJlaW50ZXJwcmV0X2Nhc3Q8R0Rl
c3Ryb3lOb3RpZnk+KGdfYnl0ZXNfdW5yZWYpKSk7Ci0gICAgICAgIHNvdXBfbWVzc2FnZV9ib2R5
X2FwcGVuZF9idWZmZXIoc291cE1lc3NhZ2UtPnJlcXVlc3RfYm9keSwgc291cEJ1ZmZlci5nZXQo
KSk7CisgICAgICAgIFNvdXBCdWZmZXIqIHNvdXBCdWZmZXIgPSBzb3VwX2J1ZmZlcl9uZXdfd2l0
aF9vd25lcihnX2J5dGVzX2dldF9kYXRhKGRhdGEsIG51bGxwdHIpLAorICAgICAgICAgICAgZ19i
eXRlc19nZXRfc2l6ZShkYXRhKSwgZGF0YSwgcmVpbnRlcnByZXRfY2FzdDxHRGVzdHJveU5vdGlm
eT4oZ19ieXRlc191bnJlZikpOworICAgICAgICBzb3VwX21lc3NhZ2VfYm9keV9hcHBlbmRfYnVm
ZmVyKHNvdXBNZXNzYWdlLT5yZXF1ZXN0X2JvZHksIHNvdXBCdWZmZXIpOworICAgICAgICBzb3Vw
X2J1ZmZlcl9mcmVlKHNvdXBCdWZmZXIpOwogICAgIH0KIAogICAgIEFTU0VSVChsZW5ndGggPT0g
c3RhdGljX2Nhc3Q8dWludDY0X3Q+KHNvdXBNZXNzYWdlLT5yZXF1ZXN0X2JvZHktPmxlbmd0aCkp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc291cC9TaGFyZWRCdWZmZXJT
b3VwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NvdXAvU2hhcmVkQnVmZmVyU291cC5j
cHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE3YWQyNDc1ZTkwZi4uMDAwMDAwMDAw
MDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NvdXAvU2hhcmVkQnVmZmVyU291cC5j
cHAKKysrIC9kZXYvbnVsbApAQCAtMSw1MiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDEzIENvbXBhbnkgMTAwIEluYy4KLSAqCi0gKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdh
cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogIG1vZGlmeSBpdCB1bmRlciB0
aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKLSAqICBMaWNlbnNlIGFz
IHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAqICB2
ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZl
cnNpb24uCi0gKgotICogIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0
aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0
aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiAgTUVSQ0hBTlRBQklMSVRZIG9y
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqICBMZXNz
ZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqICBZb3Ug
c2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVi
bGljCi0gKiAgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0
byB0aGUgRnJlZSBTb2Z0d2FyZQotICogIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0
cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEgIFVTQQotICovCi0KLSNp
bmNsdWRlICJjb25maWcuaCIKLQotI2lmIFVTRShTT1VQKQotCi0jaW5jbHVkZSAiU2hhcmVkQnVm
ZmVyLmgiCi0KLSNpbmNsdWRlIDxsaWJzb3VwL3NvdXAuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUg
ewotCi1TaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihTb3VwQnVmZmVyKiBzb3VwQnVmZmVyKQot
ewotICAgIEFTU0VSVChzb3VwQnVmZmVyKTsKLSAgICBtX3NpemUgPSBzb3VwQnVmZmVyLT5sZW5n
dGg7Ci0gICAgbV9zZWdtZW50cy5hcHBlbmQoezAsIERhdGFTZWdtZW50OjpjcmVhdGUoR1VuaXF1
ZVB0cjxTb3VwQnVmZmVyPihzb3VwQnVmZmVyKSl9KTsKLX0KLQotUmVmPFNoYXJlZEJ1ZmZlcj4g
U2hhcmVkQnVmZmVyOjp3cmFwU291cEJ1ZmZlcihTb3VwQnVmZmVyKiBzb3VwQnVmZmVyKQotewot
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihzb3VwQnVmZmVyKSk7Ci19Ci0K
LUdVbmlxdWVQdHI8U291cEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdGVTb3VwQnVmZmVyKHVu
c2lnbmVkIG9mZnNldCwgdW5zaWduZWQgc2l6ZSkKLXsKLSAgICByZWYoKTsKLSAgICBHVW5pcXVl
UHRyPFNvdXBCdWZmZXI+IGJ1ZmZlcihzb3VwX2J1ZmZlcl9uZXdfd2l0aF9vd25lcihkYXRhKCkg
KyBvZmZzZXQsIHNpemUgPyBzaXplIDogdGhpcy0+c2l6ZSgpLCB0aGlzLCBbXSh2b2lkKiBkYXRh
KSB7Ci0gICAgICAgIHN0YXRpY19jYXN0PFNoYXJlZEJ1ZmZlcio+KGRhdGEpLT5kZXJlZigpOwot
ICAgIH0pKTsKLSAgICByZXR1cm4gYnVmZmVyOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
Ci0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZwppbmRleCAyY2FkNzhmMWU2ZWYuLmM4MzYwNWUwNjYyZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwzNyBAQAorMjAyMS0wMi0wMSAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxj
Z2FyY2lhQGlnYWxpYS5jb20+CisKKyAgICAgICAgW1NPVVBdIFN0b3AgdXNpbmcgU291cEJ1ZmZl
ciBpbiBwcmVwYXJhdGlvbiBmb3IgbGlic291cDMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMTIwNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFVzZSBHQnl0ZXMgaW5zdGVhZCBvZiBTb3VwQnVmZmVyLgor
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRGF0YS5oOgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OkRhdGE6OmJ5dGVzIGNvbnN0KToKKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVEYXRhR0xpYi5jcHA6IFJlbmFtZWQg
ZnJvbSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZURhdGFT
b3VwLmNwcC4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpEYXRhOjpEYXRhKToKKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpEYXRhOjplbXB0eSk6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtDYWNoZTo6RGF0YTo6ZGF0YSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtDYWNoZTo6RGF0YTo6YXBwbHkgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
Q2FjaGU6OkRhdGE6OnN1YnJhbmdlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nh
Y2hlOjpjb25jYXRlbmF0ZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6RGF0YTo6
YWRvcHRNYXApOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OkRhdGE6OnRyeUNyZWF0
ZVNoYXJlZE1lbW9yeSBjb25zdCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0
d29ya0NhY2hlSU9DaGFubmVsLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0
d29ya0NhY2hlSU9DaGFubmVsR0xpYi5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUlPQ2hhbm5lbFNvdXAuY3BwLgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OnJ1blRhc2tJblF1ZXVlKToKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya0NhY2hlOjpmaWxsRGF0YUZyb21SZWFkQnVmZmVyKToKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya0NhY2hlOjppbnB1dFN0cmVhbVJlYWRSZWFkeUNhbGxiYWNrKToKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya0NhY2hlOjpJT0NoYW5uZWw6OnJlYWQpOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrQ2FjaGU6OklPQ2hhbm5lbDo6cmVhZFN5bmNJblRocmVhZCk6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6b3V0cHV0U3RyZWFtV3JpdGVSZWFkeUNhbGxiYWNrKToKKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpJT0NoYW5uZWw6OndyaXRlKToKKyAgICAgICAg
KiBTaGFyZWQvU2hhcmVhYmxlUmVzb3VyY2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWFi
bGVSZXNvdXJjZTo6d3JhcEluU2hhcmVkQnVmZmVyKToKKyAgICAgICAgKiBTb3VyY2VzR1RLLnR4
dDoKKyAgICAgICAgKiBTb3VyY2VzV1BFLnR4dDoKKwogMjAyMS0wMi0wMSAgQ2FybG9zIEdhcmNp
YSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAgW1NPVVBdIEFkZCBzdXBw
b3J0IGZvciBkYXRhIFVSTHMgaW4gdGhlIG5ldHdvcmsgcHJvY2VzcwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVEYXRhLmggYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZURhdGEuaAppbmRleCAz
N2I1OTY2NTZhNWQuLmVkMTkxZGM3ZGUyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVEYXRhLmgKKysrIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVEYXRhLmgKQEAgLTM1LDggKzM1LDggQEAK
ICNpbmNsdWRlIDx3dGYvT1NPYmplY3RQdHIuaD4KICNlbmRpZgogCi0jaWYgVVNFKFNPVVApCi0j
aW5jbHVkZSA8V2ViQ29yZS9HUmVmUHRyU291cC5oPgorI2lmIFVTRShHTElCKQorI2luY2x1ZGUg
PHd0Zi9nbGliL0dSZWZQdHIuaD4KICNlbmRpZgogCiAjaWYgVVNFKENVUkwpCkBAIC02NCw4ICs2
NCw4IEBAIHB1YmxpYzoKICAgICBlbnVtIGNsYXNzIEJhY2tpbmcgeyBCdWZmZXIsIE1hcCB9Owog
ICAgIERhdGEoT1NPYmplY3RQdHI8ZGlzcGF0Y2hfZGF0YV90PiYmLCBCYWNraW5nID0gQmFja2lu
Zzo6QnVmZmVyKTsKICNlbmRpZgotI2lmIFVTRShTT1VQKQotICAgIERhdGEoR1JlZlB0cjxTb3Vw
QnVmZmVyPiYmLCBGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUgZmQgPSBGaWxlU3lzdGVt
OjppbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlKTsKKyNpZiBVU0UoR0xJQikKKyAgICBEYXRhKEdS
ZWZQdHI8R0J5dGVzPiYmLCBGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUgZmQgPSBGaWxl
U3lzdGVtOjppbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlKTsKICNlbGlmIFVTRShDVVJMKQogICAg
IERhdGEoVmFyaWFudDxWZWN0b3I8dWludDhfdD4sIEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRh
PiYmKTsKICNlbmRpZgpAQCAtODcsMTUgKzg3LDE1IEBAIHB1YmxpYzoKICAgICBkaXNwYXRjaF9k
YXRhX3QgZGlzcGF0Y2hEYXRhKCkgY29uc3QgeyByZXR1cm4gbV9kaXNwYXRjaERhdGEuZ2V0KCk7
IH0KICNlbmRpZgogCi0jaWYgVVNFKFNPVVApCi0gICAgU291cEJ1ZmZlciogc291cEJ1ZmZlcigp
IGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyLmdldCgpOyB9CisjaWYgVVNFKEdMSUIpCisgICAgR0J5
dGVzKiBieXRlcygpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyLmdldCgpOyB9CiAjZW5kaWYKIHBy
aXZhdGU6CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgbXV0YWJsZSBPU09iamVjdFB0cjxkaXNw
YXRjaF9kYXRhX3Q+IG1fZGlzcGF0Y2hEYXRhOwogI2VuZGlmCi0jaWYgVVNFKFNPVVApCi0gICAg
bXV0YWJsZSBHUmVmUHRyPFNvdXBCdWZmZXI+IG1fYnVmZmVyOworI2lmIFVTRShHTElCKQorICAg
IG11dGFibGUgR1JlZlB0cjxHQnl0ZXM+IG1fYnVmZmVyOwogICAgIEZpbGVTeXN0ZW06OlBsYXRm
b3JtRmlsZUhhbmRsZSBtX2ZpbGVEZXNjcmlwdG9yIHsgRmlsZVN5c3RlbTo6aW52YWxpZFBsYXRm
b3JtRmlsZUhhbmRsZSB9OwogI2VuZGlmCiAjaWYgVVNFKENVUkwpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZURhdGFTb3VwLmNwcCBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRGF0YUdMaWIu
Y3BwCnNpbWlsYXJpdHkgaW5kZXggNjklCnJlbmFtZSBmcm9tIFNvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRGF0YVNvdXAuY3BwCnJlbmFtZSB0byBTb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZURhdGFHTGliLmNwcAppbmRl
eCBkM2I3OWUwMTRhNzkuLmRmZGEyOGVjYjYxOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVEYXRhU291cC5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVEYXRhR0xpYi5jcHAKQEAg
LTI2LDYgKzI2LDggQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJOZXR3b3JrQ2Fj
aGVEYXRhLmgiCiAKKyNpZiBVU0UoR0xJQikKKwogI2luY2x1ZGUgIlNoYXJlZE1lbW9yeS5oIgog
I2luY2x1ZGUgPGZjbnRsLmg+CiAjaW5jbHVkZSA8c3lzL21tYW4uaD4KQEAgLTMzLDcgKzM1LDcg
QEAKICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KICNpbmNsdWRlIDx1bmlzdGQuaD4KIAotI2lmIFVT
RShHTElCKSAmJiAhUExBVEZPUk0oV0lOKQorI2lmICFQTEFURk9STShXSU4pCiAjaW5jbHVkZSA8
Z2lvL2dmaWxlZGVzY3JpcHRvcmJhc2VkLmg+CiAjZW5kaWYKIApAQCAtNDUsMjYgKzQ3LDI1IEBA
IERhdGE6OkRhdGEoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpCiB7CiAgICAgdWlu
dDhfdCogY29waWVkRGF0YSA9IHN0YXRpY19jYXN0PHVpbnQ4X3QqPihmYXN0TWFsbG9jKHNpemUp
KTsKICAgICBtZW1jcHkoY29waWVkRGF0YSwgZGF0YSwgc2l6ZSk7Ci0gICAgbV9idWZmZXIgPSBh
ZG9wdEdSZWYoc291cF9idWZmZXJfbmV3X3dpdGhfb3duZXIoY29waWVkRGF0YSwgc2l6ZSwgY29w
aWVkRGF0YSwgZmFzdEZyZWUpKTsKKyAgICBtX2J1ZmZlciA9IGFkb3B0R1JlZihnX2J5dGVzX25l
d193aXRoX2ZyZWVfZnVuYyhjb3BpZWREYXRhLCBzaXplLCBmYXN0RnJlZSwgY29waWVkRGF0YSkp
OwogfQogCi1EYXRhOjpEYXRhKEdSZWZQdHI8U291cEJ1ZmZlcj4mJiBidWZmZXIsIEZpbGVTeXN0
ZW06OlBsYXRmb3JtRmlsZUhhbmRsZSBmZCkKLSAgICA6IG1fYnVmZmVyKGJ1ZmZlcikKK0RhdGE6
OkRhdGEoR1JlZlB0cjxHQnl0ZXM+JiYgYnVmZmVyLCBGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVI
YW5kbGUgZmQpCisgICAgOiBtX2J1ZmZlcihXVEZNb3ZlKGJ1ZmZlcikpCiAgICAgLCBtX2ZpbGVE
ZXNjcmlwdG9yKGZkKQotICAgICwgbV9zaXplKGJ1ZmZlciA/IGJ1ZmZlci0+bGVuZ3RoIDogMCkK
KyAgICAsIG1fc2l6ZShidWZmZXIgPyBnX2J5dGVzX2dldF9zaXplKGJ1ZmZlci5nZXQoKSkgOiAw
KQogICAgICwgbV9pc01hcChtX3NpemUgJiYgRmlsZVN5c3RlbTo6aXNIYW5kbGVWYWxpZChmZCkp
CiB7CiB9CiAKIERhdGEgRGF0YTo6ZW1wdHkoKQogewotICAgIEdSZWZQdHI8U291cEJ1ZmZlcj4g
YnVmZmVyID0gYWRvcHRHUmVmKHNvdXBfYnVmZmVyX25ldyhTT1VQX01FTU9SWV9UQUtFLCBudWxs
cHRyLCAwKSk7Ci0gICAgcmV0dXJuIHsgV1RGTW92ZShidWZmZXIpIH07CisgICAgcmV0dXJuIHsg
YWRvcHRHUmVmKGdfYnl0ZXNfbmV3KG51bGxwdHIsIDApKSB9OwogfQogCiBjb25zdCB1aW50OF90
KiBEYXRhOjpkYXRhKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9idWZmZXIgPyByZWludGVycHJl
dF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihtX2J1ZmZlci0+ZGF0YSkgOiBudWxscHRyOworICAgIHJl
dHVybiBtX2J1ZmZlciA/IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGdfYnl0ZXNf
Z2V0X2RhdGEobV9idWZmZXIuZ2V0KCksIG51bGxwdHIpKSA6IG51bGxwdHI7CiB9CiAKIGJvb2wg
RGF0YTo6aXNOdWxsKCkgY29uc3QKQEAgLTcyLDEyICs3MywxNCBAQCBib29sIERhdGE6OmlzTnVs
bCgpIGNvbnN0CiAgICAgcmV0dXJuICFtX2J1ZmZlcjsKIH0KIAotYm9vbCBEYXRhOjphcHBseShj
b25zdCBGdW5jdGlvbjxib29sIChjb25zdCB1aW50OF90Kiwgc2l6ZV90KT4mIGFwcGxpZXIpIGNv
bnN0Citib29sIERhdGE6OmFwcGx5KGNvbnN0IEZ1bmN0aW9uPGJvb2woY29uc3QgdWludDhfdCos
IHNpemVfdCk+JiBhcHBsaWVyKSBjb25zdAogewogICAgIGlmICghbV9zaXplKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKLSAgICByZXR1cm4gYXBwbGllcihyZWludGVycHJldF9jYXN0PGNvbnN0
IHVpbnQ4X3QqPihtX2J1ZmZlci0+ZGF0YSksIG1fYnVmZmVyLT5sZW5ndGgpOworICAgIGdzaXpl
IGxlbmd0aDsKKyAgICBjb25zdCBhdXRvKiBkYXRhID0gZ19ieXRlc19nZXRfZGF0YShtX2J1ZmZl
ci5nZXQoKSwgJmxlbmd0aCk7CisgICAgcmV0dXJuIGFwcGxpZXIocmVpbnRlcnByZXRfY2FzdDxj
b25zdCB1aW50OF90Kj4oZGF0YSksIGxlbmd0aCk7CiB9CiAKIERhdGEgRGF0YTo6c3VicmFuZ2Uo
c2l6ZV90IG9mZnNldCwgc2l6ZV90IHNpemUpIGNvbnN0CkBAIC04NSw4ICs4OCw3IEBAIERhdGEg
RGF0YTo6c3VicmFuZ2Uoc2l6ZV90IG9mZnNldCwgc2l6ZV90IHNpemUpIGNvbnN0CiAgICAgaWYg
KCFtX2J1ZmZlcikKICAgICAgICAgcmV0dXJuIHsgfTsKIAotICAgIEdSZWZQdHI8U291cEJ1ZmZl
cj4gc3ViQnVmZmVyID0gYWRvcHRHUmVmKHNvdXBfYnVmZmVyX25ld19zdWJidWZmZXIobV9idWZm
ZXIuZ2V0KCksIG9mZnNldCwgc2l6ZSkpOwotICAgIHJldHVybiB7IFdURk1vdmUoc3ViQnVmZmVy
KSB9OworICAgIHJldHVybiB7IGFkb3B0R1JlZihnX2J5dGVzX25ld19mcm9tX2J5dGVzKG1fYnVm
ZmVyLmdldCgpLCBvZmZzZXQsIHNpemUpKSB9OwogfQogCiBEYXRhIGNvbmNhdGVuYXRlKGNvbnN0
IERhdGEmIGEsIGNvbnN0IERhdGEmIGIpCkBAIC05OCwxMyArMTAwLDE5IEBAIERhdGEgY29uY2F0
ZW5hdGUoY29uc3QgRGF0YSYgYSwgY29uc3QgRGF0YSYgYikKIAogICAgIHNpemVfdCBzaXplID0g
YS5zaXplKCkgKyBiLnNpemUoKTsKICAgICB1aW50OF90KiBkYXRhID0gc3RhdGljX2Nhc3Q8dWlu
dDhfdCo+KGZhc3RNYWxsb2Moc2l6ZSkpOwotICAgIG1lbWNweShkYXRhLCBhLnNvdXBCdWZmZXIo
KS0+ZGF0YSwgYS5zb3VwQnVmZmVyKCktPmxlbmd0aCk7Ci0gICAgbWVtY3B5KGRhdGEgKyBhLnNv
dXBCdWZmZXIoKS0+bGVuZ3RoLCBiLnNvdXBCdWZmZXIoKS0+ZGF0YSwgYi5zb3VwQnVmZmVyKCkt
Pmxlbmd0aCk7Ci0gICAgR1JlZlB0cjxTb3VwQnVmZmVyPiBidWZmZXIgPSBhZG9wdEdSZWYoc291
cF9idWZmZXJfbmV3X3dpdGhfb3duZXIoZGF0YSwgc2l6ZSwgZGF0YSwgZmFzdEZyZWUpKTsKLSAg
ICByZXR1cm4geyBXVEZNb3ZlKGJ1ZmZlcikgfTsKKyAgICBnc2l6ZSBhTGVuZ3RoOworICAgIGNv
bnN0IGF1dG8qIGFEYXRhID0gZ19ieXRlc19nZXRfZGF0YShhLmJ5dGVzKCksICZhTGVuZ3RoKTsK
KyAgICBtZW1jcHkoZGF0YSwgYURhdGEsIGFMZW5ndGgpOworICAgIGdzaXplIGJMZW5ndGg7Cisg
ICAgY29uc3QgYXV0byogYkRhdGEgPSBnX2J5dGVzX2dldF9kYXRhKGIuYnl0ZXMoKSwgJmJMZW5n
dGgpOworICAgIG1lbWNweShkYXRhICsgYUxlbmd0aCwgYkRhdGEsIGJMZW5ndGgpOworCisgICAg
cmV0dXJuIHsgYWRvcHRHUmVmKGdfYnl0ZXNfbmV3X3dpdGhfZnJlZV9mdW5jKGRhdGEsIHNpemUs
IGZhc3RGcmVlLCBkYXRhKSkgfTsKIH0KIAogc3RydWN0IE1hcFdyYXBwZXIgeworICAgIFdURl9N
QUtFX1NUUlVDVF9GQVNUX0FMTE9DQVRFRDsKKwogICAgIH5NYXBXcmFwcGVyKCkKICAgICB7CiAg
ICAgICAgIG11bm1hcChtYXAsIHNpemUpOwpAQCAtMTI4LDggKzEzNiw3IEBAIERhdGEgRGF0YTo6
YWRvcHRNYXAoRmlsZVN5c3RlbTo6TWFwcGVkRmlsZURhdGEmJiBtYXBwZWRGaWxlLCBGaWxlU3lz
dGVtOjpQbGF0Zm9yCiAgICAgQVNTRVJUKG1hcCk7CiAgICAgQVNTRVJUKG1hcCAhPSBNQVBfRkFJ
TEVEKTsKICAgICBNYXBXcmFwcGVyKiB3cmFwcGVyID0gbmV3IE1hcFdyYXBwZXIgeyBtYXAsIHNp
emUsIGZkIH07Ci0gICAgR1JlZlB0cjxTb3VwQnVmZmVyPiBidWZmZXIgPSBhZG9wdEdSZWYoc291
cF9idWZmZXJfbmV3X3dpdGhfb3duZXIobWFwLCBzaXplLCB3cmFwcGVyLCByZWludGVycHJldF9j
YXN0PEdEZXN0cm95Tm90aWZ5PihkZWxldGVNYXBXcmFwcGVyKSkpOwotICAgIHJldHVybiB7IFdU
Rk1vdmUoYnVmZmVyKSwgZmQgfTsKKyAgICByZXR1cm4geyBhZG9wdEdSZWYoZ19ieXRlc19uZXdf
d2l0aF9mcmVlX2Z1bmMobWFwLCBzaXplLCByZWludGVycHJldF9jYXN0PEdEZXN0cm95Tm90aWZ5
PihkZWxldGVNYXBXcmFwcGVyKSwgd3JhcHBlcikpLCBmZCB9OwogfQogCiBSZWZQdHI8U2hhcmVk
TWVtb3J5PiBEYXRhOjp0cnlDcmVhdGVTaGFyZWRNZW1vcnkoKSBjb25zdApAQCAtMTM5LDggKzE0
NiwxMiBAQCBSZWZQdHI8U2hhcmVkTWVtb3J5PiBEYXRhOjp0cnlDcmVhdGVTaGFyZWRNZW1vcnko
KSBjb25zdAogCiAgICAgR0lucHV0U3RyZWFtKiBpbnB1dFN0cmVhbSA9IGdfaW9fc3RyZWFtX2dl
dF9pbnB1dF9zdHJlYW0oR19JT19TVFJFQU0obV9maWxlRGVzY3JpcHRvcikpOwogICAgIGludCBm
ZCA9IGdfZmlsZV9kZXNjcmlwdG9yX2Jhc2VkX2dldF9mZChHX0ZJTEVfREVTQ1JJUFRPUl9CQVNF
RChpbnB1dFN0cmVhbSkpOwotICAgIHJldHVybiBTaGFyZWRNZW1vcnk6OndyYXBNYXAoY29uc3Rf
Y2FzdDxjaGFyKj4obV9idWZmZXItPmRhdGEpLCBtX2J1ZmZlci0+bGVuZ3RoLCBmZCk7CisgICAg
Z3NpemUgbGVuZ3RoOworICAgIGNvbnN0IGF1dG8qIGRhdGEgPSBnX2J5dGVzX2dldF9kYXRhKG1f
YnVmZmVyLmdldCgpLCAmbGVuZ3RoKTsKKyAgICByZXR1cm4gU2hhcmVkTWVtb3J5Ojp3cmFwTWFw
KGNvbnN0X2Nhc3Q8dm9pZCo+KGRhdGEpLCBsZW5ndGgsIGZkKTsKIH0KIAogfSAvLyBuYW1lc3Bh
Y2UgTmV0d29ya0NhY2hlCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIFVTRShH
TElCKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3
b3JrQ2FjaGVJT0NoYW5uZWwuaCBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUv
TmV0d29ya0NhY2hlSU9DaGFubmVsLmgKaW5kZXggNjM5ODcwMGM5ZTgwLi4wNTM1ZjI5OTlkNmMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0Nh
Y2hlSU9DaGFubmVsLmgKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9O
ZXR3b3JrQ2FjaGVJT0NoYW5uZWwuaApAQCAtMzIsOCArMzIsMTIgQEAKICNpbmNsdWRlIDx3dGYv
V29ya1F1ZXVlLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKLSNpZiBVU0Uo
U09VUCkKKyNpZiBVU0UoR0xJQikKICNpbmNsdWRlIDx3dGYvZ2xpYi9HUmVmUHRyLmg+CisKK3R5
cGVkZWYgc3RydWN0IF9HRmlsZUlPU3RyZWFtIEdGaWxlSU9TdHJlYW07Cit0eXBlZGVmIHN0cnVj
dCBfR0lucHV0U3RyZWFtIEdJbnB1dFN0cmVhbTsKK3R5cGVkZWYgc3RydWN0IF9HT3V0cHV0U3Ry
ZWFtIEdPdXRwdXRTdHJlYW07CiAjZW5kaWYKIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC01Miw3
ICs1Niw3IEBAIHB1YmxpYzoKICAgICBjb25zdCBTdHJpbmcmIHBhdGgoKSBjb25zdCB7IHJldHVy
biBtX3BhdGg7IH0KICAgICBUeXBlIHR5cGUoKSBjb25zdCB7IHJldHVybiBtX3R5cGU7IH0KIAot
I2lmICFVU0UoU09VUCkKKyNpZiAhVVNFKEdMSUIpCiAgICAgYm9vbCBpc09wZW5lZCgpIGNvbnN0
IHsgcmV0dXJuIEZpbGVTeXN0ZW06OmlzSGFuZGxlVmFsaWQobV9maWxlRGVzY3JpcHRvcik7IH0K
ICNlbHNlCiAgICAgYm9vbCBpc09wZW5lZCgpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KQEAgLTYz
LDIxICs2NywyMSBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIElPQ2hhbm5lbChjb25zdCBTdHJp
bmcmIGZpbGVQYXRoLCBJT0NoYW5uZWw6OlR5cGUsIE9wdGlvbmFsPFdvcmtRdWV1ZTo6UU9TPik7
CiAKLSNpZiBVU0UoU09VUCkKKyNpZiBVU0UoR0xJQikKICAgICB2b2lkIHJlYWRTeW5jSW5UaHJl
YWQoc2l6ZV90IG9mZnNldCwgc2l6ZV90LCBXb3JrUXVldWUqLCBGdW5jdGlvbjx2b2lkIChEYXRh
JiwgaW50IGVycm9yKT4mJik7CiAjZW5kaWYKIAogICAgIFN0cmluZyBtX3BhdGg7CiAgICAgVHlw
ZSBtX3R5cGU7CiAKLSNpZiAhVVNFKFNPVVApCisjaWYgIVVTRShHTElCKQogICAgIEZpbGVTeXN0
ZW06OlBsYXRmb3JtRmlsZUhhbmRsZSBtX2ZpbGVEZXNjcmlwdG9yIHsgRmlsZVN5c3RlbTo6aW52
YWxpZFBsYXRmb3JtRmlsZUhhbmRsZSB9OwogI2VuZGlmCiAgICAgc3RkOjphdG9taWM8Ym9vbD4g
bV93YXNEZWxldGVkIHsgZmFsc2UgfTsgLy8gVHJ5IHRvIG5hcnJvdyBkb3duIGEgY3Jhc2gsIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjU2NTkKICNpZiBQTEFURk9S
TShDT0NPQSkKICAgICBPU09iamVjdFB0cjxkaXNwYXRjaF9pb190PiBtX2Rpc3BhdGNoSU87CiAj
ZW5kaWYKLSNpZiBVU0UoU09VUCkKKyNpZiBVU0UoR0xJQikKICAgICBHUmVmUHRyPEdJbnB1dFN0
cmVhbT4gbV9pbnB1dFN0cmVhbTsKICAgICBHUmVmUHRyPEdPdXRwdXRTdHJlYW0+IG1fb3V0cHV0
U3RyZWFtOwogICAgIEdSZWZQdHI8R0ZpbGVJT1N0cmVhbT4gbV9pb1N0cmVhbTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlSU9DaGFu
bmVsU291cC5jcHAgYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtD
YWNoZUlPQ2hhbm5lbEdMaWIuY3BwCnNpbWlsYXJpdHkgaW5kZXggNzQlCnJlbmFtZSBmcm9tIFNv
dXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlSU9DaGFubmVsU291
cC5jcHAKcmVuYW1lIHRvIFNvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29y
a0NhY2hlSU9DaGFubmVsR0xpYi5jcHAKaW5kZXggMDkzMDliYzlmZGQwLi41Y2RhNzVkNzVjNDIg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0Nh
Y2hlSU9DaGFubmVsU291cC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9j
YWNoZS9OZXR3b3JrQ2FjaGVJT0NoYW5uZWxHTGliLmNwcApAQCAtNjgsNyArNjgsNyBAQCBJT0No
YW5uZWw6On5JT0NoYW5uZWwoKQogICAgIFJFTEVBU0VfQVNTRVJUKCFtX3dhc0RlbGV0ZWQuZXhj
aGFuZ2UodHJ1ZSkpOwogfQogCi1zdGF0aWMgaW5saW5lIHZvaWQgcnVuVGFza0luUXVldWUoRnVu
Y3Rpb248dm9pZCAoKT4mJiB0YXNrLCBXb3JrUXVldWUqIHF1ZXVlKQorc3RhdGljIGlubGluZSB2
b2lkIHJ1blRhc2tJblF1ZXVlKEZ1bmN0aW9uPHZvaWQoKT4mJiB0YXNrLCBXb3JrUXVldWUqIHF1
ZXVlKQogewogICAgIGlmIChxdWV1ZSkgewogICAgICAgICBxdWV1ZS0+ZGlzcGF0Y2goV1RGTW92
ZSh0YXNrKSk7CkBAIC03OSwxOCArNzksMTggQEAgc3RhdGljIGlubGluZSB2b2lkIHJ1blRhc2tJ
blF1ZXVlKEZ1bmN0aW9uPHZvaWQgKCk+JiYgdGFzaywgV29ya1F1ZXVlKiBxdWV1ZSkKICAgICBS
dW5Mb29wOjptYWluKCkuZGlzcGF0Y2goV1RGTW92ZSh0YXNrKSk7CiB9CiAKLXN0YXRpYyB2b2lk
IGZpbGxEYXRhRnJvbVJlYWRCdWZmZXIoU291cEJ1ZmZlciogcmVhZEJ1ZmZlciwgc2l6ZV90IHNp
emUsIERhdGEmIGRhdGEpCitzdGF0aWMgdm9pZCBmaWxsRGF0YUZyb21SZWFkQnVmZmVyKEdCeXRl
cyogcmVhZEJ1ZmZlciwgc2l6ZV90IHNpemUsIERhdGEmIGRhdGEpCiB7Ci0gICAgR1JlZlB0cjxT
b3VwQnVmZmVyPiBidWZmZXI7Ci0gICAgaWYgKHNpemUgIT0gcmVhZEJ1ZmZlci0+bGVuZ3RoKSB7
CisgICAgR1JlZlB0cjxHQnl0ZXM+IGJ1ZmZlcjsKKyAgICBpZiAoc2l6ZSAhPSBnX2J5dGVzX2dl
dF9zaXplKHJlYWRCdWZmZXIpKSB7CiAgICAgICAgIC8vIFRoZSBzdWJidWZmZXIgZG9lcyBub3Qg
Y29weSB0aGUgZGF0YS4KLSAgICAgICAgYnVmZmVyID0gYWRvcHRHUmVmKHNvdXBfYnVmZmVyX25l
d19zdWJidWZmZXIocmVhZEJ1ZmZlciwgMCwgc2l6ZSkpOworICAgICAgICBidWZmZXIgPSBhZG9w
dEdSZWYoZ19ieXRlc19uZXdfZnJvbV9ieXRlcyhyZWFkQnVmZmVyLCAwLCBzaXplKSk7CiAgICAg
fSBlbHNlCiAgICAgICAgIGJ1ZmZlciA9IHJlYWRCdWZmZXI7CiAKICAgICBpZiAoZGF0YS5pc051
bGwoKSkgewogICAgICAgICAvLyBGaXJzdCBjaHVuaywgd2UgbmVlZCB0byBmb3JjZSB0aGUgZGF0
YSB0byBiZSBjb3BpZWQuCi0gICAgICAgIGRhdGEgPSB7IHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3Qg
dWludDhfdCo+KGJ1ZmZlci0+ZGF0YSksIHNpemUgfTsKKyAgICAgICAgZGF0YSA9IHsgcmVpbnRl
cnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4oZ19ieXRlc19nZXRfZGF0YShidWZmZXIuZ2V0KCks
IG51bGxwdHIpKSwgc2l6ZSB9OwogICAgIH0gZWxzZSB7CiAgICAgICAgIERhdGEgZGF0YVJlYWQo
V1RGTW92ZShidWZmZXIpKTsKICAgICAgICAgLy8gQ29uY2F0ZW5hdGUgd2lsbCBjb3B5IHRoZSBk
YXRhLgpAQCAtOTksMTEgKzk5LDEzIEBAIHN0YXRpYyB2b2lkIGZpbGxEYXRhRnJvbVJlYWRCdWZm
ZXIoU291cEJ1ZmZlciogcmVhZEJ1ZmZlciwgc2l6ZV90IHNpemUsIERhdGEmIGRhCiB9CiAKIHN0
cnVjdCBSZWFkQXN5bmNEYXRhIHsKKyAgICBXVEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7
CisKICAgICBSZWZQdHI8SU9DaGFubmVsPiBjaGFubmVsOwotICAgIEdSZWZQdHI8U291cEJ1ZmZl
cj4gYnVmZmVyOworICAgIEdSZWZQdHI8R0J5dGVzPiBidWZmZXI7CiAgICAgUmVmUHRyPFdvcmtR
dWV1ZT4gcXVldWU7CiAgICAgc2l6ZV90IGJ5dGVzVG9SZWFkOwotICAgIEZ1bmN0aW9uPHZvaWQg
KERhdGEmLCBpbnQgZXJyb3IpPiBjb21wbGV0aW9uSGFuZGxlcjsKKyAgICBGdW5jdGlvbjx2b2lk
KERhdGEmLCBpbnQgZXJyb3IpPiBjb21wbGV0aW9uSGFuZGxlcjsKICAgICBEYXRhIGRhdGE7CiB9
OwogCkBAIC0xMzksMTggKzE0MSwxOCBAQCBzdGF0aWMgdm9pZCBpbnB1dFN0cmVhbVJlYWRSZWFk
eUNhbGxiYWNrKEdJbnB1dFN0cmVhbSogc3RyZWFtLCBHQXN5bmNSZXN1bHQqIHJlcwogICAgICAg
ICByZXR1cm47CiAgICAgfQogCi0gICAgc2l6ZV90IGJ5dGVzVG9SZWFkID0gc3RkOjptaW4ocGVu
ZGluZ0J5dGVzVG9SZWFkLCBhc3luY0RhdGEtPmJ1ZmZlci0+bGVuZ3RoKTsKKyAgICBzaXplX3Qg
Ynl0ZXNUb1JlYWQgPSBzdGQ6Om1pbihwZW5kaW5nQnl0ZXNUb1JlYWQsIGdfYnl0ZXNfZ2V0X3Np
emUoYXN5bmNEYXRhLT5idWZmZXIuZ2V0KCkpKTsKICAgICAvLyBVc2UgYSBsb2NhbCB2YXJpYWJs
ZSBmb3IgdGhlIGRhdGEgYnVmZmVyIHRvIHBhc3MgaXQgdG8gZ19pbnB1dF9zdHJlYW1fcmVhZF9h
c3luYygpLCBiZWNhdXNlIFJlYWRBc3luY0RhdGEgaXMgcmVsZWFzZWQuCi0gICAgYXV0byBkYXRh
ID0gY29uc3RfY2FzdDxjaGFyKj4oYXN5bmNEYXRhLT5idWZmZXItPmRhdGEpOworICAgIGF1dG8q
IGRhdGEgPSBjb25zdF9jYXN0PHZvaWQqPihnX2J5dGVzX2dldF9kYXRhKGFzeW5jRGF0YS0+YnVm
ZmVyLmdldCgpLCBudWxscHRyKSk7CiAgICAgZ19pbnB1dF9zdHJlYW1fcmVhZF9hc3luYyhzdHJl
YW0sIGRhdGEsIGJ5dGVzVG9SZWFkLCBSdW5Mb29wU291cmNlUHJpb3JpdHk6OkRpc2tDYWNoZVJl
YWQsIG51bGxwdHIsCiAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8R0FzeW5jUmVhZHlDYWxsYmFj
az4oaW5wdXRTdHJlYW1SZWFkUmVhZHlDYWxsYmFjayksIGFzeW5jRGF0YS5yZWxlYXNlKCkpOwog
fQogCi12b2lkIElPQ2hhbm5lbDo6cmVhZChzaXplX3Qgb2Zmc2V0LCBzaXplX3Qgc2l6ZSwgV29y
a1F1ZXVlKiBxdWV1ZSwgRnVuY3Rpb248dm9pZCAoRGF0YSYsIGludCBlcnJvcik+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCit2b2lkIElPQ2hhbm5lbDo6cmVhZChzaXplX3Qgb2Zmc2V0LCBzaXplX3Qg
c2l6ZSwgV29ya1F1ZXVlKiBxdWV1ZSwgRnVuY3Rpb248dm9pZChEYXRhJiwgaW50IGVycm9yKT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBSZWZQdHI8SU9DaGFubmVsPiBjaGFubmVsKHRo
aXMpOworICAgIFJlZlB0cjxJT0NoYW5uZWw+IHByb3RlY3RlZFRoaXModGhpcyk7CiAgICAgaWYg
KCFtX2lucHV0U3RyZWFtKSB7Ci0gICAgICAgIHJ1blRhc2tJblF1ZXVlKFtjaGFubmVsLCBjb21w
bGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSB7CisgICAgICAgIHJ1
blRhc2tJblF1ZXVlKFtwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKSwgY29t
cGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gewogICAgICAgICAg
ICAgRGF0YSBkYXRhOwogICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZGF0YSwgLTEpOwog
ICAgICAgICB9LCBxdWV1ZSk7CkBAIC0xNjQsMzEgKzE2NiwzMCBAQCB2b2lkIElPQ2hhbm5lbDo6
cmVhZChzaXplX3Qgb2Zmc2V0LCBzaXplX3Qgc2l6ZSwgV29ya1F1ZXVlKiBxdWV1ZSwgRnVuY3Rp
b248dm9pZAogCiAgICAgc2l6ZV90IGJ1ZmZlclNpemUgPSBzdGQ6Om1pbihzaXplLCBnRGVmYXVs
dFJlYWRCdWZmZXJTaXplKTsKICAgICB1aW50OF90KiBidWZmZXJEYXRhID0gc3RhdGljX2Nhc3Q8
dWludDhfdCo+KGZhc3RNYWxsb2MoYnVmZmVyU2l6ZSkpOwotICAgIEdSZWZQdHI8U291cEJ1ZmZl
cj4gYnVmZmVyID0gYWRvcHRHUmVmKHNvdXBfYnVmZmVyX25ld193aXRoX293bmVyKGJ1ZmZlckRh
dGEsIGJ1ZmZlclNpemUsIGJ1ZmZlckRhdGEsIGZhc3RGcmVlKSk7CisgICAgR1JlZlB0cjxHQnl0
ZXM+IGJ1ZmZlciA9IGFkb3B0R1JlZihnX2J5dGVzX25ld193aXRoX2ZyZWVfZnVuYyhidWZmZXJE
YXRhLCBidWZmZXJTaXplLCBmYXN0RnJlZSwgYnVmZmVyRGF0YSkpOwogICAgIFJlYWRBc3luY0Rh
dGEqIGFzeW5jRGF0YSA9IG5ldyBSZWFkQXN5bmNEYXRhIHsgdGhpcywgYnVmZmVyLmdldCgpLCBx
dWV1ZSwgc2l6ZSwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIHsgfSB9OwogCiAgICAgLy8g
RklYTUU6IGltcGxlbWVudCBvZmZzZXQuCi0gICAgZ19pbnB1dF9zdHJlYW1fcmVhZF9hc3luYyht
X2lucHV0U3RyZWFtLmdldCgpLCBjb25zdF9jYXN0PGNoYXIqPihidWZmZXItPmRhdGEpLCBidWZm
ZXJTaXplLCBSdW5Mb29wU291cmNlUHJpb3JpdHk6OkRpc2tDYWNoZVJlYWQsIG51bGxwdHIsCisg
ICAgZ19pbnB1dF9zdHJlYW1fcmVhZF9hc3luYyhtX2lucHV0U3RyZWFtLmdldCgpLCBidWZmZXJE
YXRhLCBidWZmZXJTaXplLCBSdW5Mb29wU291cmNlUHJpb3JpdHk6OkRpc2tDYWNoZVJlYWQsIG51
bGxwdHIsCiAgICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8R0FzeW5jUmVhZHlDYWxsYmFjaz4oaW5w
dXRTdHJlYW1SZWFkUmVhZHlDYWxsYmFjayksIGFzeW5jRGF0YSk7CiB9CiAKLXZvaWQgSU9DaGFu
bmVsOjpyZWFkU3luY0luVGhyZWFkKHNpemVfdCBvZmZzZXQsIHNpemVfdCBzaXplLCBXb3JrUXVl
dWUqIHF1ZXVlLCBGdW5jdGlvbjx2b2lkIChEYXRhJiwgaW50IGVycm9yKT4mJiBjb21wbGV0aW9u
SGFuZGxlcikKK3ZvaWQgSU9DaGFubmVsOjpyZWFkU3luY0luVGhyZWFkKHNpemVfdCBvZmZzZXQs
IHNpemVfdCBzaXplLCBXb3JrUXVldWUqIHF1ZXVlLCBGdW5jdGlvbjx2b2lkKERhdGEmLCBpbnQg
ZXJyb3IpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewogICAgIEFTU0VSVCghUnVuTG9vcDo6aXNN
YWluKCkpOwogCi0gICAgUmVmUHRyPElPQ2hhbm5lbD4gY2hhbm5lbCh0aGlzKTsKLSAgICBUaHJl
YWQ6OmNyZWF0ZSgiSU9DaGFubmVsOjpyZWFkU3luYyIsIFtjaGFubmVsLCBzaXplLCBxdWV1ZSwg
Y29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKCkgbXV0YWJs
ZSB7CisgICAgVGhyZWFkOjpjcmVhdGUoIklPQ2hhbm5lbDo6cmVhZFN5bmMiLCBbdGhpcywgcHJv
dGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBzaXplLCBxdWV1ZSwgY29tcGxldGlvbkhhbmRs
ZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gKCkgbXV0YWJsZSB7CiAgICAgICAgIHNp
emVfdCBidWZmZXJTaXplID0gc3RkOjptaW4oc2l6ZSwgZ0RlZmF1bHRSZWFkQnVmZmVyU2l6ZSk7
CiAgICAgICAgIHVpbnQ4X3QqIGJ1ZmZlckRhdGEgPSBzdGF0aWNfY2FzdDx1aW50OF90Kj4oZmFz
dE1hbGxvYyhidWZmZXJTaXplKSk7Ci0gICAgICAgIEdSZWZQdHI8U291cEJ1ZmZlcj4gcmVhZEJ1
ZmZlciA9IGFkb3B0R1JlZihzb3VwX2J1ZmZlcl9uZXdfd2l0aF9vd25lcihidWZmZXJEYXRhLCBi
dWZmZXJTaXplLCBidWZmZXJEYXRhLCBmYXN0RnJlZSkpOworICAgICAgICBHUmVmUHRyPEdCeXRl
cz4gcmVhZEJ1ZmZlciA9IGFkb3B0R1JlZihnX2J5dGVzX25ld193aXRoX2ZyZWVfZnVuYyhidWZm
ZXJEYXRhLCBidWZmZXJTaXplLCBmYXN0RnJlZSwgYnVmZmVyRGF0YSkpOwogICAgICAgICBEYXRh
IGRhdGE7CiAgICAgICAgIHNpemVfdCBwZW5kaW5nQnl0ZXNUb1JlYWQgPSBzaXplOwogICAgICAg
ICBzaXplX3QgYnl0ZXNUb1JlYWQgPSBidWZmZXJTaXplOwogICAgICAgICBkbyB7CiAgICAgICAg
ICAgICAvLyBGSVhNRTogaW1wbGVtZW50IG9mZnNldC4KLSAgICAgICAgICAgIGdzc2l6ZSBieXRl
c1JlYWQgPSBnX2lucHV0X3N0cmVhbV9yZWFkKGNoYW5uZWwtPm1faW5wdXRTdHJlYW0uZ2V0KCks
IGNvbnN0X2Nhc3Q8Y2hhcio+KHJlYWRCdWZmZXItPmRhdGEpLCBieXRlc1RvUmVhZCwgbnVsbHB0
ciwgbnVsbHB0cik7CisgICAgICAgICAgICBnc3NpemUgYnl0ZXNSZWFkID0gZ19pbnB1dF9zdHJl
YW1fcmVhZChtX2lucHV0U3RyZWFtLmdldCgpLCBjb25zdF9jYXN0PHZvaWQqPihnX2J5dGVzX2dl
dF9kYXRhKHJlYWRCdWZmZXIuZ2V0KCksIG51bGxwdHIpKSwgYnl0ZXNUb1JlYWQsIG51bGxwdHIs
IG51bGxwdHIpOwogICAgICAgICAgICAgaWYgKGJ5dGVzUmVhZCA9PSAtMSkgewotICAgICAgICAg
ICAgICAgIHJ1blRhc2tJblF1ZXVlKFtjaGFubmVsLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpXSB7CisgICAgICAgICAgICAgICAgcnVuVGFza0luUXVldWUo
W3Byb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpLCBjb21wbGV0aW9uSGFuZGxl
ciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSB7CiAgICAgICAgICAgICAgICAgICAgIERh
dGEgZGF0YTsKICAgICAgICAgICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoZGF0YSwgLTEp
OwogICAgICAgICAgICAgICAgIH0sIHF1ZXVlKTsKQEAgLTIwMiwxMiArMjAzLDEwIEBAIHZvaWQg
SU9DaGFubmVsOjpyZWFkU3luY0luVGhyZWFkKHNpemVfdCBvZmZzZXQsIHNpemVfdCBzaXplLCBX
b3JrUXVldWUqIHF1ZXVlLCBGCiAgICAgICAgICAgICBmaWxsRGF0YUZyb21SZWFkQnVmZmVyKHJl
YWRCdWZmZXIuZ2V0KCksIHN0YXRpY19jYXN0PHNpemVfdD4oYnl0ZXNSZWFkKSwgZGF0YSk7CiAK
ICAgICAgICAgICAgIHBlbmRpbmdCeXRlc1RvUmVhZCA9IHNpemUgLSBkYXRhLnNpemUoKTsKLSAg
ICAgICAgICAgIGJ5dGVzVG9SZWFkID0gc3RkOjptaW4ocGVuZGluZ0J5dGVzVG9SZWFkLCByZWFk
QnVmZmVyLT5sZW5ndGgpOworICAgICAgICAgICAgYnl0ZXNUb1JlYWQgPSBzdGQ6Om1pbihwZW5k
aW5nQnl0ZXNUb1JlYWQsIGdfYnl0ZXNfZ2V0X3NpemUocmVhZEJ1ZmZlci5nZXQoKSkpOwogICAg
ICAgICB9IHdoaWxlIChwZW5kaW5nQnl0ZXNUb1JlYWQpOwogCi0gICAgICAgIEdSZWZQdHI8U291
cEJ1ZmZlcj4gYnVmZmVyQ2FwdHVyZSA9IGRhdGEuc291cEJ1ZmZlcigpOwotICAgICAgICBydW5U
YXNrSW5RdWV1ZShbY2hhbm5lbCwgYnVmZmVyQ2FwdHVyZSwgY29tcGxldGlvbkhhbmRsZXIgPSBX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gewotICAgICAgICAgICAgR1JlZlB0cjxTb3VwQnVm
ZmVyPiBidWZmZXIgPSBidWZmZXJDYXB0dXJlOworICAgICAgICBydW5UYXNrSW5RdWV1ZShbcHJv
dGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyksIGJ1ZmZlciA9IEdSZWZQdHI8R0J5
dGVzPihkYXRhLmJ5dGVzKCkpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlv
bkhhbmRsZXIpXSgpIG11dGFibGUgewogICAgICAgICAgICAgRGF0YSBkYXRhID0geyBXVEZNb3Zl
KGJ1ZmZlcikgfTsKICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGRhdGEsIDApOwogICAg
ICAgICB9LCBxdWV1ZSk7CkBAIC0yMTUsMTAgKzIxNCwxMiBAQCB2b2lkIElPQ2hhbm5lbDo6cmVh
ZFN5bmNJblRocmVhZChzaXplX3Qgb2Zmc2V0LCBzaXplX3Qgc2l6ZSwgV29ya1F1ZXVlKiBxdWV1
ZSwgRgogfQogCiBzdHJ1Y3QgV3JpdGVBc3luY0RhdGEgeworICAgIFdURl9NQUtFX1NUUlVDVF9G
QVNUX0FMTE9DQVRFRDsKKwogICAgIFJlZlB0cjxJT0NoYW5uZWw+IGNoYW5uZWw7Ci0gICAgR1Jl
ZlB0cjxTb3VwQnVmZmVyPiBidWZmZXI7CisgICAgR1JlZlB0cjxHQnl0ZXM+IGJ1ZmZlcjsKICAg
ICBSZWZQdHI8V29ya1F1ZXVlPiBxdWV1ZTsKLSAgICBGdW5jdGlvbjx2b2lkIChpbnQgZXJyb3Ip
PiBjb21wbGV0aW9uSGFuZGxlcjsKKyAgICBGdW5jdGlvbjx2b2lkKGludCBlcnJvcik+IGNvbXBs
ZXRpb25IYW5kbGVyOwogfTsKIAogc3RhdGljIHZvaWQgb3V0cHV0U3RyZWFtV3JpdGVSZWFkeUNh
bGxiYWNrKEdPdXRwdXRTdHJlYW0qIHN0cmVhbSwgR0FzeW5jUmVzdWx0KiByZXN1bHQsIGdwb2lu
dGVyIHVzZXJEYXRhKQpAQCAtMjMzLDcgKzIzNCw3IEBAIHN0YXRpYyB2b2lkIG91dHB1dFN0cmVh
bVdyaXRlUmVhZHlDYWxsYmFjayhHT3V0cHV0U3RyZWFtKiBzdHJlYW0sIEdBc3luY1Jlc3VsdCoK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGdzc2l6ZSBwZW5kaW5nQnl0ZXNUb1dyaXRl
ID0gYXN5bmNEYXRhLT5idWZmZXItPmxlbmd0aCAtIGJ5dGVzV3JpdHRlbjsKKyAgICBnc3NpemUg
cGVuZGluZ0J5dGVzVG9Xcml0ZSA9IGdfYnl0ZXNfZ2V0X3NpemUoYXN5bmNEYXRhLT5idWZmZXIu
Z2V0KCkpIC0gYnl0ZXNXcml0dGVuOwogICAgIGlmICghcGVuZGluZ0J5dGVzVG9Xcml0ZSkgewog
ICAgICAgICBXb3JrUXVldWUqIHF1ZXVlID0gYXN5bmNEYXRhLT5xdWV1ZS5nZXQoKTsKICAgICAg
ICAgcnVuVGFza0luUXVldWUoW2FzeW5jRGF0YSA9IFdURk1vdmUoYXN5bmNEYXRhKV0gewpAQCAt
MjQyLDE4ICsyNDMsMTggQEAgc3RhdGljIHZvaWQgb3V0cHV0U3RyZWFtV3JpdGVSZWFkeUNhbGxi
YWNrKEdPdXRwdXRTdHJlYW0qIHN0cmVhbSwgR0FzeW5jUmVzdWx0KgogICAgICAgICByZXR1cm47
CiAgICAgfQogCi0gICAgYXN5bmNEYXRhLT5idWZmZXIgPSBhZG9wdEdSZWYoc291cF9idWZmZXJf
bmV3X3N1YmJ1ZmZlcihhc3luY0RhdGEtPmJ1ZmZlci5nZXQoKSwgYnl0ZXNXcml0dGVuLCBwZW5k
aW5nQnl0ZXNUb1dyaXRlKSk7CisgICAgYXN5bmNEYXRhLT5idWZmZXIgPSBhZG9wdEdSZWYoZ19i
eXRlc19uZXdfZnJvbV9ieXRlcyhhc3luY0RhdGEtPmJ1ZmZlci5nZXQoKSwgYnl0ZXNXcml0dGVu
LCBwZW5kaW5nQnl0ZXNUb1dyaXRlKSk7CiAgICAgLy8gVXNlIGEgbG9jYWwgdmFyaWFibGUgZm9y
IHRoZSBkYXRhIGJ1ZmZlciB0byBwYXNzIGl0IHRvIGdfb3V0cHV0X3N0cmVhbV93cml0ZV9hc3lu
YygpLCBiZWNhdXNlIFdyaXRlQXN5bmNEYXRhIGlzIHJlbGVhc2VkLgotICAgIGF1dG8gZGF0YSA9
IGFzeW5jRGF0YS0+YnVmZmVyLT5kYXRhOworICAgIGNvbnN0IGF1dG8qIGRhdGEgPSBnX2J5dGVz
X2dldF9kYXRhKGFzeW5jRGF0YS0+YnVmZmVyLmdldCgpLCBudWxscHRyKTsKICAgICBnX291dHB1
dF9zdHJlYW1fd3JpdGVfYXN5bmMoc3RyZWFtLCBkYXRhLCBwZW5kaW5nQnl0ZXNUb1dyaXRlLCBS
dW5Mb29wU291cmNlUHJpb3JpdHk6OkRpc2tDYWNoZVdyaXRlLCBudWxscHRyLAogICAgICAgICBy
ZWludGVycHJldF9jYXN0PEdBc3luY1JlYWR5Q2FsbGJhY2s+KG91dHB1dFN0cmVhbVdyaXRlUmVh
ZHlDYWxsYmFjayksIGFzeW5jRGF0YS5yZWxlYXNlKCkpOwogfQogCi12b2lkIElPQ2hhbm5lbDo6
d3JpdGUoc2l6ZV90IG9mZnNldCwgY29uc3QgRGF0YSYgZGF0YSwgV29ya1F1ZXVlKiBxdWV1ZSwg
RnVuY3Rpb248dm9pZCAoaW50IGVycm9yKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgSU9D
aGFubmVsOjp3cml0ZShzaXplX3Qgb2Zmc2V0LCBjb25zdCBEYXRhJiBkYXRhLCBXb3JrUXVldWUq
IHF1ZXVlLCBGdW5jdGlvbjx2b2lkKGludCBlcnJvcik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7
Ci0gICAgUmVmUHRyPElPQ2hhbm5lbD4gY2hhbm5lbCh0aGlzKTsKKyAgICBSZWZQdHI8SU9DaGFu
bmVsPiBwcm90ZWN0ZWRUaGlzKHRoaXMpOwogICAgIGlmICghbV9vdXRwdXRTdHJlYW0gJiYgIW1f
aW9TdHJlYW0pIHsKLSAgICAgICAgcnVuVGFza0luUXVldWUoW2NoYW5uZWwsIGNvbXBsZXRpb25I
YW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildIHsKKyAgICAgICAgcnVuVGFza0lu
UXVldWUoW3Byb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpLCBjb21wbGV0aW9u
SGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSB7CiAgICAgICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcigtMSk7CiAgICAgICAgIH0sIHF1ZXVlKTsKICAgICAgICAgcmV0dXJuOwpA
QCAtMjYxLDE1ICsyNjIsMTUgQEAgdm9pZCBJT0NoYW5uZWw6OndyaXRlKHNpemVfdCBvZmZzZXQs
IGNvbnN0IERhdGEmIGRhdGEsIFdvcmtRdWV1ZSogcXVldWUsIEZ1bmN0aW8KIAogICAgIEdPdXRw
dXRTdHJlYW0qIHN0cmVhbSA9IG1fb3V0cHV0U3RyZWFtID8gbV9vdXRwdXRTdHJlYW0uZ2V0KCkg
OiBnX2lvX3N0cmVhbV9nZXRfb3V0cHV0X3N0cmVhbShHX0lPX1NUUkVBTShtX2lvU3RyZWFtLmdl
dCgpKSk7CiAgICAgaWYgKCFzdHJlYW0pIHsKLSAgICAgICAgcnVuVGFza0luUXVldWUoW2NoYW5u
ZWwsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildIHsKKyAg
ICAgICAgcnVuVGFza0luUXVldWUoW3Byb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRo
aXMpLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSB7CiAg
ICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcigtMSk7CiAgICAgICAgIH0sIHF1ZXVlKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIFdyaXRlQXN5bmNEYXRhKiBhc3luY0RhdGEgPSBu
ZXcgV3JpdGVBc3luY0RhdGEgeyB0aGlzLCBkYXRhLnNvdXBCdWZmZXIoKSwgcXVldWUsIFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpIH07CisgICAgV3JpdGVBc3luY0RhdGEqIGFzeW5jRGF0YSA9
IG5ldyBXcml0ZUFzeW5jRGF0YSB7IHRoaXMsIGRhdGEuYnl0ZXMoKSwgcXVldWUsIFdURk1vdmUo
Y29tcGxldGlvbkhhbmRsZXIpIH07CiAgICAgLy8gRklYTUU6IGltcGxlbWVudCBvZmZzZXQuCi0g
ICAgZ19vdXRwdXRfc3RyZWFtX3dyaXRlX2FzeW5jKHN0cmVhbSwgYXN5bmNEYXRhLT5idWZmZXIt
PmRhdGEsIGRhdGEuc2l6ZSgpLCBSdW5Mb29wU291cmNlUHJpb3JpdHk6OkRpc2tDYWNoZVdyaXRl
LCBudWxscHRyLAorICAgIGdfb3V0cHV0X3N0cmVhbV93cml0ZV9hc3luYyhzdHJlYW0sIGdfYnl0
ZXNfZ2V0X2RhdGEoYXN5bmNEYXRhLT5idWZmZXIuZ2V0KCksIG51bGxwdHIpLCBkYXRhLnNpemUo
KSwgUnVuTG9vcFNvdXJjZVByaW9yaXR5OjpEaXNrQ2FjaGVXcml0ZSwgbnVsbHB0ciwKICAgICAg
ICAgcmVpbnRlcnByZXRfY2FzdDxHQXN5bmNSZWFkeUNhbGxiYWNrPihvdXRwdXRTdHJlYW1Xcml0
ZVJlYWR5Q2FsbGJhY2spLCBhc3luY0RhdGEpOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1NoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9T
aGFyZWFibGVSZXNvdXJjZS5jcHAKaW5kZXggMzMxMmZiYzE1MWJlLi4yNTgzYzkzNTFiOTcgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU2hhcmVkL1NoYXJlYWJsZVJlc291cmNlLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5jcHAKQEAgLTg4LDggKzg4
LDExIEBAIFJlZlB0cjxTaGFyZWRCdWZmZXI+IFNoYXJlYWJsZVJlc291cmNlOjp3cmFwSW5TaGFy
ZWRCdWZmZXIoKQogICAgIFJldGFpblB0cjxDRkFsbG9jYXRvclJlZj4gZGVhbGxvY2F0b3IgPSBh
ZG9wdENGKGNyZWF0ZVNoYXJlYWJsZVJlc291cmNlRGVhbGxvY2F0b3IodGhpcykpOwogICAgIFJl
dGFpblB0cjxDRkRhdGFSZWY+IGNmRGF0YSA9IGFkb3B0Q0YoQ0ZEYXRhQ3JlYXRlV2l0aEJ5dGVz
Tm9Db3B5KGtDRkFsbG9jYXRvckRlZmF1bHQsIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgVUludDgq
PihkYXRhKCkpLCBzdGF0aWNfY2FzdDxDRkluZGV4PihzaXplKCkpLCBkZWFsbG9jYXRvci5nZXQo
KSkpOwogICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShjZkRhdGEuZ2V0KCkpOwotI2Vs
aWYgVVNFKFNPVVApCi0gICAgcmV0dXJuIFNoYXJlZEJ1ZmZlcjo6d3JhcFNvdXBCdWZmZXIoc291
cF9idWZmZXJfbmV3X3dpdGhfb3duZXIoZGF0YSgpLCBzaXplKCksIHRoaXMsIFtdKHZvaWQqIGRh
dGEpIHsgc3RhdGljX2Nhc3Q8U2hhcmVhYmxlUmVzb3VyY2UqPihkYXRhKS0+ZGVyZWYoKTsgfSkp
OworI2VsaWYgVVNFKEdMSUIpCisgICAgR1JlZlB0cjxHQnl0ZXM+IGJ5dGVzID0gYWRvcHRHUmVm
KGdfYnl0ZXNfbmV3X3dpdGhfZnJlZV9mdW5jKGRhdGEoKSwgc2l6ZSgpLCBbXSh2b2lkKiBkYXRh
KSB7CisgICAgICAgIHN0YXRpY19jYXN0PFNoYXJlYWJsZVJlc291cmNlKj4oZGF0YSktPmRlcmVm
KCk7CisgICAgfSwgdGhpcykpOworICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OmNyZWF0ZShieXRl
cy5nZXQoKSk7CiAjZWxzZQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgIHJldHVybiBu
dWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9Tb3VyY2VzR1RLLnR4dCBiL1NvdXJj
ZS9XZWJLaXQvU291cmNlc0dUSy50eHQKaW5kZXggNWQ1YjAzYjJlNWVlLi4zNzk1MGMzZTdmODAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvU291cmNlc0dUSy50eHQKKysrIGIvU291cmNlL1dl
YktpdC9Tb3VyY2VzR1RLLnR4dApAQCAtMzIsOCArMzIsOCBAQCBOZXR3b3JrUHJvY2Vzcy9DbGFz
c2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRpc3RpY3NTdG9yZS5jcHAKIAogTmV0d29ya1Byb2Nl
c3MvQ29va2llcy9zb3VwL1dlYkNvb2tpZU1hbmFnZXJTb3VwLmNwcAogCi1OZXR3b3JrUHJvY2Vz
cy9jYWNoZS9OZXR3b3JrQ2FjaGVEYXRhU291cC5jcHAKLU5ldHdvcmtQcm9jZXNzL2NhY2hlL05l
dHdvcmtDYWNoZUlPQ2hhbm5lbFNvdXAuY3BwCitOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3Jr
Q2FjaGVEYXRhR0xpYi5jcHAKK05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUlPQ2hh
bm5lbEdMaWIuY3BwCiAKIE5ldHdvcmtQcm9jZXNzL2dsaWIvRE5TQ2FjaGUuY3BwCiBOZXR3b3Jr
UHJvY2Vzcy9nbGliL1dlYktpdENhY2hlZFJlc29sdmVyLmNwcApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9Tb3VyY2VzV1BFLnR4dCBiL1NvdXJjZS9XZWJLaXQvU291cmNlc1dQRS50eHQKaW5k
ZXggYzY3NjcwNzRjZGI4Li5iNGU1YzgyNjc0OTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
U291cmNlc1dQRS50eHQKKysrIGIvU291cmNlL1dlYktpdC9Tb3VyY2VzV1BFLnR4dApAQCAtMzIs
OCArMzIsOCBAQCBOZXR3b3JrUHJvY2Vzcy9DbGFzc2lmaWVyL1dlYlJlc291cmNlTG9hZFN0YXRp
c3RpY3NTdG9yZS5jcHAKIAogTmV0d29ya1Byb2Nlc3MvQ29va2llcy9zb3VwL1dlYkNvb2tpZU1h
bmFnZXJTb3VwLmNwcAogCi1OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVEYXRhU291
cC5jcHAKLU5ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUlPQ2hhbm5lbFNvdXAuY3Bw
CitOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVEYXRhR0xpYi5jcHAKK05ldHdvcmtQ
cm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUlPQ2hhbm5lbEdMaWIuY3BwCiAKIE5ldHdvcmtQcm9j
ZXNzL2dsaWIvRE5TQ2FjaGUuY3BwCiBOZXR3b3JrUHJvY2Vzcy9nbGliL1dlYktpdENhY2hlZFJl
c29sdmVyLmNwcAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>418874</attachid>
            <date>2021-02-01 07:56:22 -0800</date>
            <delta_ts>2021-02-01 08:03:18 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>wk2-no-soup-buffer.diff</filename>
            <type>text/plain</type>
            <size>36210</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA0ZDM3MDkxNTJjMWYuLjQ5ZjhjMzA4MWU3NiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDI1IEBACisyMDIxLTAyLTAxICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFA
aWdhbGlhLmNvbT4KKworICAgICAgICBbU09VUF0gU3RvcCB1c2luZyBTb3VwQnVmZmVyIGluIHBy
ZXBhcmF0aW9uIGZvciBsaWJzb3VwMworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjIxMjA2CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgUmVtb3ZlIHVzZSBvZiBTb3VwQnVmZmVyIGZyb20gcGxhdGZvcm0gc2lu
Y2UgaXQncyBub3cgdW51c2VkLgorCisgICAgICAgICogcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6OmRhdGEgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6U2hhcmVkQnVmZmVyOjpEYXRhU2VnbWVudDo6c2l6ZSBj
b25zdCk6CisgICAgICAgICogcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmg6CisgICAgICAgICogcGxh
dGZvcm0vU291cC5jbWFrZToKKyAgICAgICAgKiBwbGF0Zm9ybS9Tb3VyY2VzU291cC50eHQ6Cisg
ICAgICAgICogcGxhdGZvcm0vbmV0d29yay9zb3VwL0dSZWZQdHJTb3VwLmNwcDogUmVtb3ZlZC4K
KyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvR1JlZlB0clNvdXAuaDogUmVtb3ZlZC4K
KyAgICAgICAgKiBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvR1VuaXF1ZVB0clNvdXAuaDoKKyAgICAg
ICAgKiBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvUmVzb3VyY2VSZXF1ZXN0U291cC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpSZXNvdXJjZVJlcXVlc3Q6OnVwZGF0ZVNvdXBNZXNzYWdlQm9keSBjb25z
dCk6CisgICAgICAgICogcGxhdGZvcm0vc291cC9TaGFyZWRCdWZmZXJTb3VwLmNwcDogUmVtb3Zl
ZC4KKwogMjAyMS0wMi0wMSAgWGFiaWVyIFJvZHJpZ3VleiBDYWx2YXIgIDxjYWx2YXJpc0BpZ2Fs
aWEuY29tPgogCiAgICAgICAgIFtHU3RyZWFtZXJdW0VNRV1bVGh1bmRlcl0gQWRkIHZpZGVvL3gt
dnA5IGFzIHN1cHBvcnRlZCBmb3IgY2VuYyBhbmQgY2JjcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L1NoYXJlZEJ1ZmZlci5jcHAKaW5kZXggNjY4YWU1NDdiOGUzLi41MWJjNGFhOTgzYzggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NoYXJlZEJ1ZmZlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmNwcApAQCAtMjM2LDkgKzIzNiw2IEBA
IGNvbnN0IGNoYXIqIFNoYXJlZEJ1ZmZlcjo6RGF0YVNlZ21lbnQ6OmRhdGEoKSBjb25zdAogI2lm
IFVTRShDRikKICAgICAgICAgW10oY29uc3QgUmV0YWluUHRyPENGRGF0YVJlZj4mIGRhdGEpIHsg
cmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgY2hhcio+KENGRGF0YUdldEJ5dGVQdHIoZGF0
YS5nZXQoKSkpOyB9LAogI2VuZGlmCi0jaWYgVVNFKFNPVVApCi0gICAgICAgIFtdKGNvbnN0IEdV
bmlxdWVQdHI8U291cEJ1ZmZlcj4mIGRhdGEpIHsgcmV0dXJuIGRhdGEtPmRhdGE7IH0sCi0jZW5k
aWYKICNpZiBVU0UoR0xJQikKICAgICAgICAgW10oY29uc3QgR1JlZlB0cjxHQnl0ZXM+JiBkYXRh
KSB7IHJldHVybiByZWludGVycHJldF9jYXN0PGNvbnN0IGNoYXIqPihnX2J5dGVzX2dldF9kYXRh
KGRhdGEuZ2V0KCksIG51bGxwdHIpKTsgfSwKICNlbmRpZgpAQCAtMzE3LDkgKzMxNCw2IEBAIHNp
emVfdCBTaGFyZWRCdWZmZXI6OkRhdGFTZWdtZW50OjpzaXplKCkgY29uc3QKICNpZiBVU0UoQ0Yp
CiAgICAgICAgIFtdKGNvbnN0IFJldGFpblB0cjxDRkRhdGFSZWY+JiBkYXRhKSB7IHJldHVybiBD
RkRhdGFHZXRMZW5ndGgoZGF0YS5nZXQoKSk7IH0sCiAjZW5kaWYKLSNpZiBVU0UoU09VUCkKLSAg
ICAgICAgW10oY29uc3QgR1VuaXF1ZVB0cjxTb3VwQnVmZmVyPiYgZGF0YSkgeyByZXR1cm4gc3Rh
dGljX2Nhc3Q8c2l6ZV90PihkYXRhLT5sZW5ndGgpOyB9LAotI2VuZGlmCiAjaWYgVVNFKEdMSUIp
CiAgICAgICAgIFtdKGNvbnN0IEdSZWZQdHI8R0J5dGVzPiYgZGF0YSkgeyByZXR1cm4gZ19ieXRl
c19nZXRfc2l6ZShkYXRhLmdldCgpKTsgfSwKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9T
aGFyZWRCdWZmZXIuaAppbmRleCA2OTcwMzVlZmNmOTcuLjIzYmY1YThlZGI0YyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmgKQEAgLTM5LDEwICszOSw2IEBACiAjaW5jbHVk
ZSA8d3RmL1JldGFpblB0ci5oPgogI2VuZGlmCiAKLSNpZiBVU0UoU09VUCkKLSNpbmNsdWRlICJH
VW5pcXVlUHRyU291cC5oIgotI2VuZGlmCi0KICNpZiBVU0UoR0xJQikKICNpbmNsdWRlIDx3dGYv
Z2xpYi9HUmVmUHRyLmg+CiB0eXBlZGVmIHN0cnVjdCBfR0J5dGVzIEdCeXRlczsKQEAgLTg5LDEx
ICs4NSw2IEBAIHB1YmxpYzoKICAgICB2b2lkIGFwcGVuZChDRkRhdGFSZWYpOwogI2VuZGlmCiAK
LSNpZiBVU0UoU09VUCkKLSAgICBHVW5pcXVlUHRyPFNvdXBCdWZmZXI+IGNyZWF0ZVNvdXBCdWZm
ZXIodW5zaWduZWQgb2Zmc2V0ID0gMCwgdW5zaWduZWQgc2l6ZSA9IDApOwotICAgIHN0YXRpYyBS
ZWY8U2hhcmVkQnVmZmVyPiB3cmFwU291cEJ1ZmZlcihTb3VwQnVmZmVyKik7Ci0jZW5kaWYKLQog
I2lmIFVTRShHTElCKQogICAgIHN0YXRpYyBSZWY8U2hhcmVkQnVmZmVyPiBjcmVhdGUoR0J5dGVz
Kik7CiAgICAgR1JlZlB0cjxHQnl0ZXM+IGNyZWF0ZUdCeXRlcygpIGNvbnN0OwpAQCAtMTQwLDkg
KzEzMSw2IEBAIHB1YmxpYzoKICNpZiBVU0UoQ0YpCiAgICAgICAgIHN0YXRpYyBSZWY8RGF0YVNl
Z21lbnQ+IGNyZWF0ZShSZXRhaW5QdHI8Q0ZEYXRhUmVmPiYmIGRhdGEpIHsgcmV0dXJuIGFkb3B0
UmVmKCpuZXcgRGF0YVNlZ21lbnQoV1RGTW92ZShkYXRhKSkpOyB9CiAjZW5kaWYKLSNpZiBVU0Uo
U09VUCkKLSAgICAgICAgc3RhdGljIFJlZjxEYXRhU2VnbWVudD4gY3JlYXRlKEdVbmlxdWVQdHI8
U291cEJ1ZmZlcj4mJiBkYXRhKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFTZWdtZW50KFdU
Rk1vdmUoZGF0YSkpKTsgfQotI2VuZGlmCiAjaWYgVVNFKEdMSUIpCiAgICAgICAgIHN0YXRpYyBS
ZWY8RGF0YVNlZ21lbnQ+IGNyZWF0ZShHUmVmUHRyPEdCeXRlcz4mJiBkYXRhKSB7IHJldHVybiBh
ZG9wdFJlZigqbmV3IERhdGFTZWdtZW50KFdURk1vdmUoZGF0YSkpKTsgfQogI2VuZGlmCkBAIC0x
NjIsMTAgKzE1MCw2IEBAIHB1YmxpYzoKICAgICAgICAgRGF0YVNlZ21lbnQoUmV0YWluUHRyPENG
RGF0YVJlZj4mJiBkYXRhKQogICAgICAgICAgICAgOiBtX2ltbXV0YWJsZURhdGEoV1RGTW92ZShk
YXRhKSkgeyB9CiAjZW5kaWYKLSNpZiBVU0UoU09VUCkKLSAgICAgICAgRGF0YVNlZ21lbnQoR1Vu
aXF1ZVB0cjxTb3VwQnVmZmVyPiYmIGRhdGEpCi0gICAgICAgICAgICA6IG1faW1tdXRhYmxlRGF0
YShXVEZNb3ZlKGRhdGEpKSB7IH0KLSNlbmRpZgogI2lmIFVTRShHTElCKQogICAgICAgICBEYXRh
U2VnbWVudChHUmVmUHRyPEdCeXRlcz4mJiBkYXRhKQogICAgICAgICAgICAgOiBtX2ltbXV0YWJs
ZURhdGEoV1RGTW92ZShkYXRhKSkgeyB9CkBAIC0xODEsOSArMTY1LDYgQEAgcHVibGljOgogI2lm
IFVTRShDRikKICAgICAgICAgICAgIFJldGFpblB0cjxDRkRhdGFSZWY+LAogI2VuZGlmCi0jaWYg
VVNFKFNPVVApCi0gICAgICAgICAgICBHVW5pcXVlUHRyPFNvdXBCdWZmZXI+LAotI2VuZGlmCiAj
aWYgVVNFKEdMSUIpCiAgICAgICAgICAgICBHUmVmUHRyPEdCeXRlcz4sCiAjZW5kaWYKQEAgLTIy
Myw5ICsyMDQsNiBAQCBwcml2YXRlOgogI2lmIFVTRShDRikKICAgICBleHBsaWNpdCBTaGFyZWRC
dWZmZXIoQ0ZEYXRhUmVmKTsKICNlbmRpZgotI2lmIFVTRShTT1VQKQotICAgIGV4cGxpY2l0IFNo
YXJlZEJ1ZmZlcihTb3VwQnVmZmVyKik7Ci0jZW5kaWYKICNpZiBVU0UoR0xJQikKICAgICBleHBs
aWNpdCBTaGFyZWRCdWZmZXIoR0J5dGVzKik7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1NvdXAuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Tb3Vw
LmNtYWtlCmluZGV4IGQ3ZDg5MmJkYjA3Yi4uMDAxNTgxM2M5MWMyIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9Tb3VwLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1NvdXAuY21ha2UKQEAgLTksNyArOSw2IEBAIGxpc3QoQVBQRU5EIFdlYkNvcmVfVU5JRklF
RF9TT1VSQ0VfTElTVF9GSUxFUwogbGlzdChBUFBFTkQgV2ViQ29yZV9QUklWQVRFX0ZSQU1FV09S
S19IRUFERVJTCiAgICAgcGxhdGZvcm0vbmV0d29yay9zb3VwL0F1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlLmgKICAgICBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvQ2VydGlmaWNhdGVJbmZvLmgKLSAgICBw
bGF0Zm9ybS9uZXR3b3JrL3NvdXAvR1JlZlB0clNvdXAuaAogICAgIHBsYXRmb3JtL25ldHdvcmsv
c291cC9HVW5pcXVlUHRyU291cC5oCiAgICAgcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291cmNl
RXJyb3IuaAogICAgIHBsYXRmb3JtL25ldHdvcmsvc291cC9SZXNvdXJjZVJlcXVlc3QuaApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU291cmNlc1NvdXAudHh0IGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vU291cmNlc1NvdXAudHh0CmluZGV4IDg3ZGMxNjc3NWYxMi4uOWQ4
YzhiNmYzMmY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9Tb3VyY2VzU291
cC50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU291cmNlc1NvdXAudHh0CkBAIC0y
Niw3ICsyNiw2IEBAIHBsYXRmb3JtL25ldHdvcmsvc291cC9DZXJ0aWZpY2F0ZUluZm9Tb3VwLmNw
cAogcGxhdGZvcm0vbmV0d29yay9zb3VwL0Nvb2tpZVNvdXAuY3BwCiBwbGF0Zm9ybS9uZXR3b3Jr
L3NvdXAvQ29va2llU3RvcmFnZVNvdXAuY3BwCiBwbGF0Zm9ybS9uZXR3b3JrL3NvdXAvQ3JlZGVu
dGlhbFN0b3JhZ2VTb3VwLmNwcAotcGxhdGZvcm0vbmV0d29yay9zb3VwL0dSZWZQdHJTb3VwLmNw
cAogcGxhdGZvcm0vbmV0d29yay9zb3VwL05ldHdvcmtTdG9yYWdlU2Vzc2lvblNvdXAuY3BwCiBw
bGF0Zm9ybS9uZXR3b3JrL3NvdXAvUHJveHlTZXJ2ZXJTb3VwLmNwcAogcGxhdGZvcm0vbmV0d29y
ay9zb3VwL1Jlc291cmNlRXJyb3JTb3VwLmNwcApAQCAtMzksNCArMzgsMyBAQCBwbGF0Zm9ybS9u
ZXR3b3JrL3NvdXAvVVJMU291cC5jcHAKIHBsYXRmb3JtL25ldHdvcmsvc291cC9XZWJLaXRGb3Jt
RGF0YUlucHV0U3RyZWFtLmNwcCBAbm8tdW5pZnkKIAogcGxhdGZvcm0vc291cC9QdWJsaWNTdWZm
aXhTb3VwLmNwcAotcGxhdGZvcm0vc291cC9TaGFyZWRCdWZmZXJTb3VwLmNwcApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL0dSZWZQdHJTb3VwLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9HUmVmUHRyU291cC5jcHAKZGVs
ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwOWFlYzE2OGY0NS4uMDAwMDAwMDAwMDAwCi0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9HUmVmUHRyU291cC5jcHAK
KysrIC9kZXYvbnVsbApAQCAtMSwzNSArMCwwIEBACi0vKgotICogIENvcHlyaWdodCAoQykgMjAx
NSBJZ2FsaWEgUy5MLgotICoKLSAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91
IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJt
cyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwotICogIExpY2Vuc2UgYXMgcHVibGlz
aGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogIHZlcnNpb24g
MiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4K
LSAqCi0gKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQg
d2lsbCBiZSB1c2VmdWwsCi0gKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2
ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVT
UyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICogIExlc3NlciBHZW5l
cmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICogIFlvdSBzaG91bGQg
aGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKLSAq
ICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBG
cmVlIFNvZnR3YXJlCi0gKiAgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBG
aWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMwMSAgVVNBCi0gKi8KLQotI2luY2x1ZGUg
ImNvbmZpZy5oIgotI2luY2x1ZGUgIkdSZWZQdHJTb3VwLmgiCi0KLW5hbWVzcGFjZSBXVEYgewot
Ci10ZW1wbGF0ZSA8PiBTb3VwQnVmZmVyKiByZWZHUHRyKFNvdXBCdWZmZXIqIHB0cikKLXsKLSAg
ICByZXR1cm4gcHRyID8gc291cF9idWZmZXJfY29weShwdHIpIDogbnVsbHB0cjsKLX0KLQotdGVt
cGxhdGUgPD4gdm9pZCBkZXJlZkdQdHIoU291cEJ1ZmZlciogcHRyKQotewotICAgIGlmIChwdHIp
Ci0gICAgICAgIHNvdXBfYnVmZmVyX2ZyZWUocHRyKTsKLX0KLQotfSAvLyBuYW1lc3BhY2UgV1RG
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvR1JlZlB0
clNvdXAuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9HUmVmUHRyU291
cC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhNTk4OGUyZmI5N2QuLjAwMDAwMDAw
MDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9uZXR3b3JrL3NvdXAvR1JlZlB0clNv
dXAuaAorKysgL2Rldi9udWxsCkBAIC0xLDM3ICswLDAgQEAKLS8qCi0gKiAgQ29weXJpZ2h0IChD
KSAyMDE1IElnYWxpYSBTLkwuCi0gKgotICogIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJl
OyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqICBtb2RpZnkgaXQgdW5kZXIgdGhl
IHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICogIExpY2Vuc2UgYXMg
cHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogIHZl
cnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVy
c2lvbi4KLSAqCi0gKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRo
YXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRo
b3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqICBNRVJDSEFOVEFCSUxJVFkgb3Ig
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICogIExpYnJh
cnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqICBZb3Ug
c2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1
YmxpYyBMaWNlbnNlCi0gKiAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBD
T1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAqICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu
ZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICogIEJvc3Rv
biwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICovCi0KLSNpZm5kZWYgR1JlZlB0clNvdXBfaAotI2Rl
ZmluZSBHUmVmUHRyU291cF9oCi0KLSNpZiBVU0UoU09VUCkKLQotI2luY2x1ZGUgPGxpYnNvdXAv
c291cC5oPgotI2luY2x1ZGUgPHd0Zi9nbGliL0dSZWZQdHIuaD4KLQotbmFtZXNwYWNlIFdURiB7
Ci0KLXRlbXBsYXRlIDw+IFNvdXBCdWZmZXIqIHJlZkdQdHIoU291cEJ1ZmZlciopOwotdGVtcGxh
dGUgPD4gdm9pZCBkZXJlZkdQdHIoU291cEJ1ZmZlciopOwotCi19IC8vIG5hbWVzcGFjZSBXVEYK
LQotI2VuZGlmIC8vIFVTRShTT1VQKQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9HVW5pcXVlUHRyU291cC5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL0dVbmlxdWVQdHJTb3VwLmgKaW5kZXggZjU5ZjJjODc3
OTg5Li5hZmJlODQ3MTIxYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25l
dHdvcmsvc291cC9HVW5pcXVlUHRyU291cC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L25ldHdvcmsvc291cC9HVW5pcXVlUHRyU291cC5oCkBAIC0zMSw3ICszMSw2IEBAIG5hbWVzcGFj
ZSBXVEYgewogV1RGX0RFRklORV9HUFRSX0RFTEVURVIoU291cFVSSSwgc291cF91cmlfZnJlZSkK
IFdURl9ERUZJTkVfR1BUUl9ERUxFVEVSKFNvdXBDb29raWUsIHNvdXBfY29va2llX2ZyZWUpCiBX
VEZfREVGSU5FX0dQVFJfREVMRVRFUihTb3VwTWVzc2FnZUhlYWRlcnMsIHNvdXBfbWVzc2FnZV9o
ZWFkZXJzX2ZyZWUpCi1XVEZfREVGSU5FX0dQVFJfREVMRVRFUihTb3VwQnVmZmVyLCBzb3VwX2J1
ZmZlcl9mcmVlKQogI2lmIFNPVVBfQ0hFQ0tfVkVSU0lPTigyLCA2NywgMSkKIFdURl9ERUZJTkVf
R1BUUl9ERUxFVEVSKFNvdXBIU1RTUG9saWN5LCBzb3VwX2hzdHNfcG9saWN5X2ZyZWUpCiAjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291cC9SZXNv
dXJjZVJlcXVlc3RTb3VwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsvc291
cC9SZXNvdXJjZVJlcXVlc3RTb3VwLmNwcAppbmRleCBjNzAxYmNkOWFmYmQuLjMxZGU0N2Y5YTRk
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbmV0d29yay9zb3VwL1Jlc291
cmNlUmVxdWVzdFNvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL25ldHdvcmsv
c291cC9SZXNvdXJjZVJlcXVlc3RTb3VwLmNwcApAQCAtNjYsOSArNjYsMTAgQEAgdm9pZCBSZXNv
dXJjZVJlcXVlc3Q6OnVwZGF0ZVNvdXBNZXNzYWdlQm9keShTb3VwTWVzc2FnZSogc291cE1lc3Nh
Z2UsIEJsb2JSZWdpc3QKICAgICBHUmVmUHRyPEdJbnB1dFN0cmVhbT4gc3RyZWFtID0gd2Via2l0
Rm9ybURhdGFJbnB1dFN0cmVhbU5ldyhXVEZNb3ZlKHJlc29sdmVkRm9ybURhdGEpKTsKICAgICBp
ZiAoR0J5dGVzKiBkYXRhID0gd2Via2l0Rm9ybURhdGFJbnB1dFN0cmVhbVJlYWRBbGwoV0VCS0lU
X0ZPUk1fREFUQV9JTlBVVF9TVFJFQU0oc3RyZWFtLmdldCgpKSkpIHsKICAgICAgICAgc291cF9t
ZXNzYWdlX2JvZHlfc2V0X2FjY3VtdWxhdGUoc291cE1lc3NhZ2UtPnJlcXVlc3RfYm9keSwgRkFM
U0UpOwotICAgICAgICBHVW5pcXVlUHRyPFNvdXBCdWZmZXI+IHNvdXBCdWZmZXIoc291cF9idWZm
ZXJfbmV3X3dpdGhfb3duZXIoZ19ieXRlc19nZXRfZGF0YShkYXRhLCBudWxscHRyKSwKLSAgICAg
ICAgICAgIGdfYnl0ZXNfZ2V0X3NpemUoZGF0YSksIGRhdGEsIHJlaW50ZXJwcmV0X2Nhc3Q8R0Rl
c3Ryb3lOb3RpZnk+KGdfYnl0ZXNfdW5yZWYpKSk7Ci0gICAgICAgIHNvdXBfbWVzc2FnZV9ib2R5
X2FwcGVuZF9idWZmZXIoc291cE1lc3NhZ2UtPnJlcXVlc3RfYm9keSwgc291cEJ1ZmZlci5nZXQo
KSk7CisgICAgICAgIFNvdXBCdWZmZXIqIHNvdXBCdWZmZXIgPSBzb3VwX2J1ZmZlcl9uZXdfd2l0
aF9vd25lcihnX2J5dGVzX2dldF9kYXRhKGRhdGEsIG51bGxwdHIpLAorICAgICAgICAgICAgZ19i
eXRlc19nZXRfc2l6ZShkYXRhKSwgZGF0YSwgcmVpbnRlcnByZXRfY2FzdDxHRGVzdHJveU5vdGlm
eT4oZ19ieXRlc191bnJlZikpOworICAgICAgICBzb3VwX21lc3NhZ2VfYm9keV9hcHBlbmRfYnVm
ZmVyKHNvdXBNZXNzYWdlLT5yZXF1ZXN0X2JvZHksIHNvdXBCdWZmZXIpOworICAgICAgICBzb3Vw
X2J1ZmZlcl9mcmVlKHNvdXBCdWZmZXIpOwogICAgIH0KIAogICAgIEFTU0VSVChsZW5ndGggPT0g
c3RhdGljX2Nhc3Q8dWludDY0X3Q+KHNvdXBNZXNzYWdlLT5yZXF1ZXN0X2JvZHktPmxlbmd0aCkp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vc291cC9TaGFyZWRCdWZmZXJT
b3VwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NvdXAvU2hhcmVkQnVmZmVyU291cC5j
cHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE3YWQyNDc1ZTkwZi4uMDAwMDAwMDAw
MDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3NvdXAvU2hhcmVkQnVmZmVyU291cC5j
cHAKKysrIC9kZXYvbnVsbApAQCAtMSw1MiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDEzIENvbXBhbnkgMTAwIEluYy4KLSAqCi0gKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdh
cmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogIG1vZGlmeSBpdCB1bmRlciB0
aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKLSAqICBMaWNlbnNlIGFz
IHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAqICB2
ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZl
cnNpb24uCi0gKgotICogIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0
aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0
aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiAgTUVSQ0hBTlRBQklMSVRZIG9y
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqICBMZXNz
ZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqICBZb3Ug
c2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVi
bGljCi0gKiAgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0
byB0aGUgRnJlZSBTb2Z0d2FyZQotICogIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0
cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEgIFVTQQotICovCi0KLSNp
bmNsdWRlICJjb25maWcuaCIKLQotI2lmIFVTRShTT1VQKQotCi0jaW5jbHVkZSAiU2hhcmVkQnVm
ZmVyLmgiCi0KLSNpbmNsdWRlIDxsaWJzb3VwL3NvdXAuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUg
ewotCi1TaGFyZWRCdWZmZXI6OlNoYXJlZEJ1ZmZlcihTb3VwQnVmZmVyKiBzb3VwQnVmZmVyKQot
ewotICAgIEFTU0VSVChzb3VwQnVmZmVyKTsKLSAgICBtX3NpemUgPSBzb3VwQnVmZmVyLT5sZW5n
dGg7Ci0gICAgbV9zZWdtZW50cy5hcHBlbmQoezAsIERhdGFTZWdtZW50OjpjcmVhdGUoR1VuaXF1
ZVB0cjxTb3VwQnVmZmVyPihzb3VwQnVmZmVyKSl9KTsKLX0KLQotUmVmPFNoYXJlZEJ1ZmZlcj4g
U2hhcmVkQnVmZmVyOjp3cmFwU291cEJ1ZmZlcihTb3VwQnVmZmVyKiBzb3VwQnVmZmVyKQotewot
ICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNoYXJlZEJ1ZmZlcihzb3VwQnVmZmVyKSk7Ci19Ci0K
LUdVbmlxdWVQdHI8U291cEJ1ZmZlcj4gU2hhcmVkQnVmZmVyOjpjcmVhdGVTb3VwQnVmZmVyKHVu
c2lnbmVkIG9mZnNldCwgdW5zaWduZWQgc2l6ZSkKLXsKLSAgICByZWYoKTsKLSAgICBHVW5pcXVl
UHRyPFNvdXBCdWZmZXI+IGJ1ZmZlcihzb3VwX2J1ZmZlcl9uZXdfd2l0aF9vd25lcihkYXRhKCkg
KyBvZmZzZXQsIHNpemUgPyBzaXplIDogdGhpcy0+c2l6ZSgpLCB0aGlzLCBbXSh2b2lkKiBkYXRh
KSB7Ci0gICAgICAgIHN0YXRpY19jYXN0PFNoYXJlZEJ1ZmZlcio+KGRhdGEpLT5kZXJlZigpOwot
ICAgIH0pKTsKLSAgICByZXR1cm4gYnVmZmVyOwotfQotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
Ci0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZwppbmRleCAyY2FkNzhmMWU2ZWYuLmM4MzYwNWUwNjYyZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VM
b2cKQEAgLTEsMyArMSwzNyBAQAorMjAyMS0wMi0wMSAgQ2FybG9zIEdhcmNpYSBDYW1wb3MgIDxj
Z2FyY2lhQGlnYWxpYS5jb20+CisKKyAgICAgICAgW1NPVVBdIFN0b3AgdXNpbmcgU291cEJ1ZmZl
ciBpbiBwcmVwYXJhdGlvbiBmb3IgbGlic291cDMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIyMTIwNgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFVzZSBHQnl0ZXMgaW5zdGVhZCBvZiBTb3VwQnVmZmVyLgor
CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRGF0YS5oOgorICAg
ICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OkRhdGE6OmJ5dGVzIGNvbnN0KToKKyAgICAgICAg
KiBOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVEYXRhR0xpYi5jcHA6IFJlbmFtZWQg
ZnJvbSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZURhdGFT
b3VwLmNwcC4KKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpEYXRhOjpEYXRhKToKKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpEYXRhOjplbXB0eSk6CisgICAgICAgIChXZWJL
aXQ6Ok5ldHdvcmtDYWNoZTo6RGF0YTo6ZGF0YSBjb25zdCk6CisgICAgICAgIChXZWJLaXQ6Ok5l
dHdvcmtDYWNoZTo6RGF0YTo6YXBwbHkgY29uc3QpOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3Jr
Q2FjaGU6OkRhdGE6OnN1YnJhbmdlIGNvbnN0KToKKyAgICAgICAgKFdlYktpdDo6TmV0d29ya0Nh
Y2hlOjpjb25jYXRlbmF0ZSk6CisgICAgICAgIChXZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6RGF0YTo6
YWRvcHRNYXApOgorICAgICAgICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OkRhdGE6OnRyeUNyZWF0
ZVNoYXJlZE1lbW9yeSBjb25zdCk6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0
d29ya0NhY2hlSU9DaGFubmVsLmg6CisgICAgICAgICogTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0
d29ya0NhY2hlSU9DaGFubmVsR0xpYi5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViS2l0L05l
dHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUlPQ2hhbm5lbFNvdXAuY3BwLgorICAgICAg
ICAoV2ViS2l0OjpOZXR3b3JrQ2FjaGU6OnJ1blRhc2tJblF1ZXVlKToKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya0NhY2hlOjpmaWxsRGF0YUZyb21SZWFkQnVmZmVyKToKKyAgICAgICAgKFdlYktp
dDo6TmV0d29ya0NhY2hlOjppbnB1dFN0cmVhbVJlYWRSZWFkeUNhbGxiYWNrKToKKyAgICAgICAg
KFdlYktpdDo6TmV0d29ya0NhY2hlOjpJT0NoYW5uZWw6OnJlYWQpOgorICAgICAgICAoV2ViS2l0
OjpOZXR3b3JrQ2FjaGU6OklPQ2hhbm5lbDo6cmVhZFN5bmNJblRocmVhZCk6CisgICAgICAgIChX
ZWJLaXQ6Ok5ldHdvcmtDYWNoZTo6b3V0cHV0U3RyZWFtV3JpdGVSZWFkeUNhbGxiYWNrKToKKyAg
ICAgICAgKFdlYktpdDo6TmV0d29ya0NhY2hlOjpJT0NoYW5uZWw6OndyaXRlKToKKyAgICAgICAg
KiBTaGFyZWQvU2hhcmVhYmxlUmVzb3VyY2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpTaGFyZWFi
bGVSZXNvdXJjZTo6d3JhcEluU2hhcmVkQnVmZmVyKToKKyAgICAgICAgKiBTb3VyY2VzR1RLLnR4
dDoKKyAgICAgICAgKiBTb3VyY2VzV1BFLnR4dDoKKwogMjAyMS0wMi0wMSAgQ2FybG9zIEdhcmNp
YSBDYW1wb3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAgW1NPVVBdIEFkZCBzdXBw
b3J0IGZvciBkYXRhIFVSTHMgaW4gdGhlIG5ldHdvcmsgcHJvY2VzcwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVEYXRhLmggYi9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZURhdGEuaAppbmRleCAz
N2I1OTY2NTZhNWQuLmVkMTkxZGM3ZGUyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9OZXR3
b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVEYXRhLmgKKysrIGIvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVEYXRhLmgKQEAgLTM1LDggKzM1LDggQEAK
ICNpbmNsdWRlIDx3dGYvT1NPYmplY3RQdHIuaD4KICNlbmRpZgogCi0jaWYgVVNFKFNPVVApCi0j
aW5jbHVkZSA8V2ViQ29yZS9HUmVmUHRyU291cC5oPgorI2lmIFVTRShHTElCKQorI2luY2x1ZGUg
PHd0Zi9nbGliL0dSZWZQdHIuaD4KICNlbmRpZgogCiAjaWYgVVNFKENVUkwpCkBAIC02NCw4ICs2
NCw4IEBAIHB1YmxpYzoKICAgICBlbnVtIGNsYXNzIEJhY2tpbmcgeyBCdWZmZXIsIE1hcCB9Owog
ICAgIERhdGEoT1NPYmplY3RQdHI8ZGlzcGF0Y2hfZGF0YV90PiYmLCBCYWNraW5nID0gQmFja2lu
Zzo6QnVmZmVyKTsKICNlbmRpZgotI2lmIFVTRShTT1VQKQotICAgIERhdGEoR1JlZlB0cjxTb3Vw
QnVmZmVyPiYmLCBGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUgZmQgPSBGaWxlU3lzdGVt
OjppbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlKTsKKyNpZiBVU0UoR0xJQikKKyAgICBEYXRhKEdS
ZWZQdHI8R0J5dGVzPiYmLCBGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUgZmQgPSBGaWxl
U3lzdGVtOjppbnZhbGlkUGxhdGZvcm1GaWxlSGFuZGxlKTsKICNlbGlmIFVTRShDVVJMKQogICAg
IERhdGEoVmFyaWFudDxWZWN0b3I8dWludDhfdD4sIEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRh
PiYmKTsKICNlbmRpZgpAQCAtODcsMTUgKzg3LDE1IEBAIHB1YmxpYzoKICAgICBkaXNwYXRjaF9k
YXRhX3QgZGlzcGF0Y2hEYXRhKCkgY29uc3QgeyByZXR1cm4gbV9kaXNwYXRjaERhdGEuZ2V0KCk7
IH0KICNlbmRpZgogCi0jaWYgVVNFKFNPVVApCi0gICAgU291cEJ1ZmZlciogc291cEJ1ZmZlcigp
IGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyLmdldCgpOyB9CisjaWYgVVNFKEdMSUIpCisgICAgR0J5
dGVzKiBieXRlcygpIGNvbnN0IHsgcmV0dXJuIG1fYnVmZmVyLmdldCgpOyB9CiAjZW5kaWYKIHBy
aXZhdGU6CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgbXV0YWJsZSBPU09iamVjdFB0cjxkaXNw
YXRjaF9kYXRhX3Q+IG1fZGlzcGF0Y2hEYXRhOwogI2VuZGlmCi0jaWYgVVNFKFNPVVApCi0gICAg
bXV0YWJsZSBHUmVmUHRyPFNvdXBCdWZmZXI+IG1fYnVmZmVyOworI2lmIFVTRShHTElCKQorICAg
IG11dGFibGUgR1JlZlB0cjxHQnl0ZXM+IG1fYnVmZmVyOwogICAgIEZpbGVTeXN0ZW06OlBsYXRm
b3JtRmlsZUhhbmRsZSBtX2ZpbGVEZXNjcmlwdG9yIHsgRmlsZVN5c3RlbTo6aW52YWxpZFBsYXRm
b3JtRmlsZUhhbmRsZSB9OwogI2VuZGlmCiAjaWYgVVNFKENVUkwpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZURhdGFTb3VwLmNwcCBi
L1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRGF0YUdMaWIu
Y3BwCnNpbWlsYXJpdHkgaW5kZXggNjklCnJlbmFtZSBmcm9tIFNvdXJjZS9XZWJLaXQvTmV0d29y
a1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRGF0YVNvdXAuY3BwCnJlbmFtZSB0byBTb3VyY2Uv
V2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZURhdGFHTGliLmNwcAppbmRl
eCBkM2I3OWUwMTRhNzkuLjk0MTQwNTVkNWQ2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9O
ZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVEYXRhU291cC5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVEYXRhR0xpYi5jcHAKQEAg
LTI2LDYgKzI2LDggQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJOZXR3b3JrQ2Fj
aGVEYXRhLmgiCiAKKyNpZiBVU0UoR0xJQikKKwogI2luY2x1ZGUgIlNoYXJlZE1lbW9yeS5oIgog
I2luY2x1ZGUgPGZjbnRsLmg+CiAjaW5jbHVkZSA8c3lzL21tYW4uaD4KQEAgLTMzLDcgKzM1LDcg
QEAKICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KICNpbmNsdWRlIDx1bmlzdGQuaD4KIAotI2lmIFVT
RShHTElCKSAmJiAhUExBVEZPUk0oV0lOKQorI2lmICFQTEFURk9STShXSU4pCiAjaW5jbHVkZSA8
Z2lvL2dmaWxlZGVzY3JpcHRvcmJhc2VkLmg+CiAjZW5kaWYKIApAQCAtNDUsMjYgKzQ3LDI1IEBA
IERhdGE6OkRhdGEoY29uc3QgdWludDhfdCogZGF0YSwgc2l6ZV90IHNpemUpCiB7CiAgICAgdWlu
dDhfdCogY29waWVkRGF0YSA9IHN0YXRpY19jYXN0PHVpbnQ4X3QqPihmYXN0TWFsbG9jKHNpemUp
KTsKICAgICBtZW1jcHkoY29waWVkRGF0YSwgZGF0YSwgc2l6ZSk7Ci0gICAgbV9idWZmZXIgPSBh
ZG9wdEdSZWYoc291cF9idWZmZXJfbmV3X3dpdGhfb3duZXIoY29waWVkRGF0YSwgc2l6ZSwgY29w
aWVkRGF0YSwgZmFzdEZyZWUpKTsKKyAgICBtX2J1ZmZlciA9IGFkb3B0R1JlZihnX2J5dGVzX25l
d193aXRoX2ZyZWVfZnVuYyhjb3BpZWREYXRhLCBzaXplLCBmYXN0RnJlZSwgY29waWVkRGF0YSkp
OwogfQogCi1EYXRhOjpEYXRhKEdSZWZQdHI8U291cEJ1ZmZlcj4mJiBidWZmZXIsIEZpbGVTeXN0
ZW06OlBsYXRmb3JtRmlsZUhhbmRsZSBmZCkKLSAgICA6IG1fYnVmZmVyKGJ1ZmZlcikKK0RhdGE6
OkRhdGEoR1JlZlB0cjxHQnl0ZXM+JiYgYnVmZmVyLCBGaWxlU3lzdGVtOjpQbGF0Zm9ybUZpbGVI
YW5kbGUgZmQpCisgICAgOiBtX2J1ZmZlcihXVEZNb3ZlKGJ1ZmZlcikpCiAgICAgLCBtX2ZpbGVE
ZXNjcmlwdG9yKGZkKQotICAgICwgbV9zaXplKGJ1ZmZlciA/IGJ1ZmZlci0+bGVuZ3RoIDogMCkK
KyAgICAsIG1fc2l6ZShtX2J1ZmZlciA/IGdfYnl0ZXNfZ2V0X3NpemUobV9idWZmZXIuZ2V0KCkp
IDogMCkKICAgICAsIG1faXNNYXAobV9zaXplICYmIEZpbGVTeXN0ZW06OmlzSGFuZGxlVmFsaWQo
ZmQpKQogewogfQogCiBEYXRhIERhdGE6OmVtcHR5KCkKIHsKLSAgICBHUmVmUHRyPFNvdXBCdWZm
ZXI+IGJ1ZmZlciA9IGFkb3B0R1JlZihzb3VwX2J1ZmZlcl9uZXcoU09VUF9NRU1PUllfVEFLRSwg
bnVsbHB0ciwgMCkpOwotICAgIHJldHVybiB7IFdURk1vdmUoYnVmZmVyKSB9OworICAgIHJldHVy
biB7IGFkb3B0R1JlZihnX2J5dGVzX25ldyhudWxscHRyLCAwKSkgfTsKIH0KIAogY29uc3QgdWlu
dDhfdCogRGF0YTo6ZGF0YSgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fYnVmZmVyID8gcmVpbnRl
cnByZXRfY2FzdDxjb25zdCB1aW50OF90Kj4obV9idWZmZXItPmRhdGEpIDogbnVsbHB0cjsKKyAg
ICByZXR1cm4gbV9idWZmZXIgPyByZWludGVycHJldF9jYXN0PGNvbnN0IHVpbnQ4X3QqPihnX2J5
dGVzX2dldF9kYXRhKG1fYnVmZmVyLmdldCgpLCBudWxscHRyKSkgOiBudWxscHRyOwogfQogCiBi
b29sIERhdGE6OmlzTnVsbCgpIGNvbnN0CkBAIC03MiwxMiArNzMsMTQgQEAgYm9vbCBEYXRhOjpp
c051bGwoKSBjb25zdAogICAgIHJldHVybiAhbV9idWZmZXI7CiB9CiAKLWJvb2wgRGF0YTo6YXBw
bHkoY29uc3QgRnVuY3Rpb248Ym9vbCAoY29uc3QgdWludDhfdCosIHNpemVfdCk+JiBhcHBsaWVy
KSBjb25zdAorYm9vbCBEYXRhOjphcHBseShjb25zdCBGdW5jdGlvbjxib29sKGNvbnN0IHVpbnQ4
X3QqLCBzaXplX3QpPiYgYXBwbGllcikgY29uc3QKIHsKICAgICBpZiAoIW1fc2l6ZSkKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCi0gICAgcmV0dXJuIGFwcGxpZXIocmVpbnRlcnByZXRfY2FzdDxj
b25zdCB1aW50OF90Kj4obV9idWZmZXItPmRhdGEpLCBtX2J1ZmZlci0+bGVuZ3RoKTsKKyAgICBn
c2l6ZSBsZW5ndGg7CisgICAgY29uc3QgYXV0byogZGF0YSA9IGdfYnl0ZXNfZ2V0X2RhdGEobV9i
dWZmZXIuZ2V0KCksICZsZW5ndGgpOworICAgIHJldHVybiBhcHBsaWVyKHJlaW50ZXJwcmV0X2Nh
c3Q8Y29uc3QgdWludDhfdCo+KGRhdGEpLCBsZW5ndGgpOwogfQogCiBEYXRhIERhdGE6OnN1YnJh
bmdlKHNpemVfdCBvZmZzZXQsIHNpemVfdCBzaXplKSBjb25zdApAQCAtODUsOCArODgsNyBAQCBE
YXRhIERhdGE6OnN1YnJhbmdlKHNpemVfdCBvZmZzZXQsIHNpemVfdCBzaXplKSBjb25zdAogICAg
IGlmICghbV9idWZmZXIpCiAgICAgICAgIHJldHVybiB7IH07CiAKLSAgICBHUmVmUHRyPFNvdXBC
dWZmZXI+IHN1YkJ1ZmZlciA9IGFkb3B0R1JlZihzb3VwX2J1ZmZlcl9uZXdfc3ViYnVmZmVyKG1f
YnVmZmVyLmdldCgpLCBvZmZzZXQsIHNpemUpKTsKLSAgICByZXR1cm4geyBXVEZNb3ZlKHN1YkJ1
ZmZlcikgfTsKKyAgICByZXR1cm4geyBhZG9wdEdSZWYoZ19ieXRlc19uZXdfZnJvbV9ieXRlcyht
X2J1ZmZlci5nZXQoKSwgb2Zmc2V0LCBzaXplKSkgfTsKIH0KIAogRGF0YSBjb25jYXRlbmF0ZShj
b25zdCBEYXRhJiBhLCBjb25zdCBEYXRhJiBiKQpAQCAtOTgsMTMgKzEwMCwxOSBAQCBEYXRhIGNv
bmNhdGVuYXRlKGNvbnN0IERhdGEmIGEsIGNvbnN0IERhdGEmIGIpCiAKICAgICBzaXplX3Qgc2l6
ZSA9IGEuc2l6ZSgpICsgYi5zaXplKCk7CiAgICAgdWludDhfdCogZGF0YSA9IHN0YXRpY19jYXN0
PHVpbnQ4X3QqPihmYXN0TWFsbG9jKHNpemUpKTsKLSAgICBtZW1jcHkoZGF0YSwgYS5zb3VwQnVm
ZmVyKCktPmRhdGEsIGEuc291cEJ1ZmZlcigpLT5sZW5ndGgpOwotICAgIG1lbWNweShkYXRhICsg
YS5zb3VwQnVmZmVyKCktPmxlbmd0aCwgYi5zb3VwQnVmZmVyKCktPmRhdGEsIGIuc291cEJ1ZmZl
cigpLT5sZW5ndGgpOwotICAgIEdSZWZQdHI8U291cEJ1ZmZlcj4gYnVmZmVyID0gYWRvcHRHUmVm
KHNvdXBfYnVmZmVyX25ld193aXRoX293bmVyKGRhdGEsIHNpemUsIGRhdGEsIGZhc3RGcmVlKSk7
Ci0gICAgcmV0dXJuIHsgV1RGTW92ZShidWZmZXIpIH07CisgICAgZ3NpemUgYUxlbmd0aDsKKyAg
ICBjb25zdCBhdXRvKiBhRGF0YSA9IGdfYnl0ZXNfZ2V0X2RhdGEoYS5ieXRlcygpLCAmYUxlbmd0
aCk7CisgICAgbWVtY3B5KGRhdGEsIGFEYXRhLCBhTGVuZ3RoKTsKKyAgICBnc2l6ZSBiTGVuZ3Ro
OworICAgIGNvbnN0IGF1dG8qIGJEYXRhID0gZ19ieXRlc19nZXRfZGF0YShiLmJ5dGVzKCksICZi
TGVuZ3RoKTsKKyAgICBtZW1jcHkoZGF0YSArIGFMZW5ndGgsIGJEYXRhLCBiTGVuZ3RoKTsKKwor
ICAgIHJldHVybiB7IGFkb3B0R1JlZihnX2J5dGVzX25ld193aXRoX2ZyZWVfZnVuYyhkYXRhLCBz
aXplLCBmYXN0RnJlZSwgZGF0YSkpIH07CiB9CiAKIHN0cnVjdCBNYXBXcmFwcGVyIHsKKyAgICBX
VEZfTUFLRV9TVFJVQ1RfRkFTVF9BTExPQ0FURUQ7CisKICAgICB+TWFwV3JhcHBlcigpCiAgICAg
ewogICAgICAgICBtdW5tYXAobWFwLCBzaXplKTsKQEAgLTEyOCw4ICsxMzYsNyBAQCBEYXRhIERh
dGE6OmFkb3B0TWFwKEZpbGVTeXN0ZW06Ok1hcHBlZEZpbGVEYXRhJiYgbWFwcGVkRmlsZSwgRmls
ZVN5c3RlbTo6UGxhdGZvcgogICAgIEFTU0VSVChtYXApOwogICAgIEFTU0VSVChtYXAgIT0gTUFQ
X0ZBSUxFRCk7CiAgICAgTWFwV3JhcHBlciogd3JhcHBlciA9IG5ldyBNYXBXcmFwcGVyIHsgbWFw
LCBzaXplLCBmZCB9OwotICAgIEdSZWZQdHI8U291cEJ1ZmZlcj4gYnVmZmVyID0gYWRvcHRHUmVm
KHNvdXBfYnVmZmVyX25ld193aXRoX293bmVyKG1hcCwgc2l6ZSwgd3JhcHBlciwgcmVpbnRlcnBy
ZXRfY2FzdDxHRGVzdHJveU5vdGlmeT4oZGVsZXRlTWFwV3JhcHBlcikpKTsKLSAgICByZXR1cm4g
eyBXVEZNb3ZlKGJ1ZmZlciksIGZkIH07CisgICAgcmV0dXJuIHsgYWRvcHRHUmVmKGdfYnl0ZXNf
bmV3X3dpdGhfZnJlZV9mdW5jKG1hcCwgc2l6ZSwgcmVpbnRlcnByZXRfY2FzdDxHRGVzdHJveU5v
dGlmeT4oZGVsZXRlTWFwV3JhcHBlciksIHdyYXBwZXIpKSwgZmQgfTsKIH0KIAogUmVmUHRyPFNo
YXJlZE1lbW9yeT4gRGF0YTo6dHJ5Q3JlYXRlU2hhcmVkTWVtb3J5KCkgY29uc3QKQEAgLTEzOSw4
ICsxNDYsMTIgQEAgUmVmUHRyPFNoYXJlZE1lbW9yeT4gRGF0YTo6dHJ5Q3JlYXRlU2hhcmVkTWVt
b3J5KCkgY29uc3QKIAogICAgIEdJbnB1dFN0cmVhbSogaW5wdXRTdHJlYW0gPSBnX2lvX3N0cmVh
bV9nZXRfaW5wdXRfc3RyZWFtKEdfSU9fU1RSRUFNKG1fZmlsZURlc2NyaXB0b3IpKTsKICAgICBp
bnQgZmQgPSBnX2ZpbGVfZGVzY3JpcHRvcl9iYXNlZF9nZXRfZmQoR19GSUxFX0RFU0NSSVBUT1Jf
QkFTRUQoaW5wdXRTdHJlYW0pKTsKLSAgICByZXR1cm4gU2hhcmVkTWVtb3J5Ojp3cmFwTWFwKGNv
bnN0X2Nhc3Q8Y2hhcio+KG1fYnVmZmVyLT5kYXRhKSwgbV9idWZmZXItPmxlbmd0aCwgZmQpOwor
ICAgIGdzaXplIGxlbmd0aDsKKyAgICBjb25zdCBhdXRvKiBkYXRhID0gZ19ieXRlc19nZXRfZGF0
YShtX2J1ZmZlci5nZXQoKSwgJmxlbmd0aCk7CisgICAgcmV0dXJuIFNoYXJlZE1lbW9yeTo6d3Jh
cE1hcChjb25zdF9jYXN0PHZvaWQqPihkYXRhKSwgbGVuZ3RoLCBmZCk7CiB9CiAKIH0gLy8gbmFt
ZXNwYWNlIE5ldHdvcmtDYWNoZQogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CisKKyNlbmRpZiAvLyBV
U0UoR0xJQikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2FjaGUv
TmV0d29ya0NhY2hlSU9DaGFubmVsLmggYi9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2Nh
Y2hlL05ldHdvcmtDYWNoZUlPQ2hhbm5lbC5oCmluZGV4IDYzOTg3MDBjOWU4MC4uMDUzNWYyOTk5
ZDZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdv
cmtDYWNoZUlPQ2hhbm5lbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nlc3MvY2Fj
aGUvTmV0d29ya0NhY2hlSU9DaGFubmVsLmgKQEAgLTMyLDggKzMyLDEyIEBACiAjaW5jbHVkZSA8
d3RmL1dvcmtRdWV1ZS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCi0jaWYg
VVNFKFNPVVApCisjaWYgVVNFKEdMSUIpCiAjaW5jbHVkZSA8d3RmL2dsaWIvR1JlZlB0ci5oPgor
Cit0eXBlZGVmIHN0cnVjdCBfR0ZpbGVJT1N0cmVhbSBHRmlsZUlPU3RyZWFtOwordHlwZWRlZiBz
dHJ1Y3QgX0dJbnB1dFN0cmVhbSBHSW5wdXRTdHJlYW07Cit0eXBlZGVmIHN0cnVjdCBfR091dHB1
dFN0cmVhbSBHT3V0cHV0U3RyZWFtOwogI2VuZGlmCiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAt
NTIsNyArNTYsNyBAQCBwdWJsaWM6CiAgICAgY29uc3QgU3RyaW5nJiBwYXRoKCkgY29uc3QgeyBy
ZXR1cm4gbV9wYXRoOyB9CiAgICAgVHlwZSB0eXBlKCkgY29uc3QgeyByZXR1cm4gbV90eXBlOyB9
CiAKLSNpZiAhVVNFKFNPVVApCisjaWYgIVVTRShHTElCKQogICAgIGJvb2wgaXNPcGVuZWQoKSBj
b25zdCB7IHJldHVybiBGaWxlU3lzdGVtOjppc0hhbmRsZVZhbGlkKG1fZmlsZURlc2NyaXB0b3Ip
OyB9CiAjZWxzZQogICAgIGJvb2wgaXNPcGVuZWQoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CkBA
IC02MywyMSArNjcsMjEgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBJT0NoYW5uZWwoY29uc3Qg
U3RyaW5nJiBmaWxlUGF0aCwgSU9DaGFubmVsOjpUeXBlLCBPcHRpb25hbDxXb3JrUXVldWU6OlFP
Uz4pOwogCi0jaWYgVVNFKFNPVVApCisjaWYgVVNFKEdMSUIpCiAgICAgdm9pZCByZWFkU3luY0lu
VGhyZWFkKHNpemVfdCBvZmZzZXQsIHNpemVfdCwgV29ya1F1ZXVlKiwgRnVuY3Rpb248dm9pZCAo
RGF0YSYsIGludCBlcnJvcik+JiYpOwogI2VuZGlmCiAKICAgICBTdHJpbmcgbV9wYXRoOwogICAg
IFR5cGUgbV90eXBlOwogCi0jaWYgIVVTRShTT1VQKQorI2lmICFVU0UoR0xJQikKICAgICBGaWxl
U3lzdGVtOjpQbGF0Zm9ybUZpbGVIYW5kbGUgbV9maWxlRGVzY3JpcHRvciB7IEZpbGVTeXN0ZW06
OmludmFsaWRQbGF0Zm9ybUZpbGVIYW5kbGUgfTsKICNlbmRpZgogICAgIHN0ZDo6YXRvbWljPGJv
b2w+IG1fd2FzRGVsZXRlZCB7IGZhbHNlIH07IC8vIFRyeSB0byBuYXJyb3cgZG93biBhIGNyYXNo
LCBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY1NjU5CiAjaWYgUExB
VEZPUk0oQ09DT0EpCiAgICAgT1NPYmplY3RQdHI8ZGlzcGF0Y2hfaW9fdD4gbV9kaXNwYXRjaElP
OwogI2VuZGlmCi0jaWYgVVNFKFNPVVApCisjaWYgVVNFKEdMSUIpCiAgICAgR1JlZlB0cjxHSW5w
dXRTdHJlYW0+IG1faW5wdXRTdHJlYW07CiAgICAgR1JlZlB0cjxHT3V0cHV0U3RyZWFtPiBtX291
dHB1dFN0cmVhbTsKICAgICBHUmVmUHRyPEdGaWxlSU9TdHJlYW0+IG1faW9TdHJlYW07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUlP
Q2hhbm5lbFNvdXAuY3BwIGIvU291cmNlL1dlYktpdC9OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3
b3JrQ2FjaGVJT0NoYW5uZWxHTGliLmNwcApzaW1pbGFyaXR5IGluZGV4IDc0JQpyZW5hbWUgZnJv
bSBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdvcmtDYWNoZUlPQ2hhbm5l
bFNvdXAuY3BwCnJlbmFtZSB0byBTb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05l
dHdvcmtDYWNoZUlPQ2hhbm5lbEdMaWIuY3BwCmluZGV4IDA5MzA5YmM5ZmRkMC4uNWNkYTc1ZDc1
YzQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L05ldHdvcmtQcm9jZXNzL2NhY2hlL05ldHdv
cmtDYWNoZUlPQ2hhbm5lbFNvdXAuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvTmV0d29ya1Byb2Nl
c3MvY2FjaGUvTmV0d29ya0NhY2hlSU9DaGFubmVsR0xpYi5jcHAKQEAgLTY4LDcgKzY4LDcgQEAg
SU9DaGFubmVsOjp+SU9DaGFubmVsKCkKICAgICBSRUxFQVNFX0FTU0VSVCghbV93YXNEZWxldGVk
LmV4Y2hhbmdlKHRydWUpKTsKIH0KIAotc3RhdGljIGlubGluZSB2b2lkIHJ1blRhc2tJblF1ZXVl
KEZ1bmN0aW9uPHZvaWQgKCk+JiYgdGFzaywgV29ya1F1ZXVlKiBxdWV1ZSkKK3N0YXRpYyBpbmxp
bmUgdm9pZCBydW5UYXNrSW5RdWV1ZShGdW5jdGlvbjx2b2lkKCk+JiYgdGFzaywgV29ya1F1ZXVl
KiBxdWV1ZSkKIHsKICAgICBpZiAocXVldWUpIHsKICAgICAgICAgcXVldWUtPmRpc3BhdGNoKFdU
Rk1vdmUodGFzaykpOwpAQCAtNzksMTggKzc5LDE4IEBAIHN0YXRpYyBpbmxpbmUgdm9pZCBydW5U
YXNrSW5RdWV1ZShGdW5jdGlvbjx2b2lkICgpPiYmIHRhc2ssIFdvcmtRdWV1ZSogcXVldWUpCiAg
ICAgUnVuTG9vcDo6bWFpbigpLmRpc3BhdGNoKFdURk1vdmUodGFzaykpOwogfQogCi1zdGF0aWMg
dm9pZCBmaWxsRGF0YUZyb21SZWFkQnVmZmVyKFNvdXBCdWZmZXIqIHJlYWRCdWZmZXIsIHNpemVf
dCBzaXplLCBEYXRhJiBkYXRhKQorc3RhdGljIHZvaWQgZmlsbERhdGFGcm9tUmVhZEJ1ZmZlcihH
Qnl0ZXMqIHJlYWRCdWZmZXIsIHNpemVfdCBzaXplLCBEYXRhJiBkYXRhKQogewotICAgIEdSZWZQ
dHI8U291cEJ1ZmZlcj4gYnVmZmVyOwotICAgIGlmIChzaXplICE9IHJlYWRCdWZmZXItPmxlbmd0
aCkgeworICAgIEdSZWZQdHI8R0J5dGVzPiBidWZmZXI7CisgICAgaWYgKHNpemUgIT0gZ19ieXRl
c19nZXRfc2l6ZShyZWFkQnVmZmVyKSkgewogICAgICAgICAvLyBUaGUgc3ViYnVmZmVyIGRvZXMg
bm90IGNvcHkgdGhlIGRhdGEuCi0gICAgICAgIGJ1ZmZlciA9IGFkb3B0R1JlZihzb3VwX2J1ZmZl
cl9uZXdfc3ViYnVmZmVyKHJlYWRCdWZmZXIsIDAsIHNpemUpKTsKKyAgICAgICAgYnVmZmVyID0g
YWRvcHRHUmVmKGdfYnl0ZXNfbmV3X2Zyb21fYnl0ZXMocmVhZEJ1ZmZlciwgMCwgc2l6ZSkpOwog
ICAgIH0gZWxzZQogICAgICAgICBidWZmZXIgPSByZWFkQnVmZmVyOwogCiAgICAgaWYgKGRhdGEu
aXNOdWxsKCkpIHsKICAgICAgICAgLy8gRmlyc3QgY2h1bmssIHdlIG5lZWQgdG8gZm9yY2UgdGhl
IGRhdGEgdG8gYmUgY29waWVkLgotICAgICAgICBkYXRhID0geyByZWludGVycHJldF9jYXN0PGNv
bnN0IHVpbnQ4X3QqPihidWZmZXItPmRhdGEpLCBzaXplIH07CisgICAgICAgIGRhdGEgPSB7IHJl
aW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KGdfYnl0ZXNfZ2V0X2RhdGEoYnVmZmVyLmdl
dCgpLCBudWxscHRyKSksIHNpemUgfTsKICAgICB9IGVsc2UgewogICAgICAgICBEYXRhIGRhdGFS
ZWFkKFdURk1vdmUoYnVmZmVyKSk7CiAgICAgICAgIC8vIENvbmNhdGVuYXRlIHdpbGwgY29weSB0
aGUgZGF0YS4KQEAgLTk5LDExICs5OSwxMyBAQCBzdGF0aWMgdm9pZCBmaWxsRGF0YUZyb21SZWFk
QnVmZmVyKFNvdXBCdWZmZXIqIHJlYWRCdWZmZXIsIHNpemVfdCBzaXplLCBEYXRhJiBkYQogfQog
CiBzdHJ1Y3QgUmVhZEFzeW5jRGF0YSB7CisgICAgV1RGX01BS0VfU1RSVUNUX0ZBU1RfQUxMT0NB
VEVEOworCiAgICAgUmVmUHRyPElPQ2hhbm5lbD4gY2hhbm5lbDsKLSAgICBHUmVmUHRyPFNvdXBC
dWZmZXI+IGJ1ZmZlcjsKKyAgICBHUmVmUHRyPEdCeXRlcz4gYnVmZmVyOwogICAgIFJlZlB0cjxX
b3JrUXVldWU+IHF1ZXVlOwogICAgIHNpemVfdCBieXRlc1RvUmVhZDsKLSAgICBGdW5jdGlvbjx2
b2lkIChEYXRhJiwgaW50IGVycm9yKT4gY29tcGxldGlvbkhhbmRsZXI7CisgICAgRnVuY3Rpb248
dm9pZChEYXRhJiwgaW50IGVycm9yKT4gY29tcGxldGlvbkhhbmRsZXI7CiAgICAgRGF0YSBkYXRh
OwogfTsKIApAQCAtMTM5LDE4ICsxNDEsMTggQEAgc3RhdGljIHZvaWQgaW5wdXRTdHJlYW1SZWFk
UmVhZHlDYWxsYmFjayhHSW5wdXRTdHJlYW0qIHN0cmVhbSwgR0FzeW5jUmVzdWx0KiByZXMKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIHNpemVfdCBieXRlc1RvUmVhZCA9IHN0ZDo6bWlu
KHBlbmRpbmdCeXRlc1RvUmVhZCwgYXN5bmNEYXRhLT5idWZmZXItPmxlbmd0aCk7CisgICAgc2l6
ZV90IGJ5dGVzVG9SZWFkID0gc3RkOjptaW4ocGVuZGluZ0J5dGVzVG9SZWFkLCBnX2J5dGVzX2dl
dF9zaXplKGFzeW5jRGF0YS0+YnVmZmVyLmdldCgpKSk7CiAgICAgLy8gVXNlIGEgbG9jYWwgdmFy
aWFibGUgZm9yIHRoZSBkYXRhIGJ1ZmZlciB0byBwYXNzIGl0IHRvIGdfaW5wdXRfc3RyZWFtX3Jl
YWRfYXN5bmMoKSwgYmVjYXVzZSBSZWFkQXN5bmNEYXRhIGlzIHJlbGVhc2VkLgotICAgIGF1dG8g
ZGF0YSA9IGNvbnN0X2Nhc3Q8Y2hhcio+KGFzeW5jRGF0YS0+YnVmZmVyLT5kYXRhKTsKKyAgICBh
dXRvKiBkYXRhID0gY29uc3RfY2FzdDx2b2lkKj4oZ19ieXRlc19nZXRfZGF0YShhc3luY0RhdGEt
PmJ1ZmZlci5nZXQoKSwgbnVsbHB0cikpOwogICAgIGdfaW5wdXRfc3RyZWFtX3JlYWRfYXN5bmMo
c3RyZWFtLCBkYXRhLCBieXRlc1RvUmVhZCwgUnVuTG9vcFNvdXJjZVByaW9yaXR5OjpEaXNrQ2Fj
aGVSZWFkLCBudWxscHRyLAogICAgICAgICByZWludGVycHJldF9jYXN0PEdBc3luY1JlYWR5Q2Fs
bGJhY2s+KGlucHV0U3RyZWFtUmVhZFJlYWR5Q2FsbGJhY2spLCBhc3luY0RhdGEucmVsZWFzZSgp
KTsKIH0KIAotdm9pZCBJT0NoYW5uZWw6OnJlYWQoc2l6ZV90IG9mZnNldCwgc2l6ZV90IHNpemUs
IFdvcmtRdWV1ZSogcXVldWUsIEZ1bmN0aW9uPHZvaWQgKERhdGEmLCBpbnQgZXJyb3IpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKQordm9pZCBJT0NoYW5uZWw6OnJlYWQoc2l6ZV90IG9mZnNldCwgc2l6
ZV90IHNpemUsIFdvcmtRdWV1ZSogcXVldWUsIEZ1bmN0aW9uPHZvaWQoRGF0YSYsIGludCBlcnJv
cik+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgUmVmUHRyPElPQ2hhbm5lbD4gY2hhbm5l
bCh0aGlzKTsKKyAgICBSZWZQdHI8SU9DaGFubmVsPiBwcm90ZWN0ZWRUaGlzKHRoaXMpOwogICAg
IGlmICghbV9pbnB1dFN0cmVhbSkgewotICAgICAgICBydW5UYXNrSW5RdWV1ZShbY2hhbm5lbCwg
Y29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0geworICAgICAg
ICBydW5UYXNrSW5RdWV1ZShbcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyks
IGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildIHsKICAgICAg
ICAgICAgIERhdGEgZGF0YTsKICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGRhdGEsIC0x
KTsKICAgICAgICAgfSwgcXVldWUpOwpAQCAtMTY0LDMxICsxNjYsMzAgQEAgdm9pZCBJT0NoYW5u
ZWw6OnJlYWQoc2l6ZV90IG9mZnNldCwgc2l6ZV90IHNpemUsIFdvcmtRdWV1ZSogcXVldWUsIEZ1
bmN0aW9uPHZvaWQKIAogICAgIHNpemVfdCBidWZmZXJTaXplID0gc3RkOjptaW4oc2l6ZSwgZ0Rl
ZmF1bHRSZWFkQnVmZmVyU2l6ZSk7CiAgICAgdWludDhfdCogYnVmZmVyRGF0YSA9IHN0YXRpY19j
YXN0PHVpbnQ4X3QqPihmYXN0TWFsbG9jKGJ1ZmZlclNpemUpKTsKLSAgICBHUmVmUHRyPFNvdXBC
dWZmZXI+IGJ1ZmZlciA9IGFkb3B0R1JlZihzb3VwX2J1ZmZlcl9uZXdfd2l0aF9vd25lcihidWZm
ZXJEYXRhLCBidWZmZXJTaXplLCBidWZmZXJEYXRhLCBmYXN0RnJlZSkpOworICAgIEdSZWZQdHI8
R0J5dGVzPiBidWZmZXIgPSBhZG9wdEdSZWYoZ19ieXRlc19uZXdfd2l0aF9mcmVlX2Z1bmMoYnVm
ZmVyRGF0YSwgYnVmZmVyU2l6ZSwgZmFzdEZyZWUsIGJ1ZmZlckRhdGEpKTsKICAgICBSZWFkQXN5
bmNEYXRhKiBhc3luY0RhdGEgPSBuZXcgUmVhZEFzeW5jRGF0YSB7IHRoaXMsIGJ1ZmZlci5nZXQo
KSwgcXVldWUsIHNpemUsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCB7IH0gfTsKIAogICAg
IC8vIEZJWE1FOiBpbXBsZW1lbnQgb2Zmc2V0LgotICAgIGdfaW5wdXRfc3RyZWFtX3JlYWRfYXN5
bmMobV9pbnB1dFN0cmVhbS5nZXQoKSwgY29uc3RfY2FzdDxjaGFyKj4oYnVmZmVyLT5kYXRhKSwg
YnVmZmVyU2l6ZSwgUnVuTG9vcFNvdXJjZVByaW9yaXR5OjpEaXNrQ2FjaGVSZWFkLCBudWxscHRy
LAorICAgIGdfaW5wdXRfc3RyZWFtX3JlYWRfYXN5bmMobV9pbnB1dFN0cmVhbS5nZXQoKSwgYnVm
ZmVyRGF0YSwgYnVmZmVyU2l6ZSwgUnVuTG9vcFNvdXJjZVByaW9yaXR5OjpEaXNrQ2FjaGVSZWFk
LCBudWxscHRyLAogICAgICAgICByZWludGVycHJldF9jYXN0PEdBc3luY1JlYWR5Q2FsbGJhY2s+
KGlucHV0U3RyZWFtUmVhZFJlYWR5Q2FsbGJhY2spLCBhc3luY0RhdGEpOwogfQogCi12b2lkIElP
Q2hhbm5lbDo6cmVhZFN5bmNJblRocmVhZChzaXplX3Qgb2Zmc2V0LCBzaXplX3Qgc2l6ZSwgV29y
a1F1ZXVlKiBxdWV1ZSwgRnVuY3Rpb248dm9pZCAoRGF0YSYsIGludCBlcnJvcik+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCit2b2lkIElPQ2hhbm5lbDo6cmVhZFN5bmNJblRocmVhZChzaXplX3Qgb2Zm
c2V0LCBzaXplX3Qgc2l6ZSwgV29ya1F1ZXVlKiBxdWV1ZSwgRnVuY3Rpb248dm9pZChEYXRhJiwg
aW50IGVycm9yKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKICAgICBBU1NFUlQoIVJ1bkxvb3A6
OmlzTWFpbigpKTsKIAotICAgIFJlZlB0cjxJT0NoYW5uZWw+IGNoYW5uZWwodGhpcyk7Ci0gICAg
VGhyZWFkOjpjcmVhdGUoIklPQ2hhbm5lbDo6cmVhZFN5bmMiLCBbY2hhbm5lbCwgc2l6ZSwgcXVl
dWUsIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildICgpIG11
dGFibGUgeworICAgIFRocmVhZDo6Y3JlYXRlKCJJT0NoYW5uZWw6OnJlYWRTeW5jIiwgW3RoaXMs
IHByb3RlY3RlZFRoaXMgPSBtYWtlUmVmKCp0aGlzKSwgc2l6ZSwgcXVldWUsIGNvbXBsZXRpb25I
YW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildICgpIG11dGFibGUgewogICAgICAg
ICBzaXplX3QgYnVmZmVyU2l6ZSA9IHN0ZDo6bWluKHNpemUsIGdEZWZhdWx0UmVhZEJ1ZmZlclNp
emUpOwogICAgICAgICB1aW50OF90KiBidWZmZXJEYXRhID0gc3RhdGljX2Nhc3Q8dWludDhfdCo+
KGZhc3RNYWxsb2MoYnVmZmVyU2l6ZSkpOwotICAgICAgICBHUmVmUHRyPFNvdXBCdWZmZXI+IHJl
YWRCdWZmZXIgPSBhZG9wdEdSZWYoc291cF9idWZmZXJfbmV3X3dpdGhfb3duZXIoYnVmZmVyRGF0
YSwgYnVmZmVyU2l6ZSwgYnVmZmVyRGF0YSwgZmFzdEZyZWUpKTsKKyAgICAgICAgR1JlZlB0cjxH
Qnl0ZXM+IHJlYWRCdWZmZXIgPSBhZG9wdEdSZWYoZ19ieXRlc19uZXdfd2l0aF9mcmVlX2Z1bmMo
YnVmZmVyRGF0YSwgYnVmZmVyU2l6ZSwgZmFzdEZyZWUsIGJ1ZmZlckRhdGEpKTsKICAgICAgICAg
RGF0YSBkYXRhOwogICAgICAgICBzaXplX3QgcGVuZGluZ0J5dGVzVG9SZWFkID0gc2l6ZTsKICAg
ICAgICAgc2l6ZV90IGJ5dGVzVG9SZWFkID0gYnVmZmVyU2l6ZTsKICAgICAgICAgZG8gewogICAg
ICAgICAgICAgLy8gRklYTUU6IGltcGxlbWVudCBvZmZzZXQuCi0gICAgICAgICAgICBnc3NpemUg
Ynl0ZXNSZWFkID0gZ19pbnB1dF9zdHJlYW1fcmVhZChjaGFubmVsLT5tX2lucHV0U3RyZWFtLmdl
dCgpLCBjb25zdF9jYXN0PGNoYXIqPihyZWFkQnVmZmVyLT5kYXRhKSwgYnl0ZXNUb1JlYWQsIG51
bGxwdHIsIG51bGxwdHIpOworICAgICAgICAgICAgZ3NzaXplIGJ5dGVzUmVhZCA9IGdfaW5wdXRf
c3RyZWFtX3JlYWQobV9pbnB1dFN0cmVhbS5nZXQoKSwgY29uc3RfY2FzdDx2b2lkKj4oZ19ieXRl
c19nZXRfZGF0YShyZWFkQnVmZmVyLmdldCgpLCBudWxscHRyKSksIGJ5dGVzVG9SZWFkLCBudWxs
cHRyLCBudWxscHRyKTsKICAgICAgICAgICAgIGlmIChieXRlc1JlYWQgPT0gLTEpIHsKLSAgICAg
ICAgICAgICAgICBydW5UYXNrSW5RdWV1ZShbY2hhbm5lbCwgY29tcGxldGlvbkhhbmRsZXIgPSBX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0geworICAgICAgICAgICAgICAgIHJ1blRhc2tJblF1
ZXVlKFtwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKSwgY29tcGxldGlvbkhh
bmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gewogICAgICAgICAgICAgICAgICAg
ICBEYXRhIGRhdGE7CiAgICAgICAgICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKGRhdGEs
IC0xKTsKICAgICAgICAgICAgICAgICB9LCBxdWV1ZSk7CkBAIC0yMDIsMTIgKzIwMywxMCBAQCB2
b2lkIElPQ2hhbm5lbDo6cmVhZFN5bmNJblRocmVhZChzaXplX3Qgb2Zmc2V0LCBzaXplX3Qgc2l6
ZSwgV29ya1F1ZXVlKiBxdWV1ZSwgRgogICAgICAgICAgICAgZmlsbERhdGFGcm9tUmVhZEJ1ZmZl
cihyZWFkQnVmZmVyLmdldCgpLCBzdGF0aWNfY2FzdDxzaXplX3Q+KGJ5dGVzUmVhZCksIGRhdGEp
OwogCiAgICAgICAgICAgICBwZW5kaW5nQnl0ZXNUb1JlYWQgPSBzaXplIC0gZGF0YS5zaXplKCk7
Ci0gICAgICAgICAgICBieXRlc1RvUmVhZCA9IHN0ZDo6bWluKHBlbmRpbmdCeXRlc1RvUmVhZCwg
cmVhZEJ1ZmZlci0+bGVuZ3RoKTsKKyAgICAgICAgICAgIGJ5dGVzVG9SZWFkID0gc3RkOjptaW4o
cGVuZGluZ0J5dGVzVG9SZWFkLCBnX2J5dGVzX2dldF9zaXplKHJlYWRCdWZmZXIuZ2V0KCkpKTsK
ICAgICAgICAgfSB3aGlsZSAocGVuZGluZ0J5dGVzVG9SZWFkKTsKIAotICAgICAgICBHUmVmUHRy
PFNvdXBCdWZmZXI+IGJ1ZmZlckNhcHR1cmUgPSBkYXRhLnNvdXBCdWZmZXIoKTsKLSAgICAgICAg
cnVuVGFza0luUXVldWUoW2NoYW5uZWwsIGJ1ZmZlckNhcHR1cmUsIGNvbXBsZXRpb25IYW5kbGVy
ID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildIHsKLSAgICAgICAgICAgIEdSZWZQdHI8U291
cEJ1ZmZlcj4gYnVmZmVyID0gYnVmZmVyQ2FwdHVyZTsKKyAgICAgICAgcnVuVGFza0luUXVldWUo
W3Byb3RlY3RlZFRoaXMgPSBXVEZNb3ZlKHByb3RlY3RlZFRoaXMpLCBidWZmZXIgPSBHUmVmUHRy
PEdCeXRlcz4oZGF0YS5ieXRlcygpKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBs
ZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKICAgICAgICAgICAgIERhdGEgZGF0YSA9IHsgV1RG
TW92ZShidWZmZXIpIH07CiAgICAgICAgICAgICBjb21wbGV0aW9uSGFuZGxlcihkYXRhLCAwKTsK
ICAgICAgICAgfSwgcXVldWUpOwpAQCAtMjE1LDEwICsyMTQsMTIgQEAgdm9pZCBJT0NoYW5uZWw6
OnJlYWRTeW5jSW5UaHJlYWQoc2l6ZV90IG9mZnNldCwgc2l6ZV90IHNpemUsIFdvcmtRdWV1ZSog
cXVldWUsIEYKIH0KIAogc3RydWN0IFdyaXRlQXN5bmNEYXRhIHsKKyAgICBXVEZfTUFLRV9TVFJV
Q1RfRkFTVF9BTExPQ0FURUQ7CisKICAgICBSZWZQdHI8SU9DaGFubmVsPiBjaGFubmVsOwotICAg
IEdSZWZQdHI8U291cEJ1ZmZlcj4gYnVmZmVyOworICAgIEdSZWZQdHI8R0J5dGVzPiBidWZmZXI7
CiAgICAgUmVmUHRyPFdvcmtRdWV1ZT4gcXVldWU7Ci0gICAgRnVuY3Rpb248dm9pZCAoaW50IGVy
cm9yKT4gY29tcGxldGlvbkhhbmRsZXI7CisgICAgRnVuY3Rpb248dm9pZChpbnQgZXJyb3IpPiBj
b21wbGV0aW9uSGFuZGxlcjsKIH07CiAKIHN0YXRpYyB2b2lkIG91dHB1dFN0cmVhbVdyaXRlUmVh
ZHlDYWxsYmFjayhHT3V0cHV0U3RyZWFtKiBzdHJlYW0sIEdBc3luY1Jlc3VsdCogcmVzdWx0LCBn
cG9pbnRlciB1c2VyRGF0YSkKQEAgLTIzMyw3ICsyMzQsNyBAQCBzdGF0aWMgdm9pZCBvdXRwdXRT
dHJlYW1Xcml0ZVJlYWR5Q2FsbGJhY2soR091dHB1dFN0cmVhbSogc3RyZWFtLCBHQXN5bmNSZXN1
bHQqCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBnc3NpemUgcGVuZGluZ0J5dGVzVG9X
cml0ZSA9IGFzeW5jRGF0YS0+YnVmZmVyLT5sZW5ndGggLSBieXRlc1dyaXR0ZW47CisgICAgZ3Nz
aXplIHBlbmRpbmdCeXRlc1RvV3JpdGUgPSBnX2J5dGVzX2dldF9zaXplKGFzeW5jRGF0YS0+YnVm
ZmVyLmdldCgpKSAtIGJ5dGVzV3JpdHRlbjsKICAgICBpZiAoIXBlbmRpbmdCeXRlc1RvV3JpdGUp
IHsKICAgICAgICAgV29ya1F1ZXVlKiBxdWV1ZSA9IGFzeW5jRGF0YS0+cXVldWUuZ2V0KCk7CiAg
ICAgICAgIHJ1blRhc2tJblF1ZXVlKFthc3luY0RhdGEgPSBXVEZNb3ZlKGFzeW5jRGF0YSldIHsK
QEAgLTI0MiwxOCArMjQzLDE4IEBAIHN0YXRpYyB2b2lkIG91dHB1dFN0cmVhbVdyaXRlUmVhZHlD
YWxsYmFjayhHT3V0cHV0U3RyZWFtKiBzdHJlYW0sIEdBc3luY1Jlc3VsdCoKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIAotICAgIGFzeW5jRGF0YS0+YnVmZmVyID0gYWRvcHRHUmVmKHNvdXBfYnVm
ZmVyX25ld19zdWJidWZmZXIoYXN5bmNEYXRhLT5idWZmZXIuZ2V0KCksIGJ5dGVzV3JpdHRlbiwg
cGVuZGluZ0J5dGVzVG9Xcml0ZSkpOworICAgIGFzeW5jRGF0YS0+YnVmZmVyID0gYWRvcHRHUmVm
KGdfYnl0ZXNfbmV3X2Zyb21fYnl0ZXMoYXN5bmNEYXRhLT5idWZmZXIuZ2V0KCksIGJ5dGVzV3Jp
dHRlbiwgcGVuZGluZ0J5dGVzVG9Xcml0ZSkpOwogICAgIC8vIFVzZSBhIGxvY2FsIHZhcmlhYmxl
IGZvciB0aGUgZGF0YSBidWZmZXIgdG8gcGFzcyBpdCB0byBnX291dHB1dF9zdHJlYW1fd3JpdGVf
YXN5bmMoKSwgYmVjYXVzZSBXcml0ZUFzeW5jRGF0YSBpcyByZWxlYXNlZC4KLSAgICBhdXRvIGRh
dGEgPSBhc3luY0RhdGEtPmJ1ZmZlci0+ZGF0YTsKKyAgICBjb25zdCBhdXRvKiBkYXRhID0gZ19i
eXRlc19nZXRfZGF0YShhc3luY0RhdGEtPmJ1ZmZlci5nZXQoKSwgbnVsbHB0cik7CiAgICAgZ19v
dXRwdXRfc3RyZWFtX3dyaXRlX2FzeW5jKHN0cmVhbSwgZGF0YSwgcGVuZGluZ0J5dGVzVG9Xcml0
ZSwgUnVuTG9vcFNvdXJjZVByaW9yaXR5OjpEaXNrQ2FjaGVXcml0ZSwgbnVsbHB0ciwKICAgICAg
ICAgcmVpbnRlcnByZXRfY2FzdDxHQXN5bmNSZWFkeUNhbGxiYWNrPihvdXRwdXRTdHJlYW1Xcml0
ZVJlYWR5Q2FsbGJhY2spLCBhc3luY0RhdGEucmVsZWFzZSgpKTsKIH0KIAotdm9pZCBJT0NoYW5u
ZWw6OndyaXRlKHNpemVfdCBvZmZzZXQsIGNvbnN0IERhdGEmIGRhdGEsIFdvcmtRdWV1ZSogcXVl
dWUsIEZ1bmN0aW9uPHZvaWQgKGludCBlcnJvcik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lk
IElPQ2hhbm5lbDo6d3JpdGUoc2l6ZV90IG9mZnNldCwgY29uc3QgRGF0YSYgZGF0YSwgV29ya1F1
ZXVlKiBxdWV1ZSwgRnVuY3Rpb248dm9pZChpbnQgZXJyb3IpPiYmIGNvbXBsZXRpb25IYW5kbGVy
KQogewotICAgIFJlZlB0cjxJT0NoYW5uZWw+IGNoYW5uZWwodGhpcyk7CisgICAgUmVmUHRyPElP
Q2hhbm5lbD4gcHJvdGVjdGVkVGhpcyh0aGlzKTsKICAgICBpZiAoIW1fb3V0cHV0U3RyZWFtICYm
ICFtX2lvU3RyZWFtKSB7Ci0gICAgICAgIHJ1blRhc2tJblF1ZXVlKFtjaGFubmVsLCBjb21wbGV0
aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSB7CisgICAgICAgIHJ1blRh
c2tJblF1ZXVlKFtwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKSwgY29tcGxl
dGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0gewogICAgICAgICAgICAg
Y29tcGxldGlvbkhhbmRsZXIoLTEpOwogICAgICAgICB9LCBxdWV1ZSk7CiAgICAgICAgIHJldHVy
bjsKQEAgLTI2MSwxNSArMjYyLDE1IEBAIHZvaWQgSU9DaGFubmVsOjp3cml0ZShzaXplX3Qgb2Zm
c2V0LCBjb25zdCBEYXRhJiBkYXRhLCBXb3JrUXVldWUqIHF1ZXVlLCBGdW5jdGlvCiAKICAgICBH
T3V0cHV0U3RyZWFtKiBzdHJlYW0gPSBtX291dHB1dFN0cmVhbSA/IG1fb3V0cHV0U3RyZWFtLmdl
dCgpIDogZ19pb19zdHJlYW1fZ2V0X291dHB1dF9zdHJlYW0oR19JT19TVFJFQU0obV9pb1N0cmVh
bS5nZXQoKSkpOwogICAgIGlmICghc3RyZWFtKSB7Ci0gICAgICAgIHJ1blRhc2tJblF1ZXVlKFtj
aGFubmVsLCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSB7
CisgICAgICAgIHJ1blRhc2tJblF1ZXVlKFtwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0
ZWRUaGlzKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0g
ewogICAgICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoLTEpOwogICAgICAgICB9LCBxdWV1ZSk7
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBXcml0ZUFzeW5jRGF0YSogYXN5bmNEYXRh
ID0gbmV3IFdyaXRlQXN5bmNEYXRhIHsgdGhpcywgZGF0YS5zb3VwQnVmZmVyKCksIHF1ZXVlLCBX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSB9OworICAgIFdyaXRlQXN5bmNEYXRhKiBhc3luY0Rh
dGEgPSBuZXcgV3JpdGVBc3luY0RhdGEgeyB0aGlzLCBkYXRhLmJ5dGVzKCksIHF1ZXVlLCBXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKSB9OwogICAgIC8vIEZJWE1FOiBpbXBsZW1lbnQgb2Zmc2V0
LgotICAgIGdfb3V0cHV0X3N0cmVhbV93cml0ZV9hc3luYyhzdHJlYW0sIGFzeW5jRGF0YS0+YnVm
ZmVyLT5kYXRhLCBkYXRhLnNpemUoKSwgUnVuTG9vcFNvdXJjZVByaW9yaXR5OjpEaXNrQ2FjaGVX
cml0ZSwgbnVsbHB0ciwKKyAgICBnX291dHB1dF9zdHJlYW1fd3JpdGVfYXN5bmMoc3RyZWFtLCBn
X2J5dGVzX2dldF9kYXRhKGFzeW5jRGF0YS0+YnVmZmVyLmdldCgpLCBudWxscHRyKSwgZGF0YS5z
aXplKCksIFJ1bkxvb3BTb3VyY2VQcmlvcml0eTo6RGlza0NhY2hlV3JpdGUsIG51bGxwdHIsCiAg
ICAgICAgIHJlaW50ZXJwcmV0X2Nhc3Q8R0FzeW5jUmVhZHlDYWxsYmFjaz4ob3V0cHV0U3RyZWFt
V3JpdGVSZWFkeUNhbGxiYWNrKSwgYXN5bmNEYXRhKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlUmVzb3VyY2UuY3BwIGIvU291cmNlL1dlYktpdC9TaGFy
ZWQvU2hhcmVhYmxlUmVzb3VyY2UuY3BwCmluZGV4IDMzMTJmYmMxNTFiZS4uMjU4M2M5MzUxYjk3
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NoYXJlZC9TaGFyZWFibGVSZXNvdXJjZS5jcHAK
KysrIGIvU291cmNlL1dlYktpdC9TaGFyZWQvU2hhcmVhYmxlUmVzb3VyY2UuY3BwCkBAIC04OCw4
ICs4OCwxMSBAQCBSZWZQdHI8U2hhcmVkQnVmZmVyPiBTaGFyZWFibGVSZXNvdXJjZTo6d3JhcElu
U2hhcmVkQnVmZmVyKCkKICAgICBSZXRhaW5QdHI8Q0ZBbGxvY2F0b3JSZWY+IGRlYWxsb2NhdG9y
ID0gYWRvcHRDRihjcmVhdGVTaGFyZWFibGVSZXNvdXJjZURlYWxsb2NhdG9yKHRoaXMpKTsKICAg
ICBSZXRhaW5QdHI8Q0ZEYXRhUmVmPiBjZkRhdGEgPSBhZG9wdENGKENGRGF0YUNyZWF0ZVdpdGhC
eXRlc05vQ29weShrQ0ZBbGxvY2F0b3JEZWZhdWx0LCByZWludGVycHJldF9jYXN0PGNvbnN0IFVJ
bnQ4Kj4oZGF0YSgpKSwgc3RhdGljX2Nhc3Q8Q0ZJbmRleD4oc2l6ZSgpKSwgZGVhbGxvY2F0b3Iu
Z2V0KCkpKTsKICAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUoY2ZEYXRhLmdldCgpKTsK
LSNlbGlmIFVTRShTT1VQKQotICAgIHJldHVybiBTaGFyZWRCdWZmZXI6OndyYXBTb3VwQnVmZmVy
KHNvdXBfYnVmZmVyX25ld193aXRoX293bmVyKGRhdGEoKSwgc2l6ZSgpLCB0aGlzLCBbXSh2b2lk
KiBkYXRhKSB7IHN0YXRpY19jYXN0PFNoYXJlYWJsZVJlc291cmNlKj4oZGF0YSktPmRlcmVmKCk7
IH0pKTsKKyNlbGlmIFVTRShHTElCKQorICAgIEdSZWZQdHI8R0J5dGVzPiBieXRlcyA9IGFkb3B0
R1JlZihnX2J5dGVzX25ld193aXRoX2ZyZWVfZnVuYyhkYXRhKCksIHNpemUoKSwgW10odm9pZCog
ZGF0YSkgeworICAgICAgICBzdGF0aWNfY2FzdDxTaGFyZWFibGVSZXNvdXJjZSo+KGRhdGEpLT5k
ZXJlZigpOworICAgIH0sIHRoaXMpKTsKKyAgICByZXR1cm4gU2hhcmVkQnVmZmVyOjpjcmVhdGUo
Ynl0ZXMuZ2V0KCkpOwogI2Vsc2UKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKICAgICByZXR1
cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvU291cmNlc0dUSy50eHQgYi9T
b3VyY2UvV2ViS2l0L1NvdXJjZXNHVEsudHh0CmluZGV4IDVkNWIwM2IyZTVlZS4uMzc5NTBjM2U3
ZjgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNHVEsudHh0CisrKyBiL1NvdXJj
ZS9XZWJLaXQvU291cmNlc0dUSy50eHQKQEAgLTMyLDggKzMyLDggQEAgTmV0d29ya1Byb2Nlc3Mv
Q2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRTdGF0aXN0aWNzU3RvcmUuY3BwCiAKIE5ldHdvcmtQ
cm9jZXNzL0Nvb2tpZXMvc291cC9XZWJDb29raWVNYW5hZ2VyU291cC5jcHAKIAotTmV0d29ya1By
b2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRGF0YVNvdXAuY3BwCi1OZXR3b3JrUHJvY2Vzcy9jYWNo
ZS9OZXR3b3JrQ2FjaGVJT0NoYW5uZWxTb3VwLmNwcAorTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0
d29ya0NhY2hlRGF0YUdMaWIuY3BwCitOZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVJ
T0NoYW5uZWxHTGliLmNwcAogCiBOZXR3b3JrUHJvY2Vzcy9nbGliL0ROU0NhY2hlLmNwcAogTmV0
d29ya1Byb2Nlc3MvZ2xpYi9XZWJLaXRDYWNoZWRSZXNvbHZlci5jcHAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvU291cmNlc1dQRS50eHQgYi9Tb3VyY2UvV2ViS2l0L1NvdXJjZXNXUEUudHh0
CmluZGV4IGM2NzY3MDc0Y2RiOC4uYjRlNWM4MjY3NDkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L1NvdXJjZXNXUEUudHh0CisrKyBiL1NvdXJjZS9XZWJLaXQvU291cmNlc1dQRS50eHQKQEAg
LTMyLDggKzMyLDggQEAgTmV0d29ya1Byb2Nlc3MvQ2xhc3NpZmllci9XZWJSZXNvdXJjZUxvYWRT
dGF0aXN0aWNzU3RvcmUuY3BwCiAKIE5ldHdvcmtQcm9jZXNzL0Nvb2tpZXMvc291cC9XZWJDb29r
aWVNYW5hZ2VyU291cC5jcHAKIAotTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRGF0
YVNvdXAuY3BwCi1OZXR3b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVJT0NoYW5uZWxTb3Vw
LmNwcAorTmV0d29ya1Byb2Nlc3MvY2FjaGUvTmV0d29ya0NhY2hlRGF0YUdMaWIuY3BwCitOZXR3
b3JrUHJvY2Vzcy9jYWNoZS9OZXR3b3JrQ2FjaGVJT0NoYW5uZWxHTGliLmNwcAogCiBOZXR3b3Jr
UHJvY2Vzcy9nbGliL0ROU0NhY2hlLmNwcAogTmV0d29ya1Byb2Nlc3MvZ2xpYi9XZWJLaXRDYWNo
ZWRSZXNvbHZlci5jcHAK
</data>
<flag name="review"
          id="436964"
          type_id="1"
          status="+"
          setter="svillar"
    />
          </attachment>
      

    </bug>

</bugzilla>