<?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>173673</bug_id>
          
          <creation_ts>2017-06-21 15:56:07 -0700</creation_ts>
          <short_desc>Refresh usrsctp to Source/ThirdParty/libwebrtc/WebKit/patch-usrsctp and libsrtp to ccf84786f8ef803cb9c75e919e5a3976b9f5a67</short_desc>
          <delta_ts>2017-06-27 15:54:39 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Media</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>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="youenn fablet">youennf</reporter>
          <assigned_to name="youenn fablet">youennf</assigned_to>
          <cc>achristensen</cc>
    
    <cc>commit-queue</cc>
    
    <cc>eric.carlson</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1321659</commentid>
    <comment_count>0</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-06-21 15:56:07 -0700</bug_when>
    <thetext>Refresh usrsctp to Source/ThirdParty/libwebrtc/WebKit/patch-usrsctp and libsrtp to ccf84786f8ef803cb9c75e919e5a3976b9f5a67</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1321660</commentid>
    <comment_count>1</comment_count>
      <attachid>313557</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2017-06-21 15:57:45 -0700</bug_when>
    <thetext>Created attachment 313557
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1321711</commentid>
    <comment_count>2</comment_count>
      <attachid>313557</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-06-21 18:16:17 -0700</bug_when>
    <thetext>Comment on attachment 313557
Patch

Rejecting attachment 313557 from commit-queue.

Failed to run &quot;[&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=webkit-queues.webkit.org&apos;, &apos;--bot-id=webkit-cq-02&apos;, &apos;land-attachment&apos;, &apos;--force-clean&apos;, &apos;--non-interactive&apos;, &apos;--parent-command=commit-queue&apos;, 313557, &apos;--port=mac&apos;]&quot; exit_code: 2 cwd: /Volumes/Data/EWS/WebKit

Last 500 characters of output:
ing rebase:
:040000 040000 4ac297fc02d892d7182abfd17d9c7bbfdb3f3eeb d527629f16db1e91875b8918da8c78c8d464ceb2 M	Source
Current branch master is up to date.
ERROR: Not all changes have been committed into SVN, however the committed
ones (if any) seem to be successfully integrated into the working tree.
Please see the above messages for details.


Failed to run &quot;[&apos;git&apos;, &apos;svn&apos;, &apos;dcommit&apos;, &apos;--rmdir&apos;]&quot; exit_code: 1 cwd: /Volumes/Data/EWS/WebKit
Updating OpenSource
Current branch master is up to date.

Full output: http://webkit-queues.webkit.org/results/3974986</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1321722</commentid>
    <comment_count>3</comment_count>
      <attachid>313557</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-06-21 18:54:27 -0700</bug_when>
    <thetext>Comment on attachment 313557
Patch

Rejecting attachment 313557 from commit-queue.

Failed to run &quot;[&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=webkit-queues.webkit.org&apos;, &apos;--bot-id=webkit-cq-02&apos;, &apos;land-attachment&apos;, &apos;--force-clean&apos;, &apos;--non-interactive&apos;, &apos;--parent-command=commit-queue&apos;, 313557, &apos;--port=mac&apos;]&quot; exit_code: 2 cwd: /Volumes/Data/EWS/WebKit

Last 500 characters of output:
.webkit.org/git/WebKit
   89374d7..63901f0  master     -&gt; origin/master
Partial-rebuilding .git/svn/refs/remotes/origin/master/.rev_map.268f45cc-cd09-0410-ab3c-d52691b4dbfc ...
Currently at 218671 = 89374d74cbb7a66882e3bb486907d06367ab2442
r218672 = 63901f09f77f397de030291e2f1ffa3f0690e6b2
Done rebuilding .git/svn/refs/remotes/origin/master/.rev_map.268f45cc-cd09-0410-ab3c-d52691b4dbfc
First, rewinding head to replay your work on top of it...
Fast-forwarded master to refs/remotes/origin/master.

Full output: http://webkit-queues.webkit.org/results/3975155</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1321882</commentid>
    <comment_count>4</comment_count>
      <attachid>313557</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-06-22 08:14:41 -0700</bug_when>
    <thetext>Comment on attachment 313557
Patch

Rejecting attachment 313557 from commit-queue.

Failed to run &quot;[&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=webkit-queues.webkit.org&apos;, &apos;--bot-id=webkit-cq-03&apos;, &apos;land-attachment&apos;, &apos;--force-clean&apos;, &apos;--non-interactive&apos;, &apos;--parent-command=commit-queue&apos;, 313557, &apos;--port=mac&apos;]&quot; exit_code: 2 cwd: /Volumes/Data/EWS/WebKit

Last 500 characters of output:
ing rebase:
:040000 040000 d8e28a4a6447a129f9d736eb094390bf1aacf744 25347a718d5e5a25eb99b1a029b77ad4261fdce3 M	Source
Current branch master is up to date.
ERROR: Not all changes have been committed into SVN, however the committed
ones (if any) seem to be successfully integrated into the working tree.
Please see the above messages for details.


Failed to run &quot;[&apos;git&apos;, &apos;svn&apos;, &apos;dcommit&apos;, &apos;--rmdir&apos;]&quot; exit_code: 1 cwd: /Volumes/Data/EWS/WebKit
Updating OpenSource
Current branch master is up to date.

Full output: http://webkit-queues.webkit.org/results/3978276</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1323227</commentid>
    <comment_count>5</comment_count>
      <attachid>313557</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2017-06-27 14:03:37 -0700</bug_when>
    <thetext>Comment on attachment 313557
Patch

Rejecting attachment 313557 from commit-queue.

Failed to run &quot;[&apos;/Volumes/Data/EWS/WebKit/Tools/Scripts/webkit-patch&apos;, &apos;--status-host=webkit-queues.webkit.org&apos;, &apos;--bot-id=webkit-cq-03&apos;, &apos;land-attachment&apos;, &apos;--force-clean&apos;, &apos;--non-interactive&apos;, &apos;--parent-command=commit-queue&apos;, 313557, &apos;--port=mac&apos;]&quot; exit_code: 2 cwd: /Volumes/Data/EWS/WebKit

Last 500 characters of output:
.webkit.org/git/WebKit
   770e56e..9870d08  master     -&gt; origin/master
Partial-rebuilding .git/svn/refs/remotes/origin/master/.rev_map.268f45cc-cd09-0410-ab3c-d52691b4dbfc ...
Currently at 218838 = 770e56e371debd1aa66456ee06aa96ba712fe670
r218839 = 9870d084e62af3e5a9240390f46c7a61a4ce40a0
Done rebuilding .git/svn/refs/remotes/origin/master/.rev_map.268f45cc-cd09-0410-ab3c-d52691b4dbfc
First, rewinding head to replay your work on top of it...
Fast-forwarded master to refs/remotes/origin/master.

Full output: http://webkit-queues.webkit.org/results/4007932</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1323306</commentid>
    <comment_count>6</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-06-27 15:52:39 -0700</bug_when>
    <thetext>svn: E165001: Commit failed (details follow):
svn: E165001: Commit blocked by pre-commit hook (exit code 1) with output:

    The following files contain tab characters:

        trunk/Source/ThirdParty/libwebrtc/Source/third_party/usrsctp/usrsctplib/programs/ekr_loop_offload.c
        trunk/Source/ThirdParty/libwebrtc/Source/third_party/usrsctp/usrsctplib/programs/test_timer.c

    Please use spaces instead to indent.
    If you must commit a file with tabs, use svn propset to set the &quot;allow-tabs&quot; property.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1323307</commentid>
    <comment_count>7</comment_count>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2017-06-27 15:54:39 -0700</bug_when>
    <thetext>http://trac.webkit.org/r218849</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>313557</attachid>
            <date>2017-06-21 15:57:45 -0700</date>
            <delta_ts>2017-06-27 14:03:37 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-173673-20170621155744.patch</filename>
            <type>text/plain</type>
            <size>256451</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE4NjQ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvQ2hhbmdlTG9nIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL0NoYW5n
ZUxvZwppbmRleCBlZGU0NTJkNDBmMGE4YjZmMjcwOTQzZWU0MDdlMjU5NDk3ZTQ3YzA2Li5jZDhl
N2EzMDY5ODc3Njg4YmFlNjgwODFkOTc2MjBmYzBhMjNmOWRmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9DaGFuZ2VMb2cKQEAgLTEsNSArMSwxMDUgQEAKIDIwMTctMDYtMjEgIFlvdWVubiBG
YWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCisgICAgICAgIFJlZnJlc2ggdXNyc2N0cCB0byBT
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvV2ViS2l0L3BhdGNoLXVzcnNjdHAgYW5kIGxpYnNy
dHAgdG8gY2NmODQ3ODZmOGVmODAzY2I5Yzc1ZTkxOWU1YTM5NzZiOWY1YTY3CisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzM2NzMKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFNvdXJjZS90aGlyZF9wYXJ0
eS9saWJzcnRwL1JFQURNRS5jaHJvbWl1bToKKyAgICAgICAgKiBTb3VyY2UvdGhpcmRfcGFydHkv
bGlic3J0cC9zcnRwL3NydHAuYzoKKyAgICAgICAgKHNydHBfc3RyZWFtX2luaXRfa2V5cyk6Cisg
ICAgICAgIChzcnRwX2NhbGNfYWVhZF9pdl9zcnRjcCk6CisgICAgICAgIChzcnRwX3Byb3RlY3Rf
cnRjcF9hZWFkKToKKyAgICAgICAgKHNydHBfdW5wcm90ZWN0X3J0Y3BfYWVhZCk6CisgICAgICAg
ICogU291cmNlL3RoaXJkX3BhcnR5L2xpYnNydHAvdGVzdC9zcnRwX2RyaXZlci5jOgorICAgICAg
ICAoc3J0cF92YWxpZGF0ZV9lbmNyeXB0ZWRfZXh0ZW5zaW9uc19oZWFkZXJzX2djbSk6CisgICAg
ICAgICogU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi8uZ2l0aWdub3JlOiBB
ZGRlZC4KKyAgICAgICAgKiBTb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL0NN
YWtlTGlzdHMudHh0OgorICAgICAgICAqIFNvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNj
dHBsaWIvTWFrZWZpbGUuYW06CisgICAgICAgICogU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAv
dXNyc2N0cGxpYi9SRUFETUUubWQ6CisgICAgICAgICogU291cmNlL3RoaXJkX3BhcnR5L3VzcnNj
dHAvdXNyc2N0cGxpYi9jb25maWd1cmUuYWM6CisgICAgICAgICogU291cmNlL3RoaXJkX3BhcnR5
L3VzcnNjdHAvdXNyc2N0cGxpYi9wcm9ncmFtcy9DTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBT
b3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3Byb2dyYW1zL01ha2VmaWxlLmFt
OgorICAgICAgICAqIFNvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvcHJvZ3Jh
bXMvY2xpZW50LmM6CisgICAgICAgIChtYWluKToKKyAgICAgICAgKiBTb3VyY2UvdGhpcmRfcGFy
dHkvdXNyc2N0cC91c3JzY3RwbGliL3Byb2dyYW1zL2RhdGFjaGFuX3NlcnYuYzoKKyAgICAgICAg
KG1haW4pOgorICAgICAgICAqIFNvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIv
cHJvZ3JhbXMvZWtyX2xvb3Bfb2ZmbG9hZC5jOiBBZGRlZC4KKyAgICAgICAgKGhhbmRsZV9wYWNr
ZXRzKToKKyAgICAgICAgKiBTb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3By
b2dyYW1zL3Rlc3RfdGltZXIuYzogQWRkZWQuCisgICAgICAgIChtYWluKToKKyAgICAgICAgKiBT
b3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3VzcnNjdHAucGMuaW46IEFkZGVk
LgorICAgICAgICAqIFNvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNyc2N0
cGxpYi9DTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBTb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0
cC91c3JzY3RwbGliL3VzcnNjdHBsaWIvbmV0aW5ldC9zY3RwX2FzY29uZi5jOgorICAgICAgICAq
IFNvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNyc2N0cGxpYi9uZXRpbmV0
L3NjdHBfYXNjb25mLmg6CisgICAgICAgICogU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNy
c2N0cGxpYi91c3JzY3RwbGliL25ldGluZXQvc2N0cF9hdXRoLmM6CisgICAgICAgICogU291cmNl
L3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi91c3JzY3RwbGliL25ldGluZXQvc2N0cF9h
dXRoLmg6CisgICAgICAgICogU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi91
c3JzY3RwbGliL25ldGluZXQvc2N0cF9ic2RfYWRkci5jOgorICAgICAgICAqIFNvdXJjZS90aGly
ZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNyc2N0cGxpYi9uZXRpbmV0L3NjdHBfYnNkX2Fk
ZHIuaDoKKyAgICAgICAgKiBTb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3Vz
cnNjdHBsaWIvbmV0aW5ldC9zY3RwX2NjX2Z1bmN0aW9ucy5jOgorICAgICAgICAoc2N0cF9jd25k
X3VwZGF0ZV9hZnRlcl9mcik6CisgICAgICAgIChzY3RwX2hzX2N3bmRfdXBkYXRlX2FmdGVyX2Zy
KToKKyAgICAgICAgKHNjdHBfaHRjcF9jd25kX3VwZGF0ZV9hZnRlcl9mcik6CisgICAgICAgICog
U291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi91c3JzY3RwbGliL25ldGluZXQv
c2N0cF9jb25zdGFudHMuaDoKKyAgICAgICAgKiBTb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91
c3JzY3RwbGliL3VzcnNjdHBsaWIvbmV0aW5ldC9zY3RwX2NyYzMyLmM6CisgICAgICAgICogU291
cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi91c3JzY3RwbGliL25ldGluZXQvc2N0
cF9jcmMzMi5oOgorICAgICAgICAqIFNvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBs
aWIvdXNyc2N0cGxpYi9uZXRpbmV0L3NjdHBfaGVhZGVyLmg6CisgICAgICAgICogU291cmNlL3Ro
aXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi91c3JzY3RwbGliL25ldGluZXQvc2N0cF9pbmRh
dGEuYzoKKyAgICAgICAgKHNjdHBfYnVpbGRfcmVhZHFfZW50cnkpOgorICAgICAgICAoc2N0cF9w
bGFjZV9jb250cm9sX2luX3N0cmVhbSk6CisgICAgICAgIChzY3RwX2Fib3J0X2luX3JlYXNtKToK
KyAgICAgICAgKHNjdHBfcXVldWVfZGF0YV90b19zdHJlYW0pOgorICAgICAgICAoc2N0cF9idWls
ZF9yZWFkcV9lbnRyeV9mcm9tX2N0bCk6CisgICAgICAgIChzY3RwX2hhbmRsZV9vbGRfdW5vcmRl
cmVkX2RhdGEpOgorICAgICAgICAoc2N0cF9pbmplY3Rfb2xkX3Vub3JkZXJlZF9kYXRhKToKKyAg
ICAgICAgKHNjdHBfZGVsaXZlcl9yZWFzbV9jaGVjayk6CisgICAgICAgIChzY3RwX2FkZF9jaGtf
dG9fY29udHJvbCk6CisgICAgICAgIChzY3RwX3F1ZXVlX2RhdGFfZm9yX3JlYXNtKToKKyAgICAg
ICAgKHNjdHBfZmluZF9yZWFzbV9lbnRyeSk6CisgICAgICAgIChzY3RwX3Byb2Nlc3NfYV9kYXRh
X2NodW5rKToKKyAgICAgICAgKHNjdHBfc2Fja19jaGVjayk6CisgICAgICAgIChzY3RwX3Byb2Nl
c3Nfc2VnbWVudF9yYW5nZSk6CisgICAgICAgIChzY3RwX2NoZWNrX2Zvcl9yZXZva2VkKToKKyAg
ICAgICAgKiBTb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3VzcnNjdHBsaWIv
bmV0aW5ldC9zY3RwX2luZGF0YS5oOgorICAgICAgICAqIFNvdXJjZS90aGlyZF9wYXJ0eS91c3Jz
Y3RwL3VzcnNjdHBsaWIvdXNyc2N0cGxpYi9uZXRpbmV0L3NjdHBfaW5wdXQuYzoKKyAgICAgICAg
KHNjdHBfcHJvY2Vzc19pbml0KToKKyAgICAgICAgKHNjdHBfcHJvY2Vzc19jb29raWVfZXhpc3Rp
bmcpOgorICAgICAgICAqIFNvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNy
c2N0cGxpYi9uZXRpbmV0L3NjdHBfaW5wdXQuaDoKKyAgICAgICAgKiBTb3VyY2UvdGhpcmRfcGFy
dHkvdXNyc2N0cC91c3JzY3RwbGliL3VzcnNjdHBsaWIvbmV0aW5ldC9zY3RwX291dHB1dC5jOgor
ICAgICAgICAqIFNvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNyc2N0cGxp
Yi9uZXRpbmV0L3NjdHBfb3V0cHV0Lmg6CisgICAgICAgICogU291cmNlL3RoaXJkX3BhcnR5L3Vz
cnNjdHAvdXNyc2N0cGxpYi91c3JzY3RwbGliL25ldGluZXQvc2N0cF9wY2IuYzoKKyAgICAgICAg
KiBTb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3VzcnNjdHBsaWIvbmV0aW5l
dC9zY3RwX3BjYi5oOgorICAgICAgICAqIFNvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNj
dHBsaWIvdXNyc2N0cGxpYi9uZXRpbmV0L3NjdHBfcGVlbG9mZi5oOgorICAgICAgICAqIFNvdXJj
ZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNyc2N0cGxpYi9uZXRpbmV0L3NjdHBf
c3NfZnVuY3Rpb25zLmM6CisgICAgICAgIChzY3RwX3NzX3JyX2FkZCk6CisgICAgICAgIChzY3Rw
X3NzX2ZjZnNfc2VsZWN0KToKKyAgICAgICAgKiBTb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91
c3JzY3RwbGliL3VzcnNjdHBsaWIvbmV0aW5ldC9zY3RwX3N0cnVjdHMuaDoKKyAgICAgICAgKiBT
b3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3VzcnNjdHBsaWIvbmV0aW5ldC9z
Y3RwX3N5c2N0bC5jOgorICAgICAgICAqIFNvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNj
dHBsaWIvdXNyc2N0cGxpYi9uZXRpbmV0L3NjdHBfdGltZXIuYzoKKyAgICAgICAgKHNjdHBfcmVj
b3Zlcl9zZW50X2xpc3QpOgorICAgICAgICAqIFNvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3Vz
cnNjdHBsaWIvdXNyc2N0cGxpYi9uZXRpbmV0L3NjdHBfdWlvLmg6CisgICAgICAgICogU291cmNl
L3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi91c3JzY3RwbGliL25ldGluZXQvc2N0cF91
c3JyZXEuYzoKKyAgICAgICAgKHNjdHBfaW5pdCk6CisgICAgICAgIChzY3RwX3BhdGhtdHVfYWRq
dXN0bWVudCk6CisgICAgICAgICogU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxp
Yi91c3JzY3RwbGliL25ldGluZXQvc2N0cF92YXIuaDoKKyAgICAgICAgKiBTb3VyY2UvdGhpcmRf
cGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3VzcnNjdHBsaWIvbmV0aW5ldC9zY3RwdXRpbC5jOgor
ICAgICAgICAoc2N0cF9sb2dfc3RybV9kZWwpOgorICAgICAgICAoc2N0cF9pbml0X2Fzb2MpOgor
ICAgICAgICAoc2N0cF9ub3RpZnlfc2VuZF9mYWlsZWQpOgorICAgICAgICAoc2N0cF9ub3RpZnlf
c2VuZF9mYWlsZWQyKToKKyAgICAgICAgKiBTb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3Jz
Y3RwbGliL3VzcnNjdHBsaWIvbmV0aW5ldC9zY3RwdXRpbC5oOgorICAgICAgICAqIFNvdXJjZS90
aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNyc2N0cGxpYi9uZXRpbmV0Ni9zY3RwNl91
c3JyZXEuYzoKKyAgICAgICAgKiBTb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGli
L3VzcnNjdHBsaWIvbmV0aW5ldDYvc2N0cDZfdmFyLmg6CisgICAgICAgICogU291cmNlL3RoaXJk
X3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi91c3JzY3RwbGliL3VzZXJfbWJ1Zi5jOgorICAgICAg
ICAobV9nZXQpOgorICAgICAgICAobWJ1Zl9pbml0aWFsaXplKToKKyAgICAgICAgKiBTb3VyY2Uv
dGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3VzcnNjdHBsaWIvdXNlcl9tYnVmLmg6Cisg
ICAgICAgICogU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi91c3JzY3RwbGli
L3VzZXJfc29ja2V0LmM6CisgICAgICAgICogU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNy
c2N0cGxpYi91c3JzY3RwbGliL3VzcnNjdHAuaDoKKyAgICAgICAgKiBXZWJLaXQvcGF0Y2gtdXNy
c2N0cDogQWRkZWQuCisKKzIwMTctMDYtMjEgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUu
Y29tPgorCiAgICAgICAgIFJlbW92ZSBleHBhdCBzb3VyY2UgY29kZSBmcm9tIFNvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0YwogICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTczNjU2CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvbGlic3J0cC9SRUFETUUuY2hyb21pdW0gYi9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2xpYnNydHAvUkVBRE1FLmNocm9t
aXVtCmluZGV4IGEyNjUyZmQxMzRlYmRlZGQzMWMxMWJkYzRhNTJlOTJiZjU0N2E2ZTUuLjkxOWMy
ZmU1ZDlmZDhmNmI2ZTdmODdmZmI5OTdkYjhlZWUzYmE5MjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvbGlic3J0cC9SRUFETUUuY2hy
b21pdW0KKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS9saWJzcnRwL1JFQURNRS5jaHJvbWl1bQpAQCAtMiw3ICsyLDcgQEAgTmFtZTogbGlic3J0cAog
VVJMOiBodHRwczovL2dpdGh1Yi5jb20vY2lzY28vbGlic3J0cAogVmVyc2lvbjogMmNiZDg1MDg1
MDM3ZGM3YmYyZWRhNDhkNGNmNjJlMjgyOTA1NmUyZAogTGljZW5zZTogMy1jbGF1c2UgQlNECi1M
aWNlbnNlIEZpbGU6IHNydHAvTElDRU5TRQorTGljZW5zZSBGaWxlOiBMSUNFTlNFCiBTZWN1cml0
eSBDcml0aWNhbDogWWVzCiAKIERlc2NyaXB0aW9uOgpAQCAtMTQsMyArMTQsOSBAQCBMb2NhbCBN
b2RpZmljYXRpb25zOgogICBSZW1vdmVkIG1hbnkgdW51c2VkIGZpbGVzLCBlLmcuIGFsbCBub24t
T3BlblNTTCBjaXBoZXIgaW1wbGVtZW50YXRpb25zLgogCiAgIFBhdGNoZWQgaW4gaHR0cHM6Ly9n
aXRodWIuY29tL2Npc2NvL2xpYnNydHAvcHVsbC8yMDkuCisKKyAgUGF0Y2hlZCBpbiBodHRwczov
L2dpdGh1Yi5jb20vY2lzY28vbGlic3J0cC9wdWxsLzI1OS4KKworICBQYXRjaGVkIGluIGh0dHBz
Oi8vZ2l0aHViLmNvbS9jaXNjby9saWJzcnRwL3B1bGwvMjYyLgorCisgIFBhdGNoZWQgaW4gaHR0
cHM6Ly9naXRodWIuY29tL2Npc2NvL2xpYnNydHAvcHVsbC8yODcuCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2xpYnNydHAvc3J0cC9z
cnRwLmMgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2xp
YnNydHAvc3J0cC9zcnRwLmMKaW5kZXggMTkxYTlhMzI3MmJhNWJjNzQ3ZjA4YWVhYWFlM2Y4YTli
ZmZkMzlhNC4uMjRhY2JjMDNmOWUzMDUyYzRlZDJiYWU5ZGVlNzMzNWMyNGQ2OTdlMSAxMDA2NDQK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9saWJz
cnRwL3NydHAvc3J0cC5jCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvbGlic3J0cC9zcnRwL3NydHAuYwpAQCAtNzY1LDYgKzc2NSwxOSBAQCBzcnRw
X3N0cmVhbV9pbml0X2tleXMoc3J0cF9zdHJlYW1fY3R4X3QgKnNydHAsIGNvbnN0IHZvaWQgKmtl
eSkgewogICAgICAgcnRwX3h0bl9oZHJfa2V5bGVuID0gc3J0cF9jaXBoZXJfZ2V0X2tleV9sZW5n
dGgoc3J0cC0+cnRwX3h0bl9oZHJfY2lwaGVyKTsKICAgICAgIHJ0cF94dG5faGRyX2Jhc2Vfa2V5
X2xlbiA9IGJhc2Vfa2V5X2xlbmd0aChzcnRwLT5ydHBfeHRuX2hkcl9jaXBoZXItPnR5cGUsIHJ0
cF94dG5faGRyX2tleWxlbik7CiAgICAgICBydHBfeHRuX2hkcl9zYWx0X2xlbiA9IHJ0cF94dG5f
aGRyX2tleWxlbiAtIHJ0cF94dG5faGRyX2Jhc2Vfa2V5X2xlbjsKKyAgICAgIGlmIChydHBfeHRu
X2hkcl9zYWx0X2xlbiA+IHJ0cF9zYWx0X2xlbikgeworICAgICAgICBzd2l0Y2ggKHNydHAtPnJ0
cF9jaXBoZXItPnR5cGUtPmlkKSB7CisgICAgICAgICAgY2FzZSBTUlRQX0FFU18xMjhfR0NNOgor
ICAgICAgICAgIGNhc2UgU1JUUF9BRVNfMjU2X0dDTToKKyAgICAgICAgICAgIC8qIFRoZSBzaG9y
dGVyIEdDTSBzYWx0IGlzIHBhZGRlZCB0byB0aGUgcmVxdWlyZWQgSUNNIHNhbHQgbGVuZ3RoLiAq
LworICAgICAgICAgICAgcnRwX3h0bl9oZHJfc2FsdF9sZW4gPSBydHBfc2FsdF9sZW47CisgICAg
ICAgICAgICBicmVhazsKKyAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgLyogemVyb2l6
ZSB0ZW1wIGJ1ZmZlciAqLworICAgICAgICAgICAgb2N0ZXRfc3RyaW5nX3NldF90b196ZXJvKHRt
cF9rZXksIE1BWF9TUlRQX0tFWV9MRU4pOworICAgICAgICAgICAgcmV0dXJuIHNydHBfZXJyX3N0
YXR1c19iYWRfcGFyYW07CisgICAgICAgIH0KKyAgICAgIH0KICAgICAgIG1lbXNldCh0bXBfeHRu
X2hkcl9rZXksIDB4MCwgTUFYX1NSVFBfS0VZX0xFTik7CiAgICAgICBtZW1jcHkodG1wX3h0bl9o
ZHJfa2V5LCBrZXksIChydHBfeHRuX2hkcl9iYXNlX2tleV9sZW4gKyBydHBfeHRuX2hkcl9zYWx0
X2xlbikpOwogICAgICAgeHRuX2hkcl9rZGYgPSAmdG1wX2tkZjsKQEAgLTI4NjEsOSArMjg3NCwx
MyBAQCBzcnRwX2NyeXB0b19wb2xpY3lfc2V0X2Flc19nY21fMjU2XzE2X2F1dGgoc3J0cF9jcnlw
dG9fcG9saWN5X3QgKnApIHsKICAqICAgICAgICAgc2VxX251bSAtIFRoZSBTRVEgdmFsdWUgdG8g
dXNlIGZvciB0aGUgSVYgY2FsY3VsYXRpb24uCiAgKiAgICAgICAgICpoZHIgICAgLSBUaGUgUlRQ
IGhlYWRlciwgdXNlZCB0byBnZXQgdGhlIFNTUkMgdmFsdWUKICAqCisgKiBSZXR1cm5zOiBzcnRw
X2Vycl9zdGF0dXNfb2sgaWYgbm8gZXJyb3Igb3Igc3J0cF9lcnJfc3RhdHVzX2JhZF9wYXJhbQor
ICogICAgICAgICAgaWYgc2VxX251bSBpcyBpbnZhbGlkCisgKgogICovCi1zdGF0aWMgdm9pZCBz
cnRwX2NhbGNfYWVhZF9pdl9zcnRjcChzcnRwX3N0cmVhbV9jdHhfdCAqc3RyZWFtLCB2MTI4X3Qg
Kml2LCAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IHNlcV9u
dW0sIHNydGNwX2hkcl90ICpoZHIpCitzdGF0aWMgc3J0cF9lcnJfc3RhdHVzX3QKK3NydHBfY2Fs
Y19hZWFkX2l2X3NydGNwKHNydHBfc3RyZWFtX2N0eF90ICpzdHJlYW0sIHYxMjhfdCAqaXYsCisg
ICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBzZXFfbnVtLCBzcnRjcF9oZHJfdCAqaGRy
KQogewogICAgIHYxMjhfdAlpbjsKICAgICB2MTI4X3QJc2FsdDsKQEAgLTI4NzQsNyArMjg5MSwx
NSBAQCBzdGF0aWMgdm9pZCBzcnRwX2NhbGNfYWVhZF9pdl9zcnRjcChzcnRwX3N0cmVhbV9jdHhf
dCAqc3RyZWFtLCB2MTI4X3QgKml2LAogICAgIGluLnYxNlswXSA9IDA7CiAgICAgbWVtY3B5KCZp
bi52MTZbMV0sICZoZHItPnNzcmMsIDQpOyAvKiBzdGlsbCBpbiBuZXR3b3JrIG9yZGVyISAqLwog
ICAgIGluLnYxNlszXSA9IDA7Ci0gICAgaW4udjMyWzJdID0gMHg3RkZGRkZGRiAmIGh0b25sKHNl
cV9udW0pOyAvKiBiaXQgMzIgaXMgc3VwcG9zZSB0byBiZSB6ZXJvICovCisKKyAgICAvKgorICAg
ICAqICBUaGUgU1JUQ1AgaW5kZXggKHNlcV9udW0pIHNwYW5zIGJpdHMgMCB0aHJvdWdoIDMwIGlu
Y2x1c2l2ZS4KKyAgICAgKiAgVGhlIG1vc3Qgc2lnbmlmaWNhbnQgYml0IHNob3VsZCBiZSB6ZXJv
LgorICAgICAqLworICAgIGlmIChzZXFfbnVtICYgMHg4MDAwMDAwMFVMKSB7CisgICAgICAgIHJl
dHVybiBzcnRwX2Vycl9zdGF0dXNfYmFkX3BhcmFtOworICAgIH0KKyAgICBpbi52MzJbMl0gPSBo
dG9ubChzZXFfbnVtKTsKIAogICAgIGRlYnVnX3ByaW50KG1vZF9zcnRwLCAiUHJlLXNhbHRlZCBS
VENQIElWID0gJXNcbiIsIHYxMjhfaGV4X3N0cmluZygmaW4pKTsKIApAQCAtMjg4OCw2ICsyOTEz
LDggQEAgc3RhdGljIHZvaWQgc3J0cF9jYWxjX2FlYWRfaXZfc3J0Y3Aoc3J0cF9zdHJlYW1fY3R4
X3QgKnN0cmVhbSwgdjEyOF90ICppdiwKICAgICAgKiBGaW5hbGx5LCBhcHBseSB0aGUgU0FMVCB0
byB0aGUgaW5wdXQKICAgICAgKi8KICAgICB2MTI4X3hvcihpdiwgJmluLCAmc2FsdCk7CisKKyAg
ICByZXR1cm4gc3J0cF9lcnJfc3RhdHVzX29rOwogfQogCiAvKgpAQCAtMjk1NSw5ICsyOTgyLDEy
IEBAIHNydHBfcHJvdGVjdF9ydGNwX2FlYWQgKHNydHBfdCBjdHgsIHNydHBfc3RyZWFtX2N0eF90
ICpzdHJlYW0sCiAgICAgZGVidWdfcHJpbnQobW9kX3NydHAsICJzcnRjcCBpbmRleDogJXgiLCBz
ZXFfbnVtKTsKIAogICAgIC8qCi0gICAgICogQ2FsY3VsYXRpbmcgdGhlIElWIGFuZCBwYXNzIGl0
IGRvd24gdG8gdGhlIGNpcGhlciAKKyAgICAgKiBDYWxjdWxhdGUgYW5kIHNldCB0aGUgSVYKICAg
ICAgKi8KLSAgICBzcnRwX2NhbGNfYWVhZF9pdl9zcnRjcChzdHJlYW0sICZpdiwgc2VxX251bSwg
aGRyKTsKKyAgICBzdGF0dXMgPSBzcnRwX2NhbGNfYWVhZF9pdl9zcnRjcChzdHJlYW0sICZpdiwg
c2VxX251bSwgaGRyKTsKKyAgICBpZiAoc3RhdHVzKSB7CisgICAgICAgIHJldHVybiBzcnRwX2Vy
cl9zdGF0dXNfY2lwaGVyX2ZhaWw7CisgICAgfQogICAgIHN0YXR1cyA9IHNydHBfY2lwaGVyX3Nl
dF9pdihzdHJlYW0tPnJ0Y3BfY2lwaGVyLCAodWludDhfdCopJml2LCBzcnRwX2RpcmVjdGlvbl9l
bmNyeXB0KTsKICAgICBpZiAoc3RhdHVzKSB7CiAgICAgICAgIHJldHVybiBzcnRwX2Vycl9zdGF0
dXNfY2lwaGVyX2ZhaWw7CkBAIC0zMTAyLDcgKzMxMzIsMTAgQEAgc3J0cF91bnByb3RlY3RfcnRj
cF9hZWFkIChzcnRwX3QgY3R4LCBzcnRwX3N0cmVhbV9jdHhfdCAqc3RyZWFtLAogICAgIC8qCiAg
ICAgICogQ2FsY3VsYXRlIGFuZCBzZXQgdGhlIElWCiAgICAgICovCi0gICAgc3J0cF9jYWxjX2Fl
YWRfaXZfc3J0Y3Aoc3RyZWFtLCAmaXYsIHNlcV9udW0sIGhkcik7CisgICAgc3RhdHVzID0gc3J0
cF9jYWxjX2FlYWRfaXZfc3J0Y3Aoc3RyZWFtLCAmaXYsIHNlcV9udW0sIGhkcik7CisgICAgaWYg
KHN0YXR1cykgeworICAgICAgICByZXR1cm4gc3J0cF9lcnJfc3RhdHVzX2NpcGhlcl9mYWlsOwor
ICAgIH0KICAgICBzdGF0dXMgPSBzcnRwX2NpcGhlcl9zZXRfaXYoc3RyZWFtLT5ydGNwX2NpcGhl
ciwgKHVpbnQ4X3QqKSZpdiwgc3J0cF9kaXJlY3Rpb25fZGVjcnlwdCk7CiAgICAgaWYgKHN0YXR1
cykgewogICAgICAgICByZXR1cm4gc3J0cF9lcnJfc3RhdHVzX2NpcGhlcl9mYWlsOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS9saWJz
cnRwL3Rlc3Qvc3J0cF9kcml2ZXIuYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvbGlic3J0cC90ZXN0L3NydHBfZHJpdmVyLmMKaW5kZXggMTAxMDNhMWY5
Y2M0NDhmYWUwNGRlNTk1MjJmMTZiM2IyMjljODE5NS4uZmVmY2RlMTE3MWMyNzUxY2I4NzFhOTIw
OTI0ZTJlMGUxZmE5ODFmMyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS9saWJzcnRwL3Rlc3Qvc3J0cF9kcml2ZXIuYworKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L2xpYnNydHAvdGVzdC9z
cnRwX2RyaXZlci5jCkBAIC0xOTQzLDEyICsxOTQzLDEyIEBAIHNydHBfdmFsaWRhdGVfZW5jcnlw
dGVkX2V4dGVuc2lvbnNfaGVhZGVyc19nY20oKSB7CiAgICAgdWludDhfdCBzcnRwX2NpcGhlcnRl
eHRbNjRdID0gewogICAgICAgICAweDkwLCAweDBmLCAweDEyLCAweDM0LCAweGRlLCAweGNhLCAw
eGZiLCAweGFkLAogICAgICAgICAweGNhLCAweGZlLCAweGJhLCAweGJlLCAweEJFLCAweERFLCAw
eDAwLCAweDA2LAotICAgICAgICAweDE3LCAweDU4LCAweDhBLCAweDkyLCAweDcwLCAweEY0LCAw
eEUxLCAweDVFLAotICAgICAgICAweDFDLCAweDIyLCAweDAwLCAweDAwLCAweEM4LCAweDMwLCAw
eDk1LCAweDQ2LAotICAgICAgICAweEE5LCAweDk0LCAweEYwLCAweEJDLCAweDU0LCAweDc4LCAw
eDk3LCAweDAwLAorICAgICAgICAweDE3LCAweDEyLCAweGUwLCAweDIwLCAweDViLCAweGZhLCAw
eDk0LCAweDliLAorICAgICAgICAweDFDLCAweDIyLCAweDAwLCAweDAwLCAweEM4LCAweDMwLCAw
eGJiLCAweDQ2LAorICAgICAgICAweDczLCAweDI3LCAweDc4LCAweGQ5LCAweDkyLCAweDlhLCAw
eGFiLCAweDAwLAogICAgICAgICAweDBlLCAweGNhLCAweDBjLCAweGY5LCAweDVlLCAweGU5LCAw
eDU1LCAweGIyLAogICAgICAgICAweDZjLCAweGQzLCAweGQyLCAweDg4LCAweGI0LCAweDlmLCAw
eDZjLCAweGE5LAotICAgICAgICAweGJiLCAweDRlLCAweDE1LCAweGMyLCAweGU5LCAweGYyLCAw
eDY2LCAweDc4CisgICAgICAgIDB4ZjQsIDB4YjEsIDB4YjcsIDB4NTksIDB4NzEsIDB4OWUsIDB4
YjUsIDB4YmMKICAgICB9OwogICAgIHNydHBfdCBzcnRwX3NuZCwgc3J0cF9yZWN2OwogICAgIHNy
dHBfZXJyX3N0YXR1c190IHN0YXR1czsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliLy5naXRpZ25vcmUg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAv
dXNyc2N0cGxpYi8uZ2l0aWdub3JlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjJiMGJjMzkwNjliZTI4ZmE2ZTkxYmUw
MTM2OTY4MmU1NTE5ODY1NWMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi8uZ2l0aWdub3Jl
CkBAIC0wLDAgKzEsNzQgQEAKKyMgT2JqZWN0IGZpbGVzCisqLm8KKyoua28KKyoub2JqCisqLmVs
ZgorCisjIFByZWNvbXBpbGVkIEhlYWRlcnMKKyouZ2NoCisqLnBjaAorCisjIExpYnJhcmllcwor
Ki5saWIKKyouYQorKi5sYQorKi5sbworCisjIFNoYXJlZCBvYmplY3RzIChpbmMuIFdpbmRvd3Mg
RExMcykKKyouZGxsCisqLnNvCisqLnNvLioKKyouZHlsaWIKKworIyBFeGVjdXRhYmxlcworKi5l
eGUKKyoub3V0CisqLmFwcAorKi5pKjg2CisqLng4Nl82NAorKi5oZXgKKworIyBEZWJ1ZyBmaWxl
cworKi5kU1lNCisKKyMgQXV0b21ha2UgYW5kIG1ha2UgcmVsZWF0ZWQgc3R1ZmYKK01ha2VmaWxl
CitNYWtlZmlsZS5pbgorLmRlcHMKKy5saWJzCisvYXV0b200dGUuY2FjaGUKKy9hY2xvY2FsLm00
CisvY29tcGlsZQorL2NvbmZpZ3VyZQorL2RlcGNvbXAKKy9pbnN0YWxsLXNoCisvbWlzc2luZwor
L3N0YW1wLWgxCisvY29uZmlnLmd1ZXNzCisvY29uZmlnLmxvZworL2NvbmZpZy5zdGF0dXMKKy9j
b25maWcuc3ViCisvbGlidG9vbAorL2x0bWFpbi5zaAorL200CisvdXNyc2N0cC5wYworLmRpcnN0
YW1wCisKKyMgYmluYXJpZXMKK3Byb2dyYW1zL2NsaWVudAorcHJvZ3JhbXMvZGF5dGltZV9zZXJ2
ZXIKK3Byb2dyYW1zL2Rpc2NhcmRfc2VydmVyCitwcm9ncmFtcy9lY2hvX3NlcnZlcgorcHJvZ3Jh
bXMvZWtyX2NsaWVudAorcHJvZ3JhbXMvZWtyX2xvb3AKK3Byb2dyYW1zL2Vrcl9sb29wX29mZmxv
YWQKK3Byb2dyYW1zL2Vrcl9wZWVyCitwcm9ncmFtcy9la3Jfc2VydmVyCitwcm9ncmFtcy9odHRw
X2NsaWVudAorcHJvZ3JhbXMvcnRjd2ViCitwcm9ncmFtcy90c2N0cAorcHJvZ3JhbXMvdGVzdF9s
aWJtZ210Citwcm9ncmFtcy90ZXN0X3RpbWVyCisKKyMgY2FsbGdyaW5kCitjYWxsZ3JpbmQub3V0
KgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi9DTWFrZUxp
c3RzLnR4dAppbmRleCAzZGM0ZTI0YjBmNmU5YzJiZGM3OGRiZTM0OGFmNzU2NWFhZGU2NGUxLi5j
N2ZjYjFmOWZlYjEzMWNmOTk2MGE2YjUxMzgyOTM3ZjcyOWM4MDhlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0
cGxpYi9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi9DTWFrZUxpc3RzLnR4dApAQCAtMSw2
ICsxLDYgQEAKICMKICMgQ29weXJpZ2h0IChDKSAyMDE1LTIwMTUgT2xlZyBBbGV4ZWVua292Ci0j
IENvcHlyaWdodCAoQykgMjAxNS0yMDE1IEZlbGl4IFdlaW5yYW5rCisjIENvcHlyaWdodCAoQykg
MjAxNS0yMDE3IEZlbGl4IFdlaW5yYW5rCiAjCiAjIEFsbCByaWdodHMgcmVzZXJ2ZWQuCiAjCkBA
IC0zNywxMSArMzcsNSBAQCBpZiAoTk9UIENNQUtFX0JVSUxEX1RZUEUpCiAgICAgc2V0KENNQUtF
X0JVSUxEX1RZUEUgIkRFQlVHIikKIGVuZGlmKCkKIAotIyBFbmFibGUgdmVyYm9zZSBvdXRwdXQg
aW4gREVCVUcgbW9kZQotaWYgKCR7Q01BS0VfQlVJTERfVFlQRX0gTUFUQ0hFUyAiREVCVUciKQot
ICAgIG1lc3NhZ2UoU1RBVFVTICJlbmFibGluZyB2ZXJib3NlIG91dG91dCIpCi0gICAgc2V0KENN
QUtFX1ZFUkJPU0VfTUFLRUZJTEUgb24pCi1lbmRpZigpCi0KIGFkZF9zdWJkaXJlY3RvcnkodXNy
c2N0cGxpYikKIGFkZF9zdWJkaXJlY3RvcnkocHJvZ3JhbXMpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxp
Yi9NYWtlZmlsZS5hbSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvdXNyc2N0cC91c3JzY3RwbGliL01ha2VmaWxlLmFtCmluZGV4IGRlMzY0MjQzZDExYWI3
OTk2ZWY2ZGZiYTE3ZTgzMjBiOGUwZDJmZGUuLmU5ZTE3ZTIyYzRmNzhkZmJiNTYyY2U1NjRkOWE1
YWE1Zjc3ZTAyNmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL01ha2VmaWxlLmFtCisrKyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3Rw
bGliL01ha2VmaWxlLmFtCkBAIC0zMSwzICszMSw0IEBACiBTVUJESVJTID0gdXNyc2N0cGxpYiBw
cm9ncmFtcwogRVhUUkFfRElTVCA9IGJvb3RzdHJhcCBNYWtlZmlsZS5ubWFrZQogQUNMT0NBTF9B
TUZMQUdTID0gLUkgbTQKKyMgcGtnY29uZmlnX0RBVEEgPSB1c3JzY3RwLnBjCmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAv
dXNyc2N0cGxpYi9SRUFETUUubWQgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi9SRUFETUUubWQKaW5kZXggYTU5NzExYTEy
NTJjNWJlNjhhZTkzNTIxZWYwYzdkNDRlZDg2MTM0MS4uNmZjMTY0YzVhOTI0MmU5YzY3ZGJkZGE5
ZGJlNWRkZjRmNzM0NWZjNSAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvUkVBRE1FLm1kCisrKyBiL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3Jz
Y3RwbGliL1JFQURNRS5tZApAQCAtNCw1ICs0LDUgQEAgVGhpcyBpcyBhIHVzZXJsYW5kIFNDVFAg
c3RhY2sgc3VwcG9ydGluZyBGcmVlQlNELCBMaW51eCwgTWFjIE9TIFggYW5kIFdpbmRvd3MuCiAK
IFNlZSBbbWFudWFsXShNYW51YWwubWQpIGZvciBtb3JlIGluZm9ybWF0aW9uLgogCi1UaGUgc3Rh
dHVzIG9mIGNvbnRpbm91cyBpbnRlZ3JhdGlvbiB0ZXN0aW5nIGlzIGF2YWlsYWJsZSBmcm9tIFtn
cmlkXShodHRwOi8vMjEyLjIwMS4xMjEuMTEwOjE4MDEwL2dyaWQpIGFuZCBbd2F0ZXJmYWxsXSho
dHRwOi8vMjEyLjIwMS4xMjEuMTEwOjE4MDEwL3dhdGVyZmFsbCkuCitUaGUgc3RhdHVzIG9mIGNv
bnRpbnVvdXMgaW50ZWdyYXRpb24gdGVzdGluZyBpcyBhdmFpbGFibGUgZnJvbSBbZ3JpZF0oaHR0
cDovLzIxMi4yMDEuMTIxLjExMDoxODAxMC9ncmlkKSBhbmQgW3dhdGVyZmFsbF0oaHR0cDovLzIx
Mi4yMDEuMTIxLjExMDoxODAxMC93YXRlcmZhbGwpLgogSWYgeW91IGFyZSBvbmx5IGludGVyZXN0
ZWQgaW4gYSBzaW5nbGUgYnJhbmNoLCBqdXN0IGFwcGVuZCBgP2JyYW5jaD1CUkFOQ0hOQU1FYCB0
byB0aGUgVVJMLCBmb3IgZXhhbXBsZSBbd2F0ZXJmYWxsXShodHRwOi8vMjEyLjIwMS4xMjEuMTEw
OjE4MDEwL3dhdGVyZmFsbD9icmFuY2g9bWFzdGVyKS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL2Nv
bmZpZ3VyZS5hYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvdXNyc2N0cC91c3JzY3RwbGliL2NvbmZpZ3VyZS5hYwppbmRleCBlZmUyYzMxZDYyNzc1YzNk
MzY0NDU3ZjI1ZDJmZmQ2OGM5NWY4YTg3Li5jYzE3OWRiZjk0NzkzM2RmMzM2MjFkNDBhNDE5YzRm
MWExMTljOWUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi9jb25maWd1cmUuYWMKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBs
aWIvY29uZmlndXJlLmFjCkBAIC0zNiwxMCArMzYsMTYgQEAgQUNfUFJPR19MSUJUT09MCiBBQ19D
QU5PTklDQUxfSE9TVAogQUNfQ09ORklHX01BQ1JPX0RJUihbbTRdKQogCitkbmwgRGlzYWJsZSBw
a2dfY29uZmlnIHN1cHBvcnQgZm9yIG5vdworZG5sIFBLR19QUk9HX1BLR19DT05GSUcKK2RubCBQ
S0dfSU5TVEFMTERJUgorCiBMSUJDRkxBR1M9Ii1EU0NUUF9QUk9DRVNTX0xFVkVMX0xPQ0tTIC1E
U0NUUF9TSU1QTEVfQUxMT0NBVE9SIC1EX19Vc2Vyc3BhY2VfXyIKK0FQUENGTEFHUz0iIgorCiBj
YXNlICRob3N0X29zIGluCiBkYXJ3aW4qKQotICBDRkxBR1M9IiRDRkxBR1MgLXN0ZD1jOTkgLURf
X0FQUExFX1VTRV9SRkNfMjI5MiIKKyAgQ0ZMQUdTPSIkQ0ZMQUdTIC1zdGQ9Yzk5IC1Xbm8tZGVw
cmVjYXRlZC1kZWNsYXJhdGlvbnMgLURfX0FQUExFX1VTRV9SRkNfMjI5MiIKICAgTElCQ0ZMQUdT
PSIkTElCQ0ZMQUdTIC1VX19BUFBMRV9fIC1EX19Vc2Vyc3BhY2Vfb3NfRGFyd2luIgogICA7Owog
ZHJhZ29uZmx5KikKQEAgLTkwLDggKzk2LDYgQEAgZWxzZQogICAgICAgICBBQ19NU0dfUkVTVUxU
KG5vKQogZmkKIAotTElCQ0ZMQUdTPSIkQ0ZMQUdTICRMSUJDRkxBR1MiCi0KIEFDX0FSR19FTkFC
TEUoaW52YXJpYW50cywKICAgQUNfSEVMUF9TVFJJTkcoIFstLWVuYWJsZS1pbnZhcmlhbnRzXSwK
ICAgICAgICAgICAgICAgICAgIFthZGQgYWRkaXRpb25hbCBydW50aW1lIGNoZWNrcyBAPDpAZGVm
YXVsdD1ub0A6PkBdKSwKQEAgLTExNCw2ICsxMTgsNyBAQCBBQ19BUkdfRU5BQkxFKGluZXQsCiAg
ICAgICAgICAgICAgICAgICBbU3VwcG9ydCBJUHY0IEA8OkBkZWZhdWx0PXllc0A6PkBdKSwKICAg
ICBlbmFibGVfaW5ldD0kZW5hYmxldmFsLGVuYWJsZV9pbmV0PXllcykKIGlmIHRlc3QgeCRlbmFi
bGVfaW5ldCA9IHh5ZXM7IHRoZW4KKyAgICAgICAgQVBQQ0ZMQUdTPSIkQVBQQ0ZMQUdTIC1ESU5F
VCIKICAgICAgICAgQUNfREVGSU5FKElORVQsIDEsIFtTdXBwb3J0IElQdjRdKQogZmkKIApAQCAt
MTIyLDYgKzEyNyw3IEBAIEFDX0FSR19FTkFCTEUoaW5ldDYsCiAgICAgICAgICAgICAgICAgICBb
U3VwcG9ydCBJUHY2IEA8OkBkZWZhdWx0PXllc0A6PkBdKSwKICAgICBlbmFibGVfaW5ldDY9JGVu
YWJsZXZhbCxlbmFibGVfaW5ldDY9eWVzKQogaWYgdGVzdCB4JGVuYWJsZV9pbmV0NiA9IHh5ZXM7
IHRoZW4KKyAgICAgICAgQVBQQ0ZMQUdTPSIkQVBQQ0ZMQUdTIC1ESU5FVDYiCiAgICAgICAgIEFD
X0RFRklORShJTkVUNiwgMSwgW1N1cHBvcnQgSVB2Nl0pCiBmaQogCkBAIC0xMzEsNiArMTM3LDcg
QEAgQUNfQ0hFQ0tfVFlQRShzc2l6ZV90KQogQUNfQ0hFQ0tfRlVOQ1Moc29ja2V0LCAsIEFDX0NI
RUNLX0xJQihzb2NrZXQsIHNvY2tldCkpCiBBQ19DSEVDS19GVU5DUyhpbmV0X2FkZHIsICwgQUNf
Q0hFQ0tfTElCKG5zbCwgaW5ldF9hZGRyKSkKIAorQUNfQ0hFQ0tfSEVBREVSUyhzdGRhdG9taWMu
aCkKIEFDX0NIRUNLX0hFQURFUlMoc3lzL3F1ZXVlLmgpCiBBQ19DSEVDS19IRUFERVJTKGxpbnV4
L2lmX2FkZHIuaCwgW10sIFtdLCBbI2luY2x1ZGUgPHN5cy9zb2NrZXQuaD5dKQogQUNfQ0hFQ0tf
SEVBREVSUyhsaW51eC9ydG5ldGxpbmsuaCwgW10sIFtdLCBbI2luY2x1ZGUgPHN5cy9zb2NrZXQu
aD5dKQpAQCAtMTc0LDQgKzE4MSw2IEBAIEFDX1RSWV9DT01QSUxFKFsjaWZkZWYgSEFWRV9TWVNf
VFlQRVNfSAogQUNfQ19CSUdFTkRJQU4KIAogQUNfU1VCU1QoW0xJQkNGTEFHU10pCitBQ19TVUJT
VChbQVBQQ0ZMQUdTXSkKK2RubCBBQ19DT05GSUdfRklMRVMoW3VzcnNjdHAucGNdKQogQUNfT1VU
UFVUKE1ha2VmaWxlIHVzcnNjdHBsaWIvTWFrZWZpbGUgcHJvZ3JhbXMvTWFrZWZpbGUpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3Vz
cnNjdHAvdXNyc2N0cGxpYi9wcm9ncmFtcy9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3Byb2dy
YW1zL0NNYWtlTGlzdHMudHh0CmluZGV4IGUyMTEyNjBlZDEzOThmNGNmMzVmYzlkNjdiOTNmMDg1
YWMwMGI0ZTEuLmU5NmMyZDdkN2MwNWVmNGRiMGU4NDYxM2U4MmQzMGYyNzZmN2M1YjQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNy
c2N0cC91c3JzY3RwbGliL3Byb2dyYW1zL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3By
b2dyYW1zL0NNYWtlTGlzdHMudHh0CkBAIC00NSwyNyArNDUsOSBAQCBpbmNsdWRlKENoZWNrVHlw
ZVNpemUpCiAKIAogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIwotIyBDSEVDSyBGT1IgVFlQRVMgQU5EIEZVTkNUSU9OUwotIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotCi0jIHh4eCB3YXJ1bSBtYWNoZW4gd2ly
IGRpZSBjaGVja3M/Ci1jaGVja190eXBlX3NpemUoInNpemVfdCIgSEFWRV9TSVpFX1QpCi1jaGVj
a190eXBlX3NpemUoInNzaXplX3QiIEhBVkVfU1NJWkVfVCkKLQotY2hlY2tfZnVuY3Rpb25fZXhp
c3RzKCJzb2NrZXQiIEhBVkVfU09DS0VUKQotY2hlY2tfZnVuY3Rpb25fZXhpc3RzKCJpbmV0X2Fk
ZHIiIEhBVkVfSU5FVF9BRERSKQotCi0KLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMKICMgQ0hFQ0sgSU5DTFVERVMKICMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIAotY2hlY2tfaW5jbHVkZV9maWxlKHN5cy9z
b2NrZXQuaCBIQVZFX1NZU19TT0NLRVRfSCkKLWNoZWNrX2luY2x1ZGVfZmlsZShzeXMvdHlwZXMu
aCBIQVZFX1NZU19UWVBFU19IKQotY2hlY2tfaW5jbHVkZV9maWxlKHN5cy9xdWV1ZS5oIEhBVkVf
U1lTX1FVRVVFX0gpCi1jaGVja19pbmNsdWRlX2ZpbGUobGludXgvaWZfYWRkci5oIEhBVkVfTElO
VVhfSUZfQUREUl9IKQotY2hlY2tfaW5jbHVkZV9maWxlKGxpbnV4L3J0bmV0bGluay5oIEhBVkVf
TElOVVhfUlRORVRMSU5LX0gpCi1jaGVja19pbmNsdWRlX2ZpbGUobmV0aW5ldC9pcF9pY21wLmgg
SEFWRV9ORVRJTkVUX0lQX0lDTVBfSCkKIGNoZWNrX2luY2x1ZGVfZmlsZSh1c3JzY3RwLmggSEFW
RV9VU1JTQ1RQX0gpCiAKIApAQCAtNzQsMjQgKzU2LDI0IEBAIGNoZWNrX2luY2x1ZGVfZmlsZSh1
c3JzY3RwLmggSEFWRV9VU1JTQ1RQX0gpCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjCiAKIGNoZWNrX3N0cnVjdF9oYXNfbWVtYmVyKCJzdHJ1Y3Qgc29j
a2FkZHIiICJzYV9sZW4iICJzeXMvdHlwZXMuaDtzeXMvc29ja2V0LmgiIEhBVkVfU0FfTEVOKQot
aWYoSEFWRV9TQV9MRU4pCi0JYWRkX2RlZmluaXRpb25zKC1ESEFWRV9TQV9MRU4pCi1lbmRpZigp
CitpZiAoSEFWRV9TQV9MRU4pCisgICAgYWRkX2RlZmluaXRpb25zKC1ESEFWRV9TQV9MRU4pCitl
bmRpZiAoKQogCiBjaGVja19zdHJ1Y3RfaGFzX21lbWJlcigic3RydWN0IHNvY2thZGRyX2luIiAi
c2luX2xlbiIgInN5cy90eXBlcy5oO25ldGluZXQvaW4uaCIgSEFWRV9TSU5fTEVOKQotaWYoSEFW
RV9TSU5fTEVOKQotCWFkZF9kZWZpbml0aW9ucygtREhBVkVfU0lOX0xFTikKLWVuZGlmKCkKK2lm
IChIQVZFX1NJTl9MRU4pCisgICAgYWRkX2RlZmluaXRpb25zKC1ESEFWRV9TSU5fTEVOKQorZW5k
aWYgKCkKIAogY2hlY2tfc3RydWN0X2hhc19tZW1iZXIoInN0cnVjdCBzb2NrYWRkcl9pbjYiICJz
aW42X2xlbiIgInN5cy90eXBlcy5oO25ldGluZXQvaW4uaCIgSEFWRV9TSU42X0xFTikKLWlmKEhB
VkVfU0lONl9MRU4pCi0JYWRkX2RlZmluaXRpb25zKC1ESEFWRV9TSU42X0xFTikKLWVuZGlmKCkK
K2lmIChIQVZFX1NJTjZfTEVOKQorICAgIGFkZF9kZWZpbml0aW9ucygtREhBVkVfU0lONl9MRU4p
CitlbmRpZiAoKQogCiBjaGVja19zdHJ1Y3RfaGFzX21lbWJlcigic3RydWN0IHNvY2thZGRyX2Nv
bm4iICJzY29ubl9sZW4iICJ1c3JzY3RwLmgiIEhBVkVfU0NPTk5fTEVOKQotaWYoSEFWRV9TQ09O
Tl9MRU4pCi0JYWRkX2RlZmluaXRpb25zKC1ESEFWRV9TQ09OTl9MRU4pCi1lbmRpZigpCitpZiAo
SEFWRV9TQ09OTl9MRU4pCisgICAgYWRkX2RlZmluaXRpb25zKC1ESEFWRV9TQ09OTl9MRU4pCitl
bmRpZiAoKQogCiAKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMKQEAgLTEwMCwyNyArODIsMjcgQEAgZW5kaWYoKQogCiBvcHRpb24oU0NUUF9ERUJVRyAi
UHJvdmlkZSBkZWJ1ZyBpbmZvcm1hdGlvbiIgMSkKIGlmIChTQ1RQX0RFQlVHKQotCWFkZF9kZWZp
bml0aW9ucygtRFNDVFBfREVCVUcpCi1lbmRpZigpCisgICAgYWRkX2RlZmluaXRpb25zKC1EU0NU
UF9ERUJVRykKK2VuZGlmICgpCiAKIG9wdGlvbihJTkVUICJTdXBwb3J0IElQdjQgIiAxKQogaWYg
KElORVQpCi0JYWRkX2RlZmluaXRpb25zKC1ESU5FVCkKLWVuZGlmKCkKKyAgICBhZGRfZGVmaW5p
dGlvbnMoLURJTkVUKQorZW5kaWYgKCkKIAogb3B0aW9uKElORVQ2ICJTdXBwb3J0IElQdjYgIiAx
KQogaWYgKElORVQ2KQotCWFkZF9kZWZpbml0aW9ucygtRElORVQ2KQotZW5kaWYoKQorICAgIGFk
ZF9kZWZpbml0aW9ucygtRElORVQ2KQorZW5kaWYgKCkKIAogb3B0aW9uKExJTktfU1RBVElDICJM
aW5rIHN0YXRpYyIgMCkKIAogIyB4eHggZW5hYmxlIFczMiBzdXBwb3J0IGZvciBzaGFyZWQgbGli
IC4uLgogaWYgKExJTktfU1RBVElDIE9SIFdJTjMyKQotCXNldChMSU5LX1NUQVRJQyAidXNyc2N0
cC1zdGF0aWMiKQorICAgIHNldChMSU5LX1NUQVRJQyAidXNyc2N0cC1zdGF0aWMiKQogZWxzZSgp
Ci0Jc2V0KExJTktfU1RBVElDICJ1c3JzY3RwIikKLWVuZGlmKCkKKyAgICBzZXQoTElOS19TVEFU
SUMgInVzcnNjdHAiKQorZW5kaWYgKCkKIAogb3B0aW9uKFdFUlJPUiAiV2FybmluZyBhcyBlcnJv
ciIgT04pCiAKQEAgLTEzMCw3NSArMTEyLDc3IEBAIG9wdGlvbihXRVJST1IgIldhcm5pbmcgYXMg
ZXJyb3IiIE9OKQogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIwogCiBpZiAoJHtDTUFLRV9TWVNURU1fTkFNRX0gTUFUQ0hFUyAiTGludXgiKQotCWFkZF9k
ZWZpbml0aW9ucygtRF9HTlVfU09VUkNFKQotZW5kaWYoKQorICAgIGFkZF9kZWZpbml0aW9ucygt
RF9HTlVfU09VUkNFKQorZW5kaWYgKCkKIAogaWYgKCR7Q01BS0VfU1lTVEVNX05BTUV9IE1BVENI
RVMgIkRhcndpbiIpCi0JYWRkX2RlZmluaXRpb25zKC1EX19BUFBMRV9VU0VfUkZDXzIyOTIpCi1l
bmRpZigpCisgICAgYWRkX2RlZmluaXRpb25zKC1EX19BUFBMRV9VU0VfUkZDXzIyOTIpCitlbmRp
ZiAoKQogCiAKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMKICMgTUlTQwogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIwogCi1GSU5EX1BBQ0tBR0UoVGhyZWFkcykKK2ZpbmRfcGFja2FnZShUaHJlYWRzKQogCiAK
ICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICMgUFJP
R1JBTVMKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMK
IAotU0VUIChjaGVja19QUk9HUkFNUwotCWNsaWVudC5jCi0JZGF0YWNoYW5fc2Vydi5jCi0JZGF5
dGltZV9zZXJ2ZXIuYwotCWRpc2NhcmRfc2VydmVyLmMKLQllY2hvX3NlcnZlci5jCi0JZWtyX2Ns
aWVudC5jCi0JZWtyX2xvb3AuYwotCWVrcl9wZWVyLmMKLQlla3Jfc2VydmVyLmMKLQlodHRwX2Ns
aWVudC5jCi0JcnRjd2ViLmMKLQl0ZXN0X2xpYm1nbXQuYwotCXRzY3RwLmMKK3NldChDSEVDS19Q
Uk9HUkFNUworICAgIGNsaWVudC5jCisgICAgZGF0YWNoYW5fc2Vydi5jCisgICAgZGF5dGltZV9z
ZXJ2ZXIuYworICAgIGRpc2NhcmRfc2VydmVyLmMKKyAgICBlY2hvX3NlcnZlci5jCisgICAgZWty
X2NsaWVudC5jCisgICAgZWtyX2xvb3AuYworICAgIGVrcl9sb29wX29mZmxvYWQuYworICAgIGVr
cl9wZWVyLmMKKyAgICBla3Jfc2VydmVyLmMKKyAgICBodHRwX2NsaWVudC5jCisgICAgcnRjd2Vi
LmMKKyAgICB0ZXN0X2xpYm1nbXQuYworICAgIHRlc3RfdGltZXIuYworICAgIHRzY3RwLmMKICkK
IAogIyBTRVRUSU5HUyBGT1IgVU5JWCBDT01QSUxFUgotSUYgKCJ4JHtDTUFLRV9DX0NPTVBJTEVS
X0lEfSIgU1RSRVFVQUwgInhDbGFuZyIgT1IgIngke0NNQUtFX0NfQ09NUElMRVJfSUR9IiBTVFJF
UVVBTCAieEdOVSIpCi0Jc2V0KENNQUtFX0NfRkxBR1MgIiR7Q01BS0VfQ19GTEFHU30gLXBlZGFu
dGljIC1XYWxsIC1zdGQ9Yzk5IikKLQlzZXQoQ01BS0VfQ1hYX0ZMQUdTICIke0NNQUtFX0NYWF9G
TEFHU30gLXBlZGFudGljIC1XYWxsIC1zdGQ9Yzk5IikKLQlpZiAoV0VSUk9SKQotCQlzZXQoQ01B
S0VfQ19GTEFHUyAiJHtDTUFLRV9DX0ZMQUdTfSAtV2Vycm9yIikKLQkJc2V0KENNQUtFX0NYWF9G
TEFHUyAiJHtDTUFLRV9DWFhfRkxBR1N9IC1XZXJyb3IiKQotCWVuZGlmKCkKLUVORElGICgpCitp
ZiAoIngke0NNQUtFX0NfQ09NUElMRVJfSUR9IiBTVFJFUVVBTCAieENsYW5nIiBPUiAieCR7Q01B
S0VfQ19DT01QSUxFUl9JRH0iIFNUUkVRVUFMICJ4R05VIikKKyAgICBzZXQoQ01BS0VfQ19GTEFH
UyAiJHtDTUFLRV9DX0ZMQUdTfSAtcGVkYW50aWMgLVdhbGwgLXN0ZD1jOTkiKQorICAgIHNldChD
TUFLRV9DWFhfRkxBR1MgIiR7Q01BS0VfQ1hYX0ZMQUdTfSAtcGVkYW50aWMgLVdhbGwgLXN0ZD1j
OTkiKQorICAgIGlmIChXRVJST1IpCisgICAgICAgIHNldChDTUFLRV9DX0ZMQUdTICIke0NNQUtF
X0NfRkxBR1N9IC1XZXJyb3IiKQorICAgICAgICBzZXQoQ01BS0VfQ1hYX0ZMQUdTICIke0NNQUtF
X0NYWF9GTEFHU30gLVdlcnJvciIpCisgICAgZW5kaWYgKCkKK2VuZGlmICgpCiAKICMgU0VUVElO
R1MgRk9SIFZJU1VBTCBTVFVESU8gQ09NUElMRVIKLUlGICgieCR7Q01BS0VfQ19DT01QSUxFUl9J
RH0iIFNUUkVRVUFMICJ4TVNWQyIpCi0JSUYgKENNQUtFX0NfRkxBR1MgTUFUQ0hFUyAiL1dbMC00
XSIpCi0JCVNUUklORyhSRUdFWCBSRVBMQUNFICIvV1swLTRdIiAiL1czIiBDTUFLRV9DX0ZMQUdT
ICIke0NNQUtFX0NfRkxBR1N9IikKLQlFTFNFICgpCi0JCVNFVChDTUFLRV9DX0ZMQUdTICIke0NN
QUtFX0NfRkxBR1N9IC9XMyIpCi0JRU5ESUYgKCkKLQotCUlGIChXRVJST1IpCi0JCVNFVChDTUFL
RV9DX0ZMQUdTICIke0NNQUtFX0NfRkxBR1N9IC9XWCIpCi0JRU5ESUYoKQotRU5ESUYgKCkKLQot
Rk9SRUFDSCAoc291cmNlX2ZpbGUgJHtjaGVja19QUk9HUkFNU30pCi0JR0VUX0ZJTEVOQU1FX0NP
TVBPTkVOVCAoc291cmNlX2ZpbGVfd2UgJHtzb3VyY2VfZmlsZX0gTkFNRV9XRSkKLQlBRERfRVhF
Q1VUQUJMRSAoCi0JCSR7c291cmNlX2ZpbGVfd2V9Ci0JCSR7c291cmNlX2ZpbGV9Ci0JKQotCi0J
VEFSR0VUX0xJTktfTElCUkFSSUVTICgke3NvdXJjZV9maWxlX3dlfQotCQkke0xJTktfU1RBVElD
fQotCQkke0NNQUtFX1RIUkVBRF9MSUJTX0lOSVR9Ci0JKQotCi0JQUREX1RFU1QgKCR7c291cmNl
X2ZpbGVfd2V9ICR7c291cmNlX2ZpbGVfd2V9KQotRU5ERk9SRUFDSCAoKQoraWYgKCJ4JHtDTUFL
RV9DX0NPTVBJTEVSX0lEfSIgU1RSRVFVQUwgInhNU1ZDIikKKyAgICBpZiAoQ01BS0VfQ19GTEFH
UyBNQVRDSEVTICIvV1swLTRdIikKKyAgICAgICAgc3RyaW5nKFJFR0VYIFJFUExBQ0UgIi9XWzAt
NF0iICIvVzMiIENNQUtFX0NfRkxBR1MgIiR7Q01BS0VfQ19GTEFHU30iKQorICAgIGVsc2UgKCkK
KyAgICAgICAgc2V0KENNQUtFX0NfRkxBR1MgIiR7Q01BS0VfQ19GTEFHU30gL1czIikKKyAgICBl
bmRpZiAoKQorCisgICAgaWYgKFdFUlJPUikKKyAgICAgICAgc2V0KENNQUtFX0NfRkxBR1MgIiR7
Q01BS0VfQ19GTEFHU30gL1dYIikKKyAgICBlbmRpZiAoKQorZW5kaWYgKCkKKworZm9yZWFjaCAo
U09VUkNFX0ZJTEUgJHtDSEVDS19QUk9HUkFNU30pCisgICAgZ2V0X2ZpbGVuYW1lX2NvbXBvbmVu
dChTT1VSQ0VfRklMRV9XRSAke1NPVVJDRV9GSUxFfSBOQU1FX1dFKQorICAgIGFkZF9leGVjdXRh
YmxlKAorICAgICAgICAke1NPVVJDRV9GSUxFX1dFfQorICAgICAgICAke1NPVVJDRV9GSUxFfQor
ICAgICkKKworICAgIHRhcmdldF9saW5rX2xpYnJhcmllcygke1NPVVJDRV9GSUxFX1dFfQorICAg
ICAgICAke0xJTktfU1RBVElDfQorICAgICAgICAke0NNQUtFX1RIUkVBRF9MSUJTX0lOSVR9Cisg
ICAgKQorCisgICAgYWRkX3Rlc3QoJHtTT1VSQ0VfRklMRV9XRX0gJHtTT1VSQ0VfRklMRV9XRX0p
CitlbmRmb3JlYWNoICgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi9wcm9ncmFtcy9NYWtlZmlsZS5h
bSBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0
cC91c3JzY3RwbGliL3Byb2dyYW1zL01ha2VmaWxlLmFtCmluZGV4IDVmNGZiNGViY2M1YWQzYTlk
Y2ZhZDE1MWVjZGI0YjNjY2IwNjU2MjAuLjQ1YzI0OGZiYTNlOWM4NjhjMzk2YjM3ZjM2MmYwMTFm
NjI5MDNiZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3Byb2dyYW1zL01ha2VmaWxlLmFtCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91
c3JzY3RwbGliL3Byb2dyYW1zL01ha2VmaWxlLmFtCkBAIC0yOSwxMSArMjksMTMgQEAKICMKIAog
QU1fQ1BQRkxBR1MgPSAtSSQoc3JjZGlyKS8uLi91c3JzY3RwbGliCi1FWFRSQV9ESVNUID0gTWFr
ZWZpbGUubm1ha2UgdHNjdHAuYyBkYXl0aW1lX3NlcnZlci5jIGRpc2NhcmRfc2VydmVyLmMgZWNo
b19zZXJ2ZXIuYyBjbGllbnQuYyBydGN3ZWIuYyBla3JfY2xpZW50LmMgZWtyX3NlcnZlci5jIGVr
cl9sb29wLmMgdGVzdF9saWJtZ210LmMgaHR0cF9jbGllbnQuYworRVhUUkFfRElTVCA9IE1ha2Vm
aWxlLm5tYWtlIHRzY3RwLmMgZGF5dGltZV9zZXJ2ZXIuYyBkaXNjYXJkX3NlcnZlci5jIGVjaG9f
c2VydmVyLmMgY2xpZW50LmMgcnRjd2ViLmMgZWtyX2NsaWVudC5jIGVrcl9zZXJ2ZXIuYyBla3Jf
bG9vcC5jIGVrcl9sb29wX29mZmxvYWQuYyB0ZXN0X2xpYm1nbXQuYyBodHRwX2NsaWVudC5jCiAK
LW5vaW5zdF9QUk9HUkFNUyA9IHRzY3RwIGRheXRpbWVfc2VydmVyIGRpc2NhcmRfc2VydmVyIGVj
aG9fc2VydmVyIGNsaWVudCBydGN3ZWIgZWtyX2NsaWVudCBla3Jfc2VydmVyIGVrcl9wZWVyIGVr
cl9sb29wIHRlc3RfbGlibWdtdCBodHRwX2NsaWVudAorbm9pbnN0X1BST0dSQU1TID0gdHNjdHAg
ZGF5dGltZV9zZXJ2ZXIgZGlzY2FyZF9zZXJ2ZXIgZWNob19zZXJ2ZXIgY2xpZW50IHJ0Y3dlYiBl
a3JfY2xpZW50IGVrcl9zZXJ2ZXIgZWtyX3BlZXIgZWtyX2xvb3AgZWtyX2xvb3Bfb2ZmbG9hZCB0
ZXN0X2xpYm1nbXQgdGVzdF90aW1lciBodHRwX2NsaWVudAogdGVzdF9saWJtZ210X1NPVVJDRVMg
PSB0ZXN0X2xpYm1nbXQuYwogdGVzdF9saWJtZ210X0xEQUREID0gLi4vdXNyc2N0cGxpYi9saWJ1
c3JzY3RwLmxhCit0ZXN0X3RpbWVyX1NPVVJDRVMgPSB0ZXN0X3RpbWVyLmMKK3Rlc3RfdGltZXJf
TERBREQgPSAuLi91c3JzY3RwbGliL2xpYnVzcnNjdHAubGEKIHRzY3RwX1NPVVJDRVMgPSB0c2N0
cC5jCiB0c2N0cF9MREFERCA9IC4uL3VzcnNjdHBsaWIvbGlidXNyc2N0cC5sYQogZGF5dGltZV9z
ZXJ2ZXJfU09VUkNFUyA9IGRheXRpbWVfc2VydmVyLmMKQEAgLTU0LDUgKzU2LDcgQEAgZWtyX3Bl
ZXJfU09VUkNFUyA9IGVrcl9wZWVyLmMKIGVrcl9wZWVyX0xEQUREID0gLi4vdXNyc2N0cGxpYi9s
aWJ1c3JzY3RwLmxhCiBla3JfbG9vcF9TT1VSQ0VTID0gZWtyX2xvb3AuYwogZWtyX2xvb3BfTERB
REQgPSAuLi91c3JzY3RwbGliL2xpYnVzcnNjdHAubGEKK2Vrcl9sb29wX29mZmxvYWRfU09VUkNF
UyA9IGVrcl9sb29wX29mZmxvYWQuYworZWtyX2xvb3Bfb2ZmbG9hZF9MREFERCA9IC4uL3VzcnNj
dHBsaWIvbGlidXNyc2N0cC5sYQogaHR0cF9jbGllbnRfU09VUkNFUyA9IGh0dHBfY2xpZW50LmMK
IGh0dHBfY2xpZW50X0xEQUREID0gLi4vdXNyc2N0cGxpYi9saWJ1c3JzY3RwLmxhCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNj
dHAvdXNyc2N0cGxpYi9wcm9ncmFtcy9jbGllbnQuYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3Byb2dyYW1zL2NsaWVu
dC5jCmluZGV4IDU0YzcxNDhhMzZmN2Q4YzQ2ZjY0ODY2ODY2ODE1ZmFiMDQyMjk2MTYuLjhkY2Fk
NmYzN2E5NTI0MmFiZjQ0ZGNhMzk2NDY4OTNmNzczYTk3YTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGli
L3Byb2dyYW1zL2NsaWVudC5jCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3Byb2dyYW1zL2NsaWVudC5jCkBAIC05
Nyw2ICs5NywxMCBAQCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCiAJY2hhciBidWZmZXJb
ODBdOwogCWludCBpLCBuOwogCisJaWYgKGFyZ2MgPCAzKSB7CisJCXByaW50ZigiJXMiLCAiVXNh
Z2U6IGNsaWVudCByZW1vdGVfYWRkciByZW1vdGVfcG9ydCBsb2NhbF9wb3J0IGxvY2FsX2VuY2Fw
c19wb3J0IHJlbW90ZV9lbmNhcHNfcG9ydFxuIik7CisJCXJldHVybiAoLTEpOworCX0KIAlpZiAo
YXJnYyA+IDQpIHsKIAkJdXNyc2N0cF9pbml0KGF0b2koYXJndls0XSksIE5VTEwsIGRlYnVnX3By
aW50Zik7CiAJfSBlbHNlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3Byb2dyYW1zL2RhdGFjaGFu
X3NlcnYuYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
dXNyc2N0cC91c3JzY3RwbGliL3Byb2dyYW1zL2RhdGFjaGFuX3NlcnYuYwppbmRleCAxM2EwYzI3
YzU2NjI5MWE0MjI2ZGY4YzM3NmQ2ZGEwYmJjMTdmYTM4Li5lMzI2MmViZmUxYTY1MzM5ZTJmOTdi
N2QyNDk5NzViNWMyOTRiYzRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi9wcm9ncmFtcy9kYXRhY2hh
bl9zZXJ2LmMKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvcHJvZ3JhbXMvZGF0YWNoYW5fc2Vydi5jCkBAIC00NzAs
NiArNDcwLDEwIEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKICAgICAgICAgICAgICAg
ICBmbGFncyA9IFNDVFBfVU5PUkRFUkVEOwogICAgICAgICAgICAgICAgIHByaW5mby5wcl9wb2xp
Y3kgPSBTQ1RQX1BSX1NDVFBfVFRMOwogICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAg
ICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIGZsYWdzID0gMDsKKyAgICAgICAgICAgICAg
ICBwcmluZm8ucHJfcG9saWN5ID0gMDsKKyAgICAgICAgICAgICAgICBicmVhazsKICAgICAgICAg
ICAgIH0KIAkJCQkJCXNuZGluZm8uc25kX3NpZCA9IHN0cmVhbTsKIAkJCQkJCXNuZGluZm8uc25k
X2ZsYWdzID0gZmxhZ3M7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi9wcm9ncmFtcy9la3JfbG9vcF9v
ZmZsb2FkLmMgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L3VzcnNjdHAvdXNyc2N0cGxpYi9wcm9ncmFtcy9la3JfbG9vcF9vZmZsb2FkLmMKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMTI5NmQwZjQ3NGVjOGQ3NzUwNjJhZmRmODU4NDQwNzIwMjM3NGIxZQotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNy
c2N0cC91c3JzY3RwbGliL3Byb2dyYW1zL2Vrcl9sb29wX29mZmxvYWQuYwpAQCAtMCwwICsxLDU1
OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMS0yMDEzIE1pY2hhZWwgVHVleGVuCisgKgor
ICogQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGlu
IHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlv
biwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwor
ICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJl
dGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlv
bnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxz
IHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqIDMuIE5laXRoZXIgdGhlIG5hbWUg
b2YgdGhlIHByb2plY3Qgbm9yIHRoZSBuYW1lcyBvZiBpdHMgY29udHJpYnV0b3JzCisgKiAgICBt
YXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRo
aXMgc29mdHdhcmUKKyAqICAgIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNz
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIFBST0pFQ1QgQU5E
IENPTlRSSUJVVE9SUyBgYEFTIElTJycgQU5ECisgKiBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UiBQVVJQT1NFCisgKiBBUkUgRElTQ0xBSU1FRC4JSU4gTk8gRVZFTlQgU0hBTEwgVEhFIFBST0pF
Q1QgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRQorICogRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwKKyAqIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTCisgKiBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikKKyAqIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUCisgKiBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZCisgKiBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GCisgKiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaWZkZWYgX1dJTjMyCisjZGVmaW5lIF9DUlRfU0VDVVJFX05PX1dBUk5JTkdTCisjZW5kaWYK
KyNpbmNsdWRlIDxzdGRpby5oPgorI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2luY2x1ZGUgPHN0cmlu
Zy5oPgorI2luY2x1ZGUgPHN0ZGFyZy5oPgorI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorI2lmbmRl
ZiBfV0lOMzIKKyNpbmNsdWRlIDxzeXMvc29ja2V0Lmg+CisjaW5jbHVkZSA8bmV0aW5ldC9pbi5o
PgorI2luY2x1ZGUgPGFycGEvaW5ldC5oPgorI2luY2x1ZGUgPGVycm5vLmg+CisjaW5jbHVkZSA8
cHRocmVhZC5oPgorI2luY2x1ZGUgPHVuaXN0ZC5oPgorI2Vsc2UKKyNpbmNsdWRlIDx3aW5zb2Nr
Mi5oPgorI2luY2x1ZGUgPHdzMnRjcGlwLmg+CisjZW5kaWYKKyNpbmNsdWRlIDx1c3JzY3RwLmg+
CisKKyNkZWZpbmUgTUFYX1BBQ0tFVF9TSVpFICgxPDwxNikKKyNkZWZpbmUgTElORV9MRU5HVEgg
KDE8PDIwKQorI2RlZmluZSBESVNDQVJEX1BQSUQgMzkKKworI2lmZGVmIF9XSU4zMgorc3RhdGlj
IERXT1JEIFdJTkFQSQorI2Vsc2UKK3N0YXRpYyB2b2lkICoKKyNlbmRpZgoraGFuZGxlX3BhY2tl
dHModm9pZCAqYXJnKQoreworI2lmZGVmIF9XSU4zMgorCVNPQ0tFVCAqZmRwOworI2Vsc2UKKwlp
bnQgKmZkcDsKKyNlbmRpZgorCWNoYXIgKmR1bXBfYnVmZmVyOworCXN0cnVjdCBzY3RwX2NvbW1v
bl9oZWFkZXIgKmhkcjsKKwlzc2l6ZV90IGxlbmd0aDsKKwljaGFyIGJ1ZmZlcltNQVhfUEFDS0VU
X1NJWkVdOworCXVpbnQzMl90IHJlY2VpdmVkX2NyYzMyYywgY29tcHV0ZWRfY3JjMzJjOworCisj
aWZkZWYgX1dJTjMyCisJZmRwID0gKFNPQ0tFVCAqKWFyZzsKKyNlbHNlCisJZmRwID0gKGludCAq
KWFyZzsKKyNlbmRpZgorCWZvciAoOzspIHsKKyNpZiBkZWZpbmVkKF9fTmV0QlNEX18pCisJCXB0
aHJlYWRfdGVzdGNhbmNlbCgpOworI2VuZGlmCisJCWxlbmd0aCA9IHJlY3YoKmZkcCwgYnVmZmVy
LCBNQVhfUEFDS0VUX1NJWkUsIDApOworCQlpZiAobGVuZ3RoID4gMCkgeworCQkJaWYgKChkdW1w
X2J1ZmZlciA9IHVzcnNjdHBfZHVtcHBhY2tldChidWZmZXIsIChzaXplX3QpbGVuZ3RoLCBTQ1RQ
X0RVTVBfSU5CT1VORCkpICE9IE5VTEwpIHsKKwkJCQkvL2ZwcmludGYoc3RkZXJyLCAiJXMiLCBk
dW1wX2J1ZmZlcik7CisJCQkJdXNyc2N0cF9mcmVlZHVtcGJ1ZmZlcihkdW1wX2J1ZmZlcik7CisJ
CQl9CisJCQlpZiAoKHNpemVfdClsZW5ndGggPj0gc2l6ZW9mKHN0cnVjdCBzY3RwX2NvbW1vbl9o
ZWFkZXIpKSB7CisJCQkJaGRyID0gKHN0cnVjdCBzY3RwX2NvbW1vbl9oZWFkZXIgKilidWZmZXI7
CisJCQkJcmVjZWl2ZWRfY3JjMzJjID0gaGRyLT5jcmMzMmM7CisJCQkJaGRyLT5jcmMzMmMgPSBo
dG9ubCgwKTsKKwkJCQljb21wdXRlZF9jcmMzMmMgPSB1c3JzY3RwX2NyYzMyYyhidWZmZXIsIChz
aXplX3QpbGVuZ3RoKTsKKwkJCQloZHItPmNyYzMyYyA9IHJlY2VpdmVkX2NyYzMyYzsKKwkJCQlp
ZiAocmVjZWl2ZWRfY3JjMzJjID09IGNvbXB1dGVkX2NyYzMyYykgeworCQkJCQl1c3JzY3RwX2Nv
bm5pbnB1dChmZHAsIGJ1ZmZlciwgKHNpemVfdClsZW5ndGgsIDApOworCQkJCX0gZWxzZSB7CisJ
CQkJCWZwcmludGYoc3RkZXJyLCAiV3JvbmcgQ1JDMzJjOiBleHBlY3RlZCAlMDh4IHJlY2VpdmVk
ICUwOHhcbiIsCisJCQkJCSAgICAgICAgbnRvaGwoY29tcHV0ZWRfY3JjMzJjKSwgbnRvaGwocmVj
ZWl2ZWRfY3JjMzJjKSk7CisJCQkJfQorCQkJfSBlbHNlIHsKKwkJCQlmcHJpbnRmKHN0ZGVyciwg
IlBhY2tldCB0b28gc2hvcnQ6IGxlbmd0aCAlenUiLCAoc2l6ZV90KWxlbmd0aCk7CisJCQl9CisJ
CX0KKwl9CisjaWZkZWYgX1dJTjMyCisJcmV0dXJuIDA7CisjZWxzZQorCXJldHVybiAoTlVMTCk7
CisjZW5kaWYKK30KKworc3RhdGljIGludAorY29ubl9vdXRwdXQodm9pZCAqYWRkciwgdm9pZCAq
YnVmZmVyLCBzaXplX3QgbGVuZ3RoLCB1aW50OF90IHRvcywgdWludDhfdCBzZXRfZGYpCit7CisJ
Y2hhciAqZHVtcF9idWZmZXI7CisJc3RydWN0IHNjdHBfY29tbW9uX2hlYWRlciAqaGRyOworI2lm
ZGVmIF9XSU4zMgorCVNPQ0tFVCAqZmRwOworI2Vsc2UKKwlpbnQgKmZkcDsKKyNlbmRpZgorCisj
aWZkZWYgX1dJTjMyCisJZmRwID0gKFNPQ0tFVCAqKWFkZHI7CisjZWxzZQorCWZkcCA9IChpbnQg
KilhZGRyOworI2VuZGlmCisJaWYgKGxlbmd0aCA+PSBzaXplb2Yoc3RydWN0IHNjdHBfY29tbW9u
X2hlYWRlcikpIHsKKwkJaGRyID0gKHN0cnVjdCBzY3RwX2NvbW1vbl9oZWFkZXIgKilidWZmZXI7
CisJCWhkci0+Y3JjMzJjID0gdXNyc2N0cF9jcmMzMmMoYnVmZmVyLCAoc2l6ZV90KWxlbmd0aCk7
CisJfQorCWlmICgoZHVtcF9idWZmZXIgPSB1c3JzY3RwX2R1bXBwYWNrZXQoYnVmZmVyLCBsZW5n
dGgsIFNDVFBfRFVNUF9PVVRCT1VORCkpICE9IE5VTEwpIHsKKwkJLy9mcHJpbnRmKHN0ZGVyciwg
IiVzIiwgZHVtcF9idWZmZXIpOworCQl1c3JzY3RwX2ZyZWVkdW1wYnVmZmVyKGR1bXBfYnVmZmVy
KTsKKwl9CisjaWZkZWYgX1dJTjMyCisJaWYgKHNlbmQoKmZkcCwgYnVmZmVyLCAoaW50KWxlbmd0
aCwgMCkgPT0gU09DS0VUX0VSUk9SKSB7CisJCXJldHVybiAoV1NBR2V0TGFzdEVycm9yKCkpOwor
I2Vsc2UKKwlpZiAoc2VuZCgqZmRwLCBidWZmZXIsIGxlbmd0aCwgMCkgPCAwKSB7CisJCXJldHVy
biAoZXJybm8pOworI2VuZGlmCisJfSBlbHNlIHsKKwkJcmV0dXJuICgwKTsKKwl9Cit9CisKK3N0
YXRpYyBpbnQKK3JlY2VpdmVfY2Ioc3RydWN0IHNvY2tldCAqc29jaywgdW5pb24gc2N0cF9zb2Nr
c3RvcmUgYWRkciwgdm9pZCAqZGF0YSwKKyAgICAgICAgICAgc2l6ZV90IGRhdGFsZW4sIHN0cnVj
dCBzY3RwX3JjdmluZm8gcmN2LCBpbnQgZmxhZ3MsIHZvaWQgKnVscF9pbmZvKQoreworCXByaW50
ZigiTWVzc2FnZSAlcCByZWNlaXZlZCBvbiBzb2NrID0gJXAuXG4iLCBkYXRhLCAodm9pZCAqKXNv
Y2spOworCWlmIChkYXRhKSB7CisJCWlmICgoZmxhZ3MgJiBNU0dfTk9USUZJQ0FUSU9OKSA9PSAw
KSB7CisJCQlwcmludGYoIk1lc3NzYWdlIG9mIGxlbmd0aCAlZCByZWNlaXZlZCB2aWEgJXA6JXUg
b24gc3RyZWFtICVkIHdpdGggU1NOICV1IGFuZCBUU04gJXUsIFBQSUQgJXUsIGNvbnRleHQgJXUs
IGZsYWdzICV4LlxuIiwKKwkJCSAgICAgICAoaW50KWRhdGFsZW4sCisJCQkgICAgICAgYWRkci5z
Y29ubi5zY29ubl9hZGRyLAorCQkJICAgICAgIG50b2hzKGFkZHIuc2Nvbm4uc2Nvbm5fcG9ydCks
CisJCQkgICAgICAgcmN2LnJjdl9zaWQsCisJCQkgICAgICAgcmN2LnJjdl9zc24sCisJCQkgICAg
ICAgcmN2LnJjdl90c24sCisJCQkgICAgICAgbnRvaGwocmN2LnJjdl9wcGlkKSwKKwkJCSAgICAg
ICByY3YucmN2X2NvbnRleHQsCisJCQkgICAgICAgZmxhZ3MpOworCQl9CisJCWZyZWUoZGF0YSk7
CisJfSBlbHNlIHsKKwkJdXNyc2N0cF9kZXJlZ2lzdGVyX2FkZHJlc3ModWxwX2luZm8pOworCQl1
c3JzY3RwX2Nsb3NlKHNvY2spOworCX0KKwlyZXR1cm4gKDEpOworfQorCisjaWYgMAorc3RhdGlj
IHZvaWQKK3ByaW50X2FkZHJlc3NlcyhzdHJ1Y3Qgc29ja2V0ICpzb2NrKQoreworCWludCBpLCBu
OworCXN0cnVjdCBzb2NrYWRkciAqYWRkcnMsICphZGRyOworCisJbiA9IHVzcnNjdHBfZ2V0bGFk
ZHJzKHNvY2ssIDAsICZhZGRycyk7CisJYWRkciA9IGFkZHJzOworCWZvciAoaSA9IDA7IGkgPCBu
OyBpKyspIHsKKwkJc3dpdGNoIChhZGRyLT5zYV9mYW1pbHkpIHsKKwkJY2FzZSBBRl9JTkVUOgor
CQl7CisJCQlzdHJ1Y3Qgc29ja2FkZHJfaW4gKnNpbjsKKwkJCWNoYXIgYnVmW0lORVRfQUREUlNU
UkxFTl07CisJCQljb25zdCBjaGFyICpuYW1lOworCisJCQlzaW4gPSAoc3RydWN0IHNvY2thZGRy
X2luICopYWRkcjsKKwkJCW5hbWUgPSBpbmV0X250b3AoQUZfSU5FVCwgJnNpbi0+c2luX2FkZHIs
IGJ1ZiwgSU5FVF9BRERSU1RSTEVOKTsKKwkJCXByaW50ZigiJXM6JWQiLCBuYW1lLCBudG9ocyhz
aW4tPnNpbl9wb3J0KSk7CisJCQlicmVhazsKKwkJfQorCQljYXNlIEFGX0lORVQ2OgorCQl7CisJ
CQlzdHJ1Y3Qgc29ja2FkZHJfaW42ICpzaW42OworCQkJY2hhciBidWZbSU5FVDZfQUREUlNUUkxF
Tl07CisJCQljb25zdCBjaGFyICpuYW1lOworCisJCQlzaW42ID0gKHN0cnVjdCBzb2NrYWRkcl9p
bjYgKilhZGRyOworCQkJbmFtZSA9IGluZXRfbnRvcChBRl9JTkVUNiwgJnNpbjYtPnNpbjZfYWRk
ciwgYnVmLCBJTkVUNl9BRERSU1RSTEVOKTsKKwkJCXByaW50ZigiJXM6JWQiLCBuYW1lLCBudG9o
cyhzaW42LT5zaW42X3BvcnQpKTsKKwkJCWJyZWFrOworCQl9CisJCWNhc2UgQUZfQ09OTjoKKwkJ
eworCQkJc3RydWN0IHNvY2thZGRyX2Nvbm4gKnNjb25uOworCisJCQlzY29ubiA9IChzdHJ1Y3Qg
c29ja2FkZHJfY29ubiAqKWFkZHI7CisJCQlwcmludGYoIiVwOiVkIiwgc2Nvbm4tPnNjb25uX2Fk
ZHIsIG50b2hzKHNjb25uLT5zY29ubl9wb3J0KSk7CisJCQlicmVhazsKKwkJfQorCQlkZWZhdWx0
OgorCQkJcHJpbnRmKCJVbmtub3duIGZhbWlseTogJWQiLCBhZGRyLT5zYV9mYW1pbHkpOworCQkJ
YnJlYWs7CisJCX0KKwkJYWRkciA9IChzdHJ1Y3Qgc29ja2FkZHIgKikoKGNhZGRyX3QpYWRkciAr
IGFkZHItPnNhX2xlbik7CisJCWlmIChpICE9IG4gLSAxKSB7CisJCQlwcmludGYoIiwiKTsKKwkJ
fQorCX0KKwlpZiAobiA+IDApIHsKKwkJdXNyc2N0cF9mcmVlbGFkZHJzKGFkZHJzKTsKKwl9CisJ
cHJpbnRmKCI8LT4iKTsKKwluID0gdXNyc2N0cF9nZXRwYWRkcnMoc29jaywgMCwgJmFkZHJzKTsK
KwlhZGRyID0gYWRkcnM7CisJZm9yIChpID0gMDsgaSA8IG47IGkrKykgeworCQlzd2l0Y2ggKGFk
ZHItPnNhX2ZhbWlseSkgeworCQljYXNlIEFGX0lORVQ6CisJCXsKKwkJCXN0cnVjdCBzb2NrYWRk
cl9pbiAqc2luOworCQkJY2hhciBidWZbSU5FVF9BRERSU1RSTEVOXTsKKwkJCWNvbnN0IGNoYXIg
Km5hbWU7CisKKwkJCXNpbiA9IChzdHJ1Y3Qgc29ja2FkZHJfaW4gKilhZGRyOworCQkJbmFtZSA9
IGluZXRfbnRvcChBRl9JTkVULCAmc2luLT5zaW5fYWRkciwgYnVmLCBJTkVUX0FERFJTVFJMRU4p
OworCQkJcHJpbnRmKCIlczolZCIsIG5hbWUsIG50b2hzKHNpbi0+c2luX3BvcnQpKTsKKwkJCWJy
ZWFrOworCQl9CisJCWNhc2UgQUZfSU5FVDY6CisJCXsKKwkJCXN0cnVjdCBzb2NrYWRkcl9pbjYg
KnNpbjY7CisJCQljaGFyIGJ1ZltJTkVUNl9BRERSU1RSTEVOXTsKKwkJCWNvbnN0IGNoYXIgKm5h
bWU7CisKKwkJCXNpbjYgPSAoc3RydWN0IHNvY2thZGRyX2luNiAqKWFkZHI7CisJCQluYW1lID0g
aW5ldF9udG9wKEFGX0lORVQ2LCAmc2luNi0+c2luNl9hZGRyLCBidWYsIElORVQ2X0FERFJTVFJM
RU4pOworCQkJcHJpbnRmKCIlczolZCIsIG5hbWUsIG50b2hzKHNpbjYtPnNpbjZfcG9ydCkpOwor
CQkJYnJlYWs7CisJCX0KKwkJY2FzZSBBRl9DT05OOgorCQl7CisJCQlzdHJ1Y3Qgc29ja2FkZHJf
Y29ubiAqc2Nvbm47CisKKwkJCXNjb25uID0gKHN0cnVjdCBzb2NrYWRkcl9jb25uICopYWRkcjsK
KwkJCXByaW50ZigiJXA6JWQiLCBzY29ubi0+c2Nvbm5fYWRkciwgbnRvaHMoc2Nvbm4tPnNjb25u
X3BvcnQpKTsKKwkJCWJyZWFrOworCQl9CisJCWRlZmF1bHQ6CisJCQlwcmludGYoIlVua25vd24g
ZmFtaWx5OiAlZCIsIGFkZHItPnNhX2ZhbWlseSk7CisJCQlicmVhazsKKwkJfQorCQlhZGRyID0g
KHN0cnVjdCBzb2NrYWRkciAqKSgoY2FkZHJfdClhZGRyICsgYWRkci0+c2FfbGVuKTsKKwkJaWYg
KGkgIT0gbiAtIDEpIHsKKwkJCXByaW50ZigiLCIpOworCQl9CisJfQorCWlmIChuID4gMCkgewor
CQl1c3JzY3RwX2ZyZWVwYWRkcnMoYWRkcnMpOworCX0KKwlwcmludGYoIlxuIik7Cit9CisjZW5k
aWYKKwordm9pZAorZGVidWdfcHJpbnRmKGNvbnN0IGNoYXIgKmZvcm1hdCwgLi4uKQoreworCXZh
X2xpc3QgYXA7CisKKwl2YV9zdGFydChhcCwgZm9ybWF0KTsKKwl2cHJpbnRmKGZvcm1hdCwgYXAp
OworCXZhX2VuZChhcCk7Cit9CisKK2ludAorbWFpbih2b2lkKQoreworCXN0cnVjdCBzb2NrYWRk
cl9pbiBzaW5fcywgc2luX2M7CisJc3RydWN0IHNvY2thZGRyX2Nvbm4gc2Nvbm47CisjaWZkZWYg
X1dJTjMyCisJU09DS0VUIGZkX2MsIGZkX3M7CisjZWxzZQorCWludCBmZF9jLCBmZF9zOworI2Vu
ZGlmCisJc3RydWN0IHNvY2tldCAqc19jLCAqc19zLCAqc19sOworI2lmZGVmIF9XSU4zMgorCUhB
TkRMRSB0aWRfYywgdGlkX3M7CisjZWxzZQorCXB0aHJlYWRfdCB0aWRfYywgdGlkX3M7CisjZW5k
aWYKKwlpbnQgY3VyX2J1Zl9zaXplLCBzbmRfYnVmX3NpemUsIHJjdl9idWZfc2l6ZTsKKwlzb2Nr
bGVuX3Qgb3B0X2xlbjsKKwlzdHJ1Y3Qgc2N0cF9zbmRpbmZvIHNuZGluZm87CisJY2hhciAqbGlu
ZTsKKyNpZmRlZiBfV0lOMzIKKwlXU0FEQVRBIHdzYURhdGE7CisjZW5kaWYKKworI2lmZGVmIF9X
SU4zMgorCWlmIChXU0FTdGFydHVwKE1BS0VXT1JEKDIsMiksICZ3c2FEYXRhKSAhPSAwKSB7CisJ
CXByaW50ZigiV1NBU3RhcnR1cCBmYWlsZWRcbiIpOworCQlleGl0IChFWElUX0ZBSUxVUkUpOwor
CX0KKyNlbmRpZgorCXVzcnNjdHBfaW5pdCgwLCBjb25uX291dHB1dCwgZGVidWdfcHJpbnRmKTsK
Kwl1c3JzY3RwX2VuYWJsZV9jcmMzMmNfb2ZmbG9hZCgpOworCS8qIHNldCB1cCBhIGNvbm5lY3Rl
ZCBVRFAgc29ja2V0ICovCisjaWZkZWYgX1dJTjMyCisJaWYgKChmZF9jID0gc29ja2V0KEFGX0lO
RVQsIFNPQ0tfREdSQU0sIElQUFJPVE9fVURQKSkgPT0gSU5WQUxJRF9TT0NLRVQpIHsKKwkJcHJp
bnRmKCJzb2NrZXQoKSBmYWlsZWQgd2l0aCBlcnJvcjogJWRcbiIsIFdTQUdldExhc3RFcnJvcigp
KTsKKwkJZXhpdChFWElUX0ZBSUxVUkUpOworCX0KKwlpZiAoKGZkX3MgPSBzb2NrZXQoQUZfSU5F
VCwgU09DS19ER1JBTSwgSVBQUk9UT19VRFApKSA9PSBJTlZBTElEX1NPQ0tFVCkgeworCQlwcmlu
dGYoInNvY2tldCgpIGZhaWxlZCB3aXRoIGVycm9yOiAlZFxuIiwgV1NBR2V0TGFzdEVycm9yKCkp
OworCQlleGl0KEVYSVRfRkFJTFVSRSk7CisJfQorI2Vsc2UKKwlpZiAoKGZkX2MgPSBzb2NrZXQo
QUZfSU5FVCwgU09DS19ER1JBTSwgSVBQUk9UT19VRFApKSA8IDApIHsKKwkJcGVycm9yKCJzb2Nr
ZXQiKTsKKwkJZXhpdChFWElUX0ZBSUxVUkUpOworCX0KKwlpZiAoKGZkX3MgPSBzb2NrZXQoQUZf
SU5FVCwgU09DS19ER1JBTSwgSVBQUk9UT19VRFApKSA8IDApIHsKKwkJcGVycm9yKCJzb2NrZXQi
KTsKKwkJZXhpdChFWElUX0ZBSUxVUkUpOworCX0KKyNlbmRpZgorCW1lbXNldCgmc2luX2MsIDAs
IHNpemVvZihzdHJ1Y3Qgc29ja2FkZHJfaW4pKTsKKwlzaW5fYy5zaW5fZmFtaWx5ID0gQUZfSU5F
VDsKKyNpZmRlZiBIQVZFX1NJTl9MRU4KKwlzaW5fYy5zaW5fbGVuID0gc2l6ZW9mKHN0cnVjdCBz
b2NrYWRkcl9pbik7CisjZW5kaWYKKwlzaW5fYy5zaW5fcG9ydCA9IGh0b25zKDk4OTkpOworCXNp
bl9jLnNpbl9hZGRyLnNfYWRkciA9IGh0b25sKElOQUREUl9MT09QQkFDSyk7CisJbWVtc2V0KCZz
aW5fcywgMCwgc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl9pbikpOworCXNpbl9zLnNpbl9mYW1pbHkg
PSBBRl9JTkVUOworI2lmZGVmIEhBVkVfU0lOX0xFTgorCXNpbl9zLnNpbl9sZW4gPSBzaXplb2Yo
c3RydWN0IHNvY2thZGRyX2luKTsKKyNlbmRpZgorCXNpbl9zLnNpbl9wb3J0ID0gaHRvbnMoOTkw
MSk7CisJc2luX3Muc2luX2FkZHIuc19hZGRyID0gaHRvbmwoSU5BRERSX0xPT1BCQUNLKTsKKyNp
ZmRlZiBfV0lOMzIKKwlpZiAoYmluZChmZF9jLCAoc3RydWN0IHNvY2thZGRyICopJnNpbl9jLCBz
aXplb2Yoc3RydWN0IHNvY2thZGRyX2luKSkgPT0gU09DS0VUX0VSUk9SKSB7CisJCXByaW50Zigi
YmluZCgpIGZhaWxlZCB3aXRoIGVycm9yOiAlZFxuIiwgV1NBR2V0TGFzdEVycm9yKCkpOworCQll
eGl0KEVYSVRfRkFJTFVSRSk7CisJfQorCWlmIChiaW5kKGZkX3MsIChzdHJ1Y3Qgc29ja2FkZHIg
Kikmc2luX3MsIHNpemVvZihzdHJ1Y3Qgc29ja2FkZHJfaW4pKSA9PSBTT0NLRVRfRVJST1IpIHsK
KwkJcHJpbnRmKCJiaW5kKCkgZmFpbGVkIHdpdGggZXJyb3I6ICVkXG4iLCBXU0FHZXRMYXN0RXJy
b3IoKSk7CisJCWV4aXQoRVhJVF9GQUlMVVJFKTsKKwl9CisjZWxzZQorCWlmIChiaW5kKGZkX2Ms
IChzdHJ1Y3Qgc29ja2FkZHIgKikmc2luX2MsIHNpemVvZihzdHJ1Y3Qgc29ja2FkZHJfaW4pKSA8
IDApIHsKKwkJcGVycm9yKCJiaW5kIik7CisJCWV4aXQoRVhJVF9GQUlMVVJFKTsKKwl9CisJaWYg
KGJpbmQoZmRfcywgKHN0cnVjdCBzb2NrYWRkciAqKSZzaW5fcywgc2l6ZW9mKHN0cnVjdCBzb2Nr
YWRkcl9pbikpIDwgMCkgeworCQlwZXJyb3IoImJpbmQiKTsKKwkJZXhpdChFWElUX0ZBSUxVUkUp
OworCX0KKyNlbmRpZgorI2lmZGVmIF9XSU4zMgorCWlmIChjb25uZWN0KGZkX2MsIChzdHJ1Y3Qg
c29ja2FkZHIgKikmc2luX3MsIHNpemVvZihzdHJ1Y3Qgc29ja2FkZHJfaW4pKSA9PSBTT0NLRVRf
RVJST1IpIHsKKwkJcHJpbnRmKCJjb25uZWN0KCkgZmFpbGVkIHdpdGggZXJyb3I6ICVkXG4iLCBX
U0FHZXRMYXN0RXJyb3IoKSk7CisJCWV4aXQoRVhJVF9GQUlMVVJFKTsKKwl9CisJaWYgKGNvbm5l
Y3QoZmRfcywgKHN0cnVjdCBzb2NrYWRkciAqKSZzaW5fYywgc2l6ZW9mKHN0cnVjdCBzb2NrYWRk
cl9pbikpID09IFNPQ0tFVF9FUlJPUikgeworCQlwcmludGYoImNvbm5lY3QoKSBmYWlsZWQgd2l0
aCBlcnJvcjogJWRcbiIsIFdTQUdldExhc3RFcnJvcigpKTsKKwkJZXhpdChFWElUX0ZBSUxVUkUp
OworCX0KKyNlbHNlCisJaWYgKGNvbm5lY3QoZmRfYywgKHN0cnVjdCBzb2NrYWRkciAqKSZzaW5f
cywgc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl9pbikpIDwgMCkgeworCQlwZXJyb3IoImNvbm5lY3Qi
KTsKKwkJZXhpdChFWElUX0ZBSUxVUkUpOworCX0KKwlpZiAoY29ubmVjdChmZF9zLCAoc3RydWN0
IHNvY2thZGRyICopJnNpbl9jLCBzaXplb2Yoc3RydWN0IHNvY2thZGRyX2luKSkgPCAwKSB7CisJ
CXBlcnJvcigiY29ubmVjdCIpOworCQlleGl0KEVYSVRfRkFJTFVSRSk7CisJfQorI2VuZGlmCisj
aWZkZWYgX1dJTjMyCisJdGlkX2MgPSBDcmVhdGVUaHJlYWQoTlVMTCwgMCwgJmhhbmRsZV9wYWNr
ZXRzLCAodm9pZCAqKSZmZF9jLCAwLCBOVUxMKTsKKwl0aWRfcyA9IENyZWF0ZVRocmVhZChOVUxM
LCAwLCAmaGFuZGxlX3BhY2tldHMsICh2b2lkICopJmZkX3MsIDAsIE5VTEwpOworI2Vsc2UKKwlp
ZiAocHRocmVhZF9jcmVhdGUoJnRpZF9jLCBOVUxMLCAmaGFuZGxlX3BhY2tldHMsICh2b2lkICop
JmZkX2MpKSB7CisJCXBlcnJvcigicHRocmVhZF9jcmVhdGUgdGlkX2MiKTsKKwkJZXhpdChFWElU
X0ZBSUxVUkUpOworCX0KKworCWlmIChwdGhyZWFkX2NyZWF0ZSgmdGlkX3MsIE5VTEwsICZoYW5k
bGVfcGFja2V0cywgKHZvaWQgKikmZmRfcykpIHsKKwkJcGVycm9yKCJwdGhyZWFkX2NyZWF0ZSB0
aWRfcyIpOworCQlleGl0KEVYSVRfRkFJTFVSRSk7CisJfTsKKyNlbmRpZgorI2lmZGVmIFNDVFBf
REVCVUcKKwl1c3JzY3RwX3N5c2N0bF9zZXRfc2N0cF9kZWJ1Z19vbihTQ1RQX0RFQlVHX0FMTCk7
CisjZW5kaWYKKwl1c3JzY3RwX3N5c2N0bF9zZXRfc2N0cF9lY25fZW5hYmxlKDApOworCXVzcnNj
dHBfcmVnaXN0ZXJfYWRkcmVzcygodm9pZCAqKSZmZF9jKTsKKwl1c3JzY3RwX3JlZ2lzdGVyX2Fk
ZHJlc3MoKHZvaWQgKikmZmRfcyk7CisJaWYgKChzX2MgPSB1c3JzY3RwX3NvY2tldChBRl9DT05O
LCBTT0NLX1NUUkVBTSwgSVBQUk9UT19TQ1RQLCByZWNlaXZlX2NiLCBOVUxMLCAwLCAmZmRfYykp
ID09IE5VTEwpIHsKKwkJcGVycm9yKCJ1c3JzY3RwX3NvY2tldCIpOworCQlleGl0KEVYSVRfRkFJ
TFVSRSk7CisJfQorCW9wdF9sZW4gPSAoc29ja2xlbl90KXNpemVvZihpbnQpOworCWN1cl9idWZf
c2l6ZSA9IDA7CisJaWYgKHVzcnNjdHBfZ2V0c29ja29wdChzX2MsIFNPTF9TT0NLRVQsIFNPX1NO
REJVRiwgJmN1cl9idWZfc2l6ZSwgJm9wdF9sZW4pIDwgMCkgeworCQlwZXJyb3IoInVzcnNjdHBf
Z2V0c29ja29wdCIpOworCQlleGl0KEVYSVRfRkFJTFVSRSk7CisJfQorCXByaW50ZigiQ2hhbmdl
IHNlbmQgc29ja2V0IGJ1ZmZlciBzaXplIGZyb20gJWQgIiwgY3VyX2J1Zl9zaXplKTsKKwlzbmRf
YnVmX3NpemUgPSAxPDwyMDsgLyogMSBNQiAqLworCWlmICh1c3JzY3RwX3NldHNvY2tvcHQoc19j
LCBTT0xfU09DS0VULCBTT19TTkRCVUYsICZzbmRfYnVmX3NpemUsIHNpemVvZihpbnQpKSA8IDAp
IHsKKwkJcGVycm9yKCJ1c3JzY3RwX3NldHNvY2tvcHQiKTsKKwkJZXhpdChFWElUX0ZBSUxVUkUp
OworCX0KKwlvcHRfbGVuID0gKHNvY2tsZW5fdClzaXplb2YoaW50KTsKKwljdXJfYnVmX3NpemUg
PSAwOworCWlmICh1c3JzY3RwX2dldHNvY2tvcHQoc19jLCBTT0xfU09DS0VULCBTT19TTkRCVUYs
ICZjdXJfYnVmX3NpemUsICZvcHRfbGVuKSA8IDApIHsKKwkJcGVycm9yKCJ1c3JzY3RwX2dldHNv
Y2tvcHQiKTsKKwkJZXhpdChFWElUX0ZBSUxVUkUpOworCX0KKwlwcmludGYoInRvICVkLlxuIiwg
Y3VyX2J1Zl9zaXplKTsKKwlpZiAoKHNfbCA9IHVzcnNjdHBfc29ja2V0KEFGX0NPTk4sIFNPQ0tf
U1RSRUFNLCBJUFBST1RPX1NDVFAsIHJlY2VpdmVfY2IsIE5VTEwsIDAsICZmZF9zKSkgPT0gTlVM
TCkgeworCQlwZXJyb3IoInVzcnNjdHBfc29ja2V0Iik7CisJCWV4aXQoRVhJVF9GQUlMVVJFKTsK
Kwl9CisJb3B0X2xlbiA9IChzb2NrbGVuX3Qpc2l6ZW9mKGludCk7CisJY3VyX2J1Zl9zaXplID0g
MDsKKwlpZiAodXNyc2N0cF9nZXRzb2Nrb3B0KHNfbCwgU09MX1NPQ0tFVCwgU09fUkNWQlVGLCAm
Y3VyX2J1Zl9zaXplLCAmb3B0X2xlbikgPCAwKSB7CisJCXBlcnJvcigidXNyc2N0cF9nZXRzb2Nr
b3B0Iik7CisJCWV4aXQoRVhJVF9GQUlMVVJFKTsKKwl9CisJcHJpbnRmKCJDaGFuZ2UgcmVjZWl2
ZSBzb2NrZXQgYnVmZmVyIHNpemUgZnJvbSAlZCAiLCBjdXJfYnVmX3NpemUpOworCXJjdl9idWZf
c2l6ZSA9IDE8PDE2OyAvKiA2NCBLQiAqLworCWlmICh1c3JzY3RwX3NldHNvY2tvcHQoc19sLCBT
T0xfU09DS0VULCBTT19SQ1ZCVUYsICZyY3ZfYnVmX3NpemUsIHNpemVvZihpbnQpKSA8IDApIHsK
KwkJcGVycm9yKCJ1c3JzY3RwX3NldHNvY2tvcHQiKTsKKwkJZXhpdChFWElUX0ZBSUxVUkUpOwor
CX0KKwlvcHRfbGVuID0gKHNvY2tsZW5fdClzaXplb2YoaW50KTsKKwljdXJfYnVmX3NpemUgPSAw
OworCWlmICh1c3JzY3RwX2dldHNvY2tvcHQoc19sLCBTT0xfU09DS0VULCBTT19SQ1ZCVUYsICZj
dXJfYnVmX3NpemUsICZvcHRfbGVuKSA8IDApIHsKKwkJcGVycm9yKCJ1c3JzY3RwX2dldHNvY2tv
cHQiKTsKKwkJZXhpdChFWElUX0ZBSUxVUkUpOworCX0KKwlwcmludGYoInRvICVkLlxuIiwgY3Vy
X2J1Zl9zaXplKTsKKwkvKiBCaW5kIHRoZSBjbGllbnQgc2lkZS4gKi8KKwltZW1zZXQoJnNjb25u
LCAwLCBzaXplb2Yoc3RydWN0IHNvY2thZGRyX2Nvbm4pKTsKKwlzY29ubi5zY29ubl9mYW1pbHkg
PSBBRl9DT05OOworI2lmZGVmIEhBVkVfU0NPTk5fTEVOCisJc2Nvbm4uc2Nvbm5fbGVuID0gc2l6
ZW9mKHN0cnVjdCBzb2NrYWRkcl9jb25uKTsKKyNlbmRpZgorCXNjb25uLnNjb25uX3BvcnQgPSBo
dG9ucyg1MDAxKTsKKwlzY29ubi5zY29ubl9hZGRyID0gJmZkX2M7CisJaWYgKHVzcnNjdHBfYmlu
ZChzX2MsIChzdHJ1Y3Qgc29ja2FkZHIgKikmc2Nvbm4sIHNpemVvZihzdHJ1Y3Qgc29ja2FkZHJf
Y29ubikpIDwgMCkgeworCQlwZXJyb3IoInVzcnNjdHBfYmluZCIpOworCQlleGl0KEVYSVRfRkFJ
TFVSRSk7CisJfQorCS8qIEJpbmQgdGhlIHNlcnZlciBzaWRlLiAqLworCW1lbXNldCgmc2Nvbm4s
IDAsIHNpemVvZihzdHJ1Y3Qgc29ja2FkZHJfY29ubikpOworCXNjb25uLnNjb25uX2ZhbWlseSA9
IEFGX0NPTk47CisjaWZkZWYgSEFWRV9TQ09OTl9MRU4KKwlzY29ubi5zY29ubl9sZW4gPSBzaXpl
b2Yoc3RydWN0IHNvY2thZGRyX2Nvbm4pOworI2VuZGlmCisJc2Nvbm4uc2Nvbm5fcG9ydCA9IGh0
b25zKDUwMDEpOworCXNjb25uLnNjb25uX2FkZHIgPSAmZmRfczsKKwlpZiAodXNyc2N0cF9iaW5k
KHNfbCwgKHN0cnVjdCBzb2NrYWRkciAqKSZzY29ubiwgc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl9j
b25uKSkgPCAwKSB7CisJCXBlcnJvcigidXNyc2N0cF9iaW5kIik7CisJCWV4aXQoRVhJVF9GQUlM
VVJFKTsKKwl9CisJLyogTWFrZSBzZXJ2ZXIgc2lkZSBwYXNzaXZlLi4uICovCisJaWYgKHVzcnNj
dHBfbGlzdGVuKHNfbCwgMSkgPCAwKSB7CisJCXBlcnJvcigidXNyc2N0cF9saXN0ZW4iKTsKKwkJ
ZXhpdChFWElUX0ZBSUxVUkUpOworCX0KKwkvKiBJbml0aWF0ZSB0aGUgaGFuZHNoYWtlICovCisJ
bWVtc2V0KCZzY29ubiwgMCwgc2l6ZW9mKHN0cnVjdCBzb2NrYWRkcl9jb25uKSk7CisJc2Nvbm4u
c2Nvbm5fZmFtaWx5ID0gQUZfQ09OTjsKKyNpZmRlZiBIQVZFX1NDT05OX0xFTgorCXNjb25uLnNj
b25uX2xlbiA9IHNpemVvZihzdHJ1Y3Qgc29ja2FkZHJfY29ubik7CisjZW5kaWYKKwlzY29ubi5z
Y29ubl9wb3J0ID0gaHRvbnMoNTAwMSk7CisJc2Nvbm4uc2Nvbm5fYWRkciA9ICZmZF9jOworCWlm
ICh1c3JzY3RwX2Nvbm5lY3Qoc19jLCAoc3RydWN0IHNvY2thZGRyICopJnNjb25uLCBzaXplb2Yo
c3RydWN0IHNvY2thZGRyX2Nvbm4pKSA8IDApIHsKKwkJcGVycm9yKCJ1c3JzY3RwX2Nvbm5lY3Qi
KTsKKwkJZXhpdChFWElUX0ZBSUxVUkUpOworCX0KKwlpZiAoKHNfcyA9IHVzcnNjdHBfYWNjZXB0
KHNfbCwgTlVMTCwgTlVMTCkpID09IE5VTEwpIHsKKwkJcGVycm9yKCJ1c3JzY3RwX2FjY2VwdCIp
OworCQlleGl0KEVYSVRfRkFJTFVSRSk7CisJfQorCXVzcnNjdHBfY2xvc2Uoc19sKTsKKwlpZiAo
KGxpbmUgPSBtYWxsb2MoTElORV9MRU5HVEgpKSA9PSBOVUxMKSB7CisJCWV4aXQoRVhJVF9GQUlM
VVJFKTsKKwl9CisJbWVtc2V0KGxpbmUsICdBJywgTElORV9MRU5HVEgpOworCXNuZGluZm8uc25k
X3NpZCA9IDE7CisJc25kaW5mby5zbmRfZmxhZ3MgPSAwOworCXNuZGluZm8uc25kX3BwaWQgPSBo
dG9ubChESVNDQVJEX1BQSUQpOworCXNuZGluZm8uc25kX2NvbnRleHQgPSAwOworCXNuZGluZm8u
c25kX2Fzc29jX2lkID0gMDsKKwkvKiBTZW5kIGEgMSBNQiBtZXNzYWdlICovCisJaWYgKHVzcnNj
dHBfc2VuZHYoc19jLCBsaW5lLCBMSU5FX0xFTkdUSCwgTlVMTCwgMCwgKHZvaWQgKikmc25kaW5m
bywKKwkgICAgICAgICAgICAgICAgIChzb2NrbGVuX3Qpc2l6ZW9mKHN0cnVjdCBzY3RwX3NuZGlu
Zm8pLCBTQ1RQX1NFTkRWX1NORElORk8sIDApIDwgMCkgeworCQlwZXJyb3IoInVzcnNjdHBfc2Vu
ZHYiKTsKKwkJZXhpdChFWElUX0ZBSUxVUkUpOworCX0KKwlmcmVlKGxpbmUpOworCXVzcnNjdHBf
c2h1dGRvd24oc19jLCBTSFVUX1dSKTsKKworCXdoaWxlICh1c3JzY3RwX2ZpbmlzaCgpICE9IDAp
IHsKKyNpZmRlZiBfV0lOMzIKKwkJU2xlZXAoMTAwMCk7CisjZWxzZQorCQlzbGVlcCgxKTsKKyNl
bmRpZgorCX0KKyNpZmRlZiBfV0lOMzIKKwlUZXJtaW5hdGVUaHJlYWQodGlkX2MsIDApOworCVdh
aXRGb3JTaW5nbGVPYmplY3QodGlkX2MsIElORklOSVRFKTsKKwlUZXJtaW5hdGVUaHJlYWQodGlk
X3MsIDApOworCVdhaXRGb3JTaW5nbGVPYmplY3QodGlkX3MsIElORklOSVRFKTsKKwlpZiAoY2xv
c2Vzb2NrZXQoZmRfYykgPT0gU09DS0VUX0VSUk9SKSB7CisJCXByaW50ZigiY2xvc2Vzb2NrZXQo
KSBmYWlsZWQgd2l0aCBlcnJvcjogJWRcbiIsIFdTQUdldExhc3RFcnJvcigpKTsKKwkJZXhpdChF
WElUX0ZBSUxVUkUpOworCX0KKwlpZiAoY2xvc2Vzb2NrZXQoZmRfcykgPT0gU09DS0VUX0VSUk9S
KSB7CisJCXByaW50ZigiY2xvc2Vzb2NrZXQoKSBmYWlsZWQgd2l0aCBlcnJvcjogJWRcbiIsIFdT
QUdldExhc3RFcnJvcigpKTsKKwkJZXhpdChFWElUX0ZBSUxVUkUpOworCX0KKwlXU0FDbGVhbnVw
KCk7CisjZWxzZQorCXB0aHJlYWRfY2FuY2VsKHRpZF9jKTsKKwlwdGhyZWFkX2pvaW4odGlkX2Ms
IE5VTEwpOworCXB0aHJlYWRfY2FuY2VsKHRpZF9zKTsKKwlwdGhyZWFkX2pvaW4odGlkX3MsIE5V
TEwpOworCWlmIChjbG9zZShmZF9jKSA8IDApIHsKKwkJcGVycm9yKCJjbG9zZSIpOworCQlleGl0
KEVYSVRfRkFJTFVSRSk7CisJfQorCWlmIChjbG9zZShmZF9zKSA8IDApIHsKKwkJcGVycm9yKCJj
bG9zZSIpOworCQlleGl0KEVYSVRfRkFJTFVSRSk7CisJfQorI2VuZGlmCisJcmV0dXJuICgwKTsK
K30KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3Byb2dyYW1zL3Rlc3RfdGltZXIuYyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGli
L3Byb2dyYW1zL3Rlc3RfdGltZXIuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5iYTJjYjUwMTBmYmE2ZDNmOTJiZTBh
MTY2YWIwOTVlN2E2NDkyOTgzCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvcHJvZ3JhbXMv
dGVzdF90aW1lci5jCkBAIC0wLDAgKzEsNjQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYg
TWljaGFlbCBUdWV4ZW4KKyAqCisgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
KyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICog
My4gTmVpdGhlciB0aGUgbmFtZSBvZiB0aGUgcHJvamVjdCBub3IgdGhlIG5hbWVzIG9mIGl0cyBj
b250cmlidXRvcnMKKyAqICAgIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9k
dWN0cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZQorICogICAgd2l0aG91dCBzcGVjaWZpYyBw
cmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBUSEUgUFJPSkVDVCBBTkQgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJyBBTkQKKyAqIEFOWSBF
WFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklU
TkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKKyAqIEFSRSBESVNDTEFJTUVELglJTiBOTyBF
VkVOVCBTSEFMTCBUSEUgUFJPSkVDVCBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFCisgKiBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTAorICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMKKyAqIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKQorICogSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QKKyAqIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkKKyAqIE9VVCBPRiBUSEUgVVNFIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YKKyAq
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlIDxzdGRsaWIuaD4KKyNpbmNsdWRlIDxzdGRp
by5oPgorI2luY2x1ZGUgPHN0ZGFyZy5oPgorI2lmbmRlZiBfV0lOMzIKKyNpbmNsdWRlIDx1bmlz
dGQuaD4KKyNlbmRpZgorI2luY2x1ZGUgPHVzcnNjdHAuaD4KKworaW50CittYWluKHZvaWQpIAor
eworCWludCBpOworCXZvaWQgKnA7CisKKwl1c3JzY3RwX2luaXQoMCwgTlVMTCwgTlVMTCk7Cisj
aWZkZWYgU0NUUF9ERUJVRworCXVzcnNjdHBfc3lzY3RsX3NldF9zY3RwX2RlYnVnX29uKFNDVFBf
REVCVUdfQUxMKTsKKyNlbmRpZgorCXByaW50ZigiRW50ZXJpbmcgdGhlIGxvb3BcbiIpOworCXAg
PSAmaTsKKwlmb3IgKGkgPSAwOyBpIDwgMTAwMDAwOyBpKyspIHsKKwkJdXNyc2N0cF9yZWdpc3Rl
cl9hZGRyZXNzKHApOworCQl1c3JzY3RwX2RlcmVnaXN0ZXJfYWRkcmVzcyhwKTsKKwl9CisJcHJp
bnRmKCJFeGl0ZWQgdGhlIGxvb3BcbiIpOworCXdoaWxlICh1c3JzY3RwX2ZpbmlzaCgpICE9IDAp
IHsKKyNpZmRlZiBfV0lOMzIKKwkJU2xlZXAoMTAwMCk7CisjZWxzZQorCQlzbGVlcCgxKTsKKyNl
bmRpZgorCX0KKwlyZXR1cm4gKDApOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNyc2N0cC5w
Yy5pbiBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNy
c2N0cC91c3JzY3RwbGliL3VzcnNjdHAucGMuaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTFlY2QyZjc0ZWJmOGFl
MDJiMzE0OWNhNTJlNzc4YTQ3YzA2NzVhZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3Vz
cnNjdHAucGMuaW4KQEAgLTAsMCArMSwxMiBAQAorcHJlZml4PUBwcmVmaXhACitleGVjX3ByZWZp
eD1AZXhlY19wcmVmaXhACitsaWJkaXI9QGxpYmRpckAKK2luY2x1ZGVkaXI9QGluY2x1ZGVkaXJA
CisKK05hbWU6IHVzcnNjdHAKK0Rlc2NyaXB0aW9uOiBTQ1RQIGltcGxlbWVudGF0aW9uCitVUkw6
IGh0dHBzOi8vZ2l0aHViLmNvbS9zY3RwbGFiL3VzcnNjdHAKK1ZlcnNpb246IEBWRVJTSU9OQAor
UmVxdWlyZXM6IAorTGliczogLUwke2xpYmRpcn0gLWx1c3JzY3RwCitDZmxhZ3M6IC1JJHtpbmNs
dWRlZGlyfSBAQVBQQ0ZMQUdTQApkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNyc2N0cGxpYi9DTWFr
ZUxpc3RzLnR4dCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvdXNyc2N0cC91c3JzY3RwbGliL3VzcnNjdHBsaWIvQ01ha2VMaXN0cy50eHQKaW5kZXggYjhk
YWNiOGU0Y2U2YzVhY2ZlNTg0NWZlMjYzZDQ5MmQ0ODQyODk0NC4uNTFlM2E5ZWZlNjY3ODJmM2Jk
MzcyY2NkZDYxYTQzNDY0NTUxMTM3NyAxMDA2NDQKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNyc2N0cGxpYi9D
TWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3Ro
aXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi91c3JzY3RwbGliL0NNYWtlTGlzdHMudHh0CkBA
IC0xLDYgKzEsNiBAQAogIwogIyBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxNSBPbGVnIEFsZXhlZW5r
b3YKLSMgQ29weXJpZ2h0IChDKSAyMDE1LTIwMTUgRmVsaXggV2VpbnJhbmsKKyMgQ29weXJpZ2h0
IChDKSAyMDE1LTIwMTcgRmVsaXggV2VpbnJhbmsKICMKICMgQWxsIHJpZ2h0cyByZXNlcnZlZC4K
ICMKQEAgLTQwLDM2ICs0MCw0OCBAQCBwcm9qZWN0KHVzcnNjdHBsaWIpCiAKIGluY2x1ZGUoQ2hl
Y2tGdW5jdGlvbkV4aXN0cykKIGluY2x1ZGUoQ2hlY2tTdHJ1Y3RIYXNNZW1iZXIpCi1pbmNsdWRl
KENoZWNrSW5jbHVkZUZpbGUpCitpbmNsdWRlKENoZWNrSW5jbHVkZUZpbGVzKQogaW5jbHVkZShD
TWFrZVB1c2hDaGVja1N0YXRlKQogaW5jbHVkZShDaGVja1R5cGVTaXplKQogCi1TRVQgKFZFUlNJ
T04gIjEuMC4wIikKK3NldChWRVJTSU9OICIxLjAuMCIpCiAKLVNFVCAocHJlZml4ICR7Q01BS0Vf
SU5TVEFMTF9QUkVGSVh9KQotU0VUIChleGVjX3ByZWZpeCAiXCR7cHJlZml4fSIpCi1TRVQgKGxp
YmRpciAiXCR7ZXhlY19wcmVmaXh9L2xpYiIpCi1TRVQgKGluY2x1ZGVkaXIgIlwke3ByZWZpeH0v
aW5jbHVkZS91c3JzY3RwIikKLVNFVCAoQ01BS0VfUkVRVUlSRURfSU5DTFVERVMgJHtDTUFLRV9D
VVJSRU5UX1NPVVJDRV9ESVJ9KQorc2V0KHByZWZpeCAke0NNQUtFX0lOU1RBTExfUFJFRklYfSkK
K3NldChleGVjX3ByZWZpeCAiXCR7cHJlZml4fSIpCitzZXQobGliZGlyICJcJHtleGVjX3ByZWZp
eH0vbGliIikKK3NldChpbmNsdWRlZGlyICJcJHtwcmVmaXh9L2luY2x1ZGUvdXNyc2N0cCIpCitz
ZXQoQ01BS0VfUkVRVUlSRURfSU5DTFVERVMgJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9KQor
c2V0KENNQUtFX01BQ09TWF9SUEFUSCAxKQogCiAKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKICMgQ0hFQ0sgRk9SIFRZUEVTIEFORCBGVU5DVElPTlMK
ICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIAotY2hl
Y2tfdHlwZV9zaXplKCJzaXplX3QiIEhBVkVfU0laRV9UKQotY2hlY2tfdHlwZV9zaXplKCJzc2l6
ZV90IiBIQVZFX1NTSVpFX1QpCitjaGVja19pbmNsdWRlX2ZpbGVzKCJzeXMvcXVldWUuaCIgSEFW
RV9TWVNfUVVFVUVfSCkKK2lmIChIQVZFX1NZU19RVUVVRV9IKQorICAgIGFkZF9kZWZpbml0aW9u
cygtREhBVkVfU1lTX1FVRVVFX0gpCitlbmRpZiAoKQogCi1jaGVja19pbmNsdWRlX2ZpbGUoc3lz
L3NvY2tldC5oIEhBVkVfU1lTX1NPQ0tFVF9IKQotY2hlY2tfaW5jbHVkZV9maWxlKHN5cy90eXBl
cy5oIEhBVkVfU1lTX1RZUEVTX0gpCi1jaGVja19pbmNsdWRlX2ZpbGUoc3lzL3F1ZXVlLmggSEFW
RV9TWVNfUVVFVUVfSCkKLWNoZWNrX2luY2x1ZGVfZmlsZShsaW51eC9pZl9hZGRyLmggSEFWRV9M
SU5VWF9JRl9BRERSX0gpCi1jaGVja19pbmNsdWRlX2ZpbGUobGludXgvcnRuZXRsaW5rLmggSEFW
RV9MSU5VWF9SVE5FVExJTktfSCkKLWNoZWNrX2luY2x1ZGVfZmlsZShuZXRpbmV0L2lwX2ljbXAu
aCBIQVZFX05FVElORVRfSVBfSUNNUF9IKQotY2hlY2tfaW5jbHVkZV9maWxlKHVzcnNjdHAuaCBI
QVZFX1VTUlNDVFBfSCkKK2NoZWNrX2luY2x1ZGVfZmlsZXMoInN5cy9zb2NrZXQuaDtsaW51eC9p
Zl9hZGRyLmgiIEhBVkVfTElOVVhfSUZfQUREUl9IKQoraWYgKEhBVkVfTElOVVhfSUZfQUREUl9I
KQorICAgIGFkZF9kZWZpbml0aW9ucygtREhBVkVfTElOVVhfSUZfQUREUl9IKQorZW5kaWYgKCkK
IAotY2hlY2tfZnVuY3Rpb25fZXhpc3RzKCJzb2NrZXQiIEhBVkVfU09DS0VUKQotY2hlY2tfZnVu
Y3Rpb25fZXhpc3RzKCJpbmV0X2FkZHIiIEhBVkVfSU5FVF9BRERSKQorY2hlY2tfaW5jbHVkZV9m
aWxlcygic3lzL3NvY2tldC5oO2xpbnV4L3J0bmV0bGluay5oIiBIQVZFX0xJTlVYX1JUTkVUTElO
S19IKQoraWYgKEhBVkVfTElOVVhfUlRORVRMSU5LX0gpCisgICAgYWRkX2RlZmluaXRpb25zKC1E
SEFWRV9MSU5VWF9SVE5FVExJTktfSCkKK2VuZGlmICgpCisKK2NoZWNrX2luY2x1ZGVfZmlsZXMo
InN5cy90eXBlcy5oO25ldGluZXQvaW4uaDtuZXRpbmV0L2lwLmg7bmV0aW5ldC9pcF9pY21wLmgi
IEhBVkVfTkVUSU5FVF9JUF9JQ01QX0gpCitpZiAoSEFWRV9ORVRJTkVUX0lQX0lDTVBfSCkKKyAg
ICBhZGRfZGVmaW5pdGlvbnMoLURIQVZFX05FVElORVRfSVBfSUNNUF9IKQorZW5kaWYgKCkKKwor
Y2hlY2tfaW5jbHVkZV9maWxlcygic3RkYXRvbWljLmgiIEhBVkVfU1REQVRPTUlDX0gpCitpZiAo
SEFWRV9TVERBVE9NSUNfSCkKKyAgICBhZGRfZGVmaW5pdGlvbnMoLURIQVZFX1NUREFUT01JQ19I
KQorZW5kaWYgKCkKIAogYWRkX2RlZmluaXRpb25zKC1EX19Vc2Vyc3BhY2VfXykKIGFkZF9kZWZp
bml0aW9ucygtRF9fVXNlcnNwYWNlX29zXyR7Q01BS0VfU1lTVEVNX05BTUV9KQpAQCAtODEsMjgg
KzkzLDI4IEBAIGFkZF9kZWZpbml0aW9ucygtRF9HTlVfU09VUkNFKQogIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogCiBjaGVja19zdHJ1Y3RfaGFzX21l
bWJlcigic3RydWN0IHNvY2thZGRyIiAic2FfbGVuIiAic3lzL3R5cGVzLmg7c3lzL3NvY2tldC5o
IiBIQVZFX1NBX0xFTikKLWlmKEhBVkVfU0FfTEVOKQotCW1lc3NhZ2UoU1RBVFVTICJIQVZFX1NB
X0xFTiIpCi0JYWRkX2RlZmluaXRpb25zKC1ESEFWRV9TQV9MRU4pCi1lbmRpZigpCitpZiAoSEFW
RV9TQV9MRU4pCisgICAgbWVzc2FnZShTVEFUVVMgIkhBVkVfU0FfTEVOIikKKyAgICBhZGRfZGVm
aW5pdGlvbnMoLURIQVZFX1NBX0xFTikKK2VuZGlmICgpCiAKIGNoZWNrX3N0cnVjdF9oYXNfbWVt
YmVyKCJzdHJ1Y3Qgc29ja2FkZHJfaW4iICJzaW5fbGVuIiAic3lzL3R5cGVzLmg7bmV0aW5ldC9p
bi5oIiBIQVZFX1NJTl9MRU4pCi1pZihIQVZFX1NJTl9MRU4pCi0JbWVzc2FnZShTVEFUVVMgIkhB
VkVfU0lOX0xFTiIpCi0JYWRkX2RlZmluaXRpb25zKC1ESEFWRV9TSU5fTEVOKQotZW5kaWYoKQor
aWYgKEhBVkVfU0lOX0xFTikKKyAgICBtZXNzYWdlKFNUQVRVUyAiSEFWRV9TSU5fTEVOIikKKyAg
ICBhZGRfZGVmaW5pdGlvbnMoLURIQVZFX1NJTl9MRU4pCitlbmRpZiAoKQogCiBjaGVja19zdHJ1
Y3RfaGFzX21lbWJlcigic3RydWN0IHNvY2thZGRyX2luNiIgInNpbjZfbGVuIiAic3lzL3R5cGVz
Lmg7bmV0aW5ldC9pbi5oIiBIQVZFX1NJTjZfTEVOKQotaWYoSEFWRV9TSU42X0xFTikKLQltZXNz
YWdlKFNUQVRVUyAiSEFWRV9TSU42X0xFTiIpCi0JYWRkX2RlZmluaXRpb25zKC1ESEFWRV9TSU42
X0xFTikKLWVuZGlmKCkKK2lmIChIQVZFX1NJTjZfTEVOKQorICAgIG1lc3NhZ2UoU1RBVFVTICJI
QVZFX1NJTjZfTEVOIikKKyAgICBhZGRfZGVmaW5pdGlvbnMoLURIQVZFX1NJTjZfTEVOKQorZW5k
aWYgKCkKIAogY2hlY2tfc3RydWN0X2hhc19tZW1iZXIoInN0cnVjdCBzb2NrYWRkcl9jb25uIiAi
c2Nvbm5fbGVuIiAidXNyc2N0cC5oIiBIQVZFX1NDT05OX0xFTikKLWlmKEhBVkVfU0NPTk5fTEVO
KQotCW1lc3NhZ2UoU1RBVFVTICJIQVZFX1NDT05OX0xFTiIpCi0JYWRkX2RlZmluaXRpb25zKC1E
SEFWRV9TQ09OTl9MRU4pCi1lbmRpZigpCitpZiAoSEFWRV9TQ09OTl9MRU4pCisgICAgbWVzc2Fn
ZShTVEFUVVMgIkhBVkVfU0NPTk5fTEVOIikKKyAgICBhZGRfZGVmaW5pdGlvbnMoLURIQVZFX1ND
T05OX0xFTikKK2VuZGlmICgpCiAKIAogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIwpAQCAtMTEwLDI5ICsxMjIsMzEgQEAgZW5kaWYoKQogIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogCiBpZiAoJHtDTUFLRV9T
WVNURU1fTkFNRX0gTUFUQ0hFUyAiTGludXgiKQotCWFkZF9kZWZpbml0aW9ucygtRF9HTlVfU09V
UkNFKQotZW5kaWYoKQorICAgIGFkZF9kZWZpbml0aW9ucygtRF9HTlVfU09VUkNFKQorZW5kaWYg
KCkKIAogaWYgKCR7Q01BS0VfU1lTVEVNX05BTUV9IE1BVENIRVMgIkZyZWVCU0QiKQotCWFkZF9k
ZWZpbml0aW9ucygtVV9fRnJlZUJTRF9fKQotZW5kaWYoKQorICAgIGFkZF9kZWZpbml0aW9ucygt
VV9fRnJlZUJTRF9fKQorZW5kaWYgKCkKIAogaWYgKCR7Q01BS0VfU1lTVEVNX05BTUV9IE1BVENI
RVMgIkRhcndpbiIpCi0JYWRkX2RlZmluaXRpb25zKC1VX19BUFBMRV9fKQotCWFkZF9kZWZpbml0
aW9ucygtRF9fQVBQTEVfVVNFX1JGQ18yMjkyKQotZW5kaWYoKQorICAgIGFkZF9kZWZpbml0aW9u
cygtVV9fQVBQTEVfXykKKyAgICBhZGRfZGVmaW5pdGlvbnMoLURfX0FQUExFX1VTRV9SRkNfMjI5
MikKKyAgICBzZXQoQ01BS0VfQ19GTEFHUyAiJHtDTUFLRV9DX0ZMQUdTfSAtV25vLWRlcHJlY2F0
ZWQtZGVjbGFyYXRpb25zIikKKyAgICBzZXQoQ01BS0VfQ1hYX0ZMQUdTICIke0NNQUtFX0NYWF9G
TEFHU30gLVduby1kZXByZWNhdGVkLWRlY2xhcmF0aW9ucyIpCitlbmRpZiAoKQogCiBpZiAoJHtD
TUFLRV9TWVNURU1fTkFNRX0gTUFUQ0hFUyAiRHJhZ29uRmx5IikKLQlhZGRfZGVmaW5pdGlvbnMo
LVVfX0RyYWdvbkZseV9fKQotZW5kaWYoKQorICAgIGFkZF9kZWZpbml0aW9ucygtVV9fRHJhZ29u
Rmx5X18pCitlbmRpZiAoKQogCiBpZiAoJHtDTUFLRV9TWVNURU1fTkFNRX0gTUFUQ0hFUyAiTmV0
QlNEIikKLQlhZGRfZGVmaW5pdGlvbnMoLVVfX05ldEJTRF9fKQotZW5kaWYoKQorICAgIGFkZF9k
ZWZpbml0aW9ucygtVV9fTmV0QlNEX18pCitlbmRpZiAoKQogCiBpZiAoJHtDTUFLRV9TWVNURU1f
TkFNRX0gTUFUQ0hFUyAiT3BlbkJTRCIpCi0JYWRkX2RlZmluaXRpb25zKC1VX19PcGVuQlNEX18p
Ci1lbmRpZigpCisgICAgYWRkX2RlZmluaXRpb25zKC1VX19PcGVuQlNEX18pCitlbmRpZiAoKQog
CiAKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKQEAg
LTE0MSwxNDUgKzE1NSwxNDUgQEAgZW5kaWYoKQogCiBvcHRpb24oSU5WQVJJQU5UUyAiQWRkIHJ1
bnRpbWUgY2hlY2tzIiAwKQogaWYgKElOVkFSSUFOVFMpCi0JYWRkX2RlZmluaXRpb25zKC1ESU5W
QVJJQU5UUykKLWVuZGlmKCkKKyAgICBhZGRfZGVmaW5pdGlvbnMoLURJTlZBUklBTlRTKQorZW5k
aWYgKCkKIAogb3B0aW9uKFNDVFBfREVCVUcgIlByb3ZpZGUgZGVidWcgaW5mb3JtYXRpb24iIDEp
CiBpZiAoU0NUUF9ERUJVRykKLQlhZGRfZGVmaW5pdGlvbnMoLURTQ1RQX0RFQlVHKQotZW5kaWYo
KQorICAgIGFkZF9kZWZpbml0aW9ucygtRFNDVFBfREVCVUcpCitlbmRpZiAoKQogCiBvcHRpb24o
SU5FVCAiU3VwcG9ydCBJUHY0ICIgMSkKIGlmIChJTkVUKQotCWFkZF9kZWZpbml0aW9ucygtRElO
RVQpCi1lbmRpZigpCisgICAgYWRkX2RlZmluaXRpb25zKC1ESU5FVCkKK2VuZGlmICgpCiAKIG9w
dGlvbihJTkVUNiAiU3VwcG9ydCBJUHY2ICIgMSkKIGlmIChJTkVUNikKLQlhZGRfZGVmaW5pdGlv
bnMoLURJTkVUNikKLWVuZGlmKCkKKyAgICBhZGRfZGVmaW5pdGlvbnMoLURJTkVUNikKK2VuZGlm
ICgpCiAKIG9wdGlvbihTQ1RQX1NJTVBMRV9BTExPQ0FUT1IgIiAiIDEpCiBpZiAoU0NUUF9TSU1Q
TEVfQUxMT0NBVE9SKQotCWFkZF9kZWZpbml0aW9ucygtRFNDVFBfU0lNUExFX0FMTE9DQVRPUikK
LWVuZGlmKCkKKyAgICBhZGRfZGVmaW5pdGlvbnMoLURTQ1RQX1NJTVBMRV9BTExPQ0FUT1IpCitl
bmRpZiAoKQogCiBvcHRpb24oU0NUUF9QUk9DRVNTX0xFVkVMX0xPQ0tTICIgIiAxKQogaWYgKFND
VFBfUFJPQ0VTU19MRVZFTF9MT0NLUykKLQlhZGRfZGVmaW5pdGlvbnMoLURTQ1RQX1BST0NFU1Nf
TEVWRUxfTE9DS1MpCi1lbmRpZigpCisgICAgYWRkX2RlZmluaXRpb25zKC1EU0NUUF9QUk9DRVNT
X0xFVkVMX0xPQ0tTKQorZW5kaWYgKCkKIAogb3B0aW9uKFNDVFBfV0lUSF9OT19DU1VNICJEaXNh
YmxlIFNDVFAgY2hlY2tzdW0iIDApCiBpZiAoU0NUUF9XSVRIX05PX0NTVU0pCi0JYWRkX2RlZmlu
aXRpb25zKC1EU0NUUF9XSVRIX05PX0NTVU0pCi1lbmRpZigpCisgICAgYWRkX2RlZmluaXRpb25z
KC1EU0NUUF9XSVRIX05PX0NTVU0pCitlbmRpZiAoKQogCiBvcHRpb24oU0NUUF9NQlVGX0xPR0dJ
TkcgIiAiIDApCiBpZiAoU0NUUF9NQlVGX0xPR0dJTkcpCi0JYWRkX2RlZmluaXRpb25zKC1EU0NU
UF9NQlVGX0xPR0dJTkcpCi1lbmRpZigpCisgICAgYWRkX2RlZmluaXRpb25zKC1EU0NUUF9NQlVG
X0xPR0dJTkcpCitlbmRpZiAoKQogCiBvcHRpb24oU0NUUF9QQUNLRVRfTE9HR0lORyAiICIgMCkK
IGlmIChTQ1RQX1BBQ0tFVF9MT0dHSU5HKQotCWFkZF9kZWZpbml0aW9ucygtRFNDVFBfUEFDS0VU
X0xPR0dJTkcpCi1lbmRpZigpCisgICAgYWRkX2RlZmluaXRpb25zKC1EU0NUUF9QQUNLRVRfTE9H
R0lORykKK2VuZGlmICgpCiAKIG9wdGlvbihTQ1RQX1NPX0xPQ0tfVEVTVElORyAiICIgMCkKIGlm
IChTQ1RQX1NPX0xPQ0tfVEVTVElORykKLQlhZGRfZGVmaW5pdGlvbnMoLURTQ1RQX1NPX0xPQ0tf
VEVTVElORykKLWVuZGlmKCkKKyAgICBhZGRfZGVmaW5pdGlvbnMoLURTQ1RQX1NPX0xPQ0tfVEVT
VElORykKK2VuZGlmICgpCiAKIG9wdGlvbihTQ1RQX0VNQkVEREVEX1Y2X1NDT1BFICIgIiAwKQog
aWYgKFNDVFBfRU1CRURERURfVjZfU0NPUEUpCi0JYWRkX2RlZmluaXRpb25zKC1EU0NUUF9FTUJF
RERFRF9WNl9TQ09QRSkKLWVuZGlmKCkKKyAgICBhZGRfZGVmaW5pdGlvbnMoLURTQ1RQX0VNQkVE
REVEX1Y2X1NDT1BFKQorZW5kaWYgKCkKIAogb3B0aW9uKFNDVFBfS0FNRSAiICIgMCkKIGlmIChT
Q1RQX0tBTUUpCi0JYWRkX2RlZmluaXRpb25zKC1EU0NUUF9LQU1FKQotZW5kaWYoKQorICAgIGFk
ZF9kZWZpbml0aW9ucygtRFNDVFBfS0FNRSkKK2VuZGlmICgpCiAKIG9wdGlvbihXRVJST1IgIldh
cm5pbmcgYXMgZXJyb3IiIE9OKQogCiBpbmNsdWRlX2RpcmVjdG9yaWVzKCR7UFJPSkVDVF9TT1VS
Q0VfRElSfSAke1BST0pFQ1RfU09VUkNFX0RJUn0vbmV0aW5ldCAke1BST0pFQ1RfU09VUkNFX0RJ
Un0vbmV0aW5ldDYpCiAKLUxJU1QgKEFQUEVORCB1c3JzY3RwX3Jvb3RfSEVBREVSUwotCXVzZXJf
YXRvbWljLmggICAgICAgdXNlcl9pbnBjYi5oICAgIHVzZXJfaXBfaWNtcC5oICB1c2VyX21idWYu
aCAgIHVzZXJfcmVjdl90aHJlYWQuaCAgdXNlcl9zb2NrZXR2YXIuaCAgdXNyc2N0cC5oCi0JdXNl
cl9lbnZpcm9ubWVudC5oICB1c2VyX2lwNl92YXIuaCAgdXNlcl9tYWxsb2MuaCAgIHVzZXJfcXVl
dWUuaCAgdXNlcl9yb3V0ZS5oICAgICAgICB1c2VyX3VtYS5oCitsaXN0KEFQUEVORCB1c3JzY3Rw
X3Jvb3RfSEVBREVSUworICAgIHVzZXJfYXRvbWljLmggICAgICAgdXNlcl9pbnBjYi5oICAgIHVz
ZXJfaXBfaWNtcC5oICB1c2VyX21idWYuaCAgIHVzZXJfcmVjdl90aHJlYWQuaCAgdXNlcl9zb2Nr
ZXR2YXIuaCAgdXNyc2N0cC5oCisgICAgdXNlcl9lbnZpcm9ubWVudC5oICB1c2VyX2lwNl92YXIu
aCAgdXNlcl9tYWxsb2MuaCAgIHVzZXJfcXVldWUuaCAgdXNlcl9yb3V0ZS5oICAgICAgICB1c2Vy
X3VtYS5oCiApCiAKLUxJU1QgKEFQUEVORCB1c3JzY3RwX25ldGluZXRfSEVBREVSUwotCW5ldGlu
ZXQvc2N0cF9hc2NvbmYuaCAgICBuZXRpbmV0L3NjdHBfY29uc3RhbnRzLmggIG5ldGluZXQvc2N0
cF9pbmRhdGEuaCAgICAgICAgICBuZXRpbmV0L3NjdHBfb3NfdXNlcnNwYWNlLmggIG5ldGluZXQv
c2N0cF9wcm9jZXNzX2xvY2suaCAgbmV0aW5ldC9zY3RwX3RpbWVyLmgKLQluZXRpbmV0L3NjdHBf
YXV0aC5oICAgICAgbmV0aW5ldC9zY3RwX2NyYzMyLmggICAgICBuZXRpbmV0L3NjdHBfaW5wdXQu
aCAgICAgICAgICAgbmV0aW5ldC9zY3RwX291dHB1dC5oICAgICAgICBuZXRpbmV0L3NjdHBfc2hh
MS5oICAgICAgICAgIG5ldGluZXQvc2N0cF91aW8uaAotCW5ldGluZXQvc2N0cF9ic2RfYWRkci5o
ICBuZXRpbmV0L3NjdHAuaCAgICAgICAgICAgIG5ldGluZXQvc2N0cF9sb2NrX3VzZXJzcGFjZS5o
ICBuZXRpbmV0L3NjdHBfcGNiLmggICAgICAgICAgIG5ldGluZXQvc2N0cF9zdHJ1Y3RzLmggICAg
ICAgbmV0aW5ldC9zY3RwdXRpbC5oCi0JbmV0aW5ldC9zY3RwX2NhbGxvdXQuaCAgIG5ldGluZXQv
c2N0cF9oZWFkZXIuaCAgICAgbmV0aW5ldC9zY3RwX29zLmggICAgICAgICAgICAgIG5ldGluZXQv
c2N0cF9wZWVsb2ZmLmggICAgICAgbmV0aW5ldC9zY3RwX3N5c2N0bC5oICAgICAgICBuZXRpbmV0
L3NjdHBfdmFyLmgKK2xpc3QoQVBQRU5EIHVzcnNjdHBfbmV0aW5ldF9IRUFERVJTCisgICAgbmV0
aW5ldC9zY3RwX2FzY29uZi5oICAgIG5ldGluZXQvc2N0cF9jb25zdGFudHMuaCAgbmV0aW5ldC9z
Y3RwX2luZGF0YS5oICAgICAgICAgIG5ldGluZXQvc2N0cF9vc191c2Vyc3BhY2UuaCAgbmV0aW5l
dC9zY3RwX3Byb2Nlc3NfbG9jay5oICBuZXRpbmV0L3NjdHBfdGltZXIuaAorICAgIG5ldGluZXQv
c2N0cF9hdXRoLmggICAgICBuZXRpbmV0L3NjdHBfY3JjMzIuaCAgICAgIG5ldGluZXQvc2N0cF9p
bnB1dC5oICAgICAgICAgICBuZXRpbmV0L3NjdHBfb3V0cHV0LmggICAgICAgIG5ldGluZXQvc2N0
cF9zaGExLmggICAgICAgICAgbmV0aW5ldC9zY3RwX3Vpby5oCisgICAgbmV0aW5ldC9zY3RwX2Jz
ZF9hZGRyLmggIG5ldGluZXQvc2N0cC5oICAgICAgICAgICAgbmV0aW5ldC9zY3RwX2xvY2tfdXNl
cnNwYWNlLmggIG5ldGluZXQvc2N0cF9wY2IuaCAgICAgICAgICAgbmV0aW5ldC9zY3RwX3N0cnVj
dHMuaCAgICAgICBuZXRpbmV0L3NjdHB1dGlsLmgKKyAgICBuZXRpbmV0L3NjdHBfY2FsbG91dC5o
ICAgbmV0aW5ldC9zY3RwX2hlYWRlci5oICAgICBuZXRpbmV0L3NjdHBfb3MuaCAgICAgICAgICAg
ICAgbmV0aW5ldC9zY3RwX3BlZWxvZmYuaCAgICAgICBuZXRpbmV0L3NjdHBfc3lzY3RsLmggICAg
ICAgIG5ldGluZXQvc2N0cF92YXIuaAogKQogCi1MSVNUIChBUFBFTkQgdXNyc2N0cF9uZXRpbmV0
Nl9IRUFERVJTCitsaXN0KEFQUEVORCB1c3JzY3RwX25ldGluZXQ2X0hFQURFUlMKIG5ldGluZXQ2
L3NjdHA2X3Zhci5oCiApCiAKLUxJU1QgKEFQUEVORCB1c3JzY3RwX0hFQURFUlMKLQkke3VzcnNj
dHBfcm9vdF9IRUFERVJTfQotCSR7dXNyc2N0cF9uZXRpbmV0X0hFQURFUlN9Ci0JJHt1c3JzY3Rw
X25ldGluZXQ2X0hFQURFUlN9CitsaXN0KEFQUEVORCB1c3JzY3RwX0hFQURFUlMKKyAgICAke3Vz
cnNjdHBfcm9vdF9IRUFERVJTfQorICAgICR7dXNyc2N0cF9uZXRpbmV0X0hFQURFUlN9CisgICAg
JHt1c3JzY3RwX25ldGluZXQ2X0hFQURFUlN9CiApCiAKLUxJU1QgKEFQUEVORCB1c3JzY3RwX1NP
VVJDRVMKLQluZXRpbmV0Ni9zY3RwNl91c3JyZXEuYyAgbmV0aW5ldC9zY3RwX2NhbGxvdXQuYyAg
ICAgICBuZXRpbmV0L3NjdHBfaW5wdXQuYyAgICBuZXRpbmV0L3NjdHBfc2hhMS5jICAgICAgICAg
IG5ldGluZXQvc2N0cF91c2Vyc3BhY2UuYyAgdXNlcl9tYnVmLmMKLQluZXRpbmV0L3NjdHBfYXNj
b25mLmMgICAgbmV0aW5ldC9zY3RwX2NjX2Z1bmN0aW9ucy5jICBuZXRpbmV0L3NjdHBfb3V0cHV0
LmMgICBuZXRpbmV0L3NjdHBfc3NfZnVuY3Rpb25zLmMgIG5ldGluZXQvc2N0cF91c3JyZXEuYyAg
ICAgdXNlcl9yZWN2X3RocmVhZC5jCi0JbmV0aW5ldC9zY3RwX2F1dGguYyAgICAgIG5ldGluZXQv
c2N0cF9jcmMzMi5jICAgICAgICAgbmV0aW5ldC9zY3RwX3BjYi5jICAgICAgbmV0aW5ldC9zY3Rw
X3N5c2N0bC5jICAgICAgICBuZXRpbmV0L3NjdHB1dGlsLmMgICAgICAgIHVzZXJfc29ja2V0LmMK
LQluZXRpbmV0L3NjdHBfYnNkX2FkZHIuYyAgbmV0aW5ldC9zY3RwX2luZGF0YS5jICAgICAgICBu
ZXRpbmV0L3NjdHBfcGVlbG9mZi5jICBuZXRpbmV0L3NjdHBfdGltZXIuYyAgICAgICAgIHVzZXJf
ZW52aXJvbm1lbnQuYworbGlzdChBUFBFTkQgdXNyc2N0cF9TT1VSQ0VTCisgICAgbmV0aW5ldDYv
c2N0cDZfdXNycmVxLmMgIG5ldGluZXQvc2N0cF9jYWxsb3V0LmMgICAgICAgbmV0aW5ldC9zY3Rw
X2lucHV0LmMgICAgbmV0aW5ldC9zY3RwX3NoYTEuYyAgICAgICAgICBuZXRpbmV0L3NjdHBfdXNl
cnNwYWNlLmMgIHVzZXJfbWJ1Zi5jCisgICAgbmV0aW5ldC9zY3RwX2FzY29uZi5jICAgIG5ldGlu
ZXQvc2N0cF9jY19mdW5jdGlvbnMuYyAgbmV0aW5ldC9zY3RwX291dHB1dC5jICAgbmV0aW5ldC9z
Y3RwX3NzX2Z1bmN0aW9ucy5jICBuZXRpbmV0L3NjdHBfdXNycmVxLmMgICAgIHVzZXJfcmVjdl90
aHJlYWQuYworICAgIG5ldGluZXQvc2N0cF9hdXRoLmMgICAgICBuZXRpbmV0L3NjdHBfY3JjMzIu
YyAgICAgICAgIG5ldGluZXQvc2N0cF9wY2IuYyAgICAgIG5ldGluZXQvc2N0cF9zeXNjdGwuYyAg
ICAgICAgbmV0aW5ldC9zY3RwdXRpbC5jICAgICAgICB1c2VyX3NvY2tldC5jCisgICAgbmV0aW5l
dC9zY3RwX2JzZF9hZGRyLmMgIG5ldGluZXQvc2N0cF9pbmRhdGEuYyAgICAgICAgbmV0aW5ldC9z
Y3RwX3BlZWxvZmYuYyAgbmV0aW5ldC9zY3RwX3RpbWVyLmMgICAgICAgICB1c2VyX2Vudmlyb25t
ZW50LmMKICkKIAogYWRkX2xpYnJhcnkodXNyc2N0cCBTSEFSRUQgJHt1c3JzY3RwX1NPVVJDRVN9
ICR7dXNyc2N0cF9IRUFERVJTfSkKIGFkZF9saWJyYXJ5KHVzcnNjdHAtc3RhdGljIFNUQVRJQyAk
e3VzcnNjdHBfU09VUkNFU30gJHt1c3JzY3RwX0hFQURFUlN9KQogCi1pZihXSU4zMikKLQltZXNz
YWdlKFNUQVRVUyAibGluayBsaWJyYXJ5OiB3czJfMzIiKQotCXRhcmdldF9saW5rX2xpYnJhcmll
cyh1c3JzY3RwIHdzMl8zMikKLQl0YXJnZXRfbGlua19saWJyYXJpZXModXNyc2N0cC1zdGF0aWMg
d3MyXzMyKQotZW5kaWYoKQoraWYgKFdJTjMyKQorICAgIG1lc3NhZ2UoU1RBVFVTICJsaW5rIGxp
YnJhcnk6IHdzMl8zMiIpCisgICAgdGFyZ2V0X2xpbmtfbGlicmFyaWVzKHVzcnNjdHAgd3MyXzMy
KQorICAgIHRhcmdldF9saW5rX2xpYnJhcmllcyh1c3JzY3RwLXN0YXRpYyB3czJfMzIpCitlbmRp
ZiAoKQogCi1TRVRfVEFSR0VUX1BST1BFUlRJRVMgKHVzcnNjdHAtc3RhdGljIFBST1BFUlRJRVMg
T1VUUFVUX05BTUUgInVzcnNjdHAiKQotU0VUX1RBUkdFVF9QUk9QRVJUSUVTICh1c3JzY3RwIFBS
T1BFUlRJRVMgSU1QT1JUX1NVRkZJWCAiX2ltcG9ydC5saWIiKQotU0VUX1RBUkdFVF9QUk9QRVJU
SUVTICh1c3JzY3RwIFBST1BFUlRJRVMgU09WRVJTSU9OIDEgVkVSU0lPTiAxLjAuMCkKK3NldF90
YXJnZXRfcHJvcGVydGllcyh1c3JzY3RwLXN0YXRpYyBQUk9QRVJUSUVTIE9VVFBVVF9OQU1FICJ1
c3JzY3RwIikKK3NldF90YXJnZXRfcHJvcGVydGllcyh1c3JzY3RwIFBST1BFUlRJRVMgSU1QT1JU
X1NVRkZJWCAiX2ltcG9ydC5saWIiKQorc2V0X3RhcmdldF9wcm9wZXJ0aWVzKHVzcnNjdHAgUFJP
UEVSVElFUyBTT1ZFUlNJT04gMSBWRVJTSU9OIDEuMC4wKQogCiAjIFNFVFRJTkdTIEZPUiBVTklY
IENPTVBJTEVSCi1JRiAoIngke0NNQUtFX0NfQ09NUElMRVJfSUR9IiBTVFJFUVVBTCAieENsYW5n
IiBPUiAieCR7Q01BS0VfQ19DT01QSUxFUl9JRH0iIFNUUkVRVUFMICJ4R05VIikKLQlzZXQoQ01B
S0VfQ19GTEFHUyAiJHtDTUFLRV9DX0ZMQUdTfSAtcGVkYW50aWMgLVdhbGwgLXN0ZD1jOTkiKQot
CXNldChDTUFLRV9DWFhfRkxBR1MgIiR7Q01BS0VfQ1hYX0ZMQUdTfSAtcGVkYW50aWMgLVdhbGwg
LXN0ZD1jOTkiKQotCWlmIChXRVJST1IpCi0JCXNldChDTUFLRV9DX0ZMQUdTICIke0NNQUtFX0Nf
RkxBR1N9IC1XZXJyb3IiKQotCQlzZXQoQ01BS0VfQ1hYX0ZMQUdTICIke0NNQUtFX0NYWF9GTEFH
U30gLVdlcnJvciIpCi0JZW5kaWYoKQotRU5ESUYgKCkKK2lmICgieCR7Q01BS0VfQ19DT01QSUxF
Ul9JRH0iIFNUUkVRVUFMICJ4Q2xhbmciIE9SICJ4JHtDTUFLRV9DX0NPTVBJTEVSX0lEfSIgU1RS
RVFVQUwgInhHTlUiKQorICAgIHNldChDTUFLRV9DX0ZMQUdTICIke0NNQUtFX0NfRkxBR1N9IC1w
ZWRhbnRpYyAtV2V4dHJhIC1XYWxsIC1zdGQ9Yzk5IC1Xbm8tdW51c2VkLXBhcmFtZXRlciIpCisg
ICAgc2V0KENNQUtFX0NYWF9GTEFHUyAiJHtDTUFLRV9DWFhfRkxBR1N9IC1wZWRhbnRpYyAtV2V4
dHJhIC1XYWxsIC1zdGQ9Yzk5IC1Xbm8tdW51c2VkLXBhcmFtZXRlciIpCisgICAgaWYgKFdFUlJP
UikKKyAgICAgICAgc2V0KENNQUtFX0NfRkxBR1MgIiR7Q01BS0VfQ19GTEFHU30gLVdlcnJvciIp
CisgICAgICAgIHNldChDTUFLRV9DWFhfRkxBR1MgIiR7Q01BS0VfQ1hYX0ZMQUdTfSAtV2Vycm9y
IikKKyAgICBlbmRpZiAoKQorZW5kaWYgKCkKIAogIyBTRVRUSU5HUyBGT1IgVklTVUFMIFNUVURJ
TyBDT01QSUxFUgotSUYgKCJ4JHtDTUFLRV9DX0NPTVBJTEVSX0lEfSIgU1RSRVFVQUwgInhNU1ZD
IikKLQlJRiAoQ01BS0VfQ19GTEFHUyBNQVRDSEVTICIvV1swLTRdIikKLQkJU1RSSU5HKFJFR0VY
IFJFUExBQ0UgIi9XWzAtNF0iICIvVzMiIENNQUtFX0NfRkxBR1MgIiR7Q01BS0VfQ19GTEFHU30i
KQotCUVMU0UgKCkKLQkJU0VUKENNQUtFX0NfRkxBR1MgIiR7Q01BS0VfQ19GTEFHU30gL1czIikK
LQlFTkRJRiAoKQotCi0JSUYgKFdFUlJPUikKLQkJU0VUKENNQUtFX0NfRkxBR1MgIiR7Q01BS0Vf
Q19GTEFHU30gL1dYIikKLQlFTkRJRigpCi1FTkRJRiAoKQotCi1JRiAoIngke0NNQUtFX0NfQ09N
UElMRVJfSUR9IiBTVFJFUVVBTCAieE1TVkM5MCIgT1IgIngke0NNQUtFX0NfQ09NUElMRVJfSUR9
IiBTVFJFUVVBTCAieE1TVkMxMCIpCitpZiAoIngke0NNQUtFX0NfQ09NUElMRVJfSUR9IiBTVFJF
UVVBTCAieE1TVkMiKQorICAgIGlmIChDTUFLRV9DX0ZMQUdTIE1BVENIRVMgIi9XWzAtNF0iKQor
ICAgICAgICBTVFJJTkcoUkVHRVggUkVQTEFDRSAiL1dbMC00XSIgIi9XMyIgQ01BS0VfQ19GTEFH
UyAiJHtDTUFLRV9DX0ZMQUdTfSIpCisgICAgRUxTRSAoKQorICAgICAgICBTRVQoQ01BS0VfQ19G
TEFHUyAiJHtDTUFLRV9DX0ZMQUdTfSAvVzMiKQorICAgIGVuZGlmICgpCisKKyAgICBpZiAoV0VS
Uk9SKQorICAgICAgICBTRVQoQ01BS0VfQ19GTEFHUyAiJHtDTUFLRV9DX0ZMQUdTfSAvV1giKQor
ICAgIGVuZGlmKCkKK2VuZGlmICgpCisKK2lmICgieCR7Q01BS0VfQ19DT01QSUxFUl9JRH0iIFNU
UkVRVUFMICJ4TVNWQzkwIiBPUiAieCR7Q01BS0VfQ19DT01QSUxFUl9JRH0iIFNUUkVRVUFMICJ4
TVNWQzEwIikKICAgICBTRVRfU09VUkNFX0ZJTEVTX1BST1BFUlRJRVMoJHt1c3JzY3RwX1NPVVJD
RVN9IFBST1BFUlRJRVMgTEFOR1VBR0UgQykKLUVORElGKCkKK2VuZGlmKCkKIAotSUYgKE5PVCBE
RUZJTkVEIENNQUtFX0lOU1RBTExfTElCRElSKQoraWYgKE5PVCBERUZJTkVEIENNQUtFX0lOU1RB
TExfTElCRElSKQogICAgIFNFVChDTUFLRV9JTlNUQUxMX0xJQkRJUiBsaWIpCi1FTkRJRiAoKQor
ZW5kaWYgKCkKIAogCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjCiAjIElOU1RBTEwgTElCUkFSWSBBTkQgSEVBREVSCiAjIyMjIyMjIyMjIyMjIyMjIyMj
IyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAKLUlOU1RBTEwgKFRBUkdFVFMgdXNyc2N0
cCB1c3JzY3RwLXN0YXRpYyBERVNUSU5BVElPTiAke0NNQUtFX0lOU1RBTExfTElCRElSfSkKLUlO
U1RBTEwgKEZJTEVTIHVzcnNjdHAuaCBERVNUSU5BVElPTiBpbmNsdWRlKQoraW5zdGFsbChUQVJH
RVRTIHVzcnNjdHAgdXNyc2N0cC1zdGF0aWMgREVTVElOQVRJT04gJHtDTUFLRV9JTlNUQUxMX0xJ
QkRJUn0pCitpbnN0YWxsKEZJTEVTIHVzcnNjdHAuaCBERVNUSU5BVElPTiBpbmNsdWRlKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91
c3JzY3RwL3VzcnNjdHBsaWIvdXNyc2N0cGxpYi9uZXRpbmV0L3NjdHBfYXNjb25mLmMgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0
cGxpYi91c3JzY3RwbGliL25ldGluZXQvc2N0cF9hc2NvbmYuYwppbmRleCAwYzgzN2JmNzY4MGMy
MGMyNmViNThkZWIxZjliNTZjMGI0OWFjNTI5Li43MDEyMmFjZDA0NDVhNDEzYzQzNzJlODQ0YTBh
ZjMzZTM1ZmU1YzAzIDEwMDc1NQotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi91c3JzY3RwbGliL25ldGluZXQvc2N0
cF9hc2NvbmYuYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi91c3JzY3RwbGliL25ldGluZXQvc2N0cF9hc2NvbmYu
YwpAQCAtMzIsNyArMzIsNyBAQAogCiAjaWZkZWYgX19GcmVlQlNEX18KICNpbmNsdWRlIDxzeXMv
Y2RlZnMuaD4KLV9fRkJTRElEKCIkRnJlZUJTRDogaGVhZC9zeXMvbmV0aW5ldC9zY3RwX2FzY29u
Zi5jIDI5ODg0NyAyMDE2LTA0LTMwIDE0OjI1OjAwWiB0dWV4ZW4gJCIpOworX19GQlNESUQoIiRG
cmVlQlNEOiBoZWFkL3N5cy9uZXRpbmV0L3NjdHBfYXNjb25mLmMgMzEwNTkwIDIwMTYtMTItMjYg
MTE6MDY6NDFaIHR1ZXhlbiAkIik7CiAjZW5kaWYKIAogI2luY2x1ZGUgPG5ldGluZXQvc2N0cF9v
cy5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNyc2N0cGxpYi9uZXRpbmV0L3NjdHBfYXNjb25m
LmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNj
dHAvdXNyc2N0cGxpYi91c3JzY3RwbGliL25ldGluZXQvc2N0cF9hc2NvbmYuaAppbmRleCBhMzYy
MmU0MTI4Njk0NGQxZTRmMDQ0MTcxNTZiMzE1ZmY0ZDM5MmYyLi42OWFjY2QyYjg1MmQzOTAyM2Y0
Yjc4NDMwMWFkMDU4ZjNjMGExN2Q3IDEwMDc1NQotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi91c3JzY3RwbGliL25l
dGluZXQvc2N0cF9hc2NvbmYuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi91c3JzY3RwbGliL25ldGluZXQvc2N0
cF9hc2NvbmYuaApAQCAtMzIsNyArMzIsNyBAQAogCiAjaWZkZWYgX19GcmVlQlNEX18KICNpbmNs
dWRlIDxzeXMvY2RlZnMuaD4KLV9fRkJTRElEKCIkRnJlZUJTRDogaGVhZC9zeXMvbmV0aW5ldC9z
Y3RwX2FzY29uZi5oIDIzNzcxNSAyMDEyLTA2LTI4IDE2OjAxOjA4WiB0dWV4ZW4gJCIpOworX19G
QlNESUQoIiRGcmVlQlNEOiBoZWFkL3N5cy9uZXRpbmV0L3NjdHBfYXNjb25mLmggMzA5NjA3IDIw
MTYtMTItMDYgMTA6MjE6MjVaIHR1ZXhlbiAkIik7CiAjZW5kaWYKIAogI2lmbmRlZiBfTkVUSU5F
VF9TQ1RQX0FTQ09ORl9IXwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNyc2N0cGxpYi9uZXRpbmV0
L3NjdHBfYXV0aC5jIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9w
YXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNyc2N0cGxpYi9uZXRpbmV0L3NjdHBfYXV0aC5jCmlu
ZGV4IDFmMDgwZjQwNjYwN2ZmOTgzNWZiOTVjNjQwYWViYzFjZmVmNDhkYmMuLmRlODFmZmQyZTRm
ZWFmMjhlMjMzMmZmMGUxNThmMmQxMjA4MzRjNmYgMTAwNzU1Ci0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3VzcnNj
dHBsaWIvbmV0aW5ldC9zY3RwX2F1dGguYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi91c3JzY3RwbGliL25ldGlu
ZXQvc2N0cF9hdXRoLmMKQEAgLTMyLDcgKzMyLDcgQEAKIAogI2lmZGVmIF9fRnJlZUJTRF9fCiAj
aW5jbHVkZSA8c3lzL2NkZWZzLmg+Ci1fX0ZCU0RJRCgiJEZyZWVCU0Q6IGhlYWQvc3lzL25ldGlu
ZXQvc2N0cF9hdXRoLmMgMzAyOTI4IDIwMTYtMDctMTYgMDc6NDg6MDFaIHR1ZXhlbiAkIik7Citf
X0ZCU0RJRCgiJEZyZWVCU0Q6IGhlYWQvc3lzL25ldGluZXQvc2N0cF9hdXRoLmMgMzEwNTkwIDIw
MTYtMTItMjYgMTE6MDY6NDFaIHR1ZXhlbiAkIik7CiAjZW5kaWYKIAogI2luY2x1ZGUgPG5ldGlu
ZXQvc2N0cF9vcy5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNyc2N0cGxpYi9uZXRpbmV0L3Nj
dHBfYXV0aC5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0
eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNyc2N0cGxpYi9uZXRpbmV0L3NjdHBfYXV0aC5oCmluZGV4
IDk5NzM4OTM2M2RlMDhlM2QxNzZjNDRjNzAxMzFkZmJiYzI0ZmQxMmUuLmIyNGY1MTQxZTgxYmNm
ZTY5NWJmMTdmYzhkOGVhMTRiNDM2NDYzZjMgMTAwNzU1Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3VzcnNjdHBs
aWIvbmV0aW5ldC9zY3RwX2F1dGguaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi91c3JzY3RwbGliL25ldGluZXQv
c2N0cF9hdXRoLmgKQEAgLTMyLDcgKzMyLDcgQEAKIAogI2lmZGVmIF9fRnJlZUJTRF9fCiAjaW5j
bHVkZSA8c3lzL2NkZWZzLmg+Ci1fX0ZCU0RJRCgiJEZyZWVCU0Q6IGhlYWQvc3lzL25ldGluZXQv
c2N0cF9hdXRoLmggMjcxNjczIDIwMTQtMDktMTYgMTQ6MjA6MzNaIHR1ZXhlbiAkIik7CitfX0ZC
U0RJRCgiJEZyZWVCU0Q6IGhlYWQvc3lzL25ldGluZXQvc2N0cF9hdXRoLmggMzEwNTkwIDIwMTYt
MTItMjYgMTE6MDY6NDFaIHR1ZXhlbiAkIik7CiAjZW5kaWYKIAogI2lmbmRlZiBfTkVUSU5FVF9T
Q1RQX0FVVEhfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3VzcnNjdHBsaWIvbmV0aW5ldC9zY3Rw
X2JzZF9hZGRyLmMgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3Bh
cnR5L3VzcnNjdHAvdXNyc2N0cGxpYi91c3JzY3RwbGliL25ldGluZXQvc2N0cF9ic2RfYWRkci5j
CmluZGV4IGVlY2U4NmZhZmRmNzU2NzhiYjYwNjhmZjcwNTg3MjViZTViODNiNzQuLjgwNWZkYjg3
ZDBlYzQzMmQ2ODQ0NmZkNjBlMjFiNjk3YjFlMzJlOTIgMTAwNzU1Ci0tLSBhL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3Vz
cnNjdHBsaWIvbmV0aW5ldC9zY3RwX2JzZF9hZGRyLmMKKysrIGIvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNyc2N0cGxp
Yi9uZXRpbmV0L3NjdHBfYnNkX2FkZHIuYwpAQCAtMzIsNyArMzIsNyBAQAogCiAjaWZkZWYgX19G
cmVlQlNEX18KICNpbmNsdWRlIDxzeXMvY2RlZnMuaD4KLV9fRkJTRElEKCIkRnJlZUJTRDogaGVh
ZC9zeXMvbmV0aW5ldC9zY3RwX2JzZF9hZGRyLmMgMjk4OTQyIDIwMTYtMDUtMDIgMjA6NTY6MTFa
IHBmZyAkIik7CitfX0ZCU0RJRCgiJEZyZWVCU0Q6IGhlYWQvc3lzL25ldGluZXQvc2N0cF9ic2Rf
YWRkci5jIDMxMDU5MCAyMDE2LTEyLTI2IDExOjA2OjQxWiB0dWV4ZW4gJCIpOwogI2VuZGlmCiAK
ICNpbmNsdWRlIDxuZXRpbmV0L3NjdHBfb3MuaD4KQEAgLTMwNiw2ICszMDYsMTQgQEAgc2N0cF9p
c192bXdhcmVfaW50ZXJmYWNlKHN0cnVjdCBpZm5ldCAqaWZuKQogI2VuZGlmCiAKICNpZiBkZWZp
bmVkKF9fVXNlcnNwYWNlX29zX1dpbmRvd3MpCisjaWZkZWYgTUFMTE9DCisjdW5kZWYgTUFMTE9D
CisjZGVmaW5lIE1BTExPQyh4KSBIZWFwQWxsb2MoR2V0UHJvY2Vzc0hlYXAoKSwgMCwgKHgpKQor
I2VuZGlmCisjaWZkZWYgRlJFRQorI3VuZGVmIEZSRUUKKyNkZWZpbmUgRlJFRSh4KSBIZWFwRnJl
ZShHZXRQcm9jZXNzSGVhcCgpLCAwLCAoeCkpCisjZW5kaWYKIHN0YXRpYyB2b2lkCiBzY3RwX2lu
aXRfaWZuc19mb3JfdnJmKGludCB2cmZpZCkKIHsKQEAgLTMzNSw3ICszNDMsNyBAQCBzY3RwX2lu
aXRfaWZuc19mb3JfdnJmKGludCB2cmZpZCkKIAkvKiBHZXQgYWN0dWFsIGFkYXB0ZXIgaW5mb3Jt
YXRpb24gKi8KIAlpZiAoKEVyciA9IEdldEFkYXB0ZXJzQWRkcmVzc2VzKEFGX0lORVQsIDAsIE5V
TEwsIHBBZGFwdGVyQWRkcnMsICZBZGFwdGVyQWRkcnNTaXplKSkgIT0gRVJST1JfU1VDQ0VTUykg
ewogCQlTQ1RQX1BSSU5URigiR2V0QWRhcHRlcnNWNEFkZHJlc3NlcygpIGZhaWxlZCB3aXRoIGVy
cm9yIGNvZGUgJWRcbiIsIEVycik7Ci0JCUdsb2JhbEZyZWUocEFkYXB0ZXJBZGRycyk7CisJCUZS
RUUocEFkYXB0ZXJBZGRycyk7CiAJCXJldHVybjsKIAl9CiAJLyogRW51bWVyYXRlIHRocm91Z2gg
ZWFjaCByZXR1cm5lZCBhZGFwdGVyIGFuZCBzYXZlIGl0cyBpbmZvcm1hdGlvbiAqLwpAQCAtMzYw
LDcgKzM2OCw3IEBAIHNjdHBfaW5pdF9pZm5zX2Zvcl92cmYoaW50IHZyZmlkKQogCQkJfQogCQl9
CiAJfQotCUdsb2JhbEZyZWUocEFkYXB0ZXJBZGRycyk7CisJRlJFRShwQWRhcHRlckFkZHJzKTsK
ICNlbmRpZgogI2lmZGVmIElORVQ2CiAJQWRhcHRlckFkZHJzU2l6ZSA9IDA7CkBAIC0zODAsNyAr
Mzg4LDcgQEAgc2N0cF9pbml0X2lmbnNfZm9yX3ZyZihpbnQgdnJmaWQpCiAJLyogR2V0IGFjdHVh
bCBhZGFwdGVyIGluZm9ybWF0aW9uICovCiAJaWYgKChFcnIgPSBHZXRBZGFwdGVyc0FkZHJlc3Nl
cyhBRl9JTkVUNiwgMCwgTlVMTCwgcEFkYXB0ZXJBZGRycywgJkFkYXB0ZXJBZGRyc1NpemUpKSAh
PSBFUlJPUl9TVUNDRVNTKSB7CiAJCVNDVFBfUFJJTlRGKCJHZXRBZGFwdGVyc1Y2QWRkcmVzc2Vz
KCkgZmFpbGVkIHdpdGggZXJyb3IgY29kZSAlZFxuIiwgRXJyKTsKLQkJR2xvYmFsRnJlZShwQWRh
cHRlckFkZHJzKTsKKwkJRlJFRShwQWRhcHRlckFkZHJzKTsKIAkJcmV0dXJuOwogCX0KIAkvKiBF
bnVtZXJhdGUgdGhyb3VnaCBlYWNoIHJldHVybmVkIGFkYXB0ZXIgYW5kIHNhdmUgaXRzIGluZm9y
bWF0aW9uICovCkBAIC00MDIsNyArNDEwLDcgQEAgc2N0cF9pbml0X2lmbnNfZm9yX3ZyZihpbnQg
dnJmaWQpCiAJCQl9CiAJCX0KIAl9Ci0JR2xvYmFsRnJlZShwQWRhcHRlckFkZHJzKTsKKwlGUkVF
KHBBZGFwdGVyQWRkcnMpOwogI2VuZGlmCiB9CiAjZWxpZiBkZWZpbmVkKF9fVXNlcnNwYWNlX18p
CkBAIC01NjgsNyArNTc2LDcgQEAgc2N0cF9pbml0X2lmbnNfZm9yX3ZyZihpbnQgdnJmaWQpCiAj
ZW5kaWYKIAogCUlGTkVUX1JMT0NLKCk7Ci0JVEFJTFFfRk9SRUFDSChpZm4sICZNT0RVTEVfR0xP
QkFMKGlmbmV0KSwgaWZfbGlzdCkgeworCVRBSUxRX0ZPUkVBQ0goaWZuLCAmTU9EVUxFX0dMT0JB
TChpZm5ldCksIGlmX2xpbmspIHsKIAkJaWYgKHNjdHBfaXNfZGVzaXJlZF9pbnRlcmZhY2VfdHlw
ZShpZm4pID09IDApIHsKIAkJCS8qIG5vbiBkZXNpcmVkIHR5cGUgKi8KIAkJCWNvbnRpbnVlOwpA
QCAtNTc4LDcgKzU4Niw3IEBAIHNjdHBfaW5pdF9pZm5zX2Zvcl92cmYoaW50IHZyZmlkKQogI2Vs
c2UKIAkJSUZfQUREUl9MT0NLKGlmbik7CiAjZW5kaWYKLQkJVEFJTFFfRk9SRUFDSChpZmEsICZp
Zm4tPmlmX2FkZHJsaXN0LCBpZmFfbGlzdCkgeworCQlUQUlMUV9GT1JFQUNIKGlmYSwgJmlmbi0+
aWZfYWRkcmhlYWQsIGlmYV9saW5rKSB7CiAJCQlpZiAoaWZhLT5pZmFfYWRkciA9PSBOVUxMKSB7
CiAJCQkJY29udGludWU7CiAJCQl9CkBAIC03NDUsMTEgKzc1MywxMSBAQCBzY3RwX2FkZF9vcl9k
ZWxfaW50ZXJmYWNlcyhpbnQgKCpwcmVkKShzdHJ1Y3QgaWZuZXQgKiksIGludCBhZGQpCiAJc3Ry
dWN0IGlmYWRkciAqaWZhOwogCiAJSUZORVRfUkxPQ0soKTsKLQlUQUlMUV9GT1JFQUNIKGlmbiwg
Jk1PRFVMRV9HTE9CQUwoaWZuZXQpLCBpZl9saXN0KSB7CisJVEFJTFFfRk9SRUFDSChpZm4sICZN
T0RVTEVfR0xPQkFMKGlmbmV0KSwgaWZfbGluaykgewogCQlpZiAoISgqcHJlZCkoaWZuKSkgewog
CQkJY29udGludWU7CiAJCX0KLQkJVEFJTFFfRk9SRUFDSChpZmEsICZpZm4tPmlmX2FkZHJsaXN0
LCBpZmFfbGlzdCkgeworCQlUQUlMUV9GT1JFQUNIKGlmYSwgJmlmbi0+aWZfYWRkcmhlYWQsIGlm
YV9saW5rKSB7CiAJCQlzY3RwX2FkZHJfY2hhbmdlKGlmYSwgYWRkID8gUlRNX0FERCA6IFJUTV9E
RUxFVEUpOwogCQl9CiAJfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRj
L1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNyc2N0cGxpYi9uZXRpbmV0
L3NjdHBfYnNkX2FkZHIuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3VzcnNjdHBsaWIvbmV0aW5ldC9zY3RwX2JzZF9h
ZGRyLmgKaW5kZXggODM3M2IzYjgzNDVlYjBkY2RlMWEyZWVmMWEwYjY2N2Y3NGU4MDI5MC4uZTA0
ODNhNDY4Nzk0ZDJlZGM0Y2MyMDhmNzJiM2UxNmMxYTFmYzhkMyAxMDA3NTUKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBs
aWIvdXNyc2N0cGxpYi9uZXRpbmV0L3NjdHBfYnNkX2FkZHIuaAorKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi91c3Jz
Y3RwbGliL25ldGluZXQvc2N0cF9ic2RfYWRkci5oCkBAIC0zMiw3ICszMiw3IEBACiAKICNpZmRl
ZiBfX0ZyZWVCU0RfXwogI2luY2x1ZGUgPHN5cy9jZGVmcy5oPgotX19GQlNESUQoIiRGcmVlQlNE
OiBoZWFkL3N5cy9uZXRpbmV0L3NjdHBfYnNkX2FkZHIuaCAyMzc1NDAgMjAxMi0wNi0yNCAyMToy
NTo1NFogdHVleGVuICQiKTsKK19fRkJTRElEKCIkRnJlZUJTRDogaGVhZC9zeXMvbmV0aW5ldC9z
Y3RwX2JzZF9hZGRyLmggMzEwNTkwIDIwMTYtMTItMjYgMTE6MDY6NDFaIHR1ZXhlbiAkIik7CiAj
ZW5kaWYKIAogI2lmbmRlZiBfTkVUSU5FVF9TQ1RQX0JTRF9BRERSX0hfCmRpZmYgLS1naXQgYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNy
c2N0cGxpYi91c3JzY3RwbGliL25ldGluZXQvc2N0cF9jY19mdW5jdGlvbnMuYyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGli
L3VzcnNjdHBsaWIvbmV0aW5ldC9zY3RwX2NjX2Z1bmN0aW9ucy5jCmluZGV4IGI5YTY4NGIyN2I2
ZmM4Mjg3Mzk5NzM3ZjRhOWUzYWIzNjBjOGFlY2QuLmFjZTc0NjRkNGE5MGI0MjllNWUxZDRjNTQz
ZjdkNDU5MTYwY2MyMGUgMTAwNzU1Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3VzcnNjdHBsaWIvbmV0aW5ldC9z
Y3RwX2NjX2Z1bmN0aW9ucy5jCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3VzcnNjdHBsaWIvbmV0aW5ldC9zY3Rw
X2NjX2Z1bmN0aW9ucy5jCkBAIC0zMiw3ICszMiw3IEBACiAKICNpZmRlZiBfX0ZyZWVCU0RfXwog
I2luY2x1ZGUgPHN5cy9jZGVmcy5oPgotX19GQlNESUQoIiRGcmVlQlNEOiBoZWFkL3N5cy9uZXRp
bmV0L3NjdHBfY2NfZnVuY3Rpb25zLmMgMjk4OTQyIDIwMTYtMDUtMDIgMjA6NTY6MTFaIHBmZyAk
Iik7CitfX0ZCU0RJRCgiJEZyZWVCU0Q6IGhlYWQvc3lzL25ldGluZXQvc2N0cF9jY19mdW5jdGlv
bnMuYyAzMTA1OTAgMjAxNi0xMi0yNiAxMTowNjo0MVogdHVleGVuICQiKTsKICNlbmRpZgogCiAj
aW5jbHVkZSA8bmV0aW5ldC9zY3RwX29zLmg+CkBAIC0yMTIsNyArMjEyLDcgQEAgc2N0cF9jd25k
X3VwZGF0ZV9hZnRlcl9mcihzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsCiAJCQkJCS8qIE1hcmsgZW5k
IG9mIHRoZSB3aW5kb3cgKi8KIAkJCQkJYXNvYy0+ZmFzdF9yZWNvdmVyeV90c24gPSBhc29jLT5z
ZW5kaW5nX3NlcSAtIDE7CiAJCQkJfSBlbHNlIHsKLQkJCQkJYXNvYy0+ZmFzdF9yZWNvdmVyeV90
c24gPSBsY2hrLT5yZWMuZGF0YS5UU05fc2VxIC0gMTsKKwkJCQkJYXNvYy0+ZmFzdF9yZWNvdmVy
eV90c24gPSBsY2hrLT5yZWMuZGF0YS50c24gLSAxOwogCQkJCX0KIAogCQkJCS8qCkBAIC0yMjUs
NyArMjI1LDcgQEAgc2N0cF9jd25kX3VwZGF0ZV9hZnRlcl9mcihzdHJ1Y3Qgc2N0cF90Y2IgKnN0
Y2IsCiAJCQkJCS8qIE1hcmsgZW5kIG9mIHRoZSB3aW5kb3cgKi8KIAkJCQkJbmV0LT5mYXN0X3Jl
Y292ZXJ5X3RzbiA9IGFzb2MtPnNlbmRpbmdfc2VxIC0gMTsKIAkJCQl9IGVsc2UgewotCQkJCQlu
ZXQtPmZhc3RfcmVjb3ZlcnlfdHNuID0gbGNoay0+cmVjLmRhdGEuVFNOX3NlcSAtIDE7CisJCQkJ
CW5ldC0+ZmFzdF9yZWNvdmVyeV90c24gPSBsY2hrLT5yZWMuZGF0YS50c24gLSAxOwogCQkJCX0K
IAogCQkJCXNjdHBfdGltZXJfc3RvcChTQ1RQX1RJTUVSX1RZUEVfU0VORCwKQEAgLTE4MDYsNyAr
MTgwNiw3IEBAIHNjdHBfaHNfY3duZF91cGRhdGVfYWZ0ZXJfZnIoc3RydWN0IHNjdHBfdGNiICpz
dGNiLAogCQkJCQkvKiBNYXJrIGVuZCBvZiB0aGUgd2luZG93ICovCiAJCQkJCWFzb2MtPmZhc3Rf
cmVjb3ZlcnlfdHNuID0gYXNvYy0+c2VuZGluZ19zZXEgLSAxOwogCQkJCX0gZWxzZSB7Ci0JCQkJ
CWFzb2MtPmZhc3RfcmVjb3ZlcnlfdHNuID0gbGNoay0+cmVjLmRhdGEuVFNOX3NlcSAtIDE7CisJ
CQkJCWFzb2MtPmZhc3RfcmVjb3ZlcnlfdHNuID0gbGNoay0+cmVjLmRhdGEudHNuIC0gMTsKIAkJ
CQl9CiAKIAkJCQkvKgpAQCAtMTgxOSw3ICsxODE5LDcgQEAgc2N0cF9oc19jd25kX3VwZGF0ZV9h
ZnRlcl9mcihzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsCiAJCQkJCS8qIE1hcmsgZW5kIG9mIHRoZSB3
aW5kb3cgKi8KIAkJCQkJbmV0LT5mYXN0X3JlY292ZXJ5X3RzbiA9IGFzb2MtPnNlbmRpbmdfc2Vx
IC0gMTsKIAkJCQl9IGVsc2UgewotCQkJCQluZXQtPmZhc3RfcmVjb3ZlcnlfdHNuID0gbGNoay0+
cmVjLmRhdGEuVFNOX3NlcSAtIDE7CisJCQkJCW5ldC0+ZmFzdF9yZWNvdmVyeV90c24gPSBsY2hr
LT5yZWMuZGF0YS50c24gLSAxOwogCQkJCX0KIAogCQkJCXNjdHBfdGltZXJfc3RvcChTQ1RQX1RJ
TUVSX1RZUEVfU0VORCwKQEAgLTIzMzMsNyArMjMzMyw3IEBAIHNjdHBfaHRjcF9jd25kX3VwZGF0
ZV9hZnRlcl9mcihzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsCiAJCQkJCS8qIE1hcmsgZW5kIG9mIHRo
ZSB3aW5kb3cgKi8KIAkJCQkJYXNvYy0+ZmFzdF9yZWNvdmVyeV90c24gPSBhc29jLT5zZW5kaW5n
X3NlcSAtIDE7CiAJCQkJfSBlbHNlIHsKLQkJCQkJYXNvYy0+ZmFzdF9yZWNvdmVyeV90c24gPSBs
Y2hrLT5yZWMuZGF0YS5UU05fc2VxIC0gMTsKKwkJCQkJYXNvYy0+ZmFzdF9yZWNvdmVyeV90c24g
PSBsY2hrLT5yZWMuZGF0YS50c24gLSAxOwogCQkJCX0KIAogCQkJCS8qCkBAIC0yMzQ2LDcgKzIz
NDYsNyBAQCBzY3RwX2h0Y3BfY3duZF91cGRhdGVfYWZ0ZXJfZnIoc3RydWN0IHNjdHBfdGNiICpz
dGNiLAogCQkJCQkvKiBNYXJrIGVuZCBvZiB0aGUgd2luZG93ICovCiAJCQkJCW5ldC0+ZmFzdF9y
ZWNvdmVyeV90c24gPSBhc29jLT5zZW5kaW5nX3NlcSAtIDE7CiAJCQkJfSBlbHNlIHsKLQkJCQkJ
bmV0LT5mYXN0X3JlY292ZXJ5X3RzbiA9IGxjaGstPnJlYy5kYXRhLlRTTl9zZXEgLSAxOworCQkJ
CQluZXQtPmZhc3RfcmVjb3ZlcnlfdHNuID0gbGNoay0+cmVjLmRhdGEudHNuIC0gMTsKIAkJCQl9
CiAKIAkJCQlzY3RwX3RpbWVyX3N0b3AoU0NUUF9USU1FUl9UWVBFX1NFTkQsCmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAv
dXNyc2N0cGxpYi91c3JzY3RwbGliL25ldGluZXQvc2N0cF9jb25zdGFudHMuaCBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGli
L3VzcnNjdHBsaWIvbmV0aW5ldC9zY3RwX2NvbnN0YW50cy5oCmluZGV4IDJiNWFjMjVhNjY4NTgz
NWUzYjllZGE4YTFjNjk2YmY5NDkzOWNjOGYuLmUyNzVkZDk1NTYyZTUwMTZkZjkzZDA4MjVjMDgy
OGU3YTg4NGI2MGYgMTAwNzU1Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3VzcnNjdHBsaWIvbmV0aW5ldC9zY3Rw
X2NvbnN0YW50cy5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3VzcnNjdHBsaWIvbmV0aW5ldC9zY3RwX2NvbnN0
YW50cy5oCkBAIC0zMiw3ICszMiw3IEBACiAKICNpZmRlZiBfX0ZyZWVCU0RfXwogI2luY2x1ZGUg
PHN5cy9jZGVmcy5oPgotX19GQlNESUQoIiRGcmVlQlNEOiBoZWFkL3N5cy9uZXRpbmV0L3NjdHBf
Y29uc3RhbnRzLmggMzAyOTQ5IDIwMTYtMDctMTcgMTM6MTQ6NTFaIHR1ZXhlbiAkIik7CitfX0ZC
U0RJRCgiJEZyZWVCU0Q6IGhlYWQvc3lzL25ldGluZXQvc2N0cF9jb25zdGFudHMuaCAzMDk2ODIg
MjAxNi0xMi0wNyAxOTozMDo1OVogdHVleGVuICQiKTsKICNlbmRpZgogCiAjaWZuZGVmIF9ORVRJ
TkVUX1NDVFBfQ09OU1RBTlRTX0hfCkBAIC05MjMsOCArOTIzLDkgQEAgZXh0ZXJuIHZvaWQgZ2V0
d2ludGltZW9mZGF5KHN0cnVjdCB0aW1ldmFsICp0dik7CiAjZGVmaW5lIFNDVFBfU1NOX0dFKGEs
IGIpIFNDVFBfVUlOVDE2X0dFKGEsIGIpCiAjZGVmaW5lIFNDVFBfVFNOX0dUKGEsIGIpIFNDVFBf
VUlOVDMyX0dUKGEsIGIpCiAjZGVmaW5lIFNDVFBfVFNOX0dFKGEsIGIpIFNDVFBfVUlOVDMyX0dF
KGEsIGIpCi0jZGVmaW5lIFNDVFBfTVNHSURfR1QobywgYSwgYikgKChvID09IDEpID8gU0NUUF9V
SU5UMTZfR1QoKHVpbnQxNl90KWEsICh1aW50MTZfdCliKSA6IFNDVFBfVUlOVDMyX0dUKGEsIGIp
KQotI2RlZmluZSBTQ1RQX01TR0lEX0dFKG8sIGEsIGIpICgobyA9PSAxKSA/IFNDVFBfVUlOVDE2
X0dFKCh1aW50MTZfdClhLCAodWludDE2X3QpYikgOiBTQ1RQX1VJTlQzMl9HRShhLCBiKSkKKyNk
ZWZpbmUgU0NUUF9NSURfR1QoaSwgYSwgYikgKCgoaSkgPT0gMSkgPyBTQ1RQX1VJTlQzMl9HVChh
LCBiKSA6IFNDVFBfVUlOVDE2X0dUKCh1aW50MTZfdClhLCAodWludDE2X3QpYikpCisjZGVmaW5l
IFNDVFBfTUlEX0dFKGksIGEsIGIpICgoKGkpID09IDEpID8gU0NUUF9VSU5UMzJfR0UoYSwgYikg
OiBTQ1RQX1VJTlQxNl9HRSgodWludDE2X3QpYSwgKHVpbnQxNl90KWIpKQorI2RlZmluZSBTQ1RQ
X01JRF9FUShpLCBhLCBiKSAoKChpKSA9PSAxKSA/IGEgPT0gYiA6ICh1aW50MTZfdClhID09ICh1
aW50MTZfdCliKQogCiAvKiBNYXBwaW5nIGFycmF5IG1hbmlwdWxhdGlvbiByb3V0aW5lcyAqLwog
I2RlZmluZSBTQ1RQX0lTX1RTTl9QUkVTRU5UKGFycnksIGdhcCkgKChhcnJ5WyhnYXAgPj4gMyld
ID4+IChnYXAgJiAweDA3KSkgJiAweDAxKQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkv
bGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNyc2N0cGxp
Yi9uZXRpbmV0L3NjdHBfY3JjMzIuYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3VzcnNjdHBsaWIvbmV0aW5ldC9zY3Rw
X2NyYzMyLmMKaW5kZXggNmM5YWMyODA2Njg5MDA0MGFiZTE5ODM0NWE5MmRkMzM5NzYxZTk4Yy4u
Mjc1MzZmMTFkMGVlMWU4YWJiYjIwNzZiMWI0OTg0NThlYjdiZTE1NiAxMDA3NTUKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNj
dHBsaWIvdXNyc2N0cGxpYi9uZXRpbmV0L3NjdHBfY3JjMzIuYworKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi91c3Jz
Y3RwbGliL25ldGluZXQvc2N0cF9jcmMzMi5jCkBAIC0zMiw3ICszMiw3IEBACiAKICNpZmRlZiBf
X0ZyZWVCU0RfXwogI2luY2x1ZGUgPHN5cy9jZGVmcy5oPgotX19GQlNESUQoIiRGcmVlQlNEOiBo
ZWFkL3N5cy9uZXRpbmV0L3NjdHBfY3JjMzIuYyAyMzU4MjggMjAxMi0wNS0yMyAxMToyNjoyOFog
dHVleGVuICQiKTsKK19fRkJTRElEKCIkRnJlZUJTRDogaGVhZC9zeXMvbmV0aW5ldC9zY3RwX2Ny
YzMyLmMgMzEwNTkwIDIwMTYtMTItMjYgMTE6MDY6NDFaIHR1ZXhlbiAkIik7CiAjZW5kaWYKIAog
I2luY2x1ZGUgPG5ldGluZXQvc2N0cF9vcy5oPgpAQCAtNjk2LDggKzY5NiwxMSBAQCBzaW5nbGV0
YWJsZV9jcmMzMmModWludDMyX3QgY3JjMzJjLAogCXJldHVybiAoY3JjMzJjKTsKIH0KIAotCisj
aWYgZGVmaW5lZChfX1VzZXJzcGFjZV9fKQordWludDMyX3QKKyNlbHNlCiBzdGF0aWMgdWludDMy
X3QKKyNlbmRpZgogY2FsY3VsYXRlX2NyYzMyYyh1aW50MzJfdCBjcmMzMmMsCiAgICAgICAgICAg
ICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmJ1ZmZlciwKICAgICAgICAgICAgICAgICAgdW5z
aWduZWQgaW50IGxlbmd0aCkKQEAgLTcxMCw3ICs3MTMsMTEgQEAgY2FsY3VsYXRlX2NyYzMyYyh1
aW50MzJfdCBjcmMzMmMsCiB9CiAjZW5kaWYgLyogRnJlZUJTRCA8IDgwMDAwIHx8IG90aGVyIE9T
ICovCiAKKyNpZiBkZWZpbmVkKF9fVXNlcnNwYWNlX18pCit1aW50MzJfdAorI2Vsc2UKIHN0YXRp
YyB1aW50MzJfdAorI2VuZGlmCiBzY3RwX2ZpbmFsaXplX2NyYzMyYyh1aW50MzJfdCBjcmMzMmMp
CiB7CiAJdWludDMyX3QgcmVzdWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNyc2N0cGxpYi9u
ZXRpbmV0L3NjdHBfY3JjMzIuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3VzcnNjdHBsaWIvbmV0aW5ldC9zY3RwX2Ny
YzMyLmgKaW5kZXggMmNjMTRmNDUwM2Y3ZmU3Nzk2ZDA0M2YyZWY4YzhiMjZlOWRmMDVjZi4uMGIx
Y2JiYjRmMWU2N2I4NWUyNTFkYTUyMjdlYzA0MzQwZTQ2MzM2ZSAxMDA3NTUKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBs
aWIvdXNyc2N0cGxpYi9uZXRpbmV0L3NjdHBfY3JjMzIuaAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0
eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi91c3JzY3Rw
bGliL25ldGluZXQvc2N0cF9jcmMzMi5oCkBAIC0zMiw3ICszMiw3IEBACiAKICNpZmRlZiBfX0Zy
ZWVCU0RfXwogI2luY2x1ZGUgPHN5cy9jZGVmcy5oPgotX19GQlNESUQoIiRGcmVlQlNEOiBoZWFk
L3N5cy9uZXRpbmV0L3NjdHBfY3JjMzIuaCAyMzU4MjggMjAxMi0wNS0yMyAxMToyNjoyOFogdHVl
eGVuICQiKTsKK19fRkJTRElEKCIkRnJlZUJTRDogaGVhZC9zeXMvbmV0aW5ldC9zY3RwX2NyYzMy
LmggMzA5NjA3IDIwMTYtMTItMDYgMTA6MjE6MjVaIHR1ZXhlbiAkIik7CiAjZW5kaWYKIAogI2lm
bmRlZiBfTkVUSU5FVF9TQ1RQX0NSQzMyX0hfCkBAIC00OCw2ICs0OCw4IEBAIHZvaWQgc2N0cF9k
ZWxheWVkX2Nrc3VtKHN0cnVjdCBtYnVmICosIHVpbnQzMl90IG9mZnNldCk7CiAjZW5kaWYJCQkJ
LyogX0tFUk5FTCAqLwogI2lmIGRlZmluZWQoX19Vc2Vyc3BhY2VfXykKICNpZiAhZGVmaW5lZChT
Q1RQX1dJVEhfTk9fQ1NVTSkKK3VpbnQzMl90IGNhbGN1bGF0ZV9jcmMzMmModWludDMyX3QsIGNv
bnN0IHVuc2lnbmVkIGNoYXIgKiwgdW5zaWduZWQgaW50KTsKK3VpbnQzMl90IHNjdHBfZmluYWxp
emVfY3JjMzJjKHVpbnQzMl90KTsKIHVpbnQzMl90IHNjdHBfY2FsY3VsYXRlX2Nrc3VtKHN0cnVj
dCBtYnVmICosIHVpbnQzMl90KTsKICNlbmRpZgogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxp
Yi91c3JzY3RwbGliL25ldGluZXQvc2N0cF9oZWFkZXIuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3VzcnNjdHBsaWIv
bmV0aW5ldC9zY3RwX2hlYWRlci5oCmluZGV4IDEzZWZhNzFiOTFjMzViOWYxZTIyNDQ3ZGVhYzQ1
N2JhMDJjMTQyMjYuLjEwMTllZTI3YjA2YTI0YzczNWQ5ZDI0MzJiMTAyNmY3ZmViMzA2NTAgMTAw
NzU1Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
dXNyc2N0cC91c3JzY3RwbGliL3VzcnNjdHBsaWIvbmV0aW5ldC9zY3RwX2hlYWRlci5oCisrKyBi
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91
c3JzY3RwbGliL3VzcnNjdHBsaWIvbmV0aW5ldC9zY3RwX2hlYWRlci5oCkBAIC0zMiw3ICszMiw3
IEBACiAKICNpZmRlZiBfX0ZyZWVCU0RfXwogI2luY2x1ZGUgPHN5cy9jZGVmcy5oPgotX19GQlNE
SUQoIiRGcmVlQlNEOiBoZWFkL3N5cy9uZXRpbmV0L3NjdHBfaGVhZGVyLmggMzAyOTQ5IDIwMTYt
MDctMTcgMTM6MTQ6NTFaIHR1ZXhlbiAkIik7CitfX0ZCU0RJRCgiJEZyZWVCU0Q6IGhlYWQvc3lz
L25ldGluZXQvc2N0cF9oZWFkZXIuaCAzMDk2ODIgMjAxNi0xMi0wNyAxOTozMDo1OVogdHVleGVu
ICQiKTsKICNlbmRpZgogCiAjaWZuZGVmIF9ORVRJTkVUX1NDVFBfSEVBREVSX0hfCkBAIC0xNTMs
OSArMTUzLDkgQEAgc3RydWN0IHNjdHBfc3VwcG9ydGVkX2NodW5rX3R5cGVzX3BhcmFtIHsKICAq
Lwogc3RydWN0IHNjdHBfZGF0YSB7CiAJdWludDMyX3QgdHNuOwotCXVpbnQxNl90IHN0cmVhbV9p
ZDsKLQl1aW50MTZfdCBzdHJlYW1fc2VxdWVuY2U7Ci0JdWludDMyX3QgcHJvdG9jb2xfaWQ7CisJ
dWludDE2X3Qgc2lkOworCXVpbnQxNl90IHNzbjsKKwl1aW50MzJfdCBwcGlkOwogCS8qIHVzZXIg
ZGF0YSBmb2xsb3dzICovCiB9IFNDVFBfUEFDS0VEOwogCkBAIC0xNjYsMTEgKzE2NiwxMSBAQCBz
dHJ1Y3Qgc2N0cF9kYXRhX2NodW5rIHsKIAogc3RydWN0IHNjdHBfaWRhdGEgewogCXVpbnQzMl90
IHRzbjsKLQl1aW50MTZfdCBzdHJlYW1faWQ7CisJdWludDE2X3Qgc2lkOwogCXVpbnQxNl90IHJl
c2VydmVkOwkvKiBXaGVyZSBkb2VzIHRoZSBTU04gZ28/ICovCi0JdWludDMyX3QgbXNnX2lkOwor
CXVpbnQzMl90IG1pZDsKIAl1bmlvbiB7Ci0JCXVpbnQzMl90IHByb3RvY29sX2lkOworCQl1aW50
MzJfdCBwcGlkOwogCQl1aW50MzJfdCBmc247CS8qIEZyYWdtZW50IFNlcXVlbmNlIE51bWJlciAq
LwogCX0gcHBpZF9mc247CiAJLyogdXNlciBkYXRhIGZvbGxvd3MgKi8KQEAgLTQwOSwxNCArNDA5
LDE0IEBAIHN0cnVjdCBzY3RwX2ZvcndhcmRfdHNuX2NodW5rIHsKIH0gU0NUUF9QQUNLRUQ7CiAK
IHN0cnVjdCBzY3RwX3N0cnNlcSB7Ci0JdWludDE2X3Qgc3RyZWFtOwotCXVpbnQxNl90IHNlcXVl
bmNlOworCXVpbnQxNl90IHNpZDsKKwl1aW50MTZfdCBzc247CiB9IFNDVFBfUEFDS0VEOwogCiBz
dHJ1Y3Qgc2N0cF9zdHJzZXFfbWlkIHsKLQl1aW50MTZfdCBzdHJlYW07CisJdWludDE2X3Qgc2lk
OwogCXVpbnQxNl90IGZsYWdzOwotCXVpbnQzMl90IG1zZ19pZDsKKwl1aW50MzJfdCBtaWQ7CiB9
OwogCiBzdHJ1Y3Qgc2N0cF9mb3J3YXJkX3Rzbl9tc2cgewpkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIv
dXNyc2N0cGxpYi9uZXRpbmV0L3NjdHBfaW5kYXRhLmMgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi91c3JzY3RwbGliL25l
dGluZXQvc2N0cF9pbmRhdGEuYwppbmRleCAyOWIyMDRlZTA2NjM5MGZjNWRiMDYyNjdlZTI2YzEz
M2JjYWIxMjAzLi41YjExNmRjOTIwOWM5ZjA5MGM2ZTg0YWRlYjU5OThkYzUyYTgwZWYwIDEwMDc1
NQotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3Vz
cnNjdHAvdXNyc2N0cGxpYi91c3JzY3RwbGliL25ldGluZXQvc2N0cF9pbmRhdGEuYworKysgYi9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNy
c2N0cGxpYi91c3JzY3RwbGliL25ldGluZXQvc2N0cF9pbmRhdGEuYwpAQCAtMzIsNyArMzIsNyBA
QAogCiAjaWZkZWYgX19GcmVlQlNEX18KICNpbmNsdWRlIDxzeXMvY2RlZnMuaD4KLV9fRkJTRElE
KCIkRnJlZUJTRDogaGVhZC9zeXMvbmV0aW5ldC9zY3RwX2luZGF0YS5jIDMwMzkyNyAyMDE2LTA4
LTEwIDE3OjE5OjMzWiB0dWV4ZW4gJCIpOworX19GQlNESUQoIiRGcmVlQlNEOiBoZWFkL3N5cy9u
ZXRpbmV0L3NjdHBfaW5kYXRhLmMgMzEwNTkwIDIwMTYtMTItMjYgMTE6MDY6NDFaIHR1ZXhlbiAk
Iik7CiAjZW5kaWYKIAogI2luY2x1ZGUgPG5ldGluZXQvc2N0cF9vcy5oPgpAQCAtMTM3LDggKzEz
Nyw4IEBAIHN0cnVjdCBzY3RwX3F1ZXVlZF90b19yZWFkICoKIHNjdHBfYnVpbGRfcmVhZHFfZW50
cnkoc3RydWN0IHNjdHBfdGNiICpzdGNiLAogICAgIHN0cnVjdCBzY3RwX25ldHMgKm5ldCwKICAg
ICB1aW50MzJfdCB0c24sIHVpbnQzMl90IHBwaWQsCi0gICAgdWludDMyX3QgY29udGV4dCwgdWlu
dDE2X3Qgc3RyZWFtX25vLAotICAgIHVpbnQzMl90IHN0cmVhbV9zZXEsIHVpbnQ4X3QgZmxhZ3Ms
CisgICAgdWludDMyX3QgY29udGV4dCwgdWludDE2X3Qgc2lkLAorICAgIHVpbnQzMl90IG1pZCwg
dWludDhfdCBmbGFncywKICAgICBzdHJ1Y3QgbWJ1ZiAqZG0pCiB7CiAJc3RydWN0IHNjdHBfcXVl
dWVkX3RvX3JlYWQgKnJlYWRfcXVldWVfZSA9IE5VTEw7CkBAIC0xNDgsMTQgKzE0OCwxNCBAQCBz
Y3RwX2J1aWxkX3JlYWRxX2VudHJ5KHN0cnVjdCBzY3RwX3RjYiAqc3RjYiwKIAkJZ290byBmYWls
ZWRfYnVpbGQ7CiAJfQogCW1lbXNldChyZWFkX3F1ZXVlX2UsIDAsIHNpemVvZihzdHJ1Y3Qgc2N0
cF9xdWV1ZWRfdG9fcmVhZCkpOwotCXJlYWRfcXVldWVfZS0+c2luZm9fc3RyZWFtID0gc3RyZWFt
X25vOwotCXJlYWRfcXVldWVfZS0+c2luZm9fc3NuID0gc3RyZWFtX3NlcTsKKwlyZWFkX3F1ZXVl
X2UtPnNpbmZvX3N0cmVhbSA9IHNpZDsKIAlyZWFkX3F1ZXVlX2UtPnNpbmZvX2ZsYWdzID0gKGZs
YWdzIDw8IDgpOwogCXJlYWRfcXVldWVfZS0+c2luZm9fcHBpZCA9IHBwaWQ7CiAJcmVhZF9xdWV1
ZV9lLT5zaW5mb19jb250ZXh0ID0gY29udGV4dDsKIAlyZWFkX3F1ZXVlX2UtPnNpbmZvX3RzbiA9
IHRzbjsKIAlyZWFkX3F1ZXVlX2UtPnNpbmZvX2N1bXRzbiA9IHRzbjsKIAlyZWFkX3F1ZXVlX2Ut
PnNpbmZvX2Fzc29jX2lkID0gc2N0cF9nZXRfYXNzb2NpZChzdGNiKTsKKwlyZWFkX3F1ZXVlX2Ut
Pm1pZCA9IG1pZDsKIAlyZWFkX3F1ZXVlX2UtPnRvcF9mc24gPSByZWFkX3F1ZXVlX2UtPmZzbl9p
bmNsdWRlZCA9IDB4ZmZmZmZmZmY7CiAJVEFJTFFfSU5JVCgmcmVhZF9xdWV1ZV9lLT5yZWFzbSk7
CiAJcmVhZF9xdWV1ZV9lLT53aG9Gcm9tID0gbmV0OwpAQCAtMzU1LDEwICszNTUsMTAgQEAgc2N0
cF9wbGFjZV9jb250cm9sX2luX3N0cmVhbShzdHJ1Y3Qgc2N0cF9zdHJlYW1faW4gKnN0cm0sCiB7
CiAJc3RydWN0IHNjdHBfcXVldWVkX3RvX3JlYWQgKmF0OwogCXN0cnVjdCBzY3RwX3JlYWRoZWFk
ICpxOwotCXVpbnQ4X3QgYml0cywgdW5vcmRlcmVkOworCXVpbnQ4X3QgZmxhZ3MsIHVub3JkZXJl
ZDsKIAotCWJpdHMgPSAoY29udHJvbC0+c2luZm9fZmxhZ3MgPj4gOCk7Ci0JdW5vcmRlcmVkID0g
Yml0cyAmIFNDVFBfREFUQV9VTk9SREVSRUQ7CisJZmxhZ3MgPSAoY29udHJvbC0+c2luZm9fZmxh
Z3MgPj4gOCk7CisJdW5vcmRlcmVkID0gZmxhZ3MgJiBTQ1RQX0RBVEFfVU5PUkRFUkVEOwogCWlm
ICh1bm9yZGVyZWQpIHsKIAkJcSA9ICZzdHJtLT51bm9faW5xdWV1ZTsKIAkJaWYgKGFzb2MtPmlk
YXRhX3N1cHBvcnRlZCA9PSAwKSB7CkBAIC0zNzMsOCArMzczLDEwIEBAIHNjdHBfcGxhY2VfY29u
dHJvbF9pbl9zdHJlYW0oc3RydWN0IHNjdHBfc3RyZWFtX2luICpzdHJtLAogCX0gZWxzZSB7CiAJ
CXEgPSAmc3RybS0+aW5xdWV1ZTsKIAl9Ci0JaWYgKChiaXRzICYgU0NUUF9EQVRBX05PVF9GUkFH
KSA9PSBTQ1RQX0RBVEFfTk9UX0ZSQUcpIHsKLQkJY29udHJvbC0+ZW5kX2FkZGVkID0gY29udHJv
bC0+bGFzdF9mcmFnX3NlZW4gPSBjb250cm9sLT5maXJzdF9mcmFnX3NlZW4gPSAxOworCWlmICgo
ZmxhZ3MgJiBTQ1RQX0RBVEFfTk9UX0ZSQUcpID09IFNDVFBfREFUQV9OT1RfRlJBRykgeworCQlj
b250cm9sLT5lbmRfYWRkZWQgPSAxOworCQljb250cm9sLT5maXJzdF9mcmFnX3NlZW4gPSAxOwor
CQljb250cm9sLT5sYXN0X2ZyYWdfc2VlbiA9IDE7CiAJfQogCWlmIChUQUlMUV9FTVBUWShxKSkg
ewogCQkvKiBFbXB0eSBxdWV1ZSAqLwpAQCAtMzg3LDcgKzM4OSw3IEBAIHNjdHBfcGxhY2VfY29u
dHJvbF9pbl9zdHJlYW0oc3RydWN0IHNjdHBfc3RyZWFtX2luICpzdHJtLAogCQlyZXR1cm4gKDAp
OwogCX0gZWxzZSB7CiAJCVRBSUxRX0ZPUkVBQ0goYXQsIHEsIG5leHRfaW5zdHJtKSB7Ci0JCQlp
ZiAoU0NUUF9UU05fR1QoYXQtPm1zZ19pZCwgY29udHJvbC0+bXNnX2lkKSkgeworCQkJaWYgKFND
VFBfTUlEX0dUKGFzb2MtPmlkYXRhX3N1cHBvcnRlZCwgYXQtPm1pZCwgY29udHJvbC0+bWlkKSkg
ewogCQkJCS8qCiAJCQkJICogb25lIGluIHF1ZXVlIGlzIGJpZ2dlciB0aGFuIHRoZQogCQkJCSAq
IG5ldyBvbmUsIGluc2VydCBiZWZvcmUgdGhpcyBvbmUKQEAgLTM5OSw3ICs0MDEsNyBAQCBzY3Rw
X3BsYWNlX2NvbnRyb2xfaW5fc3RyZWFtKHN0cnVjdCBzY3RwX3N0cmVhbV9pbiAqc3RybSwKIAkJ
CQkJY29udHJvbC0+b25fc3RybV9xID0gU0NUUF9PTl9PUkRFUkVEIDsKIAkJCQl9CiAJCQkJYnJl
YWs7Ci0JCQl9IGVsc2UgaWYgKGF0LT5tc2dfaWQgPT0gY29udHJvbC0+bXNnX2lkKSB7CisJCQl9
IGVsc2UgaWYgKFNDVFBfTUlEX0VRKGFzb2MtPmlkYXRhX3N1cHBvcnRlZCwgYXQtPm1pZCwgY29u
dHJvbC0+bWlkKSkgewogCQkJCS8qCiAJCQkJICogR2FrLCBIZSBzZW50IG1lIGEgZHVwbGljYXRl
IG1zZwogCQkJCSAqIGlkIG51bWJlcj8/IHJldHVybiAtMSB0byBhYm9ydC4KQEAgLTQxNSw4ICs0
MTcsNyBAQCBzY3RwX3BsYWNlX2NvbnRyb2xfaW5fc3RyZWFtKHN0cnVjdCBzY3RwX3N0cmVhbV9p
biAqc3RybSwKIAkJCQkJCXNjdHBfbG9nX3N0cm1fZGVsKGNvbnRyb2wsIGF0LAogCQkJCQkJCQkg
IFNDVFBfU1RSX0xPR19GUk9NX0lOU0VSVF9UTCk7CiAJCQkJCX0KLQkJCQkJVEFJTFFfSU5TRVJU
X0FGVEVSKHEsCi0JCQkJCQkJICAgYXQsIGNvbnRyb2wsIG5leHRfaW5zdHJtKTsKKwkJCQkJVEFJ
TFFfSU5TRVJUX0FGVEVSKHEsIGF0LCBjb250cm9sLCBuZXh0X2luc3RybSk7CiAJCQkJCWlmICh1
bm9yZGVyZWQpIHsKIAkJCQkJCWNvbnRyb2wtPm9uX3N0cm1fcSA9IFNDVFBfT05fVU5PUkRFUkVE
IDsKIAkJCQkJfSBlbHNlIHsKQEAgLTQ0NCwxOCArNDQ1LDE4IEBAIHNjdHBfYWJvcnRfaW5fcmVh
c20oc3RydWN0IHNjdHBfdGNiICpzdGNiLAogCQkJICJSZWFzcyAleCxDRjoleCxUU049JTguOHgs
U0lEPSU0LjR4LEZTTj0lOC44eCxNSUQ6JTguOHgiLAogCQkJIG9wc3BvdCwKIAkJCSBjb250cm9s
LT5mc25faW5jbHVkZWQsCi0JCQkgY2hrLT5yZWMuZGF0YS5UU05fc2VxLAotCQkJIGNoay0+cmVj
LmRhdGEuc3RyZWFtX251bWJlciwKLQkJCSBjaGstPnJlYy5kYXRhLmZzbl9udW0sIGNoay0+cmVj
LmRhdGEuc3RyZWFtX3NlcSk7CisJCQkgY2hrLT5yZWMuZGF0YS50c24sCisJCQkgY2hrLT5yZWMu
ZGF0YS5zaWQsCisJCQkgY2hrLT5yZWMuZGF0YS5mc24sIGNoay0+cmVjLmRhdGEubWlkKTsKIAl9
IGVsc2UgewogCQlzbnByaW50Zihtc2csIHNpemVvZihtc2cpLAogCQkJICJSZWFzcyAleCxDSTol
eCxUU049JTguOHgsU0lEPSU0LjR4LEZTTj0lNC40eCxTU046JTQuNHgiLAogCQkJIG9wc3BvdCwK
IAkJCSBjb250cm9sLT5mc25faW5jbHVkZWQsCi0JCQkgY2hrLT5yZWMuZGF0YS5UU05fc2VxLAot
CQkJIGNoay0+cmVjLmRhdGEuc3RyZWFtX251bWJlciwKLQkJCSBjaGstPnJlYy5kYXRhLmZzbl9u
dW0sCi0JCQkgKHVpbnQxNl90KWNoay0+cmVjLmRhdGEuc3RyZWFtX3NlcSk7CisJCQkgY2hrLT5y
ZWMuZGF0YS50c24sCisJCQkgY2hrLT5yZWMuZGF0YS5zaWQsCisJCQkgY2hrLT5yZWMuZGF0YS5m
c24sCisJCQkgKHVpbnQxNl90KWNoay0+cmVjLmRhdGEubWlkKTsKIAl9CiAJb3BlciA9IHNjdHBf
Z2VuZXJhdGVfY2F1c2UoU0NUUF9DQVVTRV9QUk9UT0NPTF9WSU9MQVRJT04sIG1zZyk7CiAJc2N0
cF9tX2ZyZWVtKGNoay0+ZGF0YSk7CkBAIC00OTEsNyArNDkyLDYgQEAgc2N0cF9jbGVhbl91cF9j
b250cm9sKHN0cnVjdCBzY3RwX3RjYiAqc3RjYiwgc3RydWN0IHNjdHBfcXVldWVkX3RvX3JlYWQg
KmNvbnRyb2wKICAqLwogc3RhdGljIHZvaWQKIHNjdHBfcXVldWVfZGF0YV90b19zdHJlYW0oc3Ry
dWN0IHNjdHBfdGNiICpzdGNiLAotICAgIHN0cnVjdCBzY3RwX3N0cmVhbV9pbiAqc3RybSwKICAg
ICBzdHJ1Y3Qgc2N0cF9hc3NvY2lhdGlvbiAqYXNvYywKICAgICBzdHJ1Y3Qgc2N0cF9xdWV1ZWRf
dG9fcmVhZCAqY29udHJvbCwgaW50ICphYm9ydF9mbGFnLCBpbnQgKm5lZWRfcmVhc20pCiB7CkBA
IC01MTcsMjQgKzUxNywzMyBAQCBzY3RwX3F1ZXVlX2RhdGFfdG9fc3RyZWFtKHN0cnVjdCBzY3Rw
X3RjYiAqc3RjYiwKIAlpbnQgcXVldWVfbmVlZGVkOwogCXVpbnQzMl90IG54dF90b2RlbDsKIAlz
dHJ1Y3QgbWJ1ZiAqb3BfZXJyOworCXN0cnVjdCBzY3RwX3N0cmVhbV9pbiAqc3RybTsKIAljaGFy
IG1zZ1tTQ1RQX0RJQUdfSU5GT19MRU5dOwogCisJc3RybSA9ICZhc29jLT5zdHJtaW5bY29udHJv
bC0+c2luZm9fc3RyZWFtXTsKIAlpZiAoU0NUUF9CQVNFX1NZU0NUTChzY3RwX2xvZ2dpbmdfbGV2
ZWwpICYgU0NUUF9TVFJfTE9HR0lOR19FTkFCTEUpIHsKIAkJc2N0cF9sb2dfc3RybV9kZWwoY29u
dHJvbCwgTlVMTCwgU0NUUF9TVFJfTE9HX0ZST01fSU5UT19TVFJEKTsKIAl9Ci0JaWYgKFNDVFBf
TVNHSURfR1QoKCFhc29jLT5pZGF0YV9zdXBwb3J0ZWQpLCBzdHJtLT5sYXN0X3NlcXVlbmNlX2Rl
bGl2ZXJlZCwgY29udHJvbC0+c2luZm9fc3NuKSkgeworCWlmIChTQ1RQX01JRF9HVCgoYXNvYy0+
aWRhdGFfc3VwcG9ydGVkKSwgc3RybS0+bGFzdF9taWRfZGVsaXZlcmVkLCBjb250cm9sLT5taWQp
KSB7CiAJCS8qIFRoZSBpbmNvbWluZyBzc2VxIGlzIGJlaGluZCB3aGVyZSB3ZSBsYXN0IGRlbGl2
ZXJlZD8gKi8KIAkJU0NUUERCRyhTQ1RQX0RFQlVHX0lOREFUQTEsICJEdXBsaWNhdGUgUy1TRVE6
ICV1IGRlbGl2ZXJlZDogJXUgZnJvbSBwZWVyLCBBYm9ydCBhc3NvY2lhdGlvblxuIiwKLQkJCWNv
bnRyb2wtPnNpbmZvX3Nzbiwgc3RybS0+bGFzdF9zZXF1ZW5jZV9kZWxpdmVyZWQpOwotCXByb3Rv
Y29sX2Vycm9yOgorCQkJc3RybS0+bGFzdF9taWRfZGVsaXZlcmVkLCBjb250cm9sLT5taWQpOwog
CQkvKgogCQkgKiB0aHJvdyBpdCBpbiB0aGUgc3RyZWFtIHNvIGl0IGdldHMgY2xlYW5lZCB1cCBp
bgogCQkgKiBhc3NvY2lhdGlvbiBkZXN0cnVjdGlvbgogCQkgKi8KIAkJVEFJTFFfSU5TRVJUX0hF
QUQoJnN0cm0tPmlucXVldWUsIGNvbnRyb2wsIG5leHRfaW5zdHJtKTsKLQkJc25wcmludGYobXNn
LCBzaXplb2YobXNnKSwgIkRlbGl2ZXJlZCBTU049JTQuNHgsIGdvdCBUU049JTguOHgsIFNJRD0l
NC40eCwgU1NOPSU0LjR4IiwKLQkJICAgICAgICAgc3RybS0+bGFzdF9zZXF1ZW5jZV9kZWxpdmVy
ZWQsIGNvbnRyb2wtPnNpbmZvX3RzbiwKLQkJCSBjb250cm9sLT5zaW5mb19zdHJlYW0sIGNvbnRy
b2wtPnNpbmZvX3Nzbik7CisJCWlmIChhc29jLT5pZGF0YV9zdXBwb3J0ZWQpIHsKKwkJCXNucHJp
bnRmKG1zZywgc2l6ZW9mKG1zZyksICJEZWxpdmVyZWQgTUlEPSU4Ljh4LCBnb3QgVFNOPSU4Ljh4
LCBTSUQ9JTQuNHgsIE1JRD0lOC44eCIsCisJCQkgICAgICAgICBzdHJtLT5sYXN0X21pZF9kZWxp
dmVyZWQsIGNvbnRyb2wtPnNpbmZvX3RzbiwKKwkJCSAgICAgICAgIGNvbnRyb2wtPnNpbmZvX3N0
cmVhbSwgY29udHJvbC0+bWlkKTsKKwkJfSBlbHNlIHsKKwkJCXNucHJpbnRmKG1zZywgc2l6ZW9m
KG1zZyksICJEZWxpdmVyZWQgU1NOPSU0LjR4LCBnb3QgVFNOPSU4Ljh4LCBTSUQ9JTQuNHgsIFNT
Tj0lNC40eCIsCisJCQkgICAgICAgICAodWludDE2X3Qpc3RybS0+bGFzdF9taWRfZGVsaXZlcmVk
LAorCQkJICAgICAgICAgY29udHJvbC0+c2luZm9fdHNuLAorCQkJICAgICAgICAgY29udHJvbC0+
c2luZm9fc3RyZWFtLAorCQkJICAgICAgICAgKHVpbnQxNl90KWNvbnRyb2wtPm1pZCk7CisJCX0K
IAkJb3BfZXJyID0gc2N0cF9nZW5lcmF0ZV9jYXVzZShTQ1RQX0NBVVNFX1BST1RPQ09MX1ZJT0xB
VElPTiwgbXNnKTsKIAkJc3RjYi0+c2N0cF9lcC0+bGFzdF9hYm9ydF9jb2RlID0gU0NUUF9GUk9N
X1NDVFBfSU5EQVRBICsgU0NUUF9MT0NfMjsKIAkJc2N0cF9hYm9ydF9hbl9hc3NvY2lhdGlvbihz
dGNiLT5zY3RwX2VwLCBzdGNiLCBvcF9lcnIsIFNDVFBfU09fTk9UX0xPQ0tFRCk7CkBAIC01NDIs
MTQgKzU1MSwxMSBAQCBzY3RwX3F1ZXVlX2RhdGFfdG9fc3RyZWFtKHN0cnVjdCBzY3RwX3RjYiAq
c3RjYiwKIAkJcmV0dXJuOwogCiAJfQotCWlmICgoU0NUUF9UU05fR0UoYXNvYy0+Y3VtdWxhdGl2
ZV90c24sIGNvbnRyb2wtPnNpbmZvX3RzbikpICYmIChhc29jLT5pZGF0YV9zdXBwb3J0ZWQgPT0g
MCkpIHsKLQkJZ290byBwcm90b2NvbF9lcnJvcjsKLQl9CiAJcXVldWVfbmVlZGVkID0gMTsKIAlh
c29jLT5zaXplX29uX2FsbF9zdHJlYW1zICs9IGNvbnRyb2wtPmxlbmd0aDsKIAlzY3RwX3Vjb3Vu
dF9pbmNyKGFzb2MtPmNudF9vbl9hbGxfc3RyZWFtcyk7Ci0Jbnh0X3RvZGVsID0gc3RybS0+bGFz
dF9zZXF1ZW5jZV9kZWxpdmVyZWQgKyAxOwotCWlmIChueHRfdG9kZWwgPT0gY29udHJvbC0+c2lu
Zm9fc3NuKSB7CisJbnh0X3RvZGVsID0gc3RybS0+bGFzdF9taWRfZGVsaXZlcmVkICsgMTsKKwlp
ZiAoU0NUUF9NSURfRVEoYXNvYy0+aWRhdGFfc3VwcG9ydGVkLCBueHRfdG9kZWwsIGNvbnRyb2wt
Pm1pZCkpIHsKICNpZiBkZWZpbmVkKF9fQVBQTEVfXykgfHwgZGVmaW5lZChTQ1RQX1NPX0xPQ0tf
VEVTVElORykKIAkJc3RydWN0IHNvY2tldCAqc287CiAKQEAgLTU2OCwxMSArNTc0LDExIEBAIHNj
dHBfcXVldWVfZGF0YV90b19zdHJlYW0oc3RydWN0IHNjdHBfdGNiICpzdGNiLAogCQlpZiAoU0NU
UF9CQVNFX1NZU0NUTChzY3RwX2xvZ2dpbmdfbGV2ZWwpICYgU0NUUF9TVFJfTE9HR0lOR19FTkFC
TEUpIHsKIAkJCXNjdHBfbG9nX3N0cm1fZGVsKGNvbnRyb2wsIE5VTEwsIFNDVFBfU1RSX0xPR19G
Uk9NX0lNTUVEX0RFTCk7CiAJCX0KLQkJLyogRVkgaXQgd29udCBiZSBxdWV1ZWQgaWYgaXQgY291
bGQgYmUgZGVsaXZlcmVkIGRpcmVjdGx5Ki8KKwkJLyogRVkgaXQgd29udCBiZSBxdWV1ZWQgaWYg
aXQgY291bGQgYmUgZGVsaXZlcmVkIGRpcmVjdGx5ICovCiAJCXF1ZXVlX25lZWRlZCA9IDA7CiAJ
CWFzb2MtPnNpemVfb25fYWxsX3N0cmVhbXMgLT0gY29udHJvbC0+bGVuZ3RoOwogCQlzY3RwX3Vj
b3VudF9kZWNyKGFzb2MtPmNudF9vbl9hbGxfc3RyZWFtcyk7Ci0JCXN0cm0tPmxhc3Rfc2VxdWVu
Y2VfZGVsaXZlcmVkKys7CisJCXN0cm0tPmxhc3RfbWlkX2RlbGl2ZXJlZCsrOwogCQlzY3RwX21h
cmtfbm9uX3Jldm9rYWJsZShhc29jLCBjb250cm9sLT5zaW5mb190c24pOwogCQlzY3RwX2FkZF90
b19yZWFkcShzdGNiLT5zY3RwX2VwLCBzdGNiLAogCQkgICAgICAgICAgICAgICAgICBjb250cm9s
LApAQCAtNTgwLDggKzU4Niw4IEBAIHNjdHBfcXVldWVfZGF0YV90b19zdHJlYW0oc3RydWN0IHNj
dHBfdGNiICpzdGNiLAogCQkgICAgICAgICAgICAgICAgICBTQ1RQX1JFQURfTE9DS19OT1RfSEVM
RCwgU0NUUF9TT19MT0NLRUQpOwogCQlUQUlMUV9GT1JFQUNIX1NBRkUoY29udHJvbCwgJnN0cm0t
PmlucXVldWUsIG5leHRfaW5zdHJtLCBhdCkgewogCQkJLyogYWxsIGRlbGl2ZXJlZCAqLwotCQkJ
bnh0X3RvZGVsID0gc3RybS0+bGFzdF9zZXF1ZW5jZV9kZWxpdmVyZWQgKyAxOwotCQkJaWYgKChu
eHRfdG9kZWwgPT0gY29udHJvbC0+c2luZm9fc3NuKSAmJgorCQkJbnh0X3RvZGVsID0gc3RybS0+
bGFzdF9taWRfZGVsaXZlcmVkICsgMTsKKwkJCWlmIChTQ1RQX01JRF9FUShhc29jLT5pZGF0YV9z
dXBwb3J0ZWQsIG54dF90b2RlbCwgY29udHJvbC0+bWlkKSAmJgogCQkJICAgICgoKGNvbnRyb2wt
PnNpbmZvX2ZsYWdzID4+IDgpICYgU0NUUF9EQVRBX05PVF9GUkFHKSA9PSBTQ1RQX0RBVEFfTk9U
X0ZSQUcpKSB7CiAJCQkJYXNvYy0+c2l6ZV9vbl9hbGxfc3RyZWFtcyAtPSBjb250cm9sLT5sZW5n
dGg7CiAJCQkJc2N0cF91Y291bnRfZGVjcihhc29jLT5jbnRfb25fYWxsX3N0cmVhbXMpOwpAQCAt
NTk0LDcgKzYwMCw3IEBAIHNjdHBfcXVldWVfZGF0YV90b19zdHJlYW0oc3RydWN0IHNjdHBfdGNi
ICpzdGNiLAogI2VuZGlmCiAJCQkJfQogCQkJCWNvbnRyb2wtPm9uX3N0cm1fcSA9IDA7Ci0JCQkJ
c3RybS0+bGFzdF9zZXF1ZW5jZV9kZWxpdmVyZWQrKzsKKwkJCQlzdHJtLT5sYXN0X21pZF9kZWxp
dmVyZWQrKzsKIAkJCQkvKgogCQkJCSAqIFdlIGlnbm9yZSB0aGUgcmV0dXJuIG9mIGRlbGl2ZXJf
ZGF0YSBoZXJlCiAJCQkJICogc2luY2Ugd2UgYWx3YXlzIGNhbiBob2xkIHRoZSBjaHVuayBvbiB0
aGUKQEAgLTYxMiw3ICs2MTgsNyBAQCBzY3RwX3F1ZXVlX2RhdGFfdG9fc3RyZWFtKHN0cnVjdCBz
Y3RwX3RjYiAqc3RjYiwKIAkJCQkgICAgICAgICAgICAgICAgICBTQ1RQX1JFQURfTE9DS19OT1Rf
SEVMRCwKIAkJCQkgICAgICAgICAgICAgICAgICBTQ1RQX1NPX0xPQ0tFRCk7CiAJCQkJY29udGlu
dWU7Ci0JCQl9IGVsc2UgaWYgKG54dF90b2RlbCA9PSBjb250cm9sLT5zaW5mb19zc24pIHsKKwkJ
CX0gZWxzZSBpZiAoU0NUUF9NSURfRVEoYXNvYy0+aWRhdGFfc3VwcG9ydGVkLCBueHRfdG9kZWws
IGNvbnRyb2wtPm1pZCkpIHsKIAkJCQkqbmVlZF9yZWFzbSA9IDE7CiAJCQl9CiAJCQlicmVhazsK
QEAgLTYyOCw4ICs2MzQsOCBAQCBzY3RwX3F1ZXVlX2RhdGFfdG9fc3RyZWFtKHN0cnVjdCBzY3Rw
X3RjYiAqc3RjYiwKIAkJICovCiAJCWlmIChzY3RwX3BsYWNlX2NvbnRyb2xfaW5fc3RyZWFtKHN0
cm0sIGFzb2MsIGNvbnRyb2wpKSB7CiAJCQlzbnByaW50Zihtc2csIHNpemVvZihtc2cpLAotCQkJ
CSAiUXVldWUgdG8gc3RyIG1zZ19pZDogJXUgZHVwbGljYXRlIiwKLQkJCQkgY29udHJvbC0+bXNn
X2lkKTsKKwkJCQkgIlF1ZXVlIHRvIHN0ciBNSUQ6ICV1IGR1cGxpY2F0ZSIsCisJCQkJIGNvbnRy
b2wtPm1pZCk7CiAJCQlzY3RwX2NsZWFuX3VwX2NvbnRyb2woc3RjYiwgY29udHJvbCk7CiAJCQlv
cF9lcnIgPSBzY3RwX2dlbmVyYXRlX2NhdXNlKFNDVFBfQ0FVU0VfUFJPVE9DT0xfVklPTEFUSU9O
LCBtc2cpOwogCQkJc3RjYi0+c2N0cF9lcC0+bGFzdF9hYm9ydF9jb2RlID0gU0NUUF9GUk9NX1ND
VFBfSU5EQVRBICsgU0NUUF9MT0NfMzsKQEAgLTc0MCwxMCArNzQ2LDEwIEBAIHNjdHBfYnVpbGRf
cmVhZHFfZW50cnlfZnJvbV9jdGwoc3RydWN0IHNjdHBfcXVldWVkX3RvX3JlYWQgKm5jLCBzdHJ1
Y3Qgc2N0cF9xdWV1CiB7CiAJbWVtc2V0KG5jLCAwLCBzaXplb2Yoc3RydWN0IHNjdHBfcXVldWVk
X3RvX3JlYWQpKTsKIAluYy0+c2luZm9fc3RyZWFtID0gY29udHJvbC0+c2luZm9fc3RyZWFtOwot
CW5jLT5zaW5mb19zc24gPSBjb250cm9sLT5zaW5mb19zc247CisJbmMtPm1pZCA9IGNvbnRyb2wt
Pm1pZDsKIAlUQUlMUV9JTklUKCZuYy0+cmVhc20pOwogCW5jLT50b3BfZnNuID0gY29udHJvbC0+
dG9wX2ZzbjsKLQluYy0+bXNnX2lkID0gY29udHJvbC0+bXNnX2lkOworCW5jLT5taWQgPSBjb250
cm9sLT5taWQ7CiAJbmMtPnNpbmZvX2ZsYWdzID0gY29udHJvbC0+c2luZm9fZmxhZ3M7CiAJbmMt
PnNpbmZvX3BwaWQgPSBjb250cm9sLT5zaW5mb19wcGlkOwogCW5jLT5zaW5mb19jb250ZXh0ID0g
Y29udHJvbC0+c2luZm9fY29udGV4dDsKQEAgLTc4MSw3ICs3ODcsNyBAQCBzY3RwX2hhbmRsZV9v
bGRfdW5vcmRlcmVkX2RhdGEoc3RydWN0IHNjdHBfdGNiICpzdGNiLAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGludCBpbnBfcmVhZF9sb2NrX2hlbGQpCiB7CiAJLyogU3BlY2lhbCBo
YW5kbGluZyBmb3IgdGhlIG9sZCB1bi1vcmRlcmVkIGRhdGEgY2h1bmsuCi0JICogQWxsIHRoZSBj
aHVua3MvVFNOJ3MgZ28gdG8gbXNnX2lkIDAuIFNvCisJICogQWxsIHRoZSBjaHVua3MvVFNOJ3Mg
Z28gdG8gbWlkIDAuIFNvCiAJICogd2UgaGF2ZSB0byBkbyB0aGUgb2xkIHN0eWxlIHdhdGNoaW5n
IHRvIHNlZQogCSAqIGlmIHdlIGhhdmUgaXQgYWxsLiBJZiB5b3UgcmV0dXJuIG9uZSwgbm8gb3Ro
ZXIKIAkgKiBjb250cm9sIGVudHJpZXMgb24gdGhlIHVuLW9yZGVyZWQgcXVldWUgd2lsbApAQCAt
ODA0LDcgKzgxMCw3IEBAIHJlc3RhcnQ6CiAJZnNuID0gY29udHJvbC0+ZnNuX2luY2x1ZGVkICsg
MTsKIAkvKiBOb3cgd2hhdCBjYW4gd2UgYWRkPyAqLwogCVRBSUxRX0ZPUkVBQ0hfU0FGRShjaGss
ICZjb250cm9sLT5yZWFzbSwgc2N0cF9uZXh0LCBsY2hrKSB7Ci0JCWlmIChjaGstPnJlYy5kYXRh
LmZzbl9udW0gPT0gZnNuKSB7CisJCWlmIChjaGstPnJlYy5kYXRhLmZzbiA9PSBmc24pIHsKIAkJ
CS8qIE9rIGxldHMgYWRkIGl0ICovCiAJCQlzY3RwX2FsbG9jX2FfcmVhZHEoc3RjYiwgbmMpOwog
CQkJaWYgKG5jID09IE5VTEwpIHsKQEAgLTgyNywxMiArODMzLDE0IEBAIHJlc3RhcnQ6CiAJCQkJ
CXRjaGsgPSBUQUlMUV9GSVJTVCgmY29udHJvbC0+cmVhc20pOwogCQkJCQlpZiAodGNoay0+cmVj
LmRhdGEucmN2X2ZsYWdzICYgU0NUUF9EQVRBX0ZJUlNUX0ZSQUcpIHsKIAkJCQkJCVRBSUxRX1JF
TU9WRSgmY29udHJvbC0+cmVhc20sIHRjaGssIHNjdHBfbmV4dCk7CisJCQkJCQlhc29jLT5zaXpl
X29uX3JlYXNtX3F1ZXVlIC09IHRjaGstPnNlbmRfc2l6ZTsKKwkJCQkJCXNjdHBfdWNvdW50X2Rl
Y3IoYXNvYy0+Y250X29uX3JlYXNtX3F1ZXVlKTsKIAkJCQkJCW5jLT5maXJzdF9mcmFnX3NlZW4g
PSAxOwotCQkJCQkJbmMtPmZzbl9pbmNsdWRlZCA9IHRjaGstPnJlYy5kYXRhLmZzbl9udW07CisJ
CQkJCQluYy0+ZnNuX2luY2x1ZGVkID0gdGNoay0+cmVjLmRhdGEuZnNuOwogCQkJCQkJbmMtPmRh
dGEgPSB0Y2hrLT5kYXRhOwotCQkJCQkJbmMtPnNpbmZvX3BwaWQgPSB0Y2hrLT5yZWMuZGF0YS5w
YXlsb2FkdHlwZTsKLQkJCQkJCW5jLT5zaW5mb190c24gPSB0Y2hrLT5yZWMuZGF0YS5UU05fc2Vx
OwotCQkJCQkJc2N0cF9tYXJrX25vbl9yZXZva2FibGUoYXNvYywgdGNoay0+cmVjLmRhdGEuVFNO
X3NlcSk7CisJCQkJCQluYy0+c2luZm9fcHBpZCA9IHRjaGstPnJlYy5kYXRhLnBwaWQ7CisJCQkJ
CQluYy0+c2luZm9fdHNuID0gdGNoay0+cmVjLmRhdGEudHNuOworCQkJCQkJc2N0cF9tYXJrX25v
bl9yZXZva2FibGUoYXNvYywgdGNoay0+cmVjLmRhdGEudHNuKTsKIAkJCQkJCXRjaGstPmRhdGEg
PSBOVUxMOwogCQkJCQkJc2N0cF9mcmVlX2FfY2h1bmsoc3RjYiwgdGNoaywgU0NUUF9TT19OT1Rf
TE9DS0VEKTsKIAkJCQkJCXNjdHBfc2V0dXBfdGFpbF9wb2ludGVyKG5jKTsKQEAgLTkxOSw3ICs5
MjcsNyBAQCBzY3RwX2luamVjdF9vbGRfdW5vcmRlcmVkX2RhdGEoc3RydWN0IHNjdHBfdGNiICpz
dGNiLAogCQkvKiBJdHMgdGhlIHZlcnkgZmlyc3Qgb25lLiAqLwogCQlTQ1RQREJHKFNDVFBfREVC
VUdfWFhYLAogCQkJImNodW5rIGlzIGEgZmlyc3QgZnNuOiAldSBiZWNvbWVzIGZzbl9pbmNsdWRl
ZFxuIiwKLQkJCWNoay0+cmVjLmRhdGEuZnNuX251bSk7CisJCQljaGstPnJlYy5kYXRhLmZzbik7
CiAJCWlmIChjb250cm9sLT5maXJzdF9mcmFnX3NlZW4pIHsKIAkJCS8qCiAJCQkgKiBJbiBvbGQg
dW4tb3JkZXJlZCB3ZSBjYW4gcmVhc3NlbWJseSBvbgpAQCAtOTMwLDExICs5MzgsMTEgQEAgc2N0
cF9pbmplY3Rfb2xkX3Vub3JkZXJlZF9kYXRhKHN0cnVjdCBzY3RwX3RjYiAqc3RjYiwKIAkJCXN0
cnVjdCBtYnVmICp0ZGF0YTsKIAkJCXVpbnQzMl90IHRtcDsKIAotCQkJaWYgKFNDVFBfVFNOX0dU
KGNoay0+cmVjLmRhdGEuZnNuX251bSwgY29udHJvbC0+ZnNuX2luY2x1ZGVkKSkgeworCQkJaWYg
KFNDVFBfVFNOX0dUKGNoay0+cmVjLmRhdGEuZnNuLCBjb250cm9sLT5mc25faW5jbHVkZWQpKSB7
CiAJCQkJLyogRWFzeSB3YXkgdGhlIHN0YXJ0IG9mIGEgbmV3IGd1eSBiZXlvbmQgdGhlIGxvd2Vz
dCAqLwogCQkJCWdvdG8gcGxhY2VfY2h1bms7CiAJCQl9Ci0JCQlpZiAoKGNoay0+cmVjLmRhdGEu
ZnNuX251bSA9PSBjb250cm9sLT5mc25faW5jbHVkZWQpIHx8CisJCQlpZiAoKGNoay0+cmVjLmRh
dGEuZnNuID09IGNvbnRyb2wtPmZzbl9pbmNsdWRlZCkgfHwKIAkJCSAgICAoY29udHJvbC0+cGRh
cGlfc3RhcnRlZCkpIHsKIAkJCQkvKiAKIAkJCQkgKiBPayB0aGlzIHNob3VsZCBub3QgaGFwcGVu
LCBpZiBpdCBkb2VzCkBAIC05NjYsMjUgKzk3NCwyNiBAQCBzY3RwX2luamVjdF9vbGRfdW5vcmRl
cmVkX2RhdGEoc3RydWN0IHNjdHBfdGNiICpzdGNiLAogCQkJc2N0cF9zZXR1cF90YWlsX3BvaW50
ZXIoY29udHJvbCk7CiAJCQkvKiBGaXggdGhlIEZTTiBpbmNsdWRlZCAqLwogCQkJdG1wID0gY29u
dHJvbC0+ZnNuX2luY2x1ZGVkOwotCQkJY29udHJvbC0+ZnNuX2luY2x1ZGVkID0gY2hrLT5yZWMu
ZGF0YS5mc25fbnVtOwotCQkJY2hrLT5yZWMuZGF0YS5mc25fbnVtID0gdG1wOworCQkJY29udHJv
bC0+ZnNuX2luY2x1ZGVkID0gY2hrLT5yZWMuZGF0YS5mc247CisJCQljaGstPnJlYy5kYXRhLmZz
biA9IHRtcDsKIAkJCS8qIEZpeCB0aGUgVFNOIGluY2x1ZGVkICovCiAJCQl0bXAgPSBjb250cm9s
LT5zaW5mb190c247Ci0JCQljb250cm9sLT5zaW5mb190c24gPSBjaGstPnJlYy5kYXRhLlRTTl9z
ZXE7Ci0JCQljaGstPnJlYy5kYXRhLlRTTl9zZXEgPSB0bXA7CisJCQljb250cm9sLT5zaW5mb190
c24gPSBjaGstPnJlYy5kYXRhLnRzbjsKKwkJCWNoay0+cmVjLmRhdGEudHNuID0gdG1wOwogCQkJ
LyogRml4IHRoZSBQUElEIGluY2x1ZGVkICovCiAJCQl0bXAgPSBjb250cm9sLT5zaW5mb19wcGlk
OwotCQkJY29udHJvbC0+c2luZm9fcHBpZCA9IGNoay0+cmVjLmRhdGEucGF5bG9hZHR5cGU7Ci0J
CQljaGstPnJlYy5kYXRhLnBheWxvYWR0eXBlID0gdG1wOworCQkJY29udHJvbC0+c2luZm9fcHBp
ZCA9IGNoay0+cmVjLmRhdGEucHBpZDsKKwkJCWNoay0+cmVjLmRhdGEucHBpZCA9IHRtcDsKIAkJ
CS8qIEZpeCB0YWlsIHBvaW50ZXIgKi8KIAkJCWdvdG8gcGxhY2VfY2h1bms7CiAJCX0KIAkJY29u
dHJvbC0+Zmlyc3RfZnJhZ19zZWVuID0gMTsKLQkJY29udHJvbC0+dG9wX2ZzbiA9IGNvbnRyb2wt
PmZzbl9pbmNsdWRlZCA9IGNoay0+cmVjLmRhdGEuZnNuX251bTsKLQkJY29udHJvbC0+c2luZm9f
dHNuID0gY2hrLT5yZWMuZGF0YS5UU05fc2VxOwotCQljb250cm9sLT5zaW5mb19wcGlkID0gY2hr
LT5yZWMuZGF0YS5wYXlsb2FkdHlwZTsKKwkJY29udHJvbC0+ZnNuX2luY2x1ZGVkID0gY2hrLT5y
ZWMuZGF0YS5mc247CisJCWNvbnRyb2wtPnRvcF9mc24gPSBjaGstPnJlYy5kYXRhLmZzbjsKKwkJ
Y29udHJvbC0+c2luZm9fdHNuID0gY2hrLT5yZWMuZGF0YS50c247CisJCWNvbnRyb2wtPnNpbmZv
X3BwaWQgPSBjaGstPnJlYy5kYXRhLnBwaWQ7CiAJCWNvbnRyb2wtPmRhdGEgPSBjaGstPmRhdGE7
Ci0JCXNjdHBfbWFya19ub25fcmV2b2thYmxlKGFzb2MsIGNoay0+cmVjLmRhdGEuVFNOX3NlcSk7
CisJCXNjdHBfbWFya19ub25fcmV2b2thYmxlKGFzb2MsIGNoay0+cmVjLmRhdGEudHNuKTsKIAkJ
Y2hrLT5kYXRhID0gTlVMTDsKIAkJc2N0cF9mcmVlX2FfY2h1bmsoc3RjYiwgY2hrLCBTQ1RQX1NP
X05PVF9MT0NLRUQpOwogCQlzY3RwX3NldHVwX3RhaWxfcG9pbnRlcihjb250cm9sKTsKQEAgLTk5
Myw3ICsxMDAyLDcgQEAgc2N0cF9pbmplY3Rfb2xkX3Vub3JkZXJlZF9kYXRhKHN0cnVjdCBzY3Rw
X3RjYiAqc3RjYiwKIHBsYWNlX2NodW5rOgogCWluc2VydGVkID0gMDsKIAlUQUlMUV9GT1JFQUNI
KGF0LCAmY29udHJvbC0+cmVhc20sIHNjdHBfbmV4dCkgewotCQlpZiAoU0NUUF9UU05fR1QoYXQt
PnJlYy5kYXRhLmZzbl9udW0sIGNoay0+cmVjLmRhdGEuZnNuX251bSkpIHsKKwkJaWYgKFNDVFBf
VFNOX0dUKGF0LT5yZWMuZGF0YS5mc24sIGNoay0+cmVjLmRhdGEuZnNuKSkgewogCQkJLyoKIAkJ
CSAqIFRoaXMgb25lIGluIHF1ZXVlIGlzIGJpZ2dlciB0aGFuIHRoZSBuZXcgb25lLCBpbnNlcnQK
IAkJCSAqIHRoZSBuZXcgb25lIGJlZm9yZSBhdC4KQEAgLTEwMDMsNyArMTAxMiw3IEBAIHBsYWNl
X2NodW5rOgogCQkJaW5zZXJ0ZWQgPSAxOwogCQkJVEFJTFFfSU5TRVJUX0JFRk9SRShhdCwgY2hr
LCBzY3RwX25leHQpOwogCQkJYnJlYWs7Ci0JCX0gZWxzZSBpZiAoYXQtPnJlYy5kYXRhLmZzbl9u
dW0gPT0gY2hrLT5yZWMuZGF0YS5mc25fbnVtKSB7CisJCX0gZWxzZSBpZiAoYXQtPnJlYy5kYXRh
LmZzbiA9PSBjaGstPnJlYy5kYXRhLmZzbikgewogCQkJLyogCiAJCQkgKiBUaGV5IHNlbnQgYSBk
dXBsaWNhdGUgZnNuIG51bWJlci4gVGhpcwogCQkJICogcmVhbGx5IHNob3VsZCBub3QgaGFwcGVu
IHNpbmNlIHRoZSBGU04gaXMKQEAgLTEwMjAsNyArMTAyOSw3IEBAIHBsYWNlX2NodW5rOgogCQkv
KiBJdHMgYXQgdGhlIGVuZCAqLwogCQlhc29jLT5zaXplX29uX3JlYXNtX3F1ZXVlICs9IGNoay0+
c2VuZF9zaXplOwogCQlzY3RwX3Vjb3VudF9pbmNyKGFzb2MtPmNudF9vbl9yZWFzbV9xdWV1ZSk7
Ci0JCWNvbnRyb2wtPnRvcF9mc24gPSBjaGstPnJlYy5kYXRhLmZzbl9udW07CisJCWNvbnRyb2wt
PnRvcF9mc24gPSBjaGstPnJlYy5kYXRhLmZzbjsKIAkJVEFJTFFfSU5TRVJUX1RBSUwoJmNvbnRy
b2wtPnJlYXNtLCBjaGssIHNjdHBfbmV4dCk7CiAJfQogfQpAQCAtMTAzNyw3ICsxMDQ2LDcgQEAg
c2N0cF9kZWxpdmVyX3JlYXNtX2NoZWNrKHN0cnVjdCBzY3RwX3RjYiAqc3RjYiwgc3RydWN0IHNj
dHBfYXNzb2NpYXRpb24gKmFzb2MsCiAJICogc28gcGxhY2luZyBpZiB3ZSBoYXZlIGhpdCB0aGUg
ZW5kLCB0aGVuCiAJICogd2UgbmVlZCB0byByZW1vdmUgdGhlbSBmcm9tIHRoZSBzdHJlYW0ncyBx
dWV1ZS4KIAkgKi8KLQlzdHJ1Y3Qgc2N0cF9xdWV1ZWRfdG9fcmVhZCAqY29udHJvbCwgKm5jdGw9
TlVMTDsKKwlzdHJ1Y3Qgc2N0cF9xdWV1ZWRfdG9fcmVhZCAqY29udHJvbCwgKm5jdGwgPSBOVUxM
OwogCXVpbnQzMl90IG5leHRfdG9fZGVsOwogCXVpbnQzMl90IHBkX3BvaW50OwogCWludCByZXQg
PSAwOwpAQCAtMTA1MCw3ICsxMDU5LDcgQEAgc2N0cF9kZWxpdmVyX3JlYXNtX2NoZWNrKHN0cnVj
dCBzY3RwX3RjYiAqc3RjYiwgc3RydWN0IHNjdHBfYXNzb2NpYXRpb24gKmFzb2MsCiAJfQogCWNv
bnRyb2wgPSBUQUlMUV9GSVJTVCgmc3RybS0+dW5vX2lucXVldWUpOwogCi0JaWYgKChjb250cm9s
KSAmJgorCWlmICgoY29udHJvbCAhPSBOVUxMKSAmJgogCSAgICAoYXNvYy0+aWRhdGFfc3VwcG9y
dGVkID09IDApKSB7CiAJCS8qIFNwZWNpYWwgaGFuZGxpbmcgbmVlZGVkIGZvciAib2xkIiBkYXRh
IGZvcm1hdCAqLwogCQlpZiAoc2N0cF9oYW5kbGVfb2xkX3Vub3JkZXJlZF9kYXRhKHN0Y2IsIGFz
b2MsIHN0cm0sIGNvbnRyb2wsIHBkX3BvaW50LCBpbnBfcmVhZF9sb2NrX2hlbGQpKSB7CkBAIC0x
MDYzLDcgKzEwNzIsNyBAQCBzY3RwX2RlbGl2ZXJfcmVhc21fY2hlY2soc3RydWN0IHNjdHBfdGNi
ICpzdGNiLCBzdHJ1Y3Qgc2N0cF9hc3NvY2lhdGlvbiAqYXNvYywKIAl9CiAJd2hpbGUgKGNvbnRy
b2wpIHsKIAkJU0NUUERCRyhTQ1RQX0RFQlVHX1hYWCwgIkxvb2tpbmcgYXQgY29udHJvbDogJXAg
ZSglZCkgc3NuOiAldSB0b3BfZnNuOiAldSBpbmNfZnNuOiAldSAtdW9cbiIsCi0JCQljb250cm9s
LCBjb250cm9sLT5lbmRfYWRkZWQsIGNvbnRyb2wtPnNpbmZvX3NzbiwgY29udHJvbC0+dG9wX2Zz
biwgY29udHJvbC0+ZnNuX2luY2x1ZGVkKTsKKwkJCWNvbnRyb2wsIGNvbnRyb2wtPmVuZF9hZGRl
ZCwgY29udHJvbC0+bWlkLCBjb250cm9sLT50b3BfZnNuLCBjb250cm9sLT5mc25faW5jbHVkZWQp
OwogCQluY3RsID0gVEFJTFFfTkVYVChjb250cm9sLCBuZXh0X2luc3RybSk7CiAJCWlmIChjb250
cm9sLT5lbmRfYWRkZWQpIHsKIAkJCS8qIFdlIGp1c3QgcHV0IHRoZSBsYXN0IGJpdCBvbiAqLwpA
QCAtMTEwOCw3ICsxMTE3LDcgQEAgZG9uZV91bjoKIAlpZiAoY29udHJvbCA9PSBOVUxMKSB7CiAJ
CXJldHVybiAocmV0KTsKIAl9Ci0JaWYgKHN0cm0tPmxhc3Rfc2VxdWVuY2VfZGVsaXZlcmVkID09
IGNvbnRyb2wtPnNpbmZvX3NzbikgeworCWlmIChTQ1RQX01JRF9FUShhc29jLT5pZGF0YV9zdXBw
b3J0ZWQsIHN0cm0tPmxhc3RfbWlkX2RlbGl2ZXJlZCwgY29udHJvbC0+bWlkKSkgewogCQkvKiBP
ayB0aGUgZ3V5IGF0IHRoZSB0b3Agd2FzIGJlaW5nIHBhcnRpYWxseSBkZWxpdmVyZWQKIAkJICog
Y29tcGxldGVkLCBzbyB3ZSByZW1vdmUgaXQuIE5vdGUKIAkJICogdGhlIHBkX2FwaSBmbGFnIHdh
cyB0YWtlbiBvZmYgd2hlbiB0aGUKQEAgLTExMTcsOSArMTEyNiw5IEBAIGRvbmVfdW46CiAJCW5j
dGwgPSBUQUlMUV9ORVhUKGNvbnRyb2wsIG5leHRfaW5zdHJtKTsKIAkJU0NUUERCRyhTQ1RQX0RF
QlVHX1hYWCwKIAkJCSJMb29raW5nIGF0IGNvbnRyb2w6ICVwIGUoJWQpIHNzbjogJXUgdG9wX2Zz
bjogJXUgaW5jX2ZzbjogJXUgKGxhc3RkZWw6ICV1KS0gb1xuIiwKLQkJCWNvbnRyb2wsIGNvbnRy
b2wtPmVuZF9hZGRlZCwgY29udHJvbC0+c2luZm9fc3NuLAorCQkJY29udHJvbCwgY29udHJvbC0+
ZW5kX2FkZGVkLCBjb250cm9sLT5taWQsCiAJCQljb250cm9sLT50b3BfZnNuLCBjb250cm9sLT5m
c25faW5jbHVkZWQsCi0JCQlzdHJtLT5sYXN0X3NlcXVlbmNlX2RlbGl2ZXJlZCk7CisJCQlzdHJt
LT5sYXN0X21pZF9kZWxpdmVyZWQpOwogCQlpZiAoY29udHJvbC0+ZW5kX2FkZGVkKSB7CiAJCQlp
ZiAoY29udHJvbC0+b25fc3RybV9xKSB7CiAjaWZkZWYgSU5WQVJJQU5UUwpAQCAtMTE1MCwxNCAr
MTE1OSwxNCBAQCBkb25lX3VuOgogCQlyZXR1cm4gKDApOwogCX0KIGRlbGl2ZXJfbW9yZToKLQlu
ZXh0X3RvX2RlbCA9IHN0cm0tPmxhc3Rfc2VxdWVuY2VfZGVsaXZlcmVkICsgMTsKKwluZXh0X3Rv
X2RlbCA9IHN0cm0tPmxhc3RfbWlkX2RlbGl2ZXJlZCArIDE7CiAJaWYgKGNvbnRyb2wpIHsKIAkJ
U0NUUERCRyhTQ1RQX0RFQlVHX1hYWCwKIAkJCSJMb29raW5nIGF0IGNvbnRyb2w6ICVwIGUoJWQp
IHNzbjogJXUgdG9wX2ZzbjogJXUgaW5jX2ZzbjogJXUgKG54dGRlbDogJXUpLSBvXG4iLAotCQkJ
Y29udHJvbCwgY29udHJvbC0+ZW5kX2FkZGVkLCBjb250cm9sLT5zaW5mb19zc24sIGNvbnRyb2wt
PnRvcF9mc24sIGNvbnRyb2wtPmZzbl9pbmNsdWRlZCwKKwkJCWNvbnRyb2wsIGNvbnRyb2wtPmVu
ZF9hZGRlZCwgY29udHJvbC0+bWlkLCBjb250cm9sLT50b3BfZnNuLCBjb250cm9sLT5mc25faW5j
bHVkZWQsCiAJCQluZXh0X3RvX2RlbCk7CiAJCW5jdGwgPSBUQUlMUV9ORVhUKGNvbnRyb2wsIG5l
eHRfaW5zdHJtKTsKLQkJaWYgKChjb250cm9sLT5zaW5mb19zc24gPT0gbmV4dF90b19kZWwpICYm
CisJCWlmIChTQ1RQX01JRF9FUShhc29jLT5pZGF0YV9zdXBwb3J0ZWQsIGNvbnRyb2wtPm1pZCwg
bmV4dF90b19kZWwpICYmCiAJCSAgICAoY29udHJvbC0+Zmlyc3RfZnJhZ19zZWVuKSkgewogCQkJ
aW50IGRvbmU7CiAKQEAgLTExOTQsNyArMTIwMyw3IEBAIGRlbGl2ZXJfbW9yZToKIAkJCQkJCSAg
JnN0Y2ItPnNjdHBfc29ja2V0LT5zb19yY3YsIGNvbnRyb2wtPmVuZF9hZGRlZCwKIAkJCQkJCSAg
aW5wX3JlYWRfbG9ja19oZWxkLCBTQ1RQX1NPX05PVF9MT0NLRUQpOwogCQkJfQotCQkJc3RybS0+
bGFzdF9zZXF1ZW5jZV9kZWxpdmVyZWQgPSBuZXh0X3RvX2RlbDsKKwkJCXN0cm0tPmxhc3RfbWlk
X2RlbGl2ZXJlZCA9IG5leHRfdG9fZGVsOwogCQkJaWYgKGRvbmUpIHsKIAkJCQljb250cm9sID0g
bmN0bDsKIAkJCQlnb3RvIGRlbGl2ZXJfbW9yZTsKQEAgLTEyMzcsMTMgKzEyNDYsMTUgQEAgc2N0
cF9hZGRfY2hrX3RvX2NvbnRyb2woc3RydWN0IHNjdHBfcXVldWVkX3RvX3JlYWQgKmNvbnRyb2ws
CiAJfSBlbHNlIHsKIAkJc2N0cF9hZGRfdG9fdGFpbF9wb2ludGVyKGNvbnRyb2wsIGNoay0+ZGF0
YSk7CiAJfQotCWNvbnRyb2wtPmZzbl9pbmNsdWRlZCA9IGNoay0+cmVjLmRhdGEuZnNuX251bTsK
Kwljb250cm9sLT5mc25faW5jbHVkZWQgPSBjaGstPnJlYy5kYXRhLmZzbjsKIAlhc29jLT5zaXpl
X29uX3JlYXNtX3F1ZXVlIC09IGNoay0+c2VuZF9zaXplOwogCXNjdHBfdWNvdW50X2RlY3IoYXNv
Yy0+Y250X29uX3JlYXNtX3F1ZXVlKTsKLQlzY3RwX21hcmtfbm9uX3Jldm9rYWJsZShhc29jLCBj
aGstPnJlYy5kYXRhLlRTTl9zZXEpOworCXNjdHBfbWFya19ub25fcmV2b2thYmxlKGFzb2MsIGNo
ay0+cmVjLmRhdGEudHNuKTsKIAljaGstPmRhdGEgPSBOVUxMOwogCWlmIChjaGstPnJlYy5kYXRh
LnJjdl9mbGFncyAmIFNDVFBfREFUQV9GSVJTVF9GUkFHKSB7CiAJCWNvbnRyb2wtPmZpcnN0X2Zy
YWdfc2VlbiA9IDE7CisJCWNvbnRyb2wtPnNpbmZvX3RzbiA9IGNoay0+cmVjLmRhdGEudHNuOwor
CQljb250cm9sLT5zaW5mb19wcGlkID0gY2hrLT5yZWMuZGF0YS5wcGlkOwogCX0KIAlpZiAoY2hr
LT5yZWMuZGF0YS5yY3ZfZmxhZ3MgJiBTQ1RQX0RBVEFfTEFTVF9GUkFHKSB7CiAJCS8qIEl0cyBj
b21wbGV0ZSAqLwpAQCAtMTI4NCw3ICsxMjk1LDYgQEAgc2N0cF9hZGRfY2hrX3RvX2NvbnRyb2wo
c3RydWN0IHNjdHBfcXVldWVkX3RvX3JlYWQgKmNvbnRyb2wsCiAgKi8KIHN0YXRpYyB2b2lkCiBz
Y3RwX3F1ZXVlX2RhdGFfZm9yX3JlYXNtKHN0cnVjdCBzY3RwX3RjYiAqc3RjYiwgc3RydWN0IHNj
dHBfYXNzb2NpYXRpb24gKmFzb2MsCi0JCQkgIHN0cnVjdCBzY3RwX3N0cmVhbV9pbiAqc3RybSwK
IAkJCSAgc3RydWN0IHNjdHBfcXVldWVkX3RvX3JlYWQgKmNvbnRyb2wsCiAJCQkgIHN0cnVjdCBz
Y3RwX3RtaXRfY2h1bmsgKmNoaywKIAkJCSAgaW50IGNyZWF0ZWRfY29udHJvbCwKQEAgLTEyOTIs
OCArMTMwMiwxMCBAQCBzY3RwX3F1ZXVlX2RhdGFfZm9yX3JlYXNtKHN0cnVjdCBzY3RwX3RjYiAq
c3RjYiwgc3RydWN0IHNjdHBfYXNzb2NpYXRpb24gKmFzb2MsCiB7CiAJdWludDMyX3QgbmV4dF9m
c247CiAJc3RydWN0IHNjdHBfdG1pdF9jaHVuayAqYXQsICpuYXQ7CisJc3RydWN0IHNjdHBfc3Ry
ZWFtX2luICpzdHJtOwogCWludCBkb193YWtldXAsIHVub3JkZXJlZDsKIAorCXN0cm0gPSAmYXNv
Yy0+c3RybWluW2NvbnRyb2wtPnNpbmZvX3N0cmVhbV07CiAJLyoKIAkgKiBGb3Igb2xkIHVuLW9y
ZGVyZWQgZGF0YSBjaHVua3MuCiAJICovCkBAIC0xMzQxLDcgKzEzNTMsNyBAQCBzY3RwX3F1ZXVl
X2RhdGFfZm9yX3JlYXNtKHN0cnVjdCBzY3RwX3RjYiAqc3RjYiwgc3RydWN0IHNjdHBfYXNzb2Np
YXRpb24gKmFzb2MsCiAJCS8qIEl0cyB0aGUgdmVyeSBmaXJzdCBvbmUuICovCiAJCVNDVFBEQkco
U0NUUF9ERUJVR19YWFgsCiAJCQkiY2h1bmsgaXMgYSBmaXJzdCBmc246ICV1IGJlY29tZXMgZnNu
X2luY2x1ZGVkXG4iLAotCQkJY2hrLT5yZWMuZGF0YS5mc25fbnVtKTsKKwkJCWNoay0+cmVjLmRh
dGEuZnNuKTsKIAkJaWYgKGNvbnRyb2wtPmZpcnN0X2ZyYWdfc2VlbikgewogCQkJLyoKIAkJCSAq
IEVycm9yIG9uIHNlbmRlcnMgcGFydCwgdGhleSBlaXRoZXIKQEAgLTEzNTUsOSArMTM2NywxMSBA
QCBzY3RwX3F1ZXVlX2RhdGFfZm9yX3JlYXNtKHN0cnVjdCBzY3RwX3RjYiAqc3RjYiwgc3RydWN0
IHNjdHBfYXNzb2NpYXRpb24gKmFzb2MsCiAJCQlyZXR1cm47CiAJCX0KIAkJY29udHJvbC0+Zmly
c3RfZnJhZ19zZWVuID0gMTsKLQkJY29udHJvbC0+ZnNuX2luY2x1ZGVkID0gY2hrLT5yZWMuZGF0
YS5mc25fbnVtOworCQljb250cm9sLT5zaW5mb19wcGlkID0gY2hrLT5yZWMuZGF0YS5wcGlkOwor
CQljb250cm9sLT5zaW5mb190c24gPSBjaGstPnJlYy5kYXRhLnRzbjsKKwkJY29udHJvbC0+ZnNu
X2luY2x1ZGVkID0gY2hrLT5yZWMuZGF0YS5mc247CiAJCWNvbnRyb2wtPmRhdGEgPSBjaGstPmRh
dGE7Ci0JCXNjdHBfbWFya19ub25fcmV2b2thYmxlKGFzb2MsIGNoay0+cmVjLmRhdGEuVFNOX3Nl
cSk7CisJCXNjdHBfbWFya19ub25fcmV2b2thYmxlKGFzb2MsIGNoay0+cmVjLmRhdGEudHNuKTsK
IAkJY2hrLT5kYXRhID0gTlVMTDsKIAkJc2N0cF9mcmVlX2FfY2h1bmsoc3RjYiwgY2hrLCBTQ1RQ
X1NPX05PVF9MT0NLRUQpOwogCQlzY3RwX3NldHVwX3RhaWxfcG9pbnRlcihjb250cm9sKTsKQEAg
LTEzNjYsMTYgKzEzODAsMTYgQEAgc2N0cF9xdWV1ZV9kYXRhX2Zvcl9yZWFzbShzdHJ1Y3Qgc2N0
cF90Y2IgKnN0Y2IsIHN0cnVjdCBzY3RwX2Fzc29jaWF0aW9uICphc29jLAogCQlpbnQgaW5zZXJ0
ZWQ9MDsKIAkJaWYgKGNvbnRyb2wtPmxhc3RfZnJhZ19zZWVuID09IDApIHsKIAkJCS8qIFN0aWxs
IHdpbGxpbmcgdG8gcmFpc2UgaGlnaGVzdCBGU04gc2VlbiAqLwotCQkJaWYgKFNDVFBfVFNOX0dU
KGNoay0+cmVjLmRhdGEuZnNuX251bSwgY29udHJvbC0+dG9wX2ZzbikpIHsKKwkJCWlmIChTQ1RQ
X1RTTl9HVChjaGstPnJlYy5kYXRhLmZzbiwgY29udHJvbC0+dG9wX2ZzbikpIHsKIAkJCQlTQ1RQ
REJHKFNDVFBfREVCVUdfWFhYLAogCQkJCQkiV2UgaGF2ZSBhIG5ldyB0b3BfZnNuOiAldVxuIiwK
LQkJCQkJY2hrLT5yZWMuZGF0YS5mc25fbnVtKTsKLQkJCQljb250cm9sLT50b3BfZnNuID0gY2hr
LT5yZWMuZGF0YS5mc25fbnVtOworCQkJCQljaGstPnJlYy5kYXRhLmZzbik7CisJCQkJY29udHJv
bC0+dG9wX2ZzbiA9IGNoay0+cmVjLmRhdGEuZnNuOwogCQkJfQogCQkJaWYgKGNoay0+cmVjLmRh
dGEucmN2X2ZsYWdzICYgU0NUUF9EQVRBX0xBU1RfRlJBRykgewogCQkJCVNDVFBEQkcoU0NUUF9E
RUJVR19YWFgsCiAJCQkJCSJUaGUgbGFzdCBmc24gaXMgbm93IGluIHBsYWNlIGZzbjogJXVcbiIs
Ci0JCQkJCWNoay0+cmVjLmRhdGEuZnNuX251bSk7CisJCQkJCWNoay0+cmVjLmRhdGEuZnNuKTsK
IAkJCQljb250cm9sLT5sYXN0X2ZyYWdfc2VlbiA9IDE7CiAJCQl9CiAJCQlpZiAoYXNvYy0+aWRh
dGFfc3VwcG9ydGVkIHx8IGNvbnRyb2wtPmZpcnN0X2ZyYWdfc2VlbikgewpAQCAtMTM4NSw3ICsx
Mzk5LDcgQEAgc2N0cF9xdWV1ZV9kYXRhX2Zvcl9yZWFzbShzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2Is
IHN0cnVjdCBzY3RwX2Fzc29jaWF0aW9uICphc29jLAogCQkJCSAqIHRvIHJlY2VpdmUgdGhlIGZp
cnN0IGJlZm9yZSB3ZSBrbm93IHRoZSBmaXJzdCBGU04KIAkJCQkgKiAod2hpY2ggaXMgdGhlIFRT
TikuCiAJCQkJICovCi0JCQkJaWYgKFNDVFBfVFNOX0dFKGNvbnRyb2wtPmZzbl9pbmNsdWRlZCwg
Y2hrLT5yZWMuZGF0YS5mc25fbnVtKSkgeworCQkJCWlmIChTQ1RQX1RTTl9HRShjb250cm9sLT5m
c25faW5jbHVkZWQsIGNoay0+cmVjLmRhdGEuZnNuKSkgewogCQkJCQkvKiBXZSBoYXZlIGFscmVh
ZHkgZGVsaXZlcmVkIHVwIHRvIHRoaXMgc28gaXRzIGEgZHVwICovCiAJCQkJCXNjdHBfYWJvcnRf
aW5fcmVhc20oc3RjYiwgY29udHJvbCwgY2hrLAogCQkJCQkJCSAgICBhYm9ydF9mbGFnLApAQCAt
MTM5OCw3ICsxNDEyLDcgQEAgc2N0cF9xdWV1ZV9kYXRhX2Zvcl9yZWFzbShzdHJ1Y3Qgc2N0cF90
Y2IgKnN0Y2IsIHN0cnVjdCBzY3RwX2Fzc29jaWF0aW9uICphc29jLAogCQkJCS8qIFNlY29uZCBs
YXN0PyBodWg/ICovCiAJCQkJU0NUUERCRyhTQ1RQX0RFQlVHX1hYWCwKIAkJCQkJIkR1cGxpY2F0
ZSBsYXN0IGZzbjogJXUgKHRvcDogJXUpIC0tIGFib3J0XG4iLAotCQkJCQljaGstPnJlYy5kYXRh
LmZzbl9udW0sIGNvbnRyb2wtPnRvcF9mc24pOworCQkJCQljaGstPnJlYy5kYXRhLmZzbiwgY29u
dHJvbC0+dG9wX2Zzbik7CiAJCQkJc2N0cF9hYm9ydF9pbl9yZWFzbShzdGNiLCBjb250cm9sLAog
CQkJCQkJICAgIGNoaywgYWJvcnRfZmxhZywKIAkJCQkJCSAgICBTQ1RQX0ZST01fU0NUUF9JTkRB
VEEgKyBTQ1RQX0xPQ18xMCk7CkBAIC0xNDEyLDExICsxNDI2LDExIEBAIHNjdHBfcXVldWVfZGF0
YV9mb3JfcmVhc20oc3RydWN0IHNjdHBfdGNiICpzdGNiLCBzdHJ1Y3Qgc2N0cF9hc3NvY2lhdGlv
biAqYXNvYywKIAkJCQkgKiAod2hpY2ggaXMgdGhlIFRTTikuCiAJCQkJICovCiAKLQkJCQlpZiAo
U0NUUF9UU05fR0UoY29udHJvbC0+ZnNuX2luY2x1ZGVkLCBjaGstPnJlYy5kYXRhLmZzbl9udW0p
KSB7CisJCQkJaWYgKFNDVFBfVFNOX0dFKGNvbnRyb2wtPmZzbl9pbmNsdWRlZCwgY2hrLT5yZWMu
ZGF0YS5mc24pKSB7CiAJCQkJCS8qIFdlIGhhdmUgYWxyZWFkeSBkZWxpdmVyZWQgdXAgdG8gdGhp
cyBzbyBpdHMgYSBkdXAgKi8KIAkJCQkJU0NUUERCRyhTQ1RQX0RFQlVHX1hYWCwKIAkJCQkJCSJO
ZXcgZnNuOiAldSBpcyBhbHJlYWR5IHNlZW4gaW4gaW5jbHVkZWRfZnNuOiAldSAtLSBhYm9ydFxu
IiwKLQkJCQkJCWNoay0+cmVjLmRhdGEuZnNuX251bSwgY29udHJvbC0+ZnNuX2luY2x1ZGVkKTsK
KwkJCQkJCWNoay0+cmVjLmRhdGEuZnNuLCBjb250cm9sLT5mc25faW5jbHVkZWQpOwogCQkJCQlz
Y3RwX2Fib3J0X2luX3JlYXNtKHN0Y2IsIGNvbnRyb2wsIGNoaywKIAkJCQkJCQkgICAgYWJvcnRf
ZmxhZywKIAkJCQkJCQkgICAgU0NUUF9GUk9NX1NDVFBfSU5EQVRBICsgU0NUUF9MT0NfMTEpOwpA
QCAtMTQyNCwxMCArMTQzOCwxMCBAQCBzY3RwX3F1ZXVlX2RhdGFfZm9yX3JlYXNtKHN0cnVjdCBz
Y3RwX3RjYiAqc3RjYiwgc3RydWN0IHNjdHBfYXNzb2NpYXRpb24gKmFzb2MsCiAJCQkJfQogCQkJ
fQogCQkJLyogdmFsaWRhdGUgbm90IGJleW9uZCB0b3AgRlNOIGlmIHdlIGhhdmUgc2VlbiBsYXN0
IG9uZSAqLwotCQkJaWYgKFNDVFBfVFNOX0dUKGNoay0+cmVjLmRhdGEuZnNuX251bSwgY29udHJv
bC0+dG9wX2ZzbikpIHsKKwkJCWlmIChTQ1RQX1RTTl9HVChjaGstPnJlYy5kYXRhLmZzbiwgY29u
dHJvbC0+dG9wX2ZzbikpIHsKIAkJCQlTQ1RQREJHKFNDVFBfREVCVUdfWFhYLAogCQkJCQkiTmV3
IGZzbjogJXUgaXMgYmV5b25kIG9yIGF0IHRvcF9mc246ICV1IC0tIGFib3J0XG4iLAotCQkJCQlj
aGstPnJlYy5kYXRhLmZzbl9udW0sCisJCQkJCWNoay0+cmVjLmRhdGEuZnNuLAogCQkJCQljb250
cm9sLT50b3BfZnNuKTsKIAkJCQlzY3RwX2Fib3J0X2luX3JlYXNtKHN0Y2IsIGNvbnRyb2wsIGNo
aywKIAkJCQkJCSAgICBhYm9ydF9mbGFnLApAQCAtMTQ0MiwyMiArMTQ1NiwyMiBAQCBzY3RwX3F1
ZXVlX2RhdGFfZm9yX3JlYXNtKHN0cnVjdCBzY3RwX3RjYiAqc3RjYiwgc3RydWN0IHNjdHBfYXNz
b2NpYXRpb24gKmFzb2MsCiAJCSAqLwogCQlTQ1RQREJHKFNDVFBfREVCVUdfWFhYLAogCQkJImNo
dW5rIGlzIGEgbm90IGZpcnN0IGZzbjogJXUgbmVlZHMgdG8gYmUgaW5zZXJ0ZWRcbiIsCi0JCQlj
aGstPnJlYy5kYXRhLmZzbl9udW0pOworCQkJY2hrLT5yZWMuZGF0YS5mc24pOwogCQlUQUlMUV9G
T1JFQUNIKGF0LCAmY29udHJvbC0+cmVhc20sIHNjdHBfbmV4dCkgewotCQkJaWYgKFNDVFBfVFNO
X0dUKGF0LT5yZWMuZGF0YS5mc25fbnVtLCBjaGstPnJlYy5kYXRhLmZzbl9udW0pKSB7CisJCQlp
ZiAoU0NUUF9UU05fR1QoYXQtPnJlYy5kYXRhLmZzbiwgY2hrLT5yZWMuZGF0YS5mc24pKSB7CiAJ
CQkJLyoKIAkJCQkgKiBUaGlzIG9uZSBpbiBxdWV1ZSBpcyBiaWdnZXIgdGhhbiB0aGUgbmV3IG9u
ZSwgaW5zZXJ0CiAJCQkJICogdGhlIG5ldyBvbmUgYmVmb3JlIGF0LgogCQkJCSAqLwogCQkJCVND
VFBEQkcoU0NUUF9ERUJVR19YWFgsCiAJCQkJCSJJbnNlcnQgaXQgYmVmb3JlIGZzbjogJXVcbiIs
Ci0JCQkJCWF0LT5yZWMuZGF0YS5mc25fbnVtKTsKKwkJCQkJYXQtPnJlYy5kYXRhLmZzbik7CiAJ
CQkJYXNvYy0+c2l6ZV9vbl9yZWFzbV9xdWV1ZSArPSBjaGstPnNlbmRfc2l6ZTsKIAkJCQlzY3Rw
X3Vjb3VudF9pbmNyKGFzb2MtPmNudF9vbl9yZWFzbV9xdWV1ZSk7CiAJCQkJVEFJTFFfSU5TRVJU
X0JFRk9SRShhdCwgY2hrLCBzY3RwX25leHQpOwogCQkJCWluc2VydGVkID0gMTsKIAkJCQlicmVh
azsKLQkJCX0gZWxzZSBpZiAoYXQtPnJlYy5kYXRhLmZzbl9udW0gPT0gY2hrLT5yZWMuZGF0YS5m
c25fbnVtKSB7CisJCQl9IGVsc2UgaWYgKGF0LT5yZWMuZGF0YS5mc24gPT0gY2hrLT5yZWMuZGF0
YS5mc24pIHsKIAkJCQkvKiBHYWssIEhlIHNlbnQgbWUgYSBkdXBsaWNhdGUgc3RyIHNlcSBudW1i
ZXIgKi8KIAkJCQkvKgogCQkJCSAqIGZvbyBiYXIsIEkgZ3Vlc3MgSSB3aWxsIGp1c3QgZnJlZSB0
aGlzIG5ldyBndXksCkBAIC0xNDY4LDcgKzE0ODIsNyBAQCBzY3RwX3F1ZXVlX2RhdGFfZm9yX3Jl
YXNtKHN0cnVjdCBzY3RwX3RjYiAqc3RjYiwgc3RydWN0IHNjdHBfYXNzb2NpYXRpb24gKmFzb2Ms
CiAJCQkJICovCiAJCQkJU0NUUERCRyhTQ1RQX0RFQlVHX1hYWCwKIAkJCQkJIkR1cGxpY2F0ZSB0
byBmc246ICV1IC0tIGFib3J0XG4iLAotCQkJCQlhdC0+cmVjLmRhdGEuZnNuX251bSk7CisJCQkJ
CWF0LT5yZWMuZGF0YS5mc24pOwogCQkJCXNjdHBfYWJvcnRfaW5fcmVhc20oc3RjYiwgY29udHJv
bCwKIAkJCQkJCSAgICBjaGssIGFib3J0X2ZsYWcsCiAJCQkJCQkgICAgU0NUUF9GUk9NX1NDVFBf
SU5EQVRBICsgU0NUUF9MT0NfMTMpOwpAQCAtMTQ3OCw3ICsxNDkyLDcgQEAgc2N0cF9xdWV1ZV9k
YXRhX2Zvcl9yZWFzbShzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsIHN0cnVjdCBzY3RwX2Fzc29jaWF0
aW9uICphc29jLAogCQlpZiAoaW5zZXJ0ZWQgPT0gMCkgewogCQkJLyogR29lcyBvbiB0aGUgZW5k
ICovCiAJCQlTQ1RQREJHKFNDVFBfREVCVUdfWFhYLCAiSW5zZXJ0aW5nIGF0IHRhaWwgb2YgbGlz
dCBmc246ICV1XG4iLAotCQkJCWNoay0+cmVjLmRhdGEuZnNuX251bSk7CisJCQkJY2hrLT5yZWMu
ZGF0YS5mc24pOwogCQkJYXNvYy0+c2l6ZV9vbl9yZWFzbV9xdWV1ZSArPSBjaGstPnNlbmRfc2l6
ZTsKIAkJCXNjdHBfdWNvdW50X2luY3IoYXNvYy0+Y250X29uX3JlYXNtX3F1ZXVlKTsKIAkJCVRB
SUxRX0lOU0VSVF9UQUlMKCZjb250cm9sLT5yZWFzbSwgY2hrLCBzY3RwX25leHQpOwpAQCAtMTQ5
NiwxMiArMTUxMCwxMiBAQCBzY3RwX3F1ZXVlX2RhdGFfZm9yX3JlYXNtKHN0cnVjdCBzY3RwX3Rj
YiAqc3RjYiwgc3RydWN0IHNjdHBfYXNzb2NpYXRpb24gKmFzb2MsCiAJaWYgKGNvbnRyb2wtPmZp
cnN0X2ZyYWdfc2VlbikgewogCQluZXh0X2ZzbiA9IGNvbnRyb2wtPmZzbl9pbmNsdWRlZCArIDE7
CiAJCVRBSUxRX0ZPUkVBQ0hfU0FGRShhdCwgJmNvbnRyb2wtPnJlYXNtLCBzY3RwX25leHQsIG5h
dCkgewotCQkJaWYgKGF0LT5yZWMuZGF0YS5mc25fbnVtID09IG5leHRfZnNuKSB7CisJCQlpZiAo
YXQtPnJlYy5kYXRhLmZzbiA9PSBuZXh0X2ZzbikgewogCQkJCS8qIFdlIGNhbiBhZGQgdGhpcyBv
bmUgbm93IHRvIHRoZSBjb250cm9sICovCiAJCQkJU0NUUERCRyhTQ1RQX0RFQlVHX1hYWCwKIAkJ
CQkJIkFkZGluZyBtb3JlIHRvIGNvbnRyb2w6ICVwIGF0OiAlcCBmc246ICV1IG5leHRfZnNuOiAl
dSBpbmNsdWRlZDogJXVcbiIsCiAJCQkJCWNvbnRyb2wsIGF0LAotCQkJCQlhdC0+cmVjLmRhdGEu
ZnNuX251bSwKKwkJCQkJYXQtPnJlYy5kYXRhLmZzbiwKIAkJCQkJbmV4dF9mc24sIGNvbnRyb2wt
PmZzbl9pbmNsdWRlZCk7CiAJCQkJVEFJTFFfUkVNT1ZFKCZjb250cm9sLT5yZWFzbSwgYXQsIHNj
dHBfbmV4dCk7CiAJCQkJc2N0cF9hZGRfY2hrX3RvX2NvbnRyb2woY29udHJvbCwgc3RybSwgc3Rj
YiwgYXNvYywgYXQsIFNDVFBfUkVBRF9MT0NLX05PVF9IRUxEKTsKQEAgLTE1MzgsMjUgKzE1NTIs
MjUgQEAgc2N0cF9xdWV1ZV9kYXRhX2Zvcl9yZWFzbShzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsIHN0
cnVjdCBzY3RwX2Fzc29jaWF0aW9uICphc29jLAogfQogCiBzdGF0aWMgc3RydWN0IHNjdHBfcXVl
dWVkX3RvX3JlYWQgKgotc2N0cF9maW5kX3JlYXNtX2VudHJ5KHN0cnVjdCBzY3RwX3N0cmVhbV9p
biAqc3RybSwgdWludDMyX3QgbXNnX2lkLCBpbnQgb3JkZXJlZCwgaW50IG9sZCkKK3NjdHBfZmlu
ZF9yZWFzbV9lbnRyeShzdHJ1Y3Qgc2N0cF9zdHJlYW1faW4gKnN0cm0sIHVpbnQzMl90IG1pZCwg
aW50IG9yZGVyZWQsIGludCBpZGF0YV9zdXBwb3J0ZWQpCiB7CiAJc3RydWN0IHNjdHBfcXVldWVk
X3RvX3JlYWQgKmNvbnRyb2w7CiAKIAlpZiAob3JkZXJlZCkgewogCQlUQUlMUV9GT1JFQUNIKGNv
bnRyb2wsICZzdHJtLT5pbnF1ZXVlLCBuZXh0X2luc3RybSkgewotCQkJaWYgKGNvbnRyb2wtPm1z
Z19pZCA9PSBtc2dfaWQpIHsKKwkJCWlmIChTQ1RQX01JRF9FUShpZGF0YV9zdXBwb3J0ZWQsIGNv
bnRyb2wtPm1pZCwgbWlkKSkgewogCQkJCWJyZWFrOwogCQkJfQogCQl9CiAJfSBlbHNlIHsKLQkJ
aWYgKG9sZCkgewotCQkJY29udHJvbCA9IFRBSUxRX0ZJUlNUKCZzdHJtLT51bm9faW5xdWV1ZSk7
Ci0JCQlyZXR1cm4gKGNvbnRyb2wpOwotCQl9Ci0JCVRBSUxRX0ZPUkVBQ0goY29udHJvbCwgJnN0
cm0tPnVub19pbnF1ZXVlLCBuZXh0X2luc3RybSkgewotCQkJaWYgKGNvbnRyb2wtPm1zZ19pZCA9
PSBtc2dfaWQpIHsKLQkJCQlicmVhazsKKwkJaWYgKGlkYXRhX3N1cHBvcnRlZCkgeworCQkJVEFJ
TFFfRk9SRUFDSChjb250cm9sLCAmc3RybS0+dW5vX2lucXVldWUsIG5leHRfaW5zdHJtKSB7CisJ
CQkJaWYgKFNDVFBfTUlEX0VRKGlkYXRhX3N1cHBvcnRlZCwgY29udHJvbC0+bWlkLCBtaWQpKSB7
CisJCQkJCWJyZWFrOworCQkJCX0KIAkJCX0KKwkJfSBlbHNlIHsKKwkJCWNvbnRyb2wgPSBUQUlM
UV9GSVJTVCgmc3RybS0+dW5vX2lucXVldWUpOwogCQl9CiAJfQogCXJldHVybiAoY29udHJvbCk7
CkBAIC0xNTY2LDc4ICsxNTgwLDc4IEBAIHN0YXRpYyBpbnQKIHNjdHBfcHJvY2Vzc19hX2RhdGFf
Y2h1bmsoc3RydWN0IHNjdHBfdGNiICpzdGNiLCBzdHJ1Y3Qgc2N0cF9hc3NvY2lhdGlvbiAqYXNv
YywKIAkJCSAgc3RydWN0IG1idWYgKiptLCBpbnQgb2Zmc2V0LCAgaW50IGNoa19sZW5ndGgsCiAJ
CQkgIHN0cnVjdCBzY3RwX25ldHMgKm5ldCwgdWludDMyX3QgKmhpZ2hfdHNuLCBpbnQgKmFib3J0
X2ZsYWcsCi0JCQkgIGludCAqYnJlYWtfZmxhZywgaW50IGxhc3RfY2h1bmssIHVpbnQ4X3QgY2h0
eXBlKQorCQkJICBpbnQgKmJyZWFrX2ZsYWcsIGludCBsYXN0X2NodW5rLCB1aW50OF90IGNoa190
eXBlKQogewogCS8qIFByb2Nlc3MgYSBkYXRhIGNodW5rICovCiAJLyogc3RydWN0IHNjdHBfdG1p
dF9jaHVuayAqY2hrOyAqLwotCXN0cnVjdCBzY3RwX2RhdGFfY2h1bmsgKmNoOwotCXN0cnVjdCBz
Y3RwX2lkYXRhX2NodW5rICpuY2gsIGNodW5rX2J1ZjsKIAlzdHJ1Y3Qgc2N0cF90bWl0X2NodW5r
ICpjaGs7Ci0JdWludDMyX3QgdHNuLCBmc24sIGdhcCwgbXNnX2lkOworCXVpbnQzMl90IHRzbiwg
ZnNuLCBnYXAsIG1pZDsKIAlzdHJ1Y3QgbWJ1ZiAqZG1idWY7CiAJaW50IHRoZV9sZW47CiAJaW50
IG5lZWRfcmVhc21fY2hlY2sgPSAwOwotCXVpbnQxNl90IHN0cm1ubzsKKwl1aW50MTZfdCBzaWQ7
CiAJc3RydWN0IG1idWYgKm9wX2VycjsKIAljaGFyIG1zZ1tTQ1RQX0RJQUdfSU5GT19MRU5dOwot
CXN0cnVjdCBzY3RwX3F1ZXVlZF90b19yZWFkICpjb250cm9sPU5VTEw7Ci0JdWludDMyX3QgcHJv
dG9jb2xfaWQ7Ci0JdWludDhfdCBjaHVua19mbGFnczsKKwlzdHJ1Y3Qgc2N0cF9xdWV1ZWRfdG9f
cmVhZCAqY29udHJvbCA9IE5VTEw7CisJdWludDMyX3QgcHBpZDsKKwl1aW50OF90IGNoa19mbGFn
czsKIAlzdHJ1Y3Qgc2N0cF9zdHJlYW1fcmVzZXRfbGlzdCAqbGlzdGU7Ci0Jc3RydWN0IHNjdHBf
c3RyZWFtX2luICpzdHJtOwogCWludCBvcmRlcmVkOwogCXNpemVfdCBjbGVuOwogCWludCBjcmVh
dGVkX2NvbnRyb2wgPSAwOwotCXVpbnQ4X3Qgb2xkX2RhdGE7CiAKLQljaGsgPSBOVUxMOwotCWlm
IChjaHR5cGUgPT0gU0NUUF9JREFUQSkgewotCQluY2ggPSAoc3RydWN0IHNjdHBfaWRhdGFfY2h1
bmsgKilzY3RwX21fZ2V0cHRyKCptLCBvZmZzZXQsCi0JCSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZW9mKHN0cnVjdCBzY3RwX2lkYXRhX2NodW5rKSwg
KHVpbnQ4X3QgKikmY2h1bmtfYnVmKTsKLQkJY2ggPSAoc3RydWN0IHNjdHBfZGF0YV9jaHVuayAq
KW5jaDsKKwlpZiAoY2hrX3R5cGUgPT0gU0NUUF9JREFUQSkgeworCQlzdHJ1Y3Qgc2N0cF9pZGF0
YV9jaHVuayAqY2h1bmssIGNodW5rX2J1ZjsKKworCQljaHVuayA9IChzdHJ1Y3Qgc2N0cF9pZGF0
YV9jaHVuayAqKXNjdHBfbV9nZXRwdHIoKm0sIG9mZnNldCwKKwkJICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNpemVvZihzdHJ1Y3Qgc2N0cF9pZGF0YV9j
aHVuayksICh1aW50OF90ICopJmNodW5rX2J1Zik7CisJCWNoa19mbGFncyA9IGNodW5rLT5jaC5j
aHVua19mbGFnczsKIAkJY2xlbiA9IHNpemVvZihzdHJ1Y3Qgc2N0cF9pZGF0YV9jaHVuayk7Ci0J
CXRzbiA9IG50b2hsKGNoLT5kcC50c24pOwotCQltc2dfaWQgPSBudG9obChuY2gtPmRwLm1zZ19p
ZCk7Ci0JCXByb3RvY29sX2lkID0gbmNoLT5kcC5wcGlkX2Zzbi5wcm90b2NvbF9pZDsKLQkJaWYg
KGNoLT5jaC5jaHVua19mbGFncyAmIFNDVFBfREFUQV9GSVJTVF9GUkFHKQorCQl0c24gPSBudG9o
bChjaHVuay0+ZHAudHNuKTsKKwkJc2lkID0gbnRvaHMoY2h1bmstPmRwLnNpZCk7CisJCW1pZCA9
IG50b2hsKGNodW5rLT5kcC5taWQpOworCQlpZiAoY2hrX2ZsYWdzICYgU0NUUF9EQVRBX0ZJUlNU
X0ZSQUcpIHsKIAkJCWZzbiA9IDA7Ci0JCWVsc2UKLQkJCWZzbiA9IG50b2hsKG5jaC0+ZHAucHBp
ZF9mc24uZnNuKTsKLQkJb2xkX2RhdGEgPSAwOworCQkJcHBpZCA9IGNodW5rLT5kcC5wcGlkX2Zz
bi5wcGlkOworCQl9IGVsc2UgeworCQkJZnNuID0gbnRvaGwoY2h1bmstPmRwLnBwaWRfZnNuLmZz
bik7CisJCQlwcGlkID0gMHhmZmZmZmZmZjsgLyogVXNlIGFzIGFuIGludmFsaWQgdmFsdWUuICov
CisJCX0KIAl9IGVsc2UgewotCQljaCA9IChzdHJ1Y3Qgc2N0cF9kYXRhX2NodW5rICopc2N0cF9t
X2dldHB0cigqbSwgb2Zmc2V0LAotCQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBzaXplb2Yoc3RydWN0IHNjdHBfZGF0YV9jaHVuayksICh1aW50OF90ICopJmNo
dW5rX2J1Zik7Ci0JCXRzbiA9IG50b2hsKGNoLT5kcC50c24pOwotCQlwcm90b2NvbF9pZCA9IGNo
LT5kcC5wcm90b2NvbF9pZDsKKwkJc3RydWN0IHNjdHBfZGF0YV9jaHVuayAqY2h1bmssIGNodW5r
X2J1ZjsKKworCQljaHVuayA9IChzdHJ1Y3Qgc2N0cF9kYXRhX2NodW5rICopc2N0cF9tX2dldHB0
cigqbSwgb2Zmc2V0LAorCQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBzaXplb2Yoc3RydWN0IHNjdHBfZGF0YV9jaHVuayksICh1aW50OF90ICopJmNodW5r
X2J1Zik7CisJCWNoa19mbGFncyA9IGNodW5rLT5jaC5jaHVua19mbGFnczsKIAkJY2xlbiA9IHNp
emVvZihzdHJ1Y3Qgc2N0cF9kYXRhX2NodW5rKTsKKwkJdHNuID0gbnRvaGwoY2h1bmstPmRwLnRz
bik7CisJCXNpZCA9IG50b2hzKGNodW5rLT5kcC5zaWQpOworCQltaWQgPSAodWludDMyX3QpKG50
b2hzKGNodW5rLT5kcC5zc24pKTsKIAkJZnNuID0gdHNuOwotCQltc2dfaWQgPSAodWludDMyX3Qp
KG50b2hzKGNoLT5kcC5zdHJlYW1fc2VxdWVuY2UpKTsKLQkJbmNoID0gTlVMTDsKLQkJb2xkX2Rh
dGEgPSAxOworCQlwcGlkID0gY2h1bmstPmRwLnBwaWQ7CiAJfQotCWNodW5rX2ZsYWdzID0gY2gt
PmNoLmNodW5rX2ZsYWdzOwogCWlmICgoc2l6ZV90KWNoa19sZW5ndGggPT0gY2xlbikgewogCQkv
KgogCQkgKiBOZWVkIHRvIHNlbmQgYW4gYWJvcnQgc2luY2Ugd2UgaGFkIGEKIAkJICogZW1wdHkg
ZGF0YSBjaHVuay4KIAkJICovCi0JCW9wX2VyciA9IHNjdHBfZ2VuZXJhdGVfbm9fdXNlcl9kYXRh
X2NhdXNlKGNoLT5kcC50c24pOworCQlvcF9lcnIgPSBzY3RwX2dlbmVyYXRlX25vX3VzZXJfZGF0
YV9jYXVzZSh0c24pOwogCQlzdGNiLT5zY3RwX2VwLT5sYXN0X2Fib3J0X2NvZGUgPSBTQ1RQX0ZS
T01fU0NUUF9JTkRBVEEgKyBTQ1RQX0xPQ18xNDsKIAkJc2N0cF9hYm9ydF9hbl9hc3NvY2lhdGlv
bihzdGNiLT5zY3RwX2VwLCBzdGNiLCBvcF9lcnIsIFNDVFBfU09fTk9UX0xPQ0tFRCk7CiAJCSph
Ym9ydF9mbGFnID0gMTsKIAkJcmV0dXJuICgwKTsKIAl9Ci0JaWYgKChjaHVua19mbGFncyAmIFND
VFBfREFUQV9TQUNLX0lNTUVESUFURUxZKSA9PSBTQ1RQX0RBVEFfU0FDS19JTU1FRElBVEVMWSkg
eworCWlmICgoY2hrX2ZsYWdzICYgU0NUUF9EQVRBX1NBQ0tfSU1NRURJQVRFTFkpID09IFNDVFBf
REFUQV9TQUNLX0lNTUVESUFURUxZKSB7CiAJCWFzb2MtPnNlbmRfc2FjayA9IDE7CiAJfQotCW9y
ZGVyZWQgPSAoKGNodW5rX2ZsYWdzICYgU0NUUF9EQVRBX1VOT1JERVJFRCkgPT0gMCk7CisJb3Jk
ZXJlZCA9ICgoY2hrX2ZsYWdzICYgU0NUUF9EQVRBX1VOT1JERVJFRCkgPT0gMCk7CiAJaWYgKFND
VFBfQkFTRV9TWVNDVEwoc2N0cF9sb2dnaW5nX2xldmVsKSAmIFNDVFBfTUFQX0xPR0dJTkdfRU5B
QkxFKSB7CiAJCXNjdHBfbG9nX21hcCh0c24sIGFzb2MtPmN1bXVsYXRpdmVfdHNuLCBhc29jLT5o
aWdoZXN0X3Rzbl9pbnNpZGVfbWFwLCBTQ1RQX01BUF9UU05fRU5URVJTKTsKIAl9CiAJaWYgKHN0
Y2IgPT0gTlVMTCkgewogCQlyZXR1cm4gKDApOwogCX0KLQlTQ1RQX0xUUkFDRV9DSEsoc3RjYi0+
c2N0cF9lcCwgc3RjYiwgY2gtPmNoLmNodW5rX3R5cGUsIHRzbik7CisJU0NUUF9MVFJBQ0VfQ0hL
KHN0Y2ItPnNjdHBfZXAsIHN0Y2IsIGNoa190eXBlLCB0c24pOwogCWlmIChTQ1RQX1RTTl9HRShh
c29jLT5jdW11bGF0aXZlX3RzbiwgdHNuKSkgewogCQkvKiBJdCBpcyBhIGR1cGxpY2F0ZSAqLwog
CQlTQ1RQX1NUQVRfSU5DUihzY3Rwc19yZWN2ZHVwZGF0YSk7CkBAIC0xNzAwLDkgKzE3MTQsNyBA
QCBzY3RwX3Byb2Nlc3NfYV9kYXRhX2NodW5rKHN0cnVjdCBzY3RwX3RjYiAqc3RjYiwgc3RydWN0
IHNjdHBfYXNzb2NpYXRpb24gKmFzb2MsCiAJICovCiAKIAkvKiBJcyB0aGUgc3RyZWFtIHZhbGlk
PyAqLwotCXN0cm1ubyA9IG50b2hzKGNoLT5kcC5zdHJlYW1faWQpOwotCi0JaWYgKHN0cm1ubyA+
PSBhc29jLT5zdHJlYW1pbmNudCkgeworCWlmIChzaWQgPj0gYXNvYy0+c3RyZWFtaW5jbnQpIHsK
IAkJc3RydWN0IHNjdHBfZXJyb3JfaW52YWxpZF9zdHJlYW0gKmNhdXNlOwogCiAJCW9wX2VyciA9
IHNjdHBfZ2V0X21idWZfZm9yX21zZyhzaXplb2Yoc3RydWN0IHNjdHBfZXJyb3JfaW52YWxpZF9z
dHJlYW0pLApAQCAtMTcxOSw3ICsxNzMxLDcgQEAgc2N0cF9wcm9jZXNzX2FfZGF0YV9jaHVuayhz
dHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsIHN0cnVjdCBzY3RwX2Fzc29jaWF0aW9uICphc29jLAogCQkJ
U0NUUF9CVUZfTEVOKG9wX2VycikgPSBzaXplb2Yoc3RydWN0IHNjdHBfZXJyb3JfaW52YWxpZF9z
dHJlYW0pOwogCQkJY2F1c2UtPmNhdXNlLmNvZGUgPSBodG9ucyhTQ1RQX0NBVVNFX0lOVkFMSURf
U1RSRUFNKTsKIAkJCWNhdXNlLT5jYXVzZS5sZW5ndGggPSBodG9ucyhzaXplb2Yoc3RydWN0IHNj
dHBfZXJyb3JfaW52YWxpZF9zdHJlYW0pKTsKLQkJCWNhdXNlLT5zdHJlYW1faWQgPSBjaC0+ZHAu
c3RyZWFtX2lkOworCQkJY2F1c2UtPnN0cmVhbV9pZCA9IGh0b25zKHNpZCk7CiAJCQljYXVzZS0+
cmVzZXJ2ZWQgPSBodG9ucygwKTsKIAkJCXNjdHBfcXVldWVfb3BfZXJyKHN0Y2IsIG9wX2Vycik7
CiAJCX0KQEAgLTE3MzUsMTMgKzE3NDcsMTIgQEAgc2N0cF9wcm9jZXNzX2FfZGF0YV9jaHVuayhz
dHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsIHN0cnVjdCBzY3RwX2Fzc29jaWF0aW9uICphc29jLAogCQl9
CiAJCXJldHVybiAoMCk7CiAJfQotCXN0cm0gPSAmYXNvYy0+c3RybWluW3N0cm1ub107CiAJLyoK
IAkgKiBJZiBpdHMgYSBmcmFnbWVudGVkIG1lc3NhZ2UsIGxldHMgc2VlIGlmIHdlIGNhbgogCSAq
IGZpbmQgdGhlIGNvbnRyb2wgb24gdGhlIHJlYXNzZW1ibHkgcXVldWVzLgogCSAqLwotCWlmICgo
Y2h0eXBlID09IFNDVFBfSURBVEEpICYmCi0JICAgICgoY2h1bmtfZmxhZ3MgJiBTQ1RQX0RBVEFf
RklSU1RfRlJBRykgPT0gMCkgJiYKKwlpZiAoKGNoa190eXBlID09IFNDVFBfSURBVEEpICYmCisJ
ICAgICgoY2hrX2ZsYWdzICYgU0NUUF9EQVRBX0ZJUlNUX0ZSQUcpID09IDApICYmCiAJICAgIChm
c24gPT0gMCkpIHsKIAkJLyogCiAJCSAqICBUaGUgZmlyc3QgKm11c3QqIGJlIGZzbiAwLCBhbmQg
b3RoZXIgCkBAIC0xNzUwLDE4ICsxNzYxLDE4IEBAIHNjdHBfcHJvY2Vzc19hX2RhdGFfY2h1bmso
c3RydWN0IHNjdHBfdGNiICpzdGNiLCBzdHJ1Y3Qgc2N0cF9hc3NvY2lhdGlvbiAqYXNvYywKIAkJ
ICogICAgICBJZ25vcmUgaXMgZm9yIG5vdy4KIAkJICovCiAJCXNucHJpbnRmKG1zZywgc2l6ZW9m
KG1zZyksICJGU04gemVybyBmb3IgTUlEPSU4Ljh4LCBidXQgZmxhZ3M9JTIuMngiLAotCQkgICAg
ICAgICBtc2dfaWQsIGNodW5rX2ZsYWdzKTsKKwkJICAgICAgICAgbWlkLCBjaGtfZmxhZ3MpOwog
CQlnb3RvIGVycl9vdXQ7CiAJfQotCWNvbnRyb2wgPSBzY3RwX2ZpbmRfcmVhc21fZW50cnkoc3Ry
bSwgbXNnX2lkLCBvcmRlcmVkLCBvbGRfZGF0YSk7CisJY29udHJvbCA9IHNjdHBfZmluZF9yZWFz
bV9lbnRyeSgmYXNvYy0+c3RybWluW3NpZF0sIG1pZCwgb3JkZXJlZCwgYXNvYy0+aWRhdGFfc3Vw
cG9ydGVkKTsKIAlTQ1RQREJHKFNDVFBfREVCVUdfWFhYLCAiY2h1bmtfZmxhZ3M6MHgleCBsb29r
IGZvciBjb250cm9sIG9uIHF1ZXVlcyAlcFxuIiwKLQkJY2h1bmtfZmxhZ3MsIGNvbnRyb2wpOwot
CWlmICgoY2h1bmtfZmxhZ3MgJiBTQ1RQX0RBVEFfTk9UX0ZSQUcpICE9IFNDVFBfREFUQV9OT1Rf
RlJBRykgeworCQljaGtfZmxhZ3MsIGNvbnRyb2wpOworCWlmICgoY2hrX2ZsYWdzICYgU0NUUF9E
QVRBX05PVF9GUkFHKSAhPSBTQ1RQX0RBVEFfTk9UX0ZSQUcpIHsKIAkJLyogU2VlIGlmIHdlIGNh
biBmaW5kIHRoZSByZS1hc3NlbWJseSBlbnRpdHkgKi8KIAkJaWYgKGNvbnRyb2wgIT0gTlVMTCkg
ewogCQkJLyogV2UgZm91bmQgc29tZXRoaW5nLCBkb2VzIGl0IGJlbG9uZz8gKi8KLQkJCWlmIChv
cmRlcmVkICYmIChtc2dfaWQgIT0gY29udHJvbC0+c2luZm9fc3NuKSkgewotCQkJCXNucHJpbnRm
KG1zZywgc2l6ZW9mKG1zZyksICJSZWFzc2VtYmx5IHByb2JsZW0gKE1JRD0lOC44eCkiLCBtc2df
aWQpOworCQkJaWYgKG9yZGVyZWQgJiYgKG1pZCAhPSBjb250cm9sLT5taWQpKSB7CisJCQkJc25w
cmludGYobXNnLCBzaXplb2YobXNnKSwgIlJlYXNzZW1ibHkgcHJvYmxlbSAoTUlEPSU4Ljh4KSIs
IG1pZCk7CiAJCQllcnJfb3V0OgogCQkJCW9wX2VyciA9IHNjdHBfZ2VuZXJhdGVfY2F1c2UoU0NU
UF9DQVVTRV9QUk9UT0NPTF9WSU9MQVRJT04sIG1zZyk7CiAJCQkJc3RjYi0+c2N0cF9lcC0+bGFz
dF9hYm9ydF9jb2RlID0gU0NUUF9GUk9NX1NDVFBfSU5EQVRBICsgU0NUUF9MT0NfMTU7CkBAIC0x
Nzg5LDEwICsxODAwLDEwIEBAIHNjdHBfcHJvY2Vzc19hX2RhdGFfY2h1bmsoc3RydWN0IHNjdHBf
dGNiICpzdGNiLCBzdHJ1Y3Qgc2N0cF9hc3NvY2lhdGlvbiAqYXNvYywKIAkJICogdGhlIHNhbWUg
U3RyZWFtIGZvciB1bm9yZGVyZWQuCiAJCSAqLwogCQlpZiAoY29udHJvbCAhPSBOVUxMKSB7Ci0J
CQlpZiAob3JkZXJlZCB8fCAob2xkX2RhdGEgPT0gMCkpIHsKLQkJCQlTQ1RQREJHKFNDVFBfREVC
VUdfWFhYLCAiY2h1bmtfZmxhZ3M6IDB4JXggZHVwIGRldGVjdGVkIG9uIG1zZ19pZDogJXVcbiIs
Ci0JCQkJCWNodW5rX2ZsYWdzLCBtc2dfaWQpOwotCQkJCXNucHJpbnRmKG1zZywgc2l6ZW9mKG1z
ZyksICJEdXBsaWNhdGUgTUlEPSU4Ljh4IGRldGVjdGVkLiIsIG1zZ19pZCk7CisJCQlpZiAob3Jk
ZXJlZCB8fCBhc29jLT5pZGF0YV9zdXBwb3J0ZWQpIHsKKwkJCQlTQ1RQREJHKFNDVFBfREVCVUdf
WFhYLCAiY2h1bmtfZmxhZ3M6IDB4JXggZHVwIGRldGVjdGVkIG9uIE1JRDogJXVcbiIsCisJCQkJ
CWNoa19mbGFncywgbWlkKTsKKwkJCQlzbnByaW50Zihtc2csIHNpemVvZihtc2cpLCAiRHVwbGlj
YXRlIE1JRD0lOC44eCBkZXRlY3RlZC4iLCBtaWQpOwogCQkJCWdvdG8gZXJyX291dDsKIAkJCX0g
ZWxzZSB7CiAJCQkJaWYgKCh0c24gPT0gY29udHJvbC0+ZnNuX2luY2x1ZGVkICsgMSkgJiYKQEAg
LTE4MzcsNyArMTg0OCw3IEBAIHNjdHBfcHJvY2Vzc19hX2RhdGFfY2h1bmsoc3RydWN0IHNjdHBf
dGNiICpzdGNiLCBzdHJ1Y3Qgc2N0cF9hc3NvY2lhdGlvbiAqYXNvYywKICNlbmRpZgogCQl9CiAJ
CS8qIG5vdyBpcyBpdCBpbiB0aGUgbWFwcGluZyBhcnJheSBvZiB3aGF0IHdlIGhhdmUgYWNjZXB0
ZWQ/ICovCi0JCWlmIChuY2ggPT0gTlVMTCkgeworCQlpZiAoY2hrX3R5cGUgPT0gU0NUUF9EQVRB
KSB7CiAJCQlpZiAoU0NUUF9UU05fR1QodHNuLCBhc29jLT5oaWdoZXN0X3Rzbl9pbnNpZGVfbWFw
KSAmJgogCQkJICAgIFNDVFBfVFNOX0dUKHRzbiwgYXNvYy0+aGlnaGVzdF90c25faW5zaWRlX25y
X21hcCkpIHsKIAkJCQkvKiBOb3BlIG5vdCBpbiB0aGUgdmFsaWQgcmFuZ2UgZHVtcCBpdCAqLwpA
QCAtMTg2OSw4ICsxODgwLDggQEAgc2N0cF9wcm9jZXNzX2FfZGF0YV9jaHVuayhzdHJ1Y3Qgc2N0
cF90Y2IgKnN0Y2IsIHN0cnVjdCBzY3RwX2Fzc29jaWF0aW9uICphc29jLAogCQlhc29jLT50c25f
aW5fd3JhcHBlZCA9IDE7CiAJfQogCWFzb2MtPmluX3RzbmxvZ1thc29jLT50c25faW5fYXRdLnRz
biA9IHRzbjsKLQlhc29jLT5pbl90c25sb2dbYXNvYy0+dHNuX2luX2F0XS5zdHJtID0gc3RybW5v
OwotCWFzb2MtPmluX3RzbmxvZ1thc29jLT50c25faW5fYXRdLnNlcSA9IG1zZ19pZDsKKwlhc29j
LT5pbl90c25sb2dbYXNvYy0+dHNuX2luX2F0XS5zdHJtID0gc2lkOworCWFzb2MtPmluX3Rzbmxv
Z1thc29jLT50c25faW5fYXRdLnNlcSA9IG1pZDsKIAlhc29jLT5pbl90c25sb2dbYXNvYy0+dHNu
X2luX2F0XS5zeiA9IGNoa19sZW5ndGg7CiAJYXNvYy0+aW5fdHNubG9nW2Fzb2MtPnRzbl9pbl9h
dF0uZmxncyA9IGNodW5rX2ZsYWdzOwogCWFzb2MtPmluX3RzbmxvZ1thc29jLT50c25faW5fYXRd
LnN0Y2IgPSAodm9pZCAqKXN0Y2I7CkBAIC0xODg1LDM0ICsxODk2LDQwIEBAIHNjdHBfcHJvY2Vz
c19hX2RhdGFfY2h1bmsoc3RydWN0IHNjdHBfdGNiICpzdGNiLCBzdHJ1Y3Qgc2N0cF9hc3NvY2lh
dGlvbiAqYXNvYywKIAkgKiB3YXkgb3VyIHN0cmVhbSBzZXF1ZW5jZSBudW1iZXJzIGNvdWxkIGhh
dmUgd3JhcHBlZC4gV2Ugb2YgY291cnNlCiAJICogb25seSB2YWxpZGF0ZSB0aGUgRklSU1QgZnJh
Z21lbnQgc28gdGhlIGJpdCBtdXN0IGJlIHNldC4KIAkgKi8KLQlpZiAoKGNodW5rX2ZsYWdzICYg
U0NUUF9EQVRBX0ZJUlNUX0ZSQUcpICYmCisJaWYgKChjaGtfZmxhZ3MgJiBTQ1RQX0RBVEFfRklS
U1RfRlJBRykgJiYKIAkgICAgKFRBSUxRX0VNUFRZKCZhc29jLT5yZXNldEhlYWQpKSAmJgotCSAg
ICAoY2h1bmtfZmxhZ3MgJiBTQ1RQX0RBVEFfVU5PUkRFUkVEKSA9PSAwICYmCi0JICAgIFNDVFBf
TVNHSURfR0Uob2xkX2RhdGEsIGFzb2MtPnN0cm1pbltzdHJtbm9dLmxhc3Rfc2VxdWVuY2VfZGVs
aXZlcmVkLCBtc2dfaWQpKSB7CisJICAgIChjaGtfZmxhZ3MgJiBTQ1RQX0RBVEFfVU5PUkRFUkVE
KSA9PSAwICYmCisJICAgIFNDVFBfTUlEX0dFKGFzb2MtPmlkYXRhX3N1cHBvcnRlZCwgYXNvYy0+
c3RybWluW3NpZF0ubGFzdF9taWRfZGVsaXZlcmVkLCBtaWQpKSB7CiAJCS8qIFRoZSBpbmNvbWlu
ZyBzc2VxIGlzIGJlaGluZCB3aGVyZSB3ZSBsYXN0IGRlbGl2ZXJlZD8gKi8KIAkJU0NUUERCRyhT
Q1RQX0RFQlVHX0lOREFUQTEsICJFVklML0Jyb2tlbi1EdXAgUy1TRVE6ICV1IGRlbGl2ZXJlZDog
JXUgZnJvbSBwZWVyLCBBYm9ydCFcbiIsCi0JCQltc2dfaWQsIGFzb2MtPnN0cm1pbltzdHJtbm9d
Lmxhc3Rfc2VxdWVuY2VfZGVsaXZlcmVkKTsKKwkJCW1pZCwgYXNvYy0+c3RybWluW3NpZF0ubGFz
dF9taWRfZGVsaXZlcmVkKTsKIAotCQlzbnByaW50Zihtc2csIHNpemVvZihtc2cpLCAiRGVsaXZl
cmVkIFNTTj0lNC40eCwgZ290IFRTTj0lOC44eCwgU0lEPSU0LjR4LCBTU049JTQuNHgiLAotCQkg
ICAgICAgICBhc29jLT5zdHJtaW5bc3RybW5vXS5sYXN0X3NlcXVlbmNlX2RlbGl2ZXJlZCwKLQkJ
ICAgICAgICAgdHNuLCBzdHJtbm8sIG1zZ19pZCk7CisJCWlmIChhc29jLT5pZGF0YV9zdXBwb3J0
ZWQpIHsKKwkJCXNucHJpbnRmKG1zZywgc2l6ZW9mKG1zZyksICJEZWxpdmVyZWQgTUlEPSU4Ljh4
LCBnb3QgVFNOPSU4Ljh4LCBTSUQ9JTQuNHgsIE1JRD0lOC44eCIsCisJCQkgICAgICAgICBhc29j
LT5zdHJtaW5bc2lkXS5sYXN0X21pZF9kZWxpdmVyZWQsCisJCQkgICAgICAgICB0c24sCisJCQkg
ICAgICAgICBzaWQsCisJCQkgICAgICAgICBtaWQpOworCQl9IGVsc2UgeworCQkJc25wcmludGYo
bXNnLCBzaXplb2YobXNnKSwgIkRlbGl2ZXJlZCBTU049JTQuNHgsIGdvdCBUU049JTguOHgsIFNJ
RD0lNC40eCwgU1NOPSU0LjR4IiwKKwkJCSAgICAgICAgICh1aW50MTZfdClhc29jLT5zdHJtaW5b
c2lkXS5sYXN0X21pZF9kZWxpdmVyZWQsCisJCQkgICAgICAgICB0c24sCisJCQkgICAgICAgICBz
aWQsCisJCQkgICAgICAgICAodWludDE2X3QpbWlkKTsKKwkJfQogCQlvcF9lcnIgPSBzY3RwX2dl
bmVyYXRlX2NhdXNlKFNDVFBfQ0FVU0VfUFJPVE9DT0xfVklPTEFUSU9OLCBtc2cpOwogCQlzdGNi
LT5zY3RwX2VwLT5sYXN0X2Fib3J0X2NvZGUgPSBTQ1RQX0ZST01fU0NUUF9JTkRBVEEgKyBTQ1RQ
X0xPQ18xNjsKIAkJc2N0cF9hYm9ydF9hbl9hc3NvY2lhdGlvbihzdGNiLT5zY3RwX2VwLCBzdGNi
LCBvcF9lcnIsIFNDVFBfU09fTk9UX0xPQ0tFRCk7CiAJCSphYm9ydF9mbGFnID0gMTsKIAkJcmV0
dXJuICgwKTsKIAl9Ci0JLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotCSAq
IEZyb20gaGVyZSBkb3duIHdlIG1heSBmaW5kIGNoLT4gaW52YWxpZAotCSAqIHNvIGl0cyBhIGdv
b2QgaWRlYSBOT1QgdG8gdXNlIGl0LgotCSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioq
KioqKioqLwotCWlmIChuY2gpIHsKKwlpZiAoY2hrX3R5cGUgPT0gU0NUUF9JREFUQSkgewogCQl0
aGVfbGVuID0gKGNoa19sZW5ndGggLSBzaXplb2Yoc3RydWN0IHNjdHBfaWRhdGFfY2h1bmspKTsK
IAl9IGVsc2UgewogCQl0aGVfbGVuID0gKGNoa19sZW5ndGggLSBzaXplb2Yoc3RydWN0IHNjdHBf
ZGF0YV9jaHVuaykpOwogCX0KIAlpZiAobGFzdF9jaHVuayA9PSAwKSB7Ci0JCWlmIChuY2gpIHsK
KwkJaWYgKGNoa190eXBlID09IFNDVFBfSURBVEEpIHsKIAkJCWRtYnVmID0gU0NUUF9NX0NPUFlN
KCptLAogCQkJCQkgICAgIChvZmZzZXQgKyBzaXplb2Yoc3RydWN0IHNjdHBfaWRhdGFfY2h1bmsp
KSwKIAkJCQkJICAgICB0aGVfbGVuLCBNX05PV0FJVCk7CkBAIC0xOTMxLDcgKzE5NDgsNyBAQCBz
Y3RwX3Byb2Nlc3NfYV9kYXRhX2NodW5rKHN0cnVjdCBzY3RwX3RjYiAqc3RjYiwgc3RydWN0IHNj
dHBfYXNzb2NpYXRpb24gKmFzb2MsCiAJCWludCBsX2xlbjsKIAkJZG1idWYgPSAqbTsKIAkJLyog
bG9wIG9mZiB0aGUgdG9wIHBhcnQgKi8KLQkJaWYgKG5jaCkgeworCQlpZiAoY2hrX3R5cGUgPT0g
U0NUUF9JREFUQSkgewogCQkJbV9hZGooZG1idWYsIChvZmZzZXQgKyBzaXplb2Yoc3RydWN0IHNj
dHBfaWRhdGFfY2h1bmspKSk7CiAJCX0gZWxzZSB7CiAJCQltX2FkaihkbWJ1ZiwgKG9mZnNldCAr
IHNpemVvZihzdHJ1Y3Qgc2N0cF9kYXRhX2NodW5rKSkpOwpAQCAtMTk1OSwzNiArMTk3NiwzOSBA
QCBzY3RwX3Byb2Nlc3NfYV9kYXRhX2NodW5rKHN0cnVjdCBzY3RwX3RjYiAqc3RjYiwgc3RydWN0
IHNjdHBfYXNzb2NpYXRpb24gKmFzb2MsCiAJCXJldHVybiAoMCk7CiAJfQogCS8qCi0JICogTm93
IG5vIG1hdHRlciB3aGF0IHdlIG5lZWQgYSBjb250cm9sLCBnZXQgb25lCisJICogTm93IG5vIG1h
dHRlciB3aGF0LCB3ZSBuZWVkIGEgY29udHJvbCwgZ2V0IG9uZQogCSAqIGlmIHdlIGRvbid0IGhh
dmUgb25lICh3ZSBtYXkgaGF2ZSBnb3R0ZW4gaXQKIAkgKiBhYm92ZSB3aGVuIHdlIGZvdW5kIHRo
ZSBtZXNzYWdlIHdhcyBmcmFnbWVudGVkCiAJICovCiAJaWYgKGNvbnRyb2wgPT0gTlVMTCkgewog
CQlzY3RwX2FsbG9jX2FfcmVhZHEoc3RjYiwgY29udHJvbCk7CiAJCXNjdHBfYnVpbGRfcmVhZHFf
ZW50cnlfbWFjKGNvbnRyb2wsIHN0Y2IsIGFzb2MtPmNvbnRleHQsIG5ldCwgdHNuLAotCQkJCQkg
ICBwcm90b2NvbF9pZCwKLQkJCQkJICAgc3RybW5vLCBtc2dfaWQsCi0JCQkJCSAgIGNodW5rX2Zs
YWdzLAotCQkJCQkgICBOVUxMLCBmc24sIG1zZ19pZCk7CisJCQkJCSAgIHBwaWQsCisJCQkJCSAg
IHNpZCwKKwkJCQkJICAgY2hrX2ZsYWdzLAorCQkJCQkgICBOVUxMLCBmc24sIG1pZCk7CiAJCWlm
IChjb250cm9sID09IE5VTEwpIHsKIAkJCVNDVFBfU1RBVF9JTkNSKHNjdHBzX25vbWVtKTsKIAkJ
CXJldHVybiAoMCk7CiAJCX0KLQkJaWYgKChjaHVua19mbGFncyAmIFNDVFBfREFUQV9OT1RfRlJB
RykgPT0gU0NUUF9EQVRBX05PVF9GUkFHKSB7CisJCWlmICgoY2hrX2ZsYWdzICYgU0NUUF9EQVRB
X05PVF9GUkFHKSA9PSBTQ1RQX0RBVEFfTk9UX0ZSQUcpIHsKIAkJCWNvbnRyb2wtPmRhdGEgPSBk
bWJ1ZjsKIAkJCWNvbnRyb2wtPnRhaWxfbWJ1ZiA9IE5VTEw7Ci0JCQljb250cm9sLT5lbmRfYWRk
ZWQgPSBjb250cm9sLT5sYXN0X2ZyYWdfc2VlbiA9IGNvbnRyb2wtPmZpcnN0X2ZyYWdfc2VlbiA9
IDE7Ci0JCQljb250cm9sLT50b3BfZnNuID0gY29udHJvbC0+ZnNuX2luY2x1ZGVkID0gZnNuOwor
CQkJY29udHJvbC0+ZW5kX2FkZGVkID0gMTsKKwkJCWNvbnRyb2wtPmxhc3RfZnJhZ19zZWVuID0g
MTsKKwkJCWNvbnRyb2wtPmZpcnN0X2ZyYWdfc2VlbiA9IDE7CisJCQljb250cm9sLT5mc25faW5j
bHVkZWQgPSBmc247CisJCQljb250cm9sLT50b3BfZnNuID0gZnNuOwogCQl9CiAJCWNyZWF0ZWRf
Y29udHJvbCA9IDE7CiAJfQotCVNDVFBEQkcoU0NUUF9ERUJVR19YWFgsICJjaHVua19mbGFnczog
MHgleCBvcmRlcmVkOiAlZCBtc2dpZDogJXUgY29udHJvbDogJXBcbiIsCi0JCWNodW5rX2ZsYWdz
LCBvcmRlcmVkLCBtc2dfaWQsIGNvbnRyb2wpOwotCWlmICgoY2h1bmtfZmxhZ3MgJiBTQ1RQX0RB
VEFfTk9UX0ZSQUcpID09IFNDVFBfREFUQV9OT1RfRlJBRyAmJgorCVNDVFBEQkcoU0NUUF9ERUJV
R19YWFgsICJjaHVua19mbGFnczogMHgleCBvcmRlcmVkOiAlZCBNSUQ6ICV1IGNvbnRyb2w6ICVw
XG4iLAorCQljaGtfZmxhZ3MsIG9yZGVyZWQsIG1pZCwgY29udHJvbCk7CisJaWYgKChjaGtfZmxh
Z3MgJiBTQ1RQX0RBVEFfTk9UX0ZSQUcpID09IFNDVFBfREFUQV9OT1RfRlJBRyAmJgogCSAgICBU
QUlMUV9FTVBUWSgmYXNvYy0+cmVzZXRIZWFkKSAmJgogCSAgICAoKG9yZGVyZWQgPT0gMCkgfHwK
LQkgICAgICgodWludDE2X3QpKGFzb2MtPnN0cm1pbltzdHJtbm9dLmxhc3Rfc2VxdWVuY2VfZGVs
aXZlcmVkICsgMSkgPT0gbXNnX2lkICYmCi0JICAgICAgVEFJTFFfRU1QVFkoJmFzb2MtPnN0cm1p
bltzdHJtbm9dLmlucXVldWUpKSkpIHsKKwkgICAgIChTQ1RQX01JRF9FUShhc29jLT5pZGF0YV9z
dXBwb3J0ZWQsIGFzb2MtPnN0cm1pbltzaWRdLmxhc3RfbWlkX2RlbGl2ZXJlZCArIDEsIG1pZCkg
JiYKKwkgICAgICBUQUlMUV9FTVBUWSgmYXNvYy0+c3RybWluW3NpZF0uaW5xdWV1ZSkpKSkgewog
CQkvKiBDYW5kaWRhdGUgZm9yIGV4cHJlc3MgZGVsaXZlcnkgKi8KIAkJLyoKIAkJICogSXRzIG5v
dCBmcmFnbWVudGVkLCBObyBQRC1BUEkgaXMgdXAsIE5vdGhpbmcgaW4gdGhlCkBAIC0yMDAxLDIw
ICsyMDIxLDIwIEBAIHNjdHBfcHJvY2Vzc19hX2RhdGFfY2h1bmsoc3RydWN0IHNjdHBfdGNiICpz
dGNiLCBzdHJ1Y3Qgc2N0cF9hc3NvY2lhdGlvbiAqYXNvYywKIAkJaWYgKFNDVFBfVFNOX0dUKHRz
biwgYXNvYy0+aGlnaGVzdF90c25faW5zaWRlX25yX21hcCkpIHsKIAkJCWFzb2MtPmhpZ2hlc3Rf
dHNuX2luc2lkZV9ucl9tYXAgPSB0c247CiAJCX0KLQkJU0NUUERCRyhTQ1RQX0RFQlVHX1hYWCwg
IkluamVjdGluZyBjb250cm9sOiAlcCB0byBiZSByZWFkIChtc2dfaWQ6ICV1KVxuIiwKLQkJCWNv
bnRyb2wsIG1zZ19pZCk7CisJCVNDVFBEQkcoU0NUUF9ERUJVR19YWFgsICJJbmplY3RpbmcgY29u
dHJvbDogJXAgdG8gYmUgcmVhZCAoTUlEOiAldSlcbiIsCisJCQljb250cm9sLCBtaWQpOwogCiAJ
CXNjdHBfYWRkX3RvX3JlYWRxKHN0Y2ItPnNjdHBfZXAsIHN0Y2IsCiAJCSAgICAgICAgICAgICAg
ICAgIGNvbnRyb2wsICZzdGNiLT5zY3RwX3NvY2tldC0+c29fcmN2LAogCQkgICAgICAgICAgICAg
ICAgICAxLCBTQ1RQX1JFQURfTE9DS19OT1RfSEVMRCwgU0NUUF9TT19OT1RfTE9DS0VEKTsKIAot
CQlpZiAoKGNodW5rX2ZsYWdzICYgU0NUUF9EQVRBX1VOT1JERVJFRCkgPT0gMCkgeworCQlpZiAo
KGNoa19mbGFncyAmIFNDVFBfREFUQV9VTk9SREVSRUQpID09IDApIHsKIAkJCS8qIGZvciBvcmRl
cmVkLCBidW1wIHdoYXQgd2UgZGVsaXZlcmVkICovCi0JCQlzdHJtLT5sYXN0X3NlcXVlbmNlX2Rl
bGl2ZXJlZCsrOworCQkJYXNvYy0+c3RybWluW3NpZF0ubGFzdF9taWRfZGVsaXZlcmVkKys7CiAJ
CX0KIAkJU0NUUF9TVEFUX0lOQ1Ioc2N0cHNfcmVjdmV4cHJlc3MpOwogCQlpZiAoU0NUUF9CQVNF
X1NZU0NUTChzY3RwX2xvZ2dpbmdfbGV2ZWwpICYgU0NUUF9TVFJfTE9HR0lOR19FTkFCTEUpIHsK
LQkJCXNjdHBfbG9nX3N0cm1fZGVsX2FsdChzdGNiLCB0c24sIG1zZ19pZCwgc3RybW5vLAorCQkJ
c2N0cF9sb2dfc3RybV9kZWxfYWx0KHN0Y2IsIHRzbiwgbWlkLCBzaWQsCiAJCQkJCSAgICAgIFND
VFBfU1RSX0xPR19GUk9NX0VYUFJTX0RFTCk7CiAJCX0KIAkJY29udHJvbCA9IE5VTEw7CkBAIC0y
MDIyLDcgKzIwNDIsNyBAQCBzY3RwX3Byb2Nlc3NfYV9kYXRhX2NodW5rKHN0cnVjdCBzY3RwX3Rj
YiAqc3RjYiwgc3RydWN0IHNjdHBfYXNzb2NpYXRpb24gKmFzb2MsCiAJfQogCiAJLyogTm93IHdp
bGwgd2UgbmVlZCBhIGNodW5rIHRvbz8gKi8KLQlpZiAoKGNodW5rX2ZsYWdzICYgU0NUUF9EQVRB
X05PVF9GUkFHKSAhPSBTQ1RQX0RBVEFfTk9UX0ZSQUcpIHsKKwlpZiAoKGNoa19mbGFncyAmIFND
VFBfREFUQV9OT1RfRlJBRykgIT0gU0NUUF9EQVRBX05PVF9GUkFHKSB7CiAJCXNjdHBfYWxsb2Nf
YV9jaHVuayhzdGNiLCBjaGspOwogCQlpZiAoY2hrID09IE5VTEwpIHsKIAkJCS8qIE5vIG1lbW9y
eSBzbyB3ZSBkcm9wIHRoZSBjaHVuayAqLwpAQCAtMjAzMywyMSArMjA1MywyMSBAQCBzY3RwX3By
b2Nlc3NfYV9kYXRhX2NodW5rKHN0cnVjdCBzY3RwX3RjYiAqc3RjYiwgc3RydWN0IHNjdHBfYXNz
b2NpYXRpb24gKmFzb2MsCiAJCQl9CiAJCQlyZXR1cm4gKDApOwogCQl9Ci0JCWNoay0+cmVjLmRh
dGEuVFNOX3NlcSA9IHRzbjsKKwkJY2hrLT5yZWMuZGF0YS50c24gPSB0c247CiAJCWNoay0+bm9f
ZnJfYWxsb3dlZCA9IDA7Ci0JCWNoay0+cmVjLmRhdGEuZnNuX251bSA9IGZzbjsKLQkJY2hrLT5y
ZWMuZGF0YS5zdHJlYW1fc2VxID0gbXNnX2lkOwotCQljaGstPnJlYy5kYXRhLnN0cmVhbV9udW1i
ZXIgPSBzdHJtbm87Ci0JCWNoay0+cmVjLmRhdGEucGF5bG9hZHR5cGUgPSBwcm90b2NvbF9pZDsK
KwkJY2hrLT5yZWMuZGF0YS5mc24gPSBmc247CisJCWNoay0+cmVjLmRhdGEubWlkID0gbWlkOwor
CQljaGstPnJlYy5kYXRhLnNpZCA9IHNpZDsKKwkJY2hrLT5yZWMuZGF0YS5wcGlkID0gcHBpZDsK
IAkJY2hrLT5yZWMuZGF0YS5jb250ZXh0ID0gc3RjYi0+YXNvYy5jb250ZXh0OwogCQljaGstPnJl
Yy5kYXRhLmRvaW5nX2Zhc3RfcmV0cmFuc21pdCA9IDA7Ci0JCWNoay0+cmVjLmRhdGEucmN2X2Zs
YWdzID0gY2h1bmtfZmxhZ3M7CisJCWNoay0+cmVjLmRhdGEucmN2X2ZsYWdzID0gY2hrX2ZsYWdz
OwogCQljaGstPmFzb2MgPSBhc29jOwogCQljaGstPnNlbmRfc2l6ZSA9IHRoZV9sZW47CiAJCWNo
ay0+d2hvVG8gPSBuZXQ7Ci0JCVNDVFBEQkcoU0NUUF9ERUJVR19YWFgsICJCdWlsZGluZyBjazog
JXAgZm9yIGNvbnRyb2w6ICVwIHRvIGJlIHJlYWQgKG1zZ19pZDogJXUpXG4iLAorCQlTQ1RQREJH
KFNDVFBfREVCVUdfWFhYLCAiQnVpbGRpbmcgY2s6ICVwIGZvciBjb250cm9sOiAlcCB0byBiZSBy
ZWFkIChNSUQ6ICV1KVxuIiwKIAkJCWNoaywKLQkJCWNvbnRyb2wsIG1zZ19pZCk7CisJCQljb250
cm9sLCBtaWQpOwogCQlhdG9taWNfYWRkX2ludCgmbmV0LT5yZWZfY291bnQsIDEpOwogCQljaGst
PmRhdGEgPSBkbWJ1ZjsKIAl9CkBAIC0yMDY0LDcgKzIwODQsNyBAQCBzY3RwX3Byb2Nlc3NfYV9k
YXRhX2NodW5rKHN0cnVjdCBzY3RwX3RjYiAqc3RjYiwgc3RydWN0IHNjdHBfYXNzb2NpYXRpb24g
KmFzb2MsCiAJCX0KIAl9CiAJLyogTm93IGlzIGl0IGNvbXBsZXRlIChpLmUuIG5vdCBmcmFnbWVu
dGVkKT8gKi8KLQlpZiAoKGNodW5rX2ZsYWdzICYgU0NUUF9EQVRBX05PVF9GUkFHKSA9PSBTQ1RQ
X0RBVEFfTk9UX0ZSQUcpIHsKKwlpZiAoKGNoa19mbGFncyAmIFNDVFBfREFUQV9OT1RfRlJBRykg
PT0gU0NUUF9EQVRBX05PVF9GUkFHKSB7CiAJCS8qCiAJCSAqIFNwZWNpYWwgY2hlY2sgZm9yIHdo
ZW4gc3RyZWFtcyBhcmUgcmVzZXR0aW5nLiBXZQogCQkgKiBjb3VsZCBiZSBtb3JlIHNtYXJ0IGFi
b3V0IHRoaXMgYW5kIGNoZWNrIHRoZQpAQCAtMjEwNywxMCArMjEyNywxMCBAQCBzY3RwX3Byb2Nl
c3NfYV9kYXRhX2NodW5rKHN0cnVjdCBzY3RwX3RjYiAqc3RjYiwgc3RydWN0IHNjdHBfYXNzb2Np
YXRpb24gKmFzb2MsCiAJCQl9CiAJCQlnb3RvIGZpbmlzaF9leHByZXNzX2RlbDsKIAkJfQotCQlp
ZiAoY2h1bmtfZmxhZ3MgJiBTQ1RQX0RBVEFfVU5PUkRFUkVEKSB7CisJCWlmIChjaGtfZmxhZ3Mg
JiBTQ1RQX0RBVEFfVU5PUkRFUkVEKSB7CiAJCQkvKiBxdWV1ZSBkaXJlY3RseSBpbnRvIHNvY2tl
dCBidWZmZXIgKi8KLQkJCVNDVFBEQkcoU0NUUF9ERUJVR19YWFgsICJVbm9yZGVyZWQgZGF0YSB0
byBiZSByZWFkIGNvbnRyb2w6ICVwIG1zZ19pZDogJXVcbiIsCi0JCQkJY29udHJvbCwgbXNnX2lk
KTsKKwkJCVNDVFBEQkcoU0NUUF9ERUJVR19YWFgsICJVbm9yZGVyZWQgZGF0YSB0byBiZSByZWFk
IGNvbnRyb2w6ICVwIE1JRDogJXVcbiIsCisJCQkJY29udHJvbCwgbWlkKTsKIAkJCXNjdHBfbWFy
a19ub25fcmV2b2thYmxlKGFzb2MsIGNvbnRyb2wtPnNpbmZvX3Rzbik7CiAJCQlzY3RwX2FkZF90
b19yZWFkcShzdGNiLT5zY3RwX2VwLCBzdGNiLAogCQkJICAgICAgICAgICAgICAgICAgY29udHJv
bCwKQEAgLTIxMTgsOSArMjEzOCw5IEBAIHNjdHBfcHJvY2Vzc19hX2RhdGFfY2h1bmsoc3RydWN0
IHNjdHBfdGNiICpzdGNiLCBzdHJ1Y3Qgc2N0cF9hc3NvY2lhdGlvbiAqYXNvYywKIAkJCSAgICAg
ICAgICAgICAgICAgIFNDVFBfUkVBRF9MT0NLX05PVF9IRUxELCBTQ1RQX1NPX05PVF9MT0NLRUQp
OwogCiAJCX0gZWxzZSB7Ci0JCQlTQ1RQREJHKFNDVFBfREVCVUdfWFhYLCAiUXVldWUgY29udHJv
bDogJXAgZm9yIHJlb3JkZXJpbmcgbXNnX2lkOiAldVxuIiwgY29udHJvbCwKLQkJCQltc2dfaWQp
OwotCQkJc2N0cF9xdWV1ZV9kYXRhX3RvX3N0cmVhbShzdGNiLCBzdHJtLCBhc29jLCBjb250cm9s
LCBhYm9ydF9mbGFnLCAmbmVlZF9yZWFzbV9jaGVjayk7CisJCQlTQ1RQREJHKFNDVFBfREVCVUdf
WFhYLCAiUXVldWUgY29udHJvbDogJXAgZm9yIHJlb3JkZXJpbmcgTUlEOiAldVxuIiwgY29udHJv
bCwKKwkJCQltaWQpOworCQkJc2N0cF9xdWV1ZV9kYXRhX3RvX3N0cmVhbShzdGNiLCBhc29jLCBj
b250cm9sLCBhYm9ydF9mbGFnLCAmbmVlZF9yZWFzbV9jaGVjayk7CiAJCQlpZiAoKmFib3J0X2Zs
YWcpIHsKIAkJCQlpZiAobGFzdF9jaHVuaykgewogCQkJCQkqbSA9IE5VTEw7CkBAIC0yMTMzLDkg
KzIxNTMsOSBAQCBzY3RwX3Byb2Nlc3NfYV9kYXRhX2NodW5rKHN0cnVjdCBzY3RwX3RjYiAqc3Rj
Yiwgc3RydWN0IHNjdHBfYXNzb2NpYXRpb24gKmFzb2MsCiAJLyogSWYgd2UgcmVhY2ggaGVyZSBp
dHMgYSByZWFzc2VtYmx5ICovCiAJbmVlZF9yZWFzbV9jaGVjayA9IDE7CiAJU0NUUERCRyhTQ1RQ
X0RFQlVHX1hYWCwKLQkJIlF1ZXVlIGRhdGEgdG8gc3RyZWFtIGZvciByZWFzbSBjb250cm9sOiAl
cCBtc2dfaWQ6ICV1XG4iLAotCQljb250cm9sLCBtc2dfaWQpOwotCXNjdHBfcXVldWVfZGF0YV9m
b3JfcmVhc20oc3RjYiwgYXNvYywgc3RybSwgY29udHJvbCwgY2hrLCBjcmVhdGVkX2NvbnRyb2ws
IGFib3J0X2ZsYWcsIHRzbik7CisJCSJRdWV1ZSBkYXRhIHRvIHN0cmVhbSBmb3IgcmVhc20gY29u
dHJvbDogJXAgTUlEOiAldVxuIiwKKwkJY29udHJvbCwgbWlkKTsKKwlzY3RwX3F1ZXVlX2RhdGFf
Zm9yX3JlYXNtKHN0Y2IsIGFzb2MsIGNvbnRyb2wsIGNoaywgY3JlYXRlZF9jb250cm9sLCBhYm9y
dF9mbGFnLCB0c24pOwogCWlmICgqYWJvcnRfZmxhZykgewogCQkvKgogCQkgKiB0aGUgYXNzb2Mg
aXMgbm93IGdvbmUgYW5kIGNoayB3YXMgcHV0IG9udG8gdGhlCkBAIC0yMTYzLDEyICsyMTgzLDE2
IEBAIGZpbmlzaF9leHByZXNzX2RlbDoKIAlTQ1RQX1NUQVRfSU5DUihzY3Rwc19yZWN2ZGF0YSk7
CiAJLyogU2V0IGl0IHByZXNlbnQgcGxlYXNlICovCiAJaWYgKFNDVFBfQkFTRV9TWVNDVEwoc2N0
cF9sb2dnaW5nX2xldmVsKSAmIFNDVFBfU1RSX0xPR0dJTkdfRU5BQkxFKSB7Ci0JCXNjdHBfbG9n
X3N0cm1fZGVsX2FsdChzdGNiLCB0c24sIG1zZ19pZCwgc3RybW5vLCBTQ1RQX1NUUl9MT0dfRlJP
TV9NQVJLX1RTTik7CisJCXNjdHBfbG9nX3N0cm1fZGVsX2FsdChzdGNiLCB0c24sIG1pZCwgc2lk
LCBTQ1RQX1NUUl9MT0dfRlJPTV9NQVJLX1RTTik7CiAJfQogCWlmIChTQ1RQX0JBU0VfU1lTQ1RM
KHNjdHBfbG9nZ2luZ19sZXZlbCkgJiBTQ1RQX01BUF9MT0dHSU5HX0VOQUJMRSkgewogCQlzY3Rw
X2xvZ19tYXAoYXNvYy0+bWFwcGluZ19hcnJheV9iYXNlX3RzbiwgYXNvYy0+Y3VtdWxhdGl2ZV90
c24sCiAJCQkgICAgIGFzb2MtPmhpZ2hlc3RfdHNuX2luc2lkZV9tYXAsIFNDVFBfTUFQX1BSRVBB
UkVfU0xJREUpOwogCX0KKwlpZiAobmVlZF9yZWFzbV9jaGVjaykgeworCQkodm9pZClzY3RwX2Rl
bGl2ZXJfcmVhc21fY2hlY2soc3RjYiwgYXNvYywgJmFzb2MtPnN0cm1pbltzaWRdLCBTQ1RQX1JF
QURfTE9DS19OT1RfSEVMRCk7CisJCW5lZWRfcmVhc21fY2hlY2sgPSAwOworCX0KIAkvKiBjaGVj
ayB0aGUgc3BlY2lhbCBmbGFnIGZvciBzdHJlYW0gcmVzZXRzICovCiAJaWYgKCgobGlzdGUgPSBU
QUlMUV9GSVJTVCgmYXNvYy0+cmVzZXRIZWFkKSkgIT0gTlVMTCkgJiYKIAkgICAgU0NUUF9UU05f
R0UoYXNvYy0+Y3VtdWxhdGl2ZV90c24sIGxpc3RlLT50c24pKSB7CkBAIC0yMTkwLDEwICsyMjE0
LDE0IEBAIGZpbmlzaF9leHByZXNzX2RlbDoKIAkJCS8qIEFsbCBjYW4gYmUgcmVtb3ZlZCAqLwog
CQkJVEFJTFFfRk9SRUFDSF9TQUZFKGN0bCwgJmFzb2MtPnBlbmRpbmdfcmVwbHlfcXVldWUsIG5l
eHQsIG5jdGwpIHsKIAkJCQlUQUlMUV9SRU1PVkUoJmFzb2MtPnBlbmRpbmdfcmVwbHlfcXVldWUs
IGN0bCwgbmV4dCk7Ci0JCQkJc2N0cF9xdWV1ZV9kYXRhX3RvX3N0cmVhbShzdGNiLCBzdHJtLCBh
c29jLCBjdGwsIGFib3J0X2ZsYWcsICZuZWVkX3JlYXNtX2NoZWNrKTsKKwkJCQlzY3RwX3F1ZXVl
X2RhdGFfdG9fc3RyZWFtKHN0Y2IsIGFzb2MsIGN0bCwgYWJvcnRfZmxhZywgJm5lZWRfcmVhc21f
Y2hlY2spOwogCQkJCWlmICgqYWJvcnRfZmxhZykgewogCQkJCQlyZXR1cm4gKDApOwogCQkJCX0K
KwkJCQlpZiAobmVlZF9yZWFzbV9jaGVjaykgeworCQkJCQkodm9pZClzY3RwX2RlbGl2ZXJfcmVh
c21fY2hlY2soc3RjYiwgYXNvYywgJmFzb2MtPnN0cm1pbltjdGwtPnNpbmZvX3N0cmVhbV0sIFND
VFBfUkVBRF9MT0NLX05PVF9IRUxEKTsKKwkJCQkJbmVlZF9yZWFzbV9jaGVjayA9IDA7CisJCQkJ
fQogCQkJfQogCQl9IGVsc2UgewogCQkJVEFJTFFfRk9SRUFDSF9TQUZFKGN0bCwgJmFzb2MtPnBl
bmRpbmdfcmVwbHlfcXVldWUsIG5leHQsIG5jdGwpIHsKQEAgLTIyMDYsMjMgKzIyMzQsMTYgQEAg
ZmluaXNoX2V4cHJlc3NfZGVsOgogCQkJCSAqIGN0bC0+c2luZm9fdHNuID4gbGlzdGUtPnRzbgog
CQkJCSAqLwogCQkJCVRBSUxRX1JFTU9WRSgmYXNvYy0+cGVuZGluZ19yZXBseV9xdWV1ZSwgY3Rs
LCBuZXh0KTsKLQkJCQlzY3RwX3F1ZXVlX2RhdGFfdG9fc3RyZWFtKHN0Y2IsIHN0cm0sIGFzb2Ms
IGN0bCwgYWJvcnRfZmxhZywgJm5lZWRfcmVhc21fY2hlY2spOworCQkJCXNjdHBfcXVldWVfZGF0
YV90b19zdHJlYW0oc3RjYiwgYXNvYywgY3RsLCBhYm9ydF9mbGFnLCAmbmVlZF9yZWFzbV9jaGVj
ayk7CiAJCQkJaWYgKCphYm9ydF9mbGFnKSB7CiAJCQkJCXJldHVybiAoMCk7CiAJCQkJfQorCQkJ
CWlmIChuZWVkX3JlYXNtX2NoZWNrKSB7CisJCQkJCSh2b2lkKXNjdHBfZGVsaXZlcl9yZWFzbV9j
aGVjayhzdGNiLCBhc29jLCAmYXNvYy0+c3RybWluW2N0bC0+c2luZm9fc3RyZWFtXSwgU0NUUF9S
RUFEX0xPQ0tfTk9UX0hFTEQpOworCQkJCQluZWVkX3JlYXNtX2NoZWNrID0gMDsKKwkJCQl9CiAJ
CQl9CiAJCX0KLQkJLyoKLQkJICogTm93IHNlcnZpY2UgcmUtYXNzZW1ibHkgdG8gcGljayB1cCBh
bnl0aGluZyB0aGF0IGhhcyBiZWVuCi0JCSAqIGhlbGQgb24gcmVhc3NlbWJseSBxdWV1ZT8KLQkJ
ICovCi0JCSh2b2lkKXNjdHBfZGVsaXZlcl9yZWFzbV9jaGVjayhzdGNiLCBhc29jLCBzdHJtLCBT
Q1RQX1JFQURfTE9DS19OT1RfSEVMRCk7Ci0JCW5lZWRfcmVhc21fY2hlY2sgPSAwOwotCX0KLQot
CWlmIChuZWVkX3JlYXNtX2NoZWNrKSB7Ci0JCS8qIEFub3RoZXIgb25lIHdhaXRzID8gKi8KLQkJ
KHZvaWQpc2N0cF9kZWxpdmVyX3JlYXNtX2NoZWNrKHN0Y2IsIGFzb2MsIHN0cm0sIFNDVFBfUkVB
RF9MT0NLX05PVF9IRUxEKTsKIAl9CiAJcmV0dXJuICgxKTsKIH0KQEAgLTI0MzcsMTMgKzI0NTgs
MTcgQEAgc2N0cF9zYWNrX2NoZWNrKHN0cnVjdCBzY3RwX3RjYiAqc3RjYiwgaW50IHdhc19hX2dh
cCkKIHsKIAlzdHJ1Y3Qgc2N0cF9hc3NvY2lhdGlvbiAqYXNvYzsKIAl1aW50MzJfdCBoaWdoZXN0
X3RzbjsKKwlpbnQgaXNfYV9nYXA7CiAKKwlzY3RwX3NsaWRlX21hcHBpbmdfYXJyYXlzKHN0Y2Ip
OwogCWFzb2MgPSAmc3RjYi0+YXNvYzsKIAlpZiAoU0NUUF9UU05fR1QoYXNvYy0+aGlnaGVzdF90
c25faW5zaWRlX25yX21hcCwgYXNvYy0+aGlnaGVzdF90c25faW5zaWRlX21hcCkpIHsKIAkJaGln
aGVzdF90c24gPSBhc29jLT5oaWdoZXN0X3Rzbl9pbnNpZGVfbnJfbWFwOwogCX0gZWxzZSB7CiAJ
CWhpZ2hlc3RfdHNuID0gYXNvYy0+aGlnaGVzdF90c25faW5zaWRlX21hcDsKIAl9CisJLyogSXMg
dGhlcmUgYSBnYXAgbm93PyAqLworCWlzX2FfZ2FwID0gU0NUUF9UU05fR1QoaGlnaGVzdF90c24s
IHN0Y2ItPmFzb2MuY3VtdWxhdGl2ZV90c24pOwogCiAJLyoKIAkgKiBOb3cgd2UgbmVlZCB0byBz
ZWUgaWYgd2UgbmVlZCB0byBxdWV1ZSBhIHNhY2sgb3IganVzdCBzdGFydCB0aGUKQEAgLTI0NjEs
MTQgKzI0ODYsMTEgQEAgc2N0cF9zYWNrX2NoZWNrKHN0cnVjdCBzY3RwX3RjYiAqc3RjYiwgaW50
IHdhc19hX2dhcCkKIAkJCSAgICAgICAgICAgICAgICBTQ1RQX0ZST01fU0NUUF9JTkRBVEEgKyBT
Q1RQX0xPQ18xNyk7CiAJCX0KIAkJc2N0cF9zZW5kX3NodXRkb3duKHN0Y2IsCi0JCQkJICAgKChz
dGNiLT5hc29jLmFsdGVybmF0ZSkgPyBzdGNiLT5hc29jLmFsdGVybmF0ZSA6IHN0Y2ItPmFzb2Mu
cHJpbWFyeV9kZXN0aW5hdGlvbikpOwotCQlzY3RwX3NlbmRfc2FjayhzdGNiLCBTQ1RQX1NPX05P
VF9MT0NLRUQpOworCQkgICAgICAgICAgICAgICAgICAgKChzdGNiLT5hc29jLmFsdGVybmF0ZSkg
PyBzdGNiLT5hc29jLmFsdGVybmF0ZSA6IHN0Y2ItPmFzb2MucHJpbWFyeV9kZXN0aW5hdGlvbikp
OworCQlpZiAoaXNfYV9nYXApIHsKKwkJCXNjdHBfc2VuZF9zYWNrKHN0Y2IsIFNDVFBfU09fTk9U
X0xPQ0tFRCk7CisJCX0KIAl9IGVsc2UgewotCQlpbnQgaXNfYV9nYXA7Ci0KLQkJLyogaXMgdGhl
cmUgYSBnYXAgbm93ID8gKi8KLQkJaXNfYV9nYXAgPSBTQ1RQX1RTTl9HVChoaWdoZXN0X3Rzbiwg
c3RjYi0+YXNvYy5jdW11bGF0aXZlX3Rzbik7Ci0KIAkJLyoKIAkJICogQ01UIERBQyBhbGdvcml0
aG06IGluY3JlYXNlIG51bWJlciBvZiBwYWNrZXRzCiAJCSAqIHJlY2VpdmVkIHNpbmNlIGxhc3Qg
YWNrCkBAIC0yODMwLDE2ICsyODUyLDE2IEBAIHNjdHBfcHJvY2Vzc19zZWdtZW50X3JhbmdlKHN0
cnVjdCBzY3RwX3RjYiAqc3RjYiwgc3RydWN0IHNjdHBfdG1pdF9jaHVuayAqKnBfdHAxCiAJCQlp
ZiAoKHRwMS0+c2VudCA8IFNDVFBfREFUQUdSQU1fUkVTRU5EKSAmJgogCQkJICAgICh0cDEtPndo
b1RvLT5maW5kX3BzZXVkb19jdW1hY2sgPT0gMSkgJiYKIAkJCSAgICAodHAxLT5zbmRfY291bnQg
PT0gMSkpIHsKLQkJCQl0cDEtPndob1RvLT5wc2V1ZG9fY3VtYWNrID0gdHAxLT5yZWMuZGF0YS5U
U05fc2VxOworCQkJCXRwMS0+d2hvVG8tPnBzZXVkb19jdW1hY2sgPSB0cDEtPnJlYy5kYXRhLnRz
bjsKIAkJCQl0cDEtPndob1RvLT5maW5kX3BzZXVkb19jdW1hY2sgPSAwOwogCQkJfQogCQkJaWYg
KCh0cDEtPnNlbnQgPCBTQ1RQX0RBVEFHUkFNX1JFU0VORCkgJiYKIAkJCSAgICAodHAxLT53aG9U
by0+ZmluZF9ydHhfcHNldWRvX2N1bWFjayA9PSAxKSAmJgogCQkJICAgICh0cDEtPnNuZF9jb3Vu
dCA+IDEpKSB7Ci0JCQkJdHAxLT53aG9Uby0+cnR4X3BzZXVkb19jdW1hY2sgPSB0cDEtPnJlYy5k
YXRhLlRTTl9zZXE7CisJCQkJdHAxLT53aG9Uby0+cnR4X3BzZXVkb19jdW1hY2sgPSB0cDEtPnJl
Yy5kYXRhLnRzbjsKIAkJCQl0cDEtPndob1RvLT5maW5kX3J0eF9wc2V1ZG9fY3VtYWNrID0gMDsK
IAkJCX0KLQkJCWlmICh0cDEtPnJlYy5kYXRhLlRTTl9zZXEgPT0gdGhlVFNOKSB7CisJCQlpZiAo
dHAxLT5yZWMuZGF0YS50c24gPT0gdGhlVFNOKSB7CiAJCQkJaWYgKHRwMS0+c2VudCAhPSBTQ1RQ
X0RBVEFHUkFNX1VOU0VOVCkgewogCQkJCQkvKi0KIAkJCQkJICogbXVzdCBiZSBoZWxkIHVudGls
CkBAIC0yODUzLDkgKzI4NzUsOSBAQCBzY3RwX3Byb2Nlc3Nfc2VnbWVudF9yYW5nZShzdHJ1Y3Qg
c2N0cF90Y2IgKnN0Y2IsIHN0cnVjdCBzY3RwX3RtaXRfY2h1bmsgKipwX3RwMQogCQkJCQkJICog
dmlhIHByZXZpb3VzIEdhcCBBY2sgQmxvY2tzLi4uCiAJCQkJCQkgKiBpLmUuIEFDS0VEIG9yIFJF
U0VORC4KIAkJCQkJCSAqLwotCQkJCQkJaWYgKFNDVFBfVFNOX0dUKHRwMS0+cmVjLmRhdGEuVFNO
X3NlcSwKKwkJCQkJCWlmIChTQ1RQX1RTTl9HVCh0cDEtPnJlYy5kYXRhLnRzbiwKIAkJCQkJCSAg
ICAgICAgICAgICAgICAqYmlnZ2VzdF9uZXdseV9hY2tlZF90c24pKSB7Ci0JCQkJCQkJKmJpZ2dl
c3RfbmV3bHlfYWNrZWRfdHNuID0gdHAxLT5yZWMuZGF0YS5UU05fc2VxOworCQkJCQkJCSpiaWdn
ZXN0X25ld2x5X2Fja2VkX3RzbiA9IHRwMS0+cmVjLmRhdGEudHNuOwogCQkJCQkJfQogCQkJCQkJ
LyotCiAJCQkJCQkgKiBDTVQ6IFNGUiBhbGdvIChhbmQgSFROQSkgLSBzZXQKQEAgLTI4NjcsMTAg
KzI4ODksMTAgQEAgc2N0cF9wcm9jZXNzX3NlZ21lbnRfcmFuZ2Uoc3RydWN0IHNjdHBfdGNiICpz
dGNiLCBzdHJ1Y3Qgc2N0cF90bWl0X2NodW5rICoqcF90cDEKIAkJCQkJCWlmICh0cDEtPnJlYy5k
YXRhLmNodW5rX3dhc19yZXZva2VkID09IDApCiAJCQkJCQkJdHAxLT53aG9Uby0+c2F3X25ld2Fj
ayA9IDE7CiAKLQkJCQkJCWlmIChTQ1RQX1RTTl9HVCh0cDEtPnJlYy5kYXRhLlRTTl9zZXEsCisJ
CQkJCQlpZiAoU0NUUF9UU05fR1QodHAxLT5yZWMuZGF0YS50c24sCiAJCQkJCQkgICAgICAgICAg
ICAgICAgdHAxLT53aG9Uby0+dGhpc19zYWNrX2hpZ2hlc3RfbmV3YWNrKSkgewogCQkJCQkJCXRw
MS0+d2hvVG8tPnRoaXNfc2Fja19oaWdoZXN0X25ld2FjayA9Ci0JCQkJCQkJCXRwMS0+cmVjLmRh
dGEuVFNOX3NlcTsKKwkJCQkJCQkJdHAxLT5yZWMuZGF0YS50c247CiAJCQkJCQl9CiAJCQkJCQkv
Ki0KIAkJCQkJCSAqIENNVCBEQUMgYWxnbzogYWxzbyB1cGRhdGUKQEAgLTI4ODAsMTIgKzI5MDIs
MTIgQEAgc2N0cF9wcm9jZXNzX3NlZ21lbnRfcmFuZ2Uoc3RydWN0IHNjdHBfdGNiICpzdGNiLCBz
dHJ1Y3Qgc2N0cF90bWl0X2NodW5rICoqcF90cDEKIAkJCQkJCQlpZiAoU0NUUF9CQVNFX1NZU0NU
TChzY3RwX2xvZ2dpbmdfbGV2ZWwpICYgU0NUUF9TQUNLX0xPR0dJTkdfRU5BQkxFKSB7CiAJCQkJ
CQkJCXNjdHBfbG9nX3NhY2soKnRoaXNfc2Fja19sb3dlc3RfbmV3YWNrLAogCQkJCQkJCQkJICAg
ICAgbGFzdF90c24sCi0JCQkJCQkJCQkgICAgICB0cDEtPnJlYy5kYXRhLlRTTl9zZXEsCisJCQkJ
CQkJCQkgICAgICB0cDEtPnJlYy5kYXRhLnRzbiwKIAkJCQkJCQkJCSAgICAgIDAsCiAJCQkJCQkJ
CQkgICAgICAwLAogCQkJCQkJCQkJICAgICAgU0NUUF9MT0dfVFNOX0FDS0VEKTsKIAkJCQkJCQl9
Ci0JCQkJCQkJKnRoaXNfc2Fja19sb3dlc3RfbmV3YWNrID0gdHAxLT5yZWMuZGF0YS5UU05fc2Vx
OworCQkJCQkJCSp0aGlzX3NhY2tfbG93ZXN0X25ld2FjayA9IHRwMS0+cmVjLmRhdGEudHNuOwog
CQkJCQkJfQogCQkJCQkJLyotCiAJCQkJCQkgKiBDTVQ6IENVQ3YyIGFsZ29yaXRobS4gSWYgKHJ0
eC0pcHNldWRvLWN1bWFjayBmb3IgY29ycmVzcApAQCAtMjg5NSwxNiArMjkxNywxNiBAQCBzY3Rw
X3Byb2Nlc3Nfc2VnbWVudF9yYW5nZShzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsIHN0cnVjdCBzY3Rw
X3RtaXRfY2h1bmsgKipwX3RwMQogCQkJCQkJICogU2VwYXJhdGUgcHNldWRvX2N1bWFjayB0cmFj
a2VycyBmb3IgZmlyc3QgdHJhbnNtaXNzaW9ucyBhbmQKIAkJCQkJCSAqIHJldHJhbnNtaXNzaW9u
cy4KIAkJCQkJCSAqLwotCQkJCQkJaWYgKHRwMS0+cmVjLmRhdGEuVFNOX3NlcSA9PSB0cDEtPndo
b1RvLT5wc2V1ZG9fY3VtYWNrKSB7CisJCQkJCQlpZiAodHAxLT5yZWMuZGF0YS50c24gPT0gdHAx
LT53aG9Uby0+cHNldWRvX2N1bWFjaykgewogCQkJCQkJCWlmICh0cDEtPnJlYy5kYXRhLmNodW5r
X3dhc19yZXZva2VkID09IDApIHsKIAkJCQkJCQkJdHAxLT53aG9Uby0+bmV3X3BzZXVkb19jdW1h
Y2sgPSAxOwogCQkJCQkJCX0KIAkJCQkJCQl0cDEtPndob1RvLT5maW5kX3BzZXVkb19jdW1hY2sg
PSAxOwogCQkJCQkJfQogCQkJCQkJaWYgKFNDVFBfQkFTRV9TWVNDVEwoc2N0cF9sb2dnaW5nX2xl
dmVsKSAmIFNDVFBfQ1dORF9MT0dHSU5HX0VOQUJMRSkgewotCQkJCQkJCXNjdHBfbG9nX2N3bmQo
c3RjYiwgdHAxLT53aG9UbywgdHAxLT5yZWMuZGF0YS5UU05fc2VxLCBTQ1RQX0NXTkRfTE9HX0ZS
T01fU0FDSyk7CisJCQkJCQkJc2N0cF9sb2dfY3duZChzdGNiLCB0cDEtPndob1RvLCB0cDEtPnJl
Yy5kYXRhLnRzbiwgU0NUUF9DV05EX0xPR19GUk9NX1NBQ0spOwogCQkJCQkJfQotCQkJCQkJaWYg
KHRwMS0+cmVjLmRhdGEuVFNOX3NlcSA9PSB0cDEtPndob1RvLT5ydHhfcHNldWRvX2N1bWFjaykg
eworCQkJCQkJaWYgKHRwMS0+cmVjLmRhdGEudHNuID09IHRwMS0+d2hvVG8tPnJ0eF9wc2V1ZG9f
Y3VtYWNrKSB7CiAJCQkJCQkJaWYgKHRwMS0+cmVjLmRhdGEuY2h1bmtfd2FzX3Jldm9rZWQgPT0g
MCkgewogCQkJCQkJCQl0cDEtPndob1RvLT5uZXdfcHNldWRvX2N1bWFjayA9IDE7CiAJCQkJCQkJ
fQpAQCAtMjkxMyw3ICsyOTM1LDcgQEAgc2N0cF9wcm9jZXNzX3NlZ21lbnRfcmFuZ2Uoc3RydWN0
IHNjdHBfdGNiICpzdGNiLCBzdHJ1Y3Qgc2N0cF90bWl0X2NodW5rICoqcF90cDEKIAkJCQkJCWlm
IChTQ1RQX0JBU0VfU1lTQ1RMKHNjdHBfbG9nZ2luZ19sZXZlbCkgJiBTQ1RQX1NBQ0tfTE9HR0lO
R19FTkFCTEUpIHsKIAkJCQkJCQlzY3RwX2xvZ19zYWNrKCpiaWdnZXN0X25ld2x5X2Fja2VkX3Rz
biwKIAkJCQkJCQkJICAgICAgbGFzdF90c24sCi0JCQkJCQkJCSAgICAgIHRwMS0+cmVjLmRhdGEu
VFNOX3NlcSwKKwkJCQkJCQkJICAgICAgdHAxLT5yZWMuZGF0YS50c24sCiAJCQkJCQkJCSAgICAg
IGZyYWdfc3RydCwKIAkJCQkJCQkJICAgICAgZnJhZ19lbmQsCiAJCQkJCQkJCSAgICAgIFNDVFBf
TE9HX1RTTl9BQ0tFRCk7CkBAIC0yOTIzLDcgKzI5NDUsNyBAQCBzY3RwX3Byb2Nlc3Nfc2VnbWVu
dF9yYW5nZShzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsIHN0cnVjdCBzY3RwX3RtaXRfY2h1bmsgKipw
X3RwMQogCQkJCQkJCQkgICAgICAgdHAxLT53aG9Uby0+ZmxpZ2h0X3NpemUsCiAJCQkJCQkJCSAg
ICAgICB0cDEtPmJvb2tfc2l6ZSwKIAkJCQkJCQkJICAgICAgICh1aW50MzJfdCkodWludHB0cl90
KXRwMS0+d2hvVG8sCi0JCQkJCQkJCSAgICAgICB0cDEtPnJlYy5kYXRhLlRTTl9zZXEpOworCQkJ
CQkJCQkgICAgICAgdHAxLT5yZWMuZGF0YS50c24pOwogCQkJCQkJfQogCQkJCQkJc2N0cF9mbGln
aHRfc2l6ZV9kZWNyZWFzZSh0cDEpOwogCQkJCQkJaWYgKHN0Y2ItPmFzb2MuY2NfZnVuY3Rpb25z
LnNjdHBfY3duZF91cGRhdGVfdHNuX2Fja25vd2xlZGdlZCkgewpAQCAtMjk2MiwxMCArMjk4NCwx
MCBAQCBzY3RwX3Byb2Nlc3Nfc2VnbWVudF9yYW5nZShzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsIHN0
cnVjdCBzY3RwX3RtaXRfY2h1bmsgKipwX3RwMQogCiAJCQkJCX0KIAkJCQkJaWYgKHRwMS0+c2Vu
dCA8PSBTQ1RQX0RBVEFHUkFNX1JFU0VORCkgewotCQkJCQkJaWYgKFNDVFBfVFNOX0dUKHRwMS0+
cmVjLmRhdGEuVFNOX3NlcSwKKwkJCQkJCWlmIChTQ1RQX1RTTl9HVCh0cDEtPnJlYy5kYXRhLnRz
biwKIAkJCQkJCSAgICAgICAgICAgICAgICBzdGNiLT5hc29jLnRoaXNfc2Fja19oaWdoZXN0X2dh
cCkpIHsKIAkJCQkJCQlzdGNiLT5hc29jLnRoaXNfc2Fja19oaWdoZXN0X2dhcCA9Ci0JCQkJCQkJ
CXRwMS0+cmVjLmRhdGEuVFNOX3NlcTsKKwkJCQkJCQkJdHAxLT5yZWMuZGF0YS50c247CiAJCQkJ
CQl9CiAJCQkJCQlpZiAodHAxLT5zZW50ID09IFNDVFBfREFUQUdSQU1fUkVTRU5EKSB7CiAJCQkJ
CQkJc2N0cF91Y291bnRfZGVjcihzdGNiLT5hc29jLnNlbnRfcXVldWVfcmV0cmFuX2NudCk7CkBA
IC0yOTkxLDE2ICszMDEzLDE2IEBAIHNjdHBfcHJvY2Vzc19zZWdtZW50X3JhbmdlKHN0cnVjdCBz
Y3RwX3RjYiAqc3RjYiwgc3RydWN0IHNjdHBfdG1pdF9jaHVuayAqKnBfdHAxCiAJCQkJCS8qIE5S
IFNhY2sgY29kZSBoZXJlICovCiAJCQkJCWlmIChucl9zYWNraW5nICYmCiAJCQkJCSAgICAodHAx
LT5zZW50ICE9IFNDVFBfREFUQUdSQU1fTlJfQUNLRUQpKSB7Ci0JCQkJCQlpZiAoc3RjYi0+YXNv
Yy5zdHJtb3V0W3RwMS0+cmVjLmRhdGEuc3RyZWFtX251bWJlcl0uY2h1bmtzX29uX3F1ZXVlcyA+
IDApIHsKLQkJCQkJCQlzdGNiLT5hc29jLnN0cm1vdXRbdHAxLT5yZWMuZGF0YS5zdHJlYW1fbnVt
YmVyXS5jaHVua3Nfb25fcXVldWVzLS07CisJCQkJCQlpZiAoc3RjYi0+YXNvYy5zdHJtb3V0W3Rw
MS0+cmVjLmRhdGEuc2lkXS5jaHVua3Nfb25fcXVldWVzID4gMCkgeworCQkJCQkJCXN0Y2ItPmFz
b2Muc3RybW91dFt0cDEtPnJlYy5kYXRhLnNpZF0uY2h1bmtzX29uX3F1ZXVlcy0tOwogI2lmZGVm
IElOVkFSSUFOVFMKIAkJCQkJCX0gZWxzZSB7Ci0JCQkJCQkJcGFuaWMoIk5vIGNodW5rcyBvbiB0
aGUgcXVldWVzIGZvciBzaWQgJXUuIiwgdHAxLT5yZWMuZGF0YS5zdHJlYW1fbnVtYmVyKTsKKwkJ
CQkJCQlwYW5pYygiTm8gY2h1bmtzIG9uIHRoZSBxdWV1ZXMgZm9yIHNpZCAldS4iLCB0cDEtPnJl
Yy5kYXRhLnNpZCk7CiAjZW5kaWYKIAkJCQkJCX0KLQkJCQkJCWlmICgoc3RjYi0+YXNvYy5zdHJt
b3V0W3RwMS0+cmVjLmRhdGEuc3RyZWFtX251bWJlcl0uY2h1bmtzX29uX3F1ZXVlcyA9PSAwKSAm
JgotCQkJCQkJICAgIChzdGNiLT5hc29jLnN0cm1vdXRbdHAxLT5yZWMuZGF0YS5zdHJlYW1fbnVt
YmVyXS5zdGF0ZSA9PSBTQ1RQX1NUUkVBTV9SRVNFVF9QRU5ESU5HKSAmJgotCQkJCQkJICAgIFRB
SUxRX0VNUFRZKCZzdGNiLT5hc29jLnN0cm1vdXRbdHAxLT5yZWMuZGF0YS5zdHJlYW1fbnVtYmVy
XS5vdXRxdWV1ZSkpIHsKKwkJCQkJCWlmICgoc3RjYi0+YXNvYy5zdHJtb3V0W3RwMS0+cmVjLmRh
dGEuc2lkXS5jaHVua3Nfb25fcXVldWVzID09IDApICYmCisJCQkJCQkgICAgKHN0Y2ItPmFzb2Mu
c3RybW91dFt0cDEtPnJlYy5kYXRhLnNpZF0uc3RhdGUgPT0gU0NUUF9TVFJFQU1fUkVTRVRfUEVO
RElORykgJiYKKwkJCQkJCSAgICBUQUlMUV9FTVBUWSgmc3RjYi0+YXNvYy5zdHJtb3V0W3RwMS0+
cmVjLmRhdGEuc2lkXS5vdXRxdWV1ZSkpIHsKIAkJCQkJCQlzdGNiLT5hc29jLnRyaWdnZXJfcmVz
ZXQgPSAxOwogCQkJCQkJfQogCQkJCQkJdHAxLT5zZW50ID0gU0NUUF9EQVRBR1JBTV9OUl9BQ0tF
RDsKQEAgLTMwMTQsOCArMzAzNiw4IEBAIHNjdHBfcHJvY2Vzc19zZWdtZW50X3JhbmdlKHN0cnVj
dCBzY3RwX3RjYiAqc3RjYiwgc3RydWN0IHNjdHBfdG1pdF9jaHVuayAqKnBfdHAxCiAJCQkJCX0K
IAkJCQl9CiAJCQkJYnJlYWs7Ci0JCQl9CS8qIGlmICh0cDEtPlRTTl9zZXEgPT0gdGhlVFNOKSAq
LwotCQkJaWYgKFNDVFBfVFNOX0dUKHRwMS0+cmVjLmRhdGEuVFNOX3NlcSwgdGhlVFNOKSkgewor
CQkJfQkvKiBpZiAodHAxLT50c24gPT0gdGhlVFNOKSAqLworCQkJaWYgKFNDVFBfVFNOX0dUKHRw
MS0+cmVjLmRhdGEudHNuLCB0aGVUU04pKSB7CiAJCQkJYnJlYWs7CiAJCQl9CiAJCQl0cDEgPSBU
QUlMUV9ORVhUKHRwMSwgc2N0cF9uZXh0KTsKQEAgLTMxMDcsMTQgKzMxMjksMTQgQEAgc2N0cF9j
aGVja19mb3JfcmV2b2tlZChzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsCiAJc3RydWN0IHNjdHBfdG1p
dF9jaHVuayAqdHAxOwogCiAJVEFJTFFfRk9SRUFDSCh0cDEsICZhc29jLT5zZW50X3F1ZXVlLCBz
Y3RwX25leHQpIHsKLQkJaWYgKFNDVFBfVFNOX0dUKHRwMS0+cmVjLmRhdGEuVFNOX3NlcSwgY3Vt
YWNrKSkgeworCQlpZiAoU0NUUF9UU05fR1QodHAxLT5yZWMuZGF0YS50c24sIGN1bWFjaykpIHsK
IAkJCS8qCiAJCQkgKiBvayB0aGlzIGd1eSBpcyBlaXRoZXIgQUNLIG9yIE1BUktFRC4gSWYgaXQg
aXMKIAkJCSAqIEFDS0VEIGl0IGhhcyBiZWVuIHByZXZpb3VzbHkgYWNrZWQgYnV0IG5vdCB0aGlz
CiAJCQkgKiB0aW1lIGkuZS4gcmV2b2tlZC4gIElmIGl0IGlzIE1BUktFRCBpdCB3YXMgQUNLJ2Vk
CiAJCQkgKiBhZ2Fpbi4KIAkJCSAqLwotCQkJaWYgKFNDVFBfVFNOX0dUKHRwMS0+cmVjLmRhdGEu
VFNOX3NlcSwgYmlnZ2VzdF90c25fYWNrZWQpKSB7CisJCQlpZiAoU0NUUF9UU05fR1QodHAxLT5y
ZWMuZGF0YS50c24sIGJpZ2dlc3RfdHNuX2Fja2VkKSkgewogCQkJCWJyZWFrOwogCQkJfQogCQkJ
aWYgKHRwMS0+c2VudCA9PSBTQ1RQX0RBVEFHUkFNX0FDS0VEKSB7CkBAIC0zMTI5LDcgKzMxNTEs
NyBAQCBzY3RwX2NoZWNrX2Zvcl9yZXZva2VkKHN0cnVjdCBzY3RwX3RjYiAqc3RjYiwKIAkJCQkJ
CSAgICAgICB0cDEtPndob1RvLT5mbGlnaHRfc2l6ZSwKIAkJCQkJCSAgICAgICB0cDEtPmJvb2tf
c2l6ZSwKIAkJCQkJCSAgICAgICAodWludDMyX3QpKHVpbnRwdHJfdCl0cDEtPndob1RvLAotCQkJ
CQkJICAgICAgIHRwMS0+cmVjLmRhdGEuVFNOX3NlcSk7CisJCQkJCQkgICAgICAgdHAxLT5yZWMu
ZGF0YS50c24pOwogCQkJCX0KIAkJCQlzY3RwX2ZsaWdodF9zaXplX2luY3JlYXNlKHRwMSk7CiAJ
CQkJc2N0cF90b3RhbF9mbGlnaHRfaW5jcmVhc2Uoc3RjYiwgdHAxKTsKQEAgLTMxNDAsNyArMzE2
Miw3IEBAIHNjdHBfY2hlY2tfZm9yX3Jldm9rZWQoc3RydWN0IHNjdHBfdGNiICpzdGNiLAogCQkJ
CWlmIChTQ1RQX0JBU0VfU1lTQ1RMKHNjdHBfbG9nZ2luZ19sZXZlbCkgJiBTQ1RQX1NBQ0tfTE9H
R0lOR19FTkFCTEUpIHsKIAkJCQkJc2N0cF9sb2dfc2Fjayhhc29jLT5sYXN0X2Fja2VkX3NlcSwK
IAkJCQkJCSAgICAgIGN1bWFjaywKLQkJCQkJCSAgICAgIHRwMS0+cmVjLmRhdGEuVFNOX3NlcSwK
KwkJCQkJCSAgICAgIHRwMS0+cmVjLmRhdGEudHNuLAogCQkJCQkJICAgICAgMCwKIAkJCQkJCSAg
ICAgIDAsCiAJCQkJCQkgICAgICBTQ1RQX0xPR19UU05fUkVWT0tFRCk7CkBAIC0zMTc2LDcgKzMx
OTgsNyBAQCBzY3RwX3N0cmlrZV9nYXBfYWNrX2NodW5rcyhzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2Is
IHN0cnVjdCBzY3RwX2Fzc29jaWF0aW9uICphc29jLAogCWlmICh0cDEgPT0gTlVMTCkgewogCQlz
ZW5kaW5nX3NlcSA9IGFzb2MtPnNlbmRpbmdfc2VxOwogCX0gZWxzZSB7Ci0JCXNlbmRpbmdfc2Vx
ID0gdHAxLT5yZWMuZGF0YS5UU05fc2VxOworCQlzZW5kaW5nX3NlcSA9IHRwMS0+cmVjLmRhdGEu
dHNuOwogCX0KIAogCS8qIENNVCBEQUMgYWxnbzogZmluZGluZyBvdXQgaWYgU0FDSyBpcyBhIG1p
eGVkIFNBQ0sgKi8KQEAgLTMxOTksMTEgKzMyMjEsMTEgQEAgc2N0cF9zdHJpa2VfZ2FwX2Fja19j
aHVua3Moc3RydWN0IHNjdHBfdGNiICpzdGNiLCBzdHJ1Y3Qgc2N0cF9hc3NvY2lhdGlvbiAqYXNv
YywKIAkJaWYgKFNDVFBfQkFTRV9TWVNDVEwoc2N0cF9sb2dnaW5nX2xldmVsKSAmIFNDVFBfRlJf
TE9HR0lOR19FTkFCTEUpIHsKIAkJCWlmICh0cDEtPnNlbnQgPCBTQ1RQX0RBVEFHUkFNX1JFU0VO
RCkKIAkJCQlzY3RwX2xvZ19mcihiaWdnZXN0X3Rzbl9uZXdseV9hY2tlZCwKLQkJCQkJICAgIHRw
MS0+cmVjLmRhdGEuVFNOX3NlcSwKKwkJCQkJICAgIHRwMS0+cmVjLmRhdGEudHNuLAogCQkJCQkg
ICAgdHAxLT5zZW50LAogCQkJCQkgICAgU0NUUF9GUl9MT0dfQ0hFQ0tfU1RSSUtFKTsKIAkJfQot
CQlpZiAoU0NUUF9UU05fR1QodHAxLT5yZWMuZGF0YS5UU05fc2VxLCBiaWdnZXN0X3Rzbl9hY2tl
ZCkgfHwKKwkJaWYgKFNDVFBfVFNOX0dUKHRwMS0+cmVjLmRhdGEudHNuLCBiaWdnZXN0X3Rzbl9h
Y2tlZCkgfHwKIAkJICAgIHRwMS0+c2VudCA9PSBTQ1RQX0RBVEFHUkFNX1VOU0VOVCkgewogCQkJ
LyogZG9uZSAqLwogCQkJYnJlYWs7CkBAIC0zMjI2LDcgKzMyNDgsNyBAQCBzY3RwX3N0cmlrZV9n
YXBfYWNrX2NodW5rcyhzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsIHN0cnVjdCBzY3RwX2Fzc29jaWF0
aW9uICphc29jLAogCQkJfQogCiAJCX0KLQkJaWYgKFNDVFBfVFNOX0dUKHRwMS0+cmVjLmRhdGEu
VFNOX3NlcSwgYXNvYy0+dGhpc19zYWNrX2hpZ2hlc3RfZ2FwKSkgeworCQlpZiAoU0NUUF9UU05f
R1QodHAxLT5yZWMuZGF0YS50c24sIGFzb2MtPnRoaXNfc2Fja19oaWdoZXN0X2dhcCkpIHsKIAkJ
CS8qIHdlIGFyZSBiZXlvbmQgdGhlIHRzbiBpbiB0aGUgc2FjayAgKi8KIAkJCWJyZWFrOwogCQl9
CkBAIC0zMjUwLDcgKzMyNzIsNyBAQCBzY3RwX3N0cmlrZV9nYXBfYWNrX2NodW5rcyhzdHJ1Y3Qg
c2N0cF90Y2IgKnN0Y2IsIHN0cnVjdCBzY3RwX2Fzc29jaWF0aW9uICphc29jLAogCQkJICogRlIg
dXNpbmcgdGhpcyBTQUNLLgogCQkJICovCiAJCQljb250aW51ZTsKLQkJfSBlbHNlIGlmICh0cDEt
Pndob1RvICYmIFNDVFBfVFNOX0dUKHRwMS0+cmVjLmRhdGEuVFNOX3NlcSwKKwkJfSBlbHNlIGlm
ICh0cDEtPndob1RvICYmIFNDVFBfVFNOX0dUKHRwMS0+cmVjLmRhdGEudHNuLAogCQkgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdHAxLT53aG9Uby0+dGhpc19zYWNrX2hpZ2hl
c3RfbmV3YWNrKSkgewogCQkJLyoKIAkJCSAqIENNVDogTmV3IGFja3Mgd2VyZSByZWNlaWV2ZWQg
Zm9yIGRhdGEgc2VudCB0bwpAQCAtMzI3OSw3ICszMzAxLDcgQEAgc2N0cF9zdHJpa2VfZ2FwX2Fj
a19jaHVua3Moc3RydWN0IHNjdHBfdGNiICpzdGNiLCBzdHJ1Y3Qgc2N0cF9hc3NvY2lhdGlvbiAq
YXNvYywKIAkJCSAqLwogCQkJaWYgKFNDVFBfQkFTRV9TWVNDVEwoc2N0cF9sb2dnaW5nX2xldmVs
KSAmIFNDVFBfRlJfTE9HR0lOR19FTkFCTEUpIHsKIAkJCQlzY3RwX2xvZ19mcihiaWdnZXN0X3Rz
bl9uZXdseV9hY2tlZCwKLQkJCQkJICAgIHRwMS0+cmVjLmRhdGEuVFNOX3NlcSwKKwkJCQkJICAg
IHRwMS0+cmVjLmRhdGEudHNuLAogCQkJCQkgICAgdHAxLT5zZW50LAogCQkJCQkgICAgU0NUUF9G
Ul9MT0dfU1RSSUtFX0NIVU5LKTsKIAkJCX0KQEAgLTMzMDAsMTAgKzMzMjIsMTAgQEAgc2N0cF9z
dHJpa2VfZ2FwX2Fja19jaHVua3Moc3RydWN0IHNjdHBfdGNiICpzdGNiLCBzdHJ1Y3Qgc2N0cF9h
c3NvY2lhdGlvbiAqYXNvYywKIAkJCQkgKiB0d28gcGFja2V0cyBoYXZlIGJlZW4gcmVjZWl2ZWQg
YWZ0ZXIgdGhpcyBtaXNzaW5nIFRTTi4KIAkJCQkgKi8KIAkJCQlpZiAoKHRwMS0+c2VudCA8IFND
VFBfREFUQUdSQU1fUkVTRU5EKSAmJiAobnVtX2Rlc3RzX3NhY2tlZCA9PSAxKSAmJgotCQkJCSAg
ICBTQ1RQX1RTTl9HVCh0aGlzX3NhY2tfbG93ZXN0X25ld2FjaywgdHAxLT5yZWMuZGF0YS5UU05f
c2VxKSkgeworCQkJCSAgICBTQ1RQX1RTTl9HVCh0aGlzX3NhY2tfbG93ZXN0X25ld2FjaywgdHAx
LT5yZWMuZGF0YS50c24pKSB7CiAJCQkJCWlmIChTQ1RQX0JBU0VfU1lTQ1RMKHNjdHBfbG9nZ2lu
Z19sZXZlbCkgJiBTQ1RQX0ZSX0xPR0dJTkdfRU5BQkxFKSB7CiAJCQkJCQlzY3RwX2xvZ19mcigx
NiArIG51bV9kZXN0c19zYWNrZWQsCi0JCQkJCQkJICAgIHRwMS0+cmVjLmRhdGEuVFNOX3NlcSwK
KwkJCQkJCQkgICAgdHAxLT5yZWMuZGF0YS50c24sCiAJCQkJCQkJICAgIHRwMS0+c2VudCwKIAkJ
CQkJCQkgICAgU0NUUF9GUl9MT0dfU1RSSUtFX0NIVU5LKTsKIAkJCQkJfQpAQCAtMzM0MSw3ICsz
MzYzLDcgQEAgc2N0cF9zdHJpa2VfZ2FwX2Fja19jaHVua3Moc3RydWN0IHNjdHBfdGNiICpzdGNi
LCBzdHJ1Y3Qgc2N0cF9hc3NvY2lhdGlvbiAqYXNvYywKIAkJCQkJICovCiAJCQkJCWlmIChTQ1RQ
X0JBU0VfU1lTQ1RMKHNjdHBfbG9nZ2luZ19sZXZlbCkgJiBTQ1RQX0ZSX0xPR0dJTkdfRU5BQkxF
KSB7CiAJCQkJCQlzY3RwX2xvZ19mcihiaWdnZXN0X3Rzbl9uZXdseV9hY2tlZCwKLQkJCQkJCQkg
ICAgdHAxLT5yZWMuZGF0YS5UU05fc2VxLAorCQkJCQkJCSAgICB0cDEtPnJlYy5kYXRhLnRzbiwK
IAkJCQkJCQkgICAgdHAxLT5zZW50LAogCQkJCQkJCSAgICBTQ1RQX0ZSX0xPR19TVFJJS0VfQ0hV
TkspOwogCQkJCQl9CkBAIC0zMzY5LDEwICszMzkxLDEwIEBAIHNjdHBfc3RyaWtlX2dhcF9hY2tf
Y2h1bmtzKHN0cnVjdCBzY3RwX3RjYiAqc3RjYiwgc3RydWN0IHNjdHBfYXNzb2NpYXRpb24gKmFz
b2MsCiAJCQkJCQlpZiAoKHRwMS0+c2VudCA8IFNDVFBfREFUQUdSQU1fUkVTRU5EKSAmJgogCQkJ
CQkJICAgIChudW1fZGVzdHNfc2Fja2VkID09IDEpICYmCiAJCQkJCQkgICAgU0NUUF9UU05fR1Qo
dGhpc19zYWNrX2xvd2VzdF9uZXdhY2ssCi0JCQkJCQkgICAgICAgICAgICAgICAgdHAxLT5yZWMu
ZGF0YS5UU05fc2VxKSkgeworCQkJCQkJICAgICAgICAgICAgICAgIHRwMS0+cmVjLmRhdGEudHNu
KSkgewogCQkJCQkJCWlmIChTQ1RQX0JBU0VfU1lTQ1RMKHNjdHBfbG9nZ2luZ19sZXZlbCkgJiBT
Q1RQX0ZSX0xPR0dJTkdfRU5BQkxFKSB7CiAJCQkJCQkJCXNjdHBfbG9nX2ZyKDMyICsgbnVtX2Rl
c3RzX3NhY2tlZCwKLQkJCQkJCQkJCSAgICB0cDEtPnJlYy5kYXRhLlRTTl9zZXEsCisJCQkJCQkJ
CQkgICAgdHAxLT5yZWMuZGF0YS50c24sCiAJCQkJCQkJCQkgICAgdHAxLT5zZW50LAogCQkJCQkJ
CQkJICAgIFNDVFBfRlJfTE9HX1NUUklLRV9DSFVOSyk7CiAJCQkJCQkJfQpAQCAtMzM4Nyw3ICsz
NDA5LDcgQEAgc2N0cF9zdHJpa2VfZ2FwX2Fja19jaHVua3Moc3RydWN0IHNjdHBfdGNiICpzdGNi
LCBzdHJ1Y3Qgc2N0cF9hc3NvY2lhdGlvbiAqYXNvYywKIAkJCSAqIEpSSTogVE9ETzogcmVtb3Zl
IGNvZGUgZm9yIEhUTkEgYWxnby4gQ01UJ3MKIAkJCSAqIFNGUiBhbGdvIGNvdmVycyBIVE5BLgog
CQkJICovCi0JCX0gZWxzZSBpZiAoU0NUUF9UU05fR1QodHAxLT5yZWMuZGF0YS5UU05fc2VxLAor
CQl9IGVsc2UgaWYgKFNDVFBfVFNOX0dUKHRwMS0+cmVjLmRhdGEudHNuLAogCQkgICAgICAgICAg
ICAgICAgICAgICAgIGJpZ2dlc3RfdHNuX25ld2x5X2Fja2VkKSkgewogCQkJLyoKIAkJCSAqIFdl
IGRvbid0IHN0cmlrZSB0aGVzZTogVGhpcyBpcyB0aGUgIEhUTkEKQEAgLTMzOTksNyArMzQyMSw3
IEBAIHNjdHBfc3RyaWtlX2dhcF9hY2tfY2h1bmtzKHN0cnVjdCBzY3RwX3RjYiAqc3RjYiwgc3Ry
dWN0IHNjdHBfYXNzb2NpYXRpb24gKmFzb2MsCiAJCQkvKiBTdHJpa2UgdGhlIFRTTiAqLwogCQkJ
aWYgKFNDVFBfQkFTRV9TWVNDVEwoc2N0cF9sb2dnaW5nX2xldmVsKSAmIFNDVFBfRlJfTE9HR0lO
R19FTkFCTEUpIHsKIAkJCQlzY3RwX2xvZ19mcihiaWdnZXN0X3Rzbl9uZXdseV9hY2tlZCwKLQkJ
CQkJICAgIHRwMS0+cmVjLmRhdGEuVFNOX3NlcSwKKwkJCQkJICAgIHRwMS0+cmVjLmRhdGEudHNu
LAogCQkJCQkgICAgdHAxLT5zZW50LAogCQkJCQkgICAgU0NUUF9GUl9MT0dfU1RSSUtFX0NIVU5L
KTsKIAkJCX0KQEAgLTM0MjAsMTAgKzM0NDIsMTAgQEAgc2N0cF9zdHJpa2VfZ2FwX2Fja19jaHVu
a3Moc3RydWN0IHNjdHBfdGNiICpzdGNiLCBzdHJ1Y3Qgc2N0cF9hc3NvY2lhdGlvbiAqYXNvYywK
IAkJCQkgKiB0d28gcGFja2V0cyBoYXZlIGJlZW4gcmVjZWl2ZWQgYWZ0ZXIgdGhpcyBtaXNzaW5n
IFRTTi4KIAkJCQkgKi8KIAkJCQlpZiAoKHRwMS0+c2VudCA8IFNDVFBfREFUQUdSQU1fUkVTRU5E
KSAmJiAobnVtX2Rlc3RzX3NhY2tlZCA9PSAxKSAmJgotCQkJCSAgICBTQ1RQX1RTTl9HVCh0aGlz
X3NhY2tfbG93ZXN0X25ld2FjaywgdHAxLT5yZWMuZGF0YS5UU05fc2VxKSkgeworCQkJCSAgICBT
Q1RQX1RTTl9HVCh0aGlzX3NhY2tfbG93ZXN0X25ld2FjaywgdHAxLT5yZWMuZGF0YS50c24pKSB7
CiAJCQkJCWlmIChTQ1RQX0JBU0VfU1lTQ1RMKHNjdHBfbG9nZ2luZ19sZXZlbCkgJiBTQ1RQX0ZS
X0xPR0dJTkdfRU5BQkxFKSB7CiAJCQkJCQlzY3RwX2xvZ19mcig0OCArIG51bV9kZXN0c19zYWNr
ZWQsCi0JCQkJCQkJICAgIHRwMS0+cmVjLmRhdGEuVFNOX3NlcSwKKwkJCQkJCQkgICAgdHAxLT5y
ZWMuZGF0YS50c24sCiAJCQkJCQkJICAgIHRwMS0+c2VudCwKIAkJCQkJCQkgICAgU0NUUF9GUl9M
T0dfU1RSSUtFX0NIVU5LKTsKIAkJCQkJfQpAQCAtMzQ0MCw3ICszNDYyLDcgQEAgc2N0cF9zdHJp
a2VfZ2FwX2Fja19jaHVua3Moc3RydWN0IHNjdHBfdGNiICpzdGNiLCBzdHJ1Y3Qgc2N0cF9hc3Nv
Y2lhdGlvbiAqYXNvYywKIAkJCQkJICAgICAgICh0cDEtPndob1RvID8gKHRwMS0+d2hvVG8tPmZs
aWdodF9zaXplKSA6IDApLAogCQkJCQkgICAgICAgdHAxLT5ib29rX3NpemUsCiAJCQkJCSAgICAg
ICAodWludDMyX3QpKHVpbnRwdHJfdCl0cDEtPndob1RvLAotCQkJCQkgICAgICAgdHAxLT5yZWMu
ZGF0YS5UU05fc2VxKTsKKwkJCQkJICAgICAgIHRwMS0+cmVjLmRhdGEudHNuKTsKIAkJCX0KIAkJ
CWlmICh0cDEtPndob1RvKSB7CiAJCQkJdHAxLT53aG9Uby0+bmV0X2FjaysrOwpAQCAtMzQ3Nyw3
ICszNDk5LDcgQEAgc2N0cF9zdHJpa2VfZ2FwX2Fja19jaHVua3Moc3RydWN0IHNjdHBfdGNiICpz
dGNiLCBzdHJ1Y3Qgc2N0cF9hc3NvY2lhdGlvbiAqYXNvYywKIAkJCX0KIAkJCS8qIFNDVFBfUFJJ
TlRGKCJPSywgd2UgYXJlIG5vdyByZWFkeSB0byBGUiB0aGlzIGd1eVxuIik7ICovCiAJCQlpZiAo
U0NUUF9CQVNFX1NZU0NUTChzY3RwX2xvZ2dpbmdfbGV2ZWwpICYgU0NUUF9GUl9MT0dHSU5HX0VO
QUJMRSkgewotCQkJCXNjdHBfbG9nX2ZyKHRwMS0+cmVjLmRhdGEuVFNOX3NlcSwgdHAxLT5zbmRf
Y291bnQsCisJCQkJc2N0cF9sb2dfZnIodHAxLT5yZWMuZGF0YS50c24sIHRwMS0+c25kX2NvdW50
LAogCQkJCQkgICAgMCwgU0NUUF9GUl9NQVJLRUQpOwogCQkJfQogCQkJaWYgKHN0cmlrZV9mbGFn
KSB7CkBAIC0zNTM3LDcgKzM1NTksNyBAQCBzY3RwX3N0cmlrZV9nYXBfYWNrX2NodW5rcyhzdHJ1
Y3Qgc2N0cF90Y2IgKnN0Y2IsIHN0cnVjdCBzY3RwX2Fzc29jaWF0aW9uICphc29jLAogCQkJLyog
bWFyayB0aGUgc2VuZGluZyBzZXEgZm9yIHBvc3NpYmxlIHN1YnNlcXVlbnQgRlIncyAqLwogCQkJ
LyoKIAkJCSAqIFNDVFBfUFJJTlRGKCJNYXJraW5nIFRTTiBmb3IgRlIgbmV3IHZhbHVlICV4XG4i
LAotCQkJICogKHVpbnQzMl90KXRwaS0+cmVjLmRhdGEuVFNOX3NlcSk7CisJCQkgKiAodWludDMy
X3QpdHBpLT5yZWMuZGF0YS50c24pOwogCQkJICovCiAJCQlpZiAoVEFJTFFfRU1QVFkoJmFzb2Mt
PnNlbmRfcXVldWUpKSB7CiAJCQkJLyoKQEAgLTM1NjAsNyArMzU4Miw3IEBAIHNjdHBfc3RyaWtl
X2dhcF9hY2tfY2h1bmtzKHN0cnVjdCBzY3RwX3RjYiAqc3RjYiwgc3RydWN0IHNjdHBfYXNzb2Np
YXRpb24gKmFzb2MsCiAKIAkJCQl0dHQgPSBUQUlMUV9GSVJTVCgmYXNvYy0+c2VuZF9xdWV1ZSk7
CiAJCQkJdHAxLT5yZWMuZGF0YS5mYXN0X3JldHJhbl90c24gPQotCQkJCQl0dHQtPnJlYy5kYXRh
LlRTTl9zZXE7CisJCQkJCXR0dC0+cmVjLmRhdGEudHNuOwogCQkJfQogCiAJCQlpZiAodHAxLT5k
b19ydHQpIHsKQEAgLTM2MDgsNyArMzYzMCw3IEBAIHNjdHBfdHJ5X2FkdmFuY2VfcGVlcl9hY2tf
cG9pbnQoc3RydWN0IHNjdHBfdGNiICpzdGNiLAogCQkJICAgICh0cDEtPnNlbnQgPT0gU0NUUF9E
QVRBR1JBTV9OUl9BQ0tFRCkpIHsKIAkJCQlzY3RwX21pc2NfaW50cyhTQ1RQX0ZXRF9UU05fQ0hF
Q0ssCiAJCQkJCSAgICAgICBhc29jLT5hZHZhbmNlZF9wZWVyX2Fja19wb2ludCwKLQkJCQkJICAg
ICAgIHRwMS0+cmVjLmRhdGEuVFNOX3NlcSwgMCwgMCk7CisJCQkJCSAgICAgICB0cDEtPnJlYy5k
YXRhLnRzbiwgMCwgMCk7CiAJCQl9CiAJCX0KIAkJaWYgKCFQUl9TQ1RQX0VOQUJMRUQodHAxLT5m
bGFncykpIHsKQEAgLTM2NjAsMTAgKzM2ODIsMTAgQEAgc2N0cF90cnlfYWR2YW5jZV9wZWVyX2Fj
a19wb2ludChzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsCiAJCWlmICgodHAxLT5zZW50ID09IFNDVFBf
Rk9SV0FSRF9UU05fU0tJUCkgfHwKIAkJICAgICh0cDEtPnNlbnQgPT0gU0NUUF9EQVRBR1JBTV9O
Ul9BQ0tFRCkpIHsKIAkJCS8qIGFkdmFuY2UgUGVlckFja1BvaW50IGdvZXMgZm9yd2FyZCAqLwot
CQkJaWYgKFNDVFBfVFNOX0dUKHRwMS0+cmVjLmRhdGEuVFNOX3NlcSwgYXNvYy0+YWR2YW5jZWRf
cGVlcl9hY2tfcG9pbnQpKSB7Ci0JCQkJYXNvYy0+YWR2YW5jZWRfcGVlcl9hY2tfcG9pbnQgPSB0
cDEtPnJlYy5kYXRhLlRTTl9zZXE7CisJCQlpZiAoU0NUUF9UU05fR1QodHAxLT5yZWMuZGF0YS50
c24sIGFzb2MtPmFkdmFuY2VkX3BlZXJfYWNrX3BvaW50KSkgeworCQkJCWFzb2MtPmFkdmFuY2Vk
X3BlZXJfYWNrX3BvaW50ID0gdHAxLT5yZWMuZGF0YS50c247CiAJCQkJYV9hZHYgPSB0cDE7Ci0J
CQl9IGVsc2UgaWYgKHRwMS0+cmVjLmRhdGEuVFNOX3NlcSA9PSBhc29jLT5hZHZhbmNlZF9wZWVy
X2Fja19wb2ludCkgeworCQkJfSBlbHNlIGlmICh0cDEtPnJlYy5kYXRhLnRzbiA9PSBhc29jLT5h
ZHZhbmNlZF9wZWVyX2Fja19wb2ludCkgewogCQkJCS8qIE5vIHVwZGF0ZSBidXQgd2UgZG8gc2F2
ZSB0aGUgY2hrICovCiAJCQkJYV9hZHYgPSB0cDE7CiAJCQl9CkBAIC0zNjk5LDcgKzM3MjEsNyBA
QCBzY3RwX2ZzX2F1ZGl0KHN0cnVjdCBzY3RwX2Fzc29jaWF0aW9uICphc29jKQogCVRBSUxRX0ZP
UkVBQ0goY2hrLCAmYXNvYy0+c2VudF9xdWV1ZSwgc2N0cF9uZXh0KSB7CiAJCWlmIChjaGstPnNl
bnQgPCBTQ1RQX0RBVEFHUkFNX1JFU0VORCkgewogCQkJU0NUUF9QUklOVEYoIkNoayBUU046ICV1
IHNpemU6ICVkIGluZmxpZ2h0IGNudDogJWRcbiIsCi0JCQkgICAgICAgICAgICBjaGstPnJlYy5k
YXRhLlRTTl9zZXEsCisJCQkgICAgICAgICAgICBjaGstPnJlYy5kYXRhLnRzbiwKIAkJCSAgICAg
ICAgICAgIGNoay0+c2VuZF9zaXplLAogCQkJICAgICAgICAgICAgY2hrLT5zbmRfY291bnQpOwog
CQkJaW5mbGlnaHQrKzsKQEAgLTM3NDIsNyArMzc2NCw3IEBAIHNjdHBfd2luZG93X3Byb2JlX3Jl
Y292ZXJ5KHN0cnVjdCBzY3RwX3RjYiAqc3RjYiwKIAkJCSAgICAgICB0cDEtPndob1RvID8gdHAx
LT53aG9Uby0+ZmxpZ2h0X3NpemUgOiAwLAogCQkJICAgICAgIHRwMS0+Ym9va19zaXplLAogCQkJ
ICAgICAgICh1aW50MzJfdCkodWludHB0cl90KXRwMS0+d2hvVG8sCi0JCQkgICAgICAgdHAxLT5y
ZWMuZGF0YS5UU05fc2VxKTsKKwkJCSAgICAgICB0cDEtPnJlYy5kYXRhLnRzbik7CiAJCXJldHVy
bjsKIAl9CiAJLyogRmlyc3Qgc2V0dXAgdGhpcyBieSBzaHJpbmtpbmcgZmxpZ2h0ICovCkBAIC0z
NzYxLDcgKzM3ODMsNyBAQCBzY3RwX3dpbmRvd19wcm9iZV9yZWNvdmVyeShzdHJ1Y3Qgc2N0cF90
Y2IgKnN0Y2IsCiAJCQkgICAgICAgdHAxLT53aG9Uby0+ZmxpZ2h0X3NpemUsCiAJCQkgICAgICAg
dHAxLT5ib29rX3NpemUsCiAJCQkgICAgICAgKHVpbnQzMl90KSh1aW50cHRyX3QpdHAxLT53aG9U
bywKLQkJCSAgICAgICB0cDEtPnJlYy5kYXRhLlRTTl9zZXEpOworCQkJICAgICAgIHRwMS0+cmVj
LmRhdGEudHNuKTsKIAl9CiB9CiAKQEAgLTM4MzMsNyArMzg1NSw3IEBAIHNjdHBfZXhwcmVzc19o
YW5kbGVfc2FjayhzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsIHVpbnQzMl90IGN1bWFjaywKIAlpZiAo
IVRBSUxRX0VNUFRZKCZhc29jLT5zZW50X3F1ZXVlKSkgewogCQl0cDEgPSBUQUlMUV9MQVNUKCZh
c29jLT5zZW50X3F1ZXVlLAogCQkJCSBzY3RwY2h1bmtfbGlzdGhlYWQpOwotCQlzZW5kX3MgPSB0
cDEtPnJlYy5kYXRhLlRTTl9zZXEgKyAxOworCQlzZW5kX3MgPSB0cDEtPnJlYy5kYXRhLnRzbiAr
IDE7CiAJfSBlbHNlIHsKIAkJc2VuZF9zID0gYXNvYy0+c2VuZGluZ19zZXE7CiAJfQpAQCAtMzg2
Miw3ICszODg0LDcgQEAgc2N0cF9leHByZXNzX2hhbmRsZV9zYWNrKHN0cnVjdCBzY3RwX3RjYiAq
c3RjYiwgdWludDMyX3QgY3VtYWNrLAogCWlmIChTQ1RQX1RTTl9HVChjdW1hY2ssIGFzb2MtPmxh
c3RfYWNrZWRfc2VxKSkgewogCQkvKiBwcm9jZXNzIHRoZSBuZXcgY29uc2VjdXRpdmUgVFNOIGZp
cnN0ICovCiAJCVRBSUxRX0ZPUkVBQ0hfU0FGRSh0cDEsICZhc29jLT5zZW50X3F1ZXVlLCBzY3Rw
X25leHQsIHRwMikgewotCQkJaWYgKFNDVFBfVFNOX0dFKGN1bWFjaywgdHAxLT5yZWMuZGF0YS5U
U05fc2VxKSkgeworCQkJaWYgKFNDVFBfVFNOX0dFKGN1bWFjaywgdHAxLT5yZWMuZGF0YS50c24p
KSB7CiAJCQkJaWYgKHRwMS0+c2VudCA9PSBTQ1RQX0RBVEFHUkFNX1VOU0VOVCkgewogCQkJCQlT
Q1RQX1BSSU5URigiV2FybmluZywgYW4gdW5zZW50IGlzIG5vdyBhY2tlZD9cbiIpOwogCQkJCX0K
QEAgLTM4NzgsNyArMzkwMCw3IEBAIHNjdHBfZXhwcmVzc19oYW5kbGVfc2FjayhzdHJ1Y3Qgc2N0
cF90Y2IgKnN0Y2IsIHVpbnQzMl90IGN1bWFjaywKIAkJCQkJCQkJICAgICAgIHRwMS0+d2hvVG8t
PmZsaWdodF9zaXplLAogCQkJCQkJCQkgICAgICAgdHAxLT5ib29rX3NpemUsCiAJCQkJCQkJCSAg
ICAgICAodWludDMyX3QpKHVpbnRwdHJfdCl0cDEtPndob1RvLAotCQkJCQkJCQkgICAgICAgdHAx
LT5yZWMuZGF0YS5UU05fc2VxKTsKKwkJCQkJCQkJICAgICAgIHRwMS0+cmVjLmRhdGEudHNuKTsK
IAkJCQkJCX0KIAkJCQkJCXNjdHBfZmxpZ2h0X3NpemVfZGVjcmVhc2UodHAxKTsKIAkJCQkJCWlm
IChzdGNiLT5hc29jLmNjX2Z1bmN0aW9ucy5zY3RwX2N3bmRfdXBkYXRlX3Rzbl9hY2tub3dsZWRn
ZWQpIHsKQEAgLTM5MzYsNyArMzk1OCw3IEBAIHNjdHBfZXhwcmVzc19oYW5kbGVfc2FjayhzdHJ1
Y3Qgc2N0cF90Y2IgKnN0Y2IsIHVpbnQzMl90IGN1bWFjaywKIAogCQkJCQlpZiAoU0NUUF9CQVNF
X1NZU0NUTChzY3RwX2xvZ2dpbmdfbGV2ZWwpICYgU0NUUF9DV05EX0xPR0dJTkdfRU5BQkxFKSB7
CiAJCQkJCQkvKiBzYV9pZ25vcmUgTk9fTlVMTF9DSEsgKi8KLQkJCQkJCXNjdHBfbG9nX2N3bmQo
c3RjYiwgdHAxLT53aG9UbywgdHAxLT5yZWMuZGF0YS5UU05fc2VxLCBTQ1RQX0NXTkRfTE9HX0ZS
T01fU0FDSyk7CisJCQkJCQlzY3RwX2xvZ19jd25kKHN0Y2IsIHRwMS0+d2hvVG8sIHRwMS0+cmVj
LmRhdGEudHNuLCBTQ1RQX0NXTkRfTE9HX0ZST01fU0FDSyk7CiAJCQkJCX0KIAkJCQl9CiAJCQkJ
aWYgKHRwMS0+c2VudCA9PSBTQ1RQX0RBVEFHUkFNX1JFU0VORCkgewpAQCAtMzk0OCwxNyArMzk3
MCwxNyBAQCBzY3RwX2V4cHJlc3NfaGFuZGxlX3NhY2soc3RydWN0IHNjdHBfdGNiICpzdGNiLCB1
aW50MzJfdCBjdW1hY2ssCiAJCQkJCXRwMS0+cmVjLmRhdGEuY2h1bmtfd2FzX3Jldm9rZWQgPSAw
OwogCQkJCX0KIAkJCQlpZiAodHAxLT5zZW50ICE9IFNDVFBfREFUQUdSQU1fTlJfQUNLRUQpIHsK
LQkJCQkJaWYgKGFzb2MtPnN0cm1vdXRbdHAxLT5yZWMuZGF0YS5zdHJlYW1fbnVtYmVyXS5jaHVu
a3Nfb25fcXVldWVzID4gMCkgewotCQkJCQkJYXNvYy0+c3RybW91dFt0cDEtPnJlYy5kYXRhLnN0
cmVhbV9udW1iZXJdLmNodW5rc19vbl9xdWV1ZXMtLTsKKwkJCQkJaWYgKGFzb2MtPnN0cm1vdXRb
dHAxLT5yZWMuZGF0YS5zaWRdLmNodW5rc19vbl9xdWV1ZXMgPiAwKSB7CisJCQkJCQlhc29jLT5z
dHJtb3V0W3RwMS0+cmVjLmRhdGEuc2lkXS5jaHVua3Nfb25fcXVldWVzLS07CiAjaWZkZWYgSU5W
QVJJQU5UUwogCQkJCQl9IGVsc2UgewotCQkJCQkJcGFuaWMoIk5vIGNodW5rcyBvbiB0aGUgcXVl
dWVzIGZvciBzaWQgJXUuIiwgdHAxLT5yZWMuZGF0YS5zdHJlYW1fbnVtYmVyKTsKKwkJCQkJCXBh
bmljKCJObyBjaHVua3Mgb24gdGhlIHF1ZXVlcyBmb3Igc2lkICV1LiIsIHRwMS0+cmVjLmRhdGEu
c2lkKTsKICNlbmRpZgogCQkJCQl9CiAJCQkJfQotCQkJCWlmICgoYXNvYy0+c3RybW91dFt0cDEt
PnJlYy5kYXRhLnN0cmVhbV9udW1iZXJdLmNodW5rc19vbl9xdWV1ZXMgPT0gMCkgJiYKLQkJCQkg
ICAgKGFzb2MtPnN0cm1vdXRbdHAxLT5yZWMuZGF0YS5zdHJlYW1fbnVtYmVyXS5zdGF0ZSA9PSBT
Q1RQX1NUUkVBTV9SRVNFVF9QRU5ESU5HKSAmJgotCQkJCSAgICBUQUlMUV9FTVBUWSgmYXNvYy0+
c3RybW91dFt0cDEtPnJlYy5kYXRhLnN0cmVhbV9udW1iZXJdLm91dHF1ZXVlKSkgeworCQkJCWlm
ICgoYXNvYy0+c3RybW91dFt0cDEtPnJlYy5kYXRhLnNpZF0uY2h1bmtzX29uX3F1ZXVlcyA9PSAw
KSAmJgorCQkJCSAgICAoYXNvYy0+c3RybW91dFt0cDEtPnJlYy5kYXRhLnNpZF0uc3RhdGUgPT0g
U0NUUF9TVFJFQU1fUkVTRVRfUEVORElORykgJiYKKwkJCQkgICAgVEFJTFFfRU1QVFkoJmFzb2Mt
PnN0cm1vdXRbdHAxLT5yZWMuZGF0YS5zaWRdLm91dHF1ZXVlKSkgewogCQkJCQlhc29jLT50cmln
Z2VyX3Jlc2V0ID0gMTsKIAkJCQl9CiAJCQkJVEFJTFFfUkVNT1ZFKCZhc29jLT5zZW50X3F1ZXVl
LCB0cDEsIHNjdHBfbmV4dCk7CkBAIC0zOTcxLDcgKzM5OTMsNyBAQCBzY3RwX2V4cHJlc3NfaGFu
ZGxlX3NhY2soc3RydWN0IHNjdHBfdGNiICpzdGNiLCB1aW50MzJfdCBjdW1hY2ssCiAJCQkJaWYg
KFNDVFBfQkFTRV9TWVNDVEwoc2N0cF9sb2dnaW5nX2xldmVsKSAmIFNDVFBfU0FDS19MT0dHSU5H
X0VOQUJMRSkgewogCQkJCQlzY3RwX2xvZ19zYWNrKGFzb2MtPmxhc3RfYWNrZWRfc2VxLAogCQkJ
CQkJICAgICAgY3VtYWNrLAotCQkJCQkJICAgICAgdHAxLT5yZWMuZGF0YS5UU05fc2VxLAorCQkJ
CQkJICAgICAgdHAxLT5yZWMuZGF0YS50c24sCiAJCQkJCQkgICAgICAwLAogCQkJCQkJICAgICAg
MCwKIAkJCQkJCSAgICAgIFNDVFBfTE9HX0ZSRUVfU0VOVCk7CkBAIC00Mzk0LDcgKzQ0MTYsNyBA
QCBzY3RwX2hhbmRsZV9zYWNrKHN0cnVjdCBtYnVmICptLCBpbnQgb2Zmc2V0X3NlZywgaW50IG9m
ZnNldF9kdXAsCiAJaWYgKCFUQUlMUV9FTVBUWSgmYXNvYy0+c2VudF9xdWV1ZSkpIHsKIAkJdHAx
ID0gVEFJTFFfTEFTVCgmYXNvYy0+c2VudF9xdWV1ZSwKIAkJCQkgc2N0cGNodW5rX2xpc3RoZWFk
KTsKLQkJc2VuZF9zID0gdHAxLT5yZWMuZGF0YS5UU05fc2VxICsgMTsKKwkJc2VuZF9zID0gdHAx
LT5yZWMuZGF0YS50c24gKyAxOwogCX0gZWxzZSB7CiAJCXRwMSA9IE5VTEw7CiAJCXNlbmRfcyA9
IGFzb2MtPnNlbmRpbmdfc2VxOwpAQCAtNDQxMSw3ICs0NDMzLDcgQEAgc2N0cF9oYW5kbGVfc2Fj
ayhzdHJ1Y3QgbWJ1ZiAqbSwgaW50IG9mZnNldF9zZWcsIGludCBvZmZzZXRfZHVwLAogCQkJICAg
IGN1bV9hY2ssIHNlbmRfcyk7CiAJCWlmICh0cDEpIHsKIAkJCVNDVFBfUFJJTlRGKCJHb3Qgc2Vu
ZF9zIGZyb20gdHNuOiV4ICsgMSBvZiB0cDE6ICVwXG4iLAotCQkJCSAgICB0cDEtPnJlYy5kYXRh
LlRTTl9zZXEsICh2b2lkICopdHAxKTsKKwkJCQkgICAgdHAxLT5yZWMuZGF0YS50c24sICh2b2lk
ICopdHAxKTsKIAkJfQogCWhvcGVsZXNzX3BlZXI6CiAJCSphYm9ydF9ub3cgPSAxOwpAQCAtNDQ4
Nyw3ICs0NTA5LDcgQEAgc2N0cF9oYW5kbGVfc2FjayhzdHJ1Y3QgbWJ1ZiAqbSwgaW50IG9mZnNl
dF9zZWcsIGludCBvZmZzZXRfZHVwLAogCX0KIAkvKiBwcm9jZXNzIHRoZSBuZXcgY29uc2VjdXRp
dmUgVFNOIGZpcnN0ICovCiAJVEFJTFFfRk9SRUFDSCh0cDEsICZhc29jLT5zZW50X3F1ZXVlLCBz
Y3RwX25leHQpIHsKLQkJaWYgKFNDVFBfVFNOX0dFKGxhc3RfdHNuLCB0cDEtPnJlYy5kYXRhLlRT
Tl9zZXEpKSB7CisJCWlmIChTQ1RQX1RTTl9HRShsYXN0X3RzbiwgdHAxLT5yZWMuZGF0YS50c24p
KSB7CiAJCQlpZiAodHAxLT5zZW50ICE9IFNDVFBfREFUQUdSQU1fVU5TRU5UKSB7CiAJCQkJYWNj
dW1fbW92ZWQgPSAxOwogCQkJCWlmICh0cDEtPnNlbnQgPCBTQ1RQX0RBVEFHUkFNX0FDS0VEKSB7
CkBAIC00NTE2LDcgKzQ1MzgsNyBAQCBzY3RwX2hhbmRsZV9zYWNrKHN0cnVjdCBtYnVmICptLCBp
bnQgb2Zmc2V0X3NlZywgaW50IG9mZnNldF9kdXAsCiAJCQkJCQkJICAgICAgICAgICAgICAgdHAx
LT53aG9Uby0+ZmxpZ2h0X3NpemUsCiAJCQkJCQkJICAgICAgICAgICAgICAgdHAxLT5ib29rX3Np
emUsCiAJCQkJCQkJICAgICAgICAgICAgICAgKHVpbnQzMl90KSh1aW50cHRyX3QpdHAxLT53aG9U
bywKLQkJCQkJCQkgICAgICAgICAgICAgICB0cDEtPnJlYy5kYXRhLlRTTl9zZXEpOworCQkJCQkJ
CSAgICAgICAgICAgICAgIHRwMS0+cmVjLmRhdGEudHNuKTsKIAkJCQkJCX0KIAkJCQkJCXNjdHBf
ZmxpZ2h0X3NpemVfZGVjcmVhc2UodHAxKTsKIAkJCQkJCXNjdHBfdG90YWxfZmxpZ2h0X2RlY3Jl
YXNlKHN0Y2IsIHRwMSk7CkBAIC00NTI4LDcgKzQ1NTAsNyBAQCBzY3RwX2hhbmRsZV9zYWNrKHN0
cnVjdCBtYnVmICptLCBpbnQgb2Zmc2V0X3NlZywgaW50IG9mZnNldF9kdXAsCiAJCQkJCXRwMS0+
d2hvVG8tPm5ldF9hY2sgKz0gdHAxLT5zZW5kX3NpemU7CiAKIAkJCQkJLyogQ01UIFNGUiBhbmQg
REFDIGFsZ29zICovCi0JCQkJCXRoaXNfc2Fja19sb3dlc3RfbmV3YWNrID0gdHAxLT5yZWMuZGF0
YS5UU05fc2VxOworCQkJCQl0aGlzX3NhY2tfbG93ZXN0X25ld2FjayA9IHRwMS0+cmVjLmRhdGEu
dHNuOwogCQkJCQl0cDEtPndob1RvLT5zYXdfbmV3YWNrID0gMTsKIAogCQkJCQlpZiAodHAxLT5z
bmRfY291bnQgPCAyKSB7CkBAIC00NTc2LDEzICs0NTk4LDEzIEBAIHNjdHBfaGFuZGxlX3NhY2so
c3RydWN0IG1idWYgKm0sIGludCBvZmZzZXRfc2VnLCBpbnQgb2Zmc2V0X2R1cCwKIAkJCQkJaWYg
KFNDVFBfQkFTRV9TWVNDVEwoc2N0cF9sb2dnaW5nX2xldmVsKSAmIFNDVFBfU0FDS19MT0dHSU5H
X0VOQUJMRSkgewogCQkJCQkJc2N0cF9sb2dfc2Fjayhhc29jLT5sYXN0X2Fja2VkX3NlcSwKIAkJ
CQkJCSAgICAgICAgICAgICAgY3VtX2FjaywKLQkJCQkJCSAgICAgICAgICAgICAgdHAxLT5yZWMu
ZGF0YS5UU05fc2VxLAorCQkJCQkJICAgICAgICAgICAgICB0cDEtPnJlYy5kYXRhLnRzbiwKIAkJ
CQkJCSAgICAgICAgICAgICAgMCwKIAkJCQkJCSAgICAgICAgICAgICAgMCwKIAkJCQkJCSAgICAg
ICAgICAgICAgU0NUUF9MT0dfVFNOX0FDS0VEKTsKIAkJCQkJfQogCQkJCQlpZiAoU0NUUF9CQVNF
X1NZU0NUTChzY3RwX2xvZ2dpbmdfbGV2ZWwpICYgU0NUUF9DV05EX0xPR0dJTkdfRU5BQkxFKSB7
Ci0JCQkJCQlzY3RwX2xvZ19jd25kKHN0Y2IsIHRwMS0+d2hvVG8sIHRwMS0+cmVjLmRhdGEuVFNO
X3NlcSwgU0NUUF9DV05EX0xPR19GUk9NX1NBQ0spOworCQkJCQkJc2N0cF9sb2dfY3duZChzdGNi
LCB0cDEtPndob1RvLCB0cDEtPnJlYy5kYXRhLnRzbiwgU0NUUF9DV05EX0xPR19GUk9NX1NBQ0sp
OwogCQkJCQl9CiAJCQkJfQogCQkJCWlmICh0cDEtPnNlbnQgPT0gU0NUUF9EQVRBR1JBTV9SRVNF
TkQpIHsKQEAgLTQ2NzEsMjEgKzQ2OTMsMjEgQEAgc2N0cF9oYW5kbGVfc2FjayhzdHJ1Y3QgbWJ1
ZiAqbSwgaW50IG9mZnNldF9zZWcsIGludCBvZmZzZXRfZHVwLAogCWFzb2MtPmxhc3RfYWNrZWRf
c2VxID0gY3VtX2FjazsKIAogCVRBSUxRX0ZPUkVBQ0hfU0FGRSh0cDEsICZhc29jLT5zZW50X3F1
ZXVlLCBzY3RwX25leHQsIHRwMikgewotCQlpZiAoU0NUUF9UU05fR1QodHAxLT5yZWMuZGF0YS5U
U05fc2VxLCBjdW1fYWNrKSkgeworCQlpZiAoU0NUUF9UU05fR1QodHAxLT5yZWMuZGF0YS50c24s
IGN1bV9hY2spKSB7CiAJCQlicmVhazsKIAkJfQogCQlpZiAodHAxLT5zZW50ICE9IFNDVFBfREFU
QUdSQU1fTlJfQUNLRUQpIHsKLQkJCWlmIChhc29jLT5zdHJtb3V0W3RwMS0+cmVjLmRhdGEuc3Ry
ZWFtX251bWJlcl0uY2h1bmtzX29uX3F1ZXVlcyA+IDApIHsKLQkJCQlhc29jLT5zdHJtb3V0W3Rw
MS0+cmVjLmRhdGEuc3RyZWFtX251bWJlcl0uY2h1bmtzX29uX3F1ZXVlcy0tOworCQkJaWYgKGFz
b2MtPnN0cm1vdXRbdHAxLT5yZWMuZGF0YS5zaWRdLmNodW5rc19vbl9xdWV1ZXMgPiAwKSB7CisJ
CQkJYXNvYy0+c3RybW91dFt0cDEtPnJlYy5kYXRhLnNpZF0uY2h1bmtzX29uX3F1ZXVlcy0tOwog
I2lmZGVmIElOVkFSSUFOVFMKIAkJCX0gZWxzZSB7Ci0JCQkJcGFuaWMoIk5vIGNodW5rcyBvbiB0
aGUgcXVldWVzIGZvciBzaWQgJXUuIiwgdHAxLT5yZWMuZGF0YS5zdHJlYW1fbnVtYmVyKTsKKwkJ
CQlwYW5pYygiTm8gY2h1bmtzIG9uIHRoZSBxdWV1ZXMgZm9yIHNpZCAldS4iLCB0cDEtPnJlYy5k
YXRhLnNpZCk7CiAjZW5kaWYKIAkJCX0KIAkJfQotCQlpZiAoKGFzb2MtPnN0cm1vdXRbdHAxLT5y
ZWMuZGF0YS5zdHJlYW1fbnVtYmVyXS5jaHVua3Nfb25fcXVldWVzID09IDApICYmCi0JCSAgICAo
YXNvYy0+c3RybW91dFt0cDEtPnJlYy5kYXRhLnN0cmVhbV9udW1iZXJdLnN0YXRlID09IFNDVFBf
U1RSRUFNX1JFU0VUX1BFTkRJTkcpICYmCi0JCSAgICBUQUlMUV9FTVBUWSgmYXNvYy0+c3RybW91
dFt0cDEtPnJlYy5kYXRhLnN0cmVhbV9udW1iZXJdLm91dHF1ZXVlKSkgeworCQlpZiAoKGFzb2Mt
PnN0cm1vdXRbdHAxLT5yZWMuZGF0YS5zaWRdLmNodW5rc19vbl9xdWV1ZXMgPT0gMCkgJiYKKwkJ
ICAgIChhc29jLT5zdHJtb3V0W3RwMS0+cmVjLmRhdGEuc2lkXS5zdGF0ZSA9PSBTQ1RQX1NUUkVB
TV9SRVNFVF9QRU5ESU5HKSAmJgorCQkgICAgVEFJTFFfRU1QVFkoJmFzb2MtPnN0cm1vdXRbdHAx
LT5yZWMuZGF0YS5zaWRdLm91dHF1ZXVlKSkgewogCQkJYXNvYy0+dHJpZ2dlcl9yZXNldCA9IDE7
CiAJCX0KIAkJVEFJTFFfUkVNT1ZFKCZhc29jLT5zZW50X3F1ZXVlLCB0cDEsIHNjdHBfbmV4dCk7
CkBAIC00NzA2LDcgKzQ3MjgsNyBAQCBzY3RwX2hhbmRsZV9zYWNrKHN0cnVjdCBtYnVmICptLCBp
bnQgb2Zmc2V0X3NlZywgaW50IG9mZnNldF9kdXAsCiAJCWlmIChTQ1RQX0JBU0VfU1lTQ1RMKHNj
dHBfbG9nZ2luZ19sZXZlbCkgJiBTQ1RQX1NBQ0tfTE9HR0lOR19FTkFCTEUpIHsKIAkJCXNjdHBf
bG9nX3NhY2soYXNvYy0+bGFzdF9hY2tlZF9zZXEsCiAJCQkgICAgICAgICAgICAgIGN1bV9hY2ss
Ci0JCQkgICAgICAgICAgICAgIHRwMS0+cmVjLmRhdGEuVFNOX3NlcSwKKwkJCSAgICAgICAgICAg
ICAgdHAxLT5yZWMuZGF0YS50c24sCiAJCQkgICAgICAgICAgICAgIDAsCiAJCQkgICAgICAgICAg
ICAgIDAsCiAJCQkgICAgICAgICAgICAgIFNDVFBfTE9HX0ZSRUVfU0VOVCk7CkBAIC00ODEyLDcg
KzQ4MzQsNyBAQCBzY3RwX2hhbmRsZV9zYWNrKHN0cnVjdCBtYnVmICptLCBpbnQgb2Zmc2V0X3Nl
ZywgaW50IG9mZnNldF9kdXAsCiAJCQkJCSAgICAgICAgICAgICAgIHRwMS0+d2hvVG8tPmZsaWdo
dF9zaXplLAogCQkJCQkgICAgICAgICAgICAgICB0cDEtPmJvb2tfc2l6ZSwKIAkJCQkJICAgICAg
ICAgICAgICAgKHVpbnQzMl90KSh1aW50cHRyX3QpdHAxLT53aG9UbywKLQkJCQkJICAgICAgICAg
ICAgICAgdHAxLT5yZWMuZGF0YS5UU05fc2VxKTsKKwkJCQkJICAgICAgICAgICAgICAgdHAxLT5y
ZWMuZGF0YS50c24pOwogCQkJCX0KIAkJCQlzY3RwX2ZsaWdodF9zaXplX2luY3JlYXNlKHRwMSk7
CiAJCQkJc2N0cF90b3RhbF9mbGlnaHRfaW5jcmVhc2Uoc3RjYiwgdHAxKTsKQEAgLTUxODAsMjIg
KzUyMDIsMTcgQEAgc2N0cF9raWNrX3Byc2N0cF9yZW9yZGVyX3F1ZXVlKHN0cnVjdCBzY3RwX3Rj
YiAqc3RjYiwKIHsKIAlzdHJ1Y3Qgc2N0cF9xdWV1ZWRfdG9fcmVhZCAqY3RsLCAqbmN0bDsKIAlz
dHJ1Y3Qgc2N0cF9hc3NvY2lhdGlvbiAqYXNvYzsKLQl1aW50MzJfdCB0dDsKLQlpbnQgbmVlZF9y
ZWFzbV9jaGVjayA9IDAsIG9sZDsKKwl1aW50MzJfdCBtaWQ7CisJaW50IG5lZWRfcmVhc21fY2hl
Y2sgPSAwOwogCiAJYXNvYyA9ICZzdGNiLT5hc29jOwotCXR0ID0gc3RybWluLT5sYXN0X3NlcXVl
bmNlX2RlbGl2ZXJlZDsKLQlpZiAoYXNvYy0+aWRhdGFfc3VwcG9ydGVkKSB7Ci0JCW9sZCA9IDA7
Ci0JfSBlbHNlIHsKLQkJb2xkID0gMTsKLQl9CisJbWlkID0gc3RybWluLT5sYXN0X21pZF9kZWxp
dmVyZWQ7CiAJLyoKIAkgKiBGaXJzdCBkZWxpdmVyIGFueXRoaW5nIHByaW9yIHRvIGFuZCBpbmNs
dWRpbmcgdGhlIHN0cmVhbSBubyB0aGF0CiAJICogY2FtZSBpbi4KIAkgKi8KIAlUQUlMUV9GT1JF
QUNIX1NBRkUoY3RsLCAmc3RybWluLT5pbnF1ZXVlLCBuZXh0X2luc3RybSwgbmN0bCkgewotCQlp
ZiAoU0NUUF9NU0dJRF9HRShvbGQsIHR0LCBjdGwtPnNpbmZvX3NzbikpIHsKKwkJaWYgKFNDVFBf
TUlEX0dFKGFzb2MtPmlkYXRhX3N1cHBvcnRlZCwgbWlkLCBjdGwtPm1pZCkpIHsKIAkJCS8qIHRo
aXMgaXMgZGVsaXZlcmFibGUgbm93ICovCiAJCQlpZiAoKChjdGwtPnNpbmZvX2ZsYWdzID4+IDgp
ICYgU0NUUF9EQVRBX05PVF9GUkFHKSAgPT0gU0NUUF9EQVRBX05PVF9GUkFHKSB7CiAJCQkJaWYg
KGN0bC0+b25fc3RybV9xKSB7CkBAIC01MjI3LDcgKzUyNDQsNyBAQCBzY3RwX2tpY2tfcHJzY3Rw
X3Jlb3JkZXJfcXVldWUoc3RydWN0IHNjdHBfdGNiICpzdGNiLAogCQkJCS8qIEl0cyBhIGZyYWdt
ZW50ZWQgbWVzc2FnZSAqLwogCQkJCWlmIChjdGwtPmZpcnN0X2ZyYWdfc2VlbikgewogCQkJCQkv
KiBNYWtlIGl0IHNvIHRoaXMgaXMgbmV4dCB0byBkZWxpdmVyLCB3ZSByZXN0b3JlIGxhdGVyICov
Ci0JCQkJCXN0cm1pbi0+bGFzdF9zZXF1ZW5jZV9kZWxpdmVyZWQgPSBjdGwtPnNpbmZvX3NzbiAt
IDE7CisJCQkJCXN0cm1pbi0+bGFzdF9taWRfZGVsaXZlcmVkID0gY3RsLT5taWQgLSAxOwogCQkJ
CQluZWVkX3JlYXNtX2NoZWNrID0gMTsKIAkJCQkJYnJlYWs7CiAJCQkJfQpAQCAtNTI0MCw5ICs1
MjU3LDkgQEAgc2N0cF9raWNrX3Byc2N0cF9yZW9yZGVyX3F1ZXVlKHN0cnVjdCBzY3RwX3RjYiAq
c3RjYiwKIAlpZiAobmVlZF9yZWFzbV9jaGVjaykgewogCQlpbnQgcmV0OwogCQlyZXQgPSBzY3Rw
X2RlbGl2ZXJfcmVhc21fY2hlY2soc3RjYiwgJnN0Y2ItPmFzb2MsIHN0cm1pbiwgU0NUUF9SRUFE
X0xPQ0tfSEVMRCk7Ci0JCWlmIChTQ1RQX01TR0lEX0dUKG9sZCwgdHQsIHN0cm1pbi0+bGFzdF9z
ZXF1ZW5jZV9kZWxpdmVyZWQpKSB7CisJCWlmIChTQ1RQX01JRF9HVChhc29jLT5pZGF0YV9zdXBw
b3J0ZWQsIG1pZCwgc3RybWluLT5sYXN0X21pZF9kZWxpdmVyZWQpKSB7CiAJCQkvKiBSZXN0b3Jl
IHRoZSBuZXh0IHRvIGRlbGl2ZXIgdW5sZXNzIHdlIGFyZSBhaGVhZCAqLwotCQkJc3RybWluLT5s
YXN0X3NlcXVlbmNlX2RlbGl2ZXJlZCA9IHR0OworCQkJc3RybWluLT5sYXN0X21pZF9kZWxpdmVy
ZWQgPSBtaWQ7CiAJCX0KIAkJaWYgKHJldCA9PSAwKSB7CiAJCQkvKiBMZWZ0IHRoZSBmcm9udCBQ
YXJ0aWFsIG9uZSBvbiAqLwpAQCAtNTI1NCw5ICs1MjcxLDkgQEAgc2N0cF9raWNrX3Byc2N0cF9y
ZW9yZGVyX3F1ZXVlKHN0cnVjdCBzY3RwX3RjYiAqc3RjYiwKIAkgKiBub3cgd2UgbXVzdCBkZWxp
dmVyIHRoaW5ncyBpbiBxdWV1ZSB0aGUgbm9ybWFsIHdheSAgaWYgYW55IGFyZQogCSAqIG5vdyBy
ZWFkeS4KIAkgKi8KLQl0dCA9IHN0cm1pbi0+bGFzdF9zZXF1ZW5jZV9kZWxpdmVyZWQgKyAxOwor
CW1pZCA9IHN0cm1pbi0+bGFzdF9taWRfZGVsaXZlcmVkICsgMTsKIAlUQUlMUV9GT1JFQUNIX1NB
RkUoY3RsLCAmc3RybWluLT5pbnF1ZXVlLCBuZXh0X2luc3RybSwgbmN0bCkgewotCQlpZiAodHQg
PT0gY3RsLT5zaW5mb19zc24pIHsKKwkJaWYgKFNDVFBfTUlEX0VRKGFzb2MtPmlkYXRhX3N1cHBv
cnRlZCwgbWlkLCBjdGwtPm1pZCkpIHsKIAkJCWlmICgoKGN0bC0+c2luZm9fZmxhZ3MgPj4gOCkg
JiBTQ1RQX0RBVEFfTk9UX0ZSQUcpID09IFNDVFBfREFUQV9OT1RfRlJBRykgewogCQkJCS8qIHRo
aXMgaXMgZGVsaXZlcmFibGUgbm93ICovCiAJCQkJaWYgKGN0bC0+b25fc3RybV9xKSB7CkBAIC01
Mjc2LDcgKzUyOTMsNyBAQCBzY3RwX2tpY2tfcHJzY3RwX3Jlb3JkZXJfcXVldWUoc3RydWN0IHNj
dHBfdGNiICpzdGNiLAogCQkJCWFzb2MtPnNpemVfb25fYWxsX3N0cmVhbXMgLT0gY3RsLT5sZW5n
dGg7CiAJCQkJc2N0cF91Y291bnRfZGVjcihhc29jLT5jbnRfb25fYWxsX3N0cmVhbXMpOwogCQkJ
CS8qIGRlbGl2ZXIgaXQgdG8gYXQgbGVhc3QgdGhlIGRlbGl2ZXJ5LXEgKi8KLQkJCQlzdHJtaW4t
Pmxhc3Rfc2VxdWVuY2VfZGVsaXZlcmVkID0gY3RsLT5zaW5mb19zc247CisJCQkJc3RybWluLT5s
YXN0X21pZF9kZWxpdmVyZWQgPSBjdGwtPm1pZDsKIAkJCQlpZiAoc3RjYi0+c2N0cF9zb2NrZXQp
IHsKIAkJCQkJc2N0cF9tYXJrX25vbl9yZXZva2FibGUoYXNvYywgY3RsLT5zaW5mb190c24pOwog
CQkJCQlzY3RwX2FkZF90b19yZWFkcShzdGNiLT5zY3RwX2VwLCBzdGNiLApAQCAtNTI4NSwxMiAr
NTMwMiwxMiBAQCBzY3RwX2tpY2tfcHJzY3RwX3Jlb3JkZXJfcXVldWUoc3RydWN0IHNjdHBfdGNi
ICpzdGNiLAogCQkJCQkJCSAgU0NUUF9SRUFEX0xPQ0tfSEVMRCwgU0NUUF9TT19OT1RfTE9DS0VE
KTsKIAogCQkJCX0KLQkJCQl0dCA9IHN0cm1pbi0+bGFzdF9zZXF1ZW5jZV9kZWxpdmVyZWQgKyAx
OworCQkJCW1pZCA9IHN0cm1pbi0+bGFzdF9taWRfZGVsaXZlcmVkICsgMTsKIAkJCX0gZWxzZSB7
CiAJCQkJLyogSXRzIGEgZnJhZ21lbnRlZCBtZXNzYWdlICovCiAJCQkJaWYgKGN0bC0+Zmlyc3Rf
ZnJhZ19zZWVuKSB7CiAJCQkJCS8qIE1ha2UgaXQgc28gdGhpcyBpcyBuZXh0IHRvIGRlbGl2ZXIg
Ki8KLQkJCQkJc3RybWluLT5sYXN0X3NlcXVlbmNlX2RlbGl2ZXJlZCA9IGN0bC0+c2luZm9fc3Nu
IC0gMTsKKwkJCQkJc3RybWluLT5sYXN0X21pZF9kZWxpdmVyZWQgPSBjdGwtPm1pZCAtIDE7CiAJ
CQkJCW5lZWRfcmVhc21fY2hlY2sgPSAxOwogCQkJCQlicmVhazsKIAkJCQl9CkBAIC01MzA5LDEy
ICs1MzI2LDEzIEBAIHNjdHBfa2lja19wcnNjdHBfcmVvcmRlcl9xdWV1ZShzdHJ1Y3Qgc2N0cF90
Y2IgKnN0Y2IsCiBzdGF0aWMgdm9pZAogc2N0cF9mbHVzaF9yZWFzc21fZm9yX3N0cl9zZXEoc3Ry
dWN0IHNjdHBfdGNiICpzdGNiLAogCXN0cnVjdCBzY3RwX2Fzc29jaWF0aW9uICphc29jLAotCXVp
bnQxNl90IHN0cmVhbSwgdWludDMyX3Qgc2VxLCBpbnQgb3JkZXJlZCwgaW50IG9sZCwgdWludDMy
X3QgY3VtdHNuKQorCXVpbnQxNl90IHN0cmVhbSwgdWludDMyX3QgbWlkLCBpbnQgb3JkZXJlZCwg
dWludDMyX3QgY3VtdHNuKQogewogCXN0cnVjdCBzY3RwX3F1ZXVlZF90b19yZWFkICpjb250cm9s
OwogCXN0cnVjdCBzY3RwX3N0cmVhbV9pbiAqc3RybTsKIAlzdHJ1Y3Qgc2N0cF90bWl0X2NodW5r
ICpjaGssICpuY2hrOwogCWludCBjbnRfcmVtb3ZlZD0wOworCiAJLyoKIAkgKiBGb3Igbm93IGxh
cmdlIG1lc3NhZ2VzIGhlbGQgb24gdGhlIHN0cmVhbSByZWFzbSB0aGF0IGFyZQogCSAqIGNvbXBs
ZXRlIHdpbGwgYmUgdG9zc2VkIHRvby4gV2UgY291bGQgaW4gdGhlb3J5IGRvIG1vcmUKQEAgLTUz
MjQsMTUgKzUzNDIsMTggQEAgc2N0cF9mbHVzaF9yZWFzc21fZm9yX3N0cl9zZXEoc3RydWN0IHNj
dHBfdGNiICpzdGNiLAogCSAqIGZvciBub3cgd2UganVzdCBkdW1wIGV2ZXJ5dGhpbmcgb24gdGhl
IHF1ZXVlLgogCSAqLwogCXN0cm0gPSAmYXNvYy0+c3RybWluW3N0cmVhbV07Ci0JY29udHJvbCA9
IHNjdHBfZmluZF9yZWFzbV9lbnRyeShzdHJtLCAodWludDMyX3Qpc2VxLCBvcmRlcmVkLCBvbGQp
OworCWNvbnRyb2wgPSBzY3RwX2ZpbmRfcmVhc21fZW50cnkoc3RybSwgbWlkLCBvcmRlcmVkLCBh
c29jLT5pZGF0YV9zdXBwb3J0ZWQpOwogCWlmIChjb250cm9sID09IE5VTEwpIHsKIAkJLyogTm90
IGZvdW5kICovCiAJCXJldHVybjsKIAl9CisJaWYgKCFhc29jLT5pZGF0YV9zdXBwb3J0ZWQgJiYg
IW9yZGVyZWQgJiYgU0NUUF9UU05fR1QoY29udHJvbC0+ZnNuX2luY2x1ZGVkLCBjdW10c24pKSB7
CisJCXJldHVybjsKKwl9CiAJVEFJTFFfRk9SRUFDSF9TQUZFKGNoaywgJmNvbnRyb2wtPnJlYXNt
LCBzY3RwX25leHQsIG5jaGspIHsKIAkJLyogUHVyZ2UgaGFuZ2luZyBjaHVua3MgKi8KLQkJaWYg
KG9sZCAmJiAob3JkZXJlZCA9PSAwKSkgewotCQkJaWYgKFNDVFBfVFNOX0dUKGNoay0+cmVjLmRh
dGEuVFNOX3NlcSwgY3VtdHNuKSkgeworCQlpZiAoIWFzb2MtPmlkYXRhX3N1cHBvcnRlZCAmJiAo
b3JkZXJlZCA9PSAwKSkgeworCQkJaWYgKFNDVFBfVFNOX0dUKGNoay0+cmVjLmRhdGEudHNuLCBj
dW10c24pKSB7CiAJCQkJYnJlYWs7CiAJCQl9CiAJCX0KQEAgLTU0ODQsNyArNTUwNSw3IEBAIHNj
dHBfaGFuZGxlX2ZvcndhcmRfdHNuKHN0cnVjdCBzY3RwX3RjYiAqc3RjYiwKIAkJLyogRmx1c2gg
YWxsIHRoZSB1bi1vcmRlcmVkIGRhdGEgYmFzZWQgb24gY3VtLXRzbiAqLwogCQlTQ1RQX0lOUF9S
RUFEX0xPQ0soc3RjYi0+c2N0cF9lcCk7CiAJCWZvciAoc2lkID0gMCA7IHNpZCA8IGFzb2MtPnN0
cmVhbWluY250OyBzaWQrKykgewotCQkJc2N0cF9mbHVzaF9yZWFzc21fZm9yX3N0cl9zZXEoc3Rj
YiwgYXNvYywgc2lkLCAwLCAwLCAxLCBuZXdfY3VtX3Rzbik7CisJCQlzY3RwX2ZsdXNoX3JlYXNz
bV9mb3Jfc3RyX3NlcShzdGNiLCBhc29jLCBzaWQsIDAsIDAsIG5ld19jdW1fdHNuKTsKIAkJfQog
CQlTQ1RQX0lOUF9SRUFEX1VOTE9DSyhzdGNiLT5zY3RwX2VwKTsKIAl9CkBAIC01NDk2LDEwICs1
NTE3LDkgQEAgc2N0cF9oYW5kbGVfZm9yd2FyZF90c24oc3RydWN0IHNjdHBfdGNiICpzdGNiLAog
CWlmIChtICYmIGZ3ZF9zeikgewogCQkvKiBOZXcgbWV0aG9kLiAqLwogCQl1bnNpZ25lZCBpbnQg
bnVtX3N0cjsKLQkJdWludDMyX3Qgc2VxdWVuY2U7Ci0JCXVpbnQxNl90IHN0cmVhbTsKKwkJdWlu
dDMyX3QgbWlkLCBjdXJfbWlkOworCQl1aW50MTZfdCBzaWQ7CiAJCXVpbnQxNl90IG9yZGVyZWQs
IGZsYWdzOwotCQlpbnQgb2xkOwogCQlzdHJ1Y3Qgc2N0cF9zdHJzZXEgKnN0c2VxLCBzdHJzZXFi
dWY7CiAJCXN0cnVjdCBzY3RwX3N0cnNlcV9taWQgKnN0c2VxX20sIHN0cnNlcWJ1Zl9tOwogCQlv
ZmZzZXQgKz0gc2l6ZW9mKCpmd2QpOwpAQCAtNTUwNywxMCArNTUyNyw4IEBAIHNjdHBfaGFuZGxl
X2ZvcndhcmRfdHNuKHN0cnVjdCBzY3RwX3RjYiAqc3RjYiwKIAkJU0NUUF9JTlBfUkVBRF9MT0NL
KHN0Y2ItPnNjdHBfZXApOwogCQlpZiAoYXNvYy0+aWRhdGFfc3VwcG9ydGVkKSB7CiAJCQludW1f
c3RyID0gZndkX3N6IC8gc2l6ZW9mKHN0cnVjdCBzY3RwX3N0cnNlcV9taWQpOwotCQkJb2xkID0g
MDsKIAkJfSBlbHNlIHsKIAkJCW51bV9zdHIgPSBmd2Rfc3ogLyBzaXplb2Yoc3RydWN0IHNjdHBf
c3Ryc2VxKTsKLQkJCW9sZCA9IDE7CiAJCX0KIAkJZm9yIChpID0gMDsgaSA8IG51bV9zdHI7IGkr
KykgewogCQkJaWYgKGFzb2MtPmlkYXRhX3N1cHBvcnRlZCkgewpAQCAtNTUyMSw4ICs1NTM5LDgg
QEAgc2N0cF9oYW5kbGVfZm9yd2FyZF90c24oc3RydWN0IHNjdHBfdGNiICpzdGNiLAogCQkJCWlm
IChzdHNlcV9tID09IE5VTEwpIHsKIAkJCQkJYnJlYWs7CiAJCQkJfQotCQkJCXN0cmVhbSA9IG50
b2hzKHN0c2VxX20tPnN0cmVhbSk7Ci0JCQkJc2VxdWVuY2UgPSBudG9obChzdHNlcV9tLT5tc2df
aWQpOworCQkJCXNpZCA9IG50b2hzKHN0c2VxX20tPnNpZCk7CisJCQkJbWlkID0gbnRvaGwoc3Rz
ZXFfbS0+bWlkKTsKIAkJCQlmbGFncyA9IG50b2hzKHN0c2VxX20tPmZsYWdzKTsKIAkJCQlpZiAo
ZmxhZ3MgJiBQUl9TQ1RQX1VOT1JERVJFRF9GTEFHKSB7CiAJCQkJCW9yZGVyZWQgPSAwOwpAQCAt
NTUzNyw4ICs1NTU1LDggQEAgc2N0cF9oYW5kbGVfZm9yd2FyZF90c24oc3RydWN0IHNjdHBfdGNi
ICpzdGNiLAogCQkJCWlmIChzdHNlcSA9PSBOVUxMKSB7CiAJCQkJCWJyZWFrOwogCQkJCX0KLQkJ
CQlzdHJlYW0gPSBudG9ocyhzdHNlcS0+c3RyZWFtKTsKLQkJCQlzZXF1ZW5jZSA9ICh1aW50MzJf
dCludG9ocyhzdHNlcS0+c2VxdWVuY2UpOworCQkJCXNpZCA9IG50b2hzKHN0c2VxLT5zaWQpOwor
CQkJCW1pZCA9ICh1aW50MzJfdCludG9ocyhzdHNlcS0+c3NuKTsKIAkJCQlvcmRlcmVkID0gMTsK
IAkJCX0KIAkJCS8qIENvbnZlcnQgKi8KQEAgLTU1NTAsMzYgKzU1NjgsMjYgQEAgc2N0cF9oYW5k
bGVfZm9yd2FyZF90c24oc3RydWN0IHNjdHBfdGNiICpzdGNiLAogCQkJICogd2hlcmUgaXRzIG5v
dCBhbGwgZGVsaXZlcmVkLiBJZiB3ZSBmaW5kIGl0IHdlIHRyYW5zbXV0ZSB0aGUKIAkJCSAqIHJl
YWQgZW50cnkgaW50byBhIFBESV9BQk9SVEVELgogCQkJICovCi0JCQlpZiAoc3RyZWFtID49IGFz
b2MtPnN0cmVhbWluY250KSB7CisJCQlpZiAoc2lkID49IGFzb2MtPnN0cmVhbWluY250KSB7CiAJ
CQkJLyogc2NyZXdlZCB1cCBzdHJlYW1zLCBzdG9wISAgKi8KIAkJCQlicmVhazsKIAkJCX0KLQkJ
CWlmICgoYXNvYy0+c3RyX29mX3BkYXBpID09IHN0cmVhbSkgJiYKLQkJCSAgICAoYXNvYy0+c3Nu
X29mX3BkYXBpID09IHNlcXVlbmNlKSkgeworCQkJaWYgKChhc29jLT5zdHJfb2ZfcGRhcGkgPT0g
c2lkKSAmJgorCQkJICAgIChhc29jLT5zc25fb2ZfcGRhcGkgPT0gbWlkKSkgewogCQkJCS8qIElm
IHRoaXMgaXMgdGhlIG9uZSB3ZSB3ZXJlIHBhcnRpYWxseSBkZWxpdmVyaW5nCiAJCQkJICogbm93
IHRoZW4gd2Ugbm8gbG9uZ2VyIGFyZS4gTm90ZSB0aGlzIHdpbGwgY2hhbmdlCiAJCQkJICogd2l0
aCB0aGUgcmVhc3NlbWJseSByZS13cml0ZS4KIAkJCQkgKi8KIAkJCQlhc29jLT5mcmFnbWVudGVk
X2RlbGl2ZXJ5X2lucHJvZ3Jlc3MgPSAwOwogCQkJfQotCQkJc3RybSA9ICZhc29jLT5zdHJtaW5b
c3RyZWFtXTsKLQkJCWlmIChhc29jLT5pZGF0YV9zdXBwb3J0ZWQgPT0gMCkgewotCQkJCXVpbnQx
Nl90IHN0cm1fYXQ7Ci0KLQkJCQlmb3Ioc3RybV9hdCA9IHN0cm0tPmxhc3Rfc2VxdWVuY2VfZGVs
aXZlcmVkOyBTQ1RQX01TR0lEX0dFKDEsIHNlcXVlbmNlLCBzdHJtX2F0KTsgc3RybV9hdCsrKSB7
Ci0JCQkJCXNjdHBfZmx1c2hfcmVhc3NtX2Zvcl9zdHJfc2VxKHN0Y2IsIGFzb2MsIHN0cmVhbSwg
c3RybV9hdCwgb3JkZXJlZCwgb2xkLCBuZXdfY3VtX3Rzbik7Ci0JCQkJfQotCQkJfSBlbHNlIHsK
LQkJCQl1aW50MzJfdCBzdHJtX2F0OwotCi0JCQkJZm9yKHN0cm1fYXQgPSBzdHJtLT5sYXN0X3Nl
cXVlbmNlX2RlbGl2ZXJlZDsgU0NUUF9NU0dJRF9HRSgwLCBzZXF1ZW5jZSwgc3RybV9hdCk7IHN0
cm1fYXQrKykgewotCQkJCQlzY3RwX2ZsdXNoX3JlYXNzbV9mb3Jfc3RyX3NlcShzdGNiLCBhc29j
LCBzdHJlYW0sIHN0cm1fYXQsIG9yZGVyZWQsIG9sZCwgbmV3X2N1bV90c24pOwotCQkJCX0KKwkJ
CXN0cm0gPSAmYXNvYy0+c3RybWluW3NpZF07CisJCQlmb3IgKGN1cl9taWQgPSBzdHJtLT5sYXN0
X21pZF9kZWxpdmVyZWQ7IFNDVFBfTUlEX0dFKGFzb2MtPmlkYXRhX3N1cHBvcnRlZCwgbWlkLCBj
dXJfbWlkKTsgY3VyX21pZCsrKSB7CisJCQkJc2N0cF9mbHVzaF9yZWFzc21fZm9yX3N0cl9zZXEo
c3RjYiwgYXNvYywgc2lkLCBjdXJfbWlkLCBvcmRlcmVkLCBuZXdfY3VtX3Rzbik7CiAJCQl9CiAJ
CQlUQUlMUV9GT1JFQUNIKGN0bCwgJnN0Y2ItPnNjdHBfZXAtPnJlYWRfcXVldWUsIG5leHQpIHsK
LQkJCQlpZiAoKGN0bC0+c2luZm9fc3RyZWFtID09IHN0cmVhbSkgJiYKLQkJCQkgICAgKGN0bC0+
c2luZm9fc3NuID09IHNlcXVlbmNlKSkgewotCQkJCQlzdHJfc2VxID0gKHN0cmVhbSA8PCAxNikg
fCAoMHgwMDAwZmZmZiAmIHNlcXVlbmNlKTsKKwkJCQlpZiAoKGN0bC0+c2luZm9fc3RyZWFtID09
IHNpZCkgJiYKKwkJCQkgICAgKFNDVFBfTUlEX0VRKGFzb2MtPmlkYXRhX3N1cHBvcnRlZCwgY3Rs
LT5taWQsIG1pZCkpKSB7CisJCQkJCXN0cl9zZXEgPSAoc2lkIDw8IDE2KSB8ICgweDAwMDBmZmZm
ICYgbWlkKTsKIAkJCQkJY3RsLT5wZGFwaV9hYm9ydGVkID0gMTsKIAkJCQkJc3YgPSBzdGNiLT5h
c29jLmNvbnRyb2xfcGRhcGk7CiAJCQkJCWN0bC0+ZW5kX2FkZGVkID0gMTsKQEAgLTU2MDIsMTUg
KzU2MTAsMTUgQEAgc2N0cF9oYW5kbGVfZm9yd2FyZF90c24oc3RydWN0IHNjdHBfdGNiICpzdGNi
LAogCQkJCQkJCVNDVFBfU09fTk9UX0xPQ0tFRCk7CiAJCQkJCXN0Y2ItPmFzb2MuY29udHJvbF9w
ZGFwaSA9IHN2OwogCQkJCQlicmVhazsKLQkJCQl9IGVsc2UgaWYgKChjdGwtPnNpbmZvX3N0cmVh
bSA9PSBzdHJlYW0pICYmCi0JCQkJCSAgIFNDVFBfTVNHSURfR1Qob2xkLCBjdGwtPnNpbmZvX3Nz
biwgc2VxdWVuY2UpKSB7CisJCQkJfSBlbHNlIGlmICgoY3RsLT5zaW5mb19zdHJlYW0gPT0gc2lk
KSAmJgorCQkJCQkgICBTQ1RQX01JRF9HVChhc29jLT5pZGF0YV9zdXBwb3J0ZWQsIGN0bC0+bWlk
LCBtaWQpKSB7CiAJCQkJCS8qIFdlIGFyZSBwYXN0IG91ciB2aWN0aW0gU1NOICovCiAJCQkJCWJy
ZWFrOwogCQkJCX0KIAkJCX0KLQkJCWlmIChTQ1RQX01TR0lEX0dUKG9sZCwgc2VxdWVuY2UsIHN0
cm0tPmxhc3Rfc2VxdWVuY2VfZGVsaXZlcmVkKSkgeworCQkJaWYgKFNDVFBfTUlEX0dUKGFzb2Mt
PmlkYXRhX3N1cHBvcnRlZCwgbWlkLCBzdHJtLT5sYXN0X21pZF9kZWxpdmVyZWQpKSB7CiAJCQkJ
LyogVXBkYXRlIHRoZSBzZXF1ZW5jZSBudW1iZXIgKi8KLQkJCQlzdHJtLT5sYXN0X3NlcXVlbmNl
X2RlbGl2ZXJlZCA9IHNlcXVlbmNlOworCQkJCXN0cm0tPmxhc3RfbWlkX2RlbGl2ZXJlZCA9IG1p
ZDsKIAkJCX0KIAkJCS8qIG5vdyBraWNrIHRoZSBzdHJlYW0gdGhlIG5ldyB3YXkgKi8KIAkJCS8q
c2FfaWdub3JlIE5PX05VTExfQ0hLKi8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3VzcnNjdHBsaWIv
bmV0aW5ldC9zY3RwX2luZGF0YS5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJj
ZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNyc2N0cGxpYi9uZXRpbmV0L3NjdHBf
aW5kYXRhLmgKaW5kZXggYjAwZGJhMWRmN2E0OTE5NDIyMWQ2NjQ2ZTg4NDkzNzcwZjQ5MjFhNi4u
NjI1ZGQ2MjRmMzdiMjY5YjNjMGNmNjgzZWNkZDQ5NWZmODg2N2EyYiAxMDA3NTUKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNj
dHBsaWIvdXNyc2N0cGxpYi9uZXRpbmV0L3NjdHBfaW5kYXRhLmgKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNy
c2N0cGxpYi9uZXRpbmV0L3NjdHBfaW5kYXRhLmgKQEAgLTMyLDcgKzMyLDcgQEAKIAogI2lmZGVm
IF9fRnJlZUJTRF9fCiAjaW5jbHVkZSA8c3lzL2NkZWZzLmg+Ci1fX0ZCU0RJRCgiJEZyZWVCU0Q6
IGhlYWQvc3lzL25ldGluZXQvc2N0cF9pbmRhdGEuaCAyOTc2NjMgMjAxNi0wNC0wNyAwOTozNDo0
MVogcnJzICQiKTsKK19fRkJTRElEKCIkRnJlZUJTRDogaGVhZC9zeXMvbmV0aW5ldC9zY3RwX2lu
ZGF0YS5oIDMxMDU5MCAyMDE2LTEyLTI2IDExOjA2OjQxWiB0dWV4ZW4gJCIpOwogI2VuZGlmCiAK
ICNpZm5kZWYgX05FVElORVRfU0NUUF9JTkRBVEFfSF8KQEAgLTQ0LDIwICs0NCwxOSBAQCBzdHJ1
Y3Qgc2N0cF9xdWV1ZWRfdG9fcmVhZCAqCiBzY3RwX2J1aWxkX3JlYWRxX2VudHJ5KHN0cnVjdCBz
Y3RwX3RjYiAqc3RjYiwKICAgICBzdHJ1Y3Qgc2N0cF9uZXRzICpuZXQsCiAgICAgdWludDMyX3Qg
dHNuLCB1aW50MzJfdCBwcGlkLAotICAgIHVpbnQzMl90IGNvbnRleHQsIHVpbnQxNl90IHN0cmVh
bV9ubywKLSAgICB1aW50MzJfdCBzdHJlYW1fc2VxLCB1aW50OF90IGZsYWdzLAorICAgIHVpbnQz
Ml90IGNvbnRleHQsIHVpbnQxNl90IHNpZCwKKyAgICB1aW50MzJfdCBtaWQsIHVpbnQ4X3QgZmxh
Z3MsCiAgICAgc3RydWN0IG1idWYgKmRtKTsKIAogCi0jZGVmaW5lIHNjdHBfYnVpbGRfcmVhZHFf
ZW50cnlfbWFjKF9jdGwsIGluX2l0LCBjb250ZXh0LCBuZXQsIHRzbiwgcHBpZCwgc3RyZWFtX25v
LCBzdHJlYW1fc2VxLCBmbGFncywgZG0sIHRmc24sIG1zZ2lkKSBkbyB7IFwKKyNkZWZpbmUgc2N0
cF9idWlsZF9yZWFkcV9lbnRyeV9tYWMoX2N0bCwgaW5faXQsIGNvbnRleHQsIG5ldCwgdHNuLCBw
cGlkLCBzaWQsIGZsYWdzLCBkbSwgdGZzbiwgbWlkKSBkbyB7IFwKIAlpZiAoX2N0bCkgeyBcCiAJ
CWF0b21pY19hZGRfaW50KCYoKG5ldCktPnJlZl9jb3VudCksIDEpOyBcCiAJCW1lbXNldChfY3Rs
LCAwLCBzaXplb2Yoc3RydWN0IHNjdHBfcXVldWVkX3RvX3JlYWQpKTsgXAotCQkoX2N0bCktPnNp
bmZvX3N0cmVhbSA9IHN0cmVhbV9ubzsgXAotCQkoX2N0bCktPnNpbmZvX3NzbiA9IHN0cmVhbV9z
ZXE7IFwKKwkJKF9jdGwpLT5zaW5mb19zdHJlYW0gPSBzaWQ7IFwKIAkJVEFJTFFfSU5JVCgmX2N0
bC0+cmVhc20pOyBcCiAJCShfY3RsKS0+dG9wX2ZzbiA9IHRmc247IFwKLQkJKF9jdGwpLT5tc2df
aWQgPSBtc2dpZDsgXAorCQkoX2N0bCktPm1pZCA9IG1pZDsgXAogCQkoX2N0bCktPnNpbmZvX2Zs
YWdzID0gKGZsYWdzIDw8IDgpOyBcCiAJCShfY3RsKS0+c2luZm9fcHBpZCA9IHBwaWQ7IFwKIAkJ
KF9jdGwpLT5zaW5mb19jb250ZXh0ID0gY29udGV4dDsgXApkaWZmIC0tZ2l0IGEvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIv
dXNyc2N0cGxpYi9uZXRpbmV0L3NjdHBfaW5wdXQuYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3VzcnNjdHBsaWIvbmV0
aW5ldC9zY3RwX2lucHV0LmMKaW5kZXggZWQxOTY4ODUxMzU1MTQwZjQ0YmEwNWZkZjEwNjA0MTQz
MThkMzA4MS4uMmMzMTY4M2Y0OGVhNWZhZjJjY2FhNjczNGRlMjQxNWExYWEzMGNmMSAxMDA3NTUK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3Jz
Y3RwL3VzcnNjdHBsaWIvdXNyc2N0cGxpYi9uZXRpbmV0L3NjdHBfaW5wdXQuYworKysgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0
cGxpYi91c3JzY3RwbGliL25ldGluZXQvc2N0cF9pbnB1dC5jCkBAIC0zMiw3ICszMiw3IEBACiAK
ICNpZmRlZiBfX0ZyZWVCU0RfXwogI2luY2x1ZGUgPHN5cy9jZGVmcy5oPgotX19GQlNESUQoIiRG
cmVlQlNEOiBoZWFkL3N5cy9uZXRpbmV0L3NjdHBfaW5wdXQuYyAzMDQ4MzcgMjAxNi0wOC0yNiAw
Nzo0OToyM1ogdHVleGVuICQiKTsKK19fRkJTRElEKCIkRnJlZUJTRDogaGVhZC9zeXMvbmV0aW5l
dC9zY3RwX2lucHV0LmMgMzEzMzMwIDIwMTctMDItMDYgMDg6NDk6NTdaIGFlICQiKTsKICNlbmRp
ZgogCiAjaW5jbHVkZSA8bmV0aW5ldC9zY3RwX29zLmg+CkBAIC0zNDMsMTQgKzM0MywxNCBAQCBz
Y3RwX3Byb2Nlc3NfaW5pdChzdHJ1Y3Qgc2N0cF9pbml0X2NodW5rICpjcCwgc3RydWN0IHNjdHBf
dGNiICpzdGNiKQogCQkvKiBhYmFuZG9uIHRoZSB1cHBlciBzdHJlYW1zICovCiAJCW5ld2NudCA9
IG50b2hzKGluaXQtPm51bV9pbmJvdW5kX3N0cmVhbXMpOwogCQlUQUlMUV9GT1JFQUNIX1NBRkUo
Y2hrLCAmYXNvYy0+c2VuZF9xdWV1ZSwgc2N0cF9uZXh0LCBuY2hrKSB7Ci0JCQlpZiAoY2hrLT5y
ZWMuZGF0YS5zdHJlYW1fbnVtYmVyID49IG5ld2NudCkgeworCQkJaWYgKGNoay0+cmVjLmRhdGEu
c2lkID49IG5ld2NudCkgewogCQkJCVRBSUxRX1JFTU9WRSgmYXNvYy0+c2VuZF9xdWV1ZSwgY2hr
LCBzY3RwX25leHQpOwogCQkJCWFzb2MtPnNlbmRfcXVldWVfY250LS07Ci0JCQkJaWYgKGFzb2Mt
PnN0cm1vdXRbY2hrLT5yZWMuZGF0YS5zdHJlYW1fbnVtYmVyXS5jaHVua3Nfb25fcXVldWVzID4g
MCkgewotCQkJCQlhc29jLT5zdHJtb3V0W2Noay0+cmVjLmRhdGEuc3RyZWFtX251bWJlcl0uY2h1
bmtzX29uX3F1ZXVlcy0tOworCQkJCWlmIChhc29jLT5zdHJtb3V0W2Noay0+cmVjLmRhdGEuc2lk
XS5jaHVua3Nfb25fcXVldWVzID4gMCkgeworCQkJCQlhc29jLT5zdHJtb3V0W2Noay0+cmVjLmRh
dGEuc2lkXS5jaHVua3Nfb25fcXVldWVzLS07CiAjaWZkZWYgSU5WQVJJQU5UUwogCQkJCX0gZWxz
ZSB7Ci0JCQkJCXBhbmljKCJObyBjaHVua3Mgb24gdGhlIHF1ZXVlcyBmb3Igc2lkICV1LiIsIGNo
ay0+cmVjLmRhdGEuc3RyZWFtX251bWJlcik7CisJCQkJCXBhbmljKCJObyBjaHVua3Mgb24gdGhl
IHF1ZXVlcyBmb3Igc2lkICV1LiIsIGNoay0+cmVjLmRhdGEuc2lkKTsKICNlbmRpZgogCQkJCX0K
IAkJCQlpZiAoY2hrLT5kYXRhICE9IE5VTEwpIHsKQEAgLTQzNSw4ICs0MzUsOCBAQCBzY3RwX3By
b2Nlc3NfaW5pdChzdHJ1Y3Qgc2N0cF9pbml0X2NodW5rICpjcCwgc3RydWN0IHNjdHBfdGNiICpz
dGNiKQogCQlyZXR1cm4gKC0xKTsKIAl9CiAJZm9yIChpID0gMDsgaSA8IGFzb2MtPnN0cmVhbWlu
Y250OyBpKyspIHsKLQkJYXNvYy0+c3RybWluW2ldLnN0cmVhbV9ubyA9IGk7Ci0JCWFzb2MtPnN0
cm1pbltpXS5sYXN0X3NlcXVlbmNlX2RlbGl2ZXJlZCA9IDB4ZmZmZmZmZmY7CisJCWFzb2MtPnN0
cm1pbltpXS5zaWQgPSBpOworCQlhc29jLT5zdHJtaW5baV0ubGFzdF9taWRfZGVsaXZlcmVkID0g
MHhmZmZmZmZmZjsKIAkJVEFJTFFfSU5JVCgmYXNvYy0+c3RybWluW2ldLmlucXVldWUpOwogCQlU
QUlMUV9JTklUKCZhc29jLT5zdHJtaW5baV0udW5vX2lucXVldWUpOwogCQlhc29jLT5zdHJtaW5b
aV0ucGRfYXBpX3N0YXJ0ZWQgPSAwOwpAQCAtMTcyOSwxMyArMTcyOSwxNCBAQCBzY3RwX3Byb2Nl
c3NfY29va2llX2V4aXN0aW5nKHN0cnVjdCBtYnVmICptLCBpbnQgaXBobGVuLCBpbnQgb2Zmc2V0
LAogCQkJCSAqIHNpbmNlIHdlIGRpZCBub3Qgc2VuZCBhIEhCIG1ha2Ugc3VyZSB3ZQogCQkJCSAq
IGRvbid0IGRvdWJsZSB0aGluZ3MKIAkJCQkgKi8KLSAgICAgICAgICAgICAgICBzdHJ1Y3QgdGlt
ZXZhbCB0aW1lX2VudGVyZWQ7CiAJCQkJbmV0LT5oYl9yZXNwb25kZWQgPSAxOworCQkJCXN0cnVj
dCB0aW1ldmFsIHRpbWVfZW50ZXJlZDsKIAkJCQluZXQtPlJUTyA9IHNjdHBfY2FsY3VsYXRlX3J0
byhzdGNiLCBhc29jLCBuZXQsCiAJCQkJCQkJICAgICAgJnRpbWVfZW50ZXJlZCwKIAkJCQkJCQkg
ICAgICBzY3RwX2FsaWduX3Vuc2FmZV9tYWtlY29weSwKIAkJCQkJCQkgICAgICBTQ1RQX1JUVF9G
Uk9NX05PTl9EQVRBKTsKLSAgICAgICAgICAgICAgICBjb29raWUtPnRpbWVfZW50ZXJlZCA9IHRp
bWVfZW50ZXJlZDsKKwkJCQljb29raWUtPnRpbWVfZW50ZXJlZCA9IHRpbWVfZW50ZXJlZDsKKwog
CQkJCWlmIChzdGNiLT5hc29jLnNjdHBfYXV0b2Nsb3NlX3RpY2tzICYmCiAJCQkJICAgIChzY3Rw
X2lzX2ZlYXR1cmVfb24oaW5wLCBTQ1RQX1BDQl9GTEFHU19BVVRPQ0xPU0UpKSkgewogCQkJCQlz
Y3RwX3RpbWVyX3N0YXJ0KFNDVFBfVElNRVJfVFlQRV9BVVRPQ0xPU0UsCkBAIC0yMDQ5LDcgKzIw
NTAsNyBAQCBzY3RwX3Byb2Nlc3NfY29va2llX2V4aXN0aW5nKHN0cnVjdCBtYnVmICptLCBpbnQg
aXBobGVuLCBpbnQgb2Zmc2V0LAogCQkJYXNvYy0+c3RybW91dFtpXS5hYmFuZG9uZWRfc2VudFsw
XSA9IDA7CiAJCQlhc29jLT5zdHJtb3V0W2ldLmFiYW5kb25lZF91bnNlbnRbMF0gPSAwOwogI2Vu
ZGlmCi0JCQlzdGNiLT5hc29jLnN0cm1vdXRbaV0uc3RyZWFtX25vID0gaTsKKwkJCXN0Y2ItPmFz
b2Muc3RybW91dFtpXS5zaWQgPSBpOwogCQkJc3RjYi0+YXNvYy5zdHJtb3V0W2ldLm5leHRfbWlk
X29yZGVyZWQgPSAwOwogCQkJc3RjYi0+YXNvYy5zdHJtb3V0W2ldLm5leHRfbWlkX3Vub3JkZXJl
ZCA9IDA7CiAJCQlzdGNiLT5hc29jLnN0cm1vdXRbaV0ubGFzdF9tc2dfaW5jb21wbGV0ZSA9IDA7
CkBAIC0yNDgyLDEyICsyNDgzLDEyIEBAIHNjdHBfcHJvY2Vzc19jb29raWVfbmV3KHN0cnVjdCBt
YnVmICptLCBpbnQgaXBobGVuLCBpbnQgb2Zmc2V0LAogCX0KIAkodm9pZClTQ1RQX0dFVFRJTUVf
VElNRVZBTCgmc3RjYi0+YXNvYy50aW1lX2VudGVyZWQpOwogCWlmICgobmV0cCAhPSBOVUxMKSAm
JiAoKm5ldHAgIT0gTlVMTCkpIHsKLSAgICAgICAgc3RydWN0IHRpbWV2YWwgdGltZV9lbnRlcmVk
OwogCQkvKiBjYWxjdWxhdGUgdGhlIFJUVCBhbmQgc2V0IHRoZSBlbmNhcHMgcG9ydCAqLworCQlz
dHJ1Y3QgdGltZXZhbCB0aW1lX2VudGVyZWQ7CiAJCSgqbmV0cCktPlJUTyA9IHNjdHBfY2FsY3Vs
YXRlX3J0byhzdGNiLCBhc29jLCAqbmV0cCwKIAkJCQkJCSAgJnRpbWVfZW50ZXJlZCwgc2N0cF9h
bGlnbl91bnNhZmVfbWFrZWNvcHksCiAJCQkJCQkgIFNDVFBfUlRUX0ZST01fTk9OX0RBVEEpOwot
ICAgICAgICBjb29raWUtPnRpbWVfZW50ZXJlZCA9IHRpbWVfZW50ZXJlZDsKKwkJY29va2llLT50
aW1lX2VudGVyZWQgPSB0aW1lX2VudGVyZWQ7CiAJfQogCS8qIHJlc3BvbmQgd2l0aCBhIENPT0tJ
RS1BQ0sgKi8KIAlzY3RwX3NlbmRfY29va2llX2FjayhzdGNiKTsKQEAgLTMyMjMsMTggKzMyMjQs
MTggQEAgc2N0cF9oYW5kbGVfZWNuX2VjaG8oc3RydWN0IHNjdHBfZWNuZV9jaHVuayAqY3AsCiAJ
aWYgKGxjaGsgPT0gTlVMTCkgewogCQl3aW5kb3dfZGF0YV90c24gPSBzdGNiLT5hc29jLnNlbmRp
bmdfc2VxIC0gMTsKIAl9IGVsc2UgewotCQl3aW5kb3dfZGF0YV90c24gPSBsY2hrLT5yZWMuZGF0
YS5UU05fc2VxOworCQl3aW5kb3dfZGF0YV90c24gPSBsY2hrLT5yZWMuZGF0YS50c247CiAJfQog
CiAJLyogRmluZCB3aGVyZSBpdCB3YXMgc2VudCB0byBpZiBwb3NzaWJsZS4gKi8KIAluZXQgPSBO
VUxMOwogCVRBSUxRX0ZPUkVBQ0gobGNoaywgJnN0Y2ItPmFzb2Muc2VudF9xdWV1ZSwgc2N0cF9u
ZXh0KSB7Ci0JCWlmIChsY2hrLT5yZWMuZGF0YS5UU05fc2VxID09IHRzbikgeworCQlpZiAobGNo
ay0+cmVjLmRhdGEudHNuID09IHRzbikgewogCQkJbmV0ID0gbGNoay0+d2hvVG87CiAJCQluZXQt
PmVjbl9wcmV2X2N3bmQgPSBsY2hrLT5yZWMuZGF0YS5jd25kX2F0X3NlbmQ7CiAJCQlicmVhazsK
IAkJfQotCQlpZiAoU0NUUF9UU05fR1QobGNoay0+cmVjLmRhdGEuVFNOX3NlcSwgdHNuKSkgewor
CQlpZiAoU0NUUF9UU05fR1QobGNoay0+cmVjLmRhdGEudHNuLCB0c24pKSB7CiAJCQlicmVhazsK
IAkJfQogCX0KQEAgLTM0MjIsMTEgKzM0MjMsMTEgQEAgcHJvY2Vzc19jaHVua19kcm9wKHN0cnVj
dCBzY3RwX3RjYiAqc3RjYiwgc3RydWN0IHNjdHBfY2h1bmtfZGVzYyAqZGVzYywKIAogCQl0c24g
PSBudG9obChkZXNjLT50c25faWZhbnkpOwogCQlUQUlMUV9GT1JFQUNIKHRwMSwgJnN0Y2ItPmFz
b2Muc2VudF9xdWV1ZSwgc2N0cF9uZXh0KSB7Ci0JCQlpZiAodHAxLT5yZWMuZGF0YS5UU05fc2Vx
ID09IHRzbikgeworCQkJaWYgKHRwMS0+cmVjLmRhdGEudHNuID09IHRzbikgewogCQkJCS8qIGZv
dW5kIGl0ICovCiAJCQkJYnJlYWs7CiAJCQl9Ci0JCQlpZiAoU0NUUF9UU05fR1QodHAxLT5yZWMu
ZGF0YS5UU05fc2VxLCB0c24pKSB7CisJCQlpZiAoU0NUUF9UU05fR1QodHAxLT5yZWMuZGF0YS50
c24sIHRzbikpIHsKIAkJCQkvKiBub3QgZm91bmQgKi8KIAkJCQl0cDEgPSBOVUxMOwogCQkJCWJy
ZWFrOwpAQCAtMzQzOSw3ICszNDQwLDcgQEAgcHJvY2Vzc19jaHVua19kcm9wKHN0cnVjdCBzY3Rw
X3RjYiAqc3RjYiwgc3RydWN0IHNjdHBfY2h1bmtfZGVzYyAqZGVzYywKIAkJCSAqLwogCQkJU0NU
UF9TVEFUX0lOQ1Ioc2N0cHNfcGRycGRuZm5kKTsKIAkJCVRBSUxRX0ZPUkVBQ0godHAxLCAmc3Rj
Yi0+YXNvYy5zZW50X3F1ZXVlLCBzY3RwX25leHQpIHsKLQkJCQlpZiAodHAxLT5yZWMuZGF0YS5U
U05fc2VxID09IHRzbikgeworCQkJCWlmICh0cDEtPnJlYy5kYXRhLnRzbiA9PSB0c24pIHsKIAkJ
CQkJLyogZm91bmQgaXQgKi8KIAkJCQkJYnJlYWs7CiAJCQkJfQpAQCAtMzUwNSw3ICszNTA2LDcg
QEAgcHJvY2Vzc19jaHVua19kcm9wKHN0cnVjdCBzY3RwX3RjYiAqc3RjYiwgc3RydWN0IHNjdHBf
Y2h1bmtfZGVzYyAqZGVzYywKIAkJCWlmIChUQUlMUV9FTVBUWSgmc3RjYi0+YXNvYy5zZW5kX3F1
ZXVlKSkgewogCQkJCXRwMS0+cmVjLmRhdGEuZmFzdF9yZXRyYW5fdHNuID0gc3RjYi0+YXNvYy5z
ZW5kaW5nX3NlcTsKIAkJCX0gZWxzZSB7Ci0JCQkJdHAxLT5yZWMuZGF0YS5mYXN0X3JldHJhbl90
c24gPSAoVEFJTFFfRklSU1QoJnN0Y2ItPmFzb2Muc2VuZF9xdWV1ZSkpLT5yZWMuZGF0YS5UU05f
c2VxOworCQkJCXRwMS0+cmVjLmRhdGEuZmFzdF9yZXRyYW5fdHNuID0gKFRBSUxRX0ZJUlNUKCZz
dGNiLT5hc29jLnNlbmRfcXVldWUpKS0+cmVjLmRhdGEudHNuOwogCQkJfQogCiAJCQkvKiByZXN0
YXJ0IHRoZSB0aW1lciAqLwpAQCAtMzUyMSw3ICszNTIyLDcgQEAgcHJvY2Vzc19jaHVua19kcm9w
KHN0cnVjdCBzY3RwX3RjYiAqc3RjYiwgc3RydWN0IHNjdHBfY2h1bmtfZGVzYyAqZGVzYywKIAkJ
CQkJICAgICAgIHRwMS0+d2hvVG8tPmZsaWdodF9zaXplLAogCQkJCQkgICAgICAgdHAxLT5ib29r
X3NpemUsCiAJCQkJCSAgICAgICAodWludDMyX3QpKHVpbnRwdHJfdClzdGNiLAotCQkJCQkgICAg
ICAgdHAxLT5yZWMuZGF0YS5UU05fc2VxKTsKKwkJCQkJICAgICAgIHRwMS0+cmVjLmRhdGEudHNu
KTsKIAkJCX0KIAkJCWlmICh0cDEtPnNlbnQgPCBTQ1RQX0RBVEFHUkFNX1JFU0VORCkgewogCQkJ
CXNjdHBfZmxpZ2h0X3NpemVfZGVjcmVhc2UodHAxKTsKQEAgLTM2NjQsMTIgKzM2NjUsMTIgQEAg
c2N0cF9yZXNldF9pbl9zdHJlYW0oc3RydWN0IHNjdHBfdGNiICpzdGNiLCB1aW50MzJfdCBudW1i
ZXJfZW50cmllcywgdWludDE2X3QgKmwKIAkJCWlmICh0ZW1wID49IHN0Y2ItPmFzb2Muc3RyZWFt
aW5jbnQpIHsKIAkJCQljb250aW51ZTsKIAkJCX0KLQkJCXN0Y2ItPmFzb2Muc3RybWluW3RlbXBd
Lmxhc3Rfc2VxdWVuY2VfZGVsaXZlcmVkID0gMHhmZmZmZmZmZjsKKwkJCXN0Y2ItPmFzb2Muc3Ry
bWluW3RlbXBdLmxhc3RfbWlkX2RlbGl2ZXJlZCA9IDB4ZmZmZmZmZmY7CiAJCX0KIAl9IGVsc2Ug
ewogCQlsaXN0ID0gTlVMTDsKIAkJZm9yIChpID0gMDsgaSA8IHN0Y2ItPmFzb2Muc3RyZWFtaW5j
bnQ7IGkrKykgewotCQkJc3RjYi0+YXNvYy5zdHJtaW5baV0ubGFzdF9zZXF1ZW5jZV9kZWxpdmVy
ZWQgPSAweGZmZmZmZmZmOworCQkJc3RjYi0+YXNvYy5zdHJtaW5baV0ubGFzdF9taWRfZGVsaXZl
cmVkID0gMHhmZmZmZmZmZjsKIAkJfQogCX0KIAlzY3RwX3VscF9ub3RpZnkoU0NUUF9OT1RJRllf
U1RSX1JFU0VUX1JFQ1YsIHN0Y2IsIG51bWJlcl9lbnRyaWVzLCAodm9pZCAqKWxpc3QsIFNDVFBf
U09fTk9UX0xPQ0tFRCk7CkBAIC00MjEwLDggKzQyMTEsOCBAQCBzY3RwX2hhbmRsZV9zdHJfcmVz
ZXRfYWRkX3N0cm0oc3RydWN0IHNjdHBfdGNiICpzdGNiLCBzdHJ1Y3Qgc2N0cF90bWl0X2NodW5r
ICpjaAogCQkJZm9yIChpID0gMDsgaSA8IHN0Y2ItPmFzb2Muc3RyZWFtaW5jbnQ7IGkrKykgewog
CQkJCVRBSUxRX0lOSVQoJnN0Y2ItPmFzb2Muc3RybWluW2ldLmlucXVldWUpOwogCQkJCVRBSUxR
X0lOSVQoJnN0Y2ItPmFzb2Muc3RybWluW2ldLnVub19pbnF1ZXVlKTsKLQkJCQlzdGNiLT5hc29j
LnN0cm1pbltpXS5zdHJlYW1fbm8gPSBpOwotCQkJCXN0Y2ItPmFzb2Muc3RybWluW2ldLmxhc3Rf
c2VxdWVuY2VfZGVsaXZlcmVkID0gb2xkc3RybVtpXS5sYXN0X3NlcXVlbmNlX2RlbGl2ZXJlZDsK
KwkJCQlzdGNiLT5hc29jLnN0cm1pbltpXS5zaWQgPSBpOworCQkJCXN0Y2ItPmFzb2Muc3RybWlu
W2ldLmxhc3RfbWlkX2RlbGl2ZXJlZCA9IG9sZHN0cm1baV0ubGFzdF9taWRfZGVsaXZlcmVkOwog
CQkJCXN0Y2ItPmFzb2Muc3RybWluW2ldLmRlbGl2ZXJ5X3N0YXJ0ZWQgPSBvbGRzdHJtW2ldLmRl
bGl2ZXJ5X3N0YXJ0ZWQ7CiAJCQkJc3RjYi0+YXNvYy5zdHJtaW5baV0ucGRfYXBpX3N0YXJ0ZWQg
PSBvbGRzdHJtW2ldLnBkX2FwaV9zdGFydGVkOwogCQkJCS8qIG5vdyBhbnl0aGluZyBvbiB0aG9z
ZSBxdWV1ZXM/ICovCkBAIC00MjI4LDggKzQyMjksOCBAQCBzY3RwX2hhbmRsZV9zdHJfcmVzZXRf
YWRkX3N0cm0oc3RydWN0IHNjdHBfdGNiICpzdGNiLCBzdHJ1Y3Qgc2N0cF90bWl0X2NodW5rICpj
aAogCQkJZm9yIChpID0gc3RjYi0+YXNvYy5zdHJlYW1pbmNudDsgaSA8IG51bV9zdHJlYW07IGkr
KykgewogCQkJCVRBSUxRX0lOSVQoJnN0Y2ItPmFzb2Muc3RybWluW2ldLmlucXVldWUpOwogCQkJ
CVRBSUxRX0lOSVQoJnN0Y2ItPmFzb2Muc3RybWluW2ldLnVub19pbnF1ZXVlKTsKLQkJCQlzdGNi
LT5hc29jLnN0cm1pbltpXS5zdHJlYW1fbm8gPSBpOwotCQkJCXN0Y2ItPmFzb2Muc3RybWluW2ld
Lmxhc3Rfc2VxdWVuY2VfZGVsaXZlcmVkID0gMHhmZmZmZmZmZjsKKwkJCQlzdGNiLT5hc29jLnN0
cm1pbltpXS5zaWQgPSBpOworCQkJCXN0Y2ItPmFzb2Muc3RybWluW2ldLmxhc3RfbWlkX2RlbGl2
ZXJlZCA9IDB4ZmZmZmZmZmY7CiAJCQkJc3RjYi0+YXNvYy5zdHJtaW5baV0ucGRfYXBpX3N0YXJ0
ZWQgPSAwOwogCQkJCXN0Y2ItPmFzb2Muc3RybWluW2ldLmRlbGl2ZXJ5X3N0YXJ0ZWQgPSAwOwog
CQkJfQpAQCAtNTk5OCwzNCArNTk5OSw2IEBAIHNjdHBfY29tbW9uX2lucHV0X3Byb2Nlc3Npbmco
c3RydWN0IG1idWYgKiptbSwgaW50IGlwaGxlbiwgaW50IG9mZnNldCwgaW50IGxlbmd0CiAJfSBl
bHNlIGlmIChzdGNiID09IE5VTEwpIHsKIAkJaW5wX2RlY3IgPSBpbnA7CiAJfQotI2lmZGVmIElQ
U0VDCi0JLyotCi0JICogSSB2ZXJ5IG11Y2ggZG91YnQgYW55IG9mIHRoZSBJUFNFQyBzdHVmZiB3
aWxsIHdvcmsgYnV0IEkgaGF2ZSBubwotCSAqIGlkZWEsIHNvIEkgd2lsbCBsZWF2ZSBpdCBpbiBw
bGFjZS4KLQkgKi8KLQlpZiAoaW5wICE9IE5VTEwpIHsKLQkJc3dpdGNoIChkc3QtPnNhX2ZhbWls
eSkgewotI2lmZGVmIElORVQKLQkJY2FzZSBBRl9JTkVUOgotCQkJaWYgKGlwc2VjNF9pbl9yZWpl
Y3QobSwgJmlucC0+aXBfaW5wLmlucCkpIHsKLQkJCQlTQ1RQX1NUQVRfSU5DUihzY3Rwc19oZHJv
cHMpOwotCQkJCWdvdG8gb3V0OwotCQkJfQotCQkJYnJlYWs7Ci0jZW5kaWYKLSNpZmRlZiBJTkVU
NgotCQljYXNlIEFGX0lORVQ2OgotCQkJaWYgKGlwc2VjNl9pbl9yZWplY3QobSwgJmlucC0+aXBf
aW5wLmlucCkpIHsKLQkJCQlTQ1RQX1NUQVRfSU5DUihzY3Rwc19oZHJvcHMpOwotCQkJCWdvdG8g
b3V0OwotCQkJfQotCQkJYnJlYWs7Ci0jZW5kaWYKLQkJZGVmYXVsdDoKLQkJCWJyZWFrOwotCQl9
Ci0JfQotI2VuZGlmCiAJU0NUUERCRyhTQ1RQX0RFQlVHX0lOUFVUMSwgIk9rLCBDb21tb24gaW5w
dXQgcHJvY2Vzc2luZyBjYWxsZWQsIG06JXAgaXBobGVuOiVkIG9mZnNldDolZCBsZW5ndGg6JWQg
c3RjYjolcFxuIiwKIAkJKHZvaWQgKiltLCBpcGhsZW4sIG9mZnNldCwgbGVuZ3RoLCAodm9pZCAq
KXN0Y2IpOwogCWlmIChzdGNiKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi91c3JzY3RwbGliL25l
dGluZXQvc2N0cF9pbnB1dC5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90
aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNyc2N0cGxpYi9uZXRpbmV0L3NjdHBfaW5w
dXQuaAppbmRleCA4NjZmNDgwYTg4OGEzNWNmYzAyZjg3NDIzZDkwNmVlZDUwZDdhNWZiLi5iYzRj
ZjQyM2YxYzYzZDAxNzhhNjMwNDM3Y2UwYTMwNDNmZjY0OTdiIDEwMDc1NQotLS0gYS9Tb3VyY2Uv
VGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxp
Yi91c3JzY3RwbGliL25ldGluZXQvc2N0cF9pbnB1dC5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3VzcnNjdHBs
aWIvbmV0aW5ldC9zY3RwX2lucHV0LmgKQEAgLTMyLDcgKzMyLDcgQEAKIAogI2lmZGVmIF9fRnJl
ZUJTRF9fCiAjaW5jbHVkZSA8c3lzL2NkZWZzLmg+Ci1fX0ZCU0RJRCgiJEZyZWVCU0Q6IGhlYWQv
c3lzL25ldGluZXQvc2N0cF9pbnB1dC5oIDI4NDUxNSAyMDE1LTA2LTE3IDE1OjIwOjE0WiB0dWV4
ZW4gJCIpOworX19GQlNESUQoIiRGcmVlQlNEOiBoZWFkL3N5cy9uZXRpbmV0L3NjdHBfaW5wdXQu
aCAzMTA1OTAgMjAxNi0xMi0yNiAxMTowNjo0MVogdHVleGVuICQiKTsKICNlbmRpZgogCiAjaWZu
ZGVmIF9ORVRJTkVUX1NDVFBfSU5QVVRfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3VzcnNjdHBs
aWIvbmV0aW5ldC9zY3RwX291dHB1dC5jIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNyc2N0cGxpYi9uZXRpbmV0L3Nj
dHBfb3V0cHV0LmMKaW5kZXggMjJhMDNmZWM1ZjJkMDI2ZjQ1ZGZlOGUyNDFlZTRkYTBkNGRlOWRl
ZS4uZmEzZDM4OTFhODRlZTcwZjM5ZjA3YzY3ZThkZDk0ODBmNTNhOGVjMiAxMDA3NTUKLS0tIGEv
U291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3Vz
cnNjdHBsaWIvdXNyc2N0cGxpYi9uZXRpbmV0L3NjdHBfb3V0cHV0LmMKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIv
dXNyc2N0cGxpYi9uZXRpbmV0L3NjdHBfb3V0cHV0LmMKQEAgLTMyLDcgKzMyLDcgQEAKIAogI2lm
ZGVmIF9fRnJlZUJTRF9fCiAjaW5jbHVkZSA8c3lzL2NkZWZzLmg+Ci1fX0ZCU0RJRCgiJEZyZWVC
U0Q6IGhlYWQvc3lzL25ldGluZXQvc2N0cF9vdXRwdXQuYyAzMDQ1NzkgMjAxNi0wOC0yMiAwMTo0
NToyOVogdHVleGVuICQiKTsKK19fRkJTRElEKCIkRnJlZUJTRDogaGVhZC9zeXMvbmV0aW5ldC9z
Y3RwX291dHB1dC5jIDMxMzAzMiAyMDE3LTAyLTAxIDAwOjEwOjI5WiB0dWV4ZW4gJCIpOwogI2Vu
ZGlmCiAKICNpbmNsdWRlIDxuZXRpbmV0L3NjdHBfb3MuaD4KQEAgLTM3NDcsNyArMzc0Nyw3IEBA
IHNjdHBfcHJvY2Vzc19jbXNnc19mb3JfaW5pdChzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsIHN0cnVj
dCBtYnVmICpjb250cm9sLCBpbnQgKmVyCiAJCQkJCQlzdGNiLT5hc29jLnN0cm1vdXRbaV0uYWJh
bmRvbmVkX3NlbnRbMF0gPSAwOwogCQkJCQkJc3RjYi0+YXNvYy5zdHJtb3V0W2ldLmFiYW5kb25l
ZF91bnNlbnRbMF0gPSAwOwogI2VuZGlmCi0JCQkJCQlzdGNiLT5hc29jLnN0cm1vdXRbaV0uc3Ry
ZWFtX25vID0gaTsKKwkJCQkJCXN0Y2ItPmFzb2Muc3RybW91dFtpXS5zaWQgPSBpOwogCQkJCQkJ
c3RjYi0+YXNvYy5zdHJtb3V0W2ldLmxhc3RfbXNnX2luY29tcGxldGUgPSAwOwogCQkJCQkJc3Rj
Yi0+YXNvYy5zdHJtb3V0W2ldLnN0YXRlID0gU0NUUF9TVFJFQU1fT1BFTklORzsKIAkJCQkJCXN0
Y2ItPmFzb2Muc3NfZnVuY3Rpb25zLnNjdHBfc3NfaW5pdF9zdHJlYW0oc3RjYiwgJnN0Y2ItPmFz
b2Muc3RybW91dFtpXSwgTlVMTCk7CkBAIC01MDAyLDggKzUwMDIsMTIgQEAgc2N0cF9sb3dsZXZl
bF9jaHVua19vdXRwdXQoc3RydWN0IHNjdHBfaW5wY2IgKmlucCwKICNpZiBkZWZpbmVkKFNDVFBf
V0lUSF9OT19DU1VNKQogCQlTQ1RQX1NUQVRfSU5DUihzY3Rwc19zZW5kbm9jcmMpOwogI2Vsc2UK
LQkJc2N0cGhkci0+Y2hlY2tzdW0gPSBzY3RwX2NhbGN1bGF0ZV9ja3N1bShtLCAwKTsKLQkJU0NU
UF9TVEFUX0lOQ1Ioc2N0cHNfc2VuZHN3Y3JjKTsKKwkJaWYgKFNDVFBfQkFTRV9WQVIoY3JjMzJj
X29mZmxvYWRlZCkgPT0gMCkgeworCQkJc2N0cGhkci0+Y2hlY2tzdW0gPSBzY3RwX2NhbGN1bGF0
ZV9ja3N1bShtLCAwKTsKKwkJCVNDVFBfU1RBVF9JTkNSKHNjdHBzX3NlbmRzd2NyYyk7CisJCX0g
ZWxzZSB7CisJCQlTQ1RQX1NUQVRfSU5DUihzY3Rwc19zZW5kaHdjcmMpOworCQl9CiAjZW5kaWYK
IAkJaWYgKHRvc192YWx1ZSA9PSAwKSB7CiAJCQl0b3NfdmFsdWUgPSBpbnAtPmlwX2lucC5pbnAu
aW5wX2lwX3RvczsKQEAgLTUwNDksNyArNTA1Myw3IEBAIHNjdHBfc2VuZF9pbml0aWF0ZShzdHJ1
Y3Qgc2N0cF9pbnBjYiAqaW5wLCBzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsIGludCBzb19sb2NrZWQK
IAlzdHJ1Y3Qgc2N0cF9zdXBwb3J0ZWRfY2h1bmtfdHlwZXNfcGFyYW0gKnByX3N1cHBvcnRlZDsK
IAlzdHJ1Y3Qgc2N0cF9wYXJhbWhkciAqcGg7CiAJaW50IGNudF9pbml0c190byA9IDA7Ci0JaW50
IHJldDsKKwlpbnQgZXJyb3I7CiAJdWludDE2X3QgbnVtX2V4dCwgY2h1bmtfbGVuLCBwYWRkaW5n
X2xlbiwgcGFyYW1ldGVyX2xlbjsKIAogI2lmIGRlZmluZWQoX19BUFBMRV9fKQpAQCAtNTMxMiwx
NiArNTMxNiwyMyBAQCBzY3RwX3NlbmRfaW5pdGlhdGUoc3RydWN0IHNjdHBfaW5wY2IgKmlucCwg
c3RydWN0IHNjdHBfdGNiICpzdGNiLCBpbnQgc29fbG9ja2VkCiAJCX0KIAl9CiAJU0NUUERCRyhT
Q1RQX0RFQlVHX09VVFBVVDQsICJTZW5kaW5nIElOSVQgLSBjYWxscyBsb3dsZXZlbF9vdXRwdXRc
biIpOwotCXJldCA9IHNjdHBfbG93bGV2ZWxfY2h1bmtfb3V0cHV0KGlucCwgc3RjYiwgbmV0LAot
CSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzdHJ1Y3Qgc29ja2FkZHIgKikmbmV0
LT5yby5fbF9hZGRyLAotCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG0sIDAsIE5V
TEwsIDAsIDAsIDAsIDAsCi0JICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5wLT5z
Y3RwX2xwb3J0LCBzdGNiLT5ycG9ydCwgaHRvbmwoMCksCi0JICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgbmV0LT5wb3J0LCBOVUxMLAorCWlmICgoZXJyb3IgPSBzY3RwX2xvd2xldmVs
X2NodW5rX291dHB1dChpbnAsIHN0Y2IsIG5ldCwKKwkgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgKHN0cnVjdCBzb2NrYWRkciAqKSZuZXQtPnJvLl9sX2FkZHIsCisJICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG0sIDAsIE5VTEwsIDAsIDAsIDAs
IDAsCisJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlucC0+c2N0cF9s
cG9ydCwgc3RjYi0+cnBvcnQsIGh0b25sKDApLAorCSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBuZXQtPnBvcnQsIE5VTEwsCiAjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykK
LQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCAwLAorCSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAwLCAwLAogI2VuZGlmCi0JICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc29fbG9ja2VkKTsKLQlTQ1RQREJHKFNDVFBfREVCVUdfT1VUUFVU
NCwgImxvd2xldmVsX291dHB1dCAtICVkXG4iLCByZXQpOworCSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBzb19sb2NrZWQpKSkgeworCQlTQ1RQREJHKFNDVFBfREVCVUdf
T1VUUFVUNCwgIkdhayBzZW5kIGVycm9yICVkXG4iLCBlcnJvcik7CisJCWlmIChlcnJvciA9PSBF
Tk9CVUZTKSB7CisJCQlzdGNiLT5hc29jLmlmcF9oYWRfZW5vYnVmID0gMTsKKwkJCVNDVFBfU1RB
VF9JTkNSKHNjdHBzX2xvd2xldmVsZXJyKTsKKwkJfQorCX0gZWxzZSB7CisJCXN0Y2ItPmFzb2Mu
aWZwX2hhZF9lbm9idWYgPSAwOworCX0KIAlTQ1RQX1NUQVRfSU5DUl9DT1VOVEVSNjQoc2N0cHNf
b3V0Y29udHJvbGNodW5rcyk7CiAJKHZvaWQpU0NUUF9HRVRUSU1FX1RJTUVWQUwoJm5ldC0+bGFz
dF9zZW50X3RpbWUpOwogfQpAQCAtNTkxOSw2ICs1OTMwLDcgQEAgc2N0cF9zZW5kX2luaXRpYXRl
X2FjayhzdHJ1Y3Qgc2N0cF9pbnBjYiAqaW5wLCBzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsCiAJdWlu
dDE2X3QgaGlzX2xpbWl0LCBpX3dhbnQ7CiAJaW50IGFib3J0X2ZsYWc7CiAJaW50IG5hdF9mcmll
bmRseSA9IDA7CisJaW50IGVycm9yOwogCXN0cnVjdCBzb2NrZXQgKnNvOwogCXVpbnQxNl90IG51
bV9leHQsIGNodW5rX2xlbiwgcGFkZGluZ19sZW4sIHBhcmFtZXRlcl9sZW47CiAKQEAgLTYwMDQs
MTAgKzYwMTYsMTAgQEAgc2N0cF9zZW5kX2luaXRpYXRlX2FjayhzdHJ1Y3Qgc2N0cF9pbnBjYiAq
aW5wLCBzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsCiAJICovCiAJbWVtc2V0KCZzdGMsIDAsIHNpemVv
ZihzdHJ1Y3Qgc2N0cF9zdGF0ZV9jb29raWUpKTsKIAotICAgIHN0cnVjdCB0aW1ldmFsIHRpbWVf
ZW50ZXJlZDsKIAkvKiB0aGUgdGltZSBJIGJ1aWx0IGNvb2tpZSAqLworCXN0cnVjdCB0aW1ldmFs
IHRpbWVfZW50ZXJlZDsKIAkodm9pZClTQ1RQX0dFVFRJTUVfVElNRVZBTCgmdGltZV9lbnRlcmVk
KTsKLSAgICBzdGMudGltZV9lbnRlcmVkID0gdGltZV9lbnRlcmVkOworCXN0Yy50aW1lX2VudGVy
ZWQgPSB0aW1lX2VudGVyZWQ7CiAJLyogcG9wdWxhdGUgYW55IHRpZSB0YWdzICovCiAJaWYgKGFz
b2MgIT0gTlVMTCkgewogCQkvKiB1bmxvY2sgYmVmb3JlIHRhZyBzZWxlY3Rpb25zICovCkBAIC02
NjAwLDE0ICs2NjEyLDI2IEBAIHNjdHBfc2VuZF9pbml0aWF0ZV9hY2soc3RydWN0IHNjdHBfaW5w
Y2IgKmlucCwgc3RydWN0IHNjdHBfdGNiICpzdGNiLAogCQlvdmVyX2FkZHIgPSBOVUxMOwogCX0K
IAotCSh2b2lkKXNjdHBfbG93bGV2ZWxfY2h1bmtfb3V0cHV0KGlucCwgTlVMTCwgTlVMTCwgdG8s
IG0sIDAsIE5VTEwsIDAsIDAsCi0JICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwg
MCwKLQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnAtPnNjdHBfbHBvcnQsIHNo
LT5zcmNfcG9ydCwgaW5pdF9jaGstPmluaXQuaW5pdGlhdGVfdGFnLAotCSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHBvcnQsIG92ZXJfYWRkciwKKwlpZiAoKGVycm9yID0gc2N0cF9s
b3dsZXZlbF9jaHVua19vdXRwdXQoaW5wLCBOVUxMLCBOVUxMLCB0bywgbSwgMCwgTlVMTCwgMCwg
MCwKKwkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgMCwKKwkgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5wLT5zY3RwX2xwb3J0LCBzaC0+
c3JjX3BvcnQsIGluaXRfY2hrLT5pbml0LmluaXRpYXRlX3RhZywKKwkgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcG9ydCwgb3Zlcl9hZGRyLAogI2lmIGRlZmluZWQoX19G
cmVlQlNEX18pCi0JICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWZsb3d0eXBlLCBt
Zmxvd2lkLAorCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZmxvd3R5
cGUsIG1mbG93aWQsCiAjZW5kaWYKLQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBT
Q1RQX1NPX05PVF9MT0NLRUQpOworCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBTQ1RQX1NPX05PVF9MT0NLRUQpKSkgeworCQlTQ1RQREJHKFNDVFBfREVCVUdfT1VUUFVU
NCwgIkdhayBzZW5kIGVycm9yICVkXG4iLCBlcnJvcik7CisJCWlmIChlcnJvciA9PSBFTk9CVUZT
KSB7CisJCQlpZiAoYXNvYyAhPSBOVUxMKSB7CisJCQkJYXNvYy0+aWZwX2hhZF9lbm9idWYgPSAx
OworCQkJfQorCQkJU0NUUF9TVEFUX0lOQ1Ioc2N0cHNfbG93bGV2ZWxlcnIpOworCQl9CisJfSBl
bHNlIHsKKwkJaWYgKGFzb2MgIT0gTlVMTCkgeworCQkJYXNvYy0+aWZwX2hhZF9lbm9idWYgPSAw
OworCQl9CisJfQogCVNDVFBfU1RBVF9JTkNSX0NPVU5URVI2NChzY3Rwc19vdXRjb250cm9sY2h1
bmtzKTsKIH0KIApAQCAtNjg0OSw3ICs2ODczLDcgQEAgc2N0cF9tc2dfYXBwZW5kKHN0cnVjdCBz
Y3RwX3RjYiAqc3RjYiwKIAkJc3AtPm5ldCA9IE5VTEw7CiAJfQogCSh2b2lkKVNDVFBfR0VUVElN
RV9USU1FVkFMKCZzcC0+dHMpOwotCXNwLT5zdHJlYW0gPSBzcmN2LT5zaW5mb19zdHJlYW07CisJ
c3AtPnNpZCA9IHNyY3YtPnNpbmZvX3N0cmVhbTsKIAlzcC0+bXNnX2lzX2NvbXBsZXRlID0gMTsK
IAlzcC0+c2VuZGVyX2FsbF9kb25lID0gMTsKIAlzcC0+c29tZV90YWtlbiA9IDA7CkBAIC03NDQ1
LDE0ICs3NDY5LDE0IEBAIHNjdHBfY2xlYW5fdXBfZGF0YWxpc3Qoc3RydWN0IHNjdHBfdGNiICpz
dGNiLAogCQkvKiByZWNvcmQgdGltZSAqLwogCQlkYXRhX2xpc3RbaV0tPnNlbnRfcmN2X3RpbWUg
PSBuZXQtPmxhc3Rfc2VudF90aW1lOwogCQlkYXRhX2xpc3RbaV0tPnJlYy5kYXRhLmN3bmRfYXRf
c2VuZCA9IG5ldC0+Y3duZDsKLQkJZGF0YV9saXN0W2ldLT5yZWMuZGF0YS5mYXN0X3JldHJhbl90
c24gPSBkYXRhX2xpc3RbaV0tPnJlYy5kYXRhLlRTTl9zZXE7CisJCWRhdGFfbGlzdFtpXS0+cmVj
LmRhdGEuZmFzdF9yZXRyYW5fdHNuID0gZGF0YV9saXN0W2ldLT5yZWMuZGF0YS50c247CiAJCWlm
IChkYXRhX2xpc3RbaV0tPndob1RvID09IE5VTEwpIHsKIAkJCWRhdGFfbGlzdFtpXS0+d2hvVG8g
PSBuZXQ7CiAJCQlhdG9taWNfYWRkX2ludCgmbmV0LT5yZWZfY291bnQsIDEpOwogCQl9CiAJCS8q
IG9uIHRvIHRoZSBzZW50IHF1ZXVlICovCiAJCXRwMSA9IFRBSUxRX0xBU1QoJmFzb2MtPnNlbnRf
cXVldWUsIHNjdHBjaHVua19saXN0aGVhZCk7Ci0JCWlmICgodHAxKSAmJiBTQ1RQX1RTTl9HVCh0
cDEtPnJlYy5kYXRhLlRTTl9zZXEsIGRhdGFfbGlzdFtpXS0+cmVjLmRhdGEuVFNOX3NlcSkpIHsK
KwkJaWYgKCh0cDEpICYmIFNDVFBfVFNOX0dUKHRwMS0+cmVjLmRhdGEudHNuLCBkYXRhX2xpc3Rb
aV0tPnJlYy5kYXRhLnRzbikpIHsKIAkJCXN0cnVjdCBzY3RwX3RtaXRfY2h1bmsgKnRwcDsKIAog
CQkJLyogbmVlZCB0byBtb3ZlIGJhY2sgKi8KQEAgLTc0NjMsNyArNzQ4Nyw3IEBAIHNjdHBfY2xl
YW5fdXBfZGF0YWxpc3Qoc3RydWN0IHNjdHBfdGNiICpzdGNiLAogCQkJCWdvdG8gYWxsX2RvbmU7
CiAJCQl9CiAJCQl0cDEgPSB0cHA7Ci0JCQlpZiAoU0NUUF9UU05fR1QodHAxLT5yZWMuZGF0YS5U
U05fc2VxLCBkYXRhX2xpc3RbaV0tPnJlYy5kYXRhLlRTTl9zZXEpKSB7CisJCQlpZiAoU0NUUF9U
U05fR1QodHAxLT5yZWMuZGF0YS50c24sIGRhdGFfbGlzdFtpXS0+cmVjLmRhdGEudHNuKSkgewog
CQkJCWdvdG8gYmFja191cF9tb3JlOwogCQkJfQogCQkJVEFJTFFfSU5TRVJUX0FGVEVSKCZhc29j
LT5zZW50X3F1ZXVlLCB0cDEsIGRhdGFfbGlzdFtpXSwgc2N0cF9uZXh0KTsKQEAgLTc0OTIsNyAr
NzUxNiw3IEBAIHNjdHBfY2xlYW5fdXBfZGF0YWxpc3Qoc3RydWN0IHNjdHBfdGNiICpzdGNiLAog
CQkJCSAgICAgICBkYXRhX2xpc3RbaV0tPndob1RvLT5mbGlnaHRfc2l6ZSwKIAkJCQkgICAgICAg
ZGF0YV9saXN0W2ldLT5ib29rX3NpemUsCiAJCQkJICAgICAgICh1aW50MzJfdCkodWludHB0cl90
KWRhdGFfbGlzdFtpXS0+d2hvVG8sCi0JCQkJICAgICAgIGRhdGFfbGlzdFtpXS0+cmVjLmRhdGEu
VFNOX3NlcSk7CisJCQkJICAgICAgIGRhdGFfbGlzdFtpXS0+cmVjLmRhdGEudHNuKTsKIAkJfQog
CQlzY3RwX2ZsaWdodF9zaXplX2luY3JlYXNlKGRhdGFfbGlzdFtpXSk7CiAJCXNjdHBfdG90YWxf
ZmxpZ2h0X2luY3JlYXNlKHN0Y2IsIGRhdGFfbGlzdFtpXSk7CkBAIC03NTU0LDExICs3NTc4LDkg
QEAgc2N0cF9jbGVhbl91cF9jdGwoc3RydWN0IHNjdHBfdGNiICpzdGNiLCBzdHJ1Y3Qgc2N0cF9h
c3NvY2lhdGlvbiAqYXNvYywgaW50IHNvX2wKIAl9CiB9CiAKLQotc3RhdGljIGludAotc2N0cF9j
YW5fd2Vfc3BsaXRfdGhpcyhzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsCi0gICAgICAgICAgICAgICAg
ICAgICAgIHVpbnQzMl90IGxlbmd0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgdWludDMyX3Qg
Z29hbF9tdHUsIHVpbnQzMl90IGZyYWdfcG9pbnQsIGludCBlZW9yX29uKQorc3RhdGljIHVpbnQz
Ml90CitzY3RwX2Nhbl93ZV9zcGxpdF90aGlzKHN0cnVjdCBzY3RwX3RjYiAqc3RjYiwgdWludDMy
X3QgbGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgICB1aW50MzJfdCBzcGFjZV9sZWZ0LCB1
aW50MzJfdCBmcmFnX3BvaW50LCBpbnQgZWVvcl9vbikKIHsKIAkvKiBNYWtlIGEgZGVjaXNpb24g
b24gaWYgSSBzaG91bGQgc3BsaXQgYQogCSAqIG1zZyBpbnRvIG11bHRpcGxlIHBhcnRzLiBUaGlz
IGlzIG9ubHkgYXNrZWQgb2YKQEAgLTc1NjksNyArNzU5MSw3IEBAIHNjdHBfY2FuX3dlX3NwbGl0
X3RoaXMoc3RydWN0IHNjdHBfdGNiICpzdGNiLAogCQkgKiBpdCBpZiBpdHMgdGhlIGVudGlyZSB0
aGluZywgc2luY2UgaXQgbWlnaHQKIAkJICogYmUgYWxsIHRoZSBndXkgaXMgcHV0dGluZyBpbiB0
aGUgaG9wcGVyLgogCQkgKi8KLQkJaWYgKGdvYWxfbXR1ID49IGxlbmd0aCkgeworCQlpZiAoc3Bh
Y2VfbGVmdCA+PSBsZW5ndGgpIHsKIAkJCS8qLQogCQkJICogSWYgd2UgaGF2ZSBkYXRhIG91dHN0
YW5kaW5nLAogCQkJICogd2UgZ2V0IGFub3RoZXIgY2hhbmNlIHdoZW4gdGhlIHNhY2sKQEAgLTc1
ODUsNyArNzYwNyw3IEBAIHNjdHBfY2FuX3dlX3NwbGl0X3RoaXMoc3RydWN0IHNjdHBfdGNiICpz
dGNiLAogCiAJCX0gZWxzZSB7CiAJCQkvKiBZb3UgY2FuIGZpbGwgdGhlIHJlc3QgKi8KLQkJCXJl
dHVybiAoZ29hbF9tdHUpOworCQkJcmV0dXJuIChzcGFjZV9sZWZ0KTsKIAkJfQogCX0KIAkvKi0K
QEAgLTc1OTYsMjkgKzc2MTgsMjcgQEAgc2N0cF9jYW5fd2Vfc3BsaXRfdGhpcyhzdHJ1Y3Qgc2N0
cF90Y2IgKnN0Y2IsCiAJaWYgKFNDVFBfU0JfTElNSVRfU05EKHN0Y2ItPnNjdHBfc29ja2V0KSA8
IGZyYWdfcG9pbnQpIHsKIAkJcmV0dXJuIChsZW5ndGgpOwogCX0KLQotCWlmICgobGVuZ3RoIDw9
IGdvYWxfbXR1KSB8fAotCSAgICAoKGxlbmd0aCAtIGdvYWxfbXR1KSA8IFNDVFBfQkFTRV9TWVND
VEwoc2N0cF9taW5fcmVzaWR1YWwpKSkgeworCWlmICgobGVuZ3RoIDw9IHNwYWNlX2xlZnQpIHx8
CisJICAgICgobGVuZ3RoIC0gc3BhY2VfbGVmdCkgPCBTQ1RQX0JBU0VfU1lTQ1RMKHNjdHBfbWlu
X3Jlc2lkdWFsKSkpIHsKIAkJLyogU3ViLW9wdGltaWFsIHJlc2lkdWFsIGRvbid0IHNwbGl0IGlu
IG5vbi1lZW9yIG1vZGUuICovCiAJCXJldHVybiAoMCk7CiAJfQogCS8qIElmIHdlIHJlYWNoIGhl
cmUgbGVuZ3RoIGlzIGxhcmdlcgotCSAqIHRoYW4gdGhlIGdvYWxfbXR1LiBEbyB3ZSB3aXNoIHRv
IHNwbGl0CisJICogdGhhbiB0aGUgc3BhY2VfbGVmdC4gRG8gd2Ugd2lzaCB0byBzcGxpdAogCSAq
IGl0IGZvciB0aGUgc2FrZSBvZiBwYWNrZXQgcHV0dGluZyB0b2dldGhlcj8KIAkgKi8KLQlpZiAo
Z29hbF9tdHUgPj0gbWluKFNDVFBfQkFTRV9TWVNDVEwoc2N0cF9taW5fc3BsaXRfcG9pbnQpLCBm
cmFnX3BvaW50KSkgeworCWlmIChzcGFjZV9sZWZ0ID49IG1pbihTQ1RQX0JBU0VfU1lTQ1RMKHNj
dHBfbWluX3NwbGl0X3BvaW50KSwgZnJhZ19wb2ludCkpIHsKIAkJLyogSXRzIG9rIHRvIHNwbGl0
IGl0ICovCi0JCXJldHVybiAobWluKGdvYWxfbXR1LCBmcmFnX3BvaW50KSk7CisJCXJldHVybiAo
bWluKHNwYWNlX2xlZnQsIGZyYWdfcG9pbnQpKTsKIAl9CiAJLyogTm9wZSwgY2FuJ3Qgc3BsaXQg
Ki8KIAlyZXR1cm4gKDApOwotCiB9CiAKIHN0YXRpYyB1aW50MzJfdAogc2N0cF9tb3ZlX3RvX291
dHF1ZXVlKHN0cnVjdCBzY3RwX3RjYiAqc3RjYiwKICAgICAgICAgICAgICAgICAgICAgICBzdHJ1
Y3Qgc2N0cF9zdHJlYW1fb3V0ICpzdHJxLAotICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90
IGdvYWxfbXR1LAorICAgICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IHNwYWNlX2xlZnQsCiAg
ICAgICAgICAgICAgICAgICAgICAgdWludDMyX3QgZnJhZ19wb2ludCwKICAgICAgICAgICAgICAg
ICAgICAgICBpbnQgKmdpdmV1cCwKICAgICAgICAgICAgICAgICAgICAgICBpbnQgZWVvcl9tb2Rl
LApAQCAtNzY1OSw3ICs3Njc5LDcgQEAgb25lX21vcmVfdGltZToKIAkJICAgIChzdGNiLT5hc29j
LmlkYXRhX3N1cHBvcnRlZCA9PSAwKSAmJgogCQkgICAgKHN0cnEtPmxhc3RfbXNnX2luY29tcGxl
dGUpKSB7CiAJCQlTQ1RQX1BSSU5URigiSHVoPyBTdHJlYW06JWQgbG1faW5fYz0lZCBidXQgcXVl
dWUgaXMgTlVMTFxuIiwKLQkJCSAgICAgICAgICAgIHN0cnEtPnN0cmVhbV9ubywKKwkJCSAgICAg
ICAgICAgIHN0cnEtPnNpZCwKIAkJCSAgICAgICAgICAgIHN0cnEtPmxhc3RfbXNnX2luY29tcGxl
dGUpOwogCQkJc3RycS0+bGFzdF9tc2dfaW5jb21wbGV0ZSA9IDA7CiAJCX0KQEAgLTc3NzcsNyAr
Nzc5Nyw3IEBAIHJlX2xvb2s6CiAJCQlzcC0+c29tZV90YWtlbiA9IDE7CiAJCX0KIAl9IGVsc2Ug
ewotCQl0b19tb3ZlID0gc2N0cF9jYW5fd2Vfc3BsaXRfdGhpcyhzdGNiLCBsZW5ndGgsIGdvYWxf
bXR1LCBmcmFnX3BvaW50LCBlZW9yX21vZGUpOworCQl0b19tb3ZlID0gc2N0cF9jYW5fd2Vfc3Bs
aXRfdGhpcyhzdGNiLCBsZW5ndGgsIHNwYWNlX2xlZnQsIGZyYWdfcG9pbnQsIGVlb3JfbW9kZSk7
CiAJCWlmICh0b19tb3ZlKSB7CiAJCQkvKi0KIAkJCSAqIFdlIHVzZSBhIHNuYXBzaG90IG9mIGxl
bmd0aCBpbiBjYXNlIGl0CkBAIC04MDAwLDI4ICs4MDIwLDI4IEBAIHJlX2xvb2s6CiAJaWYgKHN0
Y2ItPmFzb2MuaWRhdGFfc3VwcG9ydGVkID09IDApIHsKIAkJaWYgKHJjdl9mbGFncyAmIFNDVFBf
REFUQV9VTk9SREVSRUQpIHsKIAkJCS8qIEp1c3QgdXNlIDAuIFRoZSByZWNlaXZlciBpZ25vcmVz
IHRoZSB2YWx1ZXMuICovCi0JCQljaGstPnJlYy5kYXRhLnN0cmVhbV9zZXEgPSAwOworCQkJY2hr
LT5yZWMuZGF0YS5taWQgPSAwOwogCQl9IGVsc2UgewotCQkJY2hrLT5yZWMuZGF0YS5zdHJlYW1f
c2VxID0gc3RycS0+bmV4dF9taWRfb3JkZXJlZDsKKwkJCWNoay0+cmVjLmRhdGEubWlkID0gc3Ry
cS0+bmV4dF9taWRfb3JkZXJlZDsKIAkJCWlmIChyY3ZfZmxhZ3MgJiBTQ1RQX0RBVEFfTEFTVF9G
UkFHKSB7CiAJCQkJc3RycS0+bmV4dF9taWRfb3JkZXJlZCsrOwogCQkJfQogCQl9CiAJfSBlbHNl
IHsKIAkJaWYgKHJjdl9mbGFncyAmIFNDVFBfREFUQV9VTk9SREVSRUQpIHsKLQkJCWNoay0+cmVj
LmRhdGEuc3RyZWFtX3NlcSA9IHN0cnEtPm5leHRfbWlkX3Vub3JkZXJlZDsKKwkJCWNoay0+cmVj
LmRhdGEubWlkID0gc3RycS0+bmV4dF9taWRfdW5vcmRlcmVkOwogCQkJaWYgKHJjdl9mbGFncyAm
IFNDVFBfREFUQV9MQVNUX0ZSQUcpIHsKIAkJCQlzdHJxLT5uZXh0X21pZF91bm9yZGVyZWQrKzsK
IAkJCX0KIAkJfSBlbHNlIHsKLQkJCWNoay0+cmVjLmRhdGEuc3RyZWFtX3NlcSA9IHN0cnEtPm5l
eHRfbWlkX29yZGVyZWQ7CisJCQljaGstPnJlYy5kYXRhLm1pZCA9IHN0cnEtPm5leHRfbWlkX29y
ZGVyZWQ7CiAJCQlpZiAocmN2X2ZsYWdzICYgU0NUUF9EQVRBX0xBU1RfRlJBRykgewogCQkJCXN0
cnEtPm5leHRfbWlkX29yZGVyZWQrKzsKIAkJCX0KIAkJfQogCX0KLQljaGstPnJlYy5kYXRhLnN0
cmVhbV9udW1iZXIgPSBzcC0+c3RyZWFtOwotCWNoay0+cmVjLmRhdGEucGF5bG9hZHR5cGUgPSBz
cC0+cHBpZDsKKwljaGstPnJlYy5kYXRhLnNpZCA9IHNwLT5zaWQ7CisJY2hrLT5yZWMuZGF0YS5w
cGlkID0gc3AtPnBwaWQ7CiAJY2hrLT5yZWMuZGF0YS5jb250ZXh0ID0gc3AtPmNvbnRleHQ7CiAJ
Y2hrLT5yZWMuZGF0YS5kb2luZ19mYXN0X3JldHJhbnNtaXQgPSAwOwogCkBAIC04MDQwLDE1ICs4
MDYwLDE1IEBAIHJlX2xvb2s6CiAJCWNoay0+aG9sZHNfa2V5X3JlZiA9IDE7CiAJfQogI2lmIGRl
ZmluZWQoX19GcmVlQlNEX18pIHx8IGRlZmluZWQoX19QYW5kYV9fKQotCWNoay0+cmVjLmRhdGEu
VFNOX3NlcSA9IGF0b21pY19mZXRjaGFkZF9pbnQoJmFzb2MtPnNlbmRpbmdfc2VxLCAxKTsKKwlj
aGstPnJlYy5kYXRhLnRzbiA9IGF0b21pY19mZXRjaGFkZF9pbnQoJmFzb2MtPnNlbmRpbmdfc2Vx
LCAxKTsKICNlbHNlCi0JY2hrLT5yZWMuZGF0YS5UU05fc2VxID0gYXNvYy0+c2VuZGluZ19zZXEr
KzsKKwljaGstPnJlYy5kYXRhLnRzbiA9IGFzb2MtPnNlbmRpbmdfc2VxKys7CiAjZW5kaWYKIAlp
ZiAoU0NUUF9CQVNFX1NZU0NUTChzY3RwX2xvZ2dpbmdfbGV2ZWwpICYgU0NUUF9MT0dfQVRfU0VO
RF8yX09VVFEpIHsKIAkJc2N0cF9taXNjX2ludHMoU0NUUF9TVFJNT1VUX0xPR19TRU5ELAogCQkg
ICAgICAgICAgICAgICAodWludDMyX3QpKHVpbnRwdHJfdClzdGNiLCBzcC0+bGVuZ3RoLAotCQkg
ICAgICAgICAgICAgICAodWludDMyX3QpKChjaGstPnJlYy5kYXRhLnN0cmVhbV9udW1iZXIgPDwg
MTYpIHwgY2hrLT5yZWMuZGF0YS5zdHJlYW1fc2VxKSwKLQkJICAgICAgICAgICAgICAgY2hrLT5y
ZWMuZGF0YS5UU05fc2VxKTsKKwkJICAgICAgICAgICAgICAgKHVpbnQzMl90KSgoY2hrLT5yZWMu
ZGF0YS5zaWQgPDwgMTYpIHwgKDB4MDAwMGZmZmYgJiBjaGstPnJlYy5kYXRhLm1pZCkpLAorCQkg
ICAgICAgICAgICAgICBjaGstPnJlYy5kYXRhLnRzbik7CiAJfQogCWlmIChzdGNiLT5hc29jLmlk
YXRhX3N1cHBvcnRlZCA9PSAwKSB7CiAJCWRjaGtoID0gbXRvZChjaGstPmRhdGEsIHN0cnVjdCBz
Y3RwX2RhdGFfY2h1bmsgKik7CkBAIC04MDY2LDkgKzgwODYsOSBAQCByZV9sb29rOgogCQlhc29j
LT50c25fb3V0X2F0ID0gMDsKIAkJYXNvYy0+dHNuX291dF93cmFwcGVkID0gMTsKIAl9Ci0JYXNv
Yy0+b3V0X3RzbmxvZ1thc29jLT50c25fb3V0X2F0XS50c24gPSBjaGstPnJlYy5kYXRhLlRTTl9z
ZXE7Ci0JYXNvYy0+b3V0X3RzbmxvZ1thc29jLT50c25fb3V0X2F0XS5zdHJtID0gY2hrLT5yZWMu
ZGF0YS5zdHJlYW1fbnVtYmVyOwotCWFzb2MtPm91dF90c25sb2dbYXNvYy0+dHNuX291dF9hdF0u
c2VxID0gY2hrLT5yZWMuZGF0YS5zdHJlYW1fc2VxOworCWFzb2MtPm91dF90c25sb2dbYXNvYy0+
dHNuX291dF9hdF0udHNuID0gY2hrLT5yZWMuZGF0YS50c247CisJYXNvYy0+b3V0X3RzbmxvZ1th
c29jLT50c25fb3V0X2F0XS5zdHJtID0gY2hrLT5yZWMuZGF0YS5zaWQ7CisJYXNvYy0+b3V0X3Rz
bmxvZ1thc29jLT50c25fb3V0X2F0XS5zZXEgPSBjaGstPnJlYy5kYXRhLm1pZDsKIAlhc29jLT5v
dXRfdHNubG9nW2Fzb2MtPnRzbl9vdXRfYXRdLnN6ID0gY2hrLT5zZW5kX3NpemU7CiAJYXNvYy0+
b3V0X3RzbmxvZ1thc29jLT50c25fb3V0X2F0XS5mbGdzID0gY2hrLT5yZWMuZGF0YS5yY3ZfZmxh
Z3M7CiAJYXNvYy0+b3V0X3RzbmxvZ1thc29jLT50c25fb3V0X2F0XS5zdGNiID0gKHZvaWQgKilz
dGNiOwpAQCAtODA3OSwyMCArODA5OSwyMCBAQCByZV9sb29rOgogCWlmIChzdGNiLT5hc29jLmlk
YXRhX3N1cHBvcnRlZCA9PSAwKSB7CiAJCWRjaGtoLT5jaC5jaHVua190eXBlID0gU0NUUF9EQVRB
OwogCQlkY2hraC0+Y2guY2h1bmtfZmxhZ3MgPSBjaGstPnJlYy5kYXRhLnJjdl9mbGFnczsKLQkJ
ZGNoa2gtPmRwLnRzbiA9IGh0b25sKGNoay0+cmVjLmRhdGEuVFNOX3NlcSk7Ci0JCWRjaGtoLT5k
cC5zdHJlYW1faWQgPSBodG9ucygoc3RycS0+c3RyZWFtX25vICYgMHgwMDAwZmZmZikpOwotCQlk
Y2hraC0+ZHAuc3RyZWFtX3NlcXVlbmNlID0gaHRvbnMoKHVpbnQxNl90KWNoay0+cmVjLmRhdGEu
c3RyZWFtX3NlcSk7Ci0JCWRjaGtoLT5kcC5wcm90b2NvbF9pZCA9IGNoay0+cmVjLmRhdGEucGF5
bG9hZHR5cGU7CisJCWRjaGtoLT5kcC50c24gPSBodG9ubChjaGstPnJlYy5kYXRhLnRzbik7CisJ
CWRjaGtoLT5kcC5zaWQgPSBodG9ucyhzdHJxLT5zaWQpOworCQlkY2hraC0+ZHAuc3NuID0gaHRv
bnMoKHVpbnQxNl90KWNoay0+cmVjLmRhdGEubWlkKTsKKwkJZGNoa2gtPmRwLnBwaWQgPSBjaGst
PnJlYy5kYXRhLnBwaWQ7CiAJCWRjaGtoLT5jaC5jaHVua19sZW5ndGggPSBodG9ucyhjaGstPnNl
bmRfc2l6ZSk7CiAJfSBlbHNlIHsKIAkJbmRjaGtoLT5jaC5jaHVua190eXBlID0gU0NUUF9JREFU
QTsKIAkJbmRjaGtoLT5jaC5jaHVua19mbGFncyA9IGNoay0+cmVjLmRhdGEucmN2X2ZsYWdzOwot
CQluZGNoa2gtPmRwLnRzbiA9IGh0b25sKGNoay0+cmVjLmRhdGEuVFNOX3NlcSk7Ci0JCW5kY2hr
aC0+ZHAuc3RyZWFtX2lkID0gaHRvbnMoc3RycS0+c3RyZWFtX25vKTsKKwkJbmRjaGtoLT5kcC50
c24gPSBodG9ubChjaGstPnJlYy5kYXRhLnRzbik7CisJCW5kY2hraC0+ZHAuc2lkID0gaHRvbnMo
c3RycS0+c2lkKTsKIAkJbmRjaGtoLT5kcC5yZXNlcnZlZCA9IGh0b25zKDApOwotCQluZGNoa2gt
PmRwLm1zZ19pZCA9IGh0b25sKGNoay0+cmVjLmRhdGEuc3RyZWFtX3NlcSk7CisJCW5kY2hraC0+
ZHAubWlkID0gaHRvbmwoY2hrLT5yZWMuZGF0YS5taWQpOwogCQlpZiAoc3AtPmZzbiA9PSAwKQot
CQkJbmRjaGtoLT5kcC5wcGlkX2Zzbi5wcm90b2NvbF9pZCA9IGNoay0+cmVjLmRhdGEucGF5bG9h
ZHR5cGU7CisJCQluZGNoa2gtPmRwLnBwaWRfZnNuLnBwaWQgPSBjaGstPnJlYy5kYXRhLnBwaWQ7
CiAJCWVsc2UKIAkJCW5kY2hraC0+ZHAucHBpZF9mc24uZnNuID0gaHRvbmwoc3AtPmZzbik7CiAJ
CXNwLT5mc24rKzsKQEAgLTgxNzAsNjEgKzgxOTAsNzEgQEAgc2N0cF9maWxsX291dHF1ZXVlKHN0
cnVjdCBzY3RwX3RjYiAqc3RjYiwKIHsKIAlzdHJ1Y3Qgc2N0cF9hc3NvY2lhdGlvbiAqYXNvYzsK
IAlzdHJ1Y3Qgc2N0cF9zdHJlYW1fb3V0ICpzdHJxOwotCWludCBnb2FsX210dSwgbW92ZWRfaG93
X211Y2gsIHRvdGFsX21vdmVkID0gMCwgYmFpbCA9IDA7Ci0JaW50IGdpdmV1cDsKKwl1aW50MzJf
dCBzcGFjZV9sZWZ0LCBtb3ZlZCwgdG90YWxfbW92ZWQ7CisJaW50IGJhaWwsIGdpdmV1cDsKIAog
CVNDVFBfVENCX0xPQ0tfQVNTRVJUKHN0Y2IpOwogCWFzb2MgPSAmc3RjYi0+YXNvYzsKKwl0b3Rh
bF9tb3ZlZCA9IDA7CiAJc3dpdGNoIChuZXQtPnJvLl9sX2FkZHIuc2Euc2FfZmFtaWx5KSB7CiAj
aWZkZWYgSU5FVAogCQljYXNlIEFGX0lORVQ6Ci0JCQlnb2FsX210dSA9IG5ldC0+bXR1IC0gU0NU
UF9NSU5fVjRfT1ZFUkhFQUQ7CisJCQlzcGFjZV9sZWZ0ID0gbmV0LT5tdHUgLSBTQ1RQX01JTl9W
NF9PVkVSSEVBRDsKIAkJCWJyZWFrOwogI2VuZGlmCiAjaWZkZWYgSU5FVDYKIAkJY2FzZSBBRl9J
TkVUNjoKLQkJCWdvYWxfbXR1ID0gbmV0LT5tdHUgLSBTQ1RQX01JTl9PVkVSSEVBRDsKKwkJCXNw
YWNlX2xlZnQgPSBuZXQtPm10dSAtIFNDVFBfTUlOX09WRVJIRUFEOwogCQkJYnJlYWs7CiAjZW5k
aWYKICNpZiBkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiAJCWNhc2UgQUZfQ09OTjoKLQkJCWdvYWxf
bXR1ID0gbmV0LT5tdHUgLSBzaXplb2Yoc3RydWN0IHNjdHBoZHIpOworCQkJc3BhY2VfbGVmdCA9
IG5ldC0+bXR1IC0gc2l6ZW9mKHN0cnVjdCBzY3RwaGRyKTsKIAkJCWJyZWFrOwogI2VuZGlmCiAJ
CWRlZmF1bHQ6CiAJCQkvKiBUU05IICovCi0JCQlnb2FsX210dSA9IG5ldC0+bXR1OworCQkJc3Bh
Y2VfbGVmdCA9IG5ldC0+bXR1OwogCQkJYnJlYWs7CiAJfQogCS8qIE5lZWQgYW4gYWxsb3dhbmNl
IGZvciB0aGUgZGF0YSBjaHVuayBoZWFkZXIgdG9vICovCiAJaWYgKHN0Y2ItPmFzb2MuaWRhdGFf
c3VwcG9ydGVkID09IDApIHsKLQkJZ29hbF9tdHUgLT0gc2l6ZW9mKHN0cnVjdCBzY3RwX2RhdGFf
Y2h1bmspOworCQlzcGFjZV9sZWZ0IC09IHNpemVvZihzdHJ1Y3Qgc2N0cF9kYXRhX2NodW5rKTsK
IAl9IGVsc2UgewotCQlnb2FsX210dSAtPSBzaXplb2Yoc3RydWN0IHNjdHBfaWRhdGFfY2h1bmsp
OworCQlzcGFjZV9sZWZ0IC09IHNpemVvZihzdHJ1Y3Qgc2N0cF9pZGF0YV9jaHVuayk7CiAJfQog
CiAJLyogbXVzdCBtYWtlIGV2ZW4gd29yZCBib3VuZGFyeSAqLwotCWdvYWxfbXR1ICY9IDB4ZmZm
ZmZmZmM7CisJc3BhY2VfbGVmdCAmPSAweGZmZmZmZmZjOwogCXN0cnEgPSBzdGNiLT5hc29jLnNz
X2Z1bmN0aW9ucy5zY3RwX3NzX3NlbGVjdF9zdHJlYW0oc3RjYiwgbmV0LCBhc29jKTsKLQl3aGls
ZSAoKGdvYWxfbXR1ID4gMCkgJiYgc3RycSkgewotCQlnaXZldXAgPSAwOwotCQliYWlsID0gMDsK
LQkJbW92ZWRfaG93X211Y2ggPSBzY3RwX21vdmVfdG9fb3V0cXVldWUoc3RjYiwgc3RycSwgZ29h
bF9tdHUsIGZyYWdfcG9pbnQsIAotCQkJCQkJICAgICAgICZnaXZldXAsIGVlb3JfbW9kZSwgJmJh
aWwsIHNvX2xvY2tlZCk7Ci0JCXN0Y2ItPmFzb2Muc3NfZnVuY3Rpb25zLnNjdHBfc3Nfc2NoZWR1
bGVkKHN0Y2IsIG5ldCwgYXNvYywgc3RycSwgbW92ZWRfaG93X211Y2gpOwotCi0JCWlmICgoZ2l2
ZXVwKSB8fCBiYWlsKSB7CisJZ2l2ZXVwID0gMDsKKwliYWlsID0gMDsKKwl3aGlsZSAoKHNwYWNl
X2xlZnQgPiAwKSAmJiAoc3RycSAhPSBOVUxMKSkgeworCQltb3ZlZCA9IHNjdHBfbW92ZV90b19v
dXRxdWV1ZShzdGNiLCBzdHJxLCBzcGFjZV9sZWZ0LCBmcmFnX3BvaW50LAorCQkgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAmZ2l2ZXVwLCBlZW9yX21vZGUsICZiYWlsLCBzb19sb2NrZWQp
OworCQlzdGNiLT5hc29jLnNzX2Z1bmN0aW9ucy5zY3RwX3NzX3NjaGVkdWxlZChzdGNiLCBuZXQs
IGFzb2MsIHN0cnEsIG1vdmVkKTsKKwkJaWYgKChnaXZldXAgIT0gMCkgfHwgKGJhaWwgIT0gMCkp
IHsKIAkJCWJyZWFrOwogCQl9CiAJCXN0cnEgPSBzdGNiLT5hc29jLnNzX2Z1bmN0aW9ucy5zY3Rw
X3NzX3NlbGVjdF9zdHJlYW0oc3RjYiwgbmV0LCBhc29jKTsKLQkJaWYgKHN0cnEgPT0gTlVMTCkg
ewotCQkJYnJlYWs7CisJCXRvdGFsX21vdmVkICs9IG1vdmVkOworCQlzcGFjZV9sZWZ0IC09IG1v
dmVkOworCQlpZiAoc3RjYi0+YXNvYy5pZGF0YV9zdXBwb3J0ZWQgPT0gMCkgeworCQkJaWYgKHNw
YWNlX2xlZnQgPj0gc2l6ZW9mKHN0cnVjdCBzY3RwX2RhdGFfY2h1bmspKSB7CisJCQkJc3BhY2Vf
bGVmdCAtPSBzaXplb2Yoc3RydWN0IHNjdHBfZGF0YV9jaHVuayk7CisJCQl9IGVsc2UgeworCQkJ
CXNwYWNlX2xlZnQgPSAwOworCQkJfQorCQl9IGVsc2UgeworCQkJaWYgKHNwYWNlX2xlZnQgPj0g
c2l6ZW9mKHN0cnVjdCBzY3RwX2lkYXRhX2NodW5rKSkgeworCQkJCXNwYWNlX2xlZnQgLT0gc2l6
ZW9mKHN0cnVjdCBzY3RwX2lkYXRhX2NodW5rKTsKKwkJCX0gZWxzZSB7CisJCQkJc3BhY2VfbGVm
dCA9IDA7CisJCQl9CiAJCX0KLQkJdG90YWxfbW92ZWQgKz0gbW92ZWRfaG93X211Y2g7Ci0JCWdv
YWxfbXR1IC09IChtb3ZlZF9ob3dfbXVjaCArIHNpemVvZihzdHJ1Y3Qgc2N0cF9kYXRhX2NodW5r
KSk7Ci0JCWdvYWxfbXR1ICY9IDB4ZmZmZmZmZmM7CisJCXNwYWNlX2xlZnQgJj0gMHhmZmZmZmZm
YzsKIAl9Ci0JaWYgKGJhaWwpCisJaWYgKGJhaWwgIT0gMCkKIAkJKnF1aXRfbm93ID0gMTsKIAog
CXN0Y2ItPmFzb2Muc3NfZnVuY3Rpb25zLnNjdHBfc3NfcGFja2V0X2RvbmUoc3RjYiwgbmV0LCBh
c29jKTsKQEAgLTkzMjMsOCArOTM1Myw4IEBAIGFnYWluX29uZV9tb3JlX3RpbWU6CiAJCQkJCVND
VFBfU1RBVF9JTkNSKHNjdHBzX2xvd2xldmVsZXJydXNyKTsKIAkJCQl9CiAJCQkJaWYgKGVycm9y
ID09IEVOT0JVRlMpIHsKLQkJCQkJU0NUUF9TVEFUX0lOQ1Ioc2N0cHNfbG93bGV2ZWxlcnIpOwog
CQkJCQlhc29jLT5pZnBfaGFkX2Vub2J1ZiA9IDE7CisJCQkJCVNDVFBfU1RBVF9JTkNSKHNjdHBz
X2xvd2xldmVsZXJyKTsKIAkJCQl9CiAJCQkJaWYgKGVycm9yID09IEVIT1NUVU5SRUFDSCkgewog
CQkJCQkvKgpAQCAtOTM1Myw3ICs5MzgzLDcgQEAgYWdhaW5fb25lX21vcmVfdGltZToKIAkJCX0K
IAkJCWlmIChidW5kbGVfYXQpIHsKIAkJCQkvKiBzZXR1cCBmb3IgYSBSVE8gbWVhc3VyZW1lbnQg
Ki8KLQkJCQl0c25zX3NlbnQgPSBkYXRhX2xpc3RbMF0tPnJlYy5kYXRhLlRTTl9zZXE7CisJCQkJ
dHNuc19zZW50ID0gZGF0YV9saXN0WzBdLT5yZWMuZGF0YS50c247CiAJCQkJLyogZmlsbCB0aW1l
IGlmIG5vdCBhbHJlYWR5IGZpbGxlZCAqLwogCQkJCWlmICgqbm93X2ZpbGxlZCA9PSAwKSB7CiAJ
CQkJCSh2b2lkKVNDVFBfR0VUVElNRV9USU1FVkFMKCZhc29jLT50aW1lX2xhc3Rfc2VudCk7CkBA
IC05NzAxLDQwICs5NzMxLDYxIEBAIHNjdHBfc2VuZF9zaHV0ZG93bihzdHJ1Y3Qgc2N0cF90Y2Ig
KnN0Y2IsIHN0cnVjdCBzY3RwX25ldHMgKm5ldCkKIAlzdHJ1Y3Qgc2N0cF9zaHV0ZG93bl9jaHVu
ayAqc2h1dGRvd25fY3A7CiAJc3RydWN0IHNjdHBfdG1pdF9jaHVuayAqY2hrOwogCi0JbV9zaHV0
ZG93biA9IHNjdHBfZ2V0X21idWZfZm9yX21zZyhzaXplb2Yoc3RydWN0IHNjdHBfc2h1dGRvd25f
Y2h1bmspLCAwLCBNX05PV0FJVCwgMSwgTVRfSEVBREVSKTsKLQlpZiAobV9zaHV0ZG93biA9PSBO
VUxMKSB7Ci0JCS8qIG5vIG1idWYncyAqLwotCQlyZXR1cm47CisJVEFJTFFfRk9SRUFDSChjaGss
ICZzdGNiLT5hc29jLmNvbnRyb2xfc2VuZF9xdWV1ZSwgc2N0cF9uZXh0KSB7CisJCWlmIChjaGst
PnJlYy5jaHVua19pZC5pZCA9PSBTQ1RQX1NIVVRET1dOKSB7CisJCQkvKiBXZSBhbHJlYWR5IGhh
dmUgYSBTSFVURE9XTiBxdWV1ZWQuIFJldXNlIGl0LiAqLworCQkJaWYgKGNoay0+d2hvVG8pIHsK
KwkJCQlzY3RwX2ZyZWVfcmVtb3RlX2FkZHIoY2hrLT53aG9Ubyk7CisJCQkJY2hrLT53aG9UbyA9
IE5VTEw7CisJCQl9CisJCQlicmVhazsKKwkJfQogCX0KLQlTQ1RQX0JVRl9SRVNWX1VGKG1fc2h1
dGRvd24sIFNDVFBfTUlOX09WRVJIRUFEKTsKLQlzY3RwX2FsbG9jX2FfY2h1bmsoc3RjYiwgY2hr
KTsKIAlpZiAoY2hrID09IE5VTEwpIHsKLQkJLyogbm8gbWVtb3J5ICovCi0JCXNjdHBfbV9mcmVl
bShtX3NodXRkb3duKTsKLQkJcmV0dXJuOwotCX0KLQljaGstPmNvcHlfYnlfcmVmID0gMDsKLQlj
aGstPnJlYy5jaHVua19pZC5pZCA9IFNDVFBfU0hVVERPV047Ci0JY2hrLT5yZWMuY2h1bmtfaWQu
Y2FuX3Rha2VfZGF0YSA9IDE7Ci0JY2hrLT5mbGFncyA9IDA7Ci0JY2hrLT5zZW5kX3NpemUgPSBz
aXplb2Yoc3RydWN0IHNjdHBfc2h1dGRvd25fY2h1bmspOwotCWNoay0+c2VudCA9IFNDVFBfREFU
QUdSQU1fVU5TRU5UOwotCWNoay0+c25kX2NvdW50ID0gMDsKLQljaGstPmZsYWdzID0gMDsKLQlj
aGstPmFzb2MgPSAmc3RjYi0+YXNvYzsKLQljaGstPmRhdGEgPSBtX3NodXRkb3duOwotCWNoay0+
d2hvVG8gPSBuZXQ7Ci0JaWYgKGNoay0+d2hvVG8pIHsKLQkJYXRvbWljX2FkZF9pbnQoJmNoay0+
d2hvVG8tPnJlZl9jb3VudCwgMSk7CisJCW1fc2h1dGRvd24gPSBzY3RwX2dldF9tYnVmX2Zvcl9t
c2coc2l6ZW9mKHN0cnVjdCBzY3RwX3NodXRkb3duX2NodW5rKSwgMCwgTV9OT1dBSVQsIDEsIE1U
X0hFQURFUik7CisJCWlmIChtX3NodXRkb3duID09IE5VTEwpIHsKKwkJCS8qIG5vIG1idWYncyAq
LworCQkJcmV0dXJuOworCQl9CisJCVNDVFBfQlVGX1JFU1ZfVUYobV9zaHV0ZG93biwgU0NUUF9N
SU5fT1ZFUkhFQUQpOworCQlzY3RwX2FsbG9jX2FfY2h1bmsoc3RjYiwgY2hrKTsKKwkJaWYgKGNo
ayA9PSBOVUxMKSB7CisJCQkvKiBubyBtZW1vcnkgKi8KKwkJCXNjdHBfbV9mcmVlbShtX3NodXRk
b3duKTsKKwkJCXJldHVybjsKKwkJfQorCQljaGstPmNvcHlfYnlfcmVmID0gMDsKKwkJY2hrLT5y
ZWMuY2h1bmtfaWQuaWQgPSBTQ1RQX1NIVVRET1dOOworCQljaGstPnJlYy5jaHVua19pZC5jYW5f
dGFrZV9kYXRhID0gMTsKKwkJY2hrLT5mbGFncyA9IDA7CisJCWNoay0+c2VuZF9zaXplID0gc2l6
ZW9mKHN0cnVjdCBzY3RwX3NodXRkb3duX2NodW5rKTsKKwkJY2hrLT5zZW50ID0gU0NUUF9EQVRB
R1JBTV9VTlNFTlQ7CisJCWNoay0+c25kX2NvdW50ID0gMDsKKwkJY2hrLT5mbGFncyA9IDA7CisJ
CWNoay0+YXNvYyA9ICZzdGNiLT5hc29jOworCQljaGstPmRhdGEgPSBtX3NodXRkb3duOworCQlj
aGstPndob1RvID0gbmV0OworCQlpZiAoY2hrLT53aG9UbykgeworCQkJYXRvbWljX2FkZF9pbnQo
JmNoay0+d2hvVG8tPnJlZl9jb3VudCwgMSk7CisJCX0KKwkJc2h1dGRvd25fY3AgPSBtdG9kKG1f
c2h1dGRvd24sIHN0cnVjdCBzY3RwX3NodXRkb3duX2NodW5rICopOworCQlzaHV0ZG93bl9jcC0+
Y2guY2h1bmtfdHlwZSA9IFNDVFBfU0hVVERPV047CisJCXNodXRkb3duX2NwLT5jaC5jaHVua19m
bGFncyA9IDA7CisJCXNodXRkb3duX2NwLT5jaC5jaHVua19sZW5ndGggPSBodG9ucyhjaGstPnNl
bmRfc2l6ZSk7CisJCXNodXRkb3duX2NwLT5jdW11bGF0aXZlX3Rzbl9hY2sgPSBodG9ubChzdGNi
LT5hc29jLmN1bXVsYXRpdmVfdHNuKTsKKwkJU0NUUF9CVUZfTEVOKG1fc2h1dGRvd24pID0gY2hr
LT5zZW5kX3NpemU7CisJCVRBSUxRX0lOU0VSVF9UQUlMKCZjaGstPmFzb2MtPmNvbnRyb2xfc2Vu
ZF9xdWV1ZSwgY2hrLCBzY3RwX25leHQpOworCQljaGstPmFzb2MtPmN0cmxfcXVldWVfY250Kys7
CisJfSBlbHNlIHsKKwkJVEFJTFFfUkVNT1ZFKCZzdGNiLT5hc29jLmNvbnRyb2xfc2VuZF9xdWV1
ZSwgY2hrLCBzY3RwX25leHQpOworCQljaGstPndob1RvID0gbmV0OworCQlpZiAoY2hrLT53aG9U
bykgeworCQkJYXRvbWljX2FkZF9pbnQoJmNoay0+d2hvVG8tPnJlZl9jb3VudCwgMSk7CisJCX0K
KwkJc2h1dGRvd25fY3AgPSBtdG9kKGNoay0+ZGF0YSwgc3RydWN0IHNjdHBfc2h1dGRvd25fY2h1
bmsgKik7CisJCXNodXRkb3duX2NwLT5jdW11bGF0aXZlX3Rzbl9hY2sgPSBodG9ubChzdGNiLT5h
c29jLmN1bXVsYXRpdmVfdHNuKTsKKwkJVEFJTFFfSU5TRVJUX1RBSUwoJnN0Y2ItPmFzb2MuY29u
dHJvbF9zZW5kX3F1ZXVlLCBjaGssIHNjdHBfbmV4dCk7CiAJfQotCXNodXRkb3duX2NwID0gbXRv
ZChtX3NodXRkb3duLCBzdHJ1Y3Qgc2N0cF9zaHV0ZG93bl9jaHVuayAqKTsKLQlzaHV0ZG93bl9j
cC0+Y2guY2h1bmtfdHlwZSA9IFNDVFBfU0hVVERPV047Ci0Jc2h1dGRvd25fY3AtPmNoLmNodW5r
X2ZsYWdzID0gMDsKLQlzaHV0ZG93bl9jcC0+Y2guY2h1bmtfbGVuZ3RoID0gaHRvbnMoY2hrLT5z
ZW5kX3NpemUpOwotCXNodXRkb3duX2NwLT5jdW11bGF0aXZlX3Rzbl9hY2sgPSBodG9ubChzdGNi
LT5hc29jLmN1bXVsYXRpdmVfdHNuKTsKLQlTQ1RQX0JVRl9MRU4obV9zaHV0ZG93bikgPSBjaGst
PnNlbmRfc2l6ZTsKLQlUQUlMUV9JTlNFUlRfVEFJTCgmY2hrLT5hc29jLT5jb250cm9sX3NlbmRf
cXVldWUsIGNoaywgc2N0cF9uZXh0KTsKLQljaGstPmFzb2MtPmN0cmxfcXVldWVfY250Kys7CiAJ
cmV0dXJuOwogfQogCkBAIC0xMDAwMyw4ICsxMDA1NCwxNCBAQCBzY3RwX2NodW5rX3JldHJhbnNt
aXNzaW9uKHN0cnVjdCBzY3RwX2lucGNiICppbnAsCiAJCSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAwLCAwLAogI2VuZGlmCiAJCSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBzb19sb2NrZWQpKSkgewotCQkJU0NUUF9TVEFUX0lOQ1Ioc2N0cHNf
bG93bGV2ZWxlcnIpOworCQkJU0NUUERCRyhTQ1RQX0RFQlVHX09VVFBVVDMsICJHYWsgc2VuZCBl
cnJvciAlZFxuIiwgZXJyb3IpOworCQkJaWYgKGVycm9yID09IEVOT0JVRlMpIHsKKwkJCQlhc29j
LT5pZnBfaGFkX2Vub2J1ZiA9IDE7CisJCQkJU0NUUF9TVEFUX0lOQ1Ioc2N0cHNfbG93bGV2ZWxl
cnIpOworCQkJfQogCQkJcmV0dXJuIChlcnJvcik7CisJCX0gZWxzZSB7CisJCQlhc29jLT5pZnBf
aGFkX2Vub2J1ZiA9IDA7CiAJCX0KIAkJZW5kb2ZjaGFpbiA9IE5VTEw7CiAJCWF1dGggPSBOVUxM
OwpAQCAtMTAwNDgsNyArMTAxMDUsNyBAQCBzY3RwX2NodW5rX3JldHJhbnNtaXNzaW9uKHN0cnVj
dCBzY3RwX2lucGNiICppbnAsCiAJCX0KIAkJaWYgKGNoay0+ZGF0YSA9PSBOVUxMKSB7CiAJCQlT
Q1RQX1BSSU5URigiVFNOOiV4IGNoay0+c25kX2NvdW50OiVkIGNoay0+c2VudDolZCBjYW4ndCBy
ZXRyYW4gLSBubyBkYXRhXG4iLAotCQkJICAgICAgICAgICAgY2hrLT5yZWMuZGF0YS5UU05fc2Vx
LCBjaGstPnNuZF9jb3VudCwgY2hrLT5zZW50KTsKKwkJCSAgICAgICAgICAgIGNoay0+cmVjLmRh
dGEudHNuLCBjaGstPnNuZF9jb3VudCwgY2hrLT5zZW50KTsKIAkJCWNvbnRpbnVlOwogCQl9CiAJ
CWlmICgoU0NUUF9CQVNFX1NZU0NUTChzY3RwX21heF9yZXRyYW5fY2h1bmspKSAmJgpAQCAtMTAw
NTcsNyArMTAxMTQsNyBAQCBzY3RwX2NodW5rX3JldHJhbnNtaXNzaW9uKHN0cnVjdCBzY3RwX2lu
cGNiICppbnAsCiAJCQljaGFyIG1zZ1tTQ1RQX0RJQUdfSU5GT19MRU5dOwogCiAJCQlzbnByaW50
Zihtc2csIHNpemVvZihtc2cpLCAiVFNOICU4Ljh4IHJldHJhbnNtaXR0ZWQgJWQgdGltZXMsIGdp
dmluZyB1cCIsCi0JCQkJIGNoay0+cmVjLmRhdGEuVFNOX3NlcSwgY2hrLT5zbmRfY291bnQpOwor
CQkJCSBjaGstPnJlYy5kYXRhLnRzbiwgY2hrLT5zbmRfY291bnQpOwogCQkJb3BfZXJyID0gc2N0
cF9nZW5lcmF0ZV9jYXVzZShTQ1RQX0JBU0VfU1lTQ1RMKHNjdHBfZGlhZ19pbmZvX2NvZGUpLAog
CQkJICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtc2cpOwogCQkJYXRvbWljX2FkZF9pbnQo
JnN0Y2ItPmFzb2MucmVmY250LCAxKTsKQEAgLTEwMDk2LDcgKzEwMTUzLDcgQEAgc2N0cF9jaHVu
a19yZXRyYW5zbWlzc2lvbihzdHJ1Y3Qgc2N0cF9pbnBjYiAqaW5wLAogCQkJdWludDMyX3QgdHNu
OwogCiAJCQl0c24gPSBhc29jLT5sYXN0X2Fja2VkX3NlcSArIDE7Ci0JCQlpZiAodHNuID09IGNo
ay0+cmVjLmRhdGEuVFNOX3NlcSkgeworCQkJaWYgKHRzbiA9PSBjaGstPnJlYy5kYXRhLnRzbikg
ewogCQkJCS8qCiAJCQkJICogd2UgbWFrZSBhIHNwZWNpYWwgZXhjZXB0aW9uIGZvciB0aGlzCiAJ
CQkJICogY2FzZS4gVGhlIHBlZXIgaGFzIG5vIHJ3bmQgYnV0IGlzIG1pc3NpbmcKQEAgLTEwMjc5
LDggKzEwMzM2LDE0IEBAIHNjdHBfY2h1bmtfcmV0cmFuc21pc3Npb24oc3RydWN0IHNjdHBfaW5w
Y2IgKmlucCwKICNlbmRpZgogCQkJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIHNvX2xvY2tlZCkpKSB7CiAJCQkJLyogZXJyb3IsIHdlIGNvdWxkIG5vdCBvdXRwdXQgKi8K
LQkJCQlTQ1RQX1NUQVRfSU5DUihzY3Rwc19sb3dsZXZlbGVycik7CisJCQkJU0NUUERCRyhTQ1RQ
X0RFQlVHX09VVFBVVDMsICJHYWsgc2VuZCBlcnJvciAlZFxuIiwgZXJyb3IpOworCQkJCWlmIChl
cnJvciA9PSBFTk9CVUZTKSB7CisJCQkJCWFzb2MtPmlmcF9oYWRfZW5vYnVmID0gMTsKKwkJCQkJ
U0NUUF9TVEFUX0lOQ1Ioc2N0cHNfbG93bGV2ZWxlcnIpOworCQkJCX0KIAkJCQlyZXR1cm4gKGVy
cm9yKTsKKwkJCX0gZWxzZSB7CisJCQkJYXNvYy0+aWZwX2hhZF9lbm9idWYgPSAwOwogCQkJfQog
CQkJZW5kb2ZjaGFpbiA9IE5VTEw7CiAJCQlhdXRoID0gTlVMTDsKQEAgLTEwMzA3LDcgKzEwMzcw
LDcgQEAgc2N0cF9jaHVua19yZXRyYW5zbWlzc2lvbihzdHJ1Y3Qgc2N0cF9pbnBjYiAqaW5wLAog
CQkJc2N0cF9hdWRpdF9sb2coMHhDNCwgYnVuZGxlX2F0KTsKICNlbmRpZgogCQkJaWYgKGJ1bmRs
ZV9hdCkgewotCQkJCXRzbnNfc2VudCA9IGRhdGFfbGlzdFswXS0+cmVjLmRhdGEuVFNOX3NlcTsK
KwkJCQl0c25zX3NlbnQgPSBkYXRhX2xpc3RbMF0tPnJlYy5kYXRhLnRzbjsKIAkJCX0KIAkJCWZv
ciAoaSA9IDA7IGkgPCBidW5kbGVfYXQ7IGkrKykgewogCQkJCVNDVFBfU1RBVF9JTkNSKHNjdHBz
X3NlbmRyZXRyYW5zZGF0YSk7CkBAIC0xMDM1NSw3ICsxMDQxOCw3IEBAIHNjdHBfY2h1bmtfcmV0
cmFuc21pc3Npb24oc3RydWN0IHNjdHBfaW5wY2IgKmlucCwKIAkJCQkJCSAgICAgICBkYXRhX2xp
c3RbaV0tPndob1RvLT5mbGlnaHRfc2l6ZSwKIAkJCQkJCSAgICAgICBkYXRhX2xpc3RbaV0tPmJv
b2tfc2l6ZSwKIAkJCQkJCSAgICAgICAodWludDMyX3QpKHVpbnRwdHJfdClkYXRhX2xpc3RbaV0t
Pndob1RvLAotCQkJCQkJICAgICAgIGRhdGFfbGlzdFtpXS0+cmVjLmRhdGEuVFNOX3NlcSk7CisJ
CQkJCQkgICAgICAgZGF0YV9saXN0W2ldLT5yZWMuZGF0YS50c24pOwogCQkJCX0KIAkJCQlzY3Rw
X2ZsaWdodF9zaXplX2luY3JlYXNlKGRhdGFfbGlzdFtpXSk7CiAJCQkJc2N0cF90b3RhbF9mbGln
aHRfaW5jcmVhc2Uoc3RjYiwgZGF0YV9saXN0W2ldKTsKQEAgLTEwNDM0LDcgKzEwNDk3LDcgQEAg
c2N0cF90aW1lcl92YWxpZGF0aW9uKHN0cnVjdCBzY3RwX2lucGNiICppbnAsCiB9CiAKIHZvaWQK
LXNjdHBfY2h1bmtfb3V0cHV0IChzdHJ1Y3Qgc2N0cF9pbnBjYiAqaW5wLAorc2N0cF9jaHVua19v
dXRwdXQoc3RydWN0IHNjdHBfaW5wY2IgKmlucCwKICAgICBzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2Is
CiAgICAgaW50IGZyb21fd2hlcmUsCiAgICAgaW50IHNvX2xvY2tlZApAQCAtMTA3NzYsMTMgKzEw
ODM5LDcgQEAgc2VuZF9mb3J3YXJkX3RzbihzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsCiAJdW5zaWdu
ZWQgaW50IGNudF9vZl9zcGFjZSwgaSwgb3ZoOwogCXVuc2lnbmVkIGludCBzcGFjZV9uZWVkZWQ7
CiAJdW5zaWduZWQgaW50IGNudF9vZl9za2lwcGVkID0gMDsKLQlpbnQgb2xkOwogCi0JaWYgKGFz
b2MtPmlkYXRhX3N1cHBvcnRlZCkgewotCQlvbGQgPSAwOwotCX0gZWxzZSB7Ci0JCW9sZCA9IDE7
Ci0JfQogCVNDVFBfVENCX0xPQ0tfQVNTRVJUKHN0Y2IpOwogCVRBSUxRX0ZPUkVBQ0goY2hrLCAm
YXNvYy0+Y29udHJvbF9zZW5kX3F1ZXVlLCBzY3RwX25leHQpIHsKIAkJaWYgKGNoay0+cmVjLmNo
dW5rX2lkLmlkID09IFNDVFBfRk9SV0FSRF9DVU1fVFNOKSB7CkBAIC0xMDgzOCwxOCArMTA4OTUs
MTggQEAgc2N0cF9maWxsX2luX3Jlc3Q6CiAJCQkvKiBubyBtb3JlIHRvIGxvb2sgYXQgKi8KIAkJ
CWJyZWFrOwogCQl9Ci0JCWlmIChvbGQgJiYgKGF0LT5yZWMuZGF0YS5yY3ZfZmxhZ3MgJiBTQ1RQ
X0RBVEFfVU5PUkRFUkVEKSkgeworCQlpZiAoIWFzb2MtPmlkYXRhX3N1cHBvcnRlZCAmJiAoYXQt
PnJlYy5kYXRhLnJjdl9mbGFncyAmIFNDVFBfREFUQV9VTk9SREVSRUQpKSB7CiAJCQkvKiBXZSBk
b24ndCByZXBvcnQgdGhlc2UgKi8KIAkJCWNvbnRpbnVlOwogCQl9CiAJCWNudF9vZl9za2lwcGVk
Kys7CiAJfQotCWlmIChvbGQpIHsKKwlpZiAoYXNvYy0+aWRhdGFfc3VwcG9ydGVkKSB7CiAJCXNw
YWNlX25lZWRlZCA9IChzaXplb2Yoc3RydWN0IHNjdHBfZm9yd2FyZF90c25fY2h1bmspICsKLQkJ
ICAgICAgICAgICAgICAgIChjbnRfb2Zfc2tpcHBlZCAqIHNpemVvZihzdHJ1Y3Qgc2N0cF9zdHJz
ZXEpKSk7CisJCSAgICAgICAgICAgICAgICAoY250X29mX3NraXBwZWQgKiBzaXplb2Yoc3RydWN0
IHNjdHBfc3Ryc2VxX21pZCkpKTsKIAl9IGVsc2UgewogCQlzcGFjZV9uZWVkZWQgPSAoc2l6ZW9m
KHN0cnVjdCBzY3RwX2ZvcndhcmRfdHNuX2NodW5rKSArCi0JCSAgICAgICAgICAgICAgICAoY250
X29mX3NraXBwZWQgKiBzaXplb2Yoc3RydWN0IHNjdHBfc3Ryc2VxX21pZCkpKTsKKwkJICAgICAg
ICAgICAgICAgIChjbnRfb2Zfc2tpcHBlZCAqIHNpemVvZihzdHJ1Y3Qgc2N0cF9zdHJzZXEpKSk7
CiAJfQogCWNudF9vZl9zcGFjZSA9ICh1bnNpZ25lZCBpbnQpTV9UUkFJTElOR1NQQUNFKGNoay0+
ZGF0YSk7CiAKQEAgLTEwODc4LDEyICsxMDkzNSwxMSBAQCBzY3RwX2ZpbGxfaW5fcmVzdDoKIAkJ
CQkgICAgICAgMHhmZiwgMHhmZiwgY250X29mX3NwYWNlLAogCQkJCSAgICAgICBzcGFjZV9uZWVk
ZWQpOwogCQl9Ci0JCWlmIChvbGQpIHsKLQkJCWNudF9vZl9za2lwcGVkID0gY250X29mX3NwYWNl
IC0gc2l6ZW9mKHN0cnVjdCBzY3RwX2ZvcndhcmRfdHNuX2NodW5rKTsKLQkJCWNudF9vZl9za2lw
cGVkIC89IHNpemVvZihzdHJ1Y3Qgc2N0cF9zdHJzZXEpOwotCQl9IGVsc2UgewotCQkJY250X29m
X3NraXBwZWQgPSBjbnRfb2Zfc3BhY2UgLSBzaXplb2Yoc3RydWN0IHNjdHBfZm9yd2FyZF90c25f
Y2h1bmspOworCQljbnRfb2Zfc2tpcHBlZCA9IGNudF9vZl9zcGFjZSAtIHNpemVvZihzdHJ1Y3Qg
c2N0cF9mb3J3YXJkX3Rzbl9jaHVuayk7CisJCWlmIChhc29jLT5pZGF0YV9zdXBwb3J0ZWQpIHsK
IAkJCWNudF9vZl9za2lwcGVkIC89IHNpemVvZihzdHJ1Y3Qgc2N0cF9zdHJzZXFfbWlkKTsKKwkJ
fSBlbHNlIHsKKwkJCWNudF9vZl9za2lwcGVkIC89IHNpemVvZihzdHJ1Y3Qgc2N0cF9zdHJzZXEp
OwogCQl9CiAJCS8qLQogCQkgKiBHbyB0aHJvdWdoIGFuZCBmaW5kIHRoZSBUU04gdGhhdCB3aWxs
IGJlIHRoZSBvbmUKQEAgLTEwOTAxLDcgKzEwOTU3LDcgQEAgc2N0cF9maWxsX2luX3Jlc3Q6CiAJ
CX0KIAkJaWYgKGF0ICYmIFNDVFBfQkFTRV9TWVNDVEwoc2N0cF9sb2dnaW5nX2xldmVsKSAmIFND
VFBfTE9HX1RSWV9BRFZBTkNFKSB7CiAJCQlzY3RwX21pc2NfaW50cyhTQ1RQX0ZXRF9UU05fQ0hF
Q0ssCi0JCQkJICAgICAgIDB4ZmYsIGNudF9vZl9za2lwcGVkLCBhdC0+cmVjLmRhdGEuVFNOX3Nl
cSwKKwkJCQkgICAgICAgMHhmZiwgY250X29mX3NraXBwZWQsIGF0LT5yZWMuZGF0YS50c24sCiAJ
CQkJICAgICAgIGFzb2MtPmFkdmFuY2VkX3BlZXJfYWNrX3BvaW50KTsKIAkJfQogCQlsYXN0ID0g
YXQ7CkBAIC0xMDkxMCwxNCArMTA5NjYsMTQgQEAgc2N0cF9maWxsX2luX3Jlc3Q6CiAJCSAqIHBl
ZXIgYWNrIHBvaW50CiAJCSAqLwogCQlpZiAobGFzdCkgewotCQkJYWR2YW5jZV9wZWVyX2Fja19w
b2ludCA9IGxhc3QtPnJlYy5kYXRhLlRTTl9zZXE7CisJCQlhZHZhbmNlX3BlZXJfYWNrX3BvaW50
ID0gbGFzdC0+cmVjLmRhdGEudHNuOwogCQl9Ci0JCWlmIChvbGQpIHsKKwkJaWYgKGFzb2MtPmlk
YXRhX3N1cHBvcnRlZCkgewogCQkJc3BhY2VfbmVlZGVkID0gc2l6ZW9mKHN0cnVjdCBzY3RwX2Zv
cndhcmRfdHNuX2NodW5rKSArCi0JCQkgICAgICAgICAgICAgICBjbnRfb2Zfc2tpcHBlZCAqIHNp
emVvZihzdHJ1Y3Qgc2N0cF9zdHJzZXEpOworCQkJICAgICAgICAgICAgICAgY250X29mX3NraXBw
ZWQgKiBzaXplb2Yoc3RydWN0IHNjdHBfc3Ryc2VxX21pZCk7CiAJCX0gZWxzZSB7CiAJCQlzcGFj
ZV9uZWVkZWQgPSBzaXplb2Yoc3RydWN0IHNjdHBfZm9yd2FyZF90c25fY2h1bmspICsKLQkJCSAg
ICAgICAgICAgICAgIGNudF9vZl9za2lwcGVkICogc2l6ZW9mKHN0cnVjdCBzY3RwX3N0cnNlcV9t
aWQpOworCQkJICAgICAgICAgICAgICAgY250X29mX3NraXBwZWQgKiBzaXplb2Yoc3RydWN0IHNj
dHBfc3Ryc2VxKTsKIAkJfQogCX0KIAljaGstPnNlbmRfc2l6ZSA9IHNwYWNlX25lZWRlZDsKQEAg
LTEwOTI1LDEwICsxMDk4MSwxMCBAQCBzY3RwX2ZpbGxfaW5fcmVzdDoKIAlmd2R0c24gPSBtdG9k
KGNoay0+ZGF0YSwgc3RydWN0IHNjdHBfZm9yd2FyZF90c25fY2h1bmsgKik7CiAJZndkdHNuLT5j
aC5jaHVua19sZW5ndGggPSBodG9ucyhjaGstPnNlbmRfc2l6ZSk7CiAJZndkdHNuLT5jaC5jaHVu
a19mbGFncyA9IDA7Ci0JaWYgKG9sZCkgewotCQlmd2R0c24tPmNoLmNodW5rX3R5cGUgPSBTQ1RQ
X0ZPUldBUkRfQ1VNX1RTTjsKLQl9IGVsc2UgeworCWlmIChhc29jLT5pZGF0YV9zdXBwb3J0ZWQp
IHsKIAkJZndkdHNuLT5jaC5jaHVua190eXBlID0gU0NUUF9JRk9SV0FSRF9DVU1fVFNOOworCX0g
ZWxzZSB7CisJCWZ3ZHRzbi0+Y2guY2h1bmtfdHlwZSA9IFNDVFBfRk9SV0FSRF9DVU1fVFNOOwog
CX0KIAlmd2R0c24tPm5ld19jdW11bGF0aXZlX3RzbiA9IGh0b25sKGFkdmFuY2VfcGVlcl9hY2tf
cG9pbnQpOwogCVNDVFBfQlVGX0xFTihjaGstPmRhdGEpID0gY2hrLT5zZW5kX3NpemU7CkBAIC0x
MDkzNywxMCArMTA5OTMsMTIgQEAgc2N0cF9maWxsX2luX3Jlc3Q6CiAJICogTW92ZSBwb2ludGVy
IHRvIGFmdGVyIHRoZSBmd2R0c24gYW5kIHRyYW5zZmVyIHRvIHRoZQogCSAqIHN0cnNlcSBwb2lu
dGVyLgogCSAqLwotCWlmIChvbGQpIHsKLQkJc3Ryc2VxID0gKHN0cnVjdCBzY3RwX3N0cnNlcSAq
KWZ3ZHRzbjsKLQl9IGVsc2UgeworCWlmIChhc29jLT5pZGF0YV9zdXBwb3J0ZWQpIHsKIAkJc3Ry
c2VxX20gPSAoc3RydWN0IHNjdHBfc3Ryc2VxX21pZCAqKWZ3ZHRzbjsKKwkJc3Ryc2VxID0gTlVM
TDsKKwl9IGVsc2UgeworCQlzdHJzZXEgPSAoc3RydWN0IHNjdHBfc3Ryc2VxICopZndkdHNuOwor
CQlzdHJzZXFfbSA9IE5VTEw7CiAJfQogCS8qLQogCSAqIE5vdyBwb3B1bGF0ZSB0aGUgc3Ryc2Vx
IGxpc3QuIFRoaXMgaXMgZG9uZSBibGluZGx5CkBAIC0xMDk1OSwyNiArMTEwMTcsMjYgQEAgc2N0
cF9maWxsX2luX3Jlc3Q6CiAJCWlmIChpID49IGNudF9vZl9za2lwcGVkKSB7CiAJCQlicmVhazsK
IAkJfQotCQlpZiAob2xkICYmIChhdC0+cmVjLmRhdGEucmN2X2ZsYWdzICYgU0NUUF9EQVRBX1VO
T1JERVJFRCkpIHsKKwkJaWYgKCFhc29jLT5pZGF0YV9zdXBwb3J0ZWQgJiYgKGF0LT5yZWMuZGF0
YS5yY3ZfZmxhZ3MgJiBTQ1RQX0RBVEFfVU5PUkRFUkVEKSkgewogCQkJLyogV2UgZG9uJ3QgcmVw
b3J0IHRoZXNlICovCiAJCQljb250aW51ZTsKIAkJfQotCQlpZiAoYXQtPnJlYy5kYXRhLlRTTl9z
ZXEgPT0gYWR2YW5jZV9wZWVyX2Fja19wb2ludCkgeworCQlpZiAoYXQtPnJlYy5kYXRhLnRzbiA9
PSBhZHZhbmNlX3BlZXJfYWNrX3BvaW50KSB7CiAJCQlhdC0+cmVjLmRhdGEuZndkX3Rzbl9jbnQg
PSAwOwogCQl9Ci0JCWlmIChvbGQpIHsKLQkJCXN0cnNlcS0+c3RyZWFtID0gaHRvbnMoYXQtPnJl
Yy5kYXRhLnN0cmVhbV9udW1iZXIpOwotCQkJc3Ryc2VxLT5zZXF1ZW5jZSA9IGh0b25zKCh1aW50
MTZfdClhdC0+cmVjLmRhdGEuc3RyZWFtX3NlcSk7Ci0JCQlzdHJzZXErKzsKLQkJfSBlbHNlIHsK
LQkJCXN0cnNlcV9tLT5zdHJlYW0gPSBodG9ucyhhdC0+cmVjLmRhdGEuc3RyZWFtX251bWJlcik7
CisJCWlmIChhc29jLT5pZGF0YV9zdXBwb3J0ZWQpIHsKKwkJCXN0cnNlcV9tLT5zaWQgPSBodG9u
cyhhdC0+cmVjLmRhdGEuc2lkKTsKIAkJCWlmIChhdC0+cmVjLmRhdGEucmN2X2ZsYWdzICYgU0NU
UF9EQVRBX1VOT1JERVJFRCkgewogCQkJCXN0cnNlcV9tLT5mbGFncyA9IGh0b25zKFBSX1NDVFBf
VU5PUkRFUkVEX0ZMQUcpOwogCQkJfSBlbHNlIHsKIAkJCQlzdHJzZXFfbS0+ZmxhZ3MgPSAwOwog
CQkJfQotCQkJc3Ryc2VxX20tPm1zZ19pZCA9IGh0b25sKGF0LT5yZWMuZGF0YS5zdHJlYW1fc2Vx
KTsKKwkJCXN0cnNlcV9tLT5taWQgPSBodG9ubChhdC0+cmVjLmRhdGEubWlkKTsKIAkJCXN0cnNl
cV9tKys7CisJCX0gZWxzZSB7CisJCQlzdHJzZXEtPnNpZCA9IGh0b25zKGF0LT5yZWMuZGF0YS5z
aWQpOworCQkJc3Ryc2VxLT5zc24gPSBodG9ucygodWludDE2X3QpYXQtPnJlYy5kYXRhLm1pZCk7
CisJCQlzdHJzZXErKzsKIAkJfQogCQlpKys7CiAJfQpAQCAtMTEzOTUsNiArMTE0NTMsNyBAQCBz
Y3RwX3NlbmRfYWJvcnRfdGNiKHN0cnVjdCBzY3RwX3RjYiAqc3RjYiwgc3RydWN0IG1idWYgKm9w
ZXJyLCBpbnQgc29fbG9ja2VkCiAJc3RydWN0IHNjdHBfbmV0cyAqbmV0OwogCXVpbnQzMl90IHZ0
YWc7CiAJdWludDMyX3QgYXV0aF9vZmZzZXQgPSAwOworCWludCBlcnJvcjsKIAl1aW50MTZfdCBj
YXVzZV9sZW4sIGNodW5rX2xlbiwgcGFkZGluZ19sZW47CiAKICNpZiBkZWZpbmVkKF9fQVBQTEVf
XykKQEAgLTExNDczLDE1ICsxMTUzMiwyMyBAQCBzY3RwX3NlbmRfYWJvcnRfdGNiKHN0cnVjdCBz
Y3RwX3RjYiAqc3RjYiwgc3RydWN0IG1idWYgKm9wZXJyLCBpbnQgc29fbG9ja2VkCiAJCQlyZXR1
cm47CiAJCX0KIAl9Ci0JKHZvaWQpc2N0cF9sb3dsZXZlbF9jaHVua19vdXRwdXQoc3RjYi0+c2N0
cF9lcCwgc3RjYiwgbmV0LAotCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzdHJ1
Y3Qgc29ja2FkZHIgKikmbmV0LT5yby5fbF9hZGRyLAotCSAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG1fb3V0LCBhdXRoX29mZnNldCwgYXV0aCwgc3RjYi0+YXNvYy5hdXRoaW5mby5h
Y3RpdmVfa2V5aWQsIDEsIDAsIDAsCi0JICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
c3RjYi0+c2N0cF9lcC0+c2N0cF9scG9ydCwgc3RjYi0+cnBvcnQsIGh0b25sKHZ0YWcpLAotCSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0Y2ItPmFzb2MucHJpbWFyeV9kZXN0aW5h
dGlvbi0+cG9ydCwgTlVMTCwKKwlpZiAoKGVycm9yID0gc2N0cF9sb3dsZXZlbF9jaHVua19vdXRw
dXQoc3RjYi0+c2N0cF9lcCwgc3RjYiwgbmV0LAorCSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAoc3RydWN0IHNvY2thZGRyICopJm5ldC0+cm8uX2xfYWRkciwKKwkgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9vdXQsIGF1dGhfb2Zmc2V0LCBh
dXRoLCBzdGNiLT5hc29jLmF1dGhpbmZvLmFjdGl2ZV9rZXlpZCwgMSwgMCwgMCwKKwkgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RjYi0+c2N0cF9lcC0+c2N0cF9scG9y
dCwgc3RjYi0+cnBvcnQsIGh0b25sKHZ0YWcpLAorCSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBzdGNiLT5hc29jLnByaW1hcnlfZGVzdGluYXRpb24tPnBvcnQsIE5VTEws
CiAjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykKLQkgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAwLCAwLAorCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCAw
LAogI2VuZGlmCi0JICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29fbG9ja2VkKTsK
KwkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29fbG9ja2VkKSkpIHsK
KwkJU0NUUERCRyhTQ1RQX0RFQlVHX09VVFBVVDMsICJHYWsgc2VuZCBlcnJvciAlZFxuIiwgZXJy
b3IpOworCQlpZiAoZXJyb3IgPT0gRU5PQlVGUykgeworCQkJc3RjYi0+YXNvYy5pZnBfaGFkX2Vu
b2J1ZiA9IDE7CisJCQlTQ1RQX1NUQVRfSU5DUihzY3Rwc19sb3dsZXZlbGVycik7CisJCX0KKwl9
IGVsc2UgeworCQlzdGNiLT5hc29jLmlmcF9oYWRfZW5vYnVmID0gMDsKKwl9CiAJU0NUUF9TVEFU
X0lOQ1JfQ09VTlRFUjY0KHNjdHBzX291dGNvbnRyb2xjaHVua3MpOwogfQogCkBAIC0xMTQ5NCw2
ICsxMTU2MSw3IEBAIHNjdHBfc2VuZF9zaHV0ZG93bl9jb21wbGV0ZShzdHJ1Y3Qgc2N0cF90Y2Ig
KnN0Y2IsCiAJc3RydWN0IG1idWYgKm1fc2h1dGRvd25fY29tcDsKIAlzdHJ1Y3Qgc2N0cF9zaHV0
ZG93bl9jb21wbGV0ZV9jaHVuayAqc2h1dGRvd25fY29tcGxldGU7CiAJdWludDMyX3QgdnRhZzsK
KwlpbnQgZXJyb3I7CiAJdWludDhfdCBmbGFnczsKIAogCW1fc2h1dGRvd25fY29tcCA9IHNjdHBf
Z2V0X21idWZfZm9yX21zZyhzaXplb2Yoc3RydWN0IHNjdHBfY2h1bmtoZHIpLCAwLCBNX05PV0FJ
VCwgMSwgTVRfSEVBREVSKTsKQEAgLTExNTEzLDE2ICsxMTU4MSwyNCBAQCBzY3RwX3NlbmRfc2h1
dGRvd25fY29tcGxldGUoc3RydWN0IHNjdHBfdGNiICpzdGNiLAogCXNodXRkb3duX2NvbXBsZXRl
LT5jaC5jaHVua19mbGFncyA9IGZsYWdzOwogCXNodXRkb3duX2NvbXBsZXRlLT5jaC5jaHVua19s
ZW5ndGggPSBodG9ucyhzaXplb2Yoc3RydWN0IHNjdHBfc2h1dGRvd25fY29tcGxldGVfY2h1bmsp
KTsKIAlTQ1RQX0JVRl9MRU4obV9zaHV0ZG93bl9jb21wKSA9IHNpemVvZihzdHJ1Y3Qgc2N0cF9z
aHV0ZG93bl9jb21wbGV0ZV9jaHVuayk7Ci0JKHZvaWQpc2N0cF9sb3dsZXZlbF9jaHVua19vdXRw
dXQoc3RjYi0+c2N0cF9lcCwgc3RjYiwgbmV0LAotCSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIChzdHJ1Y3Qgc29ja2FkZHIgKikmbmV0LT5yby5fbF9hZGRyLAotCSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG1fc2h1dGRvd25fY29tcCwgMCwgTlVMTCwgMCwgMSwgMCwg
MCwKLQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGNiLT5zY3RwX2VwLT5zY3Rw
X2xwb3J0LCBzdGNiLT5ycG9ydCwKLQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBo
dG9ubCh2dGFnKSwKLQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXQtPnBvcnQs
IE5VTEwsCisJaWYgKChlcnJvciA9IHNjdHBfbG93bGV2ZWxfY2h1bmtfb3V0cHV0KHN0Y2ItPnNj
dHBfZXAsIHN0Y2IsIG5ldCwKKwkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgKHN0cnVjdCBzb2NrYWRkciAqKSZuZXQtPnJvLl9sX2FkZHIsCisJICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIG1fc2h1dGRvd25fY29tcCwgMCwgTlVMTCwgMCwgMSwg
MCwgMCwKKwkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RjYi0+c2N0
cF9lcC0+c2N0cF9scG9ydCwgc3RjYi0+cnBvcnQsCisJICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGh0b25sKHZ0YWcpLAorCSAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBuZXQtPnBvcnQsIE5VTEwsCiAjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykK
LQkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCAwLAorCSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAwLCAwLAogI2VuZGlmCi0JICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgU0NUUF9TT19OT1RfTE9DS0VEKTsKKwkgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgU0NUUF9TT19OT1RfTE9DS0VEKSkpIHsKKwkJU0NUUERC
RyhTQ1RQX0RFQlVHX09VVFBVVDMsICJHYWsgc2VuZCBlcnJvciAlZFxuIiwgZXJyb3IpOworCQlp
ZiAoZXJyb3IgPT0gRU5PQlVGUykgeworCQkJc3RjYi0+YXNvYy5pZnBfaGFkX2Vub2J1ZiA9IDE7
CisJCQlTQ1RQX1NUQVRfSU5DUihzY3Rwc19sb3dsZXZlbGVycik7CisJCX0KKwl9IGVsc2Ugewor
CQlzdGNiLT5hc29jLmlmcF9oYWRfZW5vYnVmID0gMDsKKwl9CiAJU0NUUF9TVEFUX0lOQ1JfQ09V
TlRFUjY0KHNjdHBzX291dGNvbnRyb2xjaHVua3MpOwogCXJldHVybjsKIH0KQEAgLTExODk3LDgg
KzExOTczLDEyIEBAIHNjdHBfc2VuZF9yZXNwX21zZyhzdHJ1Y3Qgc29ja2FkZHIgKnNyYywgc3Ry
dWN0IHNvY2thZGRyICpkc3QsCiAjaWYgZGVmaW5lZChTQ1RQX1dJVEhfTk9fQ1NVTSkKIAkJU0NU
UF9TVEFUX0lOQ1Ioc2N0cHNfc2VuZG5vY3JjKTsKICNlbHNlCi0JCXNob3V0LT5jaGVja3N1bSA9
IHNjdHBfY2FsY3VsYXRlX2Nrc3VtKG1vdXQsIDApOwotCQlTQ1RQX1NUQVRfSU5DUihzY3Rwc19z
ZW5kc3djcmMpOworCQlpZiAoU0NUUF9CQVNFX1ZBUihjcmMzMmNfb2ZmbG9hZGVkKSA9PSAwKSB7
CisJCQlzaG91dC0+Y2hlY2tzdW0gPSBzY3RwX2NhbGN1bGF0ZV9ja3N1bShtb3V0LCAwKTsKKwkJ
CVNDVFBfU1RBVF9JTkNSKHNjdHBzX3NlbmRzd2NyYyk7CisJCX0gZWxzZSB7CisJCQlTQ1RQX1NU
QVRfSU5DUihzY3Rwc19zZW5kaHdjcmMpOworCQl9CiAjZW5kaWYKICNpZmRlZiBTQ1RQX1BBQ0tF
VF9MT0dHSU5HCiAJCWlmIChTQ1RQX0JBU0VfU1lTQ1RMKHNjdHBfbG9nZ2luZ19sZXZlbCkgJiBT
Q1RQX0xBU1RfUEFDS0VUX1RSQUNJTkcpIHsKQEAgLTEyODgyLDcgKzEyOTYyLDcgQEAgc2N0cF9z
ZW5kX3N0cl9yZXNldF9yZXEoc3RydWN0IHNjdHBfdGNiICpzdGNiLAogCQkJc3RjYi0+YXNvYy5z
dHJtb3V0W2ldLm5leHRfbWlkX29yZGVyZWQgPSBvbGRzdHJlYW1baV0ubmV4dF9taWRfb3JkZXJl
ZDsKIAkJCXN0Y2ItPmFzb2Muc3RybW91dFtpXS5uZXh0X21pZF91bm9yZGVyZWQgPSBvbGRzdHJl
YW1baV0ubmV4dF9taWRfdW5vcmRlcmVkOwogCQkJc3RjYi0+YXNvYy5zdHJtb3V0W2ldLmxhc3Rf
bXNnX2luY29tcGxldGUgPSBvbGRzdHJlYW1baV0ubGFzdF9tc2dfaW5jb21wbGV0ZTsKLQkJCXN0
Y2ItPmFzb2Muc3RybW91dFtpXS5zdHJlYW1fbm8gPSBpOworCQkJc3RjYi0+YXNvYy5zdHJtb3V0
W2ldLnNpZCA9IGk7CiAJCQlzdGNiLT5hc29jLnN0cm1vdXRbaV0uc3RhdGUgPSBvbGRzdHJlYW1b
aV0uc3RhdGU7CiAJCQkvKiBGSVggTUUgRklYIE1FICovCiAJCQkvKiBUaGlzIHNob3VsZCBiZSBh
IFNTX0NPUFkgb3BlcmF0aW9uIEZJWCBNRSBTVFJFQU0gU0NIRURVTEVSIEVYUEVSVCAqLwpAQCAt
MTI5MTAsNyArMTI5OTAsNyBAQCBzY3RwX3NlbmRfc3RyX3Jlc2V0X3JlcShzdHJ1Y3Qgc2N0cF90
Y2IgKnN0Y2IsCiAjZW5kaWYKIAkJCXN0Y2ItPmFzb2Muc3RybW91dFtpXS5uZXh0X21pZF9vcmRl
cmVkID0gMDsKIAkJCXN0Y2ItPmFzb2Muc3RybW91dFtpXS5uZXh0X21pZF91bm9yZGVyZWQgPSAw
OwotCQkJc3RjYi0+YXNvYy5zdHJtb3V0W2ldLnN0cmVhbV9ubyA9IGk7CisJCQlzdGNiLT5hc29j
LnN0cm1vdXRbaV0uc2lkID0gaTsKIAkJCXN0Y2ItPmFzb2Muc3RybW91dFtpXS5sYXN0X21zZ19p
bmNvbXBsZXRlID0gMDsKIAkJCXN0Y2ItPmFzb2Muc3NfZnVuY3Rpb25zLnNjdHBfc3NfaW5pdF9z
dHJlYW0oc3RjYiwgJnN0Y2ItPmFzb2Muc3RybW91dFtpXSwgTlVMTCk7CiAJCQlzdGNiLT5hc29j
LnN0cm1vdXRbaV0uc3RhdGUgPSBTQ1RQX1NUUkVBTV9DTE9TRUQ7CkBAIC0xMzIyMiw3ICsxMzMw
Miw3IEBAIHNjdHBfY29weV9pdF9pbihzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsCiAJc3AtPmZzbiA9
IDA7CiAJKHZvaWQpU0NUUF9HRVRUSU1FX1RJTUVWQUwoJnNwLT50cyk7CiAKLQlzcC0+c3RyZWFt
ID0gc3Jjdi0+c2luZm9fc3RyZWFtOworCXNwLT5zaWQgPSBzcmN2LT5zaW5mb19zdHJlYW07CiAj
aWYgZGVmaW5lZChfX0FQUExFX18pCiAjaWYgZGVmaW5lZChBUFBMRV9MRU9QQVJEKQogCXNwLT5s
ZW5ndGggPSAodWludDMyX3QpbWluKHVpby0+dWlvX3Jlc2lkLCBtYXhfc2VuZF9sZW4pOwpAQCAt
MTQ4MzcsNiArMTQ5MTcsOSBAQCBzY3RwX3Y2c3JjX21hdGNoX25leHRob3Aoc3RydWN0IHNvY2th
ZGRyX2luNiAqc3JjNiwgc2N0cF9yb3V0ZV90ICpybykKIAkJcmV0dXJuICgwKTsKIAogCS8qIGdl
dCBwcmVmaXggZW50cnkgb2YgYWRkcmVzcyAqLworI2lmIGRlZmluZWQoX19GcmVlQlNEX18pCisJ
TkQ2X1JMT0NLKCk7CisjZW5kaWYKIAlMSVNUX0ZPUkVBQ0gocGZ4LCAmTU9EVUxFX0dMT0JBTChu
ZF9wcmVmaXgpLCBuZHByX2VudHJ5KSB7CiAJCWlmIChwZngtPm5kcHJfc3RhdGVmbGFncyAmIE5E
UFJGX0RFVEFDSEVEKQogCQkJY29udGludWU7CkBAIC0xNDg0Niw2ICsxNDkyOSw5IEBAIHNjdHBf
djZzcmNfbWF0Y2hfbmV4dGhvcChzdHJ1Y3Qgc29ja2FkZHJfaW42ICpzcmM2LCBzY3RwX3JvdXRl
X3QgKnJvKQogCX0KIAkvKiBubyBwcmVmaXggZW50cnkgaW4gdGhlIHByZWZpeCBsaXN0ICovCiAJ
aWYgKHBmeCA9PSBOVUxMKSB7CisjaWYgZGVmaW5lZChfX0ZyZWVCU0RfXykKKwkJTkQ2X1JVTkxP
Q0soKTsKKyNlbmRpZgogCQlTQ1RQREJHKFNDVFBfREVCVUdfT1VUUFVUMiwgIk5vIHByZWZpeCBl
bnRyeSBmb3IgIik7CiAJCVNDVFBEQkdfQUREUihTQ1RQX0RFQlVHX09VVFBVVDIsIChzdHJ1Y3Qg
c29ja2FkZHIgKilzcmM2KTsKIAkJcmV0dXJuICgwKTsKQEAgLTE0ODY3LDEyICsxNDk1MywxNyBA
QCBzY3RwX3Y2c3JjX21hdGNoX25leHRob3Aoc3RydWN0IHNvY2thZGRyX2luNiAqc3JjNiwgc2N0
cF9yb3V0ZV90ICpybykKIAkJU0NUUERCR19BRERSKFNDVFBfREVCVUdfT1VUUFVUMiwgKHN0cnVj
dCBzb2NrYWRkciAqKSZndzYpOwogCQlTQ1RQREJHKFNDVFBfREVCVUdfT1VUUFVUMiwgImluc3Rh
bGxlZCByb3V0ZXIgaXMgIik7CiAJCVNDVFBEQkdfQUREUihTQ1RQX0RFQlVHX09VVFBVVDIsIHJv
LT5yb19ydC0+cnRfZ2F0ZXdheSk7Ci0JCWlmIChzY3RwX2NtcGFkZHIoKHN0cnVjdCBzb2NrYWRk
ciAqKSZndzYsCi0JCQkJcm8tPnJvX3J0LT5ydF9nYXRld2F5KSkgeworCQlpZiAoc2N0cF9jbXBh
ZGRyKChzdHJ1Y3Qgc29ja2FkZHIgKikmZ3c2LCByby0+cm9fcnQtPnJ0X2dhdGV3YXkpKSB7Cisj
aWYgZGVmaW5lZChfX0ZyZWVCU0RfXykKKwkJCU5ENl9SVU5MT0NLKCk7CisjZW5kaWYKIAkJCVND
VFBEQkcoU0NUUF9ERUJVR19PVVRQVVQyLCAicGZ4cm91dGVyIGlzIGluc3RhbGxlZFxuIik7CiAJ
CQlyZXR1cm4gKDEpOwogCQl9CiAJfQorI2lmIGRlZmluZWQoX19GcmVlQlNEX18pCisJTkQ2X1JV
TkxPQ0soKTsKKyNlbmRpZgogCVNDVFBEQkcoU0NUUF9ERUJVR19PVVRQVVQyLCAicGZ4cm91dGVy
IGlzIG5vdCBpbnN0YWxsZWRcbiIpOwogCXJldHVybiAoMCk7CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0
cGxpYi91c3JzY3RwbGliL25ldGluZXQvc2N0cF9vdXRwdXQuaCBiL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3VzcnNjdHBs
aWIvbmV0aW5ldC9zY3RwX291dHB1dC5oCmluZGV4IGRjN2I2OGY2Yzg3YzQ2OTg5NzFlNzFjZmJi
ZGEzNzM3M2E5NjMyZDIuLmZkNjI4YmE1MjZmYTY1NGU2MzcyN2IzM2E3YzFiNDlkYjcxNTkzYWQg
MTAwNzU1Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFy
dHkvdXNyc2N0cC91c3JzY3RwbGliL3VzcnNjdHBsaWIvbmV0aW5ldC9zY3RwX291dHB1dC5oCisr
KyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0
cC91c3JzY3RwbGliL3VzcnNjdHBsaWIvbmV0aW5ldC9zY3RwX291dHB1dC5oCkBAIC0zMiw3ICsz
Miw3IEBACiAKICNpZmRlZiBfX0ZyZWVCU0RfXwogI2luY2x1ZGUgPHN5cy9jZGVmcy5oPgotX19G
QlNESUQoIiRGcmVlQlNEOiBoZWFkL3N5cy9uZXRpbmV0L3NjdHBfb3V0cHV0LmggMjk1MDcyIDIw
MTYtMDEtMzAgMTI6NTg6MzhaIHR1ZXhlbiAkIik7CitfX0ZCU0RJRCgiJEZyZWVCU0Q6IGhlYWQv
c3lzL25ldGluZXQvc2N0cF9vdXRwdXQuaCAzMTA1OTAgMjAxNi0xMi0yNiAxMTowNjo0MVogdHVl
eGVuICQiKTsKICNlbmRpZgogCiAjaWZuZGVmIF9ORVRJTkVUX1NDVFBfT1VUUFVUX0hfCmRpZmYg
LS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3Vz
cnNjdHAvdXNyc2N0cGxpYi91c3JzY3RwbGliL25ldGluZXQvc2N0cF9wY2IuYyBiL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGli
L3VzcnNjdHBsaWIvbmV0aW5ldC9zY3RwX3BjYi5jCmluZGV4IGM1NzRlNDVjMzc3ZWE4MmRhYWU4
YzlkYTViYzY3MGZkNjcyM2M3Y2UuLjY2YzQyMGU4ZjYxZTA4Yzg2NTBiNDdhMzQ4Zjk0YWVmMmNi
NWE0MTggMTAwNzU1Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3VzcnNjdHBsaWIvbmV0aW5ldC9zY3RwX3BjYi5j
CisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNy
c2N0cC91c3JzY3RwbGliL3VzcnNjdHBsaWIvbmV0aW5ldC9zY3RwX3BjYi5jCkBAIC0zMiw3ICsz
Miw3IEBACiAKICNpZmRlZiBfX0ZyZWVCU0RfXwogI2luY2x1ZGUgPHN5cy9jZGVmcy5oPgotX19G
QlNESUQoIiRGcmVlQlNEOiBoZWFkL3N5cy9uZXRpbmV0L3NjdHBfcGNiLmMgMzAzODEzIDIwMTYt
MDgtMDcgMTI6NTE6MTNaIHR1ZXhlbiAkIik7CitfX0ZCU0RJRCgiJEZyZWVCU0Q6IGhlYWQvc3lz
L25ldGluZXQvc2N0cF9wY2IuYyAzMTMzMzAgMjAxNy0wMi0wNiAwODo0OTo1N1ogYWUgJCIpOwog
I2VuZGlmCiAKICNpbmNsdWRlIDxuZXRpbmV0L3NjdHBfb3MuaD4KQEAgLTI4NTUsMjEgKzI4NTUs
NiBAQCBzY3RwX2lucGNiX2FsbG9jKHN0cnVjdCBzb2NrZXQgKnNvLCB1aW50MzJfdCB2cmZfaWQp
CiAJCVNDVFBfSU5QX0lORk9fV1VOTE9DSygpOwogCQlyZXR1cm4gKEVOT0JVRlMpOwogCX0KLSNp
ZmRlZiBJUFNFQwotI2lmICEoZGVmaW5lZChfX0FQUExFX18pKQotCWVycm9yID0gaXBzZWNfaW5p
dF9wb2xpY3koc28sICZpbnAtPmlwX2lucC5pbnAuaW5wX3NwKTsKLSNlbHNlCi0JZXJyb3IgPSAw
OwotI2VuZGlmCi0JaWYgKGVycm9yICE9IDApIHsKLSNpZiBkZWZpbmVkKF9fRnJlZUJTRF9fKQot
CQljcmZyZWUoaW5wLT5pcF9pbnAuaW5wLmlucF9jcmVkKTsKLSNlbmRpZgotCQlTQ1RQX1pPTkVf
RlJFRShTQ1RQX0JBU0VfSU5GTyhpcGlfem9uZV9lcCksIGlucCk7Ci0JCVNDVFBfSU5QX0lORk9f
V1VOTE9DSygpOwotCQlyZXR1cm4gZXJyb3I7Ci0JfQotI2VuZGlmCQkJCS8qIElQU0VDICovCiAJ
U0NUUF9JTkNSX0VQX0NPVU5UKCk7CiAJaW5wLT5pcF9pbnAuaW5wLmlucF9pcF90dGwgPSBNT0RV
TEVfR0xPQkFMKGlwX2RlZnR0bCk7CiAJU0NUUF9JTlBfSU5GT19XVU5MT0NLKCk7CkBAIC0yOTEy
LDkgKzI4OTcsNiBAQCBzY3RwX2lucGNiX2FsbG9jKHN0cnVjdCBzb2NrZXQgKnNvLCB1aW50MzJf
dCB2cmZfaWQpCiAJCXNvLT5zb19wY2IgPSBOVUxMOwogI2lmIGRlZmluZWQoX19GcmVlQlNEX18p
CiAJCWNyZnJlZShpbnAtPmlwX2lucC5pbnAuaW5wX2NyZWQpOwotI2lmZGVmIElQU0VDCi0JCWlw
c2VjX2RlbGV0ZV9wY2Jwb2xpY3koJmlucC0+aXBfaW5wLmlucCk7Ci0jZW5kaWYKICNlbmRpZgog
CQlTQ1RQX1pPTkVfRlJFRShTQ1RQX0JBU0VfSU5GTyhpcGlfem9uZV9lcCksIGlucCk7CiAJCXJl
dHVybiAoRU9QTk9UU1VQUCk7CkBAIC0yOTM3LDkgKzI5MTksNiBAQCBzY3RwX2lucGNiX2FsbG9j
KHN0cnVjdCBzb2NrZXQgKnNvLCB1aW50MzJfdCB2cmZfaWQpCiAJCXNvLT5zb19wY2IgPSBOVUxM
OwogI2lmIGRlZmluZWQoX19GcmVlQlNEX18pCiAJCWNyZnJlZShpbnAtPmlwX2lucC5pbnAuaW5w
X2NyZWQpOwotI2lmZGVmIElQU0VDCi0JCWlwc2VjX2RlbGV0ZV9wY2Jwb2xpY3koJmlucC0+aXBf
aW5wLmlucCk7Ci0jZW5kaWYKICNlbmRpZgogCQlTQ1RQX1pPTkVfRlJFRShTQ1RQX0JBU0VfSU5G
TyhpcGlfem9uZV9lcCksIGlucCk7CiAJCXJldHVybiAoRU5PQlVGUyk7CkBAIC0yOTU0LDkgKzI5
MzMsNiBAQCBzY3RwX2lucGNiX2FsbG9jKHN0cnVjdCBzb2NrZXQgKnNvLCB1aW50MzJfdCB2cmZf
aWQpCiAJCVNDVFBfSEFTSF9GUkVFKGlucC0+c2N0cF90Y2JoYXNoLCBpbnAtPnNjdHBfaGFzaG1h
cmspOwogI2lmIGRlZmluZWQoX19GcmVlQlNEX18pCiAJCWNyZnJlZShpbnAtPmlwX2lucC5pbnAu
aW5wX2NyZWQpOwotI2lmZGVmIElQU0VDCi0JCWlwc2VjX2RlbGV0ZV9wY2Jwb2xpY3koJmlucC0+
aXBfaW5wLmlucCk7Ci0jZW5kaWYKICNlbmRpZgogCQlTQ1RQX1pPTkVfRlJFRShTQ1RQX0JBU0Vf
SU5GTyhpcGlfem9uZV9lcCksIGlucCk7CiAJCXJldHVybiAoRU5PQlVGUyk7CkBAIC0yOTc2LDEy
ICsyOTUyLDYgQEAgc2N0cF9pbnBjYl9hbGxvYyhzdHJ1Y3Qgc29ja2V0ICpzbywgdWludDMyX3Qg
dnJmX2lkKQogI2VuZGlmCiAJCVNDVFBfSEFTSF9GUkVFKGlucC0+c2N0cF90Y2JoYXNoLCBpbnAt
PnNjdHBfaGFzaG1hcmspOwogCQlzby0+c29fcGNiID0gTlVMTDsKLSNpZiBkZWZpbmVkKF9fRnJl
ZUJTRF9fKQotCQljcmZyZWUoaW5wLT5pcF9pbnAuaW5wLmlucF9jcmVkKTsKLSNpZmRlZiBJUFNF
QwotCQlpcHNlY19kZWxldGVfcGNicG9saWN5KCZpbnAtPmlwX2lucC5pbnApOwotI2VuZGlmCi0j
ZW5kaWYKIAkJU0NUUF9aT05FX0ZSRUUoU0NUUF9CQVNFX0lORk8oaXBpX3pvbmVfZXApLCBpbnAp
OwogCQlTQ1RQX1VOTE9DS19FWEMoU0NUUF9CQVNFX0lORk8oc2N0YmluZm8pLmlwaV9sb2NrKTsK
IAkJU0NUUF9MVFJBQ0VfRVJSX1JFVChpbnAsIE5VTEwsIE5VTEwsIFNDVFBfRlJPTV9TQ1RQX1BD
QiwgRU5PTUVNKTsKQEAgLTQyNzEsOSArNDI0MSw2IEBAIHNjdHBfaW5wY2JfZnJlZShzdHJ1Y3Qg
c2N0cF9pbnBjYiAqaW5wLCBpbnQgaW1tZWRpYXRlLCBpbnQgZnJvbSkKIAkgKiBtYWNybyBoZXJl
IHNpbmNlIGxlX25leHQgd2lsbCBnZXQgZnJlZWQgYXMgcGFydCBvZiB0aGUKIAkgKiBzY3RwX2Zy
ZWVfYXNzb2MoKSBjYWxsLgogCSAqLwotI2lmZGVmIElQU0VDCi0JaXBzZWNfZGVsZXRlX3BjYnBv
bGljeShpcF9wY2IpOwotI2VuZGlmCiAjaWZuZGVmIF9fUGFuZGFfXwogCWlmIChpcF9wY2ItPmlu
cF9vcHRpb25zKSB7CiAJCSh2b2lkKXNjdHBfbV9mcmVlKGlwX3BjYi0+aW5wX29wdGlvbnMpOwpA
QCAtNTU4OSw3ICs1NTU2LDcgQEAgc2N0cF9mcmVlX2Fzc29jKHN0cnVjdCBzY3RwX2lucGNiICpp
bnAsIHN0cnVjdCBzY3RwX3RjYiAqc3RjYiwgaW50IGZyb21faW5wY2JmcmUKIAkJCQkJCSAqLwog
CQkJCQkJdWludDMyX3Qgc3Ryc2VxOwogCQkJCQkJc3RjYi0+YXNvYy5jb250cm9sX3BkYXBpID0g
c3E7Ci0JCQkJCQlzdHJzZXEgPSAoc3EtPnNpbmZvX3N0cmVhbSA8PCAxNikgfCBzcS0+c2luZm9f
c3NuOworCQkJCQkJc3Ryc2VxID0gKHNxLT5zaW5mb19zdHJlYW0gPDwgMTYpIHwgKHNxLT5taWQg
JiAweDAwMDBmZmZmKTsKIAkJCQkJCXNjdHBfdWxwX25vdGlmeShTQ1RQX05PVElGWV9QQVJUSUFM
X0RFTFZJRVJZX0lORElDQVRJT04sCiAJCQkJCQkgICAgICAgICAgICAgICAgc3RjYiwKIAkJCQkJ
CSAgICAgICAgICAgICAgICBTQ1RQX1BBUlRJQUxfREVMSVZFUllfQUJPUlRFRCwKQEAgLTU2ODks
NiArNTY1Niw3IEBAIHNjdHBfZnJlZV9hc3NvYyhzdHJ1Y3Qgc2N0cF9pbnBjYiAqaW5wLCBzdHJ1
Y3Qgc2N0cF90Y2IgKnN0Y2IsIGludCBmcm9tX2lucGNiZnJlCiAjZWxzZQogCQkJCXNvY2FudHJj
dm1vcmVfbG9ja2VkKHNvKTsKICNlbmRpZgorCQkJCXNvY2FudHNlbmRtb3JlKHNvKTsKIAkJCQlz
Y3RwX3Nvd3dha2V1cChpbnAsIHNvKTsKIAkJCQlzY3RwX3Nvcndha2V1cChpbnAsIHNvKTsKIAkJ
CQlTQ1RQX1NPV0FLRVVQKHNvKTsKQEAgLTU4MTcsMTEgKzU3ODUsMTEgQEAgc2N0cF9mcmVlX2Fz
c29jKHN0cnVjdCBzY3RwX2lucGNiICppbnAsIHN0cnVjdCBzY3RwX3RjYiAqc3RjYiwgaW50IGZy
b21faW5wY2JmcmUKIAl9CiAJLyogcGVuZGluZyBzZW5kIHF1ZXVlIFNIT1VMRCBiZSBlbXB0eSAq
LwogCVRBSUxRX0ZPUkVBQ0hfU0FGRShjaGssICZhc29jLT5zZW5kX3F1ZXVlLCBzY3RwX25leHQs
IG5jaGspIHsKLQkJaWYgKGFzb2MtPnN0cm1vdXRbY2hrLT5yZWMuZGF0YS5zdHJlYW1fbnVtYmVy
XS5jaHVua3Nfb25fcXVldWVzID4gMCkgewotCQkJYXNvYy0+c3RybW91dFtjaGstPnJlYy5kYXRh
LnN0cmVhbV9udW1iZXJdLmNodW5rc19vbl9xdWV1ZXMtLTsKKwkJaWYgKGFzb2MtPnN0cm1vdXRb
Y2hrLT5yZWMuZGF0YS5zaWRdLmNodW5rc19vbl9xdWV1ZXMgPiAwKSB7CisJCQlhc29jLT5zdHJt
b3V0W2Noay0+cmVjLmRhdGEuc2lkXS5jaHVua3Nfb25fcXVldWVzLS07CiAjaWZkZWYgSU5WQVJJ
QU5UUwogCQl9IGVsc2UgewotCQkJcGFuaWMoIk5vIGNodW5rcyBvbiB0aGUgcXVldWVzIGZvciBz
aWQgJXUuIiwgY2hrLT5yZWMuZGF0YS5zdHJlYW1fbnVtYmVyKTsKKwkJCXBhbmljKCJObyBjaHVu
a3Mgb24gdGhlIHF1ZXVlcyBmb3Igc2lkICV1LiIsIGNoay0+cmVjLmRhdGEuc2lkKTsKICNlbmRp
ZgogCQl9CiAJCVRBSUxRX1JFTU9WRSgmYXNvYy0+c2VuZF9xdWV1ZSwgY2hrLCBzY3RwX25leHQp
OwpAQCAtNTg0OSwxMSArNTgxNywxMSBAQCBzY3RwX2ZyZWVfYXNzb2Moc3RydWN0IHNjdHBfaW5w
Y2IgKmlucCwgc3RydWN0IHNjdHBfdGNiICpzdGNiLCBpbnQgZnJvbV9pbnBjYmZyZQogCS8qIHNl
bnQgcXVldWUgU0hPVUxEIGJlIGVtcHR5ICovCiAJVEFJTFFfRk9SRUFDSF9TQUZFKGNoaywgJmFz
b2MtPnNlbnRfcXVldWUsIHNjdHBfbmV4dCwgbmNoaykgewogCQlpZiAoY2hrLT5zZW50ICE9IFND
VFBfREFUQUdSQU1fTlJfQUNLRUQpIHsKLQkJCWlmIChhc29jLT5zdHJtb3V0W2Noay0+cmVjLmRh
dGEuc3RyZWFtX251bWJlcl0uY2h1bmtzX29uX3F1ZXVlcyA+IDApIHsKLQkJCQlhc29jLT5zdHJt
b3V0W2Noay0+cmVjLmRhdGEuc3RyZWFtX251bWJlcl0uY2h1bmtzX29uX3F1ZXVlcy0tOworCQkJ
aWYgKGFzb2MtPnN0cm1vdXRbY2hrLT5yZWMuZGF0YS5zaWRdLmNodW5rc19vbl9xdWV1ZXMgPiAw
KSB7CisJCQkJYXNvYy0+c3RybW91dFtjaGstPnJlYy5kYXRhLnNpZF0uY2h1bmtzX29uX3F1ZXVl
cy0tOwogI2lmZGVmIElOVkFSSUFOVFMKIAkJCX0gZWxzZSB7Ci0JCQkJcGFuaWMoIk5vIGNodW5r
cyBvbiB0aGUgcXVldWVzIGZvciBzaWQgJXUuIiwgY2hrLT5yZWMuZGF0YS5zdHJlYW1fbnVtYmVy
KTsKKwkJCQlwYW5pYygiTm8gY2h1bmtzIG9uIHRoZSBxdWV1ZXMgZm9yIHNpZCAldS4iLCBjaGst
PnJlYy5kYXRhLnNpZCk7CiAjZW5kaWYKIAkJCX0KIAkJfQpAQCAtNjg0NCw4ICs2ODEyLDcgQEAg
c2N0cF9wY2JfaW5pdCgpCiAJVEFJTFFfSU5JVCgmU0NUUF9CQVNFX0lORk8oY2FsbHF1ZXVlKSk7
CiAjZW5kaWYKICNpZiBkZWZpbmVkKF9fVXNlcnNwYWNlX18pCi0JbWJ1Zl9pbml0KE5VTEwpOwot
ICAgIC8vIGF0b21pY19pbml0KCk7CisJbWJ1Zl9pbml0aWFsaXplKE5VTEwpOwogI2lmIGRlZmlu
ZWQoSU5FVCkgfHwgZGVmaW5lZChJTkVUNikKIAlyZWN2X3RocmVhZF9pbml0KCk7CiAjZW5kaWYK
QEAgLTc5MjYsNyArNzg5Myw3IEBAIHNjdHBfZHJhaW5fbWJ1ZnMoc3RydWN0IHNjdHBfdGNiICpz
dGNiKQogCQkJCS8qIE5vdyBpdHMgcmVhc20/ICovCiAJCQkJVEFJTFFfRk9SRUFDSF9TQUZFKGNo
aywgJmN0bC0+cmVhc20sIHNjdHBfbmV4dCwgbmNoaykgewogCQkJCQljbnQrKzsKLQkJCQkJU0NU
UF9DQUxDX1RTTl9UT19HQVAoZ2FwLCBjaGstPnJlYy5kYXRhLlRTTl9zZXEsIGFzb2MtPm1hcHBp
bmdfYXJyYXlfYmFzZV90c24pOworCQkJCQlTQ1RQX0NBTENfVFNOX1RPX0dBUChnYXAsIGNoay0+
cmVjLmRhdGEudHNuLCBhc29jLT5tYXBwaW5nX2FycmF5X2Jhc2VfdHNuKTsKIAkJCQkJYXNvYy0+
c2l6ZV9vbl9yZWFzbV9xdWV1ZSA9IHNjdHBfc2JzcGFjZV9zdWIoYXNvYy0+c2l6ZV9vbl9yZWFz
bV9xdWV1ZSwgY2hrLT5zZW5kX3NpemUpOwogCQkJCQlzY3RwX3Vjb3VudF9kZWNyKGFzb2MtPmNu
dF9vbl9yZWFzbV9xdWV1ZSk7CiAJCQkJCVNDVFBfVU5TRVRfVFNOX1BSRVNFTlQoYXNvYy0+bWFw
cGluZ19hcnJheSwgZ2FwKTsKQEAgLTc5NjgsNyArNzkzNSw3IEBAIHNjdHBfZHJhaW5fbWJ1ZnMo
c3RydWN0IHNjdHBfdGNiICpzdGNiKQogCQkJCS8qIE5vdyBpdHMgcmVhc20/ICovCiAJCQkJVEFJ
TFFfRk9SRUFDSF9TQUZFKGNoaywgJmN0bC0+cmVhc20sIHNjdHBfbmV4dCwgbmNoaykgewogCQkJ
CQljbnQrKzsKLQkJCQkJU0NUUF9DQUxDX1RTTl9UT19HQVAoZ2FwLCBjaGstPnJlYy5kYXRhLlRT
Tl9zZXEsIGFzb2MtPm1hcHBpbmdfYXJyYXlfYmFzZV90c24pOworCQkJCQlTQ1RQX0NBTENfVFNO
X1RPX0dBUChnYXAsIGNoay0+cmVjLmRhdGEudHNuLCBhc29jLT5tYXBwaW5nX2FycmF5X2Jhc2Vf
dHNuKTsKIAkJCQkJYXNvYy0+c2l6ZV9vbl9yZWFzbV9xdWV1ZSA9IHNjdHBfc2JzcGFjZV9zdWIo
YXNvYy0+c2l6ZV9vbl9yZWFzbV9xdWV1ZSwgY2hrLT5zZW5kX3NpemUpOwogCQkJCQlzY3RwX3Vj
b3VudF9kZWNyKGFzb2MtPmNudF9vbl9yZWFzbV9xdWV1ZSk7CiAJCQkJCVNDVFBfVU5TRVRfVFNO
X1BSRVNFTlQoYXNvYy0+bWFwcGluZ19hcnJheSwgZ2FwKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGli
L3VzcnNjdHBsaWIvbmV0aW5ldC9zY3RwX3BjYi5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNyc2N0cGxpYi9uZXRp
bmV0L3NjdHBfcGNiLmgKaW5kZXggNzg0Mzc1ODcwNWUyMWY4YzI3ODU3OGEyMGE3ZDMzNDA2NDRi
ZmQzYS4uYjkzODYyNWI1YjRkZmRjNGI3OTQxZjg0YjBmZDMwYWNlYTU5YWYxYiAxMDA3NTUKLS0t
IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3Rw
L3VzcnNjdHBsaWIvdXNyc2N0cGxpYi9uZXRpbmV0L3NjdHBfcGNiLmgKKysrIGIvU291cmNlL1Ro
aXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIv
dXNyc2N0cGxpYi9uZXRpbmV0L3NjdHBfcGNiLmgKQEAgLTMyLDcgKzMyLDcgQEAKIAogI2lmZGVm
IF9fRnJlZUJTRF9fCiAjaW5jbHVkZSA8c3lzL2NkZWZzLmg+Ci1fX0ZCU0RJRCgiJEZyZWVCU0Q6
IGhlYWQvc3lzL25ldGluZXQvc2N0cF9wY2IuaCAyOTg5NDIgMjAxNi0wNS0wMiAyMDo1NjoxMVog
cGZnICQiKTsKK19fRkJTRElEKCIkRnJlZUJTRDogaGVhZC9zeXMvbmV0aW5ldC9zY3RwX3BjYi5o
IDMxMDU5MCAyMDE2LTEyLTI2IDExOjA2OjQxWiB0dWV4ZW4gJCIpOwogI2VuZGlmCiAKICNpZm5k
ZWYgX05FVElORVRfU0NUUF9QQ0JfSF8KQEAgLTM0MSw2ICszNDEsNyBAQCBzdHJ1Y3Qgc2N0cF9i
YXNlX2luZm8gewogI2VuZGlmCiAJaW50ICgqY29ubl9vdXRwdXQpKHZvaWQgKmFkZHIsIHZvaWQg
KmJ1ZmZlciwgc2l6ZV90IGxlbmd0aCwgdWludDhfdCB0b3MsIHVpbnQ4X3Qgc2V0X2RmKTsKIAl2
b2lkICgqZGVidWdfcHJpbnRmKShjb25zdCBjaGFyICpmb3JtYXQsIC4uLik7CisJaW50IGNyYzMy
Y19vZmZsb2FkZWQ7CiAjZW5kaWYKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5
L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3VzcnNjdHBs
aWIvbmV0aW5ldC9zY3RwX3BlZWxvZmYuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3VzcnNjdHBsaWIvbmV0aW5ldC9z
Y3RwX3BlZWxvZmYuaAppbmRleCA2OWY0ODA2NWNkMzZlZjg1NmRjZTQ3YWQ1ZDcwYjE1NjllYmQ2
YzUxLi4yMjM3NWUzZDMwYWY4YjJlMTZiNmEzNTRhYzczNmNjZDYwZGM2NGNiIDEwMDc1NQotLS0g
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAv
dXNyc2N0cGxpYi91c3JzY3RwbGliL25ldGluZXQvc2N0cF9wZWVsb2ZmLmgKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBs
aWIvdXNyc2N0cGxpYi9uZXRpbmV0L3NjdHBfcGVlbG9mZi5oCkBAIC0zMiw3ICszMiw3IEBACiAK
ICNpZmRlZiBfX0ZyZWVCU0RfXwogI2luY2x1ZGUgPHN5cy9jZGVmcy5oPgotX19GQlNESUQoIiRG
cmVlQlNEOiBoZWFkL3N5cy9uZXRpbmV0L3NjdHBfcGVlbG9mZi5oIDI0MzUxNiAyMDEyLTExLTI1
IDE0OjI1OjA4WiB0dWV4ZW4gJCIpOworX19GQlNESUQoIiRGcmVlQlNEOiBoZWFkL3N5cy9uZXRp
bmV0L3NjdHBfcGVlbG9mZi5oIDMwOTYwNyAyMDE2LTEyLTA2IDEwOjIxOjI1WiB0dWV4ZW4gJCIp
OwogI2VuZGlmCiAKICNpZm5kZWYgX05FVElORVRfU0NUUF9QRUVMT0ZGX0hfCmRpZmYgLS1naXQg
YS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAv
dXNyc2N0cGxpYi91c3JzY3RwbGliL25ldGluZXQvc2N0cF9zc19mdW5jdGlvbnMuYyBiL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3Rw
bGliL3VzcnNjdHBsaWIvbmV0aW5ldC9zY3RwX3NzX2Z1bmN0aW9ucy5jCmluZGV4IDAzZWFkNzk3
MWQ5MWE2ZjkzNDJjODJjMWMyNDJlMTNiY2M1ZGNhMjIuLmRlZDc5ZjZmNjI3YTkwMjBhNjk4MzFk
M2QxOTBiYzNkZTc3NWJhMDYgMTAwNzU1Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3VzcnNjdHBsaWIvbmV0aW5l
dC9zY3RwX3NzX2Z1bmN0aW9ucy5jCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9T
b3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3VzcnNjdHBsaWIvbmV0aW5ldC9z
Y3RwX3NzX2Z1bmN0aW9ucy5jCkBAIC0yOCw3ICsyOCw3IEBACiAKICNpZmRlZiBfX0ZyZWVCU0Rf
XwogI2luY2x1ZGUgPHN5cy9jZGVmcy5oPgotX19GQlNESUQoIiRGcmVlQlNEOiBoZWFkL3N5cy9u
ZXRpbmV0L3NjdHBfc3NfZnVuY3Rpb25zLmMgMzAzNzkzIDIwMTYtMDgtMDYgMTI6NTE6MDdaIHR1
ZXhlbiAkIik7CitfX0ZCU0RJRCgiJEZyZWVCU0Q6IGhlYWQvc3lzL25ldGluZXQvc2N0cF9zc19m
dW5jdGlvbnMuYyAzMTA1OTAgMjAxNi0xMi0yNiAxMTowNjo0MVogdHVleGVuICQiKTsKICNlbmRp
ZgogCiAjaW5jbHVkZSA8bmV0aW5ldC9zY3RwX3BjYi5oPgpAQCAtMjk4LDcgKzI5OCw3IEBAIHNj
dHBfc3NfcnJfYWRkKHN0cnVjdCBzY3RwX3RjYiAqc3RjYiwgc3RydWN0IHNjdHBfYXNzb2NpYXRp
b24gKmFzb2MsCiAJCQlUQUlMUV9JTlNFUlRfSEVBRCgmYXNvYy0+c3NfZGF0YS5vdXQud2hlZWws
IHN0cnEsIHNzX3BhcmFtcy5yci5uZXh0X3Nwb2tlKTsKIAkJfSBlbHNlIHsKIAkJCXN0cnF0ID0g
VEFJTFFfRklSU1QoJmFzb2MtPnNzX2RhdGEub3V0LndoZWVsKTsKLQkJCXdoaWxlIChzdHJxdCAh
PSBOVUxMICYmIChzdHJxdC0+c3RyZWFtX25vIDwgc3RycS0+c3RyZWFtX25vKSkgeworCQkJd2hp
bGUgKHN0cnF0ICE9IE5VTEwgJiYgKHN0cnF0LT5zaWQgPCBzdHJxLT5zaWQpKSB7CiAJCQkJc3Ry
cXQgPSBUQUlMUV9ORVhUKHN0cnF0LCBzc19wYXJhbXMucnIubmV4dF9zcG9rZSk7CiAJCQl9CiAJ
CQlpZiAoc3RycXQgIT0gTlVMTCkgewpAQCAtODY1LDcgKzg2NSw3IEBAIHNjdHBfc3NfZmNmc19z
ZWxlY3Qoc3RydWN0IHNjdHBfdGNiICpzdGNiIFNDVFBfVU5VU0VELCBzdHJ1Y3Qgc2N0cF9uZXRz
ICpuZXQsCiAJc3AgPSBUQUlMUV9GSVJTVCgmYXNvYy0+c3NfZGF0YS5vdXQubGlzdCk7CiBkZWZh
dWx0X2FnYWluOgogCWlmIChzcCAhPSBOVUxMKSB7Ci0JCXN0cnEgPSAmYXNvYy0+c3RybW91dFtz
cC0+c3RyZWFtXTsKKwkJc3RycSA9ICZhc29jLT5zdHJtb3V0W3NwLT5zaWRdOwogCX0gZWxzZSB7
CiAJCXN0cnEgPSBOVUxMOwogCX0KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndl
YnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3VzcnNjdHBsaWIvbmV0
aW5ldC9zY3RwX3N0cnVjdHMuaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3VzcnNjdHBsaWIvbmV0aW5ldC9zY3RwX3N0
cnVjdHMuaAppbmRleCA0ODNiODIxZDkxZThhMjExYTBmMDMwNDY1YTNkOThlNjc1NTZhMTVmLi5i
NWYzZWYyNWZmYWI4MGE3MjAyODVlMTBhMDI4YWRhNzhlYjM0Zjc5IDEwMDc1NQotLS0gYS9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0
cGxpYi91c3JzY3RwbGliL25ldGluZXQvc2N0cF9zdHJ1Y3RzLmgKKysrIGIvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNy
c2N0cGxpYi9uZXRpbmV0L3NjdHBfc3RydWN0cy5oCkBAIC0zMiw3ICszMiw3IEBACiAKICNpZmRl
ZiBfX0ZyZWVCU0RfXwogI2luY2x1ZGUgPHN5cy9jZGVmcy5oPgotX19GQlNESUQoIiRGcmVlQlNE
OiBoZWFkL3N5cy9uZXRpbmV0L3NjdHBfc3RydWN0cy5oIDMwMzc5MiAyMDE2LTA4LTA2IDEyOjMz
OjE1WiB0dWV4ZW4gJCIpOworX19GQlNESUQoIiRGcmVlQlNEOiBoZWFkL3N5cy9uZXRpbmV0L3Nj
dHBfc3RydWN0cy5oIDMxMDU5MCAyMDE2LTEyLTI2IDExOjA2OjQxWiB0dWV4ZW4gJCIpOwogI2Vu
ZGlmCiAKICNpZm5kZWYgX05FVElORVRfU0NUUF9TVFJVQ1RTX0hfCkBAIC00NDYsMTAgKzQ0Niwx
MCBAQCBzdHJ1Y3Qgc2N0cF9uZXRzIHsKIAogCiBzdHJ1Y3Qgc2N0cF9kYXRhX2NodW5rcmVjIHsK
LQl1aW50MzJfdCBUU05fc2VxOwkvKiB0aGUgVFNOIG9mIHRoaXMgdHJhbnNtaXQgKi8KLQl1aW50
MzJfdCBzdHJlYW1fc2VxOwkvKiB0aGUgc3RyZWFtIHNlcXVlbmNlIG51bWJlciBvZiB0aGlzIHRy
YW5zbWl0ICovCi0JdWludDE2X3Qgc3RyZWFtX251bWJlcjsJLyogdGhlIHN0cmVhbSBudW1iZXIg
b2YgdGhpcyBndXkgKi8KLQl1aW50MzJfdCBwYXlsb2FkdHlwZTsKKwl1aW50MzJfdCB0c247CQkv
KiB0aGUgVFNOIG9mIHRoaXMgdHJhbnNtaXQgKi8KKwl1aW50MzJfdCBtaWQ7CQkvKiB0aGUgbWVz
c2FnZSBpZGVudGlmaWVyIG9mIHRoaXMgdHJhbnNtaXQgKi8KKwl1aW50MTZfdCBzaWQ7CQkvKiB0
aGUgc3RyZWFtIG51bWJlciBvZiB0aGlzIGd1eSAqLworCXVpbnQzMl90IHBwaWQ7CiAJdWludDMy
X3QgY29udGV4dDsJLyogZnJvbSBzZW5kICovCiAJdWludDMyX3QgY3duZF9hdF9zZW5kOwogCS8q
CkBAIC00NTgsNyArNDU4LDcgQEAgc3RydWN0IHNjdHBfZGF0YV9jaHVua3JlYyB7CiAJICovCiAJ
dWludDMyX3QgZmFzdF9yZXRyYW5fdHNuOwkvKiBzZW5kaW5nX3NlcSBhdCB0aGUgdGltZSBvZiBG
UiAqLwogCXN0cnVjdCB0aW1ldmFsIHRpbWV0b2Ryb3A7CS8qIHRpbWUgd2UgZHJvcCBpdCBmcm9t
IHF1ZXVlICovCi0JdWludDMyX3QgZnNuX251bTsJCS8qIEZyYWdtZW50IFNlcXVlbmNlIE51bWJl
ciAqLworCXVpbnQzMl90IGZzbjsJCQkvKiBGcmFnbWVudCBTZXF1ZW5jZSBOdW1iZXIgKi8KIAl1
aW50OF90IGRvaW5nX2Zhc3RfcmV0cmFuc21pdDsKIAl1aW50OF90IHJjdl9mbGFnczsJLyogZmxh
Z3MgcHVsbGVkIGZyb20gZGF0YSBjaHVuayBvbiBpbmJvdW5kIGZvcgogCQkJCSAqIG91dGJvdW5k
IGhvbGRzIHNlbmRpbmcgZmxhZ3MgZm9yIFBSLVNDVFAuCkBAIC01MTMsNyArNTEzLDYgQEAgc3Ry
dWN0IHNjdHBfdG1pdF9jaHVuayB7CiAKIHN0cnVjdCBzY3RwX3F1ZXVlZF90b19yZWFkIHsJLyog
c2luZm8gc3RydWN0dXJlIFBsdXNlIG1vcmUgKi8KIAl1aW50MTZfdCBzaW5mb19zdHJlYW07CS8q
IG9mZiB0aGUgd2lyZSAqLwotCXVpbnQzMl90IHNpbmZvX3NzbjsJLyogb2ZmIHRoZSB3aXJlICov
CiAJdWludDE2X3Qgc2luZm9fZmxhZ3M7CS8qIFNDVFBfVU5PUkRFUkVEIGZyb20gd2lyZSB1c2Ug
U0NUUF9FT0YgZm9yCiAJCQkJICogRU9SICovCiAJdWludDMyX3Qgc2luZm9fcHBpZDsJLyogb2Zm
IHRoZSB3aXJlICovCkBAIC01MjMsNyArNTIyLDcgQEAgc3RydWN0IHNjdHBfcXVldWVkX3RvX3Jl
YWQgewkvKiBzaW5mbyBzdHJ1Y3R1cmUgUGx1c2UgbW9yZSAqLwogCXVpbnQzMl90IHNpbmZvX2N1
bXRzbjsJLyogVXNlIHRoaXMgaW4gcmVhc3NlbWJseSBhcyBsYXN0IFRTTiAqLwogCXNjdHBfYXNz
b2NfdCBzaW5mb19hc3NvY19pZDsJLyogb3VyIGFzc29jIGlkICovCiAJLyogTm9uIHNpbmZvIHN0
dWZmICovCi0JdWludDMyX3QgbXNnX2lkOwkvKiBGcmFnbWVudCBJbmRleCAqLworCXVpbnQzMl90
IG1pZDsJCS8qIEZyYWdtZW50IEluZGV4ICovCiAJdWludDMyX3QgbGVuZ3RoOwkvKiBsZW5ndGgg
b2YgZGF0YSAqLwogCXVpbnQzMl90IGhlbGRfbGVuZ3RoOwkvKiBsZW5ndGggaGVsZCBpbiBzYiAq
LwogCXVpbnQzMl90IHRvcF9mc247CS8qIEhpZ2hlc3QgRlNOIGluIHF1ZXVlICovCkBAIC01ODQs
NyArNTgzLDcgQEAgc3RydWN0IHNjdHBfc3RyZWFtX3F1ZXVlX3BlbmRpbmcgewogCXVpbnQzMl90
IHBwaWQ7CiAJdWludDMyX3QgY29udGV4dDsKIAl1aW50MTZfdCBzaW5mb19mbGFnczsKLQl1aW50
MTZfdCBzdHJlYW07CisJdWludDE2X3Qgc2lkOwogCXVpbnQxNl90IGFjdF9mbGFnczsKIAl1aW50
MTZfdCBhdXRoX2tleWlkOwogCXVpbnQ4X3QgIGhvbGRzX2tleV9yZWY7CkBAIC02MDMsOCArNjAy
LDggQEAgVEFJTFFfSEVBRChzY3Rwd2hlZWx1bnJlbF9saXN0aGVhZCwgc2N0cF9zdHJlYW1faW4p
Owogc3RydWN0IHNjdHBfc3RyZWFtX2luIHsKIAlzdHJ1Y3Qgc2N0cF9yZWFkaGVhZCBpbnF1ZXVl
OwogCXN0cnVjdCBzY3RwX3JlYWRoZWFkIHVub19pbnF1ZXVlOwotCXVpbnQzMl90IGxhc3Rfc2Vx
dWVuY2VfZGVsaXZlcmVkOwkvKiB1c2VkIGZvciByZS1vcmRlciAqLwotCXVpbnQxNl90IHN0cmVh
bV9ubzsKKwl1aW50MzJfdCBsYXN0X21pZF9kZWxpdmVyZWQ7CS8qIHVzZWQgZm9yIHJlLW9yZGVy
ICovCisJdWludDE2X3Qgc2lkOwogCXVpbnQ4X3QgIGRlbGl2ZXJ5X3N0YXJ0ZWQ7CiAJdWludDhf
dCAgcGRfYXBpX3N0YXJ0ZWQ7CiB9OwpAQCAtNjg2LDcgKzY4NSw3IEBAIHN0cnVjdCBzY3RwX3N0
cmVhbV9vdXQgewogCSAqLwogCXVpbnQzMl90IG5leHRfbWlkX29yZGVyZWQ7CiAJdWludDMyX3Qg
bmV4dF9taWRfdW5vcmRlcmVkOwotCXVpbnQxNl90IHN0cmVhbV9ubzsKKwl1aW50MTZfdCBzaWQ7
CiAJdWludDhfdCBsYXN0X21zZ19pbmNvbXBsZXRlOwogCXVpbnQ4X3Qgc3RhdGU7CiB9OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91
c3JzY3RwL3VzcnNjdHBsaWIvdXNyc2N0cGxpYi9uZXRpbmV0L3NjdHBfc3lzY3RsLmMgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0
cGxpYi91c3JzY3RwbGliL25ldGluZXQvc2N0cF9zeXNjdGwuYwppbmRleCA2OGI2ZGEwNjU0MTE4
NDk3NmY2ZWQ0NTA0YmI0ZDJkNWZkNjQ1NGY0Li44ZjgxYjBhOGVhNDEyNzU1ZDFjZmExYzI0YmZl
ZWM3NzhiY2E1M2UzIDEwMDc1NQotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi91c3JzY3RwbGliL25ldGluZXQvc2N0
cF9zeXNjdGwuYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi91c3JzY3RwbGliL25ldGluZXQvc2N0cF9zeXNjdGwu
YwpAQCAtMzIsNyArMzIsNyBAQAogCiAjaWZkZWYgX19GcmVlQlNEX18KICNpbmNsdWRlIDxzeXMv
Y2RlZnMuaD4KLV9fRkJTRElEKCIkRnJlZUJTRDogaGVhZC9zeXMvbmV0aW5ldC9zY3RwX3N5c2N0
bC5jIDMwMzAyNCAyMDE2LTA3LTE5IDA5OjQ4OjA4WiB0dWV4ZW4gJCIpOworX19GQlNESUQoIiRG
cmVlQlNEOiBoZWFkL3N5cy9uZXRpbmV0L3NjdHBfc3lzY3RsLmMgMzEwNTkwIDIwMTYtMTItMjYg
MTE6MDY6NDFaIHR1ZXhlbiAkIik7CiAjZW5kaWYKIAogI2luY2x1ZGUgPG5ldGluZXQvc2N0cF9v
cy5oPgpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGly
ZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNyc2N0cGxpYi9uZXRpbmV0L3NjdHBfdGltZXIu
YyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0
cC91c3JzY3RwbGliL3VzcnNjdHBsaWIvbmV0aW5ldC9zY3RwX3RpbWVyLmMKaW5kZXggNDI0MWRl
YjcxZWI0ZGM1MGRhMGQzMTFhMjQyODlkN2Y4NDdjOWQ0Yy4uMWMxYTRmZTEwMjhiZmJmMzEwYTg0
NjcxYjFkYjU4MDgwNDI2ZmU4OCAxMDA3NTUKLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNyc2N0cGxpYi9uZXRp
bmV0L3NjdHBfdGltZXIuYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNl
L3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi91c3JzY3RwbGliL25ldGluZXQvc2N0cF90
aW1lci5jCkBAIC0zMiw3ICszMiw3IEBACiAKICNpZmRlZiBfX0ZyZWVCU0RfXwogI2luY2x1ZGUg
PHN5cy9jZGVmcy5oPgotX19GQlNESUQoIiRGcmVlQlNEOiBoZWFkL3N5cy9uZXRpbmV0L3NjdHBf
dGltZXIuYyAyOTkyNzMgMjAxNi0wNS0wOSAxNjozNTowNVogdHVleGVuICQiKTsKK19fRkJTRElE
KCIkRnJlZUJTRDogaGVhZC9zeXMvbmV0aW5ldC9zY3RwX3RpbWVyLmMgMzEzMDMwIDIwMTctMDEt
MzEgMjM6MzQ6MDJaIHR1ZXhlbiAkIik7CiAjZW5kaWYKIAogI2RlZmluZSBfSVBfVkhMCkBAIC00
MjksMTcgKzQyOSwxNyBAQCBzY3RwX3JlY292ZXJfc2VudF9saXN0KHN0cnVjdCBzY3RwX3RjYiAq
c3RjYikKIAogCWFzb2MgPSAmc3RjYi0+YXNvYzsKIAlUQUlMUV9GT1JFQUNIX1NBRkUoY2hrLCAm
YXNvYy0+c2VudF9xdWV1ZSwgc2N0cF9uZXh0LCBuY2hrKSB7Ci0JCWlmIChTQ1RQX1RTTl9HRShh
c29jLT5sYXN0X2Fja2VkX3NlcSwgY2hrLT5yZWMuZGF0YS5UU05fc2VxKSkgeworCQlpZiAoU0NU
UF9UU05fR0UoYXNvYy0+bGFzdF9hY2tlZF9zZXEsIGNoay0+cmVjLmRhdGEudHNuKSkgewogCQkJ
U0NUUF9QUklOVEYoIkZvdW5kIGNoazolcCB0c246JXggPD0gbGFzdF9hY2tlZF9zZXE6JXhcbiIs
Ci0JCQkgICAgICAgICAgICAodm9pZCAqKWNoaywgY2hrLT5yZWMuZGF0YS5UU05fc2VxLCBhc29j
LT5sYXN0X2Fja2VkX3NlcSk7CisJCQkgICAgICAgICAgICAodm9pZCAqKWNoaywgY2hrLT5yZWMu
ZGF0YS50c24sIGFzb2MtPmxhc3RfYWNrZWRfc2VxKTsKIAkJCWlmIChjaGstPnNlbnQgIT0gU0NU
UF9EQVRBR1JBTV9OUl9BQ0tFRCkgewotCQkJCWlmIChhc29jLT5zdHJtb3V0W2Noay0+cmVjLmRh
dGEuc3RyZWFtX251bWJlcl0uY2h1bmtzX29uX3F1ZXVlcyA+IDApIHsKLQkJCQkJYXNvYy0+c3Ry
bW91dFtjaGstPnJlYy5kYXRhLnN0cmVhbV9udW1iZXJdLmNodW5rc19vbl9xdWV1ZXMtLTsKKwkJ
CQlpZiAoYXNvYy0+c3RybW91dFtjaGstPnJlYy5kYXRhLnNpZF0uY2h1bmtzX29uX3F1ZXVlcyA+
IDApIHsKKwkJCQkJYXNvYy0+c3RybW91dFtjaGstPnJlYy5kYXRhLnNpZF0uY2h1bmtzX29uX3F1
ZXVlcy0tOwogCQkJCX0KIAkJCX0KLQkJCWlmICgoYXNvYy0+c3RybW91dFtjaGstPnJlYy5kYXRh
LnN0cmVhbV9udW1iZXJdLmNodW5rc19vbl9xdWV1ZXMgPT0gMCkgJiYKLQkJCSAgICAoYXNvYy0+
c3RybW91dFtjaGstPnJlYy5kYXRhLnN0cmVhbV9udW1iZXJdLnN0YXRlID09IFNDVFBfU1RSRUFN
X1JFU0VUX1BFTkRJTkcpICYmCi0JCQkgICAgVEFJTFFfRU1QVFkoJmFzb2MtPnN0cm1vdXRbY2hr
LT5yZWMuZGF0YS5zdHJlYW1fbnVtYmVyXS5vdXRxdWV1ZSkpIHsKKwkJCWlmICgoYXNvYy0+c3Ry
bW91dFtjaGstPnJlYy5kYXRhLnNpZF0uY2h1bmtzX29uX3F1ZXVlcyA9PSAwKSAmJgorCQkJICAg
IChhc29jLT5zdHJtb3V0W2Noay0+cmVjLmRhdGEuc2lkXS5zdGF0ZSA9PSBTQ1RQX1NUUkVBTV9S
RVNFVF9QRU5ESU5HKSAmJgorCQkJICAgIFRBSUxRX0VNUFRZKCZhc29jLT5zdHJtb3V0W2Noay0+
cmVjLmRhdGEuc2lkXS5vdXRxdWV1ZSkpIHsKIAkJCQlhc29jLT50cmlnZ2VyX3Jlc2V0ID0gMTsK
IAkJCX0KIAkJCVRBSUxRX1JFTU9WRSgmYXNvYy0+c2VudF9xdWV1ZSwgY2hrLCBzY3RwX25leHQp
OwpAQCAtNDYyLDcgKzQ2Miw3IEBAIHNjdHBfcmVjb3Zlcl9zZW50X2xpc3Qoc3RydWN0IHNjdHBf
dGNiICpzdGNiKQogCX0KIAlTQ1RQX1BSSU5URigiYWZ0ZXIgcmVjb3ZlciBvcmRlciBpcyBhcyBm
b2xsb3dzXG4iKTsKIAlUQUlMUV9GT1JFQUNIKGNoaywgJmFzb2MtPnNlbnRfcXVldWUsIHNjdHBf
bmV4dCkgewotCQlTQ1RQX1BSSU5URigiY2hrOiVwIFRTTjoleFxuIiwgKHZvaWQgKiljaGssIGNo
ay0+cmVjLmRhdGEuVFNOX3NlcSk7CisJCVNDVFBfUFJJTlRGKCJjaGs6JXAgVFNOOiV4XG4iLCAo
dm9pZCAqKWNoaywgY2hrLT5yZWMuZGF0YS50c24pOwogCX0KIH0KICNlbmRpZgpAQCAtNTUwLDEw
ICs1NTAsMTAgQEAgc2N0cF9tYXJrX2FsbF9mb3JfcmVzZW5kKHN0cnVjdCBzY3RwX3RjYiAqc3Rj
YiwKICBzdGFydF9hZ2FpbjoKICNlbmRpZgogCVRBSUxRX0ZPUkVBQ0hfU0FGRShjaGssICZzdGNi
LT5hc29jLnNlbnRfcXVldWUsIHNjdHBfbmV4dCwgbmNoaykgewotCQlpZiAoU0NUUF9UU05fR0Uo
c3RjYi0+YXNvYy5sYXN0X2Fja2VkX3NlcSwgY2hrLT5yZWMuZGF0YS5UU05fc2VxKSkgeworCQlp
ZiAoU0NUUF9UU05fR0Uoc3RjYi0+YXNvYy5sYXN0X2Fja2VkX3NlcSwgY2hrLT5yZWMuZGF0YS50
c24pKSB7CiAJCQkvKiBTdHJhbmdlIGNhc2Ugb3VyIGxpc3QgZ290IG91dCBvZiBvcmRlcj8gKi8K
IAkJCVNDVFBfUFJJTlRGKCJPdXIgbGlzdCBpcyBvdXQgb2Ygb3JkZXI/IGxhc3RfYWNrZWQ6JXgg
Y2hrOiV4XG4iLAotCQkJICAgICAgICAgICAgKHVuc2lnbmVkIGludClzdGNiLT5hc29jLmxhc3Rf
YWNrZWRfc2VxLCAodW5zaWduZWQgaW50KWNoay0+cmVjLmRhdGEuVFNOX3NlcSk7CisJCQkgICAg
ICAgICAgICAodW5zaWduZWQgaW50KXN0Y2ItPmFzb2MubGFzdF9hY2tlZF9zZXEsICh1bnNpZ25l
ZCBpbnQpY2hrLT5yZWMuZGF0YS50c24pOwogCQkJcmVjb3ZlcnlfY250Kys7CiAjaWZkZWYgSU5W
QVJJQU5UUwogCQkJcGFuaWMoImxhc3QgYWNrZWQgPj0gY2hrIG9uIHNlbnQtUSIpOwpAQCAtNTc4
LDcgKzU3OCw3IEBAIHNjdHBfbWFya19hbGxfZm9yX3Jlc2VuZChzdHJ1Y3Qgc2N0cF90Y2IgKnN0
Y2IsCiAKIAkJCS8qIHZhbGlkYXRlIGl0cyBiZWVuIG91dHN0YW5kaW5nIGxvbmcgZW5vdWdoICov
CiAJCQlpZiAoU0NUUF9CQVNFX1NZU0NUTChzY3RwX2xvZ2dpbmdfbGV2ZWwpICYgU0NUUF9GUl9M
T0dHSU5HX0VOQUJMRSkgewotCQkJCXNjdHBfbG9nX2ZyKGNoay0+cmVjLmRhdGEuVFNOX3NlcSwK
KwkJCQlzY3RwX2xvZ19mcihjaGstPnJlYy5kYXRhLnRzbiwKIAkJCQkJICAgIGNoay0+c2VudF9y
Y3ZfdGltZS50dl9zZWMsCiAJCQkJCSAgICBjaGstPnNlbnRfcmN2X3RpbWUudHZfdXNlYywKIAkJ
CQkJICAgIFNDVFBfRlJfVDNfTUFSS19USU1FKTsKQEAgLTY0NiwxMSArNjQ2LDExIEBAIHNjdHBf
bWFya19hbGxfZm9yX3Jlc2VuZChzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsCiAJCQkJbnVtX21rKys7
CiAJCQkJaWYgKGZpciA9PSAwKSB7CiAJCQkJCWZpciA9IDE7Ci0JCQkJCXRzbmZpcnN0ID0gY2hr
LT5yZWMuZGF0YS5UU05fc2VxOworCQkJCQl0c25maXJzdCA9IGNoay0+cmVjLmRhdGEudHNuOwog
CQkJCX0KLQkJCQl0c25sYXN0ID0gY2hrLT5yZWMuZGF0YS5UU05fc2VxOworCQkJCXRzbmxhc3Qg
PSBjaGstPnJlYy5kYXRhLnRzbjsKIAkJCQlpZiAoU0NUUF9CQVNFX1NZU0NUTChzY3RwX2xvZ2dp
bmdfbGV2ZWwpICYgU0NUUF9GUl9MT0dHSU5HX0VOQUJMRSkgewotCQkJCQlzY3RwX2xvZ19mcihj
aGstPnJlYy5kYXRhLlRTTl9zZXEsIGNoay0+c25kX2NvdW50LAorCQkJCQlzY3RwX2xvZ19mcihj
aGstPnJlYy5kYXRhLnRzbiwgY2hrLT5zbmRfY291bnQsCiAJCQkJCQkgICAgMCwgU0NUUF9GUl9U
M19NQVJLRUQpOwogCQkJCX0KIApAQCAtNjY2LDcgKzY2Niw3IEBAIHNjdHBfbWFya19hbGxfZm9y
X3Jlc2VuZChzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsCiAJCQkJCQkgICAgICAgY2hrLT53aG9Uby0+
ZmxpZ2h0X3NpemUsCiAJCQkJCQkgICAgICAgY2hrLT5ib29rX3NpemUsCiAJCQkJCQkgICAgICAg
KHVpbnQzMl90KSh1aW50cHRyX3QpY2hrLT53aG9UbywKLQkJCQkJCSAgICAgICBjaGstPnJlYy5k
YXRhLlRTTl9zZXEpOworCQkJCQkJICAgICAgIGNoay0+cmVjLmRhdGEudHNuKTsKIAkJCQl9CiAJ
CQkJc2N0cF9mbGlnaHRfc2l6ZV9kZWNyZWFzZShjaGspOwogCQkJCXNjdHBfdG90YWxfZmxpZ2h0
X2RlY3JlYXNlKHN0Y2IsIGNoayk7CkBAIC02OTYsNyArNjk2LDcgQEAgc2N0cF9tYXJrX2FsbF9m
b3JfcmVzZW5kKHN0cnVjdCBzY3RwX3RjYiAqc3RjYiwKIAkJCQlpZiAoVEFJTFFfRU1QVFkoJnN0
Y2ItPmFzb2Muc2VuZF9xdWV1ZSkpIHsKIAkJCQkJY2hrLT5yZWMuZGF0YS5mYXN0X3JldHJhbl90
c24gPSBzdGNiLT5hc29jLnNlbmRpbmdfc2VxOwogCQkJCX0gZWxzZSB7Ci0JCQkJCWNoay0+cmVj
LmRhdGEuZmFzdF9yZXRyYW5fdHNuID0gKFRBSUxRX0ZJUlNUKCZzdGNiLT5hc29jLnNlbmRfcXVl
dWUpKS0+cmVjLmRhdGEuVFNOX3NlcTsKKwkJCQkJY2hrLT5yZWMuZGF0YS5mYXN0X3JldHJhbl90
c24gPSAoVEFJTFFfRklSU1QoJnN0Y2ItPmFzb2Muc2VuZF9xdWV1ZSkpLT5yZWMuZGF0YS50c247
CiAJCQkJfQogCQkJfQogCQkJLyogQ01UOiBEbyBub3QgYWxsb3cgRlJzIG9uIHJldHJhbnNtaXR0
ZWQgVFNOcy4KQEAgLTcyNiwxMyArNzI2LDkgQEAgc2N0cF9tYXJrX2FsbF9mb3JfcmVzZW5kKHN0
cnVjdCBzY3RwX3RjYiAqc3RjYiwKIAlpZiAobnVtX21rKSB7CiAJCVNDVFBEQkcoU0NUUF9ERUJV
R19USU1FUjEsICJMQVNUIFRTTiBtYXJrZWQgd2FzICV4XG4iLAogCQkJdHNubGFzdCk7Ci0JCVND
VFBEQkcoU0NUUF9ERUJVR19USU1FUjEsICJOdW0gbWFya2VkIGZvciByZXRyYW5zbWlzc2lvbiB3
YXMgJWQgcGVlci1yd2Q6JWxkXG4iLAotCQkJbnVtX21rLCAodV9sb25nKXN0Y2ItPmFzb2MucGVl
cnNfcnduZCk7Ci0JCVNDVFBEQkcoU0NUUF9ERUJVR19USU1FUjEsICJMQVNUIFRTTiBtYXJrZWQg
d2FzICV4XG4iLAotCQkJdHNubGFzdCk7Ci0JCVNDVFBEQkcoU0NUUF9ERUJVR19USU1FUjEsICJO
dW0gbWFya2VkIGZvciByZXRyYW5zbWlzc2lvbiB3YXMgJWQgcGVlci1yd2Q6JWRcbiIsCisJCVND
VFBEQkcoU0NUUF9ERUJVR19USU1FUjEsICJOdW0gbWFya2VkIGZvciByZXRyYW5zbWlzc2lvbiB3
YXMgJWQgcGVlci1yd2Q6JXVcbiIsCiAJCQludW1fbWssCi0JCQkoaW50KXN0Y2ItPmFzb2MucGVl
cnNfcnduZCk7CisJCQlzdGNiLT5hc29jLnBlZXJzX3J3bmQpOwogCX0KICNlbmRpZgogCSpudW1f
bWFya2VkID0gbnVtX21rOwpAQCAtNzk0LDcgKzc5MCw3IEBAIHNjdHBfbWFya19hbGxfZm9yX3Jl
c2VuZChzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsCiAJCQkJCQkgICAgICAgY2hrLT53aG9Uby0+Zmxp
Z2h0X3NpemUsCiAJCQkJCQkgICAgICAgY2hrLT5ib29rX3NpemUsCiAJCQkJCQkgICAgICAgKHVp
bnQzMl90KSh1aW50cHRyX3QpY2hrLT53aG9UbywKLQkJCQkJCSAgICAgICBjaGstPnJlYy5kYXRh
LlRTTl9zZXEpOworCQkJCQkJICAgICAgIGNoay0+cmVjLmRhdGEudHNuKTsKIAkJCQl9CiAKIAkJ
CQlzY3RwX2ZsaWdodF9zaXplX2luY3JlYXNlKGNoayk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhp
cmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi91
c3JzY3RwbGliL25ldGluZXQvc2N0cF91aW8uaCBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3VzcnNjdHBsaWIvbmV0aW5l
dC9zY3RwX3Vpby5oCmluZGV4IGI5MTMyOWNkODY4YWFkNjQ0YjFlMGVjNDE2NDFhY2NjNmNjODVi
YmYuLmM0Njk4OWIwMjlmN2Q3M2Y0ZTkwNjRiMjg5ZTQ3NTk2YzQ5MmNkNGYgMTAwNzU1Ci0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91
c3JzY3RwbGliL3VzcnNjdHBsaWIvbmV0aW5ldC9zY3RwX3Vpby5oCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3Vz
cnNjdHBsaWIvbmV0aW5ldC9zY3RwX3Vpby5oCkBAIC0zMiw3ICszMiw3IEBACiAKICNpZmRlZiBf
X0ZyZWVCU0RfXwogI2luY2x1ZGUgPHN5cy9jZGVmcy5oPgotX19GQlNESUQoIiRGcmVlQlNEOiBo
ZWFkL3N5cy9uZXRpbmV0L3NjdHBfdWlvLmggMzAyOTUwIDIwMTYtMDctMTcgMTM6MzM6MzVaIHR1
ZXhlbiAkIik7CitfX0ZCU0RJRCgiJEZyZWVCU0Q6IGhlYWQvc3lzL25ldGluZXQvc2N0cF91aW8u
aCAzMDk2MDcgMjAxNi0xMi0wNiAxMDoyMToyNVogdHVleGVuICQiKTsKICNlbmRpZgogCiAjaWZu
ZGVmIF9ORVRJTkVUX1NDVFBfVUlPX0hfCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi91c3JzY3RwbGli
L25ldGluZXQvc2N0cF91c3JyZXEuYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3Vy
Y2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3VzcnNjdHBsaWIvbmV0aW5ldC9zY3Rw
X3VzcnJlcS5jCmluZGV4IDRjOTQxMDNiZGMxN2ZlYjNmMzIyYzA4MjgzNzYxMTUwNDI0Njk2M2Qu
LmFhMzdhNzA4YzI4OGZhOWRjYjJhNDY5MjY4NWJmMDVlYTBjYzg1NWMgMTAwNzU1Ci0tLSBhL1Nv
dXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3Jz
Y3RwbGliL3VzcnNjdHBsaWIvbmV0aW5ldC9zY3RwX3VzcnJlcS5jCisrKyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3Vz
cnNjdHBsaWIvbmV0aW5ldC9zY3RwX3VzcnJlcS5jCkBAIC0zMiw3ICszMiw3IEBACiAKICNpZmRl
ZiBfX0ZyZWVCU0RfXwogI2luY2x1ZGUgPHN5cy9jZGVmcy5oPgotX19GQlNESUQoIiRGcmVlQlNE
OiBoZWFkL3N5cy9uZXRpbmV0L3NjdHBfdXNycmVxLmMgMzA0NTczIDIwMTYtMDgtMjIgMDA6NDA6
NDVaIHR1ZXhlbiAkIik7CitfX0ZCU0RJRCgiJEZyZWVCU0Q6IGhlYWQvc3lzL25ldGluZXQvc2N0
cF91c3JyZXEuYyAzMTMwMzEgMjAxNy0wMS0zMSAyMzozNjozMVogdHVleGVuICQiKTsKICNlbmRp
ZgogCiAjaW5jbHVkZSA8bmV0aW5ldC9zY3RwX29zLmg+CkBAIC0xNDcsNiArMTQ3LDcgQEAgc2N0
cF9pbml0KHZvaWQpCiAJU0NUUF9CQVNFX1ZBUih0aW1lcl90aHJlYWRfc2hvdWxkX2V4aXQpID0g
MDsKIAlTQ1RQX0JBU0VfVkFSKGNvbm5fb3V0cHV0KSA9IGNvbm5fb3V0cHV0OwogCVNDVFBfQkFT
RV9WQVIoZGVidWdfcHJpbnRmKSA9IGRlYnVnX3ByaW50ZjsKKwlTQ1RQX0JBU0VfVkFSKGNyYzMy
Y19vZmZsb2FkZWQpID0gMDsKICNlbmRpZgogCXNjdHBfcGNiX2luaXQoKTsKICNpZiBkZWZpbmVk
KF9fVXNlcnNwYWNlX18pCkBAIC0yNTQsNyArMjU1LDcgQEAgc2N0cF9wYXRobXR1X2FkanVzdG1l
bnQoc3RydWN0IHNjdHBfdGNiICpzdGNiLCB1aW50MTZfdCBueHRzeikKIAkvKiBBZGp1c3QgdGhh
dCB0b28gKi8KIAlzdGNiLT5hc29jLnNtYWxsZXN0X210dSA9IG54dHN6OwogCS8qIG5vdyBvZmYg
dG8gc3VidHJhY3QgSVBfREYgZmxhZyBpZiBuZWVkZWQgKi8KLQlvdmVyaGVhZCA9IElQX0hEUl9T
SVpFOworCW92ZXJoZWFkID0gSVBfSERSX1NJWkUgKyBzaXplb2Yoc3RydWN0IHNjdHBoZHIpOwog
CWlmIChzY3RwX2F1dGhfaXNfcmVxdWlyZWRfY2h1bmsoU0NUUF9EQVRBLCBzdGNiLT5hc29jLnBl
ZXJfYXV0aF9jaHVua3MpKSB7CiAJCW92ZXJoZWFkICs9IHNjdHBfZ2V0X2F1dGhfY2h1bmtfbGVu
KHN0Y2ItPmFzb2MucGVlcl9obWFjX2lkKTsKIAl9CkBAIC0yODEsNyArMjgyLDcgQEAgc2N0cF9w
YXRobXR1X2FkanVzdG1lbnQoc3RydWN0IHNjdHBfdGNiICpzdGNiLCB1aW50MTZfdCBueHRzeikK
IAkJCQkJCSAgICAgICBjaGstPndob1RvLT5mbGlnaHRfc2l6ZSwKIAkJCQkJCSAgICAgICBjaGst
PmJvb2tfc2l6ZSwKIAkJCQkJCSAgICAgICAodWludDMyX3QpKHVpbnRwdHJfdCljaGstPndob1Rv
LAotCQkJCQkJICAgICAgIGNoay0+cmVjLmRhdGEuVFNOX3NlcSk7CisJCQkJCQkgICAgICAgY2hr
LT5yZWMuZGF0YS50c24pOwogCQkJCX0KIAkJCQkvKiBDbGVhciBhbnkgdGltZSBzbyBOTyBSVFQg
aXMgYmVpbmcgZG9uZSAqLwogCQkJCWNoay0+ZG9fcnR0ID0gMDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3Rw
bGliL3VzcnNjdHBsaWIvbmV0aW5ldC9zY3RwX3Zhci5oIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNyc2N0cGxpYi9u
ZXRpbmV0L3NjdHBfdmFyLmgKaW5kZXggZDI5Yzk0YTZhNjAzMDNmMTFiYWQwNWQ1ZWQ0NWFiYTQ0
MjhkNjFlOC4uNWMyYTUyOTlkZjU3OThiMzJkNzUxNDIxMmU2MzI3YTY5NjEwZThkNCAxMDA3NTUK
LS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3Jz
Y3RwL3VzcnNjdHBsaWIvdXNyc2N0cGxpYi9uZXRpbmV0L3NjdHBfdmFyLmgKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBs
aWIvdXNyc2N0cGxpYi9uZXRpbmV0L3NjdHBfdmFyLmgKQEAgLTMyLDcgKzMyLDcgQEAKIAogI2lm
ZGVmIF9fRnJlZUJTRF9fCiAjaW5jbHVkZSA8c3lzL2NkZWZzLmg+Ci1fX0ZCU0RJRCgiJEZyZWVC
U0Q6IGhlYWQvc3lzL25ldGluZXQvc2N0cF92YXIuaCAzMDExMTQgMjAxNi0wNi0wMSAxMDoxNDow
NFogYnogJCIpOworX19GQlNESUQoIiRGcmVlQlNEOiBoZWFkL3N5cy9uZXRpbmV0L3NjdHBfdmFy
LmggMzA5NjgyIDIwMTYtMTItMDcgMTk6MzA6NTlaIHR1ZXhlbiAkIik7CiAjZW5kaWYKIAogI2lm
bmRlZiBfTkVUSU5FVF9TQ1RQX1ZBUl9IXwpAQCAtMzQwLDcgKzM0MCw3IEBAIGV4dGVybiBzdHJ1
Y3QgcHJfdXNycmVxcyBzY3RwX3VzcnJlcXM7CiAJaWYgKHN0Y2ItPmFzb2MuZnNfaW5kZXggPiBT
Q1RQX0ZTX1NQRUNfTE9HX1NJWkUpIFwKIAkJc3RjYi0+YXNvYy5mc19pbmRleCA9IDA7XAogCXN0
Y2ItPmFzb2MuZnNsb2dbc3RjYi0+YXNvYy5mc19pbmRleF0udG90YWxfZmxpZ2h0ID0gc3RjYi0+
YXNvYy50b3RhbF9mbGlnaHQ7IFwKLQlzdGNiLT5hc29jLmZzbG9nW3N0Y2ItPmFzb2MuZnNfaW5k
ZXhdLnRzbiA9IHRwMS0+cmVjLmRhdGEuVFNOX3NlcTsgXAorCXN0Y2ItPmFzb2MuZnNsb2dbc3Rj
Yi0+YXNvYy5mc19pbmRleF0udHNuID0gdHAxLT5yZWMuZGF0YS50c247IFwKIAlzdGNiLT5hc29j
LmZzbG9nW3N0Y2ItPmFzb2MuZnNfaW5kZXhdLmJvb2sgPSB0cDEtPmJvb2tfc2l6ZTsgXAogCXN0
Y2ItPmFzb2MuZnNsb2dbc3RjYi0+YXNvYy5mc19pbmRleF0uc2VudCA9IHRwMS0+c2VudDsgXAog
CXN0Y2ItPmFzb2MuZnNsb2dbc3RjYi0+YXNvYy5mc19pbmRleF0uaW5jciA9IDA7IFwKQEAgLTM2
MSw3ICszNjEsNyBAQCBleHRlcm4gc3RydWN0IHByX3VzcnJlcXMgc2N0cF91c3JyZXFzOwogCWlm
IChzdGNiLT5hc29jLmZzX2luZGV4ID4gU0NUUF9GU19TUEVDX0xPR19TSVpFKSBcCiAJCXN0Y2It
PmFzb2MuZnNfaW5kZXggPSAwO1wKIAlzdGNiLT5hc29jLmZzbG9nW3N0Y2ItPmFzb2MuZnNfaW5k
ZXhdLnRvdGFsX2ZsaWdodCA9IHN0Y2ItPmFzb2MudG90YWxfZmxpZ2h0OyBcCi0Jc3RjYi0+YXNv
Yy5mc2xvZ1tzdGNiLT5hc29jLmZzX2luZGV4XS50c24gPSB0cDEtPnJlYy5kYXRhLlRTTl9zZXE7
IFwKKwlzdGNiLT5hc29jLmZzbG9nW3N0Y2ItPmFzb2MuZnNfaW5kZXhdLnRzbiA9IHRwMS0+cmVj
LmRhdGEudHNuOyBcCiAJc3RjYi0+YXNvYy5mc2xvZ1tzdGNiLT5hc29jLmZzX2luZGV4XS5ib29r
ID0gdHAxLT5ib29rX3NpemU7IFwKIAlzdGNiLT5hc29jLmZzbG9nW3N0Y2ItPmFzb2MuZnNfaW5k
ZXhdLnNlbnQgPSB0cDEtPnNlbnQ7IFwKIAlzdGNiLT5hc29jLmZzbG9nW3N0Y2ItPmFzb2MuZnNf
aW5kZXhdLmluY3IgPSAxOyBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi91c3JzY3RwbGliL25ldGlu
ZXQvc2N0cHV0aWwuYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRf
cGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3VzcnNjdHBsaWIvbmV0aW5ldC9zY3RwdXRpbC5jCmlu
ZGV4IGI0N2RmNzY1YWM1NTBjMzAwNTA2MGFjZGY3OGExNzQ5ODM0ZGE5NmUuLjg3ZTc3NzRiYWMz
Yjg3OTNkN2JjZWJlZmY0Zjg4NTNkZWMyZmZiMWQgMTAwNzU1Ci0tLSBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3VzcnNj
dHBsaWIvbmV0aW5ldC9zY3RwdXRpbC5jCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3VzcnNjdHBsaWIvbmV0aW5l
dC9zY3RwdXRpbC5jCkBAIC0zMiw3ICszMiw3IEBACiAKICNpZmRlZiBfX0ZyZWVCU0RfXwogI2lu
Y2x1ZGUgPHN5cy9jZGVmcy5oPgotX19GQlNESUQoIiRGcmVlQlNEOiBoZWFkL3N5cy9uZXRpbmV0
L3NjdHB1dGlsLmMgMzA0NzM2IDIwMTYtMDgtMjQgMDY6MjI6NTNaIHR1ZXhlbiAkIik7CitfX0ZC
U0RJRCgiJEZyZWVCU0Q6IGhlYWQvc3lzL25ldGluZXQvc2N0cHV0aWwuYyAzMTA1OTAgMjAxNi0x
Mi0yNiAxMTowNjo0MVogdHVleGVuICQiKTsKICNlbmRpZgogCiAjaW5jbHVkZSA8bmV0aW5ldC9z
Y3RwX29zLmg+CkBAIC0zMTAsMTEgKzMxMCwxMSBAQCBzY3RwX2xvZ19zdHJtX2RlbChzdHJ1Y3Qg
c2N0cF9xdWV1ZWRfdG9fcmVhZCAqY29udHJvbCwgc3RydWN0IHNjdHBfcXVldWVkX3RvX3JlYQog
CX0KIAlzY3RwX2Nsb2cueC5zdHJsb2cuc3RjYiA9IGNvbnRyb2wtPnN0Y2I7CiAJc2N0cF9jbG9n
Lnguc3RybG9nLm5fdHNuID0gY29udHJvbC0+c2luZm9fdHNuOwotCXNjdHBfY2xvZy54LnN0cmxv
Zy5uX3NzZXEgPSBjb250cm9sLT5zaW5mb19zc247CisJc2N0cF9jbG9nLnguc3RybG9nLm5fc3Nl
cSA9ICh1aW50MTZfdCljb250cm9sLT5taWQ7CiAJc2N0cF9jbG9nLnguc3RybG9nLnN0cm0gPSBj
b250cm9sLT5zaW5mb19zdHJlYW07CiAJaWYgKHBvc2NoayAhPSBOVUxMKSB7CiAJCXNjdHBfY2xv
Zy54LnN0cmxvZy5lX3RzbiA9IHBvc2Noay0+c2luZm9fdHNuOwotCQlzY3RwX2Nsb2cueC5zdHJs
b2cuZV9zc2VxID0gcG9zY2hrLT5zaW5mb19zc247CisJCXNjdHBfY2xvZy54LnN0cmxvZy5lX3Nz
ZXEgPSAodWludDE2X3QpcG9zY2hrLT5taWQ7CiAJfSBlbHNlIHsKIAkJc2N0cF9jbG9nLnguc3Ry
bG9nLmVfdHNuID0gMDsKIAkJc2N0cF9jbG9nLnguc3RybG9nLmVfc3NlcSA9IDA7CkBAIC0xMjEy
LDcgKzEyMTIsNyBAQCBzY3RwX2luaXRfYXNvYyhzdHJ1Y3Qgc2N0cF9pbnBjYiAqaW5wLCBzdHJ1
Y3Qgc2N0cF90Y2IgKnN0Y2IsCiAJCWFzb2MtPnN0cm1vdXRbaV0uYWJhbmRvbmVkX3NlbnRbMF0g
PSAwOwogCQlhc29jLT5zdHJtb3V0W2ldLmFiYW5kb25lZF91bnNlbnRbMF0gPSAwOwogI2VuZGlm
Ci0JCWFzb2MtPnN0cm1vdXRbaV0uc3RyZWFtX25vID0gaTsKKwkJYXNvYy0+c3RybW91dFtpXS5z
aWQgPSBpOwogCQlhc29jLT5zdHJtb3V0W2ldLmxhc3RfbXNnX2luY29tcGxldGUgPSAwOwogCQlh
c29jLT5zdHJtb3V0W2ldLnN0YXRlID0gU0NUUF9TVFJFQU1fT1BFTklORzsKIAkJYXNvYy0+c3Nf
ZnVuY3Rpb25zLnNjdHBfc3NfaW5pdF9zdHJlYW0oc3RjYiwgJmFzb2MtPnN0cm1vdXRbaV0sIE5V
TEwpOwpAQCAtMzExNyw5ICszMTE3LDkgQEAgc2N0cF9ub3RpZnlfc2VuZF9mYWlsZWQoc3RydWN0
IHNjdHBfdGNiICpzdGNiLCB1aW50OF90IHNlbnQsIHVpbnQzMl90IGVycm9yLAogCQlzc2ZlLT5z
c2ZlX2xlbmd0aCA9ICh1aW50MzJfdCkobm90aWZoZHJfbGVuICsgcGF5bG9hZF9sZW4pOwogCQlz
c2ZlLT5zc2ZlX2Vycm9yID0gZXJyb3I7CiAJCS8qIG5vdCBleGFjdGx5IHdoYXQgdGhlIHVzZXIg
c2VudCBpbiwgYnV0IHNob3VsZCBiZSBjbG9zZSA6KSAqLwotCQlzc2ZlLT5zc2ZlX2luZm8uc25k
X3NpZCA9IGNoay0+cmVjLmRhdGEuc3RyZWFtX251bWJlcjsKKwkJc3NmZS0+c3NmZV9pbmZvLnNu
ZF9zaWQgPSBjaGstPnJlYy5kYXRhLnNpZDsKIAkJc3NmZS0+c3NmZV9pbmZvLnNuZF9mbGFncyA9
IGNoay0+cmVjLmRhdGEucmN2X2ZsYWdzOwotCQlzc2ZlLT5zc2ZlX2luZm8uc25kX3BwaWQgPSBj
aGstPnJlYy5kYXRhLnBheWxvYWR0eXBlOworCQlzc2ZlLT5zc2ZlX2luZm8uc25kX3BwaWQgPSBj
aGstPnJlYy5kYXRhLnBwaWQ7CiAJCXNzZmUtPnNzZmVfaW5mby5zbmRfY29udGV4dCA9IGNoay0+
cmVjLmRhdGEuY29udGV4dDsKIAkJc3NmZS0+c3NmZV9pbmZvLnNuZF9hc3NvY19pZCA9IHNjdHBf
Z2V0X2Fzc29jaWQoc3RjYik7CiAJCXNzZmUtPnNzZmVfYXNzb2NfaWQgPSBzY3RwX2dldF9hc3Nv
Y2lkKHN0Y2IpOwpAQCAtMzEzNSwxMCArMzEzNSwxMCBAQCBzY3RwX25vdGlmeV9zZW5kX2ZhaWxl
ZChzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsIHVpbnQ4X3Qgc2VudCwgdWludDMyX3QgZXJyb3IsCiAJ
CXNzZi0+c3NmX2xlbmd0aCA9ICh1aW50MzJfdCkobm90aWZoZHJfbGVuICsgcGF5bG9hZF9sZW4p
OwogCQlzc2YtPnNzZl9lcnJvciA9IGVycm9yOwogCQkvKiBub3QgZXhhY3RseSB3aGF0IHRoZSB1
c2VyIHNlbnQgaW4sIGJ1dCBzaG91bGQgYmUgY2xvc2UgOikgKi8KLQkJc3NmLT5zc2ZfaW5mby5z
aW5mb19zdHJlYW0gPSBjaGstPnJlYy5kYXRhLnN0cmVhbV9udW1iZXI7Ci0JCXNzZi0+c3NmX2lu
Zm8uc2luZm9fc3NuID0gKHVpbnQxNl90KWNoay0+cmVjLmRhdGEuc3RyZWFtX3NlcTsKKwkJc3Nm
LT5zc2ZfaW5mby5zaW5mb19zdHJlYW0gPSBjaGstPnJlYy5kYXRhLnNpZDsKKwkJc3NmLT5zc2Zf
aW5mby5zaW5mb19zc24gPSAodWludDE2X3QpY2hrLT5yZWMuZGF0YS5taWQ7CiAJCXNzZi0+c3Nm
X2luZm8uc2luZm9fZmxhZ3MgPSBjaGstPnJlYy5kYXRhLnJjdl9mbGFnczsKLQkJc3NmLT5zc2Zf
aW5mby5zaW5mb19wcGlkID0gY2hrLT5yZWMuZGF0YS5wYXlsb2FkdHlwZTsKKwkJc3NmLT5zc2Zf
aW5mby5zaW5mb19wcGlkID0gY2hrLT5yZWMuZGF0YS5wcGlkOwogCQlzc2YtPnNzZl9pbmZvLnNp
bmZvX2NvbnRleHQgPSBjaGstPnJlYy5kYXRhLmNvbnRleHQ7CiAJCXNzZi0+c3NmX2luZm8uc2lu
Zm9fYXNzb2NfaWQgPSBzY3RwX2dldF9hc3NvY2lkKHN0Y2IpOwogCQlzc2YtPnNzZl9hc3NvY19p
ZCA9IHNjdHBfZ2V0X2Fzc29jaWQoc3RjYik7CkBAIC0zMjIxLDcgKzMyMjEsNyBAQCBzY3RwX25v
dGlmeV9zZW5kX2ZhaWxlZDIoc3RydWN0IHNjdHBfdGNiICpzdGNiLCB1aW50MzJfdCBlcnJvciwK
IAkJc3NmZS0+c3NmZV9sZW5ndGggPSAodWludDMyX3QpKG5vdGlmaGRyX2xlbiArIHNwLT5sZW5n
dGgpOwogCQlzc2ZlLT5zc2ZlX2Vycm9yID0gZXJyb3I7CiAJCS8qIG5vdCBleGFjdGx5IHdoYXQg
dGhlIHVzZXIgc2VudCBpbiwgYnV0IHNob3VsZCBiZSBjbG9zZSA6KSAqLwotCQlzc2ZlLT5zc2Zl
X2luZm8uc25kX3NpZCA9IHNwLT5zdHJlYW07CisJCXNzZmUtPnNzZmVfaW5mby5zbmRfc2lkID0g
c3AtPnNpZDsKIAkJaWYgKHNwLT5zb21lX3Rha2VuKSB7CiAJCQlzc2ZlLT5zc2ZlX2luZm8uc25k
X2ZsYWdzID0gU0NUUF9EQVRBX0xBU1RfRlJBRzsKIAkJfSBlbHNlIHsKQEAgLTMyMzksNyArMzIz
OSw3IEBAIHNjdHBfbm90aWZ5X3NlbmRfZmFpbGVkMihzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsIHVp
bnQzMl90IGVycm9yLAogCQlzc2YtPnNzZl9sZW5ndGggPSAodWludDMyX3QpKG5vdGlmaGRyX2xl
biArIHNwLT5sZW5ndGgpOwogCQlzc2YtPnNzZl9lcnJvciA9IGVycm9yOwogCQkvKiBub3QgZXhh
Y3RseSB3aGF0IHRoZSB1c2VyIHNlbnQgaW4sIGJ1dCBzaG91bGQgYmUgY2xvc2UgOikgKi8KLQkJ
c3NmLT5zc2ZfaW5mby5zaW5mb19zdHJlYW0gPSBzcC0+c3RyZWFtOworCQlzc2YtPnNzZl9pbmZv
LnNpbmZvX3N0cmVhbSA9IHNwLT5zaWQ7CiAJCXNzZi0+c3NmX2luZm8uc2luZm9fc3NuID0gMDsK
IAkJaWYgKHNwLT5zb21lX3Rha2VuKSB7CiAJCQlzc2YtPnNzZl9pbmZvLnNpbmZvX2ZsYWdzID0g
U0NUUF9EQVRBX0xBU1RfRlJBRzsKQEAgLTQwMjcsMTEgKzQwMjcsMTEgQEAgc2N0cF9yZXBvcnRf
YWxsX291dGJvdW5kKHN0cnVjdCBzY3RwX3RjYiAqc3RjYiwgdWludDE2X3QgZXJyb3IsIGludCBo
b2xkc19sb2NrLAogCQlUQUlMUV9SRU1PVkUoJmFzb2MtPnNlbnRfcXVldWUsIGNoaywgc2N0cF9u
ZXh0KTsKIAkJYXNvYy0+c2VudF9xdWV1ZV9jbnQtLTsKIAkJaWYgKGNoay0+c2VudCAhPSBTQ1RQ
X0RBVEFHUkFNX05SX0FDS0VEKSB7Ci0JCQlpZiAoYXNvYy0+c3RybW91dFtjaGstPnJlYy5kYXRh
LnN0cmVhbV9udW1iZXJdLmNodW5rc19vbl9xdWV1ZXMgPiAwKSB7Ci0JCQkJYXNvYy0+c3RybW91
dFtjaGstPnJlYy5kYXRhLnN0cmVhbV9udW1iZXJdLmNodW5rc19vbl9xdWV1ZXMtLTsKKwkJCWlm
IChhc29jLT5zdHJtb3V0W2Noay0+cmVjLmRhdGEuc2lkXS5jaHVua3Nfb25fcXVldWVzID4gMCkg
eworCQkJCWFzb2MtPnN0cm1vdXRbY2hrLT5yZWMuZGF0YS5zaWRdLmNodW5rc19vbl9xdWV1ZXMt
LTsKICNpZmRlZiBJTlZBUklBTlRTCiAJCQl9IGVsc2UgewotCQkJCXBhbmljKCJObyBjaHVua3Mg
b24gdGhlIHF1ZXVlcyBmb3Igc2lkICV1LiIsIGNoay0+cmVjLmRhdGEuc3RyZWFtX251bWJlcik7
CisJCQkJcGFuaWMoIk5vIGNodW5rcyBvbiB0aGUgcXVldWVzIGZvciBzaWQgJXUuIiwgY2hrLT5y
ZWMuZGF0YS5zaWQpOwogI2VuZGlmCiAJCQl9CiAJCX0KQEAgLTQwNTEsMTEgKzQwNTEsMTEgQEAg
c2N0cF9yZXBvcnRfYWxsX291dGJvdW5kKHN0cnVjdCBzY3RwX3RjYiAqc3RjYiwgdWludDE2X3Qg
ZXJyb3IsIGludCBob2xkc19sb2NrLAogCVRBSUxRX0ZPUkVBQ0hfU0FGRShjaGssICZhc29jLT5z
ZW5kX3F1ZXVlLCBzY3RwX25leHQsIG5jaGspIHsKIAkJVEFJTFFfUkVNT1ZFKCZhc29jLT5zZW5k
X3F1ZXVlLCBjaGssIHNjdHBfbmV4dCk7CiAJCWFzb2MtPnNlbmRfcXVldWVfY250LS07Ci0JCWlm
IChhc29jLT5zdHJtb3V0W2Noay0+cmVjLmRhdGEuc3RyZWFtX251bWJlcl0uY2h1bmtzX29uX3F1
ZXVlcyA+IDApIHsKLQkJCWFzb2MtPnN0cm1vdXRbY2hrLT5yZWMuZGF0YS5zdHJlYW1fbnVtYmVy
XS5jaHVua3Nfb25fcXVldWVzLS07CisJCWlmIChhc29jLT5zdHJtb3V0W2Noay0+cmVjLmRhdGEu
c2lkXS5jaHVua3Nfb25fcXVldWVzID4gMCkgeworCQkJYXNvYy0+c3RybW91dFtjaGstPnJlYy5k
YXRhLnNpZF0uY2h1bmtzX29uX3F1ZXVlcy0tOwogI2lmZGVmIElOVkFSSUFOVFMKIAkJfSBlbHNl
IHsKLQkJCXBhbmljKCJObyBjaHVua3Mgb24gdGhlIHF1ZXVlcyBmb3Igc2lkICV1LiIsIGNoay0+
cmVjLmRhdGEuc3RyZWFtX251bWJlcik7CisJCQlwYW5pYygiTm8gY2h1bmtzIG9uIHRoZSBxdWV1
ZXMgZm9yIHNpZCAldS4iLCBjaGstPnJlYy5kYXRhLnNpZCk7CiAjZW5kaWYKIAkJfQogCQlpZiAo
Y2hrLT5kYXRhICE9IE5VTEwpIHsKQEAgLTQ4NDAsNyArNDg0MCw3IEBAIHNjdHBfaW52b2tlX3Jl
Y3ZfY2FsbGJhY2soc3RydWN0IHNjdHBfaW5wY2IgKmlucCwKIAkJbV9jb3B5ZGF0YShjb250cm9s
LT5kYXRhLCAwLCBsZW5ndGgsIGJ1ZmZlcik7CiAJCW1lbXNldCgmcmN2LCAwLCBzaXplb2Yoc3Ry
dWN0IHNjdHBfcmN2aW5mbykpOwogCQlyY3YucmN2X3NpZCA9IGNvbnRyb2wtPnNpbmZvX3N0cmVh
bTsKLQkJcmN2LnJjdl9zc24gPSBjb250cm9sLT5zaW5mb19zc247CisJCXJjdi5yY3Zfc3NuID0g
KHVpbnQxNl90KWNvbnRyb2wtPm1pZDsKIAkJcmN2LnJjdl9mbGFncyA9IGNvbnRyb2wtPnNpbmZv
X2ZsYWdzOwogCQlyY3YucmN2X3BwaWQgPSBjb250cm9sLT5zaW5mb19wcGlkOwogCQlyY3YucmN2
X3RzbiA9IGNvbnRyb2wtPnNpbmZvX3RzbjsKQEAgLTUwNTMsNyArNTA1Myw3IEBAIHNjdHBfZ2Vu
ZXJhdGVfbm9fdXNlcl9kYXRhX2NhdXNlKHVpbnQzMl90IHRzbikKIAkJbm9fdXNlcl9kYXRhX2Nh
dXNlID0gbXRvZChtLCBzdHJ1Y3Qgc2N0cF9lcnJvcl9ub191c2VyX2RhdGEgKik7CiAJCW5vX3Vz
ZXJfZGF0YV9jYXVzZS0+Y2F1c2UuY29kZSA9IGh0b25zKFNDVFBfQ0FVU0VfTk9fVVNFUl9EQVRB
KTsKIAkJbm9fdXNlcl9kYXRhX2NhdXNlLT5jYXVzZS5sZW5ndGggPSBodG9ucyhsZW4pOwotCQlu
b191c2VyX2RhdGFfY2F1c2UtPnRzbiA9IHRzbjsgLyogdHNuIGlzIHBhc3NlZCBpbiBhcyBOQk8g
Ki8KKwkJbm9fdXNlcl9kYXRhX2NhdXNlLT50c24gPSBodG9ubCh0c24pOwogCX0KIAlyZXR1cm4g
KG0pOwogfQpAQCAtNTEwNCw3ICs1MTA0LDggQEAgc2N0cF9yZWxlYXNlX3ByX3NjdHBfY2h1bmso
c3RydWN0IHNjdHBfdGNiICpzdGNiLCBzdHJ1Y3Qgc2N0cF90bWl0X2NodW5rICp0cDEsCiAJc3Ry
dWN0IHNjdHBfc3RyZWFtX291dCAqc3RycTsKIAlzdHJ1Y3Qgc2N0cF90bWl0X2NodW5rICpjaGsg
PSBOVUxMLCAqdHAyOwogCXN0cnVjdCBzY3RwX3N0cmVhbV9xdWV1ZV9wZW5kaW5nICpzcDsKLQl1
aW50MTZfdCBzdHJlYW0gPSAwLCBzZXEgPSAwOworCXVpbnQzMl90IG1pZDsKKwl1aW50MTZfdCBz
aWQ7CiAJdWludDhfdCBmb3VuZGVvbSA9IDA7CiAJaW50IHJldF9zeiA9IDA7CiAJaW50IG5vdGRv
bmU7CkBAIC01MTE3LDE5ICs1MTE4LDE5IEBAIHNjdHBfcmVsZWFzZV9wcl9zY3RwX2NodW5rKHN0
cnVjdCBzY3RwX3RjYiAqc3RjYiwgc3RydWN0IHNjdHBfdG1pdF9jaHVuayAqdHAxLAogCQlzY3Rw
X3VubG9ja19hc3NlcnQoU0NUUF9JTlBfU08oc3RjYi0+c2N0cF9lcCkpOwogCX0KICNlbmRpZgot
CXN0cmVhbSA9IHRwMS0+cmVjLmRhdGEuc3RyZWFtX251bWJlcjsKLQlzZXEgPSB0cDEtPnJlYy5k
YXRhLnN0cmVhbV9zZXE7CisJc2lkID0gdHAxLT5yZWMuZGF0YS5zaWQ7CisJbWlkID0gdHAxLT5y
ZWMuZGF0YS5taWQ7CiAJaWYgKHNlbnQgfHwgISh0cDEtPnJlYy5kYXRhLnJjdl9mbGFncyAmIFND
VFBfREFUQV9GSVJTVF9GUkFHKSkgewogCQlzdGNiLT5hc29jLmFiYW5kb25lZF9zZW50WzBdKys7
CiAJCXN0Y2ItPmFzb2MuYWJhbmRvbmVkX3NlbnRbUFJfU0NUUF9QT0xJQ1kodHAxLT5mbGFncyld
Kys7Ci0JCXN0Y2ItPmFzb2Muc3RybW91dFtzdHJlYW1dLmFiYW5kb25lZF9zZW50WzBdKys7CisJ
CXN0Y2ItPmFzb2Muc3RybW91dFtzaWRdLmFiYW5kb25lZF9zZW50WzBdKys7CiAjaWYgZGVmaW5l
ZChTQ1RQX0RFVEFJTEVEX1NUUl9TVEFUUykKIAkJc3RjYi0+YXNvYy5zdHJtb3V0W3N0cmVhbV0u
YWJhbmRvbmVkX3NlbnRbUFJfU0NUUF9QT0xJQ1kodHAxLT5mbGFncyldKys7CiAjZW5kaWYKIAl9
IGVsc2UgewogCQlzdGNiLT5hc29jLmFiYW5kb25lZF91bnNlbnRbMF0rKzsKIAkJc3RjYi0+YXNv
Yy5hYmFuZG9uZWRfdW5zZW50W1BSX1NDVFBfUE9MSUNZKHRwMS0+ZmxhZ3MpXSsrOwotCQlzdGNi
LT5hc29jLnN0cm1vdXRbc3RyZWFtXS5hYmFuZG9uZWRfdW5zZW50WzBdKys7CisJCXN0Y2ItPmFz
b2Muc3RybW91dFtzaWRdLmFiYW5kb25lZF91bnNlbnRbMF0rKzsKICNpZiBkZWZpbmVkKFNDVFBf
REVUQUlMRURfU1RSX1NUQVRTKQogCQlzdGNiLT5hc29jLnN0cm1vdXRbc3RyZWFtXS5hYmFuZG9u
ZWRfdW5zZW50W1BSX1NDVFBfUE9MSUNZKHRwMS0+ZmxhZ3MpXSsrOwogI2VuZGlmCkBAIC01MTgz
LDggKzUxODQsOCBAQCBzY3RwX3JlbGVhc2VfcHJfc2N0cF9jaHVuayhzdHJ1Y3Qgc2N0cF90Y2Ig
KnN0Y2IsIHN0cnVjdCBzY3RwX3RtaXRfY2h1bmsgKnRwMSwKIAkJICogc2VudCBxdWV1ZS4KIAkJ
ICovCiAJCVRBSUxRX0ZPUkVBQ0hfU0FGRSh0cDEsICZzdGNiLT5hc29jLnNlbmRfcXVldWUsIHNj
dHBfbmV4dCwgdHAyKSB7Ci0JCQlpZiAoKHRwMS0+cmVjLmRhdGEuc3RyZWFtX251bWJlciAhPSBz
dHJlYW0pIHx8Ci0JCQkgICAgKHRwMS0+cmVjLmRhdGEuc3RyZWFtX3NlcSAhPSBzZXEpKSB7CisJ
CQlpZiAoKHRwMS0+cmVjLmRhdGEuc2lkICE9IHNpZCkgfHwKKwkJCSAgICAoIVNDVFBfTUlEX0VR
KHN0Y2ItPmFzb2MuaWRhdGFfc3VwcG9ydGVkLCB0cDEtPnJlYy5kYXRhLm1pZCwgbWlkKSkpIHsK
IAkJCQlicmVhazsKIAkJCX0KIAkJCS8qIHNhdmUgdG8gY2hrIGluIGNhc2Ugd2UgaGF2ZSBzb21l
IG9uIHN0cmVhbSBvdXQKQEAgLTUyMjQsNyArNTIyNSw3IEBAIHNjdHBfcmVsZWFzZV9wcl9zY3Rw
X2NodW5rKHN0cnVjdCBzY3RwX3RjYiAqc3RjYiwgc3RydWN0IHNjdHBfdG1pdF9jaHVuayAqdHAx
LAogCQkgKiBpcyBzdHVmZiBsZWZ0IG9uIHRoZSBzdHJlYW0gb3V0IHF1ZXVlLi4geXVjay4KIAkJ
ICovCiAJCVNDVFBfVENCX1NFTkRfTE9DSyhzdGNiKTsKLQkJc3RycSA9ICZzdGNiLT5hc29jLnN0
cm1vdXRbc3RyZWFtXTsKKwkJc3RycSA9ICZzdGNiLT5hc29jLnN0cm1vdXRbc2lkXTsKIAkJc3Ag
PSBUQUlMUV9GSVJTVCgmc3RycS0+b3V0cXVldWUpOwogCQlpZiAoc3AgIT0gTlVMTCkgewogCQkJ
c3AtPmRpc2NhcmRfcmVzdCA9IDE7CkBAIC01MjUxLDI2ICs1MjUyLDI2IEBAIHNjdHBfcmVsZWFz
ZV9wcl9zY3RwX2NodW5rKHN0cnVjdCBzY3RwX3RjYiAqc3RjYiwgc3RydWN0IHNjdHBfdG1pdF9j
aHVuayAqdHAxLAogCQkJCWNoay0+YXNvYyA9ICZzdGNiLT5hc29jOwogCQkJCWlmIChzdGNiLT5h
c29jLmlkYXRhX3N1cHBvcnRlZCA9PSAwKSB7CiAJCQkJCWlmIChzcC0+c2luZm9fZmxhZ3MgJiBT
Q1RQX1VOT1JERVJFRCkgewotCQkJCQkJY2hrLT5yZWMuZGF0YS5zdHJlYW1fc2VxID0gMDsKKwkJ
CQkJCWNoay0+cmVjLmRhdGEubWlkID0gMDsKIAkJCQkJfSBlbHNlIHsKLQkJCQkJCWNoay0+cmVj
LmRhdGEuc3RyZWFtX3NlcSA9IHN0cnEtPm5leHRfbWlkX29yZGVyZWQ7CisJCQkJCQljaGstPnJl
Yy5kYXRhLm1pZCA9IHN0cnEtPm5leHRfbWlkX29yZGVyZWQ7CiAJCQkJCX0KIAkJCQl9IGVsc2Ug
ewogCQkJCQlpZiAoc3AtPnNpbmZvX2ZsYWdzICYgU0NUUF9VTk9SREVSRUQpIHsKLQkJCQkJCWNo
ay0+cmVjLmRhdGEuc3RyZWFtX3NlcSA9IHN0cnEtPm5leHRfbWlkX3Vub3JkZXJlZDsKKwkJCQkJ
CWNoay0+cmVjLmRhdGEubWlkID0gc3RycS0+bmV4dF9taWRfdW5vcmRlcmVkOwogCQkJCQl9IGVs
c2UgewotCQkJCQkJY2hrLT5yZWMuZGF0YS5zdHJlYW1fc2VxID0gc3RycS0+bmV4dF9taWRfb3Jk
ZXJlZDsKKwkJCQkJCWNoay0+cmVjLmRhdGEubWlkID0gc3RycS0+bmV4dF9taWRfb3JkZXJlZDsK
IAkJCQkJfQogCQkJCX0KLQkJCQljaGstPnJlYy5kYXRhLnN0cmVhbV9udW1iZXIgPSBzcC0+c3Ry
ZWFtOwotCQkJCWNoay0+cmVjLmRhdGEucGF5bG9hZHR5cGUgPSBzcC0+cHBpZDsKKwkJCQljaGst
PnJlYy5kYXRhLnNpZCA9IHNwLT5zaWQ7CisJCQkJY2hrLT5yZWMuZGF0YS5wcGlkID0gc3AtPnBw
aWQ7CiAJCQkJY2hrLT5yZWMuZGF0YS5jb250ZXh0ID0gc3AtPmNvbnRleHQ7CiAJCQkJY2hrLT5m
bGFncyA9IHNwLT5hY3RfZmxhZ3M7CiAJCQkJY2hrLT53aG9UbyA9IE5VTEw7CiAjaWYgZGVmaW5l
ZChfX0ZyZWVCU0RfXykgfHwgZGVmaW5lZChfX1BhbmRhX18pCi0JCQkJY2hrLT5yZWMuZGF0YS5U
U05fc2VxID0gYXRvbWljX2ZldGNoYWRkX2ludCgmc3RjYi0+YXNvYy5zZW5kaW5nX3NlcSwgMSk7
CisJCQkJY2hrLT5yZWMuZGF0YS50c24gPSBhdG9taWNfZmV0Y2hhZGRfaW50KCZzdGNiLT5hc29j
LnNlbmRpbmdfc2VxLCAxKTsKICNlbHNlCi0JCQkJY2hrLT5yZWMuZGF0YS5UU05fc2VxID0gc3Rj
Yi0+YXNvYy5zZW5kaW5nX3NlcSsrOworCQkJCWNoay0+cmVjLmRhdGEudHNuID0gc3RjYi0+YXNv
Yy5zZW5kaW5nX3NlcSsrOwogI2VuZGlmCiAJCQkJc3RycS0+Y2h1bmtzX29uX3F1ZXVlcysrOwog
CQkJCVRBSUxRX0lOU0VSVF9UQUlMKCZzdGNiLT5hc29jLnNlbnRfcXVldWUsIGNoaywgc2N0cF9u
ZXh0KTsKQEAgLTYwNTUsNyArNjA1Niw3IEBAIHNjdHBfc29yZWN2bXNnKHN0cnVjdCBzb2NrZXQg
KnNvLAogCS8qIEZpcnN0IGxldHMgZ2V0IG9mZiB0aGUgc2luZm8gYW5kIHNvY2thZGRyIGluZm8g
Ki8KIAlpZiAoKHNpbmZvICE9IE5VTEwpICYmIChmaWxsaW5nX3NpbmZvICE9IDApKSB7CiAJCXNp
bmZvLT5zaW5mb19zdHJlYW0gPSBjb250cm9sLT5zaW5mb19zdHJlYW07Ci0JCXNpbmZvLT5zaW5m
b19zc24gPSAodWludDE2X3QpY29udHJvbC0+c2luZm9fc3NuOworCQlzaW5mby0+c2luZm9fc3Nu
ID0gKHVpbnQxNl90KWNvbnRyb2wtPm1pZDsKIAkJc2luZm8tPnNpbmZvX2ZsYWdzID0gY29udHJv
bC0+c2luZm9fZmxhZ3M7CiAJCXNpbmZvLT5zaW5mb19wcGlkID0gY29udHJvbC0+c2luZm9fcHBp
ZDsKIAkJc2luZm8tPnNpbmZvX2NvbnRleHQgPWNvbnRyb2wtPnNpbmZvX2NvbnRleHQ7CkBAIC02
MTI3LDcgKzYxMjgsNyBAQCBzY3RwX3NvcmVjdm1zZyhzdHJ1Y3Qgc29ja2V0ICpzbywKIAkJZW50
cnkgPSAmaW5wLT5yZWFkbG9nW2luZGV4XTsKIAkJZW50cnktPnZ0YWcgPSBjb250cm9sLT5zaW5m
b19hc3NvY19pZDsKIAkJZW50cnktPnN0cm0gPSBjb250cm9sLT5zaW5mb19zdHJlYW07Ci0JCWVu
dHJ5LT5zZXEgPSBjb250cm9sLT5zaW5mb19zc247CisJCWVudHJ5LT5zZXEgPSAodWludDE2X3Qp
Y29udHJvbC0+bWlkOwogCQllbnRyeS0+c3ogPSBjb250cm9sLT5sZW5ndGg7CiAJCWVudHJ5LT5m
bGdzID0gY29udHJvbC0+c2luZm9fZmxhZ3M7CiAJfQpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJk
UGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNy
c2N0cGxpYi9uZXRpbmV0L3NjdHB1dGlsLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi91c3JzY3RwbGliL25ldGluZXQv
c2N0cHV0aWwuaAppbmRleCA5NjY1ZDQ4N2VlYzhkNmFmMWE3NjdjOTE4MzQ5MmNhMjJhM2NiMGY4
Li43NzQ2ZDU0MWE3MzViMWU4YTU3NDNhMzM1OTY1NGIyNTQ0ZDRhMWJkIDEwMDc1NQotLS0gYS9T
b3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNy
c2N0cGxpYi91c3JzY3RwbGliL25ldGluZXQvc2N0cHV0aWwuaAorKysgYi9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi91c3Jz
Y3RwbGliL25ldGluZXQvc2N0cHV0aWwuaApAQCAtMzIsNyArMzIsNyBAQAogCiAjaWZkZWYgX19G
cmVlQlNEX18KICNpbmNsdWRlIDxzeXMvY2RlZnMuaD4KLV9fRkJTRElEKCIkRnJlZUJTRDogaGVh
ZC9zeXMvbmV0aW5ldC9zY3RwdXRpbC5oIDI5ODUwOCAyMDE2LTA0LTIzIDA5OjE1OjU4WiB0dWV4
ZW4gJCIpOworX19GQlNESUQoIiRGcmVlQlNEOiBoZWFkL3N5cy9uZXRpbmV0L3NjdHB1dGlsLmgg
MzEwNTkwIDIwMTYtMTItMjYgMTE6MDY6NDFaIHR1ZXhlbiAkIik7CiAjZW5kaWYKIAogI2lmbmRl
ZiBfTkVUSU5FVF9TQ1RQX1VUSUxfSF8KZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xp
YndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3VzcnNjdHBsaWIv
bmV0aW5ldDYvc2N0cDZfdXNycmVxLmMgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291
cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi91c3JzY3RwbGliL25ldGluZXQ2L3Nj
dHA2X3VzcnJlcS5jCmluZGV4IGY0Njg1MGYxN2ZjZGJkZDk5ODZkOWQ4YmU5MjQ2ZjE5MDVkMzc2
NjAuLjkwOGE3NjllYTU0ZmNhMzgyMGRiMTk3NWZhZmNlZDc2ZjQ2NDNhOTEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91
c3JzY3RwbGliL3VzcnNjdHBsaWIvbmV0aW5ldDYvc2N0cDZfdXNycmVxLmMKKysrIGIvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBs
aWIvdXNyc2N0cGxpYi9uZXRpbmV0Ni9zY3RwNl91c3JyZXEuYwpAQCAtMzIsNyArMzIsNyBAQAog
CiAjaWZkZWYgX19GcmVlQlNEX18KICNpbmNsdWRlIDxzeXMvY2RlZnMuaD4KLV9fRkJTRElEKCIk
RnJlZUJTRDogaGVhZC9zeXMvbmV0aW5ldDYvc2N0cDZfdXNycmVxLmMgMzAyMTM4IDIwMTYtMDYt
MjMgMDk6MTM6MTVaIHR1ZXhlbiAkIik7CitfX0ZCU0RJRCgiJEZyZWVCU0Q6IGhlYWQvc3lzL25l
dGluZXQ2L3NjdHA2X3VzcnJlcS5jIDMxMzMzMCAyMDE3LTAyLTA2IDA4OjQ5OjU3WiBhZSAkIik7
CiAjZW5kaWYKIAogI2luY2x1ZGUgPG5ldGluZXQvc2N0cF9vcy5oPgpAQCAtNjQsMTEgKzY0LDYg
QEAgX19GQlNESUQoIiRGcmVlQlNEOiBoZWFkL3N5cy9uZXRpbmV0Ni9zY3RwNl91c3JyZXEuYyAz
MDIxMzggMjAxNi0wNi0yMyAwOToxMzoxNVoKICNpZiBkZWZpbmVkKF9fQVBQTEVfXykKICNkZWZp
bmUgQVBQTEVfRklMRV9OTyA5CiAjZW5kaWYKLSNpZmRlZiBJUFNFQwotI2luY2x1ZGUgPG5ldGlw
c2VjL2lwc2VjLmg+Ci0jaW5jbHVkZSA8bmV0aXBzZWMvaXBzZWM2Lmg+Ci0jZW5kaWYgLyogSVBT
RUMgKi8KLQogI2lmICFkZWZpbmVkKF9fVXNlcnNwYWNlX18pCiBleHRlcm4gc3RydWN0IHByb3Rv
c3cgaW5ldHN3W107CiAjZW5kaWYKQEAgLTc5OCwxMCArNzkzLDYgQEAgc2N0cDZfYXR0YWNoKHN0
cnVjdCBzb2NrZXQgKnNvLCBpbnQgcHJvdG8gU0NUUF9VTlVTRUQsIHN0cnVjdCBwcm9jICpwIFND
VFBfVU5VU0UKIAkgKi8KIAlpbnA2LT5pbnBfaXBfdHRsID0gTU9EVUxFX0dMT0JBTChpcF9kZWZ0
dGwpOwogI2VuZGlmCi0JLyoKLQkgKiBIbW0gd2hhdCBhYm91dCB0aGUgSVBTRUMgc3R1ZmYgdGhh
dCBpcyBtaXNzaW5nIGhlcmUgYnV0IGluCi0JICogc2N0cF9hdHRhY2goKT8KLQkgKi8KIAlTQ1RQ
X0lOUF9XVU5MT0NLKGlucCk7CiAJcmV0dXJuICgwKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9U
aGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGli
L3VzcnNjdHBsaWIvbmV0aW5ldDYvc2N0cDZfdmFyLmggYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3
ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi91c3JzY3RwbGliL25l
dGluZXQ2L3NjdHA2X3Zhci5oCmluZGV4IDFlZjU4ZDI5ZTJiY2Q2ZjUzNzU3YzIzYWVmMjU3OTE2
NDIwMjJiMDQuLmVkOWY4NGExYWEwMjI3ZWU2NmEyMmMyNGVkMTliMjE4ZDBiNmJhZTcgMTAwNzU1
Ci0tLSBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNy
c2N0cC91c3JzY3RwbGliL3VzcnNjdHBsaWIvbmV0aW5ldDYvc2N0cDZfdmFyLmgKKysrIGIvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNj
dHBsaWIvdXNyc2N0cGxpYi9uZXRpbmV0Ni9zY3RwNl92YXIuaApAQCAtMzIsNyArMzIsNyBAQAog
CiAjaWZkZWYgX19GcmVlQlNEX18KICNpbmNsdWRlIDxzeXMvY2RlZnMuaD4KLV9fRkJTRElEKCIk
RnJlZUJTRDogaGVhZC9zeXMvbmV0aW5ldDYvc2N0cDZfdmFyLmggMjk4MTMyIDIwMTYtMDQtMTYg
MjE6MzQ6NDlaIHR1ZXhlbiAkIik7CitfX0ZCU0RJRCgiJEZyZWVCU0Q6IGhlYWQvc3lzL25ldGlu
ZXQ2L3NjdHA2X3Zhci5oIDMwOTYwNyAyMDE2LTEyLTA2IDEwOjIxOjI1WiB0dWV4ZW4gJCIpOwog
I2VuZGlmCiAKICNpZm5kZWYgX05FVElORVQ2X1NDVFA2X1ZBUl9IXwpkaWZmIC0tZ2l0IGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNj
dHBsaWIvdXNyc2N0cGxpYi91c2VyX21idWYuYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0
Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3VzcnNjdHBsaWIvdXNlcl9t
YnVmLmMKaW5kZXggOWE4Mjc0NjM3MTI3NzMzZWExYzgxMDU1MGM4YTgwODZkNzE4NDM2Zi4uODI3
ZGMxMDNhZTQ2NGMyM2YzYjAyYTEzNDI1MGZlY2E4ZTFlZmJlNSAxMDA3NTUKLS0tIGEvU291cmNl
L1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBs
aWIvdXNyc2N0cGxpYi91c2VyX21idWYuYworKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi91c3JzY3RwbGliL3VzZXJf
bWJ1Zi5jCkBAIC0xMjEsNyArMTIxLDcgQEAgbV9nZXQoaW50IGhvdywgc2hvcnQgdHlwZSkKIAlt
YnVmX21iX2FyZ3MudHlwZSA9IHR5cGU7CiAjZW5kaWYKIAkvKiBNYnVmIG1hc3RlciB6b25lLCB6
b25lX21idWYsIGhhcyBhbHJlYWR5IGJlZW4KLQkgKiBjcmVhdGVkIGluIG1idWZfaW5pdCgpICov
CisJICogY3JlYXRlZCBpbiBtYnVmX2luaXRpYWxpemUoKSAqLwogCW1yZXQgPSBTQ1RQX1pPTkVf
R0VUKHpvbmVfbWJ1Ziwgc3RydWN0IG1idWYpOwogI2lmIGRlZmluZWQoU0NUUF9TSU1QTEVfQUxM
T0NBVE9SKQogCW1iX2N0b3JfbWJ1ZihtcmV0LCAmbWJ1Zl9tYl9hcmdzLCAwKTsKQEAgLTMyNywx
MiArMzI3LDggQEAgbV90YWdfc2V0dXAoc3RydWN0IG1fdGFnICp0LCB1X2ludDMyX3QgY29va2ll
LCBpbnQgdHlwZSwgaW50IGxlbikKIAogLyoqKioqKioqKioqKiBFbmQgZnVuY3Rpb25zIHRvIHN1
YnN0aXR1dGUgdW1lbV9jYWNoZV9hbGxvYyBhbmQgdW1lbV9jYWNoZV9mcmVlICoqKioqKioqKioq
KioqLwogCi0vKiBfX1VzZXJzcGFjZV9fCi0gKiBUT0RPOiBtYnVmX2luaXQgbXVzdCBiZSBjYWxs
ZWQgaW4gdGhlIGluaXRpYWxpemF0aW9uIHJvdXRpbmVzCi0gKiBvZiB1c2Vyc3BhY2Ugc3RhY2su
Ci0gKi8KIHZvaWQKLW1idWZfaW5pdCh2b2lkICpkdW1teSkKK21idWZfaW5pdGlhbGl6ZSh2b2lk
ICpkdW1teSkKIHsKIAogCS8qCmRpZmYgLS1naXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJy
dGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi91c3JzY3RwbGliL3VzZXJf
bWJ1Zi5oIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91
c3JzY3RwL3VzcnNjdHBsaWIvdXNyc2N0cGxpYi91c2VyX21idWYuaAppbmRleCA3ODkzZWE5NTE2
NjVmYjI2Njc4NmRiZjAwZTRkMWZkOWY0MTU5ODRjLi5lNTQ3ZWUzNGRiN2U3ZGNlZWE2OTQ4YzA5
ODVhNjY0Y2Y1NGNlMDU2IDEwMDc1NQotLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
U291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi91c3JzY3RwbGliL3VzZXJfbWJ1
Zi5oCisrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkv
dXNyc2N0cC91c3JzY3RwbGliL3VzcnNjdHBsaWIvdXNlcl9tYnVmLmgKQEAgLTU4LDcgKzU4LDcg
QEAgdm9pZCBtX2NsZ2V0KHN0cnVjdCBtYnVmICptLCBpbnQgaG93KTsKIAogCiAvKiBtYnVmIGlu
aXRpYWxpemF0aW9uIGZ1bmN0aW9uICovCi12b2lkIG1idWZfaW5pdCh2b2lkICopOwordm9pZCBt
YnVmX2luaXRpYWxpemUodm9pZCAqKTsKIAogI2RlZmluZQlNX01PVkVfUEtUSERSKHRvLCBmcm9t
KQltX21vdmVfcGt0aGRyKCh0byksIChmcm9tKSkKICNkZWZpbmUJTUdFVChtLCBob3csIHR5cGUp
CSgobSkgPSBtX2dldCgoaG93KSwgKHR5cGUpKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9UaGlyZFBh
cnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3VzcnNj
dHBsaWIvdXNlcl9zb2NrZXQuYyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2Uv
dGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3VzcnNjdHBsaWIvdXNlcl9zb2NrZXQuYwpp
bmRleCBkNmQxNTM0ZDFiZTZiNGE4MzIyNjBiYmMwZjhjZDliOTk3MDRkOGFmLi5mM2UzNDhhODY1
Y2JkZjkwZGYwNjk2ODEwMDE5NDgyNWVlODk4YThiIDEwMDc1NQotLS0gYS9Tb3VyY2UvVGhpcmRQ
YXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi91c3Jz
Y3RwbGliL3VzZXJfc29ja2V0LmMKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNyc2N0cGxpYi91c2VyX3NvY2tl
dC5jCkBAIC0zOSw2ICszOSw3IEBACiAjaW5jbHVkZSA8bmV0aW5ldC9zY3RwX3N5c2N0bC5oPgog
I2luY2x1ZGUgPG5ldGluZXQvc2N0cF9pbnB1dC5oPgogI2luY2x1ZGUgPG5ldGluZXQvc2N0cF9w
ZWVsb2ZmLmg+CisjaW5jbHVkZSA8bmV0aW5ldC9zY3RwX2NyYzMyLmg+CiAjaWZkZWYgSU5FVDYK
ICNpbmNsdWRlIDxuZXRpbmV0Ni9zY3RwNl92YXIuaD4KICNlbmRpZgpAQCAtMzMwNyw2ICszMzA4
LDI5IEBAIHVzcnNjdHBfZnJlZWR1bXBidWZmZXIoY2hhciAqYnVmKQogfQogCiB2b2lkCit1c3Jz
Y3RwX2VuYWJsZV9jcmMzMmNfb2ZmbG9hZCh2b2lkKQoreworCVNDVFBfQkFTRV9WQVIoY3JjMzJj
X29mZmxvYWRlZCkgPSAxOworfQorCit2b2lkCit1c3JzY3RwX2Rpc2FibGVfY3JjMzJjX29mZmxv
YWQodm9pZCkKK3sKKwlTQ1RQX0JBU0VfVkFSKGNyYzMyY19vZmZsb2FkZWQpID0gMDsKK30KKwor
LyogQ29tcHV0ZSB0aGUgQ1JDMzJDIGluIG5ldHdvcmsgYnl0ZSBvcmRlciAqLwordWludDMyX3QK
K3VzcnNjdHBfY3JjMzJjKHZvaWQgKmJ1ZmZlciwgc2l6ZV90IGxlbmd0aCkKK3sKKwl1aW50MzJf
dCBiYXNlID0gMHhmZmZmZmZmZjsKKworCWJhc2UgPSBjYWxjdWxhdGVfY3JjMzJjKDB4ZmZmZmZm
ZmYsICh1bnNpZ25lZCBjaGFyICopYnVmZmVyLCAodW5zaWduZWQgaW50KSBsZW5ndGgpOworCWJh
c2UgPSBzY3RwX2ZpbmFsaXplX2NyYzMyYyhiYXNlKTsKKwlyZXR1cm4gKGJhc2UpOworfQorCit2
b2lkCiB1c3JzY3RwX2Nvbm5pbnB1dCh2b2lkICphZGRyLCBjb25zdCB2b2lkICpidWZmZXIsIHNp
emVfdCBsZW5ndGgsIHVpbnQ4X3QgZWNuX2JpdHMpCiB7CiAJc3RydWN0IHNvY2thZGRyX2Nvbm4g
c3JjLCBkc3Q7CkBAIC0zMzQ3LDcgKzMzNzEsNyBAQCB1c3JzY3RwX2Nvbm5pbnB1dCh2b2lkICph
ZGRyLCBjb25zdCB2b2lkICpidWZmZXIsIHNpemVfdCBsZW5ndGgsIHVpbnQ4X3QgZWNuX2JpdAog
CSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHN0cnVjdCBzb2NrYWRkciAqKSZkc3QsCiAJ
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaCwgY2gsCiAjaWYgIWRlZmluZWQoU0NUUF9X
SVRIX05PX0NTVU0pCi0JICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxLAorCSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgU0NUUF9CQVNFX1ZBUihjcmMzMmNfb2ZmbG9hZGVkKSA9PSAx
ID8gMCA6IDEsCiAjZW5kaWYKIAkgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVjbl9iaXRz
LAogCSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU0NUUF9ERUZBVUxUX1ZSRklELCAwKTsK
QEAgLTM0MDEsNiArMzQyNSw3IEBAIFVTUlNDVFBfU1lTQ1RMX1NFVF9ERUYoc2N0cF9pbml0X3J0
eF9tYXhfZGVmYXVsdCkKIFVTUlNDVFBfU1lTQ1RMX1NFVF9ERUYoc2N0cF9hc3NvY19ydHhfbWF4
X2RlZmF1bHQpCiBVU1JTQ1RQX1NZU0NUTF9TRVRfREVGKHNjdHBfcGF0aF9ydHhfbWF4X2RlZmF1
bHQpCiBVU1JTQ1RQX1NZU0NUTF9TRVRfREVGKHNjdHBfYWRkX21vcmVfdGhyZXNob2xkKQorVVNS
U0NUUF9TWVNDVExfU0VUX0RFRihzY3RwX25yX2luY29taW5nX3N0cmVhbXNfZGVmYXVsdCkKIFVT
UlNDVFBfU1lTQ1RMX1NFVF9ERUYoc2N0cF9ucl9vdXRnb2luZ19zdHJlYW1zX2RlZmF1bHQpCiBV
U1JTQ1RQX1NZU0NUTF9TRVRfREVGKHNjdHBfY210X29uX29mZikKIFVTUlNDVFBfU1lTQ1RMX1NF
VF9ERUYoc2N0cF9jbXRfdXNlX2RhYykKQEAgLTM0ODEsNiArMzUwNiw3IEBAIFVTUlNDVFBfU1lT
Q1RMX0dFVF9ERUYoc2N0cF9pbml0X3J0eF9tYXhfZGVmYXVsdCkKIFVTUlNDVFBfU1lTQ1RMX0dF
VF9ERUYoc2N0cF9hc3NvY19ydHhfbWF4X2RlZmF1bHQpCiBVU1JTQ1RQX1NZU0NUTF9HRVRfREVG
KHNjdHBfcGF0aF9ydHhfbWF4X2RlZmF1bHQpCiBVU1JTQ1RQX1NZU0NUTF9HRVRfREVGKHNjdHBf
YWRkX21vcmVfdGhyZXNob2xkKQorVVNSU0NUUF9TWVNDVExfR0VUX0RFRihzY3RwX25yX2luY29t
aW5nX3N0cmVhbXNfZGVmYXVsdCkKIFVTUlNDVFBfU1lTQ1RMX0dFVF9ERUYoc2N0cF9ucl9vdXRn
b2luZ19zdHJlYW1zX2RlZmF1bHQpCiBVU1JTQ1RQX1NZU0NUTF9HRVRfREVGKHNjdHBfY210X29u
X29mZikKIFVTUlNDVFBfU1lTQ1RMX0dFVF9ERUYoc2N0cF9jbXRfdXNlX2RhYykKZGlmZiAtLWdp
dCBhL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0
cC91c3JzY3RwbGliL3VzcnNjdHBsaWIvdXNyc2N0cC5oIGIvU291cmNlL1RoaXJkUGFydHkvbGli
d2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNyc2N0cGxpYi91
c3JzY3RwLmgKaW5kZXggZGZiMTZjMDQ2ZjAwOWY4MDg0YWM4ZDdjM2E4ZGI0MDFmMjhiMTM3MS4u
Zjg5NzA0MDEzMTljNTY2MDY3NTQ3NjNhYWVmMTE5OTE1NTgzOWRiZiAxMDA2NDQKLS0tIGEvU291
cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNj
dHBsaWIvdXNyc2N0cGxpYi91c3JzY3RwLmgKKysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2Vi
cnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNyc2N0cGxpYi91c3Jz
Y3RwLmgKQEAgLTg3LDYgKzg3LDI1IEBAIGV4dGVybiAiQyIgewogCiB0eXBlZGVmIHVpbnQzMl90
IHNjdHBfYXNzb2NfdDsKIAorI2lmIGRlZmluZWQoX1dJTjMyKSAmJiBkZWZpbmVkKF9NU0NfVkVS
KQorI3ByYWdtYSBwYWNrIChwdXNoLCAxKQorI2RlZmluZSBTQ1RQX1BBQ0tFRAorI2Vsc2UKKyNk
ZWZpbmUgU0NUUF9QQUNLRUQgX19hdHRyaWJ1dGVfXygocGFja2VkKSkKKyNlbmRpZgorCitzdHJ1
Y3Qgc2N0cF9jb21tb25faGVhZGVyIHsKKwl1aW50MTZfdCBzb3VyY2VfcG9ydDsKKwl1aW50MTZf
dCBkZXN0aW5hdGlvbl9wb3J0OworCXVpbnQzMl90IHZlcmlmaWNhdGlvbl90YWc7CisJdWludDMy
X3QgY3JjMzJjOworfSBTQ1RQX1BBQ0tFRDsKKworI2lmIGRlZmluZWQoX1dJTjMyKSAmJiBkZWZp
bmVkKF9NU0NfVkVSKQorI3ByYWdtYSBwYWNrKCkKKyNlbmRpZgorI3VuZGVmIFNDVFBfUEFDS0VE
CisKICNkZWZpbmUgQUZfQ09OTiAxMjMKIC8qIFRoZSBkZWZpbml0aW9uIG9mIHN0cnVjdCBzb2Nr
YWRkcl9jb25uIE1VU1QgYmUgaW4KICAqIHR1bmUgd2l0aCBvdGhlciBzb2NrYWRkcl8qIHN0cnVj
dHVyZXMuCkBAIC05OTEsNiArMTAxMCwxNSBAQCB1c3JzY3RwX2R1bXBwYWNrZXQoY29uc3Qgdm9p
ZCAqLCBzaXplX3QsIGludCk7CiB2b2lkCiB1c3JzY3RwX2ZyZWVkdW1wYnVmZmVyKGNoYXIgKik7
CiAKK3ZvaWQKK3VzcnNjdHBfZW5hYmxlX2NyYzMyY19vZmZsb2FkKHZvaWQpOworCit2b2lkCit1
c3JzY3RwX2Rpc2FibGVfY3JjMzJjX29mZmxvYWQodm9pZCk7CisKK3VpbnQzMl90Cit1c3JzY3Rw
X2NyYzMyYyh2b2lkICosIHNpemVfdCk7CisKICNkZWZpbmUgVVNSU0NUUF9TWVNDVExfREVDTChf
X2ZpZWxkKSAgICAgICAgICAgICAgICBcCiB2b2lkIHVzcnNjdHBfc3lzY3RsX3NldF8gIyMgX19m
aWVsZCh1aW50MzJfdCB2YWx1ZSk7XAogdWludDMyX3QgdXNyc2N0cF9zeXNjdGxfZ2V0XyAjIyBf
X2ZpZWxkKHZvaWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1dl
YktpdC9wYXRjaC11c3JzY3RwIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1dlYktpdC9w
YXRjaC11c3JzY3RwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmIyZGZlZDA4YmQxN2JiNmRlYzdiNDUxN2Y5OWE5NDhk
ZTQ2OTk1MGIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMv
V2ViS2l0L3BhdGNoLXVzcnNjdHAKQEAgLTAsMCArMSw1OSBAQAorZGlmZiAtLWdpdCBhL1NvdXJj
ZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3Rw
bGliL3VzcnNjdHBsaWIvbmV0aW5ldC9zY3RwX2lucHV0LmMgYi9Tb3VyY2UvVGhpcmRQYXJ0eS9s
aWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi91c3JzY3RwbGli
L25ldGluZXQvc2N0cF9pbnB1dC5jCitpbmRleCBiMmExYmI0NGVlYi4uMmMzMTY4M2Y0OGUgMTAw
NzU1CistLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5
L3VzcnNjdHAvdXNyc2N0cGxpYi91c3JzY3RwbGliL25ldGluZXQvc2N0cF9pbnB1dC5jCisrKysg
Yi9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAv
dXNyc2N0cGxpYi91c3JzY3RwbGliL25ldGluZXQvc2N0cF9pbnB1dC5jCitAQCAtMTczMCwxMCAr
MTczMCwxMiBAQCBzY3RwX3Byb2Nlc3NfY29va2llX2V4aXN0aW5nKHN0cnVjdCBtYnVmICptLCBp
bnQgaXBobGVuLCBpbnQgb2Zmc2V0LAorIAkJCQkgKiBkb24ndCBkb3VibGUgdGhpbmdzCisgCQkJ
CSAqLworIAkJCQluZXQtPmhiX3Jlc3BvbmRlZCA9IDE7CisrCQkJCXN0cnVjdCB0aW1ldmFsIHRp
bWVfZW50ZXJlZDsKKyAJCQkJbmV0LT5SVE8gPSBzY3RwX2NhbGN1bGF0ZV9ydG8oc3RjYiwgYXNv
YywgbmV0LAorLQkJCQkJCQkgICAgICAmY29va2llLT50aW1lX2VudGVyZWQsCisrCQkJCQkJCSAg
ICAgICZ0aW1lX2VudGVyZWQsCisgCQkJCQkJCSAgICAgIHNjdHBfYWxpZ25fdW5zYWZlX21ha2Vj
b3B5LAorIAkJCQkJCQkgICAgICBTQ1RQX1JUVF9GUk9NX05PTl9EQVRBKTsKKysJCQkJY29va2ll
LT50aW1lX2VudGVyZWQgPSB0aW1lX2VudGVyZWQ7CisgCisgCQkJCWlmIChzdGNiLT5hc29jLnNj
dHBfYXV0b2Nsb3NlX3RpY2tzICYmCisgCQkJCSAgICAoc2N0cF9pc19mZWF0dXJlX29uKGlucCwg
U0NUUF9QQ0JfRkxBR1NfQVVUT0NMT1NFKSkpIHsKK0BAIC0yNDgyLDkgKzI0ODQsMTEgQEAgc2N0
cF9wcm9jZXNzX2Nvb2tpZV9uZXcoc3RydWN0IG1idWYgKm0sIGludCBpcGhsZW4sIGludCBvZmZz
ZXQsCisgCSh2b2lkKVNDVFBfR0VUVElNRV9USU1FVkFMKCZzdGNiLT5hc29jLnRpbWVfZW50ZXJl
ZCk7CisgCWlmICgobmV0cCAhPSBOVUxMKSAmJiAoKm5ldHAgIT0gTlVMTCkpIHsKKyAJCS8qIGNh
bGN1bGF0ZSB0aGUgUlRUIGFuZCBzZXQgdGhlIGVuY2FwcyBwb3J0ICovCisrCQlzdHJ1Y3QgdGlt
ZXZhbCB0aW1lX2VudGVyZWQ7CisgCQkoKm5ldHApLT5SVE8gPSBzY3RwX2NhbGN1bGF0ZV9ydG8o
c3RjYiwgYXNvYywgKm5ldHAsCistCQkJCQkJICAmY29va2llLT50aW1lX2VudGVyZWQsIHNjdHBf
YWxpZ25fdW5zYWZlX21ha2Vjb3B5LAorKwkJCQkJCSAgJnRpbWVfZW50ZXJlZCwgc2N0cF9hbGln
bl91bnNhZmVfbWFrZWNvcHksCisgCQkJCQkJICBTQ1RQX1JUVF9GUk9NX05PTl9EQVRBKTsKKysJ
CWNvb2tpZS0+dGltZV9lbnRlcmVkID0gdGltZV9lbnRlcmVkOworIAl9CisgCS8qIHJlc3BvbmQg
d2l0aCBhIENPT0tJRS1BQ0sgKi8KKyAJc2N0cF9zZW5kX2Nvb2tpZV9hY2soc3RjYik7CitkaWZm
IC0tZ2l0IGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91
c3JzY3RwL3VzcnNjdHBsaWIvdXNyc2N0cGxpYi9uZXRpbmV0L3NjdHBfb3V0cHV0LmMgYi9Tb3Vy
Y2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNjdHAvdXNyc2N0
cGxpYi91c3JzY3RwbGliL25ldGluZXQvc2N0cF9vdXRwdXQuYworaW5kZXggYzAwMzE2NzJiZjEu
LmZhM2QzODkxYTg0IDEwMDc1NQorLS0tIGEvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1Nv
dXJjZS90aGlyZF9wYXJ0eS91c3JzY3RwL3VzcnNjdHBsaWIvdXNyc2N0cGxpYi9uZXRpbmV0L3Nj
dHBfb3V0cHV0LmMKKysrKyBiL1NvdXJjZS9UaGlyZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhp
cmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3VzcnNjdHBsaWIvbmV0aW5ldC9zY3RwX291dHB1
dC5jCitAQCAtNjAxNyw4ICs2MDE3LDkgQEAgc2N0cF9zZW5kX2luaXRpYXRlX2FjayhzdHJ1Y3Qg
c2N0cF9pbnBjYiAqaW5wLCBzdHJ1Y3Qgc2N0cF90Y2IgKnN0Y2IsCisgCW1lbXNldCgmc3RjLCAw
LCBzaXplb2Yoc3RydWN0IHNjdHBfc3RhdGVfY29va2llKSk7CisgCisgCS8qIHRoZSB0aW1lIEkg
YnVpbHQgY29va2llICovCistCSh2b2lkKVNDVFBfR0VUVElNRV9USU1FVkFMKCZzdGMudGltZV9l
bnRlcmVkKTsKKy0KKysJc3RydWN0IHRpbWV2YWwgdGltZV9lbnRlcmVkOworKwkodm9pZClTQ1RQ
X0dFVFRJTUVfVElNRVZBTCgmdGltZV9lbnRlcmVkKTsKKysJc3RjLnRpbWVfZW50ZXJlZCA9IHRp
bWVfZW50ZXJlZDsKKyAJLyogcG9wdWxhdGUgYW55IHRpZSB0YWdzICovCisgCWlmIChhc29jICE9
IE5VTEwpIHsKKyAJCS8qIHVubG9jayBiZWZvcmUgdGFnIHNlbGVjdGlvbnMgKi8KK2RpZmYgLS1n
aXQgYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJkX3BhcnR5L3VzcnNj
dHAvdXNyc2N0cGxpYi91c3JzY3RwbGliL25ldGluZXQvc2N0cF9wY2IuYyBiL1NvdXJjZS9UaGly
ZFBhcnR5L2xpYndlYnJ0Yy9Tb3VyY2UvdGhpcmRfcGFydHkvdXNyc2N0cC91c3JzY3RwbGliL3Vz
cnNjdHBsaWIvbmV0aW5ldC9zY3RwX3BjYi5jCitpbmRleCA2ZjA2ZDM1ZGY3OC4uNjZjNDIwZThm
NjEgMTAwNzU1CistLS0gYS9Tb3VyY2UvVGhpcmRQYXJ0eS9saWJ3ZWJydGMvU291cmNlL3RoaXJk
X3BhcnR5L3VzcnNjdHAvdXNyc2N0cGxpYi91c3JzY3RwbGliL25ldGluZXQvc2N0cF9wY2IuYwor
KysrIGIvU291cmNlL1RoaXJkUGFydHkvbGlid2VicnRjL1NvdXJjZS90aGlyZF9wYXJ0eS91c3Jz
Y3RwL3VzcnNjdHBsaWIvdXNyc2N0cGxpYi9uZXRpbmV0L3NjdHBfcGNiLmMKK0BAIC02ODEzLDcg
KzY4MTMsNiBAQCBzY3RwX3BjYl9pbml0KCkKKyAjZW5kaWYKKyAjaWYgZGVmaW5lZChfX1VzZXJz
cGFjZV9fKQorIAltYnVmX2luaXRpYWxpemUoTlVMTCk7CistCWF0b21pY19pbml0KCk7CisgI2lm
IGRlZmluZWQoSU5FVCkgfHwgZGVmaW5lZChJTkVUNikKKyAJcmVjdl90aHJlYWRfaW5pdCgpOwor
ICNlbmRpZgo=
</data>
<flag name="review"
          id="334450"
          type_id="1"
          status="+"
          setter="sam"
    />
    <flag name="commit-queue"
          id="334812"
          type_id="3"
          status="-"
          setter="commit-queue"
    />
          </attachment>
      

    </bug>

</bugzilla>