<?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>81456</bug_id>
          
          <creation_ts>2012-03-17 12:45:48 -0700</creation_ts>
          <short_desc>[META][GTK] Wayland support</short_desc>
          <delta_ts>2016-09-15 00:44:39 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKitGTK</component>
          <version>528+ (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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>77921</dependson>
    
    <dependson>115721</dependson>
    
    <dependson>115801</dependson>
    
    <dependson>115803</dependson>
    
    <dependson>116717</dependson>
    
    <dependson>118458</dependson>
    
    <dependson>120455</dependson>
    
    <dependson>120627</dependson>
    
    <dependson>121165</dependson>
    
    <dependson>126927</dependson>
    
    <dependson>142334</dependson>
    
    <dependson>142879</dependson>
    
    <dependson>144544</dependson>
    
    <dependson>145645</dependson>
    
    <dependson>145701</dependson>
    
    <dependson>146056</dependson>
    
    <dependson>146057</dependson>
    
    <dependson>146574</dependson>
    
    <dependson>147297</dependson>
    
    <dependson>147453</dependson>
    
    <dependson>157973</dependson>
    
    <dependson>158697</dependson>
    
    <dependson>160244</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter>darxus</reporter>
          <assigned_to name="José Dapena Paz">jdapena</assigned_to>
          <cc>cgarcia</cc>
    
    <cc>changseok</cc>
    
    <cc>clopez</cc>
    
    <cc>gustavo</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jana</cc>
    
    <cc>jdapena</cc>
    
    <cc>joone</cc>
    
    <cc>kalyan.kondapally</cc>
    
    <cc>kevin.cs.oh</cc>
    
    <cc>mcatanzaro</cc>
    
    <cc>mika.bostrom</cc>
    
    <cc>mike.emmel</cc>
    
    <cc>mike</cc>
    
    <cc>mrobinson</cc>
    
    <cc>phomes</cc>
    
    <cc>rego</cc>
    
    <cc>rudloff</cc>
    
    <cc>slomo</cc>
    
    <cc>thibaut.bethune</cc>
    
    <cc>tomeu</cc>
    
    <cc>zan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>581358</commentid>
    <comment_count>0</comment_count>
    <who name="">darxus</who>
    <bug_when>2012-03-17 12:45:48 -0700</bug_when>
    <thetext>Quoting http://wayland.freedesktop.org/gtk.html on porting applications to wayland:

* Ensure that your application uses gtk+-3.0 for its pkg-config request.
* Your application must not use any API in the gdk_x11_ namespace or any raw Xlib calls.
* Check the errata below for issues that might affect your application.

I believe lack of a web browser is the main reason I&apos;m not using wayland as my primary display right now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>598034</commentid>
    <comment_count>1</comment_count>
    <who name="">darxus</who>
    <bug_when>2012-04-08 07:30:50 -0700</bug_when>
    <thetext>Info on wraping gdk_x11* and xlib calls in build-time and run-time backend check instead of removing them:  http://developer.gnome.org/gtk3/3.3/ch24s02.html#id1502079</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>598042</commentid>
    <comment_count>2</comment_count>
    <who name="Mika Boström">mika.bostrom</who>
    <bug_when>2012-04-08 10:02:13 -0700</bug_when>
    <thetext>I would suspect the biggest problems come from the need to disable NPAPI. It appears to be unconditionally enabled for GTK bindings. So, you&apos;ll need to make ENABLE_NETSCAPE_PLUGIN_API=[0|1] a toggleable build flag .

Then, you need to include the empty NPAPI implementation. There are Plugin*None.cpp files in WebCore/plugins/ which you can use. Just hack the build to use those when NPAPI is not enabled. Remember to check that FrameLoaderClientGtk.cpp copes with the implementation; there might be some opportunistic uses of PluginView instance without checking whether it&apos;s valid.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>598074</commentid>
    <comment_count>3</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2012-04-08 17:05:48 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; I would suspect the biggest problems come from the need to disable NPAPI. It appears to be unconditionally enabled for GTK bindings. So, you&apos;ll need to make ENABLE_NETSCAPE_PLUGIN_API=[0|1] a toggleable build flag .
&gt; 
&gt; Then, you need to include the empty NPAPI implementation. There are Plugin*None.cpp files in WebCore/plugins/ which you can use. Just hack the build to use those when NPAPI is not enabled. Remember to check that FrameLoaderClientGtk.cpp copes with the implementation; there might be some opportunistic uses of PluginView instance without checking whether it&apos;s valid.

I wonder if some windowless plugins could be supported by using the X11 headers and converting events to X11 events. I don&apos;t hold out much hope for this option, but it could get some plugins working.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>734663</commentid>
    <comment_count>4</comment_count>
    <who name="José Dapena Paz">jdapena</who>
    <bug_when>2012-10-04 07:26:23 -0700</bug_when>
    <thetext>I&apos;m working on an implementation for this, and I&apos;ll start adding the implementation for this as the work progresses.

The initial issues with this were mostly related to build disabling NSAPI for X11. A solution for this would need to be thought independently (if anyone wills to do it).

But the main issues I&apos;m facing are related to Accelerated Compositing and WebGL. In X11 we use XComposite for this. In Wayland it&apos;s a bit different. Though Wayland is a pure compositing protocol, it does not provide a way to share render buffers among clients, and also, it does not have the concept of a Window embedded in otehr Window. I&apos;ve written some details here:
http://blogs.igalia.com/dape/2012/10/01/webkitgtk-accelerated-composition-on-wayland/

For WK1-GTK+, the main change I made is allowing TextureMapperGL to render to a texture. This texture is then painted to the WebKitWebView cairo context on demand. For WK2, I&apos;ll need a different solution, as I need to share a buffer between the UI and Web Process.

Adding also dependency on #77921 (add support for EGL). My Wayland support patch is done on top of the patch for that bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>735632</commentid>
    <comment_count>5</comment_count>
      <attachid>167328</attachid>
    <who name="José Dapena Paz">jdapena</who>
    <bug_when>2012-10-05 07:43:57 -0700</bug_when>
    <thetext>Created attachment 167328
Patch

First draft of Wayland support. This patch depends on current egl support fix for #77921</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>885646</commentid>
    <comment_count>6</comment_count>
    <who name="José Dapena Paz">jdapena</who>
    <bug_when>2013-05-07 01:54:55 -0700</bug_when>
    <thetext>Converting this to a META bug. We&apos;ll coordinate the effort for implementing the fixes needed for wayland support using this.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>885647</commentid>
    <comment_count>7</comment_count>
      <attachid>167328</attachid>
    <who name="José Dapena Paz">jdapena</who>
    <bug_when>2013-05-07 01:59:20 -0700</bug_when>
    <thetext>Comment on attachment 167328
Patch

Obsoleting the patch. This was designed for static wayland support. As Gtk supports runtime detection of wayland or x11 backend, our implementation should do the same.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1092836</commentid>
    <comment_count>8</comment_count>
    <who name="Martin Robinson">mrobinson</who>
    <bug_when>2015-05-07 16:31:26 -0700</bug_when>
    <thetext>*** Bug 18638 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1229931</commentid>
    <comment_count>9</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2016-09-15 00:44:39 -0700</bug_when>
    <thetext>All blocking bugs have been fixed now, so we can close this.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>167328</attachid>
            <date>2012-10-05 07:43:57 -0700</date>
            <delta_ts>2013-05-07 01:59:20 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-81456-20121005164305.patch</filename>
            <type>text/plain</type>
            <size>50884</size>
            <attacher name="José Dapena Paz">jdapena</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTMwNDg2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9H
TlVtYWtlZmlsZS5saXN0LmFtIGIvU291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQpp
bmRleCAxZTk3YjU3YTczMjVmZWUwNTVlNjNmMGQwNTA1ZGIyMjlmNTIyMjEzLi5lMWQ5YzQyODRj
NDJhYWZiMGM3MmFjMjI1MmMyYjc0ZmM0YWUzZGNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9HTlVtYWtlZmlsZS5saXN0LmFtCisrKyBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxp
c3QuYW0KQEAgLTYwMzUsOSArNjAzNSwyMyBAQCB3ZWJjb3JlZ3RrX3NvdXJjZXMgKz0gXAogCVNv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2NhaXJvL1dpZGdldEJhY2tpbmdTdG9yZUNhaXJvLmNwcCBc
CiAJU291cmNlL1dlYkNvcmUvcGx1Z2lucy93aW4vUGx1Z2luVmlld1dpbi5jcHAKIGVsc2UKK2lm
IFRBUkdFVF9XQVlMQU5ECiB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL3Bs
dWdpbnMvUGx1Z2luUGFja2FnZU5vbmUuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9wbHVnaW5zL1Bs
dWdpblZpZXdOb25lLmNwcAord2ViY29yZWd0a19zb3VyY2VzICs9IFwKKwlTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ndGsvUmVkaXJlY3RlZEVHTFRleHR1cmUuY3BwIFwKKwlTb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ndGsvUmVkaXJlY3RlZEVHTFRleHR1cmUuaCBcCisJU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZWdsL0dMQ29udGV4dEVHTC5jcHAgXAorCVNvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2VnbC9HTENvbnRleHRFR0wuaCBcCisJU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR0xDb250ZXh0LmNwcCBcCisJU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR0xDb250ZXh0LmggXAorCVNvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2NhaXJvL1dpZGdldEJhY2tpbmdTdG9yZUNhaXJvLmNwcAorZWxzZQord2ViY29yZV9z
b3VyY2VzICs9IFwKKwlTb3VyY2UvV2ViQ29yZS9wbHVnaW5zL1BsdWdpblBhY2thZ2VOb25lLmNw
cCBcCisJU291cmNlL1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5WaWV3Tm9uZS5jcHAKK2VuZGlmICMg
RU5EIFRBUkdFVF9XQVlMQU5ECiBlbmRpZiAjIEVORCBUQVJHRVRfV0lOMzIKIGVuZGlmICMgRU5E
IFRBUkdFVF9YMTEKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY2Fpcm8vR0xDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NhaXJvL0dMQ29udGV4dC5jcHAKaW5kZXggMmNiMGFiM2NjOTAxZDEyM2VhZWNkY2ViMTU1MDM4
NzkzMGE1NDc0My4uNmQ5MDFhMDZlOWY2OThiOTUwM2ZhNTZjM2I4MGI4ZDYxZWE0MTc4MSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY2Fpcm8vR0xDb250ZXh0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jYWlyby9HTENvbnRl
eHQuY3BwCkBAIC0xMTgsNyArMTE4LDcgQEAgUGFzc093blB0cjxHTENvbnRleHQ+IEdMQ29udGV4
dDo6Y3JlYXRlQ29udGV4dEZvcldpbmRvdyh1aW50NjRfdCB3aW5kb3dIYW5kbGUsIEcKICAgICAg
ICAgcmV0dXJuIGdseENvbnRleHQucmVsZWFzZSgpOwogI2VuZGlmCiAjaWYgVVNFKEVHTCkKLSAg
ICBpZiAoT3duUHRyPEdMQ29udGV4dD4gZWdsQ29udGV4dCA9IEdMQ29udGV4dEVHTDo6Y3JlYXRl
Q29udGV4dCh3aW5kb3dIYW5kbGUsIHNoYXJpbmdDb250ZXh0KSkKKyAgICBpZiAoT3duUHRyPEdM
Q29udGV4dD4gZWdsQ29udGV4dCA9IEdMQ29udGV4dEVHTDo6Y3JlYXRlQ29udGV4dCgoRUdMTmF0
aXZlV2luZG93VHlwZSl3aW5kb3dIYW5kbGUsIHNoYXJpbmdDb250ZXh0KSkKICAgICAgICAgcmV0
dXJuIGVnbENvbnRleHQucmVsZWFzZSgpOwogI2VuZGlmCiAgICAgcmV0dXJuIG51bGxwdHI7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9lZ2wvR0xDb250ZXh0
RUdMLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2VnbC9HTENvbnRleHRF
R0wuY3BwCmluZGV4IDhjYWRiMDMzZWY1M2QyNDczOTQwZjRmZWM1NTNhM2RlMTg4MmE1YjkuLjhk
MzE5NjNlOTBmNWY4MTc2NzE3ZGU0NDMxOWNlZTU1NmI3ODEwYTUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2VnbC9HTENvbnRleHRFR0wuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2VnbC9HTENvbnRleHRFR0wuY3BwCkBAIC0y
MSw2ICsyMSwxMCBAQAogCiAjaWYgVVNFKEVHTCkKIAorI2lmIFBMQVRGT1JNKFdBWUxBTkQpCisj
aW5jbHVkZSA8d2F5bGFuZC1lZ2wuaD4KKyNlbmRpZgorCiAjaW5jbHVkZSAiR3JhcGhpY3NDb250
ZXh0M0QuaCIKICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CiAKQEAgLTMxLDYgKzM1LDggQEAKICNp
bmNsdWRlICJPcGVuR0xTaGltcy5oIgogI2VuZGlmCiAKKyNpbmNsdWRlIDxjYWlyby9jYWlyby1n
bC5oPgorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0YXRpYyBFR0xEaXNwbGF5IGdTaGFyZWRF
R0xEaXNwbGF5ID0gRUdMX05PX0RJU1BMQVk7CkBAIC00MSwxMyArNDcsMjYgQEAgc3RhdGljIGNv
bnN0IEVHTGVudW0gZ0dMQVBJID0gRUdMX09QRU5HTF9FU19BUEk7CiBzdGF0aWMgY29uc3QgRUdM
ZW51bSBnR0xBUEkgPSBFR0xfT1BFTkdMX0FQSTsKICNlbmRpZgogCi1zdGF0aWMgRUdMRGlzcGxh
eSBzaGFyZWRFR0xEaXNwbGF5KCkKKyNpZiBQTEFURk9STShXQVlMQU5EKQorc3RhdGljIHdsX2Rp
c3BsYXkqIGdTaGFyZWRXYXlsYW5kRGlzcGxheSA9IDA7CitzdGF0aWMgd2xfZGlzcGxheSogc2hh
cmVkV2F5bGFuZERpc3BsYXkoKQoreworICAgIGlmICghZ1NoYXJlZFdheWxhbmREaXNwbGF5KQor
ICAgICAgICBnU2hhcmVkV2F5bGFuZERpc3BsYXkgPSB3bF9kaXNwbGF5X2Nvbm5lY3QoMCk7CisK
KyAgICByZXR1cm4gZ1NoYXJlZFdheWxhbmREaXNwbGF5OworfQorI2VuZGlmCisKK3N0YXRpYyBF
R0xEaXNwbGF5IGdldFNoYXJlZEVHTERpc3BsYXkoKQogewogICAgIHN0YXRpYyBib29sIGluaXRp
YWxpemVkID0gZmFsc2U7CiAgICAgaWYgKCFpbml0aWFsaXplZCkgewogICAgICAgICBpbml0aWFs
aXplZCA9IHRydWU7CiAjaWYgUExBVEZPUk0oWDExKQogICAgICAgICBnU2hhcmVkRUdMRGlzcGxh
eSA9IGVnbEdldERpc3BsYXkoR0xDb250ZXh0OjpzaGFyZWRYMTFEaXNwbGF5KCkpOworI2VsaWYg
UExBVEZPUk0oV0FZTEFORCkKKyAgICAgICAgZ1NoYXJlZEVHTERpc3BsYXkgPSBlZ2xHZXREaXNw
bGF5KHNoYXJlZFdheWxhbmREaXNwbGF5KCkpOwogI2Vsc2UKICAgICAgICAgZ1NoYXJlZEVHTERp
c3BsYXkgPSBlZ2xHZXREaXNwbGF5KEVHTF9ERUZBVUxUX0RJU1BMQVkpOwogI2VuZGlmCkBAIC01
Nyw2ICs3NiwxMSBAQCBzdGF0aWMgRUdMRGlzcGxheSBzaGFyZWRFR0xEaXNwbGF5KCkKICAgICBy
ZXR1cm4gZ1NoYXJlZEVHTERpc3BsYXk7CiB9CiAKK0VHTERpc3BsYXkgR0xDb250ZXh0RUdMOjpz
aGFyZWRFR0xEaXNwbGF5KCkKK3sKKyAgICByZXR1cm4gZ2V0U2hhcmVkRUdMRGlzcGxheSgpOwor
fQorCiBzdGF0aWMgY29uc3QgRUdMaW50IGdDb250ZXh0QXR0cmlidXRlc1tdID0gewogI2lmIFVT
RShPUEVOR0xfRVNfMikKICAgICBFR0xfQ09OVEVYVF9DTElFTlRfVkVSU0lPTiwgMiwKQEAgLTk0
LDE0ICsxMTgsMTQgQEAgc3RhdGljIGJvb2wgZ2V0RUdMQ29uZmlnKEVHTENvbmZpZyogY29uZmln
LCBHTENvbnRleHRFR0w6OkVHTFN1cmZhY2VUeXBlIHN1cmZhY2UKICAgICB9CiAKICAgICBFR0xp
bnQgbnVtYmVyQ29uZmlnc1JldHVybmVkOwotICAgIHJldHVybiBlZ2xDaG9vc2VDb25maWcoc2hh
cmVkRUdMRGlzcGxheSgpLCBhdHRyaWJ1dGVMaXN0LCBjb25maWcsIDEsICZudW1iZXJDb25maWdz
UmV0dXJuZWQpICYmIG51bWJlckNvbmZpZ3NSZXR1cm5lZDsKKyAgICByZXR1cm4gZWdsQ2hvb3Nl
Q29uZmlnKGdldFNoYXJlZEVHTERpc3BsYXkoKSwgYXR0cmlidXRlTGlzdCwgY29uZmlnLCAxLCAm
bnVtYmVyQ29uZmlnc1JldHVybmVkKSAmJiBudW1iZXJDb25maWdzUmV0dXJuZWQ7CiB9CiAKIFBh
c3NPd25QdHI8R0xDb250ZXh0RUdMPiBHTENvbnRleHRFR0w6OmNyZWF0ZVdpbmRvd0NvbnRleHQo
RUdMTmF0aXZlV2luZG93VHlwZSB3aW5kb3csIEdMQ29udGV4dCogc2hhcmluZ0NvbnRleHQpCiB7
CiAgICAgRUdMQ29udGV4dCBlZ2xTaGFyaW5nQ29udGV4dCA9IHNoYXJpbmdDb250ZXh0ID8gc3Rh
dGljX2Nhc3Q8R0xDb250ZXh0RUdMKj4oc2hhcmluZ0NvbnRleHQpLT5tX2NvbnRleHQgOiAwOwog
Ci0gICAgRUdMRGlzcGxheSBkaXNwbGF5ID0gc2hhcmVkRUdMRGlzcGxheSgpOworICAgIEVHTERp
c3BsYXkgZGlzcGxheSA9IGdldFNoYXJlZEVHTERpc3BsYXkoKTsKICAgICBpZiAoZGlzcGxheSA9
PSBFR0xfTk9fRElTUExBWSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKQEAgLTEyMiw3ICsx
NDYsNyBAQCBQYXNzT3duUHRyPEdMQ29udGV4dEVHTD4gR0xDb250ZXh0RUdMOjpjcmVhdGVXaW5k
b3dDb250ZXh0KEVHTE5hdGl2ZVdpbmRvd1R5cGUgdwogCiBQYXNzT3duUHRyPEdMQ29udGV4dEVH
TD4gR0xDb250ZXh0RUdMOjpjcmVhdGVQYnVmZmVyQ29udGV4dChFR0xDb250ZXh0IHNoYXJpbmdD
b250ZXh0KQogewotICAgIEVHTERpc3BsYXkgZGlzcGxheSA9IHNoYXJlZEVHTERpc3BsYXkoKTsK
KyAgICBFR0xEaXNwbGF5IGRpc3BsYXkgPSBnZXRTaGFyZWRFR0xEaXNwbGF5KCk7CiAgICAgaWYg
KGRpc3BsYXkgPT0gRUdMX05PX0RJU1BMQVkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCkBA
IC0xNDQsMTAgKzE2OCw1NCBAQCBQYXNzT3duUHRyPEdMQ29udGV4dEVHTD4gR0xDb250ZXh0RUdM
OjpjcmVhdGVQYnVmZmVyQ29udGV4dChFR0xDb250ZXh0IHNoYXJpbmdDbwogICAgIHJldHVybiBh
ZG9wdFB0cihuZXcgR0xDb250ZXh0RUdMKGNvbnRleHQsIHN1cmZhY2UsIFBidWZmZXJTdXJmYWNl
KSk7CiB9CiAKLVBhc3NPd25QdHI8R0xDb250ZXh0RUdMPiBHTENvbnRleHRFR0w6OmNyZWF0ZVBp
eG1hcENvbnRleHQoRUdMQ29udGV4dCBzaGFyaW5nQ29udGV4dCkKK0VHTE5hdGl2ZVBpeG1hcFR5
cGUgR0xDb250ZXh0RUdMOjpjcmVhdGVQaXhtYXAoY29uc3QgSW50U2l6ZSYgc2l6ZSkKK3sKKyNp
ZiBQTEFURk9STShYMTEpCisgICAgRUdMRGlzcGxheSBkaXNwbGF5ID0gZ2V0U2hhcmVkRUdMRGlz
cGxheSgpOworICAgIGlmIChkaXNwbGF5ID09IEVHTF9OT19ESVNQTEFZKQorICAgICAgICByZXR1
cm4gMDsKKworICAgIEVHTENvbmZpZyBjb25maWc7CisgICAgaWYgKCFnZXRFR0xDb25maWcoJmNv
bmZpZywgUGl4bWFwU3VyZmFjZSkpCisgICAgICAgIHJldHVybiAwOworCisgICAgRUdMaW50IGRl
cHRoOworICAgIGlmICghZWdsR2V0Q29uZmlnQXR0cmliKGRpc3BsYXksIGNvbmZpZywgRUdMX0RF
UFRIX1NJWkUsICZkZXB0aCkpCisgICAgICAgIHJldHVybiAwOworCisgICAgcmV0dXJuIFhDcmVh
dGVQaXhtYXAoc2hhcmVkWDExRGlzcGxheSgpLCBEZWZhdWx0Um9vdFdpbmRvdyhzaGFyZWREaXNw
bGF5KCkpLCBzaXplLndpZHRoKCksIHNpemUuaGVpZ2h0KCksIGRlcHRoKTsKKyNlbGlmIFBMQVRG
T1JNKFdBWUxBTkQpCisgICAgcmV0dXJuIHdsX2VnbF9waXhtYXBfY3JlYXRlKHNpemUud2lkdGgo
KSwgc2l6ZS5oZWlnaHQoKSwgMCk7CisjZWxzZQorICAgIHJldHVybiAwOworI2VuZGlmCit9CisK
K3ZvaWQgR0xDb250ZXh0RUdMOjpkZXN0cm95UGl4bWFwKEVHTE5hdGl2ZVBpeG1hcFR5cGUgcGl4
bWFwKQogewogI2lmIFBMQVRGT1JNKFgxMSkKLSAgICBFR0xEaXNwbGF5IGRpc3BsYXkgPSBzaGFy
ZWRFR0xEaXNwbGF5KCk7CisgICAgWEZyZWVQaXhtYXAoc2hhcmVkRGlzcGxheSgpLCBwaXhtYXAp
OworI2VsaWYgUExBVEZPUk0oV0FZTEFORCkKKyAgICB3bF9lZ2xfcGl4bWFwX2Rlc3Ryb3kocGl4
bWFwKTsKKyNlbmRpZgorfQorCitFR0xTdXJmYWNlIEdMQ29udGV4dEVHTDo6Y3JlYXRlUGl4bWFw
U3VyZmFjZShFR0xOYXRpdmVQaXhtYXBUeXBlIHBpeG1hcCkKK3sKKyAgICBFR0xEaXNwbGF5IGRp
c3BsYXkgPSBnZXRTaGFyZWRFR0xEaXNwbGF5KCk7CisgICAgaWYgKGRpc3BsYXkgPT0gRUdMX05P
X0RJU1BMQVkpCisgICAgICAgIHJldHVybiAwOworCisgICAgRUdMQ29uZmlnIGNvbmZpZzsKKyAg
ICBpZiAoIWdldEVHTENvbmZpZygmY29uZmlnLCBQaXhtYXBTdXJmYWNlKSkKKyAgICAgICAgcmV0
dXJuIDA7CisKKyAgICByZXR1cm4gZWdsQ3JlYXRlUGl4bWFwU3VyZmFjZShkaXNwbGF5LCBjb25m
aWcsIHBpeG1hcCwgMCk7Cit9CisKK1Bhc3NPd25QdHI8R0xDb250ZXh0RUdMPiBHTENvbnRleHRF
R0w6OmNyZWF0ZVBpeG1hcENvbnRleHQoRUdMQ29udGV4dCBzaGFyaW5nQ29udGV4dCkKK3sKKyAg
ICBFR0xEaXNwbGF5IGRpc3BsYXkgPSBnZXRTaGFyZWRFR0xEaXNwbGF5KCk7CiAgICAgaWYgKGRp
c3BsYXkgPT0gRUdMX05PX0RJU1BMQVkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCkBAIC0x
NTksMTggKzIyNywxMSBAQCBQYXNzT3duUHRyPEdMQ29udGV4dEVHTD4gR0xDb250ZXh0RUdMOjpj
cmVhdGVQaXhtYXBDb250ZXh0KEVHTENvbnRleHQgc2hhcmluZ0NvbgogICAgIGlmIChjb250ZXh0
ID09IEVHTF9OT19DT05URVhUKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAotICAgIEVHTGlu
dCBkZXB0aDsKLSAgICBpZiAoIWVnbEdldENvbmZpZ0F0dHJpYihkaXNwbGF5LCBjb25maWcsIEVH
TF9ERVBUSF9TSVpFLCAmZGVwdGgpKQotICAgICAgICByZXR1cm4gbnVsbHB0cjsKLQotICAgIFBp
eG1hcCBwaXhtYXAgPSBYQ3JlYXRlUGl4bWFwKHNoYXJlZFgxMURpc3BsYXkoKSwgRGVmYXVsdFJv
b3RXaW5kb3coc2hhcmVkWDExRGlzcGxheSgpKSwgMSwgMSwgZGVwdGgpOworICAgIEVHTE5hdGl2
ZVBpeG1hcFR5cGUgcGl4bWFwID0gR0xDb250ZXh0RUdMOjpjcmVhdGVQaXhtYXAoSW50U2l6ZSgx
LCAxKSk7CiAgICAgaWYgKCFwaXhtYXApCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCi0gICAg
RUdMU3VyZmFjZSBzdXJmYWNlID0gZWdsQ3JlYXRlUGl4bWFwU3VyZmFjZShkaXNwbGF5LCBjb25m
aWcsIHBpeG1hcCwgMCk7Ci0jZWxzZQotICAgIEVHTFN1cmZhY2Ugc3VyZmFjZSA9IEVHTF9OT19T
VVJGQUNFOwotI2VuZGlmCisgICAgRUdMU3VyZmFjZSBzdXJmYWNlID0gR0xDb250ZXh0RUdMOjpj
cmVhdGVQaXhtYXBTdXJmYWNlKHBpeG1hcCk7CiAgICAgaWYgKHN1cmZhY2UgPT0gRUdMX05PX1NV
UkZBQ0UpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCkBAIC0xNzksNyArMjQwLDcgQEAgUGFz
c093blB0cjxHTENvbnRleHRFR0w+IEdMQ29udGV4dEVHTDo6Y3JlYXRlUGl4bWFwQ29udGV4dChF
R0xDb250ZXh0IHNoYXJpbmdDb24KIAogUGFzc093blB0cjxHTENvbnRleHRFR0w+IEdMQ29udGV4
dEVHTDo6Y3JlYXRlQ29udGV4dChFR0xOYXRpdmVXaW5kb3dUeXBlIHdpbmRvdywgR0xDb250ZXh0
KiBzaGFyaW5nQ29udGV4dCkKIHsKLSAgICBpZiAoIXNoYXJlZEVHTERpc3BsYXkoKSkKKyAgICBp
ZiAoIWdldFNoYXJlZEVHTERpc3BsYXkoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAg
ICBzdGF0aWMgYm9vbCBpbml0aWFsaXplZCA9IGZhbHNlOwpAQCAtMTk2LDExICsyNTcsMTEgQEAg
UGFzc093blB0cjxHTENvbnRleHRFR0w+IEdMQ29udGV4dEVHTDo6Y3JlYXRlQ29udGV4dChFR0xO
YXRpdmVXaW5kb3dUeXBlIHdpbmRvdywKICAgICBFR0xDb250ZXh0IGVnbFNoYXJpbmdDb250ZXh0
ID0gc2hhcmluZ0NvbnRleHQgPyBzdGF0aWNfY2FzdDxHTENvbnRleHRFR0wqPihzaGFyaW5nQ29u
dGV4dCktPm1fY29udGV4dCA6IDA7CiAgICAgT3duUHRyPEdMQ29udGV4dEVHTD4gY29udGV4dCA9
IHdpbmRvdyA/IGNyZWF0ZVdpbmRvd0NvbnRleHQod2luZG93LCBzaGFyaW5nQ29udGV4dCkgOiBu
dWxscHRyOwogICAgIGlmICghY29udGV4dCkKLSAgICAgICAgY29udGV4dCA9IGNyZWF0ZVBpeG1h
cENvbnRleHQoZWdsU2hhcmluZ0NvbnRleHQpOwotCi0gICAgaWYgKCFjb250ZXh0KQogICAgICAg
ICBjb250ZXh0ID0gY3JlYXRlUGJ1ZmZlckNvbnRleHQoZWdsU2hhcmluZ0NvbnRleHQpOwogICAg
IAorICAgIGlmICghY29udGV4dCkKKyAgICAgICAgY29udGV4dCA9IGNyZWF0ZVBpeG1hcENvbnRl
eHQoZWdsU2hhcmluZ0NvbnRleHQpOworCiAgICAgcmV0dXJuIGNvbnRleHQucmVsZWFzZSgpOwog
fQogCkBAIC0yMTAsMTEgKzI3MSwxNiBAQCBHTENvbnRleHRFR0w6OkdMQ29udGV4dEVHTChFR0xD
b250ZXh0IGNvbnRleHQsIEVHTFN1cmZhY2Ugc3VyZmFjZSwgRUdMU3VyZmFjZVR5cAogICAgICwg
bV9zdXJmYWNlKHN1cmZhY2UpCiAgICAgLCBtX3R5cGUodHlwZSkKIHsKKyAgICBtX2NhaXJvRGV2
aWNlID0gY2Fpcm9fZWdsX2RldmljZV9jcmVhdGUoZ2V0U2hhcmVkRUdMRGlzcGxheSgpLCBtX2Nv
bnRleHQpOwogfQogCiBHTENvbnRleHRFR0w6On5HTENvbnRleHRFR0woKQogewotICAgIEVHTERp
c3BsYXkgZGlzcGxheSA9IHNoYXJlZEVHTERpc3BsYXkoKTsKKyAgICBFR0xEaXNwbGF5IGRpc3Bs
YXkgPSBnZXRTaGFyZWRFR0xEaXNwbGF5KCk7CisKKyAgICBjYWlyb19kZXZpY2VfZGVzdHJveSht
X2NhaXJvRGV2aWNlKTsKKyAgICBtX2NhaXJvRGV2aWNlID0gMDsKKwogICAgIGlmIChtX2NvbnRl
eHQpIHsKICAgICAgICAgZ2xCaW5kRnJhbWVidWZmZXIoR0xfRlJBTUVCVUZGRVIsIDApOwogICAg
ICAgICBlZ2xNYWtlQ3VycmVudChkaXNwbGF5LCBFR0xfTk9fU1VSRkFDRSwgRUdMX05PX1NVUkZB
Q0UsIEVHTF9OT19DT05URVhUKTsKQEAgLTIyNSw2ICsyOTEsMTEgQEAgR0xDb250ZXh0RUdMOjp+
R0xDb250ZXh0RUdMKCkKICAgICAgICAgZWdsRGVzdHJveVN1cmZhY2UoZGlzcGxheSwgbV9zdXJm
YWNlKTsKIH0KIAorY2Fpcm9fZGV2aWNlX3QqIEdMQ29udGV4dEVHTDo6Y2Fpcm9EZXZpY2UoKQor
eworICAgIHJldHVybiBtX2NhaXJvRGV2aWNlOworfQorCiBib29sIEdMQ29udGV4dEVHTDo6Y2Fu
UmVuZGVyVG9EZWZhdWx0RnJhbWVidWZmZXIoKQogewogICAgIHJldHVybiBtX3R5cGUgPT0gV2lu
ZG93U3VyZmFjZTsKQEAgLTIzNiw4ICszMDcsOCBAQCBJbnRTaXplIEdMQ29udGV4dEVHTDo6ZGVm
YXVsdEZyYW1lQnVmZmVyU2l6ZSgpCiAgICAgICAgIHJldHVybiBJbnRTaXplKCk7CiAKICAgICBF
R0xpbnQgd2lkdGgsIGhlaWdodDsKLSAgICBpZiAoIWVnbFF1ZXJ5U3VyZmFjZShzaGFyZWRFR0xE
aXNwbGF5KCksIG1fc3VyZmFjZSwgRUdMX1dJRFRILCAmd2lkdGgpCi0gICAgICAgIHx8ICFlZ2xR
dWVyeVN1cmZhY2Uoc2hhcmVkRUdMRGlzcGxheSgpLCBtX3N1cmZhY2UsIEVHTF9IRUlHSFQsICZo
ZWlnaHQpKQorICAgIGlmICghZWdsUXVlcnlTdXJmYWNlKGdldFNoYXJlZEVHTERpc3BsYXkoKSwg
bV9zdXJmYWNlLCBFR0xfV0lEVEgsICZ3aWR0aCkKKyAgICAgICAgfHwgIWVnbFF1ZXJ5U3VyZmFj
ZShnZXRTaGFyZWRFR0xEaXNwbGF5KCksIG1fc3VyZmFjZSwgRUdMX0hFSUdIVCwgJmhlaWdodCkp
CiAgICAgICAgIHJldHVybiBJbnRTaXplKCk7CiAKICAgICByZXR1cm4gSW50U2l6ZSh3aWR0aCwg
aGVpZ2h0KTsKQEAgLTI1MSwxMyArMzIyLDE0IEBAIGJvb2wgR0xDb250ZXh0RUdMOjptYWtlQ29u
dGV4dEN1cnJlbnQoKQogICAgIGlmIChlZ2xHZXRDdXJyZW50Q29udGV4dCgpID09IG1fY29udGV4
dCkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICByZXR1cm4gZWdsTWFrZUN1cnJlbnQoc2hh
cmVkRUdMRGlzcGxheSgpLCBtX3N1cmZhY2UsIG1fc3VyZmFjZSwgbV9jb250ZXh0KTsKKyAgICBy
ZXR1cm4gZWdsTWFrZUN1cnJlbnQoZ2V0U2hhcmVkRUdMRGlzcGxheSgpLCBtX3N1cmZhY2UsIG1f
c3VyZmFjZSwgbV9jb250ZXh0KTsKIH0KIAogdm9pZCBHTENvbnRleHRFR0w6OnN3YXBCdWZmZXJz
KCkKIHsKICAgICBBU1NFUlQobV9zdXJmYWNlKTsKLSAgICBlZ2xTd2FwQnVmZmVycyhzaGFyZWRF
R0xEaXNwbGF5KCksIG1fc3VyZmFjZSk7CisgICAgaWYgKG1fdHlwZSAhPSBQaXhtYXBTdXJmYWNl
KQorICAgICAgICBlZ2xTd2FwQnVmZmVycyhnZXRTaGFyZWRFR0xEaXNwbGF5KCksIG1fc3VyZmFj
ZSk7CiB9CiAKIHZvaWQgR0xDb250ZXh0RUdMOjp3YWl0TmF0aXZlKCkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2VnbC9HTENvbnRleHRFR0wuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2VnbC9HTENvbnRleHRFR0wuaAppbmRleCBjNWQ0
YmY3NTYxNWM3YjcyMzhmYTFhZDJjYjk2YTIyMzlhNTUyOTJmLi42ZjM4MGM2NmUzMTgyMTU1MTU4
M2M0MTFkNTc0MmU3YWZiYTQyMGJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9lZ2wvR0xDb250ZXh0RUdMLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZWdsL0dMQ29udGV4dEVHTC5oCkBAIC0yMyw3ICsyMywxMSBAQAogI2lmIFVT
RShFR0wpCiAKICNpbmNsdWRlICJHTENvbnRleHQuaCIKKyNpbmNsdWRlIDxjYWlyby9jYWlyby5o
PgogCisjaWYgUExBVEZPUk0oV0FZTEFORCkKKyNpbmNsdWRlIDx3YXlsYW5kLWVnbC5oPgorI2Vu
ZGlmCiAjaW5jbHVkZSA8RUdML2VnbC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC00Miw2
ICs0NiwxMyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCBib29sIGNhblJlbmRlclRvRGVmYXVsdEZy
YW1lYnVmZmVyKCk7CiAgICAgdmlydHVhbCBJbnRTaXplIGRlZmF1bHRGcmFtZUJ1ZmZlclNpemUo
KTsKIAorICAgIGNhaXJvX2RldmljZV90KiBjYWlyb0RldmljZSgpOworCisgICAgc3RhdGljIEVH
TE5hdGl2ZVBpeG1hcFR5cGUgY3JlYXRlUGl4bWFwKGNvbnN0IEludFNpemUmKTsKKyAgICBzdGF0
aWMgdm9pZCBkZXN0cm95UGl4bWFwKEVHTE5hdGl2ZVBpeG1hcFR5cGUpOworICAgIHN0YXRpYyBF
R0xTdXJmYWNlIGNyZWF0ZVBpeG1hcFN1cmZhY2UoRUdMTmF0aXZlUGl4bWFwVHlwZSk7CisKKyAg
ICBzdGF0aWMgRUdMRGlzcGxheSBzaGFyZWRFR0xEaXNwbGF5KHZvaWQpOwogCiAjaWYgRU5BQkxF
KFdFQkdMKQogICAgIHZpcnR1YWwgUGxhdGZvcm1HcmFwaGljc0NvbnRleHQzRCBwbGF0Zm9ybUNv
bnRleHQoKTsKQEAgLTU5LDYgKzcwLDcgQEAgcHJpdmF0ZToKICAgICBFR0xDb250ZXh0IG1fY29u
dGV4dDsKICAgICBFR0xTdXJmYWNlIG1fc3VyZmFjZTsKICAgICBFR0xTdXJmYWNlVHlwZSBtX3R5
cGU7CisgICAgY2Fpcm9fZGV2aWNlX3QqIG1fY2Fpcm9EZXZpY2U7CiB9OwogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9nc3RyZWFtZXIvR1N0cmVhbWVyR1dvcmxkLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJHV29ybGQuY3BwCmluZGV4IDIxMmRlZmIyOWE0
MjA5ODRmNTk3ZDY4MDIzZGY5YjE5NzBlZjJhZTUuLmMwNjVmYTNiODljNWVhZmY1MjdlZTQ1MWM2
YzMzMzhmZWU4N2FhZDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2dzdHJlYW1lci9HU3RyZWFtZXJHV29ybGQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9HU3RyZWFtZXJHV29ybGQuY3BwCkBAIC0yOCw3ICsy
OCw3IEBACiAKICNpZiBQTEFURk9STShHVEspCiAjaW5jbHVkZSA8Z3RrL2d0ay5oPgotI2lmZGVm
IEdES19XSU5ET1dJTkdfWDExCisjaWZkZWYgUExBVEZPUk0oWDExKQogI2luY2x1ZGUgPGdkay9n
ZGt4Lmg+IC8vIGZvciBHREtfV0lORE9XX1hJRAogI2VuZGlmCiAjZW5kaWYKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1lci9QbGF0Zm9ybVZpZGVv
V2luZG93R3RrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2dzdHJlYW1l
ci9QbGF0Zm9ybVZpZGVvV2luZG93R3RrLmNwcAppbmRleCBiODM4ODExMTI3ZmVlNmRiZWQwNDMy
MGEyYjBlZjIzYTUzMDI5OGE3Li4wNGQ3NzMwZDU3YWIyNDdiZTAxZDM3MzcyNjk4OTYxNTAxMTI2
MGQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9nc3RyZWFt
ZXIvUGxhdGZvcm1WaWRlb1dpbmRvd0d0ay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZ3N0cmVhbWVyL1BsYXRmb3JtVmlkZW9XaW5kb3dHdGsuY3BwCkBAIC0yMyw3
ICsyMyw3IEBACiAKICNpbmNsdWRlIDxndGsvZ3RrLmg+CiAKLSNpZmRlZiBHREtfV0lORE9XSU5H
X1gxMQorI2lmIFBMQVRGT1JNKFgxMSkKICNpbmNsdWRlIDxnZGsvZ2RreC5oPiAvLyBmb3IgR0RL
X1dJTkRPV19YSUQKICNlbmRpZgogCkBAIC00MCw3ICs0MCw3IEBAIFBsYXRmb3JtVmlkZW9XaW5k
b3c6OlBsYXRmb3JtVmlkZW9XaW5kb3coKQogCiAgICAgZ3RrX3dpZGdldF9yZWFsaXplKG1fd2lu
ZG93KTsKIAotI2lmZGVmIEdES19XSU5ET1dJTkdfWDExCisjaWYgUExBVEZPUk0oWDExKQogICAg
IG1fdmlkZW9XaW5kb3dJZCA9IEdES19XSU5ET1dfWElEKGd0a193aWRnZXRfZ2V0X3dpbmRvdyht
X3dpbmRvdykpOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVyLmNwcAppbmRleCBjZWU0NWI5NjkwOWIx
OGJkZDFjMjBmYTFiY2Q2MGQyMzQ0OGVmYjM2Li5mMjg4ZDlmNTRkZDU4Mjg1ZTI0ZTZmNjk2MmVi
YTNhYjIwNTAwYTRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy90ZXhtYXAvVGV4dHVyZU1hcHBlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXIuY3BwCkBAIC01Miw3ICs1Miw3IEBAIFBhc3NS
ZWZQdHI8Qml0bWFwVGV4dHVyZT4gVGV4dHVyZU1hcHBlcjo6YWNxdWlyZVRleHR1cmVGcm9tUG9v
bChjb25zdCBJbnRTaXplJiBzCiAgICAgcmV0dXJuIHNlbGVjdGVkVGV4dHVyZTsKIH0KIAotUGFz
c093blB0cjxUZXh0dXJlTWFwcGVyPiBUZXh0dXJlTWFwcGVyOjpjcmVhdGUoQWNjZWxlcmF0aW9u
TW9kZSBtb2RlKQorUGFzc1JlZlB0cjxUZXh0dXJlTWFwcGVyPiBUZXh0dXJlTWFwcGVyOjpjcmVh
dGUoQWNjZWxlcmF0aW9uTW9kZSBtb2RlKQogewogICAgIGlmIChtb2RlID09IFNvZnR3YXJlTW9k
ZSkKICAgICAgICAgcmV0dXJuIFRleHR1cmVNYXBwZXJJbWFnZUJ1ZmZlcjo6Y3JlYXRlKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVy
ZU1hcHBlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1
cmVNYXBwZXIuaAppbmRleCBhOTBkYmU0ZjE1YTEyNzdmZmEyMDcxMzYyY2YwYWNlNDYzMDUyYTE1
Li5jOGU4YTIzYjFmZjMxYmZjZjkzZDJkNjlhNzJiOGUxN2ZiYTk0Y2IxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlci5oCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVy
LmgKQEAgLTk5LDcgKzk5LDcgQEAgcHJpdmF0ZToKIAogLy8gQSAiY29udGV4dCIgY2xhc3MgdXNl
ZCB0byBlbmNhcHN1bGF0ZSBhY2NlbGVyYXRlZCB0ZXh0dXJlIG1hcHBpbmcgZnVuY3Rpb25zOiBp
LmUuIGRyYXdpbmcgYSB0ZXh0dXJlCiAvLyBvbnRvIHRoZSBzY3JlZW4gb3IgaW50byBhbm90aGVy
IHRleHR1cmUgd2l0aCBhIHNwZWNpZmllZCB0cmFuc2Zvcm0sIG9wYWNpdHkgYW5kIG1hc2suCi1j
bGFzcyBUZXh0dXJlTWFwcGVyIHsKK2NsYXNzIFRleHR1cmVNYXBwZXIgOiBwdWJsaWMgUmVmQ291
bnRlZDxUZXh0dXJlTWFwcGVyPiB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAgICAg
ZnJpZW5kIGNsYXNzIEJpdG1hcFRleHR1cmU7CiBwdWJsaWM6CkBAIC0xMDksNyArMTA5LDcgQEAg
cHVibGljOgogICAgIH07CiAgICAgdHlwZWRlZiB1bnNpZ25lZCBQYWludEZsYWdzOwogCi0gICAg
c3RhdGljIFBhc3NPd25QdHI8VGV4dHVyZU1hcHBlcj4gY3JlYXRlKEFjY2VsZXJhdGlvbk1vZGUg
bmV3TW9kZSA9IFNvZnR3YXJlTW9kZSk7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8VGV4dHVyZU1h
cHBlcj4gY3JlYXRlKEFjY2VsZXJhdGlvbk1vZGUgbmV3TW9kZSA9IFNvZnR3YXJlTW9kZSk7CiAg
ICAgdmlydHVhbCB+VGV4dHVyZU1hcHBlcigpIHsgfQogCiAgICAgZW51bSBFeHBvc2VkRWRnZXMg
ewpAQCAtMTU3LDExICsxNTcsMTEgQEAgcHJvdGVjdGVkOgogCiBwcml2YXRlOgogI2lmIFVTRShU
RVhUVVJFX01BUFBFUl9HTCkKLSAgICBzdGF0aWMgUGFzc093blB0cjxUZXh0dXJlTWFwcGVyPiBw
bGF0Zm9ybUNyZWF0ZUFjY2VsZXJhdGVkKCk7CisgICAgc3RhdGljIFBhc3NSZWZQdHI8VGV4dHVy
ZU1hcHBlcj4gcGxhdGZvcm1DcmVhdGVBY2NlbGVyYXRlZCgpOwogI2Vsc2UKLSAgICBzdGF0aWMg
UGFzc093blB0cjxUZXh0dXJlTWFwcGVyPiBwbGF0Zm9ybUNyZWF0ZUFjY2VsZXJhdGVkKCkKKyAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxUZXh0dXJlTWFwcGVyPiBwbGF0Zm9ybUNyZWF0ZUFjY2VsZXJh
dGVkKCkKICAgICB7Ci0gICAgICAgIHJldHVybiBQYXNzT3duUHRyPFRleHR1cmVNYXBwZXI+KCk7
CisgICAgICAgIHJldHVybiBQYXNzUmVmUHRyPFRleHR1cmVNYXBwZXI+KCk7CiAgICAgfQogI2Vu
ZGlmCiAgICAgSW50ZXJwb2xhdGlvblF1YWxpdHkgbV9pbnRlcnBvbGF0aW9uUXVhbGl0eTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJl
TWFwcGVyR0wuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1Rl
eHR1cmVNYXBwZXJHTC5jcHAKaW5kZXggOGYwYzY4ZDk5ZDMyZDVlMzg4YmE2ODc0ODM5NWZlYTUw
OWYxMGJlYS4uYzc3NThjMjdmN2JmMjNkMjRjMzhjNzY0OTkwMTRmMTdlZDhiOTFlNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBw
ZXJHTC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1Rl
eHR1cmVNYXBwZXJHTC5jcHAKQEAgLTIwMiw3ICsyMDIsMTUgQEAgVGV4dHVyZU1hcHBlckdMOjpU
ZXh0dXJlTWFwcGVyR0woKQogICAgICwgbV9jb250ZXh0KDApCiAgICAgLCBtX2VuYWJsZUVkZ2VE
aXN0YW5jZUFudGlhbGlhc2luZyhmYWxzZSkKIHsKKyNpZiBQTEFURk9STShXQVlMQU5EKQorICAg
IEdyYXBoaWNzQ29udGV4dDNEOjpBdHRyaWJ1dGVzIGF0dHJpYnV0ZXM7CisgICAgYXR0cmlidXRl
cy5hbHBoYSA9IHRydWU7CisgICAgYXR0cmlidXRlcy5zdGVuY2lsID0gdHJ1ZTsKKyAgICBhdHRy
aWJ1dGVzLmRlcHRoID0gdHJ1ZTsKKyAgICBtX2NvbnRleHQzRCA9IEdyYXBoaWNzQ29udGV4dDNE
OjpjcmVhdGUoYXR0cmlidXRlcywgMCk7CisjZWxzZQogICAgIG1fY29udGV4dDNEID0gR3JhcGhp
Y3NDb250ZXh0M0Q6OmNyZWF0ZUZvckN1cnJlbnRHTENvbnRleHQoKTsKKyNlbmRpZgogICAgIG1f
ZGF0YSA9IG5ldyBUZXh0dXJlTWFwcGVyR0xEYXRhKG1fY29udGV4dDNELmdldCgpKTsKIH0KIApA
QCAtOTYzLDcgKzk3MSw3IEBAIFBhc3NSZWZQdHI8Qml0bWFwVGV4dHVyZT4gVGV4dHVyZU1hcHBl
ckdMOjpjcmVhdGVUZXh0dXJlKCkKICAgICByZXR1cm4gYWRvcHRSZWYodGV4dHVyZSk7CiB9CiAK
LVBhc3NPd25QdHI8VGV4dHVyZU1hcHBlcj4gVGV4dHVyZU1hcHBlcjo6cGxhdGZvcm1DcmVhdGVB
Y2NlbGVyYXRlZCgpCitQYXNzUmVmUHRyPFRleHR1cmVNYXBwZXI+IFRleHR1cmVNYXBwZXI6OnBs
YXRmb3JtQ3JlYXRlQWNjZWxlcmF0ZWQoKQogewogICAgIHJldHVybiBUZXh0dXJlTWFwcGVyR0w6
OmNyZWF0ZSgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHTC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvdGV4bWFwL1RleHR1cmVNYXBwZXJHTC5oCmluZGV4IDY0YmZmYWZlNTQyNmYzZjk3NjY5
MDYzNjczZmE3ZDgwNWIxZDU5NmIuLjY0N2Y0YWMyMzYzZDNlNzg1YzI5ZDA5M2QxYTU1NDMwMGEy
MzZhOTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1h
cC9UZXh0dXJlTWFwcGVyR0wuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy90ZXhtYXAvVGV4dHVyZU1hcHBlckdMLmgKQEAgLTM3LDcgKzM3LDcgQEAgY2xhc3MgVGV4dHVy
ZU1hcHBlclNoYWRlclByb2dyYW07CiAvLyBBbiBPcGVuR0wtRVMyIGltcGxlbWVudGF0aW9uIG9m
IFRleHR1cmVNYXBwZXIuCiBjbGFzcyBUZXh0dXJlTWFwcGVyR0wgOiBwdWJsaWMgVGV4dHVyZU1h
cHBlciB7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8VGV4dHVyZU1hcHBlckdMPiBj
cmVhdGUoKSB7IHJldHVybiBhZG9wdFB0cihuZXcgVGV4dHVyZU1hcHBlckdMKTsgfQorICAgIHN0
YXRpYyBQYXNzUmVmUHRyPFRleHR1cmVNYXBwZXJHTD4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRS
ZWYobmV3IFRleHR1cmVNYXBwZXJHTCgpKTsgfQogICAgIHZpcnR1YWwgflRleHR1cmVNYXBwZXJH
TCgpOwogCiAgICAgZW51bSBGbGFnIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVySW1hZ2VCdWZmZXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3RleG1hcC9UZXh0dXJlTWFwcGVySW1hZ2VCdWZmZXIu
aAppbmRleCA3ZDUxZTg4MDVhM2YyZWM5MDJlYjYzOWI2M2QxOTBmZDE2MzZkZGY3Li41YmExZjlm
MzRkNmNjN2ZlZDZkYzlmNmVkODJmYWY0YzlkZTU2YTU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy90ZXhtYXAvVGV4dHVyZU1hcHBlckltYWdlQnVmZmVyLmgK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvdGV4bWFwL1RleHR1cmVNYXBw
ZXJJbWFnZUJ1ZmZlci5oCkBAIC00OSw3ICs0OSw3IEBAIHByaXZhdGU6CiBjbGFzcyBUZXh0dXJl
TWFwcGVySW1hZ2VCdWZmZXIgOiBwdWJsaWMgVGV4dHVyZU1hcHBlciB7CiAgICAgV1RGX01BS0Vf
RkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NPd25QdHI8VGV4dHVyZU1h
cHBlcj4gY3JlYXRlKCkgeyByZXR1cm4gYWRvcHRQdHIobmV3IFRleHR1cmVNYXBwZXJJbWFnZUJ1
ZmZlcik7IH0KKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxUZXh0dXJlTWFwcGVyPiBjcmVhdGUoKSB7
IHJldHVybiBhZG9wdFJlZihuZXcgVGV4dHVyZU1hcHBlckltYWdlQnVmZmVyKCkpOyB9CiAKICAg
ICAvLyBUZXh0dXJlTWFwcGVyIGltcGxlbWVudGF0aW9uCiAgICAgdmlydHVhbCB2b2lkIGRyYXdC
b3JkZXIoY29uc3QgQ29sb3ImIGNvbG9yLCBmbG9hdCBib3JkZXJXaWR0aCwgY29uc3QgRmxvYXRS
ZWN0JiB0YXJnZXRSZWN0LCBjb25zdCBUcmFuc2Zvcm1hdGlvbk1hdHJpeCYgbW9kZWxWaWV3TWF0
cml4ID0gVHJhbnNmb3JtYXRpb25NYXRyaXgoKSkgT1ZFUlJJREUgeyB9OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0d0a1ZlcnNpb25pbmcuYyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2d0ay9HdGtWZXJzaW9uaW5nLmMKaW5kZXggYWMyZjg0YzJlZjg4NjZjMDNj
MDZmMTZkYzIxNTlmZmVhOTk3Y2RjOC4uY2U0ZGZlMzhjYzJkNDY2YzljMjZkNTk2MDFkZTkwZjgz
MzAyOWUzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL0d0a1ZlcnNp
b25pbmcuYworKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvR3RrVmVyc2lvbmluZy5j
CkBAIC0yMiw3ICsyMiw3IEBACiAKICNpbmNsdWRlIDxndGsvZ3RrLmg+CiAKLSNpZmRlZiBHREtf
V0lORE9XSU5HX1gxMQorI2lmZGVmIFdURl9QTEFURk9STV9YMTEKICNpbmNsdWRlIDxYMTEvWGF0
b20uaD4KICNpbmNsdWRlIDxnZGsvZ2RreC5oPgogI2VuZGlmCkBAIC0zMDksNyArMzA5LDcgQEAg
Y2Fpcm9fc3VyZmFjZV90ICpnZGtfd2luZG93X2NyZWF0ZV9zaW1pbGFyX3N1cmZhY2UoR2RrV2lu
ZG93ICp3aW5kb3csIGNhaXJvX2NvbnQKICNlbmRpZiAvLyBHVEtfQ0hFQ0tfVkVSU0lPTigyLCAy
MiwgMCkKIAogI2lmICFHVEtfQ0hFQ0tfVkVSU0lPTigzLCAzLCA2KQotI2lmZGVmIEdES19XSU5E
T1dJTkdfWDExCisjaWZkZWYgV1RGX1BMQVRGT1JNX1gxMQogc3RhdGljIGludCBnZXRTY3JlZW5D
dXJyZW50RGVza3RvcChHZGtTY3JlZW4gKnNjcmVlbikKIHsKICAgICBEaXNwbGF5ICpkaXNwbGF5
ID0gR0RLX0RJU1BMQVlfWERJU1BMQVkoZ2RrX3NjcmVlbl9nZXRfZGlzcGxheShzY3JlZW4pKTsK
QEAgLTM2NiwxMyArMzY2LDEzIEBAIHN0YXRpYyB2b2lkIGdldFNjcmVlbldvcmtBcmVhKEdka1Nj
cmVlbiAqc2NyZWVuLCBHZGtSZWN0YW5nbGUgKmFyZWEpCiAKICAgICBYRnJlZShyZXR1cm5lZERh
dGEpOwogfQotI2VuZGlmIC8vIEdES19XSU5ET1dJTkdfWDExCisjZW5kaWYgLy8gV1RGX1BMQVRG
T1JNX1gxMQogCiB2b2lkIGdka19zY3JlZW5fZ2V0X21vbml0b3Jfd29ya2FyZWEoR2RrU2NyZWVu
ICpzY3JlZW4sIGludCBtb25pdG9yLCBHZGtSZWN0YW5nbGUgKmFyZWEpCiB7CiAgICAgZ2RrX3Nj
cmVlbl9nZXRfbW9uaXRvcl9nZW9tZXRyeShzY3JlZW4sIG1vbml0b3IsIGFyZWEpOwogCi0jaWZk
ZWYgR0RLX1dJTkRPV0lOR19YMTEKKyNpZmRlZiBXVEZfUExBVEZPUk1fWDExCiAgICAgR2RrUmVj
dGFuZ2xlIHdvcmtBcmVhOwogICAgIGdldFNjcmVlbldvcmtBcmVhKHNjcmVlbiwgJndvcmtBcmVh
KTsKICAgICBnZGtfcmVjdGFuZ2xlX2ludGVyc2VjdCgmd29ya0FyZWEsIGFyZWEsIGFyZWEpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1JlZGlyZWN0ZWRFR0xUZXh0
dXJlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9SZWRpcmVjdGVkRUdMVGV4dHVy
ZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uMjZiZTIwZTJkMzk5ZmY1OTQwNDU5MjUzNmVjMWRjOWYzMDU0MDFm
ZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9SZWRpcmVj
dGVkRUdMVGV4dHVyZS5jcHAKQEAgLTAsMCArMSw5MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMiBJZ2FsaWEgUy5MLgorICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
CisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVk
ZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiUmVkaXJlY3RlZEVHTFRleHR1cmUuaCIKKworI2luY2x1
ZGUgIkdMQ29udGV4dEVHTC5oIgorI2luY2x1ZGUgPGNhaXJvL2NhaXJvLWdsLmg+CisjaW5jbHVk
ZSA8Z2xpYi5oPgorI2luY2x1ZGUgPGd0ay9ndGsuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgewor
CitQYXNzT3duUHRyPFJlZGlyZWN0ZWRFR0xUZXh0dXJlPiBSZWRpcmVjdGVkRUdMVGV4dHVyZTo6
Y3JlYXRlKGNvbnN0IEludFNpemUmIHNpemUsIFRleHR1cmVNYXBwZXJHTCogdGV4dHVyZU1hcHBl
cikKK3sKKyAgICByZXR1cm4gYWRvcHRQdHIobmV3IFJlZGlyZWN0ZWRFR0xUZXh0dXJlKHNpemUs
IHRleHR1cmVNYXBwZXIpKTsKK30KKworUmVkaXJlY3RlZEVHTFRleHR1cmU6OlJlZGlyZWN0ZWRF
R0xUZXh0dXJlKGNvbnN0IEludFNpemUmIHNpemUsIFRleHR1cmVNYXBwZXJHTCogdGV4dHVyZU1h
cHBlcikKK3sKKyAgICByZXNpemUoc2l6ZSwgdGV4dHVyZU1hcHBlcik7Cit9CisKK1JlZGlyZWN0
ZWRFR0xUZXh0dXJlOjp+UmVkaXJlY3RlZEVHTFRleHR1cmUoKQoreworfQorCit2b2lkIFJlZGly
ZWN0ZWRFR0xUZXh0dXJlOjpyZXNpemUoY29uc3QgSW50U2l6ZSYgc2l6ZSwgVGV4dHVyZU1hcHBl
ckdMKiB0ZXh0dXJlTWFwcGVyKQoreworICAgIGlmICh0ZXh0dXJlTWFwcGVyKSB7CisgICAgICAg
IHRleHR1cmVNYXBwZXItPmdyYXBoaWNzQ29udGV4dDNEKCktPnJlc2hhcGUoc2l6ZS53aWR0aCgp
LCBzaXplLmhlaWdodCgpKTsKKyAgICAgICAgdGV4dHVyZU1hcHBlci0+Z3JhcGhpY3NDb250ZXh0
M0QoKS0+dmlld3BvcnQoMCwgMCwgc2l6ZS53aWR0aCgpLCBzaXplLmhlaWdodCgpKTsKKyAgICB9
CisgICAgc2V0U2l6ZShzaXplKTsKKyAgICBtX3N1cmZhY2UgPSAwOworfQorCitHTENvbnRleHQq
IFJlZGlyZWN0ZWRFR0xUZXh0dXJlOjpjb250ZXh0KCkKK3sKKyAgICBpZiAobV9jb250ZXh0KQor
ICAgICAgICByZXR1cm4gbV9jb250ZXh0LmdldCgpOworCisgICAgbV9jb250ZXh0ID0gR0xDb250
ZXh0OjpjcmVhdGVPZmZzY3JlZW5Db250ZXh0KEdMQ29udGV4dDo6c2hhcmluZ0NvbnRleHQoKSk7
CisKKyAgICAvLyBDcmVhdGUgY29udGV4dCBmb3Igd2luZG93CisgICAgLy8gbV9jb250ZXh0ID0g
R0xDb250ZXh0OjpjcmVhdGVDb250ZXh0Rm9yV2luZG93KG1fd2luZG93LCBHTENvbnRleHQ6OnNo
YXJpbmdDb250ZXh0KCkpOworICAgIHJldHVybiBtX2NvbnRleHQuZ2V0KCk7Cit9CisKK2NhaXJv
X3N1cmZhY2VfdCogUmVkaXJlY3RlZEVHTFRleHR1cmU6OmNhaXJvU3VyZmFjZUZvcldpZGdldChH
dGtXaWRnZXQqd2lkZ2V0LCBUZXh0dXJlTWFwcGVyR0wqIHRleHR1cmVNYXBwZXIpCit7CisgICAg
aWYgKCFtX2NvbnRleHQpCisgICAgICAgIHJldHVybiAwOworCisgICAgaWYgKG1fc3VyZmFjZSkK
KyAgICAgICAgcmV0dXJuIG1fc3VyZmFjZTsKKworICAgIEdyYXBoaWNzQ29udGV4dDNEKiBjb250
ZXh0M0QgPSB0ZXh0dXJlTWFwcGVyLT5ncmFwaGljc0NvbnRleHQzRCgpOworICAgIGlmICghY29u
dGV4dDNEIHx8ICFjb250ZXh0M0QtPnBsYXRmb3JtVGV4dHVyZSgpKQorICAgICAgICByZXR1cm4g
MDsKKworICAgIG1fc3VyZmFjZSA9IGNhaXJvX2dsX3N1cmZhY2VfY3JlYXRlX2Zvcl90ZXh0dXJl
KHN0YXRpY19jYXN0PEdMQ29udGV4dEVHTCo+KG1fY29udGV4dC5nZXQoKSktPmNhaXJvRGV2aWNl
KCksIENBSVJPX0NPTlRFTlRfQ09MT1JfQUxQSEEsCisgICAgICAgIGNvbnRleHQzRC0+cGxhdGZv
cm1UZXh0dXJlKCksIHNpemUoKS53aWR0aCgpLCBzaXplKCkuaGVpZ2h0KCkpOworCisgICAgcmV0
dXJuIG1fc3VyZmFjZTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1JlZGlyZWN0ZWRFR0xUZXh0dXJlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUmVkaXJlY3RlZEVHTFRleHR1cmUuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li5kNTllZGJmYjIwMDQ3MDJkYjZhMWRkYzUxZWJlYmVmZmE2NTZlNzkyCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1JlZGlyZWN0ZWRFR0xUZXh0dXJlLmgK
QEAgLTAsMCArMSw1NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMiwgSWdhbGlhIFMuTC4K
KyAqIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiAgUmVkaXJlY3RlZEVHTFRl
eHR1cmVfaAorI2RlZmluZSAgUmVkaXJlY3RlZEVHTFRleHR1cmVfaAorCisjaW5jbHVkZSAiR0xD
b250ZXh0LmgiCisjaW5jbHVkZSAiSW50U2l6ZS5oIgorI2luY2x1ZGUgIlJlZGlyZWN0ZWRXaW5k
b3cuaCIKKyNpbmNsdWRlICJSZWZQdHJDYWlyby5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisK
K2NsYXNzIFJlZGlyZWN0ZWRFR0xUZXh0dXJlIDogcHVibGljIFJlZGlyZWN0ZWRXaW5kb3cgewor
cHVibGljOgorICAgIHN0YXRpYyBQYXNzT3duUHRyPFJlZGlyZWN0ZWRFR0xUZXh0dXJlPiBjcmVh
dGUoY29uc3QgSW50U2l6ZSYsIFRleHR1cmVNYXBwZXJHTCopOworICAgIHZpcnR1YWwgflJlZGly
ZWN0ZWRFR0xUZXh0dXJlKCk7CisKKyAgICAvLyB2aXJ0dWFsIG1ldGhvZHMgUmVkaXJlY3RlZFdp
bmRvdworICAgIHZvaWQgcmVzaXplKGNvbnN0IEludFNpemUmIG5ld1NpemUsIFRleHR1cmVNYXBw
ZXJHTCopOworICAgIEdMQ29udGV4dCogY29udGV4dCgpOworICAgIGNhaXJvX3N1cmZhY2VfdCog
Y2Fpcm9TdXJmYWNlRm9yV2lkZ2V0KEd0a1dpZGdldCosIFRleHR1cmVNYXBwZXJHTCopOworCitw
cml2YXRlOgorICAgIFJlZGlyZWN0ZWRFR0xUZXh0dXJlKGNvbnN0IEludFNpemUmLCBUZXh0dXJl
TWFwcGVyR0wqKTsKKworICAgIE93blB0cjxHTENvbnRleHQ+IG1fY29udGV4dDsKKyAgICBjYWly
b19zdXJmYWNlX3QqIG1fc3VyZmFjZTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKwor
I2VuZGlmIC8vIFJlZGlyZWN0ZWRFR0xUZXh0dXJlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2d0ay9SZWRpcmVjdGVkV2luZG93LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ndGsvUmVkaXJlY3RlZFdpbmRvdy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmI0ZDIxZDM3YzIzMjEwZTU2
OTkyNmI1MDJjODQ5Y2I4ZmJkZjM1YWIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ndGsvUmVkaXJlY3RlZFdpbmRvdy5oCkBAIC0wLDAgKzEsNzEgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTIsIElnYWxpYSBTLkwuCisgKiBBbGwgcmlnaHRzIHJlc2VydmVk
LgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09N
UFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJS
QU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdB
UlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIK
KyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01Q
VVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwg
SU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVF
TlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJF
TUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwg
T1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQg
QU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwg
U1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdF
LgorICovCisKKyNpZm5kZWYgIFJlZGlyZWN0ZWRXaW5kb3dfaAorI2RlZmluZSAgUmVkaXJlY3Rl
ZFdpbmRvd19oCisKKyNpbmNsdWRlICJHTENvbnRleHQuaCIKKyNpbmNsdWRlICJJbnRTaXplLmgi
CisjaW5jbHVkZSAiUmVmUHRyQ2Fpcm8uaCIKKyNpbmNsdWRlICJUZXh0dXJlTWFwcGVyR0wuaCIK
KwordHlwZWRlZiB2b2lkICgqRGFtYWdlTm90aWZ5Q2FsbGJhY2spKHZvaWQqKTsKKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCitjbGFzcyBSZWRpcmVjdGVkV2luZG93IHsKK3B1YmxpYzoKKyAgICB2
aXJ0dWFsIH5SZWRpcmVjdGVkV2luZG93KCkgeyB9CisKKyAgICBjb25zdCBJbnRTaXplJiBzaXpl
KCkgeyByZXR1cm4gbV9zaXplOyB9CisgICAgdm9pZCBzZXRTaXplKGNvbnN0IEludFNpemUmIHNp
emUpIHsgbV9zaXplID0gc2l6ZTsgfQorCisgICAgdmlydHVhbCB2b2lkIHJlc2l6ZShjb25zdCBJ
bnRTaXplJiBuZXdTaXplLCBUZXh0dXJlTWFwcGVyR0wqKSA9IDA7CisgICAgdmlydHVhbCBHTENv
bnRleHQqIGNvbnRleHQoKSA9IDA7CisgICAgdmlydHVhbCBjYWlyb19zdXJmYWNlX3QqIGNhaXJv
U3VyZmFjZUZvcldpZGdldChHdGtXaWRnZXQqLCBUZXh0dXJlTWFwcGVyR0wqKSA9IDA7CisKKyAg
ICB2b2lkIGNhbGxEYW1hZ2VOb3RpZnlDYWxsYmFjaygpCisgICAgeworICAgICAgICBpZiAobV9k
YW1hZ2VOb3RpZnlDYWxsYmFjaykKKyAgICAgICAgICAgIG1fZGFtYWdlTm90aWZ5Q2FsbGJhY2so
bV9kYW1hZ2VOb3RpZnlEYXRhKTsKKyAgICB9CisKKyAgICB2b2lkIHNldERhbWFnZU5vdGlmeUNh
bGxiYWNrKERhbWFnZU5vdGlmeUNhbGxiYWNrIGNhbGxiYWNrLCB2b2lkKiBkYXRhKQorICAgIHsK
KyAgICAgICAgbV9kYW1hZ2VOb3RpZnlDYWxsYmFjayA9IGNhbGxiYWNrOworICAgICAgICBtX2Rh
bWFnZU5vdGlmeURhdGEgPSBkYXRhOworICAgIH0KKworcHJpdmF0ZToKKyAgICBJbnRTaXplIG1f
c2l6ZTsKKworICAgIERhbWFnZU5vdGlmeUNhbGxiYWNrIG1fZGFtYWdlTm90aWZ5Q2FsbGJhY2s7
CisgICAgdm9pZCogbV9kYW1hZ2VOb3RpZnlEYXRhOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2Vi
Q29yZQorCisjZW5kaWYgLy8gUmVkaXJlY3RlZFdpbmRvd19oCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ndGsvUmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3cuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1JlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93LmNwcApp
bmRleCA5MjUzOWEyMjBlOTI2MTIyMTk4MmJhYTYzZDY3MDMzNDNlOTYzZGQ3Li5kMjNmZTgzOGEw
MTVmMjNkNzA2YjNhOGNiYmViNjFhYzZkNmU4OGNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ndGsvUmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3cuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2d0ay9SZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdy5jcHAKQEAg
LTE2OSw3ICsxNjksNyBAQCBSZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdzo6flJlZGlyZWN0ZWRY
Q29tcG9zaXRlV2luZG93KCkKICAgICBjbGVhbnVwUGl4bWFwQW5kUGl4bWFwU3VyZmFjZSgpOwog
fQogCi12b2lkIFJlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93OjpyZXNpemUoY29uc3QgSW50U2l6
ZSYgc2l6ZSkKK3ZvaWQgUmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3c6OnJlc2l6ZShjb25zdCBJ
bnRTaXplJiBzaXplLCBUZXh0dXJlTWFwcGVyR0wqKQogewogICAgIERpc3BsYXkqIGRpc3BsYXkg
PSBHTENvbnRleHQ6OnNoYXJlZFgxMURpc3BsYXkoKTsKICAgICBYUmVzaXplV2luZG93KGRpc3Bs
YXksIG1fd2luZG93LCBzaXplLndpZHRoKCksIHNpemUuaGVpZ2h0KCkpOwpAQCAtMjA2LDcgKzIw
Niw3IEBAIHZvaWQgUmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3c6OmNsZWFudXBQaXhtYXBBbmRQ
aXhtYXBTdXJmYWNlKCkKICAgICBtX3N1cmZhY2UgPSBudWxscHRyOwogfQogCi1jYWlyb19zdXJm
YWNlX3QqIFJlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93OjpjYWlyb1N1cmZhY2VGb3JXaWRnZXQo
R3RrV2lkZ2V0KiB3aWRnZXQpCitjYWlyb19zdXJmYWNlX3QqIFJlZGlyZWN0ZWRYQ29tcG9zaXRl
V2luZG93OjpjYWlyb1N1cmZhY2VGb3JXaWRnZXQoR3RrV2lkZ2V0KiB3aWRnZXQsIFRleHR1cmVN
YXBwZXJHTCopCiB7CiAgICAgaWYgKCFtX25lZWRzTmV3UGl4bWFwQWZ0ZXJSZXNpemUgJiYgbV9z
dXJmYWNlKQogICAgICAgICByZXR1cm4gbV9zdXJmYWNlLmdldCgpOwpAQCAtMjUyLDEyICsyNTIs
NiBAQCBjYWlyb19zdXJmYWNlX3QqIFJlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93OjpjYWlyb1N1
cmZhY2VGb3JXaWRnZXQoR3RrV2lkZ2V0KiB3aQogICAgIHJldHVybiBtX3N1cmZhY2UuZ2V0KCk7
CiB9CiAKLXZvaWQgUmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3c6OmNhbGxEYW1hZ2VOb3RpZnlD
YWxsYmFjaygpCi17Ci0gICAgaWYgKG1fZGFtYWdlTm90aWZ5Q2FsbGJhY2spCi0gICAgICAgIG1f
ZGFtYWdlTm90aWZ5Q2FsbGJhY2sobV9kYW1hZ2VOb3RpZnlEYXRhKTsKLX0KLQogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gUExBVEZPUk0oWDExKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3RrL1JlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93LmggYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ndGsvUmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3cuaApp
bmRleCA3YTk4YzM3NjgzZmMzODYwNmY5ZWFiZDU4NmM5ZDY3ZTU4YmYxNmJjLi4xMzI0MTljZTdm
NWJmNDVmMjIyZDExNjE0NzA4NzJiMTg2OTQ0OTcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ndGsvUmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3cuaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ndGsvUmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3cuaApAQCAtMzEs
MzggKzMxLDI5IEBACiAKICNpbmNsdWRlICJHTENvbnRleHQuaCIKICNpbmNsdWRlICJJbnRTaXpl
LmgiCisjaW5jbHVkZSAiUmVkaXJlY3RlZFdpbmRvdy5oIgogI2luY2x1ZGUgIlJlZlB0ckNhaXJv
LmgiCiAKIHR5cGVkZWYgdW5zaWduZWQgbG9uZyBQaXhtYXA7CiB0eXBlZGVmIHVuc2lnbmVkIGxv
bmcgV2luZG93OwogdHlwZWRlZiB1bnNpZ25lZCBsb25nIERhbWFnZTsKLXR5cGVkZWYgdm9pZCAo
KkRhbWFnZU5vdGlmeUNhbGxiYWNrKSh2b2lkKik7CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAot
Y2xhc3MgUmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3cgeworY2xhc3MgUmVkaXJlY3RlZFhDb21w
b3NpdGVXaW5kb3cgOiBwdWJsaWMgUmVkaXJlY3RlZFdpbmRvdyB7CiBwdWJsaWM6CiAgICAgc3Rh
dGljIFBhc3NPd25QdHI8UmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3c+IGNyZWF0ZShjb25zdCBJ
bnRTaXplJik7CiAgICAgdmlydHVhbCB+UmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3coKTsKLSAg
ICBjb25zdCBJbnRTaXplJiBzaXplKCkgeyByZXR1cm4gbV9zaXplOyB9CiAKLSAgICB2b2lkIHJl
c2l6ZShjb25zdCBJbnRTaXplJiBuZXdTaXplKTsKKyAgICB2b2lkIHJlc2l6ZShjb25zdCBJbnRT
aXplJiBuZXdTaXplLCBUZXh0dXJlTWFwcGVyR0wqKTsKICAgICBHTENvbnRleHQqIGNvbnRleHQo
KTsKLSAgICBjYWlyb19zdXJmYWNlX3QqIGNhaXJvU3VyZmFjZUZvcldpZGdldChHdGtXaWRnZXQq
KTsKKyAgICBjYWlyb19zdXJmYWNlX3QqIGNhaXJvU3VyZmFjZUZvcldpZGdldChHdGtXaWRnZXQq
LCBUZXh0dXJlTWFwcGVyR0wqKTsKICAgICBXaW5kb3cgd2luZG93SWQoKSB7IHJldHVybiBtX3dp
bmRvdzsgfQotICAgIHZvaWQgY2FsbERhbWFnZU5vdGlmeUNhbGxiYWNrKCk7Ci0KLSAgICB2b2lk
IHNldERhbWFnZU5vdGlmeUNhbGxiYWNrKERhbWFnZU5vdGlmeUNhbGxiYWNrIGNhbGxiYWNrLCB2
b2lkKiBkYXRhKQotICAgIHsKLSAgICAgICAgbV9kYW1hZ2VOb3RpZnlDYWxsYmFjayA9IGNhbGxi
YWNrOwotICAgICAgICBtX2RhbWFnZU5vdGlmeURhdGEgPSBkYXRhOwotICAgIH0KIAogcHJpdmF0
ZToKICAgICBSZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdyhjb25zdCBJbnRTaXplJik7CiAgICAg
dm9pZCBjbGVhbnVwUGl4bWFwQW5kUGl4bWFwU3VyZmFjZSgpOwogCi0gICAgSW50U2l6ZSBtX3Np
emU7CiAgICAgV2luZG93IG1fd2luZG93OwogICAgIFdpbmRvdyBtX3BhcmVudFdpbmRvdzsKICAg
ICBQaXhtYXAgbV9waXhtYXA7CkBAIC03Miw4ICs2Myw2IEBAIHByaXZhdGU6CiAgICAgYm9vbCBt
X25lZWRzTmV3UGl4bWFwQWZ0ZXJSZXNpemU7CiAKICAgICBEYW1hZ2UgbV9kYW1hZ2U7Ci0gICAg
RGFtYWdlTm90aWZ5Q2FsbGJhY2sgbV9kYW1hZ2VOb3RpZnlDYWxsYmFjazsKLSAgICB2b2lkKiBt
X2RhbWFnZU5vdGlmeURhdGE7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL1BsdWdpblBhY2thZ2UuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGx1Z2lucy9QbHVnaW5QYWNrYWdlLmNwcAppbmRleCBmZmNlNzZkN2FjYjhhZmNmMTIy
ZGE5M2Y4NTA2MDE3OThlYzAwODliLi5hM2U0ZDk1YzUwMGRkZjk3NGQyZDE3MjQxYjNmNTE5MWQ3
MWE4OTU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL1BsdWdpblBhY2thZ2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvUGx1Z2luUGFja2FnZS5jcHAKQEAgLTE3
Niw3ICsxNzYsNyBAQCBQYXNzUmVmUHRyPFBsdWdpblBhY2thZ2U+IFBsdWdpblBhY2thZ2U6OmNy
ZWF0ZVBhY2thZ2VGcm9tQ2FjaGUoY29uc3QgU3RyaW5nJiBwYQogfQogI2VuZGlmCiAKLSNpZiBk
ZWZpbmVkKFhQX1VOSVgpCisjaWYgZGVmaW5lZChYUF9VTklYKSAmJiAhUExBVEZPUk0oV0FZTEFO
RCkKIHZvaWQgUGx1Z2luUGFja2FnZTo6ZGV0ZXJtaW5lUXVpcmtzKGNvbnN0IFN0cmluZyYgbWlt
ZVR5cGUpCiB7CiAgICAgaWYgKE1JTUVUeXBlUmVnaXN0cnk6OmlzSmF2YUFwcGxldE1JTUVUeXBl
KG1pbWVUeXBlKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBv
cnQvQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQuaCBiL1NvdXJjZS9XZWJLaXQvZ3RrL1dl
YkNvcmVTdXBwb3J0L0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0LmgKaW5kZXggNjU3MmVh
NWVhZDI4MTNjNzViZjU3Y2UxNDM5MWMxOWQwZWE0YzE1OC4uN2ZhOGJmMDJlNDZkNmE2ZjRjMjQ5
NmU4MjBmNGUxZmY4ZGY0NGU5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvV2ViQ29y
ZVN1cHBvcnQvQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0L2d0ay9XZWJDb3JlU3VwcG9ydC9BY2NlbGVyYXRlZENvbXBvc2l0aW5nQ29udGV4dC5oCkBA
IC0zMyw3ICszMyw3IEBACiAKICNpZiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpCiAjaW5jbHVkZSAi
R0xDb250ZXh0LmgiCi0jaW5jbHVkZSAiUmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3cuaCIKKyNp
bmNsdWRlICJSZWRpcmVjdGVkV2luZG93LmgiCiAjZW5kaWYKIAogI2lmIFVTRShBQ0NFTEVSQVRF
RF9DT01QT1NJVElORykKQEAgLTgwLDEwICs4MCwxMCBAQCBwcml2YXRlOgogICAgIFdlYkNvcmU6
OkdyYXBoaWNzTGF5ZXIqIG1fcm9vdEdyYXBoaWNzTGF5ZXI7CiAgICAgR3RrV2lkZ2V0KiBtX3Jv
b3RMYXllckVtYmVkZGVyOwogI2VsaWYgVVNFKFRFWFRVUkVfTUFQUEVSX0dMKQotICAgIE93blB0
cjxXZWJDb3JlOjpSZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdz4gbV9yZWRpcmVjdGVkV2luZG93
OworICAgIE93blB0cjxXZWJDb3JlOjpSZWRpcmVjdGVkV2luZG93PiBtX3JlZGlyZWN0ZWRXaW5k
b3c7CiAgICAgT3duUHRyPFdlYkNvcmU6OkdyYXBoaWNzTGF5ZXI+IG1fcm9vdExheWVyOwogICAg
IE93blB0cjxXZWJDb3JlOjpHcmFwaGljc0xheWVyPiBtX25vbkNvbXBvc2l0ZWRDb250ZW50TGF5
ZXI7Ci0gICAgT3duUHRyPFdlYkNvcmU6OlRleHR1cmVNYXBwZXI+IG1fdGV4dHVyZU1hcHBlcjsK
KyAgICBSZWZQdHI8V2ViQ29yZTo6VGV4dHVyZU1hcHBlcj4gbV90ZXh0dXJlTWFwcGVyOwogICAg
IGRvdWJsZSBtX2xhc3RGbHVzaFRpbWU7CiAgICAgZG91YmxlIG1fcmVkcmF3UGVuZGluZ1RpbWU7
CiAgICAgYm9vbCBtX25lZWRzRXh0cmFGbHVzaDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
Z3RrL1dlYkNvcmVTdXBwb3J0L0FjY2VsZXJhdGVkQ29tcG9zaXRpbmdDb250ZXh0R0wuY3BwIGIv
U291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0Nv
bnRleHRHTC5jcHAKaW5kZXggZWZjMjA2MTkzNDRlYjI1YzI4NTQ2YmVkMmRkZDdjNzRmNDQ1ZWFi
Zi4uYzNjOTAxYzIyNDRhM2UzOTNiYjlmYmY1NWEzMmFkZWU2NDg1YmQzNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0Nv
bnRleHRHTC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9ndGsvV2ViQ29yZVN1cHBvcnQvQWNjZWxl
cmF0ZWRDb21wb3NpdGluZ0NvbnRleHRHTC5jcHAKQEAgLTM2LDYgKzM2LDEyIEBACiAjaW5jbHVk
ZSA8Z2RrL2dkay5oPgogI2luY2x1ZGUgPGd0ay9ndGsuaD4KIAorI2lmIFBMQVRGT1JNKFgxMSkK
KyNpbmNsdWRlICJSZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdy5oIgorI2VsaWYgUExBVEZPUk0o
V0FZTEFORCkKKyNpbmNsdWRlICJSZWRpcmVjdGVkRUdMVGV4dHVyZS5oIgorI2VuZGlmCisKIGNv
bnN0IGRvdWJsZSBnRnJhbWVzUGVyU2Vjb25kID0gNjA7CiAKIC8vIFRoZXJlIHNlZW1zIHRvIGJl
IGEgZGVsaWNhdGUgYmFsYW5jZSBiZXR3ZWVuIHRoZSBtYWluIGxvb3AgYmVpbmcgZmxvb2RlZApA
QCAtNzUsMTMgKzgxLDE0IEBAIHZvaWQgQWNjZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQ6Omlu
aXRpYWxpemUoKQogCiAgICAgSW50U2l6ZSBwYWdlU2l6ZSA9IGdldFdlYlZpZXdTaXplKG1fd2Vi
Vmlldyk7CiAgICAgaWYgKCFtX3JlZGlyZWN0ZWRXaW5kb3cpIHsKKyNpZiBQTEFURk9STShYMTEp
CiAgICAgICAgIGlmIChtX3JlZGlyZWN0ZWRXaW5kb3cgPSBSZWRpcmVjdGVkWENvbXBvc2l0ZVdp
bmRvdzo6Y3JlYXRlKHBhZ2VTaXplKSkKKyNlbGlmIFBMQVRGT1JNKFdBWUxBTkQpCisgICAgICAg
IGlmIChtX3JlZGlyZWN0ZWRXaW5kb3cgPSBSZWRpcmVjdGVkRUdMVGV4dHVyZTo6Y3JlYXRlKHBh
Z2VTaXplLCAwKSkKKyNlbmRpZgogICAgICAgICAgICAgbV9yZWRpcmVjdGVkV2luZG93LT5zZXRE
YW1hZ2VOb3RpZnlDYWxsYmFjayhyZWRpcmVjdGVkV2luZG93RGFtYWdlZENhbGxiYWNrLCBtX3dl
YlZpZXcpOwogICAgIH0gZWxzZQotICAgICAgICBtX3JlZGlyZWN0ZWRXaW5kb3ctPnJlc2l6ZShw
YWdlU2l6ZSk7Ci0KLSAgICBpZiAoIW1fcmVkaXJlY3RlZFdpbmRvdykKLSAgICAgICAgcmV0dXJu
OworICAgICAgICBtX3JlZGlyZWN0ZWRXaW5kb3ctPnJlc2l6ZShwYWdlU2l6ZSwgc3RhdGljX2Nh
c3Q8VGV4dHVyZU1hcHBlckdMKj4obV90ZXh0dXJlTWFwcGVyLmdldCgpKSk7CiAKICAgICBtX3Jv
b3RMYXllciA9IEdyYXBoaWNzTGF5ZXI6OmNyZWF0ZSgwLCB0aGlzKTsKICAgICBtX3Jvb3RMYXll
ci0+c2V0RHJhd3NDb250ZW50KGZhbHNlKTsKQEAgLTEzOSwxNCArMTQ2LDI1IEBAIGJvb2wgQWNj
ZWxlcmF0ZWRDb21wb3NpdGluZ0NvbnRleHQ6OnJlbmRlckxheWVyc1RvV2luZG93KGNhaXJvX3Qq
IGNyLCBjb25zdCBJbnRSCiAgICAgaWYgKCFlbmFibGVkKCkpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKIAotICAgIGNhaXJvX3N1cmZhY2VfdCogd2luZG93U3VyZmFjZSA9IG1fcmVkaXJlY3RlZFdp
bmRvdy0+Y2Fpcm9TdXJmYWNlRm9yV2lkZ2V0KEdUS19XSURHRVQobV93ZWJWaWV3KSk7CisgICAg
Y2Fpcm9fc3VyZmFjZV90KiB3aW5kb3dTdXJmYWNlID0gbV9yZWRpcmVjdGVkV2luZG93LT5jYWly
b1N1cmZhY2VGb3JXaWRnZXQoR1RLX1dJREdFVChtX3dlYlZpZXcpLCBzdGF0aWNfY2FzdDxUZXh0
dXJlTWFwcGVyR0wqPihtX3RleHR1cmVNYXBwZXIuZ2V0KCkpKTsKICAgICBpZiAoIXdpbmRvd1N1
cmZhY2UpCiAgICAgICAgIHJldHVybiB0cnVlOwogCisjaWYgUExBVEZPUk0oV0FZTEFORCkKKyAg
ICBjYWlyb19zdXJmYWNlX21hcmtfZGlydHlfcmVjdGFuZ2xlKHdpbmRvd1N1cmZhY2UsIGNsaXBS
ZWN0LngoKSwgY2xpcFJlY3QueSgpLCBjbGlwUmVjdC53aWR0aCgpLCBjbGlwUmVjdC5oZWlnaHQo
KSk7CisjZW5kaWYKKwogICAgIGNhaXJvX3JlY3RhbmdsZShjciwgY2xpcFJlY3QueCgpLCBjbGlw
UmVjdC55KCksIGNsaXBSZWN0LndpZHRoKCksIGNsaXBSZWN0LmhlaWdodCgpKTsKKyAgICBjYWly
b19zYXZlKGNyKTsKKyNpZiBQTEFURk9STShXQVlMQU5EKQorICAgIGNvbnN0IEludFNpemUmIHdp
bmRvd1NpemUgPSBtX3JlZGlyZWN0ZWRXaW5kb3ctPnNpemUoKTsKKyAgICBjYWlyb190cmFuc2xh
dGUoY3IsIDAuMCwgd2luZG93U2l6ZS5oZWlnaHQoKSk7CisgICAgY2Fpcm9fc2NhbGUoY3IsIDEu
MCwgLTEuMCk7CisjZW5kaWYKICAgICBjYWlyb19zZXRfc291cmNlX3N1cmZhY2UoY3IsIHdpbmRv
d1N1cmZhY2UsIDAsIDApOwogICAgIGNhaXJvX3NldF9vcGVyYXRvcihjciwgQ0FJUk9fT1BFUkFU
T1JfU09VUkNFKTsKICAgICBjYWlyb19maWxsKGNyKTsKKyAgICBjYWlyb19yZXN0b3JlKGNyKTsK
IAogICAgIGlmICghbV9sYXllckZsdXNoVGltZXJDYWxsYmFja0lkICYmIHRvVGV4dHVyZU1hcHBl
ckxheWVyKG1fcm9vdExheWVyLmdldCgpKS0+ZGVzY2VuZGFudHNPclNlbGZIYXZlUnVubmluZ0Fu
aW1hdGlvbnMoKSB8fCBtX25lZWRzRXh0cmFGbHVzaCkgewogICAgICAgICBtX25lZWRzRXh0cmFG
bHVzaCA9IGZhbHNlOwpAQCAtMjI4LDcgKzI0Niw3IEBAIHZvaWQgQWNjZWxlcmF0ZWRDb21wb3Np
dGluZ0NvbnRleHQ6OnNldFJvb3RDb21wb3NpdGluZ0xheWVyKEdyYXBoaWNzTGF5ZXIqIGdyYXBo
CiAKICAgICAgICAgLy8gU2hyaW5rIHRoZSBvZmZzY3JlZW4gd2luZG93IHRvIHNhdmUgbWVtb3J5
IHdoaWxlIGFjY2VsZXJhdGVkIGNvbXBvc2l0aW5nIGlzIHR1cm5lZCBvZmYuCiAgICAgICAgIGlm
IChtX3JlZGlyZWN0ZWRXaW5kb3cpCi0gICAgICAgICAgICBtX3JlZGlyZWN0ZWRXaW5kb3ctPnJl
c2l6ZShJbnRTaXplKDEsIDEpKTsKKyAgICAgICAgICAgIG1fcmVkaXJlY3RlZFdpbmRvdy0+cmVz
aXplKEludFNpemUoMSwgMSksIHN0YXRpY19jYXN0PFRleHR1cmVNYXBwZXJHTCo+KG1fdGV4dHVy
ZU1hcHBlci5nZXQoKSkpOwogICAgICAgICBtX3Jvb3RMYXllciA9IG51bGxwdHI7CiAgICAgICAg
IG1fbm9uQ29tcG9zaXRlZENvbnRlbnRMYXllciA9IG51bGxwdHI7CiAgICAgICAgIG1fdGV4dHVy
ZU1hcHBlciA9IG51bGxwdHI7CkBAIC0yNDYsNyArMjY0LDcgQEAgdm9pZCBBY2NlbGVyYXRlZENv
bXBvc2l0aW5nQ29udGV4dDo6c2V0Um9vdENvbXBvc2l0aW5nTGF5ZXIoR3JhcGhpY3NMYXllciog
Z3JhcGgKICAgICBzdG9wQW55UGVuZGluZ0xheWVyRmx1c2goKTsKIAogICAgIC8vIEZJWE1FOiBU
d28gZmx1c2hlcyBzZWVtIG5lY2Vzc2FyeSB0byBnZXQgdGhlIHByb3BlciByZW5kZXJpbmcgaW4g
c29tZSBjYXNlcy4gSXQncyB1bmNsZWFyCi0gICAgLy8gaWYgdGhpcyBpcyBhIGJ1ZyB3aXRoIHRo
ZSBSZWRpcmVjdGVkWENvbXBvc2l0ZSB3aW5kb3cgb3Igd2l0aCB0aGlzIGNsYXNzLgorICAgIC8v
IGlmIHRoaXMgaXMgYSBidWcgd2l0aCB0aGUgcmVkaXJlY3RlZCB3aW5kb3cgb3Igd2l0aCB0aGlz
IGNsYXNzLgogICAgIG1fbmVlZHNFeHRyYUZsdXNoID0gdHJ1ZTsKICAgICBzY2hlZHVsZUxheWVy
Rmx1c2goKTsKIApAQCAtMjczLDcgKzI5MSw3IEBAIHZvaWQgQWNjZWxlcmF0ZWRDb21wb3NpdGlu
Z0NvbnRleHQ6OnJlc2l6ZVJvb3RMYXllcihjb25zdCBJbnRTaXplJiBuZXdTaXplKQogICAgIGlm
IChtX3Jvb3RMYXllci0+c2l6ZSgpID09IG5ld1NpemUpCiAgICAgICAgIHJldHVybjsKIAotICAg
IG1fcmVkaXJlY3RlZFdpbmRvdy0+cmVzaXplKG5ld1NpemUpOworICAgIG1fcmVkaXJlY3RlZFdp
bmRvdy0+cmVzaXplKG5ld1NpemUsIHN0YXRpY19jYXN0PFRleHR1cmVNYXBwZXJHTCo+KG1fdGV4
dHVyZU1hcHBlci5nZXQoKSkpOwogICAgIG1fcm9vdExheWVyLT5zZXRTaXplKG5ld1NpemUpOwog
CiAgICAgLy8gSWYgdGhlIG5ld1NpemUgZXhwb3NlcyBuZXcgYXJlYXMgb2YgdGhlIG5vbi1jb21w
b3NpdGVkIGNvbnRlbnQgYSBzZXROZWVkc0Rpc3BsYXkgaXMgbmVlZGVkCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L2d0ay90ZXN0cy90ZXN0a2V5ZXZlbnRzLmMgYi9Tb3VyY2UvV2ViS2l0L2d0
ay90ZXN0cy90ZXN0a2V5ZXZlbnRzLmMKaW5kZXggYjU1YjRiY2FmNGRkZGE2MjIzOGJjZDg2Njll
NTEzOTc0YzViY2FhYS4uM2MxZWM0MTAxZWMxODQ5ZThiM2ZlYTU1YjM5OTdlOGRlNjVlYmQxNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9ndGsvdGVzdHMvdGVzdGtleWV2ZW50cy5jCisrKyBi
L1NvdXJjZS9XZWJLaXQvZ3RrL3Rlc3RzL3Rlc3RrZXlldmVudHMuYwpAQCAtMjUwLDcgKzI1MCw3
IEBAIHN0YXRpYyB2b2lkIHRlc3RfYmxvY2tpbmcoS2V5RXZlbnRGaXh0dXJlKiBmaXh0dXJlLCBn
Y29uc3Rwb2ludGVyIGRhdGEpCiAgICAgc2V0dXBfa2V5ZXZlbnRfdGVzdChmaXh0dXJlLCBkYXRh
LCBHX0NBTExCQUNLKHRlc3RfYmxvY2tpbmdfbG9hZF9zdGF0dXNfY2IpKTsKIH0KIAotI2lmIGRl
ZmluZWQoR0RLX1dJTkRPV0lOR19YMTEpICYmIEdUS19DSEVDS19WRVJTSU9OKDIsIDE2LCAwKQor
I2lmIFdURl9QTEFURk9STV9YMTEgJiYgR1RLX0NIRUNLX1ZFUlNJT04oMiwgMTYsIDApCiBzdGF0
aWMgdm9pZCB0ZXN0X3hpbV9sb2FkX3N0YXR1c19jYihXZWJLaXRXZWJWaWV3KiB3ZWJWaWV3LCBH
UGFyYW1TcGVjKiBzcGVjLCBncG9pbnRlciBkYXRhKQogewogICAgIEtleUV2ZW50Rml4dHVyZSog
Zml4dHVyZSA9IChLZXlFdmVudEZpeHR1cmUqKWRhdGE7CkBAIC0zNzQsNyArMzc0LDcgQEAgaW50
IG1haW4oaW50IGFyZ2MsIGNoYXIqKiBhcmd2KQogICAgICAgICAgICAgICAga2V5X2V2ZW50X2Zp
eHR1cmVfc2V0dXAsCiAgICAgICAgICAgICAgICB0ZXN0X2Jsb2NraW5nLAogICAgICAgICAgICAg
ICAga2V5X2V2ZW50X2ZpeHR1cmVfdGVhcmRvd24pOwotI2lmIGRlZmluZWQoR0RLX1dJTkRPV0lO
R19YMTEpICYmIEdUS19DSEVDS19WRVJTSU9OKDIsIDE2LCAwKQorI2lmIFdURl9QTEFURk9STV9Y
MTEgJiYgR1RLX0NIRUNLX1ZFUlNJT04oMiwgMTYsIDApCiAgICAgZ190ZXN0X2FkZCgiL3dlYmtp
dC9rZXlldmVudC94aW0tdGV4dGlucHV0IiwgS2V5RXZlbnRGaXh0dXJlLAogICAgICAgICAgICAg
ICAgdGVzdF9pbmZvX25ldyh0ZXh0aW5wdXRfaHRtbCwgVFJVRSksCiAgICAgICAgICAgICAgICBr
ZXlfZXZlbnRfZml4dHVyZV9zZXR1cCwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL0dOVW1h
a2VmaWxlLmxpc3QuYW0gYi9Tb3VyY2UvV2ViS2l0Mi9HTlVtYWtlZmlsZS5saXN0LmFtCmluZGV4
IDI1NDMyMDMwZmU0NjY0M2VhZjI4NjMwYTJjNjMyNTllNjgzOTRkNDIuLmZlOTNkOTNjMTg4ZWJl
NzdmMjVhNmEyYjNkMWNjMDY3NmMxYzUxMTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0dO
VW1ha2VmaWxlLmxpc3QuYW0KKysrIGIvU291cmNlL1dlYktpdDIvR05VbWFrZWZpbGUubGlzdC5h
bQpAQCAtNDA4LDcgKzQwOCw2IEBAIHdlYmtpdDJfc291cmNlcyArPSBcCiAJU291cmNlL1dlYktp
dDIvU2hhcmVkL1BsdWdpbnMvTmV0c2NhcGUvTmV0c2NhcGVQbHVnaW5Nb2R1bGUuY3BwIFwKIAlT
b3VyY2UvV2ViS2l0Mi9TaGFyZWQvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBsdWdpbk1vZHVs
ZS5oIFwKIAlTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvUGx1Z2lucy9OZXRzY2FwZS9OZXRzY2FwZVBs
dWdpbk1vZHVsZU5vbmUuY3BwIFwKLQlTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvUGx1Z2lucy9OZXRz
Y2FwZS94MTEvTmV0c2NhcGVQbHVnaW5Nb2R1bGVYMTEuY3BwIFwKIAlTb3VyY2UvV2ViS2l0Mi9T
aGFyZWQvUGx1Z2lucy9OUElkZW50aWZpZXJEYXRhLmNwcCBcCiAJU291cmNlL1dlYktpdDIvU2hh
cmVkL1BsdWdpbnMvTlBJZGVudGlmaWVyRGF0YS5oIFwKIAlTb3VyY2UvV2ViS2l0Mi9TaGFyZWQv
UGx1Z2lucy9OUE9iamVjdE1lc3NhZ2VSZWNlaXZlci5jcHAgXApAQCAtMTA3Miw3ICsxMDcxLDYg
QEAgd2Via2l0Ml9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdp
bnMvTmV0c2NhcGUvTlBSdW50aW1lVXRpbGl0aWVzLmNwcCBcCiAJU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9QbHVnaW5zL05ldHNjYXBlL05QUnVudGltZVV0aWxpdGllcy5oIFwKIAlTb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUvdW5peC9QbHVnaW5Qcm94eVVuaXgu
Y3BwIFwKLQlTb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvTmV0c2NhcGUveDExL05l
dHNjYXBlUGx1Z2luWDExLmNwcCBcCiAJU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5z
L1BsdWdpbkNvbnRyb2xsZXIuaCBcCiAJU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5z
L1BsdWdpbi5jcHAgXAogCVNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW4u
aCBcCkBAIC0xMTgxLDYgKzExNzksMTIgQEAgd2Via2l0Ml9zb3VyY2VzICs9IFwKIAlTb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlByb2Nlc3MuY3BwIFwKIAlTb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL1dlYlByb2Nlc3MuaAogCitpZiBUQVJHRVRfWDExCit3ZWJraXQyX3NvdXJjZXMgKz0g
XAorCVNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9OZXRzY2FwZS94MTEvTmV0c2Nh
cGVQbHVnaW5YMTEuY3BwIFwKKwlTb3VyY2UvV2ViS2l0Mi9TaGFyZWQvUGx1Z2lucy9OZXRzY2Fw
ZS94MTEvTmV0c2NhcGVQbHVnaW5Nb2R1bGVYMTEuY3BwCitlbmRpZiAjIEVORCBUQVJHRVRfWDEx
CisKIGlmIFVTRV9URVhUVVJFX01BUFBFUl9HTAogd2Via2l0Ml9zb3VyY2VzICs9IFwKICAgIFNv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvTGF5ZXJUcmVlSG9zdEd0ay5jcHAg
XApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2Vi
Vmlld0Jhc2UuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2Vi
Vmlld0Jhc2UuY3BwCmluZGV4IGFhMTNkN2EzNTYwNmU0YjRiYTBhMTkzYWFlN2M1YTgzNDliMTgz
NWEuLmMxYzQzMDYxNDg0NTBiNzEzMTI5ZTIyMzg5OTBjNWU3Mzg4YWZmOTAgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYlZpZXdCYXNlLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9XZWJLaXRXZWJWaWV3QmFzZS5j
cHAKQEAgLTY2LDcgKzY2LDcgQEAKICNpbmNsdWRlICJXZWJGdWxsU2NyZWVuTWFuYWdlclByb3h5
LmgiCiAjZW5kaWYKIAotI2lmIFVTRShURVhUVVJFX01BUFBFUl9HTCkgJiYgZGVmaW5lZChHREtf
V0lORE9XSU5HX1gxMSkKKyNpZiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpICYmIFBMQVRGT1JNKFgx
MSkKICNpbmNsdWRlIDxXZWJDb3JlL1JlZGlyZWN0ZWRYQ29tcG9zaXRlV2luZG93Lmg+CiAjZW5k
aWYKIApAQCAtMTEzLDcgKzExMyw3IEBAIHN0cnVjdCBfV2ViS2l0V2ViVmlld0Jhc2VQcml2YXRl
IHsKICAgICBXZWJGdWxsU2NyZWVuQ2xpZW50R3RrIGZ1bGxTY3JlZW5DbGllbnQ7CiAjZW5kaWYK
IAotI2lmIFVTRShURVhUVVJFX01BUFBFUl9HTCkKKyNpZiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wp
ICYmIFBMQVRGT1JNKFgxMSkKICAgICBPd25QdHI8UmVkaXJlY3RlZFhDb21wb3NpdGVXaW5kb3c+
IHJlZGlyZWN0ZWRXaW5kb3c7CiAjZW5kaWYKIH07CkBAIC0zNTIsMTQgKzM1MiwxNCBAQCBzdGF0
aWMgdm9pZCB3ZWJraXRfd2ViX3ZpZXdfYmFzZV9pbml0KFdlYktpdFdlYlZpZXdCYXNlKiB3ZWJr
aXRXZWJWaWV3QmFzZSkKICAgICAgICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxHZGtEcmFn
QWN0aW9uPihHREtfQUNUSU9OX0NPUFkgfCBHREtfQUNUSU9OX01PVkUgfCBHREtfQUNUSU9OX0xJ
TksgfCBHREtfQUNUSU9OX1BSSVZBVEUpKTsKICAgICBndGtfZHJhZ19kZXN0X3NldF90YXJnZXRf
bGlzdCh2aWV3V2lkZ2V0LCBQYXN0ZWJvYXJkSGVscGVyOjpkZWZhdWx0UGFzdGVib2FyZEhlbHBl
cigpLT50YXJnZXRMaXN0KCkpOwogCi0jaWYgVVNFKFRFWFRVUkVfTUFQUEVSX0dMKQorI2lmIFVT
RShURVhUVVJFX01BUFBFUl9HTCkgJiYgUExBVEZPUk0oWDExKQogICAgIHByaXYtPnJlZGlyZWN0
ZWRXaW5kb3cgPSBSZWRpcmVjdGVkWENvbXBvc2l0ZVdpbmRvdzo6Y3JlYXRlKEludFNpemUoMSwg
MSkpOwogICAgIGlmIChwcml2LT5yZWRpcmVjdGVkV2luZG93KQogICAgICAgICBwcml2LT5yZWRp
cmVjdGVkV2luZG93LT5zZXREYW1hZ2VOb3RpZnlDYWxsYmFjayhyZWRpcmVjdGVkV2luZG93RGFt
YWdlZENhbGxiYWNrLCB3ZWJraXRXZWJWaWV3QmFzZSk7CiAjZW5kaWYKIH0KIAotI2lmIFVTRShU
RVhUVVJFX01BUFBFUl9HTCkKKyNpZiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpICYmIFBMQVRGT1JN
KFgxMSkKIHN0YXRpYyBib29sIHdlYmtpdFdlYlZpZXdSZW5kZXJBY2NlbGVyYXRlZENvbXBvc2l0
aW5nUmVzdWx0cyhXZWJLaXRXZWJWaWV3QmFzZSogd2ViVmlld0Jhc2UsIERyYXdpbmdBcmVhUHJv
eHlJbXBsKiBkcmF3aW5nQXJlYSwgY2Fpcm9fdCogY3IsIEdka1JlY3RhbmdsZSogY2xpcFJlY3Qp
CiB7CiAgICAgaWYgKCFkcmF3aW5nQXJlYS0+aXNJbkFjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2Rl
KCkpCkBAIC0zOTAsNyArMzkwLDcgQEAgc3RhdGljIGdib29sZWFuIHdlYmtpdFdlYlZpZXdCYXNl
RHJhdyhHdGtXaWRnZXQqIHdpZGdldCwgY2Fpcm9fdCogY3IpCiAgICAgaWYgKCFnZGtfY2Fpcm9f
Z2V0X2NsaXBfcmVjdGFuZ2xlKGNyLCAmY2xpcFJlY3QpKQogICAgICAgICByZXR1cm4gRkFMU0U7
CiAKLSNpZiBVU0UoVEVYVFVSRV9NQVBQRVJfR0wpCisjaWYgVVNFKFRFWFRVUkVfTUFQUEVSX0dM
KSAmJiBQTEFURk9STShYMTEpCiAgICAgaWYgKHdlYmtpdFdlYlZpZXdSZW5kZXJBY2NlbGVyYXRl
ZENvbXBvc2l0aW5nUmVzdWx0cyh3ZWJWaWV3QmFzZSwgZHJhd2luZ0FyZWEsIGNyLCAmY2xpcFJl
Y3QpKQogICAgICAgICByZXR1cm4gRkFMU0U7CiAjZW5kaWYKQEAgLTQzMiw3ICs0MzIsNyBAQCBz
dGF0aWMgdm9pZCByZXNpemVXZWJLaXRXZWJWaWV3QmFzZUZyb21BbGxvY2F0aW9uKFdlYktpdFdl
YlZpZXdCYXNlKiB3ZWJWaWV3QmFzZQogICAgICAgICB2aWV3UmVjdC5zZXRIZWlnaHQoYWxsb2Nh
dGlvbi0+aGVpZ2h0IC0gcHJpdi0+aW5zcGVjdG9yVmlld0hlaWdodCk7CiAgICAgfQogCi0jaWYg
VVNFKFRFWFRVUkVfTUFQUEVSX0dMKQorI2lmIFVTRShURVhUVVJFX01BUFBFUl9HTCkgJiYgUExB
VEZPUk0oWDExKQogICAgIGlmIChzaXplQ2hhbmdlZCAmJiB3ZWJWaWV3QmFzZS0+cHJpdi0+cmVk
aXJlY3RlZFdpbmRvdykKICAgICAgICAgd2ViVmlld0Jhc2UtPnByaXYtPnJlZGlyZWN0ZWRXaW5k
b3ctPnJlc2l6ZSh2aWV3UmVjdC5zaXplKCkpOwogI2VuZGlmCkBAIC04MDMsNyArODAzLDcgQEAg
dm9pZCB3ZWJraXRXZWJWaWV3QmFzZUNyZWF0ZVdlYlBhZ2UoV2ViS2l0V2ViVmlld0Jhc2UqIHdl
YmtpdFdlYlZpZXdCYXNlLCBXZWJDb24KICAgICBwcml2LT5wYWdlUHJveHktPmZ1bGxTY3JlZW5N
YW5hZ2VyKCktPnNldFdlYlZpZXcod2Via2l0V2ViVmlld0Jhc2UpOwogI2VuZGlmCiAKLSNpZiBV
U0UoVEVYVFVSRV9NQVBQRVJfR0wpCisjaWYgVVNFKFRFWFRVUkVfTUFQUEVSX0dMKSAmJiBQTEFU
Rk9STShYMTEpCiAgICAgaWYgKHByaXYtPnJlZGlyZWN0ZWRXaW5kb3cpCiAgICAgICAgIHByaXYt
PnBhZ2VQcm94eS0+c2V0QWNjZWxlcmF0ZWRDb21wb3NpdGluZ1dpbmRvd0lkKHByaXYtPnJlZGly
ZWN0ZWRXaW5kb3ctPndpbmRvd0lkKCkpOwogI2VuZGlmCkBAIC05MzEsNyArOTMxLDcgQEAgR2Rr
RXZlbnQqIHdlYmtpdFdlYlZpZXdCYXNlVGFrZUNvbnRleHRNZW51RXZlbnQoV2ViS2l0V2ViVmll
d0Jhc2UqIHdlYmtpdFdlYlZpZXcKICAgICByZXR1cm4gd2Via2l0V2ViVmlld0Jhc2UtPnByaXYt
PmNvbnRleHRNZW51RXZlbnQucmVsZWFzZSgpOwogfQogCi0jaWYgVVNFKFRFWFRVUkVfTUFQUEVS
X0dMKQorI2lmIFVTRShURVhUVVJFX01BUFBFUl9HTCkgJiYgUExBVEZPUk0oWDExKQogdm9pZCBy
ZWRpcmVjdGVkV2luZG93RGFtYWdlZENhbGxiYWNrKHZvaWQqIGRhdGEpCiB7CiAgICAgZ3RrX3dp
ZGdldF9xdWV1ZV9kcmF3KEdUS19XSURHRVQoZGF0YSkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvdW5peC9QbHVnaW5Qcm9jZXNzUHJveHlVbml4LmNwcCBi
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QbHVnaW5zL3VuaXgvUGx1Z2luUHJvY2Vzc1Byb3h5
VW5peC5jcHAKaW5kZXggMTA4MGNiODI5ZTI1MDg5YzY0MDc5MWYxOWI2MGVkOTZjMWQ1NjNiNi4u
YjkxNGI0M2IyNDM0NDkwYmExNzAyNjNlNDhlZTI2ZDJhMzhkMGQyNCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1BsdWdpbnMvdW5peC9QbHVnaW5Qcm9jZXNzUHJveHlVbml4
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGx1Z2lucy91bml4L1BsdWdpblBy
b2Nlc3NQcm94eVVuaXguY3BwCkBAIC00Nyw2ICs0Nyw3IEBAIHZvaWQgUGx1Z2luUHJvY2Vzc1By
b3h5OjpwbGF0Zm9ybUluaXRpYWxpemVQbHVnaW5Qcm9jZXNzKFBsdWdpblByb2Nlc3NDcmVhdGlv
blBhCiB7CiB9CiAKKyNpZiBQTEFURk9STShYMTEpCiBib29sIFBsdWdpblByb2Nlc3NQcm94eTo6
c2NhblBsdWdpbihjb25zdCBTdHJpbmcmIHBsdWdpblBhdGgsIFJhd1BsdWdpbk1ldGFEYXRhJiBy
ZXN1bHQpCiB7CiAjaWYgUExBVEZPUk0oR1RLKSB8fCAoUExBVEZPUk0oRUZMKSAmJiBFTkFCTEUo
R0xJQl9TVVBQT1JUKSkKQEAgLTkwLDYgKzkxLDcgQEAgYm9vbCBQbHVnaW5Qcm9jZXNzUHJveHk6
OnNjYW5QbHVnaW4oY29uc3QgU3RyaW5nJiBwbHVnaW5QYXRoLCBSYXdQbHVnaW5NZXRhRGF0YSYK
ICAgICByZXR1cm4gZmFsc2U7CiAjZW5kaWYgLy8gUExBVEZPUk0oR1RLKSB8fCAoUExBVEZPUk0o
RUZMKSAmJiBFTkFCTEUoR0xJQl9TVVBQT1JUKSkKIH0KKyNlbmRpZgogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJLaXQKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9XZWJQ
YWdlUHJveHlHdGsuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2d0ay9XZWJQYWdlUHJv
eHlHdGsuY3BwCmluZGV4IDZiMDFiYjAyNzgwMjE1ZmQ0ODMwYjMzMTQ4ODZkNTlmN2ViZmVjOTMu
LjFmM2VhMmVhZmZlMjcyZmZjNDgzMzBlZGE1Mjc4ZGMyOWMxNTE4YTcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9ndGsvV2ViUGFnZVByb3h5R3RrLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvZ3RrL1dlYlBhZ2VQcm94eUd0ay5jcHAKQEAgLTM0LDcgKzM0
LDkgQEAKICNpbmNsdWRlICJXZWJQYWdlTWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNz
UHJveHkuaCIKICNpbmNsdWRlIDxXZWJDb3JlL1VzZXJBZ2VudEd0ay5oPgorI2lmIFBMQVRGT1JN
KFgxMSkKICNpbmNsdWRlIDxndGsvZ3RreC5oPgorI2VuZGlmCiAKIG5hbWVzcGFjZSBXZWJLaXQg
ewogCkBAIC03NSw2ICs3Nyw3IEBAIHN0YXRpYyBQbHVnaW5XaW5kb3dNYXAmIHBsdWdpbldpbmRv
d01hcCgpCiAgICAgcmV0dXJuIG1hcDsKIH0KIAorI2lmIFBMQVRGT1JNKFgxMSkKIHN0YXRpYyBn
Ym9vbGVhbiBwbHVnaW5Db250YWluZXJQbHVnUmVtb3ZlZChHdGtTb2NrZXQqIHNvY2tldCkKIHsK
ICAgICB1aW50NjRfdCB3aW5kb3dJRCA9IHN0YXRpY19jYXN0PHVpbnQ2NF90PihndGtfc29ja2V0
X2dldF9pZChzb2NrZXQpKTsKQEAgLTEwOCw2ICsxMTEsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6
d2luZG93ZWRQbHVnaW5HZW9tZXRyeURpZENoYW5nZShjb25zdCBXZWJDb3JlOjpJbnRSZWN0JiBm
cmFtZQogCiAgICAgd2Via2l0V2ViVmlld0Jhc2VDaGlsZE1vdmVSZXNpemUoV0VCS0lUX1dFQl9W
SUVXX0JBU0Uodmlld1dpZGdldCgpKSwgcGx1Z2luLCBmcmFtZVJlY3QpOwogfQorI2VuZGlmIC8v
IFBMQVRGT1JNKFgxMSkKIAogI2lmIFVTRShURVhUVVJFX01BUFBFUl9HTCkKIHZvaWQgV2ViUGFn
ZVByb3h5OjpzZXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nV2luZG93SWQodWludDY0X3QgbmF0aXZl
V2luZG93SWQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
Z3RrL0xheWVyVHJlZUhvc3RHdGsuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL2d0ay9MYXllclRyZWVIb3N0R3RrLmNwcAppbmRleCBhZjJhZTg5YmZhMjkxNTVjZWZhNjMy
ZGEyMmM3ZTZiZjNhZWFiNWM2Li4xZjY3MjE0MmNjZDIxODY4YmMyZWIwMGNkNjBiNWYwMWU2MjZh
YWViIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvZ3RrL0xh
eWVyVHJlZUhvc3RHdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFn
ZS9ndGsvTGF5ZXJUcmVlSG9zdEd0ay5jcHAKQEAgLTQxLDcgKzQxLDcgQEAKICNpbmNsdWRlIDxX
ZWJDb3JlL1NldHRpbmdzLmg+CiAKICNpbmNsdWRlIDxnZGsvZ2RrLmg+Ci0jaWYgZGVmaW5lZChH
REtfV0lORE9XSU5HX1gxMSkKKyNpZiBQTEFURk9STShYMTEpCiAjZGVmaW5lIFJlZ2lvbiBYUmVn
aW9uCiAjZGVmaW5lIEZvbnQgWEZvbnQKICNkZWZpbmUgQ3Vyc29yIFhDdXJzb3IKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9ndGsvTGF5ZXJUcmVlSG9zdEd0
ay5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9MYXllclRyZWVIb3N0
R3RrLmgKaW5kZXggNjFiOWZhNjcxNTgzMzZhMzQ2M2NkYzBjZjdjYzg5ODM3ZTBiMTEyNC4uMzQ1
ZjAxMWJhZjAyZWZlYjc1ODBiNGIwNjA2MzUzMTVlNmQzNzdjOSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9MYXllclRyZWVIb3N0R3RrLmgKKysrIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2d0ay9MYXllclRyZWVIb3N0R3RrLmgK
QEAgLTEwMSw3ICsxMDEsNyBAQCBwcml2YXRlOgogICAgIE93blB0cjxXZWJDb3JlOjpHcmFwaGlj
c0xheWVyPiBtX3Jvb3RMYXllcjsKICAgICBPd25QdHI8V2ViQ29yZTo6R3JhcGhpY3NMYXllcj4g
bV9ub25Db21wb3NpdGVkQ29udGVudExheWVyOwogICAgIE93blB0cjxXZWJDb3JlOjpHcmFwaGlj
c0xheWVyPiBtX3BhZ2VPdmVybGF5TGF5ZXI7Ci0gICAgT3duUHRyPFdlYkNvcmU6OlRleHR1cmVN
YXBwZXI+IG1fdGV4dHVyZU1hcHBlcjsKKyAgICBSZWZQdHI8V2ViQ29yZTo6VGV4dHVyZU1hcHBl
cj4gbV90ZXh0dXJlTWFwcGVyOwogICAgIE93blB0cjxXZWJDb3JlOjpHTENvbnRleHQ+IG1fY29u
dGV4dDsKICAgICBib29sIG1fbGF5ZXJGbHVzaFNjaGVkdWxpbmdFbmFibGVkOwogICAgIHVuc2ln
bmVkIG1fbGF5ZXJGbHVzaFRpbWVyQ2FsbGJhY2tJZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL2NvbmZpZy5oIGIvU291cmNlL1dlYktpdDIvY29uZmlnLmgKaW5kZXggMjg4NTA3NWE4NjJl
ZGZkNGY0YjIwYjc4MDdlOWY5YzRkZGQyMzA4YS4uZjQ1YTlhYWJhMWE3N2JlNDgwMTY1YThiOGU2
N2ZiMTkyNTM4MGU2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvY29uZmlnLmgKKysrIGIv
U291cmNlL1dlYktpdDIvY29uZmlnLmgKQEAgLTEwOCw3ICsxMDgsNyBAQCBzdGF0aWMgY29uc3Qg
dHlwZSYgbmFtZSgpIFwKICNkZWZpbmUgUExVR0lOX0FSQ0hJVEVDVFVSRV9NQUMgMQogI2VsaWYg
UExBVEZPUk0oV0lOKQogI2RlZmluZSBQTFVHSU5fQVJDSElURUNUVVJFX1dJTiAxCi0jZWxpZiAo
UExBVEZPUk0oR1RLKSB8fCBQTEFURk9STShFRkwpKSAmJiAoT1MoVU5JWCkgJiYgIU9TKE1BQ19P
U19YKSkKKyNlbGlmIChQTEFURk9STShHVEspIHx8IFBMQVRGT1JNKEVGTCkpICYmIChPUyhVTklY
KSAmJiAhT1MoTUFDX09TX1gpICYmICFQTEFURk9STShXQVlMQU5EKSkKICNkZWZpbmUgUExVR0lO
X0FSQ0hJVEVDVFVSRV9YMTEgMQogI2VsaWYgUExBVEZPUk0oUVQpCiAvLyBRdCBoYW5kbGVzIHRo
aXMgZmVhdHVyZXMucHJmCmRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMK
aW5kZXggYmNjMGE4ZTE4Yzk4ZGZjZjcwMDM2NWQwNWM5MWI5MTFmMDA2Y2FhMy4uMWQ2MWViNTEx
NjZiMWU2MzUyZmRmYzE3ZGNjYmZhNGQ3MWQ3ZTU0MiAxMDA2NDQKLS0tIGEvY29uZmlndXJlLmFj
CisrKyBiL2NvbmZpZ3VyZS5hYwpAQCAtMzI1LDEzICszMjUsMTMgQEAgQU1fQ09ORElUSU9OQUwo
W0dUS19BUElfVkVSU0lPTl8yXSxbdGVzdCAiJEdUS19BUElfVkVSU0lPTiIgPSAiMi4wIl0pCiAj
IGRldGVybWluZSB0aGUgR0RLL0dUSysgdGFyZ2V0CiBBQ19NU0dfQ0hFQ0tJTkcoW3RoZSB0YXJn
ZXQgd2luZG93aW5nIHN5c3RlbV0pCiBBQ19BUkdfV0lUSCh0YXJnZXQsCi0gICAgICAgICAgICBB
Q19IRUxQX1NUUklORyhbLS13aXRoLXRhcmdldD1APDpAeDExL3dpbjMyL3F1YXJ0ei9kaXJlY3Rm
YkA6PkBdLAorICAgICAgICAgICAgQUNfSEVMUF9TVFJJTkcoWy0td2l0aC10YXJnZXQ9QDw6QHgx
MS93aW4zMi9xdWFydHovZGlyZWN0ZmIvd2F5bGFuZEA6PkBdLAogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgW1NlbGVjdCB3ZWJraXQgdGFyZ2V0IFtkZWZhdWx0PXgxMV1dKSwKICAgICAgICAg
ICAgIFtdLFt3aXRoX3RhcmdldD0ieDExIl0pCiAKIGNhc2UgIiR3aXRoX3RhcmdldCIgaW4KLSAg
ICAgeDExfHdpbjMyfHF1YXJ0enxkaXJlY3RmYikgOzsKLSAgICAgKikgQUNfTVNHX0VSUk9SKFtJ
bnZhbGlkIHRhcmdldDogbXVzdCBiZSB4MTEsIHF1YXJ0eiwgd2luMzIsIG9yIGRpcmVjdGZiLl0p
IDs7CisgICAgIHgxMXx3aW4zMnxxdWFydHp8ZGlyZWN0ZmJ8d2F5bGFuZCkgOzsKKyAgICAgKikg
QUNfTVNHX0VSUk9SKFtJbnZhbGlkIHRhcmdldDogbXVzdCBiZSB4MTEsIHF1YXJ0eiwgd2luMzIs
IGRpcmVjdGZiIG9yIHdheWxhbmQuXSkgOzsKIGVzYWMKIAogQUNfTVNHX1JFU1VMVChbJHdpdGhf
dGFyZ2V0XSkKQEAgLTQ5MSw2ICs0OTEsMTAgQEAgaWYgdGVzdCAiJHdpdGhfdGFyZ2V0IiA9ICJk
aXJlY3RmYiI7IHRoZW4KICAgIFBLR19DSEVDS19NT0RVTEVTKENBSVJPLCBjYWlyby1kaXJlY3Rm
YiA+PSAkQ0FJUk9fUkVRVUlSRURfVkVSU0lPTikKICAgIFBLR19DSEVDS19NT0RVTEVTKEdUSywg
Z3RrKy1kaXJlY3RmYi0yLjAgPj0gJEdUS19SRVFVSVJFRF9WRVJTSU9OKQogICAgQUNfREVGSU5F
KFtXVEZfUExBVEZPUk1fRElSRUNURkJdLFsxXSxbRGVmaW5lIGlmIHRhcmdldCBpcyBEaXJlY3RG
Ql0pCitlbGlmIHRlc3QgIiR3aXRoX3RhcmdldCIgPSAid2F5bGFuZCI7IHRoZW4KKyAgIFBLR19D
SEVDS19NT0RVTEVTKENBSVJPLCBbY2Fpcm8tZWdsID49ICRDQUlST19SRVFVSVJFRF9WRVJTSU9O
XSkKKyAgIFBLR19DSEVDS19NT0RVTEVTKEdUSywgZ3RrKy13YXlsYW5kLTMuMCA+PSAkR1RLX1JF
UVVJUkVEX1ZFUlNJT04pCisgICBBQ19ERUZJTkUoW1dURl9QTEFURk9STV9XQVlMQU5EXSxbMV0s
W0RlZmluZSBpZiB0YXJnZXQgaXMgV2F5bGFuZF0pCiBlbHNlCiAgICBQS0dfQ0hFQ0tfTU9EVUxF
UyhDQUlSTywgY2Fpcm8gPj0gJENBSVJPX1JFUVVJUkVEX1ZFUlNJT04pCiAgICBQS0dfQ0hFQ0tf
TU9EVUxFUyhHVEssIGd0aystJEdUS19BUElfVkVSU0lPTiA+PSAkR1RLX1JFUVVJUkVEX1ZFUlNJ
T04pCkBAIC01NTksNyArNTYzLDkgQEAgQUNfQVJHX0VOQUJMRShnbGVzMiwKICAgICAgICAgICAg
ICAgW10sIFtlbmFibGVfZ2xlczI9ImF1dG8iXSkKIAogaGF2ZV9nbHg9bm8KK2lmIHRlc3QgIiR3
aXRoX3RhcmdldCIgPSAieDExIjsgdGhlbgogQUNfQ0hFQ0tfSEVBREVSUyhbR0wvZ2x4LmhdLCBb
aGF2ZV9nbHg9InllcyJdLCBbaGF2ZV9nbHg9Im5vIl0pCitmaQogQUNfTVNHX0NIRUNLSU5HKFt3
aGV0aGVyIHRvIGVuYWJsZSBHTFggc3VwcG9ydF0pCiBpZiB0ZXN0ICIkZW5hYmxlX2dseCIgIT0g
Im5vIjsgdGhlbgogICAgaWYgdGVzdCAiJGhhdmVfZ2x4IiA9ICJubyI7IHRoZW4KQEAgLTEwMjEs
NyArMTAyNywxMSBAQCBpZiB0ZXN0ICIkd2l0aF9hY2NlbGVyYXRpb25fYmFja2VuZCIgPSAib3Bl
bmdsIjsgdGhlbgogICAgZmkKICAgIGlmIHRlc3QgIiRlbmFibGVfZWdsIiA9ICJ5ZXMiOyB0aGVu
CiAgICAgYWNjZWxlcmF0aW9uX2JhY2tlbmRfZGVzY3JpcHRpb24rPSIsIGVnbCIKLSAgICBPUEVO
R0xfTElCUys9IiAtbEVHTCIKKyAgICBpZiB0ZXN0ICIkd2l0aF90YXJnZXQiID0gIndheWxhbmQi
OyB0aGVuCisgICAgIE9QRU5HTF9MSUJTKz0iIC1sd2F5bGFuZC1lZ2wiCisgICAgZWxzZQorICAg
ICBPUEVOR0xfTElCUys9IiAtbEVHTCIKKyAgICBmaQogICAgZmkKICAgIGlmIHRlc3QgIiRlbmFi
bGVfZ2x4IiA9ICJ5ZXMiOyB0aGVuCiAgICAgYWNjZWxlcmF0aW9uX2JhY2tlbmRfZGVzY3JpcHRp
b24rPSIsIGdseCIKQEAgLTEwODUsMTIgKzEwOTUsMTEgQEAgQUNfTVNHX0NIRUNLSU5HKFt3aGV0
aGVyIHRvIGJ1aWxkIHBsdWdpbiBwcm9jZXNzIGZvciBXZWJLaXQyXSkKIEFDX0FSR19FTkFCTEUo
cGx1Z2luX3Byb2Nlc3MsCiAgICAgICAgICAgICBBQ19IRUxQX1NUUklORyhbLS1lbmFibGUtcGx1
Z2luLXByb2Nlc3NdLCBbYnVpbGQgcGx1Z2luIHByb2Nlc3MgZm9yIFdlYktpdDIgW2RlZmF1bHQ9
eWVzXV0pLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgW10sIFtlbmFibGVfcGx1Z2luX3By
b2Nlc3M9InllcyJdKQotQUNfTVNHX1JFU1VMVChbJGVuYWJsZV9wbHVnaW5fcHJvY2Vzc10pCi0K
LSMgQnVpbGQgdGhlIHBsdWdpbiBwcm9jZXNzIG9ubHkgd2hlbiBidWlsZGluZyBXZWJraXQyLgot
aWYgdGVzdCAiJGVuYWJsZV93ZWJraXQyIiA9ICJubyI7IHRoZW4KKyMgQnVpbGQgdGhlIHBsdWdp
biBwcm9jZXNzIG9ubHkgd2hlbiBidWlsZGluZyBXZWJraXQyIGFuZCBub3QgdXNpbmcgd2F5bGFu
ZAoraWYgdGVzdCAiJGVuYWJsZV93ZWJraXQyIiA9ICJubyIgfHwgdGVzdCAiJHdpdGhfdGFyZ2V0
IiA9ICJ3YXlsYW5kIjsgdGhlbgogICAgIGVuYWJsZV9wbHVnaW5fcHJvY2Vzcz1ubwogZmkKK0FD
X01TR19SRVNVTFQoWyRlbmFibGVfcGx1Z2luX3Byb2Nlc3NdKQogCiAjIE1ha2Ugc3VyZSB3ZSBo
YXZlIEdUSysgMi54IHRvIGJ1aWxkIHRoZSBwbHVnaW4gcHJvY2Vzcy4KIGlmIHRlc3QgIiRlbmFi
bGVfcGx1Z2luX3Byb2Nlc3MiID0gInllcyI7IHRoZW4KQEAgLTExMTMsNiArMTEyMiw3IEBAIEFN
X0NPTkRJVElPTkFMKFtUQVJHRVRfWDExXSwgW3Rlc3QgIiR3aXRoX3RhcmdldCIgPSAieDExIl0p
CiBBTV9DT05ESVRJT05BTChbVEFSR0VUX1dJTjMyXSwgW3Rlc3QgIiR3aXRoX3RhcmdldCIgPSAi
d2luMzIiXSkKIEFNX0NPTkRJVElPTkFMKFtUQVJHRVRfUVVBUlRaXSwgW3Rlc3QgIiR3aXRoX3Rh
cmdldCIgPSAicXVhcnR6Il0pCiBBTV9DT05ESVRJT05BTChbVEFSR0VUX0RJUkVDVEZCXSwgW3Rl
c3QgIiR3aXRoX3RhcmdldCIgPSAiZGlyZWN0ZmIiXSkKK0FNX0NPTkRJVElPTkFMKFtUQVJHRVRf
V0FZTEFORF0sIFt0ZXN0ICIkd2l0aF90YXJnZXQiID0gIndheWxhbmQiXSkKIAogIyBVbmljb2Rl
IGJhY2tlbmQgY29uZGl0aW9uYWxzCiBBTV9DT05ESVRJT05BTChbVVNFX0lDVV9VTklDT0RFXSwg
W3Rlc3QgIiR3aXRoX3VuaWNvZGVfYmFja2VuZCIgPSAiaWN1Il0pCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>