<?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>210276</bug_id>
          
          <creation_ts>2020-04-09 07:10:06 -0700</creation_ts>
          <short_desc>[GTK4] Get MiniBrowser ready for GTK4</short_desc>
          <delta_ts>2020-06-12 01:42:57 -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>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></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          <dependson>211171</dependson>
    
    <dependson>212740</dependson>
    
    <dependson>212817</dependson>
    
    <dependson>212898</dependson>
          <blocked>210100</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Claudio Saavedra">csaavedra</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>aperez</cc>
    
    <cc>bugs-noreply</cc>
    
    <cc>cgarcia</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1639622</commentid>
    <comment_count>0</comment_count>
    <who name="Claudio Saavedra">csaavedra</who>
    <bug_when>2020-04-09 07:10:06 -0700</bug_when>
    <thetext>There are several widgets that are no longer available in GTK4: toolbars, tool menu items, etc. Also GtkAction is gone. The MiniBrowser UI should be rewritten to use widgets that are both available in GTK3 and GTK4.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1661554</commentid>
    <comment_count>1</comment_count>
      <attachid>401632</attachid>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2020-06-11 04:37:40 -0700</bug_when>
    <thetext>Created attachment 401632
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1661875</commentid>
    <comment_count>2</comment_count>
      <attachid>401632</attachid>
    <who name="Adrian Perez">aperez</who>
    <bug_when>2020-06-12 01:10:38 -0700</bug_when>
    <thetext>Comment on attachment 401632
Patch

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

&gt; Tools/MiniBrowser/gtk/BrowserSearchBox.c:74
&gt; +    action = g_action_map_lookup_action(G_ACTION_MAP(searchBox-&gt;actionGroup), &quot;beginnig-word&quot;);

Typo: beginnig → beginning.

I saw this in one of the dependant patches, so if you fix it on the other
patch first I suppose when you rebase this one you&apos;ll get it fixed, too :)

&gt; Tools/MiniBrowser/gtk/BrowserSearchBox.c:131
&gt; +    gtk_editable_set_text(GTK_EDITABLE(searchBox-&gt;entry), &quot;&quot;);

I was about to mention this could be in “GtkVersioning.h”, but of
course we only want to use public headers in the MiniBrowser 😅️

Maybe it would be neat to have such a header for the MiniBrowser?
My feeling is that it would simplify quite a lot the #if-#endif
churn in many places along this patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1661881</commentid>
    <comment_count>3</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2020-06-12 01:30:47 -0700</bug_when>
    <thetext>(In reply to Adrian Perez from comment #2)
&gt; Comment on attachment 401632 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=401632&amp;action=review
&gt; 
&gt; &gt; Tools/MiniBrowser/gtk/BrowserSearchBox.c:74
&gt; &gt; +    action = g_action_map_lookup_action(G_ACTION_MAP(searchBox-&gt;actionGroup), &quot;beginnig-word&quot;);
&gt; 
&gt; Typo: beginnig → beginning.
&gt; 
&gt; I saw this in one of the dependant patches, so if you fix it on the other
&gt; patch first I suppose when you rebase this one you&apos;ll get it fixed, too :)
&gt; 
&gt; &gt; Tools/MiniBrowser/gtk/BrowserSearchBox.c:131
&gt; &gt; +    gtk_editable_set_text(GTK_EDITABLE(searchBox-&gt;entry), &quot;&quot;);
&gt; 
&gt; I was about to mention this could be in “GtkVersioning.h”, but of
&gt; course we only want to use public headers in the MiniBrowser 😅️
&gt; 
&gt; Maybe it would be neat to have such a header for the MiniBrowser?
&gt; My feeling is that it would simplify quite a lot the #if-#endif
&gt; churn in many places along this patch.

I thought about this, but MiniBrowser code doesn&apos;t change that much and I think it will be easier to remove the code when we stop supporting gtk3.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1661882</commentid>
    <comment_count>4</comment_count>
    <who name="Carlos Garcia Campos">cgarcia</who>
    <bug_when>2020-06-12 01:42:57 -0700</bug_when>
    <thetext>Committed r262939: &lt;https://trac.webkit.org/changeset/262939&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>401632</attachid>
            <date>2020-06-11 04:37:40 -0700</date>
            <delta_ts>2020-06-12 01:10:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>mb-gtk4.diff</filename>
            <type>text/plain</type>
            <size>97954</size>
            <attacher name="Carlos Garcia Campos">cgarcia</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCA3YjNlMjgyYTRhOGEuLjlj
