<?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>140395</bug_id>
          
          <creation_ts>2015-01-13 11:21:24 -0800</creation_ts>
          <short_desc>Move more of the Navigation infrastructure down to WebPageProxy</short_desc>
          <delta_ts>2015-01-13 22:09:43 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Sam Weinig">sam</reporter>
          <assigned_to name="Sam Weinig">sam</assigned_to>
          <cc>andersca</cc>
    
    <cc>cdumez</cc>
    
    <cc>cgarcia</cc>
    
    <cc>clopez</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1060849</commentid>
    <comment_count>0</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2015-01-13 11:21:24 -0800</bug_when>
    <thetext>Move more of the Navigation infrastructure down to WebPageProxy</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1060852</commentid>
    <comment_count>1</comment_count>
      <attachid>244525</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2015-01-13 11:27:36 -0800</bug_when>
    <thetext>Created attachment 244525
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1060938</commentid>
    <comment_count>2</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2015-01-13 14:22:24 -0800</bug_when>
    <thetext>Committed r178375: &lt;http://trac.webkit.org/changeset/178375&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1060963</commentid>
    <comment_count>3</comment_count>
    <who name="Carlos Alberto Lopez Perez">clopez</who>
    <bug_when>2015-01-13 15:12:47 -0800</bug_when>
    <thetext>(In reply to comment #2)
&gt; Committed r178375: &lt;http://trac.webkit.org/changeset/178375&gt;

This broke the GTK build.

The breakage was reported by the GTK EWS.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1060995</commentid>
    <comment_count>4</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2015-01-13 16:34:30 -0800</bug_when>
    <thetext>iOS build fix landed in &lt;https://trac.webkit.org/r178391&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1061011</commentid>
    <comment_count>5</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2015-01-13 17:30:22 -0800</bug_when>
    <thetext>(In reply to comment #3)
&gt; (In reply to comment #2)
&gt; &gt; Committed r178375: &lt;http://trac.webkit.org/changeset/178375&gt;
&gt; 
&gt; This broke the GTK build.
&gt; 
&gt; The breakage was reported by the GTK EWS.

Speculative GTK build fix landed in &lt;http://trac.webkit.org/changeset/178395&gt;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1061078</commentid>
    <comment_count>6</comment_count>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2015-01-13 22:09:43 -0800</bug_when>
    <thetext>(In reply to comment #5)
&gt; (In reply to comment #3)
&gt; &gt; (In reply to comment #2)
&gt; &gt; &gt; Committed r178375: &lt;http://trac.webkit.org/changeset/178375&gt;
&gt; &gt; 
&gt; &gt; This broke the GTK build.
&gt; &gt; 
&gt; &gt; The breakage was reported by the GTK EWS.
&gt; 
&gt; Speculative GTK build fix landed in
&gt; &lt;http://trac.webkit.org/changeset/178395&gt;.

Second GTK build fix: &lt;https://trac.webkit.org/r178408&gt;.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>244525</attachid>
            <date>2015-01-13 11:27:36 -0800</date>
            <delta_ts>2015-01-13 14:09:43 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-140395-20150113112741.patch</filename>
            <type>text/plain</type>
            <size>83751</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IFNvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cJKHJldmlzaW9uIDE3ODM2NCkKKysrIFNvdXJjZS9XZWJLaXQyL0NoYW5n
ZUxvZwkod29ya2luZyBjb3B5KQpAQCAtMSwzICsxLDExMCBAQAorMjAxNS0wMS0xMyAgU2FtIFdl
aW5pZyAgPHNhbUB3ZWJraXQub3JnPgorCisgICAgICAgIE1vdmUgbW9yZSBvZiB0aGUgTmF2aWdh
dGlvbiBpbmZyYXN0cnVjdHVyZSBkb3duIHRvIFdlYlBhZ2VQcm94eQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQwMzk1CisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBVSVByb2Nlc3MvQVBJL0FQSUxvYWRl
ckNsaWVudC5oOgorICAgICAgICAoQVBJOjpMb2FkZXJDbGllbnQ6OmRpZFN0YXJ0UHJvdmlzaW9u
YWxMb2FkRm9yRnJhbWUpOgorICAgICAgICAoQVBJOjpMb2FkZXJDbGllbnQ6OmRpZFJlY2VpdmVT
ZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKToKKyAgICAgICAgKEFQSTo6
TG9hZGVyQ2xpZW50OjpkaWRGYWlsUHJvdmlzaW9uYWxMb2FkV2l0aEVycm9yRm9yRnJhbWUpOgor
ICAgICAgICAoQVBJOjpMb2FkZXJDbGllbnQ6OmRpZENvbW1pdExvYWRGb3JGcmFtZSk6CisgICAg
ICAgIChBUEk6OkxvYWRlckNsaWVudDo6ZGlkRmluaXNoRG9jdW1lbnRMb2FkRm9yRnJhbWUpOgor
ICAgICAgICAoQVBJOjpMb2FkZXJDbGllbnQ6OmRpZEZpbmlzaExvYWRGb3JGcmFtZSk6CisgICAg
ICAgIChBUEk6OkxvYWRlckNsaWVudDo6ZGlkRmFpbExvYWRXaXRoRXJyb3JGb3JGcmFtZSk6Cisg
ICAgICAgIChBUEk6OkxvYWRlckNsaWVudDo6ZGlkU2FtZURvY3VtZW50TmF2aWdhdGlvbkZvckZy
YW1lKToKKyAgICAgICAgKEFQSTo6TG9hZGVyQ2xpZW50OjpkaWRSZWNlaXZlVGl0bGVGb3JGcmFt
ZSk6CisgICAgICAgIChBUEk6OkxvYWRlckNsaWVudDo6ZGlkRmlyc3RMYXlvdXRGb3JGcmFtZSk6
CisgICAgICAgIChBUEk6OkxvYWRlckNsaWVudDo6ZGlkRmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5
b3V0Rm9yRnJhbWUpOgorICAgICAgICAoQVBJOjpMb2FkZXJDbGllbnQ6OmRpZFJlbW92ZUZyYW1l
RnJvbUhpZXJhcmNoeSk6CisgICAgICAgIChBUEk6OkxvYWRlckNsaWVudDo6ZGlkRGlzcGxheUlu
c2VjdXJlQ29udGVudEZvckZyYW1lKToKKyAgICAgICAgKEFQSTo6TG9hZGVyQ2xpZW50OjpkaWRS
dW5JbnNlY3VyZUNvbnRlbnRGb3JGcmFtZSk6CisgICAgICAgIChBUEk6OkxvYWRlckNsaWVudDo6
ZGlkRGV0ZWN0WFNTRm9yRnJhbWUpOgorICAgICAgICAoQVBJOjpMb2FkZXJDbGllbnQ6OmRpZExh
eW91dCk6CisgICAgICAgIChBUEk6OkxvYWRlckNsaWVudDo6Y2FuQXV0aGVudGljYXRlQWdhaW5z
dFByb3RlY3Rpb25TcGFjZUluRnJhbWUpOgorICAgICAgICAoQVBJOjpMb2FkZXJDbGllbnQ6OmRp
ZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUluRnJhbWUpOgorICAgICAgICAoQVBJOjpM
b2FkZXJDbGllbnQ6OmRpZFN0YXJ0UHJvZ3Jlc3MpOgorICAgICAgICAoQVBJOjpMb2FkZXJDbGll
bnQ6OmRpZENoYW5nZVByb2dyZXNzKToKKyAgICAgICAgKEFQSTo6TG9hZGVyQ2xpZW50OjpkaWRG
aW5pc2hQcm9ncmVzcyk6CisgICAgICAgIChBUEk6OkxvYWRlckNsaWVudDo6cHJvY2Vzc0RpZEJl
Y29tZVVucmVzcG9uc2l2ZSk6CisgICAgICAgIChBUEk6OkxvYWRlckNsaWVudDo6aW50ZXJhY3Rp
b25PY2N1cnJlZFdoaWxlUHJvY2Vzc1VucmVzcG9uc2l2ZSk6CisgICAgICAgIChBUEk6OkxvYWRl
ckNsaWVudDo6cHJvY2Vzc0RpZEJlY29tZVJlc3BvbnNpdmUpOgorICAgICAgICAoQVBJOjpMb2Fk
ZXJDbGllbnQ6OnByb2Nlc3NEaWRDcmFzaCk6CisgICAgICAgIChBUEk6OkxvYWRlckNsaWVudDo6
ZGlkQ2hhbmdlQmFja0ZvcndhcmRMaXN0KToKKyAgICAgICAgKEFQSTo6TG9hZGVyQ2xpZW50Ojpz
aG91bGRLZWVwQ3VycmVudEJhY2tGb3J3YXJkTGlzdEl0ZW1Jbkxpc3QpOgorICAgICAgICAoQVBJ
OjpMb2FkZXJDbGllbnQ6OndpbGxHb1RvQmFja0ZvcndhcmRMaXN0SXRlbSk6CisgICAgICAgIChB
UEk6OkxvYWRlckNsaWVudDo6cGx1Z2luTG9hZFBvbGljeSk6CisgICAgICAgIChBUEk6OkxvYWRl
ckNsaWVudDo6ZGlkRmFpbFRvSW5pdGlhbGl6ZVBsdWdpbik6CisgICAgICAgIChBUEk6OkxvYWRl
ckNsaWVudDo6ZGlkQmxvY2tJbnNlY3VyZVBsdWdpblZlcnNpb24pOgorICAgICAgICAoQVBJOjpM
b2FkZXJDbGllbnQ6OndlYkdMTG9hZFBvbGljeSk6CisgICAgICAgIChBUEk6OkxvYWRlckNsaWVu
dDo6cmVzb2x2ZVdlYkdMTG9hZFBvbGljeSk6CisgICAgICAgIChBUEk6OkxvYWRlckNsaWVudDo6
ZGlkRGVzdHJveU5hdmlnYXRpb24pOiBEZWxldGVkLgorICAgICAgICAqIFVJUHJvY2Vzcy9BUEkv
Qy9XS1BhZ2UuY3BwOgorICAgICAgICAoV0tQYWdlU2V0UGFnZUxvYWRlckNsaWVudCk6CisgICAg
ICAgICogVUlQcm9jZXNzL0NvY29hL05hdmlnYXRpb25TdGF0ZS5oOgorICAgICAgICAqIFVJUHJv
Y2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUubW06CisgICAgICAgIChXZWJLaXQ6Ok5hdmlnYXRp
b25TdGF0ZTo6TG9hZGVyQ2xpZW50OjpkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKToK
KyAgICAgICAgKFdlYktpdDo6TmF2aWdhdGlvblN0YXRlOjpMb2FkZXJDbGllbnQ6OmRpZFJlY2Vp
dmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKToKKyAgICAgICAgKFdl
YktpdDo6TmF2aWdhdGlvblN0YXRlOjpMb2FkZXJDbGllbnQ6OmRpZEZhaWxQcm92aXNpb25hbExv
YWRXaXRoRXJyb3JGb3JGcmFtZSk6CisgICAgICAgIChXZWJLaXQ6Ok5hdmlnYXRpb25TdGF0ZTo6
TG9hZGVyQ2xpZW50OjpkaWRDb21taXRMb2FkRm9yRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpO
YXZpZ2F0aW9uU3RhdGU6OkxvYWRlckNsaWVudDo6ZGlkRmluaXNoRG9jdW1lbnRMb2FkRm9yRnJh
bWUpOgorICAgICAgICAoV2ViS2l0OjpOYXZpZ2F0aW9uU3RhdGU6OkxvYWRlckNsaWVudDo6ZGlk
RmluaXNoTG9hZEZvckZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6TmF2aWdhdGlvblN0YXRlOjpM
b2FkZXJDbGllbnQ6OmRpZEZhaWxMb2FkV2l0aEVycm9yRm9yRnJhbWUpOgorICAgICAgICAoV2Vi
S2l0OjpOYXZpZ2F0aW9uU3RhdGU6OkxvYWRlckNsaWVudDo6ZGlkU2FtZURvY3VtZW50TmF2aWdh
dGlvbkZvckZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6TmF2aWdhdGlvblN0YXRlOjpMb2FkZXJD
bGllbnQ6OmRpZExheW91dCk6CisgICAgICAgIChXZWJLaXQ6Ok5hdmlnYXRpb25TdGF0ZTo6TG9h
ZGVyQ2xpZW50OjpjYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlSW5GcmFtZSk6
CisgICAgICAgIChXZWJLaXQ6Ok5hdmlnYXRpb25TdGF0ZTo6TG9hZGVyQ2xpZW50OjpkaWRSZWNl
aXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2VJbkZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6TmF2
aWdhdGlvblN0YXRlOjpMb2FkZXJDbGllbnQ6OnByb2Nlc3NEaWRDcmFzaCk6CisgICAgICAgIChX
ZWJLaXQ6Ok5hdmlnYXRpb25TdGF0ZTo6TG9hZGVyQ2xpZW50OjpkaWREZXN0cm95TmF2aWdhdGlv
bik6IERlbGV0ZWQuCisgICAgICAgICogVUlQcm9jZXNzL1dlYlBhZ2VQcm94eS5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkQ2hhbmdlQmFja0ZvcndhcmRMaXN0KToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojp3aWxsR29Ub0JhY2tGb3J3YXJkTGlzdEl0ZW0p
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OnNob3VsZEtlZXBDdXJyZW50QmFja0Zv
cndhcmRMaXN0SXRlbUluTGlzdCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6Zmlu
ZFBsdWdpbik6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkU3RhcnRQcm9ncmVz
cyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkQ2hhbmdlUHJvZ3Jlc3MpOgor
ICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRpZEZpbmlzaFByb2dyZXNzKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkaWREZXN0cm95TmF2aWdhdGlvbik6CisgICAgICAg
IChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkU3RhcnRQcm92aXNpb25hbExvYWRGb3JGcmFtZSk6
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0
Rm9yUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJv
eHk6OmRpZEZhaWxQcm92aXNpb25hbExvYWRGb3JGcmFtZSk6CisgICAgICAgIChXZWJLaXQ6Oldl
YlBhZ2VQcm94eTo6ZGlkQ29tbWl0TG9hZEZvckZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZVByb3h5OjpkaWRGaW5pc2hEb2N1bWVudExvYWRGb3JGcmFtZSk6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2VQcm94eTo6ZGlkRmluaXNoTG9hZEZvckZyYW1lKToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZVByb3h5OjpkaWRGYWlsTG9hZEZvckZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZVByb3h5OjpkaWRTYW1lRG9jdW1lbnROYXZpZ2F0aW9uRm9yRnJhbWUpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRpZFJlY2VpdmVUaXRsZUZvckZyYW1lKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkaWRGaXJzdExheW91dEZvckZyYW1lKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkaWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRG
b3JGcmFtZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkTGF5b3V0KToKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjpkaWRSZW1vdmVGcmFtZUZyb21IaWVyYXJjaHkp
OgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRpZERpc3BsYXlJbnNlY3VyZUNvbnRl
bnRGb3JGcmFtZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkUnVuSW5zZWN1
cmVDb250ZW50Rm9yRnJhbWUpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRpZERl
dGVjdFhTU0ZvckZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojp3ZWJHTFBv
bGljeUZvclVSTCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6cmVzb2x2ZVdlYkdM
UG9saWN5Rm9yVVJMKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5Ojpwcm9jZXNzRGlk
QmVjb21lVW5yZXNwb25zaXZlKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZVByb3h5OjppbnRl
cmFjdGlvbk9jY3VycmVkV2hpbGVQcm9jZXNzVW5yZXNwb25zaXZlKToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZVByb3h5Ojpwcm9jZXNzRGlkQmVjb21lUmVzcG9uc2l2ZSk6CisgICAgICAgIChX
ZWJLaXQ6OldlYlBhZ2VQcm94eTo6cHJvY2Vzc0RpZENyYXNoKToKKyAgICAgICAgKFdlYktpdDo6
V2ViUGFnZVByb3h5OjpjYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlSW5GcmFt
ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2VQcm94eTo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0
aW9uQ2hhbGxlbmdlUHJveHkpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRpZEZh
aWxUb0luaXRpYWxpemVQbHVnaW4pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlUHJveHk6OmRp
ZEJsb2NrSW5zZWN1cmVQbHVnaW5WZXJzaW9uKToKKyAgICAgICAgLSBNb3ZlcyBjb252ZXJzaW9u
IGZyb20gbmF2aWdhdGlvbklEIHRvIEFQSTo6TmF2aWdhdGlvbiBpbnRvIFdlYlBhZ2VQcm94eQor
ICAgICAgICAgIGZyb20gTmF2aWdhdGlvblN0YXRlLgorICAgICAgICAtIENoYW5nZXMgQVBJOjpM
b2FkZXJDbGllbnQgdG8gcGFzcyBXZWJQYWdlUHJveHkgYW5kIFdlYkZyYW1lUHJveHkgYnkgcmVm
ZXJlbmNlCisgICAgICAgICAgcmF0aGVyIHRoYW4gcG9pbnRlciwgYW5kIHRvIHRha2UgYW4gQVBJ
OjpOYXZpZ2F0aW9uIGluc3RlYWQgb2YgYSBuYXZpZ2F0aW9uSUQuCisKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcDoKKyAgICAgICAg
KFdlYktpdDo6V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkRmFpbFByb3Zpc2lvbmFs
TG9hZCk6CisgICAgICAgIE1vdmUgYWNjZXNzIG9mIHRoZSBuYXZpZ2F0aW9uSUQgdG8gYWZ0ZXIg
Y2FsbGluZyBpbnRvIHRoZSBjbGllbnQgYnVuZGxlIHRvIGF2b2lkCisgICAgICAgIHBhc3Npbmcg
YSBuYXZpZ2F0aW9uSUQgb2YgYSBkZWxldGVkIG5hdmlnYXRpb24gdG8gdGhlIFVJUHJvY2Vzcy4g
VGhpcyBwcm9ibGVtIHdhcworICAgICAgICBjYXVnaHQgdmlhIHRoZSBXZWJLaXQyLlN0b3BMb2Fk
aW5nRHVyaW5nRGlkRmFpbFByb3Zpc2lvbmFsTG9hZFRlc3QgQVBJIHRlc3QsIHdoaWNoCisgICAg
ICAgIG5vdyBleGVyY2lzZXMgdGhlIE5hdmlnYXRpb24gY29kZSBwYXRoLiBIYWQgdGhhdCB0ZXN0
IGJlZW4gd3JpdHRlbiB1c2luZyBhIE5hdmlnYXRpb24KKyAgICAgICAgZGVsZWdhdGUsIHRoZSBp
c3N1ZSB3b3VsZCBoYXZlIGhhcHBlbmVkIHByaW9yIHRvIHRoaXMgY2hhbmdlLgorCiAyMDE1LTAx
LTEyICBDYXJsb3MgQWxiZXJ0byBMb3BleiBQZXJleiAgPGNsb3BlekBpZ2FsaWEuY29tPgogCiAg
ICAgICAgIFtDTWFrZV0gVW5yZXZpZXdlZCBidWlsZCBmaXggYWZ0ZXIgcjE3ODMwOS4KSW5kZXg6
IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9XZWJQYWdlUHJveHkuY3BwCShyZXZpc2lvbiAxNzgz
NjQpCisrKyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvV2ViUGFnZVByb3h5LmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtMTAzMyw3ICsxMDMzLDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnRyeVJlc3Rv
cmVTY3JvbGxQb3NpdAogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkQ2hhbmdlQmFja0ZvcndhcmRM
aXN0KFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0qIGFkZGVkLCBWZWN0b3I8UmVmUHRyPFdlYkJhY2tG
b3J3YXJkTGlzdEl0ZW0+PiByZW1vdmVkKQogewotICAgIG1fbG9hZGVyQ2xpZW50LT5kaWRDaGFu
Z2VCYWNrRm9yd2FyZExpc3QodGhpcywgYWRkZWQsIFdURjo6bW92ZShyZW1vdmVkKSk7CisgICAg
bV9sb2FkZXJDbGllbnQtPmRpZENoYW5nZUJhY2tGb3J3YXJkTGlzdCgqdGhpcywgYWRkZWQsIFdU
Rjo6bW92ZShyZW1vdmVkKSk7CiAKICAgICBhdXRvIHRyYW5zYWN0aW9uID0gbV9wYWdlTG9hZFN0
YXRlLnRyYW5zYWN0aW9uKCk7CiAKQEAgLTEwNDQsMTIgKzEwNDQsMTIgQEAgdm9pZCBXZWJQYWdl
UHJveHk6OmRpZENoYW5nZUJhY2tGb3J3YXJkTAogdm9pZCBXZWJQYWdlUHJveHk6OndpbGxHb1Rv
QmFja0ZvcndhcmRMaXN0SXRlbSh1aW50NjRfdCBpdGVtSUQsIGNvbnN0IFVzZXJEYXRhJiB1c2Vy
RGF0YSkKIHsKICAgICBpZiAoV2ViQmFja0ZvcndhcmRMaXN0SXRlbSogaXRlbSA9IG1fcHJvY2Vz
cy0+d2ViQmFja0ZvcndhcmRJdGVtKGl0ZW1JRCkpCi0gICAgICAgIG1fbG9hZGVyQ2xpZW50LT53
aWxsR29Ub0JhY2tGb3J3YXJkTGlzdEl0ZW0odGhpcywgaXRlbSwgbV9wcm9jZXNzLT50cmFuc2Zv
cm1IYW5kbGVzVG9PYmplY3RzKHVzZXJEYXRhLm9iamVjdCgpKS5nZXQoKSk7CisgICAgICAgIG1f
bG9hZGVyQ2xpZW50LT53aWxsR29Ub0JhY2tGb3J3YXJkTGlzdEl0ZW0oKnRoaXMsIGl0ZW0sIG1f
cHJvY2Vzcy0+dHJhbnNmb3JtSGFuZGxlc1RvT2JqZWN0cyh1c2VyRGF0YS5vYmplY3QoKSkuZ2V0
KCkpOwogfQogCiBib29sIFdlYlBhZ2VQcm94eTo6c2hvdWxkS2VlcEN1cnJlbnRCYWNrRm9yd2Fy
ZExpc3RJdGVtSW5MaXN0KFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0qIGl0ZW0pCiB7Ci0gICAgcmV0
dXJuIG1fbG9hZGVyQ2xpZW50LT5zaG91bGRLZWVwQ3VycmVudEJhY2tGb3J3YXJkTGlzdEl0ZW1J
bkxpc3QodGhpcywgaXRlbSk7CisgICAgcmV0dXJuIG1fbG9hZGVyQ2xpZW50LT5zaG91bGRLZWVw
Q3VycmVudEJhY2tGb3J3YXJkTGlzdEl0ZW1Jbkxpc3QoKnRoaXMsIGl0ZW0pOwogfQogCiBib29s
IFdlYlBhZ2VQcm94eTo6Y2FuU2hvd01JTUVUeXBlKGNvbnN0IFN0cmluZyYgbWltZVR5cGUpCkBA
IC0xNjg5LDcgKzE2ODksNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZmluZFBsdWdpbihjb25zdCBT
dHJpCiAKICNpZiBQTEFURk9STShDT0NPQSkKICAgICBSZWZQdHI8QVBJOjpEaWN0aW9uYXJ5PiBw
bHVnaW5JbmZvcm1hdGlvbiA9IGNyZWF0ZVBsdWdpbkluZm9ybWF0aW9uRGljdGlvbmFyeShwbHVn
aW4sIGZyYW1lVVJMU3RyaW5nLCBTdHJpbmcoKSwgcGFnZVVSTFN0cmluZywgU3RyaW5nKCksIFN0
cmluZygpKTsKLSAgICBwbHVnaW5Mb2FkUG9saWN5ID0gbV9sb2FkZXJDbGllbnQtPnBsdWdpbkxv
YWRQb2xpY3kodGhpcywgc3RhdGljX2Nhc3Q8UGx1Z2luTW9kdWxlTG9hZFBvbGljeT4ocGx1Z2lu
TG9hZFBvbGljeSksIHBsdWdpbkluZm9ybWF0aW9uLmdldCgpLCB1bmF2YWlsYWJpbGl0eURlc2Ny
aXB0aW9uKTsKKyAgICBwbHVnaW5Mb2FkUG9saWN5ID0gbV9sb2FkZXJDbGllbnQtPnBsdWdpbkxv
YWRQb2xpY3koKnRoaXMsIHN0YXRpY19jYXN0PFBsdWdpbk1vZHVsZUxvYWRQb2xpY3k+KHBsdWdp
bkxvYWRQb2xpY3kpLCBwbHVnaW5JbmZvcm1hdGlvbi5nZXQoKSwgdW5hdmFpbGFiaWxpdHlEZXNj
cmlwdGlvbik7CiAjZWxzZQogICAgIFVOVVNFRF9QQVJBTShmcmFtZVVSTFN0cmluZyk7CiAgICAg
VU5VU0VEX1BBUkFNKHBhZ2VVUkxTdHJpbmcpOwpAQCAtMjU1Nyw3ICsyNTU3LDcgQEAgdm9pZCBX
ZWJQYWdlUHJveHk6OmRpZFN0YXJ0UHJvZ3Jlc3MoKQogICAgIG1fcGFnZUxvYWRTdGF0ZS5kaWRT
dGFydFByb2dyZXNzKHRyYW5zYWN0aW9uKTsKIAogICAgIG1fcGFnZUxvYWRTdGF0ZS5jb21taXRD
aGFuZ2VzKCk7Ci0gICAgbV9sb2FkZXJDbGllbnQtPmRpZFN0YXJ0UHJvZ3Jlc3ModGhpcyk7Cisg
ICAgbV9sb2FkZXJDbGllbnQtPmRpZFN0YXJ0UHJvZ3Jlc3MoKnRoaXMpOwogfQogCiB2b2lkIFdl
YlBhZ2VQcm94eTo6ZGlkQ2hhbmdlUHJvZ3Jlc3MoZG91YmxlIHZhbHVlKQpAQCAtMjU2Niw3ICsy
NTY2LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZENoYW5nZVByb2dyZXNzKGRvdQogICAgIG1f
cGFnZUxvYWRTdGF0ZS5kaWRDaGFuZ2VQcm9ncmVzcyh0cmFuc2FjdGlvbiwgdmFsdWUpOwogCiAg
ICAgbV9wYWdlTG9hZFN0YXRlLmNvbW1pdENoYW5nZXMoKTsKLSAgICBtX2xvYWRlckNsaWVudC0+
ZGlkQ2hhbmdlUHJvZ3Jlc3ModGhpcyk7CisgICAgbV9sb2FkZXJDbGllbnQtPmRpZENoYW5nZVBy
b2dyZXNzKCp0aGlzKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmRpZEZpbmlzaFByb2dyZXNz
KCkKQEAgLTI1NzUsNyArMjU3NSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRGaW5pc2hQcm9n
cmVzcygpCiAgICAgbV9wYWdlTG9hZFN0YXRlLmRpZEZpbmlzaFByb2dyZXNzKHRyYW5zYWN0aW9u
KTsKIAogICAgIG1fcGFnZUxvYWRTdGF0ZS5jb21taXRDaGFuZ2VzKCk7Ci0gICAgbV9sb2FkZXJD
bGllbnQtPmRpZEZpbmlzaFByb2dyZXNzKHRoaXMpOworICAgIG1fbG9hZGVyQ2xpZW50LT5kaWRG
aW5pc2hQcm9ncmVzcygqdGhpcyk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpzZXROZXR3b3Jr
UmVxdWVzdHNJblByb2dyZXNzKGJvb2wgbmV0d29ya1JlcXVlc3RzSW5Qcm9ncmVzcykKQEAgLTI1
ODYsNyArMjU4Niw4IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpzZXROZXR3b3JrUmVxdWVzdHNJblAK
IAogdm9pZCBXZWJQYWdlUHJveHk6OmRpZERlc3Ryb3lOYXZpZ2F0aW9uKHVpbnQ2NF90IG5hdmln
YXRpb25JRCkKIHsKLSAgICBtX2xvYWRlckNsaWVudC0+ZGlkRGVzdHJveU5hdmlnYXRpb24odGhp
cywgbmF2aWdhdGlvbklEKTsKKyAgICAvLyBGSVhNRTogTWVzc2FnZSBjaGVjayB0aGUgbmF2aWdh
dGlvbklELgorICAgIG1fbmF2aWdhdGlvblN0YXRlLT5kaWREZXN0cm95TmF2aWdhdGlvbihuYXZp
Z2F0aW9uSUQpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkU3RhcnRQcm92aXNpb25hbExv
YWRGb3JGcmFtZSh1aW50NjRfdCBmcmFtZUlELCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIGNvbnN0
IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIHVucmVhY2hhYmxlVVJMLCBjb25zdCBVc2VyRGF0
YSYgdXNlckRhdGEpCkBAIC0yNTk5LDYgKzI2MDAsMTEgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRp
ZFN0YXJ0UHJvdmlzaW9uYWxMbwogICAgIE1FU1NBR0VfQ0hFQ0soZnJhbWUpOwogICAgIE1FU1NB
R0VfQ0hFQ0tfVVJMKHVybCk7CiAKKyAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIG1lc3NhZ2UgY2hl
Y2sgdGhhdCBuYXZpZ2F0aW9uSUQgaXMgbm90IHplcm8gaGVyZSwgYnV0IGl0J3MgY3VycmVudGx5
IHplcm8gZm9yIHNvbWUgbmF2aWdhdGlvbnMgdGhyb3VnaCB0aGUgcGFnZSBjYWNoZS4KKyAgICBS
ZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBuYXZpZ2F0aW9uOworICAgIGlmIChmcmFtZS0+aXNNYWlu
RnJhbWUoKSAmJiBuYXZpZ2F0aW9uSUQpCisgICAgICAgIG5hdmlnYXRpb24gPSAmbmF2aWdhdGlv
blN0YXRlKCkubmF2aWdhdGlvbihuYXZpZ2F0aW9uSUQpOworCiAgICAgaWYgKGZyYW1lLT5pc01h
aW5GcmFtZSgpKQogICAgICAgICBtX3BhZ2VMb2FkU3RhdGUuZGlkU3RhcnRQcm92aXNpb25hbExv
YWQodHJhbnNhY3Rpb24sIHVybCwgdW5yZWFjaGFibGVVUkwpOwogCkBAIC0yNjA2LDcgKzI2MTIs
NyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkU3RhcnRQcm92aXNpb25hbExvCiAgICAgZnJhbWUt
PmRpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkKHVybCk7CiAKICAgICBtX3BhZ2VMb2FkU3RhdGUuY29t
bWl0Q2hhbmdlcygpOwotICAgIG1fbG9hZGVyQ2xpZW50LT5kaWRTdGFydFByb3Zpc2lvbmFsTG9h
ZEZvckZyYW1lKHRoaXMsIGZyYW1lLCBuYXZpZ2F0aW9uSUQsIG1fcHJvY2Vzcy0+dHJhbnNmb3Jt
SGFuZGxlc1RvT2JqZWN0cyh1c2VyRGF0YS5vYmplY3QoKSkuZ2V0KCkpOworICAgIG1fbG9hZGVy
Q2xpZW50LT5kaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKCp0aGlzLCAqZnJhbWUsIG5h
dmlnYXRpb24uZ2V0KCksIG1fcHJvY2Vzcy0+dHJhbnNmb3JtSGFuZGxlc1RvT2JqZWN0cyh1c2Vy
RGF0YS5vYmplY3QoKSkuZ2V0KCkpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkUmVjZWl2
ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUodWludDY0X3QgZnJhbWVJ
RCwgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBTdHJpbmcmIHVybCwgY29uc3QgVXNlckRh
dGEmIHVzZXJEYXRhKQpAQCAtMjYxNSw2ICsyNjIxLDExIEBAIHZvaWQgV2ViUGFnZVByb3h5Ojpk
aWRSZWNlaXZlU2VydmVyUmVkaXIKICAgICBNRVNTQUdFX0NIRUNLKGZyYW1lKTsKICAgICBNRVNT
QUdFX0NIRUNLX1VSTCh1cmwpOwogCisgICAgLy8gRklYTUU6IFdlIHNob3VsZCBtZXNzYWdlIGNo
ZWNrIHRoYXQgbmF2aWdhdGlvbklEIGlzIG5vdCB6ZXJvIGhlcmUsIGJ1dCBpdCdzIGN1cnJlbnRs
eSB6ZXJvIGZvciBzb21lIG5hdmlnYXRpb25zIHRocm91Z2ggdGhlIHBhZ2UgY2FjaGUuCisgICAg
UmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4gbmF2aWdhdGlvbjsKKyAgICBpZiAoZnJhbWUtPmlzTWFp
bkZyYW1lKCkgJiYgbmF2aWdhdGlvbklEKQorICAgICAgICBuYXZpZ2F0aW9uID0gJm5hdmlnYXRp
b25TdGF0ZSgpLm5hdmlnYXRpb24obmF2aWdhdGlvbklEKTsKKwogICAgIGF1dG8gdHJhbnNhY3Rp
b24gPSBtX3BhZ2VMb2FkU3RhdGUudHJhbnNhY3Rpb24oKTsKIAogICAgIGlmIChmcmFtZS0+aXNN
YWluRnJhbWUoKSkKQEAgLTI2MjMsNyArMjYzNCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRS
ZWNlaXZlU2VydmVyUmVkaXIKICAgICBmcmFtZS0+ZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9y
UHJvdmlzaW9uYWxMb2FkKHVybCk7CiAKICAgICBtX3BhZ2VMb2FkU3RhdGUuY29tbWl0Q2hhbmdl
cygpOwotICAgIG1fbG9hZGVyQ2xpZW50LT5kaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92
aXNpb25hbExvYWRGb3JGcmFtZSh0aGlzLCBmcmFtZSwgbmF2aWdhdGlvbklELCBtX3Byb2Nlc3Mt
PnRyYW5zZm9ybUhhbmRsZXNUb09iamVjdHModXNlckRhdGEub2JqZWN0KCkpLmdldCgpKTsKKyAg
ICBtX2xvYWRlckNsaWVudC0+ZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxM
b2FkRm9yRnJhbWUoKnRoaXMsICpmcmFtZSwgbmF2aWdhdGlvbi5nZXQoKSwgbV9wcm9jZXNzLT50
cmFuc2Zvcm1IYW5kbGVzVG9PYmplY3RzKHVzZXJEYXRhLm9iamVjdCgpKS5nZXQoKSk7CiB9CiAK
IHZvaWQgV2ViUGFnZVByb3h5OjpkaWRGYWlsUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUodWludDY0
X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdhdGlvbklELCBjb25zdCBSZXNvdXJjZUVycm9yJiBl
cnJvciwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhKQpAQCAtMjYzMSw2ICsyNjQyLDExIEBAIHZv
aWQgV2ViUGFnZVByb3h5OjpkaWRGYWlsUHJvdmlzaW9uYWxMb2EKICAgICBXZWJGcmFtZVByb3h5
KiBmcmFtZSA9IG1fcHJvY2Vzcy0+d2ViRnJhbWUoZnJhbWVJRCk7CiAgICAgTUVTU0FHRV9DSEVD
SyhmcmFtZSk7CiAKKyAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIG1lc3NhZ2UgY2hlY2sgdGhhdCBu
YXZpZ2F0aW9uSUQgaXMgbm90IHplcm8gaGVyZSwgYnV0IGl0J3MgY3VycmVudGx5IHplcm8gZm9y
IHNvbWUgbmF2aWdhdGlvbnMgdGhyb3VnaCB0aGUgcGFnZSBjYWNoZS4KKyAgICBSZWZQdHI8QVBJ
OjpOYXZpZ2F0aW9uPiBuYXZpZ2F0aW9uOworICAgIGlmIChmcmFtZS0+aXNNYWluRnJhbWUoKSAm
JiBuYXZpZ2F0aW9uSUQpCisgICAgICAgIG5hdmlnYXRpb24gPSBuYXZpZ2F0aW9uU3RhdGUoKS50
YWtlTmF2aWdhdGlvbihuYXZpZ2F0aW9uSUQpOworCiAgICAgYXV0byB0cmFuc2FjdGlvbiA9IG1f
cGFnZUxvYWRTdGF0ZS50cmFuc2FjdGlvbigpOwogCiAgICAgaWYgKGZyYW1lLT5pc01haW5GcmFt
ZSgpKQpAQCAtMjYzOSw3ICsyNjU1LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZEZhaWxQcm92
aXNpb25hbExvYQogICAgIGZyYW1lLT5kaWRGYWlsUHJvdmlzaW9uYWxMb2FkKCk7CiAKICAgICBt
X3BhZ2VMb2FkU3RhdGUuY29tbWl0Q2hhbmdlcygpOwotICAgIG1fbG9hZGVyQ2xpZW50LT5kaWRG
YWlsUHJvdmlzaW9uYWxMb2FkV2l0aEVycm9yRm9yRnJhbWUodGhpcywgZnJhbWUsIG5hdmlnYXRp
b25JRCwgZXJyb3IsIG1fcHJvY2Vzcy0+dHJhbnNmb3JtSGFuZGxlc1RvT2JqZWN0cyh1c2VyRGF0
YS5vYmplY3QoKSkuZ2V0KCkpOworICAgIG1fbG9hZGVyQ2xpZW50LT5kaWRGYWlsUHJvdmlzaW9u
YWxMb2FkV2l0aEVycm9yRm9yRnJhbWUoKnRoaXMsICpmcmFtZSwgbmF2aWdhdGlvbi5nZXQoKSwg
ZXJyb3IsIG1fcHJvY2Vzcy0+dHJhbnNmb3JtSGFuZGxlc1RvT2JqZWN0cyh1c2VyRGF0YS5vYmpl
Y3QoKSkuZ2V0KCkpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6Y2xlYXJMb2FkRGVwZW5kZW50
Q2FsbGJhY2tzKCkKQEAgLTI2NjAsNiArMjY3NiwxMSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlk
Q29tbWl0TG9hZEZvckZyYW1lCiAgICAgV2ViRnJhbWVQcm94eSogZnJhbWUgPSBtX3Byb2Nlc3Mt
PndlYkZyYW1lKGZyYW1lSUQpOwogICAgIE1FU1NBR0VfQ0hFQ0soZnJhbWUpOwogCisgICAgLy8g
RklYTUU6IFdlIHNob3VsZCBtZXNzYWdlIGNoZWNrIHRoYXQgbmF2aWdhdGlvbklEIGlzIG5vdCB6
ZXJvIGhlcmUsIGJ1dCBpdCdzIGN1cnJlbnRseSB6ZXJvIGZvciBzb21lIG5hdmlnYXRpb25zIHRo
cm91Z2ggdGhlIHBhZ2UgY2FjaGUuCisgICAgUmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4gbmF2aWdh
dGlvbjsKKyAgICBpZiAoZnJhbWUtPmlzTWFpbkZyYW1lKCkgJiYgbmF2aWdhdGlvbklEKQorICAg
ICAgICBuYXZpZ2F0aW9uID0gJm5hdmlnYXRpb25TdGF0ZSgpLm5hdmlnYXRpb24obmF2aWdhdGlv
bklEKTsKKwogI2lmIFBMQVRGT1JNKElPUykKICAgICBpZiAoZnJhbWUtPmlzTWFpbkZyYW1lKCkp
IHsKICAgICAgICAgbV9oYXNSZWNlaXZlZExheWVyVHJlZVRyYW5zYWN0aW9uQWZ0ZXJEaWRDb21t
aXRMb2FkID0gZmFsc2U7CkBAIC0yNzA3LDcgKzI3MjgsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6
ZGlkQ29tbWl0TG9hZEZvckZyYW1lCiAgICAgICAgIG1fcGFnZVNjYWxlRmFjdG9yID0gMTsKIAog
ICAgIG1fcGFnZUxvYWRTdGF0ZS5jb21taXRDaGFuZ2VzKCk7Ci0gICAgbV9sb2FkZXJDbGllbnQt
PmRpZENvbW1pdExvYWRGb3JGcmFtZSh0aGlzLCBmcmFtZSwgbmF2aWdhdGlvbklELCBtX3Byb2Nl
c3MtPnRyYW5zZm9ybUhhbmRsZXNUb09iamVjdHModXNlckRhdGEub2JqZWN0KCkpLmdldCgpKTsK
KyAgICBtX2xvYWRlckNsaWVudC0+ZGlkQ29tbWl0TG9hZEZvckZyYW1lKCp0aGlzLCAqZnJhbWUs
IG5hdmlnYXRpb24uZ2V0KCksIG1fcHJvY2Vzcy0+dHJhbnNmb3JtSGFuZGxlc1RvT2JqZWN0cyh1
c2VyRGF0YS5vYmplY3QoKSkuZ2V0KCkpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkRmlu
aXNoRG9jdW1lbnRMb2FkRm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgdWludDY0X3QgbmF2aWdh
dGlvbklELCBjb25zdCBVc2VyRGF0YSYgdXNlckRhdGEpCkBAIC0yNzE1LDcgKzI3MzYsMTIgQEAg
dm9pZCBXZWJQYWdlUHJveHk6OmRpZEZpbmlzaERvY3VtZW50TG9hZAogICAgIFdlYkZyYW1lUHJv
eHkqIGZyYW1lID0gbV9wcm9jZXNzLT53ZWJGcmFtZShmcmFtZUlEKTsKICAgICBNRVNTQUdFX0NI
RUNLKGZyYW1lKTsKIAotICAgIG1fbG9hZGVyQ2xpZW50LT5kaWRGaW5pc2hEb2N1bWVudExvYWRG
b3JGcmFtZSh0aGlzLCBmcmFtZSwgbmF2aWdhdGlvbklELCBtX3Byb2Nlc3MtPnRyYW5zZm9ybUhh
bmRsZXNUb09iamVjdHModXNlckRhdGEub2JqZWN0KCkpLmdldCgpKTsKKyAgICAvLyBGSVhNRTog
V2Ugc2hvdWxkIG1lc3NhZ2UgY2hlY2sgdGhhdCBuYXZpZ2F0aW9uSUQgaXMgbm90IHplcm8gaGVy
ZSwgYnV0IGl0J3MgY3VycmVudGx5IHplcm8gZm9yIHNvbWUgbmF2aWdhdGlvbnMgdGhyb3VnaCB0
aGUgcGFnZSBjYWNoZS4KKyAgICBSZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBuYXZpZ2F0aW9uOwor
ICAgIGlmIChmcmFtZS0+aXNNYWluRnJhbWUoKSAmJiBuYXZpZ2F0aW9uSUQpCisgICAgICAgIG5h
dmlnYXRpb24gPSAmbmF2aWdhdGlvblN0YXRlKCkubmF2aWdhdGlvbihuYXZpZ2F0aW9uSUQpOwor
CisgICAgbV9sb2FkZXJDbGllbnQtPmRpZEZpbmlzaERvY3VtZW50TG9hZEZvckZyYW1lKCp0aGlz
LCAqZnJhbWUsIG5hdmlnYXRpb24uZ2V0KCksIG1fcHJvY2Vzcy0+dHJhbnNmb3JtSGFuZGxlc1Rv
T2JqZWN0cyh1c2VyRGF0YS5vYmplY3QoKSkuZ2V0KCkpOwogfQogCiB2b2lkIFdlYlBhZ2VQcm94
eTo6ZGlkRmluaXNoTG9hZEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IG5hdmln
YXRpb25JRCwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhKQpAQCAtMjcyMyw2ICsyNzQ5LDExIEBA
IHZvaWQgV2ViUGFnZVByb3h5OjpkaWRGaW5pc2hMb2FkRm9yRnJhbWUKICAgICBXZWJGcmFtZVBy
b3h5KiBmcmFtZSA9IG1fcHJvY2Vzcy0+d2ViRnJhbWUoZnJhbWVJRCk7CiAgICAgTUVTU0FHRV9D
SEVDSyhmcmFtZSk7CiAKKyAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIG1lc3NhZ2UgY2hlY2sgdGhh
dCBuYXZpZ2F0aW9uSUQgaXMgbm90IHplcm8gaGVyZSwgYnV0IGl0J3MgY3VycmVudGx5IHplcm8g
Zm9yIHNvbWUgbmF2aWdhdGlvbnMgdGhyb3VnaCB0aGUgcGFnZSBjYWNoZS4KKyAgICBSZWZQdHI8
QVBJOjpOYXZpZ2F0aW9uPiBuYXZpZ2F0aW9uOworICAgIGlmIChmcmFtZS0+aXNNYWluRnJhbWUo
KSAmJiBuYXZpZ2F0aW9uSUQpCisgICAgICAgIG5hdmlnYXRpb24gPSAmbmF2aWdhdGlvblN0YXRl
KCkubmF2aWdhdGlvbihuYXZpZ2F0aW9uSUQpOworCiAgICAgYXV0byB0cmFuc2FjdGlvbiA9IG1f
cGFnZUxvYWRTdGF0ZS50cmFuc2FjdGlvbigpOwogCiAgICAgYm9vbCBpc01haW5GcmFtZSA9IGZy
YW1lLT5pc01haW5GcmFtZSgpOwpAQCAtMjczMiw3ICsyNzYzLDcgQEAgdm9pZCBXZWJQYWdlUHJv
eHk6OmRpZEZpbmlzaExvYWRGb3JGcmFtZQogICAgIGZyYW1lLT5kaWRGaW5pc2hMb2FkKCk7CiAK
ICAgICBtX3BhZ2VMb2FkU3RhdGUuY29tbWl0Q2hhbmdlcygpOwotICAgIG1fbG9hZGVyQ2xpZW50
LT5kaWRGaW5pc2hMb2FkRm9yRnJhbWUodGhpcywgZnJhbWUsIG5hdmlnYXRpb25JRCwgbV9wcm9j
ZXNzLT50cmFuc2Zvcm1IYW5kbGVzVG9PYmplY3RzKHVzZXJEYXRhLm9iamVjdCgpKS5nZXQoKSk7
CisgICAgbV9sb2FkZXJDbGllbnQtPmRpZEZpbmlzaExvYWRGb3JGcmFtZSgqdGhpcywgKmZyYW1l
LCBuYXZpZ2F0aW9uLmdldCgpLCBtX3Byb2Nlc3MtPnRyYW5zZm9ybUhhbmRsZXNUb09iamVjdHMo
dXNlckRhdGEub2JqZWN0KCkpLmdldCgpKTsKIAogICAgIGlmIChpc01haW5GcmFtZSkKICAgICAg
ICAgbV9wYWdlQ2xpZW50LmRpZEZpbmlzaExvYWRGb3JNYWluRnJhbWUoKTsKQEAgLTI3NDMsNiAr
Mjc3NCwxMSBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkRmFpbExvYWRGb3JGcmFtZSh1CiAgICAg
V2ViRnJhbWVQcm94eSogZnJhbWUgPSBtX3Byb2Nlc3MtPndlYkZyYW1lKGZyYW1lSUQpOwogICAg
IE1FU1NBR0VfQ0hFQ0soZnJhbWUpOwogCisgICAgLy8gRklYTUU6IFdlIHNob3VsZCBtZXNzYWdl
IGNoZWNrIHRoYXQgbmF2aWdhdGlvbklEIGlzIG5vdCB6ZXJvIGhlcmUsIGJ1dCBpdCdzIGN1cnJl
bnRseSB6ZXJvIGZvciBzb21lIG5hdmlnYXRpb25zIHRocm91Z2ggdGhlIHBhZ2UgY2FjaGUuCisg
ICAgUmVmUHRyPEFQSTo6TmF2aWdhdGlvbj4gbmF2aWdhdGlvbjsKKyAgICBpZiAoZnJhbWUtPmlz
TWFpbkZyYW1lKCkgJiYgbmF2aWdhdGlvbklEKQorICAgICAgICBuYXZpZ2F0aW9uID0gJm5hdmln
YXRpb25TdGF0ZSgpLm5hdmlnYXRpb24obmF2aWdhdGlvbklEKTsKKwogICAgIGNsZWFyTG9hZERl
cGVuZGVudENhbGxiYWNrcygpOwogCiAgICAgYXV0byB0cmFuc2FjdGlvbiA9IG1fcGFnZUxvYWRT
dGF0ZS50cmFuc2FjdGlvbigpOwpAQCAtMjc1Myw3ICsyNzg5LDcgQEAgdm9pZCBXZWJQYWdlUHJv
eHk6OmRpZEZhaWxMb2FkRm9yRnJhbWUodQogICAgIGZyYW1lLT5kaWRGYWlsTG9hZCgpOwogCiAg
ICAgbV9wYWdlTG9hZFN0YXRlLmNvbW1pdENoYW5nZXMoKTsKLSAgICBtX2xvYWRlckNsaWVudC0+
ZGlkRmFpbExvYWRXaXRoRXJyb3JGb3JGcmFtZSh0aGlzLCBmcmFtZSwgbmF2aWdhdGlvbklELCBl
cnJvciwgbV9wcm9jZXNzLT50cmFuc2Zvcm1IYW5kbGVzVG9PYmplY3RzKHVzZXJEYXRhLm9iamVj
dCgpKS5nZXQoKSk7CisgICAgbV9sb2FkZXJDbGllbnQtPmRpZEZhaWxMb2FkV2l0aEVycm9yRm9y
RnJhbWUoKnRoaXMsICpmcmFtZSwgbmF2aWdhdGlvbi5nZXQoKSwgZXJyb3IsIG1fcHJvY2Vzcy0+
dHJhbnNmb3JtSGFuZGxlc1RvT2JqZWN0cyh1c2VyRGF0YS5vYmplY3QoKSkuZ2V0KCkpOwogfQog
CiB2b2lkIFdlYlBhZ2VQcm94eTo6ZGlkU2FtZURvY3VtZW50TmF2aWdhdGlvbkZvckZyYW1lKHVp
bnQ2NF90IGZyYW1lSUQsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgdWludDMyX3Qgb3BhcXVlU2Ft
ZURvY3VtZW50TmF2aWdhdGlvblR5cGUsIGNvbnN0IFN0cmluZyYgdXJsLCBjb25zdCBVc2VyRGF0
YSYgdXNlckRhdGEpCkBAIC0yNzYyLDYgKzI3OTgsMTEgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRp
ZFNhbWVEb2N1bWVudE5hdmlnYQogICAgIE1FU1NBR0VfQ0hFQ0soZnJhbWUpOwogICAgIE1FU1NB
R0VfQ0hFQ0tfVVJMKHVybCk7CiAKKyAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIG1lc3NhZ2UgY2hl
Y2sgdGhhdCBuYXZpZ2F0aW9uSUQgaXMgbm90IHplcm8gaGVyZSwgYnV0IGl0J3MgY3VycmVudGx5
IHplcm8gZm9yIHNvbWUgbmF2aWdhdGlvbnMgdGhyb3VnaCB0aGUgcGFnZSBjYWNoZS4KKyAgICBS
ZWZQdHI8QVBJOjpOYXZpZ2F0aW9uPiBuYXZpZ2F0aW9uOworICAgIGlmIChmcmFtZS0+aXNNYWlu
RnJhbWUoKSAmJiBuYXZpZ2F0aW9uSUQpCisgICAgICAgIG5hdmlnYXRpb24gPSAmbmF2aWdhdGlv
blN0YXRlKCkubmF2aWdhdGlvbihuYXZpZ2F0aW9uSUQpOworCiAgICAgYXV0byB0cmFuc2FjdGlv
biA9IG1fcGFnZUxvYWRTdGF0ZS50cmFuc2FjdGlvbigpOwogCiAgICAgYm9vbCBpc01haW5GcmFt
ZSA9IGZyYW1lLT5pc01haW5GcmFtZSgpOwpAQCAtMjc3NCw3ICsyODE1LDcgQEAgdm9pZCBXZWJQ
YWdlUHJveHk6OmRpZFNhbWVEb2N1bWVudE5hdmlnYQogICAgIG1fcGFnZUxvYWRTdGF0ZS5jb21t
aXRDaGFuZ2VzKCk7CiAKICAgICBTYW1lRG9jdW1lbnROYXZpZ2F0aW9uVHlwZSBuYXZpZ2F0aW9u
VHlwZSA9IHN0YXRpY19jYXN0PFNhbWVEb2N1bWVudE5hdmlnYXRpb25UeXBlPihvcGFxdWVTYW1l
RG9jdW1lbnROYXZpZ2F0aW9uVHlwZSk7Ci0gICAgbV9sb2FkZXJDbGllbnQtPmRpZFNhbWVEb2N1
bWVudE5hdmlnYXRpb25Gb3JGcmFtZSh0aGlzLCBmcmFtZSwgbmF2aWdhdGlvbklELCBuYXZpZ2F0
aW9uVHlwZSwgbV9wcm9jZXNzLT50cmFuc2Zvcm1IYW5kbGVzVG9PYmplY3RzKHVzZXJEYXRhLm9i
amVjdCgpKS5nZXQoKSk7CisgICAgbV9sb2FkZXJDbGllbnQtPmRpZFNhbWVEb2N1bWVudE5hdmln
YXRpb25Gb3JGcmFtZSgqdGhpcywgKmZyYW1lLCBuYXZpZ2F0aW9uLmdldCgpLCBuYXZpZ2F0aW9u
VHlwZSwgbV9wcm9jZXNzLT50cmFuc2Zvcm1IYW5kbGVzVG9PYmplY3RzKHVzZXJEYXRhLm9iamVj
dCgpKS5nZXQoKSk7CiAKICAgICBpZiAoaXNNYWluRnJhbWUpCiAgICAgICAgIG1fcGFnZUNsaWVu
dC5kaWRTYW1lRG9jdW1lbnROYXZpZ2F0aW9uRm9yTWFpbkZyYW1lKG5hdmlnYXRpb25UeXBlKTsK
QEAgLTI3OTMsNyArMjgzNCw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRSZWNlaXZlVGl0bGVG
b3JGcmEKICAgICBmcmFtZS0+ZGlkQ2hhbmdlVGl0bGUodGl0bGUpOwogICAgIAogICAgIG1fcGFn
ZUxvYWRTdGF0ZS5jb21taXRDaGFuZ2VzKCk7Ci0gICAgbV9sb2FkZXJDbGllbnQtPmRpZFJlY2Vp
dmVUaXRsZUZvckZyYW1lKHRoaXMsIHRpdGxlLCBmcmFtZSwgbV9wcm9jZXNzLT50cmFuc2Zvcm1I
YW5kbGVzVG9PYmplY3RzKHVzZXJEYXRhLm9iamVjdCgpKS5nZXQoKSk7CisgICAgbV9sb2FkZXJD
bGllbnQtPmRpZFJlY2VpdmVUaXRsZUZvckZyYW1lKCp0aGlzLCB0aXRsZSwgKmZyYW1lLCBtX3By
b2Nlc3MtPnRyYW5zZm9ybUhhbmRsZXNUb09iamVjdHModXNlckRhdGEub2JqZWN0KCkpLmdldCgp
KTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmRpZEZpcnN0TGF5b3V0Rm9yRnJhbWUodWludDY0
X3QgZnJhbWVJRCwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhKQpAQCAtMjgwMSw3ICsyODQyLDcg
QEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZEZpcnN0TGF5b3V0Rm9yRnJhbQogICAgIFdlYkZyYW1l
UHJveHkqIGZyYW1lID0gbV9wcm9jZXNzLT53ZWJGcmFtZShmcmFtZUlEKTsKICAgICBNRVNTQUdF
X0NIRUNLKGZyYW1lKTsKIAotICAgIG1fbG9hZGVyQ2xpZW50LT5kaWRGaXJzdExheW91dEZvckZy
YW1lKHRoaXMsIGZyYW1lLCBtX3Byb2Nlc3MtPnRyYW5zZm9ybUhhbmRsZXNUb09iamVjdHModXNl
ckRhdGEub2JqZWN0KCkpLmdldCgpKTsKKyAgICBtX2xvYWRlckNsaWVudC0+ZGlkRmlyc3RMYXlv
dXRGb3JGcmFtZSgqdGhpcywgKmZyYW1lLCBtX3Byb2Nlc3MtPnRyYW5zZm9ybUhhbmRsZXNUb09i
amVjdHModXNlckRhdGEub2JqZWN0KCkpLmdldCgpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6
OmRpZEZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dEZvckZyYW1lKHVpbnQ2NF90IGZyYW1lSUQs
IGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkKQEAgLTI4MDksNyArMjg1MCw3IEBAIHZvaWQgV2Vi
UGFnZVByb3h5OjpkaWRGaXJzdFZpc3VhbGx5Tm9uRW0KICAgICBXZWJGcmFtZVByb3h5KiBmcmFt
ZSA9IG1fcHJvY2Vzcy0+d2ViRnJhbWUoZnJhbWVJRCk7CiAgICAgTUVTU0FHRV9DSEVDSyhmcmFt
ZSk7CiAKLSAgICBtX2xvYWRlckNsaWVudC0+ZGlkRmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0
Rm9yRnJhbWUodGhpcywgZnJhbWUsIG1fcHJvY2Vzcy0+dHJhbnNmb3JtSGFuZGxlc1RvT2JqZWN0
cyh1c2VyRGF0YS5vYmplY3QoKSkuZ2V0KCkpOworICAgIG1fbG9hZGVyQ2xpZW50LT5kaWRGaXJz
dFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRGb3JGcmFtZSgqdGhpcywgKmZyYW1lLCBtX3Byb2Nlc3Mt
PnRyYW5zZm9ybUhhbmRsZXNUb09iamVjdHModXNlckRhdGEub2JqZWN0KCkpLmdldCgpKTsKIAog
ICAgIGlmIChmcmFtZS0+aXNNYWluRnJhbWUoKSkKICAgICAgICAgbV9wYWdlQ2xpZW50LmRpZEZp
cnN0VmlzdWFsbHlOb25FbXB0eUxheW91dEZvck1haW5GcmFtZSgpOwpAQCAtMjgxNyw3ICsyODU4
LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRpZEZpcnN0VmlzdWFsbHlOb25FbQogCiB2b2lkIFdl
YlBhZ2VQcm94eTo6ZGlkTGF5b3V0KHVpbnQzMl90IGxheW91dE1pbGVzdG9uZXMsIGNvbnN0IFVz
ZXJEYXRhJiB1c2VyRGF0YSkKIHsKLSAgICBtX2xvYWRlckNsaWVudC0+ZGlkTGF5b3V0KHRoaXMs
IHN0YXRpY19jYXN0PExheW91dE1pbGVzdG9uZXM+KGxheW91dE1pbGVzdG9uZXMpLCBtX3Byb2Nl
c3MtPnRyYW5zZm9ybUhhbmRsZXNUb09iamVjdHModXNlckRhdGEub2JqZWN0KCkpLmdldCgpKTsK
KyAgICBtX2xvYWRlckNsaWVudC0+ZGlkTGF5b3V0KCp0aGlzLCBzdGF0aWNfY2FzdDxMYXlvdXRN
aWxlc3RvbmVzPihsYXlvdXRNaWxlc3RvbmVzKSwgbV9wcm9jZXNzLT50cmFuc2Zvcm1IYW5kbGVz
VG9PYmplY3RzKHVzZXJEYXRhLm9iamVjdCgpKS5nZXQoKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVBy
b3h5OjpkaWRSZW1vdmVGcmFtZUZyb21IaWVyYXJjaHkodWludDY0X3QgZnJhbWVJRCwgY29uc3Qg
VXNlckRhdGEmIHVzZXJEYXRhKQpAQCAtMjgyNSw3ICsyODY2LDcgQEAgdm9pZCBXZWJQYWdlUHJv
eHk6OmRpZFJlbW92ZUZyYW1lRnJvbUhpZQogICAgIFdlYkZyYW1lUHJveHkqIGZyYW1lID0gbV9w
cm9jZXNzLT53ZWJGcmFtZShmcmFtZUlEKTsKICAgICBNRVNTQUdFX0NIRUNLKGZyYW1lKTsKIAot
ICAgIG1fbG9hZGVyQ2xpZW50LT5kaWRSZW1vdmVGcmFtZUZyb21IaWVyYXJjaHkodGhpcywgZnJh
bWUsIG1fcHJvY2Vzcy0+dHJhbnNmb3JtSGFuZGxlc1RvT2JqZWN0cyh1c2VyRGF0YS5vYmplY3Qo
KSkuZ2V0KCkpOworICAgIG1fbG9hZGVyQ2xpZW50LT5kaWRSZW1vdmVGcmFtZUZyb21IaWVyYXJj
aHkoKnRoaXMsICpmcmFtZSwgbV9wcm9jZXNzLT50cmFuc2Zvcm1IYW5kbGVzVG9PYmplY3RzKHVz
ZXJEYXRhLm9iamVjdCgpKS5nZXQoKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpkaWREaXNw
bGF5SW5zZWN1cmVDb250ZW50Rm9yRnJhbWUodWludDY0X3QgZnJhbWVJRCwgY29uc3QgVXNlckRh
dGEmIHVzZXJEYXRhKQpAQCAtMjgzNyw3ICsyODc4LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmRp
ZERpc3BsYXlJbnNlY3VyZUNvbgogICAgIG1fcGFnZUxvYWRTdGF0ZS5kaWREaXNwbGF5T3JSdW5J
bnNlY3VyZUNvbnRlbnQodHJhbnNhY3Rpb24pOwogCiAgICAgbV9wYWdlTG9hZFN0YXRlLmNvbW1p
dENoYW5nZXMoKTsKLSAgICBtX2xvYWRlckNsaWVudC0+ZGlkRGlzcGxheUluc2VjdXJlQ29udGVu
dEZvckZyYW1lKHRoaXMsIGZyYW1lLCBtX3Byb2Nlc3MtPnRyYW5zZm9ybUhhbmRsZXNUb09iamVj
dHModXNlckRhdGEub2JqZWN0KCkpLmdldCgpKTsKKyAgICBtX2xvYWRlckNsaWVudC0+ZGlkRGlz
cGxheUluc2VjdXJlQ29udGVudEZvckZyYW1lKCp0aGlzLCAqZnJhbWUsIG1fcHJvY2Vzcy0+dHJh
bnNmb3JtSGFuZGxlc1RvT2JqZWN0cyh1c2VyRGF0YS5vYmplY3QoKSkuZ2V0KCkpOwogfQogCiB2
b2lkIFdlYlBhZ2VQcm94eTo6ZGlkUnVuSW5zZWN1cmVDb250ZW50Rm9yRnJhbWUodWludDY0X3Qg
ZnJhbWVJRCwgY29uc3QgVXNlckRhdGEmIHVzZXJEYXRhKQpAQCAtMjg0OSw3ICsyODkwLDcgQEAg
dm9pZCBXZWJQYWdlUHJveHk6OmRpZFJ1bkluc2VjdXJlQ29udGVudAogICAgIG1fcGFnZUxvYWRT
dGF0ZS5kaWREaXNwbGF5T3JSdW5JbnNlY3VyZUNvbnRlbnQodHJhbnNhY3Rpb24pOwogCiAgICAg
bV9wYWdlTG9hZFN0YXRlLmNvbW1pdENoYW5nZXMoKTsKLSAgICBtX2xvYWRlckNsaWVudC0+ZGlk
UnVuSW5zZWN1cmVDb250ZW50Rm9yRnJhbWUodGhpcywgZnJhbWUsIG1fcHJvY2Vzcy0+dHJhbnNm
b3JtSGFuZGxlc1RvT2JqZWN0cyh1c2VyRGF0YS5vYmplY3QoKSkuZ2V0KCkpOworICAgIG1fbG9h
ZGVyQ2xpZW50LT5kaWRSdW5JbnNlY3VyZUNvbnRlbnRGb3JGcmFtZSgqdGhpcywgKmZyYW1lLCBt
X3Byb2Nlc3MtPnRyYW5zZm9ybUhhbmRsZXNUb09iamVjdHModXNlckRhdGEub2JqZWN0KCkpLmdl
dCgpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmRpZERldGVjdFhTU0ZvckZyYW1lKHVpbnQ2
NF90IGZyYW1lSUQsIGNvbnN0IFVzZXJEYXRhJiB1c2VyRGF0YSkKQEAgLTI4NTcsNyArMjg5OCw3
IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWREZXRlY3RYU1NGb3JGcmFtZSgKICAgICBXZWJGcmFt
ZVByb3h5KiBmcmFtZSA9IG1fcHJvY2Vzcy0+d2ViRnJhbWUoZnJhbWVJRCk7CiAgICAgTUVTU0FH
RV9DSEVDSyhmcmFtZSk7CiAKLSAgICBtX2xvYWRlckNsaWVudC0+ZGlkRGV0ZWN0WFNTRm9yRnJh
bWUodGhpcywgZnJhbWUsIG1fcHJvY2Vzcy0+dHJhbnNmb3JtSGFuZGxlc1RvT2JqZWN0cyh1c2Vy
RGF0YS5vYmplY3QoKSkuZ2V0KCkpOworICAgIG1fbG9hZGVyQ2xpZW50LT5kaWREZXRlY3RYU1NG
b3JGcmFtZSgqdGhpcywgKmZyYW1lLCBtX3Byb2Nlc3MtPnRyYW5zZm9ybUhhbmRsZXNUb09iamVj
dHModXNlckRhdGEub2JqZWN0KCkpLmdldCgpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmZy
YW1lRGlkQmVjb21lRnJhbWVTZXQodWludDY0X3QgZnJhbWVJRCwgYm9vbCB2YWx1ZSkKQEAgLTMy
MTIsMTIgKzMyNTMsMTIgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnVuYXZhaWxhYmxlUGx1Z2luQnV0
dAogI2lmIEVOQUJMRShXRUJHTCkKIHZvaWQgV2ViUGFnZVByb3h5Ojp3ZWJHTFBvbGljeUZvclVS
TChjb25zdCBTdHJpbmcmIHVybCwgdWludDMyX3QmIGxvYWRQb2xpY3kpCiB7Ci0gICAgbG9hZFBv
bGljeSA9IHN0YXRpY19jYXN0PHVpbnQzMl90PihtX2xvYWRlckNsaWVudC0+d2ViR0xMb2FkUG9s
aWN5KHRoaXMsIHVybCkpOworICAgIGxvYWRQb2xpY3kgPSBzdGF0aWNfY2FzdDx1aW50MzJfdD4o
bV9sb2FkZXJDbGllbnQtPndlYkdMTG9hZFBvbGljeSgqdGhpcywgdXJsKSk7CiB9CiAKIHZvaWQg
V2ViUGFnZVByb3h5OjpyZXNvbHZlV2ViR0xQb2xpY3lGb3JVUkwoY29uc3QgU3RyaW5nJiB1cmws
IHVpbnQzMl90JiBsb2FkUG9saWN5KQogewotICAgIGxvYWRQb2xpY3kgPSBzdGF0aWNfY2FzdDx1
aW50MzJfdD4obV9sb2FkZXJDbGllbnQtPnJlc29sdmVXZWJHTExvYWRQb2xpY3kodGhpcywgdXJs
KSk7CisgICAgbG9hZFBvbGljeSA9IHN0YXRpY19jYXN0PHVpbnQzMl90PihtX2xvYWRlckNsaWVu
dC0+cmVzb2x2ZVdlYkdMTG9hZFBvbGljeSgqdGhpcywgdXJsKSk7CiB9CiAjZW5kaWYgLy8gRU5B
QkxFKFdFQkdMKQogCkBAIC00Mzg1LDcgKzQ0MjYsNyBAQCB2b2lkIFdlYlBhZ2VQcm94eTo6cHJv
Y2Vzc0RpZEJlY29tZVVucmVzCiAKICAgICB1cGRhdGVCYWNraW5nU3RvcmVEaXNjYXJkYWJsZVN0
YXRlKCk7CiAKLSAgICBtX2xvYWRlckNsaWVudC0+cHJvY2Vzc0RpZEJlY29tZVVucmVzcG9uc2l2
ZSh0aGlzKTsKKyAgICBtX2xvYWRlckNsaWVudC0+cHJvY2Vzc0RpZEJlY29tZVVucmVzcG9uc2l2
ZSgqdGhpcyk7CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjppbnRlcmFjdGlvbk9jY3VycmVkV2hp
bGVQcm9jZXNzVW5yZXNwb25zaXZlKCkKQEAgLTQzOTMsNyArNDQzNCw3IEBAIHZvaWQgV2ViUGFn
ZVByb3h5OjppbnRlcmFjdGlvbk9jY3VycmVkV2gKICAgICBpZiAoIWlzVmFsaWQoKSkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgbV9sb2FkZXJDbGllbnQtPmludGVyYWN0aW9uT2NjdXJyZWRXaGls
ZVByb2Nlc3NVbnJlc3BvbnNpdmUodGhpcyk7CisgICAgbV9sb2FkZXJDbGllbnQtPmludGVyYWN0
aW9uT2NjdXJyZWRXaGlsZVByb2Nlc3NVbnJlc3BvbnNpdmUoKnRoaXMpOwogfQogCiB2b2lkIFdl
YlBhZ2VQcm94eTo6cHJvY2Vzc0RpZEJlY29tZVJlc3BvbnNpdmUoKQpAQCAtNDQwMyw3ICs0NDQ0
LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OnByb2Nlc3NEaWRCZWNvbWVSZXNwbwogICAgIAogICAg
IHVwZGF0ZUJhY2tpbmdTdG9yZURpc2NhcmRhYmxlU3RhdGUoKTsKIAotICAgIG1fbG9hZGVyQ2xp
ZW50LT5wcm9jZXNzRGlkQmVjb21lUmVzcG9uc2l2ZSh0aGlzKTsKKyAgICBtX2xvYWRlckNsaWVu
dC0+cHJvY2Vzc0RpZEJlY29tZVJlc3BvbnNpdmUoKnRoaXMpOwogfQogCiB2b2lkIFdlYlBhZ2VQ
cm94eTo6cHJvY2Vzc0RpZENyYXNoKCkKQEAgLTQ0MTUsNyArNDQ1Niw5IEBAIHZvaWQgV2ViUGFn
ZVByb3h5Ojpwcm9jZXNzRGlkQ3Jhc2goKQogCiAgICAgcmVzZXRTdGF0ZUFmdGVyUHJvY2Vzc0V4
aXRlZCgpOwogCi0gICAgbV9sb2FkZXJDbGllbnQtPnByb2Nlc3NEaWRDcmFzaCh0aGlzKTsKKyAg
ICBuYXZpZ2F0aW9uU3RhdGUoKS5jbGVhckFsbE5hdmlnYXRpb25zKCk7CisKKyAgICBtX2xvYWRl
ckNsaWVudC0+cHJvY2Vzc0RpZENyYXNoKCp0aGlzKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6
OnJlc2V0U3RhdGUoUmVzZXRTdGF0ZVJlYXNvbiByZXNldFN0YXRlUmVhc29uKQpAQCAtNDY0Miw3
ICs0Njg1LDcgQEAgdm9pZCBXZWJQYWdlUHJveHk6OmNhbkF1dGhlbnRpY2F0ZUFnYWlucwogCiAg
ICAgUmVmUHRyPFdlYlByb3RlY3Rpb25TcGFjZT4gcHJvdGVjdGlvblNwYWNlID0gV2ViUHJvdGVj
dGlvblNwYWNlOjpjcmVhdGUoY29yZVByb3RlY3Rpb25TcGFjZSk7CiAKLSAgICBjYW5BdXRoZW50
aWNhdGUgPSBtX2xvYWRlckNsaWVudC0+Y2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rpb25T
cGFjZUluRnJhbWUodGhpcywgZnJhbWUsIHByb3RlY3Rpb25TcGFjZS5nZXQoKSk7CisgICAgY2Fu
QXV0aGVudGljYXRlID0gbV9sb2FkZXJDbGllbnQtPmNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90
ZWN0aW9uU3BhY2VJbkZyYW1lKCp0aGlzLCAqZnJhbWUsIHByb3RlY3Rpb25TcGFjZS5nZXQoKSk7
CiB9CiAKIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVu
Z2UodWludDY0X3QgZnJhbWVJRCwgY29uc3QgQXV0aGVudGljYXRpb25DaGFsbGVuZ2UmIGNvcmVD
aGFsbGVuZ2UsIHVpbnQ2NF90IGNoYWxsZW5nZUlEKQpAQCAtNDY1OCw3ICs0NzAxLDcgQEAgdm9p
ZCBXZWJQYWdlUHJveHk6OmRpZFJlY2VpdmVBdXRoZW50aWNhdAogICAgIE1FU1NBR0VfQ0hFQ0so
ZnJhbWUpOwogCiAgICAgUmVmUHRyPEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHk+IGF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlID0gcHJwQXV0aGVudGljYXRpb25DaGFsbGVuZ2U7Ci0gICAgbV9s
b2FkZXJDbGllbnQtPmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUluRnJhbWUodGhp
cywgZnJhbWUsIGF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlLmdldCgpKTsKKyAgICBtX2xvYWRlckNs
aWVudC0+ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlSW5GcmFtZSgqdGhpcywgKmZy
YW1lLCBhdXRoZW50aWNhdGlvbkNoYWxsZW5nZS5nZXQoKSk7CiB9CiAKIHZvaWQgV2ViUGFnZVBy
b3h5OjpleGNlZWRlZERhdGFiYXNlUXVvdGEodWludDY0X3QgZnJhbWVJRCwgY29uc3QgU3RyaW5n
JiBvcmlnaW5JZGVudGlmaWVyLCBjb25zdCBTdHJpbmcmIGRhdGFiYXNlTmFtZSwgY29uc3QgU3Ry
aW5nJiBkaXNwbGF5TmFtZSwgdWludDY0X3QgY3VycmVudFF1b3RhLCB1aW50NjRfdCBjdXJyZW50
T3JpZ2luVXNhZ2UsIHVpbnQ2NF90IGN1cnJlbnREYXRhYmFzZVVzYWdlLCB1aW50NjRfdCBleHBl
Y3RlZFVzYWdlLCBQYXNzUmVmUHRyPE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkV4Y2VlZGVkRGF0
YWJhc2VRdW90YTo6RGVsYXllZFJlcGx5PiByZXBseSkKQEAgLTQ4NDMsNyArNDg4Niw3IEBAIHZv
aWQgV2ViUGFnZVByb3h5OjpwYWdlRXh0ZW5kZWRCYWNrZ3JvdW4KICNpZiBFTkFCTEUoTkVUU0NB
UEVfUExVR0lOX0FQSSkKIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRGYWlsVG9Jbml0aWFsaXplUGx1
Z2luKGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFN0cmluZyYgZnJhbWVVUkxTdHJpbmcs
IGNvbnN0IFN0cmluZyYgcGFnZVVSTFN0cmluZykKIHsKLSAgICBtX2xvYWRlckNsaWVudC0+ZGlk
RmFpbFRvSW5pdGlhbGl6ZVBsdWdpbih0aGlzLCBjcmVhdGVQbHVnaW5JbmZvcm1hdGlvbkRpY3Rp
b25hcnkobWltZVR5cGUsIGZyYW1lVVJMU3RyaW5nLCBwYWdlVVJMU3RyaW5nKS5nZXQoKSk7Cisg
ICAgbV9sb2FkZXJDbGllbnQtPmRpZEZhaWxUb0luaXRpYWxpemVQbHVnaW4oKnRoaXMsIGNyZWF0
ZVBsdWdpbkluZm9ybWF0aW9uRGljdGlvbmFyeShtaW1lVHlwZSwgZnJhbWVVUkxTdHJpbmcsIHBh
Z2VVUkxTdHJpbmcpLmdldCgpKTsKIH0KIAogdm9pZCBXZWJQYWdlUHJveHk6OmRpZEJsb2NrSW5z
ZWN1cmVQbHVnaW5WZXJzaW9uKGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFN0cmluZyYg
cGx1Z2luVVJMU3RyaW5nLCBjb25zdCBTdHJpbmcmIGZyYW1lVVJMU3RyaW5nLCBjb25zdCBTdHJp
bmcmIHBhZ2VVUkxTdHJpbmcsIGJvb2wgcmVwbGFjZW1lbnRPYnNjdXJlZCkKQEAgLTQ4NjIsNyAr
NDkwNSw3IEBAIHZvaWQgV2ViUGFnZVByb3h5OjpkaWRCbG9ja0luc2VjdXJlUGx1Z2kKICAgICBV
TlVTRURfUEFSQU0ocmVwbGFjZW1lbnRPYnNjdXJlZCk7CiAjZW5kaWYKIAotICAgIG1fbG9hZGVy
Q2xpZW50LT5kaWRCbG9ja0luc2VjdXJlUGx1Z2luVmVyc2lvbih0aGlzLCBwbHVnaW5JbmZvcm1h
dGlvbi5nZXQoKSk7CisgICAgbV9sb2FkZXJDbGllbnQtPmRpZEJsb2NrSW5zZWN1cmVQbHVnaW5W
ZXJzaW9uKCp0aGlzLCBwbHVnaW5JbmZvcm1hdGlvbi5nZXQoKSk7CiB9CiAjZW5kaWYgLy8gRU5B
QkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCiAKSW5kZXg6IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vz
cy9BUEkvQVBJTG9hZGVyQ2xpZW50LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gU291cmNlL1dlYktpdDIvVUlQ
cm9jZXNzL0FQSS9BUElMb2FkZXJDbGllbnQuaAkocmV2aXNpb24gMTc4MzY0KQorKysgU291cmNl
L1dlYktpdDIvVUlQcm9jZXNzL0FQSS9BUElMb2FkZXJDbGllbnQuaAkod29ya2luZyBjb3B5KQpA
QCAtNTAsNTAgKzUwLDUwIEBAIHN0cnVjdCBXZWJOYXZpZ2F0aW9uRGF0YVN0b3JlOwogbmFtZXNw
YWNlIEFQSSB7CiAKIGNsYXNzIERpY3Rpb25hcnk7CitjbGFzcyBOYXZpZ2F0aW9uOwogY2xhc3Mg
T2JqZWN0OwogCiBjbGFzcyBMb2FkZXJDbGllbnQgewogcHVibGljOgogICAgIHZpcnR1YWwgfkxv
YWRlckNsaWVudCgpIHsgfQogCi0gICAgdmlydHVhbCB2b2lkIGRpZFN0YXJ0UHJvdmlzaW9uYWxM
b2FkRm9yRnJhbWUoV2ViS2l0OjpXZWJQYWdlUHJveHkqLCBXZWJLaXQ6OldlYkZyYW1lUHJveHkq
LCB1aW50NjRfdCwgQVBJOjpPYmplY3QqKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2
ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUoV2ViS2l0OjpXZWJQYWdl
UHJveHkqLCBXZWJLaXQ6OldlYkZyYW1lUHJveHkqLCB1aW50NjRfdCwgQVBJOjpPYmplY3QqKSB7
IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbFByb3Zpc2lvbmFsTG9hZFdpdGhFcnJvckZvckZy
YW1lKFdlYktpdDo6V2ViUGFnZVByb3h5KiwgV2ViS2l0OjpXZWJGcmFtZVByb3h5KiwgdWludDY0
X3QsIGNvbnN0IFdlYkNvcmU6OlJlc291cmNlRXJyb3ImLCBBUEk6Ok9iamVjdCopIHsgfQotICAg
IHZpcnR1YWwgdm9pZCBkaWRDb21taXRMb2FkRm9yRnJhbWUoV2ViS2l0OjpXZWJQYWdlUHJveHkq
LCBXZWJLaXQ6OldlYkZyYW1lUHJveHkqLCB1aW50NjRfdCwgQVBJOjpPYmplY3QqKSB7IH0KLSAg
ICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoRG9jdW1lbnRMb2FkRm9yRnJhbWUoV2ViS2l0OjpXZWJQ
YWdlUHJveHkqLCBXZWJLaXQ6OldlYkZyYW1lUHJveHkqLCB1aW50NjRfdCwgQVBJOjpPYmplY3Qq
KSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoTG9hZEZvckZyYW1lKFdlYktpdDo6V2Vi
UGFnZVByb3h5KiwgV2ViS2l0OjpXZWJGcmFtZVByb3h5KiwgdWludDY0X3QsIEFQSTo6T2JqZWN0
KikgeyB9Ci0gICAgdmlydHVhbCB2b2lkIGRpZEZhaWxMb2FkV2l0aEVycm9yRm9yRnJhbWUoV2Vi
S2l0OjpXZWJQYWdlUHJveHkqLCBXZWJLaXQ6OldlYkZyYW1lUHJveHkqLCB1aW50NjRfdCwgY29u
c3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYsIEFQSTo6T2JqZWN0KikgeyB9Ci0gICAgdmlydHVh
bCB2b2lkIGRpZFNhbWVEb2N1bWVudE5hdmlnYXRpb25Gb3JGcmFtZShXZWJLaXQ6OldlYlBhZ2VQ
cm94eSosIFdlYktpdDo6V2ViRnJhbWVQcm94eSosIHVpbnQ2NF90LCBXZWJLaXQ6OlNhbWVEb2N1
bWVudE5hdmlnYXRpb25UeXBlLCBBUEk6Ok9iamVjdCopIHsgfQotICAgIHZpcnR1YWwgdm9pZCBk
aWRSZWNlaXZlVGl0bGVGb3JGcmFtZShXZWJLaXQ6OldlYlBhZ2VQcm94eSosIGNvbnN0IFdURjo6
U3RyaW5nJiwgV2ViS2l0OjpXZWJGcmFtZVByb3h5KiwgQVBJOjpPYmplY3QqKSB7IH0KLSAgICB2
aXJ0dWFsIHZvaWQgZGlkRmlyc3RMYXlvdXRGb3JGcmFtZShXZWJLaXQ6OldlYlBhZ2VQcm94eSos
IFdlYktpdDo6V2ViRnJhbWVQcm94eSosIEFQSTo6T2JqZWN0KikgeyB9Ci0gICAgdmlydHVhbCB2
b2lkIGRpZERlc3Ryb3lOYXZpZ2F0aW9uKFdlYktpdDo6V2ViUGFnZVByb3h5KiwgdWludDY0X3Qp
IHsgfQorICAgIHZpcnR1YWwgdm9pZCBkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKFdl
YktpdDo6V2ViUGFnZVByb3h5JiwgV2ViS2l0OjpXZWJGcmFtZVByb3h5JiwgQVBJOjpOYXZpZ2F0
aW9uKiwgQVBJOjpPYmplY3QqKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlkUmVjZWl2ZVNlcnZl
clJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUoV2ViS2l0OjpXZWJQYWdlUHJveHkm
LCBXZWJLaXQ6OldlYkZyYW1lUHJveHkmLCBBUEk6Ok5hdmlnYXRpb24qLCBBUEk6Ok9iamVjdCop
IHsgfQorICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsUHJvdmlzaW9uYWxMb2FkV2l0aEVycm9yRm9y
RnJhbWUoV2ViS2l0OjpXZWJQYWdlUHJveHkmLCBXZWJLaXQ6OldlYkZyYW1lUHJveHkmLCBBUEk6
Ok5hdmlnYXRpb24qLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwgQVBJOjpPYmplY3Qq
KSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ29tbWl0TG9hZEZvckZyYW1lKFdlYktpdDo6V2Vi
UGFnZVByb3h5JiwgV2ViS2l0OjpXZWJGcmFtZVByb3h5JiwgQVBJOjpOYXZpZ2F0aW9uKiwgQVBJ
OjpPYmplY3QqKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoRG9jdW1lbnRMb2FkRm9y
RnJhbWUoV2ViS2l0OjpXZWJQYWdlUHJveHkmLCBXZWJLaXQ6OldlYkZyYW1lUHJveHkmLCBBUEk6
Ok5hdmlnYXRpb24qLCBBUEk6Ok9iamVjdCopIHsgfQorICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5p
c2hMb2FkRm9yRnJhbWUoV2ViS2l0OjpXZWJQYWdlUHJveHkmLCBXZWJLaXQ6OldlYkZyYW1lUHJv
eHkmLCBBUEk6Ok5hdmlnYXRpb24qLCBBUEk6Ok9iamVjdCopIHsgfQorICAgIHZpcnR1YWwgdm9p
ZCBkaWRGYWlsTG9hZFdpdGhFcnJvckZvckZyYW1lKFdlYktpdDo6V2ViUGFnZVByb3h5JiwgV2Vi
S2l0OjpXZWJGcmFtZVByb3h5JiwgQVBJOjpOYXZpZ2F0aW9uKiwgY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VFcnJvciYsIEFQSTo6T2JqZWN0KikgeyB9CisgICAgdmlydHVhbCB2b2lkIGRpZFNhbWVE
b2N1bWVudE5hdmlnYXRpb25Gb3JGcmFtZShXZWJLaXQ6OldlYlBhZ2VQcm94eSYsIFdlYktpdDo6
V2ViRnJhbWVQcm94eSYsIEFQSTo6TmF2aWdhdGlvbiosIFdlYktpdDo6U2FtZURvY3VtZW50TmF2
aWdhdGlvblR5cGUsIEFQSTo6T2JqZWN0KikgeyB9CisgICAgdmlydHVhbCB2b2lkIGRpZFJlY2Vp
dmVUaXRsZUZvckZyYW1lKFdlYktpdDo6V2ViUGFnZVByb3h5JiwgY29uc3QgV1RGOjpTdHJpbmcm
LCBXZWJLaXQ6OldlYkZyYW1lUHJveHkmLCBBUEk6Ok9iamVjdCopIHsgfQorICAgIHZpcnR1YWwg
dm9pZCBkaWRGaXJzdExheW91dEZvckZyYW1lKFdlYktpdDo6V2ViUGFnZVByb3h5JiwgV2ViS2l0
OjpXZWJGcmFtZVByb3h5JiwgQVBJOjpPYmplY3QqKSB7IH0KIAogICAgIC8vIEZJWE1FOiBXZSBz
aG91bGQgY29uc2lkZXIgcmVtb3ZpbmcgZGlkRmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0Rm9y
RnJhbWUgc2luY2UgaXQgaXMgcmVwbGFjZWQgYnkgZGlkTGF5b3V0LgotICAgIHZpcnR1YWwgdm9p
ZCBkaWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRGb3JGcmFtZShXZWJLaXQ6OldlYlBhZ2VQ
cm94eSosIFdlYktpdDo6V2ViRnJhbWVQcm94eSosIEFQSTo6T2JqZWN0KikgeyB9CisgICAgdmly
dHVhbCB2b2lkIGRpZEZpcnN0VmlzdWFsbHlOb25FbXB0eUxheW91dEZvckZyYW1lKFdlYktpdDo6
V2ViUGFnZVByb3h5JiwgV2ViS2l0OjpXZWJGcmFtZVByb3h5JiwgQVBJOjpPYmplY3QqKSB7IH0K
IAotICAgIHZpcnR1YWwgdm9pZCBkaWRSZW1vdmVGcmFtZUZyb21IaWVyYXJjaHkoV2ViS2l0OjpX
ZWJQYWdlUHJveHkqLCBXZWJLaXQ6OldlYkZyYW1lUHJveHkqLCBBUEk6Ok9iamVjdCopIHsgfQot
ICAgIHZpcnR1YWwgdm9pZCBkaWREaXNwbGF5SW5zZWN1cmVDb250ZW50Rm9yRnJhbWUoV2ViS2l0
OjpXZWJQYWdlUHJveHkqLCBXZWJLaXQ6OldlYkZyYW1lUHJveHkqLCBBUEk6Ok9iamVjdCopIHsg
fQotICAgIHZpcnR1YWwgdm9pZCBkaWRSdW5JbnNlY3VyZUNvbnRlbnRGb3JGcmFtZShXZWJLaXQ6
OldlYlBhZ2VQcm94eSosIFdlYktpdDo6V2ViRnJhbWVQcm94eSosIEFQSTo6T2JqZWN0KikgeyB9
Ci0gICAgdmlydHVhbCB2b2lkIGRpZERldGVjdFhTU0ZvckZyYW1lKFdlYktpdDo6V2ViUGFnZVBy
b3h5KiwgV2ViS2l0OjpXZWJGcmFtZVByb3h5KiwgQVBJOjpPYmplY3QqKSB7IH0KKyAgICB2aXJ0
dWFsIHZvaWQgZGlkUmVtb3ZlRnJhbWVGcm9tSGllcmFyY2h5KFdlYktpdDo6V2ViUGFnZVByb3h5
JiwgV2ViS2l0OjpXZWJGcmFtZVByb3h5JiwgQVBJOjpPYmplY3QqKSB7IH0KKyAgICB2aXJ0dWFs
IHZvaWQgZGlkRGlzcGxheUluc2VjdXJlQ29udGVudEZvckZyYW1lKFdlYktpdDo6V2ViUGFnZVBy
b3h5JiwgV2ViS2l0OjpXZWJGcmFtZVByb3h5JiwgQVBJOjpPYmplY3QqKSB7IH0KKyAgICB2aXJ0
dWFsIHZvaWQgZGlkUnVuSW5zZWN1cmVDb250ZW50Rm9yRnJhbWUoV2ViS2l0OjpXZWJQYWdlUHJv
eHkmLCBXZWJLaXQ6OldlYkZyYW1lUHJveHkmLCBBUEk6Ok9iamVjdCopIHsgfQorICAgIHZpcnR1
YWwgdm9pZCBkaWREZXRlY3RYU1NGb3JGcmFtZShXZWJLaXQ6OldlYlBhZ2VQcm94eSYsIFdlYktp
dDo6V2ViRnJhbWVQcm94eSYsIEFQSTo6T2JqZWN0KikgeyB9CiAKLSAgICB2aXJ0dWFsIHZvaWQg
ZGlkTGF5b3V0KFdlYktpdDo6V2ViUGFnZVByb3h5KiwgV2ViQ29yZTo6TGF5b3V0TWlsZXN0b25l
cywgQVBJOjpPYmplY3QqKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlkTGF5b3V0KFdlYktpdDo6
V2ViUGFnZVByb3h5JiwgV2ViQ29yZTo6TGF5b3V0TWlsZXN0b25lcywgQVBJOjpPYmplY3QqKSB7
IH0KICAgICAKLSAgICB2aXJ0dWFsIGJvb2wgY2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rp
b25TcGFjZUluRnJhbWUoV2ViS2l0OjpXZWJQYWdlUHJveHkqLCBXZWJLaXQ6OldlYkZyYW1lUHJv
eHkqLCBXZWJLaXQ6OldlYlByb3RlY3Rpb25TcGFjZSopIHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAg
dmlydHVhbCB2b2lkIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUluRnJhbWUoV2Vi
S2l0OjpXZWJQYWdlUHJveHkqLCBXZWJLaXQ6OldlYkZyYW1lUHJveHkqLCBXZWJLaXQ6OkF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkqKSB7IH0KKyAgICB2aXJ0dWFsIGJvb2wgY2FuQXV0aGVu
dGljYXRlQWdhaW5zdFByb3RlY3Rpb25TcGFjZUluRnJhbWUoV2ViS2l0OjpXZWJQYWdlUHJveHkm
LCBXZWJLaXQ6OldlYkZyYW1lUHJveHkmLCBXZWJLaXQ6OldlYlByb3RlY3Rpb25TcGFjZSopIHsg
cmV0dXJuIGZhbHNlOyB9CisgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVBdXRoZW50aWNhdGlv
bkNoYWxsZW5nZUluRnJhbWUoV2ViS2l0OjpXZWJQYWdlUHJveHkmLCBXZWJLaXQ6OldlYkZyYW1l
UHJveHkmLCBXZWJLaXQ6OkF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkqKSB7IH0KIAotICAg
IHZpcnR1YWwgdm9pZCBkaWRTdGFydFByb2dyZXNzKFdlYktpdDo6V2ViUGFnZVByb3h5KikgeyB9
Ci0gICAgdmlydHVhbCB2b2lkIGRpZENoYW5nZVByb2dyZXNzKFdlYktpdDo6V2ViUGFnZVByb3h5
KikgeyB9Ci0gICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaFByb2dyZXNzKFdlYktpdDo6V2ViUGFn
ZVByb3h5KikgeyB9CisgICAgdmlydHVhbCB2b2lkIGRpZFN0YXJ0UHJvZ3Jlc3MoV2ViS2l0OjpX
ZWJQYWdlUHJveHkmKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hhbmdlUHJvZ3Jlc3MoV2Vi
S2l0OjpXZWJQYWdlUHJveHkmKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoUHJvZ3Jl
c3MoV2ViS2l0OjpXZWJQYWdlUHJveHkmKSB7IH0KIAogICAgIC8vIEZJWE1FOiBUaGVzZSB0aHJl
ZSBmdW5jdGlvbnMgc2hvdWxkIG5vdCBiZSBwYXJ0IG9mIHRoaXMgY2xpZW50LgotICAgIHZpcnR1
YWwgdm9pZCBwcm9jZXNzRGlkQmVjb21lVW5yZXNwb25zaXZlKFdlYktpdDo6V2ViUGFnZVByb3h5
KikgeyB9Ci0gICAgdmlydHVhbCB2b2lkIGludGVyYWN0aW9uT2NjdXJyZWRXaGlsZVByb2Nlc3NV
bnJlc3BvbnNpdmUoV2ViS2l0OjpXZWJQYWdlUHJveHkqKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQg
cHJvY2Vzc0RpZEJlY29tZVJlc3BvbnNpdmUoV2ViS2l0OjpXZWJQYWdlUHJveHkqKSB7IH0KLSAg
ICB2aXJ0dWFsIHZvaWQgcHJvY2Vzc0RpZENyYXNoKFdlYktpdDo6V2ViUGFnZVByb3h5KikgeyB9
Ci0KLSAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hhbmdlQmFja0ZvcndhcmRMaXN0KFdlYktpdDo6V2Vi
UGFnZVByb3h5KiwgV2ViS2l0OjpXZWJCYWNrRm9yd2FyZExpc3RJdGVtKiwgVmVjdG9yPFJlZlB0
cjxXZWJLaXQ6OldlYkJhY2tGb3J3YXJkTGlzdEl0ZW0+PikgeyB9Ci0gICAgdmlydHVhbCBib29s
IHNob3VsZEtlZXBDdXJyZW50QmFja0ZvcndhcmRMaXN0SXRlbUluTGlzdChXZWJLaXQ6OldlYlBh
Z2VQcm94eSosIFdlYktpdDo6V2ViQmFja0ZvcndhcmRMaXN0SXRlbSopIHsgcmV0dXJuIHRydWU7
IH0KLSAgICB2aXJ0dWFsIHZvaWQgd2lsbEdvVG9CYWNrRm9yd2FyZExpc3RJdGVtKFdlYktpdDo6
V2ViUGFnZVByb3h5KiwgV2ViS2l0OjpXZWJCYWNrRm9yd2FyZExpc3RJdGVtKiwgQVBJOjpPYmpl
Y3QqKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgcHJvY2Vzc0RpZEJlY29tZVVucmVzcG9uc2l2ZShX
ZWJLaXQ6OldlYlBhZ2VQcm94eSYpIHsgfQorICAgIHZpcnR1YWwgdm9pZCBpbnRlcmFjdGlvbk9j
Y3VycmVkV2hpbGVQcm9jZXNzVW5yZXNwb25zaXZlKFdlYktpdDo6V2ViUGFnZVByb3h5JikgeyB9
CisgICAgdmlydHVhbCB2b2lkIHByb2Nlc3NEaWRCZWNvbWVSZXNwb25zaXZlKFdlYktpdDo6V2Vi
UGFnZVByb3h5JikgeyB9CisgICAgdmlydHVhbCB2b2lkIHByb2Nlc3NEaWRDcmFzaChXZWJLaXQ6
OldlYlBhZ2VQcm94eSYpIHsgfQorCisgICAgdmlydHVhbCB2b2lkIGRpZENoYW5nZUJhY2tGb3J3
YXJkTGlzdChXZWJLaXQ6OldlYlBhZ2VQcm94eSYsIFdlYktpdDo6V2ViQmFja0ZvcndhcmRMaXN0
SXRlbSosIFZlY3RvcjxSZWZQdHI8V2ViS2l0OjpXZWJCYWNrRm9yd2FyZExpc3RJdGVtPj4pIHsg
fQorICAgIHZpcnR1YWwgYm9vbCBzaG91bGRLZWVwQ3VycmVudEJhY2tGb3J3YXJkTGlzdEl0ZW1J
bkxpc3QoV2ViS2l0OjpXZWJQYWdlUHJveHkmLCBXZWJLaXQ6OldlYkJhY2tGb3J3YXJkTGlzdEl0
ZW0qKSB7IHJldHVybiB0cnVlOyB9CisgICAgdmlydHVhbCB2b2lkIHdpbGxHb1RvQmFja0Zvcndh
cmRMaXN0SXRlbShXZWJLaXQ6OldlYlBhZ2VQcm94eSYsIFdlYktpdDo6V2ViQmFja0ZvcndhcmRM
aXN0SXRlbSosIEFQSTo6T2JqZWN0KikgeyB9CiAKICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8RGF0
YT4gd2ViQ3J5cHRvTWFzdGVyS2V5KFdlYktpdDo6V2ViUGFnZVByb3h5JikgeyByZXR1cm4gbnVs
bHB0cjsgfQogCkBAIC0xMDMsMTQgKzEwMywxNCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lk
IGRpZFVwZGF0ZUhpc3RvcnlUaXRsZShXZWJLaXQ6OldlYlBhZ2VQcm94eSYsIGNvbnN0IFdURjo6
U3RyaW5nJiwgY29uc3QgV1RGOjpTdHJpbmcmLCBXZWJLaXQ6OldlYkZyYW1lUHJveHkmKSB7IH0K
IAogI2lmIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQotICAgIHZpcnR1YWwgV2ViS2l0OjpQ
bHVnaW5Nb2R1bGVMb2FkUG9saWN5IHBsdWdpbkxvYWRQb2xpY3koV2ViS2l0OjpXZWJQYWdlUHJv
eHkqLCBXZWJLaXQ6OlBsdWdpbk1vZHVsZUxvYWRQb2xpY3kgY3VycmVudFBsdWdpbkxvYWRQb2xp
Y3ksIEFQSTo6RGljdGlvbmFyeSosIFdURjo6U3RyaW5nJiAvKiB1bmF2YWlsYWJpbGl0eURlc2Ny
aXB0aW9uICovKSB7IHJldHVybiBjdXJyZW50UGx1Z2luTG9hZFBvbGljeTsgfQotICAgIHZpcnR1
YWwgdm9pZCBkaWRGYWlsVG9Jbml0aWFsaXplUGx1Z2luKFdlYktpdDo6V2ViUGFnZVByb3h5Kiwg
QVBJOjpEaWN0aW9uYXJ5KikgeyB9Ci0gICAgdmlydHVhbCB2b2lkIGRpZEJsb2NrSW5zZWN1cmVQ
bHVnaW5WZXJzaW9uKFdlYktpdDo6V2ViUGFnZVByb3h5KiwgQVBJOjpEaWN0aW9uYXJ5KikgeyB9
CisgICAgdmlydHVhbCBXZWJLaXQ6OlBsdWdpbk1vZHVsZUxvYWRQb2xpY3kgcGx1Z2luTG9hZFBv
bGljeShXZWJLaXQ6OldlYlBhZ2VQcm94eSYsIFdlYktpdDo6UGx1Z2luTW9kdWxlTG9hZFBvbGlj
eSBjdXJyZW50UGx1Z2luTG9hZFBvbGljeSwgQVBJOjpEaWN0aW9uYXJ5KiwgV1RGOjpTdHJpbmcm
IC8qIHVuYXZhaWxhYmlsaXR5RGVzY3JpcHRpb24gKi8pIHsgcmV0dXJuIGN1cnJlbnRQbHVnaW5M
b2FkUG9saWN5OyB9CisgICAgdmlydHVhbCB2b2lkIGRpZEZhaWxUb0luaXRpYWxpemVQbHVnaW4o
V2ViS2l0OjpXZWJQYWdlUHJveHkmLCBBUEk6OkRpY3Rpb25hcnkqKSB7IH0KKyAgICB2aXJ0dWFs
IHZvaWQgZGlkQmxvY2tJbnNlY3VyZVBsdWdpblZlcnNpb24oV2ViS2l0OjpXZWJQYWdlUHJveHkm
LCBBUEk6OkRpY3Rpb25hcnkqKSB7IH0KICNlbmRpZiAvLyBFTkFCTEUoTkVUU0NBUEVfUExVR0lO
X0FQSSkKIAogI2lmIEVOQUJMRShXRUJHTCkKLSAgICB2aXJ0dWFsIFdlYkNvcmU6OldlYkdMTG9h
ZFBvbGljeSB3ZWJHTExvYWRQb2xpY3koV2ViS2l0OjpXZWJQYWdlUHJveHkqLCBjb25zdCBXVEY6
OlN0cmluZyYpIGNvbnN0IHsgcmV0dXJuIFdlYkNvcmU6OldlYkdMTG9hZFBvbGljeTo6V2ViR0xB
bGxvd0NyZWF0aW9uOyB9Ci0gICAgdmlydHVhbCBXZWJDb3JlOjpXZWJHTExvYWRQb2xpY3kgcmVz
b2x2ZVdlYkdMTG9hZFBvbGljeShXZWJLaXQ6OldlYlBhZ2VQcm94eSosIGNvbnN0IFdURjo6U3Ry
aW5nJikgY29uc3QgeyByZXR1cm4gV2ViQ29yZTo6V2ViR0xMb2FkUG9saWN5OjpXZWJHTEFsbG93
Q3JlYXRpb247IH0KKyAgICB2aXJ0dWFsIFdlYkNvcmU6OldlYkdMTG9hZFBvbGljeSB3ZWJHTExv
YWRQb2xpY3koV2ViS2l0OjpXZWJQYWdlUHJveHkmLCBjb25zdCBXVEY6OlN0cmluZyYpIGNvbnN0
IHsgcmV0dXJuIFdlYkNvcmU6OldlYkdMTG9hZFBvbGljeTo6V2ViR0xBbGxvd0NyZWF0aW9uOyB9
CisgICAgdmlydHVhbCBXZWJDb3JlOjpXZWJHTExvYWRQb2xpY3kgcmVzb2x2ZVdlYkdMTG9hZFBv
bGljeShXZWJLaXQ6OldlYlBhZ2VQcm94eSYsIGNvbnN0IFdURjo6U3RyaW5nJikgY29uc3QgeyBy
ZXR1cm4gV2ViQ29yZTo6V2ViR0xMb2FkUG9saWN5OjpXZWJHTEFsbG93Q3JlYXRpb247IH0KICNl
bmRpZiAvLyBFTkFCTEUoV0VCR0wpCiAKICNpZiBVU0UoUVVJQ0tfTE9PSykKSW5kZXg6IFNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCj09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIFNvdXJj
ZS9XZWJLaXQyL1VJUHJvY2Vzcy9BUEkvQy9XS1BhZ2UuY3BwCShyZXZpc2lvbiAxNzgzNjQpCisr
KyBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQVBJL0MvV0tQYWdlLmNwcAkod29ya2luZyBjb3B5
KQpAQCAtNzg1LDIwNyArNzg1LDIwNyBAQCB2b2lkIFdLUGFnZVNldFBhZ2VMb2FkZXJDbGllbnQo
V0tQYWdlUmVmCiAgICAgICAgIH0KIAogICAgIHByaXZhdGU6Ci0gICAgICAgIHZpcnR1YWwgdm9p
ZCBkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKFdlYlBhZ2VQcm94eSogcGFnZSwgV2Vi
RnJhbWVQcm94eSogZnJhbWUsIHVpbnQ2NF90LCBBUEk6Ok9iamVjdCogdXNlckRhdGEpIG92ZXJy
aWRlCisgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1l
KFdlYlBhZ2VQcm94eSYgcGFnZSwgV2ViRnJhbWVQcm94eSYgZnJhbWUsIEFQSTo6TmF2aWdhdGlv
biosIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSkgb3ZlcnJpZGUKICAgICAgICAgewogICAgICAgICAg
ICAgaWYgKCFtX2NsaWVudC5kaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKQogICAgICAg
ICAgICAgICAgIHJldHVybjsKIAotICAgICAgICAgICAgbV9jbGllbnQuZGlkU3RhcnRQcm92aXNp
b25hbExvYWRGb3JGcmFtZSh0b0FQSShwYWdlKSwgdG9BUEkoZnJhbWUpLCB0b0FQSSh1c2VyRGF0
YSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CisgICAgICAgICAgICBtX2NsaWVudC5kaWRT
dGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKHRvQVBJKCZwYWdlKSwgdG9BUEkoJmZyYW1lKSwg
dG9BUEkodXNlckRhdGEpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwogICAgICAgICB9CiAK
LSAgICAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lv
bmFsTG9hZEZvckZyYW1lKFdlYlBhZ2VQcm94eSogcGFnZSwgV2ViRnJhbWVQcm94eSogZnJhbWUs
IHVpbnQ2NF90LCBBUEk6Ok9iamVjdCogdXNlckRhdGEpIG92ZXJyaWRlCisgICAgICAgIHZpcnR1
YWwgdm9pZCBkaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWRGb3JGcmFt
ZShXZWJQYWdlUHJveHkmIHBhZ2UsIFdlYkZyYW1lUHJveHkmIGZyYW1lLCBBUEk6Ok5hdmlnYXRp
b24qLCBBUEk6Ok9iamVjdCogdXNlckRhdGEpIG92ZXJyaWRlCiAgICAgICAgIHsKICAgICAgICAg
ICAgIGlmICghbV9jbGllbnQuZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxM
b2FkRm9yRnJhbWUpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgICAgICBtX2Ns
aWVudC5kaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92aXNpb25hbExvYWRGb3JGcmFtZSh0
b0FQSShwYWdlKSwgdG9BUEkoZnJhbWUpLCB0b0FQSSh1c2VyRGF0YSksIG1fY2xpZW50LmJhc2Uu
Y2xpZW50SW5mbyk7CisgICAgICAgICAgICBtX2NsaWVudC5kaWRSZWNlaXZlU2VydmVyUmVkaXJl
Y3RGb3JQcm92aXNpb25hbExvYWRGb3JGcmFtZSh0b0FQSSgmcGFnZSksIHRvQVBJKCZmcmFtZSks
IHRvQVBJKHVzZXJEYXRhKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKICAgICAgICAgfQog
Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsUHJvdmlzaW9uYWxMb2FkV2l0aEVycm9yRm9y
RnJhbWUoV2ViUGFnZVByb3h5KiBwYWdlLCBXZWJGcmFtZVByb3h5KiBmcmFtZSwgdWludDY0X3Qs
IGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9yLCBBUEk6Ok9iamVjdCogdXNlckRhdGEpIG92ZXJy
aWRlCisgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsUHJvdmlzaW9uYWxMb2FkV2l0aEVycm9y
Rm9yRnJhbWUoV2ViUGFnZVByb3h5JiBwYWdlLCBXZWJGcmFtZVByb3h5JiBmcmFtZSwgQVBJOjpO
YXZpZ2F0aW9uKiwgY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IsIEFQSTo6T2JqZWN0KiB1c2Vy
RGF0YSkgb3ZlcnJpZGUKICAgICAgICAgewogICAgICAgICAgICAgaWYgKCFtX2NsaWVudC5kaWRG
YWlsUHJvdmlzaW9uYWxMb2FkV2l0aEVycm9yRm9yRnJhbWUpCiAgICAgICAgICAgICAgICAgcmV0
dXJuOwogCi0gICAgICAgICAgICBtX2NsaWVudC5kaWRGYWlsUHJvdmlzaW9uYWxMb2FkV2l0aEVy
cm9yRm9yRnJhbWUodG9BUEkocGFnZSksIHRvQVBJKGZyYW1lKSwgdG9BUEkoZXJyb3IpLCB0b0FQ
SSh1c2VyRGF0YSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CisgICAgICAgICAgICBtX2Ns
aWVudC5kaWRGYWlsUHJvdmlzaW9uYWxMb2FkV2l0aEVycm9yRm9yRnJhbWUodG9BUEkoJnBhZ2Up
LCB0b0FQSSgmZnJhbWUpLCB0b0FQSShlcnJvciksIHRvQVBJKHVzZXJEYXRhKSwgbV9jbGllbnQu
YmFzZS5jbGllbnRJbmZvKTsKICAgICAgICAgfQogCi0gICAgICAgIHZpcnR1YWwgdm9pZCBkaWRD
b21taXRMb2FkRm9yRnJhbWUoV2ViUGFnZVByb3h5KiBwYWdlLCBXZWJGcmFtZVByb3h5KiBmcmFt
ZSwgdWludDY0X3QsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSkgb3ZlcnJpZGUKKyAgICAgICAgdmly
dHVhbCB2b2lkIGRpZENvbW1pdExvYWRGb3JGcmFtZShXZWJQYWdlUHJveHkmIHBhZ2UsIFdlYkZy
YW1lUHJveHkmIGZyYW1lLCBBUEk6Ok5hdmlnYXRpb24qLCBBUEk6Ok9iamVjdCogdXNlckRhdGEp
IG92ZXJyaWRlCiAgICAgICAgIHsKICAgICAgICAgICAgIGlmICghbV9jbGllbnQuZGlkQ29tbWl0
TG9hZEZvckZyYW1lKQogICAgICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICAgICAgbV9j
bGllbnQuZGlkQ29tbWl0TG9hZEZvckZyYW1lKHRvQVBJKHBhZ2UpLCB0b0FQSShmcmFtZSksIHRv
QVBJKHVzZXJEYXRhKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKKyAgICAgICAgICAgIG1f
Y2xpZW50LmRpZENvbW1pdExvYWRGb3JGcmFtZSh0b0FQSSgmcGFnZSksIHRvQVBJKCZmcmFtZSks
IHRvQVBJKHVzZXJEYXRhKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKICAgICAgICAgfQog
Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hEb2N1bWVudExvYWRGb3JGcmFtZShXZWJQ
YWdlUHJveHkqIHBhZ2UsIFdlYkZyYW1lUHJveHkqIGZyYW1lLCB1aW50NjRfdCwgQVBJOjpPYmpl
Y3QqIHVzZXJEYXRhKSBvdmVycmlkZQorICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoRG9j
dW1lbnRMb2FkRm9yRnJhbWUoV2ViUGFnZVByb3h5JiBwYWdlLCBXZWJGcmFtZVByb3h5JiBmcmFt
ZSwgQVBJOjpOYXZpZ2F0aW9uKiwgQVBJOjpPYmplY3QqIHVzZXJEYXRhKSBvdmVycmlkZQogICAg
ICAgICB7CiAgICAgICAgICAgICBpZiAoIW1fY2xpZW50LmRpZEZpbmlzaERvY3VtZW50TG9hZEZv
ckZyYW1lKQogICAgICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICAgICAgbV9jbGllbnQu
ZGlkRmluaXNoRG9jdW1lbnRMb2FkRm9yRnJhbWUodG9BUEkocGFnZSksIHRvQVBJKGZyYW1lKSwg
dG9BUEkodXNlckRhdGEpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOworICAgICAgICAgICAg
bV9jbGllbnQuZGlkRmluaXNoRG9jdW1lbnRMb2FkRm9yRnJhbWUodG9BUEkoJnBhZ2UpLCB0b0FQ
SSgmZnJhbWUpLCB0b0FQSSh1c2VyRGF0YSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CiAg
ICAgICAgIH0KIAotICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoTG9hZEZvckZyYW1lKFdl
YlBhZ2VQcm94eSogcGFnZSwgV2ViRnJhbWVQcm94eSogZnJhbWUsIHVpbnQ2NF90LCBBUEk6Ok9i
amVjdCogdXNlckRhdGEpIG92ZXJyaWRlCisgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5pc2hM
b2FkRm9yRnJhbWUoV2ViUGFnZVByb3h5JiBwYWdlLCBXZWJGcmFtZVByb3h5JiBmcmFtZSwgQVBJ
OjpOYXZpZ2F0aW9uKiwgQVBJOjpPYmplY3QqIHVzZXJEYXRhKSBvdmVycmlkZQogICAgICAgICB7
CiAgICAgICAgICAgICBpZiAoIW1fY2xpZW50LmRpZEZpbmlzaExvYWRGb3JGcmFtZSkKICAgICAg
ICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgICAgIG1fY2xpZW50LmRpZEZpbmlzaExvYWRG
b3JGcmFtZSh0b0FQSShwYWdlKSwgdG9BUEkoZnJhbWUpLCB0b0FQSSh1c2VyRGF0YSksIG1fY2xp
ZW50LmJhc2UuY2xpZW50SW5mbyk7CisgICAgICAgICAgICBtX2NsaWVudC5kaWRGaW5pc2hMb2Fk
Rm9yRnJhbWUodG9BUEkoJnBhZ2UpLCB0b0FQSSgmZnJhbWUpLCB0b0FQSSh1c2VyRGF0YSksIG1f
Y2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CiAgICAgICAgIH0KIAotICAgICAgICB2aXJ0dWFsIHZv
aWQgZGlkRmFpbExvYWRXaXRoRXJyb3JGb3JGcmFtZShXZWJQYWdlUHJveHkqIHBhZ2UsIFdlYkZy
YW1lUHJveHkqIGZyYW1lLCB1aW50NjRfdCwgY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IsIEFQ
STo6T2JqZWN0KiB1c2VyRGF0YSkgb3ZlcnJpZGUKKyAgICAgICAgdmlydHVhbCB2b2lkIGRpZEZh
aWxMb2FkV2l0aEVycm9yRm9yRnJhbWUoV2ViUGFnZVByb3h5JiBwYWdlLCBXZWJGcmFtZVByb3h5
JiBmcmFtZSwgQVBJOjpOYXZpZ2F0aW9uKiwgY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IsIEFQ
STo6T2JqZWN0KiB1c2VyRGF0YSkgb3ZlcnJpZGUKICAgICAgICAgewogICAgICAgICAgICAgaWYg
KCFtX2NsaWVudC5kaWRGYWlsTG9hZFdpdGhFcnJvckZvckZyYW1lKQogICAgICAgICAgICAgICAg
IHJldHVybjsKIAotICAgICAgICAgICAgbV9jbGllbnQuZGlkRmFpbExvYWRXaXRoRXJyb3JGb3JG
cmFtZSh0b0FQSShwYWdlKSwgdG9BUEkoZnJhbWUpLCB0b0FQSShlcnJvciksIHRvQVBJKHVzZXJE
YXRhKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKKyAgICAgICAgICAgIG1fY2xpZW50LmRp
ZEZhaWxMb2FkV2l0aEVycm9yRm9yRnJhbWUodG9BUEkoJnBhZ2UpLCB0b0FQSSgmZnJhbWUpLCB0
b0FQSShlcnJvciksIHRvQVBJKHVzZXJEYXRhKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsK
ICAgICAgICAgfQogCi0gICAgICAgIHZpcnR1YWwgdm9pZCBkaWRTYW1lRG9jdW1lbnROYXZpZ2F0
aW9uRm9yRnJhbWUoV2ViUGFnZVByb3h5KiBwYWdlLCBXZWJGcmFtZVByb3h5KiBmcmFtZSwgdWlu
dDY0X3QsIFNhbWVEb2N1bWVudE5hdmlnYXRpb25UeXBlIHR5cGUsIEFQSTo6T2JqZWN0KiB1c2Vy
RGF0YSkgb3ZlcnJpZGUKKyAgICAgICAgdmlydHVhbCB2b2lkIGRpZFNhbWVEb2N1bWVudE5hdmln
YXRpb25Gb3JGcmFtZShXZWJQYWdlUHJveHkmIHBhZ2UsIFdlYkZyYW1lUHJveHkmIGZyYW1lLCBB
UEk6Ok5hdmlnYXRpb24qLCBTYW1lRG9jdW1lbnROYXZpZ2F0aW9uVHlwZSB0eXBlLCBBUEk6Ok9i
amVjdCogdXNlckRhdGEpIG92ZXJyaWRlCiAgICAgICAgIHsKICAgICAgICAgICAgIGlmICghbV9j
bGllbnQuZGlkU2FtZURvY3VtZW50TmF2aWdhdGlvbkZvckZyYW1lKQogICAgICAgICAgICAgICAg
IHJldHVybjsKIAotICAgICAgICAgICAgbV9jbGllbnQuZGlkU2FtZURvY3VtZW50TmF2aWdhdGlv
bkZvckZyYW1lKHRvQVBJKHBhZ2UpLCB0b0FQSShmcmFtZSksIHRvQVBJKHR5cGUpLCB0b0FQSSh1
c2VyRGF0YSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CisgICAgICAgICAgICBtX2NsaWVu
dC5kaWRTYW1lRG9jdW1lbnROYXZpZ2F0aW9uRm9yRnJhbWUodG9BUEkoJnBhZ2UpLCB0b0FQSSgm
ZnJhbWUpLCB0b0FQSSh0eXBlKSwgdG9BUEkodXNlckRhdGEpLCBtX2NsaWVudC5iYXNlLmNsaWVu
dEluZm8pOwogICAgICAgICB9CiAKLSAgICAgICAgdmlydHVhbCB2b2lkIGRpZFJlY2VpdmVUaXRs
ZUZvckZyYW1lKFdlYlBhZ2VQcm94eSogcGFnZSwgY29uc3QgU3RyaW5nJiB0aXRsZSwgV2ViRnJh
bWVQcm94eSogZnJhbWUsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSkgb3ZlcnJpZGUKKyAgICAgICAg
dmlydHVhbCB2b2lkIGRpZFJlY2VpdmVUaXRsZUZvckZyYW1lKFdlYlBhZ2VQcm94eSYgcGFnZSwg
Y29uc3QgU3RyaW5nJiB0aXRsZSwgV2ViRnJhbWVQcm94eSYgZnJhbWUsIEFQSTo6T2JqZWN0KiB1
c2VyRGF0YSkgb3ZlcnJpZGUKICAgICAgICAgewogICAgICAgICAgICAgaWYgKCFtX2NsaWVudC5k
aWRSZWNlaXZlVGl0bGVGb3JGcmFtZSkKICAgICAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAg
ICAgICAgIG1fY2xpZW50LmRpZFJlY2VpdmVUaXRsZUZvckZyYW1lKHRvQVBJKHBhZ2UpLCB0b0FQ
SSh0aXRsZS5pbXBsKCkpLCB0b0FQSShmcmFtZSksIHRvQVBJKHVzZXJEYXRhKSwgbV9jbGllbnQu
YmFzZS5jbGllbnRJbmZvKTsKKyAgICAgICAgICAgIG1fY2xpZW50LmRpZFJlY2VpdmVUaXRsZUZv
ckZyYW1lKHRvQVBJKCZwYWdlKSwgdG9BUEkodGl0bGUuaW1wbCgpKSwgdG9BUEkoJmZyYW1lKSwg
dG9BUEkodXNlckRhdGEpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwogICAgICAgICB9CiAK
LSAgICAgICAgdmlydHVhbCB2b2lkIGRpZEZpcnN0TGF5b3V0Rm9yRnJhbWUoV2ViUGFnZVByb3h5
KiBwYWdlLCBXZWJGcmFtZVByb3h5KiBmcmFtZSwgQVBJOjpPYmplY3QqIHVzZXJEYXRhKSBvdmVy
cmlkZQorICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkRmlyc3RMYXlvdXRGb3JGcmFtZShXZWJQYWdl
UHJveHkmIHBhZ2UsIFdlYkZyYW1lUHJveHkmIGZyYW1lLCBBUEk6Ok9iamVjdCogdXNlckRhdGEp
IG92ZXJyaWRlCiAgICAgICAgIHsKICAgICAgICAgICAgIGlmICghbV9jbGllbnQuZGlkRmlyc3RM
YXlvdXRGb3JGcmFtZSkKICAgICAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgICAgIG1f
Y2xpZW50LmRpZEZpcnN0TGF5b3V0Rm9yRnJhbWUodG9BUEkocGFnZSksIHRvQVBJKGZyYW1lKSwg
dG9BUEkodXNlckRhdGEpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOworICAgICAgICAgICAg
bV9jbGllbnQuZGlkRmlyc3RMYXlvdXRGb3JGcmFtZSh0b0FQSSgmcGFnZSksIHRvQVBJKCZmcmFt
ZSksIHRvQVBJKHVzZXJEYXRhKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKICAgICAgICAg
fQogCi0gICAgICAgIHZpcnR1YWwgdm9pZCBkaWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRG
b3JGcmFtZShXZWJQYWdlUHJveHkqIHBhZ2UsIFdlYkZyYW1lUHJveHkqIGZyYW1lLCBBUEk6Ok9i
amVjdCogdXNlckRhdGEpIG92ZXJyaWRlCisgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRGaXJzdFZp
c3VhbGx5Tm9uRW1wdHlMYXlvdXRGb3JGcmFtZShXZWJQYWdlUHJveHkmIHBhZ2UsIFdlYkZyYW1l
UHJveHkmIGZyYW1lLCBBUEk6Ok9iamVjdCogdXNlckRhdGEpIG92ZXJyaWRlCiAgICAgICAgIHsK
ICAgICAgICAgICAgIGlmICghbV9jbGllbnQuZGlkRmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0
Rm9yRnJhbWUpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgICAgICBtX2NsaWVu
dC5kaWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRGb3JGcmFtZSh0b0FQSShwYWdlKSwgdG9B
UEkoZnJhbWUpLCB0b0FQSSh1c2VyRGF0YSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7Cisg
ICAgICAgICAgICBtX2NsaWVudC5kaWRGaXJzdFZpc3VhbGx5Tm9uRW1wdHlMYXlvdXRGb3JGcmFt
ZSh0b0FQSSgmcGFnZSksIHRvQVBJKCZmcmFtZSksIHRvQVBJKHVzZXJEYXRhKSwgbV9jbGllbnQu
YmFzZS5jbGllbnRJbmZvKTsKICAgICAgICAgfQogCi0gICAgICAgIHZpcnR1YWwgdm9pZCBkaWRM
YXlvdXQoV2ViUGFnZVByb3h5KiBwYWdlLCBMYXlvdXRNaWxlc3RvbmVzIG1pbGVzdG9uZXMsIEFQ
STo6T2JqZWN0KiB1c2VyRGF0YSkgb3ZlcnJpZGUKKyAgICAgICAgdmlydHVhbCB2b2lkIGRpZExh
eW91dChXZWJQYWdlUHJveHkmIHBhZ2UsIExheW91dE1pbGVzdG9uZXMgbWlsZXN0b25lcywgQVBJ
OjpPYmplY3QqIHVzZXJEYXRhKSBvdmVycmlkZQogICAgICAgICB7CiAgICAgICAgICAgICBpZiAo
IW1fY2xpZW50LmRpZExheW91dCkKICAgICAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAg
ICAgIG1fY2xpZW50LmRpZExheW91dCh0b0FQSShwYWdlKSwgdG9XS0xheW91dE1pbGVzdG9uZXMo
bWlsZXN0b25lcyksIHRvQVBJKHVzZXJEYXRhKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsK
KyAgICAgICAgICAgIG1fY2xpZW50LmRpZExheW91dCh0b0FQSSgmcGFnZSksIHRvV0tMYXlvdXRN
aWxlc3RvbmVzKG1pbGVzdG9uZXMpLCB0b0FQSSh1c2VyRGF0YSksIG1fY2xpZW50LmJhc2UuY2xp
ZW50SW5mbyk7CiAgICAgICAgIH0KIAotICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkUmVtb3ZlRnJh
bWVGcm9tSGllcmFyY2h5KFdlYlBhZ2VQcm94eSogcGFnZSwgV2ViRnJhbWVQcm94eSogZnJhbWUs
IEFQSTo6T2JqZWN0KiB1c2VyRGF0YSkgb3ZlcnJpZGUKKyAgICAgICAgdmlydHVhbCB2b2lkIGRp
ZFJlbW92ZUZyYW1lRnJvbUhpZXJhcmNoeShXZWJQYWdlUHJveHkmIHBhZ2UsIFdlYkZyYW1lUHJv
eHkmIGZyYW1lLCBBUEk6Ok9iamVjdCogdXNlckRhdGEpIG92ZXJyaWRlCiAgICAgICAgIHsKICAg
ICAgICAgICAgIGlmICghbV9jbGllbnQuZGlkUmVtb3ZlRnJhbWVGcm9tSGllcmFyY2h5KQogICAg
ICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICAgICAgbV9jbGllbnQuZGlkUmVtb3ZlRnJh
bWVGcm9tSGllcmFyY2h5KHRvQVBJKHBhZ2UpLCB0b0FQSShmcmFtZSksIHRvQVBJKHVzZXJEYXRh
KSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKKyAgICAgICAgICAgIG1fY2xpZW50LmRpZFJl
bW92ZUZyYW1lRnJvbUhpZXJhcmNoeSh0b0FQSSgmcGFnZSksIHRvQVBJKCZmcmFtZSksIHRvQVBJ
KHVzZXJEYXRhKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKICAgICAgICAgfQogCi0gICAg
ICAgIHZpcnR1YWwgdm9pZCBkaWREaXNwbGF5SW5zZWN1cmVDb250ZW50Rm9yRnJhbWUoV2ViUGFn
ZVByb3h5KiBwYWdlLCBXZWJGcmFtZVByb3h5KiBmcmFtZSwgQVBJOjpPYmplY3QqIHVzZXJEYXRh
KSBvdmVycmlkZQorICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkRGlzcGxheUluc2VjdXJlQ29udGVu
dEZvckZyYW1lKFdlYlBhZ2VQcm94eSYgcGFnZSwgV2ViRnJhbWVQcm94eSYgZnJhbWUsIEFQSTo6
T2JqZWN0KiB1c2VyRGF0YSkgb3ZlcnJpZGUKICAgICAgICAgewogICAgICAgICAgICAgaWYgKCFt
X2NsaWVudC5kaWREaXNwbGF5SW5zZWN1cmVDb250ZW50Rm9yRnJhbWUpCiAgICAgICAgICAgICAg
ICAgcmV0dXJuOwogCi0gICAgICAgICAgICBtX2NsaWVudC5kaWREaXNwbGF5SW5zZWN1cmVDb250
ZW50Rm9yRnJhbWUodG9BUEkocGFnZSksIHRvQVBJKGZyYW1lKSwgdG9BUEkodXNlckRhdGEpLCBt
X2NsaWVudC5iYXNlLmNsaWVudEluZm8pOworICAgICAgICAgICAgbV9jbGllbnQuZGlkRGlzcGxh
eUluc2VjdXJlQ29udGVudEZvckZyYW1lKHRvQVBJKCZwYWdlKSwgdG9BUEkoJmZyYW1lKSwgdG9B
UEkodXNlckRhdGEpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwogICAgICAgICB9CiAKLSAg
ICAgICAgdmlydHVhbCB2b2lkIGRpZFJ1bkluc2VjdXJlQ29udGVudEZvckZyYW1lKFdlYlBhZ2VQ
cm94eSogcGFnZSwgV2ViRnJhbWVQcm94eSogZnJhbWUsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSkg
b3ZlcnJpZGUKKyAgICAgICAgdmlydHVhbCB2b2lkIGRpZFJ1bkluc2VjdXJlQ29udGVudEZvckZy
YW1lKFdlYlBhZ2VQcm94eSYgcGFnZSwgV2ViRnJhbWVQcm94eSYgZnJhbWUsIEFQSTo6T2JqZWN0
KiB1c2VyRGF0YSkgb3ZlcnJpZGUKICAgICAgICAgewogICAgICAgICAgICAgaWYgKCFtX2NsaWVu
dC5kaWRSdW5JbnNlY3VyZUNvbnRlbnRGb3JGcmFtZSkKICAgICAgICAgICAgICAgICByZXR1cm47
CiAKLSAgICAgICAgICAgIG1fY2xpZW50LmRpZFJ1bkluc2VjdXJlQ29udGVudEZvckZyYW1lKHRv
QVBJKHBhZ2UpLCB0b0FQSShmcmFtZSksIHRvQVBJKHVzZXJEYXRhKSwgbV9jbGllbnQuYmFzZS5j
bGllbnRJbmZvKTsKKyAgICAgICAgICAgIG1fY2xpZW50LmRpZFJ1bkluc2VjdXJlQ29udGVudEZv
ckZyYW1lKHRvQVBJKCZwYWdlKSwgdG9BUEkoJmZyYW1lKSwgdG9BUEkodXNlckRhdGEpLCBtX2Ns
aWVudC5iYXNlLmNsaWVudEluZm8pOwogICAgICAgICB9CiAKLSAgICAgICAgdmlydHVhbCB2b2lk
IGRpZERldGVjdFhTU0ZvckZyYW1lKFdlYlBhZ2VQcm94eSogcGFnZSwgV2ViRnJhbWVQcm94eSog
ZnJhbWUsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSkgb3ZlcnJpZGUKKyAgICAgICAgdmlydHVhbCB2
b2lkIGRpZERldGVjdFhTU0ZvckZyYW1lKFdlYlBhZ2VQcm94eSYgcGFnZSwgV2ViRnJhbWVQcm94
eSYgZnJhbWUsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSkgb3ZlcnJpZGUKICAgICAgICAgewogICAg
ICAgICAgICAgaWYgKCFtX2NsaWVudC5kaWREZXRlY3RYU1NGb3JGcmFtZSkKICAgICAgICAgICAg
ICAgICByZXR1cm47CiAKLSAgICAgICAgICAgIG1fY2xpZW50LmRpZERldGVjdFhTU0ZvckZyYW1l
KHRvQVBJKHBhZ2UpLCB0b0FQSShmcmFtZSksIHRvQVBJKHVzZXJEYXRhKSwgbV9jbGllbnQuYmFz
ZS5jbGllbnRJbmZvKTsKKyAgICAgICAgICAgIG1fY2xpZW50LmRpZERldGVjdFhTU0ZvckZyYW1l
KHRvQVBJKCZwYWdlKSwgdG9BUEkoJmZyYW1lKSwgdG9BUEkodXNlckRhdGEpLCBtX2NsaWVudC5i
YXNlLmNsaWVudEluZm8pOwogICAgICAgICB9CiAKLSAgICAgICAgdmlydHVhbCBib29sIGNhbkF1
dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2VJbkZyYW1lKFdlYlBhZ2VQcm94eSogcGFn
ZSwgV2ViRnJhbWVQcm94eSogZnJhbWUsIFdlYlByb3RlY3Rpb25TcGFjZSogcHJvdGVjdGlvblNw
YWNlKSBvdmVycmlkZQorICAgICAgICB2aXJ0dWFsIGJvb2wgY2FuQXV0aGVudGljYXRlQWdhaW5z
dFByb3RlY3Rpb25TcGFjZUluRnJhbWUoV2ViUGFnZVByb3h5JiBwYWdlLCBXZWJGcmFtZVByb3h5
JiBmcmFtZSwgV2ViUHJvdGVjdGlvblNwYWNlKiBwcm90ZWN0aW9uU3BhY2UpIG92ZXJyaWRlCiAg
ICAgICAgIHsKICAgICAgICAgICAgIGlmICghbV9jbGllbnQuY2FuQXV0aGVudGljYXRlQWdhaW5z
dFByb3RlY3Rpb25TcGFjZUluRnJhbWUpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwog
Ci0gICAgICAgICAgICByZXR1cm4gbV9jbGllbnQuY2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3Rl
Y3Rpb25TcGFjZUluRnJhbWUodG9BUEkocGFnZSksIHRvQVBJKGZyYW1lKSwgdG9BUEkocHJvdGVj
dGlvblNwYWNlKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKKyAgICAgICAgICAgIHJldHVy
biBtX2NsaWVudC5jYW5BdXRoZW50aWNhdGVBZ2FpbnN0UHJvdGVjdGlvblNwYWNlSW5GcmFtZSh0
b0FQSSgmcGFnZSksIHRvQVBJKCZmcmFtZSksIHRvQVBJKHByb3RlY3Rpb25TcGFjZSksIG1fY2xp
ZW50LmJhc2UuY2xpZW50SW5mbyk7CiAgICAgICAgIH0KIAotICAgICAgICB2aXJ0dWFsIHZvaWQg
ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlSW5GcmFtZShXZWJQYWdlUHJveHkqIHBh
Z2UsIFdlYkZyYW1lUHJveHkqIGZyYW1lLCBBdXRoZW50aWNhdGlvbkNoYWxsZW5nZVByb3h5KiBh
dXRoZW50aWNhdGlvbkNoYWxsZW5nZSkgb3ZlcnJpZGUKKyAgICAgICAgdmlydHVhbCB2b2lkIGRp
ZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUluRnJhbWUoV2ViUGFnZVByb3h5JiBwYWdl
LCBXZWJGcmFtZVByb3h5JiBmcmFtZSwgQXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eSogYXV0
aGVudGljYXRpb25DaGFsbGVuZ2UpIG92ZXJyaWRlCiAgICAgICAgIHsKICAgICAgICAgICAgIGlm
ICghbV9jbGllbnQuZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlSW5GcmFtZSkKICAg
ICAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAgICAgIG1fY2xpZW50LmRpZFJlY2VpdmVB
dXRoZW50aWNhdGlvbkNoYWxsZW5nZUluRnJhbWUodG9BUEkocGFnZSksIHRvQVBJKGZyYW1lKSwg
dG9BUEkoYXV0aGVudGljYXRpb25DaGFsbGVuZ2UpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8p
OworICAgICAgICAgICAgbV9jbGllbnQuZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdl
SW5GcmFtZSh0b0FQSSgmcGFnZSksIHRvQVBJKCZmcmFtZSksIHRvQVBJKGF1dGhlbnRpY2F0aW9u
Q2hhbGxlbmdlKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKICAgICAgICAgfQogCi0gICAg
ICAgIHZpcnR1YWwgdm9pZCBkaWRTdGFydFByb2dyZXNzKFdlYlBhZ2VQcm94eSogcGFnZSkgb3Zl
cnJpZGUKKyAgICAgICAgdmlydHVhbCB2b2lkIGRpZFN0YXJ0UHJvZ3Jlc3MoV2ViUGFnZVByb3h5
JiBwYWdlKSBvdmVycmlkZQogICAgICAgICB7CiAgICAgICAgICAgICBpZiAoIW1fY2xpZW50LmRp
ZFN0YXJ0UHJvZ3Jlc3MpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgICAgICBt
X2NsaWVudC5kaWRTdGFydFByb2dyZXNzKHRvQVBJKHBhZ2UpLCBtX2NsaWVudC5iYXNlLmNsaWVu
dEluZm8pOworICAgICAgICAgICAgbV9jbGllbnQuZGlkU3RhcnRQcm9ncmVzcyh0b0FQSSgmcGFn
ZSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CiAgICAgICAgIH0KIAotICAgICAgICB2aXJ0
dWFsIHZvaWQgZGlkQ2hhbmdlUHJvZ3Jlc3MoV2ViUGFnZVByb3h5KiBwYWdlKSBvdmVycmlkZQor
ICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hhbmdlUHJvZ3Jlc3MoV2ViUGFnZVByb3h5JiBwYWdl
KSBvdmVycmlkZQogICAgICAgICB7CiAgICAgICAgICAgICBpZiAoIW1fY2xpZW50LmRpZENoYW5n
ZVByb2dyZXNzKQogICAgICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICAgICAgbV9jbGll
bnQuZGlkQ2hhbmdlUHJvZ3Jlc3ModG9BUEkocGFnZSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5m
byk7CisgICAgICAgICAgICBtX2NsaWVudC5kaWRDaGFuZ2VQcm9ncmVzcyh0b0FQSSgmcGFnZSks
IG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CiAgICAgICAgIH0KIAotICAgICAgICB2aXJ0dWFs
IHZvaWQgZGlkRmluaXNoUHJvZ3Jlc3MoV2ViUGFnZVByb3h5KiBwYWdlKSBvdmVycmlkZQorICAg
ICAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoUHJvZ3Jlc3MoV2ViUGFnZVByb3h5JiBwYWdlKSBv
dmVycmlkZQogICAgICAgICB7CiAgICAgICAgICAgICBpZiAoIW1fY2xpZW50LmRpZEZpbmlzaFBy
b2dyZXNzKQogICAgICAgICAgICAgICAgIHJldHVybjsKIAotICAgICAgICAgICAgbV9jbGllbnQu
ZGlkRmluaXNoUHJvZ3Jlc3ModG9BUEkocGFnZSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7
CisgICAgICAgICAgICBtX2NsaWVudC5kaWRGaW5pc2hQcm9ncmVzcyh0b0FQSSgmcGFnZSksIG1f
Y2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CiAgICAgICAgIH0KIAotICAgICAgICB2aXJ0dWFsIHZv
aWQgcHJvY2Vzc0RpZEJlY29tZVVucmVzcG9uc2l2ZShXZWJQYWdlUHJveHkqIHBhZ2UpIG92ZXJy
aWRlCisgICAgICAgIHZpcnR1YWwgdm9pZCBwcm9jZXNzRGlkQmVjb21lVW5yZXNwb25zaXZlKFdl
YlBhZ2VQcm94eSYgcGFnZSkgb3ZlcnJpZGUKICAgICAgICAgewogICAgICAgICAgICAgaWYgKCFt
X2NsaWVudC5wcm9jZXNzRGlkQmVjb21lVW5yZXNwb25zaXZlKQogICAgICAgICAgICAgICAgIHJl
dHVybjsKIAotICAgICAgICAgICAgbV9jbGllbnQucHJvY2Vzc0RpZEJlY29tZVVucmVzcG9uc2l2
ZSh0b0FQSShwYWdlKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKKyAgICAgICAgICAgIG1f
Y2xpZW50LnByb2Nlc3NEaWRCZWNvbWVVbnJlc3BvbnNpdmUodG9BUEkoJnBhZ2UpLCBtX2NsaWVu
dC5iYXNlLmNsaWVudEluZm8pOwogICAgICAgICB9CiAKLSAgICAgICAgdmlydHVhbCB2b2lkIGlu
dGVyYWN0aW9uT2NjdXJyZWRXaGlsZVByb2Nlc3NVbnJlc3BvbnNpdmUoV2ViUGFnZVByb3h5KiBw
YWdlKSBvdmVycmlkZQorICAgICAgICB2aXJ0dWFsIHZvaWQgaW50ZXJhY3Rpb25PY2N1cnJlZFdo
aWxlUHJvY2Vzc1VucmVzcG9uc2l2ZShXZWJQYWdlUHJveHkmIHBhZ2UpIG92ZXJyaWRlCiAgICAg
ICAgIHsKICAgICAgICAgICAgIGlmICghbV9jbGllbnQuaW50ZXJhY3Rpb25PY2N1cnJlZFdoaWxl
UHJvY2Vzc1VucmVzcG9uc2l2ZSkKICAgICAgICAgICAgICAgICByZXR1cm47CiAKLSAgICAgICAg
ICAgIG1fY2xpZW50LmludGVyYWN0aW9uT2NjdXJyZWRXaGlsZVByb2Nlc3NVbnJlc3BvbnNpdmUo
dG9BUEkocGFnZSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CisgICAgICAgICAgICBtX2Ns
aWVudC5pbnRlcmFjdGlvbk9jY3VycmVkV2hpbGVQcm9jZXNzVW5yZXNwb25zaXZlKHRvQVBJKCZw
YWdlKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKICAgICAgICAgfQogCi0gICAgICAgIHZp
cnR1YWwgdm9pZCBwcm9jZXNzRGlkQmVjb21lUmVzcG9uc2l2ZShXZWJQYWdlUHJveHkqIHBhZ2Up
IG92ZXJyaWRlCisgICAgICAgIHZpcnR1YWwgdm9pZCBwcm9jZXNzRGlkQmVjb21lUmVzcG9uc2l2
ZShXZWJQYWdlUHJveHkmIHBhZ2UpIG92ZXJyaWRlCiAgICAgICAgIHsKICAgICAgICAgICAgIGlm
ICghbV9jbGllbnQucHJvY2Vzc0RpZEJlY29tZVJlc3BvbnNpdmUpCiAgICAgICAgICAgICAgICAg
cmV0dXJuOwogCi0gICAgICAgICAgICBtX2NsaWVudC5wcm9jZXNzRGlkQmVjb21lUmVzcG9uc2l2
ZSh0b0FQSShwYWdlKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKKyAgICAgICAgICAgIG1f
Y2xpZW50LnByb2Nlc3NEaWRCZWNvbWVSZXNwb25zaXZlKHRvQVBJKCZwYWdlKSwgbV9jbGllbnQu
YmFzZS5jbGllbnRJbmZvKTsKICAgICAgICAgfQogCi0gICAgICAgIHZpcnR1YWwgdm9pZCBwcm9j
ZXNzRGlkQ3Jhc2goV2ViUGFnZVByb3h5KiBwYWdlKSBvdmVycmlkZQorICAgICAgICB2aXJ0dWFs
IHZvaWQgcHJvY2Vzc0RpZENyYXNoKFdlYlBhZ2VQcm94eSYgcGFnZSkgb3ZlcnJpZGUKICAgICAg
ICAgewogICAgICAgICAgICAgaWYgKCFtX2NsaWVudC5wcm9jZXNzRGlkQ3Jhc2gpCiAgICAgICAg
ICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgICAgICBtX2NsaWVudC5wcm9jZXNzRGlkQ3Jhc2go
dG9BUEkocGFnZSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CisgICAgICAgICAgICBtX2Ns
aWVudC5wcm9jZXNzRGlkQ3Jhc2godG9BUEkoJnBhZ2UpLCBtX2NsaWVudC5iYXNlLmNsaWVudElu
Zm8pOwogICAgICAgICB9CiAKLSAgICAgICAgdmlydHVhbCB2b2lkIGRpZENoYW5nZUJhY2tGb3J3
YXJkTGlzdChXZWJQYWdlUHJveHkqIHBhZ2UsIFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0qIGFkZGVk
SXRlbSwgVmVjdG9yPFJlZlB0cjxXZWJCYWNrRm9yd2FyZExpc3RJdGVtPj4gcmVtb3ZlZEl0ZW1z
KSBvdmVycmlkZQorICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkQ2hhbmdlQmFja0ZvcndhcmRMaXN0
KFdlYlBhZ2VQcm94eSYgcGFnZSwgV2ViQmFja0ZvcndhcmRMaXN0SXRlbSogYWRkZWRJdGVtLCBW
ZWN0b3I8UmVmUHRyPFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0+PiByZW1vdmVkSXRlbXMpIG92ZXJy
aWRlCiAgICAgICAgIHsKICAgICAgICAgICAgIGlmICghbV9jbGllbnQuZGlkQ2hhbmdlQmFja0Zv
cndhcmRMaXN0KQogICAgICAgICAgICAgICAgIHJldHVybjsKQEAgLTEwMDAsMjEgKzEwMDAsMjEg
QEAgdm9pZCBXS1BhZ2VTZXRQYWdlTG9hZGVyQ2xpZW50KFdLUGFnZVJlZgogICAgICAgICAgICAg
ICAgIHJlbW92ZWRJdGVtc0FycmF5ID0gQVBJOjpBcnJheTo6Y3JlYXRlKFdURjo6bW92ZShyZW1v
dmVkSXRlbXNWZWN0b3IpKTsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgbV9jbGllbnQu
ZGlkQ2hhbmdlQmFja0ZvcndhcmRMaXN0KHRvQVBJKHBhZ2UpLCB0b0FQSShhZGRlZEl0ZW0pLCB0
b0FQSShyZW1vdmVkSXRlbXNBcnJheS5nZXQoKSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7
CisgICAgICAgICAgICBtX2NsaWVudC5kaWRDaGFuZ2VCYWNrRm9yd2FyZExpc3QodG9BUEkoJnBh
Z2UpLCB0b0FQSShhZGRlZEl0ZW0pLCB0b0FQSShyZW1vdmVkSXRlbXNBcnJheS5nZXQoKSksIG1f
Y2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CiAgICAgICAgIH0KIAotICAgICAgICB2aXJ0dWFsIGJv
b2wgc2hvdWxkS2VlcEN1cnJlbnRCYWNrRm9yd2FyZExpc3RJdGVtSW5MaXN0KFdlYktpdDo6V2Vi
UGFnZVByb3h5KiBwYWdlLCBXZWJLaXQ6OldlYkJhY2tGb3J3YXJkTGlzdEl0ZW0qIGl0ZW0pIG92
ZXJyaWRlCisgICAgICAgIHZpcnR1YWwgYm9vbCBzaG91bGRLZWVwQ3VycmVudEJhY2tGb3J3YXJk
TGlzdEl0ZW1Jbkxpc3QoV2ViS2l0OjpXZWJQYWdlUHJveHkmIHBhZ2UsIFdlYktpdDo6V2ViQmFj
a0ZvcndhcmRMaXN0SXRlbSogaXRlbSkgb3ZlcnJpZGUKICAgICAgICAgewogICAgICAgICAgICAg
aWYgKCFtX2NsaWVudC5zaG91bGRLZWVwQ3VycmVudEJhY2tGb3J3YXJkTGlzdEl0ZW1Jbkxpc3Qp
CiAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICAgICAgICAgIHJldHVybiBtX2Ns
aWVudC5zaG91bGRLZWVwQ3VycmVudEJhY2tGb3J3YXJkTGlzdEl0ZW1Jbkxpc3QodG9BUEkocGFn
ZSksIHRvQVBJKGl0ZW0pLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOworICAgICAgICAgICAg
cmV0dXJuIG1fY2xpZW50LnNob3VsZEtlZXBDdXJyZW50QmFja0ZvcndhcmRMaXN0SXRlbUluTGlz
dCh0b0FQSSgmcGFnZSksIHRvQVBJKGl0ZW0pLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwog
ICAgICAgICB9CiAKLSAgICAgICAgdmlydHVhbCB2b2lkIHdpbGxHb1RvQmFja0ZvcndhcmRMaXN0
SXRlbShXZWJQYWdlUHJveHkqIHBhZ2UsIFdlYkJhY2tGb3J3YXJkTGlzdEl0ZW0qIGl0ZW0sIEFQ
STo6T2JqZWN0KiB1c2VyRGF0YSkgb3ZlcnJpZGUKKyAgICAgICAgdmlydHVhbCB2b2lkIHdpbGxH
b1RvQmFja0ZvcndhcmRMaXN0SXRlbShXZWJQYWdlUHJveHkmIHBhZ2UsIFdlYkJhY2tGb3J3YXJk
TGlzdEl0ZW0qIGl0ZW0sIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSkgb3ZlcnJpZGUKICAgICAgICAg
ewogICAgICAgICAgICAgaWYgKG1fY2xpZW50LndpbGxHb1RvQmFja0ZvcndhcmRMaXN0SXRlbSkK
LSAgICAgICAgICAgICAgICBtX2NsaWVudC53aWxsR29Ub0JhY2tGb3J3YXJkTGlzdEl0ZW0odG9B
UEkocGFnZSksIHRvQVBJKGl0ZW0pLCB0b0FQSSh1c2VyRGF0YSksIG1fY2xpZW50LmJhc2UuY2xp
ZW50SW5mbyk7CisgICAgICAgICAgICAgICAgbV9jbGllbnQud2lsbEdvVG9CYWNrRm9yd2FyZExp
c3RJdGVtKHRvQVBJKCZwYWdlKSwgdG9BUEkoaXRlbSksIHRvQVBJKHVzZXJEYXRhKSwgbV9jbGll
bnQuYmFzZS5jbGllbnRJbmZvKTsKICAgICAgICAgfQogCiAgICAgICAgIHZpcnR1YWwgUGFzc1Jl
ZlB0cjxBUEk6OkRhdGE+IHdlYkNyeXB0b01hc3RlcktleShXZWJQYWdlUHJveHkmIHBhZ2UpIG92
ZXJyaWRlCkBAIC0xMDIzLDM2ICsxMDIzLDM2IEBAIHZvaWQgV0tQYWdlU2V0UGFnZUxvYWRlckNs
aWVudChXS1BhZ2VSZWYKICAgICAgICAgfQogCiAjaWYgRU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9B
UEkpCi0gICAgICAgIHZpcnR1YWwgdm9pZCBkaWRGYWlsVG9Jbml0aWFsaXplUGx1Z2luKFdlYlBh
Z2VQcm94eSogcGFnZSwgQVBJOjpEaWN0aW9uYXJ5KiBwbHVnaW5JbmZvcm1hdGlvbikgb3ZlcnJp
ZGUKKyAgICAgICAgdmlydHVhbCB2b2lkIGRpZEZhaWxUb0luaXRpYWxpemVQbHVnaW4oV2ViUGFn
ZVByb3h5JiBwYWdlLCBBUEk6OkRpY3Rpb25hcnkqIHBsdWdpbkluZm9ybWF0aW9uKSBvdmVycmlk
ZQogICAgICAgICB7CiAgICAgICAgICAgICBpZiAobV9jbGllbnQuZGlkRmFpbFRvSW5pdGlhbGl6
ZVBsdWdpbl9kZXByZWNhdGVkRm9yVXNlV2l0aFYwKQotICAgICAgICAgICAgICAgIG1fY2xpZW50
LmRpZEZhaWxUb0luaXRpYWxpemVQbHVnaW5fZGVwcmVjYXRlZEZvclVzZVdpdGhWMCh0b0FQSShw
YWdlKSwgdG9BUEkocGx1Z2luSW5mb3JtYXRpb24tPmdldDxBUEk6OlN0cmluZz4ocGx1Z2luSW5m
b3JtYXRpb25NSU1FVHlwZUtleSgpKSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CisgICAg
ICAgICAgICAgICAgbV9jbGllbnQuZGlkRmFpbFRvSW5pdGlhbGl6ZVBsdWdpbl9kZXByZWNhdGVk
Rm9yVXNlV2l0aFYwKHRvQVBJKCZwYWdlKSwgdG9BUEkocGx1Z2luSW5mb3JtYXRpb24tPmdldDxB
UEk6OlN0cmluZz4ocGx1Z2luSW5mb3JtYXRpb25NSU1FVHlwZUtleSgpKSksIG1fY2xpZW50LmJh
c2UuY2xpZW50SW5mbyk7CiAKICAgICAgICAgICAgIGlmIChtX2NsaWVudC5wbHVnaW5EaWRGYWls
X2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjEpCi0gICAgICAgICAgICAgICAgbV9jbGllbnQucGx1Z2lu
RGlkRmFpbF9kZXByZWNhdGVkRm9yVXNlV2l0aFYxKHRvQVBJKHBhZ2UpLCBrV0tFcnJvckNvZGVD
YW5ub3RMb2FkUGx1Z0luLCB0b0FQSShwbHVnaW5JbmZvcm1hdGlvbi0+Z2V0PEFQSTo6U3RyaW5n
PihwbHVnaW5JbmZvcm1hdGlvbk1JTUVUeXBlS2V5KCkpKSwgMCwgMCwgbV9jbGllbnQuYmFzZS5j
bGllbnRJbmZvKTsKKyAgICAgICAgICAgICAgICBtX2NsaWVudC5wbHVnaW5EaWRGYWlsX2RlcHJl
Y2F0ZWRGb3JVc2VXaXRoVjEodG9BUEkoJnBhZ2UpLCBrV0tFcnJvckNvZGVDYW5ub3RMb2FkUGx1
Z0luLCB0b0FQSShwbHVnaW5JbmZvcm1hdGlvbi0+Z2V0PEFQSTo6U3RyaW5nPihwbHVnaW5JbmZv
cm1hdGlvbk1JTUVUeXBlS2V5KCkpKSwgMCwgMCwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsK
IAogICAgICAgICAgICAgaWYgKG1fY2xpZW50LnBsdWdpbkRpZEZhaWwpCi0gICAgICAgICAgICAg
ICAgbV9jbGllbnQucGx1Z2luRGlkRmFpbCh0b0FQSShwYWdlKSwga1dLRXJyb3JDb2RlQ2Fubm90
TG9hZFBsdWdJbiwgdG9BUEkocGx1Z2luSW5mb3JtYXRpb24pLCBtX2NsaWVudC5iYXNlLmNsaWVu
dEluZm8pOworICAgICAgICAgICAgICAgIG1fY2xpZW50LnBsdWdpbkRpZEZhaWwodG9BUEkoJnBh
Z2UpLCBrV0tFcnJvckNvZGVDYW5ub3RMb2FkUGx1Z0luLCB0b0FQSShwbHVnaW5JbmZvcm1hdGlv
biksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbyk7CiAgICAgICAgIH0KIAotICAgICAgICB2aXJ0
dWFsIHZvaWQgZGlkQmxvY2tJbnNlY3VyZVBsdWdpblZlcnNpb24oV2ViUGFnZVByb3h5KiBwYWdl
LCBBUEk6OkRpY3Rpb25hcnkqIHBsdWdpbkluZm9ybWF0aW9uKSBvdmVycmlkZQorICAgICAgICB2
aXJ0dWFsIHZvaWQgZGlkQmxvY2tJbnNlY3VyZVBsdWdpblZlcnNpb24oV2ViUGFnZVByb3h5JiBw
YWdlLCBBUEk6OkRpY3Rpb25hcnkqIHBsdWdpbkluZm9ybWF0aW9uKSBvdmVycmlkZQogICAgICAg
ICB7CiAgICAgICAgICAgICBpZiAobV9jbGllbnQucGx1Z2luRGlkRmFpbF9kZXByZWNhdGVkRm9y
VXNlV2l0aFYxKQotICAgICAgICAgICAgICAgIG1fY2xpZW50LnBsdWdpbkRpZEZhaWxfZGVwcmVj
YXRlZEZvclVzZVdpdGhWMSh0b0FQSShwYWdlKSwga1dLRXJyb3JDb2RlSW5zZWN1cmVQbHVnSW5W
ZXJzaW9uLCB0b0FQSShwbHVnaW5JbmZvcm1hdGlvbi0+Z2V0PEFQSTo6U3RyaW5nPihwbHVnaW5J
bmZvcm1hdGlvbk1JTUVUeXBlS2V5KCkpKSwgdG9BUEkocGx1Z2luSW5mb3JtYXRpb24tPmdldDxB
UEk6OlN0cmluZz4ocGx1Z2luSW5mb3JtYXRpb25CdW5kbGVJZGVudGlmaWVyS2V5KCkpKSwgdG9B
UEkocGx1Z2luSW5mb3JtYXRpb24tPmdldDxBUEk6OlN0cmluZz4ocGx1Z2luSW5mb3JtYXRpb25C
dW5kbGVWZXJzaW9uS2V5KCkpKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKKyAgICAgICAg
ICAgICAgICBtX2NsaWVudC5wbHVnaW5EaWRGYWlsX2RlcHJlY2F0ZWRGb3JVc2VXaXRoVjEodG9B
UEkoJnBhZ2UpLCBrV0tFcnJvckNvZGVJbnNlY3VyZVBsdWdJblZlcnNpb24sIHRvQVBJKHBsdWdp
bkluZm9ybWF0aW9uLT5nZXQ8QVBJOjpTdHJpbmc+KHBsdWdpbkluZm9ybWF0aW9uTUlNRVR5cGVL
ZXkoKSkpLCB0b0FQSShwbHVnaW5JbmZvcm1hdGlvbi0+Z2V0PEFQSTo6U3RyaW5nPihwbHVnaW5J
bmZvcm1hdGlvbkJ1bmRsZUlkZW50aWZpZXJLZXkoKSkpLCB0b0FQSShwbHVnaW5JbmZvcm1hdGlv
bi0+Z2V0PEFQSTo6U3RyaW5nPihwbHVnaW5JbmZvcm1hdGlvbkJ1bmRsZVZlcnNpb25LZXkoKSkp
LCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pOwogCiAgICAgICAgICAgICBpZiAobV9jbGllbnQu
cGx1Z2luRGlkRmFpbCkKLSAgICAgICAgICAgICAgICBtX2NsaWVudC5wbHVnaW5EaWRGYWlsKHRv
QVBJKHBhZ2UpLCBrV0tFcnJvckNvZGVJbnNlY3VyZVBsdWdJblZlcnNpb24sIHRvQVBJKHBsdWdp
bkluZm9ybWF0aW9uKSwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKTsKKyAgICAgICAgICAgICAg
ICBtX2NsaWVudC5wbHVnaW5EaWRGYWlsKHRvQVBJKCZwYWdlKSwga1dLRXJyb3JDb2RlSW5zZWN1
cmVQbHVnSW5WZXJzaW9uLCB0b0FQSShwbHVnaW5JbmZvcm1hdGlvbiksIG1fY2xpZW50LmJhc2Uu
Y2xpZW50SW5mbyk7CiAgICAgICAgIH0KIAotICAgICAgICB2aXJ0dWFsIFBsdWdpbk1vZHVsZUxv
YWRQb2xpY3kgcGx1Z2luTG9hZFBvbGljeShXZWJQYWdlUHJveHkqIHBhZ2UsIFBsdWdpbk1vZHVs
ZUxvYWRQb2xpY3kgY3VycmVudFBsdWdpbkxvYWRQb2xpY3ksIEFQSTo6RGljdGlvbmFyeSogcGx1
Z2luSW5mb3JtYXRpb24sIFN0cmluZyYgdW5hdmFpbGFiaWxpdHlEZXNjcmlwdGlvbikgb3ZlcnJp
ZGUKKyAgICAgICAgdmlydHVhbCBQbHVnaW5Nb2R1bGVMb2FkUG9saWN5IHBsdWdpbkxvYWRQb2xp
Y3koV2ViUGFnZVByb3h5JiBwYWdlLCBQbHVnaW5Nb2R1bGVMb2FkUG9saWN5IGN1cnJlbnRQbHVn
aW5Mb2FkUG9saWN5LCBBUEk6OkRpY3Rpb25hcnkqIHBsdWdpbkluZm9ybWF0aW9uLCBTdHJpbmcm
IHVuYXZhaWxhYmlsaXR5RGVzY3JpcHRpb24pIG92ZXJyaWRlCiAgICAgICAgIHsKICAgICAgICAg
ICAgIFdLU3RyaW5nUmVmIHVuYXZhaWxhYmlsaXR5RGVzY3JpcHRpb25PdXQgPSAwOwogICAgICAg
ICAgICAgUGx1Z2luTW9kdWxlTG9hZFBvbGljeSBsb2FkUG9saWN5ID0gY3VycmVudFBsdWdpbkxv
YWRQb2xpY3k7CiAKICAgICAgICAgICAgIGlmIChtX2NsaWVudC5wbHVnaW5Mb2FkUG9saWN5X2Rl
cHJlY2F0ZWRGb3JVc2VXaXRoVjIpCi0gICAgICAgICAgICAgICAgbG9hZFBvbGljeSA9IHRvUGx1
Z2luTW9kdWxlTG9hZFBvbGljeShtX2NsaWVudC5wbHVnaW5Mb2FkUG9saWN5X2RlcHJlY2F0ZWRG
b3JVc2VXaXRoVjIodG9BUEkocGFnZSksIHRvV0tQbHVnaW5Mb2FkUG9saWN5KGN1cnJlbnRQbHVn
aW5Mb2FkUG9saWN5KSwgdG9BUEkocGx1Z2luSW5mb3JtYXRpb24pLCBtX2NsaWVudC5iYXNlLmNs
aWVudEluZm8pKTsKKyAgICAgICAgICAgICAgICBsb2FkUG9saWN5ID0gdG9QbHVnaW5Nb2R1bGVM
b2FkUG9saWN5KG1fY2xpZW50LnBsdWdpbkxvYWRQb2xpY3lfZGVwcmVjYXRlZEZvclVzZVdpdGhW
Mih0b0FQSSgmcGFnZSksIHRvV0tQbHVnaW5Mb2FkUG9saWN5KGN1cnJlbnRQbHVnaW5Mb2FkUG9s
aWN5KSwgdG9BUEkocGx1Z2luSW5mb3JtYXRpb24pLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8p
KTsKICAgICAgICAgICAgIGVsc2UgaWYgKG1fY2xpZW50LnBsdWdpbkxvYWRQb2xpY3kpCi0gICAg
ICAgICAgICAgICAgbG9hZFBvbGljeSA9IHRvUGx1Z2luTW9kdWxlTG9hZFBvbGljeShtX2NsaWVu
dC5wbHVnaW5Mb2FkUG9saWN5KHRvQVBJKHBhZ2UpLCB0b1dLUGx1Z2luTG9hZFBvbGljeShjdXJy
ZW50UGx1Z2luTG9hZFBvbGljeSksIHRvQVBJKHBsdWdpbkluZm9ybWF0aW9uKSwgJnVuYXZhaWxh
YmlsaXR5RGVzY3JpcHRpb25PdXQsIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbykpOworICAgICAg
ICAgICAgICAgIGxvYWRQb2xpY3kgPSB0b1BsdWdpbk1vZHVsZUxvYWRQb2xpY3kobV9jbGllbnQu
cGx1Z2luTG9hZFBvbGljeSh0b0FQSSgmcGFnZSksIHRvV0tQbHVnaW5Mb2FkUG9saWN5KGN1cnJl
bnRQbHVnaW5Mb2FkUG9saWN5KSwgdG9BUEkocGx1Z2luSW5mb3JtYXRpb24pLCAmdW5hdmFpbGFi
aWxpdHlEZXNjcmlwdGlvbk91dCwgbV9jbGllbnQuYmFzZS5jbGllbnRJbmZvKSk7CiAKICAgICAg
ICAgICAgIGlmICh1bmF2YWlsYWJpbGl0eURlc2NyaXB0aW9uT3V0KSB7CiAgICAgICAgICAgICAg
ICAgUmVmUHRyPEFQSTo6U3RyaW5nPiB3ZWJVbmF2YWlsYWJpbGl0eURlc2NyaXB0aW9uID0gYWRv
cHRSZWYodG9JbXBsKHVuYXZhaWxhYmlsaXR5RGVzY3JpcHRpb25PdXQpKTsKQEAgLTEwNjQsMjIg
KzEwNjQsMjIgQEAgdm9pZCBXS1BhZ2VTZXRQYWdlTG9hZGVyQ2xpZW50KFdLUGFnZVJlZgogI2Vu
ZGlmIC8vIEVOQUJMRShORVRTQ0FQRV9QTFVHSU5fQVBJKQogCiAjaWYgRU5BQkxFKFdFQkdMKQot
ICAgICAgICB2aXJ0dWFsIFdlYkNvcmU6OldlYkdMTG9hZFBvbGljeSB3ZWJHTExvYWRQb2xpY3ko
V2ViUGFnZVByb3h5KiBwYWdlLCBjb25zdCBTdHJpbmcmIHVybCkgY29uc3Qgb3ZlcnJpZGUKKyAg
ICAgICAgdmlydHVhbCBXZWJDb3JlOjpXZWJHTExvYWRQb2xpY3kgd2ViR0xMb2FkUG9saWN5KFdl
YlBhZ2VQcm94eSYgcGFnZSwgY29uc3QgU3RyaW5nJiB1cmwpIGNvbnN0IG92ZXJyaWRlCiAgICAg
ICAgIHsKICAgICAgICAgICAgIFdlYkNvcmU6OldlYkdMTG9hZFBvbGljeSBsb2FkUG9saWN5ID0g
V2ViR0xBbGxvd0NyZWF0aW9uOwogCiAgICAgICAgICAgICBpZiAobV9jbGllbnQud2ViR0xMb2Fk
UG9saWN5KQotICAgICAgICAgICAgICAgIGxvYWRQb2xpY3kgPSB0b1dlYkdMTG9hZFBvbGljeSht
X2NsaWVudC53ZWJHTExvYWRQb2xpY3kodG9BUEkocGFnZSksIHRvQVBJKHVybC5pbXBsKCkpLCBt
X2NsaWVudC5iYXNlLmNsaWVudEluZm8pKTsKKyAgICAgICAgICAgICAgICBsb2FkUG9saWN5ID0g
dG9XZWJHTExvYWRQb2xpY3kobV9jbGllbnQud2ViR0xMb2FkUG9saWN5KHRvQVBJKCZwYWdlKSwg
dG9BUEkodXJsLmltcGwoKSksIG1fY2xpZW50LmJhc2UuY2xpZW50SW5mbykpOwogCiAgICAgICAg
ICAgICByZXR1cm4gbG9hZFBvbGljeTsKICAgICAgICAgfQogCi0gICAgICAgIHZpcnR1YWwgV2Vi
Q29yZTo6V2ViR0xMb2FkUG9saWN5IHJlc29sdmVXZWJHTExvYWRQb2xpY3koV2ViUGFnZVByb3h5
KiBwYWdlLCBjb25zdCBTdHJpbmcmIHVybCkgY29uc3Qgb3ZlcnJpZGUKKyAgICAgICAgdmlydHVh
bCBXZWJDb3JlOjpXZWJHTExvYWRQb2xpY3kgcmVzb2x2ZVdlYkdMTG9hZFBvbGljeShXZWJQYWdl
UHJveHkmIHBhZ2UsIGNvbnN0IFN0cmluZyYgdXJsKSBjb25zdCBvdmVycmlkZQogICAgICAgICB7
CiAgICAgICAgICAgICBXZWJDb3JlOjpXZWJHTExvYWRQb2xpY3kgbG9hZFBvbGljeSA9IFdlYkdM
QWxsb3dDcmVhdGlvbjsKIAogICAgICAgICAgICAgaWYgKG1fY2xpZW50LnJlc29sdmVXZWJHTExv
YWRQb2xpY3kpCi0gICAgICAgICAgICAgICAgbG9hZFBvbGljeSA9IHRvV2ViR0xMb2FkUG9saWN5
KG1fY2xpZW50LnJlc29sdmVXZWJHTExvYWRQb2xpY3kodG9BUEkocGFnZSksIHRvQVBJKHVybC5p
bXBsKCkpLCBtX2NsaWVudC5iYXNlLmNsaWVudEluZm8pKTsKKyAgICAgICAgICAgICAgICBsb2Fk
UG9saWN5ID0gdG9XZWJHTExvYWRQb2xpY3kobV9jbGllbnQucmVzb2x2ZVdlYkdMTG9hZFBvbGlj
eSh0b0FQSSgmcGFnZSksIHRvQVBJKHVybC5pbXBsKCkpLCBtX2NsaWVudC5iYXNlLmNsaWVudElu
Zm8pKTsKIAogICAgICAgICAgICAgcmV0dXJuIGxvYWRQb2xpY3k7CiAgICAgICAgIH0KSW5kZXg6
IFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9OYXZpZ2F0aW9uU3RhdGUuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLmgJ
KHJldmlzaW9uIDE3ODM2NCkKKysrIFNvdXJjZS9XZWJLaXQyL1VJUHJvY2Vzcy9Db2NvYS9OYXZp
Z2F0aW9uU3RhdGUuaAkod29ya2luZyBjb3B5KQpAQCAtOTMsMzAgKzkzLDI5IEBAIHByaXZhdGU6
CiAgICAgICAgIH5Mb2FkZXJDbGllbnQoKTsKIAogICAgIHByaXZhdGU6Ci0gICAgICAgIHZpcnR1
YWwgdm9pZCBkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKFdlYlBhZ2VQcm94eSosIFdl
YkZyYW1lUHJveHkqLCB1aW50NjRfdCBuYXZpZ2F0aW9uSUQsIEFQSTo6T2JqZWN0Kikgb3ZlcnJp
ZGU7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlU2VydmVyUmVkaXJlY3RGb3JQcm92
aXNpb25hbExvYWRGb3JGcmFtZShXZWJLaXQ6OldlYlBhZ2VQcm94eSosIFdlYktpdDo6V2ViRnJh
bWVQcm94eSosIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgQVBJOjpPYmplY3QqKSBvdmVycmlkZTsK
LSAgICAgICAgdmlydHVhbCB2b2lkIGRpZEZhaWxQcm92aXNpb25hbExvYWRXaXRoRXJyb3JGb3JG
cmFtZShXZWJQYWdlUHJveHkqLCBXZWJGcmFtZVByb3h5KiwgdWludDY0X3QgbmF2aWdhdGlvbklE
LCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwgQVBJOjpPYmplY3QqKSBvdmVycmlkZTsK
LSAgICAgICAgdmlydHVhbCB2b2lkIGRpZENvbW1pdExvYWRGb3JGcmFtZShXZWJQYWdlUHJveHkq
LCBXZWJGcmFtZVByb3h5KiwgdWludDY0X3QgbmF2aWdhdGlvbklELCBBUEk6Ok9iamVjdCopIG92
ZXJyaWRlOwotICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkRmluaXNoRG9jdW1lbnRMb2FkRm9yRnJh
bWUoV2ViS2l0OjpXZWJQYWdlUHJveHkqLCBXZWJLaXQ6OldlYkZyYW1lUHJveHkqLCB1aW50NjRf
dCBuYXZpZ2F0aW9uSUQsIEFQSTo6T2JqZWN0Kikgb3ZlcnJpZGU7Ci0gICAgICAgIHZpcnR1YWwg
dm9pZCBkaWRGaW5pc2hMb2FkRm9yRnJhbWUoV2ViUGFnZVByb3h5KiwgV2ViRnJhbWVQcm94eSos
IHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgQVBJOjpPYmplY3QqKSBvdmVycmlkZTsKLSAgICAgICAg
dmlydHVhbCB2b2lkIGRpZEZhaWxMb2FkV2l0aEVycm9yRm9yRnJhbWUoV2ViUGFnZVByb3h5Kiwg
V2ViRnJhbWVQcm94eSosIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgV2ViQ29yZTo6UmVz
b3VyY2VFcnJvciYsIEFQSTo6T2JqZWN0Kikgb3ZlcnJpZGU7Ci0gICAgICAgIHZpcnR1YWwgdm9p
ZCBkaWRTYW1lRG9jdW1lbnROYXZpZ2F0aW9uRm9yRnJhbWUoV2ViUGFnZVByb3h5KiwgV2ViRnJh
bWVQcm94eSosIHVpbnQ2NF90IG5hdmlnYXRpb25JRCwgU2FtZURvY3VtZW50TmF2aWdhdGlvblR5
cGUsIEFQSTo6T2JqZWN0Kikgb3ZlcnJpZGU7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBkaWREZXN0
cm95TmF2aWdhdGlvbihXZWJLaXQ6OldlYlBhZ2VQcm94eSosIHVpbnQ2NF90IG5hdmlnYXRpb25J
RCkgb3ZlcnJpZGU7Ci0gICAgICAgIHZpcnR1YWwgdm9pZCBkaWRMYXlvdXQoV2ViS2l0OjpXZWJQ
YWdlUHJveHkqLCBXZWJDb3JlOjpMYXlvdXRNaWxlc3RvbmVzLCBBUEk6Ok9iamVjdCopIG92ZXJy
aWRlOwotICAgICAgICB2aXJ0dWFsIGJvb2wgY2FuQXV0aGVudGljYXRlQWdhaW5zdFByb3RlY3Rp
b25TcGFjZUluRnJhbWUoV2ViS2l0OjpXZWJQYWdlUHJveHkqLCBXZWJLaXQ6OldlYkZyYW1lUHJv
eHkqLCBXZWJLaXQ6OldlYlByb3RlY3Rpb25TcGFjZSopIG92ZXJyaWRlOwotICAgICAgICB2aXJ0
dWFsIHZvaWQgZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlSW5GcmFtZShXZWJLaXQ6
OldlYlBhZ2VQcm94eSosIFdlYktpdDo6V2ViRnJhbWVQcm94eSosIFdlYktpdDo6QXV0aGVudGlj
YXRpb25DaGFsbGVuZ2VQcm94eSopIG92ZXJyaWRlOwotICAgICAgICB2aXJ0dWFsIHZvaWQgcHJv
Y2Vzc0RpZENyYXNoKFdlYktpdDo6V2ViUGFnZVByb3h5Kikgb3ZlcnJpZGU7Ci0gICAgICAgIHZp
cnR1YWwgUGFzc1JlZlB0cjxBUEk6OkRhdGE+IHdlYkNyeXB0b01hc3RlcktleShXZWJLaXQ6Oldl
YlBhZ2VQcm94eSYpIG92ZXJyaWRlOworICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkU3RhcnRQcm92
aXNpb25hbExvYWRGb3JGcmFtZShXZWJQYWdlUHJveHkmLCBXZWJGcmFtZVByb3h5JiwgQVBJOjpO
YXZpZ2F0aW9uKiwgQVBJOjpPYmplY3QqKSBvdmVycmlkZTsKKyAgICAgICAgdmlydHVhbCB2b2lk
IGRpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKFdlYlBh
Z2VQcm94eSYsIFdlYkZyYW1lUHJveHkmLCBBUEk6Ok5hdmlnYXRpb24qLCBBUEk6Ok9iamVjdCop
IG92ZXJyaWRlOworICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkRmFpbFByb3Zpc2lvbmFsTG9hZFdp
dGhFcnJvckZvckZyYW1lKFdlYlBhZ2VQcm94eSYsIFdlYkZyYW1lUHJveHkmLCBBUEk6Ok5hdmln
YXRpb24qLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwgQVBJOjpPYmplY3QqKSBvdmVy
cmlkZTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGRpZENvbW1pdExvYWRGb3JGcmFtZShXZWJQYWdl
UHJveHkmLCBXZWJGcmFtZVByb3h5JiwgQVBJOjpOYXZpZ2F0aW9uKiwgQVBJOjpPYmplY3QqKSBv
dmVycmlkZTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaERvY3VtZW50TG9hZEZvckZy
YW1lKFdlYlBhZ2VQcm94eSYsIFdlYktpdDo6V2ViRnJhbWVQcm94eSYsIEFQSTo6TmF2aWdhdGlv
biosIEFQSTo6T2JqZWN0Kikgb3ZlcnJpZGU7CisgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRGaW5p
c2hMb2FkRm9yRnJhbWUoV2ViUGFnZVByb3h5JiwgV2ViRnJhbWVQcm94eSYsIEFQSTo6TmF2aWdh
dGlvbiosIEFQSTo6T2JqZWN0Kikgb3ZlcnJpZGU7CisgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRG
YWlsTG9hZFdpdGhFcnJvckZvckZyYW1lKFdlYlBhZ2VQcm94eSYsIFdlYkZyYW1lUHJveHkmLCBB
UEk6Ok5hdmlnYXRpb24qLCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiwgQVBJOjpPYmpl
Y3QqKSBvdmVycmlkZTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGRpZFNhbWVEb2N1bWVudE5hdmln
YXRpb25Gb3JGcmFtZShXZWJQYWdlUHJveHkmLCBXZWJGcmFtZVByb3h5JiwgQVBJOjpOYXZpZ2F0
aW9uKiwgU2FtZURvY3VtZW50TmF2aWdhdGlvblR5cGUsIEFQSTo6T2JqZWN0Kikgb3ZlcnJpZGU7
CisgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRMYXlvdXQoV2ViUGFnZVByb3h5JiwgV2ViQ29yZTo6
TGF5b3V0TWlsZXN0b25lcywgQVBJOjpPYmplY3QqKSBvdmVycmlkZTsKKyAgICAgICAgdmlydHVh
bCBib29sIGNhbkF1dGhlbnRpY2F0ZUFnYWluc3RQcm90ZWN0aW9uU3BhY2VJbkZyYW1lKFdlYlBh
Z2VQcm94eSYsIFdlYktpdDo6V2ViRnJhbWVQcm94eSYsIFdlYktpdDo6V2ViUHJvdGVjdGlvblNw
YWNlKikgb3ZlcnJpZGU7CisgICAgICAgIHZpcnR1YWwgdm9pZCBkaWRSZWNlaXZlQXV0aGVudGlj
YXRpb25DaGFsbGVuZ2VJbkZyYW1lKFdlYlBhZ2VQcm94eSYsIFdlYktpdDo6V2ViRnJhbWVQcm94
eSYsIFdlYktpdDo6QXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eSopIG92ZXJyaWRlOworICAg
ICAgICB2aXJ0dWFsIHZvaWQgcHJvY2Vzc0RpZENyYXNoKFdlYlBhZ2VQcm94eSYpIG92ZXJyaWRl
OworICAgICAgICB2aXJ0dWFsIFBhc3NSZWZQdHI8QVBJOjpEYXRhPiB3ZWJDcnlwdG9NYXN0ZXJL
ZXkoV2ViUGFnZVByb3h5Jikgb3ZlcnJpZGU7CiAKICNpZiBVU0UoUVVJQ0tfTE9PSykKICAgICAg
ICAgdmlydHVhbCB2b2lkIGRpZFN0YXJ0TG9hZEZvclF1aWNrTG9va0RvY3VtZW50SW5NYWluRnJh
bWUoY29uc3QgV1RGOjpTdHJpbmcmIGZpbGVOYW1lLCBjb25zdCBXVEY6OlN0cmluZyYgdXRpKSBv
dmVycmlkZTsKICAgICAgICAgdmlydHVhbCB2b2lkIGRpZEZpbmlzaExvYWRGb3JRdWlja0xvb2tE
b2N1bWVudEluTWFpbkZyYW1lKGNvbnN0IFdlYktpdDo6UXVpY2tMb29rRG9jdW1lbnREYXRhJikg
b3ZlcnJpZGU7CiAjZW5kaWYKIAotICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkTmF2aWdhdGVXaXRo
TmF2aWdhdGlvbkRhdGEoV2ViS2l0OjpXZWJQYWdlUHJveHkmLCBjb25zdCBXZWJLaXQ6OldlYk5h
dmlnYXRpb25EYXRhU3RvcmUmLCBXZWJLaXQ6OldlYkZyYW1lUHJveHkmKSBvdmVycmlkZTsKLSAg
ICAgICAgdmlydHVhbCB2b2lkIGRpZFBlcmZvcm1DbGllbnRSZWRpcmVjdChXZWJLaXQ6OldlYlBh
Z2VQcm94eSYsIGNvbnN0IFdURjo6U3RyaW5nJiwgY29uc3QgV1RGOjpTdHJpbmcmLCBXZWJLaXQ6
OldlYkZyYW1lUHJveHkmKSBvdmVycmlkZTsKLSAgICAgICAgdmlydHVhbCB2b2lkIGRpZFBlcmZv
cm1TZXJ2ZXJSZWRpcmVjdChXZWJLaXQ6OldlYlBhZ2VQcm94eSYsIGNvbnN0IFdURjo6U3RyaW5n
JiwgY29uc3QgV1RGOjpTdHJpbmcmLCBXZWJLaXQ6OldlYkZyYW1lUHJveHkmKSBvdmVycmlkZTsK
LSAgICAgICAgdmlydHVhbCB2b2lkIGRpZFVwZGF0ZUhpc3RvcnlUaXRsZShXZWJLaXQ6OldlYlBh
Z2VQcm94eSYsIGNvbnN0IFdURjo6U3RyaW5nJiwgY29uc3QgV1RGOjpTdHJpbmcmLCBXZWJLaXQ6
OldlYkZyYW1lUHJveHkmKSBvdmVycmlkZTsKKyAgICAgICAgdmlydHVhbCB2b2lkIGRpZE5hdmln
YXRlV2l0aE5hdmlnYXRpb25EYXRhKFdlYlBhZ2VQcm94eSYsIGNvbnN0IFdlYk5hdmlnYXRpb25E
YXRhU3RvcmUmLCBXZWJGcmFtZVByb3h5Jikgb3ZlcnJpZGU7CisgICAgICAgIHZpcnR1YWwgdm9p
ZCBkaWRQZXJmb3JtQ2xpZW50UmVkaXJlY3QoV2ViUGFnZVByb3h5JiwgY29uc3QgV1RGOjpTdHJp
bmcmLCBjb25zdCBXVEY6OlN0cmluZyYsIFdlYkZyYW1lUHJveHkmKSBvdmVycmlkZTsKKyAgICAg
ICAgdmlydHVhbCB2b2lkIGRpZFBlcmZvcm1TZXJ2ZXJSZWRpcmVjdChXZWJQYWdlUHJveHkmLCBj
b25zdCBXVEY6OlN0cmluZyYsIGNvbnN0IFdURjo6U3RyaW5nJiwgV2ViRnJhbWVQcm94eSYpIG92
ZXJyaWRlOworICAgICAgICB2aXJ0dWFsIHZvaWQgZGlkVXBkYXRlSGlzdG9yeVRpdGxlKFdlYlBh
Z2VQcm94eSYsIGNvbnN0IFdURjo6U3RyaW5nJiwgY29uc3QgV1RGOjpTdHJpbmcmLCBXZWJGcmFt
ZVByb3h5Jikgb3ZlcnJpZGU7CiAKICAgICAgICAgTmF2aWdhdGlvblN0YXRlJiBtX25hdmlnYXRp
b25TdGF0ZTsKICAgICB9OwpJbmRleDogU291cmNlL1dlYktpdDIvVUlQcm9jZXNzL0NvY29hL05h
dmlnYXRpb25TdGF0ZS5tbQo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBTb3VyY2UvV2ViS2l0Mi9VSVByb2Nlc3Mv
Q29jb2EvTmF2aWdhdGlvblN0YXRlLm1tCShyZXZpc2lvbiAxNzgzNjQpCisrKyBTb3VyY2UvV2Vi
S2l0Mi9VSVByb2Nlc3MvQ29jb2EvTmF2aWdhdGlvblN0YXRlLm1tCSh3b3JraW5nIGNvcHkpCkBA
IC0zNjEsOSArMzYxLDkgQEAgTmF2aWdhdGlvblN0YXRlOjpMb2FkZXJDbGllbnQ6On5Mb2FkZXJD
bAogewogfQogCi12b2lkIE5hdmlnYXRpb25TdGF0ZTo6TG9hZGVyQ2xpZW50OjpkaWRTdGFydFBy
b3Zpc2lvbmFsTG9hZEZvckZyYW1lKFdlYlBhZ2VQcm94eSogcGFnZSwgV2ViRnJhbWVQcm94eSog
d2ViRnJhbWVQcm94eSwgdWludDY0X3QgbmF2aWdhdGlvbklELCBBUEk6Ok9iamVjdCopCit2b2lk
IE5hdmlnYXRpb25TdGF0ZTo6TG9hZGVyQ2xpZW50OjpkaWRTdGFydFByb3Zpc2lvbmFsTG9hZEZv
ckZyYW1lKFdlYlBhZ2VQcm94eSYgcGFnZSwgV2ViRnJhbWVQcm94eSYgd2ViRnJhbWVQcm94eSwg
QVBJOjpOYXZpZ2F0aW9uKiBuYXZpZ2F0aW9uLCBBUEk6Ok9iamVjdCopCiB7Ci0gICAgaWYgKCF3
ZWJGcmFtZVByb3h5LT5pc01haW5GcmFtZSgpKQorICAgIGlmICghd2ViRnJhbWVQcm94eS5pc01h
aW5GcmFtZSgpKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoIW1fbmF2aWdhdGlvblN0YXRl
Lm1fbmF2aWdhdGlvbkRlbGVnYXRlTWV0aG9kcy53ZWJWaWV3RGlkU3RhcnRQcm92aXNpb25hbE5h
dmlnYXRpb24pCkBAIC0zNzMsMTcgKzM3MywxNyBAQCB2b2lkIE5hdmlnYXRpb25TdGF0ZTo6TG9h
ZGVyQ2xpZW50OjpkaWRTCiAgICAgaWYgKCFuYXZpZ2F0aW9uRGVsZWdhdGUpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgYXNzZXJ0IHRoYXQgbmF2aWdhdGlvbklE
IGlzIG5vdCB6ZXJvIGhlcmUsIGJ1dCBpdCdzIGN1cnJlbnRseSB6ZXJvIGZvciBzb21lIG5hdmln
YXRpb25zIHRocm91Z2ggdGhlIHBhZ2UgY2FjaGUuCi0gICAgV0tOYXZpZ2F0aW9uICpuYXZpZ2F0
aW9uID0gbmlsOwotICAgIGlmIChuYXZpZ2F0aW9uSUQpCi0gICAgICAgIG5hdmlnYXRpb24gPSB3
cmFwcGVyKHBhZ2UtPm5hdmlnYXRpb25TdGF0ZSgpLm5hdmlnYXRpb24obmF2aWdhdGlvbklEKSk7
CisgICAgLy8gRklYTUU6IFdlIHNob3VsZCBhc3NlcnQgdGhhdCBuYXZpZ2F0aW9uIGlzIG5vdCBu
dWxsIGhlcmUsIGJ1dCBpdCdzIGN1cnJlbnRseSBudWxsIGZvciBzb21lIG5hdmlnYXRpb25zIHRo
cm91Z2ggdGhlIHBhZ2UgY2FjaGUuCisgICAgV0tOYXZpZ2F0aW9uICp3a05hdmlnYXRpb24gPSBu
aWw7CisgICAgaWYgKG5hdmlnYXRpb24pCisgICAgICAgIHdrTmF2aWdhdGlvbiA9IHdyYXBwZXIo
Km5hdmlnYXRpb24pOwogCi0gICAgW25hdmlnYXRpb25EZWxlZ2F0ZSB3ZWJWaWV3Om1fbmF2aWdh
dGlvblN0YXRlLm1fd2ViVmlldyBkaWRTdGFydFByb3Zpc2lvbmFsTmF2aWdhdGlvbjpuYXZpZ2F0
aW9uXTsKKyAgICBbbmF2aWdhdGlvbkRlbGVnYXRlIHdlYlZpZXc6bV9uYXZpZ2F0aW9uU3RhdGUu
bV93ZWJWaWV3IGRpZFN0YXJ0UHJvdmlzaW9uYWxOYXZpZ2F0aW9uOndrTmF2aWdhdGlvbl07CiB9
CiAKLXZvaWQgTmF2aWdhdGlvblN0YXRlOjpMb2FkZXJDbGllbnQ6OmRpZFJlY2VpdmVTZXJ2ZXJS
ZWRpcmVjdEZvclByb3Zpc2lvbmFsTG9hZEZvckZyYW1lKFdlYktpdDo6V2ViUGFnZVByb3h5KiBw
YWdlLCBXZWJLaXQ6OldlYkZyYW1lUHJveHkqIHdlYkZyYW1lUHJveHksIHVpbnQ2NF90IG5hdmln
YXRpb25JRCwgQVBJOjpPYmplY3QqKQordm9pZCBOYXZpZ2F0aW9uU3RhdGU6OkxvYWRlckNsaWVu
dDo6ZGlkUmVjZWl2ZVNlcnZlclJlZGlyZWN0Rm9yUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUoV2Vi
UGFnZVByb3h5JiBwYWdlLCBXZWJLaXQ6OldlYkZyYW1lUHJveHkmIHdlYkZyYW1lUHJveHksIEFQ
STo6TmF2aWdhdGlvbiogbmF2aWdhdGlvbiwgQVBJOjpPYmplY3QqKQogewotICAgIGlmICghd2Vi
RnJhbWVQcm94eS0+aXNNYWluRnJhbWUoKSkKKyAgICBpZiAoIXdlYkZyYW1lUHJveHkuaXNNYWlu
RnJhbWUoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKCFtX25hdmlnYXRpb25TdGF0ZS5t
X25hdmlnYXRpb25EZWxlZ2F0ZU1ldGhvZHMud2ViVmlld0RpZFJlY2VpdmVTZXJ2ZXJSZWRpcmVj
dEZvclByb3Zpc2lvbmFsTmF2aWdhdGlvbikKQEAgLTM5MywxMiArMzkzLDEyIEBAIHZvaWQgTmF2
aWdhdGlvblN0YXRlOjpMb2FkZXJDbGllbnQ6OmRpZFIKICAgICBpZiAoIW5hdmlnYXRpb25EZWxl
Z2F0ZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgLy8gRklYTUU6IFdlIHNob3VsZCBhc3NlcnQg
dGhhdCBuYXZpZ2F0aW9uSUQgaXMgbm90IHplcm8gaGVyZSwgYnV0IGl0J3MgY3VycmVudGx5IHpl
cm8gZm9yIHNvbWUgbmF2aWdhdGlvbnMgdGhyb3VnaCB0aGUgcGFnZSBjYWNoZS4KLSAgICBXS05h
dmlnYXRpb24gKm5hdmlnYXRpb24gPSBuaWw7Ci0gICAgaWYgKG5hdmlnYXRpb25JRCkKLSAgICAg
ICAgbmF2aWdhdGlvbiA9IHdyYXBwZXIocGFnZS0+bmF2aWdhdGlvblN0YXRlKCkubmF2aWdhdGlv
bihuYXZpZ2F0aW9uSUQpKTsKKyAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGFzc2VydCB0aGF0IG5h
dmlnYXRpb24gaXMgbm90IG51bGwgaGVyZSwgYnV0IGl0J3MgY3VycmVudGx5IG51bGwgZm9yIHNv
bWUgbmF2aWdhdGlvbnMgdGhyb3VnaCB0aGUgcGFnZSBjYWNoZS4KKyAgICBXS05hdmlnYXRpb24g
KndrTmF2aWdhdGlvbiA9IG5pbDsKKyAgICBpZiAobmF2aWdhdGlvbikKKyAgICAgICAgd2tOYXZp
Z2F0aW9uID0gd3JhcHBlcigqbmF2aWdhdGlvbik7CiAKLSAgICBbbmF2aWdhdGlvbkRlbGVnYXRl
IHdlYlZpZXc6bV9uYXZpZ2F0aW9uU3RhdGUubV93ZWJWaWV3IGRpZFJlY2VpdmVTZXJ2ZXJSZWRp
cmVjdEZvclByb3Zpc2lvbmFsTmF2aWdhdGlvbjpuYXZpZ2F0aW9uXTsKKyAgICBbbmF2aWdhdGlv
bkRlbGVnYXRlIHdlYlZpZXc6bV9uYXZpZ2F0aW9uU3RhdGUubV93ZWJWaWV3IGRpZFJlY2VpdmVT
ZXJ2ZXJSZWRpcmVjdEZvclByb3Zpc2lvbmFsTmF2aWdhdGlvbjp3a05hdmlnYXRpb25dOwogfQog
CiBzdGF0aWMgUmV0YWluUHRyPE5TRXJyb3I+IGNyZWF0ZUVycm9yV2l0aFJlY292ZXJ5QXR0ZW1w
dGVyKFdLV2ViVmlldyAqd2ViVmlldywgV2ViRnJhbWVQcm94eSYgd2ViRnJhbWVQcm94eSwgTlNF
cnJvciAqb3JpZ2luYWxFcnJvcikKQEAgLTQxNSwyNCArNDE1LDI0IEBAIHN0YXRpYyBSZXRhaW5Q
dHI8TlNFcnJvcj4gY3JlYXRlRXJyb3JXaXQKICAgICByZXR1cm4gYWRvcHROUyhbW05TRXJyb3Ig
YWxsb2NdIGluaXRXaXRoRG9tYWluOm9yaWdpbmFsRXJyb3IuZG9tYWluIGNvZGU6b3JpZ2luYWxF
cnJvci5jb2RlIHVzZXJJbmZvOnVzZXJJbmZvLmdldCgpXSk7CiB9CiAKLXZvaWQgTmF2aWdhdGlv
blN0YXRlOjpMb2FkZXJDbGllbnQ6OmRpZEZhaWxQcm92aXNpb25hbExvYWRXaXRoRXJyb3JGb3JG
cmFtZShXZWJQYWdlUHJveHkqIHBhZ2UsIFdlYkZyYW1lUHJveHkqIHdlYkZyYW1lUHJveHksIHVp
bnQ2NF90IG5hdmlnYXRpb25JRCwgY29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYgZXJyb3Is
IEFQSTo6T2JqZWN0KikKK3ZvaWQgTmF2aWdhdGlvblN0YXRlOjpMb2FkZXJDbGllbnQ6OmRpZEZh
aWxQcm92aXNpb25hbExvYWRXaXRoRXJyb3JGb3JGcmFtZShXZWJQYWdlUHJveHkmIHBhZ2UsIFdl
YkZyYW1lUHJveHkmIHdlYkZyYW1lUHJveHksIEFQSTo6TmF2aWdhdGlvbiogbmF2aWdhdGlvbiwg
Y29uc3QgV2ViQ29yZTo6UmVzb3VyY2VFcnJvciYgZXJyb3IsIEFQSTo6T2JqZWN0KikKIHsKLSAg
ICBpZiAoIXdlYkZyYW1lUHJveHktPmlzTWFpbkZyYW1lKCkpIHsKKyAgICBpZiAoIXdlYkZyYW1l
UHJveHkuaXNNYWluRnJhbWUoKSkgewogICAgICAgICBpZiAoIW1fbmF2aWdhdGlvblN0YXRlLm1f
bmF2aWdhdGlvbkRlbGVnYXRlTWV0aG9kcy53ZWJWaWV3TmF2aWdhdGlvbkRpZEZhaWxQcm92aXNp
b25hbExvYWRJblN1YmZyYW1lV2l0aEVycm9yKQogICAgICAgICAgICAgcmV0dXJuOwogCiAgICAg
ICAgIGF1dG8gbmF2aWdhdGlvbkRlbGVnYXRlID0gbV9uYXZpZ2F0aW9uU3RhdGUubV9uYXZpZ2F0
aW9uRGVsZWdhdGUuZ2V0KCk7Ci0gICAgICAgIGF1dG8gZXJyb3JXaXRoUmVjb3ZlcnlBdHRlbXB0
ZXIgPSBjcmVhdGVFcnJvcldpdGhSZWNvdmVyeUF0dGVtcHRlcihtX25hdmlnYXRpb25TdGF0ZS5t
X3dlYlZpZXcsICp3ZWJGcmFtZVByb3h5LCBlcnJvcik7CisgICAgICAgIGF1dG8gZXJyb3JXaXRo
UmVjb3ZlcnlBdHRlbXB0ZXIgPSBjcmVhdGVFcnJvcldpdGhSZWNvdmVyeUF0dGVtcHRlcihtX25h
dmlnYXRpb25TdGF0ZS5tX3dlYlZpZXcsIHdlYkZyYW1lUHJveHksIGVycm9yKTsKICAgICAgICAg
Ly8gRklYTUU6IEdldCB0aGUgbWFpbiBmcmFtZSdzIGN1cnJlbnQgbmF2aWdhdGlvbi4KLSAgICAg
ICAgWyhpZCA8V0tOYXZpZ2F0aW9uRGVsZWdhdGVQcml2YXRlPiluYXZpZ2F0aW9uRGVsZWdhdGUg
X3dlYlZpZXc6bV9uYXZpZ2F0aW9uU3RhdGUubV93ZWJWaWV3IG5hdmlnYXRpb246bmlsIGRpZEZh
aWxQcm92aXNpb25hbExvYWRJblN1YmZyYW1lOmFkb3B0TlMoW1tXS0ZyYW1lSW5mbyBhbGxvY10g
aW5pdFdpdGhXZWJGcmFtZVByb3h5Oip3ZWJGcmFtZVByb3h5XSkuZ2V0KCkgd2l0aEVycm9yOmVy
cm9yV2l0aFJlY292ZXJ5QXR0ZW1wdGVyLmdldCgpXTsKKyAgICAgICAgWyhpZCA8V0tOYXZpZ2F0
aW9uRGVsZWdhdGVQcml2YXRlPiluYXZpZ2F0aW9uRGVsZWdhdGUgX3dlYlZpZXc6bV9uYXZpZ2F0
aW9uU3RhdGUubV93ZWJWaWV3IG5hdmlnYXRpb246bmlsIGRpZEZhaWxQcm92aXNpb25hbExvYWRJ
blN1YmZyYW1lOmFkb3B0TlMoW1tXS0ZyYW1lSW5mbyBhbGxvY10gaW5pdFdpdGhXZWJGcmFtZVBy
b3h5OndlYkZyYW1lUHJveHldKS5nZXQoKSB3aXRoRXJyb3I6ZXJyb3JXaXRoUmVjb3ZlcnlBdHRl
bXB0ZXIuZ2V0KCldOwogCiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICAvLyBGSVhNRTog
V2Ugc2hvdWxkIGFzc2VydCB0aGF0IG5hdmlnYXRpb25JRCBpcyBub3QgemVybyBoZXJlLCBidXQg
aXQncyBjdXJyZW50bHkgemVybyBmb3Igc29tZSBuYXZpZ2F0aW9ucyB0aHJvdWdoIHRoZSBwYWdl
IGNhY2hlLgotICAgIFJldGFpblB0cjxXS05hdmlnYXRpb24+IG5hdmlnYXRpb247Ci0gICAgaWYg
KG5hdmlnYXRpb25JRCkKLSAgICAgICAgbmF2aWdhdGlvbiA9IHdyYXBwZXIocGFnZS0+bmF2aWdh
dGlvblN0YXRlKCkudGFrZU5hdmlnYXRpb24obmF2aWdhdGlvbklEKS5nZXQoKSk7CisgICAgLy8g
RklYTUU6IFdlIHNob3VsZCBhc3NlcnQgdGhhdCBuYXZpZ2F0aW9uIGlzIG5vdCBudWxsIGhlcmUs
IGJ1dCBpdCdzIGN1cnJlbnRseSBudWxsIGZvciBzb21lIG5hdmlnYXRpb25zIHRocm91Z2ggdGhl
IHBhZ2UgY2FjaGUuCisgICAgUmV0YWluUHRyPFdLTmF2aWdhdGlvbj4gd2tOYXZpZ2F0aW9uOwor
ICAgIGlmIChuYXZpZ2F0aW9uKQorICAgICAgICB3a05hdmlnYXRpb24gPSB3cmFwcGVyKCpuYXZp
Z2F0aW9uKTsKICAgICAKICAgICAvLyBGSVhNRTogU2V0IHRoZSBlcnJvciBvbiB0aGUgbmF2aWdh
dGlvbiBvYmplY3QuCiAKQEAgLTQ0MywxMyArNDQzLDEzIEBAIHZvaWQgTmF2aWdhdGlvblN0YXRl
OjpMb2FkZXJDbGllbnQ6OmRpZEYKICAgICBpZiAoIW5hdmlnYXRpb25EZWxlZ2F0ZSkKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgYXV0byBlcnJvcldpdGhSZWNvdmVyeUF0dGVtcHRlciA9IGNyZWF0
ZUVycm9yV2l0aFJlY292ZXJ5QXR0ZW1wdGVyKG1fbmF2aWdhdGlvblN0YXRlLm1fd2ViVmlldywg
KndlYkZyYW1lUHJveHksIGVycm9yKTsKLSAgICBbbmF2aWdhdGlvbkRlbGVnYXRlIHdlYlZpZXc6
bV9uYXZpZ2F0aW9uU3RhdGUubV93ZWJWaWV3IGRpZEZhaWxQcm92aXNpb25hbE5hdmlnYXRpb246
bmF2aWdhdGlvbi5nZXQoKSB3aXRoRXJyb3I6ZXJyb3JXaXRoUmVjb3ZlcnlBdHRlbXB0ZXIuZ2V0
KCldOworICAgIGF1dG8gZXJyb3JXaXRoUmVjb3ZlcnlBdHRlbXB0ZXIgPSBjcmVhdGVFcnJvcldp
dGhSZWNvdmVyeUF0dGVtcHRlcihtX25hdmlnYXRpb25TdGF0ZS5tX3dlYlZpZXcsIHdlYkZyYW1l
UHJveHksIGVycm9yKTsKKyAgICBbbmF2aWdhdGlvbkRlbGVnYXRlIHdlYlZpZXc6bV9uYXZpZ2F0
aW9uU3RhdGUubV93ZWJWaWV3IGRpZEZhaWxQcm92aXNpb25hbE5hdmlnYXRpb246d2tOYXZpZ2F0
aW9uLmdldCgpIHdpdGhFcnJvcjplcnJvcldpdGhSZWNvdmVyeUF0dGVtcHRlci5nZXQoKV07CiB9
CiAKLXZvaWQgTmF2aWdhdGlvblN0YXRlOjpMb2FkZXJDbGllbnQ6OmRpZENvbW1pdExvYWRGb3JG
cmFtZShXZWJQYWdlUHJveHkqIHBhZ2UsIFdlYkZyYW1lUHJveHkqIHdlYkZyYW1lUHJveHksIHVp
bnQ2NF90IG5hdmlnYXRpb25JRCwgQVBJOjpPYmplY3QqKQordm9pZCBOYXZpZ2F0aW9uU3RhdGU6
OkxvYWRlckNsaWVudDo6ZGlkQ29tbWl0TG9hZEZvckZyYW1lKFdlYlBhZ2VQcm94eSYgcGFnZSwg
V2ViRnJhbWVQcm94eSYgd2ViRnJhbWVQcm94eSwgQVBJOjpOYXZpZ2F0aW9uKiBuYXZpZ2F0aW9u
LCBBUEk6Ok9iamVjdCopCiB7Ci0gICAgaWYgKCF3ZWJGcmFtZVByb3h5LT5pc01haW5GcmFtZSgp
KQorICAgIGlmICghd2ViRnJhbWVQcm94eS5pc01haW5GcmFtZSgpKQogICAgICAgICByZXR1cm47
CiAKICAgICBpZiAoIW1fbmF2aWdhdGlvblN0YXRlLm1fbmF2aWdhdGlvbkRlbGVnYXRlTWV0aG9k
cy53ZWJWaWV3RGlkQ29tbWl0TmF2aWdhdGlvbikKQEAgLTQ1OSwxNyArNDU5LDE3IEBAIHZvaWQg
TmF2aWdhdGlvblN0YXRlOjpMb2FkZXJDbGllbnQ6OmRpZEMKICAgICBpZiAoIW5hdmlnYXRpb25E
ZWxlZ2F0ZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgLy8gRklYTUU6IFdlIHNob3VsZCBhc3Nl
cnQgdGhhdCBuYXZpZ2F0aW9uSUQgaXMgbm90IHplcm8gaGVyZSwgYnV0IGl0J3MgY3VycmVudGx5
IHplcm8gZm9yIHNvbWUgbmF2aWdhdGlvbnMgdGhyb3VnaCB0aGUgcGFnZSBjYWNoZS4KLSAgICBX
S05hdmlnYXRpb24gKm5hdmlnYXRpb24gPSBuaWw7Ci0gICAgaWYgKG5hdmlnYXRpb25JRCkKLSAg
ICAgICAgbmF2aWdhdGlvbiA9IHdyYXBwZXIocGFnZS0+bmF2aWdhdGlvblN0YXRlKCkubmF2aWdh
dGlvbihuYXZpZ2F0aW9uSUQpKTsKKyAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGFzc2VydCB0aGF0
IG5hdmlnYXRpb24gaXMgbm90IG51bGwgaGVyZSwgYnV0IGl0J3MgY3VycmVudGx5IG51bGwgZm9y
IHNvbWUgbmF2aWdhdGlvbnMgdGhyb3VnaCB0aGUgcGFnZSBjYWNoZS4KKyAgICBXS05hdmlnYXRp
b24gKndrTmF2aWdhdGlvbiA9IG5pbDsKKyAgICBpZiAobmF2aWdhdGlvbikKKyAgICAgICAgd2tO
YXZpZ2F0aW9uID0gd3JhcHBlcigqbmF2aWdhdGlvbik7CiAKLSAgICBbbmF2aWdhdGlvbkRlbGVn
YXRlIHdlYlZpZXc6bV9uYXZpZ2F0aW9uU3RhdGUubV93ZWJWaWV3IGRpZENvbW1pdE5hdmlnYXRp
b246bmF2aWdhdGlvbl07CisgICAgW25hdmlnYXRpb25EZWxlZ2F0ZSB3ZWJWaWV3Om1fbmF2aWdh
dGlvblN0YXRlLm1fd2ViVmlldyBkaWRDb21taXROYXZpZ2F0aW9uOndrTmF2aWdhdGlvbl07CiB9
CiAKLXZvaWQgTmF2aWdhdGlvblN0YXRlOjpMb2FkZXJDbGllbnQ6OmRpZEZpbmlzaERvY3VtZW50
TG9hZEZvckZyYW1lKFdlYlBhZ2VQcm94eSogcGFnZSwgV2ViRnJhbWVQcm94eSogd2ViRnJhbWVQ
cm94eSwgdWludDY0X3QgbmF2aWdhdGlvbklELCBBUEk6Ok9iamVjdCopCit2b2lkIE5hdmlnYXRp
b25TdGF0ZTo6TG9hZGVyQ2xpZW50OjpkaWRGaW5pc2hEb2N1bWVudExvYWRGb3JGcmFtZShXZWJQ
YWdlUHJveHkmIHBhZ2UsIFdlYkZyYW1lUHJveHkmIHdlYkZyYW1lUHJveHksIEFQSTo6TmF2aWdh
dGlvbiogbmF2aWdhdGlvbiwgQVBJOjpPYmplY3QqKQogewotICAgIGlmICghd2ViRnJhbWVQcm94
eS0+aXNNYWluRnJhbWUoKSkKKyAgICBpZiAoIXdlYkZyYW1lUHJveHkuaXNNYWluRnJhbWUoKSkK
ICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKCFtX25hdmlnYXRpb25TdGF0ZS5tX25hdmlnYXRp
b25EZWxlZ2F0ZU1ldGhvZHMud2ViVmlld05hdmlnYXRpb25EaWRGaW5pc2hEb2N1bWVudExvYWQp
CkBAIC00NzksMTcgKzQ3OSwxNyBAQCB2b2lkIE5hdmlnYXRpb25TdGF0ZTo6TG9hZGVyQ2xpZW50
OjpkaWRGCiAgICAgaWYgKCFuYXZpZ2F0aW9uRGVsZWdhdGUpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgYXNzZXJ0IHRoYXQgbmF2aWdhdGlvbklEIGlzIG5vdCB6
ZXJvIGhlcmUsIGJ1dCBpdCdzIGN1cnJlbnRseSB6ZXJvIGZvciBzb21lIG5hdmlnYXRpb25zIHRo
cm91Z2ggdGhlIHBhZ2UgY2FjaGUuCi0gICAgV0tOYXZpZ2F0aW9uICpuYXZpZ2F0aW9uID0gbmls
OwotICAgIGlmIChuYXZpZ2F0aW9uSUQpCi0gICAgICAgIG5hdmlnYXRpb24gPSB3cmFwcGVyKHBh
Z2UtPm5hdmlnYXRpb25TdGF0ZSgpLm5hdmlnYXRpb24obmF2aWdhdGlvbklEKSk7CisgICAgLy8g
RklYTUU6IFdlIHNob3VsZCBhc3NlcnQgdGhhdCBuYXZpZ2F0aW9uIGlzIG5vdCBudWxsIGhlcmUs
IGJ1dCBpdCdzIGN1cnJlbnRseSBudWxsIGZvciBzb21lIG5hdmlnYXRpb25zIHRocm91Z2ggdGhl
IHBhZ2UgY2FjaGUuCisgICAgV0tOYXZpZ2F0aW9uICp3a05hdmlnYXRpb24gPSBuaWw7CisgICAg
aWYgKG5hdmlnYXRpb24pCisgICAgICAgIHdrTmF2aWdhdGlvbiA9IHdyYXBwZXIoKm5hdmlnYXRp
b24pOwogCi0gICAgW3N0YXRpY19jYXN0PGlkIDxXS05hdmlnYXRpb25EZWxlZ2F0ZVByaXZhdGU+
PihuYXZpZ2F0aW9uRGVsZWdhdGUuZ2V0KCkpIF93ZWJWaWV3Om1fbmF2aWdhdGlvblN0YXRlLm1f
d2ViVmlldyBuYXZpZ2F0aW9uRGlkRmluaXNoRG9jdW1lbnRMb2FkOm5hdmlnYXRpb25dOworICAg
IFtzdGF0aWNfY2FzdDxpZCA8V0tOYXZpZ2F0aW9uRGVsZWdhdGVQcml2YXRlPj4obmF2aWdhdGlv
bkRlbGVnYXRlLmdldCgpKSBfd2ViVmlldzptX25hdmlnYXRpb25TdGF0ZS5tX3dlYlZpZXcgbmF2
aWdhdGlvbkRpZEZpbmlzaERvY3VtZW50TG9hZDp3a05hdmlnYXRpb25dOwogfQogCi12b2lkIE5h
dmlnYXRpb25TdGF0ZTo6TG9hZGVyQ2xpZW50OjpkaWRGaW5pc2hMb2FkRm9yRnJhbWUoV2ViUGFn
ZVByb3h5KiBwYWdlLCBXZWJGcmFtZVByb3h5KiB3ZWJGcmFtZVByb3h5LCB1aW50NjRfdCBuYXZp
Z2F0aW9uSUQsIEFQSTo6T2JqZWN0KikKK3ZvaWQgTmF2aWdhdGlvblN0YXRlOjpMb2FkZXJDbGll
bnQ6OmRpZEZpbmlzaExvYWRGb3JGcmFtZShXZWJQYWdlUHJveHkmIHBhZ2UsIFdlYkZyYW1lUHJv
eHkmIHdlYkZyYW1lUHJveHksIEFQSTo6TmF2aWdhdGlvbiogbmF2aWdhdGlvbiwgQVBJOjpPYmpl
Y3QqKQogewotICAgIGlmICghd2ViRnJhbWVQcm94eS0+aXNNYWluRnJhbWUoKSkKKyAgICBpZiAo
IXdlYkZyYW1lUHJveHkuaXNNYWluRnJhbWUoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYg
KCFtX25hdmlnYXRpb25TdGF0ZS5tX25hdmlnYXRpb25EZWxlZ2F0ZU1ldGhvZHMud2ViVmlld0Rp
ZEZpbmlzaE5hdmlnYXRpb24pCkBAIC00OTksMTcgKzQ5OSwxNyBAQCB2b2lkIE5hdmlnYXRpb25T
dGF0ZTo6TG9hZGVyQ2xpZW50OjpkaWRGCiAgICAgaWYgKCFuYXZpZ2F0aW9uRGVsZWdhdGUpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgYXNzZXJ0IHRoYXQgbmF2
aWdhdGlvbklEIGlzIG5vdCB6ZXJvIGhlcmUsIGJ1dCBpdCdzIGN1cnJlbnRseSB6ZXJvIGZvciBz
b21lIG5hdmlnYXRpb25zIHRocm91Z2ggdGhlIHBhZ2UgY2FjaGUuCi0gICAgV0tOYXZpZ2F0aW9u
ICpuYXZpZ2F0aW9uID0gbmlsOwotICAgIGlmIChuYXZpZ2F0aW9uSUQpCi0gICAgICAgIG5hdmln
YXRpb24gPSB3cmFwcGVyKHBhZ2UtPm5hdmlnYXRpb25TdGF0ZSgpLm5hdmlnYXRpb24obmF2aWdh
dGlvbklEKSk7CisgICAgLy8gRklYTUU6IFdlIHNob3VsZCBhc3NlcnQgdGhhdCBuYXZpZ2F0aW9u
IGlzIG5vdCBudWxsIGhlcmUsIGJ1dCBpdCdzIGN1cnJlbnRseSBudWxsIGZvciBzb21lIG5hdmln
YXRpb25zIHRocm91Z2ggdGhlIHBhZ2UgY2FjaGUuCisgICAgV0tOYXZpZ2F0aW9uICp3a05hdmln
YXRpb24gPSBuaWw7CisgICAgaWYgKG5hdmlnYXRpb24pCisgICAgICAgIHdrTmF2aWdhdGlvbiA9
IHdyYXBwZXIoKm5hdmlnYXRpb24pOwogCi0gICAgW25hdmlnYXRpb25EZWxlZ2F0ZSB3ZWJWaWV3
Om1fbmF2aWdhdGlvblN0YXRlLm1fd2ViVmlldyBkaWRGaW5pc2hOYXZpZ2F0aW9uOm5hdmlnYXRp
b25dOworICAgIFtuYXZpZ2F0aW9uRGVsZWdhdGUgd2ViVmlldzptX25hdmlnYXRpb25TdGF0ZS5t
X3dlYlZpZXcgZGlkRmluaXNoTmF2aWdhdGlvbjp3a05hdmlnYXRpb25dOwogfQogCi12b2lkIE5h
dmlnYXRpb25TdGF0ZTo6TG9hZGVyQ2xpZW50OjpkaWRGYWlsTG9hZFdpdGhFcnJvckZvckZyYW1l
KFdlYlBhZ2VQcm94eSogcGFnZSwgV2ViRnJhbWVQcm94eSogd2ViRnJhbWVQcm94eSwgdWludDY0
X3QgbmF2aWdhdGlvbklELCBjb25zdCBXZWJDb3JlOjpSZXNvdXJjZUVycm9yJiBlcnJvciwgQVBJ
OjpPYmplY3QqIHVzZXJEYXRhKQordm9pZCBOYXZpZ2F0aW9uU3RhdGU6OkxvYWRlckNsaWVudDo6
ZGlkRmFpbExvYWRXaXRoRXJyb3JGb3JGcmFtZShXZWJQYWdlUHJveHkmIHBhZ2UsIFdlYkZyYW1l
UHJveHkmIHdlYkZyYW1lUHJveHksIEFQSTo6TmF2aWdhdGlvbiogbmF2aWdhdGlvbiwgY29uc3Qg
V2ViQ29yZTo6UmVzb3VyY2VFcnJvciYgZXJyb3IsIEFQSTo6T2JqZWN0KiB1c2VyRGF0YSkKIHsK
LSAgICBpZiAoIXdlYkZyYW1lUHJveHktPmlzTWFpbkZyYW1lKCkpCisgICAgaWYgKCF3ZWJGcmFt
ZVByb3h5LmlzTWFpbkZyYW1lKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmICghbV9uYXZp
Z2F0aW9uU3RhdGUubV9uYXZpZ2F0aW9uRGVsZWdhdGVNZXRob2RzLndlYlZpZXdEaWRGYWlsTmF2
aWdhdGlvbldpdGhFcnJvcikKQEAgLTUxOSwxOCArNTE5LDE4IEBAIHZvaWQgTmF2aWdhdGlvblN0
YXRlOjpMb2FkZXJDbGllbnQ6OmRpZEYKICAgICBpZiAoIW5hdmlnYXRpb25EZWxlZ2F0ZSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgLy8gRklYTUU6IFdlIHNob3VsZCBhc3NlcnQgdGhhdCBuYXZp
Z2F0aW9uSUQgaXMgbm90IHplcm8gaGVyZSwgYnV0IGl0J3MgY3VycmVudGx5IHplcm8gZm9yIHNv
bWUgbmF2aWdhdGlvbnMgdGhyb3VnaCB0aGUgcGFnZSBjYWNoZS4KLSAgICBXS05hdmlnYXRpb24g
Km5hdmlnYXRpb24gPSBuaWw7Ci0gICAgaWYgKG5hdmlnYXRpb25JRCkKLSAgICAgICAgbmF2aWdh
dGlvbiA9IHdyYXBwZXIocGFnZS0+bmF2aWdhdGlvblN0YXRlKCkubmF2aWdhdGlvbihuYXZpZ2F0
aW9uSUQpKTsKKyAgICAvLyBGSVhNRTogV2Ugc2hvdWxkIGFzc2VydCB0aGF0IG5hdmlnYXRpb24g
aXMgbm90IG51bGwgaGVyZSwgYnV0IGl0J3MgY3VycmVudGx5IG51bGwgZm9yIHNvbWUgbmF2aWdh
dGlvbnMgdGhyb3VnaCB0aGUgcGFnZSBjYWNoZS4KKyAgICBXS05hdmlnYXRpb24gKndrTmF2aWdh
dGlvbiA9IG5pbDsKKyAgICBpZiAobmF2aWdhdGlvbikKKyAgICAgICAgd2tOYXZpZ2F0aW9uID0g
d3JhcHBlcigqbmF2aWdhdGlvbik7CiAKLSAgICBhdXRvIGVycm9yV2l0aFJlY292ZXJ5QXR0ZW1w
dGVyID0gY3JlYXRlRXJyb3JXaXRoUmVjb3ZlcnlBdHRlbXB0ZXIobV9uYXZpZ2F0aW9uU3RhdGUu
bV93ZWJWaWV3LCAqd2ViRnJhbWVQcm94eSwgZXJyb3IpOwotICAgIFtuYXZpZ2F0aW9uRGVsZWdh
dGUgd2ViVmlldzptX25hdmlnYXRpb25TdGF0ZS5tX3dlYlZpZXcgZGlkRmFpbE5hdmlnYXRpb246
bmF2aWdhdGlvbiB3aXRoRXJyb3I6ZXJyb3JXaXRoUmVjb3ZlcnlBdHRlbXB0ZXIuZ2V0KCldOwor
ICAgIGF1dG8gZXJyb3JXaXRoUmVjb3ZlcnlBdHRlbXB0ZXIgPSBjcmVhdGVFcnJvcldpdGhSZWNv
dmVyeUF0dGVtcHRlcihtX25hdmlnYXRpb25TdGF0ZS5tX3dlYlZpZXcsIHdlYkZyYW1lUHJveHks
IGVycm9yKTsKKyAgICBbbmF2aWdhdGlvbkRlbGVnYXRlIHdlYlZpZXc6bV9uYXZpZ2F0aW9uU3Rh
dGUubV93ZWJWaWV3IGRpZEZhaWxOYXZpZ2F0aW9uOndrTmF2aWdhdGlvbiB3aXRoRXJyb3I6ZXJy
b3JXaXRoUmVjb3ZlcnlBdHRlbXB0ZXIuZ2V0KCldOwogfQogCi12b2lkIE5hdmlnYXRpb25TdGF0
ZTo6TG9hZGVyQ2xpZW50OjpkaWRTYW1lRG9jdW1lbnROYXZpZ2F0aW9uRm9yRnJhbWUoV2ViUGFn
ZVByb3h5KiBwYWdlLCBXZWJGcmFtZVByb3h5KiB3ZWJGcmFtZVByb3h5LCB1aW50NjRfdCBuYXZp
Z2F0aW9uSUQsIFNhbWVEb2N1bWVudE5hdmlnYXRpb25UeXBlIG5hdmlnYXRpb25UeXBlLCBBUEk6
Ok9iamVjdCopCit2b2lkIE5hdmlnYXRpb25TdGF0ZTo6TG9hZGVyQ2xpZW50OjpkaWRTYW1lRG9j
dW1lbnROYXZpZ2F0aW9uRm9yRnJhbWUoV2ViUGFnZVByb3h5JiwgV2ViRnJhbWVQcm94eSYgd2Vi
RnJhbWVQcm94eSwgQVBJOjpOYXZpZ2F0aW9uKiBuYXZpZ2F0aW9uLCBTYW1lRG9jdW1lbnROYXZp
Z2F0aW9uVHlwZSBuYXZpZ2F0aW9uVHlwZSwgQVBJOjpPYmplY3QqKQogewotICAgIGlmICghd2Vi
RnJhbWVQcm94eS0+aXNNYWluRnJhbWUoKSkKKyAgICBpZiAoIXdlYkZyYW1lUHJveHkuaXNNYWlu
RnJhbWUoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKCFtX25hdmlnYXRpb25TdGF0ZS5t
X25hdmlnYXRpb25EZWxlZ2F0ZU1ldGhvZHMud2ViVmlld05hdmlnYXRpb25EaWRTYW1lRG9jdW1l
bnROYXZpZ2F0aW9uKQpAQCAtNTQxLDE5ICs1NDEsMTQgQEAgdm9pZCBOYXZpZ2F0aW9uU3RhdGU6
OkxvYWRlckNsaWVudDo6ZGlkUwogICAgICAgICByZXR1cm47CiAKICAgICAvLyBGSVhNRTogV2Ug
c2hvdWxkIGFzc2VydCB0aGF0IG5hdmlnYXRpb25JRCBpcyBub3QgemVybyBoZXJlLCBidXQgaXQn
cyBjdXJyZW50bHkgemVybyBmb3Igc29tZSBuYXZpZ2F0aW9ucyB0aHJvdWdoIHRoZSBwYWdlIGNh
Y2hlLgotICAgIFdLTmF2aWdhdGlvbiAqbmF2aWdhdGlvbiA9IG5pbDsKLSAgICBpZiAobmF2aWdh
dGlvbklEKQotICAgICAgICBuYXZpZ2F0aW9uID0gd3JhcHBlcihwYWdlLT5uYXZpZ2F0aW9uU3Rh
dGUoKS5uYXZpZ2F0aW9uKG5hdmlnYXRpb25JRCkpOworICAgIFdLTmF2aWdhdGlvbiAqd2tOYXZp
Z2F0aW9uID0gbmlsOworICAgIGlmIChuYXZpZ2F0aW9uKQorICAgICAgICB3a05hdmlnYXRpb24g
PSB3cmFwcGVyKCpuYXZpZ2F0aW9uKTsKIAotICAgIFtzdGF0aWNfY2FzdDxpZCA8V0tOYXZpZ2F0
aW9uRGVsZWdhdGVQcml2YXRlPj4obmF2aWdhdGlvbkRlbGVnYXRlLmdldCgpKSBfd2ViVmlldzpt
X25hdmlnYXRpb25TdGF0ZS5tX3dlYlZpZXcgbmF2aWdhdGlvbjpuYXZpZ2F0aW9uIGRpZFNhbWVE
b2N1bWVudE5hdmlnYXRpb246dG9XS1NhbWVEb2N1bWVudE5hdmlnYXRpb25UeXBlKG5hdmlnYXRp
b25UeXBlKV07CisgICAgW3N0YXRpY19jYXN0PGlkIDxXS05hdmlnYXRpb25EZWxlZ2F0ZVByaXZh
dGU+PihuYXZpZ2F0aW9uRGVsZWdhdGUuZ2V0KCkpIF93ZWJWaWV3Om1fbmF2aWdhdGlvblN0YXRl
Lm1fd2ViVmlldyBuYXZpZ2F0aW9uOndrTmF2aWdhdGlvbiBkaWRTYW1lRG9jdW1lbnROYXZpZ2F0
aW9uOnRvV0tTYW1lRG9jdW1lbnROYXZpZ2F0aW9uVHlwZShuYXZpZ2F0aW9uVHlwZSldOwogfQog
Ci12b2lkIE5hdmlnYXRpb25TdGF0ZTo6TG9hZGVyQ2xpZW50OjpkaWREZXN0cm95TmF2aWdhdGlv
bihXZWJQYWdlUHJveHkqIHBhZ2UsIHVpbnQ2NF90IG5hdmlnYXRpb25JRCkKLXsKLSAgICBwYWdl
LT5uYXZpZ2F0aW9uU3RhdGUoKS5kaWREZXN0cm95TmF2aWdhdGlvbihuYXZpZ2F0aW9uSUQpOwot
fQotCi12b2lkIE5hdmlnYXRpb25TdGF0ZTo6TG9hZGVyQ2xpZW50OjpkaWRMYXlvdXQoV2ViS2l0
OjpXZWJQYWdlUHJveHkqLCBXZWJDb3JlOjpMYXlvdXRNaWxlc3RvbmVzIGxheW91dE1pbGVzdG9u
ZXMsIEFQSTo6T2JqZWN0KikKK3ZvaWQgTmF2aWdhdGlvblN0YXRlOjpMb2FkZXJDbGllbnQ6OmRp
ZExheW91dChXZWJLaXQ6OldlYlBhZ2VQcm94eSYsIFdlYkNvcmU6OkxheW91dE1pbGVzdG9uZXMg
bGF5b3V0TWlsZXN0b25lcywgQVBJOjpPYmplY3QqKQogewogICAgIGlmICghbV9uYXZpZ2F0aW9u
U3RhdGUubV9uYXZpZ2F0aW9uRGVsZWdhdGVNZXRob2RzLndlYlZpZXdSZW5kZXJpbmdQcm9ncmVz
c0RpZENoYW5nZSkKICAgICAgICAgcmV0dXJuOwpAQCAtNTY1LDcgKzU2MCw3IEBAIHZvaWQgTmF2
aWdhdGlvblN0YXRlOjpMb2FkZXJDbGllbnQ6OmRpZEwKICAgICBbc3RhdGljX2Nhc3Q8aWQgPFdL
TmF2aWdhdGlvbkRlbGVnYXRlUHJpdmF0ZT4+KG5hdmlnYXRpb25EZWxlZ2F0ZS5nZXQoKSkgX3dl
YlZpZXc6bV9uYXZpZ2F0aW9uU3RhdGUubV93ZWJWaWV3IHJlbmRlcmluZ1Byb2dyZXNzRGlkQ2hh
bmdlOnJlbmRlcmluZ1Byb2dyZXNzRXZlbnRzKGxheW91dE1pbGVzdG9uZXMpXTsKIH0KIAotYm9v
bCBOYXZpZ2F0aW9uU3RhdGU6OkxvYWRlckNsaWVudDo6Y2FuQXV0aGVudGljYXRlQWdhaW5zdFBy
b3RlY3Rpb25TcGFjZUluRnJhbWUoV2ViS2l0OjpXZWJQYWdlUHJveHkqLCBXZWJLaXQ6OldlYkZy
YW1lUHJveHkqLCBXZWJLaXQ6OldlYlByb3RlY3Rpb25TcGFjZSogcHJvdGVjdGlvblNwYWNlKQor
Ym9vbCBOYXZpZ2F0aW9uU3RhdGU6OkxvYWRlckNsaWVudDo6Y2FuQXV0aGVudGljYXRlQWdhaW5z
dFByb3RlY3Rpb25TcGFjZUluRnJhbWUoV2ViS2l0OjpXZWJQYWdlUHJveHkmLCBXZWJLaXQ6Oldl
YkZyYW1lUHJveHkmLCBXZWJLaXQ6OldlYlByb3RlY3Rpb25TcGFjZSogcHJvdGVjdGlvblNwYWNl
KQogewogICAgIGlmIChtX25hdmlnYXRpb25TdGF0ZS5tX25hdmlnYXRpb25EZWxlZ2F0ZU1ldGhv
ZHMud2ViVmlld0RpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUNvbXBsZXRpb25IYW5k
bGVyKQogICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTU4MCw3ICs1NzUsNyBAQCBib29sIE5hdmln
YXRpb25TdGF0ZTo6TG9hZGVyQ2xpZW50OjpjYW5BCiAgICAgcmV0dXJuIFtzdGF0aWNfY2FzdDxp
ZCA8V0tOYXZpZ2F0aW9uRGVsZWdhdGVQcml2YXRlPj4obmF2aWdhdGlvbkRlbGVnYXRlLmdldCgp
KSBfd2ViVmlldzptX25hdmlnYXRpb25TdGF0ZS5tX3dlYlZpZXcgY2FuQXV0aGVudGljYXRlQWdh
aW5zdFByb3RlY3Rpb25TcGFjZTpwcm90ZWN0aW9uU3BhY2UtPnByb3RlY3Rpb25TcGFjZSgpLm5z
U3BhY2UoKV07CiB9CiAKLXZvaWQgTmF2aWdhdGlvblN0YXRlOjpMb2FkZXJDbGllbnQ6OmRpZFJl
Y2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZUluRnJhbWUoV2ViUGFnZVByb3h5KiwgV2ViRnJh
bWVQcm94eSosIEF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlUHJveHkqIGF1dGhlbnRpY2F0aW9uQ2hh
bGxlbmdlKQordm9pZCBOYXZpZ2F0aW9uU3RhdGU6OkxvYWRlckNsaWVudDo6ZGlkUmVjZWl2ZUF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlSW5GcmFtZShXZWJQYWdlUHJveHkmLCBXZWJGcmFtZVByb3h5
JiwgQXV0aGVudGljYXRpb25DaGFsbGVuZ2VQcm94eSogYXV0aGVudGljYXRpb25DaGFsbGVuZ2Up
CiB7CiAjaWYgIWRlZmluZWQoX19NQUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCkgfHwgX19N
QUNfT1NfWF9WRVJTSU9OX01JTl9SRVFVSVJFRCA+PSAxMDkwCiAgICAgaWYgKG1fbmF2aWdhdGlv
blN0YXRlLm1fbmF2aWdhdGlvbkRlbGVnYXRlTWV0aG9kcy53ZWJWaWV3RGlkUmVjZWl2ZUF1dGhl
bnRpY2F0aW9uQ2hhbGxlbmdlQ29tcGxldGlvbkhhbmRsZXIpIHsKQEAgLTYzNywxMCArNjMyLDgg
QEAgdm9pZCBOYXZpZ2F0aW9uU3RhdGU6OkxvYWRlckNsaWVudDo6ZGlkUgogICAgIFtzdGF0aWNf
Y2FzdDxpZCA8V0tOYXZpZ2F0aW9uRGVsZWdhdGVQcml2YXRlPj4obmF2aWdhdGlvbkRlbGVnYXRl
LmdldCgpKSBfd2ViVmlldzptX25hdmlnYXRpb25TdGF0ZS5tX3dlYlZpZXcgZGlkUmVjZWl2ZUF1
dGhlbnRpY2F0aW9uQ2hhbGxlbmdlOndyYXBwZXIoKmF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKV07
CiB9CiAKLXZvaWQgTmF2aWdhdGlvblN0YXRlOjpMb2FkZXJDbGllbnQ6OnByb2Nlc3NEaWRDcmFz
aChXZWJLaXQ6OldlYlBhZ2VQcm94eSogcGFnZSkKK3ZvaWQgTmF2aWdhdGlvblN0YXRlOjpMb2Fk
ZXJDbGllbnQ6OnByb2Nlc3NEaWRDcmFzaChXZWJLaXQ6OldlYlBhZ2VQcm94eSYgcGFnZSkKIHsK
LSAgICBwYWdlLT5uYXZpZ2F0aW9uU3RhdGUoKS5jbGVhckFsbE5hdmlnYXRpb25zKCk7Ci0KICAg
ICBpZiAoIW1fbmF2aWdhdGlvblN0YXRlLm1fbmF2aWdhdGlvbkRlbGVnYXRlTWV0aG9kcy53ZWJW
aWV3V2ViUHJvY2Vzc0RpZENyYXNoKQogICAgICAgICByZXR1cm47CiAKSW5kZXg6IFNvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3Bw
Cj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT0KLS0tIFNvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCShyZXZpc2lvbiAxNzgzNjQpCisrKyBTb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNDY1LDEzICs0NjUsMjMgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNs
aWVudDo6ZGlzcGF0Y2hEaWRGYQogCiAgICAgUmVmUHRyPEFQSTo6T2JqZWN0PiB1c2VyRGF0YTsK
IAotICAgIHVpbnQ2NF90IG5hdmlnYXRpb25JRCA9IHN0YXRpY19jYXN0PFdlYkRvY3VtZW50TG9h
ZGVyKj4obV9mcmFtZS0+Y29yZUZyYW1lKCktPmxvYWRlcigpLnByb3Zpc2lvbmFsRG9jdW1lbnRM
b2FkZXIoKSktPm5hdmlnYXRpb25JRCgpOwotCiAgICAgLy8gTm90aWZ5IHRoZSBidW5kbGUgY2xp
ZW50LgogICAgIHdlYlBhZ2UtPmluamVjdGVkQnVuZGxlTG9hZGVyQ2xpZW50KCkuZGlkRmFpbFBy
b3Zpc2lvbmFsTG9hZFdpdGhFcnJvckZvckZyYW1lKHdlYlBhZ2UsIG1fZnJhbWUsIGVycm9yLCB1
c2VyRGF0YSk7CiAKICAgICB3ZWJQYWdlLT5zYW5kYm94RXh0ZW5zaW9uVHJhY2tlcigpLmRpZEZh
aWxQcm92aXNpb25hbExvYWQobV9mcmFtZSk7CiAKKyAgICAvLyBGSVhNRTogVGhpcyBpcyBncm9z
cy4gVGhpcyBpcyBuZWNlc3NhcnkgYmVjYXVzZSBpZiB0aGUgY2xpZW50IGNhbGxzIFdLQnVuZGxl
UGFnZVN0b3BMb2FkaW5nKCkgZnJvbSB3aXRoaW4gdGhlIGRpZEZhaWxQcm92aXNpb25hbExvYWRX
aXRoRXJyb3JGb3JGcmFtZQorICAgIC8vIGluamVjdGVkIGJ1bmRsZSBjbGllbnQgY2FsbCwgdGhh
dCB3aWxsIGNhdXNlIHRoZSBwcm92aXNpb25hbCBEb2N1bWVudExvYWRlciB0byBiZSBkaXNjb25u
ZWN0ZWQgZnJvbSB0aGUgRnJhbWUsIGFuZCBkaWREaXN0cm95TmF2aWdhdGlvbiBtZXNzYWdlCisg
ICAgLy8gdG8gYmUgc2VudCB0byB0aGUgVUlQcm9jZXNzIChhbmQgdGhlIGRlc3RydWN0aW9uIG9m
IHRoZSBEb2N1bWVudExvYWRlcikuIElmIHRoYXQgaGFwcGVucywgYW5kIHdlIGhhZCBjYXB0dXJl
ZCB0aGUgbmF2aWdhdGlvbklEIGJlZm9yZSBpbmplY3RlZCBidW5kbGUgCisgICAgLy8gY2xpZW50
IGNhbGwsIHRoZSBEaWRGYWlsUHJvdmlzaW9uYWxMb2FkRm9yRnJhbWUgd291bGQgc2VuZCBhIG5h
dmlnYXRpb25JRCBvZiBhIGRlc3Ryb3llZCBOYXZpZ2F0aW9uLCBhbmQgdGhlIFVJUHJvY2VzcyB3
b3VsZCBub3QgYmUgYWJsZSB0byBmaW5kIGl0CisgICAgLy8gaW4gaXRzIHRhYmxlLgorICAgIC8v
CisgICAgLy8gQSBiZXR0ZXIgc29sdXRpb24gdG8gdGhpcyBwcm9ibGVtIHdvdWxkIGJlIGZpbmQg
YSBjbGVhbiB3YXkgdG8gcG9zdHBvbmUgdGhlIGRpc2Nvbm5lY3Rpb24gb2YgdGhlIERvY3VtZW50
TG9hZGVyIGZyb20gdGhlIEZyYW1lIHVudGlsCisgICAgLy8gdGhlIGVudGlyZSBGcmFtZUxvYWRl
ckNsaWVudCBmdW5jdGlvbiB3YXMgY29tcGxldGUuCisgICAgdWludDY0X3QgbmF2aWdhdGlvbklE
ID0gMDsKKyAgICBpZiAoYXV0byBkb2N1bWVudExvYWRlciA9IG1fZnJhbWUtPmNvcmVGcmFtZSgp
LT5sb2FkZXIoKS5wcm92aXNpb25hbERvY3VtZW50TG9hZGVyKCkpCisgICAgICAgIG5hdmlnYXRp
b25JRCA9IHN0YXRpY19jYXN0PFdlYkRvY3VtZW50TG9hZGVyKj4oZG9jdW1lbnRMb2FkZXIpLT5u
YXZpZ2F0aW9uSUQoKTsKKwogICAgIC8vIE5vdGlmeSB0aGUgVUlQcm9jZXNzLgogICAgIHdlYlBh
Z2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkRmFpbFByb3Zpc2lvbmFsTG9hZEZv
ckZyYW1lKG1fZnJhbWUtPmZyYW1lSUQoKSwgbmF2aWdhdGlvbklELCBlcnJvciwgVXNlckRhdGEo
V2ViUHJvY2Vzczo6c2hhcmVkKCkudHJhbnNmb3JtT2JqZWN0c1RvSGFuZGxlcyh1c2VyRGF0YS5n
ZXQoKSkuZ2V0KCkpKSk7CiAK
</data>
<flag name="review"
          id="269460"
          type_id="1"
          status="+"
          setter="andersca"
    />
          </attachment>
      

    </bug>

</bugzilla>