<?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>108457</bug_id>
          
          <creation_ts>2013-01-31 04:15:47 -0800</creation_ts>
          <short_desc>[EFL] Disable Web Intents</short_desc>
          <delta_ts>2013-01-31 10:45:21 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit EFL</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>abarth</cc>
    
    <cc>andersca</cc>
    
    <cc>ap</cc>
    
    <cc>benjamin</cc>
    
    <cc>dbates</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>kenneth</cc>
    
    <cc>kihong.kwon</cc>
    
    <cc>lucas.de.marchi</cc>
    
    <cc>rakuco</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>thakis</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>821368</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2013-01-31 04:15:47 -0800</bug_when>
    <thetext>The Web Intents spec seems to be pretty much dead and Google is planning to remove support for it from WebKit soon (See mailing list announcement). We should therefore disable Web Intents in EFL port and remove the corresponding code.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>821383</commentid>
    <comment_count>1</comment_count>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2013-01-31 04:38:25 -0800</bug_when>
    <thetext>I totally agree</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>821387</commentid>
    <comment_count>2</comment_count>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2013-01-31 04:44:25 -0800</bug_when>
    <thetext>AFAIK, Tizen WebKit also disable it because of same reason. CC&apos;ing Kihong.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>821442</commentid>
    <comment_count>3</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2013-01-31 05:44:17 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; AFAIK, Tizen WebKit also disable it because of same reason. CC&apos;ing Kihong.

Yes, it was never enabled for Tizen AFAIK.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>821446</commentid>
    <comment_count>4</comment_count>
      <attachid>185764</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2013-01-31 05:49:20 -0800</bug_when>
    <thetext>Created attachment 185764
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>821451</commentid>
    <comment_count>5</comment_count>
      <attachid>185764</attachid>
    <who name="Kenneth Rohde Christiansen">kenneth</who>
    <bug_when>2013-01-31 05:51:17 -0800</bug_when>
    <thetext>Comment on attachment 185764
Patch

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

Nice

&gt; Tools/DumpRenderTree/efl/TestRunnerEfl.cpp:911
&gt; -    DumpRenderTreeSupportEfl::deliverWebIntent(browser-&gt;mainFrame(), action, type, data);
&gt; +    notImplemented();

maybe add a comment that it is not intended to be implemented?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>821452</commentid>
    <comment_count>6</comment_count>
      <attachid>185766</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2013-01-31 05:54:54 -0800</bug_when>
    <thetext>Created attachment 185766
Patch

Take Kenneth&apos;s comments into consideration.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>821611</commentid>
    <comment_count>7</comment_count>
      <attachid>185766</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2013-01-31 10:07:43 -0800</bug_when>
    <thetext>Comment on attachment 185766
Patch

rs=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>821656</commentid>
    <comment_count>8</comment_count>
      <attachid>185766</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-31 10:45:16 -0800</bug_when>
    <thetext>Comment on attachment 185766
Patch

Clearing flags on attachment: 185766

Committed r141439: &lt;http://trac.webkit.org/changeset/141439&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>821657</commentid>
    <comment_count>9</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2013-01-31 10:45:21 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>185764</attachid>
            <date>2013-01-31 05:49:20 -0800</date>
            <delta_ts>2013-01-31 05:54:54 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>108457_disable_web_intents.patch</filename>
            <type>text/plain</type>
            <size>93087</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCBjMmI5OWQ1Li5mMmQ2MWZj
IDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAK
KzIwMTMtMDEtMzEgIENocmlzdG9waGUgRHVtZXogIDxkY2hyaXNAZ21haWwuY29tPgorCisgICAg
ICAgIFtFRkxdIERpc2FibGUgV2ViIEludGVudHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTEwODQ1NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFR1cm4gb2ZmIFdFQl9JTlRFTlRTIGZsYWcgaW4gRUZMIENN
YWtlIHByb2plY3QuCisKKyAgICAgICAgKiBTb3VyY2UvY21ha2UvT3B0aW9uc0VmbC5jbWFrZToK
KwogMjAxMy0wMS0zMCAgRG9taW5payBSw7Z0dHNjaGVzICA8ZG9taW5pay5yb3R0c2NoZXNAaW50
ZWwuY29tPgogCiAgICAgICAgIFtIYXJmQnV6el0gUmVtb3ZlIHRoZSBIYXJmQnV6ei1vbGQgY29k
ZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCmluZGV4IDQwYmQ1M2EuLmQyODZiOTIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxMy0w
MS0zMSAgQ2hyaXN0b3BoZSBEdW1leiAgPGRjaHJpc0BnbWFpbC5jb20+CisKKyAgICAgICAgW0VG
TF0gRGlzYWJsZSBXZWIgSW50ZW50cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTA4NDU3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgU2tpcCB3ZWJpbnRlbnRzLyB0ZXN0IGNhc2VzIGZvciBFRkwgcG9ydCBu
b3cgdGhhdAorICAgICAgICB0aGUgZmVhdHVyZSBpcyBkaXNhYmxlZC4KKworICAgICAgICAqIHBs
YXRmb3JtL2VmbC9UZXN0RXhwZWN0YXRpb25zOgorCiAyMDEzLTAxLTMwICBZdXJ5IFNlbWlraGF0
c2t5ICA8eXVyeXNAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IHRlc3Qg
dGhhdCByZWZlcmVuY2VzIGZyb20gRE9NIG5vZGVzIHRvIGV2ZW50IGxpc3RlbmVycyBhcmUgcHJl
c2VudGVkIGluIGhlYXAgc25hcHNob3RzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9lZmwvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2VmbC9UZXN0RXhw
ZWN0YXRpb25zCmluZGV4IGEzNTc1MGMuLjQyMjE3ZTMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L3BsYXRmb3JtL2VmbC9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3Jt
L2VmbC9UZXN0RXhwZWN0YXRpb25zCkBAIC0zNjksNiArMzY5LDkgQEAgd2Via2l0Lm9yZy9iLzgz
ODk4IGZhc3QvZXhjbHVzaW9ucwogd2Via2l0Lm9yZy9iLzg1NDY1IGNzczMvZmlsdGVycyBbIFNr
aXAgXQogd2Via2l0Lm9yZy9iLzg1NDY1IGNvbXBvc2l0aW5nL2ZpbHRlcnMgWyBTa2lwIF0KIAor
IyBXZWIgSW50ZW50cyBhcmUgbm8gbG9uZ2VyIHN1cHBvcnRlZC4KK0J1ZyhFRkwpIHdlYmludGVu
dHMgWyBXb250Rml4IF0KKwogIyBDU1MgaW1hZ2UtcmVzb2x1dGlvbiBpcyBub3QgeWV0IGVuYWJs
ZWQuCiB3ZWJraXQub3JnL2IvODUyNjIgZmFzdC9jc3MvaW1hZ2UtcmVzb2x1dGlvbgogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CmluZGV4IDYzMjVmMTcuLmM3NTYxMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTMt
MDEtMzEgIENocmlzdG9waGUgRHVtZXogIDxkY2hyaXNAZ21haWwuY29tPgorCisgICAgICAgIFtF
RkxdIERpc2FibGUgV2ViIEludGVudHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTEwODQ1NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFJlbW92ZSBpbnRlbnRzIGZpbGVzIGZyb20gRUZMIENNYWtlIHByb2pl
Y3QuCisKKyAgICAgICAgKiBQbGF0Zm9ybUVmbC5jbWFrZToKKwogMjAxMy0wMS0yNSAgUm9nZXIg
Rm9uZyAgPHJvZ2VyX2ZvbmdAYXBwbGUuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQuIFJlbmFt
ZSBMTEludCBwcm9qZWN0cyBmb2xkZXIgYW5kIG1ha2UgYXBwcm9wcmlhdGUgY2hhbmdlcyB0byBz
b2x1dGlvbnMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtRWZsLmNtYWtlIGIv
U291cmNlL1dlYktpdC9QbGF0Zm9ybUVmbC5jbWFrZQppbmRleCBmYzFjOGUyLi42MDU0ZWRjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtRWZsLmNtYWtlCisrKyBiL1NvdXJjZS9X
ZWJLaXQvUGxhdGZvcm1FZmwuY21ha2UKQEAgLTEzNSw4ICsxMzUsNiBAQCBsaXN0KEFQUEVORCBX
ZWJLaXRfU09VUkNFUwogICAgIGVmbC9ld2svZXdrX2ZpbGVfY2hvb3Nlci5jcHAKICAgICBlZmwv
ZXdrL2V3a19mcmFtZS5jcHAKICAgICBlZmwvZXdrL2V3a19oaXN0b3J5LmNwcAotICAgIGVmbC9l
d2svZXdrX2ludGVudC5jcHAKLSAgICBlZmwvZXdrL2V3a19pbnRlbnRfcmVxdWVzdC5jcHAKICAg
ICBlZmwvZXdrL2V3a19qcy5jcHAKICAgICBlZmwvZXdrL2V3a19tYWluLmNwcAogICAgIGVmbC9l
d2svZXdrX25ldHdvcmsuY3BwCkBAIC0xOTksOCArMTk3LDYgQEAgc2V0KEVXZWJLaXRfSEVBREVS
UwogICAgICR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9lZmwvZXdrL2V3a19maWxlX2Nob29z
ZXIuaAogICAgICR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9lZmwvZXdrL2V3a19mcmFtZS5o
CiAgICAgJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L2VmbC9ld2svZXdrX2hpc3RvcnkuaAot
ICAgICR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9lZmwvZXdrL2V3a19pbnRlbnQuaAotICAg
ICR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9lZmwvZXdrL2V3a19pbnRlbnRfcmVxdWVzdC5o
CiAgICAgJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L2VmbC9ld2svZXdrX2pzLmgKICAgICAk
e0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vZWZsL2V3ay9ld2tfbWFpbi5oCiAgICAgJHtDTUFL
RV9DVVJSRU5UX1NPVVJDRV9ESVJ9L2VmbC9ld2svZXdrX25ldHdvcmsuaApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9n
CmluZGV4IDRhYTA5OTguLjkzZDgxZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOCBA
QAorMjAxMy0wMS0zMSAgQ2hyaXN0b3BoZSBEdW1leiAgPGRjaHJpc0BnbWFpbC5jb20+CisKKyAg
ICAgICAgW0VGTF0gRGlzYWJsZSBXZWIgSW50ZW50cworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA4NDU3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgUmVtb3ZlIGNvZGUgcmVsYXRlZCB0byBXZWIgSW50ZW50
cyBmcm9tIEVGTAorICAgICAgICBXZWJLaXQuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9E
dW1wUmVuZGVyVHJlZVN1cHBvcnRFZmwuY3BwOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1
bXBSZW5kZXJUcmVlU3VwcG9ydEVmbC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1l
TG9hZGVyQ2xpZW50RWZsLmNwcDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRl
ckNsaWVudEVmbC5oOgorICAgICAgICAoRnJhbWVMb2FkZXJDbGllbnRFZmwpOgorICAgICAgICAq
IGV3ay9FV2ViS2l0Lmg6CisgICAgICAgICogZXdrL2V3a19mcmFtZS5jcHA6CisgICAgICAgICog
ZXdrL2V3a19mcmFtZS5oOgorICAgICAgICAqIGV3ay9ld2tfZnJhbWVfcHJpdmF0ZS5oOgorICAg
ICAgICAqIGV3ay9ld2tfaW50ZW50LmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBld2svZXdrX2lu
dGVudC5oOiBSZW1vdmVkLgorICAgICAgICAqIGV3ay9ld2tfaW50ZW50X3ByaXZhdGUuaDogUmVt
b3ZlZC4KKyAgICAgICAgKiBld2svZXdrX2ludGVudF9yZXF1ZXN0LmNwcDogUmVtb3ZlZC4KKyAg
ICAgICAgKiBld2svZXdrX2ludGVudF9yZXF1ZXN0Lmg6IFJlbW92ZWQuCisKIDIwMTMtMDEtMzEg
IFNoZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5ib3RAZ21haWwuY29tPgogCiAgICAgICAgIFVu
cmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxNDExMTAuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2VmbC9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmwuY3BwIGIvU291cmNl
L1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsLmNwcApp
bmRleCBhODc1YmNlLi43MTliNjk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJD
b3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmwuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvZWZsL1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbC5jcHAKQEAgLTI1
LDcgKzI1LDYgQEAKICNpbmNsdWRlICJGcmFtZUxvYWRlckNsaWVudEVmbC5oIgogI2luY2x1ZGUg
ImV3a19mcmFtZV9wcml2YXRlLmgiCiAjaW5jbHVkZSAiZXdrX2hpc3RvcnlfcHJpdmF0ZS5oIgot
I2luY2x1ZGUgImV3a19pbnRlbnRfcHJpdmF0ZS5oIgogI2luY2x1ZGUgImV3a19wcml2YXRlLmgi
CiAjaW5jbHVkZSAiZXdrX3ZpZXdfcHJpdmF0ZS5oIgogCkBAIC00Myw3ICs0Miw2IEBACiAjaW5j
bHVkZSA8SFRNTElucHV0RWxlbWVudC5oPgogI2luY2x1ZGUgPEluc3BlY3RvckNvbnRyb2xsZXIu
aD4KICNpbmNsdWRlIDxJbnRSZWN0Lmg+Ci0jaW5jbHVkZSA8SW50ZW50Lmg+CiAjaW5jbHVkZSA8
SlNDU1NTdHlsZURlY2xhcmF0aW9uLmg+CiAjaW5jbHVkZSA8SlNFbGVtZW50Lmg+CiAjaW5jbHVk
ZSA8SmF2YVNjcmlwdENvcmUvT3BhcXVlSlNTdHJpbmcuaD4KQEAgLTY1OSw0MyArNjU3LDYgQEAg
dm9pZCBEdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmw6OnNldFNob3VsZFRyYWNrVmlzaXRlZExpbmtz
KGJvb2wgc2hvdWxkVHJhY2spCiAgICAgV2ViQ29yZTo6UGFnZUdyb3VwOjpzZXRTaG91bGRUcmFj
a1Zpc2l0ZWRMaW5rcyhzaG91bGRUcmFjayk7CiB9CiAKLXZvaWQgRHVtcFJlbmRlclRyZWVTdXBw
b3J0RWZsOjpzZW5kV2ViSW50ZW50UmVzcG9uc2UoRXdrX0ludGVudF9SZXF1ZXN0KiByZXF1ZXN0
LCBKU1N0cmluZ1JlZiByZXNwb25zZSkKLXsKLSNpZiBFTkFCTEUoV0VCX0lOVEVOVFMpCi0gICAg
U3RyaW5nIHJlc3BvbnNlU3RyaW5nID0gcmVzcG9uc2UtPnN0cmluZygpOwotICAgIGlmIChyZXNw
b25zZVN0cmluZy5pc0VtcHR5KCkpCi0gICAgICAgIGV3a19pbnRlbnRfcmVxdWVzdF9mYWlsdXJl
X3Bvc3QocmVxdWVzdCwgV2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoU3Ry
aW5nOjpmcm9tVVRGOCgiRVJST1IiKSkpOwotICAgIGVsc2UKLSAgICAgICAgZXdrX2ludGVudF9y
ZXF1ZXN0X3Jlc3VsdF9wb3N0KHJlcXVlc3QsIFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZTo6Y3JlYXRlKFN0cmluZyhyZXNwb25zZVN0cmluZy5pbXBsKCkpKSk7Ci0jZW5kaWYKLX0KLQot
V2ViQ29yZTo6TWVzc2FnZVBvcnRDaGFubmVsQXJyYXkqIER1bXBSZW5kZXJUcmVlU3VwcG9ydEVm
bDo6aW50ZW50TWVzc2FnZVBvcnRzKGNvbnN0IEV3a19JbnRlbnQqIGludGVudCkKLXsKLSNpZiBF
TkFCTEUoV0VCX0lOVEVOVFMpCi0gICAgY29uc3QgV2ViQ29yZTo6SW50ZW50KiBjb3JlSW50ZW50
ID0gRVdLUHJpdmF0ZTo6Y29yZUludGVudChpbnRlbnQpOwotICAgIHJldHVybiBjb3JlSW50ZW50
ID8gY29yZUludGVudC0+bWVzc2FnZVBvcnRzKCkgOiAwOwotI2Vsc2UKLSAgICBVTlVTRURfUEFS
QU0oaW50ZW50KTsKLSAgICByZXR1cm4gMDsKLSNlbmRpZgotfQotCi12b2lkIER1bXBSZW5kZXJU
cmVlU3VwcG9ydEVmbDo6ZGVsaXZlcldlYkludGVudChFdmFzX09iamVjdCogZXdrRnJhbWUsIEpT
U3RyaW5nUmVmIGFjdGlvbiwgSlNTdHJpbmdSZWYgdHlwZSwgSlNTdHJpbmdSZWYgZGF0YSkKLXsK
LSNpZiBFTkFCTEUoV0VCX0lOVEVOVFMpCi0gICAgUmVmUHRyPFdlYkNvcmU6OlNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZT4gc2VyaWFsaXplZERhdGEgPSBXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFs
dWU6OmNyZWF0ZShkYXRhLT5zdHJpbmcoKSk7Ci0gICAgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSBl
YyA9IDA7Ci0gICAgV2ViQ29yZTo6TWVzc2FnZVBvcnRBcnJheSBwb3J0czsKLSAgICBSZWZQdHI8
V2ViQ29yZTo6SW50ZW50PiBjb3JlSW50ZW50ID0gV2ViQ29yZTo6SW50ZW50OjpjcmVhdGUoYWN0
aW9uLT5zdHJpbmcoKSwgdHlwZS0+c3RyaW5nKCksIHNlcmlhbGl6ZWREYXRhLmdldCgpLCBwb3J0
cywgZWMpOwotICAgIGlmIChlYykKLSAgICAgICAgcmV0dXJuOwotICAgIEV3a19JbnRlbnQqIGV3
a0ludGVudCA9IGV3a19pbnRlbnRfbmV3KGNvcmVJbnRlbnQuZ2V0KCkpOwotICAgIGV3a19mcmFt
ZV9pbnRlbnRfZGVsaXZlcihld2tGcmFtZSwgZXdrSW50ZW50KTsKLSAgICBld2tfaW50ZW50X2Zy
ZWUoZXdrSW50ZW50KTsKLSNlbmRpZgotfQotCiB2b2lkIER1bXBSZW5kZXJUcmVlU3VwcG9ydEVm
bDo6c2V0Q29tcG9zaXRpb24oRXZhc19PYmplY3QqIGV3a1ZpZXcsIGNvbnN0IGNoYXIqIHRleHQs
IGludCBzdGFydCwgaW50IGxlbmd0aCkKIHsKICAgICBEUlRfU1VQUFJUX1BBR0VfR0VUX09SX1JF
VFVSTihld2tWaWV3LCBwYWdlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNv
cmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbC5oIGIvU291cmNlL1dlYktpdC9lZmwv
V2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsLmgKaW5kZXggN2NiYWZhYy4u
YzQzNTViOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRHVt
cFJlbmRlclRyZWVTdXBwb3J0RWZsLmgKKysrIGIvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1
cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsLmgKQEAgLTM1LDggKzM1LDYgQEAKICNlbmRp
ZgogCiB0eXBlZGVmIHN0cnVjdCBfRXdrX0hpc3RvcnlfSXRlbSBFd2tfSGlzdG9yeV9JdGVtOwot
dHlwZWRlZiBzdHJ1Y3QgX0V3a19JbnRlbnQgRXdrX0ludGVudDsKLXR5cGVkZWYgc3RydWN0IF9F
d2tfSW50ZW50X1JlcXVlc3QgRXdrX0ludGVudF9SZXF1ZXN0OwogCiB0eXBlZGVmIFZlY3RvcjxF
d2tfSGlzdG9yeV9JdGVtKj4gSGlzdG9yeUl0ZW1DaGlsZHJlblZlY3RvcjsKIApAQCAtMTIzLDEx
ICsxMjEsNiBAQCBwdWJsaWM6CiAgICAgc3RhdGljIHZvaWQgc2V0U2VyaWFsaXplSFRUUExvYWRz
KGJvb2wpOwogICAgIHN0YXRpYyB2b2lkIHNldFNob3VsZFRyYWNrVmlzaXRlZExpbmtzKGJvb2wp
OwogICAgIAotICAgIC8vIFdlYiBJbnRlbnRzCi0gICAgc3RhdGljIHZvaWQgc2VuZFdlYkludGVu
dFJlc3BvbnNlKEV3a19JbnRlbnRfUmVxdWVzdCosIEpTU3RyaW5nUmVmIHJlc3BvbnNlKTsKLSAg
ICBzdGF0aWMgV2ViQ29yZTo6TWVzc2FnZVBvcnRDaGFubmVsQXJyYXkqIGludGVudE1lc3NhZ2VQ
b3J0cyhjb25zdCBFd2tfSW50ZW50Kik7Ci0gICAgc3RhdGljIHZvaWQgZGVsaXZlcldlYkludGVu
dChFdmFzX09iamVjdCogZXdrRnJhbWUsIEpTU3RyaW5nUmVmIGFjdGlvbiwgSlNTdHJpbmdSZWYg
dHlwZSwgSlNTdHJpbmdSZWYgZGF0YSk7Ci0KICAgICAvLyBUZXh0SW5wdXRDb250cm9sbGVyCiAg
ICAgc3RhdGljIHZvaWQgc2V0Q29tcG9zaXRpb24oRXZhc19PYmplY3QqLCBjb25zdCBjaGFyKiwg
aW50LCBpbnQpOwogICAgIHN0YXRpYyBib29sIGhhc0NvbXBvc2l0aW9uKGNvbnN0IEV2YXNfT2Jq
ZWN0Kik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9GcmFt
ZUxvYWRlckNsaWVudEVmbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9G
cmFtZUxvYWRlckNsaWVudEVmbC5jcHAKaW5kZXggOWMyYzlkYi4uZTk5MGRjYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRFZmwu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xp
ZW50RWZsLmNwcApAQCAtNDYsNyArNDYsNiBAQAogI2luY2x1ZGUgIkZyYW1lVmlldy5oIgogI2lu
Y2x1ZGUgIkhUTUxGb3JtRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUVFBTdGF0dXNDb2Rlcy5oIgot
I2luY2x1ZGUgIkludGVudFJlcXVlc3QuaCIKICNpbmNsdWRlICJNSU1FVHlwZVJlZ2lzdHJ5Lmgi
CiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKICNpbmNsdWRlICJQYWdlLmgiCkBAIC01OCw3
ICs1Nyw2IEBACiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRlICJXZWJLaXRWZXJzaW9u
LmgiCiAjaW5jbHVkZSAiZXdrX2ZyYW1lX3ByaXZhdGUuaCIKLSNpbmNsdWRlICJld2tfaW50ZW50
X3ByaXZhdGUuaCIKICNpbmNsdWRlICJld2tfcHJpdmF0ZS5oIgogI2luY2x1ZGUgImV3a19zZXR0
aW5nc19wcml2YXRlLmgiCiAjaW5jbHVkZSAiZXdrX3ZpZXdfcHJpdmF0ZS5oIgpAQCAtMTAyNCwz
MCArMTAyMiw2IEBAIHZvaWQgRnJhbWVMb2FkZXJDbGllbnRFZmw6OmRpc3BhdGNoRGlkQmVjb21l
RnJhbWVzZXQoYm9vbCkKIHsKIH0KIAotI2lmIEVOQUJMRShXRUJfSU5URU5UUykKLXZvaWQgRnJh
bWVMb2FkZXJDbGllbnRFZmw6OmRpc3BhdGNoSW50ZW50KFBhc3NSZWZQdHI8V2ViQ29yZTo6SW50
ZW50UmVxdWVzdD4gaW50ZW50UmVxdWVzdCkKLXsKLSAgICBFd2tfSW50ZW50X1JlcXVlc3QqIGV3
a1JlcXVlc3QgPSBld2tfaW50ZW50X3JlcXVlc3RfbmV3KGludGVudFJlcXVlc3QpOwotICAgIGV3
a19mcmFtZV9pbnRlbnRfbmV3KG1fZnJhbWUsIGV3a1JlcXVlc3QpOwotICAgIGV3a19pbnRlbnRf
cmVxdWVzdF91bnJlZihld2tSZXF1ZXN0KTsKLX0KLSNlbmRpZgotCi0jaWYgRU5BQkxFKFdFQl9J
TlRFTlRTX1RBRykKLXZvaWQgRnJhbWVMb2FkZXJDbGllbnRFZmw6OnJlZ2lzdGVySW50ZW50U2Vy
dmljZShjb25zdCBTdHJpbmcmIGFjdGlvbiwgY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBLVVJM
JiBocmVmLCBjb25zdCBTdHJpbmcmIHRpdGxlLCBjb25zdCBTdHJpbmcmIGRpc3Bvc2l0aW9uKQot
ewotICAgIENTdHJpbmcgYWN0aW9uU3RyID0gYWN0aW9uLnV0ZjgoKTsKLSAgICBDU3RyaW5nIHR5
cGVTdHIgPSB0eXBlLnV0ZjgoKTsKLSAgICBDU3RyaW5nIGhyZWZTdHIgPSBocmVmLnN0cmluZygp
LnV0ZjgoKTsKLSAgICBDU3RyaW5nIHRpdGxlU3RyID0gdGl0bGUudXRmOCgpOwotICAgIENTdHJp
bmcgZGlzcG9zaXRpb25TdHIgPSBkaXNwb3NpdGlvbi51dGY4KCk7Ci0KLSAgICBFd2tfSW50ZW50
X1NlcnZpY2VfSW5mbyBzZXJ2aWNlSW5mbyA9IHsgYWN0aW9uU3RyLmRhdGEoKSwgdHlwZVN0ci5k
YXRhKCksIGhyZWZTdHIuZGF0YSgpLCB0aXRsZVN0ci5kYXRhKCksIGRpc3Bvc2l0aW9uU3RyLmRh
dGEoKSB9OwotCi0gICAgZXdrX2ZyYW1lX2ludGVudF9zZXJ2aWNlX3JlZ2lzdGVyKG1fZnJhbWUs
ICZzZXJ2aWNlSW5mbyk7Ci19Ci0jZW5kaWYKLQogUGFzc1JlZlB0cjxGcmFtZU5ldHdvcmtpbmdD
b250ZXh0PiBGcmFtZUxvYWRlckNsaWVudEVmbDo6Y3JlYXRlTmV0d29ya2luZ0NvbnRleHQoKQog
ewogICAgIHJldHVybiBGcmFtZU5ldHdvcmtpbmdDb250ZXh0RWZsOjpjcmVhdGUoRVdLUHJpdmF0
ZTo6Y29yZUZyYW1lKG1fZnJhbWUpLCBtX2ZyYW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvZWZsL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50RWZsLmggYi9Tb3VyY2UvV2Vi
S2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEVmbC5oCmluZGV4IDE3ZmRi
NTMuLmJmMmNiMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0
L0ZyYW1lTG9hZGVyQ2xpZW50RWZsLmgKKysrIGIvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1
cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRFZmwuaApAQCAtMTg1LDEyICsxODUsNiBAQCBjbGFzcyBG
cmFtZUxvYWRlckNsaWVudEVmbCA6IHB1YmxpYyBGcmFtZUxvYWRlckNsaWVudCB7CiAgICAgdmly
dHVhbCB2b2lkIHByb3Zpc2lvbmFsTG9hZFN0YXJ0ZWQoKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlk
RmluaXNoTG9hZCgpOwogICAgIHZpcnR1YWwgdm9pZCBwcmVwYXJlRm9yRGF0YVNvdXJjZVJlcGxh
Y2VtZW50KCk7Ci0jaWYgRU5BQkxFKFdFQl9JTlRFTlRTKQotICAgIHZpcnR1YWwgdm9pZCBkaXNw
YXRjaEludGVudChQYXNzUmVmUHRyPFdlYkNvcmU6OkludGVudFJlcXVlc3Q+KTsKLSNlbmRpZgot
I2lmIEVOQUJMRShXRUJfSU5URU5UU19UQUcpCi0gICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVySW50
ZW50U2VydmljZShjb25zdCBTdHJpbmcmIGFjdGlvbiwgY29uc3QgU3RyaW5nJiB0eXBlLCBjb25z
dCBLVVJMJiBocmVmLCBjb25zdCBTdHJpbmcmIHRpdGxlLCBjb25zdCBTdHJpbmcmIGRpc3Bvc2l0
aW9uKTsKLSNlbmRpZgogCiAgICAgdmlydHVhbCBXVEY6OlBhc3NSZWZQdHI8RG9jdW1lbnRMb2Fk
ZXI+IGNyZWF0ZURvY3VtZW50TG9hZGVyKGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFN1
YnN0aXR1dGVEYXRhJik7CiAgICAgdmlydHVhbCB2b2lkIHNldFRpdGxlKGNvbnN0IFN0cmluZ1dp
dGhEaXJlY3Rpb24mIHRpdGxlLCBjb25zdCBLVVJMJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2VmbC9ld2svRVdlYktpdC5oIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL0VXZWJLaXQuaApp
bmRleCA4NjMzZjc2Li42ODI0MTFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2sv
RVdlYktpdC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9FV2ViS2l0LmgKQEAgLTM1LDgg
KzM1LDYgQEAKICNpbmNsdWRlICJld2tfZmlsZV9jaG9vc2VyLmgiCiAjaW5jbHVkZSAiZXdrX2Zy
YW1lLmgiCiAjaW5jbHVkZSAiZXdrX2hpc3RvcnkuaCIKLSNpbmNsdWRlICJld2tfaW50ZW50Lmgi
Ci0jaW5jbHVkZSAiZXdrX2ludGVudF9yZXF1ZXN0LmgiCiAjaW5jbHVkZSAiZXdrX2pzLmgiCiAj
aW5jbHVkZSAiZXdrX21haW4uaCIKICNpbmNsdWRlICJld2tfbmV0d29yay5oIgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19mcmFtZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Vm
bC9ld2svZXdrX2ZyYW1lLmNwcAppbmRleCA2ZDM2ZGZkLi4zZTE2MjY0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2ZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Vm
bC9ld2svZXdrX2ZyYW1lLmNwcApAQCAtMjQsOCArMjQsNiBAQAogI2luY2x1ZGUgImNvbmZpZy5o
IgogI2luY2x1ZGUgImV3a19mcmFtZS5oIgogCi0jaW5jbHVkZSAiRE9NV2luZG93SW50ZW50cy5o
IgotI2luY2x1ZGUgIkRlbGl2ZXJlZEludGVudC5oIgogI2luY2x1ZGUgIkRvY3VtZW50TG9hZGVy
LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiRXZl
bnRIYW5kbGVyLmgiCkBAIC01NSw3ICs1Myw2IEBACiAjaW5jbHVkZSAiU3Vic3RpdHV0ZURhdGEu
aCIKICNpbmNsdWRlICJXaW5kb3dzS2V5Ym9hcmRDb2Rlcy5oIgogI2luY2x1ZGUgImV3a19mcmFt
ZV9wcml2YXRlLmgiCi0jaW5jbHVkZSAiZXdrX2ludGVudF9wcml2YXRlLmgiCiAjaW5jbHVkZSAi
ZXdrX3ByaXZhdGUuaCIKICNpbmNsdWRlICJld2tfc2VjdXJpdHlfb3JpZ2luX3ByaXZhdGUuaCIK
ICNpbmNsdWRlICJld2tfdG91Y2hfZXZlbnRfcHJpdmF0ZS5oIgpAQCAtNzUzLDMwICs3NTAsNiBA
QCBFd2tfSGl0X1Rlc3QqIGV3a19mcmFtZV9oaXRfdGVzdF9uZXcoY29uc3QgRXZhc19PYmplY3Qq
IGV3a0ZyYW1lLCBpbnQgeCwgaW50IHkpCiAgICAgcmV0dXJuIGhpdFRlc3Q7CiB9CiAKLXZvaWQg
ZXdrX2ZyYW1lX2ludGVudF9kZWxpdmVyKGNvbnN0IEV2YXNfT2JqZWN0KiBld2tGcmFtZSwgRXdr
X0ludGVudCogZXdrX2ludGVudCkKLXsKLSNpZiBFTkFCTEUoV0VCX0lOVEVOVFMpCi0gICAgRVdL
X0ZSQU1FX1NEX0dFVF9PUl9SRVRVUk4oZXdrRnJhbWUsIHNtYXJ0RGF0YSk7Ci0gICAgRUlOQV9T
QUZFVFlfT05fTlVMTF9SRVRVUk4oc21hcnREYXRhLT5mcmFtZSk7Ci0KLSAgICBXZWJDb3JlOjpJ
bnRlbnQqIGludGVudCA9IEVXS1ByaXZhdGU6OmNvcmVJbnRlbnQoZXdrX2ludGVudCk7Ci0KLSAg
ICBPd25QdHI8V2ViQ29yZTo6TWVzc2FnZVBvcnRDaGFubmVsQXJyYXk+IGNoYW5uZWxzOwotICAg
IFdlYkNvcmU6Ok1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5KiBvcmlnQ2hhbm5lbHMgPSBpbnRlbnQt
Pm1lc3NhZ2VQb3J0cygpOwotICAgIGlmIChvcmlnQ2hhbm5lbHMgJiYgb3JpZ0NoYW5uZWxzLT5z
aXplKCkpIHsKLSAgICAgICAgY2hhbm5lbHMgPSBhZG9wdFB0cihuZXcgV2ViQ29yZTo6TWVzc2Fn
ZVBvcnRDaGFubmVsQXJyYXkob3JpZ0NoYW5uZWxzLT5zaXplKCkpKTsKLSAgICAgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBvcmlnQ2hhbm5lbHMtPnNpemUoKTsgKytpKQotICAgICAgICAgICAg
KCpjaGFubmVscylbaV0gPSBvcmlnQ2hhbm5lbHMtPmF0KGkpLnJlbGVhc2UoKTsKLSAgICB9Ci0g
ICAgT3duUHRyPFdlYkNvcmU6Ok1lc3NhZ2VQb3J0QXJyYXk+IHBvcnRzID0gV2ViQ29yZTo6TWVz
c2FnZVBvcnQ6OmVudGFuZ2xlUG9ydHMoKihzbWFydERhdGEtPmZyYW1lLT5kb2N1bWVudCgpKSwg
Y2hhbm5lbHMucmVsZWFzZSgpKTsKLQotICAgIE93blB0cjxXZWJDb3JlOjpEZWxpdmVyZWRJbnRl
bnRDbGllbnQ+IGR1bW15Q2xpZW50OwotICAgIFJlZlB0cjxXZWJDb3JlOjpEZWxpdmVyZWRJbnRl
bnQ+IGRlbGl2ZXJlZEludGVudCA9IFdlYkNvcmU6OkRlbGl2ZXJlZEludGVudDo6Y3JlYXRlKHNt
YXJ0RGF0YS0+ZnJhbWUsIGR1bW15Q2xpZW50LnJlbGVhc2UoKSwgaW50ZW50LT5hY3Rpb24oKSwg
aW50ZW50LT50eXBlKCksIGludGVudC0+ZGF0YSgpLCBwb3J0cy5yZWxlYXNlKCksIGludGVudC0+
ZXh0cmFzKCkpOwotCi0gICAgV2ViQ29yZTo6RE9NV2luZG93SW50ZW50czo6ZnJvbShzbWFydERh
dGEtPmZyYW1lLT5kb2N1bWVudCgpLT5kb21XaW5kb3coKSktPmRlbGl2ZXIoZGVsaXZlcmVkSW50
ZW50LnJlbGVhc2UoKSk7Ci0jZW5kaWYKLX0KLQogRWluYV9Cb29sCiBld2tfZnJhbWVfc2Nyb2xs
X2FkZChFdmFzX09iamVjdCogZXdrRnJhbWUsIGludCBkZWx0YVgsIGludCBkZWx0YVkpCiB7CkBA
IC0xNTUxLDMyICsxNTI0LDYgQEAgdm9pZCBld2tfZnJhbWVfbG9hZF9wcm9ncmVzc19jaGFuZ2Vk
KEV2YXNfT2JqZWN0KiBld2tGcmFtZSkKIAogLyoqCiAgKiBAaW50ZXJuYWwKLSAqIFJlcG9ydHMg
bmV3IGludGVudC4KLSAqCi0gKiBFbWl0cyBzaWduYWw6ICJpbnRlbnQsbmV3IiB3aXRoIHBvaW50
ZXIgdG8gYSBFd2tfSW50ZW50X1JlcXVlc3QuCi0gKi8KLXZvaWQgZXdrX2ZyYW1lX2ludGVudF9u
ZXcoRXZhc19PYmplY3QqIGV3a0ZyYW1lLCBFd2tfSW50ZW50X1JlcXVlc3QqIHJlcXVlc3QpCi17
Ci0jaWYgRU5BQkxFKFdFQl9JTlRFTlRTKQotICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNr
X2NhbGwoZXdrRnJhbWUsICJpbnRlbnQsbmV3IiwgcmVxdWVzdCk7Ci0jZW5kaWYKLX0KLQotLyoq
Ci0gKiBAaW50ZXJuYWwKLSAqIFJlcG9ydHMgYW4gaW50ZW50IHNlcnZpY2UgcmVnaXN0cmF0aW9u
LgotICoKLSAqIEVtaXRzIHNpZ25hbDogImludGVudCxzZXJ2aWNlLHJlZ2lzdGVyIiB3aXRoIHBv
aW50ZXIgdG8gYSBFd2tfSW50ZW50X1NlcnZpY2VfSW5mby4KLSAqLwotdm9pZCBld2tfZnJhbWVf
aW50ZW50X3NlcnZpY2VfcmVnaXN0ZXIoRXZhc19PYmplY3QqIGV3a0ZyYW1lLCBFd2tfSW50ZW50
X1NlcnZpY2VfSW5mbyogaW5mbykKLXsKLSNpZiBFTkFCTEUoV0VCX0lOVEVOVFNfVEFHKQotICAg
IGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwoZXdrRnJhbWUsICJpbnRlbnQsc2Vydmlj
ZSxyZWdpc3RlciIsIGluZm8pOwotI2VuZGlmCi19Ci0KLS8qKgotICogQGludGVybmFsCiAgKgog
ICogUmVwb3J0cyBjb250ZW50cyBzaXplIGNoYW5nZWQuCiAgKi8KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvZWZsL2V3ay9ld2tfZnJhbWUuaCBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tf
ZnJhbWUuaAppbmRleCBiMTk2MzMyLi5mZDA2MWNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2VmbC9ld2svZXdrX2ZyYW1lLmgKKysrIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19mcmFt
ZS5oCkBAIC00MCw4ICs0MCw2IEBACiAgKiAgLSAiZWRpdG9yY2xpZW50LGNvbnRlbnRzLGNoYW5n
ZWQiLCB2b2lkOiByZXBvcnRzIHRoYXQgZWRpdG9yIGNsaWVudCdzCiAgKiAgICBjb250ZW50cyB3
ZXJlIGNoYW5nZWQKICAqICAtICJpY29uLGNoYW5nZWQiLCB2b2lkOiBmcmFtZSBmYXZpY29uIGNo
YW5nZWQuCi0gKiAgLSAiaW50ZW50LG5ldyIsIEV3a19JbnRlbnRfUmVxdWVzdCo6IHJlcG9ydHMg
bmV3IGludGVudC4KLSAqICAtICJpbnRlbnQsc2VydmljZSxyZWdpc3RlciIsIEV3a19JbnRlbnRf
U2VydmljZV9JbmZvKjogcmVwb3J0cyBuZXcgaW50ZW50IHNlcnZpY2UgcmVnaXN0cmF0aW9uLgog
ICogIC0gImxvYWQsY29tbWl0dGVkIiwgdm9pZDogcmVwb3J0cyBsb2FkIGNvbW1pdHRlZC4KICAq
ICAtICJsb2FkLGRvY3VtZW50LGZpbmlzaGVkIiwgdm9pZDogZnJhbWUgZmluaXNoZWQgbG9hZGlu
ZyB0aGUgZG9jdW1lbnQuCiAgKiAgLSAibG9hZCxlcnJvciIsIGNvbnN0IEV3a19GcmFtZV9Mb2Fk
X0Vycm9yKjogcmVwb3J0cyBsb2FkIGZhaWxlZApAQCAtODIsNyArODAsNiBAQAogI2lmbmRlZiBl
d2tfZnJhbWVfaAogI2RlZmluZSBld2tfZnJhbWVfaAogCi0jaW5jbHVkZSAiZXdrX2ludGVudC5o
IgogI2luY2x1ZGUgImV3a19zZWN1cml0eV9vcmlnaW4uaCIKIAogI2luY2x1ZGUgPEV2YXMuaD4K
QEAgLTE4NCwxNyArMTgxLDYgQEAgc3RydWN0IF9Fd2tfRnJhbWVfWHNzX05vdGlmaWNhdGlvbiB7
CiAgICAgRWluYV9Cb29sIGlzX2VudGlyZV9wYWdlX2Jsb2NrZWQ7IC8qKiA8IGluZGljYXRlcyBp
ZiB0aGUgZW50aXJlIHBhZ2Ugd2FzIGJsb2NrZWQgYnkgWFNTQXVkaXRvciAqLwogfTsKIAotLy8v
IENyZWF0ZXMgYSB0eXBlIG5hbWUgZm9yIEV3a19JbnRlbnRfU2VydmljZV9JbmZvLgotdHlwZWRl
ZiBzdHJ1Y3QgX0V3a19JbnRlbnRfU2VydmljZV9JbmZvIEV3a19JbnRlbnRfU2VydmljZV9JbmZv
OwotCi1zdHJ1Y3QgX0V3a19JbnRlbnRfU2VydmljZV9JbmZvIHsKLSAgICBjb25zdCBjaGFyICph
Y3Rpb247IC8qKjwgYW4gb3BhcXVlIHN0cmluZyBpbmRpY2F0aW5nIHRoZSBiZWhhdmlvciBjbGFz
cyB0aGUgc2VydmljZSBzdXBwb3J0cy4gKi8KLSAgICBjb25zdCBjaGFyICp0eXBlOyAvKio8IGEg
c3RyaW5nIHNwZWNpZnlpbmcgdGhlIHR5cGUgb2YgcGF5bG9hZCBkYXRhIHRoZSBzZXJ2aWNlIGNh
biBhY2NlcHQuICovCi0gICAgY29uc3QgY2hhciAqaHJlZjsgLyoqPCBzZXJ2aWNlIFVSSS4gKi8K
LSAgICBjb25zdCBjaGFyICp0aXRsZTsgLyoqPCBBIGh1bWFuLXJlYWRhYmxlIHRpdGxlIGZvciB0
aGUgc2VydmljZS4gKi8KLSAgICBjb25zdCBjaGFyICpkaXNwb3NpdGlvbjsgLyoqPCBBIGhpbnQg
YWJvdXQgd2hldGhlciB0aGUgc2VydmljZSBjYW4gYmUgcnVuICJpbmxpbmUiIG9yIGluIGEgbmV3
ICJ3aW5kb3ciLiAqLwotfTsKLQogLy8vIEVudW0gY29udGFpbmluZyBoaXQgdGVzdCBkYXRhIHR5
cGVzCiB0eXBlZGVmIGVudW0gewogICAgIEVXS19ISVRfVEVTVF9SRVNVTFRfQ09OVEVYVF9ET0NV
TUVOVCA9IDEgPDwgMSwKQEAgLTcxNSwxNCArNzAxLDYgQEAgRUFQSSB2b2lkICAgICAgICAgIGV3
a19mcmFtZV9oaXRfdGVzdF9mcmVlKEV3a19IaXRfVGVzdCAqaGl0X3Rlc3QpOwogRUFQSSBFd2tf
SGl0X1Rlc3QgKmV3a19mcmFtZV9oaXRfdGVzdF9uZXcoY29uc3QgRXZhc19PYmplY3QgKm8sIGlu
dCB4LCBpbnQgeSk7CiAKIC8qKgotICogRGVsaXZlcnMgYW4gaW50ZW50IHRvIGEgdGFyZ2V0IHNl
cnZpY2UgcGFnZSBpbiB0aGUgZnJhbWUuCi0gKgotICogQHBhcmFtIG8gZnJhbWUgb2JqZWN0IHRv
IGRlbGl2ZXIgdGhlIGludGVudCB0by4KLSAqIEBwYXJhbSBld2tJbnRlbnQgaW50ZW50IG9iamVj
dCB0byBkZWxpdmVyLgotICovCi1FQVBJIHZvaWQgZXdrX2ZyYW1lX2ludGVudF9kZWxpdmVyKGNv
bnN0IEV2YXNfT2JqZWN0ICpvLCBFd2tfSW50ZW50ICpld2tfaW50ZW50KTsKLQotLyoqCiAgKiBT
ZXRzIGEgcmVsYXRpdmUgc2Nyb2xsIG9mIHRoZSBnaXZlbiBmcmFtZS4KICAqCiAgKiBUaGlzIGZ1
bmN0aW9uIGRvZXMgc2Nyb2xsIEBhIGR4IGFuZCBAYSBkeSBwaXhlbHMKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfZnJhbWVfcHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdC9l
ZmwvZXdrL2V3a19mcmFtZV9wcml2YXRlLmgKaW5kZXggZDg0MWYyYS4uZmI1MDUxOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19mcmFtZV9wcml2YXRlLmgKKysrIGIvU291
cmNlL1dlYktpdC9lZmwvZXdrL2V3a19mcmFtZV9wcml2YXRlLmgKQEAgLTIyLDcgKzIyLDYgQEAK
ICNkZWZpbmUgZXdrX2ZyYW1lX3ByaXZhdGVfaAogCiAjaW5jbHVkZSAiZXdrX2ZyYW1lLmgiCi0j
aW5jbHVkZSAiZXdrX2ludGVudF9yZXF1ZXN0LmgiCiAjaW5jbHVkZSA8RXZhcy5oPgogI2luY2x1
ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgpAQCAtNzQsOCAr
NzMsNiBAQCB2b2lkIGV3a19mcmFtZV92aWV3X2NyZWF0ZV9mb3JfdmlldyhFdmFzX09iamVjdCog
ZXdrRnJhbWUsIEV2YXNfT2JqZWN0KiB2aWV3KTsKIGJvb2wgZXdrX2ZyYW1lX3VyaV9jaGFuZ2Vk
KEV2YXNfT2JqZWN0KiBld2tGcmFtZSk7CiB2b2lkIGV3a19mcmFtZV9mb3JjZV9sYXlvdXQoRXZh
c19PYmplY3QqIGV3a0ZyYW1lKTsKIHZvaWQgZXdrX2ZyYW1lX2ljb25fY2hhbmdlZChFdmFzX09i
amVjdCogZXdrRnJhbWUpOwotdm9pZCBld2tfZnJhbWVfaW50ZW50X25ldyhFdmFzX09iamVjdCog
ZXdrRnJhbWUsIEV3a19JbnRlbnRfUmVxdWVzdCogcmVxdWVzdCk7Ci12b2lkIGV3a19mcmFtZV9p
bnRlbnRfc2VydmljZV9yZWdpc3RlcihFdmFzX09iamVjdCogZXdrRnJhbWUsIEV3a19JbnRlbnRf
U2VydmljZV9JbmZvKiBpbmZvKTsKIAogV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OldpZGdldD4g
ZXdrX2ZyYW1lX3BsdWdpbl9jcmVhdGUoRXZhc19PYmplY3QqIGV3a0ZyYW1lLCBjb25zdCBXZWJD
b3JlOjpJbnRTaXplJiBwbHVnaW5TaXplLCBXZWJDb3JlOjpIVE1MUGx1Z0luRWxlbWVudCogZWxl
bWVudCwgY29uc3QgV2ViQ29yZTo6S1VSTCYgdXJsLCBjb25zdCBXVEY6OlZlY3RvcjxXVEY6OlN0
cmluZz4mIHBhcmFtTmFtZXMsIGNvbnN0IFdURjo6VmVjdG9yPFdURjo6U3RyaW5nPiYgcGFyYW1W
YWx1ZXMsIGNvbnN0IFdURjo6U3RyaW5nJiBtaW1lVHlwZSwgYm9vbCBsb2FkTWFudWFsbHkpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2ludGVudC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L2VmbC9ld2svZXdrX2ludGVudC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IGU0YzBjOTkuLjAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19p
bnRlbnQuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMTk0ICswLDAgQEAKLS8qCi0gICAgQ29weXJp
Z2h0IChDKSAyMDEyIEludGVsIENvcnBvcmF0aW9uCi0KLSAgICBUaGlzIGxpYnJhcnkgaXMgZnJl
ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gICAgbW9kaWZ5IGl0
IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAgICBM
aWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRo
ZXIKLSAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55
IGxhdGVyIHZlcnNpb24uCi0KLSAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhl
IGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFO
VFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICAgIE1FUkNIQU5UQUJJ
TElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0g
ICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0KLSAg
ICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5l
cmFsIFB1YmxpYyBMaWNlbnNlCi0gICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUg
ZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAgICB0aGUgRnJlZSBTb2Z0d2Fy
ZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICAg
IEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgot
I2luY2x1ZGUgImV3a19pbnRlbnQuaCIKLQotI2luY2x1ZGUgIkludGVudC5oIgotI2luY2x1ZGUg
ImV3a19pbnRlbnRfcHJpdmF0ZS5oIgotI2luY2x1ZGUgImV3a19wcml2YXRlLmgiCi0jaW5jbHVk
ZSA8S1VSTC5oPgotI2luY2x1ZGUgPGVpbmFfc2FmZXR5X2NoZWNrcy5oPgotI2luY2x1ZGUgPHd0
Zi9IYXNoTWFwLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgotCi0vKioKLSAqIFxz
dHJ1Y3QgIF9Fd2tfSW50ZW50Ci0gKiBAYnJpZWYgICBDb250YWlucyB0aGUgaW50ZW50IGRhdGEu
Ci0gKi8KLXN0cnVjdCBfRXdrX0ludGVudCB7Ci0jaWYgRU5BQkxFKFdFQl9JTlRFTlRTKQotICAg
IFdlYkNvcmU6OkludGVudCogY29yZTsgLyoqPCBXZWJDb3JlIG9iamVjdCB3aGljaCBpcyByZXNw
b25zaWJsZSBmb3IgdGhlIGludGVudCAqLwotI2VuZGlmCi0gICAgY29uc3QgY2hhciogYWN0aW9u
OwotICAgIGNvbnN0IGNoYXIqIHR5cGU7Ci0gICAgY29uc3QgY2hhciogc2VydmljZTsKLX07Ci0K
LSNkZWZpbmUgRVdLX0lOVEVOVF9DT1JFX0dFVF9PUl9SRVRVUk4oaW50ZW50LCBjb3JlXywgLi4u
KSAgICAgIFwKLSAgICBpZiAoIShpbnRlbnQpKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKLSAgICAgICAgQ1JJVElDQUwoImludGVudCBpcyBOVUxMLiIpOyAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgcmV0dXJuIF9fVkFfQVJHU19fOyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB9ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBpZiAoIShp
bnRlbnQpLT5jb3JlKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAg
ICAgICAgQ1JJVElDQUwoImludGVudC0+Y29yZSBpcyBOVUxMLiIpOyAgICAgICAgICAgICAgICAg
ICAgIFwKLSAgICAgICAgcmV0dXJuIF9fVkFfQVJHU19fOyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFwKLSAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBXZWJDb3JlOjpJbnRlbnQqIGNvcmVfID0gKGlu
dGVudCktPmNvcmUKLQotY29uc3QgY2hhciogZXdrX2ludGVudF9hY3Rpb25fZ2V0KGNvbnN0IEV3
a19JbnRlbnQqIGludGVudCkKLXsKLSNpZiBFTkFCTEUoV0VCX0lOVEVOVFMpCi0gICAgRVdLX0lO
VEVOVF9DT1JFX0dFVF9PUl9SRVRVUk4oaW50ZW50LCBjb3JlLCAwKTsKLQotICAgIC8vIGhpZGUg
dGhlIGZvbGxvd2luZyBvcHRpbWl6YXRpb24gZnJvbSBvdXRzaWRlCi0gICAgRXdrX0ludGVudCog
ZXdrSW50ZW50ID0gY29uc3RfY2FzdDxFd2tfSW50ZW50Kj4oaW50ZW50KTsKLSAgICBlaW5hX3N0
cmluZ3NoYXJlX3JlcGxhY2UoJmV3a0ludGVudC0+YWN0aW9uLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb3JlLT5hY3Rpb24oKS51dGY4KCkuZGF0YSgpKTsKLSAgICByZXR1cm4gZXdr
SW50ZW50LT5hY3Rpb247Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTShpbnRlbnQpOwotICAgIHJl
dHVybiAwOwotI2VuZGlmCi19Ci0KLWNvbnN0IGNoYXIqIGV3a19pbnRlbnRfdHlwZV9nZXQoY29u
c3QgRXdrX0ludGVudCogaW50ZW50KQotewotI2lmIEVOQUJMRShXRUJfSU5URU5UUykKLSAgICBF
V0tfSU5URU5UX0NPUkVfR0VUX09SX1JFVFVSTihpbnRlbnQsIGNvcmUsIDApOwotCi0gICAgLy8g
aGlkZSB0aGUgZm9sbG93aW5nIG9wdGltaXphdGlvbiBmcm9tIG91dHNpZGUKLSAgICBFd2tfSW50
ZW50KiBld2tJbnRlbnQgPSBjb25zdF9jYXN0PEV3a19JbnRlbnQqPihpbnRlbnQpOwotICAgIGVp
bmFfc3RyaW5nc2hhcmVfcmVwbGFjZSgmZXdrSW50ZW50LT50eXBlLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb3JlLT50eXBlKCkudXRmOCgpLmRhdGEoKSk7Ci0gICAgcmV0dXJuIGV3
a0ludGVudC0+dHlwZTsKLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKGludGVudCk7Ci0gICAgcmV0
dXJuIDA7Ci0jZW5kaWYKLX0KLQotY29uc3QgY2hhciogZXdrX2ludGVudF9zZXJ2aWNlX2dldChj
b25zdCBFd2tfSW50ZW50KiBpbnRlbnQpCi17Ci0jaWYgRU5BQkxFKFdFQl9JTlRFTlRTKQotICAg
IEVXS19JTlRFTlRfQ09SRV9HRVRfT1JfUkVUVVJOKGludGVudCwgY29yZSwgMCk7Ci0KLSAgICAv
LyBoaWRlIHRoZSBmb2xsb3dpbmcgb3B0aW1pemF0aW9uIGZyb20gb3V0c2lkZQotICAgIEV3a19J
bnRlbnQqIGV3a0ludGVudCA9IGNvbnN0X2Nhc3Q8RXdrX0ludGVudCo+KGludGVudCk7Ci0gICAg
ZWluYV9zdHJpbmdzaGFyZV9yZXBsYWNlKCZld2tJbnRlbnQtPnNlcnZpY2UsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvcmUtPnNlcnZpY2UoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgp
KTsKLSAgICByZXR1cm4gZXdrSW50ZW50LT5zZXJ2aWNlOwotI2Vsc2UKLSAgICBVTlVTRURfUEFS
QU0oaW50ZW50KTsKLSAgICByZXR1cm4gMDsKLSNlbmRpZgotfQotCi1FaW5hX0xpc3QqIGV3a19p
bnRlbnRfc3VnZ2VzdGlvbnNfZ2V0KGNvbnN0IEV3a19JbnRlbnQqIGludGVudCkKLXsKLSNpZiBF
TkFCTEUoV0VCX0lOVEVOVFMpCi0gICAgRVdLX0lOVEVOVF9DT1JFX0dFVF9PUl9SRVRVUk4oaW50
ZW50LCBjb3JlLCAwKTsKLQotICAgIEVpbmFfTGlzdCogbGlzdE9mU3VnZ2VzdGlvbnMgPSAwOwot
ICAgIFZlY3RvcjxXZWJDb3JlOjpLVVJMPjo6Y29uc3RfaXRlcmF0b3IgaXQ7Ci0gICAgZm9yIChp
dCA9IGNvcmUtPnN1Z2dlc3Rpb25zKCkuYmVnaW4oKTsgaXQgIT0gY29yZS0+c3VnZ2VzdGlvbnMo
KS5lbmQoKTsgKytpdCkKLSAgICAgICAgbGlzdE9mU3VnZ2VzdGlvbnMgPSBlaW5hX2xpc3RfYXBw
ZW5kKGxpc3RPZlN1Z2dlc3Rpb25zLCBlaW5hX3N0cmluZ3NoYXJlX2FkZChpdC0+c3RyaW5nKCku
dXRmOCgpLmRhdGEoKSkpOwotICAgIHJldHVybiBsaXN0T2ZTdWdnZXN0aW9uczsKLSNlbHNlCi0g
ICAgVU5VU0VEX1BBUkFNKGludGVudCk7Ci0gICAgcmV0dXJuIDA7Ci0jZW5kaWYKLX0KLQotY29u
c3QgY2hhciogZXdrX2ludGVudF9leHRyYV9nZXQoY29uc3QgRXdrX0ludGVudCogaW50ZW50LCBj
b25zdCBjaGFyKiBrZXkpCi17Ci0jaWYgRU5BQkxFKFdFQl9JTlRFTlRTKQotICAgIEVXS19JTlRF
TlRfQ09SRV9HRVRfT1JfUkVUVVJOKGludGVudCwgY29yZSwgMCk7Ci0gICAgV1RGOjpIYXNoTWFw
PFN0cmluZywgU3RyaW5nPjo6Y29uc3RfaXRlcmF0b3IgdmFsID0gY29yZS0+ZXh0cmFzKCkuZmlu
ZChTdHJpbmc6OmZyb21VVEY4KGtleSkpOwotICAgIGlmICh2YWwgPT0gY29yZS0+ZXh0cmFzKCku
ZW5kKCkpCi0gICAgICAgIHJldHVybiAwOwotICAgIHJldHVybiBlaW5hX3N0cmluZ3NoYXJlX2Fk
ZCh2YWwtPnZhbHVlLnV0ZjgoKS5kYXRhKCkpOwotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0oaW50
ZW50KTsKLSAgICBVTlVTRURfUEFSQU0oa2V5KTsKLSAgICByZXR1cm4gMDsKLSNlbmRpZgotfQot
Ci1FaW5hX0xpc3QqIGV3a19pbnRlbnRfZXh0cmFfbmFtZXNfZ2V0KGNvbnN0IEV3a19JbnRlbnQq
IGludGVudCkKLXsKLSNpZiBFTkFCTEUoV0VCX0lOVEVOVFMpCi0gICAgRVdLX0lOVEVOVF9DT1JF
X0dFVF9PUl9SRVRVUk4oaW50ZW50LCBjb3JlLCAwKTsKLSAgICBFaW5hX0xpc3QqIGxpc3RPZk5h
bWVzID0gMDsKLSAgICBXVEY6Okhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+Ojpjb25zdF9pdGVyYXRv
cjo6S2V5cyBpdCA9IGNvcmUtPmV4dHJhcygpLmJlZ2luKCkua2V5cygpOwotICAgIGZvciAoOyBp
dCAhPSBjb3JlLT5leHRyYXMoKS5lbmQoKS5rZXlzKCk7ICsraXQpCi0gICAgICAgIGxpc3RPZk5h
bWVzID0gZWluYV9saXN0X2FwcGVuZChsaXN0T2ZOYW1lcywgZWluYV9zdHJpbmdzaGFyZV9hZGQo
aXQtPnV0ZjgoKS5kYXRhKCkpKTsKLSAgICByZXR1cm4gbGlzdE9mTmFtZXM7Ci0jZWxzZQotICAg
IFVOVVNFRF9QQVJBTShpbnRlbnQpOwotICAgIHJldHVybiAwOwotI2VuZGlmCi19Ci0KLSNpZiBF
TkFCTEUoV0VCX0lOVEVOVFMpCi0vKioKLSAqIEBpbnRlcm5hbAotICoKLSAqIENyZWF0ZXMgYSBu
ZXcgRXdrX0ludGVudCBvYmplY3QuCi0gKgotICogQHBhcmFtIGNvcmUgV2ViQ29yZTo6SW50ZW50
IGluc3RhbmNlIHRvIHVzZSBpbnRlcm5hbGx5LgotICogQHJldHVybiBhIG5ldyBhbGxvY2F0ZWQg
dGhlIEV3a19JbnRlbnQgb2JqZWN0IG9uIHN1Y2Nlc3Mgb3IgQGMgMCBvbiBmYWlsdXJlCi0gKi8K
LUV3a19JbnRlbnQqIGV3a19pbnRlbnRfbmV3KFdlYkNvcmU6OkludGVudCogY29yZSkKLXsKLSAg
ICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoY29yZSwgMCk7Ci0gICAgRXdrX0ludGVu
dCogaW50ZW50ID0gbmV3IEV3a19JbnRlbnQ7Ci0gICAgbWVtc2V0KGludGVudCwgMCwgc2l6ZW9m
KEV3a19JbnRlbnQpKTsKLSAgICBpbnRlbnQtPmNvcmUgPSBjb3JlOwotCi0gICAgcmV0dXJuIGlu
dGVudDsKLX0KLQotLyoqCi0gKiBAaW50ZXJuYWwKLSAqCi0gKiBGcmVlIGdpdmVuIEV3a19JbnRl
bnQgaW5zdGFuY2UuCi0gKgotICogQHBhcmFtIGludGVudCB0aGUgb2JqZWN0IHRvIGZyZWUuCi0g
Ki8KLXZvaWQgZXdrX2ludGVudF9mcmVlKEV3a19JbnRlbnQqIGludGVudCkKLXsKLSAgICBFSU5B
X1NBRkVUWV9PTl9OVUxMX1JFVFVSTihpbnRlbnQpOwotCi0gICAgZWluYV9zdHJpbmdzaGFyZV9k
ZWwoaW50ZW50LT5hY3Rpb24pOwotICAgIGVpbmFfc3RyaW5nc2hhcmVfZGVsKGludGVudC0+dHlw
ZSk7Ci0gICAgZWluYV9zdHJpbmdzaGFyZV9kZWwoaW50ZW50LT5zZXJ2aWNlKTsKLSAgICBkZWxl
dGUgaW50ZW50OwotfQotCi1uYW1lc3BhY2UgRVdLUHJpdmF0ZSB7Ci0KLVdlYkNvcmU6OkludGVu
dCogY29yZUludGVudChjb25zdCBFd2tfSW50ZW50KiBpbnRlbnQpCi17Ci0gICAgRVdLX0lOVEVO
VF9DT1JFX0dFVF9PUl9SRVRVUk4oaW50ZW50LCBjb3JlLCAwKTsKLSAgICByZXR1cm4gY29yZTsK
LX0KLQotfSAvLyBuYW1lc3BhY2UgRVdLUHJpdmF0ZQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2VmbC9ld2svZXdrX2ludGVudC5oIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3
a19pbnRlbnQuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmI3NzljZC4uMDAwMDAw
MAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2ludGVudC5oCisrKyAvZGV2L251bGwK
QEAgLTEsMTExICswLDAgQEAKLS8qCi0gICAgQ29weXJpZ2h0IChDKSAyMDEyIEludGVsIENvcnBv
cmF0aW9uCi0KLSAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRp
c3RyaWJ1dGUgaXQgYW5kL29yCi0gICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUg
R05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0
aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAgICB2ZXJzaW9uIDIgb2YgdGhl
IExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0KLSAgICBU
aGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVz
ZWZ1bCwKLSAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1w
bGllZCB3YXJyYW50eSBvZgotICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gICAgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0KLSAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2
ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gICAg
YWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5v
dCwgd3JpdGUgdG8KLSAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBG
cmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwg
VVNBLgotKi8KLQotI2lmbmRlZiBld2tfaW50ZW50X2gKLSNkZWZpbmUgZXdrX2ludGVudF9oCi0K
LSNpbmNsdWRlIDxFaW5hLmg+Ci0KLSNpZmRlZiBfX2NwbHVzcGx1cwotZXh0ZXJuICJDIiB7Ci0j
ZW5kaWYKLQotLyoqIENyZWF0ZXMgYSB0eXBlIG5hbWUgZm9yIF9Fd2tfSW50ZW50ICovCi10eXBl
ZGVmIHN0cnVjdCBfRXdrX0ludGVudCBFd2tfSW50ZW50OwotCi0vKioKLSAqIFF1ZXJ5IGFjdGlv
biBmb3IgdGhpcyBpbnRlbnQuCi0gKgotICogQHBhcmFtIGludGVudCBpbnRlbnQgaXRlbSB0byBx
dWVyeS4KLSAqCi0gKiBAcmV0dXJuIHRoZSBhY3Rpb24gcG9pbnRlciwgdGhhdCBtYXkgYmUgQGMg
TlVMTC4gVGhpcyBwb2ludGVyIGlzCi0gKiAgICAgICAgIGd1YXJhbnRlZWQgdG8gYmUgZWluYV9z
dHJpbmdzaGFyZSwgc28gd2hlbmV2ZXIgcG9zc2libGUKLSAqICAgICAgICAgc2F2ZSB5b3Vyc2Vs
ZiBzb21lIGNwdSBjeWNsZXMgYW5kIHVzZQotICogICAgICAgICBlaW5hX3N0cmluZ3NoYXJlX3Jl
ZigpIGluc3RlYWQgb2YgZWluYV9zdHJpbmdzaGFyZV9hZGQoKSBvcgotICogICAgICAgICBzdHJk
dXAoKS4KLSAqLwotRUFQSSBjb25zdCBjaGFyICpld2tfaW50ZW50X2FjdGlvbl9nZXQoY29uc3Qg
RXdrX0ludGVudCAqaW50ZW50KTsKLQotLyoqCi0gKiBRdWVyeSB0eXBlIGZvciB0aGlzIGludGVu
dC4KLSAqCi0gKiBAcGFyYW0gaW50ZW50IGludGVudCBpdGVtIHRvIHF1ZXJ5LgotICoKLSAqIEBy
ZXR1cm4gdGhlIHR5cGUgcG9pbnRlciwgdGhhdCBtYXkgYmUgQGMgTlVMTC4gVGhpcyBwb2ludGVy
IGlzCi0gKiAgICAgICAgIGd1YXJhbnRlZWQgdG8gYmUgZWluYV9zdHJpbmdzaGFyZSwgc28gd2hl
bmV2ZXIgcG9zc2libGUKLSAqICAgICAgICAgc2F2ZSB5b3Vyc2VsZiBzb21lIGNwdSBjeWNsZXMg
YW5kIHVzZQotICogICAgICAgICBlaW5hX3N0cmluZ3NoYXJlX3JlZigpIGluc3RlYWQgb2YgZWlu
YV9zdHJpbmdzaGFyZV9hZGQoKSBvcgotICogICAgICAgICBzdHJkdXAoKS4KLSAqLwotRUFQSSBj
b25zdCBjaGFyICpld2tfaW50ZW50X3R5cGVfZ2V0KGNvbnN0IEV3a19JbnRlbnQgKmludGVudCk7
Ci0KLS8qKgotICogUXVlcnkgc2VydmljZSBmb3IgdGhpcyBpbnRlbnQuCi0gKgotICogQHBhcmFt
IGludGVudCBpbnRlbnQgaXRlbSB0byBxdWVyeS4KLSAqCi0gKiBAcmV0dXJuIHRoZSBzZXJ2aWNl
IHBvaW50ZXIsIHRoYXQgbWF5IGJlIEBjIE5VTEwuIFRoaXMgcG9pbnRlciBpcwotICogICAgICAg
ICBndWFyYW50ZWVkIHRvIGJlIGVpbmFfc3RyaW5nc2hhcmUsIHNvIHdoZW5ldmVyIHBvc3NpYmxl
Ci0gKiAgICAgICAgIHNhdmUgeW91cnNlbGYgc29tZSBjcHUgY3ljbGVzIGFuZCB1c2UKLSAqICAg
ICAgICAgZWluYV9zdHJpbmdzaGFyZV9yZWYoKSBpbnN0ZWFkIG9mIGVpbmFfc3RyaW5nc2hhcmVf
YWRkKCkgb3IKLSAqICAgICAgICAgc3RyZHVwKCkuCi0gKi8KLUVBUEkgY29uc3QgY2hhciAqZXdr
X2ludGVudF9zZXJ2aWNlX2dldChjb25zdCBFd2tfSW50ZW50ICppbnRlbnQpOwotCi0vKioKLSAq
IFF1ZXJ5IHN1Z2dlc3Rpb25zIGZvciB0aGlzIGludGVudC4KLSAqCi0gKiBUaGlzIGZ1bmN0aW9u
IHByb3ZpZGVzIGEgbGlzdCBvZiAoYWJzb2x1dGUpIHN1Z2dlc3RlZCBTZXJ2aWNlIFVSTHMgb2Yg
d2hpY2ggdGhlIENsaWVudAotICogaXMgYXdhcmUgYW5kIHdoaWNoIGNhbiBoYW5kbGUgdGhlIGlu
dGVudC4KLSAqCi0gKiBAcGFyYW0gaW50ZW50IGludGVudCBpdGVtIHRvIHF1ZXJ5LgotICoKLSAq
IEByZXR1cm4gQGMgRWluYV9MaXN0IHdpdGggc3VnZ2VzdGVkIHNlcnZpY2UgVVJMcyBvbiBzdWNj
ZXNzLCBvciBAYyBOVUxMIG9uIGZhaWx1cmUsCi0gKiAgICAgICAgIHRoZSBFaW5hX0xpc3QgYW5k
IGl0cyBpdGVtcyBzaG91bGQgYmUgZnJlZWQgYWZ0ZXIgdXNlLiBVc2UgZnJlZSgpIHRvIGZyZWUg
dGhlCi0gKiAgICAgICAgIGl0ZW1zLgotICovCi1FQVBJIEVpbmFfTGlzdCAqZXdrX2ludGVudF9z
dWdnZXN0aW9uc19nZXQoY29uc3QgRXdrX0ludGVudCAqaW50ZW50KTsKLQotLyoqCi0gKiBSZXRy
aWV2ZXMgdGhlIHZhbHVlIChpZiBhbnkpIGZyb20gdGhlIGV4dHJhIGRhdGEgZGljdGlvbmFyeSB0
aGlzIGludGVudCB3YXMgY29uc3RydWN0ZWQgd2l0aC4KLSAqCi0gKiBUaGUgcmV0dXJuZWQgc3Ry
aW5nIHNob3VsZCBiZSBmcmVlZCBieSBlaW5hX3N0cmluZ3NoYXJlX2RlbCgpIGFmdGVyIHVzZS4K
LSAqCi0gKiBAcGFyYW0gaW50ZW50IGludGVudCBpdGVtIHRvIHF1ZXJ5LgotICogQHBhcmFtIGtl
eSBrZXkgdG8gcXVlcnkgaW4gdGhlIGRpY3Rpb25hcnkuCi0gKgotICogQHJldHVybiBhIG5ld2x5
IGFsbG9jYXRlZCBzdHJpbmcgb3IgQGMgTlVMTCBpbiBjYXNlIG9mIGVycm9yIG9yIGlmIHRoZSBr
ZXkgZG9lcyBub3QgZXhpc3QuCi0gKi8KLUVBUEkgY29uc3QgY2hhciAqZXdrX2ludGVudF9leHRy
YV9nZXQoY29uc3QgRXdrX0ludGVudCAqaW50ZW50LCBjb25zdCBjaGFyICprZXkpOwotCi0vKioK
LSAqIFJldHJpZXZlIGEgbGlzdCBvZiB0aGUgbmFtZXMgb2YgZXh0cmEgbWV0YWRhdGEgYXNzb2Np
YXRlZCB3aXRoIHRoZSBpbnRlbnQuCi0gKgotICogQHBhcmFtIGludGVudCBpbnRlbnQgaXRlbSB0
byBxdWVyeS4KLSAqCi0gKiBAcmV0dXJuIEBjIEVpbmFfTGlzdCB3aXRoIG5hbWVzIG9mIGV4dHJh
IG1ldGFkYXRhIG9uIHN1Y2Nlc3MsIG9yIEBjIE5VTEwgb24gZmFpbHVyZSwKLSAqICAgICAgICAg
dGhlIEVpbmFfTGlzdCBhbmQgaXRzIGl0ZW1zIHNob3VsZCBiZSBmcmVlZCBhZnRlciB1c2UuIFVz
ZSBlaW5hX3N0cmluZ3NoYXJlX2RlbCgpCi0gKiAgICAgICAgIHRvIGZyZWUgdGhlIGl0ZW1zLgot
ICovCi1FQVBJIEVpbmFfTGlzdCAqZXdrX2ludGVudF9leHRyYV9uYW1lc19nZXQoY29uc3QgRXdr
X0ludGVudCAqaW50ZW50KTsKLQotI2lmZGVmIF9fY3BsdXNwbHVzCi19Ci0jZW5kaWYKLSNlbmRp
ZiAvLyBld2tfaW50ZW50X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tf
aW50ZW50X3ByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfaW50ZW50X3ByaXZh
dGUuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWFlYzkwMy4uMDAwMDAwMAotLS0g
YS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2ludGVudF9wcml2YXRlLmgKKysrIC9kZXYvbnVs
bApAQCAtMSw0OCArMCwwIEBACi0vKgotICAgIENvcHlyaWdodCAoQykgMjAxMiBJbnRlbCBDb3Jw
b3JhdGlvbgotCi0gICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk
aXN0cmlidXRlIGl0IGFuZC9vcgotICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhl
IEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkg
dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gICAgdmVyc2lvbiAyIG9mIHRo
ZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotCi0gICAg
VGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1
c2VmdWwsCi0gICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGlt
cGxpZWQgd2FycmFudHkgb2YKLSAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICAgIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotCi0gICAgWW91IHNob3VsZCBoYXZlIHJlY2Vp
dmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICAg
IGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBu
b3QsIHdyaXRlIHRvCi0gICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEg
RnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEs
IFVTQS4KLSovCi0KLSNpZm5kZWYgZXdrX2ludGVudF9wcml2YXRlX2gKLSNkZWZpbmUgZXdrX2lu
dGVudF9wcml2YXRlX2gKLQotI2lmIEVOQUJMRShXRUJfSU5URU5UUykKLQotI2luY2x1ZGUgImV3
a19pbnRlbnQuaCIKLSNpbmNsdWRlICJld2tfaW50ZW50X3JlcXVlc3QuaCIKLQotLy8gZm9yd2Fy
ZCBkZWNsYXJhdGlvbnMKLW5hbWVzcGFjZSBXZWJDb3JlIHsKLWNsYXNzIEludGVudDsKLWNsYXNz
IEludGVudFJlcXVlc3Q7Ci1jbGFzcyBTZXJpYWxpemVkU2NyaXB0VmFsdWU7Ci19Ci0KLUV3a19J
bnRlbnQqIGV3a19pbnRlbnRfbmV3KFdlYkNvcmU6OkludGVudCogY29yZSk7Ci12b2lkIGV3a19p
bnRlbnRfZnJlZShFd2tfSW50ZW50KiBpbnRlbnQpOwotRXdrX0ludGVudF9SZXF1ZXN0KiBld2tf
aW50ZW50X3JlcXVlc3RfbmV3KFBhc3NSZWZQdHI8V2ViQ29yZTo6SW50ZW50UmVxdWVzdD4gY29y
ZSk7Ci0KLXZvaWQgZXdrX2ludGVudF9yZXF1ZXN0X3Jlc3VsdF9wb3N0KEV3a19JbnRlbnRfUmVx
dWVzdCogcmVxdWVzdCwgUGFzc1JlZlB0cjxXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU+
IHJlc3VsdCk7Ci12b2lkIGV3a19pbnRlbnRfcmVxdWVzdF9mYWlsdXJlX3Bvc3QoRXdrX0ludGVu
dF9SZXF1ZXN0KiByZXF1ZXN0LCBQYXNzUmVmUHRyPFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZT4gZmFpbHVyZSk7Ci0KLW5hbWVzcGFjZSBFV0tQcml2YXRlIHsKLVdlYkNvcmU6OkludGVu
dCogY29yZUludGVudChjb25zdCBFd2tfSW50ZW50KiBpbnRlbnQpOwotfSAvLyBuYW1lc3BhY2Ug
RVdLUHJpdmF0ZQotCi0jZW5kaWYKLQotI2VuZGlmIC8vIGV3a19pbnRlbnRfcHJpdmF0ZV9oCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2ludGVudF9yZXF1ZXN0LmNwcCBi
L1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfaW50ZW50X3JlcXVlc3QuY3BwCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAzZWNiODI5Li4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQv
ZWZsL2V3ay9ld2tfaW50ZW50X3JlcXVlc3QuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMTQzICsw
LDAgQEAKLS8qCi0gICAgQ29weXJpZ2h0IChDKSAyMDEyIEludGVsIENvcnBvcmF0aW9uCi0KLSAg
ICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg
YW5kL29yCi0gICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMKLSAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0
d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9y
IChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0KLSAgICBUaGlzIGxpYnJhcnkg
aXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAgICBi
dXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50
eSBvZgotICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRS4gIFNlZSB0aGUgR05VCi0gICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZv
ciBtb3JlIGRldGFpbHMuCi0KLSAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9m
IHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gICAgYWxvbmcgd2l0aCB0
aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8K
LSAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJl
ZXQsIEZpZnRoIEZsb29yLAotICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotKi8KLQot
I2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgImV3a19pbnRlbnRfcmVxdWVzdC5oIgotCi0j
aW5jbHVkZSAiSW50ZW50UmVxdWVzdC5oIgotI2luY2x1ZGUgIlNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZS5oIgotI2luY2x1ZGUgImV3a19pbnRlbnRfcHJpdmF0ZS5oIgotI2luY2x1ZGUgImV3a19wcml2
YXRlLmgiCi0KLS8qKgotICogXHN0cnVjdCAgX0V3a19JbnRlbnRfUmVxdWVzdAotICogQGJyaWVm
ICAgQ29udGFpbnMgdGhlIGludGVudCByZXF1ZXN0IGRhdGEuCi0gKi8KLXN0cnVjdCBfRXdrX0lu
dGVudF9SZXF1ZXN0IHsKLSAgICB1bnNpZ25lZCBpbnQgX19yZWY7IC8qKjwgdGhlIHJlZmVyZW5j
ZSBjb3VudCBvZiB0aGUgb2JqZWN0ICovCi0jaWYgRU5BQkxFKFdFQl9JTlRFTlRTKQotICAgIFJl
ZlB0cjxXZWJDb3JlOjpJbnRlbnRSZXF1ZXN0PiBjb3JlOwotI2VuZGlmCi0gICAgRXdrX0ludGVu
dCogaW50ZW50OwotfTsKLQotI2RlZmluZSBFV0tfSU5URU5UX1JFUVVFU1RfQ09SRV9HRVRfT1Jf
UkVUVVJOKHJlcXVlc3QsIGNvcmVfLCAuLi4pICAgICAgXAotICAgIGlmICghKHJlcXVlc3QpKSB7
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAg
ICAgICBDUklUSUNBTCgicmVxdWVzdCBpcyBOVUxMLiIpOyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXAotICAgICAgICByZXR1cm4gX19WQV9BUkdTX187ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIH0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIGlm
ICghKHJlcXVlc3QpLT5jb3JlKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXAotICAgICAgICBDUklUSUNBTCgicmVxdWVzdC0+Y29yZSBpcyBOVUxMLiIpOyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICByZXR1cm4gX19WQV9BUkdTX187
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIH0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgXAotICAgIFJlZlB0cjxXZWJDb3JlOjpJbnRlbnRSZXF1ZXN0PiBjb3JlXyA9IChyZXF1
ZXN0KS0+Y29yZQotCi12b2lkIGV3a19pbnRlbnRfcmVxdWVzdF9yZWYoRXdrX0ludGVudF9SZXF1
ZXN0KiByZXF1ZXN0KQotewotI2lmIEVOQUJMRShXRUJfSU5URU5UUykKLSAgICBFSU5BX1NBRkVU
WV9PTl9OVUxMX1JFVFVSTihyZXF1ZXN0KTsKLSAgICArK3JlcXVlc3QtPl9fcmVmOwotI2Vsc2UK
LSAgICBVTlVTRURfUEFSQU0ocmVxdWVzdCk7Ci0jZW5kaWYKLX0KLQotdm9pZCBld2tfaW50ZW50
X3JlcXVlc3RfdW5yZWYoRXdrX0ludGVudF9SZXF1ZXN0KiByZXF1ZXN0KQotewotI2lmIEVOQUJM
RShXRUJfSU5URU5UUykKLSAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTihyZXF1ZXN0KTsK
LQotICAgIGlmICgtLXJlcXVlc3QtPl9fcmVmKQotICAgICAgICByZXR1cm47Ci0KLSAgICBld2tf
aW50ZW50X2ZyZWUocmVxdWVzdC0+aW50ZW50KTsKLSAgICBkZWxldGUgcmVxdWVzdDsKLSNlbHNl
Ci0gICAgVU5VU0VEX1BBUkFNKHJlcXVlc3QpOwotI2VuZGlmCi19Ci0KLUV3a19JbnRlbnQqIGV3
a19pbnRlbnRfcmVxdWVzdF9pbnRlbnRfZ2V0KGNvbnN0IEV3a19JbnRlbnRfUmVxdWVzdCogcmVx
dWVzdCkKLXsKLSNpZiBFTkFCTEUoV0VCX0lOVEVOVFMpCi0gICAgRUlOQV9TQUZFVFlfT05fTlVM
TF9SRVRVUk5fVkFMKHJlcXVlc3QsIDApOwotCi0gICAgcmV0dXJuIHJlcXVlc3QtPmludGVudDsK
LSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKHJlcXVlc3QpOwotICAgIHJldHVybiAwOwotI2VuZGlm
Ci19Ci0KLSNpZiBFTkFCTEUoV0VCX0lOVEVOVFMpCi0vKioKLSAqIEBpbnRlcm5hbAotICoKLSAq
IFJlcG9ydCByZXF1ZXN0IHN1Y2Nlc3MuCi0gKgotICogVGhlIHNlcmlhbGl6ZWQgcGF5bG9hZCBk
YXRhIHdpbGwgYmUgcGFzc2VkIHRvIHRoZSBzdWNjZXNzIGNhbGxiYWNrIHJlZ2lzdGVyZWQgYnkg
dGhlCi0gKiBjbGllbnQuCi0gKgotICogQHBhcmFtIHJlcXVlc3QgcmVxdWVzdCBpdGVtLgotICog
QHBhcmFtIHJlc3VsdCBzZXJpYWxpemVkIHBheWxvYWQgZGF0YS4KLSAqLwotdm9pZCBld2tfaW50
ZW50X3JlcXVlc3RfcmVzdWx0X3Bvc3QoRXdrX0ludGVudF9SZXF1ZXN0KiByZXF1ZXN0LCBQYXNz
UmVmUHRyPFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gcmVzdWx0KQotewotICAgIEVX
S19JTlRFTlRfUkVRVUVTVF9DT1JFX0dFVF9PUl9SRVRVUk4ocmVxdWVzdCwgY29yZSk7Ci0KLSAg
ICBjb3JlLT5wb3N0UmVzdWx0KHJlc3VsdC5nZXQoKSk7Ci19Ci0KLS8qKgotICogQGludGVybmFs
Ci0gKgotICogUmVwb3J0IHJlcXVlc3QgZmFpbHVyZS4KLSAqCi0gKiBUaGUgc2VyaWFsaXplZCBw
YXlsb2FkIGRhdGEgd2lsbCBiZSBwYXNzZWQgdG8gdGhlIGVycm9yIGNhbGxiYWNrIHJlZ2lzdGVy
ZWQgYnkgdGhlCi0gKiBjbGllbnQuCi0gKgotICogQHBhcmFtIHJlcXVlc3QgcmVxdWVzdCBpdGVt
LgotICogQHBhcmFtIGZhaWx1cmUgc2VyaWFsaXplZCBwYXlsb2FkIGRhdGEuCi0gKi8KLXZvaWQg
ZXdrX2ludGVudF9yZXF1ZXN0X2ZhaWx1cmVfcG9zdChFd2tfSW50ZW50X1JlcXVlc3QqIHJlcXVl
c3QsIFBhc3NSZWZQdHI8V2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBmYWlsdXJlKQot
ewotICAgIEVXS19JTlRFTlRfUkVRVUVTVF9DT1JFX0dFVF9PUl9SRVRVUk4ocmVxdWVzdCwgY29y
ZSk7Ci0KLSAgICBjb3JlLT5wb3N0RmFpbHVyZShmYWlsdXJlLmdldCgpKTsKLX0KLQotLyoqCi0g
KiBAaW50ZXJuYWwKLSAqCi0gKiBDcmVhdGVzIGEgbmV3IEV3a19JbnRlbnRfUmVxdWVzdCBvYmpl
Y3QuCi0gKgotICogQHBhcmFtIGNvcmUgV2ViQ29yZTo6SW50ZW50UmVxdWVzdCBpbnN0YW5jZSB0
byB1c2UgaW50ZXJuYWxseS4KLSAqIEByZXR1cm4gYSBuZXcgYWxsb2NhdGVkIHRoZSBFd2tfSW50
ZW50X1JlcXVlc3Qgb2JqZWN0IG9uIHN1Y2VzcyBvciBAYyAwIG9uIGZhaWx1cmUKLSAqLwotRXdr
X0ludGVudF9SZXF1ZXN0KiBld2tfaW50ZW50X3JlcXVlc3RfbmV3KFBhc3NSZWZQdHI8V2ViQ29y
ZTo6SW50ZW50UmVxdWVzdD4gY29yZSkKLXsKLSAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVS
Tl9WQUwoY29yZSwgMCk7Ci0gICAgRXdrX0ludGVudF9SZXF1ZXN0KiByZXF1ZXN0ID0gbmV3IEV3
a19JbnRlbnRfUmVxdWVzdDsKLSAgICByZXF1ZXN0LT5fX3JlZiA9IDE7Ci0gICAgcmVxdWVzdC0+
Y29yZSA9IGNvcmU7Ci0gICAgcmVxdWVzdC0+aW50ZW50ID0gZXdrX2ludGVudF9uZXcocmVxdWVz
dC0+Y29yZS0+aW50ZW50KCkpOwotCi0gICAgcmV0dXJuIHJlcXVlc3Q7Ci19Ci0jZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfaW50ZW50X3JlcXVlc3QuaCBiL1Nv
dXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfaW50ZW50X3JlcXVlc3QuaApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMjllOGQzMi4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9l
d2svZXdrX2ludGVudF9yZXF1ZXN0LmgKKysrIC9kZXYvbnVsbApAQCAtMSw2MiArMCwwIEBACi0v
KgotICAgIENvcHlyaWdodCAoQykgMjAxMiBJbnRlbCBDb3Jwb3JhdGlvbgotCi0gICAgVGhpcyBs
aWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgot
ICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljCi0gICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91
bmRhdGlvbjsgZWl0aGVyCi0gICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91
ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotCi0gICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3Ry
aWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gICAgYnV0IFdJVEhP
VVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAg
ICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBT
ZWUgdGhlIEdOVQotICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBk
ZXRhaWxzLgotCi0gICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05V
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICAgIGFsb25nIHdpdGggdGhpcyBsaWJy
YXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0gICAgdGhl
IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0
aCBGbG9vciwKLSAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSovCi0KLSNpZm5kZWYg
ZXdrX2ludGVudF9yZXF1ZXN0X2gKLSNkZWZpbmUgZXdrX2ludGVudF9yZXF1ZXN0X2gKLQotI2lu
Y2x1ZGUgImV3a19pbnRlbnQuaCIKLQotI2luY2x1ZGUgPEVpbmEuaD4KLQotI2lmZGVmIF9fY3Bs
dXNwbHVzCi1leHRlcm4gIkMiIHsKLSNlbmRpZgotCi0vKiogQ3JlYXRlcyBhIHR5cGUgbmFtZSBm
b3IgX0V3a19JbnRlbnQgKi8KLXR5cGVkZWYgc3RydWN0IF9Fd2tfSW50ZW50X1JlcXVlc3QgRXdr
X0ludGVudF9SZXF1ZXN0OwotCi0vKioKLSAqIEluY3JlYXNlcyB0aGUgcmVmZXJlbmNlIGNvdW50
IG9mIHRoZSBnaXZlbiBvYmplY3QuCi0gKgotICogQHBhcmFtIHJlcXVlc3QgdGhlIGludGVudCBy
ZXF1ZXN0IG9iamVjdCB0byBpbmNyZWFzZSB0aGUgcmVmZXJlbmNlIGNvdW50Ci0gKi8KLUVBUEkg
dm9pZCBld2tfaW50ZW50X3JlcXVlc3RfcmVmKEV3a19JbnRlbnRfUmVxdWVzdCAqcmVxdWVzdCk7
Ci0KLS8qKgotICogRGVjcmVhc2VzIHRoZSByZWZlcmVuY2UgY291bnQgb2YgdGhlIGdpdmVuIG9i
amVjdCwgcG9zc2libHkgZnJlZWluZyBpdC4KLSAqCi0gKiBXaGVuIHRoZSByZWZlcmVuY2UgY291
bnQgcmVhY2hlcyAwLCB0aGUgaW50ZW50IHJlcXVlc3QgaXMgZnJlZWQuCi0gKgotICogQHBhcmFt
IHJlcXVlc3QgdGhlIGludGVudCByZXF1ZXN0IG9iamVjdCB0byBkZWNyZWFzZSB0aGUgcmVmZXJl
bmNlIGNvdW50Ci0gKi8KLUVBUEkgdm9pZCBld2tfaW50ZW50X3JlcXVlc3RfdW5yZWYoRXdrX0lu
dGVudF9SZXF1ZXN0ICpyZXF1ZXN0KTsKLQotLyoqCi0gKiBRdWVyeSBpbnRlbnQgZm9yIHRoaXMg
cmVxdWVzdC4KLSAqCi0gKiBAcGFyYW0gcmVxdWVzdCByZXF1ZXN0IGl0ZW0gdG8gcXVlcnkuCi0g
KgotICogQHJldHVybiBBIHBvaW50ZXIgdG8gdGhlIGludGVudCBpbnN0YW5jZS4KLSAqLwotRUFQ
SSBFd2tfSW50ZW50ICpld2tfaW50ZW50X3JlcXVlc3RfaW50ZW50X2dldChjb25zdCBFd2tfSW50
ZW50X1JlcXVlc3QgKnJlcXVlc3QpOwotCi0jaWZkZWYgX19jcGx1c3BsdXMKLX0KLSNlbmRpZgot
I2VuZGlmIC8vIGV3a19pbnRlbnRfcmVxdWVzdF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJLaXQyL0NNYWtlTGlzdHMudHh0CmluZGV4IDhm
ZGRhMzcuLmJhM2I1NjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NNYWtlTGlzdHMudHh0
CisrKyBiL1NvdXJjZS9XZWJLaXQyL0NNYWtlTGlzdHMudHh0CkBAIC01MCw3ICs1MCw2IEBAIHNl
dChXZWJLaXQyX0lOQ0xVREVfRElSRUNUT1JJRVMKICAgICAiJHtXRUJLSVQyX0RJUn0vV2ViUHJv
Y2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MiCiAgICAgIiR7V0VCQ09SRV9ESVJ9Igog
ICAgICIke1dFQkNPUkVfRElSfS9Nb2R1bGVzL2JhdHRlcnkiCi0gICAgIiR7V0VCQ09SRV9ESVJ9
L01vZHVsZXMvaW50ZW50cyIKICAgICAiJHtXRUJDT1JFX0RJUn0vTW9kdWxlcy9uZXR3b3JraW5m
byIKICAgICAiJHtXRUJDT1JFX0RJUn0vTW9kdWxlcy9ub3RpZmljYXRpb25zIgogICAgICIke1dF
QkNPUkVfRElSfS9Nb2R1bGVzL3ZpYnJhdGlvbiIKQEAgLTE1MSw4ICsxNTAsNiBAQCBzZXQoV2Vi
S2l0Ml9TT1VSQ0VTCiAgICAgU2hhcmVkL0ZvbnRJbmZvLmNwcAogICAgIFNoYXJlZC9JbW11dGFi
bGVBcnJheS5jcHAKICAgICBTaGFyZWQvSW1tdXRhYmxlRGljdGlvbmFyeS5jcHAKLSAgICBTaGFy
ZWQvSW50ZW50RGF0YS5jcHAKLSAgICBTaGFyZWQvSW50ZW50U2VydmljZUluZm8uY3BwCiAgICAg
U2hhcmVkL011dGFibGVBcnJheS5jcHAKICAgICBTaGFyZWQvTXV0YWJsZURpY3Rpb25hcnkuY3Bw
CiAgICAgU2hhcmVkL09yaWdpbkFuZERhdGFiYXNlcy5jcHAKQEAgLTE3OSw3ICsxNzYsNiBAQCBz
ZXQoV2ViS2l0Ml9TT1VSQ0VTCiAgICAgU2hhcmVkL1dlYkdyYXBoaWNzQ29udGV4dC5jcHAKICAg
ICBTaGFyZWQvV2ViSGl0VGVzdFJlc3VsdC5jcHAKICAgICBTaGFyZWQvV2ViSW1hZ2UuY3BwCi0g
ICAgU2hhcmVkL1dlYkludGVudFNlcnZpY2VJbmZvLmNwcAogICAgIFNoYXJlZC9XZWJLZXlib2Fy
ZEV2ZW50LmNwcAogICAgIFNoYXJlZC9XZWJLaXQySW5pdGlhbGl6ZS5jcHAKICAgICBTaGFyZWQv
V2ViTWVtb3J5U2FtcGxlci5jcHAKQEAgLTI4MSw3ICsyNzcsNiBAQCBzZXQoV2ViS2l0Ml9TT1VS
Q0VTCiAgICAgVUlQcm9jZXNzL1dlYkljb25EYXRhYmFzZS5jcHAKICAgICBVSVByb2Nlc3MvV2Vi
SWNvbkRhdGFiYXNlQ2xpZW50LmNwcAogICAgIFVJUHJvY2Vzcy9XZWJJbnNwZWN0b3JQcm94eS5j
cHAKLSAgICBVSVByb2Nlc3MvV2ViSW50ZW50RGF0YS5jcHAKICAgICBVSVByb2Nlc3MvV2ViS2V5
VmFsdWVTdG9yYWdlTWFuYWdlclByb3h5LmNwcAogCiAgICAgVUlQcm9jZXNzL1dlYkxvYWRlckNs
aWVudC5jcHAKQEAgLTMyNiw4ICszMjEsNiBAQCBzZXQoV2ViS2l0Ml9TT1VSQ0VTCiAgICAgVUlQ
cm9jZXNzL0FQSS9DL1dLSGl0VGVzdFJlc3VsdC5jcHAKICAgICBVSVByb2Nlc3MvQVBJL0MvV0tJ
Y29uRGF0YWJhc2UuY3BwCiAgICAgVUlQcm9jZXNzL0FQSS9DL1dLSW5zcGVjdG9yLmNwcAotICAg
IFVJUHJvY2Vzcy9BUEkvQy9XS0ludGVudERhdGEuY3BwCi0gICAgVUlQcm9jZXNzL0FQSS9DL1dL
SW50ZW50U2VydmljZUluZm8uY3BwCiAgICAgVUlQcm9jZXNzL0FQSS9DL1dLS2V5VmFsdWVTdG9y
YWdlTWFuYWdlci5jcHAKICAgICBVSVByb2Nlc3MvQVBJL0MvV0tNZWRpYUNhY2hlTWFuYWdlci5j
cHAKICAgICBVSVByb2Nlc3MvQVBJL0MvV0tOYXZpZ2F0aW9uRGF0YS5jcHAKQEAgLTQwNSw4ICsz
OTgsNiBAQCBzZXQoV2ViS2l0Ml9TT1VSQ0VTCiAgICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9JbmplY3RlZEJ1bmRsZUNsaWVudC5jcHAKICAgICBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0luamVjdGVkQnVuZGxlRE9NV2luZG93RXh0ZW5zaW9uLmNwcAogICAgIFdlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVIaXRUZXN0UmVzdWx0LmNwcAotICAgIFdlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVJbnRlbnQuY3BwCi0gICAgV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZUludGVudFJlcXVlc3QuY3BwCiAgICAgV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZU5hdmlnYXRpb25BY3Rpb24uY3Bw
CiAgICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VEaWFnbm9z
dGljTG9nZ2luZ0NsaWVudC5jcHAKICAgICBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVj
dGVkQnVuZGxlUGFnZUNvbnRleHRNZW51Q2xpZW50LmNwcApAQCAtNDI2LDggKzQxNyw2IEBAIHNl
dChXZWJLaXQyX1NPVVJDRVMKICAgICBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dL
QnVuZGxlRnJhbWUuY3BwCiAgICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1
bmRsZUhpdFRlc3RSZXN1bHQuY3BwCiAgICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkv
Yy9XS0J1bmRsZUluc3BlY3Rvci5jcHAKLSAgICBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQ
SS9jL1dLQnVuZGxlSW50ZW50LmNwcAotICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJ
L2MvV0tCdW5kbGVJbnRlbnRSZXF1ZXN0LmNwcAogICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvQVBJL2MvV0tCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uLmNwcAogICAgIFdlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVOb2RlSGFuZGxlLmNwcAogICAgIFdlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlLmNwcApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IGQ4MzEw
Y2IuLjE3MTUzNmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMyBAQAorMjAxMy0wMS0zMSAgQ2hy
aXN0b3BoZSBEdW1leiAgPGRjaHJpc0BnbWFpbC5jb20+CisKKyAgICAgICAgW0VGTF0gRGlzYWJs
ZSBXZWIgSW50ZW50cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTA4NDU3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgUmVtb3ZlIGNvZGUgcmVsYXRlZCB0byBXZWIgSW50ZW50cyBmcm9tIEVGTAorICAgICAg
ICBXZWJLaXQyLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogUGxhdGZv
cm1FZmwuY21ha2U6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvRVdlYktpdDIuaDoKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3Q2FsbGJhY2tzLmg6CisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9lZmwvZXdrX2ludGVudC5jcHA6IFJlbW92ZWQuCisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9lZmwvZXdrX2ludGVudC5oOiBSZW1vdmVkLgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvZWZsL2V3a19pbnRlbnRfcHJpdmF0ZS5oOiBSZW1vdmVkLgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvZWZsL2V3a19pbnRlbnRfc2VydmljZS5jcHA6IFJlbW92ZWQuCisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9lZmwvZXdrX2ludGVudF9zZXJ2aWNlLmg6IFJlbW92ZWQuCisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2ludGVudF9zZXJ2aWNlX3ByaXZhdGUuaDogUmVtb3Zl
ZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5jcHA6CisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2Vm
bC90ZXN0cy9yZXNvdXJjZXMvaW50ZW50LXJlcXVlc3QuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy9yZXNvdXJjZXMvaW50ZW50LXNlcnZpY2UuaHRtbDog
UmVtb3ZlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy90ZXN0X2V3azJfaW50
ZW50cy5jcHA6IFJlbW92ZWQuCisgICAgICAgICogVUlQcm9jZXNzL2VmbC9QYWdlTG9hZENsaWVu
dEVmbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VMb2FkQ2xpZW50RWZsOjpQYWdlTG9hZENs
aWVudEVmbCk6CisgICAgICAgICogVUlQcm9jZXNzL2VmbC9QYWdlTG9hZENsaWVudEVmbC5oOgor
ICAgICAgICAoUGFnZUxvYWRDbGllbnRFZmwpOgorCiAyMDEzLTAxLTMxICBNaWtoYWlsIFBvemRu
eWFrb3YgIDxtaWtoYWlsLnBvemRueWFrb3ZAaW50ZWwuY29tPgogCiAgICAgICAgIFtFRkxdW1dL
Ml0gUmVxdWVzdE1hbmFnZXJDbGllbnRFZmwsIERvd25sb2FkTWFuYWdlckVmbCBhbmQgQ29udGV4
dEhpc3RvcnlDbGllbnRFZmwgc2hvdWxkIGJlIGJhc2VkIG9uIEMgQVBJCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZSBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3Jt
RWZsLmNtYWtlCmluZGV4IDMxM2Y3MTkuLmI4N2U5NzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1BsYXRmb3JtRWZsLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNt
YWtlCkBAIC02Myw4ICs2Myw2IEBAIGxpc3QoQVBQRU5EIFdlYktpdDJfU09VUkNFUwogICAgIFVJ
UHJvY2Vzcy9BUEkvZWZsL2V3a19mYXZpY29uX2RhdGFiYXNlLmNwcAogICAgIFVJUHJvY2Vzcy9B
UEkvZWZsL2V3a19maWxlX2Nob29zZXJfcmVxdWVzdC5jcHAKICAgICBVSVByb2Nlc3MvQVBJL2Vm
bC9ld2tfZm9ybV9zdWJtaXNzaW9uX3JlcXVlc3QuY3BwCi0gICAgVUlQcm9jZXNzL0FQSS9lZmwv
ZXdrX2ludGVudC5jcHAKLSAgICBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfaW50ZW50X3NlcnZpY2Uu
Y3BwCiAgICAgVUlQcm9jZXNzL0FQSS9lZmwvZXdrX21haW4uY3BwCiAgICAgVUlQcm9jZXNzL0FQ
SS9lZmwvZXdrX25hdmlnYXRpb25fZGF0YS5jcHAKICAgICBVSVByb2Nlc3MvQVBJL2VmbC9ld2tf
bmF2aWdhdGlvbl9wb2xpY3lfZGVjaXNpb24uY3BwCkBAIC0yODAsOCArMjc4LDYgQEAgc2V0KEVX
ZWJLaXQyX0hFQURFUlMKICAgICAiJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L1VJUHJvY2Vz
cy9BUEkvZWZsL2V3a19mYXZpY29uX2RhdGFiYXNlLmgiCiAgICAgIiR7Q01BS0VfQ1VSUkVOVF9T
T1VSQ0VfRElSfS9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfZmlsZV9jaG9vc2VyX3JlcXVlc3QuaCIK
ICAgICAiJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19m
b3JtX3N1Ym1pc3Npb25fcmVxdWVzdC5oIgotICAgICIke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJ
Un0vVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2ludGVudC5oIgotICAgICIke0NNQUtFX0NVUlJFTlRf
U09VUkNFX0RJUn0vVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2ludGVudF9zZXJ2aWNlLmgiCiAgICAg
IiR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfbWFpbi5o
IgogICAgICIke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vVUlQcm9jZXNzL0FQSS9lZmwvZXdr
X25hdmlnYXRpb25fZGF0YS5oIgogICAgICIke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vVUlQ
cm9jZXNzL0FQSS9lZmwvZXdrX25hdmlnYXRpb25fcG9saWN5X2RlY2lzaW9uLmgiCkBAIC0zODEs
NyArMzc3LDYgQEAgc2V0KEVXSzJVbml0VGVzdHNfQklOQVJJRVMKICAgICB0ZXN0X2V3azJfZWlu
YV9zaGFyZWRfc3RyaW5nCiAgICAgdGVzdF9ld2syX2Zhdmljb25fZGF0YWJhc2UKICAgICB0ZXN0
X2V3azJfZmlsZV9jaG9vc2VyX3JlcXVlc3QKLSAgICB0ZXN0X2V3azJfaW50ZW50cwogICAgIHRl
c3RfZXdrMl9vYmplY3QKICAgICB0ZXN0X2V3azJfcG9wdXBfbWVudQogICAgIHRlc3RfZXdrMl9y
ZWZwdHJfZXZhc19vYmplY3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZWZsL0VXZWJLaXQyLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9FV2Vi
S2l0Mi5oCmluZGV4IDczMzdmZjk1Li4zYTI4NjVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2VmbC9FV2ViS2l0Mi5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZWZsL0VXZWJLaXQyLmgKQEAgLTQyLDggKzQyLDYgQEAKICNpbmNsdWRlICJld2tf
ZmF2aWNvbl9kYXRhYmFzZS5oIgogI2luY2x1ZGUgImV3a19maWxlX2Nob29zZXJfcmVxdWVzdC5o
IgogI2luY2x1ZGUgImV3a19mb3JtX3N1Ym1pc3Npb25fcmVxdWVzdC5oIgotI2luY2x1ZGUgImV3
a19pbnRlbnQuaCIKLSNpbmNsdWRlICJld2tfaW50ZW50X3NlcnZpY2UuaCIKICNpbmNsdWRlICJl
d2tfbWFpbi5oIgogI2luY2x1ZGUgImV3a19uYXZpZ2F0aW9uX2RhdGEuaCIKICNpbmNsdWRlICJl
d2tfbmF2aWdhdGlvbl9wb2xpY3lfZGVjaXNpb24uaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXdDYWxsYmFja3MuaCBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXdDYWxsYmFja3MuaAppbmRleCBmMDA5ODRkLi4wZTc2
M2EzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3
Q2FsbGJhY2tzLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmll
d0NhbGxiYWNrcy5oCkBAIC0zOCwxMiArMzgsNiBAQCB0eXBlZGVmIHN0cnVjdCBFd2tPYmplY3Qg
RXdrX0Rvd25sb2FkX0pvYjsKIHR5cGVkZWYgc3RydWN0IEV3a09iamVjdCBFd2tfRmlsZV9DaG9v
c2VyX1JlcXVlc3Q7CiB0eXBlZGVmIHN0cnVjdCBFd2tPYmplY3QgRXdrX0Zvcm1fU3VibWlzc2lv
bl9SZXF1ZXN0OwogdHlwZWRlZiBzdHJ1Y3QgRXdrT2JqZWN0IEV3a19OYXZpZ2F0aW9uX1BvbGlj
eV9EZWNpc2lvbjsKLSNpZiBFTkFCTEUoV0VCX0lOVEVOVFMpCi10eXBlZGVmIHN0cnVjdCBFd2tP
YmplY3QgRXdrX0ludGVudDsKLSNlbmRpZgotI2lmIEVOQUJMRShXRUJfSU5URU5UU19UQUcpCi10
eXBlZGVmIHN0cnVjdCBFd2tPYmplY3QgRXdrX0ludGVudF9TZXJ2aWNlOwotI2VuZGlmCiB0eXBl
ZGVmIHN0cnVjdCBFd2tFcnJvciBFd2tfRXJyb3I7CiAKIHN0cnVjdCBFd2tfRG93bmxvYWRfSm9i
X0Vycm9yOwpAQCAtODEsMTMgKzc1LDcgQEAgZW51bSBDYWxsYmFja1R5cGUgewogICAgIFVSTENo
YW5nZWQsCiAgICAgVmlicmF0ZSwKICAgICBXZWJQcm9jZXNzQ3Jhc2hlZCwKLSAgICBXaW5kb3dS
ZXNpemFibGUsCi0jaWYgRU5BQkxFKFdFQl9JTlRFTlRTKQotICAgIEludGVudFJlcXVlc3QsCi0j
ZW5kaWYKLSNpZiBFTkFCTEUoV0VCX0lOVEVOVFNfVEFHKQotICAgIEludGVudFNlcnZpY2VSZWdp
c3RyYXRpb24sCi0jZW5kaWYKKyAgICBXaW5kb3dSZXNpemFibGUKIH07CiAKIHRlbXBsYXRlIDxD
YWxsYmFja1R5cGU+CkBAIC0xOTgsMTIgKzE4Niw2IEBAIERFQ0xBUkVfRVdLX1ZJRVdfQ0FMTEJB
Q0soVVJMQ2hhbmdlZCwgInVybCxjaGFuZ2VkIiwgY29uc3QgY2hhciopOwogREVDTEFSRV9FV0tf
VklFV19DQUxMQkFDSyhWaWJyYXRlLCAidmlicmF0ZSIsIHVpbnQzMl90Kik7CiBERUNMQVJFX0VX
S19WSUVXX0NBTExCQUNLKFdlYlByb2Nlc3NDcmFzaGVkLCAid2VicHJvY2VzcyxjcmFzaGVkIiwg
Ym9vbCopOwogREVDTEFSRV9FV0tfVklFV19DQUxMQkFDSyhXaW5kb3dSZXNpemFibGUsICJ3aW5k
b3cscmVzaXphYmxlIiwgYm9vbCopOwotI2lmIEVOQUJMRShXRUJfSU5URU5UUykKLURFQ0xBUkVf
RVdLX1ZJRVdfQ0FMTEJBQ0soSW50ZW50UmVxdWVzdCwgImludGVudCxyZXF1ZXN0LG5ldyIsIEV3
a19JbnRlbnQqKTsKLSNlbmRpZgotI2lmIEVOQUJMRShXRUJfSU5URU5UU19UQUcpCi1ERUNMQVJF
X0VXS19WSUVXX0NBTExCQUNLKEludGVudFNlcnZpY2VSZWdpc3RyYXRpb24sICJpbnRlbnQsc2Vy
dmljZSxyZWdpc3RlciIsIEV3a19JbnRlbnRfU2VydmljZSopOwotI2VuZGlmCiAKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2ludGVudC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfaW50ZW50LmNwcApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzA4NjYwMS4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfaW50ZW50LmNwcAorKysgL2Rldi9udWxsCkBAIC0x
LDE3MiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEyIEludGVsIENvcnBvcmF0aW9u
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0g
KiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0j
aW5jbHVkZSAiZXdrX2ludGVudC5oIgotCi0jaW5jbHVkZSAiV0tBUElDYXN0LmgiCi0jaW5jbHVk
ZSAiV0tBcnJheS5oIgotI2luY2x1ZGUgIldLRGljdGlvbmFyeS5oIgotI2luY2x1ZGUgIldLU3Ry
aW5nLmgiCi0jaW5jbHVkZSAiV0tVUkwuaCIKLSNpbmNsdWRlICJld2tfaW50ZW50X3ByaXZhdGUu
aCIKLSNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+Ci0KLXVzaW5nIG5hbWVzcGFjZSBXZWJL
aXQ7Ci0KLSNpZiBFTkFCTEUoV0VCX0lOVEVOVFMpCi1Fd2tJbnRlbnQ6OkV3a0ludGVudChXS0lu
dGVudERhdGFSZWYgaW50ZW50UmVmKQotICAgIDogbV93a0ludGVudChpbnRlbnRSZWYpCi0gICAg
LCBtX2FjdGlvbihBZG9wdFdLLCBXS0ludGVudERhdGFDb3B5QWN0aW9uKGludGVudFJlZikpCi0g
ICAgLCBtX3R5cGUoQWRvcHRXSywgV0tJbnRlbnREYXRhQ29weVR5cGUoaW50ZW50UmVmKSkKLSAg
ICAsIG1fc2VydmljZShBZG9wdFdLLCBXS0ludGVudERhdGFDb3B5U2VydmljZShpbnRlbnRSZWYp
KQoteyB9Ci0KLVdlYkludGVudERhdGEqIEV3a0ludGVudDo6d2ViSW50ZW50RGF0YSgpIGNvbnN0
Ci17Ci0gICAgcmV0dXJuIHRvSW1wbChtX3drSW50ZW50LmdldCgpKTsKLX0KLQotY29uc3QgY2hh
ciogRXdrSW50ZW50OjphY3Rpb24oKSBjb25zdAotewotICAgIHJldHVybiBtX2FjdGlvbjsKLX0K
LQotY29uc3QgY2hhciogRXdrSW50ZW50Ojp0eXBlKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV90
eXBlOwotfQotCi1jb25zdCBjaGFyKiBFd2tJbnRlbnQ6OnNlcnZpY2UoKSBjb25zdAotewotICAg
IHJldHVybiBtX3NlcnZpY2U7Ci19Ci0KLVdLUmV0YWluUHRyPFdLQXJyYXlSZWY+IEV3a0ludGVu
dDo6c3VnZ2VzdGlvbnMoKSBjb25zdAotewotICAgIHJldHVybiBhZG9wdFdLKFdLSW50ZW50RGF0
YUNvcHlTdWdnZXN0aW9ucyhtX3drSW50ZW50LmdldCgpKSk7Ci19Ci0KLVN0cmluZyBFd2tJbnRl
bnQ6OmV4dHJhKGNvbnN0IGNoYXIqIGtleSkgY29uc3QKLXsKLSAgICBXS1JldGFpblB0cjxXS1N0
cmluZ1JlZj4ga2V5UmVmID0gYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZyhr
ZXkpKTsKLSAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gd2tWYWx1ZShBZG9wdFdLLCBXS0lu
dGVudERhdGFDb3B5RXh0cmFWYWx1ZShtX3drSW50ZW50LmdldCgpLCBrZXlSZWYuZ2V0KCkpKTsK
LSAgICByZXR1cm4gdG9JbXBsKHdrVmFsdWUuZ2V0KCkpLT5zdHJpbmcoKTsKLX0KLQotV0tSZXRh
aW5QdHI8V0tBcnJheVJlZj4gRXdrSW50ZW50OjpleHRyYUtleXMoKSBjb25zdAotewotICAgIFdL
UmV0YWluUHRyPFdLRGljdGlvbmFyeVJlZj4gd2tFeHRyYXMoQWRvcHRXSywgV0tJbnRlbnREYXRh
Q29weUV4dHJhcyhtX3drSW50ZW50LmdldCgpKSk7Ci0gICAgcmV0dXJuIGFkb3B0V0soV0tEaWN0
aW9uYXJ5Q29weUtleXMod2tFeHRyYXMuZ2V0KCkpKTsKLX0KLSNlbmRpZgotCi1jb25zdCBjaGFy
KiBld2tfaW50ZW50X2FjdGlvbl9nZXQoY29uc3QgRXdrX0ludGVudCogaW50ZW50KQotewotI2lm
IEVOQUJMRShXRUJfSU5URU5UUykKLSAgICBFV0tfT0JKX0dFVF9JTVBMX09SX1JFVFVSTihjb25z
dCBFd2tJbnRlbnQsIGludGVudCwgaW1wbCwgMCk7Ci0gICAgcmV0dXJuIGltcGwtPmFjdGlvbigp
OwotI2Vsc2UKLSAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoaW50ZW50LCAwKTsK
LSAgICByZXR1cm4gMDsKLSNlbmRpZgotfQotCi1jb25zdCBjaGFyKiBld2tfaW50ZW50X3R5cGVf
Z2V0KGNvbnN0IEV3a19JbnRlbnQqIGludGVudCkKLXsKLSNpZiBFTkFCTEUoV0VCX0lOVEVOVFMp
Ci0gICAgRVdLX09CSl9HRVRfSU1QTF9PUl9SRVRVUk4oY29uc3QgRXdrSW50ZW50LCBpbnRlbnQs
IGltcGwsIDApOwotICAgIHJldHVybiBpbXBsLT50eXBlKCk7Ci0jZWxzZQotICAgIEVJTkFfU0FG
RVRZX09OX05VTExfUkVUVVJOX1ZBTChpbnRlbnQsIDApOwotICAgIHJldHVybiAwOwotI2VuZGlm
Ci19Ci0KLWNvbnN0IGNoYXIqIGV3a19pbnRlbnRfc2VydmljZV9nZXQoY29uc3QgRXdrX0ludGVu
dCogaW50ZW50KQotewotI2lmIEVOQUJMRShXRUJfSU5URU5UUykKLSAgICBFV0tfT0JKX0dFVF9J
TVBMX09SX1JFVFVSTihjb25zdCBFd2tJbnRlbnQsIGludGVudCwgaW1wbCwgMCk7Ci0gICAgcmV0
dXJuIGltcGwtPnNlcnZpY2UoKTsKLSNlbHNlCi0gICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRV
Uk5fVkFMKGludGVudCwgMCk7Ci0gICAgcmV0dXJuIDA7Ci0jZW5kaWYKLX0KLQotRWluYV9MaXN0
KiBld2tfaW50ZW50X3N1Z2dlc3Rpb25zX2dldChjb25zdCBFd2tfSW50ZW50KiBpbnRlbnQpCi17
Ci0jaWYgRU5BQkxFKFdFQl9JTlRFTlRTKQotICAgIEVXS19PQkpfR0VUX0lNUExfT1JfUkVUVVJO
KGNvbnN0IEV3a0ludGVudCwgaW50ZW50LCBpbXBsLCAwKTsKLSAgICBFaW5hX0xpc3QqIGxpc3RP
ZlN1Z2dlc3Rpb25zID0gMDsKLSAgICBXS1JldGFpblB0cjxXS0FycmF5UmVmPiB3a1N1Z2dlc3Rp
b25zID0gaW1wbC0+c3VnZ2VzdGlvbnMoKTsKLSAgICBjb25zdCBzaXplX3QgbnVtU3VnZ2VzdGlv
bnMgPSBXS0FycmF5R2V0U2l6ZSh3a1N1Z2dlc3Rpb25zLmdldCgpKTsKLSAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IG51bVN1Z2dlc3Rpb25zOyArK2kpIHsKLSAgICAgICAgV0tVUkxSZWYgd2tT
dWdnZXN0aW9uID0gc3RhdGljX2Nhc3Q8V0tVUkxSZWY+KFdLQXJyYXlHZXRJdGVtQXRJbmRleCh3
a1N1Z2dlc3Rpb25zLmdldCgpLCBpKSk7Ci0gICAgICAgIGxpc3RPZlN1Z2dlc3Rpb25zID0gZWlu
YV9saXN0X2FwcGVuZChsaXN0T2ZTdWdnZXN0aW9ucywgZWluYV9zdHJpbmdzaGFyZV9hZGQodG9J
bXBsKHdrU3VnZ2VzdGlvbiktPnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpKTsKLSAgICB9Ci0KLSAg
ICByZXR1cm4gbGlzdE9mU3VnZ2VzdGlvbnM7Ci0KLSNlbHNlCi0gICAgRUlOQV9TQUZFVFlfT05f
TlVMTF9SRVRVUk5fVkFMKGludGVudCwgMCk7Ci0gICAgcmV0dXJuIDA7Ci0jZW5kaWYKLX0KLQot
Y29uc3QgY2hhciogZXdrX2ludGVudF9leHRyYV9nZXQoY29uc3QgRXdrX0ludGVudCogaW50ZW50
LCBjb25zdCBjaGFyKiBrZXkpCi17Ci0jaWYgRU5BQkxFKFdFQl9JTlRFTlRTKQotICAgIEVXS19P
QkpfR0VUX0lNUExfT1JfUkVUVVJOKGNvbnN0IEV3a0ludGVudCwgaW50ZW50LCBpbXBsLCAwKTsK
LSAgICBTdHJpbmcgdmFsdWUgPSBpbXBsLT5leHRyYShrZXkpOwotCi0gICAgaWYgKHZhbHVlLmlz
RW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICByZXR1cm4gZWluYV9zdHJpbmdzaGFy
ZV9hZGQodmFsdWUudXRmOCgpLmRhdGEoKSk7Ci0jZWxzZQotICAgIEVJTkFfU0FGRVRZX09OX05V
TExfUkVUVVJOX1ZBTChpbnRlbnQsIDApOwotICAgIHJldHVybiAwOwotI2VuZGlmCi19Ci0KLUVp
bmFfTGlzdCogZXdrX2ludGVudF9leHRyYV9uYW1lc19nZXQoY29uc3QgRXdrX0ludGVudCogaW50
ZW50KQotewotI2lmIEVOQUJMRShXRUJfSU5URU5UUykKLSAgICBFV0tfT0JKX0dFVF9JTVBMX09S
X1JFVFVSTihjb25zdCBFd2tJbnRlbnQsIGludGVudCwgaW1wbCwgMCk7Ci0gICAgRWluYV9MaXN0
KiBsaXN0T2ZLZXlzID0gMDsKLSAgICBXS1JldGFpblB0cjxXS0FycmF5UmVmPiB3a0tleXMgPSBp
bXBsLT5leHRyYUtleXMoKTsKLSAgICBjb25zdCBzaXplX3QgbnVtS2V5cyA9IFdLQXJyYXlHZXRT
aXplKHdrS2V5cy5nZXQoKSk7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBudW1LZXlzOyAr
K2kpIHsKLSAgICAgICAgV0tTdHJpbmdSZWYgd2tLZXkgPSBzdGF0aWNfY2FzdDxXS1N0cmluZ1Jl
Zj4oV0tBcnJheUdldEl0ZW1BdEluZGV4KHdrS2V5cy5nZXQoKSwgaSkpOwotICAgICAgICBsaXN0
T2ZLZXlzID0gZWluYV9saXN0X2FwcGVuZChsaXN0T2ZLZXlzLCBlaW5hX3N0cmluZ3NoYXJlX2Fk
ZCh0b0ltcGwod2tLZXkpLT5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKSk7Ci0gICAgfQotCi0gICAg
cmV0dXJuIGxpc3RPZktleXM7Ci0jZWxzZQotICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJO
X1ZBTChpbnRlbnQsIDApOwotICAgIHJldHVybiAwOwotI2VuZGlmCi19CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfaW50ZW50LmggYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfaW50ZW50LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDc1NDQ4ZjIuLjAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9lZmwvZXdrX2ludGVudC5oCisrKyAvZGV2L251bGwKQEAgLTEsMTI4ICswLDAgQEAKLS8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0g
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgotICovCi0KLS8qKgotICogQGZpbGUgICAgZXdrX2ludGVudC5oCi0gKiBAYnJp
ZWYgICBEZXNjcmliZXMgdGhlIEV3ayBJbnRlbnQgQVBJLgotICovCi0KLSNpZm5kZWYgZXdrX2lu
dGVudF9oCi0jZGVmaW5lIGV3a19pbnRlbnRfaAotCi0jaW5jbHVkZSA8RWluYS5oPgotCi0jaWZk
ZWYgX19jcGx1c3BsdXMKLWV4dGVybiAiQyIgewotI2VuZGlmCi0KLS8qKgotICogRGVjbGFyZSBF
d2tfSW50ZW50IGFzIEV3a19PYmplY3QuCi0gKgotICogQHNlZSBFd2tfT2JqZWN0Ci0gKi8KLXR5
cGVkZWYgc3RydWN0IEV3a09iamVjdCBFd2tfSW50ZW50OwotCi0vKioKLSAqIFF1ZXJ5IGFjdGlv
biBmb3IgdGhpcyBpbnRlbnQuCi0gKgotICogQHBhcmFtIGludGVudCBpbnRlbnQgaXRlbSB0byBx
dWVyeS4KLSAqCi0gKiBAcmV0dXJuIHRoZSBhY3Rpb24gcG9pbnRlciwgdGhhdCBtYXkgYmUgQGMg
TlVMTC4gVGhpcyBwb2ludGVyIGlzCi0gKiAgICAgICAgIGd1YXJhbnRlZWQgdG8gYmUgZWluYV9z
dHJpbmdzaGFyZSwgc28gd2hlbmV2ZXIgcG9zc2libGUKLSAqICAgICAgICAgc2F2ZSB5b3Vyc2Vs
ZiBzb21lIGNwdSBjeWNsZXMgYW5kIHVzZQotICogICAgICAgICBlaW5hX3N0cmluZ3NoYXJlX3Jl
ZigpIGluc3RlYWQgb2YgZWluYV9zdHJpbmdzaGFyZV9hZGQoKSBvcgotICogICAgICAgICBzdHJk
dXAoKS4KLSAqLwotRUFQSSBjb25zdCBjaGFyICpld2tfaW50ZW50X2FjdGlvbl9nZXQoY29uc3Qg
RXdrX0ludGVudCAqaW50ZW50KTsKLQotLyoqCi0gKiBRdWVyeSB0eXBlIGZvciB0aGlzIGludGVu
dC4KLSAqCi0gKiBAcGFyYW0gaW50ZW50IGludGVudCBpdGVtIHRvIHF1ZXJ5LgotICoKLSAqIEBy
ZXR1cm4gdGhlIHR5cGUgcG9pbnRlciwgdGhhdCBtYXkgYmUgQGMgTlVMTC4gVGhpcyBwb2ludGVy
IGlzCi0gKiAgICAgICAgIGd1YXJhbnRlZWQgdG8gYmUgZWluYV9zdHJpbmdzaGFyZSwgc28gd2hl
bmV2ZXIgcG9zc2libGUKLSAqICAgICAgICAgc2F2ZSB5b3Vyc2VsZiBzb21lIGNwdSBjeWNsZXMg
YW5kIHVzZQotICogICAgICAgICBlaW5hX3N0cmluZ3NoYXJlX3JlZigpIGluc3RlYWQgb2YgZWlu
YV9zdHJpbmdzaGFyZV9hZGQoKSBvcgotICogICAgICAgICBzdHJkdXAoKS4KLSAqLwotRUFQSSBj
b25zdCBjaGFyICpld2tfaW50ZW50X3R5cGVfZ2V0KGNvbnN0IEV3a19JbnRlbnQgKmludGVudCk7
Ci0KLS8qKgotICogUXVlcnkgc2VydmljZSBmb3IgdGhpcyBpbnRlbnQuCi0gKgotICogQHBhcmFt
IGludGVudCBpbnRlbnQgaXRlbSB0byBxdWVyeS4KLSAqCi0gKiBAcmV0dXJuIHRoZSBzZXJ2aWNl
IHBvaW50ZXIsIHRoYXQgbWF5IGJlIEBjIE5VTEwuIFRoaXMgcG9pbnRlciBpcwotICogICAgICAg
ICBndWFyYW50ZWVkIHRvIGJlIGVpbmFfc3RyaW5nc2hhcmUsIHNvIHdoZW5ldmVyIHBvc3NpYmxl
Ci0gKiAgICAgICAgIHNhdmUgeW91cnNlbGYgc29tZSBjcHUgY3ljbGVzIGFuZCB1c2UKLSAqICAg
ICAgICAgZWluYV9zdHJpbmdzaGFyZV9yZWYoKSBpbnN0ZWFkIG9mIGVpbmFfc3RyaW5nc2hhcmVf
YWRkKCkgb3IKLSAqICAgICAgICAgc3RyZHVwKCkuCi0gKi8KLUVBUEkgY29uc3QgY2hhciAqZXdr
X2ludGVudF9zZXJ2aWNlX2dldChjb25zdCBFd2tfSW50ZW50ICppbnRlbnQpOwotCi0vKioKLSAq
IFF1ZXJ5IHN1Z2dlc3Rpb25zIGZvciB0aGlzIGludGVudC4KLSAqCi0gKiBUaGlzIGZ1bmN0aW9u
IHByb3ZpZGVzIGEgbGlzdCBvZiAoYWJzb2x1dGUpIHN1Z2dlc3RlZCBTZXJ2aWNlIFVSTHMgb2Yg
d2hpY2ggdGhlIENsaWVudAotICogaXMgYXdhcmUgYW5kIHdoaWNoIGNhbiBoYW5kbGUgdGhlIGlu
dGVudC4KLSAqCi0gKiBAcGFyYW0gaW50ZW50IGludGVudCBpdGVtIHRvIHF1ZXJ5LgotICoKLSAq
IEByZXR1cm4gQGMgRWluYV9MaXN0IHdpdGggc3VnZ2VzdGVkIHNlcnZpY2UgVVJMcyBvbiBzdWNj
ZXNzLCBvciBAYyBOVUxMIG9uIGZhaWx1cmUsCi0gKiAgICAgICAgIHRoZSBFaW5hX0xpc3QgYW5k
IGl0cyBpdGVtcyBzaG91bGQgYmUgZnJlZWQgYWZ0ZXIgdXNlLiBVc2UgZWluYV9zdHJpbmdzaGFy
ZV9kZWwoKQotICogICAgICAgICB0byBmcmVlIHRoZSBpdGVtcy4KLSAqLwotRUFQSSBFaW5hX0xp
c3QgKmV3a19pbnRlbnRfc3VnZ2VzdGlvbnNfZ2V0KGNvbnN0IEV3a19JbnRlbnQgKmludGVudCk7
Ci0KLS8qKgotICogUmV0cmlldmVzIHRoZSB2YWx1ZSAoaWYgYW55KSBmcm9tIHRoZSBleHRyYSBk
YXRhIGRpY3Rpb25hcnkgdGhpcyBpbnRlbnQgd2FzIGNvbnN0cnVjdGVkIHdpdGguCi0gKgotICog
VGhlIHJldHVybmVkIHN0cmluZyBzaG91bGQgYmUgZnJlZWQgYnkgZWluYV9zdHJpbmdzaGFyZV9k
ZWwoKSBhZnRlciB1c2UuCi0gKgotICogQHBhcmFtIGludGVudCBpbnRlbnQgaXRlbSB0byBxdWVy
eS4KLSAqIEBwYXJhbSBrZXkga2V5IHRvIHF1ZXJ5IGluIHRoZSBkaWN0aW9uYXJ5LgotICoKLSAq
IEByZXR1cm4gYSBuZXdseSBhbGxvY2F0ZWQgc3RyaW5nIG9yIEBjIE5VTEwgaW4gY2FzZSBvZiBl
cnJvciBvciBpZiB0aGUga2V5IGRvZXMgbm90IGV4aXN0LgotICovCi1FQVBJIGNvbnN0IGNoYXIg
KmV3a19pbnRlbnRfZXh0cmFfZ2V0KGNvbnN0IEV3a19JbnRlbnQgKmludGVudCwgY29uc3QgY2hh
ciAqa2V5KTsKLQotLyoqCi0gKiBSZXRyaWV2ZSBhIGxpc3Qgb2YgdGhlIG5hbWVzIG9mIGV4dHJh
IG1ldGFkYXRhIGFzc29jaWF0ZWQgd2l0aCB0aGUgaW50ZW50LgotICoKLSAqIFRoZSBpdGVtIG9m
IGEgcmV0dXJuZWQgbGlzdCBzaG91bGQgYmUgZnJlZWQgYnkgZWluYV9zdHJpbmdzaGFyZV9kZWwo
KSBhZnRlciB1c2UuCi0gKgotICogQHBhcmFtIGludGVudCBpbnRlbnQgaXRlbSB0byBxdWVyeS4K
LSAqCi0gKiBAcmV0dXJuIEBjIEVpbmFfTGlzdCB3aXRoIG5hbWVzIG9mIGV4dHJhIG1ldGFkYXRh
IG9uIHN1Y2Nlc3MsIG9yIEBjIE5VTEwgb24gZmFpbHVyZSwKLSAqICAgICAgICAgdGhlIEVpbmFf
TGlzdCBhbmQgaXRzIGl0ZW1zIHNob3VsZCBiZSBmcmVlZCBhZnRlciB1c2UuIFVzZSBlaW5hX3N0
cmluZ3NoYXJlX2RlbCgpCi0gKiAgICAgICAgIHRvIGZyZWUgdGhlIGl0ZW1zLgotICovCi1FQVBJ
IEVpbmFfTGlzdCAqZXdrX2ludGVudF9leHRyYV9uYW1lc19nZXQoY29uc3QgRXdrX0ludGVudCAq
aW50ZW50KTsKLQotI2lmZGVmIF9fY3BsdXNwbHVzCi19Ci0jZW5kaWYKLSNlbmRpZiAvLyBld2tf
aW50ZW50X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3
a19pbnRlbnRfcHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdr
X2ludGVudF9wcml2YXRlLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE5OWVjNzku
LjAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2ludGVu
dF9wcml2YXRlLmgKKysrIC9kZXYvbnVsbApAQCAtMSw3NSArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDEyIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoK
LSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
LSAqLwotCi0jaWZuZGVmIGV3a19pbnRlbnRfcHJpdmF0ZV9oCi0jZGVmaW5lIGV3a19pbnRlbnRf
cHJpdmF0ZV9oCi0KLSNpZiBFTkFCTEUoV0VCX0lOVEVOVFMpCi0KLSNpbmNsdWRlICJXS0VpbmFT
aGFyZWRTdHJpbmcuaCIKLSNpbmNsdWRlICJXS0ludGVudERhdGEuaCIKLSNpbmNsdWRlICJXS1Jl
dGFpblB0ci5oIgotI2luY2x1ZGUgImV3a19vYmplY3RfcHJpdmF0ZS5oIgotI2luY2x1ZGUgPFdl
YktpdDIvV0tCYXNlLmg+Ci0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KLSNpbmNsdWRlIDx3
dGYvdGV4dC9XVEZTdHJpbmcuaD4KLQotbmFtZXNwYWNlIFdlYktpdCB7Ci1jbGFzcyBXZWJJbnRl
bnREYXRhOwotfQotCi0vKioKLSAqIFxzdHJ1Y3QgIEV3a0ludGVudAotICogQGJyaWVmICAgQ29u
dGFpbnMgdGhlIGludGVudCBkYXRhLgotICovCi1jbGFzcyBFd2tJbnRlbnQgOiBwdWJsaWMgRXdr
T2JqZWN0IHsKLXB1YmxpYzoKLSAgICBFV0tfT0JKRUNUX0RFQ0xBUkUoRXdrSW50ZW50KQotCi0g
ICAgc3RhdGljIFBhc3NSZWZQdHI8RXdrSW50ZW50PiBjcmVhdGUoV0tJbnRlbnREYXRhUmVmIGlu
dGVudFJlZikKLSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgRXdrSW50ZW50KGlu
dGVudFJlZikpOwotICAgIH0KLQotICAgIFdlYktpdDo6V2ViSW50ZW50RGF0YSogd2ViSW50ZW50
RGF0YSgpIGNvbnN0OwotICAgIGNvbnN0IGNoYXIqIGFjdGlvbigpIGNvbnN0OwotICAgIGNvbnN0
IGNoYXIqIHR5cGUoKSBjb25zdDsKLSAgICBjb25zdCBjaGFyKiBzZXJ2aWNlKCkgY29uc3Q7Ci0g
ICAgV0tSZXRhaW5QdHI8V0tBcnJheVJlZj4gc3VnZ2VzdGlvbnMoKSBjb25zdDsKLSAgICBTdHJp
bmcgZXh0cmEoY29uc3QgY2hhcioga2V5KSBjb25zdDsKLSAgICBXS1JldGFpblB0cjxXS0FycmF5
UmVmPiBleHRyYUtleXMoKSBjb25zdDsKLQotcHJpdmF0ZToKLSAgICBleHBsaWNpdCBFd2tJbnRl
bnQoV0tJbnRlbnREYXRhUmVmIGludGVudFJlZik7Ci0KLSAgICBXS1JldGFpblB0cjxXS0ludGVu
dERhdGFSZWY+IG1fd2tJbnRlbnQ7Ci0gICAgV0tFaW5hU2hhcmVkU3RyaW5nIG1fYWN0aW9uOwot
ICAgIFdLRWluYVNoYXJlZFN0cmluZyBtX3R5cGU7Ci0gICAgV0tFaW5hU2hhcmVkU3RyaW5nIG1f
c2VydmljZTsKLX07Ci0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCX0lOVEVOVFMpCi0KLSNlbmRpZiAv
LyBld2tfaW50ZW50X3ByaXZhdGVfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9lZmwvZXdrX2ludGVudF9zZXJ2aWNlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZWZsL2V3a19pbnRlbnRfc2VydmljZS5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IGI4NmQ0NmEuLjAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9lZmwvZXdrX2ludGVudF9zZXJ2aWNlLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDEyNiAr
MCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEyIEludGVsIENvcnBvcmF0aW9uLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUg
bWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVk
ZSAiZXdrX2ludGVudF9zZXJ2aWNlLmgiCi0KLSNpbmNsdWRlICJJbnRlbnRTZXJ2aWNlSW5mby5o
IgotI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgotI2luY2x1ZGUgIldLUmV0YWluUHRyLmgiCi0jaW5j
bHVkZSAiV0tVUkwuaCIKLSNpbmNsdWRlICJld2tfaW50ZW50X3NlcnZpY2VfcHJpdmF0ZS5oIgot
I2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KLQotdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsK
LQotI2lmIEVOQUJMRShXRUJfSU5URU5UU19UQUcpCi1Fd2tJbnRlbnRTZXJ2aWNlOjpFd2tJbnRl
bnRTZXJ2aWNlKFdLSW50ZW50U2VydmljZUluZm9SZWYgc2VydmljZVJlZikKLSAgICA6IG1fYWN0
aW9uKEFkb3B0V0ssIFdLSW50ZW50U2VydmljZUluZm9Db3B5QWN0aW9uKHNlcnZpY2VSZWYpKQot
ICAgICwgbV90eXBlKEFkb3B0V0ssIFdLSW50ZW50U2VydmljZUluZm9Db3B5VHlwZShzZXJ2aWNl
UmVmKSkKLSAgICAsIG1faHJlZihBZG9wdFdLLCBXS0ludGVudFNlcnZpY2VJbmZvQ29weUhyZWYo
c2VydmljZVJlZikpCi0gICAgLCBtX3RpdGxlKEFkb3B0V0ssIFdLSW50ZW50U2VydmljZUluZm9D
b3B5VGl0bGUoc2VydmljZVJlZikpCi0gICAgLCBtX2Rpc3Bvc2l0aW9uKEFkb3B0V0ssIFdLSW50
ZW50U2VydmljZUluZm9Db3B5RGlzcG9zaXRpb24oc2VydmljZVJlZikpCi17IH0KLQotY29uc3Qg
Y2hhciogRXdrSW50ZW50U2VydmljZTo6YWN0aW9uKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9h
Y3Rpb247Ci19Ci0KLWNvbnN0IGNoYXIqIEV3a0ludGVudFNlcnZpY2U6OnR5cGUoKSBjb25zdAot
ewotICAgIHJldHVybiBtX3R5cGU7Ci19Ci0KLWNvbnN0IGNoYXIqIEV3a0ludGVudFNlcnZpY2U6
OmhyZWYoKSBjb25zdAotewotICAgIHJldHVybiBtX2hyZWY7Ci19Ci0KLWNvbnN0IGNoYXIqIEV3
a0ludGVudFNlcnZpY2U6OnRpdGxlKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV90aXRsZTsKLX0K
LQotY29uc3QgY2hhciogRXdrSW50ZW50U2VydmljZTo6ZGlzcG9zaXRpb24oKSBjb25zdAotewot
ICAgIHJldHVybiBtX2Rpc3Bvc2l0aW9uOwotfQotI2VuZGlmCi0KLWNvbnN0IGNoYXIqIGV3a19p
bnRlbnRfc2VydmljZV9hY3Rpb25fZ2V0KGNvbnN0IEV3a19JbnRlbnRfU2VydmljZSogc2Vydmlj
ZSkKLXsKLSNpZiBFTkFCTEUoV0VCX0lOVEVOVFNfVEFHKQotICAgIEVXS19PQkpfR0VUX0lNUExf
T1JfUkVUVVJOKGNvbnN0IEV3a0ludGVudFNlcnZpY2UsIHNlcnZpY2UsIGltcGwsIDApOwotICAg
IHJldHVybiBpbXBsLT5hY3Rpb24oKTsKLSNlbHNlCi0gICAgRUlOQV9TQUZFVFlfT05fTlVMTF9S
RVRVUk5fVkFMKHNlcnZpY2UsIDApOwotICAgIHJldHVybiAwOwotI2VuZGlmCi19Ci0KLWNvbnN0
IGNoYXIqIGV3a19pbnRlbnRfc2VydmljZV90eXBlX2dldChjb25zdCBFd2tfSW50ZW50X1NlcnZp
Y2UqIHNlcnZpY2UpCi17Ci0jaWYgRU5BQkxFKFdFQl9JTlRFTlRTX1RBRykKLSAgICBFV0tfT0JK
X0dFVF9JTVBMX09SX1JFVFVSTihjb25zdCBFd2tJbnRlbnRTZXJ2aWNlLCBzZXJ2aWNlLCBpbXBs
LCAwKTsKLSAgICByZXR1cm4gaW1wbC0+dHlwZSgpOwotI2Vsc2UKLSAgICBFSU5BX1NBRkVUWV9P
Tl9OVUxMX1JFVFVSTl9WQUwoc2VydmljZSwgMCk7Ci0gICAgcmV0dXJuIDA7Ci0jZW5kaWYKLX0K
LQotY29uc3QgY2hhciogZXdrX2ludGVudF9zZXJ2aWNlX2hyZWZfZ2V0KGNvbnN0IEV3a19JbnRl
bnRfU2VydmljZSogc2VydmljZSkKLXsKLSNpZiBFTkFCTEUoV0VCX0lOVEVOVFNfVEFHKQotICAg
IEVXS19PQkpfR0VUX0lNUExfT1JfUkVUVVJOKGNvbnN0IEV3a0ludGVudFNlcnZpY2UsIHNlcnZp
Y2UsIGltcGwsIDApOwotICAgIHJldHVybiBpbXBsLT5ocmVmKCk7Ci0jZWxzZQotICAgIEVJTkFf
U0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChzZXJ2aWNlLCAwKTsKLSAgICByZXR1cm4gMDsKLSNl
bmRpZgotfQotCi1jb25zdCBjaGFyKiBld2tfaW50ZW50X3NlcnZpY2VfdGl0bGVfZ2V0KGNvbnN0
IEV3a19JbnRlbnRfU2VydmljZSogc2VydmljZSkKLXsKLSNpZiBFTkFCTEUoV0VCX0lOVEVOVFNf
VEFHKQotICAgIEVXS19PQkpfR0VUX0lNUExfT1JfUkVUVVJOKGNvbnN0IEV3a0ludGVudFNlcnZp
Y2UsIHNlcnZpY2UsIGltcGwsIDApOwotICAgIHJldHVybiBpbXBsLT50aXRsZSgpOwotI2Vsc2UK
LSAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoc2VydmljZSwgMCk7Ci0gICAgcmV0
dXJuIDA7Ci0jZW5kaWYKLX0KLQotY29uc3QgY2hhciogZXdrX2ludGVudF9zZXJ2aWNlX2Rpc3Bv
c2l0aW9uX2dldChjb25zdCBFd2tfSW50ZW50X1NlcnZpY2UqIHNlcnZpY2UpCi17Ci0jaWYgRU5B
QkxFKFdFQl9JTlRFTlRTX1RBRykKLSAgICBFV0tfT0JKX0dFVF9JTVBMX09SX1JFVFVSTihjb25z
dCBFd2tJbnRlbnRTZXJ2aWNlLCBzZXJ2aWNlLCBpbXBsLCAwKTsKLSAgICByZXR1cm4gaW1wbC0+
ZGlzcG9zaXRpb24oKTsKLSNlbHNlCi0gICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFM
KHNlcnZpY2UsIDApOwotICAgIHJldHVybiAwOwotI2VuZGlmCi19CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfaW50ZW50X3NlcnZpY2UuaCBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19pbnRlbnRfc2VydmljZS5oCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxMmU1ODA4Li4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19pbnRlbnRfc2VydmljZS5oCisrKyAvZGV2L251bGwK
QEAgLTEsMTE2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgSW50ZWwgQ29ycG9y
YXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
LSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLS8qKgotICogQGZpbGUgZXdr
X2ludGVudF9zZXJ2aWNlLmgKLSAqIEBicmllZiBEZXNjcmliZXMgdGhlIEV3ayBJbnRlbnQgU2Vy
dmljZSBBUEkuCi0gKi8KLQotI2lmbmRlZiBld2tfaW50ZW50X3NlcnZpY2VfaAotI2RlZmluZSBl
d2tfaW50ZW50X3NlcnZpY2VfaAotCi0jaW5jbHVkZSA8RXZhcy5oPgotCi0jaWZkZWYgX19jcGx1
c3BsdXMKLWV4dGVybiAiQyIgewotI2VuZGlmCi0KLS8qKgotICogRGVjbGFyZSBFd2tfSW50ZW50
X1NlcnZpY2UgYXMgRXdrX09iamVjdC4KLSAqCi0gKiBAc2VlIEV3a19PYmplY3QKLSAqLwotdHlw
ZWRlZiBzdHJ1Y3QgRXdrT2JqZWN0IEV3a19JbnRlbnRfU2VydmljZTsKLQotLyoqCi0gKiBRdWVy
eSBhY3Rpb24gZm9yIHRoaXMgaW50ZW50IHNlcnZpY2UuCi0gKgotICogQHBhcmFtIHNlcnZpY2Ug
c2VydmljZSBpdGVtIHRvIHF1ZXJ5LgotICoKLSAqIEByZXR1cm4gdGhlIGFjdGlvbiBwb2ludGVy
LCB0aGF0IG1heSBiZSBAYyBOVUxMLiBUaGlzIHBvaW50ZXIgaXMKLSAqIGd1YXJhbnRlZWQgdG8g
YmUgZWluYV9zdHJpbmdzaGFyZSwgc28gd2hlbmV2ZXIgcG9zc2libGUKLSAqIHNhdmUgeW91cnNl
bGYgc29tZSBjcHUgY3ljbGVzIGFuZCB1c2UKLSAqIGVpbmFfc3RyaW5nc2hhcmVfcmVmKCkgaW5z
dGVhZCBvZiBlaW5hX3N0cmluZ3NoYXJlX2FkZCgpIG9yCi0gKiBzdHJkdXAoKS4KLSAqLwotRUFQ
SSBjb25zdCBjaGFyICpld2tfaW50ZW50X3NlcnZpY2VfYWN0aW9uX2dldChjb25zdCBFd2tfSW50
ZW50X1NlcnZpY2UgKnNlcnZpY2UpOwotCi0vKioKLSAqIFF1ZXJ5IHR5cGUgZm9yIHRoaXMgaW50
ZW50IHNlcnZpY2UuCi0gKgotICogQHBhcmFtIHNlcnZpY2Ugc2VydmljZSBpdGVtIHRvIHF1ZXJ5
LgotICoKLSAqIEByZXR1cm4gdGhlIHR5cGUgcG9pbnRlciwgdGhhdCBtYXkgYmUgQGMgTlVMTC4g
VGhpcyBwb2ludGVyIGlzCi0gKiBndWFyYW50ZWVkIHRvIGJlIGVpbmFfc3RyaW5nc2hhcmUsIHNv
IHdoZW5ldmVyIHBvc3NpYmxlCi0gKiBzYXZlIHlvdXJzZWxmIHNvbWUgY3B1IGN5Y2xlcyBhbmQg
dXNlCi0gKiBlaW5hX3N0cmluZ3NoYXJlX3JlZigpIGluc3RlYWQgb2YgZWluYV9zdHJpbmdzaGFy
ZV9hZGQoKSBvcgotICogc3RyZHVwKCkuCi0gKi8KLUVBUEkgY29uc3QgY2hhciAqZXdrX2ludGVu
dF9zZXJ2aWNlX3R5cGVfZ2V0KGNvbnN0IEV3a19JbnRlbnRfU2VydmljZSAqc2VydmljZSk7Ci0K
LS8qKgotICogUXVlcnkgVVJMIGZvciB0aGlzIGludGVudCBzZXJ2aWNlLgotICoKLSAqIEBwYXJh
bSBzZXJ2aWNlIHNlcnZpY2UgaXRlbSB0byBxdWVyeS4KLSAqCi0gKiBAcmV0dXJuIHRoZSBVUkwg
cG9pbnRlciwgdGhhdCBtYXkgYmUgQGMgTlVMTC4gVGhpcyBwb2ludGVyIGlzCi0gKiBndWFyYW50
ZWVkIHRvIGJlIGVpbmFfc3RyaW5nc2hhcmUsIHNvIHdoZW5ldmVyIHBvc3NpYmxlCi0gKiBzYXZl
IHlvdXJzZWxmIHNvbWUgY3B1IGN5Y2xlcyBhbmQgdXNlCi0gKiBlaW5hX3N0cmluZ3NoYXJlX3Jl
ZigpIGluc3RlYWQgb2YgZWluYV9zdHJpbmdzaGFyZV9hZGQoKSBvcgotICogc3RyZHVwKCkuCi0g
Ki8KLUVBUEkgY29uc3QgY2hhciAqZXdrX2ludGVudF9zZXJ2aWNlX2hyZWZfZ2V0KGNvbnN0IEV3
a19JbnRlbnRfU2VydmljZSAqc2VydmljZSk7Ci0KLS8qKgotICogUXVlcnkgdGl0bGUgZm9yIHRo
aXMgaW50ZW50IHNlcnZpY2UuCi0gKgotICogQHBhcmFtIHNlcnZpY2Ugc2VydmljZSBpdGVtIHRv
IHF1ZXJ5LgotICoKLSAqIEByZXR1cm4gdGhlIHRpdGxlIHBvaW50ZXIsIHRoYXQgbWF5IGJlIEBj
IE5VTEwuIFRoaXMgcG9pbnRlciBpcwotICogZ3VhcmFudGVlZCB0byBiZSBlaW5hX3N0cmluZ3No
YXJlLCBzbyB3aGVuZXZlciBwb3NzaWJsZQotICogc2F2ZSB5b3Vyc2VsZiBzb21lIGNwdSBjeWNs
ZXMgYW5kIHVzZQotICogZWluYV9zdHJpbmdzaGFyZV9yZWYoKSBpbnN0ZWFkIG9mIGVpbmFfc3Ry
aW5nc2hhcmVfYWRkKCkgb3IKLSAqIHN0cmR1cCgpLgotICovCi1FQVBJIGNvbnN0IGNoYXIgKmV3
a19pbnRlbnRfc2VydmljZV90aXRsZV9nZXQoY29uc3QgRXdrX0ludGVudF9TZXJ2aWNlICpzZXJ2
aWNlKTsKLQotLyoqCi0gKiBRdWVyeSBkaXNwb3NpdGlvbiBmb3IgdGhpcyBpbnRlbnQgc2Vydmlj
ZS4KLSAqCi0gKiBAcGFyYW0gc2VydmljZSBzZXJ2aWNlIGl0ZW0gdG8gcXVlcnkuCi0gKgotICog
QHJldHVybiB0aGUgZGlzcG9zaXRpb24gcG9pbnRlciwgdGhhdCBtYXkgYmUgQGMgTlVMTC4gVGhp
cyBwb2ludGVyIGlzCi0gKiBndWFyYW50ZWVkIHRvIGJlIGVpbmFfc3RyaW5nc2hhcmUsIHNvIHdo
ZW5ldmVyIHBvc3NpYmxlCi0gKiBzYXZlIHlvdXJzZWxmIHNvbWUgY3B1IGN5Y2xlcyBhbmQgdXNl
Ci0gKiBlaW5hX3N0cmluZ3NoYXJlX3JlZigpIGluc3RlYWQgb2YgZWluYV9zdHJpbmdzaGFyZV9h
ZGQoKSBvcgotICogc3RyZHVwKCkuCi0gKi8KLUVBUEkgY29uc3QgY2hhciAqZXdrX2ludGVudF9z
ZXJ2aWNlX2Rpc3Bvc2l0aW9uX2dldChjb25zdCBFd2tfSW50ZW50X1NlcnZpY2UgKnNlcnZpY2Up
OwotCi0jaWZkZWYgX19jcGx1c3BsdXMKLX0KLSNlbmRpZgotCi0jZW5kaWYgLy8gZXdrX2ludGVu
dF9zZXJ2aWNlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZs
L2V3a19pbnRlbnRfc2VydmljZV9wcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2VmbC9ld2tfaW50ZW50X3NlcnZpY2VfcHJpdmF0ZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCA3YTk4YTY0Li4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZWZsL2V3a19pbnRlbnRfc2VydmljZV9wcml2YXRlLmgKKysrIC9kZXYvbnVsbApAQCAt
MSw2OCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEyIEludGVsIENvcnBvcmF0aW9u
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0g
KiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIGV3a19pbnRlbnRfc2Vy
dmljZV9wcml2YXRlX2gKLSNkZWZpbmUgZXdrX2ludGVudF9zZXJ2aWNlX3ByaXZhdGVfaAotCi0j
aWYgRU5BQkxFKFdFQl9JTlRFTlRTX1RBRykKLQotI2luY2x1ZGUgIldLRWluYVNoYXJlZFN0cmlu
Zy5oIgotI2luY2x1ZGUgIldLSW50ZW50U2VydmljZUluZm8uaCIKLSNpbmNsdWRlICJld2tfb2Jq
ZWN0X3ByaXZhdGUuaCIKLSNpbmNsdWRlIDxXZWJLaXQyL1dLQmFzZS5oPgotI2luY2x1ZGUgPHd0
Zi9QYXNzUmVmUHRyLmg+Ci0KLS8qKgotICogXHN0cnVjdCBFd2tJbnRlbnRTZXJ2aWNlCi0gKiBA
YnJpZWYgQ29udGFpbnMgdGhlIGludGVudCBzZXJ2aWNlIGRhdGEuCi0gKi8KLWNsYXNzIEV3a0lu
dGVudFNlcnZpY2UgOiBwdWJsaWMgRXdrT2JqZWN0IHsKLXB1YmxpYzoKLSAgICBFV0tfT0JKRUNU
X0RFQ0xBUkUoRXdrSW50ZW50U2VydmljZSkKLQotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEV3a0lu
dGVudFNlcnZpY2U+IGNyZWF0ZShXS0ludGVudFNlcnZpY2VJbmZvUmVmIHNlcnZpY2VSZWYpCi0g
ICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEV3a0ludGVudFNlcnZpY2Uoc2Vydmlj
ZVJlZikpOwotICAgIH0KLQotICAgIGNvbnN0IGNoYXIqIGFjdGlvbigpIGNvbnN0OwotICAgIGNv
bnN0IGNoYXIqIHR5cGUoKSBjb25zdDsKLSAgICBjb25zdCBjaGFyKiBocmVmKCkgY29uc3Q7Ci0g
ICAgY29uc3QgY2hhciogdGl0bGUoKSBjb25zdDsKLSAgICBjb25zdCBjaGFyKiBkaXNwb3NpdGlv
bigpIGNvbnN0OwotCi1wcml2YXRlOgotICAgIGV4cGxpY2l0IEV3a0ludGVudFNlcnZpY2UoV0tJ
bnRlbnRTZXJ2aWNlSW5mb1JlZiBzZXJ2aWNlUmVmKTsKLQotICAgIFdLRWluYVNoYXJlZFN0cmlu
ZyBtX2FjdGlvbjsKLSAgICBXS0VpbmFTaGFyZWRTdHJpbmcgbV90eXBlOwotICAgIFdLRWluYVNo
YXJlZFN0cmluZyBtX2hyZWY7Ci0gICAgV0tFaW5hU2hhcmVkU3RyaW5nIG1fdGl0bGU7Ci0gICAg
V0tFaW5hU2hhcmVkU3RyaW5nIG1fZGlzcG9zaXRpb247Ci19OwotCi0jZW5kaWYgLy8gRU5BQkxF
KFdFQl9JTlRFTlRTX1RBRykKLQotI2VuZGlmIC8vIGV3a19pbnRlbnRfc2VydmljZV9wcml2YXRl
X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmNwcAppbmRl
eCA3MmE2YWZhLi4yMzJjYzBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2VmbC9ld2tfdmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9l
ZmwvZXdrX3ZpZXcuY3BwCkBAIC00OCw3ICs0OCw2IEBACiAjaW5jbHVkZSAiZXdrX2NvbnRleHQu
aCIKICNpbmNsdWRlICJld2tfY29udGV4dF9wcml2YXRlLmgiCiAjaW5jbHVkZSAiZXdrX2Zhdmlj
b25fZGF0YWJhc2VfcHJpdmF0ZS5oIgotI2luY2x1ZGUgImV3a19pbnRlbnRfcHJpdmF0ZS5oIgog
I2luY2x1ZGUgImV3a19wcml2YXRlLmgiCiAjaW5jbHVkZSAiZXdrX3NldHRpbmdzX3ByaXZhdGUu
aCIKICNpbmNsdWRlICJld2tfdmlld19wcml2YXRlLmgiCkBAIC03MDYsMjQgKzcwNSw2IEBAIEVp
bmFfQm9vbCBld2tfdmlld19mb3J3YXJkKEV2YXNfT2JqZWN0KiBld2tWaWV3KQogICAgIHJldHVy
biBmYWxzZTsKIH0KIAotRWluYV9Cb29sIGV3a192aWV3X2ludGVudF9kZWxpdmVyKEV2YXNfT2Jq
ZWN0KiBld2tWaWV3LCBFd2tfSW50ZW50KiBpbnRlbnQpCi17Ci0jaWYgRU5BQkxFKFdFQl9JTlRF
TlRTKQotICAgIEVXS19WSUVXX0lNUExfR0VUX09SX1JFVFVSTihld2tWaWV3LCBpbXBsLCBmYWxz
ZSk7Ci0gICAgRXdrSW50ZW50KiBpbnRlbnRJbXBsID0gZXdrX29iamVjdF9jYXN0PEV3a0ludGVu
dCo+KGludGVudCk7Ci0gICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKGludGVudElt
cGwsIGZhbHNlKTsKLQotICAgIFdlYlBhZ2VQcm94eSogcGFnZSA9IGltcGwtPnBhZ2UoKTsKLSAg
ICBwYWdlLT5kZWxpdmVySW50ZW50VG9GcmFtZShwYWdlLT5tYWluRnJhbWUoKSwgaW50ZW50SW1w
bC0+d2ViSW50ZW50RGF0YSgpKTsKLQotICAgIHJldHVybiB0cnVlOwotI2Vsc2UKLSAgICBVTlVT
RURfUEFSQU0oZXdrVmlldyk7Ci0gICAgVU5VU0VEX1BBUkFNKGludGVudCk7Ci0gICAgcmV0dXJu
IGZhbHNlOwotI2VuZGlmCi19Ci0KIEVpbmFfQm9vbCBld2tfdmlld19iYWNrX3Bvc3NpYmxlKEV2
YXNfT2JqZWN0KiBld2tWaWV3KQogewogICAgIEVXS19WSUVXX0lNUExfR0VUX09SX1JFVFVSTihl
d2tWaWV3LCBpbXBsLCBmYWxzZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2VmbC9ld2tfdmlldy5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwv
ZXdrX3ZpZXcuaAppbmRleCA3ZDFkZjZkLi4xMWJlYjk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmgKQEAgLTQ5LDggKzQ5LDYgQEAKICAqICAgI0V3a19G
b3JtX1N1Ym1pc3Npb25fUmVxdWVzdCBhbmQgdGhlIGZvcm0gaGFzIG5vdCBiZWVuIHN1Ym1pdHRl
ZCB5ZXQsCiAgKiAgIGV3a19mb3JtX3N1Ym1pc3Npb25fcmVxdWVzdF9zdWJtaXQoKSB3aWxsIGJl
IGNhbGxlZCBhdXRvbWF0aWNhbGx5LgogICogLSAiaWNvbixjaGFuZ2VkIiwgdm9pZDogcmVwb3J0
cyB0aGF0IHRoZSB2aWV3J3MgZmF2aWNvbiBoYXMgY2hhbmdlZC4KLSAqIC0gImludGVudCxyZXF1
ZXN0LG5ldyIsIEV3a19JbnRlbnQqOiByZXBvcnRzIG5ldyBXZWIgaW50ZW50IHJlcXVlc3QuCi0g
KiAtICJpbnRlbnQsc2VydmljZSxyZWdpc3RlciIsIEV3a19JbnRlbnRfU2VydmljZSo6IHJlcG9y
dHMgbmV3IFdlYiBpbnRlbnQgc2VydmljZSByZWdpc3RyYXRpb24uCiAgKiAtICJsb2FkLGVycm9y
IiwgY29uc3QgRXdrX0Vycm9yKjogcmVwb3J0cyBtYWluIGZyYW1lIGxvYWQgZmFpbGVkLgogICog
LSAibG9hZCxmaW5pc2hlZCIsIHZvaWQ6IHJlcG9ydHMgbG9hZCBmaW5pc2hlZC4KICAqIC0gImxv
YWQscHJvZ3Jlc3MiLCBkb3VibGUqOiBsb2FkIHByb2dyZXNzIGhhcyBjaGFuZ2VkICh2YWx1ZSBm
cm9tIDAuMCB0byAxLjApLgpAQCAtODEsNyArNzksNiBAQAogI2luY2x1ZGUgImV3a19jb250ZXh0
X21lbnUuaCIKICNpbmNsdWRlICJld2tfZG93bmxvYWRfam9iLmgiCiAjaW5jbHVkZSAiZXdrX2Vy
cm9yLmgiCi0jaW5jbHVkZSAiZXdrX2ludGVudC5oIgogI2luY2x1ZGUgImV3a19wb3B1cF9tZW51
LmgiCiAjaW5jbHVkZSAiZXdrX3NlY3VyaXR5X29yaWdpbi5oIgogI2luY2x1ZGUgImV3a19zZXR0
aW5ncy5oIgpAQCAtNDI1LDE1ICs0MjIsNiBAQCBFQVBJIEVpbmFfQm9vbCAgICBld2tfdmlld19z
dG9wKEV2YXNfT2JqZWN0ICpvKTsKIEVBUEkgRXdrX1NldHRpbmdzICpld2tfdmlld19zZXR0aW5n
c19nZXQoY29uc3QgRXZhc19PYmplY3QgKm8pOwogCiAvKioKLSAqIERlbGl2ZXJzIGEgV2ViIGlu
dGVudCB0byB0aGUgdmlldydzIG1haW4gZnJhbWUuCi0gKgotICogQHBhcmFtIG8gdmlldyBvYmpl
Y3QgdG8gZGVsaXZlciB0aGUgaW50ZW50IHRvCi0gKgotICogQHJldHVybiBAYyBFSU5BX1RSVUUg
b24gc3VjY2VzcyBvciBAYyBFSU5BX0ZBTFNFIG90aGVyd2lzZS4KLSAqLwotRUFQSSBFaW5hX0Jv
b2wgICAgZXdrX3ZpZXdfaW50ZW50X2RlbGl2ZXIoRXZhc19PYmplY3QgKm8sIEV3a19JbnRlbnQg
KmludGVudCk7Ci0KLS8qKgogICogQXNrcyB0aGUgbWFpbiBmcmFtZSB0byBuYXZpZ2F0ZSBiYWNr
IGluIHRoZSBoaXN0b3J5LgogICoKICAqIEBwYXJhbSBvIHZpZXcgb2JqZWN0IHRvIG5hdmlnYXRl
IGJhY2sKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL3Rlc3Rz
L3Jlc291cmNlcy9pbnRlbnQtcmVxdWVzdC5odG1sIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9lZmwvdGVzdHMvcmVzb3VyY2VzL2ludGVudC1yZXF1ZXN0Lmh0bWwKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDdiMDZjYmUuLjAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvcmVzb3VyY2VzL2ludGVudC1yZXF1ZXN0Lmh0bWwKKysr
IC9kZXYvbnVsbApAQCAtMSwyOSArMCwwIEBACi08aHRtbD4KLTxoZWFkPgotPHRpdGxlPldlYiBp
bnRlbnQgcmVxdWVzdCB0ZXN0PC90aXRsZT4KLTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0
Ij4KLXZhciBjbGlja0NvdW50ID0gMDsKLQotZnVuY3Rpb24gYnV0dG9uQ2xpY2tlZCgpIHsKLSAg
aWYgKGNsaWNrQ291bnQgPT0gMCkgewotICAgIHZhciB0ZXN0SW50ZW50ID0gbmV3IFdlYktpdElu
dGVudCgKLSAgICAgICAgICAgICAgICAgICAgIHsiYWN0aW9uIjogImFjdGlvbjEiLAotICAgICAg
ICAgICAgICAgICAgICAgICJ0eXBlIjogIm1pbWUvdHlwZTEiLAotICAgICAgICAgICAgICAgICAg
ICAgICJzZXJ2aWNlIjogImh0dHA6Ly9zZXJ2aWNlMS5jb20vIiwKLSAgICAgICAgICAgICAgICAg
ICAgICAiZXh0cmFzIjogeyJrZXkxIjogInZhbHVlMSIsICJrZXkyIjogInZhbHVlMiJ9fSk7Ci0g
ICAgbmF2aWdhdG9yLndlYmtpdFN0YXJ0QWN0aXZpdHkodGVzdEludGVudCk7Ci0gIH0gZWxzZSBp
ZiAoY2xpY2tDb3VudCA9PSAxKSB7Ci0gICAgdmFyIHRlc3RJbnRlbnQgPSBuZXcgV2ViS2l0SW50
ZW50KAotICAgICAgICAgICAgICAgICAgICAgeyJhY3Rpb24iOiAiYWN0aW9uMiIsCi0gICAgICAg
ICAgICAgICAgICAgICAgInR5cGUiOiAibWltZS90eXBlMiIsCi0gICAgICAgICAgICAgICAgICAg
ICAgInN1Z2dlc3Rpb25zIjogWyJodHRwOi8vc2VydmljZTEuY29tLyIsICJodHRwOi8vc2Vydmlj
ZTIuY29tLyJdfSk7Ci0gICAgbmF2aWdhdG9yLndlYmtpdFN0YXJ0QWN0aXZpdHkodGVzdEludGVu
dCk7Ci0gIH0KLSAgY2xpY2tDb3VudCsrOwotfQotPC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4K
LTxpbnB1dCB0eXBlPSJidXR0b24iIGlkPSJidXR0b24iIHZhbHVlPSJTdGFydCBXZWIgSW50ZW50
IiBvbm1vdXNldXA9ImJ1dHRvbkNsaWNrZWQoKSIgc3R5bGU9InBvc2l0aW9uOiBhYnNvbHV0ZTsg
dG9wOiAwcHg7IGxlZnQ6IDBweDsiLz4KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL3Jlc291cmNlcy9pbnRlbnQtc2Vy
dmljZS5odG1sIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvcmVzb3Vy
Y2VzL2ludGVudC1zZXJ2aWNlLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFk
OWZhMmEuLjAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvdGVz
dHMvcmVzb3VyY2VzL2ludGVudC1zZXJ2aWNlLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSw5ICsw
LDAgQEAKLTxodG1sPgotPGhlYWQ+Ci08dGl0bGU+V2ViIEludGVudCBzZXJ2aWNlIHJlZ2lzdHJh
dGlvbiB0ZXN0PC90aXRsZT4KLTwvaGVhZD4KLSAgPGJvZHk+Ci0gICAgPGludGVudCBhY3Rpb249
ImFjdGlvbiIgdHlwZT0idHlwZSIgdGl0bGU9IlRpdGxlIiBocmVmPSJodHRwOi8vZXhhbXBsZS5j
b20vc2VydmljZSIgZGlzcG9zaXRpb249ImlubGluZSI+PC9pbnRlbnQ+Ci0gICAgUmVnaXN0ZXJl
ZCBJbnRlbnQgU2VydmljZS4KLSAgPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvdGVzdF9ld2syX2ludGVudHMuY3BwIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvdGVzdF9ld2syX2ludGVudHMu
Y3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkN2Q5OWVhLi4wMDAwMDAwCi0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL3Rlc3RfZXdrMl9pbnRlbnRz
LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDExNyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChD
KSAyMDEyIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgot
ICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgot
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwot
Ci0jaW5jbHVkZSAiY29uZmlnLmgiCi0KLSNpbmNsdWRlICJVbml0VGVzdFV0aWxzL0VXSzJVbml0
VGVzdEJhc2UuaCIKLSNpbmNsdWRlICJVbml0VGVzdFV0aWxzL0VXSzJVbml0VGVzdFNlcnZlci5o
IgotCi11c2luZyBuYW1lc3BhY2UgRVdLMlVuaXRUZXN0OwotCi1leHRlcm4gRVdLMlVuaXRUZXN0
RW52aXJvbm1lbnQqIGVudmlyb25tZW50OwotCi1zdGF0aWMgdm9pZCBvbkludGVudFNlcnZpY2VS
ZWdpc3RyYXRpb24odm9pZCogdXNlckRhdGEsIEV2YXNfT2JqZWN0Kiwgdm9pZCogZXZlbnRJbmZv
KQotewotICAgIGJvb2wqIGludGVudFJlZ2lzdGVyZWQgPSBzdGF0aWNfY2FzdDxib29sKj4odXNl
ckRhdGEpOwotICAgIEFTU0VSVF9GQUxTRSgqaW50ZW50UmVnaXN0ZXJlZCk7Ci0gICAgKmludGVu
dFJlZ2lzdGVyZWQgPSB0cnVlOwotCi0gICAgRXdrX0ludGVudF9TZXJ2aWNlKiBzZXJ2aWNlID0g
c3RhdGljX2Nhc3Q8RXdrX0ludGVudF9TZXJ2aWNlKj4oZXZlbnRJbmZvKTsKLSAgICBBU1NFUlRf
VFJVRShzZXJ2aWNlKTsKLSAgICBFWFBFQ1RfU1RSRVEoImFjdGlvbiIsIGV3a19pbnRlbnRfc2Vy
dmljZV9hY3Rpb25fZ2V0KHNlcnZpY2UpKTsKLSAgICBFWFBFQ1RfU1RSRVEoInR5cGUiLCBld2tf
aW50ZW50X3NlcnZpY2VfdHlwZV9nZXQoc2VydmljZSkpOwotICAgIEVYUEVDVF9TVFJFUSgiVGl0
bGUiLCBld2tfaW50ZW50X3NlcnZpY2VfdGl0bGVfZ2V0KHNlcnZpY2UpKTsKLSAgICBFWFBFQ1Rf
U1RSRVEoImh0dHA6Ly9leGFtcGxlLmNvbS9zZXJ2aWNlIiwgZXdrX2ludGVudF9zZXJ2aWNlX2hy
ZWZfZ2V0KHNlcnZpY2UpKTsKLSAgICBFWFBFQ1RfU1RSRVEoImlubGluZSIsIGV3a19pbnRlbnRf
c2VydmljZV9kaXNwb3NpdGlvbl9nZXQoc2VydmljZSkpOwotfQotCi1URVNUX0YoRVdLMlVuaXRU
ZXN0QmFzZSwgZXdrX2ludGVudF9zZXJ2aWNlX3JlZ2lzdHJhdGlvbikKLXsKLSAgICBib29sIGlu
dGVudFJlZ2lzdGVyZWQgPSBmYWxzZTsKLSAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19h
ZGQod2ViVmlldygpLCAiaW50ZW50LHNlcnZpY2UscmVnaXN0ZXIiLCBvbkludGVudFNlcnZpY2VS
ZWdpc3RyYXRpb24sICZpbnRlbnRSZWdpc3RlcmVkKTsKLSAgICBBU1NFUlRfVFJVRShsb2FkVXJs
U3luYyhlbnZpcm9ubWVudC0+dXJsRm9yUmVzb3VyY2UoImludGVudC1zZXJ2aWNlLmh0bWwiKS5k
YXRhKCkpKTsKLSAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19kZWwod2ViVmlldygpLCAi
aW50ZW50LHNlcnZpY2UscmVnaXN0ZXIiLCBvbkludGVudFNlcnZpY2VSZWdpc3RyYXRpb24pOwot
ICAgIEFTU0VSVF9UUlVFKGludGVudFJlZ2lzdGVyZWQpOwotfQotCi1pbnQgc3RyaW5nU29ydENi
KGNvbnN0IHZvaWQqIGQxLCBjb25zdCB2b2lkKiBkMikKLXsKLSAgICByZXR1cm4gc3RyY21wKHN0
YXRpY19jYXN0PGNvbnN0IGNoYXIqPihkMSksIHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihkMikp
OwotfQotCi1zdGF0aWMgdm9pZCBvbkludGVudFJlY2VpdmVkKHZvaWQqIHVzZXJEYXRhLCBFdmFz
X09iamVjdCosIHZvaWQqIGV2ZW50SW5mbykKLXsKLSAgICB1bnNpZ25lZCogaW50ZW50UmVjZWl2
ZWRDb3VudCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkKj4odXNlckRhdGEpOwotICAgIEFTU0VSVF9H
RSgqaW50ZW50UmVjZWl2ZWRDb3VudCwgMCk7Ci0gICAgQVNTRVJUX0xFKCppbnRlbnRSZWNlaXZl
ZENvdW50LCAxKTsKLSAgICArKygqaW50ZW50UmVjZWl2ZWRDb3VudCk7Ci0KLSAgICBFd2tfSW50
ZW50KiBpbnRlbnQgPSBzdGF0aWNfY2FzdDxFd2tfSW50ZW50Kj4oZXZlbnRJbmZvKTsKLSAgICBB
U1NFUlRfVFJVRShpbnRlbnQpOwotCi0gICAgaWYgKCppbnRlbnRSZWNlaXZlZENvdW50ID09IDEp
IHsKLSAgICAgICAgLy8gRmlyc3QgaW50ZW50LgotICAgICAgICBFWFBFQ1RfU1RSRVEoImFjdGlv
bjEiLCBld2tfaW50ZW50X2FjdGlvbl9nZXQoaW50ZW50KSk7Ci0gICAgICAgIEVYUEVDVF9TVFJF
USgibWltZS90eXBlMSIsIGV3a19pbnRlbnRfdHlwZV9nZXQoaW50ZW50KSk7Ci0gICAgICAgIEVY
UEVDVF9TVFJFUSgiaHR0cDovL3NlcnZpY2UxLmNvbS8iLCBld2tfaW50ZW50X3NlcnZpY2VfZ2V0
KGludGVudCkpOwotICAgICAgICBFWFBFQ1RfU1RSRVEoInZhbHVlMSIsIGV3a19pbnRlbnRfZXh0
cmFfZ2V0KGludGVudCwgImtleTEiKSk7Ci0gICAgICAgIEVYUEVDVF9TVFJFUSgidmFsdWUyIiwg
ZXdrX2ludGVudF9leHRyYV9nZXQoaW50ZW50LCAia2V5MiIpKTsKLSAgICB9IGVsc2UgewotICAg
ICAgICAvLyBTZWNvbmQgaW50ZW50LgotICAgICAgICBFWFBFQ1RfU1RSRVEoImFjdGlvbjIiLCBl
d2tfaW50ZW50X2FjdGlvbl9nZXQoaW50ZW50KSk7Ci0gICAgICAgIEVYUEVDVF9TVFJFUSgibWlt
ZS90eXBlMiIsIGV3a19pbnRlbnRfdHlwZV9nZXQoaW50ZW50KSk7Ci0gICAgICAgIEVpbmFfTGlz
dCogc3VnZ2VzdGlvbnMgPSBld2tfaW50ZW50X3N1Z2dlc3Rpb25zX2dldChpbnRlbnQpOwotICAg
ICAgICBBU1NFUlRfVFJVRShzdWdnZXN0aW9ucyk7Ci0gICAgICAgIEFTU0VSVF9FUSgyLCBlaW5h
X2xpc3RfY291bnQoc3VnZ2VzdGlvbnMpKTsKLSAgICAgICAgLy8gV2UgbmVlZCB0byBzb3J0IHRo
ZSBzdWdnZXN0aW9ucyBzaW5jZSBJbnRlbnQgaXMgdXNpbmcgYSBIYXNoU2V0IGludGVybmFsbHku
Ci0gICAgICAgIHN1Z2dlc3Rpb25zID0gZWluYV9saXN0X3NvcnQoc3VnZ2VzdGlvbnMsIDIsIHN0
cmluZ1NvcnRDYik7Ci0gICAgICAgIEVYUEVDVF9TVFJFUSgiaHR0cDovL3NlcnZpY2UxLmNvbS8i
LCBzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4oZWluYV9saXN0X250aChzdWdnZXN0aW9ucywgMCkp
KTsKLSAgICAgICAgRVhQRUNUX1NUUkVRKCJodHRwOi8vc2VydmljZTIuY29tLyIsIHN0YXRpY19j
YXN0PGNvbnN0IGNoYXIqPihlaW5hX2xpc3RfbnRoKHN1Z2dlc3Rpb25zLCAxKSkpOwotCi0gICAg
ICAgIHZvaWQqIGxpc3REYXRhID0gMDsKLSAgICAgICAgRUlOQV9MSVNUX0ZSRUUoc3VnZ2VzdGlv
bnMsIGxpc3REYXRhKQotICAgICAgICAgICAgIGVpbmFfc3RyaW5nc2hhcmVfZGVsKHN0YXRpY19j
YXN0PGNvbnN0IGNoYXIqPihsaXN0RGF0YSkpOwotICAgIH0KLX0KLQotVEVTVF9GKEVXSzJVbml0
VGVzdEJhc2UsIGV3a19pbnRlbnRfcmVxdWVzdCkKLXsKLSAgICB1bnNpZ25lZCBpbnRlbnRSZWNl
aXZlZENvdW50ID0gMDsKLSAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19hZGQod2ViVmll
dygpLCAiaW50ZW50LHJlcXVlc3QsbmV3Iiwgb25JbnRlbnRSZWNlaXZlZCwgJmludGVudFJlY2Vp
dmVkQ291bnQpOwotICAgIEFTU0VSVF9UUlVFKGxvYWRVcmxTeW5jKGVudmlyb25tZW50LT51cmxG
b3JSZXNvdXJjZSgiaW50ZW50LXJlcXVlc3QuaHRtbCIpLmRhdGEoKSkpOwotCi0gICAgLy8gQSB1
c2VyIGdlc3R1cmUgaXMgcmVxdWlyZWQgZm9yIHRoZSBpbnRlbnQgdG8gc3RhcnQuCi0gICAgbW91
c2VDbGljayg1LCA1KTsKLSAgICB3aGlsZSAoaW50ZW50UmVjZWl2ZWRDb3VudCAhPSAxKQotICAg
ICAgICBlY29yZV9tYWluX2xvb3BfaXRlcmF0ZSgpOwotICAgIEFTU0VSVF9FUSgxLCBpbnRlbnRS
ZWNlaXZlZENvdW50KTsKLQotICAgIC8vIEdlbmVyYXRlIGEgc2Vjb25kIGludGVudCByZXF1ZXN0
LgotICAgIG1vdXNlQ2xpY2soNSwgNSk7Ci0gICAgd2hpbGUgKGludGVudFJlY2VpdmVkQ291bnQg
IT0gMikKLSAgICAgICAgZWNvcmVfbWFpbl9sb29wX2l0ZXJhdGUoKTsKLSAgICBBU1NFUlRfRVEo
MiwgaW50ZW50UmVjZWl2ZWRDb3VudCk7Ci0gICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tf
ZGVsKHdlYlZpZXcoKSwgImludGVudCxyZXF1ZXN0LG5ldyIsIG9uSW50ZW50UmVjZWl2ZWQpOwot
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9QYWdlTG9hZENsaWVu
dEVmbC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1BhZ2VMb2FkQ2xpZW50RWZs
LmNwcAppbmRleCA3NDk1MTEwLi41YTAwZGNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvZWZsL1BhZ2VMb2FkQ2xpZW50RWZsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvZWZsL1BhZ2VMb2FkQ2xpZW50RWZsLmNwcApAQCAtMzQsOCArMzQsNiBAQAogI2lu
Y2x1ZGUgImV3a19hdXRoX3JlcXVlc3RfcHJpdmF0ZS5oIgogI2luY2x1ZGUgImV3a19iYWNrX2Zv
cndhcmRfbGlzdF9wcml2YXRlLmgiCiAjaW5jbHVkZSAiZXdrX2Vycm9yX3ByaXZhdGUuaCIKLSNp
bmNsdWRlICJld2tfaW50ZW50X3ByaXZhdGUuaCIKLSNpbmNsdWRlICJld2tfaW50ZW50X3NlcnZp
Y2VfcHJpdmF0ZS5oIgogI2luY2x1ZGUgImV3a192aWV3LmgiCiAKIHVzaW5nIG5hbWVzcGFjZSBF
d2tWaWV3Q2FsbGJhY2tzOwpAQCAtNTYsMjQgKzU0LDYgQEAgdm9pZCBQYWdlTG9hZENsaWVudEVm
bDo6ZGlkUmVjZWl2ZVRpdGxlRm9yRnJhbWUoV0tQYWdlUmVmLCBXS1N0cmluZ1JlZiB0aXRsZSwg
V0sKICAgICB2aWV3LT5zbWFydENhbGxiYWNrPFRpdGxlQ2hhbmdlPigpLmNhbGwodG9JbXBsKHRp
dGxlKS0+c3RyaW5nKCkpOwogfQogCi0jaWYgRU5BQkxFKFdFQl9JTlRFTlRTKQotdm9pZCBQYWdl
TG9hZENsaWVudEVmbDo6ZGlkUmVjZWl2ZUludGVudEZvckZyYW1lKFdLUGFnZVJlZiwgV0tGcmFt
ZVJlZiwgV0tJbnRlbnREYXRhUmVmIGludGVudCwgV0tUeXBlUmVmLCBjb25zdCB2b2lkKiBjbGll
bnRJbmZvKQotewotICAgIEV3a1ZpZXcqIHZpZXcgPSB0b1BhZ2VMb2FkQ2xpZW50RWZsKGNsaWVu
dEluZm8pLT52aWV3KCk7Ci0gICAgUmVmUHRyPEV3a0ludGVudD4gZXdrSW50ZW50ID0gRXdrSW50
ZW50OjpjcmVhdGUoaW50ZW50KTsKLSAgICB2aWV3LT5zbWFydENhbGxiYWNrPEludGVudFJlcXVl
c3Q+KCkuY2FsbChld2tJbnRlbnQuZ2V0KCkpOwotfQotI2VuZGlmCi0KLSNpZiBFTkFCTEUoV0VC
X0lOVEVOVFNfVEFHKQotdm9pZCBQYWdlTG9hZENsaWVudEVmbDo6cmVnaXN0ZXJJbnRlbnRTZXJ2
aWNlRm9yRnJhbWUoV0tQYWdlUmVmLCBXS0ZyYW1lUmVmLCBXS0ludGVudFNlcnZpY2VJbmZvUmVm
IHNlcnZpY2VJbmZvLCBXS1R5cGVSZWYsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCi17Ci0gICAg
RXdrVmlldyogdmlldyA9IHRvUGFnZUxvYWRDbGllbnRFZmwoY2xpZW50SW5mbyktPnZpZXcoKTsK
LSAgICBSZWZQdHI8RXdrSW50ZW50U2VydmljZT4gZXdrSW50ZW50U2VydmljZSA9IEV3a0ludGVu
dFNlcnZpY2U6OmNyZWF0ZShzZXJ2aWNlSW5mbyk7Ci0gICAgdmlldy0+c21hcnRDYWxsYmFjazxJ
bnRlbnRTZXJ2aWNlUmVnaXN0cmF0aW9uPigpLmNhbGwoZXdrSW50ZW50U2VydmljZS5nZXQoKSk7
Ci19Ci0jZW5kaWYKLQogdm9pZCBQYWdlTG9hZENsaWVudEVmbDo6ZGlkQ2hhbmdlUHJvZ3Jlc3Mo
V0tQYWdlUmVmIHBhZ2UsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCiB7CiAgICAgRXdrVmlldyog
dmlldyA9IHRvUGFnZUxvYWRDbGllbnRFZmwoY2xpZW50SW5mbyktPnZpZXcoKTsKQEAgLTE4Miwx
MiArMTYyLDYgQEAgUGFnZUxvYWRDbGllbnRFZmw6OlBhZ2VMb2FkQ2xpZW50RWZsKEV3a1ZpZXcq
IHZpZXcpCiAgICAgbG9hZENsaWVudC52ZXJzaW9uID0ga1dLUGFnZUxvYWRlckNsaWVudEN1cnJl
bnRWZXJzaW9uOwogICAgIGxvYWRDbGllbnQuY2xpZW50SW5mbyA9IHRoaXM7CiAgICAgbG9hZENs
aWVudC5kaWRSZWNlaXZlVGl0bGVGb3JGcmFtZSA9IGRpZFJlY2VpdmVUaXRsZUZvckZyYW1lOwot
I2lmIEVOQUJMRShXRUJfSU5URU5UUykKLSAgICBsb2FkQ2xpZW50LmRpZFJlY2VpdmVJbnRlbnRG
b3JGcmFtZSA9IGRpZFJlY2VpdmVJbnRlbnRGb3JGcmFtZTsKLSNlbmRpZgotI2lmIEVOQUJMRShX
RUJfSU5URU5UU19UQUcpCi0gICAgbG9hZENsaWVudC5yZWdpc3RlckludGVudFNlcnZpY2VGb3JG
cmFtZSA9IHJlZ2lzdGVySW50ZW50U2VydmljZUZvckZyYW1lOwotI2VuZGlmCiAgICAgbG9hZENs
aWVudC5kaWRTdGFydFByb2dyZXNzID0gZGlkQ2hhbmdlUHJvZ3Jlc3M7CiAgICAgbG9hZENsaWVu
dC5kaWRDaGFuZ2VQcm9ncmVzcyA9IGRpZENoYW5nZVByb2dyZXNzOwogICAgIGxvYWRDbGllbnQu
ZGlkRmluaXNoUHJvZ3Jlc3MgPSBkaWRDaGFuZ2VQcm9ncmVzczsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvUGFnZUxvYWRDbGllbnRFZmwuaCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9lZmwvUGFnZUxvYWRDbGllbnRFZmwuaAppbmRleCBhOGUxMjM1Li4yYmE3
MGZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1BhZ2VMb2FkQ2xp
ZW50RWZsLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9QYWdlTG9hZENsaWVu
dEVmbC5oCkBAIC00NywxMiArNDcsNiBAQCBwcml2YXRlOgogICAgIGlubGluZSBFd2tWaWV3KiB2
aWV3KCkgY29uc3QgeyByZXR1cm4gbV92aWV3OyB9CiAKICAgICBzdGF0aWMgdm9pZCBkaWRSZWNl
aXZlVGl0bGVGb3JGcmFtZShXS1BhZ2VSZWYsIFdLU3RyaW5nUmVmIHRpdGxlLCBXS0ZyYW1lUmVm
LCBXS1R5cGVSZWYsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pOwotI2lmIEVOQUJMRShXRUJfSU5U
RU5UUykKLSAgICBzdGF0aWMgdm9pZCBkaWRSZWNlaXZlSW50ZW50Rm9yRnJhbWUoV0tQYWdlUmVm
LCBXS0ZyYW1lUmVmLCBXS0ludGVudERhdGFSZWYsIFdLVHlwZVJlZiwgY29uc3Qgdm9pZCogY2xp
ZW50SW5mbyk7Ci0jZW5kaWYKLSNpZiBFTkFCTEUoV0VCX0lOVEVOVFNfVEFHKQotICAgIHN0YXRp
YyB2b2lkIHJlZ2lzdGVySW50ZW50U2VydmljZUZvckZyYW1lKFdLUGFnZVJlZiwgV0tGcmFtZVJl
ZiwgV0tJbnRlbnRTZXJ2aWNlSW5mb1JlZiwgV0tUeXBlUmVmLCBjb25zdCB2b2lkKiBjbGllbnRJ
bmZvKTsKLSNlbmRpZgogICAgIHN0YXRpYyB2b2lkIGRpZENoYW5nZVByb2dyZXNzKFdLUGFnZVJl
ZiwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7CiAgICAgc3RhdGljIHZvaWQgZGlkRmluaXNoTG9h
ZEZvckZyYW1lKFdLUGFnZVJlZiwgV0tGcmFtZVJlZiwgV0tUeXBlUmVmIHVzZXJEYXRhLCBjb25z
dCB2b2lkKiBjbGllbnRJbmZvKTsKICAgICBzdGF0aWMgdm9pZCBkaWRGYWlsTG9hZFdpdGhFcnJv
ckZvckZyYW1lKFdLUGFnZVJlZiwgV0tGcmFtZVJlZiwgV0tFcnJvclJlZiwgV0tUeXBlUmVmIHVz
ZXJEYXRhLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9jbWFr
ZS9PcHRpb25zRWZsLmNtYWtlIGIvU291cmNlL2NtYWtlL09wdGlvbnNFZmwuY21ha2UKaW5kZXgg
MWEzOTdiNi4uYmQxYjdlMiAxMDA2NDQKLS0tIGEvU291cmNlL2NtYWtlL09wdGlvbnNFZmwuY21h
a2UKKysrIGIvU291cmNlL2NtYWtlL09wdGlvbnNFZmwuY21ha2UKQEAgLTkxLDggKzkxLDYgQEAg
V0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX1ZJQlJBVElPTiBPTikKIFdF
QktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9WSURFTyBPTikKIFdFQktJVF9P
UFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9WSURFT19UUkFDSyBPTikKIFdFQktJVF9P
UFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9XRUJfQVVESU8gT04pCi1XRUJLSVRfT1BU
SU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfV0VCX0lOVEVOVFMgT04pCi1XRUJLSVRfT1BU
SU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfV0VCX0lOVEVOVFNfVEFHIE9OKQogV0VCS0lU
X09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX1dFQl9USU1JTkcgT04pCiBXRUJLSVRf
T1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfV0VCR0wgT04pCiBXRUJLSVRfT1BUSU9O
X0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfWEhSX1RJTUVPVVQgT04pCmRpZmYgLS1naXQgYS9U
b29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMmRhNWM3Ny4uZjNkMzg1YiAx
MDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSw1
ICsxLDI2IEBACiAyMDEzLTAxLTMxICBDaHJpc3RvcGhlIER1bWV6ICA8ZGNocmlzQGdtYWlsLmNv
bT4KIAorICAgICAgICBbRUZMXSBEaXNhYmxlIFdlYiBJbnRlbnRzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDg0NTcKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZW1vdmUgRUZMIERSVCBjb2RlIHJlbGF0
ZWQgdG8gV2ViIGludGVudHMuCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9lZmwvRHVtcFJl
bmRlclRyZWVDaHJvbWUuY3BwOgorICAgICAgICAoRHVtcFJlbmRlclRyZWVDaHJvbWU6OmNyZWF0
ZVZpZXcpOgorICAgICAgICAoRHVtcFJlbmRlclRyZWVDaHJvbWU6OnJlc2V0RGVmYXVsdHNUb0Nv
bnNpc3RlbnRWYWx1ZXMpOgorICAgICAgICAoRHVtcFJlbmRlclRyZWVDaHJvbWU6Om9uRnJhbWVD
cmVhdGVkKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9lZmwvRHVtcFJlbmRlclRyZWVDaHJv
bWUuaDoKKyAgICAgICAgKER1bXBSZW5kZXJUcmVlQ2hyb21lKToKKyAgICAgICAgKiBEdW1wUmVu
ZGVyVHJlZS9lZmwvVGVzdFJ1bm5lckVmbC5jcHA6CisgICAgICAgIChUZXN0UnVubmVyOjpzZW5k
V2ViSW50ZW50UmVzcG9uc2UpOgorICAgICAgICAoVGVzdFJ1bm5lcjo6ZGVsaXZlcldlYkludGVu
dCk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRwZXJsL0ZlYXR1cmVMaXN0LnBtOiBUdXJuIG9m
ZiBXRUJfSU5URU5UUyBmbGFnCisgICAgICAgIGZvciBFRkwgcG9ydC4KKworMjAxMy0wMS0zMSAg
Q2hyaXN0b3BoZSBEdW1leiAgPGRjaHJpc0BnbWFpbC5jb20+CisKICAgICAgICAgVXBkYXRlIENo
cmlzdG9waGUgRHVtZXoncyBlbWFpbCBhZGRyZXNzCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDg0NTMKIApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJl
bmRlclRyZWUvZWZsL0R1bXBSZW5kZXJUcmVlQ2hyb21lLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL2VmbC9EdW1wUmVuZGVyVHJlZUNocm9tZS5jcHAKaW5kZXggY2Q5MzdmZi4uZTVhODRiZiAx
MDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvZWZsL0R1bXBSZW5kZXJUcmVlQ2hyb21l
LmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9lZmwvRHVtcFJlbmRlclRyZWVDaHJvbWUu
Y3BwCkBAIC01NCw3ICs1NCw2IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBIYXNoTWFw
PHVuc2lnbmVkIGxvbmcsIENTdHJpbmc+IER1bXBSZW5kZXJUcmVlQ2hyb21lOjptX2R1bXBBc3Np
Z25lZFVybHM7CiBFdmFzX09iamVjdCogRHVtcFJlbmRlclRyZWVDaHJvbWU6Om1fcHJvdmlzaW9u
YWxMb2FkRmFpbGVkRnJhbWUgPSAwOwotRXdrX0ludGVudF9SZXF1ZXN0KiBEdW1wUmVuZGVyVHJl
ZUNocm9tZTo6bV9jdXJyZW50SW50ZW50UmVxdWVzdCA9IDA7CiAKIFBhc3NPd25QdHI8RHVtcFJl
bmRlclRyZWVDaHJvbWU+IER1bXBSZW5kZXJUcmVlQ2hyb21lOjpjcmVhdGUoRXZhcyogZXZhcykK
IHsKQEAgLTEyMyw4ICsxMjIsNiBAQCBFdmFzX09iamVjdCogRHVtcFJlbmRlclRyZWVDaHJvbWU6
OmNyZWF0ZVZpZXcoKSBjb25zdAogCiAgICAgRXZhc19PYmplY3QqIG1haW5GcmFtZSA9IGV3a192
aWV3X2ZyYW1lX21haW5fZ2V0KHZpZXcpOwogICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNr
X2FkZChtYWluRnJhbWUsICJpY29uLGNoYW5nZWQiLCBvbkZyYW1lSWNvbkNoYW5nZWQsIDApOwot
ICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2FkZChtYWluRnJhbWUsICJpbnRlbnQsbmV3
Iiwgb25GcmFtZUludGVudE5ldywgMCk7Ci0gICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tf
YWRkKG1haW5GcmFtZSwgImludGVudCxzZXJ2aWNlLHJlZ2lzdGVyIiwgb25GcmFtZUludGVudFNl
cnZpY2VSZWdpc3RyYXRpb24sIDApOwogICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2Fk
ZChtYWluRnJhbWUsICJsb2FkLHByb3Zpc2lvbmFsIiwgb25GcmFtZVByb3Zpc2lvbmFsTG9hZCwg
MCk7CiAgICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfYWRkKG1haW5GcmFtZSwgImxvYWQs
cHJvdmlzaW9uYWwsZmFpbGVkIiwgb25GcmFtZVByb3Zpc2lvbmFsTG9hZEZhaWxlZCwgMCk7CiAg
ICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfYWRkKG1haW5GcmFtZSwgImxvYWQsY29tbWl0
dGVkIiwgb25GcmFtZUxvYWRDb21taXR0ZWQsIDApOwpAQCAtMjQxLDExICsyMzgsNiBAQCBFdmFz
X09iamVjdCogRHVtcFJlbmRlclRyZWVDaHJvbWU6Om1haW5WaWV3KCkgY29uc3QKICAgICByZXR1
cm4gbV9tYWluVmlldzsKIH0KIAotRXdrX0ludGVudF9SZXF1ZXN0KiBEdW1wUmVuZGVyVHJlZUNo
cm9tZTo6Y3VycmVudEludGVudFJlcXVlc3QoKSBjb25zdAotewotICAgIHJldHVybiBtX2N1cnJl
bnRJbnRlbnRSZXF1ZXN0OwotfQotCiB2b2lkIER1bXBSZW5kZXJUcmVlQ2hyb21lOjpyZXNldERl
ZmF1bHRzVG9Db25zaXN0ZW50VmFsdWVzKCkKIHsKICAgICBld2tfc2V0dGluZ3NfaWNvbl9kYXRh
YmFzZV9jbGVhcigpOwpAQCAtMzMyLDExICszMjQsNiBAQCB2b2lkIER1bXBSZW5kZXJUcmVlQ2hy
b21lOjpyZXNldERlZmF1bHRzVG9Db25zaXN0ZW50VmFsdWVzKCkKICAgICBEdW1wUmVuZGVyVHJl
ZVN1cHBvcnRFZmw6OnNldERlYWREZWNvZGVkRGF0YURlbGV0aW9uSW50ZXJ2YWwoMCk7CiAgICAg
ZXdrX3NldHRpbmdzX3BhZ2VfY2FjaGVfY2FwYWNpdHlfc2V0KDMpOwogCi0gICAgaWYgKG1fY3Vy
cmVudEludGVudFJlcXVlc3QpIHsKLSAgICAgICAgZXdrX2ludGVudF9yZXF1ZXN0X3VucmVmKG1f
Y3VycmVudEludGVudFJlcXVlc3QpOwotICAgICAgICBtX2N1cnJlbnRJbnRlbnRSZXF1ZXN0ID0g
MDsKLSAgICB9Ci0KICAgICBwb2xpY3lEZWxlZ2F0ZUVuYWJsZWQgPSBmYWxzZTsKICAgICBwb2xp
Y3lEZWxlZ2F0ZVBlcm1pc3NpdmUgPSBmYWxzZTsKIH0KQEAgLTYxNiw4ICs2MDMsNiBAQCB2b2lk
IER1bXBSZW5kZXJUcmVlQ2hyb21lOjpvbkZyYW1lQ3JlYXRlZCh2b2lkKiwgRXZhc19PYmplY3Qq
LCB2b2lkKiBldmVudEluZm8pCiAgICAgRXZhc19PYmplY3QqIGZyYW1lID0gc3RhdGljX2Nhc3Q8
RXZhc19PYmplY3QqPihldmVudEluZm8pOwogCiAgICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJh
Y2tfYWRkKGZyYW1lLCAiaWNvbixjaGFuZ2VkIiwgb25GcmFtZUljb25DaGFuZ2VkLCAwKTsKLSAg
ICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19hZGQoZnJhbWUsICJpbnRlbnQsbmV3Iiwgb25G
cmFtZUludGVudE5ldywgMCk7Ci0gICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfYWRkKGZy
YW1lLCAiaW50ZW50LHNlcnZpY2UscmVnaXN0ZXIiLCBvbkZyYW1lSW50ZW50U2VydmljZVJlZ2lz
dHJhdGlvbiwgMCk7CiAgICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfYWRkKGZyYW1lLCAi
bG9hZCxwcm92aXNpb25hbCIsIG9uRnJhbWVQcm92aXNpb25hbExvYWQsIDApOwogICAgIGV2YXNf
b2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2FkZChmcmFtZSwgImxvYWQscHJvdmlzaW9uYWwsZmFpbGVk
Iiwgb25GcmFtZVByb3Zpc2lvbmFsTG9hZEZhaWxlZCwgMCk7CiAgICAgZXZhc19vYmplY3Rfc21h
cnRfY2FsbGJhY2tfYWRkKGZyYW1lLCAibG9hZCxjb21taXR0ZWQiLCBvbkZyYW1lTG9hZENvbW1p
dHRlZCwgMCk7CkBAIC04NTEsNjEgKzgzNiw2IEBAIHZvaWQgRHVtcFJlbmRlclRyZWVDaHJvbWU6
Om9uTmV3UmVzb3VyY2VSZXF1ZXN0KHZvaWQqLCBFdmFzX09iamVjdCosIHZvaWQqIGV2ZW50CiAg
ICAgICAgIG1fZHVtcEFzc2lnbmVkVXJscy5hZGQocmVxdWVzdC0+aWRlbnRpZmllciwgcGF0aFN1
aXRhYmxlRm9yVGVzdFJlc3VsdChyZXF1ZXN0LT51cmwpKTsKIH0KIAotdm9pZCBEdW1wUmVuZGVy
VHJlZUNocm9tZTo6b25GcmFtZUludGVudE5ldyh2b2lkKiwgRXZhc19PYmplY3QqLCB2b2lkKiBl
dmVudEluZm8pCi17Ci0gICAgRXdrX0ludGVudF9SZXF1ZXN0KiByZXF1ZXN0ID0gc3RhdGljX2Nh
c3Q8RXdrX0ludGVudF9SZXF1ZXN0Kj4oZXZlbnRJbmZvKTsKLSAgICBFd2tfSW50ZW50KiBpbnRl
bnQgPSBld2tfaW50ZW50X3JlcXVlc3RfaW50ZW50X2dldChyZXF1ZXN0KTsKLSAgICBpZiAoIWlu
dGVudCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZXdrX2ludGVudF9yZXF1ZXN0X3JlZihyZXF1
ZXN0KTsKLSAgICBpZiAobV9jdXJyZW50SW50ZW50UmVxdWVzdCkKLSAgICAgICAgZXdrX2ludGVu
dF9yZXF1ZXN0X3VucmVmKG1fY3VycmVudEludGVudFJlcXVlc3QpOwotICAgIG1fY3VycmVudElu
dGVudFJlcXVlc3QgPSByZXF1ZXN0OwotCi0gICAgcHJpbnRmKCJSZWNlaXZlZCBXZWIgSW50ZW50
OiBhY3Rpb249JXMgdHlwZT0lc1xuIiwKLSAgICAgICAgICAgZXdrX2ludGVudF9hY3Rpb25fZ2V0
KGludGVudCksCi0gICAgICAgICAgIGV3a19pbnRlbnRfdHlwZV9nZXQoaW50ZW50KSk7Ci0KLSAg
ICBjb25zdCBNZXNzYWdlUG9ydENoYW5uZWxBcnJheSogbWVzc2FnZVBvcnRzID0gRHVtcFJlbmRl
clRyZWVTdXBwb3J0RWZsOjppbnRlbnRNZXNzYWdlUG9ydHMoaW50ZW50KTsKLSAgICBpZiAobWVz
c2FnZVBvcnRzKQotICAgICAgICBwcmludGYoIkhhdmUgJWQgcG9ydHNcbiIsIHN0YXRpY19jYXN0
PGludD4obWVzc2FnZVBvcnRzLT5zaXplKCkpKTsKLQotICAgIGNvbnN0IGNoYXIqIHNlcnZpY2Ug
PSBld2tfaW50ZW50X3NlcnZpY2VfZ2V0KGludGVudCk7Ci0gICAgaWYgKHNlcnZpY2UgJiYgc3Ry
Y21wKHNlcnZpY2UsICIiKSkKLSAgICAgICAgcHJpbnRmKCJFeHBsaWNpdCBpbnRlbnQgc2Vydmlj
ZTogJXNcbiIsIHNlcnZpY2UpOwotCi0gICAgdm9pZCogZGF0YSA9IDA7Ci0gICAgRWluYV9MaXN0
KiBleHRyYU5hbWVzID0gZXdrX2ludGVudF9leHRyYV9uYW1lc19nZXQoaW50ZW50KTsKLSAgICBF
SU5BX0xJU1RfRlJFRShleHRyYU5hbWVzLCBkYXRhKSB7Ci0gICAgICAgIGNvbnN0IGNoYXIqIG5h
bWUgPSBzdGF0aWNfY2FzdDxjaGFyKj4oZGF0YSk7Ci0gICAgICAgIGNvbnN0IGNoYXIqIHZhbHVl
ID0gZXdrX2ludGVudF9leHRyYV9nZXQoaW50ZW50LCBuYW1lKTsKLSAgICAgICAgaWYgKHZhbHVl
KSB7Ci0gICAgICAgICAgICBwcmludGYoIkV4dHJhc1slc10gPSAlc1xuIiwgbmFtZSwgdmFsdWUp
OwotICAgICAgICAgICAgZWluYV9zdHJpbmdzaGFyZV9kZWwodmFsdWUpOwotICAgICAgICB9Ci0g
ICAgICAgIGVpbmFfc3RyaW5nc2hhcmVfZGVsKG5hbWUpOwotICAgIH0KLQotICAgIEVpbmFfTGlz
dCogc3VnZ2VzdGlvbnMgPSBld2tfaW50ZW50X3N1Z2dlc3Rpb25zX2dldChpbnRlbnQpOwotICAg
IEVJTkFfTElTVF9GUkVFKHN1Z2dlc3Rpb25zLCBkYXRhKSB7Ci0gICAgICAgIGNvbnN0IGNoYXIq
IHN1Z2dlc3Rpb24gPSBzdGF0aWNfY2FzdDxjaGFyKj4oZGF0YSk7Ci0gICAgICAgIHByaW50Zigi
SGF2ZSBzdWdnZXN0aW9uICVzXG4iLCBzdWdnZXN0aW9uKTsKLSAgICAgICAgZWluYV9zdHJpbmdz
aGFyZV9kZWwoc3VnZ2VzdGlvbik7Ci0gICAgfQotfQotCi12b2lkIER1bXBSZW5kZXJUcmVlQ2hy
b21lOjpvbkZyYW1lSW50ZW50U2VydmljZVJlZ2lzdHJhdGlvbih2b2lkKiwgRXZhc19PYmplY3Qq
LCB2b2lkKiBldmVudEluZm8pCi17Ci0gICAgRXdrX0ludGVudF9TZXJ2aWNlX0luZm8qIHNlcnZp
Y2VJbmZvID0gc3RhdGljX2Nhc3Q8RXdrX0ludGVudF9TZXJ2aWNlX0luZm8qPihldmVudEluZm8p
OwotICAgIHByaW50ZigiUmVnaXN0ZXJlZCBXZWIgSW50ZW50IFNlcnZpY2U6IGFjdGlvbj0lcyB0
eXBlPSVzIHRpdGxlPSVzIHVybD0lcyBkaXNwb3NpdGlvbj0lc1xuIiwKLSAgICAgICAgICAgc2Vy
dmljZUluZm8tPmFjdGlvbiwKLSAgICAgICAgICAgc2VydmljZUluZm8tPnR5cGUsCi0gICAgICAg
ICAgIHNlcnZpY2VJbmZvLT50aXRsZSwKLSAgICAgICAgICAgc2VydmljZUluZm8tPmhyZWYsCi0g
ICAgICAgICAgIHNlcnZpY2VJbmZvLT5kaXNwb3NpdGlvbik7Ci19Ci0KIHZvaWQgRHVtcFJlbmRl
clRyZWVDaHJvbWU6Om9uRG93bmxvYWRSZXF1ZXN0KHZvaWQqLCBFdmFzX09iamVjdCosIHZvaWQq
IGV2ZW50SW5mbykKIHsKICAgICAvLyBJbiBjYXNlIG9mICJkb3dubG9hZCxyZXF1ZXN0IiwgdGhl
IFVSTCBuZWVkIHRvIGJlIGRvd25sb2FkZWQsIG5vdCBvcGVuZWQgb24gdGhlIGN1cnJlbnQgdmll
dy4KZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2VmbC9EdW1wUmVuZGVyVHJlZUNo
cm9tZS5oIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvZWZsL0R1bXBSZW5kZXJUcmVlQ2hyb21lLmgK
aW5kZXggMzJhMzY1NC4uMWZjYzUzNCAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUv
ZWZsL0R1bXBSZW5kZXJUcmVlQ2hyb21lLmgKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvZWZs
L0R1bXBSZW5kZXJUcmVlQ2hyb21lLmgKQEAgLTMyLDcgKzMyLDYgQEAKIAogI2luY2x1ZGUgPEVp
bmEuaD4KICNpbmNsdWRlIDxFdmFzLmg+Ci0jaW5jbHVkZSA8ZXdrX2ludGVudF9yZXF1ZXN0Lmg+
CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CiAjaW5j
bHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KQEAgLTU4LDggKzU3LDYgQEAgcHVibGljOgogICAgIEV2
YXNfT2JqZWN0KiBtYWluRnJhbWUoKSBjb25zdDsKICAgICBFdmFzX09iamVjdCogbWFpblZpZXco
KSBjb25zdDsKIAotICAgIEV3a19JbnRlbnRfUmVxdWVzdCogY3VycmVudEludGVudFJlcXVlc3Qo
KSBjb25zdDsKLQogICAgIHZvaWQgcmVzZXREZWZhdWx0c1RvQ29uc2lzdGVudFZhbHVlcygpOwog
CiBwcml2YXRlOgpAQCAtNzUsNyArNzIsNiBAQCBwcml2YXRlOgogICAgIFZlY3RvcjxFdmFzX09i
amVjdCo+IG1fZXh0cmFWaWV3czsKICAgICBzdGF0aWMgSGFzaE1hcDx1bnNpZ25lZCBsb25nLCBD
U3RyaW5nPiBtX2R1bXBBc3NpZ25lZFVybHM7CiAgICAgc3RhdGljIEV2YXNfT2JqZWN0KiBtX3By
b3Zpc2lvbmFsTG9hZEZhaWxlZEZyYW1lOwotICAgIHN0YXRpYyBFd2tfSW50ZW50X1JlcXVlc3Qq
IG1fY3VycmVudEludGVudFJlcXVlc3Q7CiAKICAgICAvLyBTbWFydCBjYWxsYmFja3MKICAgICBz
dGF0aWMgdm9pZCBvbldpbmRvd09iamVjdENsZWFyZWQodm9pZCosIEV2YXNfT2JqZWN0Kiwgdm9p
ZCopOwpAQCAtMTM5LDkgKzEzNSw2IEBAIHByaXZhdGU6CiAKICAgICBzdGF0aWMgdm9pZCBvbk5l
d1Jlc291cmNlUmVxdWVzdCh2b2lkKiwgRXZhc19PYmplY3QqLCB2b2lkKik7CiAKLSAgICBzdGF0
aWMgdm9pZCBvbkZyYW1lSW50ZW50TmV3KHZvaWQqLCBFdmFzX09iamVjdCosIHZvaWQqKTsKLSAg
ICBzdGF0aWMgdm9pZCBvbkZyYW1lSW50ZW50U2VydmljZVJlZ2lzdHJhdGlvbih2b2lkKiwgRXZh
c19PYmplY3QqLCB2b2lkKik7Ci0KICAgICBzdGF0aWMgdm9pZCBvbkRvd25sb2FkUmVxdWVzdCh2
b2lkKiwgRXZhc19PYmplY3QqLCB2b2lkKik7CiB9OwogCmRpZmYgLS1naXQgYS9Ub29scy9EdW1w
UmVuZGVyVHJlZS9lZmwvVGVzdFJ1bm5lckVmbC5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9l
ZmwvVGVzdFJ1bm5lckVmbC5jcHAKaW5kZXggMTdmYWY0OC4uYTJkNGI4OCAxMDA2NDQKLS0tIGEv
VG9vbHMvRHVtcFJlbmRlclRyZWUvZWZsL1Rlc3RSdW5uZXJFZmwuY3BwCisrKyBiL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL2VmbC9UZXN0UnVubmVyRWZsLmNwcApAQCAtOTAxLDE4ICs5MDEsMTQgQEAg
dm9pZCBUZXN0UnVubmVyOjpzZXRBdXRvbWF0aWNMaW5rRGV0ZWN0aW9uRW5hYmxlZChib29sKQog
ICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKLXZvaWQgVGVzdFJ1bm5lcjo6c2VuZFdlYkludGVu
dFJlc3BvbnNlKEpTU3RyaW5nUmVmIHJlc3BvbnNlKQordm9pZCBUZXN0UnVubmVyOjpzZW5kV2Vi
SW50ZW50UmVzcG9uc2UoSlNTdHJpbmdSZWYpCiB7Ci0gICAgRXdrX0ludGVudF9SZXF1ZXN0KiBy
ZXF1ZXN0ID0gYnJvd3Nlci0+Y3VycmVudEludGVudFJlcXVlc3QoKTsKLSAgICBpZiAoIXJlcXVl
c3QpCi0gICAgICAgIHJldHVybjsKLQotICAgIER1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbDo6c2Vu
ZFdlYkludGVudFJlc3BvbnNlKHJlcXVlc3QsIHJlc3BvbnNlKTsKKyAgICBub3RJbXBsZW1lbnRl
ZCgpOwogfQogCi12b2lkIFRlc3RSdW5uZXI6OmRlbGl2ZXJXZWJJbnRlbnQoSlNTdHJpbmdSZWYg
YWN0aW9uLCBKU1N0cmluZ1JlZiB0eXBlLCBKU1N0cmluZ1JlZiBkYXRhKQordm9pZCBUZXN0UnVu
bmVyOjpkZWxpdmVyV2ViSW50ZW50KEpTU3RyaW5nUmVmLCBKU1N0cmluZ1JlZiwgSlNTdHJpbmdS
ZWYpCiB7Ci0gICAgRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsOjpkZWxpdmVyV2ViSW50ZW50KGJy
b3dzZXItPm1haW5GcmFtZSgpLCBhY3Rpb24sIHR5cGUsIGRhdGEpOworICAgIG5vdEltcGxlbWVu
dGVkKCk7CiB9CiAKIHZvaWQgVGVzdFJ1bm5lcjo6c2V0U3RvcmFnZURhdGFiYXNlSWRsZUludGVy
dmFsKGRvdWJsZSkKZGlmZiAtLWdpdCBhL1Rvb2xzL1NjcmlwdHMvd2Via2l0cGVybC9GZWF0dXJl
TGlzdC5wbSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cGVybC9GZWF0dXJlTGlzdC5wbQppbmRleCBm
NGVhYzk1Li4xNzU1OWRlIDEwMDY0NAotLS0gYS9Ub29scy9TY3JpcHRzL3dlYmtpdHBlcmwvRmVh
dHVyZUxpc3QucG0KKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJraXRwZXJsL0ZlYXR1cmVMaXN0LnBt
CkBAIC00NTgsMTAgKzQ1OCwxMCBAQCBteSBAZmVhdHVyZXMgPSAoCiAgICAgICBkZWZpbmUgPT4g
IkVOQUJMRV9XRUJfQVVESU8iLCBkZWZhdWx0ID0+IChpc0VmbCgpKSwgdmFsdWUgPT4gXCR3ZWJB
dWRpb1N1cHBvcnQgfSwKIAogICAgIHsgb3B0aW9uID0+ICJ3ZWItaW50ZW50cyIsIGRlc2MgPT4g
IlRvZ2dsZSBXZWIgSW50ZW50cyBzdXBwb3J0IiwKLSAgICAgIGRlZmluZSA9PiAiRU5BQkxFX1dF
Ql9JTlRFTlRTIiwgZGVmYXVsdCA9PiBpc0VmbCgpLCB2YWx1ZSA9PiBcJHdlYkludGVudHNTdXBw
b3J0IH0sCisgICAgICBkZWZpbmUgPT4gIkVOQUJMRV9XRUJfSU5URU5UUyIsIGRlZmF1bHQgPT4g
MCwgdmFsdWUgPT4gXCR3ZWJJbnRlbnRzU3VwcG9ydCB9LAogCiAgICAgeyBvcHRpb24gPT4gIndl
Yi1pbnRlbnRzLXRhZyIsIGRlc2MgPT4gIlRvZ2dsZSBXZWIgSW50ZW50cyBUYWcgc3VwcG9ydCIs
Ci0gICAgICBkZWZpbmUgPT4gIkVOQUJMRV9XRUJfSU5URU5UU19UQUciLCBkZWZhdWx0ID0+IGlz
RWZsKCksIHZhbHVlID0+IFwkd2ViSW50ZW50c1RhZ1N1cHBvcnQgfSwKKyAgICAgIGRlZmluZSA9
PiAiRU5BQkxFX1dFQl9JTlRFTlRTX1RBRyIsIGRlZmF1bHQgPT4gMCwgdmFsdWUgPT4gXCR3ZWJJ
bnRlbnRzVGFnU3VwcG9ydCB9LAogCiAgICAgeyBvcHRpb24gPT4gIndlYi1zb2NrZXRzIiwgZGVz
YyA9PiAiVG9nZ2xlIFdlYiBTb2NrZXRzIHN1cHBvcnQiLAogICAgICAgZGVmaW5lID0+ICJFTkFC
TEVfV0VCX1NPQ0tFVFMiLCBkZWZhdWx0ID0+IDEsIHZhbHVlID0+IFwkd2ViU29ja2V0c1N1cHBv
cnQgfSwK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>185766</attachid>
            <date>2013-01-31 05:54:54 -0800</date>
            <delta_ts>2013-01-31 10:45:15 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>108457_disable_web_intents.patch</filename>
            <type>text/plain</type>
            <size>93279</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCBjMmI5OWQ1Li5mMmQ2MWZj
IDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAK
KzIwMTMtMDEtMzEgIENocmlzdG9waGUgRHVtZXogIDxkY2hyaXNAZ21haWwuY29tPgorCisgICAg
ICAgIFtFRkxdIERpc2FibGUgV2ViIEludGVudHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTEwODQ1NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9E
WSAoT09QUyEpLgorCisgICAgICAgIFR1cm4gb2ZmIFdFQl9JTlRFTlRTIGZsYWcgaW4gRUZMIENN
YWtlIHByb2plY3QuCisKKyAgICAgICAgKiBTb3VyY2UvY21ha2UvT3B0aW9uc0VmbC5jbWFrZToK
KwogMjAxMy0wMS0zMCAgRG9taW5payBSw7Z0dHNjaGVzICA8ZG9taW5pay5yb3R0c2NoZXNAaW50
ZWwuY29tPgogCiAgICAgICAgIFtIYXJmQnV6el0gUmVtb3ZlIHRoZSBIYXJmQnV6ei1vbGQgY29k
ZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCmluZGV4IDQwYmQ1M2EuLmQyODZiOTIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAxMy0w
MS0zMSAgQ2hyaXN0b3BoZSBEdW1leiAgPGRjaHJpc0BnbWFpbC5jb20+CisKKyAgICAgICAgW0VG
TF0gRGlzYWJsZSBXZWIgSW50ZW50cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MTA4NDU3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BT
ISkuCisKKyAgICAgICAgU2tpcCB3ZWJpbnRlbnRzLyB0ZXN0IGNhc2VzIGZvciBFRkwgcG9ydCBu
b3cgdGhhdAorICAgICAgICB0aGUgZmVhdHVyZSBpcyBkaXNhYmxlZC4KKworICAgICAgICAqIHBs
YXRmb3JtL2VmbC9UZXN0RXhwZWN0YXRpb25zOgorCiAyMDEzLTAxLTMwICBZdXJ5IFNlbWlraGF0
c2t5ICA8eXVyeXNAY2hyb21pdW0ub3JnPgogCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IHRlc3Qg
dGhhdCByZWZlcmVuY2VzIGZyb20gRE9NIG5vZGVzIHRvIGV2ZW50IGxpc3RlbmVycyBhcmUgcHJl
c2VudGVkIGluIGhlYXAgc25hcHNob3RzCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9wbGF0Zm9y
bS9lZmwvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL3BsYXRmb3JtL2VmbC9UZXN0RXhw
ZWN0YXRpb25zCmluZGV4IGEzNTc1MGMuLjQyMjE3ZTMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L3BsYXRmb3JtL2VmbC9UZXN0RXhwZWN0YXRpb25zCisrKyBiL0xheW91dFRlc3RzL3BsYXRmb3Jt
L2VmbC9UZXN0RXhwZWN0YXRpb25zCkBAIC0zNjksNiArMzY5LDkgQEAgd2Via2l0Lm9yZy9iLzgz
ODk4IGZhc3QvZXhjbHVzaW9ucwogd2Via2l0Lm9yZy9iLzg1NDY1IGNzczMvZmlsdGVycyBbIFNr
aXAgXQogd2Via2l0Lm9yZy9iLzg1NDY1IGNvbXBvc2l0aW5nL2ZpbHRlcnMgWyBTa2lwIF0KIAor
IyBXZWIgSW50ZW50cyBhcmUgbm8gbG9uZ2VyIHN1cHBvcnRlZC4KK0J1ZyhFRkwpIHdlYmludGVu
dHMgWyBXb250Rml4IF0KKwogIyBDU1MgaW1hZ2UtcmVzb2x1dGlvbiBpcyBub3QgeWV0IGVuYWJs
ZWQuCiB3ZWJraXQub3JnL2IvODUyNjIgZmFzdC9jc3MvaW1hZ2UtcmVzb2x1dGlvbgogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9n
CmluZGV4IDYzMjVmMTcuLmM3NTYxMWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdl
TG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMTMt
MDEtMzEgIENocmlzdG9waGUgRHVtZXogIDxkY2hyaXNAZ21haWwuY29tPgorCisgICAgICAgIFtF
RkxdIERpc2FibGUgV2ViIEludGVudHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTEwODQ1NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09Q
UyEpLgorCisgICAgICAgIFJlbW92ZSBpbnRlbnRzIGZpbGVzIGZyb20gRUZMIENNYWtlIHByb2pl
Y3QuCisKKyAgICAgICAgKiBQbGF0Zm9ybUVmbC5jbWFrZToKKwogMjAxMy0wMS0yNSAgUm9nZXIg
Rm9uZyAgPHJvZ2VyX2ZvbmdAYXBwbGUuY29tPgogCiAgICAgICAgIFVucmV2aWV3ZWQuIFJlbmFt
ZSBMTEludCBwcm9qZWN0cyBmb2xkZXIgYW5kIG1ha2UgYXBwcm9wcmlhdGUgY2hhbmdlcyB0byBz
b2x1dGlvbnMuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtRWZsLmNtYWtlIGIv
U291cmNlL1dlYktpdC9QbGF0Zm9ybUVmbC5jbWFrZQppbmRleCBmYzFjOGUyLi42MDU0ZWRjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1BsYXRmb3JtRWZsLmNtYWtlCisrKyBiL1NvdXJjZS9X
ZWJLaXQvUGxhdGZvcm1FZmwuY21ha2UKQEAgLTEzNSw4ICsxMzUsNiBAQCBsaXN0KEFQUEVORCBX
ZWJLaXRfU09VUkNFUwogICAgIGVmbC9ld2svZXdrX2ZpbGVfY2hvb3Nlci5jcHAKICAgICBlZmwv
ZXdrL2V3a19mcmFtZS5jcHAKICAgICBlZmwvZXdrL2V3a19oaXN0b3J5LmNwcAotICAgIGVmbC9l
d2svZXdrX2ludGVudC5jcHAKLSAgICBlZmwvZXdrL2V3a19pbnRlbnRfcmVxdWVzdC5jcHAKICAg
ICBlZmwvZXdrL2V3a19qcy5jcHAKICAgICBlZmwvZXdrL2V3a19tYWluLmNwcAogICAgIGVmbC9l
d2svZXdrX25ldHdvcmsuY3BwCkBAIC0xOTksOCArMTk3LDYgQEAgc2V0KEVXZWJLaXRfSEVBREVS
UwogICAgICR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9lZmwvZXdrL2V3a19maWxlX2Nob29z
ZXIuaAogICAgICR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9lZmwvZXdrL2V3a19mcmFtZS5o
CiAgICAgJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L2VmbC9ld2svZXdrX2hpc3RvcnkuaAot
ICAgICR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9lZmwvZXdrL2V3a19pbnRlbnQuaAotICAg
ICR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9lZmwvZXdrL2V3a19pbnRlbnRfcmVxdWVzdC5o
CiAgICAgJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L2VmbC9ld2svZXdrX2pzLmgKICAgICAk
e0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vZWZsL2V3ay9ld2tfbWFpbi5oCiAgICAgJHtDTUFL
RV9DVVJSRU5UX1NPVVJDRV9ESVJ9L2VmbC9ld2svZXdrX25ldHdvcmsuaApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9n
CmluZGV4IDRhYTA5OTguLjkzZDgxZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOCBA
QAorMjAxMy0wMS0zMSAgQ2hyaXN0b3BoZSBEdW1leiAgPGRjaHJpc0BnbWFpbC5jb20+CisKKyAg
ICAgICAgW0VGTF0gRGlzYWJsZSBXZWIgSW50ZW50cworICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTA4NDU3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgUmVtb3ZlIGNvZGUgcmVsYXRlZCB0byBXZWIgSW50ZW50
cyBmcm9tIEVGTAorICAgICAgICBXZWJLaXQuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9E
dW1wUmVuZGVyVHJlZVN1cHBvcnRFZmwuY3BwOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1
bXBSZW5kZXJUcmVlU3VwcG9ydEVmbC5oOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1l
TG9hZGVyQ2xpZW50RWZsLmNwcDoKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRl
ckNsaWVudEVmbC5oOgorICAgICAgICAoRnJhbWVMb2FkZXJDbGllbnRFZmwpOgorICAgICAgICAq
IGV3ay9FV2ViS2l0Lmg6CisgICAgICAgICogZXdrL2V3a19mcmFtZS5jcHA6CisgICAgICAgICog
ZXdrL2V3a19mcmFtZS5oOgorICAgICAgICAqIGV3ay9ld2tfZnJhbWVfcHJpdmF0ZS5oOgorICAg
ICAgICAqIGV3ay9ld2tfaW50ZW50LmNwcDogUmVtb3ZlZC4KKyAgICAgICAgKiBld2svZXdrX2lu
dGVudC5oOiBSZW1vdmVkLgorICAgICAgICAqIGV3ay9ld2tfaW50ZW50X3ByaXZhdGUuaDogUmVt
b3ZlZC4KKyAgICAgICAgKiBld2svZXdrX2ludGVudF9yZXF1ZXN0LmNwcDogUmVtb3ZlZC4KKyAg
ICAgICAgKiBld2svZXdrX2ludGVudF9yZXF1ZXN0Lmg6IFJlbW92ZWQuCisKIDIwMTMtMDEtMzEg
IFNoZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5ib3RAZ21haWwuY29tPgogCiAgICAgICAgIFVu
cmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxNDExMTAuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L2VmbC9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmwuY3BwIGIvU291cmNl
L1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsLmNwcApp
bmRleCBhODc1YmNlLi43MTliNjk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJD
b3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmwuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvZWZsL1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbC5jcHAKQEAgLTI1
LDcgKzI1LDYgQEAKICNpbmNsdWRlICJGcmFtZUxvYWRlckNsaWVudEVmbC5oIgogI2luY2x1ZGUg
ImV3a19mcmFtZV9wcml2YXRlLmgiCiAjaW5jbHVkZSAiZXdrX2hpc3RvcnlfcHJpdmF0ZS5oIgot
I2luY2x1ZGUgImV3a19pbnRlbnRfcHJpdmF0ZS5oIgogI2luY2x1ZGUgImV3a19wcml2YXRlLmgi
CiAjaW5jbHVkZSAiZXdrX3ZpZXdfcHJpdmF0ZS5oIgogCkBAIC00Myw3ICs0Miw2IEBACiAjaW5j
bHVkZSA8SFRNTElucHV0RWxlbWVudC5oPgogI2luY2x1ZGUgPEluc3BlY3RvckNvbnRyb2xsZXIu
aD4KICNpbmNsdWRlIDxJbnRSZWN0Lmg+Ci0jaW5jbHVkZSA8SW50ZW50Lmg+CiAjaW5jbHVkZSA8
SlNDU1NTdHlsZURlY2xhcmF0aW9uLmg+CiAjaW5jbHVkZSA8SlNFbGVtZW50Lmg+CiAjaW5jbHVk
ZSA8SmF2YVNjcmlwdENvcmUvT3BhcXVlSlNTdHJpbmcuaD4KQEAgLTY1OSw0MyArNjU3LDYgQEAg
dm9pZCBEdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmw6OnNldFNob3VsZFRyYWNrVmlzaXRlZExpbmtz
KGJvb2wgc2hvdWxkVHJhY2spCiAgICAgV2ViQ29yZTo6UGFnZUdyb3VwOjpzZXRTaG91bGRUcmFj
a1Zpc2l0ZWRMaW5rcyhzaG91bGRUcmFjayk7CiB9CiAKLXZvaWQgRHVtcFJlbmRlclRyZWVTdXBw
b3J0RWZsOjpzZW5kV2ViSW50ZW50UmVzcG9uc2UoRXdrX0ludGVudF9SZXF1ZXN0KiByZXF1ZXN0
LCBKU1N0cmluZ1JlZiByZXNwb25zZSkKLXsKLSNpZiBFTkFCTEUoV0VCX0lOVEVOVFMpCi0gICAg
U3RyaW5nIHJlc3BvbnNlU3RyaW5nID0gcmVzcG9uc2UtPnN0cmluZygpOwotICAgIGlmIChyZXNw
b25zZVN0cmluZy5pc0VtcHR5KCkpCi0gICAgICAgIGV3a19pbnRlbnRfcmVxdWVzdF9mYWlsdXJl
X3Bvc3QocmVxdWVzdCwgV2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlOjpjcmVhdGUoU3Ry
aW5nOjpmcm9tVVRGOCgiRVJST1IiKSkpOwotICAgIGVsc2UKLSAgICAgICAgZXdrX2ludGVudF9y
ZXF1ZXN0X3Jlc3VsdF9wb3N0KHJlcXVlc3QsIFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZTo6Y3JlYXRlKFN0cmluZyhyZXNwb25zZVN0cmluZy5pbXBsKCkpKSk7Ci0jZW5kaWYKLX0KLQot
V2ViQ29yZTo6TWVzc2FnZVBvcnRDaGFubmVsQXJyYXkqIER1bXBSZW5kZXJUcmVlU3VwcG9ydEVm
bDo6aW50ZW50TWVzc2FnZVBvcnRzKGNvbnN0IEV3a19JbnRlbnQqIGludGVudCkKLXsKLSNpZiBF
TkFCTEUoV0VCX0lOVEVOVFMpCi0gICAgY29uc3QgV2ViQ29yZTo6SW50ZW50KiBjb3JlSW50ZW50
ID0gRVdLUHJpdmF0ZTo6Y29yZUludGVudChpbnRlbnQpOwotICAgIHJldHVybiBjb3JlSW50ZW50
ID8gY29yZUludGVudC0+bWVzc2FnZVBvcnRzKCkgOiAwOwotI2Vsc2UKLSAgICBVTlVTRURfUEFS
QU0oaW50ZW50KTsKLSAgICByZXR1cm4gMDsKLSNlbmRpZgotfQotCi12b2lkIER1bXBSZW5kZXJU
cmVlU3VwcG9ydEVmbDo6ZGVsaXZlcldlYkludGVudChFdmFzX09iamVjdCogZXdrRnJhbWUsIEpT
U3RyaW5nUmVmIGFjdGlvbiwgSlNTdHJpbmdSZWYgdHlwZSwgSlNTdHJpbmdSZWYgZGF0YSkKLXsK
LSNpZiBFTkFCTEUoV0VCX0lOVEVOVFMpCi0gICAgUmVmUHRyPFdlYkNvcmU6OlNlcmlhbGl6ZWRT
Y3JpcHRWYWx1ZT4gc2VyaWFsaXplZERhdGEgPSBXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFs
dWU6OmNyZWF0ZShkYXRhLT5zdHJpbmcoKSk7Ci0gICAgV2ViQ29yZTo6RXhjZXB0aW9uQ29kZSBl
YyA9IDA7Ci0gICAgV2ViQ29yZTo6TWVzc2FnZVBvcnRBcnJheSBwb3J0czsKLSAgICBSZWZQdHI8
V2ViQ29yZTo6SW50ZW50PiBjb3JlSW50ZW50ID0gV2ViQ29yZTo6SW50ZW50OjpjcmVhdGUoYWN0
aW9uLT5zdHJpbmcoKSwgdHlwZS0+c3RyaW5nKCksIHNlcmlhbGl6ZWREYXRhLmdldCgpLCBwb3J0
cywgZWMpOwotICAgIGlmIChlYykKLSAgICAgICAgcmV0dXJuOwotICAgIEV3a19JbnRlbnQqIGV3
a0ludGVudCA9IGV3a19pbnRlbnRfbmV3KGNvcmVJbnRlbnQuZ2V0KCkpOwotICAgIGV3a19mcmFt
ZV9pbnRlbnRfZGVsaXZlcihld2tGcmFtZSwgZXdrSW50ZW50KTsKLSAgICBld2tfaW50ZW50X2Zy
ZWUoZXdrSW50ZW50KTsKLSNlbmRpZgotfQotCiB2b2lkIER1bXBSZW5kZXJUcmVlU3VwcG9ydEVm
bDo6c2V0Q29tcG9zaXRpb24oRXZhc19PYmplY3QqIGV3a1ZpZXcsIGNvbnN0IGNoYXIqIHRleHQs
IGludCBzdGFydCwgaW50IGxlbmd0aCkKIHsKICAgICBEUlRfU1VQUFJUX1BBR0VfR0VUX09SX1JF
VFVSTihld2tWaWV3LCBwYWdlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNv
cmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbC5oIGIvU291cmNlL1dlYktpdC9lZmwv
V2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsLmgKaW5kZXggN2NiYWZhYy4u
YzQzNTViOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRHVt
cFJlbmRlclRyZWVTdXBwb3J0RWZsLmgKKysrIGIvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1
cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsLmgKQEAgLTM1LDggKzM1LDYgQEAKICNlbmRp
ZgogCiB0eXBlZGVmIHN0cnVjdCBfRXdrX0hpc3RvcnlfSXRlbSBFd2tfSGlzdG9yeV9JdGVtOwot
dHlwZWRlZiBzdHJ1Y3QgX0V3a19JbnRlbnQgRXdrX0ludGVudDsKLXR5cGVkZWYgc3RydWN0IF9F
d2tfSW50ZW50X1JlcXVlc3QgRXdrX0ludGVudF9SZXF1ZXN0OwogCiB0eXBlZGVmIFZlY3RvcjxF
d2tfSGlzdG9yeV9JdGVtKj4gSGlzdG9yeUl0ZW1DaGlsZHJlblZlY3RvcjsKIApAQCAtMTIzLDEx
ICsxMjEsNiBAQCBwdWJsaWM6CiAgICAgc3RhdGljIHZvaWQgc2V0U2VyaWFsaXplSFRUUExvYWRz
KGJvb2wpOwogICAgIHN0YXRpYyB2b2lkIHNldFNob3VsZFRyYWNrVmlzaXRlZExpbmtzKGJvb2wp
OwogICAgIAotICAgIC8vIFdlYiBJbnRlbnRzCi0gICAgc3RhdGljIHZvaWQgc2VuZFdlYkludGVu
dFJlc3BvbnNlKEV3a19JbnRlbnRfUmVxdWVzdCosIEpTU3RyaW5nUmVmIHJlc3BvbnNlKTsKLSAg
ICBzdGF0aWMgV2ViQ29yZTo6TWVzc2FnZVBvcnRDaGFubmVsQXJyYXkqIGludGVudE1lc3NhZ2VQ
b3J0cyhjb25zdCBFd2tfSW50ZW50Kik7Ci0gICAgc3RhdGljIHZvaWQgZGVsaXZlcldlYkludGVu
dChFdmFzX09iamVjdCogZXdrRnJhbWUsIEpTU3RyaW5nUmVmIGFjdGlvbiwgSlNTdHJpbmdSZWYg
dHlwZSwgSlNTdHJpbmdSZWYgZGF0YSk7Ci0KICAgICAvLyBUZXh0SW5wdXRDb250cm9sbGVyCiAg
ICAgc3RhdGljIHZvaWQgc2V0Q29tcG9zaXRpb24oRXZhc19PYmplY3QqLCBjb25zdCBjaGFyKiwg
aW50LCBpbnQpOwogICAgIHN0YXRpYyBib29sIGhhc0NvbXBvc2l0aW9uKGNvbnN0IEV2YXNfT2Jq
ZWN0Kik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9GcmFt
ZUxvYWRlckNsaWVudEVmbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9G
cmFtZUxvYWRlckNsaWVudEVmbC5jcHAKaW5kZXggOWMyYzlkYi4uZTk5MGRjYyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRFZmwu
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xp
ZW50RWZsLmNwcApAQCAtNDYsNyArNDYsNiBAQAogI2luY2x1ZGUgIkZyYW1lVmlldy5oIgogI2lu
Y2x1ZGUgIkhUTUxGb3JtRWxlbWVudC5oIgogI2luY2x1ZGUgIkhUVFBTdGF0dXNDb2Rlcy5oIgot
I2luY2x1ZGUgIkludGVudFJlcXVlc3QuaCIKICNpbmNsdWRlICJNSU1FVHlwZVJlZ2lzdHJ5Lmgi
CiAjaW5jbHVkZSAiTm90SW1wbGVtZW50ZWQuaCIKICNpbmNsdWRlICJQYWdlLmgiCkBAIC01OCw3
ICs1Nyw2IEBACiAjaW5jbHVkZSAiU2V0dGluZ3MuaCIKICNpbmNsdWRlICJXZWJLaXRWZXJzaW9u
LmgiCiAjaW5jbHVkZSAiZXdrX2ZyYW1lX3ByaXZhdGUuaCIKLSNpbmNsdWRlICJld2tfaW50ZW50
X3ByaXZhdGUuaCIKICNpbmNsdWRlICJld2tfcHJpdmF0ZS5oIgogI2luY2x1ZGUgImV3a19zZXR0
aW5nc19wcml2YXRlLmgiCiAjaW5jbHVkZSAiZXdrX3ZpZXdfcHJpdmF0ZS5oIgpAQCAtMTAyNCwz
MCArMTAyMiw2IEBAIHZvaWQgRnJhbWVMb2FkZXJDbGllbnRFZmw6OmRpc3BhdGNoRGlkQmVjb21l
RnJhbWVzZXQoYm9vbCkKIHsKIH0KIAotI2lmIEVOQUJMRShXRUJfSU5URU5UUykKLXZvaWQgRnJh
bWVMb2FkZXJDbGllbnRFZmw6OmRpc3BhdGNoSW50ZW50KFBhc3NSZWZQdHI8V2ViQ29yZTo6SW50
ZW50UmVxdWVzdD4gaW50ZW50UmVxdWVzdCkKLXsKLSAgICBFd2tfSW50ZW50X1JlcXVlc3QqIGV3
a1JlcXVlc3QgPSBld2tfaW50ZW50X3JlcXVlc3RfbmV3KGludGVudFJlcXVlc3QpOwotICAgIGV3
a19mcmFtZV9pbnRlbnRfbmV3KG1fZnJhbWUsIGV3a1JlcXVlc3QpOwotICAgIGV3a19pbnRlbnRf
cmVxdWVzdF91bnJlZihld2tSZXF1ZXN0KTsKLX0KLSNlbmRpZgotCi0jaWYgRU5BQkxFKFdFQl9J
TlRFTlRTX1RBRykKLXZvaWQgRnJhbWVMb2FkZXJDbGllbnRFZmw6OnJlZ2lzdGVySW50ZW50U2Vy
dmljZShjb25zdCBTdHJpbmcmIGFjdGlvbiwgY29uc3QgU3RyaW5nJiB0eXBlLCBjb25zdCBLVVJM
JiBocmVmLCBjb25zdCBTdHJpbmcmIHRpdGxlLCBjb25zdCBTdHJpbmcmIGRpc3Bvc2l0aW9uKQot
ewotICAgIENTdHJpbmcgYWN0aW9uU3RyID0gYWN0aW9uLnV0ZjgoKTsKLSAgICBDU3RyaW5nIHR5
cGVTdHIgPSB0eXBlLnV0ZjgoKTsKLSAgICBDU3RyaW5nIGhyZWZTdHIgPSBocmVmLnN0cmluZygp
LnV0ZjgoKTsKLSAgICBDU3RyaW5nIHRpdGxlU3RyID0gdGl0bGUudXRmOCgpOwotICAgIENTdHJp
bmcgZGlzcG9zaXRpb25TdHIgPSBkaXNwb3NpdGlvbi51dGY4KCk7Ci0KLSAgICBFd2tfSW50ZW50
X1NlcnZpY2VfSW5mbyBzZXJ2aWNlSW5mbyA9IHsgYWN0aW9uU3RyLmRhdGEoKSwgdHlwZVN0ci5k
YXRhKCksIGhyZWZTdHIuZGF0YSgpLCB0aXRsZVN0ci5kYXRhKCksIGRpc3Bvc2l0aW9uU3RyLmRh
dGEoKSB9OwotCi0gICAgZXdrX2ZyYW1lX2ludGVudF9zZXJ2aWNlX3JlZ2lzdGVyKG1fZnJhbWUs
ICZzZXJ2aWNlSW5mbyk7Ci19Ci0jZW5kaWYKLQogUGFzc1JlZlB0cjxGcmFtZU5ldHdvcmtpbmdD
b250ZXh0PiBGcmFtZUxvYWRlckNsaWVudEVmbDo6Y3JlYXRlTmV0d29ya2luZ0NvbnRleHQoKQog
ewogICAgIHJldHVybiBGcmFtZU5ldHdvcmtpbmdDb250ZXh0RWZsOjpjcmVhdGUoRVdLUHJpdmF0
ZTo6Y29yZUZyYW1lKG1fZnJhbWUpLCBtX2ZyYW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvZWZsL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50RWZsLmggYi9Tb3VyY2UvV2Vi
S2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRlckNsaWVudEVmbC5oCmluZGV4IDE3ZmRi
NTMuLmJmMmNiMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0
L0ZyYW1lTG9hZGVyQ2xpZW50RWZsLmgKKysrIGIvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1
cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRFZmwuaApAQCAtMTg1LDEyICsxODUsNiBAQCBjbGFzcyBG
cmFtZUxvYWRlckNsaWVudEVmbCA6IHB1YmxpYyBGcmFtZUxvYWRlckNsaWVudCB7CiAgICAgdmly
dHVhbCB2b2lkIHByb3Zpc2lvbmFsTG9hZFN0YXJ0ZWQoKTsKICAgICB2aXJ0dWFsIHZvaWQgZGlk
RmluaXNoTG9hZCgpOwogICAgIHZpcnR1YWwgdm9pZCBwcmVwYXJlRm9yRGF0YVNvdXJjZVJlcGxh
Y2VtZW50KCk7Ci0jaWYgRU5BQkxFKFdFQl9JTlRFTlRTKQotICAgIHZpcnR1YWwgdm9pZCBkaXNw
YXRjaEludGVudChQYXNzUmVmUHRyPFdlYkNvcmU6OkludGVudFJlcXVlc3Q+KTsKLSNlbmRpZgot
I2lmIEVOQUJMRShXRUJfSU5URU5UU19UQUcpCi0gICAgdmlydHVhbCB2b2lkIHJlZ2lzdGVySW50
ZW50U2VydmljZShjb25zdCBTdHJpbmcmIGFjdGlvbiwgY29uc3QgU3RyaW5nJiB0eXBlLCBjb25z
dCBLVVJMJiBocmVmLCBjb25zdCBTdHJpbmcmIHRpdGxlLCBjb25zdCBTdHJpbmcmIGRpc3Bvc2l0
aW9uKTsKLSNlbmRpZgogCiAgICAgdmlydHVhbCBXVEY6OlBhc3NSZWZQdHI8RG9jdW1lbnRMb2Fk
ZXI+IGNyZWF0ZURvY3VtZW50TG9hZGVyKGNvbnN0IFJlc291cmNlUmVxdWVzdCYsIGNvbnN0IFN1
YnN0aXR1dGVEYXRhJik7CiAgICAgdmlydHVhbCB2b2lkIHNldFRpdGxlKGNvbnN0IFN0cmluZ1dp
dGhEaXJlY3Rpb24mIHRpdGxlLCBjb25zdCBLVVJMJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L2VmbC9ld2svRVdlYktpdC5oIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL0VXZWJLaXQuaApp
bmRleCA4NjMzZjc2Li42ODI0MTFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2sv
RVdlYktpdC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9FV2ViS2l0LmgKQEAgLTM1LDgg
KzM1LDYgQEAKICNpbmNsdWRlICJld2tfZmlsZV9jaG9vc2VyLmgiCiAjaW5jbHVkZSAiZXdrX2Zy
YW1lLmgiCiAjaW5jbHVkZSAiZXdrX2hpc3RvcnkuaCIKLSNpbmNsdWRlICJld2tfaW50ZW50Lmgi
Ci0jaW5jbHVkZSAiZXdrX2ludGVudF9yZXF1ZXN0LmgiCiAjaW5jbHVkZSAiZXdrX2pzLmgiCiAj
aW5jbHVkZSAiZXdrX21haW4uaCIKICNpbmNsdWRlICJld2tfbmV0d29yay5oIgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19mcmFtZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Vm
bC9ld2svZXdrX2ZyYW1lLmNwcAppbmRleCA2ZDM2ZGZkLi4zZTE2MjY0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2ZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Vm
bC9ld2svZXdrX2ZyYW1lLmNwcApAQCAtMjQsOCArMjQsNiBAQAogI2luY2x1ZGUgImNvbmZpZy5o
IgogI2luY2x1ZGUgImV3a19mcmFtZS5oIgogCi0jaW5jbHVkZSAiRE9NV2luZG93SW50ZW50cy5o
IgotI2luY2x1ZGUgIkRlbGl2ZXJlZEludGVudC5oIgogI2luY2x1ZGUgIkRvY3VtZW50TG9hZGVy
LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnRNYXJrZXJDb250cm9sbGVyLmgiCiAjaW5jbHVkZSAiRXZl
bnRIYW5kbGVyLmgiCkBAIC01NSw3ICs1Myw2IEBACiAjaW5jbHVkZSAiU3Vic3RpdHV0ZURhdGEu
aCIKICNpbmNsdWRlICJXaW5kb3dzS2V5Ym9hcmRDb2Rlcy5oIgogI2luY2x1ZGUgImV3a19mcmFt
ZV9wcml2YXRlLmgiCi0jaW5jbHVkZSAiZXdrX2ludGVudF9wcml2YXRlLmgiCiAjaW5jbHVkZSAi
ZXdrX3ByaXZhdGUuaCIKICNpbmNsdWRlICJld2tfc2VjdXJpdHlfb3JpZ2luX3ByaXZhdGUuaCIK
ICNpbmNsdWRlICJld2tfdG91Y2hfZXZlbnRfcHJpdmF0ZS5oIgpAQCAtNzUzLDMwICs3NTAsNiBA
QCBFd2tfSGl0X1Rlc3QqIGV3a19mcmFtZV9oaXRfdGVzdF9uZXcoY29uc3QgRXZhc19PYmplY3Qq
IGV3a0ZyYW1lLCBpbnQgeCwgaW50IHkpCiAgICAgcmV0dXJuIGhpdFRlc3Q7CiB9CiAKLXZvaWQg
ZXdrX2ZyYW1lX2ludGVudF9kZWxpdmVyKGNvbnN0IEV2YXNfT2JqZWN0KiBld2tGcmFtZSwgRXdr
X0ludGVudCogZXdrX2ludGVudCkKLXsKLSNpZiBFTkFCTEUoV0VCX0lOVEVOVFMpCi0gICAgRVdL
X0ZSQU1FX1NEX0dFVF9PUl9SRVRVUk4oZXdrRnJhbWUsIHNtYXJ0RGF0YSk7Ci0gICAgRUlOQV9T
QUZFVFlfT05fTlVMTF9SRVRVUk4oc21hcnREYXRhLT5mcmFtZSk7Ci0KLSAgICBXZWJDb3JlOjpJ
bnRlbnQqIGludGVudCA9IEVXS1ByaXZhdGU6OmNvcmVJbnRlbnQoZXdrX2ludGVudCk7Ci0KLSAg
ICBPd25QdHI8V2ViQ29yZTo6TWVzc2FnZVBvcnRDaGFubmVsQXJyYXk+IGNoYW5uZWxzOwotICAg
IFdlYkNvcmU6Ok1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5KiBvcmlnQ2hhbm5lbHMgPSBpbnRlbnQt
Pm1lc3NhZ2VQb3J0cygpOwotICAgIGlmIChvcmlnQ2hhbm5lbHMgJiYgb3JpZ0NoYW5uZWxzLT5z
aXplKCkpIHsKLSAgICAgICAgY2hhbm5lbHMgPSBhZG9wdFB0cihuZXcgV2ViQ29yZTo6TWVzc2Fn
ZVBvcnRDaGFubmVsQXJyYXkob3JpZ0NoYW5uZWxzLT5zaXplKCkpKTsKLSAgICAgICAgZm9yIChz
aXplX3QgaSA9IDA7IGkgPCBvcmlnQ2hhbm5lbHMtPnNpemUoKTsgKytpKQotICAgICAgICAgICAg
KCpjaGFubmVscylbaV0gPSBvcmlnQ2hhbm5lbHMtPmF0KGkpLnJlbGVhc2UoKTsKLSAgICB9Ci0g
ICAgT3duUHRyPFdlYkNvcmU6Ok1lc3NhZ2VQb3J0QXJyYXk+IHBvcnRzID0gV2ViQ29yZTo6TWVz
c2FnZVBvcnQ6OmVudGFuZ2xlUG9ydHMoKihzbWFydERhdGEtPmZyYW1lLT5kb2N1bWVudCgpKSwg
Y2hhbm5lbHMucmVsZWFzZSgpKTsKLQotICAgIE93blB0cjxXZWJDb3JlOjpEZWxpdmVyZWRJbnRl
bnRDbGllbnQ+IGR1bW15Q2xpZW50OwotICAgIFJlZlB0cjxXZWJDb3JlOjpEZWxpdmVyZWRJbnRl
bnQ+IGRlbGl2ZXJlZEludGVudCA9IFdlYkNvcmU6OkRlbGl2ZXJlZEludGVudDo6Y3JlYXRlKHNt
YXJ0RGF0YS0+ZnJhbWUsIGR1bW15Q2xpZW50LnJlbGVhc2UoKSwgaW50ZW50LT5hY3Rpb24oKSwg
aW50ZW50LT50eXBlKCksIGludGVudC0+ZGF0YSgpLCBwb3J0cy5yZWxlYXNlKCksIGludGVudC0+
ZXh0cmFzKCkpOwotCi0gICAgV2ViQ29yZTo6RE9NV2luZG93SW50ZW50czo6ZnJvbShzbWFydERh
dGEtPmZyYW1lLT5kb2N1bWVudCgpLT5kb21XaW5kb3coKSktPmRlbGl2ZXIoZGVsaXZlcmVkSW50
ZW50LnJlbGVhc2UoKSk7Ci0jZW5kaWYKLX0KLQogRWluYV9Cb29sCiBld2tfZnJhbWVfc2Nyb2xs
X2FkZChFdmFzX09iamVjdCogZXdrRnJhbWUsIGludCBkZWx0YVgsIGludCBkZWx0YVkpCiB7CkBA
IC0xNTUxLDMyICsxNTI0LDYgQEAgdm9pZCBld2tfZnJhbWVfbG9hZF9wcm9ncmVzc19jaGFuZ2Vk
KEV2YXNfT2JqZWN0KiBld2tGcmFtZSkKIAogLyoqCiAgKiBAaW50ZXJuYWwKLSAqIFJlcG9ydHMg
bmV3IGludGVudC4KLSAqCi0gKiBFbWl0cyBzaWduYWw6ICJpbnRlbnQsbmV3IiB3aXRoIHBvaW50
ZXIgdG8gYSBFd2tfSW50ZW50X1JlcXVlc3QuCi0gKi8KLXZvaWQgZXdrX2ZyYW1lX2ludGVudF9u
ZXcoRXZhc19PYmplY3QqIGV3a0ZyYW1lLCBFd2tfSW50ZW50X1JlcXVlc3QqIHJlcXVlc3QpCi17
Ci0jaWYgRU5BQkxFKFdFQl9JTlRFTlRTKQotICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNr
X2NhbGwoZXdrRnJhbWUsICJpbnRlbnQsbmV3IiwgcmVxdWVzdCk7Ci0jZW5kaWYKLX0KLQotLyoq
Ci0gKiBAaW50ZXJuYWwKLSAqIFJlcG9ydHMgYW4gaW50ZW50IHNlcnZpY2UgcmVnaXN0cmF0aW9u
LgotICoKLSAqIEVtaXRzIHNpZ25hbDogImludGVudCxzZXJ2aWNlLHJlZ2lzdGVyIiB3aXRoIHBv
aW50ZXIgdG8gYSBFd2tfSW50ZW50X1NlcnZpY2VfSW5mby4KLSAqLwotdm9pZCBld2tfZnJhbWVf
aW50ZW50X3NlcnZpY2VfcmVnaXN0ZXIoRXZhc19PYmplY3QqIGV3a0ZyYW1lLCBFd2tfSW50ZW50
X1NlcnZpY2VfSW5mbyogaW5mbykKLXsKLSNpZiBFTkFCTEUoV0VCX0lOVEVOVFNfVEFHKQotICAg
IGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2NhbGwoZXdrRnJhbWUsICJpbnRlbnQsc2Vydmlj
ZSxyZWdpc3RlciIsIGluZm8pOwotI2VuZGlmCi19Ci0KLS8qKgotICogQGludGVybmFsCiAgKgog
ICogUmVwb3J0cyBjb250ZW50cyBzaXplIGNoYW5nZWQuCiAgKi8KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvZWZsL2V3ay9ld2tfZnJhbWUuaCBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tf
ZnJhbWUuaAppbmRleCBiMTk2MzMyLi5mZDA2MWNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L2VmbC9ld2svZXdrX2ZyYW1lLmgKKysrIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19mcmFt
ZS5oCkBAIC00MCw4ICs0MCw2IEBACiAgKiAgLSAiZWRpdG9yY2xpZW50LGNvbnRlbnRzLGNoYW5n
ZWQiLCB2b2lkOiByZXBvcnRzIHRoYXQgZWRpdG9yIGNsaWVudCdzCiAgKiAgICBjb250ZW50cyB3
ZXJlIGNoYW5nZWQKICAqICAtICJpY29uLGNoYW5nZWQiLCB2b2lkOiBmcmFtZSBmYXZpY29uIGNo
YW5nZWQuCi0gKiAgLSAiaW50ZW50LG5ldyIsIEV3a19JbnRlbnRfUmVxdWVzdCo6IHJlcG9ydHMg
bmV3IGludGVudC4KLSAqICAtICJpbnRlbnQsc2VydmljZSxyZWdpc3RlciIsIEV3a19JbnRlbnRf
U2VydmljZV9JbmZvKjogcmVwb3J0cyBuZXcgaW50ZW50IHNlcnZpY2UgcmVnaXN0cmF0aW9uLgog
ICogIC0gImxvYWQsY29tbWl0dGVkIiwgdm9pZDogcmVwb3J0cyBsb2FkIGNvbW1pdHRlZC4KICAq
ICAtICJsb2FkLGRvY3VtZW50LGZpbmlzaGVkIiwgdm9pZDogZnJhbWUgZmluaXNoZWQgbG9hZGlu
ZyB0aGUgZG9jdW1lbnQuCiAgKiAgLSAibG9hZCxlcnJvciIsIGNvbnN0IEV3a19GcmFtZV9Mb2Fk
X0Vycm9yKjogcmVwb3J0cyBsb2FkIGZhaWxlZApAQCAtODIsNyArODAsNiBAQAogI2lmbmRlZiBl
d2tfZnJhbWVfaAogI2RlZmluZSBld2tfZnJhbWVfaAogCi0jaW5jbHVkZSAiZXdrX2ludGVudC5o
IgogI2luY2x1ZGUgImV3a19zZWN1cml0eV9vcmlnaW4uaCIKIAogI2luY2x1ZGUgPEV2YXMuaD4K
QEAgLTE4NCwxNyArMTgxLDYgQEAgc3RydWN0IF9Fd2tfRnJhbWVfWHNzX05vdGlmaWNhdGlvbiB7
CiAgICAgRWluYV9Cb29sIGlzX2VudGlyZV9wYWdlX2Jsb2NrZWQ7IC8qKiA8IGluZGljYXRlcyBp
ZiB0aGUgZW50aXJlIHBhZ2Ugd2FzIGJsb2NrZWQgYnkgWFNTQXVkaXRvciAqLwogfTsKIAotLy8v
IENyZWF0ZXMgYSB0eXBlIG5hbWUgZm9yIEV3a19JbnRlbnRfU2VydmljZV9JbmZvLgotdHlwZWRl
ZiBzdHJ1Y3QgX0V3a19JbnRlbnRfU2VydmljZV9JbmZvIEV3a19JbnRlbnRfU2VydmljZV9JbmZv
OwotCi1zdHJ1Y3QgX0V3a19JbnRlbnRfU2VydmljZV9JbmZvIHsKLSAgICBjb25zdCBjaGFyICph
Y3Rpb247IC8qKjwgYW4gb3BhcXVlIHN0cmluZyBpbmRpY2F0aW5nIHRoZSBiZWhhdmlvciBjbGFz
cyB0aGUgc2VydmljZSBzdXBwb3J0cy4gKi8KLSAgICBjb25zdCBjaGFyICp0eXBlOyAvKio8IGEg
c3RyaW5nIHNwZWNpZnlpbmcgdGhlIHR5cGUgb2YgcGF5bG9hZCBkYXRhIHRoZSBzZXJ2aWNlIGNh
biBhY2NlcHQuICovCi0gICAgY29uc3QgY2hhciAqaHJlZjsgLyoqPCBzZXJ2aWNlIFVSSS4gKi8K
LSAgICBjb25zdCBjaGFyICp0aXRsZTsgLyoqPCBBIGh1bWFuLXJlYWRhYmxlIHRpdGxlIGZvciB0
aGUgc2VydmljZS4gKi8KLSAgICBjb25zdCBjaGFyICpkaXNwb3NpdGlvbjsgLyoqPCBBIGhpbnQg
YWJvdXQgd2hldGhlciB0aGUgc2VydmljZSBjYW4gYmUgcnVuICJpbmxpbmUiIG9yIGluIGEgbmV3
ICJ3aW5kb3ciLiAqLwotfTsKLQogLy8vIEVudW0gY29udGFpbmluZyBoaXQgdGVzdCBkYXRhIHR5
cGVzCiB0eXBlZGVmIGVudW0gewogICAgIEVXS19ISVRfVEVTVF9SRVNVTFRfQ09OVEVYVF9ET0NV
TUVOVCA9IDEgPDwgMSwKQEAgLTcxNSwxNCArNzAxLDYgQEAgRUFQSSB2b2lkICAgICAgICAgIGV3
a19mcmFtZV9oaXRfdGVzdF9mcmVlKEV3a19IaXRfVGVzdCAqaGl0X3Rlc3QpOwogRUFQSSBFd2tf
SGl0X1Rlc3QgKmV3a19mcmFtZV9oaXRfdGVzdF9uZXcoY29uc3QgRXZhc19PYmplY3QgKm8sIGlu
dCB4LCBpbnQgeSk7CiAKIC8qKgotICogRGVsaXZlcnMgYW4gaW50ZW50IHRvIGEgdGFyZ2V0IHNl
cnZpY2UgcGFnZSBpbiB0aGUgZnJhbWUuCi0gKgotICogQHBhcmFtIG8gZnJhbWUgb2JqZWN0IHRv
IGRlbGl2ZXIgdGhlIGludGVudCB0by4KLSAqIEBwYXJhbSBld2tJbnRlbnQgaW50ZW50IG9iamVj
dCB0byBkZWxpdmVyLgotICovCi1FQVBJIHZvaWQgZXdrX2ZyYW1lX2ludGVudF9kZWxpdmVyKGNv
bnN0IEV2YXNfT2JqZWN0ICpvLCBFd2tfSW50ZW50ICpld2tfaW50ZW50KTsKLQotLyoqCiAgKiBT
ZXRzIGEgcmVsYXRpdmUgc2Nyb2xsIG9mIHRoZSBnaXZlbiBmcmFtZS4KICAqCiAgKiBUaGlzIGZ1
bmN0aW9uIGRvZXMgc2Nyb2xsIEBhIGR4IGFuZCBAYSBkeSBwaXhlbHMKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfZnJhbWVfcHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdC9l
ZmwvZXdrL2V3a19mcmFtZV9wcml2YXRlLmgKaW5kZXggZDg0MWYyYS4uZmI1MDUxOCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19mcmFtZV9wcml2YXRlLmgKKysrIGIvU291
cmNlL1dlYktpdC9lZmwvZXdrL2V3a19mcmFtZV9wcml2YXRlLmgKQEAgLTIyLDcgKzIyLDYgQEAK
ICNkZWZpbmUgZXdrX2ZyYW1lX3ByaXZhdGVfaAogCiAjaW5jbHVkZSAiZXdrX2ZyYW1lLmgiCi0j
aW5jbHVkZSAiZXdrX2ludGVudF9yZXF1ZXN0LmgiCiAjaW5jbHVkZSA8RXZhcy5oPgogI2luY2x1
ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgpAQCAtNzQsOCAr
NzMsNiBAQCB2b2lkIGV3a19mcmFtZV92aWV3X2NyZWF0ZV9mb3JfdmlldyhFdmFzX09iamVjdCog
ZXdrRnJhbWUsIEV2YXNfT2JqZWN0KiB2aWV3KTsKIGJvb2wgZXdrX2ZyYW1lX3VyaV9jaGFuZ2Vk
KEV2YXNfT2JqZWN0KiBld2tGcmFtZSk7CiB2b2lkIGV3a19mcmFtZV9mb3JjZV9sYXlvdXQoRXZh
c19PYmplY3QqIGV3a0ZyYW1lKTsKIHZvaWQgZXdrX2ZyYW1lX2ljb25fY2hhbmdlZChFdmFzX09i
amVjdCogZXdrRnJhbWUpOwotdm9pZCBld2tfZnJhbWVfaW50ZW50X25ldyhFdmFzX09iamVjdCog
ZXdrRnJhbWUsIEV3a19JbnRlbnRfUmVxdWVzdCogcmVxdWVzdCk7Ci12b2lkIGV3a19mcmFtZV9p
bnRlbnRfc2VydmljZV9yZWdpc3RlcihFdmFzX09iamVjdCogZXdrRnJhbWUsIEV3a19JbnRlbnRf
U2VydmljZV9JbmZvKiBpbmZvKTsKIAogV1RGOjpQYXNzUmVmUHRyPFdlYkNvcmU6OldpZGdldD4g
ZXdrX2ZyYW1lX3BsdWdpbl9jcmVhdGUoRXZhc19PYmplY3QqIGV3a0ZyYW1lLCBjb25zdCBXZWJD
b3JlOjpJbnRTaXplJiBwbHVnaW5TaXplLCBXZWJDb3JlOjpIVE1MUGx1Z0luRWxlbWVudCogZWxl
bWVudCwgY29uc3QgV2ViQ29yZTo6S1VSTCYgdXJsLCBjb25zdCBXVEY6OlZlY3RvcjxXVEY6OlN0
cmluZz4mIHBhcmFtTmFtZXMsIGNvbnN0IFdURjo6VmVjdG9yPFdURjo6U3RyaW5nPiYgcGFyYW1W
YWx1ZXMsIGNvbnN0IFdURjo6U3RyaW5nJiBtaW1lVHlwZSwgYm9vbCBsb2FkTWFudWFsbHkpOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2ludGVudC5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L2VmbC9ld2svZXdrX2ludGVudC5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IGU0YzBjOTkuLjAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19p
bnRlbnQuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMTk0ICswLDAgQEAKLS8qCi0gICAgQ29weXJp
Z2h0IChDKSAyMDEyIEludGVsIENvcnBvcmF0aW9uCi0KLSAgICBUaGlzIGxpYnJhcnkgaXMgZnJl
ZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gICAgbW9kaWZ5IGl0
IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAgICBM
aWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRo
ZXIKLSAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55
IGxhdGVyIHZlcnNpb24uCi0KLSAgICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhl
IGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFO
VFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICAgIE1FUkNIQU5UQUJJ
TElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0g
ICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0KLSAg
ICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5l
cmFsIFB1YmxpYyBMaWNlbnNlCi0gICAgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUg
ZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8KLSAgICB0aGUgRnJlZSBTb2Z0d2Fy
ZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICAg
IEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgot
I2luY2x1ZGUgImV3a19pbnRlbnQuaCIKLQotI2luY2x1ZGUgIkludGVudC5oIgotI2luY2x1ZGUg
ImV3a19pbnRlbnRfcHJpdmF0ZS5oIgotI2luY2x1ZGUgImV3a19wcml2YXRlLmgiCi0jaW5jbHVk
ZSA8S1VSTC5oPgotI2luY2x1ZGUgPGVpbmFfc2FmZXR5X2NoZWNrcy5oPgotI2luY2x1ZGUgPHd0
Zi9IYXNoTWFwLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgotCi0vKioKLSAqIFxz
dHJ1Y3QgIF9Fd2tfSW50ZW50Ci0gKiBAYnJpZWYgICBDb250YWlucyB0aGUgaW50ZW50IGRhdGEu
Ci0gKi8KLXN0cnVjdCBfRXdrX0ludGVudCB7Ci0jaWYgRU5BQkxFKFdFQl9JTlRFTlRTKQotICAg
IFdlYkNvcmU6OkludGVudCogY29yZTsgLyoqPCBXZWJDb3JlIG9iamVjdCB3aGljaCBpcyByZXNw
b25zaWJsZSBmb3IgdGhlIGludGVudCAqLwotI2VuZGlmCi0gICAgY29uc3QgY2hhciogYWN0aW9u
OwotICAgIGNvbnN0IGNoYXIqIHR5cGU7Ci0gICAgY29uc3QgY2hhciogc2VydmljZTsKLX07Ci0K
LSNkZWZpbmUgRVdLX0lOVEVOVF9DT1JFX0dFVF9PUl9SRVRVUk4oaW50ZW50LCBjb3JlXywgLi4u
KSAgICAgIFwKLSAgICBpZiAoIShpbnRlbnQpKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIFwKLSAgICAgICAgQ1JJVElDQUwoImludGVudCBpcyBOVUxMLiIpOyAg
ICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgcmV0dXJuIF9fVkFfQVJHU19fOyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB9ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBpZiAoIShp
bnRlbnQpLT5jb3JlKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAg
ICAgICAgQ1JJVElDQUwoImludGVudC0+Y29yZSBpcyBOVUxMLiIpOyAgICAgICAgICAgICAgICAg
ICAgIFwKLSAgICAgICAgcmV0dXJuIF9fVkFfQVJHU19fOyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIFwKLSAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBXZWJDb3JlOjpJbnRlbnQqIGNvcmVfID0gKGlu
dGVudCktPmNvcmUKLQotY29uc3QgY2hhciogZXdrX2ludGVudF9hY3Rpb25fZ2V0KGNvbnN0IEV3
a19JbnRlbnQqIGludGVudCkKLXsKLSNpZiBFTkFCTEUoV0VCX0lOVEVOVFMpCi0gICAgRVdLX0lO
VEVOVF9DT1JFX0dFVF9PUl9SRVRVUk4oaW50ZW50LCBjb3JlLCAwKTsKLQotICAgIC8vIGhpZGUg
dGhlIGZvbGxvd2luZyBvcHRpbWl6YXRpb24gZnJvbSBvdXRzaWRlCi0gICAgRXdrX0ludGVudCog
ZXdrSW50ZW50ID0gY29uc3RfY2FzdDxFd2tfSW50ZW50Kj4oaW50ZW50KTsKLSAgICBlaW5hX3N0
cmluZ3NoYXJlX3JlcGxhY2UoJmV3a0ludGVudC0+YWN0aW9uLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb3JlLT5hY3Rpb24oKS51dGY4KCkuZGF0YSgpKTsKLSAgICByZXR1cm4gZXdr
SW50ZW50LT5hY3Rpb247Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTShpbnRlbnQpOwotICAgIHJl
dHVybiAwOwotI2VuZGlmCi19Ci0KLWNvbnN0IGNoYXIqIGV3a19pbnRlbnRfdHlwZV9nZXQoY29u
c3QgRXdrX0ludGVudCogaW50ZW50KQotewotI2lmIEVOQUJMRShXRUJfSU5URU5UUykKLSAgICBF
V0tfSU5URU5UX0NPUkVfR0VUX09SX1JFVFVSTihpbnRlbnQsIGNvcmUsIDApOwotCi0gICAgLy8g
aGlkZSB0aGUgZm9sbG93aW5nIG9wdGltaXphdGlvbiBmcm9tIG91dHNpZGUKLSAgICBFd2tfSW50
ZW50KiBld2tJbnRlbnQgPSBjb25zdF9jYXN0PEV3a19JbnRlbnQqPihpbnRlbnQpOwotICAgIGVp
bmFfc3RyaW5nc2hhcmVfcmVwbGFjZSgmZXdrSW50ZW50LT50eXBlLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb3JlLT50eXBlKCkudXRmOCgpLmRhdGEoKSk7Ci0gICAgcmV0dXJuIGV3
a0ludGVudC0+dHlwZTsKLSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKGludGVudCk7Ci0gICAgcmV0
dXJuIDA7Ci0jZW5kaWYKLX0KLQotY29uc3QgY2hhciogZXdrX2ludGVudF9zZXJ2aWNlX2dldChj
b25zdCBFd2tfSW50ZW50KiBpbnRlbnQpCi17Ci0jaWYgRU5BQkxFKFdFQl9JTlRFTlRTKQotICAg
IEVXS19JTlRFTlRfQ09SRV9HRVRfT1JfUkVUVVJOKGludGVudCwgY29yZSwgMCk7Ci0KLSAgICAv
LyBoaWRlIHRoZSBmb2xsb3dpbmcgb3B0aW1pemF0aW9uIGZyb20gb3V0c2lkZQotICAgIEV3a19J
bnRlbnQqIGV3a0ludGVudCA9IGNvbnN0X2Nhc3Q8RXdrX0ludGVudCo+KGludGVudCk7Ci0gICAg
ZWluYV9zdHJpbmdzaGFyZV9yZXBsYWNlKCZld2tJbnRlbnQtPnNlcnZpY2UsCi0gICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvcmUtPnNlcnZpY2UoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgp
KTsKLSAgICByZXR1cm4gZXdrSW50ZW50LT5zZXJ2aWNlOwotI2Vsc2UKLSAgICBVTlVTRURfUEFS
QU0oaW50ZW50KTsKLSAgICByZXR1cm4gMDsKLSNlbmRpZgotfQotCi1FaW5hX0xpc3QqIGV3a19p
bnRlbnRfc3VnZ2VzdGlvbnNfZ2V0KGNvbnN0IEV3a19JbnRlbnQqIGludGVudCkKLXsKLSNpZiBF
TkFCTEUoV0VCX0lOVEVOVFMpCi0gICAgRVdLX0lOVEVOVF9DT1JFX0dFVF9PUl9SRVRVUk4oaW50
ZW50LCBjb3JlLCAwKTsKLQotICAgIEVpbmFfTGlzdCogbGlzdE9mU3VnZ2VzdGlvbnMgPSAwOwot
ICAgIFZlY3RvcjxXZWJDb3JlOjpLVVJMPjo6Y29uc3RfaXRlcmF0b3IgaXQ7Ci0gICAgZm9yIChp
dCA9IGNvcmUtPnN1Z2dlc3Rpb25zKCkuYmVnaW4oKTsgaXQgIT0gY29yZS0+c3VnZ2VzdGlvbnMo
KS5lbmQoKTsgKytpdCkKLSAgICAgICAgbGlzdE9mU3VnZ2VzdGlvbnMgPSBlaW5hX2xpc3RfYXBw
ZW5kKGxpc3RPZlN1Z2dlc3Rpb25zLCBlaW5hX3N0cmluZ3NoYXJlX2FkZChpdC0+c3RyaW5nKCku
dXRmOCgpLmRhdGEoKSkpOwotICAgIHJldHVybiBsaXN0T2ZTdWdnZXN0aW9uczsKLSNlbHNlCi0g
ICAgVU5VU0VEX1BBUkFNKGludGVudCk7Ci0gICAgcmV0dXJuIDA7Ci0jZW5kaWYKLX0KLQotY29u
c3QgY2hhciogZXdrX2ludGVudF9leHRyYV9nZXQoY29uc3QgRXdrX0ludGVudCogaW50ZW50LCBj
b25zdCBjaGFyKiBrZXkpCi17Ci0jaWYgRU5BQkxFKFdFQl9JTlRFTlRTKQotICAgIEVXS19JTlRF
TlRfQ09SRV9HRVRfT1JfUkVUVVJOKGludGVudCwgY29yZSwgMCk7Ci0gICAgV1RGOjpIYXNoTWFw
PFN0cmluZywgU3RyaW5nPjo6Y29uc3RfaXRlcmF0b3IgdmFsID0gY29yZS0+ZXh0cmFzKCkuZmlu
ZChTdHJpbmc6OmZyb21VVEY4KGtleSkpOwotICAgIGlmICh2YWwgPT0gY29yZS0+ZXh0cmFzKCku
ZW5kKCkpCi0gICAgICAgIHJldHVybiAwOwotICAgIHJldHVybiBlaW5hX3N0cmluZ3NoYXJlX2Fk
ZCh2YWwtPnZhbHVlLnV0ZjgoKS5kYXRhKCkpOwotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0oaW50
ZW50KTsKLSAgICBVTlVTRURfUEFSQU0oa2V5KTsKLSAgICByZXR1cm4gMDsKLSNlbmRpZgotfQot
Ci1FaW5hX0xpc3QqIGV3a19pbnRlbnRfZXh0cmFfbmFtZXNfZ2V0KGNvbnN0IEV3a19JbnRlbnQq
IGludGVudCkKLXsKLSNpZiBFTkFCTEUoV0VCX0lOVEVOVFMpCi0gICAgRVdLX0lOVEVOVF9DT1JF
X0dFVF9PUl9SRVRVUk4oaW50ZW50LCBjb3JlLCAwKTsKLSAgICBFaW5hX0xpc3QqIGxpc3RPZk5h
bWVzID0gMDsKLSAgICBXVEY6Okhhc2hNYXA8U3RyaW5nLCBTdHJpbmc+Ojpjb25zdF9pdGVyYXRv
cjo6S2V5cyBpdCA9IGNvcmUtPmV4dHJhcygpLmJlZ2luKCkua2V5cygpOwotICAgIGZvciAoOyBp
dCAhPSBjb3JlLT5leHRyYXMoKS5lbmQoKS5rZXlzKCk7ICsraXQpCi0gICAgICAgIGxpc3RPZk5h
bWVzID0gZWluYV9saXN0X2FwcGVuZChsaXN0T2ZOYW1lcywgZWluYV9zdHJpbmdzaGFyZV9hZGQo
aXQtPnV0ZjgoKS5kYXRhKCkpKTsKLSAgICByZXR1cm4gbGlzdE9mTmFtZXM7Ci0jZWxzZQotICAg
IFVOVVNFRF9QQVJBTShpbnRlbnQpOwotICAgIHJldHVybiAwOwotI2VuZGlmCi19Ci0KLSNpZiBF
TkFCTEUoV0VCX0lOVEVOVFMpCi0vKioKLSAqIEBpbnRlcm5hbAotICoKLSAqIENyZWF0ZXMgYSBu
ZXcgRXdrX0ludGVudCBvYmplY3QuCi0gKgotICogQHBhcmFtIGNvcmUgV2ViQ29yZTo6SW50ZW50
IGluc3RhbmNlIHRvIHVzZSBpbnRlcm5hbGx5LgotICogQHJldHVybiBhIG5ldyBhbGxvY2F0ZWQg
dGhlIEV3a19JbnRlbnQgb2JqZWN0IG9uIHN1Y2Nlc3Mgb3IgQGMgMCBvbiBmYWlsdXJlCi0gKi8K
LUV3a19JbnRlbnQqIGV3a19pbnRlbnRfbmV3KFdlYkNvcmU6OkludGVudCogY29yZSkKLXsKLSAg
ICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoY29yZSwgMCk7Ci0gICAgRXdrX0ludGVu
dCogaW50ZW50ID0gbmV3IEV3a19JbnRlbnQ7Ci0gICAgbWVtc2V0KGludGVudCwgMCwgc2l6ZW9m
KEV3a19JbnRlbnQpKTsKLSAgICBpbnRlbnQtPmNvcmUgPSBjb3JlOwotCi0gICAgcmV0dXJuIGlu
dGVudDsKLX0KLQotLyoqCi0gKiBAaW50ZXJuYWwKLSAqCi0gKiBGcmVlIGdpdmVuIEV3a19JbnRl
bnQgaW5zdGFuY2UuCi0gKgotICogQHBhcmFtIGludGVudCB0aGUgb2JqZWN0IHRvIGZyZWUuCi0g
Ki8KLXZvaWQgZXdrX2ludGVudF9mcmVlKEV3a19JbnRlbnQqIGludGVudCkKLXsKLSAgICBFSU5B
X1NBRkVUWV9PTl9OVUxMX1JFVFVSTihpbnRlbnQpOwotCi0gICAgZWluYV9zdHJpbmdzaGFyZV9k
ZWwoaW50ZW50LT5hY3Rpb24pOwotICAgIGVpbmFfc3RyaW5nc2hhcmVfZGVsKGludGVudC0+dHlw
ZSk7Ci0gICAgZWluYV9zdHJpbmdzaGFyZV9kZWwoaW50ZW50LT5zZXJ2aWNlKTsKLSAgICBkZWxl
dGUgaW50ZW50OwotfQotCi1uYW1lc3BhY2UgRVdLUHJpdmF0ZSB7Ci0KLVdlYkNvcmU6OkludGVu
dCogY29yZUludGVudChjb25zdCBFd2tfSW50ZW50KiBpbnRlbnQpCi17Ci0gICAgRVdLX0lOVEVO
VF9DT1JFX0dFVF9PUl9SRVRVUk4oaW50ZW50LCBjb3JlLCAwKTsKLSAgICByZXR1cm4gY29yZTsK
LX0KLQotfSAvLyBuYW1lc3BhY2UgRVdLUHJpdmF0ZQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2VmbC9ld2svZXdrX2ludGVudC5oIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3
a19pbnRlbnQuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmI3NzljZC4uMDAwMDAw
MAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2ludGVudC5oCisrKyAvZGV2L251bGwK
QEAgLTEsMTExICswLDAgQEAKLS8qCi0gICAgQ29weXJpZ2h0IChDKSAyMDEyIEludGVsIENvcnBv
cmF0aW9uCi0KLSAgICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRp
c3RyaWJ1dGUgaXQgYW5kL29yCi0gICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUg
R05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0
aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAgICB2ZXJzaW9uIDIgb2YgdGhl
IExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0KLSAgICBU
aGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVz
ZWZ1bCwKLSAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1w
bGllZCB3YXJyYW50eSBvZgotICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gICAgTGlicmFyeSBHZW5lcmFsIFB1Ymxp
YyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0KLSAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2
ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gICAg
YWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5v
dCwgd3JpdGUgdG8KLSAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBG
cmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwg
VVNBLgotKi8KLQotI2lmbmRlZiBld2tfaW50ZW50X2gKLSNkZWZpbmUgZXdrX2ludGVudF9oCi0K
LSNpbmNsdWRlIDxFaW5hLmg+Ci0KLSNpZmRlZiBfX2NwbHVzcGx1cwotZXh0ZXJuICJDIiB7Ci0j
ZW5kaWYKLQotLyoqIENyZWF0ZXMgYSB0eXBlIG5hbWUgZm9yIF9Fd2tfSW50ZW50ICovCi10eXBl
ZGVmIHN0cnVjdCBfRXdrX0ludGVudCBFd2tfSW50ZW50OwotCi0vKioKLSAqIFF1ZXJ5IGFjdGlv
biBmb3IgdGhpcyBpbnRlbnQuCi0gKgotICogQHBhcmFtIGludGVudCBpbnRlbnQgaXRlbSB0byBx
dWVyeS4KLSAqCi0gKiBAcmV0dXJuIHRoZSBhY3Rpb24gcG9pbnRlciwgdGhhdCBtYXkgYmUgQGMg
TlVMTC4gVGhpcyBwb2ludGVyIGlzCi0gKiAgICAgICAgIGd1YXJhbnRlZWQgdG8gYmUgZWluYV9z
dHJpbmdzaGFyZSwgc28gd2hlbmV2ZXIgcG9zc2libGUKLSAqICAgICAgICAgc2F2ZSB5b3Vyc2Vs
ZiBzb21lIGNwdSBjeWNsZXMgYW5kIHVzZQotICogICAgICAgICBlaW5hX3N0cmluZ3NoYXJlX3Jl
ZigpIGluc3RlYWQgb2YgZWluYV9zdHJpbmdzaGFyZV9hZGQoKSBvcgotICogICAgICAgICBzdHJk
dXAoKS4KLSAqLwotRUFQSSBjb25zdCBjaGFyICpld2tfaW50ZW50X2FjdGlvbl9nZXQoY29uc3Qg
RXdrX0ludGVudCAqaW50ZW50KTsKLQotLyoqCi0gKiBRdWVyeSB0eXBlIGZvciB0aGlzIGludGVu
dC4KLSAqCi0gKiBAcGFyYW0gaW50ZW50IGludGVudCBpdGVtIHRvIHF1ZXJ5LgotICoKLSAqIEBy
ZXR1cm4gdGhlIHR5cGUgcG9pbnRlciwgdGhhdCBtYXkgYmUgQGMgTlVMTC4gVGhpcyBwb2ludGVy
IGlzCi0gKiAgICAgICAgIGd1YXJhbnRlZWQgdG8gYmUgZWluYV9zdHJpbmdzaGFyZSwgc28gd2hl
bmV2ZXIgcG9zc2libGUKLSAqICAgICAgICAgc2F2ZSB5b3Vyc2VsZiBzb21lIGNwdSBjeWNsZXMg
YW5kIHVzZQotICogICAgICAgICBlaW5hX3N0cmluZ3NoYXJlX3JlZigpIGluc3RlYWQgb2YgZWlu
YV9zdHJpbmdzaGFyZV9hZGQoKSBvcgotICogICAgICAgICBzdHJkdXAoKS4KLSAqLwotRUFQSSBj
b25zdCBjaGFyICpld2tfaW50ZW50X3R5cGVfZ2V0KGNvbnN0IEV3a19JbnRlbnQgKmludGVudCk7
Ci0KLS8qKgotICogUXVlcnkgc2VydmljZSBmb3IgdGhpcyBpbnRlbnQuCi0gKgotICogQHBhcmFt
IGludGVudCBpbnRlbnQgaXRlbSB0byBxdWVyeS4KLSAqCi0gKiBAcmV0dXJuIHRoZSBzZXJ2aWNl
IHBvaW50ZXIsIHRoYXQgbWF5IGJlIEBjIE5VTEwuIFRoaXMgcG9pbnRlciBpcwotICogICAgICAg
ICBndWFyYW50ZWVkIHRvIGJlIGVpbmFfc3RyaW5nc2hhcmUsIHNvIHdoZW5ldmVyIHBvc3NpYmxl
Ci0gKiAgICAgICAgIHNhdmUgeW91cnNlbGYgc29tZSBjcHUgY3ljbGVzIGFuZCB1c2UKLSAqICAg
ICAgICAgZWluYV9zdHJpbmdzaGFyZV9yZWYoKSBpbnN0ZWFkIG9mIGVpbmFfc3RyaW5nc2hhcmVf
YWRkKCkgb3IKLSAqICAgICAgICAgc3RyZHVwKCkuCi0gKi8KLUVBUEkgY29uc3QgY2hhciAqZXdr
X2ludGVudF9zZXJ2aWNlX2dldChjb25zdCBFd2tfSW50ZW50ICppbnRlbnQpOwotCi0vKioKLSAq
IFF1ZXJ5IHN1Z2dlc3Rpb25zIGZvciB0aGlzIGludGVudC4KLSAqCi0gKiBUaGlzIGZ1bmN0aW9u
IHByb3ZpZGVzIGEgbGlzdCBvZiAoYWJzb2x1dGUpIHN1Z2dlc3RlZCBTZXJ2aWNlIFVSTHMgb2Yg
d2hpY2ggdGhlIENsaWVudAotICogaXMgYXdhcmUgYW5kIHdoaWNoIGNhbiBoYW5kbGUgdGhlIGlu
dGVudC4KLSAqCi0gKiBAcGFyYW0gaW50ZW50IGludGVudCBpdGVtIHRvIHF1ZXJ5LgotICoKLSAq
IEByZXR1cm4gQGMgRWluYV9MaXN0IHdpdGggc3VnZ2VzdGVkIHNlcnZpY2UgVVJMcyBvbiBzdWNj
ZXNzLCBvciBAYyBOVUxMIG9uIGZhaWx1cmUsCi0gKiAgICAgICAgIHRoZSBFaW5hX0xpc3QgYW5k
IGl0cyBpdGVtcyBzaG91bGQgYmUgZnJlZWQgYWZ0ZXIgdXNlLiBVc2UgZnJlZSgpIHRvIGZyZWUg
dGhlCi0gKiAgICAgICAgIGl0ZW1zLgotICovCi1FQVBJIEVpbmFfTGlzdCAqZXdrX2ludGVudF9z
dWdnZXN0aW9uc19nZXQoY29uc3QgRXdrX0ludGVudCAqaW50ZW50KTsKLQotLyoqCi0gKiBSZXRy
aWV2ZXMgdGhlIHZhbHVlIChpZiBhbnkpIGZyb20gdGhlIGV4dHJhIGRhdGEgZGljdGlvbmFyeSB0
aGlzIGludGVudCB3YXMgY29uc3RydWN0ZWQgd2l0aC4KLSAqCi0gKiBUaGUgcmV0dXJuZWQgc3Ry
aW5nIHNob3VsZCBiZSBmcmVlZCBieSBlaW5hX3N0cmluZ3NoYXJlX2RlbCgpIGFmdGVyIHVzZS4K
LSAqCi0gKiBAcGFyYW0gaW50ZW50IGludGVudCBpdGVtIHRvIHF1ZXJ5LgotICogQHBhcmFtIGtl
eSBrZXkgdG8gcXVlcnkgaW4gdGhlIGRpY3Rpb25hcnkuCi0gKgotICogQHJldHVybiBhIG5ld2x5
IGFsbG9jYXRlZCBzdHJpbmcgb3IgQGMgTlVMTCBpbiBjYXNlIG9mIGVycm9yIG9yIGlmIHRoZSBr
ZXkgZG9lcyBub3QgZXhpc3QuCi0gKi8KLUVBUEkgY29uc3QgY2hhciAqZXdrX2ludGVudF9leHRy
YV9nZXQoY29uc3QgRXdrX0ludGVudCAqaW50ZW50LCBjb25zdCBjaGFyICprZXkpOwotCi0vKioK
LSAqIFJldHJpZXZlIGEgbGlzdCBvZiB0aGUgbmFtZXMgb2YgZXh0cmEgbWV0YWRhdGEgYXNzb2Np
YXRlZCB3aXRoIHRoZSBpbnRlbnQuCi0gKgotICogQHBhcmFtIGludGVudCBpbnRlbnQgaXRlbSB0
byBxdWVyeS4KLSAqCi0gKiBAcmV0dXJuIEBjIEVpbmFfTGlzdCB3aXRoIG5hbWVzIG9mIGV4dHJh
IG1ldGFkYXRhIG9uIHN1Y2Nlc3MsIG9yIEBjIE5VTEwgb24gZmFpbHVyZSwKLSAqICAgICAgICAg
dGhlIEVpbmFfTGlzdCBhbmQgaXRzIGl0ZW1zIHNob3VsZCBiZSBmcmVlZCBhZnRlciB1c2UuIFVz
ZSBlaW5hX3N0cmluZ3NoYXJlX2RlbCgpCi0gKiAgICAgICAgIHRvIGZyZWUgdGhlIGl0ZW1zLgot
ICovCi1FQVBJIEVpbmFfTGlzdCAqZXdrX2ludGVudF9leHRyYV9uYW1lc19nZXQoY29uc3QgRXdr
X0ludGVudCAqaW50ZW50KTsKLQotI2lmZGVmIF9fY3BsdXNwbHVzCi19Ci0jZW5kaWYKLSNlbmRp
ZiAvLyBld2tfaW50ZW50X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tf
aW50ZW50X3ByaXZhdGUuaCBiL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfaW50ZW50X3ByaXZh
dGUuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWFlYzkwMy4uMDAwMDAwMAotLS0g
YS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2ludGVudF9wcml2YXRlLmgKKysrIC9kZXYvbnVs
bApAQCAtMSw0OCArMCwwIEBACi0vKgotICAgIENvcHlyaWdodCAoQykgMjAxMiBJbnRlbCBDb3Jw
b3JhdGlvbgotCi0gICAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVk
aXN0cmlidXRlIGl0IGFuZC9vcgotICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhl
IEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkg
dGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gICAgdmVyc2lvbiAyIG9mIHRo
ZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotCi0gICAg
VGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1
c2VmdWwsCi0gICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGlt
cGxpZWQgd2FycmFudHkgb2YKLSAgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICAgIExpYnJhcnkgR2VuZXJhbCBQdWJs
aWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotCi0gICAgWW91IHNob3VsZCBoYXZlIHJlY2Vp
dmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICAg
IGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBu
b3QsIHdyaXRlIHRvCi0gICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEg
RnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwKLSAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEs
IFVTQS4KLSovCi0KLSNpZm5kZWYgZXdrX2ludGVudF9wcml2YXRlX2gKLSNkZWZpbmUgZXdrX2lu
dGVudF9wcml2YXRlX2gKLQotI2lmIEVOQUJMRShXRUJfSU5URU5UUykKLQotI2luY2x1ZGUgImV3
a19pbnRlbnQuaCIKLSNpbmNsdWRlICJld2tfaW50ZW50X3JlcXVlc3QuaCIKLQotLy8gZm9yd2Fy
ZCBkZWNsYXJhdGlvbnMKLW5hbWVzcGFjZSBXZWJDb3JlIHsKLWNsYXNzIEludGVudDsKLWNsYXNz
IEludGVudFJlcXVlc3Q7Ci1jbGFzcyBTZXJpYWxpemVkU2NyaXB0VmFsdWU7Ci19Ci0KLUV3a19J
bnRlbnQqIGV3a19pbnRlbnRfbmV3KFdlYkNvcmU6OkludGVudCogY29yZSk7Ci12b2lkIGV3a19p
bnRlbnRfZnJlZShFd2tfSW50ZW50KiBpbnRlbnQpOwotRXdrX0ludGVudF9SZXF1ZXN0KiBld2tf
aW50ZW50X3JlcXVlc3RfbmV3KFBhc3NSZWZQdHI8V2ViQ29yZTo6SW50ZW50UmVxdWVzdD4gY29y
ZSk7Ci0KLXZvaWQgZXdrX2ludGVudF9yZXF1ZXN0X3Jlc3VsdF9wb3N0KEV3a19JbnRlbnRfUmVx
dWVzdCogcmVxdWVzdCwgUGFzc1JlZlB0cjxXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU+
IHJlc3VsdCk7Ci12b2lkIGV3a19pbnRlbnRfcmVxdWVzdF9mYWlsdXJlX3Bvc3QoRXdrX0ludGVu
dF9SZXF1ZXN0KiByZXF1ZXN0LCBQYXNzUmVmUHRyPFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZT4gZmFpbHVyZSk7Ci0KLW5hbWVzcGFjZSBFV0tQcml2YXRlIHsKLVdlYkNvcmU6OkludGVu
dCogY29yZUludGVudChjb25zdCBFd2tfSW50ZW50KiBpbnRlbnQpOwotfSAvLyBuYW1lc3BhY2Ug
RVdLUHJpdmF0ZQotCi0jZW5kaWYKLQotI2VuZGlmIC8vIGV3a19pbnRlbnRfcHJpdmF0ZV9oCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2ludGVudF9yZXF1ZXN0LmNwcCBi
L1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfaW50ZW50X3JlcXVlc3QuY3BwCmRlbGV0ZWQgZmls
ZSBtb2RlIDEwMDY0NAppbmRleCAzZWNiODI5Li4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQv
ZWZsL2V3ay9ld2tfaW50ZW50X3JlcXVlc3QuY3BwCisrKyAvZGV2L251bGwKQEAgLTEsMTQzICsw
LDAgQEAKLS8qCi0gICAgQ29weXJpZ2h0IChDKSAyMDEyIEludGVsIENvcnBvcmF0aW9uCi0KLSAg
ICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQg
YW5kL29yCi0gICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkg
R2VuZXJhbCBQdWJsaWMKLSAgICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0
d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAgICB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9y
IChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0KLSAgICBUaGlzIGxpYnJhcnkg
aXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAgICBi
dXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50
eSBvZgotICAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVS
UE9TRS4gIFNlZSB0aGUgR05VCi0gICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZv
ciBtb3JlIGRldGFpbHMuCi0KLSAgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9m
IHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0gICAgYWxvbmcgd2l0aCB0
aGlzIGxpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwgd3JpdGUgdG8K
LSAgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJl
ZXQsIEZpZnRoIEZsb29yLAotICAgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotKi8KLQot
I2luY2x1ZGUgImNvbmZpZy5oIgotI2luY2x1ZGUgImV3a19pbnRlbnRfcmVxdWVzdC5oIgotCi0j
aW5jbHVkZSAiSW50ZW50UmVxdWVzdC5oIgotI2luY2x1ZGUgIlNlcmlhbGl6ZWRTY3JpcHRWYWx1
ZS5oIgotI2luY2x1ZGUgImV3a19pbnRlbnRfcHJpdmF0ZS5oIgotI2luY2x1ZGUgImV3a19wcml2
YXRlLmgiCi0KLS8qKgotICogXHN0cnVjdCAgX0V3a19JbnRlbnRfUmVxdWVzdAotICogQGJyaWVm
ICAgQ29udGFpbnMgdGhlIGludGVudCByZXF1ZXN0IGRhdGEuCi0gKi8KLXN0cnVjdCBfRXdrX0lu
dGVudF9SZXF1ZXN0IHsKLSAgICB1bnNpZ25lZCBpbnQgX19yZWY7IC8qKjwgdGhlIHJlZmVyZW5j
ZSBjb3VudCBvZiB0aGUgb2JqZWN0ICovCi0jaWYgRU5BQkxFKFdFQl9JTlRFTlRTKQotICAgIFJl
ZlB0cjxXZWJDb3JlOjpJbnRlbnRSZXF1ZXN0PiBjb3JlOwotI2VuZGlmCi0gICAgRXdrX0ludGVu
dCogaW50ZW50OwotfTsKLQotI2RlZmluZSBFV0tfSU5URU5UX1JFUVVFU1RfQ09SRV9HRVRfT1Jf
UkVUVVJOKHJlcXVlc3QsIGNvcmVfLCAuLi4pICAgICAgXAotICAgIGlmICghKHJlcXVlc3QpKSB7
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAg
ICAgICBDUklUSUNBTCgicmVxdWVzdCBpcyBOVUxMLiIpOyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgXAotICAgICAgICByZXR1cm4gX19WQV9BUkdTX187ICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIH0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIGlm
ICghKHJlcXVlc3QpLT5jb3JlKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgXAotICAgICAgICBDUklUSUNBTCgicmVxdWVzdC0+Y29yZSBpcyBOVUxMLiIpOyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICByZXR1cm4gX19WQV9BUkdTX187
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIH0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgXAotICAgIFJlZlB0cjxXZWJDb3JlOjpJbnRlbnRSZXF1ZXN0PiBjb3JlXyA9IChyZXF1
ZXN0KS0+Y29yZQotCi12b2lkIGV3a19pbnRlbnRfcmVxdWVzdF9yZWYoRXdrX0ludGVudF9SZXF1
ZXN0KiByZXF1ZXN0KQotewotI2lmIEVOQUJMRShXRUJfSU5URU5UUykKLSAgICBFSU5BX1NBRkVU
WV9PTl9OVUxMX1JFVFVSTihyZXF1ZXN0KTsKLSAgICArK3JlcXVlc3QtPl9fcmVmOwotI2Vsc2UK
LSAgICBVTlVTRURfUEFSQU0ocmVxdWVzdCk7Ci0jZW5kaWYKLX0KLQotdm9pZCBld2tfaW50ZW50
X3JlcXVlc3RfdW5yZWYoRXdrX0ludGVudF9SZXF1ZXN0KiByZXF1ZXN0KQotewotI2lmIEVOQUJM
RShXRUJfSU5URU5UUykKLSAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTihyZXF1ZXN0KTsK
LQotICAgIGlmICgtLXJlcXVlc3QtPl9fcmVmKQotICAgICAgICByZXR1cm47Ci0KLSAgICBld2tf
aW50ZW50X2ZyZWUocmVxdWVzdC0+aW50ZW50KTsKLSAgICBkZWxldGUgcmVxdWVzdDsKLSNlbHNl
Ci0gICAgVU5VU0VEX1BBUkFNKHJlcXVlc3QpOwotI2VuZGlmCi19Ci0KLUV3a19JbnRlbnQqIGV3
a19pbnRlbnRfcmVxdWVzdF9pbnRlbnRfZ2V0KGNvbnN0IEV3a19JbnRlbnRfUmVxdWVzdCogcmVx
dWVzdCkKLXsKLSNpZiBFTkFCTEUoV0VCX0lOVEVOVFMpCi0gICAgRUlOQV9TQUZFVFlfT05fTlVM
TF9SRVRVUk5fVkFMKHJlcXVlc3QsIDApOwotCi0gICAgcmV0dXJuIHJlcXVlc3QtPmludGVudDsK
LSNlbHNlCi0gICAgVU5VU0VEX1BBUkFNKHJlcXVlc3QpOwotICAgIHJldHVybiAwOwotI2VuZGlm
Ci19Ci0KLSNpZiBFTkFCTEUoV0VCX0lOVEVOVFMpCi0vKioKLSAqIEBpbnRlcm5hbAotICoKLSAq
IFJlcG9ydCByZXF1ZXN0IHN1Y2Nlc3MuCi0gKgotICogVGhlIHNlcmlhbGl6ZWQgcGF5bG9hZCBk
YXRhIHdpbGwgYmUgcGFzc2VkIHRvIHRoZSBzdWNjZXNzIGNhbGxiYWNrIHJlZ2lzdGVyZWQgYnkg
dGhlCi0gKiBjbGllbnQuCi0gKgotICogQHBhcmFtIHJlcXVlc3QgcmVxdWVzdCBpdGVtLgotICog
QHBhcmFtIHJlc3VsdCBzZXJpYWxpemVkIHBheWxvYWQgZGF0YS4KLSAqLwotdm9pZCBld2tfaW50
ZW50X3JlcXVlc3RfcmVzdWx0X3Bvc3QoRXdrX0ludGVudF9SZXF1ZXN0KiByZXF1ZXN0LCBQYXNz
UmVmUHRyPFdlYkNvcmU6OlNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gcmVzdWx0KQotewotICAgIEVX
S19JTlRFTlRfUkVRVUVTVF9DT1JFX0dFVF9PUl9SRVRVUk4ocmVxdWVzdCwgY29yZSk7Ci0KLSAg
ICBjb3JlLT5wb3N0UmVzdWx0KHJlc3VsdC5nZXQoKSk7Ci19Ci0KLS8qKgotICogQGludGVybmFs
Ci0gKgotICogUmVwb3J0IHJlcXVlc3QgZmFpbHVyZS4KLSAqCi0gKiBUaGUgc2VyaWFsaXplZCBw
YXlsb2FkIGRhdGEgd2lsbCBiZSBwYXNzZWQgdG8gdGhlIGVycm9yIGNhbGxiYWNrIHJlZ2lzdGVy
ZWQgYnkgdGhlCi0gKiBjbGllbnQuCi0gKgotICogQHBhcmFtIHJlcXVlc3QgcmVxdWVzdCBpdGVt
LgotICogQHBhcmFtIGZhaWx1cmUgc2VyaWFsaXplZCBwYXlsb2FkIGRhdGEuCi0gKi8KLXZvaWQg
ZXdrX2ludGVudF9yZXF1ZXN0X2ZhaWx1cmVfcG9zdChFd2tfSW50ZW50X1JlcXVlc3QqIHJlcXVl
c3QsIFBhc3NSZWZQdHI8V2ViQ29yZTo6U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBmYWlsdXJlKQot
ewotICAgIEVXS19JTlRFTlRfUkVRVUVTVF9DT1JFX0dFVF9PUl9SRVRVUk4ocmVxdWVzdCwgY29y
ZSk7Ci0KLSAgICBjb3JlLT5wb3N0RmFpbHVyZShmYWlsdXJlLmdldCgpKTsKLX0KLQotLyoqCi0g
KiBAaW50ZXJuYWwKLSAqCi0gKiBDcmVhdGVzIGEgbmV3IEV3a19JbnRlbnRfUmVxdWVzdCBvYmpl
Y3QuCi0gKgotICogQHBhcmFtIGNvcmUgV2ViQ29yZTo6SW50ZW50UmVxdWVzdCBpbnN0YW5jZSB0
byB1c2UgaW50ZXJuYWxseS4KLSAqIEByZXR1cm4gYSBuZXcgYWxsb2NhdGVkIHRoZSBFd2tfSW50
ZW50X1JlcXVlc3Qgb2JqZWN0IG9uIHN1Y2VzcyBvciBAYyAwIG9uIGZhaWx1cmUKLSAqLwotRXdr
X0ludGVudF9SZXF1ZXN0KiBld2tfaW50ZW50X3JlcXVlc3RfbmV3KFBhc3NSZWZQdHI8V2ViQ29y
ZTo6SW50ZW50UmVxdWVzdD4gY29yZSkKLXsKLSAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVS
Tl9WQUwoY29yZSwgMCk7Ci0gICAgRXdrX0ludGVudF9SZXF1ZXN0KiByZXF1ZXN0ID0gbmV3IEV3
a19JbnRlbnRfUmVxdWVzdDsKLSAgICByZXF1ZXN0LT5fX3JlZiA9IDE7Ci0gICAgcmVxdWVzdC0+
Y29yZSA9IGNvcmU7Ci0gICAgcmVxdWVzdC0+aW50ZW50ID0gZXdrX2ludGVudF9uZXcocmVxdWVz
dC0+Y29yZS0+aW50ZW50KCkpOwotCi0gICAgcmV0dXJuIHJlcXVlc3Q7Ci19Ci0jZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfaW50ZW50X3JlcXVlc3QuaCBiL1Nv
dXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfaW50ZW50X3JlcXVlc3QuaApkZWxldGVkIGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMjllOGQzMi4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9l
d2svZXdrX2ludGVudF9yZXF1ZXN0LmgKKysrIC9kZXYvbnVsbApAQCAtMSw2MiArMCwwIEBACi0v
KgotICAgIENvcHlyaWdodCAoQykgMjAxMiBJbnRlbCBDb3Jwb3JhdGlvbgotCi0gICAgVGhpcyBs
aWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgot
ICAgIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwg
UHVibGljCi0gICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91
bmRhdGlvbjsgZWl0aGVyCi0gICAgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91
ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotCi0gICAgVGhpcyBsaWJyYXJ5IGlzIGRpc3Ry
aWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gICAgYnV0IFdJVEhP
VVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAg
ICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBT
ZWUgdGhlIEdOVQotICAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBk
ZXRhaWxzLgotCi0gICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05V
IExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotICAgIGFsb25nIHdpdGggdGhpcyBsaWJy
YXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsIHdyaXRlIHRvCi0gICAgdGhl
IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0
aCBGbG9vciwKLSAgICBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSovCi0KLSNpZm5kZWYg
ZXdrX2ludGVudF9yZXF1ZXN0X2gKLSNkZWZpbmUgZXdrX2ludGVudF9yZXF1ZXN0X2gKLQotI2lu
Y2x1ZGUgImV3a19pbnRlbnQuaCIKLQotI2luY2x1ZGUgPEVpbmEuaD4KLQotI2lmZGVmIF9fY3Bs
dXNwbHVzCi1leHRlcm4gIkMiIHsKLSNlbmRpZgotCi0vKiogQ3JlYXRlcyBhIHR5cGUgbmFtZSBm
b3IgX0V3a19JbnRlbnQgKi8KLXR5cGVkZWYgc3RydWN0IF9Fd2tfSW50ZW50X1JlcXVlc3QgRXdr
X0ludGVudF9SZXF1ZXN0OwotCi0vKioKLSAqIEluY3JlYXNlcyB0aGUgcmVmZXJlbmNlIGNvdW50
IG9mIHRoZSBnaXZlbiBvYmplY3QuCi0gKgotICogQHBhcmFtIHJlcXVlc3QgdGhlIGludGVudCBy
ZXF1ZXN0IG9iamVjdCB0byBpbmNyZWFzZSB0aGUgcmVmZXJlbmNlIGNvdW50Ci0gKi8KLUVBUEkg
dm9pZCBld2tfaW50ZW50X3JlcXVlc3RfcmVmKEV3a19JbnRlbnRfUmVxdWVzdCAqcmVxdWVzdCk7
Ci0KLS8qKgotICogRGVjcmVhc2VzIHRoZSByZWZlcmVuY2UgY291bnQgb2YgdGhlIGdpdmVuIG9i
amVjdCwgcG9zc2libHkgZnJlZWluZyBpdC4KLSAqCi0gKiBXaGVuIHRoZSByZWZlcmVuY2UgY291
bnQgcmVhY2hlcyAwLCB0aGUgaW50ZW50IHJlcXVlc3QgaXMgZnJlZWQuCi0gKgotICogQHBhcmFt
IHJlcXVlc3QgdGhlIGludGVudCByZXF1ZXN0IG9iamVjdCB0byBkZWNyZWFzZSB0aGUgcmVmZXJl
bmNlIGNvdW50Ci0gKi8KLUVBUEkgdm9pZCBld2tfaW50ZW50X3JlcXVlc3RfdW5yZWYoRXdrX0lu
dGVudF9SZXF1ZXN0ICpyZXF1ZXN0KTsKLQotLyoqCi0gKiBRdWVyeSBpbnRlbnQgZm9yIHRoaXMg
cmVxdWVzdC4KLSAqCi0gKiBAcGFyYW0gcmVxdWVzdCByZXF1ZXN0IGl0ZW0gdG8gcXVlcnkuCi0g
KgotICogQHJldHVybiBBIHBvaW50ZXIgdG8gdGhlIGludGVudCBpbnN0YW5jZS4KLSAqLwotRUFQ
SSBFd2tfSW50ZW50ICpld2tfaW50ZW50X3JlcXVlc3RfaW50ZW50X2dldChjb25zdCBFd2tfSW50
ZW50X1JlcXVlc3QgKnJlcXVlc3QpOwotCi0jaWZkZWYgX19jcGx1c3BsdXMKLX0KLSNlbmRpZgot
I2VuZGlmIC8vIGV3a19pbnRlbnRfcmVxdWVzdF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9DTWFrZUxpc3RzLnR4dCBiL1NvdXJjZS9XZWJLaXQyL0NNYWtlTGlzdHMudHh0CmluZGV4IDhm
ZGRhMzcuLmJhM2I1NjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NNYWtlTGlzdHMudHh0
CisrKyBiL1NvdXJjZS9XZWJLaXQyL0NNYWtlTGlzdHMudHh0CkBAIC01MCw3ICs1MCw2IEBAIHNl
dChXZWJLaXQyX0lOQ0xVREVfRElSRUNUT1JJRVMKICAgICAiJHtXRUJLSVQyX0RJUn0vV2ViUHJv
Y2Vzcy9XZWJQYWdlL0Nvb3JkaW5hdGVkR3JhcGhpY3MiCiAgICAgIiR7V0VCQ09SRV9ESVJ9Igog
ICAgICIke1dFQkNPUkVfRElSfS9Nb2R1bGVzL2JhdHRlcnkiCi0gICAgIiR7V0VCQ09SRV9ESVJ9
L01vZHVsZXMvaW50ZW50cyIKICAgICAiJHtXRUJDT1JFX0RJUn0vTW9kdWxlcy9uZXR3b3JraW5m
byIKICAgICAiJHtXRUJDT1JFX0RJUn0vTW9kdWxlcy9ub3RpZmljYXRpb25zIgogICAgICIke1dF
QkNPUkVfRElSfS9Nb2R1bGVzL3ZpYnJhdGlvbiIKQEAgLTE1MSw4ICsxNTAsNiBAQCBzZXQoV2Vi
S2l0Ml9TT1VSQ0VTCiAgICAgU2hhcmVkL0ZvbnRJbmZvLmNwcAogICAgIFNoYXJlZC9JbW11dGFi
bGVBcnJheS5jcHAKICAgICBTaGFyZWQvSW1tdXRhYmxlRGljdGlvbmFyeS5jcHAKLSAgICBTaGFy
ZWQvSW50ZW50RGF0YS5jcHAKLSAgICBTaGFyZWQvSW50ZW50U2VydmljZUluZm8uY3BwCiAgICAg
U2hhcmVkL011dGFibGVBcnJheS5jcHAKICAgICBTaGFyZWQvTXV0YWJsZURpY3Rpb25hcnkuY3Bw
CiAgICAgU2hhcmVkL09yaWdpbkFuZERhdGFiYXNlcy5jcHAKQEAgLTE3OSw3ICsxNzYsNiBAQCBz
ZXQoV2ViS2l0Ml9TT1VSQ0VTCiAgICAgU2hhcmVkL1dlYkdyYXBoaWNzQ29udGV4dC5jcHAKICAg
ICBTaGFyZWQvV2ViSGl0VGVzdFJlc3VsdC5jcHAKICAgICBTaGFyZWQvV2ViSW1hZ2UuY3BwCi0g
ICAgU2hhcmVkL1dlYkludGVudFNlcnZpY2VJbmZvLmNwcAogICAgIFNoYXJlZC9XZWJLZXlib2Fy
ZEV2ZW50LmNwcAogICAgIFNoYXJlZC9XZWJLaXQySW5pdGlhbGl6ZS5jcHAKICAgICBTaGFyZWQv
V2ViTWVtb3J5U2FtcGxlci5jcHAKQEAgLTI4MSw3ICsyNzcsNiBAQCBzZXQoV2ViS2l0Ml9TT1VS
Q0VTCiAgICAgVUlQcm9jZXNzL1dlYkljb25EYXRhYmFzZS5jcHAKICAgICBVSVByb2Nlc3MvV2Vi
SWNvbkRhdGFiYXNlQ2xpZW50LmNwcAogICAgIFVJUHJvY2Vzcy9XZWJJbnNwZWN0b3JQcm94eS5j
cHAKLSAgICBVSVByb2Nlc3MvV2ViSW50ZW50RGF0YS5jcHAKICAgICBVSVByb2Nlc3MvV2ViS2V5
VmFsdWVTdG9yYWdlTWFuYWdlclByb3h5LmNwcAogCiAgICAgVUlQcm9jZXNzL1dlYkxvYWRlckNs
aWVudC5jcHAKQEAgLTMyNiw4ICszMjEsNiBAQCBzZXQoV2ViS2l0Ml9TT1VSQ0VTCiAgICAgVUlQ
cm9jZXNzL0FQSS9DL1dLSGl0VGVzdFJlc3VsdC5jcHAKICAgICBVSVByb2Nlc3MvQVBJL0MvV0tJ
Y29uRGF0YWJhc2UuY3BwCiAgICAgVUlQcm9jZXNzL0FQSS9DL1dLSW5zcGVjdG9yLmNwcAotICAg
IFVJUHJvY2Vzcy9BUEkvQy9XS0ludGVudERhdGEuY3BwCi0gICAgVUlQcm9jZXNzL0FQSS9DL1dL
SW50ZW50U2VydmljZUluZm8uY3BwCiAgICAgVUlQcm9jZXNzL0FQSS9DL1dLS2V5VmFsdWVTdG9y
YWdlTWFuYWdlci5jcHAKICAgICBVSVByb2Nlc3MvQVBJL0MvV0tNZWRpYUNhY2hlTWFuYWdlci5j
cHAKICAgICBVSVByb2Nlc3MvQVBJL0MvV0tOYXZpZ2F0aW9uRGF0YS5jcHAKQEAgLTQwNSw4ICsz
OTgsNiBAQCBzZXQoV2ViS2l0Ml9TT1VSQ0VTCiAgICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRs
ZS9JbmplY3RlZEJ1bmRsZUNsaWVudC5jcHAKICAgICBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxl
L0luamVjdGVkQnVuZGxlRE9NV2luZG93RXh0ZW5zaW9uLmNwcAogICAgIFdlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVIaXRUZXN0UmVzdWx0LmNwcAotICAgIFdlYlByb2Nl
c3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGVJbnRlbnQuY3BwCi0gICAgV2ViUHJvY2Vz
cy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZUludGVudFJlcXVlc3QuY3BwCiAgICAgV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZU5hdmlnYXRpb25BY3Rpb24uY3Bw
CiAgICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZVBhZ2VEaWFnbm9z
dGljTG9nZ2luZ0NsaWVudC5jcHAKICAgICBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVj
dGVkQnVuZGxlUGFnZUNvbnRleHRNZW51Q2xpZW50LmNwcApAQCAtNDI2LDggKzQxNyw2IEBAIHNl
dChXZWJLaXQyX1NPVVJDRVMKICAgICBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dL
QnVuZGxlRnJhbWUuY3BwCiAgICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1
bmRsZUhpdFRlc3RSZXN1bHQuY3BwCiAgICAgV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkv
Yy9XS0J1bmRsZUluc3BlY3Rvci5jcHAKLSAgICBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQ
SS9jL1dLQnVuZGxlSW50ZW50LmNwcAotICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJ
L2MvV0tCdW5kbGVJbnRlbnRSZXF1ZXN0LmNwcAogICAgIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvQVBJL2MvV0tCdW5kbGVOYXZpZ2F0aW9uQWN0aW9uLmNwcAogICAgIFdlYlByb2Nlc3MvSW5q
ZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVOb2RlSGFuZGxlLmNwcAogICAgIFdlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVQYWdlLmNwcApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCmluZGV4IGQ4MzEw
Y2IuLjE3MTUzNmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZworKysgYi9T
b3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwzMyBAQAorMjAxMy0wMS0zMSAgQ2hy
aXN0b3BoZSBEdW1leiAgPGRjaHJpc0BnbWFpbC5jb20+CisKKyAgICAgICAgW0VGTF0gRGlzYWJs
ZSBXZWIgSW50ZW50cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTA4NDU3CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgUmVtb3ZlIGNvZGUgcmVsYXRlZCB0byBXZWIgSW50ZW50cyBmcm9tIEVGTAorICAgICAg
ICBXZWJLaXQyLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAgICAgICogUGxhdGZv
cm1FZmwuY21ha2U6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9lZmwvRVdlYktpdDIuaDoKKyAg
ICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3Q2FsbGJhY2tzLmg6CisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9lZmwvZXdrX2ludGVudC5jcHA6IFJlbW92ZWQuCisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9lZmwvZXdrX2ludGVudC5oOiBSZW1vdmVkLgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvZWZsL2V3a19pbnRlbnRfcHJpdmF0ZS5oOiBSZW1vdmVkLgorICAgICAgICAqIFVJUHJv
Y2Vzcy9BUEkvZWZsL2V3a19pbnRlbnRfc2VydmljZS5jcHA6IFJlbW92ZWQuCisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9lZmwvZXdrX2ludGVudF9zZXJ2aWNlLmg6IFJlbW92ZWQuCisgICAgICAg
ICogVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2ludGVudF9zZXJ2aWNlX3ByaXZhdGUuaDogUmVtb3Zl
ZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5jcHA6CisgICAgICAgICog
VUlQcm9jZXNzL0FQSS9lZmwvZXdrX3ZpZXcuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2Vm
bC90ZXN0cy9yZXNvdXJjZXMvaW50ZW50LXJlcXVlc3QuaHRtbDogUmVtb3ZlZC4KKyAgICAgICAg
KiBVSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy9yZXNvdXJjZXMvaW50ZW50LXNlcnZpY2UuaHRtbDog
UmVtb3ZlZC4KKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL2VmbC90ZXN0cy90ZXN0X2V3azJfaW50
ZW50cy5jcHA6IFJlbW92ZWQuCisgICAgICAgICogVUlQcm9jZXNzL2VmbC9QYWdlTG9hZENsaWVu
dEVmbC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBhZ2VMb2FkQ2xpZW50RWZsOjpQYWdlTG9hZENs
aWVudEVmbCk6CisgICAgICAgICogVUlQcm9jZXNzL2VmbC9QYWdlTG9hZENsaWVudEVmbC5oOgor
ICAgICAgICAoUGFnZUxvYWRDbGllbnRFZmwpOgorCiAyMDEzLTAxLTMxICBNaWtoYWlsIFBvemRu
eWFrb3YgIDxtaWtoYWlsLnBvemRueWFrb3ZAaW50ZWwuY29tPgogCiAgICAgICAgIFtFRkxdW1dL
Ml0gUmVxdWVzdE1hbmFnZXJDbGllbnRFZmwsIERvd25sb2FkTWFuYWdlckVmbCBhbmQgQ29udGV4
dEhpc3RvcnlDbGllbnRFZmwgc2hvdWxkIGJlIGJhc2VkIG9uIEMgQVBJCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9QbGF0Zm9ybUVmbC5jbWFrZSBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3Jt
RWZsLmNtYWtlCmluZGV4IDMxM2Y3MTkuLmI4N2U5NzkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1BsYXRmb3JtRWZsLmNtYWtlCisrKyBiL1NvdXJjZS9XZWJLaXQyL1BsYXRmb3JtRWZsLmNt
YWtlCkBAIC02Myw4ICs2Myw2IEBAIGxpc3QoQVBQRU5EIFdlYktpdDJfU09VUkNFUwogICAgIFVJ
UHJvY2Vzcy9BUEkvZWZsL2V3a19mYXZpY29uX2RhdGFiYXNlLmNwcAogICAgIFVJUHJvY2Vzcy9B
UEkvZWZsL2V3a19maWxlX2Nob29zZXJfcmVxdWVzdC5jcHAKICAgICBVSVByb2Nlc3MvQVBJL2Vm
bC9ld2tfZm9ybV9zdWJtaXNzaW9uX3JlcXVlc3QuY3BwCi0gICAgVUlQcm9jZXNzL0FQSS9lZmwv
ZXdrX2ludGVudC5jcHAKLSAgICBVSVByb2Nlc3MvQVBJL2VmbC9ld2tfaW50ZW50X3NlcnZpY2Uu
Y3BwCiAgICAgVUlQcm9jZXNzL0FQSS9lZmwvZXdrX21haW4uY3BwCiAgICAgVUlQcm9jZXNzL0FQ
SS9lZmwvZXdrX25hdmlnYXRpb25fZGF0YS5jcHAKICAgICBVSVByb2Nlc3MvQVBJL2VmbC9ld2tf
bmF2aWdhdGlvbl9wb2xpY3lfZGVjaXNpb24uY3BwCkBAIC0yODAsOCArMjc4LDYgQEAgc2V0KEVX
ZWJLaXQyX0hFQURFUlMKICAgICAiJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L1VJUHJvY2Vz
cy9BUEkvZWZsL2V3a19mYXZpY29uX2RhdGFiYXNlLmgiCiAgICAgIiR7Q01BS0VfQ1VSUkVOVF9T
T1VSQ0VfRElSfS9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfZmlsZV9jaG9vc2VyX3JlcXVlc3QuaCIK
ICAgICAiJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19m
b3JtX3N1Ym1pc3Npb25fcmVxdWVzdC5oIgotICAgICIke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJ
Un0vVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2ludGVudC5oIgotICAgICIke0NNQUtFX0NVUlJFTlRf
U09VUkNFX0RJUn0vVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2ludGVudF9zZXJ2aWNlLmgiCiAgICAg
IiR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfbWFpbi5o
IgogICAgICIke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vVUlQcm9jZXNzL0FQSS9lZmwvZXdr
X25hdmlnYXRpb25fZGF0YS5oIgogICAgICIke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vVUlQ
cm9jZXNzL0FQSS9lZmwvZXdrX25hdmlnYXRpb25fcG9saWN5X2RlY2lzaW9uLmgiCkBAIC0zODEs
NyArMzc3LDYgQEAgc2V0KEVXSzJVbml0VGVzdHNfQklOQVJJRVMKICAgICB0ZXN0X2V3azJfZWlu
YV9zaGFyZWRfc3RyaW5nCiAgICAgdGVzdF9ld2syX2Zhdmljb25fZGF0YWJhc2UKICAgICB0ZXN0
X2V3azJfZmlsZV9jaG9vc2VyX3JlcXVlc3QKLSAgICB0ZXN0X2V3azJfaW50ZW50cwogICAgIHRl
c3RfZXdrMl9vYmplY3QKICAgICB0ZXN0X2V3azJfcG9wdXBfbWVudQogICAgIHRlc3RfZXdrMl9y
ZWZwdHJfZXZhc19vYmplY3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvZWZsL0VXZWJLaXQyLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9FV2Vi
S2l0Mi5oCmluZGV4IDczMzdmZjk1Li4zYTI4NjVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2VmbC9FV2ViS2l0Mi5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZWZsL0VXZWJLaXQyLmgKQEAgLTQyLDggKzQyLDYgQEAKICNpbmNsdWRlICJld2tf
ZmF2aWNvbl9kYXRhYmFzZS5oIgogI2luY2x1ZGUgImV3a19maWxlX2Nob29zZXJfcmVxdWVzdC5o
IgogI2luY2x1ZGUgImV3a19mb3JtX3N1Ym1pc3Npb25fcmVxdWVzdC5oIgotI2luY2x1ZGUgImV3
a19pbnRlbnQuaCIKLSNpbmNsdWRlICJld2tfaW50ZW50X3NlcnZpY2UuaCIKICNpbmNsdWRlICJl
d2tfbWFpbi5oIgogI2luY2x1ZGUgImV3a19uYXZpZ2F0aW9uX2RhdGEuaCIKICNpbmNsdWRlICJl
d2tfbmF2aWdhdGlvbl9wb2xpY3lfZGVjaXNpb24uaCIKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXdDYWxsYmFja3MuaCBiL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9BUEkvZWZsL0V3a1ZpZXdDYWxsYmFja3MuaAppbmRleCBmMDA5ODRkLi4wZTc2
M2EzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9Fd2tWaWV3
Q2FsbGJhY2tzLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvRXdrVmll
d0NhbGxiYWNrcy5oCkBAIC0zOCwxMiArMzgsNiBAQCB0eXBlZGVmIHN0cnVjdCBFd2tPYmplY3Qg
RXdrX0Rvd25sb2FkX0pvYjsKIHR5cGVkZWYgc3RydWN0IEV3a09iamVjdCBFd2tfRmlsZV9DaG9v
c2VyX1JlcXVlc3Q7CiB0eXBlZGVmIHN0cnVjdCBFd2tPYmplY3QgRXdrX0Zvcm1fU3VibWlzc2lv
bl9SZXF1ZXN0OwogdHlwZWRlZiBzdHJ1Y3QgRXdrT2JqZWN0IEV3a19OYXZpZ2F0aW9uX1BvbGlj
eV9EZWNpc2lvbjsKLSNpZiBFTkFCTEUoV0VCX0lOVEVOVFMpCi10eXBlZGVmIHN0cnVjdCBFd2tP
YmplY3QgRXdrX0ludGVudDsKLSNlbmRpZgotI2lmIEVOQUJMRShXRUJfSU5URU5UU19UQUcpCi10
eXBlZGVmIHN0cnVjdCBFd2tPYmplY3QgRXdrX0ludGVudF9TZXJ2aWNlOwotI2VuZGlmCiB0eXBl
ZGVmIHN0cnVjdCBFd2tFcnJvciBFd2tfRXJyb3I7CiAKIHN0cnVjdCBFd2tfRG93bmxvYWRfSm9i
X0Vycm9yOwpAQCAtODEsMTMgKzc1LDcgQEAgZW51bSBDYWxsYmFja1R5cGUgewogICAgIFVSTENo
YW5nZWQsCiAgICAgVmlicmF0ZSwKICAgICBXZWJQcm9jZXNzQ3Jhc2hlZCwKLSAgICBXaW5kb3dS
ZXNpemFibGUsCi0jaWYgRU5BQkxFKFdFQl9JTlRFTlRTKQotICAgIEludGVudFJlcXVlc3QsCi0j
ZW5kaWYKLSNpZiBFTkFCTEUoV0VCX0lOVEVOVFNfVEFHKQotICAgIEludGVudFNlcnZpY2VSZWdp
c3RyYXRpb24sCi0jZW5kaWYKKyAgICBXaW5kb3dSZXNpemFibGUKIH07CiAKIHRlbXBsYXRlIDxD
YWxsYmFja1R5cGU+CkBAIC0xOTgsMTIgKzE4Niw2IEBAIERFQ0xBUkVfRVdLX1ZJRVdfQ0FMTEJB
Q0soVVJMQ2hhbmdlZCwgInVybCxjaGFuZ2VkIiwgY29uc3QgY2hhciopOwogREVDTEFSRV9FV0tf
VklFV19DQUxMQkFDSyhWaWJyYXRlLCAidmlicmF0ZSIsIHVpbnQzMl90Kik7CiBERUNMQVJFX0VX
S19WSUVXX0NBTExCQUNLKFdlYlByb2Nlc3NDcmFzaGVkLCAid2VicHJvY2VzcyxjcmFzaGVkIiwg
Ym9vbCopOwogREVDTEFSRV9FV0tfVklFV19DQUxMQkFDSyhXaW5kb3dSZXNpemFibGUsICJ3aW5k
b3cscmVzaXphYmxlIiwgYm9vbCopOwotI2lmIEVOQUJMRShXRUJfSU5URU5UUykKLURFQ0xBUkVf
RVdLX1ZJRVdfQ0FMTEJBQ0soSW50ZW50UmVxdWVzdCwgImludGVudCxyZXF1ZXN0LG5ldyIsIEV3
a19JbnRlbnQqKTsKLSNlbmRpZgotI2lmIEVOQUJMRShXRUJfSU5URU5UU19UQUcpCi1ERUNMQVJF
X0VXS19WSUVXX0NBTExCQUNLKEludGVudFNlcnZpY2VSZWdpc3RyYXRpb24sICJpbnRlbnQsc2Vy
dmljZSxyZWdpc3RlciIsIEV3a19JbnRlbnRfU2VydmljZSopOwotI2VuZGlmCiAKIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2ludGVudC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfaW50ZW50LmNwcApkZWxldGVk
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzA4NjYwMS4uMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfaW50ZW50LmNwcAorKysgL2Rldi9udWxsCkBAIC0x
LDE3MiArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEyIEludGVsIENvcnBvcmF0aW9u
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0g
KiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0j
aW5jbHVkZSAiZXdrX2ludGVudC5oIgotCi0jaW5jbHVkZSAiV0tBUElDYXN0LmgiCi0jaW5jbHVk
ZSAiV0tBcnJheS5oIgotI2luY2x1ZGUgIldLRGljdGlvbmFyeS5oIgotI2luY2x1ZGUgIldLU3Ry
aW5nLmgiCi0jaW5jbHVkZSAiV0tVUkwuaCIKLSNpbmNsdWRlICJld2tfaW50ZW50X3ByaXZhdGUu
aCIKLSNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+Ci0KLXVzaW5nIG5hbWVzcGFjZSBXZWJL
aXQ7Ci0KLSNpZiBFTkFCTEUoV0VCX0lOVEVOVFMpCi1Fd2tJbnRlbnQ6OkV3a0ludGVudChXS0lu
dGVudERhdGFSZWYgaW50ZW50UmVmKQotICAgIDogbV93a0ludGVudChpbnRlbnRSZWYpCi0gICAg
LCBtX2FjdGlvbihBZG9wdFdLLCBXS0ludGVudERhdGFDb3B5QWN0aW9uKGludGVudFJlZikpCi0g
ICAgLCBtX3R5cGUoQWRvcHRXSywgV0tJbnRlbnREYXRhQ29weVR5cGUoaW50ZW50UmVmKSkKLSAg
ICAsIG1fc2VydmljZShBZG9wdFdLLCBXS0ludGVudERhdGFDb3B5U2VydmljZShpbnRlbnRSZWYp
KQoteyB9Ci0KLVdlYkludGVudERhdGEqIEV3a0ludGVudDo6d2ViSW50ZW50RGF0YSgpIGNvbnN0
Ci17Ci0gICAgcmV0dXJuIHRvSW1wbChtX3drSW50ZW50LmdldCgpKTsKLX0KLQotY29uc3QgY2hh
ciogRXdrSW50ZW50OjphY3Rpb24oKSBjb25zdAotewotICAgIHJldHVybiBtX2FjdGlvbjsKLX0K
LQotY29uc3QgY2hhciogRXdrSW50ZW50Ojp0eXBlKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV90
eXBlOwotfQotCi1jb25zdCBjaGFyKiBFd2tJbnRlbnQ6OnNlcnZpY2UoKSBjb25zdAotewotICAg
IHJldHVybiBtX3NlcnZpY2U7Ci19Ci0KLVdLUmV0YWluUHRyPFdLQXJyYXlSZWY+IEV3a0ludGVu
dDo6c3VnZ2VzdGlvbnMoKSBjb25zdAotewotICAgIHJldHVybiBhZG9wdFdLKFdLSW50ZW50RGF0
YUNvcHlTdWdnZXN0aW9ucyhtX3drSW50ZW50LmdldCgpKSk7Ci19Ci0KLVN0cmluZyBFd2tJbnRl
bnQ6OmV4dHJhKGNvbnN0IGNoYXIqIGtleSkgY29uc3QKLXsKLSAgICBXS1JldGFpblB0cjxXS1N0
cmluZ1JlZj4ga2V5UmVmID0gYWRvcHRXSyhXS1N0cmluZ0NyZWF0ZVdpdGhVVEY4Q1N0cmluZyhr
ZXkpKTsKLSAgICBXS1JldGFpblB0cjxXS1N0cmluZ1JlZj4gd2tWYWx1ZShBZG9wdFdLLCBXS0lu
dGVudERhdGFDb3B5RXh0cmFWYWx1ZShtX3drSW50ZW50LmdldCgpLCBrZXlSZWYuZ2V0KCkpKTsK
LSAgICByZXR1cm4gdG9JbXBsKHdrVmFsdWUuZ2V0KCkpLT5zdHJpbmcoKTsKLX0KLQotV0tSZXRh
aW5QdHI8V0tBcnJheVJlZj4gRXdrSW50ZW50OjpleHRyYUtleXMoKSBjb25zdAotewotICAgIFdL
UmV0YWluUHRyPFdLRGljdGlvbmFyeVJlZj4gd2tFeHRyYXMoQWRvcHRXSywgV0tJbnRlbnREYXRh
Q29weUV4dHJhcyhtX3drSW50ZW50LmdldCgpKSk7Ci0gICAgcmV0dXJuIGFkb3B0V0soV0tEaWN0
aW9uYXJ5Q29weUtleXMod2tFeHRyYXMuZ2V0KCkpKTsKLX0KLSNlbmRpZgotCi1jb25zdCBjaGFy
KiBld2tfaW50ZW50X2FjdGlvbl9nZXQoY29uc3QgRXdrX0ludGVudCogaW50ZW50KQotewotI2lm
IEVOQUJMRShXRUJfSU5URU5UUykKLSAgICBFV0tfT0JKX0dFVF9JTVBMX09SX1JFVFVSTihjb25z
dCBFd2tJbnRlbnQsIGludGVudCwgaW1wbCwgMCk7Ci0gICAgcmV0dXJuIGltcGwtPmFjdGlvbigp
OwotI2Vsc2UKLSAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoaW50ZW50LCAwKTsK
LSAgICByZXR1cm4gMDsKLSNlbmRpZgotfQotCi1jb25zdCBjaGFyKiBld2tfaW50ZW50X3R5cGVf
Z2V0KGNvbnN0IEV3a19JbnRlbnQqIGludGVudCkKLXsKLSNpZiBFTkFCTEUoV0VCX0lOVEVOVFMp
Ci0gICAgRVdLX09CSl9HRVRfSU1QTF9PUl9SRVRVUk4oY29uc3QgRXdrSW50ZW50LCBpbnRlbnQs
IGltcGwsIDApOwotICAgIHJldHVybiBpbXBsLT50eXBlKCk7Ci0jZWxzZQotICAgIEVJTkFfU0FG
RVRZX09OX05VTExfUkVUVVJOX1ZBTChpbnRlbnQsIDApOwotICAgIHJldHVybiAwOwotI2VuZGlm
Ci19Ci0KLWNvbnN0IGNoYXIqIGV3a19pbnRlbnRfc2VydmljZV9nZXQoY29uc3QgRXdrX0ludGVu
dCogaW50ZW50KQotewotI2lmIEVOQUJMRShXRUJfSU5URU5UUykKLSAgICBFV0tfT0JKX0dFVF9J
TVBMX09SX1JFVFVSTihjb25zdCBFd2tJbnRlbnQsIGludGVudCwgaW1wbCwgMCk7Ci0gICAgcmV0
dXJuIGltcGwtPnNlcnZpY2UoKTsKLSNlbHNlCi0gICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRV
Uk5fVkFMKGludGVudCwgMCk7Ci0gICAgcmV0dXJuIDA7Ci0jZW5kaWYKLX0KLQotRWluYV9MaXN0
KiBld2tfaW50ZW50X3N1Z2dlc3Rpb25zX2dldChjb25zdCBFd2tfSW50ZW50KiBpbnRlbnQpCi17
Ci0jaWYgRU5BQkxFKFdFQl9JTlRFTlRTKQotICAgIEVXS19PQkpfR0VUX0lNUExfT1JfUkVUVVJO
KGNvbnN0IEV3a0ludGVudCwgaW50ZW50LCBpbXBsLCAwKTsKLSAgICBFaW5hX0xpc3QqIGxpc3RP
ZlN1Z2dlc3Rpb25zID0gMDsKLSAgICBXS1JldGFpblB0cjxXS0FycmF5UmVmPiB3a1N1Z2dlc3Rp
b25zID0gaW1wbC0+c3VnZ2VzdGlvbnMoKTsKLSAgICBjb25zdCBzaXplX3QgbnVtU3VnZ2VzdGlv
bnMgPSBXS0FycmF5R2V0U2l6ZSh3a1N1Z2dlc3Rpb25zLmdldCgpKTsKLSAgICBmb3IgKHNpemVf
dCBpID0gMDsgaSA8IG51bVN1Z2dlc3Rpb25zOyArK2kpIHsKLSAgICAgICAgV0tVUkxSZWYgd2tT
dWdnZXN0aW9uID0gc3RhdGljX2Nhc3Q8V0tVUkxSZWY+KFdLQXJyYXlHZXRJdGVtQXRJbmRleCh3
a1N1Z2dlc3Rpb25zLmdldCgpLCBpKSk7Ci0gICAgICAgIGxpc3RPZlN1Z2dlc3Rpb25zID0gZWlu
YV9saXN0X2FwcGVuZChsaXN0T2ZTdWdnZXN0aW9ucywgZWluYV9zdHJpbmdzaGFyZV9hZGQodG9J
bXBsKHdrU3VnZ2VzdGlvbiktPnN0cmluZygpLnV0ZjgoKS5kYXRhKCkpKTsKLSAgICB9Ci0KLSAg
ICByZXR1cm4gbGlzdE9mU3VnZ2VzdGlvbnM7Ci0KLSNlbHNlCi0gICAgRUlOQV9TQUZFVFlfT05f
TlVMTF9SRVRVUk5fVkFMKGludGVudCwgMCk7Ci0gICAgcmV0dXJuIDA7Ci0jZW5kaWYKLX0KLQot
Y29uc3QgY2hhciogZXdrX2ludGVudF9leHRyYV9nZXQoY29uc3QgRXdrX0ludGVudCogaW50ZW50
LCBjb25zdCBjaGFyKiBrZXkpCi17Ci0jaWYgRU5BQkxFKFdFQl9JTlRFTlRTKQotICAgIEVXS19P
QkpfR0VUX0lNUExfT1JfUkVUVVJOKGNvbnN0IEV3a0ludGVudCwgaW50ZW50LCBpbXBsLCAwKTsK
LSAgICBTdHJpbmcgdmFsdWUgPSBpbXBsLT5leHRyYShrZXkpOwotCi0gICAgaWYgKHZhbHVlLmlz
RW1wdHkoKSkKLSAgICAgICAgcmV0dXJuIDA7Ci0KLSAgICByZXR1cm4gZWluYV9zdHJpbmdzaGFy
ZV9hZGQodmFsdWUudXRmOCgpLmRhdGEoKSk7Ci0jZWxzZQotICAgIEVJTkFfU0FGRVRZX09OX05V
TExfUkVUVVJOX1ZBTChpbnRlbnQsIDApOwotICAgIHJldHVybiAwOwotI2VuZGlmCi19Ci0KLUVp
bmFfTGlzdCogZXdrX2ludGVudF9leHRyYV9uYW1lc19nZXQoY29uc3QgRXdrX0ludGVudCogaW50
ZW50KQotewotI2lmIEVOQUJMRShXRUJfSU5URU5UUykKLSAgICBFV0tfT0JKX0dFVF9JTVBMX09S
X1JFVFVSTihjb25zdCBFd2tJbnRlbnQsIGludGVudCwgaW1wbCwgMCk7Ci0gICAgRWluYV9MaXN0
KiBsaXN0T2ZLZXlzID0gMDsKLSAgICBXS1JldGFpblB0cjxXS0FycmF5UmVmPiB3a0tleXMgPSBp
bXBsLT5leHRyYUtleXMoKTsKLSAgICBjb25zdCBzaXplX3QgbnVtS2V5cyA9IFdLQXJyYXlHZXRT
aXplKHdrS2V5cy5nZXQoKSk7Ci0gICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBudW1LZXlzOyAr
K2kpIHsKLSAgICAgICAgV0tTdHJpbmdSZWYgd2tLZXkgPSBzdGF0aWNfY2FzdDxXS1N0cmluZ1Jl
Zj4oV0tBcnJheUdldEl0ZW1BdEluZGV4KHdrS2V5cy5nZXQoKSwgaSkpOwotICAgICAgICBsaXN0
T2ZLZXlzID0gZWluYV9saXN0X2FwcGVuZChsaXN0T2ZLZXlzLCBlaW5hX3N0cmluZ3NoYXJlX2Fk
ZCh0b0ltcGwod2tLZXkpLT5zdHJpbmcoKS51dGY4KCkuZGF0YSgpKSk7Ci0gICAgfQotCi0gICAg
cmV0dXJuIGxpc3RPZktleXM7Ci0jZWxzZQotICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJO
X1ZBTChpbnRlbnQsIDApOwotICAgIHJldHVybiAwOwotI2VuZGlmCi19CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfaW50ZW50LmggYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfaW50ZW50LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDc1NDQ4ZjIuLjAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9lZmwvZXdrX2ludGVudC5oCisrKyAvZGV2L251bGwKQEAgLTEsMTI4ICswLDAgQEAKLS8q
Ci0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgSW50ZWwgQ29ycG9yYXRpb24uIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKLSAqIGFyZSBtZXQ6Ci0gKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKLSAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwotICogQU5EIEFOWSBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCi0g
KiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKLSAqIEJFIExJQUJMRSBGT1IgQU5Z
IERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAq
IENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBS
T0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVT
RSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZF
UiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBD
T05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICogVEhFIFBPU1NJQklMSVRZIE9GIFNV
Q0ggREFNQUdFLgotICovCi0KLS8qKgotICogQGZpbGUgICAgZXdrX2ludGVudC5oCi0gKiBAYnJp
ZWYgICBEZXNjcmliZXMgdGhlIEV3ayBJbnRlbnQgQVBJLgotICovCi0KLSNpZm5kZWYgZXdrX2lu
dGVudF9oCi0jZGVmaW5lIGV3a19pbnRlbnRfaAotCi0jaW5jbHVkZSA8RWluYS5oPgotCi0jaWZk
ZWYgX19jcGx1c3BsdXMKLWV4dGVybiAiQyIgewotI2VuZGlmCi0KLS8qKgotICogRGVjbGFyZSBF
d2tfSW50ZW50IGFzIEV3a19PYmplY3QuCi0gKgotICogQHNlZSBFd2tfT2JqZWN0Ci0gKi8KLXR5
cGVkZWYgc3RydWN0IEV3a09iamVjdCBFd2tfSW50ZW50OwotCi0vKioKLSAqIFF1ZXJ5IGFjdGlv
biBmb3IgdGhpcyBpbnRlbnQuCi0gKgotICogQHBhcmFtIGludGVudCBpbnRlbnQgaXRlbSB0byBx
dWVyeS4KLSAqCi0gKiBAcmV0dXJuIHRoZSBhY3Rpb24gcG9pbnRlciwgdGhhdCBtYXkgYmUgQGMg
TlVMTC4gVGhpcyBwb2ludGVyIGlzCi0gKiAgICAgICAgIGd1YXJhbnRlZWQgdG8gYmUgZWluYV9z
dHJpbmdzaGFyZSwgc28gd2hlbmV2ZXIgcG9zc2libGUKLSAqICAgICAgICAgc2F2ZSB5b3Vyc2Vs
ZiBzb21lIGNwdSBjeWNsZXMgYW5kIHVzZQotICogICAgICAgICBlaW5hX3N0cmluZ3NoYXJlX3Jl
ZigpIGluc3RlYWQgb2YgZWluYV9zdHJpbmdzaGFyZV9hZGQoKSBvcgotICogICAgICAgICBzdHJk
dXAoKS4KLSAqLwotRUFQSSBjb25zdCBjaGFyICpld2tfaW50ZW50X2FjdGlvbl9nZXQoY29uc3Qg
RXdrX0ludGVudCAqaW50ZW50KTsKLQotLyoqCi0gKiBRdWVyeSB0eXBlIGZvciB0aGlzIGludGVu
dC4KLSAqCi0gKiBAcGFyYW0gaW50ZW50IGludGVudCBpdGVtIHRvIHF1ZXJ5LgotICoKLSAqIEBy
ZXR1cm4gdGhlIHR5cGUgcG9pbnRlciwgdGhhdCBtYXkgYmUgQGMgTlVMTC4gVGhpcyBwb2ludGVy
IGlzCi0gKiAgICAgICAgIGd1YXJhbnRlZWQgdG8gYmUgZWluYV9zdHJpbmdzaGFyZSwgc28gd2hl
bmV2ZXIgcG9zc2libGUKLSAqICAgICAgICAgc2F2ZSB5b3Vyc2VsZiBzb21lIGNwdSBjeWNsZXMg
YW5kIHVzZQotICogICAgICAgICBlaW5hX3N0cmluZ3NoYXJlX3JlZigpIGluc3RlYWQgb2YgZWlu
YV9zdHJpbmdzaGFyZV9hZGQoKSBvcgotICogICAgICAgICBzdHJkdXAoKS4KLSAqLwotRUFQSSBj
b25zdCBjaGFyICpld2tfaW50ZW50X3R5cGVfZ2V0KGNvbnN0IEV3a19JbnRlbnQgKmludGVudCk7
Ci0KLS8qKgotICogUXVlcnkgc2VydmljZSBmb3IgdGhpcyBpbnRlbnQuCi0gKgotICogQHBhcmFt
IGludGVudCBpbnRlbnQgaXRlbSB0byBxdWVyeS4KLSAqCi0gKiBAcmV0dXJuIHRoZSBzZXJ2aWNl
IHBvaW50ZXIsIHRoYXQgbWF5IGJlIEBjIE5VTEwuIFRoaXMgcG9pbnRlciBpcwotICogICAgICAg
ICBndWFyYW50ZWVkIHRvIGJlIGVpbmFfc3RyaW5nc2hhcmUsIHNvIHdoZW5ldmVyIHBvc3NpYmxl
Ci0gKiAgICAgICAgIHNhdmUgeW91cnNlbGYgc29tZSBjcHUgY3ljbGVzIGFuZCB1c2UKLSAqICAg
ICAgICAgZWluYV9zdHJpbmdzaGFyZV9yZWYoKSBpbnN0ZWFkIG9mIGVpbmFfc3RyaW5nc2hhcmVf
YWRkKCkgb3IKLSAqICAgICAgICAgc3RyZHVwKCkuCi0gKi8KLUVBUEkgY29uc3QgY2hhciAqZXdr
X2ludGVudF9zZXJ2aWNlX2dldChjb25zdCBFd2tfSW50ZW50ICppbnRlbnQpOwotCi0vKioKLSAq
IFF1ZXJ5IHN1Z2dlc3Rpb25zIGZvciB0aGlzIGludGVudC4KLSAqCi0gKiBUaGlzIGZ1bmN0aW9u
IHByb3ZpZGVzIGEgbGlzdCBvZiAoYWJzb2x1dGUpIHN1Z2dlc3RlZCBTZXJ2aWNlIFVSTHMgb2Yg
d2hpY2ggdGhlIENsaWVudAotICogaXMgYXdhcmUgYW5kIHdoaWNoIGNhbiBoYW5kbGUgdGhlIGlu
dGVudC4KLSAqCi0gKiBAcGFyYW0gaW50ZW50IGludGVudCBpdGVtIHRvIHF1ZXJ5LgotICoKLSAq
IEByZXR1cm4gQGMgRWluYV9MaXN0IHdpdGggc3VnZ2VzdGVkIHNlcnZpY2UgVVJMcyBvbiBzdWNj
ZXNzLCBvciBAYyBOVUxMIG9uIGZhaWx1cmUsCi0gKiAgICAgICAgIHRoZSBFaW5hX0xpc3QgYW5k
IGl0cyBpdGVtcyBzaG91bGQgYmUgZnJlZWQgYWZ0ZXIgdXNlLiBVc2UgZWluYV9zdHJpbmdzaGFy
ZV9kZWwoKQotICogICAgICAgICB0byBmcmVlIHRoZSBpdGVtcy4KLSAqLwotRUFQSSBFaW5hX0xp
c3QgKmV3a19pbnRlbnRfc3VnZ2VzdGlvbnNfZ2V0KGNvbnN0IEV3a19JbnRlbnQgKmludGVudCk7
Ci0KLS8qKgotICogUmV0cmlldmVzIHRoZSB2YWx1ZSAoaWYgYW55KSBmcm9tIHRoZSBleHRyYSBk
YXRhIGRpY3Rpb25hcnkgdGhpcyBpbnRlbnQgd2FzIGNvbnN0cnVjdGVkIHdpdGguCi0gKgotICog
VGhlIHJldHVybmVkIHN0cmluZyBzaG91bGQgYmUgZnJlZWQgYnkgZWluYV9zdHJpbmdzaGFyZV9k
ZWwoKSBhZnRlciB1c2UuCi0gKgotICogQHBhcmFtIGludGVudCBpbnRlbnQgaXRlbSB0byBxdWVy
eS4KLSAqIEBwYXJhbSBrZXkga2V5IHRvIHF1ZXJ5IGluIHRoZSBkaWN0aW9uYXJ5LgotICoKLSAq
IEByZXR1cm4gYSBuZXdseSBhbGxvY2F0ZWQgc3RyaW5nIG9yIEBjIE5VTEwgaW4gY2FzZSBvZiBl
cnJvciBvciBpZiB0aGUga2V5IGRvZXMgbm90IGV4aXN0LgotICovCi1FQVBJIGNvbnN0IGNoYXIg
KmV3a19pbnRlbnRfZXh0cmFfZ2V0KGNvbnN0IEV3a19JbnRlbnQgKmludGVudCwgY29uc3QgY2hh
ciAqa2V5KTsKLQotLyoqCi0gKiBSZXRyaWV2ZSBhIGxpc3Qgb2YgdGhlIG5hbWVzIG9mIGV4dHJh
IG1ldGFkYXRhIGFzc29jaWF0ZWQgd2l0aCB0aGUgaW50ZW50LgotICoKLSAqIFRoZSBpdGVtIG9m
IGEgcmV0dXJuZWQgbGlzdCBzaG91bGQgYmUgZnJlZWQgYnkgZWluYV9zdHJpbmdzaGFyZV9kZWwo
KSBhZnRlciB1c2UuCi0gKgotICogQHBhcmFtIGludGVudCBpbnRlbnQgaXRlbSB0byBxdWVyeS4K
LSAqCi0gKiBAcmV0dXJuIEBjIEVpbmFfTGlzdCB3aXRoIG5hbWVzIG9mIGV4dHJhIG1ldGFkYXRh
IG9uIHN1Y2Nlc3MsIG9yIEBjIE5VTEwgb24gZmFpbHVyZSwKLSAqICAgICAgICAgdGhlIEVpbmFf
TGlzdCBhbmQgaXRzIGl0ZW1zIHNob3VsZCBiZSBmcmVlZCBhZnRlciB1c2UuIFVzZSBlaW5hX3N0
cmluZ3NoYXJlX2RlbCgpCi0gKiAgICAgICAgIHRvIGZyZWUgdGhlIGl0ZW1zLgotICovCi1FQVBJ
IEVpbmFfTGlzdCAqZXdrX2ludGVudF9leHRyYV9uYW1lc19nZXQoY29uc3QgRXdrX0ludGVudCAq
aW50ZW50KTsKLQotI2lmZGVmIF9fY3BsdXNwbHVzCi19Ci0jZW5kaWYKLSNlbmRpZiAvLyBld2tf
aW50ZW50X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3
a19pbnRlbnRfcHJpdmF0ZS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdr
X2ludGVudF9wcml2YXRlLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE5OWVjNzku
LjAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvZXdrX2ludGVu
dF9wcml2YXRlLmgKKysrIC9kZXYvbnVsbApAQCAtMSw3NSArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDEyIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoK
LSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQg
SVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVE
IFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJ
RUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElD
VUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUg
SU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBP
RgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
IFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lT
RSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJF
LCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
LSAqLwotCi0jaWZuZGVmIGV3a19pbnRlbnRfcHJpdmF0ZV9oCi0jZGVmaW5lIGV3a19pbnRlbnRf
cHJpdmF0ZV9oCi0KLSNpZiBFTkFCTEUoV0VCX0lOVEVOVFMpCi0KLSNpbmNsdWRlICJXS0VpbmFT
aGFyZWRTdHJpbmcuaCIKLSNpbmNsdWRlICJXS0ludGVudERhdGEuaCIKLSNpbmNsdWRlICJXS1Jl
dGFpblB0ci5oIgotI2luY2x1ZGUgImV3a19vYmplY3RfcHJpdmF0ZS5oIgotI2luY2x1ZGUgPFdl
YktpdDIvV0tCYXNlLmg+Ci0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KLSNpbmNsdWRlIDx3
dGYvdGV4dC9XVEZTdHJpbmcuaD4KLQotbmFtZXNwYWNlIFdlYktpdCB7Ci1jbGFzcyBXZWJJbnRl
bnREYXRhOwotfQotCi0vKioKLSAqIFxzdHJ1Y3QgIEV3a0ludGVudAotICogQGJyaWVmICAgQ29u
dGFpbnMgdGhlIGludGVudCBkYXRhLgotICovCi1jbGFzcyBFd2tJbnRlbnQgOiBwdWJsaWMgRXdr
T2JqZWN0IHsKLXB1YmxpYzoKLSAgICBFV0tfT0JKRUNUX0RFQ0xBUkUoRXdrSW50ZW50KQotCi0g
ICAgc3RhdGljIFBhc3NSZWZQdHI8RXdrSW50ZW50PiBjcmVhdGUoV0tJbnRlbnREYXRhUmVmIGlu
dGVudFJlZikKLSAgICB7Ci0gICAgICAgIHJldHVybiBhZG9wdFJlZihuZXcgRXdrSW50ZW50KGlu
dGVudFJlZikpOwotICAgIH0KLQotICAgIFdlYktpdDo6V2ViSW50ZW50RGF0YSogd2ViSW50ZW50
RGF0YSgpIGNvbnN0OwotICAgIGNvbnN0IGNoYXIqIGFjdGlvbigpIGNvbnN0OwotICAgIGNvbnN0
IGNoYXIqIHR5cGUoKSBjb25zdDsKLSAgICBjb25zdCBjaGFyKiBzZXJ2aWNlKCkgY29uc3Q7Ci0g
ICAgV0tSZXRhaW5QdHI8V0tBcnJheVJlZj4gc3VnZ2VzdGlvbnMoKSBjb25zdDsKLSAgICBTdHJp
bmcgZXh0cmEoY29uc3QgY2hhcioga2V5KSBjb25zdDsKLSAgICBXS1JldGFpblB0cjxXS0FycmF5
UmVmPiBleHRyYUtleXMoKSBjb25zdDsKLQotcHJpdmF0ZToKLSAgICBleHBsaWNpdCBFd2tJbnRl
bnQoV0tJbnRlbnREYXRhUmVmIGludGVudFJlZik7Ci0KLSAgICBXS1JldGFpblB0cjxXS0ludGVu
dERhdGFSZWY+IG1fd2tJbnRlbnQ7Ci0gICAgV0tFaW5hU2hhcmVkU3RyaW5nIG1fYWN0aW9uOwot
ICAgIFdLRWluYVNoYXJlZFN0cmluZyBtX3R5cGU7Ci0gICAgV0tFaW5hU2hhcmVkU3RyaW5nIG1f
c2VydmljZTsKLX07Ci0KLSNlbmRpZiAvLyBFTkFCTEUoV0VCX0lOVEVOVFMpCi0KLSNlbmRpZiAv
LyBld2tfaW50ZW50X3ByaXZhdGVfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9lZmwvZXdrX2ludGVudF9zZXJ2aWNlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZWZsL2V3a19pbnRlbnRfc2VydmljZS5jcHAKZGVsZXRlZCBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IGI4NmQ0NmEuLjAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9lZmwvZXdrX2ludGVudF9zZXJ2aWNlLmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDEyNiAr
MCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEyIEludGVsIENvcnBvcmF0aW9uLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUg
bWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVk
ZSAiZXdrX2ludGVudF9zZXJ2aWNlLmgiCi0KLSNpbmNsdWRlICJJbnRlbnRTZXJ2aWNlSW5mby5o
IgotI2luY2x1ZGUgIldLQVBJQ2FzdC5oIgotI2luY2x1ZGUgIldLUmV0YWluUHRyLmgiCi0jaW5j
bHVkZSAiV0tVUkwuaCIKLSNpbmNsdWRlICJld2tfaW50ZW50X3NlcnZpY2VfcHJpdmF0ZS5oIgot
I2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KLQotdXNpbmcgbmFtZXNwYWNlIFdlYktpdDsK
LQotI2lmIEVOQUJMRShXRUJfSU5URU5UU19UQUcpCi1Fd2tJbnRlbnRTZXJ2aWNlOjpFd2tJbnRl
bnRTZXJ2aWNlKFdLSW50ZW50U2VydmljZUluZm9SZWYgc2VydmljZVJlZikKLSAgICA6IG1fYWN0
aW9uKEFkb3B0V0ssIFdLSW50ZW50U2VydmljZUluZm9Db3B5QWN0aW9uKHNlcnZpY2VSZWYpKQot
ICAgICwgbV90eXBlKEFkb3B0V0ssIFdLSW50ZW50U2VydmljZUluZm9Db3B5VHlwZShzZXJ2aWNl
UmVmKSkKLSAgICAsIG1faHJlZihBZG9wdFdLLCBXS0ludGVudFNlcnZpY2VJbmZvQ29weUhyZWYo
c2VydmljZVJlZikpCi0gICAgLCBtX3RpdGxlKEFkb3B0V0ssIFdLSW50ZW50U2VydmljZUluZm9D
b3B5VGl0bGUoc2VydmljZVJlZikpCi0gICAgLCBtX2Rpc3Bvc2l0aW9uKEFkb3B0V0ssIFdLSW50
ZW50U2VydmljZUluZm9Db3B5RGlzcG9zaXRpb24oc2VydmljZVJlZikpCi17IH0KLQotY29uc3Qg
Y2hhciogRXdrSW50ZW50U2VydmljZTo6YWN0aW9uKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV9h
Y3Rpb247Ci19Ci0KLWNvbnN0IGNoYXIqIEV3a0ludGVudFNlcnZpY2U6OnR5cGUoKSBjb25zdAot
ewotICAgIHJldHVybiBtX3R5cGU7Ci19Ci0KLWNvbnN0IGNoYXIqIEV3a0ludGVudFNlcnZpY2U6
OmhyZWYoKSBjb25zdAotewotICAgIHJldHVybiBtX2hyZWY7Ci19Ci0KLWNvbnN0IGNoYXIqIEV3
a0ludGVudFNlcnZpY2U6OnRpdGxlKCkgY29uc3QKLXsKLSAgICByZXR1cm4gbV90aXRsZTsKLX0K
LQotY29uc3QgY2hhciogRXdrSW50ZW50U2VydmljZTo6ZGlzcG9zaXRpb24oKSBjb25zdAotewot
ICAgIHJldHVybiBtX2Rpc3Bvc2l0aW9uOwotfQotI2VuZGlmCi0KLWNvbnN0IGNoYXIqIGV3a19p
bnRlbnRfc2VydmljZV9hY3Rpb25fZ2V0KGNvbnN0IEV3a19JbnRlbnRfU2VydmljZSogc2Vydmlj
ZSkKLXsKLSNpZiBFTkFCTEUoV0VCX0lOVEVOVFNfVEFHKQotICAgIEVXS19PQkpfR0VUX0lNUExf
T1JfUkVUVVJOKGNvbnN0IEV3a0ludGVudFNlcnZpY2UsIHNlcnZpY2UsIGltcGwsIDApOwotICAg
IHJldHVybiBpbXBsLT5hY3Rpb24oKTsKLSNlbHNlCi0gICAgRUlOQV9TQUZFVFlfT05fTlVMTF9S
RVRVUk5fVkFMKHNlcnZpY2UsIDApOwotICAgIHJldHVybiAwOwotI2VuZGlmCi19Ci0KLWNvbnN0
IGNoYXIqIGV3a19pbnRlbnRfc2VydmljZV90eXBlX2dldChjb25zdCBFd2tfSW50ZW50X1NlcnZp
Y2UqIHNlcnZpY2UpCi17Ci0jaWYgRU5BQkxFKFdFQl9JTlRFTlRTX1RBRykKLSAgICBFV0tfT0JK
X0dFVF9JTVBMX09SX1JFVFVSTihjb25zdCBFd2tJbnRlbnRTZXJ2aWNlLCBzZXJ2aWNlLCBpbXBs
LCAwKTsKLSAgICByZXR1cm4gaW1wbC0+dHlwZSgpOwotI2Vsc2UKLSAgICBFSU5BX1NBRkVUWV9P
Tl9OVUxMX1JFVFVSTl9WQUwoc2VydmljZSwgMCk7Ci0gICAgcmV0dXJuIDA7Ci0jZW5kaWYKLX0K
LQotY29uc3QgY2hhciogZXdrX2ludGVudF9zZXJ2aWNlX2hyZWZfZ2V0KGNvbnN0IEV3a19JbnRl
bnRfU2VydmljZSogc2VydmljZSkKLXsKLSNpZiBFTkFCTEUoV0VCX0lOVEVOVFNfVEFHKQotICAg
IEVXS19PQkpfR0VUX0lNUExfT1JfUkVUVVJOKGNvbnN0IEV3a0ludGVudFNlcnZpY2UsIHNlcnZp
Y2UsIGltcGwsIDApOwotICAgIHJldHVybiBpbXBsLT5ocmVmKCk7Ci0jZWxzZQotICAgIEVJTkFf
U0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChzZXJ2aWNlLCAwKTsKLSAgICByZXR1cm4gMDsKLSNl
bmRpZgotfQotCi1jb25zdCBjaGFyKiBld2tfaW50ZW50X3NlcnZpY2VfdGl0bGVfZ2V0KGNvbnN0
IEV3a19JbnRlbnRfU2VydmljZSogc2VydmljZSkKLXsKLSNpZiBFTkFCTEUoV0VCX0lOVEVOVFNf
VEFHKQotICAgIEVXS19PQkpfR0VUX0lNUExfT1JfUkVUVVJOKGNvbnN0IEV3a0ludGVudFNlcnZp
Y2UsIHNlcnZpY2UsIGltcGwsIDApOwotICAgIHJldHVybiBpbXBsLT50aXRsZSgpOwotI2Vsc2UK
LSAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoc2VydmljZSwgMCk7Ci0gICAgcmV0
dXJuIDA7Ci0jZW5kaWYKLX0KLQotY29uc3QgY2hhciogZXdrX2ludGVudF9zZXJ2aWNlX2Rpc3Bv
c2l0aW9uX2dldChjb25zdCBFd2tfSW50ZW50X1NlcnZpY2UqIHNlcnZpY2UpCi17Ci0jaWYgRU5B
QkxFKFdFQl9JTlRFTlRTX1RBRykKLSAgICBFV0tfT0JKX0dFVF9JTVBMX09SX1JFVFVSTihjb25z
dCBFd2tJbnRlbnRTZXJ2aWNlLCBzZXJ2aWNlLCBpbXBsLCAwKTsKLSAgICByZXR1cm4gaW1wbC0+
ZGlzcG9zaXRpb24oKTsKLSNlbHNlCi0gICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFM
KHNlcnZpY2UsIDApOwotICAgIHJldHVybiAwOwotI2VuZGlmCi19CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfaW50ZW50X3NlcnZpY2UuaCBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19pbnRlbnRfc2VydmljZS5oCmRlbGV0ZWQg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxMmU1ODA4Li4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a19pbnRlbnRfc2VydmljZS5oCisrKyAvZGV2L251bGwK
QEAgLTEsMTE2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgSW50ZWwgQ29ycG9y
YXRpb24uIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVz
ZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmlj
YXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlv
bnMKLSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVz
dCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmli
dXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVy
aWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FS
RSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMn
JwotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCi0gKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5U
QUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0gKiBQVVJQT1NFIEFSRSBESVND
TEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMK
LSAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAq
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgotICog
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLS8qKgotICogQGZpbGUgZXdr
X2ludGVudF9zZXJ2aWNlLmgKLSAqIEBicmllZiBEZXNjcmliZXMgdGhlIEV3ayBJbnRlbnQgU2Vy
dmljZSBBUEkuCi0gKi8KLQotI2lmbmRlZiBld2tfaW50ZW50X3NlcnZpY2VfaAotI2RlZmluZSBl
d2tfaW50ZW50X3NlcnZpY2VfaAotCi0jaW5jbHVkZSA8RXZhcy5oPgotCi0jaWZkZWYgX19jcGx1
c3BsdXMKLWV4dGVybiAiQyIgewotI2VuZGlmCi0KLS8qKgotICogRGVjbGFyZSBFd2tfSW50ZW50
X1NlcnZpY2UgYXMgRXdrX09iamVjdC4KLSAqCi0gKiBAc2VlIEV3a19PYmplY3QKLSAqLwotdHlw
ZWRlZiBzdHJ1Y3QgRXdrT2JqZWN0IEV3a19JbnRlbnRfU2VydmljZTsKLQotLyoqCi0gKiBRdWVy
eSBhY3Rpb24gZm9yIHRoaXMgaW50ZW50IHNlcnZpY2UuCi0gKgotICogQHBhcmFtIHNlcnZpY2Ug
c2VydmljZSBpdGVtIHRvIHF1ZXJ5LgotICoKLSAqIEByZXR1cm4gdGhlIGFjdGlvbiBwb2ludGVy
LCB0aGF0IG1heSBiZSBAYyBOVUxMLiBUaGlzIHBvaW50ZXIgaXMKLSAqIGd1YXJhbnRlZWQgdG8g
YmUgZWluYV9zdHJpbmdzaGFyZSwgc28gd2hlbmV2ZXIgcG9zc2libGUKLSAqIHNhdmUgeW91cnNl
bGYgc29tZSBjcHUgY3ljbGVzIGFuZCB1c2UKLSAqIGVpbmFfc3RyaW5nc2hhcmVfcmVmKCkgaW5z
dGVhZCBvZiBlaW5hX3N0cmluZ3NoYXJlX2FkZCgpIG9yCi0gKiBzdHJkdXAoKS4KLSAqLwotRUFQ
SSBjb25zdCBjaGFyICpld2tfaW50ZW50X3NlcnZpY2VfYWN0aW9uX2dldChjb25zdCBFd2tfSW50
ZW50X1NlcnZpY2UgKnNlcnZpY2UpOwotCi0vKioKLSAqIFF1ZXJ5IHR5cGUgZm9yIHRoaXMgaW50
ZW50IHNlcnZpY2UuCi0gKgotICogQHBhcmFtIHNlcnZpY2Ugc2VydmljZSBpdGVtIHRvIHF1ZXJ5
LgotICoKLSAqIEByZXR1cm4gdGhlIHR5cGUgcG9pbnRlciwgdGhhdCBtYXkgYmUgQGMgTlVMTC4g
VGhpcyBwb2ludGVyIGlzCi0gKiBndWFyYW50ZWVkIHRvIGJlIGVpbmFfc3RyaW5nc2hhcmUsIHNv
IHdoZW5ldmVyIHBvc3NpYmxlCi0gKiBzYXZlIHlvdXJzZWxmIHNvbWUgY3B1IGN5Y2xlcyBhbmQg
dXNlCi0gKiBlaW5hX3N0cmluZ3NoYXJlX3JlZigpIGluc3RlYWQgb2YgZWluYV9zdHJpbmdzaGFy
ZV9hZGQoKSBvcgotICogc3RyZHVwKCkuCi0gKi8KLUVBUEkgY29uc3QgY2hhciAqZXdrX2ludGVu
dF9zZXJ2aWNlX3R5cGVfZ2V0KGNvbnN0IEV3a19JbnRlbnRfU2VydmljZSAqc2VydmljZSk7Ci0K
LS8qKgotICogUXVlcnkgVVJMIGZvciB0aGlzIGludGVudCBzZXJ2aWNlLgotICoKLSAqIEBwYXJh
bSBzZXJ2aWNlIHNlcnZpY2UgaXRlbSB0byBxdWVyeS4KLSAqCi0gKiBAcmV0dXJuIHRoZSBVUkwg
cG9pbnRlciwgdGhhdCBtYXkgYmUgQGMgTlVMTC4gVGhpcyBwb2ludGVyIGlzCi0gKiBndWFyYW50
ZWVkIHRvIGJlIGVpbmFfc3RyaW5nc2hhcmUsIHNvIHdoZW5ldmVyIHBvc3NpYmxlCi0gKiBzYXZl
IHlvdXJzZWxmIHNvbWUgY3B1IGN5Y2xlcyBhbmQgdXNlCi0gKiBlaW5hX3N0cmluZ3NoYXJlX3Jl
ZigpIGluc3RlYWQgb2YgZWluYV9zdHJpbmdzaGFyZV9hZGQoKSBvcgotICogc3RyZHVwKCkuCi0g
Ki8KLUVBUEkgY29uc3QgY2hhciAqZXdrX2ludGVudF9zZXJ2aWNlX2hyZWZfZ2V0KGNvbnN0IEV3
a19JbnRlbnRfU2VydmljZSAqc2VydmljZSk7Ci0KLS8qKgotICogUXVlcnkgdGl0bGUgZm9yIHRo
aXMgaW50ZW50IHNlcnZpY2UuCi0gKgotICogQHBhcmFtIHNlcnZpY2Ugc2VydmljZSBpdGVtIHRv
IHF1ZXJ5LgotICoKLSAqIEByZXR1cm4gdGhlIHRpdGxlIHBvaW50ZXIsIHRoYXQgbWF5IGJlIEBj
IE5VTEwuIFRoaXMgcG9pbnRlciBpcwotICogZ3VhcmFudGVlZCB0byBiZSBlaW5hX3N0cmluZ3No
YXJlLCBzbyB3aGVuZXZlciBwb3NzaWJsZQotICogc2F2ZSB5b3Vyc2VsZiBzb21lIGNwdSBjeWNs
ZXMgYW5kIHVzZQotICogZWluYV9zdHJpbmdzaGFyZV9yZWYoKSBpbnN0ZWFkIG9mIGVpbmFfc3Ry
aW5nc2hhcmVfYWRkKCkgb3IKLSAqIHN0cmR1cCgpLgotICovCi1FQVBJIGNvbnN0IGNoYXIgKmV3
a19pbnRlbnRfc2VydmljZV90aXRsZV9nZXQoY29uc3QgRXdrX0ludGVudF9TZXJ2aWNlICpzZXJ2
aWNlKTsKLQotLyoqCi0gKiBRdWVyeSBkaXNwb3NpdGlvbiBmb3IgdGhpcyBpbnRlbnQgc2Vydmlj
ZS4KLSAqCi0gKiBAcGFyYW0gc2VydmljZSBzZXJ2aWNlIGl0ZW0gdG8gcXVlcnkuCi0gKgotICog
QHJldHVybiB0aGUgZGlzcG9zaXRpb24gcG9pbnRlciwgdGhhdCBtYXkgYmUgQGMgTlVMTC4gVGhp
cyBwb2ludGVyIGlzCi0gKiBndWFyYW50ZWVkIHRvIGJlIGVpbmFfc3RyaW5nc2hhcmUsIHNvIHdo
ZW5ldmVyIHBvc3NpYmxlCi0gKiBzYXZlIHlvdXJzZWxmIHNvbWUgY3B1IGN5Y2xlcyBhbmQgdXNl
Ci0gKiBlaW5hX3N0cmluZ3NoYXJlX3JlZigpIGluc3RlYWQgb2YgZWluYV9zdHJpbmdzaGFyZV9h
ZGQoKSBvcgotICogc3RyZHVwKCkuCi0gKi8KLUVBUEkgY29uc3QgY2hhciAqZXdrX2ludGVudF9z
ZXJ2aWNlX2Rpc3Bvc2l0aW9uX2dldChjb25zdCBFd2tfSW50ZW50X1NlcnZpY2UgKnNlcnZpY2Up
OwotCi0jaWZkZWYgX19jcGx1c3BsdXMKLX0KLSNlbmRpZgotCi0jZW5kaWYgLy8gZXdrX2ludGVu
dF9zZXJ2aWNlX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZs
L2V3a19pbnRlbnRfc2VydmljZV9wcml2YXRlLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2VmbC9ld2tfaW50ZW50X3NlcnZpY2VfcHJpdmF0ZS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCA3YTk4YTY0Li4wMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvZWZsL2V3a19pbnRlbnRfc2VydmljZV9wcml2YXRlLmgKKysrIC9kZXYvbnVsbApAQCAt
MSw2OCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDEyIEludGVsIENvcnBvcmF0aW9u
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0g
KiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAq
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBF
WEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIGV3a19pbnRlbnRfc2Vy
dmljZV9wcml2YXRlX2gKLSNkZWZpbmUgZXdrX2ludGVudF9zZXJ2aWNlX3ByaXZhdGVfaAotCi0j
aWYgRU5BQkxFKFdFQl9JTlRFTlRTX1RBRykKLQotI2luY2x1ZGUgIldLRWluYVNoYXJlZFN0cmlu
Zy5oIgotI2luY2x1ZGUgIldLSW50ZW50U2VydmljZUluZm8uaCIKLSNpbmNsdWRlICJld2tfb2Jq
ZWN0X3ByaXZhdGUuaCIKLSNpbmNsdWRlIDxXZWJLaXQyL1dLQmFzZS5oPgotI2luY2x1ZGUgPHd0
Zi9QYXNzUmVmUHRyLmg+Ci0KLS8qKgotICogXHN0cnVjdCBFd2tJbnRlbnRTZXJ2aWNlCi0gKiBA
YnJpZWYgQ29udGFpbnMgdGhlIGludGVudCBzZXJ2aWNlIGRhdGEuCi0gKi8KLWNsYXNzIEV3a0lu
dGVudFNlcnZpY2UgOiBwdWJsaWMgRXdrT2JqZWN0IHsKLXB1YmxpYzoKLSAgICBFV0tfT0JKRUNU
X0RFQ0xBUkUoRXdrSW50ZW50U2VydmljZSkKLQotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEV3a0lu
dGVudFNlcnZpY2U+IGNyZWF0ZShXS0ludGVudFNlcnZpY2VJbmZvUmVmIHNlcnZpY2VSZWYpCi0g
ICAgewotICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEV3a0ludGVudFNlcnZpY2Uoc2Vydmlj
ZVJlZikpOwotICAgIH0KLQotICAgIGNvbnN0IGNoYXIqIGFjdGlvbigpIGNvbnN0OwotICAgIGNv
bnN0IGNoYXIqIHR5cGUoKSBjb25zdDsKLSAgICBjb25zdCBjaGFyKiBocmVmKCkgY29uc3Q7Ci0g
ICAgY29uc3QgY2hhciogdGl0bGUoKSBjb25zdDsKLSAgICBjb25zdCBjaGFyKiBkaXNwb3NpdGlv
bigpIGNvbnN0OwotCi1wcml2YXRlOgotICAgIGV4cGxpY2l0IEV3a0ludGVudFNlcnZpY2UoV0tJ
bnRlbnRTZXJ2aWNlSW5mb1JlZiBzZXJ2aWNlUmVmKTsKLQotICAgIFdLRWluYVNoYXJlZFN0cmlu
ZyBtX2FjdGlvbjsKLSAgICBXS0VpbmFTaGFyZWRTdHJpbmcgbV90eXBlOwotICAgIFdLRWluYVNo
YXJlZFN0cmluZyBtX2hyZWY7Ci0gICAgV0tFaW5hU2hhcmVkU3RyaW5nIG1fdGl0bGU7Ci0gICAg
V0tFaW5hU2hhcmVkU3RyaW5nIG1fZGlzcG9zaXRpb247Ci19OwotCi0jZW5kaWYgLy8gRU5BQkxF
KFdFQl9JTlRFTlRTX1RBRykKLQotI2VuZGlmIC8vIGV3a19pbnRlbnRfc2VydmljZV9wcml2YXRl
X2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmNwcAppbmRl
eCA3MmE2YWZhLi4yMzJjYzBmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2VmbC9ld2tfdmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9l
ZmwvZXdrX3ZpZXcuY3BwCkBAIC00OCw3ICs0OCw2IEBACiAjaW5jbHVkZSAiZXdrX2NvbnRleHQu
aCIKICNpbmNsdWRlICJld2tfY29udGV4dF9wcml2YXRlLmgiCiAjaW5jbHVkZSAiZXdrX2Zhdmlj
b25fZGF0YWJhc2VfcHJpdmF0ZS5oIgotI2luY2x1ZGUgImV3a19pbnRlbnRfcHJpdmF0ZS5oIgog
I2luY2x1ZGUgImV3a19wcml2YXRlLmgiCiAjaW5jbHVkZSAiZXdrX3NldHRpbmdzX3ByaXZhdGUu
aCIKICNpbmNsdWRlICJld2tfdmlld19wcml2YXRlLmgiCkBAIC03MDYsMjQgKzcwNSw2IEBAIEVp
bmFfQm9vbCBld2tfdmlld19mb3J3YXJkKEV2YXNfT2JqZWN0KiBld2tWaWV3KQogICAgIHJldHVy
biBmYWxzZTsKIH0KIAotRWluYV9Cb29sIGV3a192aWV3X2ludGVudF9kZWxpdmVyKEV2YXNfT2Jq
ZWN0KiBld2tWaWV3LCBFd2tfSW50ZW50KiBpbnRlbnQpCi17Ci0jaWYgRU5BQkxFKFdFQl9JTlRF
TlRTKQotICAgIEVXS19WSUVXX0lNUExfR0VUX09SX1JFVFVSTihld2tWaWV3LCBpbXBsLCBmYWxz
ZSk7Ci0gICAgRXdrSW50ZW50KiBpbnRlbnRJbXBsID0gZXdrX29iamVjdF9jYXN0PEV3a0ludGVu
dCo+KGludGVudCk7Ci0gICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKGludGVudElt
cGwsIGZhbHNlKTsKLQotICAgIFdlYlBhZ2VQcm94eSogcGFnZSA9IGltcGwtPnBhZ2UoKTsKLSAg
ICBwYWdlLT5kZWxpdmVySW50ZW50VG9GcmFtZShwYWdlLT5tYWluRnJhbWUoKSwgaW50ZW50SW1w
bC0+d2ViSW50ZW50RGF0YSgpKTsKLQotICAgIHJldHVybiB0cnVlOwotI2Vsc2UKLSAgICBVTlVT
RURfUEFSQU0oZXdrVmlldyk7Ci0gICAgVU5VU0VEX1BBUkFNKGludGVudCk7Ci0gICAgcmV0dXJu
IGZhbHNlOwotI2VuZGlmCi19Ci0KIEVpbmFfQm9vbCBld2tfdmlld19iYWNrX3Bvc3NpYmxlKEV2
YXNfT2JqZWN0KiBld2tWaWV3KQogewogICAgIEVXS19WSUVXX0lNUExfR0VUX09SX1JFVFVSTihl
d2tWaWV3LCBpbXBsLCBmYWxzZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL2VmbC9ld2tfdmlldy5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwv
ZXdrX3ZpZXcuaAppbmRleCA3ZDFkZjZkLi4xMWJlYjk0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL2VmbC9ld2tfdmlldy5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZWZsL2V3a192aWV3LmgKQEAgLTQ5LDggKzQ5LDYgQEAKICAqICAgI0V3a19G
b3JtX1N1Ym1pc3Npb25fUmVxdWVzdCBhbmQgdGhlIGZvcm0gaGFzIG5vdCBiZWVuIHN1Ym1pdHRl
ZCB5ZXQsCiAgKiAgIGV3a19mb3JtX3N1Ym1pc3Npb25fcmVxdWVzdF9zdWJtaXQoKSB3aWxsIGJl
IGNhbGxlZCBhdXRvbWF0aWNhbGx5LgogICogLSAiaWNvbixjaGFuZ2VkIiwgdm9pZDogcmVwb3J0
cyB0aGF0IHRoZSB2aWV3J3MgZmF2aWNvbiBoYXMgY2hhbmdlZC4KLSAqIC0gImludGVudCxyZXF1
ZXN0LG5ldyIsIEV3a19JbnRlbnQqOiByZXBvcnRzIG5ldyBXZWIgaW50ZW50IHJlcXVlc3QuCi0g
KiAtICJpbnRlbnQsc2VydmljZSxyZWdpc3RlciIsIEV3a19JbnRlbnRfU2VydmljZSo6IHJlcG9y
dHMgbmV3IFdlYiBpbnRlbnQgc2VydmljZSByZWdpc3RyYXRpb24uCiAgKiAtICJsb2FkLGVycm9y
IiwgY29uc3QgRXdrX0Vycm9yKjogcmVwb3J0cyBtYWluIGZyYW1lIGxvYWQgZmFpbGVkLgogICog
LSAibG9hZCxmaW5pc2hlZCIsIHZvaWQ6IHJlcG9ydHMgbG9hZCBmaW5pc2hlZC4KICAqIC0gImxv
YWQscHJvZ3Jlc3MiLCBkb3VibGUqOiBsb2FkIHByb2dyZXNzIGhhcyBjaGFuZ2VkICh2YWx1ZSBm
cm9tIDAuMCB0byAxLjApLgpAQCAtODEsNyArNzksNiBAQAogI2luY2x1ZGUgImV3a19jb250ZXh0
X21lbnUuaCIKICNpbmNsdWRlICJld2tfZG93bmxvYWRfam9iLmgiCiAjaW5jbHVkZSAiZXdrX2Vy
cm9yLmgiCi0jaW5jbHVkZSAiZXdrX2ludGVudC5oIgogI2luY2x1ZGUgImV3a19wb3B1cF9tZW51
LmgiCiAjaW5jbHVkZSAiZXdrX3NlY3VyaXR5X29yaWdpbi5oIgogI2luY2x1ZGUgImV3a19zZXR0
aW5ncy5oIgpAQCAtNDI1LDE1ICs0MjIsNiBAQCBFQVBJIEVpbmFfQm9vbCAgICBld2tfdmlld19z
dG9wKEV2YXNfT2JqZWN0ICpvKTsKIEVBUEkgRXdrX1NldHRpbmdzICpld2tfdmlld19zZXR0aW5n
c19nZXQoY29uc3QgRXZhc19PYmplY3QgKm8pOwogCiAvKioKLSAqIERlbGl2ZXJzIGEgV2ViIGlu
dGVudCB0byB0aGUgdmlldydzIG1haW4gZnJhbWUuCi0gKgotICogQHBhcmFtIG8gdmlldyBvYmpl
Y3QgdG8gZGVsaXZlciB0aGUgaW50ZW50IHRvCi0gKgotICogQHJldHVybiBAYyBFSU5BX1RSVUUg
b24gc3VjY2VzcyBvciBAYyBFSU5BX0ZBTFNFIG90aGVyd2lzZS4KLSAqLwotRUFQSSBFaW5hX0Jv
b2wgICAgZXdrX3ZpZXdfaW50ZW50X2RlbGl2ZXIoRXZhc19PYmplY3QgKm8sIEV3a19JbnRlbnQg
KmludGVudCk7Ci0KLS8qKgogICogQXNrcyB0aGUgbWFpbiBmcmFtZSB0byBuYXZpZ2F0ZSBiYWNr
IGluIHRoZSBoaXN0b3J5LgogICoKICAqIEBwYXJhbSBvIHZpZXcgb2JqZWN0IHRvIG5hdmlnYXRl
IGJhY2sKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL3Rlc3Rz
L3Jlc291cmNlcy9pbnRlbnQtcmVxdWVzdC5odG1sIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9lZmwvdGVzdHMvcmVzb3VyY2VzL2ludGVudC1yZXF1ZXN0Lmh0bWwKZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDdiMDZjYmUuLjAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvcmVzb3VyY2VzL2ludGVudC1yZXF1ZXN0Lmh0bWwKKysr
IC9kZXYvbnVsbApAQCAtMSwyOSArMCwwIEBACi08aHRtbD4KLTxoZWFkPgotPHRpdGxlPldlYiBp
bnRlbnQgcmVxdWVzdCB0ZXN0PC90aXRsZT4KLTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0
Ij4KLXZhciBjbGlja0NvdW50ID0gMDsKLQotZnVuY3Rpb24gYnV0dG9uQ2xpY2tlZCgpIHsKLSAg
aWYgKGNsaWNrQ291bnQgPT0gMCkgewotICAgIHZhciB0ZXN0SW50ZW50ID0gbmV3IFdlYktpdElu
dGVudCgKLSAgICAgICAgICAgICAgICAgICAgIHsiYWN0aW9uIjogImFjdGlvbjEiLAotICAgICAg
ICAgICAgICAgICAgICAgICJ0eXBlIjogIm1pbWUvdHlwZTEiLAotICAgICAgICAgICAgICAgICAg
ICAgICJzZXJ2aWNlIjogImh0dHA6Ly9zZXJ2aWNlMS5jb20vIiwKLSAgICAgICAgICAgICAgICAg
ICAgICAiZXh0cmFzIjogeyJrZXkxIjogInZhbHVlMSIsICJrZXkyIjogInZhbHVlMiJ9fSk7Ci0g
ICAgbmF2aWdhdG9yLndlYmtpdFN0YXJ0QWN0aXZpdHkodGVzdEludGVudCk7Ci0gIH0gZWxzZSBp
ZiAoY2xpY2tDb3VudCA9PSAxKSB7Ci0gICAgdmFyIHRlc3RJbnRlbnQgPSBuZXcgV2ViS2l0SW50
ZW50KAotICAgICAgICAgICAgICAgICAgICAgeyJhY3Rpb24iOiAiYWN0aW9uMiIsCi0gICAgICAg
ICAgICAgICAgICAgICAgInR5cGUiOiAibWltZS90eXBlMiIsCi0gICAgICAgICAgICAgICAgICAg
ICAgInN1Z2dlc3Rpb25zIjogWyJodHRwOi8vc2VydmljZTEuY29tLyIsICJodHRwOi8vc2Vydmlj
ZTIuY29tLyJdfSk7Ci0gICAgbmF2aWdhdG9yLndlYmtpdFN0YXJ0QWN0aXZpdHkodGVzdEludGVu
dCk7Ci0gIH0KLSAgY2xpY2tDb3VudCsrOwotfQotPC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keT4K
LTxpbnB1dCB0eXBlPSJidXR0b24iIGlkPSJidXR0b24iIHZhbHVlPSJTdGFydCBXZWIgSW50ZW50
IiBvbm1vdXNldXA9ImJ1dHRvbkNsaWNrZWQoKSIgc3R5bGU9InBvc2l0aW9uOiBhYnNvbHV0ZTsg
dG9wOiAwcHg7IGxlZnQ6IDBweDsiLz4KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL3Jlc291cmNlcy9pbnRlbnQtc2Vy
dmljZS5odG1sIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvcmVzb3Vy
Y2VzL2ludGVudC1zZXJ2aWNlLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFk
OWZhMmEuLjAwMDAwMDAKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvdGVz
dHMvcmVzb3VyY2VzL2ludGVudC1zZXJ2aWNlLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSw5ICsw
LDAgQEAKLTxodG1sPgotPGhlYWQ+Ci08dGl0bGU+V2ViIEludGVudCBzZXJ2aWNlIHJlZ2lzdHJh
dGlvbiB0ZXN0PC90aXRsZT4KLTwvaGVhZD4KLSAgPGJvZHk+Ci0gICAgPGludGVudCBhY3Rpb249
ImFjdGlvbiIgdHlwZT0idHlwZSIgdGl0bGU9IlRpdGxlIiBocmVmPSJodHRwOi8vZXhhbXBsZS5j
b20vc2VydmljZSIgZGlzcG9zaXRpb249ImlubGluZSI+PC9pbnRlbnQ+Ci0gICAgUmVnaXN0ZXJl
ZCBJbnRlbnQgU2VydmljZS4KLSAgPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvdGVzdF9ld2syX2ludGVudHMuY3BwIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9lZmwvdGVzdHMvdGVzdF9ld2syX2ludGVudHMu
Y3BwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkN2Q5OWVhLi4wMDAwMDAwCi0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZWZsL3Rlc3RzL3Rlc3RfZXdrMl9pbnRlbnRz
LmNwcAorKysgL2Rldi9udWxsCkBAIC0xLDExNyArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChD
KSAyMDEyIEludGVsIENvcnBvcmF0aW9uLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgot
ICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENP
TlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgot
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBP
UiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICog
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJ
VFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAq
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwot
Ci0jaW5jbHVkZSAiY29uZmlnLmgiCi0KLSNpbmNsdWRlICJVbml0VGVzdFV0aWxzL0VXSzJVbml0
VGVzdEJhc2UuaCIKLSNpbmNsdWRlICJVbml0VGVzdFV0aWxzL0VXSzJVbml0VGVzdFNlcnZlci5o
IgotCi11c2luZyBuYW1lc3BhY2UgRVdLMlVuaXRUZXN0OwotCi1leHRlcm4gRVdLMlVuaXRUZXN0
RW52aXJvbm1lbnQqIGVudmlyb25tZW50OwotCi1zdGF0aWMgdm9pZCBvbkludGVudFNlcnZpY2VS
ZWdpc3RyYXRpb24odm9pZCogdXNlckRhdGEsIEV2YXNfT2JqZWN0Kiwgdm9pZCogZXZlbnRJbmZv
KQotewotICAgIGJvb2wqIGludGVudFJlZ2lzdGVyZWQgPSBzdGF0aWNfY2FzdDxib29sKj4odXNl
ckRhdGEpOwotICAgIEFTU0VSVF9GQUxTRSgqaW50ZW50UmVnaXN0ZXJlZCk7Ci0gICAgKmludGVu
dFJlZ2lzdGVyZWQgPSB0cnVlOwotCi0gICAgRXdrX0ludGVudF9TZXJ2aWNlKiBzZXJ2aWNlID0g
c3RhdGljX2Nhc3Q8RXdrX0ludGVudF9TZXJ2aWNlKj4oZXZlbnRJbmZvKTsKLSAgICBBU1NFUlRf
VFJVRShzZXJ2aWNlKTsKLSAgICBFWFBFQ1RfU1RSRVEoImFjdGlvbiIsIGV3a19pbnRlbnRfc2Vy
dmljZV9hY3Rpb25fZ2V0KHNlcnZpY2UpKTsKLSAgICBFWFBFQ1RfU1RSRVEoInR5cGUiLCBld2tf
aW50ZW50X3NlcnZpY2VfdHlwZV9nZXQoc2VydmljZSkpOwotICAgIEVYUEVDVF9TVFJFUSgiVGl0
bGUiLCBld2tfaW50ZW50X3NlcnZpY2VfdGl0bGVfZ2V0KHNlcnZpY2UpKTsKLSAgICBFWFBFQ1Rf
U1RSRVEoImh0dHA6Ly9leGFtcGxlLmNvbS9zZXJ2aWNlIiwgZXdrX2ludGVudF9zZXJ2aWNlX2hy
ZWZfZ2V0KHNlcnZpY2UpKTsKLSAgICBFWFBFQ1RfU1RSRVEoImlubGluZSIsIGV3a19pbnRlbnRf
c2VydmljZV9kaXNwb3NpdGlvbl9nZXQoc2VydmljZSkpOwotfQotCi1URVNUX0YoRVdLMlVuaXRU
ZXN0QmFzZSwgZXdrX2ludGVudF9zZXJ2aWNlX3JlZ2lzdHJhdGlvbikKLXsKLSAgICBib29sIGlu
dGVudFJlZ2lzdGVyZWQgPSBmYWxzZTsKLSAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19h
ZGQod2ViVmlldygpLCAiaW50ZW50LHNlcnZpY2UscmVnaXN0ZXIiLCBvbkludGVudFNlcnZpY2VS
ZWdpc3RyYXRpb24sICZpbnRlbnRSZWdpc3RlcmVkKTsKLSAgICBBU1NFUlRfVFJVRShsb2FkVXJs
U3luYyhlbnZpcm9ubWVudC0+dXJsRm9yUmVzb3VyY2UoImludGVudC1zZXJ2aWNlLmh0bWwiKS5k
YXRhKCkpKTsKLSAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19kZWwod2ViVmlldygpLCAi
aW50ZW50LHNlcnZpY2UscmVnaXN0ZXIiLCBvbkludGVudFNlcnZpY2VSZWdpc3RyYXRpb24pOwot
ICAgIEFTU0VSVF9UUlVFKGludGVudFJlZ2lzdGVyZWQpOwotfQotCi1pbnQgc3RyaW5nU29ydENi
KGNvbnN0IHZvaWQqIGQxLCBjb25zdCB2b2lkKiBkMikKLXsKLSAgICByZXR1cm4gc3RyY21wKHN0
YXRpY19jYXN0PGNvbnN0IGNoYXIqPihkMSksIHN0YXRpY19jYXN0PGNvbnN0IGNoYXIqPihkMikp
OwotfQotCi1zdGF0aWMgdm9pZCBvbkludGVudFJlY2VpdmVkKHZvaWQqIHVzZXJEYXRhLCBFdmFz
X09iamVjdCosIHZvaWQqIGV2ZW50SW5mbykKLXsKLSAgICB1bnNpZ25lZCogaW50ZW50UmVjZWl2
ZWRDb3VudCA9IHN0YXRpY19jYXN0PHVuc2lnbmVkKj4odXNlckRhdGEpOwotICAgIEFTU0VSVF9H
RSgqaW50ZW50UmVjZWl2ZWRDb3VudCwgMCk7Ci0gICAgQVNTRVJUX0xFKCppbnRlbnRSZWNlaXZl
ZENvdW50LCAxKTsKLSAgICArKygqaW50ZW50UmVjZWl2ZWRDb3VudCk7Ci0KLSAgICBFd2tfSW50
ZW50KiBpbnRlbnQgPSBzdGF0aWNfY2FzdDxFd2tfSW50ZW50Kj4oZXZlbnRJbmZvKTsKLSAgICBB
U1NFUlRfVFJVRShpbnRlbnQpOwotCi0gICAgaWYgKCppbnRlbnRSZWNlaXZlZENvdW50ID09IDEp
IHsKLSAgICAgICAgLy8gRmlyc3QgaW50ZW50LgotICAgICAgICBFWFBFQ1RfU1RSRVEoImFjdGlv
bjEiLCBld2tfaW50ZW50X2FjdGlvbl9nZXQoaW50ZW50KSk7Ci0gICAgICAgIEVYUEVDVF9TVFJF
USgibWltZS90eXBlMSIsIGV3a19pbnRlbnRfdHlwZV9nZXQoaW50ZW50KSk7Ci0gICAgICAgIEVY
UEVDVF9TVFJFUSgiaHR0cDovL3NlcnZpY2UxLmNvbS8iLCBld2tfaW50ZW50X3NlcnZpY2VfZ2V0
KGludGVudCkpOwotICAgICAgICBFWFBFQ1RfU1RSRVEoInZhbHVlMSIsIGV3a19pbnRlbnRfZXh0
cmFfZ2V0KGludGVudCwgImtleTEiKSk7Ci0gICAgICAgIEVYUEVDVF9TVFJFUSgidmFsdWUyIiwg
ZXdrX2ludGVudF9leHRyYV9nZXQoaW50ZW50LCAia2V5MiIpKTsKLSAgICB9IGVsc2UgewotICAg
ICAgICAvLyBTZWNvbmQgaW50ZW50LgotICAgICAgICBFWFBFQ1RfU1RSRVEoImFjdGlvbjIiLCBl
d2tfaW50ZW50X2FjdGlvbl9nZXQoaW50ZW50KSk7Ci0gICAgICAgIEVYUEVDVF9TVFJFUSgibWlt
ZS90eXBlMiIsIGV3a19pbnRlbnRfdHlwZV9nZXQoaW50ZW50KSk7Ci0gICAgICAgIEVpbmFfTGlz
dCogc3VnZ2VzdGlvbnMgPSBld2tfaW50ZW50X3N1Z2dlc3Rpb25zX2dldChpbnRlbnQpOwotICAg
ICAgICBBU1NFUlRfVFJVRShzdWdnZXN0aW9ucyk7Ci0gICAgICAgIEFTU0VSVF9FUSgyLCBlaW5h
X2xpc3RfY291bnQoc3VnZ2VzdGlvbnMpKTsKLSAgICAgICAgLy8gV2UgbmVlZCB0byBzb3J0IHRo
ZSBzdWdnZXN0aW9ucyBzaW5jZSBJbnRlbnQgaXMgdXNpbmcgYSBIYXNoU2V0IGludGVybmFsbHku
Ci0gICAgICAgIHN1Z2dlc3Rpb25zID0gZWluYV9saXN0X3NvcnQoc3VnZ2VzdGlvbnMsIDIsIHN0
cmluZ1NvcnRDYik7Ci0gICAgICAgIEVYUEVDVF9TVFJFUSgiaHR0cDovL3NlcnZpY2UxLmNvbS8i
LCBzdGF0aWNfY2FzdDxjb25zdCBjaGFyKj4oZWluYV9saXN0X250aChzdWdnZXN0aW9ucywgMCkp
KTsKLSAgICAgICAgRVhQRUNUX1NUUkVRKCJodHRwOi8vc2VydmljZTIuY29tLyIsIHN0YXRpY19j
YXN0PGNvbnN0IGNoYXIqPihlaW5hX2xpc3RfbnRoKHN1Z2dlc3Rpb25zLCAxKSkpOwotCi0gICAg
ICAgIHZvaWQqIGxpc3REYXRhID0gMDsKLSAgICAgICAgRUlOQV9MSVNUX0ZSRUUoc3VnZ2VzdGlv
bnMsIGxpc3REYXRhKQotICAgICAgICAgICAgIGVpbmFfc3RyaW5nc2hhcmVfZGVsKHN0YXRpY19j
YXN0PGNvbnN0IGNoYXIqPihsaXN0RGF0YSkpOwotICAgIH0KLX0KLQotVEVTVF9GKEVXSzJVbml0
VGVzdEJhc2UsIGV3a19pbnRlbnRfcmVxdWVzdCkKLXsKLSAgICB1bnNpZ25lZCBpbnRlbnRSZWNl
aXZlZENvdW50ID0gMDsKLSAgICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19hZGQod2ViVmll
dygpLCAiaW50ZW50LHJlcXVlc3QsbmV3Iiwgb25JbnRlbnRSZWNlaXZlZCwgJmludGVudFJlY2Vp
dmVkQ291bnQpOwotICAgIEFTU0VSVF9UUlVFKGxvYWRVcmxTeW5jKGVudmlyb25tZW50LT51cmxG
b3JSZXNvdXJjZSgiaW50ZW50LXJlcXVlc3QuaHRtbCIpLmRhdGEoKSkpOwotCi0gICAgLy8gQSB1
c2VyIGdlc3R1cmUgaXMgcmVxdWlyZWQgZm9yIHRoZSBpbnRlbnQgdG8gc3RhcnQuCi0gICAgbW91
c2VDbGljayg1LCA1KTsKLSAgICB3aGlsZSAoaW50ZW50UmVjZWl2ZWRDb3VudCAhPSAxKQotICAg
ICAgICBlY29yZV9tYWluX2xvb3BfaXRlcmF0ZSgpOwotICAgIEFTU0VSVF9FUSgxLCBpbnRlbnRS
ZWNlaXZlZENvdW50KTsKLQotICAgIC8vIEdlbmVyYXRlIGEgc2Vjb25kIGludGVudCByZXF1ZXN0
LgotICAgIG1vdXNlQ2xpY2soNSwgNSk7Ci0gICAgd2hpbGUgKGludGVudFJlY2VpdmVkQ291bnQg
IT0gMikKLSAgICAgICAgZWNvcmVfbWFpbl9sb29wX2l0ZXJhdGUoKTsKLSAgICBBU1NFUlRfRVEo
MiwgaW50ZW50UmVjZWl2ZWRDb3VudCk7Ci0gICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tf
ZGVsKHdlYlZpZXcoKSwgImludGVudCxyZXF1ZXN0LG5ldyIsIG9uSW50ZW50UmVjZWl2ZWQpOwot
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9QYWdlTG9hZENsaWVu
dEVmbC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1BhZ2VMb2FkQ2xpZW50RWZs
LmNwcAppbmRleCA3NDk1MTEwLi41YTAwZGNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvZWZsL1BhZ2VMb2FkQ2xpZW50RWZsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvZWZsL1BhZ2VMb2FkQ2xpZW50RWZsLmNwcApAQCAtMzQsOCArMzQsNiBAQAogI2lu
Y2x1ZGUgImV3a19hdXRoX3JlcXVlc3RfcHJpdmF0ZS5oIgogI2luY2x1ZGUgImV3a19iYWNrX2Zv
cndhcmRfbGlzdF9wcml2YXRlLmgiCiAjaW5jbHVkZSAiZXdrX2Vycm9yX3ByaXZhdGUuaCIKLSNp
bmNsdWRlICJld2tfaW50ZW50X3ByaXZhdGUuaCIKLSNpbmNsdWRlICJld2tfaW50ZW50X3NlcnZp
Y2VfcHJpdmF0ZS5oIgogI2luY2x1ZGUgImV3a192aWV3LmgiCiAKIHVzaW5nIG5hbWVzcGFjZSBF
d2tWaWV3Q2FsbGJhY2tzOwpAQCAtNTYsMjQgKzU0LDYgQEAgdm9pZCBQYWdlTG9hZENsaWVudEVm
bDo6ZGlkUmVjZWl2ZVRpdGxlRm9yRnJhbWUoV0tQYWdlUmVmLCBXS1N0cmluZ1JlZiB0aXRsZSwg
V0sKICAgICB2aWV3LT5zbWFydENhbGxiYWNrPFRpdGxlQ2hhbmdlPigpLmNhbGwodG9JbXBsKHRp
dGxlKS0+c3RyaW5nKCkpOwogfQogCi0jaWYgRU5BQkxFKFdFQl9JTlRFTlRTKQotdm9pZCBQYWdl
TG9hZENsaWVudEVmbDo6ZGlkUmVjZWl2ZUludGVudEZvckZyYW1lKFdLUGFnZVJlZiwgV0tGcmFt
ZVJlZiwgV0tJbnRlbnREYXRhUmVmIGludGVudCwgV0tUeXBlUmVmLCBjb25zdCB2b2lkKiBjbGll
bnRJbmZvKQotewotICAgIEV3a1ZpZXcqIHZpZXcgPSB0b1BhZ2VMb2FkQ2xpZW50RWZsKGNsaWVu
dEluZm8pLT52aWV3KCk7Ci0gICAgUmVmUHRyPEV3a0ludGVudD4gZXdrSW50ZW50ID0gRXdrSW50
ZW50OjpjcmVhdGUoaW50ZW50KTsKLSAgICB2aWV3LT5zbWFydENhbGxiYWNrPEludGVudFJlcXVl
c3Q+KCkuY2FsbChld2tJbnRlbnQuZ2V0KCkpOwotfQotI2VuZGlmCi0KLSNpZiBFTkFCTEUoV0VC
X0lOVEVOVFNfVEFHKQotdm9pZCBQYWdlTG9hZENsaWVudEVmbDo6cmVnaXN0ZXJJbnRlbnRTZXJ2
aWNlRm9yRnJhbWUoV0tQYWdlUmVmLCBXS0ZyYW1lUmVmLCBXS0ludGVudFNlcnZpY2VJbmZvUmVm
IHNlcnZpY2VJbmZvLCBXS1R5cGVSZWYsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCi17Ci0gICAg
RXdrVmlldyogdmlldyA9IHRvUGFnZUxvYWRDbGllbnRFZmwoY2xpZW50SW5mbyktPnZpZXcoKTsK
LSAgICBSZWZQdHI8RXdrSW50ZW50U2VydmljZT4gZXdrSW50ZW50U2VydmljZSA9IEV3a0ludGVu
dFNlcnZpY2U6OmNyZWF0ZShzZXJ2aWNlSW5mbyk7Ci0gICAgdmlldy0+c21hcnRDYWxsYmFjazxJ
bnRlbnRTZXJ2aWNlUmVnaXN0cmF0aW9uPigpLmNhbGwoZXdrSW50ZW50U2VydmljZS5nZXQoKSk7
Ci19Ci0jZW5kaWYKLQogdm9pZCBQYWdlTG9hZENsaWVudEVmbDo6ZGlkQ2hhbmdlUHJvZ3Jlc3Mo
V0tQYWdlUmVmIHBhZ2UsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pCiB7CiAgICAgRXdrVmlldyog
dmlldyA9IHRvUGFnZUxvYWRDbGllbnRFZmwoY2xpZW50SW5mbyktPnZpZXcoKTsKQEAgLTE4Miwx
MiArMTYyLDYgQEAgUGFnZUxvYWRDbGllbnRFZmw6OlBhZ2VMb2FkQ2xpZW50RWZsKEV3a1ZpZXcq
IHZpZXcpCiAgICAgbG9hZENsaWVudC52ZXJzaW9uID0ga1dLUGFnZUxvYWRlckNsaWVudEN1cnJl
bnRWZXJzaW9uOwogICAgIGxvYWRDbGllbnQuY2xpZW50SW5mbyA9IHRoaXM7CiAgICAgbG9hZENs
aWVudC5kaWRSZWNlaXZlVGl0bGVGb3JGcmFtZSA9IGRpZFJlY2VpdmVUaXRsZUZvckZyYW1lOwot
I2lmIEVOQUJMRShXRUJfSU5URU5UUykKLSAgICBsb2FkQ2xpZW50LmRpZFJlY2VpdmVJbnRlbnRG
b3JGcmFtZSA9IGRpZFJlY2VpdmVJbnRlbnRGb3JGcmFtZTsKLSNlbmRpZgotI2lmIEVOQUJMRShX
RUJfSU5URU5UU19UQUcpCi0gICAgbG9hZENsaWVudC5yZWdpc3RlckludGVudFNlcnZpY2VGb3JG
cmFtZSA9IHJlZ2lzdGVySW50ZW50U2VydmljZUZvckZyYW1lOwotI2VuZGlmCiAgICAgbG9hZENs
aWVudC5kaWRTdGFydFByb2dyZXNzID0gZGlkQ2hhbmdlUHJvZ3Jlc3M7CiAgICAgbG9hZENsaWVu
dC5kaWRDaGFuZ2VQcm9ncmVzcyA9IGRpZENoYW5nZVByb2dyZXNzOwogICAgIGxvYWRDbGllbnQu
ZGlkRmluaXNoUHJvZ3Jlc3MgPSBkaWRDaGFuZ2VQcm9ncmVzczsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9lZmwvUGFnZUxvYWRDbGllbnRFZmwuaCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9lZmwvUGFnZUxvYWRDbGllbnRFZmwuaAppbmRleCBhOGUxMjM1Li4yYmE3
MGZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvZWZsL1BhZ2VMb2FkQ2xp
ZW50RWZsLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2VmbC9QYWdlTG9hZENsaWVu
dEVmbC5oCkBAIC00NywxMiArNDcsNiBAQCBwcml2YXRlOgogICAgIGlubGluZSBFd2tWaWV3KiB2
aWV3KCkgY29uc3QgeyByZXR1cm4gbV92aWV3OyB9CiAKICAgICBzdGF0aWMgdm9pZCBkaWRSZWNl
aXZlVGl0bGVGb3JGcmFtZShXS1BhZ2VSZWYsIFdLU3RyaW5nUmVmIHRpdGxlLCBXS0ZyYW1lUmVm
LCBXS1R5cGVSZWYsIGNvbnN0IHZvaWQqIGNsaWVudEluZm8pOwotI2lmIEVOQUJMRShXRUJfSU5U
RU5UUykKLSAgICBzdGF0aWMgdm9pZCBkaWRSZWNlaXZlSW50ZW50Rm9yRnJhbWUoV0tQYWdlUmVm
LCBXS0ZyYW1lUmVmLCBXS0ludGVudERhdGFSZWYsIFdLVHlwZVJlZiwgY29uc3Qgdm9pZCogY2xp
ZW50SW5mbyk7Ci0jZW5kaWYKLSNpZiBFTkFCTEUoV0VCX0lOVEVOVFNfVEFHKQotICAgIHN0YXRp
YyB2b2lkIHJlZ2lzdGVySW50ZW50U2VydmljZUZvckZyYW1lKFdLUGFnZVJlZiwgV0tGcmFtZVJl
ZiwgV0tJbnRlbnRTZXJ2aWNlSW5mb1JlZiwgV0tUeXBlUmVmLCBjb25zdCB2b2lkKiBjbGllbnRJ
bmZvKTsKLSNlbmRpZgogICAgIHN0YXRpYyB2b2lkIGRpZENoYW5nZVByb2dyZXNzKFdLUGFnZVJl
ZiwgY29uc3Qgdm9pZCogY2xpZW50SW5mbyk7CiAgICAgc3RhdGljIHZvaWQgZGlkRmluaXNoTG9h
ZEZvckZyYW1lKFdLUGFnZVJlZiwgV0tGcmFtZVJlZiwgV0tUeXBlUmVmIHVzZXJEYXRhLCBjb25z
dCB2b2lkKiBjbGllbnRJbmZvKTsKICAgICBzdGF0aWMgdm9pZCBkaWRGYWlsTG9hZFdpdGhFcnJv
ckZvckZyYW1lKFdLUGFnZVJlZiwgV0tGcmFtZVJlZiwgV0tFcnJvclJlZiwgV0tUeXBlUmVmIHVz
ZXJEYXRhLCBjb25zdCB2b2lkKiBjbGllbnRJbmZvKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9jbWFr
ZS9PcHRpb25zRWZsLmNtYWtlIGIvU291cmNlL2NtYWtlL09wdGlvbnNFZmwuY21ha2UKaW5kZXgg
MWEzOTdiNi4uYmQxYjdlMiAxMDA2NDQKLS0tIGEvU291cmNlL2NtYWtlL09wdGlvbnNFZmwuY21h
a2UKKysrIGIvU291cmNlL2NtYWtlL09wdGlvbnNFZmwuY21ha2UKQEAgLTkxLDggKzkxLDYgQEAg
V0VCS0lUX09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX1ZJQlJBVElPTiBPTikKIFdF
QktJVF9PUFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9WSURFTyBPTikKIFdFQktJVF9P
UFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9WSURFT19UUkFDSyBPTikKIFdFQktJVF9P
UFRJT05fREVGQVVMVF9QT1JUX1ZBTFVFKEVOQUJMRV9XRUJfQVVESU8gT04pCi1XRUJLSVRfT1BU
SU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfV0VCX0lOVEVOVFMgT04pCi1XRUJLSVRfT1BU
SU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfV0VCX0lOVEVOVFNfVEFHIE9OKQogV0VCS0lU
X09QVElPTl9ERUZBVUxUX1BPUlRfVkFMVUUoRU5BQkxFX1dFQl9USU1JTkcgT04pCiBXRUJLSVRf
T1BUSU9OX0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfV0VCR0wgT04pCiBXRUJLSVRfT1BUSU9O
X0RFRkFVTFRfUE9SVF9WQUxVRShFTkFCTEVfWEhSX1RJTUVPVVQgT04pCmRpZmYgLS1naXQgYS9U
b29scy9DaGFuZ2VMb2cgYi9Ub29scy9DaGFuZ2VMb2cKaW5kZXggMmRhNWM3Ny4uZjNkMzg1YiAx
MDA2NDQKLS0tIGEvVG9vbHMvQ2hhbmdlTG9nCisrKyBiL1Rvb2xzL0NoYW5nZUxvZwpAQCAtMSw1
ICsxLDI2IEBACiAyMDEzLTAxLTMxICBDaHJpc3RvcGhlIER1bWV6ICA8ZGNocmlzQGdtYWlsLmNv
bT4KIAorICAgICAgICBbRUZMXSBEaXNhYmxlIFdlYiBJbnRlbnRzCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDg0NTcKKworICAgICAgICBSZXZpZXdl
ZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBSZW1vdmUgRUZMIERSVCBjb2RlIHJlbGF0
ZWQgdG8gV2ViIGludGVudHMuCisKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9lZmwvRHVtcFJl
bmRlclRyZWVDaHJvbWUuY3BwOgorICAgICAgICAoRHVtcFJlbmRlclRyZWVDaHJvbWU6OmNyZWF0
ZVZpZXcpOgorICAgICAgICAoRHVtcFJlbmRlclRyZWVDaHJvbWU6OnJlc2V0RGVmYXVsdHNUb0Nv
bnNpc3RlbnRWYWx1ZXMpOgorICAgICAgICAoRHVtcFJlbmRlclRyZWVDaHJvbWU6Om9uRnJhbWVD
cmVhdGVkKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9lZmwvRHVtcFJlbmRlclRyZWVDaHJv
bWUuaDoKKyAgICAgICAgKER1bXBSZW5kZXJUcmVlQ2hyb21lKToKKyAgICAgICAgKiBEdW1wUmVu
ZGVyVHJlZS9lZmwvVGVzdFJ1bm5lckVmbC5jcHA6CisgICAgICAgIChUZXN0UnVubmVyOjpzZW5k
V2ViSW50ZW50UmVzcG9uc2UpOgorICAgICAgICAoVGVzdFJ1bm5lcjo6ZGVsaXZlcldlYkludGVu
dCk6CisgICAgICAgICogU2NyaXB0cy93ZWJraXRwZXJsL0ZlYXR1cmVMaXN0LnBtOiBUdXJuIG9m
ZiBXRUJfSU5URU5UUyBmbGFnCisgICAgICAgIGZvciBFRkwgcG9ydC4KKworMjAxMy0wMS0zMSAg
Q2hyaXN0b3BoZSBEdW1leiAgPGRjaHJpc0BnbWFpbC5jb20+CisKICAgICAgICAgVXBkYXRlIENo
cmlzdG9waGUgRHVtZXoncyBlbWFpbCBhZGRyZXNzCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDg0NTMKIApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJl
bmRlclRyZWUvZWZsL0R1bXBSZW5kZXJUcmVlQ2hyb21lLmNwcCBiL1Rvb2xzL0R1bXBSZW5kZXJU
cmVlL2VmbC9EdW1wUmVuZGVyVHJlZUNocm9tZS5jcHAKaW5kZXggY2Q5MzdmZi4uZTVhODRiZiAx
MDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvZWZsL0R1bXBSZW5kZXJUcmVlQ2hyb21l
LmNwcAorKysgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9lZmwvRHVtcFJlbmRlclRyZWVDaHJvbWUu
Y3BwCkBAIC01NCw3ICs1NCw2IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBIYXNoTWFw
PHVuc2lnbmVkIGxvbmcsIENTdHJpbmc+IER1bXBSZW5kZXJUcmVlQ2hyb21lOjptX2R1bXBBc3Np
Z25lZFVybHM7CiBFdmFzX09iamVjdCogRHVtcFJlbmRlclRyZWVDaHJvbWU6Om1fcHJvdmlzaW9u
YWxMb2FkRmFpbGVkRnJhbWUgPSAwOwotRXdrX0ludGVudF9SZXF1ZXN0KiBEdW1wUmVuZGVyVHJl
ZUNocm9tZTo6bV9jdXJyZW50SW50ZW50UmVxdWVzdCA9IDA7CiAKIFBhc3NPd25QdHI8RHVtcFJl
bmRlclRyZWVDaHJvbWU+IER1bXBSZW5kZXJUcmVlQ2hyb21lOjpjcmVhdGUoRXZhcyogZXZhcykK
IHsKQEAgLTEyMyw4ICsxMjIsNiBAQCBFdmFzX09iamVjdCogRHVtcFJlbmRlclRyZWVDaHJvbWU6
OmNyZWF0ZVZpZXcoKSBjb25zdAogCiAgICAgRXZhc19PYmplY3QqIG1haW5GcmFtZSA9IGV3a192
aWV3X2ZyYW1lX21haW5fZ2V0KHZpZXcpOwogICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNr
X2FkZChtYWluRnJhbWUsICJpY29uLGNoYW5nZWQiLCBvbkZyYW1lSWNvbkNoYW5nZWQsIDApOwot
ICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2FkZChtYWluRnJhbWUsICJpbnRlbnQsbmV3
Iiwgb25GcmFtZUludGVudE5ldywgMCk7Ci0gICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tf
YWRkKG1haW5GcmFtZSwgImludGVudCxzZXJ2aWNlLHJlZ2lzdGVyIiwgb25GcmFtZUludGVudFNl
cnZpY2VSZWdpc3RyYXRpb24sIDApOwogICAgIGV2YXNfb2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2Fk
ZChtYWluRnJhbWUsICJsb2FkLHByb3Zpc2lvbmFsIiwgb25GcmFtZVByb3Zpc2lvbmFsTG9hZCwg
MCk7CiAgICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfYWRkKG1haW5GcmFtZSwgImxvYWQs
cHJvdmlzaW9uYWwsZmFpbGVkIiwgb25GcmFtZVByb3Zpc2lvbmFsTG9hZEZhaWxlZCwgMCk7CiAg
ICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfYWRkKG1haW5GcmFtZSwgImxvYWQsY29tbWl0
dGVkIiwgb25GcmFtZUxvYWRDb21taXR0ZWQsIDApOwpAQCAtMjQxLDExICsyMzgsNiBAQCBFdmFz
X09iamVjdCogRHVtcFJlbmRlclRyZWVDaHJvbWU6Om1haW5WaWV3KCkgY29uc3QKICAgICByZXR1
cm4gbV9tYWluVmlldzsKIH0KIAotRXdrX0ludGVudF9SZXF1ZXN0KiBEdW1wUmVuZGVyVHJlZUNo
cm9tZTo6Y3VycmVudEludGVudFJlcXVlc3QoKSBjb25zdAotewotICAgIHJldHVybiBtX2N1cnJl
bnRJbnRlbnRSZXF1ZXN0OwotfQotCiB2b2lkIER1bXBSZW5kZXJUcmVlQ2hyb21lOjpyZXNldERl
ZmF1bHRzVG9Db25zaXN0ZW50VmFsdWVzKCkKIHsKICAgICBld2tfc2V0dGluZ3NfaWNvbl9kYXRh
YmFzZV9jbGVhcigpOwpAQCAtMzMyLDExICszMjQsNiBAQCB2b2lkIER1bXBSZW5kZXJUcmVlQ2hy
b21lOjpyZXNldERlZmF1bHRzVG9Db25zaXN0ZW50VmFsdWVzKCkKICAgICBEdW1wUmVuZGVyVHJl
ZVN1cHBvcnRFZmw6OnNldERlYWREZWNvZGVkRGF0YURlbGV0aW9uSW50ZXJ2YWwoMCk7CiAgICAg
ZXdrX3NldHRpbmdzX3BhZ2VfY2FjaGVfY2FwYWNpdHlfc2V0KDMpOwogCi0gICAgaWYgKG1fY3Vy
cmVudEludGVudFJlcXVlc3QpIHsKLSAgICAgICAgZXdrX2ludGVudF9yZXF1ZXN0X3VucmVmKG1f
Y3VycmVudEludGVudFJlcXVlc3QpOwotICAgICAgICBtX2N1cnJlbnRJbnRlbnRSZXF1ZXN0ID0g
MDsKLSAgICB9Ci0KICAgICBwb2xpY3lEZWxlZ2F0ZUVuYWJsZWQgPSBmYWxzZTsKICAgICBwb2xp
Y3lEZWxlZ2F0ZVBlcm1pc3NpdmUgPSBmYWxzZTsKIH0KQEAgLTYxNiw4ICs2MDMsNiBAQCB2b2lk
IER1bXBSZW5kZXJUcmVlQ2hyb21lOjpvbkZyYW1lQ3JlYXRlZCh2b2lkKiwgRXZhc19PYmplY3Qq
LCB2b2lkKiBldmVudEluZm8pCiAgICAgRXZhc19PYmplY3QqIGZyYW1lID0gc3RhdGljX2Nhc3Q8
RXZhc19PYmplY3QqPihldmVudEluZm8pOwogCiAgICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJh
Y2tfYWRkKGZyYW1lLCAiaWNvbixjaGFuZ2VkIiwgb25GcmFtZUljb25DaGFuZ2VkLCAwKTsKLSAg
ICBldmFzX29iamVjdF9zbWFydF9jYWxsYmFja19hZGQoZnJhbWUsICJpbnRlbnQsbmV3Iiwgb25G
cmFtZUludGVudE5ldywgMCk7Ci0gICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfYWRkKGZy
YW1lLCAiaW50ZW50LHNlcnZpY2UscmVnaXN0ZXIiLCBvbkZyYW1lSW50ZW50U2VydmljZVJlZ2lz
dHJhdGlvbiwgMCk7CiAgICAgZXZhc19vYmplY3Rfc21hcnRfY2FsbGJhY2tfYWRkKGZyYW1lLCAi
bG9hZCxwcm92aXNpb25hbCIsIG9uRnJhbWVQcm92aXNpb25hbExvYWQsIDApOwogICAgIGV2YXNf
b2JqZWN0X3NtYXJ0X2NhbGxiYWNrX2FkZChmcmFtZSwgImxvYWQscHJvdmlzaW9uYWwsZmFpbGVk
Iiwgb25GcmFtZVByb3Zpc2lvbmFsTG9hZEZhaWxlZCwgMCk7CiAgICAgZXZhc19vYmplY3Rfc21h
cnRfY2FsbGJhY2tfYWRkKGZyYW1lLCAibG9hZCxjb21taXR0ZWQiLCBvbkZyYW1lTG9hZENvbW1p
dHRlZCwgMCk7CkBAIC04NTEsNjEgKzgzNiw2IEBAIHZvaWQgRHVtcFJlbmRlclRyZWVDaHJvbWU6
Om9uTmV3UmVzb3VyY2VSZXF1ZXN0KHZvaWQqLCBFdmFzX09iamVjdCosIHZvaWQqIGV2ZW50CiAg
ICAgICAgIG1fZHVtcEFzc2lnbmVkVXJscy5hZGQocmVxdWVzdC0+aWRlbnRpZmllciwgcGF0aFN1
aXRhYmxlRm9yVGVzdFJlc3VsdChyZXF1ZXN0LT51cmwpKTsKIH0KIAotdm9pZCBEdW1wUmVuZGVy
VHJlZUNocm9tZTo6b25GcmFtZUludGVudE5ldyh2b2lkKiwgRXZhc19PYmplY3QqLCB2b2lkKiBl
dmVudEluZm8pCi17Ci0gICAgRXdrX0ludGVudF9SZXF1ZXN0KiByZXF1ZXN0ID0gc3RhdGljX2Nh
c3Q8RXdrX0ludGVudF9SZXF1ZXN0Kj4oZXZlbnRJbmZvKTsKLSAgICBFd2tfSW50ZW50KiBpbnRl
bnQgPSBld2tfaW50ZW50X3JlcXVlc3RfaW50ZW50X2dldChyZXF1ZXN0KTsKLSAgICBpZiAoIWlu
dGVudCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgZXdrX2ludGVudF9yZXF1ZXN0X3JlZihyZXF1
ZXN0KTsKLSAgICBpZiAobV9jdXJyZW50SW50ZW50UmVxdWVzdCkKLSAgICAgICAgZXdrX2ludGVu
dF9yZXF1ZXN0X3VucmVmKG1fY3VycmVudEludGVudFJlcXVlc3QpOwotICAgIG1fY3VycmVudElu
dGVudFJlcXVlc3QgPSByZXF1ZXN0OwotCi0gICAgcHJpbnRmKCJSZWNlaXZlZCBXZWIgSW50ZW50
OiBhY3Rpb249JXMgdHlwZT0lc1xuIiwKLSAgICAgICAgICAgZXdrX2ludGVudF9hY3Rpb25fZ2V0
KGludGVudCksCi0gICAgICAgICAgIGV3a19pbnRlbnRfdHlwZV9nZXQoaW50ZW50KSk7Ci0KLSAg
ICBjb25zdCBNZXNzYWdlUG9ydENoYW5uZWxBcnJheSogbWVzc2FnZVBvcnRzID0gRHVtcFJlbmRl
clRyZWVTdXBwb3J0RWZsOjppbnRlbnRNZXNzYWdlUG9ydHMoaW50ZW50KTsKLSAgICBpZiAobWVz
c2FnZVBvcnRzKQotICAgICAgICBwcmludGYoIkhhdmUgJWQgcG9ydHNcbiIsIHN0YXRpY19jYXN0
PGludD4obWVzc2FnZVBvcnRzLT5zaXplKCkpKTsKLQotICAgIGNvbnN0IGNoYXIqIHNlcnZpY2Ug
PSBld2tfaW50ZW50X3NlcnZpY2VfZ2V0KGludGVudCk7Ci0gICAgaWYgKHNlcnZpY2UgJiYgc3Ry
Y21wKHNlcnZpY2UsICIiKSkKLSAgICAgICAgcHJpbnRmKCJFeHBsaWNpdCBpbnRlbnQgc2Vydmlj
ZTogJXNcbiIsIHNlcnZpY2UpOwotCi0gICAgdm9pZCogZGF0YSA9IDA7Ci0gICAgRWluYV9MaXN0
KiBleHRyYU5hbWVzID0gZXdrX2ludGVudF9leHRyYV9uYW1lc19nZXQoaW50ZW50KTsKLSAgICBF
SU5BX0xJU1RfRlJFRShleHRyYU5hbWVzLCBkYXRhKSB7Ci0gICAgICAgIGNvbnN0IGNoYXIqIG5h
bWUgPSBzdGF0aWNfY2FzdDxjaGFyKj4oZGF0YSk7Ci0gICAgICAgIGNvbnN0IGNoYXIqIHZhbHVl
ID0gZXdrX2ludGVudF9leHRyYV9nZXQoaW50ZW50LCBuYW1lKTsKLSAgICAgICAgaWYgKHZhbHVl
KSB7Ci0gICAgICAgICAgICBwcmludGYoIkV4dHJhc1slc10gPSAlc1xuIiwgbmFtZSwgdmFsdWUp
OwotICAgICAgICAgICAgZWluYV9zdHJpbmdzaGFyZV9kZWwodmFsdWUpOwotICAgICAgICB9Ci0g
ICAgICAgIGVpbmFfc3RyaW5nc2hhcmVfZGVsKG5hbWUpOwotICAgIH0KLQotICAgIEVpbmFfTGlz
dCogc3VnZ2VzdGlvbnMgPSBld2tfaW50ZW50X3N1Z2dlc3Rpb25zX2dldChpbnRlbnQpOwotICAg
IEVJTkFfTElTVF9GUkVFKHN1Z2dlc3Rpb25zLCBkYXRhKSB7Ci0gICAgICAgIGNvbnN0IGNoYXIq
IHN1Z2dlc3Rpb24gPSBzdGF0aWNfY2FzdDxjaGFyKj4oZGF0YSk7Ci0gICAgICAgIHByaW50Zigi
SGF2ZSBzdWdnZXN0aW9uICVzXG4iLCBzdWdnZXN0aW9uKTsKLSAgICAgICAgZWluYV9zdHJpbmdz
aGFyZV9kZWwoc3VnZ2VzdGlvbik7Ci0gICAgfQotfQotCi12b2lkIER1bXBSZW5kZXJUcmVlQ2hy
b21lOjpvbkZyYW1lSW50ZW50U2VydmljZVJlZ2lzdHJhdGlvbih2b2lkKiwgRXZhc19PYmplY3Qq
LCB2b2lkKiBldmVudEluZm8pCi17Ci0gICAgRXdrX0ludGVudF9TZXJ2aWNlX0luZm8qIHNlcnZp
Y2VJbmZvID0gc3RhdGljX2Nhc3Q8RXdrX0ludGVudF9TZXJ2aWNlX0luZm8qPihldmVudEluZm8p
OwotICAgIHByaW50ZigiUmVnaXN0ZXJlZCBXZWIgSW50ZW50IFNlcnZpY2U6IGFjdGlvbj0lcyB0
eXBlPSVzIHRpdGxlPSVzIHVybD0lcyBkaXNwb3NpdGlvbj0lc1xuIiwKLSAgICAgICAgICAgc2Vy
dmljZUluZm8tPmFjdGlvbiwKLSAgICAgICAgICAgc2VydmljZUluZm8tPnR5cGUsCi0gICAgICAg
ICAgIHNlcnZpY2VJbmZvLT50aXRsZSwKLSAgICAgICAgICAgc2VydmljZUluZm8tPmhyZWYsCi0g
ICAgICAgICAgIHNlcnZpY2VJbmZvLT5kaXNwb3NpdGlvbik7Ci19Ci0KIHZvaWQgRHVtcFJlbmRl
clRyZWVDaHJvbWU6Om9uRG93bmxvYWRSZXF1ZXN0KHZvaWQqLCBFdmFzX09iamVjdCosIHZvaWQq
IGV2ZW50SW5mbykKIHsKICAgICAvLyBJbiBjYXNlIG9mICJkb3dubG9hZCxyZXF1ZXN0IiwgdGhl
IFVSTCBuZWVkIHRvIGJlIGRvd25sb2FkZWQsIG5vdCBvcGVuZWQgb24gdGhlIGN1cnJlbnQgdmll
dy4KZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2VmbC9EdW1wUmVuZGVyVHJlZUNo
cm9tZS5oIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvZWZsL0R1bXBSZW5kZXJUcmVlQ2hyb21lLmgK
aW5kZXggMzJhMzY1NC4uMWZjYzUzNCAxMDA2NDQKLS0tIGEvVG9vbHMvRHVtcFJlbmRlclRyZWUv
ZWZsL0R1bXBSZW5kZXJUcmVlQ2hyb21lLmgKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvZWZs
L0R1bXBSZW5kZXJUcmVlQ2hyb21lLmgKQEAgLTMyLDcgKzMyLDYgQEAKIAogI2luY2x1ZGUgPEVp
bmEuaD4KICNpbmNsdWRlIDxFdmFzLmg+Ci0jaW5jbHVkZSA8ZXdrX2ludGVudF9yZXF1ZXN0Lmg+
CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvT3duUHRyLmg+CiAjaW5j
bHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KQEAgLTU4LDggKzU3LDYgQEAgcHVibGljOgogICAgIEV2
YXNfT2JqZWN0KiBtYWluRnJhbWUoKSBjb25zdDsKICAgICBFdmFzX09iamVjdCogbWFpblZpZXco
KSBjb25zdDsKIAotICAgIEV3a19JbnRlbnRfUmVxdWVzdCogY3VycmVudEludGVudFJlcXVlc3Qo
KSBjb25zdDsKLQogICAgIHZvaWQgcmVzZXREZWZhdWx0c1RvQ29uc2lzdGVudFZhbHVlcygpOwog
CiBwcml2YXRlOgpAQCAtNzUsNyArNzIsNiBAQCBwcml2YXRlOgogICAgIFZlY3RvcjxFdmFzX09i
amVjdCo+IG1fZXh0cmFWaWV3czsKICAgICBzdGF0aWMgSGFzaE1hcDx1bnNpZ25lZCBsb25nLCBD
U3RyaW5nPiBtX2R1bXBBc3NpZ25lZFVybHM7CiAgICAgc3RhdGljIEV2YXNfT2JqZWN0KiBtX3By
b3Zpc2lvbmFsTG9hZEZhaWxlZEZyYW1lOwotICAgIHN0YXRpYyBFd2tfSW50ZW50X1JlcXVlc3Qq
IG1fY3VycmVudEludGVudFJlcXVlc3Q7CiAKICAgICAvLyBTbWFydCBjYWxsYmFja3MKICAgICBz
dGF0aWMgdm9pZCBvbldpbmRvd09iamVjdENsZWFyZWQodm9pZCosIEV2YXNfT2JqZWN0Kiwgdm9p
ZCopOwpAQCAtMTM5LDkgKzEzNSw2IEBAIHByaXZhdGU6CiAKICAgICBzdGF0aWMgdm9pZCBvbk5l
d1Jlc291cmNlUmVxdWVzdCh2b2lkKiwgRXZhc19PYmplY3QqLCB2b2lkKik7CiAKLSAgICBzdGF0
aWMgdm9pZCBvbkZyYW1lSW50ZW50TmV3KHZvaWQqLCBFdmFzX09iamVjdCosIHZvaWQqKTsKLSAg
ICBzdGF0aWMgdm9pZCBvbkZyYW1lSW50ZW50U2VydmljZVJlZ2lzdHJhdGlvbih2b2lkKiwgRXZh
c19PYmplY3QqLCB2b2lkKik7Ci0KICAgICBzdGF0aWMgdm9pZCBvbkRvd25sb2FkUmVxdWVzdCh2
b2lkKiwgRXZhc19PYmplY3QqLCB2b2lkKik7CiB9OwogCmRpZmYgLS1naXQgYS9Ub29scy9EdW1w
UmVuZGVyVHJlZS9lZmwvVGVzdFJ1bm5lckVmbC5jcHAgYi9Ub29scy9EdW1wUmVuZGVyVHJlZS9l
ZmwvVGVzdFJ1bm5lckVmbC5jcHAKaW5kZXggMTdmYWY0OC4uYzA1MjU4ZSAxMDA2NDQKLS0tIGEv
VG9vbHMvRHVtcFJlbmRlclRyZWUvZWZsL1Rlc3RSdW5uZXJFZmwuY3BwCisrKyBiL1Rvb2xzL0R1
bXBSZW5kZXJUcmVlL2VmbC9UZXN0UnVubmVyRWZsLmNwcApAQCAtOTAxLDE4ICs5MDEsMTggQEAg
dm9pZCBUZXN0UnVubmVyOjpzZXRBdXRvbWF0aWNMaW5rRGV0ZWN0aW9uRW5hYmxlZChib29sKQog
ICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKLXZvaWQgVGVzdFJ1bm5lcjo6c2VuZFdlYkludGVu
dFJlc3BvbnNlKEpTU3RyaW5nUmVmIHJlc3BvbnNlKQordm9pZCBUZXN0UnVubmVyOjpzZW5kV2Vi
SW50ZW50UmVzcG9uc2UoSlNTdHJpbmdSZWYpCiB7Ci0gICAgRXdrX0ludGVudF9SZXF1ZXN0KiBy
ZXF1ZXN0ID0gYnJvd3Nlci0+Y3VycmVudEludGVudFJlcXVlc3QoKTsKLSAgICBpZiAoIXJlcXVl
c3QpCi0gICAgICAgIHJldHVybjsKLQotICAgIER1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbDo6c2Vu
ZFdlYkludGVudFJlc3BvbnNlKHJlcXVlc3QsIHJlc3BvbnNlKTsKKyAgICAvLyBObyBwbGFuIHRv
IHN1cHBvcnQgV2ViIEludGVudHMuIFRoZSBmZWF0dXJlIHdpbGwgbGlrZWx5CisgICAgLy8gYmUg
cmVtb3ZlZCBmcm9tIFdlYktpdC4KKyAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCi12b2lkIFRl
c3RSdW5uZXI6OmRlbGl2ZXJXZWJJbnRlbnQoSlNTdHJpbmdSZWYgYWN0aW9uLCBKU1N0cmluZ1Jl
ZiB0eXBlLCBKU1N0cmluZ1JlZiBkYXRhKQordm9pZCBUZXN0UnVubmVyOjpkZWxpdmVyV2ViSW50
ZW50KEpTU3RyaW5nUmVmLCBKU1N0cmluZ1JlZiwgSlNTdHJpbmdSZWYpCiB7Ci0gICAgRHVtcFJl
bmRlclRyZWVTdXBwb3J0RWZsOjpkZWxpdmVyV2ViSW50ZW50KGJyb3dzZXItPm1haW5GcmFtZSgp
LCBhY3Rpb24sIHR5cGUsIGRhdGEpOworICAgIC8vIE5vIHBsYW4gdG8gc3VwcG9ydCBXZWIgSW50
ZW50cy4gVGhlIGZlYXR1cmUgd2lsbCBsaWtlbHkKKyAgICAvLyBiZSByZW1vdmVkIGZyb20gV2Vi
S2l0LgorICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKIHZvaWQgVGVzdFJ1bm5lcjo6c2V0U3Rv
cmFnZURhdGFiYXNlSWRsZUludGVydmFsKGRvdWJsZSkKZGlmZiAtLWdpdCBhL1Rvb2xzL1Njcmlw
dHMvd2Via2l0cGVybC9GZWF0dXJlTGlzdC5wbSBiL1Rvb2xzL1NjcmlwdHMvd2Via2l0cGVybC9G
ZWF0dXJlTGlzdC5wbQppbmRleCBmNGVhYzk1Li4xNzU1OWRlIDEwMDY0NAotLS0gYS9Ub29scy9T
Y3JpcHRzL3dlYmtpdHBlcmwvRmVhdHVyZUxpc3QucG0KKysrIGIvVG9vbHMvU2NyaXB0cy93ZWJr
aXRwZXJsL0ZlYXR1cmVMaXN0LnBtCkBAIC00NTgsMTAgKzQ1OCwxMCBAQCBteSBAZmVhdHVyZXMg
PSAoCiAgICAgICBkZWZpbmUgPT4gIkVOQUJMRV9XRUJfQVVESU8iLCBkZWZhdWx0ID0+IChpc0Vm
bCgpKSwgdmFsdWUgPT4gXCR3ZWJBdWRpb1N1cHBvcnQgfSwKIAogICAgIHsgb3B0aW9uID0+ICJ3
ZWItaW50ZW50cyIsIGRlc2MgPT4gIlRvZ2dsZSBXZWIgSW50ZW50cyBzdXBwb3J0IiwKLSAgICAg
IGRlZmluZSA9PiAiRU5BQkxFX1dFQl9JTlRFTlRTIiwgZGVmYXVsdCA9PiBpc0VmbCgpLCB2YWx1
ZSA9PiBcJHdlYkludGVudHNTdXBwb3J0IH0sCisgICAgICBkZWZpbmUgPT4gIkVOQUJMRV9XRUJf
SU5URU5UUyIsIGRlZmF1bHQgPT4gMCwgdmFsdWUgPT4gXCR3ZWJJbnRlbnRzU3VwcG9ydCB9LAog
CiAgICAgeyBvcHRpb24gPT4gIndlYi1pbnRlbnRzLXRhZyIsIGRlc2MgPT4gIlRvZ2dsZSBXZWIg
SW50ZW50cyBUYWcgc3VwcG9ydCIsCi0gICAgICBkZWZpbmUgPT4gIkVOQUJMRV9XRUJfSU5URU5U
U19UQUciLCBkZWZhdWx0ID0+IGlzRWZsKCksIHZhbHVlID0+IFwkd2ViSW50ZW50c1RhZ1N1cHBv
cnQgfSwKKyAgICAgIGRlZmluZSA9PiAiRU5BQkxFX1dFQl9JTlRFTlRTX1RBRyIsIGRlZmF1bHQg
PT4gMCwgdmFsdWUgPT4gXCR3ZWJJbnRlbnRzVGFnU3VwcG9ydCB9LAogCiAgICAgeyBvcHRpb24g
PT4gIndlYi1zb2NrZXRzIiwgZGVzYyA9PiAiVG9nZ2xlIFdlYiBTb2NrZXRzIHN1cHBvcnQiLAog
ICAgICAgZGVmaW5lID0+ICJFTkFCTEVfV0VCX1NPQ0tFVFMiLCBkZWZhdWx0ID0+IDEsIHZhbHVl
ID0+IFwkd2ViU29ja2V0c1N1cHBvcnQgfSwK
</data>

          </attachment>
      

    </bug>

</bugzilla>