YTI3NjcyNmJiYiAxMDA2NDQKLS0tIGEvQ2hhbmdlTG9nCisrKyBiL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDE0IEBACisyMDIwLTA2LTExICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdh
bGlhLmNvbT4KKworICAgICAgICBbR1RLNF0gR2V0IE1pbmlCcm93c2VyIHJlYWR5IGZvciBHVEs0
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTAyNzYK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBCdW1wIEdU
SzQgcmVxdWlyZWQgdmVyc2lvbi4KKworICAgICAgICAqIFNvdXJjZS9jbWFrZS9PcHRpb25zR1RL
LmNtYWtlOgorCiAyMDIwLTA2LTA3ICBQaGlsaXBwZSBOb3JtYW5kICA8cG5vcm1hbmRAaWdhbGlh
LmNvbT4KIAogICAgICAgICBSZW1vdmUgRU5BQkxFX1ZJREVPX1RSQUNLIGlmZGVmIGd1YXJkcwpk
aWZmIC0tZ2l0IGEvU291cmNlL2NtYWtlL09wdGlvbnNHVEsuY21ha2UgYi9Tb3VyY2UvY21ha2Uv
T3B0aW9uc0dUSy5jbWFrZQppbmRleCAyZjg5MTc3N2Q3ODYuLmEzZTU1MTllOTg3ZSAxMDA2NDQK
LS0tIGEvU291cmNlL2NtYWtlL09wdGlvbnNHVEsuY21ha2UKKysrIGIvU291cmNlL2NtYWtlL09w
dGlvbnNHVEsuY21ha2UKQEAgLTgsNyArOCw3IEBAIFNFVF9QUk9KRUNUX1ZFUlNJT04oMiAyOSAx
KQogCiBpZiAoVVNFX0dUSzQpCiAgICAgc2V0KFdFQktJVEdUS19BUElfVkVSU0lPTiA1LjApCi0g
ICAgc2V0KEdUS19NSU5JTVVNX1ZFUlNJT04gMy45OC40KQorICAgIHNldChHVEtfTUlOSU1VTV9W
RVJTSU9OIDMuOTguNSkKICAgICBDQUxDVUxBVEVfTElCUkFSWV9WRVJTSU9OU19GUk9NX0xJQlRP
T0xfVFJJUExFKFdFQktJVCAwIDAgMCkKIGVsc2UgKCkKICAgICBzZXQoV0VCS0lUR1RLX0FQSV9W
RVJTSU9OIDQuMCkKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5nZUxv
ZwppbmRleCBiMDAwYzdiZGYyZWYuLmZjYTc0ZjNiZjUzNyAxMDA2NDQKLS0tIGEvVG9vbHMvQ2hh
bmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDg5IEBACisyMDIwLTA2LTEx
ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlhLmNvbT4KKworICAgICAgICBb
R1RLNF0gR2V0IE1pbmlCcm93c2VyIHJlYWR5IGZvciBHVEs0CisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTAyNzYKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQb3J0IE1pbmlCcm93c2VyIHRvIEdUSzQuIEJy
b3dzZXJTZWFyY2hCYXIgaGFzIGJlZW4gcmVuYW1lZCBhcyBCcm93c2VyU2VhcmNoQm94LCBiZWNh
dXNlIGluIEdUSyBHdGtTZWFyY2hCYXIgaXMKKyAgICAgICAgZmluYWwgY2xhc3MsIHNvIHdlIGRl
cml2ZSBmcm9tIEd0a0JveCBhbmQgdG8gYmUgdXNlZCBhcyBjb250ZW50cyBvZiBhIEd0a1NlYXJj
aEJhci4KKworICAgICAgICAqIE1pbmlCcm93c2VyL2d0ay9Ccm93c2VyQ2VsbFJlbmRlcmVyVmFy
aWFudC5jOgorICAgICAgICAoYnJvd3NlckNlbGxSZW5kZXJlclZhcmlhbnRDZWxsUmVuZGVyZXJT
bmFwc2hvdCk6CisgICAgICAgIChicm93c2VyX2NlbGxfcmVuZGVyZXJfdmFyaWFudF9jbGFzc19p
bml0KToKKyAgICAgICAgKiBNaW5pQnJvd3Nlci9ndGsvQnJvd3NlckNlbGxSZW5kZXJlclZhcmlh
bnQuaDoKKyAgICAgICAgKiBNaW5pQnJvd3Nlci9ndGsvQnJvd3NlclNlYXJjaEJhci5jOiBSZW1v
dmVkLgorICAgICAgICAqIE1pbmlCcm93c2VyL2d0ay9Ccm93c2VyU2VhcmNoQm94LmM6IEFkZGVk
LgorICAgICAgICAoc2V0RmFpbGVkU3R5bGVGb3JFbnRyeSk6CisgICAgICAgIChkb1NlYXJjaCk6
CisgICAgICAgIChzZWFyY2hOZXh0KToKKyAgICAgICAgKHNlYXJjaFByZXZpb3VzKToKKyAgICAg
ICAgKHNlYXJjaEVudHJ5TWVudUljb25QcmVzc2VkQ2FsbGJhY2spOgorICAgICAgICAoc2VhcmNo
RW50cnlDbGVhckljb25SZWxlYXNlZENhbGxiYWNrKToKKyAgICAgICAgKHNlYXJjaEVudHJ5Q2hh
bmdlZENhbGxiYWNrKToKKyAgICAgICAgKHNlYXJjaEVudHJ5QWN0aXZhdGVkQ2FsbGJhY2spOgor
ICAgICAgICAoc2VhcmNoUHJldmlvdXNCdXR0b25DYWxsYmFjayk6CisgICAgICAgIChzZWFyY2hO
ZXh0QnV0dG9uQ2FsbGJhY2spOgorICAgICAgICAoc2VhcmNoTWVudUNoZWNrQnV0dG9uVG9nZ2xl
ZENhbGxiYWNrKToKKyAgICAgICAgKGZpbmRDb250cm9sbGVyRmFpbGVkVG9GaW5kVGV4dENhbGxi
YWNrKToKKyAgICAgICAgKGZpbmRDb250cm9sbGVyRm91bmRUZXh0Q2FsbGJhY2spOgorICAgICAg
ICAoYnJvd3NlclNlYXJjaEJveEZpbmFsaXplKToKKyAgICAgICAgKGJyb3dzZXJTZWFyY2hCb3hE
aXNwb3NlKToKKyAgICAgICAgKGJyb3dzZXJTZWFyY2hCb3hTaXplQWxsb2NhdGUpOgorICAgICAg
ICAoYnJvd3Nlcl9zZWFyY2hfYm94X2NsYXNzX2luaXQpOgorICAgICAgICAoYnJvd3Nlcl9zZWFy
Y2hfYm94X25ldyk6CisgICAgICAgIChicm93c2VyX3NlYXJjaF9ib3hfZ2V0X2VudHJ5KToKKyAg
ICAgICAgKiBNaW5pQnJvd3Nlci9ndGsvQnJvd3NlclNlYXJjaEJveC5oOiBSZW5hbWVkIGZyb20g
VG9vbHMvTWluaUJyb3dzZXIvZ3RrL0Jyb3dzZXJTZWFyY2hCYXIuaC4KKyAgICAgICAgKiBNaW5p
QnJvd3Nlci9ndGsvQnJvd3NlclNldHRpbmdzRGlhbG9nLmM6CisgICAgICAgIChicm93c2VyX3Nl
dHRpbmdzX2RpYWxvZ19pbml0KToKKyAgICAgICAgKGJyb3dzZXJfc2V0dGluZ3NfZGlhbG9nX25l
dyk6CisgICAgICAgICogTWluaUJyb3dzZXIvZ3RrL0Jyb3dzZXJTZXR0aW5nc0RpYWxvZy5oOgor
ICAgICAgICAqIE1pbmlCcm93c2VyL2d0ay9Ccm93c2VyVGFiLmM6CisgICAgICAgIChsb2FkQ2hh
bmdlZCk6CisgICAgICAgIChjcmVhdGVJbmZvQmFyUXVlc3Rpb25NZXNzYWdlKToKKyAgICAgICAg
KHRsc0Vycm9yc0RpYWxvZ1Jlc3BvbnNlKToKKyAgICAgICAgKGxvYWRGYWlsZWRXaXRoVExTZXJy
b3JzKToKKyAgICAgICAgKHBlcm1pc3Npb25SZXF1ZXN0RGlhbG9nUmVzcG9uc2UpOgorICAgICAg
ICAoZGVjaWRlUGVybWlzc2lvblJlcXVlc3QpOgorICAgICAgICAoY29sb3JDaG9vc2VyUmVxdWVz
dEZpbmlzaGVkKToKKyAgICAgICAgKHJ1bkNvbG9yQ2hvb3NlckNhbGxiYWNrKToKKyAgICAgICAg
KHRhYkNsb3NlQ2xpY2tlZCk6CisgICAgICAgIChicm93c2VyVGFiQ29uc3RydWN0ZWQpOgorICAg
ICAgICAoYnJvd3NlclRhYklzU2VhcmNoQmFyT3Blbik6CisgICAgICAgIChicm93c2VyX3RhYl9z
dGFydF9zZWFyY2gpOgorICAgICAgICAoYnJvd3Nlcl90YWJfc3RvcF9zZWFyY2gpOgorICAgICAg
ICAoYnJvd3Nlcl90YWJfZW50ZXJfZnVsbHNjcmVlbik6CisgICAgICAgIChicm93c2VyX3RhYl9s
ZWF2ZV9mdWxsc2NyZWVuKToKKyAgICAgICAgKiBNaW5pQnJvd3Nlci9ndGsvQnJvd3NlcldpbmRv
dy5jOgorICAgICAgICAoc2V0dGluZ3NDYWxsYmFjayk6CisgICAgICAgIChyZXNldEVudHJ5UHJv
Z3Jlc3MpOgorICAgICAgICAod2ViVmlld0xvYWRQcm9ncmVzc0NoYW5nZWQpOgorICAgICAgICAo
YnJvd3NlcldpbmRvd0NyZWF0ZUJhY2tGb3J3YXJkTWVudSk6CisgICAgICAgIChicm93c2VyV2lu
ZG93VXBkYXRlTmF2aWdhdGlvbk1lbnUpOgorICAgICAgICAobmF2aWdhdGlvbkJ1dHRvblByZXNz
ZWQpOgorICAgICAgICAobmF2aWdhdGlvbkJ1dHRvblByZXNzQ2FsbGJhY2spOgorICAgICAgICAo
c2Nyb2xsRXZlbnRDYWxsYmFjayk6CisgICAgICAgICh3ZWJWaWV3SXNMb2FkaW5nQ2hhbmdlZCk6
CisgICAgICAgIChzZWFyY2hDYWxsYmFjayk6CisgICAgICAgIChpbnNlcnRJbWFnZURpYWxvZ1Jl
c3BvbnNlKToKKyAgICAgICAgKGluc2VydEltYWdlQ29tbWFuZENhbGxiYWNrKToKKyAgICAgICAg
KGluc2VydExpbmtEaWFsb2dSZXNwb25zZSk6CisgICAgICAgIChpbnNlcnRMaW5rQ29tbWFuZENh
bGxiYWNrKToKKyAgICAgICAgKHR5cGluZ0F0dHJpYnV0ZXNDaGFuZ2VkKToKKyAgICAgICAgKGJy
b3dzZXJXaW5kb3dTYXZlU2Vzc2lvbik6CisgICAgICAgIChicm93c2VyV2luZG93RmluYWxpemUp
OgorICAgICAgICAoYnJvd3NlcldpbmRvd0Rpc3Bvc2UpOgorICAgICAgICAoYWRkVG9vbGJhckJ1
dHRvbik6CisgICAgICAgIChicm93c2VyV2luZG93U3dpdGNoVGFiKToKKyAgICAgICAgKGJyb3dz
ZXJXaW5kb3dUYWJBZGRlZE9yUmVtb3ZlZCk6CisgICAgICAgIChicm93c2VyV2luZG93QnVpbGRQ
b3BvdmVyTWVudSk6CisgICAgICAgIChicm93c2VyV2luZG93Q2xvc2VSZXF1ZXN0KToKKyAgICAg
ICAgKGJyb3dzZXJXaW5kb3dEZWxldGVFdmVudCk6CisgICAgICAgIChicm93c2VyX3dpbmRvd19j
bGFzc19pbml0KToKKyAgICAgICAgKGJyb3dzZXJfd2luZG93X2FwcGVuZF92aWV3KToKKyAgICAg
ICAgKGJyb3dzZXJfd2luZG93X3NldF9iYWNrZ3JvdW5kX2NvbG9yKToKKyAgICAgICAgKiBNaW5p
QnJvd3Nlci9ndGsvQ01ha2VMaXN0cy50eHQ6CisKIDIwMjAtMDYtMDggIENhcmxvcyBHYXJjaWEg
Q2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgogCiAgICAgICAgIFtHVEtdIE1pbmlCcm93c2Vy
OiBzdG9wIHVzaW5nIEd0a1Rvb2xiYXIKZGlmZiAtLWdpdCBhL1Rvb2xzL01pbmlCcm93c2VyL2d0
ay9Ccm93c2VyQ2VsbFJlbmRlcmVyVmFyaWFudC5jIGIvVG9vbHMvTWluaUJyb3dzZXIvZ3RrL0Jy
b3dzZXJDZWxsUmVuZGVyZXJWYXJpYW50LmMKaW5kZXggNmY4YTIzY2Y3NjU2Li5jY2QxZjJlOTdm
OGEgMTAwNjQ0Ci0tLSBhL1Rvb2xzL01pbmlCcm93c2VyL2d0ay9Ccm93c2VyQ2VsbFJlbmRlcmVy
VmFyaWFudC5jCisrKyBiL1Rvb2xzL01pbmlCcm93c2VyL2d0ay9Ccm93c2VyQ2VsbFJlbmRlcmVy
VmFyaWFudC5jCkBAIC0yNyw4ICsyNyw2IEBACiAjaW5jbHVkZSAiQnJvd3Nlck1hcnNoYWwuaCIK
ICNpbmNsdWRlIDxlcnJuby5oPgogCi0jaWYgIUdUS19DSEVDS19WRVJTSU9OKDMsIDk4LCAwKQot
CiBlbnVtIHsKICAgICBQUk9QXzAsCiAKQEAgLTIxMiw2ICsyMTAsMTYgQEAgc3RhdGljIGdib29s
ZWFuIGJyb3dzZXJDZWxsUmVuZGVyZXJWYXJpYW50Q2VsbFJlbmRlcmVyQWN0aXZhdGUoR3RrQ2Vs
bFJlbmRlcmVyICoKICAgICByZXR1cm4gVFJVRTsKIH0KIAorI2lmIEdUS19DSEVDS19WRVJTSU9O
KDMsIDk4LCA1KQorc3RhdGljIHZvaWQgYnJvd3NlckNlbGxSZW5kZXJlclZhcmlhbnRDZWxsUmVu
ZGVyZXJTbmFwc2hvdChHdGtDZWxsUmVuZGVyZXIgKmNlbGwsIEd0a1NuYXBzaG90ICpzbmFwc2hv
dCwgR3RrV2lkZ2V0ICp3aWRnZXQsIGNvbnN0IEdka1JlY3RhbmdsZSAqYmdBcmVhLCBjb25zdCBH
ZGtSZWN0YW5nbGUgKmNlbGxBcmVhLCBHdGtDZWxsUmVuZGVyZXJTdGF0ZSBmbGFncykKK3sKKyAg
ICBHdGtDZWxsUmVuZGVyZXIgKnJlbmRlcmVyID0gYnJvd3NlckNlbGxSZW5kZXJlclZhcmlhbnRH
ZXRSZW5kZXJlckZvclZhbHVlKEJST1dTRVJfQ0VMTF9SRU5ERVJFUl9WQVJJQU5UKGNlbGwpKTsK
KyAgICBpZiAoIXJlbmRlcmVyKQorICAgICAgICByZXR1cm47CisKKyAgICBHVEtfQ0VMTF9SRU5E
RVJFUl9HRVRfQ0xBU1MocmVuZGVyZXIpLT5zbmFwc2hvdChyZW5kZXJlciwgc25hcHNob3QsIHdp
ZGdldCwgYmdBcmVhLCBjZWxsQXJlYSwgZmxhZ3MpOworfQorI2Vsc2UKIHN0YXRpYyB2b2lkIGJy
b3dzZXJDZWxsUmVuZGVyZXJWYXJpYW50Q2VsbFJlbmRlcmVyUmVuZGVyKEd0a0NlbGxSZW5kZXJl
ciAqY2VsbCwgY2Fpcm9fdCAqY3IsIEd0a1dpZGdldCAqd2lkZ2V0LCBjb25zdCBHZGtSZWN0YW5n
bGUgKmJnQXJlYSwgY29uc3QgR2RrUmVjdGFuZ2xlICpjZWxsQXJlYSwgR3RrQ2VsbFJlbmRlcmVy
U3RhdGUgZmxhZ3MpCiB7CiAgICAgR3RrQ2VsbFJlbmRlcmVyICpyZW5kZXJlciA9IGJyb3dzZXJD
ZWxsUmVuZGVyZXJWYXJpYW50R2V0UmVuZGVyZXJGb3JWYWx1ZShCUk9XU0VSX0NFTExfUkVOREVS
RVJfVkFSSUFOVChjZWxsKSk7CkBAIC0yMjAsNiArMjI4LDcgQEAgc3RhdGljIHZvaWQgYnJvd3Nl
ckNlbGxSZW5kZXJlclZhcmlhbnRDZWxsUmVuZGVyZXJSZW5kZXIoR3RrQ2VsbFJlbmRlcmVyICpj
ZWxsLAogCiAgICAgR1RLX0NFTExfUkVOREVSRVJfR0VUX0NMQVNTKHJlbmRlcmVyKS0+cmVuZGVy
KHJlbmRlcmVyLCBjciwgd2lkZ2V0LCBiZ0FyZWEsIGNlbGxBcmVhLCBmbGFncyk7CiB9CisjZW5k
aWYKIAogc3RhdGljIEd0a0NlbGxFZGl0YWJsZSAqYnJvd3NlckNlbGxSZW5kZXJlclZhcmlhbnRD
ZWxsUmVuZGVyZXJTdGFydEVkaXRpbmcoR3RrQ2VsbFJlbmRlcmVyICpjZWxsLCBHZGtFdmVudCAq
ZXZlbnQsIEd0a1dpZGdldCAqd2lkZ2V0LCBjb25zdCBnY2hhciAqcGF0aCwgY29uc3QgR2RrUmVj
dGFuZ2xlICpiZ0FyZWEsIGNvbnN0IEdka1JlY3RhbmdsZSAqY2VsbEFyZWEsIEd0a0NlbGxSZW5k
ZXJlclN0YXRlIGZsYWdzKQogewpAQCAtMzA4LDcgKzMxNywxMSBAQCBzdGF0aWMgdm9pZCBicm93
c2VyX2NlbGxfcmVuZGVyZXJfdmFyaWFudF9jbGFzc19pbml0KEJyb3dzZXJDZWxsUmVuZGVyZXJW
YXJpYW50QwogICAgIGdvYmplY3RDbGFzcy0+ZmluYWxpemUgPSBicm93c2VyQ2VsbFJlbmRlcmVy
VmFyaWFudEZpbmFsaXplOwogCiAgICAgY2VsbFJlbmRlcmVyQ2xhc3MtPmFjdGl2YXRlID0gYnJv
d3NlckNlbGxSZW5kZXJlclZhcmlhbnRDZWxsUmVuZGVyZXJBY3RpdmF0ZTsKKyNpZiBHVEtfQ0hF
Q0tfVkVSU0lPTigzLCA5OCwgNSkKKyAgICBjZWxsUmVuZGVyZXJDbGFzcy0+c25hcHNob3QgPSBi
cm93c2VyQ2VsbFJlbmRlcmVyVmFyaWFudENlbGxSZW5kZXJlclNuYXBzaG90OworI2Vsc2UKICAg
ICBjZWxsUmVuZGVyZXJDbGFzcy0+cmVuZGVyID0gYnJvd3NlckNlbGxSZW5kZXJlclZhcmlhbnRD
ZWxsUmVuZGVyZXJSZW5kZXI7CisjZW5kaWYKICAgICBjZWxsUmVuZGVyZXJDbGFzcy0+c3RhcnRf
ZWRpdGluZyA9IGJyb3dzZXJDZWxsUmVuZGVyZXJWYXJpYW50Q2VsbFJlbmRlcmVyU3RhcnRFZGl0
aW5nOwogICAgIGNlbGxSZW5kZXJlckNsYXNzLT5nZXRfcHJlZmVycmVkX3dpZHRoID0gYnJvd3Nl
ckNlbGxSZW5kZXJlclZhcmlhbnRDZWxsUmVuZGVyZXJHZXRQcmVmZXJyZWRXaWR0aDsKICAgICBj
ZWxsUmVuZGVyZXJDbGFzcy0+Z2V0X3ByZWZlcnJlZF9oZWlnaHQgPSBicm93c2VyQ2VsbFJlbmRl
cmVyVmFyaWFudENlbGxSZW5kZXJlckdldFByZWZlcnJlZEhlaWdodDsKQEAgLTM0Niw0ICszNTks
MyBAQCBHdGtDZWxsUmVuZGVyZXIgKmJyb3dzZXJfY2VsbF9yZW5kZXJlcl92YXJpYW50X25ldyh2
b2lkKQogICAgIHJldHVybiBHVEtfQ0VMTF9SRU5ERVJFUihnX29iamVjdF9uZXcoQlJPV1NFUl9U
WVBFX0NFTExfUkVOREVSRVJfVkFSSUFOVCwgTlVMTCkpOwogfQogCi0jZW5kaWYKZGlmZiAtLWdp
dCBhL1Rvb2xzL01pbmlCcm93c2VyL2d0ay9Ccm93c2VyQ2VsbFJlbmRlcmVyVmFyaWFudC5oIGIv
VG9vbHMvTWluaUJyb3dzZXIvZ3RrL0Jyb3dzZXJDZWxsUmVuZGVyZXJWYXJpYW50LmgKaW5kZXgg
YTc5M2ExYTc2MDBkLi40ZmNlM2JiNjA2YTcgMTAwNjQ0Ci0tLSBhL1Rvb2xzL01pbmlCcm93c2Vy
L2d0ay9Ccm93c2VyQ2VsbFJlbmRlcmVyVmFyaWFudC5oCisrKyBiL1Rvb2xzL01pbmlCcm93c2Vy
L2d0ay9Ccm93c2VyQ2VsbFJlbmRlcmVyVmFyaWFudC5oCkBAIC0yOCw4ICsyOCw2IEBACiAKICNp
bmNsdWRlIDxndGsvZ3RrLmg+CiAKLSNpZiAhR1RLX0NIRUNLX1ZFUlNJT04oMywgOTgsIDApCi0K
IEdfQkVHSU5fREVDTFMKIAogI2RlZmluZSBCUk9XU0VSX1RZUEVfQ0VMTF9SRU5ERVJFUl9WQVJJ
QU5UICAgICAgICAgICAgKGJyb3dzZXJfY2VsbF9yZW5kZXJlcl92YXJpYW50X2dldF90eXBlKCkp
CkBAIC00OSw1ICs0NywzIEBAIEd0a0NlbGxSZW5kZXJlciogYnJvd3Nlcl9jZWxsX3JlbmRlcmVy
X3ZhcmlhbnRfbmV3KHZvaWQpOwogR19FTkRfREVDTFMKIAogI2VuZGlmCi0KLSNlbmRpZgpkaWZm
IC0tZ2l0IGEvVG9vbHMvTWluaUJyb3dzZXIvZ3RrL0Jyb3dzZXJTZWFyY2hCYXIuYyBiL1Rvb2xz
L01pbmlCcm93c2VyL2d0ay9Ccm93c2VyU2VhcmNoQmFyLmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDQ0MWE3YzcxYWJjNi4uMDAwMDAwMDAwMDAwCi0tLSBhL1Rvb2xzL01pbmlCcm93
c2VyL2d0ay9Ccm93c2VyU2VhcmNoQmFyLmMKKysrIC9kZXYvbnVsbApAQCAtMSwyNjggKzAsMCBA
QAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMyBJZ2FsaWEgUy5MLgotICoKLSAqIFJlZGlzdHJp
YnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91
dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxv
d2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNv
dXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwg
dGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAq
IDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJv
dmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9v
ciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAq
IFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJV
VE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMg
Q09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9S
IEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFE
VklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5j
bHVkZSAiY21ha2Vjb25maWcuaCIKLSNpbmNsdWRlICJCcm93c2VyU2VhcmNoQmFyLmgiCi0KLSNp
ZiAhR1RLX0NIRUNLX1ZFUlNJT04oMywgOTgsIDApCi0KLXN0cnVjdCBfQnJvd3NlclNlYXJjaEJh
ciB7Ci0gICAgR3RrU2VhcmNoQmFyIHBhcmVudDsKLQotICAgIFdlYktpdFdlYlZpZXcgKndlYlZp
ZXc7Ci0gICAgR3RrV2lkZ2V0ICplbnRyeTsKLSAgICBHdGtXaWRnZXQgKnByZXZCdXR0b247Ci0g
ICAgR3RrV2lkZ2V0ICpuZXh0QnV0dG9uOwotICAgIEdNZW51ICpvcHRpb25zTWVudTsKLSAgICBH
dGtXaWRnZXQgKmNhc2VDaGVja0J1dHRvbjsKLSAgICBHdGtXaWRnZXQgKmJlZ2dpbmlnV29yZENo
ZWNrQnV0dG9uOwotICAgIEd0a1dpZGdldCAqY2FwaXRhbEFzQmVnZ2luaWdXb3JkQ2hlY2tCdXR0
b247Ci19OwotCi1HX0RFRklORV9UWVBFKEJyb3dzZXJTZWFyY2hCYXIsIGJyb3dzZXJfc2VhcmNo
X2JhciwgR1RLX1RZUEVfU0VBUkNIX0JBUikKLQotc3RhdGljIHZvaWQgc2V0RmFpbGVkU3R5bGVG
b3JFbnRyeShCcm93c2VyU2VhcmNoQmFyICpzZWFyY2hCYXIsIGdib29sZWFuIGZhaWxlZFNlYXJj
aCkKLXsKLSAgICBpZiAoZmFpbGVkU2VhcmNoKQotICAgICAgICBndGtfc3R5bGVfY29udGV4dF9h
ZGRfY2xhc3MoZ3RrX3dpZGdldF9nZXRfc3R5bGVfY29udGV4dChzZWFyY2hCYXItPmVudHJ5KSwg
InNlYXJjaC1mYWlsZWQiKTsKLSAgICBlbHNlCi0gICAgICAgIGd0a19zdHlsZV9jb250ZXh0X3Jl
bW92ZV9jbGFzcyhndGtfd2lkZ2V0X2dldF9zdHlsZV9jb250ZXh0KHNlYXJjaEJhci0+ZW50cnkp
LCAic2VhcmNoLWZhaWxlZCIpOwotfQotCi1zdGF0aWMgdm9pZCBkb1NlYXJjaChCcm93c2VyU2Vh
cmNoQmFyICpzZWFyY2hCYXIpCi17Ci0gICAgR3RrRW50cnkgKmVudHJ5ID0gR1RLX0VOVFJZKHNl
YXJjaEJhci0+ZW50cnkpOwotICAgIGlmICghZ3RrX2VudHJ5X2dldF90ZXh0X2xlbmd0aChlbnRy
eSkpIHsKLSAgICAgICAgc2V0RmFpbGVkU3R5bGVGb3JFbnRyeShzZWFyY2hCYXIsIEZBTFNFKTsK
LSAgICAgICAgd2Via2l0X2ZpbmRfY29udHJvbGxlcl9zZWFyY2hfZmluaXNoKHdlYmtpdF93ZWJf
dmlld19nZXRfZmluZF9jb250cm9sbGVyKHNlYXJjaEJhci0+d2ViVmlldykpOwotICAgICAgICBy
ZXR1cm47Ci0gICAgfQotCi0gICAgV2ViS2l0RmluZE9wdGlvbnMgb3B0aW9ucyA9IFdFQktJVF9G
SU5EX09QVElPTlNfV1JBUF9BUk9VTkQ7Ci0gICAgR0FjdGlvbkdyb3VwICphY3Rpb25Hcm91cCA9
IGd0a193aWRnZXRfZ2V0X2FjdGlvbl9ncm91cChHVEtfV0lER0VUKHNlYXJjaEJhciksICJmaW5k
Iik7Ci0gICAgR0FjdGlvbiAqYWN0aW9uID0gZ19hY3Rpb25fbWFwX2xvb2t1cF9hY3Rpb24oR19B
Q1RJT05fTUFQKGFjdGlvbkdyb3VwKSwgImNhc2Utc2Vuc2l0aXZlIik7Ci0gICAgR1ZhcmlhbnQg
KnN0YXRlID0gZ19hY3Rpb25fZ2V0X3N0YXRlKGFjdGlvbik7Ci0gICAgaWYgKCFnX3ZhcmlhbnRf
Z2V0X2Jvb2xlYW4oc3RhdGUpKQotICAgICAgICBvcHRpb25zIHw9IFdFQktJVF9GSU5EX09QVElP
TlNfQ0FTRV9JTlNFTlNJVElWRTsKLSAgICBnX3ZhcmlhbnRfdW5yZWYoc3RhdGUpOwotCi0gICAg
YWN0aW9uID0gZ19hY3Rpb25fbWFwX2xvb2t1cF9hY3Rpb24oR19BQ1RJT05fTUFQKGFjdGlvbkdy
b3VwKSwgImJlZ2lubmlnLXdvcmQiKTsKLSAgICBzdGF0ZSA9IGdfYWN0aW9uX2dldF9zdGF0ZShh
Y3Rpb24pOwotICAgIGlmIChnX3ZhcmlhbnRfZ2V0X2Jvb2xlYW4oc3RhdGUpKQotICAgICAgICBv
cHRpb25zIHw9IFdFQktJVF9GSU5EX09QVElPTlNfQVRfV09SRF9TVEFSVFM7Ci0gICAgZ192YXJp
YW50X3VucmVmKHN0YXRlKTsKLQotICAgIGFjdGlvbiA9IGdfYWN0aW9uX21hcF9sb29rdXBfYWN0
aW9uKEdfQUNUSU9OX01BUChhY3Rpb25Hcm91cCksICJjYXBpdGFsLWFzLWJlZ2lubmlnLXdvcmQi
KTsKLSAgICBzdGF0ZSA9IGdfYWN0aW9uX2dldF9zdGF0ZShhY3Rpb24pOwotICAgIGlmIChnX3Zh
cmlhbnRfZ2V0X2Jvb2xlYW4oc3RhdGUpKQotICAgICAgICBvcHRpb25zIHw9IFdFQktJVF9GSU5E
X09QVElPTlNfVFJFQVRfTUVESUFMX0NBUElUQUxfQVNfV09SRF9TVEFSVDsKLSAgICBnX3Zhcmlh
bnRfdW5yZWYoc3RhdGUpOwotCi0gICAgY29uc3QgZ2NoYXIgKnRleHQgPSBndGtfZW50cnlfZ2V0
X3RleHQoZW50cnkpOwotICAgIHdlYmtpdF9maW5kX2NvbnRyb2xsZXJfc2VhcmNoKHdlYmtpdF93
ZWJfdmlld19nZXRfZmluZF9jb250cm9sbGVyKHNlYXJjaEJhci0+d2ViVmlldyksIHRleHQsIG9w
dGlvbnMsIEdfTUFYVUlOVCk7Ci19Ci0KLXN0YXRpYyB2b2lkIHNlYXJjaE5leHQoQnJvd3NlclNl
YXJjaEJhciAqc2VhcmNoQmFyKQotewotICAgIHdlYmtpdF9maW5kX2NvbnRyb2xsZXJfc2VhcmNo
X25leHQod2Via2l0X3dlYl92aWV3X2dldF9maW5kX2NvbnRyb2xsZXIoc2VhcmNoQmFyLT53ZWJW
aWV3KSk7Ci19Ci0KLXN0YXRpYyB2b2lkIHNlYXJjaFByZXZpb3VzKEJyb3dzZXJTZWFyY2hCYXIg
KnNlYXJjaEJhcikKLXsKLSAgICB3ZWJraXRfZmluZF9jb250cm9sbGVyX3NlYXJjaF9wcmV2aW91
cyh3ZWJraXRfd2ViX3ZpZXdfZ2V0X2ZpbmRfY29udHJvbGxlcihzZWFyY2hCYXItPndlYlZpZXcp
KTsKLX0KLQotc3RhdGljIHZvaWQgc2VhcmNoRW50cnlNZW51SWNvblByZXNzZWRDYWxsYmFjayhC
cm93c2VyU2VhcmNoQmFyICpzZWFyY2hCYXIsIEd0a0VudHJ5SWNvblBvc2l0aW9uIGljb25Qb3Np
dGlvbiwgR2RrRXZlbnQgKmV2ZW50KQotewotICAgIGlmIChpY29uUG9zaXRpb24gIT0gR1RLX0VO
VFJZX0lDT05fUFJJTUFSWSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgR3RrV2lkZ2V0ICpwb3Bv
dmVyID0gZ3RrX3BvcG92ZXJfbmV3X2Zyb21fbW9kZWwoc2VhcmNoQmFyLT5lbnRyeSwgR19NRU5V
X01PREVMKHNlYXJjaEJhci0+b3B0aW9uc01lbnUpKTsKLSAgICBHZGtSZWN0YW5nbGUgcmVjdDsK
LSAgICBndGtfZW50cnlfZ2V0X2ljb25fYXJlYShHVEtfRU5UUlkoc2VhcmNoQmFyLT5lbnRyeSks
IEdUS19FTlRSWV9JQ09OX1BSSU1BUlksICZyZWN0KTsKLSAgICBndGtfcG9wb3Zlcl9zZXRfcG9p
bnRpbmdfdG8oR1RLX1BPUE9WRVIocG9wb3ZlciksICZyZWN0KTsKLSAgICBndGtfcG9wb3Zlcl9z
ZXRfcG9zaXRpb24oR1RLX1BPUE9WRVIocG9wb3ZlciksIEdUS19QT1NfQk9UVE9NKTsKLSAgICBn
dGtfcG9wb3Zlcl9wb3B1cChHVEtfUE9QT1ZFUihwb3BvdmVyKSk7Ci19Ci0KLXN0YXRpYyB2b2lk
IHNlYXJjaEVudHJ5Q2hhbmdlZENhbGxiYWNrKEd0a1NlYXJjaEVudHJ5ICplbnRyeSwgQnJvd3Nl
clNlYXJjaEJhciAqc2VhcmNoQmFyKQotewotICAgIGRvU2VhcmNoKHNlYXJjaEJhcik7Ci19Ci0K
LXN0YXRpYyB2b2lkIHNlYXJjaEVudHJ5QWN0aXZhdGVkQ2FsbGJhY2soQnJvd3NlclNlYXJjaEJh
ciAqc2VhcmNoQmFyKQotewotICAgIHNlYXJjaE5leHQoc2VhcmNoQmFyKTsKLX0KLQotc3RhdGlj
IHZvaWQgc2VhcmNoUHJldmlvdXNCdXR0b25DYWxsYmFjayhHU2ltcGxlQWN0aW9uICphY3Rpb24s
IEdWYXJpYW50ICpwYXJhbWV0ZXIsIGdwb2ludGVyIHVzZXJEYXRhKQotewotICAgIHNlYXJjaFBy
ZXZpb3VzKEJST1dTRVJfU0VBUkNIX0JBUih1c2VyRGF0YSkpOwotfQotCi1zdGF0aWMgdm9pZCBz
ZWFyY2hOZXh0QnV0dG9uQ2FsbGJhY2soR1NpbXBsZUFjdGlvbiAqYWN0aW9uLCBHVmFyaWFudCAq
cGFyYW1ldGVyLCBncG9pbnRlciB1c2VyRGF0YSkKLXsKLSAgICBzZWFyY2hOZXh0KEJST1dTRVJf
U0VBUkNIX0JBUih1c2VyRGF0YSkpOwotfQotCi1zdGF0aWMgdm9pZCBzZWFyY2hNZW51Q2hlY2tC
dXR0b25Ub2dnbGVkQ2FsbGJhY2soR1NpbXBsZUFjdGlvbiAqYWN0aW9uLCBHVmFyaWFudCAqc3Rh
dGUsIGdwb2ludGVyIHVzZXJEYXRhKQotewotICAgIGdfc2ltcGxlX2FjdGlvbl9zZXRfc3RhdGUo
YWN0aW9uLCBzdGF0ZSk7Ci0gICAgZG9TZWFyY2goQlJPV1NFUl9TRUFSQ0hfQkFSKHVzZXJEYXRh
KSk7Ci19Ci0KLXN0YXRpYyB2b2lkIGZpbmRDb250cm9sbGVyRmFpbGVkVG9GaW5kVGV4dENhbGxi
YWNrKEJyb3dzZXJTZWFyY2hCYXIgKnNlYXJjaEJhcikKLXsKLSAgICBzZXRGYWlsZWRTdHlsZUZv
ckVudHJ5KHNlYXJjaEJhciwgVFJVRSk7Ci19Ci0KLXN0YXRpYyB2b2lkIGZpbmRDb250cm9sbGVy
Rm91bmRUZXh0Q2FsbGJhY2soQnJvd3NlclNlYXJjaEJhciAqc2VhcmNoQmFyKQotewotICAgIHNl
dEZhaWxlZFN0eWxlRm9yRW50cnkoc2VhcmNoQmFyLCBGQUxTRSk7Ci19Ci0KLXN0YXRpYyBjb25z
dCBHQWN0aW9uRW50cnkgYWN0aW9uc1tdID0gewotICAgIHsgIm5leHQiLCBzZWFyY2hOZXh0QnV0
dG9uQ2FsbGJhY2ssIE5VTEwsIE5VTEwsIE5VTEwsIHsgMCB9IH0sCi0gICAgeyAicHJldmlvdXMi
LCBzZWFyY2hQcmV2aW91c0J1dHRvbkNhbGxiYWNrLCBOVUxMLCBOVUxMLCBOVUxMLCB7IDAgfSB9
LAotICAgIHsgImNhc2Utc2Vuc2l0aXZlIiwgTlVMTCwgTlVMTCwgImZhbHNlIiwgc2VhcmNoTWVu
dUNoZWNrQnV0dG9uVG9nZ2xlZENhbGxiYWNrLCB7IDAgfSB9LAotICAgIHsgImJlZ2lubmlnLXdv
cmQiLCBOVUxMLCBOVUxMLCAiZmFsc2UiLCBzZWFyY2hNZW51Q2hlY2tCdXR0b25Ub2dnbGVkQ2Fs
bGJhY2ssIHsgMCB9IH0sCi0gICAgeyAiY2FwaXRhbC1hcy1iZWdpbm5pZy13b3JkIiwgTlVMTCwg
TlVMTCwgImZhbHNlIiwgc2VhcmNoTWVudUNoZWNrQnV0dG9uVG9nZ2xlZENhbGxiYWNrLCB7IDAg
fSB9Ci19OwotCi1zdGF0aWMgdm9pZCBicm93c2VyX3NlYXJjaF9iYXJfaW5pdChCcm93c2VyU2Vh
cmNoQmFyICpzZWFyY2hCYXIpCi17Ci0gICAgR1NpbXBsZUFjdGlvbkdyb3VwICphY3Rpb25Hcm91
cCA9IGdfc2ltcGxlX2FjdGlvbl9ncm91cF9uZXcoKTsKLSAgICBnX2FjdGlvbl9tYXBfYWRkX2Fj
dGlvbl9lbnRyaWVzKEdfQUNUSU9OX01BUChhY3Rpb25Hcm91cCksIGFjdGlvbnMsIEdfTl9FTEVN
RU5UUyhhY3Rpb25zKSwgc2VhcmNoQmFyKTsKLSAgICBndGtfd2lkZ2V0X2luc2VydF9hY3Rpb25f
Z3JvdXAoR1RLX1dJREdFVChzZWFyY2hCYXIpLCAiZmluZCIsIEdfQUNUSU9OX0dST1VQKGFjdGlv
bkdyb3VwKSk7Ci0gICAgZ19vYmplY3RfdW5yZWYoYWN0aW9uR3JvdXApOwotCi0gICAgR3RrV2lk
Z2V0ICpoQm94ID0gZ3RrX2JveF9uZXcoR1RLX09SSUVOVEFUSU9OX0hPUklaT05UQUwsIDApOwot
ICAgIEd0a1N0eWxlQ29udGV4dCAqc3R5bGVDb250ZXh0ID0gZ3RrX3dpZGdldF9nZXRfc3R5bGVf
Y29udGV4dChoQm94KTsKLSAgICBndGtfc3R5bGVfY29udGV4dF9hZGRfY2xhc3Moc3R5bGVDb250
ZXh0LCBHVEtfU1RZTEVfQ0xBU1NfTElOS0VEKTsKLSAgICBndGtfc3R5bGVfY29udGV4dF9hZGRf
Y2xhc3Moc3R5bGVDb250ZXh0LCBHVEtfU1RZTEVfQ0xBU1NfUkFJU0VEKTsKLQotICAgIHNlYXJj
aEJhci0+ZW50cnkgPSBndGtfc2VhcmNoX2VudHJ5X25ldygpOwotICAgIGd0a19lbnRyeV9zZXRf
aWNvbl9hY3RpdmF0YWJsZShHVEtfRU5UUlkoc2VhcmNoQmFyLT5lbnRyeSksIEdUS19FTlRSWV9J
Q09OX1BSSU1BUlksIFRSVUUpOwotICAgIGd0a19lbnRyeV9zZXRfaWNvbl9zZW5zaXRpdmUoR1RL
X0VOVFJZKHNlYXJjaEJhci0+ZW50cnkpLCBHVEtfRU5UUllfSUNPTl9QUklNQVJZLCBUUlVFKTsK
LSAgICBndGtfZW50cnlfc2V0X2ljb25fdG9vbHRpcF90ZXh0KEdUS19FTlRSWShzZWFyY2hCYXIt
PmVudHJ5KSwgR1RLX0VOVFJZX0lDT05fUFJJTUFSWSwgIlNlYXJjaCBvcHRpb25zIik7Ci0gICAg
Z3RrX2JveF9wYWNrX3N0YXJ0KEdUS19CT1goaEJveCksIHNlYXJjaEJhci0+ZW50cnksIFRSVUUs
IFRSVUUsIDApOwotICAgIGd0a193aWRnZXRfc2hvdyhzZWFyY2hCYXItPmVudHJ5KTsKLQotICAg
IEd0a0Nzc1Byb3ZpZGVyICpjc3NQcm92aWRlciA9IGd0a19jc3NfcHJvdmlkZXJfbmV3KCk7Ci0g
ICAgZ3RrX2Nzc19wcm92aWRlcl9sb2FkX2Zyb21fZGF0YShjc3NQcm92aWRlciwgIi5zZWFyY2gt
ZmFpbGVkIHsgYmFja2dyb3VuZC1jb2xvcjogI2ZmNjY2NjsgfSIsIC0xLCBOVUxMKTsKLSAgICBn
dGtfc3R5bGVfY29udGV4dF9hZGRfcHJvdmlkZXIoZ3RrX3dpZGdldF9nZXRfc3R5bGVfY29udGV4
dChzZWFyY2hCYXItPmVudHJ5KSwgR1RLX1NUWUxFX1BST1ZJREVSKGNzc1Byb3ZpZGVyKSwgR1RL
X1NUWUxFX1BST1ZJREVSX1BSSU9SSVRZX0FQUExJQ0FUSU9OKTsKLSAgICBnX29iamVjdF91bnJl
Zihjc3NQcm92aWRlcik7Ci0KLSAgICBzZWFyY2hCYXItPnByZXZCdXR0b24gPSBndGtfYnV0dG9u
X25ld19mcm9tX2ljb25fbmFtZSgiZ28tdXAtc3ltYm9saWMiLCBHVEtfSUNPTl9TSVpFX01FTlUp
OwotICAgIEd0a0J1dHRvbiAqYnV0dG9uID0gR1RLX0JVVFRPTihzZWFyY2hCYXItPnByZXZCdXR0
b24pOwotICAgIGd0a19hY3Rpb25hYmxlX3NldF9hY3Rpb25fbmFtZShHVEtfQUNUSU9OQUJMRShi
dXR0b24pLCAiZmluZC5wcmV2aW91cyIpOwotICAgIGd0a193aWRnZXRfc2V0X2ZvY3VzX29uX2Ns
aWNrKHNlYXJjaEJhci0+cHJldkJ1dHRvbiwgRkFMU0UpOwotICAgIGd0a19ib3hfcGFja19zdGFy
dChHVEtfQk9YKGhCb3gpLCBzZWFyY2hCYXItPnByZXZCdXR0b24sIEZBTFNFLCBGQUxTRSwgMCk7
Ci0gICAgZ3RrX3dpZGdldF9zaG93KHNlYXJjaEJhci0+cHJldkJ1dHRvbik7Ci0KLSAgICBzZWFy
Y2hCYXItPm5leHRCdXR0b24gPSBndGtfYnV0dG9uX25ld19mcm9tX2ljb25fbmFtZSgiZ28tZG93
bi1zeW1ib2xpYyIsIEdUS19JQ09OX1NJWkVfTUVOVSk7Ci0gICAgYnV0dG9uID0gR1RLX0JVVFRP
TihzZWFyY2hCYXItPm5leHRCdXR0b24pOwotICAgIGd0a19hY3Rpb25hYmxlX3NldF9hY3Rpb25f
bmFtZShHVEtfQUNUSU9OQUJMRShidXR0b24pLCAiZmluZC5uZXh0Iik7Ci0gICAgZ3RrX3dpZGdl
dF9zZXRfZm9jdXNfb25fY2xpY2soc2VhcmNoQmFyLT5uZXh0QnV0dG9uLCBGQUxTRSk7Ci0gICAg
Z3RrX2JveF9wYWNrX3N0YXJ0KEdUS19CT1goaEJveCksIHNlYXJjaEJhci0+bmV4dEJ1dHRvbiwg
RkFMU0UsIEZBTFNFLCAwKTsKLSAgICBndGtfd2lkZ2V0X3Nob3coc2VhcmNoQmFyLT5uZXh0QnV0
dG9uKTsKLQotICAgIGd0a19jb250YWluZXJfYWRkKEdUS19DT05UQUlORVIoc2VhcmNoQmFyKSwg
aEJveCk7Ci0gICAgZ3RrX3dpZGdldF9zaG93KGhCb3gpOwotICAgIGd0a19zZWFyY2hfYmFyX2Nv
bm5lY3RfZW50cnkoR1RLX1NFQVJDSF9CQVIoc2VhcmNoQmFyKSwgR1RLX0VOVFJZKHNlYXJjaEJh
ci0+ZW50cnkpKTsKLSAgICBndGtfd2lkZ2V0X3Nob3coR1RLX1dJREdFVChzZWFyY2hCYXIpKTsK
LQotICAgIHNlYXJjaEJhci0+b3B0aW9uc01lbnUgPSBnX21lbnVfbmV3KCk7Ci0gICAgZ19tZW51
X2FwcGVuZChzZWFyY2hCYXItPm9wdGlvbnNNZW51LCAiQ2Ffc2Ugc2Vuc2l0aXZlIiwgImZpbmQu
Y2FzZS1zZW5zaXRpdmUiKTsKLSAgICBnX21lbnVfYXBwZW5kKHNlYXJjaEJhci0+b3B0aW9uc01l
bnUsICJPbmx5IGF0IHRoZSBfYmVnaW5uaW5nIG9mIHdvcmRzIiwgImZpbmQuYmVnaW5uaWctd29y
ZCIpOwotICAgIGdfbWVudV9hcHBlbmQoc2VhcmNoQmFyLT5vcHRpb25zTWVudSwgIkNhcGl0YWwg
X2Fsd2F5cyBhcyBiZWdpbm5pbmcgb2Ygd29yZCIsICJmaW5kLmNhcGl0YWwtYXMtYmVnaW5uaWct
d29yZCIpOwotCi0gICAgZ19zaWduYWxfY29ubmVjdF9zd2FwcGVkKHNlYXJjaEJhci0+ZW50cnks
ICJpY29uLXByZXNzIiwgR19DQUxMQkFDSyhzZWFyY2hFbnRyeU1lbnVJY29uUHJlc3NlZENhbGxi
YWNrKSwgc2VhcmNoQmFyKTsKLSAgICBnX3NpZ25hbF9jb25uZWN0X2FmdGVyKHNlYXJjaEJhci0+
ZW50cnksICJzZWFyY2gtY2hhbmdlZCIsIEdfQ0FMTEJBQ0soc2VhcmNoRW50cnlDaGFuZ2VkQ2Fs
bGJhY2spLCBzZWFyY2hCYXIpOwotICAgIGdfc2lnbmFsX2Nvbm5lY3Rfc3dhcHBlZChzZWFyY2hC
YXItPmVudHJ5LCAiYWN0aXZhdGUiLCBHX0NBTExCQUNLKHNlYXJjaEVudHJ5QWN0aXZhdGVkQ2Fs
bGJhY2spLCBzZWFyY2hCYXIpOwotfQotCi1zdGF0aWMgdm9pZCBicm93c2VyU2VhcmNoQmFyRmlu
YWxpemUoR09iamVjdCAqZ09iamVjdCkKLXsKLSAgICBCcm93c2VyU2VhcmNoQmFyICpzZWFyY2hC
YXIgPSBCUk9XU0VSX1NFQVJDSF9CQVIoZ09iamVjdCk7Ci0KLSAgICBpZiAoc2VhcmNoQmFyLT53
ZWJWaWV3KSB7Ci0gICAgICAgIGdfb2JqZWN0X3VucmVmKHNlYXJjaEJhci0+d2ViVmlldyk7Ci0g
ICAgICAgIHNlYXJjaEJhci0+d2ViVmlldyA9IE5VTEw7Ci0gICAgfQotCi0gICAgaWYgKHNlYXJj
aEJhci0+b3B0aW9uc01lbnUpIHsKLSAgICAgICAgZ19vYmplY3RfdW5yZWYoc2VhcmNoQmFyLT5v
cHRpb25zTWVudSk7Ci0gICAgICAgIHNlYXJjaEJhci0+b3B0aW9uc01lbnUgPSBOVUxMOwotICAg
IH0KLQotICAgIEdfT0JKRUNUX0NMQVNTKGJyb3dzZXJfc2VhcmNoX2Jhcl9wYXJlbnRfY2xhc3Mp
LT5maW5hbGl6ZShnT2JqZWN0KTsKLX0KLQotc3RhdGljIHZvaWQgYnJvd3Nlcl9zZWFyY2hfYmFy
X2NsYXNzX2luaXQoQnJvd3NlclNlYXJjaEJhckNsYXNzICprbGFzcykKLXsKLSAgICBHT2JqZWN0
Q2xhc3MgKmdPYmplY3RDbGFzcyA9IEdfT0JKRUNUX0NMQVNTKGtsYXNzKTsKLQotICAgIGdPYmpl
Y3RDbGFzcy0+ZmluYWxpemUgPSBicm93c2VyU2VhcmNoQmFyRmluYWxpemU7Ci19Ci0KLUd0a1dp
ZGdldCAqYnJvd3Nlcl9zZWFyY2hfYmFyX25ldyhXZWJLaXRXZWJWaWV3ICp3ZWJWaWV3KQotewot
ICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsKFdFQktJVF9JU19XRUJfVklFVyh3ZWJWaWV3KSwgTlVM
TCk7Ci0KLSAgICBHdGtXaWRnZXQgKnNlYXJjaEJhciA9IEdUS19XSURHRVQoZ19vYmplY3RfbmV3
KEJST1dTRVJfVFlQRV9TRUFSQ0hfQkFSLCBOVUxMKSk7Ci0gICAgQlJPV1NFUl9TRUFSQ0hfQkFS
KHNlYXJjaEJhciktPndlYlZpZXcgPSBnX29iamVjdF9yZWYod2ViVmlldyk7Ci0gICAgZ3RrX3Nl
YXJjaF9iYXJfc2V0X3Nob3dfY2xvc2VfYnV0dG9uKEdUS19TRUFSQ0hfQkFSKHNlYXJjaEJhciks
IFRSVUUpOwotCi0gICAgV2ViS2l0RmluZENvbnRyb2xsZXIgKmNvbnRyb2xsZXIgPSB3ZWJraXRf
d2ViX3ZpZXdfZ2V0X2ZpbmRfY29udHJvbGxlcih3ZWJWaWV3KTsKLSAgICBnX3NpZ25hbF9jb25u
ZWN0X3N3YXBwZWQoY29udHJvbGxlciwgImZhaWxlZC10by1maW5kLXRleHQiLCBHX0NBTExCQUNL
KGZpbmRDb250cm9sbGVyRmFpbGVkVG9GaW5kVGV4dENhbGxiYWNrKSwgc2VhcmNoQmFyKTsKLSAg
ICBnX3NpZ25hbF9jb25uZWN0X3N3YXBwZWQoY29udHJvbGxlciwgImZvdW5kLXRleHQiLCBHX0NB
TExCQUNLKGZpbmRDb250cm9sbGVyRm91bmRUZXh0Q2FsbGJhY2spLCBzZWFyY2hCYXIpOwotCi0g
ICAgcmV0dXJuIHNlYXJjaEJhcjsKLX0KLQotdm9pZCBicm93c2VyX3NlYXJjaF9iYXJfb3BlbihC
cm93c2VyU2VhcmNoQmFyICpzZWFyY2hCYXIpCi17Ci0gICAgZ19yZXR1cm5faWZfZmFpbChCUk9X
U0VSX0lTX1NFQVJDSF9CQVIoc2VhcmNoQmFyKSk7Ci0KLSAgICBndGtfc2VhcmNoX2Jhcl9zZXRf
c2VhcmNoX21vZGUoR1RLX1NFQVJDSF9CQVIoc2VhcmNoQmFyKSwgVFJVRSk7Ci19Ci0KLXZvaWQg
YnJvd3Nlcl9zZWFyY2hfYmFyX2Nsb3NlKEJyb3dzZXJTZWFyY2hCYXIgKnNlYXJjaEJhcikKLXsK
LSAgICBnX3JldHVybl9pZl9mYWlsKEJST1dTRVJfSVNfU0VBUkNIX0JBUihzZWFyY2hCYXIpKTsK
LQotICAgIGd0a19zZWFyY2hfYmFyX3NldF9zZWFyY2hfbW9kZShHVEtfU0VBUkNIX0JBUihzZWFy
Y2hCYXIpLCBGQUxTRSk7Ci19Ci0KLWdib29sZWFuIGJyb3dzZXJfc2VhcmNoX2Jhcl9pc19vcGVu
KEJyb3dzZXJTZWFyY2hCYXIgKnNlYXJjaEJhcikKLXsKLSAgICBnX3JldHVybl92YWxfaWZfZmFp
bChCUk9XU0VSX0lTX1NFQVJDSF9CQVIoc2VhcmNoQmFyKSwgRkFMU0UpOwotCi0gICAgR3RrV2lk
Z2V0ICpyZXZlYWxlciA9IGd0a19iaW5fZ2V0X2NoaWxkKEdUS19CSU4oc2VhcmNoQmFyKSk7Ci0g
ICAgcmV0dXJuIGd0a19yZXZlYWxlcl9nZXRfcmV2ZWFsX2NoaWxkKEdUS19SRVZFQUxFUihyZXZl
YWxlcikpOwotfQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1Rvb2xzL01pbmlCcm93c2VyL2d0ay9C
cm93c2VyU2VhcmNoQm94LmMgYi9Ub29scy9NaW5pQnJvd3Nlci9ndGsvQnJvd3NlclNlYXJjaEJv
eC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMC4uZWVhMzFhODQ5MGZj
Ci0tLSAvZGV2L251bGwKKysrIGIvVG9vbHMvTWluaUJyb3dzZXIvZ3RrL0Jyb3dzZXJTZWFyY2hC
b3guYwpAQCAtMCwwICsxLDMzNCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMywgMjAyMCBJ
Z2FsaWEgUy5MLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY21ha2Vjb25maWcuaCIKKyNpbmNsdWRl
ICJCcm93c2VyU2VhcmNoQm94LmgiCisKK3N0cnVjdCBfQnJvd3NlclNlYXJjaEJveCB7CisgICAg
R3RrQm94IHBhcmVudDsKKworICAgIFdlYktpdFdlYlZpZXcgKndlYlZpZXc7CisgICAgR3RrV2lk
Z2V0ICplbnRyeTsKKyAgICBHdGtXaWRnZXQgKnByZXZCdXR0b247CisgICAgR3RrV2lkZ2V0ICpu
ZXh0QnV0dG9uOworICAgIEdBY3Rpb25Hcm91cCAqYWN0aW9uR3JvdXA7CisgICAgR01lbnUgKm9w
dGlvbnNNZW51OworICAgIEd0a1dpZGdldCAqb3B0aW9uc1BvcG92ZXI7CisgICAgR3RrV2lkZ2V0
ICpjYXNlQ2hlY2tCdXR0b247CisgICAgR3RrV2lkZ2V0ICpiZWdnaW5pZ1dvcmRDaGVja0J1dHRv
bjsKKyAgICBHdGtXaWRnZXQgKmNhcGl0YWxBc0JlZ2dpbmlnV29yZENoZWNrQnV0dG9uOworfTsK
KworR19ERUZJTkVfVFlQRShCcm93c2VyU2VhcmNoQm94LCBicm93c2VyX3NlYXJjaF9ib3gsIEdU
S19UWVBFX0JPWCkKKworc3RhdGljIHZvaWQgc2V0RmFpbGVkU3R5bGVGb3JFbnRyeShCcm93c2Vy
U2VhcmNoQm94ICpzZWFyY2hCb3gsIGdib29sZWFuIGZhaWxlZFNlYXJjaCkKK3sKKyAgICBpZiAo
ZmFpbGVkU2VhcmNoKQorICAgICAgICBndGtfc3R5bGVfY29udGV4dF9hZGRfY2xhc3MoZ3RrX3dp
ZGdldF9nZXRfc3R5bGVfY29udGV4dChzZWFyY2hCb3gtPmVudHJ5KSwgInNlYXJjaC1mYWlsZWQi
KTsKKyAgICBlbHNlCisgICAgICAgIGd0a19zdHlsZV9jb250ZXh0X3JlbW92ZV9jbGFzcyhndGtf
d2lkZ2V0X2dldF9zdHlsZV9jb250ZXh0KHNlYXJjaEJveC0+ZW50cnkpLCAic2VhcmNoLWZhaWxl
ZCIpOworfQorCitzdGF0aWMgdm9pZCBkb1NlYXJjaChCcm93c2VyU2VhcmNoQm94ICpzZWFyY2hC
b3gpCit7CisgICAgR3RrRW50cnkgKmVudHJ5ID0gR1RLX0VOVFJZKHNlYXJjaEJveC0+ZW50cnkp
OworICAgIGlmICghZ3RrX2VudHJ5X2dldF90ZXh0X2xlbmd0aChlbnRyeSkpIHsKKyAgICAgICAg
c2V0RmFpbGVkU3R5bGVGb3JFbnRyeShzZWFyY2hCb3gsIEZBTFNFKTsKKyAgICAgICAgZ3RrX2Vu
dHJ5X3NldF9pY29uX2Zyb21faWNvbl9uYW1lKGVudHJ5LCBHVEtfRU5UUllfSUNPTl9TRUNPTkRB
UlksIE5VTEwpOworICAgICAgICB3ZWJraXRfZmluZF9jb250cm9sbGVyX3NlYXJjaF9maW5pc2go
d2Via2l0X3dlYl92aWV3X2dldF9maW5kX2NvbnRyb2xsZXIoc2VhcmNoQm94LT53ZWJWaWV3KSk7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoIWd0a19lbnRyeV9nZXRfaWNvbl9u
YW1lKGVudHJ5LCBHVEtfRU5UUllfSUNPTl9TRUNPTkRBUlkpKQorICAgICAgICBndGtfZW50cnlf
c2V0X2ljb25fZnJvbV9pY29uX25hbWUoZW50cnksIEdUS19FTlRSWV9JQ09OX1NFQ09OREFSWSwg
ImVkaXQtY2xlYXItc3ltYm9saWMiKTsKKworICAgIFdlYktpdEZpbmRPcHRpb25zIG9wdGlvbnMg
PSBXRUJLSVRfRklORF9PUFRJT05TX1dSQVBfQVJPVU5EOworICAgIEdBY3Rpb24gKmFjdGlvbiA9
IGdfYWN0aW9uX21hcF9sb29rdXBfYWN0aW9uKEdfQUNUSU9OX01BUChzZWFyY2hCb3gtPmFjdGlv
bkdyb3VwKSwgImNhc2Utc2Vuc2l0aXZlIik7CisgICAgR1ZhcmlhbnQgKnN0YXRlID0gZ19hY3Rp
b25fZ2V0X3N0YXRlKGFjdGlvbik7CisgICAgaWYgKCFnX3ZhcmlhbnRfZ2V0X2Jvb2xlYW4oc3Rh
dGUpKQorICAgICAgICBvcHRpb25zIHw9IFdFQktJVF9GSU5EX09QVElPTlNfQ0FTRV9JTlNFTlNJ
VElWRTsKKyAgICBnX3ZhcmlhbnRfdW5yZWYoc3RhdGUpOworCisgICAgYWN0aW9uID0gZ19hY3Rp
b25fbWFwX2xvb2t1cF9hY3Rpb24oR19BQ1RJT05fTUFQKHNlYXJjaEJveC0+YWN0aW9uR3JvdXAp
LCAiYmVnaW5uaWctd29yZCIpOworICAgIHN0YXRlID0gZ19hY3Rpb25fZ2V0X3N0YXRlKGFjdGlv
bik7CisgICAgaWYgKGdfdmFyaWFudF9nZXRfYm9vbGVhbihzdGF0ZSkpCisgICAgICAgIG9wdGlv
bnMgfD0gV0VCS0lUX0ZJTkRfT1BUSU9OU19BVF9XT1JEX1NUQVJUUzsKKyAgICBnX3ZhcmlhbnRf
dW5yZWYoc3RhdGUpOworCisgICAgYWN0aW9uID0gZ19hY3Rpb25fbWFwX2xvb2t1cF9hY3Rpb24o
R19BQ1RJT05fTUFQKHNlYXJjaEJveC0+YWN0aW9uR3JvdXApLCAiY2FwaXRhbC1hcy1iZWdpbm5p
Zy13b3JkIik7CisgICAgc3RhdGUgPSBnX2FjdGlvbl9nZXRfc3RhdGUoYWN0aW9uKTsKKyAgICBp
ZiAoZ192YXJpYW50X2dldF9ib29sZWFuKHN0YXRlKSkKKyAgICAgICAgb3B0aW9ucyB8PSBXRUJL
SVRfRklORF9PUFRJT05TX1RSRUFUX01FRElBTF9DQVBJVEFMX0FTX1dPUkRfU1RBUlQ7CisgICAg
Z192YXJpYW50X3VucmVmKHN0YXRlKTsKKworI2lmIEdUS19DSEVDS19WRVJTSU9OKDMsIDk4LCA1
KQorICAgIGNvbnN0IGdjaGFyICp0ZXh0ID0gZ3RrX2VkaXRhYmxlX2dldF90ZXh0KEdUS19FRElU
QUJMRShlbnRyeSkpOworI2Vsc2UKKyAgICBjb25zdCBnY2hhciAqdGV4dCA9IGd0a19lbnRyeV9n
ZXRfdGV4dChlbnRyeSk7CisjZW5kaWYKKyAgICB3ZWJraXRfZmluZF9jb250cm9sbGVyX3NlYXJj
aCh3ZWJraXRfd2ViX3ZpZXdfZ2V0X2ZpbmRfY29udHJvbGxlcihzZWFyY2hCb3gtPndlYlZpZXcp
LCB0ZXh0LCBvcHRpb25zLCBHX01BWFVJTlQpOworfQorCitzdGF0aWMgdm9pZCBzZWFyY2hOZXh0
KEJyb3dzZXJTZWFyY2hCb3ggKnNlYXJjaEJveCkKK3sKKyAgICB3ZWJraXRfZmluZF9jb250cm9s
bGVyX3NlYXJjaF9uZXh0KHdlYmtpdF93ZWJfdmlld19nZXRfZmluZF9jb250cm9sbGVyKHNlYXJj
aEJveC0+d2ViVmlldykpOworfQorCitzdGF0aWMgdm9pZCBzZWFyY2hQcmV2aW91cyhCcm93c2Vy
U2VhcmNoQm94ICpzZWFyY2hCb3gpCit7CisgICAgd2Via2l0X2ZpbmRfY29udHJvbGxlcl9zZWFy
Y2hfcHJldmlvdXMod2Via2l0X3dlYl92aWV3X2dldF9maW5kX2NvbnRyb2xsZXIoc2VhcmNoQm94
LT53ZWJWaWV3KSk7Cit9CisKK3N0YXRpYyB2b2lkIHNlYXJjaEVudHJ5TWVudUljb25QcmVzc2Vk
Q2FsbGJhY2soQnJvd3NlclNlYXJjaEJveCAqc2VhcmNoQm94LCBHdGtFbnRyeUljb25Qb3NpdGlv
biBpY29uUG9zaXRpb24sIEdka0V2ZW50ICpldmVudCkKK3sKKyAgICBpZiAoaWNvblBvc2l0aW9u
ICE9IEdUS19FTlRSWV9JQ09OX1BSSU1BUlkpCisgICAgICAgIHJldHVybjsKKworI2lmIEdUS19D
SEVDS19WRVJTSU9OKDMsIDk4LCA1KQorICAgIEd0a1dpZGdldCAqcG9wb3ZlciA9IGd0a19wb3Bv
dmVyX21lbnVfbmV3X2Zyb21fbW9kZWwoR19NRU5VX01PREVMKHNlYXJjaEJveC0+b3B0aW9uc01l
bnUpKTsKKyAgICBndGtfd2lkZ2V0X3NldF9wYXJlbnQocG9wb3ZlciwgR1RLX1dJREdFVChzZWFy
Y2hCb3gpKTsKKyNlbHNlCisgICAgR3RrV2lkZ2V0ICpwb3BvdmVyID0gZ3RrX3BvcG92ZXJfbWVu
dV9uZXcoKTsKKyAgICBndGtfcG9wb3Zlcl9iaW5kX21vZGVsKEdUS19QT1BPVkVSKHBvcG92ZXIp
LCBHX01FTlVfTU9ERUwoc2VhcmNoQm94LT5vcHRpb25zTWVudSksIE5VTEwpOworICAgIGd0a19w
b3BvdmVyX3NldF9yZWxhdGl2ZV90byhHVEtfUE9QT1ZFUihwb3BvdmVyKSwgc2VhcmNoQm94LT5l
bnRyeSk7CisjZW5kaWYKKyAgICBzZWFyY2hCb3gtPm9wdGlvbnNQb3BvdmVyID0gcG9wb3ZlcjsK
KyAgICBHZGtSZWN0YW5nbGUgcmVjdDsKKyAgICBndGtfZW50cnlfZ2V0X2ljb25fYXJlYShHVEtf
RU5UUlkoc2VhcmNoQm94LT5lbnRyeSksIEdUS19FTlRSWV9JQ09OX1BSSU1BUlksICZyZWN0KTsK
KyAgICBndGtfcG9wb3Zlcl9zZXRfcG9pbnRpbmdfdG8oR1RLX1BPUE9WRVIocG9wb3ZlciksICZy
ZWN0KTsKKyAgICBndGtfcG9wb3Zlcl9zZXRfcG9zaXRpb24oR1RLX1BPUE9WRVIocG9wb3Zlciks
IEdUS19QT1NfQk9UVE9NKTsKKyAgICBndGtfcG9wb3Zlcl9wb3B1cChHVEtfUE9QT1ZFUihwb3Bv
dmVyKSk7Cit9CisKK3N0YXRpYyB2b2lkIHNlYXJjaEVudHJ5Q2xlYXJJY29uUmVsZWFzZWRDYWxs
YmFjayhCcm93c2VyU2VhcmNoQm94ICpzZWFyY2hCb3gsIEd0a0VudHJ5SWNvblBvc2l0aW9uIGlj
b25Qb3NpdGlvbikKK3sKKyAgICBpZiAoaWNvblBvc2l0aW9uICE9IEdUS19FTlRSWV9JQ09OX1NF
Q09OREFSWSkKKyAgICAgICAgcmV0dXJuOworCisjaWYgR1RLX0NIRUNLX1ZFUlNJT04oMywgOTgs
IDUpCisgICAgZ3RrX2VkaXRhYmxlX3NldF90ZXh0KEdUS19FRElUQUJMRShzZWFyY2hCb3gtPmVu
dHJ5KSwgIiIpOworI2Vsc2UKKyAgICBndGtfZW50cnlfc2V0X3RleHQoR1RLX0VOVFJZKHNlYXJj
aEJveC0+ZW50cnkpLCAiIik7CisjZW5kaWYKK30KKworc3RhdGljIHZvaWQgc2VhcmNoRW50cnlD
aGFuZ2VkQ2FsbGJhY2soR3RrRW50cnkgKmVudHJ5LCBCcm93c2VyU2VhcmNoQm94ICpzZWFyY2hC
b3gpCit7CisgICAgZG9TZWFyY2goc2VhcmNoQm94KTsKK30KKworc3RhdGljIHZvaWQgc2VhcmNo
RW50cnlBY3RpdmF0ZWRDYWxsYmFjayhCcm93c2VyU2VhcmNoQm94ICpzZWFyY2hCb3gpCit7Cisg
ICAgc2VhcmNoTmV4dChzZWFyY2hCb3gpOworfQorCitzdGF0aWMgdm9pZCBzZWFyY2hQcmV2aW91
c0J1dHRvbkNhbGxiYWNrKEdTaW1wbGVBY3Rpb24gKmFjdGlvbiwgR1ZhcmlhbnQgKnBhcmFtZXRl
ciwgZ3BvaW50ZXIgdXNlckRhdGEpCit7CisgICAgc2VhcmNoUHJldmlvdXMoQlJPV1NFUl9TRUFS
Q0hfQk9YKHVzZXJEYXRhKSk7Cit9CisKK3N0YXRpYyB2b2lkIHNlYXJjaE5leHRCdXR0b25DYWxs
YmFjayhHU2ltcGxlQWN0aW9uICphY3Rpb24sIEdWYXJpYW50ICpwYXJhbWV0ZXIsIGdwb2ludGVy
IHVzZXJEYXRhKQoreworICAgIHNlYXJjaE5leHQoQlJPV1NFUl9TRUFSQ0hfQk9YKHVzZXJEYXRh
KSk7Cit9CisKK3N0YXRpYyB2b2lkIHNlYXJjaE1lbnVDaGVja0J1dHRvblRvZ2dsZWRDYWxsYmFj
ayhHU2ltcGxlQWN0aW9uICphY3Rpb24sIEdWYXJpYW50ICpzdGF0ZSwgZ3BvaW50ZXIgdXNlckRh
dGEpCit7CisgICAgZ19zaW1wbGVfYWN0aW9uX3NldF9zdGF0ZShhY3Rpb24sIHN0YXRlKTsKKyAg
ICBkb1NlYXJjaChCUk9XU0VSX1NFQVJDSF9CT1godXNlckRhdGEpKTsKK30KKworc3RhdGljIHZv
aWQgZmluZENvbnRyb2xsZXJGYWlsZWRUb0ZpbmRUZXh0Q2FsbGJhY2soQnJvd3NlclNlYXJjaEJv
eCAqc2VhcmNoQm94KQoreworICAgIHNldEZhaWxlZFN0eWxlRm9yRW50cnkoc2VhcmNoQm94LCBU
UlVFKTsKK30KKworc3RhdGljIHZvaWQgZmluZENvbnRyb2xsZXJGb3VuZFRleHRDYWxsYmFjayhC
cm93c2VyU2VhcmNoQm94ICpzZWFyY2hCb3gpCit7CisgICAgc2V0RmFpbGVkU3R5bGVGb3JFbnRy
eShzZWFyY2hCb3gsIEZBTFNFKTsKK30KKworc3RhdGljIGNvbnN0IEdBY3Rpb25FbnRyeSBhY3Rp
b25zW10gPSB7CisgICAgeyAibmV4dCIsIHNlYXJjaE5leHRCdXR0b25DYWxsYmFjaywgTlVMTCwg
TlVMTCwgTlVMTCwgeyAwIH0gfSwKKyAgICB7ICJwcmV2aW91cyIsIHNlYXJjaFByZXZpb3VzQnV0
dG9uQ2FsbGJhY2ssIE5VTEwsIE5VTEwsIE5VTEwsIHsgMCB9IH0sCisgICAgeyAiY2FzZS1zZW5z
aXRpdmUiLCBOVUxMLCBOVUxMLCAiZmFsc2UiLCBzZWFyY2hNZW51Q2hlY2tCdXR0b25Ub2dnbGVk
Q2FsbGJhY2ssIHsgMCB9IH0sCisgICAgeyAiYmVnaW5uaWctd29yZCIsIE5VTEwsIE5VTEwsICJm
YWxzZSIsIHNlYXJjaE1lbnVDaGVja0J1dHRvblRvZ2dsZWRDYWxsYmFjaywgeyAwIH0gfSwKKyAg
ICB7ICJjYXBpdGFsLWFzLWJlZ2lubmlnLXdvcmQiLCBOVUxMLCBOVUxMLCAiZmFsc2UiLCBzZWFy
Y2hNZW51Q2hlY2tCdXR0b25Ub2dnbGVkQ2FsbGJhY2ssIHsgMCB9IH0KK307CisKK3N0YXRpYyB2
b2lkIGJyb3dzZXJfc2VhcmNoX2JveF9pbml0KEJyb3dzZXJTZWFyY2hCb3ggKnNlYXJjaEJveCkK
K3sKKyAgICBHU2ltcGxlQWN0aW9uR3JvdXAgKmFjdGlvbkdyb3VwID0gZ19zaW1wbGVfYWN0aW9u
X2dyb3VwX25ldygpOworICAgIHNlYXJjaEJveC0+YWN0aW9uR3JvdXAgPSBHX0FDVElPTl9HUk9V
UChhY3Rpb25Hcm91cCk7CisgICAgZ19hY3Rpb25fbWFwX2FkZF9hY3Rpb25fZW50cmllcyhHX0FD
VElPTl9NQVAoYWN0aW9uR3JvdXApLCBhY3Rpb25zLCBHX05fRUxFTUVOVFMoYWN0aW9ucyksIHNl
YXJjaEJveCk7CisgICAgZ3RrX3dpZGdldF9pbnNlcnRfYWN0aW9uX2dyb3VwKEdUS19XSURHRVQo
c2VhcmNoQm94KSwgImZpbmQiLCBHX0FDVElPTl9HUk9VUChhY3Rpb25Hcm91cCkpOworCisgICAg
Z3RrX29yaWVudGFibGVfc2V0X29yaWVudGF0aW9uKEdUS19PUklFTlRBQkxFKHNlYXJjaEJveCks
IEdUS19PUklFTlRBVElPTl9IT1JJWk9OVEFMKTsKKyNpZiBHVEtfQ0hFQ0tfVkVSU0lPTigzLCA5
OCwgNSkKKyAgICBndGtfd2lkZ2V0X2FkZF9jc3NfY2xhc3MoR1RLX1dJREdFVChzZWFyY2hCb3gp
LCBHVEtfU1RZTEVfQ0xBU1NfTElOS0VEKTsKKyAgICBndGtfd2lkZ2V0X2FkZF9jc3NfY2xhc3Mo
R1RLX1dJREdFVChzZWFyY2hCb3gpLCBHVEtfU1RZTEVfQ0xBU1NfUkFJU0VEKTsKKyNlbHNlCisg
ICAgR3RrU3R5bGVDb250ZXh0ICpzdHlsZUNvbnRleHQgPSBndGtfd2lkZ2V0X2dldF9zdHlsZV9j
b250ZXh0KEdUS19XSURHRVQoc2VhcmNoQm94KSk7CisgICAgZ3RrX3N0eWxlX2NvbnRleHRfYWRk
X2NsYXNzKHN0eWxlQ29udGV4dCwgR1RLX1NUWUxFX0NMQVNTX0xJTktFRCk7CisgICAgZ3RrX3N0
eWxlX2NvbnRleHRfYWRkX2NsYXNzKHN0eWxlQ29udGV4dCwgR1RLX1NUWUxFX0NMQVNTX1JBSVNF
RCk7CisjZW5kaWYKKworICAgIHNlYXJjaEJveC0+ZW50cnkgPSBndGtfZW50cnlfbmV3KCk7Cisg
ICAgZ3RrX3dpZGdldF9zZXRfaGFsaWduKHNlYXJjaEJveC0+ZW50cnksIEdUS19BTElHTl9GSUxM
KTsKKyAgICBndGtfd2lkZ2V0X3NldF9oZXhwYW5kKHNlYXJjaEJveC0+ZW50cnksIFRSVUUpOwor
ICAgIGd0a19lbnRyeV9zZXRfcGxhY2Vob2xkZXJfdGV4dChHVEtfRU5UUlkoc2VhcmNoQm94LT5l
bnRyeSksICJTZWFyY2giKTsKKyAgICBndGtfZW50cnlfc2V0X2ljb25fZnJvbV9pY29uX25hbWUo
R1RLX0VOVFJZKHNlYXJjaEJveC0+ZW50cnkpLCBHVEtfRU5UUllfSUNPTl9QUklNQVJZLCAiZWRp
dC1maW5kLXN5bWJvbGljIik7CisgICAgZ3RrX2VudHJ5X3NldF9pY29uX2FjdGl2YXRhYmxlKEdU
S19FTlRSWShzZWFyY2hCb3gtPmVudHJ5KSwgR1RLX0VOVFJZX0lDT05fUFJJTUFSWSwgVFJVRSk7
CisgICAgZ3RrX2VudHJ5X3NldF9pY29uX3NlbnNpdGl2ZShHVEtfRU5UUlkoc2VhcmNoQm94LT5l
bnRyeSksIEdUS19FTlRSWV9JQ09OX1BSSU1BUlksIFRSVUUpOworICAgIGd0a19lbnRyeV9zZXRf
aWNvbl90b29sdGlwX3RleHQoR1RLX0VOVFJZKHNlYXJjaEJveC0+ZW50cnkpLCBHVEtfRU5UUllf
SUNPTl9QUklNQVJZLCAiU2VhcmNoIG9wdGlvbnMiKTsKKyNpZiBHVEtfQ0hFQ0tfVkVSU0lPTigz
LCA5OCwgNSkKKyAgICBndGtfYm94X2FwcGVuZChHVEtfQk9YKHNlYXJjaEJveCksIHNlYXJjaEJv
eC0+ZW50cnkpOworI2Vsc2UKKyAgICBndGtfY29udGFpbmVyX2FkZChHVEtfQ09OVEFJTkVSKHNl
YXJjaEJveCksIHNlYXJjaEJveC0+ZW50cnkpOworICAgIGd0a193aWRnZXRfc2hvdyhzZWFyY2hC
b3gtPmVudHJ5KTsKKyNlbmRpZgorCisgICAgR3RrQ3NzUHJvdmlkZXIgKmNzc1Byb3ZpZGVyID0g
Z3RrX2Nzc19wcm92aWRlcl9uZXcoKTsKKyNpZiBHVEtfQ0hFQ0tfVkVSU0lPTigzLCA5OCwgNSkK
KyAgICBndGtfY3NzX3Byb3ZpZGVyX2xvYWRfZnJvbV9kYXRhKGNzc1Byb3ZpZGVyLCAiLnNlYXJj
aC1mYWlsZWQgeyBiYWNrZ3JvdW5kLWNvbG9yOiAjZmY2NjY2OyB9IiwgLTEpOworI2Vsc2UKKyAg
ICBndGtfY3NzX3Byb3ZpZGVyX2xvYWRfZnJvbV9kYXRhKGNzc1Byb3ZpZGVyLCAiLnNlYXJjaC1m
YWlsZWQgeyBiYWNrZ3JvdW5kLWNvbG9yOiAjZmY2NjY2OyB9IiwgLTEsIE5VTEwpOworI2VuZGlm
CisgICAgZ3RrX3N0eWxlX2NvbnRleHRfYWRkX3Byb3ZpZGVyKGd0a193aWRnZXRfZ2V0X3N0eWxl
X2NvbnRleHQoc2VhcmNoQm94LT5lbnRyeSksIEdUS19TVFlMRV9QUk9WSURFUihjc3NQcm92aWRl
ciksIEdUS19TVFlMRV9QUk9WSURFUl9QUklPUklUWV9BUFBMSUNBVElPTik7CisgICAgZ19vYmpl
Y3RfdW5yZWYoY3NzUHJvdmlkZXIpOworCisjaWYgR1RLX0NIRUNLX1ZFUlNJT04oMywgOTgsIDUp
CisgICAgc2VhcmNoQm94LT5wcmV2QnV0dG9uID0gZ3RrX2J1dHRvbl9uZXdfZnJvbV9pY29uX25h
bWUoImdvLXVwLXN5bWJvbGljIik7CisjZWxzZQorICAgIHNlYXJjaEJveC0+cHJldkJ1dHRvbiA9
IGd0a19idXR0b25fbmV3X2Zyb21faWNvbl9uYW1lKCJnby11cC1zeW1ib2xpYyIsIEdUS19JQ09O
X1NJWkVfTUVOVSk7CisjZW5kaWYKKyAgICBHdGtCdXR0b24gKmJ1dHRvbiA9IEdUS19CVVRUT04o
c2VhcmNoQm94LT5wcmV2QnV0dG9uKTsKKyAgICBndGtfYWN0aW9uYWJsZV9zZXRfYWN0aW9uX25h
bWUoR1RLX0FDVElPTkFCTEUoYnV0dG9uKSwgImZpbmQucHJldmlvdXMiKTsKKyAgICBndGtfd2lk
Z2V0X3NldF9mb2N1c19vbl9jbGljayhzZWFyY2hCb3gtPnByZXZCdXR0b24sIEZBTFNFKTsKKyNp
ZiBHVEtfQ0hFQ0tfVkVSU0lPTigzLCA5OCwgNSkKKyAgICBndGtfYm94X2FwcGVuZChHVEtfQk9Y
KHNlYXJjaEJveCksIHNlYXJjaEJveC0+cHJldkJ1dHRvbik7CisjZWxzZQorICAgIGd0a19ib3hf
cGFja19zdGFydChHVEtfQk9YKHNlYXJjaEJveCksIHNlYXJjaEJveC0+cHJldkJ1dHRvbiwgRkFM
U0UsIEZBTFNFLCAwKTsKKyAgICBndGtfd2lkZ2V0X3Nob3coc2VhcmNoQm94LT5wcmV2QnV0dG9u
KTsKKyNlbmRpZgorCisjaWYgR1RLX0NIRUNLX1ZFUlNJT04oMywgOTgsIDUpCisgICAgc2VhcmNo
Qm94LT5uZXh0QnV0dG9uID0gZ3RrX2J1dHRvbl9uZXdfZnJvbV9pY29uX25hbWUoImdvLWRvd24t
c3ltYm9saWMiKTsKKyNlbHNlCisgICAgc2VhcmNoQm94LT5uZXh0QnV0dG9uID0gZ3RrX2J1dHRv
bl9uZXdfZnJvbV9pY29uX25hbWUoImdvLWRvd24tc3ltYm9saWMiLCBHVEtfSUNPTl9TSVpFX01F
TlUpOworI2VuZGlmCisgICAgYnV0dG9uID0gR1RLX0JVVFRPTihzZWFyY2hCb3gtPm5leHRCdXR0
b24pOworICAgIGd0a19hY3Rpb25hYmxlX3NldF9hY3Rpb25fbmFtZShHVEtfQUNUSU9OQUJMRShi
dXR0b24pLCAiZmluZC5uZXh0Iik7CisgICAgZ3RrX3dpZGdldF9zZXRfZm9jdXNfb25fY2xpY2so
c2VhcmNoQm94LT5uZXh0QnV0dG9uLCBGQUxTRSk7CisjaWYgR1RLX0NIRUNLX1ZFUlNJT04oMywg
OTgsIDUpCisgICAgZ3RrX2JveF9hcHBlbmQoR1RLX0JPWChzZWFyY2hCb3gpLCBzZWFyY2hCb3gt
Pm5leHRCdXR0b24pOworI2Vsc2UKKyAgICBndGtfYm94X3BhY2tfc3RhcnQoR1RLX0JPWChzZWFy
Y2hCb3gpLCBzZWFyY2hCb3gtPm5leHRCdXR0b24sIEZBTFNFLCBGQUxTRSwgMCk7CisgICAgZ3Rr
X3dpZGdldF9zaG93KHNlYXJjaEJveC0+bmV4dEJ1dHRvbik7CisjZW5kaWYKKworICAgIHNlYXJj
aEJveC0+b3B0aW9uc01lbnUgPSBnX21lbnVfbmV3KCk7CisgICAgZ19tZW51X2FwcGVuZChzZWFy
Y2hCb3gtPm9wdGlvbnNNZW51LCAiQ2Ffc2Ugc2Vuc2l0aXZlIiwgImZpbmQuY2FzZS1zZW5zaXRp
dmUiKTsKKyAgICBnX21lbnVfYXBwZW5kKHNlYXJjaEJveC0+b3B0aW9uc01lbnUsICJPbmx5IGF0
IHRoZSBfYmVnaW5uaW5nIG9mIHdvcmRzIiwgImZpbmQuYmVnaW5uaWctd29yZCIpOworICAgIGdf
bWVudV9hcHBlbmQoc2VhcmNoQm94LT5vcHRpb25zTWVudSwgIkNhcGl0YWwgX2Fsd2F5cyBhcyBi
ZWdpbm5pbmcgb2Ygd29yZCIsICJmaW5kLmNhcGl0YWwtYXMtYmVnaW5uaWctd29yZCIpOworCisg
ICAgZ19zaWduYWxfY29ubmVjdF9zd2FwcGVkKHNlYXJjaEJveC0+ZW50cnksICJpY29uLXByZXNz
IiwgR19DQUxMQkFDSyhzZWFyY2hFbnRyeU1lbnVJY29uUHJlc3NlZENhbGxiYWNrKSwgc2VhcmNo
Qm94KTsKKyAgICBnX3NpZ25hbF9jb25uZWN0X3N3YXBwZWQoc2VhcmNoQm94LT5lbnRyeSwgImlj
b24tcmVsZWFzZSIsIEdfQ0FMTEJBQ0soc2VhcmNoRW50cnlDbGVhckljb25SZWxlYXNlZENhbGxi
YWNrKSwgc2VhcmNoQm94KTsKKyAgICBnX3NpZ25hbF9jb25uZWN0X2FmdGVyKHNlYXJjaEJveC0+
ZW50cnksICJjaGFuZ2VkIiwgR19DQUxMQkFDSyhzZWFyY2hFbnRyeUNoYW5nZWRDYWxsYmFjayks
IHNlYXJjaEJveCk7CisgICAgZ19zaWduYWxfY29ubmVjdF9zd2FwcGVkKHNlYXJjaEJveC0+ZW50
cnksICJhY3RpdmF0ZSIsIEdfQ0FMTEJBQ0soc2VhcmNoRW50cnlBY3RpdmF0ZWRDYWxsYmFjayks
IHNlYXJjaEJveCk7Cit9CisKK3N0YXRpYyB2b2lkIGJyb3dzZXJTZWFyY2hCb3hGaW5hbGl6ZShH
T2JqZWN0ICpnT2JqZWN0KQoreworICAgIEJyb3dzZXJTZWFyY2hCb3ggKnNlYXJjaEJveCA9IEJS
T1dTRVJfU0VBUkNIX0JPWChnT2JqZWN0KTsKKworICAgIGlmIChzZWFyY2hCb3gtPndlYlZpZXcp
IHsKKyAgICAgICAgZ19vYmplY3RfdW5yZWYoc2VhcmNoQm94LT53ZWJWaWV3KTsKKyAgICAgICAg
c2VhcmNoQm94LT53ZWJWaWV3ID0gTlVMTDsKKyAgICB9CisKKyAgICBpZiAoc2VhcmNoQm94LT5v
cHRpb25zTWVudSkgeworICAgICAgICBnX29iamVjdF91bnJlZihzZWFyY2hCb3gtPm9wdGlvbnNN
ZW51KTsKKyAgICAgICAgc2VhcmNoQm94LT5vcHRpb25zTWVudSA9IE5VTEw7CisgICAgfQorCisg
ICAgZ19vYmplY3RfdW5yZWYoc2VhcmNoQm94LT5hY3Rpb25Hcm91cCk7CisKKyAgICBHX09CSkVD
VF9DTEFTUyhicm93c2VyX3NlYXJjaF9ib3hfcGFyZW50X2NsYXNzKS0+ZmluYWxpemUoZ09iamVj
dCk7Cit9CisKK3N0YXRpYyB2b2lkIGJyb3dzZXJTZWFyY2hCb3hEaXNwb3NlKEdPYmplY3QgKm9i
amVjdCkKK3sKKyNpZiBHVEtfQ0hFQ0tfVkVSU0lPTigzLCA5OCwgNSkKKyAgICBCcm93c2VyU2Vh
cmNoQm94ICpzZWFyY2hCb3ggPSBCUk9XU0VSX1NFQVJDSF9CT1gob2JqZWN0KTsKKyAgICBnX2Ns
ZWFyX3BvaW50ZXIoJnNlYXJjaEJveC0+b3B0aW9uc1BvcG92ZXIsIGd0a193aWRnZXRfdW5wYXJl
bnQpOworI2VuZGlmCisKKyAgICBHX09CSkVDVF9DTEFTUyhicm93c2VyX3NlYXJjaF9ib3hfcGFy
ZW50X2NsYXNzKS0+ZGlzcG9zZShvYmplY3QpOworfQorCisjaWYgR1RLX0NIRUNLX1ZFUlNJT04o
MywgOTgsIDUpCitzdGF0aWMgdm9pZCBicm93c2VyU2VhcmNoQm94U2l6ZUFsbG9jYXRlKEd0a1dp
ZGdldCAqd2lkZ2V0LCBpbnQgd2lkdGgsIGludCBoZWlnaHQsIGludCBiYXNlbGluZSkKK3sKKyAg
ICBHVEtfV0lER0VUX0NMQVNTKGJyb3dzZXJfc2VhcmNoX2JveF9wYXJlbnRfY2xhc3MpLT5zaXpl
X2FsbG9jYXRlKHdpZGdldCwgd2lkdGgsIGhlaWdodCwgYmFzZWxpbmUpOworCisgICAgQnJvd3Nl
clNlYXJjaEJveCAqc2VhcmNoQm94ID0gQlJPV1NFUl9TRUFSQ0hfQk9YKHdpZGdldCk7CisgICAg
aWYgKHNlYXJjaEJveC0+b3B0aW9uc1BvcG92ZXIpCisgICAgICAgIGd0a19uYXRpdmVfY2hlY2tf
cmVzaXplKEdUS19OQVRJVkUoc2VhcmNoQm94LT5vcHRpb25zUG9wb3ZlcikpOworfQorI2VuZGlm
CisKK3N0YXRpYyB2b2lkIGJyb3dzZXJfc2VhcmNoX2JveF9jbGFzc19pbml0KEJyb3dzZXJTZWFy
Y2hCb3hDbGFzcyAqa2xhc3MpCit7CisgICAgR09iamVjdENsYXNzICpnT2JqZWN0Q2xhc3MgPSBH
X09CSkVDVF9DTEFTUyhrbGFzcyk7CisgICAgZ09iamVjdENsYXNzLT5maW5hbGl6ZSA9IGJyb3dz
ZXJTZWFyY2hCb3hGaW5hbGl6ZTsKKyAgICBnT2JqZWN0Q2xhc3MtPmRpc3Bvc2UgPSBicm93c2Vy
U2VhcmNoQm94RGlzcG9zZTsKKworI2lmIEdUS19DSEVDS19WRVJTSU9OKDMsIDk4LCA1KQorICAg
IEd0a1dpZGdldENsYXNzICp3aWRnZXRDbGFzcyA9IEdUS19XSURHRVRfQ0xBU1Moa2xhc3MpOwor
ICAgIHdpZGdldENsYXNzLT5zaXplX2FsbG9jYXRlID0gYnJvd3NlclNlYXJjaEJveFNpemVBbGxv
Y2F0ZTsKKyNlbmRpZgorfQorCitHdGtXaWRnZXQgKmJyb3dzZXJfc2VhcmNoX2JveF9uZXcoV2Vi
S2l0V2ViVmlldyAqd2ViVmlldykKK3sKKyAgICBnX3JldHVybl92YWxfaWZfZmFpbChXRUJLSVRf
SVNfV0VCX1ZJRVcod2ViVmlldyksIE5VTEwpOworCisgICAgR3RrV2lkZ2V0ICpzZWFyY2hCb3gg
PSBHVEtfV0lER0VUKGdfb2JqZWN0X25ldyhCUk9XU0VSX1RZUEVfU0VBUkNIX0JPWCwgTlVMTCkp
OworICAgIEJST1dTRVJfU0VBUkNIX0JPWChzZWFyY2hCb3gpLT53ZWJWaWV3ID0gZ19vYmplY3Rf
cmVmKHdlYlZpZXcpOworCisgICAgV2ViS2l0RmluZENvbnRyb2xsZXIgKmNvbnRyb2xsZXIgPSB3
ZWJraXRfd2ViX3ZpZXdfZ2V0X2ZpbmRfY29udHJvbGxlcih3ZWJWaWV3KTsKKyAgICBnX3NpZ25h
bF9jb25uZWN0X3N3YXBwZWQoY29udHJvbGxlciwgImZhaWxlZC10by1maW5kLXRleHQiLCBHX0NB
TExCQUNLKGZpbmRDb250cm9sbGVyRmFpbGVkVG9GaW5kVGV4dENhbGxiYWNrKSwgc2VhcmNoQm94
KTsKKyAgICBnX3NpZ25hbF9jb25uZWN0X3N3YXBwZWQoY29udHJvbGxlciwgImZvdW5kLXRleHQi
LCBHX0NBTExCQUNLKGZpbmRDb250cm9sbGVyRm91bmRUZXh0Q2FsbGJhY2spLCBzZWFyY2hCb3gp
OworCisgICAgcmV0dXJuIHNlYXJjaEJveDsKK30KKworR3RrRW50cnkgKmJyb3dzZXJfc2VhcmNo
X2JveF9nZXRfZW50cnkoQnJvd3NlclNlYXJjaEJveCAqc2VhcmNoQm94KQoreworICAgIGdfcmV0
dXJuX3ZhbF9pZl9mYWlsKEJST1dTRVJfSVNfU0VBUkNIX0JPWChzZWFyY2hCb3gpLCBOVUxMKTsK
KworICAgIHJldHVybiBHVEtfRU5UUlkoc2VhcmNoQm94LT5lbnRyeSk7Cit9CmRpZmYgLS1naXQg
YS9Ub29scy9NaW5pQnJvd3Nlci9ndGsvQnJvd3NlclNlYXJjaEJhci5oIGIvVG9vbHMvTWluaUJy
b3dzZXIvZ3RrL0Jyb3dzZXJTZWFyY2hCb3guaApzaW1pbGFyaXR5IGluZGV4IDUzJQpyZW5hbWUg
ZnJvbSBUb29scy9NaW5pQnJvd3Nlci9ndGsvQnJvd3NlclNlYXJjaEJhci5oCnJlbmFtZSB0byBU
b29scy9NaW5pQnJvd3Nlci9ndGsvQnJvd3NlclNlYXJjaEJveC5oCmluZGV4IDA1Nzk0ZGVjMjQx
NS4uODRiNmJhOGEwZTFjIDEwMDY0NAotLS0gYS9Ub29scy9NaW5pQnJvd3Nlci9ndGsvQnJvd3Nl
clNlYXJjaEJhci5oCisrKyBiL1Rvb2xzL01pbmlCcm93c2VyL2d0ay9Ccm93c2VyU2VhcmNoQm94
LmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IChDKSAyMDEzIElnYWxpYSBTLkwu
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTMsIDIwMjAgSWdhbGlhIFMuTC4KICAqCiAgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKICAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwpAQCAtMjMsNDAgKzIzLDMzIEBACiAgKiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuCiAgKi8KIAotI2lmbmRlZiBCcm93c2VyU2VhcmNoQmFyX2gKLSNkZWZp
bmUgQnJvd3NlclNlYXJjaEJhcl9oCisjaWZuZGVmIEJyb3dzZXJTZWFyY2hCb3hfaAorI2RlZmlu
ZSBCcm93c2VyU2VhcmNoQm94X2gKIAogI2luY2x1ZGUgPGd0ay9ndGsuaD4KICNpbmNsdWRlIDx3
ZWJraXQyL3dlYmtpdDIuaD4KIAotI2lmICFHVEtfQ0hFQ0tfVkVSU0lPTigzLCA5OCwgMCkKLQog
R19CRUdJTl9ERUNMUwogCi0jZGVmaW5lIEJST1dTRVJfVFlQRV9TRUFSQ0hfQkFSICAgICAgICAg
ICAgKGJyb3dzZXJfc2VhcmNoX2Jhcl9nZXRfdHlwZSgpKQotI2RlZmluZSBCUk9XU0VSX1NFQVJD
SF9CQVIob2JqKSAgICAgICAgICAgIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfQ0FTVCgob2JqKSwg
QlJPV1NFUl9UWVBFX1NFQVJDSF9CQVIsIEJyb3dzZXJTZWFyY2hCYXIpKQotI2RlZmluZSBCUk9X
U0VSX0lTX1NFQVJDSF9CQVIob2JqKSAgICAgICAgIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfVFlQ
RSgob2JqKSwgQlJPV1NFUl9UWVBFX1NFQVJDSF9CQVIpKQotI2RlZmluZSBCUk9XU0VSX1NFQVJD
SF9CQVJfQ0xBU1Moa2xhc3MpICAgIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfQ0FTVCgoa2xhc3MpLCAg
QlJPV1NFUl9UWVBFX1NFQVJDSF9CQVIsIEJyb3dzZXJTZWFyY2hCYXJDbGFzcykpCi0jZGVmaW5l
IEJST1dTRVJfSVNfU0VBUkNIX0JBUl9DTEFTUyhrbGFzcykgKEdfVFlQRV9DSEVDS19DTEFTU19U
WVBFKChrbGFzcyksICBCUk9XU0VSX1RZUEVfU0VBUkNIX0JBUikpCi0jZGVmaW5lIEJST1dTRVJf
U0VBUkNIX0JBUl9HRVRfQ0xBU1Mob2JqKSAgKEdfVFlQRV9JTlNUQU5DRV9HRVRfQ0xBU1MoKG9i
aiksICBCUk9XU0VSX1RZUEVfU0VBUkNIX0JBUiwgQnJvd3NlclNlYXJjaEJhckNsYXNzKSkKKyNk
ZWZpbmUgQlJPV1NFUl9UWVBFX1NFQVJDSF9CT1ggICAgICAgICAgICAoYnJvd3Nlcl9zZWFyY2hf
Ym94X2dldF90eXBlKCkpCisjZGVmaW5lIEJST1dTRVJfU0VBUkNIX0JPWChvYmopICAgICAgICAg
ICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9DQVNUKChvYmopLCBCUk9XU0VSX1RZUEVfU0VBUkNI
X0JPWCwgQnJvd3NlclNlYXJjaEJveCkpCisjZGVmaW5lIEJST1dTRVJfSVNfU0VBUkNIX0JPWChv
YmopICAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9UWVBFKChvYmopLCBCUk9XU0VSX1RZ
UEVfU0VBUkNIX0JPWCkpCisjZGVmaW5lIEJST1dTRVJfU0VBUkNIX0JPWF9DTEFTUyhrbGFzcykg
ICAgKEdfVFlQRV9DSEVDS19DTEFTU19DQVNUKChrbGFzcyksICBCUk9XU0VSX1RZUEVfU0VBUkNI
X0JPWCwgQnJvd3NlclNlYXJjaEJveENsYXNzKSkKKyNkZWZpbmUgQlJPV1NFUl9JU19TRUFSQ0hf
Qk9YX0NMQVNTKGtsYXNzKSAoR19UWVBFX0NIRUNLX0NMQVNTX1RZUEUoKGtsYXNzKSwgIEJST1dT
RVJfVFlQRV9TRUFSQ0hfQk9YKSkKKyNkZWZpbmUgQlJPV1NFUl9TRUFSQ0hfQk9YX0dFVF9DTEFT
UyhvYmopICAoR19UWVBFX0lOU1RBTkNFX0dFVF9DTEFTUygob2JqKSwgIEJST1dTRVJfVFlQRV9T
RUFSQ0hfQk9YLCBCcm93c2VyU2VhcmNoQm94Q2xhc3MpKQogCi10eXBlZGVmIHN0cnVjdCBfQnJv
d3NlclNlYXJjaEJhciAgICAgICBCcm93c2VyU2VhcmNoQmFyOwotdHlwZWRlZiBzdHJ1Y3QgX0Jy
b3dzZXJTZWFyY2hCYXJDbGFzcyAgQnJvd3NlclNlYXJjaEJhckNsYXNzOwordHlwZWRlZiBzdHJ1
Y3QgX0Jyb3dzZXJTZWFyY2hCb3ggICAgICAgQnJvd3NlclNlYXJjaEJveDsKK3R5cGVkZWYgc3Ry
dWN0IF9Ccm93c2VyU2VhcmNoQm94Q2xhc3MgIEJyb3dzZXJTZWFyY2hCb3hDbGFzczsKIAotc3Ry
dWN0IF9Ccm93c2VyU2VhcmNoQmFyQ2xhc3MgewotICAgIEd0a1NlYXJjaEJhckNsYXNzIHBhcmVu
dF9jbGFzczsKK3N0cnVjdCBfQnJvd3NlclNlYXJjaEJveENsYXNzIHsKKyAgICBHdGtCb3hDbGFz
cyBwYXJlbnRfY2xhc3M7CiB9OwogCi1HVHlwZSBicm93c2VyX3NlYXJjaF9iYXJfZ2V0X3R5cGUo
dm9pZCk7Ci0KLUd0a1dpZGdldCAqYnJvd3Nlcl9zZWFyY2hfYmFyX25ldyhXZWJLaXRXZWJWaWV3
ICopOwotdm9pZCBicm93c2VyX3NlYXJjaF9iYXJfb3BlbihCcm93c2VyU2VhcmNoQmFyICopOwot
dm9pZCBicm93c2VyX3NlYXJjaF9iYXJfY2xvc2UoQnJvd3NlclNlYXJjaEJhciAqKTsKLWdib29s
ZWFuIGJyb3dzZXJfc2VhcmNoX2Jhcl9pc19vcGVuKEJyb3dzZXJTZWFyY2hCYXIgKik7CitHVHlw
ZSBicm93c2VyX3NlYXJjaF9ib3hfZ2V0X3R5cGUodm9pZCk7CiAKK0d0a1dpZGdldCAqYnJvd3Nl
cl9zZWFyY2hfYm94X25ldyhXZWJLaXRXZWJWaWV3ICopOworR3RrRW50cnkgKmJyb3dzZXJfc2Vh
cmNoX2JveF9nZXRfZW50cnkoQnJvd3NlclNlYXJjaEJveCAqKTsKIAogR19FTkRfREVDTFMKIAog
I2VuZGlmCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvVG9vbHMvTWluaUJyb3dzZXIvZ3RrL0Jyb3dz
ZXJTZXR0aW5nc0RpYWxvZy5jIGIvVG9vbHMvTWluaUJyb3dzZXIvZ3RrL0Jyb3dzZXJTZXR0aW5n
c0RpYWxvZy5jCmluZGV4IGQ3NzU3NjQwNGU4NC4uMDgxNWYzN2YzNjhmIDEwMDY0NAotLS0gYS9U
b29scy9NaW5pQnJvd3Nlci9ndGsvQnJvd3NlclNldHRpbmdzRGlhbG9nLmMKKysrIGIvVG9vbHMv
TWluaUJyb3dzZXIvZ3RrL0Jyb3dzZXJTZXR0aW5nc0RpYWxvZy5jCkBAIC0yNiw4ICsyNiw2IEBA
CiAjaW5jbHVkZSAiQnJvd3NlclNldHRpbmdzRGlhbG9nLmgiCiAjaW5jbHVkZSAiQnJvd3NlckNl
bGxSZW5kZXJlclZhcmlhbnQuaCIKIAotI2lmICFHVEtfQ0hFQ0tfVkVSU0lPTigzLCA5OCwgMCkK
LQogZW51bSB7CiAgICAgUFJPUF8wLAogCkBAIC0xMjksMTQgKzEyNywyMyBAQCBzdGF0aWMgdm9p
ZCBicm93c2VyX3NldHRpbmdzX2RpYWxvZ19pbml0KEJyb3dzZXJTZXR0aW5nc0RpYWxvZyAqZGlh
bG9nKQogICAgIGd0a19ib3hfc2V0X3NwYWNpbmcoY29udGVudEFyZWEsIDIpOwogCiAgICAgZ3Rr
X3dpbmRvd19zZXRfZGVmYXVsdF9zaXplKEdUS19XSU5ET1coZGlhbG9nKSwgNjAwLCA0MDApOwor
I2lmICFHVEtfQ0hFQ0tfVkVSU0lPTigzLCA5OCwgNSkKICAgICBndGtfd2luZG93X3NldF90eXBl
X2hpbnQoR1RLX1dJTkRPVyhkaWFsb2cpLCBHREtfV0lORE9XX1RZUEVfSElOVF9ESUFMT0cpOwor
I2VuZGlmCiAgICAgZ3RrX3dpbmRvd19zZXRfdGl0bGUoR1RLX1dJTkRPVyhkaWFsb2cpLCAiV2Vi
S2l0IFZpZXcgU2V0dGluZ3MiKTsKICAgICBndGtfd2luZG93X3NldF9kZXN0cm95X3dpdGhfcGFy
ZW50KEdUS19XSU5ET1coZGlhbG9nKSwgVFJVRSk7Ci0gICAgZ3RrX2NvbnRhaW5lcl9zZXRfYm9y
ZGVyX3dpZHRoKEdUS19DT05UQUlORVIoZGlhbG9nKSwgNSk7CiAgICAgZ3RrX2RpYWxvZ19hZGRf
YnV0dG9uKEdUS19ESUFMT0coZGlhbG9nKSwgIl9DbG9zZSIsIEdUS19SRVNQT05TRV9DTE9TRSk7
CiAgICAgZ3RrX2RpYWxvZ19zZXRfZGVmYXVsdF9yZXNwb25zZShHVEtfRElBTE9HKGRpYWxvZyks
IEdUS19SRVNQT05TRV9DTE9TRSk7CiAKICAgICBHdGtXaWRnZXQgKnNjcm9sbGVkV2luZG93ID0g
Z3RrX3Njcm9sbGVkX3dpbmRvd19uZXcoTlVMTCwgTlVMTCk7CisgICAgZ3RrX3dpZGdldF9zZXRf
bWFyZ2luX3N0YXJ0KHNjcm9sbGVkV2luZG93LCA1KTsKKyAgICBndGtfd2lkZ2V0X3NldF9tYXJn
aW5fZW5kKHNjcm9sbGVkV2luZG93LCA1KTsKKyAgICBndGtfd2lkZ2V0X3NldF9tYXJnaW5fdG9w
KHNjcm9sbGVkV2luZG93LCA1KTsKKyAgICBndGtfd2lkZ2V0X3NldF9tYXJnaW5fYm90dG9tKHNj
cm9sbGVkV2luZG93LCA1KTsKKyAgICBndGtfd2lkZ2V0X3NldF9oYWxpZ24oc2Nyb2xsZWRXaW5k
b3csIEdUS19BTElHTl9GSUxMKTsKKyAgICBndGtfd2lkZ2V0X3NldF92YWxpZ24oc2Nyb2xsZWRX
aW5kb3csIEdUS19BTElHTl9GSUxMKTsKKyAgICBndGtfd2lkZ2V0X3NldF9oZXhwYW5kKHNjcm9s
bGVkV2luZG93LCBUUlVFKTsKKyAgICBndGtfd2lkZ2V0X3NldF92ZXhwYW5kKHNjcm9sbGVkV2lu
ZG93LCBUUlVFKTsKICAgICBkaWFsb2ctPnNldHRpbmdzTGlzdCA9IGd0a190cmVlX3ZpZXdfbmV3
KCk7CiAgICAgR3RrQ2VsbFJlbmRlcmVyICpyZW5kZXJlciA9IGd0a19jZWxsX3JlbmRlcmVyX3Rl
eHRfbmV3KCk7CiAgICAgZ3RrX3RyZWVfdmlld19pbnNlcnRfY29sdW1uX3dpdGhfYXR0cmlidXRl
cyhHVEtfVFJFRV9WSUVXKGRpYWxvZy0+c2V0dGluZ3NMaXN0KSwKQEAgLTE1MiwxMyArMTU5LDIz
IEBAIHN0YXRpYyB2b2lkIGJyb3dzZXJfc2V0dGluZ3NfZGlhbG9nX2luaXQoQnJvd3NlclNldHRp
bmdzRGlhbG9nICpkaWFsb2cpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBOVUxMKTsKICAgICBndGtfdHJlZV92aWV3X3NldF90b29sdGlwX2NvbHVtbihH
VEtfVFJFRV9WSUVXKGRpYWxvZy0+c2V0dGluZ3NMaXN0KSwgU0VUVElOR1NfTElTVF9DT0xVTU5f
QkxVUkIpOwogCisjaWYgR1RLX0NIRUNLX1ZFUlNJT04oMywgOTgsIDUpCisgICAgZ3RrX3Njcm9s
bGVkX3dpbmRvd19zZXRfY2hpbGQoR1RLX1NDUk9MTEVEX1dJTkRPVyhzY3JvbGxlZFdpbmRvdyks
IGRpYWxvZy0+c2V0dGluZ3NMaXN0KTsKKyNlbHNlCiAgICAgZ3RrX2NvbnRhaW5lcl9hZGQoR1RL
X0NPTlRBSU5FUihzY3JvbGxlZFdpbmRvdyksIGRpYWxvZy0+c2V0dGluZ3NMaXN0KTsKICAgICBn
dGtfd2lkZ2V0X3Nob3coZGlhbG9nLT5zZXR0aW5nc0xpc3QpOworI2VuZGlmCisKKyNpZiBHVEtf
Q0hFQ0tfVkVSU0lPTigzLCA5OCwgNSkKKyAgICBndGtfYm94X2FwcGVuZChjb250ZW50QXJlYSwg
c2Nyb2xsZWRXaW5kb3cpOwogCisgICAgZ19zaWduYWxfY29ubmVjdChkaWFsb2csICJyZXNwb25z
ZSIsIEdfQ0FMTEJBQ0soZ3RrX3dpbmRvd19kZXN0cm95KSwgTlVMTCk7CisjZWxzZQogICAgIGd0
a19ib3hfcGFja19zdGFydChjb250ZW50QXJlYSwgc2Nyb2xsZWRXaW5kb3csIFRSVUUsIFRSVUUs
IDApOwogICAgIGd0a193aWRnZXRfc2hvdyhzY3JvbGxlZFdpbmRvdyk7CiAKICAgICBnX3NpZ25h
bF9jb25uZWN0KGRpYWxvZywgInJlc3BvbnNlIiwgR19DQUxMQkFDSyhndGtfd2lkZ2V0X2Rlc3Ry
b3kpLCBOVUxMKTsKKyNlbmRpZgogfQogCiBzdGF0aWMgdm9pZCBicm93c2VyU2V0dGluZ3NEaWFs
b2dDb25zdHJ1Y3RlZChHT2JqZWN0ICpvYmplY3QpCkBAIC0yMzcsNSArMjU0LDMgQEAgR3RrV2lk
Z2V0ICpicm93c2VyX3NldHRpbmdzX2RpYWxvZ19uZXcoV2ViS2l0U2V0dGluZ3MgKnNldHRpbmdz
KQogCiAgICAgcmV0dXJuIEdUS19XSURHRVQoZ19vYmplY3RfbmV3KEJST1dTRVJfVFlQRV9TRVRU
SU5HU19ESUFMT0csICJzZXR0aW5ncyIsIHNldHRpbmdzLCBOVUxMKSk7CiB9Ci0KLSNlbmRpZgpk
aWZmIC0tZ2l0IGEvVG9vbHMvTWluaUJyb3dzZXIvZ3RrL0Jyb3dzZXJTZXR0aW5nc0RpYWxvZy5o
IGIvVG9vbHMvTWluaUJyb3dzZXIvZ3RrL0Jyb3dzZXJTZXR0aW5nc0RpYWxvZy5oCmluZGV4IDJj
MzM5NzdjMGYzZC4uZjNkYmNkMDQyYzA0IDEwMDY0NAotLS0gYS9Ub29scy9NaW5pQnJvd3Nlci9n
dGsvQnJvd3NlclNldHRpbmdzRGlhbG9nLmgKKysrIGIvVG9vbHMvTWluaUJyb3dzZXIvZ3RrL0Jy
b3dzZXJTZXR0aW5nc0RpYWxvZy5oCkBAIC0yOSw4ICsyOSw2IEBACiAjaW5jbHVkZSA8Z3RrL2d0
ay5oPgogI2luY2x1ZGUgPHdlYmtpdDIvd2Via2l0Mi5oPgogCi0jaWYgIUdUS19DSEVDS19WRVJT
SU9OKDMsIDk4LCAwKQotCiBHX0JFR0lOX0RFQ0xTCiAKICNkZWZpbmUgQlJPV1NFUl9UWVBFX1NF
VFRJTkdTX0RJQUxPRyAgICAgICAgICAgIChicm93c2VyX3NldHRpbmdzX2RpYWxvZ19nZXRfdHlw
ZSgpKQpAQCAtNTAsNSArNDgsMyBAQCBHdGtXaWRnZXQqIGJyb3dzZXJfc2V0dGluZ3NfZGlhbG9n
X25ldyhXZWJLaXRTZXR0aW5ncyAqc2V0dGluZ3MpOwogR19FTkRfREVDTFMKIAogI2VuZGlmCi0K
LSNlbmRpZgpkaWZmIC0tZ2l0IGEvVG9vbHMvTWluaUJyb3dzZXIvZ3RrL0Jyb3dzZXJUYWIuYyBi
L1Rvb2xzL01pbmlCcm93c2VyL2d0ay9Ccm93c2VyVGFiLmMKaW5kZXggN2YzZWE4Y2ZiZTFkLi5l
ZWIwYWY4NzlkMjggMTAwNjQ0Ci0tLSBhL1Rvb2xzL01pbmlCcm93c2VyL2d0ay9Ccm93c2VyVGFi
LmMKKysrIGIvVG9vbHMvTWluaUJyb3dzZXIvZ3RrL0Jyb3dzZXJUYWIuYwpAQCAtMjgsNyArMjgs
NyBAQAogI2VuZGlmCiAjaW5jbHVkZSAiQnJvd3NlclRhYi5oIgogCi0jaW5jbHVkZSAiQnJvd3Nl
clNlYXJjaEJhci5oIgorI2luY2x1ZGUgIkJyb3dzZXJTZWFyY2hCb3guaCIKICNpbmNsdWRlICJC
cm93c2VyV2luZG93LmgiCiAjaW5jbHVkZSA8c3RyaW5nLmg+CiAKQEAgLTQyLDkgKzQyLDcgQEAg
c3RydWN0IF9Ccm93c2VyVGFiIHsKICAgICBHdGtCb3ggcGFyZW50OwogCiAgICAgV2ViS2l0V2Vi
VmlldyAqd2ViVmlldzsKLSNpZiAhR1RLX0NIRUNLX1ZFUlNJT04oMywgOTgsIDApCi0gICAgQnJv
d3NlclNlYXJjaEJhciAqc2VhcmNoQmFyOwotI2VuZGlmCisgICAgR3RrV2lkZ2V0ICpzZWFyY2hC
YXI7CiAgICAgR3RrV2lkZ2V0ICpzdGF0dXNMYWJlbDsKICAgICBnYm9vbGVhbiB3YXNTZWFyY2hp
bmdXaGVuRW50ZXJlZEZ1bGxzY3JlZW47CiAgICAgZ2Jvb2xlYW4gaW5zcGVjdG9ySXNWaXNpYmxl
OwpAQCAtOTgsNyArOTYsNyBAQCBzdGF0aWMgZ2NoYXIgKmdldFdlYlZpZXdPcmlnaW4oV2ViS2l0
V2ViVmlldyAqd2ViVmlldykKIAogICAgIHJldHVybiBvcmlnaW5TdHI7CiB9Ci0jaWYgIUdUS19D
SEVDS19WRVJTSU9OKDMsIDk4LCAwKQorCiBzdGF0aWMgdm9pZCB0aXRsZUNoYW5nZWQoV2ViS2l0
V2ViVmlldyAqd2ViVmlldywgR1BhcmFtU3BlYyAqcHNwZWMsIEJyb3dzZXJUYWIgKnRhYikKIHsK
ICAgICBjb25zdCBjaGFyICp0aXRsZSA9IHdlYmtpdF93ZWJfdmlld19nZXRfdGl0bGUod2ViVmll
dyk7CkBAIC0xMzYsNyArMTM0LDcgQEAgc3RhdGljIGdib29sZWFuIGRlY2lkZVBvbGljeShXZWJL
aXRXZWJWaWV3ICp3ZWJWaWV3LCBXZWJLaXRQb2xpY3lEZWNpc2lvbiAqZGVjaXMKICAgICByZXR1
cm4gVFJVRTsKIH0KIAotI2lmICFHVEtfQ0hFQ0tfVkVSU0lPTigzLCA5OCwgNCkKKyNpZiAhR1RL
X0NIRUNLX1ZFUlNJT04oMywgOTgsIDUpCiBzdGF0aWMgdm9pZCByZW1vdmVDaGlsZElmSW5mb0Jh
cihHdGtXaWRnZXQgKmNoaWxkLCBHdGtDb250YWluZXIgKnRhYikKIHsKICAgICBpZiAoR1RLX0lT
X0lORk9fQkFSKGNoaWxkKSkKQEAgLTE0OSw3ICsxNDcsMTUgQEAgc3RhdGljIHZvaWQgbG9hZENo
YW5nZWQoV2ViS2l0V2ViVmlldyAqd2ViVmlldywgV2ViS2l0TG9hZEV2ZW50IGxvYWRFdmVudCwg
QnJvd3MKICAgICBpZiAobG9hZEV2ZW50ICE9IFdFQktJVF9MT0FEX1NUQVJURUQpCiAgICAgICAg
IHJldHVybjsKIAotI2lmICFHVEtfQ0hFQ0tfVkVSU0lPTigzLCA5OCwgNCkKKyNpZiBHVEtfQ0hF
Q0tfVkVSU0lPTigzLCA5OCwgNSkKKyAgICBHdGtXaWRnZXQgKmNoaWxkID0gZ3RrX3dpZGdldF9n
ZXRfZmlyc3RfY2hpbGQoR1RLX1dJREdFVCh0YWIpKTsKKyAgICB3aGlsZSAoY2hpbGQpIHsKKyAg
ICAgICAgR3RrV2lkZ2V0ICpuZXh0ID0gZ3RrX3dpZGdldF9nZXRfbmV4dF9zaWJsaW5nKGNoaWxk
KTsKKyAgICAgICAgaWYgKEdUS19JU19JTkZPX0JBUihjaGlsZCkpCisJICAgIGd0a193aWRnZXRf
dW5wYXJlbnQoY2hpbGQpOworICAgICAgICBjaGlsZCA9IG5leHQ7CisgICAgfQorI2Vsc2UKICAg
ICBndGtfY29udGFpbmVyX2ZvcmVhY2goR1RLX0NPTlRBSU5FUih0YWIpLCAoR3RrQ2FsbGJhY2sp
cmVtb3ZlQ2hpbGRJZkluZm9CYXIsIHRhYik7CiAjZW5kaWYKIH0KQEAgLTE1OSwyOCArMTY1LDUw
IEBAIHN0YXRpYyBHdGtXaWRnZXQgKmNyZWF0ZUluZm9CYXJRdWVzdGlvbk1lc3NhZ2UoY29uc3Qg
Y2hhciAqdGl0bGUsIGNvbnN0IGNoYXIgKnRlCiAgICAgR3RrV2lkZ2V0ICpkaWFsb2cgPSBndGtf
aW5mb19iYXJfbmV3X3dpdGhfYnV0dG9ucygiTm8iLCBHVEtfUkVTUE9OU0VfTk8sICJZZXMiLCBH
VEtfUkVTUE9OU0VfWUVTLCBOVUxMKTsKICAgICBndGtfaW5mb19iYXJfc2V0X21lc3NhZ2VfdHlw
ZShHVEtfSU5GT19CQVIoZGlhbG9nKSwgR1RLX01FU1NBR0VfUVVFU1RJT04pOwogCisjaWYgR1RL
X0NIRUNLX1ZFUlNJT04oMywgOTgsIDUpCisgICAgR3RrV2lkZ2V0ICpjb250ZW50Qm94ID0gZ3Rr
X2JveF9uZXcoR1RLX09SSUVOVEFUSU9OX1ZFUlRJQ0FMLCAwKTsKKyAgICBndGtfYm94X3NldF9z
cGFjaW5nKEdUS19CT1goY29udGVudEJveCksIDApOworI2Vsc2UKICAgICBHdGtXaWRnZXQgKmNv
bnRlbnRCb3ggPSBndGtfaW5mb19iYXJfZ2V0X2NvbnRlbnRfYXJlYShHVEtfSU5GT19CQVIoZGlh
bG9nKSk7CiAgICAgZ3RrX29yaWVudGFibGVfc2V0X29yaWVudGF0aW9uKEdUS19PUklFTlRBQkxF
KGNvbnRlbnRCb3gpLCBHVEtfT1JJRU5UQVRJT05fVkVSVElDQUwpOwogICAgIGd0a19ib3hfc2V0
X3NwYWNpbmcoR1RLX0JPWChjb250ZW50Qm94KSwgMCk7CisjZW5kaWYKIAogICAgIEd0a0xhYmVs
ICpsYWJlbCA9IEdUS19MQUJFTChndGtfbGFiZWxfbmV3KE5VTEwpKTsKICAgICBnY2hhciAqbWFy
a3VwID0gZ19zdHJkdXBfcHJpbnRmKCI8c3BhbiBzaXplPSd4eC1sYXJnZScgd2VpZ2h0PSdib2xk
Jz4lczwvc3Bhbj4iLCB0aXRsZSk7CiAgICAgZ3RrX2xhYmVsX3NldF9tYXJrdXAobGFiZWwsIG1h
cmt1cCk7CiAgICAgZ19mcmVlKG1hcmt1cCk7CisjaWYgR1RLX0NIRUNLX1ZFUlNJT04oMywgOTgs
IDUpCisgICAgZ3RrX2xhYmVsX3NldF93cmFwKGxhYmVsLCBUUlVFKTsKKyNlbHNlCiAgICAgZ3Rr
X2xhYmVsX3NldF9saW5lX3dyYXAobGFiZWwsIFRSVUUpOworI2VuZGlmCiAgICAgZ3RrX2xhYmVs
X3NldF9zZWxlY3RhYmxlKGxhYmVsLCBUUlVFKTsKICAgICBndGtfbGFiZWxfc2V0X3hhbGlnbihs
YWJlbCwgMC4pOwogICAgIGd0a19sYWJlbF9zZXRfeWFsaWduKGxhYmVsLCAwLjUpOworI2lmIEdU
S19DSEVDS19WRVJTSU9OKDMsIDk4LCA1KQorICAgIGd0a19ib3hfYXBwZW5kKEdUS19CT1goY29u
dGVudEJveCksIEdUS19XSURHRVQobGFiZWwpKTsKKyNlbHNlCiAgICAgZ3RrX2JveF9wYWNrX3N0
YXJ0KEdUS19CT1goY29udGVudEJveCksIEdUS19XSURHRVQobGFiZWwpLCBGQUxTRSwgRkFMU0Us
IDIpOwogICAgIGd0a193aWRnZXRfc2hvdyhHVEtfV0lER0VUKGxhYmVsKSk7CisjZW5kaWYKIAog
ICAgIGxhYmVsID0gR1RLX0xBQkVMKGd0a19sYWJlbF9uZXcodGV4dCkpOworI2lmIEdUS19DSEVD
S19WRVJTSU9OKDMsIDk4LCA1KQorICAgIGd0a19sYWJlbF9zZXRfd3JhcChsYWJlbCwgVFJVRSk7
CisjZWxzZQogICAgIGd0a19sYWJlbF9zZXRfbGluZV93cmFwKGxhYmVsLCBUUlVFKTsKKyNlbmRp
ZgogICAgIGd0a19sYWJlbF9zZXRfc2VsZWN0YWJsZShsYWJlbCwgVFJVRSk7CiAgICAgZ3RrX2xh
YmVsX3NldF94YWxpZ24obGFiZWwsIDAuKTsKICAgICBndGtfbGFiZWxfc2V0X3lhbGlnbihsYWJl
bCwgMC41KTsKKyNpZiBHVEtfQ0hFQ0tfVkVSU0lPTigzLCA5OCwgNSkKKyAgICBndGtfYm94X2Fw
cGVuZChHVEtfQk9YKGNvbnRlbnRCb3gpLCBHVEtfV0lER0VUKGxhYmVsKSk7CisgICAgZ3RrX2lu
Zm9fYmFyX2FkZF9jaGlsZChHVEtfSU5GT19CQVIoZGlhbG9nKSwgY29udGVudEJveCk7CisjZWxz
ZQogICAgIGd0a19ib3hfcGFja19zdGFydChHVEtfQk9YKGNvbnRlbnRCb3gpLCBHVEtfV0lER0VU
KGxhYmVsKSwgRkFMU0UsIEZBTFNFLCAwKTsKICAgICBndGtfd2lkZ2V0X3Nob3coR1RLX1dJREdF
VChsYWJlbCkpOworI2VuZGlmCiAKICAgICByZXR1cm4gZGlhbG9nOwogfQpAQCAtMTk1LDcgKzIy
MywxMSBAQCBzdGF0aWMgdm9pZCB0bHNFcnJvcnNEaWFsb2dSZXNwb25zZShHdGtXaWRnZXQgKmRp
YWxvZywgZ2ludCByZXNwb25zZSwgQnJvd3NlclRhYgogICAgICAgICBzb3VwX3VyaV9mcmVlKHVy
aSk7CiAgICAgICAgIHdlYmtpdF93ZWJfdmlld19sb2FkX3VyaSh0YWItPndlYlZpZXcsIGZhaWxp
bmdVUkkpOwogICAgIH0KKyNpZiBHVEtfQ0hFQ0tfVkVSU0lPTigzLCA5OCwgNSkKKyAgICBndGtf
d2lkZ2V0X3VucGFyZW50KGRpYWxvZyk7CisjZWxzZQogICAgIGd0a193aWRnZXRfZGVzdHJveShk
aWFsb2cpOworI2VuZGlmCiB9CiAKIHN0YXRpYyBnYm9vbGVhbiBsb2FkRmFpbGVkV2l0aFRMU2Vy
cm9ycyhXZWJLaXRXZWJWaWV3ICp3ZWJWaWV3LCBjb25zdCBjaGFyICpmYWlsaW5nVVJJLCBHVGxz
Q2VydGlmaWNhdGUgKmNlcnRpZmljYXRlLCBHVGxzQ2VydGlmaWNhdGVGbGFncyBlcnJvcnMsIEJy
b3dzZXJUYWIgKnRhYikKQEAgLTIwOCw5ICsyNDAsMTMgQEAgc3RhdGljIGdib29sZWFuIGxvYWRG
YWlsZWRXaXRoVExTZXJyb3JzKFdlYktpdFdlYlZpZXcgKndlYlZpZXcsIGNvbnN0IGNoYXIgKmZh
aWwKIAogICAgIGdfc2lnbmFsX2Nvbm5lY3QoZGlhbG9nLCAicmVzcG9uc2UiLCBHX0NBTExCQUNL
KHRsc0Vycm9yc0RpYWxvZ1Jlc3BvbnNlKSwgdGFiKTsKIAorI2lmIEdUS19DSEVDS19WRVJTSU9O
KDMsIDk4LCA1KQorICAgIGd0a19ib3hfcHJlcGVuZChHVEtfQk9YKHRhYiksIGRpYWxvZyk7Cisj
ZWxzZQogICAgIGd0a19ib3hfcGFja19zdGFydChHVEtfQk9YKHRhYiksIGRpYWxvZywgRkFMU0Us
IEZBTFNFLCAwKTsKICAgICBndGtfYm94X3Jlb3JkZXJfY2hpbGQoR1RLX0JPWCh0YWIpLCBkaWFs
b2csIDApOwogICAgIGd0a193aWRnZXRfc2hvdyhkaWFsb2cpOworI2VuZGlmCiAKICAgICByZXR1
cm4gVFJVRTsKIH0KQEAgLTIzOSw3ICsyNzUsMTEgQEAgc3RhdGljIHZvaWQgcGVybWlzc2lvblJl
cXVlc3REaWFsb2dSZXNwb25zZShHdGtXaWRnZXQgKmRpYWxvZywgZ2ludCByZXNwb25zZSwgUGUK
ICAgICAgICAgYnJlYWs7CiAgICAgfQogCisjaWYgR1RLX0NIRUNLX1ZFUlNJT04oMywgOTgsIDUp
CisgICAgZ3RrX3dpZGdldF91bnBhcmVudChkaWFsb2cpOworI2Vsc2UKICAgICBndGtfd2lkZ2V0
X2Rlc3Ryb3koZGlhbG9nKTsKKyNlbmRpZgogICAgIGdfY2xlYXJfcG9pbnRlcigmcmVxdWVzdERh
dGEsIHBlcm1pc3Npb25SZXF1ZXN0RGF0YUZyZWUpOwogfQogCkBAIC0zMDMsOSArMzQzLDEzIEBA
IHN0YXRpYyBnYm9vbGVhbiBkZWNpZGVQZXJtaXNzaW9uUmVxdWVzdChXZWJLaXRXZWJWaWV3ICp3
ZWJWaWV3LCBXZWJLaXRQZXJtaXNzaW9uCiAgICAgZ19zaWduYWxfY29ubmVjdChkaWFsb2csICJy
ZXNwb25zZSIsIEdfQ0FMTEJBQ0socGVybWlzc2lvblJlcXVlc3REaWFsb2dSZXNwb25zZSksIHBl
cm1pc3Npb25SZXF1ZXN0RGF0YU5ldyhyZXF1ZXN0LAogICAgICAgICBnZXRXZWJWaWV3T3JpZ2lu
KHdlYlZpZXcpKSk7CiAKKyNpZiBHVEtfQ0hFQ0tfVkVSU0lPTigzLCA5OCwgNSkKKyAgICBndGtf
Ym94X3ByZXBlbmQoR1RLX0JPWCh0YWIpLCBkaWFsb2cpOworI2Vsc2UKICAgICBndGtfYm94X3Bh
Y2tfc3RhcnQoR1RLX0JPWCh0YWIpLCBkaWFsb2csIEZBTFNFLCBGQUxTRSwgMCk7CiAgICAgZ3Rr
X2JveF9yZW9yZGVyX2NoaWxkKEdUS19CT1godGFiKSwgZGlhbG9nLCAwKTsKICAgICBndGtfd2lk
Z2V0X3Nob3coZGlhbG9nKTsKKyNlbmRpZgogCiAgICAgcmV0dXJuIFRSVUU7CiB9CkBAIC0zMjUs
MTIgKzM2OSwyMSBAQCBzdGF0aWMgdm9pZCBwb3BvdmVyQ29sb3JDbG9zZWQoR3RrV2lkZ2V0ICpw
b3BvdmVyLCBXZWJLaXRDb2xvckNob29zZXJSZXF1ZXN0ICpyZQogc3RhdGljIHZvaWQgY29sb3JD
aG9vc2VyUmVxdWVzdEZpbmlzaGVkKFdlYktpdENvbG9yQ2hvb3NlclJlcXVlc3QgKnJlcXVlc3Qs
IEd0a1dpZGdldCAqcG9wb3ZlcikKIHsKICAgICBnX29iamVjdF91bnJlZihyZXF1ZXN0KTsKKyNp
ZiBHVEtfQ0hFQ0tfVkVSU0lPTigzLCA5OCwgNSkKKyAgICBndGtfd2lkZ2V0X3VucGFyZW50KHBv
cG92ZXIpOworI2Vsc2UKICAgICBndGtfd2lkZ2V0X2Rlc3Ryb3kocG9wb3Zlcik7CisjZW5kaWYK
IH0KIAogc3RhdGljIGdib29sZWFuIHJ1bkNvbG9yQ2hvb3NlckNhbGxiYWNrKFdlYktpdFdlYlZp
ZXcgKndlYlZpZXcsIFdlYktpdENvbG9yQ2hvb3NlclJlcXVlc3QgKnJlcXVlc3QsIEJyb3dzZXJU
YWIgKnRhYikKIHsKKyNpZiBHVEtfQ0hFQ0tfVkVSU0lPTigzLCA5OCwgNSkKKyAgICBHdGtXaWRn
ZXQgKnBvcG92ZXIgPSBndGtfcG9wb3Zlcl9uZXcoKTsKKyAgICBndGtfd2lkZ2V0X3NldF9wYXJl
bnQocG9wb3ZlciwgR1RLX1dJREdFVCh3ZWJWaWV3KSk7CisjZWxzZQogICAgIEd0a1dpZGdldCAq
cG9wb3ZlciA9IGd0a19wb3BvdmVyX25ldyhHVEtfV0lER0VUKHdlYlZpZXcpKTsKKyNlbmRpZgog
CiAgICAgR2RrUmVjdGFuZ2xlIHJlY3RhbmdsZTsKICAgICB3ZWJraXRfY29sb3JfY2hvb3Nlcl9y
ZXF1ZXN0X2dldF9lbGVtZW50X3JlY3RhbmdsZShyZXF1ZXN0LCAmcmVjdGFuZ2xlKTsKQEAgLTM0
MSw4ICszOTQsMTIgQEAgc3RhdGljIGdib29sZWFuIHJ1bkNvbG9yQ2hvb3NlckNhbGxiYWNrKFdl
YktpdFdlYlZpZXcgKndlYlZpZXcsIFdlYktpdENvbG9yQ2hvb3MKICAgICB3ZWJraXRfY29sb3Jf
Y2hvb3Nlcl9yZXF1ZXN0X2dldF9yZ2JhKHJlcXVlc3QsICZyZ2JhKTsKICAgICBndGtfY29sb3Jf
Y2hvb3Nlcl9zZXRfcmdiYShHVEtfQ09MT1JfQ0hPT1NFUihjb2xvckNob29zZXIpLCAmcmdiYSk7
CiAgICAgZ19zaWduYWxfY29ubmVjdChjb2xvckNob29zZXIsICJub3RpZnk6OnJnYmEiLCBHX0NB
TExCQUNLKGNvbG9yQ2hvb3NlclJHQkFDaGFuZ2VkKSwgcmVxdWVzdCk7CisjaWYgR1RLX0NIRUNL
X1ZFUlNJT04oMywgOTgsIDUpCisgICAgZ3RrX3BvcG92ZXJfc2V0X2NoaWxkKEdUS19QT1BPVkVS
KHBvcG92ZXIpLCBjb2xvckNob29zZXIpOworI2Vsc2UKICAgICBndGtfY29udGFpbmVyX2FkZChH
VEtfQ09OVEFJTkVSKHBvcG92ZXIpLCBjb2xvckNob29zZXIpOwogICAgIGd0a193aWRnZXRfc2hv
dyhjb2xvckNob29zZXIpOworI2VuZGlmCiAKICAgICBnX29iamVjdF9yZWYocmVxdWVzdCk7CiAg
ICAgZ19zaWduYWxfY29ubmVjdF9vYmplY3QocG9wb3ZlciwgImhpZGUiLCBHX0NBTExCQUNLKHBv
cG92ZXJDb2xvckNsb3NlZCksIHJlcXVlc3QsIDApOwpAQCAtMzUyLDcgKzQwOSw2IEBAIHN0YXRp
YyBnYm9vbGVhbiBydW5Db2xvckNob29zZXJDYWxsYmFjayhXZWJLaXRXZWJWaWV3ICp3ZWJWaWV3
LCBXZWJLaXRDb2xvckNob29zCiAKICAgICByZXR1cm4gVFJVRTsKIH0KLSNlbmRpZgogCiBzdGF0
aWMgZ2Jvb2xlYW4gaW5zcGVjdG9yT3BlbmVkSW5XaW5kb3coV2ViS2l0V2ViSW5zcGVjdG9yICpp
bnNwZWN0b3IsIEJyb3dzZXJUYWIgKnRhYikKIHsKQEAgLTM4Niw2ICs0NDIsMTggQEAgc3RhdGlj
IHZvaWQgYXVkaW9NdXRlZENoYW5nZWQoV2ViS2l0V2ViVmlldyAqd2ViVmlldywgR1BhcmFtU3Bl
YyAqcHNwZWMsIGdwb2ludGUKICNlbmRpZgogfQogCisjaWYgR1RLX0NIRUNLX1ZFUlNJT04oMywg
OTgsIDUpCitzdGF0aWMgdm9pZCB0YWJDbG9zZUNsaWNrZWQoQnJvd3NlclRhYiAqdGFiKQorewor
ICAgIEd0a1dpZGdldCAqcGFyZW50ID0gZ3RrX3dpZGdldF9nZXRfcGFyZW50KEdUS19XSURHRVQo
dGFiKSk7CisgICAgd2hpbGUgKHBhcmVudCAmJiAhR1RLX0lTX05PVEVCT09LKHBhcmVudCkpCisg
ICAgICAgIHBhcmVudCA9IGd0a193aWRnZXRfZ2V0X3BhcmVudChwYXJlbnQpOworCisgICAgR3Rr
Tm90ZWJvb2sgKm5vdGVib29rID0gR1RLX05PVEVCT09LKHBhcmVudCk7CisgICAgZ3RrX25vdGVi
b29rX3JlbW92ZV9wYWdlKG5vdGVib29rLCBndGtfbm90ZWJvb2tfcGFnZV9udW0obm90ZWJvb2ss
IEdUS19XSURHRVQodGFiKSkpOworfQorI2VuZGlmCisKIHN0YXRpYyB2b2lkIGJyb3dzZXJUYWJT
ZXRQcm9wZXJ0eShHT2JqZWN0ICpvYmplY3QsIGd1aW50IHByb3BJZCwgY29uc3QgR1ZhbHVlICp2
YWx1ZSwgR1BhcmFtU3BlYyAqcHNwZWMpCiB7CiAgICAgQnJvd3NlclRhYiAqdGFiID0gQlJPV1NF
Ul9UQUIob2JqZWN0KTsKQEAgLTQyMiw5ICs0OTAsMjEgQEAgc3RhdGljIHZvaWQgYnJvd3NlclRh
YkNvbnN0cnVjdGVkKEdPYmplY3QgKmdPYmplY3QpCiAKICAgICBHX09CSkVDVF9DTEFTUyhicm93
c2VyX3RhYl9wYXJlbnRfY2xhc3MpLT5jb25zdHJ1Y3RlZChnT2JqZWN0KTsKIAotI2lmICFHVEtf
Q0hFQ0tfVkVSU0lPTigzLCA5OCwgMCkKLSAgICB0YWItPnNlYXJjaEJhciA9IEJST1dTRVJfU0VB
UkNIX0JBUihicm93c2VyX3NlYXJjaF9iYXJfbmV3KHRhYi0+d2ViVmlldykpOwotICAgIGd0a19i
b3hfcGFja19zdGFydChHVEtfQk9YKHRhYiksIEdUS19XSURHRVQodGFiLT5zZWFyY2hCYXIpLCBG
QUxTRSwgRkFMU0UsIDApOworICAgIHRhYi0+c2VhcmNoQmFyID0gZ3RrX3NlYXJjaF9iYXJfbmV3
KCk7CisgICAgR3RrV2lkZ2V0ICpzZWFyY2hCb3ggPSBicm93c2VyX3NlYXJjaF9ib3hfbmV3KHRh
Yi0+d2ViVmlldyk7CisgICAgZ3RrX3NlYXJjaF9iYXJfc2V0X3Nob3dfY2xvc2VfYnV0dG9uKEdU
S19TRUFSQ0hfQkFSKHRhYi0+c2VhcmNoQmFyKSwgVFJVRSk7CisjaWYgR1RLX0NIRUNLX1ZFUlNJ
T04oMywgOTgsIDUpCisgICAgZ3RrX3NlYXJjaF9iYXJfc2V0X2NoaWxkKEdUS19TRUFSQ0hfQkFS
KHRhYi0+c2VhcmNoQmFyKSwgc2VhcmNoQm94KTsKKyAgICBndGtfc2VhcmNoX2Jhcl9jb25uZWN0
X2VudHJ5KEdUS19TRUFSQ0hfQkFSKHRhYi0+c2VhcmNoQmFyKSwKKyAgICAgICAgR1RLX0VESVRB
QkxFKGJyb3dzZXJfc2VhcmNoX2JveF9nZXRfZW50cnkoQlJPV1NFUl9TRUFSQ0hfQk9YKHNlYXJj
aEJveCkpKSk7CisgICAgZ3RrX2JveF9hcHBlbmQoR1RLX0JPWCh0YWIpLCB0YWItPnNlYXJjaEJh
cik7CisjZWxzZQorICAgIGd0a19jb250YWluZXJfYWRkKEdUS19DT05UQUlORVIodGFiLT5zZWFy
Y2hCYXIpLCBzZWFyY2hCb3gpOworICAgIGd0a193aWRnZXRfc2hvdyhzZWFyY2hCb3gpOworICAg
IGd0a19zZWFyY2hfYmFyX2Nvbm5lY3RfZW50cnkoR1RLX1NFQVJDSF9CQVIodGFiLT5zZWFyY2hC
YXIpLAorICAgICAgICBicm93c2VyX3NlYXJjaF9ib3hfZ2V0X2VudHJ5KEJST1dTRVJfU0VBUkNI
X0JPWChzZWFyY2hCb3gpKSk7CisgICAgZ3RrX2NvbnRhaW5lcl9hZGQoR1RLX0NPTlRBSU5FUih0
YWIpLCB0YWItPnNlYXJjaEJhcik7CisgICAgZ3RrX3dpZGdldF9zaG93KHRhYi0+c2VhcmNoQmFy
KTsKICNlbmRpZgogCiAgICAgR3RrV2lkZ2V0ICpvdmVybGF5ID0gZ3RrX292ZXJsYXlfbmV3KCk7
CkBAIC00MzgsMTIgKzUxOCwxMCBAQCBzdGF0aWMgdm9pZCBicm93c2VyVGFiQ29uc3RydWN0ZWQo
R09iamVjdCAqZ09iamVjdCkKICAgICB0YWItPnN0YXR1c0xhYmVsID0gZ3RrX2xhYmVsX25ldyhO
VUxMKTsKICAgICBndGtfd2lkZ2V0X3NldF9oYWxpZ24odGFiLT5zdGF0dXNMYWJlbCwgR1RLX0FM
SUdOX1NUQVJUKTsKICAgICBndGtfd2lkZ2V0X3NldF92YWxpZ24odGFiLT5zdGF0dXNMYWJlbCwg
R1RLX0FMSUdOX0VORCk7Ci0jaWYgIUdUS19DSEVDS19WRVJTSU9OKDMsIDk4LCAwKQogICAgIGd0
a193aWRnZXRfc2V0X21hcmdpbl9zdGFydCh0YWItPnN0YXR1c0xhYmVsLCAxKTsKICAgICBndGtf
d2lkZ2V0X3NldF9tYXJnaW5fZW5kKHRhYi0+c3RhdHVzTGFiZWwsIDEpOwogICAgIGd0a193aWRn
ZXRfc2V0X21hcmdpbl90b3AodGFiLT5zdGF0dXNMYWJlbCwgMSk7CiAgICAgZ3RrX3dpZGdldF9z
ZXRfbWFyZ2luX2JvdHRvbSh0YWItPnN0YXR1c0xhYmVsLCAxKTsKLSNlbmRpZgogICAgIGd0a19v
dmVybGF5X2FkZF9vdmVybGF5KEdUS19PVkVSTEFZKG92ZXJsYXkpLCB0YWItPnN0YXR1c0xhYmVs
KTsKIAogICAgIHRhYi0+ZnVsbFNjcmVlbk1lc3NhZ2VMYWJlbCA9IGd0a19sYWJlbF9uZXcoTlVM
TCk7CkBAIC00NjMsNTMgKzU0MSw3NiBAQCBzdGF0aWMgdm9pZCBicm93c2VyVGFiQ29uc3RydWN0
ZWQoR09iamVjdCAqZ09iamVjdCkKICAgICBndGtfb3ZlcmxheV9hZGRfb3ZlcmxheShHVEtfT1ZF
UkxBWShvdmVybGF5KSwgdGFiLT5wb2ludGVyTG9ja01lc3NhZ2VMYWJlbCk7CiAKICAgICBndGtf
d2lkZ2V0X3NldF92ZXhwYW5kKEdUS19XSURHRVQodGFiLT53ZWJWaWV3KSwgVFJVRSk7Ci0jaWYg
IUdUS19DSEVDS19WRVJTSU9OKDMsIDk4LCAwKQorI2lmIEdUS19DSEVDS19WRVJTSU9OKDMsIDk4
LCA1KQorICAgIGd0a19vdmVybGF5X3NldF9jaGlsZChHVEtfT1ZFUkxBWShvdmVybGF5KSwgR1RL
X1dJREdFVCh0YWItPndlYlZpZXcpKTsKKyNlbHNlCiAgICAgZ3RrX2NvbnRhaW5lcl9hZGQoR1RL
X0NPTlRBSU5FUihvdmVybGF5KSwgR1RLX1dJREdFVCh0YWItPndlYlZpZXcpKTsKICAgICBndGtf
d2lkZ2V0X3Nob3coR1RLX1dJREdFVCh0YWItPndlYlZpZXcpKTsKLSNlbHNlCi0gICAgZ3RrX292
ZXJsYXlfc2V0X2NoaWxkKEdUS19PVkVSTEFZKG92ZXJsYXkpLCBHVEtfV0lER0VUKHRhYi0+d2Vi
VmlldykpOwogI2VuZGlmCiAKLSNpZiAhR1RLX0NIRUNLX1ZFUlNJT04oMywgOTgsIDApCiAgICAg
dGFiLT50aXRsZUJveCA9IGd0a19ib3hfbmV3KEdUS19PUklFTlRBVElPTl9IT1JJWk9OVEFMLCA0
KTsKIAogICAgIEd0a1dpZGdldCAqaGJveCA9IGd0a19ib3hfbmV3KEdUS19PUklFTlRBVElPTl9I
T1JJWk9OVEFMLCA2KTsKICAgICBndGtfd2lkZ2V0X3NldF9oYWxpZ24oaGJveCwgR1RLX0FMSUdO
X0NFTlRFUik7CisgICAgZ3RrX3dpZGdldF9zZXRfaGV4cGFuZChoYm94LCBUUlVFKTsKIAogICAg
IHRhYi0+dGl0bGVTcGlubmVyID0gZ3RrX3NwaW5uZXJfbmV3KCk7CisjaWYgR1RLX0NIRUNLX1ZF
UlNJT04oMywgOTgsIDUpCisgICAgZ3RrX2JveF9hcHBlbmQoR1RLX0JPWChoYm94KSwgdGFiLT50
aXRsZVNwaW5uZXIpOworI2Vsc2UKICAgICBndGtfYm94X3BhY2tfc3RhcnQoR1RLX0JPWChoYm94
KSwgdGFiLT50aXRsZVNwaW5uZXIsIEZBTFNFLCBGQUxTRSwgMCk7CisjZW5kaWYKIAogICAgIHRh
Yi0+dGl0bGVMYWJlbCA9IGd0a19sYWJlbF9uZXcoTlVMTCk7CiAgICAgZ3RrX2xhYmVsX3NldF9l
bGxpcHNpemUoR1RLX0xBQkVMKHRhYi0+dGl0bGVMYWJlbCksIFBBTkdPX0VMTElQU0laRV9FTkQp
OwogICAgIGd0a19sYWJlbF9zZXRfc2luZ2xlX2xpbmVfbW9kZShHVEtfTEFCRUwodGFiLT50aXRs
ZUxhYmVsKSwgVFJVRSk7CisjaWYgR1RLX0NIRUNLX1ZFUlNJT04oMywgOTgsIDUpCisgICAgZ3Rr
X2JveF9hcHBlbmQoR1RLX0JPWChoYm94KSwgdGFiLT50aXRsZUxhYmVsKTsKKyNlbHNlCiAgICAg
Z3RrX2JveF9wYWNrX3N0YXJ0KEdUS19CT1goaGJveCksIHRhYi0+dGl0bGVMYWJlbCwgRkFMU0Us
IEZBTFNFLCAwKTsKICAgICBndGtfd2lkZ2V0X3Nob3codGFiLT50aXRsZUxhYmVsKTsKKyNlbmRp
ZgogCisjaWYgR1RLX0NIRUNLX1ZFUlNJT04oMywgOTgsIDUpCisgICAgZ3RrX2JveF9hcHBlbmQo
R1RLX0JPWCh0YWItPnRpdGxlQm94KSwgaGJveCk7CisjZWxzZQogICAgIGd0a19ib3hfcGFja19z
dGFydChHVEtfQk9YKHRhYi0+dGl0bGVCb3gpLCBoYm94LCBUUlVFLCBUUlVFLCAwKTsKICAgICBn
dGtfd2lkZ2V0X3Nob3coaGJveCk7CisjZW5kaWYKIAotICAgIHRhYi0+dGl0bGVBdWRpb0J1dHRv
biA9IGd0a19idXR0b25fbmV3KCk7Ci0gICAgZ19zaWduYWxfY29ubmVjdCh0YWItPnRpdGxlQXVk
aW9CdXR0b24sICJjbGlja2VkIiwgR19DQUxMQkFDSyhhdWRpb0NsaWNrZWQpLCB0YWIpOworI2lm
IEdUS19DSEVDS19WRVJTSU9OKDMsIDk4LCA1KQorICAgIHRhYi0+dGl0bGVBdWRpb0J1dHRvbiA9
IGd0a19idXR0b25fbmV3X2Zyb21faWNvbl9uYW1lKCJhdWRpby12b2x1bWUtaGlnaC1zeW1ib2xp
YyIpOworICAgIGd0a19idXR0b25fc2V0X2hhc19mcmFtZShHVEtfQlVUVE9OKHRhYi0+dGl0bGVB
dWRpb0J1dHRvbiksIEZBTFNFKTsKKyNlbHNlCisgICAgdGFiLT50aXRsZUF1ZGlvQnV0dG9uID0g
Z3RrX2J1dHRvbl9uZXdfZnJvbV9pY29uX25hbWUoImF1ZGlvLXZvbHVtZS1oaWdoLXN5bWJvbGlj
IiwgR1RLX0lDT05fU0laRV9NRU5VKTsKICAgICBndGtfYnV0dG9uX3NldF9yZWxpZWYoR1RLX0JV
VFRPTih0YWItPnRpdGxlQXVkaW9CdXR0b24pLCBHVEtfUkVMSUVGX05PTkUpOworI2VuZGlmCisg
ICAgZ19zaWduYWxfY29ubmVjdCh0YWItPnRpdGxlQXVkaW9CdXR0b24sICJjbGlja2VkIiwgR19D
QUxMQkFDSyhhdWRpb0NsaWNrZWQpLCB0YWIpOwogICAgIGd0a193aWRnZXRfc2V0X2ZvY3VzX29u
X2NsaWNrKHRhYi0+dGl0bGVBdWRpb0J1dHRvbiwgRkFMU0UpOwogCi0gICAgR3RrV2lkZ2V0ICpp
bWFnZSA9IGd0a19pbWFnZV9uZXdfZnJvbV9pY29uX25hbWUoImF1ZGlvLXZvbHVtZS1oaWdoLXN5
bWJvbGljIiwgR1RLX0lDT05fU0laRV9NRU5VKTsKLSAgICBndGtfYnV0dG9uX3NldF9pbWFnZShH
VEtfQlVUVE9OKHRhYi0+dGl0bGVBdWRpb0J1dHRvbiksIGltYWdlKTsKLSAgICBndGtfd2lkZ2V0
X3Nob3coaW1hZ2UpOwotCisjaWYgR1RLX0NIRUNLX1ZFUlNJT04oMywgOTgsIDUpCisgICAgZ3Rr
X2JveF9hcHBlbmQoR1RLX0JPWCh0YWItPnRpdGxlQm94KSwgdGFiLT50aXRsZUF1ZGlvQnV0dG9u
KTsKKyNlbHNlCiAgICAgZ3RrX2JveF9wYWNrX3N0YXJ0KEdUS19CT1godGFiLT50aXRsZUJveCks
IHRhYi0+dGl0bGVBdWRpb0J1dHRvbiwgRkFMU0UsIEZBTFNFLCAwKTsKKyNlbmRpZgogCi0gICAg
dGFiLT50aXRsZUNsb3NlQnV0dG9uID0gZ3RrX2J1dHRvbl9uZXcoKTsKLSAgICBnX3NpZ25hbF9j
b25uZWN0X3N3YXBwZWQodGFiLT50aXRsZUNsb3NlQnV0dG9uLCAiY2xpY2tlZCIsIEdfQ0FMTEJB
Q0soZ3RrX3dpZGdldF9kZXN0cm95KSwgdGFiKTsKKyNpZiBHVEtfQ0hFQ0tfVkVSU0lPTigzLCA5
OCwgNSkKKyAgICB0YWItPnRpdGxlQ2xvc2VCdXR0b24gPSBndGtfYnV0dG9uX25ld19mcm9tX2lj
b25fbmFtZSgid2luZG93LWNsb3NlLXN5bWJvbGljIik7CisgICAgZ3RrX2J1dHRvbl9zZXRfaGFz
X2ZyYW1lKEdUS19CVVRUT04odGFiLT50aXRsZUNsb3NlQnV0dG9uKSwgRkFMU0UpOworICAgIGdf
c2lnbmFsX2Nvbm5lY3Rfc3dhcHBlZCh0YWItPnRpdGxlQ2xvc2VCdXR0b24sICJjbGlja2VkIiwg
R19DQUxMQkFDSyh0YWJDbG9zZUNsaWNrZWQpLCB0YWIpOworI2Vsc2UKKyAgICB0YWItPnRpdGxl
Q2xvc2VCdXR0b24gPSBndGtfYnV0dG9uX25ld19mcm9tX2ljb25fbmFtZSgid2luZG93LWNsb3Nl
LXN5bWJvbGljIiwgR1RLX0lDT05fU0laRV9NRU5VKTsKICAgICBndGtfYnV0dG9uX3NldF9yZWxp
ZWYoR1RLX0JVVFRPTih0YWItPnRpdGxlQ2xvc2VCdXR0b24pLCBHVEtfUkVMSUVGX05PTkUpOwor
ICAgIGdfc2lnbmFsX2Nvbm5lY3Rfc3dhcHBlZCh0YWItPnRpdGxlQ2xvc2VCdXR0b24sICJjbGlj
a2VkIiwgR19DQUxMQkFDSyhndGtfd2lkZ2V0X2Rlc3Ryb3kpLCB0YWIpOworI2VuZGlmCiAgICAg
Z3RrX3dpZGdldF9zZXRfZm9jdXNfb25fY2xpY2sodGFiLT50aXRsZUNsb3NlQnV0dG9uLCBGQUxT
RSk7CiAKLSAgICBpbWFnZSA9IGd0a19pbWFnZV9uZXdfZnJvbV9pY29uX25hbWUoIndpbmRvdy1j
bG9zZS1zeW1ib2xpYyIsIEdUS19JQ09OX1NJWkVfTUVOVSk7Ci0gICAgZ3RrX2NvbnRhaW5lcl9h
ZGQoR1RLX0NPTlRBSU5FUih0YWItPnRpdGxlQ2xvc2VCdXR0b24pLCBpbWFnZSk7Ci0gICAgZ3Rr
X3dpZGdldF9zaG93KGltYWdlKTsKLQorI2lmIEdUS19DSEVDS19WRVJTSU9OKDMsIDk4LCA1KQor
ICAgIGd0a19ib3hfYXBwZW5kKEdUS19CT1godGFiLT50aXRsZUJveCksIHRhYi0+dGl0bGVDbG9z
ZUJ1dHRvbik7CisjZWxzZQogICAgIGd0a19ib3hfcGFja19zdGFydChHVEtfQk9YKHRhYi0+dGl0
bGVCb3gpLCB0YWItPnRpdGxlQ2xvc2VCdXR0b24sIEZBTFNFLCBGQUxTRSwgMCk7CiAgICAgZ3Rr
X3dpZGdldF9zaG93KHRhYi0+dGl0bGVDbG9zZUJ1dHRvbik7CisjZW5kaWYKIAogICAgIGdfc2ln
bmFsX2Nvbm5lY3QodGFiLT53ZWJWaWV3LCAibm90aWZ5Ojp0aXRsZSIsIEdfQ0FMTEJBQ0sodGl0
bGVDaGFuZ2VkKSwgdGFiKTsKICAgICBnX3NpZ25hbF9jb25uZWN0KHRhYi0+d2ViVmlldywgIm5v
dGlmeTo6aXMtbG9hZGluZyIsIEdfQ0FMTEJBQ0soaXNMb2FkaW5nQ2hhbmdlZCksIHRhYik7CkBA
IC01MjEsNyArNjIyLDYgQEAgc3RhdGljIHZvaWQgYnJvd3NlclRhYkNvbnN0cnVjdGVkKEdPYmpl
Y3QgKmdPYmplY3QpCiAKICAgICBnX29iamVjdF9iaW5kX3Byb3BlcnR5KHRhYi0+d2ViVmlldywg
ImlzLXBsYXlpbmctYXVkaW8iLCB0YWItPnRpdGxlQXVkaW9CdXR0b24sICJ2aXNpYmxlIiwgR19C
SU5ESU5HX0RFRkFVTFQgfCBHX0JJTkRJTkdfU1lOQ19DUkVBVEUpOwogICAgIGdfc2lnbmFsX2Nv
bm5lY3QodGFiLT53ZWJWaWV3LCAibm90aWZ5Ojppcy1tdXRlZCIsIEdfQ0FMTEJBQ0soYXVkaW9N
dXRlZENoYW5nZWQpLCB0YWIpOwotI2VuZGlmCiAKICAgICBXZWJLaXRXZWJJbnNwZWN0b3IgKmlu
c3BlY3RvciA9IHdlYmtpdF93ZWJfdmlld19nZXRfaW5zcGVjdG9yKHRhYi0+d2ViVmlldyk7CiAg
ICAgZ19zaWduYWxfY29ubmVjdChpbnNwZWN0b3IsICJvcGVuLXdpbmRvdyIsIEdfQ0FMTEJBQ0so
aW5zcGVjdG9yT3BlbmVkSW5XaW5kb3cpLCB0YWIpOwpAQCAtNjIxLDIyICs3MjEsMjggQEAgdm9p
ZCBicm93c2VyX3RhYl90b2dnbGVfaW5zcGVjdG9yKEJyb3dzZXJUYWIgKnRhYikKICAgICAgICAg
d2Via2l0X3dlYl9pbnNwZWN0b3JfY2xvc2UoaW5zcGVjdG9yKTsKIH0KIAorc3RhdGljIGdib29s
ZWFuIGJyb3dzZXJUYWJJc1NlYXJjaEJhck9wZW4oQnJvd3NlclRhYiAqdGFiKQoreworI2lmIEdU
S19DSEVDS19WRVJTSU9OKDMsIDk4LCA1KQorICAgIEd0a1dpZGdldCAqcmV2ZWFsZXIgPSBndGtf
d2lkZ2V0X2dldF9maXJzdF9jaGlsZCh0YWItPnNlYXJjaEJhcik7CisjZWxzZQorICAgIEd0a1dp
ZGdldCAqcmV2ZWFsZXIgPSBndGtfYmluX2dldF9jaGlsZChHVEtfQklOKHRhYi0+c2VhcmNoQmFy
KSk7CisjZW5kaWYKKyAgICByZXR1cm4gZ3RrX3JldmVhbGVyX2dldF9yZXZlYWxfY2hpbGQoR1RL
X1JFVkVBTEVSKHJldmVhbGVyKSk7Cit9CisKIHZvaWQgYnJvd3Nlcl90YWJfc3RhcnRfc2VhcmNo
KEJyb3dzZXJUYWIgKnRhYikKIHsKICAgICBnX3JldHVybl9pZl9mYWlsKEJST1dTRVJfSVNfVEFC
KHRhYikpOwotI2lmICFHVEtfQ0hFQ0tfVkVSU0lPTigzLCA5OCwgMCkKLSAgICBpZiAoIWJyb3dz
ZXJfc2VhcmNoX2Jhcl9pc19vcGVuKHRhYi0+c2VhcmNoQmFyKSkKLSAgICAgICAgYnJvd3Nlcl9z
ZWFyY2hfYmFyX29wZW4odGFiLT5zZWFyY2hCYXIpOwotI2VuZGlmCisgICAgaWYgKCFicm93c2Vy
VGFiSXNTZWFyY2hCYXJPcGVuKHRhYikpCisgICAgICAgIGd0a19zZWFyY2hfYmFyX3NldF9zZWFy
Y2hfbW9kZShHVEtfU0VBUkNIX0JBUih0YWItPnNlYXJjaEJhciksIFRSVUUpOwogfQogCiB2b2lk
IGJyb3dzZXJfdGFiX3N0b3Bfc2VhcmNoKEJyb3dzZXJUYWIgKnRhYikKIHsKICAgICBnX3JldHVy
bl9pZl9mYWlsKEJST1dTRVJfSVNfVEFCKHRhYikpOwotI2lmICFHVEtfQ0hFQ0tfVkVSU0lPTigz
LCA5OCwgMCkKLSAgICBpZiAoYnJvd3Nlcl9zZWFyY2hfYmFyX2lzX29wZW4odGFiLT5zZWFyY2hC
YXIpKQotICAgICAgICBicm93c2VyX3NlYXJjaF9iYXJfY2xvc2UodGFiLT5zZWFyY2hCYXIpOwot
I2VuZGlmCisgICAgaWYgKGJyb3dzZXJUYWJJc1NlYXJjaEJhck9wZW4odGFiKSkKKyAgICAgICAg
Z3RrX3NlYXJjaF9iYXJfc2V0X3NlYXJjaF9tb2RlKEdUS19TRUFSQ0hfQkFSKHRhYi0+c2VhcmNo
QmFyKSwgRkFMU0UpOwogfQogCiBzdGF0aWMgZ2Jvb2xlYW4gZnVsbFNjcmVlbk1lc3NhZ2VUaW1l
b3V0Q2FsbGJhY2soQnJvd3NlclRhYiAqdGFiKQpAQCAtNjYzLDEwICs3NjksOCBAQCB2b2lkIGJy
b3dzZXJfdGFiX2VudGVyX2Z1bGxzY3JlZW4oQnJvd3NlclRhYiAqdGFiKQogICAgIHRhYi0+ZnVs
bFNjcmVlbk1lc3NhZ2VMYWJlbElkID0gZ190aW1lb3V0X2FkZF9zZWNvbmRzKDIsIChHU291cmNl
RnVuYylmdWxsU2NyZWVuTWVzc2FnZVRpbWVvdXRDYWxsYmFjaywgdGFiKTsKICAgICBnX3NvdXJj
ZV9zZXRfbmFtZV9ieV9pZCh0YWItPmZ1bGxTY3JlZW5NZXNzYWdlTGFiZWxJZCwgIltXZWJLaXRd
IGZ1bGxTY3JlZW5NZXNzYWdlVGltZW91dENhbGxiYWNrIik7CiAKLSNpZiAhR1RLX0NIRUNLX1ZF
UlNJT04oMywgOTgsIDApCi0gICAgdGFiLT53YXNTZWFyY2hpbmdXaGVuRW50ZXJlZEZ1bGxzY3Jl
ZW4gPSBndGtfd2lkZ2V0X2dldF92aXNpYmxlKEdUS19XSURHRVQodGFiLT5zZWFyY2hCYXIpKTsK
KyAgICB0YWItPndhc1NlYXJjaGluZ1doZW5FbnRlcmVkRnVsbHNjcmVlbiA9IGJyb3dzZXJUYWJJ
c1NlYXJjaEJhck9wZW4odGFiKTsKICAgICBicm93c2VyX3RhYl9zdG9wX3NlYXJjaCh0YWIpOwot
I2VuZGlmCiB9CiAKIHZvaWQgYnJvd3Nlcl90YWJfbGVhdmVfZnVsbHNjcmVlbihCcm93c2VyVGFi
ICp0YWIpCkBAIC02ODAsMTcgKzc4NCwxOSBAQCB2b2lkIGJyb3dzZXJfdGFiX2xlYXZlX2Z1bGxz
Y3JlZW4oQnJvd3NlclRhYiAqdGFiKQogCiAgICAgZ3RrX3dpZGdldF9oaWRlKHRhYi0+ZnVsbFNj
cmVlbk1lc3NhZ2VMYWJlbCk7CiAKLSNpZiAhR1RLX0NIRUNLX1ZFUlNJT04oMywgOTgsIDApCiAg
ICAgaWYgKHRhYi0+d2FzU2VhcmNoaW5nV2hlbkVudGVyZWRGdWxsc2NyZWVuKSB7CiAgICAgICAg
IC8qIE9wZW5pbmcgdGhlIHNlYXJjaCBiYXIgc3RlYWxzIHRoZSBmb2N1cy4gVXN1YWxseSwgd2Ug
d2FudAogICAgICAgICAgKiB0aGlzIGJ1dCBub3Qgd2hlbiBjb21pbmcgYmFjayBmcm9tIGZ1bGxz
Y3JlZW4uCiAgICAgICAgICAqLworI2lmIEdUS19DSEVDS19WRVJTSU9OKDMsIDk4LCA1KQorICAg
ICAgICBHdGtXaW5kb3cgKndpbmRvdyA9IEdUS19XSU5ET1coZ3RrX3dpZGdldF9nZXRfcm9vdChH
VEtfV0lER0VUKHRhYikpKTsKKyNlbHNlCiAgICAgICAgIEd0a1dpbmRvdyAqd2luZG93ID0gR1RL
X1dJTkRPVyhndGtfd2lkZ2V0X2dldF90b3BsZXZlbChHVEtfV0lER0VUKHRhYikpKTsKKyNlbmRp
ZgogICAgICAgICBHdGtXaWRnZXQgKmZvY3VzV2lkZ2V0ID0gZ3RrX3dpbmRvd19nZXRfZm9jdXMo
d2luZG93KTsKICAgICAgICAgYnJvd3Nlcl90YWJfc3RhcnRfc2VhcmNoKHRhYik7CiAgICAgICAg
IGd0a193aW5kb3dfc2V0X2ZvY3VzKHdpbmRvdywgZm9jdXNXaWRnZXQpOwogICAgIH0KLSNlbmRp
ZgogfQogCiB2b2lkIGJyb3dzZXJfdGFiX3NldF9iYWNrZ3JvdW5kX2NvbG9yKEJyb3dzZXJUYWIg
KnRhYiwgR2RrUkdCQSAqcmdiYSkKZGlmZiAtLWdpdCBhL1Rvb2xzL01pbmlCcm93c2VyL2d0ay9C
cm93c2VyV2luZG93LmMgYi9Ub29scy9NaW5pQnJvd3Nlci9ndGsvQnJvd3NlcldpbmRvdy5jCmlu
ZGV4IDU2YmI2OGRlYjdlOS4uMTY1ZGJhNzYwODNjIDEwMDY0NAotLS0gYS9Ub29scy9NaW5pQnJv
d3Nlci9ndGsvQnJvd3NlcldpbmRvdy5jCisrKyBiL1Rvb2xzL01pbmlCcm93c2VyL2d0ay9Ccm93
c2VyV2luZG93LmMKQEAgLTMxLDcgKzMxLDYgQEAKICNpbmNsdWRlICJCcm93c2VyV2luZG93Lmgi
CiAKICNpbmNsdWRlICJCcm93c2VyRG93bmxvYWRzQmFyLmgiCi0jaW5jbHVkZSAiQnJvd3NlclNl
YXJjaEJhci5oIgogI2luY2x1ZGUgIkJyb3dzZXJTZXR0aW5nc0RpYWxvZy5oIgogI2luY2x1ZGUg
IkJyb3dzZXJUYWIuaCIKICNpbmNsdWRlIDxnZGsvZ2Rra2V5c3ltcy5oPgpAQCAtNTAsNiArNDks
NyBAQCBzdHJ1Y3QgX0Jyb3dzZXJXaW5kb3cgewogICAgIEd0a1dpZGdldCAqZWRpdFRvb2xiYXI7
CiAgICAgR3RrV2lkZ2V0ICpzZXR0aW5nc0RpYWxvZzsKICAgICBHdGtXaWRnZXQgKm5vdGVib29r
OworICAgIEdBY3Rpb25Hcm91cCAqZWRpdEFjdGlvbkdyb3VwOwogICAgIEJyb3dzZXJUYWIgKmFj
dGl2ZVRhYjsKICAgICBHdGtXaWRnZXQgKmRvd25sb2Fkc0JhcjsKICAgICBnYm9vbGVhbiBzZWFy
Y2hCYXJWaXNpYmxlOwpAQCAtMTI1LDcgKzEyNSw2IEBAIHN0YXRpYyB2b2lkIGdvRm9yd2FyZENh
bGxiYWNrKEdTaW1wbGVBY3Rpb24gKmFjdGlvbiwgR1ZhcmlhbnQgKnBhcmFtZXRlciwgZ3BvaW50
CiAgICAgd2Via2l0X3dlYl92aWV3X2dvX2ZvcndhcmQod2ViVmlldyk7CiB9CiAKLSNpZiAhR1RL
X0NIRUNLX1ZFUlNJT04oMywgOTgsIDApCiBzdGF0aWMgdm9pZCBzZXR0aW5nc0NhbGxiYWNrKEdT
aW1wbGVBY3Rpb24gKmFjdGlvbiwgR1ZhcmlhbnQgKnBhcmFtZXRlciwgZ3BvaW50ZXIgdXNlckRh
dGEpCiB7CiAgICAgQnJvd3NlcldpbmRvdyAqd2luZG93ID0gQlJPV1NFUl9XSU5ET1codXNlckRh
dGEpOwpAQCAtMTQwLDcgKzEzOSw2IEBAIHN0YXRpYyB2b2lkIHNldHRpbmdzQ2FsbGJhY2soR1Np
bXBsZUFjdGlvbiAqYWN0aW9uLCBHVmFyaWFudCAqcGFyYW1ldGVyLCBncG9pbnRlCiAgICAgZ19v
YmplY3RfYWRkX3dlYWtfcG9pbnRlcihHX09CSkVDVCh3aW5kb3ctPnNldHRpbmdzRGlhbG9nKSwg
KGdwb2ludGVyICopJndpbmRvdy0+c2V0dGluZ3NEaWFsb2cpOwogICAgIGd0a193aWRnZXRfc2hv
dyh3aW5kb3ctPnNldHRpbmdzRGlhbG9nKTsKIH0KLSNlbmRpZgogCiBzdGF0aWMgdm9pZCB3ZWJW
aWV3VVJJQ2hhbmdlZChXZWJLaXRXZWJWaWV3ICp3ZWJWaWV3LCBHUGFyYW1TcGVjICpwc3BlYywg
QnJvd3NlcldpbmRvdyAqd2luZG93KQogewpAQCAtMTY5LDkgKzE2Nyw3IEBAIHN0YXRpYyB2b2lk
IHdlYlZpZXdUaXRsZUNoYW5nZWQoV2ViS2l0V2ViVmlldyAqd2ViVmlldywgR1BhcmFtU3BlYyAq
cHNwZWMsIEJyb3dzCiAKIHN0YXRpYyBnYm9vbGVhbiByZXNldEVudHJ5UHJvZ3Jlc3MoQnJvd3Nl
cldpbmRvdyAqd2luZG93KQogewotI2lmICFHVEtfQ0hFQ0tfVkVSU0lPTigzLCA5OCwgMCkKICAg
ICBndGtfZW50cnlfc2V0X3Byb2dyZXNzX2ZyYWN0aW9uKEdUS19FTlRSWSh3aW5kb3ctPnVyaUVu
dHJ5KSwgMCk7Ci0jZW5kaWYKICAgICB3aW5kb3ctPnJlc2V0RW50cnlQcm9ncmVzc1RpbWVvdXRJ
ZCA9IDA7CiAgICAgcmV0dXJuIEZBTFNFOwogfQpAQCAtMTc5LDkgKzE3NSw3IEBAIHN0YXRpYyBn
Ym9vbGVhbiByZXNldEVudHJ5UHJvZ3Jlc3MoQnJvd3NlcldpbmRvdyAqd2luZG93KQogc3RhdGlj
IHZvaWQgd2ViVmlld0xvYWRQcm9ncmVzc0NoYW5nZWQoV2ViS2l0V2ViVmlldyAqd2ViVmlldywg
R1BhcmFtU3BlYyAqcHNwZWMsIEJyb3dzZXJXaW5kb3cgKndpbmRvdykKIHsKICAgICBnZG91Ymxl
IHByb2dyZXNzID0gd2Via2l0X3dlYl92aWV3X2dldF9lc3RpbWF0ZWRfbG9hZF9wcm9ncmVzcyh3
ZWJWaWV3KTsKLSNpZiAhR1RLX0NIRUNLX1ZFUlNJT04oMywgOTgsIDApCiAgICAgZ3RrX2VudHJ5
X3NldF9wcm9ncmVzc19mcmFjdGlvbihHVEtfRU5UUlkod2luZG93LT51cmlFbnRyeSksIHByb2dy
ZXNzKTsKLSNlbmRpZgogICAgIGlmIChwcm9ncmVzcyA9PSAxLjApIHsKICAgICAgICAgd2luZG93
LT5yZXNldEVudHJ5UHJvZ3Jlc3NUaW1lb3V0SWQgPSBnX3RpbWVvdXRfYWRkKDUwMCwgKEdTb3Vy
Y2VGdW5jKXJlc2V0RW50cnlQcm9ncmVzcywgd2luZG93KTsKICAgICAgICAgZ19zb3VyY2Vfc2V0
X25hbWVfYnlfaWQod2luZG93LT5yZXNldEVudHJ5UHJvZ3Jlc3NUaW1lb3V0SWQsICJbV2ViS2l0
XSByZXNldEVudHJ5UHJvZ3Jlc3MiKTsKQEAgLTIwNSw3ICsxOTksNiBAQCBzdGF0aWMgdm9pZCBk
b3dubG9hZFN0YXJ0ZWQoV2ViS2l0V2ViQ29udGV4dCAqd2ViQ29udGV4dCwgV2ViS2l0RG93bmxv
YWQgKmRvd25sbwogI2VuZGlmCiB9CiAKLSNpZiAhR1RLX0NIRUNLX1ZFUlNJT04oMywgOTgsIDAp
CiBzdGF0aWMgdm9pZCBicm93c2VyV2luZG93SGlzdG9yeUl0ZW1BY3RpdmF0ZWQoQnJvd3Nlcldp
bmRvdyAqd2luZG93LCBHVmFyaWFudCAqcGFyYW1ldGVyLCBHQWN0aW9uICphY3Rpb24pCiB7CiAg
ICAgV2ViS2l0QmFja0ZvcndhcmRMaXN0SXRlbSAqaXRlbSA9IGdfb2JqZWN0X2dldF9kYXRhKEdf
T0JKRUNUKGFjdGlvbiksICJiYWNrLWZvcndhcmQtbGlzdC1pdGVtIik7CkBAIC0yNDYsMTggKzIz
OSwyNiBAQCBzdGF0aWMgdm9pZCBicm93c2VyV2luZG93Q3JlYXRlQmFja0ZvcndhcmRNZW51KEJy
b3dzZXJXaW5kb3cgKndpbmRvdywgR0xpc3QgKmxpcwogICAgICAgICBnX2ZyZWUoYWN0aW9uTmFt
ZSk7CiAgICAgfQogCisjaWYgR1RLX0NIRUNLX1ZFUlNJT04oMywgOTgsIDUpCisgICAgR3RrV2lk
Z2V0ICpwb3BvdmVyID0gZ3RrX3BvcG92ZXJfbWVudV9uZXdfZnJvbV9tb2RlbChHX01FTlVfTU9E
RUwobWVudSkpOworI2Vsc2UKICAgICBHdGtXaWRnZXQgKnBvcG92ZXIgPSBndGtfcG9wb3Zlcl9t
ZW51X25ldygpOwotICAgIGd0a193aWRnZXRfaW5zZXJ0X2FjdGlvbl9ncm91cChwb3BvdmVyLCBp
c0JhY2sgPyAiYmYtYmFjayIgOiAiYmYtZm9yd2FyZCIsIEdfQUNUSU9OX0dST1VQKGFjdGlvbkdy
b3VwKSk7Ci0gICAgZ19vYmplY3RfdW5yZWYoYWN0aW9uR3JvdXApOwogICAgIGd0a19wb3BvdmVy
X2JpbmRfbW9kZWwoR1RLX1BPUE9WRVIocG9wb3ZlciksIEdfTUVOVV9NT0RFTChtZW51KSwgTlVM
TCk7CisjZW5kaWYKICAgICBnX29iamVjdF91bnJlZihtZW51KTsKKyAgICBndGtfd2lkZ2V0X2lu
c2VydF9hY3Rpb25fZ3JvdXAocG9wb3ZlciwgaXNCYWNrID8gImJmLWJhY2siIDogImJmLWZvcndh
cmQiLCBHX0FDVElPTl9HUk9VUChhY3Rpb25Hcm91cCkpOworICAgIGdfb2JqZWN0X3VucmVmKGFj
dGlvbkdyb3VwKTsKIAogICAgIEd0a1dpZGdldCAqYnV0dG9uID0gaXNCYWNrID8gd2luZG93LT5i
YWNrSXRlbSA6IHdpbmRvdy0+Zm9yd2FyZEl0ZW07CisjaWYgR1RLX0NIRUNLX1ZFUlNJT04oMywg
OTgsIDUpCisgICAgZ19vYmplY3Rfc2V0X2RhdGFfZnVsbChHX09CSkVDVChidXR0b24pLCAiaGlz
dG9yeS1wb3BvdmVyIiwgcG9wb3ZlciwgKEdEZXN0cm95Tm90aWZ5KWd0a193aWRnZXRfdW5wYXJl
bnQpOworICAgIGd0a193aWRnZXRfc2V0X3BhcmVudChwb3BvdmVyLCBidXR0b24pOworI2Vsc2UK
ICAgICBndGtfcG9wb3Zlcl9zZXRfcmVsYXRpdmVfdG8oR1RLX1BPUE9WRVIocG9wb3ZlciksIGJ1
dHRvbik7Ci0gICAgZ3RrX3BvcG92ZXJfc2V0X3Bvc2l0aW9uKEdUS19QT1BPVkVSKHBvcG92ZXIp
LCBHVEtfUE9TX0JPVFRPTSk7CiAgICAgZ19vYmplY3Rfc2V0X2RhdGEoR19PQkpFQ1QoYnV0dG9u
KSwgImhpc3RvcnktcG9wb3ZlciIsIHBvcG92ZXIpOwotfQogI2VuZGlmCisgICAgZ3RrX3BvcG92
ZXJfc2V0X3Bvc2l0aW9uKEdUS19QT1BPVkVSKHBvcG92ZXIpLCBHVEtfUE9TX0JPVFRPTSk7Cit9
CiAKIHN0YXRpYyB2b2lkIGJyb3dzZXJXaW5kb3dVcGRhdGVOYXZpZ2F0aW9uTWVudShCcm93c2Vy
V2luZG93ICp3aW5kb3csIFdlYktpdEJhY2tGb3J3YXJkTGlzdCAqYmFja0ZvcndhcmRsaXN0KQog
ewpAQCAtMjY3LDcgKzI2OCw2IEBAIHN0YXRpYyB2b2lkIGJyb3dzZXJXaW5kb3dVcGRhdGVOYXZp
Z2F0aW9uTWVudShCcm93c2VyV2luZG93ICp3aW5kb3csIFdlYktpdEJhY2tGCiAgICAgYWN0aW9u
ID0gZ19hY3Rpb25fbWFwX2xvb2t1cF9hY3Rpb24oR19BQ1RJT05fTUFQKHdpbmRvdyksICJnby1m
b3J3YXJkIik7CiAgICAgZ19zaW1wbGVfYWN0aW9uX3NldF9lbmFibGVkKEdfU0lNUExFX0FDVElP
TihhY3Rpb24pLCB3ZWJraXRfd2ViX3ZpZXdfY2FuX2dvX2ZvcndhcmQod2ViVmlldykpOwogCi0j
aWYgIUdUS19DSEVDS19WRVJTSU9OKDMsIDk4LCAwKQogICAgIEdMaXN0ICpsaXN0ID0gZ19saXN0
X3JldmVyc2Uod2Via2l0X2JhY2tfZm9yd2FyZF9saXN0X2dldF9iYWNrX2xpc3Rfd2l0aF9saW1p
dChiYWNrRm9yd2FyZGxpc3QsIDEwKSk7CiAgICAgYnJvd3NlcldpbmRvd0NyZWF0ZUJhY2tGb3J3
YXJkTWVudSh3aW5kb3csIGxpc3QsIFRSVUUpOwogICAgIGdfbGlzdF9mcmVlKGxpc3QpOwpAQCAt
Mjc1LDEwICsyNzUsMjAgQEAgc3RhdGljIHZvaWQgYnJvd3NlcldpbmRvd1VwZGF0ZU5hdmlnYXRp
b25NZW51KEJyb3dzZXJXaW5kb3cgKndpbmRvdywgV2ViS2l0QmFja0YKICAgICBsaXN0ID0gd2Vi
a2l0X2JhY2tfZm9yd2FyZF9saXN0X2dldF9mb3J3YXJkX2xpc3Rfd2l0aF9saW1pdChiYWNrRm9y
d2FyZGxpc3QsIDEwKTsKICAgICBicm93c2VyV2luZG93Q3JlYXRlQmFja0ZvcndhcmRNZW51KHdp
bmRvdywgbGlzdCwgRkFMU0UpOwogICAgIGdfbGlzdF9mcmVlKGxpc3QpOwotI2VuZGlmCiB9CiAK
LSNpZiAhR1RLX0NIRUNLX1ZFUlNJT04oMywgOTgsIDApCisjaWYgR1RLX0NIRUNLX1ZFUlNJT04o
MywgOTgsIDUpCitzdGF0aWMgdm9pZCBuYXZpZ2F0aW9uQnV0dG9uUHJlc3NlZChHdGtHZXN0dXJl
Q2xpY2sgKmdlc3R1cmUsIGd1aW50IGNsaWNrQ291bnQsIGRvdWJsZSB4LCBkb3VibGUgeSkKK3sK
KyAgICBHZGtFdmVudFNlcXVlbmNlICpzZXF1ZW5jZSA9IGd0a19nZXN0dXJlX3NpbmdsZV9nZXRf
Y3VycmVudF9zZXF1ZW5jZShHVEtfR0VTVFVSRV9TSU5HTEUoZ2VzdHVyZSkpOworICAgIGd0a19n
ZXN0dXJlX3NldF9zZXF1ZW5jZV9zdGF0ZShHVEtfR0VTVFVSRShnZXN0dXJlKSwgc2VxdWVuY2Us
IEdUS19FVkVOVF9TRVFVRU5DRV9DTEFJTUVEKTsKKworICAgIEd0a1dpZGdldCAqYnV0dG9uID0g
Z3RrX2V2ZW50X2NvbnRyb2xsZXJfZ2V0X3dpZGdldChHVEtfRVZFTlRfQ09OVFJPTExFUihnZXN0
dXJlKSk7CisgICAgR3RrV2lkZ2V0ICpwb3BvdmVyID0gZ19vYmplY3RfZ2V0X2RhdGEoR19PQkpF
Q1QoYnV0dG9uKSwgImhpc3RvcnktcG9wb3ZlciIpOworICAgIGlmIChwb3BvdmVyKQorICAgICAg
ICBndGtfcG9wb3Zlcl9wb3B1cChHVEtfUE9QT1ZFUihwb3BvdmVyKSk7Cit9CisjZWxzZQogc3Rh
dGljIGdib29sZWFuIG5hdmlnYXRpb25CdXR0b25QcmVzc0NhbGxiYWNrKEd0a0J1dHRvbiAqYnV0
dG9uLCBHZGtFdmVudCAqZXZlbnQsIEJyb3dzZXJXaW5kb3cgKndpbmRvdykKIHsKICAgICBndWlu
dCBldmVudEJ1dHRvbjsKQEAgLTI5MSw2ICszMDEsNyBAQCBzdGF0aWMgZ2Jvb2xlYW4gbmF2aWdh
dGlvbkJ1dHRvblByZXNzQ2FsbGJhY2soR3RrQnV0dG9uICpidXR0b24sIEdka0V2ZW50ICpldmVu
dAogICAgICAgICByZXR1cm4gR0RLX0VWRU5UX1BST1BBR0FURTsKIAogICAgIGd0a19wb3BvdmVy
X3BvcHVwKEdUS19QT1BPVkVSKHBvcG92ZXIpKTsKKwogICAgIHJldHVybiBHREtfRVZFTlRfU1RP
UDsKIH0KICNlbmRpZgpAQCAtNDk1LDcgKzUwNiwxNyBAQCBzdGF0aWMgZ2Jvb2xlYW4gYnJvd3Nl
cldpbmRvd1pvb21PdXQoQnJvd3NlcldpbmRvdyAqd2luZG93KQogICAgIHJldHVybiBGQUxTRTsK
IH0KIAotI2lmICFHVEtfQ0hFQ0tfVkVSU0lPTigzLCA5OCwgMCkKKyNpZiBHVEtfQ0hFQ0tfVkVS
U0lPTigzLCA5OCwgNSkKK3N0YXRpYyBnYm9vbGVhbiBzY3JvbGxFdmVudENhbGxiYWNrKEJyb3dz
ZXJXaW5kb3cgKndpbmRvdywgZG91YmxlIGRlbHRhWCwgZG91YmxlIGRlbHRhWSwgR3RrRXZlbnRD
b250cm9sbGVyICpjb250cm9sbGVyKQoreworICAgIEdka01vZGlmaWVyVHlwZSBtb2QgPSBndGtf
YWNjZWxlcmF0b3JfZ2V0X2RlZmF1bHRfbW9kX21hc2soKTsKKyAgICBHZGtFdmVudCAqZXZlbnQg
PSBndGtfZXZlbnRfY29udHJvbGxlcl9nZXRfY3VycmVudF9ldmVudChjb250cm9sbGVyKTsKKyAg
ICBpZiAoKGdka19ldmVudF9nZXRfbW9kaWZpZXJfc3RhdGUoZXZlbnQpICYgbW9kKSAhPSBHREtf
Q09OVFJPTF9NQVNLKQorICAgICAgICByZXR1cm4gR0RLX0VWRU5UX1BST1BBR0FURTsKKworICAg
IHJldHVybiBkZWx0YVkgPCAwID8gYnJvd3NlcldpbmRvd1pvb21Jbih3aW5kb3cpIDogYnJvd3Nl
cldpbmRvd1pvb21PdXQod2luZG93KTsKK30KKyNlbHNlCiBzdGF0aWMgZ2Jvb2xlYW4gc2Nyb2xs
RXZlbnRDYWxsYmFjayhXZWJLaXRXZWJWaWV3ICp3ZWJWaWV3LCBjb25zdCBHZGtFdmVudFNjcm9s
bCAqZXZlbnQsIEJyb3dzZXJXaW5kb3cgKndpbmRvdykKIHsKICAgICBHZGtNb2RpZmllclR5cGUg
bW9kID0gZ3RrX2FjY2VsZXJhdG9yX2dldF9kZWZhdWx0X21vZF9tYXNrKCk7CkBAIC01NzAsOCAr
NTkxLDEyIEBAIHN0YXRpYyB2b2lkIGZhdmljb25DaGFuZ2VkKFdlYktpdFdlYlZpZXcgKndlYlZp
ZXcsIEdQYXJhbVNwZWMgKnBhcmFtU3BlYywgQnJvd3NlCiBzdGF0aWMgdm9pZCB3ZWJWaWV3SXNM
b2FkaW5nQ2hhbmdlZChXZWJLaXRXZWJWaWV3ICp3ZWJWaWV3LCBHUGFyYW1TcGVjICpwYXJhbVNw
ZWMsIEJyb3dzZXJXaW5kb3cgKndpbmRvdykKIHsKICAgICBnYm9vbGVhbiBpc0xvYWRpbmcgPSB3
ZWJraXRfd2ViX3ZpZXdfaXNfbG9hZGluZyh3ZWJWaWV3KTsKKyNpZiBHVEtfQ0hFQ0tfVkVSU0lP
TigzLCA5OCwgNSkKKyAgICBndGtfYnV0dG9uX3NldF9pY29uX25hbWUoR1RLX0JVVFRPTih3aW5k
b3ctPnJlbG9hZE9yU3RvcEJ1dHRvbiksIGlzTG9hZGluZyA/ICJwcm9jZXNzLXN0b3Atc3ltYm9s
aWMiIDogInZpZXctcmVmcmVzaC1zeW1ib2xpYyIpOworI2Vsc2UKICAgICBHdGtXaWRnZXQgKmlt
YWdlID0gZ3RrX2J1dHRvbl9nZXRfaW1hZ2UoR1RLX0JVVFRPTih3aW5kb3ctPnJlbG9hZE9yU3Rv
cEJ1dHRvbikpOwogICAgIGdfb2JqZWN0X3NldChpbWFnZSwgImljb24tbmFtZSIsIGlzTG9hZGlu
ZyA/ICJwcm9jZXNzLXN0b3Atc3ltYm9saWMiIDogInZpZXctcmVmcmVzaC1zeW1ib2xpYyIsIE5V
TEwpOworI2VuZGlmCiB9CiAKIHN0YXRpYyB2b2lkIHpvb21JbkNhbGxiYWNrKEdTaW1wbGVBY3Rp
b24gKmFjdGlvbiwgR1ZhcmlhbnQgKnBhcmFtZXRlciwgZ3BvaW50ZXIgdXNlckRhdGEpCkBAIC01
OTAsMTIgKzYxNSwxMCBAQCBzdGF0aWMgdm9pZCBkZWZhdWx0Wm9vbUNhbGxiYWNrKEdTaW1wbGVB
Y3Rpb24gKmFjdGlvbiwgR1ZhcmlhbnQgKnBhcmFtZXRlciwgZ3BvaQogICAgIHdlYmtpdF93ZWJf
dmlld19zZXRfem9vbV9sZXZlbCh3ZWJWaWV3LCBkZWZhdWx0Wm9vbUxldmVsKTsKIH0KIAotI2lm
ICFHVEtfQ0hFQ0tfVkVSU0lPTigzLCA5OCwgMCkKIHN0YXRpYyB2b2lkIHNlYXJjaENhbGxiYWNr
KEdTaW1wbGVBY3Rpb24gKmFjdGlvbiwgR1ZhcmlhbnQgKnBhcmFtZXRlciwgZ3BvaW50ZXIgdXNl
ckRhdGEpCiB7CiAgICAgYnJvd3Nlcl90YWJfc3RhcnRfc2VhcmNoKEJST1dTRVJfV0lORE9XKHVz
ZXJEYXRhKS0+YWN0aXZlVGFiKTsKIH0KLSNlbmRpZgogCiBzdGF0aWMgdm9pZCBuZXdUYWJDYWxs
YmFjayhHU2ltcGxlQWN0aW9uICphY3Rpb24sIEdWYXJpYW50ICpwYXJhbWV0ZXIsIGdwb2ludGVy
IHVzZXJEYXRhKQogewpAQCAtNzA3LDcgKzczMCwyNiBAQCBzdGF0aWMgdm9pZCBlZGl0aW5nQWN0
aW9uQ2FsbGJhY2soR1NpbXBsZUFjdGlvbiAqYWN0aW9uLCBHVmFyaWFudCAqcHJhbWV0ZXIsIGdw
bwogICAgIHdlYmtpdF93ZWJfdmlld19leGVjdXRlX2VkaXRpbmdfY29tbWFuZCh3ZWJWaWV3LCBn
X2FjdGlvbl9nZXRfbmFtZShHX0FDVElPTihhY3Rpb24pKSk7CiB9CiAKLSNpZiAhR1RLX0NIRUNL
X1ZFUlNJT04oMywgOTgsIDApCitzdGF0aWMgdm9pZCBpbnNlcnRJbWFnZURpYWxvZ1Jlc3BvbnNl
KEd0a0RpYWxvZyAqZGlhbG9nLCBpbnQgcmVzcG9uc2UsIEJyb3dzZXJXaW5kb3cgKndpbmRvdykK
K3sKKyAgICBpZiAocmVzcG9uc2UgPT0gR1RLX1JFU1BPTlNFX0FDQ0VQVCkgeworICAgICAgICBH
RmlsZSAqZmlsZSA9IGd0a19maWxlX2Nob29zZXJfZ2V0X2ZpbGUoR1RLX0ZJTEVfQ0hPT1NFUihk
aWFsb2cpKTsKKyAgICAgICAgaWYgKGZpbGUpIHsKKyAgICAgICAgICAgIGNoYXIgKnVyaSA9IGdf
ZmlsZV9nZXRfdXJpKGZpbGUpOworICAgICAgICAgICAgV2ViS2l0V2ViVmlldyAqd2ViVmlldyA9
IGJyb3dzZXJfdGFiX2dldF93ZWJfdmlldyh3aW5kb3ctPmFjdGl2ZVRhYik7CisgICAgICAgICAg
ICB3ZWJraXRfd2ViX3ZpZXdfZXhlY3V0ZV9lZGl0aW5nX2NvbW1hbmRfd2l0aF9hcmd1bWVudCh3
ZWJWaWV3LCBXRUJLSVRfRURJVElOR19DT01NQU5EX0lOU0VSVF9JTUFHRSwgdXJpKTsKKyAgICAg
ICAgICAgIGdfZnJlZSh1cmkpOworICAgICAgICAgICAgZ19vYmplY3RfdW5yZWYoZmlsZSk7Cisg
ICAgICAgIH0KKyAgICB9CisKKyNpZiBHVEtfQ0hFQ0tfVkVSU0lPTigzLCA5OCwgNSkKKyAgICBn
dGtfd2luZG93X2Rlc3Ryb3koR1RLX1dJTkRPVyhkaWFsb2cpKTsKKyNlbHNlCisgICAgZ3RrX3dp
ZGdldF9kZXN0cm95KEdUS19XSURHRVQoZGlhbG9nKSk7CisjZW5kaWYKK30KKwogc3RhdGljIHZv
aWQgaW5zZXJ0SW1hZ2VDb21tYW5kQ2FsbGJhY2soR3RrV2lkZ2V0ICp3aWRnZXQsIEJyb3dzZXJX
aW5kb3cgKndpbmRvdykKIHsKICAgICBHdGtXaWRnZXQgKmZpbGVDaG9vc2VyID0gZ3RrX2ZpbGVf
Y2hvb3Nlcl9kaWFsb2dfbmV3KCJJbnNlcnQgSW1hZ2UiLCBHVEtfV0lORE9XKHdpbmRvdyksIEdU
S19GSUxFX0NIT09TRVJfQUNUSU9OX09QRU4sCkBAIC03MTgsMTYgKzc2MCwzNiBAQCBzdGF0aWMg
dm9pZCBpbnNlcnRJbWFnZUNvbW1hbmRDYWxsYmFjayhHdGtXaWRnZXQgKndpZGdldCwgQnJvd3Nl
cldpbmRvdyAqd2luZG93KQogICAgIGd0a19maWxlX2ZpbHRlcl9hZGRfcGl4YnVmX2Zvcm1hdHMo
ZmlsdGVyKTsKICAgICBndGtfZmlsZV9jaG9vc2VyX3NldF9maWx0ZXIoR1RLX0ZJTEVfQ0hPT1NF
UihmaWxlQ2hvb3NlciksIGZpbHRlcik7CiAKLSAgICBpZiAoZ3RrX2RpYWxvZ19ydW4oR1RLX0RJ
QUxPRyhmaWxlQ2hvb3NlcikpID09IEdUS19SRVNQT05TRV9BQ0NFUFQpIHsKLSAgICAgICAgY2hh
ciAqdXJpID0gZ3RrX2ZpbGVfY2hvb3Nlcl9nZXRfdXJpKEdUS19GSUxFX0NIT09TRVIoZmlsZUNo
b29zZXIpKTsKLSAgICAgICAgaWYgKHVyaSkgewotICAgICAgICAgICAgV2ViS2l0V2ViVmlldyAq
d2ViVmlldyA9IGJyb3dzZXJfdGFiX2dldF93ZWJfdmlldyh3aW5kb3ctPmFjdGl2ZVRhYik7Ci0g
ICAgICAgICAgICB3ZWJraXRfd2ViX3ZpZXdfZXhlY3V0ZV9lZGl0aW5nX2NvbW1hbmRfd2l0aF9h
cmd1bWVudCh3ZWJWaWV3LCBXRUJLSVRfRURJVElOR19DT01NQU5EX0lOU0VSVF9JTUFHRSwgdXJp
KTsKLSAgICAgICAgICAgIGdfZnJlZSh1cmkpOworICAgIGdfc2lnbmFsX2Nvbm5lY3QoZmlsZUNo
b29zZXIsICJyZXNwb25zZSIsIEdfQ0FMTEJBQ0soaW5zZXJ0SW1hZ2VEaWFsb2dSZXNwb25zZSks
IHdpbmRvdyk7CisgICAgZ3RrX3dpZGdldF9zaG93KGZpbGVDaG9vc2VyKTsKK30KKwordHlwZWRl
ZiBzdHJ1Y3QgeworICAgIEd0a1dpZGdldCAqZW50cnk7CisgICAgQnJvd3NlcldpbmRvdyAqd2lu
ZG93OworfSBJbnNlcnRMaW5rRGlhbG9nRGF0YTsKKworc3RhdGljIHZvaWQgaW5zZXJ0TGlua0Rp
YWxvZ1Jlc3BvbnNlKEd0a0RpYWxvZyAqZGlhbG9nLCBpbnQgcmVzcG9uc2UsIEluc2VydExpbmtE
aWFsb2dEYXRhICpkYXRhKQoreworICAgIGlmIChyZXNwb25zZSA9PSBHVEtfUkVTUE9OU0VfQUND
RVBUKSB7CisjaWYgR1RLX0NIRUNLX1ZFUlNJT04oMywgOTgsIDUpCisgICAgICAgIGNvbnN0IGNo
YXIgKnVybCA9IGd0a19lZGl0YWJsZV9nZXRfdGV4dChHVEtfRURJVEFCTEUoZGF0YS0+ZW50cnkp
KTsKKyNlbHNlCisgICAgICAgIGNvbnN0IGNoYXIgKnVybCA9IGd0a19lbnRyeV9nZXRfdGV4dChH
VEtfRU5UUlkoZGF0YS0+ZW50cnkpKTsKKyNlbmRpZgorICAgICAgICBpZiAodXJsICYmICp1cmwp
IHsKKyAgICAgICAgICAgIFdlYktpdFdlYlZpZXcgKndlYlZpZXcgPSBicm93c2VyX3RhYl9nZXRf
d2ViX3ZpZXcoZGF0YS0+d2luZG93LT5hY3RpdmVUYWIpOworICAgICAgICAgICAgd2Via2l0X3dl
Yl92aWV3X2V4ZWN1dGVfZWRpdGluZ19jb21tYW5kX3dpdGhfYXJndW1lbnQod2ViVmlldywgV0VC
S0lUX0VESVRJTkdfQ09NTUFORF9DUkVBVEVfTElOSywgdXJsKTsKICAgICAgICAgfQogICAgIH0K
IAotICAgIGd0a193aWRnZXRfZGVzdHJveShmaWxlQ2hvb3Nlcik7CisjaWYgR1RLX0NIRUNLX1ZF
UlNJT04oMywgOTgsIDUpCisgICAgZ3RrX3dpbmRvd19kZXN0cm95KEdUS19XSU5ET1coZGlhbG9n
KSk7CisjZWxzZQorICAgIGd0a193aWRnZXRfZGVzdHJveShHVEtfV0lER0VUKGRpYWxvZykpOwor
I2VuZGlmCisKKyAgICBnX2ZyZWUoZGF0YSk7CiB9CiAKIHN0YXRpYyB2b2lkIGluc2VydExpbmtD
b21tYW5kQ2FsbGJhY2soR3RrV2lkZ2V0ICp3aWRnZXQsIEJyb3dzZXJXaW5kb3cgKndpbmRvdykK
QEAgLTczNywzOCArNzk5LDQ2IEBAIHN0YXRpYyB2b2lkIGluc2VydExpbmtDb21tYW5kQ2FsbGJh
Y2soR3RrV2lkZ2V0ICp3aWRnZXQsIEJyb3dzZXJXaW5kb3cgKndpbmRvdykKICAgICBHdGtXaWRn
ZXQgKmVudHJ5ID0gZ3RrX2VudHJ5X25ldygpOwogICAgIGd0a19lbnRyeV9zZXRfcGxhY2Vob2xk
ZXJfdGV4dChHVEtfRU5UUlkoZW50cnkpLCAiVVJMIik7CiAgICAgZ3RrX2VudHJ5X3NldF9hY3Rp
dmF0ZXNfZGVmYXVsdChHVEtfRU5UUlkoZW50cnkpLCBUUlVFKTsKKyNpZiBHVEtfQ0hFQ0tfVkVS
U0lPTigzLCA5OCwgNSkKKyAgICBndGtfYm94X2FwcGVuZChHVEtfQk9YKGd0a19kaWFsb2dfZ2V0
X2NvbnRlbnRfYXJlYShHVEtfRElBTE9HKGRpYWxvZykpKSwgZW50cnkpOworI2Vsc2UKICAgICBn
dGtfY29udGFpbmVyX2FkZChHVEtfQ09OVEFJTkVSKGd0a19kaWFsb2dfZ2V0X2NvbnRlbnRfYXJl
YShHVEtfRElBTE9HKGRpYWxvZykpKSwgZW50cnkpOwogICAgIGd0a193aWRnZXRfc2hvdyhlbnRy
eSk7Ci0KLSAgICBpZiAoZ3RrX2RpYWxvZ19ydW4oR1RLX0RJQUxPRyhkaWFsb2cpKSA9PSBHVEtf
UkVTUE9OU0VfQUNDRVBUKSB7Ci0jaWYgR1RLX0NIRUNLX1ZFUlNJT04oMywgOTgsIDApCi0gICAg
ICAgIGNvbnN0IGNoYXIgKnVybCA9IGd0a19lZGl0YWJsZV9nZXRfdGV4dChHVEtfRURJVEFCTEUo
ZW50cnkpKTsKLSNlbHNlCi0gICAgICAgIGNvbnN0IGNoYXIgKnVybCA9IGd0a19lbnRyeV9nZXRf
dGV4dChHVEtfRU5UUlkoZW50cnkpKTsKICNlbmRpZgotICAgICAgICBpZiAodXJsICYmICp1cmwp
IHsKLSAgICAgICAgICAgIFdlYktpdFdlYlZpZXcgKndlYlZpZXcgPSBicm93c2VyX3RhYl9nZXRf
d2ViX3ZpZXcod2luZG93LT5hY3RpdmVUYWIpOwotICAgICAgICAgICAgd2Via2l0X3dlYl92aWV3
X2V4ZWN1dGVfZWRpdGluZ19jb21tYW5kX3dpdGhfYXJndW1lbnQod2ViVmlldywgV0VCS0lUX0VE
SVRJTkdfQ09NTUFORF9DUkVBVEVfTElOSywgdXJsKTsKLSAgICAgICAgfQotICAgIH0KIAotICAg
IGd0a193aWRnZXRfZGVzdHJveShkaWFsb2cpOworICAgIEluc2VydExpbmtEaWFsb2dEYXRhICpk
YXRhID0gZ19uZXcoSW5zZXJ0TGlua0RpYWxvZ0RhdGEsIDEpOworICAgIGRhdGEtPmVudHJ5ID0g
ZW50cnk7CisgICAgZGF0YS0+d2luZG93ID0gd2luZG93OworICAgIGdfc2lnbmFsX2Nvbm5lY3Qo
ZGlhbG9nLCAicmVzcG9uc2UiLCBHX0NBTExCQUNLKGluc2VydExpbmtEaWFsb2dSZXNwb25zZSks
IGRhdGEpOworICAgIGd0a193aWRnZXRfc2hvdyhkaWFsb2cpOwogfQogCiBzdGF0aWMgdm9pZCB0
eXBpbmdBdHRyaWJ1dGVzQ2hhbmdlZChXZWJLaXRFZGl0b3JTdGF0ZSAqZWRpdG9yU3RhdGUsIEdQ
YXJhbVNwZWMgKnNwZWMsIEJyb3dzZXJXaW5kb3cgKndpbmRvdykKIHsKICAgICB1bnNpZ25lZCB0
eXBpbmdBdHRyaWJ1dGVzID0gd2Via2l0X2VkaXRvcl9zdGF0ZV9nZXRfdHlwaW5nX2F0dHJpYnV0
ZXMoZWRpdG9yU3RhdGUpOwotICAgIEdBY3Rpb25Hcm91cCAqYWN0aW9uR3JvdXAgPSBndGtfd2lk
Z2V0X2dldF9hY3Rpb25fZ3JvdXAod2luZG93LT5lZGl0VG9vbGJhciwgImVkaXQiKTsKLSAgICBH
QWN0aW9uICphY3Rpb24gPSBnX2FjdGlvbl9tYXBfbG9va3VwX2FjdGlvbihHX0FDVElPTl9NQVAo
YWN0aW9uR3JvdXApLCAiQm9sZCIpOworICAgIEdBY3Rpb24gKmFjdGlvbiA9IGdfYWN0aW9uX21h
cF9sb29rdXBfYWN0aW9uKEdfQUNUSU9OX01BUCh3aW5kb3ctPmVkaXRBY3Rpb25Hcm91cCksICJC
b2xkIik7CiAgICAgZ19zaW1wbGVfYWN0aW9uX3NldF9zdGF0ZShHX1NJTVBMRV9BQ1RJT04oYWN0
aW9uKSwgZ192YXJpYW50X25ld19ib29sZWFuKHR5cGluZ0F0dHJpYnV0ZXMgJiBXRUJLSVRfRURJ
VE9SX1RZUElOR19BVFRSSUJVVEVfQk9MRCkpOwotICAgIGFjdGlvbiA9IGdfYWN0aW9uX21hcF9s
b29rdXBfYWN0aW9uKEdfQUNUSU9OX01BUChhY3Rpb25Hcm91cCksICJJdGFsaWMiKTsKKyAgICBh
Y3Rpb24gPSBnX2FjdGlvbl9tYXBfbG9va3VwX2FjdGlvbihHX0FDVElPTl9NQVAod2luZG93LT5l
ZGl0QWN0aW9uR3JvdXApLCAiSXRhbGljIik7CiAgICAgZ19zaW1wbGVfYWN0aW9uX3NldF9zdGF0
ZShHX1NJTVBMRV9BQ1RJT04oYWN0aW9uKSwgZ192YXJpYW50X25ld19ib29sZWFuKHR5cGluZ0F0
dHJpYnV0ZXMgJiBXRUJLSVRfRURJVE9SX1RZUElOR19BVFRSSUJVVEVfSVRBTElDKSk7Ci0gICAg
YWN0aW9uID0gZ19hY3Rpb25fbWFwX2xvb2t1cF9hY3Rpb24oR19BQ1RJT05fTUFQKGFjdGlvbkdy
b3VwKSwgIlVuZGVybGluZSIpOworICAgIGFjdGlvbiA9IGdfYWN0aW9uX21hcF9sb29rdXBfYWN0
aW9uKEdfQUNUSU9OX01BUCh3aW5kb3ctPmVkaXRBY3Rpb25Hcm91cCksICJVbmRlcmxpbmUiKTsK
ICAgICBnX3NpbXBsZV9hY3Rpb25fc2V0X3N0YXRlKEdfU0lNUExFX0FDVElPTihhY3Rpb24pLCBn
X3ZhcmlhbnRfbmV3X2Jvb2xlYW4odHlwaW5nQXR0cmlidXRlcyAmIFdFQktJVF9FRElUT1JfVFlQ
SU5HX0FUVFJJQlVURV9VTkRFUkxJTkUpKTsKLSAgICBhY3Rpb24gPSBnX2FjdGlvbl9tYXBfbG9v
a3VwX2FjdGlvbihHX0FDVElPTl9NQVAoYWN0aW9uR3JvdXApLCAiU3RyaWtldGhyb3VnaCIpOwor
ICAgIGFjdGlvbiA9IGdfYWN0aW9uX21hcF9sb29rdXBfYWN0aW9uKEdfQUNUSU9OX01BUCh3aW5k
b3ctPmVkaXRBY3Rpb25Hcm91cCksICJTdHJpa2V0aHJvdWdoIik7CiAgICAgZ19zaW1wbGVfYWN0
aW9uX3NldF9zdGF0ZShHX1NJTVBMRV9BQ1RJT04oYWN0aW9uKSwgZ192YXJpYW50X25ld19ib29s
ZWFuKHR5cGluZ0F0dHJpYnV0ZXMgJiBXRUJLSVRfRURJVE9SX1RZUElOR19BVFRSSUJVVEVfU1RS
SUtFVEhST1VHSCkpOwogfQotI2VuZGlmCisKK3N0YXRpYyB2b2lkIGJyb3dzZXJXaW5kb3dTYXZl
U2Vzc2lvbihCcm93c2VyV2luZG93ICp3aW5kb3cpCit7CisgICAgaWYgKCF3aW5kb3ctPnNlc3Np
b25GaWxlKQorICAgICAgICByZXR1cm47CisKKyAgICBXZWJLaXRXZWJWaWV3ICp3ZWJWaWV3ID0g
YnJvd3Nlcl90YWJfZ2V0X3dlYl92aWV3KHdpbmRvdy0+YWN0aXZlVGFiKTsKKyAgICBXZWJLaXRX
ZWJWaWV3U2Vzc2lvblN0YXRlICpzdGF0ZSA9IHdlYmtpdF93ZWJfdmlld19nZXRfc2Vzc2lvbl9z
dGF0ZSh3ZWJWaWV3KTsKKyAgICBHQnl0ZXMgKmJ5dGVzID0gd2Via2l0X3dlYl92aWV3X3Nlc3Np
b25fc3RhdGVfc2VyaWFsaXplKHN0YXRlKTsKKyAgICB3ZWJraXRfd2ViX3ZpZXdfc2Vzc2lvbl9z
dGF0ZV91bnJlZihzdGF0ZSk7CisgICAgZ19maWxlX3NldF9jb250ZW50cyh3aW5kb3ctPnNlc3Np
b25GaWxlLCBnX2J5dGVzX2dldF9kYXRhKGJ5dGVzLCBOVUxMKSwgZ19ieXRlc19nZXRfc2l6ZShi
eXRlcyksIE5VTEwpOworICAgIGdfYnl0ZXNfdW5yZWYoYnl0ZXMpOworICAgIGdfY2xlYXJfcG9p
bnRlcigmd2luZG93LT5zZXNzaW9uRmlsZSwgZ19mcmVlKTsKK30KIAogc3RhdGljIHZvaWQgYnJv
d3NlcldpbmRvd0ZpbmFsaXplKEdPYmplY3QgKmdPYmplY3QpCiB7CkBAIC03ODUsNyArODU1LDcg
QEAgc3RhdGljIHZvaWQgYnJvd3NlcldpbmRvd0ZpbmFsaXplKEdPYmplY3QgKmdPYmplY3QpCiAg
ICAgaWYgKHdpbmRvdy0+cmVzZXRFbnRyeVByb2dyZXNzVGltZW91dElkKQogICAgICAgICBnX3Nv
dXJjZV9yZW1vdmUod2luZG93LT5yZXNldEVudHJ5UHJvZ3Jlc3NUaW1lb3V0SWQpOwogCi0gICAg
Z19mcmVlKHdpbmRvdy0+c2Vzc2lvbkZpbGUpOworICAgIGdfY2xlYXJfb2JqZWN0KCZ3aW5kb3ct
PmVkaXRBY3Rpb25Hcm91cCk7CiAKICAgICBHX09CSkVDVF9DTEFTUyhicm93c2VyX3dpbmRvd19w
YXJlbnRfY2xhc3MpLT5maW5hbGl6ZShnT2JqZWN0KTsKIH0KQEAgLTc5NCw0NyArODY0LDcwIEBA
IHN0YXRpYyB2b2lkIGJyb3dzZXJXaW5kb3dEaXNwb3NlKEdPYmplY3QgKmdPYmplY3QpCiB7CiAg
ICAgQnJvd3NlcldpbmRvdyAqd2luZG93ID0gQlJPV1NFUl9XSU5ET1coZ09iamVjdCk7CiAKKyAg
ICBicm93c2VyV2luZG93U2F2ZVNlc3Npb24od2luZG93KTsKKwogICAgIGlmICh3aW5kb3ctPnBh
cmVudFdpbmRvdykgewogICAgICAgICBnX29iamVjdF9yZW1vdmVfd2Vha19wb2ludGVyKEdfT0JK
RUNUKHdpbmRvdy0+cGFyZW50V2luZG93KSwgKGdwb2ludGVyICopJndpbmRvdy0+cGFyZW50V2lu
ZG93KTsKICAgICAgICAgd2luZG93LT5wYXJlbnRXaW5kb3cgPSBOVUxMOwogICAgIH0KIAorI2lm
IEdUS19DSEVDS19WRVJTSU9OKDMsIDk4LCA1KQorICAgIGdfb2JqZWN0X3NldF9kYXRhKEdfT0JK
RUNUKHdpbmRvdy0+YmFja0l0ZW0pLCAiaGlzdG9yeS1wb3BvdmVyIiwgTlVMTCk7CisgICAgZ19v
YmplY3Rfc2V0X2RhdGEoR19PQkpFQ1Qod2luZG93LT5mb3J3YXJkSXRlbSksICJoaXN0b3J5LXBv
cG92ZXIiLCBOVUxMKTsKKyNlbmRpZgorCiAgICAgR19PQkpFQ1RfQ0xBU1MoYnJvd3Nlcl93aW5k
b3dfcGFyZW50X2NsYXNzKS0+ZGlzcG9zZShnT2JqZWN0KTsKIH0KIAotI2lmICFHVEtfQ0hFQ0tf
VkVSU0lPTigzLCA5OCwgMCkKIHR5cGVkZWYgZW51bSB7CiAgICAgVE9PTEJBUl9CVVRUT05fTk9S
TUFMLAogICAgIFRPT0xCQVJfQlVUVE9OX1RPR0dMRSwKICAgICBUT09MQkFSX0JVVFRPTl9NRU5V
CiB9IFRvb2xiYXJCdXR0b25UeXBlOwogCi1zdGF0aWMgR3RrV2lkZ2V0ICphZGRUb29sYmFyQnV0
dG9uKEd0a1dpZGdldCogdG9vbGJhciwgVG9vbGJhckJ1dHRvblR5cGUgdHlwZSwgY29uc3QgY2hh
ciogaWNvbk5hbWUsIGNvbnN0IGNoYXIgKmFjdGlvbk5hbWUpCitzdGF0aWMgR3RrV2lkZ2V0ICph
ZGRUb29sYmFyQnV0dG9uKEd0a1dpZGdldCAqYm94LCBUb29sYmFyQnV0dG9uVHlwZSB0eXBlLCBj
b25zdCBjaGFyICppY29uTmFtZSwgY29uc3QgY2hhciAqYWN0aW9uTmFtZSkKIHsKICAgICBHdGtX
aWRnZXQgKmJ1dHRvbjsKICAgICBzd2l0Y2ggKHR5cGUpIHsKICAgICBjYXNlIFRPT0xCQVJfQlVU
VE9OX05PUk1BTDoKKyNpZiBHVEtfQ0hFQ0tfVkVSU0lPTigzLCA5OCwgNSkKKyAgICAgICAgYnV0
dG9uID0gZ3RrX2J1dHRvbl9uZXdfZnJvbV9pY29uX25hbWUoaWNvbk5hbWUpOworI2Vsc2UKICAg
ICAgICAgYnV0dG9uID0gZ3RrX2J1dHRvbl9uZXdfZnJvbV9pY29uX25hbWUoaWNvbk5hbWUsIEdU
S19JQ09OX1NJWkVfTUVOVSk7CisjZW5kaWYKICAgICAgICAgYnJlYWs7CiAgICAgY2FzZSBUT09M
QkFSX0JVVFRPTl9UT0dHTEU6CiAgICAgICAgIGJ1dHRvbiA9IGd0a190b2dnbGVfYnV0dG9uX25l
dygpOworI2lmIEdUS19DSEVDS19WRVJTSU9OKDMsIDk4LCA1KQorICAgICAgICBndGtfYnV0dG9u
X3NldF9pY29uX25hbWUoR1RLX0JVVFRPTihidXR0b24pLCBpY29uTmFtZSk7CisjZWxzZQorICAg
ICAgICBndGtfYnV0dG9uX3NldF9pbWFnZShHVEtfQlVUVE9OKGJ1dHRvbiksIGd0a19pbWFnZV9u
ZXdfZnJvbV9pY29uX25hbWUoaWNvbk5hbWUsIEdUS19JQ09OX1NJWkVfTUVOVSkpOworI2VuZGlm
CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgVE9PTEJBUl9CVVRUT05fTUVOVToKICAgICAgICAg
YnV0dG9uID0gZ3RrX21lbnVfYnV0dG9uX25ldygpOworI2lmIEdUS19DSEVDS19WRVJTSU9OKDMs
IDk4LCA1KQorICAgICAgICBndGtfbWVudV9idXR0b25fc2V0X2ljb25fbmFtZShHVEtfTUVOVV9C
VVRUT04oYnV0dG9uKSwgaWNvbk5hbWUpOworI2Vsc2UKKyAgICAgICAgZ3RrX2J1dHRvbl9zZXRf
aW1hZ2UoR1RLX0JVVFRPTihidXR0b24pLCBndGtfaW1hZ2VfbmV3X2Zyb21faWNvbl9uYW1lKGlj
b25OYW1lLCBHVEtfSUNPTl9TSVpFX01FTlUpKTsKKyNlbmRpZgorCiAgICAgICAgIGJyZWFrOwog
ICAgIH0KLSAgICBpZiAodHlwZSAhPSBUT09MQkFSX0JVVFRPTl9OT1JNQUwpCi0gICAgICAgIGd0
a19idXR0b25fc2V0X2ltYWdlKEdUS19CVVRUT04oYnV0dG9uKSwgZ3RrX2ltYWdlX25ld19mcm9t
X2ljb25fbmFtZShpY29uTmFtZSwgR1RLX0lDT05fU0laRV9NRU5VKSk7CiAKICAgICBndGtfd2lk
Z2V0X3NldF9mb2N1c19vbl9jbGljayhidXR0b24sIEZBTFNFKTsKICAgICBpZiAoYWN0aW9uTmFt
ZSkKICAgICAgICAgZ3RrX2FjdGlvbmFibGVfc2V0X2FjdGlvbl9uYW1lKEdUS19BQ1RJT05BQkxF
KGJ1dHRvbiksIGFjdGlvbk5hbWUpOwotICAgIGd0a19jb250YWluZXJfYWRkKEdUS19DT05UQUlO
RVIodG9vbGJhciksIGJ1dHRvbik7CisKKyNpZiBHVEtfQ0hFQ0tfVkVSU0lPTigzLCA5OCwgNSkK
KyAgICBndGtfYm94X2FwcGVuZChHVEtfQk9YKGJveCksIGJ1dHRvbik7CisjZWxzZQorICAgIGd0
a19jb250YWluZXJfYWRkKEdUS19DT05UQUlORVIoYm94KSwgYnV0dG9uKTsKICAgICBndGtfd2lk
Z2V0X3Nob3coYnV0dG9uKTsKKyNlbmRpZgogCiAgICAgcmV0dXJuIGJ1dHRvbjsKIH0KLSNlbmRp
ZgogCiBzdGF0aWMgY29uc3QgR0FjdGlvbkVudHJ5IGVkaXRBY3Rpb25zW10gPSB7CiAgICAgeyAi
Qm9sZCIsIE5VTEwsIE5VTEwsICJmYWxzZSIsIGVkaXRpbmdBY3Rpb25DYWxsYmFjaywgeyAwIH0g
fSwKQEAgLTg1NSw3ICs5NDgsNiBAQCBzdGF0aWMgY29uc3QgR0FjdGlvbkVudHJ5IGVkaXRBY3Rp
b25zW10gPSB7CiAKIHN0YXRpYyB2b2lkIGJyb3dzZXJXaW5kb3dTZXR1cEVkaXRvclRvb2xiYXIo
QnJvd3NlcldpbmRvdyAqd2luZG93KQogewotI2lmICFHVEtfQ0hFQ0tfVkVSU0lPTigzLCA5OCwg
MCkKICAgICBHdGtXaWRnZXQgKnRvb2xiYXIgPSBndGtfYm94X25ldyhHVEtfT1JJRU5UQVRJT05f
SE9SSVpPTlRBTCwgNCk7CiAgICAgd2luZG93LT5lZGl0VG9vbGJhciA9IHRvb2xiYXI7CiAgICAg
Z3RrX3dpZGdldF9zZXRfbWFyZ2luX3RvcCh0b29sYmFyLCAyKTsKQEAgLTg2NCw1OCArOTU2LDEw
OSBAQCBzdGF0aWMgdm9pZCBicm93c2VyV2luZG93U2V0dXBFZGl0b3JUb29sYmFyKEJyb3dzZXJX
aW5kb3cgKndpbmRvdykKICAgICBndGtfd2lkZ2V0X3NldF9tYXJnaW5fZW5kKHRvb2xiYXIsIDIp
OwogCiAgICAgR1NpbXBsZUFjdGlvbkdyb3VwICphY3Rpb25Hcm91cCA9IGdfc2ltcGxlX2FjdGlv
bl9ncm91cF9uZXcoKTsKKyAgICB3aW5kb3ctPmVkaXRBY3Rpb25Hcm91cCA9IEdfQUNUSU9OX0dS
T1VQKGFjdGlvbkdyb3VwKTsKICAgICBnX2FjdGlvbl9tYXBfYWRkX2FjdGlvbl9lbnRyaWVzKEdf
QUNUSU9OX01BUChhY3Rpb25Hcm91cCksIGVkaXRBY3Rpb25zLCBHX05fRUxFTUVOVFMoZWRpdEFj
dGlvbnMpLCB3aW5kb3cpOwogICAgIGd0a193aWRnZXRfaW5zZXJ0X2FjdGlvbl9ncm91cCh0b29s
YmFyLCAiZWRpdCIsIEdfQUNUSU9OX0dST1VQKGFjdGlvbkdyb3VwKSk7Ci0gICAgZ19vYmplY3Rf
dW5yZWYoYWN0aW9uR3JvdXApOwogCiAgICAgR3RrV2lkZ2V0ICpncm91cEJveCA9IGd0a19ib3hf
bmV3KEdUS19PUklFTlRBVElPTl9IT1JJWk9OVEFMLCAwKTsKKyNpZiBHVEtfQ0hFQ0tfVkVSU0lP
TigzLCA5OCwgNSkKKyAgICBndGtfd2lkZ2V0X2FkZF9jc3NfY2xhc3MoZ3JvdXBCb3gsIEdUS19T
VFlMRV9DTEFTU19MSU5LRUQpOworI2Vsc2UKICAgICBndGtfc3R5bGVfY29udGV4dF9hZGRfY2xh
c3MoZ3RrX3dpZGdldF9nZXRfc3R5bGVfY29udGV4dChncm91cEJveCksIEdUS19TVFlMRV9DTEFT
U19MSU5LRUQpOworI2VuZGlmCiAgICAgYWRkVG9vbGJhckJ1dHRvbihncm91cEJveCwgVE9PTEJB
Ul9CVVRUT05fVE9HR0xFLCAiZm9ybWF0LXRleHQtYm9sZC1zeW1ib2xpYyIsICJlZGl0LkJvbGQi
KTsKICAgICBhZGRUb29sYmFyQnV0dG9uKGdyb3VwQm94LCBUT09MQkFSX0JVVFRPTl9UT0dHTEUs
ICJmb3JtYXQtdGV4dC1pdGFsaWMtc3ltYm9saWMiLCAiZWRpdC5JdGFsaWMiKTsKICAgICBhZGRU
b29sYmFyQnV0dG9uKGdyb3VwQm94LCBUT09MQkFSX0JVVFRPTl9UT0dHTEUsICJmb3JtYXQtdGV4
dC11bmRlcmxpbmUtc3ltYm9saWMiLCAiZWRpdC5VbmRlcmxpbmUiKTsKICAgICBhZGRUb29sYmFy
QnV0dG9uKGdyb3VwQm94LCBUT09MQkFSX0JVVFRPTl9UT0dHTEUsICJmb3JtYXQtdGV4dC1zdHJp
a2V0aHJvdWdoLXN5bWJvbGljIiwgImVkaXQuU3RyaWtldGhyb3VnaCIpOworI2lmIEdUS19DSEVD
S19WRVJTSU9OKDMsIDk4LCA1KQorICAgIGd0a19ib3hfYXBwZW5kKEdUS19CT1godG9vbGJhciks
IGdyb3VwQm94KTsKKyNlbHNlCiAgICAgZ3RrX2JveF9wYWNrX3N0YXJ0KEdUS19CT1godG9vbGJh
ciksIGdyb3VwQm94LCBGQUxTRSwgRkFMU0UsIDApOwogICAgIGd0a193aWRnZXRfc2hvdyhncm91
cEJveCk7CisjZW5kaWYKIAogICAgIGdyb3VwQm94ID0gZ3RrX2JveF9uZXcoR1RLX09SSUVOVEFU
SU9OX0hPUklaT05UQUwsIDApOworI2lmIEdUS19DSEVDS19WRVJTSU9OKDMsIDk4LCA1KQorICAg
IGd0a193aWRnZXRfYWRkX2Nzc19jbGFzcyhncm91cEJveCwgR1RLX1NUWUxFX0NMQVNTX0xJTktF
RCk7CisjZWxzZQogICAgIGd0a19zdHlsZV9jb250ZXh0X2FkZF9jbGFzcyhndGtfd2lkZ2V0X2dl
dF9zdHlsZV9jb250ZXh0KGdyb3VwQm94KSwgR1RLX1NUWUxFX0NMQVNTX0xJTktFRCk7CisjZW5k
aWYKICAgICBhZGRUb29sYmFyQnV0dG9uKGdyb3VwQm94LCBUT09MQkFSX0JVVFRPTl9OT1JNQUws
ICJlZGl0LWN1dC1zeW1ib2xpYyIsICJlZGl0LkN1dCIpOwogICAgIGFkZFRvb2xiYXJCdXR0b24o
Z3JvdXBCb3gsIFRPT0xCQVJfQlVUVE9OX05PUk1BTCwgImVkaXQtY29weS1zeW1ib2xpYyIsICJl
ZGl0LkNvcHkiKTsKICAgICBhZGRUb29sYmFyQnV0dG9uKGdyb3VwQm94LCBUT09MQkFSX0JVVFRP
Tl9OT1JNQUwsICJlZGl0LXBhc3RlLXN5bWJvbGljIiwgImVkaXQuUGFzdGUiKTsKKyNpZiBHVEtf
Q0hFQ0tfVkVSU0lPTigzLCA5OCwgNSkKKyAgICBndGtfYm94X2FwcGVuZChHVEtfQk9YKHRvb2xi
YXIpLCBncm91cEJveCk7CisjZWxzZQogICAgIGd0a19ib3hfcGFja19zdGFydChHVEtfQk9YKHRv
b2xiYXIpLCBncm91cEJveCwgRkFMU0UsIEZBTFNFLCAwKTsKICAgICBndGtfd2lkZ2V0X3Nob3co
Z3JvdXBCb3gpOworI2VuZGlmCiAKICAgICBncm91cEJveCA9IGd0a19ib3hfbmV3KEdUS19PUklF
TlRBVElPTl9IT1JJWk9OVEFMLCAwKTsKKyNpZiBHVEtfQ0hFQ0tfVkVSU0lPTigzLCA5OCwgNSkK
KyAgICBndGtfd2lkZ2V0X2FkZF9jc3NfY2xhc3MoZ3JvdXBCb3gsIEdUS19TVFlMRV9DTEFTU19M
SU5LRUQpOworI2Vsc2UKICAgICBndGtfc3R5bGVfY29udGV4dF9hZGRfY2xhc3MoZ3RrX3dpZGdl
dF9nZXRfc3R5bGVfY29udGV4dChncm91cEJveCksIEdUS19TVFlMRV9DTEFTU19MSU5LRUQpOwor
I2VuZGlmCiAgICAgYWRkVG9vbGJhckJ1dHRvbihncm91cEJveCwgVE9PTEJBUl9CVVRUT05fTk9S
TUFMLCAiZWRpdC11bmRvLXN5bWJvbGljIiwgImVkaXQuVW5kbyIpOwogICAgIGFkZFRvb2xiYXJC
dXR0b24oZ3JvdXBCb3gsIFRPT0xCQVJfQlVUVE9OX05PUk1BTCwgImVkaXQtcmVkby1zeW1ib2xp
YyIsICJlZGl0LlJlZG8iKTsKKyNpZiBHVEtfQ0hFQ0tfVkVSU0lPTigzLCA5OCwgNSkKKyAgICBn
dGtfYm94X2FwcGVuZChHVEtfQk9YKHRvb2xiYXIpLCBncm91cEJveCk7CisjZWxzZQogICAgIGd0
a19ib3hfcGFja19zdGFydChHVEtfQk9YKHRvb2xiYXIpLCBncm91cEJveCwgRkFMU0UsIEZBTFNF
LCAwKTsKICAgICBndGtfd2lkZ2V0X3Nob3coZ3JvdXBCb3gpOworI2VuZGlmCiAKICAgICBncm91
cEJveCA9IGd0a19ib3hfbmV3KEdUS19PUklFTlRBVElPTl9IT1JJWk9OVEFMLCAwKTsKKyNpZiBH
VEtfQ0hFQ0tfVkVSU0lPTigzLCA5OCwgNSkKKyAgICBndGtfd2lkZ2V0X2FkZF9jc3NfY2xhc3Mo
Z3JvdXBCb3gsIEdUS19TVFlMRV9DTEFTU19MSU5LRUQpOworI2Vsc2UKICAgICBndGtfc3R5bGVf
Y29udGV4dF9hZGRfY2xhc3MoZ3RrX3dpZGdldF9nZXRfc3R5bGVfY29udGV4dChncm91cEJveCks
IEdUS19TVFlMRV9DTEFTU19MSU5LRUQpOworI2VuZGlmCiAgICAgYWRkVG9vbGJhckJ1dHRvbihn
cm91cEJveCwgVE9PTEJBUl9CVVRUT05fTk9STUFMLCAiZm9ybWF0LWp1c3RpZnktbGVmdC1zeW1i
b2xpYyIsICJlZGl0Lkp1c3RpZnlMZWZ0Iik7CiAgICAgYWRkVG9vbGJhckJ1dHRvbihncm91cEJv
eCwgVE9PTEJBUl9CVVRUT05fTk9STUFMLCAiZm9ybWF0LWp1c3RpZnktY2VudGVyLXN5bWJvbGlj
IiwgImVkaXQuSnVzdGlmeUNlbnRlciIpOwogICAgIGFkZFRvb2xiYXJCdXR0b24oZ3JvdXBCb3gs
IFRPT0xCQVJfQlVUVE9OX05PUk1BTCwgImZvcm1hdC1qdXN0aWZ5LXJpZ2h0LXN5bWJvbGljIiwg
ImVkaXQuSnVzdGlmeVJpZ2h0Iik7CisjaWYgR1RLX0NIRUNLX1ZFUlNJT04oMywgOTgsIDUpCisg
ICAgZ3RrX2JveF9hcHBlbmQoR1RLX0JPWCh0b29sYmFyKSwgZ3JvdXBCb3gpOworI2Vsc2UKICAg
ICBndGtfYm94X3BhY2tfc3RhcnQoR1RLX0JPWCh0b29sYmFyKSwgZ3JvdXBCb3gsIEZBTFNFLCBG
QUxTRSwgMCk7CiAgICAgZ3RrX3dpZGdldF9zaG93KGdyb3VwQm94KTsKKyNlbmRpZgogCiAgICAg
Z3JvdXBCb3ggPSBndGtfYm94X25ldyhHVEtfT1JJRU5UQVRJT05fSE9SSVpPTlRBTCwgMCk7Cisj
aWYgR1RLX0NIRUNLX1ZFUlNJT04oMywgOTgsIDUpCisgICAgZ3RrX3dpZGdldF9hZGRfY3NzX2Ns
YXNzKGdyb3VwQm94LCBHVEtfU1RZTEVfQ0xBU1NfTElOS0VEKTsKKyNlbHNlCiAgICAgZ3RrX3N0
eWxlX2NvbnRleHRfYWRkX2NsYXNzKGd0a193aWRnZXRfZ2V0X3N0eWxlX2NvbnRleHQoZ3JvdXBC
b3gpLCBHVEtfU1RZTEVfQ0xBU1NfTElOS0VEKTsKKyNlbmRpZgogICAgIGFkZFRvb2xiYXJCdXR0
b24oZ3JvdXBCb3gsIFRPT0xCQVJfQlVUVE9OX05PUk1BTCwgImZvcm1hdC1pbmRlbnQtbW9yZS1z
eW1ib2xpYyIsICJlZGl0LkluZGVudCIpOwogICAgIGFkZFRvb2xiYXJCdXR0b24oZ3JvdXBCb3gs
IFRPT0xCQVJfQlVUVE9OX05PUk1BTCwgImZvcm1hdC1pbmRlbnQtbGVzcy1zeW1ib2xpYyIsICJl
ZGl0Lk91dGRlbnQiKTsKKyNpZiBHVEtfQ0hFQ0tfVkVSU0lPTigzLCA5OCwgNSkKKyAgICBndGtf
Ym94X2FwcGVuZChHVEtfQk9YKHRvb2xiYXIpLCBncm91cEJveCk7CisjZWxzZQogICAgIGd0a19i
b3hfcGFja19zdGFydChHVEtfQk9YKHRvb2xiYXIpLCBncm91cEJveCwgRkFMU0UsIEZBTFNFLCAw
KTsKICAgICBndGtfd2lkZ2V0X3Nob3coZ3JvdXBCb3gpOworI2VuZGlmCiAKICAgICBncm91cEJv
eCA9IGd0a19ib3hfbmV3KEdUS19PUklFTlRBVElPTl9IT1JJWk9OVEFMLCAwKTsKKyNpZiBHVEtf
Q0hFQ0tfVkVSU0lPTigzLCA5OCwgNSkKKyAgICBndGtfd2lkZ2V0X2FkZF9jc3NfY2xhc3MoZ3Jv
dXBCb3gsIEdUS19TVFlMRV9DTEFTU19MSU5LRUQpOworI2Vsc2UKICAgICBndGtfc3R5bGVfY29u
dGV4dF9hZGRfY2xhc3MoZ3RrX3dpZGdldF9nZXRfc3R5bGVfY29udGV4dChncm91cEJveCksIEdU
S19TVFlMRV9DTEFTU19MSU5LRUQpOworI2VuZGlmCiAgICAgR3RrV2lkZ2V0ICpidXR0b24gPSBh
ZGRUb29sYmFyQnV0dG9uKGdyb3VwQm94LCBUT09MQkFSX0JVVFRPTl9OT1JNQUwsICJpbnNlcnQt
aW1hZ2Utc3ltYm9saWMiLCBOVUxMKTsKICAgICBnX3NpZ25hbF9jb25uZWN0KGJ1dHRvbiwgImNs
aWNrZWQiLCBHX0NBTExCQUNLKGluc2VydEltYWdlQ29tbWFuZENhbGxiYWNrKSwgd2luZG93KTsK
ICAgICBidXR0b24gPSBhZGRUb29sYmFyQnV0dG9uKGdyb3VwQm94LCBUT09MQkFSX0JVVFRPTl9O
T1JNQUwsICJpbnNlcnQtbGluay1zeW1ib2xpYyIsIE5VTEwpOwogICAgIGdfc2lnbmFsX2Nvbm5l
Y3QoYnV0dG9uLCAiY2xpY2tlZCIsIEdfQ0FMTEJBQ0soaW5zZXJ0TGlua0NvbW1hbmRDYWxsYmFj
ayksIHdpbmRvdyk7CisjaWYgR1RLX0NIRUNLX1ZFUlNJT04oMywgOTgsIDUpCisgICAgZ3RrX2Jv
eF9hcHBlbmQoR1RLX0JPWCh0b29sYmFyKSwgZ3JvdXBCb3gpOworI2Vsc2UKICAgICBndGtfYm94
X3BhY2tfc3RhcnQoR1RLX0JPWCh0b29sYmFyKSwgZ3JvdXBCb3gsIEZBTFNFLCBGQUxTRSwgMCk7
CiAgICAgZ3RrX3dpZGdldF9zaG93KGdyb3VwQm94KTsKKyNlbmRpZgogCisjaWYgR1RLX0NIRUNL
X1ZFUlNJT04oMywgOTgsIDUpCisgICAgZ3RrX2JveF9pbnNlcnRfY2hpbGRfYWZ0ZXIoR1RLX0JP
WCh3aW5kb3ctPm1haW5Cb3gpLCB0b29sYmFyLCB3aW5kb3ctPnRvb2xiYXIpOworI2Vsc2UKICAg
ICBndGtfYm94X3BhY2tfc3RhcnQoR1RLX0JPWCh3aW5kb3ctPm1haW5Cb3gpLCB0b29sYmFyLCBG
QUxTRSwgRkFMU0UsIDApOwogICAgIGd0a19ib3hfcmVvcmRlcl9jaGlsZChHVEtfQk9YKHdpbmRv
dy0+bWFpbkJveCksIHRvb2xiYXIsIDEpOwogICAgIGd0a193aWRnZXRfc2hvdyh0b29sYmFyKTsK
QEAgLTk0Niw5ICsxMDg5LDcgQEAgc3RhdGljIHZvaWQgYnJvd3NlcldpbmRvd1N3aXRjaFRhYihH
dGtOb3RlYm9vayAqbm90ZWJvb2ssIEJyb3dzZXJUYWIgKnRhYiwgZ3VpbnQKICAgICBXZWJLaXRX
ZWJWaWV3ICp3ZWJWaWV3ID0gYnJvd3Nlcl90YWJfZ2V0X3dlYl92aWV3KHdpbmRvdy0+YWN0aXZl
VGFiKTsKICAgICBpZiAod2Via2l0X3dlYl92aWV3X2lzX2VkaXRhYmxlKHdlYlZpZXcpKSB7CiAg
ICAgICAgIGJyb3dzZXJXaW5kb3dTZXR1cEVkaXRvclRvb2xiYXIod2luZG93KTsKLSNpZiAhR1RL
X0NIRUNLX1ZFUlNJT04oMywgOTgsIDApCiAgICAgICAgIGdfc2lnbmFsX2Nvbm5lY3Qod2Via2l0
X3dlYl92aWV3X2dldF9lZGl0b3Jfc3RhdGUod2ViVmlldyksICJub3RpZnk6OnR5cGluZy1hdHRy
aWJ1dGVzIiwgR19DQUxMQkFDSyh0eXBpbmdBdHRyaWJ1dGVzQ2hhbmdlZCksIHdpbmRvdyk7Ci0j
ZW5kaWYKICAgICB9CiAgICAgd2ViVmlld1VSSUNoYW5nZWQod2ViVmlldywgTlVMTCwgd2luZG93
KTsKICAgICB3ZWJWaWV3VGl0bGVDaGFuZ2VkKHdlYlZpZXcsIE5VTEwsIHdpbmRvdyk7CkBAIC05
ODUsOTEgKzExMjYsNDggQEAgc3RhdGljIHZvaWQgYnJvd3NlcldpbmRvd1RhYkFkZGVkT3JSZW1v
dmVkKEd0a05vdGVib29rICpub3RlYm9vaywgQnJvd3NlclRhYiAqdGEKICAgICBndGtfbm90ZWJv
b2tfc2V0X3Nob3dfdGFicyhHVEtfTk9URUJPT0sod2luZG93LT5ub3RlYm9vayksIGd0a19ub3Rl
Ym9va19nZXRfbl9wYWdlcyhub3RlYm9vaykgPiAxKTsKIH0KIAotI2lmIEdUS19DSEVDS19WRVJT
SU9OKDMsIDk4LCAwKQotc3RhdGljIEd0a1dpZGdldCogYnJvd3NlcldpbmRvd1NldHVwVG9vbGJh
ckl0ZW0oQnJvd3NlcldpbmRvdyogd2luZG93LCBHdGtCb3gqIGJveCwgY29uc3QgY2hhciogbmFt
ZWRJY29uLCBHQ2FsbGJhY2sgY2FsbGJhY2spCi17Ci0gICAgR3RrV2lkZ2V0ICpidXR0b24gPSBn
dGtfYnV0dG9uX25ld19mcm9tX2ljb25fbmFtZShuYW1lZEljb24pOwotICAgIGd0a19idXR0b25f
c2V0X2hhc19mcmFtZShHVEtfQlVUVE9OKGJ1dHRvbiksIEZBTFNFKTsKLSAgICBndGtfYm94X2Fw
cGVuZChib3gsIGJ1dHRvbik7Ci0gICAgZ19zaWduYWxfY29ubmVjdF9zd2FwcGVkKGJ1dHRvbiwg
ImNsaWNrZWQiLCBjYWxsYmFjaywgKGdwb2ludGVyKXdpbmRvdyk7Ci0KLSAgICByZXR1cm4gYnV0
dG9uOwotfQotI2VuZGlmCi0KIHN0YXRpYyB2b2lkIGJyb3dzZXJXaW5kb3dCdWlsZFBvcG92ZXJN
ZW51KEJyb3dzZXJXaW5kb3cgKndpbmRvdywgR3RrV2lkZ2V0ICpwYXJlbnQpCiB7Ci0gICAgR3Rr
V2lkZ2V0ICp2Ym94ID0gZ3RrX2JveF9uZXcoR1RLX09SSUVOVEFUSU9OX1ZFUlRJQ0FMLCA2KTsK
LSAgICBndGtfd2lkZ2V0X3NldF9tYXJnaW5fdG9wKHZib3gsIDEyKTsKLSAgICBndGtfd2lkZ2V0
X3NldF9tYXJnaW5fYm90dG9tKHZib3gsIDEyKTsKLQotICAgIEd0a1dpZGdldCAqem9vbUJveCA9
IGd0a19ib3hfbmV3KEdUS19PUklFTlRBVElPTl9IT1JJWk9OVEFMLCAwKTsKLSAgICBndGtfd2lk
Z2V0X3NldF9tYXJnaW5fc3RhcnQoem9vbUJveCwgMTIpOwotICAgIGd0a193aWRnZXRfc2V0X21h
cmdpbl9lbmQoem9vbUJveCwgMTIpOwotICAgIGd0a19ib3hfc2V0X2hvbW9nZW5lb3VzKEdUS19C
T1goem9vbUJveCksIFRSVUUpOwotICAgIGd0a19zdHlsZV9jb250ZXh0X2FkZF9jbGFzcyhndGtf
d2lkZ2V0X2dldF9zdHlsZV9jb250ZXh0KHpvb21Cb3gpLCBHVEtfU1RZTEVfQ0xBU1NfTElOS0VE
KTsKLSAgICBHdGtXaWRnZXQgKmJ1dHRvbiA9IGd0a19idXR0b25fbmV3X2Zyb21faWNvbl9uYW1l
KCJ6b29tLW91dC1zeW1ib2xpYyIsIEdUS19JQ09OX1NJWkVfTUVOVSk7Ci0gICAgZ3RrX3dpZGdl
dF9zZXRfaGFsaWduKGJ1dHRvbiwgR1RLX0FMSUdOX0ZJTEwpOwotICAgIGd0a19hY3Rpb25hYmxl
X3NldF9hY3Rpb25fbmFtZShHVEtfQUNUSU9OQUJMRShidXR0b24pLCAid2luLnpvb20tb3V0Iik7
Ci0gICAgZ3RrX2NvbnRhaW5lcl9hZGQoR1RLX0NPTlRBSU5FUih6b29tQm94KSwgYnV0dG9uKTsK
LSAgICBndGtfd2lkZ2V0X3Nob3coYnV0dG9uKTsKLQotICAgIGJ1dHRvbiA9IGd0a19idXR0b25f
bmV3X2Zyb21faWNvbl9uYW1lKCJ6b29tLW9yaWdpbmFsLXN5bWJvbGljIiwgR1RLX0lDT05fU0la
RV9NRU5VKTsKLSAgICBndGtfd2lkZ2V0X3NldF9oYWxpZ24oYnV0dG9uLCBHVEtfQUxJR05fRklM
TCk7Ci0gICAgZ3RrX2FjdGlvbmFibGVfc2V0X2FjdGlvbl9uYW1lKEdUS19BQ1RJT05BQkxFKGJ1
dHRvbiksICJ3aW4uem9vbS1kZWZhdWx0Iik7Ci0gICAgZ3RrX2NvbnRhaW5lcl9hZGQoR1RLX0NP
TlRBSU5FUih6b29tQm94KSwgYnV0dG9uKTsKLSAgICBndGtfd2lkZ2V0X3Nob3coYnV0dG9uKTsK
LQotICAgIGJ1dHRvbiA9IGd0a19idXR0b25fbmV3X2Zyb21faWNvbl9uYW1lKCJ6b29tLWluLXN5
bWJvbGljIiwgR1RLX0lDT05fU0laRV9NRU5VKTsKLSAgICBndGtfd2lkZ2V0X3NldF9oYWxpZ24o
YnV0dG9uLCBHVEtfQUxJR05fRklMTCk7Ci0gICAgZ3RrX2FjdGlvbmFibGVfc2V0X2FjdGlvbl9u
YW1lKEdUS19BQ1RJT05BQkxFKGJ1dHRvbiksICJ3aW4uem9vbS1pbiIpOwotICAgIGd0a19jb250
YWluZXJfYWRkKEdUS19DT05UQUlORVIoem9vbUJveCksIGJ1dHRvbik7Ci0gICAgZ3RrX3dpZGdl
dF9zaG93KGJ1dHRvbik7Ci0KLSAgICBndGtfYm94X3BhY2tfc3RhcnQoR1RLX0JPWCh2Ym94KSwg
em9vbUJveCwgRkFMU0UsIEZBTFNFLCAwKTsKLSAgICBndGtfd2lkZ2V0X3Nob3coem9vbUJveCk7
Ci0KLSAgICBHdGtXaWRnZXQgKm1lbnVCb3ggPSBndGtfYm94X25ldyhHVEtfT1JJRU5UQVRJT05f
VkVSVElDQUwsIDApOwotICAgIGd0a193aWRnZXRfc2V0X21hcmdpbl9zdGFydChtZW51Qm94LCAx
Mik7Ci0gICAgZ3RrX3dpZGdldF9zZXRfbWFyZ2luX2VuZChtZW51Qm94LCAxMik7Ci0KLSAgICBH
dGtXaWRnZXQgKnNlcGFyYXRvciA9IGd0a19zZXBhcmF0b3JfbmV3KEdUS19PUklFTlRBVElPTl9I
T1JJWk9OVEFMKTsKLSAgICBndGtfd2lkZ2V0X3NldF9tYXJnaW5fdG9wKHNlcGFyYXRvciwgNik7
Ci0gICAgZ3RrX3dpZGdldF9zZXRfbWFyZ2luX2JvdHRvbShzZXBhcmF0b3IsIDYpOwotICAgIGd0
a19ib3hfcGFja19zdGFydChHVEtfQk9YKG1lbnVCb3gpLCBzZXBhcmF0b3IsIEZBTFNFLCBGQUxT
RSwgMCk7Ci0gICAgZ3RrX3dpZGdldF9zaG93KHNlcGFyYXRvcik7Ci0KLSAgICBidXR0b24gPSBn
dGtfbW9kZWxfYnV0dG9uX25ldygpOwotICAgIGdfb2JqZWN0X3NldChidXR0b24sICJ0ZXh0Iiwg
Il9OZXcgUHJpdmF0ZSBXaW5kb3ciLCBOVUxMKTsKLSAgICBndGtfYWN0aW9uYWJsZV9zZXRfYWN0
aW9uX25hbWUoR1RLX0FDVElPTkFCTEUoYnV0dG9uKSwgIndpbi5vcGVuLXByaXZhdGUtd2luZG93
Iik7Ci0gICAgZ3RrX2JveF9wYWNrX3N0YXJ0KEdUS19CT1gobWVudUJveCksIGJ1dHRvbiwgRkFM
U0UsIEZBTFNFLCAwKTsKLSAgICBndGtfd2lkZ2V0X3Nob3coYnV0dG9uKTsKLQotICAgIGJ1dHRv
biA9IGd0a19tb2RlbF9idXR0b25fbmV3KCk7Ci0gICAgZ19vYmplY3Rfc2V0KGJ1dHRvbiwgInRl
eHQiLCAiX1ByaW504oCmIiwgTlVMTCk7Ci0gICAgZ3RrX2FjdGlvbmFibGVfc2V0X2FjdGlvbl9u
YW1lKEdUS19BQ1RJT05BQkxFKGJ1dHRvbiksICJ3aW4ucHJpbnQiKTsKLSAgICBndGtfYm94X3Bh
Y2tfc3RhcnQoR1RLX0JPWChtZW51Qm94KSwgYnV0dG9uLCBGQUxTRSwgRkFMU0UsIDApOwotICAg
IGd0a193aWRnZXRfc2hvdyhidXR0b24pOwotCi0gICAgYnV0dG9uID0gZ3RrX21vZGVsX2J1dHRv
bl9uZXcoKTsKLSAgICBnX29iamVjdF9zZXQoYnV0dG9uLCAidGV4dCIsICJQcmVmZXJlX25jZXPi
gKYiLCBOVUxMKTsKLSAgICBndGtfYWN0aW9uYWJsZV9zZXRfYWN0aW9uX25hbWUoR1RLX0FDVElP
TkFCTEUoYnV0dG9uKSwgIndpbi5wcmVmZXJlbmNlcyIpOwotICAgIGd0a19ib3hfcGFja19zdGFy
dChHVEtfQk9YKG1lbnVCb3gpLCBidXR0b24sIEZBTFNFLCBGQUxTRSwgMCk7Ci0gICAgZ3RrX3dp
ZGdldF9zaG93KGJ1dHRvbik7Ci0KLSAgICBidXR0b24gPSBndGtfbW9kZWxfYnV0dG9uX25ldygp
OwotICAgIGdfb2JqZWN0X3NldChidXR0b24sICJ0ZXh0IiwgIl9RdWl0IiwgTlVMTCk7Ci0gICAg
Z3RrX2FjdGlvbmFibGVfc2V0X2FjdGlvbl9uYW1lKEdUS19BQ1RJT05BQkxFKGJ1dHRvbiksICJ3
aW4ucXVpdCIpOwotICAgIGd0a19ib3hfcGFja19zdGFydChHVEtfQk9YKG1lbnVCb3gpLCBidXR0
b24sIEZBTFNFLCBGQUxTRSwgMCk7Ci0gICAgZ3RrX3dpZGdldF9zaG93KGJ1dHRvbik7Ci0KLSAg
ICBndGtfYm94X3BhY2tfc3RhcnQoR1RLX0JPWCh2Ym94KSwgbWVudUJveCwgRkFMU0UsIEZBTFNF
LCAwKTsKLSAgICBndGtfd2lkZ2V0X3Nob3cobWVudUJveCk7CisgICAgR01lbnUgKm1lbnUgPSBn
X21lbnVfbmV3KCk7CisgICAgR01lbnUgKnNlY3Rpb24gPSBnX21lbnVfbmV3KCk7CisgICAgR01l
bnVJdGVtICppdGVtID0gZ19tZW51X2l0ZW1fbmV3KCJab29tIE91dCIsICJ3aW4uem9vbS1vdXQi
KTsKKyAgICBnX21lbnVfaXRlbV9zZXRfYXR0cmlidXRlKGl0ZW0sICJ2ZXJiLWljb24iLCAicyIs
ICJ6b29tLW91dC1zeW1ib2xpYyIpOworICAgIGdfbWVudV9hcHBlbmRfaXRlbShzZWN0aW9uLCBp
dGVtKTsKKyAgICBnX29iamVjdF91bnJlZihpdGVtKTsKKworICAgIGl0ZW0gPSBnX21lbnVfaXRl
bV9uZXcoIlpvb20gT3JpZ2luYWwiLCAid2luLnpvb20tZGVmYXVsdCIpOworICAgIGdfbWVudV9p
dGVtX3NldF9hdHRyaWJ1dGUoaXRlbSwgInZlcmItaWNvbiIsICJzIiwgInpvb20tb3JpZ2luYWwt
c3ltYm9saWMiKTsKKyAgICBnX21lbnVfYXBwZW5kX2l0ZW0oc2VjdGlvbiwgaXRlbSk7CisgICAg
Z19vYmplY3RfdW5yZWYoaXRlbSk7CisKKyAgICBpdGVtID0gZ19tZW51X2l0ZW1fbmV3KCJab29t
IEluIiwgIndpbi56b29tLWluIik7CisgICAgZ19tZW51X2l0ZW1fc2V0X2F0dHJpYnV0ZShpdGVt
LCAidmVyYi1pY29uIiwgInMiLCAiem9vbS1pbi1zeW1ib2xpYyIpOworICAgIGdfbWVudV9hcHBl
bmRfaXRlbShzZWN0aW9uLCBpdGVtKTsKKyAgICBnX29iamVjdF91bnJlZihpdGVtKTsKKworICAg
IEdNZW51SXRlbSAqc2VjdGlvbkl0ZW0gPSBnX21lbnVfaXRlbV9uZXdfc2VjdGlvbihOVUxMLCBH
X01FTlVfTU9ERUwoc2VjdGlvbikpOworICAgIGdfbWVudV9pdGVtX3NldF9hdHRyaWJ1dGUoc2Vj
dGlvbkl0ZW0sICJkaXNwbGF5LWhpbnQiLCAicyIsICJob3Jpem9udGFsLWJ1dHRvbnMiKTsKKyAg
ICBnX21lbnVfYXBwZW5kX2l0ZW0obWVudSwgc2VjdGlvbkl0ZW0pOworICAgIGdfb2JqZWN0X3Vu
cmVmKHNlY3Rpb25JdGVtKTsKKyAgICBnX29iamVjdF91bnJlZihzZWN0aW9uKTsKKworICAgIHNl
Y3Rpb24gPSBnX21lbnVfbmV3KCk7CisgICAgZ19tZW51X2luc2VydChzZWN0aW9uLCAtMSwgIl9O
ZXcgUHJpdmF0ZSBXaW5kb3ciLCAid2luLm9wZW4tcHJpdmF0ZS13aW5kb3ciKTsKKyAgICBnX21l
bnVfaW5zZXJ0KHNlY3Rpb24sIC0xLCAiX1ByaW504oCmIiwgIndpbi5wcmludCIpOworICAgIGdf
bWVudV9pbnNlcnQoc2VjdGlvbiwgLTEsICJQcmVmZXJlX25jZXPigKYiLCAid2luLnByZWZlcmVu
Y2VzIik7CisgICAgZ19tZW51X2luc2VydChzZWN0aW9uLCAtMSwgIl9RdWl0IiwgIndpbi5xdWl0
Iik7CisgICAgZ19tZW51X2FwcGVuZF9zZWN0aW9uKG1lbnUsIE5VTEwsIEdfTUVOVV9NT0RFTChz
ZWN0aW9uKSk7CisgICAgZ19vYmplY3RfdW5yZWYoc2VjdGlvbik7CisKKyNpZiBHVEtfQ0hFQ0tf
VkVSU0lPTigzLCA5OCwgNSkKKyAgICBHdGtXaWRnZXQgKnBvcG92ZXIgPSBndGtfcG9wb3Zlcl9t
ZW51X25ld19mcm9tX21vZGVsKEdfTUVOVV9NT0RFTChtZW51KSk7CisjZWxzZQorICAgIEd0a1dp
ZGdldCAqcG9wb3ZlciA9IGd0a19wb3BvdmVyX21lbnVfbmV3KCk7CisgICAgZ3RrX3BvcG92ZXJf
YmluZF9tb2RlbChHVEtfUE9QT1ZFUihwb3BvdmVyKSwgR19NRU5VX01PREVMKG1lbnUpLCBOVUxM
KTsKKyNlbmRpZgorICAgIGdfb2JqZWN0X3VucmVmKG1lbnUpOwogCi0gICAgR3RrV2lkZ2V0ICpw
b3BvdmVyID0gZ3RrX3BvcG92ZXJfbmV3KHBhcmVudCk7CiAgICAgZ3RrX21lbnVfYnV0dG9uX3Nl
dF9wb3BvdmVyKEdUS19NRU5VX0JVVFRPTihwYXJlbnQpLCBwb3BvdmVyKTsKLSAgICBndGtfY29u
dGFpbmVyX2FkZChHVEtfQ09OVEFJTkVSKHBvcG92ZXIpLCB2Ym94KTsKLSAgICBndGtfd2lkZ2V0
X3Nob3codmJveCk7CiB9CiAKIHN0YXRpYyBjb25zdCBHQWN0aW9uRW50cnkgYWN0aW9uc1tdID0g
ewpAQCAtMTA4NiwxMCArMTE4NCw4IEBAIHN0YXRpYyBjb25zdCBHQWN0aW9uRW50cnkgYWN0aW9u
c1tdID0gewogICAgIHsgInpvb20taW4iLCB6b29tSW5DYWxsYmFjaywgTlVMTCwgTlVMTCwgTlVM
TCwgeyAwIH0gfSwKICAgICB7ICJ6b29tLW91dCIsIHpvb21PdXRDYWxsYmFjaywgTlVMTCwgTlVM
TCwgTlVMTCwgeyAwIH0gfSwKICAgICB7ICJ6b29tLWRlZmF1bHQiLCBkZWZhdWx0Wm9vbUNhbGxi
YWNrLCBOVUxMLCBOVUxMLCBOVUxMLCB7IDAgfSB9LAotI2lmICFHVEtfQ0hFQ0tfVkVSU0lPTigz
LCA5OCwgMCkKICAgICB7ICJmaW5kIiwgc2VhcmNoQ2FsbGJhY2ssIE5VTEwsIE5VTEwsIE5VTEws
IHsgMCB9IH0sCiAgICAgeyAicHJlZmVyZW5jZXMiLCBzZXR0aW5nc0NhbGxiYWNrLCBOVUxMLCBO
VUxMLCBOVUxMLCB7IDAgfSB9LAotI2VuZGlmCiAgICAgeyAibmV3LXRhYiIsIG5ld1RhYkNhbGxi
YWNrLCBOVUxMLCBOVUxMLCBOVUxMLCB7IDAgfSB9LAogICAgIHsgInRvZ2dsZS1mdWxsc2NyZWVu
IiwgdG9nZ2xlRnVsbFNjcmVlbiwgTlVMTCwgTlVMTCwgTlVMTCwgeyAwIH0gfSwKICAgICB7ICJw
cmludCIsIHByaW50UGFnZSwgTlVMTCwgTlVMTCwgTlVMTCwgeyAwIH0gfSwKQEAgLTExMDUsMjUg
KzEyMDEsOCBAQCBzdGF0aWMgdm9pZCBicm93c2VyX3dpbmRvd19pbml0KEJyb3dzZXJXaW5kb3cg
KndpbmRvdykKICAgICBndGtfd2luZG93X3NldF90aXRsZShHVEtfV0lORE9XKHdpbmRvdyksIGRl
ZmF1bHRXaW5kb3dUaXRsZSk7CiAgICAgZ3RrX3dpbmRvd19zZXRfZGVmYXVsdF9zaXplKEdUS19X
SU5ET1cod2luZG93KSwgODAwLCA2MDApOwogCi0gICAgd2luZG93LT51cmlFbnRyeSA9IGd0a19l
bnRyeV9uZXcoKTsKLSAgICBnX3NpZ25hbF9jb25uZWN0X3N3YXBwZWQod2luZG93LT51cmlFbnRy
eSwgImFjdGl2YXRlIiwgR19DQUxMQkFDSyhhY3RpdmF0ZVVyaUVudHJ5Q2FsbGJhY2spLCAoZ3Bv
aW50ZXIpd2luZG93KTsKLSAgICBndGtfZW50cnlfc2V0X2ljb25fYWN0aXZhdGFibGUoR1RLX0VO
VFJZKHdpbmRvdy0+dXJpRW50cnkpLCBHVEtfRU5UUllfSUNPTl9QUklNQVJZLCBGQUxTRSk7Ci0g
ICAgdXBkYXRlVXJpRW50cnlJY29uKHdpbmRvdyk7Ci0KICAgICBnX2FjdGlvbl9tYXBfYWRkX2Fj
dGlvbl9lbnRyaWVzKEdfQUNUSU9OX01BUCh3aW5kb3cpLCBhY3Rpb25zLCBHX05fRUxFTUVOVFMo
YWN0aW9ucyksIHdpbmRvdyk7CiAKLSNpZiBHVEtfQ0hFQ0tfVkVSU0lPTigzLCA5OCwgMCkKLSAg
ICBHdGtXaWRnZXQgKnRvb2xiYXIgPSBndGtfY2VudGVyX2JveF9uZXcoKTsKLSAgICB3aW5kb3ct
PnRvb2xiYXIgPSB0b29sYmFyOwotICAgIGd0a193aWRnZXRfc2V0X2hleHBhbmQod2luZG93LT51
cmlFbnRyeSwgVFJVRSk7Ci0gICAgZ3RrX2NlbnRlcl9ib3hfc2V0X2NlbnRlcl93aWRnZXQoR1RL
X0NFTlRFUl9CT1godG9vbGJhciksIHdpbmRvdy0+dXJpRW50cnkpOwotCi0gICAgR3RrV2lkZ2V0
ICpib3ggPSBndGtfYm94X25ldyhHVEtfT1JJRU5UQVRJT05fSE9SSVpPTlRBTCwgMCk7Ci0gICAg
d2luZG93LT5iYWNrSXRlbSA9IGJyb3dzZXJXaW5kb3dTZXR1cFRvb2xiYXJJdGVtKHdpbmRvdywg
R1RLX0JPWChib3gpLCAiZ28tcHJldmlvdXMiLCBHX0NBTExCQUNLKGdvQmFja0NhbGxiYWNrKSk7
Ci0gICAgd2luZG93LT5mb3J3YXJkSXRlbSA9IGJyb3dzZXJXaW5kb3dTZXR1cFRvb2xiYXJJdGVt
KHdpbmRvdywgR1RLX0JPWChib3gpLCAiZ28tbmV4dCIsIEdfQ0FMTEJBQ0soZ29Gb3J3YXJkQ2Fs
bGJhY2spKTsKLSAgICB3aW5kb3ctPnJlbG9hZE9yU3RvcEJ1dHRvbiA9IGJyb3dzZXJXaW5kb3dT
ZXR1cFRvb2xiYXJJdGVtKHdpbmRvdywgR1RLX0JPWChib3gpLCAidmlldy1yZWZyZXNoIiwgR19D
QUxMQkFDSyhyZWxvYWRPclN0b3BDYWxsYmFjaykpOwotICAgIGd0a19jZW50ZXJfYm94X3NldF9z
dGFydF93aWRnZXQoR1RLX0NFTlRFUl9CT1godG9vbGJhciksIGJveCk7Ci0jZWxzZQogICAgIEd0
a1dpZGdldCAqdG9vbGJhciA9IGd0a19ib3hfbmV3KEdUS19PUklFTlRBVElPTl9IT1JJWk9OVEFM
LCA0KTsKICAgICB3aW5kb3ctPnRvb2xiYXIgPSB0b29sYmFyOwogICAgIGd0a193aWRnZXRfc2V0
X21hcmdpbl90b3AodG9vbGJhciwgMik7CkBAIC0xMTMyLDI5ICsxMjExLDU5IEBAIHN0YXRpYyB2
b2lkIGJyb3dzZXJfd2luZG93X2luaXQoQnJvd3NlcldpbmRvdyAqd2luZG93KQogICAgIGd0a193
aWRnZXRfc2V0X21hcmdpbl9lbmQodG9vbGJhciwgMik7CiAKICAgICBHdGtXaWRnZXQgKm5hdmln
YXRpb25Cb3ggPSBndGtfYm94X25ldyhHVEtfT1JJRU5UQVRJT05fSE9SSVpPTlRBTCwgMCk7Cisj
aWYgR1RLX0NIRUNLX1ZFUlNJT04oMywgOTgsIDUpCisgICAgZ3RrX3dpZGdldF9hZGRfY3NzX2Ns
YXNzKG5hdmlnYXRpb25Cb3gsIEdUS19TVFlMRV9DTEFTU19MSU5LRUQpOworI2Vsc2UKICAgICBn
dGtfc3R5bGVfY29udGV4dF9hZGRfY2xhc3MoZ3RrX3dpZGdldF9nZXRfc3R5bGVfY29udGV4dChu
YXZpZ2F0aW9uQm94KSwgR1RLX1NUWUxFX0NMQVNTX0xJTktFRCk7CisjZW5kaWYKIAogICAgIHdp
bmRvdy0+YmFja0l0ZW0gPSBhZGRUb29sYmFyQnV0dG9uKG5hdmlnYXRpb25Cb3gsIFRPT0xCQVJf
QlVUVE9OX05PUk1BTCwgImdvLXByZXZpb3VzLXN5bWJvbGljIiwgIndpbi5nby1iYWNrIik7Ci0g
ICAgZ19zaWduYWxfY29ubmVjdCh3aW5kb3ctPmJhY2tJdGVtLCAiYnV0dG9uLXByZXNzLWV2ZW50
IiwgR19DQUxMQkFDSyhuYXZpZ2F0aW9uQnV0dG9uUHJlc3NDYWxsYmFjayksIHdpbmRvdyk7CiAg
ICAgd2luZG93LT5mb3J3YXJkSXRlbSA9IGFkZFRvb2xiYXJCdXR0b24obmF2aWdhdGlvbkJveCwg
VE9PTEJBUl9CVVRUT05fTk9STUFMLCAiZ28tbmV4dC1zeW1ib2xpYyIsICJ3aW4uZ28tZm9yd2Fy
ZCIpOworI2lmIEdUS19DSEVDS19WRVJTSU9OKDMsIDk4LCA1KQorICAgIEd0a0dlc3R1cmUgKmdl
c3R1cmUgPSBndGtfZ2VzdHVyZV9jbGlja19uZXcoKTsKKyAgICBndGtfZ2VzdHVyZV9zaW5nbGVf
c2V0X2J1dHRvbihHVEtfR0VTVFVSRV9TSU5HTEUoZ2VzdHVyZSksIEdES19CVVRUT05fU0VDT05E
QVJZKTsKKyAgICBnX3NpZ25hbF9jb25uZWN0KGdlc3R1cmUsICJwcmVzc2VkIiwgR19DQUxMQkFD
SyhuYXZpZ2F0aW9uQnV0dG9uUHJlc3NlZCksIE5VTEwpOworICAgIGd0a193aWRnZXRfYWRkX2Nv
bnRyb2xsZXIod2luZG93LT5iYWNrSXRlbSwgR1RLX0VWRU5UX0NPTlRST0xMRVIoZ2VzdHVyZSkp
OworCisgICAgZ2VzdHVyZSA9IGd0a19nZXN0dXJlX2NsaWNrX25ldygpOworICAgIGd0a19nZXN0
dXJlX3NpbmdsZV9zZXRfYnV0dG9uKEdUS19HRVNUVVJFX1NJTkdMRShnZXN0dXJlKSwgR0RLX0JV
VFRPTl9TRUNPTkRBUlkpOworICAgIGdfc2lnbmFsX2Nvbm5lY3QoZ2VzdHVyZSwgInByZXNzZWQi
LCBHX0NBTExCQUNLKG5hdmlnYXRpb25CdXR0b25QcmVzc2VkKSwgTlVMTCk7CisgICAgZ3RrX3dp
ZGdldF9hZGRfY29udHJvbGxlcih3aW5kb3ctPmZvcndhcmRJdGVtLCBHVEtfRVZFTlRfQ09OVFJP
TExFUihnZXN0dXJlKSk7CisjZWxzZQorICAgIGdfc2lnbmFsX2Nvbm5lY3Qod2luZG93LT5iYWNr
SXRlbSwgImJ1dHRvbi1wcmVzcy1ldmVudCIsIEdfQ0FMTEJBQ0sobmF2aWdhdGlvbkJ1dHRvblBy
ZXNzQ2FsbGJhY2spLCB3aW5kb3cpOwogICAgIGdfc2lnbmFsX2Nvbm5lY3Qod2luZG93LT5mb3J3
YXJkSXRlbSwgImJ1dHRvbi1wcmVzcy1ldmVudCIsIEdfQ0FMTEJBQ0sobmF2aWdhdGlvbkJ1dHRv
blByZXNzQ2FsbGJhY2spLCB3aW5kb3cpOworI2VuZGlmCisjaWYgR1RLX0NIRUNLX1ZFUlNJT04o
MywgOTgsIDUpCisgICAgZ3RrX2JveF9hcHBlbmQoR1RLX0JPWCh0b29sYmFyKSwgbmF2aWdhdGlv
bkJveCk7CisjZWxzZQogICAgIGd0a19ib3hfcGFja19zdGFydChHVEtfQk9YKHRvb2xiYXIpLCBu
YXZpZ2F0aW9uQm94LCBGQUxTRSwgRkFMU0UsIDApOwogICAgIGd0a193aWRnZXRfc2hvdyhuYXZp
Z2F0aW9uQm94KTsKKyNlbmRpZgogCiAgICAgYWRkVG9vbGJhckJ1dHRvbih0b29sYmFyLCBUT09M
QkFSX0JVVFRPTl9OT1JNQUwsICJnby1ob21lLXN5bWJvbGljIiwgIndpbi5sb2FkLWhvbWVwYWdl
Iik7CiAgICAgYWRkVG9vbGJhckJ1dHRvbih0b29sYmFyLCBUT09MQkFSX0JVVFRPTl9OT1JNQUws
ICJ0YWItbmV3LXN5bWJvbGljIiwgIndpbi5uZXctdGFiIik7CiAKLSAgICBndGtfYm94X3BhY2tf
c3RhcnQoR1RLX0JPWCh0b29sYmFyKSwgd2luZG93LT51cmlFbnRyeSwgVFJVRSwgVFJVRSwgMCk7
CisgICAgd2luZG93LT51cmlFbnRyeSA9IGd0a19lbnRyeV9uZXcoKTsKKyAgICBndGtfd2lkZ2V0
X3NldF9oYWxpZ24od2luZG93LT51cmlFbnRyeSwgR1RLX0FMSUdOX0ZJTEwpOworICAgIGd0a193
aWRnZXRfc2V0X2hleHBhbmQod2luZG93LT51cmlFbnRyeSwgVFJVRSk7CisgICAgZ19zaWduYWxf
Y29ubmVjdF9zd2FwcGVkKHdpbmRvdy0+dXJpRW50cnksICJhY3RpdmF0ZSIsIEdfQ0FMTEJBQ0so
YWN0aXZhdGVVcmlFbnRyeUNhbGxiYWNrKSwgKGdwb2ludGVyKXdpbmRvdyk7CisgICAgZ3RrX2Vu
dHJ5X3NldF9pY29uX2FjdGl2YXRhYmxlKEdUS19FTlRSWSh3aW5kb3ctPnVyaUVudHJ5KSwgR1RL
X0VOVFJZX0lDT05fUFJJTUFSWSwgRkFMU0UpOworICAgIHVwZGF0ZVVyaUVudHJ5SWNvbih3aW5k
b3cpOworI2lmIEdUS19DSEVDS19WRVJTSU9OKDMsIDk4LCA1KQorICAgIGd0a19ib3hfYXBwZW5k
KEdUS19CT1godG9vbGJhciksIHdpbmRvdy0+dXJpRW50cnkpOworI2Vsc2UKKyAgICBndGtfY29u
dGFpbmVyX2FkZChHVEtfQ09OVEFJTkVSKHRvb2xiYXIpLCB3aW5kb3ctPnVyaUVudHJ5KTsKICAg
ICBndGtfd2lkZ2V0X3Nob3cod2luZG93LT51cmlFbnRyeSk7CisjZW5kaWYKIAogICAgIHdpbmRv
dy0+cmVsb2FkT3JTdG9wQnV0dG9uID0gYWRkVG9vbGJhckJ1dHRvbih0b29sYmFyLCBUT09MQkFS
X0JVVFRPTl9OT1JNQUwsICJ2aWV3LXJlZnJlc2gtc3ltYm9saWMiLCAid2luLnJlbG9hZC1zdG9w
Iik7CiAgICAgYWRkVG9vbGJhckJ1dHRvbih0b29sYmFyLCBUT09MQkFSX0JVVFRPTl9OT1JNQUws
ICJlZGl0LWZpbmQtc3ltYm9saWMiLCAid2luLmZpbmQiKTsKICAgICBHdGtXaWRnZXQgKmJ1dHRv
biA9IGFkZFRvb2xiYXJCdXR0b24odG9vbGJhciwgVE9PTEJBUl9CVVRUT05fTUVOVSwgIm9wZW4t
bWVudS1zeW1ib2xpYyIsIE5VTEwpOwogICAgIGJyb3dzZXJXaW5kb3dCdWlsZFBvcG92ZXJNZW51
KHdpbmRvdywgYnV0dG9uKTsKLSNlbmRpZgorCiAgICAgR3RrV2lkZ2V0ICp2Ym94ID0gZ3RrX2Jv
eF9uZXcoR1RLX09SSUVOVEFUSU9OX1ZFUlRJQ0FMLCAwKTsKICAgICB3aW5kb3ctPm1haW5Cb3gg
PSB2Ym94OwotI2lmIEdUS19DSEVDS19WRVJTSU9OKDMsIDk4LCA0KQorI2lmIEdUS19DSEVDS19W
RVJTSU9OKDMsIDk4LCA1KQogICAgIGd0a19ib3hfYXBwZW5kKEdUS19CT1godmJveCksIHRvb2xi
YXIpOwogI2Vsc2UKICAgICBndGtfYm94X3BhY2tfc3RhcnQoR1RLX0JPWCh2Ym94KSwgdG9vbGJh
ciwgRkFMU0UsIEZBTFNFLCAwKTsKQEAgLTExNjcsNDEgKzEyNzYsMzQgQEAgc3RhdGljIHZvaWQg
YnJvd3Nlcl93aW5kb3dfaW5pdChCcm93c2VyV2luZG93ICp3aW5kb3cpCiAgICAgZ19zaWduYWxf
Y29ubmVjdCh3aW5kb3ctPm5vdGVib29rLCAicGFnZS1yZW1vdmVkIiwgR19DQUxMQkFDSyhicm93
c2VyV2luZG93VGFiQWRkZWRPclJlbW92ZWQpLCB3aW5kb3cpOwogICAgIGd0a19ub3RlYm9va19z
ZXRfc2hvd190YWJzKEdUS19OT1RFQk9PSyh3aW5kb3ctPm5vdGVib29rKSwgRkFMU0UpOwogICAg
IGd0a19ub3RlYm9va19zZXRfc2hvd19ib3JkZXIoR1RLX05PVEVCT09LKHdpbmRvdy0+bm90ZWJv
b2spLCBGQUxTRSk7Ci0jaWYgIUdUS19DSEVDS19WRVJTSU9OKDMsIDk4LCA0KQorI2lmIEdUS19D
SEVDS19WRVJTSU9OKDMsIDk4LCA1KQorICAgIGd0a19ib3hfYXBwZW5kKEdUS19CT1god2luZG93
LT5tYWluQm94KSwgd2luZG93LT5ub3RlYm9vayk7CisgICAgZ3RrX3dpbmRvd19zZXRfY2hpbGQo
R1RLX1dJTkRPVyh3aW5kb3cpLCB2Ym94KTsKKyNlbHNlCiAgICAgZ3RrX2JveF9wYWNrX3N0YXJ0
KEdUS19CT1god2luZG93LT5tYWluQm94KSwgd2luZG93LT5ub3RlYm9vaywgVFJVRSwgVFJVRSwg
MCk7CiAgICAgZ3RrX3dpZGdldF9zaG93KHdpbmRvdy0+bm90ZWJvb2spOwogICAgIGd0a19jb250
YWluZXJfYWRkKEdUS19DT05UQUlORVIod2luZG93KSwgdmJveCk7CiAgICAgZ3RrX3dpZGdldF9z
aG93KHZib3gpOwotI2Vsc2UKLSAgICBndGtfYm94X2FwcGVuZChHVEtfQk9YKHdpbmRvdy0+bWFp
bkJveCksIHdpbmRvdy0+bm90ZWJvb2spOwotICAgIGd0a193aW5kb3dfc2V0X2NoaWxkKEdUS19X
SU5ET1cod2luZG93KSwgdmJveCk7CiAjZW5kaWYKLX0KIAotc3RhdGljIHZvaWQgYnJvd3Nlcldp
bmRvd0NvbnN0cnVjdGVkKEdPYmplY3QgKmdPYmplY3QpCi17Ci0gICAgR19PQkpFQ1RfQ0xBU1Mo
YnJvd3Nlcl93aW5kb3dfcGFyZW50X2NsYXNzKS0+Y29uc3RydWN0ZWQoZ09iamVjdCk7CisjaWYg
R1RLX0NIRUNLX1ZFUlNJT04oMywgOTgsIDUpCisgICAgR3RrRXZlbnRDb250cm9sbGVyICpjb250
cm9sbGVyID0gZ3RrX2V2ZW50X2NvbnRyb2xsZXJfc2Nyb2xsX25ldyhHVEtfRVZFTlRfQ09OVFJP
TExFUl9TQ1JPTExfQk9USF9BWEVTKTsKKyAgICBndGtfZXZlbnRfY29udHJvbGxlcl9zZXRfcHJv
cGFnYXRpb25fcGhhc2UoY29udHJvbGxlciwgR1RLX1BIQVNFX0NBUFRVUkUpOworICAgIGdfc2ln
bmFsX2Nvbm5lY3Rfc3dhcHBlZChjb250cm9sbGVyLCAic2Nyb2xsIiwgR19DQUxMQkFDSyhzY3Jv
bGxFdmVudENhbGxiYWNrKSwgd2luZG93KTsKKyAgICBndGtfd2lkZ2V0X2FkZF9jb250cm9sbGVy
KEdUS19XSURHRVQod2luZG93KSwgY29udHJvbGxlcik7CisjZW5kaWYKIH0KIAotc3RhdGljIHZv
aWQgYnJvd3NlcldpbmRvd1NhdmVTZXNzaW9uKEJyb3dzZXJXaW5kb3cgKndpbmRvdykKKyNpZiBH
VEtfQ0hFQ0tfVkVSU0lPTigzLCA5OCwgNSkKK3N0YXRpYyBnYm9vbGVhbiBicm93c2VyV2luZG93
Q2xvc2VSZXF1ZXN0KEd0a1dpbmRvdyAqd2luZG93KQogewotICAgIGlmICghd2luZG93LT5zZXNz
aW9uRmlsZSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgV2ViS2l0V2ViVmlldyAqd2ViVmlldyA9
IGJyb3dzZXJfdGFiX2dldF93ZWJfdmlldyh3aW5kb3ctPmFjdGl2ZVRhYik7Ci0gICAgV2ViS2l0
V2ViVmlld1Nlc3Npb25TdGF0ZSAqc3RhdGUgPSB3ZWJraXRfd2ViX3ZpZXdfZ2V0X3Nlc3Npb25f
c3RhdGUod2ViVmlldyk7Ci0gICAgR0J5dGVzICpieXRlcyA9IHdlYmtpdF93ZWJfdmlld19zZXNz
aW9uX3N0YXRlX3NlcmlhbGl6ZShzdGF0ZSk7Ci0gICAgd2Via2l0X3dlYl92aWV3X3Nlc3Npb25f
c3RhdGVfdW5yZWYoc3RhdGUpOwotICAgIGdfZmlsZV9zZXRfY29udGVudHMod2luZG93LT5zZXNz
aW9uRmlsZSwgZ19ieXRlc19nZXRfZGF0YShieXRlcywgTlVMTCksIGdfYnl0ZXNfZ2V0X3NpemUo
Ynl0ZXMpLCBOVUxMKTsKLSAgICBnX2J5dGVzX3VucmVmKGJ5dGVzKTsKKyAgICBicm93c2VyV2lu
ZG93VHJ5Q2xvc2UoTlVMTCwgTlVMTCwgQlJPV1NFUl9XSU5ET1cod2luZG93KSk7CisgICAgcmV0
dXJuIEZBTFNFOwogfQotCi0jaWYgIUdUS19DSEVDS19WRVJTSU9OKDMsIDk4LCAwKQorI2Vsc2UK
IHN0YXRpYyBnYm9vbGVhbiBicm93c2VyV2luZG93RGVsZXRlRXZlbnQoR3RrV2lkZ2V0ICp3aWRn
ZXQsIEdka0V2ZW50QW55KiBldmVudCkKIHsKLSAgICBCcm93c2VyV2luZG93ICp3aW5kb3cgPSBC
Uk9XU0VSX1dJTkRPVyh3aWRnZXQpOwotICAgIGJyb3dzZXJXaW5kb3dTYXZlU2Vzc2lvbih3aW5k
b3cpOwotICAgIGJyb3dzZXJXaW5kb3dUcnlDbG9zZShOVUxMLCBOVUxMLCB3aW5kb3cpOworICAg
IGJyb3dzZXJXaW5kb3dUcnlDbG9zZShOVUxMLCBOVUxMLCBCUk9XU0VSX1dJTkRPVyh3aWRnZXQp
KTsKICAgICByZXR1cm4gVFJVRTsKIH0KICNlbmRpZgpAQCAtMTIwOSwxMiArMTMxMSwxMyBAQCBz
dGF0aWMgZ2Jvb2xlYW4gYnJvd3NlcldpbmRvd0RlbGV0ZUV2ZW50KEd0a1dpZGdldCAqd2lkZ2V0
LCBHZGtFdmVudEFueSogZXZlbnQpCiBzdGF0aWMgdm9pZCBicm93c2VyX3dpbmRvd19jbGFzc19p
bml0KEJyb3dzZXJXaW5kb3dDbGFzcyAqa2xhc3MpCiB7CiAgICAgR09iamVjdENsYXNzICpnb2Jq
ZWN0Q2xhc3MgPSBHX09CSkVDVF9DTEFTUyhrbGFzcyk7Ci0KLSAgICBnb2JqZWN0Q2xhc3MtPmNv
bnN0cnVjdGVkID0gYnJvd3NlcldpbmRvd0NvbnN0cnVjdGVkOwogICAgIGdvYmplY3RDbGFzcy0+
ZGlzcG9zZSA9IGJyb3dzZXJXaW5kb3dEaXNwb3NlOwogICAgIGdvYmplY3RDbGFzcy0+ZmluYWxp
emUgPSBicm93c2VyV2luZG93RmluYWxpemU7CiAKLSNpZiAhR1RLX0NIRUNLX1ZFUlNJT04oMywg
OTgsIDApCisjaWYgR1RLX0NIRUNLX1ZFUlNJT04oMywgOTgsIDUpCisgICAgR3RrV2luZG93Q2xh
c3MgKndpbmRvd0NsYXNzID0gR1RLX1dJTkRPV19DTEFTUyhrbGFzcyk7CisgICAgd2luZG93Q2xh
c3MtPmNsb3NlX3JlcXVlc3QgPSBicm93c2VyV2luZG93Q2xvc2VSZXF1ZXN0OworI2Vsc2UKICAg
ICBHdGtXaWRnZXRDbGFzcyAqd2lkZ2V0Q2xhc3MgPSBHVEtfV0lER0VUX0NMQVNTKGtsYXNzKTsK
ICAgICB3aWRnZXRDbGFzcy0+ZGVsZXRlX2V2ZW50ID0gYnJvd3NlcldpbmRvd0RlbGV0ZUV2ZW50
OwogI2VuZGlmCkBAIC0xMjYxLDEwICsxMzY0LDEyIEBAIHZvaWQgYnJvd3Nlcl93aW5kb3dfYXBw
ZW5kX3ZpZXcoQnJvd3NlcldpbmRvdyAqd2luZG93LCBXZWJLaXRXZWJWaWV3ICp3ZWJWaWV3KQog
ICAgIEd0a1dpZGdldCAqdGFiID0gYnJvd3Nlcl90YWJfbmV3KHdlYlZpZXcpOwogI2lmICFHVEtf
Q0hFQ0tfVkVSU0lPTigzLCA5OCwgMCkKICAgICBpZiAoZ3RrX3dpZGdldF9nZXRfYXBwX3BhaW50
YWJsZShHVEtfV0lER0VUKHdpbmRvdykpKQotICAgICAgICBicm93c2VyX3RhYl9zZXRfYmFja2dy
b3VuZF9jb2xvcihCUk9XU0VSX1RBQih0YWIpLCAmd2luZG93LT5iYWNrZ3JvdW5kQ29sb3IpOwog
I2VuZGlmCisgICAgICAgIGJyb3dzZXJfdGFiX3NldF9iYWNrZ3JvdW5kX2NvbG9yKEJST1dTRVJf
VEFCKHRhYiksICZ3aW5kb3ctPmJhY2tncm91bmRDb2xvcik7CiAgICAgZ3RrX25vdGVib29rX2Fw
cGVuZF9wYWdlKEdUS19OT1RFQk9PSyh3aW5kb3ctPm5vdGVib29rKSwgdGFiLCBicm93c2VyX3Rh
Yl9nZXRfdGl0bGVfd2lkZ2V0KEJST1dTRVJfVEFCKHRhYikpKTsKLSNpZiAhR1RLX0NIRUNLX1ZF
UlNJT04oMywgOTgsIDApCisjaWYgR1RLX0NIRUNLX1ZFUlNJT04oMywgOTgsIDUpCisgICAgZ19v
YmplY3Rfc2V0KGd0a19ub3RlYm9va19nZXRfcGFnZShHVEtfTk9URUJPT0sod2luZG93LT5ub3Rl
Ym9vayksIHRhYiksICJ0YWItZXhwYW5kIiwgVFJVRSwgTlVMTCk7CisjZWxzZQogICAgIGd0a19j
b250YWluZXJfY2hpbGRfc2V0KEdUS19DT05UQUlORVIod2luZG93LT5ub3RlYm9vayksIHRhYiwg
InRhYi1leHBhbmQiLCBUUlVFLCBOVUxMKTsKICNlbmRpZgogICAgIGd0a193aWRnZXRfc2hvdyh0
YWIpOwpAQCAtMTMxOSw3ICsxNDI0LDEyIEBAIHZvaWQgYnJvd3Nlcl93aW5kb3dfc2V0X2JhY2tn
cm91bmRfY29sb3IoQnJvd3NlcldpbmRvdyAqd2luZG93LCBHZGtSR0JBICpyZ2JhKQogCiAgICAg
d2luZG93LT5iYWNrZ3JvdW5kQ29sb3IgPSAqcmdiYTsKIAotI2lmICFHVEtfQ0hFQ0tfVkVSU0lP
TigzLCA5OCwgMCkKKyNpZiBHVEtfQ0hFQ0tfVkVSU0lPTigzLCA5OCwgNSkKKyAgICAvKiBGSVhN
RTogdHJhbnNwYXJlbnQgY29sb3JzIGRvbid0IHdvcmsuIEluIEdUSzQgdGhlcmUncyBubyBndGtf
d2lkZ2V0X3NldF9hcHBfcGFpbnRhYmxlKCksCisgICAgICogd2hhdCB3ZSBjYW4gZG8gaW5zdGVh
ZCBpcyByZW1vdmluZyB0aGUgYmFja2dyb3VuZCBjc3MgY2xhc3MgZnJvbSB0aGUgd2luZG93LCBi
dXQgdGhhdAorICAgICAqIHdvdWxkIGFmZmVjdCBvdGhlciBwYXJ0cyBvZiB0aGUgd2luZG93LCBs
aWtlIHRvb2xiYXIgb3IgZXZlbiB0aXRsZSBiYXIgYmFja2dyb3VuZC4KKyAgICAgKi8KKyNlbHNl
CiAgICAgR2RrVmlzdWFsICpyZ2JhVmlzdWFsID0gZ2RrX3NjcmVlbl9nZXRfcmdiYV92aXN1YWwo
Z3RrX3dpbmRvd19nZXRfc2NyZWVuKEdUS19XSU5ET1cod2luZG93KSkpOwogICAgIGlmICghcmdi
YVZpc3VhbCkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvVG9vbHMvTWluaUJyb3dzZXIv
Z3RrL0NNYWtlTGlzdHMudHh0IGIvVG9vbHMvTWluaUJyb3dzZXIvZ3RrL0NNYWtlTGlzdHMudHh0
CmluZGV4IGE4OGJjZTFlMGJiZi4uZjZmOGY1NWFlYzU1IDEwMDY0NAotLS0gYS9Ub29scy9NaW5p
QnJvd3Nlci9ndGsvQ01ha2VMaXN0cy50eHQKKysrIGIvVG9vbHMvTWluaUJyb3dzZXIvZ3RrL0NN
YWtlTGlzdHMudHh0CkBAIC04LDggKzgsOCBAQCBzZXQoTWluaUJyb3dzZXJfU09VUkNFUwogICAg
IEJyb3dzZXJDZWxsUmVuZGVyZXJWYXJpYW50LmgKICAgICBCcm93c2VyRG93bmxvYWRzQmFyLmMK
ICAgICBCcm93c2VyRG93bmxvYWRzQmFyLmgKLSAgICBCcm93c2VyU2VhcmNoQmFyLmMKLSAgICBC
cm93c2VyU2VhcmNoQmFyLmgKKyAgICBCcm93c2VyU2VhcmNoQm94LmMKKyAgICBCcm93c2VyU2Vh
cmNoQm94LmgKICAgICBCcm93c2VyU2V0dGluZ3NEaWFsb2cuYwogICAgIEJyb3dzZXJTZXR0aW5n
c0RpYWxvZy5oCiAgICAgQnJvd3NlclRhYi5jCg==
</data>
<flag name="review"
          id="417045"
          type_id="1"
          status="+"
          setter="aperez"
    />
          </attachment>
      

    </bug>

</bugzilla>