<?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>172029</bug_id>
          
          <creation_ts>2017-05-12 08:40:41 -0700</creation_ts>
          <short_desc>Stop using PassRefPtr under WebKit2/UIProcess</short_desc>
          <delta_ts>2017-05-12 15:15:43 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>WebKit2</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Chris Dumez">cdumez</reporter>
          <assigned_to name="Chris Dumez">cdumez</assigned_to>
          <cc>achristensen</cc>
    
    <cc>buildbot</cc>
    
    <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>ggaren</cc>
    
    <cc>kling</cc>
    
    <cc>koivisto</cc>
    
    <cc>rniwa</cc>
    
    <cc>sam</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1307879</commentid>
    <comment_count>0</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-05-12 08:40:41 -0700</bug_when>
    <thetext>Stop using PassRefPtr under WebKit2/UIProcess.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1307897</commentid>
    <comment_count>1</comment_count>
      <attachid>309901</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-05-12 09:31:18 -0700</bug_when>
    <thetext>Created attachment 309901
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1307898</commentid>
    <comment_count>2</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-05-12 09:32:23 -0700</bug_when>
    <thetext>Attachment 309901 did not pass style-queue:


ERROR: Source/WebKit2/UIProcess/WebPageProxy.cpp:5715:  More than one command on the same line  [whitespace/newline] [4]
Total errors found: 1 in 47 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1307899</commentid>
    <comment_count>3</comment_count>
      <attachid>309902</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-05-12 09:36:49 -0700</bug_when>
    <thetext>Created attachment 309902
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1307900</commentid>
    <comment_count>4</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-05-12 09:39:26 -0700</bug_when>
    <thetext>Attachment 309902 did not pass style-queue:


ERROR: Source/WebKit2/UIProcess/WebPageProxy.cpp:5715:  More than one command on the same line  [whitespace/newline] [4]
Total errors found: 1 in 48 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1307901</commentid>
    <comment_count>5</comment_count>
      <attachid>309903</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-05-12 09:41:30 -0700</bug_when>
    <thetext>Created attachment 309903
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1307904</commentid>
    <comment_count>6</comment_count>
    <who name="Build Bot">buildbot</who>
    <bug_when>2017-05-12 09:44:47 -0700</bug_when>
    <thetext>Attachment 309903 did not pass style-queue:


ERROR: Source/WebKit2/UIProcess/WebPageProxy.cpp:5715:  More than one command on the same line  [whitespace/newline] [4]
Total errors found: 1 in 49 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1308078</commentid>
    <comment_count>7</comment_count>
      <attachid>309903</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-05-12 15:00:06 -0700</bug_when>
    <thetext>Comment on attachment 309903
Patch

Clearing flags on attachment: 309903

Committed r216794: &lt;http://trac.webkit.org/changeset/216794&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1308079</commentid>
    <comment_count>8</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-05-12 15:00:08 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1308081</commentid>
    <comment_count>9</comment_count>
      <attachid>309903</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2017-05-12 15:02:00 -0700</bug_when>
    <thetext>Comment on attachment 309903
Patch

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

&gt; Source/WebKit2/UIProcess/WebPageProxy.h:862
&gt; +    void registerEditCommand(Ref&lt;WebEditCommandProxy&gt;&amp;&amp;, UndoOrRedo);

I think this should take WebEditCommandProxy&amp;; it’s not transferring ownership. As far as I can tell, the callers are passing *this, not a newly created object nor the last reference to an object.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1308098</commentid>
    <comment_count>10</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2017-05-12 15:15:43 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #9)
&gt; Comment on attachment 309903 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=309903&amp;action=review
&gt; 
&gt; &gt; Source/WebKit2/UIProcess/WebPageProxy.h:862
&gt; &gt; +    void registerEditCommand(Ref&lt;WebEditCommandProxy&gt;&amp;&amp;, UndoOrRedo);
&gt; 
&gt; I think this should take WebEditCommandProxy&amp;; it’s not transferring
&gt; ownership. As far as I can tell, the callers are passing *this, not a newly
&gt; created object nor the last reference to an object.

2 call sites pass *this and another passes a Ref&lt;&gt;&amp;&amp;:
void WebPageProxy::registerEditCommandForUndo(uint64_t commandID, uint32_t editAction)
{
    registerEditCommand(WebEditCommandProxy::create(commandID, static_cast&lt;EditAction&gt;(editAction), this), Undo);
}

Also, the implementation ends up storing the command into a RefPtr.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>309901</attachid>
            <date>2017-05-12 09:31:18 -0700</date>
            <delta_ts>2017-05-12 09:36:48 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-172029-20170512093117.patch</filename>
            <type>text/plain</type>
            <size>74717</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE2NzY0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggM2QzYmE4ODcyYWI0YjNi
OWJkMWI1NGY5NjViYmE1MTEwMTM4NjNiNS4uMGI0YjhiYzFiM2NjYWIwMGEwNzQxMTQ1ZjAxYTA1
MzdiZmI0MjIxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDEwNSBAQAogMjAxNy0wNS0xMiAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCisgICAgICAgIFN0b3AgdXNpbmcgUGFzc1Jl
ZlB0ciB1bmRlciBXZWJLaXQyL1VJUHJvY2VzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTcyMDI5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbToK
KyAgICAgICAgKC1bV0tXZWJWaWV3IF90YWtlVmlld1NuYXBzaG90XSk6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdJbnRlcm5hbC5oOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvZ3RrL1BhZ2VDbGllbnRJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVu
dEltcGw6OnJlZ2lzdGVyRWRpdENvbW1hbmQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3Rr
L1BhZ2VDbGllbnRJbXBsLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0RmF2
aWNvbkRhdGFiYXNlLmNwcDoKKyAgICAgICAgKGdldEljb25TdXJmYWNlU3luY2hyb25vdXNseSk6
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViQ29udGV4dC5jcHA6CisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS93cGUvUGFnZUNsaWVudEltcGwuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpQYWdlQ2xpZW50SW1wbDo6cmVnaXN0ZXJFZGl0Q29tbWFuZCk6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS93cGUvUGFnZUNsaWVudEltcGwuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29j
b2EvV2ViVmlld0ltcGwuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwu
bW06CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpyZWdpc3RlckVkaXRDb21tYW5kKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvRGVmYXVsdFVuZG9Db250cm9sbGVyLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6RGVmYXVsdFVuZG9Db250cm9sbGVyOjpyZWdpc3RlckVkaXRDb21tYW5kKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvRGVmYXVsdFVuZG9Db250cm9sbGVyLmg6CisgICAgICAgICogVUlQ
cm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6RG93
bmxvYWRQcm94eTo6Y3JlYXRlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25s
b2FkUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVx
dWVzdE1hbmFnZXJQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6Okdlb2xvY2F0aW9uUGVybWlz
c2lvblJlcXVlc3RNYW5hZ2VyUHJveHk6OmNyZWF0ZVJlcXVlc3QpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9HZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5Lmg6CisgICAgICAg
ICogVUlQcm9jZXNzL0luc3BlY3RvclNlcnZlci9IVFRQUmVxdWVzdC5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OkhUVFBSZXF1ZXN0OjpwYXJzZUhUVFBSZXF1ZXN0RnJvbUJ1ZmZlcik6CisgICAgICAg
ICogVUlQcm9jZXNzL0luc3BlY3RvclNlcnZlci9IVFRQUmVxdWVzdC5oOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9JbnNwZWN0b3JTZXJ2ZXIvV2ViSW5zcGVjdG9yU2VydmVyLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViSW5zcGVjdG9yU2VydmVyOjpkaWRSZWNlaXZlVW5yZWNvZ25pemVkSFRUUFJl
cXVlc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JTZXJ2ZXI6OmRpZFJlY2VpdmVX
ZWJTb2NrZXRVcGdyYWRlSFRUUFJlcXVlc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0
b3JTZXJ2ZXI6OmRpZEVzdGFibGlzaFdlYlNvY2tldENvbm5lY3Rpb24pOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9JbnNwZWN0b3JTZXJ2ZXIvV2ViSW5zcGVjdG9yU2VydmVyLmg6CisgICAgICAgICog
VUlQcm9jZXNzL0luc3BlY3RvclNlcnZlci9XZWJTb2NrZXRTZXJ2ZXJDbGllbnQuaDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViU29ja2V0U2VydmVyQ2xpZW50OjpkaWRSZWNlaXZlVW5yZWNvZ25pemVk
SFRUUFJlcXVlc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJTb2NrZXRTZXJ2ZXJDbGllbnQ6OmRp
ZFJlY2VpdmVXZWJTb2NrZXRVcGdyYWRlSFRUUFJlcXVlc3QpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJTb2NrZXRTZXJ2ZXJDbGllbnQ6OmRpZEVzdGFibGlzaFdlYlNvY2tldENvbm5lY3Rpb24pOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9JbnNwZWN0b3JTZXJ2ZXIvV2ViU29ja2V0U2VydmVyQ29ubmVj
dGlvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlNvY2tldFNlcnZlckNvbm5lY3Rpb246OnJl
YWRIVFRQTWVzc2FnZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlNvY2tldFNlcnZlckNvbm5lY3Rp
b246OnVwZ3JhZGVUb1dlYlNvY2tldFNlcnZlckNvbm5lY3Rpb24pOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9JbnNwZWN0b3JTZXJ2ZXIvV2ViU29ja2V0U2VydmVyQ29ubmVjdGlvbi5oOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL05vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0
TWFuYWdlclByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6Tm90aWZpY2F0aW9uUGVybWlzc2lv
blJlcXVlc3RNYW5hZ2VyUHJveHk6OmNyZWF0ZVJlcXVlc3QpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9Ob3RpZmljYXRpb25zL05vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5
Lmg6CisgICAgICAgICogVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uUHJv
dmlkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJOb3RpZmljYXRpb25Qcm92aWRlcjo6bm90
aWZpY2F0aW9uUGVybWlzc2lvbnMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Ob3RpZmljYXRpb25z
L1dlYk5vdGlmaWNhdGlvblByb3ZpZGVyLmg6CisgICAgICAgICogVUlQcm9jZXNzL1BhZ2VDbGll
bnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvU3RvcmFnZS9Mb2NhbFN0b3JhZ2VEYXRhYmFzZS5j
cHA6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkNvbnRleHRNZW51TGlzdGVuZXJQcm94eS5oOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9XZWJDb29raWVNYW5hZ2VyUHJveHkuaDoKKyAgICAgICAgKiBV
SVByb2Nlc3MvV2ViRWRpdENvbW1hbmRQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkVk
aXRDb21tYW5kUHJveHk6OnVuYXBwbHkpOgorICAgICAgICAoV2ViS2l0OjpXZWJFZGl0Q29tbWFu
ZFByb3h5OjpyZWFwcGx5KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViRWRpdENvbW1hbmRQcm94
eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJHcmFtbWFyRGV0YWlsLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViR3JhbW1hckRldGFpbDo6Y3JlYXRlKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
V2ViR3JhbW1hckRldGFpbC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpFeGNlZWRlZERhdGFiYXNlUXVvdGFSZWNvcmRzOjpjcmVhdGVS
ZWNvcmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJlZ2lzdGVyRWRpdENvbW1h
bmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRpZFJlY2VpdmVBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZVByb3h5KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpleGNl
ZWRlZERhdGFiYXNlUXVvdGEpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJlYWNo
ZWRBcHBsaWNhdGlvbkNhY2hlT3JpZ2luUXVvdGEpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
UHJveHk6OnRha2VWaWV3U25hcHNob3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6cGx1Z0luQXV0b1N0YXJ0T3JpZ2luSGFzaGVzKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
V2ViUHJvY2Vzc1Byb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1w
bElPUy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MubW06Cisg
ICAgICAgICgtW1dLRWRpdENvbW1hbmRPYmpDIGluaXRXaXRoV2ViRWRpdENvbW1hbmRQcm94eTpd
KToKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6OnJlZ2lzdGVyRWRpdENvbW1hbmQp
OgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6c2F2ZUltYWdlVG9MaWJyYXJ5KToK
KyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6OnNldERyYWdJbWFnZSk6CisgICAgICAg
IChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjp0YWtlVmlld1NuYXBzaG90KToKKyAgICAgICAgKiBV
SVByb2Nlc3MvaW9zL1dLR2VvbG9jYXRpb25Qcm92aWRlcklPUy5tbToKKyAgICAgICAgKC1bV0tX
ZWJBbGxvd0RlbnlQb2xpY3lMaXN0ZW5lciBpbml0V2l0aFBlcm1pc3Npb25SZXF1ZXN0UHJveHk6
XSk6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW06CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2F2ZUltYWdlVG9MaWJyYXJ5KToKKyAgICAgICAgKiBV
SVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsLmg6CisgICAgICAgICogVUlQcm9jZXNzL21hYy9Q
YWdlQ2xpZW50SW1wbC5tbToKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6OnJlZ2lz
dGVyRWRpdENvbW1hbmQpOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6c2V0RHJh
Z0ltYWdlKToKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6OnNldFByb21pc2VkRGF0
YUZvckltYWdlKToKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6OnRha2VWaWV3U25h
cHNob3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvV0tJbW1lZGlhdGVBY3Rpb25Db250cm9s
bGVyLm1tOgorICAgICAgICAoLVtXS0ltbWVkaWF0ZUFjdGlvbkNvbnRyb2xsZXIgX3dlYkhpdFRl
c3RSZXN1bHRdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbToK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzZXREcmFnSW1hZ2UpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlUHJveHk6OnNldFByb21pc2VkRGF0YUZvckltYWdlKToKKyAgICAgICAg
KiBXZWJQcm9jZXNzL0ljb25EYXRhYmFzZS9XZWJJY29uRGF0YWJhc2VQcm94eS5oOgorCisyMDE3
LTA1LTEyICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKICAgICAgICAgU3RvcCB1
c2luZyBQYXNzUmVmUHRyIHVuZGVyIFdlYktpdDIvU2hhcmVkCiAgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzIwMTcKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQppbmRleCAwYTQwMzVjMGE2MGU0Y2Iy
MjhjYWE3OWU1N2FiMDgxMTU0NjA4NzJjLi5lNTI4OTQ5ZDg1NTM0NWZkMzM0ZjYyNjFmYjM2Mjdj
YzI2NjExN2ZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLV2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
V2ViVmlldy5tbQpAQCAtMTYzMCw3ICsxNjMwLDcgQEAgLSAodm9pZClfcmVzdG9yZVBhZ2VTdGF0
ZVRvVW5vYnNjdXJlZENlbnRlcjooc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpGbG9hdFBvaW50PikK
ICAgICBfc2NhbGVUb1Jlc3RvcmUgPSBzY2FsZTsKIH0KIAotLSAoUGFzc1JlZlB0cjxXZWJLaXQ6
OlZpZXdTbmFwc2hvdD4pX3Rha2VWaWV3U25hcHNob3QKKy0gKFJlZlB0cjxXZWJLaXQ6OlZpZXdT
bmFwc2hvdD4pX3Rha2VWaWV3U25hcHNob3QKIHsKICAgICBmbG9hdCBkZXZpY2VTY2FsZSA9IFdl
YkNvcmU6OnNjcmVlblNjYWxlRmFjdG9yKCk7CiAgICAgV2ViQ29yZTo6RmxvYXRTaXplIHNuYXBz
aG90U2l6ZShzZWxmLmJvdW5kcy5zaXplKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3SW50ZXJuYWwuaCBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3SW50ZXJuYWwuaAppbmRleCAzZDYwNjZlNTEzNTUy
MGZhMjRiZjBkZTUyNjllZTU0OTM5M2JiN2Q2Li41MjkzODA3MzNhYjFlNjcwMmFkNmVhNDhhZGE2
OThkNjg2NTRiZmVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Nv
Y29hL1dLV2ViVmlld0ludGVybmFsLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9Db2NvYS9XS1dlYlZpZXdJbnRlcm5hbC5oCkBAIC04NSw3ICs4NSw3IEBAIHN0cnVjdCBQcmlu
dEluZm87CiAtICh2b2lkKV9yZXN0b3JlUGFnZVNjcm9sbFBvc2l0aW9uOihzdGQ6Om9wdGlvbmFs
PFdlYkNvcmU6OkZsb2F0UG9pbnQ+KXNjcm9sbFBvc2l0aW9uIHNjcm9sbE9yaWdpbjooV2ViQ29y
ZTo6RmxvYXRQb2ludClzY3JvbGxPcmlnaW4gcHJldmlvdXNPYnNjdXJlZEluc2V0OihXZWJDb3Jl
OjpGbG9hdEJveEV4dGVudClpbnNldHMgc2NhbGU6KGRvdWJsZSlzY2FsZTsKIC0gKHZvaWQpX3Jl
c3RvcmVQYWdlU3RhdGVUb1Vub2JzY3VyZWRDZW50ZXI6KHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6
RmxvYXRQb2ludD4pY2VudGVyIHNjYWxlOihkb3VibGUpc2NhbGU7IC8vIEZJWE1FOiBuZWVkcyBz
Y3JvbGwgb3JpZ2luPwogCi0tIChQYXNzUmVmUHRyPFdlYktpdDo6Vmlld1NuYXBzaG90PilfdGFr
ZVZpZXdTbmFwc2hvdDsKKy0gKFJlZlB0cjxXZWJLaXQ6OlZpZXdTbmFwc2hvdD4pX3Rha2VWaWV3
U25hcHNob3Q7CiAKIC0gKHZvaWQpX3Njcm9sbFRvQ29udGVudFNjcm9sbFBvc2l0aW9uOihXZWJD
b3JlOjpGbG9hdFBvaW50KXNjcm9sbFBvc2l0aW9uIHNjcm9sbE9yaWdpbjooV2ViQ29yZTo6SW50
UG9pbnQpc2Nyb2xsT3JpZ2luOwogLSAoQk9PTClfc2Nyb2xsVG9SZWN0OihXZWJDb3JlOjpGbG9h
dFJlY3QpdGFyZ2V0UmVjdCBvcmlnaW46KFdlYkNvcmU6OkZsb2F0UG9pbnQpb3JpZ2luIG1pbmlt
dW1TY3JvbGxEaXN0YW5jZTooZmxvYXQpbWluaW11bVNjcm9sbERpc3RhbmNlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvUGFnZUNsaWVudEltcGwuY3BwIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvUGFnZUNsaWVudEltcGwuY3BwCmluZGV4
IGZiN2M4NWU3NTUwNWQ1NzY3Njk4NWNjMWEyZmY3MmQzYWJlZDI5OTkuLjk4ZTA2NzNhYTUxZGRh
MjljMTczY2I5N2FiMTVlMzhlYWU3Mzk3MWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZ3RrL1BhZ2VDbGllbnRJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xpZW50SW1wbC5jcHAKQEAgLTE0Nyw5ICsxNDcsOSBAQCB2
b2lkIFBhZ2VDbGllbnRJbXBsOjpkaWRDaGFuZ2VWaWV3cG9ydFByb3BlcnRpZXMoY29uc3QgV2Vi
Q29yZTo6Vmlld3BvcnRBdHRyaWJ1dAogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKLXZvaWQg
UGFnZUNsaWVudEltcGw6OnJlZ2lzdGVyRWRpdENvbW1hbmQoUGFzc1JlZlB0cjxXZWJFZGl0Q29t
bWFuZFByb3h5PiBjb21tYW5kLCBXZWJQYWdlUHJveHk6OlVuZG9PclJlZG8gdW5kb09yUmVkbykK
K3ZvaWQgUGFnZUNsaWVudEltcGw6OnJlZ2lzdGVyRWRpdENvbW1hbmQoUmVmPFdlYkVkaXRDb21t
YW5kUHJveHk+JiYgY29tbWFuZCwgV2ViUGFnZVByb3h5OjpVbmRvT3JSZWRvIHVuZG9PclJlZG8p
CiB7Ci0gICAgbV91bmRvQ29udHJvbGxlci5yZWdpc3RlckVkaXRDb21tYW5kKGNvbW1hbmQsIHVu
ZG9PclJlZG8pOworICAgIG1fdW5kb0NvbnRyb2xsZXIucmVnaXN0ZXJFZGl0Q29tbWFuZChXVEZN
b3ZlKGNvbW1hbmQpLCB1bmRvT3JSZWRvKTsKIH0KIAogdm9pZCBQYWdlQ2xpZW50SW1wbDo6Y2xl
YXJBbGxFZGl0Q29tbWFuZHMoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0FQSS9ndGsvUGFnZUNsaWVudEltcGwuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkv
Z3RrL1BhZ2VDbGllbnRJbXBsLmgKaW5kZXggMWM2MThlMWUzMTBhYTBhODE4ZDRlMTcwM2M1NDc3
NTkwOTlhOTU4ZS4uYTAxYmYwN2IyZDA0MjQ4OWRmNzBmNTRjM2E0ZjRiNDRlMTMwZGVjYyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvUGFnZUNsaWVudEltcGwu
aAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xpZW50SW1wbC5o
CkBAIC03MSw3ICs3MSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXRDdXJzb3IoY29uc3QgV2Vi
Q29yZTo6Q3Vyc29yJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBzZXRDdXJzb3JIaWRkZW5VbnRpbE1v
dXNlTW92ZXMoYm9vbCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRDaGFuZ2VWaWV3cG9ydFByb3Bl
cnRpZXMoY29uc3QgV2ViQ29yZTo6Vmlld3BvcnRBdHRyaWJ1dGVzJikgb3ZlcnJpZGU7Ci0gICAg
dm9pZCByZWdpc3RlckVkaXRDb21tYW5kKFBhc3NSZWZQdHI8V2ViRWRpdENvbW1hbmRQcm94eT4s
IFdlYlBhZ2VQcm94eTo6VW5kb09yUmVkbykgb3ZlcnJpZGU7CisgICAgdm9pZCByZWdpc3RlckVk
aXRDb21tYW5kKFJlZjxXZWJFZGl0Q29tbWFuZFByb3h5PiYmLCBXZWJQYWdlUHJveHk6OlVuZG9P
clJlZG8pIG92ZXJyaWRlOwogICAgIHZvaWQgY2xlYXJBbGxFZGl0Q29tbWFuZHMoKSBvdmVycmlk
ZTsKICAgICBib29sIGNhblVuZG9SZWRvKFdlYlBhZ2VQcm94eTo6VW5kb09yUmVkbykgb3ZlcnJp
ZGU7CiAgICAgdm9pZCBleGVjdXRlVW5kb1JlZG8oV2ViUGFnZVByb3h5OjpVbmRvT3JSZWRvKSBv
dmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dl
YktpdEZhdmljb25EYXRhYmFzZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0
ay9XZWJLaXRGYXZpY29uRGF0YWJhc2UuY3BwCmluZGV4IDc0NjU0YmI0Zjg4OGU0ODYzOGZmM2U1
MzZkNTA1OTZlZjAyOTIwMmMuLmYzODgyMDk4YzNkYTliMzUwNzc5Mzk4MTIwZDBlMjI3MzRkODk0
MzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEZh
dmljb25EYXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsv
V2ViS2l0RmF2aWNvbkRhdGFiYXNlLmNwcApAQCAtMTMxLDcgKzEzMSw3IEBAIHN0cnVjdCBHZXRG
YXZpY29uU3VyZmFjZUFzeW5jRGF0YSB7CiB9OwogV0VCS0lUX0RFRklORV9BU1lOQ19EQVRBX1NU
UlVDVChHZXRGYXZpY29uU3VyZmFjZUFzeW5jRGF0YSkKIAotc3RhdGljIFBhc3NSZWZQdHI8Y2Fp
cm9fc3VyZmFjZV90PiBnZXRJY29uU3VyZmFjZVN5bmNocm9ub3VzbHkoV2ViS2l0RmF2aWNvbkRh
dGFiYXNlKiBkYXRhYmFzZSwgY29uc3QgU3RyaW5nJiBwYWdlVVJMLCBHRXJyb3IqKiBlcnJvcikK
K3N0YXRpYyBSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiBnZXRJY29uU3VyZmFjZVN5bmNocm9ub3Vz
bHkoV2ViS2l0RmF2aWNvbkRhdGFiYXNlKiBkYXRhYmFzZSwgY29uc3QgU3RyaW5nJiBwYWdlVVJM
LCBHRXJyb3IqKiBlcnJvcikKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogCkBA
IC0xNDAsMTYgKzE0MCwxNiBAQCBzdGF0aWMgUGFzc1JlZlB0cjxjYWlyb19zdXJmYWNlX3Q+IGdl
dEljb25TdXJmYWNlU3luY2hyb25vdXNseShXZWJLaXRGYXZpY29uRGF0YQogICAgIFdlYkNvcmU6
OkltYWdlKiBpY29uSW1hZ2UgPSBkYXRhYmFzZS0+cHJpdi0+aWNvbkRhdGFiYXNlLT5pbWFnZUZv
clBhZ2VVUkwocGFnZVVSTCwgV2ViQ29yZTo6SW50U2l6ZSgxLCAxKSk7CiAgICAgaWYgKCFpY29u
SW1hZ2UpIHsKICAgICAgICAgZ19zZXRfZXJyb3IoZXJyb3IsIFdFQktJVF9GQVZJQ09OX0RBVEFC
QVNFX0VSUk9SLCBXRUJLSVRfRkFWSUNPTl9EQVRBQkFTRV9FUlJPUl9GQVZJQ09OX1VOS05PV04s
IF8oIlVua25vd24gZmF2aWNvbiBmb3IgcGFnZSAlcyIpLCBwYWdlVVJMLnV0ZjgoKS5kYXRhKCkp
OwotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCiAg
ICAgUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4gc3VyZmFjZSA9IGljb25JbWFnZS0+bmF0aXZlSW1h
Z2VGb3JDdXJyZW50RnJhbWUoKTsKICAgICBpZiAoIXN1cmZhY2UpIHsKICAgICAgICAgZ19zZXRf
ZXJyb3IoZXJyb3IsIFdFQktJVF9GQVZJQ09OX0RBVEFCQVNFX0VSUk9SLCBXRUJLSVRfRkFWSUNP
Tl9EQVRBQkFTRV9FUlJPUl9GQVZJQ09OX05PVF9GT1VORCwgXygiUGFnZSAlcyBkb2VzIG5vdCBo
YXZlIGEgZmF2aWNvbiIpLCBwYWdlVVJMLnV0ZjgoKS5kYXRhKCkpOwotICAgICAgICByZXR1cm4g
MDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCi0gICAgcmV0dXJuIHN1cmZhY2Uu
cmVsZWFzZSgpOworICAgIHJldHVybiBzdXJmYWNlOwogfQogCiBzdGF0aWMgdm9pZCBkZWxldGVQ
ZW5kaW5nSWNvblJlcXVlc3RzKFdlYktpdEZhdmljb25EYXRhYmFzZSogZGF0YWJhc2UsIFBlbmRp
bmdJY29uUmVxdWVzdFZlY3RvciogcmVxdWVzdHMsIGNvbnN0IFN0cmluZyYgcGFnZVVSTCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYkNvbnRl
eHQuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViQ29udGV4
dC5jcHAKaW5kZXggOTYyOTMxNGQxNTE1NjM5Y2Y5YmVkZTBjNzRkNmEwYjNmNGFjNjBiZS4uZDE3
ZDI3Njc2MjdhZWQyMzU3NmRkMmZmOGU2OTNmYTJjOTc4Mzg4NiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViQ29udGV4dC5jcHAKKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViQ29udGV4dC5jcHAKQEAgLTYz
LDggKzYzLDggQEAKICNpbmNsdWRlIDxtZW1vcnk+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4K
ICNpbmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0
ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5o
PgogI2luY2x1ZGUgPHd0Zi9nbGliL0dSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvZ2xpYi9HVW5p
cXVlUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS93cGUvUGFnZUNsaWVudEltcGwuY3BwIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS93cGUvUGFnZUNsaWVudEltcGwuY3BwCmluZGV4IGQxNjUz
MDk1ZmI1ODQ5Y2U4MGY2NzhkMzczMjIyODZmMzU4ODJhY2QuLjMxNjM5NDliMmFkYTc5NjBlNTAz
ZGJkYWM5YmQ1MTUzMTk0YWU3ZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvd3BlL1BhZ2VDbGllbnRJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvQVBJL3dwZS9QYWdlQ2xpZW50SW1wbC5jcHAKQEAgLTEzMiw3ICsxMzIsNyBAQCB2b2lkIFBh
Z2VDbGllbnRJbXBsOjpkaWRDaGFuZ2VWaWV3cG9ydFByb3BlcnRpZXMoY29uc3QgV2ViQ29yZTo6
Vmlld3BvcnRBdHRyaWJ1dAogewogfQogCi12b2lkIFBhZ2VDbGllbnRJbXBsOjpyZWdpc3RlckVk
aXRDb21tYW5kKFBhc3NSZWZQdHI8V2ViRWRpdENvbW1hbmRQcm94eT4sIFdlYlBhZ2VQcm94eTo6
VW5kb09yUmVkbykKK3ZvaWQgUGFnZUNsaWVudEltcGw6OnJlZ2lzdGVyRWRpdENvbW1hbmQoUmVm
PFdlYkVkaXRDb21tYW5kUHJveHk+JiYsIFdlYlBhZ2VQcm94eTo6VW5kb09yUmVkbykKIHsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS93cGUvUGFnZUNsaWVu
dEltcGwuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvd3BlL1BhZ2VDbGllbnRJbXBs
LmgKaW5kZXggZTc5YWNlMTA2ZjYxZDE5ZWFlMGM5OWVhYjBhZDI2NTExOWFlZTFlMS4uZDE0NTZi
ZWY5ZmM0NDc3MzJhNGFjZGRmNjQyYzM5ZmZiODUzZmNiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS93cGUvUGFnZUNsaWVudEltcGwuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQVBJL3dwZS9QYWdlQ2xpZW50SW1wbC5oCkBAIC02Nyw3ICs2Nyw3IEBA
IHByaXZhdGU6CiAgICAgdm9pZCBzZXRDdXJzb3JIaWRkZW5VbnRpbE1vdXNlTW92ZXMoYm9vbCkg
b3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRDaGFuZ2VWaWV3cG9ydFByb3BlcnRpZXMoY29uc3QgV2Vi
Q29yZTo6Vmlld3BvcnRBdHRyaWJ1dGVzJikgb3ZlcnJpZGU7CiAKLSAgICB2b2lkIHJlZ2lzdGVy
RWRpdENvbW1hbmQoUGFzc1JlZlB0cjxXZWJFZGl0Q29tbWFuZFByb3h5PiwgV2ViUGFnZVByb3h5
OjpVbmRvT3JSZWRvKSBvdmVycmlkZTsKKyAgICB2b2lkIHJlZ2lzdGVyRWRpdENvbW1hbmQoUmVm
PFdlYkVkaXRDb21tYW5kUHJveHk+JiYsIFdlYlBhZ2VQcm94eTo6VW5kb09yUmVkbykgb3ZlcnJp
ZGU7CiAgICAgdm9pZCBjbGVhckFsbEVkaXRDb21tYW5kcygpIG92ZXJyaWRlOwogICAgIGJvb2wg
Y2FuVW5kb1JlZG8oV2ViUGFnZVByb3h5OjpVbmRvT3JSZWRvKSBvdmVycmlkZTsKICAgICB2b2lk
IGV4ZWN1dGVVbmRvUmVkbyhXZWJQYWdlUHJveHk6OlVuZG9PclJlZG8pIG92ZXJyaWRlOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLmggYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwuaAppbmRleCA2YTgzOGUx
Y2EyMGFlOTRkMjA1ODgzOGE4NzQ3ZDQ1ZWUxNWVhYTc2Li43MjJjMzFlYTI4MmU2ZDlkMTRiOGJl
MDI5OGVjMWY4ZGIyY2JjZjRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
Q29jb2EvV2ViVmlld0ltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2Ev
V2ViVmlld0ltcGwuaApAQCAtMjgwLDcgKzI4MCw3IEBAIHB1YmxpYzoKICAgICBib29sIGlzRWRp
dGFibGUoKSBjb25zdDsKICAgICBib29sIGV4ZWN1dGVTYXZlZENvbW1hbmRCeVNlbGVjdG9yKFNF
TCk7CiAgICAgdm9pZCBleGVjdXRlRWRpdENvbW1hbmRGb3JTZWxlY3RvcihTRUwsIGNvbnN0IFN0
cmluZyYgYXJndW1lbnQgPSBTdHJpbmcoKSk7Ci0gICAgdm9pZCByZWdpc3RlckVkaXRDb21tYW5k
KFJlZlB0cjxXZWJFZGl0Q29tbWFuZFByb3h5PiwgV2ViUGFnZVByb3h5OjpVbmRvT3JSZWRvKTsK
KyAgICB2b2lkIHJlZ2lzdGVyRWRpdENvbW1hbmQoUmVmPFdlYkVkaXRDb21tYW5kUHJveHk+JiYs
IFdlYlBhZ2VQcm94eTo6VW5kb09yUmVkbyk7CiAgICAgdm9pZCBjbGVhckFsbEVkaXRDb21tYW5k
cygpOwogICAgIGJvb2wgd3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoTlNQYXN0ZWJvYXJkICos
IE5TQXJyYXkgKnR5cGVzKTsKICAgICBib29sIHJlYWRTZWxlY3Rpb25Gcm9tUGFzdGVib2FyZChO
U1Bhc3RlYm9hcmQgKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29j
b2EvV2ViVmlld0ltcGwubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2ViVmll
d0ltcGwubW0KaW5kZXggMjhlYTdhZTliMWMwZmEzYTAzMzkzMzE0YjMzYzE1MjVmMjE0NGFkMy4u
YzIyNTE2NDhmMjcxNzc5ZDgxZWUwNzdlZjg3ODYwNzc5NDllYmZmMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbQpAQCAtMjUzMSwxMSArMjUzMSw5
IEBAIHZvaWQgV2ViVmlld0ltcGw6OmV4ZWN1dGVFZGl0Q29tbWFuZEZvclNlbGVjdG9yKFNFTCBz
ZWxlY3RvciwgY29uc3QgU3RyaW5nJiBhcmd1CiAgICAgbV9wYWdlLT5leGVjdXRlRWRpdENvbW1h
bmQoY29tbWFuZE5hbWVGb3JTZWxlY3RvcihzZWxlY3RvciksIGFyZ3VtZW50KTsKIH0KIAotdm9p
ZCBXZWJWaWV3SW1wbDo6cmVnaXN0ZXJFZGl0Q29tbWFuZChSZWZQdHI8V2ViRWRpdENvbW1hbmRQ
cm94eT4gcHJwQ29tbWFuZCwgV2ViUGFnZVByb3h5OjpVbmRvT3JSZWRvIHVuZG9PclJlZG8pCit2
b2lkIFdlYlZpZXdJbXBsOjpyZWdpc3RlckVkaXRDb21tYW5kKFJlZjxXZWJFZGl0Q29tbWFuZFBy
b3h5PiYmIGNvbW1hbmQsIFdlYlBhZ2VQcm94eTo6VW5kb09yUmVkbyB1bmRvT3JSZWRvKQogewot
ICAgIFJlZlB0cjxXZWJFZGl0Q29tbWFuZFByb3h5PiBjb21tYW5kID0gcHJwQ29tbWFuZDsKLQot
ICAgIFJldGFpblB0cjxXS0VkaXRDb21tYW5kT2JqQz4gY29tbWFuZE9iakMgPSBhZG9wdE5TKFtb
V0tFZGl0Q29tbWFuZE9iakMgYWxsb2NdIGluaXRXaXRoV2ViRWRpdENvbW1hbmRQcm94eTpjb21t
YW5kXSk7CisgICAgUmV0YWluUHRyPFdLRWRpdENvbW1hbmRPYmpDPiBjb21tYW5kT2JqQyA9IGFk
b3B0TlMoW1tXS0VkaXRDb21tYW5kT2JqQyBhbGxvY10gaW5pdFdpdGhXZWJFZGl0Q29tbWFuZFBy
b3h5OmNvbW1hbmQucHRyKCldKTsKICAgICBTdHJpbmcgYWN0aW9uTmFtZSA9IFdlYkVkaXRDb21t
YW5kUHJveHk6Om5hbWVGb3JFZGl0QWN0aW9uKGNvbW1hbmQtPmVkaXRBY3Rpb24oKSk7CiAKICAg
ICBOU1VuZG9NYW5hZ2VyICp1bmRvTWFuYWdlciA9IFttX3ZpZXcgdW5kb01hbmFnZXJdOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0RlZmF1bHRVbmRvQ29udHJvbGxlci5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvRGVmYXVsdFVuZG9Db250cm9sbGVyLmNwcApp
bmRleCBhMmRmNzZjZDg0OTUxZjQxOTUxNDlmMzI1ODQ0MTc0MjJjNjEzMjNhLi45NDI2YjFlOGFi
YzI0MDUwZjg5ODYyZTYyOTEzMmQ4MGVlZGI0NjFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvRGVmYXVsdFVuZG9Db250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvRGVmYXVsdFVuZG9Db250cm9sbGVyLmNwcApAQCAtMjcsMTIgKzI3LDEyIEBA
CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi12b2lkIERlZmF1bHRVbmRvQ29udHJvbGxlcjo6cmVn
aXN0ZXJFZGl0Q29tbWFuZChQYXNzUmVmUHRyPFdlYkVkaXRDb21tYW5kUHJveHk+IGNvbW1hbmQs
IFdlYlBhZ2VQcm94eTo6VW5kb09yUmVkbyB1bmRvT3JSZWRvKQordm9pZCBEZWZhdWx0VW5kb0Nv
bnRyb2xsZXI6OnJlZ2lzdGVyRWRpdENvbW1hbmQoUmVmPFdlYkVkaXRDb21tYW5kUHJveHk+JiYg
Y29tbWFuZCwgV2ViUGFnZVByb3h5OjpVbmRvT3JSZWRvIHVuZG9PclJlZG8pCiB7CiAgICAgaWYg
KHVuZG9PclJlZG8gPT0gV2ViUGFnZVByb3h5OjpVbmRvKQotICAgICAgICBtX3VuZG9TdGFjay5h
cHBlbmQoY29tbWFuZCk7CisgICAgICAgIG1fdW5kb1N0YWNrLmFwcGVuZChXVEZNb3ZlKGNvbW1h
bmQpKTsKICAgICBlbHNlCi0gICAgICAgIG1fcmVkb1N0YWNrLmFwcGVuZChjb21tYW5kKTsKKyAg
ICAgICAgbV9yZWRvU3RhY2suYXBwZW5kKFdURk1vdmUoY29tbWFuZCkpOwogfQogCiB2b2lkIERl
ZmF1bHRVbmRvQ29udHJvbGxlcjo6Y2xlYXJBbGxFZGl0Q29tbWFuZHMoKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0RlZmF1bHRVbmRvQ29udHJvbGxlci5oIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0RlZmF1bHRVbmRvQ29udHJvbGxlci5oCmluZGV4IDMxNjE3YTBl
Yzk4OTZjZTRmODgzZjZlNGU1YzQzNDRlMGRkOWI2NDEuLjgwMDJkYzk0Y2IyNWY0ZjUxYzIyN2Yy
YzViNzMyNGU4OWE5MzE2NDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9E
ZWZhdWx0VW5kb0NvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvRGVm
YXVsdFVuZG9Db250cm9sbGVyLmgKQEAgLTI5LDcgKzI5LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7
CiAKIGNsYXNzIERlZmF1bHRVbmRvQ29udHJvbGxlciB7CiBwdWJsaWM6Ci0gICAgdm9pZCByZWdp
c3RlckVkaXRDb21tYW5kKFBhc3NSZWZQdHI8V2ViRWRpdENvbW1hbmRQcm94eT4sIFdlYlBhZ2VQ
cm94eTo6VW5kb09yUmVkbyk7CisgICAgdm9pZCByZWdpc3RlckVkaXRDb21tYW5kKFJlZjxXZWJF
ZGl0Q29tbWFuZFByb3h5PiYmLCBXZWJQYWdlUHJveHk6OlVuZG9PclJlZG8pOwogICAgIHZvaWQg
Y2xlYXJBbGxFZGl0Q29tbWFuZHMoKTsKICAgICBib29sIGNhblVuZG9SZWRvKFdlYlBhZ2VQcm94
eTo6VW5kb09yUmVkbyk7CiAgICAgdm9pZCBleGVjdXRlVW5kb1JlZG8oV2ViUGFnZVByb3h5OjpV
bmRvT3JSZWRvKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Eb3dubG9h
ZHMvRG93bmxvYWRQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvRG93bmxvYWRz
L0Rvd25sb2FkUHJveHkuY3BwCmluZGV4IDEwOTI1ZTQ0OTAzZjY0ZGU5Y2NmY2M5MWRjN2Y1NzE1
YjlkYmE1MjkuLmE1MzVhYzI3MGUxMWRkMTRkYjBiZThmMWRkZmVkN2VmNDE3ZjAzNTEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eS5j
cHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5
LmNwcApAQCAtNTEsOSArNTEsOSBAQCBzdGF0aWMgdWludDY0X3QgZ2VuZXJhdGVEb3dubG9hZElE
KCkKICAgICByZXR1cm4gKyt1bmlxdWVEb3dubG9hZElEOwogfQogICAgIAotUGFzc1JlZlB0cjxE
b3dubG9hZFByb3h5PiBEb3dubG9hZFByb3h5OjpjcmVhdGUoRG93bmxvYWRQcm94eU1hcCYgZG93
bmxvYWRQcm94eU1hcCwgV2ViUHJvY2Vzc1Bvb2wmIHByb2Nlc3NQb29sLCBjb25zdCBSZXNvdXJj
ZVJlcXVlc3QmIHJlc291cmNlUmVxdWVzdCkKK1JlZjxEb3dubG9hZFByb3h5PiBEb3dubG9hZFBy
b3h5OjpjcmVhdGUoRG93bmxvYWRQcm94eU1hcCYgZG93bmxvYWRQcm94eU1hcCwgV2ViUHJvY2Vz
c1Bvb2wmIHByb2Nlc3NQb29sLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlc291cmNlUmVxdWVz
dCkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IERvd25sb2FkUHJveHkoZG93bmxvYWRQcm94
eU1hcCwgcHJvY2Vzc1Bvb2wsIHJlc291cmNlUmVxdWVzdCkpOworICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IERvd25sb2FkUHJveHkoZG93bmxvYWRQcm94eU1hcCwgcHJvY2Vzc1Bvb2wsIHJlc291
cmNlUmVxdWVzdCkpOwogfQogCiBEb3dubG9hZFByb3h5OjpEb3dubG9hZFByb3h5KERvd25sb2Fk
UHJveHlNYXAmIGRvd25sb2FkUHJveHlNYXAsIFdlYlByb2Nlc3NQb29sJiBwcm9jZXNzUG9vbCwg
Y29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXNvdXJjZVJlcXVlc3QpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHkuaCBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eS5oCmluZGV4IDFjYWRhOGUy
YTdlYmJiZTY4ZmMwNzQ4M2M0MmNiYWRhODE1YTNkMGEuLmUyYWU1NmUyODRlZTIxOTFlNzQyYzNm
ZjQ3Y2NmMjI0NzBmZmQ4OWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9E
b3dubG9hZHMvRG93bmxvYWRQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9E
b3dubG9hZHMvRG93bmxvYWRQcm94eS5oCkBAIC0zMiw3ICszMiw3IEBACiAjaW5jbHVkZSAiU2Fu
ZGJveEV4dGVuc2lvbi5oIgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXF1ZXN0Lmg+CiAj
aW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2lu
Y2x1ZGUgPHd0Zi9SZWYuaD4KIAogbmFtZXNwYWNlIEFQSSB7CiBjbGFzcyBEYXRhOwpAQCAtNTQs
NyArNTQsNyBAQCBjbGFzcyBXZWJQcm9jZXNzUG9vbDsKIAogY2xhc3MgRG93bmxvYWRQcm94eSA6
IHB1YmxpYyBBUEk6Ok9iamVjdEltcGw8QVBJOjpPYmplY3Q6OlR5cGU6OkRvd25sb2FkPiwgcHVi
bGljIElQQzo6TWVzc2FnZVJlY2VpdmVyIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0
cjxEb3dubG9hZFByb3h5PiBjcmVhdGUoRG93bmxvYWRQcm94eU1hcCYsIFdlYlByb2Nlc3NQb29s
JiwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jik7CisgICAgc3RhdGljIFJlZjxEb3du
bG9hZFByb3h5PiBjcmVhdGUoRG93bmxvYWRQcm94eU1hcCYsIFdlYlByb2Nlc3NQb29sJiwgY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jik7CiAgICAgfkRvd25sb2FkUHJveHkoKTsKIAog
ICAgIERvd25sb2FkSUQgZG93bmxvYWRJRCgpIGNvbnN0IHsgcmV0dXJuIG1fZG93bmxvYWRJRDsg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0dlb2xvY2F0aW9uUGVybWlz
c2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0dl
b2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuY3BwCmluZGV4IDBjZjcwNDUx
MTgwYTVjY2FjYzliYWYxY2FkYWIxYjQxYjMzYWRmZjEuLjI5MjAxMzc3NjYzN2ZiZjdhNjA0ODFm
NmViODhmZDhmNTJmYjQyZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9H
ZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94
eS5jcHAKQEAgLTQ1LDExICs0NSwxMSBAQCB2b2lkIEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVl
c3RNYW5hZ2VyUHJveHk6OmludmFsaWRhdGVSZXF1ZXN0cygpCiAgICAgbV9wZW5kaW5nUmVxdWVz
dHMuY2xlYXIoKTsKIH0KIAotUGFzc1JlZlB0cjxHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0
UHJveHk+IEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHk6OmNyZWF0ZVJl
cXVlc3QodWludDY0X3QgZ2VvbG9jYXRpb25JRCkKK1JlZjxHZW9sb2NhdGlvblBlcm1pc3Npb25S
ZXF1ZXN0UHJveHk+IEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHk6OmNy
ZWF0ZVJlcXVlc3QodWludDY0X3QgZ2VvbG9jYXRpb25JRCkKIHsKICAgICBhdXRvIHJlcXVlc3Qg
PSBHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0UHJveHk6OmNyZWF0ZSh0aGlzLCBnZW9sb2Nh
dGlvbklEKTsKICAgICBtX3BlbmRpbmdSZXF1ZXN0cy5hZGQoZ2VvbG9jYXRpb25JRCwgcmVxdWVz
dC5wdHIoKSk7Ci0gICAgcmV0dXJuIFdURk1vdmUocmVxdWVzdCk7CisgICAgcmV0dXJuIHJlcXVl
c3Q7CiB9CiAKIHZvaWQgR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eTo6
ZGlkUmVjZWl2ZUdlb2xvY2F0aW9uUGVybWlzc2lvbkRlY2lzaW9uKHVpbnQ2NF90IGdlb2xvY2F0
aW9uSUQsIGJvb2wgYWxsb3dlZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9HZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmggYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5o
CmluZGV4IDJmMTY5MjcxYjBmNWNmZjAwZjg3NGJhODA4NTIxMGE1NDlhZjJhMDkuLjgzMDUwZjJl
N2Q2YmQwNWExNzA5MDBkNmExZjA2MzFkMzBjYzdmYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9HZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmgK
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0dlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVl
c3RNYW5hZ2VyUHJveHkuaApAQCAtNDAsNyArNDAsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBpbnZh
bGlkYXRlUmVxdWVzdHMoKTsKIAogICAgIC8vIENyZWF0ZSBhIHJlcXVlc3QgdG8gYmUgcHJlc2Vu
dGVkIHRvIHRoZSB1c2VyLgotICAgIFBhc3NSZWZQdHI8R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVx
dWVzdFByb3h5PiBjcmVhdGVSZXF1ZXN0KHVpbnQ2NF90IGdlb2xvY2F0aW9uSUQpOworICAgIFJl
ZjxHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0UHJveHk+IGNyZWF0ZVJlcXVlc3QodWludDY0
X3QgZ2VvbG9jYXRpb25JRCk7CiAgICAgCiAgICAgLy8gQ2FsbGVkIGJ5IEdlb2xvY2F0aW9uUGVy
bWlzc2lvblJlcXVlc3RQcm94eSB3aGVuIGEgZGVjaXNpb24gaXMgbWFkZSBieSB0aGUgdXNlci4K
ICAgICB2b2lkIGRpZFJlY2VpdmVHZW9sb2NhdGlvblBlcm1pc3Npb25EZWNpc2lvbih1aW50NjRf
dCwgYm9vbCBhbGxvdyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvSW5z
cGVjdG9yU2VydmVyL0hUVFBSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9J
bnNwZWN0b3JTZXJ2ZXIvSFRUUFJlcXVlc3QuY3BwCmluZGV4IGEzOGYyNzI2NDhhNWYzYzdlZDQ4
ZDdkNDBmYTVmNzc2NmE4ZmU2NWEuLjg0NmE1YzhmYzgyZWIwNjg0NjUyNTM2NDgxYmQ0OTJmZWMw
NzAxNWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9JbnNwZWN0b3JTZXJ2
ZXIvSFRUUFJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9JbnNwZWN0
b3JTZXJ2ZXIvSFRUUFJlcXVlc3QuY3BwCkBAIC0zNSwxNSArMzUsMTUgQEAgdXNpbmcgbmFtZXNw
YWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1QYXNzUmVmUHRyPEhUVFBSZXF1
ZXN0PiBIVFRQUmVxdWVzdDo6cGFyc2VIVFRQUmVxdWVzdEZyb21CdWZmZXIoY29uc3QgY2hhciog
ZGF0YSwgc2l6ZV90IGxlbmd0aCwgU3RyaW5nJiBmYWlsdXJlUmVhc29uKQorUmVmUHRyPEhUVFBS
ZXF1ZXN0PiBIVFRQUmVxdWVzdDo6cGFyc2VIVFRQUmVxdWVzdEZyb21CdWZmZXIoY29uc3QgY2hh
ciogZGF0YSwgc2l6ZV90IGxlbmd0aCwgU3RyaW5nJiBmYWlsdXJlUmVhc29uKQogewogICAgIGlm
ICghbGVuZ3RoKSB7CiAgICAgICAgIGZhaWx1cmVSZWFzb24gPSAiTm8gZGF0YSB0byBwYXJzZS4i
OwotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCiAg
ICAgLy8gUmVxdWVzdCB3ZSB3aWxsIGJlIGJ1aWxkaW5nLgotICAgIFJlZlB0cjxIVFRQUmVxdWVz
dD4gcmVxdWVzdCA9IEhUVFBSZXF1ZXN0OjpjcmVhdGUoKTsKKyAgICBhdXRvIHJlcXVlc3QgPSBI
VFRQUmVxdWVzdDo6Y3JlYXRlKCk7CiAKICAgICAvLyBBZHZhbmNlIGEgcG9pbnRlciB0aHJvdWdo
IHRoZSBkYXRhIGFzIG5lZWRlZC4KICAgICBjb25zdCBjaGFyKiBwb3MgPSBkYXRhOwpAQCAtNTIs
MTQgKzUyLDE0IEBAIFBhc3NSZWZQdHI8SFRUUFJlcXVlc3Q+IEhUVFBSZXF1ZXN0OjpwYXJzZUhU
VFBSZXF1ZXN0RnJvbUJ1ZmZlcihjb25zdCBjaGFyKiBkYXRhCiAgICAgLy8gMS4gUGFyc2UgTWV0
aG9kICsgVVJMLgogICAgIHNpemVfdCByZXF1ZXN0TGluZUxlbmd0aCA9IHJlcXVlc3QtPnBhcnNl
UmVxdWVzdExpbmUocG9zLCByZW1haW5pbmdMZW5ndGgsIGZhaWx1cmVSZWFzb24pOwogICAgIGlm
ICghcmVxdWVzdExpbmVMZW5ndGgpCi0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4g
bnVsbHB0cjsKICAgICBwb3MgKz0gcmVxdWVzdExpbmVMZW5ndGg7CiAgICAgcmVtYWluaW5nTGVu
Z3RoIC09IHJlcXVlc3RMaW5lTGVuZ3RoOwogCiAgICAgLy8gMi4gUGFyc2UgSFRUUCBIZWFkZXJz
LgogICAgIHNpemVfdCBoZWFkZXJzTGVuZ3RoID0gcmVxdWVzdC0+cGFyc2VIZWFkZXJzKHBvcywg
cmVtYWluaW5nTGVuZ3RoLCBmYWlsdXJlUmVhc29uKTsKICAgICBpZiAoIWhlYWRlcnNMZW5ndGgp
Ci0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBwb3MgKz0g
aGVhZGVyc0xlbmd0aDsKICAgICByZW1haW5pbmdMZW5ndGggLT0gaGVhZGVyc0xlbmd0aDsKIApA
QCAtNzAsNyArNzAsNyBAQCBQYXNzUmVmUHRyPEhUVFBSZXF1ZXN0PiBIVFRQUmVxdWVzdDo6cGFy
c2VIVFRQUmVxdWVzdEZyb21CdWZmZXIoY29uc3QgY2hhciogZGF0YQogCiAgICAgLy8gV2Ugc2hv
dWxkIGhhdmUgcHJvY2Vzc2VkIHRoZSBlbnRpcmUgaW5wdXQuCiAgICAgQVNTRVJUKCFyZW1haW5p
bmdMZW5ndGgpOwotICAgIHJldHVybiByZXF1ZXN0LnJlbGVhc2UoKTsKKyAgICByZXR1cm4gV1RG
TW92ZShyZXF1ZXN0KTsKIH0KIAogc2l6ZV90IEhUVFBSZXF1ZXN0OjpwYXJzZVJlcXVlc3RMaW5l
KGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgsIFN0cmluZyYgZmFpbHVyZVJlYXNvbikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9JbnNwZWN0b3JTZXJ2ZXIvSFRU
UFJlcXVlc3QuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9JbnNwZWN0b3JTZXJ2ZXIvSFRU
UFJlcXVlc3QuaAppbmRleCA1OTAyOTVjZWUxZTNlNWJlZWI2ZGI4MWRkM2FhMTBhMWFmMDJiNDRi
Li4yOTE1NWYwNmUyMmU4NTM4ZTFmMjM1MmI2NzQ3MjdlZGI1OGEyZjY3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvSW5zcGVjdG9yU2VydmVyL0hUVFBSZXF1ZXN0LmgKKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0luc3BlY3RvclNlcnZlci9IVFRQUmVxdWVzdC5o
CkBAIC0zNyw4ICszNyw4IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9IVFRQSGVhZGVyTWFwLmg+CiAj
aW5jbHVkZSA8V2ViQ29yZS9IVFRQUGFyc2Vycy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVVJMLmg+
Ci0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5o
PgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcu
aD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC00Nyw3ICs0Nyw3IEBAIGNsYXNzIEhUVFBSZXF1
ZXN0IDogcHVibGljIFJlZkNvdW50ZWQ8SFRUUFJlcXVlc3Q+IHsKIHB1YmxpYzoKICAgICBzdGF0
aWMgUmVmPEhUVFBSZXF1ZXN0PiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IEhUVFBS
ZXF1ZXN0KCkpOyB9CiAgICAgc3RhdGljIFJlZjxIVFRQUmVxdWVzdD4gY3JlYXRlKGNvbnN0IFN0
cmluZyYgcmVxdWVzdE1ldGhvZCwgY29uc3QgV2ViQ29yZTo6VVJMJiB1cmwsIFdlYkNvcmU6OkhU
VFBWZXJzaW9uIHZlcnNpb24pIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSFRUUFJlcXVlc3QocmVx
dWVzdE1ldGhvZCwgdXJsLCB2ZXJzaW9uKSk7IH0KLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxIVFRQ
UmVxdWVzdD4gcGFyc2VIVFRQUmVxdWVzdEZyb21CdWZmZXIoY29uc3QgY2hhciogZGF0YSwgc2l6
ZV90IGxlbmd0aCwgU3RyaW5nJiBmYWlsdXJlUmVhc29uKTsKKyAgICBzdGF0aWMgUmVmUHRyPEhU
VFBSZXF1ZXN0PiBwYXJzZUhUVFBSZXF1ZXN0RnJvbUJ1ZmZlcihjb25zdCBjaGFyKiBkYXRhLCBz
aXplX3QgbGVuZ3RoLCBTdHJpbmcmIGZhaWx1cmVSZWFzb24pOwogICAgIHZpcnR1YWwgfkhUVFBS
ZXF1ZXN0KCk7CiAKICAgICBTdHJpbmcgcmVxdWVzdE1ldGhvZCgpIGNvbnN0IHsgcmV0dXJuIG1f
cmVxdWVzdE1ldGhvZDsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0lu
c3BlY3RvclNlcnZlci9XZWJJbnNwZWN0b3JTZXJ2ZXIuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0luc3BlY3RvclNlcnZlci9XZWJJbnNwZWN0b3JTZXJ2ZXIuY3BwCmluZGV4IDY2Mzg3
NzQ4NWViZWIxZjQ5NGVlMjZiZjJiZmNmZTY4OWRjODk3NDguLjQ5MDlhMWIyYzhkYTU2MDA0Mjk2
MzY1ZjMxYTE2OGIwNDFjNWM1MzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9JbnNwZWN0b3JTZXJ2ZXIvV2ViSW5zcGVjdG9yU2VydmVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvSW5zcGVjdG9yU2VydmVyL1dlYkluc3BlY3RvclNlcnZlci5jcHAKQEAg
LTEwNyw3ICsxMDcsNyBAQCB2b2lkIFdlYkluc3BlY3RvclNlcnZlcjo6c2VuZE1lc3NhZ2VPdmVy
Q29ubmVjdGlvbih1bnNpZ25lZCBwYWdlSWRGb3JDb25uZWN0aW9uLAogICAgICAgICBjb25uZWN0
aW9uLT5zZW5kV2ViU29ja2V0TWVzc2FnZShtZXNzYWdlKTsKIH0KIAotdm9pZCBXZWJJbnNwZWN0
b3JTZXJ2ZXI6OmRpZFJlY2VpdmVVbnJlY29nbml6ZWRIVFRQUmVxdWVzdChXZWJTb2NrZXRTZXJ2
ZXJDb25uZWN0aW9uKiBjb25uZWN0aW9uLCBQYXNzUmVmUHRyPEhUVFBSZXF1ZXN0PiByZXF1ZXN0
KQordm9pZCBXZWJJbnNwZWN0b3JTZXJ2ZXI6OmRpZFJlY2VpdmVVbnJlY29nbml6ZWRIVFRQUmVx
dWVzdChXZWJTb2NrZXRTZXJ2ZXJDb25uZWN0aW9uKiBjb25uZWN0aW9uLCBSZWY8SFRUUFJlcXVl
c3Q+JiYgcmVxdWVzdCkKIHsKICAgICAvLyByZXF1ZXN0LT51cmwoKSBjb250YWlucyBvbmx5IHRo
ZSBwYXRoIGV4dHJhY3RlZCBmcm9tIHRoZSBIVFRQIHJlcXVlc3QgbGluZQogICAgIC8vIGFuZCBV
UkwgaXMgcG9vciBhdCBwYXJzaW5nIGluY29tcGxldGUgVVJMcywgc28gZXh0cmFjdCB0aGUgaW50
ZXJlc3RpbmcgcGFydHMgbWFudWFsbHkuCkBAIC0xMzYsNyArMTM2LDcgQEAgdm9pZCBXZWJJbnNw
ZWN0b3JTZXJ2ZXI6OmRpZFJlY2VpdmVVbnJlY29nbml6ZWRIVFRQUmVxdWVzdChXZWJTb2NrZXRT
ZXJ2ZXJDb25uZWMKICAgICBjb25uZWN0aW9uLT5zaHV0ZG93bkFmdGVyU2VuZE9yTm93KCk7CiB9
CiAKLWJvb2wgV2ViSW5zcGVjdG9yU2VydmVyOjpkaWRSZWNlaXZlV2ViU29ja2V0VXBncmFkZUhU
VFBSZXF1ZXN0KFdlYlNvY2tldFNlcnZlckNvbm5lY3Rpb24qLCBQYXNzUmVmUHRyPEhUVFBSZXF1
ZXN0PiByZXF1ZXN0KQorYm9vbCBXZWJJbnNwZWN0b3JTZXJ2ZXI6OmRpZFJlY2VpdmVXZWJTb2Nr
ZXRVcGdyYWRlSFRUUFJlcXVlc3QoV2ViU29ja2V0U2VydmVyQ29ubmVjdGlvbiosIFJlZjxIVFRQ
UmVxdWVzdD4mJiByZXF1ZXN0KQogewogICAgIFN0cmluZyBwYXRoID0gcmVxdWVzdC0+dXJsKCk7
CiAKQEAgLTE2MCw3ICsxNjAsNyBAQCBib29sIFdlYkluc3BlY3RvclNlcnZlcjo6ZGlkUmVjZWl2
ZVdlYlNvY2tldFVwZ3JhZGVIVFRQUmVxdWVzdChXZWJTb2NrZXRTZXJ2ZXJDbwogICAgIHJldHVy
biB0cnVlOwogfQogCi12b2lkIFdlYkluc3BlY3RvclNlcnZlcjo6ZGlkRXN0YWJsaXNoV2ViU29j
a2V0Q29ubmVjdGlvbihXZWJTb2NrZXRTZXJ2ZXJDb25uZWN0aW9uKiBjb25uZWN0aW9uLCBQYXNz
UmVmUHRyPEhUVFBSZXF1ZXN0PiByZXF1ZXN0KQordm9pZCBXZWJJbnNwZWN0b3JTZXJ2ZXI6OmRp
ZEVzdGFibGlzaFdlYlNvY2tldENvbm5lY3Rpb24oV2ViU29ja2V0U2VydmVyQ29ubmVjdGlvbiog
Y29ubmVjdGlvbiwgUmVmPEhUVFBSZXF1ZXN0PiYmIHJlcXVlc3QpCiB7CiAgICAgU3RyaW5nIHBh
dGggPSByZXF1ZXN0LT51cmwoKTsKICAgICB1bnNpZ25lZCBwYWdlSWQgPSBwYWdlSWRGcm9tUmVx
dWVzdFBhdGgocGF0aCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvSW5z
cGVjdG9yU2VydmVyL1dlYkluc3BlY3RvclNlcnZlci5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0luc3BlY3RvclNlcnZlci9XZWJJbnNwZWN0b3JTZXJ2ZXIuaAppbmRleCA5MjgxYWE1NjM0
Mzc2ZWMxMTk3ODIxOGY5ZGYyMDlmYzAyZGViZDFmLi4xNGJhNTIyOTkwYjhiNTgzMTYxZjY0OTU5
OTI1MTA3YTUyNThmYmFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvSW5z
cGVjdG9yU2VydmVyL1dlYkluc3BlY3RvclNlcnZlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9JbnNwZWN0b3JTZXJ2ZXIvV2ViSW5zcGVjdG9yU2VydmVyLmgKQEAgLTUzLDkgKzUz
LDkgQEAgcHJpdmF0ZToKICAgICB+V2ViSW5zcGVjdG9yU2VydmVyKCk7CiAKICAgICAvLyBXZWJT
b2NrZXRTZXJ2ZXJDbGllbnQgaW1wbGVtZW50YXRpb24uIEV2ZW50cyBjb21pbmcgZnJvbSByZW1v
dGUgY29ubmVjdGlvbnMuCi0gICAgdm9pZCBkaWRSZWNlaXZlVW5yZWNvZ25pemVkSFRUUFJlcXVl
c3QoV2ViU29ja2V0U2VydmVyQ29ubmVjdGlvbiosIFBhc3NSZWZQdHI8SFRUUFJlcXVlc3Q+KSBm
aW5hbDsKLSAgICBib29sIGRpZFJlY2VpdmVXZWJTb2NrZXRVcGdyYWRlSFRUUFJlcXVlc3QoV2Vi
U29ja2V0U2VydmVyQ29ubmVjdGlvbiosIFBhc3NSZWZQdHI8SFRUUFJlcXVlc3Q+KSBmaW5hbDsK
LSAgICB2b2lkIGRpZEVzdGFibGlzaFdlYlNvY2tldENvbm5lY3Rpb24oV2ViU29ja2V0U2VydmVy
Q29ubmVjdGlvbiosIFBhc3NSZWZQdHI8SFRUUFJlcXVlc3Q+KSBmaW5hbDsKKyAgICB2b2lkIGRp
ZFJlY2VpdmVVbnJlY29nbml6ZWRIVFRQUmVxdWVzdChXZWJTb2NrZXRTZXJ2ZXJDb25uZWN0aW9u
KiwgUmVmPEhUVFBSZXF1ZXN0PiYmKSBmaW5hbDsKKyAgICBib29sIGRpZFJlY2VpdmVXZWJTb2Nr
ZXRVcGdyYWRlSFRUUFJlcXVlc3QoV2ViU29ja2V0U2VydmVyQ29ubmVjdGlvbiosIFJlZjxIVFRQ
UmVxdWVzdD4mJikgZmluYWw7CisgICAgdm9pZCBkaWRFc3RhYmxpc2hXZWJTb2NrZXRDb25uZWN0
aW9uKFdlYlNvY2tldFNlcnZlckNvbm5lY3Rpb24qLCBSZWY8SFRUUFJlcXVlc3Q+JiYpIGZpbmFs
OwogICAgIHZvaWQgZGlkUmVjZWl2ZVdlYlNvY2tldE1lc3NhZ2UoV2ViU29ja2V0U2VydmVyQ29u
bmVjdGlvbiosIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkgZmluYWw7CiAgICAgdm9pZCBkaWRDbG9z
ZVdlYlNvY2tldENvbm5lY3Rpb24oV2ViU29ja2V0U2VydmVyQ29ubmVjdGlvbiopIGZpbmFsOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvSW5zcGVjdG9yU2VydmVyL1dl
YlNvY2tldFNlcnZlckNsaWVudC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0luc3BlY3Rv
clNlcnZlci9XZWJTb2NrZXRTZXJ2ZXJDbGllbnQuaAppbmRleCBhNzNhMGYzY2RjODczZTFhNDE2
ZjcyMGQ5ZWM0Y2IzNGRiNTE3ODJlLi5jNmZhYzM5MzUyZDUwOTM1Mjk2M2Y0YjRlOWJkODdjMTQ1
YTZlZDI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvSW5zcGVjdG9yU2Vy
dmVyL1dlYlNvY2tldFNlcnZlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9JbnNwZWN0b3JTZXJ2ZXIvV2ViU29ja2V0U2VydmVyQ2xpZW50LmgKQEAgLTI5LDcgKzI5LDcg
QEAKICNpZiBFTkFCTEUoSU5TUEVDVE9SX1NFUlZFUikKIAogI2luY2x1ZGUgIkhUVFBSZXF1ZXN0
LmgiCi0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmLmg+CiAj
aW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAt
NDEsMTMgKzQxLDEzIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5XZWJTb2NrZXRTZXJ2ZXJDbGll
bnQoKSB7IH0KIAogICAgIC8vIFJlY2VpdmVkIGFuIEhUVFAgcmVxdWVzdCBidXQgZGlkbid0IGtu
b3cgd2hhdCB0byBkbyB3aXRoIGl0LgotICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlVW5yZWNv
Z25pemVkSFRUUFJlcXVlc3QoV2ViU29ja2V0U2VydmVyQ29ubmVjdGlvbiosIFBhc3NSZWZQdHI8
SFRUUFJlcXVlc3Q+KSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVVucmVjb2duaXpl
ZEhUVFBSZXF1ZXN0KFdlYlNvY2tldFNlcnZlckNvbm5lY3Rpb24qLCBSZWY8SFRUUFJlcXVlc3Q+
JiYpIHsgfQogCiAgICAgLy8gUmVjZWl2ZWQgYSBXZWJTb2NrZXQgVXBncmFkZSBIVFRQIHJlcXVl
c3QuIEFzayBpZiB3ZSBzaG91bGQgaGFuZGxlIGl0IGFuZCB1cGdyYWRlLgotICAgIHZpcnR1YWwg
Ym9vbCBkaWRSZWNlaXZlV2ViU29ja2V0VXBncmFkZUhUVFBSZXF1ZXN0KFdlYlNvY2tldFNlcnZl
ckNvbm5lY3Rpb24qLCBQYXNzUmVmUHRyPEhUVFBSZXF1ZXN0PikgeyByZXR1cm4gdHJ1ZTsgfQor
ICAgIHZpcnR1YWwgYm9vbCBkaWRSZWNlaXZlV2ViU29ja2V0VXBncmFkZUhUVFBSZXF1ZXN0KFdl
YlNvY2tldFNlcnZlckNvbm5lY3Rpb24qLCBSZWY8SFRUUFJlcXVlc3Q+JiYpIHsgcmV0dXJuIHRy
dWU7IH0KIAogICAgIC8vIEVzdGFibGlzaGVkIGEgV2ViU29ja2V0IENvbm5lY3Rpb24uCi0gICAg
dmlydHVhbCB2b2lkIGRpZEVzdGFibGlzaFdlYlNvY2tldENvbm5lY3Rpb24oV2ViU29ja2V0U2Vy
dmVyQ29ubmVjdGlvbiosIFBhc3NSZWZQdHI8SFRUUFJlcXVlc3Q+KSB7IH0KKyAgICB2aXJ0dWFs
IHZvaWQgZGlkRXN0YWJsaXNoV2ViU29ja2V0Q29ubmVjdGlvbihXZWJTb2NrZXRTZXJ2ZXJDb25u
ZWN0aW9uKiwgUmVmPEhUVFBSZXF1ZXN0PiYmKSB7IH0KIAogICAgIC8vIFJlY2VpdmVkIGEgV2Vi
U29ja2V0IG1lc3NhZ2UuCiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVXZWJTb2NrZXRNZXNz
YWdlKFdlYlNvY2tldFNlcnZlckNvbm5lY3Rpb24qLCBjb25zdCBTdHJpbmcmKSB7IH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9JbnNwZWN0b3JTZXJ2ZXIvV2ViU29ja2V0
U2VydmVyQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvSW5zcGVjdG9y
U2VydmVyL1dlYlNvY2tldFNlcnZlckNvbm5lY3Rpb24uY3BwCmluZGV4IDdlMDUyNWMxMzVjODAz
NWYxZDhhOGMzNzViZDFhZmMxMWE2YTUzMjYuLjExNzdmNmY1ZTJjMTFiOTViODc2MDU2ZTU3YjM4
OWIzNjFiYzVhNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9JbnNwZWN0
b3JTZXJ2ZXIvV2ViU29ja2V0U2VydmVyQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0luc3BlY3RvclNlcnZlci9XZWJTb2NrZXRTZXJ2ZXJDb25uZWN0aW9uLmNw
cApAQCAtMTczLDcgKzE3Myw3IEBAIHZvaWQgV2ViU29ja2V0U2VydmVyQ29ubmVjdGlvbjo6cmVh
ZEhUVFBNZXNzYWdlKCkKICAgICBjb25zdCBIVFRQSGVhZGVyTWFwJiBoZWFkZXJzID0gcmVxdWVz
dC0+aGVhZGVyRmllbGRzKCk7CiAgICAgU3RyaW5nIHVwZ3JhZGVIZWFkZXJWYWx1ZSA9IGhlYWRl
cnMuZ2V0KEhUVFBIZWFkZXJOYW1lOjpVcGdyYWRlKTsKICAgICBpZiAodXBncmFkZUhlYWRlclZh
bHVlID09ICJ3ZWJzb2NrZXQiKSB7Ci0gICAgICAgIHVwZ3JhZGVUb1dlYlNvY2tldFNlcnZlckNv
bm5lY3Rpb24ocmVxdWVzdCk7CisgICAgICAgIHVwZ3JhZGVUb1dlYlNvY2tldFNlcnZlckNvbm5l
Y3Rpb24ocmVxdWVzdC5yZWxlYXNlTm9uTnVsbCgpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
ICAgICBpZiAodXBncmFkZUhlYWRlclZhbHVlID09ICJXZWJTb2NrZXQiKSB7CkBAIC0xODIsMjQg
KzE4MiwyMSBAQCB2b2lkIFdlYlNvY2tldFNlcnZlckNvbm5lY3Rpb246OnJlYWRIVFRQTWVzc2Fn
ZSgpCiAgICAgfQogCiAgICAgLy8gT3RoZXJ3aXNlLCB0aGlzIGlzIGFuIEhUVFAgUmVxdWVzdCB3
ZSBkb24ndCBrbm93IGhvdyB0byBkZWFsIHdpdGguCi0gICAgbV9jbGllbnQtPmRpZFJlY2VpdmVV
bnJlY29nbml6ZWRIVFRQUmVxdWVzdCh0aGlzLCByZXF1ZXN0KTsKKyAgICBtX2NsaWVudC0+ZGlk
UmVjZWl2ZVVucmVjb2duaXplZEhUVFBSZXF1ZXN0KHRoaXMsIHJlcXVlc3QucmVsZWFzZU5vbk51
bGwoKSk7CiB9CiAKLXZvaWQgV2ViU29ja2V0U2VydmVyQ29ubmVjdGlvbjo6dXBncmFkZVRvV2Vi
U29ja2V0U2VydmVyQ29ubmVjdGlvbihQYXNzUmVmUHRyPEhUVFBSZXF1ZXN0PiByZXF1ZXN0KQor
dm9pZCBXZWJTb2NrZXRTZXJ2ZXJDb25uZWN0aW9uOjp1cGdyYWRlVG9XZWJTb2NrZXRTZXJ2ZXJD
b25uZWN0aW9uKFJlZjxIVFRQUmVxdWVzdD4mJiByZXF1ZXN0KQogewotICAgIEFTU0VSVChyZXF1
ZXN0KTsKICAgICBBU1NFUlQobV9tb2RlID09IEhUVFApOwogICAgIG1fbW9kZSA9IFdlYlNvY2tl
dDsKLSAgICBSZWZQdHI8SFRUUFJlcXVlc3Q+IHByb3RlY3RlZFJlcXVlc3QocmVxdWVzdCk7Ci0K
ICAgICAvLyBBc2sgdGhlIGNsaWVudCBpZiB3ZSBzaG91bGQgdXBncmFkZSBmb3IgdGhpcyBvciBu
b3QuCi0gICAgaWYgKCFtX2NsaWVudC0+ZGlkUmVjZWl2ZVdlYlNvY2tldFVwZ3JhZGVIVFRQUmVx
dWVzdCh0aGlzLCBwcm90ZWN0ZWRSZXF1ZXN0KSkgeworICAgIGlmICghbV9jbGllbnQtPmRpZFJl
Y2VpdmVXZWJTb2NrZXRVcGdyYWRlSFRUUFJlcXVlc3QodGhpcywgcmVxdWVzdC5jb3B5UmVmKCkp
KSB7CiAgICAgICAgIHNodXRkb3duTm93KCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAg
ICAvLyBCdWlsZCBhbmQgc2VuZCB0aGUgV2ViU29ja2V0IGhhbmRzaGFrZSByZXNwb25zZS4KLSAg
ICBjb25zdCBIVFRQSGVhZGVyTWFwJiByZXF1ZXN0SGVhZGVycyA9IHByb3RlY3RlZFJlcXVlc3Qt
PmhlYWRlckZpZWxkcygpOworICAgIGNvbnN0IEhUVFBIZWFkZXJNYXAmIHJlcXVlc3RIZWFkZXJz
ID0gcmVxdWVzdC0+aGVhZGVyRmllbGRzKCk7CiAgICAgU3RyaW5nIGFjY2VwdCA9IFdlYlNvY2tl
dEhhbmRzaGFrZTo6Z2V0RXhwZWN0ZWRXZWJTb2NrZXRBY2NlcHQocmVxdWVzdEhlYWRlcnMuZ2V0
KEhUVFBIZWFkZXJOYW1lOjpTZWNXZWJTb2NrZXRLZXkpKTsKICAgICBIVFRQSGVhZGVyTWFwIHJl
c3BvbnNlSGVhZGVyczsKICAgICByZXNwb25zZUhlYWRlcnMuYWRkKCJVcGdyYWRlIiwgcmVxdWVz
dEhlYWRlcnMuZ2V0KEhUVFBIZWFkZXJOYW1lOjpVcGdyYWRlKSk7CkBAIC0yMDgsNyArMjA1LDcg
QEAgdm9pZCBXZWJTb2NrZXRTZXJ2ZXJDb25uZWN0aW9uOjp1cGdyYWRlVG9XZWJTb2NrZXRTZXJ2
ZXJDb25uZWN0aW9uKFBhc3NSZWZQdHI8SFQKIAogICAgIHNlbmRIVFRQUmVzcG9uc2VIZWFkZXIo
MTAxLCAiV2ViU29ja2V0IFByb3RvY29sIEhhbmRzaGFrZSIsIHJlc3BvbnNlSGVhZGVycyk7CiAK
LSAgICBtX2NsaWVudC0+ZGlkRXN0YWJsaXNoV2ViU29ja2V0Q29ubmVjdGlvbih0aGlzLCBwcm90
ZWN0ZWRSZXF1ZXN0KTsKKyAgICBtX2NsaWVudC0+ZGlkRXN0YWJsaXNoV2ViU29ja2V0Q29ubmVj
dGlvbih0aGlzLCBXVEZNb3ZlKHJlcXVlc3QpKTsKIH0KIAogdm9pZCBXZWJTb2NrZXRTZXJ2ZXJD
b25uZWN0aW9uOjpyZWFkV2ViU29ja2V0RnJhbWVzKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9JbnNwZWN0b3JTZXJ2ZXIvV2ViU29ja2V0U2VydmVyQ29ubmVjdGlvbi5o
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0luc3BlY3RvclNlcnZlci9XZWJTb2NrZXRTZXJ2
ZXJDb25uZWN0aW9uLmgKaW5kZXggZTkxMzk3NGRlZjFjYWUyZDQ4YWE5MWUxMTM2OGI3MmI1ZTFi
OGJlNC4uNWVjZjc1MWFjNWY3MGM4YWMzYzRiMjNlNGNjMzFhYzM0OGFkOGFhNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0luc3BlY3RvclNlcnZlci9XZWJTb2NrZXRTZXJ2
ZXJDb25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0luc3BlY3RvclNl
cnZlci9XZWJTb2NrZXRTZXJ2ZXJDb25uZWN0aW9uLmgKQEAgLTI5LDcgKzI5LDcgQEAKICNpZiBF
TkFCTEUoSU5TUEVDVE9SX1NFUlZFUikKIAogI2luY2x1ZGUgPFdlYkNvcmUvU29ja2V0U3RyZWFt
SGFuZGxlQ2xpZW50Lmg+Ci0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3
dGYvUmVmLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3Iu
aD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KQEAgLTc4LDcgKzc4LDcgQEAgcHJp
dmF0ZToKICAgICB2b2lkIHJlYWRIVFRQTWVzc2FnZSgpOwogCiAgICAgLy8gV2ViU29ja2V0IE1v
ZGUuCi0gICAgdm9pZCB1cGdyYWRlVG9XZWJTb2NrZXRTZXJ2ZXJDb25uZWN0aW9uKFBhc3NSZWZQ
dHI8SFRUUFJlcXVlc3Q+KTsKKyAgICB2b2lkIHVwZ3JhZGVUb1dlYlNvY2tldFNlcnZlckNvbm5l
Y3Rpb24oUmVmPEhUVFBSZXF1ZXN0PiYmKTsKICAgICB2b2lkIHJlYWRXZWJTb2NrZXRGcmFtZXMo
KTsKICAgICBib29sIHJlYWRXZWJTb2NrZXRGcmFtZSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25QZXJtaXNzaW9uUmVx
dWVzdE1hbmFnZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTm90aWZpY2F0
aW9ucy9Ob3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5jcHAKaW5kZXgg
ODE4YTUyNTQxNjA3YTNjZTlhMjNkYzg3OGYxOGJmYTEzN2MwZGFlMi4uNjI2NTg0NDhhZjhiOTVi
OTI1MDQ5ZThiZDJiMmY1ZGNkMjEyY2E3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL05vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2Vy
UHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL05v
dGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmNwcApAQCAtNDYsMTEgKzQ2
LDExIEBAIHZvaWQgTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHk6Omlu
dmFsaWRhdGVSZXF1ZXN0cygpCiAgICAgbV9wZW5kaW5nUmVxdWVzdHMuY2xlYXIoKTsKIH0KIAot
UGFzc1JlZlB0cjxOb3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdD4gTm90aWZpY2F0aW9uUGVy
bWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHk6OmNyZWF0ZVJlcXVlc3QodWludDY0X3Qgbm90aWZp
Y2F0aW9uSUQpCitSZWY8Tm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3Q+IE5vdGlmaWNhdGlv
blBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5OjpjcmVhdGVSZXF1ZXN0KHVpbnQ2NF90IG5v
dGlmaWNhdGlvbklEKQogewogICAgIGF1dG8gcmVxdWVzdCA9IE5vdGlmaWNhdGlvblBlcm1pc3Np
b25SZXF1ZXN0OjpjcmVhdGUodGhpcywgbm90aWZpY2F0aW9uSUQpOwogICAgIG1fcGVuZGluZ1Jl
cXVlc3RzLmFkZChub3RpZmljYXRpb25JRCwgcmVxdWVzdC5wdHIoKSk7Ci0gICAgcmV0dXJuIFdU
Rk1vdmUocmVxdWVzdCk7CisgICAgcmV0dXJuIHJlcXVlc3Q7CiB9CiAKIHZvaWQgTm90aWZpY2F0
aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHk6OmRpZFJlY2VpdmVOb3RpZmljYXRpb25Q
ZXJtaXNzaW9uRGVjaXNpb24odWludDY0X3Qgbm90aWZpY2F0aW9uSUQsIGJvb2wgYWxsb3cpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9Ob3RpZmlj
YXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5oIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL05vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2Vy
UHJveHkuaAppbmRleCA1YmM4M2Y2ZjU3Mzg0NWRhNzM5ZTYxMGIyMzUzN2ZhNmFiMzQyZGM1Li4x
MGU0YjE4NTNjMGI0NjdlZDA4YmUyYTBkMWZlMTBjZDJmNTExOWQ4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25QZXJtaXNzaW9u
UmVxdWVzdE1hbmFnZXJQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Ob3Rp
ZmljYXRpb25zL05vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmgKQEAg
LTQxLDcgKzQxLDcgQEAgcHVibGljOgogICAgIHZvaWQgaW52YWxpZGF0ZVJlcXVlc3RzKCk7CiAg
ICAgCiAgICAgLy8gQ3JlYXRlIGEgcmVxdWVzdCB0byBiZSBwcmVzZW50ZWQgdG8gdGhlIHVzZXIu
Ci0gICAgUGFzc1JlZlB0cjxOb3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdD4gY3JlYXRlUmVx
dWVzdCh1aW50NjRfdCBub3RpZmljYXRpb25JRCk7CisgICAgUmVmPE5vdGlmaWNhdGlvblBlcm1p
c3Npb25SZXF1ZXN0PiBjcmVhdGVSZXF1ZXN0KHVpbnQ2NF90IG5vdGlmaWNhdGlvbklEKTsKICAg
ICAKICAgICAvLyBDYWxsZWQgYnkgTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3Qgd2hlbiBh
IGRlY2lzaW9uIGlzIG1hZGUgYnkgdGhlIHVzZXIuCiAgICAgdm9pZCBkaWRSZWNlaXZlTm90aWZp
Y2F0aW9uUGVybWlzc2lvbkRlY2lzaW9uKHVpbnQ2NF90IG5vdGlmaWNhdGlvbklELCBib29sIGFs
bG93KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25z
L1dlYk5vdGlmaWNhdGlvblByb3ZpZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9O
b3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvblByb3ZpZGVyLmNwcAppbmRleCBhMmE4M2FkYTA5
NWRlMDRjYjQ3ZjYxN2RmMDdlNWIyMGY1MGQ3ZTcwLi5kYjM1ODhjYTRjMTAwYzJjOWE4OTUxOWUx
NzMyNzYwY2IzZmFmZDNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTm90
aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25Qcm92aWRlci5jcHAKKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uUHJvdmlkZXIuY3BwCkBA
IC05MSw3ICs5MSw3IEBAIHZvaWQgV2ViTm90aWZpY2F0aW9uUHJvdmlkZXI6OnJlbW92ZU5vdGlm
aWNhdGlvbk1hbmFnZXIoV2ViTm90aWZpY2F0aW9uTWFuYWdlclByCiAgICAgbV9jbGllbnQucmVt
b3ZlTm90aWZpY2F0aW9uTWFuYWdlcih0b0FQSShtYW5hZ2VyKSwgbV9jbGllbnQuYmFzZS5jbGll
bnRJbmZvKTsKIH0KIAotUGFzc1JlZlB0cjxBUEk6OkRpY3Rpb25hcnk+IFdlYk5vdGlmaWNhdGlv
blByb3ZpZGVyOjpub3RpZmljYXRpb25QZXJtaXNzaW9ucygpCitSZWZQdHI8QVBJOjpEaWN0aW9u
YXJ5PiBXZWJOb3RpZmljYXRpb25Qcm92aWRlcjo6bm90aWZpY2F0aW9uUGVybWlzc2lvbnMoKQog
ewogICAgIGlmICghbV9jbGllbnQubm90aWZpY2F0aW9uUGVybWlzc2lvbnMpCiAgICAgICAgIHJl
dHVybiBBUEk6OkRpY3Rpb25hcnk6OmNyZWF0ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uUHJvdmlkZXIuaCBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvblByb3Zp
ZGVyLmgKaW5kZXggMTRmYWJlMTZjNmU0ZDVlNjg1MjY4MDE5ZmY0MDBmYmU2YmU1ZjdmMy4uMjYy
YjFlNTMyZDExMGQxNTM3ZDAyMzRjZjljZjA1Mjg2YmI2NTI1ZCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uUHJvdmlkZXIu
aAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmlj
YXRpb25Qcm92aWRlci5oCkBAIC01Niw3ICs1Niw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGFkZE5v
dGlmaWNhdGlvbk1hbmFnZXIoV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5Kik7CiAgICAgdm9p
ZCByZW1vdmVOb3RpZmljYXRpb25NYW5hZ2VyKFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eSop
OwogICAgIAotICAgIFBhc3NSZWZQdHI8QVBJOjpEaWN0aW9uYXJ5PiBub3RpZmljYXRpb25QZXJt
aXNzaW9ucygpOworICAgIFJlZlB0cjxBUEk6OkRpY3Rpb25hcnk+IG5vdGlmaWNhdGlvblBlcm1p
c3Npb25zKCk7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvUGFnZUNsaWVudC5oCmluZGV4IDA3ZWYwYjI3ZWU1YzA0ODAxODMzMTg3MWViNzYxY2U5ZThl
ZTJlODEuLjNkYjdlYmVlMjJmM2VjY2JlN2RhMmVjNzZkZDU4YjBjOGMyNmNhZTEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKKysrIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaApAQCAtMTY1LDcgKzE2NSw3IEBAIHB1YmxpYzoK
ICAgICB2aXJ0dWFsIHZvaWQgc2V0Q3Vyc29ySGlkZGVuVW50aWxNb3VzZU1vdmVzKGJvb2wpID0g
MDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hhbmdlVmlld3BvcnRQcm9wZXJ0aWVzKGNvbnN0IFdl
YkNvcmU6OlZpZXdwb3J0QXR0cmlidXRlcyYpID0gMDsKIAotICAgIHZpcnR1YWwgdm9pZCByZWdp
c3RlckVkaXRDb21tYW5kKFBhc3NSZWZQdHI8V2ViRWRpdENvbW1hbmRQcm94eT4sIFdlYlBhZ2VQ
cm94eTo6VW5kb09yUmVkbykgPSAwOworICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlckVkaXRDb21t
YW5kKFJlZjxXZWJFZGl0Q29tbWFuZFByb3h5PiYmLCBXZWJQYWdlUHJveHk6OlVuZG9PclJlZG8p
ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgY2xlYXJBbGxFZGl0Q29tbWFuZHMoKSA9IDA7CiAgICAg
dmlydHVhbCBib29sIGNhblVuZG9SZWRvKFdlYlBhZ2VQcm94eTo6VW5kb09yUmVkbykgPSAwOwog
ICAgIHZpcnR1YWwgdm9pZCBleGVjdXRlVW5kb1JlZG8oV2ViUGFnZVByb3h5OjpVbmRvT3JSZWRv
KSA9IDA7CkBAIC0xNzMsMTQgKzE3MywxNCBAQCBwdWJsaWM6CiAjaWYgUExBVEZPUk0oQ09DT0Ep
CiAgICAgdmlydHVhbCB2b2lkIGFjY2Vzc2liaWxpdHlXZWJQcm9jZXNzVG9rZW5SZWNlaXZlZChj
b25zdCBJUEM6OkRhdGFSZWZlcmVuY2UmKSA9IDA7CiAgICAgdmlydHVhbCBib29sIGV4ZWN1dGVT
YXZlZENvbW1hbmRCeVNlbGVjdG9yKGNvbnN0IFN0cmluZyYgc2VsZWN0b3IpID0gMDsKLSAgICB2
aXJ0dWFsIHZvaWQgc2V0RHJhZ0ltYWdlKGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBjbGllbnRQ
b3NpdGlvbiwgUGFzc1JlZlB0cjxTaGFyZWFibGVCaXRtYXA+IGRyYWdJbWFnZSwgV2ViQ29yZTo6
RHJhZ1NvdXJjZUFjdGlvbikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXREcmFnSW1hZ2UoY29u
c3QgV2ViQ29yZTo6SW50UG9pbnQmIGNsaWVudFBvc2l0aW9uLCBSZWY8U2hhcmVhYmxlQml0bWFw
PiYmIGRyYWdJbWFnZSwgV2ViQ29yZTo6RHJhZ1NvdXJjZUFjdGlvbikgPSAwOwogICAgIHZpcnR1
YWwgdm9pZCB1cGRhdGVTZWN1cmVJbnB1dFN0YXRlKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBy
ZXNldFNlY3VyZUlucHV0U3RhdGUoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIG5vdGlmeUlucHV0
Q29udGV4dEFib3V0RGlzY2FyZGVkQ29tcG9zaXRpb24oKSA9IDA7CiAgICAgdmlydHVhbCB2b2lk
IG1ha2VGaXJzdFJlc3BvbmRlcigpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0QWNjZWxlcmF0
ZWRDb21wb3NpdGluZ1Jvb3RMYXllcihMYXllck9yVmlldyAqKSA9IDA7CiAgICAgdmlydHVhbCBM
YXllck9yVmlldyAqYWNjZWxlcmF0ZWRDb21wb3NpdGluZ1Jvb3RMYXllcigpIGNvbnN0ID0gMDsK
LSAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8Vmlld1NuYXBzaG90PiB0YWtlVmlld1NuYXBzaG90KCkg
PSAwOworICAgIHZpcnR1YWwgUmVmUHRyPFZpZXdTbmFwc2hvdD4gdGFrZVZpZXdTbmFwc2hvdCgp
ID0gMDsKICNpZiBFTkFCTEUoTUFDX0dFU1RVUkVfRVZFTlRTKQogICAgIHZpcnR1YWwgdm9pZCBn
ZXN0dXJlRXZlbnRXYXNOb3RIYW5kbGVkQnlXZWJDb3JlKGNvbnN0IE5hdGl2ZVdlYkdlc3R1cmVF
dmVudCYpID0gMDsKICNlbmRpZgpAQCAtMTkxLDEyICsxOTEsOSBAQCBwdWJsaWM6CiAjZW5kaWYK
IAogI2lmIFVTRShBUFBLSVQpCi0gICAgdmlydHVhbCB2b2lkIHNldFByb21pc2VkRGF0YUZvcklt
YWdlKGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIFBhc3NSZWZQdHI8V2ViQ29yZTo6U2hh
cmVkQnVmZmVyPiBpbWFnZUJ1ZmZlciwgY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgU3Ry
aW5nJiBleHRlbnNpb24sIGNvbnN0IFN0cmluZyYgdGl0bGUsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICBjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiB2aXNpYmxlVXJs
LCBQYXNzUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gYXJjaGl2ZUJ1ZmZlcikgPSAwOwor
ICAgIHZpcnR1YWwgdm9pZCBzZXRQcm9taXNlZERhdGFGb3JJbWFnZShjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmROYW1lLCBSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIGltYWdlQnVmZmVyLCBj
b25zdCBTdHJpbmcmIGZpbGVuYW1lLCBjb25zdCBTdHJpbmcmIGV4dGVuc2lvbiwgY29uc3QgU3Ry
aW5nJiB0aXRsZSwgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgdmlzaWJsZVVybCwg
UmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBhcmNoaXZlQnVmZmVyKSA9IDA7CiAjaWYg
RU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKLSAgICB2aXJ0dWFsIHZvaWQgc2V0UHJvbWlzZWRE
YXRhRm9yQXR0YWNobWVudChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBTdHJp
bmcmIGZpbGVuYW1lLCBjb25zdCBTdHJpbmcmIGV4dGVuc2lvbiwgY29uc3QgU3RyaW5nJiB0aXRs
ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU3RyaW5n
JiB1cmwsIGNvbnN0IFN0cmluZyYgdmlzaWJsZVVybCkgPSAwOwotCisgICAgdmlydHVhbCB2b2lk
IHNldFByb21pc2VkRGF0YUZvckF0dGFjaG1lbnQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFt
ZSwgY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgU3RyaW5nJiBleHRlbnNpb24sIGNvbnN0
IFN0cmluZyYgdGl0bGUsIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIHZpc2libGVV
cmwpID0gMDsKICNlbmRpZgogI2VuZGlmCiAKQEAgLTMwNSw3ICszMDIsNyBAQCBwdWJsaWM6CiAg
ICAgdmlydHVhbCBib29sIGlzQXNzaXN0aW5nTm9kZSgpID0gMDsKICAgICB2aXJ0dWFsIGJvb2wg
aW50ZXJwcmV0S2V5RXZlbnQoY29uc3QgTmF0aXZlV2ViS2V5Ym9hcmRFdmVudCYsIGJvb2wgaXND
aGFyRXZlbnQpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgcG9zaXRpb25JbmZvcm1hdGlvbkRpZENo
YW5nZShjb25zdCBJbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbiYpID0gMDsKLSAgICB2
aXJ0dWFsIHZvaWQgc2F2ZUltYWdlVG9MaWJyYXJ5KFBhc3NSZWZQdHI8V2ViQ29yZTo6U2hhcmVk
QnVmZmVyPikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzYXZlSW1hZ2VUb0xpYnJhcnkoUmVmPFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJikgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBhbGxvd3NCbG9j
a1NlbGVjdGlvbigpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkVXBkYXRlQmxvY2tTZWxlY3Rp
b25XaXRoVG91Y2godWludDMyX3QgdG91Y2gsIHVpbnQzMl90IGZsYWdzLCBmbG9hdCBncm93VGhy
ZXNob2xkLCBmbG9hdCBzaHJpbmtUaHJlc2hvbGQpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2hv
d1BsYXliYWNrVGFyZ2V0UGlja2VyKGJvb2wgaGFzVmlkZW8sIGNvbnN0IFdlYkNvcmU6OkludFJl
Y3QmIGVsZW1lbnRSZWN0KSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvU3RvcmFnZS9Mb2NhbFN0b3JhZ2VEYXRhYmFzZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvU3RvcmFnZS9Mb2NhbFN0b3JhZ2VEYXRhYmFzZS5jcHAKaW5kZXggNjMyNjU3YmMwMGJl
YjllYTBmOTZlMDFiMWI5ZmEwMGJlZTliNTkxZS4uNTk4YTNiZDY4OTBlNTNkOTFjMzkwNGM5OTc5
ZTkxZGFlNDU1MDUxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1N0b3Jh
Z2UvTG9jYWxTdG9yYWdlRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9TdG9yYWdlL0xvY2FsU3RvcmFnZURhdGFiYXNlLmNwcApAQCAtMzMsNyArMzMsNyBAQAogI2lu
Y2x1ZGUgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW4uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1N0b3Jh
Z2VNYXAuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1N1ZGRlblRlcm1pbmF0aW9uLmg+Ci0jaW5jbHVk
ZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAjaW5jbHVkZSA8
d3RmL1dvcmtRdWV1ZS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KICNpbmNs
dWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJDb250ZXh0TWVudUxpc3RlbmVyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJDb250ZXh0TWVudUxpc3RlbmVyUHJveHkuaAppbmRleCAzYTBhZmU0OWE1Yjhi
NjhlNjQ4ZWVjNWU0NzM5MzMzMWM5YzkxYzdmLi4yMzMyNGZkZWQwZjNmNTY3YmYxOWYzMWU2OWZh
MmRiNmFmMDk1MmJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29u
dGV4dE1lbnVMaXN0ZW5lclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dl
YkNvbnRleHRNZW51TGlzdGVuZXJQcm94eS5oCkBAIC0zMCw3ICszMCw2IEBACiAjaW5jbHVkZSAi
QVBJT2JqZWN0LmgiCiAjaW5jbHVkZSAiV0tBcnJheS5oIgogI2luY2x1ZGUgIldlYkNvbnRleHRN
ZW51UHJveHkuaCIKLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9S
ZWZQdHIuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViQ29va2llTWFuYWdlclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViQ29va2llTWFuYWdlclByb3h5LmgKaW5kZXggNWIwZjc1NzA2N2I2OWQxNmMzZWVk
ZmQ5NDRjNTc2ZDA1NWM4MGE5Ni4uMjdhYTJhYzA3OWU3ZDE4MDk2YzNkNTA2MzQzNGRkNmU5ODc4
YmE1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvb2tpZU1hbmFn
ZXJQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb29raWVNYW5hZ2Vy
UHJveHkuaApAQCAtMzEsNyArMzEsNiBAQAogI2luY2x1ZGUgIldlYkNvbnRleHRTdXBwbGVtZW50
LmgiCiAjaW5jbHVkZSAiV2ViQ29va2llTWFuYWdlclByb3h5Q2xpZW50LmgiCiAjaW5jbHVkZSA8
V2ViQ29yZS9TZXNzaW9uSUQuaD4KLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1
ZGUgPHd0Zi9SZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJFZGl0Q29tbWFuZFByb3h5LmNwcCBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJFZGl0Q29tbWFuZFByb3h5LmNwcAppbmRleCAyNGM2MmZi
ZWYwNWRiMzA4NWY3MGRjM2VjNjRjMDQ1OWZmNjkyMTQzLi5hMGM5ZTJjMDA0OTNiOTZjMjAzYjdm
Zjg4YWNkYzgyMzM0OTcwNzgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViRWRpdENvbW1hbmRQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dl
YkVkaXRDb21tYW5kUHJveHkuY3BwCkBAIC01Niw3ICs1Niw3IEBAIHZvaWQgV2ViRWRpdENvbW1h
bmRQcm94eTo6dW5hcHBseSgpCiAgICAgICAgIHJldHVybjsKIAogICAgIG1fcGFnZS0+cHJvY2Vz
cygpLnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlVuYXBwbHlFZGl0Q29tbWFuZChtX2NvbW1hbmRJ
RCksIG1fcGFnZS0+cGFnZUlEKCksIElQQzo6U2VuZE9wdGlvbjo6RGlzcGF0Y2hNZXNzYWdlRXZl
bldoZW5XYWl0aW5nRm9yU3luY1JlcGx5KTsKLSAgICBtX3BhZ2UtPnJlZ2lzdGVyRWRpdENvbW1h
bmQodGhpcywgV2ViUGFnZVByb3h5OjpSZWRvKTsKKyAgICBtX3BhZ2UtPnJlZ2lzdGVyRWRpdENv
bW1hbmQoKnRoaXMsIFdlYlBhZ2VQcm94eTo6UmVkbyk7CiB9CiAKIHZvaWQgV2ViRWRpdENvbW1h
bmRQcm94eTo6cmVhcHBseSgpCkBAIC02NSw3ICs2NSw3IEBAIHZvaWQgV2ViRWRpdENvbW1hbmRQ
cm94eTo6cmVhcHBseSgpCiAgICAgICAgIHJldHVybjsKIAogICAgIG1fcGFnZS0+cHJvY2Vzcygp
LnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlJlYXBwbHlFZGl0Q29tbWFuZChtX2NvbW1hbmRJRCks
IG1fcGFnZS0+cGFnZUlEKCksIElQQzo6U2VuZE9wdGlvbjo6RGlzcGF0Y2hNZXNzYWdlRXZlbldo
ZW5XYWl0aW5nRm9yU3luY1JlcGx5KTsKLSAgICBtX3BhZ2UtPnJlZ2lzdGVyRWRpdENvbW1hbmQo
dGhpcywgV2ViUGFnZVByb3h5OjpVbmRvKTsKKyAgICBtX3BhZ2UtPnJlZ2lzdGVyRWRpdENvbW1h
bmQoKnRoaXMsIFdlYlBhZ2VQcm94eTo6VW5kbyk7CiB9CiAKIFN0cmluZyBXZWJFZGl0Q29tbWFu
ZFByb3h5OjpuYW1lRm9yRWRpdEFjdGlvbihFZGl0QWN0aW9uIGVkaXRBY3Rpb24pCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViRWRpdENvbW1hbmRQcm94eS5oIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkVkaXRDb21tYW5kUHJveHkuaAppbmRleCBjMzc1MDAw
ZjhiZWQ0YWQxYzZkNDc2NGRiOWNiMjAwMTQxY2VjY2M3Li4wNzA5MDZmNjA3Zjc0NGQ1MDg3YjM3
MzU0NDE5NzVjMmNhM2NhZDEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViRWRpdENvbW1hbmRQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJF
ZGl0Q29tbWFuZFByb3h5LmgKQEAgLTI4LDggKzI4LDggQEAKICNpbmNsdWRlICJBUElPYmplY3Qu
aCIKICNpbmNsdWRlIDxXZWJDb3JlL0VkaXRBY3Rpb24uaD4KICNpbmNsdWRlIDx3dGYvRm9yd2Fy
ZC5oPgotI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50
ZWQuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViR3JhbW1hckRldGFpbC5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViR3JhbW1hckRldGFpbC5jcHAKaW5kZXggMGZl
MWJmYjMxY2IwODA0MDNmYjNjMmYzODJkMzkzM2IxMjNiOGJkOC4uNmVlNDQxYjExYTIzOTA1ZTMz
YzM5ZDhhOWUwMGQzOTdmOTZmNTJiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL1dlYkdyYW1tYXJEZXRhaWwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJHcmFtbWFyRGV0YWlsLmNwcApAQCAtMzIsMTQgKzMyLDE0IEBACiAKIG5hbWVzcGFjZSBXZWJL
aXQgewogCi1QYXNzUmVmUHRyPFdlYkdyYW1tYXJEZXRhaWw+IFdlYkdyYW1tYXJEZXRhaWw6OmNy
ZWF0ZShpbnQgbG9jYXRpb24sIGludCBsZW5ndGgsIEFQSTo6QXJyYXkqIGd1ZXNzZXMsIGNvbnN0
IFN0cmluZyYgdXNlckRlc2NyaXB0aW9uKQorUmVmPFdlYkdyYW1tYXJEZXRhaWw+IFdlYkdyYW1t
YXJEZXRhaWw6OmNyZWF0ZShpbnQgbG9jYXRpb24sIGludCBsZW5ndGgsIEFQSTo6QXJyYXkqIGd1
ZXNzZXMsIGNvbnN0IFN0cmluZyYgdXNlckRlc2NyaXB0aW9uKQogewotICAgIHJldHVybiBhZG9w
dFJlZihuZXcgV2ViR3JhbW1hckRldGFpbChsb2NhdGlvbiwgbGVuZ3RoLCBndWVzc2VzLCB1c2Vy
RGVzY3JpcHRpb24pKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJHcmFtbWFyRGV0YWls
KGxvY2F0aW9uLCBsZW5ndGgsIGd1ZXNzZXMsIHVzZXJEZXNjcmlwdGlvbikpOwogfQogCi1QYXNz
UmVmUHRyPFdlYkdyYW1tYXJEZXRhaWw+IFdlYkdyYW1tYXJEZXRhaWw6OmNyZWF0ZShjb25zdCBX
ZWJDb3JlOjpHcmFtbWFyRGV0YWlsJiBncmFtbWFyRGV0YWlsKQorUmVmPFdlYkdyYW1tYXJEZXRh
aWw+IFdlYkdyYW1tYXJEZXRhaWw6OmNyZWF0ZShjb25zdCBXZWJDb3JlOjpHcmFtbWFyRGV0YWls
JiBncmFtbWFyRGV0YWlsKQogewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2ViR3JhbW1hckRl
dGFpbChncmFtbWFyRGV0YWlsKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViR3JhbW1h
ckRldGFpbChncmFtbWFyRGV0YWlsKSk7CiB9CiAKIFdlYkdyYW1tYXJEZXRhaWw6OldlYkdyYW1t
YXJEZXRhaWwoaW50IGxvY2F0aW9uLCBpbnQgbGVuZ3RoLCBBUEk6OkFycmF5KiBndWVzc2VzLCBj
b25zdCBTdHJpbmcmIHVzZXJEZXNjcmlwdGlvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJHcmFtbWFyRGV0YWlsLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViR3JhbW1hckRldGFpbC5oCmluZGV4IDdkMTc3MDU3MDI2MTRlYTA3ZDhiOTQ0MzQ3OTg1Mzc3
NTdmYjM2ZmMuLjI5NmM0MTRlZWUzMjcwMWU2Y2ZlMDIxMjIwMDI1NjYwZGYwMTc1ZTggMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJHcmFtbWFyRGV0YWlsLmgKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkdyYW1tYXJEZXRhaWwuaApAQCAtMzAsMTQgKzMw
LDE0IEBACiAjaW5jbHVkZSAiQVBJT2JqZWN0LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9UZXh0Q2hl
Y2tlckNsaWVudC5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+Ci0jaW5jbHVkZSA8d3RmL1Bh
c3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewog
CiBjbGFzcyBXZWJHcmFtbWFyRGV0YWlsIDogcHVibGljIEFQSTo6T2JqZWN0SW1wbDxBUEk6Ok9i
amVjdDo6VHlwZTo6R3JhbW1hckRldGFpbD4gewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVm
UHRyPFdlYkdyYW1tYXJEZXRhaWw+IGNyZWF0ZShpbnQgbG9jYXRpb24sIGludCBsZW5ndGgsIEFQ
STo6QXJyYXkqIGd1ZXNzZXMsIGNvbnN0IFN0cmluZyYgdXNlckRlc2NyaXB0aW9uKTsKLSAgICBz
dGF0aWMgUGFzc1JlZlB0cjxXZWJHcmFtbWFyRGV0YWlsPiBjcmVhdGUoY29uc3QgV2ViQ29yZTo6
R3JhbW1hckRldGFpbCYpOworICAgIHN0YXRpYyBSZWY8V2ViR3JhbW1hckRldGFpbD4gY3JlYXRl
KGludCBsb2NhdGlvbiwgaW50IGxlbmd0aCwgQVBJOjpBcnJheSogZ3Vlc3NlcywgY29uc3QgU3Ry
aW5nJiB1c2VyRGVzY3JpcHRpb24pOworICAgIHN0YXRpYyBSZWY8V2ViR3JhbW1hckRldGFpbD4g
Y3JlYXRlKGNvbnN0IFdlYkNvcmU6OkdyYW1tYXJEZXRhaWwmKTsKIAogICAgIGludCBsb2NhdGlv
bigpIGNvbnN0IHsgcmV0dXJuIG1fZ3JhbW1hckRldGFpbC5sb2NhdGlvbjsgfQogICAgIGludCBs
ZW5ndGgoKSBjb25zdCB7IHJldHVybiBtX2dyYW1tYXJEZXRhaWwubGVuZ3RoOyB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IDM3ZTAzMTlkNDFhZTZiMTIz
ZDdlYjgwZjgzZjQ2NDBkNjBlNzVjNGUuLmVmYzg3NzMxOTc3NmZiODAwNDI1MjY3MTQzMGFiN2Fl
YjMxZjM5N2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBA
IC0yMjMsNyArMjIzLDcgQEAgcHVibGljOgogICAgIHN0ZDo6dW5pcXVlX3B0cjxSZWNvcmQ+IGNy
ZWF0ZVJlY29yZCh1aW50NjRfdCBmcmFtZUlELCBTdHJpbmcgb3JpZ2luSWRlbnRpZmllciwKICAg
ICAgICAgU3RyaW5nIGRhdGFiYXNlTmFtZSwgU3RyaW5nIGRpc3BsYXlOYW1lLCB1aW50NjRfdCBj
dXJyZW50UXVvdGEsCiAgICAgICAgIHVpbnQ2NF90IGN1cnJlbnRPcmlnaW5Vc2FnZSwgdWludDY0
X3QgY3VycmVudERhdGFiYXNlVXNhZ2UsIHVpbnQ2NF90IGV4cGVjdGVkVXNhZ2UsIAotICAgICAg
ICBQYXNzUmVmUHRyPE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkV4Y2VlZGVkRGF0YWJhc2VRdW90
YTo6RGVsYXllZFJlcGx5Pik7CisgICAgICAgIFJlZjxNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpF
eGNlZWRlZERhdGFiYXNlUXVvdGE6OkRlbGF5ZWRSZXBseT4mJik7CiAKICAgICB2b2lkIGFkZChz
dGQ6OnVuaXF1ZV9wdHI8UmVjb3JkPik7CiAgICAgYm9vbCBhcmVCZWluZ1Byb2Nlc3NlZCgpIGNv
bnN0IHsgcmV0dXJuICEhbV9jdXJyZW50UmVjb3JkOyB9CkBAIC0yNDYsNyArMjQ2LDcgQEAgRXhj
ZWVkZWREYXRhYmFzZVF1b3RhUmVjb3JkcyYgRXhjZWVkZWREYXRhYmFzZVF1b3RhUmVjb3Jkczo6
c2luZ2xldG9uKCkKIHN0ZDo6dW5pcXVlX3B0cjxFeGNlZWRlZERhdGFiYXNlUXVvdGFSZWNvcmRz
OjpSZWNvcmQ+IEV4Y2VlZGVkRGF0YWJhc2VRdW90YVJlY29yZHM6OmNyZWF0ZVJlY29yZCgKICAg
ICB1aW50NjRfdCBmcmFtZUlELCBTdHJpbmcgb3JpZ2luSWRlbnRpZmllciwgU3RyaW5nIGRhdGFi
YXNlTmFtZSwgU3RyaW5nIGRpc3BsYXlOYW1lLAogICAgIHVpbnQ2NF90IGN1cnJlbnRRdW90YSwg
dWludDY0X3QgY3VycmVudE9yaWdpblVzYWdlLCB1aW50NjRfdCBjdXJyZW50RGF0YWJhc2VVc2Fn
ZSwKLSAgICB1aW50NjRfdCBleHBlY3RlZFVzYWdlLCBQYXNzUmVmUHRyPE1lc3NhZ2VzOjpXZWJQ
YWdlUHJveHk6OkV4Y2VlZGVkRGF0YWJhc2VRdW90YTo6RGVsYXllZFJlcGx5PiByZXBseSkKKyAg
ICB1aW50NjRfdCBleHBlY3RlZFVzYWdlLCBSZWY8TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RXhj
ZWVkZWREYXRhYmFzZVF1b3RhOjpEZWxheWVkUmVwbHk+JiYgcmVwbHkpCiB7CiAgICAgYXV0byBy
ZWNvcmQgPSBzdGQ6Om1ha2VfdW5pcXVlPFJlY29yZD4oKTsKICAgICByZWNvcmQtPmZyYW1lSUQg
PSBmcmFtZUlEOwpAQCAtMjU3LDcgKzI1Nyw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxFeGNlZWRlZERh
dGFiYXNlUXVvdGFSZWNvcmRzOjpSZWNvcmQ+IEV4Y2VlZGVkRGF0YWJhc2VRdW90YVJlY29yCiAg
ICAgcmVjb3JkLT5jdXJyZW50T3JpZ2luVXNhZ2UgPSBjdXJyZW50T3JpZ2luVXNhZ2U7CiAgICAg
cmVjb3JkLT5jdXJyZW50RGF0YWJhc2VVc2FnZSA9IGN1cnJlbnREYXRhYmFzZVVzYWdlOwogICAg
IHJlY29yZC0+ZXhwZWN0ZWRVc2FnZSA9IGV4cGVjdGVkVXNhZ2U7Ci0gICAgcmVjb3JkLT5yZXBs
eSA9IHJlcGx5OworICAgIHJlY29yZC0+cmVwbHkgPSBXVEZNb3ZlKHJlcGx5KTsKICAgICByZXR1
cm4gcmVjb3JkOwogfQogCkBAIC00NzU4LDkgKzQ3NTgsOSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6
Y2hhbmdlU3BlbGxpbmdUb1dvcmQoY29uc3QgU3RyaW5nJiB3b3JkKQogICAgIG1fcHJvY2Vzcy0+
c2VuZChNZXNzYWdlczo6V2ViUGFnZTo6Q2hhbmdlU3BlbGxpbmdUb1dvcmQod29yZCksIG1fcGFn
ZUlEKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OnJlZ2lzdGVyRWRpdENvbW1hbmQoUGFzc1Jl
ZlB0cjxXZWJFZGl0Q29tbWFuZFByb3h5PiBjb21tYW5kUHJveHksIFVuZG9PclJlZG8gdW5kb09y
UmVkbykKK3ZvaWQgV2ViUGFnZVByb3h5OjpyZWdpc3RlckVkaXRDb21tYW5kKFJlZjxXZWJFZGl0
Q29tbWFuZFByb3h5PiYmIGNvbW1hbmRQcm94eSwgVW5kb09yUmVkbyB1bmRvT3JSZWRvKQogewot
ICAgIG1fcGFnZUNsaWVudC5yZWdpc3RlckVkaXRDb21tYW5kKGNvbW1hbmRQcm94eSwgdW5kb09y
UmVkbyk7CisgICAgbV9wYWdlQ2xpZW50LnJlZ2lzdGVyRWRpdENvbW1hbmQoV1RGTW92ZShjb21t
YW5kUHJveHkpLCB1bmRvT3JSZWRvKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmFkZEVkaXRD
b21tYW5kKFdlYkVkaXRDb21tYW5kUHJveHkqIGNvbW1hbmQpCkBAIC01NjcxLDI2ICs1NjcxLDIz
IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2Uo
dWludDY0X3QgZnJhbWVJRCwgY29uc3QgQXV0CiAgICAgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlUHJveHkoZnJhbWVJRCwgQXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eTo6Y3Jl
YXRlKGNvcmVDaGFsbGVuZ2UsIGNoYWxsZW5nZUlELCBtX3Byb2Nlc3MtPmNvbm5lY3Rpb24oKSkp
OwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlUHJveHkodWludDY0X3QgZnJhbWVJRCwgUGFzc1JlZlB0cjxBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZVByb3h5PiBwcnBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSkKK3ZvaWQgV2ViUGFnZVByb3h5
OjpkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eSh1aW50NjRfdCBmcmFtZUlE
LCBSZWY8QXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eT4mJiBhdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZSkKIHsKLSAgICBBU1NFUlQocHJwQXV0aGVudGljYXRpb25DaGFsbGVuZ2UpOwotCiAgICAg
V2ViRnJhbWVQcm94eSogZnJhbWUgPSBtX3Byb2Nlc3MtPndlYkZyYW1lKGZyYW1lSUQpOwogICAg
IE1FU1NBR0VfQ0hFQ0soZnJhbWUpOwogCi0gICAgUmVmUHRyPEF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlUHJveHk+IGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlID0gcHJwQXV0aGVudGljYXRpb25DaGFs
bGVuZ2U7CiAgICAgaWYgKG1fbmF2aWdhdGlvbkNsaWVudCkKLSAgICAgICAgbV9uYXZpZ2F0aW9u
Q2xpZW50LT5kaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoKnRoaXMsIGF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlLmdldCgpKTsKKyAgICAgICAgbV9uYXZpZ2F0aW9uQ2xpZW50LT5kaWRS
ZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoKnRoaXMsIGF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlLnB0cigpKTsKICAgICBlbHNlCi0gICAgICAgIG1fbG9hZGVyQ2xpZW50LT5kaWRSZWNlaXZl
QXV0aGVudGljYXRpb25DaGFsbGVuZ2VJbkZyYW1lKCp0aGlzLCAqZnJhbWUsIGF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlLmdldCgpKTsKKyAgICAgICAgbV9sb2FkZXJDbGllbnQtPmRpZFJlY2VpdmVB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZUluRnJhbWUoKnRoaXMsICpmcmFtZSwgYXV0aGVudGljYXRp
b25DaGFsbGVuZ2UucHRyKCkpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6ZXhjZWVkZWREYXRh
YmFzZVF1b3RhKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFN0cmluZyYgb3JpZ2luSWRlbnRpZmll
ciwgY29uc3QgU3RyaW5nJiBkYXRhYmFzZU5hbWUsIGNvbnN0IFN0cmluZyYgZGlzcGxheU5hbWUs
IHVpbnQ2NF90IGN1cnJlbnRRdW90YSwgdWludDY0X3QgY3VycmVudE9yaWdpblVzYWdlLCB1aW50
NjRfdCBjdXJyZW50RGF0YWJhc2VVc2FnZSwgdWludDY0X3QgZXhwZWN0ZWRVc2FnZSwgUGFzc1Jl
ZlB0cjxNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpFeGNlZWRlZERhdGFiYXNlUXVvdGE6OkRlbGF5
ZWRSZXBseT4gcmVwbHkpCit2b2lkIFdlYlBhZ2VQcm94eTo6ZXhjZWVkZWREYXRhYmFzZVF1b3Rh
KHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFN0cmluZyYgb3JpZ2luSWRlbnRpZmllciwgY29uc3Qg
U3RyaW5nJiBkYXRhYmFzZU5hbWUsIGNvbnN0IFN0cmluZyYgZGlzcGxheU5hbWUsIHVpbnQ2NF90
IGN1cnJlbnRRdW90YSwgdWludDY0X3QgY3VycmVudE9yaWdpblVzYWdlLCB1aW50NjRfdCBjdXJy
ZW50RGF0YWJhc2VVc2FnZSwgdWludDY0X3QgZXhwZWN0ZWRVc2FnZSwgUmVmPE1lc3NhZ2VzOjpX
ZWJQYWdlUHJveHk6OkV4Y2VlZGVkRGF0YWJhc2VRdW90YTo6RGVsYXllZFJlcGx5PiYmIHJlcGx5
KQogewogICAgIEV4Y2VlZGVkRGF0YWJhc2VRdW90YVJlY29yZHMmIHJlY29yZHMgPSBFeGNlZWRl
ZERhdGFiYXNlUXVvdGFSZWNvcmRzOjpzaW5nbGV0b24oKTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8
RXhjZWVkZWREYXRhYmFzZVF1b3RhUmVjb3Jkczo6UmVjb3JkPiBuZXdSZWNvcmQgPSByZWNvcmRz
LmNyZWF0ZVJlY29yZChmcmFtZUlELAogICAgICAgICBvcmlnaW5JZGVudGlmaWVyLCBkYXRhYmFz
ZU5hbWUsIGRpc3BsYXlOYW1lLCBjdXJyZW50UXVvdGEsIGN1cnJlbnRPcmlnaW5Vc2FnZSwKLSAg
ICAgICAgY3VycmVudERhdGFiYXNlVXNhZ2UsIGV4cGVjdGVkVXNhZ2UsIHJlcGx5KTsKKyAgICAg
ICAgY3VycmVudERhdGFiYXNlVXNhZ2UsIGV4cGVjdGVkVXNhZ2UsIFdURk1vdmUocmVwbHkpKTsK
ICAgICByZWNvcmRzLmFkZChXVEZNb3ZlKG5ld1JlY29yZCkpOwogCiAgICAgaWYgKHJlY29yZHMu
YXJlQmVpbmdQcm9jZXNzZWQoKSkKQEAgLTU3MTIsMTAgKzU3MDksMTAgQEAgdm9pZCBXZWJQYWdl
UHJveHk6OmV4Y2VlZGVkRGF0YWJhc2VRdW90YSh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBTdHJp
bmcmIG9yaWdpbkkKICAgICB9CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpyZWFjaGVkQXBwbGlj
YXRpb25DYWNoZU9yaWdpblF1b3RhKGNvbnN0IFN0cmluZyYgb3JpZ2luSWRlbnRpZmllciwgdWlu
dDY0X3QgY3VycmVudFF1b3RhLCB1aW50NjRfdCB0b3RhbEJ5dGVzTmVlZGVkLCBQYXNzUmVmUHRy
PE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlJlYWNoZWRBcHBsaWNhdGlvbkNhY2hlT3JpZ2luUXVv
dGE6OkRlbGF5ZWRSZXBseT4gcmVwbHkpCit2b2lkIFdlYlBhZ2VQcm94eTo6cmVhY2hlZEFwcGxp
Y2F0aW9uQ2FjaGVPcmlnaW5RdW90YShjb25zdCBTdHJpbmcmIG9yaWdpbklkZW50aWZpZXIsIHVp
bnQ2NF90IGN1cnJlbnRRdW90YSwgdWludDY0X3QgdG90YWxCeXRlc05lZWRlZCwgUmVmPE1lc3Nh
Z2VzOjpXZWJQYWdlUHJveHk6OlJlYWNoZWRBcHBsaWNhdGlvbkNhY2hlT3JpZ2luUXVvdGE6OkRl
bGF5ZWRSZXBseT4mJiByZXBseSkKIHsKICAgICBSZWY8U2VjdXJpdHlPcmlnaW4+IHNlY3VyaXR5
T3JpZ2luID0gU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tRGF0YWJhc2VJZGVudGlmaWVyKG9yaWdp
bklkZW50aWZpZXIpLT5zZWN1cml0eU9yaWdpbigpOwotICAgIG1fdWlDbGllbnQtPnJlYWNoZWRB
cHBsaWNhdGlvbkNhY2hlT3JpZ2luUXVvdGEodGhpcywgc2VjdXJpdHlPcmlnaW4uZ2V0KCksIGN1
cnJlbnRRdW90YSwgdG90YWxCeXRlc05lZWRlZCwgW3JlcGx5XSh1bnNpZ25lZCBsb25nIGxvbmcg
bmV3UXVvdGEpIHsgcmVwbHktPnNlbmQobmV3UXVvdGEpOyB9KTsKKyAgICBtX3VpQ2xpZW50LT5y
ZWFjaGVkQXBwbGljYXRpb25DYWNoZU9yaWdpblF1b3RhKHRoaXMsIHNlY3VyaXR5T3JpZ2luLmdl
dCgpLCBjdXJyZW50UXVvdGEsIHRvdGFsQnl0ZXNOZWVkZWQsIFtyZXBseSA9IFdURk1vdmUocmVw
bHkpXSh1bnNpZ25lZCBsb25nIGxvbmcgbmV3UXVvdGEpIHsgcmVwbHktPnNlbmQobmV3UXVvdGEp
OyB9KTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnJlcXVlc3RHZW9sb2NhdGlvblBlcm1pc3Np
b25Gb3JGcmFtZSh1aW50NjRfdCBnZW9sb2NhdGlvbklELCB1aW50NjRfdCBmcmFtZUlELCBTdHJp
bmcgb3JpZ2luSWRlbnRpZmllcikKQEAgLTYxODUsNyArNjE4Miw3IEBAIHZvaWQgV2ViUGFnZVBy
b3h5OjpzZXRFZGl0YWJsZUVsZW1lbnRJc0ZvY3VzZWQoYm9vbCBlZGl0YWJsZUVsZW1lbnRJc0Zv
Y3VzZWQpCiAjZW5kaWYgLy8gUExBVEZPUk0oTUFDKQogCiAjaWYgUExBVEZPUk0oQ09DT0EpCi1Q
YXNzUmVmUHRyPFZpZXdTbmFwc2hvdD4gV2ViUGFnZVByb3h5Ojp0YWtlVmlld1NuYXBzaG90KCkK
K1JlZlB0cjxWaWV3U25hcHNob3Q+IFdlYlBhZ2VQcm94eTo6dGFrZVZpZXdTbmFwc2hvdCgpCiB7
CiAgICAgcmV0dXJuIG1fcGFnZUNsaWVudC50YWtlVmlld1NuYXBzaG90KCk7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggMzViZTAxYTU3NzQxMTJiNDQ2MGE1
YjhkMGNmZTgwZjQ4YTYyM2EwNi4uZDQ3YzBjOWMzNjgzYTQ4NjBlMWM1MTg0NjAxYWY0ZjcwNDU5
OWEyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5o
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtODQsNyAr
ODQsNiBAQAogI2luY2x1ZGUgPG1lbW9yeT4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2lu
Y2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+Ci0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNs
dWRlIDx3dGYvUmVmLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9W
ZWN0b3IuaD4KQEAgLTg2MCw3ICs4NTksNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBhZGRFZGl0Q29t
bWFuZChXZWJFZGl0Q29tbWFuZFByb3h5Kik7CiAgICAgdm9pZCByZW1vdmVFZGl0Q29tbWFuZChX
ZWJFZGl0Q29tbWFuZFByb3h5Kik7CiAgICAgYm9vbCBpc1ZhbGlkRWRpdENvbW1hbmQoV2ViRWRp
dENvbW1hbmRQcm94eSopOwotICAgIHZvaWQgcmVnaXN0ZXJFZGl0Q29tbWFuZChQYXNzUmVmUHRy
PFdlYkVkaXRDb21tYW5kUHJveHk+LCBVbmRvT3JSZWRvKTsKKyAgICB2b2lkIHJlZ2lzdGVyRWRp
dENvbW1hbmQoUmVmPFdlYkVkaXRDb21tYW5kUHJveHk+JiYsIFVuZG9PclJlZG8pOwogCiAjaWYg
UExBVEZPUk0oQ09DT0EpCiAgICAgdm9pZCByZWdpc3RlcktleXByZXNzQ29tbWFuZE5hbWUoY29u
c3QgU3RyaW5nJiBuYW1lKSB7IG1fa25vd25LZXlwcmVzc0NvbW1hbmROYW1lcy5hZGQobmFtZSk7
IH0KQEAgLTEwMTMsNyArMTAxMiw3IEBAIHB1YmxpYzoKICAgICBib29sIGF1dG9TaXppbmdTaG91
bGRFeHBhbmRUb1ZpZXdIZWlnaHQoKSBjb25zdCB7IHJldHVybiBtX2F1dG9TaXppbmdTaG91bGRF
eHBhbmRUb1ZpZXdIZWlnaHQ7IH0KICAgICB2b2lkIHNldEF1dG9TaXppbmdTaG91bGRFeHBhbmRU
b1ZpZXdIZWlnaHQoYm9vbCk7CiAKLSAgICB2b2lkIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNo
YWxsZW5nZVByb3h5KHVpbnQ2NF90IGZyYW1lSUQsIFBhc3NSZWZQdHI8QXV0aGVudGljYXRpb25D
aGFsbGVuZ2VQcm94eT4pOworICAgIHZvaWQgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxl
bmdlUHJveHkodWludDY0X3QgZnJhbWVJRCwgUmVmPEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJv
eHk+JiYpOwogCiAgICAgaW50NjRfdCBzcGVsbERvY3VtZW50VGFnKCk7CiAgICAgdm9pZCBkaWRG
aW5pc2hDaGVja2luZ1RleHQodWludDY0X3QgcmVxdWVzdElELCBjb25zdCBWZWN0b3I8V2ViQ29y
ZTo6VGV4dENoZWNraW5nUmVzdWx0PiYpOwpAQCAtMTAzOCw3ICsxMDM3LDcgQEAgcHVibGljOgog
ICAgIHZvaWQgcmVjb3JkTmF2aWdhdGlvblNuYXBzaG90KFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0m
KTsKIAogI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIFBhc3NSZWZQdHI8Vmlld1NuYXBzaG90PiB0
YWtlVmlld1NuYXBzaG90KCk7CisgICAgUmVmUHRyPFZpZXdTbmFwc2hvdD4gdGFrZVZpZXdTbmFw
c2hvdCgpOwogI2VuZGlmCiAKICNpZiBFTkFCTEUoU1VCVExFX0NSWVBUTykKQEAgLTEzMTIsOCAr
MTMxMSw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBwYWdlRGlkU2Nyb2xsKCk7CiAgICAgdm9pZCBy
dW5PcGVuUGFuZWwodWludDY0X3QgZnJhbWVJRCwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmln
aW5EYXRhJiwgY29uc3QgV2ViQ29yZTo6RmlsZUNob29zZXJTZXR0aW5ncyYpOwogICAgIHZvaWQg
cHJpbnRGcmFtZSh1aW50NjRfdCBmcmFtZUlEKTsKLSAgICB2b2lkIGV4Y2VlZGVkRGF0YWJhc2VR
dW90YSh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBTdHJpbmcmIG9yaWdpbklkZW50aWZpZXIsIGNv
bnN0IFN0cmluZyYgZGF0YWJhc2VOYW1lLCBjb25zdCBTdHJpbmcmIGRpc3BsYXlOYW1lLCB1aW50
NjRfdCBjdXJyZW50UXVvdGEsIHVpbnQ2NF90IGN1cnJlbnRPcmlnaW5Vc2FnZSwgdWludDY0X3Qg
Y3VycmVudERhdGFiYXNlVXNhZ2UsIHVpbnQ2NF90IGV4cGVjdGVkVXNhZ2UsIFBhc3NSZWZQdHI8
TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RXhjZWVkZWREYXRhYmFzZVF1b3RhOjpEZWxheWVkUmVw
bHk+KTsKLSAgICB2b2lkIHJlYWNoZWRBcHBsaWNhdGlvbkNhY2hlT3JpZ2luUXVvdGEoY29uc3Qg
U3RyaW5nJiBvcmlnaW5JZGVudGlmaWVyLCB1aW50NjRfdCBjdXJyZW50UXVvdGEsIHVpbnQ2NF90
IHRvdGFsQnl0ZXNOZWVkZWQsIFBhc3NSZWZQdHI8TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6UmVh
Y2hlZEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5RdW90YTo6RGVsYXllZFJlcGx5Pik7CisgICAgdm9p
ZCBleGNlZWRlZERhdGFiYXNlUXVvdGEodWludDY0X3QgZnJhbWVJRCwgY29uc3QgU3RyaW5nJiBv
cmlnaW5JZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGRhdGFiYXNlTmFtZSwgY29uc3QgU3RyaW5n
JiBkaXNwbGF5TmFtZSwgdWludDY0X3QgY3VycmVudFF1b3RhLCB1aW50NjRfdCBjdXJyZW50T3Jp
Z2luVXNhZ2UsIHVpbnQ2NF90IGN1cnJlbnREYXRhYmFzZVVzYWdlLCB1aW50NjRfdCBleHBlY3Rl
ZFVzYWdlLCBSZWY8TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RXhjZWVkZWREYXRhYmFzZVF1b3Rh
OjpEZWxheWVkUmVwbHk+JiYpOworICAgIHZvaWQgcmVhY2hlZEFwcGxpY2F0aW9uQ2FjaGVPcmln
aW5RdW90YShjb25zdCBTdHJpbmcmIG9yaWdpbklkZW50aWZpZXIsIHVpbnQ2NF90IGN1cnJlbnRR
dW90YSwgdWludDY0X3QgdG90YWxCeXRlc05lZWRlZCwgUmVmPE1lc3NhZ2VzOjpXZWJQYWdlUHJv
eHk6OlJlYWNoZWRBcHBsaWNhdGlvbkNhY2hlT3JpZ2luUXVvdGE6OkRlbGF5ZWRSZXBseT4mJik7
CiAgICAgdm9pZCByZXF1ZXN0R2VvbG9jYXRpb25QZXJtaXNzaW9uRm9yRnJhbWUodWludDY0X3Qg
Z2VvbG9jYXRpb25JRCwgdWludDY0X3QgZnJhbWVJRCwgU3RyaW5nIG9yaWdpbklkZW50aWZpZXIp
OwogCiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViUHJvY2Vzc1Bvb2wuY3BwCmluZGV4IDFjMGIwZDdlOWMwYmI0ZDM2YWQ2YmUxOGEyMmJkNDE5
ODZlNDUxZDYuLjMyODEwOWYxNzVmZWFhMjBjNjcwMWFhODU0YmQ3NzM0N2IwM2U0OWMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcApAQCAtMTU0Miw3ICsx
NTQyLDcgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6cGx1Z0luRGlkUmVjZWl2ZVVzZXJJbnRlcmFj
dGlvbih1bnNpZ25lZCBwbHVnSW5PcmlnaW5IYXNoLAogICAgIG1fcGx1Z0luQXV0b1N0YXJ0UHJv
dmlkZXIuZGlkUmVjZWl2ZVVzZXJJbnRlcmFjdGlvbihwbHVnSW5PcmlnaW5IYXNoLCBzZXNzaW9u
SUQpOwogfQogCi1QYXNzUmVmUHRyPEFQSTo6RGljdGlvbmFyeT4gV2ViUHJvY2Vzc1Bvb2w6OnBs
dWdJbkF1dG9TdGFydE9yaWdpbkhhc2hlcygpIGNvbnN0CitSZWY8QVBJOjpEaWN0aW9uYXJ5PiBX
ZWJQcm9jZXNzUG9vbDo6cGx1Z0luQXV0b1N0YXJ0T3JpZ2luSGFzaGVzKCkgY29uc3QKIHsKICAg
ICByZXR1cm4gbV9wbHVnSW5BdXRvU3RhcnRQcm92aWRlci5hdXRvU3RhcnRPcmlnaW5zVGFibGVD
b3B5KCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vz
c1Bvb2wuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCmluZGV4
IGIyNDJhNjM3OTI4MDJjYmEwOWViMjk5MzZjODQyOTlmNmVhZmQ0OTMuLjczOWIzOTcwMTUwOTc1
MjI0NzExMWZlOWEzYTQyNjA3NzAzYzAxZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9X
ZWJQcm9jZXNzUG9vbC5oCkBAIC00OSw3ICs0OSw2IEBACiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQu
aD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+Ci0j
aW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlci5oPgog
I2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+
CkBAIC0xODUsNyArMTg0LDcgQEAgcHVibGljOgogICAgIERvd25sb2FkUHJveHkqIGRvd25sb2Fk
KFdlYlBhZ2VQcm94eSogaW5pdGlhdGluZ1BhZ2UsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVx
dWVzdCYsIGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkRmlsZW5hbWUgPSB7IH0pOwogICAgIERvd25s
b2FkUHJveHkqIHJlc3VtZURvd25sb2FkKGNvbnN0IEFQSTo6RGF0YSogcmVzdW1lRGF0YSwgY29u
c3QgU3RyaW5nJiBwYXRoKTsKIAotICAgIHZvaWQgc2V0SW5qZWN0ZWRCdW5kbGVJbml0aWFsaXph
dGlvblVzZXJEYXRhKFBhc3NSZWZQdHI8QVBJOjpPYmplY3Q+IHVzZXJEYXRhKSB7IG1faW5qZWN0
ZWRCdW5kbGVJbml0aWFsaXphdGlvblVzZXJEYXRhID0gdXNlckRhdGE7IH0KKyAgICB2b2lkIHNl
dEluamVjdGVkQnVuZGxlSW5pdGlhbGl6YXRpb25Vc2VyRGF0YShSZWZQdHI8QVBJOjpPYmplY3Q+
JiYgdXNlckRhdGEpIHsgbV9pbmplY3RlZEJ1bmRsZUluaXRpYWxpemF0aW9uVXNlckRhdGEgPSBX
VEZNb3ZlKHVzZXJEYXRhKTsgfQogCiAgICAgdm9pZCBwb3N0TWVzc2FnZVRvSW5qZWN0ZWRCdW5k
bGUoY29uc3QgU3RyaW5nJiwgQVBJOjpPYmplY3QqKTsKIApAQCAtMzA2LDcgKzMwNSw3IEBAIHB1
YmxpYzoKIAogICAgIHZvaWQgdGV4dENoZWNrZXJTdGF0ZUNoYW5nZWQoKTsKIAotICAgIFBhc3NS
ZWZQdHI8QVBJOjpEaWN0aW9uYXJ5PiBwbHVnSW5BdXRvU3RhcnRPcmlnaW5IYXNoZXMoKSBjb25z
dDsKKyAgICBSZWY8QVBJOjpEaWN0aW9uYXJ5PiBwbHVnSW5BdXRvU3RhcnRPcmlnaW5IYXNoZXMo
KSBjb25zdDsKICAgICB2b2lkIHNldFBsdWdJbkF1dG9TdGFydE9yaWdpbkhhc2hlcyhBUEk6OkRp
Y3Rpb25hcnkmKTsKICAgICB2b2lkIHNldFBsdWdJbkF1dG9TdGFydE9yaWdpbnMoQVBJOjpBcnJh
eSYpOwogICAgIHZvaWQgc2V0UGx1Z0luQXV0b1N0YXJ0T3JpZ2luc0ZpbHRlcmluZ091dEVudHJp
ZXNBZGRlZEFmdGVyVGltZShBUEk6OkRpY3Rpb25hcnkmLCBkb3VibGUgdGltZSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgKaW5kZXggYTIxY2UwNGE2YjlkMGRm
MjU2ZmYxNzliMTg0ZDE4ODhlYTk2NTJiZC4uNDE1ODJhNzliZTM5MmY1MDM4YjgzYTc3ZWE3MTNm
M2FjOTZkMzRjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nl
c3NQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHku
aApAQCAtNDMsOCArNDMsOCBAQAogI2luY2x1ZGUgPG1lbW9yeT4KICNpbmNsdWRlIDx3dGYvRm9y
d2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+Ci0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQ
dHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIu
aD4KIAogbmFtZXNwYWNlIEFQSSB7CiBjbGFzcyBQYWdlQ29uZmlndXJhdGlvbjsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MuaCBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MuaAppbmRleCA4Yjhl
YzhjMGQ3NTVjZDA5MjI2NDVjZTBhYjJlMDMzZTllNTk0YTRjLi43ZmYwNjA4NzY2OTdkMmRhMTBj
ZTZhN2FkMmRiNGJkMGYyZDVhZmI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L2lvcy9QYWdlQ2xpZW50SW1wbElPUy5oCkBAIC03MywxMyArNzMsMTMgQEAgcHJpdmF0ZToKICAg
ICB2b2lkIHNldEN1cnNvcihjb25zdCBXZWJDb3JlOjpDdXJzb3ImKSBvdmVycmlkZTsKICAgICB2
b2lkIHNldEN1cnNvckhpZGRlblVudGlsTW91c2VNb3Zlcyhib29sKSBvdmVycmlkZTsKICAgICB2
b2lkIGRpZENoYW5nZVZpZXdwb3J0UHJvcGVydGllcyhjb25zdCBXZWJDb3JlOjpWaWV3cG9ydEF0
dHJpYnV0ZXMmKSBvdmVycmlkZTsKLSAgICB2b2lkIHJlZ2lzdGVyRWRpdENvbW1hbmQoUGFzc1Jl
ZlB0cjxXZWJFZGl0Q29tbWFuZFByb3h5PiwgV2ViUGFnZVByb3h5OjpVbmRvT3JSZWRvKSBvdmVy
cmlkZTsKKyAgICB2b2lkIHJlZ2lzdGVyRWRpdENvbW1hbmQoUmVmPFdlYkVkaXRDb21tYW5kUHJv
eHk+JiYsIFdlYlBhZ2VQcm94eTo6VW5kb09yUmVkbykgb3ZlcnJpZGU7CiAgICAgdm9pZCBjbGVh
ckFsbEVkaXRDb21tYW5kcygpIG92ZXJyaWRlOwogICAgIGJvb2wgY2FuVW5kb1JlZG8oV2ViUGFn
ZVByb3h5OjpVbmRvT3JSZWRvKSBvdmVycmlkZTsKICAgICB2b2lkIGV4ZWN1dGVVbmRvUmVkbyhX
ZWJQYWdlUHJveHk6OlVuZG9PclJlZG8pIG92ZXJyaWRlOwogICAgIHZvaWQgYWNjZXNzaWJpbGl0
eVdlYlByb2Nlc3NUb2tlblJlY2VpdmVkKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYpIG92ZXJy
aWRlOwogICAgIGJvb2wgZXhlY3V0ZVNhdmVkQ29tbWFuZEJ5U2VsZWN0b3IoY29uc3QgU3RyaW5n
JiBzZWxlY3Rvcikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBzZXREcmFnSW1hZ2UoY29uc3QgV2ViQ29y
ZTo6SW50UG9pbnQmIGNsaWVudFBvc2l0aW9uLCBQYXNzUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4g
ZHJhZ0ltYWdlLCBXZWJDb3JlOjpEcmFnU291cmNlQWN0aW9uKSBvdmVycmlkZTsKKyAgICB2b2lk
IHNldERyYWdJbWFnZShjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgY2xpZW50UG9zaXRpb24sIFJl
ZjxTaGFyZWFibGVCaXRtYXA+JiYgZHJhZ0ltYWdlLCBXZWJDb3JlOjpEcmFnU291cmNlQWN0aW9u
KSBvdmVycmlkZTsKICAgICB2b2lkIHVwZGF0ZVNlY3VyZUlucHV0U3RhdGUoKSBvdmVycmlkZTsK
ICAgICB2b2lkIHJlc2V0U2VjdXJlSW5wdXRTdGF0ZSgpIG92ZXJyaWRlOwogICAgIHZvaWQgbm90
aWZ5SW5wdXRDb250ZXh0QWJvdXREaXNjYXJkZWRDb21wb3NpdGlvbigpIG92ZXJyaWRlOwpAQCAt
MTExLDcgKzExMSw3IEBAIHByaXZhdGU6CiAgICAgTGF5ZXJPclZpZXcgKmFjY2VsZXJhdGVkQ29t
cG9zaXRpbmdSb290TGF5ZXIoKSBjb25zdCBvdmVycmlkZTsKICAgICBMYXllckhvc3RpbmdNb2Rl
IHZpZXdMYXllckhvc3RpbmdNb2RlKCkgb3ZlcnJpZGUgeyByZXR1cm4gTGF5ZXJIb3N0aW5nTW9k
ZTo6T3V0T2ZQcm9jZXNzOyB9CiAKLSAgICBQYXNzUmVmUHRyPFZpZXdTbmFwc2hvdD4gdGFrZVZp
ZXdTbmFwc2hvdCgpIG92ZXJyaWRlOworICAgIFJlZlB0cjxWaWV3U25hcHNob3Q+IHRha2VWaWV3
U25hcHNob3QoKSBvdmVycmlkZTsKICAgICB2b2lkIHdoZWVsRXZlbnRXYXNOb3RIYW5kbGVkQnlX
ZWJDb3JlKGNvbnN0IE5hdGl2ZVdlYldoZWVsRXZlbnQmKSBvdmVycmlkZTsKIAogICAgIHZvaWQg
Y29tbWl0UG90ZW50aWFsVGFwRmFpbGVkKCkgb3ZlcnJpZGU7CkBAIC0xMzEsNyArMTMxLDcgQEAg
cHJpdmF0ZToKICAgICB2b2lkIHNlbGVjdGlvbkRpZENoYW5nZSgpIG92ZXJyaWRlOwogICAgIGJv
b2wgaW50ZXJwcmV0S2V5RXZlbnQoY29uc3QgTmF0aXZlV2ViS2V5Ym9hcmRFdmVudCYsIGJvb2wg
aXNDaGFyRXZlbnQpIG92ZXJyaWRlOwogICAgIHZvaWQgcG9zaXRpb25JbmZvcm1hdGlvbkRpZENo
YW5nZShjb25zdCBJbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbiYpIG92ZXJyaWRlOwot
ICAgIHZvaWQgc2F2ZUltYWdlVG9MaWJyYXJ5KFBhc3NSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVm
ZmVyPikgb3ZlcnJpZGU7CisgICAgdm9pZCBzYXZlSW1hZ2VUb0xpYnJhcnkoUmVmPFdlYkNvcmU6
OlNoYXJlZEJ1ZmZlcj4mJikgb3ZlcnJpZGU7CiAgICAgYm9vbCBhbGxvd3NCbG9ja1NlbGVjdGlv
bigpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkVXBkYXRlQmxvY2tTZWxlY3Rpb25XaXRoVG91Y2go
dWludDMyX3QgdG91Y2gsIHVpbnQzMl90IGZsYWdzLCBmbG9hdCBncm93VGhyZXNob2xkLCBmbG9h
dCBzaHJpbmtUaHJlc2hvbGQpIG92ZXJyaWRlOwogICAgIHZvaWQgc2hvd1BsYXliYWNrVGFyZ2V0
UGlja2VyKGJvb2wgaGFzVmlkZW8sIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGVsZW1lbnRSZWN0
KSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvUGFn
ZUNsaWVudEltcGxJT1MubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1BhZ2VDbGll
bnRJbXBsSU9TLm1tCmluZGV4IGQzNzYzZTExOTlkOTNmODMyMWZhNTAzYmE3NzVlOTkyZTg0Yjgx
NzQuLmNkODQwYzI4YzM2MmExN2RkYzExMTViOGYyYmY5OWZjNmFjNzA3OWIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MubW0KKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbQpAQCAtNjQs
NyArNjQsNyBAQCBAaW50ZXJmYWNlIFdLRWRpdENvbW1hbmRPYmpDIDogTlNPYmplY3QKIHsKICAg
ICBSZWZQdHI8V2ViRWRpdENvbW1hbmRQcm94eT4gbV9jb21tYW5kOwogfQotLSAoaWQpaW5pdFdp
dGhXZWJFZGl0Q29tbWFuZFByb3h5OihQYXNzUmVmUHRyPFdlYkVkaXRDb21tYW5kUHJveHk+KWNv
bW1hbmQ7CistIChpZClpbml0V2l0aFdlYkVkaXRDb21tYW5kUHJveHk6KFJlZjxXZWJFZGl0Q29t
bWFuZFByb3h5PiYmKWNvbW1hbmQ7CiAtIChXZWJFZGl0Q29tbWFuZFByb3h5Kiljb21tYW5kOwog
QGVuZAogCkBAIC03NSwxMyArNzUsMTMgQEAgQGVuZAogCiBAaW1wbGVtZW50YXRpb24gV0tFZGl0
Q29tbWFuZE9iakMKIAotLSAoaWQpaW5pdFdpdGhXZWJFZGl0Q29tbWFuZFByb3h5OihQYXNzUmVm
UHRyPFdlYkVkaXRDb21tYW5kUHJveHk+KWNvbW1hbmQKKy0gKGlkKWluaXRXaXRoV2ViRWRpdENv
bW1hbmRQcm94eTooUmVmPFdlYkVkaXRDb21tYW5kUHJveHk+JiYpY29tbWFuZAogewogICAgIHNl
bGYgPSBbc3VwZXIgaW5pdF07CiAgICAgaWYgKCFzZWxmKQogICAgICAgICByZXR1cm4gbmlsOwog
ICAgIAotICAgIG1fY29tbWFuZCA9IGNvbW1hbmQ7CisgICAgbV9jb21tYW5kID0gV1RGTW92ZShj
b21tYW5kKTsKICAgICByZXR1cm4gc2VsZjsKIH0KIApAQCAtMzAzLDExICszMDMsOSBAQCB2b2lk
IFBhZ2VDbGllbnRJbXBsOjpkaWRDaGFuZ2VWaWV3cG9ydFByb3BlcnRpZXMoY29uc3QgVmlld3Bv
cnRBdHRyaWJ1dGVzJikKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCi12b2lkIFBhZ2VDbGll
bnRJbXBsOjpyZWdpc3RlckVkaXRDb21tYW5kKFBhc3NSZWZQdHI8V2ViRWRpdENvbW1hbmRQcm94
eT4gcHJwQ29tbWFuZCwgV2ViUGFnZVByb3h5OjpVbmRvT3JSZWRvIHVuZG9PclJlZG8pCit2b2lk
IFBhZ2VDbGllbnRJbXBsOjpyZWdpc3RlckVkaXRDb21tYW5kKFJlZjxXZWJFZGl0Q29tbWFuZFBy
b3h5PiYmIGNvbW1hbmQsIFdlYlBhZ2VQcm94eTo6VW5kb09yUmVkbyB1bmRvT3JSZWRvKQogewot
ICAgIFJlZlB0cjxXZWJFZGl0Q29tbWFuZFByb3h5PiBjb21tYW5kID0gcHJwQ29tbWFuZDsKLSAg
ICAKLSAgICBSZXRhaW5QdHI8V0tFZGl0Q29tbWFuZE9iakM+IGNvbW1hbmRPYmpDID0gYWRvcHRO
UyhbW1dLRWRpdENvbW1hbmRPYmpDIGFsbG9jXSBpbml0V2l0aFdlYkVkaXRDb21tYW5kUHJveHk6
Y29tbWFuZF0pOworICAgIFJldGFpblB0cjxXS0VkaXRDb21tYW5kT2JqQz4gY29tbWFuZE9iakMg
PSBhZG9wdE5TKFtbV0tFZGl0Q29tbWFuZE9iakMgYWxsb2NdIGluaXRXaXRoV2ViRWRpdENvbW1h
bmRQcm94eTpjb21tYW5kLmNvcHlSZWYoKV0pOwogICAgIFN0cmluZyBhY3Rpb25OYW1lID0gV2Vi
RWRpdENvbW1hbmRQcm94eTo6bmFtZUZvckVkaXRBY3Rpb24oY29tbWFuZC0+ZWRpdEFjdGlvbigp
KTsKICAgICAKICAgICBOU1VuZG9NYW5hZ2VyICp1bmRvTWFuYWdlciA9IFttX2NvbnRlbnRWaWV3
IHVuZG9NYW5hZ2VyXTsKQEAgLTM1NCw3ICszNTIsNyBAQCB2b2lkIFBhZ2VDbGllbnRJbXBsOjpw
b3NpdGlvbkluZm9ybWF0aW9uRGlkQ2hhbmdlKGNvbnN0IEludGVyYWN0aW9uSW5mb3JtYXRpb25B
dAogICAgIFttX2NvbnRlbnRWaWV3IF9wb3NpdGlvbkluZm9ybWF0aW9uRGlkQ2hhbmdlOmluZm9d
OwogfQogCi12b2lkIFBhZ2VDbGllbnRJbXBsOjpzYXZlSW1hZ2VUb0xpYnJhcnkoUGFzc1JlZlB0
cjxTaGFyZWRCdWZmZXI+IGltYWdlQnVmZmVyKQordm9pZCBQYWdlQ2xpZW50SW1wbDo6c2F2ZUlt
YWdlVG9MaWJyYXJ5KFJlZjxTaGFyZWRCdWZmZXI+JiYgaW1hZ2VCdWZmZXIpCiB7CiAgICAgUmV0
YWluUHRyPE5TRGF0YT4gaW1hZ2VEYXRhID0gaW1hZ2VCdWZmZXItPmNyZWF0ZU5TRGF0YSgpOwog
ICAgIFVJSW1hZ2VEYXRhV3JpdGVUb1NhdmVkUGhvdG9zQWxidW0oaW1hZ2VEYXRhLmdldCgpLCBu
aWwsIE5VTEwsIE5VTEwpOwpAQCAtMzY2LDcgKzM2NCw3IEBAIGJvb2wgUGFnZUNsaWVudEltcGw6
OmV4ZWN1dGVTYXZlZENvbW1hbmRCeVNlbGVjdG9yKGNvbnN0IFN0cmluZyYpCiAgICAgcmV0dXJu
IGZhbHNlOwogfQogCi12b2lkIFBhZ2VDbGllbnRJbXBsOjpzZXREcmFnSW1hZ2UoY29uc3QgSW50
UG9pbnQmLCBQYXNzUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4sIERyYWdTb3VyY2VBY3Rpb24pCit2
b2lkIFBhZ2VDbGllbnRJbXBsOjpzZXREcmFnSW1hZ2UoY29uc3QgSW50UG9pbnQmLCBSZWY8U2hh
cmVhYmxlQml0bWFwPiYmLCBEcmFnU291cmNlQWN0aW9uKQogewogICAgIG5vdEltcGxlbWVudGVk
KCk7CiB9CkBAIC00OTQsNyArNDkyLDcgQEAgTGF5ZXJPclZpZXcgKlBhZ2VDbGllbnRJbXBsOjph
Y2NlbGVyYXRlZENvbXBvc2l0aW5nUm9vdExheWVyKCkgY29uc3QKICAgICByZXR1cm4gbnVsbHB0
cjsKIH0KIAotUGFzc1JlZlB0cjxWaWV3U25hcHNob3Q+IFBhZ2VDbGllbnRJbXBsOjp0YWtlVmll
d1NuYXBzaG90KCkKK1JlZlB0cjxWaWV3U25hcHNob3Q+IFBhZ2VDbGllbnRJbXBsOjp0YWtlVmll
d1NuYXBzaG90KCkKIHsKICAgICByZXR1cm4gW21fd2ViVmlldyBfdGFrZVZpZXdTbmFwc2hvdF07
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dLR2VvbG9jYXRp
b25Qcm92aWRlcklPUy5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tHZW9sb2Nh
dGlvblByb3ZpZGVySU9TLm1tCmluZGV4IDMxYTM3NWRjNmYzMDhkYzYwMDA1YWRkZmFlMjkwYzU3
ODIwZmFjYzUuLmMxOTgyMTEwNTM5NGNlOTRkMTcwYjIzNTc0MTUyYTViMGY3NTdjZGMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tHZW9sb2NhdGlvblByb3ZpZGVy
SU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tHZW9sb2NhdGlvblBy
b3ZpZGVySU9TLm1tCkBAIC00Niw3ICs0Niw2IEBACiAjaW1wb3J0IDx3dGYvQXNzZXJ0aW9ucy5o
PgogI2ltcG9ydCA8d3RmL0Jsb2NrUHRyLmg+CiAjaW1wb3J0IDx3dGYvSGFzaFNldC5oPgotI2lt
cG9ydCA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbXBvcnQgPHd0Zi9SZWZQdHIuaD4KICNpbXBvcnQg
PHd0Zi9SZXRhaW5QdHIuaD4KIApAQCAtNjcsNyArNjYsNyBAQCBAaW50ZXJmYWNlIFdLTGVnYWN5
Q29yZUxvY2F0aW9uUHJvdmlkZXIgOiBOU09iamVjdDxfV0tHZW9sb2NhdGlvbkNvcmVMb2NhdGlv
blBybwogQGVuZAogCiBAaW50ZXJmYWNlIFdLV2ViQWxsb3dEZW55UG9saWN5TGlzdGVuZXIgOiBO
U09iamVjdDxXZWJBbGxvd0RlbnlQb2xpY3lMaXN0ZW5lcj4KLS0gKGlkKWluaXRXaXRoUGVybWlz
c2lvblJlcXVlc3RQcm94eTooUGFzc1JlZlB0cjxHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0
UHJveHk+KXBlcm1pc3Npb25SZXF1ZXN0UHJveHk7CistIChpZClpbml0V2l0aFBlcm1pc3Npb25S
ZXF1ZXN0UHJveHk6KFJlZlB0cjxHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0UHJveHk+JiYp
cGVybWlzc2lvblJlcXVlc3RQcm94eTsKIC0gKHZvaWQpZGVueU9ubHlUaGlzUmVxdWVzdCBOT19S
RVRVUk5fRFVFX1RPX0FTU0VSVDsKIEBlbmQKIApAQCAtMzMzLDEzICszMzIsMTMgQEAgQGltcGxl
bWVudGF0aW9uIFdLV2ViQWxsb3dEZW55UG9saWN5TGlzdGVuZXIgewogICAgIFJlZlB0cjxHZW9s
b2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0UHJveHk+IF9wZXJtaXNzaW9uUmVxdWVzdFByb3h5Owog
fQogCi0tIChpZClpbml0V2l0aFBlcm1pc3Npb25SZXF1ZXN0UHJveHk6KFBhc3NSZWZQdHI8R2Vv
bG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdFByb3h5PilwZXJtaXNzaW9uUmVxdWVzdFByb3h5Cist
IChpZClpbml0V2l0aFBlcm1pc3Npb25SZXF1ZXN0UHJveHk6KFJlZlB0cjxHZW9sb2NhdGlvblBl
cm1pc3Npb25SZXF1ZXN0UHJveHk+JiYpcGVybWlzc2lvblJlcXVlc3RQcm94eQogewogICAgIHNl
bGYgPSBbc3VwZXIgaW5pdF07CiAgICAgaWYgKCFzZWxmKQogICAgICAgICByZXR1cm4gbmlsOwog
Ci0gICAgX3Blcm1pc3Npb25SZXF1ZXN0UHJveHkgPSBwZXJtaXNzaW9uUmVxdWVzdFByb3h5Owor
ICAgIF9wZXJtaXNzaW9uUmVxdWVzdFByb3h5ID0gV1RGTW92ZShwZXJtaXNzaW9uUmVxdWVzdFBy
b3h5KTsKICAgICByZXR1cm4gc2VsZjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQppbmRleCBjZmQxZTIzMzg3ZjZiN2E2MTg0ZGViZDg0
NzI4NDVkOTVkZjNjYWU1Li5hNWM2ZmM0MzhiODRmMzE4ZWNhMzg3OWIxZTVkYjM0NjdmNTZjOTRm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlP
Uy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5t
bQpAQCAtNjYyLDkgKzY2Miw5IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpwZXJmb3JtQWN0aW9uT25F
bGVtZW50KHVpbnQzMl90IGFjdGlvbikKIAogdm9pZCBXZWJQYWdlUHJveHk6OnNhdmVJbWFnZVRv
TGlicmFyeShjb25zdCBTaGFyZWRNZW1vcnk6OkhhbmRsZSYgaW1hZ2VIYW5kbGUsIHVpbnQ2NF90
IGltYWdlU2l6ZSkKIHsKLSAgICBSZWZQdHI8U2hhcmVkTWVtb3J5PiBzaGFyZWRNZW1vcnlCdWZm
ZXIgPSBTaGFyZWRNZW1vcnk6Om1hcChpbWFnZUhhbmRsZSwgU2hhcmVkTWVtb3J5OjpQcm90ZWN0
aW9uOjpSZWFkT25seSk7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gU2hhcmVk
QnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcio+KHNoYXJlZE1lbW9yeUJ1
ZmZlci0+ZGF0YSgpKSwgaW1hZ2VTaXplKTsKLSAgICBtX3BhZ2VDbGllbnQuc2F2ZUltYWdlVG9M
aWJyYXJ5KGJ1ZmZlcik7CisgICAgYXV0byBzaGFyZWRNZW1vcnlCdWZmZXIgPSBTaGFyZWRNZW1v
cnk6Om1hcChpbWFnZUhhbmRsZSwgU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uOjpSZWFkT25seSk7
CisgICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDx1bnNp
Z25lZCBjaGFyKj4oc2hhcmVkTWVtb3J5QnVmZmVyLT5kYXRhKCkpLCBpbWFnZVNpemUpOworICAg
IG1fcGFnZUNsaWVudC5zYXZlSW1hZ2VUb0xpYnJhcnkoV1RGTW92ZShidWZmZXIpKTsKIH0KIAog
dm9pZCBXZWJQYWdlUHJveHk6OmRpZFVwZGF0ZUJsb2NrU2VsZWN0aW9uV2l0aFRvdWNoKHVpbnQz
Ml90IHRvdWNoLCB1aW50MzJfdCBmbGFncywgZmxvYXQgZ3Jvd1RocmVzaG9sZCwgZmxvYXQgc2hy
aW5rVGhyZXNob2xkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9Q
YWdlQ2xpZW50SW1wbC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50
SW1wbC5oCmluZGV4IDNiNmIwYzY5NGVlOWMzZGExYmMzYTk4MzNlNjA5MzVhMjJmNWZhZmYuLjBk
OTk3YzJmYWFmZTY0MzNmZTc3NDlmYTM3Njg4MjczNWVjMTY5ZTEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGwuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsLmgKQEAgLTkxLDE0ICs5MSwxNCBAQCBw
cml2YXRlOgogICAgIHZvaWQgc2V0Q3Vyc29ySGlkZGVuVW50aWxNb3VzZU1vdmVzKGJvb2wpIG92
ZXJyaWRlOwogICAgIHZvaWQgZGlkQ2hhbmdlVmlld3BvcnRQcm9wZXJ0aWVzKGNvbnN0IFdlYkNv
cmU6OlZpZXdwb3J0QXR0cmlidXRlcyYpIG92ZXJyaWRlOwogCi0gICAgdm9pZCByZWdpc3RlckVk
aXRDb21tYW5kKFBhc3NSZWZQdHI8V2ViRWRpdENvbW1hbmRQcm94eT4sIFdlYlBhZ2VQcm94eTo6
VW5kb09yUmVkbykgb3ZlcnJpZGU7CisgICAgdm9pZCByZWdpc3RlckVkaXRDb21tYW5kKFJlZjxX
ZWJFZGl0Q29tbWFuZFByb3h5PiYmLCBXZWJQYWdlUHJveHk6OlVuZG9PclJlZG8pIG92ZXJyaWRl
OwogICAgIHZvaWQgY2xlYXJBbGxFZGl0Q29tbWFuZHMoKSBvdmVycmlkZTsKICAgICBib29sIGNh
blVuZG9SZWRvKFdlYlBhZ2VQcm94eTo6VW5kb09yUmVkbykgb3ZlcnJpZGU7CiAgICAgdm9pZCBl
eGVjdXRlVW5kb1JlZG8oV2ViUGFnZVByb3h5OjpVbmRvT3JSZWRvKSBvdmVycmlkZTsKICAgICBi
b29sIGV4ZWN1dGVTYXZlZENvbW1hbmRCeVNlbGVjdG9yKGNvbnN0IFN0cmluZyYgc2VsZWN0b3Ip
IG92ZXJyaWRlOwotICAgIHZvaWQgc2V0RHJhZ0ltYWdlKGNvbnN0IFdlYkNvcmU6OkludFBvaW50
JiBjbGllbnRQb3NpdGlvbiwgUGFzc1JlZlB0cjxTaGFyZWFibGVCaXRtYXA+IGRyYWdJbWFnZSwg
V2ViQ29yZTo6RHJhZ1NvdXJjZUFjdGlvbikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBzZXRQcm9taXNl
ZERhdGFGb3JJbWFnZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBQYXNzUmVmUHRyPFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlcj4gaW1hZ2VCdWZmZXIsIGNvbnN0IFN0cmluZyYgZmlsZW5hbWUs
IGNvbnN0IFN0cmluZyYgZXh0ZW5zaW9uLCBjb25zdCBTdHJpbmcmIHRpdGxlLAotICAgICAgICBj
b25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiB2aXNpYmxlVXJsLCBQYXNzUmVmUHRyPFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlcj4gYXJjaGl2ZUJ1ZmZlcikgb3ZlcnJpZGU7CisgICAgdm9pZCBz
ZXREcmFnSW1hZ2UoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIGNsaWVudFBvc2l0aW9uLCBSZWY8
U2hhcmVhYmxlQml0bWFwPiYmIGRyYWdJbWFnZSwgV2ViQ29yZTo6RHJhZ1NvdXJjZUFjdGlvbikg
b3ZlcnJpZGU7CisgICAgdm9pZCBzZXRQcm9taXNlZERhdGFGb3JJbWFnZShjb25zdCBTdHJpbmcm
IHBhc3RlYm9hcmROYW1lLCBSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIGltYWdlQnVmZmVy
LCBjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBjb25zdCBTdHJpbmcmIGV4dGVuc2lvbiwgY29uc3Qg
U3RyaW5nJiB0aXRsZSwKKyAgICAgICAgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYg
dmlzaWJsZVVybCwgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBhcmNoaXZlQnVmZmVy
KSBvdmVycmlkZTsKICNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQogICAgIHZvaWQgc2V0
UHJvbWlzZWREYXRhRm9yQXR0YWNobWVudChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBj
b25zdCBTdHJpbmcmIGZpbGVuYW1lLCBjb25zdCBTdHJpbmcmIGV4dGVuc2lvbiwgY29uc3QgU3Ry
aW5nJiB0aXRsZSwgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgdmlzaWJsZVVybCkg
b3ZlcnJpZGU7CiAjZW5kaWYKQEAgLTE0Miw3ICsxNDIsNyBAQCBwcml2YXRlOgogICAgIHZvaWQg
ZXhpdEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCB1cGRh
dGVBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZShjb25zdCBMYXllclRyZWVDb250ZXh0Jikgb3Zl
cnJpZGU7CiAKLSAgICBQYXNzUmVmUHRyPFZpZXdTbmFwc2hvdD4gdGFrZVZpZXdTbmFwc2hvdCgp
IG92ZXJyaWRlOworICAgIFJlZlB0cjxWaWV3U25hcHNob3Q+IHRha2VWaWV3U25hcHNob3QoKSBv
dmVycmlkZTsKICAgICB2b2lkIHdoZWVsRXZlbnRXYXNOb3RIYW5kbGVkQnlXZWJDb3JlKGNvbnN0
IE5hdGl2ZVdlYldoZWVsRXZlbnQmKSBvdmVycmlkZTsKICNpZiBFTkFCTEUoTUFDX0dFU1RVUkVf
RVZFTlRTKQogICAgIHZvaWQgZ2VzdHVyZUV2ZW50V2FzTm90SGFuZGxlZEJ5V2ViQ29yZShjb25z
dCBOYXRpdmVXZWJHZXN0dXJlRXZlbnQmKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGwubW0gYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsLm1tCmluZGV4IDgxOTc4NWJlNzljMzJiMDVjOWRl
ZDNiNTJhYTA4NWJlNjdjOGM5ZGQuLjBhNWFhYjU0MDY0ZTE4MjI4ZmU1NWZkYjIwN2VhYWFkNTIz
YzFjOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVu
dEltcGwubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1w
bC5tbQpAQCAtMzE3LDkgKzMxNyw5IEBAIHZvaWQgUGFnZUNsaWVudEltcGw6OmRpZENoYW5nZVZp
ZXdwb3J0UHJvcGVydGllcyhjb25zdCBXZWJDb3JlOjpWaWV3cG9ydEF0dHJpYnV0CiB7CiB9CiAK
LXZvaWQgUGFnZUNsaWVudEltcGw6OnJlZ2lzdGVyRWRpdENvbW1hbmQoUGFzc1JlZlB0cjxXZWJF
ZGl0Q29tbWFuZFByb3h5PiBwcnBDb21tYW5kLCBXZWJQYWdlUHJveHk6OlVuZG9PclJlZG8gdW5k
b09yUmVkbykKK3ZvaWQgUGFnZUNsaWVudEltcGw6OnJlZ2lzdGVyRWRpdENvbW1hbmQoUmVmPFdl
YkVkaXRDb21tYW5kUHJveHk+JiYgY29tbWFuZCwgV2ViUGFnZVByb3h5OjpVbmRvT3JSZWRvIHVu
ZG9PclJlZG8pCiB7Ci0gICAgbV9pbXBsLT5yZWdpc3RlckVkaXRDb21tYW5kKHBycENvbW1hbmQs
IHVuZG9PclJlZG8pOworICAgIG1faW1wbC0+cmVnaXN0ZXJFZGl0Q29tbWFuZChXVEZNb3ZlKGNv
bW1hbmQpLCB1bmRvT3JSZWRvKTsKIH0KIAogI2lmIFVTRShJTlNFUlRJT05fVU5ET19HUk9VUElO
RykKQEAgLTM0NCw3ICszNDQsNyBAQCB2b2lkIFBhZ2VDbGllbnRJbXBsOjpleGVjdXRlVW5kb1Jl
ZG8oV2ViUGFnZVByb3h5OjpVbmRvT3JSZWRvIHVuZG9PclJlZG8pCiAgICAgcmV0dXJuICh1bmRv
T3JSZWRvID09IFdlYlBhZ2VQcm94eTo6VW5kbykgPyBbW21fdmlldyB1bmRvTWFuYWdlcl0gdW5k
b10gOiBbW21fdmlldyB1bmRvTWFuYWdlcl0gcmVkb107CiB9CiAKLXZvaWQgUGFnZUNsaWVudElt
cGw6OnNldERyYWdJbWFnZShjb25zdCBJbnRQb2ludCYgY2xpZW50UG9zaXRpb24sIFBhc3NSZWZQ
dHI8U2hhcmVhYmxlQml0bWFwPiBkcmFnSW1hZ2UsIERyYWdTb3VyY2VBY3Rpb24gYWN0aW9uKQor
dm9pZCBQYWdlQ2xpZW50SW1wbDo6c2V0RHJhZ0ltYWdlKGNvbnN0IEludFBvaW50JiBjbGllbnRQ
b3NpdGlvbiwgUmVmPFNoYXJlYWJsZUJpdG1hcD4mJiBkcmFnSW1hZ2UsIERyYWdTb3VyY2VBY3Rp
b24gYWN0aW9uKQogewogICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiBkcmFnQ0dJbWFnZSA9IGRy
YWdJbWFnZS0+bWFrZUNHSW1hZ2UoKTsKICAgICBSZXRhaW5QdHI8TlNJbWFnZT4gZHJhZ05TSW1h
Z2UgPSBhZG9wdE5TKFtbTlNJbWFnZSBhbGxvY10gaW5pdFdpdGhDR0ltYWdlOmRyYWdDR0ltYWdl
LmdldCgpIHNpemU6ZHJhZ0ltYWdlLT5zaXplKCldKTsKQEAgLTM1NSwxMCArMzU1LDEwIEBAIHZv
aWQgUGFnZUNsaWVudEltcGw6OnNldERyYWdJbWFnZShjb25zdCBJbnRQb2ludCYgY2xpZW50UG9z
aXRpb24sIFBhc3NSZWZQdHI8U2hhCiAgICAgbV9pbXBsLT5kcmFnSW1hZ2VGb3JWaWV3KG1fdmll
dywgZHJhZ05TSW1hZ2UuZ2V0KCksIGNsaWVudFBvc2l0aW9uLCBhY3Rpb24gPT0gRHJhZ1NvdXJj
ZUFjdGlvbkxpbmspOwogfQogCi12b2lkIFBhZ2VDbGllbnRJbXBsOjpzZXRQcm9taXNlZERhdGFG
b3JJbWFnZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBQYXNzUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gaW1hZ2VCdWZmZXIsIGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFN0cmluZyYg
ZXh0ZW5zaW9uLCBjb25zdCBTdHJpbmcmIHRpdGxlLCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3Qg
U3RyaW5nJiB2aXNpYmxlVVJMLCBQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYXJjaGl2ZUJ1ZmZl
cikKK3ZvaWQgUGFnZUNsaWVudEltcGw6OnNldFByb21pc2VkRGF0YUZvckltYWdlKGNvbnN0IFN0
cmluZyYgcGFzdGVib2FyZE5hbWUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgaW1hZ2VCdWZmZXIsIGNv
bnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFN0cmluZyYgZXh0ZW5zaW9uLCBjb25zdCBTdHJp
bmcmIHRpdGxlLCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiB2aXNpYmxlVVJMLCBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiYmIGFyY2hpdmVCdWZmZXIpCiB7CiAgICAgUmVmUHRyPEltYWdl
PiBpbWFnZSA9IEJpdG1hcEltYWdlOjpjcmVhdGUoKTsKLSAgICBpbWFnZS0+c2V0RGF0YShpbWFn
ZUJ1ZmZlci5nZXQoKSwgdHJ1ZSk7CisgICAgaW1hZ2UtPnNldERhdGEoV1RGTW92ZShpbWFnZUJ1
ZmZlciksIHRydWUpOwogICAgIG1faW1wbC0+c2V0UHJvbWlzZWREYXRhRm9ySW1hZ2UoaW1hZ2Uu
Z2V0KCksIGZpbGVuYW1lLCBleHRlbnNpb24sIHRpdGxlLCB1cmwsIHZpc2libGVVUkwsIGFyY2hp
dmVCdWZmZXIuZ2V0KCksIHBhc3RlYm9hcmROYW1lKTsKIH0KIApAQCAtNTAzLDcgKzUwMyw3IEBA
IENBTGF5ZXIgKlBhZ2VDbGllbnRJbXBsOjphY2NlbGVyYXRlZENvbXBvc2l0aW5nUm9vdExheWVy
KCkgY29uc3QKICAgICByZXR1cm4gbV9pbXBsLT5hY2NlbGVyYXRlZENvbXBvc2l0aW5nUm9vdExh
eWVyKCk7CiB9CiAKLVBhc3NSZWZQdHI8Vmlld1NuYXBzaG90PiBQYWdlQ2xpZW50SW1wbDo6dGFr
ZVZpZXdTbmFwc2hvdCgpCitSZWZQdHI8Vmlld1NuYXBzaG90PiBQYWdlQ2xpZW50SW1wbDo6dGFr
ZVZpZXdTbmFwc2hvdCgpCiB7CiAgICAgcmV0dXJuIG1faW1wbC0+dGFrZVZpZXdTbmFwc2hvdCgp
OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XS0ltbWVkaWF0
ZUFjdGlvbkNvbnRyb2xsZXIubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dLSW1t
ZWRpYXRlQWN0aW9uQ29udHJvbGxlci5tbQppbmRleCBlNGJlY2RiMmVjMTMwMDkzZTkxNTAzNzg4
ZmIwZDlkNmJkZjM5YzcxLi5iOTA3Zjk1OTUyZTEyYWRjY2UyOTIxMjgxZDYzM2E4YzhjMWQ1MmY2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dLSW1tZWRpYXRlQWN0
aW9uQ29udHJvbGxlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dLSW1t
ZWRpYXRlQWN0aW9uQ29udHJvbGxlci5tbQpAQCAtMjU0LDcgKzI1NCw3IEBAIC0gKHZvaWQpaW1t
ZWRpYXRlQWN0aW9uUmVjb2duaXplckRpZENvbXBsZXRlQW5pbWF0aW9uOihOU0ltbWVkaWF0ZUFj
dGlvbkdlc3R1cmVSCiAgICAgX3BhZ2UtPnNldFRleHRJbmRpY2F0b3JBbmltYXRpb25Qcm9ncmVz
cygxKTsKIH0KIAotLSAoUGFzc1JlZlB0cjxBUEk6OkhpdFRlc3RSZXN1bHQ+KV93ZWJIaXRUZXN0
UmVzdWx0CistIChSZWZQdHI8QVBJOjpIaXRUZXN0UmVzdWx0Pilfd2ViSGl0VGVzdFJlc3VsdAog
ewogICAgIFJlZlB0cjxBUEk6OkhpdFRlc3RSZXN1bHQ+IGhpdFRlc3RSZXN1bHQ7CiAgICAgaWYg
KF9zdGF0ZSA9PSBJbW1lZGlhdGVBY3Rpb25TdGF0ZTo6UmVhZHkpCkBAIC0yNjIsNyArMjYyLDcg
QEAgLSAoUGFzc1JlZlB0cjxBUEk6OkhpdFRlc3RSZXN1bHQ+KV93ZWJIaXRUZXN0UmVzdWx0CiAg
ICAgZWxzZQogICAgICAgICBoaXRUZXN0UmVzdWx0ID0gX3BhZ2UtPmxhc3RNb3VzZU1vdmVIaXRU
ZXN0UmVzdWx0KCk7CiAKLSAgICByZXR1cm4gV1RGTW92ZShoaXRUZXN0UmVzdWx0KTsKKyAgICBy
ZXR1cm4gaGl0VGVzdFJlc3VsdDsKIH0KIAogI3ByYWdtYSBtYXJrIEltbWVkaWF0ZSBhY3Rpb25z
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1h
Yy5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tCmlu
ZGV4IDM0MGI5ZjAwMzU1MTBjODYyOWZhZjI2MWYzNDE3Y2JkMmY0ZTJmMGUuLjE3Y2NiYTQ4YmY5
ZTc0ZDZlZjUwZDkxM2M4NGJjNGM3MTk1Yzc2YzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tCkBAIC0yNzIsNyArMjcyLDcgQEAgdm9pZCBX
ZWJQYWdlUHJveHk6OnJlcGxhY2VTZWxlY3Rpb25XaXRoUGFzdGVib2FyZERhdGEoY29uc3QgVmVj
dG9yPFN0cmluZz4mIHR5cGUKIHZvaWQgV2ViUGFnZVByb3h5OjpzZXREcmFnSW1hZ2UoY29uc3Qg
V2ViQ29yZTo6SW50UG9pbnQmIGNsaWVudFBvc2l0aW9uLCBjb25zdCBTaGFyZWFibGVCaXRtYXA6
OkhhbmRsZSYgZHJhZ0ltYWdlSGFuZGxlLCBzdGQ6Om9wdGlvbmFsPFRleHRJbmRpY2F0b3JEYXRh
PiwgY29uc3QgRmxvYXRQb2ludCYsIHVpbnQ2NF90IGFjdGlvbikKIHsKICAgICBpZiAoYXV0byBk
cmFnSW1hZ2UgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZShkcmFnSW1hZ2VIYW5kbGUpKQotICAg
ICAgICBtX3BhZ2VDbGllbnQuc2V0RHJhZ0ltYWdlKGNsaWVudFBvc2l0aW9uLCBXVEZNb3ZlKGRy
YWdJbWFnZSksIHN0YXRpY19jYXN0PERyYWdTb3VyY2VBY3Rpb24+KGFjdGlvbikpOworICAgICAg
ICBtX3BhZ2VDbGllbnQuc2V0RHJhZ0ltYWdlKGNsaWVudFBvc2l0aW9uLCBkcmFnSW1hZ2UucmVs
ZWFzZU5vbk51bGwoKSwgc3RhdGljX2Nhc3Q8RHJhZ1NvdXJjZUFjdGlvbj4oYWN0aW9uKSk7CiAK
ICAgICBkaWRTdGFydERyYWcoKTsKIH0KQEAgLTI4MywxNCArMjgzLDE0IEBAIHZvaWQgV2ViUGFn
ZVByb3h5OjpzZXRQcm9taXNlZERhdGFGb3JJbWFnZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmRO
YW1lLCBjb25zdCBTCiAgICAgTUVTU0FHRV9DSEVDS19VUkwodXJsKTsKICAgICBNRVNTQUdFX0NI
RUNLX1VSTCh2aXNpYmxlVVJMKTsKICAgICBSZWZQdHI8U2hhcmVkTWVtb3J5PiBzaGFyZWRNZW1v
cnlJbWFnZSA9IFNoYXJlZE1lbW9yeTo6bWFwKGltYWdlSGFuZGxlLCBTaGFyZWRNZW1vcnk6OlBy
b3RlY3Rpb246OlJlYWRPbmx5KTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBpbWFnZUJ1ZmZl
ciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXIqPihzaGFy
ZWRNZW1vcnlJbWFnZS0+ZGF0YSgpKSwgaW1hZ2VTaXplKTsKKyAgICBhdXRvIGltYWdlQnVmZmVy
ID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcio+KHNoYXJl
ZE1lbW9yeUltYWdlLT5kYXRhKCkpLCBpbWFnZVNpemUpOwogICAgIFJlZlB0cjxTaGFyZWRCdWZm
ZXI+IGFyY2hpdmVCdWZmZXI7CiAgICAgCiAgICAgaWYgKCFhcmNoaXZlSGFuZGxlLmlzTnVsbCgp
KSB7CiAgICAgICAgIFJlZlB0cjxTaGFyZWRNZW1vcnk+IHNoYXJlZE1lbW9yeUFyY2hpdmUgPSBT
aGFyZWRNZW1vcnk6Om1hcChhcmNoaXZlSGFuZGxlLCBTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb246
OlJlYWRPbmx5KTsKICAgICAgICAgYXJjaGl2ZUJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRl
KHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXIqPihzaGFyZWRNZW1vcnlBcmNoaXZlLT5kYXRhKCkp
LCBhcmNoaXZlU2l6ZSk7CiAgICAgfQotICAgIG1fcGFnZUNsaWVudC5zZXRQcm9taXNlZERhdGFG
b3JJbWFnZShwYXN0ZWJvYXJkTmFtZSwgaW1hZ2VCdWZmZXIsIGZpbGVuYW1lLCBleHRlbnNpb24s
IHRpdGxlLCB1cmwsIHZpc2libGVVUkwsIGFyY2hpdmVCdWZmZXIpOworICAgIG1fcGFnZUNsaWVu
dC5zZXRQcm9taXNlZERhdGFGb3JJbWFnZShwYXN0ZWJvYXJkTmFtZSwgV1RGTW92ZShpbWFnZUJ1
ZmZlciksIGZpbGVuYW1lLCBleHRlbnNpb24sIHRpdGxlLCB1cmwsIHZpc2libGVVUkwsIFdURk1v
dmUoYXJjaGl2ZUJ1ZmZlcikpOwogfQogCiAjaWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSWNvbkRhdGFiYXNlL1dlYklj
b25EYXRhYmFzZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0ljb25EYXRhYmFz
ZS9XZWJJY29uRGF0YWJhc2VQcm94eS5oCmluZGV4IGJkZjhkNGNmNjNhYmU5Y2VhM2QyYWMxOTgx
ZTkwNmViNjYxZjVhM2UuLjBhMjBkMzQ0M2MwNzNiMGU3MWE1NzQwOGQxNDViZjdiMjA5ZDJhYTEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSWNvbkRhdGFiYXNlL1dlYklj
b25EYXRhYmFzZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JY29uRGF0
YWJhc2UvV2ViSWNvbkRhdGFiYXNlUHJveHkuaApAQCAtMjksNyArMjksNiBAQAogI2luY2x1ZGUg
Ik1lc3NhZ2VSZWNlaXZlci5oIgogI2luY2x1ZGUgPFdlYkNvcmUvSWNvbkRhdGFiYXNlQmFzZS5o
PgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+Ci0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4K
ICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>309902</attachid>
            <date>2017-05-12 09:36:49 -0700</date>
            <delta_ts>2017-05-12 09:41:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-172029-20170512093648.patch</filename>
            <type>text/plain</type>
            <size>75455</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE2NzY0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggM2QzYmE4ODcyYWI0YjNi
OWJkMWI1NGY5NjViYmE1MTEwMTM4NjNiNS4uMGI0YjhiYzFiM2NjYWIwMGEwNzQxMTQ1ZjAxYTA1
MzdiZmI0MjIxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDEwNSBAQAogMjAxNy0wNS0xMiAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCisgICAgICAgIFN0b3AgdXNpbmcgUGFzc1Jl
ZlB0ciB1bmRlciBXZWJLaXQyL1VJUHJvY2VzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTcyMDI5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbToK
KyAgICAgICAgKC1bV0tXZWJWaWV3IF90YWtlVmlld1NuYXBzaG90XSk6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdJbnRlcm5hbC5oOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvZ3RrL1BhZ2VDbGllbnRJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVu
dEltcGw6OnJlZ2lzdGVyRWRpdENvbW1hbmQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3Rr
L1BhZ2VDbGllbnRJbXBsLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0RmF2
aWNvbkRhdGFiYXNlLmNwcDoKKyAgICAgICAgKGdldEljb25TdXJmYWNlU3luY2hyb25vdXNseSk6
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViQ29udGV4dC5jcHA6CisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS93cGUvUGFnZUNsaWVudEltcGwuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpQYWdlQ2xpZW50SW1wbDo6cmVnaXN0ZXJFZGl0Q29tbWFuZCk6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS93cGUvUGFnZUNsaWVudEltcGwuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29j
b2EvV2ViVmlld0ltcGwuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwu
bW06CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpyZWdpc3RlckVkaXRDb21tYW5kKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvRGVmYXVsdFVuZG9Db250cm9sbGVyLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6RGVmYXVsdFVuZG9Db250cm9sbGVyOjpyZWdpc3RlckVkaXRDb21tYW5kKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvRGVmYXVsdFVuZG9Db250cm9sbGVyLmg6CisgICAgICAgICogVUlQ
cm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6RG93
bmxvYWRQcm94eTo6Y3JlYXRlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25s
b2FkUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVx
dWVzdE1hbmFnZXJQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6Okdlb2xvY2F0aW9uUGVybWlz
c2lvblJlcXVlc3RNYW5hZ2VyUHJveHk6OmNyZWF0ZVJlcXVlc3QpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9HZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5Lmg6CisgICAgICAg
ICogVUlQcm9jZXNzL0luc3BlY3RvclNlcnZlci9IVFRQUmVxdWVzdC5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OkhUVFBSZXF1ZXN0OjpwYXJzZUhUVFBSZXF1ZXN0RnJvbUJ1ZmZlcik6CisgICAgICAg
ICogVUlQcm9jZXNzL0luc3BlY3RvclNlcnZlci9IVFRQUmVxdWVzdC5oOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9JbnNwZWN0b3JTZXJ2ZXIvV2ViSW5zcGVjdG9yU2VydmVyLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViSW5zcGVjdG9yU2VydmVyOjpkaWRSZWNlaXZlVW5yZWNvZ25pemVkSFRUUFJl
cXVlc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JTZXJ2ZXI6OmRpZFJlY2VpdmVX
ZWJTb2NrZXRVcGdyYWRlSFRUUFJlcXVlc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0
b3JTZXJ2ZXI6OmRpZEVzdGFibGlzaFdlYlNvY2tldENvbm5lY3Rpb24pOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9JbnNwZWN0b3JTZXJ2ZXIvV2ViSW5zcGVjdG9yU2VydmVyLmg6CisgICAgICAgICog
VUlQcm9jZXNzL0luc3BlY3RvclNlcnZlci9XZWJTb2NrZXRTZXJ2ZXJDbGllbnQuaDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViU29ja2V0U2VydmVyQ2xpZW50OjpkaWRSZWNlaXZlVW5yZWNvZ25pemVk
SFRUUFJlcXVlc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJTb2NrZXRTZXJ2ZXJDbGllbnQ6OmRp
ZFJlY2VpdmVXZWJTb2NrZXRVcGdyYWRlSFRUUFJlcXVlc3QpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJTb2NrZXRTZXJ2ZXJDbGllbnQ6OmRpZEVzdGFibGlzaFdlYlNvY2tldENvbm5lY3Rpb24pOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9JbnNwZWN0b3JTZXJ2ZXIvV2ViU29ja2V0U2VydmVyQ29ubmVj
dGlvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlNvY2tldFNlcnZlckNvbm5lY3Rpb246OnJl
YWRIVFRQTWVzc2FnZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlNvY2tldFNlcnZlckNvbm5lY3Rp
b246OnVwZ3JhZGVUb1dlYlNvY2tldFNlcnZlckNvbm5lY3Rpb24pOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9JbnNwZWN0b3JTZXJ2ZXIvV2ViU29ja2V0U2VydmVyQ29ubmVjdGlvbi5oOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL05vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0
TWFuYWdlclByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6Tm90aWZpY2F0aW9uUGVybWlzc2lv
blJlcXVlc3RNYW5hZ2VyUHJveHk6OmNyZWF0ZVJlcXVlc3QpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9Ob3RpZmljYXRpb25zL05vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5
Lmg6CisgICAgICAgICogVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uUHJv
dmlkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJOb3RpZmljYXRpb25Qcm92aWRlcjo6bm90
aWZpY2F0aW9uUGVybWlzc2lvbnMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Ob3RpZmljYXRpb25z
L1dlYk5vdGlmaWNhdGlvblByb3ZpZGVyLmg6CisgICAgICAgICogVUlQcm9jZXNzL1BhZ2VDbGll
bnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvU3RvcmFnZS9Mb2NhbFN0b3JhZ2VEYXRhYmFzZS5j
cHA6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkNvbnRleHRNZW51TGlzdGVuZXJQcm94eS5oOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9XZWJDb29raWVNYW5hZ2VyUHJveHkuaDoKKyAgICAgICAgKiBV
SVByb2Nlc3MvV2ViRWRpdENvbW1hbmRQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkVk
aXRDb21tYW5kUHJveHk6OnVuYXBwbHkpOgorICAgICAgICAoV2ViS2l0OjpXZWJFZGl0Q29tbWFu
ZFByb3h5OjpyZWFwcGx5KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViRWRpdENvbW1hbmRQcm94
eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJHcmFtbWFyRGV0YWlsLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViR3JhbW1hckRldGFpbDo6Y3JlYXRlKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
V2ViR3JhbW1hckRldGFpbC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpFeGNlZWRlZERhdGFiYXNlUXVvdGFSZWNvcmRzOjpjcmVhdGVS
ZWNvcmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJlZ2lzdGVyRWRpdENvbW1h
bmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRpZFJlY2VpdmVBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZVByb3h5KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpleGNl
ZWRlZERhdGFiYXNlUXVvdGEpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJlYWNo
ZWRBcHBsaWNhdGlvbkNhY2hlT3JpZ2luUXVvdGEpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
UHJveHk6OnRha2VWaWV3U25hcHNob3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6cGx1Z0luQXV0b1N0YXJ0T3JpZ2luSGFzaGVzKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
V2ViUHJvY2Vzc1Byb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1w
bElPUy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MubW06Cisg
ICAgICAgICgtW1dLRWRpdENvbW1hbmRPYmpDIGluaXRXaXRoV2ViRWRpdENvbW1hbmRQcm94eTpd
KToKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6OnJlZ2lzdGVyRWRpdENvbW1hbmQp
OgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6c2F2ZUltYWdlVG9MaWJyYXJ5KToK
KyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6OnNldERyYWdJbWFnZSk6CisgICAgICAg
IChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjp0YWtlVmlld1NuYXBzaG90KToKKyAgICAgICAgKiBV
SVByb2Nlc3MvaW9zL1dLR2VvbG9jYXRpb25Qcm92aWRlcklPUy5tbToKKyAgICAgICAgKC1bV0tX
ZWJBbGxvd0RlbnlQb2xpY3lMaXN0ZW5lciBpbml0V2l0aFBlcm1pc3Npb25SZXF1ZXN0UHJveHk6
XSk6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW06CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2F2ZUltYWdlVG9MaWJyYXJ5KToKKyAgICAgICAgKiBV
SVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsLmg6CisgICAgICAgICogVUlQcm9jZXNzL21hYy9Q
YWdlQ2xpZW50SW1wbC5tbToKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6OnJlZ2lz
dGVyRWRpdENvbW1hbmQpOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6c2V0RHJh
Z0ltYWdlKToKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6OnNldFByb21pc2VkRGF0
YUZvckltYWdlKToKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6OnRha2VWaWV3U25h
cHNob3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvV0tJbW1lZGlhdGVBY3Rpb25Db250cm9s
bGVyLm1tOgorICAgICAgICAoLVtXS0ltbWVkaWF0ZUFjdGlvbkNvbnRyb2xsZXIgX3dlYkhpdFRl
c3RSZXN1bHRdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbToK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzZXREcmFnSW1hZ2UpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlUHJveHk6OnNldFByb21pc2VkRGF0YUZvckltYWdlKToKKyAgICAgICAg
KiBXZWJQcm9jZXNzL0ljb25EYXRhYmFzZS9XZWJJY29uRGF0YWJhc2VQcm94eS5oOgorCisyMDE3
LTA1LTEyICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKICAgICAgICAgU3RvcCB1
c2luZyBQYXNzUmVmUHRyIHVuZGVyIFdlYktpdDIvU2hhcmVkCiAgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzIwMTcKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0LmNwcAppbmRleCAxZDIyNTkzODYyZjA1ZmYzOTBkY2M5
NjhhMWQwMjY1NmZiYjFmZDg5Li5lNGYwNGQ0MDNjMTFkMWUyNTIyMTY3MjZjZDg1MTUzNGJlZmVl
ZTA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0LmNwcApA
QCAtNTM5LDcgKzUzOSw3IEBAIHZvaWQgV0tDb250ZXh0Q2xlYXJDYWNoZWRDcmVkZW50aWFscyhX
S0NvbnRleHRSZWYgY29udGV4dCkKIAogV0tEaWN0aW9uYXJ5UmVmIFdLQ29udGV4dENvcHlQbHVn
SW5BdXRvU3RhcnRPcmlnaW5IYXNoZXMoV0tDb250ZXh0UmVmIGNvbnRleHRSZWYpCiB7Ci0gICAg
cmV0dXJuIHRvQVBJKHRvSW1wbChjb250ZXh0UmVmKS0+cGx1Z0luQXV0b1N0YXJ0T3JpZ2luSGFz
aGVzKCkubGVha1JlZigpKTsKKyAgICByZXR1cm4gdG9BUEkoJnRvSW1wbChjb250ZXh0UmVmKS0+
cGx1Z0luQXV0b1N0YXJ0T3JpZ2luSGFzaGVzKCkubGVha1JlZigpKTsKIH0KIAogdm9pZCBXS0Nv
bnRleHRTZXRQbHVnSW5BdXRvU3RhcnRPcmlnaW5IYXNoZXMoV0tDb250ZXh0UmVmIGNvbnRleHRS
ZWYsIFdLRGljdGlvbmFyeVJlZiBkaWN0aW9uYXJ5UmVmKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbQppbmRleCAwYTQwMzVjMGE2MGU0Y2IyMjhj
YWE3OWU1N2FiMDgxMTU0NjA4NzJjLi5lNTI4OTQ5ZDg1NTM0NWZkMzM0ZjYyNjFmYjM2MjdjYzI2
NjExN2ZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dL
V2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2Vi
Vmlldy5tbQpAQCAtMTYzMCw3ICsxNjMwLDcgQEAgLSAodm9pZClfcmVzdG9yZVBhZ2VTdGF0ZVRv
VW5vYnNjdXJlZENlbnRlcjooc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpGbG9hdFBvaW50PikKICAg
ICBfc2NhbGVUb1Jlc3RvcmUgPSBzY2FsZTsKIH0KIAotLSAoUGFzc1JlZlB0cjxXZWJLaXQ6OlZp
ZXdTbmFwc2hvdD4pX3Rha2VWaWV3U25hcHNob3QKKy0gKFJlZlB0cjxXZWJLaXQ6OlZpZXdTbmFw
c2hvdD4pX3Rha2VWaWV3U25hcHNob3QKIHsKICAgICBmbG9hdCBkZXZpY2VTY2FsZSA9IFdlYkNv
cmU6OnNjcmVlblNjYWxlRmFjdG9yKCk7CiAgICAgV2ViQ29yZTo6RmxvYXRTaXplIHNuYXBzaG90
U2l6ZShzZWxmLmJvdW5kcy5zaXplKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3SW50ZXJuYWwuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3SW50ZXJuYWwuaAppbmRleCAzZDYwNjZlNTEzNTUyMGZh
MjRiZjBkZTUyNjllZTU0OTM5M2JiN2Q2Li41MjkzODA3MzNhYjFlNjcwMmFkNmVhNDhhZGE2OThk
Njg2NTRiZmVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29h
L1dLV2ViVmlld0ludGVybmFsLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9D
b2NvYS9XS1dlYlZpZXdJbnRlcm5hbC5oCkBAIC04NSw3ICs4NSw3IEBAIHN0cnVjdCBQcmludElu
Zm87CiAtICh2b2lkKV9yZXN0b3JlUGFnZVNjcm9sbFBvc2l0aW9uOihzdGQ6Om9wdGlvbmFsPFdl
YkNvcmU6OkZsb2F0UG9pbnQ+KXNjcm9sbFBvc2l0aW9uIHNjcm9sbE9yaWdpbjooV2ViQ29yZTo6
RmxvYXRQb2ludClzY3JvbGxPcmlnaW4gcHJldmlvdXNPYnNjdXJlZEluc2V0OihXZWJDb3JlOjpG
bG9hdEJveEV4dGVudClpbnNldHMgc2NhbGU6KGRvdWJsZSlzY2FsZTsKIC0gKHZvaWQpX3Jlc3Rv
cmVQYWdlU3RhdGVUb1Vub2JzY3VyZWRDZW50ZXI6KHN0ZDo6b3B0aW9uYWw8V2ViQ29yZTo6Rmxv
YXRQb2ludD4pY2VudGVyIHNjYWxlOihkb3VibGUpc2NhbGU7IC8vIEZJWE1FOiBuZWVkcyBzY3Jv
bGwgb3JpZ2luPwogCi0tIChQYXNzUmVmUHRyPFdlYktpdDo6Vmlld1NuYXBzaG90PilfdGFrZVZp
ZXdTbmFwc2hvdDsKKy0gKFJlZlB0cjxXZWJLaXQ6OlZpZXdTbmFwc2hvdD4pX3Rha2VWaWV3U25h
cHNob3Q7CiAKIC0gKHZvaWQpX3Njcm9sbFRvQ29udGVudFNjcm9sbFBvc2l0aW9uOihXZWJDb3Jl
OjpGbG9hdFBvaW50KXNjcm9sbFBvc2l0aW9uIHNjcm9sbE9yaWdpbjooV2ViQ29yZTo6SW50UG9p
bnQpc2Nyb2xsT3JpZ2luOwogLSAoQk9PTClfc2Nyb2xsVG9SZWN0OihXZWJDb3JlOjpGbG9hdFJl
Y3QpdGFyZ2V0UmVjdCBvcmlnaW46KFdlYkNvcmU6OkZsb2F0UG9pbnQpb3JpZ2luIG1pbmltdW1T
Y3JvbGxEaXN0YW5jZTooZmxvYXQpbWluaW11bVNjcm9sbERpc3RhbmNlOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvUGFnZUNsaWVudEltcGwuY3BwIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvUGFnZUNsaWVudEltcGwuY3BwCmluZGV4IGZi
N2M4NWU3NTUwNWQ1NzY3Njk4NWNjMWEyZmY3MmQzYWJlZDI5OTkuLjk4ZTA2NzNhYTUxZGRhMjlj
MTczY2I5N2FiMTVlMzhlYWU3Mzk3MWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9BUEkvZ3RrL1BhZ2VDbGllbnRJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2d0ay9QYWdlQ2xpZW50SW1wbC5jcHAKQEAgLTE0Nyw5ICsxNDcsOSBAQCB2b2lk
IFBhZ2VDbGllbnRJbXBsOjpkaWRDaGFuZ2VWaWV3cG9ydFByb3BlcnRpZXMoY29uc3QgV2ViQ29y
ZTo6Vmlld3BvcnRBdHRyaWJ1dAogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKLXZvaWQgUGFn
ZUNsaWVudEltcGw6OnJlZ2lzdGVyRWRpdENvbW1hbmQoUGFzc1JlZlB0cjxXZWJFZGl0Q29tbWFu
ZFByb3h5PiBjb21tYW5kLCBXZWJQYWdlUHJveHk6OlVuZG9PclJlZG8gdW5kb09yUmVkbykKK3Zv
aWQgUGFnZUNsaWVudEltcGw6OnJlZ2lzdGVyRWRpdENvbW1hbmQoUmVmPFdlYkVkaXRDb21tYW5k
UHJveHk+JiYgY29tbWFuZCwgV2ViUGFnZVByb3h5OjpVbmRvT3JSZWRvIHVuZG9PclJlZG8pCiB7
Ci0gICAgbV91bmRvQ29udHJvbGxlci5yZWdpc3RlckVkaXRDb21tYW5kKGNvbW1hbmQsIHVuZG9P
clJlZG8pOworICAgIG1fdW5kb0NvbnRyb2xsZXIucmVnaXN0ZXJFZGl0Q29tbWFuZChXVEZNb3Zl
KGNvbW1hbmQpLCB1bmRvT3JSZWRvKTsKIH0KIAogdm9pZCBQYWdlQ2xpZW50SW1wbDo6Y2xlYXJB
bGxFZGl0Q29tbWFuZHMoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQ
SS9ndGsvUGFnZUNsaWVudEltcGwuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3Rr
L1BhZ2VDbGllbnRJbXBsLmgKaW5kZXggMWM2MThlMWUzMTBhYTBhODE4ZDRlMTcwM2M1NDc3NTkw
OTlhOTU4ZS4uYTAxYmYwN2IyZDA0MjQ4OWRmNzBmNTRjM2E0ZjRiNDRlMTMwZGVjYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvUGFnZUNsaWVudEltcGwuaAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xpZW50SW1wbC5oCkBA
IC03MSw3ICs3MSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXRDdXJzb3IoY29uc3QgV2ViQ29y
ZTo6Q3Vyc29yJikgb3ZlcnJpZGU7CiAgICAgdm9pZCBzZXRDdXJzb3JIaWRkZW5VbnRpbE1vdXNl
TW92ZXMoYm9vbCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRDaGFuZ2VWaWV3cG9ydFByb3BlcnRp
ZXMoY29uc3QgV2ViQ29yZTo6Vmlld3BvcnRBdHRyaWJ1dGVzJikgb3ZlcnJpZGU7Ci0gICAgdm9p
ZCByZWdpc3RlckVkaXRDb21tYW5kKFBhc3NSZWZQdHI8V2ViRWRpdENvbW1hbmRQcm94eT4sIFdl
YlBhZ2VQcm94eTo6VW5kb09yUmVkbykgb3ZlcnJpZGU7CisgICAgdm9pZCByZWdpc3RlckVkaXRD
b21tYW5kKFJlZjxXZWJFZGl0Q29tbWFuZFByb3h5PiYmLCBXZWJQYWdlUHJveHk6OlVuZG9PclJl
ZG8pIG92ZXJyaWRlOwogICAgIHZvaWQgY2xlYXJBbGxFZGl0Q29tbWFuZHMoKSBvdmVycmlkZTsK
ICAgICBib29sIGNhblVuZG9SZWRvKFdlYlBhZ2VQcm94eTo6VW5kb09yUmVkbykgb3ZlcnJpZGU7
CiAgICAgdm9pZCBleGVjdXRlVW5kb1JlZG8oV2ViUGFnZVByb3h5OjpVbmRvT3JSZWRvKSBvdmVy
cmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktp
dEZhdmljb25EYXRhYmFzZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9X
ZWJLaXRGYXZpY29uRGF0YWJhc2UuY3BwCmluZGV4IDc0NjU0YmI0Zjg4OGU0ODYzOGZmM2U1MzZk
NTA1OTZlZjAyOTIwMmMuLmYzODgyMDk4YzNkYTliMzUwNzc5Mzk4MTIwZDBlMjI3MzRkODk0Mzgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEZhdmlj
b25EYXRhYmFzZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2Vi
S2l0RmF2aWNvbkRhdGFiYXNlLmNwcApAQCAtMTMxLDcgKzEzMSw3IEBAIHN0cnVjdCBHZXRGYXZp
Y29uU3VyZmFjZUFzeW5jRGF0YSB7CiB9OwogV0VCS0lUX0RFRklORV9BU1lOQ19EQVRBX1NUUlVD
VChHZXRGYXZpY29uU3VyZmFjZUFzeW5jRGF0YSkKIAotc3RhdGljIFBhc3NSZWZQdHI8Y2Fpcm9f
c3VyZmFjZV90PiBnZXRJY29uU3VyZmFjZVN5bmNocm9ub3VzbHkoV2ViS2l0RmF2aWNvbkRhdGFi
YXNlKiBkYXRhYmFzZSwgY29uc3QgU3RyaW5nJiBwYWdlVVJMLCBHRXJyb3IqKiBlcnJvcikKK3N0
YXRpYyBSZWZQdHI8Y2Fpcm9fc3VyZmFjZV90PiBnZXRJY29uU3VyZmFjZVN5bmNocm9ub3VzbHko
V2ViS2l0RmF2aWNvbkRhdGFiYXNlKiBkYXRhYmFzZSwgY29uc3QgU3RyaW5nJiBwYWdlVVJMLCBH
RXJyb3IqKiBlcnJvcikKIHsKICAgICBBU1NFUlQoUnVuTG9vcDo6aXNNYWluKCkpOwogCkBAIC0x
NDAsMTYgKzE0MCwxNiBAQCBzdGF0aWMgUGFzc1JlZlB0cjxjYWlyb19zdXJmYWNlX3Q+IGdldElj
b25TdXJmYWNlU3luY2hyb25vdXNseShXZWJLaXRGYXZpY29uRGF0YQogICAgIFdlYkNvcmU6Oklt
YWdlKiBpY29uSW1hZ2UgPSBkYXRhYmFzZS0+cHJpdi0+aWNvbkRhdGFiYXNlLT5pbWFnZUZvclBh
Z2VVUkwocGFnZVVSTCwgV2ViQ29yZTo6SW50U2l6ZSgxLCAxKSk7CiAgICAgaWYgKCFpY29uSW1h
Z2UpIHsKICAgICAgICAgZ19zZXRfZXJyb3IoZXJyb3IsIFdFQktJVF9GQVZJQ09OX0RBVEFCQVNF
X0VSUk9SLCBXRUJLSVRfRkFWSUNPTl9EQVRBQkFTRV9FUlJPUl9GQVZJQ09OX1VOS05PV04sIF8o
IlVua25vd24gZmF2aWNvbiBmb3IgcGFnZSAlcyIpLCBwYWdlVVJMLnV0ZjgoKS5kYXRhKCkpOwot
ICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCiAgICAg
UmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4gc3VyZmFjZSA9IGljb25JbWFnZS0+bmF0aXZlSW1hZ2VG
b3JDdXJyZW50RnJhbWUoKTsKICAgICBpZiAoIXN1cmZhY2UpIHsKICAgICAgICAgZ19zZXRfZXJy
b3IoZXJyb3IsIFdFQktJVF9GQVZJQ09OX0RBVEFCQVNFX0VSUk9SLCBXRUJLSVRfRkFWSUNPTl9E
QVRBQkFTRV9FUlJPUl9GQVZJQ09OX05PVF9GT1VORCwgXygiUGFnZSAlcyBkb2VzIG5vdCBoYXZl
IGEgZmF2aWNvbiIpLCBwYWdlVVJMLnV0ZjgoKS5kYXRhKCkpOwotICAgICAgICByZXR1cm4gMDsK
KyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCi0gICAgcmV0dXJuIHN1cmZhY2UucmVs
ZWFzZSgpOworICAgIHJldHVybiBzdXJmYWNlOwogfQogCiBzdGF0aWMgdm9pZCBkZWxldGVQZW5k
aW5nSWNvblJlcXVlc3RzKFdlYktpdEZhdmljb25EYXRhYmFzZSogZGF0YWJhc2UsIFBlbmRpbmdJ
Y29uUmVxdWVzdFZlY3RvciogcmVxdWVzdHMsIGNvbnN0IFN0cmluZyYgcGFnZVVSTCkKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYkNvbnRleHQu
Y3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViQ29udGV4dC5j
cHAKaW5kZXggOTYyOTMxNGQxNTE1NjM5Y2Y5YmVkZTBjNzRkNmEwYjNmNGFjNjBiZS4uZDE3ZDI3
Njc2MjdhZWQyMzU3NmRkMmZmOGU2OTNmYTJjOTc4Mzg4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViQ29udGV4dC5jcHAKKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViQ29udGV4dC5jcHAKQEAgLTYzLDgg
KzYzLDggQEAKICNpbmNsdWRlIDxtZW1vcnk+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNp
bmNsdWRlIDx3dGYvTmV2ZXJEZXN0cm95ZWQuaD4KLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5o
PgogI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgog
I2luY2x1ZGUgPHd0Zi9nbGliL0dSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvZ2xpYi9HVW5pcXVl
UHRyLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS93cGUvUGFnZUNsaWVudEltcGwuY3BwIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS93cGUvUGFnZUNsaWVudEltcGwuY3BwCmluZGV4IGQxNjUzMDk1
ZmI1ODQ5Y2U4MGY2NzhkMzczMjIyODZmMzU4ODJhY2QuLjMxNjM5NDliMmFkYTc5NjBlNTAzZGJk
YWM5YmQ1MTUzMTk0YWU3ZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvd3BlL1BhZ2VDbGllbnRJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL3dwZS9QYWdlQ2xpZW50SW1wbC5jcHAKQEAgLTEzMiw3ICsxMzIsNyBAQCB2b2lkIFBhZ2VD
bGllbnRJbXBsOjpkaWRDaGFuZ2VWaWV3cG9ydFByb3BlcnRpZXMoY29uc3QgV2ViQ29yZTo6Vmll
d3BvcnRBdHRyaWJ1dAogewogfQogCi12b2lkIFBhZ2VDbGllbnRJbXBsOjpyZWdpc3RlckVkaXRD
b21tYW5kKFBhc3NSZWZQdHI8V2ViRWRpdENvbW1hbmRQcm94eT4sIFdlYlBhZ2VQcm94eTo6VW5k
b09yUmVkbykKK3ZvaWQgUGFnZUNsaWVudEltcGw6OnJlZ2lzdGVyRWRpdENvbW1hbmQoUmVmPFdl
YkVkaXRDb21tYW5kUHJveHk+JiYsIFdlYlBhZ2VQcm94eTo6VW5kb09yUmVkbykKIHsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS93cGUvUGFnZUNsaWVudElt
cGwuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvd3BlL1BhZ2VDbGllbnRJbXBsLmgK
aW5kZXggZTc5YWNlMTA2ZjYxZDE5ZWFlMGM5OWVhYjBhZDI2NTExOWFlZTFlMS4uZDE0NTZiZWY5
ZmM0NDc3MzJhNGFjZGRmNjQyYzM5ZmZiODUzZmNiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0FQSS93cGUvUGFnZUNsaWVudEltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL3dwZS9QYWdlQ2xpZW50SW1wbC5oCkBAIC02Nyw3ICs2Nyw3IEBAIHBy
aXZhdGU6CiAgICAgdm9pZCBzZXRDdXJzb3JIaWRkZW5VbnRpbE1vdXNlTW92ZXMoYm9vbCkgb3Zl
cnJpZGU7CiAgICAgdm9pZCBkaWRDaGFuZ2VWaWV3cG9ydFByb3BlcnRpZXMoY29uc3QgV2ViQ29y
ZTo6Vmlld3BvcnRBdHRyaWJ1dGVzJikgb3ZlcnJpZGU7CiAKLSAgICB2b2lkIHJlZ2lzdGVyRWRp
dENvbW1hbmQoUGFzc1JlZlB0cjxXZWJFZGl0Q29tbWFuZFByb3h5PiwgV2ViUGFnZVByb3h5OjpV
bmRvT3JSZWRvKSBvdmVycmlkZTsKKyAgICB2b2lkIHJlZ2lzdGVyRWRpdENvbW1hbmQoUmVmPFdl
YkVkaXRDb21tYW5kUHJveHk+JiYsIFdlYlBhZ2VQcm94eTo6VW5kb09yUmVkbykgb3ZlcnJpZGU7
CiAgICAgdm9pZCBjbGVhckFsbEVkaXRDb21tYW5kcygpIG92ZXJyaWRlOwogICAgIGJvb2wgY2Fu
VW5kb1JlZG8oV2ViUGFnZVByb3h5OjpVbmRvT3JSZWRvKSBvdmVycmlkZTsKICAgICB2b2lkIGV4
ZWN1dGVVbmRvUmVkbyhXZWJQYWdlUHJveHk6OlVuZG9PclJlZG8pIG92ZXJyaWRlOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLmggYi9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwuaAppbmRleCA2YTgzOGUxY2Ey
MGFlOTRkMjA1ODgzOGE4NzQ3ZDQ1ZWUxNWVhYTc2Li43MjJjMzFlYTI4MmU2ZDlkMTRiOGJlMDI5
OGVjMWY4ZGIyY2JjZjRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29j
b2EvV2ViVmlld0ltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2Vi
Vmlld0ltcGwuaApAQCAtMjgwLDcgKzI4MCw3IEBAIHB1YmxpYzoKICAgICBib29sIGlzRWRpdGFi
bGUoKSBjb25zdDsKICAgICBib29sIGV4ZWN1dGVTYXZlZENvbW1hbmRCeVNlbGVjdG9yKFNFTCk7
CiAgICAgdm9pZCBleGVjdXRlRWRpdENvbW1hbmRGb3JTZWxlY3RvcihTRUwsIGNvbnN0IFN0cmlu
ZyYgYXJndW1lbnQgPSBTdHJpbmcoKSk7Ci0gICAgdm9pZCByZWdpc3RlckVkaXRDb21tYW5kKFJl
ZlB0cjxXZWJFZGl0Q29tbWFuZFByb3h5PiwgV2ViUGFnZVByb3h5OjpVbmRvT3JSZWRvKTsKKyAg
ICB2b2lkIHJlZ2lzdGVyRWRpdENvbW1hbmQoUmVmPFdlYkVkaXRDb21tYW5kUHJveHk+JiYsIFdl
YlBhZ2VQcm94eTo6VW5kb09yUmVkbyk7CiAgICAgdm9pZCBjbGVhckFsbEVkaXRDb21tYW5kcygp
OwogICAgIGJvb2wgd3JpdGVTZWxlY3Rpb25Ub1Bhc3RlYm9hcmQoTlNQYXN0ZWJvYXJkICosIE5T
QXJyYXkgKnR5cGVzKTsKICAgICBib29sIHJlYWRTZWxlY3Rpb25Gcm9tUGFzdGVib2FyZChOU1Bh
c3RlYm9hcmQgKik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2Ev
V2ViVmlld0ltcGwubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0lt
cGwubW0KaW5kZXggMjhlYTdhZTliMWMwZmEzYTAzMzkzMzE0YjMzYzE1MjVmMjE0NGFkMy4uYzIy
NTE2NDhmMjcxNzc5ZDgxZWUwNzdlZjg3ODYwNzc5NDllYmZmMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5tbQpAQCAtMjUzMSwxMSArMjUzMSw5IEBA
IHZvaWQgV2ViVmlld0ltcGw6OmV4ZWN1dGVFZGl0Q29tbWFuZEZvclNlbGVjdG9yKFNFTCBzZWxl
Y3RvciwgY29uc3QgU3RyaW5nJiBhcmd1CiAgICAgbV9wYWdlLT5leGVjdXRlRWRpdENvbW1hbmQo
Y29tbWFuZE5hbWVGb3JTZWxlY3RvcihzZWxlY3RvciksIGFyZ3VtZW50KTsKIH0KIAotdm9pZCBX
ZWJWaWV3SW1wbDo6cmVnaXN0ZXJFZGl0Q29tbWFuZChSZWZQdHI8V2ViRWRpdENvbW1hbmRQcm94
eT4gcHJwQ29tbWFuZCwgV2ViUGFnZVByb3h5OjpVbmRvT3JSZWRvIHVuZG9PclJlZG8pCit2b2lk
IFdlYlZpZXdJbXBsOjpyZWdpc3RlckVkaXRDb21tYW5kKFJlZjxXZWJFZGl0Q29tbWFuZFByb3h5
PiYmIGNvbW1hbmQsIFdlYlBhZ2VQcm94eTo6VW5kb09yUmVkbyB1bmRvT3JSZWRvKQogewotICAg
IFJlZlB0cjxXZWJFZGl0Q29tbWFuZFByb3h5PiBjb21tYW5kID0gcHJwQ29tbWFuZDsKLQotICAg
IFJldGFpblB0cjxXS0VkaXRDb21tYW5kT2JqQz4gY29tbWFuZE9iakMgPSBhZG9wdE5TKFtbV0tF
ZGl0Q29tbWFuZE9iakMgYWxsb2NdIGluaXRXaXRoV2ViRWRpdENvbW1hbmRQcm94eTpjb21tYW5k
XSk7CisgICAgUmV0YWluUHRyPFdLRWRpdENvbW1hbmRPYmpDPiBjb21tYW5kT2JqQyA9IGFkb3B0
TlMoW1tXS0VkaXRDb21tYW5kT2JqQyBhbGxvY10gaW5pdFdpdGhXZWJFZGl0Q29tbWFuZFByb3h5
OmNvbW1hbmQucHRyKCldKTsKICAgICBTdHJpbmcgYWN0aW9uTmFtZSA9IFdlYkVkaXRDb21tYW5k
UHJveHk6Om5hbWVGb3JFZGl0QWN0aW9uKGNvbW1hbmQtPmVkaXRBY3Rpb24oKSk7CiAKICAgICBO
U1VuZG9NYW5hZ2VyICp1bmRvTWFuYWdlciA9IFttX3ZpZXcgdW5kb01hbmFnZXJdOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0RlZmF1bHRVbmRvQ29udHJvbGxlci5jcHAg
Yi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvRGVmYXVsdFVuZG9Db250cm9sbGVyLmNwcAppbmRl
eCBhMmRmNzZjZDg0OTUxZjQxOTUxNDlmMzI1ODQ0MTc0MjJjNjEzMjNhLi45NDI2YjFlOGFiYzI0
MDUwZjg5ODYyZTYyOTEzMmQ4MGVlZGI0NjFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvRGVmYXVsdFVuZG9Db250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvRGVmYXVsdFVuZG9Db250cm9sbGVyLmNwcApAQCAtMjcsMTIgKzI3LDEyIEBACiAK
IG5hbWVzcGFjZSBXZWJLaXQgewogCi12b2lkIERlZmF1bHRVbmRvQ29udHJvbGxlcjo6cmVnaXN0
ZXJFZGl0Q29tbWFuZChQYXNzUmVmUHRyPFdlYkVkaXRDb21tYW5kUHJveHk+IGNvbW1hbmQsIFdl
YlBhZ2VQcm94eTo6VW5kb09yUmVkbyB1bmRvT3JSZWRvKQordm9pZCBEZWZhdWx0VW5kb0NvbnRy
b2xsZXI6OnJlZ2lzdGVyRWRpdENvbW1hbmQoUmVmPFdlYkVkaXRDb21tYW5kUHJveHk+JiYgY29t
bWFuZCwgV2ViUGFnZVByb3h5OjpVbmRvT3JSZWRvIHVuZG9PclJlZG8pCiB7CiAgICAgaWYgKHVu
ZG9PclJlZG8gPT0gV2ViUGFnZVByb3h5OjpVbmRvKQotICAgICAgICBtX3VuZG9TdGFjay5hcHBl
bmQoY29tbWFuZCk7CisgICAgICAgIG1fdW5kb1N0YWNrLmFwcGVuZChXVEZNb3ZlKGNvbW1hbmQp
KTsKICAgICBlbHNlCi0gICAgICAgIG1fcmVkb1N0YWNrLmFwcGVuZChjb21tYW5kKTsKKyAgICAg
ICAgbV9yZWRvU3RhY2suYXBwZW5kKFdURk1vdmUoY29tbWFuZCkpOwogfQogCiB2b2lkIERlZmF1
bHRVbmRvQ29udHJvbGxlcjo6Y2xlYXJBbGxFZGl0Q29tbWFuZHMoKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL0RlZmF1bHRVbmRvQ29udHJvbGxlci5oIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0RlZmF1bHRVbmRvQ29udHJvbGxlci5oCmluZGV4IDMxNjE3YTBlYzk4
OTZjZTRmODgzZjZlNGU1YzQzNDRlMGRkOWI2NDEuLjgwMDJkYzk0Y2IyNWY0ZjUxYzIyN2YyYzVi
NzMyNGU4OWE5MzE2NDggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9EZWZh
dWx0VW5kb0NvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvRGVmYXVs
dFVuZG9Db250cm9sbGVyLmgKQEAgLTI5LDcgKzI5LDcgQEAgbmFtZXNwYWNlIFdlYktpdCB7CiAK
IGNsYXNzIERlZmF1bHRVbmRvQ29udHJvbGxlciB7CiBwdWJsaWM6Ci0gICAgdm9pZCByZWdpc3Rl
ckVkaXRDb21tYW5kKFBhc3NSZWZQdHI8V2ViRWRpdENvbW1hbmRQcm94eT4sIFdlYlBhZ2VQcm94
eTo6VW5kb09yUmVkbyk7CisgICAgdm9pZCByZWdpc3RlckVkaXRDb21tYW5kKFJlZjxXZWJFZGl0
Q29tbWFuZFByb3h5PiYmLCBXZWJQYWdlUHJveHk6OlVuZG9PclJlZG8pOwogICAgIHZvaWQgY2xl
YXJBbGxFZGl0Q29tbWFuZHMoKTsKICAgICBib29sIGNhblVuZG9SZWRvKFdlYlBhZ2VQcm94eTo6
VW5kb09yUmVkbyk7CiAgICAgdm9pZCBleGVjdXRlVW5kb1JlZG8oV2ViUGFnZVByb3h5OjpVbmRv
T3JSZWRvKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Eb3dubG9hZHMv
RG93bmxvYWRQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvRG93bmxvYWRzL0Rv
d25sb2FkUHJveHkuY3BwCmluZGV4IDEwOTI1ZTQ0OTAzZjY0ZGU5Y2NmY2M5MWRjN2Y1NzE1Yjlk
YmE1MjkuLmE1MzVhYzI3MGUxMWRkMTRkYjBiZThmMWRkZmVkN2VmNDE3ZjAzNTEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eS5jcHAK
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5LmNw
cApAQCAtNTEsOSArNTEsOSBAQCBzdGF0aWMgdWludDY0X3QgZ2VuZXJhdGVEb3dubG9hZElEKCkK
ICAgICByZXR1cm4gKyt1bmlxdWVEb3dubG9hZElEOwogfQogICAgIAotUGFzc1JlZlB0cjxEb3du
bG9hZFByb3h5PiBEb3dubG9hZFByb3h5OjpjcmVhdGUoRG93bmxvYWRQcm94eU1hcCYgZG93bmxv
YWRQcm94eU1hcCwgV2ViUHJvY2Vzc1Bvb2wmIHByb2Nlc3NQb29sLCBjb25zdCBSZXNvdXJjZVJl
cXVlc3QmIHJlc291cmNlUmVxdWVzdCkKK1JlZjxEb3dubG9hZFByb3h5PiBEb3dubG9hZFByb3h5
OjpjcmVhdGUoRG93bmxvYWRQcm94eU1hcCYgZG93bmxvYWRQcm94eU1hcCwgV2ViUHJvY2Vzc1Bv
b2wmIHByb2Nlc3NQb29sLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlc291cmNlUmVxdWVzdCkK
IHsKLSAgICByZXR1cm4gYWRvcHRSZWYobmV3IERvd25sb2FkUHJveHkoZG93bmxvYWRQcm94eU1h
cCwgcHJvY2Vzc1Bvb2wsIHJlc291cmNlUmVxdWVzdCkpOworICAgIHJldHVybiBhZG9wdFJlZigq
bmV3IERvd25sb2FkUHJveHkoZG93bmxvYWRQcm94eU1hcCwgcHJvY2Vzc1Bvb2wsIHJlc291cmNl
UmVxdWVzdCkpOwogfQogCiBEb3dubG9hZFByb3h5OjpEb3dubG9hZFByb3h5KERvd25sb2FkUHJv
eHlNYXAmIGRvd25sb2FkUHJveHlNYXAsIFdlYlByb2Nlc3NQb29sJiBwcm9jZXNzUG9vbCwgY29u
c3QgUmVzb3VyY2VSZXF1ZXN0JiByZXNvdXJjZVJlcXVlc3QpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHkuaCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9Eb3dubG9hZHMvRG93bmxvYWRQcm94eS5oCmluZGV4IDFjYWRhOGUyYTdl
YmJiZTY4ZmMwNzQ4M2M0MmNiYWRhODE1YTNkMGEuLmUyYWU1NmUyODRlZTIxOTFlNzQyYzNmZjQ3
Y2NmMjI0NzBmZmQ4OWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Eb3du
bG9hZHMvRG93bmxvYWRQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Eb3du
bG9hZHMvRG93bmxvYWRQcm94eS5oCkBAIC0zMiw3ICszMiw3IEBACiAjaW5jbHVkZSAiU2FuZGJv
eEV4dGVuc2lvbi5oIgogI2luY2x1ZGUgPFdlYkNvcmUvUmVzb3VyY2VSZXF1ZXN0Lmg+CiAjaW5j
bHVkZSA8d3RmL0ZvcndhcmQuaD4KLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1
ZGUgPHd0Zi9SZWYuaD4KIAogbmFtZXNwYWNlIEFQSSB7CiBjbGFzcyBEYXRhOwpAQCAtNTQsNyAr
NTQsNyBAQCBjbGFzcyBXZWJQcm9jZXNzUG9vbDsKIAogY2xhc3MgRG93bmxvYWRQcm94eSA6IHB1
YmxpYyBBUEk6Ok9iamVjdEltcGw8QVBJOjpPYmplY3Q6OlR5cGU6OkRvd25sb2FkPiwgcHVibGlj
IElQQzo6TWVzc2FnZVJlY2VpdmVyIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxE
b3dubG9hZFByb3h5PiBjcmVhdGUoRG93bmxvYWRQcm94eU1hcCYsIFdlYlByb2Nlc3NQb29sJiwg
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jik7CisgICAgc3RhdGljIFJlZjxEb3dubG9h
ZFByb3h5PiBjcmVhdGUoRG93bmxvYWRQcm94eU1hcCYsIFdlYlByb2Nlc3NQb29sJiwgY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VSZXF1ZXN0Jik7CiAgICAgfkRvd25sb2FkUHJveHkoKTsKIAogICAg
IERvd25sb2FkSUQgZG93bmxvYWRJRCgpIGNvbnN0IHsgcmV0dXJuIG1fZG93bmxvYWRJRDsgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0dlb2xvY2F0aW9uUGVybWlzc2lv
blJlcXVlc3RNYW5hZ2VyUHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0dlb2xv
Y2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuY3BwCmluZGV4IDBjZjcwNDUxMTgw
YTVjY2FjYzliYWYxY2FkYWIxYjQxYjMzYWRmZjEuLjI5MjAxMzc3NjYzN2ZiZjdhNjA0ODFmNmVi
ODhmZDhmNTJmYjQyZTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9HZW9s
b2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5j
cHAKQEAgLTQ1LDExICs0NSwxMSBAQCB2b2lkIEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RN
YW5hZ2VyUHJveHk6OmludmFsaWRhdGVSZXF1ZXN0cygpCiAgICAgbV9wZW5kaW5nUmVxdWVzdHMu
Y2xlYXIoKTsKIH0KIAotUGFzc1JlZlB0cjxHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0UHJv
eHk+IEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHk6OmNyZWF0ZVJlcXVl
c3QodWludDY0X3QgZ2VvbG9jYXRpb25JRCkKK1JlZjxHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1
ZXN0UHJveHk+IEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHk6OmNyZWF0
ZVJlcXVlc3QodWludDY0X3QgZ2VvbG9jYXRpb25JRCkKIHsKICAgICBhdXRvIHJlcXVlc3QgPSBH
ZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0UHJveHk6OmNyZWF0ZSh0aGlzLCBnZW9sb2NhdGlv
bklEKTsKICAgICBtX3BlbmRpbmdSZXF1ZXN0cy5hZGQoZ2VvbG9jYXRpb25JRCwgcmVxdWVzdC5w
dHIoKSk7Ci0gICAgcmV0dXJuIFdURk1vdmUocmVxdWVzdCk7CisgICAgcmV0dXJuIHJlcXVlc3Q7
CiB9CiAKIHZvaWQgR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eTo6ZGlk
UmVjZWl2ZUdlb2xvY2F0aW9uUGVybWlzc2lvbkRlY2lzaW9uKHVpbnQ2NF90IGdlb2xvY2F0aW9u
SUQsIGJvb2wgYWxsb3dlZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9H
ZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5oCmlu
ZGV4IDJmMTY5MjcxYjBmNWNmZjAwZjg3NGJhODA4NTIxMGE1NDlhZjJhMDkuLjgzMDUwZjJlN2Q2
YmQwNWExNzA5MDBkNmExZjA2MzFkMzBjYzdmYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9HZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmgKKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0dlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RN
YW5hZ2VyUHJveHkuaApAQCAtNDAsNyArNDAsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBpbnZhbGlk
YXRlUmVxdWVzdHMoKTsKIAogICAgIC8vIENyZWF0ZSBhIHJlcXVlc3QgdG8gYmUgcHJlc2VudGVk
IHRvIHRoZSB1c2VyLgotICAgIFBhc3NSZWZQdHI8R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVz
dFByb3h5PiBjcmVhdGVSZXF1ZXN0KHVpbnQ2NF90IGdlb2xvY2F0aW9uSUQpOworICAgIFJlZjxH
ZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0UHJveHk+IGNyZWF0ZVJlcXVlc3QodWludDY0X3Qg
Z2VvbG9jYXRpb25JRCk7CiAgICAgCiAgICAgLy8gQ2FsbGVkIGJ5IEdlb2xvY2F0aW9uUGVybWlz
c2lvblJlcXVlc3RQcm94eSB3aGVuIGEgZGVjaXNpb24gaXMgbWFkZSBieSB0aGUgdXNlci4KICAg
ICB2b2lkIGRpZFJlY2VpdmVHZW9sb2NhdGlvblBlcm1pc3Npb25EZWNpc2lvbih1aW50NjRfdCwg
Ym9vbCBhbGxvdyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvSW5zcGVj
dG9yU2VydmVyL0hUVFBSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9JbnNw
ZWN0b3JTZXJ2ZXIvSFRUUFJlcXVlc3QuY3BwCmluZGV4IGEzOGYyNzI2NDhhNWYzYzdlZDQ4ZDdk
NDBmYTVmNzc2NmE4ZmU2NWEuLjg0NmE1YzhmYzgyZWIwNjg0NjUyNTM2NDgxYmQ0OTJmZWMwNzAx
NWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9JbnNwZWN0b3JTZXJ2ZXIv
SFRUUFJlcXVlc3QuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9JbnNwZWN0b3JT
ZXJ2ZXIvSFRUUFJlcXVlc3QuY3BwCkBAIC0zNSwxNSArMzUsMTUgQEAgdXNpbmcgbmFtZXNwYWNl
IFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCi1QYXNzUmVmUHRyPEhUVFBSZXF1ZXN0
PiBIVFRQUmVxdWVzdDo6cGFyc2VIVFRQUmVxdWVzdEZyb21CdWZmZXIoY29uc3QgY2hhciogZGF0
YSwgc2l6ZV90IGxlbmd0aCwgU3RyaW5nJiBmYWlsdXJlUmVhc29uKQorUmVmUHRyPEhUVFBSZXF1
ZXN0PiBIVFRQUmVxdWVzdDo6cGFyc2VIVFRQUmVxdWVzdEZyb21CdWZmZXIoY29uc3QgY2hhciog
ZGF0YSwgc2l6ZV90IGxlbmd0aCwgU3RyaW5nJiBmYWlsdXJlUmVhc29uKQogewogICAgIGlmICgh
bGVuZ3RoKSB7CiAgICAgICAgIGZhaWx1cmVSZWFzb24gPSAiTm8gZGF0YSB0byBwYXJzZS4iOwot
ICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCiAgICAg
Ly8gUmVxdWVzdCB3ZSB3aWxsIGJlIGJ1aWxkaW5nLgotICAgIFJlZlB0cjxIVFRQUmVxdWVzdD4g
cmVxdWVzdCA9IEhUVFBSZXF1ZXN0OjpjcmVhdGUoKTsKKyAgICBhdXRvIHJlcXVlc3QgPSBIVFRQ
UmVxdWVzdDo6Y3JlYXRlKCk7CiAKICAgICAvLyBBZHZhbmNlIGEgcG9pbnRlciB0aHJvdWdoIHRo
ZSBkYXRhIGFzIG5lZWRlZC4KICAgICBjb25zdCBjaGFyKiBwb3MgPSBkYXRhOwpAQCAtNTIsMTQg
KzUyLDE0IEBAIFBhc3NSZWZQdHI8SFRUUFJlcXVlc3Q+IEhUVFBSZXF1ZXN0OjpwYXJzZUhUVFBS
ZXF1ZXN0RnJvbUJ1ZmZlcihjb25zdCBjaGFyKiBkYXRhCiAgICAgLy8gMS4gUGFyc2UgTWV0aG9k
ICsgVVJMLgogICAgIHNpemVfdCByZXF1ZXN0TGluZUxlbmd0aCA9IHJlcXVlc3QtPnBhcnNlUmVx
dWVzdExpbmUocG9zLCByZW1haW5pbmdMZW5ndGgsIGZhaWx1cmVSZWFzb24pOwogICAgIGlmICgh
cmVxdWVzdExpbmVMZW5ndGgpCi0gICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVs
bHB0cjsKICAgICBwb3MgKz0gcmVxdWVzdExpbmVMZW5ndGg7CiAgICAgcmVtYWluaW5nTGVuZ3Ro
IC09IHJlcXVlc3RMaW5lTGVuZ3RoOwogCiAgICAgLy8gMi4gUGFyc2UgSFRUUCBIZWFkZXJzLgog
ICAgIHNpemVfdCBoZWFkZXJzTGVuZ3RoID0gcmVxdWVzdC0+cGFyc2VIZWFkZXJzKHBvcywgcmVt
YWluaW5nTGVuZ3RoLCBmYWlsdXJlUmVhc29uKTsKICAgICBpZiAoIWhlYWRlcnNMZW5ndGgpCi0g
ICAgICAgIHJldHVybiAwOworICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICBwb3MgKz0gaGVh
ZGVyc0xlbmd0aDsKICAgICByZW1haW5pbmdMZW5ndGggLT0gaGVhZGVyc0xlbmd0aDsKIApAQCAt
NzAsNyArNzAsNyBAQCBQYXNzUmVmUHRyPEhUVFBSZXF1ZXN0PiBIVFRQUmVxdWVzdDo6cGFyc2VI
VFRQUmVxdWVzdEZyb21CdWZmZXIoY29uc3QgY2hhciogZGF0YQogCiAgICAgLy8gV2Ugc2hvdWxk
IGhhdmUgcHJvY2Vzc2VkIHRoZSBlbnRpcmUgaW5wdXQuCiAgICAgQVNTRVJUKCFyZW1haW5pbmdM
ZW5ndGgpOwotICAgIHJldHVybiByZXF1ZXN0LnJlbGVhc2UoKTsKKyAgICByZXR1cm4gV1RGTW92
ZShyZXF1ZXN0KTsKIH0KIAogc2l6ZV90IEhUVFBSZXF1ZXN0OjpwYXJzZVJlcXVlc3RMaW5lKGNv
bnN0IGNoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgsIFN0cmluZyYgZmFpbHVyZVJlYXNvbikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9JbnNwZWN0b3JTZXJ2ZXIvSFRUUFJl
cXVlc3QuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9JbnNwZWN0b3JTZXJ2ZXIvSFRUUFJl
cXVlc3QuaAppbmRleCA1OTAyOTVjZWUxZTNlNWJlZWI2ZGI4MWRkM2FhMTBhMWFmMDJiNDRiLi4y
OTE1NWYwNmUyMmU4NTM4ZTFmMjM1MmI2NzQ3MjdlZGI1OGEyZjY3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0Mi9VSVByb2Nlc3MvSW5zcGVjdG9yU2VydmVyL0hUVFBSZXF1ZXN0LmgKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0luc3BlY3RvclNlcnZlci9IVFRQUmVxdWVzdC5oCkBA
IC0zNyw4ICszNyw4IEBACiAjaW5jbHVkZSA8V2ViQ29yZS9IVFRQSGVhZGVyTWFwLmg+CiAjaW5j
bHVkZSA8V2ViQ29yZS9IVFRQUGFyc2Vycy5oPgogI2luY2x1ZGUgPFdlYkNvcmUvVVJMLmg+Ci0j
aW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgor
I2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4K
IAogbmFtZXNwYWNlIFdlYktpdCB7CkBAIC00Nyw3ICs0Nyw3IEBAIGNsYXNzIEhUVFBSZXF1ZXN0
IDogcHVibGljIFJlZkNvdW50ZWQ8SFRUUFJlcXVlc3Q+IHsKIHB1YmxpYzoKICAgICBzdGF0aWMg
UmVmPEhUVFBSZXF1ZXN0PiBjcmVhdGUoKSB7IHJldHVybiBhZG9wdFJlZigqbmV3IEhUVFBSZXF1
ZXN0KCkpOyB9CiAgICAgc3RhdGljIFJlZjxIVFRQUmVxdWVzdD4gY3JlYXRlKGNvbnN0IFN0cmlu
ZyYgcmVxdWVzdE1ldGhvZCwgY29uc3QgV2ViQ29yZTo6VVJMJiB1cmwsIFdlYkNvcmU6OkhUVFBW
ZXJzaW9uIHZlcnNpb24pIHsgcmV0dXJuIGFkb3B0UmVmKCpuZXcgSFRUUFJlcXVlc3QocmVxdWVz
dE1ldGhvZCwgdXJsLCB2ZXJzaW9uKSk7IH0KLSAgICBzdGF0aWMgUGFzc1JlZlB0cjxIVFRQUmVx
dWVzdD4gcGFyc2VIVFRQUmVxdWVzdEZyb21CdWZmZXIoY29uc3QgY2hhciogZGF0YSwgc2l6ZV90
IGxlbmd0aCwgU3RyaW5nJiBmYWlsdXJlUmVhc29uKTsKKyAgICBzdGF0aWMgUmVmUHRyPEhUVFBS
ZXF1ZXN0PiBwYXJzZUhUVFBSZXF1ZXN0RnJvbUJ1ZmZlcihjb25zdCBjaGFyKiBkYXRhLCBzaXpl
X3QgbGVuZ3RoLCBTdHJpbmcmIGZhaWx1cmVSZWFzb24pOwogICAgIHZpcnR1YWwgfkhUVFBSZXF1
ZXN0KCk7CiAKICAgICBTdHJpbmcgcmVxdWVzdE1ldGhvZCgpIGNvbnN0IHsgcmV0dXJuIG1fcmVx
dWVzdE1ldGhvZDsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0luc3Bl
Y3RvclNlcnZlci9XZWJJbnNwZWN0b3JTZXJ2ZXIuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0luc3BlY3RvclNlcnZlci9XZWJJbnNwZWN0b3JTZXJ2ZXIuY3BwCmluZGV4IDY2Mzg3NzQ4
NWViZWIxZjQ5NGVlMjZiZjJiZmNmZTY4OWRjODk3NDguLjQ5MDlhMWIyYzhkYTU2MDA0Mjk2MzY1
ZjMxYTE2OGIwNDFjNWM1MzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9J
bnNwZWN0b3JTZXJ2ZXIvV2ViSW5zcGVjdG9yU2VydmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvSW5zcGVjdG9yU2VydmVyL1dlYkluc3BlY3RvclNlcnZlci5jcHAKQEAgLTEw
Nyw3ICsxMDcsNyBAQCB2b2lkIFdlYkluc3BlY3RvclNlcnZlcjo6c2VuZE1lc3NhZ2VPdmVyQ29u
bmVjdGlvbih1bnNpZ25lZCBwYWdlSWRGb3JDb25uZWN0aW9uLAogICAgICAgICBjb25uZWN0aW9u
LT5zZW5kV2ViU29ja2V0TWVzc2FnZShtZXNzYWdlKTsKIH0KIAotdm9pZCBXZWJJbnNwZWN0b3JT
ZXJ2ZXI6OmRpZFJlY2VpdmVVbnJlY29nbml6ZWRIVFRQUmVxdWVzdChXZWJTb2NrZXRTZXJ2ZXJD
b25uZWN0aW9uKiBjb25uZWN0aW9uLCBQYXNzUmVmUHRyPEhUVFBSZXF1ZXN0PiByZXF1ZXN0KQor
dm9pZCBXZWJJbnNwZWN0b3JTZXJ2ZXI6OmRpZFJlY2VpdmVVbnJlY29nbml6ZWRIVFRQUmVxdWVz
dChXZWJTb2NrZXRTZXJ2ZXJDb25uZWN0aW9uKiBjb25uZWN0aW9uLCBSZWY8SFRUUFJlcXVlc3Q+
JiYgcmVxdWVzdCkKIHsKICAgICAvLyByZXF1ZXN0LT51cmwoKSBjb250YWlucyBvbmx5IHRoZSBw
YXRoIGV4dHJhY3RlZCBmcm9tIHRoZSBIVFRQIHJlcXVlc3QgbGluZQogICAgIC8vIGFuZCBVUkwg
aXMgcG9vciBhdCBwYXJzaW5nIGluY29tcGxldGUgVVJMcywgc28gZXh0cmFjdCB0aGUgaW50ZXJl
c3RpbmcgcGFydHMgbWFudWFsbHkuCkBAIC0xMzYsNyArMTM2LDcgQEAgdm9pZCBXZWJJbnNwZWN0
b3JTZXJ2ZXI6OmRpZFJlY2VpdmVVbnJlY29nbml6ZWRIVFRQUmVxdWVzdChXZWJTb2NrZXRTZXJ2
ZXJDb25uZWMKICAgICBjb25uZWN0aW9uLT5zaHV0ZG93bkFmdGVyU2VuZE9yTm93KCk7CiB9CiAK
LWJvb2wgV2ViSW5zcGVjdG9yU2VydmVyOjpkaWRSZWNlaXZlV2ViU29ja2V0VXBncmFkZUhUVFBS
ZXF1ZXN0KFdlYlNvY2tldFNlcnZlckNvbm5lY3Rpb24qLCBQYXNzUmVmUHRyPEhUVFBSZXF1ZXN0
PiByZXF1ZXN0KQorYm9vbCBXZWJJbnNwZWN0b3JTZXJ2ZXI6OmRpZFJlY2VpdmVXZWJTb2NrZXRV
cGdyYWRlSFRUUFJlcXVlc3QoV2ViU29ja2V0U2VydmVyQ29ubmVjdGlvbiosIFJlZjxIVFRQUmVx
dWVzdD4mJiByZXF1ZXN0KQogewogICAgIFN0cmluZyBwYXRoID0gcmVxdWVzdC0+dXJsKCk7CiAK
QEAgLTE2MCw3ICsxNjAsNyBAQCBib29sIFdlYkluc3BlY3RvclNlcnZlcjo6ZGlkUmVjZWl2ZVdl
YlNvY2tldFVwZ3JhZGVIVFRQUmVxdWVzdChXZWJTb2NrZXRTZXJ2ZXJDbwogICAgIHJldHVybiB0
cnVlOwogfQogCi12b2lkIFdlYkluc3BlY3RvclNlcnZlcjo6ZGlkRXN0YWJsaXNoV2ViU29ja2V0
Q29ubmVjdGlvbihXZWJTb2NrZXRTZXJ2ZXJDb25uZWN0aW9uKiBjb25uZWN0aW9uLCBQYXNzUmVm
UHRyPEhUVFBSZXF1ZXN0PiByZXF1ZXN0KQordm9pZCBXZWJJbnNwZWN0b3JTZXJ2ZXI6OmRpZEVz
dGFibGlzaFdlYlNvY2tldENvbm5lY3Rpb24oV2ViU29ja2V0U2VydmVyQ29ubmVjdGlvbiogY29u
bmVjdGlvbiwgUmVmPEhUVFBSZXF1ZXN0PiYmIHJlcXVlc3QpCiB7CiAgICAgU3RyaW5nIHBhdGgg
PSByZXF1ZXN0LT51cmwoKTsKICAgICB1bnNpZ25lZCBwYWdlSWQgPSBwYWdlSWRGcm9tUmVxdWVz
dFBhdGgocGF0aCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvSW5zcGVj
dG9yU2VydmVyL1dlYkluc3BlY3RvclNlcnZlci5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L0luc3BlY3RvclNlcnZlci9XZWJJbnNwZWN0b3JTZXJ2ZXIuaAppbmRleCA5MjgxYWE1NjM0Mzc2
ZWMxMTk3ODIxOGY5ZGYyMDlmYzAyZGViZDFmLi4xNGJhNTIyOTkwYjhiNTgzMTYxZjY0OTU5OTI1
MTA3YTUyNThmYmFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvSW5zcGVj
dG9yU2VydmVyL1dlYkluc3BlY3RvclNlcnZlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9JbnNwZWN0b3JTZXJ2ZXIvV2ViSW5zcGVjdG9yU2VydmVyLmgKQEAgLTUzLDkgKzUzLDkg
QEAgcHJpdmF0ZToKICAgICB+V2ViSW5zcGVjdG9yU2VydmVyKCk7CiAKICAgICAvLyBXZWJTb2Nr
ZXRTZXJ2ZXJDbGllbnQgaW1wbGVtZW50YXRpb24uIEV2ZW50cyBjb21pbmcgZnJvbSByZW1vdGUg
Y29ubmVjdGlvbnMuCi0gICAgdm9pZCBkaWRSZWNlaXZlVW5yZWNvZ25pemVkSFRUUFJlcXVlc3Qo
V2ViU29ja2V0U2VydmVyQ29ubmVjdGlvbiosIFBhc3NSZWZQdHI8SFRUUFJlcXVlc3Q+KSBmaW5h
bDsKLSAgICBib29sIGRpZFJlY2VpdmVXZWJTb2NrZXRVcGdyYWRlSFRUUFJlcXVlc3QoV2ViU29j
a2V0U2VydmVyQ29ubmVjdGlvbiosIFBhc3NSZWZQdHI8SFRUUFJlcXVlc3Q+KSBmaW5hbDsKLSAg
ICB2b2lkIGRpZEVzdGFibGlzaFdlYlNvY2tldENvbm5lY3Rpb24oV2ViU29ja2V0U2VydmVyQ29u
bmVjdGlvbiosIFBhc3NSZWZQdHI8SFRUUFJlcXVlc3Q+KSBmaW5hbDsKKyAgICB2b2lkIGRpZFJl
Y2VpdmVVbnJlY29nbml6ZWRIVFRQUmVxdWVzdChXZWJTb2NrZXRTZXJ2ZXJDb25uZWN0aW9uKiwg
UmVmPEhUVFBSZXF1ZXN0PiYmKSBmaW5hbDsKKyAgICBib29sIGRpZFJlY2VpdmVXZWJTb2NrZXRV
cGdyYWRlSFRUUFJlcXVlc3QoV2ViU29ja2V0U2VydmVyQ29ubmVjdGlvbiosIFJlZjxIVFRQUmVx
dWVzdD4mJikgZmluYWw7CisgICAgdm9pZCBkaWRFc3RhYmxpc2hXZWJTb2NrZXRDb25uZWN0aW9u
KFdlYlNvY2tldFNlcnZlckNvbm5lY3Rpb24qLCBSZWY8SFRUUFJlcXVlc3Q+JiYpIGZpbmFsOwog
ICAgIHZvaWQgZGlkUmVjZWl2ZVdlYlNvY2tldE1lc3NhZ2UoV2ViU29ja2V0U2VydmVyQ29ubmVj
dGlvbiosIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkgZmluYWw7CiAgICAgdm9pZCBkaWRDbG9zZVdl
YlNvY2tldENvbm5lY3Rpb24oV2ViU29ja2V0U2VydmVyQ29ubmVjdGlvbiopIGZpbmFsOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvSW5zcGVjdG9yU2VydmVyL1dlYlNv
Y2tldFNlcnZlckNsaWVudC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0luc3BlY3RvclNl
cnZlci9XZWJTb2NrZXRTZXJ2ZXJDbGllbnQuaAppbmRleCBhNzNhMGYzY2RjODczZTFhNDE2Zjcy
MGQ5ZWM0Y2IzNGRiNTE3ODJlLi5jNmZhYzM5MzUyZDUwOTM1Mjk2M2Y0YjRlOWJkODdjMTQ1YTZl
ZDI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvSW5zcGVjdG9yU2VydmVy
L1dlYlNvY2tldFNlcnZlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9J
bnNwZWN0b3JTZXJ2ZXIvV2ViU29ja2V0U2VydmVyQ2xpZW50LmgKQEAgLTI5LDcgKzI5LDcgQEAK
ICNpZiBFTkFCTEUoSU5TUEVDVE9SX1NFUlZFUikKIAogI2luY2x1ZGUgIkhUVFBSZXF1ZXN0Lmgi
Ci0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmLmg+CiAjaW5j
bHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNDEs
MTMgKzQxLDEzIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5XZWJTb2NrZXRTZXJ2ZXJDbGllbnQo
KSB7IH0KIAogICAgIC8vIFJlY2VpdmVkIGFuIEhUVFAgcmVxdWVzdCBidXQgZGlkbid0IGtub3cg
d2hhdCB0byBkbyB3aXRoIGl0LgotICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlVW5yZWNvZ25p
emVkSFRUUFJlcXVlc3QoV2ViU29ja2V0U2VydmVyQ29ubmVjdGlvbiosIFBhc3NSZWZQdHI8SFRU
UFJlcXVlc3Q+KSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVVucmVjb2duaXplZEhU
VFBSZXF1ZXN0KFdlYlNvY2tldFNlcnZlckNvbm5lY3Rpb24qLCBSZWY8SFRUUFJlcXVlc3Q+JiYp
IHsgfQogCiAgICAgLy8gUmVjZWl2ZWQgYSBXZWJTb2NrZXQgVXBncmFkZSBIVFRQIHJlcXVlc3Qu
IEFzayBpZiB3ZSBzaG91bGQgaGFuZGxlIGl0IGFuZCB1cGdyYWRlLgotICAgIHZpcnR1YWwgYm9v
bCBkaWRSZWNlaXZlV2ViU29ja2V0VXBncmFkZUhUVFBSZXF1ZXN0KFdlYlNvY2tldFNlcnZlckNv
bm5lY3Rpb24qLCBQYXNzUmVmUHRyPEhUVFBSZXF1ZXN0PikgeyByZXR1cm4gdHJ1ZTsgfQorICAg
IHZpcnR1YWwgYm9vbCBkaWRSZWNlaXZlV2ViU29ja2V0VXBncmFkZUhUVFBSZXF1ZXN0KFdlYlNv
Y2tldFNlcnZlckNvbm5lY3Rpb24qLCBSZWY8SFRUUFJlcXVlc3Q+JiYpIHsgcmV0dXJuIHRydWU7
IH0KIAogICAgIC8vIEVzdGFibGlzaGVkIGEgV2ViU29ja2V0IENvbm5lY3Rpb24uCi0gICAgdmly
dHVhbCB2b2lkIGRpZEVzdGFibGlzaFdlYlNvY2tldENvbm5lY3Rpb24oV2ViU29ja2V0U2VydmVy
Q29ubmVjdGlvbiosIFBhc3NSZWZQdHI8SFRUUFJlcXVlc3Q+KSB7IH0KKyAgICB2aXJ0dWFsIHZv
aWQgZGlkRXN0YWJsaXNoV2ViU29ja2V0Q29ubmVjdGlvbihXZWJTb2NrZXRTZXJ2ZXJDb25uZWN0
aW9uKiwgUmVmPEhUVFBSZXF1ZXN0PiYmKSB7IH0KIAogICAgIC8vIFJlY2VpdmVkIGEgV2ViU29j
a2V0IG1lc3NhZ2UuCiAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVXZWJTb2NrZXRNZXNzYWdl
KFdlYlNvY2tldFNlcnZlckNvbm5lY3Rpb24qLCBjb25zdCBTdHJpbmcmKSB7IH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9JbnNwZWN0b3JTZXJ2ZXIvV2ViU29ja2V0U2Vy
dmVyQ29ubmVjdGlvbi5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvSW5zcGVjdG9yU2Vy
dmVyL1dlYlNvY2tldFNlcnZlckNvbm5lY3Rpb24uY3BwCmluZGV4IDdlMDUyNWMxMzVjODAzNWYx
ZDhhOGMzNzViZDFhZmMxMWE2YTUzMjYuLjExNzdmNmY1ZTJjMTFiOTViODc2MDU2ZTU3YjM4OWIz
NjFiYzVhNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9JbnNwZWN0b3JT
ZXJ2ZXIvV2ViU29ja2V0U2VydmVyQ29ubmVjdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0luc3BlY3RvclNlcnZlci9XZWJTb2NrZXRTZXJ2ZXJDb25uZWN0aW9uLmNwcApA
QCAtMTczLDcgKzE3Myw3IEBAIHZvaWQgV2ViU29ja2V0U2VydmVyQ29ubmVjdGlvbjo6cmVhZEhU
VFBNZXNzYWdlKCkKICAgICBjb25zdCBIVFRQSGVhZGVyTWFwJiBoZWFkZXJzID0gcmVxdWVzdC0+
aGVhZGVyRmllbGRzKCk7CiAgICAgU3RyaW5nIHVwZ3JhZGVIZWFkZXJWYWx1ZSA9IGhlYWRlcnMu
Z2V0KEhUVFBIZWFkZXJOYW1lOjpVcGdyYWRlKTsKICAgICBpZiAodXBncmFkZUhlYWRlclZhbHVl
ID09ICJ3ZWJzb2NrZXQiKSB7Ci0gICAgICAgIHVwZ3JhZGVUb1dlYlNvY2tldFNlcnZlckNvbm5l
Y3Rpb24ocmVxdWVzdCk7CisgICAgICAgIHVwZ3JhZGVUb1dlYlNvY2tldFNlcnZlckNvbm5lY3Rp
b24ocmVxdWVzdC5yZWxlYXNlTm9uTnVsbCgpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAg
ICBpZiAodXBncmFkZUhlYWRlclZhbHVlID09ICJXZWJTb2NrZXQiKSB7CkBAIC0xODIsMjQgKzE4
MiwyMSBAQCB2b2lkIFdlYlNvY2tldFNlcnZlckNvbm5lY3Rpb246OnJlYWRIVFRQTWVzc2FnZSgp
CiAgICAgfQogCiAgICAgLy8gT3RoZXJ3aXNlLCB0aGlzIGlzIGFuIEhUVFAgUmVxdWVzdCB3ZSBk
b24ndCBrbm93IGhvdyB0byBkZWFsIHdpdGguCi0gICAgbV9jbGllbnQtPmRpZFJlY2VpdmVVbnJl
Y29nbml6ZWRIVFRQUmVxdWVzdCh0aGlzLCByZXF1ZXN0KTsKKyAgICBtX2NsaWVudC0+ZGlkUmVj
ZWl2ZVVucmVjb2duaXplZEhUVFBSZXF1ZXN0KHRoaXMsIHJlcXVlc3QucmVsZWFzZU5vbk51bGwo
KSk7CiB9CiAKLXZvaWQgV2ViU29ja2V0U2VydmVyQ29ubmVjdGlvbjo6dXBncmFkZVRvV2ViU29j
a2V0U2VydmVyQ29ubmVjdGlvbihQYXNzUmVmUHRyPEhUVFBSZXF1ZXN0PiByZXF1ZXN0KQordm9p
ZCBXZWJTb2NrZXRTZXJ2ZXJDb25uZWN0aW9uOjp1cGdyYWRlVG9XZWJTb2NrZXRTZXJ2ZXJDb25u
ZWN0aW9uKFJlZjxIVFRQUmVxdWVzdD4mJiByZXF1ZXN0KQogewotICAgIEFTU0VSVChyZXF1ZXN0
KTsKICAgICBBU1NFUlQobV9tb2RlID09IEhUVFApOwogICAgIG1fbW9kZSA9IFdlYlNvY2tldDsK
LSAgICBSZWZQdHI8SFRUUFJlcXVlc3Q+IHByb3RlY3RlZFJlcXVlc3QocmVxdWVzdCk7Ci0KICAg
ICAvLyBBc2sgdGhlIGNsaWVudCBpZiB3ZSBzaG91bGQgdXBncmFkZSBmb3IgdGhpcyBvciBub3Qu
Ci0gICAgaWYgKCFtX2NsaWVudC0+ZGlkUmVjZWl2ZVdlYlNvY2tldFVwZ3JhZGVIVFRQUmVxdWVz
dCh0aGlzLCBwcm90ZWN0ZWRSZXF1ZXN0KSkgeworICAgIGlmICghbV9jbGllbnQtPmRpZFJlY2Vp
dmVXZWJTb2NrZXRVcGdyYWRlSFRUUFJlcXVlc3QodGhpcywgcmVxdWVzdC5jb3B5UmVmKCkpKSB7
CiAgICAgICAgIHNodXRkb3duTm93KCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICAv
LyBCdWlsZCBhbmQgc2VuZCB0aGUgV2ViU29ja2V0IGhhbmRzaGFrZSByZXNwb25zZS4KLSAgICBj
b25zdCBIVFRQSGVhZGVyTWFwJiByZXF1ZXN0SGVhZGVycyA9IHByb3RlY3RlZFJlcXVlc3QtPmhl
YWRlckZpZWxkcygpOworICAgIGNvbnN0IEhUVFBIZWFkZXJNYXAmIHJlcXVlc3RIZWFkZXJzID0g
cmVxdWVzdC0+aGVhZGVyRmllbGRzKCk7CiAgICAgU3RyaW5nIGFjY2VwdCA9IFdlYlNvY2tldEhh
bmRzaGFrZTo6Z2V0RXhwZWN0ZWRXZWJTb2NrZXRBY2NlcHQocmVxdWVzdEhlYWRlcnMuZ2V0KEhU
VFBIZWFkZXJOYW1lOjpTZWNXZWJTb2NrZXRLZXkpKTsKICAgICBIVFRQSGVhZGVyTWFwIHJlc3Bv
bnNlSGVhZGVyczsKICAgICByZXNwb25zZUhlYWRlcnMuYWRkKCJVcGdyYWRlIiwgcmVxdWVzdEhl
YWRlcnMuZ2V0KEhUVFBIZWFkZXJOYW1lOjpVcGdyYWRlKSk7CkBAIC0yMDgsNyArMjA1LDcgQEAg
dm9pZCBXZWJTb2NrZXRTZXJ2ZXJDb25uZWN0aW9uOjp1cGdyYWRlVG9XZWJTb2NrZXRTZXJ2ZXJD
b25uZWN0aW9uKFBhc3NSZWZQdHI8SFQKIAogICAgIHNlbmRIVFRQUmVzcG9uc2VIZWFkZXIoMTAx
LCAiV2ViU29ja2V0IFByb3RvY29sIEhhbmRzaGFrZSIsIHJlc3BvbnNlSGVhZGVycyk7CiAKLSAg
ICBtX2NsaWVudC0+ZGlkRXN0YWJsaXNoV2ViU29ja2V0Q29ubmVjdGlvbih0aGlzLCBwcm90ZWN0
ZWRSZXF1ZXN0KTsKKyAgICBtX2NsaWVudC0+ZGlkRXN0YWJsaXNoV2ViU29ja2V0Q29ubmVjdGlv
bih0aGlzLCBXVEZNb3ZlKHJlcXVlc3QpKTsKIH0KIAogdm9pZCBXZWJTb2NrZXRTZXJ2ZXJDb25u
ZWN0aW9uOjpyZWFkV2ViU29ja2V0RnJhbWVzKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9JbnNwZWN0b3JTZXJ2ZXIvV2ViU29ja2V0U2VydmVyQ29ubmVjdGlvbi5oIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0luc3BlY3RvclNlcnZlci9XZWJTb2NrZXRTZXJ2ZXJD
b25uZWN0aW9uLmgKaW5kZXggZTkxMzk3NGRlZjFjYWUyZDQ4YWE5MWUxMTM2OGI3MmI1ZTFiOGJl
NC4uNWVjZjc1MWFjNWY3MGM4YWMzYzRiMjNlNGNjMzFhYzM0OGFkOGFhNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0luc3BlY3RvclNlcnZlci9XZWJTb2NrZXRTZXJ2ZXJD
b25uZWN0aW9uLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0luc3BlY3RvclNlcnZl
ci9XZWJTb2NrZXRTZXJ2ZXJDb25uZWN0aW9uLmgKQEAgLTI5LDcgKzI5LDcgQEAKICNpZiBFTkFC
TEUoSU5TUEVDVE9SX1NFUlZFUikKIAogI2luY2x1ZGUgPFdlYkNvcmUvU29ja2V0U3RyZWFtSGFu
ZGxlQ2xpZW50Lmg+Ci0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYv
UmVmLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4K
ICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KQEAgLTc4LDcgKzc4LDcgQEAgcHJpdmF0
ZToKICAgICB2b2lkIHJlYWRIVFRQTWVzc2FnZSgpOwogCiAgICAgLy8gV2ViU29ja2V0IE1vZGUu
Ci0gICAgdm9pZCB1cGdyYWRlVG9XZWJTb2NrZXRTZXJ2ZXJDb25uZWN0aW9uKFBhc3NSZWZQdHI8
SFRUUFJlcXVlc3Q+KTsKKyAgICB2b2lkIHVwZ3JhZGVUb1dlYlNvY2tldFNlcnZlckNvbm5lY3Rp
b24oUmVmPEhUVFBSZXF1ZXN0PiYmKTsKICAgICB2b2lkIHJlYWRXZWJTb2NrZXRGcmFtZXMoKTsK
ICAgICBib29sIHJlYWRXZWJTb2NrZXRGcmFtZSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVz
dE1hbmFnZXJQcm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTm90aWZpY2F0aW9u
cy9Ob3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5jcHAKaW5kZXggODE4
YTUyNTQxNjA3YTNjZTlhMjNkYzg3OGYxOGJmYTEzN2MwZGFlMi4uNjI2NTg0NDhhZjhiOTViOTI1
MDQ5ZThiZDJiMmY1ZGNkMjEyY2E3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL05vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJv
eHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL05vdGlm
aWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmNwcApAQCAtNDYsMTEgKzQ2LDEx
IEBAIHZvaWQgTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHk6OmludmFs
aWRhdGVSZXF1ZXN0cygpCiAgICAgbV9wZW5kaW5nUmVxdWVzdHMuY2xlYXIoKTsKIH0KIAotUGFz
c1JlZlB0cjxOb3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdD4gTm90aWZpY2F0aW9uUGVybWlz
c2lvblJlcXVlc3RNYW5hZ2VyUHJveHk6OmNyZWF0ZVJlcXVlc3QodWludDY0X3Qgbm90aWZpY2F0
aW9uSUQpCitSZWY8Tm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3Q+IE5vdGlmaWNhdGlvblBl
cm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5OjpjcmVhdGVSZXF1ZXN0KHVpbnQ2NF90IG5vdGlm
aWNhdGlvbklEKQogewogICAgIGF1dG8gcmVxdWVzdCA9IE5vdGlmaWNhdGlvblBlcm1pc3Npb25S
ZXF1ZXN0OjpjcmVhdGUodGhpcywgbm90aWZpY2F0aW9uSUQpOwogICAgIG1fcGVuZGluZ1JlcXVl
c3RzLmFkZChub3RpZmljYXRpb25JRCwgcmVxdWVzdC5wdHIoKSk7Ci0gICAgcmV0dXJuIFdURk1v
dmUocmVxdWVzdCk7CisgICAgcmV0dXJuIHJlcXVlc3Q7CiB9CiAKIHZvaWQgTm90aWZpY2F0aW9u
UGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHk6OmRpZFJlY2VpdmVOb3RpZmljYXRpb25QZXJt
aXNzaW9uRGVjaXNpb24odWludDY0X3Qgbm90aWZpY2F0aW9uSUQsIGJvb2wgYWxsb3cpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9Ob3RpZmljYXRp
b25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL05vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJv
eHkuaAppbmRleCA1YmM4M2Y2ZjU3Mzg0NWRhNzM5ZTYxMGIyMzUzN2ZhNmFiMzQyZGM1Li4xMGU0
YjE4NTNjMGI0NjdlZDA4YmUyYTBkMWZlMTBjZDJmNTExOWQ4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25QZXJtaXNzaW9uUmVx
dWVzdE1hbmFnZXJQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Ob3RpZmlj
YXRpb25zL05vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmgKQEAgLTQx
LDcgKzQxLDcgQEAgcHVibGljOgogICAgIHZvaWQgaW52YWxpZGF0ZVJlcXVlc3RzKCk7CiAgICAg
CiAgICAgLy8gQ3JlYXRlIGEgcmVxdWVzdCB0byBiZSBwcmVzZW50ZWQgdG8gdGhlIHVzZXIuCi0g
ICAgUGFzc1JlZlB0cjxOb3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdD4gY3JlYXRlUmVxdWVz
dCh1aW50NjRfdCBub3RpZmljYXRpb25JRCk7CisgICAgUmVmPE5vdGlmaWNhdGlvblBlcm1pc3Np
b25SZXF1ZXN0PiBjcmVhdGVSZXF1ZXN0KHVpbnQ2NF90IG5vdGlmaWNhdGlvbklEKTsKICAgICAK
ICAgICAvLyBDYWxsZWQgYnkgTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3Qgd2hlbiBhIGRl
Y2lzaW9uIGlzIG1hZGUgYnkgdGhlIHVzZXIuCiAgICAgdm9pZCBkaWRSZWNlaXZlTm90aWZpY2F0
aW9uUGVybWlzc2lvbkRlY2lzaW9uKHVpbnQ2NF90IG5vdGlmaWNhdGlvbklELCBib29sIGFsbG93
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dl
Yk5vdGlmaWNhdGlvblByb3ZpZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Ob3Rp
ZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvblByb3ZpZGVyLmNwcAppbmRleCBhMmE4M2FkYTA5NWRl
MDRjYjQ3ZjYxN2RmMDdlNWIyMGY1MGQ3ZTcwLi5kYjM1ODhjYTRjMTAwYzJjOWE4OTUxOWUxNzMy
NzYwY2IzZmFmZDNkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTm90aWZp
Y2F0aW9ucy9XZWJOb3RpZmljYXRpb25Qcm92aWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uUHJvdmlkZXIuY3BwCkBAIC05
MSw3ICs5MSw3IEBAIHZvaWQgV2ViTm90aWZpY2F0aW9uUHJvdmlkZXI6OnJlbW92ZU5vdGlmaWNh
dGlvbk1hbmFnZXIoV2ViTm90aWZpY2F0aW9uTWFuYWdlclByCiAgICAgbV9jbGllbnQucmVtb3Zl
Tm90aWZpY2F0aW9uTWFuYWdlcih0b0FQSShtYW5hZ2VyKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJ
bmZvKTsKIH0KIAotUGFzc1JlZlB0cjxBUEk6OkRpY3Rpb25hcnk+IFdlYk5vdGlmaWNhdGlvblBy
b3ZpZGVyOjpub3RpZmljYXRpb25QZXJtaXNzaW9ucygpCitSZWZQdHI8QVBJOjpEaWN0aW9uYXJ5
PiBXZWJOb3RpZmljYXRpb25Qcm92aWRlcjo6bm90aWZpY2F0aW9uUGVybWlzc2lvbnMoKQogewog
ICAgIGlmICghbV9jbGllbnQubm90aWZpY2F0aW9uUGVybWlzc2lvbnMpCiAgICAgICAgIHJldHVy
biBBUEk6OkRpY3Rpb25hcnk6OmNyZWF0ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uUHJvdmlkZXIuaCBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlvblByb3ZpZGVy
LmgKaW5kZXggMTRmYWJlMTZjNmU0ZDVlNjg1MjY4MDE5ZmY0MDBmYmU2YmU1ZjdmMy4uMjYyYjFl
NTMyZDExMGQxNTM3ZDAyMzRjZjljZjA1Mjg2YmI2NTI1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uUHJvdmlkZXIuaAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRp
b25Qcm92aWRlci5oCkBAIC01Niw3ICs1Niw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGFkZE5vdGlm
aWNhdGlvbk1hbmFnZXIoV2ViTm90aWZpY2F0aW9uTWFuYWdlclByb3h5Kik7CiAgICAgdm9pZCBy
ZW1vdmVOb3RpZmljYXRpb25NYW5hZ2VyKFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcm94eSopOwog
ICAgIAotICAgIFBhc3NSZWZQdHI8QVBJOjpEaWN0aW9uYXJ5PiBub3RpZmljYXRpb25QZXJtaXNz
aW9ucygpOworICAgIFJlZlB0cjxBUEk6OkRpY3Rpb25hcnk+IG5vdGlmaWNhdGlvblBlcm1pc3Np
b25zKCk7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
UGFnZUNsaWVudC5oCmluZGV4IDA3ZWYwYjI3ZWU1YzA0ODAxODMzMTg3MWViNzYxY2U5ZThlZTJl
ODEuLjNkYjdlYmVlMjJmM2VjY2JlN2RhMmVjNzZkZDU4YjBjOGMyNmNhZTEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaApAQCAtMTY1LDcgKzE2NSw3IEBAIHB1YmxpYzoKICAg
ICB2aXJ0dWFsIHZvaWQgc2V0Q3Vyc29ySGlkZGVuVW50aWxNb3VzZU1vdmVzKGJvb2wpID0gMDsK
ICAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hhbmdlVmlld3BvcnRQcm9wZXJ0aWVzKGNvbnN0IFdlYkNv
cmU6OlZpZXdwb3J0QXR0cmlidXRlcyYpID0gMDsKIAotICAgIHZpcnR1YWwgdm9pZCByZWdpc3Rl
ckVkaXRDb21tYW5kKFBhc3NSZWZQdHI8V2ViRWRpdENvbW1hbmRQcm94eT4sIFdlYlBhZ2VQcm94
eTo6VW5kb09yUmVkbykgPSAwOworICAgIHZpcnR1YWwgdm9pZCByZWdpc3RlckVkaXRDb21tYW5k
KFJlZjxXZWJFZGl0Q29tbWFuZFByb3h5PiYmLCBXZWJQYWdlUHJveHk6OlVuZG9PclJlZG8pID0g
MDsKICAgICB2aXJ0dWFsIHZvaWQgY2xlYXJBbGxFZGl0Q29tbWFuZHMoKSA9IDA7CiAgICAgdmly
dHVhbCBib29sIGNhblVuZG9SZWRvKFdlYlBhZ2VQcm94eTo6VW5kb09yUmVkbykgPSAwOwogICAg
IHZpcnR1YWwgdm9pZCBleGVjdXRlVW5kb1JlZG8oV2ViUGFnZVByb3h5OjpVbmRvT3JSZWRvKSA9
IDA7CkBAIC0xNzMsMTQgKzE3MywxNCBAQCBwdWJsaWM6CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAg
ICAgdmlydHVhbCB2b2lkIGFjY2Vzc2liaWxpdHlXZWJQcm9jZXNzVG9rZW5SZWNlaXZlZChjb25z
dCBJUEM6OkRhdGFSZWZlcmVuY2UmKSA9IDA7CiAgICAgdmlydHVhbCBib29sIGV4ZWN1dGVTYXZl
ZENvbW1hbmRCeVNlbGVjdG9yKGNvbnN0IFN0cmluZyYgc2VsZWN0b3IpID0gMDsKLSAgICB2aXJ0
dWFsIHZvaWQgc2V0RHJhZ0ltYWdlKGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBjbGllbnRQb3Np
dGlvbiwgUGFzc1JlZlB0cjxTaGFyZWFibGVCaXRtYXA+IGRyYWdJbWFnZSwgV2ViQ29yZTo6RHJh
Z1NvdXJjZUFjdGlvbikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzZXREcmFnSW1hZ2UoY29uc3Qg
V2ViQ29yZTo6SW50UG9pbnQmIGNsaWVudFBvc2l0aW9uLCBSZWY8U2hhcmVhYmxlQml0bWFwPiYm
IGRyYWdJbWFnZSwgV2ViQ29yZTo6RHJhZ1NvdXJjZUFjdGlvbikgPSAwOwogICAgIHZpcnR1YWwg
dm9pZCB1cGRhdGVTZWN1cmVJbnB1dFN0YXRlKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCByZXNl
dFNlY3VyZUlucHV0U3RhdGUoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIG5vdGlmeUlucHV0Q29u
dGV4dEFib3V0RGlzY2FyZGVkQ29tcG9zaXRpb24oKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIG1h
a2VGaXJzdFJlc3BvbmRlcigpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2V0QWNjZWxlcmF0ZWRD
b21wb3NpdGluZ1Jvb3RMYXllcihMYXllck9yVmlldyAqKSA9IDA7CiAgICAgdmlydHVhbCBMYXll
ck9yVmlldyAqYWNjZWxlcmF0ZWRDb21wb3NpdGluZ1Jvb3RMYXllcigpIGNvbnN0ID0gMDsKLSAg
ICB2aXJ0dWFsIFBhc3NSZWZQdHI8Vmlld1NuYXBzaG90PiB0YWtlVmlld1NuYXBzaG90KCkgPSAw
OworICAgIHZpcnR1YWwgUmVmUHRyPFZpZXdTbmFwc2hvdD4gdGFrZVZpZXdTbmFwc2hvdCgpID0g
MDsKICNpZiBFTkFCTEUoTUFDX0dFU1RVUkVfRVZFTlRTKQogICAgIHZpcnR1YWwgdm9pZCBnZXN0
dXJlRXZlbnRXYXNOb3RIYW5kbGVkQnlXZWJDb3JlKGNvbnN0IE5hdGl2ZVdlYkdlc3R1cmVFdmVu
dCYpID0gMDsKICNlbmRpZgpAQCAtMTkxLDEyICsxOTEsOSBAQCBwdWJsaWM6CiAjZW5kaWYKIAog
I2lmIFVTRShBUFBLSVQpCi0gICAgdmlydHVhbCB2b2lkIHNldFByb21pc2VkRGF0YUZvckltYWdl
KGNvbnN0IFN0cmluZyYgcGFzdGVib2FyZE5hbWUsIFBhc3NSZWZQdHI8V2ViQ29yZTo6U2hhcmVk
QnVmZmVyPiBpbWFnZUJ1ZmZlciwgY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgU3RyaW5n
JiBleHRlbnNpb24sIGNvbnN0IFN0cmluZyYgdGl0bGUsCi0gICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiB2aXNpYmxlVXJsLCBQ
YXNzUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gYXJjaGl2ZUJ1ZmZlcikgPSAwOworICAg
IHZpcnR1YWwgdm9pZCBzZXRQcm9taXNlZERhdGFGb3JJbWFnZShjb25zdCBTdHJpbmcmIHBhc3Rl
Ym9hcmROYW1lLCBSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIGltYWdlQnVmZmVyLCBjb25z
dCBTdHJpbmcmIGZpbGVuYW1lLCBjb25zdCBTdHJpbmcmIGV4dGVuc2lvbiwgY29uc3QgU3RyaW5n
JiB0aXRsZSwgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgdmlzaWJsZVVybCwgUmVm
UHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBhcmNoaXZlQnVmZmVyKSA9IDA7CiAjaWYgRU5B
QkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKLSAgICB2aXJ0dWFsIHZvaWQgc2V0UHJvbWlzZWREYXRh
Rm9yQXR0YWNobWVudChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25zdCBTdHJpbmcm
IGZpbGVuYW1lLCBjb25zdCBTdHJpbmcmIGV4dGVuc2lvbiwgY29uc3QgU3RyaW5nJiB0aXRsZSwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU3RyaW5nJiB1
cmwsIGNvbnN0IFN0cmluZyYgdmlzaWJsZVVybCkgPSAwOwotCisgICAgdmlydHVhbCB2b2lkIHNl
dFByb21pc2VkRGF0YUZvckF0dGFjaG1lbnQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwg
Y29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgU3RyaW5nJiBleHRlbnNpb24sIGNvbnN0IFN0
cmluZyYgdGl0bGUsIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIHZpc2libGVVcmwp
ID0gMDsKICNlbmRpZgogI2VuZGlmCiAKQEAgLTMwNSw3ICszMDIsNyBAQCBwdWJsaWM6CiAgICAg
dmlydHVhbCBib29sIGlzQXNzaXN0aW5nTm9kZSgpID0gMDsKICAgICB2aXJ0dWFsIGJvb2wgaW50
ZXJwcmV0S2V5RXZlbnQoY29uc3QgTmF0aXZlV2ViS2V5Ym9hcmRFdmVudCYsIGJvb2wgaXNDaGFy
RXZlbnQpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgcG9zaXRpb25JbmZvcm1hdGlvbkRpZENoYW5n
ZShjb25zdCBJbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbiYpID0gMDsKLSAgICB2aXJ0
dWFsIHZvaWQgc2F2ZUltYWdlVG9MaWJyYXJ5KFBhc3NSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVm
ZmVyPikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBzYXZlSW1hZ2VUb0xpYnJhcnkoUmVmPFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcj4mJikgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBhbGxvd3NCbG9ja1Nl
bGVjdGlvbigpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZGlkVXBkYXRlQmxvY2tTZWxlY3Rpb25X
aXRoVG91Y2godWludDMyX3QgdG91Y2gsIHVpbnQzMl90IGZsYWdzLCBmbG9hdCBncm93VGhyZXNo
b2xkLCBmbG9hdCBzaHJpbmtUaHJlc2hvbGQpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgc2hvd1Bs
YXliYWNrVGFyZ2V0UGlja2VyKGJvb2wgaGFzVmlkZW8sIGNvbnN0IFdlYkNvcmU6OkludFJlY3Qm
IGVsZW1lbnRSZWN0KSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
U3RvcmFnZS9Mb2NhbFN0b3JhZ2VEYXRhYmFzZS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvU3RvcmFnZS9Mb2NhbFN0b3JhZ2VEYXRhYmFzZS5jcHAKaW5kZXggNjMyNjU3YmMwMGJlYjll
YTBmOTZlMDFiMWI5ZmEwMGJlZTliNTkxZS4uNTk4YTNiZDY4OTBlNTNkOTFjMzkwNGM5OTc5ZTkx
ZGFlNDU1MDUxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1N0b3JhZ2Uv
TG9jYWxTdG9yYWdlRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9T
dG9yYWdlL0xvY2FsU3RvcmFnZURhdGFiYXNlLmNwcApAQCAtMzMsNyArMzMsNyBAQAogI2luY2x1
ZGUgPFdlYkNvcmUvU2VjdXJpdHlPcmlnaW4uaD4KICNpbmNsdWRlIDxXZWJDb3JlL1N0b3JhZ2VN
YXAuaD4KICNpbmNsdWRlIDxXZWJDb3JlL1N1ZGRlblRlcm1pbmF0aW9uLmg+Ci0jaW5jbHVkZSA8
d3RmL1Bhc3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3Rm
L1dvcmtRdWV1ZS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0cmluZ0hhc2guaD4KICNpbmNsdWRl
IDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJDb250ZXh0TWVudUxpc3RlbmVyUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJDb250ZXh0TWVudUxpc3RlbmVyUHJveHkuaAppbmRleCAzYTBhZmU0OWE1YjhiNjhl
NjQ4ZWVjNWU0NzM5MzMzMWM5YzkxYzdmLi4yMzMyNGZkZWQwZjNmNTY3YmYxOWYzMWU2OWZhMmRi
NmFmMDk1MmJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4
dE1lbnVMaXN0ZW5lclByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNv
bnRleHRNZW51TGlzdGVuZXJQcm94eS5oCkBAIC0zMCw3ICszMCw2IEBACiAjaW5jbHVkZSAiQVBJ
T2JqZWN0LmgiCiAjaW5jbHVkZSAiV0tBcnJheS5oIgogI2luY2x1ZGUgIldlYkNvbnRleHRNZW51
UHJveHkuaCIKLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQ
dHIuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvV2ViQ29va2llTWFuYWdlclByb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvV2ViQ29va2llTWFuYWdlclByb3h5LmgKaW5kZXggNWIwZjc1NzA2N2I2OWQxNmMzZWVkZmQ5
NDRjNTc2ZDA1NWM4MGE5Ni4uMjdhYTJhYzA3OWU3ZDE4MDk2YzNkNTA2MzQzNGRkNmU5ODc4YmE1
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvb2tpZU1hbmFnZXJQ
cm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJDb29raWVNYW5hZ2VyUHJv
eHkuaApAQCAtMzEsNyArMzEsNiBAQAogI2luY2x1ZGUgIldlYkNvbnRleHRTdXBwbGVtZW50Lmgi
CiAjaW5jbHVkZSAiV2ViQ29va2llTWFuYWdlclByb3h5Q2xpZW50LmgiCiAjaW5jbHVkZSA8V2Vi
Q29yZS9TZXNzaW9uSUQuaD4KLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUg
PHd0Zi9SZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJFZGl0Q29tbWFuZFByb3h5LmNwcCBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9XZWJFZGl0Q29tbWFuZFByb3h5LmNwcAppbmRleCAyNGM2MmZiZWYw
NWRiMzA4NWY3MGRjM2VjNjRjMDQ1OWZmNjkyMTQzLi5hMGM5ZTJjMDA0OTNiOTZjMjAzYjdmZjg4
YWNkYzgyMzM0OTcwNzgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
RWRpdENvbW1hbmRQcm94eS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkVk
aXRDb21tYW5kUHJveHkuY3BwCkBAIC01Niw3ICs1Niw3IEBAIHZvaWQgV2ViRWRpdENvbW1hbmRQ
cm94eTo6dW5hcHBseSgpCiAgICAgICAgIHJldHVybjsKIAogICAgIG1fcGFnZS0+cHJvY2Vzcygp
LnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OlVuYXBwbHlFZGl0Q29tbWFuZChtX2NvbW1hbmRJRCks
IG1fcGFnZS0+cGFnZUlEKCksIElQQzo6U2VuZE9wdGlvbjo6RGlzcGF0Y2hNZXNzYWdlRXZlbldo
ZW5XYWl0aW5nRm9yU3luY1JlcGx5KTsKLSAgICBtX3BhZ2UtPnJlZ2lzdGVyRWRpdENvbW1hbmQo
dGhpcywgV2ViUGFnZVByb3h5OjpSZWRvKTsKKyAgICBtX3BhZ2UtPnJlZ2lzdGVyRWRpdENvbW1h
bmQoKnRoaXMsIFdlYlBhZ2VQcm94eTo6UmVkbyk7CiB9CiAKIHZvaWQgV2ViRWRpdENvbW1hbmRQ
cm94eTo6cmVhcHBseSgpCkBAIC02NSw3ICs2NSw3IEBAIHZvaWQgV2ViRWRpdENvbW1hbmRQcm94
eTo6cmVhcHBseSgpCiAgICAgICAgIHJldHVybjsKIAogICAgIG1fcGFnZS0+cHJvY2VzcygpLnNl
bmQoTWVzc2FnZXM6OldlYlBhZ2U6OlJlYXBwbHlFZGl0Q29tbWFuZChtX2NvbW1hbmRJRCksIG1f
cGFnZS0+cGFnZUlEKCksIElQQzo6U2VuZE9wdGlvbjo6RGlzcGF0Y2hNZXNzYWdlRXZlbldoZW5X
YWl0aW5nRm9yU3luY1JlcGx5KTsKLSAgICBtX3BhZ2UtPnJlZ2lzdGVyRWRpdENvbW1hbmQodGhp
cywgV2ViUGFnZVByb3h5OjpVbmRvKTsKKyAgICBtX3BhZ2UtPnJlZ2lzdGVyRWRpdENvbW1hbmQo
KnRoaXMsIFdlYlBhZ2VQcm94eTo6VW5kbyk7CiB9CiAKIFN0cmluZyBXZWJFZGl0Q29tbWFuZFBy
b3h5OjpuYW1lRm9yRWRpdEFjdGlvbihFZGl0QWN0aW9uIGVkaXRBY3Rpb24pCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViRWRpdENvbW1hbmRQcm94eS5oIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1dlYkVkaXRDb21tYW5kUHJveHkuaAppbmRleCBjMzc1MDAwZjhi
ZWQ0YWQxYzZkNDc2NGRiOWNiMjAwMTQxY2VjY2M3Li4wNzA5MDZmNjA3Zjc0NGQ1MDg3YjM3MzU0
NDE5NzVjMmNhM2NhZDEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
RWRpdENvbW1hbmRQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJFZGl0
Q29tbWFuZFByb3h5LmgKQEAgLTI4LDggKzI4LDggQEAKICNpbmNsdWRlICJBUElPYmplY3QuaCIK
ICNpbmNsdWRlIDxXZWJDb3JlL0VkaXRBY3Rpb24uaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5o
PgotI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQu
aD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViR3JhbW1hckRldGFpbC5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViR3JhbW1hckRldGFpbC5jcHAKaW5kZXggMGZlMWJm
YjMxY2IwODA0MDNmYjNjMmYzODJkMzkzM2IxMjNiOGJkOC4uNmVlNDQxYjExYTIzOTA1ZTMzYzM5
ZDhhOWUwMGQzOTdmOTZmNTJiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L1dlYkdyYW1tYXJEZXRhaWwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJH
cmFtbWFyRGV0YWlsLmNwcApAQCAtMzIsMTQgKzMyLDE0IEBACiAKIG5hbWVzcGFjZSBXZWJLaXQg
ewogCi1QYXNzUmVmUHRyPFdlYkdyYW1tYXJEZXRhaWw+IFdlYkdyYW1tYXJEZXRhaWw6OmNyZWF0
ZShpbnQgbG9jYXRpb24sIGludCBsZW5ndGgsIEFQSTo6QXJyYXkqIGd1ZXNzZXMsIGNvbnN0IFN0
cmluZyYgdXNlckRlc2NyaXB0aW9uKQorUmVmPFdlYkdyYW1tYXJEZXRhaWw+IFdlYkdyYW1tYXJE
ZXRhaWw6OmNyZWF0ZShpbnQgbG9jYXRpb24sIGludCBsZW5ndGgsIEFQSTo6QXJyYXkqIGd1ZXNz
ZXMsIGNvbnN0IFN0cmluZyYgdXNlckRlc2NyaXB0aW9uKQogewotICAgIHJldHVybiBhZG9wdFJl
ZihuZXcgV2ViR3JhbW1hckRldGFpbChsb2NhdGlvbiwgbGVuZ3RoLCBndWVzc2VzLCB1c2VyRGVz
Y3JpcHRpb24pKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBXZWJHcmFtbWFyRGV0YWlsKGxv
Y2F0aW9uLCBsZW5ndGgsIGd1ZXNzZXMsIHVzZXJEZXNjcmlwdGlvbikpOwogfQogCi1QYXNzUmVm
UHRyPFdlYkdyYW1tYXJEZXRhaWw+IFdlYkdyYW1tYXJEZXRhaWw6OmNyZWF0ZShjb25zdCBXZWJD
b3JlOjpHcmFtbWFyRGV0YWlsJiBncmFtbWFyRGV0YWlsKQorUmVmPFdlYkdyYW1tYXJEZXRhaWw+
IFdlYkdyYW1tYXJEZXRhaWw6OmNyZWF0ZShjb25zdCBXZWJDb3JlOjpHcmFtbWFyRGV0YWlsJiBn
cmFtbWFyRGV0YWlsKQogewotICAgIHJldHVybiBhZG9wdFJlZihuZXcgV2ViR3JhbW1hckRldGFp
bChncmFtbWFyRGV0YWlsKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgV2ViR3JhbW1hckRl
dGFpbChncmFtbWFyRGV0YWlsKSk7CiB9CiAKIFdlYkdyYW1tYXJEZXRhaWw6OldlYkdyYW1tYXJE
ZXRhaWwoaW50IGxvY2F0aW9uLCBpbnQgbGVuZ3RoLCBBUEk6OkFycmF5KiBndWVzc2VzLCBjb25z
dCBTdHJpbmcmIHVzZXJEZXNjcmlwdGlvbikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJHcmFtbWFyRGV0YWlsLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
R3JhbW1hckRldGFpbC5oCmluZGV4IDdkMTc3MDU3MDI2MTRlYTA3ZDhiOTQ0MzQ3OTg1Mzc3NTdm
YjM2ZmMuLjI5NmM0MTRlZWUzMjcwMWU2Y2ZlMDIxMjIwMDI1NjYwZGYwMTc1ZTggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJHcmFtbWFyRGV0YWlsLmgKKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkdyYW1tYXJEZXRhaWwuaApAQCAtMzAsMTQgKzMwLDE0
IEBACiAjaW5jbHVkZSAiQVBJT2JqZWN0LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9UZXh0Q2hlY2tl
ckNsaWVudC5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+Ci0jaW5jbHVkZSA8d3RmL1Bhc3NS
ZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogCiBj
bGFzcyBXZWJHcmFtbWFyRGV0YWlsIDogcHVibGljIEFQSTo6T2JqZWN0SW1wbDxBUEk6Ok9iamVj
dDo6VHlwZTo6R3JhbW1hckRldGFpbD4gewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRy
PFdlYkdyYW1tYXJEZXRhaWw+IGNyZWF0ZShpbnQgbG9jYXRpb24sIGludCBsZW5ndGgsIEFQSTo6
QXJyYXkqIGd1ZXNzZXMsIGNvbnN0IFN0cmluZyYgdXNlckRlc2NyaXB0aW9uKTsKLSAgICBzdGF0
aWMgUGFzc1JlZlB0cjxXZWJHcmFtbWFyRGV0YWlsPiBjcmVhdGUoY29uc3QgV2ViQ29yZTo6R3Jh
bW1hckRldGFpbCYpOworICAgIHN0YXRpYyBSZWY8V2ViR3JhbW1hckRldGFpbD4gY3JlYXRlKGlu
dCBsb2NhdGlvbiwgaW50IGxlbmd0aCwgQVBJOjpBcnJheSogZ3Vlc3NlcywgY29uc3QgU3RyaW5n
JiB1c2VyRGVzY3JpcHRpb24pOworICAgIHN0YXRpYyBSZWY8V2ViR3JhbW1hckRldGFpbD4gY3Jl
YXRlKGNvbnN0IFdlYkNvcmU6OkdyYW1tYXJEZXRhaWwmKTsKIAogICAgIGludCBsb2NhdGlvbigp
IGNvbnN0IHsgcmV0dXJuIG1fZ3JhbW1hckRldGFpbC5sb2NhdGlvbjsgfQogICAgIGludCBsZW5n
dGgoKSBjb25zdCB7IHJldHVybiBtX2dyYW1tYXJEZXRhaWwubGVuZ3RoOyB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCmluZGV4IDM3ZTAzMTlkNDFhZTZiMTIzZDdl
YjgwZjgzZjQ2NDBkNjBlNzVjNGUuLmVmYzg3NzMxOTc3NmZiODAwNDI1MjY3MTQzMGFiN2FlYjMx
ZjM5N2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHku
Y3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCkBAIC0y
MjMsNyArMjIzLDcgQEAgcHVibGljOgogICAgIHN0ZDo6dW5pcXVlX3B0cjxSZWNvcmQ+IGNyZWF0
ZVJlY29yZCh1aW50NjRfdCBmcmFtZUlELCBTdHJpbmcgb3JpZ2luSWRlbnRpZmllciwKICAgICAg
ICAgU3RyaW5nIGRhdGFiYXNlTmFtZSwgU3RyaW5nIGRpc3BsYXlOYW1lLCB1aW50NjRfdCBjdXJy
ZW50UXVvdGEsCiAgICAgICAgIHVpbnQ2NF90IGN1cnJlbnRPcmlnaW5Vc2FnZSwgdWludDY0X3Qg
Y3VycmVudERhdGFiYXNlVXNhZ2UsIHVpbnQ2NF90IGV4cGVjdGVkVXNhZ2UsIAotICAgICAgICBQ
YXNzUmVmUHRyPE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkV4Y2VlZGVkRGF0YWJhc2VRdW90YTo6
RGVsYXllZFJlcGx5Pik7CisgICAgICAgIFJlZjxNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpFeGNl
ZWRlZERhdGFiYXNlUXVvdGE6OkRlbGF5ZWRSZXBseT4mJik7CiAKICAgICB2b2lkIGFkZChzdGQ6
OnVuaXF1ZV9wdHI8UmVjb3JkPik7CiAgICAgYm9vbCBhcmVCZWluZ1Byb2Nlc3NlZCgpIGNvbnN0
IHsgcmV0dXJuICEhbV9jdXJyZW50UmVjb3JkOyB9CkBAIC0yNDYsNyArMjQ2LDcgQEAgRXhjZWVk
ZWREYXRhYmFzZVF1b3RhUmVjb3JkcyYgRXhjZWVkZWREYXRhYmFzZVF1b3RhUmVjb3Jkczo6c2lu
Z2xldG9uKCkKIHN0ZDo6dW5pcXVlX3B0cjxFeGNlZWRlZERhdGFiYXNlUXVvdGFSZWNvcmRzOjpS
ZWNvcmQ+IEV4Y2VlZGVkRGF0YWJhc2VRdW90YVJlY29yZHM6OmNyZWF0ZVJlY29yZCgKICAgICB1
aW50NjRfdCBmcmFtZUlELCBTdHJpbmcgb3JpZ2luSWRlbnRpZmllciwgU3RyaW5nIGRhdGFiYXNl
TmFtZSwgU3RyaW5nIGRpc3BsYXlOYW1lLAogICAgIHVpbnQ2NF90IGN1cnJlbnRRdW90YSwgdWlu
dDY0X3QgY3VycmVudE9yaWdpblVzYWdlLCB1aW50NjRfdCBjdXJyZW50RGF0YWJhc2VVc2FnZSwK
LSAgICB1aW50NjRfdCBleHBlY3RlZFVzYWdlLCBQYXNzUmVmUHRyPE1lc3NhZ2VzOjpXZWJQYWdl
UHJveHk6OkV4Y2VlZGVkRGF0YWJhc2VRdW90YTo6RGVsYXllZFJlcGx5PiByZXBseSkKKyAgICB1
aW50NjRfdCBleHBlY3RlZFVzYWdlLCBSZWY8TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RXhjZWVk
ZWREYXRhYmFzZVF1b3RhOjpEZWxheWVkUmVwbHk+JiYgcmVwbHkpCiB7CiAgICAgYXV0byByZWNv
cmQgPSBzdGQ6Om1ha2VfdW5pcXVlPFJlY29yZD4oKTsKICAgICByZWNvcmQtPmZyYW1lSUQgPSBm
cmFtZUlEOwpAQCAtMjU3LDcgKzI1Nyw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxFeGNlZWRlZERhdGFi
YXNlUXVvdGFSZWNvcmRzOjpSZWNvcmQ+IEV4Y2VlZGVkRGF0YWJhc2VRdW90YVJlY29yCiAgICAg
cmVjb3JkLT5jdXJyZW50T3JpZ2luVXNhZ2UgPSBjdXJyZW50T3JpZ2luVXNhZ2U7CiAgICAgcmVj
b3JkLT5jdXJyZW50RGF0YWJhc2VVc2FnZSA9IGN1cnJlbnREYXRhYmFzZVVzYWdlOwogICAgIHJl
Y29yZC0+ZXhwZWN0ZWRVc2FnZSA9IGV4cGVjdGVkVXNhZ2U7Ci0gICAgcmVjb3JkLT5yZXBseSA9
IHJlcGx5OworICAgIHJlY29yZC0+cmVwbHkgPSBXVEZNb3ZlKHJlcGx5KTsKICAgICByZXR1cm4g
cmVjb3JkOwogfQogCkBAIC00NzU4LDkgKzQ3NTgsOSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6Y2hh
bmdlU3BlbGxpbmdUb1dvcmQoY29uc3QgU3RyaW5nJiB3b3JkKQogICAgIG1fcHJvY2Vzcy0+c2Vu
ZChNZXNzYWdlczo6V2ViUGFnZTo6Q2hhbmdlU3BlbGxpbmdUb1dvcmQod29yZCksIG1fcGFnZUlE
KTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OnJlZ2lzdGVyRWRpdENvbW1hbmQoUGFzc1JlZlB0
cjxXZWJFZGl0Q29tbWFuZFByb3h5PiBjb21tYW5kUHJveHksIFVuZG9PclJlZG8gdW5kb09yUmVk
bykKK3ZvaWQgV2ViUGFnZVByb3h5OjpyZWdpc3RlckVkaXRDb21tYW5kKFJlZjxXZWJFZGl0Q29t
bWFuZFByb3h5PiYmIGNvbW1hbmRQcm94eSwgVW5kb09yUmVkbyB1bmRvT3JSZWRvKQogewotICAg
IG1fcGFnZUNsaWVudC5yZWdpc3RlckVkaXRDb21tYW5kKGNvbW1hbmRQcm94eSwgdW5kb09yUmVk
byk7CisgICAgbV9wYWdlQ2xpZW50LnJlZ2lzdGVyRWRpdENvbW1hbmQoV1RGTW92ZShjb21tYW5k
UHJveHkpLCB1bmRvT3JSZWRvKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmFkZEVkaXRDb21t
YW5kKFdlYkVkaXRDb21tYW5kUHJveHkqIGNvbW1hbmQpCkBAIC01NjcxLDI2ICs1NjcxLDIzIEBA
IHZvaWQgV2ViUGFnZVByb3h5OjpkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UodWlu
dDY0X3QgZnJhbWVJRCwgY29uc3QgQXV0CiAgICAgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlUHJveHkoZnJhbWVJRCwgQXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eTo6Y3JlYXRl
KGNvcmVDaGFsbGVuZ2UsIGNoYWxsZW5nZUlELCBtX3Byb2Nlc3MtPmNvbm5lY3Rpb24oKSkpOwog
fQogCi12b2lkIFdlYlBhZ2VQcm94eTo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
UHJveHkodWludDY0X3QgZnJhbWVJRCwgUGFzc1JlZlB0cjxBdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZVByb3h5PiBwcnBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSkKK3ZvaWQgV2ViUGFnZVByb3h5Ojpk
aWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eSh1aW50NjRfdCBmcmFtZUlELCBS
ZWY8QXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eT4mJiBhdXRoZW50aWNhdGlvbkNoYWxsZW5n
ZSkKIHsKLSAgICBBU1NFUlQocHJwQXV0aGVudGljYXRpb25DaGFsbGVuZ2UpOwotCiAgICAgV2Vi
RnJhbWVQcm94eSogZnJhbWUgPSBtX3Byb2Nlc3MtPndlYkZyYW1lKGZyYW1lSUQpOwogICAgIE1F
U1NBR0VfQ0hFQ0soZnJhbWUpOwogCi0gICAgUmVmUHRyPEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
UHJveHk+IGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlID0gcHJwQXV0aGVudGljYXRpb25DaGFsbGVu
Z2U7CiAgICAgaWYgKG1fbmF2aWdhdGlvbkNsaWVudCkKLSAgICAgICAgbV9uYXZpZ2F0aW9uQ2xp
ZW50LT5kaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoKnRoaXMsIGF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlLmdldCgpKTsKKyAgICAgICAgbV9uYXZpZ2F0aW9uQ2xpZW50LT5kaWRSZWNl
aXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoKnRoaXMsIGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
LnB0cigpKTsKICAgICBlbHNlCi0gICAgICAgIG1fbG9hZGVyQ2xpZW50LT5kaWRSZWNlaXZlQXV0
aGVudGljYXRpb25DaGFsbGVuZ2VJbkZyYW1lKCp0aGlzLCAqZnJhbWUsIGF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlLmdldCgpKTsKKyAgICAgICAgbV9sb2FkZXJDbGllbnQtPmRpZFJlY2VpdmVBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZUluRnJhbWUoKnRoaXMsICpmcmFtZSwgYXV0aGVudGljYXRpb25D
aGFsbGVuZ2UucHRyKCkpOwogfQogCi12b2lkIFdlYlBhZ2VQcm94eTo6ZXhjZWVkZWREYXRhYmFz
ZVF1b3RhKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFN0cmluZyYgb3JpZ2luSWRlbnRpZmllciwg
Y29uc3QgU3RyaW5nJiBkYXRhYmFzZU5hbWUsIGNvbnN0IFN0cmluZyYgZGlzcGxheU5hbWUsIHVp
bnQ2NF90IGN1cnJlbnRRdW90YSwgdWludDY0X3QgY3VycmVudE9yaWdpblVzYWdlLCB1aW50NjRf
dCBjdXJyZW50RGF0YWJhc2VVc2FnZSwgdWludDY0X3QgZXhwZWN0ZWRVc2FnZSwgUGFzc1JlZlB0
cjxNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpFeGNlZWRlZERhdGFiYXNlUXVvdGE6OkRlbGF5ZWRS
ZXBseT4gcmVwbHkpCit2b2lkIFdlYlBhZ2VQcm94eTo6ZXhjZWVkZWREYXRhYmFzZVF1b3RhKHVp
bnQ2NF90IGZyYW1lSUQsIGNvbnN0IFN0cmluZyYgb3JpZ2luSWRlbnRpZmllciwgY29uc3QgU3Ry
aW5nJiBkYXRhYmFzZU5hbWUsIGNvbnN0IFN0cmluZyYgZGlzcGxheU5hbWUsIHVpbnQ2NF90IGN1
cnJlbnRRdW90YSwgdWludDY0X3QgY3VycmVudE9yaWdpblVzYWdlLCB1aW50NjRfdCBjdXJyZW50
RGF0YWJhc2VVc2FnZSwgdWludDY0X3QgZXhwZWN0ZWRVc2FnZSwgUmVmPE1lc3NhZ2VzOjpXZWJQ
YWdlUHJveHk6OkV4Y2VlZGVkRGF0YWJhc2VRdW90YTo6RGVsYXllZFJlcGx5PiYmIHJlcGx5KQog
ewogICAgIEV4Y2VlZGVkRGF0YWJhc2VRdW90YVJlY29yZHMmIHJlY29yZHMgPSBFeGNlZWRlZERh
dGFiYXNlUXVvdGFSZWNvcmRzOjpzaW5nbGV0b24oKTsKICAgICBzdGQ6OnVuaXF1ZV9wdHI8RXhj
ZWVkZWREYXRhYmFzZVF1b3RhUmVjb3Jkczo6UmVjb3JkPiBuZXdSZWNvcmQgPSByZWNvcmRzLmNy
ZWF0ZVJlY29yZChmcmFtZUlELAogICAgICAgICBvcmlnaW5JZGVudGlmaWVyLCBkYXRhYmFzZU5h
bWUsIGRpc3BsYXlOYW1lLCBjdXJyZW50UXVvdGEsIGN1cnJlbnRPcmlnaW5Vc2FnZSwKLSAgICAg
ICAgY3VycmVudERhdGFiYXNlVXNhZ2UsIGV4cGVjdGVkVXNhZ2UsIHJlcGx5KTsKKyAgICAgICAg
Y3VycmVudERhdGFiYXNlVXNhZ2UsIGV4cGVjdGVkVXNhZ2UsIFdURk1vdmUocmVwbHkpKTsKICAg
ICByZWNvcmRzLmFkZChXVEZNb3ZlKG5ld1JlY29yZCkpOwogCiAgICAgaWYgKHJlY29yZHMuYXJl
QmVpbmdQcm9jZXNzZWQoKSkKQEAgLTU3MTIsMTAgKzU3MDksMTAgQEAgdm9pZCBXZWJQYWdlUHJv
eHk6OmV4Y2VlZGVkRGF0YWJhc2VRdW90YSh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBTdHJpbmcm
IG9yaWdpbkkKICAgICB9CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpyZWFjaGVkQXBwbGljYXRp
b25DYWNoZU9yaWdpblF1b3RhKGNvbnN0IFN0cmluZyYgb3JpZ2luSWRlbnRpZmllciwgdWludDY0
X3QgY3VycmVudFF1b3RhLCB1aW50NjRfdCB0b3RhbEJ5dGVzTmVlZGVkLCBQYXNzUmVmUHRyPE1l
c3NhZ2VzOjpXZWJQYWdlUHJveHk6OlJlYWNoZWRBcHBsaWNhdGlvbkNhY2hlT3JpZ2luUXVvdGE6
OkRlbGF5ZWRSZXBseT4gcmVwbHkpCit2b2lkIFdlYlBhZ2VQcm94eTo6cmVhY2hlZEFwcGxpY2F0
aW9uQ2FjaGVPcmlnaW5RdW90YShjb25zdCBTdHJpbmcmIG9yaWdpbklkZW50aWZpZXIsIHVpbnQ2
NF90IGN1cnJlbnRRdW90YSwgdWludDY0X3QgdG90YWxCeXRlc05lZWRlZCwgUmVmPE1lc3NhZ2Vz
OjpXZWJQYWdlUHJveHk6OlJlYWNoZWRBcHBsaWNhdGlvbkNhY2hlT3JpZ2luUXVvdGE6OkRlbGF5
ZWRSZXBseT4mJiByZXBseSkKIHsKICAgICBSZWY8U2VjdXJpdHlPcmlnaW4+IHNlY3VyaXR5T3Jp
Z2luID0gU2VjdXJpdHlPcmlnaW5EYXRhOjpmcm9tRGF0YWJhc2VJZGVudGlmaWVyKG9yaWdpbklk
ZW50aWZpZXIpLT5zZWN1cml0eU9yaWdpbigpOwotICAgIG1fdWlDbGllbnQtPnJlYWNoZWRBcHBs
aWNhdGlvbkNhY2hlT3JpZ2luUXVvdGEodGhpcywgc2VjdXJpdHlPcmlnaW4uZ2V0KCksIGN1cnJl
bnRRdW90YSwgdG90YWxCeXRlc05lZWRlZCwgW3JlcGx5XSh1bnNpZ25lZCBsb25nIGxvbmcgbmV3
UXVvdGEpIHsgcmVwbHktPnNlbmQobmV3UXVvdGEpOyB9KTsKKyAgICBtX3VpQ2xpZW50LT5yZWFj
aGVkQXBwbGljYXRpb25DYWNoZU9yaWdpblF1b3RhKHRoaXMsIHNlY3VyaXR5T3JpZ2luLmdldCgp
LCBjdXJyZW50UXVvdGEsIHRvdGFsQnl0ZXNOZWVkZWQsIFtyZXBseSA9IFdURk1vdmUocmVwbHkp
XSh1bnNpZ25lZCBsb25nIGxvbmcgbmV3UXVvdGEpIHsgcmVwbHktPnNlbmQobmV3UXVvdGEpOyB9
KTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OnJlcXVlc3RHZW9sb2NhdGlvblBlcm1pc3Npb25G
b3JGcmFtZSh1aW50NjRfdCBnZW9sb2NhdGlvbklELCB1aW50NjRfdCBmcmFtZUlELCBTdHJpbmcg
b3JpZ2luSWRlbnRpZmllcikKQEAgLTYxODUsNyArNjE4Miw3IEBAIHZvaWQgV2ViUGFnZVByb3h5
OjpzZXRFZGl0YWJsZUVsZW1lbnRJc0ZvY3VzZWQoYm9vbCBlZGl0YWJsZUVsZW1lbnRJc0ZvY3Vz
ZWQpCiAjZW5kaWYgLy8gUExBVEZPUk0oTUFDKQogCiAjaWYgUExBVEZPUk0oQ09DT0EpCi1QYXNz
UmVmUHRyPFZpZXdTbmFwc2hvdD4gV2ViUGFnZVByb3h5Ojp0YWtlVmlld1NuYXBzaG90KCkKK1Jl
ZlB0cjxWaWV3U25hcHNob3Q+IFdlYlBhZ2VQcm94eTo6dGFrZVZpZXdTbmFwc2hvdCgpCiB7CiAg
ICAgcmV0dXJuIG1fcGFnZUNsaWVudC50YWtlVmlld1NuYXBzaG90KCk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmgKaW5kZXggMzViZTAxYTU3NzQxMTJiNDQ2MGE1Yjhk
MGNmZTgwZjQ4YTYyM2EwNi4uZDQ3YzBjOWMzNjgzYTQ4NjBlMWM1MTg0NjAxYWY0ZjcwNDU5OWEy
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuaApAQCAtODQsNyArODQs
NiBAQAogI2luY2x1ZGUgPG1lbW9yeT4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1
ZGUgPHd0Zi9IYXNoU2V0Lmg+Ci0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRl
IDx3dGYvUmVmLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0
b3IuaD4KQEAgLTg2MCw3ICs4NTksNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBhZGRFZGl0Q29tbWFu
ZChXZWJFZGl0Q29tbWFuZFByb3h5Kik7CiAgICAgdm9pZCByZW1vdmVFZGl0Q29tbWFuZChXZWJF
ZGl0Q29tbWFuZFByb3h5Kik7CiAgICAgYm9vbCBpc1ZhbGlkRWRpdENvbW1hbmQoV2ViRWRpdENv
bW1hbmRQcm94eSopOwotICAgIHZvaWQgcmVnaXN0ZXJFZGl0Q29tbWFuZChQYXNzUmVmUHRyPFdl
YkVkaXRDb21tYW5kUHJveHk+LCBVbmRvT3JSZWRvKTsKKyAgICB2b2lkIHJlZ2lzdGVyRWRpdENv
bW1hbmQoUmVmPFdlYkVkaXRDb21tYW5kUHJveHk+JiYsIFVuZG9PclJlZG8pOwogCiAjaWYgUExB
VEZPUk0oQ09DT0EpCiAgICAgdm9pZCByZWdpc3RlcktleXByZXNzQ29tbWFuZE5hbWUoY29uc3Qg
U3RyaW5nJiBuYW1lKSB7IG1fa25vd25LZXlwcmVzc0NvbW1hbmROYW1lcy5hZGQobmFtZSk7IH0K
QEAgLTEwMTMsNyArMTAxMiw3IEBAIHB1YmxpYzoKICAgICBib29sIGF1dG9TaXppbmdTaG91bGRF
eHBhbmRUb1ZpZXdIZWlnaHQoKSBjb25zdCB7IHJldHVybiBtX2F1dG9TaXppbmdTaG91bGRFeHBh
bmRUb1ZpZXdIZWlnaHQ7IH0KICAgICB2b2lkIHNldEF1dG9TaXppbmdTaG91bGRFeHBhbmRUb1Zp
ZXdIZWlnaHQoYm9vbCk7CiAKLSAgICB2b2lkIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxs
ZW5nZVByb3h5KHVpbnQ2NF90IGZyYW1lSUQsIFBhc3NSZWZQdHI8QXV0aGVudGljYXRpb25DaGFs
bGVuZ2VQcm94eT4pOworICAgIHZvaWQgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
UHJveHkodWludDY0X3QgZnJhbWVJRCwgUmVmPEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHk+
JiYpOwogCiAgICAgaW50NjRfdCBzcGVsbERvY3VtZW50VGFnKCk7CiAgICAgdm9pZCBkaWRGaW5p
c2hDaGVja2luZ1RleHQodWludDY0X3QgcmVxdWVzdElELCBjb25zdCBWZWN0b3I8V2ViQ29yZTo6
VGV4dENoZWNraW5nUmVzdWx0PiYpOwpAQCAtMTAzOCw3ICsxMDM3LDcgQEAgcHVibGljOgogICAg
IHZvaWQgcmVjb3JkTmF2aWdhdGlvblNuYXBzaG90KFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0mKTsK
IAogI2lmIFBMQVRGT1JNKENPQ09BKQotICAgIFBhc3NSZWZQdHI8Vmlld1NuYXBzaG90PiB0YWtl
Vmlld1NuYXBzaG90KCk7CisgICAgUmVmUHRyPFZpZXdTbmFwc2hvdD4gdGFrZVZpZXdTbmFwc2hv
dCgpOwogI2VuZGlmCiAKICNpZiBFTkFCTEUoU1VCVExFX0NSWVBUTykKQEAgLTEzMTIsOCArMTMx
MSw4IEBAIHByaXZhdGU6CiAgICAgdm9pZCBwYWdlRGlkU2Nyb2xsKCk7CiAgICAgdm9pZCBydW5P
cGVuUGFuZWwodWludDY0X3QgZnJhbWVJRCwgY29uc3QgV2ViQ29yZTo6U2VjdXJpdHlPcmlnaW5E
YXRhJiwgY29uc3QgV2ViQ29yZTo6RmlsZUNob29zZXJTZXR0aW5ncyYpOwogICAgIHZvaWQgcHJp
bnRGcmFtZSh1aW50NjRfdCBmcmFtZUlEKTsKLSAgICB2b2lkIGV4Y2VlZGVkRGF0YWJhc2VRdW90
YSh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBTdHJpbmcmIG9yaWdpbklkZW50aWZpZXIsIGNvbnN0
IFN0cmluZyYgZGF0YWJhc2VOYW1lLCBjb25zdCBTdHJpbmcmIGRpc3BsYXlOYW1lLCB1aW50NjRf
dCBjdXJyZW50UXVvdGEsIHVpbnQ2NF90IGN1cnJlbnRPcmlnaW5Vc2FnZSwgdWludDY0X3QgY3Vy
cmVudERhdGFiYXNlVXNhZ2UsIHVpbnQ2NF90IGV4cGVjdGVkVXNhZ2UsIFBhc3NSZWZQdHI8TWVz
c2FnZXM6OldlYlBhZ2VQcm94eTo6RXhjZWVkZWREYXRhYmFzZVF1b3RhOjpEZWxheWVkUmVwbHk+
KTsKLSAgICB2b2lkIHJlYWNoZWRBcHBsaWNhdGlvbkNhY2hlT3JpZ2luUXVvdGEoY29uc3QgU3Ry
aW5nJiBvcmlnaW5JZGVudGlmaWVyLCB1aW50NjRfdCBjdXJyZW50UXVvdGEsIHVpbnQ2NF90IHRv
dGFsQnl0ZXNOZWVkZWQsIFBhc3NSZWZQdHI8TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6UmVhY2hl
ZEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5RdW90YTo6RGVsYXllZFJlcGx5Pik7CisgICAgdm9pZCBl
eGNlZWRlZERhdGFiYXNlUXVvdGEodWludDY0X3QgZnJhbWVJRCwgY29uc3QgU3RyaW5nJiBvcmln
aW5JZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGRhdGFiYXNlTmFtZSwgY29uc3QgU3RyaW5nJiBk
aXNwbGF5TmFtZSwgdWludDY0X3QgY3VycmVudFF1b3RhLCB1aW50NjRfdCBjdXJyZW50T3JpZ2lu
VXNhZ2UsIHVpbnQ2NF90IGN1cnJlbnREYXRhYmFzZVVzYWdlLCB1aW50NjRfdCBleHBlY3RlZFVz
YWdlLCBSZWY8TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RXhjZWVkZWREYXRhYmFzZVF1b3RhOjpE
ZWxheWVkUmVwbHk+JiYpOworICAgIHZvaWQgcmVhY2hlZEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5R
dW90YShjb25zdCBTdHJpbmcmIG9yaWdpbklkZW50aWZpZXIsIHVpbnQ2NF90IGN1cnJlbnRRdW90
YSwgdWludDY0X3QgdG90YWxCeXRlc05lZWRlZCwgUmVmPE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6
OlJlYWNoZWRBcHBsaWNhdGlvbkNhY2hlT3JpZ2luUXVvdGE6OkRlbGF5ZWRSZXBseT4mJik7CiAg
ICAgdm9pZCByZXF1ZXN0R2VvbG9jYXRpb25QZXJtaXNzaW9uRm9yRnJhbWUodWludDY0X3QgZ2Vv
bG9jYXRpb25JRCwgdWludDY0X3QgZnJhbWVJRCwgU3RyaW5nIG9yaWdpbklkZW50aWZpZXIpOwog
CiAjaWYgRU5BQkxFKE1FRElBX1NUUkVBTSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
UHJvY2Vzc1Bvb2wuY3BwCmluZGV4IDFjMGIwZDdlOWMwYmI0ZDM2YWQ2YmUxOGEyMmJkNDE5ODZl
NDUxZDYuLjMyODEwOWYxNzVmZWFhMjBjNjcwMWFhODU0YmQ3NzM0N2IwM2U0OWMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5jcHAKKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcApAQCAtMTU0Miw3ICsxNTQy
LDcgQEAgdm9pZCBXZWJQcm9jZXNzUG9vbDo6cGx1Z0luRGlkUmVjZWl2ZVVzZXJJbnRlcmFjdGlv
bih1bnNpZ25lZCBwbHVnSW5PcmlnaW5IYXNoLAogICAgIG1fcGx1Z0luQXV0b1N0YXJ0UHJvdmlk
ZXIuZGlkUmVjZWl2ZVVzZXJJbnRlcmFjdGlvbihwbHVnSW5PcmlnaW5IYXNoLCBzZXNzaW9uSUQp
OwogfQogCi1QYXNzUmVmUHRyPEFQSTo6RGljdGlvbmFyeT4gV2ViUHJvY2Vzc1Bvb2w6OnBsdWdJ
bkF1dG9TdGFydE9yaWdpbkhhc2hlcygpIGNvbnN0CitSZWY8QVBJOjpEaWN0aW9uYXJ5PiBXZWJQ
cm9jZXNzUG9vbDo6cGx1Z0luQXV0b1N0YXJ0T3JpZ2luSGFzaGVzKCkgY29uc3QKIHsKICAgICBy
ZXR1cm4gbV9wbHVnSW5BdXRvU3RhcnRQcm92aWRlci5hdXRvU3RhcnRPcmlnaW5zVGFibGVDb3B5
KCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bv
b2wuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5oCmluZGV4IGIy
NDJhNjM3OTI4MDJjYmEwOWViMjk5MzZjODQyOTlmNmVhZmQ0OTMuLjczOWIzOTcwMTUwOTc1MjI0
NzExMWZlOWEzYTQyNjA3NzAzYzAxZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9XZWJQcm9jZXNzUG9vbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQ
cm9jZXNzUG9vbC5oCkBAIC00OSw3ICs0OSw2IEBACiAjaW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4K
ICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoU2V0Lmg+Ci0jaW5j
bHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlci5oPgogI2lu
Y2x1ZGUgPHd0Zi9SZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CkBA
IC0xODUsNyArMTg0LDcgQEAgcHVibGljOgogICAgIERvd25sb2FkUHJveHkqIGRvd25sb2FkKFdl
YlBhZ2VQcm94eSogaW5pdGlhdGluZ1BhZ2UsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVz
dCYsIGNvbnN0IFN0cmluZyYgc3VnZ2VzdGVkRmlsZW5hbWUgPSB7IH0pOwogICAgIERvd25sb2Fk
UHJveHkqIHJlc3VtZURvd25sb2FkKGNvbnN0IEFQSTo6RGF0YSogcmVzdW1lRGF0YSwgY29uc3Qg
U3RyaW5nJiBwYXRoKTsKIAotICAgIHZvaWQgc2V0SW5qZWN0ZWRCdW5kbGVJbml0aWFsaXphdGlv
blVzZXJEYXRhKFBhc3NSZWZQdHI8QVBJOjpPYmplY3Q+IHVzZXJEYXRhKSB7IG1faW5qZWN0ZWRC
dW5kbGVJbml0aWFsaXphdGlvblVzZXJEYXRhID0gdXNlckRhdGE7IH0KKyAgICB2b2lkIHNldElu
amVjdGVkQnVuZGxlSW5pdGlhbGl6YXRpb25Vc2VyRGF0YShSZWZQdHI8QVBJOjpPYmplY3Q+JiYg
dXNlckRhdGEpIHsgbV9pbmplY3RlZEJ1bmRsZUluaXRpYWxpemF0aW9uVXNlckRhdGEgPSBXVEZN
b3ZlKHVzZXJEYXRhKTsgfQogCiAgICAgdm9pZCBwb3N0TWVzc2FnZVRvSW5qZWN0ZWRCdW5kbGUo
Y29uc3QgU3RyaW5nJiwgQVBJOjpPYmplY3QqKTsKIApAQCAtMzA2LDcgKzMwNSw3IEBAIHB1Ymxp
YzoKIAogICAgIHZvaWQgdGV4dENoZWNrZXJTdGF0ZUNoYW5nZWQoKTsKIAotICAgIFBhc3NSZWZQ
dHI8QVBJOjpEaWN0aW9uYXJ5PiBwbHVnSW5BdXRvU3RhcnRPcmlnaW5IYXNoZXMoKSBjb25zdDsK
KyAgICBSZWY8QVBJOjpEaWN0aW9uYXJ5PiBwbHVnSW5BdXRvU3RhcnRPcmlnaW5IYXNoZXMoKSBj
b25zdDsKICAgICB2b2lkIHNldFBsdWdJbkF1dG9TdGFydE9yaWdpbkhhc2hlcyhBUEk6OkRpY3Rp
b25hcnkmKTsKICAgICB2b2lkIHNldFBsdWdJbkF1dG9TdGFydE9yaWdpbnMoQVBJOjpBcnJheSYp
OwogICAgIHZvaWQgc2V0UGx1Z0luQXV0b1N0YXJ0T3JpZ2luc0ZpbHRlcmluZ091dEVudHJpZXNB
ZGRlZEFmdGVyVGltZShBUEk6OkRpY3Rpb25hcnkmLCBkb3VibGUgdGltZSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmggYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Byb3h5LmgKaW5kZXggYTIxY2UwNGE2YjlkMGRmMjU2
ZmYxNzliMTg0ZDE4ODhlYTk2NTJiZC4uNDE1ODJhNzliZTM5MmY1MDM4YjgzYTc3ZWE3MTNmM2Fj
OTZkMzRjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQ
cm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaApA
QCAtNDMsOCArNDMsOCBAQAogI2luY2x1ZGUgPG1lbW9yeT4KICNpbmNsdWRlIDx3dGYvRm9yd2Fy
ZC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+Ci0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIu
aD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4K
IAogbmFtZXNwYWNlIEFQSSB7CiBjbGFzcyBQYWdlQ29uZmlndXJhdGlvbjsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MuaCBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MuaAppbmRleCA4YjhlYzhj
MGQ3NTVjZDA5MjI2NDVjZTBhYjJlMDMzZTllNTk0YTRjLi43ZmYwNjA4NzY2OTdkMmRhMTBjZTZh
N2FkMmRiNGJkMGYyZDVhZmI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
aW9zL1BhZ2VDbGllbnRJbXBsSU9TLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lv
cy9QYWdlQ2xpZW50SW1wbElPUy5oCkBAIC03MywxMyArNzMsMTMgQEAgcHJpdmF0ZToKICAgICB2
b2lkIHNldEN1cnNvcihjb25zdCBXZWJDb3JlOjpDdXJzb3ImKSBvdmVycmlkZTsKICAgICB2b2lk
IHNldEN1cnNvckhpZGRlblVudGlsTW91c2VNb3Zlcyhib29sKSBvdmVycmlkZTsKICAgICB2b2lk
IGRpZENoYW5nZVZpZXdwb3J0UHJvcGVydGllcyhjb25zdCBXZWJDb3JlOjpWaWV3cG9ydEF0dHJp
YnV0ZXMmKSBvdmVycmlkZTsKLSAgICB2b2lkIHJlZ2lzdGVyRWRpdENvbW1hbmQoUGFzc1JlZlB0
cjxXZWJFZGl0Q29tbWFuZFByb3h5PiwgV2ViUGFnZVByb3h5OjpVbmRvT3JSZWRvKSBvdmVycmlk
ZTsKKyAgICB2b2lkIHJlZ2lzdGVyRWRpdENvbW1hbmQoUmVmPFdlYkVkaXRDb21tYW5kUHJveHk+
JiYsIFdlYlBhZ2VQcm94eTo6VW5kb09yUmVkbykgb3ZlcnJpZGU7CiAgICAgdm9pZCBjbGVhckFs
bEVkaXRDb21tYW5kcygpIG92ZXJyaWRlOwogICAgIGJvb2wgY2FuVW5kb1JlZG8oV2ViUGFnZVBy
b3h5OjpVbmRvT3JSZWRvKSBvdmVycmlkZTsKICAgICB2b2lkIGV4ZWN1dGVVbmRvUmVkbyhXZWJQ
YWdlUHJveHk6OlVuZG9PclJlZG8pIG92ZXJyaWRlOwogICAgIHZvaWQgYWNjZXNzaWJpbGl0eVdl
YlByb2Nlc3NUb2tlblJlY2VpdmVkKGNvbnN0IElQQzo6RGF0YVJlZmVyZW5jZSYpIG92ZXJyaWRl
OwogICAgIGJvb2wgZXhlY3V0ZVNhdmVkQ29tbWFuZEJ5U2VsZWN0b3IoY29uc3QgU3RyaW5nJiBz
ZWxlY3Rvcikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBzZXREcmFnSW1hZ2UoY29uc3QgV2ViQ29yZTo6
SW50UG9pbnQmIGNsaWVudFBvc2l0aW9uLCBQYXNzUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gZHJh
Z0ltYWdlLCBXZWJDb3JlOjpEcmFnU291cmNlQWN0aW9uKSBvdmVycmlkZTsKKyAgICB2b2lkIHNl
dERyYWdJbWFnZShjb25zdCBXZWJDb3JlOjpJbnRQb2ludCYgY2xpZW50UG9zaXRpb24sIFJlZjxT
aGFyZWFibGVCaXRtYXA+JiYgZHJhZ0ltYWdlLCBXZWJDb3JlOjpEcmFnU291cmNlQWN0aW9uKSBv
dmVycmlkZTsKICAgICB2b2lkIHVwZGF0ZVNlY3VyZUlucHV0U3RhdGUoKSBvdmVycmlkZTsKICAg
ICB2b2lkIHJlc2V0U2VjdXJlSW5wdXRTdGF0ZSgpIG92ZXJyaWRlOwogICAgIHZvaWQgbm90aWZ5
SW5wdXRDb250ZXh0QWJvdXREaXNjYXJkZWRDb21wb3NpdGlvbigpIG92ZXJyaWRlOwpAQCAtMTEx
LDcgKzExMSw3IEBAIHByaXZhdGU6CiAgICAgTGF5ZXJPclZpZXcgKmFjY2VsZXJhdGVkQ29tcG9z
aXRpbmdSb290TGF5ZXIoKSBjb25zdCBvdmVycmlkZTsKICAgICBMYXllckhvc3RpbmdNb2RlIHZp
ZXdMYXllckhvc3RpbmdNb2RlKCkgb3ZlcnJpZGUgeyByZXR1cm4gTGF5ZXJIb3N0aW5nTW9kZTo6
T3V0T2ZQcm9jZXNzOyB9CiAKLSAgICBQYXNzUmVmUHRyPFZpZXdTbmFwc2hvdD4gdGFrZVZpZXdT
bmFwc2hvdCgpIG92ZXJyaWRlOworICAgIFJlZlB0cjxWaWV3U25hcHNob3Q+IHRha2VWaWV3U25h
cHNob3QoKSBvdmVycmlkZTsKICAgICB2b2lkIHdoZWVsRXZlbnRXYXNOb3RIYW5kbGVkQnlXZWJD
b3JlKGNvbnN0IE5hdGl2ZVdlYldoZWVsRXZlbnQmKSBvdmVycmlkZTsKIAogICAgIHZvaWQgY29t
bWl0UG90ZW50aWFsVGFwRmFpbGVkKCkgb3ZlcnJpZGU7CkBAIC0xMzEsNyArMTMxLDcgQEAgcHJp
dmF0ZToKICAgICB2b2lkIHNlbGVjdGlvbkRpZENoYW5nZSgpIG92ZXJyaWRlOwogICAgIGJvb2wg
aW50ZXJwcmV0S2V5RXZlbnQoY29uc3QgTmF0aXZlV2ViS2V5Ym9hcmRFdmVudCYsIGJvb2wgaXND
aGFyRXZlbnQpIG92ZXJyaWRlOwogICAgIHZvaWQgcG9zaXRpb25JbmZvcm1hdGlvbkRpZENoYW5n
ZShjb25zdCBJbnRlcmFjdGlvbkluZm9ybWF0aW9uQXRQb3NpdGlvbiYpIG92ZXJyaWRlOwotICAg
IHZvaWQgc2F2ZUltYWdlVG9MaWJyYXJ5KFBhc3NSZWZQdHI8V2ViQ29yZTo6U2hhcmVkQnVmZmVy
Pikgb3ZlcnJpZGU7CisgICAgdm9pZCBzYXZlSW1hZ2VUb0xpYnJhcnkoUmVmPFdlYkNvcmU6OlNo
YXJlZEJ1ZmZlcj4mJikgb3ZlcnJpZGU7CiAgICAgYm9vbCBhbGxvd3NCbG9ja1NlbGVjdGlvbigp
IG92ZXJyaWRlOwogICAgIHZvaWQgZGlkVXBkYXRlQmxvY2tTZWxlY3Rpb25XaXRoVG91Y2godWlu
dDMyX3QgdG91Y2gsIHVpbnQzMl90IGZsYWdzLCBmbG9hdCBncm93VGhyZXNob2xkLCBmbG9hdCBz
aHJpbmtUaHJlc2hvbGQpIG92ZXJyaWRlOwogICAgIHZvaWQgc2hvd1BsYXliYWNrVGFyZ2V0UGlj
a2VyKGJvb2wgaGFzVmlkZW8sIGNvbnN0IFdlYkNvcmU6OkludFJlY3QmIGVsZW1lbnRSZWN0KSBv
dmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvUGFnZUNs
aWVudEltcGxJT1MubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJ
bXBsSU9TLm1tCmluZGV4IGQzNzYzZTExOTlkOTNmODMyMWZhNTAzYmE3NzVlOTkyZTg0YjgxNzQu
LmNkODQwYzI4YzM2MmExN2RkYzExMTViOGYyYmY5OWZjNmFjNzA3OWIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MubW0KKysrIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbQpAQCAtNjQsNyAr
NjQsNyBAQCBAaW50ZXJmYWNlIFdLRWRpdENvbW1hbmRPYmpDIDogTlNPYmplY3QKIHsKICAgICBS
ZWZQdHI8V2ViRWRpdENvbW1hbmRQcm94eT4gbV9jb21tYW5kOwogfQotLSAoaWQpaW5pdFdpdGhX
ZWJFZGl0Q29tbWFuZFByb3h5OihQYXNzUmVmUHRyPFdlYkVkaXRDb21tYW5kUHJveHk+KWNvbW1h
bmQ7CistIChpZClpbml0V2l0aFdlYkVkaXRDb21tYW5kUHJveHk6KFJlZjxXZWJFZGl0Q29tbWFu
ZFByb3h5PiYmKWNvbW1hbmQ7CiAtIChXZWJFZGl0Q29tbWFuZFByb3h5Kiljb21tYW5kOwogQGVu
ZAogCkBAIC03NSwxMyArNzUsMTMgQEAgQGVuZAogCiBAaW1wbGVtZW50YXRpb24gV0tFZGl0Q29t
bWFuZE9iakMKIAotLSAoaWQpaW5pdFdpdGhXZWJFZGl0Q29tbWFuZFByb3h5OihQYXNzUmVmUHRy
PFdlYkVkaXRDb21tYW5kUHJveHk+KWNvbW1hbmQKKy0gKGlkKWluaXRXaXRoV2ViRWRpdENvbW1h
bmRQcm94eTooUmVmPFdlYkVkaXRDb21tYW5kUHJveHk+JiYpY29tbWFuZAogewogICAgIHNlbGYg
PSBbc3VwZXIgaW5pdF07CiAgICAgaWYgKCFzZWxmKQogICAgICAgICByZXR1cm4gbmlsOwogICAg
IAotICAgIG1fY29tbWFuZCA9IGNvbW1hbmQ7CisgICAgbV9jb21tYW5kID0gV1RGTW92ZShjb21t
YW5kKTsKICAgICByZXR1cm4gc2VsZjsKIH0KIApAQCAtMzAzLDExICszMDMsOSBAQCB2b2lkIFBh
Z2VDbGllbnRJbXBsOjpkaWRDaGFuZ2VWaWV3cG9ydFByb3BlcnRpZXMoY29uc3QgVmlld3BvcnRB
dHRyaWJ1dGVzJikKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCi12b2lkIFBhZ2VDbGllbnRJ
bXBsOjpyZWdpc3RlckVkaXRDb21tYW5kKFBhc3NSZWZQdHI8V2ViRWRpdENvbW1hbmRQcm94eT4g
cHJwQ29tbWFuZCwgV2ViUGFnZVByb3h5OjpVbmRvT3JSZWRvIHVuZG9PclJlZG8pCit2b2lkIFBh
Z2VDbGllbnRJbXBsOjpyZWdpc3RlckVkaXRDb21tYW5kKFJlZjxXZWJFZGl0Q29tbWFuZFByb3h5
PiYmIGNvbW1hbmQsIFdlYlBhZ2VQcm94eTo6VW5kb09yUmVkbyB1bmRvT3JSZWRvKQogewotICAg
IFJlZlB0cjxXZWJFZGl0Q29tbWFuZFByb3h5PiBjb21tYW5kID0gcHJwQ29tbWFuZDsKLSAgICAK
LSAgICBSZXRhaW5QdHI8V0tFZGl0Q29tbWFuZE9iakM+IGNvbW1hbmRPYmpDID0gYWRvcHROUyhb
W1dLRWRpdENvbW1hbmRPYmpDIGFsbG9jXSBpbml0V2l0aFdlYkVkaXRDb21tYW5kUHJveHk6Y29t
bWFuZF0pOworICAgIFJldGFpblB0cjxXS0VkaXRDb21tYW5kT2JqQz4gY29tbWFuZE9iakMgPSBh
ZG9wdE5TKFtbV0tFZGl0Q29tbWFuZE9iakMgYWxsb2NdIGluaXRXaXRoV2ViRWRpdENvbW1hbmRQ
cm94eTpjb21tYW5kLmNvcHlSZWYoKV0pOwogICAgIFN0cmluZyBhY3Rpb25OYW1lID0gV2ViRWRp
dENvbW1hbmRQcm94eTo6bmFtZUZvckVkaXRBY3Rpb24oY29tbWFuZC0+ZWRpdEFjdGlvbigpKTsK
ICAgICAKICAgICBOU1VuZG9NYW5hZ2VyICp1bmRvTWFuYWdlciA9IFttX2NvbnRlbnRWaWV3IHVu
ZG9NYW5hZ2VyXTsKQEAgLTM1NCw3ICszNTIsNyBAQCB2b2lkIFBhZ2VDbGllbnRJbXBsOjpwb3Np
dGlvbkluZm9ybWF0aW9uRGlkQ2hhbmdlKGNvbnN0IEludGVyYWN0aW9uSW5mb3JtYXRpb25BdAog
ICAgIFttX2NvbnRlbnRWaWV3IF9wb3NpdGlvbkluZm9ybWF0aW9uRGlkQ2hhbmdlOmluZm9dOwog
fQogCi12b2lkIFBhZ2VDbGllbnRJbXBsOjpzYXZlSW1hZ2VUb0xpYnJhcnkoUGFzc1JlZlB0cjxT
aGFyZWRCdWZmZXI+IGltYWdlQnVmZmVyKQordm9pZCBQYWdlQ2xpZW50SW1wbDo6c2F2ZUltYWdl
VG9MaWJyYXJ5KFJlZjxTaGFyZWRCdWZmZXI+JiYgaW1hZ2VCdWZmZXIpCiB7CiAgICAgUmV0YWlu
UHRyPE5TRGF0YT4gaW1hZ2VEYXRhID0gaW1hZ2VCdWZmZXItPmNyZWF0ZU5TRGF0YSgpOwogICAg
IFVJSW1hZ2VEYXRhV3JpdGVUb1NhdmVkUGhvdG9zQWxidW0oaW1hZ2VEYXRhLmdldCgpLCBuaWws
IE5VTEwsIE5VTEwpOwpAQCAtMzY2LDcgKzM2NCw3IEBAIGJvb2wgUGFnZUNsaWVudEltcGw6OmV4
ZWN1dGVTYXZlZENvbW1hbmRCeVNlbGVjdG9yKGNvbnN0IFN0cmluZyYpCiAgICAgcmV0dXJuIGZh
bHNlOwogfQogCi12b2lkIFBhZ2VDbGllbnRJbXBsOjpzZXREcmFnSW1hZ2UoY29uc3QgSW50UG9p
bnQmLCBQYXNzUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4sIERyYWdTb3VyY2VBY3Rpb24pCit2b2lk
IFBhZ2VDbGllbnRJbXBsOjpzZXREcmFnSW1hZ2UoY29uc3QgSW50UG9pbnQmLCBSZWY8U2hhcmVh
YmxlQml0bWFwPiYmLCBEcmFnU291cmNlQWN0aW9uKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7
CiB9CkBAIC00OTQsNyArNDkyLDcgQEAgTGF5ZXJPclZpZXcgKlBhZ2VDbGllbnRJbXBsOjphY2Nl
bGVyYXRlZENvbXBvc2l0aW5nUm9vdExheWVyKCkgY29uc3QKICAgICByZXR1cm4gbnVsbHB0cjsK
IH0KIAotUGFzc1JlZlB0cjxWaWV3U25hcHNob3Q+IFBhZ2VDbGllbnRJbXBsOjp0YWtlVmlld1Nu
YXBzaG90KCkKK1JlZlB0cjxWaWV3U25hcHNob3Q+IFBhZ2VDbGllbnRJbXBsOjp0YWtlVmlld1Nu
YXBzaG90KCkKIHsKICAgICByZXR1cm4gW21fd2ViVmlldyBfdGFrZVZpZXdTbmFwc2hvdF07CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dLR2VvbG9jYXRpb25Q
cm92aWRlcklPUy5tbSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tHZW9sb2NhdGlv
blByb3ZpZGVySU9TLm1tCmluZGV4IDMxYTM3NWRjNmYzMDhkYzYwMDA1YWRkZmFlMjkwYzU3ODIw
ZmFjYzUuLmMxOTgyMTEwNTM5NGNlOTRkMTcwYjIzNTc0MTUyYTViMGY3NTdjZGMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tHZW9sb2NhdGlvblByb3ZpZGVySU9T
Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV0tHZW9sb2NhdGlvblByb3Zp
ZGVySU9TLm1tCkBAIC00Niw3ICs0Niw2IEBACiAjaW1wb3J0IDx3dGYvQXNzZXJ0aW9ucy5oPgog
I2ltcG9ydCA8d3RmL0Jsb2NrUHRyLmg+CiAjaW1wb3J0IDx3dGYvSGFzaFNldC5oPgotI2ltcG9y
dCA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbXBvcnQgPHd0Zi9SZWZQdHIuaD4KICNpbXBvcnQgPHd0
Zi9SZXRhaW5QdHIuaD4KIApAQCAtNjcsNyArNjYsNyBAQCBAaW50ZXJmYWNlIFdLTGVnYWN5Q29y
ZUxvY2F0aW9uUHJvdmlkZXIgOiBOU09iamVjdDxfV0tHZW9sb2NhdGlvbkNvcmVMb2NhdGlvblBy
bwogQGVuZAogCiBAaW50ZXJmYWNlIFdLV2ViQWxsb3dEZW55UG9saWN5TGlzdGVuZXIgOiBOU09i
amVjdDxXZWJBbGxvd0RlbnlQb2xpY3lMaXN0ZW5lcj4KLS0gKGlkKWluaXRXaXRoUGVybWlzc2lv
blJlcXVlc3RQcm94eTooUGFzc1JlZlB0cjxHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0UHJv
eHk+KXBlcm1pc3Npb25SZXF1ZXN0UHJveHk7CistIChpZClpbml0V2l0aFBlcm1pc3Npb25SZXF1
ZXN0UHJveHk6KFJlZlB0cjxHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0UHJveHk+JiYpcGVy
bWlzc2lvblJlcXVlc3RQcm94eTsKIC0gKHZvaWQpZGVueU9ubHlUaGlzUmVxdWVzdCBOT19SRVRV
Uk5fRFVFX1RPX0FTU0VSVDsKIEBlbmQKIApAQCAtMzMzLDEzICszMzIsMTMgQEAgQGltcGxlbWVu
dGF0aW9uIFdLV2ViQWxsb3dEZW55UG9saWN5TGlzdGVuZXIgewogICAgIFJlZlB0cjxHZW9sb2Nh
dGlvblBlcm1pc3Npb25SZXF1ZXN0UHJveHk+IF9wZXJtaXNzaW9uUmVxdWVzdFByb3h5OwogfQog
Ci0tIChpZClpbml0V2l0aFBlcm1pc3Npb25SZXF1ZXN0UHJveHk6KFBhc3NSZWZQdHI8R2VvbG9j
YXRpb25QZXJtaXNzaW9uUmVxdWVzdFByb3h5PilwZXJtaXNzaW9uUmVxdWVzdFByb3h5CistIChp
ZClpbml0V2l0aFBlcm1pc3Npb25SZXF1ZXN0UHJveHk6KFJlZlB0cjxHZW9sb2NhdGlvblBlcm1p
c3Npb25SZXF1ZXN0UHJveHk+JiYpcGVybWlzc2lvblJlcXVlc3RQcm94eQogewogICAgIHNlbGYg
PSBbc3VwZXIgaW5pdF07CiAgICAgaWYgKCFzZWxmKQogICAgICAgICByZXR1cm4gbmlsOwogCi0g
ICAgX3Blcm1pc3Npb25SZXF1ZXN0UHJveHkgPSBwZXJtaXNzaW9uUmVxdWVzdFByb3h5OworICAg
IF9wZXJtaXNzaW9uUmVxdWVzdFByb3h5ID0gV1RGTW92ZShwZXJtaXNzaW9uUmVxdWVzdFByb3h5
KTsKICAgICByZXR1cm4gc2VsZjsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
aW9zL1dlYlBhZ2VQcm94eUlPUy5tbQppbmRleCBjZmQxZTIzMzg3ZjZiN2E2MTg0ZGViZDg0NzI4
NDVkOTVkZjNjYWU1Li5hNWM2ZmM0MzhiODRmMzE4ZWNhMzg3OWIxZTVkYjM0NjdmNTZjOTRmIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dlYlBhZ2VQcm94eUlPUy5tbQpA
QCAtNjYyLDkgKzY2Miw5IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpwZXJmb3JtQWN0aW9uT25FbGVt
ZW50KHVpbnQzMl90IGFjdGlvbikKIAogdm9pZCBXZWJQYWdlUHJveHk6OnNhdmVJbWFnZVRvTGli
cmFyeShjb25zdCBTaGFyZWRNZW1vcnk6OkhhbmRsZSYgaW1hZ2VIYW5kbGUsIHVpbnQ2NF90IGlt
YWdlU2l6ZSkKIHsKLSAgICBSZWZQdHI8U2hhcmVkTWVtb3J5PiBzaGFyZWRNZW1vcnlCdWZmZXIg
PSBTaGFyZWRNZW1vcnk6Om1hcChpbWFnZUhhbmRsZSwgU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9u
OjpSZWFkT25seSk7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmZmVyID0gU2hhcmVkQnVm
ZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcio+KHNoYXJlZE1lbW9yeUJ1ZmZl
ci0+ZGF0YSgpKSwgaW1hZ2VTaXplKTsKLSAgICBtX3BhZ2VDbGllbnQuc2F2ZUltYWdlVG9MaWJy
YXJ5KGJ1ZmZlcik7CisgICAgYXV0byBzaGFyZWRNZW1vcnlCdWZmZXIgPSBTaGFyZWRNZW1vcnk6
Om1hcChpbWFnZUhhbmRsZSwgU2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uOjpSZWFkT25seSk7Cisg
ICAgYXV0byBidWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDx1bnNpZ25l
ZCBjaGFyKj4oc2hhcmVkTWVtb3J5QnVmZmVyLT5kYXRhKCkpLCBpbWFnZVNpemUpOworICAgIG1f
cGFnZUNsaWVudC5zYXZlSW1hZ2VUb0xpYnJhcnkoV1RGTW92ZShidWZmZXIpKTsKIH0KIAogdm9p
ZCBXZWJQYWdlUHJveHk6OmRpZFVwZGF0ZUJsb2NrU2VsZWN0aW9uV2l0aFRvdWNoKHVpbnQzMl90
IHRvdWNoLCB1aW50MzJfdCBmbGFncywgZmxvYXQgZ3Jvd1RocmVzaG9sZCwgZmxvYXQgc2hyaW5r
VGhyZXNob2xkKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9QYWdl
Q2xpZW50SW1wbC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1w
bC5oCmluZGV4IDNiNmIwYzY5NGVlOWMzZGExYmMzYTk4MzNlNjA5MzVhMjJmNWZhZmYuLjBkOTk3
YzJmYWFmZTY0MzNmZTc3NDlmYTM3Njg4MjczNWVjMTY5ZTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGwuaAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsLmgKQEAgLTkxLDE0ICs5MSwxNCBAQCBwcml2
YXRlOgogICAgIHZvaWQgc2V0Q3Vyc29ySGlkZGVuVW50aWxNb3VzZU1vdmVzKGJvb2wpIG92ZXJy
aWRlOwogICAgIHZvaWQgZGlkQ2hhbmdlVmlld3BvcnRQcm9wZXJ0aWVzKGNvbnN0IFdlYkNvcmU6
OlZpZXdwb3J0QXR0cmlidXRlcyYpIG92ZXJyaWRlOwogCi0gICAgdm9pZCByZWdpc3RlckVkaXRD
b21tYW5kKFBhc3NSZWZQdHI8V2ViRWRpdENvbW1hbmRQcm94eT4sIFdlYlBhZ2VQcm94eTo6VW5k
b09yUmVkbykgb3ZlcnJpZGU7CisgICAgdm9pZCByZWdpc3RlckVkaXRDb21tYW5kKFJlZjxXZWJF
ZGl0Q29tbWFuZFByb3h5PiYmLCBXZWJQYWdlUHJveHk6OlVuZG9PclJlZG8pIG92ZXJyaWRlOwog
ICAgIHZvaWQgY2xlYXJBbGxFZGl0Q29tbWFuZHMoKSBvdmVycmlkZTsKICAgICBib29sIGNhblVu
ZG9SZWRvKFdlYlBhZ2VQcm94eTo6VW5kb09yUmVkbykgb3ZlcnJpZGU7CiAgICAgdm9pZCBleGVj
dXRlVW5kb1JlZG8oV2ViUGFnZVByb3h5OjpVbmRvT3JSZWRvKSBvdmVycmlkZTsKICAgICBib29s
IGV4ZWN1dGVTYXZlZENvbW1hbmRCeVNlbGVjdG9yKGNvbnN0IFN0cmluZyYgc2VsZWN0b3IpIG92
ZXJyaWRlOwotICAgIHZvaWQgc2V0RHJhZ0ltYWdlKGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBj
bGllbnRQb3NpdGlvbiwgUGFzc1JlZlB0cjxTaGFyZWFibGVCaXRtYXA+IGRyYWdJbWFnZSwgV2Vi
Q29yZTo6RHJhZ1NvdXJjZUFjdGlvbikgb3ZlcnJpZGU7Ci0gICAgdm9pZCBzZXRQcm9taXNlZERh
dGFGb3JJbWFnZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBQYXNzUmVmUHRyPFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcj4gaW1hZ2VCdWZmZXIsIGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNv
bnN0IFN0cmluZyYgZXh0ZW5zaW9uLCBjb25zdCBTdHJpbmcmIHRpdGxlLAotICAgICAgICBjb25z
dCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiB2aXNpYmxlVXJsLCBQYXNzUmVmUHRyPFdlYkNv
cmU6OlNoYXJlZEJ1ZmZlcj4gYXJjaGl2ZUJ1ZmZlcikgb3ZlcnJpZGU7CisgICAgdm9pZCBzZXRE
cmFnSW1hZ2UoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIGNsaWVudFBvc2l0aW9uLCBSZWY8U2hh
cmVhYmxlQml0bWFwPiYmIGRyYWdJbWFnZSwgV2ViQ29yZTo6RHJhZ1NvdXJjZUFjdGlvbikgb3Zl
cnJpZGU7CisgICAgdm9pZCBzZXRQcm9taXNlZERhdGFGb3JJbWFnZShjb25zdCBTdHJpbmcmIHBh
c3RlYm9hcmROYW1lLCBSZWY8V2ViQ29yZTo6U2hhcmVkQnVmZmVyPiYmIGltYWdlQnVmZmVyLCBj
b25zdCBTdHJpbmcmIGZpbGVuYW1lLCBjb25zdCBTdHJpbmcmIGV4dGVuc2lvbiwgY29uc3QgU3Ry
aW5nJiB0aXRsZSwKKyAgICAgICAgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgdmlz
aWJsZVVybCwgUmVmUHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4mJiBhcmNoaXZlQnVmZmVyKSBv
dmVycmlkZTsKICNpZiBFTkFCTEUoQVRUQUNITUVOVF9FTEVNRU5UKQogICAgIHZvaWQgc2V0UHJv
bWlzZWREYXRhRm9yQXR0YWNobWVudChjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBjb25z
dCBTdHJpbmcmIGZpbGVuYW1lLCBjb25zdCBTdHJpbmcmIGV4dGVuc2lvbiwgY29uc3QgU3RyaW5n
JiB0aXRsZSwgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgdmlzaWJsZVVybCkgb3Zl
cnJpZGU7CiAjZW5kaWYKQEAgLTE0Miw3ICsxNDIsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZXhp
dEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdNb2RlKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCB1cGRhdGVB
Y2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZShjb25zdCBMYXllclRyZWVDb250ZXh0Jikgb3ZlcnJp
ZGU7CiAKLSAgICBQYXNzUmVmUHRyPFZpZXdTbmFwc2hvdD4gdGFrZVZpZXdTbmFwc2hvdCgpIG92
ZXJyaWRlOworICAgIFJlZlB0cjxWaWV3U25hcHNob3Q+IHRha2VWaWV3U25hcHNob3QoKSBvdmVy
cmlkZTsKICAgICB2b2lkIHdoZWVsRXZlbnRXYXNOb3RIYW5kbGVkQnlXZWJDb3JlKGNvbnN0IE5h
dGl2ZVdlYldoZWVsRXZlbnQmKSBvdmVycmlkZTsKICNpZiBFTkFCTEUoTUFDX0dFU1RVUkVfRVZF
TlRTKQogICAgIHZvaWQgZ2VzdHVyZUV2ZW50V2FzTm90SGFuZGxlZEJ5V2ViQ29yZShjb25zdCBO
YXRpdmVXZWJHZXN0dXJlRXZlbnQmKSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGwubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsLm1tCmluZGV4IDgxOTc4NWJlNzljMzJiMDVjOWRlZDNi
NTJhYTA4NWJlNjdjOGM5ZGQuLjBhNWFhYjU0MDY0ZTE4MjI4ZmU1NWZkYjIwN2VhYWFkNTIzYzFj
OGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudElt
cGwubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbC5t
bQpAQCAtMzE3LDkgKzMxNyw5IEBAIHZvaWQgUGFnZUNsaWVudEltcGw6OmRpZENoYW5nZVZpZXdw
b3J0UHJvcGVydGllcyhjb25zdCBXZWJDb3JlOjpWaWV3cG9ydEF0dHJpYnV0CiB7CiB9CiAKLXZv
aWQgUGFnZUNsaWVudEltcGw6OnJlZ2lzdGVyRWRpdENvbW1hbmQoUGFzc1JlZlB0cjxXZWJFZGl0
Q29tbWFuZFByb3h5PiBwcnBDb21tYW5kLCBXZWJQYWdlUHJveHk6OlVuZG9PclJlZG8gdW5kb09y
UmVkbykKK3ZvaWQgUGFnZUNsaWVudEltcGw6OnJlZ2lzdGVyRWRpdENvbW1hbmQoUmVmPFdlYkVk
aXRDb21tYW5kUHJveHk+JiYgY29tbWFuZCwgV2ViUGFnZVByb3h5OjpVbmRvT3JSZWRvIHVuZG9P
clJlZG8pCiB7Ci0gICAgbV9pbXBsLT5yZWdpc3RlckVkaXRDb21tYW5kKHBycENvbW1hbmQsIHVu
ZG9PclJlZG8pOworICAgIG1faW1wbC0+cmVnaXN0ZXJFZGl0Q29tbWFuZChXVEZNb3ZlKGNvbW1h
bmQpLCB1bmRvT3JSZWRvKTsKIH0KIAogI2lmIFVTRShJTlNFUlRJT05fVU5ET19HUk9VUElORykK
QEAgLTM0NCw3ICszNDQsNyBAQCB2b2lkIFBhZ2VDbGllbnRJbXBsOjpleGVjdXRlVW5kb1JlZG8o
V2ViUGFnZVByb3h5OjpVbmRvT3JSZWRvIHVuZG9PclJlZG8pCiAgICAgcmV0dXJuICh1bmRvT3JS
ZWRvID09IFdlYlBhZ2VQcm94eTo6VW5kbykgPyBbW21fdmlldyB1bmRvTWFuYWdlcl0gdW5kb10g
OiBbW21fdmlldyB1bmRvTWFuYWdlcl0gcmVkb107CiB9CiAKLXZvaWQgUGFnZUNsaWVudEltcGw6
OnNldERyYWdJbWFnZShjb25zdCBJbnRQb2ludCYgY2xpZW50UG9zaXRpb24sIFBhc3NSZWZQdHI8
U2hhcmVhYmxlQml0bWFwPiBkcmFnSW1hZ2UsIERyYWdTb3VyY2VBY3Rpb24gYWN0aW9uKQordm9p
ZCBQYWdlQ2xpZW50SW1wbDo6c2V0RHJhZ0ltYWdlKGNvbnN0IEludFBvaW50JiBjbGllbnRQb3Np
dGlvbiwgUmVmPFNoYXJlYWJsZUJpdG1hcD4mJiBkcmFnSW1hZ2UsIERyYWdTb3VyY2VBY3Rpb24g
YWN0aW9uKQogewogICAgIFJldGFpblB0cjxDR0ltYWdlUmVmPiBkcmFnQ0dJbWFnZSA9IGRyYWdJ
bWFnZS0+bWFrZUNHSW1hZ2UoKTsKICAgICBSZXRhaW5QdHI8TlNJbWFnZT4gZHJhZ05TSW1hZ2Ug
PSBhZG9wdE5TKFtbTlNJbWFnZSBhbGxvY10gaW5pdFdpdGhDR0ltYWdlOmRyYWdDR0ltYWdlLmdl
dCgpIHNpemU6ZHJhZ0ltYWdlLT5zaXplKCldKTsKQEAgLTM1NSwxMCArMzU1LDEwIEBAIHZvaWQg
UGFnZUNsaWVudEltcGw6OnNldERyYWdJbWFnZShjb25zdCBJbnRQb2ludCYgY2xpZW50UG9zaXRp
b24sIFBhc3NSZWZQdHI8U2hhCiAgICAgbV9pbXBsLT5kcmFnSW1hZ2VGb3JWaWV3KG1fdmlldywg
ZHJhZ05TSW1hZ2UuZ2V0KCksIGNsaWVudFBvc2l0aW9uLCBhY3Rpb24gPT0gRHJhZ1NvdXJjZUFj
dGlvbkxpbmspOwogfQogCi12b2lkIFBhZ2VDbGllbnRJbXBsOjpzZXRQcm9taXNlZERhdGFGb3JJ
bWFnZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZl
cj4gaW1hZ2VCdWZmZXIsIGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFN0cmluZyYgZXh0
ZW5zaW9uLCBjb25zdCBTdHJpbmcmIHRpdGxlLCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3Ry
aW5nJiB2aXNpYmxlVVJMLCBQYXNzUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYXJjaGl2ZUJ1ZmZlcikK
K3ZvaWQgUGFnZUNsaWVudEltcGw6OnNldFByb21pc2VkRGF0YUZvckltYWdlKGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZE5hbWUsIFJlZjxTaGFyZWRCdWZmZXI+JiYgaW1hZ2VCdWZmZXIsIGNvbnN0
IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFN0cmluZyYgZXh0ZW5zaW9uLCBjb25zdCBTdHJpbmcm
IHRpdGxlLCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgU3RyaW5nJiB2aXNpYmxlVVJMLCBSZWZQ
dHI8U2hhcmVkQnVmZmVyPiYmIGFyY2hpdmVCdWZmZXIpCiB7CiAgICAgUmVmUHRyPEltYWdlPiBp
bWFnZSA9IEJpdG1hcEltYWdlOjpjcmVhdGUoKTsKLSAgICBpbWFnZS0+c2V0RGF0YShpbWFnZUJ1
ZmZlci5nZXQoKSwgdHJ1ZSk7CisgICAgaW1hZ2UtPnNldERhdGEoV1RGTW92ZShpbWFnZUJ1ZmZl
ciksIHRydWUpOwogICAgIG1faW1wbC0+c2V0UHJvbWlzZWREYXRhRm9ySW1hZ2UoaW1hZ2UuZ2V0
KCksIGZpbGVuYW1lLCBleHRlbnNpb24sIHRpdGxlLCB1cmwsIHZpc2libGVVUkwsIGFyY2hpdmVC
dWZmZXIuZ2V0KCksIHBhc3RlYm9hcmROYW1lKTsKIH0KIApAQCAtNTAzLDcgKzUwMyw3IEBAIENB
TGF5ZXIgKlBhZ2VDbGllbnRJbXBsOjphY2NlbGVyYXRlZENvbXBvc2l0aW5nUm9vdExheWVyKCkg
Y29uc3QKICAgICByZXR1cm4gbV9pbXBsLT5hY2NlbGVyYXRlZENvbXBvc2l0aW5nUm9vdExheWVy
KCk7CiB9CiAKLVBhc3NSZWZQdHI8Vmlld1NuYXBzaG90PiBQYWdlQ2xpZW50SW1wbDo6dGFrZVZp
ZXdTbmFwc2hvdCgpCitSZWZQdHI8Vmlld1NuYXBzaG90PiBQYWdlQ2xpZW50SW1wbDo6dGFrZVZp
ZXdTbmFwc2hvdCgpCiB7CiAgICAgcmV0dXJuIG1faW1wbC0+dGFrZVZpZXdTbmFwc2hvdCgpOwog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9XS0ltbWVkaWF0ZUFj
dGlvbkNvbnRyb2xsZXIubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dLSW1tZWRp
YXRlQWN0aW9uQ29udHJvbGxlci5tbQppbmRleCBlNGJlY2RiMmVjMTMwMDkzZTkxNTAzNzg4ZmIw
ZDlkNmJkZjM5YzcxLi5iOTA3Zjk1OTUyZTEyYWRjY2UyOTIxMjgxZDYzM2E4YzhjMWQ1MmY2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dLSW1tZWRpYXRlQWN0aW9u
Q29udHJvbGxlci5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dLSW1tZWRp
YXRlQWN0aW9uQ29udHJvbGxlci5tbQpAQCAtMjU0LDcgKzI1NCw3IEBAIC0gKHZvaWQpaW1tZWRp
YXRlQWN0aW9uUmVjb2duaXplckRpZENvbXBsZXRlQW5pbWF0aW9uOihOU0ltbWVkaWF0ZUFjdGlv
bkdlc3R1cmVSCiAgICAgX3BhZ2UtPnNldFRleHRJbmRpY2F0b3JBbmltYXRpb25Qcm9ncmVzcygx
KTsKIH0KIAotLSAoUGFzc1JlZlB0cjxBUEk6OkhpdFRlc3RSZXN1bHQ+KV93ZWJIaXRUZXN0UmVz
dWx0CistIChSZWZQdHI8QVBJOjpIaXRUZXN0UmVzdWx0Pilfd2ViSGl0VGVzdFJlc3VsdAogewog
ICAgIFJlZlB0cjxBUEk6OkhpdFRlc3RSZXN1bHQ+IGhpdFRlc3RSZXN1bHQ7CiAgICAgaWYgKF9z
dGF0ZSA9PSBJbW1lZGlhdGVBY3Rpb25TdGF0ZTo6UmVhZHkpCkBAIC0yNjIsNyArMjYyLDcgQEAg
LSAoUGFzc1JlZlB0cjxBUEk6OkhpdFRlc3RSZXN1bHQ+KV93ZWJIaXRUZXN0UmVzdWx0CiAgICAg
ZWxzZQogICAgICAgICBoaXRUZXN0UmVzdWx0ID0gX3BhZ2UtPmxhc3RNb3VzZU1vdmVIaXRUZXN0
UmVzdWx0KCk7CiAKLSAgICByZXR1cm4gV1RGTW92ZShoaXRUZXN0UmVzdWx0KTsKKyAgICByZXR1
cm4gaGl0VGVzdFJlc3VsdDsKIH0KIAogI3ByYWdtYSBtYXJrIEltbWVkaWF0ZSBhY3Rpb25zCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5t
bSBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tCmluZGV4
IDM0MGI5ZjAwMzU1MTBjODYyOWZhZjI2MWYzNDE3Y2JkMmY0ZTJmMGUuLjE3Y2NiYTQ4YmY5ZTc0
ZDZlZjUwZDkxM2M4NGJjNGM3MTk1Yzc2YzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9tYWMvV2ViUGFnZVByb3h5TWFjLm1tCkBAIC0yNzIsNyArMjcyLDcgQEAgdm9pZCBXZWJQ
YWdlUHJveHk6OnJlcGxhY2VTZWxlY3Rpb25XaXRoUGFzdGVib2FyZERhdGEoY29uc3QgVmVjdG9y
PFN0cmluZz4mIHR5cGUKIHZvaWQgV2ViUGFnZVByb3h5OjpzZXREcmFnSW1hZ2UoY29uc3QgV2Vi
Q29yZTo6SW50UG9pbnQmIGNsaWVudFBvc2l0aW9uLCBjb25zdCBTaGFyZWFibGVCaXRtYXA6Okhh
bmRsZSYgZHJhZ0ltYWdlSGFuZGxlLCBzdGQ6Om9wdGlvbmFsPFRleHRJbmRpY2F0b3JEYXRhPiwg
Y29uc3QgRmxvYXRQb2ludCYsIHVpbnQ2NF90IGFjdGlvbikKIHsKICAgICBpZiAoYXV0byBkcmFn
SW1hZ2UgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZShkcmFnSW1hZ2VIYW5kbGUpKQotICAgICAg
ICBtX3BhZ2VDbGllbnQuc2V0RHJhZ0ltYWdlKGNsaWVudFBvc2l0aW9uLCBXVEZNb3ZlKGRyYWdJ
bWFnZSksIHN0YXRpY19jYXN0PERyYWdTb3VyY2VBY3Rpb24+KGFjdGlvbikpOworICAgICAgICBt
X3BhZ2VDbGllbnQuc2V0RHJhZ0ltYWdlKGNsaWVudFBvc2l0aW9uLCBkcmFnSW1hZ2UucmVsZWFz
ZU5vbk51bGwoKSwgc3RhdGljX2Nhc3Q8RHJhZ1NvdXJjZUFjdGlvbj4oYWN0aW9uKSk7CiAKICAg
ICBkaWRTdGFydERyYWcoKTsKIH0KQEAgLTI4MywxNCArMjgzLDE0IEBAIHZvaWQgV2ViUGFnZVBy
b3h5OjpzZXRQcm9taXNlZERhdGFGb3JJbWFnZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1l
LCBjb25zdCBTCiAgICAgTUVTU0FHRV9DSEVDS19VUkwodXJsKTsKICAgICBNRVNTQUdFX0NIRUNL
X1VSTCh2aXNpYmxlVVJMKTsKICAgICBSZWZQdHI8U2hhcmVkTWVtb3J5PiBzaGFyZWRNZW1vcnlJ
bWFnZSA9IFNoYXJlZE1lbW9yeTo6bWFwKGltYWdlSGFuZGxlLCBTaGFyZWRNZW1vcnk6OlByb3Rl
Y3Rpb246OlJlYWRPbmx5KTsKLSAgICBSZWZQdHI8U2hhcmVkQnVmZmVyPiBpbWFnZUJ1ZmZlciA9
IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXIqPihzaGFyZWRN
ZW1vcnlJbWFnZS0+ZGF0YSgpKSwgaW1hZ2VTaXplKTsKKyAgICBhdXRvIGltYWdlQnVmZmVyID0g
U2hhcmVkQnVmZmVyOjpjcmVhdGUoc3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcio+KHNoYXJlZE1l
bW9yeUltYWdlLT5kYXRhKCkpLCBpbWFnZVNpemUpOwogICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IGFyY2hpdmVCdWZmZXI7CiAgICAgCiAgICAgaWYgKCFhcmNoaXZlSGFuZGxlLmlzTnVsbCgpKSB7
CiAgICAgICAgIFJlZlB0cjxTaGFyZWRNZW1vcnk+IHNoYXJlZE1lbW9yeUFyY2hpdmUgPSBTaGFy
ZWRNZW1vcnk6Om1hcChhcmNoaXZlSGFuZGxlLCBTaGFyZWRNZW1vcnk6OlByb3RlY3Rpb246OlJl
YWRPbmx5KTsKICAgICAgICAgYXJjaGl2ZUJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0
YXRpY19jYXN0PHVuc2lnbmVkIGNoYXIqPihzaGFyZWRNZW1vcnlBcmNoaXZlLT5kYXRhKCkpLCBh
cmNoaXZlU2l6ZSk7CiAgICAgfQotICAgIG1fcGFnZUNsaWVudC5zZXRQcm9taXNlZERhdGFGb3JJ
bWFnZShwYXN0ZWJvYXJkTmFtZSwgaW1hZ2VCdWZmZXIsIGZpbGVuYW1lLCBleHRlbnNpb24sIHRp
dGxlLCB1cmwsIHZpc2libGVVUkwsIGFyY2hpdmVCdWZmZXIpOworICAgIG1fcGFnZUNsaWVudC5z
ZXRQcm9taXNlZERhdGFGb3JJbWFnZShwYXN0ZWJvYXJkTmFtZSwgV1RGTW92ZShpbWFnZUJ1ZmZl
ciksIGZpbGVuYW1lLCBleHRlbnNpb24sIHRpdGxlLCB1cmwsIHZpc2libGVVUkwsIFdURk1vdmUo
YXJjaGl2ZUJ1ZmZlcikpOwogfQogCiAjaWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVOVCkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSWNvbkRhdGFiYXNlL1dlYkljb25E
YXRhYmFzZVByb3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0ljb25EYXRhYmFzZS9X
ZWJJY29uRGF0YWJhc2VQcm94eS5oCmluZGV4IGJkZjhkNGNmNjNhYmU5Y2VhM2QyYWMxOTgxZTkw
NmViNjYxZjVhM2UuLjBhMjBkMzQ0M2MwNzNiMGU3MWE1NzQwOGQxNDViZjdiMjA5ZDJhYTEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSWNvbkRhdGFiYXNlL1dlYkljb25E
YXRhYmFzZVByb3h5LmgKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JY29uRGF0YWJh
c2UvV2ViSWNvbkRhdGFiYXNlUHJveHkuaApAQCAtMjksNyArMjksNiBAQAogI2luY2x1ZGUgIk1l
c3NhZ2VSZWNlaXZlci5oIgogI2luY2x1ZGUgPFdlYkNvcmUvSWNvbkRhdGFiYXNlQmFzZS5oPgog
I2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+Ci0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNp
bmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>309903</attachid>
            <date>2017-05-12 09:41:30 -0700</date>
            <delta_ts>2017-05-12 15:00:06 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-172029-20170512094129.patch</filename>
            <type>text/plain</type>
            <size>76215</size>
            <attacher name="Chris Dumez">cdumez</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjE2NzY0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cKaW5kZXggM2QzYmE4ODcyYWI0YjNi
OWJkMWI1NGY5NjViYmE1MTEwMTM4NjNiNS4uMGI0YjhiYzFiM2NjYWIwMGEwNzQxMTQ1ZjAxYTA1
MzdiZmI0MjIxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDEwNSBAQAogMjAxNy0wNS0xMiAgQ2hy
aXMgRHVtZXogIDxjZHVtZXpAYXBwbGUuY29tPgogCisgICAgICAgIFN0b3AgdXNpbmcgUGFzc1Jl
ZlB0ciB1bmRlciBXZWJLaXQyL1VJUHJvY2VzcworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0
Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTcyMDI5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZ
IChPT1BTISkuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlldy5tbToK
KyAgICAgICAgKC1bV0tXZWJWaWV3IF90YWtlVmlld1NuYXBzaG90XSk6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdJbnRlcm5hbC5oOgorICAgICAgICAqIFVJUHJvY2Vz
cy9BUEkvZ3RrL1BhZ2VDbGllbnRJbXBsLmNwcDoKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVu
dEltcGw6OnJlZ2lzdGVyRWRpdENvbW1hbmQpOgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkvZ3Rr
L1BhZ2VDbGllbnRJbXBsLmg6CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0RmF2
aWNvbkRhdGFiYXNlLmNwcDoKKyAgICAgICAgKGdldEljb25TdXJmYWNlU3luY2hyb25vdXNseSk6
CisgICAgICAgICogVUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0V2ViQ29udGV4dC5jcHA6CisgICAg
ICAgICogVUlQcm9jZXNzL0FQSS93cGUvUGFnZUNsaWVudEltcGwuY3BwOgorICAgICAgICAoV2Vi
S2l0OjpQYWdlQ2xpZW50SW1wbDo6cmVnaXN0ZXJFZGl0Q29tbWFuZCk6CisgICAgICAgICogVUlQ
cm9jZXNzL0FQSS93cGUvUGFnZUNsaWVudEltcGwuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29j
b2EvV2ViVmlld0ltcGwuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwu
bW06CisgICAgICAgIChXZWJLaXQ6OldlYlZpZXdJbXBsOjpyZWdpc3RlckVkaXRDb21tYW5kKToK
KyAgICAgICAgKiBVSVByb2Nlc3MvRGVmYXVsdFVuZG9Db250cm9sbGVyLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6RGVmYXVsdFVuZG9Db250cm9sbGVyOjpyZWdpc3RlckVkaXRDb21tYW5kKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvRGVmYXVsdFVuZG9Db250cm9sbGVyLmg6CisgICAgICAgICogVUlQ
cm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6RG93
bmxvYWRQcm94eTo6Y3JlYXRlKToKKyAgICAgICAgKiBVSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25s
b2FkUHJveHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVx
dWVzdE1hbmFnZXJQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6Okdlb2xvY2F0aW9uUGVybWlz
c2lvblJlcXVlc3RNYW5hZ2VyUHJveHk6OmNyZWF0ZVJlcXVlc3QpOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9HZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5Lmg6CisgICAgICAg
ICogVUlQcm9jZXNzL0luc3BlY3RvclNlcnZlci9IVFRQUmVxdWVzdC5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OkhUVFBSZXF1ZXN0OjpwYXJzZUhUVFBSZXF1ZXN0RnJvbUJ1ZmZlcik6CisgICAgICAg
ICogVUlQcm9jZXNzL0luc3BlY3RvclNlcnZlci9IVFRQUmVxdWVzdC5oOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9JbnNwZWN0b3JTZXJ2ZXIvV2ViSW5zcGVjdG9yU2VydmVyLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViSW5zcGVjdG9yU2VydmVyOjpkaWRSZWNlaXZlVW5yZWNvZ25pemVkSFRUUFJl
cXVlc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0b3JTZXJ2ZXI6OmRpZFJlY2VpdmVX
ZWJTb2NrZXRVcGdyYWRlSFRUUFJlcXVlc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJJbnNwZWN0
b3JTZXJ2ZXI6OmRpZEVzdGFibGlzaFdlYlNvY2tldENvbm5lY3Rpb24pOgorICAgICAgICAqIFVJ
UHJvY2Vzcy9JbnNwZWN0b3JTZXJ2ZXIvV2ViSW5zcGVjdG9yU2VydmVyLmg6CisgICAgICAgICog
VUlQcm9jZXNzL0luc3BlY3RvclNlcnZlci9XZWJTb2NrZXRTZXJ2ZXJDbGllbnQuaDoKKyAgICAg
ICAgKFdlYktpdDo6V2ViU29ja2V0U2VydmVyQ2xpZW50OjpkaWRSZWNlaXZlVW5yZWNvZ25pemVk
SFRUUFJlcXVlc3QpOgorICAgICAgICAoV2ViS2l0OjpXZWJTb2NrZXRTZXJ2ZXJDbGllbnQ6OmRp
ZFJlY2VpdmVXZWJTb2NrZXRVcGdyYWRlSFRUUFJlcXVlc3QpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJTb2NrZXRTZXJ2ZXJDbGllbnQ6OmRpZEVzdGFibGlzaFdlYlNvY2tldENvbm5lY3Rpb24pOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9JbnNwZWN0b3JTZXJ2ZXIvV2ViU29ja2V0U2VydmVyQ29ubmVj
dGlvbi5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYlNvY2tldFNlcnZlckNvbm5lY3Rpb246OnJl
YWRIVFRQTWVzc2FnZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlNvY2tldFNlcnZlckNvbm5lY3Rp
b246OnVwZ3JhZGVUb1dlYlNvY2tldFNlcnZlckNvbm5lY3Rpb24pOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9JbnNwZWN0b3JTZXJ2ZXIvV2ViU29ja2V0U2VydmVyQ29ubmVjdGlvbi5oOgorICAgICAg
ICAqIFVJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL05vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0
TWFuYWdlclByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6Tm90aWZpY2F0aW9uUGVybWlzc2lv
blJlcXVlc3RNYW5hZ2VyUHJveHk6OmNyZWF0ZVJlcXVlc3QpOgorICAgICAgICAqIFVJUHJvY2Vz
cy9Ob3RpZmljYXRpb25zL05vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5
Lmg6CisgICAgICAgICogVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uUHJv
dmlkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJOb3RpZmljYXRpb25Qcm92aWRlcjo6bm90
aWZpY2F0aW9uUGVybWlzc2lvbnMpOgorICAgICAgICAqIFVJUHJvY2Vzcy9Ob3RpZmljYXRpb25z
L1dlYk5vdGlmaWNhdGlvblByb3ZpZGVyLmg6CisgICAgICAgICogVUlQcm9jZXNzL1BhZ2VDbGll
bnQuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvU3RvcmFnZS9Mb2NhbFN0b3JhZ2VEYXRhYmFzZS5j
cHA6CisgICAgICAgICogVUlQcm9jZXNzL1dlYkNvbnRleHRNZW51TGlzdGVuZXJQcm94eS5oOgor
ICAgICAgICAqIFVJUHJvY2Vzcy9XZWJDb29raWVNYW5hZ2VyUHJveHkuaDoKKyAgICAgICAgKiBV
SVByb2Nlc3MvV2ViRWRpdENvbW1hbmRQcm94eS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkVk
aXRDb21tYW5kUHJveHk6OnVuYXBwbHkpOgorICAgICAgICAoV2ViS2l0OjpXZWJFZGl0Q29tbWFu
ZFByb3h5OjpyZWFwcGx5KToKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViRWRpdENvbW1hbmRQcm94
eS5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJHcmFtbWFyRGV0YWlsLmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViR3JhbW1hckRldGFpbDo6Y3JlYXRlKToKKyAgICAgICAgKiBVSVByb2Nlc3Mv
V2ViR3JhbW1hckRldGFpbC5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpFeGNlZWRlZERhdGFiYXNlUXVvdGFSZWNvcmRzOjpjcmVhdGVS
ZWNvcmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJlZ2lzdGVyRWRpdENvbW1h
bmQpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRpZFJlY2VpdmVBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZVByb3h5KToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpleGNl
ZWRlZERhdGFiYXNlUXVvdGEpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnJlYWNo
ZWRBcHBsaWNhdGlvbkNhY2hlT3JpZ2luUXVvdGEpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdl
UHJveHk6OnRha2VWaWV3U25hcHNob3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9XZWJQYWdlUHJv
eHkuaDoKKyAgICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwOgorICAgICAgICAo
V2ViS2l0OjpXZWJQcm9jZXNzUG9vbDo6cGx1Z0luQXV0b1N0YXJ0T3JpZ2luSGFzaGVzKToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaDoKKyAgICAgICAgKiBVSVByb2Nlc3Mv
V2ViUHJvY2Vzc1Byb3h5Lmg6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1w
bElPUy5oOgorICAgICAgICAqIFVJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MubW06Cisg
ICAgICAgICgtW1dLRWRpdENvbW1hbmRPYmpDIGluaXRXaXRoV2ViRWRpdENvbW1hbmRQcm94eTpd
KToKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6OnJlZ2lzdGVyRWRpdENvbW1hbmQp
OgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6c2F2ZUltYWdlVG9MaWJyYXJ5KToK
KyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6OnNldERyYWdJbWFnZSk6CisgICAgICAg
IChXZWJLaXQ6OlBhZ2VDbGllbnRJbXBsOjp0YWtlVmlld1NuYXBzaG90KToKKyAgICAgICAgKiBV
SVByb2Nlc3MvaW9zL1dLR2VvbG9jYXRpb25Qcm92aWRlcklPUy5tbToKKyAgICAgICAgKC1bV0tX
ZWJBbGxvd0RlbnlQb2xpY3lMaXN0ZW5lciBpbml0V2l0aFBlcm1pc3Npb25SZXF1ZXN0UHJveHk6
XSk6CisgICAgICAgICogVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW06CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6c2F2ZUltYWdlVG9MaWJyYXJ5KToKKyAgICAgICAgKiBV
SVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsLmg6CisgICAgICAgICogVUlQcm9jZXNzL21hYy9Q
YWdlQ2xpZW50SW1wbC5tbToKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6OnJlZ2lz
dGVyRWRpdENvbW1hbmQpOgorICAgICAgICAoV2ViS2l0OjpQYWdlQ2xpZW50SW1wbDo6c2V0RHJh
Z0ltYWdlKToKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6OnNldFByb21pc2VkRGF0
YUZvckltYWdlKToKKyAgICAgICAgKFdlYktpdDo6UGFnZUNsaWVudEltcGw6OnRha2VWaWV3U25h
cHNob3QpOgorICAgICAgICAqIFVJUHJvY2Vzcy9tYWMvV0tJbW1lZGlhdGVBY3Rpb25Db250cm9s
bGVyLm1tOgorICAgICAgICAoLVtXS0ltbWVkaWF0ZUFjdGlvbkNvbnRyb2xsZXIgX3dlYkhpdFRl
c3RSZXN1bHRdKToKKyAgICAgICAgKiBVSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbToK
KyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpzZXREcmFnSW1hZ2UpOgorICAgICAgICAo
V2ViS2l0OjpXZWJQYWdlUHJveHk6OnNldFByb21pc2VkRGF0YUZvckltYWdlKToKKyAgICAgICAg
KiBXZWJQcm9jZXNzL0ljb25EYXRhYmFzZS9XZWJJY29uRGF0YWJhc2VQcm94eS5oOgorCisyMDE3
LTA1LTEyICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CisKICAgICAgICAgU3RvcCB1
c2luZyBQYXNzUmVmUHRyIHVuZGVyIFdlYktpdDIvU2hhcmVkCiAgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNzIwMTcKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLQ29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0LmNwcAppbmRleCAxZDIyNTkzODYyZjA1ZmYzOTBkY2M5
NjhhMWQwMjY1NmZiYjFmZDg5Li5lNGYwNGQ0MDNjMTFkMWUyNTIyMTY3MjZjZDg1MTUzNGJlZmVl
ZTA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tDb250ZXh0LmNwcApA
QCAtNTM5LDcgKzUzOSw3IEBAIHZvaWQgV0tDb250ZXh0Q2xlYXJDYWNoZWRDcmVkZW50aWFscyhX
S0NvbnRleHRSZWYgY29udGV4dCkKIAogV0tEaWN0aW9uYXJ5UmVmIFdLQ29udGV4dENvcHlQbHVn
SW5BdXRvU3RhcnRPcmlnaW5IYXNoZXMoV0tDb250ZXh0UmVmIGNvbnRleHRSZWYpCiB7Ci0gICAg
cmV0dXJuIHRvQVBJKHRvSW1wbChjb250ZXh0UmVmKS0+cGx1Z0luQXV0b1N0YXJ0T3JpZ2luSGFz
aGVzKCkubGVha1JlZigpKTsKKyAgICByZXR1cm4gdG9BUEkoJnRvSW1wbChjb250ZXh0UmVmKS0+
cGx1Z0luQXV0b1N0YXJ0T3JpZ2luSGFzaGVzKCkubGVha1JlZigpKTsKIH0KIAogdm9pZCBXS0Nv
bnRleHRTZXRQbHVnSW5BdXRvU3RhcnRPcmlnaW5IYXNoZXMoV0tDb250ZXh0UmVmIGNvbnRleHRS
ZWYsIFdLRGljdGlvbmFyeVJlZiBkaWN0aW9uYXJ5UmVmKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0FQSS9DL1dLR3JhbW1hckRldGFpbC5jcHAgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL0MvV0tHcmFtbWFyRGV0YWlsLmNwcAppbmRleCBhZmQ5ODk1ZGRlM2Rm
NGUzZDYxNzg3MjQ3YTQzYjYxYThlOWY3ZWNhLi5lMmYzOWNkMWJmNjAwMTFmODU2Yjk5NjE3NDhh
ZjQ1YWFhZDcyMDg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Mv
V0tHcmFtbWFyRGV0YWlsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0Mv
V0tHcmFtbWFyRGV0YWlsLmNwcApAQCAtNDEsNyArNDEsNyBAQCBXS1R5cGVJRCBXS0dyYW1tYXJE
ZXRhaWxHZXRUeXBlSUQoKQogV0tHcmFtbWFyRGV0YWlsUmVmIFdLR3JhbW1hckRldGFpbENyZWF0
ZShpbnQgbG9jYXRpb24sIGludCBsZW5ndGgsIFdLQXJyYXlSZWYgZ3Vlc3NlcywgV0tTdHJpbmdS
ZWYgdXNlckRlc2NyaXB0aW9uKQogewogICAgIGF1dG8gZGV0YWlsID0gV2ViR3JhbW1hckRldGFp
bDo6Y3JlYXRlKGxvY2F0aW9uLCBsZW5ndGgsIHRvSW1wbChndWVzc2VzKSwgdG9XVEZTdHJpbmco
dXNlckRlc2NyaXB0aW9uKSk7Ci0gICAgcmV0dXJuIHRvQVBJKGRldGFpbC5sZWFrUmVmKCkpOwor
ICAgIHJldHVybiB0b0FQSSgmZGV0YWlsLmxlYWtSZWYoKSk7CiB9CiAKIGludCBXS0dyYW1tYXJE
ZXRhaWxHZXRMb2NhdGlvbihXS0dyYW1tYXJEZXRhaWxSZWYgZ3JhbW1hckRldGFpbFJlZikKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3Lm1t
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KaW5kZXgg
MGE0MDM1YzBhNjBlNGNiMjI4Y2FhNzllNTdhYjA4MTE1NDYwODcyYy4uZTUyODk0OWQ4NTUzNDVm
ZDMzNGY2MjYxZmIzNjI3Y2MyNjYxMTdmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXcubW0KQEAgLTE2MzAsNyArMTYzMCw3IEBAIC0gKHZvaWQp
X3Jlc3RvcmVQYWdlU3RhdGVUb1Vub2JzY3VyZWRDZW50ZXI6KHN0ZDo6b3B0aW9uYWw8V2ViQ29y
ZTo6RmxvYXRQb2ludD4pCiAgICAgX3NjYWxlVG9SZXN0b3JlID0gc2NhbGU7CiB9CiAKLS0gKFBh
c3NSZWZQdHI8V2ViS2l0OjpWaWV3U25hcHNob3Q+KV90YWtlVmlld1NuYXBzaG90CistIChSZWZQ
dHI8V2ViS2l0OjpWaWV3U25hcHNob3Q+KV90YWtlVmlld1NuYXBzaG90CiB7CiAgICAgZmxvYXQg
ZGV2aWNlU2NhbGUgPSBXZWJDb3JlOjpzY3JlZW5TY2FsZUZhY3RvcigpOwogICAgIFdlYkNvcmU6
OkZsb2F0U2l6ZSBzbmFwc2hvdFNpemUoc2VsZi5ib3VuZHMuc2l6ZSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0ludGVybmFsLmggYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0NvY29hL1dLV2ViVmlld0ludGVybmFsLmgKaW5k
ZXggM2Q2MDY2ZTUxMzU1MjBmYTI0YmYwZGU1MjY5ZWU1NDkzOTNiYjdkNi4uNTI5MzgwNzMzYWIx
ZTY3MDJhZDZlYTQ4YWRhNjk4ZDY4NjU0YmZlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9Db2NvYS9XS1dlYlZpZXdJbnRlcm5hbC5oCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9BUEkvQ29jb2EvV0tXZWJWaWV3SW50ZXJuYWwuaApAQCAtODUsNyArODUs
NyBAQCBzdHJ1Y3QgUHJpbnRJbmZvOwogLSAodm9pZClfcmVzdG9yZVBhZ2VTY3JvbGxQb3NpdGlv
bjooc3RkOjpvcHRpb25hbDxXZWJDb3JlOjpGbG9hdFBvaW50PilzY3JvbGxQb3NpdGlvbiBzY3Jv
bGxPcmlnaW46KFdlYkNvcmU6OkZsb2F0UG9pbnQpc2Nyb2xsT3JpZ2luIHByZXZpb3VzT2JzY3Vy
ZWRJbnNldDooV2ViQ29yZTo6RmxvYXRCb3hFeHRlbnQpaW5zZXRzIHNjYWxlOihkb3VibGUpc2Nh
bGU7CiAtICh2b2lkKV9yZXN0b3JlUGFnZVN0YXRlVG9Vbm9ic2N1cmVkQ2VudGVyOihzdGQ6Om9w
dGlvbmFsPFdlYkNvcmU6OkZsb2F0UG9pbnQ+KWNlbnRlciBzY2FsZTooZG91YmxlKXNjYWxlOyAv
LyBGSVhNRTogbmVlZHMgc2Nyb2xsIG9yaWdpbj8KIAotLSAoUGFzc1JlZlB0cjxXZWJLaXQ6OlZp
ZXdTbmFwc2hvdD4pX3Rha2VWaWV3U25hcHNob3Q7CistIChSZWZQdHI8V2ViS2l0OjpWaWV3U25h
cHNob3Q+KV90YWtlVmlld1NuYXBzaG90OwogCiAtICh2b2lkKV9zY3JvbGxUb0NvbnRlbnRTY3Jv
bGxQb3NpdGlvbjooV2ViQ29yZTo6RmxvYXRQb2ludClzY3JvbGxQb3NpdGlvbiBzY3JvbGxPcmln
aW46KFdlYkNvcmU6OkludFBvaW50KXNjcm9sbE9yaWdpbjsKIC0gKEJPT0wpX3Njcm9sbFRvUmVj
dDooV2ViQ29yZTo6RmxvYXRSZWN0KXRhcmdldFJlY3Qgb3JpZ2luOihXZWJDb3JlOjpGbG9hdFBv
aW50KW9yaWdpbiBtaW5pbXVtU2Nyb2xsRGlzdGFuY2U6KGZsb2F0KW1pbmltdW1TY3JvbGxEaXN0
YW5jZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1BhZ2VD
bGllbnRJbXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1BhZ2VDbGll
bnRJbXBsLmNwcAppbmRleCBmYjdjODVlNzU1MDVkNTc2NzY5ODVjYzFhMmZmNzJkM2FiZWQyOTk5
Li45OGUwNjczYWE1MWRkYTI5YzE3M2NiOTdhYjE1ZTM4ZWFlNzM5NzFkIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xpZW50SW1wbC5jcHAKKysrIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsvUGFnZUNsaWVudEltcGwuY3BwCkBAIC0x
NDcsOSArMTQ3LDkgQEAgdm9pZCBQYWdlQ2xpZW50SW1wbDo6ZGlkQ2hhbmdlVmlld3BvcnRQcm9w
ZXJ0aWVzKGNvbnN0IFdlYkNvcmU6OlZpZXdwb3J0QXR0cmlidXQKICAgICBub3RJbXBsZW1lbnRl
ZCgpOwogfQogCi12b2lkIFBhZ2VDbGllbnRJbXBsOjpyZWdpc3RlckVkaXRDb21tYW5kKFBhc3NS
ZWZQdHI8V2ViRWRpdENvbW1hbmRQcm94eT4gY29tbWFuZCwgV2ViUGFnZVByb3h5OjpVbmRvT3JS
ZWRvIHVuZG9PclJlZG8pCit2b2lkIFBhZ2VDbGllbnRJbXBsOjpyZWdpc3RlckVkaXRDb21tYW5k
KFJlZjxXZWJFZGl0Q29tbWFuZFByb3h5PiYmIGNvbW1hbmQsIFdlYlBhZ2VQcm94eTo6VW5kb09y
UmVkbyB1bmRvT3JSZWRvKQogewotICAgIG1fdW5kb0NvbnRyb2xsZXIucmVnaXN0ZXJFZGl0Q29t
bWFuZChjb21tYW5kLCB1bmRvT3JSZWRvKTsKKyAgICBtX3VuZG9Db250cm9sbGVyLnJlZ2lzdGVy
RWRpdENvbW1hbmQoV1RGTW92ZShjb21tYW5kKSwgdW5kb09yUmVkbyk7CiB9CiAKIHZvaWQgUGFn
ZUNsaWVudEltcGw6OmNsZWFyQWxsRWRpdENvbW1hbmRzKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1BhZ2VDbGllbnRJbXBsLmggYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvQVBJL2d0ay9QYWdlQ2xpZW50SW1wbC5oCmluZGV4IDFjNjE4ZTFlMzEwYWEw
YTgxOGQ0ZTE3MDNjNTQ3NzU5MDk5YTk1OGUuLmEwMWJmMDdiMmQwNDI0ODlkZjcwZjU0YzNhNGY0
YjQ0ZTEzMGRlY2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3Rr
L1BhZ2VDbGllbnRJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS9ndGsv
UGFnZUNsaWVudEltcGwuaApAQCAtNzEsNyArNzEsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc2V0
Q3Vyc29yKGNvbnN0IFdlYkNvcmU6OkN1cnNvciYpIG92ZXJyaWRlOwogICAgIHZvaWQgc2V0Q3Vy
c29ySGlkZGVuVW50aWxNb3VzZU1vdmVzKGJvb2wpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkQ2hh
bmdlVmlld3BvcnRQcm9wZXJ0aWVzKGNvbnN0IFdlYkNvcmU6OlZpZXdwb3J0QXR0cmlidXRlcyYp
IG92ZXJyaWRlOwotICAgIHZvaWQgcmVnaXN0ZXJFZGl0Q29tbWFuZChQYXNzUmVmUHRyPFdlYkVk
aXRDb21tYW5kUHJveHk+LCBXZWJQYWdlUHJveHk6OlVuZG9PclJlZG8pIG92ZXJyaWRlOworICAg
IHZvaWQgcmVnaXN0ZXJFZGl0Q29tbWFuZChSZWY8V2ViRWRpdENvbW1hbmRQcm94eT4mJiwgV2Vi
UGFnZVByb3h5OjpVbmRvT3JSZWRvKSBvdmVycmlkZTsKICAgICB2b2lkIGNsZWFyQWxsRWRpdENv
bW1hbmRzKCkgb3ZlcnJpZGU7CiAgICAgYm9vbCBjYW5VbmRvUmVkbyhXZWJQYWdlUHJveHk6OlVu
ZG9PclJlZG8pIG92ZXJyaWRlOwogICAgIHZvaWQgZXhlY3V0ZVVuZG9SZWRvKFdlYlBhZ2VQcm94
eTo6VW5kb09yUmVkbykgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvQVBJL2d0ay9XZWJLaXRGYXZpY29uRGF0YWJhc2UuY3BwIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0FQSS9ndGsvV2ViS2l0RmF2aWNvbkRhdGFiYXNlLmNwcAppbmRleCA3NDY1NGJi
NGY4ODhlNDg2MzhmZjNlNTM2ZDUwNTk2ZWYwMjkyMDJjLi5mMzg4MjA5OGMzZGE5YjM1MDc3OTM5
ODEyMGQwZTIyNzM0ZDg5NDM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
QVBJL2d0ay9XZWJLaXRGYXZpY29uRGF0YWJhc2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9BUEkvZ3RrL1dlYktpdEZhdmljb25EYXRhYmFzZS5jcHAKQEAgLTEzMSw3ICsxMzEs
NyBAQCBzdHJ1Y3QgR2V0RmF2aWNvblN1cmZhY2VBc3luY0RhdGEgewogfTsKIFdFQktJVF9ERUZJ
TkVfQVNZTkNfREFUQV9TVFJVQ1QoR2V0RmF2aWNvblN1cmZhY2VBc3luY0RhdGEpCiAKLXN0YXRp
YyBQYXNzUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4gZ2V0SWNvblN1cmZhY2VTeW5jaHJvbm91c2x5
KFdlYktpdEZhdmljb25EYXRhYmFzZSogZGF0YWJhc2UsIGNvbnN0IFN0cmluZyYgcGFnZVVSTCwg
R0Vycm9yKiogZXJyb3IpCitzdGF0aWMgUmVmUHRyPGNhaXJvX3N1cmZhY2VfdD4gZ2V0SWNvblN1
cmZhY2VTeW5jaHJvbm91c2x5KFdlYktpdEZhdmljb25EYXRhYmFzZSogZGF0YWJhc2UsIGNvbnN0
IFN0cmluZyYgcGFnZVVSTCwgR0Vycm9yKiogZXJyb3IpCiB7CiAgICAgQVNTRVJUKFJ1bkxvb3A6
OmlzTWFpbigpKTsKIApAQCAtMTQwLDE2ICsxNDAsMTYgQEAgc3RhdGljIFBhc3NSZWZQdHI8Y2Fp
cm9fc3VyZmFjZV90PiBnZXRJY29uU3VyZmFjZVN5bmNocm9ub3VzbHkoV2ViS2l0RmF2aWNvbkRh
dGEKICAgICBXZWJDb3JlOjpJbWFnZSogaWNvbkltYWdlID0gZGF0YWJhc2UtPnByaXYtPmljb25E
YXRhYmFzZS0+aW1hZ2VGb3JQYWdlVVJMKHBhZ2VVUkwsIFdlYkNvcmU6OkludFNpemUoMSwgMSkp
OwogICAgIGlmICghaWNvbkltYWdlKSB7CiAgICAgICAgIGdfc2V0X2Vycm9yKGVycm9yLCBXRUJL
SVRfRkFWSUNPTl9EQVRBQkFTRV9FUlJPUiwgV0VCS0lUX0ZBVklDT05fREFUQUJBU0VfRVJST1Jf
RkFWSUNPTl9VTktOT1dOLCBfKCJVbmtub3duIGZhdmljb24gZm9yIHBhZ2UgJXMiKSwgcGFnZVVS
TC51dGY4KCkuZGF0YSgpKTsKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxs
cHRyOwogICAgIH0KIAogICAgIFJlZlB0cjxjYWlyb19zdXJmYWNlX3Q+IHN1cmZhY2UgPSBpY29u
SW1hZ2UtPm5hdGl2ZUltYWdlRm9yQ3VycmVudEZyYW1lKCk7CiAgICAgaWYgKCFzdXJmYWNlKSB7
CiAgICAgICAgIGdfc2V0X2Vycm9yKGVycm9yLCBXRUJLSVRfRkFWSUNPTl9EQVRBQkFTRV9FUlJP
UiwgV0VCS0lUX0ZBVklDT05fREFUQUJBU0VfRVJST1JfRkFWSUNPTl9OT1RfRk9VTkQsIF8oIlBh
Z2UgJXMgZG9lcyBub3QgaGF2ZSBhIGZhdmljb24iKSwgcGFnZVVSTC51dGY4KCkuZGF0YSgpKTsK
LSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxscHRyOwogICAgIH0KIAotICAg
IHJldHVybiBzdXJmYWNlLnJlbGVhc2UoKTsKKyAgICByZXR1cm4gc3VyZmFjZTsKIH0KIAogc3Rh
dGljIHZvaWQgZGVsZXRlUGVuZGluZ0ljb25SZXF1ZXN0cyhXZWJLaXRGYXZpY29uRGF0YWJhc2Uq
IGRhdGFiYXNlLCBQZW5kaW5nSWNvblJlcXVlc3RWZWN0b3IqIHJlcXVlc3RzLCBjb25zdCBTdHJp
bmcmIHBhZ2VVUkwpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL2d0
ay9XZWJLaXRXZWJDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3Rr
L1dlYktpdFdlYkNvbnRleHQuY3BwCmluZGV4IDk2MjkzMTRkMTUxNTYzOWNmOWJlZGUwYzc0ZDZh
MGIzZjRhYzYwYmUuLmQxN2QyNzY3NjI3YWVkMjM1NzZkZDJmZjhlNjkzZmEyYzk3ODM4ODYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYkNvbnRl
eHQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvZ3RrL1dlYktpdFdlYkNv
bnRleHQuY3BwCkBAIC02Myw4ICs2Myw4IEBACiAjaW5jbHVkZSA8bWVtb3J5PgogI2luY2x1ZGUg
PHd0Zi9IYXNoTWFwLmg+CiAjaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJveWVkLmg+Ci0jaW5jbHVk
ZSA8d3RmL1Bhc3NSZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorI2luY2x1
ZGUgPHd0Zi9SZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvZ2xpYi9HUmVmUHRyLmg+CiAjaW5jbHVk
ZSA8d3RmL2dsaWIvR1VuaXF1ZVB0ci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvd3BlL1BhZ2VDbGllbnRJ
bXBsLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvd3BlL1BhZ2VDbGllbnRJbXBs
LmNwcAppbmRleCBkMTY1MzA5NWZiNTg0OWNlODBmNjc4ZDM3MzIyMjg2ZjM1ODgyYWNkLi4zMTYz
OTQ5YjJhZGE3OTYwZTUwM2RiZGFjOWJkNTE1MzE5NGFlN2ViIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3dwZS9QYWdlQ2xpZW50SW1wbC5jcHAKKysrIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS93cGUvUGFnZUNsaWVudEltcGwuY3BwCkBAIC0xMzIsNyAr
MTMyLDcgQEAgdm9pZCBQYWdlQ2xpZW50SW1wbDo6ZGlkQ2hhbmdlVmlld3BvcnRQcm9wZXJ0aWVz
KGNvbnN0IFdlYkNvcmU6OlZpZXdwb3J0QXR0cmlidXQKIHsKIH0KIAotdm9pZCBQYWdlQ2xpZW50
SW1wbDo6cmVnaXN0ZXJFZGl0Q29tbWFuZChQYXNzUmVmUHRyPFdlYkVkaXRDb21tYW5kUHJveHk+
LCBXZWJQYWdlUHJveHk6OlVuZG9PclJlZG8pCit2b2lkIFBhZ2VDbGllbnRJbXBsOjpyZWdpc3Rl
ckVkaXRDb21tYW5kKFJlZjxXZWJFZGl0Q29tbWFuZFByb3h5PiYmLCBXZWJQYWdlUHJveHk6OlVu
ZG9PclJlZG8pCiB7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9B
UEkvd3BlL1BhZ2VDbGllbnRJbXBsLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL3dw
ZS9QYWdlQ2xpZW50SW1wbC5oCmluZGV4IGU3OWFjZTEwNmY2MWQxOWVhZTBjOTllYWIwYWQyNjUx
MTlhZWUxZTEuLmQxNDU2YmVmOWZjNDQ3NzMyYTRhY2RkZjY0MmMzOWZmYjg1M2ZjYjUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvd3BlL1BhZ2VDbGllbnRJbXBsLmgK
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0FQSS93cGUvUGFnZUNsaWVudEltcGwuaApA
QCAtNjcsNyArNjcsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgc2V0Q3Vyc29ySGlkZGVuVW50aWxN
b3VzZU1vdmVzKGJvb2wpIG92ZXJyaWRlOwogICAgIHZvaWQgZGlkQ2hhbmdlVmlld3BvcnRQcm9w
ZXJ0aWVzKGNvbnN0IFdlYkNvcmU6OlZpZXdwb3J0QXR0cmlidXRlcyYpIG92ZXJyaWRlOwogCi0g
ICAgdm9pZCByZWdpc3RlckVkaXRDb21tYW5kKFBhc3NSZWZQdHI8V2ViRWRpdENvbW1hbmRQcm94
eT4sIFdlYlBhZ2VQcm94eTo6VW5kb09yUmVkbykgb3ZlcnJpZGU7CisgICAgdm9pZCByZWdpc3Rl
ckVkaXRDb21tYW5kKFJlZjxXZWJFZGl0Q29tbWFuZFByb3h5PiYmLCBXZWJQYWdlUHJveHk6OlVu
ZG9PclJlZG8pIG92ZXJyaWRlOwogICAgIHZvaWQgY2xlYXJBbGxFZGl0Q29tbWFuZHMoKSBvdmVy
cmlkZTsKICAgICBib29sIGNhblVuZG9SZWRvKFdlYlBhZ2VQcm94eTo6VW5kb09yUmVkbykgb3Zl
cnJpZGU7CiAgICAgdm9pZCBleGVjdXRlVW5kb1JlZG8oV2ViUGFnZVByb3h5OjpVbmRvT3JSZWRv
KSBvdmVycmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9X
ZWJWaWV3SW1wbC5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBs
LmgKaW5kZXggNmE4MzhlMWNhMjBhZTk0ZDIwNTg4MzhhODc0N2Q0NWVlMTVlYWE3Ni4uNzIyYzMx
ZWEyODJlNmQ5ZDE0YjhiZTAyOThlYzFmOGRiMmNiY2Y0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLmgKKysrIGIvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLmgKQEAgLTI4MCw3ICsyODAsNyBAQCBwdWJsaWM6
CiAgICAgYm9vbCBpc0VkaXRhYmxlKCkgY29uc3Q7CiAgICAgYm9vbCBleGVjdXRlU2F2ZWRDb21t
YW5kQnlTZWxlY3RvcihTRUwpOwogICAgIHZvaWQgZXhlY3V0ZUVkaXRDb21tYW5kRm9yU2VsZWN0
b3IoU0VMLCBjb25zdCBTdHJpbmcmIGFyZ3VtZW50ID0gU3RyaW5nKCkpOwotICAgIHZvaWQgcmVn
aXN0ZXJFZGl0Q29tbWFuZChSZWZQdHI8V2ViRWRpdENvbW1hbmRQcm94eT4sIFdlYlBhZ2VQcm94
eTo6VW5kb09yUmVkbyk7CisgICAgdm9pZCByZWdpc3RlckVkaXRDb21tYW5kKFJlZjxXZWJFZGl0
Q29tbWFuZFByb3h5PiYmLCBXZWJQYWdlUHJveHk6OlVuZG9PclJlZG8pOwogICAgIHZvaWQgY2xl
YXJBbGxFZGl0Q29tbWFuZHMoKTsKICAgICBib29sIHdyaXRlU2VsZWN0aW9uVG9QYXN0ZWJvYXJk
KE5TUGFzdGVib2FyZCAqLCBOU0FycmF5ICp0eXBlcyk7CiAgICAgYm9vbCByZWFkU2VsZWN0aW9u
RnJvbVBhc3RlYm9hcmQoTlNQYXN0ZWJvYXJkICopOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0NvY29hL1dlYlZpZXdJbXBsLm1tCmluZGV4IDI4ZWE3YWU5YjFjMGZhM2EwMzM5MzMxNGIz
M2MxNTI1ZjIxNDRhZDMuLmMyMjUxNjQ4ZjI3MTc3OWQ4MWVlMDc3ZWY4Nzg2MDc3OTQ5ZWJmZjEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9XZWJWaWV3SW1wbC5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvV2ViVmlld0ltcGwubW0KQEAg
LTI1MzEsMTEgKzI1MzEsOSBAQCB2b2lkIFdlYlZpZXdJbXBsOjpleGVjdXRlRWRpdENvbW1hbmRG
b3JTZWxlY3RvcihTRUwgc2VsZWN0b3IsIGNvbnN0IFN0cmluZyYgYXJndQogICAgIG1fcGFnZS0+
ZXhlY3V0ZUVkaXRDb21tYW5kKGNvbW1hbmROYW1lRm9yU2VsZWN0b3Ioc2VsZWN0b3IpLCBhcmd1
bWVudCk7CiB9CiAKLXZvaWQgV2ViVmlld0ltcGw6OnJlZ2lzdGVyRWRpdENvbW1hbmQoUmVmUHRy
PFdlYkVkaXRDb21tYW5kUHJveHk+IHBycENvbW1hbmQsIFdlYlBhZ2VQcm94eTo6VW5kb09yUmVk
byB1bmRvT3JSZWRvKQordm9pZCBXZWJWaWV3SW1wbDo6cmVnaXN0ZXJFZGl0Q29tbWFuZChSZWY8
V2ViRWRpdENvbW1hbmRQcm94eT4mJiBjb21tYW5kLCBXZWJQYWdlUHJveHk6OlVuZG9PclJlZG8g
dW5kb09yUmVkbykKIHsKLSAgICBSZWZQdHI8V2ViRWRpdENvbW1hbmRQcm94eT4gY29tbWFuZCA9
IHBycENvbW1hbmQ7Ci0KLSAgICBSZXRhaW5QdHI8V0tFZGl0Q29tbWFuZE9iakM+IGNvbW1hbmRP
YmpDID0gYWRvcHROUyhbW1dLRWRpdENvbW1hbmRPYmpDIGFsbG9jXSBpbml0V2l0aFdlYkVkaXRD
b21tYW5kUHJveHk6Y29tbWFuZF0pOworICAgIFJldGFpblB0cjxXS0VkaXRDb21tYW5kT2JqQz4g
Y29tbWFuZE9iakMgPSBhZG9wdE5TKFtbV0tFZGl0Q29tbWFuZE9iakMgYWxsb2NdIGluaXRXaXRo
V2ViRWRpdENvbW1hbmRQcm94eTpjb21tYW5kLnB0cigpXSk7CiAgICAgU3RyaW5nIGFjdGlvbk5h
bWUgPSBXZWJFZGl0Q29tbWFuZFByb3h5OjpuYW1lRm9yRWRpdEFjdGlvbihjb21tYW5kLT5lZGl0
QWN0aW9uKCkpOwogCiAgICAgTlNVbmRvTWFuYWdlciAqdW5kb01hbmFnZXIgPSBbbV92aWV3IHVu
ZG9NYW5hZ2VyXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9EZWZhdWx0
VW5kb0NvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0RlZmF1bHRVbmRv
Q29udHJvbGxlci5jcHAKaW5kZXggYTJkZjc2Y2Q4NDk1MWY0MTk1MTQ5ZjMyNTg0NDE3NDIyYzYx
MzIzYS4uOTQyNmIxZThhYmMyNDA1MGY4OTg2MmU2MjkxMzJkODBlZWRiNDYxZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0RlZmF1bHRVbmRvQ29udHJvbGxlci5jcHAKKysr
IGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0RlZmF1bHRVbmRvQ29udHJvbGxlci5jcHAKQEAg
LTI3LDEyICsyNywxMiBAQAogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotdm9pZCBEZWZhdWx0VW5k
b0NvbnRyb2xsZXI6OnJlZ2lzdGVyRWRpdENvbW1hbmQoUGFzc1JlZlB0cjxXZWJFZGl0Q29tbWFu
ZFByb3h5PiBjb21tYW5kLCBXZWJQYWdlUHJveHk6OlVuZG9PclJlZG8gdW5kb09yUmVkbykKK3Zv
aWQgRGVmYXVsdFVuZG9Db250cm9sbGVyOjpyZWdpc3RlckVkaXRDb21tYW5kKFJlZjxXZWJFZGl0
Q29tbWFuZFByb3h5PiYmIGNvbW1hbmQsIFdlYlBhZ2VQcm94eTo6VW5kb09yUmVkbyB1bmRvT3JS
ZWRvKQogewogICAgIGlmICh1bmRvT3JSZWRvID09IFdlYlBhZ2VQcm94eTo6VW5kbykKLSAgICAg
ICAgbV91bmRvU3RhY2suYXBwZW5kKGNvbW1hbmQpOworICAgICAgICBtX3VuZG9TdGFjay5hcHBl
bmQoV1RGTW92ZShjb21tYW5kKSk7CiAgICAgZWxzZQotICAgICAgICBtX3JlZG9TdGFjay5hcHBl
bmQoY29tbWFuZCk7CisgICAgICAgIG1fcmVkb1N0YWNrLmFwcGVuZChXVEZNb3ZlKGNvbW1hbmQp
KTsKIH0KIAogdm9pZCBEZWZhdWx0VW5kb0NvbnRyb2xsZXI6OmNsZWFyQWxsRWRpdENvbW1hbmRz
KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9EZWZhdWx0VW5kb0NvbnRy
b2xsZXIuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9EZWZhdWx0VW5kb0NvbnRyb2xsZXIu
aAppbmRleCAzMTYxN2EwZWM5ODk2Y2U0Zjg4M2Y2ZTRlNWM0MzQ0ZTBkZDliNjQxLi44MDAyZGM5
NGNiMjVmNGY1MWMyMjdmMmM1YjczMjRlODlhOTMxNjQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvRGVmYXVsdFVuZG9Db250cm9sbGVyLmgKKysrIGIvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0RlZmF1bHRVbmRvQ29udHJvbGxlci5oCkBAIC0yOSw3ICsyOSw3IEBAIG5h
bWVzcGFjZSBXZWJLaXQgewogCiBjbGFzcyBEZWZhdWx0VW5kb0NvbnRyb2xsZXIgewogcHVibGlj
OgotICAgIHZvaWQgcmVnaXN0ZXJFZGl0Q29tbWFuZChQYXNzUmVmUHRyPFdlYkVkaXRDb21tYW5k
UHJveHk+LCBXZWJQYWdlUHJveHk6OlVuZG9PclJlZG8pOworICAgIHZvaWQgcmVnaXN0ZXJFZGl0
Q29tbWFuZChSZWY8V2ViRWRpdENvbW1hbmRQcm94eT4mJiwgV2ViUGFnZVByb3h5OjpVbmRvT3JS
ZWRvKTsKICAgICB2b2lkIGNsZWFyQWxsRWRpdENvbW1hbmRzKCk7CiAgICAgYm9vbCBjYW5VbmRv
UmVkbyhXZWJQYWdlUHJveHk6OlVuZG9PclJlZG8pOwogICAgIHZvaWQgZXhlY3V0ZVVuZG9SZWRv
KFdlYlBhZ2VQcm94eTo6VW5kb09yUmVkbyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFByb3h5LmNwcAppbmRleCAxMDkyNWU0NDkwM2Y2NGRl
OWNjZmNjOTFkYzdmNTcxNWI5ZGJhNTI5Li5hNTM1YWMyNzBlMTFkZDE0ZGIwYmU4ZjFkZGZlZDdl
ZjQxN2YwMzUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvRG93bmxvYWRz
L0Rvd25sb2FkUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Eb3dubG9h
ZHMvRG93bmxvYWRQcm94eS5jcHAKQEAgLTUxLDkgKzUxLDkgQEAgc3RhdGljIHVpbnQ2NF90IGdl
bmVyYXRlRG93bmxvYWRJRCgpCiAgICAgcmV0dXJuICsrdW5pcXVlRG93bmxvYWRJRDsKIH0KICAg
ICAKLVBhc3NSZWZQdHI8RG93bmxvYWRQcm94eT4gRG93bmxvYWRQcm94eTo6Y3JlYXRlKERvd25s
b2FkUHJveHlNYXAmIGRvd25sb2FkUHJveHlNYXAsIFdlYlByb2Nlc3NQb29sJiBwcm9jZXNzUG9v
bCwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXNvdXJjZVJlcXVlc3QpCitSZWY8RG93bmxvYWRQ
cm94eT4gRG93bmxvYWRQcm94eTo6Y3JlYXRlKERvd25sb2FkUHJveHlNYXAmIGRvd25sb2FkUHJv
eHlNYXAsIFdlYlByb2Nlc3NQb29sJiBwcm9jZXNzUG9vbCwgY29uc3QgUmVzb3VyY2VSZXF1ZXN0
JiByZXNvdXJjZVJlcXVlc3QpCiB7Ci0gICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBEb3dubG9hZFBy
b3h5KGRvd25sb2FkUHJveHlNYXAsIHByb2Nlc3NQb29sLCByZXNvdXJjZVJlcXVlc3QpKTsKKyAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBEb3dubG9hZFByb3h5KGRvd25sb2FkUHJveHlNYXAsIHBy
b2Nlc3NQb29sLCByZXNvdXJjZVJlcXVlc3QpKTsKIH0KIAogRG93bmxvYWRQcm94eTo6RG93bmxv
YWRQcm94eShEb3dubG9hZFByb3h5TWFwJiBkb3dubG9hZFByb3h5TWFwLCBXZWJQcm9jZXNzUG9v
bCYgcHJvY2Vzc1Bvb2wsIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVzb3VyY2VSZXF1ZXN0KQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0Rvd25sb2Fkcy9Eb3dubG9hZFBy
b3h5LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHku
aAppbmRleCAxY2FkYThlMmE3ZWJiYmU2OGZjMDc0ODNjNDJjYmFkYTgxNWEzZDBhLi5lMmFlNTZl
Mjg0ZWUyMTkxZTc0MmMzZmY0N2NjZjIyNDcwZmZkODlmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHkuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvRG93bmxvYWRzL0Rvd25sb2FkUHJveHkuaApAQCAtMzIsNyArMzIsNyBA
QAogI2luY2x1ZGUgIlNhbmRib3hFeHRlbnNpb24uaCIKICNpbmNsdWRlIDxXZWJDb3JlL1Jlc291
cmNlUmVxdWVzdC5oPgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+Ci0jaW5jbHVkZSA8d3RmL1Bh
c3NSZWZQdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmLmg+CiAKIG5hbWVzcGFjZSBBUEkgewogY2xh
c3MgRGF0YTsKQEAgLTU0LDcgKzU0LDcgQEAgY2xhc3MgV2ViUHJvY2Vzc1Bvb2w7CiAKIGNsYXNz
IERvd25sb2FkUHJveHkgOiBwdWJsaWMgQVBJOjpPYmplY3RJbXBsPEFQSTo6T2JqZWN0OjpUeXBl
OjpEb3dubG9hZD4sIHB1YmxpYyBJUEM6Ok1lc3NhZ2VSZWNlaXZlciB7CiBwdWJsaWM6Ci0gICAg
c3RhdGljIFBhc3NSZWZQdHI8RG93bmxvYWRQcm94eT4gY3JlYXRlKERvd25sb2FkUHJveHlNYXAm
LCBXZWJQcm9jZXNzUG9vbCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpOworICAg
IHN0YXRpYyBSZWY8RG93bmxvYWRQcm94eT4gY3JlYXRlKERvd25sb2FkUHJveHlNYXAmLCBXZWJQ
cm9jZXNzUG9vbCYsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlUmVxdWVzdCYpOwogICAgIH5Eb3du
bG9hZFByb3h5KCk7CiAKICAgICBEb3dubG9hZElEIGRvd25sb2FkSUQoKSBjb25zdCB7IHJldHVy
biBtX2Rvd25sb2FkSUQ7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9H
ZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9HZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmNw
cAppbmRleCAwY2Y3MDQ1MTE4MGE1Y2NhY2M5YmFmMWNhZGFiMWI0MWIzM2FkZmYxLi4yOTIwMTM3
NzY2MzdmYmY3YTYwNDgxZjZlYjg4ZmQ4ZjUyZmI0MmUyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5j
cHAKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0dlb2xvY2F0aW9uUGVybWlzc2lvblJl
cXVlc3RNYW5hZ2VyUHJveHkuY3BwCkBAIC00NSwxMSArNDUsMTEgQEAgdm9pZCBHZW9sb2NhdGlv
blBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5OjppbnZhbGlkYXRlUmVxdWVzdHMoKQogICAg
IG1fcGVuZGluZ1JlcXVlc3RzLmNsZWFyKCk7CiB9CiAKLVBhc3NSZWZQdHI8R2VvbG9jYXRpb25Q
ZXJtaXNzaW9uUmVxdWVzdFByb3h5PiBHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdl
clByb3h5OjpjcmVhdGVSZXF1ZXN0KHVpbnQ2NF90IGdlb2xvY2F0aW9uSUQpCitSZWY8R2VvbG9j
YXRpb25QZXJtaXNzaW9uUmVxdWVzdFByb3h5PiBHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0
TWFuYWdlclByb3h5OjpjcmVhdGVSZXF1ZXN0KHVpbnQ2NF90IGdlb2xvY2F0aW9uSUQpCiB7CiAg
ICAgYXV0byByZXF1ZXN0ID0gR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdFByb3h5OjpjcmVh
dGUodGhpcywgZ2VvbG9jYXRpb25JRCk7CiAgICAgbV9wZW5kaW5nUmVxdWVzdHMuYWRkKGdlb2xv
Y2F0aW9uSUQsIHJlcXVlc3QucHRyKCkpOwotICAgIHJldHVybiBXVEZNb3ZlKHJlcXVlc3QpOwor
ICAgIHJldHVybiByZXF1ZXN0OwogfQogCiB2b2lkIEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVl
c3RNYW5hZ2VyUHJveHk6OmRpZFJlY2VpdmVHZW9sb2NhdGlvblBlcm1pc3Npb25EZWNpc2lvbih1
aW50NjRfdCBnZW9sb2NhdGlvbklELCBib29sIGFsbG93ZWQpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94
eS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0dlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVl
c3RNYW5hZ2VyUHJveHkuaAppbmRleCAyZjE2OTI3MWIwZjVjZmYwMGY4NzRiYTgwODUyMTBhNTQ5
YWYyYTA5Li44MzA1MGYyZTdkNmJkMDVhMTcwOTAwZDZhMWYwNjMxZDMwY2M3ZmFjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVz
dE1hbmFnZXJQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9HZW9sb2NhdGlv
blBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5LmgKQEAgLTQwLDcgKzQwLDcgQEAgcHVibGlj
OgogICAgIHZvaWQgaW52YWxpZGF0ZVJlcXVlc3RzKCk7CiAKICAgICAvLyBDcmVhdGUgYSByZXF1
ZXN0IHRvIGJlIHByZXNlbnRlZCB0byB0aGUgdXNlci4KLSAgICBQYXNzUmVmUHRyPEdlb2xvY2F0
aW9uUGVybWlzc2lvblJlcXVlc3RQcm94eT4gY3JlYXRlUmVxdWVzdCh1aW50NjRfdCBnZW9sb2Nh
dGlvbklEKTsKKyAgICBSZWY8R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdFByb3h5PiBjcmVh
dGVSZXF1ZXN0KHVpbnQ2NF90IGdlb2xvY2F0aW9uSUQpOwogICAgIAogICAgIC8vIENhbGxlZCBi
eSBHZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0UHJveHkgd2hlbiBhIGRlY2lzaW9uIGlzIG1h
ZGUgYnkgdGhlIHVzZXIuCiAgICAgdm9pZCBkaWRSZWNlaXZlR2VvbG9jYXRpb25QZXJtaXNzaW9u
RGVjaXNpb24odWludDY0X3QsIGJvb2wgYWxsb3cpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0luc3BlY3RvclNlcnZlci9IVFRQUmVxdWVzdC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvSW5zcGVjdG9yU2VydmVyL0hUVFBSZXF1ZXN0LmNwcAppbmRleCBhMzhm
MjcyNjQ4YTVmM2M3ZWQ0OGQ3ZDQwZmE1Zjc3NjZhOGZlNjVhLi44NDZhNWM4ZmM4MmViMDY4NDY1
MjUzNjQ4MWJkNDkyZmVjMDcwMTVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvSW5zcGVjdG9yU2VydmVyL0hUVFBSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvSW5zcGVjdG9yU2VydmVyL0hUVFBSZXF1ZXN0LmNwcApAQCAtMzUsMTUgKzM1LDE1
IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogCiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotUGFz
c1JlZlB0cjxIVFRQUmVxdWVzdD4gSFRUUFJlcXVlc3Q6OnBhcnNlSFRUUFJlcXVlc3RGcm9tQnVm
ZmVyKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgsIFN0cmluZyYgZmFpbHVyZVJlYXNv
bikKK1JlZlB0cjxIVFRQUmVxdWVzdD4gSFRUUFJlcXVlc3Q6OnBhcnNlSFRUUFJlcXVlc3RGcm9t
QnVmZmVyKGNvbnN0IGNoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgsIFN0cmluZyYgZmFpbHVyZVJl
YXNvbikKIHsKICAgICBpZiAoIWxlbmd0aCkgewogICAgICAgICBmYWlsdXJlUmVhc29uID0gIk5v
IGRhdGEgdG8gcGFyc2UuIjsKLSAgICAgICAgcmV0dXJuIDA7CisgICAgICAgIHJldHVybiBudWxs
cHRyOwogICAgIH0KIAogICAgIC8vIFJlcXVlc3Qgd2Ugd2lsbCBiZSBidWlsZGluZy4KLSAgICBS
ZWZQdHI8SFRUUFJlcXVlc3Q+IHJlcXVlc3QgPSBIVFRQUmVxdWVzdDo6Y3JlYXRlKCk7CisgICAg
YXV0byByZXF1ZXN0ID0gSFRUUFJlcXVlc3Q6OmNyZWF0ZSgpOwogCiAgICAgLy8gQWR2YW5jZSBh
IHBvaW50ZXIgdGhyb3VnaCB0aGUgZGF0YSBhcyBuZWVkZWQuCiAgICAgY29uc3QgY2hhciogcG9z
ID0gZGF0YTsKQEAgLTUyLDE0ICs1MiwxNCBAQCBQYXNzUmVmUHRyPEhUVFBSZXF1ZXN0PiBIVFRQ
UmVxdWVzdDo6cGFyc2VIVFRQUmVxdWVzdEZyb21CdWZmZXIoY29uc3QgY2hhciogZGF0YQogICAg
IC8vIDEuIFBhcnNlIE1ldGhvZCArIFVSTC4KICAgICBzaXplX3QgcmVxdWVzdExpbmVMZW5ndGgg
PSByZXF1ZXN0LT5wYXJzZVJlcXVlc3RMaW5lKHBvcywgcmVtYWluaW5nTGVuZ3RoLCBmYWlsdXJl
UmVhc29uKTsKICAgICBpZiAoIXJlcXVlc3RMaW5lTGVuZ3RoKQotICAgICAgICByZXR1cm4gMDsK
KyAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgcG9zICs9IHJlcXVlc3RMaW5lTGVuZ3RoOwog
ICAgIHJlbWFpbmluZ0xlbmd0aCAtPSByZXF1ZXN0TGluZUxlbmd0aDsKIAogICAgIC8vIDIuIFBh
cnNlIEhUVFAgSGVhZGVycy4KICAgICBzaXplX3QgaGVhZGVyc0xlbmd0aCA9IHJlcXVlc3QtPnBh
cnNlSGVhZGVycyhwb3MsIHJlbWFpbmluZ0xlbmd0aCwgZmFpbHVyZVJlYXNvbik7CiAgICAgaWYg
KCFoZWFkZXJzTGVuZ3RoKQotICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgcmV0dXJuIG51bGxw
dHI7CiAgICAgcG9zICs9IGhlYWRlcnNMZW5ndGg7CiAgICAgcmVtYWluaW5nTGVuZ3RoIC09IGhl
YWRlcnNMZW5ndGg7CiAKQEAgLTcwLDcgKzcwLDcgQEAgUGFzc1JlZlB0cjxIVFRQUmVxdWVzdD4g
SFRUUFJlcXVlc3Q6OnBhcnNlSFRUUFJlcXVlc3RGcm9tQnVmZmVyKGNvbnN0IGNoYXIqIGRhdGEK
IAogICAgIC8vIFdlIHNob3VsZCBoYXZlIHByb2Nlc3NlZCB0aGUgZW50aXJlIGlucHV0LgogICAg
IEFTU0VSVCghcmVtYWluaW5nTGVuZ3RoKTsKLSAgICByZXR1cm4gcmVxdWVzdC5yZWxlYXNlKCk7
CisgICAgcmV0dXJuIFdURk1vdmUocmVxdWVzdCk7CiB9CiAKIHNpemVfdCBIVFRQUmVxdWVzdDo6
cGFyc2VSZXF1ZXN0TGluZShjb25zdCBjaGFyKiBkYXRhLCBzaXplX3QgbGVuZ3RoLCBTdHJpbmcm
IGZhaWx1cmVSZWFzb24pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvSW5z
cGVjdG9yU2VydmVyL0hUVFBSZXF1ZXN0LmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvSW5z
cGVjdG9yU2VydmVyL0hUVFBSZXF1ZXN0LmgKaW5kZXggNTkwMjk1Y2VlMWUzZTViZWViNmRiODFk
ZDNhYTEwYTFhZjAyYjQ0Yi4uMjkxNTVmMDZlMjJlODUzOGUxZjIzNTJiNjc0NzI3ZWRiNThhMmY2
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0luc3BlY3RvclNlcnZlci9I
VFRQUmVxdWVzdC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9JbnNwZWN0b3JTZXJ2
ZXIvSFRUUFJlcXVlc3QuaApAQCAtMzcsOCArMzcsOCBAQAogI2luY2x1ZGUgPFdlYkNvcmUvSFRU
UEhlYWRlck1hcC5oPgogI2luY2x1ZGUgPFdlYkNvcmUvSFRUUFBhcnNlcnMuaD4KICNpbmNsdWRl
IDxXZWJDb3JlL1VSTC5oPgotI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8
d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3Rm
L3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpAQCAtNDcsNyArNDcsNyBA
QCBjbGFzcyBIVFRQUmVxdWVzdCA6IHB1YmxpYyBSZWZDb3VudGVkPEhUVFBSZXF1ZXN0PiB7CiBw
dWJsaWM6CiAgICAgc3RhdGljIFJlZjxIVFRQUmVxdWVzdD4gY3JlYXRlKCkgeyByZXR1cm4gYWRv
cHRSZWYoKm5ldyBIVFRQUmVxdWVzdCgpKTsgfQogICAgIHN0YXRpYyBSZWY8SFRUUFJlcXVlc3Q+
IGNyZWF0ZShjb25zdCBTdHJpbmcmIHJlcXVlc3RNZXRob2QsIGNvbnN0IFdlYkNvcmU6OlVSTCYg
dXJsLCBXZWJDb3JlOjpIVFRQVmVyc2lvbiB2ZXJzaW9uKSB7IHJldHVybiBhZG9wdFJlZigqbmV3
IEhUVFBSZXF1ZXN0KHJlcXVlc3RNZXRob2QsIHVybCwgdmVyc2lvbikpOyB9Ci0gICAgc3RhdGlj
IFBhc3NSZWZQdHI8SFRUUFJlcXVlc3Q+IHBhcnNlSFRUUFJlcXVlc3RGcm9tQnVmZmVyKGNvbnN0
IGNoYXIqIGRhdGEsIHNpemVfdCBsZW5ndGgsIFN0cmluZyYgZmFpbHVyZVJlYXNvbik7CisgICAg
c3RhdGljIFJlZlB0cjxIVFRQUmVxdWVzdD4gcGFyc2VIVFRQUmVxdWVzdEZyb21CdWZmZXIoY29u
c3QgY2hhciogZGF0YSwgc2l6ZV90IGxlbmd0aCwgU3RyaW5nJiBmYWlsdXJlUmVhc29uKTsKICAg
ICB2aXJ0dWFsIH5IVFRQUmVxdWVzdCgpOwogCiAgICAgU3RyaW5nIHJlcXVlc3RNZXRob2QoKSBj
b25zdCB7IHJldHVybiBtX3JlcXVlc3RNZXRob2Q7IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9JbnNwZWN0b3JTZXJ2ZXIvV2ViSW5zcGVjdG9yU2VydmVyLmNwcCBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9JbnNwZWN0b3JTZXJ2ZXIvV2ViSW5zcGVjdG9yU2VydmVy
LmNwcAppbmRleCA2NjM4Nzc0ODVlYmViMWY0OTRlZTI2YmYyYmZjZmU2ODlkYzg5NzQ4Li40OTA5
YTFiMmM4ZGE1NjAwNDI5NjM2NWYzMWExNjhiMDQxYzVjNTM4IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvSW5zcGVjdG9yU2VydmVyL1dlYkluc3BlY3RvclNlcnZlci5jcHAK
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0luc3BlY3RvclNlcnZlci9XZWJJbnNwZWN0
b3JTZXJ2ZXIuY3BwCkBAIC0xMDcsNyArMTA3LDcgQEAgdm9pZCBXZWJJbnNwZWN0b3JTZXJ2ZXI6
OnNlbmRNZXNzYWdlT3ZlckNvbm5lY3Rpb24odW5zaWduZWQgcGFnZUlkRm9yQ29ubmVjdGlvbiwK
ICAgICAgICAgY29ubmVjdGlvbi0+c2VuZFdlYlNvY2tldE1lc3NhZ2UobWVzc2FnZSk7CiB9CiAK
LXZvaWQgV2ViSW5zcGVjdG9yU2VydmVyOjpkaWRSZWNlaXZlVW5yZWNvZ25pemVkSFRUUFJlcXVl
c3QoV2ViU29ja2V0U2VydmVyQ29ubmVjdGlvbiogY29ubmVjdGlvbiwgUGFzc1JlZlB0cjxIVFRQ
UmVxdWVzdD4gcmVxdWVzdCkKK3ZvaWQgV2ViSW5zcGVjdG9yU2VydmVyOjpkaWRSZWNlaXZlVW5y
ZWNvZ25pemVkSFRUUFJlcXVlc3QoV2ViU29ja2V0U2VydmVyQ29ubmVjdGlvbiogY29ubmVjdGlv
biwgUmVmPEhUVFBSZXF1ZXN0PiYmIHJlcXVlc3QpCiB7CiAgICAgLy8gcmVxdWVzdC0+dXJsKCkg
Y29udGFpbnMgb25seSB0aGUgcGF0aCBleHRyYWN0ZWQgZnJvbSB0aGUgSFRUUCByZXF1ZXN0IGxp
bmUKICAgICAvLyBhbmQgVVJMIGlzIHBvb3IgYXQgcGFyc2luZyBpbmNvbXBsZXRlIFVSTHMsIHNv
IGV4dHJhY3QgdGhlIGludGVyZXN0aW5nIHBhcnRzIG1hbnVhbGx5LgpAQCAtMTM2LDcgKzEzNiw3
IEBAIHZvaWQgV2ViSW5zcGVjdG9yU2VydmVyOjpkaWRSZWNlaXZlVW5yZWNvZ25pemVkSFRUUFJl
cXVlc3QoV2ViU29ja2V0U2VydmVyQ29ubmVjCiAgICAgY29ubmVjdGlvbi0+c2h1dGRvd25BZnRl
clNlbmRPck5vdygpOwogfQogCi1ib29sIFdlYkluc3BlY3RvclNlcnZlcjo6ZGlkUmVjZWl2ZVdl
YlNvY2tldFVwZ3JhZGVIVFRQUmVxdWVzdChXZWJTb2NrZXRTZXJ2ZXJDb25uZWN0aW9uKiwgUGFz
c1JlZlB0cjxIVFRQUmVxdWVzdD4gcmVxdWVzdCkKK2Jvb2wgV2ViSW5zcGVjdG9yU2VydmVyOjpk
aWRSZWNlaXZlV2ViU29ja2V0VXBncmFkZUhUVFBSZXF1ZXN0KFdlYlNvY2tldFNlcnZlckNvbm5l
Y3Rpb24qLCBSZWY8SFRUUFJlcXVlc3Q+JiYgcmVxdWVzdCkKIHsKICAgICBTdHJpbmcgcGF0aCA9
IHJlcXVlc3QtPnVybCgpOwogCkBAIC0xNjAsNyArMTYwLDcgQEAgYm9vbCBXZWJJbnNwZWN0b3JT
ZXJ2ZXI6OmRpZFJlY2VpdmVXZWJTb2NrZXRVcGdyYWRlSFRUUFJlcXVlc3QoV2ViU29ja2V0U2Vy
dmVyQ28KICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBXZWJJbnNwZWN0b3JTZXJ2ZXI6OmRp
ZEVzdGFibGlzaFdlYlNvY2tldENvbm5lY3Rpb24oV2ViU29ja2V0U2VydmVyQ29ubmVjdGlvbiog
Y29ubmVjdGlvbiwgUGFzc1JlZlB0cjxIVFRQUmVxdWVzdD4gcmVxdWVzdCkKK3ZvaWQgV2ViSW5z
cGVjdG9yU2VydmVyOjpkaWRFc3RhYmxpc2hXZWJTb2NrZXRDb25uZWN0aW9uKFdlYlNvY2tldFNl
cnZlckNvbm5lY3Rpb24qIGNvbm5lY3Rpb24sIFJlZjxIVFRQUmVxdWVzdD4mJiByZXF1ZXN0KQog
ewogICAgIFN0cmluZyBwYXRoID0gcmVxdWVzdC0+dXJsKCk7CiAgICAgdW5zaWduZWQgcGFnZUlk
ID0gcGFnZUlkRnJvbVJlcXVlc3RQYXRoKHBhdGgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0luc3BlY3RvclNlcnZlci9XZWJJbnNwZWN0b3JTZXJ2ZXIuaCBiL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9JbnNwZWN0b3JTZXJ2ZXIvV2ViSW5zcGVjdG9yU2VydmVyLmgK
aW5kZXggOTI4MWFhNTYzNDM3NmVjMTE5NzgyMThmOWRmMjA5ZmMwMmRlYmQxZi4uMTRiYTUyMjk5
MGI4YjU4MzE2MWY2NDk1OTkyNTEwN2E1MjU4ZmJhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL0luc3BlY3RvclNlcnZlci9XZWJJbnNwZWN0b3JTZXJ2ZXIuaAorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvSW5zcGVjdG9yU2VydmVyL1dlYkluc3BlY3RvclNlcnZl
ci5oCkBAIC01Myw5ICs1Myw5IEBAIHByaXZhdGU6CiAgICAgfldlYkluc3BlY3RvclNlcnZlcigp
OwogCiAgICAgLy8gV2ViU29ja2V0U2VydmVyQ2xpZW50IGltcGxlbWVudGF0aW9uLiBFdmVudHMg
Y29taW5nIGZyb20gcmVtb3RlIGNvbm5lY3Rpb25zLgotICAgIHZvaWQgZGlkUmVjZWl2ZVVucmVj
b2duaXplZEhUVFBSZXF1ZXN0KFdlYlNvY2tldFNlcnZlckNvbm5lY3Rpb24qLCBQYXNzUmVmUHRy
PEhUVFBSZXF1ZXN0PikgZmluYWw7Ci0gICAgYm9vbCBkaWRSZWNlaXZlV2ViU29ja2V0VXBncmFk
ZUhUVFBSZXF1ZXN0KFdlYlNvY2tldFNlcnZlckNvbm5lY3Rpb24qLCBQYXNzUmVmUHRyPEhUVFBS
ZXF1ZXN0PikgZmluYWw7Ci0gICAgdm9pZCBkaWRFc3RhYmxpc2hXZWJTb2NrZXRDb25uZWN0aW9u
KFdlYlNvY2tldFNlcnZlckNvbm5lY3Rpb24qLCBQYXNzUmVmUHRyPEhUVFBSZXF1ZXN0PikgZmlu
YWw7CisgICAgdm9pZCBkaWRSZWNlaXZlVW5yZWNvZ25pemVkSFRUUFJlcXVlc3QoV2ViU29ja2V0
U2VydmVyQ29ubmVjdGlvbiosIFJlZjxIVFRQUmVxdWVzdD4mJikgZmluYWw7CisgICAgYm9vbCBk
aWRSZWNlaXZlV2ViU29ja2V0VXBncmFkZUhUVFBSZXF1ZXN0KFdlYlNvY2tldFNlcnZlckNvbm5l
Y3Rpb24qLCBSZWY8SFRUUFJlcXVlc3Q+JiYpIGZpbmFsOworICAgIHZvaWQgZGlkRXN0YWJsaXNo
V2ViU29ja2V0Q29ubmVjdGlvbihXZWJTb2NrZXRTZXJ2ZXJDb25uZWN0aW9uKiwgUmVmPEhUVFBS
ZXF1ZXN0PiYmKSBmaW5hbDsKICAgICB2b2lkIGRpZFJlY2VpdmVXZWJTb2NrZXRNZXNzYWdlKFdl
YlNvY2tldFNlcnZlckNvbm5lY3Rpb24qLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpIGZpbmFsOwog
ICAgIHZvaWQgZGlkQ2xvc2VXZWJTb2NrZXRDb25uZWN0aW9uKFdlYlNvY2tldFNlcnZlckNvbm5l
Y3Rpb24qKSBmaW5hbDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0lu
c3BlY3RvclNlcnZlci9XZWJTb2NrZXRTZXJ2ZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9JbnNwZWN0b3JTZXJ2ZXIvV2ViU29ja2V0U2VydmVyQ2xpZW50LmgKaW5kZXggYTcz
YTBmM2NkYzg3M2UxYTQxNmY3MjBkOWVjNGNiMzRkYjUxNzgyZS4uYzZmYWMzOTM1MmQ1MDkzNTI5
NjNmNGI0ZTliZDg3YzE0NWE2ZWQyNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL0luc3BlY3RvclNlcnZlci9XZWJTb2NrZXRTZXJ2ZXJDbGllbnQuaAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvSW5zcGVjdG9yU2VydmVyL1dlYlNvY2tldFNlcnZlckNsaWVudC5o
CkBAIC0yOSw3ICsyOSw3IEBACiAjaWYgRU5BQkxFKElOU1BFQ1RPUl9TRVJWRVIpCiAKICNpbmNs
dWRlICJIVFRQUmVxdWVzdC5oIgotI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVk
ZSA8d3RmL1JlZi5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgogCiBuYW1lc3Bh
Y2UgV2ViS2l0IHsKQEAgLTQxLDEzICs0MSwxMyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB+V2Vi
U29ja2V0U2VydmVyQ2xpZW50KCkgeyB9CiAKICAgICAvLyBSZWNlaXZlZCBhbiBIVFRQIHJlcXVl
c3QgYnV0IGRpZG4ndCBrbm93IHdoYXQgdG8gZG8gd2l0aCBpdC4KLSAgICB2aXJ0dWFsIHZvaWQg
ZGlkUmVjZWl2ZVVucmVjb2duaXplZEhUVFBSZXF1ZXN0KFdlYlNvY2tldFNlcnZlckNvbm5lY3Rp
b24qLCBQYXNzUmVmUHRyPEhUVFBSZXF1ZXN0PikgeyB9CisgICAgdmlydHVhbCB2b2lkIGRpZFJl
Y2VpdmVVbnJlY29nbml6ZWRIVFRQUmVxdWVzdChXZWJTb2NrZXRTZXJ2ZXJDb25uZWN0aW9uKiwg
UmVmPEhUVFBSZXF1ZXN0PiYmKSB7IH0KIAogICAgIC8vIFJlY2VpdmVkIGEgV2ViU29ja2V0IFVw
Z3JhZGUgSFRUUCByZXF1ZXN0LiBBc2sgaWYgd2Ugc2hvdWxkIGhhbmRsZSBpdCBhbmQgdXBncmFk
ZS4KLSAgICB2aXJ0dWFsIGJvb2wgZGlkUmVjZWl2ZVdlYlNvY2tldFVwZ3JhZGVIVFRQUmVxdWVz
dChXZWJTb2NrZXRTZXJ2ZXJDb25uZWN0aW9uKiwgUGFzc1JlZlB0cjxIVFRQUmVxdWVzdD4pIHsg
cmV0dXJuIHRydWU7IH0KKyAgICB2aXJ0dWFsIGJvb2wgZGlkUmVjZWl2ZVdlYlNvY2tldFVwZ3Jh
ZGVIVFRQUmVxdWVzdChXZWJTb2NrZXRTZXJ2ZXJDb25uZWN0aW9uKiwgUmVmPEhUVFBSZXF1ZXN0
PiYmKSB7IHJldHVybiB0cnVlOyB9CiAKICAgICAvLyBFc3RhYmxpc2hlZCBhIFdlYlNvY2tldCBD
b25uZWN0aW9uLgotICAgIHZpcnR1YWwgdm9pZCBkaWRFc3RhYmxpc2hXZWJTb2NrZXRDb25uZWN0
aW9uKFdlYlNvY2tldFNlcnZlckNvbm5lY3Rpb24qLCBQYXNzUmVmUHRyPEhUVFBSZXF1ZXN0Pikg
eyB9CisgICAgdmlydHVhbCB2b2lkIGRpZEVzdGFibGlzaFdlYlNvY2tldENvbm5lY3Rpb24oV2Vi
U29ja2V0U2VydmVyQ29ubmVjdGlvbiosIFJlZjxIVFRQUmVxdWVzdD4mJikgeyB9CiAKICAgICAv
LyBSZWNlaXZlZCBhIFdlYlNvY2tldCBtZXNzYWdlLgogICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNl
aXZlV2ViU29ja2V0TWVzc2FnZShXZWJTb2NrZXRTZXJ2ZXJDb25uZWN0aW9uKiwgY29uc3QgU3Ry
aW5nJikgeyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvSW5zcGVjdG9y
U2VydmVyL1dlYlNvY2tldFNlcnZlckNvbm5lY3Rpb24uY3BwIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0luc3BlY3RvclNlcnZlci9XZWJTb2NrZXRTZXJ2ZXJDb25uZWN0aW9uLmNwcAppbmRl
eCA3ZTA1MjVjMTM1YzgwMzVmMWQ4YThjMzc1YmQxYWZjMTFhNmE1MzI2Li4xMTc3ZjZmNWUyYzEx
Yjk1Yjg3NjA1NmU1N2IzODliMzYxYmM1YTVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvSW5zcGVjdG9yU2VydmVyL1dlYlNvY2tldFNlcnZlckNvbm5lY3Rpb24uY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9JbnNwZWN0b3JTZXJ2ZXIvV2ViU29ja2V0U2Vy
dmVyQ29ubmVjdGlvbi5jcHAKQEAgLTE3Myw3ICsxNzMsNyBAQCB2b2lkIFdlYlNvY2tldFNlcnZl
ckNvbm5lY3Rpb246OnJlYWRIVFRQTWVzc2FnZSgpCiAgICAgY29uc3QgSFRUUEhlYWRlck1hcCYg
aGVhZGVycyA9IHJlcXVlc3QtPmhlYWRlckZpZWxkcygpOwogICAgIFN0cmluZyB1cGdyYWRlSGVh
ZGVyVmFsdWUgPSBoZWFkZXJzLmdldChIVFRQSGVhZGVyTmFtZTo6VXBncmFkZSk7CiAgICAgaWYg
KHVwZ3JhZGVIZWFkZXJWYWx1ZSA9PSAid2Vic29ja2V0IikgewotICAgICAgICB1cGdyYWRlVG9X
ZWJTb2NrZXRTZXJ2ZXJDb25uZWN0aW9uKHJlcXVlc3QpOworICAgICAgICB1cGdyYWRlVG9XZWJT
b2NrZXRTZXJ2ZXJDb25uZWN0aW9uKHJlcXVlc3QucmVsZWFzZU5vbk51bGwoKSk7CiAgICAgICAg
IHJldHVybjsKICAgICB9CiAgICAgaWYgKHVwZ3JhZGVIZWFkZXJWYWx1ZSA9PSAiV2ViU29ja2V0
IikgewpAQCAtMTgyLDI0ICsxODIsMjEgQEAgdm9pZCBXZWJTb2NrZXRTZXJ2ZXJDb25uZWN0aW9u
OjpyZWFkSFRUUE1lc3NhZ2UoKQogICAgIH0KIAogICAgIC8vIE90aGVyd2lzZSwgdGhpcyBpcyBh
biBIVFRQIFJlcXVlc3Qgd2UgZG9uJ3Qga25vdyBob3cgdG8gZGVhbCB3aXRoLgotICAgIG1fY2xp
ZW50LT5kaWRSZWNlaXZlVW5yZWNvZ25pemVkSFRUUFJlcXVlc3QodGhpcywgcmVxdWVzdCk7Cisg
ICAgbV9jbGllbnQtPmRpZFJlY2VpdmVVbnJlY29nbml6ZWRIVFRQUmVxdWVzdCh0aGlzLCByZXF1
ZXN0LnJlbGVhc2VOb25OdWxsKCkpOwogfQogCi12b2lkIFdlYlNvY2tldFNlcnZlckNvbm5lY3Rp
b246OnVwZ3JhZGVUb1dlYlNvY2tldFNlcnZlckNvbm5lY3Rpb24oUGFzc1JlZlB0cjxIVFRQUmVx
dWVzdD4gcmVxdWVzdCkKK3ZvaWQgV2ViU29ja2V0U2VydmVyQ29ubmVjdGlvbjo6dXBncmFkZVRv
V2ViU29ja2V0U2VydmVyQ29ubmVjdGlvbihSZWY8SFRUUFJlcXVlc3Q+JiYgcmVxdWVzdCkKIHsK
LSAgICBBU1NFUlQocmVxdWVzdCk7CiAgICAgQVNTRVJUKG1fbW9kZSA9PSBIVFRQKTsKICAgICBt
X21vZGUgPSBXZWJTb2NrZXQ7Ci0gICAgUmVmUHRyPEhUVFBSZXF1ZXN0PiBwcm90ZWN0ZWRSZXF1
ZXN0KHJlcXVlc3QpOwotCiAgICAgLy8gQXNrIHRoZSBjbGllbnQgaWYgd2Ugc2hvdWxkIHVwZ3Jh
ZGUgZm9yIHRoaXMgb3Igbm90LgotICAgIGlmICghbV9jbGllbnQtPmRpZFJlY2VpdmVXZWJTb2Nr
ZXRVcGdyYWRlSFRUUFJlcXVlc3QodGhpcywgcHJvdGVjdGVkUmVxdWVzdCkpIHsKKyAgICBpZiAo
IW1fY2xpZW50LT5kaWRSZWNlaXZlV2ViU29ja2V0VXBncmFkZUhUVFBSZXF1ZXN0KHRoaXMsIHJl
cXVlc3QuY29weVJlZigpKSkgewogICAgICAgICBzaHV0ZG93bk5vdygpOwogICAgICAgICByZXR1
cm47CiAgICAgfQogCiAgICAgLy8gQnVpbGQgYW5kIHNlbmQgdGhlIFdlYlNvY2tldCBoYW5kc2hh
a2UgcmVzcG9uc2UuCi0gICAgY29uc3QgSFRUUEhlYWRlck1hcCYgcmVxdWVzdEhlYWRlcnMgPSBw
cm90ZWN0ZWRSZXF1ZXN0LT5oZWFkZXJGaWVsZHMoKTsKKyAgICBjb25zdCBIVFRQSGVhZGVyTWFw
JiByZXF1ZXN0SGVhZGVycyA9IHJlcXVlc3QtPmhlYWRlckZpZWxkcygpOwogICAgIFN0cmluZyBh
Y2NlcHQgPSBXZWJTb2NrZXRIYW5kc2hha2U6OmdldEV4cGVjdGVkV2ViU29ja2V0QWNjZXB0KHJl
cXVlc3RIZWFkZXJzLmdldChIVFRQSGVhZGVyTmFtZTo6U2VjV2ViU29ja2V0S2V5KSk7CiAgICAg
SFRUUEhlYWRlck1hcCByZXNwb25zZUhlYWRlcnM7CiAgICAgcmVzcG9uc2VIZWFkZXJzLmFkZCgi
VXBncmFkZSIsIHJlcXVlc3RIZWFkZXJzLmdldChIVFRQSGVhZGVyTmFtZTo6VXBncmFkZSkpOwpA
QCAtMjA4LDcgKzIwNSw3IEBAIHZvaWQgV2ViU29ja2V0U2VydmVyQ29ubmVjdGlvbjo6dXBncmFk
ZVRvV2ViU29ja2V0U2VydmVyQ29ubmVjdGlvbihQYXNzUmVmUHRyPEhUCiAKICAgICBzZW5kSFRU
UFJlc3BvbnNlSGVhZGVyKDEwMSwgIldlYlNvY2tldCBQcm90b2NvbCBIYW5kc2hha2UiLCByZXNw
b25zZUhlYWRlcnMpOwogCi0gICAgbV9jbGllbnQtPmRpZEVzdGFibGlzaFdlYlNvY2tldENvbm5l
Y3Rpb24odGhpcywgcHJvdGVjdGVkUmVxdWVzdCk7CisgICAgbV9jbGllbnQtPmRpZEVzdGFibGlz
aFdlYlNvY2tldENvbm5lY3Rpb24odGhpcywgV1RGTW92ZShyZXF1ZXN0KSk7CiB9CiAKIHZvaWQg
V2ViU29ja2V0U2VydmVyQ29ubmVjdGlvbjo6cmVhZFdlYlNvY2tldEZyYW1lcygpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvSW5zcGVjdG9yU2VydmVyL1dlYlNvY2tldFNl
cnZlckNvbm5lY3Rpb24uaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9JbnNwZWN0b3JTZXJ2
ZXIvV2ViU29ja2V0U2VydmVyQ29ubmVjdGlvbi5oCmluZGV4IGU5MTM5NzRkZWYxY2FlMmQ0OGFh
OTFlMTEzNjhiNzJiNWUxYjhiZTQuLjVlY2Y3NTFhYzVmNzBjOGFjM2M0YjIzZTRjYzMxYWMzNDhh
ZDhhYTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9JbnNwZWN0b3JTZXJ2
ZXIvV2ViU29ja2V0U2VydmVyQ29ubmVjdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJv
Y2Vzcy9JbnNwZWN0b3JTZXJ2ZXIvV2ViU29ja2V0U2VydmVyQ29ubmVjdGlvbi5oCkBAIC0yOSw3
ICsyOSw3IEBACiAjaWYgRU5BQkxFKElOU1BFQ1RPUl9TRVJWRVIpCiAKICNpbmNsdWRlIDxXZWJD
b3JlL1NvY2tldFN0cmVhbUhhbmRsZUNsaWVudC5oPgotI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRy
Lmg+CisjaW5jbHVkZSA8d3RmL1JlZi5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4KICNpbmNs
dWRlIDx3dGYvVmVjdG9yLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CkBAIC03
OCw3ICs3OCw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCByZWFkSFRUUE1lc3NhZ2UoKTsKIAogICAg
IC8vIFdlYlNvY2tldCBNb2RlLgotICAgIHZvaWQgdXBncmFkZVRvV2ViU29ja2V0U2VydmVyQ29u
bmVjdGlvbihQYXNzUmVmUHRyPEhUVFBSZXF1ZXN0Pik7CisgICAgdm9pZCB1cGdyYWRlVG9XZWJT
b2NrZXRTZXJ2ZXJDb25uZWN0aW9uKFJlZjxIVFRQUmVxdWVzdD4mJik7CiAgICAgdm9pZCByZWFk
V2ViU29ja2V0RnJhbWVzKCk7CiAgICAgYm9vbCByZWFkV2ViU29ja2V0RnJhbWUoKTsKIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvTm90aWZpY2F0
aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL05vdGlmaWNhdGlvbnMvTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2Vy
UHJveHkuY3BwCmluZGV4IDgxOGE1MjU0MTYwN2EzY2U5YTIzZGM4NzhmMThiZmExMzdjMGRhZTIu
LjYyNjU4NDQ4YWY4Yjk1YjkyNTA0OWU4YmQyYjJmNWRjZDIxMmNhNzkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL05vdGlmaWNhdGlvblBlcm1pc3Np
b25SZXF1ZXN0TWFuYWdlclByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
Tm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eS5j
cHAKQEAgLTQ2LDExICs0NiwxMSBAQCB2b2lkIE5vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0
TWFuYWdlclByb3h5OjppbnZhbGlkYXRlUmVxdWVzdHMoKQogICAgIG1fcGVuZGluZ1JlcXVlc3Rz
LmNsZWFyKCk7CiB9CiAKLVBhc3NSZWZQdHI8Tm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3Q+
IE5vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5OjpjcmVhdGVSZXF1ZXN0
KHVpbnQ2NF90IG5vdGlmaWNhdGlvbklEKQorUmVmPE5vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1
ZXN0PiBOb3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXJQcm94eTo6Y3JlYXRlUmVx
dWVzdCh1aW50NjRfdCBub3RpZmljYXRpb25JRCkKIHsKICAgICBhdXRvIHJlcXVlc3QgPSBOb3Rp
ZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdDo6Y3JlYXRlKHRoaXMsIG5vdGlmaWNhdGlvbklEKTsK
ICAgICBtX3BlbmRpbmdSZXF1ZXN0cy5hZGQobm90aWZpY2F0aW9uSUQsIHJlcXVlc3QucHRyKCkp
OwotICAgIHJldHVybiBXVEZNb3ZlKHJlcXVlc3QpOworICAgIHJldHVybiByZXF1ZXN0OwogfQog
CiB2b2lkIE5vdGlmaWNhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlclByb3h5OjpkaWRSZWNl
aXZlTm90aWZpY2F0aW9uUGVybWlzc2lvbkRlY2lzaW9uKHVpbnQ2NF90IG5vdGlmaWNhdGlvbklE
LCBib29sIGFsbG93KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05vdGlm
aWNhdGlvbnMvTm90aWZpY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuaCBiL1Nv
dXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL05vdGlmaWNhdGlvblBlcm1pc3Np
b25SZXF1ZXN0TWFuYWdlclByb3h5LmgKaW5kZXggNWJjODNmNmY1NzM4NDVkYTczOWU2MTBiMjM1
MzdmYTZhYjM0MmRjNS4uMTBlNGIxODUzYzBiNDY3ZWQwOGJlMmEwZDFmZTEwY2QyZjUxMTlkOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvTm90aWZp
Y2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9Ob3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1h
bmFnZXJQcm94eS5oCkBAIC00MSw3ICs0MSw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGludmFsaWRh
dGVSZXF1ZXN0cygpOwogICAgIAogICAgIC8vIENyZWF0ZSBhIHJlcXVlc3QgdG8gYmUgcHJlc2Vu
dGVkIHRvIHRoZSB1c2VyLgotICAgIFBhc3NSZWZQdHI8Tm90aWZpY2F0aW9uUGVybWlzc2lvblJl
cXVlc3Q+IGNyZWF0ZVJlcXVlc3QodWludDY0X3Qgbm90aWZpY2F0aW9uSUQpOworICAgIFJlZjxO
b3RpZmljYXRpb25QZXJtaXNzaW9uUmVxdWVzdD4gY3JlYXRlUmVxdWVzdCh1aW50NjRfdCBub3Rp
ZmljYXRpb25JRCk7CiAgICAgCiAgICAgLy8gQ2FsbGVkIGJ5IE5vdGlmaWNhdGlvblBlcm1pc3Np
b25SZXF1ZXN0IHdoZW4gYSBkZWNpc2lvbiBpcyBtYWRlIGJ5IHRoZSB1c2VyLgogICAgIHZvaWQg
ZGlkUmVjZWl2ZU5vdGlmaWNhdGlvblBlcm1pc3Npb25EZWNpc2lvbih1aW50NjRfdCBub3RpZmlj
YXRpb25JRCwgYm9vbCBhbGxvdyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25Qcm92aWRlci5jcHAgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJOb3RpZmljYXRpb25Qcm92aWRlci5jcHAK
aW5kZXggYTJhODNhZGEwOTVkZTA0Y2I0N2Y2MTdkZjA3ZTViMjBmNTBkN2U3MC4uZGIzNTg4Y2E0
YzEwMGMyYzlhODk1MTllMTczMjc2MGNiM2ZhZmQzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dDIvVUlQcm9jZXNzL05vdGlmaWNhdGlvbnMvV2ViTm90aWZpY2F0aW9uUHJvdmlkZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlv
blByb3ZpZGVyLmNwcApAQCAtOTEsNyArOTEsNyBAQCB2b2lkIFdlYk5vdGlmaWNhdGlvblByb3Zp
ZGVyOjpyZW1vdmVOb3RpZmljYXRpb25NYW5hZ2VyKFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQcgog
ICAgIG1fY2xpZW50LnJlbW92ZU5vdGlmaWNhdGlvbk1hbmFnZXIodG9BUEkobWFuYWdlciksIG1f
Y2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CiB9CiAKLVBhc3NSZWZQdHI8QVBJOjpEaWN0aW9uYXJ5
PiBXZWJOb3RpZmljYXRpb25Qcm92aWRlcjo6bm90aWZpY2F0aW9uUGVybWlzc2lvbnMoKQorUmVm
UHRyPEFQSTo6RGljdGlvbmFyeT4gV2ViTm90aWZpY2F0aW9uUHJvdmlkZXI6Om5vdGlmaWNhdGlv
blBlcm1pc3Npb25zKCkKIHsKICAgICBpZiAoIW1fY2xpZW50Lm5vdGlmaWNhdGlvblBlcm1pc3Np
b25zKQogICAgICAgICByZXR1cm4gQVBJOjpEaWN0aW9uYXJ5OjpjcmVhdGUoKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlmaWNhdGlv
blByb3ZpZGVyLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvTm90aWZpY2F0aW9ucy9XZWJO
b3RpZmljYXRpb25Qcm92aWRlci5oCmluZGV4IDE0ZmFiZTE2YzZlNGQ1ZTY4NTI2ODAxOWZmNDAw
ZmJlNmJlNWY3ZjMuLjI2MmIxZTUzMmQxMTBkMTUzN2QwMjM0Y2Y5Y2YwNTI4NmJiNjUyNWQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Ob3RpZmljYXRpb25zL1dlYk5vdGlm
aWNhdGlvblByb3ZpZGVyLmgKKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL05vdGlmaWNh
dGlvbnMvV2ViTm90aWZpY2F0aW9uUHJvdmlkZXIuaApAQCAtNTYsNyArNTYsNyBAQCBwdWJsaWM6
CiAgICAgdm9pZCBhZGROb3RpZmljYXRpb25NYW5hZ2VyKFdlYk5vdGlmaWNhdGlvbk1hbmFnZXJQ
cm94eSopOwogICAgIHZvaWQgcmVtb3ZlTm90aWZpY2F0aW9uTWFuYWdlcihXZWJOb3RpZmljYXRp
b25NYW5hZ2VyUHJveHkqKTsKICAgICAKLSAgICBQYXNzUmVmUHRyPEFQSTo6RGljdGlvbmFyeT4g
bm90aWZpY2F0aW9uUGVybWlzc2lvbnMoKTsKKyAgICBSZWZQdHI8QVBJOjpEaWN0aW9uYXJ5PiBu
b3RpZmljYXRpb25QZXJtaXNzaW9ucygpOwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViS2l0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGFnZUNsaWVudC5oIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1BhZ2VDbGllbnQuaAppbmRleCAwN2VmMGIyN2VlNWMwNDgwMTgz
MzE4NzFlYjc2MWNlOWU4ZWUyZTgxLi4zZGI3ZWJlZTIyZjNlY2NiZTdkYTJlYzc2ZGQ1OGIwYzhj
MjZjYWUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvUGFnZUNsaWVudC5o
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9QYWdlQ2xpZW50LmgKQEAgLTE2NSw3ICsx
NjUsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHNldEN1cnNvckhpZGRlblVudGlsTW91
c2VNb3Zlcyhib29sKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZENoYW5nZVZpZXdwb3J0UHJv
cGVydGllcyhjb25zdCBXZWJDb3JlOjpWaWV3cG9ydEF0dHJpYnV0ZXMmKSA9IDA7CiAKLSAgICB2
aXJ0dWFsIHZvaWQgcmVnaXN0ZXJFZGl0Q29tbWFuZChQYXNzUmVmUHRyPFdlYkVkaXRDb21tYW5k
UHJveHk+LCBXZWJQYWdlUHJveHk6OlVuZG9PclJlZG8pID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQg
cmVnaXN0ZXJFZGl0Q29tbWFuZChSZWY8V2ViRWRpdENvbW1hbmRQcm94eT4mJiwgV2ViUGFnZVBy
b3h5OjpVbmRvT3JSZWRvKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGNsZWFyQWxsRWRpdENvbW1h
bmRzKCkgPSAwOwogICAgIHZpcnR1YWwgYm9vbCBjYW5VbmRvUmVkbyhXZWJQYWdlUHJveHk6OlVu
ZG9PclJlZG8pID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgZXhlY3V0ZVVuZG9SZWRvKFdlYlBhZ2VQ
cm94eTo6VW5kb09yUmVkbykgPSAwOwpAQCAtMTczLDE0ICsxNzMsMTQgQEAgcHVibGljOgogI2lm
IFBMQVRGT1JNKENPQ09BKQogICAgIHZpcnR1YWwgdm9pZCBhY2Nlc3NpYmlsaXR5V2ViUHJvY2Vz
c1Rva2VuUmVjZWl2ZWQoY29uc3QgSVBDOjpEYXRhUmVmZXJlbmNlJikgPSAwOwogICAgIHZpcnR1
YWwgYm9vbCBleGVjdXRlU2F2ZWRDb21tYW5kQnlTZWxlY3Rvcihjb25zdCBTdHJpbmcmIHNlbGVj
dG9yKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHNldERyYWdJbWFnZShjb25zdCBXZWJDb3JlOjpJ
bnRQb2ludCYgY2xpZW50UG9zaXRpb24sIFBhc3NSZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBkcmFn
SW1hZ2UsIFdlYkNvcmU6OkRyYWdTb3VyY2VBY3Rpb24pID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQg
c2V0RHJhZ0ltYWdlKGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBjbGllbnRQb3NpdGlvbiwgUmVm
PFNoYXJlYWJsZUJpdG1hcD4mJiBkcmFnSW1hZ2UsIFdlYkNvcmU6OkRyYWdTb3VyY2VBY3Rpb24p
ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlU2VjdXJlSW5wdXRTdGF0ZSgpID0gMDsKICAg
ICB2aXJ0dWFsIHZvaWQgcmVzZXRTZWN1cmVJbnB1dFN0YXRlKCkgPSAwOwogICAgIHZpcnR1YWwg
dm9pZCBub3RpZnlJbnB1dENvbnRleHRBYm91dERpc2NhcmRlZENvbXBvc2l0aW9uKCkgPSAwOwog
ICAgIHZpcnR1YWwgdm9pZCBtYWtlRmlyc3RSZXNwb25kZXIoKSA9IDA7CiAgICAgdmlydHVhbCB2
b2lkIHNldEFjY2VsZXJhdGVkQ29tcG9zaXRpbmdSb290TGF5ZXIoTGF5ZXJPclZpZXcgKikgPSAw
OwogICAgIHZpcnR1YWwgTGF5ZXJPclZpZXcgKmFjY2VsZXJhdGVkQ29tcG9zaXRpbmdSb290TGF5
ZXIoKSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCBQYXNzUmVmUHRyPFZpZXdTbmFwc2hvdD4gdGFr
ZVZpZXdTbmFwc2hvdCgpID0gMDsKKyAgICB2aXJ0dWFsIFJlZlB0cjxWaWV3U25hcHNob3Q+IHRh
a2VWaWV3U25hcHNob3QoKSA9IDA7CiAjaWYgRU5BQkxFKE1BQ19HRVNUVVJFX0VWRU5UUykKICAg
ICB2aXJ0dWFsIHZvaWQgZ2VzdHVyZUV2ZW50V2FzTm90SGFuZGxlZEJ5V2ViQ29yZShjb25zdCBO
YXRpdmVXZWJHZXN0dXJlRXZlbnQmKSA9IDA7CiAjZW5kaWYKQEAgLTE5MSwxMiArMTkxLDkgQEAg
cHVibGljOgogI2VuZGlmCiAKICNpZiBVU0UoQVBQS0lUKQotICAgIHZpcnR1YWwgdm9pZCBzZXRQ
cm9taXNlZERhdGFGb3JJbWFnZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBQYXNzUmVm
UHRyPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4gaW1hZ2VCdWZmZXIsIGNvbnN0IFN0cmluZyYgZmls
ZW5hbWUsIGNvbnN0IFN0cmluZyYgZXh0ZW5zaW9uLCBjb25zdCBTdHJpbmcmIHRpdGxlLAotICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0
cmluZyYgdmlzaWJsZVVybCwgUGFzc1JlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGFyY2hp
dmVCdWZmZXIpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0UHJvbWlzZWREYXRhRm9ySW1hZ2Uo
Y29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4m
JiBpbWFnZUJ1ZmZlciwgY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgU3RyaW5nJiBleHRl
bnNpb24sIGNvbnN0IFN0cmluZyYgdGl0bGUsIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJp
bmcmIHZpc2libGVVcmwsIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYgYXJjaGl2ZUJ1
ZmZlcikgPSAwOwogI2lmIEVOQUJMRShBVFRBQ0hNRU5UX0VMRU1FTlQpCi0gICAgdmlydHVhbCB2
b2lkIHNldFByb21pc2VkRGF0YUZvckF0dGFjaG1lbnQoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJk
TmFtZSwgY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgU3RyaW5nJiBleHRlbnNpb24sIGNv
bnN0IFN0cmluZyYgdGl0bGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIHZpc2libGVVcmwpID0gMDsKLQor
ICAgIHZpcnR1YWwgdm9pZCBzZXRQcm9taXNlZERhdGFGb3JBdHRhY2htZW50KGNvbnN0IFN0cmlu
ZyYgcGFzdGVib2FyZE5hbWUsIGNvbnN0IFN0cmluZyYgZmlsZW5hbWUsIGNvbnN0IFN0cmluZyYg
ZXh0ZW5zaW9uLCBjb25zdCBTdHJpbmcmIHRpdGxlLCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3Qg
U3RyaW5nJiB2aXNpYmxlVXJsKSA9IDA7CiAjZW5kaWYKICNlbmRpZgogCkBAIC0zMDUsNyArMzAy
LDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgYm9vbCBpc0Fzc2lzdGluZ05vZGUoKSA9IDA7CiAg
ICAgdmlydHVhbCBib29sIGludGVycHJldEtleUV2ZW50KGNvbnN0IE5hdGl2ZVdlYktleWJvYXJk
RXZlbnQmLCBib29sIGlzQ2hhckV2ZW50KSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHBvc2l0aW9u
SW5mb3JtYXRpb25EaWRDaGFuZ2UoY29uc3QgSW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRp
b24mKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHNhdmVJbWFnZVRvTGlicmFyeShQYXNzUmVmUHRy
PFdlYkNvcmU6OlNoYXJlZEJ1ZmZlcj4pID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc2F2ZUltYWdl
VG9MaWJyYXJ5KFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpID0gMDsKICAgICB2aXJ0dWFs
IGJvb2wgYWxsb3dzQmxvY2tTZWxlY3Rpb24oKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIGRpZFVw
ZGF0ZUJsb2NrU2VsZWN0aW9uV2l0aFRvdWNoKHVpbnQzMl90IHRvdWNoLCB1aW50MzJfdCBmbGFn
cywgZmxvYXQgZ3Jvd1RocmVzaG9sZCwgZmxvYXQgc2hyaW5rVGhyZXNob2xkKSA9IDA7CiAgICAg
dmlydHVhbCB2b2lkIHNob3dQbGF5YmFja1RhcmdldFBpY2tlcihib29sIGhhc1ZpZGVvLCBjb25z
dCBXZWJDb3JlOjpJbnRSZWN0JiBlbGVtZW50UmVjdCkgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL1N0b3JhZ2UvTG9jYWxTdG9yYWdlRGF0YWJhc2UuY3BwIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1N0b3JhZ2UvTG9jYWxTdG9yYWdlRGF0YWJhc2UuY3BwCmlu
ZGV4IDYzMjY1N2JjMDBiZWI5ZWEwZjk2ZTAxYjFiOWZhMDBiZWU5YjU5MWUuLjU5OGEzYmQ2ODkw
ZTUzZDkxYzM5MDRjOTk3OWU5MWRhZTQ1NTA1MTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9TdG9yYWdlL0xvY2FsU3RvcmFnZURhdGFiYXNlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0Mi9VSVByb2Nlc3MvU3RvcmFnZS9Mb2NhbFN0b3JhZ2VEYXRhYmFzZS5jcHAKQEAgLTMz
LDcgKzMzLDcgQEAKICNpbmNsdWRlIDxXZWJDb3JlL1NlY3VyaXR5T3JpZ2luLmg+CiAjaW5jbHVk
ZSA8V2ViQ29yZS9TdG9yYWdlTWFwLmg+CiAjaW5jbHVkZSA8V2ViQ29yZS9TdWRkZW5UZXJtaW5h
dGlvbi5oPgotI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0
ci5oPgogI2luY2x1ZGUgPHd0Zi9Xb3JrUXVldWUuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9TdHJp
bmdIYXNoLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dE1lbnVMaXN0ZW5lclByb3h5LmggYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViQ29udGV4dE1lbnVMaXN0ZW5lclByb3h5LmgKaW5k
ZXggM2EwYWZlNDlhNWI4YjY4ZTY0OGVlYzVlNDczOTMzMzFjOWM5MWM3Zi4uMjMzMjRmZGVkMGYz
ZjU2N2JmMTlmMzFlNjlmYTJkYjZhZjA5NTJiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIv
VUlQcm9jZXNzL1dlYkNvbnRleHRNZW51TGlzdGVuZXJQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJDb250ZXh0TWVudUxpc3RlbmVyUHJveHkuaApAQCAtMzAsNyArMzAs
NiBAQAogI2luY2x1ZGUgIkFQSU9iamVjdC5oIgogI2luY2x1ZGUgIldLQXJyYXkuaCIKICNpbmNs
dWRlICJXZWJDb250ZXh0TWVudVByb3h5LmgiCi0jaW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4K
ICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvb2tpZU1hbmFnZXJQcm94eS5oIGIvU291
cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkNvb2tpZU1hbmFnZXJQcm94eS5oCmluZGV4IDViMGY3
NTcwNjdiNjlkMTZjM2VlZGZkOTQ0YzU3NmQwNTVjODBhOTYuLjI3YWEyYWMwNzllN2QxODA5NmMz
ZDUwNjM0MzRkZDZlOTg3OGJhNWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJDb29raWVNYW5hZ2VyUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViQ29va2llTWFuYWdlclByb3h5LmgKQEAgLTMxLDcgKzMxLDYgQEAKICNpbmNsdWRlICJXZWJD
b250ZXh0U3VwcGxlbWVudC5oIgogI2luY2x1ZGUgIldlYkNvb2tpZU1hbmFnZXJQcm94eUNsaWVu
dC5oIgogI2luY2x1ZGUgPFdlYkNvcmUvU2Vzc2lvbklELmg+Ci0jaW5jbHVkZSA8d3RmL1Bhc3NS
ZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5o
PgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViRWRpdENvbW1hbmRQ
cm94eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViRWRpdENvbW1hbmRQcm94eS5j
cHAKaW5kZXggMjRjNjJmYmVmMDVkYjMwODVmNzBkYzNlYzY0YzA0NTlmZjY5MjE0My4uYTBjOWUy
YzAwNDkzYjk2YzIwM2I3ZmY4OGFjZGM4MjMzNDk3MDc4MyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYkVkaXRDb21tYW5kUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQyL1VJUHJvY2Vzcy9XZWJFZGl0Q29tbWFuZFByb3h5LmNwcApAQCAtNTYsNyArNTYsNyBAQCB2
b2lkIFdlYkVkaXRDb21tYW5kUHJveHk6OnVuYXBwbHkoKQogICAgICAgICByZXR1cm47CiAKICAg
ICBtX3BhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpVbmFwcGx5RWRpdENv
bW1hbmQobV9jb21tYW5kSUQpLCBtX3BhZ2UtPnBhZ2VJRCgpLCBJUEM6OlNlbmRPcHRpb246OkRp
c3BhdGNoTWVzc2FnZUV2ZW5XaGVuV2FpdGluZ0ZvclN5bmNSZXBseSk7Ci0gICAgbV9wYWdlLT5y
ZWdpc3RlckVkaXRDb21tYW5kKHRoaXMsIFdlYlBhZ2VQcm94eTo6UmVkbyk7CisgICAgbV9wYWdl
LT5yZWdpc3RlckVkaXRDb21tYW5kKCp0aGlzLCBXZWJQYWdlUHJveHk6OlJlZG8pOwogfQogCiB2
b2lkIFdlYkVkaXRDb21tYW5kUHJveHk6OnJlYXBwbHkoKQpAQCAtNjUsNyArNjUsNyBAQCB2b2lk
IFdlYkVkaXRDb21tYW5kUHJveHk6OnJlYXBwbHkoKQogICAgICAgICByZXR1cm47CiAKICAgICBt
X3BhZ2UtPnByb2Nlc3MoKS5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlOjpSZWFwcGx5RWRpdENvbW1h
bmQobV9jb21tYW5kSUQpLCBtX3BhZ2UtPnBhZ2VJRCgpLCBJUEM6OlNlbmRPcHRpb246OkRpc3Bh
dGNoTWVzc2FnZUV2ZW5XaGVuV2FpdGluZ0ZvclN5bmNSZXBseSk7Ci0gICAgbV9wYWdlLT5yZWdp
c3RlckVkaXRDb21tYW5kKHRoaXMsIFdlYlBhZ2VQcm94eTo6VW5kbyk7CisgICAgbV9wYWdlLT5y
ZWdpc3RlckVkaXRDb21tYW5kKCp0aGlzLCBXZWJQYWdlUHJveHk6OlVuZG8pOwogfQogCiBTdHJp
bmcgV2ViRWRpdENvbW1hbmRQcm94eTo6bmFtZUZvckVkaXRBY3Rpb24oRWRpdEFjdGlvbiBlZGl0
QWN0aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkVkaXRDb21t
YW5kUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJFZGl0Q29tbWFuZFByb3h5
LmgKaW5kZXggYzM3NTAwMGY4YmVkNGFkMWM2ZDQ3NjRkYjljYjIwMDE0MWNlY2NjNy4uMDcwOTA2
ZjYwN2Y3NDRkNTA4N2IzNzM1NDQxOTc1YzJjYTNjYWQxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYkVkaXRDb21tYW5kUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9VSVByb2Nlc3MvV2ViRWRpdENvbW1hbmRQcm94eS5oCkBAIC0yOCw4ICsyOCw4IEBACiAjaW5j
bHVkZSAiQVBJT2JqZWN0LmgiCiAjaW5jbHVkZSA8V2ViQ29yZS9FZGl0QWN0aW9uLmg+CiAjaW5j
bHVkZSA8d3RmL0ZvcndhcmQuaD4KLSNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1
ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCiBuYW1lc3Bh
Y2UgV2ViS2l0IHsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkdy
YW1tYXJEZXRhaWwuY3BwIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYkdyYW1tYXJEZXRh
aWwuY3BwCmluZGV4IDBmZTFiZmIzMWNiMDgwNDAzZmIzYzJmMzgyZDM5MzNiMTIzYjhiZDguLjZl
ZTQ0MWIxMWEyMzkwNWUzM2MzOWQ4YTllMDBkMzk3Zjk2ZjUyYjEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJHcmFtbWFyRGV0YWlsLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViR3JhbW1hckRldGFpbC5jcHAKQEAgLTMyLDE0ICszMiwxNCBAQAog
CiBuYW1lc3BhY2UgV2ViS2l0IHsKIAotUGFzc1JlZlB0cjxXZWJHcmFtbWFyRGV0YWlsPiBXZWJH
cmFtbWFyRGV0YWlsOjpjcmVhdGUoaW50IGxvY2F0aW9uLCBpbnQgbGVuZ3RoLCBBUEk6OkFycmF5
KiBndWVzc2VzLCBjb25zdCBTdHJpbmcmIHVzZXJEZXNjcmlwdGlvbikKK1JlZjxXZWJHcmFtbWFy
RGV0YWlsPiBXZWJHcmFtbWFyRGV0YWlsOjpjcmVhdGUoaW50IGxvY2F0aW9uLCBpbnQgbGVuZ3Ro
LCBBUEk6OkFycmF5KiBndWVzc2VzLCBjb25zdCBTdHJpbmcmIHVzZXJEZXNjcmlwdGlvbikKIHsK
LSAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYkdyYW1tYXJEZXRhaWwobG9jYXRpb24sIGxlbmd0
aCwgZ3Vlc3NlcywgdXNlckRlc2NyaXB0aW9uKSk7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcg
V2ViR3JhbW1hckRldGFpbChsb2NhdGlvbiwgbGVuZ3RoLCBndWVzc2VzLCB1c2VyRGVzY3JpcHRp
b24pKTsKIH0KIAotUGFzc1JlZlB0cjxXZWJHcmFtbWFyRGV0YWlsPiBXZWJHcmFtbWFyRGV0YWls
OjpjcmVhdGUoY29uc3QgV2ViQ29yZTo6R3JhbW1hckRldGFpbCYgZ3JhbW1hckRldGFpbCkKK1Jl
ZjxXZWJHcmFtbWFyRGV0YWlsPiBXZWJHcmFtbWFyRGV0YWlsOjpjcmVhdGUoY29uc3QgV2ViQ29y
ZTo6R3JhbW1hckRldGFpbCYgZ3JhbW1hckRldGFpbCkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYo
bmV3IFdlYkdyYW1tYXJEZXRhaWwoZ3JhbW1hckRldGFpbCkpOworICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IFdlYkdyYW1tYXJEZXRhaWwoZ3JhbW1hckRldGFpbCkpOwogfQogCiBXZWJHcmFtbWFy
RGV0YWlsOjpXZWJHcmFtbWFyRGV0YWlsKGludCBsb2NhdGlvbiwgaW50IGxlbmd0aCwgQVBJOjpB
cnJheSogZ3Vlc3NlcywgY29uc3QgU3RyaW5nJiB1c2VyRGVzY3JpcHRpb24pCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViR3JhbW1hckRldGFpbC5oIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYkdyYW1tYXJEZXRhaWwuaAppbmRleCA3ZDE3NzA1NzAyNjE0ZWEw
N2Q4Yjk0NDM0Nzk4NTM3NzU3ZmIzNmZjLi4yOTZjNDE0ZWVlMzI3MDFlNmNmZTAyMTIyMDAyNTY2
MGRmMDE3NWU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViR3JhbW1h
ckRldGFpbC5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJHcmFtbWFyRGV0YWls
LmgKQEAgLTMwLDE0ICszMCwxNCBAQAogI2luY2x1ZGUgIkFQSU9iamVjdC5oIgogI2luY2x1ZGUg
PFdlYkNvcmUvVGV4dENoZWNrZXJDbGllbnQuaD4KICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgot
I2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CisjaW5jbHVkZSA8d3RmL1JlZi5oPgogCiBuYW1l
c3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgV2ViR3JhbW1hckRldGFpbCA6IHB1YmxpYyBBUEk6Ok9i
amVjdEltcGw8QVBJOjpPYmplY3Q6OlR5cGU6OkdyYW1tYXJEZXRhaWw+IHsKIHB1YmxpYzoKLSAg
ICBzdGF0aWMgUGFzc1JlZlB0cjxXZWJHcmFtbWFyRGV0YWlsPiBjcmVhdGUoaW50IGxvY2F0aW9u
LCBpbnQgbGVuZ3RoLCBBUEk6OkFycmF5KiBndWVzc2VzLCBjb25zdCBTdHJpbmcmIHVzZXJEZXNj
cmlwdGlvbik7Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8V2ViR3JhbW1hckRldGFpbD4gY3JlYXRl
KGNvbnN0IFdlYkNvcmU6OkdyYW1tYXJEZXRhaWwmKTsKKyAgICBzdGF0aWMgUmVmPFdlYkdyYW1t
YXJEZXRhaWw+IGNyZWF0ZShpbnQgbG9jYXRpb24sIGludCBsZW5ndGgsIEFQSTo6QXJyYXkqIGd1
ZXNzZXMsIGNvbnN0IFN0cmluZyYgdXNlckRlc2NyaXB0aW9uKTsKKyAgICBzdGF0aWMgUmVmPFdl
YkdyYW1tYXJEZXRhaWw+IGNyZWF0ZShjb25zdCBXZWJDb3JlOjpHcmFtbWFyRGV0YWlsJik7CiAK
ICAgICBpbnQgbG9jYXRpb24oKSBjb25zdCB7IHJldHVybiBtX2dyYW1tYXJEZXRhaWwubG9jYXRp
b247IH0KICAgICBpbnQgbGVuZ3RoKCkgY29uc3QgeyByZXR1cm4gbV9ncmFtbWFyRGV0YWlsLmxl
bmd0aDsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAppbmRleCAz
N2UwMzE5ZDQxYWU2YjEyM2Q3ZWI4MGY4M2Y0NjQwZDYwZTc1YzRlLi5lZmM4NzczMTk3NzZmYjgw
MDQyNTI2NzE0MzBhYjdhZWIzMWYzOTdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVBy
b2Nlc3MvV2ViUGFnZVByb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2Vi
UGFnZVByb3h5LmNwcApAQCAtMjIzLDcgKzIyMyw3IEBAIHB1YmxpYzoKICAgICBzdGQ6OnVuaXF1
ZV9wdHI8UmVjb3JkPiBjcmVhdGVSZWNvcmQodWludDY0X3QgZnJhbWVJRCwgU3RyaW5nIG9yaWdp
bklkZW50aWZpZXIsCiAgICAgICAgIFN0cmluZyBkYXRhYmFzZU5hbWUsIFN0cmluZyBkaXNwbGF5
TmFtZSwgdWludDY0X3QgY3VycmVudFF1b3RhLAogICAgICAgICB1aW50NjRfdCBjdXJyZW50T3Jp
Z2luVXNhZ2UsIHVpbnQ2NF90IGN1cnJlbnREYXRhYmFzZVVzYWdlLCB1aW50NjRfdCBleHBlY3Rl
ZFVzYWdlLCAKLSAgICAgICAgUGFzc1JlZlB0cjxNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpFeGNl
ZWRlZERhdGFiYXNlUXVvdGE6OkRlbGF5ZWRSZXBseT4pOworICAgICAgICBSZWY8TWVzc2FnZXM6
OldlYlBhZ2VQcm94eTo6RXhjZWVkZWREYXRhYmFzZVF1b3RhOjpEZWxheWVkUmVwbHk+JiYpOwog
CiAgICAgdm9pZCBhZGQoc3RkOjp1bmlxdWVfcHRyPFJlY29yZD4pOwogICAgIGJvb2wgYXJlQmVp
bmdQcm9jZXNzZWQoKSBjb25zdCB7IHJldHVybiAhIW1fY3VycmVudFJlY29yZDsgfQpAQCAtMjQ2
LDcgKzI0Niw3IEBAIEV4Y2VlZGVkRGF0YWJhc2VRdW90YVJlY29yZHMmIEV4Y2VlZGVkRGF0YWJh
c2VRdW90YVJlY29yZHM6OnNpbmdsZXRvbigpCiBzdGQ6OnVuaXF1ZV9wdHI8RXhjZWVkZWREYXRh
YmFzZVF1b3RhUmVjb3Jkczo6UmVjb3JkPiBFeGNlZWRlZERhdGFiYXNlUXVvdGFSZWNvcmRzOjpj
cmVhdGVSZWNvcmQoCiAgICAgdWludDY0X3QgZnJhbWVJRCwgU3RyaW5nIG9yaWdpbklkZW50aWZp
ZXIsIFN0cmluZyBkYXRhYmFzZU5hbWUsIFN0cmluZyBkaXNwbGF5TmFtZSwKICAgICB1aW50NjRf
dCBjdXJyZW50UXVvdGEsIHVpbnQ2NF90IGN1cnJlbnRPcmlnaW5Vc2FnZSwgdWludDY0X3QgY3Vy
cmVudERhdGFiYXNlVXNhZ2UsCi0gICAgdWludDY0X3QgZXhwZWN0ZWRVc2FnZSwgUGFzc1JlZlB0
cjxNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpFeGNlZWRlZERhdGFiYXNlUXVvdGE6OkRlbGF5ZWRS
ZXBseT4gcmVwbHkpCisgICAgdWludDY0X3QgZXhwZWN0ZWRVc2FnZSwgUmVmPE1lc3NhZ2VzOjpX
ZWJQYWdlUHJveHk6OkV4Y2VlZGVkRGF0YWJhc2VRdW90YTo6RGVsYXllZFJlcGx5PiYmIHJlcGx5
KQogewogICAgIGF1dG8gcmVjb3JkID0gc3RkOjptYWtlX3VuaXF1ZTxSZWNvcmQ+KCk7CiAgICAg
cmVjb3JkLT5mcmFtZUlEID0gZnJhbWVJRDsKQEAgLTI1Nyw3ICsyNTcsNyBAQCBzdGQ6OnVuaXF1
ZV9wdHI8RXhjZWVkZWREYXRhYmFzZVF1b3RhUmVjb3Jkczo6UmVjb3JkPiBFeGNlZWRlZERhdGFi
YXNlUXVvdGFSZWNvcgogICAgIHJlY29yZC0+Y3VycmVudE9yaWdpblVzYWdlID0gY3VycmVudE9y
aWdpblVzYWdlOwogICAgIHJlY29yZC0+Y3VycmVudERhdGFiYXNlVXNhZ2UgPSBjdXJyZW50RGF0
YWJhc2VVc2FnZTsKICAgICByZWNvcmQtPmV4cGVjdGVkVXNhZ2UgPSBleHBlY3RlZFVzYWdlOwot
ICAgIHJlY29yZC0+cmVwbHkgPSByZXBseTsKKyAgICByZWNvcmQtPnJlcGx5ID0gV1RGTW92ZShy
ZXBseSk7CiAgICAgcmV0dXJuIHJlY29yZDsKIH0KIApAQCAtNDc1OCw5ICs0NzU4LDkgQEAgdm9p
ZCBXZWJQYWdlUHJveHk6OmNoYW5nZVNwZWxsaW5nVG9Xb3JkKGNvbnN0IFN0cmluZyYgd29yZCkK
ICAgICBtX3Byb2Nlc3MtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2U6OkNoYW5nZVNwZWxsaW5nVG9X
b3JkKHdvcmQpLCBtX3BhZ2VJRCk7CiB9CiAKLXZvaWQgV2ViUGFnZVByb3h5OjpyZWdpc3RlckVk
aXRDb21tYW5kKFBhc3NSZWZQdHI8V2ViRWRpdENvbW1hbmRQcm94eT4gY29tbWFuZFByb3h5LCBV
bmRvT3JSZWRvIHVuZG9PclJlZG8pCit2b2lkIFdlYlBhZ2VQcm94eTo6cmVnaXN0ZXJFZGl0Q29t
bWFuZChSZWY8V2ViRWRpdENvbW1hbmRQcm94eT4mJiBjb21tYW5kUHJveHksIFVuZG9PclJlZG8g
dW5kb09yUmVkbykKIHsKLSAgICBtX3BhZ2VDbGllbnQucmVnaXN0ZXJFZGl0Q29tbWFuZChjb21t
YW5kUHJveHksIHVuZG9PclJlZG8pOworICAgIG1fcGFnZUNsaWVudC5yZWdpc3RlckVkaXRDb21t
YW5kKFdURk1vdmUoY29tbWFuZFByb3h5KSwgdW5kb09yUmVkbyk7CiB9CiAKIHZvaWQgV2ViUGFn
ZVByb3h5OjphZGRFZGl0Q29tbWFuZChXZWJFZGl0Q29tbWFuZFByb3h5KiBjb21tYW5kKQpAQCAt
NTY3MSwyNiArNTY3MSwyMyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkUmVjZWl2ZUF1dGhlbnRp
Y2F0aW9uQ2hhbGxlbmdlKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IEF1dAogICAgIGRpZFJlY2Vp
dmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5KGZyYW1lSUQsIEF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlUHJveHk6OmNyZWF0ZShjb3JlQ2hhbGxlbmdlLCBjaGFsbGVuZ2VJRCwgbV9wcm9jZXNz
LT5jb25uZWN0aW9uKCkpKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJveHk6OmRpZFJlY2VpdmVBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5KHVpbnQ2NF90IGZyYW1lSUQsIFBhc3NSZWZQdHI8QXV0
aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eT4gcHJwQXV0aGVudGljYXRpb25DaGFsbGVuZ2UpCit2
b2lkIFdlYlBhZ2VQcm94eTo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHko
dWludDY0X3QgZnJhbWVJRCwgUmVmPEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHk+JiYgYXV0
aGVudGljYXRpb25DaGFsbGVuZ2UpCiB7Ci0gICAgQVNTRVJUKHBycEF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlKTsKLQogICAgIFdlYkZyYW1lUHJveHkqIGZyYW1lID0gbV9wcm9jZXNzLT53ZWJGcmFt
ZShmcmFtZUlEKTsKICAgICBNRVNTQUdFX0NIRUNLKGZyYW1lKTsKIAotICAgIFJlZlB0cjxBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5PiBhdXRoZW50aWNhdGlvbkNoYWxsZW5nZSA9IHBycEF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOwogICAgIGlmIChtX25hdmlnYXRpb25DbGllbnQpCi0gICAg
ICAgIG1fbmF2aWdhdGlvbkNsaWVudC0+ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
KCp0aGlzLCBhdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5nZXQoKSk7CisgICAgICAgIG1fbmF2aWdh
dGlvbkNsaWVudC0+ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKCp0aGlzLCBhdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZS5wdHIoKSk7CiAgICAgZWxzZQotICAgICAgICBtX2xvYWRlckNs
aWVudC0+ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlSW5GcmFtZSgqdGhpcywgKmZy
YW1lLCBhdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5nZXQoKSk7CisgICAgICAgIG1fbG9hZGVyQ2xp
ZW50LT5kaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2VJbkZyYW1lKCp0aGlzLCAqZnJh
bWUsIGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLnB0cigpKTsKIH0KIAotdm9pZCBXZWJQYWdlUHJv
eHk6OmV4Y2VlZGVkRGF0YWJhc2VRdW90YSh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBTdHJpbmcm
IG9yaWdpbklkZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgZGF0YWJhc2VOYW1lLCBjb25zdCBTdHJp
bmcmIGRpc3BsYXlOYW1lLCB1aW50NjRfdCBjdXJyZW50UXVvdGEsIHVpbnQ2NF90IGN1cnJlbnRP
cmlnaW5Vc2FnZSwgdWludDY0X3QgY3VycmVudERhdGFiYXNlVXNhZ2UsIHVpbnQ2NF90IGV4cGVj
dGVkVXNhZ2UsIFBhc3NSZWZQdHI8TWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RXhjZWVkZWREYXRh
YmFzZVF1b3RhOjpEZWxheWVkUmVwbHk+IHJlcGx5KQordm9pZCBXZWJQYWdlUHJveHk6OmV4Y2Vl
ZGVkRGF0YWJhc2VRdW90YSh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBTdHJpbmcmIG9yaWdpbklk
ZW50aWZpZXIsIGNvbnN0IFN0cmluZyYgZGF0YWJhc2VOYW1lLCBjb25zdCBTdHJpbmcmIGRpc3Bs
YXlOYW1lLCB1aW50NjRfdCBjdXJyZW50UXVvdGEsIHVpbnQ2NF90IGN1cnJlbnRPcmlnaW5Vc2Fn
ZSwgdWludDY0X3QgY3VycmVudERhdGFiYXNlVXNhZ2UsIHVpbnQ2NF90IGV4cGVjdGVkVXNhZ2Us
IFJlZjxNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpFeGNlZWRlZERhdGFiYXNlUXVvdGE6OkRlbGF5
ZWRSZXBseT4mJiByZXBseSkKIHsKICAgICBFeGNlZWRlZERhdGFiYXNlUXVvdGFSZWNvcmRzJiBy
ZWNvcmRzID0gRXhjZWVkZWREYXRhYmFzZVF1b3RhUmVjb3Jkczo6c2luZ2xldG9uKCk7CiAgICAg
c3RkOjp1bmlxdWVfcHRyPEV4Y2VlZGVkRGF0YWJhc2VRdW90YVJlY29yZHM6OlJlY29yZD4gbmV3
UmVjb3JkID0gcmVjb3Jkcy5jcmVhdGVSZWNvcmQoZnJhbWVJRCwKICAgICAgICAgb3JpZ2luSWRl
bnRpZmllciwgZGF0YWJhc2VOYW1lLCBkaXNwbGF5TmFtZSwgY3VycmVudFF1b3RhLCBjdXJyZW50
T3JpZ2luVXNhZ2UsCi0gICAgICAgIGN1cnJlbnREYXRhYmFzZVVzYWdlLCBleHBlY3RlZFVzYWdl
LCByZXBseSk7CisgICAgICAgIGN1cnJlbnREYXRhYmFzZVVzYWdlLCBleHBlY3RlZFVzYWdlLCBX
VEZNb3ZlKHJlcGx5KSk7CiAgICAgcmVjb3Jkcy5hZGQoV1RGTW92ZShuZXdSZWNvcmQpKTsKIAog
ICAgIGlmIChyZWNvcmRzLmFyZUJlaW5nUHJvY2Vzc2VkKCkpCkBAIC01NzEyLDEwICs1NzA5LDEw
IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpleGNlZWRlZERhdGFiYXNlUXVvdGEodWludDY0X3QgZnJh
bWVJRCwgY29uc3QgU3RyaW5nJiBvcmlnaW5JCiAgICAgfQogfQogCi12b2lkIFdlYlBhZ2VQcm94
eTo6cmVhY2hlZEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5RdW90YShjb25zdCBTdHJpbmcmIG9yaWdp
bklkZW50aWZpZXIsIHVpbnQ2NF90IGN1cnJlbnRRdW90YSwgdWludDY0X3QgdG90YWxCeXRlc05l
ZWRlZCwgUGFzc1JlZlB0cjxNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpSZWFjaGVkQXBwbGljYXRp
b25DYWNoZU9yaWdpblF1b3RhOjpEZWxheWVkUmVwbHk+IHJlcGx5KQordm9pZCBXZWJQYWdlUHJv
eHk6OnJlYWNoZWRBcHBsaWNhdGlvbkNhY2hlT3JpZ2luUXVvdGEoY29uc3QgU3RyaW5nJiBvcmln
aW5JZGVudGlmaWVyLCB1aW50NjRfdCBjdXJyZW50UXVvdGEsIHVpbnQ2NF90IHRvdGFsQnl0ZXNO
ZWVkZWQsIFJlZjxNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpSZWFjaGVkQXBwbGljYXRpb25DYWNo
ZU9yaWdpblF1b3RhOjpEZWxheWVkUmVwbHk+JiYgcmVwbHkpCiB7CiAgICAgUmVmPFNlY3VyaXR5
T3JpZ2luPiBzZWN1cml0eU9yaWdpbiA9IFNlY3VyaXR5T3JpZ2luRGF0YTo6ZnJvbURhdGFiYXNl
SWRlbnRpZmllcihvcmlnaW5JZGVudGlmaWVyKS0+c2VjdXJpdHlPcmlnaW4oKTsKLSAgICBtX3Vp
Q2xpZW50LT5yZWFjaGVkQXBwbGljYXRpb25DYWNoZU9yaWdpblF1b3RhKHRoaXMsIHNlY3VyaXR5
T3JpZ2luLmdldCgpLCBjdXJyZW50UXVvdGEsIHRvdGFsQnl0ZXNOZWVkZWQsIFtyZXBseV0odW5z
aWduZWQgbG9uZyBsb25nIG5ld1F1b3RhKSB7IHJlcGx5LT5zZW5kKG5ld1F1b3RhKTsgfSk7Cisg
ICAgbV91aUNsaWVudC0+cmVhY2hlZEFwcGxpY2F0aW9uQ2FjaGVPcmlnaW5RdW90YSh0aGlzLCBz
ZWN1cml0eU9yaWdpbi5nZXQoKSwgY3VycmVudFF1b3RhLCB0b3RhbEJ5dGVzTmVlZGVkLCBbcmVw
bHkgPSBXVEZNb3ZlKHJlcGx5KV0odW5zaWduZWQgbG9uZyBsb25nIG5ld1F1b3RhKSB7IHJlcGx5
LT5zZW5kKG5ld1F1b3RhKTsgfSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpyZXF1ZXN0R2Vv
bG9jYXRpb25QZXJtaXNzaW9uRm9yRnJhbWUodWludDY0X3QgZ2VvbG9jYXRpb25JRCwgdWludDY0
X3QgZnJhbWVJRCwgU3RyaW5nIG9yaWdpbklkZW50aWZpZXIpCkBAIC02MTg1LDcgKzYxODIsNyBA
QCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0RWRpdGFibGVFbGVtZW50SXNGb2N1c2VkKGJvb2wgZWRp
dGFibGVFbGVtZW50SXNGb2N1c2VkKQogI2VuZGlmIC8vIFBMQVRGT1JNKE1BQykKIAogI2lmIFBM
QVRGT1JNKENPQ09BKQotUGFzc1JlZlB0cjxWaWV3U25hcHNob3Q+IFdlYlBhZ2VQcm94eTo6dGFr
ZVZpZXdTbmFwc2hvdCgpCitSZWZQdHI8Vmlld1NuYXBzaG90PiBXZWJQYWdlUHJveHk6OnRha2VW
aWV3U25hcHNob3QoKQogewogICAgIHJldHVybiBtX3BhZ2VDbGllbnQudGFrZVZpZXdTbmFwc2hv
dCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94
eS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5oCmluZGV4IDM1YmUw
MWE1Nzc0MTEyYjQ0NjBhNWI4ZDBjZmU4MGY0OGE2MjNhMDYuLmQ0N2MwYzljMzY4M2E0ODYwZTFj
NTE4NDYwMWFmNGY3MDQ1OTlhMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9XZWJQYWdlUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVBy
b3h5LmgKQEAgLTg0LDcgKzg0LDYgQEAKICNpbmNsdWRlIDxtZW1vcnk+CiAjaW5jbHVkZSA8d3Rm
L0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgotI2luY2x1ZGUgPHd0Zi9QYXNz
UmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZi5oPgogI2luY2x1ZGUgPHd0Zi9SZWZQdHIuaD4K
ICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CkBAIC04NjAsNyArODU5LDcgQEAgcHVibGljOgogICAg
IHZvaWQgYWRkRWRpdENvbW1hbmQoV2ViRWRpdENvbW1hbmRQcm94eSopOwogICAgIHZvaWQgcmVt
b3ZlRWRpdENvbW1hbmQoV2ViRWRpdENvbW1hbmRQcm94eSopOwogICAgIGJvb2wgaXNWYWxpZEVk
aXRDb21tYW5kKFdlYkVkaXRDb21tYW5kUHJveHkqKTsKLSAgICB2b2lkIHJlZ2lzdGVyRWRpdENv
bW1hbmQoUGFzc1JlZlB0cjxXZWJFZGl0Q29tbWFuZFByb3h5PiwgVW5kb09yUmVkbyk7CisgICAg
dm9pZCByZWdpc3RlckVkaXRDb21tYW5kKFJlZjxXZWJFZGl0Q29tbWFuZFByb3h5PiYmLCBVbmRv
T3JSZWRvKTsKIAogI2lmIFBMQVRGT1JNKENPQ09BKQogICAgIHZvaWQgcmVnaXN0ZXJLZXlwcmVz
c0NvbW1hbmROYW1lKGNvbnN0IFN0cmluZyYgbmFtZSkgeyBtX2tub3duS2V5cHJlc3NDb21tYW5k
TmFtZXMuYWRkKG5hbWUpOyB9CkBAIC0xMDEzLDcgKzEwMTIsNyBAQCBwdWJsaWM6CiAgICAgYm9v
bCBhdXRvU2l6aW5nU2hvdWxkRXhwYW5kVG9WaWV3SGVpZ2h0KCkgY29uc3QgeyByZXR1cm4gbV9h
dXRvU2l6aW5nU2hvdWxkRXhwYW5kVG9WaWV3SGVpZ2h0OyB9CiAgICAgdm9pZCBzZXRBdXRvU2l6
aW5nU2hvdWxkRXhwYW5kVG9WaWV3SGVpZ2h0KGJvb2wpOwogCi0gICAgdm9pZCBkaWRSZWNlaXZl
QXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eSh1aW50NjRfdCBmcmFtZUlELCBQYXNzUmVmUHRy
PEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHk+KTsKKyAgICB2b2lkIGRpZFJlY2VpdmVBdXRo
ZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5KHVpbnQ2NF90IGZyYW1lSUQsIFJlZjxBdXRoZW50aWNh
dGlvbkNoYWxsZW5nZVByb3h5PiYmKTsKIAogICAgIGludDY0X3Qgc3BlbGxEb2N1bWVudFRhZygp
OwogICAgIHZvaWQgZGlkRmluaXNoQ2hlY2tpbmdUZXh0KHVpbnQ2NF90IHJlcXVlc3RJRCwgY29u
c3QgVmVjdG9yPFdlYkNvcmU6OlRleHRDaGVja2luZ1Jlc3VsdD4mKTsKQEAgLTEwMzgsNyArMTAz
Nyw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHJlY29yZE5hdmlnYXRpb25TbmFwc2hvdChXZWJCYWNr
Rm9yd2FyZExpc3RJdGVtJik7CiAKICNpZiBQTEFURk9STShDT0NPQSkKLSAgICBQYXNzUmVmUHRy
PFZpZXdTbmFwc2hvdD4gdGFrZVZpZXdTbmFwc2hvdCgpOworICAgIFJlZlB0cjxWaWV3U25hcHNo
b3Q+IHRha2VWaWV3U25hcHNob3QoKTsKICNlbmRpZgogCiAjaWYgRU5BQkxFKFNVQlRMRV9DUllQ
VE8pCkBAIC0xMzEyLDggKzEzMTEsOCBAQCBwcml2YXRlOgogICAgIHZvaWQgcGFnZURpZFNjcm9s
bCgpOwogICAgIHZvaWQgcnVuT3BlblBhbmVsKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0IFdlYkNv
cmU6OlNlY3VyaXR5T3JpZ2luRGF0YSYsIGNvbnN0IFdlYkNvcmU6OkZpbGVDaG9vc2VyU2V0dGlu
Z3MmKTsKICAgICB2b2lkIHByaW50RnJhbWUodWludDY0X3QgZnJhbWVJRCk7Ci0gICAgdm9pZCBl
eGNlZWRlZERhdGFiYXNlUXVvdGEodWludDY0X3QgZnJhbWVJRCwgY29uc3QgU3RyaW5nJiBvcmln
aW5JZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGRhdGFiYXNlTmFtZSwgY29uc3QgU3RyaW5nJiBk
aXNwbGF5TmFtZSwgdWludDY0X3QgY3VycmVudFF1b3RhLCB1aW50NjRfdCBjdXJyZW50T3JpZ2lu
VXNhZ2UsIHVpbnQ2NF90IGN1cnJlbnREYXRhYmFzZVVzYWdlLCB1aW50NjRfdCBleHBlY3RlZFVz
YWdlLCBQYXNzUmVmUHRyPE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkV4Y2VlZGVkRGF0YWJhc2VR
dW90YTo6RGVsYXllZFJlcGx5Pik7Ci0gICAgdm9pZCByZWFjaGVkQXBwbGljYXRpb25DYWNoZU9y
aWdpblF1b3RhKGNvbnN0IFN0cmluZyYgb3JpZ2luSWRlbnRpZmllciwgdWludDY0X3QgY3VycmVu
dFF1b3RhLCB1aW50NjRfdCB0b3RhbEJ5dGVzTmVlZGVkLCBQYXNzUmVmUHRyPE1lc3NhZ2VzOjpX
ZWJQYWdlUHJveHk6OlJlYWNoZWRBcHBsaWNhdGlvbkNhY2hlT3JpZ2luUXVvdGE6OkRlbGF5ZWRS
ZXBseT4pOworICAgIHZvaWQgZXhjZWVkZWREYXRhYmFzZVF1b3RhKHVpbnQ2NF90IGZyYW1lSUQs
IGNvbnN0IFN0cmluZyYgb3JpZ2luSWRlbnRpZmllciwgY29uc3QgU3RyaW5nJiBkYXRhYmFzZU5h
bWUsIGNvbnN0IFN0cmluZyYgZGlzcGxheU5hbWUsIHVpbnQ2NF90IGN1cnJlbnRRdW90YSwgdWlu
dDY0X3QgY3VycmVudE9yaWdpblVzYWdlLCB1aW50NjRfdCBjdXJyZW50RGF0YWJhc2VVc2FnZSwg
dWludDY0X3QgZXhwZWN0ZWRVc2FnZSwgUmVmPE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkV4Y2Vl
ZGVkRGF0YWJhc2VRdW90YTo6RGVsYXllZFJlcGx5PiYmKTsKKyAgICB2b2lkIHJlYWNoZWRBcHBs
aWNhdGlvbkNhY2hlT3JpZ2luUXVvdGEoY29uc3QgU3RyaW5nJiBvcmlnaW5JZGVudGlmaWVyLCB1
aW50NjRfdCBjdXJyZW50UXVvdGEsIHVpbnQ2NF90IHRvdGFsQnl0ZXNOZWVkZWQsIFJlZjxNZXNz
YWdlczo6V2ViUGFnZVByb3h5OjpSZWFjaGVkQXBwbGljYXRpb25DYWNoZU9yaWdpblF1b3RhOjpE
ZWxheWVkUmVwbHk+JiYpOwogICAgIHZvaWQgcmVxdWVzdEdlb2xvY2F0aW9uUGVybWlzc2lvbkZv
ckZyYW1lKHVpbnQ2NF90IGdlb2xvY2F0aW9uSUQsIHVpbnQ2NF90IGZyYW1lSUQsIFN0cmluZyBv
cmlnaW5JZGVudGlmaWVyKTsKIAogI2lmIEVOQUJMRShNRURJQV9TVFJFQU0pCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuY3BwIGIvU291cmNlL1dl
YktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQb29sLmNwcAppbmRleCAxYzBiMGQ3ZTljMGJiNGQz
NmFkNmJlMThhMjJiZDQxOTg2ZTQ1MWQ2Li4zMjgxMDlmMTc1ZmVhYTIwYzY3MDFhYTg1NGJkNzcz
NDdiMDNlNDljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vz
c1Bvb2wuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQcm9jZXNzUG9vbC5j
cHAKQEAgLTE1NDIsNyArMTU0Miw3IEBAIHZvaWQgV2ViUHJvY2Vzc1Bvb2w6OnBsdWdJbkRpZFJl
Y2VpdmVVc2VySW50ZXJhY3Rpb24odW5zaWduZWQgcGx1Z0luT3JpZ2luSGFzaCwKICAgICBtX3Bs
dWdJbkF1dG9TdGFydFByb3ZpZGVyLmRpZFJlY2VpdmVVc2VySW50ZXJhY3Rpb24ocGx1Z0luT3Jp
Z2luSGFzaCwgc2Vzc2lvbklEKTsKIH0KIAotUGFzc1JlZlB0cjxBUEk6OkRpY3Rpb25hcnk+IFdl
YlByb2Nlc3NQb29sOjpwbHVnSW5BdXRvU3RhcnRPcmlnaW5IYXNoZXMoKSBjb25zdAorUmVmPEFQ
STo6RGljdGlvbmFyeT4gV2ViUHJvY2Vzc1Bvb2w6OnBsdWdJbkF1dG9TdGFydE9yaWdpbkhhc2hl
cygpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fcGx1Z0luQXV0b1N0YXJ0UHJvdmlkZXIuYXV0b1N0
YXJ0T3JpZ2luc1RhYmxlQ29weSgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL1dlYlByb2Nlc3NQb29sLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJv
Y2Vzc1Bvb2wuaAppbmRleCBiMjQyYTYzNzkyODAyY2JhMDllYjI5OTM2Yzg0Mjk5ZjZlYWZkNDkz
Li43MzliMzk3MDE1MDk3NTIyNDcxMTFmZTlhM2E0MjYwNzcwM2MwMWQ0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvV2ViUHJvY2Vzc1Bvb2wuaApAQCAtNDksNyArNDksNiBAQAogI2luY2x1
ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KICNpbmNsdWRlIDx3
dGYvSGFzaFNldC5oPgotI2luY2x1ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3Rm
L1JlZkNvdW50ZXIuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL3Rl
eHQvU3RyaW5nSGFzaC5oPgpAQCAtMTg1LDcgKzE4NCw3IEBAIHB1YmxpYzoKICAgICBEb3dubG9h
ZFByb3h5KiBkb3dubG9hZChXZWJQYWdlUHJveHkqIGluaXRpYXRpbmdQYWdlLCBjb25zdCBXZWJD
b3JlOjpSZXNvdXJjZVJlcXVlc3QmLCBjb25zdCBTdHJpbmcmIHN1Z2dlc3RlZEZpbGVuYW1lID0g
eyB9KTsKICAgICBEb3dubG9hZFByb3h5KiByZXN1bWVEb3dubG9hZChjb25zdCBBUEk6OkRhdGEq
IHJlc3VtZURhdGEsIGNvbnN0IFN0cmluZyYgcGF0aCk7CiAKLSAgICB2b2lkIHNldEluamVjdGVk
QnVuZGxlSW5pdGlhbGl6YXRpb25Vc2VyRGF0YShQYXNzUmVmUHRyPEFQSTo6T2JqZWN0PiB1c2Vy
RGF0YSkgeyBtX2luamVjdGVkQnVuZGxlSW5pdGlhbGl6YXRpb25Vc2VyRGF0YSA9IHVzZXJEYXRh
OyB9CisgICAgdm9pZCBzZXRJbmplY3RlZEJ1bmRsZUluaXRpYWxpemF0aW9uVXNlckRhdGEoUmVm
UHRyPEFQSTo6T2JqZWN0PiYmIHVzZXJEYXRhKSB7IG1faW5qZWN0ZWRCdW5kbGVJbml0aWFsaXph
dGlvblVzZXJEYXRhID0gV1RGTW92ZSh1c2VyRGF0YSk7IH0KIAogICAgIHZvaWQgcG9zdE1lc3Nh
Z2VUb0luamVjdGVkQnVuZGxlKGNvbnN0IFN0cmluZyYsIEFQSTo6T2JqZWN0Kik7CiAKQEAgLTMw
Niw3ICszMDUsNyBAQCBwdWJsaWM6CiAKICAgICB2b2lkIHRleHRDaGVja2VyU3RhdGVDaGFuZ2Vk
KCk7CiAKLSAgICBQYXNzUmVmUHRyPEFQSTo6RGljdGlvbmFyeT4gcGx1Z0luQXV0b1N0YXJ0T3Jp
Z2luSGFzaGVzKCkgY29uc3Q7CisgICAgUmVmPEFQSTo6RGljdGlvbmFyeT4gcGx1Z0luQXV0b1N0
YXJ0T3JpZ2luSGFzaGVzKCkgY29uc3Q7CiAgICAgdm9pZCBzZXRQbHVnSW5BdXRvU3RhcnRPcmln
aW5IYXNoZXMoQVBJOjpEaWN0aW9uYXJ5Jik7CiAgICAgdm9pZCBzZXRQbHVnSW5BdXRvU3RhcnRP
cmlnaW5zKEFQSTo6QXJyYXkmKTsKICAgICB2b2lkIHNldFBsdWdJbkF1dG9TdGFydE9yaWdpbnNG
aWx0ZXJpbmdPdXRFbnRyaWVzQWRkZWRBZnRlclRpbWUoQVBJOjpEaWN0aW9uYXJ5JiwgZG91Ymxl
IHRpbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQ
cm94eS5oIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL1dlYlByb2Nlc3NQcm94eS5oCmluZGV4
IGEyMWNlMDRhNmI5ZDBkZjI1NmZmMTc5YjE4NGQxODg4ZWE5NjUyYmQuLjQxNTgyYTc5YmUzOTJm
NTAzOGI4M2E3N2VhNzEzZjNhYzk2ZDM0YzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1VJ
UHJvY2Vzcy9XZWJQcm9jZXNzUHJveHkuaAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
V2ViUHJvY2Vzc1Byb3h5LmgKQEAgLTQzLDggKzQzLDggQEAKICNpbmNsdWRlIDxtZW1vcnk+CiAj
aW5jbHVkZSA8d3RmL0ZvcndhcmQuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgotI2luY2x1
ZGUgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNs
dWRlIDx3dGYvUmVmUHRyLmg+CiAKIG5hbWVzcGFjZSBBUEkgewogY2xhc3MgUGFnZUNvbmZpZ3Vy
YXRpb247CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1BhZ2VDbGll
bnRJbXBsSU9TLmggYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBs
SU9TLmgKaW5kZXggOGI4ZWM4YzBkNzU1Y2QwOTIyNjQ1Y2UwYWIyZTAzM2U5ZTU5NGE0Yy4uN2Zm
MDYwODc2Njk3ZDJkYTEwY2U2YTdhZDJkYjRiZDBmMmQ1YWZiNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5oCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudEltcGxJT1MuaApAQCAtNzMsMTMgKzczLDEz
IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZXRDdXJzb3IoY29uc3QgV2ViQ29yZTo6Q3Vyc29yJikg
b3ZlcnJpZGU7CiAgICAgdm9pZCBzZXRDdXJzb3JIaWRkZW5VbnRpbE1vdXNlTW92ZXMoYm9vbCkg
b3ZlcnJpZGU7CiAgICAgdm9pZCBkaWRDaGFuZ2VWaWV3cG9ydFByb3BlcnRpZXMoY29uc3QgV2Vi
Q29yZTo6Vmlld3BvcnRBdHRyaWJ1dGVzJikgb3ZlcnJpZGU7Ci0gICAgdm9pZCByZWdpc3RlckVk
aXRDb21tYW5kKFBhc3NSZWZQdHI8V2ViRWRpdENvbW1hbmRQcm94eT4sIFdlYlBhZ2VQcm94eTo6
VW5kb09yUmVkbykgb3ZlcnJpZGU7CisgICAgdm9pZCByZWdpc3RlckVkaXRDb21tYW5kKFJlZjxX
ZWJFZGl0Q29tbWFuZFByb3h5PiYmLCBXZWJQYWdlUHJveHk6OlVuZG9PclJlZG8pIG92ZXJyaWRl
OwogICAgIHZvaWQgY2xlYXJBbGxFZGl0Q29tbWFuZHMoKSBvdmVycmlkZTsKICAgICBib29sIGNh
blVuZG9SZWRvKFdlYlBhZ2VQcm94eTo6VW5kb09yUmVkbykgb3ZlcnJpZGU7CiAgICAgdm9pZCBl
eGVjdXRlVW5kb1JlZG8oV2ViUGFnZVByb3h5OjpVbmRvT3JSZWRvKSBvdmVycmlkZTsKICAgICB2
b2lkIGFjY2Vzc2liaWxpdHlXZWJQcm9jZXNzVG9rZW5SZWNlaXZlZChjb25zdCBJUEM6OkRhdGFS
ZWZlcmVuY2UmKSBvdmVycmlkZTsKICAgICBib29sIGV4ZWN1dGVTYXZlZENvbW1hbmRCeVNlbGVj
dG9yKGNvbnN0IFN0cmluZyYgc2VsZWN0b3IpIG92ZXJyaWRlOwotICAgIHZvaWQgc2V0RHJhZ0lt
YWdlKGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBjbGllbnRQb3NpdGlvbiwgUGFzc1JlZlB0cjxT
aGFyZWFibGVCaXRtYXA+IGRyYWdJbWFnZSwgV2ViQ29yZTo6RHJhZ1NvdXJjZUFjdGlvbikgb3Zl
cnJpZGU7CisgICAgdm9pZCBzZXREcmFnSW1hZ2UoY29uc3QgV2ViQ29yZTo6SW50UG9pbnQmIGNs
aWVudFBvc2l0aW9uLCBSZWY8U2hhcmVhYmxlQml0bWFwPiYmIGRyYWdJbWFnZSwgV2ViQ29yZTo6
RHJhZ1NvdXJjZUFjdGlvbikgb3ZlcnJpZGU7CiAgICAgdm9pZCB1cGRhdGVTZWN1cmVJbnB1dFN0
YXRlKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCByZXNldFNlY3VyZUlucHV0U3RhdGUoKSBvdmVycmlk
ZTsKICAgICB2b2lkIG5vdGlmeUlucHV0Q29udGV4dEFib3V0RGlzY2FyZGVkQ29tcG9zaXRpb24o
KSBvdmVycmlkZTsKQEAgLTExMSw3ICsxMTEsNyBAQCBwcml2YXRlOgogICAgIExheWVyT3JWaWV3
ICphY2NlbGVyYXRlZENvbXBvc2l0aW5nUm9vdExheWVyKCkgY29uc3Qgb3ZlcnJpZGU7CiAgICAg
TGF5ZXJIb3N0aW5nTW9kZSB2aWV3TGF5ZXJIb3N0aW5nTW9kZSgpIG92ZXJyaWRlIHsgcmV0dXJu
IExheWVySG9zdGluZ01vZGU6Ok91dE9mUHJvY2VzczsgfQogCi0gICAgUGFzc1JlZlB0cjxWaWV3
U25hcHNob3Q+IHRha2VWaWV3U25hcHNob3QoKSBvdmVycmlkZTsKKyAgICBSZWZQdHI8Vmlld1Nu
YXBzaG90PiB0YWtlVmlld1NuYXBzaG90KCkgb3ZlcnJpZGU7CiAgICAgdm9pZCB3aGVlbEV2ZW50
V2FzTm90SGFuZGxlZEJ5V2ViQ29yZShjb25zdCBOYXRpdmVXZWJXaGVlbEV2ZW50Jikgb3ZlcnJp
ZGU7CiAKICAgICB2b2lkIGNvbW1pdFBvdGVudGlhbFRhcEZhaWxlZCgpIG92ZXJyaWRlOwpAQCAt
MTMxLDcgKzEzMSw3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBzZWxlY3Rpb25EaWRDaGFuZ2UoKSBv
dmVycmlkZTsKICAgICBib29sIGludGVycHJldEtleUV2ZW50KGNvbnN0IE5hdGl2ZVdlYktleWJv
YXJkRXZlbnQmLCBib29sIGlzQ2hhckV2ZW50KSBvdmVycmlkZTsKICAgICB2b2lkIHBvc2l0aW9u
SW5mb3JtYXRpb25EaWRDaGFuZ2UoY29uc3QgSW50ZXJhY3Rpb25JbmZvcm1hdGlvbkF0UG9zaXRp
b24mKSBvdmVycmlkZTsKLSAgICB2b2lkIHNhdmVJbWFnZVRvTGlicmFyeShQYXNzUmVmUHRyPFdl
YkNvcmU6OlNoYXJlZEJ1ZmZlcj4pIG92ZXJyaWRlOworICAgIHZvaWQgc2F2ZUltYWdlVG9MaWJy
YXJ5KFJlZjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+JiYpIG92ZXJyaWRlOwogICAgIGJvb2wgYWxs
b3dzQmxvY2tTZWxlY3Rpb24oKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZFVwZGF0ZUJsb2NrU2Vs
ZWN0aW9uV2l0aFRvdWNoKHVpbnQzMl90IHRvdWNoLCB1aW50MzJfdCBmbGFncywgZmxvYXQgZ3Jv
d1RocmVzaG9sZCwgZmxvYXQgc2hyaW5rVGhyZXNob2xkKSBvdmVycmlkZTsKICAgICB2b2lkIHNo
b3dQbGF5YmFja1RhcmdldFBpY2tlcihib29sIGhhc1ZpZGVvLCBjb25zdCBXZWJDb3JlOjpJbnRS
ZWN0JiBlbGVtZW50UmVjdCkgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9V
SVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJbXBsSU9TLm1tIGIvU291cmNlL1dlYktpdDIvVUlQcm9j
ZXNzL2lvcy9QYWdlQ2xpZW50SW1wbElPUy5tbQppbmRleCBkMzc2M2UxMTk5ZDkzZjgzMjFmYTUw
M2JhNzc1ZTk5MmU4NGI4MTc0Li5jZDg0MGMyOGMzNjJhMTdkZGMxMTE1YjhmMmJmOTlmYzZhYzcw
NzliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1BhZ2VDbGllbnRJ
bXBsSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvUGFnZUNsaWVudElt
cGxJT1MubW0KQEAgLTY0LDcgKzY0LDcgQEAgQGludGVyZmFjZSBXS0VkaXRDb21tYW5kT2JqQyA6
IE5TT2JqZWN0CiB7CiAgICAgUmVmUHRyPFdlYkVkaXRDb21tYW5kUHJveHk+IG1fY29tbWFuZDsK
IH0KLS0gKGlkKWluaXRXaXRoV2ViRWRpdENvbW1hbmRQcm94eTooUGFzc1JlZlB0cjxXZWJFZGl0
Q29tbWFuZFByb3h5Piljb21tYW5kOworLSAoaWQpaW5pdFdpdGhXZWJFZGl0Q29tbWFuZFByb3h5
OihSZWY8V2ViRWRpdENvbW1hbmRQcm94eT4mJiljb21tYW5kOwogLSAoV2ViRWRpdENvbW1hbmRQ
cm94eSopY29tbWFuZDsKIEBlbmQKIApAQCAtNzUsMTMgKzc1LDEzIEBAIEBlbmQKIAogQGltcGxl
bWVudGF0aW9uIFdLRWRpdENvbW1hbmRPYmpDCiAKLS0gKGlkKWluaXRXaXRoV2ViRWRpdENvbW1h
bmRQcm94eTooUGFzc1JlZlB0cjxXZWJFZGl0Q29tbWFuZFByb3h5Piljb21tYW5kCistIChpZClp
bml0V2l0aFdlYkVkaXRDb21tYW5kUHJveHk6KFJlZjxXZWJFZGl0Q29tbWFuZFByb3h5PiYmKWNv
bW1hbmQKIHsKICAgICBzZWxmID0gW3N1cGVyIGluaXRdOwogICAgIGlmICghc2VsZikKICAgICAg
ICAgcmV0dXJuIG5pbDsKICAgICAKLSAgICBtX2NvbW1hbmQgPSBjb21tYW5kOworICAgIG1fY29t
bWFuZCA9IFdURk1vdmUoY29tbWFuZCk7CiAgICAgcmV0dXJuIHNlbGY7CiB9CiAKQEAgLTMwMywx
MSArMzAzLDkgQEAgdm9pZCBQYWdlQ2xpZW50SW1wbDo6ZGlkQ2hhbmdlVmlld3BvcnRQcm9wZXJ0
aWVzKGNvbnN0IFZpZXdwb3J0QXR0cmlidXRlcyYpCiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0K
IAotdm9pZCBQYWdlQ2xpZW50SW1wbDo6cmVnaXN0ZXJFZGl0Q29tbWFuZChQYXNzUmVmUHRyPFdl
YkVkaXRDb21tYW5kUHJveHk+IHBycENvbW1hbmQsIFdlYlBhZ2VQcm94eTo6VW5kb09yUmVkbyB1
bmRvT3JSZWRvKQordm9pZCBQYWdlQ2xpZW50SW1wbDo6cmVnaXN0ZXJFZGl0Q29tbWFuZChSZWY8
V2ViRWRpdENvbW1hbmRQcm94eT4mJiBjb21tYW5kLCBXZWJQYWdlUHJveHk6OlVuZG9PclJlZG8g
dW5kb09yUmVkbykKIHsKLSAgICBSZWZQdHI8V2ViRWRpdENvbW1hbmRQcm94eT4gY29tbWFuZCA9
IHBycENvbW1hbmQ7Ci0gICAgCi0gICAgUmV0YWluUHRyPFdLRWRpdENvbW1hbmRPYmpDPiBjb21t
YW5kT2JqQyA9IGFkb3B0TlMoW1tXS0VkaXRDb21tYW5kT2JqQyBhbGxvY10gaW5pdFdpdGhXZWJF
ZGl0Q29tbWFuZFByb3h5OmNvbW1hbmRdKTsKKyAgICBSZXRhaW5QdHI8V0tFZGl0Q29tbWFuZE9i
akM+IGNvbW1hbmRPYmpDID0gYWRvcHROUyhbW1dLRWRpdENvbW1hbmRPYmpDIGFsbG9jXSBpbml0
V2l0aFdlYkVkaXRDb21tYW5kUHJveHk6Y29tbWFuZC5jb3B5UmVmKCldKTsKICAgICBTdHJpbmcg
YWN0aW9uTmFtZSA9IFdlYkVkaXRDb21tYW5kUHJveHk6Om5hbWVGb3JFZGl0QWN0aW9uKGNvbW1h
bmQtPmVkaXRBY3Rpb24oKSk7CiAgICAgCiAgICAgTlNVbmRvTWFuYWdlciAqdW5kb01hbmFnZXIg
PSBbbV9jb250ZW50VmlldyB1bmRvTWFuYWdlcl07CkBAIC0zNTQsNyArMzUyLDcgQEAgdm9pZCBQ
YWdlQ2xpZW50SW1wbDo6cG9zaXRpb25JbmZvcm1hdGlvbkRpZENoYW5nZShjb25zdCBJbnRlcmFj
dGlvbkluZm9ybWF0aW9uQXQKICAgICBbbV9jb250ZW50VmlldyBfcG9zaXRpb25JbmZvcm1hdGlv
bkRpZENoYW5nZTppbmZvXTsKIH0KIAotdm9pZCBQYWdlQ2xpZW50SW1wbDo6c2F2ZUltYWdlVG9M
aWJyYXJ5KFBhc3NSZWZQdHI8U2hhcmVkQnVmZmVyPiBpbWFnZUJ1ZmZlcikKK3ZvaWQgUGFnZUNs
aWVudEltcGw6OnNhdmVJbWFnZVRvTGlicmFyeShSZWY8U2hhcmVkQnVmZmVyPiYmIGltYWdlQnVm
ZmVyKQogewogICAgIFJldGFpblB0cjxOU0RhdGE+IGltYWdlRGF0YSA9IGltYWdlQnVmZmVyLT5j
cmVhdGVOU0RhdGEoKTsKICAgICBVSUltYWdlRGF0YVdyaXRlVG9TYXZlZFBob3Rvc0FsYnVtKGlt
YWdlRGF0YS5nZXQoKSwgbmlsLCBOVUxMLCBOVUxMKTsKQEAgLTM2Niw3ICszNjQsNyBAQCBib29s
IFBhZ2VDbGllbnRJbXBsOjpleGVjdXRlU2F2ZWRDb21tYW5kQnlTZWxlY3Rvcihjb25zdCBTdHJp
bmcmKQogICAgIHJldHVybiBmYWxzZTsKIH0KIAotdm9pZCBQYWdlQ2xpZW50SW1wbDo6c2V0RHJh
Z0ltYWdlKGNvbnN0IEludFBvaW50JiwgUGFzc1JlZlB0cjxTaGFyZWFibGVCaXRtYXA+LCBEcmFn
U291cmNlQWN0aW9uKQordm9pZCBQYWdlQ2xpZW50SW1wbDo6c2V0RHJhZ0ltYWdlKGNvbnN0IElu
dFBvaW50JiwgUmVmPFNoYXJlYWJsZUJpdG1hcD4mJiwgRHJhZ1NvdXJjZUFjdGlvbikKIHsKICAg
ICBub3RJbXBsZW1lbnRlZCgpOwogfQpAQCAtNDk0LDcgKzQ5Miw3IEBAIExheWVyT3JWaWV3ICpQ
YWdlQ2xpZW50SW1wbDo6YWNjZWxlcmF0ZWRDb21wb3NpdGluZ1Jvb3RMYXllcigpIGNvbnN0CiAg
ICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLVBhc3NSZWZQdHI8Vmlld1NuYXBzaG90PiBQYWdlQ2xp
ZW50SW1wbDo6dGFrZVZpZXdTbmFwc2hvdCgpCitSZWZQdHI8Vmlld1NuYXBzaG90PiBQYWdlQ2xp
ZW50SW1wbDo6dGFrZVZpZXdTbmFwc2hvdCgpCiB7CiAgICAgcmV0dXJuIFttX3dlYlZpZXcgX3Rh
a2VWaWV3U25hcHNob3RdOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNz
L2lvcy9XS0dlb2xvY2F0aW9uUHJvdmlkZXJJT1MubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvaW9zL1dLR2VvbG9jYXRpb25Qcm92aWRlcklPUy5tbQppbmRleCAzMWEzNzVkYzZmMzA4ZGM2
MDAwNWFkZGZhZTI5MGM1NzgyMGZhY2M1Li5jMTk4MjExMDUzOTRjZTk0ZDE3MGIyMzU3NDE1MmE1
YjBmNzU3Y2RjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9zL1dLR2Vv
bG9jYXRpb25Qcm92aWRlcklPUy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvaW9z
L1dLR2VvbG9jYXRpb25Qcm92aWRlcklPUy5tbQpAQCAtNDYsNyArNDYsNiBAQAogI2ltcG9ydCA8
d3RmL0Fzc2VydGlvbnMuaD4KICNpbXBvcnQgPHd0Zi9CbG9ja1B0ci5oPgogI2ltcG9ydCA8d3Rm
L0hhc2hTZXQuaD4KLSNpbXBvcnQgPHd0Zi9QYXNzUmVmUHRyLmg+CiAjaW1wb3J0IDx3dGYvUmVm
UHRyLmg+CiAjaW1wb3J0IDx3dGYvUmV0YWluUHRyLmg+CiAKQEAgLTY3LDcgKzY2LDcgQEAgQGlu
dGVyZmFjZSBXS0xlZ2FjeUNvcmVMb2NhdGlvblByb3ZpZGVyIDogTlNPYmplY3Q8X1dLR2VvbG9j
YXRpb25Db3JlTG9jYXRpb25Qcm8KIEBlbmQKIAogQGludGVyZmFjZSBXS1dlYkFsbG93RGVueVBv
bGljeUxpc3RlbmVyIDogTlNPYmplY3Q8V2ViQWxsb3dEZW55UG9saWN5TGlzdGVuZXI+Ci0tIChp
ZClpbml0V2l0aFBlcm1pc3Npb25SZXF1ZXN0UHJveHk6KFBhc3NSZWZQdHI8R2VvbG9jYXRpb25Q
ZXJtaXNzaW9uUmVxdWVzdFByb3h5PilwZXJtaXNzaW9uUmVxdWVzdFByb3h5OworLSAoaWQpaW5p
dFdpdGhQZXJtaXNzaW9uUmVxdWVzdFByb3h5OihSZWZQdHI8R2VvbG9jYXRpb25QZXJtaXNzaW9u
UmVxdWVzdFByb3h5PiYmKXBlcm1pc3Npb25SZXF1ZXN0UHJveHk7CiAtICh2b2lkKWRlbnlPbmx5
VGhpc1JlcXVlc3QgTk9fUkVUVVJOX0RVRV9UT19BU1NFUlQ7CiBAZW5kCiAKQEAgLTMzMywxMyAr
MzMyLDEzIEBAIEBpbXBsZW1lbnRhdGlvbiBXS1dlYkFsbG93RGVueVBvbGljeUxpc3RlbmVyIHsK
ICAgICBSZWZQdHI8R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdFByb3h5PiBfcGVybWlzc2lv
blJlcXVlc3RQcm94eTsKIH0KIAotLSAoaWQpaW5pdFdpdGhQZXJtaXNzaW9uUmVxdWVzdFByb3h5
OihQYXNzUmVmUHRyPEdlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RQcm94eT4pcGVybWlzc2lv
blJlcXVlc3RQcm94eQorLSAoaWQpaW5pdFdpdGhQZXJtaXNzaW9uUmVxdWVzdFByb3h5OihSZWZQ
dHI8R2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdFByb3h5PiYmKXBlcm1pc3Npb25SZXF1ZXN0
UHJveHkKIHsKICAgICBzZWxmID0gW3N1cGVyIGluaXRdOwogICAgIGlmICghc2VsZikKICAgICAg
ICAgcmV0dXJuIG5pbDsKIAotICAgIF9wZXJtaXNzaW9uUmVxdWVzdFByb3h5ID0gcGVybWlzc2lv
blJlcXVlc3RQcm94eTsKKyAgICBfcGVybWlzc2lvblJlcXVlc3RQcm94eSA9IFdURk1vdmUocGVy
bWlzc2lvblJlcXVlc3RQcm94eSk7CiAgICAgcmV0dXJuIHNlbGY7CiB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9pb3MvV2ViUGFnZVByb3h5SU9TLm1tIGIvU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL2lvcy9XZWJQYWdlUHJveHlJT1MubW0KaW5kZXggY2ZkMWUyMzM4
N2Y2YjdhNjE4NGRlYmQ4NDcyODQ1ZDk1ZGYzY2FlNS4uYTVjNmZjNDM4Yjg0ZjMxOGVjYTM4Nzli
MWU1ZGIzNDY3ZjU2Yzk0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lv
cy9XZWJQYWdlUHJveHlJT1MubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL2lvcy9X
ZWJQYWdlUHJveHlJT1MubW0KQEAgLTY2Miw5ICs2NjIsOSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6
cGVyZm9ybUFjdGlvbk9uRWxlbWVudCh1aW50MzJfdCBhY3Rpb24pCiAKIHZvaWQgV2ViUGFnZVBy
b3h5OjpzYXZlSW1hZ2VUb0xpYnJhcnkoY29uc3QgU2hhcmVkTWVtb3J5OjpIYW5kbGUmIGltYWdl
SGFuZGxlLCB1aW50NjRfdCBpbWFnZVNpemUpCiB7Ci0gICAgUmVmUHRyPFNoYXJlZE1lbW9yeT4g
c2hhcmVkTWVtb3J5QnVmZmVyID0gU2hhcmVkTWVtb3J5OjptYXAoaW1hZ2VIYW5kbGUsIFNoYXJl
ZE1lbW9yeTo6UHJvdGVjdGlvbjo6UmVhZE9ubHkpOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IGJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXIq
PihzaGFyZWRNZW1vcnlCdWZmZXItPmRhdGEoKSksIGltYWdlU2l6ZSk7Ci0gICAgbV9wYWdlQ2xp
ZW50LnNhdmVJbWFnZVRvTGlicmFyeShidWZmZXIpOworICAgIGF1dG8gc2hhcmVkTWVtb3J5QnVm
ZmVyID0gU2hhcmVkTWVtb3J5OjptYXAoaW1hZ2VIYW5kbGUsIFNoYXJlZE1lbW9yeTo6UHJvdGVj
dGlvbjo6UmVhZE9ubHkpOworICAgIGF1dG8gYnVmZmVyID0gU2hhcmVkQnVmZmVyOjpjcmVhdGUo
c3RhdGljX2Nhc3Q8dW5zaWduZWQgY2hhcio+KHNoYXJlZE1lbW9yeUJ1ZmZlci0+ZGF0YSgpKSwg
aW1hZ2VTaXplKTsKKyAgICBtX3BhZ2VDbGllbnQuc2F2ZUltYWdlVG9MaWJyYXJ5KFdURk1vdmUo
YnVmZmVyKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRVcGRhdGVCbG9ja1NlbGVjdGlv
bldpdGhUb3VjaCh1aW50MzJfdCB0b3VjaCwgdWludDMyX3QgZmxhZ3MsIGZsb2F0IGdyb3dUaHJl
c2hvbGQsIGZsb2F0IHNocmlua1RocmVzaG9sZCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQy
L1VJUHJvY2Vzcy9tYWMvUGFnZUNsaWVudEltcGwuaCBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9tYWMvUGFnZUNsaWVudEltcGwuaAppbmRleCAzYjZiMGM2OTRlZTljM2RhMWJjM2E5ODMzZTYw
OTM1YTIyZjVmYWZmLi4wZDk5N2MyZmFhZmU2NDMzZmU3NzQ5ZmEzNzY4ODI3MzVlYzE2OWUxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsLmgK
KysrIGIvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbC5oCkBAIC05
MSwxNCArOTEsMTQgQEAgcHJpdmF0ZToKICAgICB2b2lkIHNldEN1cnNvckhpZGRlblVudGlsTW91
c2VNb3Zlcyhib29sKSBvdmVycmlkZTsKICAgICB2b2lkIGRpZENoYW5nZVZpZXdwb3J0UHJvcGVy
dGllcyhjb25zdCBXZWJDb3JlOjpWaWV3cG9ydEF0dHJpYnV0ZXMmKSBvdmVycmlkZTsKIAotICAg
IHZvaWQgcmVnaXN0ZXJFZGl0Q29tbWFuZChQYXNzUmVmUHRyPFdlYkVkaXRDb21tYW5kUHJveHk+
LCBXZWJQYWdlUHJveHk6OlVuZG9PclJlZG8pIG92ZXJyaWRlOworICAgIHZvaWQgcmVnaXN0ZXJF
ZGl0Q29tbWFuZChSZWY8V2ViRWRpdENvbW1hbmRQcm94eT4mJiwgV2ViUGFnZVByb3h5OjpVbmRv
T3JSZWRvKSBvdmVycmlkZTsKICAgICB2b2lkIGNsZWFyQWxsRWRpdENvbW1hbmRzKCkgb3ZlcnJp
ZGU7CiAgICAgYm9vbCBjYW5VbmRvUmVkbyhXZWJQYWdlUHJveHk6OlVuZG9PclJlZG8pIG92ZXJy
aWRlOwogICAgIHZvaWQgZXhlY3V0ZVVuZG9SZWRvKFdlYlBhZ2VQcm94eTo6VW5kb09yUmVkbykg
b3ZlcnJpZGU7CiAgICAgYm9vbCBleGVjdXRlU2F2ZWRDb21tYW5kQnlTZWxlY3Rvcihjb25zdCBT
dHJpbmcmIHNlbGVjdG9yKSBvdmVycmlkZTsKLSAgICB2b2lkIHNldERyYWdJbWFnZShjb25zdCBX
ZWJDb3JlOjpJbnRQb2ludCYgY2xpZW50UG9zaXRpb24sIFBhc3NSZWZQdHI8U2hhcmVhYmxlQml0
bWFwPiBkcmFnSW1hZ2UsIFdlYkNvcmU6OkRyYWdTb3VyY2VBY3Rpb24pIG92ZXJyaWRlOwotICAg
IHZvaWQgc2V0UHJvbWlzZWREYXRhRm9ySW1hZ2UoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFt
ZSwgUGFzc1JlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGltYWdlQnVmZmVyLCBjb25zdCBT
dHJpbmcmIGZpbGVuYW1lLCBjb25zdCBTdHJpbmcmIGV4dGVuc2lvbiwgY29uc3QgU3RyaW5nJiB0
aXRsZSwKLSAgICAgICAgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgdmlzaWJsZVVy
bCwgUGFzc1JlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+IGFyY2hpdmVCdWZmZXIpIG92ZXJy
aWRlOworICAgIHZvaWQgc2V0RHJhZ0ltYWdlKGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBjbGll
bnRQb3NpdGlvbiwgUmVmPFNoYXJlYWJsZUJpdG1hcD4mJiBkcmFnSW1hZ2UsIFdlYkNvcmU6OkRy
YWdTb3VyY2VBY3Rpb24pIG92ZXJyaWRlOworICAgIHZvaWQgc2V0UHJvbWlzZWREYXRhRm9ySW1h
Z2UoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgUmVmPFdlYkNvcmU6OlNoYXJlZEJ1ZmZl
cj4mJiBpbWFnZUJ1ZmZlciwgY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgU3RyaW5nJiBl
eHRlbnNpb24sIGNvbnN0IFN0cmluZyYgdGl0bGUsCisgICAgICAgIGNvbnN0IFN0cmluZyYgdXJs
LCBjb25zdCBTdHJpbmcmIHZpc2libGVVcmwsIFJlZlB0cjxXZWJDb3JlOjpTaGFyZWRCdWZmZXI+
JiYgYXJjaGl2ZUJ1ZmZlcikgb3ZlcnJpZGU7CiAjaWYgRU5BQkxFKEFUVEFDSE1FTlRfRUxFTUVO
VCkKICAgICB2b2lkIHNldFByb21pc2VkRGF0YUZvckF0dGFjaG1lbnQoY29uc3QgU3RyaW5nJiBw
YXN0ZWJvYXJkTmFtZSwgY29uc3QgU3RyaW5nJiBmaWxlbmFtZSwgY29uc3QgU3RyaW5nJiBleHRl
bnNpb24sIGNvbnN0IFN0cmluZyYgdGl0bGUsIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJp
bmcmIHZpc2libGVVcmwpIG92ZXJyaWRlOwogI2VuZGlmCkBAIC0xNDIsNyArMTQyLDcgQEAgcHJp
dmF0ZToKICAgICB2b2lkIGV4aXRBY2NlbGVyYXRlZENvbXBvc2l0aW5nTW9kZSgpIG92ZXJyaWRl
OwogICAgIHZvaWQgdXBkYXRlQWNjZWxlcmF0ZWRDb21wb3NpdGluZ01vZGUoY29uc3QgTGF5ZXJU
cmVlQ29udGV4dCYpIG92ZXJyaWRlOwogCi0gICAgUGFzc1JlZlB0cjxWaWV3U25hcHNob3Q+IHRh
a2VWaWV3U25hcHNob3QoKSBvdmVycmlkZTsKKyAgICBSZWZQdHI8Vmlld1NuYXBzaG90PiB0YWtl
Vmlld1NuYXBzaG90KCkgb3ZlcnJpZGU7CiAgICAgdm9pZCB3aGVlbEV2ZW50V2FzTm90SGFuZGxl
ZEJ5V2ViQ29yZShjb25zdCBOYXRpdmVXZWJXaGVlbEV2ZW50Jikgb3ZlcnJpZGU7CiAjaWYgRU5B
QkxFKE1BQ19HRVNUVVJFX0VWRU5UUykKICAgICB2b2lkIGdlc3R1cmVFdmVudFdhc05vdEhhbmRs
ZWRCeVdlYkNvcmUoY29uc3QgTmF0aXZlV2ViR2VzdHVyZUV2ZW50Jikgb3ZlcnJpZGU7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1BhZ2VDbGllbnRJbXBsLm1tIGIv
U291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21hYy9QYWdlQ2xpZW50SW1wbC5tbQppbmRleCA4MTk3
ODViZTc5YzMyYjA1YzlkZWQzYjUyYWEwODViZTY3YzhjOWRkLi4wYTVhYWI1NDA2NGUxODIyOGZl
NTVmZGIyMDdlYWFhZDUyM2MxYzhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nl
c3MvbWFjL1BhZ2VDbGllbnRJbXBsLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9t
YWMvUGFnZUNsaWVudEltcGwubW0KQEAgLTMxNyw5ICszMTcsOSBAQCB2b2lkIFBhZ2VDbGllbnRJ
bXBsOjpkaWRDaGFuZ2VWaWV3cG9ydFByb3BlcnRpZXMoY29uc3QgV2ViQ29yZTo6Vmlld3BvcnRB
dHRyaWJ1dAogewogfQogCi12b2lkIFBhZ2VDbGllbnRJbXBsOjpyZWdpc3RlckVkaXRDb21tYW5k
KFBhc3NSZWZQdHI8V2ViRWRpdENvbW1hbmRQcm94eT4gcHJwQ29tbWFuZCwgV2ViUGFnZVByb3h5
OjpVbmRvT3JSZWRvIHVuZG9PclJlZG8pCit2b2lkIFBhZ2VDbGllbnRJbXBsOjpyZWdpc3RlckVk
aXRDb21tYW5kKFJlZjxXZWJFZGl0Q29tbWFuZFByb3h5PiYmIGNvbW1hbmQsIFdlYlBhZ2VQcm94
eTo6VW5kb09yUmVkbyB1bmRvT3JSZWRvKQogewotICAgIG1faW1wbC0+cmVnaXN0ZXJFZGl0Q29t
bWFuZChwcnBDb21tYW5kLCB1bmRvT3JSZWRvKTsKKyAgICBtX2ltcGwtPnJlZ2lzdGVyRWRpdENv
bW1hbmQoV1RGTW92ZShjb21tYW5kKSwgdW5kb09yUmVkbyk7CiB9CiAKICNpZiBVU0UoSU5TRVJU
SU9OX1VORE9fR1JPVVBJTkcpCkBAIC0zNDQsNyArMzQ0LDcgQEAgdm9pZCBQYWdlQ2xpZW50SW1w
bDo6ZXhlY3V0ZVVuZG9SZWRvKFdlYlBhZ2VQcm94eTo6VW5kb09yUmVkbyB1bmRvT3JSZWRvKQog
ICAgIHJldHVybiAodW5kb09yUmVkbyA9PSBXZWJQYWdlUHJveHk6OlVuZG8pID8gW1ttX3ZpZXcg
dW5kb01hbmFnZXJdIHVuZG9dIDogW1ttX3ZpZXcgdW5kb01hbmFnZXJdIHJlZG9dOwogfQogCi12
b2lkIFBhZ2VDbGllbnRJbXBsOjpzZXREcmFnSW1hZ2UoY29uc3QgSW50UG9pbnQmIGNsaWVudFBv
c2l0aW9uLCBQYXNzUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gZHJhZ0ltYWdlLCBEcmFnU291cmNl
QWN0aW9uIGFjdGlvbikKK3ZvaWQgUGFnZUNsaWVudEltcGw6OnNldERyYWdJbWFnZShjb25zdCBJ
bnRQb2ludCYgY2xpZW50UG9zaXRpb24sIFJlZjxTaGFyZWFibGVCaXRtYXA+JiYgZHJhZ0ltYWdl
LCBEcmFnU291cmNlQWN0aW9uIGFjdGlvbikKIHsKICAgICBSZXRhaW5QdHI8Q0dJbWFnZVJlZj4g
ZHJhZ0NHSW1hZ2UgPSBkcmFnSW1hZ2UtPm1ha2VDR0ltYWdlKCk7CiAgICAgUmV0YWluUHRyPE5T
SW1hZ2U+IGRyYWdOU0ltYWdlID0gYWRvcHROUyhbW05TSW1hZ2UgYWxsb2NdIGluaXRXaXRoQ0dJ
bWFnZTpkcmFnQ0dJbWFnZS5nZXQoKSBzaXplOmRyYWdJbWFnZS0+c2l6ZSgpXSk7CkBAIC0zNTUs
MTAgKzM1NSwxMCBAQCB2b2lkIFBhZ2VDbGllbnRJbXBsOjpzZXREcmFnSW1hZ2UoY29uc3QgSW50
UG9pbnQmIGNsaWVudFBvc2l0aW9uLCBQYXNzUmVmUHRyPFNoYQogICAgIG1faW1wbC0+ZHJhZ0lt
YWdlRm9yVmlldyhtX3ZpZXcsIGRyYWdOU0ltYWdlLmdldCgpLCBjbGllbnRQb3NpdGlvbiwgYWN0
aW9uID09IERyYWdTb3VyY2VBY3Rpb25MaW5rKTsKIH0KIAotdm9pZCBQYWdlQ2xpZW50SW1wbDo6
c2V0UHJvbWlzZWREYXRhRm9ySW1hZ2UoY29uc3QgU3RyaW5nJiBwYXN0ZWJvYXJkTmFtZSwgUGFz
c1JlZlB0cjxTaGFyZWRCdWZmZXI+IGltYWdlQnVmZmVyLCBjb25zdCBTdHJpbmcmIGZpbGVuYW1l
LCBjb25zdCBTdHJpbmcmIGV4dGVuc2lvbiwgY29uc3QgU3RyaW5nJiB0aXRsZSwgY29uc3QgU3Ry
aW5nJiB1cmwsIGNvbnN0IFN0cmluZyYgdmlzaWJsZVVSTCwgUGFzc1JlZlB0cjxTaGFyZWRCdWZm
ZXI+IGFyY2hpdmVCdWZmZXIpCit2b2lkIFBhZ2VDbGllbnRJbXBsOjpzZXRQcm9taXNlZERhdGFG
b3JJbWFnZShjb25zdCBTdHJpbmcmIHBhc3RlYm9hcmROYW1lLCBSZWY8U2hhcmVkQnVmZmVyPiYm
IGltYWdlQnVmZmVyLCBjb25zdCBTdHJpbmcmIGZpbGVuYW1lLCBjb25zdCBTdHJpbmcmIGV4dGVu
c2lvbiwgY29uc3QgU3RyaW5nJiB0aXRsZSwgY29uc3QgU3RyaW5nJiB1cmwsIGNvbnN0IFN0cmlu
ZyYgdmlzaWJsZVVSTCwgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4mJiBhcmNoaXZlQnVmZmVyKQogewog
ICAgIFJlZlB0cjxJbWFnZT4gaW1hZ2UgPSBCaXRtYXBJbWFnZTo6Y3JlYXRlKCk7Ci0gICAgaW1h
Z2UtPnNldERhdGEoaW1hZ2VCdWZmZXIuZ2V0KCksIHRydWUpOworICAgIGltYWdlLT5zZXREYXRh
KFdURk1vdmUoaW1hZ2VCdWZmZXIpLCB0cnVlKTsKICAgICBtX2ltcGwtPnNldFByb21pc2VkRGF0
YUZvckltYWdlKGltYWdlLmdldCgpLCBmaWxlbmFtZSwgZXh0ZW5zaW9uLCB0aXRsZSwgdXJsLCB2
aXNpYmxlVVJMLCBhcmNoaXZlQnVmZmVyLmdldCgpLCBwYXN0ZWJvYXJkTmFtZSk7CiB9CiAKQEAg
LTUwMyw3ICs1MDMsNyBAQCBDQUxheWVyICpQYWdlQ2xpZW50SW1wbDo6YWNjZWxlcmF0ZWRDb21w
b3NpdGluZ1Jvb3RMYXllcigpIGNvbnN0CiAgICAgcmV0dXJuIG1faW1wbC0+YWNjZWxlcmF0ZWRD
b21wb3NpdGluZ1Jvb3RMYXllcigpOwogfQogCi1QYXNzUmVmUHRyPFZpZXdTbmFwc2hvdD4gUGFn
ZUNsaWVudEltcGw6OnRha2VWaWV3U25hcHNob3QoKQorUmVmUHRyPFZpZXdTbmFwc2hvdD4gUGFn
ZUNsaWVudEltcGw6OnRha2VWaWV3U25hcHNob3QoKQogewogICAgIHJldHVybiBtX2ltcGwtPnRh
a2VWaWV3U25hcHNob3QoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9tYWMvV0tJbW1lZGlhdGVBY3Rpb25Db250cm9sbGVyLm1tIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL21hYy9XS0ltbWVkaWF0ZUFjdGlvbkNvbnRyb2xsZXIubW0KaW5kZXggZTRiZWNkYjJl
YzEzMDA5M2U5MTUwMzc4OGZiMGQ5ZDZiZGYzOWM3MS4uYjkwN2Y5NTk1MmUxMmFkY2NlMjkyMTI4
MWQ2MzNhOGM4YzFkNTJmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21h
Yy9XS0ltbWVkaWF0ZUFjdGlvbkNvbnRyb2xsZXIubW0KKysrIGIvU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL21hYy9XS0ltbWVkaWF0ZUFjdGlvbkNvbnRyb2xsZXIubW0KQEAgLTI1NCw3ICsyNTQs
NyBAQCAtICh2b2lkKWltbWVkaWF0ZUFjdGlvblJlY29nbml6ZXJEaWRDb21wbGV0ZUFuaW1hdGlv
bjooTlNJbW1lZGlhdGVBY3Rpb25HZXN0dXJlUgogICAgIF9wYWdlLT5zZXRUZXh0SW5kaWNhdG9y
QW5pbWF0aW9uUHJvZ3Jlc3MoMSk7CiB9CiAKLS0gKFBhc3NSZWZQdHI8QVBJOjpIaXRUZXN0UmVz
dWx0Pilfd2ViSGl0VGVzdFJlc3VsdAorLSAoUmVmUHRyPEFQSTo6SGl0VGVzdFJlc3VsdD4pX3dl
YkhpdFRlc3RSZXN1bHQKIHsKICAgICBSZWZQdHI8QVBJOjpIaXRUZXN0UmVzdWx0PiBoaXRUZXN0
UmVzdWx0OwogICAgIGlmIChfc3RhdGUgPT0gSW1tZWRpYXRlQWN0aW9uU3RhdGU6OlJlYWR5KQpA
QCAtMjYyLDcgKzI2Miw3IEBAIC0gKFBhc3NSZWZQdHI8QVBJOjpIaXRUZXN0UmVzdWx0Pilfd2Vi
SGl0VGVzdFJlc3VsdAogICAgIGVsc2UKICAgICAgICAgaGl0VGVzdFJlc3VsdCA9IF9wYWdlLT5s
YXN0TW91c2VNb3ZlSGl0VGVzdFJlc3VsdCgpOwogCi0gICAgcmV0dXJuIFdURk1vdmUoaGl0VGVz
dFJlc3VsdCk7CisgICAgcmV0dXJuIGhpdFRlc3RSZXN1bHQ7CiB9CiAKICNwcmFnbWEgbWFyayBJ
bW1lZGlhdGUgYWN0aW9ucwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL21h
Yy9XZWJQYWdlUHJveHlNYWMubW0gYi9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dlYlBh
Z2VQcm94eU1hYy5tbQppbmRleCAzNDBiOWYwMDM1NTEwYzg2MjlmYWYyNjFmMzQxN2NiZDJmNGUy
ZjBlLi4xN2NjYmE0OGJmOWU3NGQ2ZWY1MGQ5MTNjODRiYzRjNzE5NWM3NmMyIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbQorKysgYi9T
b3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvbWFjL1dlYlBhZ2VQcm94eU1hYy5tbQpAQCAtMjcyLDcg
KzI3Miw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpyZXBsYWNlU2VsZWN0aW9uV2l0aFBhc3RlYm9h
cmREYXRhKGNvbnN0IFZlY3RvcjxTdHJpbmc+JiB0eXBlCiB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0
RHJhZ0ltYWdlKGNvbnN0IFdlYkNvcmU6OkludFBvaW50JiBjbGllbnRQb3NpdGlvbiwgY29uc3Qg
U2hhcmVhYmxlQml0bWFwOjpIYW5kbGUmIGRyYWdJbWFnZUhhbmRsZSwgc3RkOjpvcHRpb25hbDxU
ZXh0SW5kaWNhdG9yRGF0YT4sIGNvbnN0IEZsb2F0UG9pbnQmLCB1aW50NjRfdCBhY3Rpb24pCiB7
CiAgICAgaWYgKGF1dG8gZHJhZ0ltYWdlID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGUoZHJhZ0lt
YWdlSGFuZGxlKSkKLSAgICAgICAgbV9wYWdlQ2xpZW50LnNldERyYWdJbWFnZShjbGllbnRQb3Np
dGlvbiwgV1RGTW92ZShkcmFnSW1hZ2UpLCBzdGF0aWNfY2FzdDxEcmFnU291cmNlQWN0aW9uPihh
Y3Rpb24pKTsKKyAgICAgICAgbV9wYWdlQ2xpZW50LnNldERyYWdJbWFnZShjbGllbnRQb3NpdGlv
biwgZHJhZ0ltYWdlLnJlbGVhc2VOb25OdWxsKCksIHN0YXRpY19jYXN0PERyYWdTb3VyY2VBY3Rp
b24+KGFjdGlvbikpOwogCiAgICAgZGlkU3RhcnREcmFnKCk7CiB9CkBAIC0yODMsMTQgKzI4Mywx
NCBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6c2V0UHJvbWlzZWREYXRhRm9ySW1hZ2UoY29uc3QgU3Ry
aW5nJiBwYXN0ZWJvYXJkTmFtZSwgY29uc3QgUwogICAgIE1FU1NBR0VfQ0hFQ0tfVVJMKHVybCk7
CiAgICAgTUVTU0FHRV9DSEVDS19VUkwodmlzaWJsZVVSTCk7CiAgICAgUmVmUHRyPFNoYXJlZE1l
bW9yeT4gc2hhcmVkTWVtb3J5SW1hZ2UgPSBTaGFyZWRNZW1vcnk6Om1hcChpbWFnZUhhbmRsZSwg
U2hhcmVkTWVtb3J5OjpQcm90ZWN0aW9uOjpSZWFkT25seSk7Ci0gICAgUmVmUHRyPFNoYXJlZEJ1
ZmZlcj4gaW1hZ2VCdWZmZXIgPSBTaGFyZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDx1bnNp
Z25lZCBjaGFyKj4oc2hhcmVkTWVtb3J5SW1hZ2UtPmRhdGEoKSksIGltYWdlU2l6ZSk7CisgICAg
YXV0byBpbWFnZUJ1ZmZlciA9IFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKHN0YXRpY19jYXN0PHVuc2ln
bmVkIGNoYXIqPihzaGFyZWRNZW1vcnlJbWFnZS0+ZGF0YSgpKSwgaW1hZ2VTaXplKTsKICAgICBS
ZWZQdHI8U2hhcmVkQnVmZmVyPiBhcmNoaXZlQnVmZmVyOwogICAgIAogICAgIGlmICghYXJjaGl2
ZUhhbmRsZS5pc051bGwoKSkgewogICAgICAgICBSZWZQdHI8U2hhcmVkTWVtb3J5PiBzaGFyZWRN
ZW1vcnlBcmNoaXZlID0gU2hhcmVkTWVtb3J5OjptYXAoYXJjaGl2ZUhhbmRsZSwgU2hhcmVkTWVt
b3J5OjpQcm90ZWN0aW9uOjpSZWFkT25seSk7CiAgICAgICAgIGFyY2hpdmVCdWZmZXIgPSBTaGFy
ZWRCdWZmZXI6OmNyZWF0ZShzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyKj4oc2hhcmVkTWVtb3J5
QXJjaGl2ZS0+ZGF0YSgpKSwgYXJjaGl2ZVNpemUpOwogICAgIH0KLSAgICBtX3BhZ2VDbGllbnQu
c2V0UHJvbWlzZWREYXRhRm9ySW1hZ2UocGFzdGVib2FyZE5hbWUsIGltYWdlQnVmZmVyLCBmaWxl
bmFtZSwgZXh0ZW5zaW9uLCB0aXRsZSwgdXJsLCB2aXNpYmxlVVJMLCBhcmNoaXZlQnVmZmVyKTsK
KyAgICBtX3BhZ2VDbGllbnQuc2V0UHJvbWlzZWREYXRhRm9ySW1hZ2UocGFzdGVib2FyZE5hbWUs
IFdURk1vdmUoaW1hZ2VCdWZmZXIpLCBmaWxlbmFtZSwgZXh0ZW5zaW9uLCB0aXRsZSwgdXJsLCB2
aXNpYmxlVVJMLCBXVEZNb3ZlKGFyY2hpdmVCdWZmZXIpKTsKIH0KIAogI2lmIEVOQUJMRShBVFRB
Q0hNRU5UX0VMRU1FTlQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0lj
b25EYXRhYmFzZS9XZWJJY29uRGF0YWJhc2VQcm94eS5oIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9JY29uRGF0YWJhc2UvV2ViSWNvbkRhdGFiYXNlUHJveHkuaAppbmRleCBiZGY4ZDRjZjYz
YWJlOWNlYTNkMmFjMTk4MWU5MDZlYjY2MWY1YTNlLi4wYTIwZDM0NDNjMDczYjBlNzFhNTc0MDhk
MTQ1YmY3YjIwOWQyYWExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0lj
b25EYXRhYmFzZS9XZWJJY29uRGF0YWJhc2VQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvSWNvbkRhdGFiYXNlL1dlYkljb25EYXRhYmFzZVByb3h5LmgKQEAgLTI5LDcgKzI5
LDYgQEAKICNpbmNsdWRlICJNZXNzYWdlUmVjZWl2ZXIuaCIKICNpbmNsdWRlIDxXZWJDb3JlL0lj
b25EYXRhYmFzZUJhc2UuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgotI2luY2x1ZGUgPHd0
Zi9QYXNzUmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCiBuYW1lc3BhY2UgV2Vi
S2l0IHsK
</data>

          </attachment>
      

    </bug>

</bugzilla>