<?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>131978</bug_id>
          
          <creation_ts>2014-04-22 02:15:54 -0700</creation_ts>
          <short_desc>Frame::document() should return a reference</short_desc>
          <delta_ts>2014-04-22 22:57:23 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Frames</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>NEW</bug_status>
          <resolution></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="Gyuyoung Kim">gyuyoung.kim</reporter>
          <assigned_to name="Gyuyoung Kim">gyuyoung.kim</assigned_to>
          <cc>kling</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1002841</commentid>
    <comment_count>0</comment_count>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2014-04-22 02:15:54 -0700</bug_when>
    <thetext>As mentioned in https://bugs.webkit.org/show_bug.cgi?id=131652#c3, frame should always have a document. So, we can return a reference in frame.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1002842</commentid>
    <comment_count>1</comment_count>
      <attachid>229872</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2014-04-22 02:17:42 -0700</bug_when>
    <thetext>Created attachment 229872
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1002844</commentid>
    <comment_count>2</comment_count>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2014-04-22 02:19:16 -0700</bug_when>
    <thetext>Kling, I wonder if there is any chance that a frame has a null document.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1003177</commentid>
    <comment_count>3</comment_count>
      <attachid>229953</attachid>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2014-04-22 21:54:26 -0700</bug_when>
    <thetext>Created attachment 229953
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1003196</commentid>
    <comment_count>4</comment_count>
    <who name="Andreas Kling">kling</who>
    <bug_when>2014-04-22 22:53:55 -0700</bug_when>
    <thetext>Frame::document() will be null when the Frame is created, until the FrameLoader has completed loading the initial document. It will also become null during teardown.

We shouldn&apos;t make document() return a reference until we&apos;ve eliminated those cases where it can be null.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1003198</commentid>
    <comment_count>5</comment_count>
    <who name="Gyuyoung Kim">gyuyoung.kim</who>
    <bug_when>2014-04-22 22:57:23 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; Frame::document() will be null when the Frame is created, until the FrameLoader has completed loading the initial document. It will also become null during teardown.
&gt; 
&gt; We shouldn&apos;t make document() return a reference until we&apos;ve eliminated those cases where it can be null.

Kling, thank you for your answer. Let me check those cases.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>229872</attachid>
            <date>2014-04-22 02:17:42 -0700</date>
            <delta_ts>2014-04-22 21:54:26 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>wip.patch</filename>
            <type>text/plain</type>
            <size>404263</size>
            <attacher name="Gyuyoung Kim">gyuyoung.kim</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA1YjAyMTBjOC4uZDU5YjIwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU0
OCBAQAorMjAxNC0wNC0yMiAgR3l1eW91bmcgS2ltICA8Z3l1eW91bmcua2ltQHNhbXN1bmcuY29t
PgorCisgICAgICAgIE5lZWQgYSBzaG9ydCBkZXNjcmlwdGlvbiAoT09QUyEpLgorICAgICAgICBO
ZWVkIHRoZSBidWcgVVJMIChPT1BTISkuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIChPT1BTISkuCisKKyAgICAgICAgKiBNb2R1
bGVzL2JhdHRlcnkvQmF0dGVyeU1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QmF0dGVy
eU1hbmFnZXI6OkJhdHRlcnlNYW5hZ2VyKToKKyAgICAgICAgKiBNb2R1bGVzL2dlb2xvY2F0aW9u
L05hdmlnYXRvckdlb2xvY2F0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5hdmlnYXRvckdl
b2xvY2F0aW9uOjpnZW9sb2NhdGlvbik6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9O
YXZpZ2F0b3JNZWRpYVN0cmVhbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOYXZpZ2F0b3JNZWRp
YVN0cmVhbTo6d2Via2l0R2V0VXNlck1lZGlhKToKKyAgICAgICAgKiBNb2R1bGVzL25hdmlnYXRv
cmNvbnRlbnR1dGlscy9OYXZpZ2F0b3JDb250ZW50VXRpbHMuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6TmF2aWdhdG9yQ29udGVudFV0aWxzOjpyZWdpc3RlclByb3RvY29sSGFuZGxlcik6CisgICAg
ICAgIChXZWJDb3JlOjpOYXZpZ2F0b3JDb250ZW50VXRpbHM6OmlzUHJvdG9jb2xIYW5kbGVyUmVn
aXN0ZXJlZCk6CisgICAgICAgIChXZWJDb3JlOjpOYXZpZ2F0b3JDb250ZW50VXRpbHM6OnVucmVn
aXN0ZXJQcm90b2NvbEhhbmRsZXIpOgorICAgICAgICAqIE1vZHVsZXMvcXVvdGEvRE9NV2luZG93
UXVvdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NV2luZG93UXVvdGE6OndlYmtpdFN0b3Jh
Z2VJbmZvKToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6QVhPYmplY3RDYWNoZTo6Zm9jdXNlZFVJRWxlbWVudEZvclBhZ2UpOgor
ICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjphcHBlbmRBY2Nlc3NpYmlsaXR5T2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkFjY2Vzc2liaWxpdHlPYmplY3Q6OnNlbGVjdGlvblJhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6
OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmRvY3VtZW50KToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5
L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNz
aWJpbGl0eVJlbmRlck9iamVjdDo6dGV4dFVuZGVyRWxlbWVudCk6CisgICAgICAgIChXZWJDb3Jl
OjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojp2aXNpYmxlUG9zaXRpb25Gb3JQb2ludCk6Cisg
ICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpyZW1vdGVTVkdSb290
RWxlbWVudCk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2Nyb2xsVmll
dy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldzo6d2ViQXJl
YU9iamVjdCk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0eU9i
amVjdFdyYXBwZXJJT1MubW06CisgICAgICAgIChyZW5kZXJlckZvclZpZXcpOgorICAgICAgICAq
IGFjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tOgor
ICAgICAgICAocmVuZGVyZXJGb3JWaWV3KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUJp
bmRpbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2hvdWxkQWxsb3dBY2Nlc3NUb0ZyYW1lKToK
KyAgICAgICAgKFdlYkNvcmU6OnByaW50RXJyb3JNZXNzYWdlRm9yRnJhbWUpOgorICAgICAgICAo
V2ViQ29yZTo6QmluZGluZ1NlY3VyaXR5OjpzaG91bGRBbGxvd0FjY2Vzc1RvRnJhbWUpOgorICAg
ICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmNoaWxkRnJhbWVHZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6aW5kZXhHZXR0ZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6bmFtZWRJdGVtR2V0dGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkpT
RE9NV2luZG93OjpnZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAgICAgICAoV2ViQ29yZTo6SlNET01X
aW5kb3c6OmdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgpOgorICAgICAgICAqIGJpbmRpbmdzL2pz
L0pTRG9jdW1lbnRDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNEb2N1bWVudDo6bG9j
YXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6SlNEb2N1bWVudDo6c2V0TG9jYXRpb24pOgorICAg
ICAgICAqIGJpbmRpbmdzL2pzL0pTTGF6eUV2ZW50TGlzdGVuZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SlNMYXp5RXZlbnRMaXN0ZW5lcjo6Y3JlYXRlRm9yRE9NV2luZG93KToKKyAgICAgICAg
KiBiaW5kaW5ncy9qcy9TY3JpcHRDYWNoZWRGcmFtZURhdGEuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U2NyaXB0Q2FjaGVkRnJhbWVEYXRhOjpyZXN0b3JlKToKKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9TY3JpcHRDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENvbnRyb2xs
ZXI6OmNyZWF0ZVdpbmRvd1NoZWxsKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENvbnRyb2xs
ZXI6OmluaXRTY3JpcHQpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0Q29udHJvbGxlcjo6ZXZl
bnRIYW5kbGVyUG9zaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0Q29udHJvbGxlcjo6
ZXhlY3V0ZVNjcmlwdEluV29ybGQpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0Q29udHJvbGxl
cjo6Y2FuRXhlY3V0ZVNjcmlwdHMpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0Q29udHJvbGxl
cjo6ZXhlY3V0ZVNjcmlwdCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRDb250cm9sbGVyOjpl
eGVjdXRlSWZKYXZhU2NyaXB0VVJMKToKKyAgICAgICAgKiBjc3MvTWVkaWFRdWVyeUV2YWx1YXRv
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpkZXZpY2VfaGVpZ2h0TWVkaWFGZWF0dXJlRXZhbCk6
CisgICAgICAgIChXZWJDb3JlOjpkZXZpY2Vfd2lkdGhNZWRpYUZlYXR1cmVFdmFsKToKKyAgICAg
ICAgKFdlYkNvcmU6OmhlaWdodE1lZGlhRmVhdHVyZUV2YWwpOgorICAgICAgICAoV2ViQ29yZTo6
d2lkdGhNZWRpYUZlYXR1cmVFdmFsKToKKyAgICAgICAgKiBjc3MvU3R5bGVNZWRpYS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTdHlsZU1lZGlhOjptYXRjaE1lZGl1bSk6CisgICAgICAgICogZG9t
L0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNhbkFjY2Vzc0FuY2VzdG9yKToKKyAg
ICAgICAgKFdlYkNvcmU6OnByaW50TmF2aWdhdGlvbkVycm9yTWVzc2FnZSk6CisgICAgICAgIChX
ZWJDb3JlOjpwYWdlV2hlZWxFdmVudEhhbmRsZXJDb3VudENoYW5nZWQpOgorICAgICAgICAoV2Vi
Q29yZTo6RG9jdW1lbnQ6OmZpbmRVbnNhZmVQYXJlbnRTY3JvbGxQcm9wYWdhdGlvbkJvdW5kYXJ5
KToKKyAgICAgICAgKFdlYkNvcmU6OmNvbW1hbmQpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1l
bnQ6OnNldERlc2lnbk1vZGUpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnBhcmVudERv
Y3VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojp0b3BEb2N1bWVudCk6CisgICAg
ICAgIChXZWJDb3JlOjpEb2N1bWVudDo6aW5pdFNlY3VyaXR5Q29udGV4dCk6CisgICAgICAgIChX
ZWJDb3JlOjpEb2N1bWVudDo6ZGlkUmVtb3ZlVG91Y2hFdmVudEhhbmRsZXIpOgorICAgICAgICAo
V2ViQ29yZTo6RG9jdW1lbnQ6OmxvYWRlcik6CisgICAgICAgICogZG9tL1VzZXJUeXBpbmdHZXN0
dXJlSW5kaWNhdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlVzZXJUeXBpbmdHZXN0dXJlSW5k
aWNhdG9yOjpVc2VyVHlwaW5nR2VzdHVyZUluZGljYXRvcik6CisgICAgICAgICogZWRpdGluZy9B
bHRlcm5hdGl2ZVRleHRDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFsdGVybmF0
aXZlVGV4dENvbnRyb2xsZXI6OmlzU3BlbGxpbmdNYXJrZXJBbGxvd2VkKToKKyAgICAgICAgKFdl
YkNvcmU6OkFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXI6OnJlc3BvbmRUb1VuYXBwbGllZFNwZWxs
Q29ycmVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVy
OjpyZXNwb25kVG9BcHBsaWVkRWRpdGluZyk6CisgICAgICAgIChXZWJDb3JlOjpBbHRlcm5hdGl2
ZVRleHRDb250cm9sbGVyOjpyZXNwb25kVG9VbmFwcGxpZWRFZGl0aW5nKToKKyAgICAgICAgKFdl
YkNvcmU6OkFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXI6Om1hcmtQcmVjZWRpbmdXaGl0ZXNwYWNl
Rm9yRGVsZXRlZEF1dG9jb3JyZWN0aW9uQWZ0ZXJDb21tYW5kKToKKyAgICAgICAgKFdlYkNvcmU6
OkFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXI6OnByb2Nlc3NNYXJrZXJzT25UZXh0VG9CZVJlcGxh
Y2VkQnlSZXN1bHQpOgorICAgICAgICAoV2ViQ29yZTo6QWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxl
cjo6aW5zZXJ0RGljdGF0ZWRUZXh0KToKKyAgICAgICAgKiBlZGl0aW5nL0RlbGV0ZUJ1dHRvbkNv
bnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGVsZXRlQnV0dG9uQ29udHJvbGxlcjo6
c2hvdyk6CisgICAgICAgIChXZWJDb3JlOjpEZWxldGVCdXR0b25Db250cm9sbGVyOjplbmFibGUp
OgorICAgICAgICAqIGVkaXRpbmcvRWRpdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRv
cjo6ZG9jdW1lbnQpOgorICAgICAgICAqIGVkaXRpbmcvRWRpdG9yQ29tbWFuZC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpleGVjdXRlSW5zZXJ0RnJhZ21lbnQpOgorICAgICAgICAoV2ViQ29yZTo6
ZXhlY3V0ZUluc2VydE5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6dmVydGljYWxTY3JvbGxEaXN0
YW5jZSk6CisgICAgICAgIChXZWJDb3JlOjpleGVjdXRlQ3JlYXRlTGluayk6CisgICAgICAgIChX
ZWJDb3JlOjpleGVjdXRlRGVsZXRlKToKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVGb3JtYXRC
bG9jayk6CisgICAgICAgIChXZWJDb3JlOjpleGVjdXRlRm9yd2FyZERlbGV0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpleGVjdXRlSW5kZW50KToKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVJbnNl
cnRIb3Jpem9udGFsUnVsZSk6CisgICAgICAgIChXZWJDb3JlOjpleGVjdXRlSW5zZXJ0SFRNTCk6
CisgICAgICAgIChXZWJDb3JlOjpleGVjdXRlSW5zZXJ0SW1hZ2UpOgorICAgICAgICAoV2ViQ29y
ZTo6ZXhlY3V0ZUluc2VydExpbmVCcmVhayk6CisgICAgICAgIChXZWJDb3JlOjpleGVjdXRlSW5z
ZXJ0TmV3bGluZUluUXVvdGVkQ29udGVudCk6CisgICAgICAgIChXZWJDb3JlOjpleGVjdXRlSW5z
ZXJ0T3JkZXJlZExpc3QpOgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZUluc2VydFBhcmFncmFw
aCk6CisgICAgICAgIChXZWJDb3JlOjpleGVjdXRlSW5zZXJ0VGV4dCk6CisgICAgICAgIChXZWJD
b3JlOjpleGVjdXRlSW5zZXJ0VW5vcmRlcmVkTGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpleGVj
dXRlT3V0ZGVudCk6CisgICAgICAgIChXZWJDb3JlOjpleGVjdXRlVW5saW5rKToKKyAgICAgICAg
KFdlYkNvcmU6OkVkaXRvcjo6Q29tbWFuZDo6ZXhlY3V0ZSk6CisgICAgICAgICogZWRpdGluZy9G
cmFtZVNlbGVjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVNlbGVjdGlvbjo6cm9v
dEVkaXRhYmxlRWxlbWVudE9yRG9jdW1lbnRFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkZy
YW1lU2VsZWN0aW9uOjpzZXRTZWxlY3Rpb25XaXRob3V0VXBkYXRpbmdBcHBlYXJhbmNlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkZyYW1lU2VsZWN0aW9uOjpzZXRTZWxlY3Rpb24pOgorICAgICAgICAo
V2ViQ29yZTo6dXBkYXRlU2VsZWN0aW9uQnlVcGRhdGluZ0xheW91dE9yU3R5bGUpOgorICAgICAg
ICAoV2ViQ29yZTo6RnJhbWVTZWxlY3Rpb246OnJlY29tcHV0ZUNhcmV0UmVjdCk6CisgICAgICAg
IChXZWJDb3JlOjpGcmFtZVNlbGVjdGlvbjo6Y29udGFpbnMpOgorICAgICAgICAoV2ViQ29yZTo6
RnJhbWVTZWxlY3Rpb246OnNlbGVjdEFsbCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVNlbGVj
dGlvbjo6Zm9jdXNlZE9yQWN0aXZlU3RhdGVDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkZy
YW1lU2VsZWN0aW9uOjpzZXRGb2N1c2VkRWxlbWVudElmTmVlZGVkKToKKyAgICAgICAgKFdlYkNv
cmU6OkZyYW1lU2VsZWN0aW9uOjpzZWxlY3Rpb25Cb3VuZHMpOgorICAgICAgICAoV2ViQ29yZTo6
RnJhbWVTZWxlY3Rpb246OmN1cnJlbnRGb3JtKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lU2Vs
ZWN0aW9uOjpzZXRTZWxlY3Rpb25Gcm9tTm9uZSk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVNl
bGVjdGlvbjo6c2V0U2hvdWxkU2hvd0Jsb2NrQ3Vyc29yKToKKyAgICAgICAgKFdlYkNvcmU6OkZy
YW1lU2VsZWN0aW9uOjpzZWxlY3RSYW5nZU9uRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpG
cmFtZVNlbGVjdGlvbjo6c2V0Q2FyZXRCbGlua3MpOgorICAgICAgICAqIGVkaXRpbmcvU3BlbGxD
aGVja2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNwZWxsQ2hlY2tlcjo6ZGlkQ2hlY2tTdWNj
ZWVkKToKKyAgICAgICAgKiBlZGl0aW5nL2F0ay9GcmFtZVNlbGVjdGlvbkF0ay5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpGcmFtZVNlbGVjdGlvbjo6bm90aWZ5QWNjZXNzaWJpbGl0eUZvclNlbGVj
dGlvbkNoYW5nZSk6CisgICAgICAgICogZWRpdGluZy9pb3MvRWRpdG9ySU9TLm1tOgorICAgICAg
ICAoV2ViQ29yZTo6RWRpdG9yOjpzZXRUZXh0QWxpZ25tZW50Rm9yQ2hhbmdlZEJhc2VXcml0aW5n
RGlyZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OnN0eWxlRm9yU2VsZWN0aW9uU3RhcnQpOgor
ICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpyZW1vdmVVbmNoYW5nZWFibGVTdHlsZXMpOgorICAg
ICAgICAoV2ViQ29yZTo6RWRpdG9yOjpXZWJDb250ZW50UmVhZGVyOjpyZWFkVVJMKToKKyAgICAg
ICAgKFdlYkNvcmU6OkVkaXRvcjo6Y3JlYXRlRnJhZ21lbnRBbmRBZGRSZXNvdXJjZXMpOgorICAg
ICAgICAoV2ViQ29yZTo6RWRpdG9yOjpjcmVhdGVGcmFnbWVudEZvckltYWdlUmVzb3VyY2VBbmRB
ZGRSZXNvdXJjZSk6CisgICAgICAgICogZWRpdGluZy9tYWMvRWRpdG9yTWFjLm1tOgorICAgICAg
ICAoV2ViQ29yZTo6c3R5bGVGb3JTZWxlY3Rpb25TdGFydCk6CisgICAgICAgIChXZWJDb3JlOjpF
ZGl0b3I6OldlYkNvbnRlbnRSZWFkZXI6OnJlYWRVUkwpOgorICAgICAgICAqIGhpc3RvcnkvQ2Fj
aGVkRnJhbWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkRnJhbWVCYXNlOjpDYWNoZWRG
cmFtZUJhc2UpOgorICAgICAgICAqIGhpc3RvcnkvQ2FjaGVkUGFnZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDYWNoZWRQYWdlOjpyZXN0b3JlKToKKyAgICAgICAgKiBoaXN0b3J5L1BhZ2VDYWNo
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpsb2dDYW5DYWNoZUZyYW1lRGVjaXNpb24pOgorICAg
ICAgICAoV2ViQ29yZTo6UGFnZUNhY2hlOjpjYW5DYWNoZVBhZ2VDb250YWluaW5nVGhpc0ZyYW1l
KToKKyAgICAgICAgKiBodG1sL0hUTUxGcmFtZU93bmVyRWxlbWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MRnJhbWVPd25lckVsZW1lbnQ6OmNvbnRlbnREb2N1bWVudCk6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MRnJhbWVPd25lckVsZW1lbnQ6OmNvbnRlbnRXaW5kb3cpOgorICAgICAg
ICAqIGh0bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MUGx1Z0luSW1hZ2VFbGVtZW50OjpyZXN0YXJ0U2ltaWxhclBsdWdJbnMpOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTFBsdWdJbkltYWdlRWxlbWVudDo6dXNlckRpZENsaWNrU25hcHNob3QpOgor
ICAgICAgICAoV2ViQ29yZTo6ZG9jdW1lbnRIYWRSZWNlbnRVc2VyR2VzdHVyZSk6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MUGx1Z0luSW1hZ2VFbGVtZW50OjpzdWJmcmFtZUxvYWRlcldpbGxDcmVh
dGVQbHVnSW4pOgorICAgICAgICAqIGh0bWwvcGFyc2VyL0hUTUxTY3JpcHRSdW5uZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6ZG9jdW1lbnRVUkxGb3JTY3JpcHRFeGVjdXRpb24pOgorICAgICAg
ICAqIGluc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JET01BZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKToKKyAgICAgICAg
KiBpbnNwZWN0b3IvSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudDo6c3RvcmFnZUlkKToKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudDo6ZmluZFN0b3JhZ2VBcmVhKToKKyAgICAgICAg
KiBpbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsOjpvcGVuSW5OZXdUYWIpOgorICAg
ICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjphc3NlcnREb2N1bWVudCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvcklu
c3RydW1lbnRhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb246OmRpZENvbW1pdExvYWRJbXBsKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9y
T3ZlcmxheS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JPdmVybGF5Ojp1cGRhdGUp
OgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9yUGFnZUFnZW50OjptYWluUmVzb3VyY2VDb250ZW50KToKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3RvclBhZ2VBZ2VudDo6Y2FjaGVkUmVzb3VyY2UpOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9yUGFnZUFnZW50OjpuYXZpZ2F0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpjYWNoZWRSZXNvdXJjZXNGb3JGcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JQYWdlQWdlbnQ6OmdldENvb2tpZXMpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUGFn
ZUFnZW50OjpkZWxldGVDb29raWUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUGFnZUFn
ZW50OjpzZWFyY2hJblJlc291cmNlcyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JQYWdl
QWdlbnQ6OnNldERvY3VtZW50Q29udGVudCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JQ
YWdlQWdlbnQ6OmZpbmRGcmFtZVdpdGhTZWN1cml0eU9yaWdpbik6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JQYWdlQWdlbnQ6OmJ1aWxkT2JqZWN0Rm9yRnJhbWUpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9yUGFnZUFnZW50OjpzZXRFbXVsYXRlZE1lZGlhKToKKyAgICAgICAgKiBp
bnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JSZXNvdXJjZUFnZW50Ojp3aWxsU2VuZFJlcXVlc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6ZGlkRmluaXNoTG9hZGluZyk6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpkaWRGYWlsTG9hZGluZyk6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpkaWRMb2FkUmVzb3VyY2VGcm9tTWVt
b3J5Q2FjaGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6cmVw
bGF5WEhSKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclJlc291cmNlQWdlbnQ6OmxvYWRS
ZXNvdXJjZSk6CisgICAgICAgICogaW5zcGVjdG9yL1BhZ2VTY3JpcHREZWJ1Z1NlcnZlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpQYWdlU2NyaXB0RGVidWdTZXJ2ZXI6OnNldEphdmFTY3JpcHRQ
YXVzZWQpOgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudExvYWRlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6ZG9jdW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6RG9j
dW1lbnRMb2FkZXI6OnN0b3BMb2FkaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9h
ZGVyOjpmaW5pc2hlZExvYWRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6
OndpbGxTZW5kUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6cmVz
cG9uc2VSZWNlaXZlZCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6Y29tbWl0
RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6Y2hlY2tMb2FkQ29tcGxl
dGUpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OmlzTG9hZGluZ0luQVBJU2Vu
c2UpOgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudFdyaXRlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpjYW5SZWZlclRvUGFyZW50RnJhbWVFbmNvZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpE
b2N1bWVudFdyaXRlcjo6cmVwbGFjZURvY3VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3Vt
ZW50V3JpdGVyOjpiZWdpbik6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFdyaXRlcjo6Y3Jl
YXRlRGVjb2RlcklmTmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50V3JpdGVyOjpy
ZXBvcnREYXRhUmVjZWl2ZWQpOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRSZXF1ZXN0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZFJlcXVlc3Q6OkZyYW1lTG9hZFJlcXVlc3Qp
OgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpp
c0RvY3VtZW50U2FuZGJveGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjppbml0
KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjp1cmxTZWxlY3RlZCk6CisgICAgICAg
IChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6c3VibWl0Rm9ybSk6CisgICAgICAgIChXZWJDb3JlOjpG
cmFtZUxvYWRlcjo6c3RvcExvYWRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6
OnN0b3ApOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmRpZE9wZW5VUkwpOgorICAg
ICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmNsZWFyKToKKyAgICAgICAgKFdlYkNvcmU6OkZy
YW1lTG9hZGVyOjpyZWNlaXZlZEZpcnN0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxv
YWRlcjo6ZGlkQmVnaW5Eb2N1bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6
ZmluaXNoZWRQYXJzaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpjaGVja0Nv
bXBsZXRlZCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6Y2hlY2tDYWxsSW1wbGlj
aXRDbG9zZSk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6bG9hZFVSTEludG9DaGls
ZEZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpvdXRnb2luZ1JlZmVycmVy
KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpvdXRnb2luZ09yaWdpbik6CisgICAg
ICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6Y2hlY2tJZkZvcm1BY3Rpb25BbGxvd2VkQnlDU1Ap
OgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OnNldE9wZW5lcik6CisgICAgICAgIChX
ZWJDb3JlOjpGcmFtZUxvYWRlcjo6dXBkYXRlRmlyc3RQYXJ0eUZvckNvb2tpZXMpOgorICAgICAg
ICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OnNldEZpcnN0UGFydHlGb3JDb29raWVzKToKKyAgICAg
ICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpsb2FkSW5TYW1lRG9jdW1lbnQpOgorICAgICAgICAo
V2ViQ29yZTo6RnJhbWVMb2FkZXI6OnByZXBhcmVGb3JMb2FkU3RhcnQpOgorICAgICAgICAoV2Vi
Q29yZTo6RnJhbWVMb2FkZXI6OmxvYWRGcmFtZVJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6
RnJhbWVMb2FkZXI6OmxvYWRVUkwpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6Omxv
YWRXaXRoRG9jdW1lbnRMb2FkZXIpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OnJl
cG9ydExvY2FsTG9hZEZhaWxlZCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6c3Rv
cEFsbExvYWRlcnMpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmNvbW1pdFByb3Zp
c2lvbmFsTG9hZCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6cHJlcGFyZUZvckNh
Y2hlZFBhZ2VSZXN0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpjaGVja0xv
YWRDb21wbGV0ZUZvclRoaXNGcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpvcmlnaW5hdGluZ1VS
TEZyb21CYWNrRm9yd2FyZExpc3QpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6Om51
bVBlbmRpbmdPckxvYWRpbmdSZXF1ZXN0cyk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRl
cjo6ZnJhbWVEZXRhY2hlZCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6YWRkRXh0
cmFGaWVsZHNUb1JlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmxvYWRS
ZXNvdXJjZVN5bmNocm9ub3VzbHkpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OnNo
b3VsZFBlcmZvcm1GcmFnbWVudE5hdmlnYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVM
b2FkZXI6OnNjcm9sbFRvRnJhZ21lbnRXaXRoUGFyZW50Qm91bmRhcnkpOgorICAgICAgICAoV2Vi
Q29yZTo6RnJhbWVMb2FkZXI6OmhhbmRsZUJlZm9yZVVubG9hZEV2ZW50KToKKyAgICAgICAgKFdl
YkNvcmU6OkZyYW1lTG9hZGVyOjpjb250aW51ZUxvYWRBZnRlck5ld1dpbmRvd1BvbGljeSk6Cisg
ICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6c2hvdWxkSW50ZXJydXB0TG9hZEZvclhGcmFt
ZU9wdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmVmZmVjdGl2ZVNhbmRi
b3hGbGFncyk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVXaW5kb3cpOgorICAgICAgICAqIGxv
YWRlci9GcmFtZU5ldHdvcmtpbmdDb250ZXh0Lmg6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZU5l
dHdvcmtpbmdDb250ZXh0OjpzaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0
KToKKyAgICAgICAgKiBsb2FkZXIvSGlzdG9yeUNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SGlzdG9yeUNvbnRyb2xsZXI6OnNhdmVTY3JvbGxQb3NpdGlvbkFuZFZpZXdTdGF0ZVRv
SXRlbSk6CisgICAgICAgIChXZWJDb3JlOjpIaXN0b3J5Q29udHJvbGxlcjo6c2F2ZURvY3VtZW50
U3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SGlzdG9yeUNvbnRyb2xsZXI6OnJlc3RvcmVEb2N1
bWVudFN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6Okhpc3RvcnlDb250cm9sbGVyOjppbnZhbGlk
YXRlQ3VycmVudEl0ZW1DYWNoZWRQYWdlKToKKyAgICAgICAgKFdlYkNvcmU6Okhpc3RvcnlDb250
cm9sbGVyOjp1cGRhdGVGb3JTdGFuZGFyZExvYWQpOgorICAgICAgICAoV2ViQ29yZTo6SGlzdG9y
eUNvbnRyb2xsZXI6OnVwZGF0ZUZvclJlZGlyZWN0V2l0aExvY2tlZEJhY2tGb3J3YXJkTGlzdCk6
CisgICAgICAgIChXZWJDb3JlOjpIaXN0b3J5Q29udHJvbGxlcjo6dXBkYXRlRm9yU2FtZURvY3Vt
ZW50TmF2aWdhdGlvbik6CisgICAgICAgICogbG9hZGVyL01peGVkQ29udGVudENoZWNrZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6TWl4ZWRDb250ZW50Q2hlY2tlcjo6bG9nV2FybmluZyk6Cisg
ICAgICAgICogbG9hZGVyL05hdmlnYXRpb25TY2hlZHVsZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6TmF2aWdhdGlvblNjaGVkdWxlcjo6c2NoZWR1bGVSZWRpcmVjdCk6CisgICAgICAgIChXZWJD
b3JlOjpOYXZpZ2F0aW9uU2NoZWR1bGVyOjptdXN0TG9ja0JhY2tGb3J3YXJkTGlzdCk6CisgICAg
ICAgIChXZWJDb3JlOjpOYXZpZ2F0aW9uU2NoZWR1bGVyOjpzY2hlZHVsZUxvY2F0aW9uQ2hhbmdl
KToKKyAgICAgICAgKFdlYkNvcmU6Ok5hdmlnYXRpb25TY2hlZHVsZXI6OnNjaGVkdWxlUmVmcmVz
aCk6CisgICAgICAgICogbG9hZGVyL1BpbmdMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UGluZ0xvYWRlcjo6bG9hZEltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OlBpbmdMb2FkZXI6OnNl
bmRQaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlBpbmdMb2FkZXI6OnNlbmRWaW9sYXRpb25SZXBv
cnQpOgorICAgICAgICAqIGxvYWRlci9Qb2xpY3lDaGVja2VyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlBvbGljeUNoZWNrZXI6OmNoZWNrTmV3V2luZG93UG9saWN5KToKKyAgICAgICAgKiBsb2Fk
ZXIvUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNl
TG9hZFNjaGVkdWxlcjo6bm90aWZ5RGlkU2NoZWR1bGVSZXNvdXJjZVJlcXVlc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkU2NoZWR1bGVyOjpzZXJ2ZVBlbmRpbmdSZXF1ZXN0cyk6
CisgICAgICAgICogbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlc291cmNlTG9hZGVyOjppbml0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVy
OjpkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UpOgorICAgICAgICAqIGxvYWRlci9T
dWJmcmFtZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdWJmcmFtZUxvYWRlcjo6bG9h
ZE1lZGlhUGxheWVyUHJveHlQbHVnaW4pOgorICAgICAgICAoV2ViQ29yZTo6U3ViZnJhbWVMb2Fk
ZXI6OmNyZWF0ZUphdmFBcHBsZXRXaWRnZXQpOgorICAgICAgICAoV2ViQ29yZTo6U3ViZnJhbWVM
b2FkZXI6OmxvYWRPclJlZGlyZWN0U3ViZnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6U3ViZnJh
bWVMb2FkZXI6OmRvY3VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlN1YmZyYW1lTG9hZGVyOjpj
b21wbGV0ZVVSTCk6CisgICAgICAgICogbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlN1YnJlc291cmNlTG9hZGVyOjpTdWJyZXNvdXJjZUxvYWRlcik6Cisg
ICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OnNlbGVjdENhY2hlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6c2VsZWN0Q2FjaGVXaXRob3V0TWFu
aWZlc3RVUkwpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZUdyb3VwOjp1cGRh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZUdyb3VwOjphYm9ydCk6Cisg
ICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OmRpZFJlY2VpdmVSZXNwb25z
ZSk6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OmRpZEZpbmlzaExv
YWRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZUdyb3VwOjpkaWRGYWls
KToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6ZGlkUmVjZWl2ZU1h
bmlmZXN0UmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZUdyb3Vw
OjpkaWRGaW5pc2hMb2FkaW5nTWFuaWZlc3QpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRp
b25DYWNoZUdyb3VwOjpjaGVja0lmTG9hZElzQ29tcGxldGUpOgorICAgICAgICAoV2ViQ29yZTo6
QXBwbGljYXRpb25DYWNoZUdyb3VwOjpwb3N0TGlzdGVuZXJUYXNrKToKKyAgICAgICAgKiBsb2Fk
ZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
QXBwbGljYXRpb25DYWNoZUhvc3Q6OmlzQXBwbGljYXRpb25DYWNoZUJsb2NrZWRGb3JSZXF1ZXN0
KToKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvRE9NQXBwbGljYXRpb25DYWNoZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpET01BcHBsaWNhdGlvbkNhY2hlOjpzY3JpcHRFeGVjdXRpb25Db250
ZXh0KToKKyAgICAgICAgKiBsb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZSk6CisgICAgICAgICog
bG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxBcmNoaXZlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
Ok1IVE1MQXJjaGl2ZTo6Z2VuZXJhdGVNSFRNTERhdGEpOgorICAgICAgICAqIGxvYWRlci9jYWNo
ZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNv
dXJjZUxvYWRlcjo6Y2hlY2tJbnNlY3VyZUNvbnRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6Q2Fj
aGVkUmVzb3VyY2VMb2FkZXI6OnByaW50QWNjZXNzRGVuaWVkTWVzc2FnZSk6CisgICAgICAgICog
bG9hZGVyL2ljb24vSWNvbkNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SWNvbkNv
bnRyb2xsZXI6Omljb25VUkwpOgorICAgICAgICAoV2ViQ29yZTo6SWNvbkNvbnRyb2xsZXI6OnVy
bHNGb3JUeXBlcyk6CisgICAgICAgIChXZWJDb3JlOjpJY29uQ29udHJvbGxlcjo6Y29tbWl0VG9E
YXRhYmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpJY29uQ29udHJvbGxlcjo6c3RhcnRMb2FkZXIp
OgorICAgICAgICAoV2ViQ29yZTo6SWNvbkNvbnRyb2xsZXI6OmNvbnRpbnVlTG9hZFdpdGhEZWNp
c2lvbik6CisgICAgICAgIChXZWJDb3JlOjpJY29uQ29udHJvbGxlcjo6ZGVmYXVsdFVSTCk6Cisg
ICAgICAgICogbG9hZGVyL2ljb24vSWNvbkxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJ
Y29uTG9hZGVyOjpzdGFydExvYWRpbmcpOgorICAgICAgICAqIHBhZ2UvQ2hyb21lLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNocm9tZTo6d2luZG93U2NyZWVuRGlkQ2hhbmdlKToKKyAgICAgICAg
KFdlYkNvcmU6OkNocm9tZTo6ZGlkUmVjZWl2ZURvY1R5cGUpOgorICAgICAgICAqIHBhZ2UvQ29u
dGV4dE1lbnVDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om9wZW5OZXdXaW5kb3cp
OgorICAgICAgICAoV2ViQ29yZTo6Q29udGV4dE1lbnVDb250cm9sbGVyOjpjb250ZXh0TWVudUl0
ZW1TZWxlY3RlZCk6CisgICAgICAgICogcGFnZS9ET01TZWxlY3Rpb24uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6c2VsZWN0aW9uU2hhZG93QW5jZXN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6RE9N
U2VsZWN0aW9uOjpjb250YWluc05vZGUpOgorICAgICAgICAoV2ViQ29yZTo6RE9NU2VsZWN0aW9u
Ojppc1ZhbGlkRm9yUG9zaXRpb24pOgorICAgICAgICAqIHBhZ2UvRE9NV2luZG93LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkRPTVdpbmRvdzo6aXNDdXJyZW50bHlEaXNwbGF5ZWRJbkZyYW1lKToK
KyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRvdzo6Z2V0U2VsZWN0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6OkRPTVdpbmRvdzo6Zm9jdXMpOgorICAgICAgICAoV2ViQ29yZTo6RE9NV2luZG93Ojph
bGVydCk6CisgICAgICAgIChXZWJDb3JlOjpET01XaW5kb3c6OmNvbmZpcm0pOgorICAgICAgICAo
V2ViQ29yZTo6RE9NV2luZG93Ojpwcm9tcHQpOgorICAgICAgICAoV2ViQ29yZTo6RE9NV2luZG93
OjpzY3JvbGxYKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRvdzo6c2Nyb2xsWSk6CisgICAg
ICAgIChXZWJDb3JlOjpET01XaW5kb3c6OnNlbGYpOgorICAgICAgICAoV2ViQ29yZTo6RE9NV2lu
ZG93OjpvcGVuZXIpOgorICAgICAgICAoV2ViQ29yZTo6RE9NV2luZG93OjpwYXJlbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6RE9NV2luZG93Ojp0b3ApOgorICAgICAgICAoV2ViQ29yZTo6RE9NV2lu
ZG93OjpnZXRNYXRjaGVkQ1NTUnVsZXMpOgorICAgICAgICAoV2ViQ29yZTo6RE9NV2luZG93Ojpz
ZXRMb2NhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpET01XaW5kb3c6OmNyZWF0ZVdpbmRvdyk6
CisgICAgICAgIChXZWJDb3JlOjpET01XaW5kb3c6Om9wZW4pOgorICAgICAgICAqIHBhZ2UvRE9N
V2luZG93UHJvcGVydHkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NV2luZG93UHJvcGVydHk6
OkRPTVdpbmRvd1Byb3BlcnR5KToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRvd1Byb3BlcnR5
OjpyZWNvbm5lY3RGcmFtZUZyb21QYWdlQ2FjaGUpOgorICAgICAgICAqIHBhZ2UvRHJhZ0NvbnRy
b2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0NvbnRyb2xsZXI6OmRpc3BhdGNoVGV4
dElucHV0RXZlbnRGb3IpOgorICAgICAgICAqIHBhZ2UvRXZlbnRIYW5kbGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6aGFuZGxlTW91c2VQcmVzc0V2ZW50U2luZ2xlQ2xp
Y2spOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpoYW5kbGVNb3VzZVByZXNzRXZl
bnQpOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpoYW5kbGVNb3VzZURyYWdnZWRF
dmVudCk6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmhpdFRlc3RSZXN1bHRBdFBv
aW50KToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6c2Nyb2xsT3ZlcmZsb3cpOgor
ICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpsb2dpY2FsU2Nyb2xsT3ZlcmZsb3cpOgor
ICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpzY3JvbGxSZWN1cnNpdmVseSk6CisgICAg
ICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmxvZ2ljYWxTY3JvbGxSZWN1cnNpdmVseSk6Cisg
ICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OnVwZGF0ZUN1cnNvcik6CisgICAgICAgIChX
ZWJDb3JlOjpFdmVudEhhbmRsZXI6OmRpc3BhdGNoRHJhZ0V2ZW50KToKKyAgICAgICAgKFdlYkNv
cmU6OkV2ZW50SGFuZGxlcjo6cHJlcGFyZU1vdXNlRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6
RXZlbnRIYW5kbGVyOjpkaXNwYXRjaE1vdXNlRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6RXZl
bnRIYW5kbGVyOjpob3ZlclRpbWVyRmlyZWQpOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5k
bGVyOjpoYW5kbGVBY2Nlc3NLZXkpOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpr
ZXlFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmhhbmRsZVRleHRJbnB1
dEV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6ZGVmYXVsdEFycm93RXZl
bnRIYW5kbGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6ZGVmYXVsdFRhYkV2
ZW50SGFuZGxlcik6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OnNlbmRTY3JvbGxF
dmVudCk6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmhhbmRsZVRvdWNoRXZlbnQp
OgorICAgICAgICAqIHBhZ2UvRm9jdXNDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkZvY3VzTmF2aWdhdGlvblNjb3BlOjpmb2N1c05hdmlnYXRpb25TY29wZU93bmVkQnlJRnJhbWUp
OgorICAgICAgICAoV2ViQ29yZTo6Rm9jdXNDb250cm9sbGVyOjpzZXRGb2N1c2VkRnJhbWUpOgor
ICAgICAgICAoV2ViQ29yZTo6Rm9jdXNDb250cm9sbGVyOjpzZXRJbml0aWFsRm9jdXMpOgorICAg
ICAgICAoV2ViQ29yZTo6Rm9jdXNDb250cm9sbGVyOjpmaW5kRm9jdXNDYW5kaWRhdGVJbkNvbnRh
aW5lcik6CisgICAgICAgIChXZWJDb3JlOjpGb2N1c0NvbnRyb2xsZXI6OmFkdmFuY2VGb2N1c0Rp
cmVjdGlvbmFsbHlJbkNvbnRhaW5lcik6CisgICAgICAgIChXZWJDb3JlOjpGb2N1c0NvbnRyb2xs
ZXI6OmFkdmFuY2VGb2N1c0RpcmVjdGlvbmFsbHkpOgorICAgICAgICAqIHBhZ2UvRnJhbWUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RnJhbWU6OmlzVVJMQWxsb3dlZCk6CisgICAgICAgICogcGFn
ZS9GcmFtZS5oOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWU6OmRvY3VtZW50KToKKyAgICAgICAg
KiBwYWdlL0ZyYW1lU25hcHNob3R0aW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNuYXBzaG90
RnJhbWVSZWN0KToKKyAgICAgICAgKiBwYWdlL0ZyYW1lVHJlZS5jcHA6CisgICAgICAgIChwcmlu
dEZyYW1lcyk6CisgICAgICAgICogcGFnZS9GcmFtZVZpZXcuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RnJhbWVWaWV3OjpzZXRGcmFtZVJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3
OjphZGp1c3RWaWV3U2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OmxheW91dCk6
CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OnNjcm9sbFRvRnJhZ21lbnQpOgorICAgICAg
ICAoV2ViQ29yZTo6RnJhbWVWaWV3OjpzY3JvbGxUb0FuY2hvcik6CisgICAgICAgIChXZWJDb3Jl
OjpGcmFtZVZpZXc6Om1haW50YWluU2Nyb2xsUG9zaXRpb25BdEFuY2hvcik6CisgICAgICAgIChX
ZWJDb3JlOjpGcmFtZVZpZXc6OnNjcm9sbEVsZW1lbnRUb1JlY3QpOgorICAgICAgICAoV2ViQ29y
ZTo6RnJhbWVWaWV3OjpsYXlvdXRUaW1lckZpcmVkKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1l
Vmlldzo6c2NoZWR1bGVSZWxheW91dCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OnVu
c2NoZWR1bGVSZWxheW91dCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OnBlcmZvcm1Q
b3N0TGF5b3V0VGFza3MpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3OjpzZW5kUmVzaXpl
RXZlbnRJZk5lZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OnVwZGF0ZU92ZXJm
bG93U3RhdHVzKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6c2V0UGFnaW5hdGlvbik6
CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OmRvY3VtZW50QmFja2dyb3VuZENvbG9yKToK
KyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6c3RhcnRMYXlvdXRBdE1haW5GcmFtZVZpZXdJ
Zk5lZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OnVwZGF0ZUNvbnRyb2xUaW50
cyk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OmRpZFBhaW50Q29udGVudHMpOgorICAg
ICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3OjpwYWludENvbnRlbnRzKToKKyAgICAgICAgKFdlYkNv
cmU6OkZyYW1lVmlldzo6cGFpbnRPdmVyaGFuZ0FyZWFzKToKKyAgICAgICAgKFdlYkNvcmU6OkZy
YW1lVmlldzo6dXBkYXRlTGF5b3V0QW5kU3R5bGVJZk5lZWRlZFJlY3Vyc2l2ZSk6CisgICAgICAg
IChXZWJDb3JlOjpGcmFtZVZpZXc6OnF1YWxpZmllc0FzVmlzdWFsbHlOb25FbXB0eSk6CisgICAg
ICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OnNldFRyYWNrc1JlcGFpbnRzKToKKyAgICAgICAgKFdl
YkNvcmU6OkZyYW1lVmlldzo6dHJhY2tlZFJlcGFpbnRSZWN0c0FzVGV4dCk6CisgICAgICAgIChX
ZWJDb3JlOjpGcmFtZVZpZXc6OmF4T2JqZWN0Q2FjaGUpOgorICAgICAgICAoV2ViQ29yZTo6RnJh
bWVWaWV3OjpmaXJlTGF5b3V0UmVsYXRlZE1pbGVzdG9uZXNJZk5lZWRlZCk6CisgICAgICAgIChX
ZWJDb3JlOjpGcmFtZVZpZXc6OnNldFZpc3VhbFVwZGF0ZXNBbGxvd2VkQnlDbGllbnQpOgorICAg
ICAgICAqIHBhZ2UvSGlzdG9yeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIaXN0b3J5Ojp1cmxG
b3JTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpIaXN0b3J5OjpzdGF0ZU9iamVjdEFkZGVkKToK
KyAgICAgICAgKiBwYWdlL0xvY2F0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxvY2F0aW9u
Ojp1cmwpOgorICAgICAgICAoV2ViQ29yZTo6TG9jYXRpb246OmFuY2VzdG9yT3JpZ2lucyk6Cisg
ICAgICAgIChXZWJDb3JlOjpMb2NhdGlvbjo6c2V0UHJvdG9jb2wpOgorICAgICAgICAoV2ViQ29y
ZTo6TG9jYXRpb246OnNldEhvc3QpOgorICAgICAgICAoV2ViQ29yZTo6TG9jYXRpb246OnNldEhv
c3RuYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkxvY2F0aW9uOjpzZXRQb3J0KToKKyAgICAgICAg
KFdlYkNvcmU6OkxvY2F0aW9uOjpzZXRQYXRobmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpMb2Nh
dGlvbjo6c2V0U2VhcmNoKToKKyAgICAgICAgKFdlYkNvcmU6OkxvY2F0aW9uOjpzZXRIYXNoKToK
KyAgICAgICAgKFdlYkNvcmU6OkxvY2F0aW9uOjpyZXBsYWNlKToKKyAgICAgICAgKFdlYkNvcmU6
OkxvY2F0aW9uOjpyZWxvYWQpOgorICAgICAgICAoV2ViQ29yZTo6TG9jYXRpb246OnNldExvY2F0
aW9uKToKKyAgICAgICAgKiBwYWdlL05hdmlnYXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpO
YXZpZ2F0b3I6OnVzZXJBZ2VudCk6CisgICAgICAgIChXZWJDb3JlOjpOYXZpZ2F0b3I6OmNvb2tp
ZUVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6TmF2aWdhdG9yOjpqYXZhRW5hYmxlZCk6Cisg
ICAgICAgICogcGFnZS9QYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OnJlbmRlclRy
ZWVTaXplKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OnZpZXdwb3J0QXJndW1lbnRzKToKKyAg
ICAgICAgKFdlYkNvcmU6OlBhZ2U6OnNldFZpZXdNb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OlBh
Z2U6OnVwZGF0ZVN0eWxlRm9yQWxsUGFnZXNBZnRlckdsb2JhbENoYW5nZUluRW52aXJvbm1lbnQp
OgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6dGFrZUFueU1lZGlhQ2FuU3RhcnRMaXN0ZW5lcik6
CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjp1bm1hcmtBbGxUZXh0TWF0Y2hlcyk6CisgICAgICAg
IChXZWJDb3JlOjpQYWdlOjpzZXRNZWRpYVZvbHVtZSk6CisgICAgICAgIChXZWJDb3JlOjpQYWdl
OjpzZXRQYWdlU2NhbGVGYWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6c3VzcGVuZFNj
cmlwdGVkQW5pbWF0aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpyZXN1bWVTY3JpcHRl
ZEFuaW1hdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6c2V0SXNWaXN1YWxseUlkbGVJ
bnRlcm5hbCk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjp1c2VyU3R5bGVTaGVldExvY2F0aW9u
Q2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjppbnZhbGlkYXRlU3R5bGVzRm9yQWxs
TGlua3MpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6aW52YWxpZGF0ZVN0eWxlc0Zvckxpbmsp
OgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6c2V0TWluaW11bVRpbWVySW50ZXJ2YWwpOgorICAg
ICAgICAoV2ViQ29yZTo6UGFnZTo6c2V0VGltZXJUaHJvdHRsaW5nRW5hYmxlZCk6CisgICAgICAg
IChXZWJDb3JlOjpQYWdlOjpkbnNQcmVmZXRjaGluZ1N0YXRlQ2hhbmdlZCk6CisgICAgICAgIChX
ZWJDb3JlOjpQYWdlOjpzdG9yYWdlQmxvY2tpbmdTdGF0ZUNoYW5nZWQpOgorICAgICAgICAoV2Vi
Q29yZTo6UGFnZTo6Y2FwdGlvblByZWZlcmVuY2VzQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3Jl
OjpQYWdlOjpzZXRTZXNzaW9uSUQpOgorICAgICAgICAqIHBhZ2UvUGFnZURlYnVnZ2FibGUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UGFnZURlYnVnZ2FibGU6Om5hbWUpOgorICAgICAgICAoV2Vi
Q29yZTo6UGFnZURlYnVnZ2FibGU6OnVybCk6CisgICAgICAgICogcGFnZS9QYWdlR3JvdXBMb2Fk
RGVmZXJyZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFnZUdyb3VwTG9hZERlZmVycmVyOjpQ
YWdlR3JvdXBMb2FkRGVmZXJyZXIpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZUdyb3VwTG9hZERl
ZmVycmVyOjp+UGFnZUdyb3VwTG9hZERlZmVycmVyKToKKyAgICAgICAgKiBwYWdlL1BhZ2VTZXJp
YWxpemVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlcmlhbGl6ZXJNYXJrdXBBY2N1bXVsYXRv
cjo6YXBwZW5kQ3VzdG9tQXR0cmlidXRlcyk6CisgICAgICAgICogcGFnZS9QZXJmb3JtYW5jZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpQZXJmb3JtYW5jZTo6c2NyaXB0RXhlY3V0aW9uQ29udGV4
dCk6CisgICAgICAgIChXZWJDb3JlOjpQZXJmb3JtYW5jZTo6bm93KToKKyAgICAgICAgKiBwYWdl
L1ByaW50Q29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQcmludENvbnRleHQ6OmNvbXB1
dGVQYWdlUmVjdHMpOgorICAgICAgICAoV2ViQ29yZTo6UHJpbnRDb250ZXh0Ojpjb21wdXRlUGFn
ZVJlY3RzV2l0aFBhZ2VTaXplSW50ZXJuYWwpOgorICAgICAgICAoV2ViQ29yZTo6UHJpbnRDb250
ZXh0Ojpjb21wdXRlQXV0b21hdGljU2NhbGVGYWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6UHJp
bnRDb250ZXh0Ojppc1BhZ2VCb3hWaXNpYmxlKToKKyAgICAgICAgKFdlYkNvcmU6OlByaW50Q29u
dGV4dDo6cGFnZVNpemVBbmRNYXJnaW5zSW5QaXhlbHMpOgorICAgICAgICAoV2ViQ29yZTo6UHJp
bnRDb250ZXh0OjpudW1iZXJPZlBhZ2VzKToKKyAgICAgICAgKFdlYkNvcmU6OlByaW50Q29udGV4
dDo6c3Bvb2xBbGxQYWdlc1dpdGhCb3VuZGFyaWVzKToKKyAgICAgICAgKiBwYWdlL1NldHRpbmdz
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNldEltYWdlTG9hZGluZ1NldHRpbmdzKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNldHRpbmdzOjpzZXRUZXh0QXV0b3NpemluZ0ZvbnRTY2FsZUZhY3Rvcik6
CisgICAgICAgICogcGFnZS9Vc2VyQ29udGVudENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6VXNlckNvbnRlbnRDb250cm9sbGVyOjppbnZhbGlkYXRlSW5qZWN0ZWRTdHlsZVNoZWV0
Q2FjaGVJbkFsbEZyYW1lcyk6CisgICAgICAgICogcGFnZS9hbmltYXRpb24vQW5pbWF0aW9uQ29u
dHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBbmltYXRpb25Db250cm9sbGVyUHJpdmF0
ZTo6dXBkYXRlQW5pbWF0aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpBbmltYXRpb25Db250cm9s
bGVyUHJpdmF0ZTo6ZmlyZUV2ZW50c0FuZFVwZGF0ZVN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6
OkFuaW1hdGlvbkNvbnRyb2xsZXJQcml2YXRlOjphbmltYXRpb25GcmFtZUNhbGxiYWNrRmlyZWQp
OgorICAgICAgICAqIHBhZ2UvaW9zL0V2ZW50SGFuZGxlcklPUy5tbToKKyAgICAgICAgKFdlYkNv
cmU6OkV2ZW50SGFuZGxlcjo6bW91c2VNb3ZlZCk6CisgICAgICAgICogcGFnZS9pb3MvRnJhbWVJ
T1MubW06CisgICAgICAgIChXZWJDb3JlOjpGcmFtZTo6ZGlzcGF0Y2hQYWdlSGlkZUV2ZW50QmVm
b3JlUGF1c2UpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWU6OmRpc3BhdGNoUGFnZVNob3dFdmVu
dEJlZm9yZVJlc3VtZSk6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvQXN5bmNTY3JvbGxpbmdD
b29yZGluYXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBc3luY1Njcm9sbGluZ0Nvb3JkaW5h
dG9yOjpyZXF1ZXN0U2Nyb2xsUG9zaXRpb25VcGRhdGUpOgorICAgICAgICAqIHBhZ2Uvc2Nyb2xs
aW5nL1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGlu
Z0Nvb3JkaW5hdG9yOjpjb21wdXRlQ3VycmVudFdoZWVsRXZlbnRIYW5kbGVyQ291bnQpOgorICAg
ICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnN5bmNocm9ub3VzU2Nyb2xsaW5n
UmVhc29ucyk6CisgICAgICAgICogcGFnZS93aW4vRnJhbWVXaW4uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6aW1hZ2VGcm9tU2VsZWN0aW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9EcmFnSW1hZ2Uu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NvcGVkTm9kZURyYWdFbmFibGVyOjpTY29wZWROb2Rl
RHJhZ0VuYWJsZXIpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlRHJhZ0ltYWdlRm9yUmFuZ2Up
OgorICAgICAgICAqIHBsdWdpbnMvRE9NTWltZVR5cGVBcnJheS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpET01NaW1lVHlwZUFycmF5OjpnZXRQbHVnaW5EYXRhKToKKyAgICAgICAgKiBwbHVnaW5z
L0RPTVBsdWdpbkFycmF5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTVBsdWdpbkFycmF5Ojpw
bHVnaW5EYXRhKToKKyAgICAgICAgKiBwbHVnaW5zL1BsdWdpblZpZXcuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UGx1Z2luVmlldzo6c3RhcnRPckFkZFRvVW5zdGFydGVkTGlzdCk6CisgICAgICAg
IChXZWJDb3JlOjpQbHVnaW5WaWV3OjpzdGFydCk6CisgICAgICAgIChXZWJDb3JlOjpQbHVnaW5W
aWV3Ojp+UGx1Z2luVmlldyk6CisgICAgICAgIChXZWJDb3JlOjpQbHVnaW5WaWV3Ojpsb2FkKToK
KyAgICAgICAgKFdlYkNvcmU6OlBsdWdpblZpZXc6OmdldFVSTE5vdGlmeSk6CisgICAgICAgIChX
ZWJDb3JlOjpQbHVnaW5WaWV3OjpnZXRVUkwpOgorICAgICAgICAoV2ViQ29yZTo6UGx1Z2luVmll
dzo6Zm9jdXNQbHVnaW5FbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlBsdWdpblZpZXc6Omhh
bmRsZVBvc3QpOgorICAgICAgICAoV2ViQ29yZTo6UGx1Z2luVmlldzo6Z2V0VmFsdWVGb3JVUkwp
OgorICAgICAgICAoV2ViQ29yZTo6UGx1Z2luVmlldzo6c2V0VmFsdWVGb3JVUkwpOgorICAgICAg
ICAqIHBsdWdpbnMvbWFjL1BsdWdpblZpZXdNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpQbHVn
aW5WaWV3OjpoYW5kbGVNb3VzZUV2ZW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTWVu
dUxpc3QuY3BwOgorICAgICAgICAoUmVuZGVyTWVudUxpc3Q6OnZhbHVlQ2hhbmdlZCk6CisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlclRyZWVBc1RleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
ZXh0ZXJuYWxSZXByZXNlbnRhdGlvbik6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdSb290LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jvb3Q6OmlzRW1iZWRkZWRU
aHJvdWdoRnJhbWVDb250YWluaW5nU1ZHRG9jdW1lbnQpOgorICAgICAgICAqIHJlcGxheS9SZXBs
YXlDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlcGxheUNvbnRyb2xsZXI6OnVu
bG9hZFNlZ21lbnQpOgorICAgICAgICAoV2ViQ29yZTo6UmVwbGF5Q29udHJvbGxlcjo6ZnJhbWVO
YXZpZ2F0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6UmVwbGF5Q29udHJvbGxlcjo6ZnJhbWVEZXRh
Y2hlZCk6CisgICAgICAgICogcmVwbGF5L1JlcGxheUlucHV0Q3JlYXRpb25NZXRob2RzLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkluaXRpYWxOYXZpZ2F0aW9uOjpjcmVhdGVGcm9tUGFnZSk6Cisg
ICAgICAgICogc3RvcmFnZS9TdG9yYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0b3JhZ2U6
OmlzRGlzYWJsZWRCeVByaXZhdGVCcm93c2luZyk6CisgICAgICAgICogc3RvcmFnZS9TdG9yYWdl
RXZlbnREaXNwYXRjaGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0b3JhZ2VFdmVudERpc3Bh
dGNoZXI6OmRpc3BhdGNoU2Vzc2lvblN0b3JhZ2VFdmVudHMpOgorICAgICAgICAoV2ViQ29yZTo6
U3RvcmFnZUV2ZW50RGlzcGF0Y2hlcjo6ZGlzcGF0Y2hMb2NhbFN0b3JhZ2VFdmVudHMpOgorICAg
ICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFs
czo6bnVtYmVyT2ZBY3RpdmVBbmltYXRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFs
czo6b3BlbkR1bW15SW5zcGVjdG9yRnJvbnRlbmQpOgorCiAyMDE0LTA0LTIxICBKZXIgTm9ibGUg
IDxqZXIubm9ibGVAYXBwbGUuY29tPgogCiAgICAgICAgIFtNU0VdW01hY10gQVZTYW1wbGVCdWZm
ZXJEaXNwbGF5TGF5ZXIgYW5kIEF1ZGlvUmVuZGVyZXIgaXMgb3ZlcnJldGFpbmVkLgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9iYXR0ZXJ5L0JhdHRlcnlNYW5hZ2VyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYmF0dGVyeS9CYXR0ZXJ5TWFuYWdlci5jcHAKaW5kZXgg
NDMxZDhmZC4uOWUzZmJhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9iYXR0
ZXJ5L0JhdHRlcnlNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2JhdHRl
cnkvQmF0dGVyeU1hbmFnZXIuY3BwCkBAIC00NCw3ICs0NCw3IEBAIEJhdHRlcnlNYW5hZ2VyOjp+
QmF0dGVyeU1hbmFnZXIoKQogfQogCiBCYXR0ZXJ5TWFuYWdlcjo6QmF0dGVyeU1hbmFnZXIoTmF2
aWdhdG9yKiBuYXZpZ2F0b3IpCi0gICAgOiBBY3RpdmVET01PYmplY3QobmF2aWdhdG9yLT5mcmFt
ZSgpLT5kb2N1bWVudCgpKQorICAgIDogQWN0aXZlRE9NT2JqZWN0KCZuYXZpZ2F0b3ItPmZyYW1l
KCktPmRvY3VtZW50KCkpCiAgICAgLCBtX2JhdHRlcnlDb250cm9sbGVyKEJhdHRlcnlDb250cm9s
bGVyOjpmcm9tKG5hdmlnYXRvci0+ZnJhbWUoKS0+cGFnZSgpKSkKICAgICAsIG1fYmF0dGVyeVN0
YXR1cygwKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlv
bi9OYXZpZ2F0b3JHZW9sb2NhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xv
Y2F0aW9uL05hdmlnYXRvckdlb2xvY2F0aW9uLmNwcAppbmRleCAzNDBlNjU4Li5lN2E2NjgzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL05hdmlnYXRvckdl
b2xvY2F0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL05h
dmlnYXRvckdlb2xvY2F0aW9uLmNwcApAQCAtNzMsNyArNzMsNyBAQCBHZW9sb2NhdGlvbiogTmF2
aWdhdG9yR2VvbG9jYXRpb246Omdlb2xvY2F0aW9uKE5hdmlnYXRvciogbmF2aWdhdG9yKQogR2Vv
bG9jYXRpb24qIE5hdmlnYXRvckdlb2xvY2F0aW9uOjpnZW9sb2NhdGlvbigpIGNvbnN0CiB7CiAg
ICAgaWYgKCFtX2dlb2xvY2F0aW9uICYmIGZyYW1lKCkpCi0gICAgICAgIG1fZ2VvbG9jYXRpb24g
PSBHZW9sb2NhdGlvbjo6Y3JlYXRlKGZyYW1lKCktPmRvY3VtZW50KCkpOworICAgICAgICBtX2dl
b2xvY2F0aW9uID0gR2VvbG9jYXRpb246OmNyZWF0ZSgmZnJhbWUoKS0+ZG9jdW1lbnQoKSk7CiAg
ICAgcmV0dXJuIG1fZ2VvbG9jYXRpb24uZ2V0KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTmF2aWdhdG9yTWVkaWFTdHJlYW0uY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9OYXZpZ2F0b3JNZWRpYVN0cmVhbS5jcHAK
aW5kZXggNmUwNmI4OS4uNmFjODU1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9OYXZpZ2F0b3JNZWRpYVN0cmVhbS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9OYXZpZ2F0b3JNZWRpYVN0cmVhbS5jcHAKQEAgLTU3LDcg
KzU3LDcgQEAgdm9pZCBOYXZpZ2F0b3JNZWRpYVN0cmVhbTo6d2Via2l0R2V0VXNlck1lZGlhKE5h
dmlnYXRvciogbmF2aWdhdG9yLCBjb25zdCBEaWN0aW8KICAgICAgICAgcmV0dXJuOwogICAgIH0K
IAotICAgIFJlZlB0cjxVc2VyTWVkaWFSZXF1ZXN0PiByZXF1ZXN0ID0gVXNlck1lZGlhUmVxdWVz
dDo6Y3JlYXRlKG5hdmlnYXRvci0+ZnJhbWUoKS0+ZG9jdW1lbnQoKSwgdXNlck1lZGlhLCBvcHRp
b25zLCBzdWNjZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2ssIGVjKTsKKyAgICBSZWZQdHI8VXNl
ck1lZGlhUmVxdWVzdD4gcmVxdWVzdCA9IFVzZXJNZWRpYVJlcXVlc3Q6OmNyZWF0ZSgmbmF2aWdh
dG9yLT5mcmFtZSgpLT5kb2N1bWVudCgpLCB1c2VyTWVkaWEsIG9wdGlvbnMsIHN1Y2Nlc3NDYWxs
YmFjaywgZXJyb3JDYWxsYmFjaywgZWMpOwogICAgIGlmICghcmVxdWVzdCkgewogICAgICAgICBl
YyA9IE5PVF9TVVBQT1JURURfRVJSOwogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL25hdmlnYXRvcmNvbnRlbnR1dGlscy9OYXZpZ2F0b3JDb250ZW50
VXRpbHMuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9uYXZpZ2F0b3Jjb250ZW50dXRpbHMv
TmF2aWdhdG9yQ29udGVudFV0aWxzLmNwcAppbmRleCBkZDg4YTU0Li4zZGQzN2NjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25hdmlnYXRvcmNvbnRlbnR1dGlscy9OYXZpZ2F0
b3JDb250ZW50VXRpbHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbmF2aWdhdG9y
Y29udGVudHV0aWxzL05hdmlnYXRvckNvbnRlbnRVdGlscy5jcHAKQEAgLTEzNiw3ICsxMzYsNyBA
QCB2b2lkIE5hdmlnYXRvckNvbnRlbnRVdGlsczo6cmVnaXN0ZXJQcm90b2NvbEhhbmRsZXIoTmF2
aWdhdG9yKiBuYXZpZ2F0b3IsIGNvbnN0CiAgICAgaWYgKCFuYXZpZ2F0b3ItPmZyYW1lKCkpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIFVSTCBiYXNlVVJMID0gbmF2aWdhdG9yLT5mcmFtZSgpLT5k
b2N1bWVudCgpLT5iYXNlVVJMKCk7CisgICAgVVJMIGJhc2VVUkwgPSBuYXZpZ2F0b3ItPmZyYW1l
KCktPmRvY3VtZW50KCkuYmFzZVVSTCgpOwogCiAgICAgaWYgKCF2ZXJpZnlDdXN0b21IYW5kbGVy
VVJMKGJhc2VVUkwsIHVybCwgZWMpKQogICAgICAgICByZXR1cm47CkBAIC0xNzQsNyArMTc0LDcg
QEAgU3RyaW5nIE5hdmlnYXRvckNvbnRlbnRVdGlsczo6aXNQcm90b2NvbEhhbmRsZXJSZWdpc3Rl
cmVkKE5hdmlnYXRvciogbmF2aWdhdG9yLAogICAgIGlmICghbmF2aWdhdG9yLT5mcmFtZSgpKQog
ICAgICAgICByZXR1cm4gZGVjbGluZWQ7CiAKLSAgICBVUkwgYmFzZVVSTCA9IG5hdmlnYXRvci0+
ZnJhbWUoKS0+ZG9jdW1lbnQoKS0+YmFzZVVSTCgpOworICAgIFVSTCBiYXNlVVJMID0gbmF2aWdh
dG9yLT5mcmFtZSgpLT5kb2N1bWVudCgpLmJhc2VVUkwoKTsKIAogICAgIGlmICghdmVyaWZ5Q3Vz
dG9tSGFuZGxlclVSTChiYXNlVVJMLCB1cmwsIGVjKSkKICAgICAgICAgcmV0dXJuIGRlY2xpbmVk
OwpAQCAtMTkwLDcgKzE5MCw3IEBAIHZvaWQgTmF2aWdhdG9yQ29udGVudFV0aWxzOjp1bnJlZ2lz
dGVyUHJvdG9jb2xIYW5kbGVyKE5hdmlnYXRvciogbmF2aWdhdG9yLCBjb25zCiAgICAgaWYgKCFu
YXZpZ2F0b3ItPmZyYW1lKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIFVSTCBiYXNlVVJMID0g
bmF2aWdhdG9yLT5mcmFtZSgpLT5kb2N1bWVudCgpLT5iYXNlVVJMKCk7CisgICAgVVJMIGJhc2VV
UkwgPSBuYXZpZ2F0b3ItPmZyYW1lKCktPmRvY3VtZW50KCkuYmFzZVVSTCgpOwogCiAgICAgaWYg
KCF2ZXJpZnlDdXN0b21IYW5kbGVyVVJMKGJhc2VVUkwsIHVybCwgZWMpKQogICAgICAgICByZXR1
cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3F1b3RhL0RPTVdpbmRvd1F1
b3RhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcXVvdGEvRE9NV2luZG93UXVvdGEuY3Bw
CmluZGV4IDIyNzBhMDQuLjc4MzQzZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvcXVvdGEvRE9NV2luZG93UXVvdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
cXVvdGEvRE9NV2luZG93UXVvdGEuY3BwCkBAIC03NSw3ICs3NSw3IEBAIFN0b3JhZ2VJbmZvKiBE
T01XaW5kb3dRdW90YTo6d2Via2l0U3RvcmFnZUluZm8oRE9NV2luZG93KiB3aW5kb3cpCiBTdG9y
YWdlSW5mbyogRE9NV2luZG93UXVvdGE6OndlYmtpdFN0b3JhZ2VJbmZvKCkgY29uc3QKIHsKICAg
ICBpZiAoIW1fc3RvcmFnZUluZm8gJiYgZnJhbWUoKSkgewotICAgICAgICBmcmFtZSgpLT5kb2N1
bWVudCgpLT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpKUywgTWVzc2FnZUxldmVs
OjpXYXJuaW5nLCBBU0NJSUxpdGVyYWwoIndpbmRvdy53ZWJraXRTdG9yYWdlSW5mbyBpcyBkZXBy
ZWNhdGVkLiBVc2UgbmF2aWdhdG9yLndlYmtpdFRlbXBvcmFyeVN0b3JhZ2Ugb3IgbmF2aWdhdG9y
LndlYmtpdFBlcnNpc3RlbnRTdG9yYWdlIGluc3RlYWQuIikpOworICAgICAgICBmcmFtZSgpLT5k
b2N1bWVudCgpLmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdlTGV2
ZWw6Oldhcm5pbmcsIEFTQ0lJTGl0ZXJhbCgid2luZG93LndlYmtpdFN0b3JhZ2VJbmZvIGlzIGRl
cHJlY2F0ZWQuIFVzZSBuYXZpZ2F0b3Iud2Via2l0VGVtcG9yYXJ5U3RvcmFnZSBvciBuYXZpZ2F0
b3Iud2Via2l0UGVyc2lzdGVudFN0b3JhZ2UgaW5zdGVhZC4iKSk7CiAgICAgICAgIG1fc3RvcmFn
ZUluZm8gPSBTdG9yYWdlSW5mbzo6Y3JlYXRlKCk7CiAgICAgfQogICAgIHJldHVybiBtX3N0b3Jh
Z2VJbmZvLmdldCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
WE9iamVjdENhY2hlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RD
YWNoZS5jcHAKaW5kZXggNGE0OTYyNC4uNTIxY2I3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwCkBAIC0xNzIsMTIgKzE3MiwxMiBAQCBBY2Nl
c3NpYmlsaXR5T2JqZWN0KiBBWE9iamVjdENhY2hlOjpmb2N1c2VkVUlFbGVtZW50Rm9yUGFnZShj
b25zdCBQYWdlKiBwYWdlKQogICAgICAgICByZXR1cm4gMDsKIAogICAgIC8vIGdldCB0aGUgZm9j
dXNlZCBub2RlIGluIHRoZSBwYWdlCi0gICAgRG9jdW1lbnQqIGZvY3VzZWREb2N1bWVudCA9IHBh
Z2UtPmZvY3VzQ29udHJvbGxlcigpLmZvY3VzZWRPck1haW5GcmFtZSgpLmRvY3VtZW50KCk7Ci0g
ICAgRWxlbWVudCogZm9jdXNlZEVsZW1lbnQgPSBmb2N1c2VkRG9jdW1lbnQtPmZvY3VzZWRFbGVt
ZW50KCk7CisgICAgRG9jdW1lbnQmIGZvY3VzZWREb2N1bWVudCA9IHBhZ2UtPmZvY3VzQ29udHJv
bGxlcigpLmZvY3VzZWRPck1haW5GcmFtZSgpLmRvY3VtZW50KCk7CisgICAgRWxlbWVudCogZm9j
dXNlZEVsZW1lbnQgPSBmb2N1c2VkRG9jdW1lbnQuZm9jdXNlZEVsZW1lbnQoKTsKICAgICBpZiAo
Zm9jdXNlZEVsZW1lbnQgJiYgaXNIVE1MQXJlYUVsZW1lbnQoZm9jdXNlZEVsZW1lbnQpKQogICAg
ICAgICByZXR1cm4gZm9jdXNlZEltYWdlTWFwVUlFbGVtZW50KHRvSFRNTEFyZWFFbGVtZW50KGZv
Y3VzZWRFbGVtZW50KSk7CiAKLSAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBvYmogPSBmb2N1c2Vk
RG9jdW1lbnQtPmF4T2JqZWN0Q2FjaGUoKS0+Z2V0T3JDcmVhdGUoZm9jdXNlZEVsZW1lbnQgPyBz
dGF0aWNfY2FzdDxOb2RlKj4oZm9jdXNlZEVsZW1lbnQpIDogZm9jdXNlZERvY3VtZW50KTsKKyAg
ICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBvYmogPSBmb2N1c2VkRG9jdW1lbnQuYXhPYmplY3RDYWNo
ZSgpLT5nZXRPckNyZWF0ZShmb2N1c2VkRWxlbWVudCA/IHN0YXRpY19jYXN0PE5vZGUqPihmb2N1
c2VkRWxlbWVudCkgOiAmZm9jdXNlZERvY3VtZW50KTsKICAgICBpZiAoIW9iaikKICAgICAgICAg
cmV0dXJuIDA7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eU9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vz
c2liaWxpdHlPYmplY3QuY3BwCmluZGV4IDYxZjc0YzkuLmY1MzYxNmQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcApAQCAt
NDA5LDExICs0MDksMTIgQEAgc3RhdGljIHZvaWQgYXBwZW5kQWNjZXNzaWJpbGl0eU9iamVjdChB
Y2Nlc3NpYmlsaXR5T2JqZWN0KiBvYmplY3QsIEFjY2Vzc2liaWxpdHkKICAgICAgICAgaWYgKCF3
aWRnZXQgfHwgIXdpZGdldC0+aXNGcmFtZVZpZXcoKSkKICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgCi0gICAgICAgIERvY3VtZW50KiBkb2MgPSB0b0ZyYW1lVmlldyh3aWRnZXQpLT5mcmFt
ZSgpLmRvY3VtZW50KCk7Ci0gICAgICAgIGlmICghZG9jIHx8ICFkb2MtPmhhc0xpdmluZ1JlbmRl
clRyZWUoKSkKKyAgICAgICAgRG9jdW1lbnQmIGRvYyA9IHRvRnJhbWVWaWV3KHdpZGdldCktPmZy
YW1lKCkuZG9jdW1lbnQoKTsKKyAgICAgICAgQVNTRVJUKGRvYyk7CisgICAgICAgIGlmICghZG9j
Lmhhc0xpdmluZ1JlbmRlclRyZWUoKSkKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgCi0g
ICAgICAgIG9iamVjdCA9IG9iamVjdC0+YXhPYmplY3RDYWNoZSgpLT5nZXRPckNyZWF0ZShkb2Mp
OworICAgICAgICBvYmplY3QgPSBvYmplY3QtPmF4T2JqZWN0Q2FjaGUoKS0+Z2V0T3JDcmVhdGUo
JmRvYyk7CiAgICAgfQogCiAgICAgaWYgKG9iamVjdCkKQEAgLTU5Niw3ICs1OTcsNyBAQCBQYXNz
UmVmUHRyPFJhbmdlPiBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpzZWxlY3Rpb25SYW5nZSgpIGNvbnN0
CiAgICAgaWYgKCFzZWxlY3Rpb24uaXNOb25lKCkpCiAgICAgICAgIHJldHVybiBzZWxlY3Rpb24u
Zmlyc3RSYW5nZSgpOwogICAgIAotICAgIHJldHVybiBSYW5nZTo6Y3JlYXRlKCpmcmFtZS0+ZG9j
dW1lbnQoKSk7CisgICAgcmV0dXJuIFJhbmdlOjpjcmVhdGUoZnJhbWUtPmRvY3VtZW50KCkpOwog
fQogCiBTdHJpbmcgQWNjZXNzaWJpbGl0eU9iamVjdDo6c2VsZWN0VGV4dChBY2Nlc3NpYmlsaXR5
U2VsZWN0VGV4dENyaXRlcmlhKiBjcml0ZXJpYSkKQEAgLTE0MDIsNyArMTQwMyw3IEBAIERvY3Vt
ZW50KiBBY2Nlc3NpYmlsaXR5T2JqZWN0Ojpkb2N1bWVudCgpIGNvbnN0CiAgICAgaWYgKCFmcmFt
ZVZpZXcpCiAgICAgICAgIHJldHVybiAwOwogICAgIAotICAgIHJldHVybiBmcmFtZVZpZXctPmZy
YW1lKCkuZG9jdW1lbnQoKTsKKyAgICByZXR1cm4gJmZyYW1lVmlldy0+ZnJhbWUoKS5kb2N1bWVu
dCgpOwogfQogICAgIAogUGFnZSogQWNjZXNzaWJpbGl0eU9iamVjdDo6cGFnZSgpIGNvbnN0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5k
ZXJPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5
UmVuZGVyT2JqZWN0LmNwcAppbmRleCA3NWE5MWM0Li4zMWM5NWQ1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVj
dC5jcHAKQEAgLTY4Myw3ICs2ODMsNyBAQCBTdHJpbmcgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVj
dDo6dGV4dFVuZGVyRWxlbWVudChBY2Nlc3NpYmlsaXR5VGV4dFVuZGVyRWxlbWVudAogICAgICAg
ICBpZiAobm9kZURvY3VtZW50ICYmIHRleHRSYW5nZSkgewogICAgICAgICAgICAgaWYgKEZyYW1l
KiBmcmFtZSA9IG5vZGVEb2N1bWVudC0+ZnJhbWUoKSkgewogICAgICAgICAgICAgICAgIC8vIGNh
dGNoIHN0YWxlIFdlYkNvcmVBWE9iamVjdCAoc2VlIDxyZGFyOi8vcHJvYmxlbS8zOTYwMTk2PikK
LSAgICAgICAgICAgICAgICBpZiAoZnJhbWUtPmRvY3VtZW50KCkgIT0gbm9kZURvY3VtZW50KQor
ICAgICAgICAgICAgICAgIGlmICgmZnJhbWUtPmRvY3VtZW50KCkgIT0gbm9kZURvY3VtZW50KQog
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAgICAgICAgICAgICAgICAgcmV0
dXJuIHBsYWluVGV4dCh0ZXh0UmFuZ2UuZ2V0KCksIHRleHRJdGVyYXRvckJlaGF2aW9yRm9yVGV4
dFJhbmdlKCkpOwogICAgICAgICAgICAgfQpAQCAtMjAyNiw3ICsyMDI2LDcgQEAgVmlzaWJsZVBv
c2l0aW9uIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OnZpc2libGVQb3NpdGlvbkZvclBvaW50
KGNvbnN0IEludFBvaW4KICAgICAgICAgaWYgKCF3aWRnZXQgfHwgIXdpZGdldC0+aXNGcmFtZVZp
ZXcoKSkKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBGcmFtZSYgZnJhbWUgPSB0b0ZyYW1l
Vmlldyh3aWRnZXQpLT5mcmFtZSgpOwotICAgICAgICByZW5kZXJWaWV3ID0gZnJhbWUuZG9jdW1l
bnQoKS0+cmVuZGVyVmlldygpOworICAgICAgICByZW5kZXJWaWV3ID0gZnJhbWUuZG9jdW1lbnQo
KS5yZW5kZXJWaWV3KCk7CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgICAgIGZyYW1lVmlldyA9
IHRvRnJhbWVWaWV3KHdpZGdldCk7CiAjZW5kaWYKQEAgLTI4NTgsMTggKzI4NTgsMTkgQEAgQWNj
ZXNzaWJpbGl0eVNWR1Jvb3QqIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OnJlbW90ZVNWR1Jv
b3RFbGVtZW50KCkgY29uc3QKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgRnJhbWUmIGZy
YW1lID0gZnJhbWVWaWV3LT5mcmFtZSgpOwogICAgIAotICAgIERvY3VtZW50KiBkb2MgPSBmcmFt
ZS5kb2N1bWVudCgpOwotICAgIGlmICghZG9jIHx8ICFkb2MtPmlzU1ZHRG9jdW1lbnQoKSkKKyAg
ICBEb2N1bWVudCYgZG9jID0gZnJhbWUuZG9jdW1lbnQoKTsKKyAgICBBU1NFUlQoZG9jKTsKKyAg
ICBpZiAoIWRvYy5pc1NWR0RvY3VtZW50KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAg
IAotICAgIFNWR1NWR0VsZW1lbnQqIHJvb3RFbGVtZW50ID0gdG9TVkdEb2N1bWVudChkb2MpLT5y
b290RWxlbWVudCgpOworICAgIFNWR1NWR0VsZW1lbnQqIHJvb3RFbGVtZW50ID0gdG9TVkdEb2N1
bWVudCgmZG9jKS0+cm9vdEVsZW1lbnQoKTsKICAgICBpZiAoIXJvb3RFbGVtZW50KQogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKICAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyUm9vdCA9IHJvb3RF
bGVtZW50LT5yZW5kZXJlcigpOwogICAgIGlmICghcmVuZGVyZXJSb290KQogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKICAgICAKLSAgICBBWE9iamVjdENhY2hlKiBjYWNoZSA9IGZyYW1lLmRvY3Vt
ZW50KCktPmF4T2JqZWN0Q2FjaGUoKTsKKyAgICBBWE9iamVjdENhY2hlKiBjYWNoZSA9IGZyYW1l
LmRvY3VtZW50KCkuYXhPYmplY3RDYWNoZSgpOwogICAgIGlmICghY2FjaGUpCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwogICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIHJvb3RTVkdPYmplY3QgPSBj
YWNoZS0+Z2V0T3JDcmVhdGUocmVuZGVyZXJSb290KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXcuY3BwIGIvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldy5jcHAKaW5kZXggMDNj
OTM3My4uMTlmYTEyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5U2Nyb2xsVmlldy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldy5jcHAKQEAgLTE5MiwxMiArMTkyLDEzIEBAIEFj
Y2Vzc2liaWxpdHlPYmplY3QqIEFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3Ojp3ZWJBcmVhT2JqZWN0
KCkgY29uc3QKICAgICBpZiAoIW1fc2Nyb2xsVmlldyB8fCAhbV9zY3JvbGxWaWV3LT5pc0ZyYW1l
VmlldygpKQogICAgICAgICByZXR1cm4gMDsKICAgICAKLSAgICBEb2N1bWVudCogZG9jID0gdG9G
cmFtZVZpZXcobV9zY3JvbGxWaWV3KS0+ZnJhbWUoKS5kb2N1bWVudCgpOwotICAgIGlmICghZG9j
IHx8ICFkb2MtPmhhc0xpdmluZ1JlbmRlclRyZWUoKSkKKyAgICBEb2N1bWVudCYgZG9jID0gdG9G
cmFtZVZpZXcobV9zY3JvbGxWaWV3KS0+ZnJhbWUoKS5kb2N1bWVudCgpOworICAgIEFTU0VSVChk
b2MpOworICAgIGlmICghZG9jLmhhc0xpdmluZ1JlbmRlclRyZWUoKSkKICAgICAgICAgcmV0dXJu
IDA7CiAKICAgICBpZiAoQVhPYmplY3RDYWNoZSogY2FjaGUgPSBheE9iamVjdENhY2hlKCkpCi0g
ICAgICAgIHJldHVybiBjYWNoZS0+Z2V0T3JDcmVhdGUoZG9jKTsKKyAgICAgICAgcmV0dXJuIGNh
Y2hlLT5nZXRPckNyZWF0ZSgmZG9jKTsKICAgICAKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxp
dHlPYmplY3RXcmFwcGVySU9TLm1tIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3Mv
V2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJJT1MubW0KaW5kZXggNmQyMWFjYi4uMjVlYzMx
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNz
aWJpbGl0eU9iamVjdFdyYXBwZXJJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJJT1MubW0KQEAgLTEzMjgsNyAr
MTMyOCw3IEBAIHN0YXRpYyBSZW5kZXJPYmplY3QqIHJlbmRlcmVyRm9yVmlldyhXQUtWaWV3KiB2
aWV3KQogICAgIGlmICghZnJhbWUpCiAgICAgICAgIHJldHVybiAwOwogICAgIAotICAgIE5vZGUq
IG5vZGUgPSBmcmFtZS0+ZG9jdW1lbnQoKS0+b3duZXJFbGVtZW50KCk7CisgICAgTm9kZSogbm9k
ZSA9IGZyYW1lLT5kb2N1bWVudCgpLm93bmVyRWxlbWVudCgpOwogICAgIGlmICghbm9kZSkKICAg
ICAgICAgcmV0dXJuIDA7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbSBiL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFj
Lm1tCmluZGV4IDQwZTliYjMuLjY2MDAwODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RX
cmFwcGVyTWFjLm1tCkBAIC0zMzEzLDcgKzMzMTMsNyBAQCBzdGF0aWMgUmVuZGVyT2JqZWN0KiBy
ZW5kZXJlckZvclZpZXcoTlNWaWV3KiB2aWV3KQogICAgIGlmICghZnJhbWUpCiAgICAgICAgIHJl
dHVybiAwOwogICAgIAotICAgIE5vZGUqIG5vZGUgPSBmcmFtZS0+ZG9jdW1lbnQoKS0+b3duZXJF
bGVtZW50KCk7CisgICAgTm9kZSogbm9kZSA9IGZyYW1lLT5kb2N1bWVudCgpLm93bmVyRWxlbWVu
dCgpOwogICAgIGlmICghbm9kZSkKICAgICAgICAgcmV0dXJuIDA7CiAgICAgCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuY3BwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmNwcAppbmRleCBhZGUyODI2Li4xMjk4NGQ4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5jcHAKQEAgLTI3
MCw3ICsyNzAsNyBAQCBib29sIHNob3VsZEFsbG93QWNjZXNzVG9GcmFtZShFeGVjU3RhdGUqIGV4
ZWMsIEZyYW1lKiBmcmFtZSwgU3RyaW5nJiBtZXNzYWdlKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgaWYgKEJpbmRpbmdTZWN1cml0eTo6c2hvdWxkQWxsb3dBY2Nlc3NUb0ZyYW1lKGV4ZWMs
IGZyYW1lLCBEb05vdFJlcG9ydFNlY3VyaXR5RXJyb3IpKQogICAgICAgICByZXR1cm4gdHJ1ZTsK
LSAgICBtZXNzYWdlID0gZnJhbWUtPmRvY3VtZW50KCktPmRvbVdpbmRvdygpLT5jcm9zc0RvbWFp
bkFjY2Vzc0Vycm9yTWVzc2FnZShhY3RpdmVET01XaW5kb3coZXhlYykpOworICAgIG1lc3NhZ2Ug
PSBmcmFtZS0+ZG9jdW1lbnQoKS5kb21XaW5kb3coKS0+Y3Jvc3NEb21haW5BY2Nlc3NFcnJvck1l
c3NhZ2UoYWN0aXZlRE9NV2luZG93KGV4ZWMpKTsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKQEAg
LTI4Niw3ICsyODYsNyBAQCB2b2lkIHByaW50RXJyb3JNZXNzYWdlRm9yRnJhbWUoRnJhbWUqIGZy
YW1lLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiB7CiAgICAgaWYgKCFmcmFtZSkKICAgICAgICAg
cmV0dXJuOwotICAgIGZyYW1lLT5kb2N1bWVudCgpLT5kb21XaW5kb3coKS0+cHJpbnRFcnJvck1l
c3NhZ2UobWVzc2FnZSk7CisgICAgZnJhbWUtPmRvY3VtZW50KCkuZG9tV2luZG93KCktPnByaW50
RXJyb3JNZXNzYWdlKG1lc3NhZ2UpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBvYmplY3RUb1N0cmlu
Z0Z1bmN0aW9uR2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqLCBFbmNvZGVkSlNWYWx1
ZSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKQEAgLTUzOCw3ICs1MzgsNyBAQCBib29sIEJp
bmRpbmdTZWN1cml0eTo6c2hvdWxkQWxsb3dBY2Nlc3NUb0RPTVdpbmRvdyhKU0M6OkV4ZWNTdGF0
ZSogc3RhdGUsIERPTVdpbgogCiBib29sIEJpbmRpbmdTZWN1cml0eTo6c2hvdWxkQWxsb3dBY2Nl
c3NUb0ZyYW1lKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgRnJhbWUqIHRhcmdldCwgU2VjdXJpdHlS
ZXBvcnRpbmdPcHRpb24gcmVwb3J0aW5nT3B0aW9uKQogewotICAgIHJldHVybiB0YXJnZXQgJiYg
Y2FuQWNjZXNzRG9jdW1lbnQoc3RhdGUsIHRhcmdldC0+ZG9jdW1lbnQoKSwgcmVwb3J0aW5nT3B0
aW9uKTsKKyAgICByZXR1cm4gdGFyZ2V0ICYmIGNhbkFjY2Vzc0RvY3VtZW50KHN0YXRlLCAmdGFy
Z2V0LT5kb2N1bWVudCgpLCByZXBvcnRpbmdPcHRpb24pOwogfQogCiBib29sIEJpbmRpbmdTZWN1
cml0eTo6c2hvdWxkQWxsb3dBY2Nlc3NUb05vZGUoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBOb2Rl
KiB0YXJnZXQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdp
bmRvd0N1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1
c3RvbS5jcHAKaW5kZXggOTRiNzVlMS4uNzdhODRiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcApAQCAtNzksMzQgKzc5LDMzIEBAIEVu
Y29kZWRKU1ZhbHVlIG5vbkNhY2hpbmdTdGF0aWNGdW5jdGlvbkdldHRlcihFeGVjU3RhdGUqIGV4
ZWMsIEpTT2JqZWN0KiwgRW5jb2RlCiAKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBjaGlsZEZyYW1l
R2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHNsb3RCYXNlLCBFbmNvZGVkSlNWYWx1
ZSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKIHsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKHRvSlMoZXhlYywganNDYXN0PEpTRE9NV2luZG93Kj4oc2xvdEJhc2UpLT5pbXBsKCkuZnJh
bWUoKS0+dHJlZSgpLnNjb3BlZENoaWxkKHByb3BlcnR5TmFtZVRvQXRvbWljU3RyaW5nKHByb3Bl
cnR5TmFtZSkpLT5kb2N1bWVudCgpLT5kb21XaW5kb3coKSkpOworICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUodG9KUyhleGVjLCBqc0Nhc3Q8SlNET01XaW5kb3cqPihzbG90QmFzZSktPmltcGwo
KS5mcmFtZSgpLT50cmVlKCkuc2NvcGVkQ2hpbGQocHJvcGVydHlOYW1lVG9BdG9taWNTdHJpbmco
cHJvcGVydHlOYW1lKSktPmRvY3VtZW50KCkuZG9tV2luZG93KCkpKTsKIH0KIAogc3RhdGljIEVu
Y29kZWRKU1ZhbHVlIGluZGV4R2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHNsb3RC
YXNlLCBFbmNvZGVkSlNWYWx1ZSwgdW5zaWduZWQgaW5kZXgpCiB7Ci0gICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZSh0b0pTKGV4ZWMsIGpzQ2FzdDxKU0RPTVdpbmRvdyo+KHNsb3RCYXNlKS0+aW1w
bCgpLmZyYW1lKCktPnRyZWUoKS5zY29wZWRDaGlsZChpbmRleCktPmRvY3VtZW50KCktPmRvbVdp
bmRvdygpKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTKGV4ZWMsIGpzQ2FzdDxK
U0RPTVdpbmRvdyo+KHNsb3RCYXNlKS0+aW1wbCgpLmZyYW1lKCktPnRyZWUoKS5zY29wZWRDaGls
ZChpbmRleCktPmRvY3VtZW50KCkuZG9tV2luZG93KCkpKTsKIH0KIAogc3RhdGljIEVuY29kZWRK
U1ZhbHVlIG5hbWVkSXRlbUdldHRlcihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBzbG90QmFz
ZSwgRW5jb2RlZEpTVmFsdWUsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCiB7CiAgICAgSlNE
T01XaW5kb3dCYXNlKiB0aGlzT2JqID0ganNDYXN0PEpTRE9NV2luZG93Kj4oc2xvdEJhc2UpOwot
ICAgIERvY3VtZW50KiBkb2N1bWVudCA9IHRoaXNPYmotPmltcGwoKS5mcmFtZSgpLT5kb2N1bWVu
dCgpOworICAgIERvY3VtZW50JiBkb2N1bWVudCA9IHRoaXNPYmotPmltcGwoKS5mcmFtZSgpLT5k
b2N1bWVudCgpOwogCiAgICAgQVNTRVJUKEJpbmRpbmdTZWN1cml0eTo6c2hvdWxkQWxsb3dBY2Nl
c3NUb0RPTVdpbmRvdyhleGVjLCB0aGlzT2JqLT5pbXBsKCkpKTsKLSAgICBBU1NFUlQoZG9jdW1l
bnQpOwotICAgIEFTU0VSVChkb2N1bWVudC0+aXNIVE1MRG9jdW1lbnQoKSk7CisgICAgQVNTRVJU
KGRvY3VtZW50LmlzSFRNTERvY3VtZW50KCkpOwogCiAgICAgQXRvbWljU3RyaW5nSW1wbCogYXRv
bWljUHJvcGVydHlOYW1lID0gZmluZEF0b21pY1N0cmluZyhwcm9wZXJ0eU5hbWUpOwotICAgIGlm
ICghYXRvbWljUHJvcGVydHlOYW1lIHx8ICF0b0hUTUxEb2N1bWVudChkb2N1bWVudCktPmhhc1dp
bmRvd05hbWVkSXRlbSgqYXRvbWljUHJvcGVydHlOYW1lKSkKKyAgICBpZiAoIWF0b21pY1Byb3Bl
cnR5TmFtZSB8fCAhdG9IVE1MRG9jdW1lbnQoJmRvY3VtZW50KS0+aGFzV2luZG93TmFtZWRJdGVt
KCphdG9taWNQcm9wZXJ0eU5hbWUpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
VW5kZWZpbmVkKCkpOwogCi0gICAgaWYgKFVOTElLRUxZKHRvSFRNTERvY3VtZW50KGRvY3VtZW50
KS0+d2luZG93TmFtZWRJdGVtQ29udGFpbnNNdWx0aXBsZUVsZW1lbnRzKCphdG9taWNQcm9wZXJ0
eU5hbWUpKSkgewotICAgICAgICBSZWZQdHI8SFRNTENvbGxlY3Rpb24+IGNvbGxlY3Rpb24gPSBk
b2N1bWVudC0+d2luZG93TmFtZWRJdGVtcyhhdG9taWNQcm9wZXJ0eU5hbWUpOworICAgIGlmIChV
TkxJS0VMWSh0b0hUTUxEb2N1bWVudCgmZG9jdW1lbnQpLT53aW5kb3dOYW1lZEl0ZW1Db250YWlu
c011bHRpcGxlRWxlbWVudHMoKmF0b21pY1Byb3BlcnR5TmFtZSkpKSB7CisgICAgICAgIFJlZlB0
cjxIVE1MQ29sbGVjdGlvbj4gY29sbGVjdGlvbiA9IGRvY3VtZW50LndpbmRvd05hbWVkSXRlbXMo
YXRvbWljUHJvcGVydHlOYW1lKTsKICAgICAgICAgQVNTRVJUKGNvbGxlY3Rpb24tPmxlbmd0aCgp
ID4gMSk7CiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9KUyhleGVjLCB0aGlzT2Jq
LT5nbG9iYWxPYmplY3QoKSwgV1RGOjpnZXRQdHIoY29sbGVjdGlvbikpKTsKICAgICB9CiAKLSAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlMoZXhlYywgdGhpc09iai0+Z2xvYmFsT2JqZWN0
KCksIHRvSFRNTERvY3VtZW50KGRvY3VtZW50KS0+d2luZG93TmFtZWRJdGVtKCphdG9taWNQcm9w
ZXJ0eU5hbWUpKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTKGV4ZWMsIHRoaXNP
YmotPmdsb2JhbE9iamVjdCgpLCB0b0hUTUxEb2N1bWVudCgmZG9jdW1lbnQpLT53aW5kb3dOYW1l
ZEl0ZW0oKmF0b21pY1Byb3BlcnR5TmFtZSkpKTsKIH0KIAogYm9vbCBKU0RPTVdpbmRvdzo6Z2V0
T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVy
dHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQpAQCAtMjQzLDEwICsyNDIs
MTAgQEAgYm9vbCBKU0RPTVdpbmRvdzo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiBvYmpl
Y3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHkKICAgICB9CiAKICAgICAvLyBBbGxvdyBzaG9y
dGN1dHMgbGlrZSAnSW1hZ2UxJyBpbnN0ZWFkIG9mIGRvY3VtZW50LmltYWdlcy5JbWFnZTEKLSAg
ICBEb2N1bWVudCogZG9jdW1lbnQgPSB0aGlzT2JqZWN0LT5pbXBsKCkuZnJhbWUoKS0+ZG9jdW1l
bnQoKTsKLSAgICBpZiAoZG9jdW1lbnQtPmlzSFRNTERvY3VtZW50KCkpIHsKKyAgICBEb2N1bWVu
dCYgZG9jdW1lbnQgPSB0aGlzT2JqZWN0LT5pbXBsKCkuZnJhbWUoKS0+ZG9jdW1lbnQoKTsKKyAg
ICBpZiAoZG9jdW1lbnQuaXNIVE1MRG9jdW1lbnQoKSkgewogICAgICAgICBBdG9taWNTdHJpbmdJ
bXBsKiBhdG9taWNQcm9wZXJ0eU5hbWUgPSBmaW5kQXRvbWljU3RyaW5nKHByb3BlcnR5TmFtZSk7
Ci0gICAgICAgIGlmIChhdG9taWNQcm9wZXJ0eU5hbWUgJiYgdG9IVE1MRG9jdW1lbnQoZG9jdW1l
bnQpLT5oYXNXaW5kb3dOYW1lZEl0ZW0oKmF0b21pY1Byb3BlcnR5TmFtZSkpIHsKKyAgICAgICAg
aWYgKGF0b21pY1Byb3BlcnR5TmFtZSAmJiB0b0hUTUxEb2N1bWVudCgmZG9jdW1lbnQpLT5oYXNX
aW5kb3dOYW1lZEl0ZW0oKmF0b21pY1Byb3BlcnR5TmFtZSkpIHsKICAgICAgICAgICAgIHNsb3Qu
c2V0Q3VzdG9tKHRoaXNPYmplY3QsIFJlYWRPbmx5IHwgRG9udERlbGV0ZSB8IERvbnRFbnVtLCBu
YW1lZEl0ZW1HZXR0ZXIpOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KQEAg
LTMxOSwxMCArMzE4LDEwIEBAIGJvb2wgSlNET01XaW5kb3c6OmdldE93blByb3BlcnR5U2xvdEJ5
SW5kZXgoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCB1CiAgICAgfQogCiAgICAg
Ly8gQWxsb3cgc2hvcnRjdXRzIGxpa2UgJ0ltYWdlMScgaW5zdGVhZCBvZiBkb2N1bWVudC5pbWFn
ZXMuSW1hZ2UxCi0gICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gdGhpc09iamVjdC0+aW1wbCgpLmZy
YW1lKCktPmRvY3VtZW50KCk7Ci0gICAgaWYgKGRvY3VtZW50LT5pc0hUTUxEb2N1bWVudCgpKSB7
CisgICAgRG9jdW1lbnQmIGRvY3VtZW50ID0gdGhpc09iamVjdC0+aW1wbCgpLmZyYW1lKCktPmRv
Y3VtZW50KCk7CisgICAgaWYgKGRvY3VtZW50LmlzSFRNTERvY3VtZW50KCkpIHsKICAgICAgICAg
QXRvbWljU3RyaW5nSW1wbCogYXRvbWljUHJvcGVydHlOYW1lID0gZmluZEF0b21pY1N0cmluZyhw
cm9wZXJ0eU5hbWUpOwotICAgICAgICBpZiAoYXRvbWljUHJvcGVydHlOYW1lICYmIHRvSFRNTERv
Y3VtZW50KGRvY3VtZW50KS0+aGFzV2luZG93TmFtZWRJdGVtKCphdG9taWNQcm9wZXJ0eU5hbWUp
KSB7CisgICAgICAgIGlmIChhdG9taWNQcm9wZXJ0eU5hbWUgJiYgdG9IVE1MRG9jdW1lbnQoJmRv
Y3VtZW50KS0+aGFzV2luZG93TmFtZWRJdGVtKCphdG9taWNQcm9wZXJ0eU5hbWUpKSB7CiAgICAg
ICAgICAgICBzbG90LnNldEN1c3RvbSh0aGlzT2JqZWN0LCBSZWFkT25seSB8IERvbnREZWxldGUg
fCBEb250RW51bSwgbmFtZWRJdGVtR2V0dGVyKTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwog
ICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RvY3Vt
ZW50Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRG9jdW1lbnRDdXN0
b20uY3BwCmluZGV4IDE0YzA4ZmYuLmQ1NWY1M2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRG9jdW1lbnRDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTRG9jdW1lbnRDdXN0b20uY3BwCkBAIC01Miw3ICs1Miw3IEBAIEpTVmFsdWUg
SlNEb2N1bWVudDo6bG9jYXRpb24oRXhlY1N0YXRlKiBleGVjKSBjb25zdAogICAgIGlmICghZnJh
bWUpCiAgICAgICAgIHJldHVybiBqc051bGwoKTsKIAotICAgIFJlZlB0cjxMb2NhdGlvbj4gbG9j
YXRpb24gPSBmcmFtZS0+ZG9jdW1lbnQoKS0+ZG9tV2luZG93KCktPmxvY2F0aW9uKCk7CisgICAg
UmVmUHRyPExvY2F0aW9uPiBsb2NhdGlvbiA9IGZyYW1lLT5kb2N1bWVudCgpLmRvbVdpbmRvdygp
LT5sb2NhdGlvbigpOwogICAgIGlmIChKU09iamVjdCogd3JhcHBlciA9IGdldENhY2hlZFdyYXBw
ZXIoZ2xvYmFsT2JqZWN0KCktPndvcmxkKCksIGxvY2F0aW9uLmdldCgpKSkKICAgICAgICAgcmV0
dXJuIHdyYXBwZXI7CiAKQEAgLTcxLDcgKzcxLDcgQEAgdm9pZCBKU0RvY3VtZW50OjpzZXRMb2Nh
dGlvbihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFsdWUpCiAgICAgaWYgKCFmcmFtZSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgaWYgKFJlZlB0cjxMb2NhdGlvbj4gbG9jYXRpb24gPSBmcmFt
ZS0+ZG9jdW1lbnQoKS0+ZG9tV2luZG93KCktPmxvY2F0aW9uKCkpCisgICAgaWYgKFJlZlB0cjxM
b2NhdGlvbj4gbG9jYXRpb24gPSBmcmFtZS0+ZG9jdW1lbnQoKS5kb21XaW5kb3coKS0+bG9jYXRp
b24oKSkKICAgICAgICAgbG9jYXRpb24tPnNldEhyZWYobG9jYXRpb25TdHJpbmcsIGFjdGl2ZURP
TVdpbmRvdyhleGVjKSwgZmlyc3RET01XaW5kb3coZXhlYykpOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0xhenlFdmVudExpc3RlbmVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTGF6eUV2ZW50TGlzdGVuZXIuY3BwCmluZGV4IDZlMzRk
MjEuLjRhYzNkZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTGF6
eUV2ZW50TGlzdGVuZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTGF6
eUV2ZW50TGlzdGVuZXIuY3BwCkBAIC0xNjUsOCArMTY1LDggQEAgUGFzc1JlZlB0cjxKU0xhenlF
dmVudExpc3RlbmVyPiBKU0xhenlFdmVudExpc3RlbmVyOjpjcmVhdGVGb3JET01XaW5kb3coRnJh
bWUmIGYKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICByZXR1cm4gYWRvcHRSZWYobmV3
IEpTTGF6eUV2ZW50TGlzdGVuZXIoYXR0cmlidXRlTmFtZS5sb2NhbE5hbWUoKS5zdHJpbmcoKSwK
LSAgICAgICAgZXZlbnRQYXJhbWV0ZXJOYW1lKGZyYW1lLmRvY3VtZW50KCktPmlzU1ZHRG9jdW1l
bnQoKSksIGF0dHJpYnV0ZVZhbHVlLAotICAgICAgICBudWxscHRyLCBmcmFtZS5kb2N1bWVudCgp
LT51cmwoKS5zdHJpbmcoKSwgZnJhbWUuc2NyaXB0KCkuZXZlbnRIYW5kbGVyUG9zaXRpb24oKSwK
KyAgICAgICAgZXZlbnRQYXJhbWV0ZXJOYW1lKGZyYW1lLmRvY3VtZW50KCkuaXNTVkdEb2N1bWVu
dCgpKSwgYXR0cmlidXRlVmFsdWUsCisgICAgICAgIG51bGxwdHIsIGZyYW1lLmRvY3VtZW50KCku
dXJsKCkuc3RyaW5nKCksIGZyYW1lLnNjcmlwdCgpLmV2ZW50SGFuZGxlclBvc2l0aW9uKCksCiAg
ICAgICAgIHRvSlNET01XaW5kb3coJmZyYW1lLCBtYWluVGhyZWFkTm9ybWFsV29ybGQoKSksIG1h
aW5UaHJlYWROb3JtYWxXb3JsZCgpKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL1NjcmlwdENhY2hlZEZyYW1lRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9TY3JpcHRDYWNoZWRGcmFtZURhdGEuY3BwCmluZGV4IDI0ZDFlMDQuLjAzMjYy
OGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENhY2hlZEZy
YW1lRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q2FjaGVk
RnJhbWVEYXRhLmNwcApAQCAtODMsNyArODMsNyBAQCB2b2lkIFNjcmlwdENhY2hlZEZyYW1lRGF0
YTo6cmVzdG9yZShGcmFtZSYgZnJhbWUpCiAgICAgICAgIGlmIChKU0RPTVdpbmRvdyogd2luZG93
ID0gbV93aW5kb3dzLmdldCh3b3JsZCkuZ2V0KCkpCiAgICAgICAgICAgICB3aW5kb3dTaGVsbC0+
c2V0V2luZG93KHdpbmRvdy0+dm0oKSwgd2luZG93KTsKICAgICAgICAgZWxzZSB7Ci0gICAgICAg
ICAgICBET01XaW5kb3cqIGRvbVdpbmRvdyA9IGZyYW1lLmRvY3VtZW50KCktPmRvbVdpbmRvdygp
OworICAgICAgICAgICAgRE9NV2luZG93KiBkb21XaW5kb3cgPSBmcmFtZS5kb2N1bWVudCgpLmRv
bVdpbmRvdygpOwogICAgICAgICAgICAgaWYgKCZ3aW5kb3dTaGVsbC0+d2luZG93KCktPmltcGwo
KSA9PSBkb21XaW5kb3cpCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAKaW5kZXggZjc4YWVhOC4u
YTI3MWNmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29u
dHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJv
bGxlci5jcHAKQEAgLTExNCw3ICsxMTQsNyBAQCBKU0RPTVdpbmRvd1NoZWxsKiBTY3JpcHRDb250
cm9sbGVyOjpjcmVhdGVXaW5kb3dTaGVsbChET01XcmFwcGVyV29ybGQmIHdvcmxkKQogICAgIFZN
JiB2bSA9IHdvcmxkLnZtKCk7CiAKICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IEpTRE9NV2lu
ZG93U2hlbGw6OmNyZWF0ZVN0cnVjdHVyZSh2bSwganNOdWxsKCkpOwotICAgIFN0cm9uZzxKU0RP
TVdpbmRvd1NoZWxsPiB3aW5kb3dTaGVsbCh2bSwgSlNET01XaW5kb3dTaGVsbDo6Y3JlYXRlKHZt
LCBtX2ZyYW1lLmRvY3VtZW50KCktPmRvbVdpbmRvdygpLCBzdHJ1Y3R1cmUsIHdvcmxkKSk7Cisg
ICAgU3Ryb25nPEpTRE9NV2luZG93U2hlbGw+IHdpbmRvd1NoZWxsKHZtLCBKU0RPTVdpbmRvd1No
ZWxsOjpjcmVhdGUodm0sIG1fZnJhbWUuZG9jdW1lbnQoKS5kb21XaW5kb3coKSwgc3RydWN0dXJl
LCB3b3JsZCkpOwogICAgIFN0cm9uZzxKU0RPTVdpbmRvd1NoZWxsPiB3aW5kb3dTaGVsbDIod2lu
ZG93U2hlbGwpOwogICAgIG1fd2luZG93U2hlbGxzLmFkZCgmd29ybGQsIHdpbmRvd1NoZWxsKTsK
ICAgICB3b3JsZC5kaWRDcmVhdGVXaW5kb3dTaGVsbCh0aGlzKTsKQEAgLTIzMCw4ICsyMzAsOCBA
QCBKU0RPTVdpbmRvd1NoZWxsKiBTY3JpcHRDb250cm9sbGVyOjppbml0U2NyaXB0KERPTVdyYXBw
ZXJXb3JsZCYgd29ybGQpCiAKICAgICB3aW5kb3dTaGVsbC0+d2luZG93KCktPnVwZGF0ZURvY3Vt
ZW50KCk7CiAKLSAgICBpZiAobV9mcmFtZS5kb2N1bWVudCgpKQotICAgICAgICB3aW5kb3dTaGVs
bC0+d2luZG93KCktPnNldEV2YWxFbmFibGVkKG1fZnJhbWUuZG9jdW1lbnQoKS0+Y29udGVudFNl
Y3VyaXR5UG9saWN5KCktPmFsbG93RXZhbCgwLCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OlN1cHBy
ZXNzUmVwb3J0KSwgbV9mcmFtZS5kb2N1bWVudCgpLT5jb250ZW50U2VjdXJpdHlQb2xpY3koKS0+
ZXZhbERpc2FibGVkRXJyb3JNZXNzYWdlKCkpOworICAgIEFTU0VSVChtX2ZyYW1lLmRvY3VtZW50
KCkpOworICAgIHdpbmRvd1NoZWxsLT53aW5kb3coKS0+c2V0RXZhbEVuYWJsZWQobV9mcmFtZS5k
b2N1bWVudCgpLmNvbnRlbnRTZWN1cml0eVBvbGljeSgpLT5hbGxvd0V2YWwoMCwgQ29udGVudFNl
Y3VyaXR5UG9saWN5OjpTdXBwcmVzc1JlcG9ydCksIG1fZnJhbWUuZG9jdW1lbnQoKS5jb250ZW50
U2VjdXJpdHlQb2xpY3koKS0+ZXZhbERpc2FibGVkRXJyb3JNZXNzYWdlKCkpOwogCiAgICAgaWYg
KFBhZ2UqIHBhZ2UgPSBtX2ZyYW1lLnBhZ2UoKSkgewogICAgICAgICBhdHRhY2hEZWJ1Z2dlcih3
aW5kb3dTaGVsbCwgcGFnZS0+ZGVidWdnZXIoKSk7CkBAIC0yNDYsNyArMjQ2LDcgQEAgSlNET01X
aW5kb3dTaGVsbCogU2NyaXB0Q29udHJvbGxlcjo6aW5pdFNjcmlwdChET01XcmFwcGVyV29ybGQm
IHdvcmxkKQogCiBUZXh0UG9zaXRpb24gU2NyaXB0Q29udHJvbGxlcjo6ZXZlbnRIYW5kbGVyUG9z
aXRpb24oKSBjb25zdAogewotICAgIFNjcmlwdGFibGVEb2N1bWVudFBhcnNlciogcGFyc2VyID0g
bV9mcmFtZS5kb2N1bWVudCgpLT5zY3JpcHRhYmxlRG9jdW1lbnRQYXJzZXIoKTsKKyAgICBTY3Jp
cHRhYmxlRG9jdW1lbnRQYXJzZXIqIHBhcnNlciA9IG1fZnJhbWUuZG9jdW1lbnQoKS5zY3JpcHRh
YmxlRG9jdW1lbnRQYXJzZXIoKTsKICAgICBpZiAocGFyc2VyKQogICAgICAgICByZXR1cm4gcGFy
c2VyLT50ZXh0UG9zaXRpb24oKTsKICAgICByZXR1cm4gVGV4dFBvc2l0aW9uOjptaW5pbXVtUG9z
aXRpb24oKTsKQEAgLTQ3MSw3ICs0NzEsNyBAQCB2b2lkIFNjcmlwdENvbnRyb2xsZXI6OmNsZWFy
U2NyaXB0T2JqZWN0cygpCiBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSBTY3JpcHRDb250cm9sbGVy
OjpleGVjdXRlU2NyaXB0SW5Xb3JsZChET01XcmFwcGVyV29ybGQmIHdvcmxkLCBjb25zdCBTdHJp
bmcmIHNjcmlwdCwgYm9vbCBmb3JjZVVzZXJHZXN0dXJlKQogewogICAgIFVzZXJHZXN0dXJlSW5k
aWNhdG9yIGdlc3R1cmVJbmRpY2F0b3IoZm9yY2VVc2VyR2VzdHVyZSA/IERlZmluaXRlbHlQcm9j
ZXNzaW5nVXNlckdlc3R1cmUgOiBQb3NzaWJseVByb2Nlc3NpbmdVc2VyR2VzdHVyZSk7Ci0gICAg
U2NyaXB0U291cmNlQ29kZSBzb3VyY2VDb2RlKHNjcmlwdCwgbV9mcmFtZS5kb2N1bWVudCgpLT51
cmwoKSk7CisgICAgU2NyaXB0U291cmNlQ29kZSBzb3VyY2VDb2RlKHNjcmlwdCwgbV9mcmFtZS5k
b2N1bWVudCgpLnVybCgpKTsKIAogICAgIGlmICghY2FuRXhlY3V0ZVNjcmlwdHMoQWJvdXRUb0V4
ZWN1dGVTY3JpcHQpIHx8IGlzUGF1c2VkKCkpCiAgICAgICAgIHJldHVybiBEZXByZWNhdGVkOjpT
Y3JpcHRWYWx1ZSgpOwpAQCAtNDkyLDEwICs0OTIsMTEgQEAgYm9vbCBTY3JpcHRDb250cm9sbGVy
OjpzaG91bGRCeXBhc3NNYWluV29ybGRDb250ZW50U2VjdXJpdHlQb2xpY3koKQogCiBib29sIFNj
cmlwdENvbnRyb2xsZXI6OmNhbkV4ZWN1dGVTY3JpcHRzKFJlYXNvbkZvckNhbGxpbmdDYW5FeGVj
dXRlU2NyaXB0cyByZWFzb24pCiB7Ci0gICAgaWYgKG1fZnJhbWUuZG9jdW1lbnQoKSAmJiBtX2Zy
YW1lLmRvY3VtZW50KCktPmlzU2FuZGJveGVkKFNhbmRib3hTY3JpcHRzKSkgeworICAgIEFTU0VS
VChtX2ZyYW1lLmRvY3VtZW50KCkpOworICAgIGlmIChtX2ZyYW1lLmRvY3VtZW50KCkuaXNTYW5k
Ym94ZWQoU2FuZGJveFNjcmlwdHMpKSB7CiAgICAgICAgIC8vIEZJWE1FOiBUaGlzIG1lc3NhZ2Ug
c2hvdWxkIGJlIG1vdmVkIG9mZiB0aGUgY29uc29sZSBvbmNlIGEgc29sdXRpb24gdG8gaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMzI3NCBleGlzdHMuCiAgICAgICAg
IGlmIChyZWFzb24gPT0gQWJvdXRUb0V4ZWN1dGVTY3JpcHQpCi0gICAgICAgICAgICBtX2ZyYW1l
LmRvY3VtZW50KCktPmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OlNlY3VyaXR5LCBN
ZXNzYWdlTGV2ZWw6OkVycm9yLCAiQmxvY2tlZCBzY3JpcHQgZXhlY3V0aW9uIGluICciICsgbV9m
cmFtZS5kb2N1bWVudCgpLT51cmwoKS5zdHJpbmdDZW50ZXJFbGxpcHNpemVkVG9MZW5ndGgoKSAr
ICInIGJlY2F1c2UgdGhlIGRvY3VtZW50J3MgZnJhbWUgaXMgc2FuZGJveGVkIGFuZCB0aGUgJ2Fs
bG93LXNjcmlwdHMnIHBlcm1pc3Npb24gaXMgbm90IHNldC4iKTsKKyAgICAgICAgICAgIG1fZnJh
bWUuZG9jdW1lbnQoKS5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpTZWN1cml0eSwg
TWVzc2FnZUxldmVsOjpFcnJvciwgIkJsb2NrZWQgc2NyaXB0IGV4ZWN1dGlvbiBpbiAnIiArIG1f
ZnJhbWUuZG9jdW1lbnQoKS51cmwoKS5zdHJpbmdDZW50ZXJFbGxpcHNpemVkVG9MZW5ndGgoKSAr
ICInIGJlY2F1c2UgdGhlIGRvY3VtZW50J3MgZnJhbWUgaXMgc2FuZGJveGVkIGFuZCB0aGUgJ2Fs
bG93LXNjcmlwdHMnIHBlcm1pc3Npb24gaXMgbm90IHNldC4iKTsKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgIH0KIApAQCAtNTA4LDcgKzUwOSw3IEBAIGJvb2wgU2NyaXB0Q29udHJvbGxlcjo6
Y2FuRXhlY3V0ZVNjcmlwdHMoUmVhc29uRm9yQ2FsbGluZ0NhbkV4ZWN1dGVTY3JpcHRzIHJlYXNv
CiBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSBTY3JpcHRDb250cm9sbGVyOjpleGVjdXRlU2NyaXB0
KGNvbnN0IFN0cmluZyYgc2NyaXB0LCBib29sIGZvcmNlVXNlckdlc3R1cmUpCiB7CiAgICAgVXNl
ckdlc3R1cmVJbmRpY2F0b3IgZ2VzdHVyZUluZGljYXRvcihmb3JjZVVzZXJHZXN0dXJlID8gRGVm
aW5pdGVseVByb2Nlc3NpbmdVc2VyR2VzdHVyZSA6IFBvc3NpYmx5UHJvY2Vzc2luZ1VzZXJHZXN0
dXJlKTsKLSAgICByZXR1cm4gZXhlY3V0ZVNjcmlwdChTY3JpcHRTb3VyY2VDb2RlKHNjcmlwdCwg
bV9mcmFtZS5kb2N1bWVudCgpLT51cmwoKSkpOworICAgIHJldHVybiBleGVjdXRlU2NyaXB0KFNj
cmlwdFNvdXJjZUNvZGUoc2NyaXB0LCBtX2ZyYW1lLmRvY3VtZW50KCkudXJsKCkpKTsKIH0KIAog
RGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUgU2NyaXB0Q29udHJvbGxlcjo6ZXhlY3V0ZVNjcmlwdChj
b25zdCBTY3JpcHRTb3VyY2VDb2RlJiBzb3VyY2VDb2RlKQpAQCAtNTI2LDEzICs1MjcsMTMgQEAg
Ym9vbCBTY3JpcHRDb250cm9sbGVyOjpleGVjdXRlSWZKYXZhU2NyaXB0VVJMKGNvbnN0IFVSTCYg
dXJsLCBTaG91bGRSZXBsYWNlRG9jdW0KICAgICBpZiAoIXByb3RvY29sSXNKYXZhU2NyaXB0KHVy
bCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGlmICghbV9mcmFtZS5wYWdlKCkgfHwg
IW1fZnJhbWUuZG9jdW1lbnQoKS0+Y29udGVudFNlY3VyaXR5UG9saWN5KCktPmFsbG93SmF2YVNj
cmlwdFVSTHMobV9mcmFtZS5kb2N1bWVudCgpLT51cmwoKSwgZXZlbnRIYW5kbGVyUG9zaXRpb24o
KS5tX2xpbmUpKQorICAgIGlmICghbV9mcmFtZS5wYWdlKCkgfHwgIW1fZnJhbWUuZG9jdW1lbnQo
KS5jb250ZW50U2VjdXJpdHlQb2xpY3koKS0+YWxsb3dKYXZhU2NyaXB0VVJMcyhtX2ZyYW1lLmRv
Y3VtZW50KCkudXJsKCksIGV2ZW50SGFuZGxlclBvc2l0aW9uKCkubV9saW5lKSkKICAgICAgICAg
cmV0dXJuIHRydWU7CiAKICAgICAvLyBXZSBuZWVkIHRvIGhvbGQgb250byB0aGUgRnJhbWUgaGVy
ZSBiZWNhdXNlIGV4ZWN1dGluZyBzY3JpcHQgY2FuCiAgICAgLy8gZGVzdHJveSB0aGUgZnJhbWUu
CiAgICAgUmVmPEZyYW1lPiBwcm90ZWN0b3IobV9mcmFtZSk7Ci0gICAgUmVmUHRyPERvY3VtZW50
PiBvd25lckRvY3VtZW50KG1fZnJhbWUuZG9jdW1lbnQoKSk7CisgICAgUmVmUHRyPERvY3VtZW50
PiBvd25lckRvY3VtZW50KCZtX2ZyYW1lLmRvY3VtZW50KCkpOwogCiAgICAgY29uc3QgaW50IGph
dmFzY3JpcHRTY2hlbWVMZW5ndGggPSBzaXplb2YoImphdmFzY3JpcHQ6IikgLSAxOwogCkBAIC01
NTUsMTEgKzU1NiwxMSBAQCBib29sIFNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVJZkphdmFTY3Jp
cHRVUkwoY29uc3QgVVJMJiB1cmwsIFNob3VsZFJlcGxhY2VEb2N1bQogICAgIC8vICAgICAgICBo
dHRwOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjc4MgogICAgIGlmIChzaG91
bGRSZXBsYWNlRG9jdW1lbnRJZkphdmFTY3JpcHRVUkwgPT0gUmVwbGFjZURvY3VtZW50SWZKYXZh
U2NyaXB0VVJMKSB7CiAgICAgICAgIC8vIFdlJ3JlIHN0aWxsIGluIGEgZnJhbWUsIHNvIHRoZXJl
IHNob3VsZCBiZSBhIERvY3VtZW50TG9hZGVyLgotICAgICAgICBBU1NFUlQobV9mcmFtZS5kb2N1
bWVudCgpLT5sb2FkZXIoKSk7CisgICAgICAgIEFTU0VSVChtX2ZyYW1lLT5kb2N1bWVudCgpLmxv
YWRlcigpKTsKICAgICAgICAgCiAgICAgICAgIC8vIERvY3VtZW50V3JpdGVyOjpyZXBsYWNlRG9j
dW1lbnQgY2FuIGNhdXNlIHRoZSBEb2N1bWVudExvYWRlciB0byBnZXQgZGVyZWYnZWQgYW5kIHBv
c3NpYmxlIGRlc3Ryb3llZCwKICAgICAgICAgLy8gc28gcHJvdGVjdCBpdCB3aXRoIGEgUmVmUHRy
LgotICAgICAgICBpZiAoUmVmUHRyPERvY3VtZW50TG9hZGVyPiBsb2FkZXIgPSBtX2ZyYW1lLmRv
Y3VtZW50KCktPmxvYWRlcigpKQorICAgICAgICBpZiAoUmVmUHRyPERvY3VtZW50TG9hZGVyPiBs
b2FkZXIgPSBtX2ZyYW1lLmRvY3VtZW50KCkubG9hZGVyKCkpCiAgICAgICAgICAgICBsb2FkZXIt
PndyaXRlcigpLnJlcGxhY2VEb2N1bWVudChzY3JpcHRSZXN1bHQsIG93bmVyRG9jdW1lbnQuZ2V0
KCkpOwogICAgIH0KICAgICByZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9NZWRpYVF1ZXJ5RXZhbHVhdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9NZWRpYVF1
ZXJ5RXZhbHVhdG9yLmNwcAppbmRleCBiN2U4OGU2Li5hMDMyYTdlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvTWVkaWFRdWVyeUV2YWx1YXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvY3NzL01lZGlhUXVlcnlFdmFsdWF0b3IuY3BwCkBAIC0zNjUsMTAgKzM2NSwxMCBAQCBzdGF0
aWMgYm9vbCBkZXZpY2VfaGVpZ2h0TWVkaWFGZWF0dXJlRXZhbChDU1NWYWx1ZSogdmFsdWUsIFJl
bmRlclN0eWxlKiBzdHlsZSwgRgogewogICAgIGlmICh2YWx1ZSkgewogICAgICAgICBGbG9hdFJl
Y3Qgc2cgPSBzY3JlZW5SZWN0KGZyYW1lLT5wYWdlKCktPm1haW5GcmFtZSgpLnZpZXcoKSk7Ci0g
ICAgICAgIFJlbmRlclN0eWxlKiByb290U3R5bGUgPSBmcmFtZS0+ZG9jdW1lbnQoKS0+ZG9jdW1l
bnRFbGVtZW50KCktPnJlbmRlclN0eWxlKCk7CisgICAgICAgIFJlbmRlclN0eWxlKiByb290U3R5
bGUgPSBmcmFtZS0+ZG9jdW1lbnQoKS5kb2N1bWVudEVsZW1lbnQoKS0+cmVuZGVyU3R5bGUoKTsK
ICAgICAgICAgaW50IGxlbmd0aDsKICAgICAgICAgbG9uZyBoZWlnaHQgPSBzZy5oZWlnaHQoKTsK
LSAgICAgICAgcmV0dXJuIGNvbXB1dGVMZW5ndGgodmFsdWUsICFmcmFtZS0+ZG9jdW1lbnQoKS0+
aW5RdWlya3NNb2RlKCksIHN0eWxlLCByb290U3R5bGUsIGxlbmd0aCkgJiYgY29tcGFyZVZhbHVl
KHN0YXRpY19jYXN0PGludD4oaGVpZ2h0KSwgbGVuZ3RoLCBvcCk7CisgICAgICAgIHJldHVybiBj
b21wdXRlTGVuZ3RoKHZhbHVlLCAhZnJhbWUtPmRvY3VtZW50KCkuaW5RdWlya3NNb2RlKCksIHN0
eWxlLCByb290U3R5bGUsIGxlbmd0aCkgJiYgY29tcGFyZVZhbHVlKHN0YXRpY19jYXN0PGludD4o
aGVpZ2h0KSwgbGVuZ3RoLCBvcCk7CiAgICAgfQogICAgIC8vICh7LG1pbi0sbWF4LX1kZXZpY2Ut
aGVpZ2h0KQogICAgIC8vIGFzc3VtZSBpZiB3ZSBoYXZlIGEgZGV2aWNlLCBhc3N1bWUgbm9uLXpl
cm8KQEAgLTM3OSwxMCArMzc5LDEwIEBAIHN0YXRpYyBib29sIGRldmljZV93aWR0aE1lZGlhRmVh
dHVyZUV2YWwoQ1NTVmFsdWUqIHZhbHVlLCBSZW5kZXJTdHlsZSogc3R5bGUsIEZyCiB7CiAgICAg
aWYgKHZhbHVlKSB7CiAgICAgICAgIEZsb2F0UmVjdCBzZyA9IHNjcmVlblJlY3QoZnJhbWUtPnBh
Z2UoKS0+bWFpbkZyYW1lKCkudmlldygpKTsKLSAgICAgICAgUmVuZGVyU3R5bGUqIHJvb3RTdHls
ZSA9IGZyYW1lLT5kb2N1bWVudCgpLT5kb2N1bWVudEVsZW1lbnQoKS0+cmVuZGVyU3R5bGUoKTsK
KyAgICAgICAgUmVuZGVyU3R5bGUqIHJvb3RTdHlsZSA9IGZyYW1lLT5kb2N1bWVudCgpLmRvY3Vt
ZW50RWxlbWVudCgpLT5yZW5kZXJTdHlsZSgpOwogICAgICAgICBpbnQgbGVuZ3RoOwogICAgICAg
ICBsb25nIHdpZHRoID0gc2cud2lkdGgoKTsKLSAgICAgICAgcmV0dXJuIGNvbXB1dGVMZW5ndGgo
dmFsdWUsICFmcmFtZS0+ZG9jdW1lbnQoKS0+aW5RdWlya3NNb2RlKCksIHN0eWxlLCByb290U3R5
bGUsIGxlbmd0aCkgJiYgY29tcGFyZVZhbHVlKHN0YXRpY19jYXN0PGludD4od2lkdGgpLCBsZW5n
dGgsIG9wKTsKKyAgICAgICAgcmV0dXJuIGNvbXB1dGVMZW5ndGgodmFsdWUsICFmcmFtZS0+ZG9j
dW1lbnQoKS5pblF1aXJrc01vZGUoKSwgc3R5bGUsIHJvb3RTdHlsZSwgbGVuZ3RoKSAmJiBjb21w
YXJlVmFsdWUoc3RhdGljX2Nhc3Q8aW50Pih3aWR0aCksIGxlbmd0aCwgb3ApOwogICAgIH0KICAg
ICAvLyAoeyxtaW4tLG1heC19ZGV2aWNlLXdpZHRoKQogICAgIC8vIGFzc3VtZSBpZiB3ZSBoYXZl
IGEgZGV2aWNlLCBhc3N1bWUgbm9uLXplcm8KQEAgLTM5NywxMSArMzk3LDExIEBAIHN0YXRpYyBi
b29sIGhlaWdodE1lZGlhRmVhdHVyZUV2YWwoQ1NTVmFsdWUqIHZhbHVlLCBSZW5kZXJTdHlsZSog
c3R5bGUsIEZyYW1lKiBmCiAKICAgICBpZiAodmFsdWUpIHsKICAgICAgICAgaW50IGhlaWdodCA9
IHZpZXctPmxheW91dEhlaWdodCgpOwotICAgICAgICBpZiAoUmVuZGVyVmlldyogcmVuZGVyVmll
dyA9IGZyYW1lLT5kb2N1bWVudCgpLT5yZW5kZXJWaWV3KCkpCisgICAgICAgIGlmIChSZW5kZXJW
aWV3KiByZW5kZXJWaWV3ID0gZnJhbWUtPmRvY3VtZW50KCkucmVuZGVyVmlldygpKQogICAgICAg
ICAgICAgaGVpZ2h0ID0gYWRqdXN0Rm9yQWJzb2x1dGVab29tKGhlaWdodCwgKnJlbmRlclZpZXcp
OwotICAgICAgICBSZW5kZXJTdHlsZSogcm9vdFN0eWxlID0gZnJhbWUtPmRvY3VtZW50KCktPmRv
Y3VtZW50RWxlbWVudCgpLT5yZW5kZXJTdHlsZSgpOworICAgICAgICBSZW5kZXJTdHlsZSogcm9v
dFN0eWxlID0gZnJhbWUtPmRvY3VtZW50KCkuZG9jdW1lbnRFbGVtZW50KCktPnJlbmRlclN0eWxl
KCk7CiAgICAgICAgIGludCBsZW5ndGg7Ci0gICAgICAgIHJldHVybiBjb21wdXRlTGVuZ3RoKHZh
bHVlLCAhZnJhbWUtPmRvY3VtZW50KCktPmluUXVpcmtzTW9kZSgpLCBzdHlsZSwgcm9vdFN0eWxl
LCBsZW5ndGgpICYmIGNvbXBhcmVWYWx1ZShoZWlnaHQsIGxlbmd0aCwgb3ApOworICAgICAgICBy
ZXR1cm4gY29tcHV0ZUxlbmd0aCh2YWx1ZSwgIWZyYW1lLT5kb2N1bWVudCgpLmluUXVpcmtzTW9k
ZSgpLCBzdHlsZSwgcm9vdFN0eWxlLCBsZW5ndGgpICYmIGNvbXBhcmVWYWx1ZShoZWlnaHQsIGxl
bmd0aCwgb3ApOwogICAgIH0KIAogICAgIHJldHVybiB2aWV3LT5sYXlvdXRIZWlnaHQoKSAhPSAw
OwpAQCAtNDE1LDExICs0MTUsMTEgQEAgc3RhdGljIGJvb2wgd2lkdGhNZWRpYUZlYXR1cmVFdmFs
KENTU1ZhbHVlKiB2YWx1ZSwgUmVuZGVyU3R5bGUqIHN0eWxlLCBGcmFtZSogZnIKIAogICAgIGlm
ICh2YWx1ZSkgewogICAgICAgICBpbnQgd2lkdGggPSB2aWV3LT5sYXlvdXRXaWR0aCgpOwotICAg
ICAgICBpZiAoUmVuZGVyVmlldyogcmVuZGVyVmlldyA9IGZyYW1lLT5kb2N1bWVudCgpLT5yZW5k
ZXJWaWV3KCkpCisgICAgICAgIGlmIChSZW5kZXJWaWV3KiByZW5kZXJWaWV3ID0gZnJhbWUtPmRv
Y3VtZW50KCkucmVuZGVyVmlldygpKQogICAgICAgICAgICAgd2lkdGggPSBhZGp1c3RGb3JBYnNv
bHV0ZVpvb20od2lkdGgsICpyZW5kZXJWaWV3KTsKLSAgICAgICAgUmVuZGVyU3R5bGUqIHJvb3RT
dHlsZSA9IGZyYW1lLT5kb2N1bWVudCgpLT5kb2N1bWVudEVsZW1lbnQoKS0+cmVuZGVyU3R5bGUo
KTsKKyAgICAgICAgUmVuZGVyU3R5bGUqIHJvb3RTdHlsZSA9IGZyYW1lLT5kb2N1bWVudCgpLmRv
Y3VtZW50RWxlbWVudCgpLT5yZW5kZXJTdHlsZSgpOwogICAgICAgICBpbnQgbGVuZ3RoOwotICAg
ICAgICByZXR1cm4gY29tcHV0ZUxlbmd0aCh2YWx1ZSwgIWZyYW1lLT5kb2N1bWVudCgpLT5pblF1
aXJrc01vZGUoKSwgc3R5bGUsIHJvb3RTdHlsZSwgbGVuZ3RoKSAmJiBjb21wYXJlVmFsdWUod2lk
dGgsIGxlbmd0aCwgb3ApOworICAgICAgICByZXR1cm4gY29tcHV0ZUxlbmd0aCh2YWx1ZSwgIWZy
YW1lLT5kb2N1bWVudCgpLmluUXVpcmtzTW9kZSgpLCBzdHlsZSwgcm9vdFN0eWxlLCBsZW5ndGgp
ICYmIGNvbXBhcmVWYWx1ZSh3aWR0aCwgbGVuZ3RoLCBvcCk7CiAgICAgfQogCiAgICAgcmV0dXJu
IHZpZXctPmxheW91dFdpZHRoKCkgIT0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9TdHlsZU1lZGlhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZU1lZGlhLmNwcAppbmRl
eCBmNTRmNmIyLi40ZGFhNGY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVN
ZWRpYS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlTWVkaWEuY3BwCkBAIC01NSwx
MyArNTUsMTMgQEAgYm9vbCBTdHlsZU1lZGlhOjptYXRjaE1lZGl1bShjb25zdCBTdHJpbmcmIHF1
ZXJ5KSBjb25zdAogICAgIGlmICghbV9mcmFtZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0g
ICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gbV9mcmFtZS0+ZG9jdW1lbnQoKTsKKyAgICBEb2N1bWVu
dCYgZG9jdW1lbnQgPSBtX2ZyYW1lLT5kb2N1bWVudCgpOwogICAgIEFTU0VSVChkb2N1bWVudCk7
Ci0gICAgRWxlbWVudCogZG9jdW1lbnRFbGVtZW50ID0gZG9jdW1lbnQtPmRvY3VtZW50RWxlbWVu
dCgpOworICAgIEVsZW1lbnQqIGRvY3VtZW50RWxlbWVudCA9IGRvY3VtZW50LmRvY3VtZW50RWxl
bWVudCgpOwogICAgIGlmICghZG9jdW1lbnRFbGVtZW50KQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAKLSAgICBSZWZQdHI8UmVuZGVyU3R5bGU+IHJvb3RTdHlsZSA9IGRvY3VtZW50LT5lbnN1cmVT
dHlsZVJlc29sdmVyKCkuc3R5bGVGb3JFbGVtZW50KGRvY3VtZW50RWxlbWVudCwgZG9jdW1lbnQt
PnJlbmRlclN0eWxlKCksIERpc2FsbG93U3R5bGVTaGFyaW5nLCBNYXRjaE9ubHlVc2VyQWdlbnRS
dWxlcyk7CisgICAgUmVmUHRyPFJlbmRlclN0eWxlPiByb290U3R5bGUgPSBkb2N1bWVudC5lbnN1
cmVTdHlsZVJlc29sdmVyKCkuc3R5bGVGb3JFbGVtZW50KGRvY3VtZW50RWxlbWVudCwgZG9jdW1l
bnQucmVuZGVyU3R5bGUoKSwgRGlzYWxsb3dTdHlsZVNoYXJpbmcsIE1hdGNoT25seVVzZXJBZ2Vu
dFJ1bGVzKTsKIAogICAgIFJlZlB0cjxNZWRpYVF1ZXJ5U2V0PiBtZWRpYSA9IE1lZGlhUXVlcnlT
ZXQ6OmNyZWF0ZSgpOwogICAgIGlmICghbWVkaWEtPnBhcnNlKHF1ZXJ5KSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9j
dW1lbnQuY3BwCmluZGV4IDQ1YmI0N2QuLjRkZWRiMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9Eb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNw
cApAQCAtMzUyLDEyICszNTIsMTAgQEAgc3RhdGljIGJvb2wgY2FuQWNjZXNzQW5jZXN0b3IoY29u
c3QgU2VjdXJpdHlPcmlnaW4qIGFjdGl2ZVNlY3VyaXR5T3JpZ2luLCBGcmFtZSoKIAogICAgIGNv
bnN0IGJvb2wgaXNMb2NhbEFjdGl2ZU9yaWdpbiA9IGFjdGl2ZVNlY3VyaXR5T3JpZ2luLT5pc0xv
Y2FsKCk7CiAgICAgZm9yIChGcmFtZSogYW5jZXN0b3JGcmFtZSA9IHRhcmdldEZyYW1lOyBhbmNl
c3RvckZyYW1lOyBhbmNlc3RvckZyYW1lID0gYW5jZXN0b3JGcmFtZS0+dHJlZSgpLnBhcmVudCgp
KSB7Ci0gICAgICAgIERvY3VtZW50KiBhbmNlc3RvckRvY3VtZW50ID0gYW5jZXN0b3JGcmFtZS0+
ZG9jdW1lbnQoKTsKLSAgICAgICAgLy8gRklYTUU6IFNob3VsZCBiZSBhbiBBU1NFUlQ/IEZyYW1l
cyBzaG91bGQgYWx3YXkgaGF2ZSBkb2N1bWVudHMuCi0gICAgICAgIGlmICghYW5jZXN0b3JEb2N1
bWVudCkKLSAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICBEb2N1bWVudCYgYW5jZXN0
b3JEb2N1bWVudCA9IGFuY2VzdG9yRnJhbWUtPmRvY3VtZW50KCk7CisgICAgICAgIEFTU0VSVChh
bmNlc3RvckRvY3VtZW50KTsKIAotICAgICAgICBjb25zdCBTZWN1cml0eU9yaWdpbiogYW5jZXN0
b3JTZWN1cml0eU9yaWdpbiA9IGFuY2VzdG9yRG9jdW1lbnQtPnNlY3VyaXR5T3JpZ2luKCk7Cisg
ICAgICAgIGNvbnN0IFNlY3VyaXR5T3JpZ2luKiBhbmNlc3RvclNlY3VyaXR5T3JpZ2luID0gYW5j
ZXN0b3JEb2N1bWVudC5zZWN1cml0eU9yaWdpbigpOwogICAgICAgICBpZiAoYWN0aXZlU2VjdXJp
dHlPcmlnaW4tPmNhbkFjY2VzcyhhbmNlc3RvclNlY3VyaXR5T3JpZ2luKSkKICAgICAgICAgICAg
IHJldHVybiB0cnVlOwogICAgICAgICAKQEAgLTM3MywxMCArMzcxLDEwIEBAIHN0YXRpYyBib29s
IGNhbkFjY2Vzc0FuY2VzdG9yKGNvbnN0IFNlY3VyaXR5T3JpZ2luKiBhY3RpdmVTZWN1cml0eU9y
aWdpbiwgRnJhbWUqCiAKIHN0YXRpYyB2b2lkIHByaW50TmF2aWdhdGlvbkVycm9yTWVzc2FnZShG
cmFtZSogZnJhbWUsIGNvbnN0IFVSTCYgYWN0aXZlVVJMLCBjb25zdCBjaGFyKiByZWFzb24pCiB7
Ci0gICAgU3RyaW5nIG1lc3NhZ2UgPSAiVW5zYWZlIEphdmFTY3JpcHQgYXR0ZW1wdCB0byBpbml0
aWF0ZSBuYXZpZ2F0aW9uIGZvciBmcmFtZSB3aXRoIFVSTCAnIiArIGZyYW1lLT5kb2N1bWVudCgp
LT51cmwoKS5zdHJpbmcoKSArICInIGZyb20gZnJhbWUgd2l0aCBVUkwgJyIgKyBhY3RpdmVVUkwu
c3RyaW5nKCkgKyAiJy4gIiArIHJlYXNvbiArICJcbiI7CisgICAgU3RyaW5nIG1lc3NhZ2UgPSAi
VW5zYWZlIEphdmFTY3JpcHQgYXR0ZW1wdCB0byBpbml0aWF0ZSBuYXZpZ2F0aW9uIGZvciBmcmFt
ZSB3aXRoIFVSTCAnIiArIGZyYW1lLT5kb2N1bWVudCgpLnVybCgpLnN0cmluZygpICsgIicgZnJv
bSBmcmFtZSB3aXRoIFVSTCAnIiArIGFjdGl2ZVVSTC5zdHJpbmcoKSArICInLiAiICsgcmVhc29u
ICsgIlxuIjsKIAogICAgIC8vIEZJWE1FOiBzaG91bGQgd2UgcHJpbnQgdG8gdGhlIGNvbnNvbGUg
b2YgdGhlIGRvY3VtZW50IHBlcmZvcm1pbmcgdGhlIG5hdmlnYXRpb24gaW5zdGVhZD8KLSAgICBm
cmFtZS0+ZG9jdW1lbnQoKS0+ZG9tV2luZG93KCktPnByaW50RXJyb3JNZXNzYWdlKG1lc3NhZ2Up
OworICAgIGZyYW1lLT5kb2N1bWVudCgpLmRvbVdpbmRvdygpLT5wcmludEVycm9yTWVzc2FnZSht
ZXNzYWdlKTsKIH0KIAogdWludDY0X3QgRG9jdW1lbnQ6OnNfZ2xvYmFsVHJlZVZlcnNpb24gPSAw
OwpAQCAtMTk3MSwxMCArMTk2OSw5IEBAIHZvaWQgRG9jdW1lbnQ6OmNyZWF0ZVJlbmRlclRyZWUo
KQogc3RhdGljIHZvaWQgcGFnZVdoZWVsRXZlbnRIYW5kbGVyQ291bnRDaGFuZ2VkKFBhZ2UmIHBh
Z2UpCiB7CiAgICAgdW5zaWduZWQgY291bnQgPSAwOwotICAgIGZvciAoY29uc3QgRnJhbWUqIGZy
YW1lID0gJnBhZ2UubWFpbkZyYW1lKCk7IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50cmVlKCkudHJh
dmVyc2VOZXh0KCkpIHsKLSAgICAgICAgaWYgKERvY3VtZW50KiBkb2N1bWVudCA9IGZyYW1lLT5k
b2N1bWVudCgpKQotICAgICAgICAgICAgY291bnQgKz0gZG9jdW1lbnQtPndoZWVsRXZlbnRIYW5k
bGVyQ291bnQoKTsKLSAgICB9CisgICAgZm9yIChjb25zdCBGcmFtZSogZnJhbWUgPSAmcGFnZS5t
YWluRnJhbWUoKTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyZWUoKS50cmF2ZXJzZU5leHQoKSkK
KyAgICAgICAgY291bnQgKz0gZnJhbWUtPmRvY3VtZW50KCkud2hlZWxFdmVudEhhbmRsZXJDb3Vu
dCgpOworCiAgICAgcGFnZS5jaHJvbWUoKS5jbGllbnQoKS5udW1XaGVlbEV2ZW50SGFuZGxlcnND
aGFuZ2VkKGNvdW50KTsKIH0KIApAQCAtMjc3Miw3ICsyNzY5LDcgQEAgRnJhbWUqIERvY3VtZW50
OjpmaW5kVW5zYWZlUGFyZW50U2Nyb2xsUHJvcGFnYXRpb25Cb3VuZGFyeSgpCiAgICAgRnJhbWUq
IGFuY2VzdG9yRnJhbWUgPSBjdXJyZW50RnJhbWUtPnRyZWUoKS5wYXJlbnQoKTsKIAogICAgIHdo
aWxlIChhbmNlc3RvckZyYW1lKSB7Ci0gICAgICAgIGlmICghYW5jZXN0b3JGcmFtZS0+ZG9jdW1l
bnQoKS0+c2VjdXJpdHlPcmlnaW4oKS0+Y2FuQWNjZXNzKHNlY3VyaXR5T3JpZ2luKCkpKQorICAg
ICAgICBpZiAoIWFuY2VzdG9yRnJhbWUtPmRvY3VtZW50KCkuc2VjdXJpdHlPcmlnaW4oKS0+Y2Fu
QWNjZXNzKHNlY3VyaXR5T3JpZ2luKCkpKQogICAgICAgICAgICAgcmV0dXJuIGN1cnJlbnRGcmFt
ZTsKICAgICAgICAgY3VycmVudEZyYW1lID0gYW5jZXN0b3JGcmFtZTsKICAgICAgICAgYW5jZXN0
b3JGcmFtZSA9IGFuY2VzdG9yRnJhbWUtPnRyZWUoKS5wYXJlbnQoKTsKQEAgLTQyNDIsNyArNDIz
OSw3IEBAIGJvb2wgRG9jdW1lbnQ6OnNob3VsZENyZWF0ZVJlbmRlcmVycygpCiBzdGF0aWMgRWRp
dG9yOjpDb21tYW5kIGNvbW1hbmQoRG9jdW1lbnQqIGRvY3VtZW50LCBjb25zdCBTdHJpbmcmIGNv
bW1hbmROYW1lLCBib29sIHVzZXJJbnRlcmZhY2UgPSBmYWxzZSkKIHsKICAgICBGcmFtZSogZnJh
bWUgPSBkb2N1bWVudC0+ZnJhbWUoKTsKLSAgICBpZiAoIWZyYW1lIHx8IGZyYW1lLT5kb2N1bWVu
dCgpICE9IGRvY3VtZW50KQorICAgIGlmICghZnJhbWUgfHwgJmZyYW1lLT5kb2N1bWVudCgpICE9
IGRvY3VtZW50KQogICAgICAgICByZXR1cm4gRWRpdG9yOjpDb21tYW5kKCk7CiAKICAgICBkb2N1
bWVudC0+dXBkYXRlU3R5bGVJZk5lZWRlZCgpOwpAQCAtNDMyMCw4ICs0MzE3LDggQEAgdm9pZCBE
b2N1bWVudDo6c2V0VHJhbnNmb3JtU291cmNlKHN0ZDo6dW5pcXVlX3B0cjxUcmFuc2Zvcm1Tb3Vy
Y2U+IHNvdXJjZSkKIHZvaWQgRG9jdW1lbnQ6OnNldERlc2lnbk1vZGUoSW5oZXJpdGVkQm9vbCB2
YWx1ZSkKIHsKICAgICBtX2Rlc2lnbk1vZGUgPSB2YWx1ZTsKLSAgICBmb3IgKEZyYW1lKiBmcmFt
ZSA9IG1fZnJhbWU7IGZyYW1lICYmIGZyYW1lLT5kb2N1bWVudCgpOyBmcmFtZSA9IGZyYW1lLT50
cmVlKCkudHJhdmVyc2VOZXh0KG1fZnJhbWUpKQotICAgICAgICBmcmFtZS0+ZG9jdW1lbnQoKS0+
c2NoZWR1bGVGb3JjZWRTdHlsZVJlY2FsYygpOworICAgIGZvciAoRnJhbWUqIGZyYW1lID0gbV9m
cmFtZTsgZnJhbWUgJiYgJmZyYW1lLT5kb2N1bWVudCgpOyBmcmFtZSA9IGZyYW1lLT50cmVlKCku
dHJhdmVyc2VOZXh0KG1fZnJhbWUpKQorICAgICAgICBmcmFtZS0+ZG9jdW1lbnQoKS5zY2hlZHVs
ZUZvcmNlZFN0eWxlUmVjYWxjKCk7CiB9CiAKIERvY3VtZW50OjpJbmhlcml0ZWRCb29sIERvY3Vt
ZW50OjpnZXREZXNpZ25Nb2RlKCkgY29uc3QKQEAgLTQzNDUsNyArNDM0Miw3IEBAIERvY3VtZW50
KiBEb2N1bWVudDo6cGFyZW50RG9jdW1lbnQoKSBjb25zdAogICAgIEZyYW1lKiBwYXJlbnQgPSBt
X2ZyYW1lLT50cmVlKCkucGFyZW50KCk7CiAgICAgaWYgKCFwYXJlbnQpCiAgICAgICAgIHJldHVy
biBudWxscHRyOwotICAgIHJldHVybiBwYXJlbnQtPmRvY3VtZW50KCk7CisgICAgcmV0dXJuICZw
YXJlbnQtPmRvY3VtZW50KCk7CiB9CiAKIERvY3VtZW50JiBEb2N1bWVudDo6dG9wRG9jdW1lbnQo
KSBjb25zdApAQCAtNDM1Niw3ICs0MzUzLDcgQEAgRG9jdW1lbnQmIERvY3VtZW50Ojp0b3BEb2N1
bWVudCgpIGNvbnN0CiAgICAgICAgIGlmICghbV9mcmFtZSkKICAgICAgICAgICAgIHJldHVybiBj
b25zdF9jYXN0PERvY3VtZW50Jj4oKnRoaXMpOwogICAgICAgICAvLyBUaGlzIHNob3VsZCBhbHdh
eXMgYmUgbm9uLW51bGwuCi0gICAgICAgIERvY3VtZW50KiBtYWluRnJhbWVEb2N1bWVudCA9IG1f
ZnJhbWUtPm1haW5GcmFtZSgpLmRvY3VtZW50KCk7CisgICAgICAgIERvY3VtZW50KiBtYWluRnJh
bWVEb2N1bWVudCA9ICZtX2ZyYW1lLT5tYWluRnJhbWUoKS5kb2N1bWVudCgpOwogICAgICAgICBy
ZXR1cm4gbWFpbkZyYW1lRG9jdW1lbnQgPyAqbWFpbkZyYW1lRG9jdW1lbnQgOiBjb25zdF9jYXN0
PERvY3VtZW50Jj4oKnRoaXMpOwogICAgIH0KIApAQCAtNDY4NiwxNSArNDY4MywxNSBAQCB2b2lk
IERvY3VtZW50Ojppbml0U2VjdXJpdHlDb250ZXh0KCkKICAgICAgICAgLy8gYnV0IHdlJ3JlIGFs
c28gc2FuZGJveGVkLCB0aGUgb25seSB0aGluZyB3ZSBpbmhlcml0IGlzIHRoZSBhYmlsaXR5CiAg
ICAgICAgIC8vIHRvIGxvYWQgbG9jYWwgcmVzb3VyY2VzLiBUaGlzIGxldHMgYWJvdXQ6Ymxhbmsg
aWZyYW1lcyBpbiBmaWxlOi8vCiAgICAgICAgIC8vIFVSTCBkb2N1bWVudHMgbG9hZCBpbWFnZXMg
YW5kIG90aGVyIHJlc291cmNlcyBmcm9tIHRoZSBmaWxlIHN5c3RlbS4KLSAgICAgICAgaWYgKG93
bmVyRnJhbWUtPmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCktPmNhbkxvYWRMb2NhbFJlc291
cmNlcygpKQorICAgICAgICBpZiAob3duZXJGcmFtZS0+ZG9jdW1lbnQoKS5zZWN1cml0eU9yaWdp
bigpLT5jYW5Mb2FkTG9jYWxSZXNvdXJjZXMoKSkKICAgICAgICAgICAgIHNlY3VyaXR5T3JpZ2lu
KCktPmdyYW50TG9hZExvY2FsUmVzb3VyY2VzKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
LSAgICBtX2Nvb2tpZVVSTCA9IG93bmVyRnJhbWUtPmRvY3VtZW50KCktPmNvb2tpZVVSTCgpOwor
ICAgIG1fY29va2llVVJMID0gb3duZXJGcmFtZS0+ZG9jdW1lbnQoKS5jb29raWVVUkwoKTsKICAg
ICAvLyBXZSBhbGlhcyB0aGUgU2VjdXJpdHlPcmlnaW5zIHRvIG1hdGNoIEZpcmVmb3gsIHNlZSBC
dWcgMTUzMTMKICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTUzMTMKLSAgICBzZXRTZWN1cml0eU9yaWdpbihvd25lckZyYW1lLT5kb2N1bWVudCgpLT5zZWN1
cml0eU9yaWdpbigpKTsKKyAgICBzZXRTZWN1cml0eU9yaWdpbihvd25lckZyYW1lLT5kb2N1bWVu
dCgpLnNlY3VyaXR5T3JpZ2luKCkpOwogfQogCiB2b2lkIERvY3VtZW50Ojppbml0Q29udGVudFNl
Y3VyaXR5UG9saWN5KCkKQEAgLTU3ODQsNyArNTc4MSw4IEBAIHZvaWQgRG9jdW1lbnQ6OmRpZFJl
bW92ZVRvdWNoRXZlbnRIYW5kbGVyKE5vZGUqIGhhbmRsZXIpCiAgICAgaWYgKG1fdG91Y2hFdmVu
dFRhcmdldHMtPnNpemUoKSkKICAgICAgICAgcmV0dXJuOwogICAgIGZvciAoY29uc3QgRnJhbWUq
IGZyYW1lID0gJnBhZ2UtPm1haW5GcmFtZSgpOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgp
LnRyYXZlcnNlTmV4dCgpKSB7Ci0gICAgICAgIGlmIChmcmFtZS0+ZG9jdW1lbnQoKSAmJiBmcmFt
ZS0+ZG9jdW1lbnQoKS0+aGFzVG91Y2hFdmVudEhhbmRsZXJzKCkpCisgICAgICAgIEFTU0VSVChm
cmFtZS0+ZG9jdW1lbnQoKSk7CisgICAgICAgIGlmIChmcmFtZS0+ZG9jdW1lbnQoKS5oYXNUb3Vj
aEV2ZW50SGFuZGxlcnMoKSkKICAgICAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgcGFnZS0+
Y2hyb21lKCkuY2xpZW50KCkubmVlZFRvdWNoRXZlbnRzKGZhbHNlKTsKQEAgLTU4MTgsNyArNTgx
Niw3IEBAIERvY3VtZW50TG9hZGVyKiBEb2N1bWVudDo6bG9hZGVyKCkgY29uc3QKICAgICBpZiAo
IWxvYWRlcikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgCi0gICAgaWYgKG1fZnJhbWUt
PmRvY3VtZW50KCkgIT0gdGhpcykKKyAgICBpZiAoJm1fZnJhbWUuZG9jdW1lbnQoKSAhPSB0aGlz
KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAKICAgICByZXR1cm4gbG9hZGVyOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1VzZXJUeXBpbmdHZXN0dXJlSW5kaWNhdG9yLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Vc2VyVHlwaW5nR2VzdHVyZUluZGljYXRvci5jcHAKaW5k
ZXggYWVhYWJlYy4uODNiMzlhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1VzZXJU
eXBpbmdHZXN0dXJlSW5kaWNhdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVXNlclR5
cGluZ0dlc3R1cmVJbmRpY2F0b3IuY3BwCkBAIC01NCw3ICs1NCw3IEBAIFVzZXJUeXBpbmdHZXN0
dXJlSW5kaWNhdG9yOjpVc2VyVHlwaW5nR2VzdHVyZUluZGljYXRvcihGcmFtZSYgZnJhbWUpCiAg
ICAgLCBtX3ByZXZpb3VzRm9jdXNlZE5vZGUoZm9jdXNlZE5vZGUoKSkKIHsKICAgICBzX3Byb2Nl
c3NpbmdVc2VyVHlwaW5nR2VzdHVyZSA9IHRydWU7Ci0gICAgZm9jdXNlZE5vZGUoKSA9IGZyYW1l
LmRvY3VtZW50KCkgPyBmcmFtZS5kb2N1bWVudCgpLT5mb2N1c2VkRWxlbWVudCgpIDogMDsKKyAg
ICBmb2N1c2VkTm9kZSgpID0gZnJhbWUuZG9jdW1lbnQoKS5mb2N1c2VkRWxlbWVudCgpOwogfQog
CiBVc2VyVHlwaW5nR2VzdHVyZUluZGljYXRvcjo6flVzZXJUeXBpbmdHZXN0dXJlSW5kaWNhdG9y
KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQWx0ZXJuYXRpdmVUZXh0Q29u
dHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FsdGVybmF0aXZlVGV4dENvbnRy
b2xsZXIuY3BwCmluZGV4IDBlYTQxNzMuLjFhYjZlZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9BbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyLmNwcApAQCAtMTkyLDcgKzE5
Miw3IEBAIGJvb2wgQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlcjo6aGFzUGVuZGluZ0NvcnJlY3Rp
b24oKSBjb25zdAogCiBib29sIEFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXI6OmlzU3BlbGxpbmdN
YXJrZXJBbGxvd2VkKFBhc3NSZWZQdHI8UmFuZ2U+IG1pc3NwZWxsaW5nUmFuZ2UpIGNvbnN0CiB7
Ci0gICAgcmV0dXJuICFtX2ZyYW1lLmRvY3VtZW50KCktPm1hcmtlcnMoKS5oYXNNYXJrZXJzKG1p
c3NwZWxsaW5nUmFuZ2UuZ2V0KCksIERvY3VtZW50TWFya2VyOjpTcGVsbENoZWNraW5nRXhlbXB0
aW9uKTsKKyAgICByZXR1cm4gIW1fZnJhbWUuZG9jdW1lbnQoKS5tYXJrZXJzKCkuaGFzTWFya2Vy
cyhtaXNzcGVsbGluZ1JhbmdlLmdldCgpLCBEb2N1bWVudE1hcmtlcjo6U3BlbGxDaGVja2luZ0V4
ZW1wdGlvbik7CiB9CiAKIHZvaWQgQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlcjo6c2hvdyhQYXNz
UmVmUHRyPFJhbmdlPiByYW5nZVRvUmVwbGFjZSwgY29uc3QgU3RyaW5nJiByZXBsYWNlbWVudCkK
QEAgLTMxNiwxMSArMzE2LDExIEBAIHZvaWQgQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlcjo6cmVz
cG9uZFRvVW5hcHBsaWVkU3BlbGxDb3JyZWN0aW9uKGNvbnN0IFZpc2libGVTCiB7CiAgICAgaWYg
KEFsdGVybmF0aXZlVGV4dENsaWVudCogY2xpZW50ID0gYWx0ZXJuYXRpdmVUZXh0Q2xpZW50KCkp
CiAgICAgICAgIGNsaWVudC0+cmVjb3JkQXV0b2NvcnJlY3Rpb25SZXNwb25zZShBdXRvY29ycmVj
dGlvblJldmVydGVkLCBjb3JyZWN0ZWQsIGNvcnJlY3Rpb24pOwotICAgIG1fZnJhbWUuZG9jdW1l
bnQoKS0+dXBkYXRlTGF5b3V0KCk7CisgICAgbV9mcmFtZS5kb2N1bWVudCgpLnVwZGF0ZUxheW91
dCgpOwogICAgIG1fZnJhbWUuc2VsZWN0aW9uKCkuc2V0U2VsZWN0aW9uKHNlbGVjdGlvbk9mQ29y
cmVjdGVkLCBGcmFtZVNlbGVjdGlvbjo6ZGVmYXVsdFNldFNlbGVjdGlvbk9wdGlvbnMoKSB8IEZy
YW1lU2VsZWN0aW9uOjpTcGVsbENvcnJlY3Rpb25UcmlnZ2VyZWQpOwogICAgIFJlZlB0cjxSYW5n
ZT4gcmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKCptX2ZyYW1lLmRvY3VtZW50KCksIG1fZnJhbWUuc2Vs
ZWN0aW9uKCkuc2VsZWN0aW9uKCkuc3RhcnQoKSwgbV9mcmFtZS5zZWxlY3Rpb24oKS5zZWxlY3Rp
b24oKS5lbmQoKSk7CiAKLSAgICBEb2N1bWVudE1hcmtlckNvbnRyb2xsZXImIG1hcmtlcnMgPSBt
X2ZyYW1lLmRvY3VtZW50KCktPm1hcmtlcnMoKTsKKyAgICBEb2N1bWVudE1hcmtlckNvbnRyb2xs
ZXImIG1hcmtlcnMgPSBtX2ZyYW1lLmRvY3VtZW50KCkubWFya2VycygpOwogICAgIG1hcmtlcnMu
cmVtb3ZlTWFya2VycyhyYW5nZS5nZXQoKSwgRG9jdW1lbnRNYXJrZXI6OlNwZWxsaW5nIHwgRG9j
dW1lbnRNYXJrZXI6OkF1dG9jb3JyZWN0ZWQsIERvY3VtZW50TWFya2VyQ29udHJvbGxlcjo6UmVt
b3ZlUGFydGlhbGx5T3ZlcmxhcHBpbmdNYXJrZXIpOwogICAgIG1hcmtlcnMuYWRkTWFya2VyKHJh
bmdlLmdldCgpLCBEb2N1bWVudE1hcmtlcjo6UmVwbGFjZW1lbnQpOwogICAgIG1hcmtlcnMuYWRk
TWFya2VyKHJhbmdlLmdldCgpLCBEb2N1bWVudE1hcmtlcjo6U3BlbGxDaGVja2luZ0V4ZW1wdGlv
bik7CkBAIC00ODQsNyArNDg0LDcgQEAgdm9pZCBBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyOjpy
ZXNwb25kVG9DaGFuZ2VkU2VsZWN0aW9uKGNvbnN0IFZpc2libGVTZWxlY3Rpb24KIHZvaWQgQWx0
ZXJuYXRpdmVUZXh0Q29udHJvbGxlcjo6cmVzcG9uZFRvQXBwbGllZEVkaXRpbmcoQ29tcG9zaXRl
RWRpdENvbW1hbmQqIGNvbW1hbmQpCiB7CiAgICAgaWYgKGNvbW1hbmQtPmlzVG9wTGV2ZWxDb21t
YW5kKCkgJiYgIWNvbW1hbmQtPnNob3VsZFJldGFpbkF1dG9jb3JyZWN0aW9uSW5kaWNhdG9yKCkp
Ci0gICAgICAgIG1fZnJhbWUuZG9jdW1lbnQoKS0+bWFya2VycygpLnJlbW92ZU1hcmtlcnMoRG9j
dW1lbnRNYXJrZXI6OkNvcnJlY3Rpb25JbmRpY2F0b3IpOworICAgICAgICBtX2ZyYW1lLmRvY3Vt
ZW50KCkubWFya2VycygpLnJlbW92ZU1hcmtlcnMoRG9jdW1lbnRNYXJrZXI6OkNvcnJlY3Rpb25J
bmRpY2F0b3IpOwogCiAgICAgbWFya1ByZWNlZGluZ1doaXRlc3BhY2VGb3JEZWxldGVkQXV0b2Nv
cnJlY3Rpb25BZnRlckNvbW1hbmQoY29tbWFuZCk7CiAgICAgbV9vcmlnaW5hbFN0cmluZ0Zvckxh
c3REZWxldGVkQXV0b2NvcnJlY3Rpb24gPSBTdHJpbmcoKTsKQEAgLTQ5Nyw3ICs0OTcsNyBAQCB2
b2lkIEFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXI6OnJlc3BvbmRUb1VuYXBwbGllZEVkaXRpbmco
RWRpdENvbW1hbmRDb21wb3NpdGlvbgogICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2UgPSBSYW5nZTo6
Y3JlYXRlKCptX2ZyYW1lLmRvY3VtZW50KCksIGNvbW1hbmQtPnN0YXJ0aW5nU2VsZWN0aW9uKCku
c3RhcnQoKSwgY29tbWFuZC0+c3RhcnRpbmdTZWxlY3Rpb24oKS5lbmQoKSk7CiAgICAgaWYgKCFy
YW5nZSkKICAgICAgICAgcmV0dXJuOwotICAgIERvY3VtZW50TWFya2VyQ29udHJvbGxlciYgbWFy
a2VycyA9IG1fZnJhbWUuZG9jdW1lbnQoKS0+bWFya2VycygpOworICAgIERvY3VtZW50TWFya2Vy
Q29udHJvbGxlciYgbWFya2VycyA9IG1fZnJhbWUuZG9jdW1lbnQoKS5tYXJrZXJzKCk7CiAgICAg
bWFya2Vycy5hZGRNYXJrZXIocmFuZ2UuZ2V0KCksIERvY3VtZW50TWFya2VyOjpSZXBsYWNlbWVu
dCk7CiAgICAgbWFya2Vycy5hZGRNYXJrZXIocmFuZ2UuZ2V0KCksIERvY3VtZW50TWFya2VyOjpT
cGVsbENoZWNraW5nRXhlbXB0aW9uKTsKIH0KQEAgLTU5NCwxMiArNTk0LDEyIEBAIHZvaWQgQWx0
ZXJuYXRpdmVUZXh0Q29udHJvbGxlcjo6bWFya1ByZWNlZGluZ1doaXRlc3BhY2VGb3JEZWxldGVk
QXV0b2NvcnJlY3Rpb25BCiAgICAgLy8gTWFyayB0aGlzIHdoaXRlc3BhY2UgdG8gaW5kaWNhdGUg
d2UgaGF2ZSBkZWxldGVkIGFuIGF1dG9jb3JyZWN0aW9uIGZvbGxvd2luZyB0aGlzCiAgICAgLy8g
d2hpdGVzcGFjZS4gU28gaWYgdGhlIHVzZXIgdHlwZXMgdGhlIHNhbWUgb3JpZ2luYWwgd29yZCBh
Z2FpbiBhdCB0aGlzIHBvc2l0aW9uLCB3ZQogICAgIC8vIHdvbid0IGF1dG9jb3JyZWN0IGl0IGFn
YWluLgotICAgIG1fZnJhbWUuZG9jdW1lbnQoKS0+bWFya2VycygpLmFkZE1hcmtlcihwcmVjZWRp
bmdDaGFyYWN0ZXJSYW5nZS5nZXQoKSwgRG9jdW1lbnRNYXJrZXI6OkRlbGV0ZWRBdXRvY29ycmVj
dGlvbiwgbV9vcmlnaW5hbFN0cmluZ0Zvckxhc3REZWxldGVkQXV0b2NvcnJlY3Rpb24pOworICAg
IG1fZnJhbWUuZG9jdW1lbnQoKS5tYXJrZXJzKCkuYWRkTWFya2VyKHByZWNlZGluZ0NoYXJhY3Rl
clJhbmdlLmdldCgpLCBEb2N1bWVudE1hcmtlcjo6RGVsZXRlZEF1dG9jb3JyZWN0aW9uLCBtX29y
aWdpbmFsU3RyaW5nRm9yTGFzdERlbGV0ZWRBdXRvY29ycmVjdGlvbik7CiB9CiAKIGJvb2wgQWx0
ZXJuYXRpdmVUZXh0Q29udHJvbGxlcjo6cHJvY2Vzc01hcmtlcnNPblRleHRUb0JlUmVwbGFjZWRC
eVJlc3VsdChjb25zdCBUZXh0Q2hlY2tpbmdSZXN1bHQqIHJlc3VsdCwgUmFuZ2UqIHJhbmdlV2l0
aEFsdGVybmF0aXZlLCBjb25zdCBTdHJpbmcmIHN0cmluZ1RvQmVSZXBsYWNlZCkKIHsKLSAgICBE
b2N1bWVudE1hcmtlckNvbnRyb2xsZXImIG1hcmtlckNvbnRyb2xsZXIgPSBtX2ZyYW1lLmRvY3Vt
ZW50KCktPm1hcmtlcnMoKTsKKyAgICBEb2N1bWVudE1hcmtlckNvbnRyb2xsZXImIG1hcmtlckNv
bnRyb2xsZXIgPSBtX2ZyYW1lLmRvY3VtZW50KCkubWFya2VycygpOwogICAgIGlmIChtYXJrZXJD
b250cm9sbGVyLmhhc01hcmtlcnMocmFuZ2VXaXRoQWx0ZXJuYXRpdmUsIERvY3VtZW50TWFya2Vy
OjpSZXBsYWNlbWVudCkpIHsKICAgICAgICAgaWYgKHJlc3VsdC0+dHlwZSA9PSBUZXh0Q2hlY2tp
bmdUeXBlQ29ycmVjdGlvbikKICAgICAgICAgICAgIHJlY29yZFNwZWxsY2hlY2tlclJlc3BvbnNl
Rm9yTW9kaWZpZWRDb3JyZWN0aW9uKHJhbmdlV2l0aEFsdGVybmF0aXZlLCBzdHJpbmdUb0JlUmVw
bGFjZWQsIHJlc3VsdC0+cmVwbGFjZW1lbnQpOwpAQCAtNjg1LDE0ICs2ODUsMTQgQEAgYm9vbCBB
bHRlcm5hdGl2ZVRleHRDb250cm9sbGVyOjppbnNlcnREaWN0YXRlZFRleHQoY29uc3QgU3RyaW5n
JiB0ZXh0LCBjb25zdCBWZWMKICAgICBpZiAodHJpZ2dlcmluZ0V2ZW50KQogICAgICAgICB0YXJn
ZXQgPSB0cmlnZ2VyaW5nRXZlbnQtPnRhcmdldCgpOwogICAgIGVsc2UKLSAgICAgICAgdGFyZ2V0
ID0gZXZlbnRUYXJnZXRFbGVtZW50Rm9yRG9jdW1lbnQobV9mcmFtZS5kb2N1bWVudCgpKTsKKyAg
ICAgICAgdGFyZ2V0ID0gZXZlbnRUYXJnZXRFbGVtZW50Rm9yRG9jdW1lbnQoJm1fZnJhbWUuZG9j
dW1lbnQoKSk7CiAgICAgaWYgKCF0YXJnZXQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAg
IGlmIChGcmFtZVZpZXcqIHZpZXcgPSBtX2ZyYW1lLnZpZXcoKSkKICAgICAgICAgdmlldy0+ZGlz
YWJsZUxheWVyRmx1c2hUaHJvdHRsaW5nVGVtcG9yYXJpbHlGb3JJbnRlcmFjdGlvbigpOwogCi0g
ICAgUmVmUHRyPFRleHRFdmVudD4gZXZlbnQgPSBUZXh0RXZlbnQ6OmNyZWF0ZUZvckRpY3RhdGlv
bihtX2ZyYW1lLmRvY3VtZW50KCktPmRvbVdpbmRvdygpLCB0ZXh0LCBkaWN0YXRpb25BbHRlcm5h
dGl2ZXMpOworICAgIFJlZlB0cjxUZXh0RXZlbnQ+IGV2ZW50ID0gVGV4dEV2ZW50OjpjcmVhdGVG
b3JEaWN0YXRpb24obV9mcmFtZS5kb2N1bWVudCgpLmRvbVdpbmRvdygpLCB0ZXh0LCBkaWN0YXRp
b25BbHRlcm5hdGl2ZXMpOwogICAgIGV2ZW50LT5zZXRVbmRlcmx5aW5nRXZlbnQodHJpZ2dlcmlu
Z0V2ZW50KTsKIAogICAgIHRhcmdldC0+ZGlzcGF0Y2hFdmVudChldmVudCwgSUdOT1JFX0VYQ0VQ
VElPTik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0RlbGV0ZUJ1dHRvbkNv
bnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9EZWxldGVCdXR0b25Db250cm9s
bGVyLmNwcAppbmRleCBmYjI4NzdjLi4zMjExMDU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL0RlbGV0ZUJ1dHRvbkNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvRGVsZXRlQnV0dG9uQ29udHJvbGxlci5jcHAKQEAgLTI3OCw3ICsyNzgsNyBAQCB2
b2lkIERlbGV0ZUJ1dHRvbkNvbnRyb2xsZXI6OnNob3coSFRNTEVsZW1lbnQqIGVsZW1lbnQpCiAg
ICAgICAgIHJldHVybjsKIAogICAgIC8vIHdlIHJlbHkgb24gdGhlIHJlbmRlcmVyIGhhdmluZyBj
dXJyZW50IGluZm9ybWF0aW9uLCBzbyB3ZSBzaG91bGQgdXBkYXRlIHRoZSBsYXlvdXQgaWYgbmVl
ZGVkCi0gICAgbV9mcmFtZS5kb2N1bWVudCgpLT51cGRhdGVMYXlvdXRJZ25vcmVQZW5kaW5nU3R5
bGVzaGVldHMoKTsKKyAgICBtX2ZyYW1lLmRvY3VtZW50KCkudXBkYXRlTGF5b3V0SWdub3JlUGVu
ZGluZ1N0eWxlc2hlZXRzKCk7CiAKICAgICBtX3RhcmdldCA9IGVsZW1lbnQ7CiAKQEAgLTMzOCw3
ICszMzgsNyBAQCB2b2lkIERlbGV0ZUJ1dHRvbkNvbnRyb2xsZXI6OmVuYWJsZSgpCiAgICAgICAg
IC8vIERldGVybWluaW5nIGlmIHRoZSBlbGVtZW50IGlzIGRlbGV0YWJsZSBjdXJyZW50bHkgZGVw
ZW5kcyBvbiBzdHlsZQogICAgICAgICAvLyBiZWNhdXNlIHdoZXRoZXIgc29tZXRoaW5nIGlzIGVk
aXRhYmxlIGRlcGVuZHMgb24gc3R5bGUsIHNvIHdlIG5lZWQKICAgICAgICAgLy8gdG8gcmVjYWxj
dWxhdGUgc3R5bGUgYmVmb3JlIGNhbGxpbmcgZW5jbG9zaW5nRGVsZXRhYmxlRWxlbWVudC4KLSAg
ICAgICAgbV9mcmFtZS5kb2N1bWVudCgpLT51cGRhdGVTdHlsZUlmTmVlZGVkKCk7CisgICAgICAg
IG1fZnJhbWUuZG9jdW1lbnQoKS51cGRhdGVTdHlsZUlmTmVlZGVkKCk7CiAgICAgICAgIHNob3co
ZW5jbG9zaW5nRGVsZXRhYmxlRWxlbWVudChtX2ZyYW1lLnNlbGVjdGlvbigpLnNlbGVjdGlvbigp
KSk7CiAgICAgfQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0Vk
aXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKaW5kZXggMWYzZjBl
Yy4uNzY4NWIyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcApAQCAtMzYwNyw3ICszNjA3
LDcgQEAgdm9pZCBFZGl0b3I6OnRvZ2dsZU92ZXJ3cml0ZU1vZGVFbmFibGVkKCkKIERvY3VtZW50
JiBFZGl0b3I6OmRvY3VtZW50KCkgY29uc3QKIHsKICAgICBBU1NFUlQobV9mcmFtZS5kb2N1bWVu
dCgpKTsKLSAgICByZXR1cm4gKm1fZnJhbWUuZG9jdW1lbnQoKTsKKyAgICByZXR1cm4gbV9mcmFt
ZS5kb2N1bWVudCgpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvckNvbW1hbmQuY3BwIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9FZGl0b3JDb21tYW5kLmNwcAppbmRleCAyZmE4YjgyLi5mMDNkY2FhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvckNvbW1hbmQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yQ29tbWFuZC5jcHAKQEAgLTE5MiwxMyArMTkyLDEzIEBA
IHN0YXRpYyBib29sIGV4ZWN1dGVBcHBseVBhcmFncmFwaFN0eWxlKEZyYW1lJiBmcmFtZSwgRWRp
dG9yQ29tbWFuZFNvdXJjZSBzb3VyY2UsCiBzdGF0aWMgYm9vbCBleGVjdXRlSW5zZXJ0RnJhZ21l
bnQoRnJhbWUmIGZyYW1lLCBQYXNzUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGZyYWdtZW50KQog
ewogICAgIEFTU0VSVChmcmFtZS5kb2N1bWVudCgpKTsKLSAgICBhcHBseUNvbW1hbmQoUmVwbGFj
ZVNlbGVjdGlvbkNvbW1hbmQ6OmNyZWF0ZSgqZnJhbWUuZG9jdW1lbnQoKSwgZnJhZ21lbnQsIFJl
cGxhY2VTZWxlY3Rpb25Db21tYW5kOjpQcmV2ZW50TmVzdGluZywgRWRpdEFjdGlvblVuc3BlY2lm
aWVkKSk7CisgICAgYXBwbHlDb21tYW5kKFJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjpjcmVhdGUo
ZnJhbWUuZG9jdW1lbnQoKSwgZnJhZ21lbnQsIFJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjpQcmV2
ZW50TmVzdGluZywgRWRpdEFjdGlvblVuc3BlY2lmaWVkKSk7CiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKIHN0YXRpYyBib29sIGV4ZWN1dGVJbnNlcnROb2RlKEZyYW1lJiBmcmFtZSwgUGFzc1JlZlB0
cjxOb2RlPiBjb250ZW50KQogewotICAgIFJlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBmcmFnbWVu
dCA9IERvY3VtZW50RnJhZ21lbnQ6OmNyZWF0ZSgqZnJhbWUuZG9jdW1lbnQoKSk7CisgICAgUmVm
UHRyPERvY3VtZW50RnJhZ21lbnQ+IGZyYWdtZW50ID0gRG9jdW1lbnRGcmFnbWVudDo6Y3JlYXRl
KGZyYW1lLmRvY3VtZW50KCkpOwogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgIGZyYWdt
ZW50LT5hcHBlbmRDaGlsZChjb250ZW50LCBlYyk7CiAgICAgaWYgKGVjKQpAQCAtMjQ4LDcgKzI0
OCw3IEBAIHN0YXRpYyBUcmlTdGF0ZSBzdGF0ZVRleHRXcml0aW5nRGlyZWN0aW9uKEZyYW1lJiBm
cmFtZSwgV3JpdGluZ0RpcmVjdGlvbiBkaXJlY3RpCiAKIHN0YXRpYyB1bnNpZ25lZCB2ZXJ0aWNh
bFNjcm9sbERpc3RhbmNlKEZyYW1lJiBmcmFtZSkKIHsKLSAgICBFbGVtZW50KiBmb2N1c2VkRWxl
bWVudCA9IGZyYW1lLmRvY3VtZW50KCktPmZvY3VzZWRFbGVtZW50KCk7CisgICAgRWxlbWVudCog
Zm9jdXNlZEVsZW1lbnQgPSBmcmFtZS5kb2N1bWVudCgpLmZvY3VzZWRFbGVtZW50KCk7CiAgICAg
aWYgKCFmb2N1c2VkRWxlbWVudCkKICAgICAgICAgcmV0dXJuIDA7CiAgICAgYXV0byByZW5kZXJl
ciA9IGZvY3VzZWRFbGVtZW50LT5yZW5kZXJlcigpOwpAQCAtMjg4LDcgKzI4OCw3IEBAIHN0YXRp
YyBib29sIGV4ZWN1dGVDcmVhdGVMaW5rKEZyYW1lJiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21t
YW5kU291cmNlLCBjb25zdCBTCiAgICAgaWYgKHZhbHVlLmlzRW1wdHkoKSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgIEFTU0VSVChmcmFtZS5kb2N1bWVudCgpKTsKLSAgICBhcHBseUNvbW1h
bmQoQ3JlYXRlTGlua0NvbW1hbmQ6OmNyZWF0ZSgqZnJhbWUuZG9jdW1lbnQoKSwgdmFsdWUpKTsK
KyAgICBhcHBseUNvbW1hbmQoQ3JlYXRlTGlua0NvbW1hbmQ6OmNyZWF0ZShmcmFtZS5kb2N1bWVu
dCgpLCB2YWx1ZSkpOwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC0zMzMsNyArMzMzLDcgQEAg
c3RhdGljIGJvb2wgZXhlY3V0ZURlbGV0ZShGcmFtZSYgZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29t
bWFuZFNvdXJjZSBzb3VyY2UsIGNvbnMKICAgICBjYXNlIENvbW1hbmRGcm9tRE9NV2l0aFVzZXJJ
bnRlcmZhY2U6CiAgICAgICAgIC8vIElmIHRoZSBjdXJyZW50IHNlbGVjdGlvbiBpcyBhIGNhcmV0
LCBkZWxldGUgdGhlIHByZWNlZGluZyBjaGFyYWN0ZXIuIElFIHBlcmZvcm1zIGZvcndhcmREZWxl
dGUsIGJ1dCB3ZSBjdXJyZW50bHkgc2lkZSB3aXRoIEZpcmVmb3guCiAgICAgICAgIC8vIERvZXNu
J3Qgc2Nyb2xsIHRvIG1ha2UgdGhlIHNlbGVjdGlvbiB2aXNpYmxlLCBvciBtb2RpZnkgdGhlIGtp
bGwgcmluZyAodGhpcyB0aW1lLCBzaWRpbmcgd2l0aCBJRSwgbm90IEZpcmVmb3gpLgotICAgICAg
ICBUeXBpbmdDb21tYW5kOjpkZWxldGVLZXlQcmVzc2VkKCpmcmFtZS5kb2N1bWVudCgpLCBmcmFt
ZS5zZWxlY3Rpb24oKS5ncmFudWxhcml0eSgpID09IFdvcmRHcmFudWxhcml0eSA/IFR5cGluZ0Nv
bW1hbmQ6OlNtYXJ0RGVsZXRlIDogMCk7CisgICAgICAgIFR5cGluZ0NvbW1hbmQ6OmRlbGV0ZUtl
eVByZXNzZWQoZnJhbWUuZG9jdW1lbnQoKSwgZnJhbWUuc2VsZWN0aW9uKCkuZ3JhbnVsYXJpdHko
KSA9PSBXb3JkR3JhbnVsYXJpdHkgPyBUeXBpbmdDb21tYW5kOjpTbWFydERlbGV0ZSA6IDApOwog
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBA
IC00NTQsNyArNDU0LDcgQEAgc3RhdGljIGJvb2wgZXhlY3V0ZUZvcm1hdEJsb2NrKEZyYW1lJiBm
cmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlLCBjb25zdAogICAgIFF1YWxpZmllZE5h
bWUgcXVhbGlmaWVkVGFnTmFtZShwcmVmaXgsIGxvY2FsTmFtZSwgeGh0bWxOYW1lc3BhY2VVUkkp
OwogCiAgICAgQVNTRVJUKGZyYW1lLmRvY3VtZW50KCkpOwotICAgIFJlZlB0cjxGb3JtYXRCbG9j
a0NvbW1hbmQ+IGNvbW1hbmQgPSBGb3JtYXRCbG9ja0NvbW1hbmQ6OmNyZWF0ZSgqZnJhbWUuZG9j
dW1lbnQoKSwgcXVhbGlmaWVkVGFnTmFtZSk7CisgICAgUmVmUHRyPEZvcm1hdEJsb2NrQ29tbWFu
ZD4gY29tbWFuZCA9IEZvcm1hdEJsb2NrQ29tbWFuZDo6Y3JlYXRlKGZyYW1lLmRvY3VtZW50KCks
IHF1YWxpZmllZFRhZ05hbWUpOwogICAgIGFwcGx5Q29tbWFuZChjb21tYW5kKTsKICAgICByZXR1
cm4gY29tbWFuZC0+ZGlkQXBwbHkoKTsKIH0KQEAgLTQ3MCw3ICs0NzAsNyBAQCBzdGF0aWMgYm9v
bCBleGVjdXRlRm9yd2FyZERlbGV0ZShGcmFtZSYgZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFu
ZFNvdXJjZSBzb3VyYwogICAgICAgICAvLyBEb2Vzbid0IHNjcm9sbCB0byBtYWtlIHRoZSBzZWxl
Y3Rpb24gdmlzaWJsZSwgb3IgbW9kaWZ5IHRoZSBraWxsIHJpbmcuCiAgICAgICAgIC8vIEZvcndh
cmREZWxldGUgaXMgbm90IGltcGxlbWVudGVkIGluIElFIG9yIEZpcmVmb3gsIHNvIHRoaXMgYmVo
YXZpb3IgaXMgb25seSBuZWVkZWQgZm9yCiAgICAgICAgIC8vIGJhY2t3YXJkIGNvbXBhdGliaWxp
dHkgd2l0aCBvdXJzZWx2ZXMsIGFuZCBmb3IgY29uc2lzdGVuY3kgd2l0aCBEZWxldGUuCi0gICAg
ICAgIFR5cGluZ0NvbW1hbmQ6OmZvcndhcmREZWxldGVLZXlQcmVzc2VkKCpmcmFtZS5kb2N1bWVu
dCgpKTsKKyAgICAgICAgVHlwaW5nQ29tbWFuZDo6Zm9yd2FyZERlbGV0ZUtleVByZXNzZWQoZnJh
bWUuZG9jdW1lbnQoKSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKQEAgLTQ4Niw3ICs0ODYsNyBAQCBzdGF0aWMgYm9vbCBleGVjdXRlSWdu
b3JlU3BlbGxpbmcoRnJhbWUmIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNv
bgogc3RhdGljIGJvb2wgZXhlY3V0ZUluZGVudChGcmFtZSYgZnJhbWUsIEV2ZW50KiwgRWRpdG9y
Q29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikKIHsKICAgICBBU1NFUlQoZnJhbWUuZG9jdW1l
bnQoKSk7Ci0gICAgYXBwbHlDb21tYW5kKEluZGVudE91dGRlbnRDb21tYW5kOjpjcmVhdGUoKmZy
YW1lLmRvY3VtZW50KCksIEluZGVudE91dGRlbnRDb21tYW5kOjpJbmRlbnQpKTsKKyAgICBhcHBs
eUNvbW1hbmQoSW5kZW50T3V0ZGVudENvbW1hbmQ6OmNyZWF0ZShmcmFtZS5kb2N1bWVudCgpLCBJ
bmRlbnRPdXRkZW50Q29tbWFuZDo6SW5kZW50KSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAg
LTQ5Nyw3ICs0OTcsNyBAQCBzdGF0aWMgYm9vbCBleGVjdXRlSW5zZXJ0QmFja3RhYihGcmFtZSYg
ZnJhbWUsIEV2ZW50KiBldmVudCwgRWRpdG9yQ29tbWFuZFNvdXJjZQogCiBzdGF0aWMgYm9vbCBl
eGVjdXRlSW5zZXJ0SG9yaXpvbnRhbFJ1bGUoRnJhbWUmIGZyYW1lLCBFdmVudCosIEVkaXRvckNv
bW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYgdmFsdWUpCiB7Ci0gICAgUmVmUHRyPEhUTUxIUkVs
ZW1lbnQ+IHJ1bGUgPSBIVE1MSFJFbGVtZW50OjpjcmVhdGUoKmZyYW1lLmRvY3VtZW50KCkpOwor
ICAgIFJlZlB0cjxIVE1MSFJFbGVtZW50PiBydWxlID0gSFRNTEhSRWxlbWVudDo6Y3JlYXRlKGZy
YW1lLmRvY3VtZW50KCkpOwogICAgIGlmICghdmFsdWUuaXNFbXB0eSgpKQogICAgICAgICBydWxl
LT5zZXRJZEF0dHJpYnV0ZSh2YWx1ZSk7CiAgICAgcmV0dXJuIGV4ZWN1dGVJbnNlcnROb2RlKGZy
YW1lLCBydWxlLnJlbGVhc2UoKSk7CkBAIC01MDUsMTMgKzUwNSwxMyBAQCBzdGF0aWMgYm9vbCBl
eGVjdXRlSW5zZXJ0SG9yaXpvbnRhbFJ1bGUoRnJhbWUmIGZyYW1lLCBFdmVudCosIEVkaXRvckNv
bW1hbmRTb3VyYwogCiBzdGF0aWMgYm9vbCBleGVjdXRlSW5zZXJ0SFRNTChGcmFtZSYgZnJhbWUs
IEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKIHsKLSAg
ICByZXR1cm4gZXhlY3V0ZUluc2VydEZyYWdtZW50KGZyYW1lLCBjcmVhdGVGcmFnbWVudEZyb21N
YXJrdXAoKmZyYW1lLmRvY3VtZW50KCksIHZhbHVlLCAiIikpOworICAgIHJldHVybiBleGVjdXRl
SW5zZXJ0RnJhZ21lbnQoZnJhbWUsIGNyZWF0ZUZyYWdtZW50RnJvbU1hcmt1cChmcmFtZS5kb2N1
bWVudCgpLCB2YWx1ZSwgIiIpKTsKIH0KIAogc3RhdGljIGJvb2wgZXhlY3V0ZUluc2VydEltYWdl
KEZyYW1lJiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcm
IHZhbHVlKQogewogICAgIC8vIEZJWE1FOiBJZiB1c2VySW50ZXJmYWNlIGlzIHRydWUsIHdlIHNo
b3VsZCBkaXNwbGF5IGEgZGlhbG9nIGJveCBhbmQgbGV0IHRoZSB1c2VyIGNob29zZSBhIGxvY2Fs
IGltYWdlLgotICAgIFJlZlB0cjxIVE1MSW1hZ2VFbGVtZW50PiBpbWFnZSA9IEhUTUxJbWFnZUVs
ZW1lbnQ6OmNyZWF0ZSgqZnJhbWUuZG9jdW1lbnQoKSk7CisgICAgUmVmUHRyPEhUTUxJbWFnZUVs
ZW1lbnQ+IGltYWdlID0gSFRNTEltYWdlRWxlbWVudDo6Y3JlYXRlKGZyYW1lLmRvY3VtZW50KCkp
OwogICAgIGltYWdlLT5zZXRTcmModmFsdWUpOwogICAgIHJldHVybiBleGVjdXRlSW5zZXJ0Tm9k
ZShmcmFtZSwgaW1hZ2UucmVsZWFzZSgpKTsKIH0KQEAgLTUyNiw3ICs1MjYsNyBAQCBzdGF0aWMg
Ym9vbCBleGVjdXRlSW5zZXJ0TGluZUJyZWFrKEZyYW1lJiBmcmFtZSwgRXZlbnQqIGV2ZW50LCBF
ZGl0b3JDb21tYW5kU291cgogICAgICAgICAvLyBEb2Vzbid0IHNjcm9sbCB0byBtYWtlIHRoZSBz
ZWxlY3Rpb24gdmlzaWJsZSwgb3IgbW9kaWZ5IHRoZSBraWxsIHJpbmcuCiAgICAgICAgIC8vIElu
c2VydExpbmVCcmVhayBpcyBub3QgaW1wbGVtZW50ZWQgaW4gSUUgb3IgRmlyZWZveCwgc28gdGhp
cyBiZWhhdmlvciBpcyBvbmx5IG5lZWRlZCBmb3IKICAgICAgICAgLy8gYmFja3dhcmQgY29tcGF0
aWJpbGl0eSB3aXRoIG91cnNlbHZlcywgYW5kIGZvciBjb25zaXN0ZW5jeSB3aXRoIG90aGVyIGNv
bW1hbmRzLgotICAgICAgICBUeXBpbmdDb21tYW5kOjppbnNlcnRMaW5lQnJlYWsoKmZyYW1lLmRv
Y3VtZW50KCksIDApOworICAgICAgICBUeXBpbmdDb21tYW5kOjppbnNlcnRMaW5lQnJlYWsoZnJh
bWUuZG9jdW1lbnQoKSwgMCk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKQEAgLTU0MSwyMCArNTQxLDIwIEBAIHN0YXRpYyBib29sIGV4ZWN1
dGVJbnNlcnROZXdsaW5lKEZyYW1lJiBmcmFtZSwgRXZlbnQqIGV2ZW50LCBFZGl0b3JDb21tYW5k
U291cmNlCiAKIHN0YXRpYyBib29sIGV4ZWN1dGVJbnNlcnROZXdsaW5lSW5RdW90ZWRDb250ZW50
KEZyYW1lJiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcm
KQogewotICAgIFR5cGluZ0NvbW1hbmQ6Omluc2VydFBhcmFncmFwaFNlcGFyYXRvckluUXVvdGVk
Q29udGVudCgqZnJhbWUuZG9jdW1lbnQoKSk7CisgICAgVHlwaW5nQ29tbWFuZDo6aW5zZXJ0UGFy
YWdyYXBoU2VwYXJhdG9ySW5RdW90ZWRDb250ZW50KGZyYW1lLmRvY3VtZW50KCkpOwogICAgIHJl
dHVybiB0cnVlOwogfQogCiBzdGF0aWMgYm9vbCBleGVjdXRlSW5zZXJ0T3JkZXJlZExpc3QoRnJh
bWUmIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7
CiAgICAgQVNTRVJUKGZyYW1lLmRvY3VtZW50KCkpOwotICAgIGFwcGx5Q29tbWFuZChJbnNlcnRM
aXN0Q29tbWFuZDo6Y3JlYXRlKCpmcmFtZS5kb2N1bWVudCgpLCBJbnNlcnRMaXN0Q29tbWFuZDo6
T3JkZXJlZExpc3QpKTsKKyAgICBhcHBseUNvbW1hbmQoSW5zZXJ0TGlzdENvbW1hbmQ6OmNyZWF0
ZShmcmFtZS5kb2N1bWVudCgpLCBJbnNlcnRMaXN0Q29tbWFuZDo6T3JkZXJlZExpc3QpKTsKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGljIGJvb2wgZXhlY3V0ZUluc2VydFBhcmFncmFwaChG
cmFtZSYgZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikK
IHsKLSAgICBUeXBpbmdDb21tYW5kOjppbnNlcnRQYXJhZ3JhcGhTZXBhcmF0b3IoKmZyYW1lLmRv
Y3VtZW50KCksIDApOworICAgIFR5cGluZ0NvbW1hbmQ6Omluc2VydFBhcmFncmFwaFNlcGFyYXRv
cihmcmFtZS5kb2N1bWVudCgpLCAwKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtNTY1LDE0
ICs1NjUsMTQgQEAgc3RhdGljIGJvb2wgZXhlY3V0ZUluc2VydFRhYihGcmFtZSYgZnJhbWUsIEV2
ZW50KiBldmVudCwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY28KIAogc3RhdGljIGJvb2wgZXhlY3V0
ZUluc2VydFRleHQoRnJhbWUmIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNv
bnN0IFN0cmluZyYgdmFsdWUpCiB7Ci0gICAgVHlwaW5nQ29tbWFuZDo6aW5zZXJ0VGV4dCgqZnJh
bWUuZG9jdW1lbnQoKSwgdmFsdWUsIDApOworICAgIFR5cGluZ0NvbW1hbmQ6Omluc2VydFRleHQo
ZnJhbWUuZG9jdW1lbnQoKSwgdmFsdWUsIDApOwogICAgIHJldHVybiB0cnVlOwogfQogCiBzdGF0
aWMgYm9vbCBleGVjdXRlSW5zZXJ0VW5vcmRlcmVkTGlzdChGcmFtZSYgZnJhbWUsIEV2ZW50Kiwg
RWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikKIHsKICAgICBBU1NFUlQoZnJhbWUu
ZG9jdW1lbnQoKSk7Ci0gICAgYXBwbHlDb21tYW5kKEluc2VydExpc3RDb21tYW5kOjpjcmVhdGUo
KmZyYW1lLmRvY3VtZW50KCksIEluc2VydExpc3RDb21tYW5kOjpVbm9yZGVyZWRMaXN0KSk7Cisg
ICAgYXBwbHlDb21tYW5kKEluc2VydExpc3RDb21tYW5kOjpjcmVhdGUoZnJhbWUuZG9jdW1lbnQo
KSwgSW5zZXJ0TGlzdENvbW1hbmQ6OlVub3JkZXJlZExpc3QpKTsKICAgICByZXR1cm4gdHJ1ZTsK
IH0KIApAQCAtOTA5LDcgKzkwOSw3IEBAIHN0YXRpYyBib29sIGV4ZWN1dGVNb3ZlVG9SaWdodEVu
ZE9mTGluZUFuZE1vZGlmeVNlbGVjdGlvbihGcmFtZSYgZnJhbWUsIEV2ZW50KiwKIHN0YXRpYyBi
b29sIGV4ZWN1dGVPdXRkZW50KEZyYW1lJiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291
cmNlLCBjb25zdCBTdHJpbmcmKQogewogICAgIEFTU0VSVChmcmFtZS5kb2N1bWVudCgpKTsKLSAg
ICBhcHBseUNvbW1hbmQoSW5kZW50T3V0ZGVudENvbW1hbmQ6OmNyZWF0ZSgqZnJhbWUuZG9jdW1l
bnQoKSwgSW5kZW50T3V0ZGVudENvbW1hbmQ6Ok91dGRlbnQpKTsKKyAgICBhcHBseUNvbW1hbmQo
SW5kZW50T3V0ZGVudENvbW1hbmQ6OmNyZWF0ZShmcmFtZS5kb2N1bWVudCgpLCBJbmRlbnRPdXRk
ZW50Q29tbWFuZDo6T3V0ZGVudCkpOwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC0xMTQwLDcg
KzExNDAsNyBAQCBzdGF0aWMgYm9vbCBleGVjdXRlVW5kbyhGcmFtZSYgZnJhbWUsIEV2ZW50Kiwg
RWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJgogc3RhdGljIGJvb2wgZXhlY3V0ZVVu
bGluayhGcmFtZSYgZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3Ry
aW5nJikKIHsKICAgICBBU1NFUlQoZnJhbWUuZG9jdW1lbnQoKSk7Ci0gICAgYXBwbHlDb21tYW5k
KFVubGlua0NvbW1hbmQ6OmNyZWF0ZSgqZnJhbWUuZG9jdW1lbnQoKSkpOworICAgIGFwcGx5Q29t
bWFuZChVbmxpbmtDb21tYW5kOjpjcmVhdGUoZnJhbWUuZG9jdW1lbnQoKSkpOwogICAgIHJldHVy
biB0cnVlOwogfQogCkBAIC0xNzM3LDcgKzE3MzcsNyBAQCBib29sIEVkaXRvcjo6Q29tbWFuZDo6
ZXhlY3V0ZShjb25zdCBTdHJpbmcmIHBhcmFtZXRlciwgRXZlbnQqIHRyaWdnZXJpbmdFdmVudCkg
YwogICAgICAgICBpZiAoIWlzU3VwcG9ydGVkKCkgfHwgIW1fZnJhbWUgfHwgIW1fY29tbWFuZC0+
YWxsb3dFeGVjdXRpb25XaGVuRGlzYWJsZWQpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgfQotICAgIG1fZnJhbWUtPmRvY3VtZW50KCktPnVwZGF0ZUxheW91dElnbm9yZVBlbmRpbmdT
dHlsZXNoZWV0cygpOworICAgIG1fZnJhbWUtPmRvY3VtZW50KCkudXBkYXRlTGF5b3V0SWdub3Jl
UGVuZGluZ1N0eWxlc2hlZXRzKCk7CiAgICAgcmV0dXJuIG1fY29tbWFuZC0+ZXhlY3V0ZSgqbV9m
cmFtZSwgdHJpZ2dlcmluZ0V2ZW50LCBtX3NvdXJjZSwgcGFyYW1ldGVyKTsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmNwcAppbmRleCA0N2I2YmU2Li5jZWM1Yjhm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmNwcApAQCAtMTMyLDcg
KzEzMiw3IEBAIEZyYW1lU2VsZWN0aW9uOjpGcmFtZVNlbGVjdGlvbihGcmFtZSogZnJhbWUpCiBF
bGVtZW50KiBGcmFtZVNlbGVjdGlvbjo6cm9vdEVkaXRhYmxlRWxlbWVudE9yRG9jdW1lbnRFbGVt
ZW50KCkgY29uc3QKIHsKICAgICBFbGVtZW50KiBzZWxlY3Rpb25Sb290ID0gbV9zZWxlY3Rpb24u
cm9vdEVkaXRhYmxlRWxlbWVudCgpOwotICAgIHJldHVybiBzZWxlY3Rpb25Sb290ID8gc2VsZWN0
aW9uUm9vdCA6IG1fZnJhbWUtPmRvY3VtZW50KCktPmRvY3VtZW50RWxlbWVudCgpOworICAgIHJl
dHVybiBzZWxlY3Rpb25Sb290ID8gc2VsZWN0aW9uUm9vdCA6IG1fZnJhbWUtPmRvY3VtZW50KCku
ZG9jdW1lbnRFbGVtZW50KCk7CiB9CiAKIHZvaWQgRnJhbWVTZWxlY3Rpb246Om1vdmVUbyhjb25z
dCBWaXNpYmxlUG9zaXRpb24gJnBvcywgRVVzZXJUcmlnZ2VyZWQgdXNlclRyaWdnZXJlZCwgQ3Vy
c29yQWxpZ25PblNjcm9sbCBhbGlnbikKQEAgLTI3NCw3ICsyNzQsNyBAQCBib29sIEZyYW1lU2Vs
ZWN0aW9uOjpzZXRTZWxlY3Rpb25XaXRob3V0VXBkYXRpbmdBcHBlYXJhbmNlKGNvbnN0IFZpc2li
bGVTZWxlY3RpbwogICAgIC8vIGlmIGRvY3VtZW50LT5mcmFtZSgpID09IG1fZnJhbWUgd2UgY2Fu
IGdldCBpbnRvIGFuIGluZmluaXRlIGxvb3AKICAgICBpZiAoRG9jdW1lbnQqIG5ld1NlbGVjdGlv
bkRvY3VtZW50ID0gbmV3U2VsZWN0aW9uLmJhc2UoKS5kb2N1bWVudCgpKSB7CiAgICAgICAgIGlm
IChSZWZQdHI8RnJhbWU+IG5ld1NlbGVjdGlvbkZyYW1lID0gbmV3U2VsZWN0aW9uRG9jdW1lbnQt
PmZyYW1lKCkpIHsKLSAgICAgICAgICAgIGlmIChuZXdTZWxlY3Rpb25GcmFtZSAhPSBtX2ZyYW1l
ICYmIG5ld1NlbGVjdGlvbkRvY3VtZW50ICE9IG1fZnJhbWUtPmRvY3VtZW50KCkpIHsKKyAgICAg
ICAgICAgIGlmIChuZXdTZWxlY3Rpb25GcmFtZSAhPSBtX2ZyYW1lICYmIG5ld1NlbGVjdGlvbkRv
Y3VtZW50ICE9ICZtX2ZyYW1lLT5kb2N1bWVudCgpKSB7CiAgICAgICAgICAgICAgICAgbmV3U2Vs
ZWN0aW9uRnJhbWUtPnNlbGVjdGlvbigpLnNldFNlbGVjdGlvbihuZXdTZWxlY3Rpb24sIG9wdGlv
bnMsIGFsaWduLCBncmFudWxhcml0eSk7CiAgICAgICAgICAgICAgICAgLy8gSXQncyBwb3NzaWJs
ZSB0aGF0IGR1cmluZyB0aGUgYWJvdmUgc2V0IHNlbGVjdGlvbiwgdGhpcyBGcmFtZVNlbGVjdGlv
biBoYXMgYmVlbiBtb2RpZmllZCBieQogICAgICAgICAgICAgICAgIC8vIHNlbGVjdEZyYW1lRWxl
bWVudEluUGFyZW50SWZGdWxseVNlbGVjdGVkLCBidXQgdGhhdCB0aGUgc2VsZWN0aW9uIGlzIG5v
IGxvbmdlciB2YWxpZCBzaW5jZQpAQCAtMzE0LDcgKzMxNCw3IEBAIGJvb2wgRnJhbWVTZWxlY3Rp
b246OnNldFNlbGVjdGlvbldpdGhvdXRVcGRhdGluZ0FwcGVhcmFuY2UoY29uc3QgVmlzaWJsZVNl
bGVjdGlvCiAgICAgbV94UG9zRm9yVmVydGljYWxBcnJvd05hdmlnYXRpb24gPSBOb1hQb3NGb3JW
ZXJ0aWNhbEFycm93TmF2aWdhdGlvbigpOwogICAgIHNlbGVjdEZyYW1lRWxlbWVudEluUGFyZW50
SWZGdWxseVNlbGVjdGVkKCk7CiAgICAgbV9mcmFtZS0+ZWRpdG9yKCkucmVzcG9uZFRvQ2hhbmdl
ZFNlbGVjdGlvbihvbGRTZWxlY3Rpb24sIG9wdGlvbnMpOwotICAgIG1fZnJhbWUtPmRvY3VtZW50
KCktPmVucXVldWVEb2N1bWVudEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLnNlbGVj
dGlvbmNoYW5nZUV2ZW50LCBmYWxzZSwgZmFsc2UpKTsKKyAgICBtX2ZyYW1lLT5kb2N1bWVudCgp
LmVucXVldWVEb2N1bWVudEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLnNlbGVjdGlv
bmNoYW5nZUV2ZW50LCBmYWxzZSwgZmFsc2UpKTsKIAogICAgIHJldHVybiB0cnVlOwogfQpAQCAt
MzI0LDE5ICszMjQsMTggQEAgdm9pZCBGcmFtZVNlbGVjdGlvbjo6c2V0U2VsZWN0aW9uKGNvbnN0
IFZpc2libGVTZWxlY3Rpb24mIHNlbGVjdGlvbiwgU2V0U2VsZWN0aW8KICAgICBpZiAoIXNldFNl
bGVjdGlvbldpdGhvdXRVcGRhdGluZ0FwcGVhcmFuY2Uoc2VsZWN0aW9uLCBvcHRpb25zLCBhbGln
biwgZ3JhbnVsYXJpdHkpKQogICAgICAgICByZXR1cm47CiAKLSAgICBEb2N1bWVudCogZG9jdW1l
bnQgPSBtX2ZyYW1lLT5kb2N1bWVudCgpOwotICAgIGlmICghZG9jdW1lbnQpCi0gICAgICAgIHJl
dHVybjsKKyAgICBEb2N1bWVudCYgZG9jdW1lbnQgPSBtX2ZyYW1lLT5kb2N1bWVudCgpOworICAg
IEFTU0VSVChkb2N1bWVudCk7CiAKICAgICBtX3Nob3VsZFJldmVhbFNlbGVjdGlvbiA9IG9wdGlv
bnMgJiBSZXZlYWxTZWxlY3Rpb247CiAgICAgbV9hbHdheXNBbGlnbkN1cnNvck9uU2Nyb2xsV2hl
blJldmVhbGluZ1NlbGVjdGlvbiA9IGFsaWduID09IEFsaWduQ3Vyc29yT25TY3JvbGxBbHdheXM7
CiAKICAgICBtX3BlbmRpbmdTZWxlY3Rpb25VcGRhdGUgPSB0cnVlOwogCi0gICAgaWYgKGRvY3Vt
ZW50LT5oYXNQZW5kaW5nU3R5bGVSZWNhbGMoKSkKKyAgICBpZiAoZG9jdW1lbnQuaGFzUGVuZGlu
Z1N0eWxlUmVjYWxjKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIEZyYW1lVmlldyogZnJhbWVW
aWV3ID0gZG9jdW1lbnQtPnZpZXcoKTsKKyAgICBGcmFtZVZpZXcqIGZyYW1lVmlldyA9IGRvY3Vt
ZW50LnZpZXcoKTsKICAgICBpZiAoZnJhbWVWaWV3ICYmIGZyYW1lVmlldy0+bGF5b3V0UGVuZGlu
ZygpKQogICAgICAgICByZXR1cm47CiAKQEAgLTM0Niw5ICszNDUsOSBAQCB2b2lkIEZyYW1lU2Vs
ZWN0aW9uOjpzZXRTZWxlY3Rpb24oY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYgc2VsZWN0aW9uLCBT
ZXRTZWxlY3Rpbwogc3RhdGljIHZvaWQgdXBkYXRlU2VsZWN0aW9uQnlVcGRhdGluZ0xheW91dE9y
U3R5bGUoRnJhbWUmIGZyYW1lKQogewogI2lmIEVOQUJMRShURVhUX0NBUkVUKQotICAgIGZyYW1l
LmRvY3VtZW50KCktPnVwZGF0ZUxheW91dElnbm9yZVBlbmRpbmdTdHlsZXNoZWV0cygpOworICAg
IGZyYW1lLmRvY3VtZW50KCkudXBkYXRlTGF5b3V0SWdub3JlUGVuZGluZ1N0eWxlc2hlZXRzKCk7
CiAjZWxzZQotICAgIGZyYW1lLmRvY3VtZW50KCktPnVwZGF0ZVN0eWxlSWZOZWVkZWQoKTsKKyAg
ICBmcmFtZS5kb2N1bWVudCgpLnVwZGF0ZVN0eWxlSWZOZWVkZWQoKTsKICNlbmRpZgogfQogCkBA
IC0xMzc2LDcgKzEzNzUsNyBAQCBib29sIEZyYW1lU2VsZWN0aW9uOjpyZWNvbXB1dGVDYXJldFJl
Y3QoKQogICAgIGlmICghbV9mcmFtZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgRnJh
bWVWaWV3KiB2ID0gbV9mcmFtZS0+ZG9jdW1lbnQoKS0+dmlldygpOworICAgIEZyYW1lVmlldyog
diA9IG1fZnJhbWUtPmRvY3VtZW50KCkudmlldygpOwogICAgIGlmICghdikKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogCkBAIC0xMzg4LDcgKzEzODcsNyBAQCBib29sIEZyYW1lU2VsZWN0aW9uOjpy
ZWNvbXB1dGVDYXJldFJlY3QoKQogICAgICAgICAgICAgY2xlYXJDYXJldFJlY3QoKTsKICAgICAg
ICAgZWxzZSB7CiAgICAgICAgICAgICBWaXNpYmxlUG9zaXRpb24gdmlzaWJsZVN0YXJ0ID0gbV9z
ZWxlY3Rpb24udmlzaWJsZVN0YXJ0KCk7Ci0gICAgICAgICAgICBpZiAodXBkYXRlQ2FyZXRSZWN0
KG1fZnJhbWUtPmRvY3VtZW50KCksIHZpc2libGVTdGFydCkpIHsKKyAgICAgICAgICAgIGlmICh1
cGRhdGVDYXJldFJlY3QoJm1fZnJhbWUtPmRvY3VtZW50KCksIHZpc2libGVTdGFydCkpIHsKICAg
ICAgICAgICAgICAgICBjYXJldE5vZGUgPSB2aXNpYmxlU3RhcnQuZGVlcEVxdWl2YWxlbnQoKS5k
ZXByZWNhdGVkTm9kZSgpOwogICAgICAgICAgICAgICAgIG1fYWJzQ2FyZXRCb3VuZHNEaXJ0eSA9
IHRydWU7CiAgICAgICAgICAgICB9CkBAIC0xNDExLDcgKzE0MTAsNyBAQCBib29sIEZyYW1lU2Vs
ZWN0aW9uOjpyZWNvbXB1dGVDYXJldFJlY3QoKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICNp
ZiBFTkFCTEUoVEVYVF9DQVJFVCkKLSAgICBpZiAoUmVuZGVyVmlldyogdmlldyA9IG1fZnJhbWUt
PmRvY3VtZW50KCktPnJlbmRlclZpZXcoKSkgeworICAgIGlmIChSZW5kZXJWaWV3KiB2aWV3ID0g
bV9mcmFtZS0+ZG9jdW1lbnQoKS5yZW5kZXJWaWV3KCkpIHsKICAgICAgICAgYm9vbCBwcmV2aW91
c09yTmV3Q2FyZXROb2RlSXNDb250ZW50RWRpdGFibGUgPSBtX3NlbGVjdGlvbi5pc0NvbnRlbnRF
ZGl0YWJsZSgpIHx8IChtX3ByZXZpb3VzQ2FyZXROb2RlICYmIG1fcHJldmlvdXNDYXJldE5vZGUt
PmlzQ29udGVudEVkaXRhYmxlKCkpOwogICAgICAgICBpZiAoc2hvdWxkUmVwYWludENhcmV0KHZp
ZXcsIHByZXZpb3VzT3JOZXdDYXJldE5vZGVJc0NvbnRlbnRFZGl0YWJsZSkpIHsKICAgICAgICAg
ICAgIGlmIChtX3ByZXZpb3VzQ2FyZXROb2RlKQpAQCAtMTU3MCwxNyArMTU2OSwxNyBAQCB2b2lk
IEZyYW1lU2VsZWN0aW9uOjpkZWJ1Z1JlbmRlcmVyKFJlbmRlck9iamVjdCogciwgYm9vbCBzZWxl
Y3RlZCkgY29uc3QKIAogYm9vbCBGcmFtZVNlbGVjdGlvbjo6Y29udGFpbnMoY29uc3QgTGF5b3V0
UG9pbnQmIHBvaW50KQogewotICAgIERvY3VtZW50KiBkb2N1bWVudCA9IG1fZnJhbWUtPmRvY3Vt
ZW50KCk7CisgICAgRG9jdW1lbnQmIGRvY3VtZW50ID0gbV9mcmFtZS0+ZG9jdW1lbnQoKTsKICAg
ICAKICAgICAvLyBUcmVhdCBhIGNvbGxhcHNlZCBzZWxlY3Rpb24gbGlrZSBubyBzZWxlY3Rpb24u
CiAgICAgaWYgKCFpc1JhbmdlKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoIWRv
Y3VtZW50LT5yZW5kZXJWaWV3KCkpIAorICAgIGlmICghZG9jdW1lbnQucmVuZGVyVmlldygpKSAK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIAogICAgIEhpdFRlc3RSZXF1ZXN0IHJlcXVlc3Qo
SGl0VGVzdFJlcXVlc3Q6OlJlYWRPbmx5IHwgSGl0VGVzdFJlcXVlc3Q6OkFjdGl2ZSB8IEhpdFRl
c3RSZXF1ZXN0OjpEaXNhbGxvd1NoYWRvd0NvbnRlbnQpOwogICAgIEhpdFRlc3RSZXN1bHQgcmVz
dWx0KHBvaW50KTsKLSAgICBkb2N1bWVudC0+cmVuZGVyVmlldygpLT5oaXRUZXN0KHJlcXVlc3Qs
IHJlc3VsdCk7CisgICAgZG9jdW1lbnQucmVuZGVyVmlldygpLT5oaXRUZXN0KHJlcXVlc3QsIHJl
c3VsdCk7CiAgICAgTm9kZSogaW5uZXJOb2RlID0gcmVzdWx0LmlubmVyTm9kZSgpOwogICAgIGlm
ICghaW5uZXJOb2RlIHx8ICFpbm5lck5vZGUtPnJlbmRlcmVyKCkpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKQEAgLTE2NDksMTEgKzE2NDgsMTEgQEAgdm9pZCBGcmFtZVNlbGVjdGlvbjo6c2VsZWN0
RnJhbWVFbGVtZW50SW5QYXJlbnRJZkZ1bGx5U2VsZWN0ZWQoKQogCiB2b2lkIEZyYW1lU2VsZWN0
aW9uOjpzZWxlY3RBbGwoKQogewotICAgIERvY3VtZW50KiBkb2N1bWVudCA9IG1fZnJhbWUtPmRv
Y3VtZW50KCk7CisgICAgRG9jdW1lbnQmIGRvY3VtZW50ID0gbV9mcmFtZS0+ZG9jdW1lbnQoKTsK
IAotICAgIEVsZW1lbnQqIGZvY3VzZWRFbGVtZW50ID0gZG9jdW1lbnQtPmZvY3VzZWRFbGVtZW50
KCk7CisgICAgRWxlbWVudCogZm9jdXNlZEVsZW1lbnQgPSBkb2N1bWVudC5mb2N1c2VkRWxlbWVu
dCgpOwogICAgIGlmIChmb2N1c2VkRWxlbWVudCAmJiBmb2N1c2VkRWxlbWVudC0+aGFzVGFnTmFt
ZShzZWxlY3RUYWcpKSB7Ci0gICAgICAgIEhUTUxTZWxlY3RFbGVtZW50KiBzZWxlY3RFbGVtZW50
ID0gdG9IVE1MU2VsZWN0RWxlbWVudChkb2N1bWVudC0+Zm9jdXNlZEVsZW1lbnQoKSk7CisgICAg
ICAgIEhUTUxTZWxlY3RFbGVtZW50KiBzZWxlY3RFbGVtZW50ID0gdG9IVE1MU2VsZWN0RWxlbWVu
dChkb2N1bWVudC5mb2N1c2VkRWxlbWVudCgpKTsKICAgICAgICAgaWYgKHNlbGVjdEVsZW1lbnQt
PmNhblNlbGVjdEFsbCgpKSB7CiAgICAgICAgICAgICBzZWxlY3RFbGVtZW50LT5zZWxlY3RBbGwo
KTsKICAgICAgICAgICAgIHJldHVybjsKQEAgLTE2ODEsOCArMTY4MCw4IEBAIHZvaWQgRnJhbWVT
ZWxlY3Rpb246OnNlbGVjdEFsbCgpCiAgICAgICAgIGlmIChyb290KQogICAgICAgICAgICAgc2Vs
ZWN0U3RhcnRUYXJnZXQgPSByb290LT5zaGFkb3dIb3N0KCk7CiAgICAgICAgIGVsc2UgewotICAg
ICAgICAgICAgcm9vdCA9IGRvY3VtZW50LT5kb2N1bWVudEVsZW1lbnQoKTsKLSAgICAgICAgICAg
IHNlbGVjdFN0YXJ0VGFyZ2V0ID0gZG9jdW1lbnQtPmJvZHkoKTsKKyAgICAgICAgICAgIHJvb3Qg
PSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQoKTsKKyAgICAgICAgICAgIHNlbGVjdFN0YXJ0VGFy
Z2V0ID0gZG9jdW1lbnQuYm9keSgpOwogICAgICAgICB9CiAgICAgfQogICAgIGlmICghcm9vdCkK
QEAgLTE3MTgsNyArMTcxNyw3IEBAIGJvb2wgRnJhbWVTZWxlY3Rpb246OnNldFNlbGVjdGVkUmFu
Z2UoUmFuZ2UqIHJhbmdlLCBFQWZmaW5pdHkgYWZmaW5pdHksIGJvb2wgY2xvCiB2b2lkIEZyYW1l
U2VsZWN0aW9uOjpmb2N1c2VkT3JBY3RpdmVTdGF0ZUNoYW5nZWQoKQogewogICAgIGJvb2wgYWN0
aXZlQW5kRm9jdXNlZCA9IGlzRm9jdXNlZEFuZEFjdGl2ZSgpOwotICAgIFJlZjxEb2N1bWVudD4g
ZG9jdW1lbnQoKm1fZnJhbWUtPmRvY3VtZW50KCkpOworICAgIFJlZjxEb2N1bWVudD4gZG9jdW1l
bnQobV9mcmFtZS0+ZG9jdW1lbnQoKSk7CiAKICAgICBkb2N1bWVudC0+dXBkYXRlU3R5bGVJZk5l
ZWRlZCgpOwogCkBAIC0xOTI2LDcgKzE5MjUsNyBAQCB2b2lkIEZyYW1lU2VsZWN0aW9uOjpzZXRG
b2N1c2VkRWxlbWVudElmTmVlZGVkKCkKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHRhcmdl
dCA9IHRhcmdldC0+cGFyZW50T3JTaGFkb3dIb3N0RWxlbWVudCgpOwogICAgICAgICB9Ci0gICAg
ICAgIG1fZnJhbWUtPmRvY3VtZW50KCktPnNldEZvY3VzZWRFbGVtZW50KDApOworICAgICAgICBt
X2ZyYW1lLT5kb2N1bWVudCgpLnNldEZvY3VzZWRFbGVtZW50KDApOwogICAgIH0KIAogICAgIGlm
IChjYXJldEJyb3dzaW5nKQpAQCAtMTk2NCw4ICsxOTYzLDcgQEAgYm9vbCBGcmFtZVNlbGVjdGlv
bjo6c2hvdWxkRGVsZXRlU2VsZWN0aW9uKGNvbnN0IFZpc2libGVTZWxlY3Rpb24mIHNlbGVjdGlv
bikgY28KIAogRmxvYXRSZWN0IEZyYW1lU2VsZWN0aW9uOjpzZWxlY3Rpb25Cb3VuZHMoYm9vbCBj
bGlwVG9WaXNpYmxlQ29udGVudCkgY29uc3QKIHsKLSAgICBpZiAoIW1fZnJhbWUtPmRvY3VtZW50
KCkpCi0gICAgICAgIHJldHVybiBMYXlvdXRSZWN0KCk7CisgICAgQVNTRVJUKG1fZnJhbWUtPmRv
Y3VtZW50KCkpOwogCiAgICAgdXBkYXRlU2VsZWN0aW9uQnlVcGRhdGluZ0xheW91dE9yU3R5bGUo
Km1fZnJhbWUpOwogICAgIFJlbmRlclZpZXcqIHJvb3QgPSBtX2ZyYW1lLT5jb250ZW50UmVuZGVy
ZXIoKTsKQEAgLTIwMjQsNyArMjAyMiw3IEBAIHN0YXRpYyBIVE1MRm9ybUVsZW1lbnQqIHNjYW5G
b3JGb3JtKEVsZW1lbnQqIHN0YXJ0KQogSFRNTEZvcm1FbGVtZW50KiBGcmFtZVNlbGVjdGlvbjo6
Y3VycmVudEZvcm0oKSBjb25zdAogewogICAgIC8vIFN0YXJ0IGxvb2tpbmcgZWl0aGVyIGF0IHRo
ZSBhY3RpdmUgKGZpcnN0IHJlc3BvbmRlcikgbm9kZSwgb3Igd2hlcmUgdGhlIHNlbGVjdGlvbiBp
cy4KLSAgICBFbGVtZW50KiBzdGFydCA9IG1fZnJhbWUtPmRvY3VtZW50KCktPmZvY3VzZWRFbGVt
ZW50KCk7CisgICAgRWxlbWVudCogc3RhcnQgPSBtX2ZyYW1lLT5kb2N1bWVudCgpLmZvY3VzZWRF
bGVtZW50KCk7CiAgICAgaWYgKCFzdGFydCkKICAgICAgICAgc3RhcnQgPSBtX3NlbGVjdGlvbi5z
dGFydCgpLmVsZW1lbnQoKTsKICAgICBpZiAoIXN0YXJ0KQpAQCAtMjA4MywxNyArMjA4MSwxNyBA
QCB2b2lkIEZyYW1lU2VsZWN0aW9uOjpzZXRTZWxlY3Rpb25Gcm9tTm9uZSgpCiAgICAgLy8gUHV0
IGEgY2FyZXQgaW5zaWRlIHRoZSBib2R5IGlmIHRoZSBlbnRpcmUgZnJhbWUgaXMgZWRpdGFibGUg
KGVpdGhlciB0aGUKICAgICAvLyBlbnRpcmUgV2ViVmlldyBpcyBlZGl0YWJsZSBvciBkZXNpZ25N
b2RlIGlzIG9uIGZvciB0aGlzIGRvY3VtZW50KS4KIAotICAgIERvY3VtZW50KiBkb2N1bWVudCA9
IG1fZnJhbWUtPmRvY3VtZW50KCk7CisgICAgRG9jdW1lbnQmIGRvY3VtZW50ID0gbV9mcmFtZS0+
ZG9jdW1lbnQoKTsKICNpZiAhUExBVEZPUk0oSU9TKQogICAgIGJvb2wgY2FyZXRCcm93c2luZyA9
IG1fZnJhbWUtPnNldHRpbmdzKCkuY2FyZXRCcm93c2luZ0VuYWJsZWQoKTsKLSAgICBpZiAoIWlz
Tm9uZSgpIHx8ICEoZG9jdW1lbnQtPmhhc0VkaXRhYmxlU3R5bGUoKSB8fCBjYXJldEJyb3dzaW5n
KSkKKyAgICBpZiAoIWlzTm9uZSgpIHx8ICEoZG9jdW1lbnQuaGFzRWRpdGFibGVTdHlsZSgpIHx8
IGNhcmV0QnJvd3NpbmcpKQogICAgICAgICByZXR1cm47CiAjZWxzZQotICAgIGlmICghZG9jdW1l
bnQgfHwgIShpc05vbmUoKSB8fCBpc1N0YXJ0T2ZEb2N1bWVudChWaXNpYmxlUG9zaXRpb24obV9z
ZWxlY3Rpb24uc3RhcnQoKSwgbV9zZWxlY3Rpb24uYWZmaW5pdHkoKSkpKSB8fCAhZG9jdW1lbnQt
Pmhhc0VkaXRhYmxlU3R5bGUoKSkKKyAgICBpZiAoIShpc05vbmUoKSB8fCBpc1N0YXJ0T2ZEb2N1
bWVudChWaXNpYmxlUG9zaXRpb24obV9zZWxlY3Rpb24uc3RhcnQoKSwgbV9zZWxlY3Rpb24uYWZm
aW5pdHkoKSkpKSB8fCAhZG9jdW1lbnQuaGFzRWRpdGFibGVTdHlsZSgpKQogICAgICAgICByZXR1
cm47CiAjZW5kaWYKIAotICAgIE5vZGUqIG5vZGUgPSBkb2N1bWVudC0+ZG9jdW1lbnRFbGVtZW50
KCk7CisgICAgTm9kZSogbm9kZSA9IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCgpOwogICAgIHdo
aWxlIChub2RlICYmICFub2RlLT5oYXNUYWdOYW1lKGJvZHlUYWcpKQogICAgICAgICBub2RlID0g
Tm9kZVRyYXZlcnNhbDo6bmV4dChub2RlKTsKICAgICBpZiAobm9kZSkKQEAgLTIxMjIsNyArMjEy
MCw3IEBAIHZvaWQgRnJhbWVTZWxlY3Rpb246OnNldFNob3VsZFNob3dCbG9ja0N1cnNvcihib29s
IHNob3VsZFNob3dCbG9ja0N1cnNvcikKIHsKICAgICBtX3Nob3VsZFNob3dCbG9ja0N1cnNvciA9
IHNob3VsZFNob3dCbG9ja0N1cnNvcjsKIAotICAgIG1fZnJhbWUtPmRvY3VtZW50KCktPnVwZGF0
ZUxheW91dElnbm9yZVBlbmRpbmdTdHlsZXNoZWV0cygpOworICAgIG1fZnJhbWUtPmRvY3VtZW50
KCkudXBkYXRlTGF5b3V0SWdub3JlUGVuZGluZ1N0eWxlc2hlZXRzKCk7CiAKICAgICB1cGRhdGVB
cHBlYXJhbmNlKCk7CiB9CkBAIC0yMzU5LDcgKzIzNTcsNyBAQCBQYXNzUmVmUHRyPFJhbmdlPiBG
cmFtZVNlbGVjdGlvbjo6cmFuZ2VCeUV4dGVuZGluZ0N1cnJlbnRTZWxlY3Rpb24oaW50IGFtb3Vu
dCkgYwogCiB2b2lkIEZyYW1lU2VsZWN0aW9uOjpzZWxlY3RSYW5nZU9uRWxlbWVudCh1bnNpZ25l
ZCBsb2NhdGlvbiwgdW5zaWduZWQgbGVuZ3RoLCBOb2RlKiBub2RlKQogewotICAgIFJlZlB0cjxS
YW5nZT4gcmVzdWx0UmFuZ2UgPSBtX2ZyYW1lLT5kb2N1bWVudCgpLT5jcmVhdGVSYW5nZSgpOwor
ICAgIFJlZlB0cjxSYW5nZT4gcmVzdWx0UmFuZ2UgPSBtX2ZyYW1lLT5kb2N1bWVudCgpLmNyZWF0
ZVJhbmdlKCk7CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAgcmVzdWx0UmFuZ2UtPnNl
dFN0YXJ0KG5vZGUsIGxvY2F0aW9uLCBlYyk7CiAgICAgQVNTRVJUKCFlYyk7CkBAIC0yNTQyLDcg
KzI1NDAsNyBAQCB2b2lkIEZyYW1lU2VsZWN0aW9uOjpzZXRDYXJldEJsaW5rcyhib29sIGNhcmV0
QmxpbmtzKQogICAgIGlmIChtX2NhcmV0QmxpbmtzID09IGNhcmV0QmxpbmtzKQogICAgICAgICBy
ZXR1cm47CiAjaWYgRU5BQkxFKFRFWFRfQ0FSRVQpCi0gICAgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+
dXBkYXRlTGF5b3V0SWdub3JlUGVuZGluZ1N0eWxlc2hlZXRzKCk7IAorICAgIG1fZnJhbWUtPmRv
Y3VtZW50KCkudXBkYXRlTGF5b3V0SWdub3JlUGVuZGluZ1N0eWxlc2hlZXRzKCk7IAogICAgIGlm
IChtX2NhcmV0UGFpbnQpIHsKICAgICAgICAgbV9jYXJldFBhaW50ID0gZmFsc2U7IAogICAgICAg
ICBpbnZhbGlkYXRlQ2FyZXRSZWN0KCk7IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9TcGVsbENoZWNrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9TcGVsbENoZWNr
ZXIuY3BwCmluZGV4IDcwNzc2ZmMuLjFjMDEwYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvU3BlbGxDaGVja2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Nw
ZWxsQ2hlY2tlci5jcHAKQEAgLTIyOSw3ICsyMjksNyBAQCB2b2lkIFNwZWxsQ2hlY2tlcjo6ZGlk
Q2hlY2tTdWNjZWVkKGludCBzZXF1ZW5jZSwgY29uc3QgVmVjdG9yPFRleHRDaGVja2luZ1Jlc3Vs
dAogICAgICAgICBpZiAocmVxdWVzdERhdGEubWFzaygpICYgVGV4dENoZWNraW5nVHlwZUdyYW1t
YXIpCiAgICAgICAgICAgICBtYXJrZXJzIHw9IERvY3VtZW50TWFya2VyOjpHcmFtbWFyOwogICAg
ICAgICBpZiAobWFya2VycykKLSAgICAgICAgICAgIG1fZnJhbWUuZG9jdW1lbnQoKS0+bWFya2Vy
cygpLnJlbW92ZU1hcmtlcnMobV9wcm9jZXNzaW5nUmVxdWVzdC0+Y2hlY2tpbmdSYW5nZSgpLmdl
dCgpLCBtYXJrZXJzKTsKKyAgICAgICAgICAgIG1fZnJhbWUuZG9jdW1lbnQoKS5tYXJrZXJzKCku
cmVtb3ZlTWFya2VycyhtX3Byb2Nlc3NpbmdSZXF1ZXN0LT5jaGVja2luZ1JhbmdlKCkuZ2V0KCks
IG1hcmtlcnMpOwogICAgIH0KICAgICBkaWRDaGVjayhzZXF1ZW5jZSwgcmVzdWx0cyk7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2F0ay9GcmFtZVNlbGVjdGlvbkF0ay5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2F0ay9GcmFtZVNlbGVjdGlvbkF0ay5jcHAKaW5k
ZXggYjA4MTczMS4uZTBhMWM0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9h
dGsvRnJhbWVTZWxlY3Rpb25BdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvYXRr
L0ZyYW1lU2VsZWN0aW9uQXRrLmNwcApAQCAtOTMsNyArOTMsNyBAQCB2b2lkIEZyYW1lU2VsZWN0
aW9uOjpub3RpZnlBY2Nlc3NpYmlsaXR5Rm9yU2VsZWN0aW9uQ2hhbmdlKCkKICAgICAgICAgcmV0
dXJuOwogCiAgICAgUmVuZGVyT2JqZWN0KiBmb2N1c2VkTm9kZSA9IG1fc2VsZWN0aW9uLmVuZCgp
LmNvbnRhaW5lck5vZGUoKS0+cmVuZGVyZXIoKTsKLSAgICBBWE9iamVjdENhY2hlKiBjYWNoZSA9
IG1fZnJhbWUtPmRvY3VtZW50KCktPmV4aXN0aW5nQVhPYmplY3RDYWNoZSgpOworICAgIEFYT2Jq
ZWN0Q2FjaGUqIGNhY2hlID0gbV9mcmFtZS0+ZG9jdW1lbnQoKS5leGlzdGluZ0FYT2JqZWN0Q2Fj
aGUoKTsKICAgICBpZiAoIWNhY2hlKQogICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvaW9zL0VkaXRvcklPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvaW9zL0VkaXRvcklPUy5tbQppbmRleCA4YTI3Y2Y1Li4xOTEwYzRlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2lvcy9FZGl0b3JJT1MubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9pb3MvRWRpdG9ySU9TLm1tCkBAIC0xNjAsMTQgKzE2MCwxNCBAQCB2b2lk
IEVkaXRvcjo6c2V0VGV4dEFsaWdubWVudEZvckNoYW5nZWRCYXNlV3JpdGluZ0RpcmVjdGlvbihX
cml0aW5nRGlyZWN0aW9uIGRpcgogICAgIGlmICghbmV3VmFsdWUpCiAgICAgICAgIHJldHVybjsK
IAotICAgIEVsZW1lbnQqIGZvY3VzZWRFbGVtZW50ID0gbV9mcmFtZS5kb2N1bWVudCgpLT5mb2N1
c2VkRWxlbWVudCgpOworICAgIEVsZW1lbnQqIGZvY3VzZWRFbGVtZW50ID0gbV9mcmFtZS5kb2N1
bWVudCgpLmZvY3VzZWRFbGVtZW50KCk7CiAgICAgaWYgKGZvY3VzZWRFbGVtZW50ICYmIChmb2N1
c2VkRWxlbWVudC0+aGFzVGFnTmFtZSh0ZXh0YXJlYVRhZykgfHwgKGZvY3VzZWRFbGVtZW50LT5o
YXNUYWdOYW1lKGlucHV0VGFnKSAmJgogICAgICAgICAodG9IVE1MSW5wdXRFbGVtZW50KGZvY3Vz
ZWRFbGVtZW50KS0+aXNUZXh0RmllbGQoKSB8fAogICAgICAgICAgdG9IVE1MSW5wdXRFbGVtZW50
KGZvY3VzZWRFbGVtZW50KS0+aXNTZWFyY2hGaWVsZCgpKSkpKSB7CiAgICAgICAgIGlmIChkaXJl
Y3Rpb24gPT0gTmF0dXJhbFdyaXRpbmdEaXJlY3Rpb24pCiAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgIHRvSFRNTEVsZW1lbnQoZm9jdXNlZEVsZW1lbnQpLT5zZXRBdHRyaWJ1dGUoYWxpZ25B
dHRyLCBuZXdWYWx1ZSk7Ci0gICAgICAgIG1fZnJhbWUuZG9jdW1lbnQoKS0+dXBkYXRlU3R5bGVJ
Zk5lZWRlZCgpOworICAgICAgICBtX2ZyYW1lLmRvY3VtZW50KCkudXBkYXRlU3R5bGVJZk5lZWRl
ZCgpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0yMDEsMTMgKzIwMSwxMyBAQCBzdGF0
aWMgUmVuZGVyU3R5bGUqIHN0eWxlRm9yU2VsZWN0aW9uU3RhcnQoRnJhbWUqIGZyYW1lLCBOb2Rl
ICombm9kZVRvUmVtb3ZlKQogICAgIGlmICghdHlwaW5nU3R5bGUgfHwgIXR5cGluZ1N0eWxlLT5z
dHlsZSgpKQogICAgICAgICByZXR1cm4gJnBvc2l0aW9uLmRlcHJlY2F0ZWROb2RlKCktPnJlbmRl
cmVyKCktPnN0eWxlKCk7CiAKLSAgICBSZWZQdHI8RWxlbWVudD4gc3R5bGVFbGVtZW50ID0gZnJh
bWUtPmRvY3VtZW50KCktPmNyZWF0ZUVsZW1lbnQoc3BhblRhZywgZmFsc2UpOworICAgIFJlZlB0
cjxFbGVtZW50PiBzdHlsZUVsZW1lbnQgPSBmcmFtZS0+ZG9jdW1lbnQoKS5jcmVhdGVFbGVtZW50
KHNwYW5UYWcsIGZhbHNlKTsKIAogICAgIFN0cmluZyBzdHlsZVRleHQgPSB0eXBpbmdTdHlsZS0+
c3R5bGUoKS0+YXNUZXh0KCkgKyAiIGRpc3BsYXk6IGlubGluZSI7CiAgICAgc3R5bGVFbGVtZW50
LT5zZXRBdHRyaWJ1dGUoc3R5bGVBdHRyLCBzdHlsZVRleHQuaW1wbCgpKTsKIAogICAgIEV4Y2Vw
dGlvbkNvZGUgZWMgPSAwOwotICAgIHN0eWxlRWxlbWVudC0+YXBwZW5kQ2hpbGQoZnJhbWUtPmRv
Y3VtZW50KCktPmNyZWF0ZUVkaXRpbmdUZXh0Tm9kZSgiIiksIGVjKTsKKyAgICBzdHlsZUVsZW1l
bnQtPmFwcGVuZENoaWxkKGZyYW1lLT5kb2N1bWVudCgpLmNyZWF0ZUVkaXRpbmdUZXh0Tm9kZSgi
IiksIGVjKTsKICAgICBBU1NFUlQoIWVjKTsKIAogICAgIHBvc2l0aW9uLmRlcHJlY2F0ZWROb2Rl
KCktPnBhcmVudE5vZGUoKS0+YXBwZW5kQ2hpbGQoc3R5bGVFbGVtZW50LCBlYyk7CkBAIC0yNzcs
NyArMjc3LDcgQEAgdm9pZCBFZGl0b3I6OnJlbW92ZVVuY2hhbmdlYWJsZVN0eWxlcygpCiB7CiAg
ICAgLy8gVGhpcyBmdW5jdGlvbiByZW1vdmVzIHN0eWxlcyB0aGF0IHRoZSB1c2VyIGNhbm5vdCBt
b2RpZnkgYnkgYXBwbHlpbmcgdGhlaXIgZGVmYXVsdCB2YWx1ZXMuCiAgICAgCi0gICAgUmVmUHRy
PEVkaXRpbmdTdHlsZT4gZWRpdGluZ1N0eWxlID0gRWRpdGluZ1N0eWxlOjpjcmVhdGUobV9mcmFt
ZS5kb2N1bWVudCgpLT5ib2R5KCkpOworICAgIFJlZlB0cjxFZGl0aW5nU3R5bGU+IGVkaXRpbmdT
dHlsZSA9IEVkaXRpbmdTdHlsZTo6Y3JlYXRlKG1fZnJhbWUuZG9jdW1lbnQoKS5ib2R5KCkpOwog
ICAgIFJlZlB0cjxNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzPiBkZWZhdWx0U3R5bGUgPSBlZGl0aW5n
U3R5bGUuZ2V0KCktPnN0eWxlKCktPm11dGFibGVDb3B5KCk7CiAgICAgCiAgICAgLy8gVGV4dCB3
aWRnZXRzIGltcGxlbWVudCBiYWNrZ3JvdW5kIGNvbG9yIHZpYSB0aGUgVUlWaWV3IHByb3BlcnR5
LiBUaGVpciBib2R5IGVsZW1lbnQgd2lsbCBub3QgaGF2ZSBvbmUuCkBAIC01MDEsMTEgKzUwMSwx
MSBAQCBib29sIEVkaXRvcjo6V2ViQ29udGVudFJlYWRlcjo6cmVhZFVSTChjb25zdCBVUkwmIHVy
bCwgY29uc3QgU3RyaW5nJikKICAgICAgICAgICAgIHJldHVybiBmcmFnbWVudDsKICAgICAgICAg
fQogICAgIH0gZWxzZSB7Ci0gICAgICAgIFJlZlB0cjxFbGVtZW50PiBhbmNob3IgPSBmcmFtZS5k
b2N1bWVudCgpLT5jcmVhdGVFbGVtZW50KEhUTUxOYW1lczo6YVRhZywgZmFsc2UpOworICAgICAg
ICBSZWZQdHI8RWxlbWVudD4gYW5jaG9yID0gZnJhbWUuZG9jdW1lbnQoKS5jcmVhdGVFbGVtZW50
KEhUTUxOYW1lczo6YVRhZywgZmFsc2UpOwogICAgICAgICBhbmNob3ItPnNldEF0dHJpYnV0ZShI
VE1MTmFtZXM6OmhyZWZBdHRyLCB1cmwuc3RyaW5nKCkpOwotICAgICAgICBhbmNob3ItPmFwcGVu
ZENoaWxkKGZyYW1lLmRvY3VtZW50KCktPmNyZWF0ZVRleHROb2RlKFtbKE5TVVJMICopdXJsIGFi
c29sdXRlU3RyaW5nXSBwcmVjb21wb3NlZFN0cmluZ1dpdGhDYW5vbmljYWxNYXBwaW5nXSkpOwor
ICAgICAgICBhbmNob3ItPmFwcGVuZENoaWxkKGZyYW1lLmRvY3VtZW50KCkuY3JlYXRlVGV4dE5v
ZGUoW1soTlNVUkwgKil1cmwgYWJzb2x1dGVTdHJpbmddIHByZWNvbXBvc2VkU3RyaW5nV2l0aENh
bm9uaWNhbE1hcHBpbmddKSk7CiAKLSAgICAgICAgUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IG5l
d0ZyYWdtZW50ID0gZnJhbWUuZG9jdW1lbnQoKS0+Y3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpOwor
ICAgICAgICBSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gbmV3RnJhZ21lbnQgPSBmcmFtZS5kb2N1
bWVudCgpLmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKTsKICAgICAgICAgbmV3RnJhZ21lbnQtPmFw
cGVuZENoaWxkKGFuY2hvci5yZWxlYXNlKCkpOwogICAgICAgICBhZGRGcmFnbWVudChuZXdGcmFn
bWVudCk7CiAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtNTUxLDcgKzU1MSw3IEBAIHZvaWQgRWRp
dG9yOjpwYXN0ZVdpdGhQYXN0ZWJvYXJkKFBhc3RlYm9hcmQqIHBhc3RlYm9hcmQsIGJvb2wgYWxs
b3dQbGFpblRleHQpCiAKIFBhc3NSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gRWRpdG9yOjpjcmVh
dGVGcmFnbWVudEFuZEFkZFJlc291cmNlcyhOU0F0dHJpYnV0ZWRTdHJpbmcgKnN0cmluZykKIHsK
LSAgICBpZiAoIW1fZnJhbWUucGFnZSgpIHx8ICFtX2ZyYW1lLmRvY3VtZW50KCkgfHwgIW1fZnJh
bWUuZG9jdW1lbnQoKS0+aXNIVE1MRG9jdW1lbnQoKSkKKyAgICBpZiAoIW1fZnJhbWUucGFnZSgp
IHx8ICFtX2ZyYW1lLmRvY3VtZW50KCkgfHwgIW1fZnJhbWUuZG9jdW1lbnQoKS5pc0hUTUxEb2N1
bWVudCgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIGlmICghc3RyaW5nKQpAQCAt
NTgwLDcgKzU4MCw3IEBAIFBhc3NSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gRWRpdG9yOjpjcmVh
dGVGcmFnbWVudEZvckltYWdlUmVzb3VyY2VBbmRBZGRSZXNvdXJjCiAgICAgaWYgKCFyZXNvdXJj
ZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBSZWZQdHI8RWxlbWVudD4gaW1hZ2VF
bGVtZW50ID0gbV9mcmFtZS5kb2N1bWVudCgpLT5jcmVhdGVFbGVtZW50KEhUTUxOYW1lczo6aW1n
VGFnLCBmYWxzZSk7CisgICAgUmVmUHRyPEVsZW1lbnQ+IGltYWdlRWxlbWVudCA9IG1fZnJhbWUu
ZG9jdW1lbnQoKS5jcmVhdGVFbGVtZW50KEhUTUxOYW1lczo6aW1nVGFnLCBmYWxzZSk7CiAgICAg
Ly8gRklYTUU6IFRoZSBjb2RlIGluIGNyZWF0ZUZyYWdtZW50QW5kQWRkUmVzb3VyY2VzIGNhbGxz
IHNldERlZmVyc0xvYWRpbmcodHJ1ZSkuIERvbid0IHdlIG5lZWQgdGhhdCBoZXJlPwogICAgIGlm
IChEb2N1bWVudExvYWRlciogbG9hZGVyID0gbV9mcmFtZS5sb2FkZXIoKS5kb2N1bWVudExvYWRl
cigpKQogICAgICAgICBsb2FkZXItPmFkZEFyY2hpdmVSZXNvdXJjZShyZXNvdXJjZS5nZXQoKSk7
CkBAIC01ODgsNyArNTg4LDcgQEAgUGFzc1JlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBFZGl0b3I6
OmNyZWF0ZUZyYWdtZW50Rm9ySW1hZ2VSZXNvdXJjZUFuZEFkZFJlc291cmMKICAgICBOU1VSTCAq
VVJMID0gcmVzb3VyY2UtPnVybCgpOwogICAgIGltYWdlRWxlbWVudC0+c2V0QXR0cmlidXRlKEhU
TUxOYW1lczo6c3JjQXR0ciwgW1VSTCBpc0ZpbGVVUkxdID8gW1VSTCBhYnNvbHV0ZVN0cmluZ10g
OiByZXNvdXJjZS0+dXJsKCkpOwogCi0gICAgUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGZyYWdt
ZW50ID0gbV9mcmFtZS5kb2N1bWVudCgpLT5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCk7CisgICAg
UmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGZyYWdtZW50ID0gbV9mcmFtZS5kb2N1bWVudCgpLmNy
ZWF0ZURvY3VtZW50RnJhZ21lbnQoKTsKICAgICBmcmFnbWVudC0+YXBwZW5kQ2hpbGQoaW1hZ2VF
bGVtZW50LnJlbGVhc2UoKSk7CiAKICAgICByZXR1cm4gZnJhZ21lbnQucmVsZWFzZSgpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvRWRpdG9yTWFjLm1tIGIvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9tYWMvRWRpdG9yTWFjLm1tCmluZGV4IGVhMjUwNjcuLmZiOTg3YTkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0VkaXRvck1hYy5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9FZGl0b3JNYWMubW0KQEAgLTEyMCwxMiArMTIw
LDEyIEBAIHN0YXRpYyBSZW5kZXJTdHlsZSogc3R5bGVGb3JTZWxlY3Rpb25TdGFydChGcmFtZSog
ZnJhbWUsIE5vZGUgKiZub2RlVG9SZW1vdmUpCiAgICAgaWYgKCF0eXBpbmdTdHlsZSB8fCAhdHlw
aW5nU3R5bGUtPnN0eWxlKCkpCiAgICAgICAgIHJldHVybiAmcG9zaXRpb24uZGVwcmVjYXRlZE5v
ZGUoKS0+cmVuZGVyZXIoKS0+c3R5bGUoKTsKIAotICAgIFJlZlB0cjxFbGVtZW50PiBzdHlsZUVs
ZW1lbnQgPSBmcmFtZS0+ZG9jdW1lbnQoKS0+Y3JlYXRlRWxlbWVudChzcGFuVGFnLCBmYWxzZSk7
CisgICAgUmVmUHRyPEVsZW1lbnQ+IHN0eWxlRWxlbWVudCA9IGZyYW1lLT5kb2N1bWVudCgpLmNy
ZWF0ZUVsZW1lbnQoc3BhblRhZywgZmFsc2UpOwogCiAgICAgU3RyaW5nIHN0eWxlVGV4dCA9IHR5
cGluZ1N0eWxlLT5zdHlsZSgpLT5hc1RleHQoKSArICIgZGlzcGxheTogaW5saW5lIjsKICAgICBz
dHlsZUVsZW1lbnQtPnNldEF0dHJpYnV0ZShzdHlsZUF0dHIsIHN0eWxlVGV4dCk7CiAKLSAgICBz
dHlsZUVsZW1lbnQtPmFwcGVuZENoaWxkKGZyYW1lLT5kb2N1bWVudCgpLT5jcmVhdGVFZGl0aW5n
VGV4dE5vZGUoIiIpLCBBU1NFUlRfTk9fRVhDRVBUSU9OKTsKKyAgICBzdHlsZUVsZW1lbnQtPmFw
cGVuZENoaWxkKGZyYW1lLT5kb2N1bWVudCgpLmNyZWF0ZUVkaXRpbmdUZXh0Tm9kZSgiIiksIEFT
U0VSVF9OT19FWENFUFRJT04pOwogCiAgICAgcG9zaXRpb24uZGVwcmVjYXRlZE5vZGUoKS0+cGFy
ZW50Tm9kZSgpLT5hcHBlbmRDaGlsZChzdHlsZUVsZW1lbnQsIEFTU0VSVF9OT19FWENFUFRJT04p
OwogCkBAIC01NTEsMTEgKzU1MSwxMSBAQCBib29sIEVkaXRvcjo6V2ViQ29udGVudFJlYWRlcjo6
cmVhZFVSTChjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB0aXRsZSkKICAgICBpZiAodXJs
LnN0cmluZygpLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgUmVmUHRy
PEVsZW1lbnQ+IGFuY2hvciA9IGZyYW1lLmRvY3VtZW50KCktPmNyZWF0ZUVsZW1lbnQoSFRNTE5h
bWVzOjphVGFnLCBmYWxzZSk7CisgICAgUmVmUHRyPEVsZW1lbnQ+IGFuY2hvciA9IGZyYW1lLmRv
Y3VtZW50KCkuY3JlYXRlRWxlbWVudChIVE1MTmFtZXM6OmFUYWcsIGZhbHNlKTsKICAgICBhbmNo
b3ItPnNldEF0dHJpYnV0ZShIVE1MTmFtZXM6OmhyZWZBdHRyLCB1cmwuc3RyaW5nKCkpOwotICAg
IGFuY2hvci0+YXBwZW5kQ2hpbGQoZnJhbWUuZG9jdW1lbnQoKS0+Y3JlYXRlVGV4dE5vZGUoW3Rp
dGxlIHByZWNvbXBvc2VkU3RyaW5nV2l0aENhbm9uaWNhbE1hcHBpbmddKSk7CisgICAgYW5jaG9y
LT5hcHBlbmRDaGlsZChmcmFtZS5kb2N1bWVudCgpLmNyZWF0ZVRleHROb2RlKFt0aXRsZSBwcmVj
b21wb3NlZFN0cmluZ1dpdGhDYW5vbmljYWxNYXBwaW5nXSkpOwogCi0gICAgZnJhZ21lbnQgPSBm
cmFtZS5kb2N1bWVudCgpLT5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCk7CisgICAgZnJhZ21lbnQg
PSBmcmFtZS5kb2N1bWVudCgpLmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKTsKICAgICBmcmFnbWVu
dC0+YXBwZW5kQ2hpbGQoYW5jaG9yLnJlbGVhc2UoKSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0NhY2hlZEZyYW1lLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2hpc3RvcnkvQ2FjaGVkRnJhbWUuY3BwCmluZGV4IDM0ODY5MGEuLmQ3ZDFhOTUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQ2FjaGVkRnJhbWUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQ2FjaGVkRnJhbWUuY3BwCkBAIC02MCwxMCArNjAsMTAg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogREVGSU5FX0RFQlVHX09OTFlfR0xPQkFMKFdURjo6UmVm
Q291bnRlZExlYWtDb3VudGVyLCBjYWNoZWRGcmFtZUNvdW50ZXIsICgiQ2FjaGVkRnJhbWUiKSk7
CiAKIENhY2hlZEZyYW1lQmFzZTo6Q2FjaGVkRnJhbWVCYXNlKEZyYW1lJiBmcmFtZSkKLSAgICA6
IG1fZG9jdW1lbnQoZnJhbWUuZG9jdW1lbnQoKSkKKyAgICA6IG1fZG9jdW1lbnQoJmZyYW1lLmRv
Y3VtZW50KCkpCiAgICAgLCBtX2RvY3VtZW50TG9hZGVyKGZyYW1lLmxvYWRlcigpLmRvY3VtZW50
TG9hZGVyKCkpCiAgICAgLCBtX3ZpZXcoZnJhbWUudmlldygpKQotICAgICwgbV91cmwoZnJhbWUu
ZG9jdW1lbnQoKS0+dXJsKCkpCisgICAgLCBtX3VybChmcmFtZS5kb2N1bWVudCgpLnVybCgpKQog
ICAgICwgbV9pc01haW5GcmFtZSghZnJhbWUudHJlZSgpLnBhcmVudCgpKQogICAgICwgbV9pc0Nv
bXBvc2l0ZWQoZnJhbWUudmlldygpLT5oYXNDb21wb3NpdGVkQ29udGVudCgpKQogewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9DYWNoZWRQYWdlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2hpc3RvcnkvQ2FjaGVkUGFnZS5jcHAKaW5kZXggNzcyMWU1My4uNzQ2NjMwMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9DYWNoZWRQYWdlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9oaXN0b3J5L0NhY2hlZFBhZ2UuY3BwCkBAIC04Myw4ICs4Myw4IEBAIHZvaWQgQ2Fj
aGVkUGFnZTo6cmVzdG9yZShQYWdlJiBwYWdlKQogICAgIAogICAgIC8vIFJlc3RvcmUgdGhlIGZv
Y3VzIGFwcGVhcmFuY2UgZm9yIHRoZSBmb2N1c2VkIGVsZW1lbnQuCiAgICAgLy8gRklYTUU6IFJp
Z2h0IG5vdyB3ZSBkb24ndCBzdXBwb3J0IHBhZ2VzIHcvIGZyYW1lcyBpbiB0aGUgYi9mIGNhY2hl
LiAgVGhpcyBtYXkgbmVlZCB0byBiZSB0d2Vha2VkIHdoZW4gd2UgYWRkIHN1cHBvcnQgZm9yIHRo
YXQuCi0gICAgRG9jdW1lbnQqIGZvY3VzZWREb2N1bWVudCA9IHBhZ2UuZm9jdXNDb250cm9sbGVy
KCkuZm9jdXNlZE9yTWFpbkZyYW1lKCkuZG9jdW1lbnQoKTsKLSAgICBpZiAoRWxlbWVudCogZWxl
bWVudCA9IGZvY3VzZWREb2N1bWVudC0+Zm9jdXNlZEVsZW1lbnQoKSkgeworICAgIERvY3VtZW50
JiBmb2N1c2VkRG9jdW1lbnQgPSBwYWdlLmZvY3VzQ29udHJvbGxlcigpLmZvY3VzZWRPck1haW5G
cmFtZSgpLmRvY3VtZW50KCk7CisgICAgaWYgKEVsZW1lbnQqIGVsZW1lbnQgPSBmb2N1c2VkRG9j
dW1lbnQuZm9jdXNlZEVsZW1lbnQoKSkgewogI2lmIFBMQVRGT1JNKElPUykKICAgICAgICAgLy8g
V2UgZG9uJ3Qgd2FudCBmb2N1c2VkIG5vZGVzIGNoYW5naW5nIHNjcm9sbCBwb3NpdGlvbiB3aGVu
IHJlc3RvcmluZyBmcm9tIHRoZSBjYWNoZQogICAgICAgICAvLyBhcyBpdCBjYW4gY2F1c2UgdWds
eSBqdW1wcyBiZWZvcmUgd2UgbWFuYWdlIHRvIHJlc3RvcmUgdGhlIGNhY2hlZCBwb3NpdGlvbi4K
QEAgLTk4LDcgKzk4LDcgQEAgdm9pZCBDYWNoZWRQYWdlOjpyZXN0b3JlKFBhZ2UmIHBhZ2UpCiAK
ICAgICBpZiAobV9uZWVkU3R5bGVSZWNhbGNGb3JWaXNpdGVkTGlua3MpIHsKICAgICAgICAgZm9y
IChGcmFtZSogZnJhbWUgPSAmcGFnZS5tYWluRnJhbWUoKTsgZnJhbWU7IGZyYW1lID0gZnJhbWUt
PnRyZWUoKS50cmF2ZXJzZU5leHQoKSkKLSAgICAgICAgICAgIGZyYW1lLT5kb2N1bWVudCgpLT52
aXNpdGVkTGlua1N0YXRlKCkuaW52YWxpZGF0ZVN0eWxlRm9yQWxsTGlua3MoKTsKKyAgICAgICAg
ICAgIGZyYW1lLT5kb2N1bWVudCgpLnZpc2l0ZWRMaW5rU3RhdGUoKS5pbnZhbGlkYXRlU3R5bGVG
b3JBbGxMaW5rcygpOwogICAgIH0KIAogICAgIGlmIChtX25lZWRzRGV2aWNlU2NhbGVDaGFuZ2Vk
KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L1BhZ2VDYWNoZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9oaXN0b3J5L1BhZ2VDYWNoZS5jcHAKaW5kZXggOTAzYjUzZS4uOWIxYzIw
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9QYWdlQ2FjaGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvUGFnZUNhY2hlLmNwcApAQCAtMTI1LDEzICsxMjUsMTMg
QEAgc3RhdGljIHVuc2lnbmVkIGxvZ0NhbkNhY2hlRnJhbWVEZWNpc2lvbihGcmFtZSogZnJhbWUs
IGludCBpbmRlbnRMZXZlbCkKICAgICAgICAgUENMT0coIiAgIC1GcmFtZSBjb250YWlucyBwbHVn
aW5zIik7CiAgICAgICAgIHJlamVjdFJlYXNvbnMgfD0gMSA8PCBIYXNQbHVnaW5zOwogICAgIH0K
LSAgICBpZiAoZnJhbWUtPmRvY3VtZW50KCktPnVybCgpLnByb3RvY29sSXMoImh0dHBzIikKKyAg
ICBpZiAoZnJhbWUtPmRvY3VtZW50KCkudXJsKCkucHJvdG9jb2xJcygiaHR0cHMiKQogICAgICAg
ICAmJiAoZnJhbWUtPmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCktPnJlc3BvbnNlKCkuY2FjaGVD
b250cm9sQ29udGFpbnNOb0NhY2hlKCkKICAgICAgICAgICAgIHx8IGZyYW1lLT5sb2FkZXIoKS5k
b2N1bWVudExvYWRlcigpLT5yZXNwb25zZSgpLmNhY2hlQ29udHJvbENvbnRhaW5zTm9TdG9yZSgp
KSkgewogICAgICAgICBQQ0xPRygiICAgLUZyYW1lIGlzIEhUVFBTLCBhbmQgY2FjaGUgY29udHJv
bCBwcm9oaWJpdHMgY2FjaGluZyBvciBzdG9yaW5nIik7CiAgICAgICAgIHJlamVjdFJlYXNvbnMg
fD0gMSA8PCBJc0h0dHBzQW5kQ2FjaGVDb250cm9sbGVkOwogICAgIH0KLSAgICBpZiAoZnJhbWUt
PmRvY3VtZW50KCktPmRvbVdpbmRvdygpICYmIGZyYW1lLT5kb2N1bWVudCgpLT5kb21XaW5kb3co
KS0+aGFzRXZlbnRMaXN0ZW5lcnMoZXZlbnROYW1lcygpLnVubG9hZEV2ZW50KSkgeworICAgIGlm
IChmcmFtZS0+ZG9jdW1lbnQoKS5kb21XaW5kb3coKSAmJiBmcmFtZS0+ZG9jdW1lbnQoKS5kb21X
aW5kb3coKS0+aGFzRXZlbnRMaXN0ZW5lcnMoZXZlbnROYW1lcygpLnVubG9hZEV2ZW50KSkgewog
ICAgICAgICBQQ0xPRygiICAgLUZyYW1lIGhhcyBhbiB1bmxvYWQgZXZlbnQgbGlzdGVuZXIiKTsK
ICNpZiAhUExBVEZPUk0oSU9TKQogICAgICAgICByZWplY3RSZWFzb25zIHw9IDEgPDwgSGFzVW5s
b2FkTGlzdGVuZXI7CkBAIC0xNjgsNyArMTY4LDcgQEAgc3RhdGljIHVuc2lnbmVkIGxvZ0NhbkNh
Y2hlRnJhbWVEZWNpc2lvbihGcmFtZSogZnJhbWUsIGludCBpbmRlbnRMZXZlbCkKICAgICAgICAg
UENMT0coIiAgIC1Eb2N1bWVudExvYWRlciBpcyBpbiB0aGUgbWlkZGxlIG9mIHN0b3BwaW5nIik7
CiAgICAgICAgIHJlamVjdFJlYXNvbnMgfD0gMSA8PCBJc1N0b3BwaW5nOwogICAgIH0KLSAgICBp
ZiAoIWZyYW1lLT5kb2N1bWVudCgpLT5jYW5TdXNwZW5kQWN0aXZlRE9NT2JqZWN0cygpKSB7Cisg
ICAgaWYgKCFmcmFtZS0+ZG9jdW1lbnQoKS5jYW5TdXNwZW5kQWN0aXZlRE9NT2JqZWN0cygpKSB7
CiAgICAgICAgIFBDTE9HKCIgICAtVGhlIGRvY3VtZW50IGNhbm5vdCBzdXNwZWN0IGl0cyBhY3Rp
dmUgRE9NIE9iamVjdHMiKTsKICAgICAgICAgcmVqZWN0UmVhc29ucyB8PSAxIDw8IENhbm5vdFN1
c3BlbmRBY3RpdmVET01PYmplY3RzOwogICAgIH0KQEAgLTMyMCw3ICszMjAsNyBAQCBib29sIFBh
Z2VDYWNoZTo6Y2FuQ2FjaGVQYWdlQ29udGFpbmluZ1RoaXNGcmFtZShGcmFtZSogZnJhbWUpCiAg
ICAgCiAgICAgRnJhbWVMb2FkZXImIGZyYW1lTG9hZGVyID0gZnJhbWUtPmxvYWRlcigpOwogICAg
IERvY3VtZW50TG9hZGVyKiBkb2N1bWVudExvYWRlciA9IGZyYW1lTG9hZGVyLmRvY3VtZW50TG9h
ZGVyKCk7Ci0gICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gZnJhbWUtPmRvY3VtZW50KCk7CisgICAg
RG9jdW1lbnQmIGRvY3VtZW50ID0gZnJhbWUtPmRvY3VtZW50KCk7CiAgICAgCiAgICAgcmV0dXJu
IGRvY3VtZW50TG9hZGVyCiAjaWYgIVBMQVRGT1JNKElPUykKQEAgLTMzMSwyMSArMzMxLDIxIEBA
IGJvb2wgUGFnZUNhY2hlOjpjYW5DYWNoZVBhZ2VDb250YWluaW5nVGhpc0ZyYW1lKEZyYW1lKiBm
cmFtZSkKICAgICAgICAgLy8gRG8gbm90IGNhY2hlIGVycm9yIHBhZ2VzICh0aGVzZSBjYW4gYmUg
cmVjb2duaXplZCBhcyBwYWdlcyB3aXRoIHN1YnN0aXR1dGUgZGF0YSBvciB1bnJlYWNoYWJsZSBV
UkxzKS4KICAgICAgICAgJiYgIShkb2N1bWVudExvYWRlci0+c3Vic3RpdHV0ZURhdGEoKS5pc1Zh
bGlkKCkgJiYgIWRvY3VtZW50TG9hZGVyLT5zdWJzdGl0dXRlRGF0YSgpLmZhaWxpbmdVUkwoKS5p
c0VtcHR5KCkpCiAgICAgICAgICYmICghZnJhbWVMb2FkZXIuc3ViZnJhbWVMb2FkZXIoKS5jb250
YWluc1BsdWdpbnMoKSB8fCBmcmFtZS0+cGFnZSgpLT5zZXR0aW5ncygpLnBhZ2VDYWNoZVN1cHBv
cnRzUGx1Z2lucygpKQotICAgICAgICAmJiAoIWRvY3VtZW50LT51cmwoKS5wcm90b2NvbElzKCJo
dHRwcyIpIHx8ICghZG9jdW1lbnRMb2FkZXItPnJlc3BvbnNlKCkuY2FjaGVDb250cm9sQ29udGFp
bnNOb0NhY2hlKCkgJiYgIWRvY3VtZW50TG9hZGVyLT5yZXNwb25zZSgpLmNhY2hlQ29udHJvbENv
bnRhaW5zTm9TdG9yZSgpKSkKKyAgICAgICAgJiYgKCFkb2N1bWVudC51cmwoKS5wcm90b2NvbElz
KCJodHRwcyIpIHx8ICghZG9jdW1lbnRMb2FkZXItPnJlc3BvbnNlKCkuY2FjaGVDb250cm9sQ29u
dGFpbnNOb0NhY2hlKCkgJiYgIWRvY3VtZW50TG9hZGVyLT5yZXNwb25zZSgpLmNhY2hlQ29udHJv
bENvbnRhaW5zTm9TdG9yZSgpKSkKICNpZiAhUExBVEZPUk0oSU9TKQotICAgICAgICAmJiAoIWRv
Y3VtZW50LT5kb21XaW5kb3coKSB8fCAhZG9jdW1lbnQtPmRvbVdpbmRvdygpLT5oYXNFdmVudExp
c3RlbmVycyhldmVudE5hbWVzKCkudW5sb2FkRXZlbnQpKQorICAgICAgICAmJiAoIWRvY3VtZW50
LmRvbVdpbmRvdygpIHx8ICFkb2N1bWVudC5kb21XaW5kb3coKS0+aGFzRXZlbnRMaXN0ZW5lcnMo
ZXZlbnROYW1lcygpLnVubG9hZEV2ZW50KSkKICNlbmRpZgogI2lmIEVOQUJMRShTUUxfREFUQUJB
U0UpCi0gICAgICAgICYmICFEYXRhYmFzZU1hbmFnZXI6Om1hbmFnZXIoKS5oYXNPcGVuRGF0YWJh
c2VzKGRvY3VtZW50KQorICAgICAgICAmJiAhRGF0YWJhc2VNYW5hZ2VyOjptYW5hZ2VyKCkuaGFz
T3BlbkRhdGFiYXNlcygmZG9jdW1lbnQpCiAjZW5kaWYKICNpZiBFTkFCTEUoU0hBUkVEX1dPUktF
UlMpCi0gICAgICAgICYmICFTaGFyZWRXb3JrZXJSZXBvc2l0b3J5OjpoYXNTaGFyZWRXb3JrZXJz
KGRvY3VtZW50KQorICAgICAgICAmJiAhU2hhcmVkV29ya2VyUmVwb3NpdG9yeTo6aGFzU2hhcmVk
V29ya2VycygmZG9jdW1lbnQpCiAjZW5kaWYKICAgICAgICAgJiYgZnJhbWVMb2FkZXIuaGlzdG9y
eSgpLmN1cnJlbnRJdGVtKCkKICAgICAgICAgJiYgIWZyYW1lTG9hZGVyLnF1aWNrUmVkaXJlY3RD
b21pbmcoKQogICAgICAgICAmJiAhZG9jdW1lbnRMb2FkZXItPmlzTG9hZGluZ0luQVBJU2Vuc2Uo
KQogICAgICAgICAmJiAhZG9jdW1lbnRMb2FkZXItPmlzU3RvcHBpbmcoKQotICAgICAgICAmJiBk
b2N1bWVudC0+Y2FuU3VzcGVuZEFjdGl2ZURPTU9iamVjdHMoKQorICAgICAgICAmJiBkb2N1bWVu
dC5jYW5TdXNwZW5kQWN0aXZlRE9NT2JqZWN0cygpCiAgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91
bGQgaW52ZXN0aWdhdGluZyBjYWNoaW5nIGZyYW1lcyB0aGF0IGhhdmUgYW4gYXNzb2NpYXRlZAog
ICAgICAgICAvLyBhcHBsaWNhdGlvbiBjYWNoZS4gPHJkYXI6Ly9wcm9ibGVtLzU5MTc4OTk+IHRy
YWNrcyB0aGF0IHdvcmsuCiAgICAgICAgICYmIGRvY3VtZW50TG9hZGVyLT5hcHBsaWNhdGlvbkNh
Y2hlSG9zdCgpLT5jYW5DYWNoZUluUGFnZUNhY2hlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTEZyYW1lT3duZXJFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTEZyYW1lT3duZXJFbGVtZW50LmNwcAppbmRleCA4YjdiNzM5Li4wNjcwZjdkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZU93bmVyRWxlbWVudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVPd25lckVsZW1lbnQuY3BwCkBAIC05MywxMiAr
OTMsMTIgQEAgSFRNTEZyYW1lT3duZXJFbGVtZW50Ojp+SFRNTEZyYW1lT3duZXJFbGVtZW50KCkK
IAogRG9jdW1lbnQqIEhUTUxGcmFtZU93bmVyRWxlbWVudDo6Y29udGVudERvY3VtZW50KCkgY29u
c3QKIHsKLSAgICByZXR1cm4gbV9jb250ZW50RnJhbWUgPyBtX2NvbnRlbnRGcmFtZS0+ZG9jdW1l
bnQoKSA6IDA7CisgICAgcmV0dXJuIG1fY29udGVudEZyYW1lID8gJm1fY29udGVudEZyYW1lLT5k
b2N1bWVudCgpIDogMDsKIH0KIAogRE9NV2luZG93KiBIVE1MRnJhbWVPd25lckVsZW1lbnQ6OmNv
bnRlbnRXaW5kb3coKSBjb25zdAogewotICAgIHJldHVybiBtX2NvbnRlbnRGcmFtZSA/IG1fY29u
dGVudEZyYW1lLT5kb2N1bWVudCgpLT5kb21XaW5kb3coKSA6IDA7CisgICAgcmV0dXJuIG1fY29u
dGVudEZyYW1lID8gbV9jb250ZW50RnJhbWUtPmRvY3VtZW50KCkuZG9tV2luZG93KCkgOiAwOwog
fQogCiB2b2lkIEhUTUxGcmFtZU93bmVyRWxlbWVudDo6c2V0U2FuZGJveEZsYWdzKFNhbmRib3hG
bGFncyBmbGFncykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbklt
YWdlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1l
bnQuY3BwCmluZGV4IGI4MTYyNDMuLmU1NmNmNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50LmNwcApAQCAtNDgyLDE0ICs0ODIsMTIgQEAgdm9pZCBI
VE1MUGx1Z0luSW1hZ2VFbGVtZW50OjpyZXN0YXJ0U2ltaWxhclBsdWdJbnMoKQogICAgICAgICBp
ZiAoIWZyYW1lLT5sb2FkZXIoKS5zdWJmcmFtZUxvYWRlcigpLmNvbnRhaW5zUGx1Z2lucygpKQog
ICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIAotICAgICAgICBpZiAoIWZyYW1lLT5kb2N1
bWVudCgpKQotICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAgUmVmUHRyPE5vZGVMaXN0
PiBwbHVnSW5zID0gZnJhbWUtPmRvY3VtZW50KCktPmdldEVsZW1lbnRzQnlUYWdOYW1lKGVtYmVk
VGFnLmxvY2FsTmFtZSgpKTsKKyAgICAgICAgQVNTRVJUKGZyYW1lLT5kb2N1bWVudCgpKTsKKyAg
ICAgICAgUmVmUHRyPE5vZGVMaXN0PiBwbHVnSW5zID0gZnJhbWUtPmRvY3VtZW50KCkuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoZW1iZWRUYWcubG9jYWxOYW1lKCkpOwogICAgICAgICBpZiAocGx1Z0lu
cykKICAgICAgICAgICAgIGFkZFBsdWdJbnNGcm9tTm9kZUxpc3RNYXRjaGluZ1BsdWdJbk9yaWdp
bihzaW1pbGFyUGx1Z2lucywgcGx1Z0lucywgcGx1Z0luT3JpZ2luLCBtaW1lVHlwZSk7CiAKLSAg
ICAgICAgcGx1Z0lucyA9IGZyYW1lLT5kb2N1bWVudCgpLT5nZXRFbGVtZW50c0J5VGFnTmFtZShv
YmplY3RUYWcubG9jYWxOYW1lKCkpOworICAgICAgICBwbHVnSW5zID0gZnJhbWUtPmRvY3VtZW50
KCkuZ2V0RWxlbWVudHNCeVRhZ05hbWUob2JqZWN0VGFnLmxvY2FsTmFtZSgpKTsKICAgICAgICAg
aWYgKHBsdWdJbnMpCiAgICAgICAgICAgICBhZGRQbHVnSW5zRnJvbU5vZGVMaXN0TWF0Y2hpbmdQ
bHVnSW5PcmlnaW4oc2ltaWxhclBsdWdpbnMsIHBsdWdJbnMsIHBsdWdJbk9yaWdpbiwgbWltZVR5
cGUpOwogICAgIH0KQEAgLTUxMCw4ICs1MDgsOCBAQCB2b2lkIEhUTUxQbHVnSW5JbWFnZUVsZW1l
bnQ6OnVzZXJEaWRDbGlja1NuYXBzaG90KFBhc3NSZWZQdHI8TW91c2VFdmVudD4gZXZlbnQsCiAg
ICAgICAgIG1fcGVuZGluZ0NsaWNrRXZlbnRGcm9tU25hcHNob3QgPSBldmVudDsKIAogICAgIFN0
cmluZyBwbHVnSW5PcmlnaW4gPSBtX2xvYWRlZFVybC5ob3N0KCk7Ci0gICAgaWYgKGRvY3VtZW50
KCkucGFnZSgpICYmICFTY2hlbWVSZWdpc3RyeTo6c2hvdWxkVHJlYXRVUkxTY2hlbWVBc0xvY2Fs
KGRvY3VtZW50KCkucGFnZSgpLT5tYWluRnJhbWUoKS5kb2N1bWVudCgpLT5iYXNlVVJMKCkucHJv
dG9jb2woKSkgJiYgZG9jdW1lbnQoKS5wYWdlKCktPnNldHRpbmdzKCkuYXV0b3N0YXJ0T3JpZ2lu
UGx1Z0luU25hcHNob3R0aW5nRW5hYmxlZCgpKQotICAgICAgICBkb2N1bWVudCgpLnBhZ2UoKS0+
cGx1Z0luQ2xpZW50KCktPmRpZFN0YXJ0RnJvbU9yaWdpbihkb2N1bWVudCgpLnBhZ2UoKS0+bWFp
bkZyYW1lKCkuZG9jdW1lbnQoKS0+YmFzZVVSTCgpLmhvc3QoKSwgcGx1Z0luT3JpZ2luLCBsb2Fk
ZWRNaW1lVHlwZSgpKTsKKyAgICBpZiAoZG9jdW1lbnQoKS5wYWdlKCkgJiYgIVNjaGVtZVJlZ2lz
dHJ5OjpzaG91bGRUcmVhdFVSTFNjaGVtZUFzTG9jYWwoZG9jdW1lbnQoKS5wYWdlKCktPm1haW5G
cmFtZSgpLmRvY3VtZW50KCkuYmFzZVVSTCgpLnByb3RvY29sKCkpICYmIGRvY3VtZW50KCkucGFn
ZSgpLT5zZXR0aW5ncygpLmF1dG9zdGFydE9yaWdpblBsdWdJblNuYXBzaG90dGluZ0VuYWJsZWQo
KSkKKyAgICAgICAgZG9jdW1lbnQoKS5wYWdlKCktPnBsdWdJbkNsaWVudCgpLT5kaWRTdGFydEZy
b21PcmlnaW4oZG9jdW1lbnQoKS5wYWdlKCktPm1haW5GcmFtZSgpLmRvY3VtZW50KCkuYmFzZVVS
TCgpLmhvc3QoKSwgcGx1Z0luT3JpZ2luLCBsb2FkZWRNaW1lVHlwZSgpKTsKIAogICAgIExPRyhQ
bHVnaW5zLCAiJXAgVXNlciBjbGlja2VkIG9uIHNuYXBzaG90dGVkIHBsdWctaW4uIFJlc3RhcnQu
IiwgdGhpcyk7CiAgICAgcmVzdGFydFNuYXBzaG90dGVkUGx1Z0luKCk7CkBAIC01NjcsOCArNTY1
LDggQEAgc3RhdGljIGJvb2wgZG9jdW1lbnRIYWRSZWNlbnRVc2VyR2VzdHVyZShEb2N1bWVudCYg
ZG9jdW1lbnQpCiB7CiAgICAgZG91YmxlIGxhc3RLbm93blVzZXJHZXN0dXJlVGltZXN0YW1wID0g
ZG9jdW1lbnQubGFzdEhhbmRsZWRVc2VyR2VzdHVyZVRpbWVzdGFtcCgpOwogCi0gICAgaWYgKGRv
Y3VtZW50LmZyYW1lKCkgIT0gJmRvY3VtZW50LnBhZ2UoKS0+bWFpbkZyYW1lKCkgJiYgZG9jdW1l
bnQucGFnZSgpLT5tYWluRnJhbWUoKS5kb2N1bWVudCgpKQotICAgICAgICBsYXN0S25vd25Vc2Vy
R2VzdHVyZVRpbWVzdGFtcCA9IHN0ZDo6bWF4KGxhc3RLbm93blVzZXJHZXN0dXJlVGltZXN0YW1w
LCBkb2N1bWVudC5wYWdlKCktPm1haW5GcmFtZSgpLmRvY3VtZW50KCktPmxhc3RIYW5kbGVkVXNl
ckdlc3R1cmVUaW1lc3RhbXAoKSk7CisgICAgaWYgKGRvY3VtZW50LmZyYW1lKCkgIT0gJmRvY3Vt
ZW50LnBhZ2UoKS0+bWFpbkZyYW1lKCkgJiYgJmRvY3VtZW50LnBhZ2UoKS0+bWFpbkZyYW1lKCku
ZG9jdW1lbnQoKSkKKyAgICAgICAgbGFzdEtub3duVXNlckdlc3R1cmVUaW1lc3RhbXAgPSBzdGQ6
Om1heChsYXN0S25vd25Vc2VyR2VzdHVyZVRpbWVzdGFtcCwgZG9jdW1lbnQucGFnZSgpLT5tYWlu
RnJhbWUoKS5kb2N1bWVudCgpLmxhc3RIYW5kbGVkVXNlckdlc3R1cmVUaW1lc3RhbXAoKSk7CiAK
ICAgICBpZiAobW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lKCkgLSBsYXN0S25vd25Vc2VyR2Vz
dHVyZVRpbWVzdGFtcCA8IGF1dG9zdGFydFNvb25BZnRlclVzZXJHZXN0dXJlVGhyZXNob2xkKQog
ICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTcxNyw4ICs3MTUsOCBAQCB2b2lkIEhUTUxQbHVnSW5J
bWFnZUVsZW1lbnQ6OnN1YmZyYW1lTG9hZGVyV2lsbENyZWF0ZVBsdWdJbihjb25zdCBVUkwmIHVy
bCkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGlmIChkb2N1bWVudCgpLnBhZ2UoKS0+
c2V0dGluZ3MoKS5hdXRvc3RhcnRPcmlnaW5QbHVnSW5TbmFwc2hvdHRpbmdFbmFibGVkKCkgJiYg
ZG9jdW1lbnQoKS5wYWdlKCktPnBsdWdJbkNsaWVudCgpICYmIGRvY3VtZW50KCkucGFnZSgpLT5w
bHVnSW5DbGllbnQoKS0+c2hvdWxkQXV0b1N0YXJ0RnJvbU9yaWdpbihkb2N1bWVudCgpLnBhZ2Uo
KS0+bWFpbkZyYW1lKCkuZG9jdW1lbnQoKS0+YmFzZVVSTCgpLmhvc3QoKSwgdXJsLmhvc3QoKSwg
bG9hZGVkTWltZVR5cGUoKSkpIHsKLSAgICAgICAgTE9HKFBsdWdpbnMsICIlcCBQbHVnLWluIGZy
b20gKCVzLCAlcykgaXMgbWFya2VkIHRvIGF1dG8tc3RhcnQsIHNldCB0byBwbGF5IiwgdGhpcywg
ZG9jdW1lbnQoKS5wYWdlKCktPm1haW5GcmFtZSgpLmRvY3VtZW50KCktPmJhc2VVUkwoKS5ob3N0
KCkudXRmOCgpLmRhdGEoKSwgdXJsLmhvc3QoKS51dGY4KCkuZGF0YSgpKTsKKyAgICBpZiAoZG9j
dW1lbnQoKS5wYWdlKCktPnNldHRpbmdzKCkuYXV0b3N0YXJ0T3JpZ2luUGx1Z0luU25hcHNob3R0
aW5nRW5hYmxlZCgpICYmIGRvY3VtZW50KCkucGFnZSgpLT5wbHVnSW5DbGllbnQoKSAmJiBkb2N1
bWVudCgpLnBhZ2UoKS0+cGx1Z0luQ2xpZW50KCktPnNob3VsZEF1dG9TdGFydEZyb21PcmlnaW4o
ZG9jdW1lbnQoKS5wYWdlKCktPm1haW5GcmFtZSgpLmRvY3VtZW50KCkuYmFzZVVSTCgpLmhvc3Qo
KSwgdXJsLmhvc3QoKSwgbG9hZGVkTWltZVR5cGUoKSkpIHsKKyAgICAgICAgTE9HKFBsdWdpbnMs
ICIlcCBQbHVnLWluIGZyb20gKCVzLCAlcykgaXMgbWFya2VkIHRvIGF1dG8tc3RhcnQsIHNldCB0
byBwbGF5IiwgdGhpcywgZG9jdW1lbnQoKS5wYWdlKCktPm1haW5GcmFtZSgpLmRvY3VtZW50KCku
YmFzZVVSTCgpLmhvc3QoKS51dGY4KCkuZGF0YSgpLCB1cmwuaG9zdCgpLnV0ZjgoKS5kYXRhKCkp
OwogICAgICAgICBtX3NuYXBzaG90RGVjaXNpb24gPSBOZXZlclNuYXBzaG90OwogICAgICAgICBy
ZXR1cm47CiAgICAgfQpAQCAtNzI5LDcgKzcyNyw3IEBAIHZvaWQgSFRNTFBsdWdJbkltYWdlRWxl
bWVudDo6c3ViZnJhbWVMb2FkZXJXaWxsQ3JlYXRlUGx1Z0luKGNvbnN0IFVSTCYgdXJsKQogICAg
ICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaWYgKCFTY2hlbWVSZWdpc3RyeTo6c2hvdWxkVHJl
YXRVUkxTY2hlbWVBc0xvY2FsKG1fbG9hZGVkVXJsLnByb3RvY29sKCkpICYmICFtX2xvYWRlZFVy
bC5ob3N0KCkuaXNFbXB0eSgpICYmIG1fbG9hZGVkVXJsLmhvc3QoKSA9PSBkb2N1bWVudCgpLnBh
Z2UoKS0+bWFpbkZyYW1lKCkuZG9jdW1lbnQoKS0+YmFzZVVSTCgpLmhvc3QoKSkgeworICAgIGlm
ICghU2NoZW1lUmVnaXN0cnk6OnNob3VsZFRyZWF0VVJMU2NoZW1lQXNMb2NhbChtX2xvYWRlZFVy
bC5wcm90b2NvbCgpKSAmJiAhbV9sb2FkZWRVcmwuaG9zdCgpLmlzRW1wdHkoKSAmJiBtX2xvYWRl
ZFVybC5ob3N0KCkgPT0gZG9jdW1lbnQoKS5wYWdlKCktPm1haW5GcmFtZSgpLmRvY3VtZW50KCku
YmFzZVVSTCgpLmhvc3QoKSkgewogICAgICAgICBMT0coUGx1Z2lucywgIiVwIFBsdWctaW4gaXMg
c2VydmVkIGZyb20gcGFnZSdzIGRvbWFpbiwgc2V0IHRvIHBsYXkiLCB0aGlzKTsKICAgICAgICAg
bV9zbmFwc2hvdERlY2lzaW9uID0gTmV2ZXJTbmFwc2hvdDsKICAgICAgICAgcmV0dXJuOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFNjcmlwdFJ1bm5lci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MU2NyaXB0UnVubmVyLmNwcAppbmRleCA0
MWU3MjVmLi5hYjkxZjRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9I
VE1MU2NyaXB0UnVubmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1M
U2NyaXB0UnVubmVyLmNwcApAQCAtNzgsNyArNzgsNyBAQCBzdGF0aWMgVVJMIGRvY3VtZW50VVJM
Rm9yU2NyaXB0RXhlY3V0aW9uKERvY3VtZW50KiBkb2N1bWVudCkKICAgICAgICAgcmV0dXJuIFVS
TCgpOwogCiAgICAgLy8gVXNlIHRoZSBVUkwgb2YgdGhlIGN1cnJlbnRseSBhY3RpdmUgZG9jdW1l
bnQgZm9yIHRoaXMgZnJhbWUuCi0gICAgcmV0dXJuIGRvY3VtZW50LT5mcmFtZSgpLT5kb2N1bWVu
dCgpLT51cmwoKTsKKyAgICByZXR1cm4gZG9jdW1lbnQtPmZyYW1lKCktPmRvY3VtZW50KCkudXJs
KCk7CiB9CiAKIGlubGluZSBQYXNzUmVmUHRyPEV2ZW50PiBjcmVhdGVTY3JpcHRMb2FkRXZlbnQo
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHAKaW5k
ZXggNWEwNzE1Zi4uMDVlMDM3ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckRPTUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yRE9NQWdlbnQuY3BwCkBAIC0yNDAsNyArMjQwLDcgQEAgdm9pZCBJbnNwZWN0b3JET01B
Z2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6SW5zcGVjdG9yRnJv
bnRlbmQKICAgICBtX2RvbUVkaXRvciA9IHN0ZDo6bWFrZV91bmlxdWU8RE9NRWRpdG9yPihtX2hp
c3RvcnkuZ2V0KCkpOwogCiAgICAgbV9pbnN0cnVtZW50aW5nQWdlbnRzLT5zZXRJbnNwZWN0b3JE
T01BZ2VudCh0aGlzKTsKLSAgICBtX2RvY3VtZW50ID0gbV9wYWdlQWdlbnQtPm1haW5GcmFtZSgp
LT5kb2N1bWVudCgpOworICAgIG1fZG9jdW1lbnQgPSAmbV9wYWdlQWdlbnQtPm1haW5GcmFtZSgp
LT5kb2N1bWVudCgpOwogCiAgICAgaWYgKG1fbm9kZVRvRm9jdXMpCiAgICAgICAgIGZvY3VzTm9k
ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTVN0
b3JhZ2VBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NU3Rv
cmFnZUFnZW50LmNwcAppbmRleCAwMzliNzQ1Li5lZDQ2NzExIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50LmNwcApAQCAtMTQ5
LDExICsxNDksMTEgQEAgdm9pZCBJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQ6OnJlbW92ZURPTVN0
b3JhZ2VJdGVtKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgY28KIFN0cmluZyBJbnNwZWN0b3JE
T01TdG9yYWdlQWdlbnQ6OnN0b3JhZ2VJZChTdG9yYWdlKiBzdG9yYWdlKQogewogICAgIEFTU0VS
VChzdG9yYWdlKTsKLSAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBzdG9yYWdlLT5mcmFtZSgpLT5k
b2N1bWVudCgpOworICAgIERvY3VtZW50JiBkb2N1bWVudCA9IHN0b3JhZ2UtPmZyYW1lKCktPmRv
Y3VtZW50KCk7CiAgICAgQVNTRVJUKGRvY3VtZW50KTsKLSAgICBET01XaW5kb3cqIHdpbmRvdyA9
IGRvY3VtZW50LT5kb21XaW5kb3coKTsKKyAgICBET01XaW5kb3cqIHdpbmRvdyA9IGRvY3VtZW50
LmRvbVdpbmRvdygpOwogICAgIEFTU0VSVCh3aW5kb3cpOwotICAgIFJlZlB0cjxTZWN1cml0eU9y
aWdpbj4gc2VjdXJpdHlPcmlnaW4gPSBkb2N1bWVudC0+c2VjdXJpdHlPcmlnaW4oKTsKKyAgICBS
ZWZQdHI8U2VjdXJpdHlPcmlnaW4+IHNlY3VyaXR5T3JpZ2luID0gZG9jdW1lbnQuc2VjdXJpdHlP
cmlnaW4oKTsKICAgICBib29sIGlzTG9jYWxTdG9yYWdlID0gd2luZG93LT5vcHRpb25hbExvY2Fs
U3RvcmFnZSgpID09IHN0b3JhZ2U7CiAgICAgcmV0dXJuIHN0b3JhZ2VJZChzZWN1cml0eU9yaWdp
bi5nZXQoKSwgaXNMb2NhbFN0b3JhZ2UpLT50b0pTT05TdHJpbmcoKTsKIH0KQEAgLTIwNSw4ICsy
MDUsOCBAQCBQYXNzUmVmUHRyPFN0b3JhZ2VBcmVhPiBJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQ6
OmZpbmRTdG9yYWdlQXJlYShFcnJvclN0cmluZyogZQogCiAgICAgUGFnZSogcGFnZSA9IG1fcGFn
ZUFnZW50LT5wYWdlKCk7CiAgICAgaWYgKGlzTG9jYWxTdG9yYWdlKQotICAgICAgICByZXR1cm4g
cGFnZS0+Z3JvdXAoKS5sb2NhbFN0b3JhZ2UoKS0+c3RvcmFnZUFyZWEodGFyZ2V0RnJhbWUtPmRv
Y3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCkpOwotICAgIHJldHVybiBwYWdlLT5zZXNzaW9uU3Rv
cmFnZSgpLT5zdG9yYWdlQXJlYSh0YXJnZXRGcmFtZS0+ZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmln
aW4oKSk7CisgICAgICAgIHJldHVybiBwYWdlLT5ncm91cCgpLmxvY2FsU3RvcmFnZSgpLT5zdG9y
YWdlQXJlYSh0YXJnZXRGcmFtZS0+ZG9jdW1lbnQoKS5zZWN1cml0eU9yaWdpbigpKTsKKyAgICBy
ZXR1cm4gcGFnZS0+c2Vzc2lvblN0b3JhZ2UoKS0+c3RvcmFnZUFyZWEodGFyZ2V0RnJhbWUtPmRv
Y3VtZW50KCkuc2VjdXJpdHlPcmlnaW4oKSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVuZENs
aWVudExvY2FsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JGcm9udGVu
ZENsaWVudExvY2FsLmNwcAppbmRleCA0OGEyNjE3Li5mMWMzYmJkIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwu
Y3BwCkBAIC0yMTIsNyArMjEyLDcgQEAgdm9pZCBJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2Fs
OjpvcGVuSW5OZXdUYWIoY29uc3QgU3RyaW5nJiB1cmwpCiB7CiAgICAgVXNlckdlc3R1cmVJbmRp
Y2F0b3IgaW5kaWNhdG9yKERlZmluaXRlbHlQcm9jZXNzaW5nVXNlckdlc3R1cmUpOwogICAgIEZy
YW1lJiBtYWluRnJhbWUgPSBtX2luc3BlY3RvckNvbnRyb2xsZXItPmluc3BlY3RlZFBhZ2UoKS5t
YWluRnJhbWUoKTsKLSAgICBGcmFtZUxvYWRSZXF1ZXN0IHJlcXVlc3QobWFpbkZyYW1lLmRvY3Vt
ZW50KCktPnNlY3VyaXR5T3JpZ2luKCksIFJlc291cmNlUmVxdWVzdCgpLCAiX2JsYW5rIik7Cisg
ICAgRnJhbWVMb2FkUmVxdWVzdCByZXF1ZXN0KG1haW5GcmFtZS5kb2N1bWVudCgpLnNlY3VyaXR5
T3JpZ2luKCksIFJlc291cmNlUmVxdWVzdCgpLCAiX2JsYW5rIik7CiAKICAgICBib29sIGNyZWF0
ZWQ7CiAgICAgV2luZG93RmVhdHVyZXMgd2luZG93RmVhdHVyZXM7CkBAIC0yMjQsNyArMjI0LDcg
QEAgdm9pZCBJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsOjpvcGVuSW5OZXdUYWIoY29uc3Qg
U3RyaW5nJiB1cmwpCiAgICAgZnJhbWUtPnBhZ2UoKS0+c2V0T3BlbmVkQnlET00oKTsKIAogICAg
IC8vIEZJWE1FOiBXaHkgZG9lcyBvbmUgdXNlIG1haW5GcmFtZSBhbmQgdGhlIG90aGVyIGZyYW1l
PwotICAgIGZyYW1lLT5sb2FkZXIoKS5jaGFuZ2VMb2NhdGlvbihtYWluRnJhbWUuZG9jdW1lbnQo
KS0+c2VjdXJpdHlPcmlnaW4oKSwgZnJhbWUtPmRvY3VtZW50KCktPmNvbXBsZXRlVVJMKHVybCks
ICIiLCBMb2NrSGlzdG9yeTo6Tm8sIExvY2tCYWNrRm9yd2FyZExpc3Q6Ok5vKTsKKyAgICBmcmFt
ZS0+bG9hZGVyKCkuY2hhbmdlTG9jYXRpb24obWFpbkZyYW1lLmRvY3VtZW50KCkuc2VjdXJpdHlP
cmlnaW4oKSwgZnJhbWUtPmRvY3VtZW50KCkuY29tcGxldGVVUkwodXJsKSwgIiIsIExvY2tIaXN0
b3J5OjpObywgTG9ja0JhY2tGb3J3YXJkTGlzdDo6Tm8pOwogfQogCiB2b2lkIEluc3BlY3RvckZy
b250ZW5kQ2xpZW50TG9jYWw6Om1vdmVXaW5kb3dCeShmbG9hdCB4LCBmbG9hdCB5KQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckluZGV4ZWREQkFnZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5jcHAK
aW5kZXggN2ZkNjI5MS4uZjFlOTMwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckluZGV4ZWREQkFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuY3BwCkBAIC01ODIsNyArNTgyLDcgQEAgdm9p
ZCBJbnNwZWN0b3JJbmRleGVkREJBZ2VudDo6ZGlzYWJsZShFcnJvclN0cmluZyopCiAKIHN0YXRp
YyBEb2N1bWVudCogYXNzZXJ0RG9jdW1lbnQoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBGcmFt
ZSogZnJhbWUpCiB7Ci0gICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gZnJhbWUgPyBmcmFtZS0+ZG9j
dW1lbnQoKSA6IG51bGxwdHI7CisgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gZnJhbWUgPyAmZnJh
bWUtPmRvY3VtZW50KCkgOiBudWxscHRyOwogCiAgICAgaWYgKCFkb2N1bWVudCkKICAgICAgICAg
KmVycm9yU3RyaW5nID0gIk5vIGRvY3VtZW50IGZvciBnaXZlbiBmcmFtZSBmb3VuZCI7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24u
Y3BwCmluZGV4IGMwMzBiZjUuLjMzNjJjOTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwCkBAIC03ODYsMTQgKzc4Niwx
NCBAQCB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkQ29tbWl0TG9hZEltcGwoSW5z
dHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudAogI2VuZGlmCiAKICAgICAgICAgaWYgKEluc3Bl
Y3RvckRPTUFnZW50KiBkb21BZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMtPmluc3BlY3RvckRP
TUFnZW50KCkpCi0gICAgICAgICAgICBkb21BZ2VudC0+c2V0RG9jdW1lbnQocGFnZS0+bWFpbkZy
YW1lKCkuZG9jdW1lbnQoKSk7CisgICAgICAgICAgICBkb21BZ2VudC0+c2V0RG9jdW1lbnQoJnBh
Z2UtPm1haW5GcmFtZSgpLmRvY3VtZW50KCkpOwogCiAgICAgICAgIGlmIChJbnNwZWN0b3JMYXll
clRyZWVBZ2VudCogbGF5ZXJUcmVlQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLT5pbnNwZWN0
b3JMYXllclRyZWVBZ2VudCgpKQogICAgICAgICAgICAgbGF5ZXJUcmVlQWdlbnQtPnJlc2V0KCk7
CiAgICAgfQogCiAgICAgaWYgKEluc3BlY3RvckRPTUFnZW50KiBkb21BZ2VudCA9IGluc3RydW1l
bnRpbmdBZ2VudHMtPmluc3BlY3RvckRPTUFnZW50KCkpCi0gICAgICAgIGRvbUFnZW50LT5kaWRD
b21taXRMb2FkKGxvYWRlci0+ZnJhbWUoKS0+ZG9jdW1lbnQoKSk7CisgICAgICAgIGRvbUFnZW50
LT5kaWRDb21taXRMb2FkKCZsb2FkZXItPmZyYW1lKCktPmRvY3VtZW50KCkpOwogCiAgICAgaWYg
KEluc3BlY3RvclBhZ2VBZ2VudCogcGFnZUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy0+aW5z
cGVjdG9yUGFnZUFnZW50KCkpCiAgICAgICAgIHBhZ2VBZ2VudC0+ZnJhbWVOYXZpZ2F0ZWQobG9h
ZGVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JPdmVy
bGF5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JPdmVybGF5LmNwcApp
bmRleCAwMWQxNjcxLi4wNTE0NGQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yT3ZlcmxheS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3Rvck92ZXJsYXkuY3BwCkBAIC0zNTgsNyArMzU4LDcgQEAgdm9pZCBJbnNwZWN0b3JPdmVy
bGF5Ojp1cGRhdGUoKQogICAgIGRyYXdQYXVzZWRJbkRlYnVnZ2VyTWVzc2FnZSgpOwogCiAgICAg
Ly8gUG9zaXRpb24gRE9NIGVsZW1lbnRzLgotICAgIG92ZXJsYXlQYWdlKCktPm1haW5GcmFtZSgp
LmRvY3VtZW50KCktPnJlY2FsY1N0eWxlKFN0eWxlOjpGb3JjZSk7CisgICAgb3ZlcmxheVBhZ2Uo
KS0+bWFpbkZyYW1lKCkuZG9jdW1lbnQoKS5yZWNhbGNTdHlsZShTdHlsZTo6Rm9yY2UpOwogICAg
IGlmIChvdmVybGF5Vmlldy0+bmVlZHNMYXlvdXQoKSkKICAgICAgICAgb3ZlcmxheVZpZXctPmxh
eW91dCgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
UGFnZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdl
bnQuY3BwCmluZGV4IDQ1YmYwZWUuLjlmY2ZiYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwCkBAIC0yMDIsNyArMjAyLDcgQEAgYm9vbCBJ
bnNwZWN0b3JQYWdlQWdlbnQ6Om1haW5SZXNvdXJjZUNvbnRlbnQoRnJhbWUqIGZyYW1lLCBib29s
IHdpdGhCYXNlNjRFbmNvZGUKICAgICBSZWZQdHI8UmVzb3VyY2VCdWZmZXI+IGJ1ZmZlciA9IGZy
YW1lLT5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigpLT5tYWluUmVzb3VyY2VEYXRhKCk7CiAgICAg
aWYgKCFidWZmZXIpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBTdHJpbmcgdGV4dEVuY29k
aW5nTmFtZSA9IGZyYW1lLT5kb2N1bWVudCgpLT5pbnB1dEVuY29kaW5nKCk7CisgICAgU3RyaW5n
IHRleHRFbmNvZGluZ05hbWUgPSBmcmFtZS0+ZG9jdW1lbnQoKS5pbnB1dEVuY29kaW5nKCk7CiAK
ICAgICByZXR1cm4gSW5zcGVjdG9yUGFnZUFnZW50OjpkYXRhQ29udGVudChidWZmZXItPmRhdGEo
KSwgYnVmZmVyLT5zaXplKCksIHRleHRFbmNvZGluZ05hbWUsIHdpdGhCYXNlNjRFbmNvZGUsIHJl
c3VsdCk7CiB9CkBAIC0yNzUsMTEgKzI3NSwxMSBAQCBTdHJpbmcgSW5zcGVjdG9yUGFnZUFnZW50
Ojpzb3VyY2VNYXBVUkxGb3JSZXNvdXJjZShDYWNoZWRSZXNvdXJjZSogY2FjaGVkUmVzb3VyYwog
CiBDYWNoZWRSZXNvdXJjZSogSW5zcGVjdG9yUGFnZUFnZW50OjpjYWNoZWRSZXNvdXJjZShGcmFt
ZSogZnJhbWUsIGNvbnN0IFVSTCYgdXJsKQogewotICAgIENhY2hlZFJlc291cmNlKiBjYWNoZWRS
ZXNvdXJjZSA9IGZyYW1lLT5kb2N1bWVudCgpLT5jYWNoZWRSZXNvdXJjZUxvYWRlcigpLT5jYWNo
ZWRSZXNvdXJjZSh1cmwpOworICAgIENhY2hlZFJlc291cmNlKiBjYWNoZWRSZXNvdXJjZSA9IGZy
YW1lLT5kb2N1bWVudCgpLmNhY2hlZFJlc291cmNlTG9hZGVyKCktPmNhY2hlZFJlc291cmNlKHVy
bCk7CiAgICAgaWYgKCFjYWNoZWRSZXNvdXJjZSkgewogICAgICAgICBSZXNvdXJjZVJlcXVlc3Qg
cmVxdWVzdCh1cmwpOwogI2lmIEVOQUJMRShDQUNIRV9QQVJUSVRJT05JTkcpCi0gICAgICAgIHJl
cXVlc3Quc2V0Q2FjaGVQYXJ0aXRpb24oZnJhbWUtPmRvY3VtZW50KCktPnRvcE9yaWdpbigpLT5j
YWNoZVBhcnRpdGlvbigpKTsKKyAgICAgICAgcmVxdWVzdC5zZXRDYWNoZVBhcnRpdGlvbihmcmFt
ZS0+ZG9jdW1lbnQoKS50b3BPcmlnaW4oKS0+Y2FjaGVQYXJ0aXRpb24oKSk7CiAjZW5kaWYKICAg
ICAgICAgY2FjaGVkUmVzb3VyY2UgPSBtZW1vcnlDYWNoZSgpLT5yZXNvdXJjZUZvclJlcXVlc3Qo
cmVxdWVzdCwgZnJhbWUtPnBhZ2UoKS0+c2Vzc2lvbklEKCkpOwogICAgIH0KQEAgLTQyOSw3ICs0
MjksNyBAQCB2b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6bmF2aWdhdGUoRXJyb3JTdHJpbmcqLCBj
b25zdCBTdHJpbmcmIHVybCkKIHsKICAgICBVc2VyR2VzdHVyZUluZGljYXRvciBpbmRpY2F0b3Io
RGVmaW5pdGVseVByb2Nlc3NpbmdVc2VyR2VzdHVyZSk7CiAgICAgRnJhbWUmIGZyYW1lID0gbV9w
YWdlLT5tYWluRnJhbWUoKTsKLSAgICBmcmFtZS5sb2FkZXIoKS5jaGFuZ2VMb2NhdGlvbihmcmFt
ZS5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpLCBmcmFtZS5kb2N1bWVudCgpLT5jb21wbGV0
ZVVSTCh1cmwpLCAiIiwgTG9ja0hpc3Rvcnk6Ok5vLCBMb2NrQmFja0ZvcndhcmRMaXN0OjpObyk7
CisgICAgZnJhbWUubG9hZGVyKCkuY2hhbmdlTG9jYXRpb24oZnJhbWUuZG9jdW1lbnQoKS5zZWN1
cml0eU9yaWdpbigpLCBmcmFtZS5kb2N1bWVudCgpLmNvbXBsZXRlVVJMKHVybCksICIiLCBMb2Nr
SGlzdG9yeTo6Tm8sIExvY2tCYWNrRm9yd2FyZExpc3Q6Ok5vKTsKIH0KIAogc3RhdGljIFBhc3NS
ZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UGFnZTo6Q29va2llPiBidWlsZE9iamVjdEZv
ckNvb2tpZShjb25zdCBDb29raWUmIGNvb2tpZSkKQEAgLTQ2MSw3ICs0NjEsNyBAQCBzdGF0aWMg
VmVjdG9yPENhY2hlZFJlc291cmNlKj4gY2FjaGVkUmVzb3VyY2VzRm9yRnJhbWUoRnJhbWUqIGZy
YW1lKQogewogICAgIFZlY3RvcjxDYWNoZWRSZXNvdXJjZSo+IHJlc3VsdDsKIAotICAgIGZvciAo
YXV0byYgY2FjaGVkUmVzb3VyY2VIYW5kbGUgOiBmcmFtZS0+ZG9jdW1lbnQoKS0+Y2FjaGVkUmVz
b3VyY2VMb2FkZXIoKS0+YWxsQ2FjaGVkUmVzb3VyY2VzKCkudmFsdWVzKCkpIHsKKyAgICBmb3Ig
KGF1dG8mIGNhY2hlZFJlc291cmNlSGFuZGxlIDogZnJhbWUtPmRvY3VtZW50KCkuY2FjaGVkUmVz
b3VyY2VMb2FkZXIoKS0+YWxsQ2FjaGVkUmVzb3VyY2VzKCkudmFsdWVzKCkpIHsKICAgICAgICAg
YXV0byogY2FjaGVkUmVzb3VyY2UgPSBjYWNoZWRSZXNvdXJjZUhhbmRsZS5nZXQoKTsKICAgICAg
ICAgaWYgKGNhY2hlZFJlc291cmNlLT5yZXNvdXJjZVJlcXVlc3QoKS5oaWRkZW5Gcm9tSW5zcGVj
dG9yKCkpCiAgICAgICAgICAgICBjb250aW51ZTsKQEAgLTUxMSwxNyArNTExLDE3IEBAIHZvaWQg
SW5zcGVjdG9yUGFnZUFnZW50OjpnZXRDb29raWVzKEVycm9yU3RyaW5nKiwgUmVmUHRyPEluc3Bl
Y3Rvcjo6VHlwZUJ1aWxkZXI6CiAgICAgYm9vbCByYXdDb29raWVzSW1wbGVtZW50ZWQgPSBmYWxz
ZTsKIAogICAgIGZvciAoRnJhbWUqIGZyYW1lID0gbWFpbkZyYW1lKCk7IGZyYW1lOyBmcmFtZSA9
IGZyYW1lLT50cmVlKCkudHJhdmVyc2VOZXh0KG1haW5GcmFtZSgpKSkgewotICAgICAgICBEb2N1
bWVudCogZG9jdW1lbnQgPSBmcmFtZS0+ZG9jdW1lbnQoKTsKKyAgICAgICAgRG9jdW1lbnQmIGRv
Y3VtZW50ID0gZnJhbWUtPmRvY3VtZW50KCk7CiAKICAgICAgICAgZm9yIChhdXRvJiB1cmwgOiBh
bGxSZXNvdXJjZXNVUkxzRm9yRnJhbWUoZnJhbWUpKSB7CiAgICAgICAgICAgICBWZWN0b3I8Q29v
a2llPiBkb2NDb29raWVzTGlzdDsKLSAgICAgICAgICAgIHJhd0Nvb2tpZXNJbXBsZW1lbnRlZCA9
IGdldFJhd0Nvb2tpZXMoZG9jdW1lbnQsIFVSTChQYXJzZWRVUkxTdHJpbmcsIHVybCksIGRvY0Nv
b2tpZXNMaXN0KTsKKyAgICAgICAgICAgIHJhd0Nvb2tpZXNJbXBsZW1lbnRlZCA9IGdldFJhd0Nv
b2tpZXMoJmRvY3VtZW50LCBVUkwoUGFyc2VkVVJMU3RyaW5nLCB1cmwpLCBkb2NDb29raWVzTGlz
dCk7CiAKICAgICAgICAgICAgIGlmICghcmF3Q29va2llc0ltcGxlbWVudGVkKSB7CiAgICAgICAg
ICAgICAgICAgLy8gRklYTUU6IFdlIG5lZWQgZHVwbGljYXRpb24gY2hlY2tpbmcgZm9yIHRoZSBT
dHJpbmcgcmVwcmVzZW50YXRpb24gb2YgY29va2llcy4KICAgICAgICAgICAgICAgICAvLyBFeGNl
cHRpb25zIGFyZSB0aHJvd24gYnkgY29va2llKCkgaW4gc2FuZGJveGVkIGZyYW1lcy4gVGhhdCB3
b24ndCBoYXBwZW4gaGVyZQogICAgICAgICAgICAgICAgIC8vIGJlY2F1c2UgImRvY3VtZW50IiBp
cyB0aGUgZG9jdW1lbnQgb2YgdGhlIG1haW4gZnJhbWUgb2YgdGhlIHBhZ2UuCi0gICAgICAgICAg
ICAgICAgc3RyaW5nQ29va2llc0xpc3QuYXBwZW5kKGRvY3VtZW50LT5jb29raWUoQVNTRVJUX05P
X0VYQ0VQVElPTikpOworICAgICAgICAgICAgICAgIHN0cmluZ0Nvb2tpZXNMaXN0LmFwcGVuZChk
b2N1bWVudC5jb29raWUoQVNTRVJUX05PX0VYQ0VQVElPTikpOwogICAgICAgICAgICAgfSBlbHNl
IHsKICAgICAgICAgICAgICAgICBpbnQgY29va2llc1NpemUgPSBkb2NDb29raWVzTGlzdC5zaXpl
KCk7CiAgICAgICAgICAgICAgICAgZm9yIChpbnQgaSA9IDA7IGkgPCBjb29raWVzU2l6ZTsgaSsr
KSB7CkBAIC01NDMsNyArNTQzLDcgQEAgdm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6OmRlbGV0ZUNv
b2tpZShFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgY29va2llTmFtZSwgY28KIHsKICAgICBV
UkwgcGFyc2VkVVJMKFBhcnNlZFVSTFN0cmluZywgdXJsKTsKICAgICBmb3IgKEZyYW1lKiBmcmFt
ZSA9ICZtX3BhZ2UtPm1haW5GcmFtZSgpOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgpLnRy
YXZlcnNlTmV4dCgmbV9wYWdlLT5tYWluRnJhbWUoKSkpCi0gICAgICAgIFdlYkNvcmU6OmRlbGV0
ZUNvb2tpZShmcmFtZS0+ZG9jdW1lbnQoKSwgcGFyc2VkVVJMLCBjb29raWVOYW1lKTsKKyAgICAg
ICAgV2ViQ29yZTo6ZGVsZXRlQ29va2llKCZmcmFtZS0+ZG9jdW1lbnQoKSwgcGFyc2VkVVJMLCBj
b29raWVOYW1lKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JQYWdlQWdlbnQ6OmdldFJlc291cmNlVHJl
ZShFcnJvclN0cmluZyosIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpQYWdlOjpGcmFt
ZVJlc291cmNlVHJlZT4mIG9iamVjdCkKQEAgLTYzOCw3ICs2MzgsNyBAQCB2b2lkIEluc3BlY3Rv
clBhZ2VBZ2VudDo6c2VhcmNoSW5SZXNvdXJjZXMoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcm
IHRleHQsIGNvbgogICAgICAgICBpZiAobWFpblJlc291cmNlQ29udGVudChmcmFtZSwgZmFsc2Us
ICZjb250ZW50KSkgewogICAgICAgICAgICAgaW50IG1hdGNoZXNDb3VudCA9IENvbnRlbnRTZWFy
Y2hVdGlsaXRpZXM6OmNvdW50UmVndWxhckV4cHJlc3Npb25NYXRjaGVzKHJlZ2V4LCBjb250ZW50
KTsKICAgICAgICAgICAgIGlmIChtYXRjaGVzQ291bnQpCi0gICAgICAgICAgICAgICAgc2VhcmNo
UmVzdWx0cy0+YWRkSXRlbShidWlsZE9iamVjdEZvclNlYXJjaFJlc3VsdChmcmFtZUlkKGZyYW1l
KSwgZnJhbWUtPmRvY3VtZW50KCktPnVybCgpLCBtYXRjaGVzQ291bnQpKTsKKyAgICAgICAgICAg
ICAgICBzZWFyY2hSZXN1bHRzLT5hZGRJdGVtKGJ1aWxkT2JqZWN0Rm9yU2VhcmNoUmVzdWx0KGZy
YW1lSWQoZnJhbWUpLCBmcmFtZS0+ZG9jdW1lbnQoKS51cmwoKSwgbWF0Y2hlc0NvdW50KSk7CiAg
ICAgICAgIH0KICAgICB9CiAKQEAgLTY1MSw3ICs2NTEsNyBAQCB2b2lkIEluc3BlY3RvclBhZ2VB
Z2VudDo6c2V0RG9jdW1lbnRDb250ZW50KEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29uc3Qg
U3RyaQogICAgIGlmICghZnJhbWUpCiAgICAgICAgIHJldHVybjsKIAotICAgIERvY3VtZW50KiBk
b2N1bWVudCA9IGZyYW1lLT5kb2N1bWVudCgpOworICAgIERvY3VtZW50KiBkb2N1bWVudCA9ICZm
cmFtZS0+ZG9jdW1lbnQoKTsKICAgICBpZiAoIWRvY3VtZW50KSB7CiAgICAgICAgICplcnJvclN0
cmluZyA9ICJObyBEb2N1bWVudCBpbnN0YW5jZSB0byBzZXQgSFRNTCBmb3IiOwogICAgICAgICBy
ZXR1cm47CkBAIC04MzEsNyArODMxLDcgQEAgU3RyaW5nIEluc3BlY3RvclBhZ2VBZ2VudDo6bG9h
ZGVySWQoRG9jdW1lbnRMb2FkZXIqIGxvYWRlcikKIEZyYW1lKiBJbnNwZWN0b3JQYWdlQWdlbnQ6
OmZpbmRGcmFtZVdpdGhTZWN1cml0eU9yaWdpbihjb25zdCBTdHJpbmcmIG9yaWdpblJhd1N0cmlu
ZykKIHsKICAgICBmb3IgKEZyYW1lKiBmcmFtZSA9ICZtX3BhZ2UtPm1haW5GcmFtZSgpOyBmcmFt
ZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgpLnRyYXZlcnNlTmV4dCgpKSB7Ci0gICAgICAgIFJlZlB0
cjxTZWN1cml0eU9yaWdpbj4gZG9jdW1lbnRPcmlnaW4gPSBmcmFtZS0+ZG9jdW1lbnQoKS0+c2Vj
dXJpdHlPcmlnaW4oKTsKKyAgICAgICAgUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBkb2N1bWVudE9y
aWdpbiA9IGZyYW1lLT5kb2N1bWVudCgpLnNlY3VyaXR5T3JpZ2luKCk7CiAgICAgICAgIGlmIChk
b2N1bWVudE9yaWdpbi0+dG9SYXdTdHJpbmcoKSA9PSBvcmlnaW5SYXdTdHJpbmcpCiAgICAgICAg
ICAgICByZXR1cm4gZnJhbWU7CiAgICAgfQpAQCAtOTQ1LDkgKzk0NSw5IEBAIFBhc3NSZWZQdHI8
SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UGFnZTo6RnJhbWU+IEluc3BlY3RvclBhZ2VBZ2VudDo6
YnVpbGRPYmplY3RGCiAgICAgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlBhZ2U6OkZy
YW1lPiBmcmFtZU9iamVjdCA9IEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlBhZ2U6OkZyYW1lOjpj
cmVhdGUoKQogICAgICAgICAuc2V0SWQoZnJhbWVJZChmcmFtZSkpCiAgICAgICAgIC5zZXRMb2Fk
ZXJJZChsb2FkZXJJZChmcmFtZS0+bG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKSkpCi0gICAgICAg
IC5zZXRVcmwoZnJhbWUtPmRvY3VtZW50KCktPnVybCgpLnN0cmluZygpKQorICAgICAgICAuc2V0
VXJsKGZyYW1lLT5kb2N1bWVudCgpLnVybCgpLnN0cmluZygpKQogICAgICAgICAuc2V0TWltZVR5
cGUoZnJhbWUtPmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCktPnJlc3BvbnNlTUlNRVR5cGUoKSkK
LSAgICAgICAgLnNldFNlY3VyaXR5T3JpZ2luKGZyYW1lLT5kb2N1bWVudCgpLT5zZWN1cml0eU9y
aWdpbigpLT50b1Jhd1N0cmluZygpKTsKKyAgICAgICAgLnNldFNlY3VyaXR5T3JpZ2luKGZyYW1l
LT5kb2N1bWVudCgpLnNlY3VyaXR5T3JpZ2luKCktPnRvUmF3U3RyaW5nKCkpOwogICAgIGlmIChm
cmFtZS0+dHJlZSgpLnBhcmVudCgpKQogICAgICAgICBmcmFtZU9iamVjdC0+c2V0UGFyZW50SWQo
ZnJhbWVJZChmcmFtZS0+dHJlZSgpLnBhcmVudCgpKSk7CiAgICAgaWYgKGZyYW1lLT5vd25lckVs
ZW1lbnQoKSkgewpAQCAtMTAxOSwxMSArMTAxOSwxMCBAQCB2b2lkIEluc3BlY3RvclBhZ2VBZ2Vu
dDo6c2V0RW11bGF0ZWRNZWRpYShFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgbWVkaWEpCiAg
ICAgICAgIHJldHVybjsKIAogICAgIG1fZW11bGF0ZWRNZWRpYSA9IG1lZGlhOwotICAgIERvY3Vt
ZW50KiBkb2N1bWVudCA9IG1fcGFnZS0+bWFpbkZyYW1lKCkuZG9jdW1lbnQoKTsKLSAgICBpZiAo
ZG9jdW1lbnQpIHsKLSAgICAgICAgZG9jdW1lbnQtPnN0eWxlUmVzb2x2ZXJDaGFuZ2VkKFJlY2Fs
Y1N0eWxlSW1tZWRpYXRlbHkpOwotICAgICAgICBkb2N1bWVudC0+dXBkYXRlTGF5b3V0KCk7Ci0g
ICAgfQorICAgIERvY3VtZW50JiBkb2N1bWVudCA9IG1fcGFnZS0+bWFpbkZyYW1lKCkuZG9jdW1l
bnQoKTsKKyAgICBBU1NFUlQoZG9jdW1lbnQpOworICAgIGRvY3VtZW50LnN0eWxlUmVzb2x2ZXJD
aGFuZ2VkKFJlY2FsY1N0eWxlSW1tZWRpYXRlbHkpOworICAgIGRvY3VtZW50LnVwZGF0ZUxheW91
dCgpOwogfQogCiB2b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6YXBwbHlFbXVsYXRlZE1lZGlhKFN0
cmluZyogbWVkaWEpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yUmVzb3VyY2VBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
UmVzb3VyY2VBZ2VudC5jcHAKaW5kZXggYjcyMDgzNC4uNTk5OWU3MSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmNwcApAQCAtMzIz
LDcgKzMyMyw3IEBAIHZvaWQgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6d2lsbFNlbmRSZXF1ZXN0
KHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgRG9jdW1lbnRMCiAKICAgICBJbnNwZWN0b3I6OlR5
cGVCdWlsZGVyOjpQYWdlOjpSZXNvdXJjZVR5cGU6OkVudW0gcmVzb3VyY2VUeXBlID0gSW5zcGVj
dG9yUGFnZUFnZW50OjpyZXNvdXJjZVR5cGVKc29uKHR5cGUpOwogCi0gICAgUmVmUHRyPEluc3Bl
Y3Rvcjo6VHlwZUJ1aWxkZXI6Ok5ldHdvcms6OkluaXRpYXRvcj4gaW5pdGlhdG9yT2JqZWN0ID0g
YnVpbGRJbml0aWF0b3JPYmplY3QobG9hZGVyLT5mcmFtZSgpID8gbG9hZGVyLT5mcmFtZSgpLT5k
b2N1bWVudCgpIDogbnVsbHB0cik7CisgICAgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6
Ok5ldHdvcms6OkluaXRpYXRvcj4gaW5pdGlhdG9yT2JqZWN0ID0gYnVpbGRJbml0aWF0b3JPYmpl
Y3QobG9hZGVyLT5mcmFtZSgpID8gJmxvYWRlci0+ZnJhbWUoKS0+ZG9jdW1lbnQoKSA6IG51bGxw
dHIpOwogICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyLT5yZXF1ZXN0V2lsbEJlU2VudChyZXF1ZXN0
SWQsIG1fcGFnZUFnZW50LT5mcmFtZUlkKGxvYWRlci0+ZnJhbWUoKSksIG1fcGFnZUFnZW50LT5s
b2FkZXJJZChsb2FkZXIpLCBsb2FkZXItPnVybCgpLnN0cmluZygpLCBidWlsZE9iamVjdEZvclJl
c291cmNlUmVxdWVzdChyZXF1ZXN0KSwgY3VycmVudFRpbWUoKSwgaW5pdGlhdG9yT2JqZWN0LCBi
dWlsZE9iamVjdEZvclJlc291cmNlUmVzcG9uc2UocmVkaXJlY3RSZXNwb25zZSwgbG9hZGVyKSwg
dHlwZSAhPSBJbnNwZWN0b3JQYWdlQWdlbnQ6Ok90aGVyUmVzb3VyY2UgPyAmcmVzb3VyY2VUeXBl
IDogbnVsbHB0cik7CiB9CiAKQEAgLTQwNiw3ICs0MDYsNyBAQCB2b2lkIEluc3BlY3RvclJlc291
cmNlQWdlbnQ6OmRpZEZpbmlzaExvYWRpbmcodW5zaWduZWQgbG9uZyBpZGVudGlmaWVyLCBEb2N1
bWVudAogICAgIFN0cmluZyByZXF1ZXN0SWQgPSBJZGVudGlmaWVyc0ZhY3Rvcnk6OnJlcXVlc3RJ
ZChpZGVudGlmaWVyKTsKICAgICBpZiAobV9yZXNvdXJjZXNEYXRhLT5yZXNvdXJjZVR5cGUocmVx
dWVzdElkKSA9PSBJbnNwZWN0b3JQYWdlQWdlbnQ6OkRvY3VtZW50UmVzb3VyY2UpIHsKICAgICAg
ICAgUmVmUHRyPFJlc291cmNlQnVmZmVyPiBidWZmZXIgPSBsb2FkZXItPmZyYW1lTG9hZGVyKCkt
PmRvY3VtZW50TG9hZGVyKCktPm1haW5SZXNvdXJjZURhdGEoKTsKLSAgICAgICAgbV9yZXNvdXJj
ZXNEYXRhLT5hZGRSZXNvdXJjZVNoYXJlZEJ1ZmZlcihyZXF1ZXN0SWQsIGJ1ZmZlciA/IGJ1ZmZl
ci0+c2hhcmVkQnVmZmVyKCkgOiBudWxscHRyLCBsb2FkZXItPmZyYW1lKCktPmRvY3VtZW50KCkt
PmlucHV0RW5jb2RpbmcoKSk7CisgICAgICAgIG1fcmVzb3VyY2VzRGF0YS0+YWRkUmVzb3VyY2VT
aGFyZWRCdWZmZXIocmVxdWVzdElkLCBidWZmZXIgPyBidWZmZXItPnNoYXJlZEJ1ZmZlcigpIDog
bnVsbHB0ciwgbG9hZGVyLT5mcmFtZSgpLT5kb2N1bWVudCgpLmlucHV0RW5jb2RpbmcoKSk7CiAg
ICAgfQogCiAgICAgbV9yZXNvdXJjZXNEYXRhLT5tYXliZURlY29kZURhdGFUb0NvbnRlbnQocmVx
dWVzdElkKTsKQEAgLTQzNCw5ICs0MzQsMTAgQEAgdm9pZCBJbnNwZWN0b3JSZXNvdXJjZUFnZW50
OjpkaWRGYWlsTG9hZGluZyh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIERvY3VtZW50TG8KIAog
ICAgIGlmIChtX3Jlc291cmNlc0RhdGEtPnJlc291cmNlVHlwZShyZXF1ZXN0SWQpID09IEluc3Bl
Y3RvclBhZ2VBZ2VudDo6RG9jdW1lbnRSZXNvdXJjZSkgewogICAgICAgICBGcmFtZSogZnJhbWUg
PSBsb2FkZXIgPyBsb2FkZXItPmZyYW1lKCkgOiBudWxscHRyOwotICAgICAgICBpZiAoZnJhbWUg
JiYgZnJhbWUtPmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCkgJiYgZnJhbWUtPmRvY3VtZW50KCkp
IHsKKyAgICAgICAgaWYgKGZyYW1lICYmIGZyYW1lLT5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigp
KSB7CisgICAgICAgICAgICBBU1NFUlQoZnJhbWUtPmRvY3VtZW50KCkpOwogICAgICAgICAgICAg
UmVmUHRyPFJlc291cmNlQnVmZmVyPiBidWZmZXIgPSBmcmFtZS0+bG9hZGVyKCkuZG9jdW1lbnRM
b2FkZXIoKS0+bWFpblJlc291cmNlRGF0YSgpOwotICAgICAgICAgICAgbV9yZXNvdXJjZXNEYXRh
LT5hZGRSZXNvdXJjZVNoYXJlZEJ1ZmZlcihyZXF1ZXN0SWQsIGJ1ZmZlciA/IGJ1ZmZlci0+c2hh
cmVkQnVmZmVyKCkgOiBudWxscHRyLCBmcmFtZS0+ZG9jdW1lbnQoKS0+aW5wdXRFbmNvZGluZygp
KTsKKyAgICAgICAgICAgIG1fcmVzb3VyY2VzRGF0YS0+YWRkUmVzb3VyY2VTaGFyZWRCdWZmZXIo
cmVxdWVzdElkLCBidWZmZXIgPyBidWZmZXItPnNoYXJlZEJ1ZmZlcigpIDogbnVsbHB0ciwgZnJh
bWUtPmRvY3VtZW50KCkuaW5wdXRFbmNvZGluZygpKTsKICAgICAgICAgfQogICAgIH0KIApAQCAt
NDU4LDcgKzQ1OSw3IEBAIHZvaWQgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6ZGlkTG9hZFJlc291
cmNlRnJvbU1lbW9yeUNhY2hlKERvY3VtZW50TG9hZGVyKiBsb2FkCiAgICAgICAgIG1fcmVzb3Vy
Y2VzRGF0YS0+cmV1c2VYSFJSZXBsYXlEYXRhKHJlcXVlc3RJZCwgcmF3UmVxdWVzdElkKTsKICAg
ICB9CiAKLSAgICBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6TmV0d29yazo6SW5pdGlh
dG9yPiBpbml0aWF0b3JPYmplY3QgPSBidWlsZEluaXRpYXRvck9iamVjdChsb2FkZXItPmZyYW1l
KCkgPyBsb2FkZXItPmZyYW1lKCktPmRvY3VtZW50KCkgOiBudWxscHRyKTsKKyAgICBSZWZQdHI8
SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6TmV0d29yazo6SW5pdGlhdG9yPiBpbml0aWF0b3JPYmpl
Y3QgPSBidWlsZEluaXRpYXRvck9iamVjdChsb2FkZXItPmZyYW1lKCkgPyAmbG9hZGVyLT5mcmFt
ZSgpLT5kb2N1bWVudCgpIDogbnVsbHB0cik7CiAKICAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlci0+
cmVxdWVzdFNlcnZlZEZyb21NZW1vcnlDYWNoZShyZXF1ZXN0SWQsIGZyYW1lSWQsIGxvYWRlcklk
LCBsb2FkZXItPnVybCgpLnN0cmluZygpLCBjdXJyZW50VGltZSgpLCBpbml0aWF0b3JPYmplY3Qs
IGJ1aWxkT2JqZWN0Rm9yQ2FjaGVkUmVzb3VyY2UocmVzb3VyY2UsIGxvYWRlcikpOwogfQpAQCAt
Njk2LDcgKzY5Nyw3IEBAIHZvaWQgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6Z2V0UmVzcG9uc2VC
b2R5KEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29uc3QgU3RyCiAKIHZvaWQgSW5zcGVjdG9y
UmVzb3VyY2VBZ2VudDo6cmVwbGF5WEhSKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiByZXF1
ZXN0SWQpCiB7Ci0gICAgUmVmUHRyPFhNTEh0dHBSZXF1ZXN0PiB4aHIgPSBYTUxIdHRwUmVxdWVz
dDo6Y3JlYXRlKCptX3BhZ2VBZ2VudC0+bWFpbkZyYW1lKCktPmRvY3VtZW50KCkpOworICAgIFJl
ZlB0cjxYTUxIdHRwUmVxdWVzdD4geGhyID0gWE1MSHR0cFJlcXVlc3Q6OmNyZWF0ZShtX3BhZ2VB
Z2VudC0+bWFpbkZyYW1lKCktPmRvY3VtZW50KCkpOwogICAgIFN0cmluZyBhY3R1YWxSZXF1ZXN0
SWQgPSByZXF1ZXN0SWQ7CiAKICAgICBYSFJSZXBsYXlEYXRhKiB4aHJSZXBsYXlEYXRhID0gbV9y
ZXNvdXJjZXNEYXRhLT54aHJSZXBsYXlEYXRhKHJlcXVlc3RJZCk7CkBAIC03MDUsNyArNzA2LDcg
QEAgdm9pZCBJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpyZXBsYXlYSFIoRXJyb3JTdHJpbmcqLCBj
b25zdCBTdHJpbmcmIHJlcXVlc3RJZCkKIAogICAgIFJlc291cmNlUmVxdWVzdCByZXF1ZXN0KHho
clJlcGxheURhdGEtPnVybCgpKTsKICNpZiBFTkFCTEUoQ0FDSEVfUEFSVElUSU9OSU5HKQotICAg
IHJlcXVlc3Quc2V0Q2FjaGVQYXJ0aXRpb24obV9wYWdlQWdlbnQtPm1haW5GcmFtZSgpLT5kb2N1
bWVudCgpLT50b3BPcmlnaW4oKS0+Y2FjaGVQYXJ0aXRpb24oKSk7CisgICAgcmVxdWVzdC5zZXRD
YWNoZVBhcnRpdGlvbihtX3BhZ2VBZ2VudC0+bWFpbkZyYW1lKCktPmRvY3VtZW50KCkudG9wT3Jp
Z2luKCktPmNhY2hlUGFydGl0aW9uKCkpOwogI2VuZGlmCiAKICAgICBDYWNoZWRSZXNvdXJjZSog
Y2FjaGVkUmVzb3VyY2UgPSBtZW1vcnlDYWNoZSgpLT5yZXNvdXJjZUZvclJlcXVlc3QocmVxdWVz
dCwgbV9wYWdlQWdlbnQtPnBhZ2UoKS0+c2Vzc2lvbklEKCkpOwpAQCAtNzUxLDcgKzc1Miw3IEBA
IHZvaWQgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6bG9hZFJlc291cmNlKEVycm9yU3RyaW5nKiBl
cnJvclN0cmluZywgY29uc3QgU3RyaW5nCiAgICAgaWYgKCFmcmFtZSkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gZnJhbWUtPmRvY3VtZW50KCk7CisgICAgRG9j
dW1lbnQqIGRvY3VtZW50ID0gJmZyYW1lLT5kb2N1bWVudCgpOwogICAgIGlmICghZG9jdW1lbnQp
IHsKICAgICAgICAgKmVycm9yU3RyaW5nID0gQVNDSUlMaXRlcmFsKCJObyBEb2N1bWVudCBpbnN0
YW5jZSBmb3IgdGhlIHNwZWNpZmllZCBmcmFtZSIpOwogICAgICAgICByZXR1cm47CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvUGFnZVNjcmlwdERlYnVnU2VydmVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9QYWdlU2NyaXB0RGVidWdTZXJ2ZXIuY3BwCmluZGV4
IGU1ODlhNGQuLjRjOWRkMDcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Q
YWdlU2NyaXB0RGVidWdTZXJ2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Q
YWdlU2NyaXB0RGVidWdTZXJ2ZXIuY3BwCkBAIC0xNzUsMTMgKzE3NSwxMyBAQCB2b2lkIFBhZ2VT
Y3JpcHREZWJ1Z1NlcnZlcjo6c2V0SmF2YVNjcmlwdFBhdXNlZChGcmFtZSogZnJhbWUsIGJvb2wg
cGF1c2VkKQogCiAgICAgZnJhbWUtPnNjcmlwdCgpLnNldFBhdXNlZChwYXVzZWQpOwogCi0gICAg
RG9jdW1lbnQqIGRvY3VtZW50ID0gZnJhbWUtPmRvY3VtZW50KCk7CisgICAgRG9jdW1lbnQmIGRv
Y3VtZW50ID0gZnJhbWUtPmRvY3VtZW50KCk7CiAgICAgaWYgKHBhdXNlZCkgewotICAgICAgICBk
b2N1bWVudC0+c3VzcGVuZFNjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlckNhbGxiYWNrcygpOwot
ICAgICAgICBkb2N1bWVudC0+c3VzcGVuZEFjdGl2ZURPTU9iamVjdHMoQWN0aXZlRE9NT2JqZWN0
OjpKYXZhU2NyaXB0RGVidWdnZXJQYXVzZWQpOworICAgICAgICBkb2N1bWVudC5zdXNwZW5kU2Ny
aXB0ZWRBbmltYXRpb25Db250cm9sbGVyQ2FsbGJhY2tzKCk7CisgICAgICAgIGRvY3VtZW50LnN1
c3BlbmRBY3RpdmVET01PYmplY3RzKEFjdGl2ZURPTU9iamVjdDo6SmF2YVNjcmlwdERlYnVnZ2Vy
UGF1c2VkKTsKICAgICB9IGVsc2UgewotICAgICAgICBkb2N1bWVudC0+cmVzdW1lQWN0aXZlRE9N
T2JqZWN0cyhBY3RpdmVET01PYmplY3Q6OkphdmFTY3JpcHREZWJ1Z2dlclBhdXNlZCk7Ci0gICAg
ICAgIGRvY3VtZW50LT5yZXN1bWVTY3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xsZXJDYWxsYmFja3Mo
KTsKKyAgICAgICAgZG9jdW1lbnQucmVzdW1lQWN0aXZlRE9NT2JqZWN0cyhBY3RpdmVET01PYmpl
Y3Q6OkphdmFTY3JpcHREZWJ1Z2dlclBhdXNlZCk7CisgICAgICAgIGRvY3VtZW50LnJlc3VtZVNj
cmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlckNhbGxiYWNrcygpOwogICAgIH0KIAogICAgIHNldEph
dmFTY3JpcHRQYXVzZWQoZnJhbWUtPnZpZXcoKSwgcGF1c2VkKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvRG9jdW1lbnRMb2FkZXIuY3BwCmluZGV4IDllMDBlODEuLmYxYTBhNmIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcApAQCAtMTgyLDcgKzE4Miw3IEBAIFBhc3NS
ZWZQdHI8UmVzb3VyY2VCdWZmZXI+IERvY3VtZW50TG9hZGVyOjptYWluUmVzb3VyY2VEYXRhKCkg
Y29uc3QKIERvY3VtZW50KiBEb2N1bWVudExvYWRlcjo6ZG9jdW1lbnQoKSBjb25zdAogewogICAg
IGlmIChtX2ZyYW1lICYmIG1fZnJhbWUtPmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCkgPT0gdGhp
cykKLSAgICAgICAgcmV0dXJuIG1fZnJhbWUtPmRvY3VtZW50KCk7CisgICAgICAgIHJldHVybiAm
bV9mcmFtZS0+ZG9jdW1lbnQoKTsKICAgICByZXR1cm4gMDsKIH0KIApAQCAtMjkwLDkgKzI5MCw5
IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OnN0b3BMb2FkaW5nKCkKICAgICBpZiAobV9jb21taXR0
ZWQpIHsKICAgICAgICAgLy8gQXR0ZW1wdCB0byBzdG9wIHRoZSBmcmFtZSBpZiB0aGUgZG9jdW1l
bnQgbG9hZGVyIGlzIGxvYWRpbmcsIG9yIGlmIGl0IGlzIGRvbmUgbG9hZGluZyBidXQKICAgICAg
ICAgLy8gc3RpbGwgIHBhcnNpbmcuIEZhaWx1cmUgdG8gZG8gc28gY2FuIGNhdXNlIGEgd29ybGQg
bGVhay4KLSAgICAgICAgRG9jdW1lbnQqIGRvYyA9IG1fZnJhbWUtPmRvY3VtZW50KCk7CisgICAg
ICAgIERvY3VtZW50JiBkb2MgPSBtX2ZyYW1lLT5kb2N1bWVudCgpOwogICAgICAgICAKLSAgICAg
ICAgaWYgKGxvYWRpbmcgfHwgZG9jLT5wYXJzaW5nKCkpCisgICAgICAgIGlmIChsb2FkaW5nIHx8
IGRvYy5wYXJzaW5nKCkpCiAgICAgICAgICAgICBtX2ZyYW1lLT5sb2FkZXIoKS5zdG9wTG9hZGlu
ZyhVbmxvYWRFdmVudFBvbGljeU5vbmUpOwogICAgIH0KIApAQCAtNDQ3LDcgKzQ0Nyw3IEBAIHZv
aWQgRG9jdW1lbnRMb2FkZXI6OmZpbmlzaGVkTG9hZGluZyhkb3VibGUgZmluaXNoVGltZSkKICAg
ICAvLyBJZiB0aGUgZG9jdW1lbnQgc3BlY2lmaWVkIGFuIGFwcGxpY2F0aW9uIGNhY2hlIG1hbmlm
ZXN0LCBpdCB2aW9sYXRlcyB0aGUgYXV0aG9yJ3MgaW50ZW50IGlmIHdlIHN0b3JlIGl0IGluIHRo
ZSBtZW1vcnkgY2FjaGUKICAgICAvLyBhbmQgZGVueSB0aGUgYXBwY2FjaGUgdGhlIGNoYW5jZSB0
byBpbnRlcmNlcHQgaXQgaW4gdGhlIGZ1dHVyZSwgc28gcmVtb3ZlIGZyb20gdGhlIG1lbW9yeSBj
YWNoZS4KICAgICBpZiAobV9mcmFtZSkgewotICAgICAgICBpZiAobV9tYWluUmVzb3VyY2UgJiYg
bV9mcmFtZS0+ZG9jdW1lbnQoKS0+aGFzTWFuaWZlc3QoKSkKKyAgICAgICAgaWYgKG1fbWFpblJl
c291cmNlICYmIG1fZnJhbWUtPmRvY3VtZW50KCkuaGFzTWFuaWZlc3QoKSkKICAgICAgICAgICAg
IG1lbW9yeUNhY2hlKCktPnJlbW92ZShtX21haW5SZXNvdXJjZS5nZXQoKSk7CiAgICAgfQogICAg
IG1fYXBwbGljYXRpb25DYWNoZUhvc3QtPmZpbmlzaGVkTG9hZGluZ01haW5SZXNvdXJjZSgpOwpA
QCAtNTM5LDcgKzUzOSw3IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OndpbGxTZW5kUmVxdWVzdChS
ZXNvdXJjZVJlcXVlc3QmIG5ld1JlcXVlc3QsIGNvbnN0IFJlc291cmNlCiAKICAgICBGcmFtZSYg
dG9wRnJhbWUgPSBtX2ZyYW1lLT50cmVlKCkudG9wKCk7CiAgICAgaWYgKCZ0b3BGcmFtZSAhPSBt
X2ZyYW1lKSB7Ci0gICAgICAgIGlmICghZnJhbWVMb2FkZXIoKS0+bWl4ZWRDb250ZW50Q2hlY2tl
cigpLmNhbkRpc3BsYXlJbnNlY3VyZUNvbnRlbnQodG9wRnJhbWUuZG9jdW1lbnQoKS0+c2VjdXJp
dHlPcmlnaW4oKSwgbmV3UmVxdWVzdC51cmwoKSkpIHsKKyAgICAgICAgaWYgKCFmcmFtZUxvYWRl
cigpLT5taXhlZENvbnRlbnRDaGVja2VyKCkuY2FuRGlzcGxheUluc2VjdXJlQ29udGVudCh0b3BG
cmFtZS5kb2N1bWVudCgpLnNlY3VyaXR5T3JpZ2luKCksIG5ld1JlcXVlc3QudXJsKCkpKSB7CiAg
ICAgICAgICAgICBjYW5jZWxNYWluUmVzb3VyY2VMb2FkKGZyYW1lTG9hZGVyKCktPmNhbmNlbGxl
ZEVycm9yKG5ld1JlcXVlc3QpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpAQCAt
NjE1LDggKzYxNSw4IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OnJlc3BvbnNlUmVjZWl2ZWQoQ2Fj
aGVkUmVzb3VyY2UqIHJlc291cmNlLCBjb25zdCBSZXNvdXJjZVJlCiAgICAgICAgIGlmIChmcmFt
ZUxvYWRlcigpLT5zaG91bGRJbnRlcnJ1cHRMb2FkRm9yWEZyYW1lT3B0aW9ucyhjb250ZW50LCBy
ZXNwb25zZS51cmwoKSwgaWRlbnRpZmllcikpIHsKICAgICAgICAgICAgIEluc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbjo6Y29udGludWVBZnRlclhGcmFtZU9wdGlvbnNEZW5pZWQobV9mcmFtZSwgdGhp
cywgaWRlbnRpZmllciwgcmVzcG9uc2UpOwogICAgICAgICAgICAgU3RyaW5nIG1lc3NhZ2UgPSAi
UmVmdXNlZCB0byBkaXNwbGF5ICciICsgcmVzcG9uc2UudXJsKCkuc3RyaW5nQ2VudGVyRWxsaXBz
aXplZFRvTGVuZ3RoKCkgKyAiJyBpbiBhIGZyYW1lIGJlY2F1c2UgaXQgc2V0ICdYLUZyYW1lLU9w
dGlvbnMnIHRvICciICsgY29udGVudCArICInLiI7Ci0gICAgICAgICAgICBmcmFtZSgpLT5kb2N1
bWVudCgpLT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpTZWN1cml0eSwgTWVzc2Fn
ZUxldmVsOjpFcnJvciwgbWVzc2FnZSwgaWRlbnRpZmllcik7Ci0gICAgICAgICAgICBmcmFtZSgp
LT5kb2N1bWVudCgpLT5lbmZvcmNlU2FuZGJveEZsYWdzKFNhbmRib3hPcmlnaW4pOworICAgICAg
ICAgICAgZnJhbWUoKS0+ZG9jdW1lbnQoKS5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNl
OjpTZWN1cml0eSwgTWVzc2FnZUxldmVsOjpFcnJvciwgbWVzc2FnZSwgaWRlbnRpZmllcik7Cisg
ICAgICAgICAgICBmcmFtZSgpLT5kb2N1bWVudCgpLmVuZm9yY2VTYW5kYm94RmxhZ3MoU2FuZGJv
eE9yaWdpbik7CiAgICAgICAgICAgICBpZiAoSFRNTEZyYW1lT3duZXJFbGVtZW50KiBvd25lckVs
ZW1lbnQgPSBmcmFtZSgpLT5vd25lckVsZW1lbnQoKSkKICAgICAgICAgICAgICAgICBvd25lckVs
ZW1lbnQtPmRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkubG9hZEV2ZW50
LCBmYWxzZSwgZmFsc2UpKTsKIApAQCAtNzk2LDcgKzc5Niw3IEBAIHZvaWQgRG9jdW1lbnRMb2Fk
ZXI6OmNvbW1pdERhdGEoY29uc3QgY2hhciogYnl0ZXMsIHNpemVfdCBsZW5ndGgpCiAgICAgICAg
ICAgICAvLyBsb2FkIGxvY2FsIHJlc291cmNlcy4gU2VlIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xNjc1NgogICAgICAgICAgICAgLy8gYW5kIGh0dHBzOi8vYnVncy53
ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xOTc2MCBmb3IgZnVydGhlcgogICAgICAgICAgICAg
Ly8gZGlzY3Vzc2lvbi4KLSAgICAgICAgICAgIG1fZnJhbWUtPmRvY3VtZW50KCktPnNlY3VyaXR5
T3JpZ2luKCktPmdyYW50TG9hZExvY2FsUmVzb3VyY2VzKCk7CisgICAgICAgICAgICBtX2ZyYW1l
LT5kb2N1bWVudCgpLnNlY3VyaXR5T3JpZ2luKCktPmdyYW50TG9hZExvY2FsUmVzb3VyY2VzKCk7
CiAgICAgICAgIH0KIAogICAgICAgICBpZiAoZnJhbWVMb2FkZXIoKS0+c3RhdGVNYWNoaW5lKCku
Y3JlYXRpbmdJbml0aWFsRW1wdHlEb2N1bWVudCgpKQpAQCAtODA2LDcgKzgwNiw3IEBAIHZvaWQg
RG9jdW1lbnRMb2FkZXI6OmNvbW1pdERhdGEoY29uc3QgY2hhciogYnl0ZXMsIHNpemVfdCBsZW5n
dGgpCiAgICAgICAgIC8vIFRoZSBvcmlnaW4gaXMgdGhlIE1IVE1MIGZpbGUsIHdlIG5lZWQgdG8g
c2V0IHRoZSBiYXNlIFVSTCB0byB0aGUgZG9jdW1lbnQgZW5jb2RlZCBpbiB0aGUgTUhUTUwgc28K
ICAgICAgICAgLy8gcmVsYXRpdmUgVVJMcyBhcmUgcmVzb2x2ZWQgcHJvcGVybHkuCiAgICAgICAg
IGlmIChtX2FyY2hpdmUgJiYgbV9hcmNoaXZlLT50eXBlKCkgPT0gQXJjaGl2ZTo6TUhUTUwpCi0g
ICAgICAgICAgICBtX2ZyYW1lLT5kb2N1bWVudCgpLT5zZXRCYXNlVVJMT3ZlcnJpZGUobV9hcmNo
aXZlLT5tYWluUmVzb3VyY2UoKS0+dXJsKCkpOworICAgICAgICAgICAgbV9mcmFtZS0+ZG9jdW1l
bnQoKS5zZXRCYXNlVVJMT3ZlcnJpZGUobV9hcmNoaXZlLT5tYWluUmVzb3VyY2UoKS0+dXJsKCkp
OwogI2VuZGlmCiAKICAgICAgICAgLy8gQ2FsbCByZWNlaXZlZEZpcnN0RGF0YSgpIGV4YWN0bHkg
b25jZSBwZXIgbG9hZC4gV2Ugc2hvdWxkIG9ubHkgcmVhY2ggdGhpcyBwb2ludCBtdWx0aXBsZSB0
aW1lcwpAQCAtODM4LDcgKzgzOCw3IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OmNvbW1pdERhdGEo
Y29uc3QgY2hhciogYnl0ZXMsIHNpemVfdCBsZW5ndGgpCiAKICAgICAgICAgbV93cml0ZXIuc2V0
RW5jb2RpbmcoZW5jb2RpbmcsIHVzZXJDaG9zZW4pOwogICAgIH0KLSAgICBBU1NFUlQobV9mcmFt
ZS0+ZG9jdW1lbnQoKS0+cGFyc2luZygpKTsKKyAgICBBU1NFUlQobV9mcmFtZS0+ZG9jdW1lbnQo
KS5wYXJzaW5nKCkpOwogICAgIG1fd3JpdGVyLmFkZERhdGEoYnl0ZXMsIGxlbmd0aCk7CiB9CiAK
QEAgLTkxNCw3ICs5MTQsNyBAQCB2b2lkIERvY3VtZW50TG9hZGVyOjpjaGVja0xvYWRDb21wbGV0
ZSgpCiAgICAgICAgIHJldHVybjsKIAogICAgIEFTU0VSVCh0aGlzID09IGZyYW1lTG9hZGVyKCkt
PmFjdGl2ZURvY3VtZW50TG9hZGVyKCkpOwotICAgIG1fZnJhbWUtPmRvY3VtZW50KCktPmRvbVdp
bmRvdygpLT5maW5pc2hlZExvYWRpbmcoKTsKKyAgICBtX2ZyYW1lLT5kb2N1bWVudCgpLmRvbVdp
bmRvdygpLT5maW5pc2hlZExvYWRpbmcoKTsKIH0KIAogdm9pZCBEb2N1bWVudExvYWRlcjo6c2V0
RnJhbWUoRnJhbWUqIGZyYW1lKQpAQCAtOTcwLDE0ICs5NzAsMTQgQEAgYm9vbCBEb2N1bWVudExv
YWRlcjo6aXNMb2FkaW5nSW5BUElTZW5zZSgpIGNvbnN0CiAgICAgICAgIGlmIChtX2ZyYW1lLT5z
ZXR0aW5ncygpLm5lZWRzSXNMb2FkaW5nSW5BUElTZW5zZVF1aXJrKCkgJiYgIW1fc3VicmVzb3Vy
Y2VMb2FkZXJzLmlzRW1wdHkoKSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgIAotICAg
ICAgICBEb2N1bWVudCogZG9jID0gbV9mcmFtZS0+ZG9jdW1lbnQoKTsKLSAgICAgICAgaWYgKChp
c0xvYWRpbmdNYWluUmVzb3VyY2UoKSB8fCAhbV9mcmFtZS0+ZG9jdW1lbnQoKS0+bG9hZEV2ZW50
RmluaXNoZWQoKSkgJiYgaXNMb2FkaW5nKCkpCisgICAgICAgIERvY3VtZW50JiBkb2MgPSBtX2Zy
YW1lLT5kb2N1bWVudCgpOworICAgICAgICBpZiAoKGlzTG9hZGluZ01haW5SZXNvdXJjZSgpIHx8
ICFtX2ZyYW1lLT5kb2N1bWVudCgpLmxvYWRFdmVudEZpbmlzaGVkKCkpICYmIGlzTG9hZGluZygp
KQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIGlmIChtX2NhY2hlZFJlc291cmNl
TG9hZGVyLT5yZXF1ZXN0Q291bnQoKSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAg
ICBpZiAoZG9jLT5wcm9jZXNzaW5nTG9hZEV2ZW50KCkpCisgICAgICAgIGlmIChkb2MucHJvY2Vz
c2luZ0xvYWRFdmVudCgpKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIGlmIChk
b2MtPmhhc0FjdGl2ZVBhcnNlcigpKQorICAgICAgICBpZiAoZG9jLmhhc0FjdGl2ZVBhcnNlcigp
KQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgfQogICAgIHJldHVybiBmcmFtZUxvYWRl
cigpLT5zdWJmcmFtZUlzTG9hZGluZygpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0RvY3VtZW50V3JpdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFdy
aXRlci5jcHAKaW5kZXggZmFmNzlhZi4uYzQ4ZjAzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0RvY3VtZW50V3JpdGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RG9jdW1lbnRXcml0ZXIuY3BwCkBAIC01NSw3ICs1NSw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogc3RhdGljIGlubGluZSBib29sIGNhblJlZmVyVG9QYXJlbnRGcmFtZUVuY29kaW5nKGNvbnN0
IEZyYW1lKiBmcmFtZSwgY29uc3QgRnJhbWUqIHBhcmVudEZyYW1lKSAKIHsKLSAgICByZXR1cm4g
cGFyZW50RnJhbWUgJiYgcGFyZW50RnJhbWUtPmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCkt
PmNhbkFjY2VzcyhmcmFtZS0+ZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKSk7CisgICAgcmV0
dXJuIHBhcmVudEZyYW1lICYmIHBhcmVudEZyYW1lLT5kb2N1bWVudCgpLnNlY3VyaXR5T3JpZ2lu
KCktPmNhbkFjY2VzcyhmcmFtZS0+ZG9jdW1lbnQoKS5zZWN1cml0eU9yaWdpbigpKTsKIH0KICAg
ICAKIERvY3VtZW50V3JpdGVyOjpEb2N1bWVudFdyaXRlcihGcmFtZSogZnJhbWUpCkBAIC03Miwx
NyArNzIsMTcgQEAgRG9jdW1lbnRXcml0ZXI6OkRvY3VtZW50V3JpdGVyKEZyYW1lKiBmcmFtZSkK
IHZvaWQgRG9jdW1lbnRXcml0ZXI6OnJlcGxhY2VEb2N1bWVudChjb25zdCBTdHJpbmcmIHNvdXJj
ZSwgRG9jdW1lbnQqIG93bmVyRG9jdW1lbnQpCiB7CiAgICAgbV9mcmFtZS0+bG9hZGVyKCkuc3Rv
cEFsbExvYWRlcnMoKTsKLSAgICBiZWdpbihtX2ZyYW1lLT5kb2N1bWVudCgpLT51cmwoKSwgdHJ1
ZSwgb3duZXJEb2N1bWVudCk7CisgICAgYmVnaW4obV9mcmFtZS0+ZG9jdW1lbnQoKS51cmwoKSwg
dHJ1ZSwgb3duZXJEb2N1bWVudCk7CiAKICAgICBpZiAoIXNvdXJjZS5pc051bGwoKSkgewogICAg
ICAgICBpZiAoIW1faGFzUmVjZWl2ZWRTb21lRGF0YSkgewogICAgICAgICAgICAgbV9oYXNSZWNl
aXZlZFNvbWVEYXRhID0gdHJ1ZTsKLSAgICAgICAgICAgIG1fZnJhbWUtPmRvY3VtZW50KCktPnNl
dENvbXBhdGliaWxpdHlNb2RlKERvY3VtZW50OjpOb1F1aXJrc01vZGUpOworICAgICAgICAgICAg
bV9mcmFtZS0+ZG9jdW1lbnQoKS5zZXRDb21wYXRpYmlsaXR5TW9kZShEb2N1bWVudDo6Tm9RdWly
a3NNb2RlKTsKICAgICAgICAgfQogCiAgICAgICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBjYWxs
IERvY3VtZW50UGFyc2VyOjphcHBlbmRCeXRlcyBpbnN0ZWFkIG9mIGFwcGVuZAogICAgICAgICAv
LyB0byBzdXBwb3J0IFJhd0RhdGFEb2N1bWVudFBhcnNlcnMuCi0gICAgICAgIGlmIChEb2N1bWVu
dFBhcnNlciogcGFyc2VyID0gbV9mcmFtZS0+ZG9jdW1lbnQoKS0+cGFyc2VyKCkpCisgICAgICAg
IGlmIChEb2N1bWVudFBhcnNlciogcGFyc2VyID0gbV9mcmFtZS0+ZG9jdW1lbnQoKS5wYXJzZXIo
KSkKICAgICAgICAgICAgIHBhcnNlci0+YXBwZW5kKHNvdXJjZS5pbXBsKCkpOwogICAgIH0KIApA
QCAtMTMzLDkgKzEzMyw5IEBAIHZvaWQgRG9jdW1lbnRXcml0ZXI6OmJlZ2luKGNvbnN0IFVSTCYg
dXJsUmVmZXJlbmNlLCBib29sIGRpc3BhdGNoLCBEb2N1bWVudCogb3duCiAKICAgICAvLyBGSVhN
RTogRG8gd2UgbmVlZCB0byBjb25zdWx0IHRoZSBjb250ZW50IHNlY3VyaXR5IHBvbGljeSBoZXJl
IGFib3V0IGJsb2NrZWQgcGx1Zy1pbnM/CiAKLSAgICBib29sIHNob3VsZFJldXNlRGVmYXVsdFZp
ZXcgPSBtX2ZyYW1lLT5sb2FkZXIoKS5zdGF0ZU1hY2hpbmUoKS5pc0Rpc3BsYXlpbmdJbml0aWFs
RW1wdHlEb2N1bWVudCgpICYmIG1fZnJhbWUtPmRvY3VtZW50KCktPmlzU2VjdXJlVHJhbnNpdGlv
blRvKHVybCk7CisgICAgYm9vbCBzaG91bGRSZXVzZURlZmF1bHRWaWV3ID0gbV9mcmFtZS0+bG9h
ZGVyKCkuc3RhdGVNYWNoaW5lKCkuaXNEaXNwbGF5aW5nSW5pdGlhbEVtcHR5RG9jdW1lbnQoKSAm
JiBtX2ZyYW1lLT5kb2N1bWVudCgpLmlzU2VjdXJlVHJhbnNpdGlvblRvKHVybCk7CiAgICAgaWYg
KHNob3VsZFJldXNlRGVmYXVsdFZpZXcpCi0gICAgICAgIGRvY3VtZW50LT50YWtlRE9NV2luZG93
RnJvbShtX2ZyYW1lLT5kb2N1bWVudCgpKTsKKyAgICAgICAgZG9jdW1lbnQtPnRha2VET01XaW5k
b3dGcm9tKCZtX2ZyYW1lLT5kb2N1bWVudCgpKTsKICAgICBlbHNlCiAgICAgICAgIGRvY3VtZW50
LT5jcmVhdGVET01XaW5kb3coKTsKIApAQCAtMTg3LDE1ICsxODcsMTUgQEAgVGV4dFJlc291cmNl
RGVjb2RlciogRG9jdW1lbnRXcml0ZXI6OmNyZWF0ZURlY29kZXJJZk5lZWRlZCgpCiAgICAgICAg
IC8vIEZJWE1FOiBUaGlzIG1pZ2h0IGJlIHRvbyBjYXV0aW91cyBmb3Igbm9uLTdiaXQtZW5jb2Rp
bmdzIGFuZAogICAgICAgICAvLyB3ZSBtYXkgY29uc2lkZXIgcmVsYXhpbmcgdGhpcyBsYXRlciBh
ZnRlciB0ZXN0aW5nLgogICAgICAgICBpZiAoY2FuUmVmZXJUb1BhcmVudEZyYW1lRW5jb2Rpbmco
bV9mcmFtZSwgcGFyZW50RnJhbWUpKQotICAgICAgICAgICAgbV9kZWNvZGVyLT5zZXRIaW50RW5j
b2RpbmcocGFyZW50RnJhbWUtPmRvY3VtZW50KCktPmRlY29kZXIoKSk7CisgICAgICAgICAgICBt
X2RlY29kZXItPnNldEhpbnRFbmNvZGluZyhwYXJlbnRGcmFtZS0+ZG9jdW1lbnQoKS5kZWNvZGVy
KCkpOwogICAgICAgICBpZiAobV9lbmNvZGluZy5pc0VtcHR5KCkpIHsKICAgICAgICAgICAgIGlm
IChjYW5SZWZlclRvUGFyZW50RnJhbWVFbmNvZGluZyhtX2ZyYW1lLCBwYXJlbnRGcmFtZSkpCi0g
ICAgICAgICAgICAgICAgbV9kZWNvZGVyLT5zZXRFbmNvZGluZyhwYXJlbnRGcmFtZS0+ZG9jdW1l
bnQoKS0+aW5wdXRFbmNvZGluZygpLCBUZXh0UmVzb3VyY2VEZWNvZGVyOjpFbmNvZGluZ0Zyb21Q
YXJlbnRGcmFtZSk7CisgICAgICAgICAgICAgICAgbV9kZWNvZGVyLT5zZXRFbmNvZGluZyhwYXJl
bnRGcmFtZS0+ZG9jdW1lbnQoKS5pbnB1dEVuY29kaW5nKCksIFRleHRSZXNvdXJjZURlY29kZXI6
OkVuY29kaW5nRnJvbVBhcmVudEZyYW1lKTsKICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAg
IG1fZGVjb2Rlci0+c2V0RW5jb2RpbmcobV9lbmNvZGluZywKICAgICAgICAgICAgICAgICBtX2Vu
Y29kaW5nV2FzQ2hvc2VuQnlVc2VyID8gVGV4dFJlc291cmNlRGVjb2Rlcjo6VXNlckNob3NlbkVu
Y29kaW5nIDogVGV4dFJlc291cmNlRGVjb2Rlcjo6RW5jb2RpbmdGcm9tSFRUUEhlYWRlcik7CiAg
ICAgICAgIH0KLSAgICAgICAgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+c2V0RGVjb2RlcihtX2RlY29k
ZXIuZ2V0KCkpOworICAgICAgICBtX2ZyYW1lLT5kb2N1bWVudCgpLnNldERlY29kZXIobV9kZWNv
ZGVyLmdldCgpKTsKICAgICB9CiAgICAgcmV0dXJuIG1fZGVjb2Rlci5nZXQoKTsKIH0KQEAgLTIw
Nyw4ICsyMDcsOCBAQCB2b2lkIERvY3VtZW50V3JpdGVyOjpyZXBvcnREYXRhUmVjZWl2ZWQoKQog
ICAgICAgICByZXR1cm47CiAgICAgbV9oYXNSZWNlaXZlZFNvbWVEYXRhID0gdHJ1ZTsKICAgICBp
ZiAobV9kZWNvZGVyLT5lbmNvZGluZygpLnVzZXNWaXN1YWxPcmRlcmluZygpKQotICAgICAgICBt
X2ZyYW1lLT5kb2N1bWVudCgpLT5zZXRWaXN1YWxseU9yZGVyZWQoKTsKLSAgICBtX2ZyYW1lLT5k
b2N1bWVudCgpLT5yZWNhbGNTdHlsZShTdHlsZTo6Rm9yY2UpOworICAgICAgICBtX2ZyYW1lLT5k
b2N1bWVudCgpLnNldFZpc3VhbGx5T3JkZXJlZCgpOworICAgIG1fZnJhbWUtPmRvY3VtZW50KCku
cmVjYWxjU3R5bGUoU3R5bGU6OkZvcmNlKTsKIH0KIAogdm9pZCBEb2N1bWVudFdyaXRlcjo6YWRk
RGF0YShjb25zdCBjaGFyKiBieXRlcywgc2l6ZV90IGxlbmd0aCkKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRSZXF1ZXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9GcmFtZUxvYWRSZXF1ZXN0LmNwcAppbmRleCA2NzM5Y2ZmLi42YjNiZTE3IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkUmVxdWVzdC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZFJlcXVlc3QuY3BwCkBAIC0zNyw3ICszNyw3IEBA
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIEZyYW1lTG9hZFJlcXVlc3Q6OkZyYW1lTG9hZFJlcXVl
c3QoRnJhbWUqIGZyYW1lLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlc291cmNlUmVxdWVzdCwg
Y29uc3QgU3Vic3RpdHV0ZURhdGEmIHN1YnN0aXR1dGVEYXRhKQotICAgIDogbV9yZXF1ZXN0ZXIo
ZnJhbWUtPmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCkpCisgICAgOiBtX3JlcXVlc3Rlcihm
cmFtZS0+ZG9jdW1lbnQoKS5zZWN1cml0eU9yaWdpbigpKQogICAgICwgbV9yZXNvdXJjZVJlcXVl
c3QocmVzb3VyY2VSZXF1ZXN0KQogICAgICwgbV9zaG91bGRDaGVja05ld1dpbmRvd1BvbGljeShm
YWxzZSkKICAgICAsIG1fc3Vic3RpdHV0ZURhdGEoc3Vic3RpdHV0ZURhdGEpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAppbmRleCA0ZjllYzZmLi44Mzg2ZWFiNDkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcApAQCAtMTc1LDcgKzE3NSw4IEBAIGJvb2wgaXNC
YWNrRm9yd2FyZExvYWRUeXBlKEZyYW1lTG9hZFR5cGUgdHlwZSkKIC8vCiBzdGF0aWMgYm9vbCBp
c0RvY3VtZW50U2FuZGJveGVkKEZyYW1lKiBmcmFtZSwgU2FuZGJveEZsYWdzIG1hc2spCiB7Ci0g
ICAgcmV0dXJuIGZyYW1lLT5kb2N1bWVudCgpICYmIGZyYW1lLT5kb2N1bWVudCgpLT5pc1NhbmRi
b3hlZChtYXNrKTsKKyAgICBBU1NFUlQoZnJhbWUtPmRvY3VtZW50KCkpOworICAgIHJldHVybiBm
cmFtZS0+ZG9jdW1lbnQoKS5pc1NhbmRib3hlZChtYXNrKTsKIH0KIAogY2xhc3MgRnJhbWVMb2Fk
ZXI6OkZyYW1lUHJvZ3Jlc3NUcmFja2VyIHsKQEAgLTI2Nyw3ICsyNjgsNyBAQCB2b2lkIEZyYW1l
TG9hZGVyOjppbml0KCkKICAgICBzZXRQb2xpY3lEb2N1bWVudExvYWRlcihtX2NsaWVudC5jcmVh
dGVEb2N1bWVudExvYWRlcihSZXNvdXJjZVJlcXVlc3QoVVJMKFBhcnNlZFVSTFN0cmluZywgZW1w
dHlTdHJpbmcoKSkpLCBTdWJzdGl0dXRlRGF0YSgpKS5nZXQoKSk7CiAgICAgc2V0UHJvdmlzaW9u
YWxEb2N1bWVudExvYWRlcihtX3BvbGljeURvY3VtZW50TG9hZGVyLmdldCgpKTsKICAgICBtX3By
b3Zpc2lvbmFsRG9jdW1lbnRMb2FkZXItPnN0YXJ0TG9hZGluZ01haW5SZXNvdXJjZSgpOwotICAg
IG1fZnJhbWUuZG9jdW1lbnQoKS0+Y2FuY2VsUGFyc2luZygpOworICAgIG1fZnJhbWUuZG9jdW1l
bnQoKS5jYW5jZWxQYXJzaW5nKCk7CiAgICAgbV9zdGF0ZU1hY2hpbmUuYWR2YW5jZVRvKEZyYW1l
TG9hZGVyU3RhdGVNYWNoaW5lOjpEaXNwbGF5aW5nSW5pdGlhbEVtcHR5RG9jdW1lbnQpOwogCiAg
ICAgbV9uZXR3b3JraW5nQ29udGV4dCA9IG1fY2xpZW50LmNyZWF0ZU5ldHdvcmtpbmdDb250ZXh0
KCk7CkBAIC0zMjUsNyArMzI2LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6Y2hhbmdlTG9jYXRpb24o
U2VjdXJpdHlPcmlnaW4qIHNlY3VyaXR5T3JpZ2luLCBjb25zdCBVUkwmIHVybCwKIAogdm9pZCBG
cmFtZUxvYWRlcjo6dXJsU2VsZWN0ZWQoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcGFz
c2VkVGFyZ2V0LCBQYXNzUmVmUHRyPEV2ZW50PiB0cmlnZ2VyaW5nRXZlbnQsIExvY2tIaXN0b3J5
IGxvY2tIaXN0b3J5LCBMb2NrQmFja0ZvcndhcmRMaXN0IGxvY2tCYWNrRm9yd2FyZExpc3QsIFNo
b3VsZFNlbmRSZWZlcnJlciBzaG91bGRTZW5kUmVmZXJyZXIpCiB7Ci0gICAgdXJsU2VsZWN0ZWQo
RnJhbWVMb2FkUmVxdWVzdChtX2ZyYW1lLmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCksIFJl
c291cmNlUmVxdWVzdCh1cmwpLCBwYXNzZWRUYXJnZXQpLAorICAgIHVybFNlbGVjdGVkKEZyYW1l
TG9hZFJlcXVlc3QobV9mcmFtZS5kb2N1bWVudCgpLnNlY3VyaXR5T3JpZ2luKCksIFJlc291cmNl
UmVxdWVzdCh1cmwpLCBwYXNzZWRUYXJnZXQpLAogICAgICAgICB0cmlnZ2VyaW5nRXZlbnQsIGxv
Y2tIaXN0b3J5LCBsb2NrQmFja0ZvcndhcmRMaXN0LCBzaG91bGRTZW5kUmVmZXJyZXIsIERvTm90
UmVwbGFjZURvY3VtZW50SWZKYXZhU2NyaXB0VVJMKTsKIH0KIApAQCAtMzQyLDcgKzM0Myw3IEBA
IHZvaWQgRnJhbWVMb2FkZXI6OnVybFNlbGVjdGVkKGNvbnN0IEZyYW1lTG9hZFJlcXVlc3QmIHBh
c3NlZFJlcXVlc3QsIFBhc3NSZWZQdHI8CiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChmcmFt
ZVJlcXVlc3QuZnJhbWVOYW1lKCkuaXNFbXB0eSgpKQotICAgICAgICBmcmFtZVJlcXVlc3Quc2V0
RnJhbWVOYW1lKG1fZnJhbWUuZG9jdW1lbnQoKS0+YmFzZVRhcmdldCgpKTsKKyAgICAgICAgZnJh
bWVSZXF1ZXN0LnNldEZyYW1lTmFtZShtX2ZyYW1lLmRvY3VtZW50KCkuYmFzZVRhcmdldCgpKTsK
IAogICAgIGlmIChzaG91bGRTZW5kUmVmZXJyZXIgPT0gTmV2ZXJTZW5kUmVmZXJyZXIpCiAgICAg
ICAgIG1fc3VwcHJlc3NPcGVuZXJJbk5ld0ZyYW1lID0gdHJ1ZTsKQEAgLTM3MCwxMiArMzcxLDEy
IEBAIHZvaWQgRnJhbWVMb2FkZXI6OnN1Ym1pdEZvcm0oUGFzc1JlZlB0cjxGb3JtU3VibWlzc2lv
bj4gc3VibWlzc2lvbikKIAogICAgIGlmIChpc0RvY3VtZW50U2FuZGJveGVkKCZtX2ZyYW1lLCBT
YW5kYm94Rm9ybXMpKSB7CiAgICAgICAgIC8vIEZJWE1FOiBUaGlzIG1lc3NhZ2Ugc2hvdWxkIGJl
IG1vdmVkIG9mZiB0aGUgY29uc29sZSBvbmNlIGEgc29sdXRpb24gdG8gaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMzI3NCBleGlzdHMuCi0gICAgICAgIG1fZnJhbWUu
ZG9jdW1lbnQoKS0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6U2VjdXJpdHksIE1l
c3NhZ2VMZXZlbDo6RXJyb3IsICJCbG9ja2VkIGZvcm0gc3VibWlzc2lvbiB0byAnIiArIHN1Ym1p
c3Npb24tPmFjdGlvbigpLnN0cmluZ0NlbnRlckVsbGlwc2l6ZWRUb0xlbmd0aCgpICsgIicgYmVj
YXVzZSB0aGUgZm9ybSdzIGZyYW1lIGlzIHNhbmRib3hlZCBhbmQgdGhlICdhbGxvdy1mb3Jtcycg
cGVybWlzc2lvbiBpcyBub3Qgc2V0LiIpOworICAgICAgICBtX2ZyYW1lLmRvY3VtZW50KCkuYWRk
Q29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6U2VjdXJpdHksIE1lc3NhZ2VMZXZlbDo6RXJy
b3IsICJCbG9ja2VkIGZvcm0gc3VibWlzc2lvbiB0byAnIiArIHN1Ym1pc3Npb24tPmFjdGlvbigp
LnN0cmluZ0NlbnRlckVsbGlwc2l6ZWRUb0xlbmd0aCgpICsgIicgYmVjYXVzZSB0aGUgZm9ybSdz
IGZyYW1lIGlzIHNhbmRib3hlZCBhbmQgdGhlICdhbGxvdy1mb3JtcycgcGVybWlzc2lvbiBpcyBu
b3Qgc2V0LiIpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgaWYgKHByb3RvY29sSXNK
YXZhU2NyaXB0KHN1Ym1pc3Npb24tPmFjdGlvbigpKSkgewotICAgICAgICBpZiAoIW1fZnJhbWUu
ZG9jdW1lbnQoKS0+Y29udGVudFNlY3VyaXR5UG9saWN5KCktPmFsbG93Rm9ybUFjdGlvbihVUkwo
c3VibWlzc2lvbi0+YWN0aW9uKCkpKSkKKyAgICAgICAgaWYgKCFtX2ZyYW1lLmRvY3VtZW50KCku
Y29udGVudFNlY3VyaXR5UG9saWN5KCktPmFsbG93Rm9ybUFjdGlvbihVUkwoc3VibWlzc2lvbi0+
YWN0aW9uKCkpKSkKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgbV9pc0V4ZWN1dGluZ0ph
dmFTY3JpcHRGb3JtQWN0aW9uID0gdHJ1ZTsKICAgICAgICAgUmVmPEZyYW1lPiBwcm90ZWN0KG1f
ZnJhbWUpOwpAQCAtNDIwLDcgKzQyMSw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OnN1Ym1pdEZvcm0o
UGFzc1JlZlB0cjxGb3JtU3VibWlzc2lvbj4gc3VibWlzc2lvbikKICAgICAgICAgbV9zdWJtaXR0
ZWRGb3JtVVJMID0gc3VibWlzc2lvbi0+cmVxdWVzdFVSTCgpOwogICAgIH0KIAotICAgIHN1Ym1p
c3Npb24tPmRhdGEoKS0+Z2VuZXJhdGVGaWxlcyhtX2ZyYW1lLmRvY3VtZW50KCkpOworICAgIHN1
Ym1pc3Npb24tPmRhdGEoKS0+Z2VuZXJhdGVGaWxlcygmbV9mcmFtZS5kb2N1bWVudCgpKTsKICAg
ICBzdWJtaXNzaW9uLT5zZXRSZWZlcnJlcihvdXRnb2luZ1JlZmVycmVyKCkpOwogICAgIHN1Ym1p
c3Npb24tPnNldE9yaWdpbihvdXRnb2luZ09yaWdpbigpKTsKIApAQCAtNDI5LDI1ICs0MzAsMjYg
QEAgdm9pZCBGcmFtZUxvYWRlcjo6c3VibWl0Rm9ybShQYXNzUmVmUHRyPEZvcm1TdWJtaXNzaW9u
PiBzdWJtaXNzaW9uKQogCiB2b2lkIEZyYW1lTG9hZGVyOjpzdG9wTG9hZGluZyhVbmxvYWRFdmVu
dFBvbGljeSB1bmxvYWRFdmVudFBvbGljeSkKIHsKLSAgICBpZiAobV9mcmFtZS5kb2N1bWVudCgp
ICYmIG1fZnJhbWUuZG9jdW1lbnQoKS0+cGFyc2VyKCkpCi0gICAgICAgIG1fZnJhbWUuZG9jdW1l
bnQoKS0+cGFyc2VyKCktPnN0b3BQYXJzaW5nKCk7CisgICAgQVNTRVJUKG1fZnJhbWUuZG9jdW1l
bnQoKSk7CisgICAgaWYgKG1fZnJhbWUuZG9jdW1lbnQoKS5wYXJzZXIoKSkKKyAgICAgICAgbV9m
cmFtZS5kb2N1bWVudCgpLnBhcnNlcigpLT5zdG9wUGFyc2luZygpOwogCiAgICAgaWYgKHVubG9h
ZEV2ZW50UG9saWN5ICE9IFVubG9hZEV2ZW50UG9saWN5Tm9uZSkgewotICAgICAgICBpZiAobV9m
cmFtZS5kb2N1bWVudCgpKSB7CisgICAgICAgIGlmICgmbV9mcmFtZS5kb2N1bWVudCgpKSB7CiAg
ICAgICAgICAgICBpZiAobV9kaWRDYWxsSW1wbGljaXRDbG9zZSAmJiAhbV93YXNVbmxvYWRFdmVu
dEVtaXR0ZWQpIHsKLSAgICAgICAgICAgICAgICBFbGVtZW50KiBjdXJyZW50Rm9jdXNlZEVsZW1l
bnQgPSBtX2ZyYW1lLmRvY3VtZW50KCktPmZvY3VzZWRFbGVtZW50KCk7CisgICAgICAgICAgICAg
ICAgRWxlbWVudCogY3VycmVudEZvY3VzZWRFbGVtZW50ID0gbV9mcmFtZS5kb2N1bWVudCgpLmZv
Y3VzZWRFbGVtZW50KCk7CiAgICAgICAgICAgICAgICAgaWYgKGN1cnJlbnRGb2N1c2VkRWxlbWVu
dCAmJiBjdXJyZW50Rm9jdXNlZEVsZW1lbnQtPnRvSW5wdXRFbGVtZW50KCkpCiAgICAgICAgICAg
ICAgICAgICAgIGN1cnJlbnRGb2N1c2VkRWxlbWVudC0+dG9JbnB1dEVsZW1lbnQoKS0+ZW5kRWRp
dGluZygpOwogICAgICAgICAgICAgICAgIGlmIChtX3BhZ2VEaXNtaXNzYWxFdmVudEJlaW5nRGlz
cGF0Y2hlZCA9PSBOb0Rpc21pc3NhbCkgewogICAgICAgICAgICAgICAgICAgICBpZiAodW5sb2Fk
RXZlbnRQb2xpY3kgPT0gVW5sb2FkRXZlbnRQb2xpY3lVbmxvYWRBbmRQYWdlSGlkZSkgewogICAg
ICAgICAgICAgICAgICAgICAgICAgbV9wYWdlRGlzbWlzc2FsRXZlbnRCZWluZ0Rpc3BhdGNoZWQg
PSBQYWdlSGlkZURpc21pc3NhbDsKLSAgICAgICAgICAgICAgICAgICAgICAgIG1fZnJhbWUuZG9j
dW1lbnQoKS0+ZG9tV2luZG93KCktPmRpc3BhdGNoRXZlbnQoUGFnZVRyYW5zaXRpb25FdmVudDo6
Y3JlYXRlKGV2ZW50TmFtZXMoKS5wYWdlaGlkZUV2ZW50LCBtX2ZyYW1lLmRvY3VtZW50KCktPmlu
UGFnZUNhY2hlKCkpLCBtX2ZyYW1lLmRvY3VtZW50KCkpOworICAgICAgICAgICAgICAgICAgICAg
ICAgbV9mcmFtZS5kb2N1bWVudCgpLmRvbVdpbmRvdygpLT5kaXNwYXRjaEV2ZW50KFBhZ2VUcmFu
c2l0aW9uRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkucGFnZWhpZGVFdmVudCwgbV9mcmFtZS5k
b2N1bWVudCgpLmluUGFnZUNhY2hlKCkpLCAmbV9mcmFtZS5kb2N1bWVudCgpKTsKICAgICAgICAg
ICAgICAgICAgICAgfQogCiAgICAgICAgICAgICAgICAgICAgIC8vIEZJWE1FOiB1cGRhdGUgUGFn
ZSBWaXNpYmlsaXR5IHN0YXRlIGhlcmUuCiAgICAgICAgICAgICAgICAgICAgIC8vIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMTY3NzAKIAotICAgICAgICAgICAgICAg
ICAgICBpZiAoIW1fZnJhbWUuZG9jdW1lbnQoKS0+aW5QYWdlQ2FjaGUoKSkgeworICAgICAgICAg
ICAgICAgICAgICBpZiAoIW1fZnJhbWUuZG9jdW1lbnQoKS5pblBhZ2VDYWNoZSgpKSB7CiAgICAg
ICAgICAgICAgICAgICAgICAgICBSZWZQdHI8RXZlbnQ+IHVubG9hZEV2ZW50KEV2ZW50OjpjcmVh
dGUoZXZlbnROYW1lcygpLnVubG9hZEV2ZW50LCBmYWxzZSwgZmFsc2UpKTsKICAgICAgICAgICAg
ICAgICAgICAgICAgIC8vIFRoZSBEb2N1bWVudExvYWRlciAoYW5kIHRodXMgaXRzIERvY3VtZW50
TG9hZFRpbWluZykgbWlnaHQgZ2V0IGRlc3Ryb3llZAogICAgICAgICAgICAgICAgICAgICAgICAg
Ly8gd2hpbGUgZGlzcGF0Y2hpbmcgdGhlIGV2ZW50LCBzbyBwcm90ZWN0IGl0IHRvIHByZXZlbnQg
d3JpdGluZyB0aGUgZW5kCkBAIC00NTgsMzYgKzQ2MCwzNiBAQCB2b2lkIEZyYW1lTG9hZGVyOjpz
dG9wTG9hZGluZyhVbmxvYWRFdmVudFBvbGljeSB1bmxvYWRFdmVudFBvbGljeSkKICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBEb2N1bWVudExvYWRUaW1pbmcqIHRpbWluZyA9IGRvY3VtZW50
TG9hZGVyLT50aW1pbmcoKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBU1NFUlQodGlt
aW5nLT5uYXZpZ2F0aW9uU3RhcnQoKSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGlt
aW5nLT5tYXJrVW5sb2FkRXZlbnRTdGFydCgpOwotICAgICAgICAgICAgICAgICAgICAgICAgICAg
IG1fZnJhbWUuZG9jdW1lbnQoKS0+ZG9tV2luZG93KCktPmRpc3BhdGNoRXZlbnQodW5sb2FkRXZl
bnQsIG1fZnJhbWUuZG9jdW1lbnQoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9m
cmFtZS5kb2N1bWVudCgpLmRvbVdpbmRvdygpLT5kaXNwYXRjaEV2ZW50KHVubG9hZEV2ZW50LCBt
X2ZyYW1lLmRvY3VtZW50KCkpOwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWluZy0+
bWFya1VubG9hZEV2ZW50RW5kKCk7CiAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2UKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBtX2ZyYW1lLmRvY3VtZW50KCktPmRvbVdpbmRvdygp
LT5kaXNwYXRjaEV2ZW50KHVubG9hZEV2ZW50LCBtX2ZyYW1lLmRvY3VtZW50KCkpOworICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIG1fZnJhbWUuZG9jdW1lbnQoKS5kb21XaW5kb3coKS0+ZGlz
cGF0Y2hFdmVudCh1bmxvYWRFdmVudCwgbV9mcmFtZS5kb2N1bWVudCgpKTsKICAgICAgICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICBtX3BhZ2VEaXNt
aXNzYWxFdmVudEJlaW5nRGlzcGF0Y2hlZCA9IE5vRGlzbWlzc2FsOwogICAgICAgICAgICAgICAg
IGlmIChtX2ZyYW1lLmRvY3VtZW50KCkpCi0gICAgICAgICAgICAgICAgICAgIG1fZnJhbWUuZG9j
dW1lbnQoKS0+dXBkYXRlU3R5bGVJZk5lZWRlZCgpOworICAgICAgICAgICAgICAgICAgICBtX2Zy
YW1lLmRvY3VtZW50KCkudXBkYXRlU3R5bGVJZk5lZWRlZCgpOwogICAgICAgICAgICAgICAgIG1f
d2FzVW5sb2FkRXZlbnRFbWl0dGVkID0gdHJ1ZTsKICAgICAgICAgICAgIH0KICAgICAgICAgfQog
CiAgICAgICAgIC8vIERpc3BhdGNoaW5nIHRoZSB1bmxvYWQgZXZlbnQgY291bGQgaGF2ZSBtYWRl
IG1fZnJhbWUuZG9jdW1lbnQoKSBudWxsLgotICAgICAgICBpZiAobV9mcmFtZS5kb2N1bWVudCgp
ICYmICFtX2ZyYW1lLmRvY3VtZW50KCktPmluUGFnZUNhY2hlKCkpIHsKKyAgICAgICAgaWYgKG1f
ZnJhbWUuZG9jdW1lbnQoKSAmJiAhbV9mcmFtZS5kb2N1bWVudCgpLmluUGFnZUNhY2hlKCkpIHsK
ICAgICAgICAgICAgIC8vIERvbid0IHJlbW92ZSBldmVudCBsaXN0ZW5lcnMgZnJvbSBhIHRyYW5z
aXRpb25hbCBlbXB0eSBkb2N1bWVudCAoc2VlIGJ1ZyAyODcxNiBmb3IgbW9yZSBpbmZvcm1hdGlv
bikuCiAgICAgICAgICAgICBib29sIGtlZXBFdmVudExpc3RlbmVycyA9IG1fc3RhdGVNYWNoaW5l
LmlzRGlzcGxheWluZ0luaXRpYWxFbXB0eURvY3VtZW50KCkgJiYgbV9wcm92aXNpb25hbERvY3Vt
ZW50TG9hZGVyCi0gICAgICAgICAgICAgICAgJiYgbV9mcmFtZS5kb2N1bWVudCgpLT5pc1NlY3Vy
ZVRyYW5zaXRpb25UbyhtX3Byb3Zpc2lvbmFsRG9jdW1lbnRMb2FkZXItPnVybCgpKTsKKyAgICAg
ICAgICAgICAgICAmJiBtX2ZyYW1lLmRvY3VtZW50KCkuaXNTZWN1cmVUcmFuc2l0aW9uVG8obV9w
cm92aXNpb25hbERvY3VtZW50TG9hZGVyLT51cmwoKSk7CiAKICAgICAgICAgICAgIGlmICgha2Vl
cEV2ZW50TGlzdGVuZXJzKQotICAgICAgICAgICAgICAgIG1fZnJhbWUuZG9jdW1lbnQoKS0+cmVt
b3ZlQWxsRXZlbnRMaXN0ZW5lcnMoKTsKKyAgICAgICAgICAgICAgICBtX2ZyYW1lLmRvY3VtZW50
KCkucmVtb3ZlQWxsRXZlbnRMaXN0ZW5lcnMoKTsKICAgICAgICAgfQogICAgIH0KIAogICAgIG1f
aXNDb21wbGV0ZSA9IHRydWU7IC8vIHRvIGF2b2lkIGNhbGxpbmcgY29tcGxldGVkKCkgaW4gZmlu
aXNoZWRQYXJzaW5nKCkKICAgICBtX2RpZENhbGxJbXBsaWNpdENsb3NlID0gdHJ1ZTsgLy8gZG9u
J3Qgd2FudCB0aGF0IG9uZSBlaXRoZXIKIAotICAgIGlmIChtX2ZyYW1lLmRvY3VtZW50KCkgJiYg
bV9mcmFtZS5kb2N1bWVudCgpLT5wYXJzaW5nKCkpIHsKKyAgICBpZiAobV9mcmFtZS5kb2N1bWVu
dCgpICYmIG1fZnJhbWUuZG9jdW1lbnQoKS5wYXJzaW5nKCkpIHsKICAgICAgICAgZmluaXNoZWRQ
YXJzaW5nKCk7Ci0gICAgICAgIG1fZnJhbWUuZG9jdW1lbnQoKS0+c2V0UGFyc2luZyhmYWxzZSk7
CisgICAgICAgIG1fZnJhbWUuZG9jdW1lbnQoKS5zZXRQYXJzaW5nKGZhbHNlKTsKICAgICB9CiAK
ICAgICBpZiAoRG9jdW1lbnQqIGRvYyA9IG1fZnJhbWUuZG9jdW1lbnQoKSkgewpAQCAtNTExLDcg
KzUxMyw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OnN0b3AoKQogICAgIC8vIFRoZSBmcmFtZSdzIGxh
c3QgcmVmIG1heSBiZSByZW1vdmVkIGFuZCBpdCB3aWxsIGJlIGRlbGV0ZWQgYnkgY2hlY2tDb21w
bGV0ZWQoKS4KICAgICBSZWY8RnJhbWU+IHByb3RlY3QobV9mcmFtZSk7CiAKLSAgICBpZiAoRG9j
dW1lbnRQYXJzZXIqIHBhcnNlciA9IG1fZnJhbWUuZG9jdW1lbnQoKS0+cGFyc2VyKCkpIHsKKyAg
ICBpZiAoRG9jdW1lbnRQYXJzZXIqIHBhcnNlciA9IG1fZnJhbWUuZG9jdW1lbnQoKS5wYXJzZXIo
KSkgewogICAgICAgICBwYXJzZXItPnN0b3BQYXJzaW5nKCk7CiAgICAgICAgIHBhcnNlci0+Zmlu
aXNoKCk7CiAgICAgfQpAQCAtNTYxLDcgKzU2Myw3IEBAIGJvb2wgRnJhbWVMb2FkZXI6OmRpZE9w
ZW5VUkwoKQogICAgIC8vIGl0cyBmcmFtZSBpcyBub3QgaW4gYSBjb25zaXN0ZW50IHN0YXRlIGZv
ciByZW5kZXJpbmcsIHNvIGF2b2lkIHNldEpTU3RhdHVzQmFyVGV4dAogICAgIC8vIHNpbmNlIGl0
IG1heSBjYXVzZSBjbGllbnRzIHRvIGF0dGVtcHQgdG8gcmVuZGVyIHRoZSBmcmFtZS4KICAgICBp
ZiAoIW1fc3RhdGVNYWNoaW5lLmNyZWF0aW5nSW5pdGlhbEVtcHR5RG9jdW1lbnQoKSkgewotICAg
ICAgICBET01XaW5kb3cqIHdpbmRvdyA9IG1fZnJhbWUuZG9jdW1lbnQoKS0+ZG9tV2luZG93KCk7
CisgICAgICAgIERPTVdpbmRvdyogd2luZG93ID0gbV9mcmFtZS5kb2N1bWVudCgpLmRvbVdpbmRv
dygpOwogICAgICAgICB3aW5kb3ctPnNldFN0YXR1cyhTdHJpbmcoKSk7CiAgICAgICAgIHdpbmRv
dy0+c2V0RGVmYXVsdFN0YXR1cyhTdHJpbmcoKSk7CiAgICAgfQpAQCAtNjA3LDIwICs2MDksMjAg
QEAgdm9pZCBGcmFtZUxvYWRlcjo6Y2xlYXIoRG9jdW1lbnQqIG5ld0RvY3VtZW50LCBib29sIGNs
ZWFyV2luZG93UHJvcGVydGllcywgYm9vbAogICAgICAgICByZXR1cm47CiAgICAgbV9uZWVkc0Ns
ZWFyID0gZmFsc2U7CiAgICAgCi0gICAgaWYgKCFtX2ZyYW1lLmRvY3VtZW50KCktPmluUGFnZUNh
Y2hlKCkpIHsKLSAgICAgICAgbV9mcmFtZS5kb2N1bWVudCgpLT5jYW5jZWxQYXJzaW5nKCk7Ci0g
ICAgICAgIG1fZnJhbWUuZG9jdW1lbnQoKS0+c3RvcEFjdGl2ZURPTU9iamVjdHMoKTsKLSAgICAg
ICAgaWYgKG1fZnJhbWUuZG9jdW1lbnQoKS0+aGFzTGl2aW5nUmVuZGVyVHJlZSgpKSB7Ci0gICAg
ICAgICAgICBtX2ZyYW1lLmRvY3VtZW50KCktPnByZXBhcmVGb3JEZXN0cnVjdGlvbigpOwotICAg
ICAgICAgICAgbV9mcmFtZS5kb2N1bWVudCgpLT5yZW1vdmVGb2N1c2VkTm9kZU9mU3VidHJlZSht
X2ZyYW1lLmRvY3VtZW50KCkpOworICAgIGlmICghbV9mcmFtZS5kb2N1bWVudCgpLmluUGFnZUNh
Y2hlKCkpIHsKKyAgICAgICAgbV9mcmFtZS5kb2N1bWVudCgpLmNhbmNlbFBhcnNpbmcoKTsKKyAg
ICAgICAgbV9mcmFtZS5kb2N1bWVudCgpLnN0b3BBY3RpdmVET01PYmplY3RzKCk7CisgICAgICAg
IGlmIChtX2ZyYW1lLmRvY3VtZW50KCkuaGFzTGl2aW5nUmVuZGVyVHJlZSgpKSB7CisgICAgICAg
ICAgICBtX2ZyYW1lLmRvY3VtZW50KCkucHJlcGFyZUZvckRlc3RydWN0aW9uKCk7CisgICAgICAg
ICAgICBtX2ZyYW1lLmRvY3VtZW50KCkucmVtb3ZlRm9jdXNlZE5vZGVPZlN1YnRyZWUobV9mcmFt
ZS5kb2N1bWVudCgpKTsKICAgICAgICAgfQogICAgIH0KIAogICAgIC8vIERvIHRoaXMgYWZ0ZXIg
ZGV0YWNoaW5nIHRoZSBkb2N1bWVudCBzbyB0aGF0IHRoZSB1bmxvYWQgZXZlbnQgd29ya3MuCiAg
ICAgaWYgKGNsZWFyV2luZG93UHJvcGVydGllcykgewotICAgICAgICBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb246OmZyYW1lV2luZG93RGlzY2FyZGVkKCZtX2ZyYW1lLCBtX2ZyYW1lLmRvY3VtZW50
KCktPmRvbVdpbmRvdygpKTsKLSAgICAgICAgbV9mcmFtZS5kb2N1bWVudCgpLT5kb21XaW5kb3co
KS0+cmVzZXRVbmxlc3NTdXNwZW5kZWRGb3JQYWdlQ2FjaGUoKTsKLSAgICAgICAgbV9mcmFtZS5z
Y3JpcHQoKS5jbGVhcldpbmRvd1NoZWxsKG5ld0RvY3VtZW50LT5kb21XaW5kb3coKSwgbV9mcmFt
ZS5kb2N1bWVudCgpLT5pblBhZ2VDYWNoZSgpKTsKKyAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVu
dGF0aW9uOjpmcmFtZVdpbmRvd0Rpc2NhcmRlZCgmbV9mcmFtZSwgbV9mcmFtZS5kb2N1bWVudCgp
LmRvbVdpbmRvdygpKTsKKyAgICAgICAgbV9mcmFtZS5kb2N1bWVudCgpLmRvbVdpbmRvdygpLT5y
ZXNldFVubGVzc1N1c3BlbmRlZEZvclBhZ2VDYWNoZSgpOworICAgICAgICBtX2ZyYW1lLnNjcmlw
dCgpLmNsZWFyV2luZG93U2hlbGwobmV3RG9jdW1lbnQtPmRvbVdpbmRvdygpLCBtX2ZyYW1lLmRv
Y3VtZW50KCkuaW5QYWdlQ2FjaGUoKSk7CiAgICAgfQogCiAgICAgbV9mcmFtZS5zZWxlY3Rpb24o
KS5wcmVwYXJlRm9yRGVzdHJ1Y3Rpb24oKTsKQEAgLTY3MCwxNSArNjcyLDE1IEBAIHZvaWQgRnJh
bWVMb2FkZXI6OnJlY2VpdmVkRmlyc3REYXRhKCkKICAgICBpZiAoIXBhcnNlSFRUUFJlZnJlc2go
bV9kb2N1bWVudExvYWRlci0+cmVzcG9uc2UoKS5odHRwSGVhZGVyRmllbGQoIlJlZnJlc2giKSwg
ZmFsc2UsIGRlbGF5LCB1cmwpKQogICAgICAgICByZXR1cm47CiAgICAgaWYgKHVybC5pc0VtcHR5
KCkpCi0gICAgICAgIHVybCA9IG1fZnJhbWUuZG9jdW1lbnQoKS0+dXJsKCkuc3RyaW5nKCk7Cisg
ICAgICAgIHVybCA9IG1fZnJhbWUuZG9jdW1lbnQoKS51cmwoKS5zdHJpbmcoKTsKICAgICBlbHNl
Ci0gICAgICAgIHVybCA9IG1fZnJhbWUuZG9jdW1lbnQoKS0+Y29tcGxldGVVUkwodXJsKS5zdHJp
bmcoKTsKKyAgICAgICAgdXJsID0gbV9mcmFtZS5kb2N1bWVudCgpLmNvbXBsZXRlVVJMKHVybCku
c3RyaW5nKCk7CiAKICAgICBpZiAoIXByb3RvY29sSXNKYXZhU2NyaXB0KHVybCkpCiAgICAgICAg
IG1fZnJhbWUubmF2aWdhdGlvblNjaGVkdWxlcigpLnNjaGVkdWxlUmVkaXJlY3QoZGVsYXksIHVy
bCk7CiAgICAgZWxzZSB7Ci0gICAgICAgIFN0cmluZyBtZXNzYWdlID0gIlJlZnVzZWQgdG8gcmVm
cmVzaCAiICsgbV9mcmFtZS5kb2N1bWVudCgpLT51cmwoKS5zdHJpbmdDZW50ZXJFbGxpcHNpemVk
VG9MZW5ndGgoKSArICIgdG8gYSBqYXZhc2NyaXB0OiBVUkwiOwotICAgICAgICBtX2ZyYW1lLmRv
Y3VtZW50KCktPmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OlNlY3VyaXR5LCBNZXNz
YWdlTGV2ZWw6OkVycm9yLCBtZXNzYWdlKTsKKyAgICAgICAgU3RyaW5nIG1lc3NhZ2UgPSAiUmVm
dXNlZCB0byByZWZyZXNoICIgKyBtX2ZyYW1lLmRvY3VtZW50KCkudXJsKCkuc3RyaW5nQ2VudGVy
RWxsaXBzaXplZFRvTGVuZ3RoKCkgKyAiIHRvIGEgamF2YXNjcmlwdDogVVJMIjsKKyAgICAgICAg
bV9mcmFtZS5kb2N1bWVudCgpLmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OlNlY3Vy
aXR5LCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBtZXNzYWdlKTsKICAgICB9CiB9CiAKQEAgLTY5Miwx
MCArNjk0LDEwIEBAIHZvaWQgRnJhbWVMb2FkZXI6OmRpZEJlZ2luRG9jdW1lbnQoYm9vbCBkaXNw
YXRjaCkKICAgICBtX25lZWRzQ2xlYXIgPSB0cnVlOwogICAgIG1faXNDb21wbGV0ZSA9IGZhbHNl
OwogICAgIG1fZGlkQ2FsbEltcGxpY2l0Q2xvc2UgPSBmYWxzZTsKLSAgICBtX2ZyYW1lLmRvY3Vt
ZW50KCktPnNldFJlYWR5U3RhdGUoRG9jdW1lbnQ6OkxvYWRpbmcpOworICAgIG1fZnJhbWUuZG9j
dW1lbnQoKS5zZXRSZWFkeVN0YXRlKERvY3VtZW50OjpMb2FkaW5nKTsKIAogICAgIGlmIChtX3Bl
bmRpbmdTdGF0ZU9iamVjdCkgewotICAgICAgICBtX2ZyYW1lLmRvY3VtZW50KCktPnN0YXRlUG9w
cGVkKG1fcGVuZGluZ1N0YXRlT2JqZWN0LmdldCgpKTsKKyAgICAgICAgbV9mcmFtZS5kb2N1bWVu
dCgpLnN0YXRlUG9wcGVkKG1fcGVuZGluZ1N0YXRlT2JqZWN0LmdldCgpKTsKICAgICAgICAgbV9w
ZW5kaW5nU3RhdGVPYmplY3QuY2xlYXIoKTsKICAgICB9CiAKQEAgLTcwMywzMiArNzA1LDMyIEBA
IHZvaWQgRnJhbWVMb2FkZXI6OmRpZEJlZ2luRG9jdW1lbnQoYm9vbCBkaXNwYXRjaCkKICAgICAg
ICAgZGlzcGF0Y2hEaWRDbGVhcldpbmRvd09iamVjdHNJbkFsbFdvcmxkcygpOwogCiAgICAgdXBk
YXRlRmlyc3RQYXJ0eUZvckNvb2tpZXMoKTsKLSAgICBtX2ZyYW1lLmRvY3VtZW50KCktPmluaXRD
b250ZW50U2VjdXJpdHlQb2xpY3koKTsKKyAgICBtX2ZyYW1lLmRvY3VtZW50KCkuaW5pdENvbnRl
bnRTZWN1cml0eVBvbGljeSgpOwogCiAgICAgY29uc3QgU2V0dGluZ3MmIHNldHRpbmdzID0gbV9m
cmFtZS5zZXR0aW5ncygpOwotICAgIG1fZnJhbWUuZG9jdW1lbnQoKS0+Y2FjaGVkUmVzb3VyY2VM
b2FkZXIoKS0+c2V0SW1hZ2VzRW5hYmxlZChzZXR0aW5ncy5hcmVJbWFnZXNFbmFibGVkKCkpOwot
ICAgIG1fZnJhbWUuZG9jdW1lbnQoKS0+Y2FjaGVkUmVzb3VyY2VMb2FkZXIoKS0+c2V0QXV0b0xv
YWRJbWFnZXMoc2V0dGluZ3MubG9hZHNJbWFnZXNBdXRvbWF0aWNhbGx5KCkpOworICAgIG1fZnJh
bWUuZG9jdW1lbnQoKS5jYWNoZWRSZXNvdXJjZUxvYWRlcigpLT5zZXRJbWFnZXNFbmFibGVkKHNl
dHRpbmdzLmFyZUltYWdlc0VuYWJsZWQoKSk7CisgICAgbV9mcmFtZS5kb2N1bWVudCgpLmNhY2hl
ZFJlc291cmNlTG9hZGVyKCktPnNldEF1dG9Mb2FkSW1hZ2VzKHNldHRpbmdzLmxvYWRzSW1hZ2Vz
QXV0b21hdGljYWxseSgpKTsKIAogICAgIGlmIChtX2RvY3VtZW50TG9hZGVyKSB7CiAgICAgICAg
IFN0cmluZyBkbnNQcmVmZXRjaENvbnRyb2wgPSBtX2RvY3VtZW50TG9hZGVyLT5yZXNwb25zZSgp
Lmh0dHBIZWFkZXJGaWVsZCgiWC1ETlMtUHJlZmV0Y2gtQ29udHJvbCIpOwogICAgICAgICBpZiAo
IWRuc1ByZWZldGNoQ29udHJvbC5pc0VtcHR5KCkpCi0gICAgICAgICAgICBtX2ZyYW1lLmRvY3Vt
ZW50KCktPnBhcnNlRE5TUHJlZmV0Y2hDb250cm9sSGVhZGVyKGRuc1ByZWZldGNoQ29udHJvbCk7
CisgICAgICAgICAgICBtX2ZyYW1lLmRvY3VtZW50KCkucGFyc2VETlNQcmVmZXRjaENvbnRyb2xI
ZWFkZXIoZG5zUHJlZmV0Y2hDb250cm9sKTsKIAogICAgICAgICBTdHJpbmcgcG9saWN5VmFsdWUg
PSBtX2RvY3VtZW50TG9hZGVyLT5yZXNwb25zZSgpLmh0dHBIZWFkZXJGaWVsZCgiQ29udGVudC1T
ZWN1cml0eS1Qb2xpY3kiKTsKICAgICAgICAgaWYgKCFwb2xpY3lWYWx1ZS5pc0VtcHR5KCkpCi0g
ICAgICAgICAgICBtX2ZyYW1lLmRvY3VtZW50KCktPmNvbnRlbnRTZWN1cml0eVBvbGljeSgpLT5k
aWRSZWNlaXZlSGVhZGVyKHBvbGljeVZhbHVlLCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OkVuZm9y
Y2UpOworICAgICAgICAgICAgbV9mcmFtZS5kb2N1bWVudCgpLmNvbnRlbnRTZWN1cml0eVBvbGlj
eSgpLT5kaWRSZWNlaXZlSGVhZGVyKHBvbGljeVZhbHVlLCBDb250ZW50U2VjdXJpdHlQb2xpY3k6
OkVuZm9yY2UpOwogCiAgICAgICAgIHBvbGljeVZhbHVlID0gbV9kb2N1bWVudExvYWRlci0+cmVz
cG9uc2UoKS5odHRwSGVhZGVyRmllbGQoIkNvbnRlbnQtU2VjdXJpdHktUG9saWN5LVJlcG9ydC1P
bmx5Iik7CiAgICAgICAgIGlmICghcG9saWN5VmFsdWUuaXNFbXB0eSgpKQotICAgICAgICAgICAg
bV9mcmFtZS5kb2N1bWVudCgpLT5jb250ZW50U2VjdXJpdHlQb2xpY3koKS0+ZGlkUmVjZWl2ZUhl
YWRlcihwb2xpY3lWYWx1ZSwgQ29udGVudFNlY3VyaXR5UG9saWN5OjpSZXBvcnQpOworICAgICAg
ICAgICAgbV9mcmFtZS5kb2N1bWVudCgpLmNvbnRlbnRTZWN1cml0eVBvbGljeSgpLT5kaWRSZWNl
aXZlSGVhZGVyKHBvbGljeVZhbHVlLCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OlJlcG9ydCk7CiAK
ICAgICAgICAgcG9saWN5VmFsdWUgPSBtX2RvY3VtZW50TG9hZGVyLT5yZXNwb25zZSgpLmh0dHBI
ZWFkZXJGaWVsZCgiWC1XZWJLaXQtQ1NQIik7CiAgICAgICAgIGlmICghcG9saWN5VmFsdWUuaXNF
bXB0eSgpKQotICAgICAgICAgICAgbV9mcmFtZS5kb2N1bWVudCgpLT5jb250ZW50U2VjdXJpdHlQ
b2xpY3koKS0+ZGlkUmVjZWl2ZUhlYWRlcihwb2xpY3lWYWx1ZSwgQ29udGVudFNlY3VyaXR5UG9s
aWN5OjpQcmVmaXhlZEVuZm9yY2UpOworICAgICAgICAgICAgbV9mcmFtZS5kb2N1bWVudCgpLmNv
bnRlbnRTZWN1cml0eVBvbGljeSgpLT5kaWRSZWNlaXZlSGVhZGVyKHBvbGljeVZhbHVlLCBDb250
ZW50U2VjdXJpdHlQb2xpY3k6OlByZWZpeGVkRW5mb3JjZSk7CiAKICAgICAgICAgcG9saWN5VmFs
dWUgPSBtX2RvY3VtZW50TG9hZGVyLT5yZXNwb25zZSgpLmh0dHBIZWFkZXJGaWVsZCgiWC1XZWJL
aXQtQ1NQLVJlcG9ydC1Pbmx5Iik7CiAgICAgICAgIGlmICghcG9saWN5VmFsdWUuaXNFbXB0eSgp
KQotICAgICAgICAgICAgbV9mcmFtZS5kb2N1bWVudCgpLT5jb250ZW50U2VjdXJpdHlQb2xpY3ko
KS0+ZGlkUmVjZWl2ZUhlYWRlcihwb2xpY3lWYWx1ZSwgQ29udGVudFNlY3VyaXR5UG9saWN5OjpQ
cmVmaXhlZFJlcG9ydCk7CisgICAgICAgICAgICBtX2ZyYW1lLmRvY3VtZW50KCkuY29udGVudFNl
Y3VyaXR5UG9saWN5KCktPmRpZFJlY2VpdmVIZWFkZXIocG9saWN5VmFsdWUsIENvbnRlbnRTZWN1
cml0eVBvbGljeTo6UHJlZml4ZWRSZXBvcnQpOwogCiAgICAgICAgIFN0cmluZyBoZWFkZXJDb250
ZW50TGFuZ3VhZ2UgPSBtX2RvY3VtZW50TG9hZGVyLT5yZXNwb25zZSgpLmh0dHBIZWFkZXJGaWVs
ZCgiQ29udGVudC1MYW5ndWFnZSIpOwogICAgICAgICBpZiAoIWhlYWRlckNvbnRlbnRMYW5ndWFn
ZS5pc0VtcHR5KCkpIHsKQEAgLTczNiw3ICs3MzgsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpkaWRC
ZWdpbkRvY3VtZW50KGJvb2wgZGlzcGF0Y2gpCiAgICAgICAgICAgICBoZWFkZXJDb250ZW50TGFu
Z3VhZ2UudHJ1bmNhdGUoY29tbWFJbmRleCk7IC8vIG5vdEZvdW5kID09IC0xID09IGRvbid0IHRy
dW5jYXRlCiAgICAgICAgICAgICBoZWFkZXJDb250ZW50TGFuZ3VhZ2UgPSBoZWFkZXJDb250ZW50
TGFuZ3VhZ2Uuc3RyaXBXaGl0ZVNwYWNlKGlzSFRNTFNwYWNlKTsKICAgICAgICAgICAgIGlmICgh
aGVhZGVyQ29udGVudExhbmd1YWdlLmlzRW1wdHkoKSkKLSAgICAgICAgICAgICAgICBtX2ZyYW1l
LmRvY3VtZW50KCktPnNldENvbnRlbnRMYW5ndWFnZShoZWFkZXJDb250ZW50TGFuZ3VhZ2UpOwor
ICAgICAgICAgICAgICAgIG1fZnJhbWUuZG9jdW1lbnQoKS5zZXRDb250ZW50TGFuZ3VhZ2UoaGVh
ZGVyQ29udGVudExhbmd1YWdlKTsKICAgICAgICAgfQogICAgIH0KIApAQCAtNzY1LDcgKzc2Nyw3
IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmZpbmlzaGVkUGFyc2luZygpCiAgICAgLy8gQ2hlY2sgaWYg
dGhlIHNjcm9sbGJhcnMgYXJlIHJlYWxseSBuZWVkZWQgZm9yIHRoZSBjb250ZW50LgogICAgIC8v
IElmIG5vdCwgcmVtb3ZlIHRoZW0sIHJlbGF5b3V0LCBhbmQgcmVwYWludC4KICAgICBtX2ZyYW1l
LnZpZXcoKS0+cmVzdG9yZVNjcm9sbGJhcigpOwotICAgIHNjcm9sbFRvRnJhZ21lbnRXaXRoUGFy
ZW50Qm91bmRhcnkobV9mcmFtZS5kb2N1bWVudCgpLT51cmwoKSk7CisgICAgc2Nyb2xsVG9GcmFn
bWVudFdpdGhQYXJlbnRCb3VuZGFyeShtX2ZyYW1lLmRvY3VtZW50KCkudXJsKCkpOwogfQogCiB2
b2lkIEZyYW1lTG9hZGVyOjpsb2FkRG9uZSgpCkBAIC04MDEsMTUgKzgwMywxNSBAQCB2b2lkIEZy
YW1lTG9hZGVyOjpjaGVja0NvbXBsZXRlZCgpCiAgICAgICAgIHJldHVybjsKIAogICAgIC8vIEFy
ZSB3ZSBzdGlsbCBwYXJzaW5nPwotICAgIGlmIChtX2ZyYW1lLmRvY3VtZW50KCktPnBhcnNpbmco
KSkKKyAgICBpZiAobV9mcmFtZS5kb2N1bWVudCgpLnBhcnNpbmcoKSkKICAgICAgICAgcmV0dXJu
OwogCiAgICAgLy8gU3RpbGwgd2FpdGluZyBmb3IgaW1hZ2VzL3NjcmlwdHM/Ci0gICAgaWYgKG1f
ZnJhbWUuZG9jdW1lbnQoKS0+Y2FjaGVkUmVzb3VyY2VMb2FkZXIoKS0+cmVxdWVzdENvdW50KCkp
CisgICAgaWYgKG1fZnJhbWUuZG9jdW1lbnQoKS5jYWNoZWRSZXNvdXJjZUxvYWRlcigpLT5yZXF1
ZXN0Q291bnQoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gU3RpbGwgd2FpdGluZyBmb3Ig
ZWxlbWVudHMgdGhhdCBkb24ndCBnbyB0aHJvdWdoIGEgRnJhbWVMb2FkZXI/Ci0gICAgaWYgKG1f
ZnJhbWUuZG9jdW1lbnQoKS0+aXNEZWxheWluZ0xvYWRFdmVudCgpKQorICAgIGlmIChtX2ZyYW1l
LmRvY3VtZW50KCkuaXNEZWxheWluZ0xvYWRFdmVudCgpKQogICAgICAgICByZXR1cm47CiAKICAg
ICAvLyBBbnkgZnJhbWUgdGhhdCBoYXNuJ3QgY29tcGxldGVkIHlldD8KQEAgLTgxOSwxNyArODIx
LDE3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmNoZWNrQ29tcGxldGVkKCkKICAgICAvLyBPSywgY29t
cGxldGVkLgogICAgIG1faXNDb21wbGV0ZSA9IHRydWU7CiAgICAgbV9yZXF1ZXN0ZWRIaXN0b3J5
SXRlbSA9IDA7Ci0gICAgbV9mcmFtZS5kb2N1bWVudCgpLT5zZXRSZWFkeVN0YXRlKERvY3VtZW50
OjpDb21wbGV0ZSk7CisgICAgbV9mcmFtZS5kb2N1bWVudCgpLnNldFJlYWR5U3RhdGUoRG9jdW1l
bnQ6OkNvbXBsZXRlKTsKIAogI2lmIFBMQVRGT1JNKElPUykKLSAgICBpZiAobV9mcmFtZS5kb2N1
bWVudCgpLT51cmwoKS5pc0VtcHR5KCkpIHsKKyAgICBpZiAobV9mcmFtZS5kb2N1bWVudCgpLnVy
bCgpLmlzRW1wdHkoKSkgewogICAgICAgICAvLyBXZSBuZWVkIHRvIHVwZGF0ZSB0aGUgZG9jdW1l
bnQgVVJMIG9mIGEgUERGIGRvY3VtZW50IHRvIGJlIG5vbi1lbXB0eSBzbyB0aGF0IGJvdGggYmFj
ay9mb3J3YXJkIGhpc3RvcnkgbmF2aWdhdGlvbgogICAgICAgICAvLyBiZXR3ZWVuIFBERiBwYWdl
cyBhbmQgZnJhZ21lbnQgbmF2aWdhdGlvbiB3b3Jrcy4gU2VlIDxyZGFyOi8vcHJvYmxlbS85NTQ0
NzY5PiBmb3IgbW9yZSBkZXRhaWxzLgogICAgICAgICAvLyBGSVhNRTogSXMgdGhlcmUgYSBiZXR0
ZXIgcGxhY2UgZm9yIHRoaXMgY29kZSwgc2F5IERvY3VtZW50TG9hZGVyPyBBbHNvLCB3ZSBzaG91
bGQgZXhwbGljaXRseSBvbmx5IHVwZGF0ZSB0aGUgVVJMCiAgICAgICAgIC8vIG9mIHRoZSBkb2N1
bWVudCB3aGVuIGl0J3MgYSBQREZEb2N1bWVudCBvYmplY3QgaW5zdGVhZCBvZiBhc3N1bWluZyB0
aGF0IGEgRG9jdW1lbnQgb2JqZWN0IHdpdGggYW4gZW1wdHkgVVJMIGlzIGEgUERGRG9jdW1lbnQu
CiAgICAgICAgIC8vIEZJWE1FOiBUaGlzIGNvZGUgaXMgaW5jb3JyZWN0IGZvciBhIHN5bnRoZXNp
emVkIGRvY3VtZW50ICh3aGljaCBhbHNvIGhhcyBhbiBlbXB0eSBVUkwpLiBUaGUgVVJMIGZvciBh
IHN5bnRoZXNpemVkCiAgICAgICAgIC8vIGRvY3VtZW50IHNob3VsZCBiZSB0aGUgVVJMIHNwZWNp
ZmllZCB0byBGcmFtZUxvYWRlcjo6aW5pdEZvclN5bnRoZXNpemVkRG9jdW1lbnQoKS4KLSAgICAg
ICAgbV9mcmFtZS5kb2N1bWVudCgpLT5zZXRVUkwoYWN0aXZlRG9jdW1lbnRMb2FkZXIoKS0+ZG9j
dW1lbnRVUkwoKSk7CisgICAgICAgIG1fZnJhbWUuZG9jdW1lbnQoKS5zZXRVUkwoYWN0aXZlRG9j
dW1lbnRMb2FkZXIoKS0+ZG9jdW1lbnRVUkwoKSk7CiAgICAgfQogI2VuZGlmCiAKQEAgLTg3OSw3
ICs4ODEsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpzY2hlZHVsZUNoZWNrTG9hZENvbXBsZXRlKCkK
IAogdm9pZCBGcmFtZUxvYWRlcjo6Y2hlY2tDYWxsSW1wbGljaXRDbG9zZSgpCiB7Ci0gICAgaWYg
KG1fZGlkQ2FsbEltcGxpY2l0Q2xvc2UgfHwgbV9mcmFtZS5kb2N1bWVudCgpLT5wYXJzaW5nKCkg
fHwgbV9mcmFtZS5kb2N1bWVudCgpLT5pc0RlbGF5aW5nTG9hZEV2ZW50KCkpCisgICAgaWYgKG1f
ZGlkQ2FsbEltcGxpY2l0Q2xvc2UgfHwgbV9mcmFtZS5kb2N1bWVudCgpLnBhcnNpbmcoKSB8fCBt
X2ZyYW1lLmRvY3VtZW50KCkuaXNEZWxheWluZ0xvYWRFdmVudCgpKQogICAgICAgICByZXR1cm47
CiAKICAgICBpZiAoIWFsbENoaWxkcmVuQXJlQ29tcGxldGUoKSkKQEAgLTg4Nyw3ICs4ODksNyBA
QCB2b2lkIEZyYW1lTG9hZGVyOjpjaGVja0NhbGxJbXBsaWNpdENsb3NlKCkKIAogICAgIG1fZGlk
Q2FsbEltcGxpY2l0Q2xvc2UgPSB0cnVlOwogICAgIG1fd2FzVW5sb2FkRXZlbnRFbWl0dGVkID0g
ZmFsc2U7Ci0gICAgbV9mcmFtZS5kb2N1bWVudCgpLT5pbXBsaWNpdENsb3NlKCk7CisgICAgbV9m
cmFtZS5kb2N1bWVudCgpLmltcGxpY2l0Q2xvc2UoKTsKIH0KIAogdm9pZCBGcmFtZUxvYWRlcjo6
bG9hZFVSTEludG9DaGlsZEZyYW1lKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHJlZmVy
ZXIsIEZyYW1lKiBjaGlsZEZyYW1lKQpAQCAtOTA2LDcgKzkwOCw3IEBAIHZvaWQgRnJhbWVMb2Fk
ZXI6OmxvYWRVUkxJbnRvQ2hpbGRGcmFtZShjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBy
ZWZlcmVyLCBGCiAgICAgLy8gSWYgd2UncmUgbW92aW5nIGluIHRoZSBiYWNrL2ZvcndhcmQgbGlz
dCwgd2UgbWlnaHQgd2FudCB0byByZXBsYWNlIHRoZSBjb250ZW50CiAgICAgLy8gb2YgdGhpcyBj
aGlsZCBmcmFtZSB3aXRoIHdoYXRldmVyIHdhcyB0aGVyZSBhdCB0aGF0IHBvaW50LgogICAgIGlm
IChwYXJlbnRJdGVtICYmIHBhcmVudEl0ZW0tPmNoaWxkcmVuKCkuc2l6ZSgpICYmIGlzQmFja0Zv
cndhcmRMb2FkVHlwZShsb2FkVHlwZSgpKSAKLSAgICAgICAgJiYgIW1fZnJhbWUuZG9jdW1lbnQo
KS0+bG9hZEV2ZW50RmluaXNoZWQoKSkgeworICAgICAgICAmJiAhbV9mcmFtZS5kb2N1bWVudCgp
LmxvYWRFdmVudEZpbmlzaGVkKCkpIHsKICAgICAgICAgSGlzdG9yeUl0ZW0qIGNoaWxkSXRlbSA9
IHBhcmVudEl0ZW0tPmNoaWxkSXRlbVdpdGhUYXJnZXQoY2hpbGRGcmFtZS0+dHJlZSgpLnVuaXF1
ZU5hbWUoKSk7CiAgICAgICAgIGlmIChjaGlsZEl0ZW0pIHsKICAgICAgICAgICAgIGNoaWxkRnJh
bWUtPmxvYWRlcigpLm1fcmVxdWVzdGVkSGlzdG9yeUl0ZW0gPSBjaGlsZEl0ZW07CkBAIC05Nzks
NyArOTgxLDcgQEAgU3RyaW5nIEZyYW1lTG9hZGVyOjpvdXRnb2luZ1JlZmVycmVyKCkgY29uc3QK
ICAgICAvLyBTZWUgaHR0cDovL3d3dy53aGF0d2cub3JnL3NwZWNzL3dlYi1hcHBzL2N1cnJlbnQt
d29yay8jZmV0Y2hpbmctcmVzb3VyY2VzCiAgICAgLy8gZm9yIHdoeSB3ZSB3YWxrIHRoZSBwYXJl
bnQgY2hhaW4gZm9yIHNyY2RvYyBkb2N1bWVudHMuCiAgICAgRnJhbWUqIGZyYW1lID0gJm1fZnJh
bWU7Ci0gICAgd2hpbGUgKGZyYW1lLT5kb2N1bWVudCgpLT5pc1NyY2RvY0RvY3VtZW50KCkpIHsK
KyAgICB3aGlsZSAoZnJhbWUtPmRvY3VtZW50KCkuaXNTcmNkb2NEb2N1bWVudCgpKSB7CiAgICAg
ICAgIGZyYW1lID0gZnJhbWUtPnRyZWUoKS5wYXJlbnQoKTsKICAgICAgICAgLy8gU3JjZG9jIGRv
Y3VtZW50cyBjYW5ub3QgYmUgdG9wLWxldmVsIGRvY3VtZW50cywgYnkgZGVmaW5pdGlvbiwKICAg
ICAgICAgLy8gYmVjYXVzZSB0aGV5IG5lZWQgdG8gYmUgY29udGFpbmVkIGluIGlmcmFtZXMgd2l0
aCB0aGUgc3JjZG9jLgpAQCAtOTkwLDcgKzk5Miw3IEBAIFN0cmluZyBGcmFtZUxvYWRlcjo6b3V0
Z29pbmdSZWZlcnJlcigpIGNvbnN0CiAKIFN0cmluZyBGcmFtZUxvYWRlcjo6b3V0Z29pbmdPcmln
aW4oKSBjb25zdAogewotICAgIHJldHVybiBtX2ZyYW1lLmRvY3VtZW50KCktPnNlY3VyaXR5T3Jp
Z2luKCktPnRvU3RyaW5nKCk7CisgICAgcmV0dXJuIG1fZnJhbWUuZG9jdW1lbnQoKS5zZWN1cml0
eU9yaWdpbigpLT50b1N0cmluZygpOwogfQogCiBib29sIEZyYW1lTG9hZGVyOjpjaGVja0lmRm9y
bUFjdGlvbkFsbG93ZWRCeUNTUChjb25zdCBVUkwmIHVybCkgY29uc3QKQEAgLTk5OCw3ICsxMDAw
LDcgQEAgYm9vbCBGcmFtZUxvYWRlcjo6Y2hlY2tJZkZvcm1BY3Rpb25BbGxvd2VkQnlDU1AoY29u
c3QgVVJMJiB1cmwpIGNvbnN0CiAgICAgaWYgKG1fc3VibWl0dGVkRm9ybVVSTC5pc0VtcHR5KCkp
CiAgICAgICAgIHJldHVybiB0cnVlOwogCi0gICAgcmV0dXJuIG1fZnJhbWUuZG9jdW1lbnQoKS0+
Y29udGVudFNlY3VyaXR5UG9saWN5KCktPmFsbG93Rm9ybUFjdGlvbih1cmwpOworICAgIHJldHVy
biBtX2ZyYW1lLmRvY3VtZW50KCkuY29udGVudFNlY3VyaXR5UG9saWN5KCktPmFsbG93Rm9ybUFj
dGlvbih1cmwpOwogfQogCiBGcmFtZSogRnJhbWVMb2FkZXI6Om9wZW5lcigpCkBAIC0xMDE4LDcg
KzEwMjAsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpzZXRPcGVuZXIoRnJhbWUqIG9wZW5lcikKICAg
ICBtX29wZW5lciA9IG9wZW5lcjsKIAogICAgIGlmIChtX2ZyYW1lLmRvY3VtZW50KCkpCi0gICAg
ICAgIG1fZnJhbWUuZG9jdW1lbnQoKS0+aW5pdFNlY3VyaXR5Q29udGV4dCgpOworICAgICAgICBt
X2ZyYW1lLmRvY3VtZW50KCkuaW5pdFNlY3VyaXR5Q29udGV4dCgpOwogfQogCiAvLyBGSVhNRTog
VGhpcyBkb2VzIG5vdCBiZWxvbmcgaW4gRnJhbWVMb2FkZXIhCkBAIC0xMDQ4LDEzICsxMDUwLDEz
IEBAIHZvaWQgRnJhbWVMb2FkZXI6OnVwZGF0ZUZpcnN0UGFydHlGb3JDb29raWVzKCkKICAgICBp
ZiAobV9mcmFtZS50cmVlKCkucGFyZW50KCkpCiAgICAgICAgIHNldEZpcnN0UGFydHlGb3JDb29r
aWVzKG1fZnJhbWUudHJlZSgpLnBhcmVudCgpLT5kb2N1bWVudCgpLT5maXJzdFBhcnR5Rm9yQ29v
a2llcygpKTsKICAgICBlbHNlCi0gICAgICAgIHNldEZpcnN0UGFydHlGb3JDb29raWVzKG1fZnJh
bWUuZG9jdW1lbnQoKS0+dXJsKCkpOworICAgICAgICBzZXRGaXJzdFBhcnR5Rm9yQ29va2llcyht
X2ZyYW1lLmRvY3VtZW50KCkudXJsKCkpOwogfQogCiB2b2lkIEZyYW1lTG9hZGVyOjpzZXRGaXJz
dFBhcnR5Rm9yQ29va2llcyhjb25zdCBVUkwmIHVybCkKIHsKICAgICBmb3IgKEZyYW1lKiBmcmFt
ZSA9ICZtX2ZyYW1lOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgpLnRyYXZlcnNlTmV4dCgm
bV9mcmFtZSkpCi0gICAgICAgIGZyYW1lLT5kb2N1bWVudCgpLT5zZXRGaXJzdFBhcnR5Rm9yQ29v
a2llcyh1cmwpOworICAgICAgICBmcmFtZS0+ZG9jdW1lbnQoKS5zZXRGaXJzdFBhcnR5Rm9yQ29v
a2llcyh1cmwpOwogfQogCiAvLyBUaGlzIGRvZXMgdGhlIHNhbWUga2luZCBvZiB3b3JrIHRoYXQg
ZGlkT3BlblVSTCBkb2VzLCBleGNlcHQgaXQgcmVsaWVzIG9uIHRoZSBmYWN0CkBAIC0xMDY1LDgg
KzEwNjcsOCBAQCB2b2lkIEZyYW1lTG9hZGVyOjpsb2FkSW5TYW1lRG9jdW1lbnQoY29uc3QgVVJM
JiB1cmwsIFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdAogICAgIEFTU0VSVCghc3RhdGVPYmpl
Y3QgfHwgKHN0YXRlT2JqZWN0ICYmICFpc05ld05hdmlnYXRpb24pKTsKIAogICAgIC8vIFVwZGF0
ZSB0aGUgZGF0YSBzb3VyY2UncyByZXF1ZXN0IHdpdGggdGhlIG5ldyBVUkwgdG8gZmFrZSB0aGUg
VVJMIGNoYW5nZQotICAgIFVSTCBvbGRVUkwgPSBtX2ZyYW1lLmRvY3VtZW50KCktPnVybCgpOwot
ICAgIG1fZnJhbWUuZG9jdW1lbnQoKS0+c2V0VVJMKHVybCk7CisgICAgVVJMIG9sZFVSTCA9IG1f
ZnJhbWUuZG9jdW1lbnQoKS51cmwoKTsKKyAgICBtX2ZyYW1lLmRvY3VtZW50KCkuc2V0VVJMKHVy
bCk7CiAgICAgc2V0T3V0Z29pbmdSZWZlcnJlcih1cmwpOwogICAgIGRvY3VtZW50TG9hZGVyKCkt
PnJlcGxhY2VSZXF1ZXN0VVJMRm9yU2FtZURvY3VtZW50TmF2aWdhdGlvbih1cmwpOwogICAgIGlm
IChpc05ld05hdmlnYXRpb24gJiYgIXNob3VsZFRyZWF0VVJMQXNTYW1lQXNDdXJyZW50KHVybCkg
JiYgIXN0YXRlT2JqZWN0KSB7CkBAIC0xMTEyLDExICsxMTE0LDExIEBAIHZvaWQgRnJhbWVMb2Fk
ZXI6OmxvYWRJblNhbWVEb2N1bWVudChjb25zdCBVUkwmIHVybCwgUGFzc1JlZlB0cjxTZXJpYWxp
emVkU2NyaXB0CiAKICAgICBtX2NsaWVudC5kaXNwYXRjaERpZE5hdmlnYXRlV2l0aGluUGFnZSgp
OwogCi0gICAgbV9mcmFtZS5kb2N1bWVudCgpLT5zdGF0ZVBvcHBlZChzdGF0ZU9iamVjdCA/IHN0
YXRlT2JqZWN0IDogU2VyaWFsaXplZFNjcmlwdFZhbHVlOjpudWxsVmFsdWUoKSk7CisgICAgbV9m
cmFtZS5kb2N1bWVudCgpLnN0YXRlUG9wcGVkKHN0YXRlT2JqZWN0ID8gc3RhdGVPYmplY3QgOiBT
ZXJpYWxpemVkU2NyaXB0VmFsdWU6Om51bGxWYWx1ZSgpKTsKICAgICBtX2NsaWVudC5kaXNwYXRj
aERpZFBvcFN0YXRlV2l0aGluUGFnZSgpOwogICAgIAogICAgIGlmIChoYXNoQ2hhbmdlKSB7Ci0g
ICAgICAgIG1fZnJhbWUuZG9jdW1lbnQoKS0+ZW5xdWV1ZUhhc2hjaGFuZ2VFdmVudChvbGRVUkws
IHVybCk7CisgICAgICAgIG1fZnJhbWUuZG9jdW1lbnQoKS5lbnF1ZXVlSGFzaGNoYW5nZUV2ZW50
KG9sZFVSTCwgdXJsKTsKICAgICAgICAgbV9jbGllbnQuZGlzcGF0Y2hEaWRDaGFuZ2VMb2NhdGlv
bldpdGhpblBhZ2UoKTsKICAgICB9CiAgICAgCkBAIC0xMTc3LDcgKzExNzksNyBAQCB2b2lkIEZy
YW1lTG9hZGVyOjpwcmVwYXJlRm9yTG9hZFN0YXJ0KCkKICAgICBtX2NsaWVudC5kaXNwYXRjaERp
ZFN0YXJ0UHJvdmlzaW9uYWxMb2FkKCk7CiAKICAgICBpZiAoQVhPYmplY3RDYWNoZTo6YWNjZXNz
aWJpbGl0eUVuYWJsZWQoKSkgewotICAgICAgICBpZiAoQVhPYmplY3RDYWNoZSogY2FjaGUgPSBt
X2ZyYW1lLmRvY3VtZW50KCktPmV4aXN0aW5nQVhPYmplY3RDYWNoZSgpKSB7CisgICAgICAgIGlm
IChBWE9iamVjdENhY2hlKiBjYWNoZSA9IG1fZnJhbWUuZG9jdW1lbnQoKS5leGlzdGluZ0FYT2Jq
ZWN0Q2FjaGUoKSkgewogICAgICAgICAgICAgQVhPYmplY3RDYWNoZTo6QVhMb2FkaW5nRXZlbnQg
bG9hZGluZ0V2ZW50ID0gbG9hZFR5cGUoKSA9PSBGcmFtZUxvYWRUeXBlUmVsb2FkID8gQVhPYmpl
Y3RDYWNoZTo6QVhMb2FkaW5nUmVsb2FkZWQgOiBBWE9iamVjdENhY2hlOjpBWExvYWRpbmdTdGFy
dGVkOwogICAgICAgICAgICAgY2FjaGUtPmZyYW1lTG9hZGluZ0V2ZW50Tm90aWZpY2F0aW9uKCZt
X2ZyYW1lLCBsb2FkaW5nRXZlbnQpOwogICAgICAgICB9CkBAIC0xMjExLDcgKzEyMTMsNyBAQCB2
b2lkIEZyYW1lTG9hZGVyOjpsb2FkRnJhbWVSZXF1ZXN0KGNvbnN0IEZyYW1lTG9hZFJlcXVlc3Qm
IHJlcXVlc3QsIExvY2tIaXN0b3J5CiAgICAgaWYgKGFyZ3NSZWZlcnJlci5pc0VtcHR5KCkpCiAg
ICAgICAgIGFyZ3NSZWZlcnJlciA9IG91dGdvaW5nUmVmZXJyZXIoKTsKIAotICAgIFN0cmluZyBy
ZWZlcnJlciA9IFNlY3VyaXR5UG9saWN5OjpnZW5lcmF0ZVJlZmVycmVySGVhZGVyKG1fZnJhbWUu
ZG9jdW1lbnQoKS0+cmVmZXJyZXJQb2xpY3koKSwgdXJsLCBhcmdzUmVmZXJyZXIpOworICAgIFN0
cmluZyByZWZlcnJlciA9IFNlY3VyaXR5UG9saWN5OjpnZW5lcmF0ZVJlZmVycmVySGVhZGVyKG1f
ZnJhbWUuZG9jdW1lbnQoKS5yZWZlcnJlclBvbGljeSgpLCB1cmwsIGFyZ3NSZWZlcnJlcik7CiAg
ICAgaWYgKHNob3VsZFNlbmRSZWZlcnJlciA9PSBOZXZlclNlbmRSZWZlcnJlcikKICAgICAgICAg
cmVmZXJyZXIgPSBTdHJpbmcoKTsKICAgICAKQEAgLTEyNTcsNyArMTI1OSw3IEBAIHZvaWQgRnJh
bWVMb2FkZXI6OmxvYWRVUkwoY29uc3QgVVJMJiBuZXdVUkwsIGNvbnN0IFN0cmluZyYgcmVmZXJy
ZXIsIGNvbnN0IFN0cmluCiAgICAgfQogI2lmIEVOQUJMRShDQUNIRV9QQVJUSVRJT05JTkcpCiAg
ICAgaWYgKCZtX2ZyYW1lLnRyZWUoKS50b3AoKSAhPSAmbV9mcmFtZSkKLSAgICAgICAgcmVxdWVz
dC5zZXRDYWNoZVBhcnRpdGlvbihtX2ZyYW1lLnRyZWUoKS50b3AoKS5kb2N1bWVudCgpLT5zZWN1
cml0eU9yaWdpbigpLT5jYWNoZVBhcnRpdGlvbigpKTsKKyAgICAgICAgcmVxdWVzdC5zZXRDYWNo
ZVBhcnRpdGlvbihtX2ZyYW1lLnRyZWUoKS50b3AoKS5kb2N1bWVudCgpLnNlY3VyaXR5T3JpZ2lu
KCktPmNhY2hlUGFydGl0aW9uKCkpOwogI2VuZGlmCiAgICAgYWRkRXh0cmFGaWVsZHNUb1JlcXVl
c3QocmVxdWVzdCwgbmV3TG9hZFR5cGUsIHRydWUpOwogICAgIGlmIChuZXdMb2FkVHlwZSA9PSBG
cmFtZUxvYWRUeXBlUmVsb2FkIHx8IG5ld0xvYWRUeXBlID09IEZyYW1lTG9hZFR5cGVSZWxvYWRG
cm9tT3JpZ2luKQpAQCAtMTQyNyw3ICsxNDI5LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6bG9hZFdp
dGhEb2N1bWVudExvYWRlcihEb2N1bWVudExvYWRlciogbG9hZGVyLCBGcmFtZUxvYWRUeXBlIHQK
ICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKG1fZnJhbWUuZG9jdW1lbnQoKSkKLSAgICAgICAg
bV9wcmV2aW91c1VSTCA9IG1fZnJhbWUuZG9jdW1lbnQoKS0+dXJsKCk7CisgICAgICAgIG1fcHJl
dmlvdXNVUkwgPSBtX2ZyYW1lLmRvY3VtZW50KCkudXJsKCk7CiAKICAgICBwb2xpY3lDaGVja2Vy
KCkuc2V0TG9hZFR5cGUodHlwZSk7CiAgICAgUmVmUHRyPEZvcm1TdGF0ZT4gZm9ybVN0YXRlID0g
cHJwRm9ybVN0YXRlOwpAQCAtMTQ4MSw3ICsxNDgzLDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6cmVw
b3J0TG9jYWxMb2FkRmFpbGVkKEZyYW1lKiBmcmFtZSwgY29uc3QgU3RyaW5nJiB1cmwpCiAgICAg
aWYgKCFmcmFtZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgZnJhbWUtPmRvY3VtZW50KCktPmFk
ZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OlNlY3VyaXR5LCBNZXNzYWdlTGV2ZWw6OkVy
cm9yLCAiTm90IGFsbG93ZWQgdG8gbG9hZCBsb2NhbCByZXNvdXJjZTogIiArIHVybCk7CisgICAg
ZnJhbWUtPmRvY3VtZW50KCkuYWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6U2VjdXJp
dHksIE1lc3NhZ2VMZXZlbDo6RXJyb3IsICJOb3QgYWxsb3dlZCB0byBsb2FkIGxvY2FsIHJlc291
cmNlOiAiICsgdXJsKTsKIH0KIAogY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBGcmFtZUxvYWRlcjo6
aW5pdGlhbFJlcXVlc3QoKSBjb25zdApAQCAtMTU5Miw3ICsxNTk0LDcgQEAgdm9pZCBGcmFtZUxv
YWRlcjo6cmVsb2FkKGJvb2wgZW5kVG9FbmRSZWxvYWQpCiAKIHZvaWQgRnJhbWVMb2FkZXI6OnN0
b3BBbGxMb2FkZXJzKENsZWFyUHJvdmlzaW9uYWxJdGVtUG9saWN5IGNsZWFyUHJvdmlzaW9uYWxJ
dGVtUG9saWN5KQogewotICAgIEFTU0VSVCghbV9mcmFtZS5kb2N1bWVudCgpIHx8ICFtX2ZyYW1l
LmRvY3VtZW50KCktPmluUGFnZUNhY2hlKCkpOworICAgIEFTU0VSVCghbV9mcmFtZS5kb2N1bWVu
dCgpIHx8ICFtX2ZyYW1lLmRvY3VtZW50KCkuaW5QYWdlQ2FjaGUoKSk7CiAgICAgaWYgKG1fcGFn
ZURpc21pc3NhbEV2ZW50QmVpbmdEaXNwYXRjaGVkICE9IE5vRGlzbWlzc2FsKQogICAgICAgICBy
ZXR1cm47CiAKQEAgLTE3NDgsNyArMTc1MCw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmNvbW1pdFBy
b3Zpc2lvbmFsTG9hZCgpCiAgICAgICAgIGNhY2hlZFBhZ2UgPSBwYWdlQ2FjaGUoKS0+dGFrZSho
aXN0b3J5KCkucHJvdmlzaW9uYWxJdGVtKCkpOwogCiAgICAgTE9HKFBhZ2VDYWNoZSwgIldlYkNv
cmVMb2FkaW5nICVzOiBBYm91dCB0byBjb21taXQgcHJvdmlzaW9uYWwgbG9hZCBmcm9tIHByZXZp
b3VzIFVSTCAnJXMnIHRvIG5ldyBVUkwgJyVzJyIsIG1fZnJhbWUudHJlZSgpLnVuaXF1ZU5hbWUo
KS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpLAotICAgICAgICBtX2ZyYW1lLmRvY3VtZW50KCkgPyBt
X2ZyYW1lLmRvY3VtZW50KCktPnVybCgpLnN0cmluZ0NlbnRlckVsbGlwc2l6ZWRUb0xlbmd0aCgp
LnV0ZjgoKS5kYXRhKCkgOiAiIiwKKyAgICAgICAgbV9mcmFtZS5kb2N1bWVudCgpID8gbV9mcmFt
ZS5kb2N1bWVudCgpLnVybCgpLnN0cmluZ0NlbnRlckVsbGlwc2l6ZWRUb0xlbmd0aCgpLnV0Zjgo
KS5kYXRhKCkgOiAiIiwKICAgICAgICAgcGRsID8gcGRsLT51cmwoKS5zdHJpbmdDZW50ZXJFbGxp
cHNpemVkVG9MZW5ndGgoKS51dGY4KCkuZGF0YSgpIDogIjxubyBwcm92aXNpb25hbCBEb2N1bWVu
dExvYWRlcj4iKTsKIAogI2lmIFBMQVRGT1JNKElPUykKQEAgLTE4MjYsNyArMTgyOCw3IEBAIHZv
aWQgRnJhbWVMb2FkZXI6OmNvbW1pdFByb3Zpc2lvbmFsTG9hZCgpCiAgICAgICAgIGRpZE9wZW5V
UkwoKTsKIAogICAgIExPRyhMb2FkaW5nLCAiV2ViQ29yZUxvYWRpbmcgJXM6IEZpbmlzaGVkIGNv
bW1pdHRpbmcgcHJvdmlzaW9uYWwgbG9hZCB0byBVUkwgJXMiLCBtX2ZyYW1lLnRyZWUoKS51bmlx
dWVOYW1lKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSwKLSAgICAgICAgbV9mcmFtZS5kb2N1bWVu
dCgpID8gbV9mcmFtZS5kb2N1bWVudCgpLT51cmwoKS5zdHJpbmdDZW50ZXJFbGxpcHNpemVkVG9M
ZW5ndGgoKS51dGY4KCkuZGF0YSgpIDogIiIpOworICAgICAgICBtX2ZyYW1lLmRvY3VtZW50KCkg
PyBtX2ZyYW1lLmRvY3VtZW50KCkudXJsKCkuc3RyaW5nQ2VudGVyRWxsaXBzaXplZFRvTGVuZ3Ro
KCkudXRmOCgpLmRhdGEoKSA6ICIiKTsKIAogICAgIGlmIChtX2xvYWRUeXBlID09IEZyYW1lTG9h
ZFR5cGVTdGFuZGFyZCAmJiBtX2RvY3VtZW50TG9hZGVyLT5pc0NsaWVudFJlZGlyZWN0KCkpCiAg
ICAgICAgIGhpc3RvcnkoKS51cGRhdGVGb3JDbGllbnRSZWRpcmVjdCgpOwpAQCAtMTgzNCwxMCAr
MTgzNiwxMCBAQCB2b2lkIEZyYW1lTG9hZGVyOjpjb21taXRQcm92aXNpb25hbExvYWQoKQogICAg
IGlmIChtX2xvYWRpbmdGcm9tQ2FjaGVkUGFnZSkgewogI2lmIFBMQVRGT1JNKElPUykKICAgICAg
ICAgLy8gTm90ZSwgZGlkUmVjZWl2ZURvY1R5cGUgaXMgZXhwZWN0ZWQgdG8gYmUgY2FsbGVkIGZv
ciBjYWNoZWQgcGFnZXMuIFNlZSA8cmRhcjovL3Byb2JsZW0vNTkwNjc1OD4gZm9yIG1vcmUgZGV0
YWlscy4KLSAgICAgICAgaWYgKG1fZnJhbWUuZG9jdW1lbnQoKS0+ZG9jdHlwZSgpICYmIG1fZnJh
bWUucGFnZSgpKQorICAgICAgICBpZiAobV9mcmFtZS5kb2N1bWVudCgpLmRvY3R5cGUoKSAmJiBt
X2ZyYW1lLnBhZ2UoKSkKICAgICAgICAgICAgIG1fZnJhbWUucGFnZSgpLT5jaHJvbWUoKS5kaWRS
ZWNlaXZlRG9jVHlwZSgmbV9mcmFtZSk7CiAjZW5kaWYKLSAgICAgICAgbV9mcmFtZS5kb2N1bWVu
dCgpLT5kb2N1bWVudERpZFJlc3VtZUZyb21QYWdlQ2FjaGUoKTsKKyAgICAgICAgbV9mcmFtZS5k
b2N1bWVudCgpLmRvY3VtZW50RGlkUmVzdW1lRnJvbVBhZ2VDYWNoZSgpOwogCiAgICAgICAgIC8v
IEZvcmNlIGEgbGF5b3V0IHRvIHVwZGF0ZSB2aWV3IHNpemUgYW5kIHRoZXJlYnkgdXBkYXRlIHNj
cm9sbGJhcnMuCiAjaWYgUExBVEZPUk0oSU9TKQpAQCAtMjA0Nyw3ICsyMDQ5LDcgQEAgdm9pZCBG
cmFtZUxvYWRlcjo6cHJlcGFyZUZvckNhY2hlZFBhZ2VSZXN0b3JlKCkKICAgICAKICAgICAvLyBE
ZWxldGUgb2xkIHN0YXR1cyBiYXIgbWVzc2FnZXMgKGlmIGl0IF93YXNfIGFjdGl2YXRlZCBvbiBs
YXN0IFVSTCkuCiAgICAgaWYgKG1fZnJhbWUuc2NyaXB0KCkuY2FuRXhlY3V0ZVNjcmlwdHMoTm90
QWJvdXRUb0V4ZWN1dGVTY3JpcHQpKSB7Ci0gICAgICAgIERPTVdpbmRvdyogd2luZG93ID0gbV9m
cmFtZS5kb2N1bWVudCgpLT5kb21XaW5kb3coKTsKKyAgICAgICAgRE9NV2luZG93KiB3aW5kb3cg
PSBtX2ZyYW1lLmRvY3VtZW50KCkuZG9tV2luZG93KCk7CiAgICAgICAgIHdpbmRvdy0+c2V0U3Rh
dHVzKFN0cmluZygpKTsKICAgICAgICAgd2luZG93LT5zZXREZWZhdWx0U3RhdHVzKFN0cmluZygp
KTsKICAgICB9CkBAIC0yMjY4LDcgKzIyNzAsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpjaGVja0xv
YWRDb21wbGV0ZUZvclRoaXNGcmFtZSgpCiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIC8v
IE5vdGlmeSBhY2Nlc3NpYmlsaXR5LgotICAgICAgICAgICAgaWYgKEFYT2JqZWN0Q2FjaGUqIGNh
Y2hlID0gbV9mcmFtZS5kb2N1bWVudCgpLT5leGlzdGluZ0FYT2JqZWN0Q2FjaGUoKSkKKyAgICAg
ICAgICAgIGlmIChBWE9iamVjdENhY2hlKiBjYWNoZSA9IG1fZnJhbWUuZG9jdW1lbnQoKS5leGlz
dGluZ0FYT2JqZWN0Q2FjaGUoKSkKICAgICAgICAgICAgICAgICBjYWNoZS0+ZnJhbWVMb2FkaW5n
RXZlbnROb3RpZmljYXRpb24oJm1fZnJhbWUsIGxvYWRpbmdFdmVudCk7CiAKICAgICAgICAgICAg
IHJldHVybjsKQEAgLTIzMDUsNyArMjMwNyw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmNvbnRpbnVl
TG9hZEFmdGVyV2lsbFN1Ym1pdEZvcm0oKQogCiBzdGF0aWMgVVJMIG9yaWdpbmF0aW5nVVJMRnJv
bUJhY2tGb3J3YXJkTGlzdChQYWdlKiBwYWdlKQogewotICAgIC8vIEZJWE1FOiBDYW4gdGhpcyBs
b2dpYyBiZSByZXBsYWNlZCB3aXRoIG1fZnJhbWUuZG9jdW1lbnQoKS0+Zmlyc3RQYXJ0eUZvckNv
b2tpZXMoKT8KKyAgICAvLyBGSVhNRTogQ2FuIHRoaXMgbG9naWMgYmUgcmVwbGFjZWQgd2l0aCBt
X2ZyYW1lLmRvY3VtZW50KCkuZmlyc3RQYXJ0eUZvckNvb2tpZXMoKT8KICAgICAvLyBJdCBoYXMg
dGhlIHNhbWUgbWVhbmluZyBvZiAicGFnZSBhIHVzZXIgdGhpbmtzIGlzIHRoZSBjdXJyZW50IG9u
ZSIuCiAKICAgICBVUkwgb3JpZ2luYWxVUkw7CkBAIC0yNDQxLDExICsyNDQzLDExIEBAIHZvaWQg
RnJhbWVMb2FkZXI6OmNoZWNrTG9hZENvbXBsZXRlKCkKIGludCBGcmFtZUxvYWRlcjo6bnVtUGVu
ZGluZ09yTG9hZGluZ1JlcXVlc3RzKGJvb2wgcmVjdXJzZSkgY29uc3QKIHsKICAgICBpZiAoIXJl
Y3Vyc2UpCi0gICAgICAgIHJldHVybiBtX2ZyYW1lLmRvY3VtZW50KCktPmNhY2hlZFJlc291cmNl
TG9hZGVyKCktPnJlcXVlc3RDb3VudCgpOworICAgICAgICByZXR1cm4gbV9mcmFtZS5kb2N1bWVu
dCgpLmNhY2hlZFJlc291cmNlTG9hZGVyKCktPnJlcXVlc3RDb3VudCgpOwogCiAgICAgaW50IGNv
dW50ID0gMDsKICAgICBmb3IgKEZyYW1lKiBmcmFtZSA9ICZtX2ZyYW1lOyBmcmFtZTsgZnJhbWUg
PSBmcmFtZS0+dHJlZSgpLnRyYXZlcnNlTmV4dCgmbV9mcmFtZSkpCi0gICAgICAgIGNvdW50ICs9
IGZyYW1lLT5kb2N1bWVudCgpLT5jYWNoZWRSZXNvdXJjZUxvYWRlcigpLT5yZXF1ZXN0Q291bnQo
KTsKKyAgICAgICAgY291bnQgKz0gZnJhbWUtPmRvY3VtZW50KCkuY2FjaGVkUmVzb3VyY2VMb2Fk
ZXIoKS0+cmVxdWVzdENvdW50KCk7CiAgICAgcmV0dXJuIGNvdW50OwogfQogCkBAIC0yNDY1LDcg
KzI0NjcsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpoYW5kbGVkT25sb2FkRXZlbnRzKCkKIHZvaWQg
RnJhbWVMb2FkZXI6OmZyYW1lRGV0YWNoZWQoKQogewogICAgIHN0b3BBbGxMb2FkZXJzKCk7Ci0g
ICAgbV9mcmFtZS5kb2N1bWVudCgpLT5zdG9wQWN0aXZlRE9NT2JqZWN0cygpOworICAgIG1fZnJh
bWUuZG9jdW1lbnQoKS5zdG9wQWN0aXZlRE9NT2JqZWN0cygpOwogICAgIGRldGFjaEZyb21QYXJl
bnQoKTsKIH0KIApAQCAtMjU3NSw3ICsyNTc3LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6YWRkRXh0
cmFGaWVsZHNUb1JlcXVlc3QoUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBGcmFtZUxvYWRUeXAK
ICAgICAvLyBPbmx5IHNldCBmYWxsYmFjayBhcnJheSBpZiBpdCdzIHN0aWxsIGVtcHR5IChsYXRl
ciBhdHRlbXB0cyBtYXkgYmUgaW5jb3JyZWN0LCBzZWUgYnVnIDExNzgxOCkuCiAgICAgaWYgKHJl
cXVlc3QucmVzcG9uc2VDb250ZW50RGlzcG9zaXRpb25FbmNvZGluZ0ZhbGxiYWNrQXJyYXkoKS5p
c0VtcHR5KCkpIHsKICAgICAgICAgLy8gQWx3YXlzIHRyeSBVVEYtOC4gSWYgdGhhdCBmYWlscywg
dHJ5IGZyYW1lIGVuY29kaW5nIChpZiBhbnkpIGFuZCB0aGVuIHRoZSBkZWZhdWx0LgotICAgICAg
ICByZXF1ZXN0LnNldFJlc3BvbnNlQ29udGVudERpc3Bvc2l0aW9uRW5jb2RpbmdGYWxsYmFja0Fy
cmF5KCJVVEYtOCIsIG1fZnJhbWUuZG9jdW1lbnQoKS0+ZW5jb2RpbmcoKSwgbV9mcmFtZS5zZXR0
aW5ncygpLmRlZmF1bHRUZXh0RW5jb2RpbmdOYW1lKCkpOworICAgICAgICByZXF1ZXN0LnNldFJl
c3BvbnNlQ29udGVudERpc3Bvc2l0aW9uRW5jb2RpbmdGYWxsYmFja0FycmF5KCJVVEYtOCIsIG1f
ZnJhbWUuZG9jdW1lbnQoKS5lbmNvZGluZygpLCBtX2ZyYW1lLnNldHRpbmdzKCkuZGVmYXVsdFRl
eHRFbmNvZGluZ05hbWUoKSk7CiAgICAgfQogfQogCkBAIC0yNjU3LDcgKzI2NTksNyBAQCB2b2lk
IEZyYW1lTG9hZGVyOjpsb2FkUG9zdFJlcXVlc3QoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiBpblJl
cXVlc3QsIGNvbnN0IFN0cmluZwogdW5zaWduZWQgbG9uZyBGcmFtZUxvYWRlcjo6bG9hZFJlc291
cmNlU3luY2hyb25vdXNseShjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIFN0b3JlZENy
ZWRlbnRpYWxzIHN0b3JlZENyZWRlbnRpYWxzLCBDbGllbnRDcmVkZW50aWFsUG9saWN5IGNsaWVu
dENyZWRlbnRpYWxQb2xpY3ksIFJlc291cmNlRXJyb3ImIGVycm9yLCBSZXNvdXJjZVJlc3BvbnNl
JiByZXNwb25zZSwgVmVjdG9yPGNoYXI+JiBkYXRhKQogewogICAgIEFTU0VSVChtX2ZyYW1lLmRv
Y3VtZW50KCkpOwotICAgIFN0cmluZyByZWZlcnJlciA9IFNlY3VyaXR5UG9saWN5OjpnZW5lcmF0
ZVJlZmVycmVySGVhZGVyKG1fZnJhbWUuZG9jdW1lbnQoKS0+cmVmZXJyZXJQb2xpY3koKSwgcmVx
dWVzdC51cmwoKSwgb3V0Z29pbmdSZWZlcnJlcigpKTsKKyAgICBTdHJpbmcgcmVmZXJyZXIgPSBT
ZWN1cml0eVBvbGljeTo6Z2VuZXJhdGVSZWZlcnJlckhlYWRlcihtX2ZyYW1lLmRvY3VtZW50KCku
cmVmZXJyZXJQb2xpY3koKSwgcmVxdWVzdC51cmwoKSwgb3V0Z29pbmdSZWZlcnJlcigpKTsKICAg
ICAKICAgICBSZXNvdXJjZVJlcXVlc3QgaW5pdGlhbFJlcXVlc3QgPSByZXF1ZXN0OwogICAgIGlu
aXRpYWxSZXF1ZXN0LnNldFRpbWVvdXRJbnRlcnZhbCgxMCk7CkBAIC0yNzU1LDEwICsyNzU3LDEw
IEBAIGJvb2wgRnJhbWVMb2FkZXI6OnNob3VsZFBlcmZvcm1GcmFnbWVudE5hdmlnYXRpb24oYm9v
bCBpc0Zvcm1TdWJtaXNzaW9uLCBjb25zdCBTCiAgICAgICAgICYmIGxvYWRUeXBlICE9IEZyYW1l
TG9hZFR5cGVSZWxvYWQKICAgICAgICAgJiYgbG9hZFR5cGUgIT0gRnJhbWVMb2FkVHlwZVJlbG9h
ZEZyb21PcmlnaW4KICAgICAgICAgJiYgbG9hZFR5cGUgIT0gRnJhbWVMb2FkVHlwZVNhbWUKLSAg
ICAgICAgJiYgIXNob3VsZFJlbG9hZChtX2ZyYW1lLmRvY3VtZW50KCktPnVybCgpLCB1cmwpCisg
ICAgICAgICYmICFzaG91bGRSZWxvYWQobV9mcmFtZS5kb2N1bWVudCgpLnVybCgpLCB1cmwpCiAg
ICAgICAgIC8vIFdlIGRvbid0IHdhbnQgdG8ganVzdCBzY3JvbGwgaWYgYSBsaW5rIGZyb20gd2l0
aGluIGEKICAgICAgICAgLy8gZnJhbWVzZXQgaXMgdHJ5aW5nIHRvIHJlbG9hZCB0aGUgZnJhbWVz
ZXQgaW50byBfdG9wLgotICAgICAgICAmJiAhbV9mcmFtZS5kb2N1bWVudCgpLT5pc0ZyYW1lU2V0
KCk7CisgICAgICAgICYmICFtX2ZyYW1lLmRvY3VtZW50KCkuaXNGcmFtZVNldCgpOwogfQogCiB2
b2lkIEZyYW1lTG9hZGVyOjpzY3JvbGxUb0ZyYWdtZW50V2l0aFBhcmVudEJvdW5kYXJ5KGNvbnN0
IFVSTCYgdXJsKQpAQCAtMjc2OCw3ICsyNzcwLDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6c2Nyb2xs
VG9GcmFnbWVudFdpdGhQYXJlbnRCb3VuZGFyeShjb25zdCBVUkwmIHVybCkKICAgICAgICAgcmV0
dXJuOwogCiAgICAgLy8gTGVha2luZyBzY3JvbGwgcG9zaXRpb24gdG8gYSBjcm9zcy1vcmlnaW4g
YW5jZXN0b3Igd291bGQgcGVybWl0IHRoZSBzby1jYWxsZWQgImZyYW1lc25pZmZpbmciIGF0dGFj
ay4KLSAgICBSZWZQdHI8RnJhbWU+IGJvdW5kYXJ5RnJhbWUodXJsLmhhc0ZyYWdtZW50SWRlbnRp
ZmllcigpID8gbV9mcmFtZS5kb2N1bWVudCgpLT5maW5kVW5zYWZlUGFyZW50U2Nyb2xsUHJvcGFn
YXRpb25Cb3VuZGFyeSgpIDogMCk7CisgICAgUmVmUHRyPEZyYW1lPiBib3VuZGFyeUZyYW1lKHVy
bC5oYXNGcmFnbWVudElkZW50aWZpZXIoKSA/IG1fZnJhbWUuZG9jdW1lbnQoKS5maW5kVW5zYWZl
UGFyZW50U2Nyb2xsUHJvcGFnYXRpb25Cb3VuZGFyeSgpIDogMCk7CiAKICAgICBpZiAoYm91bmRh
cnlGcmFtZSkKICAgICAgICAgYm91bmRhcnlGcmFtZS0+dmlldygpLT5zZXRTYWZlVG9Qcm9wYWdh
dGVTY3JvbGxUb1BhcmVudChmYWxzZSk7CkBAIC0yODE4LDcgKzI4MjAsNyBAQCBib29sIEZyYW1l
TG9hZGVyOjpzaG91bGRDbG9zZSgpCiAKIGJvb2wgRnJhbWVMb2FkZXI6OmhhbmRsZUJlZm9yZVVu
bG9hZEV2ZW50KENocm9tZSYgY2hyb21lLCBGcmFtZUxvYWRlciogZnJhbWVMb2FkZXJCZWluZ05h
dmlnYXRlZCkKIHsKLSAgICBET01XaW5kb3cqIGRvbVdpbmRvdyA9IG1fZnJhbWUuZG9jdW1lbnQo
KS0+ZG9tV2luZG93KCk7CisgICAgRE9NV2luZG93KiBkb21XaW5kb3cgPSBtX2ZyYW1lLmRvY3Vt
ZW50KCkuZG9tV2luZG93KCk7CiAgICAgaWYgKCFkb21XaW5kb3cpCiAgICAgICAgIHJldHVybiB0
cnVlOwogCkBAIC0yODU3LDcgKzI4NTksNyBAQCBib29sIEZyYW1lTG9hZGVyOjpoYW5kbGVCZWZv
cmVVbmxvYWRFdmVudChDaHJvbWUmIGNocm9tZSwgRnJhbWVMb2FkZXIqIGZyYW1lTG9hZAogICAg
ICAgICAgICAgRG9jdW1lbnQqIHBhcmVudERvY3VtZW50ID0gcGFyZW50RnJhbWUtPmRvY3VtZW50
KCk7CiAgICAgICAgICAgICBpZiAoIXBhcmVudERvY3VtZW50KQogICAgICAgICAgICAgICAgIHJl
dHVybiB0cnVlOwotICAgICAgICAgICAgaWYgKCFtX2ZyYW1lLmRvY3VtZW50KCkgfHwgIW1fZnJh
bWUuZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKS0+Y2FuQWNjZXNzKHBhcmVudERvY3VtZW50
LT5zZWN1cml0eU9yaWdpbigpKSkgeworICAgICAgICAgICAgaWYgKCFtX2ZyYW1lLmRvY3VtZW50
KCkgfHwgIW1fZnJhbWUuZG9jdW1lbnQoKS5zZWN1cml0eU9yaWdpbigpLT5jYW5BY2Nlc3MocGFy
ZW50RG9jdW1lbnQtPnNlY3VyaXR5T3JpZ2luKCkpKSB7CiAgICAgICAgICAgICAgICAgZG9jdW1l
bnQtPmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdlTGV2ZWw6OkVy
cm9yLCBBU0NJSUxpdGVyYWwoIkJsb2NrZWQgYXR0ZW1wdCB0byBzaG93IGJlZm9yZXVubG9hZCBj
b25maXJtYXRpb24gZGlhbG9nIG9uIGJlaGFsZiBvZiBhIGZyYW1lIHdpdGggZGlmZmVyZW50IHNl
Y3VyaXR5IG9yaWdpbi4gUHJvdG9jb2xzLCBkb21haW5zLCBhbmQgcG9ydHMgbXVzdCBtYXRjaC4i
KSk7CiAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICB9CkBAIC0yOTcx
LDcgKzI5NzMsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpjb250aW51ZUxvYWRBZnRlck5ld1dpbmRv
d1BvbGljeShjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlcwogICAgIG1haW5GcmFtZS0+bG9h
ZGVyKCkubV9jbGllbnQuZGlzcGF0Y2hTaG93KCk7CiAgICAgaWYgKCFtX3N1cHByZXNzT3BlbmVy
SW5OZXdGcmFtZSkgewogICAgICAgICBtYWluRnJhbWUtPmxvYWRlcigpLnNldE9wZW5lcigmZnJh
bWUuZ2V0KCkpOwotICAgICAgICBtYWluRnJhbWUtPmRvY3VtZW50KCktPnNldFJlZmVycmVyUG9s
aWN5KGZyYW1lLT5kb2N1bWVudCgpLT5yZWZlcnJlclBvbGljeSgpKTsKKyAgICAgICAgbWFpbkZy
YW1lLT5kb2N1bWVudCgpLnNldFJlZmVycmVyUG9saWN5KGZyYW1lLT5kb2N1bWVudCgpLnJlZmVy
cmVyUG9saWN5KCkpOwogICAgIH0KICAgICBtYWluRnJhbWUtPmxvYWRlcigpLmxvYWRXaXRoTmF2
aWdhdGlvbkFjdGlvbihyZXF1ZXN0LCBOYXZpZ2F0aW9uQWN0aW9uKHJlcXVlc3QpLCBMb2NrSGlz
dG9yeTo6Tm8sIEZyYW1lTG9hZFR5cGVTdGFuZGFyZCwgZm9ybVN0YXRlKTsKIH0KQEAgLTMwNDgs
MTAgKzMwNTAsMTAgQEAgYm9vbCBGcmFtZUxvYWRlcjo6c2hvdWxkSW50ZXJydXB0TG9hZEZvclhG
cmFtZU9wdGlvbnMoY29uc3QgU3RyaW5nJiBjb250ZW50LCBjb24KICAgICBzd2l0Y2ggKGRpc3Bv
c2l0aW9uKSB7CiAgICAgY2FzZSBYRnJhbWVPcHRpb25zU2FtZU9yaWdpbjogewogICAgICAgICBS
ZWZQdHI8U2VjdXJpdHlPcmlnaW4+IG9yaWdpbiA9IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUodXJs
KTsKLSAgICAgICAgaWYgKCFvcmlnaW4tPmlzU2FtZVNjaGVtZUhvc3RQb3J0KHRvcEZyYW1lLmRv
Y3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCkpKQorICAgICAgICBpZiAoIW9yaWdpbi0+aXNTYW1l
U2NoZW1lSG9zdFBvcnQodG9wRnJhbWUuZG9jdW1lbnQoKS5zZWN1cml0eU9yaWdpbigpKSkKICAg
ICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICBmb3IgKEZyYW1lKiBmcmFtZSA9IG1fZnJh
bWUudHJlZSgpLnBhcmVudCgpOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgpLnBhcmVudCgp
KSB7Ci0gICAgICAgICAgICBpZiAoIW9yaWdpbi0+aXNTYW1lU2NoZW1lSG9zdFBvcnQoZnJhbWUt
PmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCkpKQorICAgICAgICAgICAgaWYgKCFvcmlnaW4t
PmlzU2FtZVNjaGVtZUhvc3RQb3J0KGZyYW1lLT5kb2N1bWVudCgpLnNlY3VyaXR5T3JpZ2luKCkp
KQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgICAgIHJldHVybiBmYWxz
ZTsKQEAgLTMwNjEsMTAgKzMwNjMsMTAgQEAgYm9vbCBGcmFtZUxvYWRlcjo6c2hvdWxkSW50ZXJy
dXB0TG9hZEZvclhGcmFtZU9wdGlvbnMoY29uc3QgU3RyaW5nJiBjb250ZW50LCBjb24KICAgICBj
YXNlIFhGcmFtZU9wdGlvbnNBbGxvd0FsbDoKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGNh
c2UgWEZyYW1lT3B0aW9uc0NvbmZsaWN0OgotICAgICAgICBtX2ZyYW1lLmRvY3VtZW50KCktPmFk
ZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCAi
TXVsdGlwbGUgJ1gtRnJhbWUtT3B0aW9ucycgaGVhZGVycyB3aXRoIGNvbmZsaWN0aW5nIHZhbHVl
cyAoJyIgKyBjb250ZW50ICsgIicpIGVuY291bnRlcmVkIHdoZW4gbG9hZGluZyAnIiArIHVybC5z
dHJpbmdDZW50ZXJFbGxpcHNpemVkVG9MZW5ndGgoKSArICInLiBGYWxsaW5nIGJhY2sgdG8gJ0RF
TlknLiIsIHJlcXVlc3RJZGVudGlmaWVyKTsKKyAgICAgICAgbV9mcmFtZS5kb2N1bWVudCgpLmFk
ZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCAi
TXVsdGlwbGUgJ1gtRnJhbWUtT3B0aW9ucycgaGVhZGVycyB3aXRoIGNvbmZsaWN0aW5nIHZhbHVl
cyAoJyIgKyBjb250ZW50ICsgIicpIGVuY291bnRlcmVkIHdoZW4gbG9hZGluZyAnIiArIHVybC5z
dHJpbmdDZW50ZXJFbGxpcHNpemVkVG9MZW5ndGgoKSArICInLiBGYWxsaW5nIGJhY2sgdG8gJ0RF
TlknLiIsIHJlcXVlc3RJZGVudGlmaWVyKTsKICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgY2Fz
ZSBYRnJhbWVPcHRpb25zSW52YWxpZDoKLSAgICAgICAgbV9mcmFtZS5kb2N1bWVudCgpLT5hZGRD
b25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpKUywgTWVzc2FnZUxldmVsOjpFcnJvciwgIklu
dmFsaWQgJ1gtRnJhbWUtT3B0aW9ucycgaGVhZGVyIGVuY291bnRlcmVkIHdoZW4gbG9hZGluZyAn
IiArIHVybC5zdHJpbmdDZW50ZXJFbGxpcHNpemVkVG9MZW5ndGgoKSArICInOiAnIiArIGNvbnRl
bnQgKyAiJyBpcyBub3QgYSByZWNvZ25pemVkIGRpcmVjdGl2ZS4gVGhlIGhlYWRlciB3aWxsIGJl
IGlnbm9yZWQuIiwgcmVxdWVzdElkZW50aWZpZXIpOworICAgICAgICBtX2ZyYW1lLmRvY3VtZW50
KCkuYWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VMZXZlbDo6RXJy
b3IsICJJbnZhbGlkICdYLUZyYW1lLU9wdGlvbnMnIGhlYWRlciBlbmNvdW50ZXJlZCB3aGVuIGxv
YWRpbmcgJyIgKyB1cmwuc3RyaW5nQ2VudGVyRWxsaXBzaXplZFRvTGVuZ3RoKCkgKyAiJzogJyIg
KyBjb250ZW50ICsgIicgaXMgbm90IGEgcmVjb2duaXplZCBkaXJlY3RpdmUuIFRoZSBoZWFkZXIg
d2lsbCBiZSBpZ25vcmVkLiIsIHJlcXVlc3RJZGVudGlmaWVyKTsKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgIGNhc2UgWEZyYW1lT3B0aW9uc05vbmU6CiAgICAgICAgIHJldHVybiBmYWxzZTsK
QEAgLTMzMTYsNyArMzMxOCw3IEBAIFNhbmRib3hGbGFncyBGcmFtZUxvYWRlcjo6ZWZmZWN0aXZl
U2FuZGJveEZsYWdzKCkgY29uc3QKIHsKICAgICBTYW5kYm94RmxhZ3MgZmxhZ3MgPSBtX2ZvcmNl
ZFNhbmRib3hGbGFnczsKICAgICBpZiAoRnJhbWUqIHBhcmVudEZyYW1lID0gbV9mcmFtZS50cmVl
KCkucGFyZW50KCkpCi0gICAgICAgIGZsYWdzIHw9IHBhcmVudEZyYW1lLT5kb2N1bWVudCgpLT5z
YW5kYm94RmxhZ3MoKTsKKyAgICAgICAgZmxhZ3MgfD0gcGFyZW50RnJhbWUtPmRvY3VtZW50KCku
c2FuZGJveEZsYWdzKCk7CiAgICAgaWYgKEhUTUxGcmFtZU93bmVyRWxlbWVudCogb3duZXJFbGVt
ZW50ID0gbV9mcmFtZS5vd25lckVsZW1lbnQoKSkKICAgICAgICAgZmxhZ3MgfD0gb3duZXJFbGVt
ZW50LT5zYW5kYm94RmxhZ3MoKTsKICAgICByZXR1cm4gZmxhZ3M7CkBAIC0zNDM2LDEzICszNDM4
LDEzIEBAIFBhc3NSZWZQdHI8RnJhbWU+IGNyZWF0ZVdpbmRvdyhGcmFtZSogb3BlbmVyRnJhbWUs
IEZyYW1lKiBsb29rdXBGcmFtZSwgY29uc3QgRnJhCiAgICAgLy8gU2FuZGJveGVkIGZyYW1lcyBj
YW5ub3Qgb3BlbiBuZXcgYXV4aWxpYXJ5IGJyb3dzaW5nIGNvbnRleHRzLgogICAgIGlmIChpc0Rv
Y3VtZW50U2FuZGJveGVkKG9wZW5lckZyYW1lLCBTYW5kYm94UG9wdXBzKSkgewogICAgICAgICAv
LyBGSVhNRTogVGhpcyBtZXNzYWdlIHNob3VsZCBiZSBtb3ZlZCBvZmYgdGhlIGNvbnNvbGUgb25j
ZSBhIHNvbHV0aW9uIHRvIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
MDMyNzQgZXhpc3RzLgotICAgICAgICBvcGVuZXJGcmFtZS0+ZG9jdW1lbnQoKS0+YWRkQ29uc29s
ZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6U2VjdXJpdHksIE1lc3NhZ2VMZXZlbDo6RXJyb3IsICJC
bG9ja2VkIG9wZW5pbmcgJyIgKyByZXF1ZXN0LnJlc291cmNlUmVxdWVzdCgpLnVybCgpLnN0cmlu
Z0NlbnRlckVsbGlwc2l6ZWRUb0xlbmd0aCgpICsgIicgaW4gYSBuZXcgd2luZG93IGJlY2F1c2Ug
dGhlIHJlcXVlc3Qgd2FzIG1hZGUgaW4gYSBzYW5kYm94ZWQgZnJhbWUgd2hvc2UgJ2FsbG93LXBv
cHVwcycgcGVybWlzc2lvbiBpcyBub3Qgc2V0LiIpOworICAgICAgICBvcGVuZXJGcmFtZS0+ZG9j
dW1lbnQoKS5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpTZWN1cml0eSwgTWVzc2Fn
ZUxldmVsOjpFcnJvciwgIkJsb2NrZWQgb3BlbmluZyAnIiArIHJlcXVlc3QucmVzb3VyY2VSZXF1
ZXN0KCkudXJsKCkuc3RyaW5nQ2VudGVyRWxsaXBzaXplZFRvTGVuZ3RoKCkgKyAiJyBpbiBhIG5l
dyB3aW5kb3cgYmVjYXVzZSB0aGUgcmVxdWVzdCB3YXMgbWFkZSBpbiBhIHNhbmRib3hlZCBmcmFt
ZSB3aG9zZSAnYWxsb3ctcG9wdXBzJyBwZXJtaXNzaW9uIGlzIG5vdCBzZXQuIik7CiAgICAgICAg
IHJldHVybiAwOwogICAgIH0KIAogICAgIC8vIEZJWE1FOiBTZXR0aW5nIHRoZSByZWZlcnJlciBz
aG91bGQgYmUgdGhlIGNhbGxlcidzIHJlc3BvbnNpYmlsaXR5LgogICAgIEZyYW1lTG9hZFJlcXVl
c3QgcmVxdWVzdFdpdGhSZWZlcnJlciA9IHJlcXVlc3Q7Ci0gICAgU3RyaW5nIHJlZmVycmVyID0g
U2VjdXJpdHlQb2xpY3k6OmdlbmVyYXRlUmVmZXJyZXJIZWFkZXIob3BlbmVyRnJhbWUtPmRvY3Vt
ZW50KCktPnJlZmVycmVyUG9saWN5KCksIHJlcXVlc3QucmVzb3VyY2VSZXF1ZXN0KCkudXJsKCks
IG9wZW5lckZyYW1lLT5sb2FkZXIoKS5vdXRnb2luZ1JlZmVycmVyKCkpOworICAgIFN0cmluZyBy
ZWZlcnJlciA9IFNlY3VyaXR5UG9saWN5OjpnZW5lcmF0ZVJlZmVycmVySGVhZGVyKG9wZW5lckZy
YW1lLT5kb2N1bWVudCgpLnJlZmVycmVyUG9saWN5KCksIHJlcXVlc3QucmVzb3VyY2VSZXF1ZXN0
KCkudXJsKCksIG9wZW5lckZyYW1lLT5sb2FkZXIoKS5vdXRnb2luZ1JlZmVycmVyKCkpOwogICAg
IGlmICghcmVmZXJyZXIuaXNFbXB0eSgpKQogICAgICAgICByZXF1ZXN0V2l0aFJlZmVycmVyLnJl
c291cmNlUmVxdWVzdCgpLnNldEhUVFBSZWZlcnJlcihyZWZlcnJlcik7CiAgICAgRnJhbWVMb2Fk
ZXI6OmFkZEhUVFBPcmlnaW5JZk5lZWRlZChyZXF1ZXN0V2l0aFJlZmVycmVyLnJlc291cmNlUmVx
dWVzdCgpLCBvcGVuZXJGcmFtZS0+bG9hZGVyKCkub3V0Z29pbmdPcmlnaW4oKSk7CkBAIC0zNDU2
LDcgKzM0NTgsNyBAQCBQYXNzUmVmUHRyPEZyYW1lPiBjcmVhdGVXaW5kb3coRnJhbWUqIG9wZW5l
ckZyYW1lLCBGcmFtZSogbG9va3VwRnJhbWUsIGNvbnN0IEZyYQogICAgIGlmICghcGFnZSkKICAg
ICAgICAgcmV0dXJuIDA7CiAKLSAgICBwYWdlLT5tYWluRnJhbWUoKS5sb2FkZXIoKS5mb3JjZVNh
bmRib3hGbGFncyhvcGVuZXJGcmFtZS0+ZG9jdW1lbnQoKS0+c2FuZGJveEZsYWdzKCkpOworICAg
IHBhZ2UtPm1haW5GcmFtZSgpLmxvYWRlcigpLmZvcmNlU2FuZGJveEZsYWdzKG9wZW5lckZyYW1l
LT5kb2N1bWVudCgpLnNhbmRib3hGbGFncygpKTsKIAogICAgIGlmIChyZXF1ZXN0LmZyYW1lTmFt
ZSgpICE9ICJfYmxhbmsiKQogICAgICAgICBwYWdlLT5tYWluRnJhbWUoKS50cmVlKCkuc2V0TmFt
ZShyZXF1ZXN0LmZyYW1lTmFtZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9GcmFtZU5ldHdvcmtpbmdDb250ZXh0LmggYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVO
ZXR3b3JraW5nQ29udGV4dC5oCmluZGV4IDcyNDE1YWIuLjRhYjVmODggMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZU5ldHdvcmtpbmdDb250ZXh0LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL0ZyYW1lTmV0d29ya2luZ0NvbnRleHQuaApAQCAtNDAsNyArNDAsNyBA
QCBwdWJsaWM6CiAgICAgICAgIGlmICghbV9mcmFtZSkKICAgICAgICAgICAgIHJldHVybiB0cnVl
OwogCi0gICAgICAgIHJldHVybiBtX2ZyYW1lLT5kb2N1bWVudCgpLT5yZWZlcnJlclBvbGljeSgp
ID09IFJlZmVycmVyUG9saWN5RGVmYXVsdDsKKyAgICAgICAgcmV0dXJuIG1fZnJhbWUtPmRvY3Vt
ZW50KCkucmVmZXJyZXJQb2xpY3koKSA9PSBSZWZlcnJlclBvbGljeURlZmF1bHQ7CiAgICAgfQog
CiBwcm90ZWN0ZWQ6CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvSGlzdG9yeUNv
bnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0hpc3RvcnlDb250cm9sbGVyLmNw
cAppbmRleCA4NDYyYzVmLi5lNmM4YjgzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvSGlzdG9yeUNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9IaXN0
b3J5Q29udHJvbGxlci5jcHAKQEAgLTc0LDcgKzc0LDcgQEAgdm9pZCBIaXN0b3J5Q29udHJvbGxl
cjo6c2F2ZVNjcm9sbFBvc2l0aW9uQW5kVmlld1N0YXRlVG9JdGVtKEhpc3RvcnlJdGVtKiBpdGVt
KQogICAgIGlmICghaXRlbSB8fCAhbV9mcmFtZS52aWV3KCkpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIGlmIChtX2ZyYW1lLmRvY3VtZW50KCktPmluUGFnZUNhY2hlKCkpCisgICAgaWYgKG1fZnJh
bWUuZG9jdW1lbnQoKS5pblBhZ2VDYWNoZSgpKQogICAgICAgICBpdGVtLT5zZXRTY3JvbGxQb2lu
dChtX2ZyYW1lLnZpZXcoKS0+Y2FjaGVkU2Nyb2xsUG9zaXRpb24oKSk7CiAgICAgZWxzZQogICAg
ICAgICBpdGVtLT5zZXRTY3JvbGxQb2ludChtX2ZyYW1lLnZpZXcoKS0+c2Nyb2xsUG9zaXRpb24o
KSk7CkBAIC0xNzcsMTIgKzE3NywxMiBAQCB2b2lkIEhpc3RvcnlDb250cm9sbGVyOjpzYXZlRG9j
dW1lbnRTdGF0ZSgpCiAgICAgaWYgKCFpdGVtKQogICAgICAgICByZXR1cm47CiAKLSAgICBEb2N1
bWVudCogZG9jdW1lbnQgPSBtX2ZyYW1lLmRvY3VtZW50KCk7CisgICAgRG9jdW1lbnQmIGRvY3Vt
ZW50ID0gbV9mcmFtZS5kb2N1bWVudCgpOwogICAgIEFTU0VSVChkb2N1bWVudCk7CiAgICAgCi0g
ICAgaWYgKGl0ZW0tPmlzQ3VycmVudERvY3VtZW50KGRvY3VtZW50KSAmJiBkb2N1bWVudC0+aGFz
TGl2aW5nUmVuZGVyVHJlZSgpKSB7CisgICAgaWYgKGl0ZW0tPmlzQ3VycmVudERvY3VtZW50KCZk
b2N1bWVudCkgJiYgZG9jdW1lbnQuaGFzTGl2aW5nUmVuZGVyVHJlZSgpKSB7CiAgICAgICAgIExP
RyhMb2FkaW5nLCAiV2ViQ29yZUxvYWRpbmcgJXM6IHNhdmluZyBmb3JtIHN0YXRlIHRvICVwIiwg
bV9mcmFtZS50cmVlKCkudW5pcXVlTmFtZSgpLnN0cmluZygpLnV0ZjgoKS5kYXRhKCksIGl0ZW0p
OwotICAgICAgICBpdGVtLT5zZXREb2N1bWVudFN0YXRlKGRvY3VtZW50LT5mb3JtRWxlbWVudHNT
dGF0ZSgpKTsKKyAgICAgICAgaXRlbS0+c2V0RG9jdW1lbnRTdGF0ZShkb2N1bWVudC5mb3JtRWxl
bWVudHNTdGF0ZSgpKTsKICAgICB9CiB9CiAKQEAgLTIyMSw3ICsyMjEsNyBAQCB2b2lkIEhpc3Rv
cnlDb250cm9sbGVyOjpyZXN0b3JlRG9jdW1lbnRTdGF0ZSgpCiAgICAgICAgIHJldHVybjsKIAog
ICAgIExPRyhMb2FkaW5nLCAiV2ViQ29yZUxvYWRpbmcgJXM6IHJlc3RvcmluZyBmb3JtIHN0YXRl
IGZyb20gJXAiLCBtX2ZyYW1lLnRyZWUoKS51bmlxdWVOYW1lKCkuc3RyaW5nKCkudXRmOCgpLmRh
dGEoKSwgbV9jdXJyZW50SXRlbS5nZXQoKSk7Ci0gICAgbV9mcmFtZS5kb2N1bWVudCgpLT5zZXRT
dGF0ZUZvck5ld0Zvcm1FbGVtZW50cyhtX2N1cnJlbnRJdGVtLT5kb2N1bWVudFN0YXRlKCkpOwor
ICAgIG1fZnJhbWUuZG9jdW1lbnQoKS5zZXRTdGF0ZUZvck5ld0Zvcm1FbGVtZW50cyhtX2N1cnJl
bnRJdGVtLT5kb2N1bWVudFN0YXRlKCkpOwogfQogCiB2b2lkIEhpc3RvcnlDb250cm9sbGVyOjpp
bnZhbGlkYXRlQ3VycmVudEl0ZW1DYWNoZWRQYWdlKCkKQEAgLTIzNiw4ICsyMzYsOCBAQCB2b2lk
IEhpc3RvcnlDb250cm9sbGVyOjppbnZhbGlkYXRlQ3VycmVudEl0ZW1DYWNoZWRQYWdlKCkKICAg
ICAvLyBTb21laG93IHRoZSBQYWdlU3RhdGUgb2JqZWN0IGlzIG5vdCBwcm9wZXJseSB1cGRhdGVk
LCBhbmQgaXMgaG9sZGluZyBvbnRvIGEgc3RhbGUgZG9jdW1lbnQuCiAgICAgLy8gQm90aCBYY29k
ZSBhbmQgRmlsZU1ha2VyIHNlZSB0aGlzIGNyYXNoLCBTYWZhcmkgZG9lcyBub3QuCiAgICAgCi0g
ICAgQVNTRVJUKGNhY2hlZFBhZ2UtPmRvY3VtZW50KCkgPT0gbV9mcmFtZS5kb2N1bWVudCgpKTsK
LSAgICBpZiAoY2FjaGVkUGFnZS0+ZG9jdW1lbnQoKSA9PSBtX2ZyYW1lLmRvY3VtZW50KCkpIHsK
KyAgICBBU1NFUlQoY2FjaGVkUGFnZS0+ZG9jdW1lbnQoKSA9PSAmbV9mcmFtZS5kb2N1bWVudCgp
KTsKKyAgICBpZiAoY2FjaGVkUGFnZS0+ZG9jdW1lbnQoKSA9PSAmbV9mcmFtZS5kb2N1bWVudCgp
KSB7CiAgICAgICAgIGNhY2hlZFBhZ2UtPmRvY3VtZW50KCktPnNldEluUGFnZUNhY2hlKGZhbHNl
KTsKICAgICAgICAgY2FjaGVkUGFnZS0+Y2xlYXIoKTsKICAgICB9CkBAIC0zNzMsNyArMzczLDcg
QEAgdm9pZCBIaXN0b3J5Q29udHJvbGxlcjo6dXBkYXRlRm9yU3RhbmRhcmRMb2FkKEhpc3RvcnlV
cGRhdGVUeXBlIHVwZGF0ZVR5cGUpCiAgICAgICAgIGlmIChQYWdlKiBwYWdlID0gbV9mcmFtZS5w
YWdlKCkpCiAgICAgICAgICAgICBhZGRWaXNpdGVkTGluaygqcGFnZSwgaGlzdG9yeVVSTCk7CiAK
LSAgICAgICAgaWYgKCFmcmFtZUxvYWRlci5kb2N1bWVudExvYWRlcigpLT5kaWRDcmVhdGVHbG9i
YWxIaXN0b3J5RW50cnkoKSAmJiBmcmFtZUxvYWRlci5kb2N1bWVudExvYWRlcigpLT51bnJlYWNo
YWJsZVVSTCgpLmlzRW1wdHkoKSAmJiAhbV9mcmFtZS5kb2N1bWVudCgpLT51cmwoKS5pc0VtcHR5
KCkpCisgICAgICAgIGlmICghZnJhbWVMb2FkZXIuZG9jdW1lbnRMb2FkZXIoKS0+ZGlkQ3JlYXRl
R2xvYmFsSGlzdG9yeUVudHJ5KCkgJiYgZnJhbWVMb2FkZXIuZG9jdW1lbnRMb2FkZXIoKS0+dW5y
ZWFjaGFibGVVUkwoKS5pc0VtcHR5KCkgJiYgIW1fZnJhbWUuZG9jdW1lbnQoKS51cmwoKS5pc0Vt
cHR5KCkpCiAgICAgICAgICAgICBmcmFtZUxvYWRlci5jbGllbnQoKS51cGRhdGVHbG9iYWxIaXN0
b3J5UmVkaXJlY3RMaW5rcygpOwogICAgIH0KIH0KQEAgLTQxNCw3ICs0MTQsNyBAQCB2b2lkIEhp
c3RvcnlDb250cm9sbGVyOjp1cGRhdGVGb3JSZWRpcmVjdFdpdGhMb2NrZWRCYWNrRm9yd2FyZExp
c3QoKQogICAgICAgICBpZiAoUGFnZSogcGFnZSA9IG1fZnJhbWUucGFnZSgpKQogICAgICAgICAg
ICAgYWRkVmlzaXRlZExpbmsoKnBhZ2UsIGhpc3RvcnlVUkwpOwogCi0gICAgICAgIGlmICghbV9m
cmFtZS5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigpLT5kaWRDcmVhdGVHbG9iYWxIaXN0b3J5RW50
cnkoKSAmJiBtX2ZyYW1lLmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCktPnVucmVhY2hhYmxlVVJM
KCkuaXNFbXB0eSgpICYmICFtX2ZyYW1lLmRvY3VtZW50KCktPnVybCgpLmlzRW1wdHkoKSkKKyAg
ICAgICAgaWYgKCFtX2ZyYW1lLmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCktPmRpZENyZWF0ZUds
b2JhbEhpc3RvcnlFbnRyeSgpICYmIG1fZnJhbWUubG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKS0+
dW5yZWFjaGFibGVVUkwoKS5pc0VtcHR5KCkgJiYgIW1fZnJhbWUuZG9jdW1lbnQoKS51cmwoKS5p
c0VtcHR5KCkpCiAgICAgICAgICAgICBtX2ZyYW1lLmxvYWRlcigpLmNsaWVudCgpLnVwZGF0ZUds
b2JhbEhpc3RvcnlSZWRpcmVjdExpbmtzKCk7CiAgICAgfQogfQpAQCAtNTIwLDcgKzUyMCw3IEBA
IHZvaWQgSGlzdG9yeUNvbnRyb2xsZXI6OnJlY3Vyc2l2ZVVwZGF0ZUZvckNvbW1pdCgpCiAKIHZv
aWQgSGlzdG9yeUNvbnRyb2xsZXI6OnVwZGF0ZUZvclNhbWVEb2N1bWVudE5hdmlnYXRpb24oKQog
ewotICAgIGlmIChtX2ZyYW1lLmRvY3VtZW50KCktPnVybCgpLmlzRW1wdHkoKSkKKyAgICBpZiAo
bV9mcmFtZS5kb2N1bWVudCgpLnVybCgpLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuOwogCiAg
ICAgaWYgKG1fZnJhbWUucGFnZSgpLT51c2VzRXBoZW1lcmFsU2Vzc2lvbigpKQpAQCAtNTMwLDEx
ICs1MzAsMTEgQEAgdm9pZCBIaXN0b3J5Q29udHJvbGxlcjo6dXBkYXRlRm9yU2FtZURvY3VtZW50
TmF2aWdhdGlvbigpCiAgICAgaWYgKCFwYWdlKQogICAgICAgICByZXR1cm47CiAKLSAgICBhZGRW
aXNpdGVkTGluaygqcGFnZSwgbV9mcmFtZS5kb2N1bWVudCgpLT51cmwoKSk7CisgICAgYWRkVmlz
aXRlZExpbmsoKnBhZ2UsIG1fZnJhbWUuZG9jdW1lbnQoKS51cmwoKSk7CiAgICAgbV9mcmFtZS5t
YWluRnJhbWUoKS5sb2FkZXIoKS5oaXN0b3J5KCkucmVjdXJzaXZlVXBkYXRlRm9yU2FtZURvY3Vt
ZW50TmF2aWdhdGlvbigpOwogCiAgICAgaWYgKG1fY3VycmVudEl0ZW0pIHsKLSAgICAgICAgbV9j
dXJyZW50SXRlbS0+c2V0VVJMKG1fZnJhbWUuZG9jdW1lbnQoKS0+dXJsKCkpOworICAgICAgICBt
X2N1cnJlbnRJdGVtLT5zZXRVUkwobV9mcmFtZS5kb2N1bWVudCgpLnVybCgpKTsKICAgICAgICAg
bV9mcmFtZS5sb2FkZXIoKS5jbGllbnQoKS51cGRhdGVHbG9iYWxIaXN0b3J5KCk7CiAgICAgfQog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL01peGVkQ29udGVudENoZWNrZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL01peGVkQ29udGVudENoZWNrZXIuY3BwCmluZGV4
IDU2M2Y1ZjcuLjk5NDk4M2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9NaXhl
ZENvbnRlbnRDaGVja2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTWl4ZWRDb250
ZW50Q2hlY2tlci5jcHAKQEAgLTkwLDggKzkwLDggQEAgYm9vbCBNaXhlZENvbnRlbnRDaGVja2Vy
OjpjYW5SdW5JbnNlY3VyZUNvbnRlbnQoU2VjdXJpdHlPcmlnaW4qIHNlY3VyaXR5T3JpZ2luLAog
CiB2b2lkIE1peGVkQ29udGVudENoZWNrZXI6OmxvZ1dhcm5pbmcoYm9vbCBhbGxvd2VkLCBjb25z
dCBTdHJpbmcmIGFjdGlvbiwgY29uc3QgVVJMJiB0YXJnZXQpIGNvbnN0CiB7Ci0gICAgU3RyaW5n
IG1lc3NhZ2UgPSBtYWtlU3RyaW5nKChhbGxvd2VkID8gIiIgOiAiW2Jsb2NrZWRdICIpLCAiVGhl
IHBhZ2UgYXQgIiwgbV9mcmFtZS5kb2N1bWVudCgpLT51cmwoKS5zdHJpbmdDZW50ZXJFbGxpcHNp
emVkVG9MZW5ndGgoKSwgIiAiLCBhY3Rpb24sICIgaW5zZWN1cmUgY29udGVudCBmcm9tICIsIHRh
cmdldC5zdHJpbmdDZW50ZXJFbGxpcHNpemVkVG9MZW5ndGgoKSwgIi5cbiIpOwotICAgIG1fZnJh
bWUuZG9jdW1lbnQoKS0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6U2VjdXJpdHks
IE1lc3NhZ2VMZXZlbDo6V2FybmluZywgbWVzc2FnZSk7CisgICAgU3RyaW5nIG1lc3NhZ2UgPSBt
YWtlU3RyaW5nKChhbGxvd2VkID8gIiIgOiAiW2Jsb2NrZWRdICIpLCAiVGhlIHBhZ2UgYXQgIiwg
bV9mcmFtZS5kb2N1bWVudCgpLnVybCgpLnN0cmluZ0NlbnRlckVsbGlwc2l6ZWRUb0xlbmd0aCgp
LCAiICIsIGFjdGlvbiwgIiBpbnNlY3VyZSBjb250ZW50IGZyb20gIiwgdGFyZ2V0LnN0cmluZ0Nl
bnRlckVsbGlwc2l6ZWRUb0xlbmd0aCgpLCAiLlxuIik7CisgICAgbV9mcmFtZS5kb2N1bWVudCgp
LmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OlNlY3VyaXR5LCBNZXNzYWdlTGV2ZWw6
Oldhcm5pbmcsIG1lc3NhZ2UpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmF2aWdhdGlvblNjaGVkdWxlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvTmF2aWdhdGlvblNjaGVkdWxlci5jcHAKaW5kZXggZmY1OTUwMC4u
OTE1YzQ3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL05hdmlnYXRpb25TY2hl
ZHVsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9OYXZpZ2F0aW9uU2NoZWR1bGVy
LmNwcApAQCAtMTYzLDcgKzE2Myw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZmlyZShG
cmFtZSYgZnJhbWUpIG92ZXJyaWRlCiAgICAgewogICAgICAgICBVc2VyR2VzdHVyZUluZGljYXRv
ciBnZXN0dXJlSW5kaWNhdG9yKHdhc1VzZXJHZXN0dXJlKCkgPyBEZWZpbml0ZWx5UHJvY2Vzc2lu
Z1VzZXJHZXN0dXJlIDogRGVmaW5pdGVseU5vdFByb2Nlc3NpbmdVc2VyR2VzdHVyZSk7Ci0gICAg
ICAgIGJvb2wgcmVmcmVzaCA9IGVxdWFsSWdub3JpbmdGcmFnbWVudElkZW50aWZpZXIoZnJhbWUu
ZG9jdW1lbnQoKS0+dXJsKCksIFVSTChQYXJzZWRVUkxTdHJpbmcsIHVybCgpKSk7CisgICAgICAg
IGJvb2wgcmVmcmVzaCA9IGVxdWFsSWdub3JpbmdGcmFnbWVudElkZW50aWZpZXIoZnJhbWUuZG9j
dW1lbnQoKS51cmwoKSwgVVJMKFBhcnNlZFVSTFN0cmluZywgdXJsKCkpKTsKICAgICAgICAgZnJh
bWUubG9hZGVyKCkuY2hhbmdlTG9jYXRpb24oc2VjdXJpdHlPcmlnaW4oKSwgVVJMKFBhcnNlZFVS
TFN0cmluZywgdXJsKCkpLCByZWZlcnJlcigpLCBsb2NrSGlzdG9yeSgpLCBsb2NrQmFja0Zvcndh
cmRMaXN0KCksIHJlZnJlc2gpOwogICAgIH0KIH07CkBAIC0yMDMsNyArMjAzLDcgQEAgcHVibGlj
OgogICAgICAgICBpZiAoIW1faGlzdG9yeVN0ZXBzKSB7CiAgICAgICAgICAgICAvLyBTcGVjaWFs
IGNhc2UgZm9yIGdvKDApIGZyb20gYSBmcmFtZSAtPiByZWxvYWQgb25seSB0aGUgZnJhbWUKICAg
ICAgICAgICAgIC8vIFRvIGZvbGxvdyBGaXJlZm94IGFuZCBJRSdzIGJlaGF2aW9yLCBoaXN0b3J5
IHJlbG9hZCBjYW4gb25seSBuYXZpZ2F0ZSB0aGUgc2VsZiBmcmFtZS4KLSAgICAgICAgICAgIGZy
YW1lLmxvYWRlcigpLnVybFNlbGVjdGVkKGZyYW1lLmRvY3VtZW50KCktPnVybCgpLCAiX3NlbGYi
LCAwLCBsb2NrSGlzdG9yeSgpLCBsb2NrQmFja0ZvcndhcmRMaXN0KCksIE1heWJlU2VuZFJlZmVy
cmVyKTsKKyAgICAgICAgICAgIGZyYW1lLmxvYWRlcigpLnVybFNlbGVjdGVkKGZyYW1lLmRvY3Vt
ZW50KCkudXJsKCksICJfc2VsZiIsIDAsIGxvY2tIaXN0b3J5KCksIGxvY2tCYWNrRm9yd2FyZExp
c3QoKSwgTWF5YmVTZW5kUmVmZXJyZXIpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9
CiAgICAgICAgIApAQCAtMzIxLDcgKzMyMSw3IEBAIHZvaWQgTmF2aWdhdGlvblNjaGVkdWxlcjo6
c2NoZWR1bGVSZWRpcmVjdChkb3VibGUgZGVsYXksIGNvbnN0IFN0cmluZyYgdXJsKQogICAgIC8v
IFdlIHdhbnQgYSBuZXcgYmFjay9mb3J3YXJkIGxpc3QgaXRlbSBpZiB0aGUgcmVmcmVzaCB0aW1l
b3V0IGlzID4gMSBzZWNvbmQuCiAgICAgaWYgKCFtX3JlZGlyZWN0IHx8IGRlbGF5IDw9IG1fcmVk
aXJlY3QtPmRlbGF5KCkpIHsKICAgICAgICAgTG9ja0JhY2tGb3J3YXJkTGlzdCBsb2NrQmFja0Zv
cndhcmRMaXN0ID0gZGVsYXkgPD0gMSA/IExvY2tCYWNrRm9yd2FyZExpc3Q6OlllcyA6IExvY2tC
YWNrRm9yd2FyZExpc3Q6Ok5vOwotICAgICAgICBzY2hlZHVsZShzdGQ6Om1ha2VfdW5pcXVlPFNj
aGVkdWxlZFJlZGlyZWN0PihkZWxheSwgbV9mcmFtZS5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdp
bigpLCB1cmwsIExvY2tIaXN0b3J5OjpZZXMsIGxvY2tCYWNrRm9yd2FyZExpc3QpKTsKKyAgICAg
ICAgc2NoZWR1bGUoc3RkOjptYWtlX3VuaXF1ZTxTY2hlZHVsZWRSZWRpcmVjdD4oZGVsYXksIG1f
ZnJhbWUuZG9jdW1lbnQoKS5zZWN1cml0eU9yaWdpbigpLCB1cmwsIExvY2tIaXN0b3J5OjpZZXMs
IGxvY2tCYWNrRm9yd2FyZExpc3QpKTsKICAgICB9CiB9CiAKQEAgLTMzNiw3ICszMzYsNyBAQCBM
b2NrQmFja0ZvcndhcmRMaXN0IE5hdmlnYXRpb25TY2hlZHVsZXI6Om11c3RMb2NrQmFja0Zvcndh
cmRMaXN0KEZyYW1lJiB0YXJnZXRGcgogICAgIC8vIFRoZSBkZWZpbml0aW9uIG9mICJkdXJpbmcg
bG9hZCIgaXMgYW55IHRpbWUgYmVmb3JlIGFsbCBoYW5kbGVycyBmb3IgdGhlIGxvYWQgZXZlbnQg
aGF2ZSBiZWVuIHJ1bi4KICAgICAvLyBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE0OTU3IGZvciB0aGUgb3JpZ2luYWwgbW90aXZhdGlvbiBmb3IgdGhpcy4KICAg
ICBmb3IgKEZyYW1lKiBhbmNlc3RvciA9IHRhcmdldEZyYW1lLnRyZWUoKS5wYXJlbnQoKTsgYW5j
ZXN0b3I7IGFuY2VzdG9yID0gYW5jZXN0b3ItPnRyZWUoKS5wYXJlbnQoKSkgewotICAgICAgICBE
b2N1bWVudCogZG9jdW1lbnQgPSBhbmNlc3Rvci0+ZG9jdW1lbnQoKTsKKyAgICAgICAgRG9jdW1l
bnQqIGRvY3VtZW50ID0gJmFuY2VzdG9yLT5kb2N1bWVudCgpOwogICAgICAgICBpZiAoIWFuY2Vz
dG9yLT5sb2FkZXIoKS5pc0NvbXBsZXRlKCkgfHwgKGRvY3VtZW50ICYmIGRvY3VtZW50LT5wcm9j
ZXNzaW5nTG9hZEV2ZW50KCkpKQogICAgICAgICAgICAgcmV0dXJuIExvY2tCYWNrRm9yd2FyZExp
c3Q6OlllczsKICAgICB9CkBAIC0zNTgsOCArMzU4LDggQEAgdm9pZCBOYXZpZ2F0aW9uU2NoZWR1
bGVyOjpzY2hlZHVsZUxvY2F0aW9uQ2hhbmdlKFNlY3VyaXR5T3JpZ2luKiBzZWN1cml0eU9yaWdp
biwKICAgICAvLyBJZiB0aGUgVVJMIHdlJ3JlIGdvaW5nIHRvIG5hdmlnYXRlIHRvIGlzIHRoZSBz
YW1lIGFzIHRoZSBjdXJyZW50IG9uZSwgZXhjZXB0IGZvciB0aGUKICAgICAvLyBmcmFnbWVudCBw
YXJ0LCB3ZSBkb24ndCBuZWVkIHRvIHNjaGVkdWxlIHRoZSBsb2NhdGlvbiBjaGFuZ2UuCiAgICAg
VVJMIHBhcnNlZFVSTChQYXJzZWRVUkxTdHJpbmcsIHVybCk7Ci0gICAgaWYgKHBhcnNlZFVSTC5o
YXNGcmFnbWVudElkZW50aWZpZXIoKSAmJiBlcXVhbElnbm9yaW5nRnJhZ21lbnRJZGVudGlmaWVy
KG1fZnJhbWUuZG9jdW1lbnQoKS0+dXJsKCksIHBhcnNlZFVSTCkpIHsKLSAgICAgICAgbG9hZGVy
LmNoYW5nZUxvY2F0aW9uKHNlY3VyaXR5T3JpZ2luLCBtX2ZyYW1lLmRvY3VtZW50KCktPmNvbXBs
ZXRlVVJMKHVybCksIHJlZmVycmVyLCBsb2NrSGlzdG9yeSwgbG9ja0JhY2tGb3J3YXJkTGlzdCk7
CisgICAgaWYgKHBhcnNlZFVSTC5oYXNGcmFnbWVudElkZW50aWZpZXIoKSAmJiBlcXVhbElnbm9y
aW5nRnJhZ21lbnRJZGVudGlmaWVyKG1fZnJhbWUuZG9jdW1lbnQoKS51cmwoKSwgcGFyc2VkVVJM
KSkgeworICAgICAgICBsb2FkZXIuY2hhbmdlTG9jYXRpb24oc2VjdXJpdHlPcmlnaW4sIG1fZnJh
bWUuZG9jdW1lbnQoKS5jb21wbGV0ZVVSTCh1cmwpLCByZWZlcnJlciwgbG9ja0hpc3RvcnksIGxv
Y2tCYWNrRm9yd2FyZExpc3QpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0zOTcsMTEg
KzM5NywxMSBAQCB2b2lkIE5hdmlnYXRpb25TY2hlZHVsZXI6OnNjaGVkdWxlUmVmcmVzaCgpCiB7
CiAgICAgaWYgKCFzaG91bGRTY2hlZHVsZU5hdmlnYXRpb24oKSkKICAgICAgICAgcmV0dXJuOwot
ICAgIGNvbnN0IFVSTCYgdXJsID0gbV9mcmFtZS5kb2N1bWVudCgpLT51cmwoKTsKKyAgICBjb25z
dCBVUkwmIHVybCA9IG1fZnJhbWUuZG9jdW1lbnQoKS51cmwoKTsKICAgICBpZiAodXJsLmlzRW1w
dHkoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgc2NoZWR1bGUoc3RkOjptYWtlX3VuaXF1ZTxT
Y2hlZHVsZWRSZWZyZXNoPihtX2ZyYW1lLmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCksIHVy
bC5zdHJpbmcoKSwgbV9mcmFtZS5sb2FkZXIoKS5vdXRnb2luZ1JlZmVycmVyKCkpKTsKKyAgICBz
Y2hlZHVsZShzdGQ6Om1ha2VfdW5pcXVlPFNjaGVkdWxlZFJlZnJlc2g+KG1fZnJhbWUuZG9jdW1l
bnQoKS5zZWN1cml0eU9yaWdpbigpLCB1cmwuc3RyaW5nKCksIG1fZnJhbWUubG9hZGVyKCkub3V0
Z29pbmdSZWZlcnJlcigpKSk7CiB9CiAKIHZvaWQgTmF2aWdhdGlvblNjaGVkdWxlcjo6c2NoZWR1
bGVIaXN0b3J5TmF2aWdhdGlvbihpbnQgc3RlcHMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvUGluZ0xvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUGluZ0xvYWRl
ci5jcHAKaW5kZXggZDUxY2Q1Mi4uNjRmYzNjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL1BpbmdMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9QaW5nTG9h
ZGVyLmNwcApAQCAtNTEsMTQgKzUxLDE0IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogdm9pZCBQ
aW5nTG9hZGVyOjpsb2FkSW1hZ2UoRnJhbWUmIGZyYW1lLCBjb25zdCBVUkwmIHVybCkKIHsKLSAg
ICBpZiAoIWZyYW1lLmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCktPmNhbkRpc3BsYXkodXJs
KSkgeworICAgIGlmICghZnJhbWUuZG9jdW1lbnQoKS5zZWN1cml0eU9yaWdpbigpLT5jYW5EaXNw
bGF5KHVybCkpIHsKICAgICAgICAgRnJhbWVMb2FkZXI6OnJlcG9ydExvY2FsTG9hZEZhaWxlZCgm
ZnJhbWUsIHVybCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBSZXNvdXJjZVJlcXVl
c3QgcmVxdWVzdCh1cmwpOwogICAgIHJlcXVlc3Quc2V0SFRUUEhlYWRlckZpZWxkKCJDYWNoZS1D
b250cm9sIiwgIm1heC1hZ2U9MCIpOwotICAgIFN0cmluZyByZWZlcnJlciA9IFNlY3VyaXR5UG9s
aWN5OjpnZW5lcmF0ZVJlZmVycmVySGVhZGVyKGZyYW1lLmRvY3VtZW50KCktPnJlZmVycmVyUG9s
aWN5KCksIHJlcXVlc3QudXJsKCksIGZyYW1lLmxvYWRlcigpLm91dGdvaW5nUmVmZXJyZXIoKSk7
CisgICAgU3RyaW5nIHJlZmVycmVyID0gU2VjdXJpdHlQb2xpY3k6OmdlbmVyYXRlUmVmZXJyZXJI
ZWFkZXIoZnJhbWUuZG9jdW1lbnQoKS5yZWZlcnJlclBvbGljeSgpLCByZXF1ZXN0LnVybCgpLCBm
cmFtZS5sb2FkZXIoKS5vdXRnb2luZ1JlZmVycmVyKCkpOwogICAgIGlmICghcmVmZXJyZXIuaXNF
bXB0eSgpKQogICAgICAgICByZXF1ZXN0LnNldEhUVFBSZWZlcnJlcihyZWZlcnJlcik7CiAgICAg
ZnJhbWUubG9hZGVyKCkuYWRkRXh0cmFGaWVsZHNUb1N1YnJlc291cmNlUmVxdWVzdChyZXF1ZXN0
KTsKQEAgLTc2LDE0ICs3NiwxNCBAQCB2b2lkIFBpbmdMb2FkZXI6OnNlbmRQaW5nKEZyYW1lJiBm
cmFtZSwgY29uc3QgVVJMJiBwaW5nVVJMLCBjb25zdCBVUkwmIGRlc3RpbmF0aQogICAgIHJlcXVl
c3Quc2V0SFRUUEhlYWRlckZpZWxkKCJDYWNoZS1Db250cm9sIiwgIm1heC1hZ2U9MCIpOwogICAg
IGZyYW1lLmxvYWRlcigpLmFkZEV4dHJhRmllbGRzVG9TdWJyZXNvdXJjZVJlcXVlc3QocmVxdWVz
dCk7CiAKLSAgICBTZWN1cml0eU9yaWdpbiogc291cmNlT3JpZ2luID0gZnJhbWUuZG9jdW1lbnQo
KS0+c2VjdXJpdHlPcmlnaW4oKTsKKyAgICBTZWN1cml0eU9yaWdpbiogc291cmNlT3JpZ2luID0g
ZnJhbWUuZG9jdW1lbnQoKS5zZWN1cml0eU9yaWdpbigpOwogICAgIFJlZlB0cjxTZWN1cml0eU9y
aWdpbj4gcGluZ09yaWdpbiA9IFNlY3VyaXR5T3JpZ2luOjpjcmVhdGUocGluZ1VSTCk7CiAgICAg
RnJhbWVMb2FkZXI6OmFkZEhUVFBPcmlnaW5JZk5lZWRlZChyZXF1ZXN0LCBzb3VyY2VPcmlnaW4t
PnRvU3RyaW5nKCkpOwogICAgIHJlcXVlc3Quc2V0SFRUUEhlYWRlckZpZWxkKCJQaW5nLVRvIiwg
ZGVzdGluYXRpb25VUkwpOwogICAgIGlmICghU2VjdXJpdHlQb2xpY3k6OnNob3VsZEhpZGVSZWZl
cnJlcihwaW5nVVJMLCBmcmFtZS5sb2FkZXIoKS5vdXRnb2luZ1JlZmVycmVyKCkpKSB7Ci0gICAg
ICAgIHJlcXVlc3Quc2V0SFRUUEhlYWRlckZpZWxkKCJQaW5nLUZyb20iLCBmcmFtZS5kb2N1bWVu
dCgpLT51cmwoKSk7CisgICAgICAgIHJlcXVlc3Quc2V0SFRUUEhlYWRlckZpZWxkKCJQaW5nLUZy
b20iLCBmcmFtZS5kb2N1bWVudCgpLnVybCgpKTsKICAgICAgICAgaWYgKCFzb3VyY2VPcmlnaW4t
PmlzU2FtZVNjaGVtZUhvc3RQb3J0KHBpbmdPcmlnaW4uZ2V0KCkpKSB7Ci0gICAgICAgICAgICBT
dHJpbmcgcmVmZXJyZXIgPSBTZWN1cml0eVBvbGljeTo6Z2VuZXJhdGVSZWZlcnJlckhlYWRlcihm
cmFtZS5kb2N1bWVudCgpLT5yZWZlcnJlclBvbGljeSgpLCBwaW5nVVJMLCBmcmFtZS5sb2FkZXIo
KS5vdXRnb2luZ1JlZmVycmVyKCkpOworICAgICAgICAgICAgU3RyaW5nIHJlZmVycmVyID0gU2Vj
dXJpdHlQb2xpY3k6OmdlbmVyYXRlUmVmZXJyZXJIZWFkZXIoZnJhbWUuZG9jdW1lbnQoKS5yZWZl
cnJlclBvbGljeSgpLCBwaW5nVVJMLCBmcmFtZS5sb2FkZXIoKS5vdXRnb2luZ1JlZmVycmVyKCkp
OwogICAgICAgICAgICAgaWYgKCFyZWZlcnJlci5pc0VtcHR5KCkpCiAgICAgICAgICAgICAgICAg
cmVxdWVzdC5zZXRIVFRQUmVmZXJyZXIocmVmZXJyZXIpOwogICAgICAgICB9CkBAIC0xMDAsNyAr
MTAwLDcgQEAgdm9pZCBQaW5nTG9hZGVyOjpzZW5kVmlvbGF0aW9uUmVwb3J0KEZyYW1lJiBmcmFt
ZSwgY29uc3QgVVJMJiByZXBvcnRVUkwsIFBhc3NSZWYKICAgICByZXF1ZXN0LnNldEhUVFBCb2R5
KHJlcG9ydCk7CiAgICAgZnJhbWUubG9hZGVyKCkuYWRkRXh0cmFGaWVsZHNUb1N1YnJlc291cmNl
UmVxdWVzdChyZXF1ZXN0KTsKIAotICAgIFN0cmluZyByZWZlcnJlciA9IFNlY3VyaXR5UG9saWN5
OjpnZW5lcmF0ZVJlZmVycmVySGVhZGVyKGZyYW1lLmRvY3VtZW50KCktPnJlZmVycmVyUG9saWN5
KCksIHJlcG9ydFVSTCwgZnJhbWUubG9hZGVyKCkub3V0Z29pbmdSZWZlcnJlcigpKTsKKyAgICBT
dHJpbmcgcmVmZXJyZXIgPSBTZWN1cml0eVBvbGljeTo6Z2VuZXJhdGVSZWZlcnJlckhlYWRlcihm
cmFtZS5kb2N1bWVudCgpLnJlZmVycmVyUG9saWN5KCksIHJlcG9ydFVSTCwgZnJhbWUubG9hZGVy
KCkub3V0Z29pbmdSZWZlcnJlcigpKTsKICAgICBpZiAoIXJlZmVycmVyLmlzRW1wdHkoKSkKICAg
ICAgICAgcmVxdWVzdC5zZXRIVFRQUmVmZXJyZXIocmVmZXJyZXIpOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvUG9saWN5Q2hlY2tlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvUG9saWN5Q2hlY2tlci5jcHAKaW5kZXggM2Y4ZTAwZS4uOGM1YTA0ZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1BvbGljeUNoZWNrZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9Qb2xpY3lDaGVja2VyLmNwcApAQCAtMTI3LDcgKzEyNyw4IEBAIHZvaWQg
UG9saWN5Q2hlY2tlcjo6Y2hlY2tOYXZpZ2F0aW9uUG9saWN5KGNvbnN0IFJlc291cmNlUmVxdWVz
dCYgcmVxdWVzdCwgRG9jdW1lCiAKIHZvaWQgUG9saWN5Q2hlY2tlcjo6Y2hlY2tOZXdXaW5kb3dQ
b2xpY3koY29uc3QgTmF2aWdhdGlvbkFjdGlvbiYgYWN0aW9uLCBjb25zdCBSZXNvdXJjZVJlcXVl
c3QmIHJlcXVlc3QsIFBhc3NSZWZQdHI8Rm9ybVN0YXRlPiBmb3JtU3RhdGUsIGNvbnN0IFN0cmlu
ZyYgZnJhbWVOYW1lLCBOZXdXaW5kb3dQb2xpY3lEZWNpc2lvbkZ1bmN0aW9uIGZ1bmN0aW9uKQog
ewotICAgIGlmIChtX2ZyYW1lLmRvY3VtZW50KCkgJiYgbV9mcmFtZS5kb2N1bWVudCgpLT5pc1Nh
bmRib3hlZChTYW5kYm94UG9wdXBzKSkKKyAgICBBU1NFUlQobV9mcmFtZS5kb2N1bWVudCgpKTsK
KyAgICBpZiAobV9mcmFtZS5kb2N1bWVudCgpLmlzU2FuZGJveGVkKFNhbmRib3hQb3B1cHMpKQog
ICAgICAgICByZXR1cm4gY29udGludWVBZnRlck5hdmlnYXRpb25Qb2xpY3koUG9saWN5SWdub3Jl
KTsKIAogICAgIGlmICghRE9NV2luZG93OjphbGxvd1BvcFVwKCZtX2ZyYW1lKSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRTY2hlZHVsZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZFNjaGVkdWxlci5jcHAKaW5kZXggYmY3OTFk
YS4uZGJjMDcwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9h
ZFNjaGVkdWxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZFNj
aGVkdWxlci5jcHAKQEAgLTE5NCw3ICsxOTQsNyBAQCB2b2lkIFJlc291cmNlTG9hZFNjaGVkdWxl
cjo6c2NoZWR1bGVMb2FkKFJlc291cmNlTG9hZGVyKiByZXNvdXJjZUxvYWRlciwgUmVzb3VyYwog
CiB2b2lkIFJlc291cmNlTG9hZFNjaGVkdWxlcjo6bm90aWZ5RGlkU2NoZWR1bGVSZXNvdXJjZVJl
cXVlc3QoUmVzb3VyY2VMb2FkZXIqIGxvYWRlcikKIHsKLSAgICBJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb246OmRpZFNjaGVkdWxlUmVzb3VyY2VSZXF1ZXN0KGxvYWRlci0+ZnJhbWVMb2FkZXIoKSA/
IGxvYWRlci0+ZnJhbWVMb2FkZXIoKS0+ZnJhbWUoKS5kb2N1bWVudCgpIDogMCwgbG9hZGVyLT51
cmwoKSk7CisgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRTY2hlZHVsZVJlc291cmNl
UmVxdWVzdChsb2FkZXItPmZyYW1lTG9hZGVyKCkgPyAmbG9hZGVyLT5mcmFtZUxvYWRlcigpLT5m
cmFtZSgpLmRvY3VtZW50KCkgOiAwLCBsb2FkZXItPnVybCgpKTsKIH0KIAogdm9pZCBSZXNvdXJj
ZUxvYWRTY2hlZHVsZXI6OnJlbW92ZShSZXNvdXJjZUxvYWRlciogcmVzb3VyY2VMb2FkZXIpCkBA
IC0yNzUsNyArMjc1LDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRTY2hlZHVsZXI6OnNlcnZlUGVuZGlu
Z1JlcXVlc3RzKEhvc3RJbmZvcm1hdGlvbiogaG9zdCwgUmVzb3VyY2UKICAgICAgICAgICAgIC8v
IEZvciBuYW1lZCBob3N0cyAtIHdoaWNoIGFyZSBvbmx5IGh0dHAocykgaG9zdHMgLSB3ZSBzaG91
bGQgYWx3YXlzIGVuZm9yY2UgdGhlIGNvbm5lY3Rpb24gbGltaXQuCiAgICAgICAgICAgICAvLyBG
b3Igbm9uLW5hbWVkIGhvc3RzIC0gZXZlcnl0aGluZyBidXQgaHR0cChzKSAtIHdlIHNob3VsZCBv
bmx5IGVuZm9yY2UgdGhlIGxpbWl0IGlmIHRoZSBkb2N1bWVudCBpc24ndCBkb25lIHBhcnNpbmcg
CiAgICAgICAgICAgICAvLyBhbmQgd2UgZG9uJ3Qga25vdyBhbGwgc3R5bGVzaGVldHMgeWV0Lgot
ICAgICAgICAgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gcmVzb3VyY2VMb2FkZXItPmZyYW1lTG9h
ZGVyKCkgPyByZXNvdXJjZUxvYWRlci0+ZnJhbWVMb2FkZXIoKS0+ZnJhbWUoKS5kb2N1bWVudCgp
IDogMDsKKyAgICAgICAgICAgIERvY3VtZW50KiBkb2N1bWVudCA9IHJlc291cmNlTG9hZGVyLT5m
cmFtZUxvYWRlcigpID8gJnJlc291cmNlTG9hZGVyLT5mcmFtZUxvYWRlcigpLT5mcmFtZSgpLmRv
Y3VtZW50KCkgOiAwOwogICAgICAgICAgICAgYm9vbCBzaG91bGRMaW1pdFJlcXVlc3RzID0gIWhv
c3QtPm5hbWUoKS5pc051bGwoKSB8fCAoZG9jdW1lbnQgJiYgKGRvY3VtZW50LT5wYXJzaW5nKCkg
fHwgIWRvY3VtZW50LT5oYXZlU3R5bGVzaGVldHNMb2FkZWQoKSkpOwogICAgICAgICAgICAgaWYg
KHNob3VsZExpbWl0UmVxdWVzdHMgJiYgaG9zdC0+bGltaXRSZXF1ZXN0cyhSZXNvdXJjZUxvYWRQ
cmlvcml0eShwcmlvcml0eSkpKQogICAgICAgICAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IGE5MGY5MWIuLmQ5YmU1MTYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcApAQCAtMTIxLDcgKzEyMSw3IEBA
IGJvb2wgUmVzb3VyY2VMb2FkZXI6OmluaXQoY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByKQogI2Vu
ZGlmCiAgICAgCiAgICAgbV9kZWZlcnNMb2FkaW5nID0gbV9mcmFtZS0+cGFnZSgpLT5kZWZlcnNM
b2FkaW5nKCk7Ci0gICAgaWYgKG1fb3B0aW9ucy5zZWN1cml0eUNoZWNrID09IERvU2VjdXJpdHlD
aGVjayAmJiAhbV9mcmFtZS0+ZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKS0+Y2FuRGlzcGxh
eShjbGllbnRSZXF1ZXN0LnVybCgpKSkgeworICAgIGlmIChtX29wdGlvbnMuc2VjdXJpdHlDaGVj
ayA9PSBEb1NlY3VyaXR5Q2hlY2sgJiYgIW1fZnJhbWUtPmRvY3VtZW50KCkuc2VjdXJpdHlPcmln
aW4oKS0+Y2FuRGlzcGxheShjbGllbnRSZXF1ZXN0LnVybCgpKSkgewogICAgICAgICBGcmFtZUxv
YWRlcjo6cmVwb3J0TG9jYWxMb2FkRmFpbGVkKG1fZnJhbWUuZ2V0KCksIGNsaWVudFJlcXVlc3Qu
dXJsKCkuc3RyaW5nKCkpOwogICAgICAgICByZWxlYXNlUmVzb3VyY2VzKCk7CiAgICAgICAgIHJl
dHVybiBmYWxzZTsKQEAgLTEzMyw3ICsxMzMsNyBAQCBib29sIFJlc291cmNlTG9hZGVyOjppbml0
KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcikKICAgICAvLyB1cCB0aGUgMXN0IHBhcnR5IGZvciBj
b29raWVzIFVSTC4gVW50aWwgcGx1Zy1pbiBpbXBsZW1lbnRhdGlvbnMgY2FuIGJlIHJlaWduZWQg
aW4gdG8gcGlwZSB0aHJvdWdoIHRoYXQKICAgICAvLyBtZXRob2QsIHdlIG5lZWQgdG8gbWFrZSBz
dXJlIHRoZXJlIGlzIGFsd2F5cyBhIDFzdCBwYXJ0eSBmb3IgY29va2llcyBzZXQuCiAgICAgaWYg
KGNsaWVudFJlcXVlc3QuZmlyc3RQYXJ0eUZvckNvb2tpZXMoKS5pc051bGwoKSkgewotICAgICAg
ICBpZiAoRG9jdW1lbnQqIGRvY3VtZW50ID0gbV9mcmFtZS0+ZG9jdW1lbnQoKSkKKyAgICAgICAg
aWYgKERvY3VtZW50KiBkb2N1bWVudCA9ICZtX2ZyYW1lLT5kb2N1bWVudCgpKQogICAgICAgICAg
ICAgY2xpZW50UmVxdWVzdC5zZXRGaXJzdFBhcnR5Rm9yQ29va2llcyhkb2N1bWVudC0+Zmlyc3RQ
YXJ0eUZvckNvb2tpZXMoKSk7CiAgICAgfQogCkBAIC01NDUsNyArNTQ1LDcgQEAgdm9pZCBSZXNv
dXJjZUxvYWRlcjo6ZGlkUmVjZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKGNvbnN0IEF1dGhl
bnRpY2F0aW9uQ2hhbGwKICAgICBSZWY8UmVzb3VyY2VMb2FkZXI+IHByb3RlY3QoKnRoaXMpOwog
CiAgICAgaWYgKG1fb3B0aW9ucy5hbGxvd0NyZWRlbnRpYWxzID09IEFsbG93U3RvcmVkQ3JlZGVu
dGlhbHMpIHsKLSAgICAgICAgaWYgKG1fb3B0aW9ucy5jbGllbnRDcmVkZW50aWFsUG9saWN5ID09
IEFza0NsaWVudEZvckFsbENyZWRlbnRpYWxzIHx8IChtX29wdGlvbnMuY2xpZW50Q3JlZGVudGlh
bFBvbGljeSA9PSBEb05vdEFza0NsaWVudEZvckNyb3NzT3JpZ2luQ3JlZGVudGlhbHMgJiYgbV9m
cmFtZS0+ZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKS0+Y2FuUmVxdWVzdChvcmlnaW5hbFJl
cXVlc3QoKS51cmwoKSkpKSB7CisgICAgICAgIGlmIChtX29wdGlvbnMuY2xpZW50Q3JlZGVudGlh
bFBvbGljeSA9PSBBc2tDbGllbnRGb3JBbGxDcmVkZW50aWFscyB8fCAobV9vcHRpb25zLmNsaWVu
dENyZWRlbnRpYWxQb2xpY3kgPT0gRG9Ob3RBc2tDbGllbnRGb3JDcm9zc09yaWdpbkNyZWRlbnRp
YWxzICYmIG1fZnJhbWUtPmRvY3VtZW50KCkuc2VjdXJpdHlPcmlnaW4oKS0+Y2FuUmVxdWVzdChv
cmlnaW5hbFJlcXVlc3QoKS51cmwoKSkpKSB7CiAgICAgICAgICAgICBmcmFtZUxvYWRlcigpLT5u
b3RpZmllcigpLmRpZFJlY2VpdmVBdXRoZW50aWNhdGlvbkNoYWxsZW5nZSh0aGlzLCBjaGFsbGVu
Z2UpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvU3ViZnJhbWVMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L1N1YmZyYW1lTG9hZGVyLmNwcAppbmRleCA2NTVkY2Y1Li4xNDgyNjJjIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvU3ViZnJhbWVMb2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9TdWJmcmFtZUxvYWRlci5jcHAKQEAgLTI0MiwxMiArMjQyLDEyIEBAIFBhc3NS
ZWZQdHI8V2lkZ2V0PiBTdWJmcmFtZUxvYWRlcjo6bG9hZE1lZGlhUGxheWVyUHJveHlQbHVnaW4o
SFRNTE1lZGlhRWxlbWVudCYKICAgICBpZiAoIXVybC5pc0VtcHR5KCkpCiAgICAgICAgIGNvbXBs
ZXRlZFVSTCA9IGNvbXBsZXRlVVJMKHVybCk7CiAKLSAgICBpZiAoIW1fZnJhbWUuZG9jdW1lbnQo
KS0+c2VjdXJpdHlPcmlnaW4oKS0+Y2FuRGlzcGxheShjb21wbGV0ZWRVUkwpKSB7CisgICAgaWYg
KCFtX2ZyYW1lLmRvY3VtZW50KCkuc2VjdXJpdHlPcmlnaW4oKS0+Y2FuRGlzcGxheShjb21wbGV0
ZWRVUkwpKSB7CiAgICAgICAgIEZyYW1lTG9hZGVyOjpyZXBvcnRMb2NhbExvYWRGYWlsZWQoJm1f
ZnJhbWUsIGNvbXBsZXRlZFVSTC5zdHJpbmcoKSk7CiAgICAgICAgIHJldHVybiBudWxscHRyOwog
ICAgIH0KIAotICAgIGlmICghbV9mcmFtZS5kb2N1bWVudCgpLT5jb250ZW50U2VjdXJpdHlQb2xp
Y3koKS0+YWxsb3dNZWRpYUZyb21Tb3VyY2UoY29tcGxldGVkVVJMKSkKKyAgICBpZiAoIW1fZnJh
bWUuZG9jdW1lbnQoKS5jb250ZW50U2VjdXJpdHlQb2xpY3koKS0+YWxsb3dNZWRpYUZyb21Tb3Vy
Y2UoY29tcGxldGVkVVJMKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBSZW5kZXJX
aWRnZXQqIHJlbmRlcmVyID0gdG9SZW5kZXJXaWRnZXQobWVkaWFFbGVtZW50LnJlbmRlcmVyKCkp
OwpAQCAtMjU4LDcgKzI1OCw3IEBAIFBhc3NSZWZQdHI8V2lkZ2V0PiBTdWJmcmFtZUxvYWRlcjo6
bG9hZE1lZGlhUGxheWVyUHJveHlQbHVnaW4oSFRNTE1lZGlhRWxlbWVudCYKICAgICBlbHNlIGlm
IChtZWRpYUVsZW1lbnQuaXNWaWRlbygpKQogICAgICAgICBzaXplID0gUmVuZGVyVmlkZW86OmRl
ZmF1bHRTaXplKCk7CiAKLSAgICBpZiAoIW1fZnJhbWUubG9hZGVyKCkubWl4ZWRDb250ZW50Q2hl
Y2tlcigpLmNhblJ1bkluc2VjdXJlQ29udGVudChtX2ZyYW1lLmRvY3VtZW50KCktPnNlY3VyaXR5
T3JpZ2luKCksIGNvbXBsZXRlZFVSTCkpCisgICAgaWYgKCFtX2ZyYW1lLmxvYWRlcigpLm1peGVk
Q29udGVudENoZWNrZXIoKS5jYW5SdW5JbnNlY3VyZUNvbnRlbnQobV9mcmFtZS5kb2N1bWVudCgp
LnNlY3VyaXR5T3JpZ2luKCksIGNvbXBsZXRlZFVSTCkpCiAgICAgICAgIHJldHVybiBudWxscHRy
OwogCiAgICAgUmVmUHRyPFdpZGdldD4gd2lkZ2V0ID0gbV9mcmFtZS5sb2FkZXIoKS5jbGllbnQo
KS5jcmVhdGVNZWRpYVBsYXllclByb3h5UGx1Z2luKHNpemUsICZtZWRpYUVsZW1lbnQsIGNvbXBs
ZXRlZFVSTCwgcGFyYW1OYW1lcywgcGFyYW1WYWx1ZXMsICJhcHBsaWNhdGlvbi94LW1lZGlhLWVs
ZW1lbnQtcHJveHktcGx1Z2luIik7CkBAIC0yOTksNyArMjk5LDcgQEAgUGFzc1JlZlB0cjxXaWRn
ZXQ+IFN1YmZyYW1lTG9hZGVyOjpjcmVhdGVKYXZhQXBwbGV0V2lkZ2V0KGNvbnN0IEludFNpemUm
IHNpemUsIEgKICAgICB9CiAKICAgICBpZiAoYmFzZVVSTFN0cmluZy5pc0VtcHR5KCkpCi0gICAg
ICAgIGJhc2VVUkxTdHJpbmcgPSBtX2ZyYW1lLmRvY3VtZW50KCktPmJhc2VVUkwoKS5zdHJpbmco
KTsKKyAgICAgICAgYmFzZVVSTFN0cmluZyA9IG1fZnJhbWUuZG9jdW1lbnQoKS5iYXNlVVJMKCku
c3RyaW5nKCk7CiAgICAgVVJMIGJhc2VVUkwgPSBjb21wbGV0ZVVSTChiYXNlVVJMU3RyaW5nKTsK
IAogICAgIFJlZlB0cjxXaWRnZXQ+IHdpZGdldDsKQEAgLTMyNCw3ICszMjQsNyBAQCBGcmFtZSog
U3ViZnJhbWVMb2FkZXI6OmxvYWRPclJlZGlyZWN0U3ViZnJhbWUoSFRNTEZyYW1lT3duZXJFbGVt
ZW50JiBvd25lckVsZW1lbgogewogICAgIEZyYW1lKiBmcmFtZSA9IG93bmVyRWxlbWVudC5jb250
ZW50RnJhbWUoKTsKICAgICBpZiAoZnJhbWUpCi0gICAgICAgIGZyYW1lLT5uYXZpZ2F0aW9uU2No
ZWR1bGVyKCkuc2NoZWR1bGVMb2NhdGlvbkNoYW5nZShtX2ZyYW1lLmRvY3VtZW50KCktPnNlY3Vy
aXR5T3JpZ2luKCksIHVybC5zdHJpbmcoKSwgbV9mcmFtZS5sb2FkZXIoKS5vdXRnb2luZ1JlZmVy
cmVyKCksIGxvY2tIaXN0b3J5LCBsb2NrQmFja0ZvcndhcmRMaXN0KTsKKyAgICAgICAgZnJhbWUt
Pm5hdmlnYXRpb25TY2hlZHVsZXIoKS5zY2hlZHVsZUxvY2F0aW9uQ2hhbmdlKG1fZnJhbWUuZG9j
dW1lbnQoKS5zZWN1cml0eU9yaWdpbigpLCB1cmwuc3RyaW5nKCksIG1fZnJhbWUubG9hZGVyKCku
b3V0Z29pbmdSZWZlcnJlcigpLCBsb2NrSGlzdG9yeSwgbG9ja0JhY2tGb3J3YXJkTGlzdCk7CiAg
ICAgZWxzZQogICAgICAgICBmcmFtZSA9IGxvYWRTdWJmcmFtZShvd25lckVsZW1lbnQsIHVybCwg
ZnJhbWVOYW1lLCBtX2ZyYW1lLmxvYWRlcigpLm91dGdvaW5nUmVmZXJyZXIoKSk7CiAKQEAgLTQy
NCw3ICs0MjQsNyBAQCBib29sIFN1YmZyYW1lTG9hZGVyOjpzaG91bGRVc2VQbHVnaW4oY29uc3Qg
VVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGJvbwogCiBEb2N1bWVudCogU3ViZnJh
bWVMb2FkZXI6OmRvY3VtZW50KCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9mcmFtZS5kb2N1bWVu
dCgpOworICAgIHJldHVybiAmbV9mcmFtZS5kb2N1bWVudCgpOwogfQogCiBib29sIFN1YmZyYW1l
TG9hZGVyOjpsb2FkUGx1Z2luKEhUTUxQbHVnSW5JbWFnZUVsZW1lbnQmIHBsdWdpbkVsZW1lbnQs
IGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIG1pbWVUeXBlLCBjb25zdCBWZWN0b3I8U3Ry
aW5nPiYgcGFyYW1OYW1lcywgY29uc3QgVmVjdG9yPFN0cmluZz4mIHBhcmFtVmFsdWVzLCBib29s
IHVzZUZhbGxiYWNrKQpAQCAtNDY3LDcgKzQ2Nyw3IEBAIGJvb2wgU3ViZnJhbWVMb2FkZXI6Omxv
YWRQbHVnaW4oSFRNTFBsdWdJbkltYWdlRWxlbWVudCYgcGx1Z2luRWxlbWVudCwgY29uc3QgVVJM
CiBVUkwgU3ViZnJhbWVMb2FkZXI6OmNvbXBsZXRlVVJMKGNvbnN0IFN0cmluZyYgdXJsKSBjb25z
dAogewogICAgIEFTU0VSVChtX2ZyYW1lLmRvY3VtZW50KCkpOwotICAgIHJldHVybiBtX2ZyYW1l
LmRvY3VtZW50KCktPmNvbXBsZXRlVVJMKHVybCk7CisgICAgcmV0dXJuIG1fZnJhbWUuZG9jdW1l
bnQoKS5jb21wbGV0ZVVSTCh1cmwpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcAppbmRleCBmMWZjZWFjLi43
MWM5ZTQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2Fk
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAK
QEAgLTY5LDcgKzY5LDcgQEAgU3VicmVzb3VyY2VMb2FkZXI6OlN1YnJlc291cmNlTG9hZGVyKEZy
YW1lKiBmcmFtZSwgQ2FjaGVkUmVzb3VyY2UqIHJlc291cmNlLCBjb24KICAgICAsIG1fcmVzb3Vy
Y2UocmVzb3VyY2UpCiAgICAgLCBtX2xvYWRpbmdNdWx0aXBhcnRDb250ZW50KGZhbHNlKQogICAg
ICwgbV9zdGF0ZShVbmluaXRpYWxpemVkKQotICAgICwgbV9yZXF1ZXN0Q291bnRUcmFja2VyKGFk
b3B0UHRyKG5ldyBSZXF1ZXN0Q291bnRUcmFja2VyKGZyYW1lLT5kb2N1bWVudCgpLT5jYWNoZWRS
ZXNvdXJjZUxvYWRlcigpLCByZXNvdXJjZSkpKQorICAgICwgbV9yZXF1ZXN0Q291bnRUcmFja2Vy
KGFkb3B0UHRyKG5ldyBSZXF1ZXN0Q291bnRUcmFja2VyKGZyYW1lLT5kb2N1bWVudCgpLmNhY2hl
ZFJlc291cmNlTG9hZGVyKCksIHJlc291cmNlKSkpCiB7CiAjaWZuZGVmIE5ERUJVRwogICAgIHN1
YnJlc291cmNlTG9hZGVyQ291bnRlci5pbmNyZW1lbnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlR3JvdXAuY3BwIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHAKaW5kZXgg
MzAwYWE2My4uZWJjMjk1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNh
Y2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHAKQEAgLTE1MCw3ICsxNTAsNyBAQCB2
b2lkIEFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6c2VsZWN0Q2FjaGUoRnJhbWUqIGZyYW1lLCBjb25z
dCBVUkwmIHBhc3NlZE1hbmlmZXN0VQogICAgIH0KIAogICAgIC8vIERvbid0IGFjY2VzcyBhbnl0
aGluZyBvbiBkaXNrIGlmIHByaXZhdGUgYnJvd3NpbmcgaXMgZW5hYmxlZC4KLSAgICBpZiAoZnJh
bWUtPnBhZ2UoKS0+dXNlc0VwaGVtZXJhbFNlc3Npb24oKSB8fCAhZnJhbWUtPmRvY3VtZW50KCkt
PnNlY3VyaXR5T3JpZ2luKCktPmNhbkFjY2Vzc0FwcGxpY2F0aW9uQ2FjaGUoZnJhbWUtPnRyZWUo
KS50b3AoKS5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpKSkgeworICAgIGlmIChmcmFtZS0+
cGFnZSgpLT51c2VzRXBoZW1lcmFsU2Vzc2lvbigpIHx8ICFmcmFtZS0+ZG9jdW1lbnQoKS5zZWN1
cml0eU9yaWdpbigpLT5jYW5BY2Nlc3NBcHBsaWNhdGlvbkNhY2hlKGZyYW1lLT50cmVlKCkudG9w
KCkuZG9jdW1lbnQoKS5zZWN1cml0eU9yaWdpbigpKSkgewogICAgICAgICBwb3N0TGlzdGVuZXJU
YXNrKEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjpDSEVDS0lOR19FVkVOVCwgZG9jdW1lbnRMb2FkZXIp
OwogICAgICAgICBwb3N0TGlzdGVuZXJUYXNrKEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjpFUlJPUl9F
VkVOVCwgZG9jdW1lbnRMb2FkZXIpOwogICAgICAgICByZXR1cm47CkBAIC0xODMsNyArMTgzLDcg
QEAgdm9pZCBBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OnNlbGVjdENhY2hlKEZyYW1lKiBmcmFtZSwg
Y29uc3QgVVJMJiBwYXNzZWRNYW5pZmVzdFUKICAgICAgICAgICAgIC8vIFJlc3RhcnQgdGhlIGN1
cnJlbnQgbmF2aWdhdGlvbiBmcm9tIHRoZSB0b3Agb2YgdGhlIG5hdmlnYXRpb24gYWxnb3JpdGht
LCB1bmRvaW5nIGFueSBjaGFuZ2VzIHRoYXQgd2VyZSBtYWRlCiAgICAgICAgICAgICAvLyBhcyBw
YXJ0IG9mIHRoZSBpbml0aWFsIGxvYWQuCiAgICAgICAgICAgICAvLyBUaGUgbmF2aWdhdGlvbiB3
aWxsIG5vdCByZXN1bHQgaW4gdGhlIHNhbWUgcmVzb3VyY2UgYmVpbmcgbG9hZGVkLCBiZWNhdXNl
ICJmb3JlaWduIiBlbnRyaWVzIGFyZSBuZXZlciBwaWNrZWQgZHVyaW5nIG5hdmlnYXRpb24uCi0g
ICAgICAgICAgICBmcmFtZS0+bmF2aWdhdGlvblNjaGVkdWxlcigpLnNjaGVkdWxlTG9jYXRpb25D
aGFuZ2UoZnJhbWUtPmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCksIGRvY3VtZW50TG9hZGVy
LT51cmwoKSwgZnJhbWUtPmxvYWRlcigpLnJlZmVycmVyKCkpOworICAgICAgICAgICAgZnJhbWUt
Pm5hdmlnYXRpb25TY2hlZHVsZXIoKS5zY2hlZHVsZUxvY2F0aW9uQ2hhbmdlKGZyYW1lLT5kb2N1
bWVudCgpLnNlY3VyaXR5T3JpZ2luKCksIGRvY3VtZW50TG9hZGVyLT51cmwoKSwgZnJhbWUtPmxv
YWRlcigpLnJlZmVycmVyKCkpOwogICAgICAgICB9CiAgICAgICAgIAogICAgICAgICByZXR1cm47
CkBAIC0yMTgsNyArMjE4LDcgQEAgdm9pZCBBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OnNlbGVjdENh
Y2hlV2l0aG91dE1hbmlmZXN0VVJMKEZyYW1lKiBmcmFtZSkKICAgICBBU1NFUlQoIWRvY3VtZW50
TG9hZGVyLT5hcHBsaWNhdGlvbkNhY2hlSG9zdCgpLT5hcHBsaWNhdGlvbkNhY2hlKCkpOwogCiAg
ICAgLy8gRG9uJ3QgYWNjZXNzIGFueXRoaW5nIG9uIGRpc2sgaWYgcHJpdmF0ZSBicm93c2luZyBp
cyBlbmFibGVkLgotICAgIGlmIChmcmFtZS0+cGFnZSgpLT51c2VzRXBoZW1lcmFsU2Vzc2lvbigp
IHx8ICFmcmFtZS0+ZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKS0+Y2FuQWNjZXNzQXBwbGlj
YXRpb25DYWNoZShmcmFtZS0+dHJlZSgpLnRvcCgpLmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2lu
KCkpKSB7CisgICAgaWYgKGZyYW1lLT5wYWdlKCktPnVzZXNFcGhlbWVyYWxTZXNzaW9uKCkgfHwg
IWZyYW1lLT5kb2N1bWVudCgpLnNlY3VyaXR5T3JpZ2luKCktPmNhbkFjY2Vzc0FwcGxpY2F0aW9u
Q2FjaGUoZnJhbWUtPnRyZWUoKS50b3AoKS5kb2N1bWVudCgpLnNlY3VyaXR5T3JpZ2luKCkpKSB7
CiAgICAgICAgIHBvc3RMaXN0ZW5lclRhc2soQXBwbGljYXRpb25DYWNoZUhvc3Q6OkNIRUNLSU5H
X0VWRU5ULCBkb2N1bWVudExvYWRlcik7CiAgICAgICAgIHBvc3RMaXN0ZW5lclRhc2soQXBwbGlj
YXRpb25DYWNoZUhvc3Q6OkVSUk9SX0VWRU5ULCBkb2N1bWVudExvYWRlcik7CiAgICAgICAgIHJl
dHVybjsKQEAgLTQzMyw3ICs0MzMsNyBAQCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6dXBk
YXRlKEZyYW1lKiBmcmFtZSwgQXBwbGljYXRpb25DYWNoZVVwZGF0ZU9wdGlvbiB1cAogICAgIH0K
IAogICAgIC8vIERvbid0IGFjY2VzcyBhbnl0aGluZyBvbiBkaXNrIGlmIHByaXZhdGUgYnJvd3Np
bmcgaXMgZW5hYmxlZC4KLSAgICBpZiAoZnJhbWUtPnBhZ2UoKS0+dXNlc0VwaGVtZXJhbFNlc3Np
b24oKSB8fCAhZnJhbWUtPmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCktPmNhbkFjY2Vzc0Fw
cGxpY2F0aW9uQ2FjaGUoZnJhbWUtPnRyZWUoKS50b3AoKS5kb2N1bWVudCgpLT5zZWN1cml0eU9y
aWdpbigpKSkgeworICAgIGlmIChmcmFtZS0+cGFnZSgpLT51c2VzRXBoZW1lcmFsU2Vzc2lvbigp
IHx8ICFmcmFtZS0+ZG9jdW1lbnQoKS5zZWN1cml0eU9yaWdpbigpLT5jYW5BY2Nlc3NBcHBsaWNh
dGlvbkNhY2hlKGZyYW1lLT50cmVlKCkudG9wKCkuZG9jdW1lbnQoKS5zZWN1cml0eU9yaWdpbigp
KSkgewogICAgICAgICBBU1NFUlQobV9wZW5kaW5nTWFzdGVyUmVzb3VyY2VMb2FkZXJzLmlzRW1w
dHkoKSk7CiAgICAgICAgIEFTU0VSVChtX3BlbmRpbmdFbnRyaWVzLmlzRW1wdHkoKSk7CiAgICAg
ICAgIEFTU0VSVCghbV9jYWNoZUJlaW5nVXBkYXRlZCk7CkBAIC00NzIsNyArNDcyLDcgQEAgdm9p
ZCBBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OmFib3J0KEZyYW1lKiBmcmFtZSkKICAgICBpZiAobV9j
b21wbGV0aW9uVHlwZSAhPSBOb25lKQogICAgICAgICByZXR1cm47CiAKLSAgICBmcmFtZS0+ZG9j
dW1lbnQoKS0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6TmV0d29yaywgTWVzc2Fn
ZUxldmVsOjpEZWJ1ZywgQVNDSUlMaXRlcmFsKCJBcHBsaWNhdGlvbiBDYWNoZSBkb3dubG9hZCBw
cm9jZXNzIHdhcyBhYm9ydGVkLiIpKTsKKyAgICBmcmFtZS0+ZG9jdW1lbnQoKS5hZGRDb25zb2xl
TWVzc2FnZShNZXNzYWdlU291cmNlOjpOZXR3b3JrLCBNZXNzYWdlTGV2ZWw6OkRlYnVnLCBBU0NJ
SUxpdGVyYWwoIkFwcGxpY2F0aW9uIENhY2hlIGRvd25sb2FkIHByb2Nlc3Mgd2FzIGFib3J0ZWQu
IikpOwogICAgIGNhY2hlVXBkYXRlRmFpbGVkKCk7CiB9CiAKQEAgLTU0OCw3ICs1NDgsNyBAQCB2
b2lkIEFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6ZGlkUmVjZWl2ZVJlc3BvbnNlKFJlc291cmNlSGFu
ZGxlKiBoYW5kbGUsIGNvbnN0IFJlcwogCiAgICAgaWYgKHJlc3BvbnNlLmh0dHBTdGF0dXNDb2Rl
KCkgLyAxMDAgIT0gMiB8fCByZXNwb25zZS51cmwoKSAhPSBtX2N1cnJlbnRIYW5kbGUtPmZpcnN0
UmVxdWVzdCgpLnVybCgpKSB7CiAgICAgICAgIGlmICgodHlwZSAmIEFwcGxpY2F0aW9uQ2FjaGVS
ZXNvdXJjZTo6RXhwbGljaXQpIHx8ICh0eXBlICYgQXBwbGljYXRpb25DYWNoZVJlc291cmNlOjpG
YWxsYmFjaykpIHsKLSAgICAgICAgICAgIG1fZnJhbWUtPmRvY3VtZW50KCktPmFkZENvbnNvbGVN
ZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OkFwcENhY2hlLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCAiQXBw
bGljYXRpb24gQ2FjaGUgdXBkYXRlIGZhaWxlZCwgYmVjYXVzZSAiICsgbV9jdXJyZW50SGFuZGxl
LT5maXJzdFJlcXVlc3QoKS51cmwoKS5zdHJpbmdDZW50ZXJFbGxpcHNpemVkVG9MZW5ndGgoKSAr
CisgICAgICAgICAgICBtX2ZyYW1lLT5kb2N1bWVudCgpLmFkZENvbnNvbGVNZXNzYWdlKE1lc3Nh
Z2VTb3VyY2U6OkFwcENhY2hlLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCAiQXBwbGljYXRpb24gQ2Fj
aGUgdXBkYXRlIGZhaWxlZCwgYmVjYXVzZSAiICsgbV9jdXJyZW50SGFuZGxlLT5maXJzdFJlcXVl
c3QoKS51cmwoKS5zdHJpbmdDZW50ZXJFbGxpcHNpemVkVG9MZW5ndGgoKSArCiAgICAgICAgICAg
ICAgICAgKChyZXNwb25zZS5odHRwU3RhdHVzQ29kZSgpIC8gMTAwICE9IDIpID8gIiBjb3VsZCBu
b3QgYmUgZmV0Y2hlZC4iIDogIiB3YXMgcmVkaXJlY3RlZC4iKSk7CiAgICAgICAgICAgICAvLyBO
b3RlIHRoYXQgY2FjaGVVcGRhdGVGYWlsZWQoKSBjYW4gY2F1c2UgdGhlIGNhY2hlIGdyb3VwIHRv
IGJlIGRlbGV0ZWQuCiAgICAgICAgICAgICBjYWNoZVVwZGF0ZUZhaWxlZCgpOwpAQCAtNjI3LDcg
KzYyNyw3IEBAIHZvaWQgQXBwbGljYXRpb25DYWNoZUdyb3VwOjpkaWRGaW5pc2hMb2FkaW5nKFJl
c291cmNlSGFuZGxlKiBoYW5kbGUsIGRvdWJsZSBmaW5pCiAgICAgLy8gRklYTUU6IFNob3VsZCB3
ZSBicmVhayBlYXJsaWVyIGFuZCBwcmV2ZW50IHJlZG93bmxvYWRpbmcgb24gbGF0ZXIgcGFnZSBs
b2Fkcz8KICAgICBpZiAobV9vcmlnaW5RdW90YUV4Y2VlZGVkUHJldmlvdXNseSAmJiBtX2F2YWls
YWJsZVNwYWNlSW5RdW90YSA8IG1fY2FjaGVCZWluZ1VwZGF0ZWQtPmVzdGltYXRlZFNpemVJblN0
b3JhZ2UoKSkgewogICAgICAgICBtX2N1cnJlbnRSZXNvdXJjZSA9IDA7Ci0gICAgICAgIG1fZnJh
bWUtPmRvY3VtZW50KCktPmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OkFwcENhY2hl
LCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBBU0NJSUxpdGVyYWwoIkFwcGxpY2F0aW9uIENhY2hlIHVw
ZGF0ZSBmYWlsZWQsIGJlY2F1c2Ugc2l6ZSBxdW90YSB3YXMgZXhjZWVkZWQuIikpOworICAgICAg
ICBtX2ZyYW1lLT5kb2N1bWVudCgpLmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OkFw
cENhY2hlLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBBU0NJSUxpdGVyYWwoIkFwcGxpY2F0aW9uIENh
Y2hlIHVwZGF0ZSBmYWlsZWQsIGJlY2F1c2Ugc2l6ZSBxdW90YSB3YXMgZXhjZWVkZWQuIikpOwog
ICAgICAgICBjYWNoZVVwZGF0ZUZhaWxlZCgpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAt
NjYyLDcgKzY2Miw3IEBAIHZvaWQgQXBwbGljYXRpb25DYWNoZUdyb3VwOjpkaWRGYWlsKFJlc291
cmNlSGFuZGxlKiBoYW5kbGUsIGNvbnN0IFJlc291cmNlRXJyb3ImCiAgICAgbV9wZW5kaW5nRW50
cmllcy5yZW1vdmUodXJsKTsKIAogICAgIGlmICgodHlwZSAmIEFwcGxpY2F0aW9uQ2FjaGVSZXNv
dXJjZTo6RXhwbGljaXQpIHx8ICh0eXBlICYgQXBwbGljYXRpb25DYWNoZVJlc291cmNlOjpGYWxs
YmFjaykpIHsKLSAgICAgICAgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+YWRkQ29uc29sZU1lc3NhZ2Uo
TWVzc2FnZVNvdXJjZTo6QXBwQ2FjaGUsIE1lc3NhZ2VMZXZlbDo6RXJyb3IsICJBcHBsaWNhdGlv
biBDYWNoZSB1cGRhdGUgZmFpbGVkLCBiZWNhdXNlICIgKyB1cmwuc3RyaW5nQ2VudGVyRWxsaXBz
aXplZFRvTGVuZ3RoKCkgKyAiIGNvdWxkIG5vdCBiZSBmZXRjaGVkLiIpOworICAgICAgICBtX2Zy
YW1lLT5kb2N1bWVudCgpLmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OkFwcENhY2hl
LCBNZXNzYWdlTGV2ZWw6OkVycm9yLCAiQXBwbGljYXRpb24gQ2FjaGUgdXBkYXRlIGZhaWxlZCwg
YmVjYXVzZSAiICsgdXJsLnN0cmluZ0NlbnRlckVsbGlwc2l6ZWRUb0xlbmd0aCgpICsgIiBjb3Vs
ZCBub3QgYmUgZmV0Y2hlZC4iKTsKICAgICAgICAgLy8gTm90ZSB0aGF0IGNhY2hlVXBkYXRlRmFp
bGVkKCkgY2FuIGNhdXNlIHRoZSBjYWNoZSBncm91cCB0byBiZSBkZWxldGVkLgogICAgICAgICBj
YWNoZVVwZGF0ZUZhaWxlZCgpOwogICAgIH0gZWxzZSB7CkBAIC02OTEsMTMgKzY5MSwxMyBAQCB2
b2lkIEFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6ZGlkUmVjZWl2ZU1hbmlmZXN0UmVzcG9uc2UoY29u
c3QgUmVzb3VyY2VSZXNwb25zZSYgcgogICAgICAgICByZXR1cm47CiAKICAgICBpZiAocmVzcG9u
c2UuaHR0cFN0YXR1c0NvZGUoKSAvIDEwMCAhPSAyKSB7Ci0gICAgICAgIG1fZnJhbWUtPmRvY3Vt
ZW50KCktPmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6Ok90aGVyLCBNZXNzYWdlTGV2
ZWw6OkVycm9yLCBBU0NJSUxpdGVyYWwoIkFwcGxpY2F0aW9uIENhY2hlIG1hbmlmZXN0IGNvdWxk
IG5vdCBiZSBmZXRjaGVkLiIpKTsKKyAgICAgICAgbV9mcmFtZS0+ZG9jdW1lbnQoKS5hZGRDb25z
b2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpPdGhlciwgTWVzc2FnZUxldmVsOjpFcnJvciwgQVND
SUlMaXRlcmFsKCJBcHBsaWNhdGlvbiBDYWNoZSBtYW5pZmVzdCBjb3VsZCBub3QgYmUgZmV0Y2hl
ZC4iKSk7CiAgICAgICAgIGNhY2hlVXBkYXRlRmFpbGVkKCk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKICAgICBpZiAocmVzcG9uc2UudXJsKCkgIT0gbV9tYW5pZmVzdEhhbmRsZS0+Zmlyc3RS
ZXF1ZXN0KCkudXJsKCkpIHsKLSAgICAgICAgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+YWRkQ29uc29s
ZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6T3RoZXIsIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIEFTQ0lJ
TGl0ZXJhbCgiQXBwbGljYXRpb24gQ2FjaGUgbWFuaWZlc3QgY291bGQgbm90IGJlIGZldGNoZWQs
IGJlY2F1c2UgYSByZWRpcmVjdGlvbiB3YXMgYXR0ZW1wdGVkLiIpKTsKKyAgICAgICAgbV9mcmFt
ZS0+ZG9jdW1lbnQoKS5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpPdGhlciwgTWVz
c2FnZUxldmVsOjpFcnJvciwgQVNDSUlMaXRlcmFsKCJBcHBsaWNhdGlvbiBDYWNoZSBtYW5pZmVz
dCBjb3VsZCBub3QgYmUgZmV0Y2hlZCwgYmVjYXVzZSBhIHJlZGlyZWN0aW9uIHdhcyBhdHRlbXB0
ZWQuIikpOwogICAgICAgICBjYWNoZVVwZGF0ZUZhaWxlZCgpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQpAQCAtNzE3LDcgKzcxNyw3IEBAIHZvaWQgQXBwbGljYXRpb25DYWNoZUdyb3VwOjpkaWRG
aW5pc2hMb2FkaW5nTWFuaWZlc3QoKQogCiAgICAgaWYgKCFpc1VwZ3JhZGVBdHRlbXB0ICYmICFt
X21hbmlmZXN0UmVzb3VyY2UpIHsKICAgICAgICAgLy8gVGhlIHNlcnZlciByZXR1cm5lZCAzMDQg
Tm90IE1vZGlmaWVkIGV2ZW4gdGhvdWdoIHdlIGRpZG4ndCBzZW5kIGEgY29uZGl0aW9uYWwgcmVx
dWVzdC4KLSAgICAgICAgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+YWRkQ29uc29sZU1lc3NhZ2UoTWVz
c2FnZVNvdXJjZTo6T3RoZXIsIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIEFTQ0lJTGl0ZXJhbCgiQXBw
bGljYXRpb24gQ2FjaGUgbWFuaWZlc3QgY291bGQgbm90IGJlIGZldGNoZWQgYmVjYXVzZSBvZiBh
biB1bmV4cGVjdGVkIDMwNCBOb3QgTW9kaWZpZWQgc2VydmVyIHJlc3BvbnNlLiIpKTsKKyAgICAg
ICAgbV9mcmFtZS0+ZG9jdW1lbnQoKS5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpP
dGhlciwgTWVzc2FnZUxldmVsOjpFcnJvciwgQVNDSUlMaXRlcmFsKCJBcHBsaWNhdGlvbiBDYWNo
ZSBtYW5pZmVzdCBjb3VsZCBub3QgYmUgZmV0Y2hlZCBiZWNhdXNlIG9mIGFuIHVuZXhwZWN0ZWQg
MzA0IE5vdCBNb2RpZmllZCBzZXJ2ZXIgcmVzcG9uc2UuIikpOwogICAgICAgICBjYWNoZVVwZGF0
ZUZhaWxlZCgpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtNzQzLDcgKzc0Myw3IEBAIHZv
aWQgQXBwbGljYXRpb25DYWNoZUdyb3VwOjpkaWRGaW5pc2hMb2FkaW5nTWFuaWZlc3QoKQogICAg
IE1hbmlmZXN0IG1hbmlmZXN0OwogICAgIGlmICghcGFyc2VNYW5pZmVzdChtX21hbmlmZXN0VVJM
LCBtX21hbmlmZXN0UmVzb3VyY2UtPmRhdGEoKS0+ZGF0YSgpLCBtX21hbmlmZXN0UmVzb3VyY2Ut
PmRhdGEoKS0+c2l6ZSgpLCBtYW5pZmVzdCkpIHsKICAgICAgICAgLy8gQXQgdGhlIHRpbWUgb2Yg
dGhpcyB3cml0aW5nLCBsYWNrIG9mICJDQUNIRSBNQU5JRkVTVCIgc2lnbmF0dXJlIGlzIHRoZSBv
bmx5IHJlYXNvbiBmb3IgcGFyc2VNYW5pZmVzdCB0byBmYWlsLgotICAgICAgICBtX2ZyYW1lLT5k
b2N1bWVudCgpLT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpPdGhlciwgTWVzc2Fn
ZUxldmVsOjpFcnJvciwgQVNDSUlMaXRlcmFsKCJBcHBsaWNhdGlvbiBDYWNoZSBtYW5pZmVzdCBj
b3VsZCBub3QgYmUgcGFyc2VkLiBEb2VzIGl0IHN0YXJ0IHdpdGggQ0FDSEUgTUFOSUZFU1Q/Iikp
OworICAgICAgICBtX2ZyYW1lLT5kb2N1bWVudCgpLmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VT
b3VyY2U6Ok90aGVyLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBBU0NJSUxpdGVyYWwoIkFwcGxpY2F0
aW9uIENhY2hlIG1hbmlmZXN0IGNvdWxkIG5vdCBiZSBwYXJzZWQuIERvZXMgaXQgc3RhcnQgd2l0
aCBDQUNIRSBNQU5JRkVTVD8iKSk7CiAgICAgICAgIGNhY2hlVXBkYXRlRmFpbGVkKCk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CkBAIC05MzIsNyArOTMyLDcgQEAgdm9pZCBBcHBsaWNhdGlvbkNh
Y2hlR3JvdXA6OmNoZWNrSWZMb2FkSXNDb21wbGV0ZSgpCiAgICAgICAgICAgICAgICAgLy8gV2Ug
cmFuIG91dCBvZiBzcGFjZSBmb3IgdGhpcyBvcmlnaW4uIEZhbGwgZG93biB0byB0aGUgbm9ybWFs
IGVycm9yIGhhbmRsaW5nCiAgICAgICAgICAgICAgICAgLy8gYWZ0ZXIgcmVjb3JkaW5nIHRoaXMg
c3RhdGUuCiAgICAgICAgICAgICAgICAgbV9vcmlnaW5RdW90YUV4Y2VlZGVkUHJldmlvdXNseSA9
IHRydWU7Ci0gICAgICAgICAgICAgICAgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+YWRkQ29uc29sZU1l
c3NhZ2UoTWVzc2FnZVNvdXJjZTo6T3RoZXIsIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIEFTQ0lJTGl0
ZXJhbCgiQXBwbGljYXRpb24gQ2FjaGUgdXBkYXRlIGZhaWxlZCwgYmVjYXVzZSBzaXplIHF1b3Rh
IHdhcyBleGNlZWRlZC4iKSk7CisgICAgICAgICAgICAgICAgbV9mcmFtZS0+ZG9jdW1lbnQoKS5h
ZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpPdGhlciwgTWVzc2FnZUxldmVsOjpFcnJv
ciwgQVNDSUlMaXRlcmFsKCJBcHBsaWNhdGlvbiBDYWNoZSB1cGRhdGUgZmFpbGVkLCBiZWNhdXNl
IHNpemUgcXVvdGEgd2FzIGV4Y2VlZGVkLiIpKTsKICAgICAgICAgICAgIH0KIAogICAgICAgICAg
ICAgaWYgKGZhaWx1cmVSZWFzb24gPT0gQXBwbGljYXRpb25DYWNoZVN0b3JhZ2U6OlRvdGFsUXVv
dGFSZWFjaGVkICYmICFtX2NhbGxlZFJlYWNoZWRNYXhBcHBDYWNoZVNpemUpIHsKQEAgLTExNTAs
NyArMTE1MCw3IEBAIHZvaWQgQXBwbGljYXRpb25DYWNoZUdyb3VwOjpwb3N0TGlzdGVuZXJUYXNr
KEFwcGxpY2F0aW9uQ2FjaGVIb3N0OjpFdmVudElEIGV2ZW50CiAgICAgCiAgICAgQVNTRVJUKGZy
YW1lLT5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigpID09IGxvYWRlcik7CiAKLSAgICBmcmFtZS0+
ZG9jdW1lbnQoKS0+cG9zdFRhc2soQ2FsbENhY2hlTGlzdGVuZXJUYXNrOjpjcmVhdGUobG9hZGVy
LCBldmVudElELCBwcm9ncmVzc1RvdGFsLCBwcm9ncmVzc0RvbmUpKTsKKyAgICBmcmFtZS0+ZG9j
dW1lbnQoKS5wb3N0VGFzayhDYWxsQ2FjaGVMaXN0ZW5lclRhc2s6OmNyZWF0ZShsb2FkZXIsIGV2
ZW50SUQsIHByb2dyZXNzVG90YWwsIHByb2dyZXNzRG9uZSkpOwogfQogCiB2b2lkIEFwcGxpY2F0
aW9uQ2FjaGVHcm91cDo6c2V0VXBkYXRlU3RhdHVzKFVwZGF0ZVN0YXR1cyBzdGF0dXMpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhv
c3QuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVI
b3N0LmNwcAppbmRleCBjOGYwODE0Li5kMWJmMjcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5jcHAKQEAgLTQ5MCw3
ICs0OTAsNyBAQCBib29sIEFwcGxpY2F0aW9uQ2FjaGVIb3N0Ojppc0FwcGxpY2F0aW9uQ2FjaGVC
bG9ja2VkRm9yUmVxdWVzdChjb25zdCBSZXNvdXJjZVJlcQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAKICAgICBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IG9yaWdpbiA9IFNlY3VyaXR5T3JpZ2luOjpj
cmVhdGUocmVxdWVzdC51cmwoKSk7Ci0gICAgcmV0dXJuICFvcmlnaW4tPmNhbkFjY2Vzc0FwcGxp
Y2F0aW9uQ2FjaGUoZnJhbWUtPmRvY3VtZW50KCktPnRvcE9yaWdpbigpKTsKKyAgICByZXR1cm4g
IW9yaWdpbi0+Y2FuQWNjZXNzQXBwbGljYXRpb25DYWNoZShmcmFtZS0+ZG9jdW1lbnQoKS50b3BP
cmlnaW4oKSk7CiB9CiAKIH0gIC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvRE9NQXBwbGljYXRpb25DYWNoZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvRE9NQXBwbGljYXRpb25DYWNoZS5jcHAKaW5kZXgg
NTY0MzdhOC4uM2NmMTM3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNh
Y2hlL0RPTUFwcGxpY2F0aW9uQ2FjaGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9h
cHBjYWNoZS9ET01BcHBsaWNhdGlvbkNhY2hlLmNwcApAQCAtMTA3LDcgKzEwNyw3IEBAIHZvaWQg
RE9NQXBwbGljYXRpb25DYWNoZTo6YWJvcnQoKQogU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogRE9N
QXBwbGljYXRpb25DYWNoZTo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0CiB7CiAgICAg
aWYgKG1fZnJhbWUpCi0gICAgICAgIHJldHVybiBtX2ZyYW1lLT5kb2N1bWVudCgpOworICAgICAg
ICByZXR1cm4gJm1fZnJhbWUtPmRvY3VtZW50KCk7CiAgICAgcmV0dXJuIDA7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL2NmL0xlZ2FjeVdlYkFyY2hpdmUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5j
cHAKaW5kZXggZDM3ZjFiOC4uOGQyN2UwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5jcHAKQEAgLTU1Miw3ICs1NTIsNyBA
QCBQYXNzUmVmUHRyPExlZ2FjeVdlYkFyY2hpdmU+IExlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZShj
b25zdCBTdHJpbmcmIG1hcmt1cFN0cmluZwogCiAgICAgICAgICAgICAgICAgUmVzb3VyY2VSZXF1
ZXN0IHJlcXVlc3Qoc3VicmVzb3VyY2VVUkwpOwogI2lmIEVOQUJMRShDQUNIRV9QQVJUSVRJT05J
TkcpCi0gICAgICAgICAgICAgICAgcmVxdWVzdC5zZXRDYWNoZVBhcnRpdGlvbihmcmFtZS0+ZG9j
dW1lbnQoKS0+dG9wT3JpZ2luKCktPmNhY2hlUGFydGl0aW9uKCkpOworICAgICAgICAgICAgICAg
IHJlcXVlc3Quc2V0Q2FjaGVQYXJ0aXRpb24oZnJhbWUtPmRvY3VtZW50KCkudG9wT3JpZ2luKCkt
PmNhY2hlUGFydGl0aW9uKCkpOwogI2VuZGlmCiAgICAgICAgICAgICAgICAgQ2FjaGVkUmVzb3Vy
Y2UqIGNhY2hlZFJlc291cmNlID0gbWVtb3J5Q2FjaGUoKS0+cmVzb3VyY2VGb3JSZXF1ZXN0KHJl
cXVlc3QsIGZyYW1lLT5wYWdlKCktPnNlc3Npb25JRCgpKTsKICAgICAgICAgICAgICAgICBpZiAo
Y2FjaGVkUmVzb3VyY2UpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNo
aXZlL21odG1sL01IVE1MQXJjaGl2ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2
ZS9taHRtbC9NSFRNTEFyY2hpdmUuY3BwCmluZGV4IDQ3MDhiZjEuLmJlMTNlYjAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MQXJjaGl2ZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxBcmNoaXZlLmNw
cApAQCAtMTU4LDEzICsxNTgsMTMgQEAgUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IE1IVE1MQXJj
aGl2ZTo6Z2VuZXJhdGVNSFRNTERhdGEoUGFnZSogcGFnZSwgYm9vbCB1c2VCaW4KICAgICBzdHJp
bmdCdWlsZGVyLmFwcGVuZCgiRnJvbTogPFNhdmVkIGJ5IFdlYktpdD5cclxuIik7CiAgICAgc3Ry
aW5nQnVpbGRlci5hcHBlbmQoIlN1YmplY3Q6ICIpOwogICAgIC8vIFdlIHJlcGxhY2Ugbm9uIEFT
Q0lJIGNoYXJhY3RlcnMgd2l0aCAnPycgY2hhcmFjdGVycyB0byBtYXRjaCBJRSdzIGJlaGF2aW9y
LgotICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKHJlcGxhY2VOb25QcmludGFibGVDaGFyYWN0ZXJz
KHBhZ2UtPm1haW5GcmFtZSgpLmRvY3VtZW50KCktPnRpdGxlKCkpKTsKKyAgICBzdHJpbmdCdWls
ZGVyLmFwcGVuZChyZXBsYWNlTm9uUHJpbnRhYmxlQ2hhcmFjdGVycyhwYWdlLT5tYWluRnJhbWUo
KS5kb2N1bWVudCgpLnRpdGxlKCkpKTsKICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgiXHJcbkRh
dGU6ICIpOwogICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKGRhdGVTdHJpbmcpOwogICAgIHN0cmlu
Z0J1aWxkZXIuYXBwZW5kKCJcclxuTUlNRS1WZXJzaW9uOiAxLjBcclxuIik7CiAgICAgc3RyaW5n
QnVpbGRlci5hcHBlbmQoIkNvbnRlbnQtVHlwZTogbXVsdGlwYXJ0L3JlbGF0ZWQ7XHJcbiIpOwog
ICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCJcdHR5cGU9XCIiKTsKLSAgICBzdHJpbmdCdWlsZGVy
LmFwcGVuZChwYWdlLT5tYWluRnJhbWUoKS5kb2N1bWVudCgpLT5zdWdnZXN0ZWRNSU1FVHlwZSgp
KTsKKyAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChwYWdlLT5tYWluRnJhbWUoKS5kb2N1bWVudCgp
LnN1Z2dlc3RlZE1JTUVUeXBlKCkpOwogICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCJcIjtcclxu
Iik7CiAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoIlx0Ym91bmRhcnk9XCIiKTsKICAgICBzdHJp
bmdCdWlsZGVyLmFwcGVuZChib3VuZGFyeSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcAppbmRleCBkOTBlNDA4Li45NjVjYzcw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VM
b2FkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJj
ZUxvYWRlci5jcHAKQEAgLTI3Niw3ICsyNzYsNyBAQCBib29sIENhY2hlZFJlc291cmNlTG9hZGVy
OjpjaGVja0luc2VjdXJlQ29udGVudChDYWNoZWRSZXNvdXJjZTo6VHlwZSB0eXBlLCBjb25zdAog
ICAgICAgICAvLyBUaGVzZSByZXNvdXJjZXMgY2FuIGNvcnJ1cHQgb25seSB0aGUgZnJhbWUncyBw
aXhlbHMuCiAgICAgICAgIGlmIChGcmFtZSogZiA9IGZyYW1lKCkpIHsKICAgICAgICAgICAgIEZy
YW1lJiB0b3BGcmFtZSA9IGYtPnRyZWUoKS50b3AoKTsKLSAgICAgICAgICAgIGlmICghdG9wRnJh
bWUubG9hZGVyKCkubWl4ZWRDb250ZW50Q2hlY2tlcigpLmNhbkRpc3BsYXlJbnNlY3VyZUNvbnRl
bnQodG9wRnJhbWUuZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKSwgdXJsKSkKKyAgICAgICAg
ICAgIGlmICghdG9wRnJhbWUubG9hZGVyKCkubWl4ZWRDb250ZW50Q2hlY2tlcigpLmNhbkRpc3Bs
YXlJbnNlY3VyZUNvbnRlbnQodG9wRnJhbWUuZG9jdW1lbnQoKS5zZWN1cml0eU9yaWdpbigpLCB1
cmwpKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogICAgICAgICBi
cmVhazsKQEAgLTY0Niw3ICs2NDYsNyBAQCB2b2lkIENhY2hlZFJlc291cmNlTG9hZGVyOjpwcmlu
dEFjY2Vzc0RlbmllZE1lc3NhZ2UoY29uc3QgVVJMJiB1cmwpIGNvbnN0CiAgICAgZWxzZQogICAg
ICAgICBtZXNzYWdlID0gIlVuc2FmZSBhdHRlbXB0IHRvIGxvYWQgVVJMICIgKyB1cmwuc3RyaW5n
Q2VudGVyRWxsaXBzaXplZFRvTGVuZ3RoKCkgKyAiIGZyb20gZnJhbWUgd2l0aCBVUkwgIiArIG1f
ZG9jdW1lbnQtPnVybCgpLnN0cmluZ0NlbnRlckVsbGlwc2l6ZWRUb0xlbmd0aCgpICsgIi4gRG9t
YWlucywgcHJvdG9jb2xzIGFuZCBwb3J0cyBtdXN0IG1hdGNoLlxuIjsKIAotICAgIGZyYW1lKCkt
PmRvY3VtZW50KCktPmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OlNlY3VyaXR5LCBN
ZXNzYWdlTGV2ZWw6OkVycm9yLCBtZXNzYWdlKTsKKyAgICBmcmFtZSgpLT5kb2N1bWVudCgpLmFk
ZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OlNlY3VyaXR5LCBNZXNzYWdlTGV2ZWw6OkVy
cm9yLCBtZXNzYWdlKTsKIH0KIAogdm9pZCBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6c2V0QXV0b0xv
YWRJbWFnZXMoYm9vbCBlbmFibGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
aWNvbi9JY29uQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaWNvbi9JY29u
Q29udHJvbGxlci5jcHAKaW5kZXggZTRhZGVhZS4uNzJiYmEyMiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2ljb24vSWNvbkNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9pY29uL0ljb25Db250cm9sbGVyLmNwcApAQCAtNzAsNyArNzAsNyBAQCBVUkwg
SWNvbkNvbnRyb2xsZXI6OnVybCgpCiBJY29uVVJMIEljb25Db250cm9sbGVyOjppY29uVVJMKElj
b25UeXBlIGljb25UeXBlKSBjb25zdAogewogICAgIEljb25VUkwgcmVzdWx0OwotICAgIGNvbnN0
IFZlY3RvcjxJY29uVVJMPiYgaWNvblVSTHMgPSBtX2ZyYW1lLmRvY3VtZW50KCktPmljb25VUkxz
KGljb25UeXBlKTsKKyAgICBjb25zdCBWZWN0b3I8SWNvblVSTD4mIGljb25VUkxzID0gbV9mcmFt
ZS5kb2N1bWVudCgpLmljb25VUkxzKGljb25UeXBlKTsKICAgICBWZWN0b3I8SWNvblVSTD46OmNv
bnN0X2l0ZXJhdG9yIGl0ZXIoaWNvblVSTHMuYmVnaW4oKSk7CiAgICAgZm9yICg7IGl0ZXIgIT0g
aWNvblVSTHMuZW5kKCk7ICsraXRlcikgewogICAgICAgICBpZiAocmVzdWx0Lm1faWNvblVSTC5p
c0VtcHR5KCkgfHwgIWl0ZXItPm1fbWltZVR5cGUuaXNFbXB0eSgpKQpAQCAtMTA1LDcgKzEwNSw3
IEBAIEljb25VUkxzIEljb25Db250cm9sbGVyOjp1cmxzRm9yVHlwZXMoaW50IGljb25UeXBlc01h
c2spCiAjZW5kaWYKIAogICAgIC8vIEZpbmFsbHksIGFwcGVuZCBhbGwgcmVtYWluaW5nIGljb25z
IG9mIHRoaXMgdHlwZS4KLSAgICBjb25zdCBWZWN0b3I8SWNvblVSTD4mIGFsbEljb25VUkxzID0g
bV9mcmFtZS5kb2N1bWVudCgpLT5pY29uVVJMcyhpY29uVHlwZXNNYXNrKTsKKyAgICBjb25zdCBW
ZWN0b3I8SWNvblVSTD4mIGFsbEljb25VUkxzID0gbV9mcmFtZS5kb2N1bWVudCgpLmljb25VUkxz
KGljb25UeXBlc01hc2spOwogICAgIGZvciAoVmVjdG9yPEljb25VUkw+Ojpjb25zdF9pdGVyYXRv
ciBpdGVyID0gYWxsSWNvblVSTHMuYmVnaW4oKTsgaXRlciAhPSBhbGxJY29uVVJMcy5lbmQoKTsg
KytpdGVyKSB7CiAgICAgICAgIGludCBpOwogICAgICAgICBpbnQgaWNvbkNvdW50ID0gaWNvblVS
THMuc2l6ZSgpOwpAQCAtMTIyLDggKzEyMiw4IEBAIEljb25VUkxzIEljb25Db250cm9sbGVyOjp1
cmxzRm9yVHlwZXMoaW50IGljb25UeXBlc01hc2spCiAKIHZvaWQgSWNvbkNvbnRyb2xsZXI6OmNv
bW1pdFRvRGF0YWJhc2UoY29uc3QgVVJMJiBpY29uKQogewotICAgIExPRyhJY29uRGF0YWJhc2Us
ICJDb21taXR0aW5nIGljb25VUkwgJXMgdG8gZGF0YWJhc2UgZm9yIHBhZ2VVUkxzICVzIGFuZCAl
cyIsIGljb24uc3RyaW5nKCkuYXNjaWkoKS5kYXRhKCksIG1fZnJhbWUuZG9jdW1lbnQoKS0+dXJs
KCkuc3RyaW5nKCkuYXNjaWkoKS5kYXRhKCksIG1fZnJhbWUubG9hZGVyKCkuaW5pdGlhbFJlcXVl
c3QoKS51cmwoKS5zdHJpbmcoKS5hc2NpaSgpLmRhdGEoKSk7Ci0gICAgaWNvbkRhdGFiYXNlKCku
c2V0SWNvblVSTEZvclBhZ2VVUkwoaWNvbi5zdHJpbmcoKSwgbV9mcmFtZS5kb2N1bWVudCgpLT51
cmwoKS5zdHJpbmcoKSk7CisgICAgTE9HKEljb25EYXRhYmFzZSwgIkNvbW1pdHRpbmcgaWNvblVS
TCAlcyB0byBkYXRhYmFzZSBmb3IgcGFnZVVSTHMgJXMgYW5kICVzIiwgaWNvbi5zdHJpbmcoKS5h
c2NpaSgpLmRhdGEoKSwgbV9mcmFtZS5kb2N1bWVudCgpLnVybCgpLnN0cmluZygpLmFzY2lpKCku
ZGF0YSgpLCBtX2ZyYW1lLmxvYWRlcigpLmluaXRpYWxSZXF1ZXN0KCkudXJsKCkuc3RyaW5nKCku
YXNjaWkoKS5kYXRhKCkpOworICAgIGljb25EYXRhYmFzZSgpLnNldEljb25VUkxGb3JQYWdlVVJM
KGljb24uc3RyaW5nKCksIG1fZnJhbWUuZG9jdW1lbnQoKS51cmwoKS5zdHJpbmcoKSk7CiAgICAg
aWNvbkRhdGFiYXNlKCkuc2V0SWNvblVSTEZvclBhZ2VVUkwoaWNvbi5zdHJpbmcoKSwgbV9mcmFt
ZS5sb2FkZXIoKS5pbml0aWFsUmVxdWVzdCgpLnVybCgpLnN0cmluZygpKTsKIH0KIApAQCAtMTM5
LDcgKzEzOSw3IEBAIHZvaWQgSWNvbkNvbnRyb2xsZXI6OnN0YXJ0TG9hZGVyKCkKICAgICAgICAg
cmV0dXJuOwogCiAgICAgQVNTRVJUKCFtX2ZyYW1lLnRyZWUoKS5wYXJlbnQoKSk7Ci0gICAgaWYg
KCFkb2N1bWVudENhbkhhdmVJY29uKG1fZnJhbWUuZG9jdW1lbnQoKS0+dXJsKCkpKQorICAgIGlm
ICghZG9jdW1lbnRDYW5IYXZlSWNvbihtX2ZyYW1lLmRvY3VtZW50KCkudXJsKCkpKQogICAgICAg
ICByZXR1cm47CiAKICAgICBVUkwgaWNvblVSTCh1cmwoKSk7CkBAIC0yMjgsNyArMjI4LDcgQEAg
dm9pZCBJY29uQ29udHJvbGxlcjo6Y29udGludWVMb2FkV2l0aERlY2lzaW9uKEljb25Mb2FkRGVj
aXNpb24gaWNvbkxvYWREZWNpc2lvbikKICAgICAgICAgaWYgKCFpY29uRGF0YWJhc2UoKS5zeW5j
aHJvbm91c0ljb25EYXRhS25vd25Gb3JJY29uVVJMKHVybFN0cmluZykpIHsKICAgICAgICAgICAg
IExPRyhJY29uRGF0YWJhc2UsICJUb2xkIG5vdCB0byBsb2FkIGljb24gJXMgYnV0IGljb24gZGF0
YSBpcyBub3QgeWV0IGF2YWlsYWJsZSAtIHJlZ2lzdGVyaW5nIGZvciBub3RpZmljYXRpb24gYW5k
IHJlcXVlc3RpbmcgbG9hZCBmcm9tIGRpc2siLCB1cmxTdHJpbmcuYXNjaWkoKS5kYXRhKCkpOwog
ICAgICAgICAgICAgbV9mcmFtZS5sb2FkZXIoKS5jbGllbnQoKS5yZWdpc3RlckZvckljb25Ob3Rp
ZmljYXRpb24oKTsKLSAgICAgICAgICAgIGljb25EYXRhYmFzZSgpLnN5bmNocm9ub3VzSWNvbkZv
clBhZ2VVUkwobV9mcmFtZS5kb2N1bWVudCgpLT51cmwoKS5zdHJpbmcoKSwgSW50U2l6ZSgwLCAw
KSk7CisgICAgICAgICAgICBpY29uRGF0YWJhc2UoKS5zeW5jaHJvbm91c0ljb25Gb3JQYWdlVVJM
KG1fZnJhbWUuZG9jdW1lbnQoKS51cmwoKS5zdHJpbmcoKSwgSW50U2l6ZSgwLCAwKSk7CiAgICAg
ICAgICAgICBpY29uRGF0YWJhc2UoKS5zeW5jaHJvbm91c0ljb25Gb3JQYWdlVVJMKG1fZnJhbWUu
bG9hZGVyKCkuaW5pdGlhbFJlcXVlc3QoKS51cmwoKS5zdHJpbmcoKSwgSW50U2l6ZSgwLCAwKSk7
CiAgICAgICAgIH0gZWxzZQogICAgICAgICAgICAgbV9mcmFtZS5sb2FkZXIoKS5jbGllbnQoKS5k
aXNwYXRjaERpZFJlY2VpdmVJY29uKCk7CkBAIC0yNTUsNyArMjU1LDcgQEAgYm9vbCBJY29uQ29u
dHJvbGxlcjo6YXBwZW5kVG9JY29uVVJMcyhJY29uVHlwZSBpY29uVHlwZSwgSWNvblVSTHMqIGlj
b25VUkxzKQogSWNvblVSTCBJY29uQ29udHJvbGxlcjo6ZGVmYXVsdFVSTChJY29uVHlwZSBpY29u
VHlwZSkKIHsKICAgICAvLyBEb24ndCByZXR1cm4gYSBmYXZpY29uIGljb25VUkwgdW5sZXNzIHdl
J3JlIGh0dHAgb3IgaHR0cHMKLSAgICBVUkwgZG9jdW1lbnRVUkwgPSBtX2ZyYW1lLmRvY3VtZW50
KCktPnVybCgpOworICAgIFVSTCBkb2N1bWVudFVSTCA9IG1fZnJhbWUuZG9jdW1lbnQoKS51cmwo
KTsKICAgICBpZiAoIWRvY3VtZW50VVJMLnByb3RvY29sSXNJbkhUVFBGYW1pbHkoKSkKICAgICAg
ICAgcmV0dXJuIEljb25VUkwoKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2ljb24vSWNvbkxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uTG9h
ZGVyLmNwcAppbmRleCBhZTUwZTg3Li40NjdkOGZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvaWNvbi9JY29uTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
aWNvbi9JY29uTG9hZGVyLmNwcApAQCAtNTUsMTUgKzU1LDE2IEBAIEljb25Mb2FkZXI6On5JY29u
TG9hZGVyKCkKIAogdm9pZCBJY29uTG9hZGVyOjpzdGFydExvYWRpbmcoKQogewotICAgIGlmICht
X3Jlc291cmNlIHx8ICFtX2ZyYW1lLmRvY3VtZW50KCkpCisgICAgaWYgKG1fcmVzb3VyY2UpCiAg
ICAgICAgIHJldHVybjsKKyAgICBBU1NFUlQobV9mcmFtZS5kb2N1bWVudCgpKTsKIAogICAgIENh
Y2hlZFJlc291cmNlUmVxdWVzdCByZXF1ZXN0KFJlc291cmNlUmVxdWVzdChtX2ZyYW1lLmxvYWRl
cigpLmljb24oKS51cmwoKSksIFJlc291cmNlTG9hZGVyT3B0aW9ucyhTZW5kQ2FsbGJhY2tzLCBT
bmlmZkNvbnRlbnQsIEJ1ZmZlckRhdGEsIERvTm90QWxsb3dTdG9yZWRDcmVkZW50aWFscywgRG9O
b3RBc2tDbGllbnRGb3JBbnlDcmVkZW50aWFscywgRG9TZWN1cml0eUNoZWNrLCBVc2VEZWZhdWx0
T3JpZ2luUmVzdHJpY3Rpb25zRm9yVHlwZSkpOwogCiAgICAgcmVxdWVzdC5tdXRhYmxlUmVzb3Vy
Y2VSZXF1ZXN0KCkuc2V0UHJpb3JpdHkoUmVzb3VyY2VMb2FkUHJpb3JpdHlMb3cpOwogICAgIHJl
cXVlc3Quc2V0SW5pdGlhdG9yKGNhY2hlZFJlc291cmNlUmVxdWVzdEluaXRpYXRvcnMoKS5pY29u
KTsKIAotICAgIG1fcmVzb3VyY2UgPSBtX2ZyYW1lLmRvY3VtZW50KCktPmNhY2hlZFJlc291cmNl
TG9hZGVyKCktPnJlcXVlc3RSYXdSZXNvdXJjZShyZXF1ZXN0KTsKKyAgICBtX3Jlc291cmNlID0g
bV9mcmFtZS5kb2N1bWVudCgpLmNhY2hlZFJlc291cmNlTG9hZGVyKCktPnJlcXVlc3RSYXdSZXNv
dXJjZShyZXF1ZXN0KTsKICAgICBpZiAobV9yZXNvdXJjZSkKICAgICAgICAgbV9yZXNvdXJjZS0+
YWRkQ2xpZW50KHRoaXMpOwogICAgIGVsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvQ2hyb21lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmNwcAppbmRleCA0ZGNk
NjM1Li40ZjgyZDk5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9DaHJvbWUuY3BwCkBAIC01NDgsNyArNTQ4LDcgQEAg
dm9pZCBDaHJvbWU6OndpbmRvd1NjcmVlbkRpZENoYW5nZShQbGF0Zm9ybURpc3BsYXlJRCBkaXNw
bGF5SUQpCiAKICAgICBmb3IgKEZyYW1lKiBmcmFtZSA9ICZtX3BhZ2UubWFpbkZyYW1lKCk7IGZy
YW1lOyBmcmFtZSA9IGZyYW1lLT50cmVlKCkudHJhdmVyc2VOZXh0KCkpIHsKICAgICAgICAgaWYg
KGZyYW1lLT5kb2N1bWVudCgpKQotICAgICAgICAgICAgZnJhbWUtPmRvY3VtZW50KCktPndpbmRv
d1NjcmVlbkRpZENoYW5nZShkaXNwbGF5SUQpOworICAgICAgICAgICAgZnJhbWUtPmRvY3VtZW50
KCkud2luZG93U2NyZWVuRGlkQ2hhbmdlKGRpc3BsYXlJRCk7CiAgICAgfQogfQogCkBAIC02MTYs
NyArNjE2LDcgQEAgdm9pZCBDaHJvbWU6OmRpZFJlY2VpdmVEb2NUeXBlKEZyYW1lKiBmcmFtZSkK
ICAgICAgICAgcmV0dXJuOwogCiAgICAgYm9vbCBoYXNNb2JpbGVEb2NUeXBlID0gZmFsc2U7Ci0g
ICAgaWYgKERvY3VtZW50VHlwZSogZG9jdW1lbnRUeXBlID0gZnJhbWUtPmRvY3VtZW50KCktPmRv
Y3R5cGUoKSkKKyAgICBpZiAoRG9jdW1lbnRUeXBlKiBkb2N1bWVudFR5cGUgPSBmcmFtZS0+ZG9j
dW1lbnQoKS5kb2N0eXBlKCkpCiAgICAgICAgIGhhc01vYmlsZURvY1R5cGUgPSBkb2N1bWVudFR5
cGUtPnB1YmxpY0lkKCkuY29udGFpbnMoInhodG1sIG1vYmlsZSIsIGZhbHNlKTsKICAgICBtX2Ns
aWVudC5kaWRSZWNlaXZlTW9iaWxlRG9jVHlwZShoYXNNb2JpbGVEb2NUeXBlKTsKIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGV4dE1lbnVDb250cm9sbGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvQ29udGV4dE1lbnVDb250cm9sbGVyLmNwcAppbmRleCAxN2FlNDU2
Li44MDlhMzg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRleHRNZW51Q29u
dHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Db250ZXh0TWVudUNvbnRyb2xs
ZXIuY3BwCkBAIC0xOTksNyArMTk5LDcgQEAgc3RhdGljIHZvaWQgb3Blbk5ld1dpbmRvdyhjb25z
dCBVUkwmIHVybFRvTG9hZCwgRnJhbWUqIGZyYW1lKQogICAgIGlmICghb2xkUGFnZSkKICAgICAg
ICAgcmV0dXJuOwogICAgIAotICAgIEZyYW1lTG9hZFJlcXVlc3QgcmVxdWVzdChmcmFtZS0+ZG9j
dW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKSwgUmVzb3VyY2VSZXF1ZXN0KHVybFRvTG9hZCwgZnJh
bWUtPmxvYWRlcigpLm91dGdvaW5nUmVmZXJyZXIoKSkpOworICAgIEZyYW1lTG9hZFJlcXVlc3Qg
cmVxdWVzdChmcmFtZS0+ZG9jdW1lbnQoKS5zZWN1cml0eU9yaWdpbigpLCBSZXNvdXJjZVJlcXVl
c3QodXJsVG9Mb2FkLCBmcmFtZS0+bG9hZGVyKCkub3V0Z29pbmdSZWZlcnJlcigpKSk7CiAgICAg
UGFnZSogbmV3UGFnZSA9IG9sZFBhZ2U7CiAKICAgICBuZXdQYWdlID0gb2xkUGFnZS0+Y2hyb21l
KCkuY3JlYXRlV2luZG93KGZyYW1lLCByZXF1ZXN0LCBXaW5kb3dGZWF0dXJlcygpLCBOYXZpZ2F0
aW9uQWN0aW9uKHJlcXVlc3QucmVzb3VyY2VSZXF1ZXN0KCkpKTsKQEAgLTM4Miw5ICszODIsOSBA
QCB2b2lkIENvbnRleHRNZW51Q29udHJvbGxlcjo6Y29udGV4dE1lbnVJdGVtU2VsZWN0ZWQoQ29u
dGV4dE1lbnVJdGVtKiBpdGVtKQogICAgICAgICAgICAgICAgIHJlcGxhY2VPcHRpb25zIHw9IFJl
cGxhY2VTZWxlY3Rpb25Db21tYW5kOjpTZWxlY3RSZXBsYWNlbWVudDsKICAgICAgICAgICAgIH0K
IAotICAgICAgICAgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gZnJhbWUtPmRvY3VtZW50KCk7Cisg
ICAgICAgICAgICBEb2N1bWVudCYgZG9jdW1lbnQgPSBmcmFtZS0+ZG9jdW1lbnQoKTsKICAgICAg
ICAgICAgIEFTU0VSVChkb2N1bWVudCk7Ci0gICAgICAgICAgICBSZWZQdHI8UmVwbGFjZVNlbGVj
dGlvbkNvbW1hbmQ+IGNvbW1hbmQgPSBSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6Y3JlYXRlKCpk
b2N1bWVudCwgY3JlYXRlRnJhZ21lbnRGcm9tTWFya3VwKCpkb2N1bWVudCwgaXRlbS0+dGl0bGUo
KSwgIiIpLCByZXBsYWNlT3B0aW9ucyk7CisgICAgICAgICAgICBSZWZQdHI8UmVwbGFjZVNlbGVj
dGlvbkNvbW1hbmQ+IGNvbW1hbmQgPSBSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZDo6Y3JlYXRlKGRv
Y3VtZW50LCBjcmVhdGVGcmFnbWVudEZyb21NYXJrdXAoZG9jdW1lbnQsIGl0ZW0tPnRpdGxlKCks
ICIiKSwgcmVwbGFjZU9wdGlvbnMpOwogICAgICAgICAgICAgYXBwbHlDb21tYW5kKGNvbW1hbmQp
OwogICAgICAgICAgICAgZnJhbWUtPnNlbGVjdGlvbigpLnJldmVhbFNlbGVjdGlvbihTY3JvbGxB
bGlnbm1lbnQ6OmFsaWduVG9FZGdlSWZOZWVkZWQpOwogICAgICAgICB9CkBAIC00MDUsMTIgKzQw
NSwxMiBAQCB2b2lkIENvbnRleHRNZW51Q29udHJvbGxlcjo6Y29udGV4dE1lbnVJdGVtU2VsZWN0
ZWQoQ29udGV4dE1lbnVJdGVtKiBpdGVtKQogICAgICAgICBicmVhazsKICAgICBjYXNlIENvbnRl
eHRNZW51SXRlbVRhZ09wZW5MaW5rOgogICAgICAgICBpZiAoRnJhbWUqIHRhcmdldEZyYW1lID0g
bV9jb250ZXh0LmhpdFRlc3RSZXN1bHQoKS50YXJnZXRGcmFtZSgpKQotICAgICAgICAgICAgdGFy
Z2V0RnJhbWUtPmxvYWRlcigpLmxvYWRGcmFtZVJlcXVlc3QoRnJhbWVMb2FkUmVxdWVzdChmcmFt
ZS0+ZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKSwgUmVzb3VyY2VSZXF1ZXN0KG1fY29udGV4
dC5oaXRUZXN0UmVzdWx0KCkuYWJzb2x1dGVMaW5rVVJMKCksIGZyYW1lLT5sb2FkZXIoKS5vdXRn
b2luZ1JlZmVycmVyKCkpKSwgTG9ja0hpc3Rvcnk6Ok5vLCBMb2NrQmFja0ZvcndhcmRMaXN0OjpO
bywgMCwgMCwgTWF5YmVTZW5kUmVmZXJyZXIpOworICAgICAgICAgICAgdGFyZ2V0RnJhbWUtPmxv
YWRlcigpLmxvYWRGcmFtZVJlcXVlc3QoRnJhbWVMb2FkUmVxdWVzdChmcmFtZS0+ZG9jdW1lbnQo
KS5zZWN1cml0eU9yaWdpbigpLCBSZXNvdXJjZVJlcXVlc3QobV9jb250ZXh0LmhpdFRlc3RSZXN1
bHQoKS5hYnNvbHV0ZUxpbmtVUkwoKSwgZnJhbWUtPmxvYWRlcigpLm91dGdvaW5nUmVmZXJyZXIo
KSkpLCBMb2NrSGlzdG9yeTo6Tm8sIExvY2tCYWNrRm9yd2FyZExpc3Q6Ok5vLCAwLCAwLCBNYXli
ZVNlbmRSZWZlcnJlcik7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIG9wZW5OZXdXaW5kb3co
bV9jb250ZXh0LmhpdFRlc3RSZXN1bHQoKS5hYnNvbHV0ZUxpbmtVUkwoKSwgZnJhbWUpOwogICAg
ICAgICBicmVhazsKICAgICBjYXNlIENvbnRleHRNZW51SXRlbVRhZ09wZW5MaW5rSW5UaGlzV2lu
ZG93OgotICAgICAgICBmcmFtZS0+bG9hZGVyKCkubG9hZEZyYW1lUmVxdWVzdChGcmFtZUxvYWRS
ZXF1ZXN0KGZyYW1lLT5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpLCBSZXNvdXJjZVJlcXVl
c3QobV9jb250ZXh0LmhpdFRlc3RSZXN1bHQoKS5hYnNvbHV0ZUxpbmtVUkwoKSwgZnJhbWUtPmxv
YWRlcigpLm91dGdvaW5nUmVmZXJyZXIoKSkpLCBMb2NrSGlzdG9yeTo6Tm8sIExvY2tCYWNrRm9y
d2FyZExpc3Q6Ok5vLCAwLCAwLCBNYXliZVNlbmRSZWZlcnJlcik7CisgICAgICAgIGZyYW1lLT5s
b2FkZXIoKS5sb2FkRnJhbWVSZXF1ZXN0KEZyYW1lTG9hZFJlcXVlc3QoZnJhbWUtPmRvY3VtZW50
KCkuc2VjdXJpdHlPcmlnaW4oKSwgUmVzb3VyY2VSZXF1ZXN0KG1fY29udGV4dC5oaXRUZXN0UmVz
dWx0KCkuYWJzb2x1dGVMaW5rVVJMKCksIGZyYW1lLT5sb2FkZXIoKS5vdXRnb2luZ1JlZmVycmVy
KCkpKSwgTG9ja0hpc3Rvcnk6Ok5vLCBMb2NrQmFja0ZvcndhcmRMaXN0OjpObywgMCwgMCwgTWF5
YmVTZW5kUmVmZXJyZXIpOwogICAgICAgICBicmVhazsKICAgICBjYXNlIENvbnRleHRNZW51SXRl
bVRhZ0JvbGQ6CiAgICAgICAgIGZyYW1lLT5lZGl0b3IoKS5jb21tYW5kKCJUb2dnbGVCb2xkIiku
ZXhlY3V0ZSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01TZWxlY3Rpb24u
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01TZWxlY3Rpb24uY3BwCmluZGV4IDE4Y2JhODgu
LjIxYWQwYjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NU2VsZWN0aW9uLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVNlbGVjdGlvbi5jcHAKQEAgLTUzLDcgKzUz
LDcgQEAgc3RhdGljIE5vZGUqIHNlbGVjdGlvblNoYWRvd0FuY2VzdG9yKEZyYW1lKiBmcmFtZSkK
ICAgICBpZiAoIW5vZGUtPmlzSW5TaGFkb3dUcmVlKCkpCiAgICAgICAgIHJldHVybiAwOwogCi0g
ICAgcmV0dXJuIGZyYW1lLT5kb2N1bWVudCgpLT5hbmNlc3RvckluVGhpc1Njb3BlKG5vZGUpOwor
ICAgIHJldHVybiBmcmFtZS0+ZG9jdW1lbnQoKS5hbmNlc3RvckluVGhpc1Njb3BlKG5vZGUpOwog
fQogCiBET01TZWxlY3Rpb246OkRPTVNlbGVjdGlvbihjb25zdCBUcmVlU2NvcGUqIHRyZWVTY29w
ZSkKQEAgLTQ0OCw3ICs0NDgsNyBAQCBib29sIERPTVNlbGVjdGlvbjo6Y29udGFpbnNOb2RlKE5v
ZGUqIG4sIGJvb2wgYWxsb3dQYXJ0aWFsKSBjb25zdAogCiAgICAgRnJhbWVTZWxlY3Rpb24mIHNl
bGVjdGlvbiA9IG1fZnJhbWUtPnNlbGVjdGlvbigpOwogCi0gICAgaWYgKCFuIHx8IG1fZnJhbWUt
PmRvY3VtZW50KCkgIT0gJm4tPmRvY3VtZW50KCkgfHwgc2VsZWN0aW9uLmlzTm9uZSgpKQorICAg
IGlmICghbiB8fCAmbV9mcmFtZS0+ZG9jdW1lbnQoKSAhPSAmbi0+ZG9jdW1lbnQoKSB8fCBzZWxl
Y3Rpb24uaXNOb25lKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIFJlZlB0cjxOb2Rl
PiBub2RlID0gbjsKQEAgLTUzMSw3ICs1MzEsNyBAQCBib29sIERPTVNlbGVjdGlvbjo6aXNWYWxp
ZEZvclBvc2l0aW9uKE5vZGUqIG5vZGUpIGNvbnN0CiAgICAgQVNTRVJUKG1fZnJhbWUpOwogICAg
IGlmICghbm9kZSkKICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgcmV0dXJuICZub2RlLT5kb2N1
bWVudCgpID09IG1fZnJhbWUtPmRvY3VtZW50KCk7CisgICAgcmV0dXJuICZub2RlLT5kb2N1bWVu
dCgpID09ICZtX2ZyYW1lLT5kb2N1bWVudCgpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5jcHAKaW5kZXggN2Y5YWFmOC4uOTQwNWUzZiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvRE9NV2luZG93LmNwcApAQCAtNTcxLDcgKzU3MSw3IEBAIHZvaWQgRE9NV2luZG93
OjpyZXNldERPTVdpbmRvd1Byb3BlcnRpZXMoKQogCiBib29sIERPTVdpbmRvdzo6aXNDdXJyZW50
bHlEaXNwbGF5ZWRJbkZyYW1lKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9mcmFtZSAmJiBtX2Zy
YW1lLT5kb2N1bWVudCgpLT5kb21XaW5kb3coKSA9PSB0aGlzOworICAgIHJldHVybiBtX2ZyYW1l
ICYmIG1fZnJhbWUtPmRvY3VtZW50KCkuZG9tV2luZG93KCkgPT0gdGhpczsKIH0KIAogI2lmIEVO
QUJMRShPUklFTlRBVElPTl9FVkVOVFMpCkBAIC04NzEsNyArODcxLDcgQEAgRE9NU2VsZWN0aW9u
KiBET01XaW5kb3c6OmdldFNlbGVjdGlvbigpCiAgICAgaWYgKCFpc0N1cnJlbnRseURpc3BsYXll
ZEluRnJhbWUoKSB8fCAhbV9mcmFtZSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICByZXR1cm4g
bV9mcmFtZS0+ZG9jdW1lbnQoKS0+Z2V0U2VsZWN0aW9uKCk7CisgICAgcmV0dXJuIG1fZnJhbWUt
PmRvY3VtZW50KCkuZ2V0U2VsZWN0aW9uKCk7CiB9CiAKIEVsZW1lbnQqIERPTVdpbmRvdzo6ZnJh
bWVFbGVtZW50KCkgY29uc3QKQEAgLTkwOSw3ICs5MDksNyBAQCB2b2lkIERPTVdpbmRvdzo6Zm9j
dXMoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkKICAgICAvLyBDbGVhciB0aGUgY3Vy
cmVudCBmcmFtZSdzIGZvY3VzZWQgbm9kZSBpZiBhIG5ldyBmcmFtZSBpcyBhYm91dCB0byBiZSBm
b2N1c2VkLgogICAgIEZyYW1lKiBmb2N1c2VkRnJhbWUgPSBwYWdlLT5mb2N1c0NvbnRyb2xsZXIo
KS5mb2N1c2VkRnJhbWUoKTsKICAgICBpZiAoZm9jdXNlZEZyYW1lICYmIGZvY3VzZWRGcmFtZSAh
PSBtX2ZyYW1lKQotICAgICAgICBmb2N1c2VkRnJhbWUtPmRvY3VtZW50KCktPnNldEZvY3VzZWRF
bGVtZW50KDApOworICAgICAgICBmb2N1c2VkRnJhbWUtPmRvY3VtZW50KCkuc2V0Rm9jdXNlZEVs
ZW1lbnQoMCk7CiAKICAgICBtX2ZyYW1lLT5ldmVudEhhbmRsZXIoKS5mb2N1c0RvY3VtZW50Vmll
dygpOwogfQpAQCAtMTAxMSw3ICsxMDExLDcgQEAgdm9pZCBET01XaW5kb3c6OmFsZXJ0KGNvbnN0
IFN0cmluZyYgbWVzc2FnZSkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIG1fZnJhbWUt
PmRvY3VtZW50KCktPnVwZGF0ZVN0eWxlSWZOZWVkZWQoKTsKKyAgICBtX2ZyYW1lLT5kb2N1bWVu
dCgpLnVwZGF0ZVN0eWxlSWZOZWVkZWQoKTsKIAogICAgIFBhZ2UqIHBhZ2UgPSBtX2ZyYW1lLT5w
YWdlKCk7CiAgICAgaWYgKCFwYWdlKQpAQCAtMTAzMSw3ICsxMDMxLDcgQEAgYm9vbCBET01XaW5k
b3c6OmNvbmZpcm0oY29uc3QgU3RyaW5nJiBtZXNzYWdlKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgfQogCi0gICAgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+dXBkYXRlU3R5bGVJZk5lZWRlZCgp
OworICAgIG1fZnJhbWUtPmRvY3VtZW50KCkudXBkYXRlU3R5bGVJZk5lZWRlZCgpOwogCiAgICAg
UGFnZSogcGFnZSA9IG1fZnJhbWUtPnBhZ2UoKTsKICAgICBpZiAoIXBhZ2UpCkBAIC0xMDUxLDcg
KzEwNTEsNyBAQCBTdHJpbmcgRE9NV2luZG93Ojpwcm9tcHQoY29uc3QgU3RyaW5nJiBtZXNzYWdl
LCBjb25zdCBTdHJpbmcmIGRlZmF1bHRWYWx1ZSkKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwog
ICAgIH0KIAotICAgIG1fZnJhbWUtPmRvY3VtZW50KCktPnVwZGF0ZVN0eWxlSWZOZWVkZWQoKTsK
KyAgICBtX2ZyYW1lLT5kb2N1bWVudCgpLnVwZGF0ZVN0eWxlSWZOZWVkZWQoKTsKIAogICAgIFBh
Z2UqIHBhZ2UgPSBtX2ZyYW1lLT5wYWdlKCk7CiAgICAgaWYgKCFwYWdlKQpAQCAtMTE5Niw3ICsx
MTk2LDcgQEAgaW50IERPTVdpbmRvdzo6c2Nyb2xsWCgpIGNvbnN0CiAgICAgaWYgKCFzY3JvbGxY
KQogICAgICAgICByZXR1cm4gMDsKIAotICAgIG1fZnJhbWUtPmRvY3VtZW50KCktPnVwZGF0ZUxh
eW91dElnbm9yZVBlbmRpbmdTdHlsZXNoZWV0cygpOworICAgIG1fZnJhbWUtPmRvY3VtZW50KCku
dXBkYXRlTGF5b3V0SWdub3JlUGVuZGluZ1N0eWxlc2hlZXRzKCk7CiAKICAgICByZXR1cm4gdmll
dy0+bWFwRnJvbUxheW91dFRvQ1NTVW5pdHModmlldy0+Y29udGVudHNTY3JvbGxQb3NpdGlvbigp
LngoKSk7CiB9CkBAIC0xMjE0LDcgKzEyMTQsNyBAQCBpbnQgRE9NV2luZG93OjpzY3JvbGxZKCkg
Y29uc3QKICAgICBpZiAoIXNjcm9sbFkpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgbV9mcmFt
ZS0+ZG9jdW1lbnQoKS0+dXBkYXRlTGF5b3V0SWdub3JlUGVuZGluZ1N0eWxlc2hlZXRzKCk7Cisg
ICAgbV9mcmFtZS0+ZG9jdW1lbnQoKS51cGRhdGVMYXlvdXRJZ25vcmVQZW5kaW5nU3R5bGVzaGVl
dHMoKTsKIAogICAgIHJldHVybiB2aWV3LT5tYXBGcm9tTGF5b3V0VG9DU1NVbml0cyh2aWV3LT5j
b250ZW50c1Njcm9sbFBvc2l0aW9uKCkueSgpKTsKIH0KQEAgLTEyODMsNyArMTI4Myw3IEBAIERP
TVdpbmRvdyogRE9NV2luZG93OjpzZWxmKCkgY29uc3QKICAgICBpZiAoIW1fZnJhbWUpCiAgICAg
ICAgIHJldHVybiAwOwogCi0gICAgcmV0dXJuIG1fZnJhbWUtPmRvY3VtZW50KCktPmRvbVdpbmRv
dygpOworICAgIHJldHVybiBtX2ZyYW1lLT5kb2N1bWVudCgpLmRvbVdpbmRvdygpOwogfQogCiBE
T01XaW5kb3cqIERPTVdpbmRvdzo6b3BlbmVyKCkgY29uc3QKQEAgLTEyOTUsNyArMTI5NSw3IEBA
IERPTVdpbmRvdyogRE9NV2luZG93OjpvcGVuZXIoKSBjb25zdAogICAgIGlmICghb3BlbmVyKQog
ICAgICAgICByZXR1cm4gMDsKIAotICAgIHJldHVybiBvcGVuZXItPmRvY3VtZW50KCktPmRvbVdp
bmRvdygpOworICAgIHJldHVybiBvcGVuZXItPmRvY3VtZW50KCkuZG9tV2luZG93KCk7CiB9CiAK
IERPTVdpbmRvdyogRE9NV2luZG93OjpwYXJlbnQoKSBjb25zdApAQCAtMTMwNSw5ICsxMzA1LDkg
QEAgRE9NV2luZG93KiBET01XaW5kb3c6OnBhcmVudCgpIGNvbnN0CiAKICAgICBGcmFtZSogcGFy
ZW50ID0gbV9mcmFtZS0+dHJlZSgpLnBhcmVudCgpOwogICAgIGlmIChwYXJlbnQpCi0gICAgICAg
IHJldHVybiBwYXJlbnQtPmRvY3VtZW50KCktPmRvbVdpbmRvdygpOworICAgICAgICByZXR1cm4g
cGFyZW50LT5kb2N1bWVudCgpLmRvbVdpbmRvdygpOwogCi0gICAgcmV0dXJuIG1fZnJhbWUtPmRv
Y3VtZW50KCktPmRvbVdpbmRvdygpOworICAgIHJldHVybiBtX2ZyYW1lLT5kb2N1bWVudCgpLmRv
bVdpbmRvdygpOwogfQogCiBET01XaW5kb3cqIERPTVdpbmRvdzo6dG9wKCkgY29uc3QKQEAgLTEz
MTksNyArMTMxOSw3IEBAIERPTVdpbmRvdyogRE9NV2luZG93Ojp0b3AoKSBjb25zdAogICAgIGlm
ICghcGFnZSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICByZXR1cm4gbV9mcmFtZS0+dHJlZSgp
LnRvcCgpLmRvY3VtZW50KCktPmRvbVdpbmRvdygpOworICAgIHJldHVybiBtX2ZyYW1lLT50cmVl
KCkudG9wKCkuZG9jdW1lbnQoKS5kb21XaW5kb3coKTsKIH0KIAogRG9jdW1lbnQqIERPTVdpbmRv
dzo6ZG9jdW1lbnQoKSBjb25zdApAQCAtMTM2Myw3ICsxMzYzLDcgQEAgUGFzc1JlZlB0cjxDU1NS
dWxlTGlzdD4gRE9NV2luZG93OjpnZXRNYXRjaGVkQ1NTUnVsZXMoRWxlbWVudCogZWxlbWVudCwg
Y29uc3QgU3QKIAogICAgIFBzZXVkb0lkIHBzZXVkb0lkID0gQ1NTU2VsZWN0b3I6OnBzZXVkb0lk
KHBzZXVkb1R5cGUpOwogCi0gICAgYXV0byBtYXRjaGVkUnVsZXMgPSBtX2ZyYW1lLT5kb2N1bWVu
dCgpLT5lbnN1cmVTdHlsZVJlc29sdmVyKCkucHNldWRvU3R5bGVSdWxlc0ZvckVsZW1lbnQoZWxl
bWVudCwgcHNldWRvSWQsIHJ1bGVzVG9JbmNsdWRlKTsKKyAgICBhdXRvIG1hdGNoZWRSdWxlcyA9
IG1fZnJhbWUtPmRvY3VtZW50KCkuZW5zdXJlU3R5bGVSZXNvbHZlcigpLnBzZXVkb1N0eWxlUnVs
ZXNGb3JFbGVtZW50KGVsZW1lbnQsIHBzZXVkb0lkLCBydWxlc1RvSW5jbHVkZSk7CiAgICAgaWYg
KG1hdGNoZWRSdWxlcy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiAwOwogCkBAIC0xODkwLDcg
KzE4OTAsNyBAQCB2b2lkIERPTVdpbmRvdzo6c2V0TG9jYXRpb24oY29uc3QgU3RyaW5nJiB1cmxT
dHJpbmcsIERPTVdpbmRvdyYgYWN0aXZlV2luZG93LCBETwogICAgIGlmICghZmlyc3RGcmFtZSkK
ICAgICAgICAgcmV0dXJuOwogCi0gICAgVVJMIGNvbXBsZXRlZFVSTCA9IGZpcnN0RnJhbWUtPmRv
Y3VtZW50KCktPmNvbXBsZXRlVVJMKHVybFN0cmluZyk7CisgICAgVVJMIGNvbXBsZXRlZFVSTCA9
IGZpcnN0RnJhbWUtPmRvY3VtZW50KCkuY29tcGxldGVVUkwodXJsU3RyaW5nKTsKICAgICBpZiAo
Y29tcGxldGVkVVJMLmlzTnVsbCgpKQogICAgICAgICByZXR1cm47CiAKQEAgLTE5ODQsNyArMTk4
NCw3IEBAIFBhc3NSZWZQdHI8RnJhbWU+IERPTVdpbmRvdzo6Y3JlYXRlV2luZG93KGNvbnN0IFN0
cmluZyYgdXJsU3RyaW5nLCBjb25zdCBBdG9taWNTCiB7CiAgICAgRnJhbWUqIGFjdGl2ZUZyYW1l
ID0gYWN0aXZlV2luZG93LmZyYW1lKCk7CiAKLSAgICBVUkwgY29tcGxldGVkVVJMID0gdXJsU3Ry
aW5nLmlzRW1wdHkoKSA/IFVSTChQYXJzZWRVUkxTdHJpbmcsIGVtcHR5U3RyaW5nKCkpIDogZmly
c3RGcmFtZS0+ZG9jdW1lbnQoKS0+Y29tcGxldGVVUkwodXJsU3RyaW5nKTsKKyAgICBVUkwgY29t
cGxldGVkVVJMID0gdXJsU3RyaW5nLmlzRW1wdHkoKSA/IFVSTChQYXJzZWRVUkxTdHJpbmcsIGVt
cHR5U3RyaW5nKCkpIDogZmlyc3RGcmFtZS0+ZG9jdW1lbnQoKS5jb21wbGV0ZVVSTCh1cmxTdHJp
bmcpOwogICAgIGlmICghY29tcGxldGVkVVJMLmlzRW1wdHkoKSAmJiAhY29tcGxldGVkVVJMLmlz
VmFsaWQoKSkgewogICAgICAgICAvLyBEb24ndCBleHBvc2UgY2xpZW50IGNvZGUgdG8gaW52YWxp
ZCBVUkxzLgogICAgICAgICBhY3RpdmVXaW5kb3cucHJpbnRFcnJvck1lc3NhZ2UoIlVuYWJsZSB0
byBvcGVuIGEgd2luZG93IHdpdGggaW52YWxpZCBVUkwgJyIgKyBjb21wbGV0ZWRVUkwuc3RyaW5n
KCkgKyAiJy5cbiIpOwpAQCAtMTk5Miw3ICsxOTkyLDcgQEAgUGFzc1JlZlB0cjxGcmFtZT4gRE9N
V2luZG93OjpjcmVhdGVXaW5kb3coY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcsIGNvbnN0IEF0b21p
Y1MKICAgICB9CiAKICAgICAvLyBGb3Igd2hhdGV2ZXIgcmVhc29uLCBGaXJlZm94IHVzZXMgdGhl
IGZpcnN0IGZyYW1lIHRvIGRldGVybWluZSB0aGUgb3V0Z29pbmdSZWZlcnJlci4gV2UgcmVwbGlj
YXRlIHRoYXQgYmVoYXZpb3IgaGVyZS4KLSAgICBTdHJpbmcgcmVmZXJyZXIgPSBTZWN1cml0eVBv
bGljeTo6Z2VuZXJhdGVSZWZlcnJlckhlYWRlcihmaXJzdEZyYW1lLT5kb2N1bWVudCgpLT5yZWZl
cnJlclBvbGljeSgpLCBjb21wbGV0ZWRVUkwsIGZpcnN0RnJhbWUtPmxvYWRlcigpLm91dGdvaW5n
UmVmZXJyZXIoKSk7CisgICAgU3RyaW5nIHJlZmVycmVyID0gU2VjdXJpdHlQb2xpY3k6OmdlbmVy
YXRlUmVmZXJyZXJIZWFkZXIoZmlyc3RGcmFtZS0+ZG9jdW1lbnQoKS5yZWZlcnJlclBvbGljeSgp
LCBjb21wbGV0ZWRVUkwsIGZpcnN0RnJhbWUtPmxvYWRlcigpLm91dGdvaW5nUmVmZXJyZXIoKSk7
CiAKICAgICBSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdChjb21wbGV0ZWRVUkwsIHJlZmVycmVyKTsK
ICAgICBGcmFtZUxvYWRlcjo6YWRkSFRUUE9yaWdpbklmTmVlZGVkKHJlcXVlc3QsIGZpcnN0RnJh
bWUtPmxvYWRlcigpLm91dGdvaW5nT3JpZ2luKCkpOwpAQCAtMjAwOCwxMSArMjAwOCwxMSBAQCBQ
YXNzUmVmUHRyPEZyYW1lPiBET01XaW5kb3c6OmNyZWF0ZVdpbmRvdyhjb25zdCBTdHJpbmcmIHVy
bFN0cmluZywgY29uc3QgQXRvbWljUwogICAgIG5ld0ZyYW1lLT5sb2FkZXIoKS5zZXRPcGVuZXIo
b3BlbmVyRnJhbWUpOwogICAgIG5ld0ZyYW1lLT5wYWdlKCktPnNldE9wZW5lZEJ5RE9NKCk7CiAK
LSAgICBpZiAobmV3RnJhbWUtPmRvY3VtZW50KCktPmRvbVdpbmRvdygpLT5pc0luc2VjdXJlU2Ny
aXB0QWNjZXNzKGFjdGl2ZVdpbmRvdywgY29tcGxldGVkVVJMKSkKKyAgICBpZiAobmV3RnJhbWUt
PmRvY3VtZW50KCkuZG9tV2luZG93KCktPmlzSW5zZWN1cmVTY3JpcHRBY2Nlc3MoYWN0aXZlV2lu
ZG93LCBjb21wbGV0ZWRVUkwpKQogICAgICAgICByZXR1cm4gbmV3RnJhbWUucmVsZWFzZSgpOwog
CiAgICAgaWYgKHByZXBhcmVEaWFsb2dGdW5jdGlvbikKLSAgICAgICAgcHJlcGFyZURpYWxvZ0Z1
bmN0aW9uKCpuZXdGcmFtZS0+ZG9jdW1lbnQoKS0+ZG9tV2luZG93KCkpOworICAgICAgICBwcmVw
YXJlRGlhbG9nRnVuY3Rpb24oKm5ld0ZyYW1lLT5kb2N1bWVudCgpLmRvbVdpbmRvdygpKTsKIAog
ICAgIGlmIChjcmVhdGVkKQogICAgICAgICBuZXdGcmFtZS0+bG9hZGVyKCkuY2hhbmdlTG9jYXRp
b24oYWN0aXZlV2luZG93LmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCksIGNvbXBsZXRlZFVS
TCwgcmVmZXJyZXIsIExvY2tIaXN0b3J5OjpObywgTG9ja0JhY2tGb3J3YXJkTGlzdDo6Tm8pOwpA
QCAtMjA2MiwyMCArMjA2MiwyMCBAQCBQYXNzUmVmUHRyPERPTVdpbmRvdz4gRE9NV2luZG93Ojpv
cGVuKGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nLCBjb25zdCBBdG9taWNTdHJpbgogICAgICAgICBp
ZiAoIWFjdGl2ZURvY3VtZW50LT5jYW5OYXZpZ2F0ZSh0YXJnZXRGcmFtZSkpCiAgICAgICAgICAg
ICByZXR1cm4gMDsKIAotICAgICAgICBVUkwgY29tcGxldGVkVVJMID0gZmlyc3RGcmFtZS0+ZG9j
dW1lbnQoKS0+Y29tcGxldGVVUkwodXJsU3RyaW5nKTsKKyAgICAgICAgVVJMIGNvbXBsZXRlZFVS
TCA9IGZpcnN0RnJhbWUtPmRvY3VtZW50KCkuY29tcGxldGVVUkwodXJsU3RyaW5nKTsKIAotICAg
ICAgICBpZiAodGFyZ2V0RnJhbWUtPmRvY3VtZW50KCktPmRvbVdpbmRvdygpLT5pc0luc2VjdXJl
U2NyaXB0QWNjZXNzKGFjdGl2ZVdpbmRvdywgY29tcGxldGVkVVJMKSkKLSAgICAgICAgICAgIHJl
dHVybiB0YXJnZXRGcmFtZS0+ZG9jdW1lbnQoKS0+ZG9tV2luZG93KCk7CisgICAgICAgIGlmICh0
YXJnZXRGcmFtZS0+ZG9jdW1lbnQoKS5kb21XaW5kb3coKS0+aXNJbnNlY3VyZVNjcmlwdEFjY2Vz
cyhhY3RpdmVXaW5kb3csIGNvbXBsZXRlZFVSTCkpCisgICAgICAgICAgICByZXR1cm4gdGFyZ2V0
RnJhbWUtPmRvY3VtZW50KCkuZG9tV2luZG93KCk7CiAKICAgICAgICAgaWYgKHVybFN0cmluZy5p
c0VtcHR5KCkpCi0gICAgICAgICAgICByZXR1cm4gdGFyZ2V0RnJhbWUtPmRvY3VtZW50KCktPmRv
bVdpbmRvdygpOworICAgICAgICAgICAgcmV0dXJuIHRhcmdldEZyYW1lLT5kb2N1bWVudCgpLmRv
bVdpbmRvdygpOwogCiAgICAgICAgIC8vIEZvciB3aGF0ZXZlciByZWFzb24sIEZpcmVmb3ggdXNl
cyB0aGUgZmlyc3Qgd2luZG93IHJhdGhlciB0aGFuIHRoZSBhY3RpdmUgd2luZG93IHRvCiAgICAg
ICAgIC8vIGRldGVybWluZSB0aGUgb3V0Z29pbmcgcmVmZXJyZXIuIFdlIHJlcGxpY2F0ZSB0aGF0
IGJlaGF2aW9yIGhlcmUuCiAgICAgICAgIExvY2tIaXN0b3J5IGxvY2tIaXN0b3J5ID0gU2NyaXB0
Q29udHJvbGxlcjo6cHJvY2Vzc2luZ1VzZXJHZXN0dXJlKCkgPyBMb2NrSGlzdG9yeTo6Tm8gOiBM
b2NrSGlzdG9yeTo6WWVzOwogICAgICAgICB0YXJnZXRGcmFtZS0+bmF2aWdhdGlvblNjaGVkdWxl
cigpLnNjaGVkdWxlTG9jYXRpb25DaGFuZ2UoYWN0aXZlRG9jdW1lbnQtPnNlY3VyaXR5T3JpZ2lu
KCksIGNvbXBsZXRlZFVSTCwgZmlyc3RGcmFtZS0+bG9hZGVyKCkub3V0Z29pbmdSZWZlcnJlcigp
LAogICAgICAgICAgICAgbG9ja0hpc3RvcnksIExvY2tCYWNrRm9yd2FyZExpc3Q6Ok5vKTsKLSAg
ICAgICAgcmV0dXJuIHRhcmdldEZyYW1lLT5kb2N1bWVudCgpLT5kb21XaW5kb3coKTsKKyAgICAg
ICAgcmV0dXJuIHRhcmdldEZyYW1lLT5kb2N1bWVudCgpLmRvbVdpbmRvdygpOwogICAgIH0KIAog
ICAgIFdpbmRvd0ZlYXR1cmVzIHdpbmRvd0ZlYXR1cmVzKHdpbmRvd0ZlYXR1cmVzU3RyaW5nKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93UHJvcGVydHkuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3dQcm9wZXJ0eS5jcHAKaW5kZXggNmYxMDlmMS4u
NTAyMDI0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3dQcm9wZXJ0
eS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3dQcm9wZXJ0eS5jcHAKQEAg
LTQxLDcgKzQxLDcgQEAgRE9NV2luZG93UHJvcGVydHk6OkRPTVdpbmRvd1Byb3BlcnR5KEZyYW1l
KiBmcmFtZSkKICAgICAvLyBTZWUgZmFzdC9kb20vbmF2aWdhdG9yLWRldGFjaGVkLW5vLWNyYXNo
Lmh0bWwgZm9yIHRoZSByZWNpcGUuCiAgICAgLy8gV2Ugc2hvdWxkIGZpeCB0aGF0LiAgPHJkYXI6
Ly9wcm9ibGVtLzExNTY3MTMyPgogICAgIGlmIChtX2ZyYW1lKSB7Ci0gICAgICAgIG1fYXNzb2Np
YXRlZERPTVdpbmRvdyA9IG1fZnJhbWUtPmRvY3VtZW50KCktPmRvbVdpbmRvdygpOworICAgICAg
ICBtX2Fzc29jaWF0ZWRET01XaW5kb3cgPSBtX2ZyYW1lLT5kb2N1bWVudCgpLmRvbVdpbmRvdygp
OwogICAgICAgICBtX2Fzc29jaWF0ZWRET01XaW5kb3ctPnJlZ2lzdGVyUHJvcGVydHkodGhpcyk7
CiAgICAgfQogfQpAQCAtNzEsNyArNzEsNyBAQCB2b2lkIERPTVdpbmRvd1Byb3BlcnR5OjpyZWNv
bm5lY3RGcmFtZUZyb21QYWdlQ2FjaGUoRnJhbWUqIGZyYW1lKQogICAgIC8vIGJlZW4gZGlzY29u
bmVjdGVkIGZyb20gaXRzIEZyYW1lIGluIHRoZSBmaXJzdCBwbGFjZSBhbmQgaXQgc2hvdWxkIHN0
aWxsIGhhdmUgYW4gYXNzb2NpYXRlZCBET01XaW5kb3cuCiAgICAgQVNTRVJUKGZyYW1lKTsKICAg
ICBBU1NFUlQoIW1fZnJhbWUpOwotICAgIEFTU0VSVChmcmFtZS0+ZG9jdW1lbnQoKS0+ZG9tV2lu
ZG93KCkgPT0gbV9hc3NvY2lhdGVkRE9NV2luZG93KTsKKyAgICBBU1NFUlQoZnJhbWUtPmRvY3Vt
ZW50KCkuZG9tV2luZG93KCkgPT0gbV9hc3NvY2lhdGVkRE9NV2luZG93KTsKIAogICAgIG1fZnJh
bWUgPSBmcmFtZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRHJhZ0NvbnRy
b2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAKaW5kZXgg
OGFkZTU2NS4uMmY1MjUyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29u
dHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAK
QEAgLTQyMiw3ICs0MjIsNyBAQCBib29sIERyYWdDb250cm9sbGVyOjpkaXNwYXRjaFRleHRJbnB1
dEV2ZW50Rm9yKEZyYW1lKiBpbm5lckZyYW1lLCBEcmFnRGF0YSYgZHJhZwogICAgIEFTU0VSVCht
X3BhZ2UuZHJhZ0NhcmV0Q29udHJvbGxlcigpLmhhc0NhcmV0KCkpOwogICAgIFN0cmluZyB0ZXh0
ID0gbV9wYWdlLmRyYWdDYXJldENvbnRyb2xsZXIoKS5pc0NvbnRlbnRSaWNobHlFZGl0YWJsZSgp
ID8gZW1wdHlTdHJpbmcoKSA6IGRyYWdEYXRhLmFzUGxhaW5UZXh0KGlubmVyRnJhbWUpOwogICAg
IE5vZGUqIHRhcmdldCA9IGlubmVyRnJhbWUtPmVkaXRvcigpLmZpbmRFdmVudFRhcmdldEZyb20o
bV9wYWdlLmRyYWdDYXJldENvbnRyb2xsZXIoKS5jYXJldFBvc2l0aW9uKCkpOwotICAgIHJldHVy
biB0YXJnZXQtPmRpc3BhdGNoRXZlbnQoVGV4dEV2ZW50OjpjcmVhdGVGb3JEcm9wKGlubmVyRnJh
bWUtPmRvY3VtZW50KCktPmRvbVdpbmRvdygpLCB0ZXh0KSwgSUdOT1JFX0VYQ0VQVElPTik7Cisg
ICAgcmV0dXJuIHRhcmdldC0+ZGlzcGF0Y2hFdmVudChUZXh0RXZlbnQ6OmNyZWF0ZUZvckRyb3Ao
aW5uZXJGcmFtZS0+ZG9jdW1lbnQoKS5kb21XaW5kb3coKSwgdGV4dCksIElHTk9SRV9FWENFUFRJ
T04pOwogfQogCiBib29sIERyYWdDb250cm9sbGVyOjpjb25jbHVkZUVkaXREcmFnKERyYWdEYXRh
JiBkcmFnRGF0YSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAppbmRleCBjN2E5OGFl
Li41NDJiYzFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCkBAIC02MDksNyAr
NjA5LDcgQEAgc3RhdGljIGludCB0ZXh0RGlzdGFuY2UoY29uc3QgUG9zaXRpb24mIHN0YXJ0LCBj
b25zdCBQb3NpdGlvbiYgZW5kKQogCiBib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlTW91c2VQcmVz
c0V2ZW50U2luZ2xlQ2xpY2soY29uc3QgTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cyYgZXZl
bnQpCiB7Ci0gICAgbV9mcmFtZS5kb2N1bWVudCgpLT51cGRhdGVMYXlvdXRJZ25vcmVQZW5kaW5n
U3R5bGVzaGVldHMoKTsKKyAgICBtX2ZyYW1lLmRvY3VtZW50KCkudXBkYXRlTGF5b3V0SWdub3Jl
UGVuZGluZ1N0eWxlc2hlZXRzKCk7CiAgICAgTm9kZSogdGFyZ2V0Tm9kZSA9IGV2ZW50LnRhcmdl
dE5vZGUoKTsKICAgICBpZiAoISh0YXJnZXROb2RlICYmIHRhcmdldE5vZGUtPnJlbmRlcmVyKCkg
JiYgbV9tb3VzZURvd25NYXlTdGFydFNlbGVjdCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAg
LTY5Myw3ICs2OTMsNyBAQCBib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlTW91c2VQcmVzc0V2ZW50
KGNvbnN0IE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMmIGV2ZQogICAgIGNhbmNlbEZha2VN
b3VzZU1vdmVFdmVudCgpOwogI2VuZGlmCiAKLSAgICBtX2ZyYW1lLmRvY3VtZW50KCktPnVwZGF0
ZUxheW91dElnbm9yZVBlbmRpbmdTdHlsZXNoZWV0cygpOworICAgIG1fZnJhbWUuZG9jdW1lbnQo
KS51cGRhdGVMYXlvdXRJZ25vcmVQZW5kaW5nU3R5bGVzaGVldHMoKTsKIAogICAgIGlmIChTY3Jv
bGxWaWV3KiBzY3JvbGxWaWV3ID0gbV9mcmFtZS52aWV3KCkpIHsKICAgICAgICAgaWYgKHNjcm9s
bFZpZXctPmlzUG9pbnRJblNjcm9sbGJhckNvcm5lcihldmVudC5ldmVudCgpLnBvc2l0aW9uKCkp
KQpAQCAtNzE4LDcgKzcxOCw3IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVNb3VzZVByZXNz
RXZlbnQoY29uc3QgTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cyYgZXZlCiAgICAgaWYgKGV2
ZW50LmlzT3ZlcldpZGdldCgpICYmIHBhc3NXaWRnZXRNb3VzZURvd25FdmVudFRvV2lkZ2V0KGV2
ZW50KSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICBpZiAobV9mcmFtZS5kb2N1bWVudCgp
LT5pc1NWR0RvY3VtZW50KCkKKyAgICBpZiAobV9mcmFtZS5kb2N1bWVudCgpLmlzU1ZHRG9jdW1l
bnQoKQogICAgICAgICAmJiB0b1NWR0RvY3VtZW50KG1fZnJhbWUuZG9jdW1lbnQoKSktPnpvb21B
bmRQYW5FbmFibGVkKCkpIHsKICAgICAgICAgaWYgKGV2ZW50LmV2ZW50KCkuc2hpZnRLZXkoKSAm
JiBzaW5nbGVDbGljaykgewogICAgICAgICAgICAgbV9zdmdQYW4gPSB0cnVlOwpAQCAtNzkyLDcg
Kzc5Miw3IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVNb3VzZURyYWdnZWRFdmVudChjb25z
dCBNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzJiBlCiAgICAgaWYgKG1fc2VsZWN0aW9uSW5p
dGlhdGlvblN0YXRlICE9IEV4dGVuZGVkU2VsZWN0aW9uKSB7CiAgICAgICAgIEhpdFRlc3RSZXF1
ZXN0IHJlcXVlc3QoSGl0VGVzdFJlcXVlc3Q6OlJlYWRPbmx5IHwgSGl0VGVzdFJlcXVlc3Q6OkFj
dGl2ZSB8IEhpdFRlc3RSZXF1ZXN0OjpEaXNhbGxvd1NoYWRvd0NvbnRlbnQpOwogICAgICAgICBI
aXRUZXN0UmVzdWx0IHJlc3VsdChtX21vdXNlRG93blBvcyk7Ci0gICAgICAgIG1fZnJhbWUuZG9j
dW1lbnQoKS0+cmVuZGVyVmlldygpLT5oaXRUZXN0KHJlcXVlc3QsIHJlc3VsdCk7CisgICAgICAg
IG1fZnJhbWUuZG9jdW1lbnQoKS5yZW5kZXJWaWV3KCktPmhpdFRlc3QocmVxdWVzdCwgcmVzdWx0
KTsKIAogICAgICAgICB1cGRhdGVTZWxlY3Rpb25Gb3JNb3VzZURyYWcocmVzdWx0KTsKICAgICB9
CkBAIC0xMDgxLDcgKzEwODEsNyBAQCBIaXRUZXN0UmVzdWx0IEV2ZW50SGFuZGxlcjo6aGl0VGVz
dFJlc3VsdEF0UG9pbnQoY29uc3QgTGF5b3V0UG9pbnQmIHBvaW50LCBIaXRUZQogICAgIEhpdFRl
c3RSZXF1ZXN0IHJlcXVlc3QoaGl0VHlwZSB8IEhpdFRlc3RSZXF1ZXN0OjpBbGxvd0NoaWxkRnJh
bWVDb250ZW50KTsKICAgICBtX2ZyYW1lLmNvbnRlbnRSZW5kZXJlcigpLT5oaXRUZXN0KHJlcXVl
c3QsIHJlc3VsdCk7CiAgICAgaWYgKCFyZXF1ZXN0LnJlYWRPbmx5KCkpCi0gICAgICAgIG1fZnJh
bWUuZG9jdW1lbnQoKS0+dXBkYXRlSG92ZXJBY3RpdmVTdGF0ZShyZXF1ZXN0LCByZXN1bHQuaW5u
ZXJFbGVtZW50KCkpOworICAgICAgICBtX2ZyYW1lLmRvY3VtZW50KCkudXBkYXRlSG92ZXJBY3Rp
dmVTdGF0ZShyZXF1ZXN0LCByZXN1bHQuaW5uZXJFbGVtZW50KCkpOwogCiAgICAgaWYgKHJlcXVl
c3QuZGlzYWxsb3dzU2hhZG93Q29udGVudCgpKQogICAgICAgICByZXN1bHQuc2V0VG9Ob25TaGFk
b3dBbmNlc3RvcigpOwpAQCAtMTA5OSw3ICsxMDk5LDcgQEAgYm9vbCBFdmVudEhhbmRsZXI6OnNj
cm9sbE92ZXJmbG93KFNjcm9sbERpcmVjdGlvbiBkaXJlY3Rpb24sIFNjcm9sbEdyYW51bGFyaXR5
IGcKICAgICBOb2RlKiBub2RlID0gc3RhcnRpbmdOb2RlOwogCiAgICAgaWYgKCFub2RlKQotICAg
ICAgICBub2RlID0gbV9mcmFtZS5kb2N1bWVudCgpLT5mb2N1c2VkRWxlbWVudCgpOworICAgICAg
ICBub2RlID0gbV9mcmFtZS5kb2N1bWVudCgpLmZvY3VzZWRFbGVtZW50KCk7CiAKICAgICBpZiAo
IW5vZGUpCiAgICAgICAgIG5vZGUgPSBtX21vdXNlUHJlc3NOb2RlLmdldCgpOwpAQCAtMTEyMCw3
ICsxMTIwLDcgQEAgYm9vbCBFdmVudEhhbmRsZXI6OmxvZ2ljYWxTY3JvbGxPdmVyZmxvdyhTY3Jv
bGxMb2dpY2FsRGlyZWN0aW9uIGRpcmVjdGlvbiwgU2Nyb2wKICAgICBOb2RlKiBub2RlID0gc3Rh
cnRpbmdOb2RlOwogCiAgICAgaWYgKCFub2RlKQotICAgICAgICBub2RlID0gbV9mcmFtZS5kb2N1
bWVudCgpLT5mb2N1c2VkRWxlbWVudCgpOworICAgICAgICBub2RlID0gbV9mcmFtZS5kb2N1bWVu
dCgpLmZvY3VzZWRFbGVtZW50KCk7CiAKICAgICBpZiAoIW5vZGUpCiAgICAgICAgIG5vZGUgPSBt
X21vdXNlUHJlc3NOb2RlLmdldCgpOwpAQCAtMTE0MCw3ICsxMTQwLDcgQEAgYm9vbCBFdmVudEhh
bmRsZXI6OnNjcm9sbFJlY3Vyc2l2ZWx5KFNjcm9sbERpcmVjdGlvbiBkaXJlY3Rpb24sIFNjcm9s
bEdyYW51bGFyaXQKIHsKICAgICAvLyBUaGUgbGF5b3V0IG5lZWRzIHRvIGJlIHVwIHRvIGRhdGUg
dG8gZGV0ZXJtaW5lIGlmIHdlIGNhbiBzY3JvbGwuIFdlIG1heSBiZQogICAgIC8vIGhlcmUgYmVj
YXVzZSBvZiBhbiBvbkxvYWQgZXZlbnQsIGluIHdoaWNoIGNhc2UgdGhlIGZpbmFsIGxheW91dCBo
YXNuJ3QgYmVlbiBwZXJmb3JtZWQgeWV0LgotICAgIG1fZnJhbWUuZG9jdW1lbnQoKS0+dXBkYXRl
TGF5b3V0SWdub3JlUGVuZGluZ1N0eWxlc2hlZXRzKCk7CisgICAgbV9mcmFtZS5kb2N1bWVudCgp
LnVwZGF0ZUxheW91dElnbm9yZVBlbmRpbmdTdHlsZXNoZWV0cygpOwogICAgIGlmIChzY3JvbGxP
dmVyZmxvdyhkaXJlY3Rpb24sIGdyYW51bGFyaXR5LCBzdGFydGluZ05vZGUpKQogICAgICAgICBy
ZXR1cm4gdHJ1ZTsgICAgCiAgICAgRnJhbWUqIGZyYW1lID0gJm1fZnJhbWU7CkBAIC0xMTU3LDcg
KzExNTcsNyBAQCBib29sIEV2ZW50SGFuZGxlcjo6bG9naWNhbFNjcm9sbFJlY3Vyc2l2ZWx5KFNj
cm9sbExvZ2ljYWxEaXJlY3Rpb24gZGlyZWN0aW9uLCBTYwogewogICAgIC8vIFRoZSBsYXlvdXQg
bmVlZHMgdG8gYmUgdXAgdG8gZGF0ZSB0byBkZXRlcm1pbmUgaWYgd2UgY2FuIHNjcm9sbC4gV2Ug
bWF5IGJlCiAgICAgLy8gaGVyZSBiZWNhdXNlIG9mIGFuIG9uTG9hZCBldmVudCwgaW4gd2hpY2gg
Y2FzZSB0aGUgZmluYWwgbGF5b3V0IGhhc24ndCBiZWVuIHBlcmZvcm1lZCB5ZXQuCi0gICAgbV9m
cmFtZS5kb2N1bWVudCgpLT51cGRhdGVMYXlvdXRJZ25vcmVQZW5kaW5nU3R5bGVzaGVldHMoKTsK
KyAgICBtX2ZyYW1lLmRvY3VtZW50KCkudXBkYXRlTGF5b3V0SWdub3JlUGVuZGluZ1N0eWxlc2hl
ZXRzKCk7CiAgICAgaWYgKGxvZ2ljYWxTY3JvbGxPdmVyZmxvdyhkaXJlY3Rpb24sIGdyYW51bGFy
aXR5LCBzdGFydGluZ05vZGUpKQogICAgICAgICByZXR1cm4gdHJ1ZTsgICAgCiAgICAgRnJhbWUq
IGZyYW1lID0gJm1fZnJhbWU7CkBAIC0xMjg0LDcgKzEyODQsNyBAQCB2b2lkIEV2ZW50SGFuZGxl
cjo6dXBkYXRlQ3Vyc29yKCkKICAgICBib29sIG1ldGFLZXk7CiAgICAgUGxhdGZvcm1LZXlib2Fy
ZEV2ZW50OjpnZXRDdXJyZW50TW9kaWZpZXJTdGF0ZShzaGlmdEtleSwgY3RybEtleSwgYWx0S2V5
LCBtZXRhS2V5KTsKIAotICAgIG1fZnJhbWUuZG9jdW1lbnQoKS0+dXBkYXRlTGF5b3V0KCk7Cisg
ICAgbV9mcmFtZS5kb2N1bWVudCgpLnVwZGF0ZUxheW91dCgpOwogCiAgICAgSGl0VGVzdFJlcXVl
c3QgcmVxdWVzdChIaXRUZXN0UmVxdWVzdDo6UmVhZE9ubHkpOwogICAgIEhpdFRlc3RSZXN1bHQg
cmVzdWx0KHZpZXctPndpbmRvd1RvQ29udGVudHMobV9sYXN0S25vd25Nb3VzZVBvc2l0aW9uKSk7
CkBAIC0xNTYzLDcgKzE1NjMsNyBAQCBib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlTW91c2VQcmVz
c0V2ZW50KGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgbW91c2VFdmVudCkKICAgICAvLyBTYXZl
IHRoZSBkb2N1bWVudCBwb2ludCB3ZSBnZW5lcmF0ZSBpbiBjYXNlIHRoZSB3aW5kb3cgY29vcmRp
bmF0ZSBpcyBpbnZhbGlkYXRlZCBieSB3aGF0IGhhcHBlbnMKICAgICAvLyB3aGVuIHdlIGRpc3Bh
dGNoIHRoZSBldmVudC4KICAgICBMYXlvdXRQb2ludCBkb2N1bWVudFBvaW50ID0gZG9jdW1lbnRQ
b2ludEZvcldpbmRvd1BvaW50KG1fZnJhbWUsIG1vdXNlRXZlbnQucG9zaXRpb24oKSk7Ci0gICAg
TW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cyBtZXYgPSBtX2ZyYW1lLmRvY3VtZW50KCktPnBy
ZXBhcmVNb3VzZUV2ZW50KHJlcXVlc3QsIGRvY3VtZW50UG9pbnQsIG1vdXNlRXZlbnQpOworICAg
IE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMgbWV2ID0gbV9mcmFtZS5kb2N1bWVudCgpLnBy
ZXBhcmVNb3VzZUV2ZW50KHJlcXVlc3QsIGRvY3VtZW50UG9pbnQsIG1vdXNlRXZlbnQpOwogCiAg
ICAgaWYgKCFtZXYudGFyZ2V0Tm9kZSgpKSB7CiAgICAgICAgIGludmFsaWRhdGVDbGljaygpOwpA
QCAtMTYyOCw3ICsxNjI4LDcgQEAgYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZU1vdXNlUHJlc3NF
dmVudChjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIG1vdXNlRXZlbnQpCiAgICAgaWYgKG1ldi5z
Y3JvbGxiYXIoKSkgewogICAgICAgICBjb25zdCBib29sIHdhc0xhc3RTY3JvbGxCYXIgPSBtZXYu
c2Nyb2xsYmFyKCkgPT0gbV9sYXN0U2Nyb2xsYmFyVW5kZXJNb3VzZS5nZXQoKTsKICAgICAgICAg
SGl0VGVzdFJlcXVlc3QgcmVxdWVzdChIaXRUZXN0UmVxdWVzdDo6UmVhZE9ubHkgfCBIaXRUZXN0
UmVxdWVzdDo6QWN0aXZlIHwgSGl0VGVzdFJlcXVlc3Q6OkRpc2FsbG93U2hhZG93Q29udGVudCk7
Ci0gICAgICAgIG1ldiA9IG1fZnJhbWUuZG9jdW1lbnQoKS0+cHJlcGFyZU1vdXNlRXZlbnQocmVx
dWVzdCwgZG9jdW1lbnRQb2ludCwgbW91c2VFdmVudCk7CisgICAgICAgIG1ldiA9IG1fZnJhbWUu
ZG9jdW1lbnQoKS5wcmVwYXJlTW91c2VFdmVudChyZXF1ZXN0LCBkb2N1bWVudFBvaW50LCBtb3Vz
ZUV2ZW50KTsKICAgICAgICAgaWYgKHdhc0xhc3RTY3JvbGxCYXIgJiYgbWV2LnNjcm9sbGJhcigp
ICE9IG1fbGFzdFNjcm9sbGJhclVuZGVyTW91c2UuZ2V0KCkpCiAgICAgICAgICAgICBtX2xhc3RT
Y3JvbGxiYXJVbmRlck1vdXNlID0gMDsKICAgICB9CkBAIC0xNjQ4LDcgKzE2NDgsNyBAQCBib29s
IEV2ZW50SGFuZGxlcjo6aGFuZGxlTW91c2VQcmVzc0V2ZW50KGNvbnN0IFBsYXRmb3JtTW91c2VF
dmVudCYgbW91c2VFdmVudCkKICAgICAgICAgLy8gZXZlbnQgdGFyZ2V0IG5vZGUgY2FuJ3Qgc3Rp
bGwgYmUgdGhlIHNoYWRvdyBub2RlLgogICAgICAgICBpZiAobWV2LnRhcmdldE5vZGUoKS0+aXNT
aGFkb3dSb290KCkgJiYgaXNIVE1MSW5wdXRFbGVtZW50KHRvU2hhZG93Um9vdChtZXYudGFyZ2V0
Tm9kZSgpKS0+aG9zdEVsZW1lbnQoKSkpIHsKICAgICAgICAgICAgIEhpdFRlc3RSZXF1ZXN0IHJl
cXVlc3QoSGl0VGVzdFJlcXVlc3Q6OlJlYWRPbmx5IHwgSGl0VGVzdFJlcXVlc3Q6OkFjdGl2ZSB8
IEhpdFRlc3RSZXF1ZXN0OjpEaXNhbGxvd1NoYWRvd0NvbnRlbnQpOwotICAgICAgICAgICAgbWV2
ID0gbV9mcmFtZS5kb2N1bWVudCgpLT5wcmVwYXJlTW91c2VFdmVudChyZXF1ZXN0LCBkb2N1bWVu
dFBvaW50LCBtb3VzZUV2ZW50KTsKKyAgICAgICAgICAgIG1ldiA9IG1fZnJhbWUuZG9jdW1lbnQo
KS5wcmVwYXJlTW91c2VFdmVudChyZXF1ZXN0LCBkb2N1bWVudFBvaW50LCBtb3VzZUV2ZW50KTsK
ICAgICAgICAgfQogCiAgICAgICAgIEZyYW1lVmlldyogdmlldyA9IG1fZnJhbWUudmlldygpOwpA
QCAtMjAxMiw3ICsyMDEyLDcgQEAgYm9vbCBFdmVudEhhbmRsZXI6OmRpc3BhdGNoRHJhZ0V2ZW50
KGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBFbGVtZW50JiBkcmEKIAogICAgIHZpZXct
PmRpc2FibGVMYXllckZsdXNoVGhyb3R0bGluZ1RlbXBvcmFyaWx5Rm9ySW50ZXJhY3Rpb24oKTsK
ICAgICBSZWZQdHI8TW91c2VFdmVudD4gbWUgPSBNb3VzZUV2ZW50OjpjcmVhdGUoZXZlbnRUeXBl
LAotICAgICAgICB0cnVlLCB0cnVlLCBldmVudC50aW1lc3RhbXAoKSwgbV9mcmFtZS5kb2N1bWVu
dCgpLT5kZWZhdWx0VmlldygpLAorICAgICAgICB0cnVlLCB0cnVlLCBldmVudC50aW1lc3RhbXAo
KSwgbV9mcmFtZS5kb2N1bWVudCgpLmRlZmF1bHRWaWV3KCksCiAgICAgICAgIDAsIGV2ZW50Lmds
b2JhbFBvc2l0aW9uKCkueCgpLCBldmVudC5nbG9iYWxQb3NpdGlvbigpLnkoKSwgZXZlbnQucG9z
aXRpb24oKS54KCksIGV2ZW50LnBvc2l0aW9uKCkueSgpLAogI2lmIEVOQUJMRShQT0lOVEVSX0xP
Q0spCiAgICAgICAgIGV2ZW50Lm1vdmVtZW50RGVsdGEoKS54KCksIGV2ZW50Lm1vdmVtZW50RGVs
dGEoKS55KCksCkBAIC0yMjQ2LDcgKzIyNDYsNyBAQCB2b2lkIEV2ZW50SGFuZGxlcjo6c2V0Q2Fw
dHVyaW5nTW91c2VFdmVudHNFbGVtZW50KFBhc3NSZWZQdHI8RWxlbWVudD4gZWxlbWVudCkKIE1v
dXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMgRXZlbnRIYW5kbGVyOjpwcmVwYXJlTW91c2VFdmVu
dChjb25zdCBIaXRUZXN0UmVxdWVzdCYgcmVxdWVzdCwgY29uc3QgUGxhdGZvcm1Nb3VzZUV2ZW50
JiBtZXYpCiB7CiAgICAgQVNTRVJUKG1fZnJhbWUuZG9jdW1lbnQoKSk7Ci0gICAgcmV0dXJuIG1f
ZnJhbWUuZG9jdW1lbnQoKS0+cHJlcGFyZU1vdXNlRXZlbnQocmVxdWVzdCwgZG9jdW1lbnRQb2lu
dEZvcldpbmRvd1BvaW50KG1fZnJhbWUsIG1ldi5wb3NpdGlvbigpKSwgbWV2KTsKKyAgICByZXR1
cm4gbV9mcmFtZS5kb2N1bWVudCgpLnByZXBhcmVNb3VzZUV2ZW50KHJlcXVlc3QsIGRvY3VtZW50
UG9pbnRGb3JXaW5kb3dQb2ludChtX2ZyYW1lLCBtZXYucG9zaXRpb24oKSksIG1ldik7CiB9CiAK
IHN0YXRpYyBpbmxpbmUgU1ZHRWxlbWVudEluc3RhbmNlKiBpbnN0YW5jZUFzc29jaWF0ZWRXaXRo
U2hhZG93VHJlZUVsZW1lbnQoTm9kZSogcmVmZXJlbmNlTm9kZSkKQEAgLTI0NjIsNyArMjQ2Miw3
IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpkaXNwYXRjaE1vdXNlRXZlbnQoY29uc3QgQXRvbWljU3Ry
aW5nJiBldmVudFR5cGUsIE5vZGUqIHRhcmdlCiAgICAgICAgIH0KIAogICAgICAgICAvLyBUaGUg
bGF5b3V0IG5lZWRzIHRvIGJlIHVwIHRvIGRhdGUgdG8gZGV0ZXJtaW5lIGlmIGFuIGVsZW1lbnQg
aXMgZm9jdXNhYmxlLgotICAgICAgICBtX2ZyYW1lLmRvY3VtZW50KCktPnVwZGF0ZUxheW91dEln
bm9yZVBlbmRpbmdTdHlsZXNoZWV0cygpOworICAgICAgICBtX2ZyYW1lLmRvY3VtZW50KCkudXBk
YXRlTGF5b3V0SWdub3JlUGVuZGluZ1N0eWxlc2hlZXRzKCk7CiAKICAgICAgICAgLy8gQmx1ciBj
dXJyZW50IGZvY3VzIG5vZGUgd2hlbiBhIGxpbmsvYnV0dG9uIGlzIGNsaWNrZWQ7IHRoaXMKICAg
ICAgICAgLy8gaXMgZXhwZWN0ZWQgYnkgc29tZSBzaXRlcyB0aGF0IHJlbHkgb24gb25DaGFuZ2Ug
aGFuZGxlcnMgcnVubmluZwpAQCAtMjQ3OSw3ICsyNDc5LDcgQEAgYm9vbCBFdmVudEhhbmRsZXI6
OmRpc3BhdGNoTW91c2VFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgTm9kZSog
dGFyZ2UKICAgICAgICAgICAgICAgICAvLyB3aWxsIHNldCBhIHNlbGVjdGlvbiBpbnNpZGUgaXQs
IHdoaWNoIHdpbGwgY2FsbCBzZXRGb2N1c2VOb2RlSWZOZWVkZWQuCiAgICAgICAgICAgICAgICAg
aWYgKG1fZnJhbWUuc2VsZWN0aW9uKCkuaXNSYW5nZSgpCiAgICAgICAgICAgICAgICAgICAgICYm
IG1fZnJhbWUuc2VsZWN0aW9uKCkudG9Ob3JtYWxpemVkUmFuZ2UoKS0+Y29tcGFyZU5vZGUoZWxl
bWVudCwgSUdOT1JFX0VYQ0VQVElPTikgPT0gUmFuZ2U6Ok5PREVfSU5TSURFCi0gICAgICAgICAg
ICAgICAgICAgICYmIGVsZW1lbnQtPmlzRGVzY2VuZGFudE9mKG1fZnJhbWUuZG9jdW1lbnQoKS0+
Zm9jdXNlZEVsZW1lbnQoKSkpCisgICAgICAgICAgICAgICAgICAgICYmIGVsZW1lbnQtPmlzRGVz
Y2VuZGFudE9mKG1fZnJhbWUuZG9jdW1lbnQoKS5mb2N1c2VkRWxlbWVudCgpKSkKICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAg
ICAgICAgIGJyZWFrOwpAQCAtMjg3MSw3ICsyODcxLDcgQEAgdm9pZCBFdmVudEhhbmRsZXI6Omhv
dmVyVGltZXJGaXJlZChUaW1lcjxFdmVudEhhbmRsZXI+JikKICAgICAgICAgICAgIEhpdFRlc3RS
ZXF1ZXN0IHJlcXVlc3QoSGl0VGVzdFJlcXVlc3Q6Ok1vdmUgfCBIaXRUZXN0UmVxdWVzdDo6RGlz
YWxsb3dTaGFkb3dDb250ZW50KTsKICAgICAgICAgICAgIEhpdFRlc3RSZXN1bHQgcmVzdWx0KHZp
ZXctPndpbmRvd1RvQ29udGVudHMobV9sYXN0S25vd25Nb3VzZVBvc2l0aW9uKSk7CiAgICAgICAg
ICAgICByZW5kZXJlci0+aGl0VGVzdChyZXF1ZXN0LCByZXN1bHQpOwotICAgICAgICAgICAgbV9m
cmFtZS5kb2N1bWVudCgpLT51cGRhdGVIb3ZlckFjdGl2ZVN0YXRlKHJlcXVlc3QsIHJlc3VsdC5p
bm5lckVsZW1lbnQoKSk7CisgICAgICAgICAgICBtX2ZyYW1lLmRvY3VtZW50KCkudXBkYXRlSG92
ZXJBY3RpdmVTdGF0ZShyZXF1ZXN0LCByZXN1bHQuaW5uZXJFbGVtZW50KCkpOwogICAgICAgICB9
CiAgICAgfQogfQpAQCAtMjg4Niw3ICsyODg2LDcgQEAgYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRs
ZUFjY2Vzc0tleShjb25zdCBQbGF0Zm9ybUtleWJvYXJkRXZlbnQmIGV2dCkKICAgICBpZiAoKGV2
dC5tb2RpZmllcnMoKSAmIH5QbGF0Zm9ybUV2ZW50OjpTaGlmdEtleSkgIT0gYWNjZXNzS2V5TW9k
aWZpZXJzKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBTdHJpbmcga2V5ID0gZXZ0LnVu
bW9kaWZpZWRUZXh0KCk7Ci0gICAgRWxlbWVudCogZWxlbSA9IG1fZnJhbWUuZG9jdW1lbnQoKS0+
Z2V0RWxlbWVudEJ5QWNjZXNzS2V5KGtleS5sb3dlcigpKTsKKyAgICBFbGVtZW50KiBlbGVtID0g
bV9mcmFtZS5kb2N1bWVudCgpLmdldEVsZW1lbnRCeUFjY2Vzc0tleShrZXkubG93ZXIoKSk7CiAg
ICAgaWYgKCFlbGVtKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgZWxlbS0+YWNjZXNzS2V5
QWN0aW9uKGZhbHNlKTsKQEAgLTI5MjcsNyArMjkyNyw3IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpr
ZXlFdmVudChjb25zdCBQbGF0Zm9ybUtleWJvYXJkRXZlbnQmIGluaXRpYWxLZXlFdmVudCkKICAg
ICBSZWZQdHI8RnJhbWVWaWV3PiBwcm90ZWN0b3IobV9mcmFtZS52aWV3KCkpOwogCiAjaWYgRU5B
QkxFKEZVTExTQ1JFRU5fQVBJKQotICAgIGlmIChtX2ZyYW1lLmRvY3VtZW50KCktPndlYmtpdElz
RnVsbFNjcmVlbigpICYmICFpc0tleUV2ZW50QWxsb3dlZEluRnVsbFNjcmVlbihpbml0aWFsS2V5
RXZlbnQpKQorICAgIGlmIChtX2ZyYW1lLmRvY3VtZW50KCkud2Via2l0SXNGdWxsU2NyZWVuKCkg
JiYgIWlzS2V5RXZlbnRBbGxvd2VkSW5GdWxsU2NyZWVuKGluaXRpYWxLZXlFdmVudCkpCiAgICAg
ICAgIHJldHVybiBmYWxzZTsKICNlbmRpZgogCkBAIC0yOTc4LDcgKzI5NzgsNyBAQCBib29sIEV2
ZW50SGFuZGxlcjo6a2V5RXZlbnQoY29uc3QgUGxhdGZvcm1LZXlib2FyZEV2ZW50JiBpbml0aWFs
S2V5RXZlbnQpCiAgICAgUGxhdGZvcm1LZXlib2FyZEV2ZW50IGtleURvd25FdmVudCA9IGluaXRp
YWxLZXlFdmVudDsgICAgCiAgICAgaWYgKGtleURvd25FdmVudC50eXBlKCkgIT0gUGxhdGZvcm1F
dmVudDo6UmF3S2V5RG93bikKICAgICAgICAga2V5RG93bkV2ZW50LmRpc2FtYmlndWF0ZUtleURv
d25FdmVudChQbGF0Zm9ybUV2ZW50OjpSYXdLZXlEb3duLCBiYWNrd2FyZENvbXBhdGliaWxpdHlN
b2RlKTsKLSAgICBSZWZQdHI8S2V5Ym9hcmRFdmVudD4ga2V5ZG93biA9IEtleWJvYXJkRXZlbnQ6
OmNyZWF0ZShrZXlEb3duRXZlbnQsIG1fZnJhbWUuZG9jdW1lbnQoKS0+ZGVmYXVsdFZpZXcoKSk7
CisgICAgUmVmUHRyPEtleWJvYXJkRXZlbnQ+IGtleWRvd24gPSBLZXlib2FyZEV2ZW50OjpjcmVh
dGUoa2V5RG93bkV2ZW50LCBtX2ZyYW1lLmRvY3VtZW50KCkuZGVmYXVsdFZpZXcoKSk7CiAgICAg
aWYgKG1hdGNoZWRBbkFjY2Vzc0tleSkKICAgICAgICAga2V5ZG93bi0+c2V0RGVmYXVsdFByZXZl
bnRlZCh0cnVlKTsKICAgICBrZXlkb3duLT5zZXRUYXJnZXQoZWxlbWVudCk7CkBAIC0zMDAxLDcg
KzMwMDEsNyBAQCBib29sIEV2ZW50SGFuZGxlcjo6a2V5RXZlbnQoY29uc3QgUGxhdGZvcm1LZXli
b2FyZEV2ZW50JiBpbml0aWFsS2V5RXZlbnQpCiAgICAgCiAgICAgaWYgKGhhbmRsZWRCeUlucHV0
TWV0aG9kKSB7CiAgICAgICAgIGtleURvd25FdmVudC5zZXRXaW5kb3dzVmlydHVhbEtleUNvZGUo
Q29tcG9zaXRpb25FdmVudEtleUNvZGUpOwotICAgICAgICBrZXlkb3duID0gS2V5Ym9hcmRFdmVu
dDo6Y3JlYXRlKGtleURvd25FdmVudCwgbV9mcmFtZS5kb2N1bWVudCgpLT5kZWZhdWx0Vmlldygp
KTsKKyAgICAgICAga2V5ZG93biA9IEtleWJvYXJkRXZlbnQ6OmNyZWF0ZShrZXlEb3duRXZlbnQs
IG1fZnJhbWUuZG9jdW1lbnQoKS5kZWZhdWx0VmlldygpKTsKICAgICAgICAga2V5ZG93bi0+c2V0
VGFyZ2V0KGVsZW1lbnQpOwogICAgICAgICBrZXlkb3duLT5zZXREZWZhdWx0SGFuZGxlZCgpOwog
ICAgIH0KQEAgLTMwMjUsNyArMzAyNSw3IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjprZXlFdmVudChj
b25zdCBQbGF0Zm9ybUtleWJvYXJkRXZlbnQmIGluaXRpYWxLZXlFdmVudCkKICAgICBrZXlQcmVz
c0V2ZW50LmRpc2FtYmlndWF0ZUtleURvd25FdmVudChQbGF0Zm9ybUV2ZW50OjpDaGFyLCBiYWNr
d2FyZENvbXBhdGliaWxpdHlNb2RlKTsKICAgICBpZiAoa2V5UHJlc3NFdmVudC50ZXh0KCkuaXNF
bXB0eSgpKQogICAgICAgICByZXR1cm4ga2V5ZG93blJlc3VsdDsKLSAgICBSZWZQdHI8S2V5Ym9h
cmRFdmVudD4ga2V5cHJlc3MgPSBLZXlib2FyZEV2ZW50OjpjcmVhdGUoa2V5UHJlc3NFdmVudCwg
bV9mcmFtZS5kb2N1bWVudCgpLT5kZWZhdWx0VmlldygpKTsKKyAgICBSZWZQdHI8S2V5Ym9hcmRF
dmVudD4ga2V5cHJlc3MgPSBLZXlib2FyZEV2ZW50OjpjcmVhdGUoa2V5UHJlc3NFdmVudCwgbV9m
cmFtZS5kb2N1bWVudCgpLmRlZmF1bHRWaWV3KCkpOwogICAgIGtleXByZXNzLT5zZXRUYXJnZXQo
ZWxlbWVudCk7CiAgICAgaWYgKGtleWRvd25SZXN1bHQpCiAgICAgICAgIGtleXByZXNzLT5zZXRE
ZWZhdWx0UHJldmVudGVkKHRydWUpOwpAQCAtMzQyMCw3ICszNDIwLDcgQEAgYm9vbCBFdmVudEhh
bmRsZXI6OmhhbmRsZVRleHRJbnB1dEV2ZW50KGNvbnN0IFN0cmluZyYgdGV4dCwgRXZlbnQqIHVu
ZGVybHlpbmdFdmUKICAgICBpZiAoRnJhbWVWaWV3KiB2aWV3ID0gbV9mcmFtZS52aWV3KCkpCiAg
ICAgICAgIHZpZXctPmRpc2FibGVMYXllckZsdXNoVGhyb3R0bGluZ1RlbXBvcmFyaWx5Rm9ySW50
ZXJhY3Rpb24oKTsKIAotICAgIFJlZlB0cjxUZXh0RXZlbnQ+IGV2ZW50ID0gVGV4dEV2ZW50Ojpj
cmVhdGUobV9mcmFtZS5kb2N1bWVudCgpLT5kb21XaW5kb3coKSwgdGV4dCwgaW5wdXRUeXBlKTsK
KyAgICBSZWZQdHI8VGV4dEV2ZW50PiBldmVudCA9IFRleHRFdmVudDo6Y3JlYXRlKG1fZnJhbWUu
ZG9jdW1lbnQoKS5kb21XaW5kb3coKSwgdGV4dCwgaW5wdXRUeXBlKTsKICAgICBldmVudC0+c2V0
VW5kZXJseWluZ0V2ZW50KHVuZGVybHlpbmdFdmVudCk7CiAKICAgICB0YXJnZXQtPmRpc3BhdGNo
RXZlbnQoZXZlbnQsIElHTk9SRV9FWENFUFRJT04pOwpAQCAtMzUzMCw3ICszNTMwLDcgQEAgdm9p
ZCBFdmVudEhhbmRsZXI6OmRlZmF1bHRBcnJvd0V2ZW50SGFuZGxlcihGb2N1c0RpcmVjdGlvbiBm
b2N1c0RpcmVjdGlvbiwgS2V5Ym8KIAogICAgIC8vIEFycm93cyBhbmQgb3RoZXIgcG9zc2libGUg
ZGlyZWN0aW9uYWwgbmF2aWdhdGlvbiBrZXlzIGNhbiBiZSB1c2VkIGluIGRlc2lnbgogICAgIC8v
IG1vZGUgZWRpdGluZy4KLSAgICBpZiAobV9mcmFtZS5kb2N1bWVudCgpLT5pbkRlc2lnbk1vZGUo
KSkKKyAgICBpZiAobV9mcmFtZS5kb2N1bWVudCgpLmluRGVzaWduTW9kZSgpKQogICAgICAgICBy
ZXR1cm47CiAKICAgICBpZiAocGFnZS0+Zm9jdXNDb250cm9sbGVyKCkuYWR2YW5jZUZvY3VzKGZv
Y3VzRGlyZWN0aW9uLCBldmVudCkpCkBAIC0zNTU0LDcgKzM1NTQsNyBAQCB2b2lkIEV2ZW50SGFu
ZGxlcjo6ZGVmYXVsdFRhYkV2ZW50SGFuZGxlcihLZXlib2FyZEV2ZW50KiBldmVudCkKICAgICBG
b2N1c0RpcmVjdGlvbiBmb2N1c0RpcmVjdGlvbiA9IGV2ZW50LT5zaGlmdEtleSgpID8gRm9jdXNE
aXJlY3Rpb25CYWNrd2FyZCA6IEZvY3VzRGlyZWN0aW9uRm9yd2FyZDsKIAogICAgIC8vIFRhYnMg
Y2FuIGJlIHVzZWQgaW4gZGVzaWduIG1vZGUgZWRpdGluZy4KLSAgICBpZiAobV9mcmFtZS5kb2N1
bWVudCgpLT5pbkRlc2lnbk1vZGUoKSkKKyAgICBpZiAobV9mcmFtZS5kb2N1bWVudCgpLmluRGVz
aWduTW9kZSgpKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAocGFnZS0+Zm9jdXNDb250cm9s
bGVyKCkuYWR2YW5jZUZvY3VzKGZvY3VzRGlyZWN0aW9uLCBldmVudCkpCkBAIC0zNTc2LDcgKzM1
NzYsNyBAQCB2b2lkIEV2ZW50SGFuZGxlcjo6c2VuZFNjcm9sbEV2ZW50KCkKIHsKICAgICBzZXRG
cmFtZVdhc1Njcm9sbGVkQnlVc2VyKCk7CiAgICAgaWYgKG1fZnJhbWUudmlldygpICYmIG1fZnJh
bWUuZG9jdW1lbnQoKSkKLSAgICAgICAgbV9mcmFtZS5kb2N1bWVudCgpLT5ldmVudFF1ZXVlKCku
ZW5xdWV1ZU9yRGlzcGF0Y2hTY3JvbGxFdmVudCgqbV9mcmFtZS5kb2N1bWVudCgpKTsKKyAgICAg
ICAgbV9mcmFtZS5kb2N1bWVudCgpLmV2ZW50UXVldWUoKS5lbnF1ZXVlT3JEaXNwYXRjaFNjcm9s
bEV2ZW50KCptX2ZyYW1lLmRvY3VtZW50KCkpOwogfQogCiB2b2lkIEV2ZW50SGFuZGxlcjo6c2V0
RnJhbWVXYXNTY3JvbGxlZEJ5VXNlcigpCkBAIC0zNzUzLDcgKzM3NTMsNyBAQCBib29sIEV2ZW50
SGFuZGxlcjo6aGFuZGxlVG91Y2hFdmVudChjb25zdCBQbGF0Zm9ybVRvdWNoRXZlbnQmIGV2ZW50
KQogICAgICAgICB9IGVsc2UgaWYgKHBvaW50U3RhdGUgPT0gUGxhdGZvcm1Ub3VjaFBvaW50OjpU
b3VjaFJlbGVhc2VkIHx8IHBvaW50U3RhdGUgPT0gUGxhdGZvcm1Ub3VjaFBvaW50OjpUb3VjaENh
bmNlbGxlZCkgewogICAgICAgICAgICAgLy8gTm8gbmVlZCB0byBwZXJmb3JtIGEgaGl0LXRlc3Qg
c2luY2Ugd2Ugb25seSBuZWVkIHRvIHVuc2V0IDpob3ZlciBhbmQgOmFjdGl2ZSBzdGF0ZXMuCiAg
ICAgICAgICAgICBpZiAoIXNob3VsZEdlc3R1cmVzVHJpZ2dlckFjdGl2ZSgpICYmIGFsbFRvdWNo
UmVsZWFzZWQpCi0gICAgICAgICAgICAgICAgbV9mcmFtZS5kb2N1bWVudCgpLT51cGRhdGVIb3Zl
ckFjdGl2ZVN0YXRlKGhpdFR5cGUsIDApOworICAgICAgICAgICAgICAgIG1fZnJhbWUuZG9jdW1l
bnQoKS51cGRhdGVIb3ZlckFjdGl2ZVN0YXRlKGhpdFR5cGUsIDApOwogICAgICAgICAgICAgaWYg
KHRvdWNoUG9pbnRUYXJnZXRLZXkgPT0gbV9vcmlnaW5hdGluZ1RvdWNoUG9pbnRUYXJnZXRLZXkp
CiAgICAgICAgICAgICAgICAgbV9vcmlnaW5hdGluZ1RvdWNoUG9pbnRUYXJnZXRLZXkgPSAwOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZvY3VzQ29udHJvbGxlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL0ZvY3VzQ29udHJvbGxlci5jcHAKaW5kZXggNDJlMzUwOC4uZjE1
NDY1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9Gb2N1c0NvbnRyb2xsZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRm9jdXNDb250cm9sbGVyLmNwcApAQCAtMTA5LDcg
KzEwOSw3IEBAIEZvY3VzTmF2aWdhdGlvblNjb3BlIEZvY3VzTmF2aWdhdGlvblNjb3BlOjpmb2N1
c05hdmlnYXRpb25TY29wZU93bmVkQnlJRnJhbWUoSFRNCiB7CiAgICAgQVNTRVJUKGZyYW1lKTsK
ICAgICBBU1NFUlQoZnJhbWUtPmNvbnRlbnRGcmFtZSgpKTsKLSAgICByZXR1cm4gRm9jdXNOYXZp
Z2F0aW9uU2NvcGUoZnJhbWUtPmNvbnRlbnRGcmFtZSgpLT5kb2N1bWVudCgpKTsKKyAgICByZXR1
cm4gRm9jdXNOYXZpZ2F0aW9uU2NvcGUoJmZyYW1lLT5jb250ZW50RnJhbWUoKS0+ZG9jdW1lbnQo
KSk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgdm9pZCBkaXNwYXRjaEV2ZW50c09uV2luZG93QW5kRm9j
dXNlZEVsZW1lbnQoRG9jdW1lbnQqIGRvY3VtZW50LCBib29sIGZvY3VzZWQpCkBAIC0xODEsMTIg
KzE4MSwxMiBAQCB2b2lkIEZvY3VzQ29udHJvbGxlcjo6c2V0Rm9jdXNlZEZyYW1lKFBhc3NSZWZQ
dHI8RnJhbWU+IGZyYW1lKQogICAgIC8vIE5vdyB0aGF0IHRoZSBmcmFtZSBpcyB1cGRhdGVkLCBm
aXJlIGV2ZW50cyBhbmQgdXBkYXRlIHRoZSBzZWxlY3Rpb24gZm9jdXNlZCBzdGF0ZXMgb2YgYm90
aCBmcmFtZXMuCiAgICAgaWYgKG9sZEZyYW1lICYmIG9sZEZyYW1lLT52aWV3KCkpIHsKICAgICAg
ICAgb2xkRnJhbWUtPnNlbGVjdGlvbigpLnNldEZvY3VzZWQoZmFsc2UpOwotICAgICAgICBvbGRG
cmFtZS0+ZG9jdW1lbnQoKS0+ZGlzcGF0Y2hXaW5kb3dFdmVudChFdmVudDo6Y3JlYXRlKGV2ZW50
TmFtZXMoKS5ibHVyRXZlbnQsIGZhbHNlLCBmYWxzZSkpOworICAgICAgICBvbGRGcmFtZS0+ZG9j
dW1lbnQoKS5kaXNwYXRjaFdpbmRvd0V2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmJs
dXJFdmVudCwgZmFsc2UsIGZhbHNlKSk7CiAgICAgfQogCiAgICAgaWYgKG5ld0ZyYW1lICYmIG5l
d0ZyYW1lLT52aWV3KCkgJiYgaXNGb2N1c2VkKCkpIHsKICAgICAgICAgbmV3RnJhbWUtPnNlbGVj
dGlvbigpLnNldEZvY3VzZWQodHJ1ZSk7Ci0gICAgICAgIG5ld0ZyYW1lLT5kb2N1bWVudCgpLT5k
aXNwYXRjaFdpbmRvd0V2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmZvY3VzRXZlbnQs
IGZhbHNlLCBmYWxzZSkpOworICAgICAgICBuZXdGcmFtZS0+ZG9jdW1lbnQoKS5kaXNwYXRjaFdp
bmRvd0V2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmZvY3VzRXZlbnQsIGZhbHNlLCBm
YWxzZSkpOwogICAgIH0KIAogICAgIG1fcGFnZS5jaHJvbWUoKS5mb2N1c2VkRnJhbWVDaGFuZ2Vk
KG5ld0ZyYW1lLmdldCgpKTsKQEAgLTI0NSw3ICsyNDUsNyBAQCBib29sIEZvY3VzQ29udHJvbGxl
cjo6c2V0SW5pdGlhbEZvY3VzKEZvY3VzRGlyZWN0aW9uIGRpcmVjdGlvbiwgS2V5Ym9hcmRFdmVu
dCogZQogICAgIC8vIElmIGZvY3VzIGlzIGJlaW5nIHNldCBpbml0aWFsbHksIGFjY2Vzc2liaWxp
dHkgbmVlZHMgdG8gYmUgaW5mb3JtZWQgdGhhdCBzeXN0ZW0gZm9jdXMgaGFzIG1vdmVkIAogICAg
IC8vIGludG8gdGhlIHdlYiBhcmVhIGFnYWluLCBldmVuIGlmIGZvY3VzIGRpZCBub3QgY2hhbmdl
IHdpdGhpbiBXZWJDb3JlLiBQb3N0Tm90aWZpY2F0aW9uIGlzIGNhbGxlZCBpbnN0ZWFkCiAgICAg
Ly8gb2YgaGFuZGxlRm9jdXNlZFVJRWxlbWVudENoYW5nZWQsIGJlY2F1c2UgdGhpcyB3aWxsIHNl
bmQgdGhlIG5vdGlmaWNhdGlvbiBldmVuIGlmIHRoZSBlbGVtZW50IGlzIHRoZSBzYW1lLgotICAg
IGlmIChBWE9iamVjdENhY2hlKiBjYWNoZSA9IGZvY3VzZWRPck1haW5GcmFtZSgpLmRvY3VtZW50
KCktPmV4aXN0aW5nQVhPYmplY3RDYWNoZSgpKQorICAgIGlmIChBWE9iamVjdENhY2hlKiBjYWNo
ZSA9IGZvY3VzZWRPck1haW5GcmFtZSgpLmRvY3VtZW50KCkuZXhpc3RpbmdBWE9iamVjdENhY2hl
KCkpCiAgICAgICAgIGNhY2hlLT5wb3N0Tm90aWZpY2F0aW9uKGZvY3VzZWRPck1haW5GcmFtZSgp
LmRvY3VtZW50KCksIEFYT2JqZWN0Q2FjaGU6OkFYRm9jdXNlZFVJRWxlbWVudENoYW5nZWQpOwog
CiAgICAgcmV0dXJuIGRpZEFkdmFuY2VGb2N1czsKQEAgLTc1Miw3ICs3NTIsNyBAQCBzdGF0aWMg
dm9pZCB1cGRhdGVGb2N1c0NhbmRpZGF0ZUlmTmVlZGVkKEZvY3VzRGlyZWN0aW9uIGRpcmVjdGlv
biwgY29uc3QgRm9jdXNDYQogdm9pZCBGb2N1c0NvbnRyb2xsZXI6OmZpbmRGb2N1c0NhbmRpZGF0
ZUluQ29udGFpbmVyKE5vZGUqIGNvbnRhaW5lciwgY29uc3QgTGF5b3V0UmVjdCYgc3RhcnRpbmdS
ZWN0LCBGb2N1c0RpcmVjdGlvbiBkaXJlY3Rpb24sIEtleWJvYXJkRXZlbnQqIGV2ZW50LCBGb2N1
c0NhbmRpZGF0ZSYgY2xvc2VzdCkKIHsKICAgICBBU1NFUlQoY29udGFpbmVyKTsKLSAgICBOb2Rl
KiBmb2N1c2VkTm9kZSA9IChmb2N1c2VkRnJhbWUoKSAmJiBmb2N1c2VkRnJhbWUoKS0+ZG9jdW1l
bnQoKSkgPyBmb2N1c2VkRnJhbWUoKS0+ZG9jdW1lbnQoKS0+Zm9jdXNlZEVsZW1lbnQoKSA6IDA7
CisgICAgTm9kZSogZm9jdXNlZE5vZGUgPSAoZm9jdXNlZEZyYW1lKCkpID8gZm9jdXNlZEZyYW1l
KCktPmRvY3VtZW50KCkuZm9jdXNlZEVsZW1lbnQoKSA6IDA7CiAKICAgICBFbGVtZW50KiBlbGVt
ZW50ID0gRWxlbWVudFRyYXZlcnNhbDo6Zmlyc3RXaXRoaW4oY29udGFpbmVyKTsKICAgICBGb2N1
c0NhbmRpZGF0ZSBjdXJyZW50OwpAQCAtNzg0LDkgKzc4NCw5IEBAIHZvaWQgRm9jdXNDb250cm9s
bGVyOjpmaW5kRm9jdXNDYW5kaWRhdGVJbkNvbnRhaW5lcihOb2RlKiBjb250YWluZXIsIGNvbnN0
IExheW91CiAKICAgICAvLyBUaGUgdmFyaWFibGUgJ2NhbmRpZGF0ZUNvdW50JyBrZWVwcyB0cmFj
ayBvZiB0aGUgbnVtYmVyIG9mIG5vZGVzIHRyYXZlcnNlZCBpbiBhIGdpdmVuIGNvbnRhaW5lci4K
ICAgICAvLyBJZiB3ZSBoYXZlIG1vcmUgdGhhbiBvbmUgY29udGFpbmVyIGluIGEgcGFnZSB0aGVu
IHRoZSB0b3RhbCBudW1iZXIgb2Ygbm9kZXMgdHJhdmVyc2VkIGlzIGVxdWFsIHRvIHRoZSBzdW0g
b2Ygbm9kZXMgdHJhdmVyc2VkIGluIGVhY2ggY29udGFpbmVyLgotICAgIGlmIChmb2N1c2VkRnJh
bWUoKSAmJiBmb2N1c2VkRnJhbWUoKS0+ZG9jdW1lbnQoKSkgewotICAgICAgICBjYW5kaWRhdGVD
b3VudCArPSBmb2N1c2VkRnJhbWUoKS0+ZG9jdW1lbnQoKS0+cGFnZSgpLT5sYXN0U3BhdGlhbE5h
dmlnYXRpb25DYW5kaWRhdGVDb3VudCgpOwotICAgICAgICBmb2N1c2VkRnJhbWUoKS0+ZG9jdW1l
bnQoKS0+cGFnZSgpLT5zZXRMYXN0U3BhdGlhbE5hdmlnYXRpb25DYW5kaWRhdGVDb3VudChjYW5k
aWRhdGVDb3VudCk7CisgICAgaWYgKGZvY3VzZWRGcmFtZSgpKSB7CisgICAgICAgIGNhbmRpZGF0
ZUNvdW50ICs9IGZvY3VzZWRGcmFtZSgpLT5kb2N1bWVudCgpLnBhZ2UoKS0+bGFzdFNwYXRpYWxO
YXZpZ2F0aW9uQ2FuZGlkYXRlQ291bnQoKTsKKyAgICAgICAgZm9jdXNlZEZyYW1lKCktPmRvY3Vt
ZW50KCkucGFnZSgpLT5zZXRMYXN0U3BhdGlhbE5hdmlnYXRpb25DYW5kaWRhdGVDb3VudChjYW5k
aWRhdGVDb3VudCk7CiAgICAgfQogfQogCkBAIC04MjMsMTAgKzgyMywxMCBAQCBib29sIEZvY3Vz
Q29udHJvbGxlcjo6YWR2YW5jZUZvY3VzRGlyZWN0aW9uYWxseUluQ29udGFpbmVyKE5vZGUqIGNv
bnRhaW5lciwgY29ucwogICAgICAgICB9CiAgICAgICAgIC8vIE5hdmlnYXRlIGludG8gYSBuZXcg
ZnJhbWUuCiAgICAgICAgIExheW91dFJlY3QgcmVjdDsKLSAgICAgICAgRWxlbWVudCogZm9jdXNl
ZEVsZW1lbnQgPSBmb2N1c2VkT3JNYWluRnJhbWUoKS5kb2N1bWVudCgpLT5mb2N1c2VkRWxlbWVu
dCgpOworICAgICAgICBFbGVtZW50KiBmb2N1c2VkRWxlbWVudCA9IGZvY3VzZWRPck1haW5GcmFt
ZSgpLmRvY3VtZW50KCkuZm9jdXNlZEVsZW1lbnQoKTsKICAgICAgICAgaWYgKGZvY3VzZWRFbGVt
ZW50ICYmICFoYXNPZmZzY3JlZW5SZWN0KGZvY3VzZWRFbGVtZW50KSkKICAgICAgICAgICAgIHJl
Y3QgPSBub2RlUmVjdEluQWJzb2x1dGVDb29yZGluYXRlcyhmb2N1c2VkRWxlbWVudCwgdHJ1ZSAv
KiBpZ25vcmUgYm9yZGVyICovKTsKLSAgICAgICAgZnJhbWVFbGVtZW50LT5jb250ZW50RnJhbWUo
KS0+ZG9jdW1lbnQoKS0+dXBkYXRlTGF5b3V0SWdub3JlUGVuZGluZ1N0eWxlc2hlZXRzKCk7Cisg
ICAgICAgIGZyYW1lRWxlbWVudC0+Y29udGVudEZyYW1lKCktPmRvY3VtZW50KCkudXBkYXRlTGF5
b3V0SWdub3JlUGVuZGluZ1N0eWxlc2hlZXRzKCk7CiAgICAgICAgIGlmICghYWR2YW5jZUZvY3Vz
RGlyZWN0aW9uYWxseUluQ29udGFpbmVyKGZyYW1lRWxlbWVudC0+Y29udGVudEZyYW1lKCktPmRv
Y3VtZW50KCksIHJlY3QsIGRpcmVjdGlvbiwgZXZlbnQpKSB7CiAgICAgICAgICAgICAvLyBUaGUg
bmV3IGZyYW1lIGhhZCBub3RoaW5nIGludGVyZXN0aW5nLCBuZWVkIHRvIGZpbmQgYW5vdGhlciBj
YW5kaWRhdGUuCiAgICAgICAgICAgICByZXR1cm4gYWR2YW5jZUZvY3VzRGlyZWN0aW9uYWxseUlu
Q29udGFpbmVyKGNvbnRhaW5lciwgbm9kZVJlY3RJbkFic29sdXRlQ29vcmRpbmF0ZXMoZm9jdXND
YW5kaWRhdGUudmlzaWJsZU5vZGUsIHRydWUpLCBkaXJlY3Rpb24sIGV2ZW50KTsKQEAgLTg0MSw3
ICs4NDEsNyBAQCBib29sIEZvY3VzQ29udHJvbGxlcjo6YWR2YW5jZUZvY3VzRGlyZWN0aW9uYWxs
eUluQ29udGFpbmVyKE5vZGUqIGNvbnRhaW5lciwgY29ucwogICAgICAgICB9CiAgICAgICAgIC8v
IE5hdmlnYXRlIGludG8gYSBuZXcgc2Nyb2xsYWJsZSBjb250YWluZXIuCiAgICAgICAgIExheW91
dFJlY3Qgc3RhcnRpbmdSZWN0OwotICAgICAgICBFbGVtZW50KiBmb2N1c2VkRWxlbWVudCA9IGZv
Y3VzZWRPck1haW5GcmFtZSgpLmRvY3VtZW50KCktPmZvY3VzZWRFbGVtZW50KCk7CisgICAgICAg
IEVsZW1lbnQqIGZvY3VzZWRFbGVtZW50ID0gZm9jdXNlZE9yTWFpbkZyYW1lKCkuZG9jdW1lbnQo
KS5mb2N1c2VkRWxlbWVudCgpOwogICAgICAgICBpZiAoZm9jdXNlZEVsZW1lbnQgJiYgIWhhc09m
ZnNjcmVlblJlY3QoZm9jdXNlZEVsZW1lbnQpKQogICAgICAgICAgICAgc3RhcnRpbmdSZWN0ID0g
bm9kZVJlY3RJbkFic29sdXRlQ29vcmRpbmF0ZXMoZm9jdXNlZEVsZW1lbnQsIHRydWUpOwogICAg
ICAgICByZXR1cm4gYWR2YW5jZUZvY3VzRGlyZWN0aW9uYWxseUluQ29udGFpbmVyKGZvY3VzQ2Fu
ZGlkYXRlLnZpc2libGVOb2RlLCBzdGFydGluZ1JlY3QsIGRpcmVjdGlvbiwgZXZlbnQpOwpAQCAt
ODg1LDcgKzg4NSw3IEBAIGJvb2wgRm9jdXNDb250cm9sbGVyOjphZHZhbmNlRm9jdXNEaXJlY3Rp
b25hbGx5KEZvY3VzRGlyZWN0aW9uIGRpcmVjdGlvbiwgS2V5Ym9hCiAgICAgICAgIH0KICAgICB9
CiAKLSAgICBpZiAoZm9jdXNlZEZyYW1lKCkgJiYgZm9jdXNlZEZyYW1lKCktPmRvY3VtZW50KCkp
CisgICAgaWYgKGZvY3VzZWRGcmFtZSgpKQogICAgICAgICBmb2N1c2VkRG9jdW1lbnQtPnBhZ2Uo
KS0+c2V0TGFzdFNwYXRpYWxOYXZpZ2F0aW9uQ2FuZGlkYXRlQ291bnQoMCk7CiAKICAgICBib29s
IGNvbnN1bWVkID0gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1l
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCmluZGV4IDIzNzQ1MWUuLmQ4Mzg5
NjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCkBAIC0xMTM4LDcgKzExMzgsNyBAQCBib29sIEZyYW1l
Ojppc1VSTEFsbG93ZWQoY29uc3QgVVJMJiB1cmwpIGNvbnN0CiAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICBib29sIGZvdW5kU2VsZlJlZmVyZW5jZSA9IGZhbHNlOwogICAgIGZvciAoY29uc3Qg
RnJhbWUqIGZyYW1lID0gdGhpczsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyZWUoKS5wYXJlbnQo
KSkgewotICAgICAgICBpZiAoZXF1YWxJZ25vcmluZ0ZyYWdtZW50SWRlbnRpZmllcihmcmFtZS0+
ZG9jdW1lbnQoKS0+dXJsKCksIHVybCkpIHsKKyAgICAgICAgaWYgKGVxdWFsSWdub3JpbmdGcmFn
bWVudElkZW50aWZpZXIoZnJhbWUtPmRvY3VtZW50KCkudXJsKCksIHVybCkpIHsKICAgICAgICAg
ICAgIGlmIChmb3VuZFNlbGZSZWZlcmVuY2UpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgICAgICAgICAgZm91bmRTZWxmUmVmZXJlbmNlID0gdHJ1ZTsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuaCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuaApp
bmRleCA5M2U3NWQxLi40MWQ5MDFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Zy
YW1lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5oCkBAIC0xNTIsNyArMTUyLDcg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgICAgICBQYWdlKiBwYWdlKCkgY29uc3Q7CiAgICAg
ICAgIEhUTUxGcmFtZU93bmVyRWxlbWVudCogb3duZXJFbGVtZW50KCkgY29uc3Q7CiAKLSAgICAg
ICAgRG9jdW1lbnQqIGRvY3VtZW50KCkgY29uc3Q7CisgICAgICAgIERvY3VtZW50JiBkb2N1bWVu
dCgpIGNvbnN0OwogICAgICAgICBGcmFtZVZpZXcqIHZpZXcoKSBjb25zdDsKIAogICAgICAgICBF
ZGl0b3ImIGVkaXRvcigpIGNvbnN0OwpAQCAtMzgzLDkgKzM4Myw5IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKICAgICAgICAgcmV0dXJuICptX3NjcmlwdDsKICAgICB9CiAKLSAgICBpbmxpbmUgRG9j
dW1lbnQqIEZyYW1lOjpkb2N1bWVudCgpIGNvbnN0CisgICAgaW5saW5lIERvY3VtZW50JiBGcmFt
ZTo6ZG9jdW1lbnQoKSBjb25zdAogICAgIHsKLSAgICAgICAgcmV0dXJuIG1fZG9jLmdldCgpOwor
ICAgICAgICByZXR1cm4gKm1fZG9jOwogICAgIH0KIAogICAgIGlubGluZSBGcmFtZVNlbGVjdGlv
biYgRnJhbWU6OnNlbGVjdGlvbigpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0ZyYW1lU25hcHNob3R0aW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVTbmFw
c2hvdHRpbmcuY3BwCmluZGV4IDRjYzI4MmRhLi4xYTFkZjEwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0ZyYW1lU25hcHNob3R0aW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0ZyYW1lU25hcHNob3R0aW5nLmNwcApAQCAtNzAsNyArNzAsNyBAQCBzdGQ6OnVuaXF1ZV9w
dHI8SW1hZ2VCdWZmZXI+IHNuYXBzaG90RnJhbWVSZWN0KEZyYW1lJiBmcmFtZSwgY29uc3QgSW50
UmVjdCYgaW1hZwogICAgIGlmICghZnJhbWUucGFnZSgpKQogICAgICAgICByZXR1cm4gbnVsbHB0
cjsKIAotICAgIGZyYW1lLmRvY3VtZW50KCktPnVwZGF0ZUxheW91dCgpOworICAgIGZyYW1lLmRv
Y3VtZW50KCkudXBkYXRlTGF5b3V0KCk7CiAKICAgICBGcmFtZVZpZXc6OlNlbGVjdGlvbkluU25h
cHNob3Qgc2hvdWxkSW5jbHVkZVNlbGVjdGlvbiA9IEZyYW1lVmlldzo6SW5jbHVkZVNlbGVjdGlv
bjsKICAgICBpZiAob3B0aW9ucyAmIFNuYXBzaG90T3B0aW9uc0V4Y2x1ZGVTZWxlY3Rpb25IaWdo
bGlnaHRpbmcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVHJlZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVHJlZS5jcHAKaW5kZXggMmVmMjNiMy4uMDkzYWQ3
YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVRyZWUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVUcmVlLmNwcApAQCAtNDI4LDcgKzQyOCw3IEBAIHN0YXRp
YyB2b2lkIHByaW50RnJhbWVzKGNvbnN0IFdlYkNvcmU6OkZyYW1lJiBmcmFtZSwgY29uc3QgV2Vi
Q29yZTo6RnJhbWUqIHRhcmdlCiAgICAgcHJpbnRJbmRlbnQoaW5kZW50KTsKICAgICBwcmludGYo
IiAgZG9jdW1lbnQ9JXBcbiIsIGZyYW1lLmRvY3VtZW50KCkpOwogICAgIHByaW50SW5kZW50KGlu
ZGVudCk7Ci0gICAgcHJpbnRmKCIgIHVyaT0lc1xuXG4iLCBmcmFtZS5kb2N1bWVudCgpLT5kb2N1
bWVudFVSSSgpLnV0ZjgoKS5kYXRhKCkpOworICAgIHByaW50ZigiICB1cmk9JXNcblxuIiwgZnJh
bWUuZG9jdW1lbnQoKS5kb2N1bWVudFVSSSgpLnV0ZjgoKS5kYXRhKCkpOwogCiAgICAgZm9yIChX
ZWJDb3JlOjpGcmFtZSogY2hpbGQgPSBmcmFtZS50cmVlKCkuZmlyc3RDaGlsZCgpOyBjaGlsZDsg
Y2hpbGQgPSBjaGlsZC0+dHJlZSgpLm5leHRTaWJsaW5nKCkpCiAgICAgICAgIHByaW50RnJhbWVz
KCpjaGlsZCwgdGFyZ2V0RnJhbWUsIGluZGVudCArIDEpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcu
Y3BwCmluZGV4IGMwZTMwZTAuLjgwODMzYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvRnJhbWVWaWV3LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAK
QEAgLTQyMSw3ICs0MjEsNyBAQCB2b2lkIEZyYW1lVmlldzo6c2V0RnJhbWVSZWN0KGNvbnN0IElu
dFJlY3QmIG5ld1JlY3QpCiAgICAgICAgIFBhZ2UqIHBhZ2UgPSBmcmFtZSgpLnBhZ2UoKTsKICAg
ICAgICAgaWYgKGZyYW1lKCkuaXNNYWluRnJhbWUoKSAmJiBwYWdlLT5zZXR0aW5ncygpLnRleHRB
dXRvc2l6aW5nRW5hYmxlZCgpKSB7CiAgICAgICAgICAgICBmb3IgKEZyYW1lKiBmcmFtZSA9ICZw
YWdlLT5tYWluRnJhbWUoKTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyZWUoKS50cmF2ZXJzZU5l
eHQoKSkKLSAgICAgICAgICAgICAgICBmcmFtZSgpLmRvY3VtZW50KCktPnRleHRBdXRvc2l6ZXIo
KS0+cmVjYWxjdWxhdGVNdWx0aXBsaWVycygpOworICAgICAgICAgICAgICAgIGZyYW1lKCkuZG9j
dW1lbnQoKS50ZXh0QXV0b3NpemVyKCktPnJlY2FsY3VsYXRlTXVsdGlwbGllcnMoKTsKICAgICAg
ICAgfQogICAgIH0KICNlbmRpZgpAQCAtNTY3LDcgKzU2Nyw3IEBAIHZvaWQgRnJhbWVWaWV3Ojph
ZGp1c3RWaWV3U2l6ZSgpCiAKICAgICBjb25zdCBJbnRSZWN0IHJlY3QgPSByZW5kZXJWaWV3LT5k
b2N1bWVudFJlY3QoKTsKICAgICBjb25zdCBJbnRTaXplJiBzaXplID0gcmVjdC5zaXplKCk7Ci0g
ICAgU2Nyb2xsVmlldzo6c2V0U2Nyb2xsT3JpZ2luKEludFBvaW50KC1yZWN0LngoKSwgLXJlY3Qu
eSgpKSwgIWZyYW1lKCkuZG9jdW1lbnQoKS0+cHJpbnRpbmcoKSwgc2l6ZSA9PSBjb250ZW50c1Np
emUoKSk7CisgICAgU2Nyb2xsVmlldzo6c2V0U2Nyb2xsT3JpZ2luKEludFBvaW50KC1yZWN0Lngo
KSwgLXJlY3QueSgpKSwgIWZyYW1lKCkuZG9jdW1lbnQoKS5wcmludGluZygpLCBzaXplID09IGNv
bnRlbnRzU2l6ZSgpKTsKICAgICAKICAgICBzZXRDb250ZW50c1NpemUoc2l6ZSk7CiB9CkBAIC0x
MTAzLDcgKzExMDMsNyBAQCB2b2lkIEZyYW1lVmlldzo6bGF5b3V0KGJvb2wgYWxsb3dTdWJ0cmVl
KQogCiAgICAgaWYgKGluQ2hpbGRGcmFtZUxheW91dFdpdGhGcmFtZUZsYXR0ZW5pbmcpIHsKICAg
ICAgICAgc3RhcnRMYXlvdXRBdE1haW5GcmFtZVZpZXdJZk5lZWRlZChhbGxvd1N1YnRyZWUpOwot
ICAgICAgICBSZW5kZXJFbGVtZW50KiByb290ID0gbV9sYXlvdXRSb290ID8gbV9sYXlvdXRSb290
IDogZnJhbWUoKS5kb2N1bWVudCgpLT5yZW5kZXJWaWV3KCk7CisgICAgICAgIFJlbmRlckVsZW1l
bnQqIHJvb3QgPSBtX2xheW91dFJvb3QgPyBtX2xheW91dFJvb3QgOiBmcmFtZSgpLmRvY3VtZW50
KCkucmVuZGVyVmlldygpOwogICAgICAgICBpZiAoIXJvb3QgfHwgIXJvb3QtPm5lZWRzTGF5b3V0
KCkpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMTg4MSw3ICsxODgxLDcgQEAgYm9v
bCBGcmFtZVZpZXc6OnNjcm9sbFRvRnJhZ21lbnQoY29uc3QgVVJMJiB1cmwpCiAgICAgLy8gT1RP
SCBJZiBDU1MgdGFyZ2V0IHdhcyBzZXQgcHJldmlvdXNseSwgd2Ugd2FudCB0byBzZXQgaXQgdG8g
MCwgcmVjYWxjCiAgICAgLy8gYW5kIHBvc3NpYmx5IHJlcGFpbnQgYmVjYXVzZSA6dGFyZ2V0IHBz
ZXVkbyBjbGFzcyBtYXkgaGF2ZSBiZWVuCiAgICAgLy8gc2V0IChzZWUgYnVnIDExMzIxKS4KLSAg
ICBpZiAoIXVybC5oYXNGcmFnbWVudElkZW50aWZpZXIoKSAmJiAhZnJhbWUoKS5kb2N1bWVudCgp
LT5jc3NUYXJnZXQoKSkKKyAgICBpZiAoIXVybC5oYXNGcmFnbWVudElkZW50aWZpZXIoKSAmJiAh
ZnJhbWUoKS5kb2N1bWVudCgpLmNzc1RhcmdldCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAK
ICAgICBTdHJpbmcgZnJhZ21lbnRJZGVudGlmaWVyID0gdXJsLmZyYWdtZW50SWRlbnRpZmllcigp
OwpAQCAtMTg4OSw3ICsxODg5LDcgQEAgYm9vbCBGcmFtZVZpZXc6OnNjcm9sbFRvRnJhZ21lbnQo
Y29uc3QgVVJMJiB1cmwpCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgLy8gVHJ5IGFnYWlu
IGFmdGVyIGRlY29kaW5nIHRoZSByZWYsIGJhc2VkIG9uIHRoZSBkb2N1bWVudCdzIGVuY29kaW5n
LgotICAgIGlmIChUZXh0UmVzb3VyY2VEZWNvZGVyKiBkZWNvZGVyID0gZnJhbWUoKS5kb2N1bWVu
dCgpLT5kZWNvZGVyKCkpCisgICAgaWYgKFRleHRSZXNvdXJjZURlY29kZXIqIGRlY29kZXIgPSBm
cmFtZSgpLmRvY3VtZW50KCkuZGVjb2RlcigpKQogICAgICAgICByZXR1cm4gc2Nyb2xsVG9BbmNo
b3IoZGVjb2RlVVJMRXNjYXBlU2VxdWVuY2VzKGZyYWdtZW50SWRlbnRpZmllciwgZGVjb2Rlci0+
ZW5jb2RpbmcoKSkpOwogCiAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTg5OSwxOSArMTg5OSwxOSBA
QCBib29sIEZyYW1lVmlldzo6c2Nyb2xsVG9BbmNob3IoY29uc3QgU3RyaW5nJiBuYW1lKQogewog
ICAgIEFTU0VSVChmcmFtZSgpLmRvY3VtZW50KCkpOwogCi0gICAgaWYgKCFmcmFtZSgpLmRvY3Vt
ZW50KCktPmhhdmVTdHlsZXNoZWV0c0xvYWRlZCgpKSB7Ci0gICAgICAgIGZyYW1lKCkuZG9jdW1l
bnQoKS0+c2V0R290b0FuY2hvck5lZWRlZEFmdGVyU3R5bGVzaGVldHNMb2FkKHRydWUpOworICAg
IGlmICghZnJhbWUoKS5kb2N1bWVudCgpLmhhdmVTdHlsZXNoZWV0c0xvYWRlZCgpKSB7CisgICAg
ICAgIGZyYW1lKCkuZG9jdW1lbnQoKS5zZXRHb3RvQW5jaG9yTmVlZGVkQWZ0ZXJTdHlsZXNoZWV0
c0xvYWQodHJ1ZSk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICBmcmFtZSgp
LmRvY3VtZW50KCktPnNldEdvdG9BbmNob3JOZWVkZWRBZnRlclN0eWxlc2hlZXRzTG9hZChmYWxz
ZSk7CisgICAgZnJhbWUoKS5kb2N1bWVudCgpLnNldEdvdG9BbmNob3JOZWVkZWRBZnRlclN0eWxl
c2hlZXRzTG9hZChmYWxzZSk7CiAKLSAgICBFbGVtZW50KiBhbmNob3JFbGVtZW50ID0gZnJhbWUo
KS5kb2N1bWVudCgpLT5maW5kQW5jaG9yKG5hbWUpOworICAgIEVsZW1lbnQqIGFuY2hvckVsZW1l
bnQgPSBmcmFtZSgpLmRvY3VtZW50KCkuZmluZEFuY2hvcihuYW1lKTsKIAogICAgIC8vIFNldHRp
bmcgdG8gbnVsbCB3aWxsIGNsZWFyIHRoZSBjdXJyZW50IHRhcmdldC4KLSAgICBmcmFtZSgpLmRv
Y3VtZW50KCktPnNldENTU1RhcmdldChhbmNob3JFbGVtZW50KTsKKyAgICBmcmFtZSgpLmRvY3Vt
ZW50KCkuc2V0Q1NTVGFyZ2V0KGFuY2hvckVsZW1lbnQpOwogCi0gICAgaWYgKGZyYW1lKCkuZG9j
dW1lbnQoKS0+aXNTVkdEb2N1bWVudCgpKSB7CisgICAgaWYgKGZyYW1lKCkuZG9jdW1lbnQoKS5p
c1NWR0RvY3VtZW50KCkpIHsKICAgICAgICAgaWYgKFNWR1NWR0VsZW1lbnQqIHN2ZyA9IHRvU1ZH
RG9jdW1lbnQoZnJhbWUoKS5kb2N1bWVudCgpKS0+cm9vdEVsZW1lbnQoKSkgewogICAgICAgICAg
ICAgc3ZnLT5zZXR1cEluaXRpYWxWaWV3KG5hbWUsIGFuY2hvckVsZW1lbnQpOwogICAgICAgICAg
ICAgaWYgKCFhbmNob3JFbGVtZW50KQpAQCAtMTkyNyw3ICsxOTI3LDcgQEAgYm9vbCBGcmFtZVZp
ZXc6OnNjcm9sbFRvQW5jaG9yKGNvbnN0IFN0cmluZyYgbmFtZSkKICAgICAKICAgICAvLyBJZiB0
aGUgYW5jaG9yIGFjY2VwdHMga2V5Ym9hcmQgZm9jdXMsIG1vdmUgZm9jdXMgdGhlcmUgdG8gYWlk
IHVzZXJzIHJlbHlpbmcgb24ga2V5Ym9hcmQgbmF2aWdhdGlvbi4KICAgICBpZiAoYW5jaG9yRWxl
bWVudCAmJiBhbmNob3JFbGVtZW50LT5pc0ZvY3VzYWJsZSgpKQotICAgICAgICBmcmFtZSgpLmRv
Y3VtZW50KCktPnNldEZvY3VzZWRFbGVtZW50KGFuY2hvckVsZW1lbnQpOworICAgICAgICBmcmFt
ZSgpLmRvY3VtZW50KCkuc2V0Rm9jdXNlZEVsZW1lbnQoYW5jaG9yRWxlbWVudCk7CiAgICAgCiAg
ICAgcmV0dXJuIHRydWU7CiB9CkBAIC0xOTQwLDcgKzE5NDAsNyBAQCB2b2lkIEZyYW1lVmlldzo6
bWFpbnRhaW5TY3JvbGxQb3NpdGlvbkF0QW5jaG9yKE5vZGUqIGFuY2hvck5vZGUpCiAKICAgICAv
LyBXZSBuZWVkIHRvIHVwZGF0ZSB0aGUgbGF5b3V0IGJlZm9yZSBzY3JvbGxpbmcsIG90aGVyd2lz
ZSB3ZSBjb3VsZAogICAgIC8vIHJlYWxseSBtZXNzIHRoaW5ncyB1cCBpZiBhbiBhbmNob3Igc2Ny
b2xsIGNvbWVzIGF0IGEgYmFkIG1vbWVudC4KLSAgICBmcmFtZSgpLmRvY3VtZW50KCktPnVwZGF0
ZVN0eWxlSWZOZWVkZWQoKTsKKyAgICBmcmFtZSgpLmRvY3VtZW50KCkudXBkYXRlU3R5bGVJZk5l
ZWRlZCgpOwogICAgIC8vIE9ubHkgZG8gYSBsYXlvdXQgaWYgY2hhbmdlcyBoYXZlIG9jY3VycmVk
IHRoYXQgbWFrZSBpdCBuZWNlc3NhcnkuCiAgICAgUmVuZGVyVmlldyogcmVuZGVyVmlldyA9IHRo
aXMtPnJlbmRlclZpZXcoKTsKICAgICBpZiAocmVuZGVyVmlldyAmJiByZW5kZXJWaWV3LT5uZWVk
c0xheW91dCgpKQpAQCAtMTk1MSw3ICsxOTUxLDcgQEAgdm9pZCBGcmFtZVZpZXc6Om1haW50YWlu
U2Nyb2xsUG9zaXRpb25BdEFuY2hvcihOb2RlKiBhbmNob3JOb2RlKQogCiB2b2lkIEZyYW1lVmll
dzo6c2Nyb2xsRWxlbWVudFRvUmVjdChFbGVtZW50KiBlbGVtZW50LCBjb25zdCBJbnRSZWN0JiBy
ZWN0KQogewotICAgIGZyYW1lKCkuZG9jdW1lbnQoKS0+dXBkYXRlTGF5b3V0SWdub3JlUGVuZGlu
Z1N0eWxlc2hlZXRzKCk7CisgICAgZnJhbWUoKS5kb2N1bWVudCgpLnVwZGF0ZUxheW91dElnbm9y
ZVBlbmRpbmdTdHlsZXNoZWV0cygpOwogCiAgICAgTGF5b3V0UmVjdCBib3VuZHMgPSBlbGVtZW50
LT5ib3VuZGluZ0JveCgpOwogICAgIGludCBjZW50ZXJpbmdPZmZzZXRYID0gKHJlY3Qud2lkdGgo
KSAtIGJvdW5kcy53aWR0aCgpKSAvIDI7CkBAIC0yMzA1LDggKzIzMDUsOCBAQCB2b2lkIEZyYW1l
Vmlldzo6c3BlY3VsYXRpdmVUaWxpbmdFbmFibGVUaW1lckZpcmVkKFRpbWVyPEZyYW1lVmlldz4m
KQogdm9pZCBGcmFtZVZpZXc6OmxheW91dFRpbWVyRmlyZWQoVGltZXI8RnJhbWVWaWV3PiYpCiB7
CiAjaWZkZWYgSU5TVFJVTUVOVF9MQVlPVVRfU0NIRURVTElORwotICAgIGlmICghZnJhbWUoKS5k
b2N1bWVudCgpLT5vd25lckVsZW1lbnQoKSkKLSAgICAgICAgcHJpbnRmKCJMYXlvdXQgdGltZXIg
ZmlyZWQgYXQgJWxsZFxuIiwgZnJhbWUoKS5kb2N1bWVudCgpLT5lbGFwc2VkVGltZSgpLmNvdW50
KCkpOworICAgIGlmICghZnJhbWUoKS5kb2N1bWVudCgpLm93bmVyRWxlbWVudCgpKQorICAgICAg
ICBwcmludGYoIkxheW91dCB0aW1lciBmaXJlZCBhdCAlbGxkXG4iLCBmcmFtZSgpLmRvY3VtZW50
KCkuZWxhcHNlZFRpbWUoKS5jb3VudCgpKTsKICNlbmRpZgogICAgIGxheW91dCgpOwogfQpAQCAt
MjMyNSw3ICsyMzI1LDcgQEAgdm9pZCBGcmFtZVZpZXc6OnNjaGVkdWxlUmVsYXlvdXQoKQogICAg
ICAgICByZXR1cm47CiAgICAgaWYgKCFuZWVkc0xheW91dCgpKQogICAgICAgICByZXR1cm47Ci0g
ICAgaWYgKCFmcmFtZSgpLmRvY3VtZW50KCktPnNob3VsZFNjaGVkdWxlTGF5b3V0KCkpCisgICAg
aWYgKCFmcmFtZSgpLmRvY3VtZW50KCkuc2hvdWxkU2NoZWR1bGVMYXlvdXQoKSkKICAgICAgICAg
cmV0dXJuOwogICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkSW52YWxpZGF0ZUxheW91
dCgmZnJhbWUoKSk7CiAgICAgLy8gV2hlbiBmcmFtZSBmbGF0dGVuaW5nIGlzIGVuYWJsZWQsIHRo
ZSBjb250ZW50cyBvZiB0aGUgZnJhbWUgY291bGQgYWZmZWN0IHRoZSBsYXlvdXQgb2YgdGhlIHBh
cmVudCBmcmFtZXMuCkBAIC0yMzMzLDcgKzIzMzMsNyBAQCB2b2lkIEZyYW1lVmlldzo6c2NoZWR1
bGVSZWxheW91dCgpCiAgICAgaWYgKGZyYW1lKCkub3duZXJSZW5kZXJlcigpICYmIGlzSW5DaGls
ZEZyYW1lV2l0aEZyYW1lRmxhdHRlbmluZygpKQogICAgICAgICBmcmFtZSgpLm93bmVyUmVuZGVy
ZXIoKS0+c2V0TmVlZHNMYXlvdXQoTWFya0NvbnRhaW5pbmdCbG9ja0NoYWluKTsKIAotICAgIHN0
ZDo6Y2hyb25vOjptaWxsaXNlY29uZHMgZGVsYXkgPSBmcmFtZSgpLmRvY3VtZW50KCktPm1pbmlt
dW1MYXlvdXREZWxheSgpOworICAgIHN0ZDo6Y2hyb25vOjptaWxsaXNlY29uZHMgZGVsYXkgPSBm
cmFtZSgpLmRvY3VtZW50KCkubWluaW11bUxheW91dERlbGF5KCk7CiAgICAgaWYgKG1fbGF5b3V0
VGltZXIuaXNBY3RpdmUoKSAmJiBtX2RlbGF5ZWRMYXlvdXQgJiYgIWRlbGF5LmNvdW50KCkpCiAg
ICAgICAgIHVuc2NoZWR1bGVSZWxheW91dCgpOwogICAgIGlmIChtX2xheW91dFRpbWVyLmlzQWN0
aXZlKCkpCkBAIC0yMzQyLDcgKzIzNDIsNyBAQCB2b2lkIEZyYW1lVmlldzo6c2NoZWR1bGVSZWxh
eW91dCgpCiAgICAgbV9kZWxheWVkTGF5b3V0ID0gZGVsYXkuY291bnQoKTsKIAogI2lmZGVmIElO
U1RSVU1FTlRfTEFZT1VUX1NDSEVEVUxJTkcKLSAgICBpZiAoIWZyYW1lKCkuZG9jdW1lbnQoKS0+
b3duZXJFbGVtZW50KCkpCisgICAgaWYgKCFmcmFtZSgpLmRvY3VtZW50KCkub3duZXJFbGVtZW50
KCkpCiAgICAgICAgIHByaW50ZigiU2NoZWR1bGluZyBsYXlvdXQgZm9yICVkXG4iLCBkZWxheSk7
CiAjZW5kaWYKIApAQCAtMjQ0OSw4ICsyNDQ5LDggQEAgdm9pZCBGcmFtZVZpZXc6OnVuc2NoZWR1
bGVSZWxheW91dCgpCiAgICAgICAgIHJldHVybjsKIAogI2lmZGVmIElOU1RSVU1FTlRfTEFZT1VU
X1NDSEVEVUxJTkcKLSAgICBpZiAoIWZyYW1lKCkuZG9jdW1lbnQoKS0+b3duZXJFbGVtZW50KCkp
Ci0gICAgICAgIHByaW50ZigiTGF5b3V0IHRpbWVyIHVuc2NoZWR1bGVkIGF0ICVkXG4iLCBmcmFt
ZSgpLmRvY3VtZW50KCktPmVsYXBzZWRUaW1lKCkpOworICAgIGlmICghZnJhbWUoKS5kb2N1bWVu
dCgpLm93bmVyRWxlbWVudCgpKQorICAgICAgICBwcmludGYoIkxheW91dCB0aW1lciB1bnNjaGVk
dWxlZCBhdCAlZFxuIiwgZnJhbWUoKS5kb2N1bWVudCgpLmVsYXBzZWRUaW1lKCkpOwogI2VuZGlm
CiAgICAgCiAgICAgbV9sYXlvdXRUaW1lci5zdG9wKCk7CkBAIC0yNjM4LDcgKzI2MzgsNyBAQCB2
b2lkIEZyYW1lVmlldzo6c2Nyb2xsVG9BbmNob3IoKQogICAgIC8vIEFsaWduIHRvIHRoZSB0b3Ag
YW5kIHRvIHRoZSBjbG9zZXN0IHNpZGUgKHRoaXMgbWF0Y2hlcyBvdGhlciBicm93c2VycykuCiAg
ICAgYW5jaG9yTm9kZS0+cmVuZGVyZXIoKS0+c2Nyb2xsUmVjdFRvVmlzaWJsZShyZWN0LCBTY3Jv
bGxBbGlnbm1lbnQ6OmFsaWduVG9FZGdlSWZOZWVkZWQsIFNjcm9sbEFsaWdubWVudDo6YWxpZ25U
b3BBbHdheXMpOwogCi0gICAgaWYgKEFYT2JqZWN0Q2FjaGUqIGNhY2hlID0gZnJhbWUoKS5kb2N1
bWVudCgpLT5leGlzdGluZ0FYT2JqZWN0Q2FjaGUoKSkKKyAgICBpZiAoQVhPYmplY3RDYWNoZSog
Y2FjaGUgPSBmcmFtZSgpLmRvY3VtZW50KCkuZXhpc3RpbmdBWE9iamVjdENhY2hlKCkpCiAgICAg
ICAgIGNhY2hlLT5oYW5kbGVTY3JvbGxlZFRvQW5jaG9yKGFuY2hvck5vZGUuZ2V0KCkpOwogCiAg
ICAgLy8gc2Nyb2xsUmVjdFRvVmlzaWJsZSBjYW4gY2FsbCBpbnRvIHNldFNjcm9sbFBvc2l0aW9u
KCksIHdoaWNoIHJlc2V0cyBtX21haW50YWluU2Nyb2xsUG9zaXRpb25BbmNob3IuCkBAIC0yNzI2
LDcgKzI3MjYsNyBAQCB2b2lkIEZyYW1lVmlldzo6cGVyZm9ybVBvc3RMYXlvdXRUYXNrcygpCiAg
ICAgZnJhbWUoKS5zZWxlY3Rpb24oKS5zZXRDYXJldFJlY3ROZWVkc1VwZGF0ZSgpOwogICAgIGZy
YW1lKCkuc2VsZWN0aW9uKCkudXBkYXRlQW5kUmV2ZWFsU2VsZWN0aW9uKCk7CiAKLSAgICBpZiAo
bV9uZXN0ZWRMYXlvdXRDb3VudCA8PSAxICYmIGZyYW1lKCkuZG9jdW1lbnQoKS0+ZG9jdW1lbnRF
bGVtZW50KCkpCisgICAgaWYgKG1fbmVzdGVkTGF5b3V0Q291bnQgPD0gMSAmJiBmcmFtZSgpLmRv
Y3VtZW50KCkuZG9jdW1lbnRFbGVtZW50KCkpCiAgICAgICAgIGZpcmVMYXlvdXRSZWxhdGVkTWls
ZXN0b25lc0lmTmVlZGVkKCk7CiAKICNpZiBQTEFURk9STShJT1MpCkBAIC0yNzM5LDcgKzI3Mzks
NyBAQCB2b2lkIEZyYW1lVmlldzo6cGVyZm9ybVBvc3RMYXlvdXRUYXNrcygpCiAKICNpZiBFTkFC
TEUoRk9OVF9MT0FEX0VWRU5UUykKICAgICBpZiAoUnVudGltZUVuYWJsZWRGZWF0dXJlczo6c2hh
cmVkRmVhdHVyZXMoKS5mb250TG9hZEV2ZW50c0VuYWJsZWQoKSkKLSAgICAgICAgZnJhbWUoKS5k
b2N1bWVudCgpLT5mb250bG9hZGVyKCktPmRpZExheW91dCgpOworICAgICAgICBmcmFtZSgpLmRv
Y3VtZW50KCkuZm9udGxvYWRlcigpLT5kaWRMYXlvdXQoKTsKICNlbmRpZgogICAgIAogICAgIC8v
IEZJWE1FOiBXZSBzaG91bGQgY29uc2lkZXIgYWRkaW5nIERpZExheW91dCBhcyBhIExheW91dE1p
bGVzdG9uZS4gVGhhdCB3b3VsZCBsZXQgdXMgbWVyZ2UgdGhpcwpAQCAtMjgxMSw5ICsyODExLDkg
QEAgdm9pZCBGcmFtZVZpZXc6OnNlbmRSZXNpemVFdmVudElmTmVlZGVkKCkKICAgICAvLyBJZiB3
ZSByZXNpemVkIGR1cmluZyBsYXlvdXQsIHF1ZXVlIHVwIGEgcmVzaXplIGV2ZW50IGZvciBsYXRl
ciwgb3RoZXJ3aXNlIGZpcmUgaXQgcmlnaHQgYXdheS4KICAgICBSZWZQdHI8RXZlbnQ+IHJlc2l6
ZUV2ZW50ID0gRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkucmVzaXplRXZlbnQsIGZhbHNlLCBm
YWxzZSk7CiAgICAgaWYgKGNhblNlbmRSZXNpemVFdmVudFN5bmNocm9ub3VzbHkpCi0gICAgICAg
IGZyYW1lKCkuZG9jdW1lbnQoKS0+ZGlzcGF0Y2hXaW5kb3dFdmVudChyZXNpemVFdmVudC5yZWxl
YXNlKCksIGZyYW1lKCkuZG9jdW1lbnQoKS0+ZG9tV2luZG93KCkpOworICAgICAgICBmcmFtZSgp
LmRvY3VtZW50KCkuZGlzcGF0Y2hXaW5kb3dFdmVudChyZXNpemVFdmVudC5yZWxlYXNlKCksIGZy
YW1lKCkuZG9jdW1lbnQoKS5kb21XaW5kb3coKSk7CiAgICAgZWxzZQotICAgICAgICBmcmFtZSgp
LmRvY3VtZW50KCktPmVucXVldWVXaW5kb3dFdmVudChyZXNpemVFdmVudC5yZWxlYXNlKCkpOwor
ICAgICAgICBmcmFtZSgpLmRvY3VtZW50KCkuZW5xdWV1ZVdpbmRvd0V2ZW50KHJlc2l6ZUV2ZW50
LnJlbGVhc2UoKSk7CiAKICNpZiBFTkFCTEUoSU5TUEVDVE9SKQogICAgIFBhZ2UqIHBhZ2UgPSBm
cmFtZSgpLnBhZ2UoKTsKQEAgLTI5NzMsNyArMjk3Myw3IEBAIHZvaWQgRnJhbWVWaWV3Ojp1cGRh
dGVPdmVyZmxvd1N0YXR1cyhib29sIGhvcml6b250YWxPdmVyZmxvdywgYm9vbCB2ZXJ0aWNhbE92
ZXJmCiAgICAgICAgICAgICB2ZXJ0aWNhbE92ZXJmbG93Q2hhbmdlZCwgdmVydGljYWxPdmVyZmxv
dyk7CiAgICAgICAgIG92ZXJmbG93RXZlbnQtPnNldFRhcmdldChtX3ZpZXdwb3J0UmVuZGVyZXIt
PmVsZW1lbnQoKSk7CiAKLSAgICAgICAgZnJhbWUoKS5kb2N1bWVudCgpLT5lbnF1ZXVlT3ZlcmZs
b3dFdmVudChvdmVyZmxvd0V2ZW50LnJlbGVhc2UoKSk7CisgICAgICAgIGZyYW1lKCkuZG9jdW1l
bnQoKS5lbnF1ZXVlT3ZlcmZsb3dFdmVudChvdmVyZmxvd0V2ZW50LnJlbGVhc2UoKSk7CiAgICAg
fQogICAgIAogfQpAQCAtMjk5Niw3ICsyOTk2LDcgQEAgdm9pZCBGcmFtZVZpZXc6OnNldFBhZ2lu
YXRpb24oY29uc3QgUGFnaW5hdGlvbiYgcGFnaW5hdGlvbikKIAogICAgIG1fcGFnaW5hdGlvbiA9
IHBhZ2luYXRpb247CiAKLSAgICBmcmFtZSgpLmRvY3VtZW50KCktPnN0eWxlUmVzb2x2ZXJDaGFu
Z2VkKERlZmVyUmVjYWxjU3R5bGUpOworICAgIGZyYW1lKCkuZG9jdW1lbnQoKS5zdHlsZVJlc29s
dmVyQ2hhbmdlZChEZWZlclJlY2FsY1N0eWxlKTsKIH0KIAogSW50UmVjdCBGcmFtZVZpZXc6Ondp
bmRvd0NsaXBSZWN0KGJvb2wgY2xpcFRvQ29udGVudHMpIGNvbnN0CkBAIC0zMzAyLDggKzMzMDIs
OCBAQCBDb2xvciBGcmFtZVZpZXc6OmRvY3VtZW50QmFja2dyb3VuZENvbG9yKCkgY29uc3QKICAg
ICBpZiAoIWZyYW1lKCkuZG9jdW1lbnQoKSkKICAgICAgICAgcmV0dXJuIENvbG9yKCk7CiAKLSAg
ICBFbGVtZW50KiBodG1sRWxlbWVudCA9IGZyYW1lKCkuZG9jdW1lbnQoKS0+ZG9jdW1lbnRFbGVt
ZW50KCk7Ci0gICAgRWxlbWVudCogYm9keUVsZW1lbnQgPSBmcmFtZSgpLmRvY3VtZW50KCktPmJv
ZHkoKTsKKyAgICBFbGVtZW50KiBodG1sRWxlbWVudCA9IGZyYW1lKCkuZG9jdW1lbnQoKS5kb2N1
bWVudEVsZW1lbnQoKTsKKyAgICBFbGVtZW50KiBib2R5RWxlbWVudCA9IGZyYW1lKCkuZG9jdW1l
bnQoKS5ib2R5KCk7CiAKICAgICAvLyBTdGFydCB3aXRoIGludmFsaWQgY29sb3JzLgogICAgIENv
bG9yIGh0bWxCYWNrZ3JvdW5kQ29sb3I7CkBAIC0zNDAyLDcgKzM0MDIsNyBAQCB2b2lkIEZyYW1l
Vmlldzo6c3RhcnRMYXlvdXRBdE1haW5GcmFtZVZpZXdJZk5lZWRlZChib29sIGFsbG93U3VidHJl
ZSkKIAogICAgIHBhcmVudFZpZXctPmxheW91dChhbGxvd1N1YnRyZWUpOwogCi0gICAgUmVuZGVy
RWxlbWVudCogcm9vdCA9IG1fbGF5b3V0Um9vdCA/IG1fbGF5b3V0Um9vdCA6IGZyYW1lKCkuZG9j
dW1lbnQoKS0+cmVuZGVyVmlldygpOworICAgIFJlbmRlckVsZW1lbnQqIHJvb3QgPSBtX2xheW91
dFJvb3QgPyBtX2xheW91dFJvb3QgOiBmcmFtZSgpLmRvY3VtZW50KCkucmVuZGVyVmlldygpOwog
ICAgIEFTU0VSVF9VTlVTRUQocm9vdCwgIXJvb3QtPm5lZWRzTGF5b3V0KCkpOwogfQogCkBAIC0z
NDE0LDcgKzM0MTQsNyBAQCB2b2lkIEZyYW1lVmlldzo6dXBkYXRlQ29udHJvbFRpbnRzKCkKICAg
ICAvLyB0byBkZWZpbmUgd2hlbiBjb250cm9scyBnZXQgdGhlIHRpbnQgYW5kIHRvIGNhbGwgdGhp
cyBmdW5jdGlvbiB3aGVuIHRoYXQgY2hhbmdlcy4KICAgICAKICAgICAvLyBPcHRpbWl6ZSB0aGUg
Y29tbW9uIGNhc2Ugd2hlcmUgd2UgYnJpbmcgYSB3aW5kb3cgdG8gdGhlIGZyb250IHdoaWxlIGl0
J3Mgc3RpbGwgZW1wdHkuCi0gICAgaWYgKGZyYW1lKCkuZG9jdW1lbnQoKS0+dXJsKCkuaXNFbXB0
eSgpKQorICAgIGlmIChmcmFtZSgpLmRvY3VtZW50KCkudXJsKCkuaXNFbXB0eSgpKQogICAgICAg
ICByZXR1cm47CiAKICAgICBSZW5kZXJWaWV3KiByZW5kZXJWaWV3ID0gdGhpcy0+cmVuZGVyVmll
dygpOwpAQCAtMzUxMCw3ICszNTEwLDcgQEAgdm9pZCBGcmFtZVZpZXc6OmRpZFBhaW50Q29udGVu
dHMoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiBkaXJ0eVIKIAogICAg
IC8vIFJlZ2lvbnMgbWF5IGhhdmUgY2hhbmdlZCBhcyBhIHJlc3VsdCBvZiB0aGUgdmlzaWJpbGl0
eS96LWluZGV4IG9mIGVsZW1lbnQgY2hhbmdpbmcuCiAjaWYgRU5BQkxFKERBU0hCT0FSRF9TVVBQ
T1JUKQotICAgIGlmIChmcmFtZSgpLmRvY3VtZW50KCktPmFubm90YXRlZFJlZ2lvbnNEaXJ0eSgp
KQorICAgIGlmIChmcmFtZSgpLmRvY3VtZW50KCkuYW5ub3RhdGVkUmVnaW9uc0RpcnR5KCkpCiAg
ICAgICAgIHVwZGF0ZUFubm90YXRlZFJlZ2lvbnMoKTsKICNlbmRpZgogCkBAIC0zNTI4LDcgKzM1
MjgsNyBAQCB2b2lkIEZyYW1lVmlldzo6cGFpbnRDb250ZW50cyhHcmFwaGljc0NvbnRleHQqIGNv
bnRleHQsIGNvbnN0IEludFJlY3QmIGRpcnR5UmVjdAogewogI2lmbmRlZiBOREVCVUcKICAgICBi
b29sIGZpbGxXaXRoUmVkOwotICAgIGlmIChmcmFtZSgpLmRvY3VtZW50KCktPnByaW50aW5nKCkp
CisgICAgaWYgKGZyYW1lKCkuZG9jdW1lbnQoKS5wcmludGluZygpKQogICAgICAgICBmaWxsV2l0
aFJlZCA9IGZhbHNlOyAvLyBQcmludGluZywgZG9uJ3QgZmlsbCB3aXRoIHJlZCAoY2FuJ3QgcmVt
ZW1iZXIgd2h5KS4KICAgICBlbHNlIGlmIChmcmFtZSgpLm93bmVyRWxlbWVudCgpKQogICAgICAg
ICBmaWxsV2l0aFJlZCA9IGZhbHNlOyAvLyBTdWJmcmFtZSwgZG9uJ3QgZmlsbCB3aXRoIHJlZC4K
QEAgLTM2MzcsNyArMzYzNyw3IEBAIHZvaWQgRnJhbWVWaWV3OjpwYWludE92ZXJoYW5nQXJlYXMo
R3JhcGhpY3NDb250ZXh0KiBjb250ZXh0LCBjb25zdCBJbnRSZWN0JiBob3JpCiAgICAgaWYgKGNv
bnRleHQtPnBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKGZy
YW1lKCkuZG9jdW1lbnQoKS0+cHJpbnRpbmcoKSkKKyAgICBpZiAoZnJhbWUoKS5kb2N1bWVudCgp
LnByaW50aW5nKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIFNjcm9sbFZpZXc6OnBhaW50T3Zl
cmhhbmdBcmVhcyhjb250ZXh0LCBob3Jpem9udGFsT3ZlcmhhbmdBcmVhLCB2ZXJ0aWNhbE92ZXJo
YW5nQXJlYSwgZGlydHlSZWN0KTsKQEAgLTM2NTQsNyArMzY1NCw3IEBAIHZvaWQgRnJhbWVWaWV3
Ojp1cGRhdGVMYXlvdXRBbmRTdHlsZUlmTmVlZGVkUmVjdXJzaXZlKCkKICAgICAvLyByZWdpb24g
YnV0IHRoZW4gYmVjb21lIGluY2x1ZGVkIGxhdGVyIGJ5IHRoZSBzZWNvbmQgZnJhbWUgYWRkaW5n
IHJlY3RzIHRvIHRoZSBkaXJ0eSByZWdpb24KICAgICAvLyB3aGVuIGl0IGxheXMgb3V0LgogCi0g
ICAgZnJhbWUoKS5kb2N1bWVudCgpLT51cGRhdGVTdHlsZUlmTmVlZGVkKCk7CisgICAgZnJhbWUo
KS5kb2N1bWVudCgpLnVwZGF0ZVN0eWxlSWZOZWVkZWQoKTsKIAogICAgIGlmIChuZWVkc0xheW91
dCgpKQogICAgICAgICBsYXlvdXQoKTsKQEAgLTM2ODEsMTIgKzM2ODEsMTIgQEAgdm9pZCBGcmFt
ZVZpZXc6OnVwZGF0ZUxheW91dEFuZFN0eWxlSWZOZWVkZWRSZWN1cnNpdmUoKQogYm9vbCBGcmFt
ZVZpZXc6OnF1YWxpZmllc0FzVmlzdWFsbHlOb25FbXB0eSgpIGNvbnN0CiB7CiAgICAgLy8gTm8g
Y29udGVudCB5ZXQuCi0gICAgRWxlbWVudCogZG9jdW1lbnRFbGVtZW50ID0gZnJhbWUoKS5kb2N1
bWVudCgpLT5kb2N1bWVudEVsZW1lbnQoKTsKKyAgICBFbGVtZW50KiBkb2N1bWVudEVsZW1lbnQg
PSBmcmFtZSgpLmRvY3VtZW50KCkuZG9jdW1lbnRFbGVtZW50KCk7CiAgICAgaWYgKCFkb2N1bWVu
dEVsZW1lbnQgfHwgIWRvY3VtZW50RWxlbWVudC0+cmVuZGVyZXIoKSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogCiAgICAgLy8gRW5zdXJlIHRoYXQgd2UgYWx3YXlzIGdldCBtYXJrZWQgdmlzdWFs
bHkgbm9uLWVtcHR5IGV2ZW50dWFsbHkuCi0gICAgaWYgKCFmcmFtZSgpLmRvY3VtZW50KCktPnBh
cnNpbmcoKSAmJiBmcmFtZSgpLmxvYWRlcigpLnN0YXRlTWFjaGluZSgpLmNvbW1pdHRlZEZpcnN0
UmVhbERvY3VtZW50TG9hZCgpKQorICAgIGlmICghZnJhbWUoKS5kb2N1bWVudCgpLnBhcnNpbmco
KSAmJiBmcmFtZSgpLmxvYWRlcigpLnN0YXRlTWFjaGluZSgpLmNvbW1pdHRlZEZpcnN0UmVhbERv
Y3VtZW50TG9hZCgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIC8vIFJlcXVpcmUgdGhl
IGRvY3VtZW50IHRvIGdyb3cgYSBiaXQuCkBAIC0zOTY1LDcgKzM5NjUsNyBAQCB2b2lkIEZyYW1l
Vmlldzo6c2V0VHJhY2tzUmVwYWludHMoYm9vbCB0cmFja1JlcGFpbnRzKQogICAgIC8vIEZvcmNl
IGxheW91dCB0byBmbHVzaCBvdXQgYW55IHBlbmRpbmcgcmVwYWludHMuCiAgICAgaWYgKHRyYWNr
UmVwYWludHMpIHsKICAgICAgICAgaWYgKGZyYW1lKCkuZG9jdW1lbnQoKSkKLSAgICAgICAgICAg
IGZyYW1lKCkuZG9jdW1lbnQoKS0+dXBkYXRlTGF5b3V0KCk7CisgICAgICAgICAgICBmcmFtZSgp
LmRvY3VtZW50KCkudXBkYXRlTGF5b3V0KCk7CiAgICAgfQogCiAgICAgZm9yIChGcmFtZSogZnJh
bWUgPSAmbV9mcmFtZS0+dHJlZSgpLnRvcCgpOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgp
LnRyYXZlcnNlTmV4dCgpKSB7CkBAIC0zOTg3LDcgKzM5ODcsNyBAQCB2b2lkIEZyYW1lVmlldzo6
cmVzZXRUcmFja2VkUmVwYWludHMoKQogU3RyaW5nIEZyYW1lVmlldzo6dHJhY2tlZFJlcGFpbnRS
ZWN0c0FzVGV4dCgpIGNvbnN0CiB7CiAgICAgaWYgKGZyYW1lKCkuZG9jdW1lbnQoKSkKLSAgICAg
ICAgZnJhbWUoKS5kb2N1bWVudCgpLT51cGRhdGVMYXlvdXQoKTsKKyAgICAgICAgZnJhbWUoKS5k
b2N1bWVudCgpLnVwZGF0ZUxheW91dCgpOwogCiAgICAgVGV4dFN0cmVhbSB0czsKICAgICBpZiAo
IW1fdHJhY2tlZFJlcGFpbnRSZWN0cy5pc0VtcHR5KCkpIHsKQEAgLTQwOTQsNyArNDA5NCw3IEBA
IHZvaWQgRnJhbWVWaWV3Ojpub3RpZnlXaWRnZXRzSW5BbGxGcmFtZXMoV2lkZ2V0Tm90aWZpY2F0
aW9uIG5vdGlmaWNhdGlvbikKIEFYT2JqZWN0Q2FjaGUqIEZyYW1lVmlldzo6YXhPYmplY3RDYWNo
ZSgpIGNvbnN0CiB7CiAgICAgaWYgKGZyYW1lKCkuZG9jdW1lbnQoKSkKLSAgICAgICAgcmV0dXJu
IGZyYW1lKCkuZG9jdW1lbnQoKS0+ZXhpc3RpbmdBWE9iamVjdENhY2hlKCk7CisgICAgICAgIHJl
dHVybiBmcmFtZSgpLmRvY3VtZW50KCkuZXhpc3RpbmdBWE9iamVjdENhY2hlKCk7CiAgICAgcmV0
dXJuIDA7CiB9CiAgICAgCkBAIC00MTgxLDcgKzQxODEsNyBAQCB2b2lkIEZyYW1lVmlldzo6Zmly
ZUxheW91dFJlbGF0ZWRNaWxlc3RvbmVzSWZOZWVkZWQoKQogICAgIHVwZGF0ZUlzVmlzdWFsbHlO
b25FbXB0eSgpOwogCiAgICAgLy8gSWYgdGhlIGxheW91dCB3YXMgZG9uZSB3aXRoIHBlbmRpbmcg
c2hlZXRzLCB3ZSBhcmUgbm90IGluIGZhY3QgdmlzdWFsbHkgbm9uLWVtcHR5IHlldC4KLSAgICBp
ZiAobV9pc1Zpc3VhbGx5Tm9uRW1wdHkgJiYgIWZyYW1lKCkuZG9jdW1lbnQoKS0+ZGlkTGF5b3V0
V2l0aFBlbmRpbmdTdHlsZXNoZWV0cygpICYmIG1fZmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0
Q2FsbGJhY2tQZW5kaW5nKSB7CisgICAgaWYgKG1faXNWaXN1YWxseU5vbkVtcHR5ICYmICFmcmFt
ZSgpLmRvY3VtZW50KCkuZGlkTGF5b3V0V2l0aFBlbmRpbmdTdHlsZXNoZWV0cygpICYmIG1fZmly
c3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0Q2FsbGJhY2tQZW5kaW5nKSB7CiAgICAgICAgIG1fZmly
c3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0Q2FsbGJhY2tQZW5kaW5nID0gZmFsc2U7CiAgICAgICAg
IGlmIChyZXF1ZXN0ZWRNaWxlc3RvbmVzICYgRGlkRmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0
KQogICAgICAgICAgICAgbWlsZXN0b25lc0FjaGlldmVkIHw9IERpZEZpcnN0VmlzdWFsbHlOb25F
bXB0eUxheW91dDsKQEAgLTQyMjMsNyArNDIyMyw3IEBAIHZvaWQgRnJhbWVWaWV3OjpzZXRWaXN1
YWxVcGRhdGVzQWxsb3dlZEJ5Q2xpZW50KGJvb2wgdmlzdWFsVXBkYXRlc0FsbG93ZWQpCiAKICAg
ICBtX3Zpc3VhbFVwZGF0ZXNBbGxvd2VkQnlDbGllbnQgPSB2aXN1YWxVcGRhdGVzQWxsb3dlZDsK
IAotICAgIGZyYW1lKCkuZG9jdW1lbnQoKS0+c2V0VmlzdWFsVXBkYXRlc0FsbG93ZWRCeUNsaWVu
dCh2aXN1YWxVcGRhdGVzQWxsb3dlZCk7CisgICAgZnJhbWUoKS5kb2N1bWVudCgpLnNldFZpc3Vh
bFVwZGF0ZXNBbGxvd2VkQnlDbGllbnQodmlzdWFsVXBkYXRlc0FsbG93ZWQpOwogfQogICAgIAog
dm9pZCBGcmFtZVZpZXc6OnNldFNjcm9sbFBpbm5pbmdCZWhhdmlvcihTY3JvbGxQaW5uaW5nQmVo
YXZpb3IgcGlubmluZykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvSGlzdG9yeS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0hpc3RvcnkuY3BwCmluZGV4IDU2N2FiMjYuLjRiMTRm
ZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvSGlzdG9yeS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9IaXN0b3J5LmNwcApAQCAtMTI5LDcgKzEyOSw3IEBAIHZvaWQgSGlz
dG9yeTo6Z28oU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgaW50IGRpc3RhbmNlKQog
CiBVUkwgSGlzdG9yeTo6dXJsRm9yU3RhdGUoY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcpCiB7Ci0g
ICAgVVJMIGJhc2VVUkwgPSBtX2ZyYW1lLT5kb2N1bWVudCgpLT5iYXNlVVJMKCk7CisgICAgVVJM
IGJhc2VVUkwgPSBtX2ZyYW1lLT5kb2N1bWVudCgpLmJhc2VVUkwoKTsKICAgICBpZiAodXJsU3Ry
aW5nLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIGJhc2VVUkw7CiAKQEAgLTE0Miw3ICsxNDIs
NyBAQCB2b2lkIEhpc3Rvcnk6OnN0YXRlT2JqZWN0QWRkZWQoUGFzc1JlZlB0cjxTZXJpYWxpemVk
U2NyaXB0VmFsdWU+IGRhdGEsIGNvbnN0IFN0cgogICAgICAgICByZXR1cm47CiAgICAgCiAgICAg
VVJMIGZ1bGxVUkwgPSB1cmxGb3JTdGF0ZSh1cmxTdHJpbmcpOwotICAgIGlmICghZnVsbFVSTC5p
c1ZhbGlkKCkgfHwgIW1fZnJhbWUtPmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCktPmNhblJl
cXVlc3QoZnVsbFVSTCkpIHsKKyAgICBpZiAoIWZ1bGxVUkwuaXNWYWxpZCgpIHx8ICFtX2ZyYW1l
LT5kb2N1bWVudCgpLnNlY3VyaXR5T3JpZ2luKCktPmNhblJlcXVlc3QoZnVsbFVSTCkpIHsKICAg
ICAgICAgZWMgPSBTRUNVUklUWV9FUlI7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0xNTMs
NyArMTUzLDcgQEAgdm9pZCBIaXN0b3J5OjpzdGF0ZU9iamVjdEFkZGVkKFBhc3NSZWZQdHI8U2Vy
aWFsaXplZFNjcmlwdFZhbHVlPiBkYXRhLCBjb25zdCBTdHIKICAgICAgICAgbV9mcmFtZS0+bG9h
ZGVyKCkuaGlzdG9yeSgpLnJlcGxhY2VTdGF0ZShkYXRhLCB0aXRsZSwgZnVsbFVSTC5zdHJpbmco
KSk7CiAgICAgICAgICAgICAKICAgICBpZiAoIXVybFN0cmluZy5pc0VtcHR5KCkpCi0gICAgICAg
IG1fZnJhbWUtPmRvY3VtZW50KCktPnVwZGF0ZVVSTEZvclB1c2hPclJlcGxhY2VTdGF0ZShmdWxs
VVJMKTsKKyAgICAgICAgbV9mcmFtZS0+ZG9jdW1lbnQoKS51cGRhdGVVUkxGb3JQdXNoT3JSZXBs
YWNlU3RhdGUoZnVsbFVSTCk7CiAKICAgICBpZiAoc3RhdGVPYmplY3RUeXBlID09IFN0YXRlT2Jq
ZWN0VHlwZTo6UHVzaCkKICAgICAgICAgbV9mcmFtZS0+bG9hZGVyKCkuY2xpZW50KCkuZGlzcGF0
Y2hEaWRQdXNoU3RhdGVXaXRoaW5QYWdlKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0xvY2F0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTG9jYXRpb24uY3BwCmluZGV4
IDQ0ZjUyMjAuLjM5NDU5ZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTG9jYXRp
b24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTG9jYXRpb24uY3BwCkBAIC00OCw3ICs0
OCw3IEBAIGlubGluZSBjb25zdCBVUkwmIExvY2F0aW9uOjp1cmwoKSBjb25zdAogewogICAgIEFT
U0VSVChtX2ZyYW1lKTsKIAotICAgIGNvbnN0IFVSTCYgdXJsID0gbV9mcmFtZS0+ZG9jdW1lbnQo
KS0+dXJsKCk7CisgICAgY29uc3QgVVJMJiB1cmwgPSBtX2ZyYW1lLT5kb2N1bWVudCgpLnVybCgp
OwogICAgIGlmICghdXJsLmlzVmFsaWQoKSkKICAgICAgICAgcmV0dXJuIGJsYW5rVVJMKCk7IC8v
IFVzZSAiYWJvdXQ6YmxhbmsiIHdoaWxlIHRoZSBwYWdlIGlzIHN0aWxsIGxvYWRpbmcgKGJlZm9y
ZSB3ZSBoYXZlIGEgZnJhbWUpLgogCkBAIC0xMzAsNyArMTMwLDcgQEAgUGFzc1JlZlB0cjxET01T
dHJpbmdMaXN0PiBMb2NhdGlvbjo6YW5jZXN0b3JPcmlnaW5zKCkgY29uc3QKICAgICBpZiAoIW1f
ZnJhbWUpCiAgICAgICAgIHJldHVybiBvcmlnaW5zLnJlbGVhc2UoKTsKICAgICBmb3IgKEZyYW1l
KiBmcmFtZSA9IG1fZnJhbWUtPnRyZWUoKS5wYXJlbnQoKTsgZnJhbWU7IGZyYW1lID0gZnJhbWUt
PnRyZWUoKS5wYXJlbnQoKSkKLSAgICAgICAgb3JpZ2lucy0+YXBwZW5kKGZyYW1lLT5kb2N1bWVu
dCgpLT5zZWN1cml0eU9yaWdpbigpLT50b1N0cmluZygpKTsKKyAgICAgICAgb3JpZ2lucy0+YXBw
ZW5kKGZyYW1lLT5kb2N1bWVudCgpLnNlY3VyaXR5T3JpZ2luKCktPnRvU3RyaW5nKCkpOwogICAg
IHJldHVybiBvcmlnaW5zLnJlbGVhc2UoKTsKIH0KIApAQCAtMTU0LDcgKzE1NCw3IEBAIHZvaWQg
TG9jYXRpb246OnNldFByb3RvY29sKGNvbnN0IFN0cmluZyYgcHJvdG9jb2wsIERPTVdpbmRvdyYg
YWN0aXZlV2luZG93LCBET01XCiB7CiAgICAgaWYgKCFtX2ZyYW1lKQogICAgICAgICByZXR1cm47
Ci0gICAgVVJMIHVybCA9IG1fZnJhbWUtPmRvY3VtZW50KCktPnVybCgpOworICAgIFVSTCB1cmwg
PSBtX2ZyYW1lLT5kb2N1bWVudCgpLnVybCgpOwogICAgIGlmICghdXJsLnNldFByb3RvY29sKHBy
b3RvY29sKSkgewogICAgICAgICBlYyA9IFNZTlRBWF9FUlI7CiAgICAgICAgIHJldHVybjsKQEAg
LTE2Niw3ICsxNjYsNyBAQCB2b2lkIExvY2F0aW9uOjpzZXRIb3N0KGNvbnN0IFN0cmluZyYgaG9z
dCwgRE9NV2luZG93JiBhY3RpdmVXaW5kb3csIERPTVdpbmRvdyYgZgogewogICAgIGlmICghbV9m
cmFtZSkKICAgICAgICAgcmV0dXJuOwotICAgIFVSTCB1cmwgPSBtX2ZyYW1lLT5kb2N1bWVudCgp
LT51cmwoKTsKKyAgICBVUkwgdXJsID0gbV9mcmFtZS0+ZG9jdW1lbnQoKS51cmwoKTsKICAgICB1
cmwuc2V0SG9zdEFuZFBvcnQoaG9zdCk7CiAgICAgc2V0TG9jYXRpb24odXJsLnN0cmluZygpLCBh
Y3RpdmVXaW5kb3csIGZpcnN0V2luZG93KTsKIH0KQEAgLTE3NSw3ICsxNzUsNyBAQCB2b2lkIExv
Y2F0aW9uOjpzZXRIb3N0bmFtZShjb25zdCBTdHJpbmcmIGhvc3RuYW1lLCBET01XaW5kb3cmIGFj
dGl2ZVdpbmRvdywgRE9NVwogewogICAgIGlmICghbV9mcmFtZSkKICAgICAgICAgcmV0dXJuOwot
ICAgIFVSTCB1cmwgPSBtX2ZyYW1lLT5kb2N1bWVudCgpLT51cmwoKTsKKyAgICBVUkwgdXJsID0g
bV9mcmFtZS0+ZG9jdW1lbnQoKS51cmwoKTsKICAgICB1cmwuc2V0SG9zdChob3N0bmFtZSk7CiAg
ICAgc2V0TG9jYXRpb24odXJsLnN0cmluZygpLCBhY3RpdmVXaW5kb3csIGZpcnN0V2luZG93KTsK
IH0KQEAgLTE4NCw3ICsxODQsNyBAQCB2b2lkIExvY2F0aW9uOjpzZXRQb3J0KGNvbnN0IFN0cmlu
ZyYgcG9ydFN0cmluZywgRE9NV2luZG93JiBhY3RpdmVXaW5kb3csIERPTVdpbgogewogICAgIGlm
ICghbV9mcmFtZSkKICAgICAgICAgcmV0dXJuOwotICAgIFVSTCB1cmwgPSBtX2ZyYW1lLT5kb2N1
bWVudCgpLT51cmwoKTsKKyAgICBVUkwgdXJsID0gbV9mcmFtZS0+ZG9jdW1lbnQoKS51cmwoKTsK
ICAgICBpbnQgcG9ydCA9IHBvcnRTdHJpbmcudG9JbnQoKTsKICAgICBpZiAocG9ydCA8IDAgfHwg
cG9ydCA+IDB4RkZGRiB8fCBwb3J0U3RyaW5nLmlzRW1wdHkoKSkKICAgICAgICAgdXJsLnJlbW92
ZVBvcnQoKTsKQEAgLTE5Nyw3ICsxOTcsNyBAQCB2b2lkIExvY2F0aW9uOjpzZXRQYXRobmFtZShj
b25zdCBTdHJpbmcmIHBhdGhuYW1lLCBET01XaW5kb3cmIGFjdGl2ZVdpbmRvdywgRE9NVwogewog
ICAgIGlmICghbV9mcmFtZSkKICAgICAgICAgcmV0dXJuOwotICAgIFVSTCB1cmwgPSBtX2ZyYW1l
LT5kb2N1bWVudCgpLT51cmwoKTsKKyAgICBVUkwgdXJsID0gbV9mcmFtZS0+ZG9jdW1lbnQoKS51
cmwoKTsKICAgICB1cmwuc2V0UGF0aChwYXRobmFtZSk7CiAgICAgc2V0TG9jYXRpb24odXJsLnN0
cmluZygpLCBhY3RpdmVXaW5kb3csIGZpcnN0V2luZG93KTsKIH0KQEAgLTIwNiw3ICsyMDYsNyBA
QCB2b2lkIExvY2F0aW9uOjpzZXRTZWFyY2goY29uc3QgU3RyaW5nJiBzZWFyY2gsIERPTVdpbmRv
dyYgYWN0aXZlV2luZG93LCBET01XaW5kbwogewogICAgIGlmICghbV9mcmFtZSkKICAgICAgICAg
cmV0dXJuOwotICAgIFVSTCB1cmwgPSBtX2ZyYW1lLT5kb2N1bWVudCgpLT51cmwoKTsKKyAgICBV
UkwgdXJsID0gbV9mcmFtZS0+ZG9jdW1lbnQoKS51cmwoKTsKICAgICB1cmwuc2V0UXVlcnkoc2Vh
cmNoKTsKICAgICBzZXRMb2NhdGlvbih1cmwuc3RyaW5nKCksIGFjdGl2ZVdpbmRvdywgZmlyc3RX
aW5kb3cpOwogfQpAQCAtMjE1LDcgKzIxNSw3IEBAIHZvaWQgTG9jYXRpb246OnNldEhhc2goY29u
c3QgU3RyaW5nJiBoYXNoLCBET01XaW5kb3cmIGFjdGl2ZVdpbmRvdywgRE9NV2luZG93JiBmCiB7
CiAgICAgaWYgKCFtX2ZyYW1lKQogICAgICAgICByZXR1cm47Ci0gICAgVVJMIHVybCA9IG1fZnJh
bWUtPmRvY3VtZW50KCktPnVybCgpOworICAgIFVSTCB1cmwgPSBtX2ZyYW1lLT5kb2N1bWVudCgp
LnVybCgpOwogICAgIFN0cmluZyBvbGRGcmFnbWVudElkZW50aWZpZXIgPSB1cmwuZnJhZ21lbnRJ
ZGVudGlmaWVyKCk7CiAgICAgU3RyaW5nIG5ld0ZyYWdtZW50SWRlbnRpZmllciA9IGhhc2g7CiAg
ICAgaWYgKGhhc2hbMF0gPT0gJyMnKQpAQCAtMjQxLDcgKzI0MSw3IEBAIHZvaWQgTG9jYXRpb246
OnJlcGxhY2UoY29uc3QgU3RyaW5nJiB1cmwsIERPTVdpbmRvdyYgYWN0aXZlV2luZG93LCBET01X
aW5kb3cmIGZpCiAgICAgaWYgKCFtX2ZyYW1lKQogICAgICAgICByZXR1cm47CiAgICAgLy8gTm90
ZTogV2UgY2FsbCBET01XaW5kb3c6OnNldExvY2F0aW9uIGRpcmVjdGx5IGhlcmUgYmVjYXVzZSBy
ZXBsYWNlKCkgYWx3YXlzIG9wZXJhdGVzIG9uIHRoZSBjdXJyZW50IGZyYW1lLgotICAgIG1fZnJh
bWUtPmRvY3VtZW50KCktPmRvbVdpbmRvdygpLT5zZXRMb2NhdGlvbih1cmwsIGFjdGl2ZVdpbmRv
dywgZmlyc3RXaW5kb3csIExvY2tIaXN0b3J5QW5kQmFja0ZvcndhcmRMaXN0KTsKKyAgICBtX2Zy
YW1lLT5kb2N1bWVudCgpLmRvbVdpbmRvdygpLT5zZXRMb2NhdGlvbih1cmwsIGFjdGl2ZVdpbmRv
dywgZmlyc3RXaW5kb3csIExvY2tIaXN0b3J5QW5kQmFja0ZvcndhcmRMaXN0KTsKIH0KIAogdm9p
ZCBMb2NhdGlvbjo6cmVsb2FkKERPTVdpbmRvdyYgYWN0aXZlV2luZG93KQpAQCAtMjUxLDEyICsy
NTEsMTIgQEAgdm9pZCBMb2NhdGlvbjo6cmVsb2FkKERPTVdpbmRvdyYgYWN0aXZlV2luZG93KQog
ICAgIC8vIEZJWE1FOiBJdCdzIG5vdCBjbGVhciB0aGlzIGNyb3NzLW9yaWdpbiBzZWN1cml0eSBj
aGVjayBpcyB2YWx1YWJsZS4KICAgICAvLyBXZSBhbGxvdyBvbmUgcGFnZSB0byBjaGFuZ2UgdGhl
IGxvY2F0aW9uIG9mIGFub3RoZXIuIFdoeSBibG9jayBhdHRlbXB0cyB0byByZWxvYWQ/CiAgICAg
Ly8gT3RoZXIgbG9jYXRpb24gb3BlcmF0aW9ucyBzaW1wbHkgYmxvY2sgdXNlIG9mIEphdmFTY3Jp
cHQgVVJMcyBjcm9zcyBvcmlnaW4uCi0gICAgRE9NV2luZG93KiB0YXJnZXRXaW5kb3cgPSBtX2Zy
YW1lLT5kb2N1bWVudCgpLT5kb21XaW5kb3coKTsKLSAgICBpZiAoIWFjdGl2ZVdpbmRvdy5kb2N1
bWVudCgpLT5zZWN1cml0eU9yaWdpbigpLT5jYW5BY2Nlc3MobV9mcmFtZS0+ZG9jdW1lbnQoKS0+
c2VjdXJpdHlPcmlnaW4oKSkpIHsKKyAgICBET01XaW5kb3cqIHRhcmdldFdpbmRvdyA9IG1fZnJh
bWUtPmRvY3VtZW50KCkuZG9tV2luZG93KCk7CisgICAgaWYgKCFhY3RpdmVXaW5kb3cuZG9jdW1l
bnQoKS0+c2VjdXJpdHlPcmlnaW4oKS0+Y2FuQWNjZXNzKG1fZnJhbWUtPmRvY3VtZW50KCkuc2Vj
dXJpdHlPcmlnaW4oKSkpIHsKICAgICAgICAgdGFyZ2V0V2luZG93LT5wcmludEVycm9yTWVzc2Fn
ZSh0YXJnZXRXaW5kb3ctPmNyb3NzRG9tYWluQWNjZXNzRXJyb3JNZXNzYWdlKGFjdGl2ZVdpbmRv
dykpOwogICAgICAgICByZXR1cm47CiAgICAgfQotICAgIGlmIChwcm90b2NvbElzSmF2YVNjcmlw
dChtX2ZyYW1lLT5kb2N1bWVudCgpLT51cmwoKSkpCisgICAgaWYgKHByb3RvY29sSXNKYXZhU2Ny
aXB0KG1fZnJhbWUtPmRvY3VtZW50KCkudXJsKCkpKQogICAgICAgICByZXR1cm47CiAgICAgbV9m
cmFtZS0+bmF2aWdhdGlvblNjaGVkdWxlcigpLnNjaGVkdWxlUmVmcmVzaCgpOwogfQpAQCAtMjY3
LDcgKzI2Nyw3IEBAIHZvaWQgTG9jYXRpb246OnNldExvY2F0aW9uKGNvbnN0IFN0cmluZyYgdXJs
LCBET01XaW5kb3cmIGFjdGl2ZVdpbmRvdywgRE9NV2luZG93CiAgICAgRnJhbWUqIGZyYW1lID0g
bV9mcmFtZS0+bG9hZGVyKCkuZmluZEZyYW1lRm9yTmF2aWdhdGlvbihTdHJpbmcoKSwgYWN0aXZl
V2luZG93LmRvY3VtZW50KCkpOwogICAgIGlmICghZnJhbWUpCiAgICAgICAgIHJldHVybjsKLSAg
ICBmcmFtZS0+ZG9jdW1lbnQoKS0+ZG9tV2luZG93KCktPnNldExvY2F0aW9uKHVybCwgYWN0aXZl
V2luZG93LCBmaXJzdFdpbmRvdyk7CisgICAgZnJhbWUtPmRvY3VtZW50KCkuZG9tV2luZG93KCkt
PnNldExvY2F0aW9uKHVybCwgYWN0aXZlV2luZG93LCBmaXJzdFdpbmRvdyk7CiB9CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTmF2aWdh
dG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTmF2aWdhdG9yLmNwcAppbmRleCBiMmYxZWQ3
Li45ZTYxNWU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL05hdmlnYXRvci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9OYXZpZ2F0b3IuY3BwCkBAIC05MSw3ICs5MSw3IEBA
IFN0cmluZyBOYXZpZ2F0b3I6OnVzZXJBZ2VudCgpIGNvbnN0CiAgICAgaWYgKCFtX2ZyYW1lLT5w
YWdlKCkpCiAgICAgICAgIHJldHVybiBTdHJpbmcoKTsKICAgICAgICAgCi0gICAgcmV0dXJuIG1f
ZnJhbWUtPmxvYWRlcigpLnVzZXJBZ2VudChtX2ZyYW1lLT5kb2N1bWVudCgpLT51cmwoKSk7Cisg
ICAgcmV0dXJuIG1fZnJhbWUtPmxvYWRlcigpLnVzZXJBZ2VudChtX2ZyYW1lLT5kb2N1bWVudCgp
LnVybCgpKTsKIH0KIAogRE9NUGx1Z2luQXJyYXkqIE5hdmlnYXRvcjo6cGx1Z2lucygpIGNvbnN0
CkBAIC0xMTYsNyArMTE2LDcgQEAgYm9vbCBOYXZpZ2F0b3I6OmNvb2tpZUVuYWJsZWQoKSBjb25z
dAogICAgIGlmIChtX2ZyYW1lLT5wYWdlKCkgJiYgIW1fZnJhbWUtPnBhZ2UoKS0+c2V0dGluZ3Mo
KS5jb29raWVFbmFibGVkKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIHJldHVybiBj
b29raWVzRW5hYmxlZChtX2ZyYW1lLT5kb2N1bWVudCgpKTsKKyAgICByZXR1cm4gY29va2llc0Vu
YWJsZWQoJm1fZnJhbWUtPmRvY3VtZW50KCkpOwogfQogCiBib29sIE5hdmlnYXRvcjo6amF2YUVu
YWJsZWQoKSBjb25zdApAQCAtMTI2LDcgKzEyNiw3IEBAIGJvb2wgTmF2aWdhdG9yOjpqYXZhRW5h
YmxlZCgpIGNvbnN0CiAKICAgICBpZiAoIW1fZnJhbWUtPnNldHRpbmdzKCkuaXNKYXZhRW5hYmxl
ZCgpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgaWYgKG1fZnJhbWUtPmRvY3VtZW50KCkt
PnNlY3VyaXR5T3JpZ2luKCktPmlzTG9jYWwoKSAmJiAhbV9mcmFtZS0+c2V0dGluZ3MoKS5pc0ph
dmFFbmFibGVkRm9yTG9jYWxGaWxlcygpKQorICAgIGlmIChtX2ZyYW1lLT5kb2N1bWVudCgpLnNl
Y3VyaXR5T3JpZ2luKCktPmlzTG9jYWwoKSAmJiAhbV9mcmFtZS0+c2V0dGluZ3MoKS5pc0phdmFF
bmFibGVkRm9yTG9jYWxGaWxlcygpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICByZXR1
cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCmluZGV4IGM5MzVjMGIuLjE3MTRjMTkgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFn
ZS9QYWdlLmNwcApAQCAtMjYyLDE2ICsyNjIsMTYgQEAgdWludDY0X3QgUGFnZTo6cmVuZGVyVHJl
ZVNpemUoKSBjb25zdAogewogICAgIHVpbnQ2NF90IHRvdGFsID0gMDsKICAgICBmb3IgKGNvbnN0
IEZyYW1lKiBmcmFtZSA9ICZtYWluRnJhbWUoKTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyZWUo
KS50cmF2ZXJzZU5leHQoKSkgewotICAgICAgICBpZiAoIWZyYW1lLT5kb2N1bWVudCgpIHx8ICFm
cmFtZS0+ZG9jdW1lbnQoKS0+cmVuZGVyVmlldygpKQorICAgICAgICBpZiAoIWZyYW1lLT5kb2N1
bWVudCgpIHx8ICFmcmFtZS0+ZG9jdW1lbnQoKS5yZW5kZXJWaWV3KCkpCiAgICAgICAgICAgICBj
b250aW51ZTsKLSAgICAgICAgdG90YWwgKz0gZnJhbWUtPmRvY3VtZW50KCktPnJlbmRlclZpZXco
KS0+cmVuZGVyZXJDb3VudCgpOworICAgICAgICB0b3RhbCArPSBmcmFtZS0+ZG9jdW1lbnQoKS5y
ZW5kZXJWaWV3KCktPnJlbmRlcmVyQ291bnQoKTsKICAgICB9CiAgICAgcmV0dXJuIHRvdGFsOwog
fQogCiBWaWV3cG9ydEFyZ3VtZW50cyBQYWdlOjp2aWV3cG9ydEFyZ3VtZW50cygpIGNvbnN0CiB7
Ci0gICAgcmV0dXJuIG1haW5GcmFtZSgpLmRvY3VtZW50KCkgPyBtYWluRnJhbWUoKS5kb2N1bWVu
dCgpLT52aWV3cG9ydEFyZ3VtZW50cygpIDogVmlld3BvcnRBcmd1bWVudHMoKTsKKyAgICByZXR1
cm4gbWFpbkZyYW1lKCkuZG9jdW1lbnQoKSA/IG1haW5mcmFtZSgpLmRvY3VtZW50KCkudmlld3Bv
cnRBcmd1bWVudHMoKSA6IFZpZXdwb3J0QXJndW1lbnRzKCk7CiB9CiAKIFNjcm9sbGluZ0Nvb3Jk
aW5hdG9yKiBQYWdlOjpzY3JvbGxpbmdDb29yZGluYXRvcigpCkBAIC0zNTgsOCArMzU4LDggQEAg
dm9pZCBQYWdlOjpzZXRWaWV3TW9kZShWaWV3TW9kZSB2aWV3TW9kZSkKICAgICBpZiAobV9tYWlu
RnJhbWUtPnZpZXcoKSkKICAgICAgICAgbV9tYWluRnJhbWUtPnZpZXcoKS0+Zm9yY2VMYXlvdXQo
KTsKIAotICAgIGlmIChtX21haW5GcmFtZS0+ZG9jdW1lbnQoKSkKLSAgICAgICAgbV9tYWluRnJh
bWUtPmRvY3VtZW50KCktPnN0eWxlUmVzb2x2ZXJDaGFuZ2VkKFJlY2FsY1N0eWxlSW1tZWRpYXRl
bHkpOworICAgIGlmICgmbV9tYWluRnJhbWUtPmRvY3VtZW50KCkpCisgICAgICAgIG1fbWFpbkZy
YW1lLT5kb2N1bWVudCgpLnN0eWxlUmVzb2x2ZXJDaGFuZ2VkKFJlY2FsY1N0eWxlSW1tZWRpYXRl
bHkpOwogfQogI2VuZGlmIC8vIEVOQUJMRShWSUVXX01PREVfQ1NTX01FRElBKQogCkBAIC00MjUs
OSArNDI1LDkgQEAgdm9pZCBQYWdlOjp1cGRhdGVTdHlsZUZvckFsbFBhZ2VzQWZ0ZXJHbG9iYWxD
aGFuZ2VJbkVudmlyb25tZW50KCkKICAgICAgICAgICAgIC8vIElmIGEgY2hhbmdlIGluIHRoZSBn
bG9iYWwgZW52aXJvbm1lbnQgaGFzIG9jY3VycmVkLCB3ZSBuZWVkIHRvCiAgICAgICAgICAgICAv
LyBtYWtlIHN1cmUgYWxsIHRoZSBwcm9wZXJ0aWVzIGEgcmVjb21wdXRlZCwgdGhlcmVmb3JlIHdl
IGludmFsaWRhdGUKICAgICAgICAgICAgIC8vIHRoZSBwcm9wZXJ0aWVzIGNhY2hlLgotICAgICAg
ICAgICAgaWYgKFN0eWxlUmVzb2x2ZXIqIHN0eWxlUmVzb2x2ZXIgPSBmcmFtZS0+ZG9jdW1lbnQo
KS0+c3R5bGVSZXNvbHZlcklmRXhpc3RzKCkpCisgICAgICAgICAgICBpZiAoU3R5bGVSZXNvbHZl
ciogc3R5bGVSZXNvbHZlciA9IGZyYW1lLT5kb2N1bWVudCgpLnN0eWxlUmVzb2x2ZXJJZkV4aXN0
cygpKQogICAgICAgICAgICAgICAgIHN0eWxlUmVzb2x2ZXItPmludmFsaWRhdGVNYXRjaGVkUHJv
cGVydGllc0NhY2hlKCk7Ci0gICAgICAgICAgICBmcmFtZS0+ZG9jdW1lbnQoKS0+c2NoZWR1bGVG
b3JjZWRTdHlsZVJlY2FsYygpOworICAgICAgICAgICAgZnJhbWUtPmRvY3VtZW50KCkuc2NoZWR1
bGVGb3JjZWRTdHlsZVJlY2FsYygpOwogICAgICAgICB9CiB9CiAKQEAgLTQ3NSw3ICs0NzUsNyBA
QCBQbHVnaW5EYXRhJiBQYWdlOjpwbHVnaW5EYXRhKCkgY29uc3QKIGlubGluZSBNZWRpYUNhblN0
YXJ0TGlzdGVuZXIqIFBhZ2U6OnRha2VBbnlNZWRpYUNhblN0YXJ0TGlzdGVuZXIoKQogewogICAg
IGZvciAoRnJhbWUqIGZyYW1lID0gJm1haW5GcmFtZSgpOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+
dHJlZSgpLnRyYXZlcnNlTmV4dCgpKSB7Ci0gICAgICAgIGlmIChNZWRpYUNhblN0YXJ0TGlzdGVu
ZXIqIGxpc3RlbmVyID0gZnJhbWUtPmRvY3VtZW50KCktPnRha2VBbnlNZWRpYUNhblN0YXJ0TGlz
dGVuZXIoKSkKKyAgICAgICAgaWYgKE1lZGlhQ2FuU3RhcnRMaXN0ZW5lciogbGlzdGVuZXIgPSBm
cmFtZS0+ZG9jdW1lbnQoKS50YWtlQW55TWVkaWFDYW5TdGFydExpc3RlbmVyKCkpCiAgICAgICAg
ICAgICByZXR1cm4gbGlzdGVuZXI7CiAgICAgfQogICAgIHJldHVybiAwOwpAQCAtNjM0LDcgKzYz
NCw3IEBAIHZvaWQgUGFnZTo6dW5tYXJrQWxsVGV4dE1hdGNoZXMoKQogewogICAgIEZyYW1lKiBm
cmFtZSA9ICZtYWluRnJhbWUoKTsKICAgICBkbyB7Ci0gICAgICAgIGZyYW1lLT5kb2N1bWVudCgp
LT5tYXJrZXJzKCkucmVtb3ZlTWFya2VycyhEb2N1bWVudE1hcmtlcjo6VGV4dE1hdGNoKTsKKyAg
ICAgICAgZnJhbWUtPmRvY3VtZW50KCkubWFya2VycygpLnJlbW92ZU1hcmtlcnMoRG9jdW1lbnRN
YXJrZXI6OlRleHRNYXRjaCk7CiAgICAgICAgIGZyYW1lID0gaW5jcmVtZW50RnJhbWUoZnJhbWUs
IHRydWUsIGZhbHNlKTsKICAgICB9IHdoaWxlIChmcmFtZSk7CiB9CkBAIC02OTEsNyArNjkxLDcg
QEAgdm9pZCBQYWdlOjpzZXRNZWRpYVZvbHVtZShmbG9hdCB2b2x1bWUpCiAKICAgICBtX21lZGlh
Vm9sdW1lID0gdm9sdW1lOwogICAgIGZvciAoRnJhbWUqIGZyYW1lID0gJm1haW5GcmFtZSgpOyBm
cmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgpLnRyYXZlcnNlTmV4dCgpKSB7Ci0gICAgICAgIGZy
YW1lLT5kb2N1bWVudCgpLT5tZWRpYVZvbHVtZURpZENoYW5nZSgpOworICAgICAgICBmcmFtZS0+
ZG9jdW1lbnQoKS5tZWRpYVZvbHVtZURpZENoYW5nZSgpOwogICAgIH0KIH0KIApAQCAtNzQ3LDcg
Kzc0Nyw3IEBAIHZvaWQgUGFnZTo6c2V0UGFnZVNjYWxlRmFjdG9yKGZsb2F0IHNjYWxlLCBjb25z
dCBJbnRQb2ludCYgb3JpZ2luKQogCiAjaWYgRU5BQkxFKE1FRElBX0NPTlRST0xTX1NDUklQVCkK
ICAgICBmb3IgKEZyYW1lKiBmcmFtZSA9ICZtYWluRnJhbWUoKTsgZnJhbWU7IGZyYW1lID0gZnJh
bWUtPnRyZWUoKS50cmF2ZXJzZU5leHQoKSkKLSAgICAgICAgZnJhbWUtPmRvY3VtZW50KCktPnBh
Z2VTY2FsZUZhY3RvckNoYW5nZWQoKTsKKyAgICAgICAgZnJhbWUtPmRvY3VtZW50KCkucGFnZVNj
YWxlRmFjdG9yQ2hhbmdlZCgpOwogI2VuZGlmCiB9CiAKQEAgLTg4Myw3ICs4ODMsNyBAQCB2b2lk
IFBhZ2U6OnN1c3BlbmRTY3JpcHRlZEFuaW1hdGlvbnMoKQogICAgIG1fc2NyaXB0ZWRBbmltYXRp
b25zU3VzcGVuZGVkID0gdHJ1ZTsKICAgICBmb3IgKEZyYW1lKiBmcmFtZSA9ICZtYWluRnJhbWUo
KTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyZWUoKS50cmF2ZXJzZU5leHQoKSkgewogICAgICAg
ICBpZiAoZnJhbWUtPmRvY3VtZW50KCkpCi0gICAgICAgICAgICBmcmFtZS0+ZG9jdW1lbnQoKS0+
c3VzcGVuZFNjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlckNhbGxiYWNrcygpOworICAgICAgICAg
ICAgZnJhbWUtPmRvY3VtZW50KCkuc3VzcGVuZFNjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlckNh
bGxiYWNrcygpOwogICAgIH0KIH0KIApAQCAtODkyLDcgKzg5Miw3IEBAIHZvaWQgUGFnZTo6cmVz
dW1lU2NyaXB0ZWRBbmltYXRpb25zKCkKICAgICBtX3NjcmlwdGVkQW5pbWF0aW9uc1N1c3BlbmRl
ZCA9IGZhbHNlOwogICAgIGZvciAoRnJhbWUqIGZyYW1lID0gJm1haW5GcmFtZSgpOyBmcmFtZTsg
ZnJhbWUgPSBmcmFtZS0+dHJlZSgpLnRyYXZlcnNlTmV4dCgpKSB7CiAgICAgICAgIGlmIChmcmFt
ZS0+ZG9jdW1lbnQoKSkKLSAgICAgICAgICAgIGZyYW1lLT5kb2N1bWVudCgpLT5yZXN1bWVTY3Jp
cHRlZEFuaW1hdGlvbkNvbnRyb2xsZXJDYWxsYmFja3MoKTsKKyAgICAgICAgICAgIGZyYW1lLT5k
b2N1bWVudCgpLnJlc3VtZVNjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlckNhbGxiYWNrcygpOwog
ICAgIH0KIH0KIApAQCAtOTAyLDcgKzkwMiw3IEBAIHZvaWQgUGFnZTo6c2V0SXNWaXN1YWxseUlk
bGVJbnRlcm5hbChib29sIGlzVmlzdWFsbHlJZGxlKQogICAgIAogICAgIGZvciAoRnJhbWUqIGZy
YW1lID0gJm1haW5GcmFtZSgpOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgpLnRyYXZlcnNl
TmV4dCgpKSB7CiAgICAgICAgIGlmIChmcmFtZS0+ZG9jdW1lbnQoKSkKLSAgICAgICAgICAgIGZy
YW1lLT5kb2N1bWVudCgpLT5zY3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xsZXJTZXRUaHJvdHRsZWQo
aXNWaXN1YWxseUlkbGUpOworICAgICAgICAgICAgZnJhbWUtPmRvY3VtZW50KCkuc2NyaXB0ZWRB
bmltYXRpb25Db250cm9sbGVyU2V0VGhyb3R0bGVkKGlzVmlzdWFsbHlJZGxlKTsKICAgICB9CiB9
CiAKQEAgLTkzNCw3ICs5MzQsNyBAQCB2b2lkIFBhZ2U6OnVzZXJTdHlsZVNoZWV0TG9jYXRpb25D
aGFuZ2VkKCkKIAogICAgIGZvciAoRnJhbWUqIGZyYW1lID0gJm1haW5GcmFtZSgpOyBmcmFtZTsg
ZnJhbWUgPSBmcmFtZS0+dHJlZSgpLnRyYXZlcnNlTmV4dCgpKSB7CiAgICAgICAgIGlmIChmcmFt
ZS0+ZG9jdW1lbnQoKSkKLSAgICAgICAgICAgIGZyYW1lLT5kb2N1bWVudCgpLT5zdHlsZVNoZWV0
Q29sbGVjdGlvbigpLnVwZGF0ZVBhZ2VVc2VyU2hlZXQoKTsKKyAgICAgICAgICAgIGZyYW1lLT5k
b2N1bWVudCgpLnN0eWxlU2hlZXRDb2xsZWN0aW9uKCkudXBkYXRlUGFnZVVzZXJTaGVldCgpOwog
ICAgIH0KIH0KIApAQCAtOTk1LDEzICs5OTUsMTMgQEAgdm9pZCBQYWdlOjpyZW1vdmVBbGxWaXNp
dGVkTGlua3MoKQogdm9pZCBQYWdlOjppbnZhbGlkYXRlU3R5bGVzRm9yQWxsTGlua3MoKQogewog
ICAgIGZvciAoRnJhbWUqIGZyYW1lID0gbV9tYWluRnJhbWUuZ2V0KCk7IGZyYW1lOyBmcmFtZSA9
IGZyYW1lLT50cmVlKCkudHJhdmVyc2VOZXh0KCkpCi0gICAgICAgIGZyYW1lLT5kb2N1bWVudCgp
LT52aXNpdGVkTGlua1N0YXRlKCkuaW52YWxpZGF0ZVN0eWxlRm9yQWxsTGlua3MoKTsKKyAgICAg
ICAgZnJhbWUtPmRvY3VtZW50KCkudmlzaXRlZExpbmtTdGF0ZSgpLmludmFsaWRhdGVTdHlsZUZv
ckFsbExpbmtzKCk7CiB9CiAKIHZvaWQgUGFnZTo6aW52YWxpZGF0ZVN0eWxlc0ZvckxpbmsoTGlu
a0hhc2ggbGlua0hhc2gpCiB7CiAgICAgZm9yIChGcmFtZSogZnJhbWUgPSBtX21haW5GcmFtZS5n
ZXQoKTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyZWUoKS50cmF2ZXJzZU5leHQoKSkKLSAgICAg
ICAgZnJhbWUtPmRvY3VtZW50KCktPnZpc2l0ZWRMaW5rU3RhdGUoKS5pbnZhbGlkYXRlU3R5bGVG
b3JMaW5rKGxpbmtIYXNoKTsKKyAgICAgICAgZnJhbWUtPmRvY3VtZW50KCkudmlzaXRlZExpbmtT
dGF0ZSgpLmludmFsaWRhdGVTdHlsZUZvckxpbmsobGlua0hhc2gpOwogfQogCiB2b2lkIFBhZ2U6
OnNldERlYnVnZ2VyKEpTQzo6RGVidWdnZXIqIGRlYnVnZ2VyKQpAQCAtMTA1OCw3ICsxMDU4LDcg
QEAgdm9pZCBQYWdlOjpzZXRNaW5pbXVtVGltZXJJbnRlcnZhbChkb3VibGUgbWluaW11bVRpbWVy
SW50ZXJ2YWwpCiAgICAgbV9taW5pbXVtVGltZXJJbnRlcnZhbCA9IG1pbmltdW1UaW1lckludGVy
dmFsOwogICAgIGZvciAoRnJhbWUqIGZyYW1lID0gJm1haW5GcmFtZSgpOyBmcmFtZTsgZnJhbWUg
PSBmcmFtZS0+dHJlZSgpLnRyYXZlcnNlTmV4dFdpdGhXcmFwKGZhbHNlKSkgewogICAgICAgICBp
ZiAoZnJhbWUtPmRvY3VtZW50KCkpCi0gICAgICAgICAgICBmcmFtZS0+ZG9jdW1lbnQoKS0+YWRq
dXN0TWluaW11bVRpbWVySW50ZXJ2YWwob2xkVGltZXJJbnRlcnZhbCk7CisgICAgICAgICAgICBm
cmFtZS0+ZG9jdW1lbnQoKS5hZGp1c3RNaW5pbXVtVGltZXJJbnRlcnZhbChvbGRUaW1lckludGVy
dmFsKTsKICAgICB9CiB9CiAKQEAgLTEwODcsMTQgKzEwODcsMTQgQEAgdm9pZCBQYWdlOjpzZXRU
aW1lclRocm90dGxpbmdFbmFibGVkKGJvb2wgZW5hYmxlZCkKICAgICAKICAgICBmb3IgKEZyYW1l
KiBmcmFtZSA9ICZtYWluRnJhbWUoKTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyZWUoKS50cmF2
ZXJzZU5leHRXaXRoV3JhcChmYWxzZSkpIHsKICAgICAgICAgaWYgKGZyYW1lLT5kb2N1bWVudCgp
KQotICAgICAgICAgICAgZnJhbWUtPmRvY3VtZW50KCktPmRpZENoYW5nZVRpbWVyQWxpZ25tZW50
SW50ZXJ2YWwoKTsKKyAgICAgICAgICAgIGZyYW1lLT5kb2N1bWVudCgpLmRpZENoYW5nZVRpbWVy
QWxpZ25tZW50SW50ZXJ2YWwoKTsKICAgICB9CiB9CiAKIHZvaWQgUGFnZTo6ZG5zUHJlZmV0Y2hp
bmdTdGF0ZUNoYW5nZWQoKQogewogICAgIGZvciAoRnJhbWUqIGZyYW1lID0gJm1haW5GcmFtZSgp
OyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgpLnRyYXZlcnNlTmV4dCgpKQotICAgICAgICBm
cmFtZS0+ZG9jdW1lbnQoKS0+aW5pdEROU1ByZWZldGNoKCk7CisgICAgICAgIGZyYW1lLT5kb2N1
bWVudCgpLmluaXRETlNQcmVmZXRjaCgpOwogfQogCiBWZWN0b3I8UmVmPFBsdWdpblZpZXdCYXNl
Pj4gUGFnZTo6cGx1Z2luVmlld3MoKQpAQCAtMTExOSw3ICsxMTE5LDcgQEAgVmVjdG9yPFJlZjxQ
bHVnaW5WaWV3QmFzZT4+IFBhZ2U6OnBsdWdpblZpZXdzKCkKIHZvaWQgUGFnZTo6c3RvcmFnZUJs
b2NraW5nU3RhdGVDaGFuZ2VkKCkKIHsKICAgICBmb3IgKEZyYW1lKiBmcmFtZSA9ICZtYWluRnJh
bWUoKTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyZWUoKS50cmF2ZXJzZU5leHQoKSkKLSAgICAg
ICAgZnJhbWUtPmRvY3VtZW50KCktPnN0b3JhZ2VCbG9ja2luZ1N0YXRlRGlkQ2hhbmdlKCk7Cisg
ICAgICAgIGZyYW1lLT5kb2N1bWVudCgpLnN0b3JhZ2VCbG9ja2luZ1N0YXRlRGlkQ2hhbmdlKCk7
CiAKICAgICAvLyBDb2xsZWN0IHRoZSBQbHVnaW5WaWV3cyBpbiB0byBhIHZlY3RvciB0byBlbnN1
cmUgdGhhdCBhY3Rpb24gdGhlIHBsdWctaW4gdGFrZXMKICAgICAvLyBmcm9tIGJlbG93IHN0b3Jh
Z2VCbG9ja2luZ1N0YXRlQ2hhbmdlZCBkb2VzIG5vdCBhZmZlY3QgdGhlaXIgbGlmZXRpbWUuCkBA
IC0xNTI1LDcgKzE1MjUsNyBAQCB2b2lkIFBhZ2U6OmhpZGRlblBhZ2VDU1NBbmltYXRpb25TdXNw
ZW5zaW9uU3RhdGVDaGFuZ2VkKCkKIHZvaWQgUGFnZTo6Y2FwdGlvblByZWZlcmVuY2VzQ2hhbmdl
ZCgpCiB7CiAgICAgZm9yIChGcmFtZSogZnJhbWUgPSAmbWFpbkZyYW1lKCk7IGZyYW1lOyBmcmFt
ZSA9IGZyYW1lLT50cmVlKCkudHJhdmVyc2VOZXh0KCkpCi0gICAgICAgIGZyYW1lLT5kb2N1bWVu
dCgpLT5jYXB0aW9uUHJlZmVyZW5jZXNDaGFuZ2VkKCk7CisgICAgICAgIGZyYW1lLT5kb2N1bWVu
dCgpLmNhcHRpb25QcmVmZXJlbmNlc0NoYW5nZWQoKTsKIH0KICNlbmRpZgogCkBAIC0xNTgxLDcg
KzE1ODEsNyBAQCB2b2lkIFBhZ2U6OnNldFNlc3Npb25JRChTZXNzaW9uSUQgc2Vzc2lvbklEKQog
ICAgICAgICByZXR1cm47CiAKICAgICBmb3IgKEZyYW1lKiBmcmFtZSA9ICZtYWluRnJhbWUoKTsg
ZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyZWUoKS50cmF2ZXJzZU5leHQoKSkKLSAgICAgICAgZnJh
bWUtPmRvY3VtZW50KCktPnByaXZhdGVCcm93c2luZ1N0YXRlRGlkQ2hhbmdlKCk7CisgICAgICAg
IGZyYW1lLT5kb2N1bWVudCgpLnByaXZhdGVCcm93c2luZ1N0YXRlRGlkQ2hhbmdlKCk7CiAKICAg
ICAvLyBDb2xsZWN0IHRoZSBQbHVnaW5WaWV3cyBpbiB0byBhIHZlY3RvciB0byBlbnN1cmUgdGhh
dCBhY3Rpb24gdGhlIHBsdWctaW4gdGFrZXMKICAgICAvLyBmcm9tIGJlbG93IHByaXZhdGVCcm93
c2luZ1N0YXRlQ2hhbmdlZCBkb2VzIG5vdCBhZmZlY3QgdGhlaXIgbGlmZXRpbWUuCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VEZWJ1Z2dhYmxlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvUGFnZURlYnVnZ2FibGUuY3BwCmluZGV4IDk4NjMyM2QuLjFkZDJiYTEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZURlYnVnZ2FibGUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvUGFnZURlYnVnZ2FibGUuY3BwCkBAIC01NCw3ICs1NCw3IEBAIFN0cmlu
ZyBQYWdlRGVidWdnYWJsZTo6bmFtZSgpIGNvbnN0CiAgICAgaWYgKCFtX3BhZ2UubWFpbkZyYW1l
KCkuZG9jdW1lbnQoKSkKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogCi0gICAgcmV0dXJuIG1f
cGFnZS5tYWluRnJhbWUoKS5kb2N1bWVudCgpLT50aXRsZSgpOworICAgIHJldHVybiBtX3BhZ2Uu
bWFpbmZyYW1lKCkuZG9jdW1lbnQoKS50aXRsZSgpOwogfQogCiBTdHJpbmcgUGFnZURlYnVnZ2Fi
bGU6OnVybCgpIGNvbnN0CkBAIC02Miw3ICs2Miw3IEBAIFN0cmluZyBQYWdlRGVidWdnYWJsZTo6
dXJsKCkgY29uc3QKICAgICBpZiAoIW1fcGFnZS5tYWluRnJhbWUoKS5kb2N1bWVudCgpKQogICAg
ICAgICByZXR1cm4gU3RyaW5nKCk7CiAKLSAgICBTdHJpbmcgdXJsID0gbV9wYWdlLm1haW5GcmFt
ZSgpLmRvY3VtZW50KCktPnVybCgpLnN0cmluZygpOworICAgIFN0cmluZyB1cmwgPSBtX3BhZ2Uu
bWFpbmZyYW1lKCkuZG9jdW1lbnQoKS51cmwoKS5zdHJpbmcoKTsKICAgICByZXR1cm4gdXJsLmlz
RW1wdHkoKSA/IEFTQ0lJTGl0ZXJhbCgiYWJvdXQ6YmxhbmsiKSA6IHVybDsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlR3JvdXBMb2FkRGVmZXJyZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9QYWdlR3JvdXBMb2FkRGVmZXJyZXIuY3BwCmluZGV4IGI1ZjFjYTMu
LmFiYTNmNWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUdyb3VwTG9hZERl
ZmVycmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VHcm91cExvYWREZWZlcnJl
ci5jcHAKQEAgLTQ1LDcgKzQ1LDcgQEAgUGFnZUdyb3VwTG9hZERlZmVycmVyOjpQYWdlR3JvdXBM
b2FkRGVmZXJyZXIoUGFnZSYgcGFnZSwgYm9vbCBkZWZlclNlbGYpCiAgICAgICAgICAgICAgICAg
Ly8gVGhpcyBjb2RlIGlzIG5vdCBsb2dpY2FsbHkgcGFydCBvZiBsb2FkIGRlZmVycmluZywgYnV0
IHdlIGRvIG5vdCB3YW50IEpTIGNvZGUgZXhlY3V0ZWQgYmVuZWF0aCBtb2RhbAogICAgICAgICAg
ICAgICAgIC8vIHdpbmRvd3Mgb3Igc2hlZXRzLCB3aGljaCBpcyBleGFjdGx5IHdoZW4gUGFnZUdy
b3VwTG9hZERlZmVycmVyIGlzIHVzZWQuCiAgICAgICAgICAgICAgICAgZm9yIChGcmFtZSogZnJh
bWUgPSAmb3RoZXJQYWdlLT5tYWluRnJhbWUoKTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyZWUo
KS50cmF2ZXJzZU5leHQoKSkKLSAgICAgICAgICAgICAgICAgICAgZnJhbWUtPmRvY3VtZW50KCkt
PnN1c3BlbmRTY2hlZHVsZWRUYXNrcyhBY3RpdmVET01PYmplY3Q6OldpbGxEZWZlckxvYWRpbmcp
OworICAgICAgICAgICAgICAgICAgICBmcmFtZS0+ZG9jdW1lbnQoKS5zdXNwZW5kU2NoZWR1bGVk
VGFza3MoQWN0aXZlRE9NT2JqZWN0OjpXaWxsRGVmZXJMb2FkaW5nKTsKICAgICAgICAgICAgIH0K
ICAgICAgICAgfQogICAgIH0KQEAgLTYzLDcgKzYzLDcgQEAgUGFnZUdyb3VwTG9hZERlZmVycmVy
Ojp+UGFnZUdyb3VwTG9hZERlZmVycmVyKCkKICAgICAgICAgICAgIHBhZ2UtPnNldERlZmVyc0xv
YWRpbmcoZmFsc2UpOwogCiAgICAgICAgICAgICBmb3IgKEZyYW1lKiBmcmFtZSA9ICZwYWdlLT5t
YWluRnJhbWUoKTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyZWUoKS50cmF2ZXJzZU5leHQoKSkK
LSAgICAgICAgICAgICAgICBmcmFtZS0+ZG9jdW1lbnQoKS0+cmVzdW1lU2NoZWR1bGVkVGFza3Mo
QWN0aXZlRE9NT2JqZWN0OjpXaWxsRGVmZXJMb2FkaW5nKTsKKyAgICAgICAgICAgICAgICBmcmFt
ZS0+ZG9jdW1lbnQoKS5yZXN1bWVTY2hlZHVsZWRUYXNrcyhBY3RpdmVET01PYmplY3Q6OldpbGxE
ZWZlckxvYWRpbmcpOwogICAgICAgICB9CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGFnZS9QYWdlU2VyaWFsaXplci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VT
ZXJpYWxpemVyLmNwcAppbmRleCBjODAyNTljLi44NjQyOTllIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1BhZ2VTZXJpYWxpemVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1BhZ2VTZXJpYWxpemVyLmNwcApAQCAtMTU0LDcgKzE1NCw3IEBAIHZvaWQgU2VyaWFsaXplck1h
cmt1cEFjY3VtdWxhdG9yOjphcHBlbmRDdXN0b21BdHRyaWJ1dGVzKFN0cmluZ0J1aWxkZXImIG91
dCwgY29uCiAgICAgaWYgKCFmcmFtZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgVVJMIHVybCA9
IGZyYW1lLT5kb2N1bWVudCgpLT51cmwoKTsKKyAgICBVUkwgdXJsID0gZnJhbWUtPmRvY3VtZW50
KCkudXJsKCk7CiAgICAgaWYgKHVybC5pc1ZhbGlkKCkgJiYgIXVybC5pc0JsYW5rVVJMKCkpCiAg
ICAgICAgIHJldHVybjsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3Jt
YW5jZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNlLmNwcAppbmRleCBiNDM3
MmY2Li5lYzIyNjFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNlLmNwcApAQCAtNzEsNyAr
NzEsNyBAQCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBQZXJmb3JtYW5jZTo6c2NyaXB0RXhlY3V0
aW9uQ29udGV4dCgpIGNvbnN0CiB7CiAgICAgaWYgKCFmcmFtZSgpKQogICAgICAgICByZXR1cm4g
MDsKLSAgICByZXR1cm4gZnJhbWUoKS0+ZG9jdW1lbnQoKTsKKyAgICByZXR1cm4gJmZyYW1lKCkt
PmRvY3VtZW50KCk7CiB9CiAKIFBlcmZvcm1hbmNlTmF2aWdhdGlvbiogUGVyZm9ybWFuY2U6Om5h
dmlnYXRpb24oKSBjb25zdApAQCAtMjI4LDcgKzIyOCw3IEBAIHZvaWQgUGVyZm9ybWFuY2U6Ondl
YmtpdENsZWFyTWVhc3VyZXMoY29uc3QgU3RyaW5nJiBtZWFzdXJlTmFtZSkKIAogZG91YmxlIFBl
cmZvcm1hbmNlOjpub3coKSBjb25zdAogewotICAgIHJldHVybiAxMDAwLjAgKiBtX2ZyYW1lLT5k
b2N1bWVudCgpLT5sb2FkZXIoKS0+dGltaW5nKCktPm1vbm90b25pY1RpbWVUb1plcm9CYXNlZERv
Y3VtZW50VGltZShtb25vdG9uaWNhbGx5SW5jcmVhc2luZ1RpbWUoKSk7CisgICAgcmV0dXJuIDEw
MDAuMCAqIG1fZnJhbWUtPmRvY3VtZW50KCkubG9hZGVyKCktPnRpbWluZygpLT5tb25vdG9uaWNU
aW1lVG9aZXJvQmFzZWREb2N1bWVudFRpbWUobW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lKCkp
OwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1ByaW50Q29udGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1ByaW50Q29udGV4
dC5jcHAKaW5kZXggZTNmZGRiMC4uMGU2NjlhOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGFnZS9QcmludENvbnRleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUHJpbnRDb250
ZXh0LmNwcApAQCAtNjEsNyArNjEsOCBAQCB2b2lkIFByaW50Q29udGV4dDo6Y29tcHV0ZVBhZ2VS
ZWN0cyhjb25zdCBGbG9hdFJlY3QmIHByaW50UmVjdCwgZmxvYXQgaGVhZGVySGVpZwogICAgIG1f
cGFnZVJlY3RzLmNsZWFyKCk7CiAgICAgb3V0UGFnZUhlaWdodCA9IDA7CiAKLSAgICBpZiAoIW1f
ZnJhbWUtPmRvY3VtZW50KCkgfHwgIW1fZnJhbWUtPnZpZXcoKSB8fCAhbV9mcmFtZS0+ZG9jdW1l
bnQoKS0+cmVuZGVyVmlldygpKQorICAgIEFTU0VSVChtX2ZyYW1lLmRvY3VtZW50KCkpOworICAg
IGlmICghbV9mcmFtZS0+dmlldygpIHx8ICFtX2ZyYW1lLT5kb2N1bWVudCgpLnJlbmRlclZpZXco
KSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKHVzZXJTY2FsZUZhY3RvciA8PSAwKSB7CkBA
IC02OSw3ICs3MCw3IEBAIHZvaWQgUHJpbnRDb250ZXh0Ojpjb21wdXRlUGFnZVJlY3RzKGNvbnN0
IEZsb2F0UmVjdCYgcHJpbnRSZWN0LCBmbG9hdCBoZWFkZXJIZWlnCiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKLSAgICBSZW5kZXJWaWV3KiB2aWV3ID0gbV9mcmFtZS0+ZG9jdW1lbnQoKS0+cmVu
ZGVyVmlldygpOworICAgIFJlbmRlclZpZXcqIHZpZXcgPSBtX2ZyYW1lLT5kb2N1bWVudCgpLnJl
bmRlclZpZXcoKTsKICAgICBjb25zdCBJbnRSZWN0JiBkb2N1bWVudFJlY3QgPSB2aWV3LT5kb2N1
bWVudFJlY3QoKTsKICAgICBGbG9hdFNpemUgcGFnZVNpemUgPSBtX2ZyYW1lLT5yZXNpemVQYWdl
UmVjdHNLZWVwaW5nUmF0aW8oRmxvYXRTaXplKHByaW50UmVjdC53aWR0aCgpLCBwcmludFJlY3Qu
aGVpZ2h0KCkpLCBGbG9hdFNpemUoZG9jdW1lbnRSZWN0LndpZHRoKCksIGRvY3VtZW50UmVjdC5o
ZWlnaHQoKSkpOwogICAgIGZsb2F0IHBhZ2VXaWR0aCA9IHBhZ2VTaXplLndpZHRoKCk7CkBAIC05
NCwxMCArOTUsMTEgQEAgdm9pZCBQcmludENvbnRleHQ6OmNvbXB1dGVQYWdlUmVjdHNXaXRoUGFn
ZVNpemUoY29uc3QgRmxvYXRTaXplJiBwYWdlU2l6ZUluUGl4ZWwKIAogdm9pZCBQcmludENvbnRl
eHQ6OmNvbXB1dGVQYWdlUmVjdHNXaXRoUGFnZVNpemVJbnRlcm5hbChjb25zdCBGbG9hdFNpemUm
IHBhZ2VTaXplSW5QaXhlbHMsIGJvb2wgYWxsb3dJbmxpbmVEaXJlY3Rpb25UaWxpbmcpCiB7Ci0g
ICAgaWYgKCFtX2ZyYW1lLT5kb2N1bWVudCgpIHx8ICFtX2ZyYW1lLT52aWV3KCkgfHwgIW1fZnJh
bWUtPmRvY3VtZW50KCktPnJlbmRlclZpZXcoKSkKKyAgICBBU1NFUlQobV9mcmFtZS0+ZG9jdW1l
bnQoKSk7CisgICAgaWYgKCFtX2ZyYW1lLT52aWV3KCkgfHwgIW1fZnJhbWUtPmRvY3VtZW50KCku
cmVuZGVyVmlldygpKQogICAgICAgICByZXR1cm47CiAKLSAgICBSZW5kZXJWaWV3KiB2aWV3ID0g
bV9mcmFtZS0+ZG9jdW1lbnQoKS0+cmVuZGVyVmlldygpOworICAgIFJlbmRlclZpZXcqIHZpZXcg
PSBtX2ZyYW1lLT5kb2N1bWVudCgpLnJlbmRlclZpZXcoKTsKIAogICAgIEludFJlY3QgZG9jUmVj
dCA9IHZpZXctPmRvY3VtZW50UmVjdCgpOwogCkBAIC0xNzksOCArMTgxLDkgQEAgZmxvYXQgUHJp
bnRDb250ZXh0Ojpjb21wdXRlQXV0b21hdGljU2NhbGVGYWN0b3IoY29uc3QgRmxvYXRTaXplJiBh
dmFpbGFibGVQYXBlclMKICAgICAgICAgcmV0dXJuIDE7CiAKICAgICBib29sIHVzZVZpZXdXaWR0
aCA9IHRydWU7Ci0gICAgaWYgKG1fZnJhbWUtPmRvY3VtZW50KCkgJiYgbV9mcmFtZS0+ZG9jdW1l
bnQoKS0+cmVuZGVyVmlldygpKQotICAgICAgICB1c2VWaWV3V2lkdGggPSBtX2ZyYW1lLT5kb2N1
bWVudCgpLT5yZW5kZXJWaWV3KCktPnN0eWxlKCkuaXNIb3Jpem9udGFsV3JpdGluZ01vZGUoKTsK
KyAgICBBU1NFUlQobV9mcmFtZS0+ZG9jdW1lbnQoKSk7CisgICAgaWYgKG1fZnJhbWUtPmRvY3Vt
ZW50KCkucmVuZGVyVmlldygpKQorICAgICAgICB1c2VWaWV3V2lkdGggPSBtX2ZyYW1lLT5kb2N1
bWVudCgpLnJlbmRlclZpZXcoKS0+c3R5bGUoKS5pc0hvcml6b250YWxXcml0aW5nTW9kZSgpOwog
CiAgICAgZmxvYXQgdmlld0xvZ2ljYWxXaWR0aCA9IHVzZVZpZXdXaWR0aCA/IG1fZnJhbWUtPnZp
ZXcoKS0+Y29udGVudHNXaWR0aCgpIDogbV9mcmFtZS0+dmlldygpLT5jb250ZW50c0hlaWdodCgp
OwogICAgIGlmICh2aWV3TG9naWNhbFdpZHRoIDwgMSkKQEAgLTI4OSwxMyArMjkyLDEzIEBAIFN0
cmluZyBQcmludENvbnRleHQ6OnBhZ2VQcm9wZXJ0eShGcmFtZSogZnJhbWUsIGNvbnN0IGNoYXIq
IHByb3BlcnR5TmFtZSwgaW50IHBhCiAKIGJvb2wgUHJpbnRDb250ZXh0Ojppc1BhZ2VCb3hWaXNp
YmxlKEZyYW1lKiBmcmFtZSwgaW50IHBhZ2VOdW1iZXIpCiB7Ci0gICAgcmV0dXJuIGZyYW1lLT5k
b2N1bWVudCgpLT5pc1BhZ2VCb3hWaXNpYmxlKHBhZ2VOdW1iZXIpOworICAgIHJldHVybiBmcmFt
ZS0+ZG9jdW1lbnQoKS5pc1BhZ2VCb3hWaXNpYmxlKHBhZ2VOdW1iZXIpOwogfQogCiBTdHJpbmcg
UHJpbnRDb250ZXh0OjpwYWdlU2l6ZUFuZE1hcmdpbnNJblBpeGVscyhGcmFtZSogZnJhbWUsIGlu
dCBwYWdlTnVtYmVyLCBpbnQgd2lkdGgsIGludCBoZWlnaHQsIGludCBtYXJnaW5Ub3AsIGludCBt
YXJnaW5SaWdodCwgaW50IG1hcmdpbkJvdHRvbSwgaW50IG1hcmdpbkxlZnQpCiB7CiAgICAgSW50
U2l6ZSBwYWdlU2l6ZSh3aWR0aCwgaGVpZ2h0KTsKLSAgICBmcmFtZS0+ZG9jdW1lbnQoKS0+cGFn
ZVNpemVBbmRNYXJnaW5zSW5QaXhlbHMocGFnZU51bWJlciwgcGFnZVNpemUsIG1hcmdpblRvcCwg
bWFyZ2luUmlnaHQsIG1hcmdpbkJvdHRvbSwgbWFyZ2luTGVmdCk7CisgICAgZnJhbWUtPmRvY3Vt
ZW50KCkucGFnZVNpemVBbmRNYXJnaW5zSW5QaXhlbHMocGFnZU51bWJlciwgcGFnZVNpemUsIG1h
cmdpblRvcCwgbWFyZ2luUmlnaHQsIG1hcmdpbkJvdHRvbSwgbWFyZ2luTGVmdCk7CiAKICAgICBy
ZXR1cm4gIigiICsgU3RyaW5nOjpudW1iZXIocGFnZVNpemUud2lkdGgoKSkgKyAiLCAiICsgU3Ry
aW5nOjpudW1iZXIocGFnZVNpemUuaGVpZ2h0KCkpICsgIikgIiArCiAgICAgICAgICAgIFN0cmlu
Zzo6bnVtYmVyKG1hcmdpblRvcCkgKyAnICcgKyBTdHJpbmc6Om51bWJlcihtYXJnaW5SaWdodCkg
KyAnICcgKyBTdHJpbmc6Om51bWJlcihtYXJnaW5Cb3R0b20pICsgJyAnICsgU3RyaW5nOjpudW1i
ZXIobWFyZ2luTGVmdCk7CkBAIC0zMDMsNyArMzA2LDcgQEAgU3RyaW5nIFByaW50Q29udGV4dDo6
cGFnZVNpemVBbmRNYXJnaW5zSW5QaXhlbHMoRnJhbWUqIGZyYW1lLCBpbnQgcGFnZU51bWJlciwg
aW4KIAogaW50IFByaW50Q29udGV4dDo6bnVtYmVyT2ZQYWdlcyhGcmFtZSogZnJhbWUsIGNvbnN0
IEZsb2F0U2l6ZSYgcGFnZVNpemVJblBpeGVscykKIHsKLSAgICBmcmFtZS0+ZG9jdW1lbnQoKS0+
dXBkYXRlTGF5b3V0KCk7CisgICAgZnJhbWUtPmRvY3VtZW50KCkudXBkYXRlTGF5b3V0KCk7CiAK
ICAgICBGbG9hdFJlY3QgcGFnZVJlY3QoRmxvYXRQb2ludCgwLCAwKSwgcGFnZVNpemVJblBpeGVs
cyk7CiAgICAgUHJpbnRDb250ZXh0IHByaW50Q29udGV4dChmcmFtZSk7CkBAIC0zMTcsMTAgKzMy
MCwxMCBAQCBpbnQgUHJpbnRDb250ZXh0OjpudW1iZXJPZlBhZ2VzKEZyYW1lKiBmcmFtZSwgY29u
c3QgRmxvYXRTaXplJiBwYWdlU2l6ZUluUGl4ZWxzKQogCiB2b2lkIFByaW50Q29udGV4dDo6c3Bv
b2xBbGxQYWdlc1dpdGhCb3VuZGFyaWVzKEZyYW1lKiBmcmFtZSwgR3JhcGhpY3NDb250ZXh0JiBn
cmFwaGljc0NvbnRleHQsIGNvbnN0IEZsb2F0U2l6ZSYgcGFnZVNpemVJblBpeGVscykKIHsKLSAg
ICBpZiAoIWZyYW1lLT5kb2N1bWVudCgpIHx8ICFmcmFtZS0+dmlldygpIHx8ICFmcmFtZS0+ZG9j
dW1lbnQoKS0+cmVuZGVyVmlldygpKQorICAgIGlmICghZnJhbWUtPmRvY3VtZW50KCkgfHwgIWZy
YW1lLT52aWV3KCkgfHwgIWZyYW1lLT5kb2N1bWVudCgpLnJlbmRlclZpZXcoKSkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgZnJhbWUtPmRvY3VtZW50KCktPnVwZGF0ZUxheW91dCgpOworICAgIGZy
YW1lLT5kb2N1bWVudCgpLnVwZGF0ZUxheW91dCgpOwogCiAgICAgUHJpbnRDb250ZXh0IHByaW50
Q29udGV4dChmcmFtZSk7CiAgICAgcHJpbnRDb250ZXh0LmJlZ2luKHBhZ2VTaXplSW5QaXhlbHMu
d2lkdGgoKSwgcGFnZVNpemVJblBpeGVscy5oZWlnaHQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL1NldHRpbmdzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3Mu
Y3BwCmluZGV4IDk4ZjcwOWIuLjFiYjU5NmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvU2V0dGluZ3MuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuY3BwCkBA
IC01NCw4ICs1NCw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHN0YXRpYyB2b2lkIHNldEltYWdl
TG9hZGluZ1NldHRpbmdzKFBhZ2UqIHBhZ2UpCiB7CiAgICAgZm9yIChGcmFtZSogZnJhbWUgPSAm
cGFnZS0+bWFpbkZyYW1lKCk7IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50cmVlKCkudHJhdmVyc2VO
ZXh0KCkpIHsKLSAgICAgICAgZnJhbWUtPmRvY3VtZW50KCktPmNhY2hlZFJlc291cmNlTG9hZGVy
KCktPnNldEltYWdlc0VuYWJsZWQocGFnZS0+c2V0dGluZ3MoKS5hcmVJbWFnZXNFbmFibGVkKCkp
OwotICAgICAgICBmcmFtZS0+ZG9jdW1lbnQoKS0+Y2FjaGVkUmVzb3VyY2VMb2FkZXIoKS0+c2V0
QXV0b0xvYWRJbWFnZXMocGFnZS0+c2V0dGluZ3MoKS5sb2Fkc0ltYWdlc0F1dG9tYXRpY2FsbHko
KSk7CisgICAgICAgIGZyYW1lLT5kb2N1bWVudCgpLmNhY2hlZFJlc291cmNlTG9hZGVyKCktPnNl
dEltYWdlc0VuYWJsZWQocGFnZS0+c2V0dGluZ3MoKS5hcmVJbWFnZXNFbmFibGVkKCkpOworICAg
ICAgICBmcmFtZS0+ZG9jdW1lbnQoKS5jYWNoZWRSZXNvdXJjZUxvYWRlcigpLT5zZXRBdXRvTG9h
ZEltYWdlcyhwYWdlLT5zZXR0aW5ncygpLmxvYWRzSW1hZ2VzQXV0b21hdGljYWxseSgpKTsKICAg
ICB9CiB9CiAKQEAgLTM0Niw3ICszNDYsNyBAQCB2b2lkIFNldHRpbmdzOjpzZXRUZXh0QXV0b3Np
emluZ0ZvbnRTY2FsZUZhY3RvcihmbG9hdCBmb250U2NhbGVGYWN0b3IpCiAKICAgICAvLyBGSVhN
RTogSSB3b25kZXIgaWYgdGhpcyBuZWVkcyB0byB0cmF2ZXJzZSBmcmFtZXMgbGlrZSBpbiBXZWJW
aWV3SW1wbDo6cmVzaXplLCBvciB3aGV0aGVyIHRoZXJlIGlzIG9ubHkgb25lIGRvY3VtZW50IHBl
ciBTZXR0aW5ncyBpbnN0YW5jZT8KICAgICBmb3IgKEZyYW1lKiBmcmFtZSA9IG1fcGFnZS0+bWFp
bkZyYW1lKCk7IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50cmVlKCkudHJhdmVyc2VOZXh0KCkpCi0g
ICAgICAgIGZyYW1lLT5kb2N1bWVudCgpLT50ZXh0QXV0b3NpemVyKCktPnJlY2FsY3VsYXRlTXVs
dGlwbGllcnMoKTsKKyAgICAgICAgZnJhbWUtPmRvY3VtZW50KCkudGV4dEF1dG9zaXplcigpLT5y
ZWNhbGN1bGF0ZU11bHRpcGxpZXJzKCk7CiAKICAgICBtX3BhZ2UtPnNldE5lZWRzUmVjYWxjU3R5
bGVJbkFsbEZyYW1lcygpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Vc2Vy
Q29udGVudENvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyQ29udGVudENv
bnRyb2xsZXIuY3BwCmluZGV4IDk1ZmE1ZmQuLmZiODg4YjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvVXNlckNvbnRlbnRDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL1VzZXJDb250ZW50Q29udHJvbGxlci5jcHAKQEAgLTE2NSw4ICsxNjUsOCBAQCB2b2lk
IFVzZXJDb250ZW50Q29udHJvbGxlcjo6aW52YWxpZGF0ZUluamVjdGVkU3R5bGVTaGVldENhY2hl
SW5BbGxGcmFtZXMoKQogewogICAgIGZvciAoYXV0byYgcGFnZSA6IG1fcGFnZXMpIHsKICAgICAg
ICAgZm9yIChGcmFtZSogZnJhbWUgPSAmcGFnZS0+bWFpbkZyYW1lKCk7IGZyYW1lOyBmcmFtZSA9
IGZyYW1lLT50cmVlKCkudHJhdmVyc2VOZXh0KCkpIHsKLSAgICAgICAgICAgIGZyYW1lLT5kb2N1
bWVudCgpLT5zdHlsZVNoZWV0Q29sbGVjdGlvbigpLmludmFsaWRhdGVJbmplY3RlZFN0eWxlU2hl
ZXRDYWNoZSgpOwotICAgICAgICAgICAgZnJhbWUtPmRvY3VtZW50KCktPnN0eWxlUmVzb2x2ZXJD
aGFuZ2VkKERlZmVyUmVjYWxjU3R5bGUpOworICAgICAgICAgICAgZnJhbWUtPmRvY3VtZW50KCku
c3R5bGVTaGVldENvbGxlY3Rpb24oKS5pbnZhbGlkYXRlSW5qZWN0ZWRTdHlsZVNoZWV0Q2FjaGUo
KTsKKyAgICAgICAgICAgIGZyYW1lLT5kb2N1bWVudCgpLnN0eWxlUmVzb2x2ZXJDaGFuZ2VkKERl
ZmVyUmVjYWxjU3R5bGUpOwogICAgICAgICB9CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9hbmltYXRpb24vQW5pbWF0aW9uQ29udHJvbGxlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9BbmltYXRpb25Db250cm9sbGVyLmNwcAppbmRleCA3NDZk
NWU1Li4yZDMyYTM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9B
bmltYXRpb25Db250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlv
bi9BbmltYXRpb25Db250cm9sbGVyLmNwcApAQCAtMTExLDcgKzExMSw3IEBAIGRvdWJsZSBBbmlt
YXRpb25Db250cm9sbGVyUHJpdmF0ZTo6dXBkYXRlQW5pbWF0aW9ucyhTZXRDaGFuZ2VkIGNhbGxT
ZXRDaGFuZ2VkLyoKICAgICB9CiAKICAgICBpZiAoY2FsbGVkU2V0Q2hhbmdlZCkKLSAgICAgICAg
bV9mcmFtZS5kb2N1bWVudCgpLT51cGRhdGVTdHlsZUlmTmVlZGVkKCk7CisgICAgICAgIG1fZnJh
bWUuZG9jdW1lbnQoKS51cGRhdGVTdHlsZUlmTmVlZGVkKCk7CiAKICAgICByZXR1cm4gdGltZVRv
TmV4dFNlcnZpY2U7CiB9CkBAIC0xODMsNyArMTgzLDcgQEAgdm9pZCBBbmltYXRpb25Db250cm9s
bGVyUHJpdmF0ZTo6ZmlyZUV2ZW50c0FuZFVwZGF0ZVN0eWxlKCkKICAgICBtX2VsZW1lbnRDaGFu
Z2VzVG9EaXNwYXRjaC5jbGVhcigpOwogCiAgICAgaWYgKHVwZGF0ZVN0eWxlKQotICAgICAgICBt
X2ZyYW1lLmRvY3VtZW50KCktPnVwZGF0ZVN0eWxlSWZOZWVkZWQoKTsKKyAgICAgICAgbV9mcmFt
ZS5kb2N1bWVudCgpLnVwZGF0ZVN0eWxlSWZOZWVkZWQoKTsKIH0KIAogdm9pZCBBbmltYXRpb25D
b250cm9sbGVyUHJpdmF0ZTo6c3RhcnRVcGRhdGVTdHlsZUlmTmVlZGVkRGlzcGF0Y2hlcigpCkBA
IC0yMTcsNyArMjE3LDcgQEAgdm9pZCBBbmltYXRpb25Db250cm9sbGVyUHJpdmF0ZTo6YW5pbWF0
aW9uRnJhbWVDYWxsYmFja0ZpcmVkKCkKICAgICBkb3VibGUgdGltZVRvTmV4dFNlcnZpY2UgPSB1
cGRhdGVBbmltYXRpb25zKENhbGxTZXRDaGFuZ2VkKTsKIAogICAgIGlmICh0aW1lVG9OZXh0U2Vy
dmljZSA+PSAwKQotICAgICAgICBtX2ZyYW1lLmRvY3VtZW50KCktPnZpZXcoKS0+c2NoZWR1bGVB
bmltYXRpb24oKTsKKyAgICAgICAgbV9mcmFtZS5kb2N1bWVudCgpLnZpZXcoKS0+c2NoZWR1bGVB
bmltYXRpb24oKTsKIH0KICNlbmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L2lvcy9FdmVudEhhbmRsZXJJT1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2lvcy9FdmVudEhh
bmRsZXJJT1MubW0KaW5kZXggY2ZiNmZhNmEuLjljOGNiMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BhZ2UvaW9zL0V2ZW50SGFuZGxlcklPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL2lvcy9FdmVudEhhbmRsZXJJT1MubW0KQEAgLTQ3NywxNCArNDc3LDE0IEBAIHZvaWQgRXZl
bnRIYW5kbGVyOjptb3VzZU1vdmVkKFdlYkV2ZW50ICpldmVudCkKIAogICAgIEJFR0lOX0JMT0NL
X09CSkNfRVhDRVBUSU9OUzsKIAotICAgIG1fZnJhbWUuZG9jdW1lbnQoKS0+dXBkYXRlU3R5bGVJ
Zk5lZWRlZCgpOworICAgIG1fZnJhbWUuZG9jdW1lbnQoKS51cGRhdGVTdHlsZUlmTmVlZGVkKCk7
CiAKICAgICBXS0JlZ2luT2JzZXJ2aW5nQ29udGVudENoYW5nZXModHJ1ZSk7CiAgICAgQ3VycmVu
dEV2ZW50U2NvcGUgc2NvcGUoZXZlbnQpOwogICAgIGV2ZW50Lndhc0hhbmRsZWQgPSBtb3VzZU1v
dmVkKGN1cnJlbnRQbGF0Zm9ybU1vdXNlRXZlbnQoKSk7CiAgICAgCiAgICAgLy8gRklYTUU6IFdo
eSBpcyB0aGlzIGhlcmU/Ci0gICAgbV9mcmFtZS5kb2N1bWVudCgpLT51cGRhdGVTdHlsZUlmTmVl
ZGVkKCk7CisgICAgbV9mcmFtZS5kb2N1bWVudCgpLnVwZGF0ZVN0eWxlSWZOZWVkZWQoKTsKICAg
ICBXS1N0b3BPYnNlcnZpbmdDb250ZW50Q2hhbmdlcygpOwogCiAgICAgRU5EX0JMT0NLX09CSkNf
RVhDRVBUSU9OUzsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvaW9zL0ZyYW1lSU9T
Lm1tIGIvU291cmNlL1dlYkNvcmUvcGFnZS9pb3MvRnJhbWVJT1MubW0KaW5kZXggNGIwMzdkOS4u
MGU1MjExNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9pb3MvRnJhbWVJT1MubW0K
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9pb3MvRnJhbWVJT1MubW0KQEAgLTY3Niw3ICs2NzYs
NyBAQCB2b2lkIEZyYW1lOjpkaXNwYXRjaFBhZ2VIaWRlRXZlbnRCZWZvcmVQYXVzZSgpCiAgICAg
ICAgIHJldHVybjsKIAogICAgIGZvciAoRnJhbWUqIGZyYW1lID0gdGhpczsgZnJhbWU7IGZyYW1l
ID0gZnJhbWUtPnRyZWUoKS50cmF2ZXJzZU5leHQodGhpcykpCi0gICAgICAgIGZyYW1lLT5kb2N1
bWVudCgpLT5kb21XaW5kb3coKS0+ZGlzcGF0Y2hFdmVudChQYWdlVHJhbnNpdGlvbkV2ZW50Ojpj
cmVhdGUoZXZlbnROYW1lcygpLnBhZ2VoaWRlRXZlbnQsIHRydWUpLCBkb2N1bWVudCgpKTsKKyAg
ICAgICAgZnJhbWUtPmRvY3VtZW50KCkuZG9tV2luZG93KCktPmRpc3BhdGNoRXZlbnQoUGFnZVRy
YW5zaXRpb25FdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5wYWdlaGlkZUV2ZW50LCB0cnVlKSwg
ZG9jdW1lbnQoKSk7CiB9CiAKIHZvaWQgRnJhbWU6OmRpc3BhdGNoUGFnZVNob3dFdmVudEJlZm9y
ZVJlc3VtZSgpCkBAIC02ODYsNyArNjg2LDcgQEAgdm9pZCBGcmFtZTo6ZGlzcGF0Y2hQYWdlU2hv
d0V2ZW50QmVmb3JlUmVzdW1lKCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgZm9yIChGcmFtZSog
ZnJhbWUgPSB0aGlzOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgpLnRyYXZlcnNlTmV4dCh0
aGlzKSkKLSAgICAgICAgZnJhbWUtPmRvY3VtZW50KCktPmRvbVdpbmRvdygpLT5kaXNwYXRjaEV2
ZW50KFBhZ2VUcmFuc2l0aW9uRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkucGFnZXNob3dFdmVu
dCwgdHJ1ZSksIGRvY3VtZW50KCkpOworICAgICAgICBmcmFtZS0+ZG9jdW1lbnQoKS5kb21XaW5k
b3coKS0+ZGlzcGF0Y2hFdmVudChQYWdlVHJhbnNpdGlvbkV2ZW50OjpjcmVhdGUoZXZlbnROYW1l
cygpLnBhZ2VzaG93RXZlbnQsIHRydWUpLCBkb2N1bWVudCgpKTsKIH0KIAogdm9pZCBGcmFtZTo6
c2V0UmFuZ2VkU2VsZWN0aW9uQmFzZVRvQ3VycmVudFNlbGVjdGlvbigpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9Bc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL0FzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0
b3IuY3BwCmluZGV4IDllN2E5YzkuLjhkOTQxODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BhZ2Uvc2Nyb2xsaW5nL0FzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3IuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL0FzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3IuY3BwCkBA
IC0xNDEsMTIgKzE0MSwxMiBAQCBib29sIEFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnJlcXVl
c3RTY3JvbGxQb3NpdGlvblVwZGF0ZShGcmFtZVZpZXcqIGZyYW1lVmlldwogICAgIGlmICghY29v
cmRpbmF0ZXNTY3JvbGxpbmdGb3JGcmFtZVZpZXcoZnJhbWVWaWV3KSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogCi0gICAgaWYgKGZyYW1lVmlldy0+aW5Qcm9ncmFtbWF0aWNTY3JvbGwoKSB8fCBm
cmFtZVZpZXctPmZyYW1lKCkuZG9jdW1lbnQoKS0+aW5QYWdlQ2FjaGUoKSkKKyAgICBpZiAoZnJh
bWVWaWV3LT5pblByb2dyYW1tYXRpY1Njcm9sbCgpIHx8IGZyYW1lVmlldy0+ZnJhbWUoKS5kb2N1
bWVudCgpLmluUGFnZUNhY2hlKCkpCiAgICAgICAgIHVwZGF0ZVNjcm9sbFBvc2l0aW9uQWZ0ZXJB
c3luY1Njcm9sbChmcmFtZVZpZXctPnNjcm9sbExheWVySUQoKSwgc2Nyb2xsUG9zaXRpb24sIGZy
YW1lVmlldy0+aW5Qcm9ncmFtbWF0aWNTY3JvbGwoKSwgU2V0U2Nyb2xsaW5nTGF5ZXJQb3NpdGlv
bik7CiAKICAgICAvLyBJZiB0aGlzIGZyYW1lIHZpZXcncyBkb2N1bWVudCBpcyBiZWluZyBwdXQg
aW50byB0aGUgcGFnZSBjYWNoZSwgd2UgZG9uJ3Qgd2FudCB0byB1cGRhdGUgb3VyCiAgICAgLy8g
bWFpbiBmcmFtZSBzY3JvbGwgcG9zaXRpb24uIEp1c3QgbGV0IHRoZSBGcmFtZVZpZXcgdGhpbmsg
dGhhdCB3ZSBkaWQuCi0gICAgaWYgKGZyYW1lVmlldy0+ZnJhbWUoKS5kb2N1bWVudCgpLT5pblBh
Z2VDYWNoZSgpKQorICAgIGlmIChmcmFtZVZpZXctPmZyYW1lKCkuZG9jdW1lbnQoKS5pblBhZ2VD
YWNoZSgpKQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAogICAgIFNjcm9sbGluZ1N0YXRlU2Nyb2xs
aW5nTm9kZSogc3RhdGVOb2RlID0gdG9TY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGUobV9zY3Jv
bGxpbmdTdGF0ZVRyZWUtPnN0YXRlTm9kZUZvcklEKGZyYW1lVmlldy0+c2Nyb2xsTGF5ZXJJRCgp
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdD
b29yZGluYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdD
b29yZGluYXRvci5jcHAKaW5kZXggNzcwMWJjNi4uYTEzYmRlMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGFnZS9zY3JvbGxpbmcvU2Nyb2xsaW5nQ29vcmRpbmF0b3IuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcApAQCAt
MTU4LDcgKzE1OCw3IEBAIHVuc2lnbmVkIFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpjb21wdXRlQ3Vy
cmVudFdoZWVsRXZlbnRIYW5kbGVyQ291bnQoKQogCiAgICAgZm9yIChGcmFtZSogZnJhbWUgPSAm
bV9wYWdlLT5tYWluRnJhbWUoKTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyZWUoKS50cmF2ZXJz
ZU5leHQoKSkgewogICAgICAgICBpZiAoZnJhbWUtPmRvY3VtZW50KCkpCi0gICAgICAgICAgICB3
aGVlbEV2ZW50SGFuZGxlckNvdW50ICs9IGZyYW1lLT5kb2N1bWVudCgpLT53aGVlbEV2ZW50SGFu
ZGxlckNvdW50KCk7CisgICAgICAgICAgICB3aGVlbEV2ZW50SGFuZGxlckNvdW50ICs9IGZyYW1l
LT5kb2N1bWVudCgpLndoZWVsRXZlbnRIYW5kbGVyQ291bnQoKTsKICAgICB9CiAKICAgICByZXR1
cm4gd2hlZWxFdmVudEhhbmRsZXJDb3VudDsKQEAgLTMxNSw3ICszMTUsNyBAQCBTeW5jaHJvbm91
c1Njcm9sbGluZ1JlYXNvbnMgU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnN5bmNocm9ub3VzU2Nyb2xs
aW5nUmVhc29ucygpCiAgICAgICAgIHN5bmNocm9ub3VzU2Nyb2xsaW5nUmVhc29ucyB8PSBIYXNW
aWV3cG9ydENvbnN0cmFpbmVkT2JqZWN0c1dpdGhvdXRTdXBwb3J0aW5nRml4ZWRMYXllcnM7CiAg
ICAgaWYgKHN1cHBvcnRzRml4ZWRQb3NpdGlvbkxheWVycygpICYmIGhhc1Zpc2libGVTbG93UmVw
YWludFZpZXdwb3J0Q29uc3RyYWluZWRPYmplY3RzKGZyYW1lVmlldykpCiAgICAgICAgIHN5bmNo
cm9ub3VzU2Nyb2xsaW5nUmVhc29ucyB8PSBIYXNOb25MYXllclZpZXdwb3J0Q29uc3RyYWluZWRP
YmplY3RzOwotICAgIGlmIChtX3BhZ2UtPm1haW5GcmFtZSgpLmRvY3VtZW50KCkgJiYgbV9wYWdl
LT5tYWluRnJhbWUoKS5kb2N1bWVudCgpLT5pc0ltYWdlRG9jdW1lbnQoKSkKKyAgICBpZiAobV9w
YWdlLT5tYWluRnJhbWUoKS5kb2N1bWVudCgpICYmIG1fcGFnZS0+bWFpbmZyYW1lKCkuZG9jdW1l
bnQoKS5pc0ltYWdlRG9jdW1lbnQoKSkKICAgICAgICAgc3luY2hyb25vdXNTY3JvbGxpbmdSZWFz
b25zIHw9IElzSW1hZ2VEb2N1bWVudDsKIAogICAgIHJldHVybiBzeW5jaHJvbm91c1Njcm9sbGlu
Z1JlYXNvbnM7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL3dpbi9GcmFtZVdpbi5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3dpbi9GcmFtZVdpbi5jcHAKaW5kZXggNjMwMzAwZi4u
NTlhYjI3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS93aW4vRnJhbWVXaW4uY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvd2luL0ZyYW1lV2luLmNwcApAQCAtNDcsNyArNDcs
NyBAQCB2b2lkIGNvbXB1dGVQYWdlUmVjdHNGb3JGcmFtZShGcmFtZSogZnJhbWUsIGNvbnN0IElu
dFJlY3QmIHByaW50UmVjdCwgZmxvYXQgaGVhZAogCiBHRElPYmplY3Q8SEJJVE1BUD4gaW1hZ2VG
cm9tU2VsZWN0aW9uKEZyYW1lKiBmcmFtZSwgYm9vbCBmb3JjZUJsYWNrVGV4dCkKIHsKLSAgICBm
cmFtZS0+ZG9jdW1lbnQoKS0+dXBkYXRlTGF5b3V0KCk7CisgICAgZnJhbWUtPmRvY3VtZW50KCku
dXBkYXRlTGF5b3V0KCk7CiAKICAgICBmcmFtZS0+dmlldygpLT5zZXRQYWludEJlaGF2aW9yKFBh
aW50QmVoYXZpb3JTZWxlY3Rpb25Pbmx5IHwgKGZvcmNlQmxhY2tUZXh0ID8gUGFpbnRCZWhhdmlv
ckZvcmNlQmxhY2tUZXh0IDogMCkpOwogICAgIEZsb2F0UmVjdCBmciA9IGZyYW1lLT5zZWxlY3Rp
b24oKS5zZWxlY3Rpb25Cb3VuZHMoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL0RyYWdJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9EcmFnSW1hZ2UuY3Bw
CmluZGV4IDg2Y2E0YzEuLmYyOWExOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL0RyYWdJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRHJhZ0ltYWdl
LmNwcApAQCAtNzUsNyArNzUsNyBAQCBzdHJ1Y3QgU2NvcGVkTm9kZURyYWdFbmFibGVyIHsKICAg
ICB7CiAgICAgICAgIGlmIChub2RlLnJlbmRlcmVyKCkpCiAgICAgICAgICAgICBub2RlLnJlbmRl
cmVyKCktPnVwZGF0ZURyYWdTdGF0ZSh0cnVlKTsKLSAgICAgICAgZnJhbWUuZG9jdW1lbnQoKS0+
dXBkYXRlTGF5b3V0KCk7CisgICAgICAgIGZyYW1lLmRvY3VtZW50KCkudXBkYXRlTGF5b3V0KCk7
CiAgICAgfQogCiAgICAgflNjb3BlZE5vZGVEcmFnRW5hYmxlcigpCkBAIC0xNDcsNyArMTQ3LDcg
QEAgc3RydWN0IFNjb3BlZEZyYW1lU2VsZWN0aW9uU3RhdGUgewogCiBEcmFnSW1hZ2VSZWYgY3Jl
YXRlRHJhZ0ltYWdlRm9yUmFuZ2UoRnJhbWUmIGZyYW1lLCBSYW5nZSYgcmFuZ2UsIGJvb2wgZm9y
Y2VCbGFja1RleHQpCiB7Ci0gICAgZnJhbWUuZG9jdW1lbnQoKS0+dXBkYXRlTGF5b3V0KCk7Cisg
ICAgZnJhbWUuZG9jdW1lbnQoKS51cGRhdGVMYXlvdXQoKTsKICAgICBSZW5kZXJWaWV3KiB2aWV3
ID0gZnJhbWUuY29udGVudFJlbmRlcmVyKCk7CiAgICAgaWYgKCF2aWV3KQogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvRE9NTWltZVR5
cGVBcnJheS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL0RPTU1pbWVUeXBlQXJyYXkuY3Bw
CmluZGV4IDdkMjEyMGQuLjFmOWY5Y2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsdWdp
bnMvRE9NTWltZVR5cGVBcnJheS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9ET01N
aW1lVHlwZUFycmF5LmNwcApAQCAtMTAzLDcgKzEwMyw3IEBAIFBsdWdpbkRhdGEqIERPTU1pbWVU
eXBlQXJyYXk6OmdldFBsdWdpbkRhdGEoKSBjb25zdAogICAgIGlmICghbV9mcmFtZS0+ZG9jdW1l
bnQoKSkKICAgICAgICAgcmV0dXJuIHBsdWdpbkRhdGE7CiAKLSAgICBJbnB1dEN1cnNvciYgY3Vy
c29yID0gbV9mcmFtZS0+ZG9jdW1lbnQoKS0+aW5wdXRDdXJzb3IoKTsKKyAgICBJbnB1dEN1cnNv
ciYgY3Vyc29yID0gbV9mcmFtZS0+ZG9jdW1lbnQoKS5pbnB1dEN1cnNvcigpOwogICAgIGlmIChj
dXJzb3IuaXNDYXB0dXJpbmcoKSkKICAgICAgICAgY3Vyc29yLmFwcGVuZElucHV0PEZldGNoUGx1
Z2luRGF0YT4ocGx1Z2luRGF0YSk7CiAgICAgZWxzZSBpZiAoY3Vyc29yLmlzUmVwbGF5aW5nKCkp
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvRE9NUGx1Z2luQXJyYXkuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9ET01QbHVnaW5BcnJheS5jcHAKaW5kZXggZDNhNjM3
Ny4uZmI4ZDBlYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9ET01QbHVnaW5B
cnJheS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9ET01QbHVnaW5BcnJheS5jcHAK
QEAgLTEwOCw3ICsxMDgsNyBAQCBQbHVnaW5EYXRhKiBET01QbHVnaW5BcnJheTo6cGx1Z2luRGF0
YSgpIGNvbnN0CiAgICAgaWYgKCFtX2ZyYW1lLT5kb2N1bWVudCgpKQogICAgICAgICByZXR1cm4g
cGx1Z2luRGF0YTsKIAotICAgIElucHV0Q3Vyc29yJiBjdXJzb3IgPSBtX2ZyYW1lLT5kb2N1bWVu
dCgpLT5pbnB1dEN1cnNvcigpOworICAgIElucHV0Q3Vyc29yJiBjdXJzb3IgPSBtX2ZyYW1lLT5k
b2N1bWVudCgpLmlucHV0Q3Vyc29yKCk7CiAgICAgaWYgKGN1cnNvci5pc0NhcHR1cmluZygpKQog
ICAgICAgICBjdXJzb3IuYXBwZW5kSW5wdXQ8RmV0Y2hQbHVnaW5EYXRhPihwbHVnaW5EYXRhKTsK
ICAgICBlbHNlIGlmIChjdXJzb3IuaXNSZXBsYXlpbmcoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGx1Z2lucy9QbHVnaW5WaWV3LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMv
UGx1Z2luVmlldy5jcHAKaW5kZXggOTQ4YzM5MC4uZmI3ZWM3NGIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsdWdpbnMvUGx1Z2luVmlldy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGx1
Z2lucy9QbHVnaW5WaWV3LmNwcApAQCAtMjI0LDcgKzIyNCw3IEBAIGJvb2wgUGx1Z2luVmlldzo6
c3RhcnRPckFkZFRvVW5zdGFydGVkTGlzdCgpCiAgICAgLy8gb3Vyc2VsdmVzLiBPdGhlcndpc2Us
IHRoZSBsb2FkZXIgd2lsbCB0cnkgdG8gZGVsaXZlciBkYXRhIGJlZm9yZSB3ZSd2ZQogICAgIC8v
IHN0YXJ0ZWQgdGhlIHBsdWctaW4uCiAgICAgaWYgKCFtX2xvYWRNYW51YWxseSAmJiAhbV9wYXJl
bnRGcmFtZS0+cGFnZSgpLT5jYW5TdGFydE1lZGlhKCkpIHsKLSAgICAgICAgbV9wYXJlbnRGcmFt
ZS0+ZG9jdW1lbnQoKS0+YWRkTWVkaWFDYW5TdGFydExpc3RlbmVyKHRoaXMpOworICAgICAgICBt
X3BhcmVudEZyYW1lLT5kb2N1bWVudCgpLmFkZE1lZGlhQ2FuU3RhcnRMaXN0ZW5lcih0aGlzKTsK
ICAgICAgICAgbV9pc1dhaXRpbmdUb1N0YXJ0ID0gdHJ1ZTsKICAgICAgICAgcmV0dXJuIHRydWU7
CiAgICAgfQpAQCAtMjY0LDcgKzI2NCw3IEBAIGJvb2wgUGx1Z2luVmlldzo6c3RhcnQoKQogICAg
IG1faXNTdGFydGVkID0gdHJ1ZTsKIAogICAgIGlmICghbV91cmwuaXNFbXB0eSgpICYmICFtX2xv
YWRNYW51YWxseSkgewotICAgICAgICBGcmFtZUxvYWRSZXF1ZXN0IGZyYW1lTG9hZFJlcXVlc3Qo
bV9wYXJlbnRGcmFtZS0+ZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKSk7CisgICAgICAgIEZy
YW1lTG9hZFJlcXVlc3QgZnJhbWVMb2FkUmVxdWVzdChtX3BhcmVudEZyYW1lLT5kb2N1bWVudCgp
LnNlY3VyaXR5T3JpZ2luKCkpOwogICAgICAgICBmcmFtZUxvYWRSZXF1ZXN0LnJlc291cmNlUmVx
dWVzdCgpLnNldEhUVFBNZXRob2QoIkdFVCIpOwogICAgICAgICBmcmFtZUxvYWRSZXF1ZXN0LnJl
c291cmNlUmVxdWVzdCgpLnNldFVSTChtX3VybCk7CiAgICAgICAgIGxvYWQoZnJhbWVMb2FkUmVx
dWVzdCwgZmFsc2UsIDApOwpAQCAtMzAwLDcgKzMwMCw3IEBAIFBsdWdpblZpZXc6On5QbHVnaW5W
aWV3KCkKICAgICAgICAgaW5zdGFuY2VNYXAoKS5yZW1vdmUobV9pbnN0YW5jZSk7CiAKICAgICBp
ZiAobV9pc1dhaXRpbmdUb1N0YXJ0KQotICAgICAgICBtX3BhcmVudEZyYW1lLT5kb2N1bWVudCgp
LT5yZW1vdmVNZWRpYUNhblN0YXJ0TGlzdGVuZXIodGhpcyk7CisgICAgICAgIG1fcGFyZW50RnJh
bWUtPmRvY3VtZW50KCkucmVtb3ZlTWVkaWFDYW5TdGFydExpc3RlbmVyKHRoaXMpOwogCiAgICAg
c3RvcCgpOwogCkBAIC01MzMsNyArNTMzLDcgQEAgTlBFcnJvciBQbHVnaW5WaWV3Ojpsb2FkKGNv
bnN0IEZyYW1lTG9hZFJlcXVlc3QmIGZyYW1lTG9hZFJlcXVlc3QsIGJvb2wgc2VuZE5vdGkKICAg
ICAgICAgLy8gRm9yIHNlY3VyaXR5IHJlYXNvbnMsIG9ubHkgYWxsb3cgSlMgcmVxdWVzdHMgdG8g
YmUgbWFkZSBvbiB0aGUgZnJhbWUgdGhhdCBjb250YWlucyB0aGUgcGx1Zy1pbi4KICAgICAgICAg
aWYgKCF0YXJnZXRGcmFtZU5hbWUuaXNOdWxsKCkgJiYgbV9wYXJlbnRGcmFtZS0+dHJlZSgpLmZp
bmQodGFyZ2V0RnJhbWVOYW1lKSAhPSBtX3BhcmVudEZyYW1lKQogICAgICAgICAgICAgcmV0dXJu
IE5QRVJSX0lOVkFMSURfUEFSQU07Ci0gICAgfSBlbHNlIGlmICghbV9wYXJlbnRGcmFtZS0+ZG9j
dW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKS0+Y2FuRGlzcGxheSh1cmwpKQorICAgIH0gZWxzZSBp
ZiAoIW1fcGFyZW50RnJhbWUtPmRvY3VtZW50KCkuc2VjdXJpdHlPcmlnaW4oKS0+Y2FuRGlzcGxh
eSh1cmwpKQogICAgICAgICByZXR1cm4gTlBFUlJfR0VORVJJQ19FUlJPUjsKIAogICAgIHNjaGVk
dWxlUmVxdWVzdChhZG9wdFB0cihuZXcgUGx1Z2luUmVxdWVzdChmcmFtZUxvYWRSZXF1ZXN0LCBz
ZW5kTm90aWZpY2F0aW9uLCBub3RpZnlEYXRhLCBhcmVQb3B1cHNBbGxvd2VkKCkpKSk7CkBAIC01
NTQsMjIgKzU1NCwyMiBAQCBzdGF0aWMgVVJMIG1ha2VVUkwoY29uc3QgVVJMJiBiYXNlVVJMLCBj
b25zdCBjaGFyKiByZWxhdGl2ZVVSTFN0cmluZykKIAogTlBFcnJvciBQbHVnaW5WaWV3OjpnZXRV
UkxOb3RpZnkoY29uc3QgY2hhciogdXJsLCBjb25zdCBjaGFyKiB0YXJnZXQsIHZvaWQqIG5vdGlm
eURhdGEpCiB7Ci0gICAgRnJhbWVMb2FkUmVxdWVzdCBmcmFtZUxvYWRSZXF1ZXN0KG1fcGFyZW50
RnJhbWUtPmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCkpOworICAgIEZyYW1lTG9hZFJlcXVl
c3QgZnJhbWVMb2FkUmVxdWVzdChtX3BhcmVudEZyYW1lLT5kb2N1bWVudCgpLnNlY3VyaXR5T3Jp
Z2luKCkpOwogCiAgICAgZnJhbWVMb2FkUmVxdWVzdC5zZXRGcmFtZU5hbWUodGFyZ2V0KTsKICAg
ICBmcmFtZUxvYWRSZXF1ZXN0LnJlc291cmNlUmVxdWVzdCgpLnNldEhUVFBNZXRob2QoIkdFVCIp
OwotICAgIGZyYW1lTG9hZFJlcXVlc3QucmVzb3VyY2VSZXF1ZXN0KCkuc2V0VVJMKG1ha2VVUkwo
bV9wYXJlbnRGcmFtZS0+ZG9jdW1lbnQoKS0+YmFzZVVSTCgpLCB1cmwpKTsKKyAgICBmcmFtZUxv
YWRSZXF1ZXN0LnJlc291cmNlUmVxdWVzdCgpLnNldFVSTChtYWtlVVJMKG1fcGFyZW50RnJhbWUt
PmRvY3VtZW50KCkuYmFzZVVSTCgpLCB1cmwpKTsKIAogICAgIHJldHVybiBsb2FkKGZyYW1lTG9h
ZFJlcXVlc3QsIHRydWUsIG5vdGlmeURhdGEpOwogfQogCiBOUEVycm9yIFBsdWdpblZpZXc6Omdl
dFVSTChjb25zdCBjaGFyKiB1cmwsIGNvbnN0IGNoYXIqIHRhcmdldCkKIHsKLSAgICBGcmFtZUxv
YWRSZXF1ZXN0IGZyYW1lTG9hZFJlcXVlc3QobV9wYXJlbnRGcmFtZS0+ZG9jdW1lbnQoKS0+c2Vj
dXJpdHlPcmlnaW4oKSk7CisgICAgRnJhbWVMb2FkUmVxdWVzdCBmcmFtZUxvYWRSZXF1ZXN0KG1f
cGFyZW50RnJhbWUtPmRvY3VtZW50KCkuc2VjdXJpdHlPcmlnaW4oKSk7CiAKICAgICBmcmFtZUxv
YWRSZXF1ZXN0LnNldEZyYW1lTmFtZSh0YXJnZXQpOwogICAgIGZyYW1lTG9hZFJlcXVlc3QucmVz
b3VyY2VSZXF1ZXN0KCkuc2V0SFRUUE1ldGhvZCgiR0VUIik7Ci0gICAgZnJhbWVMb2FkUmVxdWVz
dC5yZXNvdXJjZVJlcXVlc3QoKS5zZXRVUkwobWFrZVVSTChtX3BhcmVudEZyYW1lLT5kb2N1bWVu
dCgpLT5iYXNlVVJMKCksIHVybCkpOworICAgIGZyYW1lTG9hZFJlcXVlc3QucmVzb3VyY2VSZXF1
ZXN0KCkuc2V0VVJMKG1ha2VVUkwobV9wYXJlbnRGcmFtZS0+ZG9jdW1lbnQoKS5iYXNlVVJMKCks
IHVybCkpOwogCiAgICAgcmV0dXJuIGxvYWQoZnJhbWVMb2FkUmVxdWVzdCwgZmFsc2UsIDApOwog
fQpAQCAtODc3LDcgKzg3Nyw3IEBAIHZvaWQgUGx1Z2luVmlldzo6Zm9jdXNQbHVnaW5FbGVtZW50
KCkKICAgICBpZiAoUGFnZSogcGFnZSA9IG1fcGFyZW50RnJhbWUtPnBhZ2UoKSkKICAgICAgICAg
cGFnZS0+Zm9jdXNDb250cm9sbGVyKCkuc2V0Rm9jdXNlZEVsZW1lbnQobV9lbGVtZW50LCBtX3Bh
cmVudEZyYW1lKTsKICAgICBlbHNlCi0gICAgICAgIG1fcGFyZW50RnJhbWUtPmRvY3VtZW50KCkt
PnNldEZvY3VzZWRFbGVtZW50KG1fZWxlbWVudCk7CisgICAgICAgIG1fcGFyZW50RnJhbWUtPmRv
Y3VtZW50KCkuc2V0Rm9jdXNlZEVsZW1lbnQobV9lbGVtZW50KTsKIH0KIAogdm9pZCBQbHVnaW5W
aWV3OjpkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2Up
CkBAIC0xMTMwLDcgKzExMzAsNyBAQCBOUEVycm9yIFBsdWdpblZpZXc6OmhhbmRsZVBvc3QoY29u
c3QgY2hhciogdXJsLCBjb25zdCBjaGFyKiB0YXJnZXQsIHVpbnQzMl90IGxlbgogICAgIGlmICgh
dXJsIHx8ICFsZW4gfHwgIWJ1ZikKICAgICAgICAgcmV0dXJuIE5QRVJSX0lOVkFMSURfUEFSQU07
CiAKLSAgICBGcmFtZUxvYWRSZXF1ZXN0IGZyYW1lTG9hZFJlcXVlc3QobV9wYXJlbnRGcmFtZS0+
ZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKSk7CisgICAgRnJhbWVMb2FkUmVxdWVzdCBmcmFt
ZUxvYWRSZXF1ZXN0KG1fcGFyZW50RnJhbWUtPmRvY3VtZW50KCkuc2VjdXJpdHlPcmlnaW4oKSk7
CiAKICAgICBIVFRQSGVhZGVyTWFwIGhlYWRlckZpZWxkczsKICAgICBWZWN0b3I8Y2hhcj4gYnVm
ZmVyOwpAQCAtMTE3NCw3ICsxMTc0LDcgQEAgTlBFcnJvciBQbHVnaW5WaWV3OjpoYW5kbGVQb3N0
KGNvbnN0IGNoYXIqIHVybCwgY29uc3QgY2hhciogdGFyZ2V0LCB1aW50MzJfdCBsZW4KICAgICB9
CiAKICAgICBmcmFtZUxvYWRSZXF1ZXN0LnJlc291cmNlUmVxdWVzdCgpLnNldEhUVFBNZXRob2Qo
IlBPU1QiKTsKLSAgICBmcmFtZUxvYWRSZXF1ZXN0LnJlc291cmNlUmVxdWVzdCgpLnNldFVSTCht
YWtlVVJMKG1fcGFyZW50RnJhbWUtPmRvY3VtZW50KCktPmJhc2VVUkwoKSwgdXJsKSk7CisgICAg
ZnJhbWVMb2FkUmVxdWVzdC5yZXNvdXJjZVJlcXVlc3QoKS5zZXRVUkwobWFrZVVSTChtX3BhcmVu
dEZyYW1lLT5kb2N1bWVudCgpLmJhc2VVUkwoKSwgdXJsKSk7CiAgICAgZnJhbWVMb2FkUmVxdWVz
dC5yZXNvdXJjZVJlcXVlc3QoKS5hZGRIVFRQSGVhZGVyRmllbGRzKGhlYWRlckZpZWxkcyk7CiAg
ICAgZnJhbWVMb2FkUmVxdWVzdC5yZXNvdXJjZVJlcXVlc3QoKS5zZXRIVFRQQm9keShGb3JtRGF0
YTo6Y3JlYXRlKHBvc3REYXRhLCBwb3N0RGF0YUxlbmd0aCkpOwogICAgIGZyYW1lTG9hZFJlcXVl
c3Quc2V0RnJhbWVOYW1lKHRhcmdldCk7CkBAIC0xMzc5LDcgKzEzNzksNyBAQCBOUEVycm9yIFBs
dWdpblZpZXc6OmdldFZhbHVlRm9yVVJMKE5QTlVSTFZhcmlhYmxlIHZhcmlhYmxlLCBjb25zdCBj
aGFyKiB1cmwsIGNoYQogCiAgICAgc3dpdGNoICh2YXJpYWJsZSkgewogICAgIGNhc2UgTlBOVVJM
VkNvb2tpZTogewotICAgICAgICBVUkwgdShtX3BhcmVudEZyYW1lLT5kb2N1bWVudCgpLT5iYXNl
VVJMKCksIHVybCk7CisgICAgICAgIFVSTCB1KG1fcGFyZW50RnJhbWUtPmRvY3VtZW50KCkuYmFz
ZVVSTCgpLCB1cmwpOwogICAgICAgICBpZiAodS5pc1ZhbGlkKCkpIHsKICAgICAgICAgICAgIEZy
YW1lKiBmcmFtZSA9IGdldEZyYW1lKHBhcmVudEZyYW1lKCksIG1fZWxlbWVudCk7CiAgICAgICAg
ICAgICBpZiAoZnJhbWUpIHsKQEAgLTE0MDEsNyArMTQwMSw3IEBAIE5QRXJyb3IgUGx1Z2luVmll
dzo6Z2V0VmFsdWVGb3JVUkwoTlBOVVJMVmFyaWFibGUgdmFyaWFibGUsIGNvbnN0IGNoYXIqIHVy
bCwgY2hhCiAgICAgICAgIGJyZWFrOwogICAgIH0KICAgICBjYXNlIE5QTlVSTFZQcm94eTogewot
ICAgICAgICBVUkwgdShtX3BhcmVudEZyYW1lLT5kb2N1bWVudCgpLT5iYXNlVVJMKCksIHVybCk7
CisgICAgICAgIFVSTCB1KG1fcGFyZW50RnJhbWUtPmRvY3VtZW50KCkuYmFzZVVSTCgpLCB1cmwp
OwogICAgICAgICBpZiAodS5pc1ZhbGlkKCkpIHsKICAgICAgICAgICAgIEZyYW1lKiBmcmFtZSA9
IGdldEZyYW1lKHBhcmVudEZyYW1lKCksIG1fZWxlbWVudCk7CiAgICAgICAgICAgICBjb25zdCBG
cmFtZUxvYWRlciogZnJhbWVMb2FkZXIgPSBmcmFtZSA/ICZmcmFtZS0+bG9hZGVyKCkgOiAwOwpA
QCAtMTQ0MCw3ICsxNDQwLDcgQEAgTlBFcnJvciBQbHVnaW5WaWV3OjpzZXRWYWx1ZUZvclVSTChO
UE5VUkxWYXJpYWJsZSB2YXJpYWJsZSwgY29uc3QgY2hhciogdXJsLCBjb24KIAogICAgIHN3aXRj
aCAodmFyaWFibGUpIHsKICAgICBjYXNlIE5QTlVSTFZDb29raWU6IHsKLSAgICAgICAgVVJMIHUo
bV9wYXJlbnRGcmFtZS0+ZG9jdW1lbnQoKS0+YmFzZVVSTCgpLCB1cmwpOworICAgICAgICBVUkwg
dShtX3BhcmVudEZyYW1lLT5kb2N1bWVudCgpLmJhc2VVUkwoKSwgdXJsKTsKICAgICAgICAgaWYg
KHUuaXNWYWxpZCgpKSB7CiAgICAgICAgICAgICBjb25zdCBTdHJpbmcgY29va2llU3RyID0gU3Ry
aW5nOjpmcm9tVVRGOCh2YWx1ZSwgbGVuKTsKICAgICAgICAgICAgIEZyYW1lKiBmcmFtZSA9IGdl
dEZyYW1lKHBhcmVudEZyYW1lKCksIG1fZWxlbWVudCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbHVnaW5zL21hYy9QbHVnaW5WaWV3TWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGx1Z2lu
cy9tYWMvUGx1Z2luVmlld01hYy5tbQppbmRleCAxMDBlM2JmLi43NTQ1YTU0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL21hYy9QbHVnaW5WaWV3TWFjLm1tCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsdWdpbnMvbWFjL1BsdWdpblZpZXdNYWMubW0KQEAgLTQ0Nyw3ICs0NDcsNyBA
QCB2b2lkIFBsdWdpblZpZXc6OmhhbmRsZU1vdXNlRXZlbnQoTW91c2VFdmVudCogZXZlbnQpCiAg
ICAgICAgICAgICAvLyBUaGUgcGx1Z2luIG5lZWRzIGZvY3VzIHRvIHJlY2VpdmUga2V5Ym9hcmQg
ZXZlbnRzCiAgICAgICAgICAgICBpZiAoUGFnZSogcGFnZSA9IG1fcGFyZW50RnJhbWUtPnBhZ2Uo
KSkKICAgICAgICAgICAgICAgICBwYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5zZXRGb2N1c2VkRnJh
bWUobV9wYXJlbnRGcmFtZSk7Ci0gICAgICAgICAgICBtX3BhcmVudEZyYW1lLT5kb2N1bWVudCgp
LT5zZXRGb2N1c2VkRWxlbWVudChtX2VsZW1lbnQpOworICAgICAgICAgICAgbV9wYXJlbnRGcmFt
ZS0+ZG9jdW1lbnQoKS5zZXRGb2N1c2VkRWxlbWVudChtX2VsZW1lbnQpOwogICAgICAgICAgICAg
YnJlYWs7CiAKICAgICAgICAgY2FzZSBOU0xlZnRNb3VzZVVwOgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lbnVMaXN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJNZW51TGlzdC5jcHAKaW5kZXggMzBhYTRlYy4uYWViZGU4NSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lbnVMaXN0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTWVudUxpc3QuY3BwCkBAIC0zOTUsNyArMzk1
LDcgQEAgdm9pZCBSZW5kZXJNZW51TGlzdDo6dmFsdWVDaGFuZ2VkKHVuc2lnbmVkIGxpc3RJbmRl
eCwgYm9vbCBmaXJlT25DaGFuZ2UpCiB7CiAgICAgLy8gQ2hlY2sgdG8gZW5zdXJlIGEgcGFnZSBu
YXZpZ2F0aW9uIGhhcyBub3Qgb2NjdXJyZWQgd2hpbGUKICAgICAvLyB0aGUgcG9wdXAgd2FzIHVw
LgotICAgIGlmICgmZG9jdW1lbnQoKSAhPSBkb2N1bWVudCgpLmZyYW1lKCktPmRvY3VtZW50KCkp
CisgICAgaWYgKCZkb2N1bWVudCgpICE9ICZkb2N1bWVudCgpLmZyYW1lKCktPmRvY3VtZW50KCkp
CiAgICAgICAgIHJldHVybjsKIAogICAgIHNlbGVjdEVsZW1lbnQoKS5vcHRpb25TZWxlY3RlZEJ5
VXNlcihzZWxlY3RFbGVtZW50KCkubGlzdFRvT3B0aW9uSW5kZXgobGlzdEluZGV4KSwgZmlyZU9u
Q2hhbmdlKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUcmVl
QXNUZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJUcmVlQXNUZXh0LmNw
cAppbmRleCBiODQxZTA1Li4zMWYyMzk4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyVHJlZUFzVGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L1JlbmRlclRyZWVBc1RleHQuY3BwCkBAIC04ODIsNyArODgyLDcgQEAgU3RyaW5nIGV4dGVybmFs
UmVwcmVzZW50YXRpb24oRnJhbWUqIGZyYW1lLCBSZW5kZXJBc1RleHRCZWhhdmlvciBiZWhhdmlv
cikKICAgICBpZiAoYmVoYXZpb3IgJiBSZW5kZXJBc1RleHRQcmludGluZ01vZGUpCiAgICAgICAg
IHByaW50Q29udGV4dC5iZWdpbih0b1JlbmRlckJveChyZW5kZXJlciktPndpZHRoKCkpOwogICAg
IGlmICghKGJlaGF2aW9yICYgUmVuZGVyQXNUZXh0RG9udFVwZGF0ZUxheW91dCkpCi0gICAgICAg
IGZyYW1lLT5kb2N1bWVudCgpLT51cGRhdGVMYXlvdXQoKTsKKyAgICAgICAgZnJhbWUtPmRvY3Vt
ZW50KCkudXBkYXRlTGF5b3V0KCk7CiAKICAgICByZXR1cm4gZXh0ZXJuYWxSZXByZXNlbnRhdGlv
bih0b1JlbmRlckJveChyZW5kZXJlciksIGJlaGF2aW9yKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUm9vdC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jvb3QuY3BwCmluZGV4IDUzMDAzMTQuLmJjOWE3Mjkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUm9vdC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSb290LmNwcApA
QCAtMTMwLDcgKzEzMCw3IEBAIGJvb2wgUmVuZGVyU1ZHUm9vdDo6aXNFbWJlZGRlZFRocm91Z2hG
cmFtZUNvbnRhaW5pbmdTVkdEb2N1bWVudCgpIGNvbnN0CiAgICAgLy8gYnV0IHdlIG9ubHkgbmVn
b3RpYXRlIGlmIHdlJ3JlIGluIGFuIFNWRyBkb2N1bWVudC4KICAgICBpZiAoIWZyYW1lKCkub3du
ZXJSZW5kZXJlcigpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgcmV0dXJuIGZyYW1lKCku
ZG9jdW1lbnQoKS0+aXNTVkdEb2N1bWVudCgpOworICAgIHJldHVybiBmcmFtZSgpLmRvY3VtZW50
KCkuaXNTVkdEb2N1bWVudCgpOwogfQogCiBzdGF0aWMgaW5saW5lIExheW91dFVuaXQgcmVzb2x2
ZUxlbmd0aEF0dHJpYnV0ZUZvclNWRyhjb25zdCBMZW5ndGgmIGxlbmd0aCwgZmxvYXQgc2NhbGUs
IGZsb2F0IG1heFNpemUsIFJlbmRlclZpZXcqIHJlbmRlclZpZXcpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZXBsYXkvUmVwbGF5Q29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9y
ZXBsYXkvUmVwbGF5Q29udHJvbGxlci5jcHAKaW5kZXggOGQ2YTM0ZS4uYjIwNTQ3YyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVwbGF5L1JlcGxheUNvbnRyb2xsZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3JlcGxheS9SZXBsYXlDb250cm9sbGVyLmNwcApAQCAtMjM0LDcgKzIzNCw3
IEBAIHZvaWQgUmVwbGF5Q29udHJvbGxlcjo6dW5sb2FkU2VnbWVudChib29sIHN1cHByZXNzTm90
aWZpY2F0aW9ucykKICAgICBSZWZQdHI8UmVwbGF5U2Vzc2lvblNlZ21lbnQ+IHVubG9hZGVkU2Vn
bWVudCA9IG1fbG9hZGVkU2VnbWVudC5yZWxlYXNlKCk7CiAgICAgZm9yIChGcmFtZSogZnJhbWUg
PSAmbV9wYWdlLm1haW5GcmFtZSgpOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgpLnRyYXZl
cnNlTmV4dCgpKSB7CiAgICAgICAgIGZyYW1lLT5zY3JpcHQoKS5nbG9iYWxPYmplY3QobWFpblRo
cmVhZE5vcm1hbFdvcmxkKCkpLT5zZXRJbnB1dEN1cnNvcihtX2VtcHR5Q3Vyc29yKTsKLSAgICAg
ICAgZnJhbWUtPmRvY3VtZW50KCktPnNldElucHV0Q3Vyc29yKG1fZW1wdHlDdXJzb3IpOworICAg
ICAgICBmcmFtZS0+ZG9jdW1lbnQoKS5zZXRJbnB1dEN1cnNvcihtX2VtcHR5Q3Vyc29yKTsKICAg
ICB9CiAKICAgICAvLyBXaGVuIHdlIHN0b3AgY2FwdHVyaW5nLCBkb24ndCBzZW5kIG91dCBzZWdt
ZW50IHVubG9hZGVkIGV2ZW50cyBzaW5jZSB3ZQpAQCAtMzY3LDcgKzM2Nyw3IEBAIHZvaWQgUmVw
bGF5Q29udHJvbGxlcjo6ZnJhbWVOYXZpZ2F0ZWQoRG9jdW1lbnRMb2FkZXIqIGxvYWRlcikKIAog
ICAgIC8vIFdlIHN0b3JlIHRoZSBpbnB1dCBjdXJzb3IgaW4gYm90aCBEb2N1bWVudCBhbmQgSlNE
T01XaW5kb3csIHNvIHRoYXQKICAgICAvLyByZXBsYXkgc3RhdGUgaXMgYWNjZXNzaWJsZSBmcm9t
IEphdmFTY3JpcHRDb3JlIGFuZCBzY3JpcHQtZnJlZSBsYXlvdXQgY29kZS4KLSAgICBsb2FkZXIt
PmZyYW1lKCktPmRvY3VtZW50KCktPnNldElucHV0Q3Vyc29yKG1fYWN0aXZlQ3Vyc29yLmdldCgp
KTsKKyAgICBsb2FkZXItPmZyYW1lKCktPmRvY3VtZW50KCkuc2V0SW5wdXRDdXJzb3IobV9hY3Rp
dmVDdXJzb3IuZ2V0KCkpOwogICAgIGxvYWRlci0+ZnJhbWUoKS0+c2NyaXB0KCkuZ2xvYmFsT2Jq
ZWN0KG1haW5UaHJlYWROb3JtYWxXb3JsZCgpKS0+c2V0SW5wdXRDdXJzb3IobV9hY3RpdmVDdXJz
b3IuZ2V0KCkpOwogfQogCkBAIC0zODIsNyArMzgyLDcgQEAgdm9pZCBSZXBsYXlDb250cm9sbGVy
OjpmcmFtZURldGFjaGVkKEZyYW1lKiBmcmFtZSkKICAgICAvLyBJZiB0aGUgZnJhbWUncyBjdXJz
b3IgaXNuJ3QgY2FwdHVyaW5nIG9yIHJlcGxheWluZywgd2Ugc2hvdWxkIGRvIG5vdGhpbmcuCiAg
ICAgLy8gVGhpcyBpcyB0aGUgY2FzZSBmb3IgdGhlICJvdXRib3VuZCIgZnJhbWUgd2hlbiBzdGFy
dGluZyBjYXB0dXJlLCBvciB3aGVuCiAgICAgLy8gd2UgY2xlYXIgdGhlIGlucHV0IGN1cnNvciB0
byBmaW5pc2ggb3IgcHJlbWF0dXJlbHkgdW5sb2FkIGEgc2VnbWVudC4KLSAgICBpZiAoZnJhbWUt
PmRvY3VtZW50KCktPmlucHV0Q3Vyc29yKCkuaXNDYXB0dXJpbmcoKSkgeworICAgIGlmIChmcmFt
ZS0+ZG9jdW1lbnQoKS5pbnB1dEN1cnNvcigpLmlzQ2FwdHVyaW5nKCkpIHsKICAgICAgICAgQVNT
RVJUKG1fc2VnbWVudFN0YXRlID09IFNlZ21lbnRTdGF0ZTo6QXBwZW5kaW5nKTsKICAgICAgICAg
Y29tcGxldGVTZWdtZW50KCk7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVw
bGF5L1JlcGxheUlucHV0Q3JlYXRpb25NZXRob2RzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlcGxh
eS9SZXBsYXlJbnB1dENyZWF0aW9uTWV0aG9kcy5jcHAKaW5kZXggMGVkM2UyMy4uNDI2Zjg2NyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVwbGF5L1JlcGxheUlucHV0Q3JlYXRpb25NZXRo
b2RzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZXBsYXkvUmVwbGF5SW5wdXRDcmVhdGlvbk1l
dGhvZHMuY3BwCkBAIC00Myw4ICs0Myw4IEBAIHN0ZDo6dW5pcXVlX3B0cjxJbml0aWFsTmF2aWdh
dGlvbj4gSW5pdGlhbE5hdmlnYXRpb246OmNyZWF0ZUZyb21QYWdlKGNvbnN0IFBhZ2UmCiAgICAg
QVNTRVJUKG1haW5GcmFtZS5kb2N1bWVudCgpKTsKIAogICAgIC8vIE1ha2Ugc3VyZSB0aGF0IHRo
aXMgaXMgaW4gc3luYyB3aXRoIFJlcGxheUNvbnRyb2xsZXI6OmJlZ2luQ2FwdHVyaW5nKCkuCi0g
ICAgUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBvcmlnaW5Db3B5ID0gbWFpbkZyYW1lLmRvY3VtZW50
KCktPnNlY3VyaXR5T3JpZ2luKCktPmlzb2xhdGVkQ29weSgpOwotICAgIFVSTCB1cmwgPSBtYWlu
RnJhbWUuZG9jdW1lbnQoKS0+dXJsKCk7CisgICAgUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBvcmln
aW5Db3B5ID0gbWFpbkZyYW1lLmRvY3VtZW50KCkuc2VjdXJpdHlPcmlnaW4oKS0+aXNvbGF0ZWRD
b3B5KCk7CisgICAgVVJMIHVybCA9IG1haW5GcmFtZS5kb2N1bWVudCgpLnVybCgpOwogICAgIFN0
cmluZyByZWZlcnJlciA9IG1haW5GcmFtZS5sb2FkZXIoKS5yZWZlcnJlcigpOwogICAgIHJldHVy
biBzdGQ6Om1ha2VfdW5pcXVlPEluaXRpYWxOYXZpZ2F0aW9uPihvcmlnaW5Db3B5LCB1cmwsIHJl
ZmVycmVyKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZS5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2UuY3BwCmluZGV4IDgxYmFlNjQuLjA5
NDMwMjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlLmNwcApAQCAtMTYyLDcgKzE2Miw3IEBA
IGJvb2wgU3RvcmFnZTo6aXNEaXNhYmxlZEJ5UHJpdmF0ZUJyb3dzaW5nKCkgY29uc3QKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogCiAgICAgaWYgKG1fc3RvcmFnZUFyZWEtPnN0b3JhZ2VUeXBlKCkg
PT0gTG9jYWxTdG9yYWdlKSB7Ci0gICAgICAgIGlmIChTY2hlbWVSZWdpc3RyeTo6YWxsb3dzTG9j
YWxTdG9yYWdlQWNjZXNzSW5Qcml2YXRlQnJvd3NpbmcobV9mcmFtZS0+ZG9jdW1lbnQoKS0+c2Vj
dXJpdHlPcmlnaW4oKS0+cHJvdG9jb2woKSkpCisgICAgICAgIGlmIChTY2hlbWVSZWdpc3RyeTo6
YWxsb3dzTG9jYWxTdG9yYWdlQWNjZXNzSW5Qcml2YXRlQnJvd3NpbmcobV9mcmFtZS0+ZG9jdW1l
bnQoKS5zZWN1cml0eU9yaWdpbigpLT5wcm90b2NvbCgpKSkKICAgICAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFn
ZUV2ZW50RGlzcGF0Y2hlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VFdmVu
dERpc3BhdGNoZXIuY3BwCmluZGV4IGI0ZGU5YjguLjk4NmY1OGYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZUV2ZW50RGlzcGF0Y2hlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlRXZlbnREaXNwYXRjaGVyLmNwcApAQCAtNDgsMTEgKzQ4
LDExIEBAIHZvaWQgU3RvcmFnZUV2ZW50RGlzcGF0Y2hlcjo6ZGlzcGF0Y2hTZXNzaW9uU3RvcmFn
ZUV2ZW50cyhjb25zdCBTdHJpbmcmIGtleSwgY29uCiAKICAgICAvLyBTZW5kIGV2ZW50cyBvbmx5
IHRvIG91ciBwYWdlLgogICAgIGZvciAoRnJhbWUqIGZyYW1lID0gJnBhZ2UtPm1haW5GcmFtZSgp
OyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgpLnRyYXZlcnNlTmV4dCgpKSB7Ci0gICAgICAg
IGlmIChzb3VyY2VGcmFtZSAhPSBmcmFtZSAmJiBmcmFtZS0+ZG9jdW1lbnQoKS0+c2VjdXJpdHlP
cmlnaW4oKS0+ZXF1YWwoc2VjdXJpdHlPcmlnaW4pKQorICAgICAgICBpZiAoc291cmNlRnJhbWUg
IT0gZnJhbWUgJiYgZnJhbWUtPmRvY3VtZW50KCkuc2VjdXJpdHlPcmlnaW4oKS0+ZXF1YWwoc2Vj
dXJpdHlPcmlnaW4pKQogICAgICAgICAgICAgZnJhbWVzLmFwcGVuZChmcmFtZSk7CiAgICAgfQog
Ci0gICAgZGlzcGF0Y2hTZXNzaW9uU3RvcmFnZUV2ZW50c1RvRnJhbWVzKCpwYWdlLCBmcmFtZXMs
IGtleSwgb2xkVmFsdWUsIG5ld1ZhbHVlLCBzb3VyY2VGcmFtZS0+ZG9jdW1lbnQoKS0+dXJsKCks
IHNlY3VyaXR5T3JpZ2luKTsKKyAgICBkaXNwYXRjaFNlc3Npb25TdG9yYWdlRXZlbnRzVG9GcmFt
ZXMoKnBhZ2UsIGZyYW1lcywga2V5LCBvbGRWYWx1ZSwgbmV3VmFsdWUsIHNvdXJjZUZyYW1lLT5k
b2N1bWVudCgpLnVybCgpLCBzZWN1cml0eU9yaWdpbik7CiB9CiAKIHZvaWQgU3RvcmFnZUV2ZW50
RGlzcGF0Y2hlcjo6ZGlzcGF0Y2hMb2NhbFN0b3JhZ2VFdmVudHMoY29uc3QgU3RyaW5nJiBrZXks
IGNvbnN0IFN0cmluZyYgb2xkVmFsdWUsIGNvbnN0IFN0cmluZyYgbmV3VmFsdWUsIFNlY3VyaXR5
T3JpZ2luKiBzZWN1cml0eU9yaWdpbiwgRnJhbWUqIHNvdXJjZUZyYW1lKQpAQCAtNjcsMTIgKzY3
LDEyIEBAIHZvaWQgU3RvcmFnZUV2ZW50RGlzcGF0Y2hlcjo6ZGlzcGF0Y2hMb2NhbFN0b3JhZ2VF
dmVudHMoY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0CiAgICAgY29uc3QgSGFzaFNldDxQYWdlKj4m
IHBhZ2VzID0gcGFnZS0+Z3JvdXAoKS5wYWdlcygpOwogICAgIGZvciAoSGFzaFNldDxQYWdlKj46
OmNvbnN0X2l0ZXJhdG9yIGl0ID0gcGFnZXMuYmVnaW4oKSwgZW5kID0gcGFnZXMuZW5kKCk7IGl0
ICE9IGVuZDsgKytpdCkgewogICAgICAgICBmb3IgKEZyYW1lKiBmcmFtZSA9ICYoKml0KS0+bWFp
bkZyYW1lKCk7IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50cmVlKCkudHJhdmVyc2VOZXh0KCkpIHsK
LSAgICAgICAgICAgIGlmIChzb3VyY2VGcmFtZSAhPSBmcmFtZSAmJiBmcmFtZS0+ZG9jdW1lbnQo
KS0+c2VjdXJpdHlPcmlnaW4oKS0+ZXF1YWwoc2VjdXJpdHlPcmlnaW4pKQorICAgICAgICAgICAg
aWYgKHNvdXJjZUZyYW1lICE9IGZyYW1lICYmIGZyYW1lLT5kb2N1bWVudCgpLnNlY3VyaXR5T3Jp
Z2luKCktPmVxdWFsKHNlY3VyaXR5T3JpZ2luKSkKICAgICAgICAgICAgICAgICBmcmFtZXMuYXBw
ZW5kKGZyYW1lKTsKICAgICAgICAgfQogICAgIH0KIAotICAgIGRpc3BhdGNoTG9jYWxTdG9yYWdl
RXZlbnRzVG9GcmFtZXMocGFnZS0+Z3JvdXAoKSwgZnJhbWVzLCBrZXksIG9sZFZhbHVlLCBuZXdW
YWx1ZSwgc291cmNlRnJhbWUtPmRvY3VtZW50KCktPnVybCgpLCBzZWN1cml0eU9yaWdpbik7Cisg
ICAgZGlzcGF0Y2hMb2NhbFN0b3JhZ2VFdmVudHNUb0ZyYW1lcyhwYWdlLT5ncm91cCgpLCBmcmFt
ZXMsIGtleSwgb2xkVmFsdWUsIG5ld1ZhbHVlLCBzb3VyY2VGcmFtZS0+ZG9jdW1lbnQoKS51cmwo
KSwgc2VjdXJpdHlPcmlnaW4pOwogfQogCiB2b2lkIFN0b3JhZ2VFdmVudERpc3BhdGNoZXI6OmRp
c3BhdGNoU2Vzc2lvblN0b3JhZ2VFdmVudHNUb0ZyYW1lcyhQYWdlJiBwYWdlLCBjb25zdCBWZWN0
b3I8UmVmUHRyPEZyYW1lPj4mIGZyYW1lcywgY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0cmlu
ZyYgb2xkVmFsdWUsIGNvbnN0IFN0cmluZyYgbmV3VmFsdWUsIGNvbnN0IFN0cmluZyYgdXJsLCBT
ZWN1cml0eU9yaWdpbiogc2VjdXJpdHlPcmlnaW4pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS90ZXN0aW5nL0ludGVybmFscy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5nL0ludGVybmFs
cy5jcHAKaW5kZXggNWM5MWM5YS4uOGRiZWExOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
dGVzdGluZy9JbnRlcm5hbHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Rlc3RpbmcvSW50ZXJu
YWxzLmNwcApAQCAtMzk3LDcgKzM5Nyw3IEBAIHVuc2lnbmVkIEludGVybmFsczo6bGFzdFNwYXRp
YWxOYXZpZ2F0aW9uQ2FuZGlkYXRlQ291bnQoRXhjZXB0aW9uQ29kZSYgZWMpIGNvbnN0CiAKIHVu
c2lnbmVkIEludGVybmFsczo6bnVtYmVyT2ZBY3RpdmVBbmltYXRpb25zKCkgY29uc3QKIHsKLSAg
ICByZXR1cm4gZnJhbWUoKS0+YW5pbWF0aW9uKCkubnVtYmVyT2ZBY3RpdmVBbmltYXRpb25zKGZy
YW1lKCktPmRvY3VtZW50KCkpOworICAgIHJldHVybiBmcmFtZSgpLT5hbmltYXRpb24oKS5udW1i
ZXJPZkFjdGl2ZUFuaW1hdGlvbnMoZnJhbWUoKS5kb2N1bWVudCgpKTsKIH0KIAogYm9vbCBJbnRl
cm5hbHM6OmFuaW1hdGlvbnNBcmVTdXNwZW5kZWQoRXhjZXB0aW9uQ29kZSYgZWMpIGNvbnN0CkBA
IC0xNDYxLDcgKzE0NjEsNyBAQCBQYXNzUmVmUHRyPERPTVdpbmRvdz4gSW50ZXJuYWxzOjpvcGVu
RHVtbXlJbnNwZWN0b3JGcm9udGVuZChjb25zdCBTdHJpbmcmIHVybCkKICAgICBQYWdlKiBwYWdl
ID0gY29udGV4dERvY3VtZW50KCktPmZyYW1lKCktPnBhZ2UoKTsKICAgICBBU1NFUlQocGFnZSk7
CiAKLSAgICBET01XaW5kb3cqIHdpbmRvdyA9IHBhZ2UtPm1haW5GcmFtZSgpLmRvY3VtZW50KCkt
PmRvbVdpbmRvdygpOworICAgIERPTVdpbmRvdyogd2luZG93ID0gcGFnZS0+bWFpbmZyYW1lKCku
ZG9jdW1lbnQoKS5kb21XaW5kb3coKTsKICAgICBBU1NFUlQod2luZG93KTsKIAogICAgIG1fZnJv
bnRlbmRXaW5kb3cgPSB3aW5kb3ctPm9wZW4odXJsLCAiIiwgIiIsICp3aW5kb3csICp3aW5kb3cp
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktp
dC9lZmwvQ2hhbmdlTG9nCmluZGV4IDY4YTZlOTMuLmUxOGYzYmEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvZWZsL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cK
QEAgLTEsMyArMSwzMCBAQAorMjAxNC0wNC0yMiAgR3l1eW91bmcgS2ltICA8Z3l1eW91bmcua2lt
QHNhbXN1bmcuY29tPgorCisgICAgICAgIE5lZWQgYSBzaG9ydCBkZXNjcmlwdGlvbiAoT09QUyEp
LgorICAgICAgICBOZWVkIHRoZSBidWcgVVJMIChPT1BTISkuCisKKyAgICAgICAgUmV2aWV3ZWQg
YnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGll
bnRFZmwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50RWZsOjpjcmVhdGVXaW5k
b3cpOgorICAgICAgICAoV2ViQ29yZTo6Q2hyb21lQ2xpZW50RWZsOjpleGNlZWRlZERhdGFiYXNl
UXVvdGEpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVlU3VwcG9ydEVm
bC5jcHA6CisgICAgICAgIChEdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmw6OnBlbmRpbmdVbmxvYWRF
dmVudENvdW50KToKKyAgICAgICAgKER1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbDo6c2VsZWN0ZWRS
YW5nZSk6CisgICAgICAgIChEdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmw6OnJvb3RBY2Nlc3NpYmxl
RWxlbWVudCk6CisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvRnJhbWVMb2FkZXJDbGllbnRFZmwu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXJDbGllbnRFZmw6OmNvbW1pdHRlZExv
YWQpOgorICAgICAgICAqIGV3ay9ld2tfZnJhbWUuY3BwOgorICAgICAgICAoZXdrX2ZyYW1lX3Nl
Y3VyaXR5X29yaWdpbl9nZXQpOgorICAgICAgICAoZXdrX2ZyYW1lX3RleHRfbWF0Y2hlc191bm1h
cmtfYWxsKToKKyAgICAgICAgKGV3a19mcmFtZV90ZXh0X21hdGNoZXNfbnRoX3Bvc19nZXQpOgor
ICAgICAgICAoZXdrX2ZyYW1lX3NvdXJjZV9nZXQpOgorICAgICAgICAoZXdrX2ZyYW1lX3Jlc291
cmNlc19sb2NhdGlvbl9nZXQpOgorICAgICAgICAoZXdrX2ZyYW1lX3BsYWluX3RleHRfZ2V0KToK
KyAgICAgICAgKGV3a19mcmFtZV91cmlfY2hhbmdlZCk6CisgICAgICAgICogZXdrL2V3a192aWV3
LmNwcDoKKyAgICAgICAgKGV3a192aWV3X2lucHV0X21ldGhvZF9zdGF0ZV9zZXQpOgorCiAyMDE0
LTA0LTE4ICBQaGlsaXBwZSBOb3JtYW5kICA8cG5vcm1hbmRAaWdhbGlhLmNvbT4KIAogICAgICAg
ICBSZW1vdmUgTkVUV09SS19JTkZPIHN1cHBvcnQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
ZWZsL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNsaWVudEVmbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Vm
bC9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRFZmwuY3BwCmluZGV4IDYzZjI2YWQuLmZkMjhj
Y2MgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0Nocm9tZUNs
aWVudEVmbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvQ2hyb21l
Q2xpZW50RWZsLmNwcApAQCAtMTUzLDggKzE1Myw4IEBAIHZvaWQgQ2hyb21lQ2xpZW50RWZsOjp1
bmZvY3VzKCkKIFBhZ2UqIENocm9tZUNsaWVudEVmbDo6Y3JlYXRlV2luZG93KEZyYW1lKiBmcmFt
ZSwgY29uc3QgRnJhbWVMb2FkUmVxdWVzdCYsIGNvbnN0IFdpbmRvd0ZlYXR1cmVzJiBmZWF0dXJl
cywgY29uc3QgTmF2aWdhdGlvbkFjdGlvbiYpCiB7CiAjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJ
KQotICAgIGlmIChmcmFtZS0+ZG9jdW1lbnQoKSAmJiBmcmFtZS0+ZG9jdW1lbnQoKS0+d2Via2l0
Q3VycmVudEZ1bGxTY3JlZW5FbGVtZW50KCkpCi0gICAgICAgIGZyYW1lLT5kb2N1bWVudCgpLT53
ZWJraXRDYW5jZWxGdWxsU2NyZWVuKCk7CisgICAgaWYgKGZyYW1lLT5kb2N1bWVudCgpICYmIGZy
YW1lLT5kb2N1bWVudCgpLndlYmtpdEN1cnJlbnRGdWxsU2NyZWVuRWxlbWVudCgpKQorICAgICAg
ICBmcmFtZS0+ZG9jdW1lbnQoKS53ZWJraXRDYW5jZWxGdWxsU2NyZWVuKCk7CiAjZWxzZQogICAg
IFVOVVNFRF9QQVJBTShmcmFtZSk7CiAjZW5kaWYKQEAgLTQzMSw3ICs0MzEsNyBAQCB2b2lkIENo
cm9tZUNsaWVudEVmbDo6bmVlZFRvdWNoRXZlbnRzKGJvb2wgbmVlZGVkKQogdm9pZCBDaHJvbWVD
bGllbnRFZmw6OmV4Y2VlZGVkRGF0YWJhc2VRdW90YShGcmFtZSogZnJhbWUsIGNvbnN0IFN0cmlu
ZyYgZGF0YWJhc2VOYW1lLCBEYXRhYmFzZURldGFpbHMgZGV0YWlscykKIHsKICAgICB1aW50NjRf
dCBxdW90YTsKLSAgICBTZWN1cml0eU9yaWdpbiogb3JpZ2luID0gZnJhbWUtPmRvY3VtZW50KCkt
PnNlY3VyaXR5T3JpZ2luKCk7CisgICAgU2VjdXJpdHlPcmlnaW4qIG9yaWdpbiA9IGZyYW1lLT5k
b2N1bWVudCgpLnNlY3VyaXR5T3JpZ2luKCk7CiAKICAgICBxdW90YSA9IGV3a192aWV3X2V4Y2Vl
ZGVkX2RhdGFiYXNlX3F1b3RhKG1fdmlldywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGtpdChmcmFtZSksIGRhdGFiYXNlTmFtZS51dGY4KCkuZGF0YSgpLApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRy
ZWVTdXBwb3J0RWZsLmNwcCBiL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0R1bXBS
ZW5kZXJUcmVlU3VwcG9ydEVmbC5jcHAKaW5kZXggMjFlZDQ0Mi4uN2ZmNTYzNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRHVtcFJlbmRlclRyZWVTdXBwb3J0
RWZsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVy
VHJlZVN1cHBvcnRFZmwuY3BwCkBAIC0xNjgsNyArMTY4LDcgQEAgdW5zaWduZWQgRHVtcFJlbmRl
clRyZWVTdXBwb3J0RWZsOjpwZW5kaW5nVW5sb2FkRXZlbnRDb3VudChjb25zdCBFdmFzX09iamVj
dCogZXcKIHsKICAgICBEUlRfU1VQUE9SVF9GUkFNRV9HRVRfT1JfUkVUVVJOKGV3a0ZyYW1lLCBm
cmFtZSwgMCk7CiAKLSAgICByZXR1cm4gZnJhbWUtPmRvY3VtZW50KCktPmRvbVdpbmRvdygpLT5w
ZW5kaW5nVW5sb2FkRXZlbnRMaXN0ZW5lcnMoKTsKKyAgICByZXR1cm4gZnJhbWUtPmRvY3VtZW50
KCkuZG9tV2luZG93KCktPnBlbmRpbmdVbmxvYWRFdmVudExpc3RlbmVycygpOwogfQogCiBTdHJp
bmcgRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsOjpyZW5kZXJUcmVlRHVtcChFdmFzX09iamVjdCog
ZXdrRnJhbWUpCkBAIC02NDEsNyArNjQxLDcgQEAgYm9vbCBEdW1wUmVuZGVyVHJlZVN1cHBvcnRF
Zmw6OnNlbGVjdGVkUmFuZ2UoRXZhc19PYmplY3QqIGV3a1ZpZXcsIGludCogc3RhcnQsIGkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgV2ViQ29yZTo6RWxlbWVudCogc2VsZWN0aW9uUm9v
dCA9IHNlbGVjdGlvbi5yb290RWRpdGFibGVFbGVtZW50KCk7Ci0gICAgV2ViQ29yZTo6RWxlbWVu
dCogc2NvcGUgPSBzZWxlY3Rpb25Sb290ID8gc2VsZWN0aW9uUm9vdCA6IGZyYW1lLmRvY3VtZW50
KCktPmRvY3VtZW50RWxlbWVudCgpOworICAgIFdlYkNvcmU6OkVsZW1lbnQqIHNjb3BlID0gc2Vs
ZWN0aW9uUm9vdCA/IHNlbGVjdGlvblJvb3QgOiBmcmFtZS5kb2N1bWVudCgpLmRvY3VtZW50RWxl
bWVudCgpOwogCiAgICAgUmVmUHRyPFdlYkNvcmU6OlJhbmdlPiB0ZXN0UmFuZ2UgPSBXZWJDb3Jl
OjpSYW5nZTo6Y3JlYXRlKHNjb3BlLT5kb2N1bWVudCgpLCBzY29wZSwgMCwgcmFuZ2UtPnN0YXJ0
Q29udGFpbmVyKCksIHJhbmdlLT5zdGFydE9mZnNldCgpKTsKICAgICAqc3RhcnQgPSBXZWJDb3Jl
OjpUZXh0SXRlcmF0b3I6OnJhbmdlTGVuZ3RoKHRlc3RSYW5nZS5nZXQoKSk7CkBAIC03NDMsNyAr
NzQzLDcgQEAgQXRrT2JqZWN0KiBEdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmw6OnJvb3RBY2Nlc3Np
YmxlRWxlbWVudChjb25zdCBFdmFzX09iamVjdCogZXcKICAgICBpZiAoIWZyYW1lLT5kb2N1bWVu
dCgpKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIEF0a09iamVjdCogd3JhcHBlciA9IGZyYW1l
LT5kb2N1bWVudCgpLT5heE9iamVjdENhY2hlKCktPnJvb3RPYmplY3QoKS0+d3JhcHBlcigpOwor
ICAgIEF0a09iamVjdCogd3JhcHBlciA9IGZyYW1lLT5kb2N1bWVudCgpLmF4T2JqZWN0Q2FjaGUo
KS0+cm9vdE9iamVjdCgpLT53cmFwcGVyKCk7CiAgICAgaWYgKCF3cmFwcGVyKQogICAgICAgICBy
ZXR1cm4gMDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQv
RnJhbWVMb2FkZXJDbGllbnRFZmwuY3BwIGIvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBv
cnQvRnJhbWVMb2FkZXJDbGllbnRFZmwuY3BwCmluZGV4IGYwOTllMzcuLmE2YzFkM2IgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50
RWZsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRl
ckNsaWVudEVmbC5jcHAKQEAgLTEzMSw3ICsxMzEsNyBAQCB2b2lkIEZyYW1lTG9hZGVyQ2xpZW50
RWZsOjpjb21taXR0ZWRMb2FkKERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIGNvbnN0IGNoYXIqIGRh
dAogCiAgICAgICAgIC8vIExldCB0aGUgbWVkaWEgZG9jdW1lbnQgaGFuZGxlIHRoZSByZXN0IG9m
IGxvYWRpbmcgaXRzZWxmLCBjYW5jZWwgaGVyZS4KICAgICAgICAgRnJhbWUqIGNvcmVGcmFtZSA9
IGxvYWRlci0+ZnJhbWUoKTsKLSAgICAgICAgaWYgKGNvcmVGcmFtZSAmJiBjb3JlRnJhbWUtPmRv
Y3VtZW50KCktPmlzTWVkaWFEb2N1bWVudCgpKQorICAgICAgICBpZiAoY29yZUZyYW1lICYmIGNv
cmVGcmFtZS0+ZG9jdW1lbnQoKS5pc01lZGlhRG9jdW1lbnQoKSkKICAgICAgICAgICAgIGxvYWRl
ci0+Y2FuY2VsTWFpblJlc291cmNlTG9hZChwbHVnaW5XaWxsSGFuZGxlTG9hZEVycm9yKGxvYWRl
ci0+cmVzcG9uc2UoKSkpOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9lZmwv
ZXdrL2V3a19mcmFtZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2ZyYW1lLmNwcApp
bmRleCBhZmQ1YTdmLi45NWUxODFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2sv
ZXdrX2ZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX2ZyYW1lLmNwcApA
QCAtMzAzLDkgKzMwMyw5IEBAIEV3a19TZWN1cml0eV9PcmlnaW4qIGV3a19mcmFtZV9zZWN1cml0
eV9vcmlnaW5fZ2V0KGNvbnN0IEV2YXNfT2JqZWN0ICpld2tGcmFtZSkKICAgICBFV0tfRlJBTUVf
U0RfR0VUX09SX1JFVFVSTihld2tGcmFtZSwgc21hcnREYXRhLCAwKTsKICAgICBFSU5BX1NBRkVU
WV9PTl9OVUxMX1JFVFVSTl9WQUwoc21hcnREYXRhLT5mcmFtZSwgMCk7CiAgICAgRUlOQV9TQUZF
VFlfT05fTlVMTF9SRVRVUk5fVkFMKHNtYXJ0RGF0YS0+ZnJhbWUtPmRvY3VtZW50KCksIDApOwot
ICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChzbWFydERhdGEtPmZyYW1lLT5kb2N1
bWVudCgpLT5zZWN1cml0eU9yaWdpbigpLCAwKTsKKyAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JF
VFVSTl9WQUwoc21hcnREYXRhLT5mcmFtZS0+ZG9jdW1lbnQoKS5zZWN1cml0eU9yaWdpbigpLCAw
KTsKIAotICAgIHJldHVybiBld2tfc2VjdXJpdHlfb3JpZ2luX25ldyhzbWFydERhdGEtPmZyYW1l
LT5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpKTsKKyAgICByZXR1cm4gZXdrX3NlY3VyaXR5
X29yaWdpbl9uZXcoc21hcnREYXRhLT5mcmFtZS0+ZG9jdW1lbnQoKS5zZWN1cml0eU9yaWdpbigp
KTsKIH0KIAogRWluYV9JdGVyYXRvciogZXdrX2ZyYW1lX2NoaWxkcmVuX2l0ZXJhdG9yX25ldyhF
dmFzX09iamVjdCogZXdrRnJhbWUpCkBAIC01MTgsNyArNTE4LDcgQEAgRWluYV9Cb29sIGV3a19m
cmFtZV90ZXh0X21hdGNoZXNfdW5tYXJrX2FsbChFdmFzX09iamVjdCogZXdrRnJhbWUpCiAgICAg
RVdLX0ZSQU1FX1NEX0dFVF9PUl9SRVRVUk4oZXdrRnJhbWUsIHNtYXJ0RGF0YSwgZmFsc2UpOwog
ICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChzbWFydERhdGEtPmZyYW1lLCBmYWxz
ZSk7CiAKLSAgICBzbWFydERhdGEtPmZyYW1lLT5kb2N1bWVudCgpLT5tYXJrZXJzKCkucmVtb3Zl
TWFya2VycyhXZWJDb3JlOjpEb2N1bWVudE1hcmtlcjo6VGV4dE1hdGNoKTsKKyAgICBzbWFydERh
dGEtPmZyYW1lLT5kb2N1bWVudCgpLm1hcmtlcnMoKS5yZW1vdmVNYXJrZXJzKFdlYkNvcmU6OkRv
Y3VtZW50TWFya2VyOjpUZXh0TWF0Y2gpOwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC01NTgs
NyArNTU4LDcgQEAgRWluYV9Cb29sIGV3a19mcmFtZV90ZXh0X21hdGNoZXNfbnRoX3Bvc19nZXQo
Y29uc3QgRXZhc19PYmplY3QqIGV3a0ZyYW1lLCBzaXplX3QKICAgICBFV0tfRlJBTUVfU0RfR0VU
X09SX1JFVFVSTihld2tGcmFtZSwgc21hcnREYXRhLCBmYWxzZSk7CiAgICAgRUlOQV9TQUZFVFlf
T05fTlVMTF9SRVRVUk5fVkFMKHNtYXJ0RGF0YS0+ZnJhbWUsIGZhbHNlKTsKIAotICAgIFZlY3Rv
cjxXZWJDb3JlOjpJbnRSZWN0PiBpbnRSZWN0cyA9IHNtYXJ0RGF0YS0+ZnJhbWUtPmRvY3VtZW50
KCktPm1hcmtlcnMoKS5yZW5kZXJlZFJlY3RzRm9yTWFya2VycyhXZWJDb3JlOjpEb2N1bWVudE1h
cmtlcjo6VGV4dE1hdGNoKTsKKyAgICBWZWN0b3I8V2ViQ29yZTo6SW50UmVjdD4gaW50UmVjdHMg
PSBzbWFydERhdGEtPmZyYW1lLT5kb2N1bWVudCgpLm1hcmtlcnMoKS5yZW5kZXJlZFJlY3RzRm9y
TWFya2VycyhXZWJDb3JlOjpEb2N1bWVudE1hcmtlcjo6VGV4dE1hdGNoKTsKIAogICAgIC8qIHJl
bW92ZSB1c2VsZXNzIHZhbHVlcyAqLwogICAgIHN0ZDo6cmVtb3ZlX2lmKGludFJlY3RzLmJlZ2lu
KCksIGludFJlY3RzLmVuZCgpLCBfZXdrX2ZyYW1lX3JlY3RfaXNfbmVnYXRpdmVfdmFsdWUpOwpA
QCAtMTU3OCwxNCArMTU3OCwxNCBAQCBzc2l6ZV90IGV3a19mcmFtZV9zb3VyY2VfZ2V0KGNvbnN0
IEV2YXNfT2JqZWN0KiBld2tGcmFtZSwgY2hhcioqIGZyYW1lU291cmNlKQogICAgIGlmICghZXdr
X2ZyYW1lX3VyaV9nZXQoZXdrRnJhbWUpKQogICAgICAgICByZXR1cm4gLTE7CiAKLSAgICBpZiAo
IXNtYXJ0RGF0YS0+ZnJhbWUtPmRvY3VtZW50KCktPmlzSFRNTERvY3VtZW50KCkpIHsKKyAgICBp
ZiAoIXNtYXJ0RGF0YS0+ZnJhbWUtPmRvY3VtZW50KCkuaXNIVE1MRG9jdW1lbnQoKSkgewogICAg
ICAgICAvLyBGSVhNRTogU3VwcG9ydCBvdGhlcnMgZG9jdW1lbnRzLgogICAgICAgICBXQVJOKCJP
bmx5IEhUTUwgZG9jdW1lbnRzIGFyZSBzdXBwb3J0ZWQiKTsKICAgICAgICAgcmV0dXJuIC0xOwog
ICAgIH0KIAogICAgIC8vIExvb2sgZm9yIDxodG1sPiB0YWcuIElmIGl0IGV4aXN0cywgdGhlIG5v
ZGUgY29udGF0aW5zIGFsbCBkb2N1bWVudCdzIHNvdXJjZS4KLSAgICBXZWJDb3JlOjpOb2RlKiBk
b2N1bWVudE5vZGUgPSBzbWFydERhdGEtPmZyYW1lLT5kb2N1bWVudCgpLT5kb2N1bWVudEVsZW1l
bnQoKTsKKyAgICBXZWJDb3JlOjpOb2RlKiBkb2N1bWVudE5vZGUgPSBzbWFydERhdGEtPmZyYW1l
LT5kb2N1bWVudCgpLmRvY3VtZW50RWxlbWVudCgpOwogICAgIGlmIChkb2N1bWVudE5vZGUpCiAg
ICAgICAgIGZvciAoV2ViQ29yZTo6Tm9kZSogbm9kZSA9IGRvY3VtZW50Tm9kZS0+Zmlyc3RDaGls
ZCgpOyBub2RlOyBub2RlID0gbm9kZS0+cGFyZW50RWxlbWVudCgpKSB7CiAgICAgICAgICAgICBp
ZiAobm9kZS0+aGFzVGFnTmFtZShXZWJDb3JlOjpIVE1MTmFtZXM6Omh0bWxUYWcpKSB7CkBAIC0x
NjE5LDcgKzE2MTksNyBAQCBFaW5hX0xpc3QqIGV3a19mcmFtZV9yZXNvdXJjZXNfbG9jYXRpb25f
Z2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBld2tGcmFtZSkKICAgICBFaW5hX0xpc3QqIGxpc3RPZklt
YWdlc0xvY2F0aW9uID0gMDsKIAogICAgIC8vIEdldCBzcmMgYXR0aWJ1dGUgb2YgaW1hZ2VzIGFu
ZCBzYXZlcyB0aGVtIHRvIHRoZSBFaW5hX0xpc3QuCi0gICAgUmVmUHRyPFdlYkNvcmU6OkhUTUxD
b2xsZWN0aW9uPiBpbWFnZXMgPSBzbWFydERhdGEtPmZyYW1lLT5kb2N1bWVudCgpLT5pbWFnZXMo
KTsKKyAgICBSZWZQdHI8V2ViQ29yZTo6SFRNTENvbGxlY3Rpb24+IGltYWdlcyA9IHNtYXJ0RGF0
YS0+ZnJhbWUtPmRvY3VtZW50KCkuaW1hZ2VzKCk7CiAgICAgZm9yIChzaXplX3QgaW5kZXggPSAw
OyBpbmRleCA8IGltYWdlcy0+bGVuZ3RoKCk7ICsraW5kZXgpIHsKICAgICAgICAgV2ViQ29yZTo6
SFRNTEltYWdlRWxlbWVudCogaW1hZ2VFbGVtZW50ID0gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6SFRN
TEltYWdlRWxlbWVudCo+KGltYWdlcy0+aXRlbShpbmRleCkpOwogICAgICAgICBpZiAoIWltYWdl
RWxlbWVudCB8fCBpbWFnZUVsZW1lbnQtPnNyYygpLmlzTnVsbCgpIHx8IGltYWdlRWxlbWVudC0+
c3JjKCkuaXNFbXB0eSgpKQpAQCAtMTY2Miw3ICsxNjYyLDcgQEAgY29uc3QgY2hhciogZXdrX2Zy
YW1lX3BsYWluX3RleHRfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBld2tGcmFtZSkKICAgICBpZiAo
IXNtYXJ0RGF0YS0+ZnJhbWUtPmRvY3VtZW50KCkpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAg
V2ViQ29yZTo6RWxlbWVudCogZG9jdW1lbnRFbGVtZW50ID0gc21hcnREYXRhLT5mcmFtZS0+ZG9j
dW1lbnQoKS0+ZG9jdW1lbnRFbGVtZW50KCk7CisgICAgV2ViQ29yZTo6RWxlbWVudCogZG9jdW1l
bnRFbGVtZW50ID0gc21hcnREYXRhLT5mcmFtZS0+ZG9jdW1lbnQoKS5kb2N1bWVudEVsZW1lbnQo
KTsKIAogICAgIGlmICghZG9jdW1lbnRFbGVtZW50KQogICAgICAgICByZXR1cm4gMDsKQEAgLTE3
MjcsNyArMTcyNyw3IEBAIGJvb2wgZXdrX2ZyYW1lX3VyaV9jaGFuZ2VkKEV2YXNfT2JqZWN0KiBl
d2tGcmFtZSkKIHsKICAgICBFV0tfRlJBTUVfU0RfR0VUX09SX1JFVFVSTihld2tGcmFtZSwgc21h
cnREYXRhLCBmYWxzZSk7CiAgICAgRUlOQV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHNtYXJ0
RGF0YS0+ZnJhbWUsIGZhbHNlKTsKLSAgICBXVEY6OkNTdHJpbmcgdXJpKHNtYXJ0RGF0YS0+ZnJh
bWUtPmRvY3VtZW50KCktPnVybCgpLnN0cmluZygpLnV0ZjgoKSk7CisgICAgV1RGOjpDU3RyaW5n
IHVyaShzbWFydERhdGEtPmZyYW1lLT5kb2N1bWVudCgpLnVybCgpLnN0cmluZygpLnV0ZjgoKSk7
CiAKICAgICBJTkZPKCJ1cmk9JXMiLCB1cmkuZGF0YSgpKTsKICAgICBpZiAoIXVyaS5kYXRhKCkp
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlldy5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXcuY3BwCmluZGV4IDdkNGFmOGUuLjRlNjE5ZjAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlldy5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9lZmwvZXdrL2V3a192aWV3LmNwcApAQCAtMjYzOCwxMSArMjYzOCwxMSBAQCB2b2lk
IGV3a192aWV3X2lucHV0X21ldGhvZF9zdGF0ZV9zZXQoRXZhc19PYmplY3QqIGV3a1ZpZXcsIGJv
b2wgYWN0aXZlKQogCiAgICAgcHJpdi0+aW1oID0gMDsKICAgICBpZiAoZm9jdXNlZEZyYW1lLmRv
Y3VtZW50KCkKLSAgICAgICAgJiYgZm9jdXNlZEZyYW1lLmRvY3VtZW50KCktPmZvY3VzZWRFbGVt
ZW50KCkKLSAgICAgICAgJiYgaXNIVE1MSW5wdXRFbGVtZW50KGZvY3VzZWRGcmFtZS5kb2N1bWVu
dCgpLT5mb2N1c2VkRWxlbWVudCgpKSkgeworICAgICAgICAmJiBmb2N1c2VkZnJhbWUuZG9jdW1l
bnQoKS5mb2N1c2VkRWxlbWVudCgpCisgICAgICAgICYmIGlzSFRNTElucHV0RWxlbWVudChmb2N1
c2VkZnJhbWUuZG9jdW1lbnQoKS5mb2N1c2VkRWxlbWVudCgpKSkgewogICAgICAgICBXZWJDb3Jl
OjpIVE1MSW5wdXRFbGVtZW50KiBpbnB1dEVsZW1lbnQ7CiAKLSAgICAgICAgaW5wdXRFbGVtZW50
ID0gc3RhdGljX2Nhc3Q8V2ViQ29yZTo6SFRNTElucHV0RWxlbWVudCo+KGZvY3VzZWRGcmFtZS5k
b2N1bWVudCgpLT5mb2N1c2VkRWxlbWVudCgpKTsKKyAgICAgICAgaW5wdXRFbGVtZW50ID0gc3Rh
dGljX2Nhc3Q8V2ViQ29yZTo6SFRNTElucHV0RWxlbWVudCo+KGZvY3VzZWRmcmFtZS5kb2N1bWVu
dCgpLmZvY3VzZWRFbGVtZW50KCkpOwogICAgICAgICBpZiAoaW5wdXRFbGVtZW50KSB7CiAgICAg
ICAgICAgICAvLyBmb3IgcGFzc3dvcmQgZmllbGRzLCBhY3RpdmUgPT0gZmFsc2UKICAgICAgICAg
ICAgIGlmICghYWN0aXZlKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2lvcy9DaGFuZ2VM
b2cgYi9Tb3VyY2UvV2ViS2l0L2lvcy9DaGFuZ2VMb2cKaW5kZXggOGI0NDBhZS4uYzZiYTg5YyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9pb3MvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJL
aXQvaW9zL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDE0LTA0LTIyICBHeXV5b3VuZyBL
aW0gIDxneXV5b3VuZy5raW1Ac2Ftc3VuZy5jb20+CisKKyAgICAgICAgTmVlZCBhIHNob3J0IGRl
c2NyaXB0aW9uIChPT1BTISkuCisgICAgICAgIE5lZWQgdGhlIGJ1ZyBVUkwgKE9PUFMhKS4KKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYkNvcmVT
dXBwb3J0L1dlYkZyYW1lSU9TLm1tOgorICAgICAgICAoLVtXZWJGcmFtZSBzdGFydFBvc2l0aW9u
XSk6CisgICAgICAgICgtW1dlYkZyYW1lIGVuZFBvc2l0aW9uXSk6CisgICAgICAgICogV2ViVmll
dy9XZWJQREZWaWV3UGxhY2Vob2xkZXIubW06CisgICAgICAgICgtW1dlYlBERlZpZXdQbGFjZWhv
bGRlciBzaW11bGF0ZUNsaWNrT25MaW5rVG9VUkw6XSk6CisKIDIwMTQtMDQtMTcgIERhbmllbCBC
YXRlcyAgPGRhYmF0ZXNAYXBwbGUuY29tPgogCiAgICAgICAgIFtpT1NdIEhvb2sgdXAgc2NyZWVu
LnthdmFpbEhlaWdodCwgYXZhaWxXaWR0aCwgaGVpZ2h0LCB3aWR0aH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvaW9zL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lSU9TLm1tIGIvU291cmNlL1dl
YktpdC9pb3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVJT1MubW0KaW5kZXggMWQ1YmE5NC4uODBi
ZDI5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9pb3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJh
bWVJT1MubW0KKysrIGIvU291cmNlL1dlYktpdC9pb3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVJ
T1MubW0KQEAgLTgwOCwxNCArODA4LDE0IEBAIHN0YXRpYyBWaXNpYmxlUG9zaXRpb24gU2ltcGxl
U21hcnRFeHRlbmRFbmQoY29uc3QgVmlzaWJsZVBvc2l0aW9uJiBzdGFydCwgY29uc3QKIC0gKFdl
YlZpc2libGVQb3NpdGlvbiAqKXN0YXJ0UG9zaXRpb24KIHsKICAgICBGcmFtZSAqZnJhbWUgPSBb
c2VsZiBjb3JlRnJhbWVdOwotICAgIEVsZW1lbnQgKnJvb3RFbGVtZW50ID0gZnJhbWUtPmRvY3Vt
ZW50KCktPmRvY3VtZW50RWxlbWVudCgpOworICAgIEVsZW1lbnQgKnJvb3RFbGVtZW50ID0gZnJh
bWUtPmRvY3VtZW50KCkuZG9jdW1lbnRFbGVtZW50KCk7CiAgICAgcmV0dXJuIFtXZWJWaXNpYmxl
UG9zaXRpb24gX3dyYXBWaXNpYmxlUG9zaXRpb246c3RhcnRPZkRvY3VtZW50KHN0YXRpY19jYXN0
PE5vZGUqPihyb290RWxlbWVudCkpXTsKIH0KIAogLSAoV2ViVmlzaWJsZVBvc2l0aW9uICopZW5k
UG9zaXRpb24KIHsKICAgICBGcmFtZSAqZnJhbWUgPSBbc2VsZiBjb3JlRnJhbWVdOwotICAgIEVs
ZW1lbnQgKnJvb3RFbGVtZW50ID0gZnJhbWUtPmRvY3VtZW50KCktPmRvY3VtZW50RWxlbWVudCgp
OworICAgIEVsZW1lbnQgKnJvb3RFbGVtZW50ID0gZnJhbWUtPmRvY3VtZW50KCkuZG9jdW1lbnRF
bGVtZW50KCk7CiAgICAgcmV0dXJuIFtXZWJWaXNpYmxlUG9zaXRpb24gX3dyYXBWaXNpYmxlUG9z
aXRpb246ZW5kT2ZEb2N1bWVudChzdGF0aWNfY2FzdDxOb2RlKj4ocm9vdEVsZW1lbnQpKV07CiB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvaW9zL1dlYlZpZXcvV2ViUERGVmlld1BsYWNl
aG9sZGVyLm1tIGIvU291cmNlL1dlYktpdC9pb3MvV2ViVmlldy9XZWJQREZWaWV3UGxhY2Vob2xk
ZXIubW0KaW5kZXggNzE5ZjZiMy4uM2RiNTA3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9p
b3MvV2ViVmlldy9XZWJQREZWaWV3UGxhY2Vob2xkZXIubW0KKysrIGIvU291cmNlL1dlYktpdC9p
b3MvV2ViVmlldy9XZWJQREZWaWV3UGxhY2Vob2xkZXIubW0KQEAgLTUwNCw3ICs1MDQsNyBAQCBz
dGF0aWMgY29uc3QgZmxvYXQgUEFHRV9IRUlHSFRfSU5TRVQgPSA0LjBmICogMi4wZjsKIAogICAg
IC8vIENhbGwgdG8gdGhlIGZyYW1lIGxvYWRlciBiZWNhdXNlIHRoaXMgaXMgd2hlcmUgb3VyIHNl
Y3VyaXR5IGNoZWNrcyBhcmUgbWFkZS4KICAgICBGcmFtZSogZnJhbWUgPSBjb3JlKFtfZGF0YVNv
dXJjZSB3ZWJGcmFtZV0pOwotICAgIGZyYW1lLT5sb2FkZXIoKS5sb2FkRnJhbWVSZXF1ZXN0KEZy
YW1lTG9hZFJlcXVlc3QoZnJhbWUtPmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCksIFJlc291
cmNlUmVxdWVzdChVUkwpKSwgTG9ja0hpc3Rvcnk6Ok5vLCBMb2NrQmFja0ZvcndhcmRMaXN0OjpO
bywgZXZlbnQuZ2V0KCksIDAsIE1heWJlU2VuZFJlZmVycmVyKTsKKyAgICBmcmFtZS0+bG9hZGVy
KCkubG9hZEZyYW1lUmVxdWVzdChGcmFtZUxvYWRSZXF1ZXN0KGZyYW1lLT5kb2N1bWVudCgpLnNl
Y3VyaXR5T3JpZ2luKCksIFJlc291cmNlUmVxdWVzdChVUkwpKSwgTG9ja0hpc3Rvcnk6Ok5vLCBM
b2NrQmFja0ZvcndhcmRMaXN0OjpObywgZXZlbnQuZ2V0KCksIDAsIE1heWJlU2VuZFJlZmVycmVy
KTsKIH0KIAogQGVuZApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nIGIv
U291cmNlL1dlYktpdC9tYWMvQ2hhbmdlTG9nCmluZGV4IDZiYTE0MzQuLjdlNzA4ZDQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L21h
Yy9DaGFuZ2VMb2cKQEAgLTEsMyArMSw1NiBAQAorMjAxNC0wNC0yMiAgR3l1eW91bmcgS2ltICA8
Z3l1eW91bmcua2ltQHNhbXN1bmcuY29tPgorCisgICAgICAgIE5lZWQgYSBzaG9ydCBkZXNjcmlw
dGlvbiAoT09QUyEpLgorICAgICAgICBOZWVkIHRoZSBidWcgVVJMIChPT1BTISkuCisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBQbHVnaW5zL0hvc3Rl
ZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHkubW06CisgICAgICAgIChXZWJLaXQ6Ok5ldHNj
YXBlUGx1Z2luSW5zdGFuY2VQcm94eTo6bG9hZFJlcXVlc3QpOgorICAgICAgICAqIFBsdWdpbnMv
V2ViQmFzZU5ldHNjYXBlUGx1Z2luVmlldy5tbToKKyAgICAgICAgKC1bV2ViQmFzZU5ldHNjYXBl
UGx1Z2luVmlldyByZXNvbHZlZFVSTFN0cmluZ0ZvclVSTDp0YXJnZXQ6XSk6CisgICAgICAgICog
UGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpblN0cmVhbS5tbToKKyAgICAgICAgKFdlYk5ldHNjYXBl
UGx1Z2luU3RyZWFtOjpXZWJOZXRzY2FwZVBsdWdpblN0cmVhbSk6CisgICAgICAgICogUGx1Z2lu
cy9XZWJOZXRzY2FwZVBsdWdpblZpZXcubW06CisgICAgICAgICgtW1dlYk5ldHNjYXBlUGx1Z2lu
VmlldyBsb2FkUmVxdWVzdDppblRhcmdldDp3aXRoTm90aWZ5RGF0YTpzZW5kTm90aWZpY2F0aW9u
Ol0pOgorICAgICAgICAqIFBsdWdpbnMvV2ViUGx1Z2luQ29udGFpbmVyQ2hlY2subW06CisgICAg
ICAgICgtW1dlYlBsdWdpbkNvbnRhaW5lckNoZWNrIF9pc0ZvcmJpZGRlbkZpbGVMb2FkXSk6Cisg
ICAgICAgICogV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lm1tOgorICAgICAgICAoV2Vi
Q2hyb21lQ2xpZW50OjpjcmVhdGVXaW5kb3cpOgorICAgICAgICAoV2ViQ2hyb21lQ2xpZW50Ojpl
eGNlZWRlZERhdGFiYXNlUXVvdGEpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkdlb2xv
Y2F0aW9uQ2xpZW50Lm1tOgorICAgICAgICAoV2ViR2VvbG9jYXRpb25DbGllbnQ6OnJlcXVlc3RQ
ZXJtaXNzaW9uKToKKyAgICAgICAgKC1bV2ViR2VvbG9jYXRpb25Qcm92aWRlckluaXRpYWxpemF0
aW9uTGlzdGVuZXIgaW5pdGlhbGl6YXRpb25BbGxvd2VkV2ViVmlldzpwcm92aWRlcjpdKToKKyAg
ICAgICAgKiBXZWJWaWV3L1dlYkZyYW1lLm1tOgorICAgICAgICAoLVtXZWJGcmFtZSBfc21hcnRE
ZWxldGVSYW5nZUZvclByb3Bvc2VkUmFuZ2U6XSk6CisgICAgICAgICgtW1dlYkZyYW1lIF9yZXBs
YWNlU2VsZWN0aW9uV2l0aE5vZGU6c2VsZWN0UmVwbGFjZW1lbnQ6c21hcnRSZXBsYWNlOm1hdGNo
U3R5bGU6XSk6CisgICAgICAgICgtW1dlYkZyYW1lIF9jYW5Qcm92aWRlRG9jdW1lbnRTb3VyY2Vd
KToKKyAgICAgICAgKC1bV2ViRnJhbWUgX3BlbmRpbmdGcmFtZVVubG9hZEV2ZW50Q291bnRdKToK
KyAgICAgICAgKC1bV2ViRnJhbWUgc2VsZWN0aW9uQXREb2N1bWVudFN0YXJ0XSk6CisgICAgICAg
ICgtW1dlYkZyYW1lIHNlbGVjdGlvbkF0U2VudGVuY2VTdGFydF0pOgorICAgICAgICAoLVtXZWJG
cmFtZSBzZWxlY3Rpb25BdFdvcmRTdGFydF0pOgorICAgICAgICAoLVtXZWJGcmFtZSBnZXREaWN0
YXRpb25SZXN1bHRSYW5nZXM6YW5kTWV0YWRhdGFzOl0pOgorICAgICAgICAoLVtXZWJGcmFtZSBf
Y2FjaGVhYmlsaXR5RGljdGlvbmFyeV0pOgorICAgICAgICAoLVtXZWJGcmFtZSBfYWxsb3dzRm9s
bG93aW5nTGluazpdKToKKyAgICAgICAgKC1bV2ViRnJhbWUgc2V0QWNjZXNzaWJsZU5hbWU6XSk6
CisgICAgICAgICgtW1dlYkZyYW1lIF9jb21wdXRlUGFnZVJlY3RzV2l0aFByaW50U2NhbGVGYWN0
b3I6cGFnZVNpemU6XSk6CisgICAgICAgICgtW1dlYkZyYW1lIGZvY3VzZWROb2RlSGFzQ29udGVu
dF0pOgorICAgICAgICAqIFdlYlZpZXcvV2ViSFRNTFJlcHJlc2VudGF0aW9uLm1tOgorICAgICAg
ICAoLVtXZWJIVE1MUmVwcmVzZW50YXRpb24gcmVjZWl2ZWREYXRhOndpdGhEYXRhU291cmNlOl0p
OgorICAgICAgICAqIFdlYlZpZXcvV2ViSFRNTFZpZXcubW06CisgICAgICAgICgtW1dlYkhUTUxW
aWV3IF9iZWdpblByaW50TW9kZVdpdGhNaW5pbXVtUGFnZVdpZHRoOmhlaWdodDptYXhpbXVtUGFn
ZVdpZHRoOl0pOgorICAgICAgICAoLVtXZWJIVE1MVmlldyBfYmVnaW5QcmludE1vZGVXaXRoUGFn
ZVdpZHRoOmhlaWdodDpzaHJpbmtUb0ZpdDpdKToKKyAgICAgICAgKC1bV2ViSFRNTFZpZXcgX2Jl
Z2luU2NyZWVuUGFnaW5hdGlvbk1vZGVXaXRoUGFnZVNpemU6c2hyaW5rVG9GaXQ6XSk6CisgICAg
ICAgICgtW1dlYkhUTUxWaWV3IHJlYXBwbHlTdHlsZXNdKToKKyAgICAgICAgKC1bV2ViSFRNTFZp
ZXcgbGF5b3V0VG9NaW5pbXVtUGFnZVdpZHRoOmhlaWdodDpvcmlnaW5hbFBhZ2VXaWR0aDpvcmln
aW5hbFBhZ2VIZWlnaHQ6bWF4aW11bVNocmlua1JhdGlvOmFkanVzdGluZ1ZpZXdTaXplOl0pOgor
ICAgICAgICAoLVtXZWJIVE1MVmlldyBzZXROZWVkc0xheW91dDpdKToKKyAgICAgICAgKC1bV2Vi
SFRNTFZpZXcgc2V0TmVlZHNUb0FwcGx5U3R5bGVzOl0pOgorICAgICAgICAoY3VycmVudEtleWJv
YXJkRXZlbnQpOgorICAgICAgICAqIFdlYlZpZXcvV2ViUERGVmlldy5tbToKKyAgICAgICAgKC1b
V2ViUERGVmlldyBQREZWaWV3V2lsbENsaWNrT25MaW5rOndpdGhVUkw6XSk6CisgICAgICAgICog
V2ViVmlldy9XZWJWaWV3Lm1tOgorICAgICAgICAoLVtXZWJWaWV3IF9kYXNoYm9hcmRSZWdpb25z
XSk6CisKIDIwMTQtMDQtMjEgIEVyaWMgQ2FybHNvbiAgPGVyaWMuY2FybHNvbkBhcHBsZS5jb20+
CiAKICAgICAgICAgW01hY10gaW1wbGVtZW50IFdlYktpdERhdGFDdWUKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSW5zdGFuY2VQcm94
eS5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1Z2luSW5z
dGFuY2VQcm94eS5tbQppbmRleCA1Mzg2MWQ1Li42YWM0MWEyIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHkubW0K
KysrIGIvU291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0
YW5jZVByb3h5Lm1tCkBAIC03ODIsNyArNzgyLDcgQEAgTlBFcnJvciBOZXRzY2FwZVBsdWdpbklu
c3RhbmNlUHJveHk6OmxvYWRSZXF1ZXN0KE5TVVJMUmVxdWVzdCAqcmVxdWVzdCwgY29uc3QgY2gK
ICAgICAgICAgICAgIHJldHVybiBOUEVSUl9HRU5FUklDX0VSUk9SOwogICAgICAgICB9CiAgICAg
fSBlbHNlIHsKLSAgICAgICAgaWYgKCFjb3JlKFttX3BsdWdpblZpZXcgd2ViRnJhbWVdKS0+ZG9j
dW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKS0+Y2FuRGlzcGxheShVUkwpKQorICAgICAgICBpZiAo
IWNvcmUoW21fcGx1Z2luVmlldyB3ZWJGcmFtZV0pLT5kb2N1bWVudCgpLnNlY3VyaXR5T3JpZ2lu
KCktPmNhbkRpc3BsYXkoVVJMKSkKICAgICAgICAgICAgIHJldHVybiBOUEVSUl9HRU5FUklDX0VS
Uk9SOwogICAgIH0KICAgICAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMv
V2ViQmFzZU5ldHNjYXBlUGx1Z2luVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMv
V2ViQmFzZU5ldHNjYXBlUGx1Z2luVmlldy5tbQppbmRleCBiOGRkZDY1Li4wMmMwNzYzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL1dlYkJhc2VOZXRzY2FwZVBsdWdpblZp
ZXcubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9XZWJCYXNlTmV0c2NhcGVQbHVn
aW5WaWV3Lm1tCkBAIC04NTUsMTAgKzg1NSwxMCBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsK
ICAgICBpZiAoIXRhcmdldEZyYW1lKQogICAgICAgICByZXR1cm4gQ1N0cmluZygpOwogICAgIAot
ICAgIGlmICghZnJhbWUtPmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCktPmNhbkFjY2Vzcyh0
YXJnZXRGcmFtZS0+ZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKSkpCisgICAgaWYgKCFmcmFt
ZS0+ZG9jdW1lbnQoKS5zZWN1cml0eU9yaWdpbigpLT5jYW5BY2Nlc3ModGFyZ2V0RnJhbWUtPmRv
Y3VtZW50KCkuc2VjdXJpdHlPcmlnaW4oKSkpCiAgICAgICAgIHJldHVybiBDU3RyaW5nKCk7CiAg
IAotICAgIFVSTCBhYnNvbHV0ZVVSTCA9IHRhcmdldEZyYW1lLT5kb2N1bWVudCgpLT5jb21wbGV0
ZVVSTChyZWxhdGl2ZVVSTFN0cmluZyk7CisgICAgVVJMIGFic29sdXRlVVJMID0gdGFyZ2V0RnJh
bWUtPmRvY3VtZW50KCkuY29tcGxldGVVUkwocmVsYXRpdmVVUkxTdHJpbmcpOwogICAgIHJldHVy
biBhYnNvbHV0ZVVSTC5zdHJpbmcoKS51dGY4KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvbWFjL1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5TdHJlYW0ubW0gYi9Tb3VyY2UvV2Vi
S2l0L21hYy9QbHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luU3RyZWFtLm1tCmluZGV4IDkzNWQ1NWVj
MS4uMjkzODc3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9XZWJOZXRz
Y2FwZVBsdWdpblN0cmVhbS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL1dlYk5l
dHNjYXBlUGx1Z2luU3RyZWFtLm1tCkBAIC0xNjIsNyArMTYyLDcgQEAgV2ViTmV0c2NhcGVQbHVn
aW5TdHJlYW06OldlYk5ldHNjYXBlUGx1Z2luU3RyZWFtKE5TVVJMUmVxdWVzdCAqcmVxdWVzdCwg
TlBQIHBsdWcKICAgICBXZWJOZXRzY2FwZVBsdWdpblZpZXcgKnZpZXcgPSAoV2ViTmV0c2NhcGVQ
bHVnaW5WaWV3ICopcGx1Z2luLT5uZGF0YTsKICAgICAKICAgICAvLyBUaGlzIGNoZWNrIGhhcyBh
bHJlYWR5IGJlZW4gZG9uZSBieSB0aGUgcGx1Zy1pbiB2aWV3LgotICAgIEFTU0VSVChjb3JlKFt2
aWV3IHdlYkZyYW1lXSktPmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCktPmNhbkRpc3BsYXko
W3JlcXVlc3QgVVJMXSkpOworICAgIEFTU0VSVChjb3JlKFt2aWV3IHdlYkZyYW1lXSktPmRvY3Vt
ZW50KCkuc2VjdXJpdHlPcmlnaW4oKS0+Y2FuRGlzcGxheShbcmVxdWVzdCBVUkxdKSk7CiAgICAg
CiAgICAgQVNTRVJUKFtyZXF1ZXN0IFVSTF0pOwogICAgIEFTU0VSVChwbHVnaW4pOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpblZpZXcubW0g
Yi9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luVmlldy5tbQppbmRl
eCA5NmFhNWRiLi4wNDVmNzFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5z
L1dlYk5ldHNjYXBlUGx1Z2luVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5z
L1dlYk5ldHNjYXBlUGx1Z2luVmlldy5tbQpAQCAtMTcyNyw3ICsxNzI3LDcgQEAgc3RhdGljIGlu
bGluZSB2b2lkIGdldE5QUmVjdChjb25zdCBOU1JlY3QmIG5yLCBOUFJlY3QmIG5wcikKICAgICAg
ICAgICAgIHJldHVybiBOUEVSUl9JTlZBTElEX1BBUkFNOwogICAgICAgICB9CiAgICAgfSBlbHNl
IHsKLSAgICAgICAgaWYgKCFjb3JlKFtzZWxmIHdlYkZyYW1lXSktPmRvY3VtZW50KCktPnNlY3Vy
aXR5T3JpZ2luKCktPmNhbkRpc3BsYXkoVVJMKSkKKyAgICAgICAgaWYgKCFjb3JlKFtzZWxmIHdl
YkZyYW1lXSktPmRvY3VtZW50KCkuc2VjdXJpdHlPcmlnaW4oKS0+Y2FuRGlzcGxheShVUkwpKQog
ICAgICAgICAgICAgcmV0dXJuIE5QRVJSX0dFTkVSSUNfRVJST1I7CiAgICAgfQogICAgICAgICAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvV2ViUGx1Z2luQ29udGFpbmVy
Q2hlY2subW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL1dlYlBsdWdpbkNvbnRhaW5lckNo
ZWNrLm1tCmluZGV4IDg4NGM4NzcuLjJmOGQ0MTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
bWFjL1BsdWdpbnMvV2ViUGx1Z2luQ29udGFpbmVyQ2hlY2subW0KKysrIGIvU291cmNlL1dlYktp
dC9tYWMvUGx1Z2lucy9XZWJQbHVnaW5Db250YWluZXJDaGVjay5tbQpAQCAtMTA2LDcgKzEwNiw3
IEBAIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwogewogICAgRnJhbWUqIGNvcmVGcmFtZSA9IGNv
cmUoW19jb250cm9sbGVyIHdlYkZyYW1lXSk7CiAgICBBU1NFUlQoY29yZUZyYW1lKTsKLSAgIGlm
ICghY29yZUZyYW1lLT5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpLT5jYW5EaXNwbGF5KFtf
cmVxdWVzdCBVUkxdKSkgeworICAgaWYgKCFjb3JlRnJhbWUtPmRvY3VtZW50KCkuc2VjdXJpdHlP
cmlnaW4oKS0+Y2FuRGlzcGxheShbX3JlcXVlc3QgVVJMXSkpIHsKICAgICAgICBbc2VsZiBfY29u
dGludWVXaXRoUG9saWN5OlBvbGljeUlnbm9yZV07CiAgICAgICAgcmV0dXJuIFlFUzsKICAgIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNs
aWVudC5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVu
dC5tbQppbmRleCA5NzZiN2NmLi5lMmY3ZmVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21h
Yy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQubW0KKysrIGIvU291cmNlL1dlYktpdC9t
YWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lm1tCkBAIC0yNDAsOCArMjQwLDggQEAg
UGFnZSogV2ViQ2hyb21lQ2xpZW50OjpjcmVhdGVXaW5kb3coRnJhbWUqIGZyYW1lLCBjb25zdCBG
cmFtZUxvYWRSZXF1ZXN0JiwgY29uc3QKICAgICBXZWJWaWV3ICpuZXdXZWJWaWV3OwogCiAjaWYg
RU5BQkxFKEZVTExTQ1JFRU5fQVBJKQotICAgIGlmIChmcmFtZS0+ZG9jdW1lbnQoKSAmJiBmcmFt
ZS0+ZG9jdW1lbnQoKS0+d2Via2l0Q3VycmVudEZ1bGxTY3JlZW5FbGVtZW50KCkpCi0gICAgICAg
IGZyYW1lLT5kb2N1bWVudCgpLT53ZWJraXRDYW5jZWxGdWxsU2NyZWVuKCk7CisgICAgaWYgKGZy
YW1lLT5kb2N1bWVudCgpICYmIGZyYW1lLT5kb2N1bWVudCgpLndlYmtpdEN1cnJlbnRGdWxsU2Ny
ZWVuRWxlbWVudCgpKQorICAgICAgICBmcmFtZS0+ZG9jdW1lbnQoKS53ZWJraXRDYW5jZWxGdWxs
U2NyZWVuKCk7CiAjZW5kaWYKICAgICAKICAgICBpZiAoW2RlbGVnYXRlIHJlc3BvbmRzVG9TZWxl
Y3RvcjpAc2VsZWN0b3Iod2ViVmlldzpjcmVhdGVXZWJWaWV3V2l0aFJlcXVlc3Q6d2luZG93RmVh
dHVyZXM6KV0pIHsKQEAgLTY3MSw3ICs2NzEsNyBAQCB2b2lkIFdlYkNocm9tZUNsaWVudDo6ZXhj
ZWVkZWREYXRhYmFzZVF1b3RhKEZyYW1lKiBmcmFtZSwgY29uc3QgU3RyaW5nJiBkYXRhYmFzZQog
ewogICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKIAotICAgIFdlYlNlY3VyaXR5T3Jp
Z2luICp3ZWJPcmlnaW4gPSBbW1dlYlNlY3VyaXR5T3JpZ2luIGFsbG9jXSBfaW5pdFdpdGhXZWJD
b3JlU2VjdXJpdHlPcmlnaW46ZnJhbWUtPmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCldOwor
ICAgIFdlYlNlY3VyaXR5T3JpZ2luICp3ZWJPcmlnaW4gPSBbW1dlYlNlY3VyaXR5T3JpZ2luIGFs
bG9jXSBfaW5pdFdpdGhXZWJDb3JlU2VjdXJpdHlPcmlnaW46ZnJhbWUtPmRvY3VtZW50KCkuc2Vj
dXJpdHlPcmlnaW4oKV07CiAjaWYgIVBMQVRGT1JNKElPUykKICAgICAvLyBGSVhNRTogcmVtb3Zl
IHRoaXMgd29ya2Fyb3VuZCBvbmNlIHNoaXBwaW5nIFNhZmFyaSBoYXMgdGhlIG5lY2Vzc2FyeSBk
ZWxlZ2F0ZSBpbXBsZW1lbnRlZC4KICAgICBpZiAoV0tBcHBWZXJzaW9uQ2hlY2tMZXNzVGhhbihA
ImNvbS5hcHBsZS5TYWZhcmkiLCAtMSwgMy4xKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQubW0gYi9Tb3VyY2UvV2Vi
S2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5tbQppbmRleCBkNTg0
NjBlLi41YjNmNzNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9y
dC9XZWJHZW9sb2NhdGlvbkNsaWVudC5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3Jl
U3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5tbQpAQCAtMTEzLDcgKzExMyw3IEBAIHZvaWQg
V2ViR2VvbG9jYXRpb25DbGllbnQ6OnJlcXVlc3RQZXJtaXNzaW9uKEdlb2xvY2F0aW9uKiBnZW9s
b2NhdGlvbikKIAogI2lmICFQTEFURk9STShJT1MpCiAgICAgRnJhbWUgKmZyYW1lID0gZ2VvbG9j
YXRpb24tPmZyYW1lKCk7Ci0gICAgV2ViU2VjdXJpdHlPcmlnaW4gKndlYk9yaWdpbiA9IFtbV2Vi
U2VjdXJpdHlPcmlnaW4gYWxsb2NdIF9pbml0V2l0aFdlYkNvcmVTZWN1cml0eU9yaWdpbjpmcmFt
ZS0+ZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKV07CisgICAgV2ViU2VjdXJpdHlPcmlnaW4g
KndlYk9yaWdpbiA9IFtbV2ViU2VjdXJpdHlPcmlnaW4gYWxsb2NdIF9pbml0V2l0aFdlYkNvcmVT
ZWN1cml0eU9yaWdpbjpmcmFtZS0+ZG9jdW1lbnQoKS5zZWN1cml0eU9yaWdpbigpXTsKICAgICBX
ZWJHZW9sb2NhdGlvblBvbGljeUxpc3RlbmVyKiBsaXN0ZW5lciA9IFtbV2ViR2VvbG9jYXRpb25Q
b2xpY3lMaXN0ZW5lciBhbGxvY10gaW5pdFdpdGhHZW9sb2NhdGlvbjpnZW9sb2NhdGlvbl07CiAK
ICAgICBDYWxsVUlEZWxlZ2F0ZShtX3dlYlZpZXcsIHNlbGVjdG9yLCB3ZWJPcmlnaW4sIGtpdChm
cmFtZSksIGxpc3RlbmVyKTsKQEAgLTIyMCw3ICsyMjAsNyBAQCBHZW9sb2NhdGlvblBvc2l0aW9u
KiBXZWJHZW9sb2NhdGlvbkNsaWVudDo6bGFzdFBvc2l0aW9uKCkKICAgICAgICAgW3Byb3ZpZGVy
IGNhbmNlbFdhcm1VcEZvcldlYlZpZXc6d2ViVmlld107CiAgICAgICAgIHJldHVybjsKICAgICB9
Ci0gICAgV2ViU2VjdXJpdHlPcmlnaW4gKndlYk9yaWdpbiA9IFtbV2ViU2VjdXJpdHlPcmlnaW4g
YWxsb2NdIF9pbml0V2l0aFdlYkNvcmVTZWN1cml0eU9yaWdpbjpmcmFtZS0+ZG9jdW1lbnQoKS0+
c2VjdXJpdHlPcmlnaW4oKV07CisgICAgV2ViU2VjdXJpdHlPcmlnaW4gKndlYk9yaWdpbiA9IFtb
V2ViU2VjdXJpdHlPcmlnaW4gYWxsb2NdIF9pbml0V2l0aFdlYkNvcmVTZWN1cml0eU9yaWdpbjpm
cmFtZS0+ZG9jdW1lbnQoKS5zZWN1cml0eU9yaWdpbigpXTsKICAgICBXZWJHZW9sb2NhdGlvblBv
bGljeUxpc3RlbmVyICpsaXN0ZW5lciA9IFtbV2ViR2VvbG9jYXRpb25Qb2xpY3lMaXN0ZW5lciBh
bGxvY10gaW5pdFdpdGhHZW9sb2NhdGlvbjptX2dlb2xvY2F0aW9uLmdldCgpIGZvcldlYlZpZXc6
d2ViVmlldyBwcm92aWRlcjpwcm92aWRlcl07CiAgICAgU0VMIHNlbGVjdG9yID0gQHNlbGVjdG9y
KHdlYlZpZXc6ZGVjaWRlUG9saWN5Rm9yR2VvbG9jYXRpb25SZXF1ZXN0RnJvbU9yaWdpbjpmcmFt
ZTpsaXN0ZW5lcjopOwogICAgIENhbGxVSURlbGVnYXRlKHdlYlZpZXcsIHNlbGVjdG9yLCB3ZWJP
cmlnaW4sIGtpdChmcmFtZSksIGxpc3RlbmVyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQv
bWFjL1dlYlZpZXcvV2ViRnJhbWUubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkZy
YW1lLm1tCmluZGV4IDc4MWEzOWMuLjg2NTc0MDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
bWFjL1dlYlZpZXcvV2ViRnJhbWUubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9X
ZWJGcmFtZS5tbQpAQCAtODQ5LDcgKzg0OSw3IEBAIHN0YXRpYyBpbmxpbmUgV2ViRGF0YVNvdXJj
ZSAqZGF0YVNvdXJjZShEb2N1bWVudExvYWRlciogbG9hZGVyKQogCiAgICAgQVNTRVJUKCZzdGFy
dENvbnRhaW5lci0+ZG9jdW1lbnQoKSA9PSAmZW5kQ29udGFpbmVyLT5kb2N1bWVudCgpKTsKICAg
ICAKLSAgICBfcHJpdmF0ZS0+Y29yZUZyYW1lLT5kb2N1bWVudCgpLT51cGRhdGVMYXlvdXRJZ25v
cmVQZW5kaW5nU3R5bGVzaGVldHMoKTsKKyAgICBfcHJpdmF0ZS0+Y29yZUZyYW1lLT5kb2N1bWVu
dCgpLnVwZGF0ZUxheW91dElnbm9yZVBlbmRpbmdTdHlsZXNoZWV0cygpOwogCiAgICAgUG9zaXRp
b24gc3RhcnQgPSBQb3NpdGlvbihzdGFydENvbnRhaW5lciwgW3Byb3Bvc2VkUmFuZ2Ugc3RhcnRP
ZmZzZXRdLCBQb3NpdGlvbjo6UG9zaXRpb25Jc09mZnNldEluQW5jaG9yKTsKICAgICBQb3NpdGlv
biBlbmQgPSBQb3NpdGlvbihlbmRDb250YWluZXIsIFtwcm9wb3NlZFJhbmdlIGVuZE9mZnNldF0s
IFBvc2l0aW9uOjpQb3NpdGlvbklzT2Zmc2V0SW5BbmNob3IpOwpAQCAtODYzLDcgKzg2Myw3IEBA
IHN0YXRpYyBpbmxpbmUgV2ViRGF0YVNvdXJjZSAqZGF0YVNvdXJjZShEb2N1bWVudExvYWRlciog
bG9hZGVyKQogICAgIG5ld1N0YXJ0ID0gbmV3U3RhcnQucGFyZW50QW5jaG9yZWRFcXVpdmFsZW50
KCk7CiAgICAgbmV3RW5kID0gbmV3RW5kLnBhcmVudEFuY2hvcmVkRXF1aXZhbGVudCgpOwogCi0g
ICAgUmVmUHRyPFJhbmdlPiByYW5nZSA9IF9wcml2YXRlLT5jb3JlRnJhbWUtPmRvY3VtZW50KCkt
PmNyZWF0ZVJhbmdlKCk7CisgICAgUmVmUHRyPFJhbmdlPiByYW5nZSA9IF9wcml2YXRlLT5jb3Jl
RnJhbWUtPmRvY3VtZW50KCkuY3JlYXRlUmFuZ2UoKTsKICAgICBpbnQgZXhjZXB0aW9uID0gMDsK
ICAgICByYW5nZS0+c2V0U3RhcnQobmV3U3RhcnQuY29udGFpbmVyTm9kZSgpLCBuZXdTdGFydC5v
ZmZzZXRJbkNvbnRhaW5lck5vZGUoKSwgZXhjZXB0aW9uKTsKICAgICByYW5nZS0+c2V0RW5kKG5l
d1N0YXJ0LmNvbnRhaW5lck5vZGUoKSwgbmV3U3RhcnQub2Zmc2V0SW5Db250YWluZXJOb2RlKCks
IGV4Y2VwdGlvbik7CkBAIC05MTIsNyArOTEyLDcgQEAgc3RhdGljIGlubGluZSBXZWJEYXRhU291
cmNlICpkYXRhU291cmNlKERvY3VtZW50TG9hZGVyKiBsb2FkZXIpCiAKIC0gKHZvaWQpX3JlcGxh
Y2VTZWxlY3Rpb25XaXRoTm9kZTooRE9NTm9kZSAqKW5vZGUgc2VsZWN0UmVwbGFjZW1lbnQ6KEJP
T0wpc2VsZWN0UmVwbGFjZW1lbnQgc21hcnRSZXBsYWNlOihCT09MKXNtYXJ0UmVwbGFjZSBtYXRj
aFN0eWxlOihCT09MKW1hdGNoU3R5bGUKIHsKLSAgICBET01Eb2N1bWVudEZyYWdtZW50ICpmcmFn
bWVudCA9IGtpdChfcHJpdmF0ZS0+Y29yZUZyYW1lLT5kb2N1bWVudCgpLT5jcmVhdGVEb2N1bWVu
dEZyYWdtZW50KCkuZ2V0KCkpOworICAgIERPTURvY3VtZW50RnJhZ21lbnQgKmZyYWdtZW50ID0g
a2l0KF9wcml2YXRlLT5jb3JlRnJhbWUtPmRvY3VtZW50KCkuY3JlYXRlRG9jdW1lbnRGcmFnbWVu
dCgpLmdldCgpKTsKICAgICBbZnJhZ21lbnQgYXBwZW5kQ2hpbGQ6bm9kZV07CiAgICAgW3NlbGYg
X3JlcGxhY2VTZWxlY3Rpb25XaXRoRnJhZ21lbnQ6ZnJhZ21lbnQgc2VsZWN0UmVwbGFjZW1lbnQ6
c2VsZWN0UmVwbGFjZW1lbnQgc21hcnRSZXBsYWNlOnNtYXJ0UmVwbGFjZSBtYXRjaFN0eWxlOm1h
dGNoU3R5bGVdOwogfQpAQCAtOTczLDcgKzk3Myw3IEBAIHN0YXRpYyBpbmxpbmUgV2ViRGF0YVNv
dXJjZSAqZGF0YVNvdXJjZShEb2N1bWVudExvYWRlciogbG9hZGVyKQogLSAoQk9PTClfY2FuUHJv
dmlkZURvY3VtZW50U291cmNlCiB7CiAgICAgRnJhbWUqIGZyYW1lID0gX3ByaXZhdGUtPmNvcmVG
cmFtZTsKLSAgICBTdHJpbmcgbWltZVR5cGUgPSBmcmFtZS0+ZG9jdW1lbnQoKS0+bG9hZGVyKCkt
PndyaXRlcigpLm1pbWVUeXBlKCk7CisgICAgU3RyaW5nIG1pbWVUeXBlID0gZnJhbWUtPmRvY3Vt
ZW50KCkubG9hZGVyKCktPndyaXRlcigpLm1pbWVUeXBlKCk7CiAgICAgUGx1Z2luRGF0YSogcGx1
Z2luRGF0YSA9IGZyYW1lLT5wYWdlKCkgPyAmZnJhbWUtPnBhZ2UoKS0+cGx1Z2luRGF0YSgpIDog
MDsKIAogICAgIGlmIChXZWJDb3JlOjpET01JbXBsZW1lbnRhdGlvbjo6aXNUZXh0TUlNRVR5cGUo
bWltZVR5cGUpCkBAIC0xMTQwLDcgKzExNDAsNyBAQCBzdGF0aWMgaW5saW5lIFdlYkRhdGFTb3Vy
Y2UgKmRhdGFTb3VyY2UoRG9jdW1lbnRMb2FkZXIqIGxvYWRlcikKIAogLSAodW5zaWduZWQpX3Bl
bmRpbmdGcmFtZVVubG9hZEV2ZW50Q291bnQKIHsKLSAgICByZXR1cm4gX3ByaXZhdGUtPmNvcmVG
cmFtZS0+ZG9jdW1lbnQoKS0+ZG9tV2luZG93KCktPnBlbmRpbmdVbmxvYWRFdmVudExpc3RlbmVy
cygpOworICAgIHJldHVybiBfcHJpdmF0ZS0+Y29yZUZyYW1lLT5kb2N1bWVudCgpLmRvbVdpbmRv
dygpLT5wZW5kaW5nVW5sb2FkRXZlbnRMaXN0ZW5lcnMoKTsKIH0KIAogI2lmIEVOQUJMRShORVRT
Q0FQRV9QTFVHSU5fQVBJKQpAQCAtMTU1NSw3ICsxNTU1LDcgQEAgc3RhdGljIGlubGluZSBXZWJE
YXRhU291cmNlICpkYXRhU291cmNlKERvY3VtZW50TG9hZGVyKiBsb2FkZXIpCiAgICAgaWYgKGZy
YW1lLT5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKS5pc05vbmUoKSkKICAgICAgICAgcmV0dXJuIE5P
OwogICAgICAgICAKLSAgICBmcmFtZS0+ZG9jdW1lbnQoKS0+dXBkYXRlTGF5b3V0KCk7CisgICAg
ZnJhbWUtPmRvY3VtZW50KCkudXBkYXRlTGF5b3V0KCk7CiAgICAgCiAgICAgcmV0dXJuIGZyYW1l
LT5zZWxlY3Rpb24oKS5zZWxlY3Rpb25BdERvY3VtZW50U3RhcnQoKTsKIH0KQEAgLTE1NjcsNyAr
MTU2Nyw3IEBAIHN0YXRpYyBpbmxpbmUgV2ViRGF0YVNvdXJjZSAqZGF0YVNvdXJjZShEb2N1bWVu
dExvYWRlciogbG9hZGVyKQogICAgIGlmIChmcmFtZS0+c2VsZWN0aW9uKCkuc2VsZWN0aW9uKCku
aXNOb25lKCkpCiAgICAgICAgIHJldHVybiBOTzsKICAgICAgICAgCi0gICAgZnJhbWUtPmRvY3Vt
ZW50KCktPnVwZGF0ZUxheW91dCgpOworICAgIGZyYW1lLT5kb2N1bWVudCgpLnVwZGF0ZUxheW91
dCgpOwogICAgIAogICAgIHJldHVybiBmcmFtZS0+c2VsZWN0aW9uKCkuc2VsZWN0aW9uQXRTZW50
ZW5jZVN0YXJ0KCk7CiB9CkBAIC0xNTc5LDcgKzE1NzksNyBAQCBzdGF0aWMgaW5saW5lIFdlYkRh
dGFTb3VyY2UgKmRhdGFTb3VyY2UoRG9jdW1lbnRMb2FkZXIqIGxvYWRlcikKICAgICBpZiAoZnJh
bWUtPnNlbGVjdGlvbigpLnNlbGVjdGlvbigpLmlzTm9uZSgpKQogICAgICAgICByZXR1cm4gTk87
CiAgICAgICAgIAotICAgIGZyYW1lLT5kb2N1bWVudCgpLT51cGRhdGVMYXlvdXQoKTsKKyAgICBm
cmFtZS0+ZG9jdW1lbnQoKS51cGRhdGVMYXlvdXQoKTsKICAgICAKICAgICByZXR1cm4gZnJhbWUt
PnNlbGVjdGlvbigpLnNlbGVjdGlvbkF0V29yZFN0YXJ0KCk7CiB9CkBAIC0xNzEzLDcgKzE3MTMs
NyBAQCBzdGF0aWMgaW5saW5lIFdlYkRhdGFTb3VyY2UgKmRhdGFTb3VyY2UoRG9jdW1lbnRMb2Fk
ZXIqIGxvYWRlcikKICAgICBEb2N1bWVudCAqZG9jdW1lbnQgPSBmcmFtZS0+ZG9jdW1lbnQoKTsK
IAogICAgIGNvbnN0IFZpc2libGVTZWxlY3Rpb24mIHNlbGVjdGlvbiA9IGZyYW1lLT5zZWxlY3Rp
b24oKS5zZWxlY3Rpb24oKTsKLSAgICBFbGVtZW50ICpyb290ID0gc2VsZWN0aW9uLnNlbGVjdGlv
blR5cGUoKSA9PSBWaXNpYmxlU2VsZWN0aW9uOjpOb1NlbGVjdGlvbiA/IGZyYW1lLT5kb2N1bWVu
dCgpLT5ib2R5KCkgOiBzZWxlY3Rpb24ucm9vdEVkaXRhYmxlRWxlbWVudCgpOworICAgIEVsZW1l
bnQgKnJvb3QgPSBzZWxlY3Rpb24uc2VsZWN0aW9uVHlwZSgpID09IFZpc2libGVTZWxlY3Rpb246
Ok5vU2VsZWN0aW9uID8gRnJhbWUtPmRvY3VtZW50KCkuYm9keSgpIDogc2VsZWN0aW9uLnJvb3RF
ZGl0YWJsZUVsZW1lbnQoKTsKICAgICAKICAgICBET01SYW5nZSAqcHJldmlvdXNET01SYW5nZSA9
IG5pbDsKICAgICBpZCBwcmV2aW91c01ldGFkYXRhID0gbmlsOwpAQCAtMjAzNyw3ICsyMDM3LDcg
QEAgc3RhdGljIGlubGluZSBXZWJEYXRhU291cmNlICpkYXRhU291cmNlKERvY3VtZW50TG9hZGVy
KiBsb2FkZXIpCiAgICAgaWYgKGZyYW1lTG9hZGVyLnN1YmZyYW1lTG9hZGVyKCkuY29udGFpbnNQ
bHVnaW5zKCkpCiAgICAgICAgIFtyZXN1bHQgc2V0T2JqZWN0OltOU051bWJlciBudW1iZXJXaXRo
Qm9vbDpZRVNdIGZvcktleTpXZWJGcmFtZUhhc1BsdWdpbnNdOwogICAgIAotICAgIGlmIChET01X
aW5kb3cqIGRvbVdpbmRvdyA9IF9wcml2YXRlLT5jb3JlRnJhbWUtPmRvY3VtZW50KCktPmRvbVdp
bmRvdygpKSB7CisgICAgaWYgKERPTVdpbmRvdyogZG9tV2luZG93ID0gX3ByaXZhdGUtPmNvcmVG
cmFtZS0+ZG9jdW1lbnQoKS5kb21XaW5kb3coKSkgewogICAgICAgICBpZiAoZG9tV2luZG93LT5o
YXNFdmVudExpc3RlbmVycyhldmVudE5hbWVzKCkudW5sb2FkRXZlbnQpKQogICAgICAgICAgICAg
W3Jlc3VsdCBzZXRPYmplY3Q6W05TTnVtYmVyIG51bWJlcldpdGhCb29sOllFU10gZm9yS2V5Oldl
YkZyYW1lSGFzVW5sb2FkTGlzdGVuZXJdOwogICAgICAgICBpZiAoZG9tV2luZG93LT5vcHRpb25h
bEFwcGxpY2F0aW9uQ2FjaGUoKSkKQEAgLTIwNjAsNyArMjA2MCw3IEBAIHN0YXRpYyBpbmxpbmUg
V2ViRGF0YVNvdXJjZSAqZGF0YVNvdXJjZShEb2N1bWVudExvYWRlciogbG9hZGVyKQogewogICAg
IGlmICghX3ByaXZhdGUtPmNvcmVGcmFtZSkKICAgICAgICAgcmV0dXJuIFlFUzsKLSAgICByZXR1
cm4gX3ByaXZhdGUtPmNvcmVGcmFtZS0+ZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKS0+Y2Fu
RGlzcGxheShVUkwpOworICAgIHJldHVybiBfcHJpdmF0ZS0+Y29yZUZyYW1lLT5kb2N1bWVudCgp
LnNlY3VyaXR5T3JpZ2luKCktPmNhbkRpc3BsYXkoVVJMKTsKIH0KIAogLSAoTlNTdHJpbmcgKilf
c3RyaW5nQnlFdmFsdWF0aW5nSmF2YVNjcmlwdEZyb21TdHJpbmc6KE5TU3RyaW5nICopc3RyaW5n
IHdpdGhHbG9iYWxPYmplY3Q6KEpTT2JqZWN0UmVmKWdsb2JhbE9iamVjdFJlZiBpblNjcmlwdFdv
cmxkOihXZWJTY3JpcHRXb3JsZCAqKXdvcmxkCkBAIC0yMTQ5LDcgKzIxNDksNyBAQCBzdGF0aWMg
aW5saW5lIFdlYkRhdGFTb3VyY2UgKmRhdGFTb3VyY2UoRG9jdW1lbnRMb2FkZXIqIGxvYWRlcikK
ICAgICBpZiAoIV9wcml2YXRlLT5jb3JlRnJhbWUgfHwgIV9wcml2YXRlLT5jb3JlRnJhbWUtPmRv
Y3VtZW50KCkpCiAgICAgICAgIHJldHVybjsKICAgICAKLSAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0
KiByb290T2JqZWN0ID0gX3ByaXZhdGUtPmNvcmVGcmFtZS0+ZG9jdW1lbnQoKS0+YXhPYmplY3RD
YWNoZSgpLT5yb290T2JqZWN0KCk7CisgICAgQWNjZXNzaWJpbGl0eU9iamVjdCogcm9vdE9iamVj
dCA9IF9wcml2YXRlLT5jb3JlRnJhbWUtPmRvY3VtZW50KCkuYXhPYmplY3RDYWNoZSgpLT5yb290
T2JqZWN0KCk7CiAgICAgaWYgKHJvb3RPYmplY3QpIHsKICAgICAgICAgU3RyaW5nIHN0ck5hbWUo
bmFtZSk7CiAgICAgICAgIHJvb3RPYmplY3QtPnNldEFjY2Vzc2libGVOYW1lKHN0ck5hbWUpOwpA
QCAtMjIzOCw3ICsyMjM4LDcgQEAgc3RhdGljIGlubGluZSBXZWJEYXRhU291cmNlICpkYXRhU291
cmNlKERvY3VtZW50TG9hZGVyKiBsb2FkZXIpCiAgICAgaWYgKCFfcHJpdmF0ZS0+Y29yZUZyYW1l
LT52aWV3KCktPmRvY3VtZW50VmlldygpKQogICAgICAgICByZXR1cm4gW05TQXJyYXkgYXJyYXld
OwogCi0gICAgUmVuZGVyVmlldyogcm9vdCA9IF9wcml2YXRlLT5jb3JlRnJhbWUtPmRvY3VtZW50
KCktPnJlbmRlclZpZXcoKTsKKyAgICBSZW5kZXJWaWV3KiByb290ID0gX3ByaXZhdGUtPmNvcmVG
cmFtZS0+ZG9jdW1lbnQoKS5yZW5kZXJWaWV3KCk7CiAgICAgaWYgKCFyb290KQogICAgICAgICBy
ZXR1cm4gW05TQXJyYXkgYXJyYXldOwogCkBAIC0yMjg3LDcgKzIyODcsNyBAQCBzdGF0aWMgaW5s
aW5lIFdlYkRhdGFTb3VyY2UgKmRhdGFTb3VyY2UoRG9jdW1lbnRMb2FkZXIqIGxvYWRlcikKICAg
ICBFbGVtZW50KiByb290OwogICAgIGNvbnN0IFZpc2libGVTZWxlY3Rpb24mIHNlbGVjdGlvbiA9
IGNvcmVGcmFtZS0+c2VsZWN0aW9uKCkuc2VsZWN0aW9uKCk7CiAgICAgaWYgKHNlbGVjdGlvbi5p
c05vbmUoKSB8fCAhc2VsZWN0aW9uLmlzQ29udGVudEVkaXRhYmxlKCkpCi0gICAgICAgIHJvb3Qg
PSBjb3JlRnJhbWUtPmRvY3VtZW50KCktPmJvZHkoKTsKKyAgICAgICAgcm9vdCA9IGNvcmVGcmFt
ZS0+ZG9jdW1lbnQoKS5ib2R5KCk7CiAgICAgZWxzZSB7CiAgICAgICAgIC8vIENhbid0IHVzZSB0
aGUgZm9jdXNlZE5vZGUgaGVyZSBiZWNhdXNlIHdlIHdhbnQgdGhlIHJvb3Qgb2YgdGhlIHNoYWRv
dyB0cmVlIGZvciBmb3JtIGVsZW1lbnRzLgogICAgICAgICByb290ID0gc2VsZWN0aW9uLnJvb3RF
ZGl0YWJsZUVsZW1lbnQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcv
V2ViSFRNTFJlcHJlc2VudGF0aW9uLm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJI
VE1MUmVwcmVzZW50YXRpb24ubW0KaW5kZXggZmMzYTgxYy4uZjczNDI1NiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJIVE1MUmVwcmVzZW50YXRpb24ubW0KKysrIGIv
U291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJIVE1MUmVwcmVzZW50YXRpb24ubW0KQEAgLTE4
OSw3ICsxODksNyBAQCBzdGF0aWMgTlNNdXRhYmxlQXJyYXkgKm5ld0FycmF5QnlDb25jYXRlbmF0
aW5nQXJyYXlzKE5TQXJyYXkgKmZpcnN0LCBOU0FycmF5ICpzZQogCiAgICAgLy8gSWYgdGhlIGRv
Y3VtZW50IGlzIGEgc3RhbmQtYWxvbmUgbWVkaWEgZG9jdW1lbnQsIG5vdyBpcyB0aGUgcmlnaHQg
dGltZSB0byBjYW5jZWwgdGhlIFdlYktpdCBsb2FkCiAgICAgRnJhbWUqIGNvcmVGcmFtZSA9IGNv
cmUod2ViRnJhbWUpOwotICAgIGlmIChjb3JlRnJhbWUtPmRvY3VtZW50KCktPmlzTWVkaWFEb2N1
bWVudCgpKQorICAgIGlmIChjb3JlRnJhbWUtPmRvY3VtZW50KCkuaXNNZWRpYURvY3VtZW50KCkp
CiAgICAgICAgIGNvcmVGcmFtZS0+bG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKS0+Y2FuY2VsTWFp
blJlc291cmNlTG9hZChjb3JlRnJhbWUtPmxvYWRlcigpLmNsaWVudCgpLnBsdWdpbldpbGxIYW5k
bGVMb2FkRXJyb3IoY29yZUZyYW1lLT5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigpLT5yZXNwb25z
ZSgpKSk7CiAKICAgICBpZiAoX3ByaXZhdGUtPnBsdWdpblZpZXcpIHsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0L21h
Yy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCmluZGV4IDc5NDIxOTAuLjJjNDQ5YTIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0KKysrIGIvU291cmNl
L1dlYktpdC9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbQpAQCAtMjMyMiw3ICsyMzIyLDcgQEAg
c3RhdGljIGJvb2wgbW91c2VFdmVudElzUGFydE9mQ2xpY2tPckRyYWcoTlNFdmVudCAqZXZlbnQp
CiAgICAgaWYgKCFmcmFtZSkKICAgICAgICAgcmV0dXJuIE5POwogCi0gICAgaWYgKGZyYW1lLT5k
b2N1bWVudCgpICYmIGZyYW1lLT5kb2N1bWVudCgpLT5pc0ZyYW1lU2V0KCkpIHsKKyAgICBpZiAo
ZnJhbWUtPmRvY3VtZW50KCkgJiYgZnJhbWUtPmRvY3VtZW50KCkuaXNGcmFtZVNldCgpKSB7CiAg
ICAgICAgIG1pbmltdW1QYWdlV2lkdGggPSAwOwogICAgICAgICBtaW5pbXVtUGFnZUhlaWdodCA9
IDA7CiAgICAgfQpAQCAtMjM1MSw3ICsyMzUxLDcgQEAgc3RhdGljIGJvb2wgbW91c2VFdmVudElz
UGFydE9mQ2xpY2tPckRyYWcoTlNFdmVudCAqZXZlbnQpCiAKICAgICAvLyBJZiB3ZSBhcmUgYSBm
cmFtZXNldCBqdXN0IHByaW50IHdpdGggdGhlIGxheW91dCB3ZSBoYXZlIG9uc2NyZWVuLCBvdGhl
cndpc2UgcmVsYXlvdXQKICAgICAvLyBhY2NvcmRpbmcgdG8gdGhlIHBhZ2Ugd2lkdGguCi0gICAg
aWYgKHNocmlua1RvRml0ICYmICghZnJhbWUtPmRvY3VtZW50KCkgfHwgIWZyYW1lLT5kb2N1bWVu
dCgpLT5pc0ZyYW1lU2V0KCkpKSB7CisgICAgaWYgKHNocmlua1RvRml0ICYmICghZnJhbWUtPmRv
Y3VtZW50KCkgfHwgIWZyYW1lLT5kb2N1bWVudCgpLmlzRnJhbWVTZXQoKSkpIHsKICAgICAgICAg
bWluTGF5b3V0U2l6ZSA9IGZyYW1lLT5yZXNpemVQYWdlUmVjdHNLZWVwaW5nUmF0aW8oRmxvYXRT
aXplKHBhZ2VMb2dpY2FsV2lkdGgsIHBhZ2VMb2dpY2FsSGVpZ2h0KSwgRmxvYXRTaXplKHBhZ2VM
b2dpY2FsV2lkdGggKiBfV2ViSFRNTFZpZXdQcmludGluZ01pbmltdW1TaHJpbmtGYWN0b3IsIHBh
Z2VMb2dpY2FsSGVpZ2h0ICogX1dlYkhUTUxWaWV3UHJpbnRpbmdNaW5pbXVtU2hyaW5rRmFjdG9y
KSk7CiAgICAgICAgIG1heGltdW1TaHJpbmtSYXRpbyA9IF9XZWJIVE1MVmlld1ByaW50aW5nTWF4
aW11bVNocmlua0ZhY3RvciAvIF9XZWJIVE1MVmlld1ByaW50aW5nTWluaW11bVNocmlua0ZhY3Rv
cjsKICAgICB9CkBAIC0yMzg3LDcgKzIzODcsNyBAQCBzdGF0aWMgYm9vbCBtb3VzZUV2ZW50SXNQ
YXJ0T2ZDbGlja09yRHJhZyhOU0V2ZW50ICpldmVudCkKIAogICAgIC8vIElmIHdlIGFyZSBhIGZy
YW1lc2V0IGp1c3QgcHJpbnQgd2l0aCB0aGUgbGF5b3V0IHdlIGhhdmUgb25zY3JlZW4sIG90aGVy
d2lzZSByZWxheW91dAogICAgIC8vIGFjY29yZGluZyB0byB0aGUgcGFnZSB3aWR0aC4KLSAgICBp
ZiAoc2hyaW5rVG9GaXQgJiYgKCFmcmFtZS0+ZG9jdW1lbnQoKSB8fCAhZnJhbWUtPmRvY3VtZW50
KCktPmlzRnJhbWVTZXQoKSkpIHsKKyAgICBpZiAoc2hyaW5rVG9GaXQgJiYgKCFmcmFtZS0+ZG9j
dW1lbnQoKSB8fCAhZnJhbWUtPmRvY3VtZW50KCkuaXNGcmFtZVNldCgpKSkgewogICAgICAgICBt
aW5MYXlvdXRTaXplID0gZnJhbWUtPnJlc2l6ZVBhZ2VSZWN0c0tlZXBpbmdSYXRpbyhGbG9hdFNp
emUocGFnZUxvZ2ljYWxXaWR0aCwgcGFnZUxvZ2ljYWxIZWlnaHQpLCBGbG9hdFNpemUocGFnZUxv
Z2ljYWxXaWR0aCAqIF9XZWJIVE1MVmlld1ByaW50aW5nTWluaW11bVNocmlua0ZhY3RvciwgcGFn
ZUxvZ2ljYWxIZWlnaHQgKiBfV2ViSFRNTFZpZXdQcmludGluZ01pbmltdW1TaHJpbmtGYWN0b3Ip
KTsKICAgICAgICAgbWF4aW11bVNocmlua1JhdGlvID0gX1dlYkhUTUxWaWV3UHJpbnRpbmdNYXhp
bXVtU2hyaW5rRmFjdG9yIC8gX1dlYkhUTUxWaWV3UHJpbnRpbmdNaW5pbXVtU2hyaW5rRmFjdG9y
OwogICAgIH0KQEAgLTMyNTksNyArMzI1OSw3IEBAIFdFQkNPUkVfQ09NTUFORCh0b2dnbGVVbmRl
cmxpbmUpCiAjZW5kaWYKIAogICAgIGlmIChGcmFtZSogY29yZUZyYW1lID0gY29yZShbc2VsZiBf
ZnJhbWVdKSkKLSAgICAgICAgY29yZUZyYW1lLT5kb2N1bWVudCgpLT5zdHlsZVJlc29sdmVyQ2hh
bmdlZChSZWNhbGNTdHlsZUltbWVkaWF0ZWx5KTsKKyAgICAgICAgY29yZUZyYW1lLT5kb2N1bWVu
dCgpLnN0eWxlUmVzb2x2ZXJDaGFuZ2VkKFJlY2FsY1N0eWxlSW1tZWRpYXRlbHkpOwogICAgIAog
I2lmZGVmIExPR19USU1FUyAgICAgICAgCiAgICAgZG91YmxlIHRoaXNUaW1lID0gQ0ZBYnNvbHV0
ZVRpbWVHZXRDdXJyZW50KCkgLSBzdGFydDsKQEAgLTMyNzUsOSArMzI3NSw5IEBAIFdFQkNPUkVf
Q09NTUFORCh0b2dnbGVVbmRlcmxpbmUpCiAgICAgaWYgKCFjb3JlRnJhbWUpCiAgICAgICAgIHJl
dHVybjsKICAgICBpZiAoY29yZUZyYW1lLT5kb2N1bWVudCgpKSB7Ci0gICAgICAgIGlmIChjb3Jl
RnJhbWUtPmRvY3VtZW50KCktPmluUGFnZUNhY2hlKCkpCisgICAgICAgIGlmIChjb3JlRnJhbWUt
PmRvY3VtZW50KCkuaW5QYWdlQ2FjaGUoKSkKICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAg
Y29yZUZyYW1lLT5kb2N1bWVudCgpLT51cGRhdGVTdHlsZUlmTmVlZGVkKCk7CisgICAgICAgIGNv
cmVGcmFtZS0+ZG9jdW1lbnQoKS51cGRhdGVTdHlsZUlmTmVlZGVkKCk7CiAgICAgfQogCiAgICAg
aWYgKCFbc2VsZiBfbmVlZHNMYXlvdXRdKQpAQCAtMzI5Myw3ICszMjkzLDcgQEAgV0VCQ09SRV9D
T01NQU5EKHRvZ2dsZVVuZGVybGluZSkKICAgICAgICAgaWYgKG1pblBhZ2VMb2dpY2FsV2lkdGgg
PiAwLjApIHsKICAgICAgICAgICAgIEZsb2F0U2l6ZSBwYWdlU2l6ZShtaW5QYWdlTG9naWNhbFdp
ZHRoLCBtaW5QYWdlTG9naWNhbEhlaWdodCk7CiAgICAgICAgICAgICBGbG9hdFNpemUgb3JpZ2lu
YWxQYWdlU2l6ZShvcmlnaW5hbFBhZ2VXaWR0aCwgb3JpZ2luYWxQYWdlSGVpZ2h0KTsKLSAgICAg
ICAgICAgIGlmIChjb3JlRnJhbWUtPmRvY3VtZW50KCkgJiYgY29yZUZyYW1lLT5kb2N1bWVudCgp
LT5yZW5kZXJWaWV3KCkgJiYgIWNvcmVGcmFtZS0+ZG9jdW1lbnQoKS0+cmVuZGVyVmlldygpLT5z
dHlsZSgpLmlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCkpIHsKKyAgICAgICAgICAgIGlmIChjb3Jl
RnJhbWUtPmRvY3VtZW50KCkgJiYgY29yZUZyYW1lLT5kb2N1bWVudCgpLnJlbmRlclZpZXcoKSAm
JiAhY29yZUZyYW1lLT5kb2N1bWVudCgpLnJlbmRlclZpZXcoKS0+c3R5bGUoKS5pc0hvcml6b250
YWxXcml0aW5nTW9kZSgpKSB7CiAgICAgICAgICAgICAgICAgcGFnZVNpemUgPSBGbG9hdFNpemUo
bWluUGFnZUxvZ2ljYWxIZWlnaHQsIG1pblBhZ2VMb2dpY2FsV2lkdGgpOwogICAgICAgICAgICAg
ICAgIG9yaWdpbmFsUGFnZVNpemUgPSBGbG9hdFNpemUob3JpZ2luYWxQYWdlSGVpZ2h0LCBvcmln
aW5hbFBhZ2VXaWR0aCk7CiAgICAgICAgICAgICB9CkBAIC0zNDcwLDcgKzM0NzAsNyBAQCBzdGF0
aWMgdm9pZCBzZXRNZW51VGFyZ2V0cyhOU01lbnUqIG1lbnUpCiAgICAgaWYgKCFmbGFnKQogICAg
ICAgICByZXR1cm47IC8vIFRoZXJlJ3Mgbm8gd2F5IHRvIHNheSB5b3UgZG9uJ3QgbmVlZCBhIGxh
eW91dC4KICAgICBpZiAoRnJhbWUqIGZyYW1lID0gY29yZShbc2VsZiBfZnJhbWVdKSkgewotICAg
ICAgICBpZiAoZnJhbWUtPmRvY3VtZW50KCkgJiYgZnJhbWUtPmRvY3VtZW50KCktPmluUGFnZUNh
Y2hlKCkpCisgICAgICAgIGlmIChmcmFtZS0+ZG9jdW1lbnQoKSAmJiBmcmFtZS0+ZG9jdW1lbnQo
KS5pblBhZ2VDYWNoZSgpKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBpZiAoRnJhbWVW
aWV3KiB2aWV3ID0gZnJhbWUtPnZpZXcoKSkKICAgICAgICAgICAgIHZpZXctPnNldE5lZWRzTGF5
b3V0KCk7CkBAIC0zNDgzLDkgKzM0ODMsOSBAQCBzdGF0aWMgdm9pZCBzZXRNZW51VGFyZ2V0cyhO
U01lbnUqIG1lbnUpCiAgICAgaWYgKCFmbGFnKQogICAgICAgICByZXR1cm47IC8vIFRoZXJlJ3Mg
bm8gd2F5IHRvIHNheSB5b3UgZG9uJ3QgbmVlZCBhIHN0eWxlIHJlY2FsYy4KICAgICBpZiAoRnJh
bWUqIGZyYW1lID0gY29yZShbc2VsZiBfZnJhbWVdKSkgewotICAgICAgICBpZiAoZnJhbWUtPmRv
Y3VtZW50KCkgJiYgZnJhbWUtPmRvY3VtZW50KCktPmluUGFnZUNhY2hlKCkpCisgICAgICAgIGlm
IChmcmFtZS0+ZG9jdW1lbnQoKSAmJiBmcmFtZS0+ZG9jdW1lbnQoKS5pblBhZ2VDYWNoZSgpKQog
ICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICBmcmFtZS0+ZG9jdW1lbnQoKS0+c2NoZWR1bGVG
b3JjZWRTdHlsZVJlY2FsYygpOworICAgICAgICBmcmFtZS0+ZG9jdW1lbnQoKS5zY2hlZHVsZUZv
cmNlZFN0eWxlUmVjYWxjKCk7CiAgICAgfQogfQogCkBAIC00MTQzLDEwICs0MTQzLDEwIEBAIHN0
YXRpYyBQYXNzUmVmUHRyPEtleWJvYXJkRXZlbnQ+IGN1cnJlbnRLZXlib2FyZEV2ZW50KEZyYW1l
KiBjb3JlRnJhbWUpCiAgICAgY2FzZSBOU0tleURvd246IHsKICAgICAgICAgUGxhdGZvcm1LZXli
b2FyZEV2ZW50IHBsYXRmb3JtRXZlbnQgPSBQbGF0Zm9ybUV2ZW50RmFjdG9yeTo6Y3JlYXRlUGxh
dGZvcm1LZXlib2FyZEV2ZW50KGV2ZW50KTsKICAgICAgICAgcGxhdGZvcm1FdmVudC5kaXNhbWJp
Z3VhdGVLZXlEb3duRXZlbnQoUGxhdGZvcm1FdmVudDo6UmF3S2V5RG93bik7Ci0gICAgICAgIHJl
dHVybiBLZXlib2FyZEV2ZW50OjpjcmVhdGUocGxhdGZvcm1FdmVudCwgY29yZUZyYW1lLT5kb2N1
bWVudCgpLT5kZWZhdWx0VmlldygpKTsKKyAgICAgICAgcmV0dXJuIEtleWJvYXJkRXZlbnQ6OmNy
ZWF0ZShwbGF0Zm9ybUV2ZW50LCBjb3JlRnJhbWUtPmRvY3VtZW50KCkuZGVmYXVsdFZpZXcoKSk7
CiAgICAgfQogICAgIGNhc2UgTlNLZXlVcDoKLSAgICAgICAgcmV0dXJuIEtleWJvYXJkRXZlbnQ6
OmNyZWF0ZShQbGF0Zm9ybUV2ZW50RmFjdG9yeTo6Y3JlYXRlUGxhdGZvcm1LZXlib2FyZEV2ZW50
KGV2ZW50KSwgY29yZUZyYW1lLT5kb2N1bWVudCgpLT5kZWZhdWx0VmlldygpKTsKKyAgICAgICAg
cmV0dXJuIEtleWJvYXJkRXZlbnQ6OmNyZWF0ZShQbGF0Zm9ybUV2ZW50RmFjdG9yeTo6Y3JlYXRl
UGxhdGZvcm1LZXlib2FyZEV2ZW50KGV2ZW50KSwgY29yZUZyYW1lLT5kb2N1bWVudCgpLmRlZmF1
bHRWaWV3KCkpOwogICAgIGRlZmF1bHQ6CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViUERGVmlldy5tbSBiL1NvdXJjZS9X
ZWJLaXQvbWFjL1dlYlZpZXcvV2ViUERGVmlldy5tbQppbmRleCAzY2I2NWE0Li5jNjkyOTY5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlBERlZpZXcubW0KKysrIGIv
U291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJQREZWaWV3Lm1tCkBAIC0xMDU2LDcgKzEwNTYs
NyBAQCBzdGF0aWMgQk9PTCBpc0ZyYW1lSW5SYW5nZShXZWJGcmFtZSAqZnJhbWUsIERPTVJhbmdl
ICpyYW5nZSkKIAogICAgIC8vIENhbGwgdG8gdGhlIGZyYW1lIGxvYWRlciBiZWNhdXNlIHRoaXMg
aXMgd2hlcmUgb3VyIHNlY3VyaXR5IGNoZWNrcyBhcmUgbWFkZS4KICAgICBGcmFtZSogZnJhbWUg
PSBjb3JlKFtkYXRhU291cmNlIHdlYkZyYW1lXSk7Ci0gICAgZnJhbWUtPmxvYWRlcigpLmxvYWRG
cmFtZVJlcXVlc3QoRnJhbWVMb2FkUmVxdWVzdChmcmFtZS0+ZG9jdW1lbnQoKS0+c2VjdXJpdHlP
cmlnaW4oKSwgUmVzb3VyY2VSZXF1ZXN0KFVSTCkpLCBMb2NrSGlzdG9yeTo6Tm8sIExvY2tCYWNr
Rm9yd2FyZExpc3Q6Ok5vLCBldmVudC5nZXQoKSwgMCwgTWF5YmVTZW5kUmVmZXJyZXIpOworICAg
IGZyYW1lLT5sb2FkZXIoKS5sb2FkRnJhbWVSZXF1ZXN0KEZyYW1lTG9hZFJlcXVlc3QoZnJhbWUt
PmRvY3VtZW50KCkuc2VjdXJpdHlPcmlnaW4oKSwgUmVzb3VyY2VSZXF1ZXN0KFVSTCkpLCBMb2Nr
SGlzdG9yeTo6Tm8sIExvY2tCYWNrRm9yd2FyZExpc3Q6Ok5vLCBldmVudC5nZXQoKSwgMCwgTWF5
YmVTZW5kUmVmZXJyZXIpOwogfQogCiAtICh2b2lkKVBERlZpZXdPcGVuUERGSW5OYXRpdmVBcHBs
aWNhdGlvbjooUERGVmlldyAqKXNlbmRlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMv
V2ViVmlldy9XZWJWaWV3Lm1tIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1t
CmluZGV4IGRjODM4MzQuLjRlMTJkYTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dl
YlZpZXcvV2ViVmlldy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcu
bW0KQEAgLTMwNzIsNyArMzA3Miw3IEBAIHN0YXRpYyBpbmxpbmUgSU1QIGdldE1ldGhvZChpZCBv
LCBTRUwgcykKICAgICBpZiAoIW1haW5GcmFtZSkKICAgICAgICAgcmV0dXJuIG5pbDsKIAotICAg
IGNvbnN0IFZlY3RvcjxBbm5vdGF0ZWRSZWdpb25WYWx1ZT4mIHJlZ2lvbnMgPSBtYWluRnJhbWUt
PmRvY3VtZW50KCktPmFubm90YXRlZFJlZ2lvbnMoKTsKKyAgICBjb25zdCBWZWN0b3I8QW5ub3Rh
dGVkUmVnaW9uVmFsdWU+JiByZWdpb25zID0gbWFpbkZyYW1lLT5kb2N1bWVudCgpLmFubm90YXRl
ZFJlZ2lvbnMoKTsKICAgICBzaXplX3Qgc2l6ZSA9IHJlZ2lvbnMuc2l6ZSgpOwogCiAgICAgTlNN
dXRhYmxlRGljdGlvbmFyeSAqd2ViUmVnaW9ucyA9IFtOU011dGFibGVEaWN0aW9uYXJ5IGRpY3Rp
b25hcnlXaXRoQ2FwYWNpdHk6c2l6ZV07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKaW5kZXggNTQzYTkwOS4uYzVh
OGI4MTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKQEAgLTEsMyArMSwyOSBAQAorMjAxNC0wNC0yMiAgR3l1
eW91bmcgS2ltICA8Z3l1eW91bmcua2ltQHNhbXN1bmcuY29tPgorCisgICAgICAgIE5lZWQgYSBz
aG9ydCBkZXNjcmlwdGlvbiAoT09QUyEpLgorICAgICAgICBOZWVkIHRoZSBidWcgVVJMIChPT1BT
ISkuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBX
ZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwOgorICAgICAgICAoV2ViQ2hyb21lQ2xp
ZW50OjpjcmVhdGVXaW5kb3cpOgorICAgICAgICAoV2ViQ2hyb21lQ2xpZW50OjpleGNlZWRlZERh
dGFiYXNlUXVvdGEpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xp
ZW50LmNwcDoKKyAgICAgICAgKFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojpjb21taXR0ZWRMb2FkKToK
KyAgICAgICAgKFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZEZhaWxUb1N0YXJ0UGx1
Z2luKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5jcHA6
CisgICAgICAgIChXZWJHZW9sb2NhdGlvbkNsaWVudDo6cmVxdWVzdFBlcm1pc3Npb24pOgorICAg
ICAgICAqIFdlYkZyYW1lLmNwcDoKKyAgICAgICAgKFdlYkZyYW1lOjpET01XaW5kb3cpOgorICAg
ICAgICAoV2ViRnJhbWU6OnVybCk6CisgICAgICAgIChXZWJGcmFtZTo6cGVuZGluZ0ZyYW1lVW5s
b2FkRXZlbnRDb3VudCk6CisgICAgICAgIChXZWJGcmFtZTo6YWxsb3dzRm9sbG93aW5nTGluayk6
CisgICAgICAgIChXZWJGcmFtZTo6c2V0SW5QcmludGluZ01vZGUpOgorICAgICAgICAoV2ViRnJh
bWU6OmlzRnJhbWVTZXQpOgorICAgICAgICAqIFdlYlZpZXcuY3BwOgorICAgICAgICAoV2ViVmll
dzo6Z2VzdHVyZU5vdGlmeSk6CisgICAgICAgIChXZWJWaWV3OjpzZXRJbml0aWFsRm9jdXMpOgor
CiAyMDE0LTA0LTA5ICBBbGV4ZXkgUHJvc2t1cnlha292ICA8YXBAYXBwbGUuY29tPgogCiAgICAg
ICAgIEVsaW1pbmF0ZSBEcmFnU2Vzc2lvbiBzdHJ1Y3R1cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAgYi9Tb3VyY2UvV2Vi
S2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwCmluZGV4IGQ3OTI2M2Yu
LmQ0MmRiNGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dl
YkNocm9tZUNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQv
V2ViQ2hyb21lQ2xpZW50LmNwcApAQCAtMTk3LDggKzE5Nyw4IEBAIFBhZ2UqIFdlYkNocm9tZUNs
aWVudDo6Y3JlYXRlV2luZG93KEZyYW1lKiBmcmFtZSwgY29uc3QgRnJhbWVMb2FkUmVxdWVzdCYs
IGNvbnN0CiAgICAgICAgIHJldHVybiAwOwogCiAjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQot
ICAgIGlmIChmcmFtZS0+ZG9jdW1lbnQoKSAmJiBmcmFtZS0+ZG9jdW1lbnQoKS0+d2Via2l0Q3Vy
cmVudEZ1bGxTY3JlZW5FbGVtZW50KCkpCi0gICAgICAgIGZyYW1lLT5kb2N1bWVudCgpLT53ZWJr
aXRDYW5jZWxGdWxsU2NyZWVuKCk7CisgICAgaWYgKGZyYW1lLT5kb2N1bWVudCgpICYmIGZyYW1l
LT5kb2N1bWVudCgpLndlYmtpdEN1cnJlbnRGdWxsU2NyZWVuRWxlbWVudCgpKQorICAgICAgICBm
cmFtZS0+ZG9jdW1lbnQoKS53ZWJraXRDYW5jZWxGdWxsU2NyZWVuKCk7CiAjZW5kaWYKIAogICAg
IENPTVB0cjxXZWJNdXRhYmxlVVJMUmVxdWVzdD4gcmVxdWVzdCA9IGFkb3B0Q09NKFdlYk11dGFi
bGVVUkxSZXF1ZXN0OjpjcmVhdGVJbnN0YW5jZShSZXNvdXJjZVJlcXVlc3QobmF2aWdhdGlvbkFj
dGlvbi51cmwoKSkpKTsKQEAgLTU4Niw3ICs1ODYsNyBAQCB2b2lkIFdlYkNocm9tZUNsaWVudDo6
cHJpbnQoRnJhbWUqIGZyYW1lKQogI2lmIEVOQUJMRShTUUxfREFUQUJBU0UpCiB2b2lkIFdlYkNo
cm9tZUNsaWVudDo6ZXhjZWVkZWREYXRhYmFzZVF1b3RhKEZyYW1lKiBmcmFtZSwgY29uc3QgU3Ry
aW5nJiBkYXRhYmFzZUlkZW50aWZpZXIsIERhdGFiYXNlRGV0YWlscykKIHsKLSAgICBDT01QdHI8
V2ViU2VjdXJpdHlPcmlnaW4+IG9yaWdpbihBZG9wdENPTSwgV2ViU2VjdXJpdHlPcmlnaW46OmNy
ZWF0ZUluc3RhbmNlKGZyYW1lLT5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpKSk7CisgICAg
Q09NUHRyPFdlYlNlY3VyaXR5T3JpZ2luPiBvcmlnaW4oQWRvcHRDT00sIFdlYlNlY3VyaXR5T3Jp
Z2luOjpjcmVhdGVJbnN0YW5jZShmcmFtZS0+ZG9jdW1lbnQoKS5zZWN1cml0eU9yaWdpbigpKSk7
CiAgICAgQ09NUHRyPElXZWJVSURlbGVnYXRlPiB1aURlbGVnYXRlOwogICAgIGlmIChTVUNDRUVE
RUQobV93ZWJWaWV3LT51aURlbGVnYXRlKCZ1aURlbGVnYXRlKSkpIHsKICAgICAgICAgQ09NUHRy
PElXZWJVSURlbGVnYXRlUHJpdmF0ZT4gdWlEZWxlZ2F0ZVByaXZhdGUoUXVlcnksIHVpRGVsZWdh
dGUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJh
bWVMb2FkZXJDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2Vi
RnJhbWVMb2FkZXJDbGllbnQuY3BwCmluZGV4IDI4NDA2NzQuLjNmMjhhMDcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNs
aWVudC5jcHAKQEAgLTY5Nyw3ICs2OTcsNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojpj
b21taXR0ZWRMb2FkKERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIGNvbnN0IGNoYXIqIGRhdAogICAg
IC8vIElmIHRoZSBkb2N1bWVudCBpcyBhIHN0YW5kLWFsb25lIG1lZGlhIGRvY3VtZW50LCBub3cg
aXMgdGhlIHJpZ2h0IHRpbWUgdG8gY2FuY2VsIHRoZSBXZWJLaXQgbG9hZC4KICAgICAvLyBGSVhN
RTogVGhpcyBjb2RlIHNob3VsZCBiZSBzaGFyZWQgYWNyb3NzIGFsbCBwb3J0cy4gPGh0dHA6Ly93
ZWJraXQub3JnL2IvNDg3NjI+LgogICAgIEZyYW1lKiBjb3JlRnJhbWUgPSBjb3JlKG1fd2ViRnJh
bWUpOwotICAgIGlmIChjb3JlRnJhbWUtPmRvY3VtZW50KCktPmlzTWVkaWFEb2N1bWVudCgpKQor
ICAgIGlmIChjb3JlRnJhbWUtPmRvY3VtZW50KCkuaXNNZWRpYURvY3VtZW50KCkpCiAgICAgICAg
IGxvYWRlci0+Y2FuY2VsTWFpblJlc291cmNlTG9hZChwbHVnaW5XaWxsSGFuZGxlTG9hZEVycm9y
KGxvYWRlci0+cmVzcG9uc2UoKSkpOwogCiAgICAgaWYgKCFtX21hbnVhbExvYWRlcikKQEAgLTEw
OTUsNyArMTA5NSw3IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkRmFp
bFRvU3RhcnRQbHVnaW4oY29uc3QgUGx1Z2luVmlldyogcGx1Z2luCiAgICAgQVNTRVJUKGZyYW1l
ID09IHBsdWdpblZpZXctPnBhcmVudEZyYW1lKCkpOwogCiAgICAgaWYgKCFwbHVnaW5WaWV3LT5w
bHVnaW5zUGFnZSgpLmlzTnVsbCgpKSB7Ci0gICAgICAgIFVSTCBwbHVnaW5QYWdlVVJMID0gZnJh
bWUtPmRvY3VtZW50KCktPmNvbXBsZXRlVVJMKHN0cmlwTGVhZGluZ0FuZFRyYWlsaW5nSFRNTFNw
YWNlcyhwbHVnaW5WaWV3LT5wbHVnaW5zUGFnZSgpKSk7CisgICAgICAgIFVSTCBwbHVnaW5QYWdl
VVJMID0gZnJhbWUtPmRvY3VtZW50KCkuY29tcGxldGVVUkwoc3RyaXBMZWFkaW5nQW5kVHJhaWxp
bmdIVE1MU3BhY2VzKHBsdWdpblZpZXctPnBsdWdpbnNQYWdlKCkpKTsKICAgICAgICAgaWYgKHBs
dWdpblBhZ2VVUkwucHJvdG9jb2xJc0luSFRUUEZhbWlseSgpKSB7CiAgICAgICAgICAgICBzdGF0
aWMgQ0ZTdHJpbmdSZWYga2V5ID0gTWFyc2hhbGxpbmdIZWxwZXJzOjpMUENPTEVTVFJUb0NGU3Ry
aW5nUmVmKFdlYktpdEVycm9yUGx1Z0luUGFnZVVSTFN0cmluZ0tleSk7CiAgICAgICAgICAgICBD
RkRpY3Rpb25hcnlTZXRWYWx1ZSh1c2VySW5mby5nZXQoKSwga2V5LCBwbHVnaW5QYWdlVVJMLnN0
cmluZygpLmNyZWF0ZUNGU3RyaW5nKCkuZ2V0KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQuY3BwIGIvU291cmNlL1dl
YktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQuY3BwCmluZGV4IDBl
OWEzOWYuLjhhYWQ4ZTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBw
b3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJD
b3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5jcHAKQEAgLTkxLDcgKzkxLDcgQEAgdm9p
ZCBXZWJHZW9sb2NhdGlvbkNsaWVudDo6cmVxdWVzdFBlcm1pc3Npb24oR2VvbG9jYXRpb24qIGdl
b2xvY2F0aW9uKQogICAgIH0KIAogICAgIEZyYW1lKiBmcmFtZSA9IGdlb2xvY2F0aW9uLT5mcmFt
ZSgpOwotICAgIENPTVB0cjxXZWJTZWN1cml0eU9yaWdpbj4gb3JpZ2luKEFkb3B0Q09NLCBXZWJT
ZWN1cml0eU9yaWdpbjo6Y3JlYXRlSW5zdGFuY2UoZnJhbWUtPmRvY3VtZW50KCktPnNlY3VyaXR5
T3JpZ2luKCkpKTsKKyAgICBDT01QdHI8V2ViU2VjdXJpdHlPcmlnaW4+IG9yaWdpbihBZG9wdENP
TSwgV2ViU2VjdXJpdHlPcmlnaW46OmNyZWF0ZUluc3RhbmNlKGZyYW1lLT5kb2N1bWVudCgpLnNl
Y3VyaXR5T3JpZ2luKCkpKTsKICAgICBDT01QdHI8V2ViR2VvbG9jYXRpb25Qb2xpY3lMaXN0ZW5l
cj4gbGlzdGVuZXIgPSBXZWJHZW9sb2NhdGlvblBvbGljeUxpc3RlbmVyOjpjcmVhdGVJbnN0YW5j
ZShnZW9sb2NhdGlvbik7CiAgICAgSFJFU1VMVCBociA9IHVpRGVsZWdhdGVQcml2YXRlMi0+ZGVj
aWRlUG9saWN5Rm9yR2VvbG9jYXRpb25SZXF1ZXN0KG1fd2ViVmlldy5nZXQoKSwga2l0KGZyYW1l
KSwgb3JpZ2luLmdldCgpLCBsaXN0ZW5lci5nZXQoKSk7CiAgICAgaWYgKGhyICE9IEVfTk9USU1Q
TCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkZyYW1lLmNwcCBiL1NvdXJjZS9X
ZWJLaXQvd2luL1dlYkZyYW1lLmNwcAppbmRleCA4MGM2M2E2Li4zODgzZmIwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJGcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC93aW4v
V2ViRnJhbWUuY3BwCkBAIC00NzYsNyArNDc2LDcgQEAgSFJFU1VMVCBXZWJGcmFtZTo6RE9NV2lu
ZG93KC8qIFtyZXR2YWxdW291dF0gKi8gSURPTVdpbmRvdyoqIHdpbmRvdykKICAgICAqd2luZG93
ID0gMDsKIAogICAgIGlmIChGcmFtZSogY29yZUZyYW1lID0gY29yZSh0aGlzKSkgewotICAgICAg
ICBpZiAoV2ViQ29yZTo6RE9NV2luZG93KiBjb3JlV2luZG93ID0gY29yZUZyYW1lLT5kb2N1bWVu
dCgpLT5kb21XaW5kb3coKSkKKyAgICAgICAgaWYgKFdlYkNvcmU6OkRPTVdpbmRvdyogY29yZVdp
bmRvdyA9IGNvcmVGcmFtZS0+ZG9jdW1lbnQoKS5kb21XaW5kb3coKSkKICAgICAgICAgICAgICp3
aW5kb3cgPSA6OkRPTVdpbmRvdzo6Y3JlYXRlSW5zdGFuY2UoY29yZVdpbmRvdyk7CiAgICAgfQog
CkBAIC03MDcsNyArNzA3LDcgQEAgVVJMIFdlYkZyYW1lOjp1cmwoKSBjb25zdAogICAgIGlmICgh
Y29yZUZyYW1lKQogICAgICAgICByZXR1cm4gVVJMKCk7CiAKLSAgICByZXR1cm4gY29yZUZyYW1l
LT5kb2N1bWVudCgpLT51cmwoKTsKKyAgICByZXR1cm4gY29yZUZyYW1lLT5kb2N1bWVudCgpLnVy
bCgpOwogfQogCiBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYkZyYW1lOjpzdG9wTG9hZGlu
Zyggdm9pZCkKQEAgLTk4Miw3ICs5ODIsNyBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdl
YkZyYW1lOjpwZW5kaW5nRnJhbWVVbmxvYWRFdmVudENvdW50KAogICAgIGlmICghY29yZUZyYW1l
KQogICAgICAgICByZXR1cm4gRV9GQUlMOwogCi0gICAgKnJlc3VsdCA9IGNvcmVGcmFtZS0+ZG9j
dW1lbnQoKS0+ZG9tV2luZG93KCktPnBlbmRpbmdVbmxvYWRFdmVudExpc3RlbmVycygpOworICAg
ICpyZXN1bHQgPSBjb3JlRnJhbWUtPmRvY3VtZW50KCkuZG9tV2luZG93KCktPnBlbmRpbmdVbmxv
YWRFdmVudExpc3RlbmVycygpOwogICAgIHJldHVybiBTX09LOwogfQogCkBAIC0xMjk0LDcgKzEy
OTQsNyBAQCBIUkVTVUxUIFdlYkZyYW1lOjphbGxvd3NGb2xsb3dpbmdMaW5rKEJTVFIgdXJsLCBC
T09MKiByZXN1bHQpCiAgICAgaWYgKCFmcmFtZSkKICAgICAgICAgcmV0dXJuIEVfRkFJTDsKIAot
ICAgICpyZXN1bHQgPSBmcmFtZS0+ZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKS0+Y2FuRGlz
cGxheShNYXJzaGFsbGluZ0hlbHBlcnM6OkJTVFJUb0tVUkwodXJsKSk7CisgICAgKnJlc3VsdCA9
IGZyYW1lLT5kb2N1bWVudCgpLnNlY3VyaXR5T3JpZ2luKCktPmNhbkRpc3BsYXkoTWFyc2hhbGxp
bmdIZWxwZXJzOjpCU1RSVG9LVVJMKHVybCkpOwogICAgIHJldHVybiBTX09LOwogfQogCkBAIC0x
NDg3LDcgKzE0ODcsNyBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYkZyYW1lOjpzZXRJ
blByaW50aW5nTW9kZSgKICAgICAvLyBhY2NvcmRpbmcgdG8gdGhlIHBhcGVyIHNpemUKICAgICBG
bG9hdFNpemUgbWluTGF5b3V0U2l6ZSgwLjAsIDAuMCk7CiAgICAgRmxvYXRTaXplIG9yaWdpbmFs
UGFnZVNpemUoMC4wLCAwLjApOwotICAgIGlmIChtX2luUHJpbnRpbmdNb2RlICYmICFjb3JlRnJh
bWUtPmRvY3VtZW50KCktPmlzRnJhbWVTZXQoKSkgeworICAgIGlmIChtX2luUHJpbnRpbmdNb2Rl
ICYmICFjb3JlRnJhbWUtPmRvY3VtZW50KCkuaXNGcmFtZVNldCgpKSB7CiAgICAgICAgIGlmICgh
cHJpbnREQykgewogICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgICAg
ICByZXR1cm4gRV9QT0lOVEVSOwpAQCAtMTkwMiw3ICsxOTAyLDcgQEAgSFJFU1VMVCBTVERNRVRI
T0RDQUxMVFlQRSBXZWJGcmFtZTo6aXNGcmFtZVNldCgKICAgICBpZiAoIWNvcmVGcmFtZSB8fCAh
Y29yZUZyYW1lLT5kb2N1bWVudCgpKQogICAgICAgICByZXR1cm4gRV9GQUlMOwogCi0gICAgKnJl
c3VsdCA9IGNvcmVGcmFtZS0+ZG9jdW1lbnQoKS0+aXNGcmFtZVNldCgpID8gVFJVRSA6IEZBTFNF
OworICAgICpyZXN1bHQgPSBjb3JlRnJhbWUtPmRvY3VtZW50KCkuaXNGcmFtZVNldCgpID8gVFJV
RSA6IEZBTFNFOwogICAgIHJldHVybiBTX09LOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L3dpbi9XZWJWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYlZpZXcuY3BwCmluZGV4
IDE0ZmE0MjguLjE3MzkxOGRhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC93aW4vV2ViVmll
dy5jcHAKKysrIGIvU291cmNlL1dlYktpdC93aW4vV2ViVmlldy5jcHAKQEAgLTE1ODAsNyArMTU4
MCw3IEBAIGJvb2wgV2ViVmlldzo6Z2VzdHVyZU5vdGlmeShXUEFSQU0gd1BhcmFtLCBMUEFSQU0g
bFBhcmFtKQogICAgICAgICBGcmFtZVZpZXcqIGZyYW1lVmlldyA9IGNoaWxkRnJhbWUtPnZpZXco
KTsKICAgICAgICAgaWYgKCFmcmFtZVZpZXcpCiAgICAgICAgICAgICBicmVhazsKLSAgICAgICAg
UmVuZGVyVmlldyogcmVuZGVyVmlldyA9IGNoaWxkRnJhbWUtPmRvY3VtZW50KCktPnJlbmRlclZp
ZXcoKTsKKyAgICAgICAgUmVuZGVyVmlldyogcmVuZGVyVmlldyA9IGNoaWxkRnJhbWUtPmRvY3Vt
ZW50KCkucmVuZGVyVmlldygpOwogICAgICAgICBpZiAoIXJlbmRlclZpZXcpCiAgICAgICAgICAg
ICBicmVhazsKICAgICAgICAgUmVuZGVyTGF5ZXIqIGxheWVyID0gcmVuZGVyVmlldy0+bGF5ZXIo
KTsKQEAgLTUzNDgsNyArNTM0OCw3IEBAIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUgV2ViVmll
dzo6c2V0SW5pdGlhbEZvY3VzKAogewogICAgIGlmIChtX3BhZ2UpIHsKICAgICAgICAgRnJhbWUm
IGZyYW1lID0gbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUoKTsK
LSAgICAgICAgZnJhbWUuZG9jdW1lbnQoKS0+c2V0Rm9jdXNlZEVsZW1lbnQoMCk7CisgICAgICAg
IGZyYW1lLmRvY3VtZW50KCkuc2V0Rm9jdXNlZEVsZW1lbnQoMCk7CiAgICAgICAgIG1fcGFnZS0+
Zm9jdXNDb250cm9sbGVyKCkuc2V0SW5pdGlhbEZvY3VzKGZvcndhcmQgPyBGb2N1c0RpcmVjdGlv
bkZvcndhcmQgOiBGb2N1c0RpcmVjdGlvbkJhY2t3YXJkLCAwKTsKICAgICB9CiAgICAgcmV0dXJu
IFNfT0s7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2Vi
S2l0Mi9DaGFuZ2VMb2cKaW5kZXggMTRmZDAwYi4uZmQzYWRmMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpAQCAtMSwz
ICsxLDc2IEBACisyMDE0LTA0LTIyICBHeXV5b3VuZyBLaW0gIDxneXV5b3VuZy5raW1Ac2Ftc3Vu
Zy5jb20+CisKKyAgICAgICAgTmVlZCBhIHNob3J0IGRlc2NyaXB0aW9uIChPT1BTISkuCisgICAg
ICAgIE5lZWQgdGhlIGJ1ZyBVUkwgKE9PUFMhKS4KKworICAgICAgICBSZXZpZXdlZCBieSBOT0JP
RFkgKE9PUFMhKS4KKworICAgICAgICAqIFdlYlByb2Nlc3MvR2VvbG9jYXRpb24vR2VvbG9jYXRp
b25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpHZW9sb2Nh
dGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlcjo6c3RhcnRSZXF1ZXN0Rm9yR2VvbG9jYXRpb24p
OgorICAgICAgICAqIFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVGcmFt
ZS5jcHA6CisgICAgICAgIChXS0J1bmRsZUZyYW1lQ29weVNlY3VyaXR5T3JpZ2luKToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9ndGsvV2ViS2l0V2ViUGFnZS5jcHA6
CisgICAgICAgIChkaWRTYW1lRG9jdW1lbnROYXZpZ2F0aW9uRm9yRnJhbWUpOgorICAgICAgICAq
IFdlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0ZWRCdW5kbGUuY3BwOgorICAgICAgICAo
V2ViS2l0OjpJbmplY3RlZEJ1bmRsZTo6cGFnZU51bWJlckZvckVsZW1lbnRCeUlkKToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyOjpzY2hlZHVsZVN1YnJlc291
cmNlTG9hZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZFNjaGVkdWxlcjo6c2No
ZWR1bGVQbHVnaW5TdHJlYW1Mb2FkKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMvUERG
L1BERlBsdWdpbi5tbToKKyAgICAgICAgKFdlYktpdDo6UERGUGx1Z2luOjpQREZQbHVnaW4pOgor
ICAgICAgICAoV2ViS2l0OjpQREZQbHVnaW46OmFkZEFyY2hpdmVSZXNvdXJjZSk6CisgICAgICAg
IChXZWJLaXQ6OlBERlBsdWdpbjo6aXNGdWxsRnJhbWVQbHVnaW4pOgorICAgICAgICAoV2ViS2l0
OjpQREZQbHVnaW46OmNsaWNrZWRMaW5rKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1BsdWdpbnMv
UGx1Z2luVmlldy5jcHA6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6OnN0b3JhZ2VCbG9j
a2luZ1N0YXRlQ2hhbmdlZCk6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6OmZvY3VzUGx1
Z2luRWxlbWVudCk6CisgICAgICAgIChXZWJLaXQ6OlBsdWdpblZpZXc6OmxvYWRVUkwpOgorICAg
ICAgICAoV2ViS2l0OjpQbHVnaW5WaWV3Ojppc1ByaXZhdGVCcm93c2luZ0VuYWJsZWQpOgorICAg
ICAgICAoV2ViS2l0OjpQbHVnaW5WaWV3OjpwbHVnaW5EaWRSZWNlaXZlVXNlckludGVyYWN0aW9u
KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1N0b3JhZ2UvU3RvcmFnZUFyZWFNYXAuY3BwOgorICAg
ICAgICAoV2ViS2l0OjpTdG9yYWdlQXJlYU1hcDo6c2V0SXRlbSk6CisgICAgICAgIChXZWJLaXQ6
OlN0b3JhZ2VBcmVhTWFwOjpyZW1vdmVJdGVtKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZUFy
ZWFNYXA6OmNsZWFyKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNo
cm9tZUNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6OldlYkNocm9tZUNsaWVudDo6Y3JlYXRl
V2luZG93KToKKyAgICAgICAgKFdlYktpdDo6V2ViQ2hyb21lQ2xpZW50OjpleGNlZWRlZERhdGFi
YXNlUXVvdGEpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVM
b2FkZXJDbGllbnQuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUxvYWRlckNsaWVudDo6
ZGlzcGF0Y2hEaWRDaGFuZ2VMb2NhdGlvbldpdGhpblBhZ2UpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRQdXNoU3RhdGVXaXRoaW5QYWdlKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkUmVwbGFjZVN0
YXRlV2l0aGluUGFnZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50Ojpk
aXNwYXRjaERpZFBvcFN0YXRlV2l0aGluUGFnZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1l
TG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZFN0YXJ0UHJvdmlzaW9uYWxMb2FkKToKKyAgICAgICAg
KFdlYktpdDo6V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkTGF5b3V0KToKKyAgICAg
ICAgKFdlYktpdDo6V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoQ3JlYXRlUGFnZSk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50Ojpjb21taXR0ZWRMb2FkKToKKyAg
ICAgICAgKFdlYktpdDo6V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmFsbG93U2NyaXB0KToKKyAgICAg
ICAgKiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L21hYy9XZWJFZGl0b3JDbGllbnRNYWMubW06
CisgICAgICAgIChXZWJLaXQ6OldlYkVkaXRvckNsaWVudDo6ZG9jdW1lbnRGcmFnbWVudEZyb21B
dHRyaWJ1dGVkU3RyaW5nKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvRmluZENvbnRy
b2xsZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpwbHVnaW5WaWV3Rm9yRnJhbWUpOgorICAgICAg
ICAoV2ViS2l0OjpGaW5kQ29udHJvbGxlcjo6Z2V0RmluZEluZGljYXRvckJpdG1hcEFuZFJlY3Qp
OgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHA6CisgICAgICAgIChX
ZWJLaXQ6OldlYkZyYW1lOjppbm5lclRleHQpOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZTo6
cGVuZGluZ1VubG9hZENvdW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWU6OmFsbG93c0Zv
bGxvd2luZ0xpbmspOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZTo6aGFuZGxlc1BhZ2VTY2Fs
ZUdlc3R1cmUpOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViUGFnZTo6Zm9jdXNlZFBsdWdpblZpZXdGb3JGcmFtZSk6CisgICAg
ICAgIChXZWJLaXQ6OldlYlBhZ2U6OnBsdWdpblZpZXdGb3JGcmFtZSk6CisgICAgICAgIChXZWJL
aXQ6OldlYlBhZ2U6OmtleUV2ZW50U3luY0ZvclRlc3RpbmcpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlOjpzZXRJbml0aWFsRm9jdXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpkcmF3
UmVjdFRvSW1hZ2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpkcmF3UGFnZXNUb1BERik6
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnNldENvbXBvc2l0aW9uKToKKyAgICAgICAgKFdl
YktpdDo6V2ViUGFnZTo6ZGlkQ29tbWl0TG9hZCk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6
OmRldGVybWluZVByaW1hcnlTbmFwc2hvdHRlZFBsdWdJbik6CisgICAgICAgICogV2ViUHJvY2Vz
cy9XZWJQYWdlL2F0ay9XZWJQYWdlQWNjZXNzaWJpbGl0eU9iamVjdEF0ay5jcHA6CisgICAgICAg
IChhY2Nlc3NpYmlsaXR5Um9vdE9iamVjdFdyYXBwZXIpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6aGFu
ZGxlVGFwKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6cmVwbGFjZURpY3RhdGVkVGV4dCk6
CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnN5bmNBcHBseUF1dG9jb3JyZWN0aW9uKToKKwog
MjAxNC0wNC0yMSAgU2ltb24gRnJhc2VyICA8c2ltb24uZnJhc2VyQGFwcGxlLmNvbT4KIAogICAg
ICAgICBEb24ndCB0cnkgdG8gdXNlIGEgbnVsbCBjb25uZWN0aW9uKCktPnhwY0Nvbm5lY3Rpb24o
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9HZW9sb2NhdGlvbi9HZW9s
b2NhdGlvblBlcm1pc3Npb25SZXF1ZXN0TWFuYWdlci5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL0dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmNw
cAppbmRleCBlYjkyM2QyLi4wODM3NTA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL0dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0dlb2xvY2F0aW9uL0dlb2xvY2F0aW9u
UGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyLmNwcApAQCAtNjUsNyArNjUsNyBAQCB2b2lkIEdlb2xv
Y2F0aW9uUGVybWlzc2lvblJlcXVlc3RNYW5hZ2VyOjpzdGFydFJlcXVlc3RGb3JHZW9sb2NhdGlv
bihHZW9sb2NhdGlvbgogICAgIFdlYkZyYW1lKiB3ZWJGcmFtZSA9IFdlYkZyYW1lOjpmcm9tQ29y
ZUZyYW1lKCpmcmFtZSk7CiAgICAgQVNTRVJUKHdlYkZyYW1lKTsKIAotICAgIFNlY3VyaXR5T3Jp
Z2luKiBvcmlnaW4gPSBmcmFtZS0+ZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKTsKKyAgICBT
ZWN1cml0eU9yaWdpbiogb3JpZ2luID0gZnJhbWUtPmRvY3VtZW50KCkuc2VjdXJpdHlPcmlnaW4o
KTsKIAogICAgIG1fcGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpSZXF1ZXN0R2Vv
bG9jYXRpb25QZXJtaXNzaW9uRm9yRnJhbWUoZ2VvbG9jYXRpb25JRCwgd2ViRnJhbWUtPmZyYW1l
SUQoKSwgb3JpZ2luLT5kYXRhYmFzZUlkZW50aWZpZXIoKSkpOwogfQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUZyYW1l
LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tC
dW5kbGVGcmFtZS5jcHAKaW5kZXggYTJmOWM4Ny4uMmFiNWRlOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUZyYW1lLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dL
QnVuZGxlRnJhbWUuY3BwCkBAIC0yNjgsNSArMjY4LDUgQEAgV0tTZWN1cml0eU9yaWdpblJlZiBX
S0J1bmRsZUZyYW1lQ29weVNlY3VyaXR5T3JpZ2luKFdLQnVuZGxlRnJhbWVSZWYgZnJhbWVSZWYp
CiAgICAgaWYgKCFjb3JlRnJhbWUpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgcmV0dXJuIHRv
Q29waWVkQVBJKGNvcmVGcmFtZS0+ZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKSk7CisgICAg
cmV0dXJuIHRvQ29waWVkQVBJKGNvcmVGcmFtZS0+ZG9jdW1lbnQoKS5zZWN1cml0eU9yaWdpbigp
KTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5k
bGUvQVBJL2d0ay9XZWJLaXRXZWJQYWdlLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9XZWJLaXRXZWJQYWdlLmNwcAppbmRleCA0NWI3ZTBhLi40
MDNmNmMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0FQSS9ndGsvV2ViS2l0V2ViUGFnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL1dlYktpdFdlYlBhZ2UuY3BwCkBAIC0xMjgsNyAr
MTI4LDcgQEAgc3RhdGljIHZvaWQgZGlkU2FtZURvY3VtZW50TmF2aWdhdGlvbkZvckZyYW1lKFdL
QnVuZGxlUGFnZVJlZiwgV0tCdW5kbGVGcmFtZVJlZgogICAgIGlmICghV0tCdW5kbGVGcmFtZUlz
TWFpbkZyYW1lKGZyYW1lKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgd2Via2l0V2ViUGFnZVNl
dFVSSShXRUJLSVRfV0VCX1BBR0UoY2xpZW50SW5mbyksIHRvSW1wbChmcmFtZSktPmNvcmVGcmFt
ZSgpLT5kb2N1bWVudCgpLT51cmwoKS5zdHJpbmcoKS51dGY4KCkpOworICAgIHdlYmtpdFdlYlBh
Z2VTZXRVUkkoV0VCS0lUX1dFQl9QQUdFKGNsaWVudEluZm8pLCB0b0ltcGwoZnJhbWUpLT5jb3Jl
ZnJhbWUoKS5kb2N1bWVudCgpLnVybCgpLnN0cmluZygpLnV0ZjgoKSk7CiB9CiAKIHN0YXRpYyB2
b2lkIGRpZEZpbmlzaERvY3VtZW50TG9hZEZvckZyYW1lKFdLQnVuZGxlUGFnZVJlZiwgV0tCdW5k
bGVGcmFtZVJlZiBmcmFtZSwgV0tUeXBlUmVmKiwgY29uc3Qgdm9pZCAqY2xpZW50SW5mbykKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvSW5qZWN0
ZWRCdW5kbGUuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9J
bmplY3RlZEJ1bmRsZS5jcHAKaW5kZXggNGI1ODdhNS4uNTRhNzk1MyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAK
KysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1
bmRsZS5jcHAKQEAgLTQzMiw3ICs0MzIsNyBAQCBpbnQgSW5qZWN0ZWRCdW5kbGU6OnBhZ2VOdW1i
ZXJGb3JFbGVtZW50QnlJZChXZWJGcmFtZSogZnJhbWUsIGNvbnN0IFN0cmluZyYgaWQsCiAgICAg
aWYgKCFjb3JlRnJhbWUpCiAgICAgICAgIHJldHVybiAtMTsKIAotICAgIEVsZW1lbnQqIGVsZW1l
bnQgPSBjb3JlRnJhbWUtPmRvY3VtZW50KCktPmdldEVsZW1lbnRCeUlkKGlkKTsKKyAgICBFbGVt
ZW50KiBlbGVtZW50ID0gY29yZUZyYW1lLT5kb2N1bWVudCgpLmdldEVsZW1lbnRCeUlkKGlkKTsK
ICAgICBpZiAoIWVsZW1lbnQpCiAgICAgICAgIHJldHVybiAtMTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZFNjaGVkdWxlci5j
cHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkU2No
ZWR1bGVyLmNwcAppbmRleCA0ZWI3ZWU5Li45MmY4NWRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkU2NoZWR1
bGVyLmNwcApAQCAtNzMsNyArNzMsNyBAQCBQYXNzUmVmUHRyPFN1YnJlc291cmNlTG9hZGVyPiBX
ZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXI6OnNjaGVkdWxlU3VicmVzb3VyY2VMb2FkKAogewogICAg
IFJlZlB0cjxTdWJyZXNvdXJjZUxvYWRlcj4gbG9hZGVyID0gU3VicmVzb3VyY2VMb2FkZXI6OmNy
ZWF0ZShmcmFtZSwgcmVzb3VyY2UsIHJlcXVlc3QsIG9wdGlvbnMpOwogICAgIGlmIChsb2FkZXIp
Ci0gICAgICAgIHNjaGVkdWxlTG9hZChsb2FkZXIuZ2V0KCksIHJlc291cmNlLCBwcmlvcml0eSwg
ZnJhbWUtPmRvY3VtZW50KCktPnJlZmVycmVyUG9saWN5KCkgPT0gUmVmZXJyZXJQb2xpY3lEZWZh
dWx0KTsKKyAgICAgICAgc2NoZWR1bGVMb2FkKGxvYWRlci5nZXQoKSwgcmVzb3VyY2UsIHByaW9y
aXR5LCBmcmFtZS0+ZG9jdW1lbnQoKS5yZWZlcnJlclBvbGljeSgpID09IFJlZmVycmVyUG9saWN5
RGVmYXVsdCk7CiAgICAgcmV0dXJuIGxvYWRlci5yZWxlYXNlKCk7CiB9CiAKQEAgLTgxLDcgKzgx
LDcgQEAgUGFzc1JlZlB0cjxOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlcj4gV2ViUmVzb3VyY2VM
b2FkU2NoZWR1bGVyOjpzY2hlZHVsZVBsdWdpblMKIHsKICAgICBSZWZQdHI8TmV0c2NhcGVQbHVn
SW5TdHJlYW1Mb2FkZXI+IGxvYWRlciA9IE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyOjpjcmVh
dGUoZnJhbWUsIGNsaWVudCwgcmVxdWVzdCk7CiAgICAgaWYgKGxvYWRlcikKLSAgICAgICAgc2No
ZWR1bGVMb2FkKGxvYWRlci5nZXQoKSwgMCwgUmVzb3VyY2VMb2FkUHJpb3JpdHlMb3csIGZyYW1l
LT5kb2N1bWVudCgpLT5yZWZlcnJlclBvbGljeSgpID09IFJlZmVycmVyUG9saWN5RGVmYXVsdCk7
CisgICAgICAgIHNjaGVkdWxlTG9hZChsb2FkZXIuZ2V0KCksIDAsIFJlc291cmNlTG9hZFByaW9y
aXR5TG93LCBmcmFtZS0+ZG9jdW1lbnQoKS5yZWZlcnJlclBvbGljeSgpID09IFJlZmVycmVyUG9s
aWN5RGVmYXVsdCk7CiAgICAgcmV0dXJuIGxvYWRlci5yZWxlYXNlKCk7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tIGIv
U291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0KaW5kZXgg
NWIzNjdhMi4uZjc4NTRiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Q
bHVnaW5zL1BERi9QREZQbHVnaW4ubW0KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9Q
bHVnaW5zL1BERi9QREZQbHVnaW4ubW0KQEAgLTUxMCwxNSArNTEwLDE1IEBAIFBERlBsdWdpbjo6
UERGUGx1Z2luKFdlYkZyYW1lKiBmcmFtZSkKICAgICBtX3BkZkxheWVyQ29udHJvbGxlci5nZXQo
KS5wYXJlbnRMYXllciA9IG1fY29udGVudExheWVyLmdldCgpOwogCiAgICAgaWYgKHN1cHBvcnRz
Rm9ybXMoKSkgewotICAgICAgICBEb2N1bWVudCogZG9jdW1lbnQgPSB3ZWJGcmFtZSgpLT5jb3Jl
RnJhbWUoKS0+ZG9jdW1lbnQoKTsKLSAgICAgICAgbV9hbm5vdGF0aW9uQ29udGFpbmVyID0gZG9j
dW1lbnQtPmNyZWF0ZUVsZW1lbnQoZGl2VGFnLCBmYWxzZSk7CisgICAgICAgIERvY3VtZW50JiBk
b2N1bWVudCA9IHdlYkZyYW1lKCktPmNvcmVGcmFtZSgpLmRvY3VtZW50KCk7CisgICAgICAgIG1f
YW5ub3RhdGlvbkNvbnRhaW5lciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoZGl2VGFnLCBmYWxz
ZSk7CiAgICAgICAgIG1fYW5ub3RhdGlvbkNvbnRhaW5lci0+c2V0QXR0cmlidXRlKGlkQXR0ciwg
ImFubm90YXRpb25Db250YWluZXIiKTsKIAotICAgICAgICBSZWZQdHI8RWxlbWVudD4gbV9hbm5v
dGF0aW9uU3R5bGUgPSBkb2N1bWVudC0+Y3JlYXRlRWxlbWVudChzdHlsZVRhZywgZmFsc2UpOwor
ICAgICAgICBSZWZQdHI8RWxlbWVudD4gbV9hbm5vdGF0aW9uU3R5bGUgPSBkb2N1bWVudC5jcmVh
dGVFbGVtZW50KHN0eWxlVGFnLCBmYWxzZSk7CiAgICAgICAgIG1fYW5ub3RhdGlvblN0eWxlLT5z
ZXRUZXh0Q29udGVudChhbm5vdGF0aW9uU3R5bGUsIEFTU0VSVF9OT19FWENFUFRJT04pOwogCiAg
ICAgICAgIG1fYW5ub3RhdGlvbkNvbnRhaW5lci0+YXBwZW5kQ2hpbGQobV9hbm5vdGF0aW9uU3R5
bGUuZ2V0KCkpOwotICAgICAgICBkb2N1bWVudC0+Ym9keSgpLT5hcHBlbmRDaGlsZChtX2Fubm90
YXRpb25Db250YWluZXIuZ2V0KCkpOworICAgICAgICBkb2N1bWVudC5ib2R5KCktPmFwcGVuZENo
aWxkKG1fYW5ub3RhdGlvbkNvbnRhaW5lci5nZXQoKSk7CiAgICAgfQogCiAgICAgbV9hY2Nlc3Np
YmlsaXR5T2JqZWN0ID0gYWRvcHROUyhbW1dLUERGUGx1Z2luQWNjZXNzaWJpbGl0eU9iamVjdCBh
bGxvY10gaW5pdFdpdGhQREZQbHVnaW46dGhpc10pOwpAQCAtODA0LDcgKzgwNCw3IEBAIHZvaWQg
UERGUGx1Z2luOjphZGRBcmNoaXZlUmVzb3VyY2UoKQogICAgIHN5bnRoZXNpemVkUmVzcG9uc2Uu
c2V0TWltZVR5cGUoImFwcGxpY2F0aW9uL3BkZiIpOwogCiAgICAgUmVmUHRyPEFyY2hpdmVSZXNv
dXJjZT4gcmVzb3VyY2UgPSBBcmNoaXZlUmVzb3VyY2U6OmNyZWF0ZShTaGFyZWRCdWZmZXI6Ondy
YXBDRkRhdGEobV9kYXRhLmdldCgpKSwgbV9zb3VyY2VVUkwsICJhcHBsaWNhdGlvbi9wZGYiLCBT
dHJpbmcoKSwgU3RyaW5nKCksIHN5bnRoZXNpemVkUmVzcG9uc2UpOwotICAgIHBsdWdpblZpZXco
KS0+ZnJhbWUoKS0+ZG9jdW1lbnQoKS0+bG9hZGVyKCktPmFkZEFyY2hpdmVSZXNvdXJjZShyZXNv
dXJjZS5yZWxlYXNlKCkpOworICAgIHBsdWdpblZpZXcoKS0+ZnJhbWUoKS5kb2N1bWVudCgpLmxv
YWRlcigpLT5hZGRBcmNoaXZlUmVzb3VyY2UocmVzb3VyY2UucmVsZWFzZSgpKTsKIH0KIAogc3Rh
dGljIHZvaWQganNQREZEb2NJbml0aWFsaXplKEpTQ29udGV4dFJlZiBjdHgsIEpTT2JqZWN0UmVm
IG9iamVjdCkKQEAgLTE1NDIsNyArMTU0Miw3IEBAIGJvb2wgUERGUGx1Z2luOjppc0Z1bGxGcmFt
ZVBsdWdpbigpCiB7CiAgICAgLy8gPG9iamVjdD4gb3IgPGVtYmVkPiBwbHVnaW5zIHdpbGwgYXBw
ZWFyIHRvIGJlIGluIHRoZWlyIHBhcmVudCBmcmFtZSwgc28gd2UgaGF2ZSB0bwogICAgIC8vIGNo
ZWNrIHdoZXRoZXIgb3VyIGZyYW1lJ3Mgd2lkZ2V0IGlzIGV4YWN0bHkgb3VyIFBsdWdpblZpZXcu
Ci0gICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gd2ViRnJhbWUoKS0+Y29yZUZyYW1lKCktPmRvY3Vt
ZW50KCk7CisgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gd2ViRnJhbWUoKS0+Y29yZUZyYW1lKCku
ZG9jdW1lbnQoKTsKICAgICByZXR1cm4gZG9jdW1lbnQtPmlzUGx1Z2luRG9jdW1lbnQoKSAmJiBz
dGF0aWNfY2FzdDxQbHVnaW5Eb2N1bWVudCo+KGRvY3VtZW50KS0+cGx1Z2luV2lkZ2V0KCkgPT0g
cGx1Z2luVmlldygpOwogfQogCkBAIC0xNTU3LDcgKzE1NTcsNyBAQCB2b2lkIFBERlBsdWdpbjo6
Y2xpY2tlZExpbmsoTlNVUkwgKnVybCkKIAogICAgIFJlZlB0cjxFdmVudD4gY29yZUV2ZW50Owog
ICAgIGlmIChtX2xhc3RNb3VzZUV2ZW50LnR5cGUoKSAhPSBXZWJFdmVudDo6Tm9UeXBlKQotICAg
ICAgICBjb3JlRXZlbnQgPSBNb3VzZUV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmNsaWNrRXZl
bnQsIGZyYW1lLT5kb2N1bWVudCgpLT5kZWZhdWx0VmlldygpLCBwbGF0Zm9ybShtX2xhc3RNb3Vz
ZUV2ZW50KSwgMCwgMCk7CisgICAgICAgIGNvcmVFdmVudCA9IE1vdXNlRXZlbnQ6OmNyZWF0ZShl
dmVudE5hbWVzKCkuY2xpY2tFdmVudCwgZnJhbWUtPmRvY3VtZW50KCkuZGVmYXVsdFZpZXcoKSwg
cGxhdGZvcm0obV9sYXN0TW91c2VFdmVudCksIDAsIDApOwogCiAgICAgZnJhbWUtPmxvYWRlcigp
LnVybFNlbGVjdGVkKHVybCwgZW1wdHlTdHJpbmcoKSwgY29yZUV2ZW50LmdldCgpLCBMb2NrSGlz
dG9yeTo6Tm8sIExvY2tCYWNrRm9yd2FyZExpc3Q6Ok5vLCBNYXliZVNlbmRSZWZlcnJlcik7CiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmll
dy5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1Z2luVmlldy5jcHAK
aW5kZXggYjE3ZTgyNy4uOGYzOTBlZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9QbHVnaW5zL1BsdWdpblZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcApAQCAtNjkxLDcgKzY5MSw3IEBAIHZvaWQgUGx1Z2lu
Vmlldzo6c3RvcmFnZUJsb2NraW5nU3RhdGVDaGFuZ2VkKCkKICAgICBpZiAoIW1faXNJbml0aWFs
aXplZCB8fCAhbV9wbHVnaW4pCiAgICAgICAgIHJldHVybjsKIAotICAgIGJvb2wgc3RvcmFnZUJs
b2NraW5nUG9saWN5ID0gIWZyYW1lKCktPmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCktPmNh
bkFjY2Vzc1BsdWdpblN0b3JhZ2UoZnJhbWUoKS0+ZG9jdW1lbnQoKS0+dG9wT3JpZ2luKCkpOwor
ICAgIGJvb2wgc3RvcmFnZUJsb2NraW5nUG9saWN5ID0gIWZyYW1lKCkuZG9jdW1lbnQoKS5zZWN1
cml0eU9yaWdpbigpLT5jYW5BY2Nlc3NQbHVnaW5TdG9yYWdlKGZyYW1lKCktPmRvY3VtZW50KCku
dG9wT3JpZ2luKCkpOwogCiAgICAgbV9wbHVnaW4tPnN0b3JhZ2VCbG9ja2luZ1N0YXRlQ2hhbmdl
ZChzdG9yYWdlQmxvY2tpbmdQb2xpY3kpOwogfQpAQCAtMTA4Miw3ICsxMDgyLDcgQEAgdm9pZCBQ
bHVnaW5WaWV3Ojpmb2N1c1BsdWdpbkVsZW1lbnQoKQogICAgIGlmIChQYWdlKiBwYWdlID0gZnJh
bWUoKS0+cGFnZSgpKQogICAgICAgICBwYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5zZXRGb2N1c2Vk
RWxlbWVudChtX3BsdWdpbkVsZW1lbnQuZ2V0KCksIGZyYW1lKCkpOwogICAgIGVsc2UKLSAgICAg
ICAgZnJhbWUoKS0+ZG9jdW1lbnQoKS0+c2V0Rm9jdXNlZEVsZW1lbnQobV9wbHVnaW5FbGVtZW50
KTsKKyAgICAgICAgZnJhbWUoKS0+ZG9jdW1lbnQoKS5zZXRGb2N1c2VkRWxlbWVudChtX3BsdWdp
bkVsZW1lbnQpOwogfQogCiB2b2lkIFBsdWdpblZpZXc6OnBlbmRpbmdVUkxSZXF1ZXN0c1RpbWVy
RmlyZWQoKQpAQCAtMTMzMyw3ICsxMzMzLDcgQEAgdm9pZCBQbHVnaW5WaWV3Ojpsb2FkVVJMKHVp
bnQ2NF90IHJlcXVlc3RJRCwgY29uc3QgU3RyaW5nJiBtZXRob2QsIGNvbnN0IFN0cmluZyYKICAg
ICBmcmFtZUxvYWRSZXF1ZXN0LnJlc291cmNlUmVxdWVzdCgpLnNldEhUVFBCb2R5KEZvcm1EYXRh
OjpjcmVhdGUoaHR0cEJvZHkuZGF0YSgpLCBodHRwQm9keS5zaXplKCkpKTsKICAgICBmcmFtZUxv
YWRSZXF1ZXN0LnNldEZyYW1lTmFtZSh0YXJnZXQpOwogCi0gICAgU3RyaW5nIHJlZmVycmVyID0g
U2VjdXJpdHlQb2xpY3k6OmdlbmVyYXRlUmVmZXJyZXJIZWFkZXIoZnJhbWUoKS0+ZG9jdW1lbnQo
KS0+cmVmZXJyZXJQb2xpY3koKSwgZnJhbWVMb2FkUmVxdWVzdC5yZXNvdXJjZVJlcXVlc3QoKS51
cmwoKSwgZnJhbWUoKS0+bG9hZGVyKCkub3V0Z29pbmdSZWZlcnJlcigpKTsKKyAgICBTdHJpbmcg
cmVmZXJyZXIgPSBTZWN1cml0eVBvbGljeTo6Z2VuZXJhdGVSZWZlcnJlckhlYWRlcihmcmFtZSgp
LT5kb2N1bWVudCgpLnJlZmVycmVyUG9saWN5KCksIGZyYW1lTG9hZFJlcXVlc3QucmVzb3VyY2VS
ZXF1ZXN0KCkudXJsKCksIGZyYW1lKCktPmxvYWRlcigpLm91dGdvaW5nUmVmZXJyZXIoKSk7CiAg
ICAgaWYgKCFyZWZlcnJlci5pc0VtcHR5KCkpCiAgICAgICAgIGZyYW1lTG9hZFJlcXVlc3QucmVz
b3VyY2VSZXF1ZXN0KCkuc2V0SFRUUFJlZmVycmVyKHJlZmVycmVyKTsKIApAQCAtMTUzNiw3ICsx
NTM2LDcgQEAgYm9vbCBQbHVnaW5WaWV3Ojppc1ByaXZhdGVCcm93c2luZ0VuYWJsZWQoKQogICAg
IGlmICghZnJhbWUoKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICBpZiAoIWZyYW1lKCkt
PmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCktPmNhbkFjY2Vzc1BsdWdpblN0b3JhZ2UoZnJh
bWUoKS0+ZG9jdW1lbnQoKS0+dG9wT3JpZ2luKCkpKQorICAgIGlmICghZnJhbWUoKS0+ZG9jdW1l
bnQoKS5zZWN1cml0eU9yaWdpbigpLmNhbkFjY2Vzc1BsdWdpblN0b3JhZ2UoZnJhbWUoKS0+ZG9j
dW1lbnQoKS50b3BPcmlnaW4oKSkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgcmV0dXJu
IGZyYW1lKCktPnBhZ2UoKS0+dXNlc0VwaGVtZXJhbFNlc3Npb24oKTsKQEAgLTE3MzIsNyArMTcz
Miw3IEBAIHZvaWQgUGx1Z2luVmlldzo6cGx1Z2luRGlkUmVjZWl2ZVVzZXJJbnRlcmFjdGlvbigp
CiAgICAgbV9kaWRSZWNlaXZlVXNlckludGVyYWN0aW9uID0gdHJ1ZTsKIAogICAgIFdlYkNvcmU6
OkhUTUxQbHVnSW5JbWFnZUVsZW1lbnQqIHBsdWdJbkltYWdlRWxlbWVudCA9IHRvSFRNTFBsdWdJ
bkltYWdlRWxlbWVudChtX3BsdWdpbkVsZW1lbnQuZ2V0KCkpOwotICAgIFN0cmluZyBwYWdlT3Jp
Z2luID0gcGx1Z0luSW1hZ2VFbGVtZW50LT5kb2N1bWVudCgpLnBhZ2UoKS0+bWFpbkZyYW1lKCku
ZG9jdW1lbnQoKS0+YmFzZVVSTCgpLmhvc3QoKTsKKyAgICBTdHJpbmcgcGFnZU9yaWdpbiA9IHBs
dWdJbkltYWdlRWxlbWVudC0+ZG9jdW1lbnQoKS5wYWdlKCktPm1haW5mcmFtZSgpLmRvY3VtZW50
KCkuYmFzZVVSTCgpLmhvc3QoKTsKICAgICBTdHJpbmcgcGx1Z2luT3JpZ2luID0gcGx1Z0luSW1h
Z2VFbGVtZW50LT5sb2FkZWRVcmwoKS5ob3N0KCk7CiAgICAgU3RyaW5nIG1pbWVUeXBlID0gcGx1
Z0luSW1hZ2VFbGVtZW50LT5sb2FkZWRNaW1lVHlwZSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1N0b3JhZ2UvU3RvcmFnZUFyZWFNYXAuY3BwIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9TdG9yYWdlL1N0b3JhZ2VBcmVhTWFwLmNwcAppbmRleCBhZTRjZTZl
Li5lMWE1MzM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1N0b3JhZ2Uv
U3RvcmFnZUFyZWFNYXAuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvU3RvcmFn
ZS9TdG9yYWdlQXJlYU1hcC5jcHAKQEAgLTExOSw3ICsxMTksNyBAQCB2b2lkIFN0b3JhZ2VBcmVh
TWFwOjpzZXRJdGVtKEZyYW1lKiBzb3VyY2VGcmFtZSwgU3RvcmFnZUFyZWFJbXBsKiBzb3VyY2VB
cmVhLCBjbwogCiAgICAgbV9wZW5kaW5nVmFsdWVDaGFuZ2VzLmFkZChrZXkpOwogCi0gICAgV2Vi
UHJvY2Vzczo6c2hhcmVkKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdl
czo6U3RvcmFnZU1hbmFnZXI6OlNldEl0ZW0obV9zdG9yYWdlTWFwSUQsIHNvdXJjZUFyZWEtPnN0
b3JhZ2VBcmVhSUQoKSwgbV9jdXJyZW50U2VlZCwga2V5LCB2YWx1ZSwgc291cmNlRnJhbWUtPmRv
Y3VtZW50KCktPnVybCgpKSwgMCk7CisgICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkucGFyZW50UHJv
Y2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6U3RvcmFnZU1hbmFnZXI6OlNldEl0ZW0o
bV9zdG9yYWdlTWFwSUQsIHNvdXJjZUFyZWEtPnN0b3JhZ2VBcmVhSUQoKSwgbV9jdXJyZW50U2Vl
ZCwga2V5LCB2YWx1ZSwgc291cmNlRnJhbWUtPmRvY3VtZW50KCkudXJsKCkpLCAwKTsKIH0KIAog
dm9pZCBTdG9yYWdlQXJlYU1hcDo6cmVtb3ZlSXRlbShXZWJDb3JlOjpGcmFtZSogc291cmNlRnJh
bWUsIFN0b3JhZ2VBcmVhSW1wbCogc291cmNlQXJlYSwgY29uc3QgU3RyaW5nJiBrZXkpCkBAIC0x
MzUsNyArMTM1LDcgQEAgdm9pZCBTdG9yYWdlQXJlYU1hcDo6cmVtb3ZlSXRlbShXZWJDb3JlOjpG
cmFtZSogc291cmNlRnJhbWUsIFN0b3JhZ2VBcmVhSW1wbCogc28KIAogICAgIG1fcGVuZGluZ1Zh
bHVlQ2hhbmdlcy5hZGQoa2V5KTsKIAotICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLnBhcmVudFBy
b2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OlN0b3JhZ2VNYW5hZ2VyOjpSZW1vdmVJ
dGVtKG1fc3RvcmFnZU1hcElELCBzb3VyY2VBcmVhLT5zdG9yYWdlQXJlYUlEKCksIG1fY3VycmVu
dFNlZWQsIGtleSwgc291cmNlRnJhbWUtPmRvY3VtZW50KCktPnVybCgpKSwgMCk7CisgICAgV2Vi
UHJvY2Vzczo6c2hhcmVkKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdl
czo6U3RvcmFnZU1hbmFnZXI6OlJlbW92ZUl0ZW0obV9zdG9yYWdlTWFwSUQsIHNvdXJjZUFyZWEt
PnN0b3JhZ2VBcmVhSUQoKSwgbV9jdXJyZW50U2VlZCwga2V5LCBzb3VyY2VGcmFtZS0+ZG9jdW1l
bnQoKS51cmwoKSksIDApOwogfQogCiB2b2lkIFN0b3JhZ2VBcmVhTWFwOjpjbGVhcihXZWJDb3Jl
OjpGcmFtZSogc291cmNlRnJhbWUsIFN0b3JhZ2VBcmVhSW1wbCogc291cmNlQXJlYSkKQEAgLTE0
NCw3ICsxNDQsNyBAQCB2b2lkIFN0b3JhZ2VBcmVhTWFwOjpjbGVhcihXZWJDb3JlOjpGcmFtZSog
c291cmNlRnJhbWUsIFN0b3JhZ2VBcmVhSW1wbCogc291cmNlQQogCiAgICAgbV9oYXNQZW5kaW5n
Q2xlYXIgPSB0cnVlOwogICAgIG1fc3RvcmFnZU1hcCA9IFN0b3JhZ2VNYXA6OmNyZWF0ZShtX3F1
b3RhSW5CeXRlcyk7Ci0gICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkucGFyZW50UHJvY2Vzc0Nvbm5l
Y3Rpb24oKS0+c2VuZChNZXNzYWdlczo6U3RvcmFnZU1hbmFnZXI6OkNsZWFyKG1fc3RvcmFnZU1h
cElELCBzb3VyY2VBcmVhLT5zdG9yYWdlQXJlYUlEKCksIG1fY3VycmVudFNlZWQsIHNvdXJjZUZy
YW1lLT5kb2N1bWVudCgpLT51cmwoKSksIDApOworICAgIFdlYlByb2Nlc3M6OnNoYXJlZCgpLnBh
cmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OlN0b3JhZ2VNYW5hZ2VyOjpD
bGVhcihtX3N0b3JhZ2VNYXBJRCwgc291cmNlQXJlYS0+c3RvcmFnZUFyZWFJRCgpLCBtX2N1cnJl
bnRTZWVkLCBzb3VyY2VGcmFtZS0+ZG9jdW1lbnQoKS51cmwoKSksIDApOwogfQogCiBib29sIFN0
b3JhZ2VBcmVhTWFwOjpjb250YWlucyhjb25zdCBTdHJpbmcmIGtleSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNw
cCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xp
ZW50LmNwcAppbmRleCBlNzJiZmIyLi4xYTMwZWIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5jcHAKKysrIGIvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3Bw
CkBAIC0yMDAsOCArMjAwLDggQEAgdm9pZCBXZWJDaHJvbWVDbGllbnQ6OmZvY3VzZWRGcmFtZUNo
YW5nZWQoRnJhbWUqIGZyYW1lKQogUGFnZSogV2ViQ2hyb21lQ2xpZW50OjpjcmVhdGVXaW5kb3co
RnJhbWUqIGZyYW1lLCBjb25zdCBGcmFtZUxvYWRSZXF1ZXN0JiByZXF1ZXN0LCBjb25zdCBXaW5k
b3dGZWF0dXJlcyYgd2luZG93RmVhdHVyZXMsIGNvbnN0IE5hdmlnYXRpb25BY3Rpb24mIG5hdmln
YXRpb25BY3Rpb24pCiB7CiAjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQotICAgIGlmIChmcmFt
ZS0+ZG9jdW1lbnQoKSAmJiBmcmFtZS0+ZG9jdW1lbnQoKS0+d2Via2l0Q3VycmVudEZ1bGxTY3Jl
ZW5FbGVtZW50KCkpCi0gICAgICAgIGZyYW1lLT5kb2N1bWVudCgpLT53ZWJraXRDYW5jZWxGdWxs
U2NyZWVuKCk7CisgICAgaWYgKGZyYW1lLT5kb2N1bWVudCgpICYmIGZyYW1lLT5kb2N1bWVudCgp
LndlYmtpdEN1cnJlbnRGdWxsU2NyZWVuRWxlbWVudCgpKQorICAgICAgICBmcmFtZS0+ZG9jdW1l
bnQoKS53ZWJraXRDYW5jZWxGdWxsU2NyZWVuKCk7CiAjZW5kaWYKIAogICAgIFdlYkZyYW1lKiB3
ZWJGcmFtZSA9IFdlYkZyYW1lOjpmcm9tQ29yZUZyYW1lKCpmcmFtZSk7CkBAIC02MTcsNyArNjE3
LDcgQEAgdm9pZCBXZWJDaHJvbWVDbGllbnQ6OmV4Y2VlZGVkRGF0YWJhc2VRdW90YShGcmFtZSog
ZnJhbWUsIGNvbnN0IFN0cmluZyYgZGF0YWJhc2UKICAgICBXZWJGcmFtZSogd2ViRnJhbWUgPSBX
ZWJGcmFtZTo6ZnJvbUNvcmVGcmFtZSgqZnJhbWUpOwogICAgIEFTU0VSVCh3ZWJGcmFtZSk7CiAg
ICAgCi0gICAgU2VjdXJpdHlPcmlnaW4qIG9yaWdpbiA9IGZyYW1lLT5kb2N1bWVudCgpLT5zZWN1
cml0eU9yaWdpbigpOworICAgIFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4gPSBmcmFtZS0+ZG9jdW1l
bnQoKS5zZWN1cml0eU9yaWdpbigpOwogCiAgICAgRGF0YWJhc2VNYW5hZ2VyJiBkYk1hbmFnZXIg
PSBEYXRhYmFzZU1hbmFnZXI6Om1hbmFnZXIoKTsKICAgICB1aW50NjRfdCBjdXJyZW50UXVvdGEg
PSBkYk1hbmFnZXIucXVvdGFGb3JPcmlnaW4ob3JpZ2luKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3Bw
IGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRl
ckNsaWVudC5jcHAKaW5kZXggYjAzZmIyOC4uMWQ1MmE2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAK
KysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxv
YWRlckNsaWVudC5jcHAKQEAgLTMyNSw3ICszMjUsNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xp
ZW50OjpkaXNwYXRjaERpZENoYW5nZUxvY2F0aW9uV2l0aGluUGFnZSgpCiAgICAgd2ViUGFnZS0+
aW5qZWN0ZWRCdW5kbGVMb2FkZXJDbGllbnQoKS5kaWRTYW1lRG9jdW1lbnROYXZpZ2F0aW9uRm9y
RnJhbWUod2ViUGFnZSwgbV9mcmFtZSwgU2FtZURvY3VtZW50TmF2aWdhdGlvbkFuY2hvck5hdmln
YXRpb24sIHVzZXJEYXRhKTsKIAogICAgIC8vIE5vdGlmeSB0aGUgVUlQcm9jZXNzLgotICAgIHdl
YlBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkU2FtZURvY3VtZW50TmF2aWdh
dGlvbkZvckZyYW1lKG1fZnJhbWUtPmZyYW1lSUQoKSwgU2FtZURvY3VtZW50TmF2aWdhdGlvbkFu
Y2hvck5hdmlnYXRpb24sIG1fZnJhbWUtPmNvcmVGcmFtZSgpLT5kb2N1bWVudCgpLT51cmwoKS5z
dHJpbmcoKSwgSW5qZWN0ZWRCdW5kbGVVc2VyTWVzc2FnZUVuY29kZXIodXNlckRhdGEuZ2V0KCkp
KSk7CisgICAgd2ViUGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRTYW1lRG9j
dW1lbnROYXZpZ2F0aW9uRm9yRnJhbWUobV9mcmFtZS0+ZnJhbWVJRCgpLCBTYW1lRG9jdW1lbnRO
YXZpZ2F0aW9uQW5jaG9yTmF2aWdhdGlvbiwgbV9mcmFtZS0+Y29yZUZyYW1lKCktPmRvY3VtZW50
KCkudXJsKCkuc3RyaW5nKCksIEluamVjdGVkQnVuZGxlVXNlck1lc3NhZ2VFbmNvZGVyKHVzZXJE
YXRhLmdldCgpKSkpOwogfQogCiB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERp
ZFB1c2hTdGF0ZVdpdGhpblBhZ2UoKQpAQCAtMzQwLDcgKzM0MCw3IEBAIHZvaWQgV2ViRnJhbWVM
b2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkUHVzaFN0YXRlV2l0aGluUGFnZSgpCiAgICAgd2ViUGFn
ZS0+aW5qZWN0ZWRCdW5kbGVMb2FkZXJDbGllbnQoKS5kaWRTYW1lRG9jdW1lbnROYXZpZ2F0aW9u
Rm9yRnJhbWUod2ViUGFnZSwgbV9mcmFtZSwgU2FtZURvY3VtZW50TmF2aWdhdGlvblNlc3Npb25T
dGF0ZVB1c2gsIHVzZXJEYXRhKTsKIAogICAgIC8vIE5vdGlmeSB0aGUgVUlQcm9jZXNzLgotICAg
IHdlYlBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkU2FtZURvY3VtZW50TmF2
aWdhdGlvbkZvckZyYW1lKG1fZnJhbWUtPmZyYW1lSUQoKSwgU2FtZURvY3VtZW50TmF2aWdhdGlv
blNlc3Npb25TdGF0ZVB1c2gsIG1fZnJhbWUtPmNvcmVGcmFtZSgpLT5kb2N1bWVudCgpLT51cmwo
KS5zdHJpbmcoKSwgSW5qZWN0ZWRCdW5kbGVVc2VyTWVzc2FnZUVuY29kZXIodXNlckRhdGEuZ2V0
KCkpKSk7CisgICAgd2ViUGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFnZVByb3h5OjpEaWRTYW1l
RG9jdW1lbnROYXZpZ2F0aW9uRm9yRnJhbWUobV9mcmFtZS0+ZnJhbWVJRCgpLCBTYW1lRG9jdW1l
bnROYXZpZ2F0aW9uU2Vzc2lvblN0YXRlUHVzaCwgbV9mcmFtZS0+Y29yZUZyYW1lKCktPmRvY3Vt
ZW50KCkudXJsKCkuc3RyaW5nKCksIEluamVjdGVkQnVuZGxlVXNlck1lc3NhZ2VFbmNvZGVyKHVz
ZXJEYXRhLmdldCgpKSkpOwogfQogCiB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRj
aERpZFJlcGxhY2VTdGF0ZVdpdGhpblBhZ2UoKQpAQCAtMzU1LDcgKzM1NSw3IEBAIHZvaWQgV2Vi
RnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkUmVwbGFjZVN0YXRlV2l0aGluUGFnZSgpCiAg
ICAgd2ViUGFnZS0+aW5qZWN0ZWRCdW5kbGVMb2FkZXJDbGllbnQoKS5kaWRTYW1lRG9jdW1lbnRO
YXZpZ2F0aW9uRm9yRnJhbWUod2ViUGFnZSwgbV9mcmFtZSwgU2FtZURvY3VtZW50TmF2aWdhdGlv
blNlc3Npb25TdGF0ZVJlcGxhY2UsIHVzZXJEYXRhKTsKIAogICAgIC8vIE5vdGlmeSB0aGUgVUlQ
cm9jZXNzLgotICAgIHdlYlBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGlkU2Ft
ZURvY3VtZW50TmF2aWdhdGlvbkZvckZyYW1lKG1fZnJhbWUtPmZyYW1lSUQoKSwgU2FtZURvY3Vt
ZW50TmF2aWdhdGlvblNlc3Npb25TdGF0ZVJlcGxhY2UsIG1fZnJhbWUtPmNvcmVGcmFtZSgpLT5k
b2N1bWVudCgpLT51cmwoKS5zdHJpbmcoKSwgSW5qZWN0ZWRCdW5kbGVVc2VyTWVzc2FnZUVuY29k
ZXIodXNlckRhdGEuZ2V0KCkpKSk7CisgICAgd2ViUGFnZS0+c2VuZChNZXNzYWdlczo6V2ViUGFn
ZVByb3h5OjpEaWRTYW1lRG9jdW1lbnROYXZpZ2F0aW9uRm9yRnJhbWUobV9mcmFtZS0+ZnJhbWVJ
RCgpLCBTYW1lRG9jdW1lbnROYXZpZ2F0aW9uU2Vzc2lvblN0YXRlUmVwbGFjZSwgbV9mcmFtZS0+
Y29yZUZyYW1lKCktPmRvY3VtZW50KCkudXJsKCkuc3RyaW5nKCksIEluamVjdGVkQnVuZGxlVXNl
ck1lc3NhZ2VFbmNvZGVyKHVzZXJEYXRhLmdldCgpKSkpOwogfQogCiB2b2lkIFdlYkZyYW1lTG9h
ZGVyQ2xpZW50OjpkaXNwYXRjaERpZFBvcFN0YXRlV2l0aGluUGFnZSgpCkBAIC0zNzAsNyArMzcw
LDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRQb3BTdGF0ZVdpdGhp
blBhZ2UoKQogICAgIHdlYlBhZ2UtPmluamVjdGVkQnVuZGxlTG9hZGVyQ2xpZW50KCkuZGlkU2Ft
ZURvY3VtZW50TmF2aWdhdGlvbkZvckZyYW1lKHdlYlBhZ2UsIG1fZnJhbWUsIFNhbWVEb2N1bWVu
dE5hdmlnYXRpb25TZXNzaW9uU3RhdGVQb3AsIHVzZXJEYXRhKTsKIAogICAgIC8vIE5vdGlmeSB0
aGUgVUlQcm9jZXNzLgotICAgIHdlYlBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6
RGlkU2FtZURvY3VtZW50TmF2aWdhdGlvbkZvckZyYW1lKG1fZnJhbWUtPmZyYW1lSUQoKSwgU2Ft
ZURvY3VtZW50TmF2aWdhdGlvblNlc3Npb25TdGF0ZVBvcCwgbV9mcmFtZS0+Y29yZUZyYW1lKCkt
PmRvY3VtZW50KCktPnVybCgpLnN0cmluZygpLCBJbmplY3RlZEJ1bmRsZVVzZXJNZXNzYWdlRW5j
b2Rlcih1c2VyRGF0YS5nZXQoKSkpKTsKKyAgICB3ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlUHJveHk6OkRpZFNhbWVEb2N1bWVudE5hdmlnYXRpb25Gb3JGcmFtZShtX2ZyYW1lLT5mcmFt
ZUlEKCksIFNhbWVEb2N1bWVudE5hdmlnYXRpb25TZXNzaW9uU3RhdGVQb3AsIG1fZnJhbWUtPmNv
cmVGcmFtZSgpLT5kb2N1bWVudCgpLnVybCgpLnN0cmluZygpLCBJbmplY3RlZEJ1bmRsZVVzZXJN
ZXNzYWdlRW5jb2Rlcih1c2VyRGF0YS5nZXQoKSkpKTsKIH0KIAogdm9pZCBXZWJGcmFtZUxvYWRl
ckNsaWVudDo6ZGlzcGF0Y2hXaWxsQ2xvc2UoKQpAQCAtMzkwLDcgKzM5MCw3IEBAIHZvaWQgV2Vi
RnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkU3RhcnRQcm92aXNpb25hbExvYWQoKQogICAg
ICAgICByZXR1cm47CiAKICNpZiBFTkFCTEUoRlVMTFNDUkVFTl9BUEkpCi0gICAgRWxlbWVudCog
ZG9jdW1lbnRFbGVtZW50ID0gbV9mcmFtZS0+Y29yZUZyYW1lKCktPmRvY3VtZW50KCktPmRvY3Vt
ZW50RWxlbWVudCgpOworICAgIEVsZW1lbnQqIGRvY3VtZW50RWxlbWVudCA9IG1fZnJhbWUtPmNv
cmVGcmFtZSgpLT5kb2N1bWVudCgpLmRvY3VtZW50RWxlbWVudCgpOwogICAgIGlmIChkb2N1bWVu
dEVsZW1lbnQgJiYgZG9jdW1lbnRFbGVtZW50LT5jb250YWluc0Z1bGxTY3JlZW5FbGVtZW50KCkp
CiAgICAgICAgIHdlYlBhZ2UtPmZ1bGxTY3JlZW5NYW5hZ2VyKCktPmV4aXRGdWxsU2NyZWVuRm9y
RWxlbWVudCh3ZWJQYWdlLT5mdWxsU2NyZWVuTWFuYWdlcigpLT5lbGVtZW50KCkpOwogI2VuZGlm
CkBAIC01NzAsNyArNTcwLDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hE
aWRMYXlvdXQoTGF5b3V0TWlsZXN0b25lcyBtaWxlc3RvbmVzKQogICAgIAogI2lmIFVTRShUSUxF
RF9CQUNLSU5HX1NUT1JFKQogICAgICAgICAvLyBNYWtlIHN1cmUgdmlld3BvcnQgcHJvcGVydGll
cyBhcmUgZGlzcGF0Y2hlZCBvbiB0aGUgbWFpbiBmcmFtZSBieSB0aGUgdGltZSB0aGUgZmlyc3Qg
bGF5b3V0IGhhcHBlbnMuCi0gICAgICAgIEFTU0VSVCghd2ViUGFnZS0+dXNlRml4ZWRMYXlvdXQo
KSB8fCBtX2ZyYW1lICE9IG1fZnJhbWUtPnBhZ2UoKS0+bWFpbldlYkZyYW1lKCkgfHwgbV9mcmFt
ZS0+Y29yZUZyYW1lKCktPmRvY3VtZW50KCktPmRpZERpc3BhdGNoVmlld3BvcnRQcm9wZXJ0aWVz
Q2hhbmdlZCgpKTsKKyAgICAgICAgQVNTRVJUKCF3ZWJQYWdlLT51c2VGaXhlZExheW91dCgpIHx8
IG1fZnJhbWUgIT0gbV9mcmFtZS0+cGFnZSgpLT5tYWluV2ViRnJhbWUoKSB8fCBtX2ZyYW1lLT5j
b3JlRnJhbWUoKS0+ZG9jdW1lbnQoKS5kaWREaXNwYXRjaFZpZXdwb3J0UHJvcGVydGllc0NoYW5n
ZWQoKSk7CiAjZW5kaWYKICAgICB9CiAKQEAgLTYxNCw3ICs2MTQsNyBAQCBGcmFtZSogV2ViRnJh
bWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoQ3JlYXRlUGFnZShjb25zdCBOYXZpZ2F0aW9uQWN0aW9u
JiBuYXZpZ2F0aQogICAgICAgICByZXR1cm4gMDsKIAogICAgIC8vIEp1c3QgY2FsbCB0aHJvdWdo
IHRvIHRoZSBjaHJvbWUgY2xpZW50LgotICAgIFBhZ2UqIG5ld1BhZ2UgPSB3ZWJQYWdlLT5jb3Jl
UGFnZSgpLT5jaHJvbWUoKS5jcmVhdGVXaW5kb3cobV9mcmFtZS0+Y29yZUZyYW1lKCksIEZyYW1l
TG9hZFJlcXVlc3QobV9mcmFtZS0+Y29yZUZyYW1lKCktPmRvY3VtZW50KCktPnNlY3VyaXR5T3Jp
Z2luKCksIG5hdmlnYXRpb25BY3Rpb24ucmVzb3VyY2VSZXF1ZXN0KCkpLCBXaW5kb3dGZWF0dXJl
cygpLCBuYXZpZ2F0aW9uQWN0aW9uKTsKKyAgICBQYWdlKiBuZXdQYWdlID0gd2ViUGFnZS0+Y29y
ZVBhZ2UoKS0+Y2hyb21lKCkuY3JlYXRlV2luZG93KG1fZnJhbWUtPmNvcmVGcmFtZSgpLCBGcmFt
ZUxvYWRSZXF1ZXN0KG1fZnJhbWUtPmNvcmVGcmFtZSgpLT5kb2N1bWVudCgpLnNlY3VyaXR5T3Jp
Z2luKCksIG5hdmlnYXRpb25BY3Rpb24ucmVzb3VyY2VSZXF1ZXN0KCkpLCBXaW5kb3dGZWF0dXJl
cygpLCBuYXZpZ2F0aW9uQWN0aW9uKTsKICAgICBpZiAoIW5ld1BhZ2UpCiAgICAgICAgIHJldHVy
biAwOwogICAgIApAQCAtODYzLDcgKzg2Myw3IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6
OmNvbW1pdHRlZExvYWQoRG9jdW1lbnRMb2FkZXIqIGxvYWRlciwgY29uc3QgY2hhciogZGF0CiAK
ICAgICAvLyBJZiB0aGUgZG9jdW1lbnQgaXMgYSBzdGFuZC1hbG9uZSBtZWRpYSBkb2N1bWVudCwg
bm93IGlzIHRoZSByaWdodCB0aW1lIHRvIGNhbmNlbCB0aGUgV2ViS2l0IGxvYWQuCiAgICAgLy8g
RklYTUU6IFRoaXMgY29kZSBzaG91bGQgYmUgc2hhcmVkIGFjcm9zcyBhbGwgcG9ydHMuIDxodHRw
Oi8vd2Via2l0Lm9yZy9iLzQ4NzYyPi4KLSAgICBpZiAobV9mcmFtZS0+Y29yZUZyYW1lKCktPmRv
Y3VtZW50KCktPmlzTWVkaWFEb2N1bWVudCgpKQorICAgIGlmIChtX2ZyYW1lLT5jb3JlRnJhbWUo
KS0+ZG9jdW1lbnQoKS5pc01lZGlhRG9jdW1lbnQoKSkKICAgICAgICAgbG9hZGVyLT5jYW5jZWxN
YWluUmVzb3VyY2VMb2FkKHBsdWdpbldpbGxIYW5kbGVMb2FkRXJyb3IobG9hZGVyLT5yZXNwb25z
ZSgpKSk7CiAKICAgICAvLyBDYWxsaW5nIGNvbW1pdERhdGEgZGlkIG5vdCBjcmVhdGUgdGhlIHBs
dWctaW4gdmlldy4KQEAgLTE1OTIsNyArMTU5Miw3IEBAIGJvb2wgV2ViRnJhbWVMb2FkZXJDbGll
bnQ6OmFsbG93U2NyaXB0KGJvb2wgZW5hYmxlZFBlclNldHRpbmdzKQogCiAgICAgRnJhbWUqIGNv
cmVGcmFtZSA9IG1fZnJhbWUtPmNvcmVGcmFtZSgpOwogCi0gICAgaWYgKGNvcmVGcmFtZS0+ZG9j
dW1lbnQoKS0+aXNQbHVnaW5Eb2N1bWVudCgpKSB7CisgICAgaWYgKGNvcmVGcmFtZS0+ZG9jdW1l
bnQoKS5pc1BsdWdpbkRvY3VtZW50KCkpIHsKICAgICAgICAgUGx1Z2luRG9jdW1lbnQqIHBsdWdp
bkRvY3VtZW50ID0gc3RhdGljX2Nhc3Q8UGx1Z2luRG9jdW1lbnQqPihjb3JlRnJhbWUtPmRvY3Vt
ZW50KCkpOwogCiAgICAgICAgIGlmIChwbHVnaW5Eb2N1bWVudC0+cGx1Z2luV2lkZ2V0KCkgJiYg
cGx1Z2luRG9jdW1lbnQtPnBsdWdpbldpZGdldCgpLT5pc1BsdWdpblZpZXcoKSkgewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRWRp
dG9yQ2xpZW50TWFjLm1tIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9tYWMvV2ViRWRpdG9yQ2xpZW50TWFjLm1tCmluZGV4IGYzNmRkYmMuLjc5Y2VlZTAgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvbWFjL1dlYkVk
aXRvckNsaWVudE1hYy5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVT
dXBwb3J0L21hYy9XZWJFZGl0b3JDbGllbnRNYWMubW0KQEAgLTExNCwxMSArMTE0LDExIEBAIERv
Y3VtZW50RnJhZ21lbnQqIFdlYkVkaXRvckNsaWVudDo6ZG9jdW1lbnRGcmFnbWVudEZyb21BdHRy
aWJ1dGVkU3RyaW5nKE5TQXR0cmliCiAgICAgTlNEaWN0aW9uYXJ5ICpkaWN0aW9uYXJ5ID0gW05T
RGljdGlvbmFyeSBkaWN0aW9uYXJ5V2l0aE9iamVjdDpleGNsdWRlZEVsZW1lbnRzIGZvcktleTpO
U0V4Y2x1ZGVkRWxlbWVudHNEb2N1bWVudEF0dHJpYnV0ZV07CiAgICAgCiAgICAgTlNBcnJheSAq
c3ViUmVzb3VyY2VzOwotICAgIERvY3VtZW50KiBkb2N1bWVudCA9IG1fcGFnZS0+bWFpbkZyYW1l
KCktPmRvY3VtZW50KCk7CisgICAgRG9jdW1lbnQmIGRvY3VtZW50ID0gbV9wYWdlLT5tYWluRnJh
bWUoKS5kb2N1bWVudCgpOwogCiAgICAgLy8gRklYTUU6IElzbnRlYWQgb2YgY2FsbGluZyB0aGlz
IFdlYktpdDEgbWV0aG9kLCB0aGUgY29kZSBzaG91bGQgYmUgZmFjdG9yZWQgb3V0IGFuZCBtb3Zl
ZCBpbnRvIFdlYkNvcmUuCiAgICAgRE9NRG9jdW1lbnRGcmFnbWVudCogZnJhZ21lbnQgPSBbc3Ry
aW5nIF9kb2N1bWVudEZyb21SYW5nZTpOU01ha2VSYW5nZSgwLCBbc3RyaW5nIGxlbmd0aF0pCi0g
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1
bWVudDpraXQoZG9jdW1lbnQpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBkb2N1bWVudDpraXQoJmRvY3VtZW50KQogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudEF0dHJpYnV0ZXM6ZGljdGlvbmFy
eQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdWJy
ZXNvdXJjZXM6JnN1YlJlc291cmNlc107CiAgICAgZm9yIChpZCByZXNvdXJjZSBpbiBzdWJSZXNv
dXJjZXMpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRmlu
ZENvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0ZpbmRD
b250cm9sbGVyLmNwcAppbmRleCA0Njg4ZmVkLi44ZTE1OTE3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRmluZENvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9GaW5kQ29udHJvbGxlci5jcHAKQEAgLTY5LDcg
KzY5LDcgQEAgRmluZENvbnRyb2xsZXI6On5GaW5kQ29udHJvbGxlcigpCiAKIHN0YXRpYyBQbHVn
aW5WaWV3KiBwbHVnaW5WaWV3Rm9yRnJhbWUoRnJhbWUqIGZyYW1lKQogewotICAgIGlmICghZnJh
bWUtPmRvY3VtZW50KCktPmlzUGx1Z2luRG9jdW1lbnQoKSkKKyAgICBpZiAoIWZyYW1lLT5kb2N1
bWVudCgpLmlzUGx1Z2luRG9jdW1lbnQoKSkKICAgICAgICAgcmV0dXJuIDA7CiAKICAgICBQbHVn
aW5Eb2N1bWVudCogcGx1Z2luRG9jdW1lbnQgPSBzdGF0aWNfY2FzdDxQbHVnaW5Eb2N1bWVudCo+
KGZyYW1lLT5kb2N1bWVudCgpKTsKQEAgLTI3NSw3ICsyNzUsNyBAQCBib29sIEZpbmRDb250cm9s
bGVyOjpnZXRGaW5kSW5kaWNhdG9yQml0bWFwQW5kUmVjdChGcmFtZSYgZnJhbWUsIFNoYXJlYWJs
ZUJpdG1hcAogCiAgICAgZ3JhcGhpY3NDb250ZXh0LT50cmFuc2xhdGUoLXBhaW50UmVjdC54KCks
IC1wYWludFJlY3QueSgpKTsKICAgICBmcmFtZS52aWV3KCktPnNldFBhaW50QmVoYXZpb3IoUGFp
bnRCZWhhdmlvclNlbGVjdGlvbk9ubHkgfCBQYWludEJlaGF2aW9yRm9yY2VCbGFja1RleHQgfCBQ
YWludEJlaGF2aW9yRmxhdHRlbkNvbXBvc2l0aW5nTGF5ZXJzKTsKLSAgICBmcmFtZS5kb2N1bWVu
dCgpLT51cGRhdGVMYXlvdXQoKTsKKyAgICBmcmFtZS5kb2N1bWVudCgpLnVwZGF0ZUxheW91dCgp
OwogCiAgICAgZnJhbWUudmlldygpLT5wYWludChncmFwaGljc0NvbnRleHQuZ2V0KCksIHBhaW50
UmVjdCk7CiAgICAgZnJhbWUudmlldygpLT5zZXRQYWludEJlaGF2aW9yKFBhaW50QmVoYXZpb3JO
b3JtYWwpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YkZyYW1lLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5j
cHAKaW5kZXggZjBkZDMxZS4uYWM3MzkyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwCkBAIC00MTksMTAgKzQxOSwxMCBAQCBTdHJpbmcgV2Vi
RnJhbWU6OmlubmVyVGV4dCgpIGNvbnN0CiAgICAgaWYgKCFtX2NvcmVGcmFtZSkKICAgICAgICAg
cmV0dXJuIFN0cmluZygpOwogCi0gICAgaWYgKCFtX2NvcmVGcmFtZS0+ZG9jdW1lbnQoKS0+ZG9j
dW1lbnRFbGVtZW50KCkpCisgICAgaWYgKCFtX2NvcmVGcmFtZS0+ZG9jdW1lbnQoKS5kb2N1bWVu
dEVsZW1lbnQoKSkKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogCi0gICAgcmV0dXJuIG1fY29y
ZUZyYW1lLT5kb2N1bWVudCgpLT5kb2N1bWVudEVsZW1lbnQoKS0+aW5uZXJUZXh0KCk7CisgICAg
cmV0dXJuIG1fY29yZUZyYW1lLT5kb2N1bWVudCgpLmRvY3VtZW50RWxlbWVudCgpLT5pbm5lclRl
eHQoKTsKIH0KIAogV2ViRnJhbWUqIFdlYkZyYW1lOjpwYXJlbnRGcmFtZSgpIGNvbnN0CkBAIC00
NjcsNyArNDY3LDcgQEAgdW5zaWduZWQgV2ViRnJhbWU6OnBlbmRpbmdVbmxvYWRDb3VudCgpIGNv
bnN0CiAgICAgaWYgKCFtX2NvcmVGcmFtZSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICByZXR1
cm4gbV9jb3JlRnJhbWUtPmRvY3VtZW50KCktPmRvbVdpbmRvdygpLT5wZW5kaW5nVW5sb2FkRXZl
bnRMaXN0ZW5lcnMoKTsKKyAgICByZXR1cm4gbV9jb3JlRnJhbWUtPmRvY3VtZW50KCkuZG9tV2lu
ZG93KCktPnBlbmRpbmdVbmxvYWRFdmVudExpc3RlbmVycygpOwogfQogCiBib29sIFdlYkZyYW1l
OjphbGxvd3NGb2xsb3dpbmdMaW5rKGNvbnN0IFdlYkNvcmU6OlVSTCYgdXJsKSBjb25zdApAQCAt
NDc1LDcgKzQ3NSw3IEBAIGJvb2wgV2ViRnJhbWU6OmFsbG93c0ZvbGxvd2luZ0xpbmsoY29uc3Qg
V2ViQ29yZTo6VVJMJiB1cmwpIGNvbnN0CiAgICAgaWYgKCFtX2NvcmVGcmFtZSkKICAgICAgICAg
cmV0dXJuIHRydWU7CiAgICAgICAgIAotICAgIHJldHVybiBtX2NvcmVGcmFtZS0+ZG9jdW1lbnQo
KS0+c2VjdXJpdHlPcmlnaW4oKS0+Y2FuRGlzcGxheSh1cmwpOworICAgIHJldHVybiBtX2NvcmVG
cmFtZS0+ZG9jdW1lbnQoKS5zZWN1cml0eU9yaWdpbigpLT5jYW5EaXNwbGF5KHVybCk7CiB9CiAK
IEpTR2xvYmFsQ29udGV4dFJlZiBXZWJGcmFtZTo6anNDb250ZXh0KCkKQEAgLTQ5MCw3ICs0OTAs
NyBAQCBKU0dsb2JhbENvbnRleHRSZWYgV2ViRnJhbWU6OmpzQ29udGV4dEZvcldvcmxkKEluamVj
dGVkQnVuZGxlU2NyaXB0V29ybGQqIHdvcmxkKQogCiBib29sIFdlYkZyYW1lOjpoYW5kbGVzUGFn
ZVNjYWxlR2VzdHVyZSgpIGNvbnN0CiB7Ci0gICAgaWYgKCFtX2NvcmVGcmFtZS0+ZG9jdW1lbnQo
KS0+aXNQbHVnaW5Eb2N1bWVudCgpKQorICAgIGlmICghbV9jb3JlRnJhbWUtPmRvY3VtZW50KCku
aXNQbHVnaW5Eb2N1bWVudCgpKQogICAgICAgICByZXR1cm4gMDsKIAogICAgIFBsdWdpbkRvY3Vt
ZW50KiBwbHVnaW5Eb2N1bWVudCA9IHN0YXRpY19jYXN0PFBsdWdpbkRvY3VtZW50Kj4obV9jb3Jl
RnJhbWUtPmRvY3VtZW50KCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL1dlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdl
L1dlYlBhZ2UuY3BwCmluZGV4IGJkYmQ1NTguLjlkN2RiYzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0
Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKQEAgLTc3Myw3ICs3NzMsNyBAQCBQYXNz
UmVmUHRyPEFQSTo6QXJyYXk+IFdlYlBhZ2U6OnRyYWNrZWRSZXBhaW50UmVjdHMoKQogCiBQbHVn
aW5WaWV3KiBXZWJQYWdlOjpmb2N1c2VkUGx1Z2luVmlld0ZvckZyYW1lKEZyYW1lJiBmcmFtZSkK
IHsKLSAgICBpZiAoIWZyYW1lLmRvY3VtZW50KCktPmlzUGx1Z2luRG9jdW1lbnQoKSkKKyAgICBp
ZiAoIWZyYW1lLmRvY3VtZW50KCkuaXNQbHVnaW5Eb2N1bWVudCgpKQogICAgICAgICByZXR1cm4g
MDsKIAogICAgIFBsdWdpbkRvY3VtZW50KiBwbHVnaW5Eb2N1bWVudCA9IHN0YXRpY19jYXN0PFBs
dWdpbkRvY3VtZW50Kj4oZnJhbWUuZG9jdW1lbnQoKSk7CkBAIC03ODcsNyArNzg3LDcgQEAgUGx1
Z2luVmlldyogV2ViUGFnZTo6Zm9jdXNlZFBsdWdpblZpZXdGb3JGcmFtZShGcmFtZSYgZnJhbWUp
CiAKIFBsdWdpblZpZXcqIFdlYlBhZ2U6OnBsdWdpblZpZXdGb3JGcmFtZShGcmFtZSogZnJhbWUp
CiB7Ci0gICAgaWYgKCFmcmFtZS0+ZG9jdW1lbnQoKS0+aXNQbHVnaW5Eb2N1bWVudCgpKQorICAg
IGlmICghZnJhbWUtPmRvY3VtZW50KCkuaXNQbHVnaW5Eb2N1bWVudCgpKQogICAgICAgICByZXR1
cm4gMDsKIAogICAgIFBsdWdpbkRvY3VtZW50KiBwbHVnaW5Eb2N1bWVudCA9IHN0YXRpY19jYXN0
PFBsdWdpbkRvY3VtZW50Kj4oZnJhbWUtPmRvY3VtZW50KCkpOwpAQCAtMTg4Miw3ICsxODgyLDcg
QEAgdm9pZCBXZWJQYWdlOjprZXlFdmVudFN5bmNGb3JUZXN0aW5nKGNvbnN0IFdlYktleWJvYXJk
RXZlbnQmIGtleWJvYXJkRXZlbnQsIGJvb2wKICAgICBDdXJyZW50RXZlbnQgY3VycmVudEV2ZW50
KGtleWJvYXJkRXZlbnQpOwogCiAgICAgRnJhbWUmIGZyYW1lID0gbV9wYWdlLT5mb2N1c0NvbnRy
b2xsZXIoKS5mb2N1c2VkT3JNYWluRnJhbWUoKTsKLSAgICBmcmFtZS5kb2N1bWVudCgpLT51cGRh
dGVTdHlsZUlmTmVlZGVkKCk7CisgICAgZnJhbWUuZG9jdW1lbnQoKS51cGRhdGVTdHlsZUlmTmVl
ZGVkKCk7CiAKICAgICBoYW5kbGVkID0gaGFuZGxlS2V5RXZlbnQoa2V5Ym9hcmRFdmVudCwgbV9w
YWdlLmdldCgpKTsKICAgICBpZiAoIWhhbmRsZWQpCkBAIC0yMDY4LDEyICsyMDY4LDEyIEBAIHZv
aWQgV2ViUGFnZTo6c2V0SW5pdGlhbEZvY3VzKGJvb2wgZm9yd2FyZCwgYm9vbCBpc0tleWJvYXJk
RXZlbnRWYWxpZCwgY29uc3QgV2ViCiAgICAgICAgIHJldHVybjsKIAogICAgIEZyYW1lJiBmcmFt
ZSA9IG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCkuZm9jdXNlZE9yTWFpbkZyYW1lKCk7Ci0gICAg
ZnJhbWUuZG9jdW1lbnQoKS0+c2V0Rm9jdXNlZEVsZW1lbnQoMCk7CisgICAgZnJhbWUuZG9jdW1l
bnQoKS5zZXRGb2N1c2VkRWxlbWVudCgwKTsKIAogICAgIGlmIChpc0tleWJvYXJkRXZlbnRWYWxp
ZCAmJiBldmVudC50eXBlKCkgPT0gV2ViRXZlbnQ6OktleURvd24pIHsKICAgICAgICAgUGxhdGZv
cm1LZXlib2FyZEV2ZW50IHBsYXRmb3JtRXZlbnQocGxhdGZvcm0oZXZlbnQpKTsKICAgICAgICAg
cGxhdGZvcm1FdmVudC5kaXNhbWJpZ3VhdGVLZXlEb3duRXZlbnQoUGxhdGZvcm1FdmVudDo6UmF3
S2V5RG93bik7Ci0gICAgICAgIG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCkuc2V0SW5pdGlhbEZv
Y3VzKGZvcndhcmQgPyBGb2N1c0RpcmVjdGlvbkZvcndhcmQgOiBGb2N1c0RpcmVjdGlvbkJhY2t3
YXJkLCBLZXlib2FyZEV2ZW50OjpjcmVhdGUocGxhdGZvcm1FdmVudCwgZnJhbWUuZG9jdW1lbnQo
KS0+ZGVmYXVsdFZpZXcoKSkuZ2V0KCkpOworICAgICAgICBtX3BhZ2UtPmZvY3VzQ29udHJvbGxl
cigpLnNldEluaXRpYWxGb2N1cyhmb3J3YXJkID8gRm9jdXNEaXJlY3Rpb25Gb3J3YXJkIDogRm9j
dXNEaXJlY3Rpb25CYWNrd2FyZCwgS2V5Ym9hcmRFdmVudDo6Y3JlYXRlKHBsYXRmb3JtRXZlbnQs
IGZyYW1lLmRvY3VtZW50KCkuZGVmYXVsdFZpZXcoKSkuZ2V0KCkpOwogICAgICAgICByZXR1cm47
CiAgICAgfQogCkBAIC0zNTY5LDkgKzM1NjksOSBAQCB2b2lkIFdlYlBhZ2U6OmRyYXdSZWN0VG9J
bWFnZSh1aW50NjRfdCBmcmFtZUlELCBjb25zdCBQcmludEluZm8mIHByaW50SW5mbywgY29ucwog
I2lmIFVTRShDRykKICAgICBpZiAoY29yZUZyYW1lKSB7CiAjaWYgUExBVEZPUk0oTUFDKQotICAg
ICAgICBBU1NFUlQoY29yZUZyYW1lLT5kb2N1bWVudCgpLT5wcmludGluZygpIHx8IHBkZkRvY3Vt
ZW50Rm9yUHJpbnRpbmdGcmFtZShjb3JlRnJhbWUpKTsKKyAgICAgICAgQVNTRVJUKGNvcmVGcmFt
ZS0+ZG9jdW1lbnQoKS5wcmludGluZygpIHx8IHBkZkRvY3VtZW50Rm9yUHJpbnRpbmdGcmFtZShj
b3JlRnJhbWUpKTsKICNlbHNlCi0gICAgICAgIEFTU0VSVChjb3JlRnJhbWUtPmRvY3VtZW50KCkt
PnByaW50aW5nKCkpOworICAgICAgICBBU1NFUlQoY29yZUZyYW1lLT5kb2N1bWVudCgpLnByaW50
aW5nKCkpOwogI2VuZGlmCiAKICAgICAgICAgUmVmUHRyPFNoYXJlYWJsZUJpdG1hcD4gYml0bWFw
ID0gU2hhcmVhYmxlQml0bWFwOjpjcmVhdGVTaGFyZWFibGUoaW1hZ2VTaXplLCBTaGFyZWFibGVC
aXRtYXA6OlN1cHBvcnRzQWxwaGEpOwpAQCAtMzYxNSw5ICszNjE1LDkgQEAgdm9pZCBXZWJQYWdl
OjpkcmF3UGFnZXNUb1BERih1aW50NjRfdCBmcmFtZUlELCBjb25zdCBQcmludEluZm8mIHByaW50
SW5mbywgdWludDMKICAgICBpZiAoY29yZUZyYW1lKSB7CiAKICNpZiBQTEFURk9STShNQUMpCi0g
ICAgICAgIEFTU0VSVChjb3JlRnJhbWUtPmRvY3VtZW50KCktPnByaW50aW5nKCkgfHwgcGRmRG9j
dW1lbnRGb3JQcmludGluZ0ZyYW1lKGNvcmVGcmFtZSkpOworICAgICAgICBBU1NFUlQoY29yZUZy
YW1lLT5kb2N1bWVudCgpLnByaW50aW5nKCkgfHwgcGRmRG9jdW1lbnRGb3JQcmludGluZ0ZyYW1l
KGNvcmVGcmFtZSkpOwogI2Vsc2UKLSAgICAgICAgQVNTRVJUKGNvcmVGcmFtZS0+ZG9jdW1lbnQo
KS0+cHJpbnRpbmcoKSk7CisgICAgICAgIEFTU0VSVChjb3JlRnJhbWUtPmRvY3VtZW50KCkucHJp
bnRpbmcoKSk7CiAjZW5kaWYKIAogICAgICAgICAvLyBGSVhNRTogVXNlIENHRGF0YUNvbnN1bWVy
Q3JlYXRlIHdpdGggY2FsbGJhY2tzIHRvIGF2b2lkIGNvcHlpbmcgdGhlIGRhdGEuCkBAIC00MDc2
LDcgKzQwNzYsNyBAQCB2b2lkIFdlYlBhZ2U6OnNldENvbXBvc2l0aW9uKGNvbnN0IFN0cmluZyYg
dGV4dCwgVmVjdG9yPENvbXBvc2l0aW9uVW5kZXJsaW5lPiB1bgogCiAgICAgaWYgKHJlcGxhY2Vt
ZW50TGVuZ3RoID4gMCkgewogICAgICAgICAvLyBUaGUgbGF5b3V0IG5lZWRzIHRvIGJlIHVwdG9k
YXRlIGJlZm9yZSBzZXR0aW5nIGEgc2VsZWN0aW9uCi0gICAgICAgIHRhcmdldEZyYW1lLT5kb2N1
bWVudCgpLT51cGRhdGVMYXlvdXQoKTsKKyAgICAgICAgdGFyZ2V0RnJhbWUtPmRvY3VtZW50KCku
dXBkYXRlTGF5b3V0KCk7CiAKICAgICAgICAgRWxlbWVudCogc2NvcGUgPSB0YXJnZXRGcmFtZS0+
c2VsZWN0aW9uKCkuc2VsZWN0aW9uKCkucm9vdEVkaXRhYmxlRWxlbWVudCgpOwogICAgICAgICBS
ZWZQdHI8UmFuZ2U+IHJlcGxhY2VtZW50UmFuZ2UgPSBUZXh0SXRlcmF0b3I6OnJhbmdlRnJvbUxv
Y2F0aW9uQW5kTGVuZ3RoKHNjb3BlLCByZXBsYWNlbWVudFN0YXJ0LCByZXBsYWNlbWVudExlbmd0
aCk7CkBAIC00MjM5LDggKzQyMzksOCBAQCB2b2lkIFdlYlBhZ2U6OmRpZENvbW1pdExvYWQoV2Vi
RnJhbWUqIGZyYW1lKQogICAgIG1faGFzUmVjZWl2ZWRWaXNpYmxlQ29udGVudFJlY3RzQWZ0ZXJE
aWRDb21taXRMb2FkID0gZmFsc2U7CiAgICAgbV91c2VySGFzQ2hhbmdlZFBhZ2VTY2FsZUZhY3Rv
ciA9IGZhbHNlOwogCi0gICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gZnJhbWUtPmNvcmVGcmFtZSgp
LT5kb2N1bWVudCgpOwotICAgIGlmIChkb2N1bWVudC0+aXNJbWFnZURvY3VtZW50KCkpCisgICAg
RG9jdW1lbnQmIGRvY3VtZW50ID0gZnJhbWUtPmNvcmVGcmFtZSgpLT5kb2N1bWVudCgpOworICAg
IGlmIChkb2N1bWVudC5pc0ltYWdlRG9jdW1lbnQoKSkKICAgICAgICAgbV92aWV3cG9ydENvbmZp
Z3VyYXRpb24uc2V0RGVmYXVsdENvbmZpZ3VyYXRpb24oVmlld3BvcnRDb25maWd1cmF0aW9uOjpp
bWFnZURvY3VtZW50UGFyYW1ldGVycygpKTsKICAgICBlbHNlIGlmIChkb2N1bWVudC0+aXNUZXh0
RG9jdW1lbnQoKSkKICAgICAgICAgbV92aWV3cG9ydENvbmZpZ3VyYXRpb24uc2V0RGVmYXVsdENv
bmZpZ3VyYXRpb24oVmlld3BvcnRDb25maWd1cmF0aW9uOjp0ZXh0RG9jdW1lbnRQYXJhbWV0ZXJz
KCkpOwpAQCAtNDM4Myw3ICs0MzgzLDcgQEAgdm9pZCBXZWJQYWdlOjpkZXRlcm1pbmVQcmltYXJ5
U25hcHNob3R0ZWRQbHVnSW4oKQogCiAgICAgTE9HKFBsdWdpbnMsICJQcmltYXJ5IFBsdWctSW4g
RGV0ZWN0aW9uOiBzdWNjZXNzIC0gZm91bmQgYSBjYW5kaWRhdGUgcGx1Zy1pbiAtIGluZm9ybSBp
dC4iKTsKICAgICBtX2RpZEZpbmRQcmltYXJ5U25hcHNob3R0ZWRQbHVnaW4gPSB0cnVlOwotICAg
IG1fcHJpbWFyeVBsdWdJblBhZ2VPcmlnaW4gPSBtX3BhZ2UtPm1haW5GcmFtZSgpLmRvY3VtZW50
KCktPmJhc2VVUkwoKS5ob3N0KCk7CisgICAgbV9wcmltYXJ5UGx1Z0luUGFnZU9yaWdpbiA9IG1f
cGFnZS0+bWFpbmZyYW1lKCkuZG9jdW1lbnQoKS5iYXNlVVJMKCkuaG9zdCgpOwogICAgIG1fcHJp
bWFyeVBsdWdJbk9yaWdpbiA9IGNhbmRpZGF0ZVBsdWdJbi0+bG9hZGVkVXJsKCkuaG9zdCgpOwog
ICAgIG1fcHJpbWFyeVBsdWdJbk1pbWVUeXBlID0gY2FuZGlkYXRlUGx1Z0luLT5sb2FkZWRNaW1l
VHlwZSgpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2Uv
YXRrL1dlYlBhZ2VBY2Nlc3NpYmlsaXR5T2JqZWN0QXRrLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dl
YlByb2Nlc3MvV2ViUGFnZS9hdGsvV2ViUGFnZUFjY2Vzc2liaWxpdHlPYmplY3RBdGsuY3BwCmlu
ZGV4IGE5MWY5MzEuLjkwYzEyMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvV2ViUGFnZS9hdGsvV2ViUGFnZUFjY2Vzc2liaWxpdHlPYmplY3RBdGsuY3BwCisrKyBiL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9hdGsvV2ViUGFnZUFjY2Vzc2liaWxpdHlP
YmplY3RBdGsuY3BwCkBAIC01Niw3ICs1Niw3IEBAIHN0YXRpYyBBdGtPYmplY3QqIGFjY2Vzc2li
aWxpdHlSb290T2JqZWN0V3JhcHBlcihBdGtPYmplY3QqIGF0a09iamVjdCkKICAgICBpZiAoIWNv
cmVGcmFtZS5kb2N1bWVudCgpKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIEFjY2Vzc2liaWxp
dHlPYmplY3QqIGNvcmVSb290T2JqZWN0ID0gY29yZUZyYW1lLmRvY3VtZW50KCktPmF4T2JqZWN0
Q2FjaGUoKS0+cm9vdE9iamVjdCgpOworICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIGNvcmVSb290
T2JqZWN0ID0gY29yZWZyYW1lLmRvY3VtZW50KCkuYXhPYmplY3RDYWNoZSgpLT5yb290T2JqZWN0
KCk7CiAgICAgaWYgKCFjb3JlUm9vdE9iamVjdCkKICAgICAgICAgcmV0dXJuIDA7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5t
bSBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5tbQpp
bmRleCAyYmMwZDhhLi4wMjFkYWMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1MubW0KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCkBAIC0zMDcsNyArMzA3LDcgQEAgdm9pZCBX
ZWJQYWdlOjpoYW5kbGVUYXAoY29uc3QgSW50UG9pbnQmIHBvaW50KQogCiAgICAgV0tCZWdpbk9i
c2VydmluZ0NvbnRlbnRDaGFuZ2VzKHRydWUpOwogICAgIG1haW5mcmFtZS5ldmVudEhhbmRsZXIo
KS5tb3VzZU1vdmVkKFBsYXRmb3JtTW91c2VFdmVudChyb3VuZGVkQWRqdXN0ZWRQb2ludCwgcm91
bmRlZEFkanVzdGVkUG9pbnQsIE5vQnV0dG9uLCBQbGF0Zm9ybUV2ZW50OjpNb3VzZU1vdmVkLCAw
LCBmYWxzZSwgZmFsc2UsIGZhbHNlLCBmYWxzZSwgMCkpOwotICAgIG1haW5mcmFtZS5kb2N1bWVu
dCgpLT51cGRhdGVTdHlsZUlmTmVlZGVkKCk7CisgICAgbWFpbmZyYW1lLmRvY3VtZW50KCkudXBk
YXRlU3R5bGVJZk5lZWRlZCgpOwogICAgIFdLU3RvcE9ic2VydmluZ0NvbnRlbnRDaGFuZ2VzKCk7
CiAgICAgaWYgKFdLT2JzZXJ2ZWRDb250ZW50Q2hhbmdlKCkgIT0gV0tDb250ZW50Tm9DaGFuZ2Up
CiAgICAgICAgIHJldHVybjsKQEAgLTEzMDEsNyArMTMwMSw3IEBAIHZvaWQgV2ViUGFnZTo6cmVw
bGFjZURpY3RhdGVkVGV4dChjb25zdCBTdHJpbmcmIG9sZFRleHQsIGNvbnN0IFN0cmluZyYgbmV3
VGV4dCkKICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG9sZFRleHQubGVuZ3RoKCk7ICsraSkK
ICAgICAgICAgcG9zaXRpb24gPSBwb3NpdGlvbi5wcmV2aW91cygpOwogICAgIGlmIChwb3NpdGlv
bi5pc051bGwoKSkKLSAgICAgICAgcG9zaXRpb24gPSBzdGFydE9mRG9jdW1lbnQoc3RhdGljX2Nh
c3Q8Tm9kZSo+KGZyYW1lLmRvY3VtZW50KCktPmRvY3VtZW50RWxlbWVudCgpKSk7CisgICAgICAg
IHBvc2l0aW9uID0gc3RhcnRPZkRvY3VtZW50KHN0YXRpY19jYXN0PE5vZGUqPihmcmFtZS5kb2N1
bWVudCgpLmRvY3VtZW50RWxlbWVudCgpKSk7CiAgICAgUmVmUHRyPFJhbmdlPiByYW5nZSA9IFJh
bmdlOjpjcmVhdGUoKmZyYW1lLmRvY3VtZW50KCksIHBvc2l0aW9uLCBmcmFtZS5zZWxlY3Rpb24o
KS5zZWxlY3Rpb24oKS5zdGFydCgpKTsKIAogICAgIGlmIChwbGFpblRleHQocmFuZ2UuZ2V0KCkp
ICE9IG9sZFRleHQpCkBAIC0xMzc2LDcgKzEzNzYsNyBAQCB2b2lkIFdlYlBhZ2U6OnN5bmNBcHBs
eUF1dG9jb3JyZWN0aW9uKGNvbnN0IFN0cmluZyYgY29ycmVjdGlvbiwgY29uc3QgU3RyaW5nJiBv
cgogICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG9yaWdpbmFsVGV4dC5sZW5ndGgoKTsg
KytpKQogICAgICAgICAgICAgcG9zaXRpb24gPSBwb3NpdGlvbi5wcmV2aW91cygpOwogICAgICAg
ICBpZiAocG9zaXRpb24uaXNOdWxsKCkpCi0gICAgICAgICAgICBwb3NpdGlvbiA9IHN0YXJ0T2ZE
b2N1bWVudChzdGF0aWNfY2FzdDxOb2RlKj4oZnJhbWUuZG9jdW1lbnQoKS0+ZG9jdW1lbnRFbGVt
ZW50KCkpKTsKKyAgICAgICAgICAgIHBvc2l0aW9uID0gc3RhcnRPZkRvY3VtZW50KHN0YXRpY19j
YXN0PE5vZGUqPihmcmFtZS5kb2N1bWVudCgpLmRvY3VtZW50RWxlbWVudCgpKSk7CiAgICAgICAg
IHJhbmdlID0gUmFuZ2U6OmNyZWF0ZSgqZnJhbWUuZG9jdW1lbnQoKSwgcG9zaXRpb24sIGZyYW1l
LnNlbGVjdGlvbigpLnNlbGVjdGlvbigpLnN0YXJ0KCkpOwogICAgICAgICBpZiAocmFuZ2UpCiAg
ICAgICAgICAgICB0ZXh0Rm9yUmFuZ2UgPSAocmFuZ2UpID8gcGxhaW5UZXh0KHJhbmdlLmdldCgp
KSA6IGVtcHR5U3RyaW5nKCk7Cg==
</data>
<flag name="commit-queue"
          id="254237"
          type_id="3"
          status="-"
          setter="gyuyoung.kim"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>229953</attachid>
            <date>2014-04-22 21:54:26 -0700</date>
            <delta_ts>2014-04-22 21:54:26 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>wip.patch</filename>
            <type>text/plain</type>
            <size>435243</size>
            <attacher name="Gyuyoung Kim">gyuyoung.kim</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCA1YjAyMTBjOC4uZDU5YjIwZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU0
OCBAQAorMjAxNC0wNC0yMiAgR3l1eW91bmcgS2ltICA8Z3l1eW91bmcua2ltQHNhbXN1bmcuY29t
PgorCisgICAgICAgIE5lZWQgYSBzaG9ydCBkZXNjcmlwdGlvbiAoT09QUyEpLgorICAgICAgICBO
ZWVkIHRoZSBidWcgVVJMIChPT1BTISkuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChP
T1BTISkuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzIChPT1BTISkuCisKKyAgICAgICAgKiBNb2R1
bGVzL2JhdHRlcnkvQmF0dGVyeU1hbmFnZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QmF0dGVy
eU1hbmFnZXI6OkJhdHRlcnlNYW5hZ2VyKToKKyAgICAgICAgKiBNb2R1bGVzL2dlb2xvY2F0aW9u
L05hdmlnYXRvckdlb2xvY2F0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok5hdmlnYXRvckdl
b2xvY2F0aW9uOjpnZW9sb2NhdGlvbik6CisgICAgICAgICogTW9kdWxlcy9tZWRpYXN0cmVhbS9O
YXZpZ2F0b3JNZWRpYVN0cmVhbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpOYXZpZ2F0b3JNZWRp
YVN0cmVhbTo6d2Via2l0R2V0VXNlck1lZGlhKToKKyAgICAgICAgKiBNb2R1bGVzL25hdmlnYXRv
cmNvbnRlbnR1dGlscy9OYXZpZ2F0b3JDb250ZW50VXRpbHMuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6TmF2aWdhdG9yQ29udGVudFV0aWxzOjpyZWdpc3RlclByb3RvY29sSGFuZGxlcik6CisgICAg
ICAgIChXZWJDb3JlOjpOYXZpZ2F0b3JDb250ZW50VXRpbHM6OmlzUHJvdG9jb2xIYW5kbGVyUmVn
aXN0ZXJlZCk6CisgICAgICAgIChXZWJDb3JlOjpOYXZpZ2F0b3JDb250ZW50VXRpbHM6OnVucmVn
aXN0ZXJQcm90b2NvbEhhbmRsZXIpOgorICAgICAgICAqIE1vZHVsZXMvcXVvdGEvRE9NV2luZG93
UXVvdGEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NV2luZG93UXVvdGE6OndlYmtpdFN0b3Jh
Z2VJbmZvKToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6QVhPYmplY3RDYWNoZTo6Zm9jdXNlZFVJRWxlbWVudEZvclBhZ2UpOgor
ICAgICAgICAqIGFjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjphcHBlbmRBY2Nlc3NpYmlsaXR5T2JqZWN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkFjY2Vzc2liaWxpdHlPYmplY3Q6OnNlbGVjdGlvblJhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6
OkFjY2Vzc2liaWxpdHlPYmplY3Q6OmRvY3VtZW50KToKKyAgICAgICAgKiBhY2Nlc3NpYmlsaXR5
L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QWNjZXNz
aWJpbGl0eVJlbmRlck9iamVjdDo6dGV4dFVuZGVyRWxlbWVudCk6CisgICAgICAgIChXZWJDb3Jl
OjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0Ojp2aXNpYmxlUG9zaXRpb25Gb3JQb2ludCk6Cisg
ICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5UmVuZGVyT2JqZWN0OjpyZW1vdGVTVkdSb290
RWxlbWVudCk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2Nyb2xsVmll
dy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldzo6d2ViQXJl
YU9iamVjdCk6CisgICAgICAgICogYWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0eU9i
amVjdFdyYXBwZXJJT1MubW06CisgICAgICAgIChyZW5kZXJlckZvclZpZXcpOgorICAgICAgICAq
IGFjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tOgor
ICAgICAgICAocmVuZGVyZXJGb3JWaWV3KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUJp
bmRpbmcuY3BwOgorICAgICAgICAoV2ViQ29yZTo6c2hvdWxkQWxsb3dBY2Nlc3NUb0ZyYW1lKToK
KyAgICAgICAgKFdlYkNvcmU6OnByaW50RXJyb3JNZXNzYWdlRm9yRnJhbWUpOgorICAgICAgICAo
V2ViQ29yZTo6QmluZGluZ1NlY3VyaXR5OjpzaG91bGRBbGxvd0FjY2Vzc1RvRnJhbWUpOgorICAg
ICAgICAqIGJpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmNoaWxkRnJhbWVHZXR0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6aW5kZXhHZXR0ZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6bmFtZWRJdGVtR2V0dGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkpT
RE9NV2luZG93OjpnZXRPd25Qcm9wZXJ0eVNsb3QpOgorICAgICAgICAoV2ViQ29yZTo6SlNET01X
aW5kb3c6OmdldE93blByb3BlcnR5U2xvdEJ5SW5kZXgpOgorICAgICAgICAqIGJpbmRpbmdzL2pz
L0pTRG9jdW1lbnRDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNEb2N1bWVudDo6bG9j
YXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6SlNEb2N1bWVudDo6c2V0TG9jYXRpb24pOgorICAg
ICAgICAqIGJpbmRpbmdzL2pzL0pTTGF6eUV2ZW50TGlzdGVuZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SlNMYXp5RXZlbnRMaXN0ZW5lcjo6Y3JlYXRlRm9yRE9NV2luZG93KToKKyAgICAgICAg
KiBiaW5kaW5ncy9qcy9TY3JpcHRDYWNoZWRGcmFtZURhdGEuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U2NyaXB0Q2FjaGVkRnJhbWVEYXRhOjpyZXN0b3JlKToKKyAgICAgICAgKiBiaW5kaW5ncy9q
cy9TY3JpcHRDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENvbnRyb2xs
ZXI6OmNyZWF0ZVdpbmRvd1NoZWxsKToKKyAgICAgICAgKFdlYkNvcmU6OlNjcmlwdENvbnRyb2xs
ZXI6OmluaXRTY3JpcHQpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0Q29udHJvbGxlcjo6ZXZl
bnRIYW5kbGVyUG9zaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0Q29udHJvbGxlcjo6
ZXhlY3V0ZVNjcmlwdEluV29ybGQpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0Q29udHJvbGxl
cjo6Y2FuRXhlY3V0ZVNjcmlwdHMpOgorICAgICAgICAoV2ViQ29yZTo6U2NyaXB0Q29udHJvbGxl
cjo6ZXhlY3V0ZVNjcmlwdCk6CisgICAgICAgIChXZWJDb3JlOjpTY3JpcHRDb250cm9sbGVyOjpl
eGVjdXRlSWZKYXZhU2NyaXB0VVJMKToKKyAgICAgICAgKiBjc3MvTWVkaWFRdWVyeUV2YWx1YXRv
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpkZXZpY2VfaGVpZ2h0TWVkaWFGZWF0dXJlRXZhbCk6
CisgICAgICAgIChXZWJDb3JlOjpkZXZpY2Vfd2lkdGhNZWRpYUZlYXR1cmVFdmFsKToKKyAgICAg
ICAgKFdlYkNvcmU6OmhlaWdodE1lZGlhRmVhdHVyZUV2YWwpOgorICAgICAgICAoV2ViQ29yZTo6
d2lkdGhNZWRpYUZlYXR1cmVFdmFsKToKKyAgICAgICAgKiBjc3MvU3R5bGVNZWRpYS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTdHlsZU1lZGlhOjptYXRjaE1lZGl1bSk6CisgICAgICAgICogZG9t
L0RvY3VtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OmNhbkFjY2Vzc0FuY2VzdG9yKToKKyAg
ICAgICAgKFdlYkNvcmU6OnByaW50TmF2aWdhdGlvbkVycm9yTWVzc2FnZSk6CisgICAgICAgIChX
ZWJDb3JlOjpwYWdlV2hlZWxFdmVudEhhbmRsZXJDb3VudENoYW5nZWQpOgorICAgICAgICAoV2Vi
Q29yZTo6RG9jdW1lbnQ6OmZpbmRVbnNhZmVQYXJlbnRTY3JvbGxQcm9wYWdhdGlvbkJvdW5kYXJ5
KToKKyAgICAgICAgKFdlYkNvcmU6OmNvbW1hbmQpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1l
bnQ6OnNldERlc2lnbk1vZGUpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6OnBhcmVudERv
Y3VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50Ojp0b3BEb2N1bWVudCk6CisgICAg
ICAgIChXZWJDb3JlOjpEb2N1bWVudDo6aW5pdFNlY3VyaXR5Q29udGV4dCk6CisgICAgICAgIChX
ZWJDb3JlOjpEb2N1bWVudDo6ZGlkUmVtb3ZlVG91Y2hFdmVudEhhbmRsZXIpOgorICAgICAgICAo
V2ViQ29yZTo6RG9jdW1lbnQ6OmxvYWRlcik6CisgICAgICAgICogZG9tL1VzZXJUeXBpbmdHZXN0
dXJlSW5kaWNhdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlVzZXJUeXBpbmdHZXN0dXJlSW5k
aWNhdG9yOjpVc2VyVHlwaW5nR2VzdHVyZUluZGljYXRvcik6CisgICAgICAgICogZWRpdGluZy9B
bHRlcm5hdGl2ZVRleHRDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFsdGVybmF0
aXZlVGV4dENvbnRyb2xsZXI6OmlzU3BlbGxpbmdNYXJrZXJBbGxvd2VkKToKKyAgICAgICAgKFdl
YkNvcmU6OkFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXI6OnJlc3BvbmRUb1VuYXBwbGllZFNwZWxs
Q29ycmVjdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVy
OjpyZXNwb25kVG9BcHBsaWVkRWRpdGluZyk6CisgICAgICAgIChXZWJDb3JlOjpBbHRlcm5hdGl2
ZVRleHRDb250cm9sbGVyOjpyZXNwb25kVG9VbmFwcGxpZWRFZGl0aW5nKToKKyAgICAgICAgKFdl
YkNvcmU6OkFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXI6Om1hcmtQcmVjZWRpbmdXaGl0ZXNwYWNl
Rm9yRGVsZXRlZEF1dG9jb3JyZWN0aW9uQWZ0ZXJDb21tYW5kKToKKyAgICAgICAgKFdlYkNvcmU6
OkFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXI6OnByb2Nlc3NNYXJrZXJzT25UZXh0VG9CZVJlcGxh
Y2VkQnlSZXN1bHQpOgorICAgICAgICAoV2ViQ29yZTo6QWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxl
cjo6aW5zZXJ0RGljdGF0ZWRUZXh0KToKKyAgICAgICAgKiBlZGl0aW5nL0RlbGV0ZUJ1dHRvbkNv
bnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RGVsZXRlQnV0dG9uQ29udHJvbGxlcjo6
c2hvdyk6CisgICAgICAgIChXZWJDb3JlOjpEZWxldGVCdXR0b25Db250cm9sbGVyOjplbmFibGUp
OgorICAgICAgICAqIGVkaXRpbmcvRWRpdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkVkaXRv
cjo6ZG9jdW1lbnQpOgorICAgICAgICAqIGVkaXRpbmcvRWRpdG9yQ29tbWFuZC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpleGVjdXRlSW5zZXJ0RnJhZ21lbnQpOgorICAgICAgICAoV2ViQ29yZTo6
ZXhlY3V0ZUluc2VydE5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6dmVydGljYWxTY3JvbGxEaXN0
YW5jZSk6CisgICAgICAgIChXZWJDb3JlOjpleGVjdXRlQ3JlYXRlTGluayk6CisgICAgICAgIChX
ZWJDb3JlOjpleGVjdXRlRGVsZXRlKToKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVGb3JtYXRC
bG9jayk6CisgICAgICAgIChXZWJDb3JlOjpleGVjdXRlRm9yd2FyZERlbGV0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpleGVjdXRlSW5kZW50KToKKyAgICAgICAgKFdlYkNvcmU6OmV4ZWN1dGVJbnNl
cnRIb3Jpem9udGFsUnVsZSk6CisgICAgICAgIChXZWJDb3JlOjpleGVjdXRlSW5zZXJ0SFRNTCk6
CisgICAgICAgIChXZWJDb3JlOjpleGVjdXRlSW5zZXJ0SW1hZ2UpOgorICAgICAgICAoV2ViQ29y
ZTo6ZXhlY3V0ZUluc2VydExpbmVCcmVhayk6CisgICAgICAgIChXZWJDb3JlOjpleGVjdXRlSW5z
ZXJ0TmV3bGluZUluUXVvdGVkQ29udGVudCk6CisgICAgICAgIChXZWJDb3JlOjpleGVjdXRlSW5z
ZXJ0T3JkZXJlZExpc3QpOgorICAgICAgICAoV2ViQ29yZTo6ZXhlY3V0ZUluc2VydFBhcmFncmFw
aCk6CisgICAgICAgIChXZWJDb3JlOjpleGVjdXRlSW5zZXJ0VGV4dCk6CisgICAgICAgIChXZWJD
b3JlOjpleGVjdXRlSW5zZXJ0VW5vcmRlcmVkTGlzdCk6CisgICAgICAgIChXZWJDb3JlOjpleGVj
dXRlT3V0ZGVudCk6CisgICAgICAgIChXZWJDb3JlOjpleGVjdXRlVW5saW5rKToKKyAgICAgICAg
KFdlYkNvcmU6OkVkaXRvcjo6Q29tbWFuZDo6ZXhlY3V0ZSk6CisgICAgICAgICogZWRpdGluZy9G
cmFtZVNlbGVjdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVNlbGVjdGlvbjo6cm9v
dEVkaXRhYmxlRWxlbWVudE9yRG9jdW1lbnRFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkZy
YW1lU2VsZWN0aW9uOjpzZXRTZWxlY3Rpb25XaXRob3V0VXBkYXRpbmdBcHBlYXJhbmNlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkZyYW1lU2VsZWN0aW9uOjpzZXRTZWxlY3Rpb24pOgorICAgICAgICAo
V2ViQ29yZTo6dXBkYXRlU2VsZWN0aW9uQnlVcGRhdGluZ0xheW91dE9yU3R5bGUpOgorICAgICAg
ICAoV2ViQ29yZTo6RnJhbWVTZWxlY3Rpb246OnJlY29tcHV0ZUNhcmV0UmVjdCk6CisgICAgICAg
IChXZWJDb3JlOjpGcmFtZVNlbGVjdGlvbjo6Y29udGFpbnMpOgorICAgICAgICAoV2ViQ29yZTo6
RnJhbWVTZWxlY3Rpb246OnNlbGVjdEFsbCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVNlbGVj
dGlvbjo6Zm9jdXNlZE9yQWN0aXZlU3RhdGVDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OkZy
YW1lU2VsZWN0aW9uOjpzZXRGb2N1c2VkRWxlbWVudElmTmVlZGVkKToKKyAgICAgICAgKFdlYkNv
cmU6OkZyYW1lU2VsZWN0aW9uOjpzZWxlY3Rpb25Cb3VuZHMpOgorICAgICAgICAoV2ViQ29yZTo6
RnJhbWVTZWxlY3Rpb246OmN1cnJlbnRGb3JtKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lU2Vs
ZWN0aW9uOjpzZXRTZWxlY3Rpb25Gcm9tTm9uZSk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVNl
bGVjdGlvbjo6c2V0U2hvdWxkU2hvd0Jsb2NrQ3Vyc29yKToKKyAgICAgICAgKFdlYkNvcmU6OkZy
YW1lU2VsZWN0aW9uOjpzZWxlY3RSYW5nZU9uRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpG
cmFtZVNlbGVjdGlvbjo6c2V0Q2FyZXRCbGlua3MpOgorICAgICAgICAqIGVkaXRpbmcvU3BlbGxD
aGVja2VyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNwZWxsQ2hlY2tlcjo6ZGlkQ2hlY2tTdWNj
ZWVkKToKKyAgICAgICAgKiBlZGl0aW5nL2F0ay9GcmFtZVNlbGVjdGlvbkF0ay5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpGcmFtZVNlbGVjdGlvbjo6bm90aWZ5QWNjZXNzaWJpbGl0eUZvclNlbGVj
dGlvbkNoYW5nZSk6CisgICAgICAgICogZWRpdGluZy9pb3MvRWRpdG9ySU9TLm1tOgorICAgICAg
ICAoV2ViQ29yZTo6RWRpdG9yOjpzZXRUZXh0QWxpZ25tZW50Rm9yQ2hhbmdlZEJhc2VXcml0aW5n
RGlyZWN0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OnN0eWxlRm9yU2VsZWN0aW9uU3RhcnQpOgor
ICAgICAgICAoV2ViQ29yZTo6RWRpdG9yOjpyZW1vdmVVbmNoYW5nZWFibGVTdHlsZXMpOgorICAg
ICAgICAoV2ViQ29yZTo6RWRpdG9yOjpXZWJDb250ZW50UmVhZGVyOjpyZWFkVVJMKToKKyAgICAg
ICAgKFdlYkNvcmU6OkVkaXRvcjo6Y3JlYXRlRnJhZ21lbnRBbmRBZGRSZXNvdXJjZXMpOgorICAg
ICAgICAoV2ViQ29yZTo6RWRpdG9yOjpjcmVhdGVGcmFnbWVudEZvckltYWdlUmVzb3VyY2VBbmRB
ZGRSZXNvdXJjZSk6CisgICAgICAgICogZWRpdGluZy9tYWMvRWRpdG9yTWFjLm1tOgorICAgICAg
ICAoV2ViQ29yZTo6c3R5bGVGb3JTZWxlY3Rpb25TdGFydCk6CisgICAgICAgIChXZWJDb3JlOjpF
ZGl0b3I6OldlYkNvbnRlbnRSZWFkZXI6OnJlYWRVUkwpOgorICAgICAgICAqIGhpc3RvcnkvQ2Fj
aGVkRnJhbWUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkRnJhbWVCYXNlOjpDYWNoZWRG
cmFtZUJhc2UpOgorICAgICAgICAqIGhpc3RvcnkvQ2FjaGVkUGFnZS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpDYWNoZWRQYWdlOjpyZXN0b3JlKToKKyAgICAgICAgKiBoaXN0b3J5L1BhZ2VDYWNo
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpsb2dDYW5DYWNoZUZyYW1lRGVjaXNpb24pOgorICAg
ICAgICAoV2ViQ29yZTo6UGFnZUNhY2hlOjpjYW5DYWNoZVBhZ2VDb250YWluaW5nVGhpc0ZyYW1l
KToKKyAgICAgICAgKiBodG1sL0hUTUxGcmFtZU93bmVyRWxlbWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MRnJhbWVPd25lckVsZW1lbnQ6OmNvbnRlbnREb2N1bWVudCk6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MRnJhbWVPd25lckVsZW1lbnQ6OmNvbnRlbnRXaW5kb3cpOgorICAgICAg
ICAqIGh0bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpI
VE1MUGx1Z0luSW1hZ2VFbGVtZW50OjpyZXN0YXJ0U2ltaWxhclBsdWdJbnMpOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTFBsdWdJbkltYWdlRWxlbWVudDo6dXNlckRpZENsaWNrU25hcHNob3QpOgor
ICAgICAgICAoV2ViQ29yZTo6ZG9jdW1lbnRIYWRSZWNlbnRVc2VyR2VzdHVyZSk6CisgICAgICAg
IChXZWJDb3JlOjpIVE1MUGx1Z0luSW1hZ2VFbGVtZW50OjpzdWJmcmFtZUxvYWRlcldpbGxDcmVh
dGVQbHVnSW4pOgorICAgICAgICAqIGh0bWwvcGFyc2VyL0hUTUxTY3JpcHRSdW5uZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6ZG9jdW1lbnRVUkxGb3JTY3JpcHRFeGVjdXRpb24pOgorICAgICAg
ICAqIGluc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JET01BZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKToKKyAgICAgICAg
KiBpbnNwZWN0b3IvSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudDo6c3RvcmFnZUlkKToKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudDo6ZmluZFN0b3JhZ2VBcmVhKToKKyAgICAgICAg
KiBpbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsOjpvcGVuSW5OZXdUYWIpOgorICAg
ICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjphc3NlcnREb2N1bWVudCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvcklu
c3RydW1lbnRhdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50
YXRpb246OmRpZENvbW1pdExvYWRJbXBsKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9y
T3ZlcmxheS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JPdmVybGF5Ojp1cGRhdGUp
OgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9yUGFnZUFnZW50OjptYWluUmVzb3VyY2VDb250ZW50KToKKyAgICAg
ICAgKFdlYkNvcmU6Okluc3BlY3RvclBhZ2VBZ2VudDo6Y2FjaGVkUmVzb3VyY2UpOgorICAgICAg
ICAoV2ViQ29yZTo6SW5zcGVjdG9yUGFnZUFnZW50OjpuYXZpZ2F0ZSk6CisgICAgICAgIChXZWJD
b3JlOjpjYWNoZWRSZXNvdXJjZXNGb3JGcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0
b3JQYWdlQWdlbnQ6OmdldENvb2tpZXMpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUGFn
ZUFnZW50OjpkZWxldGVDb29raWUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUGFnZUFn
ZW50OjpzZWFyY2hJblJlc291cmNlcyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JQYWdl
QWdlbnQ6OnNldERvY3VtZW50Q29udGVudCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JQ
YWdlQWdlbnQ6OmZpbmRGcmFtZVdpdGhTZWN1cml0eU9yaWdpbik6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JQYWdlQWdlbnQ6OmJ1aWxkT2JqZWN0Rm9yRnJhbWUpOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9yUGFnZUFnZW50OjpzZXRFbXVsYXRlZE1lZGlhKToKKyAgICAgICAgKiBp
bnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JSZXNvdXJjZUFnZW50Ojp3aWxsU2VuZFJlcXVlc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6ZGlkRmluaXNoTG9hZGluZyk6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpkaWRGYWlsTG9hZGluZyk6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpkaWRMb2FkUmVzb3VyY2VGcm9tTWVt
b3J5Q2FjaGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6cmVw
bGF5WEhSKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclJlc291cmNlQWdlbnQ6OmxvYWRS
ZXNvdXJjZSk6CisgICAgICAgICogaW5zcGVjdG9yL1BhZ2VTY3JpcHREZWJ1Z1NlcnZlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpQYWdlU2NyaXB0RGVidWdTZXJ2ZXI6OnNldEphdmFTY3JpcHRQ
YXVzZWQpOgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudExvYWRlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6ZG9jdW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6RG9j
dW1lbnRMb2FkZXI6OnN0b3BMb2FkaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50TG9h
ZGVyOjpmaW5pc2hlZExvYWRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6
OndpbGxTZW5kUmVxdWVzdCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6cmVz
cG9uc2VSZWNlaXZlZCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6Y29tbWl0
RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudExvYWRlcjo6Y2hlY2tMb2FkQ29tcGxl
dGUpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRMb2FkZXI6OmlzTG9hZGluZ0luQVBJU2Vu
c2UpOgorICAgICAgICAqIGxvYWRlci9Eb2N1bWVudFdyaXRlci5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpjYW5SZWZlclRvUGFyZW50RnJhbWVFbmNvZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpE
b2N1bWVudFdyaXRlcjo6cmVwbGFjZURvY3VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3Vt
ZW50V3JpdGVyOjpiZWdpbik6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFdyaXRlcjo6Y3Jl
YXRlRGVjb2RlcklmTmVlZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50V3JpdGVyOjpy
ZXBvcnREYXRhUmVjZWl2ZWQpOgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRSZXF1ZXN0LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZFJlcXVlc3Q6OkZyYW1lTG9hZFJlcXVlc3Qp
OgorICAgICAgICAqIGxvYWRlci9GcmFtZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpp
c0RvY3VtZW50U2FuZGJveGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjppbml0
KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjp1cmxTZWxlY3RlZCk6CisgICAgICAg
IChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6c3VibWl0Rm9ybSk6CisgICAgICAgIChXZWJDb3JlOjpG
cmFtZUxvYWRlcjo6c3RvcExvYWRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6
OnN0b3ApOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmRpZE9wZW5VUkwpOgorICAg
ICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmNsZWFyKToKKyAgICAgICAgKFdlYkNvcmU6OkZy
YW1lTG9hZGVyOjpyZWNlaXZlZEZpcnN0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxv
YWRlcjo6ZGlkQmVnaW5Eb2N1bWVudCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6
ZmluaXNoZWRQYXJzaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpjaGVja0Nv
bXBsZXRlZCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6Y2hlY2tDYWxsSW1wbGlj
aXRDbG9zZSk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6bG9hZFVSTEludG9DaGls
ZEZyYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpvdXRnb2luZ1JlZmVycmVy
KToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpvdXRnb2luZ09yaWdpbik6CisgICAg
ICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6Y2hlY2tJZkZvcm1BY3Rpb25BbGxvd2VkQnlDU1Ap
OgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OnNldE9wZW5lcik6CisgICAgICAgIChX
ZWJDb3JlOjpGcmFtZUxvYWRlcjo6dXBkYXRlRmlyc3RQYXJ0eUZvckNvb2tpZXMpOgorICAgICAg
ICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OnNldEZpcnN0UGFydHlGb3JDb29raWVzKToKKyAgICAg
ICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpsb2FkSW5TYW1lRG9jdW1lbnQpOgorICAgICAgICAo
V2ViQ29yZTo6RnJhbWVMb2FkZXI6OnByZXBhcmVGb3JMb2FkU3RhcnQpOgorICAgICAgICAoV2Vi
Q29yZTo6RnJhbWVMb2FkZXI6OmxvYWRGcmFtZVJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6
RnJhbWVMb2FkZXI6OmxvYWRVUkwpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6Omxv
YWRXaXRoRG9jdW1lbnRMb2FkZXIpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OnJl
cG9ydExvY2FsTG9hZEZhaWxlZCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6c3Rv
cEFsbExvYWRlcnMpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmNvbW1pdFByb3Zp
c2lvbmFsTG9hZCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6cHJlcGFyZUZvckNh
Y2hlZFBhZ2VSZXN0b3JlKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyOjpjaGVja0xv
YWRDb21wbGV0ZUZvclRoaXNGcmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpvcmlnaW5hdGluZ1VS
TEZyb21CYWNrRm9yd2FyZExpc3QpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6Om51
bVBlbmRpbmdPckxvYWRpbmdSZXF1ZXN0cyk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRl
cjo6ZnJhbWVEZXRhY2hlZCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6YWRkRXh0
cmFGaWVsZHNUb1JlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmxvYWRS
ZXNvdXJjZVN5bmNocm9ub3VzbHkpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OnNo
b3VsZFBlcmZvcm1GcmFnbWVudE5hdmlnYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVM
b2FkZXI6OnNjcm9sbFRvRnJhZ21lbnRXaXRoUGFyZW50Qm91bmRhcnkpOgorICAgICAgICAoV2Vi
Q29yZTo6RnJhbWVMb2FkZXI6OmhhbmRsZUJlZm9yZVVubG9hZEV2ZW50KToKKyAgICAgICAgKFdl
YkNvcmU6OkZyYW1lTG9hZGVyOjpjb250aW51ZUxvYWRBZnRlck5ld1dpbmRvd1BvbGljeSk6Cisg
ICAgICAgIChXZWJDb3JlOjpGcmFtZUxvYWRlcjo6c2hvdWxkSW50ZXJydXB0TG9hZEZvclhGcmFt
ZU9wdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVMb2FkZXI6OmVmZmVjdGl2ZVNhbmRi
b3hGbGFncyk6CisgICAgICAgIChXZWJDb3JlOjpjcmVhdGVXaW5kb3cpOgorICAgICAgICAqIGxv
YWRlci9GcmFtZU5ldHdvcmtpbmdDb250ZXh0Lmg6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZU5l
dHdvcmtpbmdDb250ZXh0OjpzaG91bGRDbGVhclJlZmVycmVyT25IVFRQU1RvSFRUUFJlZGlyZWN0
KToKKyAgICAgICAgKiBsb2FkZXIvSGlzdG9yeUNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6SGlzdG9yeUNvbnRyb2xsZXI6OnNhdmVTY3JvbGxQb3NpdGlvbkFuZFZpZXdTdGF0ZVRv
SXRlbSk6CisgICAgICAgIChXZWJDb3JlOjpIaXN0b3J5Q29udHJvbGxlcjo6c2F2ZURvY3VtZW50
U3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6SGlzdG9yeUNvbnRyb2xsZXI6OnJlc3RvcmVEb2N1
bWVudFN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6Okhpc3RvcnlDb250cm9sbGVyOjppbnZhbGlk
YXRlQ3VycmVudEl0ZW1DYWNoZWRQYWdlKToKKyAgICAgICAgKFdlYkNvcmU6Okhpc3RvcnlDb250
cm9sbGVyOjp1cGRhdGVGb3JTdGFuZGFyZExvYWQpOgorICAgICAgICAoV2ViQ29yZTo6SGlzdG9y
eUNvbnRyb2xsZXI6OnVwZGF0ZUZvclJlZGlyZWN0V2l0aExvY2tlZEJhY2tGb3J3YXJkTGlzdCk6
CisgICAgICAgIChXZWJDb3JlOjpIaXN0b3J5Q29udHJvbGxlcjo6dXBkYXRlRm9yU2FtZURvY3Vt
ZW50TmF2aWdhdGlvbik6CisgICAgICAgICogbG9hZGVyL01peGVkQ29udGVudENoZWNrZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6TWl4ZWRDb250ZW50Q2hlY2tlcjo6bG9nV2FybmluZyk6Cisg
ICAgICAgICogbG9hZGVyL05hdmlnYXRpb25TY2hlZHVsZXIuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6TmF2aWdhdGlvblNjaGVkdWxlcjo6c2NoZWR1bGVSZWRpcmVjdCk6CisgICAgICAgIChXZWJD
b3JlOjpOYXZpZ2F0aW9uU2NoZWR1bGVyOjptdXN0TG9ja0JhY2tGb3J3YXJkTGlzdCk6CisgICAg
ICAgIChXZWJDb3JlOjpOYXZpZ2F0aW9uU2NoZWR1bGVyOjpzY2hlZHVsZUxvY2F0aW9uQ2hhbmdl
KToKKyAgICAgICAgKFdlYkNvcmU6Ok5hdmlnYXRpb25TY2hlZHVsZXI6OnNjaGVkdWxlUmVmcmVz
aCk6CisgICAgICAgICogbG9hZGVyL1BpbmdMb2FkZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UGluZ0xvYWRlcjo6bG9hZEltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OlBpbmdMb2FkZXI6OnNl
bmRQaW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlBpbmdMb2FkZXI6OnNlbmRWaW9sYXRpb25SZXBv
cnQpOgorICAgICAgICAqIGxvYWRlci9Qb2xpY3lDaGVja2VyLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlBvbGljeUNoZWNrZXI6OmNoZWNrTmV3V2luZG93UG9saWN5KToKKyAgICAgICAgKiBsb2Fk
ZXIvUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNl
TG9hZFNjaGVkdWxlcjo6bm90aWZ5RGlkU2NoZWR1bGVSZXNvdXJjZVJlcXVlc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkU2NoZWR1bGVyOjpzZXJ2ZVBlbmRpbmdSZXF1ZXN0cyk6
CisgICAgICAgICogbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlc291cmNlTG9hZGVyOjppbml0KToKKyAgICAgICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVy
OjpkaWRSZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UpOgorICAgICAgICAqIGxvYWRlci9T
dWJmcmFtZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdWJmcmFtZUxvYWRlcjo6bG9h
ZE1lZGlhUGxheWVyUHJveHlQbHVnaW4pOgorICAgICAgICAoV2ViQ29yZTo6U3ViZnJhbWVMb2Fk
ZXI6OmNyZWF0ZUphdmFBcHBsZXRXaWRnZXQpOgorICAgICAgICAoV2ViQ29yZTo6U3ViZnJhbWVM
b2FkZXI6OmxvYWRPclJlZGlyZWN0U3ViZnJhbWUpOgorICAgICAgICAoV2ViQ29yZTo6U3ViZnJh
bWVMb2FkZXI6OmRvY3VtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlN1YmZyYW1lTG9hZGVyOjpj
b21wbGV0ZVVSTCk6CisgICAgICAgICogbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlN1YnJlc291cmNlTG9hZGVyOjpTdWJyZXNvdXJjZUxvYWRlcik6Cisg
ICAgICAgICogbG9hZGVyL2FwcGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OnNlbGVjdENhY2hlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6c2VsZWN0Q2FjaGVXaXRob3V0TWFu
aWZlc3RVUkwpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZUdyb3VwOjp1cGRh
dGUpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZUdyb3VwOjphYm9ydCk6Cisg
ICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OmRpZFJlY2VpdmVSZXNwb25z
ZSk6CisgICAgICAgIChXZWJDb3JlOjpBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OmRpZEZpbmlzaExv
YWRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZUdyb3VwOjpkaWRGYWls
KToKKyAgICAgICAgKFdlYkNvcmU6OkFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6ZGlkUmVjZWl2ZU1h
bmlmZXN0UmVzcG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRpb25DYWNoZUdyb3Vw
OjpkaWRGaW5pc2hMb2FkaW5nTWFuaWZlc3QpOgorICAgICAgICAoV2ViQ29yZTo6QXBwbGljYXRp
b25DYWNoZUdyb3VwOjpjaGVja0lmTG9hZElzQ29tcGxldGUpOgorICAgICAgICAoV2ViQ29yZTo6
QXBwbGljYXRpb25DYWNoZUdyb3VwOjpwb3N0TGlzdGVuZXJUYXNrKToKKyAgICAgICAgKiBsb2Fk
ZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
QXBwbGljYXRpb25DYWNoZUhvc3Q6OmlzQXBwbGljYXRpb25DYWNoZUJsb2NrZWRGb3JSZXF1ZXN0
KToKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvRE9NQXBwbGljYXRpb25DYWNoZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpET01BcHBsaWNhdGlvbkNhY2hlOjpzY3JpcHRFeGVjdXRpb25Db250
ZXh0KToKKyAgICAgICAgKiBsb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkxlZ2FjeVdlYkFyY2hpdmU6OmNyZWF0ZSk6CisgICAgICAgICog
bG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxBcmNoaXZlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
Ok1IVE1MQXJjaGl2ZTo6Z2VuZXJhdGVNSFRNTERhdGEpOgorICAgICAgICAqIGxvYWRlci9jYWNo
ZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNv
dXJjZUxvYWRlcjo6Y2hlY2tJbnNlY3VyZUNvbnRlbnQpOgorICAgICAgICAoV2ViQ29yZTo6Q2Fj
aGVkUmVzb3VyY2VMb2FkZXI6OnByaW50QWNjZXNzRGVuaWVkTWVzc2FnZSk6CisgICAgICAgICog
bG9hZGVyL2ljb24vSWNvbkNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SWNvbkNv
bnRyb2xsZXI6Omljb25VUkwpOgorICAgICAgICAoV2ViQ29yZTo6SWNvbkNvbnRyb2xsZXI6OnVy
bHNGb3JUeXBlcyk6CisgICAgICAgIChXZWJDb3JlOjpJY29uQ29udHJvbGxlcjo6Y29tbWl0VG9E
YXRhYmFzZSk6CisgICAgICAgIChXZWJDb3JlOjpJY29uQ29udHJvbGxlcjo6c3RhcnRMb2FkZXIp
OgorICAgICAgICAoV2ViQ29yZTo6SWNvbkNvbnRyb2xsZXI6OmNvbnRpbnVlTG9hZFdpdGhEZWNp
c2lvbik6CisgICAgICAgIChXZWJDb3JlOjpJY29uQ29udHJvbGxlcjo6ZGVmYXVsdFVSTCk6Cisg
ICAgICAgICogbG9hZGVyL2ljb24vSWNvbkxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJ
Y29uTG9hZGVyOjpzdGFydExvYWRpbmcpOgorICAgICAgICAqIHBhZ2UvQ2hyb21lLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkNocm9tZTo6d2luZG93U2NyZWVuRGlkQ2hhbmdlKToKKyAgICAgICAg
KFdlYkNvcmU6OkNocm9tZTo6ZGlkUmVjZWl2ZURvY1R5cGUpOgorICAgICAgICAqIHBhZ2UvQ29u
dGV4dE1lbnVDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om9wZW5OZXdXaW5kb3cp
OgorICAgICAgICAoV2ViQ29yZTo6Q29udGV4dE1lbnVDb250cm9sbGVyOjpjb250ZXh0TWVudUl0
ZW1TZWxlY3RlZCk6CisgICAgICAgICogcGFnZS9ET01TZWxlY3Rpb24uY3BwOgorICAgICAgICAo
V2ViQ29yZTo6c2VsZWN0aW9uU2hhZG93QW5jZXN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6RE9N
U2VsZWN0aW9uOjpjb250YWluc05vZGUpOgorICAgICAgICAoV2ViQ29yZTo6RE9NU2VsZWN0aW9u
Ojppc1ZhbGlkRm9yUG9zaXRpb24pOgorICAgICAgICAqIHBhZ2UvRE9NV2luZG93LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkRPTVdpbmRvdzo6aXNDdXJyZW50bHlEaXNwbGF5ZWRJbkZyYW1lKToK
KyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRvdzo6Z2V0U2VsZWN0aW9uKToKKyAgICAgICAgKFdl
YkNvcmU6OkRPTVdpbmRvdzo6Zm9jdXMpOgorICAgICAgICAoV2ViQ29yZTo6RE9NV2luZG93Ojph
bGVydCk6CisgICAgICAgIChXZWJDb3JlOjpET01XaW5kb3c6OmNvbmZpcm0pOgorICAgICAgICAo
V2ViQ29yZTo6RE9NV2luZG93Ojpwcm9tcHQpOgorICAgICAgICAoV2ViQ29yZTo6RE9NV2luZG93
OjpzY3JvbGxYKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRvdzo6c2Nyb2xsWSk6CisgICAg
ICAgIChXZWJDb3JlOjpET01XaW5kb3c6OnNlbGYpOgorICAgICAgICAoV2ViQ29yZTo6RE9NV2lu
ZG93OjpvcGVuZXIpOgorICAgICAgICAoV2ViQ29yZTo6RE9NV2luZG93OjpwYXJlbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6RE9NV2luZG93Ojp0b3ApOgorICAgICAgICAoV2ViQ29yZTo6RE9NV2lu
ZG93OjpnZXRNYXRjaGVkQ1NTUnVsZXMpOgorICAgICAgICAoV2ViQ29yZTo6RE9NV2luZG93Ojpz
ZXRMb2NhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpET01XaW5kb3c6OmNyZWF0ZVdpbmRvdyk6
CisgICAgICAgIChXZWJDb3JlOjpET01XaW5kb3c6Om9wZW4pOgorICAgICAgICAqIHBhZ2UvRE9N
V2luZG93UHJvcGVydHkuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RE9NV2luZG93UHJvcGVydHk6
OkRPTVdpbmRvd1Byb3BlcnR5KToKKyAgICAgICAgKFdlYkNvcmU6OkRPTVdpbmRvd1Byb3BlcnR5
OjpyZWNvbm5lY3RGcmFtZUZyb21QYWdlQ2FjaGUpOgorICAgICAgICAqIHBhZ2UvRHJhZ0NvbnRy
b2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RHJhZ0NvbnRyb2xsZXI6OmRpc3BhdGNoVGV4
dElucHV0RXZlbnRGb3IpOgorICAgICAgICAqIHBhZ2UvRXZlbnRIYW5kbGVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6aGFuZGxlTW91c2VQcmVzc0V2ZW50U2luZ2xlQ2xp
Y2spOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpoYW5kbGVNb3VzZVByZXNzRXZl
bnQpOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpoYW5kbGVNb3VzZURyYWdnZWRF
dmVudCk6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmhpdFRlc3RSZXN1bHRBdFBv
aW50KToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6c2Nyb2xsT3ZlcmZsb3cpOgor
ICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpsb2dpY2FsU2Nyb2xsT3ZlcmZsb3cpOgor
ICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpzY3JvbGxSZWN1cnNpdmVseSk6CisgICAg
ICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmxvZ2ljYWxTY3JvbGxSZWN1cnNpdmVseSk6Cisg
ICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OnVwZGF0ZUN1cnNvcik6CisgICAgICAgIChX
ZWJDb3JlOjpFdmVudEhhbmRsZXI6OmRpc3BhdGNoRHJhZ0V2ZW50KToKKyAgICAgICAgKFdlYkNv
cmU6OkV2ZW50SGFuZGxlcjo6cHJlcGFyZU1vdXNlRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6
RXZlbnRIYW5kbGVyOjpkaXNwYXRjaE1vdXNlRXZlbnQpOgorICAgICAgICAoV2ViQ29yZTo6RXZl
bnRIYW5kbGVyOjpob3ZlclRpbWVyRmlyZWQpOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5k
bGVyOjpoYW5kbGVBY2Nlc3NLZXkpOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRIYW5kbGVyOjpr
ZXlFdmVudCk6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmhhbmRsZVRleHRJbnB1
dEV2ZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6ZGVmYXVsdEFycm93RXZl
bnRIYW5kbGVyKToKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50SGFuZGxlcjo6ZGVmYXVsdFRhYkV2
ZW50SGFuZGxlcik6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OnNlbmRTY3JvbGxF
dmVudCk6CisgICAgICAgIChXZWJDb3JlOjpFdmVudEhhbmRsZXI6OmhhbmRsZVRvdWNoRXZlbnQp
OgorICAgICAgICAqIHBhZ2UvRm9jdXNDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkZvY3VzTmF2aWdhdGlvblNjb3BlOjpmb2N1c05hdmlnYXRpb25TY29wZU93bmVkQnlJRnJhbWUp
OgorICAgICAgICAoV2ViQ29yZTo6Rm9jdXNDb250cm9sbGVyOjpzZXRGb2N1c2VkRnJhbWUpOgor
ICAgICAgICAoV2ViQ29yZTo6Rm9jdXNDb250cm9sbGVyOjpzZXRJbml0aWFsRm9jdXMpOgorICAg
ICAgICAoV2ViQ29yZTo6Rm9jdXNDb250cm9sbGVyOjpmaW5kRm9jdXNDYW5kaWRhdGVJbkNvbnRh
aW5lcik6CisgICAgICAgIChXZWJDb3JlOjpGb2N1c0NvbnRyb2xsZXI6OmFkdmFuY2VGb2N1c0Rp
cmVjdGlvbmFsbHlJbkNvbnRhaW5lcik6CisgICAgICAgIChXZWJDb3JlOjpGb2N1c0NvbnRyb2xs
ZXI6OmFkdmFuY2VGb2N1c0RpcmVjdGlvbmFsbHkpOgorICAgICAgICAqIHBhZ2UvRnJhbWUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RnJhbWU6OmlzVVJMQWxsb3dlZCk6CisgICAgICAgICogcGFn
ZS9GcmFtZS5oOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWU6OmRvY3VtZW50KToKKyAgICAgICAg
KiBwYWdlL0ZyYW1lU25hcHNob3R0aW5nLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNuYXBzaG90
RnJhbWVSZWN0KToKKyAgICAgICAgKiBwYWdlL0ZyYW1lVHJlZS5jcHA6CisgICAgICAgIChwcmlu
dEZyYW1lcyk6CisgICAgICAgICogcGFnZS9GcmFtZVZpZXcuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RnJhbWVWaWV3OjpzZXRGcmFtZVJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3
OjphZGp1c3RWaWV3U2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OmxheW91dCk6
CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OnNjcm9sbFRvRnJhZ21lbnQpOgorICAgICAg
ICAoV2ViQ29yZTo6RnJhbWVWaWV3OjpzY3JvbGxUb0FuY2hvcik6CisgICAgICAgIChXZWJDb3Jl
OjpGcmFtZVZpZXc6Om1haW50YWluU2Nyb2xsUG9zaXRpb25BdEFuY2hvcik6CisgICAgICAgIChX
ZWJDb3JlOjpGcmFtZVZpZXc6OnNjcm9sbEVsZW1lbnRUb1JlY3QpOgorICAgICAgICAoV2ViQ29y
ZTo6RnJhbWVWaWV3OjpsYXlvdXRUaW1lckZpcmVkKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1l
Vmlldzo6c2NoZWR1bGVSZWxheW91dCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OnVu
c2NoZWR1bGVSZWxheW91dCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OnBlcmZvcm1Q
b3N0TGF5b3V0VGFza3MpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3OjpzZW5kUmVzaXpl
RXZlbnRJZk5lZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OnVwZGF0ZU92ZXJm
bG93U3RhdHVzKToKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6c2V0UGFnaW5hdGlvbik6
CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OmRvY3VtZW50QmFja2dyb3VuZENvbG9yKToK
KyAgICAgICAgKFdlYkNvcmU6OkZyYW1lVmlldzo6c3RhcnRMYXlvdXRBdE1haW5GcmFtZVZpZXdJ
Zk5lZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OnVwZGF0ZUNvbnRyb2xUaW50
cyk6CisgICAgICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OmRpZFBhaW50Q29udGVudHMpOgorICAg
ICAgICAoV2ViQ29yZTo6RnJhbWVWaWV3OjpwYWludENvbnRlbnRzKToKKyAgICAgICAgKFdlYkNv
cmU6OkZyYW1lVmlldzo6cGFpbnRPdmVyaGFuZ0FyZWFzKToKKyAgICAgICAgKFdlYkNvcmU6OkZy
YW1lVmlldzo6dXBkYXRlTGF5b3V0QW5kU3R5bGVJZk5lZWRlZFJlY3Vyc2l2ZSk6CisgICAgICAg
IChXZWJDb3JlOjpGcmFtZVZpZXc6OnF1YWxpZmllc0FzVmlzdWFsbHlOb25FbXB0eSk6CisgICAg
ICAgIChXZWJDb3JlOjpGcmFtZVZpZXc6OnNldFRyYWNrc1JlcGFpbnRzKToKKyAgICAgICAgKFdl
YkNvcmU6OkZyYW1lVmlldzo6dHJhY2tlZFJlcGFpbnRSZWN0c0FzVGV4dCk6CisgICAgICAgIChX
ZWJDb3JlOjpGcmFtZVZpZXc6OmF4T2JqZWN0Q2FjaGUpOgorICAgICAgICAoV2ViQ29yZTo6RnJh
bWVWaWV3OjpmaXJlTGF5b3V0UmVsYXRlZE1pbGVzdG9uZXNJZk5lZWRlZCk6CisgICAgICAgIChX
ZWJDb3JlOjpGcmFtZVZpZXc6OnNldFZpc3VhbFVwZGF0ZXNBbGxvd2VkQnlDbGllbnQpOgorICAg
ICAgICAqIHBhZ2UvSGlzdG9yeS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIaXN0b3J5Ojp1cmxG
b3JTdGF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpIaXN0b3J5OjpzdGF0ZU9iamVjdEFkZGVkKToK
KyAgICAgICAgKiBwYWdlL0xvY2F0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkxvY2F0aW9u
Ojp1cmwpOgorICAgICAgICAoV2ViQ29yZTo6TG9jYXRpb246OmFuY2VzdG9yT3JpZ2lucyk6Cisg
ICAgICAgIChXZWJDb3JlOjpMb2NhdGlvbjo6c2V0UHJvdG9jb2wpOgorICAgICAgICAoV2ViQ29y
ZTo6TG9jYXRpb246OnNldEhvc3QpOgorICAgICAgICAoV2ViQ29yZTo6TG9jYXRpb246OnNldEhv
c3RuYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkxvY2F0aW9uOjpzZXRQb3J0KToKKyAgICAgICAg
KFdlYkNvcmU6OkxvY2F0aW9uOjpzZXRQYXRobmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpMb2Nh
dGlvbjo6c2V0U2VhcmNoKToKKyAgICAgICAgKFdlYkNvcmU6OkxvY2F0aW9uOjpzZXRIYXNoKToK
KyAgICAgICAgKFdlYkNvcmU6OkxvY2F0aW9uOjpyZXBsYWNlKToKKyAgICAgICAgKFdlYkNvcmU6
OkxvY2F0aW9uOjpyZWxvYWQpOgorICAgICAgICAoV2ViQ29yZTo6TG9jYXRpb246OnNldExvY2F0
aW9uKToKKyAgICAgICAgKiBwYWdlL05hdmlnYXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpO
YXZpZ2F0b3I6OnVzZXJBZ2VudCk6CisgICAgICAgIChXZWJDb3JlOjpOYXZpZ2F0b3I6OmNvb2tp
ZUVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6TmF2aWdhdG9yOjpqYXZhRW5hYmxlZCk6Cisg
ICAgICAgICogcGFnZS9QYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OnJlbmRlclRy
ZWVTaXplKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2U6OnZpZXdwb3J0QXJndW1lbnRzKToKKyAg
ICAgICAgKFdlYkNvcmU6OlBhZ2U6OnNldFZpZXdNb2RlKToKKyAgICAgICAgKFdlYkNvcmU6OlBh
Z2U6OnVwZGF0ZVN0eWxlRm9yQWxsUGFnZXNBZnRlckdsb2JhbENoYW5nZUluRW52aXJvbm1lbnQp
OgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6dGFrZUFueU1lZGlhQ2FuU3RhcnRMaXN0ZW5lcik6
CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjp1bm1hcmtBbGxUZXh0TWF0Y2hlcyk6CisgICAgICAg
IChXZWJDb3JlOjpQYWdlOjpzZXRNZWRpYVZvbHVtZSk6CisgICAgICAgIChXZWJDb3JlOjpQYWdl
OjpzZXRQYWdlU2NhbGVGYWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6c3VzcGVuZFNj
cmlwdGVkQW5pbWF0aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjpyZXN1bWVTY3JpcHRl
ZEFuaW1hdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6c2V0SXNWaXN1YWxseUlkbGVJ
bnRlcm5hbCk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjp1c2VyU3R5bGVTaGVldExvY2F0aW9u
Q2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlOjppbnZhbGlkYXRlU3R5bGVzRm9yQWxs
TGlua3MpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6aW52YWxpZGF0ZVN0eWxlc0Zvckxpbmsp
OgorICAgICAgICAoV2ViQ29yZTo6UGFnZTo6c2V0TWluaW11bVRpbWVySW50ZXJ2YWwpOgorICAg
ICAgICAoV2ViQ29yZTo6UGFnZTo6c2V0VGltZXJUaHJvdHRsaW5nRW5hYmxlZCk6CisgICAgICAg
IChXZWJDb3JlOjpQYWdlOjpkbnNQcmVmZXRjaGluZ1N0YXRlQ2hhbmdlZCk6CisgICAgICAgIChX
ZWJDb3JlOjpQYWdlOjpzdG9yYWdlQmxvY2tpbmdTdGF0ZUNoYW5nZWQpOgorICAgICAgICAoV2Vi
Q29yZTo6UGFnZTo6Y2FwdGlvblByZWZlcmVuY2VzQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3Jl
OjpQYWdlOjpzZXRTZXNzaW9uSUQpOgorICAgICAgICAqIHBhZ2UvUGFnZURlYnVnZ2FibGUuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UGFnZURlYnVnZ2FibGU6Om5hbWUpOgorICAgICAgICAoV2Vi
Q29yZTo6UGFnZURlYnVnZ2FibGU6OnVybCk6CisgICAgICAgICogcGFnZS9QYWdlR3JvdXBMb2Fk
RGVmZXJyZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGFnZUdyb3VwTG9hZERlZmVycmVyOjpQ
YWdlR3JvdXBMb2FkRGVmZXJyZXIpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZUdyb3VwTG9hZERl
ZmVycmVyOjp+UGFnZUdyb3VwTG9hZERlZmVycmVyKToKKyAgICAgICAgKiBwYWdlL1BhZ2VTZXJp
YWxpemVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNlcmlhbGl6ZXJNYXJrdXBBY2N1bXVsYXRv
cjo6YXBwZW5kQ3VzdG9tQXR0cmlidXRlcyk6CisgICAgICAgICogcGFnZS9QZXJmb3JtYW5jZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpQZXJmb3JtYW5jZTo6c2NyaXB0RXhlY3V0aW9uQ29udGV4
dCk6CisgICAgICAgIChXZWJDb3JlOjpQZXJmb3JtYW5jZTo6bm93KToKKyAgICAgICAgKiBwYWdl
L1ByaW50Q29udGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQcmludENvbnRleHQ6OmNvbXB1
dGVQYWdlUmVjdHMpOgorICAgICAgICAoV2ViQ29yZTo6UHJpbnRDb250ZXh0Ojpjb21wdXRlUGFn
ZVJlY3RzV2l0aFBhZ2VTaXplSW50ZXJuYWwpOgorICAgICAgICAoV2ViQ29yZTo6UHJpbnRDb250
ZXh0Ojpjb21wdXRlQXV0b21hdGljU2NhbGVGYWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6UHJp
bnRDb250ZXh0Ojppc1BhZ2VCb3hWaXNpYmxlKToKKyAgICAgICAgKFdlYkNvcmU6OlByaW50Q29u
dGV4dDo6cGFnZVNpemVBbmRNYXJnaW5zSW5QaXhlbHMpOgorICAgICAgICAoV2ViQ29yZTo6UHJp
bnRDb250ZXh0OjpudW1iZXJPZlBhZ2VzKToKKyAgICAgICAgKFdlYkNvcmU6OlByaW50Q29udGV4
dDo6c3Bvb2xBbGxQYWdlc1dpdGhCb3VuZGFyaWVzKToKKyAgICAgICAgKiBwYWdlL1NldHRpbmdz
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnNldEltYWdlTG9hZGluZ1NldHRpbmdzKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNldHRpbmdzOjpzZXRUZXh0QXV0b3NpemluZ0ZvbnRTY2FsZUZhY3Rvcik6
CisgICAgICAgICogcGFnZS9Vc2VyQ29udGVudENvbnRyb2xsZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6VXNlckNvbnRlbnRDb250cm9sbGVyOjppbnZhbGlkYXRlSW5qZWN0ZWRTdHlsZVNoZWV0
Q2FjaGVJbkFsbEZyYW1lcyk6CisgICAgICAgICogcGFnZS9hbmltYXRpb24vQW5pbWF0aW9uQ29u
dHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBbmltYXRpb25Db250cm9sbGVyUHJpdmF0
ZTo6dXBkYXRlQW5pbWF0aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpBbmltYXRpb25Db250cm9s
bGVyUHJpdmF0ZTo6ZmlyZUV2ZW50c0FuZFVwZGF0ZVN0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6
OkFuaW1hdGlvbkNvbnRyb2xsZXJQcml2YXRlOjphbmltYXRpb25GcmFtZUNhbGxiYWNrRmlyZWQp
OgorICAgICAgICAqIHBhZ2UvaW9zL0V2ZW50SGFuZGxlcklPUy5tbToKKyAgICAgICAgKFdlYkNv
cmU6OkV2ZW50SGFuZGxlcjo6bW91c2VNb3ZlZCk6CisgICAgICAgICogcGFnZS9pb3MvRnJhbWVJ
T1MubW06CisgICAgICAgIChXZWJDb3JlOjpGcmFtZTo6ZGlzcGF0Y2hQYWdlSGlkZUV2ZW50QmVm
b3JlUGF1c2UpOgorICAgICAgICAoV2ViQ29yZTo6RnJhbWU6OmRpc3BhdGNoUGFnZVNob3dFdmVu
dEJlZm9yZVJlc3VtZSk6CisgICAgICAgICogcGFnZS9zY3JvbGxpbmcvQXN5bmNTY3JvbGxpbmdD
b29yZGluYXRvci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpBc3luY1Njcm9sbGluZ0Nvb3JkaW5h
dG9yOjpyZXF1ZXN0U2Nyb2xsUG9zaXRpb25VcGRhdGUpOgorICAgICAgICAqIHBhZ2Uvc2Nyb2xs
aW5nL1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNjcm9sbGlu
Z0Nvb3JkaW5hdG9yOjpjb21wdXRlQ3VycmVudFdoZWVsRXZlbnRIYW5kbGVyQ291bnQpOgorICAg
ICAgICAoV2ViQ29yZTo6U2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnN5bmNocm9ub3VzU2Nyb2xsaW5n
UmVhc29ucyk6CisgICAgICAgICogcGFnZS93aW4vRnJhbWVXaW4uY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6aW1hZ2VGcm9tU2VsZWN0aW9uKToKKyAgICAgICAgKiBwbGF0Zm9ybS9EcmFnSW1hZ2Uu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U2NvcGVkTm9kZURyYWdFbmFibGVyOjpTY29wZWROb2Rl
RHJhZ0VuYWJsZXIpOgorICAgICAgICAoV2ViQ29yZTo6Y3JlYXRlRHJhZ0ltYWdlRm9yUmFuZ2Up
OgorICAgICAgICAqIHBsdWdpbnMvRE9NTWltZVR5cGVBcnJheS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpET01NaW1lVHlwZUFycmF5OjpnZXRQbHVnaW5EYXRhKToKKyAgICAgICAgKiBwbHVnaW5z
L0RPTVBsdWdpbkFycmF5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTVBsdWdpbkFycmF5Ojpw
bHVnaW5EYXRhKToKKyAgICAgICAgKiBwbHVnaW5zL1BsdWdpblZpZXcuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6UGx1Z2luVmlldzo6c3RhcnRPckFkZFRvVW5zdGFydGVkTGlzdCk6CisgICAgICAg
IChXZWJDb3JlOjpQbHVnaW5WaWV3OjpzdGFydCk6CisgICAgICAgIChXZWJDb3JlOjpQbHVnaW5W
aWV3Ojp+UGx1Z2luVmlldyk6CisgICAgICAgIChXZWJDb3JlOjpQbHVnaW5WaWV3Ojpsb2FkKToK
KyAgICAgICAgKFdlYkNvcmU6OlBsdWdpblZpZXc6OmdldFVSTE5vdGlmeSk6CisgICAgICAgIChX
ZWJDb3JlOjpQbHVnaW5WaWV3OjpnZXRVUkwpOgorICAgICAgICAoV2ViQ29yZTo6UGx1Z2luVmll
dzo6Zm9jdXNQbHVnaW5FbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlBsdWdpblZpZXc6Omhh
bmRsZVBvc3QpOgorICAgICAgICAoV2ViQ29yZTo6UGx1Z2luVmlldzo6Z2V0VmFsdWVGb3JVUkwp
OgorICAgICAgICAoV2ViQ29yZTo6UGx1Z2luVmlldzo6c2V0VmFsdWVGb3JVUkwpOgorICAgICAg
ICAqIHBsdWdpbnMvbWFjL1BsdWdpblZpZXdNYWMubW06CisgICAgICAgIChXZWJDb3JlOjpQbHVn
aW5WaWV3OjpoYW5kbGVNb3VzZUV2ZW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTWVu
dUxpc3QuY3BwOgorICAgICAgICAoUmVuZGVyTWVudUxpc3Q6OnZhbHVlQ2hhbmdlZCk6CisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlclRyZWVBc1RleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
ZXh0ZXJuYWxSZXByZXNlbnRhdGlvbik6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdSb290LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jvb3Q6OmlzRW1iZWRkZWRU
aHJvdWdoRnJhbWVDb250YWluaW5nU1ZHRG9jdW1lbnQpOgorICAgICAgICAqIHJlcGxheS9SZXBs
YXlDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlcGxheUNvbnRyb2xsZXI6OnVu
bG9hZFNlZ21lbnQpOgorICAgICAgICAoV2ViQ29yZTo6UmVwbGF5Q29udHJvbGxlcjo6ZnJhbWVO
YXZpZ2F0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6UmVwbGF5Q29udHJvbGxlcjo6ZnJhbWVEZXRh
Y2hlZCk6CisgICAgICAgICogcmVwbGF5L1JlcGxheUlucHV0Q3JlYXRpb25NZXRob2RzLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OkluaXRpYWxOYXZpZ2F0aW9uOjpjcmVhdGVGcm9tUGFnZSk6Cisg
ICAgICAgICogc3RvcmFnZS9TdG9yYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0b3JhZ2U6
OmlzRGlzYWJsZWRCeVByaXZhdGVCcm93c2luZyk6CisgICAgICAgICogc3RvcmFnZS9TdG9yYWdl
RXZlbnREaXNwYXRjaGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlN0b3JhZ2VFdmVudERpc3Bh
dGNoZXI6OmRpc3BhdGNoU2Vzc2lvblN0b3JhZ2VFdmVudHMpOgorICAgICAgICAoV2ViQ29yZTo6
U3RvcmFnZUV2ZW50RGlzcGF0Y2hlcjo6ZGlzcGF0Y2hMb2NhbFN0b3JhZ2VFdmVudHMpOgorICAg
ICAgICAqIHRlc3RpbmcvSW50ZXJuYWxzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFs
czo6bnVtYmVyT2ZBY3RpdmVBbmltYXRpb25zKToKKyAgICAgICAgKFdlYkNvcmU6OkludGVybmFs
czo6b3BlbkR1bW15SW5zcGVjdG9yRnJvbnRlbmQpOgorCiAyMDE0LTA0LTIxICBKZXIgTm9ibGUg
IDxqZXIubm9ibGVAYXBwbGUuY29tPgogCiAgICAgICAgIFtNU0VdW01hY10gQVZTYW1wbGVCdWZm
ZXJEaXNwbGF5TGF5ZXIgYW5kIEF1ZGlvUmVuZGVyZXIgaXMgb3ZlcnJldGFpbmVkLgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9iYXR0ZXJ5L0JhdHRlcnlNYW5hZ2VyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvYmF0dGVyeS9CYXR0ZXJ5TWFuYWdlci5jcHAKaW5kZXgg
NDMxZDhmZC4uOWUzZmJhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9iYXR0
ZXJ5L0JhdHRlcnlNYW5hZ2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2JhdHRl
cnkvQmF0dGVyeU1hbmFnZXIuY3BwCkBAIC00NCw3ICs0NCw3IEBAIEJhdHRlcnlNYW5hZ2VyOjp+
QmF0dGVyeU1hbmFnZXIoKQogfQogCiBCYXR0ZXJ5TWFuYWdlcjo6QmF0dGVyeU1hbmFnZXIoTmF2
aWdhdG9yKiBuYXZpZ2F0b3IpCi0gICAgOiBBY3RpdmVET01PYmplY3QobmF2aWdhdG9yLT5mcmFt
ZSgpLT5kb2N1bWVudCgpKQorICAgIDogQWN0aXZlRE9NT2JqZWN0KCZuYXZpZ2F0b3ItPmZyYW1l
KCktPmRvY3VtZW50KCkpCiAgICAgLCBtX2JhdHRlcnlDb250cm9sbGVyKEJhdHRlcnlDb250cm9s
bGVyOjpmcm9tKG5hdmlnYXRvci0+ZnJhbWUoKS0+cGFnZSgpKSkKICAgICAsIG1fYmF0dGVyeVN0
YXR1cygwKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9nZW9sb2NhdGlv
bi9OYXZpZ2F0b3JHZW9sb2NhdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xv
Y2F0aW9uL05hdmlnYXRvckdlb2xvY2F0aW9uLmNwcAppbmRleCAzNDBlNjU4Li5lN2E2NjgzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL05hdmlnYXRvckdl
b2xvY2F0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL2dlb2xvY2F0aW9uL05h
dmlnYXRvckdlb2xvY2F0aW9uLmNwcApAQCAtNzMsNyArNzMsNyBAQCBHZW9sb2NhdGlvbiogTmF2
aWdhdG9yR2VvbG9jYXRpb246Omdlb2xvY2F0aW9uKE5hdmlnYXRvciogbmF2aWdhdG9yKQogR2Vv
bG9jYXRpb24qIE5hdmlnYXRvckdlb2xvY2F0aW9uOjpnZW9sb2NhdGlvbigpIGNvbnN0CiB7CiAg
ICAgaWYgKCFtX2dlb2xvY2F0aW9uICYmIGZyYW1lKCkpCi0gICAgICAgIG1fZ2VvbG9jYXRpb24g
PSBHZW9sb2NhdGlvbjo6Y3JlYXRlKGZyYW1lKCktPmRvY3VtZW50KCkpOworICAgICAgICBtX2dl
b2xvY2F0aW9uID0gR2VvbG9jYXRpb246OmNyZWF0ZSgmZnJhbWUoKS0+ZG9jdW1lbnQoKSk7CiAg
ICAgcmV0dXJuIG1fZ2VvbG9jYXRpb24uZ2V0KCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL01vZHVsZXMvbWVkaWFzdHJlYW0vTmF2aWdhdG9yTWVkaWFTdHJlYW0uY3BwIGIvU291
cmNlL1dlYkNvcmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9OYXZpZ2F0b3JNZWRpYVN0cmVhbS5jcHAK
aW5kZXggNmUwNmI4OS4uNmFjODU1ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvTW9kdWxl
cy9tZWRpYXN0cmVhbS9OYXZpZ2F0b3JNZWRpYVN0cmVhbS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvTW9kdWxlcy9tZWRpYXN0cmVhbS9OYXZpZ2F0b3JNZWRpYVN0cmVhbS5jcHAKQEAgLTU3LDcg
KzU3LDcgQEAgdm9pZCBOYXZpZ2F0b3JNZWRpYVN0cmVhbTo6d2Via2l0R2V0VXNlck1lZGlhKE5h
dmlnYXRvciogbmF2aWdhdG9yLCBjb25zdCBEaWN0aW8KICAgICAgICAgcmV0dXJuOwogICAgIH0K
IAotICAgIFJlZlB0cjxVc2VyTWVkaWFSZXF1ZXN0PiByZXF1ZXN0ID0gVXNlck1lZGlhUmVxdWVz
dDo6Y3JlYXRlKG5hdmlnYXRvci0+ZnJhbWUoKS0+ZG9jdW1lbnQoKSwgdXNlck1lZGlhLCBvcHRp
b25zLCBzdWNjZXNzQ2FsbGJhY2ssIGVycm9yQ2FsbGJhY2ssIGVjKTsKKyAgICBSZWZQdHI8VXNl
ck1lZGlhUmVxdWVzdD4gcmVxdWVzdCA9IFVzZXJNZWRpYVJlcXVlc3Q6OmNyZWF0ZSgmbmF2aWdh
dG9yLT5mcmFtZSgpLT5kb2N1bWVudCgpLCB1c2VyTWVkaWEsIG9wdGlvbnMsIHN1Y2Nlc3NDYWxs
YmFjaywgZXJyb3JDYWxsYmFjaywgZWMpOwogICAgIGlmICghcmVxdWVzdCkgewogICAgICAgICBl
YyA9IE5PVF9TVVBQT1JURURfRVJSOwogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9Nb2R1bGVzL25hdmlnYXRvcmNvbnRlbnR1dGlscy9OYXZpZ2F0b3JDb250ZW50
VXRpbHMuY3BwIGIvU291cmNlL1dlYkNvcmUvTW9kdWxlcy9uYXZpZ2F0b3Jjb250ZW50dXRpbHMv
TmF2aWdhdG9yQ29udGVudFV0aWxzLmNwcAppbmRleCBkZDg4YTU0Li4zZGQzN2NjIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL25hdmlnYXRvcmNvbnRlbnR1dGlscy9OYXZpZ2F0
b3JDb250ZW50VXRpbHMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvbmF2aWdhdG9y
Y29udGVudHV0aWxzL05hdmlnYXRvckNvbnRlbnRVdGlscy5jcHAKQEAgLTEzNiw3ICsxMzYsNyBA
QCB2b2lkIE5hdmlnYXRvckNvbnRlbnRVdGlsczo6cmVnaXN0ZXJQcm90b2NvbEhhbmRsZXIoTmF2
aWdhdG9yKiBuYXZpZ2F0b3IsIGNvbnN0CiAgICAgaWYgKCFuYXZpZ2F0b3ItPmZyYW1lKCkpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIFVSTCBiYXNlVVJMID0gbmF2aWdhdG9yLT5mcmFtZSgpLT5k
b2N1bWVudCgpLT5iYXNlVVJMKCk7CisgICAgVVJMIGJhc2VVUkwgPSBuYXZpZ2F0b3ItPmZyYW1l
KCktPmRvY3VtZW50KCkuYmFzZVVSTCgpOwogCiAgICAgaWYgKCF2ZXJpZnlDdXN0b21IYW5kbGVy
VVJMKGJhc2VVUkwsIHVybCwgZWMpKQogICAgICAgICByZXR1cm47CkBAIC0xNzQsNyArMTc0LDcg
QEAgU3RyaW5nIE5hdmlnYXRvckNvbnRlbnRVdGlsczo6aXNQcm90b2NvbEhhbmRsZXJSZWdpc3Rl
cmVkKE5hdmlnYXRvciogbmF2aWdhdG9yLAogICAgIGlmICghbmF2aWdhdG9yLT5mcmFtZSgpKQog
ICAgICAgICByZXR1cm4gZGVjbGluZWQ7CiAKLSAgICBVUkwgYmFzZVVSTCA9IG5hdmlnYXRvci0+
ZnJhbWUoKS0+ZG9jdW1lbnQoKS0+YmFzZVVSTCgpOworICAgIFVSTCBiYXNlVVJMID0gbmF2aWdh
dG9yLT5mcmFtZSgpLT5kb2N1bWVudCgpLmJhc2VVUkwoKTsKIAogICAgIGlmICghdmVyaWZ5Q3Vz
dG9tSGFuZGxlclVSTChiYXNlVVJMLCB1cmwsIGVjKSkKICAgICAgICAgcmV0dXJuIGRlY2xpbmVk
OwpAQCAtMTkwLDcgKzE5MCw3IEBAIHZvaWQgTmF2aWdhdG9yQ29udGVudFV0aWxzOjp1bnJlZ2lz
dGVyUHJvdG9jb2xIYW5kbGVyKE5hdmlnYXRvciogbmF2aWdhdG9yLCBjb25zCiAgICAgaWYgKCFu
YXZpZ2F0b3ItPmZyYW1lKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIFVSTCBiYXNlVVJMID0g
bmF2aWdhdG9yLT5mcmFtZSgpLT5kb2N1bWVudCgpLT5iYXNlVVJMKCk7CisgICAgVVJMIGJhc2VV
UkwgPSBuYXZpZ2F0b3ItPmZyYW1lKCktPmRvY3VtZW50KCkuYmFzZVVSTCgpOwogCiAgICAgaWYg
KCF2ZXJpZnlDdXN0b21IYW5kbGVyVVJMKGJhc2VVUkwsIHVybCwgZWMpKQogICAgICAgICByZXR1
cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Nb2R1bGVzL3F1b3RhL0RPTVdpbmRvd1F1
b3RhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMvcXVvdGEvRE9NV2luZG93UXVvdGEuY3Bw
CmluZGV4IDIyNzBhMDQuLjc4MzQzZmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL01vZHVs
ZXMvcXVvdGEvRE9NV2luZG93UXVvdGEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL01vZHVsZXMv
cXVvdGEvRE9NV2luZG93UXVvdGEuY3BwCkBAIC03NSw3ICs3NSw3IEBAIFN0b3JhZ2VJbmZvKiBE
T01XaW5kb3dRdW90YTo6d2Via2l0U3RvcmFnZUluZm8oRE9NV2luZG93KiB3aW5kb3cpCiBTdG9y
YWdlSW5mbyogRE9NV2luZG93UXVvdGE6OndlYmtpdFN0b3JhZ2VJbmZvKCkgY29uc3QKIHsKICAg
ICBpZiAoIW1fc3RvcmFnZUluZm8gJiYgZnJhbWUoKSkgewotICAgICAgICBmcmFtZSgpLT5kb2N1
bWVudCgpLT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpKUywgTWVzc2FnZUxldmVs
OjpXYXJuaW5nLCBBU0NJSUxpdGVyYWwoIndpbmRvdy53ZWJraXRTdG9yYWdlSW5mbyBpcyBkZXBy
ZWNhdGVkLiBVc2UgbmF2aWdhdG9yLndlYmtpdFRlbXBvcmFyeVN0b3JhZ2Ugb3IgbmF2aWdhdG9y
LndlYmtpdFBlcnNpc3RlbnRTdG9yYWdlIGluc3RlYWQuIikpOworICAgICAgICBmcmFtZSgpLT5k
b2N1bWVudCgpLmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdlTGV2
ZWw6Oldhcm5pbmcsIEFTQ0lJTGl0ZXJhbCgid2luZG93LndlYmtpdFN0b3JhZ2VJbmZvIGlzIGRl
cHJlY2F0ZWQuIFVzZSBuYXZpZ2F0b3Iud2Via2l0VGVtcG9yYXJ5U3RvcmFnZSBvciBuYXZpZ2F0
b3Iud2Via2l0UGVyc2lzdGVudFN0b3JhZ2UgaW5zdGVhZC4iKSk7CiAgICAgICAgIG1fc3RvcmFn
ZUluZm8gPSBTdG9yYWdlSW5mbzo6Y3JlYXRlKCk7CiAgICAgfQogICAgIHJldHVybiBtX3N0b3Jh
Z2VJbmZvLmdldCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
WE9iamVjdENhY2hlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQVhPYmplY3RD
YWNoZS5jcHAKaW5kZXggNGE0OTYyNC4uNTIxY2I3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYWNjZXNzaWJpbGl0eS9BWE9iamVjdENhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9h
Y2Nlc3NpYmlsaXR5L0FYT2JqZWN0Q2FjaGUuY3BwCkBAIC0xNzIsMTIgKzE3MiwxMiBAQCBBY2Nl
c3NpYmlsaXR5T2JqZWN0KiBBWE9iamVjdENhY2hlOjpmb2N1c2VkVUlFbGVtZW50Rm9yUGFnZShj
b25zdCBQYWdlKiBwYWdlKQogICAgICAgICByZXR1cm4gMDsKIAogICAgIC8vIGdldCB0aGUgZm9j
dXNlZCBub2RlIGluIHRoZSBwYWdlCi0gICAgRG9jdW1lbnQqIGZvY3VzZWREb2N1bWVudCA9IHBh
Z2UtPmZvY3VzQ29udHJvbGxlcigpLmZvY3VzZWRPck1haW5GcmFtZSgpLmRvY3VtZW50KCk7Ci0g
ICAgRWxlbWVudCogZm9jdXNlZEVsZW1lbnQgPSBmb2N1c2VkRG9jdW1lbnQtPmZvY3VzZWRFbGVt
ZW50KCk7CisgICAgRG9jdW1lbnQmIGZvY3VzZWREb2N1bWVudCA9IHBhZ2UtPmZvY3VzQ29udHJv
bGxlcigpLmZvY3VzZWRPck1haW5GcmFtZSgpLmRvY3VtZW50KCk7CisgICAgRWxlbWVudCogZm9j
dXNlZEVsZW1lbnQgPSBmb2N1c2VkRG9jdW1lbnQuZm9jdXNlZEVsZW1lbnQoKTsKICAgICBpZiAo
Zm9jdXNlZEVsZW1lbnQgJiYgaXNIVE1MQXJlYUVsZW1lbnQoZm9jdXNlZEVsZW1lbnQpKQogICAg
ICAgICByZXR1cm4gZm9jdXNlZEltYWdlTWFwVUlFbGVtZW50KHRvSFRNTEFyZWFFbGVtZW50KGZv
Y3VzZWRFbGVtZW50KSk7CiAKLSAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBvYmogPSBmb2N1c2Vk
RG9jdW1lbnQtPmF4T2JqZWN0Q2FjaGUoKS0+Z2V0T3JDcmVhdGUoZm9jdXNlZEVsZW1lbnQgPyBz
dGF0aWNfY2FzdDxOb2RlKj4oZm9jdXNlZEVsZW1lbnQpIDogZm9jdXNlZERvY3VtZW50KTsKKyAg
ICBBY2Nlc3NpYmlsaXR5T2JqZWN0KiBvYmogPSBmb2N1c2VkRG9jdW1lbnQuYXhPYmplY3RDYWNo
ZSgpLT5nZXRPckNyZWF0ZShmb2N1c2VkRWxlbWVudCA/IHN0YXRpY19jYXN0PE5vZGUqPihmb2N1
c2VkRWxlbWVudCkgOiAmZm9jdXNlZERvY3VtZW50KTsKICAgICBpZiAoIW9iaikKICAgICAgICAg
cmV0dXJuIDA7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNj
ZXNzaWJpbGl0eU9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vz
c2liaWxpdHlPYmplY3QuY3BwCmluZGV4IDYxZjc0YzkuLmY1MzYxNmQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eU9iamVjdC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5T2JqZWN0LmNwcApAQCAt
NDA5LDExICs0MDksMTIgQEAgc3RhdGljIHZvaWQgYXBwZW5kQWNjZXNzaWJpbGl0eU9iamVjdChB
Y2Nlc3NpYmlsaXR5T2JqZWN0KiBvYmplY3QsIEFjY2Vzc2liaWxpdHkKICAgICAgICAgaWYgKCF3
aWRnZXQgfHwgIXdpZGdldC0+aXNGcmFtZVZpZXcoKSkKICAgICAgICAgICAgIHJldHVybjsKICAg
ICAgICAgCi0gICAgICAgIERvY3VtZW50KiBkb2MgPSB0b0ZyYW1lVmlldyh3aWRnZXQpLT5mcmFt
ZSgpLmRvY3VtZW50KCk7Ci0gICAgICAgIGlmICghZG9jIHx8ICFkb2MtPmhhc0xpdmluZ1JlbmRl
clRyZWUoKSkKKyAgICAgICAgRG9jdW1lbnQmIGRvYyA9IHRvRnJhbWVWaWV3KHdpZGdldCktPmZy
YW1lKCkuZG9jdW1lbnQoKTsKKyAgICAgICAgQVNTRVJUKGRvYyk7CisgICAgICAgIGlmICghZG9j
Lmhhc0xpdmluZ1JlbmRlclRyZWUoKSkKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgCi0g
ICAgICAgIG9iamVjdCA9IG9iamVjdC0+YXhPYmplY3RDYWNoZSgpLT5nZXRPckNyZWF0ZShkb2Mp
OworICAgICAgICBvYmplY3QgPSBvYmplY3QtPmF4T2JqZWN0Q2FjaGUoKS0+Z2V0T3JDcmVhdGUo
JmRvYyk7CiAgICAgfQogCiAgICAgaWYgKG9iamVjdCkKQEAgLTU5Niw3ICs1OTcsNyBAQCBQYXNz
UmVmUHRyPFJhbmdlPiBBY2Nlc3NpYmlsaXR5T2JqZWN0OjpzZWxlY3Rpb25SYW5nZSgpIGNvbnN0
CiAgICAgaWYgKCFzZWxlY3Rpb24uaXNOb25lKCkpCiAgICAgICAgIHJldHVybiBzZWxlY3Rpb24u
Zmlyc3RSYW5nZSgpOwogICAgIAotICAgIHJldHVybiBSYW5nZTo6Y3JlYXRlKCpmcmFtZS0+ZG9j
dW1lbnQoKSk7CisgICAgcmV0dXJuIFJhbmdlOjpjcmVhdGUoZnJhbWUtPmRvY3VtZW50KCkpOwog
fQogCiBTdHJpbmcgQWNjZXNzaWJpbGl0eU9iamVjdDo6c2VsZWN0VGV4dChBY2Nlc3NpYmlsaXR5
U2VsZWN0VGV4dENyaXRlcmlhKiBjcml0ZXJpYSkKQEAgLTE0MDIsNyArMTQwMyw3IEBAIERvY3Vt
ZW50KiBBY2Nlc3NpYmlsaXR5T2JqZWN0Ojpkb2N1bWVudCgpIGNvbnN0CiAgICAgaWYgKCFmcmFt
ZVZpZXcpCiAgICAgICAgIHJldHVybiAwOwogICAgIAotICAgIHJldHVybiBmcmFtZVZpZXctPmZy
YW1lKCkuZG9jdW1lbnQoKTsKKyAgICByZXR1cm4gJmZyYW1lVmlldy0+ZnJhbWUoKS5kb2N1bWVu
dCgpOwogfQogICAgIAogUGFnZSogQWNjZXNzaWJpbGl0eU9iamVjdDo6cGFnZSgpIGNvbnN0CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5k
ZXJPYmplY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5
UmVuZGVyT2JqZWN0LmNwcAppbmRleCA3NWE5MWM0Li4zMWM5NWQ1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9hY2Nlc3NpYmlsaXR5L0FjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3QuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVJlbmRlck9iamVj
dC5jcHAKQEAgLTY4Myw3ICs2ODMsNyBAQCBTdHJpbmcgQWNjZXNzaWJpbGl0eVJlbmRlck9iamVj
dDo6dGV4dFVuZGVyRWxlbWVudChBY2Nlc3NpYmlsaXR5VGV4dFVuZGVyRWxlbWVudAogICAgICAg
ICBpZiAobm9kZURvY3VtZW50ICYmIHRleHRSYW5nZSkgewogICAgICAgICAgICAgaWYgKEZyYW1l
KiBmcmFtZSA9IG5vZGVEb2N1bWVudC0+ZnJhbWUoKSkgewogICAgICAgICAgICAgICAgIC8vIGNh
dGNoIHN0YWxlIFdlYkNvcmVBWE9iamVjdCAoc2VlIDxyZGFyOi8vcHJvYmxlbS8zOTYwMTk2PikK
LSAgICAgICAgICAgICAgICBpZiAoZnJhbWUtPmRvY3VtZW50KCkgIT0gbm9kZURvY3VtZW50KQor
ICAgICAgICAgICAgICAgIGlmICgmZnJhbWUtPmRvY3VtZW50KCkgIT0gbm9kZURvY3VtZW50KQog
ICAgICAgICAgICAgICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAgICAgICAgICAgICAgICAgcmV0
dXJuIHBsYWluVGV4dCh0ZXh0UmFuZ2UuZ2V0KCksIHRleHRJdGVyYXRvckJlaGF2aW9yRm9yVGV4
dFJhbmdlKCkpOwogICAgICAgICAgICAgfQpAQCAtMjAyNiw3ICsyMDI2LDcgQEAgVmlzaWJsZVBv
c2l0aW9uIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OnZpc2libGVQb3NpdGlvbkZvclBvaW50
KGNvbnN0IEludFBvaW4KICAgICAgICAgaWYgKCF3aWRnZXQgfHwgIXdpZGdldC0+aXNGcmFtZVZp
ZXcoKSkKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICBGcmFtZSYgZnJhbWUgPSB0b0ZyYW1l
Vmlldyh3aWRnZXQpLT5mcmFtZSgpOwotICAgICAgICByZW5kZXJWaWV3ID0gZnJhbWUuZG9jdW1l
bnQoKS0+cmVuZGVyVmlldygpOworICAgICAgICByZW5kZXJWaWV3ID0gZnJhbWUuZG9jdW1lbnQo
KS5yZW5kZXJWaWV3KCk7CiAjaWYgUExBVEZPUk0oQ09DT0EpCiAgICAgICAgIGZyYW1lVmlldyA9
IHRvRnJhbWVWaWV3KHdpZGdldCk7CiAjZW5kaWYKQEAgLTI4NTgsMTggKzI4NTgsMTkgQEAgQWNj
ZXNzaWJpbGl0eVNWR1Jvb3QqIEFjY2Vzc2liaWxpdHlSZW5kZXJPYmplY3Q6OnJlbW90ZVNWR1Jv
b3RFbGVtZW50KCkgY29uc3QKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgRnJhbWUmIGZy
YW1lID0gZnJhbWVWaWV3LT5mcmFtZSgpOwogICAgIAotICAgIERvY3VtZW50KiBkb2MgPSBmcmFt
ZS5kb2N1bWVudCgpOwotICAgIGlmICghZG9jIHx8ICFkb2MtPmlzU1ZHRG9jdW1lbnQoKSkKKyAg
ICBEb2N1bWVudCYgZG9jID0gZnJhbWUuZG9jdW1lbnQoKTsKKyAgICBBU1NFUlQoZG9jKTsKKyAg
ICBpZiAoIWRvYy5pc1NWR0RvY3VtZW50KCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogICAg
IAotICAgIFNWR1NWR0VsZW1lbnQqIHJvb3RFbGVtZW50ID0gdG9TVkdEb2N1bWVudChkb2MpLT5y
b290RWxlbWVudCgpOworICAgIFNWR1NWR0VsZW1lbnQqIHJvb3RFbGVtZW50ID0gdG9TVkdEb2N1
bWVudCgmZG9jKS0+cm9vdEVsZW1lbnQoKTsKICAgICBpZiAoIXJvb3RFbGVtZW50KQogICAgICAg
ICByZXR1cm4gbnVsbHB0cjsKICAgICBSZW5kZXJPYmplY3QqIHJlbmRlcmVyUm9vdCA9IHJvb3RF
bGVtZW50LT5yZW5kZXJlcigpOwogICAgIGlmICghcmVuZGVyZXJSb290KQogICAgICAgICByZXR1
cm4gbnVsbHB0cjsKICAgICAKLSAgICBBWE9iamVjdENhY2hlKiBjYWNoZSA9IGZyYW1lLmRvY3Vt
ZW50KCktPmF4T2JqZWN0Q2FjaGUoKTsKKyAgICBBWE9iamVjdENhY2hlKiBjYWNoZSA9IGZyYW1l
LmRvY3VtZW50KCkuYXhPYmplY3RDYWNoZSgpOwogICAgIGlmICghY2FjaGUpCiAgICAgICAgIHJl
dHVybiBudWxscHRyOwogICAgIEFjY2Vzc2liaWxpdHlPYmplY3QqIHJvb3RTVkdPYmplY3QgPSBj
YWNoZS0+Z2V0T3JDcmVhdGUocmVuZGVyZXJSb290KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2FjY2Vzc2liaWxpdHkvQWNjZXNzaWJpbGl0eVNjcm9sbFZpZXcuY3BwIGIvU291cmNlL1dl
YkNvcmUvYWNjZXNzaWJpbGl0eS9BY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldy5jcHAKaW5kZXggMDNj
OTM3My4uMTlmYTEyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9B
Y2Nlc3NpYmlsaXR5U2Nyb2xsVmlldy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9BY2Nlc3NpYmlsaXR5U2Nyb2xsVmlldy5jcHAKQEAgLTE5MiwxMiArMTkyLDEzIEBAIEFj
Y2Vzc2liaWxpdHlPYmplY3QqIEFjY2Vzc2liaWxpdHlTY3JvbGxWaWV3Ojp3ZWJBcmVhT2JqZWN0
KCkgY29uc3QKICAgICBpZiAoIW1fc2Nyb2xsVmlldyB8fCAhbV9zY3JvbGxWaWV3LT5pc0ZyYW1l
VmlldygpKQogICAgICAgICByZXR1cm4gMDsKICAgICAKLSAgICBEb2N1bWVudCogZG9jID0gdG9G
cmFtZVZpZXcobV9zY3JvbGxWaWV3KS0+ZnJhbWUoKS5kb2N1bWVudCgpOwotICAgIGlmICghZG9j
IHx8ICFkb2MtPmhhc0xpdmluZ1JlbmRlclRyZWUoKSkKKyAgICBEb2N1bWVudCYgZG9jID0gdG9G
cmFtZVZpZXcobV9zY3JvbGxWaWV3KS0+ZnJhbWUoKS5kb2N1bWVudCgpOworICAgIEFTU0VSVChk
b2MpOworICAgIGlmICghZG9jLmhhc0xpdmluZ1JlbmRlclRyZWUoKSkKICAgICAgICAgcmV0dXJu
IDA7CiAKICAgICBpZiAoQVhPYmplY3RDYWNoZSogY2FjaGUgPSBheE9iamVjdENhY2hlKCkpCi0g
ICAgICAgIHJldHVybiBjYWNoZS0+Z2V0T3JDcmVhdGUoZG9jKTsKKyAgICAgICAgcmV0dXJuIGNh
Y2hlLT5nZXRPckNyZWF0ZSgmZG9jKTsKICAgICAKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvaW9zL1dlYkFjY2Vzc2liaWxp
dHlPYmplY3RXcmFwcGVySU9TLm1tIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3Mv
V2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJJT1MubW0KaW5kZXggNmQyMWFjYi4uMjVlYzMx
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJpbGl0eS9pb3MvV2ViQWNjZXNz
aWJpbGl0eU9iamVjdFdyYXBwZXJJT1MubW0KKysrIGIvU291cmNlL1dlYkNvcmUvYWNjZXNzaWJp
bGl0eS9pb3MvV2ViQWNjZXNzaWJpbGl0eU9iamVjdFdyYXBwZXJJT1MubW0KQEAgLTEzMjgsNyAr
MTMyOCw3IEBAIHN0YXRpYyBSZW5kZXJPYmplY3QqIHJlbmRlcmVyRm9yVmlldyhXQUtWaWV3KiB2
aWV3KQogICAgIGlmICghZnJhbWUpCiAgICAgICAgIHJldHVybiAwOwogICAgIAotICAgIE5vZGUq
IG5vZGUgPSBmcmFtZS0+ZG9jdW1lbnQoKS0+b3duZXJFbGVtZW50KCk7CisgICAgTm9kZSogbm9k
ZSA9IGZyYW1lLT5kb2N1bWVudCgpLm93bmVyRWxlbWVudCgpOwogICAgIGlmICghbm9kZSkKICAg
ICAgICAgcmV0dXJuIDA7CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hY2Nlc3Np
YmlsaXR5L21hYy9XZWJBY2Nlc3NpYmlsaXR5T2JqZWN0V3JhcHBlck1hYy5tbSBiL1NvdXJjZS9X
ZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFj
Lm1tCmluZGV4IDQwZTliYjMuLjY2MDAwODYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Fj
Y2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RXcmFwcGVyTWFjLm1tCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2FjY2Vzc2liaWxpdHkvbWFjL1dlYkFjY2Vzc2liaWxpdHlPYmplY3RX
cmFwcGVyTWFjLm1tCkBAIC0zMzEzLDcgKzMzMTMsNyBAQCBzdGF0aWMgUmVuZGVyT2JqZWN0KiBy
ZW5kZXJlckZvclZpZXcoTlNWaWV3KiB2aWV3KQogICAgIGlmICghZnJhbWUpCiAgICAgICAgIHJl
dHVybiAwOwogICAgIAotICAgIE5vZGUqIG5vZGUgPSBmcmFtZS0+ZG9jdW1lbnQoKS0+b3duZXJF
bGVtZW50KCk7CisgICAgTm9kZSogbm9kZSA9IGZyYW1lLT5kb2N1bWVudCgpLm93bmVyRWxlbWVu
dCgpOwogICAgIGlmICghbm9kZSkKICAgICAgICAgcmV0dXJuIDA7CiAgICAgCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuY3BwIGIvU291cmNlL1dl
YkNvcmUvYmluZGluZ3MvanMvSlNET01CaW5kaW5nLmNwcAppbmRleCBhZGUyODI2Li4xMjk4NGQ4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTUJpbmRpbmcuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NQmluZGluZy5jcHAKQEAgLTI3
MCw3ICsyNzAsNyBAQCBib29sIHNob3VsZEFsbG93QWNjZXNzVG9GcmFtZShFeGVjU3RhdGUqIGV4
ZWMsIEZyYW1lKiBmcmFtZSwgU3RyaW5nJiBtZXNzYWdlKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAgICAgaWYgKEJpbmRpbmdTZWN1cml0eTo6c2hvdWxkQWxsb3dBY2Nlc3NUb0ZyYW1lKGV4ZWMs
IGZyYW1lLCBEb05vdFJlcG9ydFNlY3VyaXR5RXJyb3IpKQogICAgICAgICByZXR1cm4gdHJ1ZTsK
LSAgICBtZXNzYWdlID0gZnJhbWUtPmRvY3VtZW50KCktPmRvbVdpbmRvdygpLT5jcm9zc0RvbWFp
bkFjY2Vzc0Vycm9yTWVzc2FnZShhY3RpdmVET01XaW5kb3coZXhlYykpOworICAgIG1lc3NhZ2Ug
PSBmcmFtZS0+ZG9jdW1lbnQoKS5kb21XaW5kb3coKS0+Y3Jvc3NEb21haW5BY2Nlc3NFcnJvck1l
c3NhZ2UoYWN0aXZlRE9NV2luZG93KGV4ZWMpKTsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKQEAg
LTI4Niw3ICsyODYsNyBAQCB2b2lkIHByaW50RXJyb3JNZXNzYWdlRm9yRnJhbWUoRnJhbWUqIGZy
YW1lLCBjb25zdCBTdHJpbmcmIG1lc3NhZ2UpCiB7CiAgICAgaWYgKCFmcmFtZSkKICAgICAgICAg
cmV0dXJuOwotICAgIGZyYW1lLT5kb2N1bWVudCgpLT5kb21XaW5kb3coKS0+cHJpbnRFcnJvck1l
c3NhZ2UobWVzc2FnZSk7CisgICAgZnJhbWUtPmRvY3VtZW50KCkuZG9tV2luZG93KCktPnByaW50
RXJyb3JNZXNzYWdlKG1lc3NhZ2UpOwogfQogCiBFbmNvZGVkSlNWYWx1ZSBvYmplY3RUb1N0cmlu
Z0Z1bmN0aW9uR2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqLCBFbmNvZGVkSlNWYWx1
ZSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKQEAgLTUzOCw3ICs1MzgsNyBAQCBib29sIEJp
bmRpbmdTZWN1cml0eTo6c2hvdWxkQWxsb3dBY2Nlc3NUb0RPTVdpbmRvdyhKU0M6OkV4ZWNTdGF0
ZSogc3RhdGUsIERPTVdpbgogCiBib29sIEJpbmRpbmdTZWN1cml0eTo6c2hvdWxkQWxsb3dBY2Nl
c3NUb0ZyYW1lKEpTQzo6RXhlY1N0YXRlKiBzdGF0ZSwgRnJhbWUqIHRhcmdldCwgU2VjdXJpdHlS
ZXBvcnRpbmdPcHRpb24gcmVwb3J0aW5nT3B0aW9uKQogewotICAgIHJldHVybiB0YXJnZXQgJiYg
Y2FuQWNjZXNzRG9jdW1lbnQoc3RhdGUsIHRhcmdldC0+ZG9jdW1lbnQoKSwgcmVwb3J0aW5nT3B0
aW9uKTsKKyAgICByZXR1cm4gdGFyZ2V0ICYmIGNhbkFjY2Vzc0RvY3VtZW50KHN0YXRlLCAmdGFy
Z2V0LT5kb2N1bWVudCgpLCByZXBvcnRpbmdPcHRpb24pOwogfQogCiBib29sIEJpbmRpbmdTZWN1
cml0eTo6c2hvdWxkQWxsb3dBY2Nlc3NUb05vZGUoSlNDOjpFeGVjU3RhdGUqIHN0YXRlLCBOb2Rl
KiB0YXJnZXQpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdp
bmRvd0N1c3RvbS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1
c3RvbS5jcHAKaW5kZXggOTRiNzVlMS4uNzdhODRiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNwcApAQCAtNzksMzQgKzc5LDMzIEBAIEVu
Y29kZWRKU1ZhbHVlIG5vbkNhY2hpbmdTdGF0aWNGdW5jdGlvbkdldHRlcihFeGVjU3RhdGUqIGV4
ZWMsIEpTT2JqZWN0KiwgRW5jb2RlCiAKIHN0YXRpYyBFbmNvZGVkSlNWYWx1ZSBjaGlsZEZyYW1l
R2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHNsb3RCYXNlLCBFbmNvZGVkSlNWYWx1
ZSwgUHJvcGVydHlOYW1lIHByb3BlcnR5TmFtZSkKIHsKLSAgICByZXR1cm4gSlNWYWx1ZTo6ZW5j
b2RlKHRvSlMoZXhlYywganNDYXN0PEpTRE9NV2luZG93Kj4oc2xvdEJhc2UpLT5pbXBsKCkuZnJh
bWUoKS0+dHJlZSgpLnNjb3BlZENoaWxkKHByb3BlcnR5TmFtZVRvQXRvbWljU3RyaW5nKHByb3Bl
cnR5TmFtZSkpLT5kb2N1bWVudCgpLT5kb21XaW5kb3coKSkpOworICAgIHJldHVybiBKU1ZhbHVl
OjplbmNvZGUodG9KUyhleGVjLCBqc0Nhc3Q8SlNET01XaW5kb3cqPihzbG90QmFzZSktPmltcGwo
KS5mcmFtZSgpLT50cmVlKCkuc2NvcGVkQ2hpbGQocHJvcGVydHlOYW1lVG9BdG9taWNTdHJpbmco
cHJvcGVydHlOYW1lKSktPmRvY3VtZW50KCkuZG9tV2luZG93KCkpKTsKIH0KIAogc3RhdGljIEVu
Y29kZWRKU1ZhbHVlIGluZGV4R2V0dGVyKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqIHNsb3RC
YXNlLCBFbmNvZGVkSlNWYWx1ZSwgdW5zaWduZWQgaW5kZXgpCiB7Ci0gICAgcmV0dXJuIEpTVmFs
dWU6OmVuY29kZSh0b0pTKGV4ZWMsIGpzQ2FzdDxKU0RPTVdpbmRvdyo+KHNsb3RCYXNlKS0+aW1w
bCgpLmZyYW1lKCktPnRyZWUoKS5zY29wZWRDaGlsZChpbmRleCktPmRvY3VtZW50KCktPmRvbVdp
bmRvdygpKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTKGV4ZWMsIGpzQ2FzdDxK
U0RPTVdpbmRvdyo+KHNsb3RCYXNlKS0+aW1wbCgpLmZyYW1lKCktPnRyZWUoKS5zY29wZWRDaGls
ZChpbmRleCktPmRvY3VtZW50KCkuZG9tV2luZG93KCkpKTsKIH0KIAogc3RhdGljIEVuY29kZWRK
U1ZhbHVlIG5hbWVkSXRlbUdldHRlcihFeGVjU3RhdGUqIGV4ZWMsIEpTT2JqZWN0KiBzbG90QmFz
ZSwgRW5jb2RlZEpTVmFsdWUsIFByb3BlcnR5TmFtZSBwcm9wZXJ0eU5hbWUpCiB7CiAgICAgSlNE
T01XaW5kb3dCYXNlKiB0aGlzT2JqID0ganNDYXN0PEpTRE9NV2luZG93Kj4oc2xvdEJhc2UpOwot
ICAgIERvY3VtZW50KiBkb2N1bWVudCA9IHRoaXNPYmotPmltcGwoKS5mcmFtZSgpLT5kb2N1bWVu
dCgpOworICAgIERvY3VtZW50JiBkb2N1bWVudCA9IHRoaXNPYmotPmltcGwoKS5mcmFtZSgpLT5k
b2N1bWVudCgpOwogCiAgICAgQVNTRVJUKEJpbmRpbmdTZWN1cml0eTo6c2hvdWxkQWxsb3dBY2Nl
c3NUb0RPTVdpbmRvdyhleGVjLCB0aGlzT2JqLT5pbXBsKCkpKTsKLSAgICBBU1NFUlQoZG9jdW1l
bnQpOwotICAgIEFTU0VSVChkb2N1bWVudC0+aXNIVE1MRG9jdW1lbnQoKSk7CisgICAgQVNTRVJU
KGRvY3VtZW50LmlzSFRNTERvY3VtZW50KCkpOwogCiAgICAgQXRvbWljU3RyaW5nSW1wbCogYXRv
bWljUHJvcGVydHlOYW1lID0gZmluZEF0b21pY1N0cmluZyhwcm9wZXJ0eU5hbWUpOwotICAgIGlm
ICghYXRvbWljUHJvcGVydHlOYW1lIHx8ICF0b0hUTUxEb2N1bWVudChkb2N1bWVudCktPmhhc1dp
bmRvd05hbWVkSXRlbSgqYXRvbWljUHJvcGVydHlOYW1lKSkKKyAgICBpZiAoIWF0b21pY1Byb3Bl
cnR5TmFtZSB8fCAhdG9IVE1MRG9jdW1lbnQoJmRvY3VtZW50KS0+aGFzV2luZG93TmFtZWRJdGVt
KCphdG9taWNQcm9wZXJ0eU5hbWUpKQogICAgICAgICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKGpz
VW5kZWZpbmVkKCkpOwogCi0gICAgaWYgKFVOTElLRUxZKHRvSFRNTERvY3VtZW50KGRvY3VtZW50
KS0+d2luZG93TmFtZWRJdGVtQ29udGFpbnNNdWx0aXBsZUVsZW1lbnRzKCphdG9taWNQcm9wZXJ0
eU5hbWUpKSkgewotICAgICAgICBSZWZQdHI8SFRNTENvbGxlY3Rpb24+IGNvbGxlY3Rpb24gPSBk
b2N1bWVudC0+d2luZG93TmFtZWRJdGVtcyhhdG9taWNQcm9wZXJ0eU5hbWUpOworICAgIGlmIChV
TkxJS0VMWSh0b0hUTUxEb2N1bWVudCgmZG9jdW1lbnQpLT53aW5kb3dOYW1lZEl0ZW1Db250YWlu
c011bHRpcGxlRWxlbWVudHMoKmF0b21pY1Byb3BlcnR5TmFtZSkpKSB7CisgICAgICAgIFJlZlB0
cjxIVE1MQ29sbGVjdGlvbj4gY29sbGVjdGlvbiA9IGRvY3VtZW50LndpbmRvd05hbWVkSXRlbXMo
YXRvbWljUHJvcGVydHlOYW1lKTsKICAgICAgICAgQVNTRVJUKGNvbGxlY3Rpb24tPmxlbmd0aCgp
ID4gMSk7CiAgICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUodG9KUyhleGVjLCB0aGlzT2Jq
LT5nbG9iYWxPYmplY3QoKSwgV1RGOjpnZXRQdHIoY29sbGVjdGlvbikpKTsKICAgICB9CiAKLSAg
ICByZXR1cm4gSlNWYWx1ZTo6ZW5jb2RlKHRvSlMoZXhlYywgdGhpc09iai0+Z2xvYmFsT2JqZWN0
KCksIHRvSFRNTERvY3VtZW50KGRvY3VtZW50KS0+d2luZG93TmFtZWRJdGVtKCphdG9taWNQcm9w
ZXJ0eU5hbWUpKSk7CisgICAgcmV0dXJuIEpTVmFsdWU6OmVuY29kZSh0b0pTKGV4ZWMsIHRoaXNP
YmotPmdsb2JhbE9iamVjdCgpLCB0b0hUTUxEb2N1bWVudCgmZG9jdW1lbnQpLT53aW5kb3dOYW1l
ZEl0ZW0oKmF0b21pY1Byb3BlcnR5TmFtZSkpKTsKIH0KIAogYm9vbCBKU0RPTVdpbmRvdzo6Z2V0
T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiBvYmplY3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVy
dHlOYW1lIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQpAQCAtMjQzLDEwICsyNDIs
MTAgQEAgYm9vbCBKU0RPTVdpbmRvdzo6Z2V0T3duUHJvcGVydHlTbG90KEpTT2JqZWN0KiBvYmpl
Y3QsIEV4ZWNTdGF0ZSogZXhlYywgUHJvcGVydHkKICAgICB9CiAKICAgICAvLyBBbGxvdyBzaG9y
dGN1dHMgbGlrZSAnSW1hZ2UxJyBpbnN0ZWFkIG9mIGRvY3VtZW50LmltYWdlcy5JbWFnZTEKLSAg
ICBEb2N1bWVudCogZG9jdW1lbnQgPSB0aGlzT2JqZWN0LT5pbXBsKCkuZnJhbWUoKS0+ZG9jdW1l
bnQoKTsKLSAgICBpZiAoZG9jdW1lbnQtPmlzSFRNTERvY3VtZW50KCkpIHsKKyAgICBEb2N1bWVu
dCYgZG9jdW1lbnQgPSB0aGlzT2JqZWN0LT5pbXBsKCkuZnJhbWUoKS0+ZG9jdW1lbnQoKTsKKyAg
ICBpZiAoZG9jdW1lbnQuaXNIVE1MRG9jdW1lbnQoKSkgewogICAgICAgICBBdG9taWNTdHJpbmdJ
bXBsKiBhdG9taWNQcm9wZXJ0eU5hbWUgPSBmaW5kQXRvbWljU3RyaW5nKHByb3BlcnR5TmFtZSk7
Ci0gICAgICAgIGlmIChhdG9taWNQcm9wZXJ0eU5hbWUgJiYgdG9IVE1MRG9jdW1lbnQoZG9jdW1l
bnQpLT5oYXNXaW5kb3dOYW1lZEl0ZW0oKmF0b21pY1Byb3BlcnR5TmFtZSkpIHsKKyAgICAgICAg
aWYgKGF0b21pY1Byb3BlcnR5TmFtZSAmJiB0b0hUTUxEb2N1bWVudCgmZG9jdW1lbnQpLT5oYXNX
aW5kb3dOYW1lZEl0ZW0oKmF0b21pY1Byb3BlcnR5TmFtZSkpIHsKICAgICAgICAgICAgIHNsb3Qu
c2V0Q3VzdG9tKHRoaXNPYmplY3QsIFJlYWRPbmx5IHwgRG9udERlbGV0ZSB8IERvbnRFbnVtLCBu
YW1lZEl0ZW1HZXR0ZXIpOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KQEAg
LTMxOSwxMCArMzE4LDEwIEBAIGJvb2wgSlNET01XaW5kb3c6OmdldE93blByb3BlcnR5U2xvdEJ5
SW5kZXgoSlNPYmplY3QqIG9iamVjdCwgRXhlY1N0YXRlKiBleGVjLCB1CiAgICAgfQogCiAgICAg
Ly8gQWxsb3cgc2hvcnRjdXRzIGxpa2UgJ0ltYWdlMScgaW5zdGVhZCBvZiBkb2N1bWVudC5pbWFn
ZXMuSW1hZ2UxCi0gICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gdGhpc09iamVjdC0+aW1wbCgpLmZy
YW1lKCktPmRvY3VtZW50KCk7Ci0gICAgaWYgKGRvY3VtZW50LT5pc0hUTUxEb2N1bWVudCgpKSB7
CisgICAgRG9jdW1lbnQmIGRvY3VtZW50ID0gdGhpc09iamVjdC0+aW1wbCgpLmZyYW1lKCktPmRv
Y3VtZW50KCk7CisgICAgaWYgKGRvY3VtZW50LmlzSFRNTERvY3VtZW50KCkpIHsKICAgICAgICAg
QXRvbWljU3RyaW5nSW1wbCogYXRvbWljUHJvcGVydHlOYW1lID0gZmluZEF0b21pY1N0cmluZyhw
cm9wZXJ0eU5hbWUpOwotICAgICAgICBpZiAoYXRvbWljUHJvcGVydHlOYW1lICYmIHRvSFRNTERv
Y3VtZW50KGRvY3VtZW50KS0+aGFzV2luZG93TmFtZWRJdGVtKCphdG9taWNQcm9wZXJ0eU5hbWUp
KSB7CisgICAgICAgIGlmIChhdG9taWNQcm9wZXJ0eU5hbWUgJiYgdG9IVE1MRG9jdW1lbnQoJmRv
Y3VtZW50KS0+aGFzV2luZG93TmFtZWRJdGVtKCphdG9taWNQcm9wZXJ0eU5hbWUpKSB7CiAgICAg
ICAgICAgICBzbG90LnNldEN1c3RvbSh0aGlzT2JqZWN0LCBSZWFkT25seSB8IERvbnREZWxldGUg
fCBEb250RW51bSwgbmFtZWRJdGVtR2V0dGVyKTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwog
ICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RvY3Vt
ZW50Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRG9jdW1lbnRDdXN0
b20uY3BwCmluZGV4IDE0YzA4ZmYuLmQ1NWY1M2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRG9jdW1lbnRDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Jp
bmRpbmdzL2pzL0pTRG9jdW1lbnRDdXN0b20uY3BwCkBAIC01Miw3ICs1Miw3IEBAIEpTVmFsdWUg
SlNEb2N1bWVudDo6bG9jYXRpb24oRXhlY1N0YXRlKiBleGVjKSBjb25zdAogICAgIGlmICghZnJh
bWUpCiAgICAgICAgIHJldHVybiBqc051bGwoKTsKIAotICAgIFJlZlB0cjxMb2NhdGlvbj4gbG9j
YXRpb24gPSBmcmFtZS0+ZG9jdW1lbnQoKS0+ZG9tV2luZG93KCktPmxvY2F0aW9uKCk7CisgICAg
UmVmUHRyPExvY2F0aW9uPiBsb2NhdGlvbiA9IGZyYW1lLT5kb2N1bWVudCgpLmRvbVdpbmRvdygp
LT5sb2NhdGlvbigpOwogICAgIGlmIChKU09iamVjdCogd3JhcHBlciA9IGdldENhY2hlZFdyYXBw
ZXIoZ2xvYmFsT2JqZWN0KCktPndvcmxkKCksIGxvY2F0aW9uLmdldCgpKSkKICAgICAgICAgcmV0
dXJuIHdyYXBwZXI7CiAKQEAgLTcxLDcgKzcxLDcgQEAgdm9pZCBKU0RvY3VtZW50OjpzZXRMb2Nh
dGlvbihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUgdmFsdWUpCiAgICAgaWYgKCFmcmFtZSkKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgaWYgKFJlZlB0cjxMb2NhdGlvbj4gbG9jYXRpb24gPSBmcmFt
ZS0+ZG9jdW1lbnQoKS0+ZG9tV2luZG93KCktPmxvY2F0aW9uKCkpCisgICAgaWYgKFJlZlB0cjxM
b2NhdGlvbj4gbG9jYXRpb24gPSBmcmFtZS0+ZG9jdW1lbnQoKS5kb21XaW5kb3coKS0+bG9jYXRp
b24oKSkKICAgICAgICAgbG9jYXRpb24tPnNldEhyZWYobG9jYXRpb25TdHJpbmcsIGFjdGl2ZURP
TVdpbmRvdyhleGVjKSwgZmlyc3RET01XaW5kb3coZXhlYykpOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0xhenlFdmVudExpc3RlbmVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTGF6eUV2ZW50TGlzdGVuZXIuY3BwCmluZGV4IDZlMzRk
MjEuLjRhYzNkZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTGF6
eUV2ZW50TGlzdGVuZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTTGF6
eUV2ZW50TGlzdGVuZXIuY3BwCkBAIC0xNjUsOCArMTY1LDggQEAgUGFzc1JlZlB0cjxKU0xhenlF
dmVudExpc3RlbmVyPiBKU0xhenlFdmVudExpc3RlbmVyOjpjcmVhdGVGb3JET01XaW5kb3coRnJh
bWUmIGYKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICByZXR1cm4gYWRvcHRSZWYobmV3
IEpTTGF6eUV2ZW50TGlzdGVuZXIoYXR0cmlidXRlTmFtZS5sb2NhbE5hbWUoKS5zdHJpbmcoKSwK
LSAgICAgICAgZXZlbnRQYXJhbWV0ZXJOYW1lKGZyYW1lLmRvY3VtZW50KCktPmlzU1ZHRG9jdW1l
bnQoKSksIGF0dHJpYnV0ZVZhbHVlLAotICAgICAgICBudWxscHRyLCBmcmFtZS5kb2N1bWVudCgp
LT51cmwoKS5zdHJpbmcoKSwgZnJhbWUuc2NyaXB0KCkuZXZlbnRIYW5kbGVyUG9zaXRpb24oKSwK
KyAgICAgICAgZXZlbnRQYXJhbWV0ZXJOYW1lKGZyYW1lLmRvY3VtZW50KCkuaXNTVkdEb2N1bWVu
dCgpKSwgYXR0cmlidXRlVmFsdWUsCisgICAgICAgIG51bGxwdHIsIGZyYW1lLmRvY3VtZW50KCku
dXJsKCkuc3RyaW5nKCksIGZyYW1lLnNjcmlwdCgpLmV2ZW50SGFuZGxlclBvc2l0aW9uKCksCiAg
ICAgICAgIHRvSlNET01XaW5kb3coJmZyYW1lLCBtYWluVGhyZWFkTm9ybWFsV29ybGQoKSksIG1h
aW5UaHJlYWROb3JtYWxXb3JsZCgpKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL1NjcmlwdENhY2hlZEZyYW1lRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy9qcy9TY3JpcHRDYWNoZWRGcmFtZURhdGEuY3BwCmluZGV4IDI0ZDFlMDQuLjAzMjYy
OGMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENhY2hlZEZy
YW1lRGF0YS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q2FjaGVk
RnJhbWVEYXRhLmNwcApAQCAtODMsNyArODMsNyBAQCB2b2lkIFNjcmlwdENhY2hlZEZyYW1lRGF0
YTo6cmVzdG9yZShGcmFtZSYgZnJhbWUpCiAgICAgICAgIGlmIChKU0RPTVdpbmRvdyogd2luZG93
ID0gbV93aW5kb3dzLmdldCh3b3JsZCkuZ2V0KCkpCiAgICAgICAgICAgICB3aW5kb3dTaGVsbC0+
c2V0V2luZG93KHdpbmRvdy0+dm0oKSwgd2luZG93KTsKICAgICAgICAgZWxzZSB7Ci0gICAgICAg
ICAgICBET01XaW5kb3cqIGRvbVdpbmRvdyA9IGZyYW1lLmRvY3VtZW50KCktPmRvbVdpbmRvdygp
OworICAgICAgICAgICAgRE9NV2luZG93KiBkb21XaW5kb3cgPSBmcmFtZS5kb2N1bWVudCgpLmRv
bVdpbmRvdygpOwogICAgICAgICAgICAgaWYgKCZ3aW5kb3dTaGVsbC0+d2luZG93KCktPmltcGwo
KSA9PSBkb21XaW5kb3cpCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL1NjcmlwdENvbnRyb2xsZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJvbGxlci5jcHAKaW5kZXggZjc4YWVhOC4u
YTI3MWNmNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29u
dHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvU2NyaXB0Q29udHJv
bGxlci5jcHAKQEAgLTExNCw3ICsxMTQsNyBAQCBKU0RPTVdpbmRvd1NoZWxsKiBTY3JpcHRDb250
cm9sbGVyOjpjcmVhdGVXaW5kb3dTaGVsbChET01XcmFwcGVyV29ybGQmIHdvcmxkKQogICAgIFZN
JiB2bSA9IHdvcmxkLnZtKCk7CiAKICAgICBTdHJ1Y3R1cmUqIHN0cnVjdHVyZSA9IEpTRE9NV2lu
ZG93U2hlbGw6OmNyZWF0ZVN0cnVjdHVyZSh2bSwganNOdWxsKCkpOwotICAgIFN0cm9uZzxKU0RP
TVdpbmRvd1NoZWxsPiB3aW5kb3dTaGVsbCh2bSwgSlNET01XaW5kb3dTaGVsbDo6Y3JlYXRlKHZt
LCBtX2ZyYW1lLmRvY3VtZW50KCktPmRvbVdpbmRvdygpLCBzdHJ1Y3R1cmUsIHdvcmxkKSk7Cisg
ICAgU3Ryb25nPEpTRE9NV2luZG93U2hlbGw+IHdpbmRvd1NoZWxsKHZtLCBKU0RPTVdpbmRvd1No
ZWxsOjpjcmVhdGUodm0sIG1fZnJhbWUuZG9jdW1lbnQoKS5kb21XaW5kb3coKSwgc3RydWN0dXJl
LCB3b3JsZCkpOwogICAgIFN0cm9uZzxKU0RPTVdpbmRvd1NoZWxsPiB3aW5kb3dTaGVsbDIod2lu
ZG93U2hlbGwpOwogICAgIG1fd2luZG93U2hlbGxzLmFkZCgmd29ybGQsIHdpbmRvd1NoZWxsKTsK
ICAgICB3b3JsZC5kaWRDcmVhdGVXaW5kb3dTaGVsbCh0aGlzKTsKQEAgLTIzMCw4ICsyMzAsOCBA
QCBKU0RPTVdpbmRvd1NoZWxsKiBTY3JpcHRDb250cm9sbGVyOjppbml0U2NyaXB0KERPTVdyYXBw
ZXJXb3JsZCYgd29ybGQpCiAKICAgICB3aW5kb3dTaGVsbC0+d2luZG93KCktPnVwZGF0ZURvY3Vt
ZW50KCk7CiAKLSAgICBpZiAobV9mcmFtZS5kb2N1bWVudCgpKQotICAgICAgICB3aW5kb3dTaGVs
bC0+d2luZG93KCktPnNldEV2YWxFbmFibGVkKG1fZnJhbWUuZG9jdW1lbnQoKS0+Y29udGVudFNl
Y3VyaXR5UG9saWN5KCktPmFsbG93RXZhbCgwLCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OlN1cHBy
ZXNzUmVwb3J0KSwgbV9mcmFtZS5kb2N1bWVudCgpLT5jb250ZW50U2VjdXJpdHlQb2xpY3koKS0+
ZXZhbERpc2FibGVkRXJyb3JNZXNzYWdlKCkpOworICAgIEFTU0VSVChtX2ZyYW1lLmRvY3VtZW50
KCkpOworICAgIHdpbmRvd1NoZWxsLT53aW5kb3coKS0+c2V0RXZhbEVuYWJsZWQobV9mcmFtZS5k
b2N1bWVudCgpLmNvbnRlbnRTZWN1cml0eVBvbGljeSgpLT5hbGxvd0V2YWwoMCwgQ29udGVudFNl
Y3VyaXR5UG9saWN5OjpTdXBwcmVzc1JlcG9ydCksIG1fZnJhbWUuZG9jdW1lbnQoKS5jb250ZW50
U2VjdXJpdHlQb2xpY3koKS0+ZXZhbERpc2FibGVkRXJyb3JNZXNzYWdlKCkpOwogCiAgICAgaWYg
KFBhZ2UqIHBhZ2UgPSBtX2ZyYW1lLnBhZ2UoKSkgewogICAgICAgICBhdHRhY2hEZWJ1Z2dlcih3
aW5kb3dTaGVsbCwgcGFnZS0+ZGVidWdnZXIoKSk7CkBAIC0yNDYsNyArMjQ2LDcgQEAgSlNET01X
aW5kb3dTaGVsbCogU2NyaXB0Q29udHJvbGxlcjo6aW5pdFNjcmlwdChET01XcmFwcGVyV29ybGQm
IHdvcmxkKQogCiBUZXh0UG9zaXRpb24gU2NyaXB0Q29udHJvbGxlcjo6ZXZlbnRIYW5kbGVyUG9z
aXRpb24oKSBjb25zdAogewotICAgIFNjcmlwdGFibGVEb2N1bWVudFBhcnNlciogcGFyc2VyID0g
bV9mcmFtZS5kb2N1bWVudCgpLT5zY3JpcHRhYmxlRG9jdW1lbnRQYXJzZXIoKTsKKyAgICBTY3Jp
cHRhYmxlRG9jdW1lbnRQYXJzZXIqIHBhcnNlciA9IG1fZnJhbWUuZG9jdW1lbnQoKS5zY3JpcHRh
YmxlRG9jdW1lbnRQYXJzZXIoKTsKICAgICBpZiAocGFyc2VyKQogICAgICAgICByZXR1cm4gcGFy
c2VyLT50ZXh0UG9zaXRpb24oKTsKICAgICByZXR1cm4gVGV4dFBvc2l0aW9uOjptaW5pbXVtUG9z
aXRpb24oKTsKQEAgLTQ3MSw3ICs0NzEsNyBAQCB2b2lkIFNjcmlwdENvbnRyb2xsZXI6OmNsZWFy
U2NyaXB0T2JqZWN0cygpCiBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSBTY3JpcHRDb250cm9sbGVy
OjpleGVjdXRlU2NyaXB0SW5Xb3JsZChET01XcmFwcGVyV29ybGQmIHdvcmxkLCBjb25zdCBTdHJp
bmcmIHNjcmlwdCwgYm9vbCBmb3JjZVVzZXJHZXN0dXJlKQogewogICAgIFVzZXJHZXN0dXJlSW5k
aWNhdG9yIGdlc3R1cmVJbmRpY2F0b3IoZm9yY2VVc2VyR2VzdHVyZSA/IERlZmluaXRlbHlQcm9j
ZXNzaW5nVXNlckdlc3R1cmUgOiBQb3NzaWJseVByb2Nlc3NpbmdVc2VyR2VzdHVyZSk7Ci0gICAg
U2NyaXB0U291cmNlQ29kZSBzb3VyY2VDb2RlKHNjcmlwdCwgbV9mcmFtZS5kb2N1bWVudCgpLT51
cmwoKSk7CisgICAgU2NyaXB0U291cmNlQ29kZSBzb3VyY2VDb2RlKHNjcmlwdCwgbV9mcmFtZS5k
b2N1bWVudCgpLnVybCgpKTsKIAogICAgIGlmICghY2FuRXhlY3V0ZVNjcmlwdHMoQWJvdXRUb0V4
ZWN1dGVTY3JpcHQpIHx8IGlzUGF1c2VkKCkpCiAgICAgICAgIHJldHVybiBEZXByZWNhdGVkOjpT
Y3JpcHRWYWx1ZSgpOwpAQCAtNDkyLDEwICs0OTIsMTEgQEAgYm9vbCBTY3JpcHRDb250cm9sbGVy
OjpzaG91bGRCeXBhc3NNYWluV29ybGRDb250ZW50U2VjdXJpdHlQb2xpY3koKQogCiBib29sIFNj
cmlwdENvbnRyb2xsZXI6OmNhbkV4ZWN1dGVTY3JpcHRzKFJlYXNvbkZvckNhbGxpbmdDYW5FeGVj
dXRlU2NyaXB0cyByZWFzb24pCiB7Ci0gICAgaWYgKG1fZnJhbWUuZG9jdW1lbnQoKSAmJiBtX2Zy
YW1lLmRvY3VtZW50KCktPmlzU2FuZGJveGVkKFNhbmRib3hTY3JpcHRzKSkgeworICAgIEFTU0VS
VChtX2ZyYW1lLmRvY3VtZW50KCkpOworICAgIGlmIChtX2ZyYW1lLmRvY3VtZW50KCkuaXNTYW5k
Ym94ZWQoU2FuZGJveFNjcmlwdHMpKSB7CiAgICAgICAgIC8vIEZJWE1FOiBUaGlzIG1lc3NhZ2Ug
c2hvdWxkIGJlIG1vdmVkIG9mZiB0aGUgY29uc29sZSBvbmNlIGEgc29sdXRpb24gdG8gaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMzI3NCBleGlzdHMuCiAgICAgICAg
IGlmIChyZWFzb24gPT0gQWJvdXRUb0V4ZWN1dGVTY3JpcHQpCi0gICAgICAgICAgICBtX2ZyYW1l
LmRvY3VtZW50KCktPmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OlNlY3VyaXR5LCBN
ZXNzYWdlTGV2ZWw6OkVycm9yLCAiQmxvY2tlZCBzY3JpcHQgZXhlY3V0aW9uIGluICciICsgbV9m
cmFtZS5kb2N1bWVudCgpLT51cmwoKS5zdHJpbmdDZW50ZXJFbGxpcHNpemVkVG9MZW5ndGgoKSAr
ICInIGJlY2F1c2UgdGhlIGRvY3VtZW50J3MgZnJhbWUgaXMgc2FuZGJveGVkIGFuZCB0aGUgJ2Fs
bG93LXNjcmlwdHMnIHBlcm1pc3Npb24gaXMgbm90IHNldC4iKTsKKyAgICAgICAgICAgIG1fZnJh
bWUuZG9jdW1lbnQoKS5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpTZWN1cml0eSwg
TWVzc2FnZUxldmVsOjpFcnJvciwgIkJsb2NrZWQgc2NyaXB0IGV4ZWN1dGlvbiBpbiAnIiArIG1f
ZnJhbWUuZG9jdW1lbnQoKS51cmwoKS5zdHJpbmdDZW50ZXJFbGxpcHNpemVkVG9MZW5ndGgoKSAr
ICInIGJlY2F1c2UgdGhlIGRvY3VtZW50J3MgZnJhbWUgaXMgc2FuZGJveGVkIGFuZCB0aGUgJ2Fs
bG93LXNjcmlwdHMnIHBlcm1pc3Npb24gaXMgbm90IHNldC4iKTsKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgIH0KIApAQCAtNTA4LDcgKzUwOSw3IEBAIGJvb2wgU2NyaXB0Q29udHJvbGxlcjo6
Y2FuRXhlY3V0ZVNjcmlwdHMoUmVhc29uRm9yQ2FsbGluZ0NhbkV4ZWN1dGVTY3JpcHRzIHJlYXNv
CiBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSBTY3JpcHRDb250cm9sbGVyOjpleGVjdXRlU2NyaXB0
KGNvbnN0IFN0cmluZyYgc2NyaXB0LCBib29sIGZvcmNlVXNlckdlc3R1cmUpCiB7CiAgICAgVXNl
ckdlc3R1cmVJbmRpY2F0b3IgZ2VzdHVyZUluZGljYXRvcihmb3JjZVVzZXJHZXN0dXJlID8gRGVm
aW5pdGVseVByb2Nlc3NpbmdVc2VyR2VzdHVyZSA6IFBvc3NpYmx5UHJvY2Vzc2luZ1VzZXJHZXN0
dXJlKTsKLSAgICByZXR1cm4gZXhlY3V0ZVNjcmlwdChTY3JpcHRTb3VyY2VDb2RlKHNjcmlwdCwg
bV9mcmFtZS5kb2N1bWVudCgpLT51cmwoKSkpOworICAgIHJldHVybiBleGVjdXRlU2NyaXB0KFNj
cmlwdFNvdXJjZUNvZGUoc2NyaXB0LCBtX2ZyYW1lLmRvY3VtZW50KCkudXJsKCkpKTsKIH0KIAog
RGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUgU2NyaXB0Q29udHJvbGxlcjo6ZXhlY3V0ZVNjcmlwdChj
b25zdCBTY3JpcHRTb3VyY2VDb2RlJiBzb3VyY2VDb2RlKQpAQCAtNTI2LDEzICs1MjcsMTMgQEAg
Ym9vbCBTY3JpcHRDb250cm9sbGVyOjpleGVjdXRlSWZKYXZhU2NyaXB0VVJMKGNvbnN0IFVSTCYg
dXJsLCBTaG91bGRSZXBsYWNlRG9jdW0KICAgICBpZiAoIXByb3RvY29sSXNKYXZhU2NyaXB0KHVy
bCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGlmICghbV9mcmFtZS5wYWdlKCkgfHwg
IW1fZnJhbWUuZG9jdW1lbnQoKS0+Y29udGVudFNlY3VyaXR5UG9saWN5KCktPmFsbG93SmF2YVNj
cmlwdFVSTHMobV9mcmFtZS5kb2N1bWVudCgpLT51cmwoKSwgZXZlbnRIYW5kbGVyUG9zaXRpb24o
KS5tX2xpbmUpKQorICAgIGlmICghbV9mcmFtZS5wYWdlKCkgfHwgIW1fZnJhbWUuZG9jdW1lbnQo
KS5jb250ZW50U2VjdXJpdHlQb2xpY3koKS0+YWxsb3dKYXZhU2NyaXB0VVJMcyhtX2ZyYW1lLmRv
Y3VtZW50KCkudXJsKCksIGV2ZW50SGFuZGxlclBvc2l0aW9uKCkubV9saW5lKSkKICAgICAgICAg
cmV0dXJuIHRydWU7CiAKICAgICAvLyBXZSBuZWVkIHRvIGhvbGQgb250byB0aGUgRnJhbWUgaGVy
ZSBiZWNhdXNlIGV4ZWN1dGluZyBzY3JpcHQgY2FuCiAgICAgLy8gZGVzdHJveSB0aGUgZnJhbWUu
CiAgICAgUmVmPEZyYW1lPiBwcm90ZWN0b3IobV9mcmFtZSk7Ci0gICAgUmVmUHRyPERvY3VtZW50
PiBvd25lckRvY3VtZW50KG1fZnJhbWUuZG9jdW1lbnQoKSk7CisgICAgUmVmUHRyPERvY3VtZW50
PiBvd25lckRvY3VtZW50KCZtX2ZyYW1lLmRvY3VtZW50KCkpOwogCiAgICAgY29uc3QgaW50IGph
dmFzY3JpcHRTY2hlbWVMZW5ndGggPSBzaXplb2YoImphdmFzY3JpcHQ6IikgLSAxOwogCkBAIC01
NTUsMTEgKzU1NiwxMSBAQCBib29sIFNjcmlwdENvbnRyb2xsZXI6OmV4ZWN1dGVJZkphdmFTY3Jp
cHRVUkwoY29uc3QgVVJMJiB1cmwsIFNob3VsZFJlcGxhY2VEb2N1bQogICAgIC8vICAgICAgICBo
dHRwOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNjc4MgogICAgIGlmIChzaG91
bGRSZXBsYWNlRG9jdW1lbnRJZkphdmFTY3JpcHRVUkwgPT0gUmVwbGFjZURvY3VtZW50SWZKYXZh
U2NyaXB0VVJMKSB7CiAgICAgICAgIC8vIFdlJ3JlIHN0aWxsIGluIGEgZnJhbWUsIHNvIHRoZXJl
IHNob3VsZCBiZSBhIERvY3VtZW50TG9hZGVyLgotICAgICAgICBBU1NFUlQobV9mcmFtZS5kb2N1
bWVudCgpLT5sb2FkZXIoKSk7CisgICAgICAgIEFTU0VSVChtX2ZyYW1lLT5kb2N1bWVudCgpLmxv
YWRlcigpKTsKICAgICAgICAgCiAgICAgICAgIC8vIERvY3VtZW50V3JpdGVyOjpyZXBsYWNlRG9j
dW1lbnQgY2FuIGNhdXNlIHRoZSBEb2N1bWVudExvYWRlciB0byBnZXQgZGVyZWYnZWQgYW5kIHBv
c3NpYmxlIGRlc3Ryb3llZCwKICAgICAgICAgLy8gc28gcHJvdGVjdCBpdCB3aXRoIGEgUmVmUHRy
LgotICAgICAgICBpZiAoUmVmUHRyPERvY3VtZW50TG9hZGVyPiBsb2FkZXIgPSBtX2ZyYW1lLmRv
Y3VtZW50KCktPmxvYWRlcigpKQorICAgICAgICBpZiAoUmVmUHRyPERvY3VtZW50TG9hZGVyPiBs
b2FkZXIgPSBtX2ZyYW1lLmRvY3VtZW50KCkubG9hZGVyKCkpCiAgICAgICAgICAgICBsb2FkZXIt
PndyaXRlcigpLnJlcGxhY2VEb2N1bWVudChzY3JpcHRSZXN1bHQsIG93bmVyRG9jdW1lbnQuZ2V0
KCkpOwogICAgIH0KICAgICByZXR1cm4gdHJ1ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2Nzcy9NZWRpYVF1ZXJ5RXZhbHVhdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9NZWRpYVF1
ZXJ5RXZhbHVhdG9yLmNwcAppbmRleCBiN2U4OGU2Li5hMDMyYTdlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvTWVkaWFRdWVyeUV2YWx1YXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvY3NzL01lZGlhUXVlcnlFdmFsdWF0b3IuY3BwCkBAIC0zNjUsMTAgKzM2NSwxMCBAQCBzdGF0
aWMgYm9vbCBkZXZpY2VfaGVpZ2h0TWVkaWFGZWF0dXJlRXZhbChDU1NWYWx1ZSogdmFsdWUsIFJl
bmRlclN0eWxlKiBzdHlsZSwgRgogewogICAgIGlmICh2YWx1ZSkgewogICAgICAgICBGbG9hdFJl
Y3Qgc2cgPSBzY3JlZW5SZWN0KGZyYW1lLT5wYWdlKCktPm1haW5GcmFtZSgpLnZpZXcoKSk7Ci0g
ICAgICAgIFJlbmRlclN0eWxlKiByb290U3R5bGUgPSBmcmFtZS0+ZG9jdW1lbnQoKS0+ZG9jdW1l
bnRFbGVtZW50KCktPnJlbmRlclN0eWxlKCk7CisgICAgICAgIFJlbmRlclN0eWxlKiByb290U3R5
bGUgPSBmcmFtZS0+ZG9jdW1lbnQoKS5kb2N1bWVudEVsZW1lbnQoKS0+cmVuZGVyU3R5bGUoKTsK
ICAgICAgICAgaW50IGxlbmd0aDsKICAgICAgICAgbG9uZyBoZWlnaHQgPSBzZy5oZWlnaHQoKTsK
LSAgICAgICAgcmV0dXJuIGNvbXB1dGVMZW5ndGgodmFsdWUsICFmcmFtZS0+ZG9jdW1lbnQoKS0+
aW5RdWlya3NNb2RlKCksIHN0eWxlLCByb290U3R5bGUsIGxlbmd0aCkgJiYgY29tcGFyZVZhbHVl
KHN0YXRpY19jYXN0PGludD4oaGVpZ2h0KSwgbGVuZ3RoLCBvcCk7CisgICAgICAgIHJldHVybiBj
b21wdXRlTGVuZ3RoKHZhbHVlLCAhZnJhbWUtPmRvY3VtZW50KCkuaW5RdWlya3NNb2RlKCksIHN0
eWxlLCByb290U3R5bGUsIGxlbmd0aCkgJiYgY29tcGFyZVZhbHVlKHN0YXRpY19jYXN0PGludD4o
aGVpZ2h0KSwgbGVuZ3RoLCBvcCk7CiAgICAgfQogICAgIC8vICh7LG1pbi0sbWF4LX1kZXZpY2Ut
aGVpZ2h0KQogICAgIC8vIGFzc3VtZSBpZiB3ZSBoYXZlIGEgZGV2aWNlLCBhc3N1bWUgbm9uLXpl
cm8KQEAgLTM3OSwxMCArMzc5LDEwIEBAIHN0YXRpYyBib29sIGRldmljZV93aWR0aE1lZGlhRmVh
dHVyZUV2YWwoQ1NTVmFsdWUqIHZhbHVlLCBSZW5kZXJTdHlsZSogc3R5bGUsIEZyCiB7CiAgICAg
aWYgKHZhbHVlKSB7CiAgICAgICAgIEZsb2F0UmVjdCBzZyA9IHNjcmVlblJlY3QoZnJhbWUtPnBh
Z2UoKS0+bWFpbkZyYW1lKCkudmlldygpKTsKLSAgICAgICAgUmVuZGVyU3R5bGUqIHJvb3RTdHls
ZSA9IGZyYW1lLT5kb2N1bWVudCgpLT5kb2N1bWVudEVsZW1lbnQoKS0+cmVuZGVyU3R5bGUoKTsK
KyAgICAgICAgUmVuZGVyU3R5bGUqIHJvb3RTdHlsZSA9IGZyYW1lLT5kb2N1bWVudCgpLmRvY3Vt
ZW50RWxlbWVudCgpLT5yZW5kZXJTdHlsZSgpOwogICAgICAgICBpbnQgbGVuZ3RoOwogICAgICAg
ICBsb25nIHdpZHRoID0gc2cud2lkdGgoKTsKLSAgICAgICAgcmV0dXJuIGNvbXB1dGVMZW5ndGgo
dmFsdWUsICFmcmFtZS0+ZG9jdW1lbnQoKS0+aW5RdWlya3NNb2RlKCksIHN0eWxlLCByb290U3R5
bGUsIGxlbmd0aCkgJiYgY29tcGFyZVZhbHVlKHN0YXRpY19jYXN0PGludD4od2lkdGgpLCBsZW5n
dGgsIG9wKTsKKyAgICAgICAgcmV0dXJuIGNvbXB1dGVMZW5ndGgodmFsdWUsICFmcmFtZS0+ZG9j
dW1lbnQoKS5pblF1aXJrc01vZGUoKSwgc3R5bGUsIHJvb3RTdHlsZSwgbGVuZ3RoKSAmJiBjb21w
YXJlVmFsdWUoc3RhdGljX2Nhc3Q8aW50Pih3aWR0aCksIGxlbmd0aCwgb3ApOwogICAgIH0KICAg
ICAvLyAoeyxtaW4tLG1heC19ZGV2aWNlLXdpZHRoKQogICAgIC8vIGFzc3VtZSBpZiB3ZSBoYXZl
IGEgZGV2aWNlLCBhc3N1bWUgbm9uLXplcm8KQEAgLTM5NywxMSArMzk3LDExIEBAIHN0YXRpYyBi
b29sIGhlaWdodE1lZGlhRmVhdHVyZUV2YWwoQ1NTVmFsdWUqIHZhbHVlLCBSZW5kZXJTdHlsZSog
c3R5bGUsIEZyYW1lKiBmCiAKICAgICBpZiAodmFsdWUpIHsKICAgICAgICAgaW50IGhlaWdodCA9
IHZpZXctPmxheW91dEhlaWdodCgpOwotICAgICAgICBpZiAoUmVuZGVyVmlldyogcmVuZGVyVmll
dyA9IGZyYW1lLT5kb2N1bWVudCgpLT5yZW5kZXJWaWV3KCkpCisgICAgICAgIGlmIChSZW5kZXJW
aWV3KiByZW5kZXJWaWV3ID0gZnJhbWUtPmRvY3VtZW50KCkucmVuZGVyVmlldygpKQogICAgICAg
ICAgICAgaGVpZ2h0ID0gYWRqdXN0Rm9yQWJzb2x1dGVab29tKGhlaWdodCwgKnJlbmRlclZpZXcp
OwotICAgICAgICBSZW5kZXJTdHlsZSogcm9vdFN0eWxlID0gZnJhbWUtPmRvY3VtZW50KCktPmRv
Y3VtZW50RWxlbWVudCgpLT5yZW5kZXJTdHlsZSgpOworICAgICAgICBSZW5kZXJTdHlsZSogcm9v
dFN0eWxlID0gZnJhbWUtPmRvY3VtZW50KCkuZG9jdW1lbnRFbGVtZW50KCktPnJlbmRlclN0eWxl
KCk7CiAgICAgICAgIGludCBsZW5ndGg7Ci0gICAgICAgIHJldHVybiBjb21wdXRlTGVuZ3RoKHZh
bHVlLCAhZnJhbWUtPmRvY3VtZW50KCktPmluUXVpcmtzTW9kZSgpLCBzdHlsZSwgcm9vdFN0eWxl
LCBsZW5ndGgpICYmIGNvbXBhcmVWYWx1ZShoZWlnaHQsIGxlbmd0aCwgb3ApOworICAgICAgICBy
ZXR1cm4gY29tcHV0ZUxlbmd0aCh2YWx1ZSwgIWZyYW1lLT5kb2N1bWVudCgpLmluUXVpcmtzTW9k
ZSgpLCBzdHlsZSwgcm9vdFN0eWxlLCBsZW5ndGgpICYmIGNvbXBhcmVWYWx1ZShoZWlnaHQsIGxl
bmd0aCwgb3ApOwogICAgIH0KIAogICAgIHJldHVybiB2aWV3LT5sYXlvdXRIZWlnaHQoKSAhPSAw
OwpAQCAtNDE1LDExICs0MTUsMTEgQEAgc3RhdGljIGJvb2wgd2lkdGhNZWRpYUZlYXR1cmVFdmFs
KENTU1ZhbHVlKiB2YWx1ZSwgUmVuZGVyU3R5bGUqIHN0eWxlLCBGcmFtZSogZnIKIAogICAgIGlm
ICh2YWx1ZSkgewogICAgICAgICBpbnQgd2lkdGggPSB2aWV3LT5sYXlvdXRXaWR0aCgpOwotICAg
ICAgICBpZiAoUmVuZGVyVmlldyogcmVuZGVyVmlldyA9IGZyYW1lLT5kb2N1bWVudCgpLT5yZW5k
ZXJWaWV3KCkpCisgICAgICAgIGlmIChSZW5kZXJWaWV3KiByZW5kZXJWaWV3ID0gZnJhbWUtPmRv
Y3VtZW50KCkucmVuZGVyVmlldygpKQogICAgICAgICAgICAgd2lkdGggPSBhZGp1c3RGb3JBYnNv
bHV0ZVpvb20od2lkdGgsICpyZW5kZXJWaWV3KTsKLSAgICAgICAgUmVuZGVyU3R5bGUqIHJvb3RT
dHlsZSA9IGZyYW1lLT5kb2N1bWVudCgpLT5kb2N1bWVudEVsZW1lbnQoKS0+cmVuZGVyU3R5bGUo
KTsKKyAgICAgICAgUmVuZGVyU3R5bGUqIHJvb3RTdHlsZSA9IGZyYW1lLT5kb2N1bWVudCgpLmRv
Y3VtZW50RWxlbWVudCgpLT5yZW5kZXJTdHlsZSgpOwogICAgICAgICBpbnQgbGVuZ3RoOwotICAg
ICAgICByZXR1cm4gY29tcHV0ZUxlbmd0aCh2YWx1ZSwgIWZyYW1lLT5kb2N1bWVudCgpLT5pblF1
aXJrc01vZGUoKSwgc3R5bGUsIHJvb3RTdHlsZSwgbGVuZ3RoKSAmJiBjb21wYXJlVmFsdWUod2lk
dGgsIGxlbmd0aCwgb3ApOworICAgICAgICByZXR1cm4gY29tcHV0ZUxlbmd0aCh2YWx1ZSwgIWZy
YW1lLT5kb2N1bWVudCgpLmluUXVpcmtzTW9kZSgpLCBzdHlsZSwgcm9vdFN0eWxlLCBsZW5ndGgp
ICYmIGNvbXBhcmVWYWx1ZSh3aWR0aCwgbGVuZ3RoLCBvcCk7CiAgICAgfQogCiAgICAgcmV0dXJu
IHZpZXctPmxheW91dFdpZHRoKCkgIT0gMDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nz
cy9TdHlsZU1lZGlhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9TdHlsZU1lZGlhLmNwcAppbmRl
eCBmNTRmNmIyLi40ZGFhNGY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9jc3MvU3R5bGVN
ZWRpYS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL1N0eWxlTWVkaWEuY3BwCkBAIC01NSwx
MyArNTUsMTMgQEAgYm9vbCBTdHlsZU1lZGlhOjptYXRjaE1lZGl1bShjb25zdCBTdHJpbmcmIHF1
ZXJ5KSBjb25zdAogICAgIGlmICghbV9mcmFtZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0g
ICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gbV9mcmFtZS0+ZG9jdW1lbnQoKTsKKyAgICBEb2N1bWVu
dCYgZG9jdW1lbnQgPSBtX2ZyYW1lLT5kb2N1bWVudCgpOwogICAgIEFTU0VSVChkb2N1bWVudCk7
Ci0gICAgRWxlbWVudCogZG9jdW1lbnRFbGVtZW50ID0gZG9jdW1lbnQtPmRvY3VtZW50RWxlbWVu
dCgpOworICAgIEVsZW1lbnQqIGRvY3VtZW50RWxlbWVudCA9IGRvY3VtZW50LmRvY3VtZW50RWxl
bWVudCgpOwogICAgIGlmICghZG9jdW1lbnRFbGVtZW50KQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAKLSAgICBSZWZQdHI8UmVuZGVyU3R5bGU+IHJvb3RTdHlsZSA9IGRvY3VtZW50LT5lbnN1cmVT
dHlsZVJlc29sdmVyKCkuc3R5bGVGb3JFbGVtZW50KGRvY3VtZW50RWxlbWVudCwgZG9jdW1lbnQt
PnJlbmRlclN0eWxlKCksIERpc2FsbG93U3R5bGVTaGFyaW5nLCBNYXRjaE9ubHlVc2VyQWdlbnRS
dWxlcyk7CisgICAgUmVmUHRyPFJlbmRlclN0eWxlPiByb290U3R5bGUgPSBkb2N1bWVudC5lbnN1
cmVTdHlsZVJlc29sdmVyKCkuc3R5bGVGb3JFbGVtZW50KGRvY3VtZW50RWxlbWVudCwgZG9jdW1l
bnQucmVuZGVyU3R5bGUoKSwgRGlzYWxsb3dTdHlsZVNoYXJpbmcsIE1hdGNoT25seVVzZXJBZ2Vu
dFJ1bGVzKTsKIAogICAgIFJlZlB0cjxNZWRpYVF1ZXJ5U2V0PiBtZWRpYSA9IE1lZGlhUXVlcnlT
ZXQ6OmNyZWF0ZSgpOwogICAgIGlmICghbWVkaWEtPnBhcnNlKHF1ZXJ5KSkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRG9j
dW1lbnQuY3BwCmluZGV4IDQ1YmI0N2QuLjRkZWRiMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9Eb2N1bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNw
cApAQCAtMzUyLDEyICszNTIsMTAgQEAgc3RhdGljIGJvb2wgY2FuQWNjZXNzQW5jZXN0b3IoY29u
c3QgU2VjdXJpdHlPcmlnaW4qIGFjdGl2ZVNlY3VyaXR5T3JpZ2luLCBGcmFtZSoKIAogICAgIGNv
bnN0IGJvb2wgaXNMb2NhbEFjdGl2ZU9yaWdpbiA9IGFjdGl2ZVNlY3VyaXR5T3JpZ2luLT5pc0xv
Y2FsKCk7CiAgICAgZm9yIChGcmFtZSogYW5jZXN0b3JGcmFtZSA9IHRhcmdldEZyYW1lOyBhbmNl
c3RvckZyYW1lOyBhbmNlc3RvckZyYW1lID0gYW5jZXN0b3JGcmFtZS0+dHJlZSgpLnBhcmVudCgp
KSB7Ci0gICAgICAgIERvY3VtZW50KiBhbmNlc3RvckRvY3VtZW50ID0gYW5jZXN0b3JGcmFtZS0+
ZG9jdW1lbnQoKTsKLSAgICAgICAgLy8gRklYTUU6IFNob3VsZCBiZSBhbiBBU1NFUlQ/IEZyYW1l
cyBzaG91bGQgYWx3YXkgaGF2ZSBkb2N1bWVudHMuCi0gICAgICAgIGlmICghYW5jZXN0b3JEb2N1
bWVudCkKLSAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICBEb2N1bWVudCYgYW5jZXN0
b3JEb2N1bWVudCA9IGFuY2VzdG9yRnJhbWUtPmRvY3VtZW50KCk7CisgICAgICAgIEFTU0VSVChh
bmNlc3RvckRvY3VtZW50KTsKIAotICAgICAgICBjb25zdCBTZWN1cml0eU9yaWdpbiogYW5jZXN0
b3JTZWN1cml0eU9yaWdpbiA9IGFuY2VzdG9yRG9jdW1lbnQtPnNlY3VyaXR5T3JpZ2luKCk7Cisg
ICAgICAgIGNvbnN0IFNlY3VyaXR5T3JpZ2luKiBhbmNlc3RvclNlY3VyaXR5T3JpZ2luID0gYW5j
ZXN0b3JEb2N1bWVudC5zZWN1cml0eU9yaWdpbigpOwogICAgICAgICBpZiAoYWN0aXZlU2VjdXJp
dHlPcmlnaW4tPmNhbkFjY2VzcyhhbmNlc3RvclNlY3VyaXR5T3JpZ2luKSkKICAgICAgICAgICAg
IHJldHVybiB0cnVlOwogICAgICAgICAKQEAgLTM3MywxMCArMzcxLDEwIEBAIHN0YXRpYyBib29s
IGNhbkFjY2Vzc0FuY2VzdG9yKGNvbnN0IFNlY3VyaXR5T3JpZ2luKiBhY3RpdmVTZWN1cml0eU9y
aWdpbiwgRnJhbWUqCiAKIHN0YXRpYyB2b2lkIHByaW50TmF2aWdhdGlvbkVycm9yTWVzc2FnZShG
cmFtZSogZnJhbWUsIGNvbnN0IFVSTCYgYWN0aXZlVVJMLCBjb25zdCBjaGFyKiByZWFzb24pCiB7
Ci0gICAgU3RyaW5nIG1lc3NhZ2UgPSAiVW5zYWZlIEphdmFTY3JpcHQgYXR0ZW1wdCB0byBpbml0
aWF0ZSBuYXZpZ2F0aW9uIGZvciBmcmFtZSB3aXRoIFVSTCAnIiArIGZyYW1lLT5kb2N1bWVudCgp
LT51cmwoKS5zdHJpbmcoKSArICInIGZyb20gZnJhbWUgd2l0aCBVUkwgJyIgKyBhY3RpdmVVUkwu
c3RyaW5nKCkgKyAiJy4gIiArIHJlYXNvbiArICJcbiI7CisgICAgU3RyaW5nIG1lc3NhZ2UgPSAi
VW5zYWZlIEphdmFTY3JpcHQgYXR0ZW1wdCB0byBpbml0aWF0ZSBuYXZpZ2F0aW9uIGZvciBmcmFt
ZSB3aXRoIFVSTCAnIiArIGZyYW1lLT5kb2N1bWVudCgpLnVybCgpLnN0cmluZygpICsgIicgZnJv
bSBmcmFtZSB3aXRoIFVSTCAnIiArIGFjdGl2ZVVSTC5zdHJpbmcoKSArICInLiAiICsgcmVhc29u
ICsgIlxuIjsKIAogICAgIC8vIEZJWE1FOiBzaG91bGQgd2UgcHJpbnQgdG8gdGhlIGNvbnNvbGUg
b2YgdGhlIGRvY3VtZW50IHBlcmZvcm1pbmcgdGhlIG5hdmlnYXRpb24gaW5zdGVhZD8KLSAgICBm
cmFtZS0+ZG9jdW1lbnQoKS0+ZG9tV2luZG93KCktPnByaW50RXJyb3JNZXNzYWdlKG1lc3NhZ2Up
OworICAgIGZyYW1lLT5kb2N1bWVudCgpLmRvbVdpbmRvdygpLT5wcmludEVycm9yTWVzc2FnZSht
ZXNzYWdlKTsKIH0KIAogdWludDY0X3QgRG9jdW1lbnQ6OnNfZ2xvYmFsVHJlZVZlcnNpb24gPSAw
OwpAQCAtMTk3MSwxMCArMTk2OSw5IEBAIHZvaWQgRG9jdW1lbnQ6OmNyZWF0ZVJlbmRlclRyZWUo
KQogc3RhdGljIHZvaWQgcGFnZVdoZWVsRXZlbnRIYW5kbGVyQ291bnRDaGFuZ2VkKFBhZ2UmIHBh
Z2UpCiB7CiAgICAgdW5zaWduZWQgY291bnQgPSAwOwotICAgIGZvciAoY29uc3QgRnJhbWUqIGZy
YW1lID0gJnBhZ2UubWFpbkZyYW1lKCk7IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50cmVlKCkudHJh
dmVyc2VOZXh0KCkpIHsKLSAgICAgICAgaWYgKERvY3VtZW50KiBkb2N1bWVudCA9IGZyYW1lLT5k
b2N1bWVudCgpKQotICAgICAgICAgICAgY291bnQgKz0gZG9jdW1lbnQtPndoZWVsRXZlbnRIYW5k
bGVyQ291bnQoKTsKLSAgICB9CisgICAgZm9yIChjb25zdCBGcmFtZSogZnJhbWUgPSAmcGFnZS5t
YWluRnJhbWUoKTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyZWUoKS50cmF2ZXJzZU5leHQoKSkK
KyAgICAgICAgY291bnQgKz0gZnJhbWUtPmRvY3VtZW50KCkud2hlZWxFdmVudEhhbmRsZXJDb3Vu
dCgpOworCiAgICAgcGFnZS5jaHJvbWUoKS5jbGllbnQoKS5udW1XaGVlbEV2ZW50SGFuZGxlcnND
aGFuZ2VkKGNvdW50KTsKIH0KIApAQCAtMjc3Miw3ICsyNzY5LDcgQEAgRnJhbWUqIERvY3VtZW50
OjpmaW5kVW5zYWZlUGFyZW50U2Nyb2xsUHJvcGFnYXRpb25Cb3VuZGFyeSgpCiAgICAgRnJhbWUq
IGFuY2VzdG9yRnJhbWUgPSBjdXJyZW50RnJhbWUtPnRyZWUoKS5wYXJlbnQoKTsKIAogICAgIHdo
aWxlIChhbmNlc3RvckZyYW1lKSB7Ci0gICAgICAgIGlmICghYW5jZXN0b3JGcmFtZS0+ZG9jdW1l
bnQoKS0+c2VjdXJpdHlPcmlnaW4oKS0+Y2FuQWNjZXNzKHNlY3VyaXR5T3JpZ2luKCkpKQorICAg
ICAgICBpZiAoIWFuY2VzdG9yRnJhbWUtPmRvY3VtZW50KCkuc2VjdXJpdHlPcmlnaW4oKS0+Y2Fu
QWNjZXNzKHNlY3VyaXR5T3JpZ2luKCkpKQogICAgICAgICAgICAgcmV0dXJuIGN1cnJlbnRGcmFt
ZTsKICAgICAgICAgY3VycmVudEZyYW1lID0gYW5jZXN0b3JGcmFtZTsKICAgICAgICAgYW5jZXN0
b3JGcmFtZSA9IGFuY2VzdG9yRnJhbWUtPnRyZWUoKS5wYXJlbnQoKTsKQEAgLTQyNDIsNyArNDIz
OSw3IEBAIGJvb2wgRG9jdW1lbnQ6OnNob3VsZENyZWF0ZVJlbmRlcmVycygpCiBzdGF0aWMgRWRp
dG9yOjpDb21tYW5kIGNvbW1hbmQoRG9jdW1lbnQqIGRvY3VtZW50LCBjb25zdCBTdHJpbmcmIGNv
bW1hbmROYW1lLCBib29sIHVzZXJJbnRlcmZhY2UgPSBmYWxzZSkKIHsKICAgICBGcmFtZSogZnJh
bWUgPSBkb2N1bWVudC0+ZnJhbWUoKTsKLSAgICBpZiAoIWZyYW1lIHx8IGZyYW1lLT5kb2N1bWVu
dCgpICE9IGRvY3VtZW50KQorICAgIGlmICghZnJhbWUgfHwgJmZyYW1lLT5kb2N1bWVudCgpICE9
IGRvY3VtZW50KQogICAgICAgICByZXR1cm4gRWRpdG9yOjpDb21tYW5kKCk7CiAKICAgICBkb2N1
bWVudC0+dXBkYXRlU3R5bGVJZk5lZWRlZCgpOwpAQCAtNDMyMCw4ICs0MzE3LDggQEAgdm9pZCBE
b2N1bWVudDo6c2V0VHJhbnNmb3JtU291cmNlKHN0ZDo6dW5pcXVlX3B0cjxUcmFuc2Zvcm1Tb3Vy
Y2U+IHNvdXJjZSkKIHZvaWQgRG9jdW1lbnQ6OnNldERlc2lnbk1vZGUoSW5oZXJpdGVkQm9vbCB2
YWx1ZSkKIHsKICAgICBtX2Rlc2lnbk1vZGUgPSB2YWx1ZTsKLSAgICBmb3IgKEZyYW1lKiBmcmFt
ZSA9IG1fZnJhbWU7IGZyYW1lICYmIGZyYW1lLT5kb2N1bWVudCgpOyBmcmFtZSA9IGZyYW1lLT50
cmVlKCkudHJhdmVyc2VOZXh0KG1fZnJhbWUpKQotICAgICAgICBmcmFtZS0+ZG9jdW1lbnQoKS0+
c2NoZWR1bGVGb3JjZWRTdHlsZVJlY2FsYygpOworICAgIGZvciAoRnJhbWUqIGZyYW1lID0gbV9m
cmFtZTsgZnJhbWUgJiYgJmZyYW1lLT5kb2N1bWVudCgpOyBmcmFtZSA9IGZyYW1lLT50cmVlKCku
dHJhdmVyc2VOZXh0KG1fZnJhbWUpKQorICAgICAgICBmcmFtZS0+ZG9jdW1lbnQoKS5zY2hlZHVs
ZUZvcmNlZFN0eWxlUmVjYWxjKCk7CiB9CiAKIERvY3VtZW50OjpJbmhlcml0ZWRCb29sIERvY3Vt
ZW50OjpnZXREZXNpZ25Nb2RlKCkgY29uc3QKQEAgLTQzNDUsNyArNDM0Miw3IEBAIERvY3VtZW50
KiBEb2N1bWVudDo6cGFyZW50RG9jdW1lbnQoKSBjb25zdAogICAgIEZyYW1lKiBwYXJlbnQgPSBt
X2ZyYW1lLT50cmVlKCkucGFyZW50KCk7CiAgICAgaWYgKCFwYXJlbnQpCiAgICAgICAgIHJldHVy
biBudWxscHRyOwotICAgIHJldHVybiBwYXJlbnQtPmRvY3VtZW50KCk7CisgICAgcmV0dXJuICZw
YXJlbnQtPmRvY3VtZW50KCk7CiB9CiAKIERvY3VtZW50JiBEb2N1bWVudDo6dG9wRG9jdW1lbnQo
KSBjb25zdApAQCAtNDM1Niw3ICs0MzUzLDcgQEAgRG9jdW1lbnQmIERvY3VtZW50Ojp0b3BEb2N1
bWVudCgpIGNvbnN0CiAgICAgICAgIGlmICghbV9mcmFtZSkKICAgICAgICAgICAgIHJldHVybiBj
b25zdF9jYXN0PERvY3VtZW50Jj4oKnRoaXMpOwogICAgICAgICAvLyBUaGlzIHNob3VsZCBhbHdh
eXMgYmUgbm9uLW51bGwuCi0gICAgICAgIERvY3VtZW50KiBtYWluRnJhbWVEb2N1bWVudCA9IG1f
ZnJhbWUtPm1haW5GcmFtZSgpLmRvY3VtZW50KCk7CisgICAgICAgIERvY3VtZW50KiBtYWluRnJh
bWVEb2N1bWVudCA9ICZtX2ZyYW1lLT5tYWluRnJhbWUoKS5kb2N1bWVudCgpOwogICAgICAgICBy
ZXR1cm4gbWFpbkZyYW1lRG9jdW1lbnQgPyAqbWFpbkZyYW1lRG9jdW1lbnQgOiBjb25zdF9jYXN0
PERvY3VtZW50Jj4oKnRoaXMpOwogICAgIH0KIApAQCAtNDY4NiwxNSArNDY4MywxNSBAQCB2b2lk
IERvY3VtZW50Ojppbml0U2VjdXJpdHlDb250ZXh0KCkKICAgICAgICAgLy8gYnV0IHdlJ3JlIGFs
c28gc2FuZGJveGVkLCB0aGUgb25seSB0aGluZyB3ZSBpbmhlcml0IGlzIHRoZSBhYmlsaXR5CiAg
ICAgICAgIC8vIHRvIGxvYWQgbG9jYWwgcmVzb3VyY2VzLiBUaGlzIGxldHMgYWJvdXQ6Ymxhbmsg
aWZyYW1lcyBpbiBmaWxlOi8vCiAgICAgICAgIC8vIFVSTCBkb2N1bWVudHMgbG9hZCBpbWFnZXMg
YW5kIG90aGVyIHJlc291cmNlcyBmcm9tIHRoZSBmaWxlIHN5c3RlbS4KLSAgICAgICAgaWYgKG93
bmVyRnJhbWUtPmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCktPmNhbkxvYWRMb2NhbFJlc291
cmNlcygpKQorICAgICAgICBpZiAob3duZXJGcmFtZS0+ZG9jdW1lbnQoKS5zZWN1cml0eU9yaWdp
bigpLT5jYW5Mb2FkTG9jYWxSZXNvdXJjZXMoKSkKICAgICAgICAgICAgIHNlY3VyaXR5T3JpZ2lu
KCktPmdyYW50TG9hZExvY2FsUmVzb3VyY2VzKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
LSAgICBtX2Nvb2tpZVVSTCA9IG93bmVyRnJhbWUtPmRvY3VtZW50KCktPmNvb2tpZVVSTCgpOwor
ICAgIG1fY29va2llVVJMID0gb3duZXJGcmFtZS0+ZG9jdW1lbnQoKS5jb29raWVVUkwoKTsKICAg
ICAvLyBXZSBhbGlhcyB0aGUgU2VjdXJpdHlPcmlnaW5zIHRvIG1hdGNoIEZpcmVmb3gsIHNlZSBC
dWcgMTUzMTMKICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MTUzMTMKLSAgICBzZXRTZWN1cml0eU9yaWdpbihvd25lckZyYW1lLT5kb2N1bWVudCgpLT5zZWN1
cml0eU9yaWdpbigpKTsKKyAgICBzZXRTZWN1cml0eU9yaWdpbihvd25lckZyYW1lLT5kb2N1bWVu
dCgpLnNlY3VyaXR5T3JpZ2luKCkpOwogfQogCiB2b2lkIERvY3VtZW50Ojppbml0Q29udGVudFNl
Y3VyaXR5UG9saWN5KCkKQEAgLTU3ODQsNyArNTc4MSw4IEBAIHZvaWQgRG9jdW1lbnQ6OmRpZFJl
bW92ZVRvdWNoRXZlbnRIYW5kbGVyKE5vZGUqIGhhbmRsZXIpCiAgICAgaWYgKG1fdG91Y2hFdmVu
dFRhcmdldHMtPnNpemUoKSkKICAgICAgICAgcmV0dXJuOwogICAgIGZvciAoY29uc3QgRnJhbWUq
IGZyYW1lID0gJnBhZ2UtPm1haW5GcmFtZSgpOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgp
LnRyYXZlcnNlTmV4dCgpKSB7Ci0gICAgICAgIGlmIChmcmFtZS0+ZG9jdW1lbnQoKSAmJiBmcmFt
ZS0+ZG9jdW1lbnQoKS0+aGFzVG91Y2hFdmVudEhhbmRsZXJzKCkpCisgICAgICAgIEFTU0VSVChm
cmFtZS0+ZG9jdW1lbnQoKSk7CisgICAgICAgIGlmIChmcmFtZS0+ZG9jdW1lbnQoKS5oYXNUb3Vj
aEV2ZW50SGFuZGxlcnMoKSkKICAgICAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgcGFnZS0+
Y2hyb21lKCkuY2xpZW50KCkubmVlZFRvdWNoRXZlbnRzKGZhbHNlKTsKQEAgLTU4MTgsNyArNTgx
Niw3IEBAIERvY3VtZW50TG9hZGVyKiBEb2N1bWVudDo6bG9hZGVyKCkgY29uc3QKICAgICBpZiAo
IWxvYWRlcikKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgCi0gICAgaWYgKG1fZnJhbWUt
PmRvY3VtZW50KCkgIT0gdGhpcykKKyAgICBpZiAoJm1fZnJhbWUuZG9jdW1lbnQoKSAhPSB0aGlz
KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAKICAgICByZXR1cm4gbG9hZGVyOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1VzZXJUeXBpbmdHZXN0dXJlSW5kaWNhdG9yLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Vc2VyVHlwaW5nR2VzdHVyZUluZGljYXRvci5jcHAKaW5k
ZXggYWVhYWJlYy4uODNiMzlhYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL1VzZXJU
eXBpbmdHZXN0dXJlSW5kaWNhdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vVXNlclR5
cGluZ0dlc3R1cmVJbmRpY2F0b3IuY3BwCkBAIC01NCw3ICs1NCw3IEBAIFVzZXJUeXBpbmdHZXN0
dXJlSW5kaWNhdG9yOjpVc2VyVHlwaW5nR2VzdHVyZUluZGljYXRvcihGcmFtZSYgZnJhbWUpCiAg
ICAgLCBtX3ByZXZpb3VzRm9jdXNlZE5vZGUoZm9jdXNlZE5vZGUoKSkKIHsKICAgICBzX3Byb2Nl
c3NpbmdVc2VyVHlwaW5nR2VzdHVyZSA9IHRydWU7Ci0gICAgZm9jdXNlZE5vZGUoKSA9IGZyYW1l
LmRvY3VtZW50KCkgPyBmcmFtZS5kb2N1bWVudCgpLT5mb2N1c2VkRWxlbWVudCgpIDogMDsKKyAg
ICBmb2N1c2VkTm9kZSgpID0gZnJhbWUuZG9jdW1lbnQoKS5mb2N1c2VkRWxlbWVudCgpOwogfQog
CiBVc2VyVHlwaW5nR2VzdHVyZUluZGljYXRvcjo6flVzZXJUeXBpbmdHZXN0dXJlSW5kaWNhdG9y
KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvQWx0ZXJuYXRpdmVUZXh0Q29u
dHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0FsdGVybmF0aXZlVGV4dENvbnRy
b2xsZXIuY3BwCmluZGV4IDBlYTQxNzMuLjFhYjZlZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2VkaXRpbmcvQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlci5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9BbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyLmNwcApAQCAtMTkyLDcgKzE5
Miw3IEBAIGJvb2wgQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlcjo6aGFzUGVuZGluZ0NvcnJlY3Rp
b24oKSBjb25zdAogCiBib29sIEFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXI6OmlzU3BlbGxpbmdN
YXJrZXJBbGxvd2VkKFBhc3NSZWZQdHI8UmFuZ2U+IG1pc3NwZWxsaW5nUmFuZ2UpIGNvbnN0CiB7
Ci0gICAgcmV0dXJuICFtX2ZyYW1lLmRvY3VtZW50KCktPm1hcmtlcnMoKS5oYXNNYXJrZXJzKG1p
c3NwZWxsaW5nUmFuZ2UuZ2V0KCksIERvY3VtZW50TWFya2VyOjpTcGVsbENoZWNraW5nRXhlbXB0
aW9uKTsKKyAgICByZXR1cm4gIW1fZnJhbWUuZG9jdW1lbnQoKS5tYXJrZXJzKCkuaGFzTWFya2Vy
cyhtaXNzcGVsbGluZ1JhbmdlLmdldCgpLCBEb2N1bWVudE1hcmtlcjo6U3BlbGxDaGVja2luZ0V4
ZW1wdGlvbik7CiB9CiAKIHZvaWQgQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlcjo6c2hvdyhQYXNz
UmVmUHRyPFJhbmdlPiByYW5nZVRvUmVwbGFjZSwgY29uc3QgU3RyaW5nJiByZXBsYWNlbWVudCkK
QEAgLTMxNiwxMSArMzE2LDExIEBAIHZvaWQgQWx0ZXJuYXRpdmVUZXh0Q29udHJvbGxlcjo6cmVz
cG9uZFRvVW5hcHBsaWVkU3BlbGxDb3JyZWN0aW9uKGNvbnN0IFZpc2libGVTCiB7CiAgICAgaWYg
KEFsdGVybmF0aXZlVGV4dENsaWVudCogY2xpZW50ID0gYWx0ZXJuYXRpdmVUZXh0Q2xpZW50KCkp
CiAgICAgICAgIGNsaWVudC0+cmVjb3JkQXV0b2NvcnJlY3Rpb25SZXNwb25zZShBdXRvY29ycmVj
dGlvblJldmVydGVkLCBjb3JyZWN0ZWQsIGNvcnJlY3Rpb24pOwotICAgIG1fZnJhbWUuZG9jdW1l
bnQoKS0+dXBkYXRlTGF5b3V0KCk7CisgICAgbV9mcmFtZS5kb2N1bWVudCgpLnVwZGF0ZUxheW91
dCgpOwogICAgIG1fZnJhbWUuc2VsZWN0aW9uKCkuc2V0U2VsZWN0aW9uKHNlbGVjdGlvbk9mQ29y
cmVjdGVkLCBGcmFtZVNlbGVjdGlvbjo6ZGVmYXVsdFNldFNlbGVjdGlvbk9wdGlvbnMoKSB8IEZy
YW1lU2VsZWN0aW9uOjpTcGVsbENvcnJlY3Rpb25UcmlnZ2VyZWQpOwogICAgIFJlZlB0cjxSYW5n
ZT4gcmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKCptX2ZyYW1lLmRvY3VtZW50KCksIG1fZnJhbWUuc2Vs
ZWN0aW9uKCkuc2VsZWN0aW9uKCkuc3RhcnQoKSwgbV9mcmFtZS5zZWxlY3Rpb24oKS5zZWxlY3Rp
b24oKS5lbmQoKSk7CiAKLSAgICBEb2N1bWVudE1hcmtlckNvbnRyb2xsZXImIG1hcmtlcnMgPSBt
X2ZyYW1lLmRvY3VtZW50KCktPm1hcmtlcnMoKTsKKyAgICBEb2N1bWVudE1hcmtlckNvbnRyb2xs
ZXImIG1hcmtlcnMgPSBtX2ZyYW1lLmRvY3VtZW50KCkubWFya2VycygpOwogICAgIG1hcmtlcnMu
cmVtb3ZlTWFya2VycyhyYW5nZS5nZXQoKSwgRG9jdW1lbnRNYXJrZXI6OlNwZWxsaW5nIHwgRG9j
dW1lbnRNYXJrZXI6OkF1dG9jb3JyZWN0ZWQsIERvY3VtZW50TWFya2VyQ29udHJvbGxlcjo6UmVt
b3ZlUGFydGlhbGx5T3ZlcmxhcHBpbmdNYXJrZXIpOwogICAgIG1hcmtlcnMuYWRkTWFya2VyKHJh
bmdlLmdldCgpLCBEb2N1bWVudE1hcmtlcjo6UmVwbGFjZW1lbnQpOwogICAgIG1hcmtlcnMuYWRk
TWFya2VyKHJhbmdlLmdldCgpLCBEb2N1bWVudE1hcmtlcjo6U3BlbGxDaGVja2luZ0V4ZW1wdGlv
bik7CkBAIC00ODQsNyArNDg0LDcgQEAgdm9pZCBBbHRlcm5hdGl2ZVRleHRDb250cm9sbGVyOjpy
ZXNwb25kVG9DaGFuZ2VkU2VsZWN0aW9uKGNvbnN0IFZpc2libGVTZWxlY3Rpb24KIHZvaWQgQWx0
ZXJuYXRpdmVUZXh0Q29udHJvbGxlcjo6cmVzcG9uZFRvQXBwbGllZEVkaXRpbmcoQ29tcG9zaXRl
RWRpdENvbW1hbmQqIGNvbW1hbmQpCiB7CiAgICAgaWYgKGNvbW1hbmQtPmlzVG9wTGV2ZWxDb21t
YW5kKCkgJiYgIWNvbW1hbmQtPnNob3VsZFJldGFpbkF1dG9jb3JyZWN0aW9uSW5kaWNhdG9yKCkp
Ci0gICAgICAgIG1fZnJhbWUuZG9jdW1lbnQoKS0+bWFya2VycygpLnJlbW92ZU1hcmtlcnMoRG9j
dW1lbnRNYXJrZXI6OkNvcnJlY3Rpb25JbmRpY2F0b3IpOworICAgICAgICBtX2ZyYW1lLmRvY3Vt
ZW50KCkubWFya2VycygpLnJlbW92ZU1hcmtlcnMoRG9jdW1lbnRNYXJrZXI6OkNvcnJlY3Rpb25J
bmRpY2F0b3IpOwogCiAgICAgbWFya1ByZWNlZGluZ1doaXRlc3BhY2VGb3JEZWxldGVkQXV0b2Nv
cnJlY3Rpb25BZnRlckNvbW1hbmQoY29tbWFuZCk7CiAgICAgbV9vcmlnaW5hbFN0cmluZ0Zvckxh
c3REZWxldGVkQXV0b2NvcnJlY3Rpb24gPSBTdHJpbmcoKTsKQEAgLTQ5Nyw3ICs0OTcsNyBAQCB2
b2lkIEFsdGVybmF0aXZlVGV4dENvbnRyb2xsZXI6OnJlc3BvbmRUb1VuYXBwbGllZEVkaXRpbmco
RWRpdENvbW1hbmRDb21wb3NpdGlvbgogICAgIFJlZlB0cjxSYW5nZT4gcmFuZ2UgPSBSYW5nZTo6
Y3JlYXRlKCptX2ZyYW1lLmRvY3VtZW50KCksIGNvbW1hbmQtPnN0YXJ0aW5nU2VsZWN0aW9uKCku
c3RhcnQoKSwgY29tbWFuZC0+c3RhcnRpbmdTZWxlY3Rpb24oKS5lbmQoKSk7CiAgICAgaWYgKCFy
YW5nZSkKICAgICAgICAgcmV0dXJuOwotICAgIERvY3VtZW50TWFya2VyQ29udHJvbGxlciYgbWFy
a2VycyA9IG1fZnJhbWUuZG9jdW1lbnQoKS0+bWFya2VycygpOworICAgIERvY3VtZW50TWFya2Vy
Q29udHJvbGxlciYgbWFya2VycyA9IG1fZnJhbWUuZG9jdW1lbnQoKS5tYXJrZXJzKCk7CiAgICAg
bWFya2Vycy5hZGRNYXJrZXIocmFuZ2UuZ2V0KCksIERvY3VtZW50TWFya2VyOjpSZXBsYWNlbWVu
dCk7CiAgICAgbWFya2Vycy5hZGRNYXJrZXIocmFuZ2UuZ2V0KCksIERvY3VtZW50TWFya2VyOjpT
cGVsbENoZWNraW5nRXhlbXB0aW9uKTsKIH0KQEAgLTU5NCwxMiArNTk0LDEyIEBAIHZvaWQgQWx0
ZXJuYXRpdmVUZXh0Q29udHJvbGxlcjo6bWFya1ByZWNlZGluZ1doaXRlc3BhY2VGb3JEZWxldGVk
QXV0b2NvcnJlY3Rpb25BCiAgICAgLy8gTWFyayB0aGlzIHdoaXRlc3BhY2UgdG8gaW5kaWNhdGUg
d2UgaGF2ZSBkZWxldGVkIGFuIGF1dG9jb3JyZWN0aW9uIGZvbGxvd2luZyB0aGlzCiAgICAgLy8g
d2hpdGVzcGFjZS4gU28gaWYgdGhlIHVzZXIgdHlwZXMgdGhlIHNhbWUgb3JpZ2luYWwgd29yZCBh
Z2FpbiBhdCB0aGlzIHBvc2l0aW9uLCB3ZQogICAgIC8vIHdvbid0IGF1dG9jb3JyZWN0IGl0IGFn
YWluLgotICAgIG1fZnJhbWUuZG9jdW1lbnQoKS0+bWFya2VycygpLmFkZE1hcmtlcihwcmVjZWRp
bmdDaGFyYWN0ZXJSYW5nZS5nZXQoKSwgRG9jdW1lbnRNYXJrZXI6OkRlbGV0ZWRBdXRvY29ycmVj
dGlvbiwgbV9vcmlnaW5hbFN0cmluZ0Zvckxhc3REZWxldGVkQXV0b2NvcnJlY3Rpb24pOworICAg
IG1fZnJhbWUuZG9jdW1lbnQoKS5tYXJrZXJzKCkuYWRkTWFya2VyKHByZWNlZGluZ0NoYXJhY3Rl
clJhbmdlLmdldCgpLCBEb2N1bWVudE1hcmtlcjo6RGVsZXRlZEF1dG9jb3JyZWN0aW9uLCBtX29y
aWdpbmFsU3RyaW5nRm9yTGFzdERlbGV0ZWRBdXRvY29ycmVjdGlvbik7CiB9CiAKIGJvb2wgQWx0
ZXJuYXRpdmVUZXh0Q29udHJvbGxlcjo6cHJvY2Vzc01hcmtlcnNPblRleHRUb0JlUmVwbGFjZWRC
eVJlc3VsdChjb25zdCBUZXh0Q2hlY2tpbmdSZXN1bHQqIHJlc3VsdCwgUmFuZ2UqIHJhbmdlV2l0
aEFsdGVybmF0aXZlLCBjb25zdCBTdHJpbmcmIHN0cmluZ1RvQmVSZXBsYWNlZCkKIHsKLSAgICBE
b2N1bWVudE1hcmtlckNvbnRyb2xsZXImIG1hcmtlckNvbnRyb2xsZXIgPSBtX2ZyYW1lLmRvY3Vt
ZW50KCktPm1hcmtlcnMoKTsKKyAgICBEb2N1bWVudE1hcmtlckNvbnRyb2xsZXImIG1hcmtlckNv
bnRyb2xsZXIgPSBtX2ZyYW1lLmRvY3VtZW50KCkubWFya2VycygpOwogICAgIGlmIChtYXJrZXJD
b250cm9sbGVyLmhhc01hcmtlcnMocmFuZ2VXaXRoQWx0ZXJuYXRpdmUsIERvY3VtZW50TWFya2Vy
OjpSZXBsYWNlbWVudCkpIHsKICAgICAgICAgaWYgKHJlc3VsdC0+dHlwZSA9PSBUZXh0Q2hlY2tp
bmdUeXBlQ29ycmVjdGlvbikKICAgICAgICAgICAgIHJlY29yZFNwZWxsY2hlY2tlclJlc3BvbnNl
Rm9yTW9kaWZpZWRDb3JyZWN0aW9uKHJhbmdlV2l0aEFsdGVybmF0aXZlLCBzdHJpbmdUb0JlUmVw
bGFjZWQsIHJlc3VsdC0+cmVwbGFjZW1lbnQpOwpAQCAtNjg1LDE0ICs2ODUsMTQgQEAgYm9vbCBB
bHRlcm5hdGl2ZVRleHRDb250cm9sbGVyOjppbnNlcnREaWN0YXRlZFRleHQoY29uc3QgU3RyaW5n
JiB0ZXh0LCBjb25zdCBWZWMKICAgICBpZiAodHJpZ2dlcmluZ0V2ZW50KQogICAgICAgICB0YXJn
ZXQgPSB0cmlnZ2VyaW5nRXZlbnQtPnRhcmdldCgpOwogICAgIGVsc2UKLSAgICAgICAgdGFyZ2V0
ID0gZXZlbnRUYXJnZXRFbGVtZW50Rm9yRG9jdW1lbnQobV9mcmFtZS5kb2N1bWVudCgpKTsKKyAg
ICAgICAgdGFyZ2V0ID0gZXZlbnRUYXJnZXRFbGVtZW50Rm9yRG9jdW1lbnQoJm1fZnJhbWUuZG9j
dW1lbnQoKSk7CiAgICAgaWYgKCF0YXJnZXQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAg
IGlmIChGcmFtZVZpZXcqIHZpZXcgPSBtX2ZyYW1lLnZpZXcoKSkKICAgICAgICAgdmlldy0+ZGlz
YWJsZUxheWVyRmx1c2hUaHJvdHRsaW5nVGVtcG9yYXJpbHlGb3JJbnRlcmFjdGlvbigpOwogCi0g
ICAgUmVmUHRyPFRleHRFdmVudD4gZXZlbnQgPSBUZXh0RXZlbnQ6OmNyZWF0ZUZvckRpY3RhdGlv
bihtX2ZyYW1lLmRvY3VtZW50KCktPmRvbVdpbmRvdygpLCB0ZXh0LCBkaWN0YXRpb25BbHRlcm5h
dGl2ZXMpOworICAgIFJlZlB0cjxUZXh0RXZlbnQ+IGV2ZW50ID0gVGV4dEV2ZW50OjpjcmVhdGVG
b3JEaWN0YXRpb24obV9mcmFtZS5kb2N1bWVudCgpLmRvbVdpbmRvdygpLCB0ZXh0LCBkaWN0YXRp
b25BbHRlcm5hdGl2ZXMpOwogICAgIGV2ZW50LT5zZXRVbmRlcmx5aW5nRXZlbnQodHJpZ2dlcmlu
Z0V2ZW50KTsKIAogICAgIHRhcmdldC0+ZGlzcGF0Y2hFdmVudChldmVudCwgSUdOT1JFX0VYQ0VQ
VElPTik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0RlbGV0ZUJ1dHRvbkNv
bnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9EZWxldGVCdXR0b25Db250cm9s
bGVyLmNwcAppbmRleCBmYjI4NzdjLi4zMjExMDU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9lZGl0aW5nL0RlbGV0ZUJ1dHRvbkNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvRGVsZXRlQnV0dG9uQ29udHJvbGxlci5jcHAKQEAgLTI3OCw3ICsyNzgsNyBAQCB2
b2lkIERlbGV0ZUJ1dHRvbkNvbnRyb2xsZXI6OnNob3coSFRNTEVsZW1lbnQqIGVsZW1lbnQpCiAg
ICAgICAgIHJldHVybjsKIAogICAgIC8vIHdlIHJlbHkgb24gdGhlIHJlbmRlcmVyIGhhdmluZyBj
dXJyZW50IGluZm9ybWF0aW9uLCBzbyB3ZSBzaG91bGQgdXBkYXRlIHRoZSBsYXlvdXQgaWYgbmVl
ZGVkCi0gICAgbV9mcmFtZS5kb2N1bWVudCgpLT51cGRhdGVMYXlvdXRJZ25vcmVQZW5kaW5nU3R5
bGVzaGVldHMoKTsKKyAgICBtX2ZyYW1lLmRvY3VtZW50KCkudXBkYXRlTGF5b3V0SWdub3JlUGVu
ZGluZ1N0eWxlc2hlZXRzKCk7CiAKICAgICBtX3RhcmdldCA9IGVsZW1lbnQ7CiAKQEAgLTMzOCw3
ICszMzgsNyBAQCB2b2lkIERlbGV0ZUJ1dHRvbkNvbnRyb2xsZXI6OmVuYWJsZSgpCiAgICAgICAg
IC8vIERldGVybWluaW5nIGlmIHRoZSBlbGVtZW50IGlzIGRlbGV0YWJsZSBjdXJyZW50bHkgZGVw
ZW5kcyBvbiBzdHlsZQogICAgICAgICAvLyBiZWNhdXNlIHdoZXRoZXIgc29tZXRoaW5nIGlzIGVk
aXRhYmxlIGRlcGVuZHMgb24gc3R5bGUsIHNvIHdlIG5lZWQKICAgICAgICAgLy8gdG8gcmVjYWxj
dWxhdGUgc3R5bGUgYmVmb3JlIGNhbGxpbmcgZW5jbG9zaW5nRGVsZXRhYmxlRWxlbWVudC4KLSAg
ICAgICAgbV9mcmFtZS5kb2N1bWVudCgpLT51cGRhdGVTdHlsZUlmTmVlZGVkKCk7CisgICAgICAg
IG1fZnJhbWUuZG9jdW1lbnQoKS51cGRhdGVTdHlsZUlmTmVlZGVkKCk7CiAgICAgICAgIHNob3co
ZW5jbG9zaW5nRGVsZXRhYmxlRWxlbWVudChtX2ZyYW1lLnNlbGVjdGlvbigpLnNlbGVjdGlvbigp
KSk7CiAgICAgfQogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0Vk
aXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvci5jcHAKaW5kZXggMWYzZjBl
Yy4uNzY4NWIyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9FZGl0b3IuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yLmNwcApAQCAtMzYwNyw3ICszNjA3
LDcgQEAgdm9pZCBFZGl0b3I6OnRvZ2dsZU92ZXJ3cml0ZU1vZGVFbmFibGVkKCkKIERvY3VtZW50
JiBFZGl0b3I6OmRvY3VtZW50KCkgY29uc3QKIHsKICAgICBBU1NFUlQobV9mcmFtZS5kb2N1bWVu
dCgpKTsKLSAgICByZXR1cm4gKm1fZnJhbWUuZG9jdW1lbnQoKTsKKyAgICByZXR1cm4gbV9mcmFt
ZS5kb2N1bWVudCgpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvckNvbW1hbmQuY3BwIGIvU291cmNlL1dlYkNvcmUv
ZWRpdGluZy9FZGl0b3JDb21tYW5kLmNwcAppbmRleCAyZmE4YjgyLi5mMDNkY2FhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0VkaXRvckNvbW1hbmQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2VkaXRpbmcvRWRpdG9yQ29tbWFuZC5jcHAKQEAgLTE5MiwxMyArMTkyLDEzIEBA
IHN0YXRpYyBib29sIGV4ZWN1dGVBcHBseVBhcmFncmFwaFN0eWxlKEZyYW1lJiBmcmFtZSwgRWRp
dG9yQ29tbWFuZFNvdXJjZSBzb3VyY2UsCiBzdGF0aWMgYm9vbCBleGVjdXRlSW5zZXJ0RnJhZ21l
bnQoRnJhbWUmIGZyYW1lLCBQYXNzUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGZyYWdtZW50KQog
ewogICAgIEFTU0VSVChmcmFtZS5kb2N1bWVudCgpKTsKLSAgICBhcHBseUNvbW1hbmQoUmVwbGFj
ZVNlbGVjdGlvbkNvbW1hbmQ6OmNyZWF0ZSgqZnJhbWUuZG9jdW1lbnQoKSwgZnJhZ21lbnQsIFJl
cGxhY2VTZWxlY3Rpb25Db21tYW5kOjpQcmV2ZW50TmVzdGluZywgRWRpdEFjdGlvblVuc3BlY2lm
aWVkKSk7CisgICAgYXBwbHlDb21tYW5kKFJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjpjcmVhdGUo
ZnJhbWUuZG9jdW1lbnQoKSwgZnJhZ21lbnQsIFJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjpQcmV2
ZW50TmVzdGluZywgRWRpdEFjdGlvblVuc3BlY2lmaWVkKSk7CiAgICAgcmV0dXJuIHRydWU7CiB9
CiAKIHN0YXRpYyBib29sIGV4ZWN1dGVJbnNlcnROb2RlKEZyYW1lJiBmcmFtZSwgUGFzc1JlZlB0
cjxOb2RlPiBjb250ZW50KQogewotICAgIFJlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBmcmFnbWVu
dCA9IERvY3VtZW50RnJhZ21lbnQ6OmNyZWF0ZSgqZnJhbWUuZG9jdW1lbnQoKSk7CisgICAgUmVm
UHRyPERvY3VtZW50RnJhZ21lbnQ+IGZyYWdtZW50ID0gRG9jdW1lbnRGcmFnbWVudDo6Y3JlYXRl
KGZyYW1lLmRvY3VtZW50KCkpOwogICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwogICAgIGZyYWdt
ZW50LT5hcHBlbmRDaGlsZChjb250ZW50LCBlYyk7CiAgICAgaWYgKGVjKQpAQCAtMjQ4LDcgKzI0
OCw3IEBAIHN0YXRpYyBUcmlTdGF0ZSBzdGF0ZVRleHRXcml0aW5nRGlyZWN0aW9uKEZyYW1lJiBm
cmFtZSwgV3JpdGluZ0RpcmVjdGlvbiBkaXJlY3RpCiAKIHN0YXRpYyB1bnNpZ25lZCB2ZXJ0aWNh
bFNjcm9sbERpc3RhbmNlKEZyYW1lJiBmcmFtZSkKIHsKLSAgICBFbGVtZW50KiBmb2N1c2VkRWxl
bWVudCA9IGZyYW1lLmRvY3VtZW50KCktPmZvY3VzZWRFbGVtZW50KCk7CisgICAgRWxlbWVudCog
Zm9jdXNlZEVsZW1lbnQgPSBmcmFtZS5kb2N1bWVudCgpLmZvY3VzZWRFbGVtZW50KCk7CiAgICAg
aWYgKCFmb2N1c2VkRWxlbWVudCkKICAgICAgICAgcmV0dXJuIDA7CiAgICAgYXV0byByZW5kZXJl
ciA9IGZvY3VzZWRFbGVtZW50LT5yZW5kZXJlcigpOwpAQCAtMjg4LDcgKzI4OCw3IEBAIHN0YXRp
YyBib29sIGV4ZWN1dGVDcmVhdGVMaW5rKEZyYW1lJiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21t
YW5kU291cmNlLCBjb25zdCBTCiAgICAgaWYgKHZhbHVlLmlzRW1wdHkoKSkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogICAgIEFTU0VSVChmcmFtZS5kb2N1bWVudCgpKTsKLSAgICBhcHBseUNvbW1h
bmQoQ3JlYXRlTGlua0NvbW1hbmQ6OmNyZWF0ZSgqZnJhbWUuZG9jdW1lbnQoKSwgdmFsdWUpKTsK
KyAgICBhcHBseUNvbW1hbmQoQ3JlYXRlTGlua0NvbW1hbmQ6OmNyZWF0ZShmcmFtZS5kb2N1bWVu
dCgpLCB2YWx1ZSkpOwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC0zMzMsNyArMzMzLDcgQEAg
c3RhdGljIGJvb2wgZXhlY3V0ZURlbGV0ZShGcmFtZSYgZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29t
bWFuZFNvdXJjZSBzb3VyY2UsIGNvbnMKICAgICBjYXNlIENvbW1hbmRGcm9tRE9NV2l0aFVzZXJJ
bnRlcmZhY2U6CiAgICAgICAgIC8vIElmIHRoZSBjdXJyZW50IHNlbGVjdGlvbiBpcyBhIGNhcmV0
LCBkZWxldGUgdGhlIHByZWNlZGluZyBjaGFyYWN0ZXIuIElFIHBlcmZvcm1zIGZvcndhcmREZWxl
dGUsIGJ1dCB3ZSBjdXJyZW50bHkgc2lkZSB3aXRoIEZpcmVmb3guCiAgICAgICAgIC8vIERvZXNu
J3Qgc2Nyb2xsIHRvIG1ha2UgdGhlIHNlbGVjdGlvbiB2aXNpYmxlLCBvciBtb2RpZnkgdGhlIGtp
bGwgcmluZyAodGhpcyB0aW1lLCBzaWRpbmcgd2l0aCBJRSwgbm90IEZpcmVmb3gpLgotICAgICAg
ICBUeXBpbmdDb21tYW5kOjpkZWxldGVLZXlQcmVzc2VkKCpmcmFtZS5kb2N1bWVudCgpLCBmcmFt
ZS5zZWxlY3Rpb24oKS5ncmFudWxhcml0eSgpID09IFdvcmRHcmFudWxhcml0eSA/IFR5cGluZ0Nv
bW1hbmQ6OlNtYXJ0RGVsZXRlIDogMCk7CisgICAgICAgIFR5cGluZ0NvbW1hbmQ6OmRlbGV0ZUtl
eVByZXNzZWQoZnJhbWUuZG9jdW1lbnQoKSwgZnJhbWUuc2VsZWN0aW9uKCkuZ3JhbnVsYXJpdHko
KSA9PSBXb3JkR3JhbnVsYXJpdHkgPyBUeXBpbmdDb21tYW5kOjpTbWFydERlbGV0ZSA6IDApOwog
ICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CkBA
IC00NTQsNyArNDU0LDcgQEAgc3RhdGljIGJvb2wgZXhlY3V0ZUZvcm1hdEJsb2NrKEZyYW1lJiBm
cmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlLCBjb25zdAogICAgIFF1YWxpZmllZE5h
bWUgcXVhbGlmaWVkVGFnTmFtZShwcmVmaXgsIGxvY2FsTmFtZSwgeGh0bWxOYW1lc3BhY2VVUkkp
OwogCiAgICAgQVNTRVJUKGZyYW1lLmRvY3VtZW50KCkpOwotICAgIFJlZlB0cjxGb3JtYXRCbG9j
a0NvbW1hbmQ+IGNvbW1hbmQgPSBGb3JtYXRCbG9ja0NvbW1hbmQ6OmNyZWF0ZSgqZnJhbWUuZG9j
dW1lbnQoKSwgcXVhbGlmaWVkVGFnTmFtZSk7CisgICAgUmVmUHRyPEZvcm1hdEJsb2NrQ29tbWFu
ZD4gY29tbWFuZCA9IEZvcm1hdEJsb2NrQ29tbWFuZDo6Y3JlYXRlKGZyYW1lLmRvY3VtZW50KCks
IHF1YWxpZmllZFRhZ05hbWUpOwogICAgIGFwcGx5Q29tbWFuZChjb21tYW5kKTsKICAgICByZXR1
cm4gY29tbWFuZC0+ZGlkQXBwbHkoKTsKIH0KQEAgLTQ3MCw3ICs0NzAsNyBAQCBzdGF0aWMgYm9v
bCBleGVjdXRlRm9yd2FyZERlbGV0ZShGcmFtZSYgZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFu
ZFNvdXJjZSBzb3VyYwogICAgICAgICAvLyBEb2Vzbid0IHNjcm9sbCB0byBtYWtlIHRoZSBzZWxl
Y3Rpb24gdmlzaWJsZSwgb3IgbW9kaWZ5IHRoZSBraWxsIHJpbmcuCiAgICAgICAgIC8vIEZvcndh
cmREZWxldGUgaXMgbm90IGltcGxlbWVudGVkIGluIElFIG9yIEZpcmVmb3gsIHNvIHRoaXMgYmVo
YXZpb3IgaXMgb25seSBuZWVkZWQgZm9yCiAgICAgICAgIC8vIGJhY2t3YXJkIGNvbXBhdGliaWxp
dHkgd2l0aCBvdXJzZWx2ZXMsIGFuZCBmb3IgY29uc2lzdGVuY3kgd2l0aCBEZWxldGUuCi0gICAg
ICAgIFR5cGluZ0NvbW1hbmQ6OmZvcndhcmREZWxldGVLZXlQcmVzc2VkKCpmcmFtZS5kb2N1bWVu
dCgpKTsKKyAgICAgICAgVHlwaW5nQ29tbWFuZDo6Zm9yd2FyZERlbGV0ZUtleVByZXNzZWQoZnJh
bWUuZG9jdW1lbnQoKSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KICAgICBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsKQEAgLTQ4Niw3ICs0ODYsNyBAQCBzdGF0aWMgYm9vbCBleGVjdXRlSWdu
b3JlU3BlbGxpbmcoRnJhbWUmIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNv
bgogc3RhdGljIGJvb2wgZXhlY3V0ZUluZGVudChGcmFtZSYgZnJhbWUsIEV2ZW50KiwgRWRpdG9y
Q29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikKIHsKICAgICBBU1NFUlQoZnJhbWUuZG9jdW1l
bnQoKSk7Ci0gICAgYXBwbHlDb21tYW5kKEluZGVudE91dGRlbnRDb21tYW5kOjpjcmVhdGUoKmZy
YW1lLmRvY3VtZW50KCksIEluZGVudE91dGRlbnRDb21tYW5kOjpJbmRlbnQpKTsKKyAgICBhcHBs
eUNvbW1hbmQoSW5kZW50T3V0ZGVudENvbW1hbmQ6OmNyZWF0ZShmcmFtZS5kb2N1bWVudCgpLCBJ
bmRlbnRPdXRkZW50Q29tbWFuZDo6SW5kZW50KSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKQEAg
LTQ5Nyw3ICs0OTcsNyBAQCBzdGF0aWMgYm9vbCBleGVjdXRlSW5zZXJ0QmFja3RhYihGcmFtZSYg
ZnJhbWUsIEV2ZW50KiBldmVudCwgRWRpdG9yQ29tbWFuZFNvdXJjZQogCiBzdGF0aWMgYm9vbCBl
eGVjdXRlSW5zZXJ0SG9yaXpvbnRhbFJ1bGUoRnJhbWUmIGZyYW1lLCBFdmVudCosIEVkaXRvckNv
bW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYgdmFsdWUpCiB7Ci0gICAgUmVmUHRyPEhUTUxIUkVs
ZW1lbnQ+IHJ1bGUgPSBIVE1MSFJFbGVtZW50OjpjcmVhdGUoKmZyYW1lLmRvY3VtZW50KCkpOwor
ICAgIFJlZlB0cjxIVE1MSFJFbGVtZW50PiBydWxlID0gSFRNTEhSRWxlbWVudDo6Y3JlYXRlKGZy
YW1lLmRvY3VtZW50KCkpOwogICAgIGlmICghdmFsdWUuaXNFbXB0eSgpKQogICAgICAgICBydWxl
LT5zZXRJZEF0dHJpYnV0ZSh2YWx1ZSk7CiAgICAgcmV0dXJuIGV4ZWN1dGVJbnNlcnROb2RlKGZy
YW1lLCBydWxlLnJlbGVhc2UoKSk7CkBAIC01MDUsMTMgKzUwNSwxMyBAQCBzdGF0aWMgYm9vbCBl
eGVjdXRlSW5zZXJ0SG9yaXpvbnRhbFJ1bGUoRnJhbWUmIGZyYW1lLCBFdmVudCosIEVkaXRvckNv
bW1hbmRTb3VyYwogCiBzdGF0aWMgYm9vbCBleGVjdXRlSW5zZXJ0SFRNTChGcmFtZSYgZnJhbWUs
IEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJiB2YWx1ZSkKIHsKLSAg
ICByZXR1cm4gZXhlY3V0ZUluc2VydEZyYWdtZW50KGZyYW1lLCBjcmVhdGVGcmFnbWVudEZyb21N
YXJrdXAoKmZyYW1lLmRvY3VtZW50KCksIHZhbHVlLCAiIikpOworICAgIHJldHVybiBleGVjdXRl
SW5zZXJ0RnJhZ21lbnQoZnJhbWUsIGNyZWF0ZUZyYWdtZW50RnJvbU1hcmt1cChmcmFtZS5kb2N1
bWVudCgpLCB2YWx1ZSwgIiIpKTsKIH0KIAogc3RhdGljIGJvb2wgZXhlY3V0ZUluc2VydEltYWdl
KEZyYW1lJiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcm
IHZhbHVlKQogewogICAgIC8vIEZJWE1FOiBJZiB1c2VySW50ZXJmYWNlIGlzIHRydWUsIHdlIHNo
b3VsZCBkaXNwbGF5IGEgZGlhbG9nIGJveCBhbmQgbGV0IHRoZSB1c2VyIGNob29zZSBhIGxvY2Fs
IGltYWdlLgotICAgIFJlZlB0cjxIVE1MSW1hZ2VFbGVtZW50PiBpbWFnZSA9IEhUTUxJbWFnZUVs
ZW1lbnQ6OmNyZWF0ZSgqZnJhbWUuZG9jdW1lbnQoKSk7CisgICAgUmVmUHRyPEhUTUxJbWFnZUVs
ZW1lbnQ+IGltYWdlID0gSFRNTEltYWdlRWxlbWVudDo6Y3JlYXRlKGZyYW1lLmRvY3VtZW50KCkp
OwogICAgIGltYWdlLT5zZXRTcmModmFsdWUpOwogICAgIHJldHVybiBleGVjdXRlSW5zZXJ0Tm9k
ZShmcmFtZSwgaW1hZ2UucmVsZWFzZSgpKTsKIH0KQEAgLTUyNiw3ICs1MjYsNyBAQCBzdGF0aWMg
Ym9vbCBleGVjdXRlSW5zZXJ0TGluZUJyZWFrKEZyYW1lJiBmcmFtZSwgRXZlbnQqIGV2ZW50LCBF
ZGl0b3JDb21tYW5kU291cgogICAgICAgICAvLyBEb2Vzbid0IHNjcm9sbCB0byBtYWtlIHRoZSBz
ZWxlY3Rpb24gdmlzaWJsZSwgb3IgbW9kaWZ5IHRoZSBraWxsIHJpbmcuCiAgICAgICAgIC8vIElu
c2VydExpbmVCcmVhayBpcyBub3QgaW1wbGVtZW50ZWQgaW4gSUUgb3IgRmlyZWZveCwgc28gdGhp
cyBiZWhhdmlvciBpcyBvbmx5IG5lZWRlZCBmb3IKICAgICAgICAgLy8gYmFja3dhcmQgY29tcGF0
aWJpbGl0eSB3aXRoIG91cnNlbHZlcywgYW5kIGZvciBjb25zaXN0ZW5jeSB3aXRoIG90aGVyIGNv
bW1hbmRzLgotICAgICAgICBUeXBpbmdDb21tYW5kOjppbnNlcnRMaW5lQnJlYWsoKmZyYW1lLmRv
Y3VtZW50KCksIDApOworICAgICAgICBUeXBpbmdDb21tYW5kOjppbnNlcnRMaW5lQnJlYWsoZnJh
bWUuZG9jdW1lbnQoKSwgMCk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0KICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKQEAgLTU0MSwyMCArNTQxLDIwIEBAIHN0YXRpYyBib29sIGV4ZWN1
dGVJbnNlcnROZXdsaW5lKEZyYW1lJiBmcmFtZSwgRXZlbnQqIGV2ZW50LCBFZGl0b3JDb21tYW5k
U291cmNlCiAKIHN0YXRpYyBib29sIGV4ZWN1dGVJbnNlcnROZXdsaW5lSW5RdW90ZWRDb250ZW50
KEZyYW1lJiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291cmNlLCBjb25zdCBTdHJpbmcm
KQogewotICAgIFR5cGluZ0NvbW1hbmQ6Omluc2VydFBhcmFncmFwaFNlcGFyYXRvckluUXVvdGVk
Q29udGVudCgqZnJhbWUuZG9jdW1lbnQoKSk7CisgICAgVHlwaW5nQ29tbWFuZDo6aW5zZXJ0UGFy
YWdyYXBoU2VwYXJhdG9ySW5RdW90ZWRDb250ZW50KGZyYW1lLmRvY3VtZW50KCkpOwogICAgIHJl
dHVybiB0cnVlOwogfQogCiBzdGF0aWMgYm9vbCBleGVjdXRlSW5zZXJ0T3JkZXJlZExpc3QoRnJh
bWUmIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNvbnN0IFN0cmluZyYpCiB7
CiAgICAgQVNTRVJUKGZyYW1lLmRvY3VtZW50KCkpOwotICAgIGFwcGx5Q29tbWFuZChJbnNlcnRM
aXN0Q29tbWFuZDo6Y3JlYXRlKCpmcmFtZS5kb2N1bWVudCgpLCBJbnNlcnRMaXN0Q29tbWFuZDo6
T3JkZXJlZExpc3QpKTsKKyAgICBhcHBseUNvbW1hbmQoSW5zZXJ0TGlzdENvbW1hbmQ6OmNyZWF0
ZShmcmFtZS5kb2N1bWVudCgpLCBJbnNlcnRMaXN0Q29tbWFuZDo6T3JkZXJlZExpc3QpKTsKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIAogc3RhdGljIGJvb2wgZXhlY3V0ZUluc2VydFBhcmFncmFwaChG
cmFtZSYgZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikK
IHsKLSAgICBUeXBpbmdDb21tYW5kOjppbnNlcnRQYXJhZ3JhcGhTZXBhcmF0b3IoKmZyYW1lLmRv
Y3VtZW50KCksIDApOworICAgIFR5cGluZ0NvbW1hbmQ6Omluc2VydFBhcmFncmFwaFNlcGFyYXRv
cihmcmFtZS5kb2N1bWVudCgpLCAwKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApAQCAtNTY1LDE0
ICs1NjUsMTQgQEAgc3RhdGljIGJvb2wgZXhlY3V0ZUluc2VydFRhYihGcmFtZSYgZnJhbWUsIEV2
ZW50KiBldmVudCwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY28KIAogc3RhdGljIGJvb2wgZXhlY3V0
ZUluc2VydFRleHQoRnJhbWUmIGZyYW1lLCBFdmVudCosIEVkaXRvckNvbW1hbmRTb3VyY2UsIGNv
bnN0IFN0cmluZyYgdmFsdWUpCiB7Ci0gICAgVHlwaW5nQ29tbWFuZDo6aW5zZXJ0VGV4dCgqZnJh
bWUuZG9jdW1lbnQoKSwgdmFsdWUsIDApOworICAgIFR5cGluZ0NvbW1hbmQ6Omluc2VydFRleHQo
ZnJhbWUuZG9jdW1lbnQoKSwgdmFsdWUsIDApOwogICAgIHJldHVybiB0cnVlOwogfQogCiBzdGF0
aWMgYm9vbCBleGVjdXRlSW5zZXJ0VW5vcmRlcmVkTGlzdChGcmFtZSYgZnJhbWUsIEV2ZW50Kiwg
RWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJikKIHsKICAgICBBU1NFUlQoZnJhbWUu
ZG9jdW1lbnQoKSk7Ci0gICAgYXBwbHlDb21tYW5kKEluc2VydExpc3RDb21tYW5kOjpjcmVhdGUo
KmZyYW1lLmRvY3VtZW50KCksIEluc2VydExpc3RDb21tYW5kOjpVbm9yZGVyZWRMaXN0KSk7Cisg
ICAgYXBwbHlDb21tYW5kKEluc2VydExpc3RDb21tYW5kOjpjcmVhdGUoZnJhbWUuZG9jdW1lbnQo
KSwgSW5zZXJ0TGlzdENvbW1hbmQ6OlVub3JkZXJlZExpc3QpKTsKICAgICByZXR1cm4gdHJ1ZTsK
IH0KIApAQCAtOTA5LDcgKzkwOSw3IEBAIHN0YXRpYyBib29sIGV4ZWN1dGVNb3ZlVG9SaWdodEVu
ZE9mTGluZUFuZE1vZGlmeVNlbGVjdGlvbihGcmFtZSYgZnJhbWUsIEV2ZW50KiwKIHN0YXRpYyBi
b29sIGV4ZWN1dGVPdXRkZW50KEZyYW1lJiBmcmFtZSwgRXZlbnQqLCBFZGl0b3JDb21tYW5kU291
cmNlLCBjb25zdCBTdHJpbmcmKQogewogICAgIEFTU0VSVChmcmFtZS5kb2N1bWVudCgpKTsKLSAg
ICBhcHBseUNvbW1hbmQoSW5kZW50T3V0ZGVudENvbW1hbmQ6OmNyZWF0ZSgqZnJhbWUuZG9jdW1l
bnQoKSwgSW5kZW50T3V0ZGVudENvbW1hbmQ6Ok91dGRlbnQpKTsKKyAgICBhcHBseUNvbW1hbmQo
SW5kZW50T3V0ZGVudENvbW1hbmQ6OmNyZWF0ZShmcmFtZS5kb2N1bWVudCgpLCBJbmRlbnRPdXRk
ZW50Q29tbWFuZDo6T3V0ZGVudCkpOwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC0xMTQwLDcg
KzExNDAsNyBAQCBzdGF0aWMgYm9vbCBleGVjdXRlVW5kbyhGcmFtZSYgZnJhbWUsIEV2ZW50Kiwg
RWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3RyaW5nJgogc3RhdGljIGJvb2wgZXhlY3V0ZVVu
bGluayhGcmFtZSYgZnJhbWUsIEV2ZW50KiwgRWRpdG9yQ29tbWFuZFNvdXJjZSwgY29uc3QgU3Ry
aW5nJikKIHsKICAgICBBU1NFUlQoZnJhbWUuZG9jdW1lbnQoKSk7Ci0gICAgYXBwbHlDb21tYW5k
KFVubGlua0NvbW1hbmQ6OmNyZWF0ZSgqZnJhbWUuZG9jdW1lbnQoKSkpOworICAgIGFwcGx5Q29t
bWFuZChVbmxpbmtDb21tYW5kOjpjcmVhdGUoZnJhbWUuZG9jdW1lbnQoKSkpOwogICAgIHJldHVy
biB0cnVlOwogfQogCkBAIC0xNzM3LDcgKzE3MzcsNyBAQCBib29sIEVkaXRvcjo6Q29tbWFuZDo6
ZXhlY3V0ZShjb25zdCBTdHJpbmcmIHBhcmFtZXRlciwgRXZlbnQqIHRyaWdnZXJpbmdFdmVudCkg
YwogICAgICAgICBpZiAoIWlzU3VwcG9ydGVkKCkgfHwgIW1fZnJhbWUgfHwgIW1fY29tbWFuZC0+
YWxsb3dFeGVjdXRpb25XaGVuRGlzYWJsZWQpCiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAg
ICAgfQotICAgIG1fZnJhbWUtPmRvY3VtZW50KCktPnVwZGF0ZUxheW91dElnbm9yZVBlbmRpbmdT
dHlsZXNoZWV0cygpOworICAgIG1fZnJhbWUtPmRvY3VtZW50KCkudXBkYXRlTGF5b3V0SWdub3Jl
UGVuZGluZ1N0eWxlc2hlZXRzKCk7CiAgICAgcmV0dXJuIG1fY29tbWFuZC0+ZXhlY3V0ZSgqbV9m
cmFtZSwgdHJpZ2dlcmluZ0V2ZW50LCBtX3NvdXJjZSwgcGFyYW1ldGVyKTsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9GcmFtZVNlbGVjdGlvbi5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmNwcAppbmRleCA0N2I2YmU2Li5jZWM1Yjhm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL0ZyYW1lU2VsZWN0aW9uLmNwcApAQCAtMTMyLDcg
KzEzMiw3IEBAIEZyYW1lU2VsZWN0aW9uOjpGcmFtZVNlbGVjdGlvbihGcmFtZSogZnJhbWUpCiBF
bGVtZW50KiBGcmFtZVNlbGVjdGlvbjo6cm9vdEVkaXRhYmxlRWxlbWVudE9yRG9jdW1lbnRFbGVt
ZW50KCkgY29uc3QKIHsKICAgICBFbGVtZW50KiBzZWxlY3Rpb25Sb290ID0gbV9zZWxlY3Rpb24u
cm9vdEVkaXRhYmxlRWxlbWVudCgpOwotICAgIHJldHVybiBzZWxlY3Rpb25Sb290ID8gc2VsZWN0
aW9uUm9vdCA6IG1fZnJhbWUtPmRvY3VtZW50KCktPmRvY3VtZW50RWxlbWVudCgpOworICAgIHJl
dHVybiBzZWxlY3Rpb25Sb290ID8gc2VsZWN0aW9uUm9vdCA6IG1fZnJhbWUtPmRvY3VtZW50KCku
ZG9jdW1lbnRFbGVtZW50KCk7CiB9CiAKIHZvaWQgRnJhbWVTZWxlY3Rpb246Om1vdmVUbyhjb25z
dCBWaXNpYmxlUG9zaXRpb24gJnBvcywgRVVzZXJUcmlnZ2VyZWQgdXNlclRyaWdnZXJlZCwgQ3Vy
c29yQWxpZ25PblNjcm9sbCBhbGlnbikKQEAgLTI3NCw3ICsyNzQsNyBAQCBib29sIEZyYW1lU2Vs
ZWN0aW9uOjpzZXRTZWxlY3Rpb25XaXRob3V0VXBkYXRpbmdBcHBlYXJhbmNlKGNvbnN0IFZpc2li
bGVTZWxlY3RpbwogICAgIC8vIGlmIGRvY3VtZW50LT5mcmFtZSgpID09IG1fZnJhbWUgd2UgY2Fu
IGdldCBpbnRvIGFuIGluZmluaXRlIGxvb3AKICAgICBpZiAoRG9jdW1lbnQqIG5ld1NlbGVjdGlv
bkRvY3VtZW50ID0gbmV3U2VsZWN0aW9uLmJhc2UoKS5kb2N1bWVudCgpKSB7CiAgICAgICAgIGlm
IChSZWZQdHI8RnJhbWU+IG5ld1NlbGVjdGlvbkZyYW1lID0gbmV3U2VsZWN0aW9uRG9jdW1lbnQt
PmZyYW1lKCkpIHsKLSAgICAgICAgICAgIGlmIChuZXdTZWxlY3Rpb25GcmFtZSAhPSBtX2ZyYW1l
ICYmIG5ld1NlbGVjdGlvbkRvY3VtZW50ICE9IG1fZnJhbWUtPmRvY3VtZW50KCkpIHsKKyAgICAg
ICAgICAgIGlmIChuZXdTZWxlY3Rpb25GcmFtZSAhPSBtX2ZyYW1lICYmIG5ld1NlbGVjdGlvbkRv
Y3VtZW50ICE9ICZtX2ZyYW1lLT5kb2N1bWVudCgpKSB7CiAgICAgICAgICAgICAgICAgbmV3U2Vs
ZWN0aW9uRnJhbWUtPnNlbGVjdGlvbigpLnNldFNlbGVjdGlvbihuZXdTZWxlY3Rpb24sIG9wdGlv
bnMsIGFsaWduLCBncmFudWxhcml0eSk7CiAgICAgICAgICAgICAgICAgLy8gSXQncyBwb3NzaWJs
ZSB0aGF0IGR1cmluZyB0aGUgYWJvdmUgc2V0IHNlbGVjdGlvbiwgdGhpcyBGcmFtZVNlbGVjdGlv
biBoYXMgYmVlbiBtb2RpZmllZCBieQogICAgICAgICAgICAgICAgIC8vIHNlbGVjdEZyYW1lRWxl
bWVudEluUGFyZW50SWZGdWxseVNlbGVjdGVkLCBidXQgdGhhdCB0aGUgc2VsZWN0aW9uIGlzIG5v
IGxvbmdlciB2YWxpZCBzaW5jZQpAQCAtMzE0LDcgKzMxNCw3IEBAIGJvb2wgRnJhbWVTZWxlY3Rp
b246OnNldFNlbGVjdGlvbldpdGhvdXRVcGRhdGluZ0FwcGVhcmFuY2UoY29uc3QgVmlzaWJsZVNl
bGVjdGlvCiAgICAgbV94UG9zRm9yVmVydGljYWxBcnJvd05hdmlnYXRpb24gPSBOb1hQb3NGb3JW
ZXJ0aWNhbEFycm93TmF2aWdhdGlvbigpOwogICAgIHNlbGVjdEZyYW1lRWxlbWVudEluUGFyZW50
SWZGdWxseVNlbGVjdGVkKCk7CiAgICAgbV9mcmFtZS0+ZWRpdG9yKCkucmVzcG9uZFRvQ2hhbmdl
ZFNlbGVjdGlvbihvbGRTZWxlY3Rpb24sIG9wdGlvbnMpOwotICAgIG1fZnJhbWUtPmRvY3VtZW50
KCktPmVucXVldWVEb2N1bWVudEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLnNlbGVj
dGlvbmNoYW5nZUV2ZW50LCBmYWxzZSwgZmFsc2UpKTsKKyAgICBtX2ZyYW1lLT5kb2N1bWVudCgp
LmVucXVldWVEb2N1bWVudEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLnNlbGVjdGlv
bmNoYW5nZUV2ZW50LCBmYWxzZSwgZmFsc2UpKTsKIAogICAgIHJldHVybiB0cnVlOwogfQpAQCAt
MzI0LDE5ICszMjQsMTggQEAgdm9pZCBGcmFtZVNlbGVjdGlvbjo6c2V0U2VsZWN0aW9uKGNvbnN0
IFZpc2libGVTZWxlY3Rpb24mIHNlbGVjdGlvbiwgU2V0U2VsZWN0aW8KICAgICBpZiAoIXNldFNl
bGVjdGlvbldpdGhvdXRVcGRhdGluZ0FwcGVhcmFuY2Uoc2VsZWN0aW9uLCBvcHRpb25zLCBhbGln
biwgZ3JhbnVsYXJpdHkpKQogICAgICAgICByZXR1cm47CiAKLSAgICBEb2N1bWVudCogZG9jdW1l
bnQgPSBtX2ZyYW1lLT5kb2N1bWVudCgpOwotICAgIGlmICghZG9jdW1lbnQpCi0gICAgICAgIHJl
dHVybjsKKyAgICBEb2N1bWVudCYgZG9jdW1lbnQgPSBtX2ZyYW1lLT5kb2N1bWVudCgpOworICAg
IEFTU0VSVChkb2N1bWVudCk7CiAKICAgICBtX3Nob3VsZFJldmVhbFNlbGVjdGlvbiA9IG9wdGlv
bnMgJiBSZXZlYWxTZWxlY3Rpb247CiAgICAgbV9hbHdheXNBbGlnbkN1cnNvck9uU2Nyb2xsV2hl
blJldmVhbGluZ1NlbGVjdGlvbiA9IGFsaWduID09IEFsaWduQ3Vyc29yT25TY3JvbGxBbHdheXM7
CiAKICAgICBtX3BlbmRpbmdTZWxlY3Rpb25VcGRhdGUgPSB0cnVlOwogCi0gICAgaWYgKGRvY3Vt
ZW50LT5oYXNQZW5kaW5nU3R5bGVSZWNhbGMoKSkKKyAgICBpZiAoZG9jdW1lbnQuaGFzUGVuZGlu
Z1N0eWxlUmVjYWxjKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIEZyYW1lVmlldyogZnJhbWVW
aWV3ID0gZG9jdW1lbnQtPnZpZXcoKTsKKyAgICBGcmFtZVZpZXcqIGZyYW1lVmlldyA9IGRvY3Vt
ZW50LnZpZXcoKTsKICAgICBpZiAoZnJhbWVWaWV3ICYmIGZyYW1lVmlldy0+bGF5b3V0UGVuZGlu
ZygpKQogICAgICAgICByZXR1cm47CiAKQEAgLTM0Niw5ICszNDUsOSBAQCB2b2lkIEZyYW1lU2Vs
ZWN0aW9uOjpzZXRTZWxlY3Rpb24oY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYgc2VsZWN0aW9uLCBT
ZXRTZWxlY3Rpbwogc3RhdGljIHZvaWQgdXBkYXRlU2VsZWN0aW9uQnlVcGRhdGluZ0xheW91dE9y
U3R5bGUoRnJhbWUmIGZyYW1lKQogewogI2lmIEVOQUJMRShURVhUX0NBUkVUKQotICAgIGZyYW1l
LmRvY3VtZW50KCktPnVwZGF0ZUxheW91dElnbm9yZVBlbmRpbmdTdHlsZXNoZWV0cygpOworICAg
IGZyYW1lLmRvY3VtZW50KCkudXBkYXRlTGF5b3V0SWdub3JlUGVuZGluZ1N0eWxlc2hlZXRzKCk7
CiAjZWxzZQotICAgIGZyYW1lLmRvY3VtZW50KCktPnVwZGF0ZVN0eWxlSWZOZWVkZWQoKTsKKyAg
ICBmcmFtZS5kb2N1bWVudCgpLnVwZGF0ZVN0eWxlSWZOZWVkZWQoKTsKICNlbmRpZgogfQogCkBA
IC0xMzc2LDcgKzEzNzUsNyBAQCBib29sIEZyYW1lU2VsZWN0aW9uOjpyZWNvbXB1dGVDYXJldFJl
Y3QoKQogICAgIGlmICghbV9mcmFtZSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgRnJh
bWVWaWV3KiB2ID0gbV9mcmFtZS0+ZG9jdW1lbnQoKS0+dmlldygpOworICAgIEZyYW1lVmlldyog
diA9IG1fZnJhbWUtPmRvY3VtZW50KCkudmlldygpOwogICAgIGlmICghdikKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogCkBAIC0xMzg4LDcgKzEzODcsNyBAQCBib29sIEZyYW1lU2VsZWN0aW9uOjpy
ZWNvbXB1dGVDYXJldFJlY3QoKQogICAgICAgICAgICAgY2xlYXJDYXJldFJlY3QoKTsKICAgICAg
ICAgZWxzZSB7CiAgICAgICAgICAgICBWaXNpYmxlUG9zaXRpb24gdmlzaWJsZVN0YXJ0ID0gbV9z
ZWxlY3Rpb24udmlzaWJsZVN0YXJ0KCk7Ci0gICAgICAgICAgICBpZiAodXBkYXRlQ2FyZXRSZWN0
KG1fZnJhbWUtPmRvY3VtZW50KCksIHZpc2libGVTdGFydCkpIHsKKyAgICAgICAgICAgIGlmICh1
cGRhdGVDYXJldFJlY3QoJm1fZnJhbWUtPmRvY3VtZW50KCksIHZpc2libGVTdGFydCkpIHsKICAg
ICAgICAgICAgICAgICBjYXJldE5vZGUgPSB2aXNpYmxlU3RhcnQuZGVlcEVxdWl2YWxlbnQoKS5k
ZXByZWNhdGVkTm9kZSgpOwogICAgICAgICAgICAgICAgIG1fYWJzQ2FyZXRCb3VuZHNEaXJ0eSA9
IHRydWU7CiAgICAgICAgICAgICB9CkBAIC0xNDExLDcgKzE0MTAsNyBAQCBib29sIEZyYW1lU2Vs
ZWN0aW9uOjpyZWNvbXB1dGVDYXJldFJlY3QoKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICNp
ZiBFTkFCTEUoVEVYVF9DQVJFVCkKLSAgICBpZiAoUmVuZGVyVmlldyogdmlldyA9IG1fZnJhbWUt
PmRvY3VtZW50KCktPnJlbmRlclZpZXcoKSkgeworICAgIGlmIChSZW5kZXJWaWV3KiB2aWV3ID0g
bV9mcmFtZS0+ZG9jdW1lbnQoKS5yZW5kZXJWaWV3KCkpIHsKICAgICAgICAgYm9vbCBwcmV2aW91
c09yTmV3Q2FyZXROb2RlSXNDb250ZW50RWRpdGFibGUgPSBtX3NlbGVjdGlvbi5pc0NvbnRlbnRF
ZGl0YWJsZSgpIHx8IChtX3ByZXZpb3VzQ2FyZXROb2RlICYmIG1fcHJldmlvdXNDYXJldE5vZGUt
PmlzQ29udGVudEVkaXRhYmxlKCkpOwogICAgICAgICBpZiAoc2hvdWxkUmVwYWludENhcmV0KHZp
ZXcsIHByZXZpb3VzT3JOZXdDYXJldE5vZGVJc0NvbnRlbnRFZGl0YWJsZSkpIHsKICAgICAgICAg
ICAgIGlmIChtX3ByZXZpb3VzQ2FyZXROb2RlKQpAQCAtMTU3MCwxNyArMTU2OSwxNyBAQCB2b2lk
IEZyYW1lU2VsZWN0aW9uOjpkZWJ1Z1JlbmRlcmVyKFJlbmRlck9iamVjdCogciwgYm9vbCBzZWxl
Y3RlZCkgY29uc3QKIAogYm9vbCBGcmFtZVNlbGVjdGlvbjo6Y29udGFpbnMoY29uc3QgTGF5b3V0
UG9pbnQmIHBvaW50KQogewotICAgIERvY3VtZW50KiBkb2N1bWVudCA9IG1fZnJhbWUtPmRvY3Vt
ZW50KCk7CisgICAgRG9jdW1lbnQmIGRvY3VtZW50ID0gbV9mcmFtZS0+ZG9jdW1lbnQoKTsKICAg
ICAKICAgICAvLyBUcmVhdCBhIGNvbGxhcHNlZCBzZWxlY3Rpb24gbGlrZSBubyBzZWxlY3Rpb24u
CiAgICAgaWYgKCFpc1JhbmdlKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICBpZiAoIWRv
Y3VtZW50LT5yZW5kZXJWaWV3KCkpIAorICAgIGlmICghZG9jdW1lbnQucmVuZGVyVmlldygpKSAK
ICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIAogICAgIEhpdFRlc3RSZXF1ZXN0IHJlcXVlc3Qo
SGl0VGVzdFJlcXVlc3Q6OlJlYWRPbmx5IHwgSGl0VGVzdFJlcXVlc3Q6OkFjdGl2ZSB8IEhpdFRl
c3RSZXF1ZXN0OjpEaXNhbGxvd1NoYWRvd0NvbnRlbnQpOwogICAgIEhpdFRlc3RSZXN1bHQgcmVz
dWx0KHBvaW50KTsKLSAgICBkb2N1bWVudC0+cmVuZGVyVmlldygpLT5oaXRUZXN0KHJlcXVlc3Qs
IHJlc3VsdCk7CisgICAgZG9jdW1lbnQucmVuZGVyVmlldygpLT5oaXRUZXN0KHJlcXVlc3QsIHJl
c3VsdCk7CiAgICAgTm9kZSogaW5uZXJOb2RlID0gcmVzdWx0LmlubmVyTm9kZSgpOwogICAgIGlm
ICghaW5uZXJOb2RlIHx8ICFpbm5lck5vZGUtPnJlbmRlcmVyKCkpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKQEAgLTE2NDksMTEgKzE2NDgsMTEgQEAgdm9pZCBGcmFtZVNlbGVjdGlvbjo6c2VsZWN0
RnJhbWVFbGVtZW50SW5QYXJlbnRJZkZ1bGx5U2VsZWN0ZWQoKQogCiB2b2lkIEZyYW1lU2VsZWN0
aW9uOjpzZWxlY3RBbGwoKQogewotICAgIERvY3VtZW50KiBkb2N1bWVudCA9IG1fZnJhbWUtPmRv
Y3VtZW50KCk7CisgICAgRG9jdW1lbnQmIGRvY3VtZW50ID0gbV9mcmFtZS0+ZG9jdW1lbnQoKTsK
IAotICAgIEVsZW1lbnQqIGZvY3VzZWRFbGVtZW50ID0gZG9jdW1lbnQtPmZvY3VzZWRFbGVtZW50
KCk7CisgICAgRWxlbWVudCogZm9jdXNlZEVsZW1lbnQgPSBkb2N1bWVudC5mb2N1c2VkRWxlbWVu
dCgpOwogICAgIGlmIChmb2N1c2VkRWxlbWVudCAmJiBmb2N1c2VkRWxlbWVudC0+aGFzVGFnTmFt
ZShzZWxlY3RUYWcpKSB7Ci0gICAgICAgIEhUTUxTZWxlY3RFbGVtZW50KiBzZWxlY3RFbGVtZW50
ID0gdG9IVE1MU2VsZWN0RWxlbWVudChkb2N1bWVudC0+Zm9jdXNlZEVsZW1lbnQoKSk7CisgICAg
ICAgIEhUTUxTZWxlY3RFbGVtZW50KiBzZWxlY3RFbGVtZW50ID0gdG9IVE1MU2VsZWN0RWxlbWVu
dChkb2N1bWVudC5mb2N1c2VkRWxlbWVudCgpKTsKICAgICAgICAgaWYgKHNlbGVjdEVsZW1lbnQt
PmNhblNlbGVjdEFsbCgpKSB7CiAgICAgICAgICAgICBzZWxlY3RFbGVtZW50LT5zZWxlY3RBbGwo
KTsKICAgICAgICAgICAgIHJldHVybjsKQEAgLTE2ODEsOCArMTY4MCw4IEBAIHZvaWQgRnJhbWVT
ZWxlY3Rpb246OnNlbGVjdEFsbCgpCiAgICAgICAgIGlmIChyb290KQogICAgICAgICAgICAgc2Vs
ZWN0U3RhcnRUYXJnZXQgPSByb290LT5zaGFkb3dIb3N0KCk7CiAgICAgICAgIGVsc2UgewotICAg
ICAgICAgICAgcm9vdCA9IGRvY3VtZW50LT5kb2N1bWVudEVsZW1lbnQoKTsKLSAgICAgICAgICAg
IHNlbGVjdFN0YXJ0VGFyZ2V0ID0gZG9jdW1lbnQtPmJvZHkoKTsKKyAgICAgICAgICAgIHJvb3Qg
PSBkb2N1bWVudC5kb2N1bWVudEVsZW1lbnQoKTsKKyAgICAgICAgICAgIHNlbGVjdFN0YXJ0VGFy
Z2V0ID0gZG9jdW1lbnQuYm9keSgpOwogICAgICAgICB9CiAgICAgfQogICAgIGlmICghcm9vdCkK
QEAgLTE3MTgsNyArMTcxNyw3IEBAIGJvb2wgRnJhbWVTZWxlY3Rpb246OnNldFNlbGVjdGVkUmFu
Z2UoUmFuZ2UqIHJhbmdlLCBFQWZmaW5pdHkgYWZmaW5pdHksIGJvb2wgY2xvCiB2b2lkIEZyYW1l
U2VsZWN0aW9uOjpmb2N1c2VkT3JBY3RpdmVTdGF0ZUNoYW5nZWQoKQogewogICAgIGJvb2wgYWN0
aXZlQW5kRm9jdXNlZCA9IGlzRm9jdXNlZEFuZEFjdGl2ZSgpOwotICAgIFJlZjxEb2N1bWVudD4g
ZG9jdW1lbnQoKm1fZnJhbWUtPmRvY3VtZW50KCkpOworICAgIFJlZjxEb2N1bWVudD4gZG9jdW1l
bnQobV9mcmFtZS0+ZG9jdW1lbnQoKSk7CiAKICAgICBkb2N1bWVudC0+dXBkYXRlU3R5bGVJZk5l
ZWRlZCgpOwogCkBAIC0xOTI2LDcgKzE5MjUsNyBAQCB2b2lkIEZyYW1lU2VsZWN0aW9uOjpzZXRG
b2N1c2VkRWxlbWVudElmTmVlZGVkKCkKICAgICAgICAgICAgIH0KICAgICAgICAgICAgIHRhcmdl
dCA9IHRhcmdldC0+cGFyZW50T3JTaGFkb3dIb3N0RWxlbWVudCgpOwogICAgICAgICB9Ci0gICAg
ICAgIG1fZnJhbWUtPmRvY3VtZW50KCktPnNldEZvY3VzZWRFbGVtZW50KDApOworICAgICAgICBt
X2ZyYW1lLT5kb2N1bWVudCgpLnNldEZvY3VzZWRFbGVtZW50KDApOwogICAgIH0KIAogICAgIGlm
IChjYXJldEJyb3dzaW5nKQpAQCAtMTk2NCw4ICsxOTYzLDcgQEAgYm9vbCBGcmFtZVNlbGVjdGlv
bjo6c2hvdWxkRGVsZXRlU2VsZWN0aW9uKGNvbnN0IFZpc2libGVTZWxlY3Rpb24mIHNlbGVjdGlv
bikgY28KIAogRmxvYXRSZWN0IEZyYW1lU2VsZWN0aW9uOjpzZWxlY3Rpb25Cb3VuZHMoYm9vbCBj
bGlwVG9WaXNpYmxlQ29udGVudCkgY29uc3QKIHsKLSAgICBpZiAoIW1fZnJhbWUtPmRvY3VtZW50
KCkpCi0gICAgICAgIHJldHVybiBMYXlvdXRSZWN0KCk7CisgICAgQVNTRVJUKG1fZnJhbWUtPmRv
Y3VtZW50KCkpOwogCiAgICAgdXBkYXRlU2VsZWN0aW9uQnlVcGRhdGluZ0xheW91dE9yU3R5bGUo
Km1fZnJhbWUpOwogICAgIFJlbmRlclZpZXcqIHJvb3QgPSBtX2ZyYW1lLT5jb250ZW50UmVuZGVy
ZXIoKTsKQEAgLTIwMjQsNyArMjAyMiw3IEBAIHN0YXRpYyBIVE1MRm9ybUVsZW1lbnQqIHNjYW5G
b3JGb3JtKEVsZW1lbnQqIHN0YXJ0KQogSFRNTEZvcm1FbGVtZW50KiBGcmFtZVNlbGVjdGlvbjo6
Y3VycmVudEZvcm0oKSBjb25zdAogewogICAgIC8vIFN0YXJ0IGxvb2tpbmcgZWl0aGVyIGF0IHRo
ZSBhY3RpdmUgKGZpcnN0IHJlc3BvbmRlcikgbm9kZSwgb3Igd2hlcmUgdGhlIHNlbGVjdGlvbiBp
cy4KLSAgICBFbGVtZW50KiBzdGFydCA9IG1fZnJhbWUtPmRvY3VtZW50KCktPmZvY3VzZWRFbGVt
ZW50KCk7CisgICAgRWxlbWVudCogc3RhcnQgPSBtX2ZyYW1lLT5kb2N1bWVudCgpLmZvY3VzZWRF
bGVtZW50KCk7CiAgICAgaWYgKCFzdGFydCkKICAgICAgICAgc3RhcnQgPSBtX3NlbGVjdGlvbi5z
dGFydCgpLmVsZW1lbnQoKTsKICAgICBpZiAoIXN0YXJ0KQpAQCAtMjA4MywxNyArMjA4MSwxNyBA
QCB2b2lkIEZyYW1lU2VsZWN0aW9uOjpzZXRTZWxlY3Rpb25Gcm9tTm9uZSgpCiAgICAgLy8gUHV0
IGEgY2FyZXQgaW5zaWRlIHRoZSBib2R5IGlmIHRoZSBlbnRpcmUgZnJhbWUgaXMgZWRpdGFibGUg
KGVpdGhlciB0aGUKICAgICAvLyBlbnRpcmUgV2ViVmlldyBpcyBlZGl0YWJsZSBvciBkZXNpZ25N
b2RlIGlzIG9uIGZvciB0aGlzIGRvY3VtZW50KS4KIAotICAgIERvY3VtZW50KiBkb2N1bWVudCA9
IG1fZnJhbWUtPmRvY3VtZW50KCk7CisgICAgRG9jdW1lbnQmIGRvY3VtZW50ID0gbV9mcmFtZS0+
ZG9jdW1lbnQoKTsKICNpZiAhUExBVEZPUk0oSU9TKQogICAgIGJvb2wgY2FyZXRCcm93c2luZyA9
IG1fZnJhbWUtPnNldHRpbmdzKCkuY2FyZXRCcm93c2luZ0VuYWJsZWQoKTsKLSAgICBpZiAoIWlz
Tm9uZSgpIHx8ICEoZG9jdW1lbnQtPmhhc0VkaXRhYmxlU3R5bGUoKSB8fCBjYXJldEJyb3dzaW5n
KSkKKyAgICBpZiAoIWlzTm9uZSgpIHx8ICEoZG9jdW1lbnQuaGFzRWRpdGFibGVTdHlsZSgpIHx8
IGNhcmV0QnJvd3NpbmcpKQogICAgICAgICByZXR1cm47CiAjZWxzZQotICAgIGlmICghZG9jdW1l
bnQgfHwgIShpc05vbmUoKSB8fCBpc1N0YXJ0T2ZEb2N1bWVudChWaXNpYmxlUG9zaXRpb24obV9z
ZWxlY3Rpb24uc3RhcnQoKSwgbV9zZWxlY3Rpb24uYWZmaW5pdHkoKSkpKSB8fCAhZG9jdW1lbnQt
Pmhhc0VkaXRhYmxlU3R5bGUoKSkKKyAgICBpZiAoIShpc05vbmUoKSB8fCBpc1N0YXJ0T2ZEb2N1
bWVudChWaXNpYmxlUG9zaXRpb24obV9zZWxlY3Rpb24uc3RhcnQoKSwgbV9zZWxlY3Rpb24uYWZm
aW5pdHkoKSkpKSB8fCAhZG9jdW1lbnQuaGFzRWRpdGFibGVTdHlsZSgpKQogICAgICAgICByZXR1
cm47CiAjZW5kaWYKIAotICAgIE5vZGUqIG5vZGUgPSBkb2N1bWVudC0+ZG9jdW1lbnRFbGVtZW50
KCk7CisgICAgTm9kZSogbm9kZSA9IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCgpOwogICAgIHdo
aWxlIChub2RlICYmICFub2RlLT5oYXNUYWdOYW1lKGJvZHlUYWcpKQogICAgICAgICBub2RlID0g
Tm9kZVRyYXZlcnNhbDo6bmV4dChub2RlKTsKICAgICBpZiAobm9kZSkKQEAgLTIxMjIsNyArMjEy
MCw3IEBAIHZvaWQgRnJhbWVTZWxlY3Rpb246OnNldFNob3VsZFNob3dCbG9ja0N1cnNvcihib29s
IHNob3VsZFNob3dCbG9ja0N1cnNvcikKIHsKICAgICBtX3Nob3VsZFNob3dCbG9ja0N1cnNvciA9
IHNob3VsZFNob3dCbG9ja0N1cnNvcjsKIAotICAgIG1fZnJhbWUtPmRvY3VtZW50KCktPnVwZGF0
ZUxheW91dElnbm9yZVBlbmRpbmdTdHlsZXNoZWV0cygpOworICAgIG1fZnJhbWUtPmRvY3VtZW50
KCkudXBkYXRlTGF5b3V0SWdub3JlUGVuZGluZ1N0eWxlc2hlZXRzKCk7CiAKICAgICB1cGRhdGVB
cHBlYXJhbmNlKCk7CiB9CkBAIC0yMzU5LDcgKzIzNTcsNyBAQCBQYXNzUmVmUHRyPFJhbmdlPiBG
cmFtZVNlbGVjdGlvbjo6cmFuZ2VCeUV4dGVuZGluZ0N1cnJlbnRTZWxlY3Rpb24oaW50IGFtb3Vu
dCkgYwogCiB2b2lkIEZyYW1lU2VsZWN0aW9uOjpzZWxlY3RSYW5nZU9uRWxlbWVudCh1bnNpZ25l
ZCBsb2NhdGlvbiwgdW5zaWduZWQgbGVuZ3RoLCBOb2RlKiBub2RlKQogewotICAgIFJlZlB0cjxS
YW5nZT4gcmVzdWx0UmFuZ2UgPSBtX2ZyYW1lLT5kb2N1bWVudCgpLT5jcmVhdGVSYW5nZSgpOwor
ICAgIFJlZlB0cjxSYW5nZT4gcmVzdWx0UmFuZ2UgPSBtX2ZyYW1lLT5kb2N1bWVudCgpLmNyZWF0
ZVJhbmdlKCk7CiAgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CiAgICAgcmVzdWx0UmFuZ2UtPnNl
dFN0YXJ0KG5vZGUsIGxvY2F0aW9uLCBlYyk7CiAgICAgQVNTRVJUKCFlYyk7CkBAIC0yNTQyLDcg
KzI1NDAsNyBAQCB2b2lkIEZyYW1lU2VsZWN0aW9uOjpzZXRDYXJldEJsaW5rcyhib29sIGNhcmV0
QmxpbmtzKQogICAgIGlmIChtX2NhcmV0QmxpbmtzID09IGNhcmV0QmxpbmtzKQogICAgICAgICBy
ZXR1cm47CiAjaWYgRU5BQkxFKFRFWFRfQ0FSRVQpCi0gICAgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+
dXBkYXRlTGF5b3V0SWdub3JlUGVuZGluZ1N0eWxlc2hlZXRzKCk7IAorICAgIG1fZnJhbWUtPmRv
Y3VtZW50KCkudXBkYXRlTGF5b3V0SWdub3JlUGVuZGluZ1N0eWxlc2hlZXRzKCk7IAogICAgIGlm
IChtX2NhcmV0UGFpbnQpIHsKICAgICAgICAgbV9jYXJldFBhaW50ID0gZmFsc2U7IAogICAgICAg
ICBpbnZhbGlkYXRlQ2FyZXRSZWN0KCk7IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRp
dGluZy9TcGVsbENoZWNrZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvZWRpdGluZy9TcGVsbENoZWNr
ZXIuY3BwCmluZGV4IDcwNzc2ZmMuLjFjMDEwYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2VkaXRpbmcvU3BlbGxDaGVja2VyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL1Nw
ZWxsQ2hlY2tlci5jcHAKQEAgLTIyOSw3ICsyMjksNyBAQCB2b2lkIFNwZWxsQ2hlY2tlcjo6ZGlk
Q2hlY2tTdWNjZWVkKGludCBzZXF1ZW5jZSwgY29uc3QgVmVjdG9yPFRleHRDaGVja2luZ1Jlc3Vs
dAogICAgICAgICBpZiAocmVxdWVzdERhdGEubWFzaygpICYgVGV4dENoZWNraW5nVHlwZUdyYW1t
YXIpCiAgICAgICAgICAgICBtYXJrZXJzIHw9IERvY3VtZW50TWFya2VyOjpHcmFtbWFyOwogICAg
ICAgICBpZiAobWFya2VycykKLSAgICAgICAgICAgIG1fZnJhbWUuZG9jdW1lbnQoKS0+bWFya2Vy
cygpLnJlbW92ZU1hcmtlcnMobV9wcm9jZXNzaW5nUmVxdWVzdC0+Y2hlY2tpbmdSYW5nZSgpLmdl
dCgpLCBtYXJrZXJzKTsKKyAgICAgICAgICAgIG1fZnJhbWUuZG9jdW1lbnQoKS5tYXJrZXJzKCku
cmVtb3ZlTWFya2VycyhtX3Byb2Nlc3NpbmdSZXF1ZXN0LT5jaGVja2luZ1JhbmdlKCkuZ2V0KCks
IG1hcmtlcnMpOwogICAgIH0KICAgICBkaWRDaGVjayhzZXF1ZW5jZSwgcmVzdWx0cyk7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2F0ay9GcmFtZVNlbGVjdGlvbkF0ay5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2F0ay9GcmFtZVNlbGVjdGlvbkF0ay5jcHAKaW5k
ZXggYjA4MTczMS4uZTBhMWM0NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9h
dGsvRnJhbWVTZWxlY3Rpb25BdGsuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvYXRr
L0ZyYW1lU2VsZWN0aW9uQXRrLmNwcApAQCAtOTMsNyArOTMsNyBAQCB2b2lkIEZyYW1lU2VsZWN0
aW9uOjpub3RpZnlBY2Nlc3NpYmlsaXR5Rm9yU2VsZWN0aW9uQ2hhbmdlKCkKICAgICAgICAgcmV0
dXJuOwogCiAgICAgUmVuZGVyT2JqZWN0KiBmb2N1c2VkTm9kZSA9IG1fc2VsZWN0aW9uLmVuZCgp
LmNvbnRhaW5lck5vZGUoKS0+cmVuZGVyZXIoKTsKLSAgICBBWE9iamVjdENhY2hlKiBjYWNoZSA9
IG1fZnJhbWUtPmRvY3VtZW50KCktPmV4aXN0aW5nQVhPYmplY3RDYWNoZSgpOworICAgIEFYT2Jq
ZWN0Q2FjaGUqIGNhY2hlID0gbV9mcmFtZS0+ZG9jdW1lbnQoKS5leGlzdGluZ0FYT2JqZWN0Q2Fj
aGUoKTsKICAgICBpZiAoIWNhY2hlKQogICAgICAgICByZXR1cm47CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2VkaXRpbmcvaW9zL0VkaXRvcklPUy5tbSBiL1NvdXJjZS9XZWJDb3JlL2Vk
aXRpbmcvaW9zL0VkaXRvcklPUy5tbQppbmRleCA4YTI3Y2Y1Li4xOTEwYzRlIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL2lvcy9FZGl0b3JJT1MubW0KKysrIGIvU291cmNlL1dl
YkNvcmUvZWRpdGluZy9pb3MvRWRpdG9ySU9TLm1tCkBAIC0xNjAsMTQgKzE2MCwxNCBAQCB2b2lk
IEVkaXRvcjo6c2V0VGV4dEFsaWdubWVudEZvckNoYW5nZWRCYXNlV3JpdGluZ0RpcmVjdGlvbihX
cml0aW5nRGlyZWN0aW9uIGRpcgogICAgIGlmICghbmV3VmFsdWUpCiAgICAgICAgIHJldHVybjsK
IAotICAgIEVsZW1lbnQqIGZvY3VzZWRFbGVtZW50ID0gbV9mcmFtZS5kb2N1bWVudCgpLT5mb2N1
c2VkRWxlbWVudCgpOworICAgIEVsZW1lbnQqIGZvY3VzZWRFbGVtZW50ID0gbV9mcmFtZS5kb2N1
bWVudCgpLmZvY3VzZWRFbGVtZW50KCk7CiAgICAgaWYgKGZvY3VzZWRFbGVtZW50ICYmIChmb2N1
c2VkRWxlbWVudC0+aGFzVGFnTmFtZSh0ZXh0YXJlYVRhZykgfHwgKGZvY3VzZWRFbGVtZW50LT5o
YXNUYWdOYW1lKGlucHV0VGFnKSAmJgogICAgICAgICAodG9IVE1MSW5wdXRFbGVtZW50KGZvY3Vz
ZWRFbGVtZW50KS0+aXNUZXh0RmllbGQoKSB8fAogICAgICAgICAgdG9IVE1MSW5wdXRFbGVtZW50
KGZvY3VzZWRFbGVtZW50KS0+aXNTZWFyY2hGaWVsZCgpKSkpKSB7CiAgICAgICAgIGlmIChkaXJl
Y3Rpb24gPT0gTmF0dXJhbFdyaXRpbmdEaXJlY3Rpb24pCiAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgIHRvSFRNTEVsZW1lbnQoZm9jdXNlZEVsZW1lbnQpLT5zZXRBdHRyaWJ1dGUoYWxpZ25B
dHRyLCBuZXdWYWx1ZSk7Ci0gICAgICAgIG1fZnJhbWUuZG9jdW1lbnQoKS0+dXBkYXRlU3R5bGVJ
Zk5lZWRlZCgpOworICAgICAgICBtX2ZyYW1lLmRvY3VtZW50KCkudXBkYXRlU3R5bGVJZk5lZWRl
ZCgpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0yMDEsMTMgKzIwMSwxMyBAQCBzdGF0
aWMgUmVuZGVyU3R5bGUqIHN0eWxlRm9yU2VsZWN0aW9uU3RhcnQoRnJhbWUqIGZyYW1lLCBOb2Rl
ICombm9kZVRvUmVtb3ZlKQogICAgIGlmICghdHlwaW5nU3R5bGUgfHwgIXR5cGluZ1N0eWxlLT5z
dHlsZSgpKQogICAgICAgICByZXR1cm4gJnBvc2l0aW9uLmRlcHJlY2F0ZWROb2RlKCktPnJlbmRl
cmVyKCktPnN0eWxlKCk7CiAKLSAgICBSZWZQdHI8RWxlbWVudD4gc3R5bGVFbGVtZW50ID0gZnJh
bWUtPmRvY3VtZW50KCktPmNyZWF0ZUVsZW1lbnQoc3BhblRhZywgZmFsc2UpOworICAgIFJlZlB0
cjxFbGVtZW50PiBzdHlsZUVsZW1lbnQgPSBmcmFtZS0+ZG9jdW1lbnQoKS5jcmVhdGVFbGVtZW50
KHNwYW5UYWcsIGZhbHNlKTsKIAogICAgIFN0cmluZyBzdHlsZVRleHQgPSB0eXBpbmdTdHlsZS0+
c3R5bGUoKS0+YXNUZXh0KCkgKyAiIGRpc3BsYXk6IGlubGluZSI7CiAgICAgc3R5bGVFbGVtZW50
LT5zZXRBdHRyaWJ1dGUoc3R5bGVBdHRyLCBzdHlsZVRleHQuaW1wbCgpKTsKIAogICAgIEV4Y2Vw
dGlvbkNvZGUgZWMgPSAwOwotICAgIHN0eWxlRWxlbWVudC0+YXBwZW5kQ2hpbGQoZnJhbWUtPmRv
Y3VtZW50KCktPmNyZWF0ZUVkaXRpbmdUZXh0Tm9kZSgiIiksIGVjKTsKKyAgICBzdHlsZUVsZW1l
bnQtPmFwcGVuZENoaWxkKGZyYW1lLT5kb2N1bWVudCgpLmNyZWF0ZUVkaXRpbmdUZXh0Tm9kZSgi
IiksIGVjKTsKICAgICBBU1NFUlQoIWVjKTsKIAogICAgIHBvc2l0aW9uLmRlcHJlY2F0ZWROb2Rl
KCktPnBhcmVudE5vZGUoKS0+YXBwZW5kQ2hpbGQoc3R5bGVFbGVtZW50LCBlYyk7CkBAIC0yNzcs
NyArMjc3LDcgQEAgdm9pZCBFZGl0b3I6OnJlbW92ZVVuY2hhbmdlYWJsZVN0eWxlcygpCiB7CiAg
ICAgLy8gVGhpcyBmdW5jdGlvbiByZW1vdmVzIHN0eWxlcyB0aGF0IHRoZSB1c2VyIGNhbm5vdCBt
b2RpZnkgYnkgYXBwbHlpbmcgdGhlaXIgZGVmYXVsdCB2YWx1ZXMuCiAgICAgCi0gICAgUmVmUHRy
PEVkaXRpbmdTdHlsZT4gZWRpdGluZ1N0eWxlID0gRWRpdGluZ1N0eWxlOjpjcmVhdGUobV9mcmFt
ZS5kb2N1bWVudCgpLT5ib2R5KCkpOworICAgIFJlZlB0cjxFZGl0aW5nU3R5bGU+IGVkaXRpbmdT
dHlsZSA9IEVkaXRpbmdTdHlsZTo6Y3JlYXRlKG1fZnJhbWUuZG9jdW1lbnQoKS5ib2R5KCkpOwog
ICAgIFJlZlB0cjxNdXRhYmxlU3R5bGVQcm9wZXJ0aWVzPiBkZWZhdWx0U3R5bGUgPSBlZGl0aW5n
U3R5bGUuZ2V0KCktPnN0eWxlKCktPm11dGFibGVDb3B5KCk7CiAgICAgCiAgICAgLy8gVGV4dCB3
aWRnZXRzIGltcGxlbWVudCBiYWNrZ3JvdW5kIGNvbG9yIHZpYSB0aGUgVUlWaWV3IHByb3BlcnR5
LiBUaGVpciBib2R5IGVsZW1lbnQgd2lsbCBub3QgaGF2ZSBvbmUuCkBAIC01MDEsMTEgKzUwMSwx
MSBAQCBib29sIEVkaXRvcjo6V2ViQ29udGVudFJlYWRlcjo6cmVhZFVSTChjb25zdCBVUkwmIHVy
bCwgY29uc3QgU3RyaW5nJikKICAgICAgICAgICAgIHJldHVybiBmcmFnbWVudDsKICAgICAgICAg
fQogICAgIH0gZWxzZSB7Ci0gICAgICAgIFJlZlB0cjxFbGVtZW50PiBhbmNob3IgPSBmcmFtZS5k
b2N1bWVudCgpLT5jcmVhdGVFbGVtZW50KEhUTUxOYW1lczo6YVRhZywgZmFsc2UpOworICAgICAg
ICBSZWZQdHI8RWxlbWVudD4gYW5jaG9yID0gZnJhbWUuZG9jdW1lbnQoKS5jcmVhdGVFbGVtZW50
KEhUTUxOYW1lczo6YVRhZywgZmFsc2UpOwogICAgICAgICBhbmNob3ItPnNldEF0dHJpYnV0ZShI
VE1MTmFtZXM6OmhyZWZBdHRyLCB1cmwuc3RyaW5nKCkpOwotICAgICAgICBhbmNob3ItPmFwcGVu
ZENoaWxkKGZyYW1lLmRvY3VtZW50KCktPmNyZWF0ZVRleHROb2RlKFtbKE5TVVJMICopdXJsIGFi
c29sdXRlU3RyaW5nXSBwcmVjb21wb3NlZFN0cmluZ1dpdGhDYW5vbmljYWxNYXBwaW5nXSkpOwor
ICAgICAgICBhbmNob3ItPmFwcGVuZENoaWxkKGZyYW1lLmRvY3VtZW50KCkuY3JlYXRlVGV4dE5v
ZGUoW1soTlNVUkwgKil1cmwgYWJzb2x1dGVTdHJpbmddIHByZWNvbXBvc2VkU3RyaW5nV2l0aENh
bm9uaWNhbE1hcHBpbmddKSk7CiAKLSAgICAgICAgUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IG5l
d0ZyYWdtZW50ID0gZnJhbWUuZG9jdW1lbnQoKS0+Y3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpOwor
ICAgICAgICBSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gbmV3RnJhZ21lbnQgPSBmcmFtZS5kb2N1
bWVudCgpLmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKTsKICAgICAgICAgbmV3RnJhZ21lbnQtPmFw
cGVuZENoaWxkKGFuY2hvci5yZWxlYXNlKCkpOwogICAgICAgICBhZGRGcmFnbWVudChuZXdGcmFn
bWVudCk7CiAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtNTUxLDcgKzU1MSw3IEBAIHZvaWQgRWRp
dG9yOjpwYXN0ZVdpdGhQYXN0ZWJvYXJkKFBhc3RlYm9hcmQqIHBhc3RlYm9hcmQsIGJvb2wgYWxs
b3dQbGFpblRleHQpCiAKIFBhc3NSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gRWRpdG9yOjpjcmVh
dGVGcmFnbWVudEFuZEFkZFJlc291cmNlcyhOU0F0dHJpYnV0ZWRTdHJpbmcgKnN0cmluZykKIHsK
LSAgICBpZiAoIW1fZnJhbWUucGFnZSgpIHx8ICFtX2ZyYW1lLmRvY3VtZW50KCkgfHwgIW1fZnJh
bWUuZG9jdW1lbnQoKS0+aXNIVE1MRG9jdW1lbnQoKSkKKyAgICBpZiAoIW1fZnJhbWUucGFnZSgp
IHx8ICFtX2ZyYW1lLmRvY3VtZW50KCkgfHwgIW1fZnJhbWUuZG9jdW1lbnQoKS5pc0hUTUxEb2N1
bWVudCgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIGlmICghc3RyaW5nKQpAQCAt
NTgwLDcgKzU4MCw3IEBAIFBhc3NSZWZQdHI8RG9jdW1lbnRGcmFnbWVudD4gRWRpdG9yOjpjcmVh
dGVGcmFnbWVudEZvckltYWdlUmVzb3VyY2VBbmRBZGRSZXNvdXJjCiAgICAgaWYgKCFyZXNvdXJj
ZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBSZWZQdHI8RWxlbWVudD4gaW1hZ2VF
bGVtZW50ID0gbV9mcmFtZS5kb2N1bWVudCgpLT5jcmVhdGVFbGVtZW50KEhUTUxOYW1lczo6aW1n
VGFnLCBmYWxzZSk7CisgICAgUmVmUHRyPEVsZW1lbnQ+IGltYWdlRWxlbWVudCA9IG1fZnJhbWUu
ZG9jdW1lbnQoKS5jcmVhdGVFbGVtZW50KEhUTUxOYW1lczo6aW1nVGFnLCBmYWxzZSk7CiAgICAg
Ly8gRklYTUU6IFRoZSBjb2RlIGluIGNyZWF0ZUZyYWdtZW50QW5kQWRkUmVzb3VyY2VzIGNhbGxz
IHNldERlZmVyc0xvYWRpbmcodHJ1ZSkuIERvbid0IHdlIG5lZWQgdGhhdCBoZXJlPwogICAgIGlm
IChEb2N1bWVudExvYWRlciogbG9hZGVyID0gbV9mcmFtZS5sb2FkZXIoKS5kb2N1bWVudExvYWRl
cigpKQogICAgICAgICBsb2FkZXItPmFkZEFyY2hpdmVSZXNvdXJjZShyZXNvdXJjZS5nZXQoKSk7
CkBAIC01ODgsNyArNTg4LDcgQEAgUGFzc1JlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBFZGl0b3I6
OmNyZWF0ZUZyYWdtZW50Rm9ySW1hZ2VSZXNvdXJjZUFuZEFkZFJlc291cmMKICAgICBOU1VSTCAq
VVJMID0gcmVzb3VyY2UtPnVybCgpOwogICAgIGltYWdlRWxlbWVudC0+c2V0QXR0cmlidXRlKEhU
TUxOYW1lczo6c3JjQXR0ciwgW1VSTCBpc0ZpbGVVUkxdID8gW1VSTCBhYnNvbHV0ZVN0cmluZ10g
OiByZXNvdXJjZS0+dXJsKCkpOwogCi0gICAgUmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGZyYWdt
ZW50ID0gbV9mcmFtZS5kb2N1bWVudCgpLT5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCk7CisgICAg
UmVmUHRyPERvY3VtZW50RnJhZ21lbnQ+IGZyYWdtZW50ID0gbV9mcmFtZS5kb2N1bWVudCgpLmNy
ZWF0ZURvY3VtZW50RnJhZ21lbnQoKTsKICAgICBmcmFnbWVudC0+YXBwZW5kQ2hpbGQoaW1hZ2VF
bGVtZW50LnJlbGVhc2UoKSk7CiAKICAgICByZXR1cm4gZnJhZ21lbnQucmVsZWFzZSgpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZWRpdGluZy9tYWMvRWRpdG9yTWFjLm1tIGIvU291cmNl
L1dlYkNvcmUvZWRpdGluZy9tYWMvRWRpdG9yTWFjLm1tCmluZGV4IGVhMjUwNjcuLmZiOTg3YTkg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2VkaXRpbmcvbWFjL0VkaXRvck1hYy5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9lZGl0aW5nL21hYy9FZGl0b3JNYWMubW0KQEAgLTEyMCwxMiArMTIw
LDEyIEBAIHN0YXRpYyBSZW5kZXJTdHlsZSogc3R5bGVGb3JTZWxlY3Rpb25TdGFydChGcmFtZSog
ZnJhbWUsIE5vZGUgKiZub2RlVG9SZW1vdmUpCiAgICAgaWYgKCF0eXBpbmdTdHlsZSB8fCAhdHlw
aW5nU3R5bGUtPnN0eWxlKCkpCiAgICAgICAgIHJldHVybiAmcG9zaXRpb24uZGVwcmVjYXRlZE5v
ZGUoKS0+cmVuZGVyZXIoKS0+c3R5bGUoKTsKIAotICAgIFJlZlB0cjxFbGVtZW50PiBzdHlsZUVs
ZW1lbnQgPSBmcmFtZS0+ZG9jdW1lbnQoKS0+Y3JlYXRlRWxlbWVudChzcGFuVGFnLCBmYWxzZSk7
CisgICAgUmVmUHRyPEVsZW1lbnQ+IHN0eWxlRWxlbWVudCA9IGZyYW1lLT5kb2N1bWVudCgpLmNy
ZWF0ZUVsZW1lbnQoc3BhblRhZywgZmFsc2UpOwogCiAgICAgU3RyaW5nIHN0eWxlVGV4dCA9IHR5
cGluZ1N0eWxlLT5zdHlsZSgpLT5hc1RleHQoKSArICIgZGlzcGxheTogaW5saW5lIjsKICAgICBz
dHlsZUVsZW1lbnQtPnNldEF0dHJpYnV0ZShzdHlsZUF0dHIsIHN0eWxlVGV4dCk7CiAKLSAgICBz
dHlsZUVsZW1lbnQtPmFwcGVuZENoaWxkKGZyYW1lLT5kb2N1bWVudCgpLT5jcmVhdGVFZGl0aW5n
VGV4dE5vZGUoIiIpLCBBU1NFUlRfTk9fRVhDRVBUSU9OKTsKKyAgICBzdHlsZUVsZW1lbnQtPmFw
cGVuZENoaWxkKGZyYW1lLT5kb2N1bWVudCgpLmNyZWF0ZUVkaXRpbmdUZXh0Tm9kZSgiIiksIEFT
U0VSVF9OT19FWENFUFRJT04pOwogCiAgICAgcG9zaXRpb24uZGVwcmVjYXRlZE5vZGUoKS0+cGFy
ZW50Tm9kZSgpLT5hcHBlbmRDaGlsZChzdHlsZUVsZW1lbnQsIEFTU0VSVF9OT19FWENFUFRJT04p
OwogCkBAIC01NTEsMTEgKzU1MSwxMSBAQCBib29sIEVkaXRvcjo6V2ViQ29udGVudFJlYWRlcjo6
cmVhZFVSTChjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiB0aXRsZSkKICAgICBpZiAodXJs
LnN0cmluZygpLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgUmVmUHRy
PEVsZW1lbnQ+IGFuY2hvciA9IGZyYW1lLmRvY3VtZW50KCktPmNyZWF0ZUVsZW1lbnQoSFRNTE5h
bWVzOjphVGFnLCBmYWxzZSk7CisgICAgUmVmUHRyPEVsZW1lbnQ+IGFuY2hvciA9IGZyYW1lLmRv
Y3VtZW50KCkuY3JlYXRlRWxlbWVudChIVE1MTmFtZXM6OmFUYWcsIGZhbHNlKTsKICAgICBhbmNo
b3ItPnNldEF0dHJpYnV0ZShIVE1MTmFtZXM6OmhyZWZBdHRyLCB1cmwuc3RyaW5nKCkpOwotICAg
IGFuY2hvci0+YXBwZW5kQ2hpbGQoZnJhbWUuZG9jdW1lbnQoKS0+Y3JlYXRlVGV4dE5vZGUoW3Rp
dGxlIHByZWNvbXBvc2VkU3RyaW5nV2l0aENhbm9uaWNhbE1hcHBpbmddKSk7CisgICAgYW5jaG9y
LT5hcHBlbmRDaGlsZChmcmFtZS5kb2N1bWVudCgpLmNyZWF0ZVRleHROb2RlKFt0aXRsZSBwcmVj
b21wb3NlZFN0cmluZ1dpdGhDYW5vbmljYWxNYXBwaW5nXSkpOwogCi0gICAgZnJhZ21lbnQgPSBm
cmFtZS5kb2N1bWVudCgpLT5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCk7CisgICAgZnJhZ21lbnQg
PSBmcmFtZS5kb2N1bWVudCgpLmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKTsKICAgICBmcmFnbWVu
dC0+YXBwZW5kQ2hpbGQoYW5jaG9yLnJlbGVhc2UoKSk7CiAgICAgcmV0dXJuIHRydWU7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L0NhY2hlZEZyYW1lLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2hpc3RvcnkvQ2FjaGVkRnJhbWUuY3BwCmluZGV4IDM0ODY5MGEuLmQ3ZDFhOTUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQ2FjaGVkRnJhbWUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvQ2FjaGVkRnJhbWUuY3BwCkBAIC02MCwxMCArNjAsMTAg
QEAgbmFtZXNwYWNlIFdlYkNvcmUgewogREVGSU5FX0RFQlVHX09OTFlfR0xPQkFMKFdURjo6UmVm
Q291bnRlZExlYWtDb3VudGVyLCBjYWNoZWRGcmFtZUNvdW50ZXIsICgiQ2FjaGVkRnJhbWUiKSk7
CiAKIENhY2hlZEZyYW1lQmFzZTo6Q2FjaGVkRnJhbWVCYXNlKEZyYW1lJiBmcmFtZSkKLSAgICA6
IG1fZG9jdW1lbnQoZnJhbWUuZG9jdW1lbnQoKSkKKyAgICA6IG1fZG9jdW1lbnQoJmZyYW1lLmRv
Y3VtZW50KCkpCiAgICAgLCBtX2RvY3VtZW50TG9hZGVyKGZyYW1lLmxvYWRlcigpLmRvY3VtZW50
TG9hZGVyKCkpCiAgICAgLCBtX3ZpZXcoZnJhbWUudmlldygpKQotICAgICwgbV91cmwoZnJhbWUu
ZG9jdW1lbnQoKS0+dXJsKCkpCisgICAgLCBtX3VybChmcmFtZS5kb2N1bWVudCgpLnVybCgpKQog
ICAgICwgbV9pc01haW5GcmFtZSghZnJhbWUudHJlZSgpLnBhcmVudCgpKQogICAgICwgbV9pc0Nv
bXBvc2l0ZWQoZnJhbWUudmlldygpLT5oYXNDb21wb3NpdGVkQ29udGVudCgpKQogewpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9DYWNoZWRQYWdlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2hpc3RvcnkvQ2FjaGVkUGFnZS5jcHAKaW5kZXggNzcyMWU1My4uNzQ2NjMwMiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9DYWNoZWRQYWdlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9oaXN0b3J5L0NhY2hlZFBhZ2UuY3BwCkBAIC04Myw4ICs4Myw4IEBAIHZvaWQgQ2Fj
aGVkUGFnZTo6cmVzdG9yZShQYWdlJiBwYWdlKQogICAgIAogICAgIC8vIFJlc3RvcmUgdGhlIGZv
Y3VzIGFwcGVhcmFuY2UgZm9yIHRoZSBmb2N1c2VkIGVsZW1lbnQuCiAgICAgLy8gRklYTUU6IFJp
Z2h0IG5vdyB3ZSBkb24ndCBzdXBwb3J0IHBhZ2VzIHcvIGZyYW1lcyBpbiB0aGUgYi9mIGNhY2hl
LiAgVGhpcyBtYXkgbmVlZCB0byBiZSB0d2Vha2VkIHdoZW4gd2UgYWRkIHN1cHBvcnQgZm9yIHRo
YXQuCi0gICAgRG9jdW1lbnQqIGZvY3VzZWREb2N1bWVudCA9IHBhZ2UuZm9jdXNDb250cm9sbGVy
KCkuZm9jdXNlZE9yTWFpbkZyYW1lKCkuZG9jdW1lbnQoKTsKLSAgICBpZiAoRWxlbWVudCogZWxl
bWVudCA9IGZvY3VzZWREb2N1bWVudC0+Zm9jdXNlZEVsZW1lbnQoKSkgeworICAgIERvY3VtZW50
JiBmb2N1c2VkRG9jdW1lbnQgPSBwYWdlLmZvY3VzQ29udHJvbGxlcigpLmZvY3VzZWRPck1haW5G
cmFtZSgpLmRvY3VtZW50KCk7CisgICAgaWYgKEVsZW1lbnQqIGVsZW1lbnQgPSBmb2N1c2VkRG9j
dW1lbnQuZm9jdXNlZEVsZW1lbnQoKSkgewogI2lmIFBMQVRGT1JNKElPUykKICAgICAgICAgLy8g
V2UgZG9uJ3Qgd2FudCBmb2N1c2VkIG5vZGVzIGNoYW5naW5nIHNjcm9sbCBwb3NpdGlvbiB3aGVu
IHJlc3RvcmluZyBmcm9tIHRoZSBjYWNoZQogICAgICAgICAvLyBhcyBpdCBjYW4gY2F1c2UgdWds
eSBqdW1wcyBiZWZvcmUgd2UgbWFuYWdlIHRvIHJlc3RvcmUgdGhlIGNhY2hlZCBwb3NpdGlvbi4K
QEAgLTk4LDcgKzk4LDcgQEAgdm9pZCBDYWNoZWRQYWdlOjpyZXN0b3JlKFBhZ2UmIHBhZ2UpCiAK
ICAgICBpZiAobV9uZWVkU3R5bGVSZWNhbGNGb3JWaXNpdGVkTGlua3MpIHsKICAgICAgICAgZm9y
IChGcmFtZSogZnJhbWUgPSAmcGFnZS5tYWluRnJhbWUoKTsgZnJhbWU7IGZyYW1lID0gZnJhbWUt
PnRyZWUoKS50cmF2ZXJzZU5leHQoKSkKLSAgICAgICAgICAgIGZyYW1lLT5kb2N1bWVudCgpLT52
aXNpdGVkTGlua1N0YXRlKCkuaW52YWxpZGF0ZVN0eWxlRm9yQWxsTGlua3MoKTsKKyAgICAgICAg
ICAgIGZyYW1lLT5kb2N1bWVudCgpLnZpc2l0ZWRMaW5rU3RhdGUoKS5pbnZhbGlkYXRlU3R5bGVG
b3JBbGxMaW5rcygpOwogICAgIH0KIAogICAgIGlmIChtX25lZWRzRGV2aWNlU2NhbGVDaGFuZ2Vk
KSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9oaXN0b3J5L1BhZ2VDYWNoZS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9oaXN0b3J5L1BhZ2VDYWNoZS5jcHAKaW5kZXggOTAzYjUzZS4uOWIxYzIw
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaGlzdG9yeS9QYWdlQ2FjaGUuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2hpc3RvcnkvUGFnZUNhY2hlLmNwcApAQCAtMTI1LDEzICsxMjUsMTMg
QEAgc3RhdGljIHVuc2lnbmVkIGxvZ0NhbkNhY2hlRnJhbWVEZWNpc2lvbihGcmFtZSogZnJhbWUs
IGludCBpbmRlbnRMZXZlbCkKICAgICAgICAgUENMT0coIiAgIC1GcmFtZSBjb250YWlucyBwbHVn
aW5zIik7CiAgICAgICAgIHJlamVjdFJlYXNvbnMgfD0gMSA8PCBIYXNQbHVnaW5zOwogICAgIH0K
LSAgICBpZiAoZnJhbWUtPmRvY3VtZW50KCktPnVybCgpLnByb3RvY29sSXMoImh0dHBzIikKKyAg
ICBpZiAoZnJhbWUtPmRvY3VtZW50KCkudXJsKCkucHJvdG9jb2xJcygiaHR0cHMiKQogICAgICAg
ICAmJiAoZnJhbWUtPmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCktPnJlc3BvbnNlKCkuY2FjaGVD
b250cm9sQ29udGFpbnNOb0NhY2hlKCkKICAgICAgICAgICAgIHx8IGZyYW1lLT5sb2FkZXIoKS5k
b2N1bWVudExvYWRlcigpLT5yZXNwb25zZSgpLmNhY2hlQ29udHJvbENvbnRhaW5zTm9TdG9yZSgp
KSkgewogICAgICAgICBQQ0xPRygiICAgLUZyYW1lIGlzIEhUVFBTLCBhbmQgY2FjaGUgY29udHJv
bCBwcm9oaWJpdHMgY2FjaGluZyBvciBzdG9yaW5nIik7CiAgICAgICAgIHJlamVjdFJlYXNvbnMg
fD0gMSA8PCBJc0h0dHBzQW5kQ2FjaGVDb250cm9sbGVkOwogICAgIH0KLSAgICBpZiAoZnJhbWUt
PmRvY3VtZW50KCktPmRvbVdpbmRvdygpICYmIGZyYW1lLT5kb2N1bWVudCgpLT5kb21XaW5kb3co
KS0+aGFzRXZlbnRMaXN0ZW5lcnMoZXZlbnROYW1lcygpLnVubG9hZEV2ZW50KSkgeworICAgIGlm
IChmcmFtZS0+ZG9jdW1lbnQoKS5kb21XaW5kb3coKSAmJiBmcmFtZS0+ZG9jdW1lbnQoKS5kb21X
aW5kb3coKS0+aGFzRXZlbnRMaXN0ZW5lcnMoZXZlbnROYW1lcygpLnVubG9hZEV2ZW50KSkgewog
ICAgICAgICBQQ0xPRygiICAgLUZyYW1lIGhhcyBhbiB1bmxvYWQgZXZlbnQgbGlzdGVuZXIiKTsK
ICNpZiAhUExBVEZPUk0oSU9TKQogICAgICAgICByZWplY3RSZWFzb25zIHw9IDEgPDwgSGFzVW5s
b2FkTGlzdGVuZXI7CkBAIC0xNjgsNyArMTY4LDcgQEAgc3RhdGljIHVuc2lnbmVkIGxvZ0NhbkNh
Y2hlRnJhbWVEZWNpc2lvbihGcmFtZSogZnJhbWUsIGludCBpbmRlbnRMZXZlbCkKICAgICAgICAg
UENMT0coIiAgIC1Eb2N1bWVudExvYWRlciBpcyBpbiB0aGUgbWlkZGxlIG9mIHN0b3BwaW5nIik7
CiAgICAgICAgIHJlamVjdFJlYXNvbnMgfD0gMSA8PCBJc1N0b3BwaW5nOwogICAgIH0KLSAgICBp
ZiAoIWZyYW1lLT5kb2N1bWVudCgpLT5jYW5TdXNwZW5kQWN0aXZlRE9NT2JqZWN0cygpKSB7Cisg
ICAgaWYgKCFmcmFtZS0+ZG9jdW1lbnQoKS5jYW5TdXNwZW5kQWN0aXZlRE9NT2JqZWN0cygpKSB7
CiAgICAgICAgIFBDTE9HKCIgICAtVGhlIGRvY3VtZW50IGNhbm5vdCBzdXNwZWN0IGl0cyBhY3Rp
dmUgRE9NIE9iamVjdHMiKTsKICAgICAgICAgcmVqZWN0UmVhc29ucyB8PSAxIDw8IENhbm5vdFN1
c3BlbmRBY3RpdmVET01PYmplY3RzOwogICAgIH0KQEAgLTMyMCw3ICszMjAsNyBAQCBib29sIFBh
Z2VDYWNoZTo6Y2FuQ2FjaGVQYWdlQ29udGFpbmluZ1RoaXNGcmFtZShGcmFtZSogZnJhbWUpCiAg
ICAgCiAgICAgRnJhbWVMb2FkZXImIGZyYW1lTG9hZGVyID0gZnJhbWUtPmxvYWRlcigpOwogICAg
IERvY3VtZW50TG9hZGVyKiBkb2N1bWVudExvYWRlciA9IGZyYW1lTG9hZGVyLmRvY3VtZW50TG9h
ZGVyKCk7Ci0gICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gZnJhbWUtPmRvY3VtZW50KCk7CisgICAg
RG9jdW1lbnQmIGRvY3VtZW50ID0gZnJhbWUtPmRvY3VtZW50KCk7CiAgICAgCiAgICAgcmV0dXJu
IGRvY3VtZW50TG9hZGVyCiAjaWYgIVBMQVRGT1JNKElPUykKQEAgLTMzMSwyMSArMzMxLDIxIEBA
IGJvb2wgUGFnZUNhY2hlOjpjYW5DYWNoZVBhZ2VDb250YWluaW5nVGhpc0ZyYW1lKEZyYW1lKiBm
cmFtZSkKICAgICAgICAgLy8gRG8gbm90IGNhY2hlIGVycm9yIHBhZ2VzICh0aGVzZSBjYW4gYmUg
cmVjb2duaXplZCBhcyBwYWdlcyB3aXRoIHN1YnN0aXR1dGUgZGF0YSBvciB1bnJlYWNoYWJsZSBV
UkxzKS4KICAgICAgICAgJiYgIShkb2N1bWVudExvYWRlci0+c3Vic3RpdHV0ZURhdGEoKS5pc1Zh
bGlkKCkgJiYgIWRvY3VtZW50TG9hZGVyLT5zdWJzdGl0dXRlRGF0YSgpLmZhaWxpbmdVUkwoKS5p
c0VtcHR5KCkpCiAgICAgICAgICYmICghZnJhbWVMb2FkZXIuc3ViZnJhbWVMb2FkZXIoKS5jb250
YWluc1BsdWdpbnMoKSB8fCBmcmFtZS0+cGFnZSgpLT5zZXR0aW5ncygpLnBhZ2VDYWNoZVN1cHBv
cnRzUGx1Z2lucygpKQotICAgICAgICAmJiAoIWRvY3VtZW50LT51cmwoKS5wcm90b2NvbElzKCJo
dHRwcyIpIHx8ICghZG9jdW1lbnRMb2FkZXItPnJlc3BvbnNlKCkuY2FjaGVDb250cm9sQ29udGFp
bnNOb0NhY2hlKCkgJiYgIWRvY3VtZW50TG9hZGVyLT5yZXNwb25zZSgpLmNhY2hlQ29udHJvbENv
bnRhaW5zTm9TdG9yZSgpKSkKKyAgICAgICAgJiYgKCFkb2N1bWVudC51cmwoKS5wcm90b2NvbElz
KCJodHRwcyIpIHx8ICghZG9jdW1lbnRMb2FkZXItPnJlc3BvbnNlKCkuY2FjaGVDb250cm9sQ29u
dGFpbnNOb0NhY2hlKCkgJiYgIWRvY3VtZW50TG9hZGVyLT5yZXNwb25zZSgpLmNhY2hlQ29udHJv
bENvbnRhaW5zTm9TdG9yZSgpKSkKICNpZiAhUExBVEZPUk0oSU9TKQotICAgICAgICAmJiAoIWRv
Y3VtZW50LT5kb21XaW5kb3coKSB8fCAhZG9jdW1lbnQtPmRvbVdpbmRvdygpLT5oYXNFdmVudExp
c3RlbmVycyhldmVudE5hbWVzKCkudW5sb2FkRXZlbnQpKQorICAgICAgICAmJiAoIWRvY3VtZW50
LmRvbVdpbmRvdygpIHx8ICFkb2N1bWVudC5kb21XaW5kb3coKS0+aGFzRXZlbnRMaXN0ZW5lcnMo
ZXZlbnROYW1lcygpLnVubG9hZEV2ZW50KSkKICNlbmRpZgogI2lmIEVOQUJMRShTUUxfREFUQUJB
U0UpCi0gICAgICAgICYmICFEYXRhYmFzZU1hbmFnZXI6Om1hbmFnZXIoKS5oYXNPcGVuRGF0YWJh
c2VzKGRvY3VtZW50KQorICAgICAgICAmJiAhRGF0YWJhc2VNYW5hZ2VyOjptYW5hZ2VyKCkuaGFz
T3BlbkRhdGFiYXNlcygmZG9jdW1lbnQpCiAjZW5kaWYKICNpZiBFTkFCTEUoU0hBUkVEX1dPUktF
UlMpCi0gICAgICAgICYmICFTaGFyZWRXb3JrZXJSZXBvc2l0b3J5OjpoYXNTaGFyZWRXb3JrZXJz
KGRvY3VtZW50KQorICAgICAgICAmJiAhU2hhcmVkV29ya2VyUmVwb3NpdG9yeTo6aGFzU2hhcmVk
V29ya2VycygmZG9jdW1lbnQpCiAjZW5kaWYKICAgICAgICAgJiYgZnJhbWVMb2FkZXIuaGlzdG9y
eSgpLmN1cnJlbnRJdGVtKCkKICAgICAgICAgJiYgIWZyYW1lTG9hZGVyLnF1aWNrUmVkaXJlY3RD
b21pbmcoKQogICAgICAgICAmJiAhZG9jdW1lbnRMb2FkZXItPmlzTG9hZGluZ0luQVBJU2Vuc2Uo
KQogICAgICAgICAmJiAhZG9jdW1lbnRMb2FkZXItPmlzU3RvcHBpbmcoKQotICAgICAgICAmJiBk
b2N1bWVudC0+Y2FuU3VzcGVuZEFjdGl2ZURPTU9iamVjdHMoKQorICAgICAgICAmJiBkb2N1bWVu
dC5jYW5TdXNwZW5kQWN0aXZlRE9NT2JqZWN0cygpCiAgICAgICAgIC8vIEZJWE1FOiBXZSBzaG91
bGQgaW52ZXN0aWdhdGluZyBjYWNoaW5nIGZyYW1lcyB0aGF0IGhhdmUgYW4gYXNzb2NpYXRlZAog
ICAgICAgICAvLyBhcHBsaWNhdGlvbiBjYWNoZS4gPHJkYXI6Ly9wcm9ibGVtLzU5MTc4OTk+IHRy
YWNrcyB0aGF0IHdvcmsuCiAgICAgICAgICYmIGRvY3VtZW50TG9hZGVyLT5hcHBsaWNhdGlvbkNh
Y2hlSG9zdCgpLT5jYW5DYWNoZUluUGFnZUNhY2hlKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTEZyYW1lT3duZXJFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwv
SFRNTEZyYW1lT3duZXJFbGVtZW50LmNwcAppbmRleCA4YjdiNzM5Li4wNjcwZjdkIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxGcmFtZU93bmVyRWxlbWVudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC9IVE1MRnJhbWVPd25lckVsZW1lbnQuY3BwCkBAIC05MywxMiAr
OTMsMTIgQEAgSFRNTEZyYW1lT3duZXJFbGVtZW50Ojp+SFRNTEZyYW1lT3duZXJFbGVtZW50KCkK
IAogRG9jdW1lbnQqIEhUTUxGcmFtZU93bmVyRWxlbWVudDo6Y29udGVudERvY3VtZW50KCkgY29u
c3QKIHsKLSAgICByZXR1cm4gbV9jb250ZW50RnJhbWUgPyBtX2NvbnRlbnRGcmFtZS0+ZG9jdW1l
bnQoKSA6IDA7CisgICAgcmV0dXJuIG1fY29udGVudEZyYW1lID8gJm1fY29udGVudEZyYW1lLT5k
b2N1bWVudCgpIDogMDsKIH0KIAogRE9NV2luZG93KiBIVE1MRnJhbWVPd25lckVsZW1lbnQ6OmNv
bnRlbnRXaW5kb3coKSBjb25zdAogewotICAgIHJldHVybiBtX2NvbnRlbnRGcmFtZSA/IG1fY29u
dGVudEZyYW1lLT5kb2N1bWVudCgpLT5kb21XaW5kb3coKSA6IDA7CisgICAgcmV0dXJuIG1fY29u
dGVudEZyYW1lID8gbV9jb250ZW50RnJhbWUtPmRvY3VtZW50KCkuZG9tV2luZG93KCkgOiAwOwog
fQogCiB2b2lkIEhUTUxGcmFtZU93bmVyRWxlbWVudDo6c2V0U2FuZGJveEZsYWdzKFNhbmRib3hG
bGFncyBmbGFncykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFBsdWdJbklt
YWdlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxQbHVnSW5JbWFnZUVsZW1l
bnQuY3BwCmluZGV4IGI4MTYyNDMuLmU1NmNmNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTFBsdWdJbkltYWdlRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50LmNwcApAQCAtNDgyLDE0ICs0ODIsMTIgQEAgdm9pZCBI
VE1MUGx1Z0luSW1hZ2VFbGVtZW50OjpyZXN0YXJ0U2ltaWxhclBsdWdJbnMoKQogICAgICAgICBp
ZiAoIWZyYW1lLT5sb2FkZXIoKS5zdWJmcmFtZUxvYWRlcigpLmNvbnRhaW5zUGx1Z2lucygpKQog
ICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgIAotICAgICAgICBpZiAoIWZyYW1lLT5kb2N1
bWVudCgpKQotICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAgUmVmUHRyPE5vZGVMaXN0
PiBwbHVnSW5zID0gZnJhbWUtPmRvY3VtZW50KCktPmdldEVsZW1lbnRzQnlUYWdOYW1lKGVtYmVk
VGFnLmxvY2FsTmFtZSgpKTsKKyAgICAgICAgQVNTRVJUKGZyYW1lLT5kb2N1bWVudCgpKTsKKyAg
ICAgICAgUmVmUHRyPE5vZGVMaXN0PiBwbHVnSW5zID0gZnJhbWUtPmRvY3VtZW50KCkuZ2V0RWxl
bWVudHNCeVRhZ05hbWUoZW1iZWRUYWcubG9jYWxOYW1lKCkpOwogICAgICAgICBpZiAocGx1Z0lu
cykKICAgICAgICAgICAgIGFkZFBsdWdJbnNGcm9tTm9kZUxpc3RNYXRjaGluZ1BsdWdJbk9yaWdp
bihzaW1pbGFyUGx1Z2lucywgcGx1Z0lucywgcGx1Z0luT3JpZ2luLCBtaW1lVHlwZSk7CiAKLSAg
ICAgICAgcGx1Z0lucyA9IGZyYW1lLT5kb2N1bWVudCgpLT5nZXRFbGVtZW50c0J5VGFnTmFtZShv
YmplY3RUYWcubG9jYWxOYW1lKCkpOworICAgICAgICBwbHVnSW5zID0gZnJhbWUtPmRvY3VtZW50
KCkuZ2V0RWxlbWVudHNCeVRhZ05hbWUob2JqZWN0VGFnLmxvY2FsTmFtZSgpKTsKICAgICAgICAg
aWYgKHBsdWdJbnMpCiAgICAgICAgICAgICBhZGRQbHVnSW5zRnJvbU5vZGVMaXN0TWF0Y2hpbmdQ
bHVnSW5PcmlnaW4oc2ltaWxhclBsdWdpbnMsIHBsdWdJbnMsIHBsdWdJbk9yaWdpbiwgbWltZVR5
cGUpOwogICAgIH0KQEAgLTUxMCw4ICs1MDgsOCBAQCB2b2lkIEhUTUxQbHVnSW5JbWFnZUVsZW1l
bnQ6OnVzZXJEaWRDbGlja1NuYXBzaG90KFBhc3NSZWZQdHI8TW91c2VFdmVudD4gZXZlbnQsCiAg
ICAgICAgIG1fcGVuZGluZ0NsaWNrRXZlbnRGcm9tU25hcHNob3QgPSBldmVudDsKIAogICAgIFN0
cmluZyBwbHVnSW5PcmlnaW4gPSBtX2xvYWRlZFVybC5ob3N0KCk7Ci0gICAgaWYgKGRvY3VtZW50
KCkucGFnZSgpICYmICFTY2hlbWVSZWdpc3RyeTo6c2hvdWxkVHJlYXRVUkxTY2hlbWVBc0xvY2Fs
KGRvY3VtZW50KCkucGFnZSgpLT5tYWluRnJhbWUoKS5kb2N1bWVudCgpLT5iYXNlVVJMKCkucHJv
dG9jb2woKSkgJiYgZG9jdW1lbnQoKS5wYWdlKCktPnNldHRpbmdzKCkuYXV0b3N0YXJ0T3JpZ2lu
UGx1Z0luU25hcHNob3R0aW5nRW5hYmxlZCgpKQotICAgICAgICBkb2N1bWVudCgpLnBhZ2UoKS0+
cGx1Z0luQ2xpZW50KCktPmRpZFN0YXJ0RnJvbU9yaWdpbihkb2N1bWVudCgpLnBhZ2UoKS0+bWFp
bkZyYW1lKCkuZG9jdW1lbnQoKS0+YmFzZVVSTCgpLmhvc3QoKSwgcGx1Z0luT3JpZ2luLCBsb2Fk
ZWRNaW1lVHlwZSgpKTsKKyAgICBpZiAoZG9jdW1lbnQoKS5wYWdlKCkgJiYgIVNjaGVtZVJlZ2lz
dHJ5OjpzaG91bGRUcmVhdFVSTFNjaGVtZUFzTG9jYWwoZG9jdW1lbnQoKS5wYWdlKCktPm1haW5G
cmFtZSgpLmRvY3VtZW50KCkuYmFzZVVSTCgpLnByb3RvY29sKCkpICYmIGRvY3VtZW50KCkucGFn
ZSgpLT5zZXR0aW5ncygpLmF1dG9zdGFydE9yaWdpblBsdWdJblNuYXBzaG90dGluZ0VuYWJsZWQo
KSkKKyAgICAgICAgZG9jdW1lbnQoKS5wYWdlKCktPnBsdWdJbkNsaWVudCgpLT5kaWRTdGFydEZy
b21PcmlnaW4oZG9jdW1lbnQoKS5wYWdlKCktPm1haW5GcmFtZSgpLmRvY3VtZW50KCkuYmFzZVVS
TCgpLmhvc3QoKSwgcGx1Z0luT3JpZ2luLCBsb2FkZWRNaW1lVHlwZSgpKTsKIAogICAgIExPRyhQ
bHVnaW5zLCAiJXAgVXNlciBjbGlja2VkIG9uIHNuYXBzaG90dGVkIHBsdWctaW4uIFJlc3RhcnQu
IiwgdGhpcyk7CiAgICAgcmVzdGFydFNuYXBzaG90dGVkUGx1Z0luKCk7CkBAIC01NjcsOCArNTY1
LDggQEAgc3RhdGljIGJvb2wgZG9jdW1lbnRIYWRSZWNlbnRVc2VyR2VzdHVyZShEb2N1bWVudCYg
ZG9jdW1lbnQpCiB7CiAgICAgZG91YmxlIGxhc3RLbm93blVzZXJHZXN0dXJlVGltZXN0YW1wID0g
ZG9jdW1lbnQubGFzdEhhbmRsZWRVc2VyR2VzdHVyZVRpbWVzdGFtcCgpOwogCi0gICAgaWYgKGRv
Y3VtZW50LmZyYW1lKCkgIT0gJmRvY3VtZW50LnBhZ2UoKS0+bWFpbkZyYW1lKCkgJiYgZG9jdW1l
bnQucGFnZSgpLT5tYWluRnJhbWUoKS5kb2N1bWVudCgpKQotICAgICAgICBsYXN0S25vd25Vc2Vy
R2VzdHVyZVRpbWVzdGFtcCA9IHN0ZDo6bWF4KGxhc3RLbm93blVzZXJHZXN0dXJlVGltZXN0YW1w
LCBkb2N1bWVudC5wYWdlKCktPm1haW5GcmFtZSgpLmRvY3VtZW50KCktPmxhc3RIYW5kbGVkVXNl
ckdlc3R1cmVUaW1lc3RhbXAoKSk7CisgICAgaWYgKGRvY3VtZW50LmZyYW1lKCkgIT0gJmRvY3Vt
ZW50LnBhZ2UoKS0+bWFpbkZyYW1lKCkgJiYgJmRvY3VtZW50LnBhZ2UoKS0+bWFpbkZyYW1lKCku
ZG9jdW1lbnQoKSkKKyAgICAgICAgbGFzdEtub3duVXNlckdlc3R1cmVUaW1lc3RhbXAgPSBzdGQ6
Om1heChsYXN0S25vd25Vc2VyR2VzdHVyZVRpbWVzdGFtcCwgZG9jdW1lbnQucGFnZSgpLT5tYWlu
RnJhbWUoKS5kb2N1bWVudCgpLmxhc3RIYW5kbGVkVXNlckdlc3R1cmVUaW1lc3RhbXAoKSk7CiAK
ICAgICBpZiAobW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lKCkgLSBsYXN0S25vd25Vc2VyR2Vz
dHVyZVRpbWVzdGFtcCA8IGF1dG9zdGFydFNvb25BZnRlclVzZXJHZXN0dXJlVGhyZXNob2xkKQog
ICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTcxNyw4ICs3MTUsOCBAQCB2b2lkIEhUTUxQbHVnSW5J
bWFnZUVsZW1lbnQ6OnN1YmZyYW1lTG9hZGVyV2lsbENyZWF0ZVBsdWdJbihjb25zdCBVUkwmIHVy
bCkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGlmIChkb2N1bWVudCgpLnBhZ2UoKS0+
c2V0dGluZ3MoKS5hdXRvc3RhcnRPcmlnaW5QbHVnSW5TbmFwc2hvdHRpbmdFbmFibGVkKCkgJiYg
ZG9jdW1lbnQoKS5wYWdlKCktPnBsdWdJbkNsaWVudCgpICYmIGRvY3VtZW50KCkucGFnZSgpLT5w
bHVnSW5DbGllbnQoKS0+c2hvdWxkQXV0b1N0YXJ0RnJvbU9yaWdpbihkb2N1bWVudCgpLnBhZ2Uo
KS0+bWFpbkZyYW1lKCkuZG9jdW1lbnQoKS0+YmFzZVVSTCgpLmhvc3QoKSwgdXJsLmhvc3QoKSwg
bG9hZGVkTWltZVR5cGUoKSkpIHsKLSAgICAgICAgTE9HKFBsdWdpbnMsICIlcCBQbHVnLWluIGZy
b20gKCVzLCAlcykgaXMgbWFya2VkIHRvIGF1dG8tc3RhcnQsIHNldCB0byBwbGF5IiwgdGhpcywg
ZG9jdW1lbnQoKS5wYWdlKCktPm1haW5GcmFtZSgpLmRvY3VtZW50KCktPmJhc2VVUkwoKS5ob3N0
KCkudXRmOCgpLmRhdGEoKSwgdXJsLmhvc3QoKS51dGY4KCkuZGF0YSgpKTsKKyAgICBpZiAoZG9j
dW1lbnQoKS5wYWdlKCktPnNldHRpbmdzKCkuYXV0b3N0YXJ0T3JpZ2luUGx1Z0luU25hcHNob3R0
aW5nRW5hYmxlZCgpICYmIGRvY3VtZW50KCkucGFnZSgpLT5wbHVnSW5DbGllbnQoKSAmJiBkb2N1
bWVudCgpLnBhZ2UoKS0+cGx1Z0luQ2xpZW50KCktPnNob3VsZEF1dG9TdGFydEZyb21PcmlnaW4o
ZG9jdW1lbnQoKS5wYWdlKCktPm1haW5GcmFtZSgpLmRvY3VtZW50KCkuYmFzZVVSTCgpLmhvc3Qo
KSwgdXJsLmhvc3QoKSwgbG9hZGVkTWltZVR5cGUoKSkpIHsKKyAgICAgICAgTE9HKFBsdWdpbnMs
ICIlcCBQbHVnLWluIGZyb20gKCVzLCAlcykgaXMgbWFya2VkIHRvIGF1dG8tc3RhcnQsIHNldCB0
byBwbGF5IiwgdGhpcywgZG9jdW1lbnQoKS5wYWdlKCktPm1haW5GcmFtZSgpLmRvY3VtZW50KCku
YmFzZVVSTCgpLmhvc3QoKS51dGY4KCkuZGF0YSgpLCB1cmwuaG9zdCgpLnV0ZjgoKS5kYXRhKCkp
OwogICAgICAgICBtX3NuYXBzaG90RGVjaXNpb24gPSBOZXZlclNuYXBzaG90OwogICAgICAgICBy
ZXR1cm47CiAgICAgfQpAQCAtNzI5LDcgKzcyNyw3IEBAIHZvaWQgSFRNTFBsdWdJbkltYWdlRWxl
bWVudDo6c3ViZnJhbWVMb2FkZXJXaWxsQ3JlYXRlUGx1Z0luKGNvbnN0IFVSTCYgdXJsKQogICAg
ICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaWYgKCFTY2hlbWVSZWdpc3RyeTo6c2hvdWxkVHJl
YXRVUkxTY2hlbWVBc0xvY2FsKG1fbG9hZGVkVXJsLnByb3RvY29sKCkpICYmICFtX2xvYWRlZFVy
bC5ob3N0KCkuaXNFbXB0eSgpICYmIG1fbG9hZGVkVXJsLmhvc3QoKSA9PSBkb2N1bWVudCgpLnBh
Z2UoKS0+bWFpbkZyYW1lKCkuZG9jdW1lbnQoKS0+YmFzZVVSTCgpLmhvc3QoKSkgeworICAgIGlm
ICghU2NoZW1lUmVnaXN0cnk6OnNob3VsZFRyZWF0VVJMU2NoZW1lQXNMb2NhbChtX2xvYWRlZFVy
bC5wcm90b2NvbCgpKSAmJiAhbV9sb2FkZWRVcmwuaG9zdCgpLmlzRW1wdHkoKSAmJiBtX2xvYWRl
ZFVybC5ob3N0KCkgPT0gZG9jdW1lbnQoKS5wYWdlKCktPm1haW5GcmFtZSgpLmRvY3VtZW50KCku
YmFzZVVSTCgpLmhvc3QoKSkgewogICAgICAgICBMT0coUGx1Z2lucywgIiVwIFBsdWctaW4gaXMg
c2VydmVkIGZyb20gcGFnZSdzIGRvbWFpbiwgc2V0IHRvIHBsYXkiLCB0aGlzKTsKICAgICAgICAg
bV9zbmFwc2hvdERlY2lzaW9uID0gTmV2ZXJTbmFwc2hvdDsKICAgICAgICAgcmV0dXJuOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFNjcmlwdFJ1bm5lci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1MU2NyaXB0UnVubmVyLmNwcAppbmRleCA0
MWU3MjVmLi5hYjkxZjRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9I
VE1MU2NyaXB0UnVubmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3BhcnNlci9IVE1M
U2NyaXB0UnVubmVyLmNwcApAQCAtNzgsNyArNzgsNyBAQCBzdGF0aWMgVVJMIGRvY3VtZW50VVJM
Rm9yU2NyaXB0RXhlY3V0aW9uKERvY3VtZW50KiBkb2N1bWVudCkKICAgICAgICAgcmV0dXJuIFVS
TCgpOwogCiAgICAgLy8gVXNlIHRoZSBVUkwgb2YgdGhlIGN1cnJlbnRseSBhY3RpdmUgZG9jdW1l
bnQgZm9yIHRoaXMgZnJhbWUuCi0gICAgcmV0dXJuIGRvY3VtZW50LT5mcmFtZSgpLT5kb2N1bWVu
dCgpLT51cmwoKTsKKyAgICByZXR1cm4gZG9jdW1lbnQtPmZyYW1lKCktPmRvY3VtZW50KCkudXJs
KCk7CiB9CiAKIGlubGluZSBQYXNzUmVmUHRyPEV2ZW50PiBjcmVhdGVTY3JpcHRMb2FkRXZlbnQo
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHAKaW5k
ZXggNWEwNzE1Zi4uZTUwZTRmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckRPTUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yRE9NQWdlbnQuY3BwCkBAIC0yNDAsNyArMjQwLDcgQEAgdm9pZCBJbnNwZWN0b3JET01B
Z2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6SW5zcGVjdG9yRnJv
bnRlbmQKICAgICBtX2RvbUVkaXRvciA9IHN0ZDo6bWFrZV91bmlxdWU8RE9NRWRpdG9yPihtX2hp
c3RvcnkuZ2V0KCkpOwogCiAgICAgbV9pbnN0cnVtZW50aW5nQWdlbnRzLT5zZXRJbnNwZWN0b3JE
T01BZ2VudCh0aGlzKTsKLSAgICBtX2RvY3VtZW50ID0gbV9wYWdlQWdlbnQtPm1haW5GcmFtZSgp
LT5kb2N1bWVudCgpOworICAgIG1fZG9jdW1lbnQgPSAmbV9wYWdlQWdlbnQtPm1haW5GcmFtZSgp
LT5kb2N1bWVudCgpOwogCiAgICAgaWYgKG1fbm9kZVRvRm9jdXMpCiAgICAgICAgIGZvY3VzTm9k
ZSgpOwpAQCAtMjY3LDcgKzI2Nyw3IEBAIFZlY3RvcjxEb2N1bWVudCo+IEluc3BlY3RvckRPTUFn
ZW50Ojpkb2N1bWVudHMoKQogewogICAgIFZlY3RvcjxEb2N1bWVudCo+IHJlc3VsdDsKICAgICBm
b3IgKEZyYW1lKiBmcmFtZSA9IG1fZG9jdW1lbnQtPmZyYW1lKCk7IGZyYW1lOyBmcmFtZSA9IGZy
YW1lLT50cmVlKCkudHJhdmVyc2VOZXh0KCkpIHsKLSAgICAgICAgRG9jdW1lbnQqIGRvY3VtZW50
ID0gZnJhbWUtPmRvY3VtZW50KCk7CisgICAgICAgIERvY3VtZW50KiBkb2N1bWVudCA9ICZmcmFt
ZS0+ZG9jdW1lbnQoKTsKICAgICAgICAgaWYgKCFkb2N1bWVudCkKICAgICAgICAgICAgIGNvbnRp
bnVlOwogICAgICAgICByZXN1bHQuYXBwZW5kKGRvY3VtZW50KTsKQEAgLTE4ODAsNyArMTg4MCw3
IEBAIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OndpbGxQb3BTaGFkb3dSb290KEVsZW1lbnQqIGhv
c3QsIFNoYWRvd1Jvb3QqIHJvb3QpCiAKIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OmZyYW1lRG9j
dW1lbnRVcGRhdGVkKEZyYW1lKiBmcmFtZSkKIHsKLSAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBm
cmFtZS0+ZG9jdW1lbnQoKTsKKyAgICBEb2N1bWVudCogZG9jdW1lbnQgPSAmZnJhbWUtPmRvY3Vt
ZW50KCk7CiAgICAgaWYgKCFkb2N1bWVudCkKICAgICAgICAgcmV0dXJuOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01TdG9yYWdlQWdlbnQuY3BwCmlu
ZGV4IDAzOWI3NDUuLmVkNDY3MTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9JbnNwZWN0b3JET01TdG9yYWdlQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JET01TdG9yYWdlQWdlbnQuY3BwCkBAIC0xNDksMTEgKzE0OSwxMSBAQCB2
b2lkIEluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudDo6cmVtb3ZlRE9NU3RvcmFnZUl0ZW0oRXJyb3JT
dHJpbmcqIGVycm9yU3RyaW5nLCBjbwogU3RyaW5nIEluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudDo6
c3RvcmFnZUlkKFN0b3JhZ2UqIHN0b3JhZ2UpCiB7CiAgICAgQVNTRVJUKHN0b3JhZ2UpOwotICAg
IERvY3VtZW50KiBkb2N1bWVudCA9IHN0b3JhZ2UtPmZyYW1lKCktPmRvY3VtZW50KCk7CisgICAg
RG9jdW1lbnQmIGRvY3VtZW50ID0gc3RvcmFnZS0+ZnJhbWUoKS0+ZG9jdW1lbnQoKTsKICAgICBB
U1NFUlQoZG9jdW1lbnQpOwotICAgIERPTVdpbmRvdyogd2luZG93ID0gZG9jdW1lbnQtPmRvbVdp
bmRvdygpOworICAgIERPTVdpbmRvdyogd2luZG93ID0gZG9jdW1lbnQuZG9tV2luZG93KCk7CiAg
ICAgQVNTRVJUKHdpbmRvdyk7Ci0gICAgUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBzZWN1cml0eU9y
aWdpbiA9IGRvY3VtZW50LT5zZWN1cml0eU9yaWdpbigpOworICAgIFJlZlB0cjxTZWN1cml0eU9y
aWdpbj4gc2VjdXJpdHlPcmlnaW4gPSBkb2N1bWVudC5zZWN1cml0eU9yaWdpbigpOwogICAgIGJv
b2wgaXNMb2NhbFN0b3JhZ2UgPSB3aW5kb3ctPm9wdGlvbmFsTG9jYWxTdG9yYWdlKCkgPT0gc3Rv
cmFnZTsKICAgICByZXR1cm4gc3RvcmFnZUlkKHNlY3VyaXR5T3JpZ2luLmdldCgpLCBpc0xvY2Fs
U3RvcmFnZSktPnRvSlNPTlN0cmluZygpOwogfQpAQCAtMjA1LDggKzIwNSw4IEBAIFBhc3NSZWZQ
dHI8U3RvcmFnZUFyZWE+IEluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudDo6ZmluZFN0b3JhZ2VBcmVh
KEVycm9yU3RyaW5nKiBlCiAKICAgICBQYWdlKiBwYWdlID0gbV9wYWdlQWdlbnQtPnBhZ2UoKTsK
ICAgICBpZiAoaXNMb2NhbFN0b3JhZ2UpCi0gICAgICAgIHJldHVybiBwYWdlLT5ncm91cCgpLmxv
Y2FsU3RvcmFnZSgpLT5zdG9yYWdlQXJlYSh0YXJnZXRGcmFtZS0+ZG9jdW1lbnQoKS0+c2VjdXJp
dHlPcmlnaW4oKSk7Ci0gICAgcmV0dXJuIHBhZ2UtPnNlc3Npb25TdG9yYWdlKCktPnN0b3JhZ2VB
cmVhKHRhcmdldEZyYW1lLT5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpKTsKKyAgICAgICAg
cmV0dXJuIHBhZ2UtPmdyb3VwKCkubG9jYWxTdG9yYWdlKCktPnN0b3JhZ2VBcmVhKHRhcmdldEZy
YW1lLT5kb2N1bWVudCgpLnNlY3VyaXR5T3JpZ2luKCkpOworICAgIHJldHVybiBwYWdlLT5zZXNz
aW9uU3RvcmFnZSgpLT5zdG9yYWdlQXJlYSh0YXJnZXRGcmFtZS0+ZG9jdW1lbnQoKS5zZWN1cml0
eU9yaWdpbigpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwuY3BwIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwuY3Bw
CmluZGV4IDQ4YTI2MTcuLmYxYzNiYmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5jcHAKQEAgLTIxMiw3ICsy
MTIsNyBAQCB2b2lkIEluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWw6Om9wZW5Jbk5ld1RhYihj
b25zdCBTdHJpbmcmIHVybCkKIHsKICAgICBVc2VyR2VzdHVyZUluZGljYXRvciBpbmRpY2F0b3Io
RGVmaW5pdGVseVByb2Nlc3NpbmdVc2VyR2VzdHVyZSk7CiAgICAgRnJhbWUmIG1haW5GcmFtZSA9
IG1faW5zcGVjdG9yQ29udHJvbGxlci0+aW5zcGVjdGVkUGFnZSgpLm1haW5GcmFtZSgpOwotICAg
IEZyYW1lTG9hZFJlcXVlc3QgcmVxdWVzdChtYWluRnJhbWUuZG9jdW1lbnQoKS0+c2VjdXJpdHlP
cmlnaW4oKSwgUmVzb3VyY2VSZXF1ZXN0KCksICJfYmxhbmsiKTsKKyAgICBGcmFtZUxvYWRSZXF1
ZXN0IHJlcXVlc3QobWFpbkZyYW1lLmRvY3VtZW50KCkuc2VjdXJpdHlPcmlnaW4oKSwgUmVzb3Vy
Y2VSZXF1ZXN0KCksICJfYmxhbmsiKTsKIAogICAgIGJvb2wgY3JlYXRlZDsKICAgICBXaW5kb3dG
ZWF0dXJlcyB3aW5kb3dGZWF0dXJlczsKQEAgLTIyNCw3ICsyMjQsNyBAQCB2b2lkIEluc3BlY3Rv
ckZyb250ZW5kQ2xpZW50TG9jYWw6Om9wZW5Jbk5ld1RhYihjb25zdCBTdHJpbmcmIHVybCkKICAg
ICBmcmFtZS0+cGFnZSgpLT5zZXRPcGVuZWRCeURPTSgpOwogCiAgICAgLy8gRklYTUU6IFdoeSBk
b2VzIG9uZSB1c2UgbWFpbkZyYW1lIGFuZCB0aGUgb3RoZXIgZnJhbWU/Ci0gICAgZnJhbWUtPmxv
YWRlcigpLmNoYW5nZUxvY2F0aW9uKG1haW5GcmFtZS5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdp
bigpLCBmcmFtZS0+ZG9jdW1lbnQoKS0+Y29tcGxldGVVUkwodXJsKSwgIiIsIExvY2tIaXN0b3J5
OjpObywgTG9ja0JhY2tGb3J3YXJkTGlzdDo6Tm8pOworICAgIGZyYW1lLT5sb2FkZXIoKS5jaGFu
Z2VMb2NhdGlvbihtYWluRnJhbWUuZG9jdW1lbnQoKS5zZWN1cml0eU9yaWdpbigpLCBmcmFtZS0+
ZG9jdW1lbnQoKS5jb21wbGV0ZVVSTCh1cmwpLCAiIiwgTG9ja0hpc3Rvcnk6Ok5vLCBMb2NrQmFj
a0ZvcndhcmRMaXN0OjpObyk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2Nh
bDo6bW92ZVdpbmRvd0J5KGZsb2F0IHgsIGZsb2F0IHkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckluZGV4ZWREQkFnZW50LmNwcAppbmRleCA3ZmQ2MjkxLi5m
MWU5MzA5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5k
ZXhlZERCQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJ
bmRleGVkREJBZ2VudC5jcHAKQEAgLTU4Miw3ICs1ODIsNyBAQCB2b2lkIEluc3BlY3RvckluZGV4
ZWREQkFnZW50OjpkaXNhYmxlKEVycm9yU3RyaW5nKikKIAogc3RhdGljIERvY3VtZW50KiBhc3Nl
cnREb2N1bWVudChFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIEZyYW1lKiBmcmFtZSkKIHsKLSAg
ICBEb2N1bWVudCogZG9jdW1lbnQgPSBmcmFtZSA/IGZyYW1lLT5kb2N1bWVudCgpIDogbnVsbHB0
cjsKKyAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBmcmFtZSA/ICZmcmFtZS0+ZG9jdW1lbnQoKSA6
IG51bGxwdHI7CiAKICAgICBpZiAoIWRvY3VtZW50KQogICAgICAgICAqZXJyb3JTdHJpbmcgPSAi
Tm8gZG9jdW1lbnQgZm9yIGdpdmVuIGZyYW1lIGZvdW5kIjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAKaW5kZXggYzAzMGJm
NS4uMzM2MmM5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckluc3RydW1lbnRhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbi5jcHAKQEAgLTc4NiwxNCArNzg2LDE0IEBAIHZvaWQgSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRDb21taXRMb2FkSW1wbChJbnN0cnVtZW50aW5nQWdlbnRz
KiBpbnN0cnVtZW50CiAjZW5kaWYKIAogICAgICAgICBpZiAoSW5zcGVjdG9yRE9NQWdlbnQqIGRv
bUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy0+aW5zcGVjdG9yRE9NQWdlbnQoKSkKLSAgICAg
ICAgICAgIGRvbUFnZW50LT5zZXREb2N1bWVudChwYWdlLT5tYWluRnJhbWUoKS5kb2N1bWVudCgp
KTsKKyAgICAgICAgICAgIGRvbUFnZW50LT5zZXREb2N1bWVudCgmcGFnZS0+bWFpbkZyYW1lKCku
ZG9jdW1lbnQoKSk7CiAKICAgICAgICAgaWYgKEluc3BlY3RvckxheWVyVHJlZUFnZW50KiBsYXll
clRyZWVBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMtPmluc3BlY3RvckxheWVyVHJlZUFnZW50
KCkpCiAgICAgICAgICAgICBsYXllclRyZWVBZ2VudC0+cmVzZXQoKTsKICAgICB9CiAKICAgICBp
ZiAoSW5zcGVjdG9yRE9NQWdlbnQqIGRvbUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy0+aW5z
cGVjdG9yRE9NQWdlbnQoKSkKLSAgICAgICAgZG9tQWdlbnQtPmRpZENvbW1pdExvYWQobG9hZGVy
LT5mcmFtZSgpLT5kb2N1bWVudCgpKTsKKyAgICAgICAgZG9tQWdlbnQtPmRpZENvbW1pdExvYWQo
JmxvYWRlci0+ZnJhbWUoKS0+ZG9jdW1lbnQoKSk7CiAKICAgICBpZiAoSW5zcGVjdG9yUGFnZUFn
ZW50KiBwYWdlQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLT5pbnNwZWN0b3JQYWdlQWdlbnQo
KSkKICAgICAgICAgcGFnZUFnZW50LT5mcmFtZU5hdmlnYXRlZChsb2FkZXIpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck92ZXJsYXkuY3BwIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvck92ZXJsYXkuY3BwCmluZGV4IDAxZDE2NzEuLjA1
MTQ0ZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JPdmVy
bGF5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yT3ZlcmxheS5j
cHAKQEAgLTM1OCw3ICszNTgsNyBAQCB2b2lkIEluc3BlY3Rvck92ZXJsYXk6OnVwZGF0ZSgpCiAg
ICAgZHJhd1BhdXNlZEluRGVidWdnZXJNZXNzYWdlKCk7CiAKICAgICAvLyBQb3NpdGlvbiBET00g
ZWxlbWVudHMuCi0gICAgb3ZlcmxheVBhZ2UoKS0+bWFpbkZyYW1lKCkuZG9jdW1lbnQoKS0+cmVj
YWxjU3R5bGUoU3R5bGU6OkZvcmNlKTsKKyAgICBvdmVybGF5UGFnZSgpLT5tYWluRnJhbWUoKS5k
b2N1bWVudCgpLnJlY2FsY1N0eWxlKFN0eWxlOjpGb3JjZSk7CiAgICAgaWYgKG92ZXJsYXlWaWV3
LT5uZWVkc0xheW91dCgpKQogICAgICAgICBvdmVybGF5Vmlldy0+bGF5b3V0KCk7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JQYWdlQWdlbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclBhZ2VBZ2VudC5jcHAKaW5kZXggNDVi
ZjBlZS4uOWZjZmJiZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvclBhZ2VBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
clBhZ2VBZ2VudC5jcHAKQEAgLTIwMiw3ICsyMDIsNyBAQCBib29sIEluc3BlY3RvclBhZ2VBZ2Vu
dDo6bWFpblJlc291cmNlQ29udGVudChGcmFtZSogZnJhbWUsIGJvb2wgd2l0aEJhc2U2NEVuY29k
ZQogICAgIFJlZlB0cjxSZXNvdXJjZUJ1ZmZlcj4gYnVmZmVyID0gZnJhbWUtPmxvYWRlcigpLmRv
Y3VtZW50TG9hZGVyKCktPm1haW5SZXNvdXJjZURhdGEoKTsKICAgICBpZiAoIWJ1ZmZlcikKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwotICAgIFN0cmluZyB0ZXh0RW5jb2RpbmdOYW1lID0gZnJhbWUt
PmRvY3VtZW50KCktPmlucHV0RW5jb2RpbmcoKTsKKyAgICBTdHJpbmcgdGV4dEVuY29kaW5nTmFt
ZSA9IGZyYW1lLT5kb2N1bWVudCgpLmlucHV0RW5jb2RpbmcoKTsKIAogICAgIHJldHVybiBJbnNw
ZWN0b3JQYWdlQWdlbnQ6OmRhdGFDb250ZW50KGJ1ZmZlci0+ZGF0YSgpLCBidWZmZXItPnNpemUo
KSwgdGV4dEVuY29kaW5nTmFtZSwgd2l0aEJhc2U2NEVuY29kZSwgcmVzdWx0KTsKIH0KQEAgLTI3
NSwxMSArMjc1LDExIEBAIFN0cmluZyBJbnNwZWN0b3JQYWdlQWdlbnQ6OnNvdXJjZU1hcFVSTEZv
clJlc291cmNlKENhY2hlZFJlc291cmNlKiBjYWNoZWRSZXNvdXJjCiAKIENhY2hlZFJlc291cmNl
KiBJbnNwZWN0b3JQYWdlQWdlbnQ6OmNhY2hlZFJlc291cmNlKEZyYW1lKiBmcmFtZSwgY29uc3Qg
VVJMJiB1cmwpCiB7Ci0gICAgQ2FjaGVkUmVzb3VyY2UqIGNhY2hlZFJlc291cmNlID0gZnJhbWUt
PmRvY3VtZW50KCktPmNhY2hlZFJlc291cmNlTG9hZGVyKCktPmNhY2hlZFJlc291cmNlKHVybCk7
CisgICAgQ2FjaGVkUmVzb3VyY2UqIGNhY2hlZFJlc291cmNlID0gZnJhbWUtPmRvY3VtZW50KCku
Y2FjaGVkUmVzb3VyY2VMb2FkZXIoKS0+Y2FjaGVkUmVzb3VyY2UodXJsKTsKICAgICBpZiAoIWNh
Y2hlZFJlc291cmNlKSB7CiAgICAgICAgIFJlc291cmNlUmVxdWVzdCByZXF1ZXN0KHVybCk7CiAj
aWYgRU5BQkxFKENBQ0hFX1BBUlRJVElPTklORykKLSAgICAgICAgcmVxdWVzdC5zZXRDYWNoZVBh
cnRpdGlvbihmcmFtZS0+ZG9jdW1lbnQoKS0+dG9wT3JpZ2luKCktPmNhY2hlUGFydGl0aW9uKCkp
OworICAgICAgICByZXF1ZXN0LnNldENhY2hlUGFydGl0aW9uKGZyYW1lLT5kb2N1bWVudCgpLnRv
cE9yaWdpbigpLT5jYWNoZVBhcnRpdGlvbigpKTsKICNlbmRpZgogICAgICAgICBjYWNoZWRSZXNv
dXJjZSA9IG1lbW9yeUNhY2hlKCktPnJlc291cmNlRm9yUmVxdWVzdChyZXF1ZXN0LCBmcmFtZS0+
cGFnZSgpLT5zZXNzaW9uSUQoKSk7CiAgICAgfQpAQCAtNDI5LDcgKzQyOSw3IEBAIHZvaWQgSW5z
cGVjdG9yUGFnZUFnZW50OjpuYXZpZ2F0ZShFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgdXJs
KQogewogICAgIFVzZXJHZXN0dXJlSW5kaWNhdG9yIGluZGljYXRvcihEZWZpbml0ZWx5UHJvY2Vz
c2luZ1VzZXJHZXN0dXJlKTsKICAgICBGcmFtZSYgZnJhbWUgPSBtX3BhZ2UtPm1haW5GcmFtZSgp
OwotICAgIGZyYW1lLmxvYWRlcigpLmNoYW5nZUxvY2F0aW9uKGZyYW1lLmRvY3VtZW50KCktPnNl
Y3VyaXR5T3JpZ2luKCksIGZyYW1lLmRvY3VtZW50KCktPmNvbXBsZXRlVVJMKHVybCksICIiLCBM
b2NrSGlzdG9yeTo6Tm8sIExvY2tCYWNrRm9yd2FyZExpc3Q6Ok5vKTsKKyAgICBmcmFtZS5sb2Fk
ZXIoKS5jaGFuZ2VMb2NhdGlvbihmcmFtZS5kb2N1bWVudCgpLnNlY3VyaXR5T3JpZ2luKCksIGZy
YW1lLmRvY3VtZW50KCkuY29tcGxldGVVUkwodXJsKSwgIiIsIExvY2tIaXN0b3J5OjpObywgTG9j
a0JhY2tGb3J3YXJkTGlzdDo6Tm8pOwogfQogCiBzdGF0aWMgUGFzc1JlZlB0cjxJbnNwZWN0b3I6
OlR5cGVCdWlsZGVyOjpQYWdlOjpDb29raWU+IGJ1aWxkT2JqZWN0Rm9yQ29va2llKGNvbnN0IENv
b2tpZSYgY29va2llKQpAQCAtNDYxLDcgKzQ2MSw3IEBAIHN0YXRpYyBWZWN0b3I8Q2FjaGVkUmVz
b3VyY2UqPiBjYWNoZWRSZXNvdXJjZXNGb3JGcmFtZShGcmFtZSogZnJhbWUpCiB7CiAgICAgVmVj
dG9yPENhY2hlZFJlc291cmNlKj4gcmVzdWx0OwogCi0gICAgZm9yIChhdXRvJiBjYWNoZWRSZXNv
dXJjZUhhbmRsZSA6IGZyYW1lLT5kb2N1bWVudCgpLT5jYWNoZWRSZXNvdXJjZUxvYWRlcigpLT5h
bGxDYWNoZWRSZXNvdXJjZXMoKS52YWx1ZXMoKSkgeworICAgIGZvciAoYXV0byYgY2FjaGVkUmVz
b3VyY2VIYW5kbGUgOiBmcmFtZS0+ZG9jdW1lbnQoKS5jYWNoZWRSZXNvdXJjZUxvYWRlcigpLT5h
bGxDYWNoZWRSZXNvdXJjZXMoKS52YWx1ZXMoKSkgewogICAgICAgICBhdXRvKiBjYWNoZWRSZXNv
dXJjZSA9IGNhY2hlZFJlc291cmNlSGFuZGxlLmdldCgpOwogICAgICAgICBpZiAoY2FjaGVkUmVz
b3VyY2UtPnJlc291cmNlUmVxdWVzdCgpLmhpZGRlbkZyb21JbnNwZWN0b3IoKSkKICAgICAgICAg
ICAgIGNvbnRpbnVlOwpAQCAtNTExLDE3ICs1MTEsMTcgQEAgdm9pZCBJbnNwZWN0b3JQYWdlQWdl
bnQ6OmdldENvb2tpZXMoRXJyb3JTdHJpbmcqLCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRl
cjoKICAgICBib29sIHJhd0Nvb2tpZXNJbXBsZW1lbnRlZCA9IGZhbHNlOwogCiAgICAgZm9yIChG
cmFtZSogZnJhbWUgPSBtYWluRnJhbWUoKTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyZWUoKS50
cmF2ZXJzZU5leHQobWFpbkZyYW1lKCkpKSB7Ci0gICAgICAgIERvY3VtZW50KiBkb2N1bWVudCA9
IGZyYW1lLT5kb2N1bWVudCgpOworICAgICAgICBEb2N1bWVudCYgZG9jdW1lbnQgPSBmcmFtZS0+
ZG9jdW1lbnQoKTsKIAogICAgICAgICBmb3IgKGF1dG8mIHVybCA6IGFsbFJlc291cmNlc1VSTHNG
b3JGcmFtZShmcmFtZSkpIHsKICAgICAgICAgICAgIFZlY3RvcjxDb29raWU+IGRvY0Nvb2tpZXNM
aXN0OwotICAgICAgICAgICAgcmF3Q29va2llc0ltcGxlbWVudGVkID0gZ2V0UmF3Q29va2llcyhk
b2N1bWVudCwgVVJMKFBhcnNlZFVSTFN0cmluZywgdXJsKSwgZG9jQ29va2llc0xpc3QpOworICAg
ICAgICAgICAgcmF3Q29va2llc0ltcGxlbWVudGVkID0gZ2V0UmF3Q29va2llcygmZG9jdW1lbnQs
IFVSTChQYXJzZWRVUkxTdHJpbmcsIHVybCksIGRvY0Nvb2tpZXNMaXN0KTsKIAogICAgICAgICAg
ICAgaWYgKCFyYXdDb29raWVzSW1wbGVtZW50ZWQpIHsKICAgICAgICAgICAgICAgICAvLyBGSVhN
RTogV2UgbmVlZCBkdXBsaWNhdGlvbiBjaGVja2luZyBmb3IgdGhlIFN0cmluZyByZXByZXNlbnRh
dGlvbiBvZiBjb29raWVzLgogICAgICAgICAgICAgICAgIC8vIEV4Y2VwdGlvbnMgYXJlIHRocm93
biBieSBjb29raWUoKSBpbiBzYW5kYm94ZWQgZnJhbWVzLiBUaGF0IHdvbid0IGhhcHBlbiBoZXJl
CiAgICAgICAgICAgICAgICAgLy8gYmVjYXVzZSAiZG9jdW1lbnQiIGlzIHRoZSBkb2N1bWVudCBv
ZiB0aGUgbWFpbiBmcmFtZSBvZiB0aGUgcGFnZS4KLSAgICAgICAgICAgICAgICBzdHJpbmdDb29r
aWVzTGlzdC5hcHBlbmQoZG9jdW1lbnQtPmNvb2tpZShBU1NFUlRfTk9fRVhDRVBUSU9OKSk7Cisg
ICAgICAgICAgICAgICAgc3RyaW5nQ29va2llc0xpc3QuYXBwZW5kKGRvY3VtZW50LmNvb2tpZShB
U1NFUlRfTk9fRVhDRVBUSU9OKSk7CiAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAg
ICAgIGludCBjb29raWVzU2l6ZSA9IGRvY0Nvb2tpZXNMaXN0LnNpemUoKTsKICAgICAgICAgICAg
ICAgICBmb3IgKGludCBpID0gMDsgaSA8IGNvb2tpZXNTaXplOyBpKyspIHsKQEAgLTU0Myw3ICs1
NDMsNyBAQCB2b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6ZGVsZXRlQ29va2llKEVycm9yU3RyaW5n
KiwgY29uc3QgU3RyaW5nJiBjb29raWVOYW1lLCBjbwogewogICAgIFVSTCBwYXJzZWRVUkwoUGFy
c2VkVVJMU3RyaW5nLCB1cmwpOwogICAgIGZvciAoRnJhbWUqIGZyYW1lID0gJm1fcGFnZS0+bWFp
bkZyYW1lKCk7IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50cmVlKCkudHJhdmVyc2VOZXh0KCZtX3Bh
Z2UtPm1haW5GcmFtZSgpKSkKLSAgICAgICAgV2ViQ29yZTo6ZGVsZXRlQ29va2llKGZyYW1lLT5k
b2N1bWVudCgpLCBwYXJzZWRVUkwsIGNvb2tpZU5hbWUpOworICAgICAgICBXZWJDb3JlOjpkZWxl
dGVDb29raWUoJmZyYW1lLT5kb2N1bWVudCgpLCBwYXJzZWRVUkwsIGNvb2tpZU5hbWUpOwogfQog
CiB2b2lkIEluc3BlY3RvclBhZ2VBZ2VudDo6Z2V0UmVzb3VyY2VUcmVlKEVycm9yU3RyaW5nKiwg
UmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlBhZ2U6OkZyYW1lUmVzb3VyY2VUcmVlPiYg
b2JqZWN0KQpAQCAtNjM4LDcgKzYzOCw3IEBAIHZvaWQgSW5zcGVjdG9yUGFnZUFnZW50OjpzZWFy
Y2hJblJlc291cmNlcyhFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgdGV4dCwgY29uCiAgICAg
ICAgIGlmIChtYWluUmVzb3VyY2VDb250ZW50KGZyYW1lLCBmYWxzZSwgJmNvbnRlbnQpKSB7CiAg
ICAgICAgICAgICBpbnQgbWF0Y2hlc0NvdW50ID0gQ29udGVudFNlYXJjaFV0aWxpdGllczo6Y291
bnRSZWd1bGFyRXhwcmVzc2lvbk1hdGNoZXMocmVnZXgsIGNvbnRlbnQpOwogICAgICAgICAgICAg
aWYgKG1hdGNoZXNDb3VudCkKLSAgICAgICAgICAgICAgICBzZWFyY2hSZXN1bHRzLT5hZGRJdGVt
KGJ1aWxkT2JqZWN0Rm9yU2VhcmNoUmVzdWx0KGZyYW1lSWQoZnJhbWUpLCBmcmFtZS0+ZG9jdW1l
bnQoKS0+dXJsKCksIG1hdGNoZXNDb3VudCkpOworICAgICAgICAgICAgICAgIHNlYXJjaFJlc3Vs
dHMtPmFkZEl0ZW0oYnVpbGRPYmplY3RGb3JTZWFyY2hSZXN1bHQoZnJhbWVJZChmcmFtZSksIGZy
YW1lLT5kb2N1bWVudCgpLnVybCgpLCBtYXRjaGVzQ291bnQpKTsKICAgICAgICAgfQogICAgIH0K
IApAQCAtNjUxLDcgKzY1MSw3IEBAIHZvaWQgSW5zcGVjdG9yUGFnZUFnZW50OjpzZXREb2N1bWVu
dENvbnRlbnQoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpCiAgICAgaWYgKCFm
cmFtZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gZnJhbWUt
PmRvY3VtZW50KCk7CisgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gJmZyYW1lLT5kb2N1bWVudCgp
OwogICAgIGlmICghZG9jdW1lbnQpIHsKICAgICAgICAgKmVycm9yU3RyaW5nID0gIk5vIERvY3Vt
ZW50IGluc3RhbmNlIHRvIHNldCBIVE1MIGZvciI7CiAgICAgICAgIHJldHVybjsKQEAgLTgzMSw3
ICs4MzEsNyBAQCBTdHJpbmcgSW5zcGVjdG9yUGFnZUFnZW50Ojpsb2FkZXJJZChEb2N1bWVudExv
YWRlciogbG9hZGVyKQogRnJhbWUqIEluc3BlY3RvclBhZ2VBZ2VudDo6ZmluZEZyYW1lV2l0aFNl
Y3VyaXR5T3JpZ2luKGNvbnN0IFN0cmluZyYgb3JpZ2luUmF3U3RyaW5nKQogewogICAgIGZvciAo
RnJhbWUqIGZyYW1lID0gJm1fcGFnZS0+bWFpbkZyYW1lKCk7IGZyYW1lOyBmcmFtZSA9IGZyYW1l
LT50cmVlKCkudHJhdmVyc2VOZXh0KCkpIHsKLSAgICAgICAgUmVmUHRyPFNlY3VyaXR5T3JpZ2lu
PiBkb2N1bWVudE9yaWdpbiA9IGZyYW1lLT5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpOwor
ICAgICAgICBSZWZQdHI8U2VjdXJpdHlPcmlnaW4+IGRvY3VtZW50T3JpZ2luID0gZnJhbWUtPmRv
Y3VtZW50KCkuc2VjdXJpdHlPcmlnaW4oKTsKICAgICAgICAgaWYgKGRvY3VtZW50T3JpZ2luLT50
b1Jhd1N0cmluZygpID09IG9yaWdpblJhd1N0cmluZykKICAgICAgICAgICAgIHJldHVybiBmcmFt
ZTsKICAgICB9CkBAIC05NDUsOSArOTQ1LDkgQEAgUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVC
dWlsZGVyOjpQYWdlOjpGcmFtZT4gSW5zcGVjdG9yUGFnZUFnZW50OjpidWlsZE9iamVjdEYKICAg
ICBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UGFnZTo6RnJhbWU+IGZyYW1lT2JqZWN0
ID0gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UGFnZTo6RnJhbWU6OmNyZWF0ZSgpCiAgICAgICAg
IC5zZXRJZChmcmFtZUlkKGZyYW1lKSkKICAgICAgICAgLnNldExvYWRlcklkKGxvYWRlcklkKGZy
YW1lLT5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigpKSkKLSAgICAgICAgLnNldFVybChmcmFtZS0+
ZG9jdW1lbnQoKS0+dXJsKCkuc3RyaW5nKCkpCisgICAgICAgIC5zZXRVcmwoZnJhbWUtPmRvY3Vt
ZW50KCkudXJsKCkuc3RyaW5nKCkpCiAgICAgICAgIC5zZXRNaW1lVHlwZShmcmFtZS0+bG9hZGVy
KCkuZG9jdW1lbnRMb2FkZXIoKS0+cmVzcG9uc2VNSU1FVHlwZSgpKQotICAgICAgICAuc2V0U2Vj
dXJpdHlPcmlnaW4oZnJhbWUtPmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCktPnRvUmF3U3Ry
aW5nKCkpOworICAgICAgICAuc2V0U2VjdXJpdHlPcmlnaW4oZnJhbWUtPmRvY3VtZW50KCkuc2Vj
dXJpdHlPcmlnaW4oKS0+dG9SYXdTdHJpbmcoKSk7CiAgICAgaWYgKGZyYW1lLT50cmVlKCkucGFy
ZW50KCkpCiAgICAgICAgIGZyYW1lT2JqZWN0LT5zZXRQYXJlbnRJZChmcmFtZUlkKGZyYW1lLT50
cmVlKCkucGFyZW50KCkpKTsKICAgICBpZiAoZnJhbWUtPm93bmVyRWxlbWVudCgpKSB7CkBAIC0x
MDE5LDExICsxMDE5LDEwIEBAIHZvaWQgSW5zcGVjdG9yUGFnZUFnZW50OjpzZXRFbXVsYXRlZE1l
ZGlhKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBtZWRpYSkKICAgICAgICAgcmV0dXJuOwog
CiAgICAgbV9lbXVsYXRlZE1lZGlhID0gbWVkaWE7Ci0gICAgRG9jdW1lbnQqIGRvY3VtZW50ID0g
bV9wYWdlLT5tYWluRnJhbWUoKS5kb2N1bWVudCgpOwotICAgIGlmIChkb2N1bWVudCkgewotICAg
ICAgICBkb2N1bWVudC0+c3R5bGVSZXNvbHZlckNoYW5nZWQoUmVjYWxjU3R5bGVJbW1lZGlhdGVs
eSk7Ci0gICAgICAgIGRvY3VtZW50LT51cGRhdGVMYXlvdXQoKTsKLSAgICB9CisgICAgRG9jdW1l
bnQmIGRvY3VtZW50ID0gbV9wYWdlLT5tYWluRnJhbWUoKS5kb2N1bWVudCgpOworICAgIEFTU0VS
VChkb2N1bWVudCk7CisgICAgZG9jdW1lbnQuc3R5bGVSZXNvbHZlckNoYW5nZWQoUmVjYWxjU3R5
bGVJbW1lZGlhdGVseSk7CisgICAgZG9jdW1lbnQudXBkYXRlTGF5b3V0KCk7CiB9CiAKIHZvaWQg
SW5zcGVjdG9yUGFnZUFnZW50OjphcHBseUVtdWxhdGVkTWVkaWEoU3RyaW5nKiBtZWRpYSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmNw
cAppbmRleCBiNzIwODM0Li41OTk5ZTcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuY3BwCkBAIC0zMjMsNyArMzIzLDcgQEAgdm9p
ZCBJbnNwZWN0b3JSZXNvdXJjZUFnZW50Ojp3aWxsU2VuZFJlcXVlc3QodW5zaWduZWQgbG9uZyBp
ZGVudGlmaWVyLCBEb2N1bWVudEwKIAogICAgIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlBhZ2U6
OlJlc291cmNlVHlwZTo6RW51bSByZXNvdXJjZVR5cGUgPSBJbnNwZWN0b3JQYWdlQWdlbnQ6OnJl
c291cmNlVHlwZUpzb24odHlwZSk7CiAKLSAgICBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRl
cjo6TmV0d29yazo6SW5pdGlhdG9yPiBpbml0aWF0b3JPYmplY3QgPSBidWlsZEluaXRpYXRvck9i
amVjdChsb2FkZXItPmZyYW1lKCkgPyBsb2FkZXItPmZyYW1lKCktPmRvY3VtZW50KCkgOiBudWxs
cHRyKTsKKyAgICBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6TmV0d29yazo6SW5pdGlh
dG9yPiBpbml0aWF0b3JPYmplY3QgPSBidWlsZEluaXRpYXRvck9iamVjdChsb2FkZXItPmZyYW1l
KCkgPyAmbG9hZGVyLT5mcmFtZSgpLT5kb2N1bWVudCgpIDogbnVsbHB0cik7CiAgICAgbV9mcm9u
dGVuZERpc3BhdGNoZXItPnJlcXVlc3RXaWxsQmVTZW50KHJlcXVlc3RJZCwgbV9wYWdlQWdlbnQt
PmZyYW1lSWQobG9hZGVyLT5mcmFtZSgpKSwgbV9wYWdlQWdlbnQtPmxvYWRlcklkKGxvYWRlciks
IGxvYWRlci0+dXJsKCkuc3RyaW5nKCksIGJ1aWxkT2JqZWN0Rm9yUmVzb3VyY2VSZXF1ZXN0KHJl
cXVlc3QpLCBjdXJyZW50VGltZSgpLCBpbml0aWF0b3JPYmplY3QsIGJ1aWxkT2JqZWN0Rm9yUmVz
b3VyY2VSZXNwb25zZShyZWRpcmVjdFJlc3BvbnNlLCBsb2FkZXIpLCB0eXBlICE9IEluc3BlY3Rv
clBhZ2VBZ2VudDo6T3RoZXJSZXNvdXJjZSA/ICZyZXNvdXJjZVR5cGUgOiBudWxscHRyKTsKIH0K
IApAQCAtNDA2LDcgKzQwNiw3IEBAIHZvaWQgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6ZGlkRmlu
aXNoTG9hZGluZyh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIERvY3VtZW50CiAgICAgU3RyaW5n
IHJlcXVlc3RJZCA9IElkZW50aWZpZXJzRmFjdG9yeTo6cmVxdWVzdElkKGlkZW50aWZpZXIpOwog
ICAgIGlmIChtX3Jlc291cmNlc0RhdGEtPnJlc291cmNlVHlwZShyZXF1ZXN0SWQpID09IEluc3Bl
Y3RvclBhZ2VBZ2VudDo6RG9jdW1lbnRSZXNvdXJjZSkgewogICAgICAgICBSZWZQdHI8UmVzb3Vy
Y2VCdWZmZXI+IGJ1ZmZlciA9IGxvYWRlci0+ZnJhbWVMb2FkZXIoKS0+ZG9jdW1lbnRMb2FkZXIo
KS0+bWFpblJlc291cmNlRGF0YSgpOwotICAgICAgICBtX3Jlc291cmNlc0RhdGEtPmFkZFJlc291
cmNlU2hhcmVkQnVmZmVyKHJlcXVlc3RJZCwgYnVmZmVyID8gYnVmZmVyLT5zaGFyZWRCdWZmZXIo
KSA6IG51bGxwdHIsIGxvYWRlci0+ZnJhbWUoKS0+ZG9jdW1lbnQoKS0+aW5wdXRFbmNvZGluZygp
KTsKKyAgICAgICAgbV9yZXNvdXJjZXNEYXRhLT5hZGRSZXNvdXJjZVNoYXJlZEJ1ZmZlcihyZXF1
ZXN0SWQsIGJ1ZmZlciA/IGJ1ZmZlci0+c2hhcmVkQnVmZmVyKCkgOiBudWxscHRyLCBsb2FkZXIt
PmZyYW1lKCktPmRvY3VtZW50KCkuaW5wdXRFbmNvZGluZygpKTsKICAgICB9CiAKICAgICBtX3Jl
c291cmNlc0RhdGEtPm1heWJlRGVjb2RlRGF0YVRvQ29udGVudChyZXF1ZXN0SWQpOwpAQCAtNDM0
LDkgKzQzNCwxMCBAQCB2b2lkIEluc3BlY3RvclJlc291cmNlQWdlbnQ6OmRpZEZhaWxMb2FkaW5n
KHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgRG9jdW1lbnRMbwogCiAgICAgaWYgKG1fcmVzb3Vy
Y2VzRGF0YS0+cmVzb3VyY2VUeXBlKHJlcXVlc3RJZCkgPT0gSW5zcGVjdG9yUGFnZUFnZW50OjpE
b2N1bWVudFJlc291cmNlKSB7CiAgICAgICAgIEZyYW1lKiBmcmFtZSA9IGxvYWRlciA/IGxvYWRl
ci0+ZnJhbWUoKSA6IG51bGxwdHI7Ci0gICAgICAgIGlmIChmcmFtZSAmJiBmcmFtZS0+bG9hZGVy
KCkuZG9jdW1lbnRMb2FkZXIoKSAmJiBmcmFtZS0+ZG9jdW1lbnQoKSkgeworICAgICAgICBpZiAo
ZnJhbWUgJiYgZnJhbWUtPmxvYWRlcigpLmRvY3VtZW50TG9hZGVyKCkpIHsKKyAgICAgICAgICAg
IEFTU0VSVChmcmFtZS0+ZG9jdW1lbnQoKSk7CiAgICAgICAgICAgICBSZWZQdHI8UmVzb3VyY2VC
dWZmZXI+IGJ1ZmZlciA9IGZyYW1lLT5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigpLT5tYWluUmVz
b3VyY2VEYXRhKCk7Ci0gICAgICAgICAgICBtX3Jlc291cmNlc0RhdGEtPmFkZFJlc291cmNlU2hh
cmVkQnVmZmVyKHJlcXVlc3RJZCwgYnVmZmVyID8gYnVmZmVyLT5zaGFyZWRCdWZmZXIoKSA6IG51
bGxwdHIsIGZyYW1lLT5kb2N1bWVudCgpLT5pbnB1dEVuY29kaW5nKCkpOworICAgICAgICAgICAg
bV9yZXNvdXJjZXNEYXRhLT5hZGRSZXNvdXJjZVNoYXJlZEJ1ZmZlcihyZXF1ZXN0SWQsIGJ1ZmZl
ciA/IGJ1ZmZlci0+c2hhcmVkQnVmZmVyKCkgOiBudWxscHRyLCBmcmFtZS0+ZG9jdW1lbnQoKS5p
bnB1dEVuY29kaW5nKCkpOwogICAgICAgICB9CiAgICAgfQogCkBAIC00NTgsNyArNDU5LDcgQEAg
dm9pZCBJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpkaWRMb2FkUmVzb3VyY2VGcm9tTWVtb3J5Q2Fj
aGUoRG9jdW1lbnRMb2FkZXIqIGxvYWQKICAgICAgICAgbV9yZXNvdXJjZXNEYXRhLT5yZXVzZVhI
UlJlcGxheURhdGEocmVxdWVzdElkLCByYXdSZXF1ZXN0SWQpOwogICAgIH0KIAotICAgIFJlZlB0
cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpOZXR3b3JrOjpJbml0aWF0b3I+IGluaXRpYXRvck9i
amVjdCA9IGJ1aWxkSW5pdGlhdG9yT2JqZWN0KGxvYWRlci0+ZnJhbWUoKSA/IGxvYWRlci0+ZnJh
bWUoKS0+ZG9jdW1lbnQoKSA6IG51bGxwdHIpOworICAgIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVC
dWlsZGVyOjpOZXR3b3JrOjpJbml0aWF0b3I+IGluaXRpYXRvck9iamVjdCA9IGJ1aWxkSW5pdGlh
dG9yT2JqZWN0KGxvYWRlci0+ZnJhbWUoKSA/ICZsb2FkZXItPmZyYW1lKCktPmRvY3VtZW50KCkg
OiBudWxscHRyKTsKIAogICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyLT5yZXF1ZXN0U2VydmVkRnJv
bU1lbW9yeUNhY2hlKHJlcXVlc3RJZCwgZnJhbWVJZCwgbG9hZGVySWQsIGxvYWRlci0+dXJsKCku
c3RyaW5nKCksIGN1cnJlbnRUaW1lKCksIGluaXRpYXRvck9iamVjdCwgYnVpbGRPYmplY3RGb3JD
YWNoZWRSZXNvdXJjZShyZXNvdXJjZSwgbG9hZGVyKSk7CiB9CkBAIC02OTYsNyArNjk3LDcgQEAg
dm9pZCBJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpnZXRSZXNwb25zZUJvZHkoRXJyb3JTdHJpbmcq
IGVycm9yU3RyaW5nLCBjb25zdCBTdHIKIAogdm9pZCBJbnNwZWN0b3JSZXNvdXJjZUFnZW50Ojpy
ZXBsYXlYSFIoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIHJlcXVlc3RJZCkKIHsKLSAgICBS
ZWZQdHI8WE1MSHR0cFJlcXVlc3Q+IHhociA9IFhNTEh0dHBSZXF1ZXN0OjpjcmVhdGUoKm1fcGFn
ZUFnZW50LT5tYWluRnJhbWUoKS0+ZG9jdW1lbnQoKSk7CisgICAgUmVmUHRyPFhNTEh0dHBSZXF1
ZXN0PiB4aHIgPSBYTUxIdHRwUmVxdWVzdDo6Y3JlYXRlKG1fcGFnZUFnZW50LT5tYWluRnJhbWUo
KS0+ZG9jdW1lbnQoKSk7CiAgICAgU3RyaW5nIGFjdHVhbFJlcXVlc3RJZCA9IHJlcXVlc3RJZDsK
IAogICAgIFhIUlJlcGxheURhdGEqIHhoclJlcGxheURhdGEgPSBtX3Jlc291cmNlc0RhdGEtPnho
clJlcGxheURhdGEocmVxdWVzdElkKTsKQEAgLTcwNSw3ICs3MDYsNyBAQCB2b2lkIEluc3BlY3Rv
clJlc291cmNlQWdlbnQ6OnJlcGxheVhIUihFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgcmVx
dWVzdElkKQogCiAgICAgUmVzb3VyY2VSZXF1ZXN0IHJlcXVlc3QoeGhyUmVwbGF5RGF0YS0+dXJs
KCkpOwogI2lmIEVOQUJMRShDQUNIRV9QQVJUSVRJT05JTkcpCi0gICAgcmVxdWVzdC5zZXRDYWNo
ZVBhcnRpdGlvbihtX3BhZ2VBZ2VudC0+bWFpbkZyYW1lKCktPmRvY3VtZW50KCktPnRvcE9yaWdp
bigpLT5jYWNoZVBhcnRpdGlvbigpKTsKKyAgICByZXF1ZXN0LnNldENhY2hlUGFydGl0aW9uKG1f
cGFnZUFnZW50LT5tYWluRnJhbWUoKS0+ZG9jdW1lbnQoKS50b3BPcmlnaW4oKS0+Y2FjaGVQYXJ0
aXRpb24oKSk7CiAjZW5kaWYKIAogICAgIENhY2hlZFJlc291cmNlKiBjYWNoZWRSZXNvdXJjZSA9
IG1lbW9yeUNhY2hlKCktPnJlc291cmNlRm9yUmVxdWVzdChyZXF1ZXN0LCBtX3BhZ2VBZ2VudC0+
cGFnZSgpLT5zZXNzaW9uSUQoKSk7CkBAIC03NTEsNyArNzUyLDcgQEAgdm9pZCBJbnNwZWN0b3JS
ZXNvdXJjZUFnZW50Ojpsb2FkUmVzb3VyY2UoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25z
dCBTdHJpbmcKICAgICBpZiAoIWZyYW1lKQogICAgICAgICByZXR1cm47CiAKLSAgICBEb2N1bWVu
dCogZG9jdW1lbnQgPSBmcmFtZS0+ZG9jdW1lbnQoKTsKKyAgICBEb2N1bWVudCogZG9jdW1lbnQg
PSAmZnJhbWUtPmRvY3VtZW50KCk7CiAgICAgaWYgKCFkb2N1bWVudCkgewogICAgICAgICAqZXJy
b3JTdHJpbmcgPSBBU0NJSUxpdGVyYWwoIk5vIERvY3VtZW50IGluc3RhbmNlIGZvciB0aGUgc3Bl
Y2lmaWVkIGZyYW1lIik7CiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9QYWdlU2NyaXB0RGVidWdTZXJ2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL1BhZ2VTY3JpcHREZWJ1Z1NlcnZlci5jcHAKaW5kZXggZTU4OWE0ZC4uNGM5ZGQw
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VTY3JpcHREZWJ1Z1Nl
cnZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VTY3JpcHREZWJ1Z1Nl
cnZlci5jcHAKQEAgLTE3NSwxMyArMTc1LDEzIEBAIHZvaWQgUGFnZVNjcmlwdERlYnVnU2VydmVy
OjpzZXRKYXZhU2NyaXB0UGF1c2VkKEZyYW1lKiBmcmFtZSwgYm9vbCBwYXVzZWQpCiAKICAgICBm
cmFtZS0+c2NyaXB0KCkuc2V0UGF1c2VkKHBhdXNlZCk7CiAKLSAgICBEb2N1bWVudCogZG9jdW1l
bnQgPSBmcmFtZS0+ZG9jdW1lbnQoKTsKKyAgICBEb2N1bWVudCYgZG9jdW1lbnQgPSBmcmFtZS0+
ZG9jdW1lbnQoKTsKICAgICBpZiAocGF1c2VkKSB7Ci0gICAgICAgIGRvY3VtZW50LT5zdXNwZW5k
U2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVyQ2FsbGJhY2tzKCk7Ci0gICAgICAgIGRvY3VtZW50
LT5zdXNwZW5kQWN0aXZlRE9NT2JqZWN0cyhBY3RpdmVET01PYmplY3Q6OkphdmFTY3JpcHREZWJ1
Z2dlclBhdXNlZCk7CisgICAgICAgIGRvY3VtZW50LnN1c3BlbmRTY3JpcHRlZEFuaW1hdGlvbkNv
bnRyb2xsZXJDYWxsYmFja3MoKTsKKyAgICAgICAgZG9jdW1lbnQuc3VzcGVuZEFjdGl2ZURPTU9i
amVjdHMoQWN0aXZlRE9NT2JqZWN0OjpKYXZhU2NyaXB0RGVidWdnZXJQYXVzZWQpOwogICAgIH0g
ZWxzZSB7Ci0gICAgICAgIGRvY3VtZW50LT5yZXN1bWVBY3RpdmVET01PYmplY3RzKEFjdGl2ZURP
TU9iamVjdDo6SmF2YVNjcmlwdERlYnVnZ2VyUGF1c2VkKTsKLSAgICAgICAgZG9jdW1lbnQtPnJl
c3VtZVNjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlckNhbGxiYWNrcygpOworICAgICAgICBkb2N1
bWVudC5yZXN1bWVBY3RpdmVET01PYmplY3RzKEFjdGl2ZURPTU9iamVjdDo6SmF2YVNjcmlwdERl
YnVnZ2VyUGF1c2VkKTsKKyAgICAgICAgZG9jdW1lbnQucmVzdW1lU2NyaXB0ZWRBbmltYXRpb25D
b250cm9sbGVyQ2FsbGJhY2tzKCk7CiAgICAgfQogCiAgICAgc2V0SmF2YVNjcmlwdFBhdXNlZChm
cmFtZS0+dmlldygpLCBwYXVzZWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0RvY3VtZW50TG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudExvYWRl
ci5jcHAKaW5kZXggOWUwMGU4MS4uZjFhMGE2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL0RvY3VtZW50TG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9j
dW1lbnRMb2FkZXIuY3BwCkBAIC0xODIsNyArMTgyLDcgQEAgUGFzc1JlZlB0cjxSZXNvdXJjZUJ1
ZmZlcj4gRG9jdW1lbnRMb2FkZXI6Om1haW5SZXNvdXJjZURhdGEoKSBjb25zdAogRG9jdW1lbnQq
IERvY3VtZW50TG9hZGVyOjpkb2N1bWVudCgpIGNvbnN0CiB7CiAgICAgaWYgKG1fZnJhbWUgJiYg
bV9mcmFtZS0+bG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKSA9PSB0aGlzKQotICAgICAgICByZXR1
cm4gbV9mcmFtZS0+ZG9jdW1lbnQoKTsKKyAgICAgICAgcmV0dXJuICZtX2ZyYW1lLT5kb2N1bWVu
dCgpOwogICAgIHJldHVybiAwOwogfQogCkBAIC0yOTAsOSArMjkwLDkgQEAgdm9pZCBEb2N1bWVu
dExvYWRlcjo6c3RvcExvYWRpbmcoKQogICAgIGlmIChtX2NvbW1pdHRlZCkgewogICAgICAgICAv
LyBBdHRlbXB0IHRvIHN0b3AgdGhlIGZyYW1lIGlmIHRoZSBkb2N1bWVudCBsb2FkZXIgaXMgbG9h
ZGluZywgb3IgaWYgaXQgaXMgZG9uZSBsb2FkaW5nIGJ1dAogICAgICAgICAvLyBzdGlsbCAgcGFy
c2luZy4gRmFpbHVyZSB0byBkbyBzbyBjYW4gY2F1c2UgYSB3b3JsZCBsZWFrLgotICAgICAgICBE
b2N1bWVudCogZG9jID0gbV9mcmFtZS0+ZG9jdW1lbnQoKTsKKyAgICAgICAgRG9jdW1lbnQmIGRv
YyA9IG1fZnJhbWUtPmRvY3VtZW50KCk7CiAgICAgICAgIAotICAgICAgICBpZiAobG9hZGluZyB8
fCBkb2MtPnBhcnNpbmcoKSkKKyAgICAgICAgaWYgKGxvYWRpbmcgfHwgZG9jLnBhcnNpbmcoKSkK
ICAgICAgICAgICAgIG1fZnJhbWUtPmxvYWRlcigpLnN0b3BMb2FkaW5nKFVubG9hZEV2ZW50UG9s
aWN5Tm9uZSk7CiAgICAgfQogCkBAIC00NDcsNyArNDQ3LDcgQEAgdm9pZCBEb2N1bWVudExvYWRl
cjo6ZmluaXNoZWRMb2FkaW5nKGRvdWJsZSBmaW5pc2hUaW1lKQogICAgIC8vIElmIHRoZSBkb2N1
bWVudCBzcGVjaWZpZWQgYW4gYXBwbGljYXRpb24gY2FjaGUgbWFuaWZlc3QsIGl0IHZpb2xhdGVz
IHRoZSBhdXRob3IncyBpbnRlbnQgaWYgd2Ugc3RvcmUgaXQgaW4gdGhlIG1lbW9yeSBjYWNoZQog
ICAgIC8vIGFuZCBkZW55IHRoZSBhcHBjYWNoZSB0aGUgY2hhbmNlIHRvIGludGVyY2VwdCBpdCBp
biB0aGUgZnV0dXJlLCBzbyByZW1vdmUgZnJvbSB0aGUgbWVtb3J5IGNhY2hlLgogICAgIGlmICht
X2ZyYW1lKSB7Ci0gICAgICAgIGlmIChtX21haW5SZXNvdXJjZSAmJiBtX2ZyYW1lLT5kb2N1bWVu
dCgpLT5oYXNNYW5pZmVzdCgpKQorICAgICAgICBpZiAobV9tYWluUmVzb3VyY2UgJiYgbV9mcmFt
ZS0+ZG9jdW1lbnQoKS5oYXNNYW5pZmVzdCgpKQogICAgICAgICAgICAgbWVtb3J5Q2FjaGUoKS0+
cmVtb3ZlKG1fbWFpblJlc291cmNlLmdldCgpKTsKICAgICB9CiAgICAgbV9hcHBsaWNhdGlvbkNh
Y2hlSG9zdC0+ZmluaXNoZWRMb2FkaW5nTWFpblJlc291cmNlKCk7CkBAIC01MzksNyArNTM5LDcg
QEAgdm9pZCBEb2N1bWVudExvYWRlcjo6d2lsbFNlbmRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYg
bmV3UmVxdWVzdCwgY29uc3QgUmVzb3VyY2UKIAogICAgIEZyYW1lJiB0b3BGcmFtZSA9IG1fZnJh
bWUtPnRyZWUoKS50b3AoKTsKICAgICBpZiAoJnRvcEZyYW1lICE9IG1fZnJhbWUpIHsKLSAgICAg
ICAgaWYgKCFmcmFtZUxvYWRlcigpLT5taXhlZENvbnRlbnRDaGVja2VyKCkuY2FuRGlzcGxheUlu
c2VjdXJlQ29udGVudCh0b3BGcmFtZS5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpLCBuZXdS
ZXF1ZXN0LnVybCgpKSkgeworICAgICAgICBpZiAoIWZyYW1lTG9hZGVyKCktPm1peGVkQ29udGVu
dENoZWNrZXIoKS5jYW5EaXNwbGF5SW5zZWN1cmVDb250ZW50KHRvcEZyYW1lLmRvY3VtZW50KCku
c2VjdXJpdHlPcmlnaW4oKSwgbmV3UmVxdWVzdC51cmwoKSkpIHsKICAgICAgICAgICAgIGNhbmNl
bE1haW5SZXNvdXJjZUxvYWQoZnJhbWVMb2FkZXIoKS0+Y2FuY2VsbGVkRXJyb3IobmV3UmVxdWVz
dCkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CkBAIC02MTUsOCArNjE1LDggQEAg
dm9pZCBEb2N1bWVudExvYWRlcjo6cmVzcG9uc2VSZWNlaXZlZChDYWNoZWRSZXNvdXJjZSogcmVz
b3VyY2UsIGNvbnN0IFJlc291cmNlUmUKICAgICAgICAgaWYgKGZyYW1lTG9hZGVyKCktPnNob3Vs
ZEludGVycnVwdExvYWRGb3JYRnJhbWVPcHRpb25zKGNvbnRlbnQsIHJlc3BvbnNlLnVybCgpLCBp
ZGVudGlmaWVyKSkgewogICAgICAgICAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpjb250
aW51ZUFmdGVyWEZyYW1lT3B0aW9uc0RlbmllZChtX2ZyYW1lLCB0aGlzLCBpZGVudGlmaWVyLCBy
ZXNwb25zZSk7CiAgICAgICAgICAgICBTdHJpbmcgbWVzc2FnZSA9ICJSZWZ1c2VkIHRvIGRpc3Bs
YXkgJyIgKyByZXNwb25zZS51cmwoKS5zdHJpbmdDZW50ZXJFbGxpcHNpemVkVG9MZW5ndGgoKSAr
ICInIGluIGEgZnJhbWUgYmVjYXVzZSBpdCBzZXQgJ1gtRnJhbWUtT3B0aW9ucycgdG8gJyIgKyBj
b250ZW50ICsgIicuIjsKLSAgICAgICAgICAgIGZyYW1lKCktPmRvY3VtZW50KCktPmFkZENvbnNv
bGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OlNlY3VyaXR5LCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBt
ZXNzYWdlLCBpZGVudGlmaWVyKTsKLSAgICAgICAgICAgIGZyYW1lKCktPmRvY3VtZW50KCktPmVu
Zm9yY2VTYW5kYm94RmxhZ3MoU2FuZGJveE9yaWdpbik7CisgICAgICAgICAgICBmcmFtZSgpLT5k
b2N1bWVudCgpLmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OlNlY3VyaXR5LCBNZXNz
YWdlTGV2ZWw6OkVycm9yLCBtZXNzYWdlLCBpZGVudGlmaWVyKTsKKyAgICAgICAgICAgIGZyYW1l
KCktPmRvY3VtZW50KCkuZW5mb3JjZVNhbmRib3hGbGFncyhTYW5kYm94T3JpZ2luKTsKICAgICAg
ICAgICAgIGlmIChIVE1MRnJhbWVPd25lckVsZW1lbnQqIG93bmVyRWxlbWVudCA9IGZyYW1lKCkt
Pm93bmVyRWxlbWVudCgpKQogICAgICAgICAgICAgICAgIG93bmVyRWxlbWVudC0+ZGlzcGF0Y2hF
dmVudChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5sb2FkRXZlbnQsIGZhbHNlLCBmYWxzZSkp
OwogCkBAIC03OTYsNyArNzk2LDcgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6Y29tbWl0RGF0YShj
b25zdCBjaGFyKiBieXRlcywgc2l6ZV90IGxlbmd0aCkKICAgICAgICAgICAgIC8vIGxvYWQgbG9j
YWwgcmVzb3VyY2VzLiBTZWUgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTE2NzU2CiAgICAgICAgICAgICAvLyBhbmQgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19i
dWcuY2dpP2lkPTE5NzYwIGZvciBmdXJ0aGVyCiAgICAgICAgICAgICAvLyBkaXNjdXNzaW9uLgot
ICAgICAgICAgICAgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKS0+Z3JhbnRM
b2FkTG9jYWxSZXNvdXJjZXMoKTsKKyAgICAgICAgICAgIG1fZnJhbWUtPmRvY3VtZW50KCkuc2Vj
dXJpdHlPcmlnaW4oKS0+Z3JhbnRMb2FkTG9jYWxSZXNvdXJjZXMoKTsKICAgICAgICAgfQogCiAg
ICAgICAgIGlmIChmcmFtZUxvYWRlcigpLT5zdGF0ZU1hY2hpbmUoKS5jcmVhdGluZ0luaXRpYWxF
bXB0eURvY3VtZW50KCkpCkBAIC04MDYsNyArODA2LDcgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6
Y29tbWl0RGF0YShjb25zdCBjaGFyKiBieXRlcywgc2l6ZV90IGxlbmd0aCkKICAgICAgICAgLy8g
VGhlIG9yaWdpbiBpcyB0aGUgTUhUTUwgZmlsZSwgd2UgbmVlZCB0byBzZXQgdGhlIGJhc2UgVVJM
IHRvIHRoZSBkb2N1bWVudCBlbmNvZGVkIGluIHRoZSBNSFRNTCBzbwogICAgICAgICAvLyByZWxh
dGl2ZSBVUkxzIGFyZSByZXNvbHZlZCBwcm9wZXJseS4KICAgICAgICAgaWYgKG1fYXJjaGl2ZSAm
JiBtX2FyY2hpdmUtPnR5cGUoKSA9PSBBcmNoaXZlOjpNSFRNTCkKLSAgICAgICAgICAgIG1fZnJh
bWUtPmRvY3VtZW50KCktPnNldEJhc2VVUkxPdmVycmlkZShtX2FyY2hpdmUtPm1haW5SZXNvdXJj
ZSgpLT51cmwoKSk7CisgICAgICAgICAgICBtX2ZyYW1lLT5kb2N1bWVudCgpLnNldEJhc2VVUkxP
dmVycmlkZShtX2FyY2hpdmUtPm1haW5SZXNvdXJjZSgpLT51cmwoKSk7CiAjZW5kaWYKIAogICAg
ICAgICAvLyBDYWxsIHJlY2VpdmVkRmlyc3REYXRhKCkgZXhhY3RseSBvbmNlIHBlciBsb2FkLiBX
ZSBzaG91bGQgb25seSByZWFjaCB0aGlzIHBvaW50IG11bHRpcGxlIHRpbWVzCkBAIC04MzgsNyAr
ODM4LDcgQEAgdm9pZCBEb2N1bWVudExvYWRlcjo6Y29tbWl0RGF0YShjb25zdCBjaGFyKiBieXRl
cywgc2l6ZV90IGxlbmd0aCkKIAogICAgICAgICBtX3dyaXRlci5zZXRFbmNvZGluZyhlbmNvZGlu
ZywgdXNlckNob3Nlbik7CiAgICAgfQotICAgIEFTU0VSVChtX2ZyYW1lLT5kb2N1bWVudCgpLT5w
YXJzaW5nKCkpOworICAgIEFTU0VSVChtX2ZyYW1lLT5kb2N1bWVudCgpLnBhcnNpbmcoKSk7CiAg
ICAgbV93cml0ZXIuYWRkRGF0YShieXRlcywgbGVuZ3RoKTsKIH0KIApAQCAtOTE0LDcgKzkxNCw3
IEBAIHZvaWQgRG9jdW1lbnRMb2FkZXI6OmNoZWNrTG9hZENvbXBsZXRlKCkKICAgICAgICAgcmV0
dXJuOwogCiAgICAgQVNTRVJUKHRoaXMgPT0gZnJhbWVMb2FkZXIoKS0+YWN0aXZlRG9jdW1lbnRM
b2FkZXIoKSk7Ci0gICAgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+ZG9tV2luZG93KCktPmZpbmlzaGVk
TG9hZGluZygpOworICAgIG1fZnJhbWUtPmRvY3VtZW50KCkuZG9tV2luZG93KCktPmZpbmlzaGVk
TG9hZGluZygpOwogfQogCiB2b2lkIERvY3VtZW50TG9hZGVyOjpzZXRGcmFtZShGcmFtZSogZnJh
bWUpCkBAIC05NzAsMTQgKzk3MCwxNCBAQCBib29sIERvY3VtZW50TG9hZGVyOjppc0xvYWRpbmdJ
bkFQSVNlbnNlKCkgY29uc3QKICAgICAgICAgaWYgKG1fZnJhbWUtPnNldHRpbmdzKCkubmVlZHNJ
c0xvYWRpbmdJbkFQSVNlbnNlUXVpcmsoKSAmJiAhbV9zdWJyZXNvdXJjZUxvYWRlcnMuaXNFbXB0
eSgpKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgCi0gICAgICAgIERvY3VtZW50KiBk
b2MgPSBtX2ZyYW1lLT5kb2N1bWVudCgpOwotICAgICAgICBpZiAoKGlzTG9hZGluZ01haW5SZXNv
dXJjZSgpIHx8ICFtX2ZyYW1lLT5kb2N1bWVudCgpLT5sb2FkRXZlbnRGaW5pc2hlZCgpKSAmJiBp
c0xvYWRpbmcoKSkKKyAgICAgICAgRG9jdW1lbnQmIGRvYyA9IG1fZnJhbWUtPmRvY3VtZW50KCk7
CisgICAgICAgIGlmICgoaXNMb2FkaW5nTWFpblJlc291cmNlKCkgfHwgIW1fZnJhbWUtPmRvY3Vt
ZW50KCkubG9hZEV2ZW50RmluaXNoZWQoKSkgJiYgaXNMb2FkaW5nKCkpCiAgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKICAgICAgICAgaWYgKG1fY2FjaGVkUmVzb3VyY2VMb2FkZXItPnJlcXVlc3RD
b3VudCgpKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIGlmIChkb2MtPnByb2Nl
c3NpbmdMb2FkRXZlbnQoKSkKKyAgICAgICAgaWYgKGRvYy5wcm9jZXNzaW5nTG9hZEV2ZW50KCkp
CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgICAgaWYgKGRvYy0+aGFzQWN0aXZlUGFy
c2VyKCkpCisgICAgICAgIGlmIChkb2MuaGFzQWN0aXZlUGFyc2VyKCkpCiAgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKICAgICB9CiAgICAgcmV0dXJuIGZyYW1lTG9hZGVyKCktPnN1YmZyYW1lSXNM
b2FkaW5nKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1lbnRXcml0
ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0RvY3VtZW50V3JpdGVyLmNwcAppbmRleCBm
YWY3OWFmLi5jNDhmMDM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRG9jdW1l
bnRXcml0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Eb2N1bWVudFdyaXRlci5j
cHAKQEAgLTU1LDcgKzU1LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBzdGF0aWMgaW5saW5l
IGJvb2wgY2FuUmVmZXJUb1BhcmVudEZyYW1lRW5jb2RpbmcoY29uc3QgRnJhbWUqIGZyYW1lLCBj
b25zdCBGcmFtZSogcGFyZW50RnJhbWUpIAogewotICAgIHJldHVybiBwYXJlbnRGcmFtZSAmJiBw
YXJlbnRGcmFtZS0+ZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKS0+Y2FuQWNjZXNzKGZyYW1l
LT5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpKTsKKyAgICByZXR1cm4gcGFyZW50RnJhbWUg
JiYgcGFyZW50RnJhbWUtPmRvY3VtZW50KCkuc2VjdXJpdHlPcmlnaW4oKS0+Y2FuQWNjZXNzKGZy
YW1lLT5kb2N1bWVudCgpLnNlY3VyaXR5T3JpZ2luKCkpOwogfQogICAgIAogRG9jdW1lbnRXcml0
ZXI6OkRvY3VtZW50V3JpdGVyKEZyYW1lKiBmcmFtZSkKQEAgLTcyLDE3ICs3MiwxNyBAQCBEb2N1
bWVudFdyaXRlcjo6RG9jdW1lbnRXcml0ZXIoRnJhbWUqIGZyYW1lKQogdm9pZCBEb2N1bWVudFdy
aXRlcjo6cmVwbGFjZURvY3VtZW50KGNvbnN0IFN0cmluZyYgc291cmNlLCBEb2N1bWVudCogb3du
ZXJEb2N1bWVudCkKIHsKICAgICBtX2ZyYW1lLT5sb2FkZXIoKS5zdG9wQWxsTG9hZGVycygpOwot
ICAgIGJlZ2luKG1fZnJhbWUtPmRvY3VtZW50KCktPnVybCgpLCB0cnVlLCBvd25lckRvY3VtZW50
KTsKKyAgICBiZWdpbihtX2ZyYW1lLT5kb2N1bWVudCgpLnVybCgpLCB0cnVlLCBvd25lckRvY3Vt
ZW50KTsKIAogICAgIGlmICghc291cmNlLmlzTnVsbCgpKSB7CiAgICAgICAgIGlmICghbV9oYXNS
ZWNlaXZlZFNvbWVEYXRhKSB7CiAgICAgICAgICAgICBtX2hhc1JlY2VpdmVkU29tZURhdGEgPSB0
cnVlOwotICAgICAgICAgICAgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+c2V0Q29tcGF0aWJpbGl0eU1v
ZGUoRG9jdW1lbnQ6Ok5vUXVpcmtzTW9kZSk7CisgICAgICAgICAgICBtX2ZyYW1lLT5kb2N1bWVu
dCgpLnNldENvbXBhdGliaWxpdHlNb2RlKERvY3VtZW50OjpOb1F1aXJrc01vZGUpOwogICAgICAg
ICB9CiAKICAgICAgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIGNhbGwgRG9jdW1lbnRQYXJzZXI6
OmFwcGVuZEJ5dGVzIGluc3RlYWQgb2YgYXBwZW5kCiAgICAgICAgIC8vIHRvIHN1cHBvcnQgUmF3
RGF0YURvY3VtZW50UGFyc2Vycy4KLSAgICAgICAgaWYgKERvY3VtZW50UGFyc2VyKiBwYXJzZXIg
PSBtX2ZyYW1lLT5kb2N1bWVudCgpLT5wYXJzZXIoKSkKKyAgICAgICAgaWYgKERvY3VtZW50UGFy
c2VyKiBwYXJzZXIgPSBtX2ZyYW1lLT5kb2N1bWVudCgpLnBhcnNlcigpKQogICAgICAgICAgICAg
cGFyc2VyLT5hcHBlbmQoc291cmNlLmltcGwoKSk7CiAgICAgfQogCkBAIC0xMzMsOSArMTMzLDkg
QEAgdm9pZCBEb2N1bWVudFdyaXRlcjo6YmVnaW4oY29uc3QgVVJMJiB1cmxSZWZlcmVuY2UsIGJv
b2wgZGlzcGF0Y2gsIERvY3VtZW50KiBvd24KIAogICAgIC8vIEZJWE1FOiBEbyB3ZSBuZWVkIHRv
IGNvbnN1bHQgdGhlIGNvbnRlbnQgc2VjdXJpdHkgcG9saWN5IGhlcmUgYWJvdXQgYmxvY2tlZCBw
bHVnLWlucz8KIAotICAgIGJvb2wgc2hvdWxkUmV1c2VEZWZhdWx0VmlldyA9IG1fZnJhbWUtPmxv
YWRlcigpLnN0YXRlTWFjaGluZSgpLmlzRGlzcGxheWluZ0luaXRpYWxFbXB0eURvY3VtZW50KCkg
JiYgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+aXNTZWN1cmVUcmFuc2l0aW9uVG8odXJsKTsKKyAgICBi
b29sIHNob3VsZFJldXNlRGVmYXVsdFZpZXcgPSBtX2ZyYW1lLT5sb2FkZXIoKS5zdGF0ZU1hY2hp
bmUoKS5pc0Rpc3BsYXlpbmdJbml0aWFsRW1wdHlEb2N1bWVudCgpICYmIG1fZnJhbWUtPmRvY3Vt
ZW50KCkuaXNTZWN1cmVUcmFuc2l0aW9uVG8odXJsKTsKICAgICBpZiAoc2hvdWxkUmV1c2VEZWZh
dWx0VmlldykKLSAgICAgICAgZG9jdW1lbnQtPnRha2VET01XaW5kb3dGcm9tKG1fZnJhbWUtPmRv
Y3VtZW50KCkpOworICAgICAgICBkb2N1bWVudC0+dGFrZURPTVdpbmRvd0Zyb20oJm1fZnJhbWUt
PmRvY3VtZW50KCkpOwogICAgIGVsc2UKICAgICAgICAgZG9jdW1lbnQtPmNyZWF0ZURPTVdpbmRv
dygpOwogCkBAIC0xODcsMTUgKzE4NywxNSBAQCBUZXh0UmVzb3VyY2VEZWNvZGVyKiBEb2N1bWVu
dFdyaXRlcjo6Y3JlYXRlRGVjb2RlcklmTmVlZGVkKCkKICAgICAgICAgLy8gRklYTUU6IFRoaXMg
bWlnaHQgYmUgdG9vIGNhdXRpb3VzIGZvciBub24tN2JpdC1lbmNvZGluZ3MgYW5kCiAgICAgICAg
IC8vIHdlIG1heSBjb25zaWRlciByZWxheGluZyB0aGlzIGxhdGVyIGFmdGVyIHRlc3RpbmcuCiAg
ICAgICAgIGlmIChjYW5SZWZlclRvUGFyZW50RnJhbWVFbmNvZGluZyhtX2ZyYW1lLCBwYXJlbnRG
cmFtZSkpCi0gICAgICAgICAgICBtX2RlY29kZXItPnNldEhpbnRFbmNvZGluZyhwYXJlbnRGcmFt
ZS0+ZG9jdW1lbnQoKS0+ZGVjb2RlcigpKTsKKyAgICAgICAgICAgIG1fZGVjb2Rlci0+c2V0SGlu
dEVuY29kaW5nKHBhcmVudEZyYW1lLT5kb2N1bWVudCgpLmRlY29kZXIoKSk7CiAgICAgICAgIGlm
IChtX2VuY29kaW5nLmlzRW1wdHkoKSkgewogICAgICAgICAgICAgaWYgKGNhblJlZmVyVG9QYXJl
bnRGcmFtZUVuY29kaW5nKG1fZnJhbWUsIHBhcmVudEZyYW1lKSkKLSAgICAgICAgICAgICAgICBt
X2RlY29kZXItPnNldEVuY29kaW5nKHBhcmVudEZyYW1lLT5kb2N1bWVudCgpLT5pbnB1dEVuY29k
aW5nKCksIFRleHRSZXNvdXJjZURlY29kZXI6OkVuY29kaW5nRnJvbVBhcmVudEZyYW1lKTsKKyAg
ICAgICAgICAgICAgICBtX2RlY29kZXItPnNldEVuY29kaW5nKHBhcmVudEZyYW1lLT5kb2N1bWVu
dCgpLmlucHV0RW5jb2RpbmcoKSwgVGV4dFJlc291cmNlRGVjb2Rlcjo6RW5jb2RpbmdGcm9tUGFy
ZW50RnJhbWUpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgbV9kZWNvZGVyLT5zZXRF
bmNvZGluZyhtX2VuY29kaW5nLAogICAgICAgICAgICAgICAgIG1fZW5jb2RpbmdXYXNDaG9zZW5C
eVVzZXIgPyBUZXh0UmVzb3VyY2VEZWNvZGVyOjpVc2VyQ2hvc2VuRW5jb2RpbmcgOiBUZXh0UmVz
b3VyY2VEZWNvZGVyOjpFbmNvZGluZ0Zyb21IVFRQSGVhZGVyKTsKICAgICAgICAgfQotICAgICAg
ICBtX2ZyYW1lLT5kb2N1bWVudCgpLT5zZXREZWNvZGVyKG1fZGVjb2Rlci5nZXQoKSk7CisgICAg
ICAgIG1fZnJhbWUtPmRvY3VtZW50KCkuc2V0RGVjb2RlcihtX2RlY29kZXIuZ2V0KCkpOwogICAg
IH0KICAgICByZXR1cm4gbV9kZWNvZGVyLmdldCgpOwogfQpAQCAtMjA3LDggKzIwNyw4IEBAIHZv
aWQgRG9jdW1lbnRXcml0ZXI6OnJlcG9ydERhdGFSZWNlaXZlZCgpCiAgICAgICAgIHJldHVybjsK
ICAgICBtX2hhc1JlY2VpdmVkU29tZURhdGEgPSB0cnVlOwogICAgIGlmIChtX2RlY29kZXItPmVu
Y29kaW5nKCkudXNlc1Zpc3VhbE9yZGVyaW5nKCkpCi0gICAgICAgIG1fZnJhbWUtPmRvY3VtZW50
KCktPnNldFZpc3VhbGx5T3JkZXJlZCgpOwotICAgIG1fZnJhbWUtPmRvY3VtZW50KCktPnJlY2Fs
Y1N0eWxlKFN0eWxlOjpGb3JjZSk7CisgICAgICAgIG1fZnJhbWUtPmRvY3VtZW50KCkuc2V0Vmlz
dWFsbHlPcmRlcmVkKCk7CisgICAgbV9mcmFtZS0+ZG9jdW1lbnQoKS5yZWNhbGNTdHlsZShTdHls
ZTo6Rm9yY2UpOwogfQogCiB2b2lkIERvY3VtZW50V3JpdGVyOjphZGREYXRhKGNvbnN0IGNoYXIq
IGJ5dGVzLCBzaXplX3QgbGVuZ3RoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L0ZyYW1lTG9hZFJlcXVlc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTG9hZFJl
cXVlc3QuY3BwCmluZGV4IDY3MzljZmYuLjZiM2JlMTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9GcmFtZUxvYWRSZXF1ZXN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvRnJhbWVMb2FkUmVxdWVzdC5jcHAKQEAgLTM3LDcgKzM3LDcgQEAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogRnJhbWVMb2FkUmVxdWVzdDo6RnJhbWVMb2FkUmVxdWVzdChGcmFtZSogZnJhbWUs
IGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVzb3VyY2VSZXF1ZXN0LCBjb25zdCBTdWJzdGl0dXRl
RGF0YSYgc3Vic3RpdHV0ZURhdGEpCi0gICAgOiBtX3JlcXVlc3RlcihmcmFtZS0+ZG9jdW1lbnQo
KS0+c2VjdXJpdHlPcmlnaW4oKSkKKyAgICA6IG1fcmVxdWVzdGVyKGZyYW1lLT5kb2N1bWVudCgp
LnNlY3VyaXR5T3JpZ2luKCkpCiAgICAgLCBtX3Jlc291cmNlUmVxdWVzdChyZXNvdXJjZVJlcXVl
c3QpCiAgICAgLCBtX3Nob3VsZENoZWNrTmV3V2luZG93UG9saWN5KGZhbHNlKQogICAgICwgbV9z
dWJzdGl0dXRlRGF0YShzdWJzdGl0dXRlRGF0YSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9GcmFtZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJhbWVMb2Fk
ZXIuY3BwCmluZGV4IDRmOWVjNmYuLjgzODZlYWI0OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL0ZyYW1lTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvRnJh
bWVMb2FkZXIuY3BwCkBAIC0xNzUsNyArMTc1LDggQEAgYm9vbCBpc0JhY2tGb3J3YXJkTG9hZFR5
cGUoRnJhbWVMb2FkVHlwZSB0eXBlKQogLy8KIHN0YXRpYyBib29sIGlzRG9jdW1lbnRTYW5kYm94
ZWQoRnJhbWUqIGZyYW1lLCBTYW5kYm94RmxhZ3MgbWFzaykKIHsKLSAgICByZXR1cm4gZnJhbWUt
PmRvY3VtZW50KCkgJiYgZnJhbWUtPmRvY3VtZW50KCktPmlzU2FuZGJveGVkKG1hc2spOworICAg
IEFTU0VSVChmcmFtZS0+ZG9jdW1lbnQoKSk7CisgICAgcmV0dXJuIGZyYW1lLT5kb2N1bWVudCgp
LmlzU2FuZGJveGVkKG1hc2spOwogfQogCiBjbGFzcyBGcmFtZUxvYWRlcjo6RnJhbWVQcm9ncmVz
c1RyYWNrZXIgewpAQCAtMjY3LDcgKzI2OCw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmluaXQoKQog
ICAgIHNldFBvbGljeURvY3VtZW50TG9hZGVyKG1fY2xpZW50LmNyZWF0ZURvY3VtZW50TG9hZGVy
KFJlc291cmNlUmVxdWVzdChVUkwoUGFyc2VkVVJMU3RyaW5nLCBlbXB0eVN0cmluZygpKSksIFN1
YnN0aXR1dGVEYXRhKCkpLmdldCgpKTsKICAgICBzZXRQcm92aXNpb25hbERvY3VtZW50TG9hZGVy
KG1fcG9saWN5RG9jdW1lbnRMb2FkZXIuZ2V0KCkpOwogICAgIG1fcHJvdmlzaW9uYWxEb2N1bWVu
dExvYWRlci0+c3RhcnRMb2FkaW5nTWFpblJlc291cmNlKCk7Ci0gICAgbV9mcmFtZS5kb2N1bWVu
dCgpLT5jYW5jZWxQYXJzaW5nKCk7CisgICAgbV9mcmFtZS5kb2N1bWVudCgpLmNhbmNlbFBhcnNp
bmcoKTsKICAgICBtX3N0YXRlTWFjaGluZS5hZHZhbmNlVG8oRnJhbWVMb2FkZXJTdGF0ZU1hY2hp
bmU6OkRpc3BsYXlpbmdJbml0aWFsRW1wdHlEb2N1bWVudCk7CiAKICAgICBtX25ldHdvcmtpbmdD
b250ZXh0ID0gbV9jbGllbnQuY3JlYXRlTmV0d29ya2luZ0NvbnRleHQoKTsKQEAgLTMyNSw3ICsz
MjYsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpjaGFuZ2VMb2NhdGlvbihTZWN1cml0eU9yaWdpbiog
c2VjdXJpdHlPcmlnaW4sIGNvbnN0IFVSTCYgdXJsLAogCiB2b2lkIEZyYW1lTG9hZGVyOjp1cmxT
ZWxlY3RlZChjb25zdCBVUkwmIHVybCwgY29uc3QgU3RyaW5nJiBwYXNzZWRUYXJnZXQsIFBhc3NS
ZWZQdHI8RXZlbnQ+IHRyaWdnZXJpbmdFdmVudCwgTG9ja0hpc3RvcnkgbG9ja0hpc3RvcnksIExv
Y2tCYWNrRm9yd2FyZExpc3QgbG9ja0JhY2tGb3J3YXJkTGlzdCwgU2hvdWxkU2VuZFJlZmVycmVy
IHNob3VsZFNlbmRSZWZlcnJlcikKIHsKLSAgICB1cmxTZWxlY3RlZChGcmFtZUxvYWRSZXF1ZXN0
KG1fZnJhbWUuZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKSwgUmVzb3VyY2VSZXF1ZXN0KHVy
bCksIHBhc3NlZFRhcmdldCksCisgICAgdXJsU2VsZWN0ZWQoRnJhbWVMb2FkUmVxdWVzdChtX2Zy
YW1lLmRvY3VtZW50KCkuc2VjdXJpdHlPcmlnaW4oKSwgUmVzb3VyY2VSZXF1ZXN0KHVybCksIHBh
c3NlZFRhcmdldCksCiAgICAgICAgIHRyaWdnZXJpbmdFdmVudCwgbG9ja0hpc3RvcnksIGxvY2tC
YWNrRm9yd2FyZExpc3QsIHNob3VsZFNlbmRSZWZlcnJlciwgRG9Ob3RSZXBsYWNlRG9jdW1lbnRJ
ZkphdmFTY3JpcHRVUkwpOwogfQogCkBAIC0zNDIsNyArMzQzLDcgQEAgdm9pZCBGcmFtZUxvYWRl
cjo6dXJsU2VsZWN0ZWQoY29uc3QgRnJhbWVMb2FkUmVxdWVzdCYgcGFzc2VkUmVxdWVzdCwgUGFz
c1JlZlB0cjwKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKGZyYW1lUmVxdWVzdC5mcmFtZU5h
bWUoKS5pc0VtcHR5KCkpCi0gICAgICAgIGZyYW1lUmVxdWVzdC5zZXRGcmFtZU5hbWUobV9mcmFt
ZS5kb2N1bWVudCgpLT5iYXNlVGFyZ2V0KCkpOworICAgICAgICBmcmFtZVJlcXVlc3Quc2V0RnJh
bWVOYW1lKG1fZnJhbWUuZG9jdW1lbnQoKS5iYXNlVGFyZ2V0KCkpOwogCiAgICAgaWYgKHNob3Vs
ZFNlbmRSZWZlcnJlciA9PSBOZXZlclNlbmRSZWZlcnJlcikKICAgICAgICAgbV9zdXBwcmVzc09w
ZW5lckluTmV3RnJhbWUgPSB0cnVlOwpAQCAtMzcwLDEyICszNzEsMTIgQEAgdm9pZCBGcmFtZUxv
YWRlcjo6c3VibWl0Rm9ybShQYXNzUmVmUHRyPEZvcm1TdWJtaXNzaW9uPiBzdWJtaXNzaW9uKQog
CiAgICAgaWYgKGlzRG9jdW1lbnRTYW5kYm94ZWQoJm1fZnJhbWUsIFNhbmRib3hGb3JtcykpIHsK
ICAgICAgICAgLy8gRklYTUU6IFRoaXMgbWVzc2FnZSBzaG91bGQgYmUgbW92ZWQgb2ZmIHRoZSBj
b25zb2xlIG9uY2UgYSBzb2x1dGlvbiB0byBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTAzMjc0IGV4aXN0cy4KLSAgICAgICAgbV9mcmFtZS5kb2N1bWVudCgpLT5hZGRD
b25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpTZWN1cml0eSwgTWVzc2FnZUxldmVsOjpFcnJv
ciwgIkJsb2NrZWQgZm9ybSBzdWJtaXNzaW9uIHRvICciICsgc3VibWlzc2lvbi0+YWN0aW9uKCku
c3RyaW5nQ2VudGVyRWxsaXBzaXplZFRvTGVuZ3RoKCkgKyAiJyBiZWNhdXNlIHRoZSBmb3JtJ3Mg
ZnJhbWUgaXMgc2FuZGJveGVkIGFuZCB0aGUgJ2FsbG93LWZvcm1zJyBwZXJtaXNzaW9uIGlzIG5v
dCBzZXQuIik7CisgICAgICAgIG1fZnJhbWUuZG9jdW1lbnQoKS5hZGRDb25zb2xlTWVzc2FnZShN
ZXNzYWdlU291cmNlOjpTZWN1cml0eSwgTWVzc2FnZUxldmVsOjpFcnJvciwgIkJsb2NrZWQgZm9y
bSBzdWJtaXNzaW9uIHRvICciICsgc3VibWlzc2lvbi0+YWN0aW9uKCkuc3RyaW5nQ2VudGVyRWxs
aXBzaXplZFRvTGVuZ3RoKCkgKyAiJyBiZWNhdXNlIHRoZSBmb3JtJ3MgZnJhbWUgaXMgc2FuZGJv
eGVkIGFuZCB0aGUgJ2FsbG93LWZvcm1zJyBwZXJtaXNzaW9uIGlzIG5vdCBzZXQuIik7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKICAgICBpZiAocHJvdG9jb2xJc0phdmFTY3JpcHQoc3VibWlz
c2lvbi0+YWN0aW9uKCkpKSB7Ci0gICAgICAgIGlmICghbV9mcmFtZS5kb2N1bWVudCgpLT5jb250
ZW50U2VjdXJpdHlQb2xpY3koKS0+YWxsb3dGb3JtQWN0aW9uKFVSTChzdWJtaXNzaW9uLT5hY3Rp
b24oKSkpKQorICAgICAgICBpZiAoIW1fZnJhbWUuZG9jdW1lbnQoKS5jb250ZW50U2VjdXJpdHlQ
b2xpY3koKS0+YWxsb3dGb3JtQWN0aW9uKFVSTChzdWJtaXNzaW9uLT5hY3Rpb24oKSkpKQogICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICBtX2lzRXhlY3V0aW5nSmF2YVNjcmlwdEZvcm1BY3Rp
b24gPSB0cnVlOwogICAgICAgICBSZWY8RnJhbWU+IHByb3RlY3QobV9mcmFtZSk7CkBAIC00MjAs
NyArNDIxLDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6c3VibWl0Rm9ybShQYXNzUmVmUHRyPEZvcm1T
dWJtaXNzaW9uPiBzdWJtaXNzaW9uKQogICAgICAgICBtX3N1Ym1pdHRlZEZvcm1VUkwgPSBzdWJt
aXNzaW9uLT5yZXF1ZXN0VVJMKCk7CiAgICAgfQogCi0gICAgc3VibWlzc2lvbi0+ZGF0YSgpLT5n
ZW5lcmF0ZUZpbGVzKG1fZnJhbWUuZG9jdW1lbnQoKSk7CisgICAgc3VibWlzc2lvbi0+ZGF0YSgp
LT5nZW5lcmF0ZUZpbGVzKCZtX2ZyYW1lLmRvY3VtZW50KCkpOwogICAgIHN1Ym1pc3Npb24tPnNl
dFJlZmVycmVyKG91dGdvaW5nUmVmZXJyZXIoKSk7CiAgICAgc3VibWlzc2lvbi0+c2V0T3JpZ2lu
KG91dGdvaW5nT3JpZ2luKCkpOwogCkBAIC00MjksMjUgKzQzMCwyNiBAQCB2b2lkIEZyYW1lTG9h
ZGVyOjpzdWJtaXRGb3JtKFBhc3NSZWZQdHI8Rm9ybVN1Ym1pc3Npb24+IHN1Ym1pc3Npb24pCiAK
IHZvaWQgRnJhbWVMb2FkZXI6OnN0b3BMb2FkaW5nKFVubG9hZEV2ZW50UG9saWN5IHVubG9hZEV2
ZW50UG9saWN5KQogewotICAgIGlmIChtX2ZyYW1lLmRvY3VtZW50KCkgJiYgbV9mcmFtZS5kb2N1
bWVudCgpLT5wYXJzZXIoKSkKLSAgICAgICAgbV9mcmFtZS5kb2N1bWVudCgpLT5wYXJzZXIoKS0+
c3RvcFBhcnNpbmcoKTsKKyAgICBBU1NFUlQobV9mcmFtZS5kb2N1bWVudCgpKTsKKyAgICBpZiAo
bV9mcmFtZS5kb2N1bWVudCgpLnBhcnNlcigpKQorICAgICAgICBtX2ZyYW1lLmRvY3VtZW50KCku
cGFyc2VyKCktPnN0b3BQYXJzaW5nKCk7CiAKICAgICBpZiAodW5sb2FkRXZlbnRQb2xpY3kgIT0g
VW5sb2FkRXZlbnRQb2xpY3lOb25lKSB7Ci0gICAgICAgIGlmIChtX2ZyYW1lLmRvY3VtZW50KCkp
IHsKKyAgICAgICAgaWYgKCZtX2ZyYW1lLmRvY3VtZW50KCkpIHsKICAgICAgICAgICAgIGlmICht
X2RpZENhbGxJbXBsaWNpdENsb3NlICYmICFtX3dhc1VubG9hZEV2ZW50RW1pdHRlZCkgewotICAg
ICAgICAgICAgICAgIEVsZW1lbnQqIGN1cnJlbnRGb2N1c2VkRWxlbWVudCA9IG1fZnJhbWUuZG9j
dW1lbnQoKS0+Zm9jdXNlZEVsZW1lbnQoKTsKKyAgICAgICAgICAgICAgICBFbGVtZW50KiBjdXJy
ZW50Rm9jdXNlZEVsZW1lbnQgPSBtX2ZyYW1lLmRvY3VtZW50KCkuZm9jdXNlZEVsZW1lbnQoKTsK
ICAgICAgICAgICAgICAgICBpZiAoY3VycmVudEZvY3VzZWRFbGVtZW50ICYmIGN1cnJlbnRGb2N1
c2VkRWxlbWVudC0+dG9JbnB1dEVsZW1lbnQoKSkKICAgICAgICAgICAgICAgICAgICAgY3VycmVu
dEZvY3VzZWRFbGVtZW50LT50b0lucHV0RWxlbWVudCgpLT5lbmRFZGl0aW5nKCk7CiAgICAgICAg
ICAgICAgICAgaWYgKG1fcGFnZURpc21pc3NhbEV2ZW50QmVpbmdEaXNwYXRjaGVkID09IE5vRGlz
bWlzc2FsKSB7CiAgICAgICAgICAgICAgICAgICAgIGlmICh1bmxvYWRFdmVudFBvbGljeSA9PSBV
bmxvYWRFdmVudFBvbGljeVVubG9hZEFuZFBhZ2VIaWRlKSB7CiAgICAgICAgICAgICAgICAgICAg
ICAgICBtX3BhZ2VEaXNtaXNzYWxFdmVudEJlaW5nRGlzcGF0Y2hlZCA9IFBhZ2VIaWRlRGlzbWlz
c2FsOwotICAgICAgICAgICAgICAgICAgICAgICAgbV9mcmFtZS5kb2N1bWVudCgpLT5kb21XaW5k
b3coKS0+ZGlzcGF0Y2hFdmVudChQYWdlVHJhbnNpdGlvbkV2ZW50OjpjcmVhdGUoZXZlbnROYW1l
cygpLnBhZ2VoaWRlRXZlbnQsIG1fZnJhbWUuZG9jdW1lbnQoKS0+aW5QYWdlQ2FjaGUoKSksIG1f
ZnJhbWUuZG9jdW1lbnQoKSk7CisgICAgICAgICAgICAgICAgICAgICAgICBtX2ZyYW1lLmRvY3Vt
ZW50KCkuZG9tV2luZG93KCktPmRpc3BhdGNoRXZlbnQoUGFnZVRyYW5zaXRpb25FdmVudDo6Y3Jl
YXRlKGV2ZW50TmFtZXMoKS5wYWdlaGlkZUV2ZW50LCBtX2ZyYW1lLmRvY3VtZW50KCkuaW5QYWdl
Q2FjaGUoKSksICZtX2ZyYW1lLmRvY3VtZW50KCkpOwogICAgICAgICAgICAgICAgICAgICB9CiAK
ICAgICAgICAgICAgICAgICAgICAgLy8gRklYTUU6IHVwZGF0ZSBQYWdlIFZpc2liaWxpdHkgc3Rh
dGUgaGVyZS4KICAgICAgICAgICAgICAgICAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTExNjc3MAogCi0gICAgICAgICAgICAgICAgICAgIGlmICghbV9mcmFt
ZS5kb2N1bWVudCgpLT5pblBhZ2VDYWNoZSgpKSB7CisgICAgICAgICAgICAgICAgICAgIGlmICgh
bV9mcmFtZS5kb2N1bWVudCgpLmluUGFnZUNhY2hlKCkpIHsKICAgICAgICAgICAgICAgICAgICAg
ICAgIFJlZlB0cjxFdmVudD4gdW5sb2FkRXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCku
dW5sb2FkRXZlbnQsIGZhbHNlLCBmYWxzZSkpOwogICAgICAgICAgICAgICAgICAgICAgICAgLy8g
VGhlIERvY3VtZW50TG9hZGVyIChhbmQgdGh1cyBpdHMgRG9jdW1lbnRMb2FkVGltaW5nKSBtaWdo
dCBnZXQgZGVzdHJveWVkCiAgICAgICAgICAgICAgICAgICAgICAgICAvLyB3aGlsZSBkaXNwYXRj
aGluZyB0aGUgZXZlbnQsIHNvIHByb3RlY3QgaXQgdG8gcHJldmVudCB3cml0aW5nIHRoZSBlbmQK
QEAgLTQ1OCwzNiArNDYwLDM2IEBAIHZvaWQgRnJhbWVMb2FkZXI6OnN0b3BMb2FkaW5nKFVubG9h
ZEV2ZW50UG9saWN5IHVubG9hZEV2ZW50UG9saWN5KQogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIERvY3VtZW50TG9hZFRpbWluZyogdGltaW5nID0gZG9jdW1lbnRMb2FkZXItPnRpbWluZygp
OwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFTU0VSVCh0aW1pbmctPm5hdmlnYXRpb25T
dGFydCgpKTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aW1pbmctPm1hcmtVbmxvYWRF
dmVudFN0YXJ0KCk7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbV9mcmFtZS5kb2N1bWVu
dCgpLT5kb21XaW5kb3coKS0+ZGlzcGF0Y2hFdmVudCh1bmxvYWRFdmVudCwgbV9mcmFtZS5kb2N1
bWVudCgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtX2ZyYW1lLmRvY3VtZW50KCku
ZG9tV2luZG93KCktPmRpc3BhdGNoRXZlbnQodW5sb2FkRXZlbnQsIG1fZnJhbWUuZG9jdW1lbnQo
KSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGltaW5nLT5tYXJrVW5sb2FkRXZlbnRF
bmQoKTsKICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIG1fZnJhbWUuZG9jdW1lbnQoKS0+ZG9tV2luZG93KCktPmRpc3BhdGNoRXZlbnQo
dW5sb2FkRXZlbnQsIG1fZnJhbWUuZG9jdW1lbnQoKSk7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgbV9mcmFtZS5kb2N1bWVudCgpLmRvbVdpbmRvdygpLT5kaXNwYXRjaEV2ZW50KHVubG9h
ZEV2ZW50LCBtX2ZyYW1lLmRvY3VtZW50KCkpOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIG1fcGFnZURpc21pc3NhbEV2ZW50QmVpbmdE
aXNwYXRjaGVkID0gTm9EaXNtaXNzYWw7CiAgICAgICAgICAgICAgICAgaWYgKG1fZnJhbWUuZG9j
dW1lbnQoKSkKLSAgICAgICAgICAgICAgICAgICAgbV9mcmFtZS5kb2N1bWVudCgpLT51cGRhdGVT
dHlsZUlmTmVlZGVkKCk7CisgICAgICAgICAgICAgICAgICAgIG1fZnJhbWUuZG9jdW1lbnQoKS51
cGRhdGVTdHlsZUlmTmVlZGVkKCk7CiAgICAgICAgICAgICAgICAgbV93YXNVbmxvYWRFdmVudEVt
aXR0ZWQgPSB0cnVlOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAKICAgICAgICAgLy8gRGlz
cGF0Y2hpbmcgdGhlIHVubG9hZCBldmVudCBjb3VsZCBoYXZlIG1hZGUgbV9mcmFtZS5kb2N1bWVu
dCgpIG51bGwuCi0gICAgICAgIGlmIChtX2ZyYW1lLmRvY3VtZW50KCkgJiYgIW1fZnJhbWUuZG9j
dW1lbnQoKS0+aW5QYWdlQ2FjaGUoKSkgeworICAgICAgICBpZiAobV9mcmFtZS5kb2N1bWVudCgp
ICYmICFtX2ZyYW1lLmRvY3VtZW50KCkuaW5QYWdlQ2FjaGUoKSkgewogICAgICAgICAgICAgLy8g
RG9uJ3QgcmVtb3ZlIGV2ZW50IGxpc3RlbmVycyBmcm9tIGEgdHJhbnNpdGlvbmFsIGVtcHR5IGRv
Y3VtZW50IChzZWUgYnVnIDI4NzE2IGZvciBtb3JlIGluZm9ybWF0aW9uKS4KICAgICAgICAgICAg
IGJvb2wga2VlcEV2ZW50TGlzdGVuZXJzID0gbV9zdGF0ZU1hY2hpbmUuaXNEaXNwbGF5aW5nSW5p
dGlhbEVtcHR5RG9jdW1lbnQoKSAmJiBtX3Byb3Zpc2lvbmFsRG9jdW1lbnRMb2FkZXIKLSAgICAg
ICAgICAgICAgICAmJiBtX2ZyYW1lLmRvY3VtZW50KCktPmlzU2VjdXJlVHJhbnNpdGlvblRvKG1f
cHJvdmlzaW9uYWxEb2N1bWVudExvYWRlci0+dXJsKCkpOworICAgICAgICAgICAgICAgICYmIG1f
ZnJhbWUuZG9jdW1lbnQoKS5pc1NlY3VyZVRyYW5zaXRpb25UbyhtX3Byb3Zpc2lvbmFsRG9jdW1l
bnRMb2FkZXItPnVybCgpKTsKIAogICAgICAgICAgICAgaWYgKCFrZWVwRXZlbnRMaXN0ZW5lcnMp
Ci0gICAgICAgICAgICAgICAgbV9mcmFtZS5kb2N1bWVudCgpLT5yZW1vdmVBbGxFdmVudExpc3Rl
bmVycygpOworICAgICAgICAgICAgICAgIG1fZnJhbWUuZG9jdW1lbnQoKS5yZW1vdmVBbGxFdmVu
dExpc3RlbmVycygpOwogICAgICAgICB9CiAgICAgfQogCiAgICAgbV9pc0NvbXBsZXRlID0gdHJ1
ZTsgLy8gdG8gYXZvaWQgY2FsbGluZyBjb21wbGV0ZWQoKSBpbiBmaW5pc2hlZFBhcnNpbmcoKQog
ICAgIG1fZGlkQ2FsbEltcGxpY2l0Q2xvc2UgPSB0cnVlOyAvLyBkb24ndCB3YW50IHRoYXQgb25l
IGVpdGhlcgogCi0gICAgaWYgKG1fZnJhbWUuZG9jdW1lbnQoKSAmJiBtX2ZyYW1lLmRvY3VtZW50
KCktPnBhcnNpbmcoKSkgeworICAgIGlmIChtX2ZyYW1lLmRvY3VtZW50KCkgJiYgbV9mcmFtZS5k
b2N1bWVudCgpLnBhcnNpbmcoKSkgewogICAgICAgICBmaW5pc2hlZFBhcnNpbmcoKTsKLSAgICAg
ICAgbV9mcmFtZS5kb2N1bWVudCgpLT5zZXRQYXJzaW5nKGZhbHNlKTsKKyAgICAgICAgbV9mcmFt
ZS5kb2N1bWVudCgpLnNldFBhcnNpbmcoZmFsc2UpOwogICAgIH0KIAogICAgIGlmIChEb2N1bWVu
dCogZG9jID0gbV9mcmFtZS5kb2N1bWVudCgpKSB7CkBAIC01MTEsNyArNTEzLDcgQEAgdm9pZCBG
cmFtZUxvYWRlcjo6c3RvcCgpCiAgICAgLy8gVGhlIGZyYW1lJ3MgbGFzdCByZWYgbWF5IGJlIHJl
bW92ZWQgYW5kIGl0IHdpbGwgYmUgZGVsZXRlZCBieSBjaGVja0NvbXBsZXRlZCgpLgogICAgIFJl
ZjxGcmFtZT4gcHJvdGVjdChtX2ZyYW1lKTsKIAotICAgIGlmIChEb2N1bWVudFBhcnNlciogcGFy
c2VyID0gbV9mcmFtZS5kb2N1bWVudCgpLT5wYXJzZXIoKSkgeworICAgIGlmIChEb2N1bWVudFBh
cnNlciogcGFyc2VyID0gbV9mcmFtZS5kb2N1bWVudCgpLnBhcnNlcigpKSB7CiAgICAgICAgIHBh
cnNlci0+c3RvcFBhcnNpbmcoKTsKICAgICAgICAgcGFyc2VyLT5maW5pc2goKTsKICAgICB9CkBA
IC01NjEsNyArNTYzLDcgQEAgYm9vbCBGcmFtZUxvYWRlcjo6ZGlkT3BlblVSTCgpCiAgICAgLy8g
aXRzIGZyYW1lIGlzIG5vdCBpbiBhIGNvbnNpc3RlbnQgc3RhdGUgZm9yIHJlbmRlcmluZywgc28g
YXZvaWQgc2V0SlNTdGF0dXNCYXJUZXh0CiAgICAgLy8gc2luY2UgaXQgbWF5IGNhdXNlIGNsaWVu
dHMgdG8gYXR0ZW1wdCB0byByZW5kZXIgdGhlIGZyYW1lLgogICAgIGlmICghbV9zdGF0ZU1hY2hp
bmUuY3JlYXRpbmdJbml0aWFsRW1wdHlEb2N1bWVudCgpKSB7Ci0gICAgICAgIERPTVdpbmRvdyog
d2luZG93ID0gbV9mcmFtZS5kb2N1bWVudCgpLT5kb21XaW5kb3coKTsKKyAgICAgICAgRE9NV2lu
ZG93KiB3aW5kb3cgPSBtX2ZyYW1lLmRvY3VtZW50KCkuZG9tV2luZG93KCk7CiAgICAgICAgIHdp
bmRvdy0+c2V0U3RhdHVzKFN0cmluZygpKTsKICAgICAgICAgd2luZG93LT5zZXREZWZhdWx0U3Rh
dHVzKFN0cmluZygpKTsKICAgICB9CkBAIC02MDcsMjAgKzYwOSwyMCBAQCB2b2lkIEZyYW1lTG9h
ZGVyOjpjbGVhcihEb2N1bWVudCogbmV3RG9jdW1lbnQsIGJvb2wgY2xlYXJXaW5kb3dQcm9wZXJ0
aWVzLCBib29sCiAgICAgICAgIHJldHVybjsKICAgICBtX25lZWRzQ2xlYXIgPSBmYWxzZTsKICAg
ICAKLSAgICBpZiAoIW1fZnJhbWUuZG9jdW1lbnQoKS0+aW5QYWdlQ2FjaGUoKSkgewotICAgICAg
ICBtX2ZyYW1lLmRvY3VtZW50KCktPmNhbmNlbFBhcnNpbmcoKTsKLSAgICAgICAgbV9mcmFtZS5k
b2N1bWVudCgpLT5zdG9wQWN0aXZlRE9NT2JqZWN0cygpOwotICAgICAgICBpZiAobV9mcmFtZS5k
b2N1bWVudCgpLT5oYXNMaXZpbmdSZW5kZXJUcmVlKCkpIHsKLSAgICAgICAgICAgIG1fZnJhbWUu
ZG9jdW1lbnQoKS0+cHJlcGFyZUZvckRlc3RydWN0aW9uKCk7Ci0gICAgICAgICAgICBtX2ZyYW1l
LmRvY3VtZW50KCktPnJlbW92ZUZvY3VzZWROb2RlT2ZTdWJ0cmVlKG1fZnJhbWUuZG9jdW1lbnQo
KSk7CisgICAgaWYgKCFtX2ZyYW1lLmRvY3VtZW50KCkuaW5QYWdlQ2FjaGUoKSkgeworICAgICAg
ICBtX2ZyYW1lLmRvY3VtZW50KCkuY2FuY2VsUGFyc2luZygpOworICAgICAgICBtX2ZyYW1lLmRv
Y3VtZW50KCkuc3RvcEFjdGl2ZURPTU9iamVjdHMoKTsKKyAgICAgICAgaWYgKG1fZnJhbWUuZG9j
dW1lbnQoKS5oYXNMaXZpbmdSZW5kZXJUcmVlKCkpIHsKKyAgICAgICAgICAgIG1fZnJhbWUuZG9j
dW1lbnQoKS5wcmVwYXJlRm9yRGVzdHJ1Y3Rpb24oKTsKKyAgICAgICAgICAgIG1fZnJhbWUuZG9j
dW1lbnQoKS5yZW1vdmVGb2N1c2VkTm9kZU9mU3VidHJlZShtX2ZyYW1lLmRvY3VtZW50KCkpOwog
ICAgICAgICB9CiAgICAgfQogCiAgICAgLy8gRG8gdGhpcyBhZnRlciBkZXRhY2hpbmcgdGhlIGRv
Y3VtZW50IHNvIHRoYXQgdGhlIHVubG9hZCBldmVudCB3b3Jrcy4KICAgICBpZiAoY2xlYXJXaW5k
b3dQcm9wZXJ0aWVzKSB7Ci0gICAgICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZnJhbWVX
aW5kb3dEaXNjYXJkZWQoJm1fZnJhbWUsIG1fZnJhbWUuZG9jdW1lbnQoKS0+ZG9tV2luZG93KCkp
OwotICAgICAgICBtX2ZyYW1lLmRvY3VtZW50KCktPmRvbVdpbmRvdygpLT5yZXNldFVubGVzc1N1
c3BlbmRlZEZvclBhZ2VDYWNoZSgpOwotICAgICAgICBtX2ZyYW1lLnNjcmlwdCgpLmNsZWFyV2lu
ZG93U2hlbGwobmV3RG9jdW1lbnQtPmRvbVdpbmRvdygpLCBtX2ZyYW1lLmRvY3VtZW50KCktPmlu
UGFnZUNhY2hlKCkpOworICAgICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmZyYW1lV2lu
ZG93RGlzY2FyZGVkKCZtX2ZyYW1lLCBtX2ZyYW1lLmRvY3VtZW50KCkuZG9tV2luZG93KCkpOwor
ICAgICAgICBtX2ZyYW1lLmRvY3VtZW50KCkuZG9tV2luZG93KCktPnJlc2V0VW5sZXNzU3VzcGVu
ZGVkRm9yUGFnZUNhY2hlKCk7CisgICAgICAgIG1fZnJhbWUuc2NyaXB0KCkuY2xlYXJXaW5kb3dT
aGVsbChuZXdEb2N1bWVudC0+ZG9tV2luZG93KCksIG1fZnJhbWUuZG9jdW1lbnQoKS5pblBhZ2VD
YWNoZSgpKTsKICAgICB9CiAKICAgICBtX2ZyYW1lLnNlbGVjdGlvbigpLnByZXBhcmVGb3JEZXN0
cnVjdGlvbigpOwpAQCAtNjcwLDE1ICs2NzIsMTUgQEAgdm9pZCBGcmFtZUxvYWRlcjo6cmVjZWl2
ZWRGaXJzdERhdGEoKQogICAgIGlmICghcGFyc2VIVFRQUmVmcmVzaChtX2RvY3VtZW50TG9hZGVy
LT5yZXNwb25zZSgpLmh0dHBIZWFkZXJGaWVsZCgiUmVmcmVzaCIpLCBmYWxzZSwgZGVsYXksIHVy
bCkpCiAgICAgICAgIHJldHVybjsKICAgICBpZiAodXJsLmlzRW1wdHkoKSkKLSAgICAgICAgdXJs
ID0gbV9mcmFtZS5kb2N1bWVudCgpLT51cmwoKS5zdHJpbmcoKTsKKyAgICAgICAgdXJsID0gbV9m
cmFtZS5kb2N1bWVudCgpLnVybCgpLnN0cmluZygpOwogICAgIGVsc2UKLSAgICAgICAgdXJsID0g
bV9mcmFtZS5kb2N1bWVudCgpLT5jb21wbGV0ZVVSTCh1cmwpLnN0cmluZygpOworICAgICAgICB1
cmwgPSBtX2ZyYW1lLmRvY3VtZW50KCkuY29tcGxldGVVUkwodXJsKS5zdHJpbmcoKTsKIAogICAg
IGlmICghcHJvdG9jb2xJc0phdmFTY3JpcHQodXJsKSkKICAgICAgICAgbV9mcmFtZS5uYXZpZ2F0
aW9uU2NoZWR1bGVyKCkuc2NoZWR1bGVSZWRpcmVjdChkZWxheSwgdXJsKTsKICAgICBlbHNlIHsK
LSAgICAgICAgU3RyaW5nIG1lc3NhZ2UgPSAiUmVmdXNlZCB0byByZWZyZXNoICIgKyBtX2ZyYW1l
LmRvY3VtZW50KCktPnVybCgpLnN0cmluZ0NlbnRlckVsbGlwc2l6ZWRUb0xlbmd0aCgpICsgIiB0
byBhIGphdmFzY3JpcHQ6IFVSTCI7Ci0gICAgICAgIG1fZnJhbWUuZG9jdW1lbnQoKS0+YWRkQ29u
c29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6U2VjdXJpdHksIE1lc3NhZ2VMZXZlbDo6RXJyb3Is
IG1lc3NhZ2UpOworICAgICAgICBTdHJpbmcgbWVzc2FnZSA9ICJSZWZ1c2VkIHRvIHJlZnJlc2gg
IiArIG1fZnJhbWUuZG9jdW1lbnQoKS51cmwoKS5zdHJpbmdDZW50ZXJFbGxpcHNpemVkVG9MZW5n
dGgoKSArICIgdG8gYSBqYXZhc2NyaXB0OiBVUkwiOworICAgICAgICBtX2ZyYW1lLmRvY3VtZW50
KCkuYWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6U2VjdXJpdHksIE1lc3NhZ2VMZXZl
bDo6RXJyb3IsIG1lc3NhZ2UpOwogICAgIH0KIH0KIApAQCAtNjkyLDEwICs2OTQsMTAgQEAgdm9p
ZCBGcmFtZUxvYWRlcjo6ZGlkQmVnaW5Eb2N1bWVudChib29sIGRpc3BhdGNoKQogICAgIG1fbmVl
ZHNDbGVhciA9IHRydWU7CiAgICAgbV9pc0NvbXBsZXRlID0gZmFsc2U7CiAgICAgbV9kaWRDYWxs
SW1wbGljaXRDbG9zZSA9IGZhbHNlOwotICAgIG1fZnJhbWUuZG9jdW1lbnQoKS0+c2V0UmVhZHlT
dGF0ZShEb2N1bWVudDo6TG9hZGluZyk7CisgICAgbV9mcmFtZS5kb2N1bWVudCgpLnNldFJlYWR5
U3RhdGUoRG9jdW1lbnQ6OkxvYWRpbmcpOwogCiAgICAgaWYgKG1fcGVuZGluZ1N0YXRlT2JqZWN0
KSB7Ci0gICAgICAgIG1fZnJhbWUuZG9jdW1lbnQoKS0+c3RhdGVQb3BwZWQobV9wZW5kaW5nU3Rh
dGVPYmplY3QuZ2V0KCkpOworICAgICAgICBtX2ZyYW1lLmRvY3VtZW50KCkuc3RhdGVQb3BwZWQo
bV9wZW5kaW5nU3RhdGVPYmplY3QuZ2V0KCkpOwogICAgICAgICBtX3BlbmRpbmdTdGF0ZU9iamVj
dC5jbGVhcigpOwogICAgIH0KIApAQCAtNzAzLDMyICs3MDUsMzIgQEAgdm9pZCBGcmFtZUxvYWRl
cjo6ZGlkQmVnaW5Eb2N1bWVudChib29sIGRpc3BhdGNoKQogICAgICAgICBkaXNwYXRjaERpZENs
ZWFyV2luZG93T2JqZWN0c0luQWxsV29ybGRzKCk7CiAKICAgICB1cGRhdGVGaXJzdFBhcnR5Rm9y
Q29va2llcygpOwotICAgIG1fZnJhbWUuZG9jdW1lbnQoKS0+aW5pdENvbnRlbnRTZWN1cml0eVBv
bGljeSgpOworICAgIG1fZnJhbWUuZG9jdW1lbnQoKS5pbml0Q29udGVudFNlY3VyaXR5UG9saWN5
KCk7CiAKICAgICBjb25zdCBTZXR0aW5ncyYgc2V0dGluZ3MgPSBtX2ZyYW1lLnNldHRpbmdzKCk7
Ci0gICAgbV9mcmFtZS5kb2N1bWVudCgpLT5jYWNoZWRSZXNvdXJjZUxvYWRlcigpLT5zZXRJbWFn
ZXNFbmFibGVkKHNldHRpbmdzLmFyZUltYWdlc0VuYWJsZWQoKSk7Ci0gICAgbV9mcmFtZS5kb2N1
bWVudCgpLT5jYWNoZWRSZXNvdXJjZUxvYWRlcigpLT5zZXRBdXRvTG9hZEltYWdlcyhzZXR0aW5n
cy5sb2Fkc0ltYWdlc0F1dG9tYXRpY2FsbHkoKSk7CisgICAgbV9mcmFtZS5kb2N1bWVudCgpLmNh
Y2hlZFJlc291cmNlTG9hZGVyKCktPnNldEltYWdlc0VuYWJsZWQoc2V0dGluZ3MuYXJlSW1hZ2Vz
RW5hYmxlZCgpKTsKKyAgICBtX2ZyYW1lLmRvY3VtZW50KCkuY2FjaGVkUmVzb3VyY2VMb2FkZXIo
KS0+c2V0QXV0b0xvYWRJbWFnZXMoc2V0dGluZ3MubG9hZHNJbWFnZXNBdXRvbWF0aWNhbGx5KCkp
OwogCiAgICAgaWYgKG1fZG9jdW1lbnRMb2FkZXIpIHsKICAgICAgICAgU3RyaW5nIGRuc1ByZWZl
dGNoQ29udHJvbCA9IG1fZG9jdW1lbnRMb2FkZXItPnJlc3BvbnNlKCkuaHR0cEhlYWRlckZpZWxk
KCJYLUROUy1QcmVmZXRjaC1Db250cm9sIik7CiAgICAgICAgIGlmICghZG5zUHJlZmV0Y2hDb250
cm9sLmlzRW1wdHkoKSkKLSAgICAgICAgICAgIG1fZnJhbWUuZG9jdW1lbnQoKS0+cGFyc2VETlNQ
cmVmZXRjaENvbnRyb2xIZWFkZXIoZG5zUHJlZmV0Y2hDb250cm9sKTsKKyAgICAgICAgICAgIG1f
ZnJhbWUuZG9jdW1lbnQoKS5wYXJzZUROU1ByZWZldGNoQ29udHJvbEhlYWRlcihkbnNQcmVmZXRj
aENvbnRyb2wpOwogCiAgICAgICAgIFN0cmluZyBwb2xpY3lWYWx1ZSA9IG1fZG9jdW1lbnRMb2Fk
ZXItPnJlc3BvbnNlKCkuaHR0cEhlYWRlckZpZWxkKCJDb250ZW50LVNlY3VyaXR5LVBvbGljeSIp
OwogICAgICAgICBpZiAoIXBvbGljeVZhbHVlLmlzRW1wdHkoKSkKLSAgICAgICAgICAgIG1fZnJh
bWUuZG9jdW1lbnQoKS0+Y29udGVudFNlY3VyaXR5UG9saWN5KCktPmRpZFJlY2VpdmVIZWFkZXIo
cG9saWN5VmFsdWUsIENvbnRlbnRTZWN1cml0eVBvbGljeTo6RW5mb3JjZSk7CisgICAgICAgICAg
ICBtX2ZyYW1lLmRvY3VtZW50KCkuY29udGVudFNlY3VyaXR5UG9saWN5KCktPmRpZFJlY2VpdmVI
ZWFkZXIocG9saWN5VmFsdWUsIENvbnRlbnRTZWN1cml0eVBvbGljeTo6RW5mb3JjZSk7CiAKICAg
ICAgICAgcG9saWN5VmFsdWUgPSBtX2RvY3VtZW50TG9hZGVyLT5yZXNwb25zZSgpLmh0dHBIZWFk
ZXJGaWVsZCgiQ29udGVudC1TZWN1cml0eS1Qb2xpY3ktUmVwb3J0LU9ubHkiKTsKICAgICAgICAg
aWYgKCFwb2xpY3lWYWx1ZS5pc0VtcHR5KCkpCi0gICAgICAgICAgICBtX2ZyYW1lLmRvY3VtZW50
KCktPmNvbnRlbnRTZWN1cml0eVBvbGljeSgpLT5kaWRSZWNlaXZlSGVhZGVyKHBvbGljeVZhbHVl
LCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OlJlcG9ydCk7CisgICAgICAgICAgICBtX2ZyYW1lLmRv
Y3VtZW50KCkuY29udGVudFNlY3VyaXR5UG9saWN5KCktPmRpZFJlY2VpdmVIZWFkZXIocG9saWN5
VmFsdWUsIENvbnRlbnRTZWN1cml0eVBvbGljeTo6UmVwb3J0KTsKIAogICAgICAgICBwb2xpY3lW
YWx1ZSA9IG1fZG9jdW1lbnRMb2FkZXItPnJlc3BvbnNlKCkuaHR0cEhlYWRlckZpZWxkKCJYLVdl
YktpdC1DU1AiKTsKICAgICAgICAgaWYgKCFwb2xpY3lWYWx1ZS5pc0VtcHR5KCkpCi0gICAgICAg
ICAgICBtX2ZyYW1lLmRvY3VtZW50KCktPmNvbnRlbnRTZWN1cml0eVBvbGljeSgpLT5kaWRSZWNl
aXZlSGVhZGVyKHBvbGljeVZhbHVlLCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OlByZWZpeGVkRW5m
b3JjZSk7CisgICAgICAgICAgICBtX2ZyYW1lLmRvY3VtZW50KCkuY29udGVudFNlY3VyaXR5UG9s
aWN5KCktPmRpZFJlY2VpdmVIZWFkZXIocG9saWN5VmFsdWUsIENvbnRlbnRTZWN1cml0eVBvbGlj
eTo6UHJlZml4ZWRFbmZvcmNlKTsKIAogICAgICAgICBwb2xpY3lWYWx1ZSA9IG1fZG9jdW1lbnRM
b2FkZXItPnJlc3BvbnNlKCkuaHR0cEhlYWRlckZpZWxkKCJYLVdlYktpdC1DU1AtUmVwb3J0LU9u
bHkiKTsKICAgICAgICAgaWYgKCFwb2xpY3lWYWx1ZS5pc0VtcHR5KCkpCi0gICAgICAgICAgICBt
X2ZyYW1lLmRvY3VtZW50KCktPmNvbnRlbnRTZWN1cml0eVBvbGljeSgpLT5kaWRSZWNlaXZlSGVh
ZGVyKHBvbGljeVZhbHVlLCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OlByZWZpeGVkUmVwb3J0KTsK
KyAgICAgICAgICAgIG1fZnJhbWUuZG9jdW1lbnQoKS5jb250ZW50U2VjdXJpdHlQb2xpY3koKS0+
ZGlkUmVjZWl2ZUhlYWRlcihwb2xpY3lWYWx1ZSwgQ29udGVudFNlY3VyaXR5UG9saWN5OjpQcmVm
aXhlZFJlcG9ydCk7CiAKICAgICAgICAgU3RyaW5nIGhlYWRlckNvbnRlbnRMYW5ndWFnZSA9IG1f
ZG9jdW1lbnRMb2FkZXItPnJlc3BvbnNlKCkuaHR0cEhlYWRlckZpZWxkKCJDb250ZW50LUxhbmd1
YWdlIik7CiAgICAgICAgIGlmICghaGVhZGVyQ29udGVudExhbmd1YWdlLmlzRW1wdHkoKSkgewpA
QCAtNzM2LDcgKzczOCw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmRpZEJlZ2luRG9jdW1lbnQoYm9v
bCBkaXNwYXRjaCkKICAgICAgICAgICAgIGhlYWRlckNvbnRlbnRMYW5ndWFnZS50cnVuY2F0ZShj
b21tYUluZGV4KTsgLy8gbm90Rm91bmQgPT0gLTEgPT0gZG9uJ3QgdHJ1bmNhdGUKICAgICAgICAg
ICAgIGhlYWRlckNvbnRlbnRMYW5ndWFnZSA9IGhlYWRlckNvbnRlbnRMYW5ndWFnZS5zdHJpcFdo
aXRlU3BhY2UoaXNIVE1MU3BhY2UpOwogICAgICAgICAgICAgaWYgKCFoZWFkZXJDb250ZW50TGFu
Z3VhZ2UuaXNFbXB0eSgpKQotICAgICAgICAgICAgICAgIG1fZnJhbWUuZG9jdW1lbnQoKS0+c2V0
Q29udGVudExhbmd1YWdlKGhlYWRlckNvbnRlbnRMYW5ndWFnZSk7CisgICAgICAgICAgICAgICAg
bV9mcmFtZS5kb2N1bWVudCgpLnNldENvbnRlbnRMYW5ndWFnZShoZWFkZXJDb250ZW50TGFuZ3Vh
Z2UpOwogICAgICAgICB9CiAgICAgfQogCkBAIC03NjUsNyArNzY3LDcgQEAgdm9pZCBGcmFtZUxv
YWRlcjo6ZmluaXNoZWRQYXJzaW5nKCkKICAgICAvLyBDaGVjayBpZiB0aGUgc2Nyb2xsYmFycyBh
cmUgcmVhbGx5IG5lZWRlZCBmb3IgdGhlIGNvbnRlbnQuCiAgICAgLy8gSWYgbm90LCByZW1vdmUg
dGhlbSwgcmVsYXlvdXQsIGFuZCByZXBhaW50LgogICAgIG1fZnJhbWUudmlldygpLT5yZXN0b3Jl
U2Nyb2xsYmFyKCk7Ci0gICAgc2Nyb2xsVG9GcmFnbWVudFdpdGhQYXJlbnRCb3VuZGFyeShtX2Zy
YW1lLmRvY3VtZW50KCktPnVybCgpKTsKKyAgICBzY3JvbGxUb0ZyYWdtZW50V2l0aFBhcmVudEJv
dW5kYXJ5KG1fZnJhbWUuZG9jdW1lbnQoKS51cmwoKSk7CiB9CiAKIHZvaWQgRnJhbWVMb2FkZXI6
OmxvYWREb25lKCkKQEAgLTgwMSwxNSArODAzLDE1IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmNoZWNr
Q29tcGxldGVkKCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgLy8gQXJlIHdlIHN0aWxsIHBhcnNp
bmc/Ci0gICAgaWYgKG1fZnJhbWUuZG9jdW1lbnQoKS0+cGFyc2luZygpKQorICAgIGlmIChtX2Zy
YW1lLmRvY3VtZW50KCkucGFyc2luZygpKQogICAgICAgICByZXR1cm47CiAKICAgICAvLyBTdGls
bCB3YWl0aW5nIGZvciBpbWFnZXMvc2NyaXB0cz8KLSAgICBpZiAobV9mcmFtZS5kb2N1bWVudCgp
LT5jYWNoZWRSZXNvdXJjZUxvYWRlcigpLT5yZXF1ZXN0Q291bnQoKSkKKyAgICBpZiAobV9mcmFt
ZS5kb2N1bWVudCgpLmNhY2hlZFJlc291cmNlTG9hZGVyKCktPnJlcXVlc3RDb3VudCgpKQogICAg
ICAgICByZXR1cm47CiAKICAgICAvLyBTdGlsbCB3YWl0aW5nIGZvciBlbGVtZW50cyB0aGF0IGRv
bid0IGdvIHRocm91Z2ggYSBGcmFtZUxvYWRlcj8KLSAgICBpZiAobV9mcmFtZS5kb2N1bWVudCgp
LT5pc0RlbGF5aW5nTG9hZEV2ZW50KCkpCisgICAgaWYgKG1fZnJhbWUuZG9jdW1lbnQoKS5pc0Rl
bGF5aW5nTG9hZEV2ZW50KCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIC8vIEFueSBmcmFtZSB0
aGF0IGhhc24ndCBjb21wbGV0ZWQgeWV0PwpAQCAtODE5LDE3ICs4MjEsMTcgQEAgdm9pZCBGcmFt
ZUxvYWRlcjo6Y2hlY2tDb21wbGV0ZWQoKQogICAgIC8vIE9LLCBjb21wbGV0ZWQuCiAgICAgbV9p
c0NvbXBsZXRlID0gdHJ1ZTsKICAgICBtX3JlcXVlc3RlZEhpc3RvcnlJdGVtID0gMDsKLSAgICBt
X2ZyYW1lLmRvY3VtZW50KCktPnNldFJlYWR5U3RhdGUoRG9jdW1lbnQ6OkNvbXBsZXRlKTsKKyAg
ICBtX2ZyYW1lLmRvY3VtZW50KCkuc2V0UmVhZHlTdGF0ZShEb2N1bWVudDo6Q29tcGxldGUpOwog
CiAjaWYgUExBVEZPUk0oSU9TKQotICAgIGlmIChtX2ZyYW1lLmRvY3VtZW50KCktPnVybCgpLmlz
RW1wdHkoKSkgeworICAgIGlmIChtX2ZyYW1lLmRvY3VtZW50KCkudXJsKCkuaXNFbXB0eSgpKSB7
CiAgICAgICAgIC8vIFdlIG5lZWQgdG8gdXBkYXRlIHRoZSBkb2N1bWVudCBVUkwgb2YgYSBQREYg
ZG9jdW1lbnQgdG8gYmUgbm9uLWVtcHR5IHNvIHRoYXQgYm90aCBiYWNrL2ZvcndhcmQgaGlzdG9y
eSBuYXZpZ2F0aW9uCiAgICAgICAgIC8vIGJldHdlZW4gUERGIHBhZ2VzIGFuZCBmcmFnbWVudCBu
YXZpZ2F0aW9uIHdvcmtzLiBTZWUgPHJkYXI6Ly9wcm9ibGVtLzk1NDQ3Njk+IGZvciBtb3JlIGRl
dGFpbHMuCiAgICAgICAgIC8vIEZJWE1FOiBJcyB0aGVyZSBhIGJldHRlciBwbGFjZSBmb3IgdGhp
cyBjb2RlLCBzYXkgRG9jdW1lbnRMb2FkZXI/IEFsc28sIHdlIHNob3VsZCBleHBsaWNpdGx5IG9u
bHkgdXBkYXRlIHRoZSBVUkwKICAgICAgICAgLy8gb2YgdGhlIGRvY3VtZW50IHdoZW4gaXQncyBh
IFBERkRvY3VtZW50IG9iamVjdCBpbnN0ZWFkIG9mIGFzc3VtaW5nIHRoYXQgYSBEb2N1bWVudCBv
YmplY3Qgd2l0aCBhbiBlbXB0eSBVUkwgaXMgYSBQREZEb2N1bWVudC4KICAgICAgICAgLy8gRklY
TUU6IFRoaXMgY29kZSBpcyBpbmNvcnJlY3QgZm9yIGEgc3ludGhlc2l6ZWQgZG9jdW1lbnQgKHdo
aWNoIGFsc28gaGFzIGFuIGVtcHR5IFVSTCkuIFRoZSBVUkwgZm9yIGEgc3ludGhlc2l6ZWQKICAg
ICAgICAgLy8gZG9jdW1lbnQgc2hvdWxkIGJlIHRoZSBVUkwgc3BlY2lmaWVkIHRvIEZyYW1lTG9h
ZGVyOjppbml0Rm9yU3ludGhlc2l6ZWREb2N1bWVudCgpLgotICAgICAgICBtX2ZyYW1lLmRvY3Vt
ZW50KCktPnNldFVSTChhY3RpdmVEb2N1bWVudExvYWRlcigpLT5kb2N1bWVudFVSTCgpKTsKKyAg
ICAgICAgbV9mcmFtZS5kb2N1bWVudCgpLnNldFVSTChhY3RpdmVEb2N1bWVudExvYWRlcigpLT5k
b2N1bWVudFVSTCgpKTsKICAgICB9CiAjZW5kaWYKIApAQCAtODc5LDcgKzg4MSw3IEBAIHZvaWQg
RnJhbWVMb2FkZXI6OnNjaGVkdWxlQ2hlY2tMb2FkQ29tcGxldGUoKQogCiB2b2lkIEZyYW1lTG9h
ZGVyOjpjaGVja0NhbGxJbXBsaWNpdENsb3NlKCkKIHsKLSAgICBpZiAobV9kaWRDYWxsSW1wbGlj
aXRDbG9zZSB8fCBtX2ZyYW1lLmRvY3VtZW50KCktPnBhcnNpbmcoKSB8fCBtX2ZyYW1lLmRvY3Vt
ZW50KCktPmlzRGVsYXlpbmdMb2FkRXZlbnQoKSkKKyAgICBpZiAobV9kaWRDYWxsSW1wbGljaXRD
bG9zZSB8fCBtX2ZyYW1lLmRvY3VtZW50KCkucGFyc2luZygpIHx8IG1fZnJhbWUuZG9jdW1lbnQo
KS5pc0RlbGF5aW5nTG9hZEV2ZW50KCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmICghYWxs
Q2hpbGRyZW5BcmVDb21wbGV0ZSgpKQpAQCAtODg3LDcgKzg4OSw3IEBAIHZvaWQgRnJhbWVMb2Fk
ZXI6OmNoZWNrQ2FsbEltcGxpY2l0Q2xvc2UoKQogCiAgICAgbV9kaWRDYWxsSW1wbGljaXRDbG9z
ZSA9IHRydWU7CiAgICAgbV93YXNVbmxvYWRFdmVudEVtaXR0ZWQgPSBmYWxzZTsKLSAgICBtX2Zy
YW1lLmRvY3VtZW50KCktPmltcGxpY2l0Q2xvc2UoKTsKKyAgICBtX2ZyYW1lLmRvY3VtZW50KCku
aW1wbGljaXRDbG9zZSgpOwogfQogCiB2b2lkIEZyYW1lTG9hZGVyOjpsb2FkVVJMSW50b0NoaWxk
RnJhbWUoY29uc3QgVVJMJiB1cmwsIGNvbnN0IFN0cmluZyYgcmVmZXJlciwgRnJhbWUqIGNoaWxk
RnJhbWUpCkBAIC05MDYsNyArOTA4LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6bG9hZFVSTEludG9D
aGlsZEZyYW1lKGNvbnN0IFVSTCYgdXJsLCBjb25zdCBTdHJpbmcmIHJlZmVyZXIsIEYKICAgICAv
LyBJZiB3ZSdyZSBtb3ZpbmcgaW4gdGhlIGJhY2svZm9yd2FyZCBsaXN0LCB3ZSBtaWdodCB3YW50
IHRvIHJlcGxhY2UgdGhlIGNvbnRlbnQKICAgICAvLyBvZiB0aGlzIGNoaWxkIGZyYW1lIHdpdGgg
d2hhdGV2ZXIgd2FzIHRoZXJlIGF0IHRoYXQgcG9pbnQuCiAgICAgaWYgKHBhcmVudEl0ZW0gJiYg
cGFyZW50SXRlbS0+Y2hpbGRyZW4oKS5zaXplKCkgJiYgaXNCYWNrRm9yd2FyZExvYWRUeXBlKGxv
YWRUeXBlKCkpIAotICAgICAgICAmJiAhbV9mcmFtZS5kb2N1bWVudCgpLT5sb2FkRXZlbnRGaW5p
c2hlZCgpKSB7CisgICAgICAgICYmICFtX2ZyYW1lLmRvY3VtZW50KCkubG9hZEV2ZW50RmluaXNo
ZWQoKSkgewogICAgICAgICBIaXN0b3J5SXRlbSogY2hpbGRJdGVtID0gcGFyZW50SXRlbS0+Y2hp
bGRJdGVtV2l0aFRhcmdldChjaGlsZEZyYW1lLT50cmVlKCkudW5pcXVlTmFtZSgpKTsKICAgICAg
ICAgaWYgKGNoaWxkSXRlbSkgewogICAgICAgICAgICAgY2hpbGRGcmFtZS0+bG9hZGVyKCkubV9y
ZXF1ZXN0ZWRIaXN0b3J5SXRlbSA9IGNoaWxkSXRlbTsKQEAgLTk3OSw3ICs5ODEsNyBAQCBTdHJp
bmcgRnJhbWVMb2FkZXI6Om91dGdvaW5nUmVmZXJyZXIoKSBjb25zdAogICAgIC8vIFNlZSBodHRw
Oi8vd3d3LndoYXR3Zy5vcmcvc3BlY3Mvd2ViLWFwcHMvY3VycmVudC13b3JrLyNmZXRjaGluZy1y
ZXNvdXJjZXMKICAgICAvLyBmb3Igd2h5IHdlIHdhbGsgdGhlIHBhcmVudCBjaGFpbiBmb3Igc3Jj
ZG9jIGRvY3VtZW50cy4KICAgICBGcmFtZSogZnJhbWUgPSAmbV9mcmFtZTsKLSAgICB3aGlsZSAo
ZnJhbWUtPmRvY3VtZW50KCktPmlzU3JjZG9jRG9jdW1lbnQoKSkgeworICAgIHdoaWxlIChmcmFt
ZS0+ZG9jdW1lbnQoKS5pc1NyY2RvY0RvY3VtZW50KCkpIHsKICAgICAgICAgZnJhbWUgPSBmcmFt
ZS0+dHJlZSgpLnBhcmVudCgpOwogICAgICAgICAvLyBTcmNkb2MgZG9jdW1lbnRzIGNhbm5vdCBi
ZSB0b3AtbGV2ZWwgZG9jdW1lbnRzLCBieSBkZWZpbml0aW9uLAogICAgICAgICAvLyBiZWNhdXNl
IHRoZXkgbmVlZCB0byBiZSBjb250YWluZWQgaW4gaWZyYW1lcyB3aXRoIHRoZSBzcmNkb2MuCkBA
IC05OTAsNyArOTkyLDcgQEAgU3RyaW5nIEZyYW1lTG9hZGVyOjpvdXRnb2luZ1JlZmVycmVyKCkg
Y29uc3QKIAogU3RyaW5nIEZyYW1lTG9hZGVyOjpvdXRnb2luZ09yaWdpbigpIGNvbnN0CiB7Ci0g
ICAgcmV0dXJuIG1fZnJhbWUuZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKS0+dG9TdHJpbmco
KTsKKyAgICByZXR1cm4gbV9mcmFtZS5kb2N1bWVudCgpLnNlY3VyaXR5T3JpZ2luKCktPnRvU3Ry
aW5nKCk7CiB9CiAKIGJvb2wgRnJhbWVMb2FkZXI6OmNoZWNrSWZGb3JtQWN0aW9uQWxsb3dlZEJ5
Q1NQKGNvbnN0IFVSTCYgdXJsKSBjb25zdApAQCAtOTk4LDcgKzEwMDAsNyBAQCBib29sIEZyYW1l
TG9hZGVyOjpjaGVja0lmRm9ybUFjdGlvbkFsbG93ZWRCeUNTUChjb25zdCBVUkwmIHVybCkgY29u
c3QKICAgICBpZiAobV9zdWJtaXR0ZWRGb3JtVVJMLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJu
IHRydWU7CiAKLSAgICByZXR1cm4gbV9mcmFtZS5kb2N1bWVudCgpLT5jb250ZW50U2VjdXJpdHlQ
b2xpY3koKS0+YWxsb3dGb3JtQWN0aW9uKHVybCk7CisgICAgcmV0dXJuIG1fZnJhbWUuZG9jdW1l
bnQoKS5jb250ZW50U2VjdXJpdHlQb2xpY3koKS0+YWxsb3dGb3JtQWN0aW9uKHVybCk7CiB9CiAK
IEZyYW1lKiBGcmFtZUxvYWRlcjo6b3BlbmVyKCkKQEAgLTEwMTgsNyArMTAyMCw3IEBAIHZvaWQg
RnJhbWVMb2FkZXI6OnNldE9wZW5lcihGcmFtZSogb3BlbmVyKQogICAgIG1fb3BlbmVyID0gb3Bl
bmVyOwogCiAgICAgaWYgKG1fZnJhbWUuZG9jdW1lbnQoKSkKLSAgICAgICAgbV9mcmFtZS5kb2N1
bWVudCgpLT5pbml0U2VjdXJpdHlDb250ZXh0KCk7CisgICAgICAgIG1fZnJhbWUuZG9jdW1lbnQo
KS5pbml0U2VjdXJpdHlDb250ZXh0KCk7CiB9CiAKIC8vIEZJWE1FOiBUaGlzIGRvZXMgbm90IGJl
bG9uZyBpbiBGcmFtZUxvYWRlciEKQEAgLTEwNDgsMTMgKzEwNTAsMTMgQEAgdm9pZCBGcmFtZUxv
YWRlcjo6dXBkYXRlRmlyc3RQYXJ0eUZvckNvb2tpZXMoKQogICAgIGlmIChtX2ZyYW1lLnRyZWUo
KS5wYXJlbnQoKSkKICAgICAgICAgc2V0Rmlyc3RQYXJ0eUZvckNvb2tpZXMobV9mcmFtZS50cmVl
KCkucGFyZW50KCktPmRvY3VtZW50KCktPmZpcnN0UGFydHlGb3JDb29raWVzKCkpOwogICAgIGVs
c2UKLSAgICAgICAgc2V0Rmlyc3RQYXJ0eUZvckNvb2tpZXMobV9mcmFtZS5kb2N1bWVudCgpLT51
cmwoKSk7CisgICAgICAgIHNldEZpcnN0UGFydHlGb3JDb29raWVzKG1fZnJhbWUuZG9jdW1lbnQo
KS51cmwoKSk7CiB9CiAKIHZvaWQgRnJhbWVMb2FkZXI6OnNldEZpcnN0UGFydHlGb3JDb29raWVz
KGNvbnN0IFVSTCYgdXJsKQogewogICAgIGZvciAoRnJhbWUqIGZyYW1lID0gJm1fZnJhbWU7IGZy
YW1lOyBmcmFtZSA9IGZyYW1lLT50cmVlKCkudHJhdmVyc2VOZXh0KCZtX2ZyYW1lKSkKLSAgICAg
ICAgZnJhbWUtPmRvY3VtZW50KCktPnNldEZpcnN0UGFydHlGb3JDb29raWVzKHVybCk7CisgICAg
ICAgIGZyYW1lLT5kb2N1bWVudCgpLnNldEZpcnN0UGFydHlGb3JDb29raWVzKHVybCk7CiB9CiAK
IC8vIFRoaXMgZG9lcyB0aGUgc2FtZSBraW5kIG9mIHdvcmsgdGhhdCBkaWRPcGVuVVJMIGRvZXMs
IGV4Y2VwdCBpdCByZWxpZXMgb24gdGhlIGZhY3QKQEAgLTEwNjUsOCArMTA2Nyw4IEBAIHZvaWQg
RnJhbWVMb2FkZXI6OmxvYWRJblNhbWVEb2N1bWVudChjb25zdCBVUkwmIHVybCwgUGFzc1JlZlB0
cjxTZXJpYWxpemVkU2NyaXB0CiAgICAgQVNTRVJUKCFzdGF0ZU9iamVjdCB8fCAoc3RhdGVPYmpl
Y3QgJiYgIWlzTmV3TmF2aWdhdGlvbikpOwogCiAgICAgLy8gVXBkYXRlIHRoZSBkYXRhIHNvdXJj
ZSdzIHJlcXVlc3Qgd2l0aCB0aGUgbmV3IFVSTCB0byBmYWtlIHRoZSBVUkwgY2hhbmdlCi0gICAg
VVJMIG9sZFVSTCA9IG1fZnJhbWUuZG9jdW1lbnQoKS0+dXJsKCk7Ci0gICAgbV9mcmFtZS5kb2N1
bWVudCgpLT5zZXRVUkwodXJsKTsKKyAgICBVUkwgb2xkVVJMID0gbV9mcmFtZS5kb2N1bWVudCgp
LnVybCgpOworICAgIG1fZnJhbWUuZG9jdW1lbnQoKS5zZXRVUkwodXJsKTsKICAgICBzZXRPdXRn
b2luZ1JlZmVycmVyKHVybCk7CiAgICAgZG9jdW1lbnRMb2FkZXIoKS0+cmVwbGFjZVJlcXVlc3RV
UkxGb3JTYW1lRG9jdW1lbnROYXZpZ2F0aW9uKHVybCk7CiAgICAgaWYgKGlzTmV3TmF2aWdhdGlv
biAmJiAhc2hvdWxkVHJlYXRVUkxBc1NhbWVBc0N1cnJlbnQodXJsKSAmJiAhc3RhdGVPYmplY3Qp
IHsKQEAgLTExMTIsMTEgKzExMTQsMTEgQEAgdm9pZCBGcmFtZUxvYWRlcjo6bG9hZEluU2FtZURv
Y3VtZW50KGNvbnN0IFVSTCYgdXJsLCBQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHQKIAogICAg
IG1fY2xpZW50LmRpc3BhdGNoRGlkTmF2aWdhdGVXaXRoaW5QYWdlKCk7CiAKLSAgICBtX2ZyYW1l
LmRvY3VtZW50KCktPnN0YXRlUG9wcGVkKHN0YXRlT2JqZWN0ID8gc3RhdGVPYmplY3QgOiBTZXJp
YWxpemVkU2NyaXB0VmFsdWU6Om51bGxWYWx1ZSgpKTsKKyAgICBtX2ZyYW1lLmRvY3VtZW50KCku
c3RhdGVQb3BwZWQoc3RhdGVPYmplY3QgPyBzdGF0ZU9iamVjdCA6IFNlcmlhbGl6ZWRTY3JpcHRW
YWx1ZTo6bnVsbFZhbHVlKCkpOwogICAgIG1fY2xpZW50LmRpc3BhdGNoRGlkUG9wU3RhdGVXaXRo
aW5QYWdlKCk7CiAgICAgCiAgICAgaWYgKGhhc2hDaGFuZ2UpIHsKLSAgICAgICAgbV9mcmFtZS5k
b2N1bWVudCgpLT5lbnF1ZXVlSGFzaGNoYW5nZUV2ZW50KG9sZFVSTCwgdXJsKTsKKyAgICAgICAg
bV9mcmFtZS5kb2N1bWVudCgpLmVucXVldWVIYXNoY2hhbmdlRXZlbnQob2xkVVJMLCB1cmwpOwog
ICAgICAgICBtX2NsaWVudC5kaXNwYXRjaERpZENoYW5nZUxvY2F0aW9uV2l0aGluUGFnZSgpOwog
ICAgIH0KICAgICAKQEAgLTExNzcsNyArMTE3OSw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OnByZXBh
cmVGb3JMb2FkU3RhcnQoKQogICAgIG1fY2xpZW50LmRpc3BhdGNoRGlkU3RhcnRQcm92aXNpb25h
bExvYWQoKTsKIAogICAgIGlmIChBWE9iamVjdENhY2hlOjphY2Nlc3NpYmlsaXR5RW5hYmxlZCgp
KSB7Ci0gICAgICAgIGlmIChBWE9iamVjdENhY2hlKiBjYWNoZSA9IG1fZnJhbWUuZG9jdW1lbnQo
KS0+ZXhpc3RpbmdBWE9iamVjdENhY2hlKCkpIHsKKyAgICAgICAgaWYgKEFYT2JqZWN0Q2FjaGUq
IGNhY2hlID0gbV9mcmFtZS5kb2N1bWVudCgpLmV4aXN0aW5nQVhPYmplY3RDYWNoZSgpKSB7CiAg
ICAgICAgICAgICBBWE9iamVjdENhY2hlOjpBWExvYWRpbmdFdmVudCBsb2FkaW5nRXZlbnQgPSBs
b2FkVHlwZSgpID09IEZyYW1lTG9hZFR5cGVSZWxvYWQgPyBBWE9iamVjdENhY2hlOjpBWExvYWRp
bmdSZWxvYWRlZCA6IEFYT2JqZWN0Q2FjaGU6OkFYTG9hZGluZ1N0YXJ0ZWQ7CiAgICAgICAgICAg
ICBjYWNoZS0+ZnJhbWVMb2FkaW5nRXZlbnROb3RpZmljYXRpb24oJm1fZnJhbWUsIGxvYWRpbmdF
dmVudCk7CiAgICAgICAgIH0KQEAgLTEyMTEsNyArMTIxMyw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6
OmxvYWRGcmFtZVJlcXVlc3QoY29uc3QgRnJhbWVMb2FkUmVxdWVzdCYgcmVxdWVzdCwgTG9ja0hp
c3RvcnkKICAgICBpZiAoYXJnc1JlZmVycmVyLmlzRW1wdHkoKSkKICAgICAgICAgYXJnc1JlZmVy
cmVyID0gb3V0Z29pbmdSZWZlcnJlcigpOwogCi0gICAgU3RyaW5nIHJlZmVycmVyID0gU2VjdXJp
dHlQb2xpY3k6OmdlbmVyYXRlUmVmZXJyZXJIZWFkZXIobV9mcmFtZS5kb2N1bWVudCgpLT5yZWZl
cnJlclBvbGljeSgpLCB1cmwsIGFyZ3NSZWZlcnJlcik7CisgICAgU3RyaW5nIHJlZmVycmVyID0g
U2VjdXJpdHlQb2xpY3k6OmdlbmVyYXRlUmVmZXJyZXJIZWFkZXIobV9mcmFtZS5kb2N1bWVudCgp
LnJlZmVycmVyUG9saWN5KCksIHVybCwgYXJnc1JlZmVycmVyKTsKICAgICBpZiAoc2hvdWxkU2Vu
ZFJlZmVycmVyID09IE5ldmVyU2VuZFJlZmVycmVyKQogICAgICAgICByZWZlcnJlciA9IFN0cmlu
ZygpOwogICAgIApAQCAtMTI1Nyw3ICsxMjU5LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6bG9hZFVS
TChjb25zdCBVUkwmIG5ld1VSTCwgY29uc3QgU3RyaW5nJiByZWZlcnJlciwgY29uc3QgU3RyaW4K
ICAgICB9CiAjaWYgRU5BQkxFKENBQ0hFX1BBUlRJVElPTklORykKICAgICBpZiAoJm1fZnJhbWUu
dHJlZSgpLnRvcCgpICE9ICZtX2ZyYW1lKQotICAgICAgICByZXF1ZXN0LnNldENhY2hlUGFydGl0
aW9uKG1fZnJhbWUudHJlZSgpLnRvcCgpLmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCktPmNh
Y2hlUGFydGl0aW9uKCkpOworICAgICAgICByZXF1ZXN0LnNldENhY2hlUGFydGl0aW9uKG1fZnJh
bWUudHJlZSgpLnRvcCgpLmRvY3VtZW50KCkuc2VjdXJpdHlPcmlnaW4oKS0+Y2FjaGVQYXJ0aXRp
b24oKSk7CiAjZW5kaWYKICAgICBhZGRFeHRyYUZpZWxkc1RvUmVxdWVzdChyZXF1ZXN0LCBuZXdM
b2FkVHlwZSwgdHJ1ZSk7CiAgICAgaWYgKG5ld0xvYWRUeXBlID09IEZyYW1lTG9hZFR5cGVSZWxv
YWQgfHwgbmV3TG9hZFR5cGUgPT0gRnJhbWVMb2FkVHlwZVJlbG9hZEZyb21PcmlnaW4pCkBAIC0x
NDI3LDcgKzE0MjksNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpsb2FkV2l0aERvY3VtZW50TG9hZGVy
KERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIEZyYW1lTG9hZFR5cGUgdAogICAgICAgICByZXR1cm47
CiAKICAgICBpZiAobV9mcmFtZS5kb2N1bWVudCgpKQotICAgICAgICBtX3ByZXZpb3VzVVJMID0g
bV9mcmFtZS5kb2N1bWVudCgpLT51cmwoKTsKKyAgICAgICAgbV9wcmV2aW91c1VSTCA9IG1fZnJh
bWUuZG9jdW1lbnQoKS51cmwoKTsKIAogICAgIHBvbGljeUNoZWNrZXIoKS5zZXRMb2FkVHlwZSh0
eXBlKTsKICAgICBSZWZQdHI8Rm9ybVN0YXRlPiBmb3JtU3RhdGUgPSBwcnBGb3JtU3RhdGU7CkBA
IC0xNDgxLDcgKzE0ODMsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpyZXBvcnRMb2NhbExvYWRGYWls
ZWQoRnJhbWUqIGZyYW1lLCBjb25zdCBTdHJpbmcmIHVybCkKICAgICBpZiAoIWZyYW1lKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBmcmFtZS0+ZG9jdW1lbnQoKS0+YWRkQ29uc29sZU1lc3NhZ2Uo
TWVzc2FnZVNvdXJjZTo6U2VjdXJpdHksIE1lc3NhZ2VMZXZlbDo6RXJyb3IsICJOb3QgYWxsb3dl
ZCB0byBsb2FkIGxvY2FsIHJlc291cmNlOiAiICsgdXJsKTsKKyAgICBmcmFtZS0+ZG9jdW1lbnQo
KS5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpTZWN1cml0eSwgTWVzc2FnZUxldmVs
OjpFcnJvciwgIk5vdCBhbGxvd2VkIHRvIGxvYWQgbG9jYWwgcmVzb3VyY2U6ICIgKyB1cmwpOwog
fQogCiBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIEZyYW1lTG9hZGVyOjppbml0aWFsUmVxdWVzdCgp
IGNvbnN0CkBAIC0xNTkyLDcgKzE1OTQsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpyZWxvYWQoYm9v
bCBlbmRUb0VuZFJlbG9hZCkKIAogdm9pZCBGcmFtZUxvYWRlcjo6c3RvcEFsbExvYWRlcnMoQ2xl
YXJQcm92aXNpb25hbEl0ZW1Qb2xpY3kgY2xlYXJQcm92aXNpb25hbEl0ZW1Qb2xpY3kpCiB7Ci0g
ICAgQVNTRVJUKCFtX2ZyYW1lLmRvY3VtZW50KCkgfHwgIW1fZnJhbWUuZG9jdW1lbnQoKS0+aW5Q
YWdlQ2FjaGUoKSk7CisgICAgQVNTRVJUKCFtX2ZyYW1lLmRvY3VtZW50KCkgfHwgIW1fZnJhbWUu
ZG9jdW1lbnQoKS5pblBhZ2VDYWNoZSgpKTsKICAgICBpZiAobV9wYWdlRGlzbWlzc2FsRXZlbnRC
ZWluZ0Rpc3BhdGNoZWQgIT0gTm9EaXNtaXNzYWwpCiAgICAgICAgIHJldHVybjsKIApAQCAtMTc0
OCw3ICsxNzUwLDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6Y29tbWl0UHJvdmlzaW9uYWxMb2FkKCkK
ICAgICAgICAgY2FjaGVkUGFnZSA9IHBhZ2VDYWNoZSgpLT50YWtlKGhpc3RvcnkoKS5wcm92aXNp
b25hbEl0ZW0oKSk7CiAKICAgICBMT0coUGFnZUNhY2hlLCAiV2ViQ29yZUxvYWRpbmcgJXM6IEFi
b3V0IHRvIGNvbW1pdCBwcm92aXNpb25hbCBsb2FkIGZyb20gcHJldmlvdXMgVVJMICclcycgdG8g
bmV3IFVSTCAnJXMnIiwgbV9mcmFtZS50cmVlKCkudW5pcXVlTmFtZSgpLnN0cmluZygpLnV0Zjgo
KS5kYXRhKCksCi0gICAgICAgIG1fZnJhbWUuZG9jdW1lbnQoKSA/IG1fZnJhbWUuZG9jdW1lbnQo
KS0+dXJsKCkuc3RyaW5nQ2VudGVyRWxsaXBzaXplZFRvTGVuZ3RoKCkudXRmOCgpLmRhdGEoKSA6
ICIiLAorICAgICAgICBtX2ZyYW1lLmRvY3VtZW50KCkgPyBtX2ZyYW1lLmRvY3VtZW50KCkudXJs
KCkuc3RyaW5nQ2VudGVyRWxsaXBzaXplZFRvTGVuZ3RoKCkudXRmOCgpLmRhdGEoKSA6ICIiLAog
ICAgICAgICBwZGwgPyBwZGwtPnVybCgpLnN0cmluZ0NlbnRlckVsbGlwc2l6ZWRUb0xlbmd0aCgp
LnV0ZjgoKS5kYXRhKCkgOiAiPG5vIHByb3Zpc2lvbmFsIERvY3VtZW50TG9hZGVyPiIpOwogCiAj
aWYgUExBVEZPUk0oSU9TKQpAQCAtMTgyNiw3ICsxODI4LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6
Y29tbWl0UHJvdmlzaW9uYWxMb2FkKCkKICAgICAgICAgZGlkT3BlblVSTCgpOwogCiAgICAgTE9H
KExvYWRpbmcsICJXZWJDb3JlTG9hZGluZyAlczogRmluaXNoZWQgY29tbWl0dGluZyBwcm92aXNp
b25hbCBsb2FkIHRvIFVSTCAlcyIsIG1fZnJhbWUudHJlZSgpLnVuaXF1ZU5hbWUoKS5zdHJpbmco
KS51dGY4KCkuZGF0YSgpLAotICAgICAgICBtX2ZyYW1lLmRvY3VtZW50KCkgPyBtX2ZyYW1lLmRv
Y3VtZW50KCktPnVybCgpLnN0cmluZ0NlbnRlckVsbGlwc2l6ZWRUb0xlbmd0aCgpLnV0ZjgoKS5k
YXRhKCkgOiAiIik7CisgICAgICAgIG1fZnJhbWUuZG9jdW1lbnQoKSA/IG1fZnJhbWUuZG9jdW1l
bnQoKS51cmwoKS5zdHJpbmdDZW50ZXJFbGxpcHNpemVkVG9MZW5ndGgoKS51dGY4KCkuZGF0YSgp
IDogIiIpOwogCiAgICAgaWYgKG1fbG9hZFR5cGUgPT0gRnJhbWVMb2FkVHlwZVN0YW5kYXJkICYm
IG1fZG9jdW1lbnRMb2FkZXItPmlzQ2xpZW50UmVkaXJlY3QoKSkKICAgICAgICAgaGlzdG9yeSgp
LnVwZGF0ZUZvckNsaWVudFJlZGlyZWN0KCk7CkBAIC0xODM0LDEwICsxODM2LDEwIEBAIHZvaWQg
RnJhbWVMb2FkZXI6OmNvbW1pdFByb3Zpc2lvbmFsTG9hZCgpCiAgICAgaWYgKG1fbG9hZGluZ0Zy
b21DYWNoZWRQYWdlKSB7CiAjaWYgUExBVEZPUk0oSU9TKQogICAgICAgICAvLyBOb3RlLCBkaWRS
ZWNlaXZlRG9jVHlwZSBpcyBleHBlY3RlZCB0byBiZSBjYWxsZWQgZm9yIGNhY2hlZCBwYWdlcy4g
U2VlIDxyZGFyOi8vcHJvYmxlbS81OTA2NzU4PiBmb3IgbW9yZSBkZXRhaWxzLgotICAgICAgICBp
ZiAobV9mcmFtZS5kb2N1bWVudCgpLT5kb2N0eXBlKCkgJiYgbV9mcmFtZS5wYWdlKCkpCisgICAg
ICAgIGlmIChtX2ZyYW1lLmRvY3VtZW50KCkuZG9jdHlwZSgpICYmIG1fZnJhbWUucGFnZSgpKQog
ICAgICAgICAgICAgbV9mcmFtZS5wYWdlKCktPmNocm9tZSgpLmRpZFJlY2VpdmVEb2NUeXBlKCZt
X2ZyYW1lKTsKICNlbmRpZgotICAgICAgICBtX2ZyYW1lLmRvY3VtZW50KCktPmRvY3VtZW50RGlk
UmVzdW1lRnJvbVBhZ2VDYWNoZSgpOworICAgICAgICBtX2ZyYW1lLmRvY3VtZW50KCkuZG9jdW1l
bnREaWRSZXN1bWVGcm9tUGFnZUNhY2hlKCk7CiAKICAgICAgICAgLy8gRm9yY2UgYSBsYXlvdXQg
dG8gdXBkYXRlIHZpZXcgc2l6ZSBhbmQgdGhlcmVieSB1cGRhdGUgc2Nyb2xsYmFycy4KICNpZiBQ
TEFURk9STShJT1MpCkBAIC0yMDQ3LDcgKzIwNDksNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpwcmVw
YXJlRm9yQ2FjaGVkUGFnZVJlc3RvcmUoKQogICAgIAogICAgIC8vIERlbGV0ZSBvbGQgc3RhdHVz
IGJhciBtZXNzYWdlcyAoaWYgaXQgX3dhc18gYWN0aXZhdGVkIG9uIGxhc3QgVVJMKS4KICAgICBp
ZiAobV9mcmFtZS5zY3JpcHQoKS5jYW5FeGVjdXRlU2NyaXB0cyhOb3RBYm91dFRvRXhlY3V0ZVNj
cmlwdCkpIHsKLSAgICAgICAgRE9NV2luZG93KiB3aW5kb3cgPSBtX2ZyYW1lLmRvY3VtZW50KCkt
PmRvbVdpbmRvdygpOworICAgICAgICBET01XaW5kb3cqIHdpbmRvdyA9IG1fZnJhbWUuZG9jdW1l
bnQoKS5kb21XaW5kb3coKTsKICAgICAgICAgd2luZG93LT5zZXRTdGF0dXMoU3RyaW5nKCkpOwog
ICAgICAgICB3aW5kb3ctPnNldERlZmF1bHRTdGF0dXMoU3RyaW5nKCkpOwogICAgIH0KQEAgLTIy
NjgsNyArMjI3MCw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6OmNoZWNrTG9hZENvbXBsZXRlRm9yVGhp
c0ZyYW1lKCkKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgLy8gTm90aWZ5IGFjY2Vzc2li
aWxpdHkuCi0gICAgICAgICAgICBpZiAoQVhPYmplY3RDYWNoZSogY2FjaGUgPSBtX2ZyYW1lLmRv
Y3VtZW50KCktPmV4aXN0aW5nQVhPYmplY3RDYWNoZSgpKQorICAgICAgICAgICAgaWYgKEFYT2Jq
ZWN0Q2FjaGUqIGNhY2hlID0gbV9mcmFtZS5kb2N1bWVudCgpLmV4aXN0aW5nQVhPYmplY3RDYWNo
ZSgpKQogICAgICAgICAgICAgICAgIGNhY2hlLT5mcmFtZUxvYWRpbmdFdmVudE5vdGlmaWNhdGlv
bigmbV9mcmFtZSwgbG9hZGluZ0V2ZW50KTsKIAogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMjMw
NSw3ICsyMzA3LDcgQEAgdm9pZCBGcmFtZUxvYWRlcjo6Y29udGludWVMb2FkQWZ0ZXJXaWxsU3Vi
bWl0Rm9ybSgpCiAKIHN0YXRpYyBVUkwgb3JpZ2luYXRpbmdVUkxGcm9tQmFja0ZvcndhcmRMaXN0
KFBhZ2UqIHBhZ2UpCiB7Ci0gICAgLy8gRklYTUU6IENhbiB0aGlzIGxvZ2ljIGJlIHJlcGxhY2Vk
IHdpdGggbV9mcmFtZS5kb2N1bWVudCgpLT5maXJzdFBhcnR5Rm9yQ29va2llcygpPworICAgIC8v
IEZJWE1FOiBDYW4gdGhpcyBsb2dpYyBiZSByZXBsYWNlZCB3aXRoIG1fZnJhbWUuZG9jdW1lbnQo
KS5maXJzdFBhcnR5Rm9yQ29va2llcygpPwogICAgIC8vIEl0IGhhcyB0aGUgc2FtZSBtZWFuaW5n
IG9mICJwYWdlIGEgdXNlciB0aGlua3MgaXMgdGhlIGN1cnJlbnQgb25lIi4KIAogICAgIFVSTCBv
cmlnaW5hbFVSTDsKQEAgLTI0NDEsMTEgKzI0NDMsMTEgQEAgdm9pZCBGcmFtZUxvYWRlcjo6Y2hl
Y2tMb2FkQ29tcGxldGUoKQogaW50IEZyYW1lTG9hZGVyOjpudW1QZW5kaW5nT3JMb2FkaW5nUmVx
dWVzdHMoYm9vbCByZWN1cnNlKSBjb25zdAogewogICAgIGlmICghcmVjdXJzZSkKLSAgICAgICAg
cmV0dXJuIG1fZnJhbWUuZG9jdW1lbnQoKS0+Y2FjaGVkUmVzb3VyY2VMb2FkZXIoKS0+cmVxdWVz
dENvdW50KCk7CisgICAgICAgIHJldHVybiBtX2ZyYW1lLmRvY3VtZW50KCkuY2FjaGVkUmVzb3Vy
Y2VMb2FkZXIoKS0+cmVxdWVzdENvdW50KCk7CiAKICAgICBpbnQgY291bnQgPSAwOwogICAgIGZv
ciAoRnJhbWUqIGZyYW1lID0gJm1fZnJhbWU7IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50cmVlKCku
dHJhdmVyc2VOZXh0KCZtX2ZyYW1lKSkKLSAgICAgICAgY291bnQgKz0gZnJhbWUtPmRvY3VtZW50
KCktPmNhY2hlZFJlc291cmNlTG9hZGVyKCktPnJlcXVlc3RDb3VudCgpOworICAgICAgICBjb3Vu
dCArPSBmcmFtZS0+ZG9jdW1lbnQoKS5jYWNoZWRSZXNvdXJjZUxvYWRlcigpLT5yZXF1ZXN0Q291
bnQoKTsKICAgICByZXR1cm4gY291bnQ7CiB9CiAKQEAgLTI0NjUsNyArMjQ2Nyw3IEBAIHZvaWQg
RnJhbWVMb2FkZXI6OmhhbmRsZWRPbmxvYWRFdmVudHMoKQogdm9pZCBGcmFtZUxvYWRlcjo6ZnJh
bWVEZXRhY2hlZCgpCiB7CiAgICAgc3RvcEFsbExvYWRlcnMoKTsKLSAgICBtX2ZyYW1lLmRvY3Vt
ZW50KCktPnN0b3BBY3RpdmVET01PYmplY3RzKCk7CisgICAgbV9mcmFtZS5kb2N1bWVudCgpLnN0
b3BBY3RpdmVET01PYmplY3RzKCk7CiAgICAgZGV0YWNoRnJvbVBhcmVudCgpOwogfQogCkBAIC0y
NTc1LDcgKzI1NzcsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjphZGRFeHRyYUZpZWxkc1RvUmVxdWVz
dChSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsIEZyYW1lTG9hZFR5cAogICAgIC8vIE9ubHkgc2V0
IGZhbGxiYWNrIGFycmF5IGlmIGl0J3Mgc3RpbGwgZW1wdHkgKGxhdGVyIGF0dGVtcHRzIG1heSBi
ZSBpbmNvcnJlY3QsIHNlZSBidWcgMTE3ODE4KS4KICAgICBpZiAocmVxdWVzdC5yZXNwb25zZUNv
bnRlbnREaXNwb3NpdGlvbkVuY29kaW5nRmFsbGJhY2tBcnJheSgpLmlzRW1wdHkoKSkgewogICAg
ICAgICAvLyBBbHdheXMgdHJ5IFVURi04LiBJZiB0aGF0IGZhaWxzLCB0cnkgZnJhbWUgZW5jb2Rp
bmcgKGlmIGFueSkgYW5kIHRoZW4gdGhlIGRlZmF1bHQuCi0gICAgICAgIHJlcXVlc3Quc2V0UmVz
cG9uc2VDb250ZW50RGlzcG9zaXRpb25FbmNvZGluZ0ZhbGxiYWNrQXJyYXkoIlVURi04IiwgbV9m
cmFtZS5kb2N1bWVudCgpLT5lbmNvZGluZygpLCBtX2ZyYW1lLnNldHRpbmdzKCkuZGVmYXVsdFRl
eHRFbmNvZGluZ05hbWUoKSk7CisgICAgICAgIHJlcXVlc3Quc2V0UmVzcG9uc2VDb250ZW50RGlz
cG9zaXRpb25FbmNvZGluZ0ZhbGxiYWNrQXJyYXkoIlVURi04IiwgbV9mcmFtZS5kb2N1bWVudCgp
LmVuY29kaW5nKCksIG1fZnJhbWUuc2V0dGluZ3MoKS5kZWZhdWx0VGV4dEVuY29kaW5nTmFtZSgp
KTsKICAgICB9CiB9CiAKQEAgLTI2NTcsNyArMjY1OSw3IEBAIHZvaWQgRnJhbWVMb2FkZXI6Omxv
YWRQb3N0UmVxdWVzdChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIGluUmVxdWVzdCwgY29uc3QgU3Ry
aW5nCiB1bnNpZ25lZCBsb25nIEZyYW1lTG9hZGVyOjpsb2FkUmVzb3VyY2VTeW5jaHJvbm91c2x5
KGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgU3RvcmVkQ3JlZGVudGlhbHMgc3RvcmVk
Q3JlZGVudGlhbHMsIENsaWVudENyZWRlbnRpYWxQb2xpY3kgY2xpZW50Q3JlZGVudGlhbFBvbGlj
eSwgUmVzb3VyY2VFcnJvciYgZXJyb3IsIFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBWZWN0
b3I8Y2hhcj4mIGRhdGEpCiB7CiAgICAgQVNTRVJUKG1fZnJhbWUuZG9jdW1lbnQoKSk7Ci0gICAg
U3RyaW5nIHJlZmVycmVyID0gU2VjdXJpdHlQb2xpY3k6OmdlbmVyYXRlUmVmZXJyZXJIZWFkZXIo
bV9mcmFtZS5kb2N1bWVudCgpLT5yZWZlcnJlclBvbGljeSgpLCByZXF1ZXN0LnVybCgpLCBvdXRn
b2luZ1JlZmVycmVyKCkpOworICAgIFN0cmluZyByZWZlcnJlciA9IFNlY3VyaXR5UG9saWN5Ojpn
ZW5lcmF0ZVJlZmVycmVySGVhZGVyKG1fZnJhbWUuZG9jdW1lbnQoKS5yZWZlcnJlclBvbGljeSgp
LCByZXF1ZXN0LnVybCgpLCBvdXRnb2luZ1JlZmVycmVyKCkpOwogICAgIAogICAgIFJlc291cmNl
UmVxdWVzdCBpbml0aWFsUmVxdWVzdCA9IHJlcXVlc3Q7CiAgICAgaW5pdGlhbFJlcXVlc3Quc2V0
VGltZW91dEludGVydmFsKDEwKTsKQEAgLTI3NTUsMTAgKzI3NTcsMTAgQEAgYm9vbCBGcmFtZUxv
YWRlcjo6c2hvdWxkUGVyZm9ybUZyYWdtZW50TmF2aWdhdGlvbihib29sIGlzRm9ybVN1Ym1pc3Np
b24sIGNvbnN0IFMKICAgICAgICAgJiYgbG9hZFR5cGUgIT0gRnJhbWVMb2FkVHlwZVJlbG9hZAog
ICAgICAgICAmJiBsb2FkVHlwZSAhPSBGcmFtZUxvYWRUeXBlUmVsb2FkRnJvbU9yaWdpbgogICAg
ICAgICAmJiBsb2FkVHlwZSAhPSBGcmFtZUxvYWRUeXBlU2FtZQotICAgICAgICAmJiAhc2hvdWxk
UmVsb2FkKG1fZnJhbWUuZG9jdW1lbnQoKS0+dXJsKCksIHVybCkKKyAgICAgICAgJiYgIXNob3Vs
ZFJlbG9hZChtX2ZyYW1lLmRvY3VtZW50KCkudXJsKCksIHVybCkKICAgICAgICAgLy8gV2UgZG9u
J3Qgd2FudCB0byBqdXN0IHNjcm9sbCBpZiBhIGxpbmsgZnJvbSB3aXRoaW4gYQogICAgICAgICAv
LyBmcmFtZXNldCBpcyB0cnlpbmcgdG8gcmVsb2FkIHRoZSBmcmFtZXNldCBpbnRvIF90b3AuCi0g
ICAgICAgICYmICFtX2ZyYW1lLmRvY3VtZW50KCktPmlzRnJhbWVTZXQoKTsKKyAgICAgICAgJiYg
IW1fZnJhbWUuZG9jdW1lbnQoKS5pc0ZyYW1lU2V0KCk7CiB9CiAKIHZvaWQgRnJhbWVMb2FkZXI6
OnNjcm9sbFRvRnJhZ21lbnRXaXRoUGFyZW50Qm91bmRhcnkoY29uc3QgVVJMJiB1cmwpCkBAIC0y
NzY4LDcgKzI3NzAsNyBAQCB2b2lkIEZyYW1lTG9hZGVyOjpzY3JvbGxUb0ZyYWdtZW50V2l0aFBh
cmVudEJvdW5kYXJ5KGNvbnN0IFVSTCYgdXJsKQogICAgICAgICByZXR1cm47CiAKICAgICAvLyBM
ZWFraW5nIHNjcm9sbCBwb3NpdGlvbiB0byBhIGNyb3NzLW9yaWdpbiBhbmNlc3RvciB3b3VsZCBw
ZXJtaXQgdGhlIHNvLWNhbGxlZCAiZnJhbWVzbmlmZmluZyIgYXR0YWNrLgotICAgIFJlZlB0cjxG
cmFtZT4gYm91bmRhcnlGcmFtZSh1cmwuaGFzRnJhZ21lbnRJZGVudGlmaWVyKCkgPyBtX2ZyYW1l
LmRvY3VtZW50KCktPmZpbmRVbnNhZmVQYXJlbnRTY3JvbGxQcm9wYWdhdGlvbkJvdW5kYXJ5KCkg
OiAwKTsKKyAgICBSZWZQdHI8RnJhbWU+IGJvdW5kYXJ5RnJhbWUodXJsLmhhc0ZyYWdtZW50SWRl
bnRpZmllcigpID8gbV9mcmFtZS5kb2N1bWVudCgpLmZpbmRVbnNhZmVQYXJlbnRTY3JvbGxQcm9w
YWdhdGlvbkJvdW5kYXJ5KCkgOiAwKTsKIAogICAgIGlmIChib3VuZGFyeUZyYW1lKQogICAgICAg
ICBib3VuZGFyeUZyYW1lLT52aWV3KCktPnNldFNhZmVUb1Byb3BhZ2F0ZVNjcm9sbFRvUGFyZW50
KGZhbHNlKTsKQEAgLTI4MTgsNyArMjgyMCw3IEBAIGJvb2wgRnJhbWVMb2FkZXI6OnNob3VsZENs
b3NlKCkKIAogYm9vbCBGcmFtZUxvYWRlcjo6aGFuZGxlQmVmb3JlVW5sb2FkRXZlbnQoQ2hyb21l
JiBjaHJvbWUsIEZyYW1lTG9hZGVyKiBmcmFtZUxvYWRlckJlaW5nTmF2aWdhdGVkKQogewotICAg
IERPTVdpbmRvdyogZG9tV2luZG93ID0gbV9mcmFtZS5kb2N1bWVudCgpLT5kb21XaW5kb3coKTsK
KyAgICBET01XaW5kb3cqIGRvbVdpbmRvdyA9IG1fZnJhbWUuZG9jdW1lbnQoKS5kb21XaW5kb3co
KTsKICAgICBpZiAoIWRvbVdpbmRvdykKICAgICAgICAgcmV0dXJuIHRydWU7CiAKQEAgLTI4NTcs
NyArMjg1OSw3IEBAIGJvb2wgRnJhbWVMb2FkZXI6OmhhbmRsZUJlZm9yZVVubG9hZEV2ZW50KENo
cm9tZSYgY2hyb21lLCBGcmFtZUxvYWRlciogZnJhbWVMb2FkCiAgICAgICAgICAgICBEb2N1bWVu
dCogcGFyZW50RG9jdW1lbnQgPSBwYXJlbnRGcmFtZS0+ZG9jdW1lbnQoKTsKICAgICAgICAgICAg
IGlmICghcGFyZW50RG9jdW1lbnQpCiAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAg
ICAgICAgICBpZiAoIW1fZnJhbWUuZG9jdW1lbnQoKSB8fCAhbV9mcmFtZS5kb2N1bWVudCgpLT5z
ZWN1cml0eU9yaWdpbigpLT5jYW5BY2Nlc3MocGFyZW50RG9jdW1lbnQtPnNlY3VyaXR5T3JpZ2lu
KCkpKSB7CisgICAgICAgICAgICBpZiAoIW1fZnJhbWUuZG9jdW1lbnQoKSB8fCAhbV9mcmFtZS5k
b2N1bWVudCgpLnNlY3VyaXR5T3JpZ2luKCktPmNhbkFjY2VzcyhwYXJlbnREb2N1bWVudC0+c2Vj
dXJpdHlPcmlnaW4oKSkpIHsKICAgICAgICAgICAgICAgICBkb2N1bWVudC0+YWRkQ29uc29sZU1l
c3NhZ2UoTWVzc2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIEFTQ0lJTGl0ZXJh
bCgiQmxvY2tlZCBhdHRlbXB0IHRvIHNob3cgYmVmb3JldW5sb2FkIGNvbmZpcm1hdGlvbiBkaWFs
b2cgb24gYmVoYWxmIG9mIGEgZnJhbWUgd2l0aCBkaWZmZXJlbnQgc2VjdXJpdHkgb3JpZ2luLiBQ
cm90b2NvbHMsIGRvbWFpbnMsIGFuZCBwb3J0cyBtdXN0IG1hdGNoLiIpKTsKICAgICAgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgICAgIH0KQEAgLTI5NzEsNyArMjk3Myw3IEBAIHZv
aWQgRnJhbWVMb2FkZXI6OmNvbnRpbnVlTG9hZEFmdGVyTmV3V2luZG93UG9saWN5KGNvbnN0IFJl
c291cmNlUmVxdWVzdCYgcmVxdWVzCiAgICAgbWFpbkZyYW1lLT5sb2FkZXIoKS5tX2NsaWVudC5k
aXNwYXRjaFNob3coKTsKICAgICBpZiAoIW1fc3VwcHJlc3NPcGVuZXJJbk5ld0ZyYW1lKSB7CiAg
ICAgICAgIG1haW5GcmFtZS0+bG9hZGVyKCkuc2V0T3BlbmVyKCZmcmFtZS5nZXQoKSk7Ci0gICAg
ICAgIG1haW5GcmFtZS0+ZG9jdW1lbnQoKS0+c2V0UmVmZXJyZXJQb2xpY3koZnJhbWUtPmRvY3Vt
ZW50KCktPnJlZmVycmVyUG9saWN5KCkpOworICAgICAgICBtYWluRnJhbWUtPmRvY3VtZW50KCku
c2V0UmVmZXJyZXJQb2xpY3koZnJhbWUtPmRvY3VtZW50KCkucmVmZXJyZXJQb2xpY3koKSk7CiAg
ICAgfQogICAgIG1haW5GcmFtZS0+bG9hZGVyKCkubG9hZFdpdGhOYXZpZ2F0aW9uQWN0aW9uKHJl
cXVlc3QsIE5hdmlnYXRpb25BY3Rpb24ocmVxdWVzdCksIExvY2tIaXN0b3J5OjpObywgRnJhbWVM
b2FkVHlwZVN0YW5kYXJkLCBmb3JtU3RhdGUpOwogfQpAQCAtMzA0OCwxMCArMzA1MCwxMCBAQCBi
b29sIEZyYW1lTG9hZGVyOjpzaG91bGRJbnRlcnJ1cHRMb2FkRm9yWEZyYW1lT3B0aW9ucyhjb25z
dCBTdHJpbmcmIGNvbnRlbnQsIGNvbgogICAgIHN3aXRjaCAoZGlzcG9zaXRpb24pIHsKICAgICBj
YXNlIFhGcmFtZU9wdGlvbnNTYW1lT3JpZ2luOiB7CiAgICAgICAgIFJlZlB0cjxTZWN1cml0eU9y
aWdpbj4gb3JpZ2luID0gU2VjdXJpdHlPcmlnaW46OmNyZWF0ZSh1cmwpOwotICAgICAgICBpZiAo
IW9yaWdpbi0+aXNTYW1lU2NoZW1lSG9zdFBvcnQodG9wRnJhbWUuZG9jdW1lbnQoKS0+c2VjdXJp
dHlPcmlnaW4oKSkpCisgICAgICAgIGlmICghb3JpZ2luLT5pc1NhbWVTY2hlbWVIb3N0UG9ydCh0
b3BGcmFtZS5kb2N1bWVudCgpLnNlY3VyaXR5T3JpZ2luKCkpKQogICAgICAgICAgICAgcmV0dXJu
IHRydWU7CiAgICAgICAgIGZvciAoRnJhbWUqIGZyYW1lID0gbV9mcmFtZS50cmVlKCkucGFyZW50
KCk7IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50cmVlKCkucGFyZW50KCkpIHsKLSAgICAgICAgICAg
IGlmICghb3JpZ2luLT5pc1NhbWVTY2hlbWVIb3N0UG9ydChmcmFtZS0+ZG9jdW1lbnQoKS0+c2Vj
dXJpdHlPcmlnaW4oKSkpCisgICAgICAgICAgICBpZiAoIW9yaWdpbi0+aXNTYW1lU2NoZW1lSG9z
dFBvcnQoZnJhbWUtPmRvY3VtZW50KCkuc2VjdXJpdHlPcmlnaW4oKSkpCiAgICAgICAgICAgICAg
ICAgYnJlYWs7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMzA2MSwxMCAr
MzA2MywxMCBAQCBib29sIEZyYW1lTG9hZGVyOjpzaG91bGRJbnRlcnJ1cHRMb2FkRm9yWEZyYW1l
T3B0aW9ucyhjb25zdCBTdHJpbmcmIGNvbnRlbnQsIGNvbgogICAgIGNhc2UgWEZyYW1lT3B0aW9u
c0FsbG93QWxsOgogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgY2FzZSBYRnJhbWVPcHRpb25z
Q29uZmxpY3Q6Ci0gICAgICAgIG1fZnJhbWUuZG9jdW1lbnQoKS0+YWRkQ29uc29sZU1lc3NhZ2Uo
TWVzc2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VMZXZlbDo6RXJyb3IsICJNdWx0aXBsZSAnWC1GcmFt
ZS1PcHRpb25zJyBoZWFkZXJzIHdpdGggY29uZmxpY3RpbmcgdmFsdWVzICgnIiArIGNvbnRlbnQg
KyAiJykgZW5jb3VudGVyZWQgd2hlbiBsb2FkaW5nICciICsgdXJsLnN0cmluZ0NlbnRlckVsbGlw
c2l6ZWRUb0xlbmd0aCgpICsgIicuIEZhbGxpbmcgYmFjayB0byAnREVOWScuIiwgcmVxdWVzdElk
ZW50aWZpZXIpOworICAgICAgICBtX2ZyYW1lLmRvY3VtZW50KCkuYWRkQ29uc29sZU1lc3NhZ2Uo
TWVzc2FnZVNvdXJjZTo6SlMsIE1lc3NhZ2VMZXZlbDo6RXJyb3IsICJNdWx0aXBsZSAnWC1GcmFt
ZS1PcHRpb25zJyBoZWFkZXJzIHdpdGggY29uZmxpY3RpbmcgdmFsdWVzICgnIiArIGNvbnRlbnQg
KyAiJykgZW5jb3VudGVyZWQgd2hlbiBsb2FkaW5nICciICsgdXJsLnN0cmluZ0NlbnRlckVsbGlw
c2l6ZWRUb0xlbmd0aCgpICsgIicuIEZhbGxpbmcgYmFjayB0byAnREVOWScuIiwgcmVxdWVzdElk
ZW50aWZpZXIpOwogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICBjYXNlIFhGcmFtZU9wdGlvbnNJ
bnZhbGlkOgotICAgICAgICBtX2ZyYW1lLmRvY3VtZW50KCktPmFkZENvbnNvbGVNZXNzYWdlKE1l
c3NhZ2VTb3VyY2U6OkpTLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCAiSW52YWxpZCAnWC1GcmFtZS1P
cHRpb25zJyBoZWFkZXIgZW5jb3VudGVyZWQgd2hlbiBsb2FkaW5nICciICsgdXJsLnN0cmluZ0Nl
bnRlckVsbGlwc2l6ZWRUb0xlbmd0aCgpICsgIic6ICciICsgY29udGVudCArICInIGlzIG5vdCBh
IHJlY29nbml6ZWQgZGlyZWN0aXZlLiBUaGUgaGVhZGVyIHdpbGwgYmUgaWdub3JlZC4iLCByZXF1
ZXN0SWRlbnRpZmllcik7CisgICAgICAgIG1fZnJhbWUuZG9jdW1lbnQoKS5hZGRDb25zb2xlTWVz
c2FnZShNZXNzYWdlU291cmNlOjpKUywgTWVzc2FnZUxldmVsOjpFcnJvciwgIkludmFsaWQgJ1gt
RnJhbWUtT3B0aW9ucycgaGVhZGVyIGVuY291bnRlcmVkIHdoZW4gbG9hZGluZyAnIiArIHVybC5z
dHJpbmdDZW50ZXJFbGxpcHNpemVkVG9MZW5ndGgoKSArICInOiAnIiArIGNvbnRlbnQgKyAiJyBp
cyBub3QgYSByZWNvZ25pemVkIGRpcmVjdGl2ZS4gVGhlIGhlYWRlciB3aWxsIGJlIGlnbm9yZWQu
IiwgcmVxdWVzdElkZW50aWZpZXIpOwogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgY2FzZSBY
RnJhbWVPcHRpb25zTm9uZToKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMzMxNiw3ICszMzE4
LDcgQEAgU2FuZGJveEZsYWdzIEZyYW1lTG9hZGVyOjplZmZlY3RpdmVTYW5kYm94RmxhZ3MoKSBj
b25zdAogewogICAgIFNhbmRib3hGbGFncyBmbGFncyA9IG1fZm9yY2VkU2FuZGJveEZsYWdzOwog
ICAgIGlmIChGcmFtZSogcGFyZW50RnJhbWUgPSBtX2ZyYW1lLnRyZWUoKS5wYXJlbnQoKSkKLSAg
ICAgICAgZmxhZ3MgfD0gcGFyZW50RnJhbWUtPmRvY3VtZW50KCktPnNhbmRib3hGbGFncygpOwor
ICAgICAgICBmbGFncyB8PSBwYXJlbnRGcmFtZS0+ZG9jdW1lbnQoKS5zYW5kYm94RmxhZ3MoKTsK
ICAgICBpZiAoSFRNTEZyYW1lT3duZXJFbGVtZW50KiBvd25lckVsZW1lbnQgPSBtX2ZyYW1lLm93
bmVyRWxlbWVudCgpKQogICAgICAgICBmbGFncyB8PSBvd25lckVsZW1lbnQtPnNhbmRib3hGbGFn
cygpOwogICAgIHJldHVybiBmbGFnczsKQEAgLTM0MzYsMTMgKzM0MzgsMTMgQEAgUGFzc1JlZlB0
cjxGcmFtZT4gY3JlYXRlV2luZG93KEZyYW1lKiBvcGVuZXJGcmFtZSwgRnJhbWUqIGxvb2t1cEZy
YW1lLCBjb25zdCBGcmEKICAgICAvLyBTYW5kYm94ZWQgZnJhbWVzIGNhbm5vdCBvcGVuIG5ldyBh
dXhpbGlhcnkgYnJvd3NpbmcgY29udGV4dHMuCiAgICAgaWYgKGlzRG9jdW1lbnRTYW5kYm94ZWQo
b3BlbmVyRnJhbWUsIFNhbmRib3hQb3B1cHMpKSB7CiAgICAgICAgIC8vIEZJWE1FOiBUaGlzIG1l
c3NhZ2Ugc2hvdWxkIGJlIG1vdmVkIG9mZiB0aGUgY29uc29sZSBvbmNlIGEgc29sdXRpb24gdG8g
aHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMzI3NCBleGlzdHMuCi0g
ICAgICAgIG9wZW5lckZyYW1lLT5kb2N1bWVudCgpLT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdl
U291cmNlOjpTZWN1cml0eSwgTWVzc2FnZUxldmVsOjpFcnJvciwgIkJsb2NrZWQgb3BlbmluZyAn
IiArIHJlcXVlc3QucmVzb3VyY2VSZXF1ZXN0KCkudXJsKCkuc3RyaW5nQ2VudGVyRWxsaXBzaXpl
ZFRvTGVuZ3RoKCkgKyAiJyBpbiBhIG5ldyB3aW5kb3cgYmVjYXVzZSB0aGUgcmVxdWVzdCB3YXMg
bWFkZSBpbiBhIHNhbmRib3hlZCBmcmFtZSB3aG9zZSAnYWxsb3ctcG9wdXBzJyBwZXJtaXNzaW9u
IGlzIG5vdCBzZXQuIik7CisgICAgICAgIG9wZW5lckZyYW1lLT5kb2N1bWVudCgpLmFkZENvbnNv
bGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OlNlY3VyaXR5LCBNZXNzYWdlTGV2ZWw6OkVycm9yLCAi
QmxvY2tlZCBvcGVuaW5nICciICsgcmVxdWVzdC5yZXNvdXJjZVJlcXVlc3QoKS51cmwoKS5zdHJp
bmdDZW50ZXJFbGxpcHNpemVkVG9MZW5ndGgoKSArICInIGluIGEgbmV3IHdpbmRvdyBiZWNhdXNl
IHRoZSByZXF1ZXN0IHdhcyBtYWRlIGluIGEgc2FuZGJveGVkIGZyYW1lIHdob3NlICdhbGxvdy1w
b3B1cHMnIHBlcm1pc3Npb24gaXMgbm90IHNldC4iKTsKICAgICAgICAgcmV0dXJuIDA7CiAgICAg
fQogCiAgICAgLy8gRklYTUU6IFNldHRpbmcgdGhlIHJlZmVycmVyIHNob3VsZCBiZSB0aGUgY2Fs
bGVyJ3MgcmVzcG9uc2liaWxpdHkuCiAgICAgRnJhbWVMb2FkUmVxdWVzdCByZXF1ZXN0V2l0aFJl
ZmVycmVyID0gcmVxdWVzdDsKLSAgICBTdHJpbmcgcmVmZXJyZXIgPSBTZWN1cml0eVBvbGljeTo6
Z2VuZXJhdGVSZWZlcnJlckhlYWRlcihvcGVuZXJGcmFtZS0+ZG9jdW1lbnQoKS0+cmVmZXJyZXJQ
b2xpY3koKSwgcmVxdWVzdC5yZXNvdXJjZVJlcXVlc3QoKS51cmwoKSwgb3BlbmVyRnJhbWUtPmxv
YWRlcigpLm91dGdvaW5nUmVmZXJyZXIoKSk7CisgICAgU3RyaW5nIHJlZmVycmVyID0gU2VjdXJp
dHlQb2xpY3k6OmdlbmVyYXRlUmVmZXJyZXJIZWFkZXIob3BlbmVyRnJhbWUtPmRvY3VtZW50KCku
cmVmZXJyZXJQb2xpY3koKSwgcmVxdWVzdC5yZXNvdXJjZVJlcXVlc3QoKS51cmwoKSwgb3BlbmVy
RnJhbWUtPmxvYWRlcigpLm91dGdvaW5nUmVmZXJyZXIoKSk7CiAgICAgaWYgKCFyZWZlcnJlci5p
c0VtcHR5KCkpCiAgICAgICAgIHJlcXVlc3RXaXRoUmVmZXJyZXIucmVzb3VyY2VSZXF1ZXN0KCku
c2V0SFRUUFJlZmVycmVyKHJlZmVycmVyKTsKICAgICBGcmFtZUxvYWRlcjo6YWRkSFRUUE9yaWdp
bklmTmVlZGVkKHJlcXVlc3RXaXRoUmVmZXJyZXIucmVzb3VyY2VSZXF1ZXN0KCksIG9wZW5lckZy
YW1lLT5sb2FkZXIoKS5vdXRnb2luZ09yaWdpbigpKTsKQEAgLTM0NTYsNyArMzQ1OCw3IEBAIFBh
c3NSZWZQdHI8RnJhbWU+IGNyZWF0ZVdpbmRvdyhGcmFtZSogb3BlbmVyRnJhbWUsIEZyYW1lKiBs
b29rdXBGcmFtZSwgY29uc3QgRnJhCiAgICAgaWYgKCFwYWdlKQogICAgICAgICByZXR1cm4gMDsK
IAotICAgIHBhZ2UtPm1haW5GcmFtZSgpLmxvYWRlcigpLmZvcmNlU2FuZGJveEZsYWdzKG9wZW5l
ckZyYW1lLT5kb2N1bWVudCgpLT5zYW5kYm94RmxhZ3MoKSk7CisgICAgcGFnZS0+bWFpbkZyYW1l
KCkubG9hZGVyKCkuZm9yY2VTYW5kYm94RmxhZ3Mob3BlbmVyRnJhbWUtPmRvY3VtZW50KCkuc2Fu
ZGJveEZsYWdzKCkpOwogCiAgICAgaWYgKHJlcXVlc3QuZnJhbWVOYW1lKCkgIT0gIl9ibGFuayIp
CiAgICAgICAgIHBhZ2UtPm1haW5GcmFtZSgpLnRyZWUoKS5zZXROYW1lKHJlcXVlc3QuZnJhbWVO
YW1lKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL0ZyYW1lTmV0d29ya2lu
Z0NvbnRleHQuaCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9GcmFtZU5ldHdvcmtpbmdDb250ZXh0
LmgKaW5kZXggNzI0MTVhYi4uNGFiNWY4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9h
ZGVyL0ZyYW1lTmV0d29ya2luZ0NvbnRleHQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
RnJhbWVOZXR3b3JraW5nQ29udGV4dC5oCkBAIC00MCw3ICs0MCw3IEBAIHB1YmxpYzoKICAgICAg
ICAgaWYgKCFtX2ZyYW1lKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAKLSAgICAgICAgcmV0
dXJuIG1fZnJhbWUtPmRvY3VtZW50KCktPnJlZmVycmVyUG9saWN5KCkgPT0gUmVmZXJyZXJQb2xp
Y3lEZWZhdWx0OworICAgICAgICByZXR1cm4gbV9mcmFtZS0+ZG9jdW1lbnQoKS5yZWZlcnJlclBv
bGljeSgpID09IFJlZmVycmVyUG9saWN5RGVmYXVsdDsKICAgICB9CiAKIHByb3RlY3RlZDoKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9IaXN0b3J5Q29udHJvbGxlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvSGlzdG9yeUNvbnRyb2xsZXIuY3BwCmluZGV4IDg0NjJjNWYu
LmU2YzhiODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9IaXN0b3J5Q29udHJv
bGxlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL0hpc3RvcnlDb250cm9sbGVyLmNw
cApAQCAtNzQsNyArNzQsNyBAQCB2b2lkIEhpc3RvcnlDb250cm9sbGVyOjpzYXZlU2Nyb2xsUG9z
aXRpb25BbmRWaWV3U3RhdGVUb0l0ZW0oSGlzdG9yeUl0ZW0qIGl0ZW0pCiAgICAgaWYgKCFpdGVt
IHx8ICFtX2ZyYW1lLnZpZXcoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKG1fZnJhbWUu
ZG9jdW1lbnQoKS0+aW5QYWdlQ2FjaGUoKSkKKyAgICBpZiAobV9mcmFtZS5kb2N1bWVudCgpLmlu
UGFnZUNhY2hlKCkpCiAgICAgICAgIGl0ZW0tPnNldFNjcm9sbFBvaW50KG1fZnJhbWUudmlldygp
LT5jYWNoZWRTY3JvbGxQb3NpdGlvbigpKTsKICAgICBlbHNlCiAgICAgICAgIGl0ZW0tPnNldFNj
cm9sbFBvaW50KG1fZnJhbWUudmlldygpLT5zY3JvbGxQb3NpdGlvbigpKTsKQEAgLTE3NywxMiAr
MTc3LDEyIEBAIHZvaWQgSGlzdG9yeUNvbnRyb2xsZXI6OnNhdmVEb2N1bWVudFN0YXRlKCkKICAg
ICBpZiAoIWl0ZW0pCiAgICAgICAgIHJldHVybjsKIAotICAgIERvY3VtZW50KiBkb2N1bWVudCA9
IG1fZnJhbWUuZG9jdW1lbnQoKTsKKyAgICBEb2N1bWVudCYgZG9jdW1lbnQgPSBtX2ZyYW1lLmRv
Y3VtZW50KCk7CiAgICAgQVNTRVJUKGRvY3VtZW50KTsKICAgICAKLSAgICBpZiAoaXRlbS0+aXND
dXJyZW50RG9jdW1lbnQoZG9jdW1lbnQpICYmIGRvY3VtZW50LT5oYXNMaXZpbmdSZW5kZXJUcmVl
KCkpIHsKKyAgICBpZiAoaXRlbS0+aXNDdXJyZW50RG9jdW1lbnQoJmRvY3VtZW50KSAmJiBkb2N1
bWVudC5oYXNMaXZpbmdSZW5kZXJUcmVlKCkpIHsKICAgICAgICAgTE9HKExvYWRpbmcsICJXZWJD
b3JlTG9hZGluZyAlczogc2F2aW5nIGZvcm0gc3RhdGUgdG8gJXAiLCBtX2ZyYW1lLnRyZWUoKS51
bmlxdWVOYW1lKCkuc3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgaXRlbSk7Ci0gICAgICAgIGl0ZW0t
PnNldERvY3VtZW50U3RhdGUoZG9jdW1lbnQtPmZvcm1FbGVtZW50c1N0YXRlKCkpOworICAgICAg
ICBpdGVtLT5zZXREb2N1bWVudFN0YXRlKGRvY3VtZW50LmZvcm1FbGVtZW50c1N0YXRlKCkpOwog
ICAgIH0KIH0KIApAQCAtMjIxLDcgKzIyMSw3IEBAIHZvaWQgSGlzdG9yeUNvbnRyb2xsZXI6OnJl
c3RvcmVEb2N1bWVudFN0YXRlKCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgTE9HKExvYWRpbmcs
ICJXZWJDb3JlTG9hZGluZyAlczogcmVzdG9yaW5nIGZvcm0gc3RhdGUgZnJvbSAlcCIsIG1fZnJh
bWUudHJlZSgpLnVuaXF1ZU5hbWUoKS5zdHJpbmcoKS51dGY4KCkuZGF0YSgpLCBtX2N1cnJlbnRJ
dGVtLmdldCgpKTsKLSAgICBtX2ZyYW1lLmRvY3VtZW50KCktPnNldFN0YXRlRm9yTmV3Rm9ybUVs
ZW1lbnRzKG1fY3VycmVudEl0ZW0tPmRvY3VtZW50U3RhdGUoKSk7CisgICAgbV9mcmFtZS5kb2N1
bWVudCgpLnNldFN0YXRlRm9yTmV3Rm9ybUVsZW1lbnRzKG1fY3VycmVudEl0ZW0tPmRvY3VtZW50
U3RhdGUoKSk7CiB9CiAKIHZvaWQgSGlzdG9yeUNvbnRyb2xsZXI6OmludmFsaWRhdGVDdXJyZW50
SXRlbUNhY2hlZFBhZ2UoKQpAQCAtMjM2LDggKzIzNiw4IEBAIHZvaWQgSGlzdG9yeUNvbnRyb2xs
ZXI6OmludmFsaWRhdGVDdXJyZW50SXRlbUNhY2hlZFBhZ2UoKQogICAgIC8vIFNvbWVob3cgdGhl
IFBhZ2VTdGF0ZSBvYmplY3QgaXMgbm90IHByb3Blcmx5IHVwZGF0ZWQsIGFuZCBpcyBob2xkaW5n
IG9udG8gYSBzdGFsZSBkb2N1bWVudC4KICAgICAvLyBCb3RoIFhjb2RlIGFuZCBGaWxlTWFrZXIg
c2VlIHRoaXMgY3Jhc2gsIFNhZmFyaSBkb2VzIG5vdC4KICAgICAKLSAgICBBU1NFUlQoY2FjaGVk
UGFnZS0+ZG9jdW1lbnQoKSA9PSBtX2ZyYW1lLmRvY3VtZW50KCkpOwotICAgIGlmIChjYWNoZWRQ
YWdlLT5kb2N1bWVudCgpID09IG1fZnJhbWUuZG9jdW1lbnQoKSkgeworICAgIEFTU0VSVChjYWNo
ZWRQYWdlLT5kb2N1bWVudCgpID09ICZtX2ZyYW1lLmRvY3VtZW50KCkpOworICAgIGlmIChjYWNo
ZWRQYWdlLT5kb2N1bWVudCgpID09ICZtX2ZyYW1lLmRvY3VtZW50KCkpIHsKICAgICAgICAgY2Fj
aGVkUGFnZS0+ZG9jdW1lbnQoKS0+c2V0SW5QYWdlQ2FjaGUoZmFsc2UpOwogICAgICAgICBjYWNo
ZWRQYWdlLT5jbGVhcigpOwogICAgIH0KQEAgLTM3Myw3ICszNzMsNyBAQCB2b2lkIEhpc3RvcnlD
b250cm9sbGVyOjp1cGRhdGVGb3JTdGFuZGFyZExvYWQoSGlzdG9yeVVwZGF0ZVR5cGUgdXBkYXRl
VHlwZSkKICAgICAgICAgaWYgKFBhZ2UqIHBhZ2UgPSBtX2ZyYW1lLnBhZ2UoKSkKICAgICAgICAg
ICAgIGFkZFZpc2l0ZWRMaW5rKCpwYWdlLCBoaXN0b3J5VVJMKTsKIAotICAgICAgICBpZiAoIWZy
YW1lTG9hZGVyLmRvY3VtZW50TG9hZGVyKCktPmRpZENyZWF0ZUdsb2JhbEhpc3RvcnlFbnRyeSgp
ICYmIGZyYW1lTG9hZGVyLmRvY3VtZW50TG9hZGVyKCktPnVucmVhY2hhYmxlVVJMKCkuaXNFbXB0
eSgpICYmICFtX2ZyYW1lLmRvY3VtZW50KCktPnVybCgpLmlzRW1wdHkoKSkKKyAgICAgICAgaWYg
KCFmcmFtZUxvYWRlci5kb2N1bWVudExvYWRlcigpLT5kaWRDcmVhdGVHbG9iYWxIaXN0b3J5RW50
cnkoKSAmJiBmcmFtZUxvYWRlci5kb2N1bWVudExvYWRlcigpLT51bnJlYWNoYWJsZVVSTCgpLmlz
RW1wdHkoKSAmJiAhbV9mcmFtZS5kb2N1bWVudCgpLnVybCgpLmlzRW1wdHkoKSkKICAgICAgICAg
ICAgIGZyYW1lTG9hZGVyLmNsaWVudCgpLnVwZGF0ZUdsb2JhbEhpc3RvcnlSZWRpcmVjdExpbmtz
KCk7CiAgICAgfQogfQpAQCAtNDE0LDcgKzQxNCw3IEBAIHZvaWQgSGlzdG9yeUNvbnRyb2xsZXI6
OnVwZGF0ZUZvclJlZGlyZWN0V2l0aExvY2tlZEJhY2tGb3J3YXJkTGlzdCgpCiAgICAgICAgIGlm
IChQYWdlKiBwYWdlID0gbV9mcmFtZS5wYWdlKCkpCiAgICAgICAgICAgICBhZGRWaXNpdGVkTGlu
aygqcGFnZSwgaGlzdG9yeVVSTCk7CiAKLSAgICAgICAgaWYgKCFtX2ZyYW1lLmxvYWRlcigpLmRv
Y3VtZW50TG9hZGVyKCktPmRpZENyZWF0ZUdsb2JhbEhpc3RvcnlFbnRyeSgpICYmIG1fZnJhbWUu
bG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKS0+dW5yZWFjaGFibGVVUkwoKS5pc0VtcHR5KCkgJiYg
IW1fZnJhbWUuZG9jdW1lbnQoKS0+dXJsKCkuaXNFbXB0eSgpKQorICAgICAgICBpZiAoIW1fZnJh
bWUubG9hZGVyKCkuZG9jdW1lbnRMb2FkZXIoKS0+ZGlkQ3JlYXRlR2xvYmFsSGlzdG9yeUVudHJ5
KCkgJiYgbV9mcmFtZS5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigpLT51bnJlYWNoYWJsZVVSTCgp
LmlzRW1wdHkoKSAmJiAhbV9mcmFtZS5kb2N1bWVudCgpLnVybCgpLmlzRW1wdHkoKSkKICAgICAg
ICAgICAgIG1fZnJhbWUubG9hZGVyKCkuY2xpZW50KCkudXBkYXRlR2xvYmFsSGlzdG9yeVJlZGly
ZWN0TGlua3MoKTsKICAgICB9CiB9CkBAIC01MjAsNyArNTIwLDcgQEAgdm9pZCBIaXN0b3J5Q29u
dHJvbGxlcjo6cmVjdXJzaXZlVXBkYXRlRm9yQ29tbWl0KCkKIAogdm9pZCBIaXN0b3J5Q29udHJv
bGxlcjo6dXBkYXRlRm9yU2FtZURvY3VtZW50TmF2aWdhdGlvbigpCiB7Ci0gICAgaWYgKG1fZnJh
bWUuZG9jdW1lbnQoKS0+dXJsKCkuaXNFbXB0eSgpKQorICAgIGlmIChtX2ZyYW1lLmRvY3VtZW50
KCkudXJsKCkuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAobV9mcmFtZS5w
YWdlKCktPnVzZXNFcGhlbWVyYWxTZXNzaW9uKCkpCkBAIC01MzAsMTEgKzUzMCwxMSBAQCB2b2lk
IEhpc3RvcnlDb250cm9sbGVyOjp1cGRhdGVGb3JTYW1lRG9jdW1lbnROYXZpZ2F0aW9uKCkKICAg
ICBpZiAoIXBhZ2UpCiAgICAgICAgIHJldHVybjsKIAotICAgIGFkZFZpc2l0ZWRMaW5rKCpwYWdl
LCBtX2ZyYW1lLmRvY3VtZW50KCktPnVybCgpKTsKKyAgICBhZGRWaXNpdGVkTGluaygqcGFnZSwg
bV9mcmFtZS5kb2N1bWVudCgpLnVybCgpKTsKICAgICBtX2ZyYW1lLm1haW5GcmFtZSgpLmxvYWRl
cigpLmhpc3RvcnkoKS5yZWN1cnNpdmVVcGRhdGVGb3JTYW1lRG9jdW1lbnROYXZpZ2F0aW9uKCk7
CiAKICAgICBpZiAobV9jdXJyZW50SXRlbSkgewotICAgICAgICBtX2N1cnJlbnRJdGVtLT5zZXRV
UkwobV9mcmFtZS5kb2N1bWVudCgpLT51cmwoKSk7CisgICAgICAgIG1fY3VycmVudEl0ZW0tPnNl
dFVSTChtX2ZyYW1lLmRvY3VtZW50KCkudXJsKCkpOwogICAgICAgICBtX2ZyYW1lLmxvYWRlcigp
LmNsaWVudCgpLnVwZGF0ZUdsb2JhbEhpc3RvcnkoKTsKICAgICB9CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9sb2FkZXIvTWl4ZWRDb250ZW50Q2hlY2tlci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvTWl4ZWRDb250ZW50Q2hlY2tlci5jcHAKaW5kZXggNTYzZjVmNy4uOTk0OTgz
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL01peGVkQ29udGVudENoZWNrZXIu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9NaXhlZENvbnRlbnRDaGVja2VyLmNwcApA
QCAtOTAsOCArOTAsOCBAQCBib29sIE1peGVkQ29udGVudENoZWNrZXI6OmNhblJ1bkluc2VjdXJl
Q29udGVudChTZWN1cml0eU9yaWdpbiogc2VjdXJpdHlPcmlnaW4sCiAKIHZvaWQgTWl4ZWRDb250
ZW50Q2hlY2tlcjo6bG9nV2FybmluZyhib29sIGFsbG93ZWQsIGNvbnN0IFN0cmluZyYgYWN0aW9u
LCBjb25zdCBVUkwmIHRhcmdldCkgY29uc3QKIHsKLSAgICBTdHJpbmcgbWVzc2FnZSA9IG1ha2VT
dHJpbmcoKGFsbG93ZWQgPyAiIiA6ICJbYmxvY2tlZF0gIiksICJUaGUgcGFnZSBhdCAiLCBtX2Zy
YW1lLmRvY3VtZW50KCktPnVybCgpLnN0cmluZ0NlbnRlckVsbGlwc2l6ZWRUb0xlbmd0aCgpLCAi
ICIsIGFjdGlvbiwgIiBpbnNlY3VyZSBjb250ZW50IGZyb20gIiwgdGFyZ2V0LnN0cmluZ0NlbnRl
ckVsbGlwc2l6ZWRUb0xlbmd0aCgpLCAiLlxuIik7Ci0gICAgbV9mcmFtZS5kb2N1bWVudCgpLT5h
ZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpTZWN1cml0eSwgTWVzc2FnZUxldmVsOjpX
YXJuaW5nLCBtZXNzYWdlKTsKKyAgICBTdHJpbmcgbWVzc2FnZSA9IG1ha2VTdHJpbmcoKGFsbG93
ZWQgPyAiIiA6ICJbYmxvY2tlZF0gIiksICJUaGUgcGFnZSBhdCAiLCBtX2ZyYW1lLmRvY3VtZW50
KCkudXJsKCkuc3RyaW5nQ2VudGVyRWxsaXBzaXplZFRvTGVuZ3RoKCksICIgIiwgYWN0aW9uLCAi
IGluc2VjdXJlIGNvbnRlbnQgZnJvbSAiLCB0YXJnZXQuc3RyaW5nQ2VudGVyRWxsaXBzaXplZFRv
TGVuZ3RoKCksICIuXG4iKTsKKyAgICBtX2ZyYW1lLmRvY3VtZW50KCkuYWRkQ29uc29sZU1lc3Nh
Z2UoTWVzc2FnZVNvdXJjZTo6U2VjdXJpdHksIE1lc3NhZ2VMZXZlbDo6V2FybmluZywgbWVzc2Fn
ZSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2xvYWRlci9OYXZpZ2F0aW9uU2NoZWR1bGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9OYXZpZ2F0aW9uU2NoZWR1bGVyLmNwcAppbmRleCBmZjU5NTAwLi45MTVjNDc5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvTmF2aWdhdGlvblNjaGVkdWxlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL05hdmlnYXRpb25TY2hlZHVsZXIuY3BwCkBAIC0xNjMsNyAr
MTYzLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBmaXJlKEZyYW1lJiBmcmFtZSkgb3Zl
cnJpZGUKICAgICB7CiAgICAgICAgIFVzZXJHZXN0dXJlSW5kaWNhdG9yIGdlc3R1cmVJbmRpY2F0
b3Iod2FzVXNlckdlc3R1cmUoKSA/IERlZmluaXRlbHlQcm9jZXNzaW5nVXNlckdlc3R1cmUgOiBE
ZWZpbml0ZWx5Tm90UHJvY2Vzc2luZ1VzZXJHZXN0dXJlKTsKLSAgICAgICAgYm9vbCByZWZyZXNo
ID0gZXF1YWxJZ25vcmluZ0ZyYWdtZW50SWRlbnRpZmllcihmcmFtZS5kb2N1bWVudCgpLT51cmwo
KSwgVVJMKFBhcnNlZFVSTFN0cmluZywgdXJsKCkpKTsKKyAgICAgICAgYm9vbCByZWZyZXNoID0g
ZXF1YWxJZ25vcmluZ0ZyYWdtZW50SWRlbnRpZmllcihmcmFtZS5kb2N1bWVudCgpLnVybCgpLCBV
UkwoUGFyc2VkVVJMU3RyaW5nLCB1cmwoKSkpOwogICAgICAgICBmcmFtZS5sb2FkZXIoKS5jaGFu
Z2VMb2NhdGlvbihzZWN1cml0eU9yaWdpbigpLCBVUkwoUGFyc2VkVVJMU3RyaW5nLCB1cmwoKSks
IHJlZmVycmVyKCksIGxvY2tIaXN0b3J5KCksIGxvY2tCYWNrRm9yd2FyZExpc3QoKSwgcmVmcmVz
aCk7CiAgICAgfQogfTsKQEAgLTIwMyw3ICsyMDMsNyBAQCBwdWJsaWM6CiAgICAgICAgIGlmICgh
bV9oaXN0b3J5U3RlcHMpIHsKICAgICAgICAgICAgIC8vIFNwZWNpYWwgY2FzZSBmb3IgZ28oMCkg
ZnJvbSBhIGZyYW1lIC0+IHJlbG9hZCBvbmx5IHRoZSBmcmFtZQogICAgICAgICAgICAgLy8gVG8g
Zm9sbG93IEZpcmVmb3ggYW5kIElFJ3MgYmVoYXZpb3IsIGhpc3RvcnkgcmVsb2FkIGNhbiBvbmx5
IG5hdmlnYXRlIHRoZSBzZWxmIGZyYW1lLgotICAgICAgICAgICAgZnJhbWUubG9hZGVyKCkudXJs
U2VsZWN0ZWQoZnJhbWUuZG9jdW1lbnQoKS0+dXJsKCksICJfc2VsZiIsIDAsIGxvY2tIaXN0b3J5
KCksIGxvY2tCYWNrRm9yd2FyZExpc3QoKSwgTWF5YmVTZW5kUmVmZXJyZXIpOworICAgICAgICAg
ICAgZnJhbWUubG9hZGVyKCkudXJsU2VsZWN0ZWQoZnJhbWUuZG9jdW1lbnQoKS51cmwoKSwgIl9z
ZWxmIiwgMCwgbG9ja0hpc3RvcnkoKSwgbG9ja0JhY2tGb3J3YXJkTGlzdCgpLCBNYXliZVNlbmRS
ZWZlcnJlcik7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KICAgICAgICAgCkBAIC0z
MjEsNyArMzIxLDcgQEAgdm9pZCBOYXZpZ2F0aW9uU2NoZWR1bGVyOjpzY2hlZHVsZVJlZGlyZWN0
KGRvdWJsZSBkZWxheSwgY29uc3QgU3RyaW5nJiB1cmwpCiAgICAgLy8gV2Ugd2FudCBhIG5ldyBi
YWNrL2ZvcndhcmQgbGlzdCBpdGVtIGlmIHRoZSByZWZyZXNoIHRpbWVvdXQgaXMgPiAxIHNlY29u
ZC4KICAgICBpZiAoIW1fcmVkaXJlY3QgfHwgZGVsYXkgPD0gbV9yZWRpcmVjdC0+ZGVsYXkoKSkg
ewogICAgICAgICBMb2NrQmFja0ZvcndhcmRMaXN0IGxvY2tCYWNrRm9yd2FyZExpc3QgPSBkZWxh
eSA8PSAxID8gTG9ja0JhY2tGb3J3YXJkTGlzdDo6WWVzIDogTG9ja0JhY2tGb3J3YXJkTGlzdDo6
Tm87Ci0gICAgICAgIHNjaGVkdWxlKHN0ZDo6bWFrZV91bmlxdWU8U2NoZWR1bGVkUmVkaXJlY3Q+
KGRlbGF5LCBtX2ZyYW1lLmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCksIHVybCwgTG9ja0hp
c3Rvcnk6OlllcywgbG9ja0JhY2tGb3J3YXJkTGlzdCkpOworICAgICAgICBzY2hlZHVsZShzdGQ6
Om1ha2VfdW5pcXVlPFNjaGVkdWxlZFJlZGlyZWN0PihkZWxheSwgbV9mcmFtZS5kb2N1bWVudCgp
LnNlY3VyaXR5T3JpZ2luKCksIHVybCwgTG9ja0hpc3Rvcnk6OlllcywgbG9ja0JhY2tGb3J3YXJk
TGlzdCkpOwogICAgIH0KIH0KIApAQCAtMzM2LDcgKzMzNiw3IEBAIExvY2tCYWNrRm9yd2FyZExp
c3QgTmF2aWdhdGlvblNjaGVkdWxlcjo6bXVzdExvY2tCYWNrRm9yd2FyZExpc3QoRnJhbWUmIHRh
cmdldEZyCiAgICAgLy8gVGhlIGRlZmluaXRpb24gb2YgImR1cmluZyBsb2FkIiBpcyBhbnkgdGlt
ZSBiZWZvcmUgYWxsIGhhbmRsZXJzIGZvciB0aGUgbG9hZCBldmVudCBoYXZlIGJlZW4gcnVuLgog
ICAgIC8vIFNlZSBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ5NTcg
Zm9yIHRoZSBvcmlnaW5hbCBtb3RpdmF0aW9uIGZvciB0aGlzLgogICAgIGZvciAoRnJhbWUqIGFu
Y2VzdG9yID0gdGFyZ2V0RnJhbWUudHJlZSgpLnBhcmVudCgpOyBhbmNlc3RvcjsgYW5jZXN0b3Ig
PSBhbmNlc3Rvci0+dHJlZSgpLnBhcmVudCgpKSB7Ci0gICAgICAgIERvY3VtZW50KiBkb2N1bWVu
dCA9IGFuY2VzdG9yLT5kb2N1bWVudCgpOworICAgICAgICBEb2N1bWVudCogZG9jdW1lbnQgPSAm
YW5jZXN0b3ItPmRvY3VtZW50KCk7CiAgICAgICAgIGlmICghYW5jZXN0b3ItPmxvYWRlcigpLmlz
Q29tcGxldGUoKSB8fCAoZG9jdW1lbnQgJiYgZG9jdW1lbnQtPnByb2Nlc3NpbmdMb2FkRXZlbnQo
KSkpCiAgICAgICAgICAgICByZXR1cm4gTG9ja0JhY2tGb3J3YXJkTGlzdDo6WWVzOwogICAgIH0K
QEAgLTM1OCw4ICszNTgsOCBAQCB2b2lkIE5hdmlnYXRpb25TY2hlZHVsZXI6OnNjaGVkdWxlTG9j
YXRpb25DaGFuZ2UoU2VjdXJpdHlPcmlnaW4qIHNlY3VyaXR5T3JpZ2luLAogICAgIC8vIElmIHRo
ZSBVUkwgd2UncmUgZ29pbmcgdG8gbmF2aWdhdGUgdG8gaXMgdGhlIHNhbWUgYXMgdGhlIGN1cnJl
bnQgb25lLCBleGNlcHQgZm9yIHRoZQogICAgIC8vIGZyYWdtZW50IHBhcnQsIHdlIGRvbid0IG5l
ZWQgdG8gc2NoZWR1bGUgdGhlIGxvY2F0aW9uIGNoYW5nZS4KICAgICBVUkwgcGFyc2VkVVJMKFBh
cnNlZFVSTFN0cmluZywgdXJsKTsKLSAgICBpZiAocGFyc2VkVVJMLmhhc0ZyYWdtZW50SWRlbnRp
ZmllcigpICYmIGVxdWFsSWdub3JpbmdGcmFnbWVudElkZW50aWZpZXIobV9mcmFtZS5kb2N1bWVu
dCgpLT51cmwoKSwgcGFyc2VkVVJMKSkgewotICAgICAgICBsb2FkZXIuY2hhbmdlTG9jYXRpb24o
c2VjdXJpdHlPcmlnaW4sIG1fZnJhbWUuZG9jdW1lbnQoKS0+Y29tcGxldGVVUkwodXJsKSwgcmVm
ZXJyZXIsIGxvY2tIaXN0b3J5LCBsb2NrQmFja0ZvcndhcmRMaXN0KTsKKyAgICBpZiAocGFyc2Vk
VVJMLmhhc0ZyYWdtZW50SWRlbnRpZmllcigpICYmIGVxdWFsSWdub3JpbmdGcmFnbWVudElkZW50
aWZpZXIobV9mcmFtZS5kb2N1bWVudCgpLnVybCgpLCBwYXJzZWRVUkwpKSB7CisgICAgICAgIGxv
YWRlci5jaGFuZ2VMb2NhdGlvbihzZWN1cml0eU9yaWdpbiwgbV9mcmFtZS5kb2N1bWVudCgpLmNv
bXBsZXRlVVJMKHVybCksIHJlZmVycmVyLCBsb2NrSGlzdG9yeSwgbG9ja0JhY2tGb3J3YXJkTGlz
dCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTM5NywxMSArMzk3LDExIEBAIHZvaWQg
TmF2aWdhdGlvblNjaGVkdWxlcjo6c2NoZWR1bGVSZWZyZXNoKCkKIHsKICAgICBpZiAoIXNob3Vs
ZFNjaGVkdWxlTmF2aWdhdGlvbigpKQogICAgICAgICByZXR1cm47Ci0gICAgY29uc3QgVVJMJiB1
cmwgPSBtX2ZyYW1lLmRvY3VtZW50KCktPnVybCgpOworICAgIGNvbnN0IFVSTCYgdXJsID0gbV9m
cmFtZS5kb2N1bWVudCgpLnVybCgpOwogICAgIGlmICh1cmwuaXNFbXB0eSgpKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBzY2hlZHVsZShzdGQ6Om1ha2VfdW5pcXVlPFNjaGVkdWxlZFJlZnJlc2g+
KG1fZnJhbWUuZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKSwgdXJsLnN0cmluZygpLCBtX2Zy
YW1lLmxvYWRlcigpLm91dGdvaW5nUmVmZXJyZXIoKSkpOworICAgIHNjaGVkdWxlKHN0ZDo6bWFr
ZV91bmlxdWU8U2NoZWR1bGVkUmVmcmVzaD4obV9mcmFtZS5kb2N1bWVudCgpLnNlY3VyaXR5T3Jp
Z2luKCksIHVybC5zdHJpbmcoKSwgbV9mcmFtZS5sb2FkZXIoKS5vdXRnb2luZ1JlZmVycmVyKCkp
KTsKIH0KIAogdm9pZCBOYXZpZ2F0aW9uU2NoZWR1bGVyOjpzY2hlZHVsZUhpc3RvcnlOYXZpZ2F0
aW9uKGludCBzdGVwcykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9QaW5nTG9h
ZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9QaW5nTG9hZGVyLmNwcAppbmRleCBkNTFj
ZDUyLi42NGZjM2MxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUGluZ0xvYWRl
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1BpbmdMb2FkZXIuY3BwCkBAIC01MSwx
NCArNTEsMTQgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiB2b2lkIFBpbmdMb2FkZXI6OmxvYWRJ
bWFnZShGcmFtZSYgZnJhbWUsIGNvbnN0IFVSTCYgdXJsKQogewotICAgIGlmICghZnJhbWUuZG9j
dW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKS0+Y2FuRGlzcGxheSh1cmwpKSB7CisgICAgaWYgKCFm
cmFtZS5kb2N1bWVudCgpLnNlY3VyaXR5T3JpZ2luKCktPmNhbkRpc3BsYXkodXJsKSkgewogICAg
ICAgICBGcmFtZUxvYWRlcjo6cmVwb3J0TG9jYWxMb2FkRmFpbGVkKCZmcmFtZSwgdXJsKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIFJlc291cmNlUmVxdWVzdCByZXF1ZXN0KHVybCk7
CiAgICAgcmVxdWVzdC5zZXRIVFRQSGVhZGVyRmllbGQoIkNhY2hlLUNvbnRyb2wiLCAibWF4LWFn
ZT0wIik7Ci0gICAgU3RyaW5nIHJlZmVycmVyID0gU2VjdXJpdHlQb2xpY3k6OmdlbmVyYXRlUmVm
ZXJyZXJIZWFkZXIoZnJhbWUuZG9jdW1lbnQoKS0+cmVmZXJyZXJQb2xpY3koKSwgcmVxdWVzdC51
cmwoKSwgZnJhbWUubG9hZGVyKCkub3V0Z29pbmdSZWZlcnJlcigpKTsKKyAgICBTdHJpbmcgcmVm
ZXJyZXIgPSBTZWN1cml0eVBvbGljeTo6Z2VuZXJhdGVSZWZlcnJlckhlYWRlcihmcmFtZS5kb2N1
bWVudCgpLnJlZmVycmVyUG9saWN5KCksIHJlcXVlc3QudXJsKCksIGZyYW1lLmxvYWRlcigpLm91
dGdvaW5nUmVmZXJyZXIoKSk7CiAgICAgaWYgKCFyZWZlcnJlci5pc0VtcHR5KCkpCiAgICAgICAg
IHJlcXVlc3Quc2V0SFRUUFJlZmVycmVyKHJlZmVycmVyKTsKICAgICBmcmFtZS5sb2FkZXIoKS5h
ZGRFeHRyYUZpZWxkc1RvU3VicmVzb3VyY2VSZXF1ZXN0KHJlcXVlc3QpOwpAQCAtNzYsMTQgKzc2
LDE0IEBAIHZvaWQgUGluZ0xvYWRlcjo6c2VuZFBpbmcoRnJhbWUmIGZyYW1lLCBjb25zdCBVUkwm
IHBpbmdVUkwsIGNvbnN0IFVSTCYgZGVzdGluYXRpCiAgICAgcmVxdWVzdC5zZXRIVFRQSGVhZGVy
RmllbGQoIkNhY2hlLUNvbnRyb2wiLCAibWF4LWFnZT0wIik7CiAgICAgZnJhbWUubG9hZGVyKCku
YWRkRXh0cmFGaWVsZHNUb1N1YnJlc291cmNlUmVxdWVzdChyZXF1ZXN0KTsKIAotICAgIFNlY3Vy
aXR5T3JpZ2luKiBzb3VyY2VPcmlnaW4gPSBmcmFtZS5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdp
bigpOworICAgIFNlY3VyaXR5T3JpZ2luKiBzb3VyY2VPcmlnaW4gPSBmcmFtZS5kb2N1bWVudCgp
LnNlY3VyaXR5T3JpZ2luKCk7CiAgICAgUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBwaW5nT3JpZ2lu
ID0gU2VjdXJpdHlPcmlnaW46OmNyZWF0ZShwaW5nVVJMKTsKICAgICBGcmFtZUxvYWRlcjo6YWRk
SFRUUE9yaWdpbklmTmVlZGVkKHJlcXVlc3QsIHNvdXJjZU9yaWdpbi0+dG9TdHJpbmcoKSk7CiAg
ICAgcmVxdWVzdC5zZXRIVFRQSGVhZGVyRmllbGQoIlBpbmctVG8iLCBkZXN0aW5hdGlvblVSTCk7
CiAgICAgaWYgKCFTZWN1cml0eVBvbGljeTo6c2hvdWxkSGlkZVJlZmVycmVyKHBpbmdVUkwsIGZy
YW1lLmxvYWRlcigpLm91dGdvaW5nUmVmZXJyZXIoKSkpIHsKLSAgICAgICAgcmVxdWVzdC5zZXRI
VFRQSGVhZGVyRmllbGQoIlBpbmctRnJvbSIsIGZyYW1lLmRvY3VtZW50KCktPnVybCgpKTsKKyAg
ICAgICAgcmVxdWVzdC5zZXRIVFRQSGVhZGVyRmllbGQoIlBpbmctRnJvbSIsIGZyYW1lLmRvY3Vt
ZW50KCkudXJsKCkpOwogICAgICAgICBpZiAoIXNvdXJjZU9yaWdpbi0+aXNTYW1lU2NoZW1lSG9z
dFBvcnQocGluZ09yaWdpbi5nZXQoKSkpIHsKLSAgICAgICAgICAgIFN0cmluZyByZWZlcnJlciA9
IFNlY3VyaXR5UG9saWN5OjpnZW5lcmF0ZVJlZmVycmVySGVhZGVyKGZyYW1lLmRvY3VtZW50KCkt
PnJlZmVycmVyUG9saWN5KCksIHBpbmdVUkwsIGZyYW1lLmxvYWRlcigpLm91dGdvaW5nUmVmZXJy
ZXIoKSk7CisgICAgICAgICAgICBTdHJpbmcgcmVmZXJyZXIgPSBTZWN1cml0eVBvbGljeTo6Z2Vu
ZXJhdGVSZWZlcnJlckhlYWRlcihmcmFtZS5kb2N1bWVudCgpLnJlZmVycmVyUG9saWN5KCksIHBp
bmdVUkwsIGZyYW1lLmxvYWRlcigpLm91dGdvaW5nUmVmZXJyZXIoKSk7CiAgICAgICAgICAgICBp
ZiAoIXJlZmVycmVyLmlzRW1wdHkoKSkKICAgICAgICAgICAgICAgICByZXF1ZXN0LnNldEhUVFBS
ZWZlcnJlcihyZWZlcnJlcik7CiAgICAgICAgIH0KQEAgLTEwMCw3ICsxMDAsNyBAQCB2b2lkIFBp
bmdMb2FkZXI6OnNlbmRWaW9sYXRpb25SZXBvcnQoRnJhbWUmIGZyYW1lLCBjb25zdCBVUkwmIHJl
cG9ydFVSTCwgUGFzc1JlZgogICAgIHJlcXVlc3Quc2V0SFRUUEJvZHkocmVwb3J0KTsKICAgICBm
cmFtZS5sb2FkZXIoKS5hZGRFeHRyYUZpZWxkc1RvU3VicmVzb3VyY2VSZXF1ZXN0KHJlcXVlc3Qp
OwogCi0gICAgU3RyaW5nIHJlZmVycmVyID0gU2VjdXJpdHlQb2xpY3k6OmdlbmVyYXRlUmVmZXJy
ZXJIZWFkZXIoZnJhbWUuZG9jdW1lbnQoKS0+cmVmZXJyZXJQb2xpY3koKSwgcmVwb3J0VVJMLCBm
cmFtZS5sb2FkZXIoKS5vdXRnb2luZ1JlZmVycmVyKCkpOworICAgIFN0cmluZyByZWZlcnJlciA9
IFNlY3VyaXR5UG9saWN5OjpnZW5lcmF0ZVJlZmVycmVySGVhZGVyKGZyYW1lLmRvY3VtZW50KCku
cmVmZXJyZXJQb2xpY3koKSwgcmVwb3J0VVJMLCBmcmFtZS5sb2FkZXIoKS5vdXRnb2luZ1JlZmVy
cmVyKCkpOwogICAgIGlmICghcmVmZXJyZXIuaXNFbXB0eSgpKQogICAgICAgICByZXF1ZXN0LnNl
dEhUVFBSZWZlcnJlcihyZWZlcnJlcik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9Qb2xpY3lDaGVja2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Qb2xpY3lDaGVj
a2VyLmNwcAppbmRleCAzZjhlMDBlLi44YzVhMDRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9sb2FkZXIvUG9saWN5Q2hlY2tlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1Bv
bGljeUNoZWNrZXIuY3BwCkBAIC0xMjcsNyArMTI3LDggQEAgdm9pZCBQb2xpY3lDaGVja2VyOjpj
aGVja05hdmlnYXRpb25Qb2xpY3koY29uc3QgUmVzb3VyY2VSZXF1ZXN0JiByZXF1ZXN0LCBEb2N1
bWUKIAogdm9pZCBQb2xpY3lDaGVja2VyOjpjaGVja05ld1dpbmRvd1BvbGljeShjb25zdCBOYXZp
Z2F0aW9uQWN0aW9uJiBhY3Rpb24sIGNvbnN0IFJlc291cmNlUmVxdWVzdCYgcmVxdWVzdCwgUGFz
c1JlZlB0cjxGb3JtU3RhdGU+IGZvcm1TdGF0ZSwgY29uc3QgU3RyaW5nJiBmcmFtZU5hbWUsIE5l
d1dpbmRvd1BvbGljeURlY2lzaW9uRnVuY3Rpb24gZnVuY3Rpb24pCiB7Ci0gICAgaWYgKG1fZnJh
bWUuZG9jdW1lbnQoKSAmJiBtX2ZyYW1lLmRvY3VtZW50KCktPmlzU2FuZGJveGVkKFNhbmRib3hQ
b3B1cHMpKQorICAgIEFTU0VSVChtX2ZyYW1lLmRvY3VtZW50KCkpOworICAgIGlmIChtX2ZyYW1l
LmRvY3VtZW50KCkuaXNTYW5kYm94ZWQoU2FuZGJveFBvcHVwcykpCiAgICAgICAgIHJldHVybiBj
b250aW51ZUFmdGVyTmF2aWdhdGlvblBvbGljeShQb2xpY3lJZ25vcmUpOwogCiAgICAgaWYgKCFE
T01XaW5kb3c6OmFsbG93UG9wVXAoJm1fZnJhbWUpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvbG9hZGVyL1Jlc291cmNlTG9hZFNjaGVkdWxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmNwcAppbmRleCBiZjc5MWRhLi5kYmMwNzA0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmNwcApAQCAt
MTk0LDcgKzE5NCw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkU2NoZWR1bGVyOjpzY2hlZHVsZUxvYWQo
UmVzb3VyY2VMb2FkZXIqIHJlc291cmNlTG9hZGVyLCBSZXNvdXJjCiAKIHZvaWQgUmVzb3VyY2VM
b2FkU2NoZWR1bGVyOjpub3RpZnlEaWRTY2hlZHVsZVJlc291cmNlUmVxdWVzdChSZXNvdXJjZUxv
YWRlciogbG9hZGVyKQogewotICAgIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkU2NoZWR1
bGVSZXNvdXJjZVJlcXVlc3QobG9hZGVyLT5mcmFtZUxvYWRlcigpID8gbG9hZGVyLT5mcmFtZUxv
YWRlcigpLT5mcmFtZSgpLmRvY3VtZW50KCkgOiAwLCBsb2FkZXItPnVybCgpKTsKKyAgICBJbnNw
ZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFNjaGVkdWxlUmVzb3VyY2VSZXF1ZXN0KGxvYWRlci0+
ZnJhbWVMb2FkZXIoKSA/ICZsb2FkZXItPmZyYW1lTG9hZGVyKCktPmZyYW1lKCkuZG9jdW1lbnQo
KSA6IDAsIGxvYWRlci0+dXJsKCkpOwogfQogCiB2b2lkIFJlc291cmNlTG9hZFNjaGVkdWxlcjo6
cmVtb3ZlKFJlc291cmNlTG9hZGVyKiByZXNvdXJjZUxvYWRlcikKQEAgLTI3NSw3ICsyNzUsNyBA
QCB2b2lkIFJlc291cmNlTG9hZFNjaGVkdWxlcjo6c2VydmVQZW5kaW5nUmVxdWVzdHMoSG9zdElu
Zm9ybWF0aW9uKiBob3N0LCBSZXNvdXJjZQogICAgICAgICAgICAgLy8gRm9yIG5hbWVkIGhvc3Rz
IC0gd2hpY2ggYXJlIG9ubHkgaHR0cChzKSBob3N0cyAtIHdlIHNob3VsZCBhbHdheXMgZW5mb3Jj
ZSB0aGUgY29ubmVjdGlvbiBsaW1pdC4KICAgICAgICAgICAgIC8vIEZvciBub24tbmFtZWQgaG9z
dHMgLSBldmVyeXRoaW5nIGJ1dCBodHRwKHMpIC0gd2Ugc2hvdWxkIG9ubHkgZW5mb3JjZSB0aGUg
bGltaXQgaWYgdGhlIGRvY3VtZW50IGlzbid0IGRvbmUgcGFyc2luZyAKICAgICAgICAgICAgIC8v
IGFuZCB3ZSBkb24ndCBrbm93IGFsbCBzdHlsZXNoZWV0cyB5ZXQuCi0gICAgICAgICAgICBEb2N1
bWVudCogZG9jdW1lbnQgPSByZXNvdXJjZUxvYWRlci0+ZnJhbWVMb2FkZXIoKSA/IHJlc291cmNl
TG9hZGVyLT5mcmFtZUxvYWRlcigpLT5mcmFtZSgpLmRvY3VtZW50KCkgOiAwOworICAgICAgICAg
ICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gcmVzb3VyY2VMb2FkZXItPmZyYW1lTG9hZGVyKCkgPyAm
cmVzb3VyY2VMb2FkZXItPmZyYW1lTG9hZGVyKCktPmZyYW1lKCkuZG9jdW1lbnQoKSA6IDA7CiAg
ICAgICAgICAgICBib29sIHNob3VsZExpbWl0UmVxdWVzdHMgPSAhaG9zdC0+bmFtZSgpLmlzTnVs
bCgpIHx8IChkb2N1bWVudCAmJiAoZG9jdW1lbnQtPnBhcnNpbmcoKSB8fCAhZG9jdW1lbnQtPmhh
dmVTdHlsZXNoZWV0c0xvYWRlZCgpKSk7CiAgICAgICAgICAgICBpZiAoc2hvdWxkTGltaXRSZXF1
ZXN0cyAmJiBob3N0LT5saW1pdFJlcXVlc3RzKFJlc291cmNlTG9hZFByaW9yaXR5KHByaW9yaXR5
KSkpCiAgICAgICAgICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
bG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJj
ZUxvYWRlci5jcHAKaW5kZXggYTkwZjkxYi4uZDliZTUxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC0xMjEsNyArMTIxLDcgQEAgYm9vbCBSZXNvdXJjZUxv
YWRlcjo6aW5pdChjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHIpCiAjZW5kaWYKICAgICAKICAgICBt
X2RlZmVyc0xvYWRpbmcgPSBtX2ZyYW1lLT5wYWdlKCktPmRlZmVyc0xvYWRpbmcoKTsKLSAgICBp
ZiAobV9vcHRpb25zLnNlY3VyaXR5Q2hlY2sgPT0gRG9TZWN1cml0eUNoZWNrICYmICFtX2ZyYW1l
LT5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpLT5jYW5EaXNwbGF5KGNsaWVudFJlcXVlc3Qu
dXJsKCkpKSB7CisgICAgaWYgKG1fb3B0aW9ucy5zZWN1cml0eUNoZWNrID09IERvU2VjdXJpdHlD
aGVjayAmJiAhbV9mcmFtZS0+ZG9jdW1lbnQoKS5zZWN1cml0eU9yaWdpbigpLT5jYW5EaXNwbGF5
KGNsaWVudFJlcXVlc3QudXJsKCkpKSB7CiAgICAgICAgIEZyYW1lTG9hZGVyOjpyZXBvcnRMb2Nh
bExvYWRGYWlsZWQobV9mcmFtZS5nZXQoKSwgY2xpZW50UmVxdWVzdC51cmwoKS5zdHJpbmcoKSk7
CiAgICAgICAgIHJlbGVhc2VSZXNvdXJjZXMoKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAt
MTMzLDcgKzEzMyw3IEBAIGJvb2wgUmVzb3VyY2VMb2FkZXI6OmluaXQoY29uc3QgUmVzb3VyY2VS
ZXF1ZXN0JiByKQogICAgIC8vIHVwIHRoZSAxc3QgcGFydHkgZm9yIGNvb2tpZXMgVVJMLiBVbnRp
bCBwbHVnLWluIGltcGxlbWVudGF0aW9ucyBjYW4gYmUgcmVpZ25lZCBpbiB0byBwaXBlIHRocm91
Z2ggdGhhdAogICAgIC8vIG1ldGhvZCwgd2UgbmVlZCB0byBtYWtlIHN1cmUgdGhlcmUgaXMgYWx3
YXlzIGEgMXN0IHBhcnR5IGZvciBjb29raWVzIHNldC4KICAgICBpZiAoY2xpZW50UmVxdWVzdC5m
aXJzdFBhcnR5Rm9yQ29va2llcygpLmlzTnVsbCgpKSB7Ci0gICAgICAgIGlmIChEb2N1bWVudCog
ZG9jdW1lbnQgPSBtX2ZyYW1lLT5kb2N1bWVudCgpKQorICAgICAgICBpZiAoRG9jdW1lbnQqIGRv
Y3VtZW50ID0gJm1fZnJhbWUtPmRvY3VtZW50KCkpCiAgICAgICAgICAgICBjbGllbnRSZXF1ZXN0
LnNldEZpcnN0UGFydHlGb3JDb29raWVzKGRvY3VtZW50LT5maXJzdFBhcnR5Rm9yQ29va2llcygp
KTsKICAgICB9CiAKQEAgLTU0NSw3ICs1NDUsNyBAQCB2b2lkIFJlc291cmNlTG9hZGVyOjpkaWRS
ZWNlaXZlQXV0aGVudGljYXRpb25DaGFsbGVuZ2UoY29uc3QgQXV0aGVudGljYXRpb25DaGFsbAog
ICAgIFJlZjxSZXNvdXJjZUxvYWRlcj4gcHJvdGVjdCgqdGhpcyk7CiAKICAgICBpZiAobV9vcHRp
b25zLmFsbG93Q3JlZGVudGlhbHMgPT0gQWxsb3dTdG9yZWRDcmVkZW50aWFscykgewotICAgICAg
ICBpZiAobV9vcHRpb25zLmNsaWVudENyZWRlbnRpYWxQb2xpY3kgPT0gQXNrQ2xpZW50Rm9yQWxs
Q3JlZGVudGlhbHMgfHwgKG1fb3B0aW9ucy5jbGllbnRDcmVkZW50aWFsUG9saWN5ID09IERvTm90
QXNrQ2xpZW50Rm9yQ3Jvc3NPcmlnaW5DcmVkZW50aWFscyAmJiBtX2ZyYW1lLT5kb2N1bWVudCgp
LT5zZWN1cml0eU9yaWdpbigpLT5jYW5SZXF1ZXN0KG9yaWdpbmFsUmVxdWVzdCgpLnVybCgpKSkp
IHsKKyAgICAgICAgaWYgKG1fb3B0aW9ucy5jbGllbnRDcmVkZW50aWFsUG9saWN5ID09IEFza0Ns
aWVudEZvckFsbENyZWRlbnRpYWxzIHx8IChtX29wdGlvbnMuY2xpZW50Q3JlZGVudGlhbFBvbGlj
eSA9PSBEb05vdEFza0NsaWVudEZvckNyb3NzT3JpZ2luQ3JlZGVudGlhbHMgJiYgbV9mcmFtZS0+
ZG9jdW1lbnQoKS5zZWN1cml0eU9yaWdpbigpLT5jYW5SZXF1ZXN0KG9yaWdpbmFsUmVxdWVzdCgp
LnVybCgpKSkpIHsKICAgICAgICAgICAgIGZyYW1lTG9hZGVyKCktPm5vdGlmaWVyKCkuZGlkUmVj
ZWl2ZUF1dGhlbnRpY2F0aW9uQ2hhbGxlbmdlKHRoaXMsIGNoYWxsZW5nZSk7CiAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9T
dWJmcmFtZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3ViZnJhbWVMb2FkZXIu
Y3BwCmluZGV4IDY1NWRjZjUuLjE0ODI2MmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9TdWJmcmFtZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YmZy
YW1lTG9hZGVyLmNwcApAQCAtMjQyLDEyICsyNDIsMTIgQEAgUGFzc1JlZlB0cjxXaWRnZXQ+IFN1
YmZyYW1lTG9hZGVyOjpsb2FkTWVkaWFQbGF5ZXJQcm94eVBsdWdpbihIVE1MTWVkaWFFbGVtZW50
JgogICAgIGlmICghdXJsLmlzRW1wdHkoKSkKICAgICAgICAgY29tcGxldGVkVVJMID0gY29tcGxl
dGVVUkwodXJsKTsKIAotICAgIGlmICghbV9mcmFtZS5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdp
bigpLT5jYW5EaXNwbGF5KGNvbXBsZXRlZFVSTCkpIHsKKyAgICBpZiAoIW1fZnJhbWUuZG9jdW1l
bnQoKS5zZWN1cml0eU9yaWdpbigpLT5jYW5EaXNwbGF5KGNvbXBsZXRlZFVSTCkpIHsKICAgICAg
ICAgRnJhbWVMb2FkZXI6OnJlcG9ydExvY2FsTG9hZEZhaWxlZCgmbV9mcmFtZSwgY29tcGxldGVk
VVJMLnN0cmluZygpKTsKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQogCi0gICAgaWYg
KCFtX2ZyYW1lLmRvY3VtZW50KCktPmNvbnRlbnRTZWN1cml0eVBvbGljeSgpLT5hbGxvd01lZGlh
RnJvbVNvdXJjZShjb21wbGV0ZWRVUkwpKQorICAgIGlmICghbV9mcmFtZS5kb2N1bWVudCgpLmNv
bnRlbnRTZWN1cml0eVBvbGljeSgpLT5hbGxvd01lZGlhRnJvbVNvdXJjZShjb21wbGV0ZWRVUkwp
KQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKIAogICAgIFJlbmRlcldpZGdldCogcmVuZGVyZXIg
PSB0b1JlbmRlcldpZGdldChtZWRpYUVsZW1lbnQucmVuZGVyZXIoKSk7CkBAIC0yNTgsNyArMjU4
LDcgQEAgUGFzc1JlZlB0cjxXaWRnZXQ+IFN1YmZyYW1lTG9hZGVyOjpsb2FkTWVkaWFQbGF5ZXJQ
cm94eVBsdWdpbihIVE1MTWVkaWFFbGVtZW50JgogICAgIGVsc2UgaWYgKG1lZGlhRWxlbWVudC5p
c1ZpZGVvKCkpCiAgICAgICAgIHNpemUgPSBSZW5kZXJWaWRlbzo6ZGVmYXVsdFNpemUoKTsKIAot
ICAgIGlmICghbV9mcmFtZS5sb2FkZXIoKS5taXhlZENvbnRlbnRDaGVja2VyKCkuY2FuUnVuSW5z
ZWN1cmVDb250ZW50KG1fZnJhbWUuZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKSwgY29tcGxl
dGVkVVJMKSkKKyAgICBpZiAoIW1fZnJhbWUubG9hZGVyKCkubWl4ZWRDb250ZW50Q2hlY2tlcigp
LmNhblJ1bkluc2VjdXJlQ29udGVudChtX2ZyYW1lLmRvY3VtZW50KCkuc2VjdXJpdHlPcmlnaW4o
KSwgY29tcGxldGVkVVJMKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBSZWZQdHI8
V2lkZ2V0PiB3aWRnZXQgPSBtX2ZyYW1lLmxvYWRlcigpLmNsaWVudCgpLmNyZWF0ZU1lZGlhUGxh
eWVyUHJveHlQbHVnaW4oc2l6ZSwgJm1lZGlhRWxlbWVudCwgY29tcGxldGVkVVJMLCBwYXJhbU5h
bWVzLCBwYXJhbVZhbHVlcywgImFwcGxpY2F0aW9uL3gtbWVkaWEtZWxlbWVudC1wcm94eS1wbHVn
aW4iKTsKQEAgLTI5OSw3ICsyOTksNyBAQCBQYXNzUmVmUHRyPFdpZGdldD4gU3ViZnJhbWVMb2Fk
ZXI6OmNyZWF0ZUphdmFBcHBsZXRXaWRnZXQoY29uc3QgSW50U2l6ZSYgc2l6ZSwgSAogICAgIH0K
IAogICAgIGlmIChiYXNlVVJMU3RyaW5nLmlzRW1wdHkoKSkKLSAgICAgICAgYmFzZVVSTFN0cmlu
ZyA9IG1fZnJhbWUuZG9jdW1lbnQoKS0+YmFzZVVSTCgpLnN0cmluZygpOworICAgICAgICBiYXNl
VVJMU3RyaW5nID0gbV9mcmFtZS5kb2N1bWVudCgpLmJhc2VVUkwoKS5zdHJpbmcoKTsKICAgICBV
UkwgYmFzZVVSTCA9IGNvbXBsZXRlVVJMKGJhc2VVUkxTdHJpbmcpOwogCiAgICAgUmVmUHRyPFdp
ZGdldD4gd2lkZ2V0OwpAQCAtMzI0LDcgKzMyNCw3IEBAIEZyYW1lKiBTdWJmcmFtZUxvYWRlcjo6
bG9hZE9yUmVkaXJlY3RTdWJmcmFtZShIVE1MRnJhbWVPd25lckVsZW1lbnQmIG93bmVyRWxlbWVu
CiB7CiAgICAgRnJhbWUqIGZyYW1lID0gb3duZXJFbGVtZW50LmNvbnRlbnRGcmFtZSgpOwogICAg
IGlmIChmcmFtZSkKLSAgICAgICAgZnJhbWUtPm5hdmlnYXRpb25TY2hlZHVsZXIoKS5zY2hlZHVs
ZUxvY2F0aW9uQ2hhbmdlKG1fZnJhbWUuZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKSwgdXJs
LnN0cmluZygpLCBtX2ZyYW1lLmxvYWRlcigpLm91dGdvaW5nUmVmZXJyZXIoKSwgbG9ja0hpc3Rv
cnksIGxvY2tCYWNrRm9yd2FyZExpc3QpOworICAgICAgICBmcmFtZS0+bmF2aWdhdGlvblNjaGVk
dWxlcigpLnNjaGVkdWxlTG9jYXRpb25DaGFuZ2UobV9mcmFtZS5kb2N1bWVudCgpLnNlY3VyaXR5
T3JpZ2luKCksIHVybC5zdHJpbmcoKSwgbV9mcmFtZS5sb2FkZXIoKS5vdXRnb2luZ1JlZmVycmVy
KCksIGxvY2tIaXN0b3J5LCBsb2NrQmFja0ZvcndhcmRMaXN0KTsKICAgICBlbHNlCiAgICAgICAg
IGZyYW1lID0gbG9hZFN1YmZyYW1lKG93bmVyRWxlbWVudCwgdXJsLCBmcmFtZU5hbWUsIG1fZnJh
bWUubG9hZGVyKCkub3V0Z29pbmdSZWZlcnJlcigpKTsKIApAQCAtNDI0LDcgKzQyNCw3IEBAIGJv
b2wgU3ViZnJhbWVMb2FkZXI6OnNob3VsZFVzZVBsdWdpbihjb25zdCBVUkwmIHVybCwgY29uc3Qg
U3RyaW5nJiBtaW1lVHlwZSwgYm9vCiAKIERvY3VtZW50KiBTdWJmcmFtZUxvYWRlcjo6ZG9jdW1l
bnQoKSBjb25zdAogewotICAgIHJldHVybiBtX2ZyYW1lLmRvY3VtZW50KCk7CisgICAgcmV0dXJu
ICZtX2ZyYW1lLmRvY3VtZW50KCk7CiB9CiAKIGJvb2wgU3ViZnJhbWVMb2FkZXI6OmxvYWRQbHVn
aW4oSFRNTFBsdWdJbkltYWdlRWxlbWVudCYgcGx1Z2luRWxlbWVudCwgY29uc3QgVVJMJiB1cmws
IGNvbnN0IFN0cmluZyYgbWltZVR5cGUsIGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBwYXJhbU5hbWVz
LCBjb25zdCBWZWN0b3I8U3RyaW5nPiYgcGFyYW1WYWx1ZXMsIGJvb2wgdXNlRmFsbGJhY2spCkBA
IC00NjcsNyArNDY3LDcgQEAgYm9vbCBTdWJmcmFtZUxvYWRlcjo6bG9hZFBsdWdpbihIVE1MUGx1
Z0luSW1hZ2VFbGVtZW50JiBwbHVnaW5FbGVtZW50LCBjb25zdCBVUkwKIFVSTCBTdWJmcmFtZUxv
YWRlcjo6Y29tcGxldGVVUkwoY29uc3QgU3RyaW5nJiB1cmwpIGNvbnN0CiB7CiAgICAgQVNTRVJU
KG1fZnJhbWUuZG9jdW1lbnQoKSk7Ci0gICAgcmV0dXJuIG1fZnJhbWUuZG9jdW1lbnQoKS0+Y29t
cGxldGVVUkwodXJsKTsKKyAgICByZXR1cm4gbV9mcmFtZS5kb2N1bWVudCgpLmNvbXBsZXRlVVJM
KHVybCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvU3VicmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IGYxZmNlYWMuLjcxYzllNDAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcApAQCAtNjksNyArNjksNyBA
QCBTdWJyZXNvdXJjZUxvYWRlcjo6U3VicmVzb3VyY2VMb2FkZXIoRnJhbWUqIGZyYW1lLCBDYWNo
ZWRSZXNvdXJjZSogcmVzb3VyY2UsIGNvbgogICAgICwgbV9yZXNvdXJjZShyZXNvdXJjZSkKICAg
ICAsIG1fbG9hZGluZ011bHRpcGFydENvbnRlbnQoZmFsc2UpCiAgICAgLCBtX3N0YXRlKFVuaW5p
dGlhbGl6ZWQpCi0gICAgLCBtX3JlcXVlc3RDb3VudFRyYWNrZXIoYWRvcHRQdHIobmV3IFJlcXVl
c3RDb3VudFRyYWNrZXIoZnJhbWUtPmRvY3VtZW50KCktPmNhY2hlZFJlc291cmNlTG9hZGVyKCks
IHJlc291cmNlKSkpCisgICAgLCBtX3JlcXVlc3RDb3VudFRyYWNrZXIoYWRvcHRQdHIobmV3IFJl
cXVlc3RDb3VudFRyYWNrZXIoZnJhbWUtPmRvY3VtZW50KCkuY2FjaGVkUmVzb3VyY2VMb2FkZXIo
KSwgcmVzb3VyY2UpKSkKIHsKICNpZm5kZWYgTkRFQlVHCiAgICAgc3VicmVzb3VyY2VMb2FkZXJD
b3VudGVyLmluY3JlbWVudCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Fw
cGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVHcm91cC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
YXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUdyb3VwLmNwcAppbmRleCAzMDBhYTYzLi5lYmMyOTU2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25D
YWNoZUdyb3VwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGlj
YXRpb25DYWNoZUdyb3VwLmNwcApAQCAtMTUwLDcgKzE1MCw3IEBAIHZvaWQgQXBwbGljYXRpb25D
YWNoZUdyb3VwOjpzZWxlY3RDYWNoZShGcmFtZSogZnJhbWUsIGNvbnN0IFVSTCYgcGFzc2VkTWFu
aWZlc3RVCiAgICAgfQogCiAgICAgLy8gRG9uJ3QgYWNjZXNzIGFueXRoaW5nIG9uIGRpc2sgaWYg
cHJpdmF0ZSBicm93c2luZyBpcyBlbmFibGVkLgotICAgIGlmIChmcmFtZS0+cGFnZSgpLT51c2Vz
RXBoZW1lcmFsU2Vzc2lvbigpIHx8ICFmcmFtZS0+ZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4o
KS0+Y2FuQWNjZXNzQXBwbGljYXRpb25DYWNoZShmcmFtZS0+dHJlZSgpLnRvcCgpLmRvY3VtZW50
KCktPnNlY3VyaXR5T3JpZ2luKCkpKSB7CisgICAgaWYgKGZyYW1lLT5wYWdlKCktPnVzZXNFcGhl
bWVyYWxTZXNzaW9uKCkgfHwgIWZyYW1lLT5kb2N1bWVudCgpLnNlY3VyaXR5T3JpZ2luKCktPmNh
bkFjY2Vzc0FwcGxpY2F0aW9uQ2FjaGUoZnJhbWUtPnRyZWUoKS50b3AoKS5kb2N1bWVudCgpLnNl
Y3VyaXR5T3JpZ2luKCkpKSB7CiAgICAgICAgIHBvc3RMaXN0ZW5lclRhc2soQXBwbGljYXRpb25D
YWNoZUhvc3Q6OkNIRUNLSU5HX0VWRU5ULCBkb2N1bWVudExvYWRlcik7CiAgICAgICAgIHBvc3RM
aXN0ZW5lclRhc2soQXBwbGljYXRpb25DYWNoZUhvc3Q6OkVSUk9SX0VWRU5ULCBkb2N1bWVudExv
YWRlcik7CiAgICAgICAgIHJldHVybjsKQEAgLTE4Myw3ICsxODMsNyBAQCB2b2lkIEFwcGxpY2F0
aW9uQ2FjaGVHcm91cDo6c2VsZWN0Q2FjaGUoRnJhbWUqIGZyYW1lLCBjb25zdCBVUkwmIHBhc3Nl
ZE1hbmlmZXN0VQogICAgICAgICAgICAgLy8gUmVzdGFydCB0aGUgY3VycmVudCBuYXZpZ2F0aW9u
IGZyb20gdGhlIHRvcCBvZiB0aGUgbmF2aWdhdGlvbiBhbGdvcml0aG0sIHVuZG9pbmcgYW55IGNo
YW5nZXMgdGhhdCB3ZXJlIG1hZGUKICAgICAgICAgICAgIC8vIGFzIHBhcnQgb2YgdGhlIGluaXRp
YWwgbG9hZC4KICAgICAgICAgICAgIC8vIFRoZSBuYXZpZ2F0aW9uIHdpbGwgbm90IHJlc3VsdCBp
biB0aGUgc2FtZSByZXNvdXJjZSBiZWluZyBsb2FkZWQsIGJlY2F1c2UgImZvcmVpZ24iIGVudHJp
ZXMgYXJlIG5ldmVyIHBpY2tlZCBkdXJpbmcgbmF2aWdhdGlvbi4KLSAgICAgICAgICAgIGZyYW1l
LT5uYXZpZ2F0aW9uU2NoZWR1bGVyKCkuc2NoZWR1bGVMb2NhdGlvbkNoYW5nZShmcmFtZS0+ZG9j
dW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKSwgZG9jdW1lbnRMb2FkZXItPnVybCgpLCBmcmFtZS0+
bG9hZGVyKCkucmVmZXJyZXIoKSk7CisgICAgICAgICAgICBmcmFtZS0+bmF2aWdhdGlvblNjaGVk
dWxlcigpLnNjaGVkdWxlTG9jYXRpb25DaGFuZ2UoZnJhbWUtPmRvY3VtZW50KCkuc2VjdXJpdHlP
cmlnaW4oKSwgZG9jdW1lbnRMb2FkZXItPnVybCgpLCBmcmFtZS0+bG9hZGVyKCkucmVmZXJyZXIo
KSk7CiAgICAgICAgIH0KICAgICAgICAgCiAgICAgICAgIHJldHVybjsKQEAgLTIxOCw3ICsyMTgs
NyBAQCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6c2VsZWN0Q2FjaGVXaXRob3V0TWFuaWZl
c3RVUkwoRnJhbWUqIGZyYW1lKQogICAgIEFTU0VSVCghZG9jdW1lbnRMb2FkZXItPmFwcGxpY2F0
aW9uQ2FjaGVIb3N0KCktPmFwcGxpY2F0aW9uQ2FjaGUoKSk7CiAKICAgICAvLyBEb24ndCBhY2Nl
c3MgYW55dGhpbmcgb24gZGlzayBpZiBwcml2YXRlIGJyb3dzaW5nIGlzIGVuYWJsZWQuCi0gICAg
aWYgKGZyYW1lLT5wYWdlKCktPnVzZXNFcGhlbWVyYWxTZXNzaW9uKCkgfHwgIWZyYW1lLT5kb2N1
bWVudCgpLT5zZWN1cml0eU9yaWdpbigpLT5jYW5BY2Nlc3NBcHBsaWNhdGlvbkNhY2hlKGZyYW1l
LT50cmVlKCkudG9wKCkuZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKSkpIHsKKyAgICBpZiAo
ZnJhbWUtPnBhZ2UoKS0+dXNlc0VwaGVtZXJhbFNlc3Npb24oKSB8fCAhZnJhbWUtPmRvY3VtZW50
KCkuc2VjdXJpdHlPcmlnaW4oKS0+Y2FuQWNjZXNzQXBwbGljYXRpb25DYWNoZShmcmFtZS0+dHJl
ZSgpLnRvcCgpLmRvY3VtZW50KCkuc2VjdXJpdHlPcmlnaW4oKSkpIHsKICAgICAgICAgcG9zdExp
c3RlbmVyVGFzayhBcHBsaWNhdGlvbkNhY2hlSG9zdDo6Q0hFQ0tJTkdfRVZFTlQsIGRvY3VtZW50
TG9hZGVyKTsKICAgICAgICAgcG9zdExpc3RlbmVyVGFzayhBcHBsaWNhdGlvbkNhY2hlSG9zdDo6
RVJST1JfRVZFTlQsIGRvY3VtZW50TG9hZGVyKTsKICAgICAgICAgcmV0dXJuOwpAQCAtNDMzLDcg
KzQzMyw3IEBAIHZvaWQgQXBwbGljYXRpb25DYWNoZUdyb3VwOjp1cGRhdGUoRnJhbWUqIGZyYW1l
LCBBcHBsaWNhdGlvbkNhY2hlVXBkYXRlT3B0aW9uIHVwCiAgICAgfQogCiAgICAgLy8gRG9uJ3Qg
YWNjZXNzIGFueXRoaW5nIG9uIGRpc2sgaWYgcHJpdmF0ZSBicm93c2luZyBpcyBlbmFibGVkLgot
ICAgIGlmIChmcmFtZS0+cGFnZSgpLT51c2VzRXBoZW1lcmFsU2Vzc2lvbigpIHx8ICFmcmFtZS0+
ZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKS0+Y2FuQWNjZXNzQXBwbGljYXRpb25DYWNoZShm
cmFtZS0+dHJlZSgpLnRvcCgpLmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCkpKSB7CisgICAg
aWYgKGZyYW1lLT5wYWdlKCktPnVzZXNFcGhlbWVyYWxTZXNzaW9uKCkgfHwgIWZyYW1lLT5kb2N1
bWVudCgpLnNlY3VyaXR5T3JpZ2luKCktPmNhbkFjY2Vzc0FwcGxpY2F0aW9uQ2FjaGUoZnJhbWUt
PnRyZWUoKS50b3AoKS5kb2N1bWVudCgpLnNlY3VyaXR5T3JpZ2luKCkpKSB7CiAgICAgICAgIEFT
U0VSVChtX3BlbmRpbmdNYXN0ZXJSZXNvdXJjZUxvYWRlcnMuaXNFbXB0eSgpKTsKICAgICAgICAg
QVNTRVJUKG1fcGVuZGluZ0VudHJpZXMuaXNFbXB0eSgpKTsKICAgICAgICAgQVNTRVJUKCFtX2Nh
Y2hlQmVpbmdVcGRhdGVkKTsKQEAgLTQ3Miw3ICs0NzIsNyBAQCB2b2lkIEFwcGxpY2F0aW9uQ2Fj
aGVHcm91cDo6YWJvcnQoRnJhbWUqIGZyYW1lKQogICAgIGlmIChtX2NvbXBsZXRpb25UeXBlICE9
IE5vbmUpCiAgICAgICAgIHJldHVybjsKIAotICAgIGZyYW1lLT5kb2N1bWVudCgpLT5hZGRDb25z
b2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpOZXR3b3JrLCBNZXNzYWdlTGV2ZWw6OkRlYnVnLCBB
U0NJSUxpdGVyYWwoIkFwcGxpY2F0aW9uIENhY2hlIGRvd25sb2FkIHByb2Nlc3Mgd2FzIGFib3J0
ZWQuIikpOworICAgIGZyYW1lLT5kb2N1bWVudCgpLmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VT
b3VyY2U6Ok5ldHdvcmssIE1lc3NhZ2VMZXZlbDo6RGVidWcsIEFTQ0lJTGl0ZXJhbCgiQXBwbGlj
YXRpb24gQ2FjaGUgZG93bmxvYWQgcHJvY2VzcyB3YXMgYWJvcnRlZC4iKSk7CiAgICAgY2FjaGVV
cGRhdGVGYWlsZWQoKTsKIH0KIApAQCAtNTQ4LDcgKzU0OCw3IEBAIHZvaWQgQXBwbGljYXRpb25D
YWNoZUdyb3VwOjpkaWRSZWNlaXZlUmVzcG9uc2UoUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSwgY29u
c3QgUmVzCiAKICAgICBpZiAocmVzcG9uc2UuaHR0cFN0YXR1c0NvZGUoKSAvIDEwMCAhPSAyIHx8
IHJlc3BvbnNlLnVybCgpICE9IG1fY3VycmVudEhhbmRsZS0+Zmlyc3RSZXF1ZXN0KCkudXJsKCkp
IHsKICAgICAgICAgaWYgKCh0eXBlICYgQXBwbGljYXRpb25DYWNoZVJlc291cmNlOjpFeHBsaWNp
dCkgfHwgKHR5cGUgJiBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U6OkZhbGxiYWNrKSkgewotICAg
ICAgICAgICAgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNv
dXJjZTo6QXBwQ2FjaGUsIE1lc3NhZ2VMZXZlbDo6RXJyb3IsICJBcHBsaWNhdGlvbiBDYWNoZSB1
cGRhdGUgZmFpbGVkLCBiZWNhdXNlICIgKyBtX2N1cnJlbnRIYW5kbGUtPmZpcnN0UmVxdWVzdCgp
LnVybCgpLnN0cmluZ0NlbnRlckVsbGlwc2l6ZWRUb0xlbmd0aCgpICsKKyAgICAgICAgICAgIG1f
ZnJhbWUtPmRvY3VtZW50KCkuYWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6QXBwQ2Fj
aGUsIE1lc3NhZ2VMZXZlbDo6RXJyb3IsICJBcHBsaWNhdGlvbiBDYWNoZSB1cGRhdGUgZmFpbGVk
LCBiZWNhdXNlICIgKyBtX2N1cnJlbnRIYW5kbGUtPmZpcnN0UmVxdWVzdCgpLnVybCgpLnN0cmlu
Z0NlbnRlckVsbGlwc2l6ZWRUb0xlbmd0aCgpICsKICAgICAgICAgICAgICAgICAoKHJlc3BvbnNl
Lmh0dHBTdGF0dXNDb2RlKCkgLyAxMDAgIT0gMikgPyAiIGNvdWxkIG5vdCBiZSBmZXRjaGVkLiIg
OiAiIHdhcyByZWRpcmVjdGVkLiIpKTsKICAgICAgICAgICAgIC8vIE5vdGUgdGhhdCBjYWNoZVVw
ZGF0ZUZhaWxlZCgpIGNhbiBjYXVzZSB0aGUgY2FjaGUgZ3JvdXAgdG8gYmUgZGVsZXRlZC4KICAg
ICAgICAgICAgIGNhY2hlVXBkYXRlRmFpbGVkKCk7CkBAIC02MjcsNyArNjI3LDcgQEAgdm9pZCBB
cHBsaWNhdGlvbkNhY2hlR3JvdXA6OmRpZEZpbmlzaExvYWRpbmcoUmVzb3VyY2VIYW5kbGUqIGhh
bmRsZSwgZG91YmxlIGZpbmkKICAgICAvLyBGSVhNRTogU2hvdWxkIHdlIGJyZWFrIGVhcmxpZXIg
YW5kIHByZXZlbnQgcmVkb3dubG9hZGluZyBvbiBsYXRlciBwYWdlIGxvYWRzPwogICAgIGlmICht
X29yaWdpblF1b3RhRXhjZWVkZWRQcmV2aW91c2x5ICYmIG1fYXZhaWxhYmxlU3BhY2VJblF1b3Rh
IDwgbV9jYWNoZUJlaW5nVXBkYXRlZC0+ZXN0aW1hdGVkU2l6ZUluU3RvcmFnZSgpKSB7CiAgICAg
ICAgIG1fY3VycmVudFJlc291cmNlID0gMDsKLSAgICAgICAgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+
YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6QXBwQ2FjaGUsIE1lc3NhZ2VMZXZlbDo6
RXJyb3IsIEFTQ0lJTGl0ZXJhbCgiQXBwbGljYXRpb24gQ2FjaGUgdXBkYXRlIGZhaWxlZCwgYmVj
YXVzZSBzaXplIHF1b3RhIHdhcyBleGNlZWRlZC4iKSk7CisgICAgICAgIG1fZnJhbWUtPmRvY3Vt
ZW50KCkuYWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6QXBwQ2FjaGUsIE1lc3NhZ2VM
ZXZlbDo6RXJyb3IsIEFTQ0lJTGl0ZXJhbCgiQXBwbGljYXRpb24gQ2FjaGUgdXBkYXRlIGZhaWxl
ZCwgYmVjYXVzZSBzaXplIHF1b3RhIHdhcyBleGNlZWRlZC4iKSk7CiAgICAgICAgIGNhY2hlVXBk
YXRlRmFpbGVkKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC02NjIsNyArNjYyLDcgQEAg
dm9pZCBBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OmRpZEZhaWwoUmVzb3VyY2VIYW5kbGUqIGhhbmRs
ZSwgY29uc3QgUmVzb3VyY2VFcnJvciYKICAgICBtX3BlbmRpbmdFbnRyaWVzLnJlbW92ZSh1cmwp
OwogCiAgICAgaWYgKCh0eXBlICYgQXBwbGljYXRpb25DYWNoZVJlc291cmNlOjpFeHBsaWNpdCkg
fHwgKHR5cGUgJiBBcHBsaWNhdGlvbkNhY2hlUmVzb3VyY2U6OkZhbGxiYWNrKSkgewotICAgICAg
ICBtX2ZyYW1lLT5kb2N1bWVudCgpLT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpB
cHBDYWNoZSwgTWVzc2FnZUxldmVsOjpFcnJvciwgIkFwcGxpY2F0aW9uIENhY2hlIHVwZGF0ZSBm
YWlsZWQsIGJlY2F1c2UgIiArIHVybC5zdHJpbmdDZW50ZXJFbGxpcHNpemVkVG9MZW5ndGgoKSAr
ICIgY291bGQgbm90IGJlIGZldGNoZWQuIik7CisgICAgICAgIG1fZnJhbWUtPmRvY3VtZW50KCku
YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6QXBwQ2FjaGUsIE1lc3NhZ2VMZXZlbDo6
RXJyb3IsICJBcHBsaWNhdGlvbiBDYWNoZSB1cGRhdGUgZmFpbGVkLCBiZWNhdXNlICIgKyB1cmwu
c3RyaW5nQ2VudGVyRWxsaXBzaXplZFRvTGVuZ3RoKCkgKyAiIGNvdWxkIG5vdCBiZSBmZXRjaGVk
LiIpOwogICAgICAgICAvLyBOb3RlIHRoYXQgY2FjaGVVcGRhdGVGYWlsZWQoKSBjYW4gY2F1c2Ug
dGhlIGNhY2hlIGdyb3VwIHRvIGJlIGRlbGV0ZWQuCiAgICAgICAgIGNhY2hlVXBkYXRlRmFpbGVk
KCk7CiAgICAgfSBlbHNlIHsKQEAgLTY5MSwxMyArNjkxLDEzIEBAIHZvaWQgQXBwbGljYXRpb25D
YWNoZUdyb3VwOjpkaWRSZWNlaXZlTWFuaWZlc3RSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3Bv
bnNlJiByCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChyZXNwb25zZS5odHRwU3RhdHVzQ29k
ZSgpIC8gMTAwICE9IDIpIHsKLSAgICAgICAgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+YWRkQ29uc29s
ZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6T3RoZXIsIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIEFTQ0lJ
TGl0ZXJhbCgiQXBwbGljYXRpb24gQ2FjaGUgbWFuaWZlc3QgY291bGQgbm90IGJlIGZldGNoZWQu
IikpOworICAgICAgICBtX2ZyYW1lLT5kb2N1bWVudCgpLmFkZENvbnNvbGVNZXNzYWdlKE1lc3Nh
Z2VTb3VyY2U6Ok90aGVyLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBBU0NJSUxpdGVyYWwoIkFwcGxp
Y2F0aW9uIENhY2hlIG1hbmlmZXN0IGNvdWxkIG5vdCBiZSBmZXRjaGVkLiIpKTsKICAgICAgICAg
Y2FjaGVVcGRhdGVGYWlsZWQoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIGlmIChy
ZXNwb25zZS51cmwoKSAhPSBtX21hbmlmZXN0SGFuZGxlLT5maXJzdFJlcXVlc3QoKS51cmwoKSkg
ewotICAgICAgICBtX2ZyYW1lLT5kb2N1bWVudCgpLT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdl
U291cmNlOjpPdGhlciwgTWVzc2FnZUxldmVsOjpFcnJvciwgQVNDSUlMaXRlcmFsKCJBcHBsaWNh
dGlvbiBDYWNoZSBtYW5pZmVzdCBjb3VsZCBub3QgYmUgZmV0Y2hlZCwgYmVjYXVzZSBhIHJlZGly
ZWN0aW9uIHdhcyBhdHRlbXB0ZWQuIikpOworICAgICAgICBtX2ZyYW1lLT5kb2N1bWVudCgpLmFk
ZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6Ok90aGVyLCBNZXNzYWdlTGV2ZWw6OkVycm9y
LCBBU0NJSUxpdGVyYWwoIkFwcGxpY2F0aW9uIENhY2hlIG1hbmlmZXN0IGNvdWxkIG5vdCBiZSBm
ZXRjaGVkLCBiZWNhdXNlIGEgcmVkaXJlY3Rpb24gd2FzIGF0dGVtcHRlZC4iKSk7CiAgICAgICAg
IGNhY2hlVXBkYXRlRmFpbGVkKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC03MTcsNyAr
NzE3LDcgQEAgdm9pZCBBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OmRpZEZpbmlzaExvYWRpbmdNYW5p
ZmVzdCgpCiAKICAgICBpZiAoIWlzVXBncmFkZUF0dGVtcHQgJiYgIW1fbWFuaWZlc3RSZXNvdXJj
ZSkgewogICAgICAgICAvLyBUaGUgc2VydmVyIHJldHVybmVkIDMwNCBOb3QgTW9kaWZpZWQgZXZl
biB0aG91Z2ggd2UgZGlkbid0IHNlbmQgYSBjb25kaXRpb25hbCByZXF1ZXN0LgotICAgICAgICBt
X2ZyYW1lLT5kb2N1bWVudCgpLT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpPdGhl
ciwgTWVzc2FnZUxldmVsOjpFcnJvciwgQVNDSUlMaXRlcmFsKCJBcHBsaWNhdGlvbiBDYWNoZSBt
YW5pZmVzdCBjb3VsZCBub3QgYmUgZmV0Y2hlZCBiZWNhdXNlIG9mIGFuIHVuZXhwZWN0ZWQgMzA0
IE5vdCBNb2RpZmllZCBzZXJ2ZXIgcmVzcG9uc2UuIikpOworICAgICAgICBtX2ZyYW1lLT5kb2N1
bWVudCgpLmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6Ok90aGVyLCBNZXNzYWdlTGV2
ZWw6OkVycm9yLCBBU0NJSUxpdGVyYWwoIkFwcGxpY2F0aW9uIENhY2hlIG1hbmlmZXN0IGNvdWxk
IG5vdCBiZSBmZXRjaGVkIGJlY2F1c2Ugb2YgYW4gdW5leHBlY3RlZCAzMDQgTm90IE1vZGlmaWVk
IHNlcnZlciByZXNwb25zZS4iKSk7CiAgICAgICAgIGNhY2hlVXBkYXRlRmFpbGVkKCk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CkBAIC03NDMsNyArNzQzLDcgQEAgdm9pZCBBcHBsaWNhdGlvbkNh
Y2hlR3JvdXA6OmRpZEZpbmlzaExvYWRpbmdNYW5pZmVzdCgpCiAgICAgTWFuaWZlc3QgbWFuaWZl
c3Q7CiAgICAgaWYgKCFwYXJzZU1hbmlmZXN0KG1fbWFuaWZlc3RVUkwsIG1fbWFuaWZlc3RSZXNv
dXJjZS0+ZGF0YSgpLT5kYXRhKCksIG1fbWFuaWZlc3RSZXNvdXJjZS0+ZGF0YSgpLT5zaXplKCks
IG1hbmlmZXN0KSkgewogICAgICAgICAvLyBBdCB0aGUgdGltZSBvZiB0aGlzIHdyaXRpbmcsIGxh
Y2sgb2YgIkNBQ0hFIE1BTklGRVNUIiBzaWduYXR1cmUgaXMgdGhlIG9ubHkgcmVhc29uIGZvciBw
YXJzZU1hbmlmZXN0IHRvIGZhaWwuCi0gICAgICAgIG1fZnJhbWUtPmRvY3VtZW50KCktPmFkZENv
bnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6Ok90aGVyLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBB
U0NJSUxpdGVyYWwoIkFwcGxpY2F0aW9uIENhY2hlIG1hbmlmZXN0IGNvdWxkIG5vdCBiZSBwYXJz
ZWQuIERvZXMgaXQgc3RhcnQgd2l0aCBDQUNIRSBNQU5JRkVTVD8iKSk7CisgICAgICAgIG1fZnJh
bWUtPmRvY3VtZW50KCkuYWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6T3RoZXIsIE1l
c3NhZ2VMZXZlbDo6RXJyb3IsIEFTQ0lJTGl0ZXJhbCgiQXBwbGljYXRpb24gQ2FjaGUgbWFuaWZl
c3QgY291bGQgbm90IGJlIHBhcnNlZC4gRG9lcyBpdCBzdGFydCB3aXRoIENBQ0hFIE1BTklGRVNU
PyIpKTsKICAgICAgICAgY2FjaGVVcGRhdGVGYWlsZWQoKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KQEAgLTkzMiw3ICs5MzIsNyBAQCB2b2lkIEFwcGxpY2F0aW9uQ2FjaGVHcm91cDo6Y2hlY2tJ
ZkxvYWRJc0NvbXBsZXRlKCkKICAgICAgICAgICAgICAgICAvLyBXZSByYW4gb3V0IG9mIHNwYWNl
IGZvciB0aGlzIG9yaWdpbi4gRmFsbCBkb3duIHRvIHRoZSBub3JtYWwgZXJyb3IgaGFuZGxpbmcK
ICAgICAgICAgICAgICAgICAvLyBhZnRlciByZWNvcmRpbmcgdGhpcyBzdGF0ZS4KICAgICAgICAg
ICAgICAgICBtX29yaWdpblF1b3RhRXhjZWVkZWRQcmV2aW91c2x5ID0gdHJ1ZTsKLSAgICAgICAg
ICAgICAgICBtX2ZyYW1lLT5kb2N1bWVudCgpLT5hZGRDb25zb2xlTWVzc2FnZShNZXNzYWdlU291
cmNlOjpPdGhlciwgTWVzc2FnZUxldmVsOjpFcnJvciwgQVNDSUlMaXRlcmFsKCJBcHBsaWNhdGlv
biBDYWNoZSB1cGRhdGUgZmFpbGVkLCBiZWNhdXNlIHNpemUgcXVvdGEgd2FzIGV4Y2VlZGVkLiIp
KTsKKyAgICAgICAgICAgICAgICBtX2ZyYW1lLT5kb2N1bWVudCgpLmFkZENvbnNvbGVNZXNzYWdl
KE1lc3NhZ2VTb3VyY2U6Ok90aGVyLCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBBU0NJSUxpdGVyYWwo
IkFwcGxpY2F0aW9uIENhY2hlIHVwZGF0ZSBmYWlsZWQsIGJlY2F1c2Ugc2l6ZSBxdW90YSB3YXMg
ZXhjZWVkZWQuIikpOwogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBpZiAoZmFpbHVyZVJl
YXNvbiA9PSBBcHBsaWNhdGlvbkNhY2hlU3RvcmFnZTo6VG90YWxRdW90YVJlYWNoZWQgJiYgIW1f
Y2FsbGVkUmVhY2hlZE1heEFwcENhY2hlU2l6ZSkgewpAQCAtMTE1MCw3ICsxMTUwLDcgQEAgdm9p
ZCBBcHBsaWNhdGlvbkNhY2hlR3JvdXA6OnBvc3RMaXN0ZW5lclRhc2soQXBwbGljYXRpb25DYWNo
ZUhvc3Q6OkV2ZW50SUQgZXZlbnQKICAgICAKICAgICBBU1NFUlQoZnJhbWUtPmxvYWRlcigpLmRv
Y3VtZW50TG9hZGVyKCkgPT0gbG9hZGVyKTsKIAotICAgIGZyYW1lLT5kb2N1bWVudCgpLT5wb3N0
VGFzayhDYWxsQ2FjaGVMaXN0ZW5lclRhc2s6OmNyZWF0ZShsb2FkZXIsIGV2ZW50SUQsIHByb2dy
ZXNzVG90YWwsIHByb2dyZXNzRG9uZSkpOworICAgIGZyYW1lLT5kb2N1bWVudCgpLnBvc3RUYXNr
KENhbGxDYWNoZUxpc3RlbmVyVGFzazo6Y3JlYXRlKGxvYWRlciwgZXZlbnRJRCwgcHJvZ3Jlc3NU
b3RhbCwgcHJvZ3Jlc3NEb25lKSk7CiB9CiAKIHZvaWQgQXBwbGljYXRpb25DYWNoZUdyb3VwOjpz
ZXRVcGRhdGVTdGF0dXMoVXBkYXRlU3RhdHVzIHN0YXR1cykKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9hcHBjYWNoZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvQXBwbGljYXRpb25DYWNoZUhvc3QuY3BwCmluZGV4IGM4
ZjA4MTQuLmQxYmYyNzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcHBjYWNo
ZS9BcHBsaWNhdGlvbkNhY2hlSG9zdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Fw
cGNhY2hlL0FwcGxpY2F0aW9uQ2FjaGVIb3N0LmNwcApAQCAtNDkwLDcgKzQ5MCw3IEBAIGJvb2wg
QXBwbGljYXRpb25DYWNoZUhvc3Q6OmlzQXBwbGljYXRpb25DYWNoZUJsb2NrZWRGb3JSZXF1ZXN0
KGNvbnN0IFJlc291cmNlUmVxCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIFJlZlB0cjxT
ZWN1cml0eU9yaWdpbj4gb3JpZ2luID0gU2VjdXJpdHlPcmlnaW46OmNyZWF0ZShyZXF1ZXN0LnVy
bCgpKTsKLSAgICByZXR1cm4gIW9yaWdpbi0+Y2FuQWNjZXNzQXBwbGljYXRpb25DYWNoZShmcmFt
ZS0+ZG9jdW1lbnQoKS0+dG9wT3JpZ2luKCkpOworICAgIHJldHVybiAhb3JpZ2luLT5jYW5BY2Nl
c3NBcHBsaWNhdGlvbkNhY2hlKGZyYW1lLT5kb2N1bWVudCgpLnRvcE9yaWdpbigpKTsKIH0KIAog
fSAgLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9hcHBjYWNoZS9ET01BcHBsaWNhdGlvbkNhY2hlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9hcHBjYWNoZS9ET01BcHBsaWNhdGlvbkNhY2hlLmNwcAppbmRleCA1NjQzN2E4Li4zY2YxMzc5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXBwY2FjaGUvRE9NQXBwbGljYXRp
b25DYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2FwcGNhY2hlL0RPTUFwcGxp
Y2F0aW9uQ2FjaGUuY3BwCkBAIC0xMDcsNyArMTA3LDcgQEAgdm9pZCBET01BcHBsaWNhdGlvbkNh
Y2hlOjphYm9ydCgpCiBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBET01BcHBsaWNhdGlvbkNhY2hl
OjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkgY29uc3QKIHsKICAgICBpZiAobV9mcmFtZSkKLSAg
ICAgICAgcmV0dXJuIG1fZnJhbWUtPmRvY3VtZW50KCk7CisgICAgICAgIHJldHVybiAmbV9mcmFt
ZS0+ZG9jdW1lbnQoKTsKICAgICByZXR1cm4gMDsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvbG9hZGVyL2FyY2hpdmUvY2YvTGVnYWN5V2ViQXJjaGl2ZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9sb2FkZXIvYXJjaGl2ZS9jZi9MZWdhY3lXZWJBcmNoaXZlLmNwcAppbmRleCBkMzdmMWI4
Li4xY2NjYWI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9jZi9M
ZWdhY3lXZWJBcmNoaXZlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9j
Zi9MZWdhY3lXZWJBcmNoaXZlLmNwcApAQCAtNTUyLDcgKzU1Miw3IEBAIFBhc3NSZWZQdHI8TGVn
YWN5V2ViQXJjaGl2ZT4gTGVnYWN5V2ViQXJjaGl2ZTo6Y3JlYXRlKGNvbnN0IFN0cmluZyYgbWFy
a3VwU3RyaW5nCiAKICAgICAgICAgICAgICAgICBSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdChzdWJy
ZXNvdXJjZVVSTCk7CiAjaWYgRU5BQkxFKENBQ0hFX1BBUlRJVElPTklORykKLSAgICAgICAgICAg
ICAgICByZXF1ZXN0LnNldENhY2hlUGFydGl0aW9uKGZyYW1lLT5kb2N1bWVudCgpLT50b3BPcmln
aW4oKS0+Y2FjaGVQYXJ0aXRpb24oKSk7CisgICAgICAgICAgICAgICAgcmVxdWVzdC5zZXRDYWNo
ZVBhcnRpdGlvbihmcmFtZS0+ZG9jdW1lbnQoKS50b3BPcmlnaW4oKS0+Y2FjaGVQYXJ0aXRpb24o
KSk7CiAjZW5kaWYKICAgICAgICAgICAgICAgICBDYWNoZWRSZXNvdXJjZSogY2FjaGVkUmVzb3Vy
Y2UgPSBtZW1vcnlDYWNoZSgpLT5yZXNvdXJjZUZvclJlcXVlc3QocmVxdWVzdCwgZnJhbWUtPnBh
Z2UoKS0+c2Vzc2lvbklEKCkpOwogICAgICAgICAgICAgICAgIGlmIChjYWNoZWRSZXNvdXJjZSkg
ewpAQCAtNTg5LDcgKzU4OSw3IEBAIFBhc3NSZWZQdHI8TGVnYWN5V2ViQXJjaGl2ZT4gTGVnYWN5
V2ViQXJjaGl2ZTo6Y3JlYXRlRnJvbVNlbGVjdGlvbihGcmFtZSogZnJhbWUpCiAgICAgaWYgKCFm
cmFtZSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBEb2N1bWVudCogZG9jdW1lbnQg
PSBmcmFtZS0+ZG9jdW1lbnQoKTsKKyAgICBEb2N1bWVudCogZG9jdW1lbnQgPSAmZnJhbWUtPmRv
Y3VtZW50KCk7CiAgICAgaWYgKCFkb2N1bWVudCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MQXJj
aGl2ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvYXJjaGl2ZS9taHRtbC9NSFRNTEFyY2hp
dmUuY3BwCmluZGV4IDQ3MDhiZjEuLmJlMTNlYjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9hcmNoaXZlL21odG1sL01IVE1MQXJjaGl2ZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL2FyY2hpdmUvbWh0bWwvTUhUTUxBcmNoaXZlLmNwcApAQCAtMTU4LDEzICsxNTgs
MTMgQEAgUGFzc1JlZlB0cjxTaGFyZWRCdWZmZXI+IE1IVE1MQXJjaGl2ZTo6Z2VuZXJhdGVNSFRN
TERhdGEoUGFnZSogcGFnZSwgYm9vbCB1c2VCaW4KICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgi
RnJvbTogPFNhdmVkIGJ5IFdlYktpdD5cclxuIik7CiAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQo
IlN1YmplY3Q6ICIpOwogICAgIC8vIFdlIHJlcGxhY2Ugbm9uIEFTQ0lJIGNoYXJhY3RlcnMgd2l0
aCAnPycgY2hhcmFjdGVycyB0byBtYXRjaCBJRSdzIGJlaGF2aW9yLgotICAgIHN0cmluZ0J1aWxk
ZXIuYXBwZW5kKHJlcGxhY2VOb25QcmludGFibGVDaGFyYWN0ZXJzKHBhZ2UtPm1haW5GcmFtZSgp
LmRvY3VtZW50KCktPnRpdGxlKCkpKTsKKyAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChyZXBsYWNl
Tm9uUHJpbnRhYmxlQ2hhcmFjdGVycyhwYWdlLT5tYWluRnJhbWUoKS5kb2N1bWVudCgpLnRpdGxl
KCkpKTsKICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZCgiXHJcbkRhdGU6ICIpOwogICAgIHN0cmlu
Z0J1aWxkZXIuYXBwZW5kKGRhdGVTdHJpbmcpOwogICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCJc
clxuTUlNRS1WZXJzaW9uOiAxLjBcclxuIik7CiAgICAgc3RyaW5nQnVpbGRlci5hcHBlbmQoIkNv
bnRlbnQtVHlwZTogbXVsdGlwYXJ0L3JlbGF0ZWQ7XHJcbiIpOwogICAgIHN0cmluZ0J1aWxkZXIu
YXBwZW5kKCJcdHR5cGU9XCIiKTsKLSAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChwYWdlLT5tYWlu
RnJhbWUoKS5kb2N1bWVudCgpLT5zdWdnZXN0ZWRNSU1FVHlwZSgpKTsKKyAgICBzdHJpbmdCdWls
ZGVyLmFwcGVuZChwYWdlLT5tYWluRnJhbWUoKS5kb2N1bWVudCgpLnN1Z2dlc3RlZE1JTUVUeXBl
KCkpOwogICAgIHN0cmluZ0J1aWxkZXIuYXBwZW5kKCJcIjtcclxuIik7CiAgICAgc3RyaW5nQnVp
bGRlci5hcHBlbmQoIlx0Ym91bmRhcnk9XCIiKTsKICAgICBzdHJpbmdCdWlsZGVyLmFwcGVuZChi
b3VuZGFyeSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
UmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJl
c291cmNlTG9hZGVyLmNwcAppbmRleCBkOTBlNDA4Li45NjVjYzcwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHAKQEAgLTI3
Niw3ICsyNzYsNyBAQCBib29sIENhY2hlZFJlc291cmNlTG9hZGVyOjpjaGVja0luc2VjdXJlQ29u
dGVudChDYWNoZWRSZXNvdXJjZTo6VHlwZSB0eXBlLCBjb25zdAogICAgICAgICAvLyBUaGVzZSBy
ZXNvdXJjZXMgY2FuIGNvcnJ1cHQgb25seSB0aGUgZnJhbWUncyBwaXhlbHMuCiAgICAgICAgIGlm
IChGcmFtZSogZiA9IGZyYW1lKCkpIHsKICAgICAgICAgICAgIEZyYW1lJiB0b3BGcmFtZSA9IGYt
PnRyZWUoKS50b3AoKTsKLSAgICAgICAgICAgIGlmICghdG9wRnJhbWUubG9hZGVyKCkubWl4ZWRD
b250ZW50Q2hlY2tlcigpLmNhbkRpc3BsYXlJbnNlY3VyZUNvbnRlbnQodG9wRnJhbWUuZG9jdW1l
bnQoKS0+c2VjdXJpdHlPcmlnaW4oKSwgdXJsKSkKKyAgICAgICAgICAgIGlmICghdG9wRnJhbWUu
bG9hZGVyKCkubWl4ZWRDb250ZW50Q2hlY2tlcigpLmNhbkRpc3BsYXlJbnNlY3VyZUNvbnRlbnQo
dG9wRnJhbWUuZG9jdW1lbnQoKS5zZWN1cml0eU9yaWdpbigpLCB1cmwpKQogICAgICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogICAgICAgICBicmVhazsKQEAgLTY0Niw3ICs2
NDYsNyBAQCB2b2lkIENhY2hlZFJlc291cmNlTG9hZGVyOjpwcmludEFjY2Vzc0RlbmllZE1lc3Nh
Z2UoY29uc3QgVVJMJiB1cmwpIGNvbnN0CiAgICAgZWxzZQogICAgICAgICBtZXNzYWdlID0gIlVu
c2FmZSBhdHRlbXB0IHRvIGxvYWQgVVJMICIgKyB1cmwuc3RyaW5nQ2VudGVyRWxsaXBzaXplZFRv
TGVuZ3RoKCkgKyAiIGZyb20gZnJhbWUgd2l0aCBVUkwgIiArIG1fZG9jdW1lbnQtPnVybCgpLnN0
cmluZ0NlbnRlckVsbGlwc2l6ZWRUb0xlbmd0aCgpICsgIi4gRG9tYWlucywgcHJvdG9jb2xzIGFu
ZCBwb3J0cyBtdXN0IG1hdGNoLlxuIjsKIAotICAgIGZyYW1lKCktPmRvY3VtZW50KCktPmFkZENv
bnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OlNlY3VyaXR5LCBNZXNzYWdlTGV2ZWw6OkVycm9y
LCBtZXNzYWdlKTsKKyAgICBmcmFtZSgpLT5kb2N1bWVudCgpLmFkZENvbnNvbGVNZXNzYWdlKE1l
c3NhZ2VTb3VyY2U6OlNlY3VyaXR5LCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBtZXNzYWdlKTsKIH0K
IAogdm9pZCBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6c2V0QXV0b0xvYWRJbWFnZXMoYm9vbCBlbmFi
bGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uQ29udHJvbGxl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uQ29udHJvbGxlci5jcHAKaW5k
ZXggZTRhZGVhZS4uNzJiYmEyMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2lj
b24vSWNvbkNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9pY29uL0lj
b25Db250cm9sbGVyLmNwcApAQCAtNzAsNyArNzAsNyBAQCBVUkwgSWNvbkNvbnRyb2xsZXI6OnVy
bCgpCiBJY29uVVJMIEljb25Db250cm9sbGVyOjppY29uVVJMKEljb25UeXBlIGljb25UeXBlKSBj
b25zdAogewogICAgIEljb25VUkwgcmVzdWx0OwotICAgIGNvbnN0IFZlY3RvcjxJY29uVVJMPiYg
aWNvblVSTHMgPSBtX2ZyYW1lLmRvY3VtZW50KCktPmljb25VUkxzKGljb25UeXBlKTsKKyAgICBj
b25zdCBWZWN0b3I8SWNvblVSTD4mIGljb25VUkxzID0gbV9mcmFtZS5kb2N1bWVudCgpLmljb25V
UkxzKGljb25UeXBlKTsKICAgICBWZWN0b3I8SWNvblVSTD46OmNvbnN0X2l0ZXJhdG9yIGl0ZXIo
aWNvblVSTHMuYmVnaW4oKSk7CiAgICAgZm9yICg7IGl0ZXIgIT0gaWNvblVSTHMuZW5kKCk7ICsr
aXRlcikgewogICAgICAgICBpZiAocmVzdWx0Lm1faWNvblVSTC5pc0VtcHR5KCkgfHwgIWl0ZXIt
Pm1fbWltZVR5cGUuaXNFbXB0eSgpKQpAQCAtMTA1LDcgKzEwNSw3IEBAIEljb25VUkxzIEljb25D
b250cm9sbGVyOjp1cmxzRm9yVHlwZXMoaW50IGljb25UeXBlc01hc2spCiAjZW5kaWYKIAogICAg
IC8vIEZpbmFsbHksIGFwcGVuZCBhbGwgcmVtYWluaW5nIGljb25zIG9mIHRoaXMgdHlwZS4KLSAg
ICBjb25zdCBWZWN0b3I8SWNvblVSTD4mIGFsbEljb25VUkxzID0gbV9mcmFtZS5kb2N1bWVudCgp
LT5pY29uVVJMcyhpY29uVHlwZXNNYXNrKTsKKyAgICBjb25zdCBWZWN0b3I8SWNvblVSTD4mIGFs
bEljb25VUkxzID0gbV9mcmFtZS5kb2N1bWVudCgpLmljb25VUkxzKGljb25UeXBlc01hc2spOwog
ICAgIGZvciAoVmVjdG9yPEljb25VUkw+Ojpjb25zdF9pdGVyYXRvciBpdGVyID0gYWxsSWNvblVS
THMuYmVnaW4oKTsgaXRlciAhPSBhbGxJY29uVVJMcy5lbmQoKTsgKytpdGVyKSB7CiAgICAgICAg
IGludCBpOwogICAgICAgICBpbnQgaWNvbkNvdW50ID0gaWNvblVSTHMuc2l6ZSgpOwpAQCAtMTIy
LDggKzEyMiw4IEBAIEljb25VUkxzIEljb25Db250cm9sbGVyOjp1cmxzRm9yVHlwZXMoaW50IGlj
b25UeXBlc01hc2spCiAKIHZvaWQgSWNvbkNvbnRyb2xsZXI6OmNvbW1pdFRvRGF0YWJhc2UoY29u
c3QgVVJMJiBpY29uKQogewotICAgIExPRyhJY29uRGF0YWJhc2UsICJDb21taXR0aW5nIGljb25V
UkwgJXMgdG8gZGF0YWJhc2UgZm9yIHBhZ2VVUkxzICVzIGFuZCAlcyIsIGljb24uc3RyaW5nKCku
YXNjaWkoKS5kYXRhKCksIG1fZnJhbWUuZG9jdW1lbnQoKS0+dXJsKCkuc3RyaW5nKCkuYXNjaWko
KS5kYXRhKCksIG1fZnJhbWUubG9hZGVyKCkuaW5pdGlhbFJlcXVlc3QoKS51cmwoKS5zdHJpbmco
KS5hc2NpaSgpLmRhdGEoKSk7Ci0gICAgaWNvbkRhdGFiYXNlKCkuc2V0SWNvblVSTEZvclBhZ2VV
UkwoaWNvbi5zdHJpbmcoKSwgbV9mcmFtZS5kb2N1bWVudCgpLT51cmwoKS5zdHJpbmcoKSk7Cisg
ICAgTE9HKEljb25EYXRhYmFzZSwgIkNvbW1pdHRpbmcgaWNvblVSTCAlcyB0byBkYXRhYmFzZSBm
b3IgcGFnZVVSTHMgJXMgYW5kICVzIiwgaWNvbi5zdHJpbmcoKS5hc2NpaSgpLmRhdGEoKSwgbV9m
cmFtZS5kb2N1bWVudCgpLnVybCgpLnN0cmluZygpLmFzY2lpKCkuZGF0YSgpLCBtX2ZyYW1lLmxv
YWRlcigpLmluaXRpYWxSZXF1ZXN0KCkudXJsKCkuc3RyaW5nKCkuYXNjaWkoKS5kYXRhKCkpOwor
ICAgIGljb25EYXRhYmFzZSgpLnNldEljb25VUkxGb3JQYWdlVVJMKGljb24uc3RyaW5nKCksIG1f
ZnJhbWUuZG9jdW1lbnQoKS51cmwoKS5zdHJpbmcoKSk7CiAgICAgaWNvbkRhdGFiYXNlKCkuc2V0
SWNvblVSTEZvclBhZ2VVUkwoaWNvbi5zdHJpbmcoKSwgbV9mcmFtZS5sb2FkZXIoKS5pbml0aWFs
UmVxdWVzdCgpLnVybCgpLnN0cmluZygpKTsKIH0KIApAQCAtMTM5LDcgKzEzOSw3IEBAIHZvaWQg
SWNvbkNvbnRyb2xsZXI6OnN0YXJ0TG9hZGVyKCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgQVNT
RVJUKCFtX2ZyYW1lLnRyZWUoKS5wYXJlbnQoKSk7Ci0gICAgaWYgKCFkb2N1bWVudENhbkhhdmVJ
Y29uKG1fZnJhbWUuZG9jdW1lbnQoKS0+dXJsKCkpKQorICAgIGlmICghZG9jdW1lbnRDYW5IYXZl
SWNvbihtX2ZyYW1lLmRvY3VtZW50KCkudXJsKCkpKQogICAgICAgICByZXR1cm47CiAKICAgICBV
UkwgaWNvblVSTCh1cmwoKSk7CkBAIC0yMjgsNyArMjI4LDcgQEAgdm9pZCBJY29uQ29udHJvbGxl
cjo6Y29udGludWVMb2FkV2l0aERlY2lzaW9uKEljb25Mb2FkRGVjaXNpb24gaWNvbkxvYWREZWNp
c2lvbikKICAgICAgICAgaWYgKCFpY29uRGF0YWJhc2UoKS5zeW5jaHJvbm91c0ljb25EYXRhS25v
d25Gb3JJY29uVVJMKHVybFN0cmluZykpIHsKICAgICAgICAgICAgIExPRyhJY29uRGF0YWJhc2Us
ICJUb2xkIG5vdCB0byBsb2FkIGljb24gJXMgYnV0IGljb24gZGF0YSBpcyBub3QgeWV0IGF2YWls
YWJsZSAtIHJlZ2lzdGVyaW5nIGZvciBub3RpZmljYXRpb24gYW5kIHJlcXVlc3RpbmcgbG9hZCBm
cm9tIGRpc2siLCB1cmxTdHJpbmcuYXNjaWkoKS5kYXRhKCkpOwogICAgICAgICAgICAgbV9mcmFt
ZS5sb2FkZXIoKS5jbGllbnQoKS5yZWdpc3RlckZvckljb25Ob3RpZmljYXRpb24oKTsKLSAgICAg
ICAgICAgIGljb25EYXRhYmFzZSgpLnN5bmNocm9ub3VzSWNvbkZvclBhZ2VVUkwobV9mcmFtZS5k
b2N1bWVudCgpLT51cmwoKS5zdHJpbmcoKSwgSW50U2l6ZSgwLCAwKSk7CisgICAgICAgICAgICBp
Y29uRGF0YWJhc2UoKS5zeW5jaHJvbm91c0ljb25Gb3JQYWdlVVJMKG1fZnJhbWUuZG9jdW1lbnQo
KS51cmwoKS5zdHJpbmcoKSwgSW50U2l6ZSgwLCAwKSk7CiAgICAgICAgICAgICBpY29uRGF0YWJh
c2UoKS5zeW5jaHJvbm91c0ljb25Gb3JQYWdlVVJMKG1fZnJhbWUubG9hZGVyKCkuaW5pdGlhbFJl
cXVlc3QoKS51cmwoKS5zdHJpbmcoKSwgSW50U2l6ZSgwLCAwKSk7CiAgICAgICAgIH0gZWxzZQog
ICAgICAgICAgICAgbV9mcmFtZS5sb2FkZXIoKS5jbGllbnQoKS5kaXNwYXRjaERpZFJlY2VpdmVJ
Y29uKCk7CkBAIC0yNTUsNyArMjU1LDcgQEAgYm9vbCBJY29uQ29udHJvbGxlcjo6YXBwZW5kVG9J
Y29uVVJMcyhJY29uVHlwZSBpY29uVHlwZSwgSWNvblVSTHMqIGljb25VUkxzKQogSWNvblVSTCBJ
Y29uQ29udHJvbGxlcjo6ZGVmYXVsdFVSTChJY29uVHlwZSBpY29uVHlwZSkKIHsKICAgICAvLyBE
b24ndCByZXR1cm4gYSBmYXZpY29uIGljb25VUkwgdW5sZXNzIHdlJ3JlIGh0dHAgb3IgaHR0cHMK
LSAgICBVUkwgZG9jdW1lbnRVUkwgPSBtX2ZyYW1lLmRvY3VtZW50KCktPnVybCgpOworICAgIFVS
TCBkb2N1bWVudFVSTCA9IG1fZnJhbWUuZG9jdW1lbnQoKS51cmwoKTsKICAgICBpZiAoIWRvY3Vt
ZW50VVJMLnByb3RvY29sSXNJbkhUVFBGYW1pbHkoKSkKICAgICAgICAgcmV0dXJuIEljb25VUkwo
KTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2ljb24vSWNvbkxvYWRlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uTG9hZGVyLmNwcAppbmRleCBhZTUw
ZTg3Li40NjdkOGZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaWNvbi9JY29u
TG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvaWNvbi9JY29uTG9hZGVyLmNw
cApAQCAtNTUsMTUgKzU1LDE2IEBAIEljb25Mb2FkZXI6On5JY29uTG9hZGVyKCkKIAogdm9pZCBJ
Y29uTG9hZGVyOjpzdGFydExvYWRpbmcoKQogewotICAgIGlmIChtX3Jlc291cmNlIHx8ICFtX2Zy
YW1lLmRvY3VtZW50KCkpCisgICAgaWYgKG1fcmVzb3VyY2UpCiAgICAgICAgIHJldHVybjsKKyAg
ICBBU1NFUlQobV9mcmFtZS5kb2N1bWVudCgpKTsKIAogICAgIENhY2hlZFJlc291cmNlUmVxdWVz
dCByZXF1ZXN0KFJlc291cmNlUmVxdWVzdChtX2ZyYW1lLmxvYWRlcigpLmljb24oKS51cmwoKSks
IFJlc291cmNlTG9hZGVyT3B0aW9ucyhTZW5kQ2FsbGJhY2tzLCBTbmlmZkNvbnRlbnQsIEJ1ZmZl
ckRhdGEsIERvTm90QWxsb3dTdG9yZWRDcmVkZW50aWFscywgRG9Ob3RBc2tDbGllbnRGb3JBbnlD
cmVkZW50aWFscywgRG9TZWN1cml0eUNoZWNrLCBVc2VEZWZhdWx0T3JpZ2luUmVzdHJpY3Rpb25z
Rm9yVHlwZSkpOwogCiAgICAgcmVxdWVzdC5tdXRhYmxlUmVzb3VyY2VSZXF1ZXN0KCkuc2V0UHJp
b3JpdHkoUmVzb3VyY2VMb2FkUHJpb3JpdHlMb3cpOwogICAgIHJlcXVlc3Quc2V0SW5pdGlhdG9y
KGNhY2hlZFJlc291cmNlUmVxdWVzdEluaXRpYXRvcnMoKS5pY29uKTsKIAotICAgIG1fcmVzb3Vy
Y2UgPSBtX2ZyYW1lLmRvY3VtZW50KCktPmNhY2hlZFJlc291cmNlTG9hZGVyKCktPnJlcXVlc3RS
YXdSZXNvdXJjZShyZXF1ZXN0KTsKKyAgICBtX3Jlc291cmNlID0gbV9mcmFtZS5kb2N1bWVudCgp
LmNhY2hlZFJlc291cmNlTG9hZGVyKCktPnJlcXVlc3RSYXdSZXNvdXJjZShyZXF1ZXN0KTsKICAg
ICBpZiAobV9yZXNvdXJjZSkKICAgICAgICAgbV9yZXNvdXJjZS0+YWRkQ2xpZW50KHRoaXMpOwog
ICAgIGVsc2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3BhZ2UvQ2hyb21lLmNwcAppbmRleCA0ZGNkNjM1Li4zNjViNjYzIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Nocm9tZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9DaHJvbWUuY3BwCkBAIC01NDcsOCArNTQ3LDggQEAgdm9pZCBDaHJvbWU6OndpbmRv
d1NjcmVlbkRpZENoYW5nZShQbGF0Zm9ybURpc3BsYXlJRCBkaXNwbGF5SUQpCiAgICAgbV9kaXNw
bGF5SUQgPSBkaXNwbGF5SUQ7CiAKICAgICBmb3IgKEZyYW1lKiBmcmFtZSA9ICZtX3BhZ2UubWFp
bkZyYW1lKCk7IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50cmVlKCkudHJhdmVyc2VOZXh0KCkpIHsK
LSAgICAgICAgaWYgKGZyYW1lLT5kb2N1bWVudCgpKQotICAgICAgICAgICAgZnJhbWUtPmRvY3Vt
ZW50KCktPndpbmRvd1NjcmVlbkRpZENoYW5nZShkaXNwbGF5SUQpOworICAgICAgICBBU1NFUlQo
ZnJhbWUtPmRvY3VtZW50KCkpOworICAgICAgICBmcmFtZS0+ZG9jdW1lbnQoKS53aW5kb3dTY3Jl
ZW5EaWRDaGFuZ2UoZGlzcGxheUlEKTsKICAgICB9CiB9CiAKQEAgLTYxNiw3ICs2MTYsNyBAQCB2
b2lkIENocm9tZTo6ZGlkUmVjZWl2ZURvY1R5cGUoRnJhbWUqIGZyYW1lKQogICAgICAgICByZXR1
cm47CiAKICAgICBib29sIGhhc01vYmlsZURvY1R5cGUgPSBmYWxzZTsKLSAgICBpZiAoRG9jdW1l
bnRUeXBlKiBkb2N1bWVudFR5cGUgPSBmcmFtZS0+ZG9jdW1lbnQoKS0+ZG9jdHlwZSgpKQorICAg
IGlmIChEb2N1bWVudFR5cGUqIGRvY3VtZW50VHlwZSA9IGZyYW1lLT5kb2N1bWVudCgpLmRvY3R5
cGUoKSkKICAgICAgICAgaGFzTW9iaWxlRG9jVHlwZSA9IGRvY3VtZW50VHlwZS0+cHVibGljSWQo
KS5jb250YWlucygieGh0bWwgbW9iaWxlIiwgZmFsc2UpOwogICAgIG1fY2xpZW50LmRpZFJlY2Vp
dmVNb2JpbGVEb2NUeXBlKGhhc01vYmlsZURvY1R5cGUpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUv
cGFnZS9Db250ZXh0TWVudUNvbnRyb2xsZXIuY3BwCmluZGV4IDE3YWU0NTYuLjgwOWEzODggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvQ29udGV4dE1lbnVDb250cm9sbGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0NvbnRleHRNZW51Q29udHJvbGxlci5jcHAKQEAgLTE5
OSw3ICsxOTksNyBAQCBzdGF0aWMgdm9pZCBvcGVuTmV3V2luZG93KGNvbnN0IFVSTCYgdXJsVG9M
b2FkLCBGcmFtZSogZnJhbWUpCiAgICAgaWYgKCFvbGRQYWdlKQogICAgICAgICByZXR1cm47CiAg
ICAgCi0gICAgRnJhbWVMb2FkUmVxdWVzdCByZXF1ZXN0KGZyYW1lLT5kb2N1bWVudCgpLT5zZWN1
cml0eU9yaWdpbigpLCBSZXNvdXJjZVJlcXVlc3QodXJsVG9Mb2FkLCBmcmFtZS0+bG9hZGVyKCku
b3V0Z29pbmdSZWZlcnJlcigpKSk7CisgICAgRnJhbWVMb2FkUmVxdWVzdCByZXF1ZXN0KGZyYW1l
LT5kb2N1bWVudCgpLnNlY3VyaXR5T3JpZ2luKCksIFJlc291cmNlUmVxdWVzdCh1cmxUb0xvYWQs
IGZyYW1lLT5sb2FkZXIoKS5vdXRnb2luZ1JlZmVycmVyKCkpKTsKICAgICBQYWdlKiBuZXdQYWdl
ID0gb2xkUGFnZTsKIAogICAgIG5ld1BhZ2UgPSBvbGRQYWdlLT5jaHJvbWUoKS5jcmVhdGVXaW5k
b3coZnJhbWUsIHJlcXVlc3QsIFdpbmRvd0ZlYXR1cmVzKCksIE5hdmlnYXRpb25BY3Rpb24ocmVx
dWVzdC5yZXNvdXJjZVJlcXVlc3QoKSkpOwpAQCAtMzgyLDkgKzM4Miw5IEBAIHZvaWQgQ29udGV4
dE1lbnVDb250cm9sbGVyOjpjb250ZXh0TWVudUl0ZW1TZWxlY3RlZChDb250ZXh0TWVudUl0ZW0q
IGl0ZW0pCiAgICAgICAgICAgICAgICAgcmVwbGFjZU9wdGlvbnMgfD0gUmVwbGFjZVNlbGVjdGlv
bkNvbW1hbmQ6OlNlbGVjdFJlcGxhY2VtZW50OwogICAgICAgICAgICAgfQogCi0gICAgICAgICAg
ICBEb2N1bWVudCogZG9jdW1lbnQgPSBmcmFtZS0+ZG9jdW1lbnQoKTsKKyAgICAgICAgICAgIERv
Y3VtZW50JiBkb2N1bWVudCA9IGZyYW1lLT5kb2N1bWVudCgpOwogICAgICAgICAgICAgQVNTRVJU
KGRvY3VtZW50KTsKLSAgICAgICAgICAgIFJlZlB0cjxSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZD4g
Y29tbWFuZCA9IFJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjpjcmVhdGUoKmRvY3VtZW50LCBjcmVh
dGVGcmFnbWVudEZyb21NYXJrdXAoKmRvY3VtZW50LCBpdGVtLT50aXRsZSgpLCAiIiksIHJlcGxh
Y2VPcHRpb25zKTsKKyAgICAgICAgICAgIFJlZlB0cjxSZXBsYWNlU2VsZWN0aW9uQ29tbWFuZD4g
Y29tbWFuZCA9IFJlcGxhY2VTZWxlY3Rpb25Db21tYW5kOjpjcmVhdGUoZG9jdW1lbnQsIGNyZWF0
ZUZyYWdtZW50RnJvbU1hcmt1cChkb2N1bWVudCwgaXRlbS0+dGl0bGUoKSwgIiIpLCByZXBsYWNl
T3B0aW9ucyk7CiAgICAgICAgICAgICBhcHBseUNvbW1hbmQoY29tbWFuZCk7CiAgICAgICAgICAg
ICBmcmFtZS0+c2VsZWN0aW9uKCkucmV2ZWFsU2VsZWN0aW9uKFNjcm9sbEFsaWdubWVudDo6YWxp
Z25Ub0VkZ2VJZk5lZWRlZCk7CiAgICAgICAgIH0KQEAgLTQwNSwxMiArNDA1LDEyIEBAIHZvaWQg
Q29udGV4dE1lbnVDb250cm9sbGVyOjpjb250ZXh0TWVudUl0ZW1TZWxlY3RlZChDb250ZXh0TWVu
dUl0ZW0qIGl0ZW0pCiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ29udGV4dE1lbnVJdGVtVGFn
T3Blbkxpbms6CiAgICAgICAgIGlmIChGcmFtZSogdGFyZ2V0RnJhbWUgPSBtX2NvbnRleHQuaGl0
VGVzdFJlc3VsdCgpLnRhcmdldEZyYW1lKCkpCi0gICAgICAgICAgICB0YXJnZXRGcmFtZS0+bG9h
ZGVyKCkubG9hZEZyYW1lUmVxdWVzdChGcmFtZUxvYWRSZXF1ZXN0KGZyYW1lLT5kb2N1bWVudCgp
LT5zZWN1cml0eU9yaWdpbigpLCBSZXNvdXJjZVJlcXVlc3QobV9jb250ZXh0LmhpdFRlc3RSZXN1
bHQoKS5hYnNvbHV0ZUxpbmtVUkwoKSwgZnJhbWUtPmxvYWRlcigpLm91dGdvaW5nUmVmZXJyZXIo
KSkpLCBMb2NrSGlzdG9yeTo6Tm8sIExvY2tCYWNrRm9yd2FyZExpc3Q6Ok5vLCAwLCAwLCBNYXli
ZVNlbmRSZWZlcnJlcik7CisgICAgICAgICAgICB0YXJnZXRGcmFtZS0+bG9hZGVyKCkubG9hZEZy
YW1lUmVxdWVzdChGcmFtZUxvYWRSZXF1ZXN0KGZyYW1lLT5kb2N1bWVudCgpLnNlY3VyaXR5T3Jp
Z2luKCksIFJlc291cmNlUmVxdWVzdChtX2NvbnRleHQuaGl0VGVzdFJlc3VsdCgpLmFic29sdXRl
TGlua1VSTCgpLCBmcmFtZS0+bG9hZGVyKCkub3V0Z29pbmdSZWZlcnJlcigpKSksIExvY2tIaXN0
b3J5OjpObywgTG9ja0JhY2tGb3J3YXJkTGlzdDo6Tm8sIDAsIDAsIE1heWJlU2VuZFJlZmVycmVy
KTsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgb3Blbk5ld1dpbmRvdyhtX2NvbnRleHQuaGl0
VGVzdFJlc3VsdCgpLmFic29sdXRlTGlua1VSTCgpLCBmcmFtZSk7CiAgICAgICAgIGJyZWFrOwog
ICAgIGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnT3BlbkxpbmtJblRoaXNXaW5kb3c6Ci0gICAgICAg
IGZyYW1lLT5sb2FkZXIoKS5sb2FkRnJhbWVSZXF1ZXN0KEZyYW1lTG9hZFJlcXVlc3QoZnJhbWUt
PmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCksIFJlc291cmNlUmVxdWVzdChtX2NvbnRleHQu
aGl0VGVzdFJlc3VsdCgpLmFic29sdXRlTGlua1VSTCgpLCBmcmFtZS0+bG9hZGVyKCkub3V0Z29p
bmdSZWZlcnJlcigpKSksIExvY2tIaXN0b3J5OjpObywgTG9ja0JhY2tGb3J3YXJkTGlzdDo6Tm8s
IDAsIDAsIE1heWJlU2VuZFJlZmVycmVyKTsKKyAgICAgICAgZnJhbWUtPmxvYWRlcigpLmxvYWRG
cmFtZVJlcXVlc3QoRnJhbWVMb2FkUmVxdWVzdChmcmFtZS0+ZG9jdW1lbnQoKS5zZWN1cml0eU9y
aWdpbigpLCBSZXNvdXJjZVJlcXVlc3QobV9jb250ZXh0LmhpdFRlc3RSZXN1bHQoKS5hYnNvbHV0
ZUxpbmtVUkwoKSwgZnJhbWUtPmxvYWRlcigpLm91dGdvaW5nUmVmZXJyZXIoKSkpLCBMb2NrSGlz
dG9yeTo6Tm8sIExvY2tCYWNrRm9yd2FyZExpc3Q6Ok5vLCAwLCAwLCBNYXliZVNlbmRSZWZlcnJl
cik7CiAgICAgICAgIGJyZWFrOwogICAgIGNhc2UgQ29udGV4dE1lbnVJdGVtVGFnQm9sZDoKICAg
ICAgICAgZnJhbWUtPmVkaXRvcigpLmNvbW1hbmQoIlRvZ2dsZUJvbGQiKS5leGVjdXRlKCk7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVNlbGVjdGlvbi5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0RPTVNlbGVjdGlvbi5jcHAKaW5kZXggMThjYmE4OC4uMjFhZDBiMyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9ET01TZWxlY3Rpb24uY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BhZ2UvRE9NU2VsZWN0aW9uLmNwcApAQCAtNTMsNyArNTMsNyBAQCBzdGF0aWMg
Tm9kZSogc2VsZWN0aW9uU2hhZG93QW5jZXN0b3IoRnJhbWUqIGZyYW1lKQogICAgIGlmICghbm9k
ZS0+aXNJblNoYWRvd1RyZWUoKSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICByZXR1cm4gZnJh
bWUtPmRvY3VtZW50KCktPmFuY2VzdG9ySW5UaGlzU2NvcGUobm9kZSk7CisgICAgcmV0dXJuIGZy
YW1lLT5kb2N1bWVudCgpLmFuY2VzdG9ySW5UaGlzU2NvcGUobm9kZSk7CiB9CiAKIERPTVNlbGVj
dGlvbjo6RE9NU2VsZWN0aW9uKGNvbnN0IFRyZWVTY29wZSogdHJlZVNjb3BlKQpAQCAtNDQ4LDcg
KzQ0OCw3IEBAIGJvb2wgRE9NU2VsZWN0aW9uOjpjb250YWluc05vZGUoTm9kZSogbiwgYm9vbCBh
bGxvd1BhcnRpYWwpIGNvbnN0CiAKICAgICBGcmFtZVNlbGVjdGlvbiYgc2VsZWN0aW9uID0gbV9m
cmFtZS0+c2VsZWN0aW9uKCk7CiAKLSAgICBpZiAoIW4gfHwgbV9mcmFtZS0+ZG9jdW1lbnQoKSAh
PSAmbi0+ZG9jdW1lbnQoKSB8fCBzZWxlY3Rpb24uaXNOb25lKCkpCisgICAgaWYgKCFuIHx8ICZt
X2ZyYW1lLT5kb2N1bWVudCgpICE9ICZuLT5kb2N1bWVudCgpIHx8IHNlbGVjdGlvbi5pc05vbmUo
KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgUmVmUHRyPE5vZGU+IG5vZGUgPSBuOwpA
QCAtNTMxLDcgKzUzMSw3IEBAIGJvb2wgRE9NU2VsZWN0aW9uOjppc1ZhbGlkRm9yUG9zaXRpb24o
Tm9kZSogbm9kZSkgY29uc3QKICAgICBBU1NFUlQobV9mcmFtZSk7CiAgICAgaWYgKCFub2RlKQog
ICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICByZXR1cm4gJm5vZGUtPmRvY3VtZW50KCkgPT0gbV9m
cmFtZS0+ZG9jdW1lbnQoKTsKKyAgICByZXR1cm4gJm5vZGUtPmRvY3VtZW50KCkgPT0gJm1fZnJh
bWUtPmRvY3VtZW50KCk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
RE9NV2luZG93LmNwcAppbmRleCA3ZjlhYWY4Li5lNWIxY2RlNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9N
V2luZG93LmNwcApAQCAtNTcxLDcgKzU3MSw3IEBAIHZvaWQgRE9NV2luZG93OjpyZXNldERPTVdp
bmRvd1Byb3BlcnRpZXMoKQogCiBib29sIERPTVdpbmRvdzo6aXNDdXJyZW50bHlEaXNwbGF5ZWRJ
bkZyYW1lKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbV9mcmFtZSAmJiBtX2ZyYW1lLT5kb2N1bWVu
dCgpLT5kb21XaW5kb3coKSA9PSB0aGlzOworICAgIHJldHVybiBtX2ZyYW1lICYmIG1fZnJhbWUt
PmRvY3VtZW50KCkuZG9tV2luZG93KCkgPT0gdGhpczsKIH0KIAogI2lmIEVOQUJMRShPUklFTlRB
VElPTl9FVkVOVFMpCkBAIC04NzEsNyArODcxLDcgQEAgRE9NU2VsZWN0aW9uKiBET01XaW5kb3c6
OmdldFNlbGVjdGlvbigpCiAgICAgaWYgKCFpc0N1cnJlbnRseURpc3BsYXllZEluRnJhbWUoKSB8
fCAhbV9mcmFtZSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICByZXR1cm4gbV9mcmFtZS0+ZG9j
dW1lbnQoKS0+Z2V0U2VsZWN0aW9uKCk7CisgICAgcmV0dXJuIG1fZnJhbWUtPmRvY3VtZW50KCku
Z2V0U2VsZWN0aW9uKCk7CiB9CiAKIEVsZW1lbnQqIERPTVdpbmRvdzo6ZnJhbWVFbGVtZW50KCkg
Y29uc3QKQEAgLTkwOSw3ICs5MDksNyBAQCB2b2lkIERPTVdpbmRvdzo6Zm9jdXMoU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCogY29udGV4dCkKICAgICAvLyBDbGVhciB0aGUgY3VycmVudCBmcmFtZSdz
IGZvY3VzZWQgbm9kZSBpZiBhIG5ldyBmcmFtZSBpcyBhYm91dCB0byBiZSBmb2N1c2VkLgogICAg
IEZyYW1lKiBmb2N1c2VkRnJhbWUgPSBwYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5mb2N1c2VkRnJh
bWUoKTsKICAgICBpZiAoZm9jdXNlZEZyYW1lICYmIGZvY3VzZWRGcmFtZSAhPSBtX2ZyYW1lKQot
ICAgICAgICBmb2N1c2VkRnJhbWUtPmRvY3VtZW50KCktPnNldEZvY3VzZWRFbGVtZW50KDApOwor
ICAgICAgICBmb2N1c2VkRnJhbWUtPmRvY3VtZW50KCkuc2V0Rm9jdXNlZEVsZW1lbnQoMCk7CiAK
ICAgICBtX2ZyYW1lLT5ldmVudEhhbmRsZXIoKS5mb2N1c0RvY3VtZW50VmlldygpOwogfQpAQCAt
MTAxMSw3ICsxMDExLDcgQEAgdm9pZCBET01XaW5kb3c6OmFsZXJ0KGNvbnN0IFN0cmluZyYgbWVz
c2FnZSkKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIG1fZnJhbWUtPmRvY3VtZW50KCkt
PnVwZGF0ZVN0eWxlSWZOZWVkZWQoKTsKKyAgICBtX2ZyYW1lLT5kb2N1bWVudCgpLnVwZGF0ZVN0
eWxlSWZOZWVkZWQoKTsKIAogICAgIFBhZ2UqIHBhZ2UgPSBtX2ZyYW1lLT5wYWdlKCk7CiAgICAg
aWYgKCFwYWdlKQpAQCAtMTAzMSw3ICsxMDMxLDcgQEAgYm9vbCBET01XaW5kb3c6OmNvbmZpcm0o
Y29uc3QgU3RyaW5nJiBtZXNzYWdlKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgfQogCi0g
ICAgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+dXBkYXRlU3R5bGVJZk5lZWRlZCgpOworICAgIG1fZnJh
bWUtPmRvY3VtZW50KCkudXBkYXRlU3R5bGVJZk5lZWRlZCgpOwogCiAgICAgUGFnZSogcGFnZSA9
IG1fZnJhbWUtPnBhZ2UoKTsKICAgICBpZiAoIXBhZ2UpCkBAIC0xMDUxLDcgKzEwNTEsNyBAQCBT
dHJpbmcgRE9NV2luZG93Ojpwcm9tcHQoY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBjb25zdCBTdHJp
bmcmIGRlZmF1bHRWYWx1ZSkKICAgICAgICAgcmV0dXJuIFN0cmluZygpOwogICAgIH0KIAotICAg
IG1fZnJhbWUtPmRvY3VtZW50KCktPnVwZGF0ZVN0eWxlSWZOZWVkZWQoKTsKKyAgICBtX2ZyYW1l
LT5kb2N1bWVudCgpLnVwZGF0ZVN0eWxlSWZOZWVkZWQoKTsKIAogICAgIFBhZ2UqIHBhZ2UgPSBt
X2ZyYW1lLT5wYWdlKCk7CiAgICAgaWYgKCFwYWdlKQpAQCAtMTE5Niw3ICsxMTk2LDcgQEAgaW50
IERPTVdpbmRvdzo6c2Nyb2xsWCgpIGNvbnN0CiAgICAgaWYgKCFzY3JvbGxYKQogICAgICAgICBy
ZXR1cm4gMDsKIAotICAgIG1fZnJhbWUtPmRvY3VtZW50KCktPnVwZGF0ZUxheW91dElnbm9yZVBl
bmRpbmdTdHlsZXNoZWV0cygpOworICAgIG1fZnJhbWUtPmRvY3VtZW50KCkudXBkYXRlTGF5b3V0
SWdub3JlUGVuZGluZ1N0eWxlc2hlZXRzKCk7CiAKICAgICByZXR1cm4gdmlldy0+bWFwRnJvbUxh
eW91dFRvQ1NTVW5pdHModmlldy0+Y29udGVudHNTY3JvbGxQb3NpdGlvbigpLngoKSk7CiB9CkBA
IC0xMjE0LDcgKzEyMTQsNyBAQCBpbnQgRE9NV2luZG93OjpzY3JvbGxZKCkgY29uc3QKICAgICBp
ZiAoIXNjcm9sbFkpCiAgICAgICAgIHJldHVybiAwOwogCi0gICAgbV9mcmFtZS0+ZG9jdW1lbnQo
KS0+dXBkYXRlTGF5b3V0SWdub3JlUGVuZGluZ1N0eWxlc2hlZXRzKCk7CisgICAgbV9mcmFtZS0+
ZG9jdW1lbnQoKS51cGRhdGVMYXlvdXRJZ25vcmVQZW5kaW5nU3R5bGVzaGVldHMoKTsKIAogICAg
IHJldHVybiB2aWV3LT5tYXBGcm9tTGF5b3V0VG9DU1NVbml0cyh2aWV3LT5jb250ZW50c1Njcm9s
bFBvc2l0aW9uKCkueSgpKTsKIH0KQEAgLTEyODMsNyArMTI4Myw3IEBAIERPTVdpbmRvdyogRE9N
V2luZG93OjpzZWxmKCkgY29uc3QKICAgICBpZiAoIW1fZnJhbWUpCiAgICAgICAgIHJldHVybiAw
OwogCi0gICAgcmV0dXJuIG1fZnJhbWUtPmRvY3VtZW50KCktPmRvbVdpbmRvdygpOworICAgIHJl
dHVybiBtX2ZyYW1lLT5kb2N1bWVudCgpLmRvbVdpbmRvdygpOwogfQogCiBET01XaW5kb3cqIERP
TVdpbmRvdzo6b3BlbmVyKCkgY29uc3QKQEAgLTEyOTUsNyArMTI5NSw3IEBAIERPTVdpbmRvdyog
RE9NV2luZG93OjpvcGVuZXIoKSBjb25zdAogICAgIGlmICghb3BlbmVyKQogICAgICAgICByZXR1
cm4gMDsKIAotICAgIHJldHVybiBvcGVuZXItPmRvY3VtZW50KCktPmRvbVdpbmRvdygpOworICAg
IHJldHVybiBvcGVuZXItPmRvY3VtZW50KCkuZG9tV2luZG93KCk7CiB9CiAKIERPTVdpbmRvdyog
RE9NV2luZG93OjpwYXJlbnQoKSBjb25zdApAQCAtMTMwNSw5ICsxMzA1LDkgQEAgRE9NV2luZG93
KiBET01XaW5kb3c6OnBhcmVudCgpIGNvbnN0CiAKICAgICBGcmFtZSogcGFyZW50ID0gbV9mcmFt
ZS0+dHJlZSgpLnBhcmVudCgpOwogICAgIGlmIChwYXJlbnQpCi0gICAgICAgIHJldHVybiBwYXJl
bnQtPmRvY3VtZW50KCktPmRvbVdpbmRvdygpOworICAgICAgICByZXR1cm4gcGFyZW50LT5kb2N1
bWVudCgpLmRvbVdpbmRvdygpOwogCi0gICAgcmV0dXJuIG1fZnJhbWUtPmRvY3VtZW50KCktPmRv
bVdpbmRvdygpOworICAgIHJldHVybiBtX2ZyYW1lLT5kb2N1bWVudCgpLmRvbVdpbmRvdygpOwog
fQogCiBET01XaW5kb3cqIERPTVdpbmRvdzo6dG9wKCkgY29uc3QKQEAgLTEzMTksNyArMTMxOSw3
IEBAIERPTVdpbmRvdyogRE9NV2luZG93Ojp0b3AoKSBjb25zdAogICAgIGlmICghcGFnZSkKICAg
ICAgICAgcmV0dXJuIDA7CiAKLSAgICByZXR1cm4gbV9mcmFtZS0+dHJlZSgpLnRvcCgpLmRvY3Vt
ZW50KCktPmRvbVdpbmRvdygpOworICAgIHJldHVybiBtX2ZyYW1lLT50cmVlKCkudG9wKCkuZG9j
dW1lbnQoKS5kb21XaW5kb3coKTsKIH0KIAogRG9jdW1lbnQqIERPTVdpbmRvdzo6ZG9jdW1lbnQo
KSBjb25zdApAQCAtMTM2Myw3ICsxMzYzLDcgQEAgUGFzc1JlZlB0cjxDU1NSdWxlTGlzdD4gRE9N
V2luZG93OjpnZXRNYXRjaGVkQ1NTUnVsZXMoRWxlbWVudCogZWxlbWVudCwgY29uc3QgU3QKIAog
ICAgIFBzZXVkb0lkIHBzZXVkb0lkID0gQ1NTU2VsZWN0b3I6OnBzZXVkb0lkKHBzZXVkb1R5cGUp
OwogCi0gICAgYXV0byBtYXRjaGVkUnVsZXMgPSBtX2ZyYW1lLT5kb2N1bWVudCgpLT5lbnN1cmVT
dHlsZVJlc29sdmVyKCkucHNldWRvU3R5bGVSdWxlc0ZvckVsZW1lbnQoZWxlbWVudCwgcHNldWRv
SWQsIHJ1bGVzVG9JbmNsdWRlKTsKKyAgICBhdXRvIG1hdGNoZWRSdWxlcyA9IG1fZnJhbWUtPmRv
Y3VtZW50KCkuZW5zdXJlU3R5bGVSZXNvbHZlcigpLnBzZXVkb1N0eWxlUnVsZXNGb3JFbGVtZW50
KGVsZW1lbnQsIHBzZXVkb0lkLCBydWxlc1RvSW5jbHVkZSk7CiAgICAgaWYgKG1hdGNoZWRSdWxl
cy5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybiAwOwogCkBAIC0xODkwLDcgKzE4OTAsNyBAQCB2
b2lkIERPTVdpbmRvdzo6c2V0TG9jYXRpb24oY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcsIERPTVdp
bmRvdyYgYWN0aXZlV2luZG93LCBETwogICAgIGlmICghZmlyc3RGcmFtZSkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgVVJMIGNvbXBsZXRlZFVSTCA9IGZpcnN0RnJhbWUtPmRvY3VtZW50KCktPmNv
bXBsZXRlVVJMKHVybFN0cmluZyk7CisgICAgVVJMIGNvbXBsZXRlZFVSTCA9IGZpcnN0RnJhbWUt
PmRvY3VtZW50KCkuY29tcGxldGVVUkwodXJsU3RyaW5nKTsKICAgICBpZiAoY29tcGxldGVkVVJM
LmlzTnVsbCgpKQogICAgICAgICByZXR1cm47CiAKQEAgLTE5ODQsNyArMTk4NCw3IEBAIFBhc3NS
ZWZQdHI8RnJhbWU+IERPTVdpbmRvdzo6Y3JlYXRlV2luZG93KGNvbnN0IFN0cmluZyYgdXJsU3Ry
aW5nLCBjb25zdCBBdG9taWNTCiB7CiAgICAgRnJhbWUqIGFjdGl2ZUZyYW1lID0gYWN0aXZlV2lu
ZG93LmZyYW1lKCk7CiAKLSAgICBVUkwgY29tcGxldGVkVVJMID0gdXJsU3RyaW5nLmlzRW1wdHko
KSA/IFVSTChQYXJzZWRVUkxTdHJpbmcsIGVtcHR5U3RyaW5nKCkpIDogZmlyc3RGcmFtZS0+ZG9j
dW1lbnQoKS0+Y29tcGxldGVVUkwodXJsU3RyaW5nKTsKKyAgICBVUkwgY29tcGxldGVkVVJMID0g
dXJsU3RyaW5nLmlzRW1wdHkoKSA/IFVSTChQYXJzZWRVUkxTdHJpbmcsIGVtcHR5U3RyaW5nKCkp
IDogZmlyc3RGcmFtZS0+ZG9jdW1lbnQoKS5jb21wbGV0ZVVSTCh1cmxTdHJpbmcpOwogICAgIGlm
ICghY29tcGxldGVkVVJMLmlzRW1wdHkoKSAmJiAhY29tcGxldGVkVVJMLmlzVmFsaWQoKSkgewog
ICAgICAgICAvLyBEb24ndCBleHBvc2UgY2xpZW50IGNvZGUgdG8gaW52YWxpZCBVUkxzLgogICAg
ICAgICBhY3RpdmVXaW5kb3cucHJpbnRFcnJvck1lc3NhZ2UoIlVuYWJsZSB0byBvcGVuIGEgd2lu
ZG93IHdpdGggaW52YWxpZCBVUkwgJyIgKyBjb21wbGV0ZWRVUkwuc3RyaW5nKCkgKyAiJy5cbiIp
OwpAQCAtMTk5Miw3ICsxOTkyLDcgQEAgUGFzc1JlZlB0cjxGcmFtZT4gRE9NV2luZG93OjpjcmVh
dGVXaW5kb3coY29uc3QgU3RyaW5nJiB1cmxTdHJpbmcsIGNvbnN0IEF0b21pY1MKICAgICB9CiAK
ICAgICAvLyBGb3Igd2hhdGV2ZXIgcmVhc29uLCBGaXJlZm94IHVzZXMgdGhlIGZpcnN0IGZyYW1l
IHRvIGRldGVybWluZSB0aGUgb3V0Z29pbmdSZWZlcnJlci4gV2UgcmVwbGljYXRlIHRoYXQgYmVo
YXZpb3IgaGVyZS4KLSAgICBTdHJpbmcgcmVmZXJyZXIgPSBTZWN1cml0eVBvbGljeTo6Z2VuZXJh
dGVSZWZlcnJlckhlYWRlcihmaXJzdEZyYW1lLT5kb2N1bWVudCgpLT5yZWZlcnJlclBvbGljeSgp
LCBjb21wbGV0ZWRVUkwsIGZpcnN0RnJhbWUtPmxvYWRlcigpLm91dGdvaW5nUmVmZXJyZXIoKSk7
CisgICAgU3RyaW5nIHJlZmVycmVyID0gU2VjdXJpdHlQb2xpY3k6OmdlbmVyYXRlUmVmZXJyZXJI
ZWFkZXIoZmlyc3RGcmFtZS0+ZG9jdW1lbnQoKS5yZWZlcnJlclBvbGljeSgpLCBjb21wbGV0ZWRV
UkwsIGZpcnN0RnJhbWUtPmxvYWRlcigpLm91dGdvaW5nUmVmZXJyZXIoKSk7CiAKICAgICBSZXNv
dXJjZVJlcXVlc3QgcmVxdWVzdChjb21wbGV0ZWRVUkwsIHJlZmVycmVyKTsKICAgICBGcmFtZUxv
YWRlcjo6YWRkSFRUUE9yaWdpbklmTmVlZGVkKHJlcXVlc3QsIGZpcnN0RnJhbWUtPmxvYWRlcigp
Lm91dGdvaW5nT3JpZ2luKCkpOwpAQCAtMjAwOCwxMSArMjAwOCwxMSBAQCBQYXNzUmVmUHRyPEZy
YW1lPiBET01XaW5kb3c6OmNyZWF0ZVdpbmRvdyhjb25zdCBTdHJpbmcmIHVybFN0cmluZywgY29u
c3QgQXRvbWljUwogICAgIG5ld0ZyYW1lLT5sb2FkZXIoKS5zZXRPcGVuZXIob3BlbmVyRnJhbWUp
OwogICAgIG5ld0ZyYW1lLT5wYWdlKCktPnNldE9wZW5lZEJ5RE9NKCk7CiAKLSAgICBpZiAobmV3
RnJhbWUtPmRvY3VtZW50KCktPmRvbVdpbmRvdygpLT5pc0luc2VjdXJlU2NyaXB0QWNjZXNzKGFj
dGl2ZVdpbmRvdywgY29tcGxldGVkVVJMKSkKKyAgICBpZiAobmV3RnJhbWUtPmRvY3VtZW50KCku
ZG9tV2luZG93KCktPmlzSW5zZWN1cmVTY3JpcHRBY2Nlc3MoYWN0aXZlV2luZG93LCBjb21wbGV0
ZWRVUkwpKQogICAgICAgICByZXR1cm4gbmV3RnJhbWUucmVsZWFzZSgpOwogCiAgICAgaWYgKHBy
ZXBhcmVEaWFsb2dGdW5jdGlvbikKLSAgICAgICAgcHJlcGFyZURpYWxvZ0Z1bmN0aW9uKCpuZXdG
cmFtZS0+ZG9jdW1lbnQoKS0+ZG9tV2luZG93KCkpOworICAgICAgICBwcmVwYXJlRGlhbG9nRnVu
Y3Rpb24oKm5ld0ZyYW1lLT5kb2N1bWVudCgpLmRvbVdpbmRvdygpKTsKIAogICAgIGlmIChjcmVh
dGVkKQogICAgICAgICBuZXdGcmFtZS0+bG9hZGVyKCkuY2hhbmdlTG9jYXRpb24oYWN0aXZlV2lu
ZG93LmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCksIGNvbXBsZXRlZFVSTCwgcmVmZXJyZXIs
IExvY2tIaXN0b3J5OjpObywgTG9ja0JhY2tGb3J3YXJkTGlzdDo6Tm8pOwpAQCAtMjA2MiwyNSAr
MjA2MiwyNSBAQCBQYXNzUmVmUHRyPERPTVdpbmRvdz4gRE9NV2luZG93OjpvcGVuKGNvbnN0IFN0
cmluZyYgdXJsU3RyaW5nLCBjb25zdCBBdG9taWNTdHJpbgogICAgICAgICBpZiAoIWFjdGl2ZURv
Y3VtZW50LT5jYW5OYXZpZ2F0ZSh0YXJnZXRGcmFtZSkpCiAgICAgICAgICAgICByZXR1cm4gMDsK
IAotICAgICAgICBVUkwgY29tcGxldGVkVVJMID0gZmlyc3RGcmFtZS0+ZG9jdW1lbnQoKS0+Y29t
cGxldGVVUkwodXJsU3RyaW5nKTsKKyAgICAgICAgVVJMIGNvbXBsZXRlZFVSTCA9IGZpcnN0RnJh
bWUtPmRvY3VtZW50KCkuY29tcGxldGVVUkwodXJsU3RyaW5nKTsKIAotICAgICAgICBpZiAodGFy
Z2V0RnJhbWUtPmRvY3VtZW50KCktPmRvbVdpbmRvdygpLT5pc0luc2VjdXJlU2NyaXB0QWNjZXNz
KGFjdGl2ZVdpbmRvdywgY29tcGxldGVkVVJMKSkKLSAgICAgICAgICAgIHJldHVybiB0YXJnZXRG
cmFtZS0+ZG9jdW1lbnQoKS0+ZG9tV2luZG93KCk7CisgICAgICAgIGlmICh0YXJnZXRGcmFtZS0+
ZG9jdW1lbnQoKS5kb21XaW5kb3coKS0+aXNJbnNlY3VyZVNjcmlwdEFjY2VzcyhhY3RpdmVXaW5k
b3csIGNvbXBsZXRlZFVSTCkpCisgICAgICAgICAgICByZXR1cm4gdGFyZ2V0RnJhbWUtPmRvY3Vt
ZW50KCkuZG9tV2luZG93KCk7CiAKICAgICAgICAgaWYgKHVybFN0cmluZy5pc0VtcHR5KCkpCi0g
ICAgICAgICAgICByZXR1cm4gdGFyZ2V0RnJhbWUtPmRvY3VtZW50KCktPmRvbVdpbmRvdygpOwor
ICAgICAgICAgICAgcmV0dXJuIHRhcmdldEZyYW1lLT5kb2N1bWVudCgpLmRvbVdpbmRvdygpOwog
CiAgICAgICAgIC8vIEZvciB3aGF0ZXZlciByZWFzb24sIEZpcmVmb3ggdXNlcyB0aGUgZmlyc3Qg
d2luZG93IHJhdGhlciB0aGFuIHRoZSBhY3RpdmUgd2luZG93IHRvCiAgICAgICAgIC8vIGRldGVy
bWluZSB0aGUgb3V0Z29pbmcgcmVmZXJyZXIuIFdlIHJlcGxpY2F0ZSB0aGF0IGJlaGF2aW9yIGhl
cmUuCiAgICAgICAgIExvY2tIaXN0b3J5IGxvY2tIaXN0b3J5ID0gU2NyaXB0Q29udHJvbGxlcjo6
cHJvY2Vzc2luZ1VzZXJHZXN0dXJlKCkgPyBMb2NrSGlzdG9yeTo6Tm8gOiBMb2NrSGlzdG9yeTo6
WWVzOwogICAgICAgICB0YXJnZXRGcmFtZS0+bmF2aWdhdGlvblNjaGVkdWxlcigpLnNjaGVkdWxl
TG9jYXRpb25DaGFuZ2UoYWN0aXZlRG9jdW1lbnQtPnNlY3VyaXR5T3JpZ2luKCksIGNvbXBsZXRl
ZFVSTCwgZmlyc3RGcmFtZS0+bG9hZGVyKCkub3V0Z29pbmdSZWZlcnJlcigpLAogICAgICAgICAg
ICAgbG9ja0hpc3RvcnksIExvY2tCYWNrRm9yd2FyZExpc3Q6Ok5vKTsKLSAgICAgICAgcmV0dXJu
IHRhcmdldEZyYW1lLT5kb2N1bWVudCgpLT5kb21XaW5kb3coKTsKKyAgICAgICAgcmV0dXJuIHRh
cmdldEZyYW1lLT5kb2N1bWVudCgpLmRvbVdpbmRvdygpOwogICAgIH0KIAogICAgIFdpbmRvd0Zl
YXR1cmVzIHdpbmRvd0ZlYXR1cmVzKHdpbmRvd0ZlYXR1cmVzU3RyaW5nKTsKICAgICBSZWZQdHI8
RnJhbWU+IHJlc3VsdCA9IGNyZWF0ZVdpbmRvdyh1cmxTdHJpbmcsIGZyYW1lTmFtZSwgd2luZG93
RmVhdHVyZXMsIGFjdGl2ZVdpbmRvdywgZmlyc3RGcmFtZSwgbV9mcmFtZSk7Ci0gICAgcmV0dXJu
IHJlc3VsdCA/IHJlc3VsdC0+ZG9jdW1lbnQoKS0+ZG9tV2luZG93KCkgOiAwOworICAgIHJldHVy
biByZXN1bHQgPyByZXN1bHQtPmRvY3VtZW50KCkuZG9tV2luZG93KCkgOiAwOwogfQogCiB2b2lk
IERPTVdpbmRvdzo6c2hvd01vZGFsRGlhbG9nKGNvbnN0IFN0cmluZyYgdXJsU3RyaW5nLCBjb25z
dCBTdHJpbmcmIGRpYWxvZ0ZlYXR1cmVzU3RyaW5nLCBET01XaW5kb3cmIGFjdGl2ZVdpbmRvdywg
RE9NV2luZG93JiBmaXJzdFdpbmRvdywgc3RkOjpmdW5jdGlvbjx2b2lkIChET01XaW5kb3cmKT4g
cHJlcGFyZURpYWxvZ0Z1bmN0aW9uKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9E
T01XaW5kb3dQcm9wZXJ0eS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvd1Byb3Bl
cnR5LmNwcAppbmRleCA2ZjEwOWYxLi41MDIwMjRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0RPTVdpbmRvd1Byb3BlcnR5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RP
TVdpbmRvd1Byb3BlcnR5LmNwcApAQCAtNDEsNyArNDEsNyBAQCBET01XaW5kb3dQcm9wZXJ0eTo6
RE9NV2luZG93UHJvcGVydHkoRnJhbWUqIGZyYW1lKQogICAgIC8vIFNlZSBmYXN0L2RvbS9uYXZp
Z2F0b3ItZGV0YWNoZWQtbm8tY3Jhc2guaHRtbCBmb3IgdGhlIHJlY2lwZS4KICAgICAvLyBXZSBz
aG91bGQgZml4IHRoYXQuICA8cmRhcjovL3Byb2JsZW0vMTE1NjcxMzI+CiAgICAgaWYgKG1fZnJh
bWUpIHsKLSAgICAgICAgbV9hc3NvY2lhdGVkRE9NV2luZG93ID0gbV9mcmFtZS0+ZG9jdW1lbnQo
KS0+ZG9tV2luZG93KCk7CisgICAgICAgIG1fYXNzb2NpYXRlZERPTVdpbmRvdyA9IG1fZnJhbWUt
PmRvY3VtZW50KCkuZG9tV2luZG93KCk7CiAgICAgICAgIG1fYXNzb2NpYXRlZERPTVdpbmRvdy0+
cmVnaXN0ZXJQcm9wZXJ0eSh0aGlzKTsKICAgICB9CiB9CkBAIC03MSw3ICs3MSw3IEBAIHZvaWQg
RE9NV2luZG93UHJvcGVydHk6OnJlY29ubmVjdEZyYW1lRnJvbVBhZ2VDYWNoZShGcmFtZSogZnJh
bWUpCiAgICAgLy8gYmVlbiBkaXNjb25uZWN0ZWQgZnJvbSBpdHMgRnJhbWUgaW4gdGhlIGZpcnN0
IHBsYWNlIGFuZCBpdCBzaG91bGQgc3RpbGwgaGF2ZSBhbiBhc3NvY2lhdGVkIERPTVdpbmRvdy4K
ICAgICBBU1NFUlQoZnJhbWUpOwogICAgIEFTU0VSVCghbV9mcmFtZSk7Ci0gICAgQVNTRVJUKGZy
YW1lLT5kb2N1bWVudCgpLT5kb21XaW5kb3coKSA9PSBtX2Fzc29jaWF0ZWRET01XaW5kb3cpOwor
ICAgIEFTU0VSVChmcmFtZS0+ZG9jdW1lbnQoKS5kb21XaW5kb3coKSA9PSBtX2Fzc29jaWF0ZWRE
T01XaW5kb3cpOwogCiAgICAgbV9mcmFtZSA9IGZyYW1lOwogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGFnZS9EcmFnQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0Ry
YWdDb250cm9sbGVyLmNwcAppbmRleCA4YWRlNTY1Li4wOThkZGJiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wYWdlL0RyYWdDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
YWdlL0RyYWdDb250cm9sbGVyLmNwcApAQCAtNDIyLDcgKzQyMiw3IEBAIGJvb2wgRHJhZ0NvbnRy
b2xsZXI6OmRpc3BhdGNoVGV4dElucHV0RXZlbnRGb3IoRnJhbWUqIGlubmVyRnJhbWUsIERyYWdE
YXRhJiBkcmFnCiAgICAgQVNTRVJUKG1fcGFnZS5kcmFnQ2FyZXRDb250cm9sbGVyKCkuaGFzQ2Fy
ZXQoKSk7CiAgICAgU3RyaW5nIHRleHQgPSBtX3BhZ2UuZHJhZ0NhcmV0Q29udHJvbGxlcigpLmlz
Q29udGVudFJpY2hseUVkaXRhYmxlKCkgPyBlbXB0eVN0cmluZygpIDogZHJhZ0RhdGEuYXNQbGFp
blRleHQoaW5uZXJGcmFtZSk7CiAgICAgTm9kZSogdGFyZ2V0ID0gaW5uZXJGcmFtZS0+ZWRpdG9y
KCkuZmluZEV2ZW50VGFyZ2V0RnJvbShtX3BhZ2UuZHJhZ0NhcmV0Q29udHJvbGxlcigpLmNhcmV0
UG9zaXRpb24oKSk7Ci0gICAgcmV0dXJuIHRhcmdldC0+ZGlzcGF0Y2hFdmVudChUZXh0RXZlbnQ6
OmNyZWF0ZUZvckRyb3AoaW5uZXJGcmFtZS0+ZG9jdW1lbnQoKS0+ZG9tV2luZG93KCksIHRleHQp
LCBJR05PUkVfRVhDRVBUSU9OKTsKKyAgICByZXR1cm4gdGFyZ2V0LT5kaXNwYXRjaEV2ZW50KFRl
eHRFdmVudDo6Y3JlYXRlRm9yRHJvcChpbm5lckZyYW1lLT5kb2N1bWVudCgpLmRvbVdpbmRvdygp
LCB0ZXh0KSwgSUdOT1JFX0VYQ0VQVElPTik7CiB9CiAKIGJvb2wgRHJhZ0NvbnRyb2xsZXI6OmNv
bmNsdWRlRWRpdERyYWcoRHJhZ0RhdGEmIGRyYWdEYXRhKQpAQCAtODk5LDcgKzg5OSw3IEBAIHZv
aWQgRHJhZ0NvbnRyb2xsZXI6OmRvSW1hZ2VEcmFnKEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IElu
dFBvaW50JiBkcmFnT3JpZ2luLCBjCiB2b2lkIERyYWdDb250cm9sbGVyOjpkb1N5c3RlbURyYWco
RHJhZ0ltYWdlUmVmIGltYWdlLCBjb25zdCBJbnRQb2ludCYgZHJhZ0xvYywgY29uc3QgSW50UG9p
bnQmIGV2ZW50UG9zLCBEYXRhVHJhbnNmZXImIGRhdGFUcmFuc2ZlciwgRnJhbWUmIGZyYW1lLCBi
b29sIGZvckxpbmspCiB7CiAgICAgbV9kaWRJbml0aWF0ZURyYWcgPSB0cnVlOwotICAgIG1fZHJh
Z0luaXRpYXRvciA9IGZyYW1lLmRvY3VtZW50KCk7CisgICAgbV9kcmFnSW5pdGlhdG9yID0gJmZy
YW1lLmRvY3VtZW50KCk7CiAgICAgLy8gUHJvdGVjdCB0aGlzIGZyYW1lIGFuZCB2aWV3LCBhcyBh
IGxvYWQgbWF5IG9jY3VyIG1pZCBkcmFnIGFuZCBhdHRlbXB0IHRvIHVubG9hZCB0aGlzIGZyYW1l
CiAgICAgUmVmPE1haW5GcmFtZT4gZnJhbWVQcm90ZWN0b3IobV9wYWdlLm1haW5GcmFtZSgpKTsK
ICAgICBSZWZQdHI8RnJhbWVWaWV3PiB2aWV3UHJvdGVjdG9yID0gZnJhbWVQcm90ZWN0b3ItPnZp
ZXcoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvRXZlbnRIYW5kbGVyLmNwcAppbmRleCBjN2E5OGFlLi40YzFl
OTNlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0V2ZW50SGFuZGxlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9FdmVudEhhbmRsZXIuY3BwCkBAIC02MDksNyArNjA5LDcg
QEAgc3RhdGljIGludCB0ZXh0RGlzdGFuY2UoY29uc3QgUG9zaXRpb24mIHN0YXJ0LCBjb25zdCBQ
b3NpdGlvbiYgZW5kKQogCiBib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlTW91c2VQcmVzc0V2ZW50
U2luZ2xlQ2xpY2soY29uc3QgTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cyYgZXZlbnQpCiB7
Ci0gICAgbV9mcmFtZS5kb2N1bWVudCgpLT51cGRhdGVMYXlvdXRJZ25vcmVQZW5kaW5nU3R5bGVz
aGVldHMoKTsKKyAgICBtX2ZyYW1lLmRvY3VtZW50KCkudXBkYXRlTGF5b3V0SWdub3JlUGVuZGlu
Z1N0eWxlc2hlZXRzKCk7CiAgICAgTm9kZSogdGFyZ2V0Tm9kZSA9IGV2ZW50LnRhcmdldE5vZGUo
KTsKICAgICBpZiAoISh0YXJnZXROb2RlICYmIHRhcmdldE5vZGUtPnJlbmRlcmVyKCkgJiYgbV9t
b3VzZURvd25NYXlTdGFydFNlbGVjdCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTY5Myw3
ICs2OTMsNyBAQCBib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlTW91c2VQcmVzc0V2ZW50KGNvbnN0
IE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMmIGV2ZQogICAgIGNhbmNlbEZha2VNb3VzZU1v
dmVFdmVudCgpOwogI2VuZGlmCiAKLSAgICBtX2ZyYW1lLmRvY3VtZW50KCktPnVwZGF0ZUxheW91
dElnbm9yZVBlbmRpbmdTdHlsZXNoZWV0cygpOworICAgIG1fZnJhbWUuZG9jdW1lbnQoKS51cGRh
dGVMYXlvdXRJZ25vcmVQZW5kaW5nU3R5bGVzaGVldHMoKTsKIAogICAgIGlmIChTY3JvbGxWaWV3
KiBzY3JvbGxWaWV3ID0gbV9mcmFtZS52aWV3KCkpIHsKICAgICAgICAgaWYgKHNjcm9sbFZpZXct
PmlzUG9pbnRJblNjcm9sbGJhckNvcm5lcihldmVudC5ldmVudCgpLnBvc2l0aW9uKCkpKQpAQCAt
NzE4LDExICs3MTgsMTEgQEAgYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZU1vdXNlUHJlc3NFdmVu
dChjb25zdCBNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzJiBldmUKICAgICBpZiAoZXZlbnQu
aXNPdmVyV2lkZ2V0KCkgJiYgcGFzc1dpZGdldE1vdXNlRG93bkV2ZW50VG9XaWRnZXQoZXZlbnQp
KQogICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIGlmIChtX2ZyYW1lLmRvY3VtZW50KCktPmlz
U1ZHRG9jdW1lbnQoKQotICAgICAgICAmJiB0b1NWR0RvY3VtZW50KG1fZnJhbWUuZG9jdW1lbnQo
KSktPnpvb21BbmRQYW5FbmFibGVkKCkpIHsKKyAgICBpZiAobV9mcmFtZS5kb2N1bWVudCgpLmlz
U1ZHRG9jdW1lbnQoKQorICAgICAgICAmJiB0b1NWR0RvY3VtZW50KCZtX2ZyYW1lLmRvY3VtZW50
KCkpLT56b29tQW5kUGFuRW5hYmxlZCgpKSB7CiAgICAgICAgIGlmIChldmVudC5ldmVudCgpLnNo
aWZ0S2V5KCkgJiYgc2luZ2xlQ2xpY2spIHsKICAgICAgICAgICAgIG1fc3ZnUGFuID0gdHJ1ZTsK
LSAgICAgICAgICAgIHRvU1ZHRG9jdW1lbnQobV9mcmFtZS5kb2N1bWVudCgpKS0+c3RhcnRQYW4o
bV9mcmFtZS52aWV3KCktPndpbmRvd1RvQ29udGVudHMoZXZlbnQuZXZlbnQoKS5wb3NpdGlvbigp
KSk7CisgICAgICAgICAgICB0b1NWR0RvY3VtZW50KCZtX2ZyYW1lLmRvY3VtZW50KCkpLT5zdGFy
dFBhbihtX2ZyYW1lLnZpZXcoKS0+d2luZG93VG9Db250ZW50cyhldmVudC5ldmVudCgpLnBvc2l0
aW9uKCkpKTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CiAgICAgfQpAQCAt
NzkyLDcgKzc5Miw3IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVNb3VzZURyYWdnZWRFdmVu
dChjb25zdCBNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzJiBlCiAgICAgaWYgKG1fc2VsZWN0
aW9uSW5pdGlhdGlvblN0YXRlICE9IEV4dGVuZGVkU2VsZWN0aW9uKSB7CiAgICAgICAgIEhpdFRl
c3RSZXF1ZXN0IHJlcXVlc3QoSGl0VGVzdFJlcXVlc3Q6OlJlYWRPbmx5IHwgSGl0VGVzdFJlcXVl
c3Q6OkFjdGl2ZSB8IEhpdFRlc3RSZXF1ZXN0OjpEaXNhbGxvd1NoYWRvd0NvbnRlbnQpOwogICAg
ICAgICBIaXRUZXN0UmVzdWx0IHJlc3VsdChtX21vdXNlRG93blBvcyk7Ci0gICAgICAgIG1fZnJh
bWUuZG9jdW1lbnQoKS0+cmVuZGVyVmlldygpLT5oaXRUZXN0KHJlcXVlc3QsIHJlc3VsdCk7Cisg
ICAgICAgIG1fZnJhbWUuZG9jdW1lbnQoKS5yZW5kZXJWaWV3KCktPmhpdFRlc3QocmVxdWVzdCwg
cmVzdWx0KTsKIAogICAgICAgICB1cGRhdGVTZWxlY3Rpb25Gb3JNb3VzZURyYWcocmVzdWx0KTsK
ICAgICB9CkBAIC0xMDgxLDcgKzEwODEsNyBAQCBIaXRUZXN0UmVzdWx0IEV2ZW50SGFuZGxlcjo6
aGl0VGVzdFJlc3VsdEF0UG9pbnQoY29uc3QgTGF5b3V0UG9pbnQmIHBvaW50LCBIaXRUZQogICAg
IEhpdFRlc3RSZXF1ZXN0IHJlcXVlc3QoaGl0VHlwZSB8IEhpdFRlc3RSZXF1ZXN0OjpBbGxvd0No
aWxkRnJhbWVDb250ZW50KTsKICAgICBtX2ZyYW1lLmNvbnRlbnRSZW5kZXJlcigpLT5oaXRUZXN0
KHJlcXVlc3QsIHJlc3VsdCk7CiAgICAgaWYgKCFyZXF1ZXN0LnJlYWRPbmx5KCkpCi0gICAgICAg
IG1fZnJhbWUuZG9jdW1lbnQoKS0+dXBkYXRlSG92ZXJBY3RpdmVTdGF0ZShyZXF1ZXN0LCByZXN1
bHQuaW5uZXJFbGVtZW50KCkpOworICAgICAgICBtX2ZyYW1lLmRvY3VtZW50KCkudXBkYXRlSG92
ZXJBY3RpdmVTdGF0ZShyZXF1ZXN0LCByZXN1bHQuaW5uZXJFbGVtZW50KCkpOwogCiAgICAgaWYg
KHJlcXVlc3QuZGlzYWxsb3dzU2hhZG93Q29udGVudCgpKQogICAgICAgICByZXN1bHQuc2V0VG9O
b25TaGFkb3dBbmNlc3RvcigpOwpAQCAtMTA5OSw3ICsxMDk5LDcgQEAgYm9vbCBFdmVudEhhbmRs
ZXI6OnNjcm9sbE92ZXJmbG93KFNjcm9sbERpcmVjdGlvbiBkaXJlY3Rpb24sIFNjcm9sbEdyYW51
bGFyaXR5IGcKICAgICBOb2RlKiBub2RlID0gc3RhcnRpbmdOb2RlOwogCiAgICAgaWYgKCFub2Rl
KQotICAgICAgICBub2RlID0gbV9mcmFtZS5kb2N1bWVudCgpLT5mb2N1c2VkRWxlbWVudCgpOwor
ICAgICAgICBub2RlID0gbV9mcmFtZS5kb2N1bWVudCgpLmZvY3VzZWRFbGVtZW50KCk7CiAKICAg
ICBpZiAoIW5vZGUpCiAgICAgICAgIG5vZGUgPSBtX21vdXNlUHJlc3NOb2RlLmdldCgpOwpAQCAt
MTEyMCw3ICsxMTIwLDcgQEAgYm9vbCBFdmVudEhhbmRsZXI6OmxvZ2ljYWxTY3JvbGxPdmVyZmxv
dyhTY3JvbGxMb2dpY2FsRGlyZWN0aW9uIGRpcmVjdGlvbiwgU2Nyb2wKICAgICBOb2RlKiBub2Rl
ID0gc3RhcnRpbmdOb2RlOwogCiAgICAgaWYgKCFub2RlKQotICAgICAgICBub2RlID0gbV9mcmFt
ZS5kb2N1bWVudCgpLT5mb2N1c2VkRWxlbWVudCgpOworICAgICAgICBub2RlID0gbV9mcmFtZS5k
b2N1bWVudCgpLmZvY3VzZWRFbGVtZW50KCk7CiAKICAgICBpZiAoIW5vZGUpCiAgICAgICAgIG5v
ZGUgPSBtX21vdXNlUHJlc3NOb2RlLmdldCgpOwpAQCAtMTE0MCw3ICsxMTQwLDcgQEAgYm9vbCBF
dmVudEhhbmRsZXI6OnNjcm9sbFJlY3Vyc2l2ZWx5KFNjcm9sbERpcmVjdGlvbiBkaXJlY3Rpb24s
IFNjcm9sbEdyYW51bGFyaXQKIHsKICAgICAvLyBUaGUgbGF5b3V0IG5lZWRzIHRvIGJlIHVwIHRv
IGRhdGUgdG8gZGV0ZXJtaW5lIGlmIHdlIGNhbiBzY3JvbGwuIFdlIG1heSBiZQogICAgIC8vIGhl
cmUgYmVjYXVzZSBvZiBhbiBvbkxvYWQgZXZlbnQsIGluIHdoaWNoIGNhc2UgdGhlIGZpbmFsIGxh
eW91dCBoYXNuJ3QgYmVlbiBwZXJmb3JtZWQgeWV0LgotICAgIG1fZnJhbWUuZG9jdW1lbnQoKS0+
dXBkYXRlTGF5b3V0SWdub3JlUGVuZGluZ1N0eWxlc2hlZXRzKCk7CisgICAgbV9mcmFtZS5kb2N1
bWVudCgpLnVwZGF0ZUxheW91dElnbm9yZVBlbmRpbmdTdHlsZXNoZWV0cygpOwogICAgIGlmIChz
Y3JvbGxPdmVyZmxvdyhkaXJlY3Rpb24sIGdyYW51bGFyaXR5LCBzdGFydGluZ05vZGUpKQogICAg
ICAgICByZXR1cm4gdHJ1ZTsgICAgCiAgICAgRnJhbWUqIGZyYW1lID0gJm1fZnJhbWU7CkBAIC0x
MTU3LDcgKzExNTcsNyBAQCBib29sIEV2ZW50SGFuZGxlcjo6bG9naWNhbFNjcm9sbFJlY3Vyc2l2
ZWx5KFNjcm9sbExvZ2ljYWxEaXJlY3Rpb24gZGlyZWN0aW9uLCBTYwogewogICAgIC8vIFRoZSBs
YXlvdXQgbmVlZHMgdG8gYmUgdXAgdG8gZGF0ZSB0byBkZXRlcm1pbmUgaWYgd2UgY2FuIHNjcm9s
bC4gV2UgbWF5IGJlCiAgICAgLy8gaGVyZSBiZWNhdXNlIG9mIGFuIG9uTG9hZCBldmVudCwgaW4g
d2hpY2ggY2FzZSB0aGUgZmluYWwgbGF5b3V0IGhhc24ndCBiZWVuIHBlcmZvcm1lZCB5ZXQuCi0g
ICAgbV9mcmFtZS5kb2N1bWVudCgpLT51cGRhdGVMYXlvdXRJZ25vcmVQZW5kaW5nU3R5bGVzaGVl
dHMoKTsKKyAgICBtX2ZyYW1lLmRvY3VtZW50KCkudXBkYXRlTGF5b3V0SWdub3JlUGVuZGluZ1N0
eWxlc2hlZXRzKCk7CiAgICAgaWYgKGxvZ2ljYWxTY3JvbGxPdmVyZmxvdyhkaXJlY3Rpb24sIGdy
YW51bGFyaXR5LCBzdGFydGluZ05vZGUpKQogICAgICAgICByZXR1cm4gdHJ1ZTsgICAgCiAgICAg
RnJhbWUqIGZyYW1lID0gJm1fZnJhbWU7CkBAIC0xMjg0LDcgKzEyODQsNyBAQCB2b2lkIEV2ZW50
SGFuZGxlcjo6dXBkYXRlQ3Vyc29yKCkKICAgICBib29sIG1ldGFLZXk7CiAgICAgUGxhdGZvcm1L
ZXlib2FyZEV2ZW50OjpnZXRDdXJyZW50TW9kaWZpZXJTdGF0ZShzaGlmdEtleSwgY3RybEtleSwg
YWx0S2V5LCBtZXRhS2V5KTsKIAotICAgIG1fZnJhbWUuZG9jdW1lbnQoKS0+dXBkYXRlTGF5b3V0
KCk7CisgICAgbV9mcmFtZS5kb2N1bWVudCgpLnVwZGF0ZUxheW91dCgpOwogCiAgICAgSGl0VGVz
dFJlcXVlc3QgcmVxdWVzdChIaXRUZXN0UmVxdWVzdDo6UmVhZE9ubHkpOwogICAgIEhpdFRlc3RS
ZXN1bHQgcmVzdWx0KHZpZXctPndpbmRvd1RvQ29udGVudHMobV9sYXN0S25vd25Nb3VzZVBvc2l0
aW9uKSk7CkBAIC0xNTYzLDcgKzE1NjMsNyBAQCBib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlTW91
c2VQcmVzc0V2ZW50KGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgbW91c2VFdmVudCkKICAgICAv
LyBTYXZlIHRoZSBkb2N1bWVudCBwb2ludCB3ZSBnZW5lcmF0ZSBpbiBjYXNlIHRoZSB3aW5kb3cg
Y29vcmRpbmF0ZSBpcyBpbnZhbGlkYXRlZCBieSB3aGF0IGhhcHBlbnMKICAgICAvLyB3aGVuIHdl
IGRpc3BhdGNoIHRoZSBldmVudC4KICAgICBMYXlvdXRQb2ludCBkb2N1bWVudFBvaW50ID0gZG9j
dW1lbnRQb2ludEZvcldpbmRvd1BvaW50KG1fZnJhbWUsIG1vdXNlRXZlbnQucG9zaXRpb24oKSk7
Ci0gICAgTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0cyBtZXYgPSBtX2ZyYW1lLmRvY3VtZW50
KCktPnByZXBhcmVNb3VzZUV2ZW50KHJlcXVlc3QsIGRvY3VtZW50UG9pbnQsIG1vdXNlRXZlbnQp
OworICAgIE1vdXNlRXZlbnRXaXRoSGl0VGVzdFJlc3VsdHMgbWV2ID0gbV9mcmFtZS5kb2N1bWVu
dCgpLnByZXBhcmVNb3VzZUV2ZW50KHJlcXVlc3QsIGRvY3VtZW50UG9pbnQsIG1vdXNlRXZlbnQp
OwogCiAgICAgaWYgKCFtZXYudGFyZ2V0Tm9kZSgpKSB7CiAgICAgICAgIGludmFsaWRhdGVDbGlj
aygpOwpAQCAtMTYyOCw3ICsxNjI4LDcgQEAgYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZU1vdXNl
UHJlc3NFdmVudChjb25zdCBQbGF0Zm9ybU1vdXNlRXZlbnQmIG1vdXNlRXZlbnQpCiAgICAgaWYg
KG1ldi5zY3JvbGxiYXIoKSkgewogICAgICAgICBjb25zdCBib29sIHdhc0xhc3RTY3JvbGxCYXIg
PSBtZXYuc2Nyb2xsYmFyKCkgPT0gbV9sYXN0U2Nyb2xsYmFyVW5kZXJNb3VzZS5nZXQoKTsKICAg
ICAgICAgSGl0VGVzdFJlcXVlc3QgcmVxdWVzdChIaXRUZXN0UmVxdWVzdDo6UmVhZE9ubHkgfCBI
aXRUZXN0UmVxdWVzdDo6QWN0aXZlIHwgSGl0VGVzdFJlcXVlc3Q6OkRpc2FsbG93U2hhZG93Q29u
dGVudCk7Ci0gICAgICAgIG1ldiA9IG1fZnJhbWUuZG9jdW1lbnQoKS0+cHJlcGFyZU1vdXNlRXZl
bnQocmVxdWVzdCwgZG9jdW1lbnRQb2ludCwgbW91c2VFdmVudCk7CisgICAgICAgIG1ldiA9IG1f
ZnJhbWUuZG9jdW1lbnQoKS5wcmVwYXJlTW91c2VFdmVudChyZXF1ZXN0LCBkb2N1bWVudFBvaW50
LCBtb3VzZUV2ZW50KTsKICAgICAgICAgaWYgKHdhc0xhc3RTY3JvbGxCYXIgJiYgbWV2LnNjcm9s
bGJhcigpICE9IG1fbGFzdFNjcm9sbGJhclVuZGVyTW91c2UuZ2V0KCkpCiAgICAgICAgICAgICBt
X2xhc3RTY3JvbGxiYXJVbmRlck1vdXNlID0gMDsKICAgICB9CkBAIC0xNjQ4LDcgKzE2NDgsNyBA
QCBib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlTW91c2VQcmVzc0V2ZW50KGNvbnN0IFBsYXRmb3Jt
TW91c2VFdmVudCYgbW91c2VFdmVudCkKICAgICAgICAgLy8gZXZlbnQgdGFyZ2V0IG5vZGUgY2Fu
J3Qgc3RpbGwgYmUgdGhlIHNoYWRvdyBub2RlLgogICAgICAgICBpZiAobWV2LnRhcmdldE5vZGUo
KS0+aXNTaGFkb3dSb290KCkgJiYgaXNIVE1MSW5wdXRFbGVtZW50KHRvU2hhZG93Um9vdChtZXYu
dGFyZ2V0Tm9kZSgpKS0+aG9zdEVsZW1lbnQoKSkpIHsKICAgICAgICAgICAgIEhpdFRlc3RSZXF1
ZXN0IHJlcXVlc3QoSGl0VGVzdFJlcXVlc3Q6OlJlYWRPbmx5IHwgSGl0VGVzdFJlcXVlc3Q6OkFj
dGl2ZSB8IEhpdFRlc3RSZXF1ZXN0OjpEaXNhbGxvd1NoYWRvd0NvbnRlbnQpOwotICAgICAgICAg
ICAgbWV2ID0gbV9mcmFtZS5kb2N1bWVudCgpLT5wcmVwYXJlTW91c2VFdmVudChyZXF1ZXN0LCBk
b2N1bWVudFBvaW50LCBtb3VzZUV2ZW50KTsKKyAgICAgICAgICAgIG1ldiA9IG1fZnJhbWUuZG9j
dW1lbnQoKS5wcmVwYXJlTW91c2VFdmVudChyZXF1ZXN0LCBkb2N1bWVudFBvaW50LCBtb3VzZUV2
ZW50KTsKICAgICAgICAgfQogCiAgICAgICAgIEZyYW1lVmlldyogdmlldyA9IG1fZnJhbWUudmll
dygpOwpAQCAtMTc3Nyw3ICsxNzc3LDcgQEAgYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZU1vdXNl
TW92ZUV2ZW50KGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgbW91c2VFdmVudCwgSGkKICNlbmRp
ZgogCiAgICAgaWYgKG1fc3ZnUGFuKSB7Ci0gICAgICAgIHRvU1ZHRG9jdW1lbnQobV9mcmFtZS5k
b2N1bWVudCgpKS0+dXBkYXRlUGFuKG1fZnJhbWUudmlldygpLT53aW5kb3dUb0NvbnRlbnRzKG1f
bGFzdEtub3duTW91c2VQb3NpdGlvbikpOworICAgICAgICB0b1NWR0RvY3VtZW50KCZtX2ZyYW1l
LmRvY3VtZW50KCkpLT51cGRhdGVQYW4obV9mcmFtZS52aWV3KCktPndpbmRvd1RvQ29udGVudHMo
bV9sYXN0S25vd25Nb3VzZVBvc2l0aW9uKSk7CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgIH0K
IApAQCAtMTkyMSw3ICsxOTIxLDcgQEAgYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZU1vdXNlUmVs
ZWFzZUV2ZW50KGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgbW91c2VFdmVudCkKIAogICAgIGlm
IChtX3N2Z1BhbikgewogICAgICAgICBtX3N2Z1BhbiA9IGZhbHNlOwotICAgICAgICB0b1NWR0Rv
Y3VtZW50KG1fZnJhbWUuZG9jdW1lbnQoKSktPnVwZGF0ZVBhbihtX2ZyYW1lLnZpZXcoKS0+d2lu
ZG93VG9Db250ZW50cyhtX2xhc3RLbm93bk1vdXNlUG9zaXRpb24pKTsKKyAgICAgICAgdG9TVkdE
b2N1bWVudCgmbV9mcmFtZS5kb2N1bWVudCgpKS0+dXBkYXRlUGFuKG1fZnJhbWUudmlldygpLT53
aW5kb3dUb0NvbnRlbnRzKG1fbGFzdEtub3duTW91c2VQb3NpdGlvbikpOwogICAgICAgICByZXR1
cm4gdHJ1ZTsKICAgICB9CiAKQEAgLTIwMTIsNyArMjAxMiw3IEBAIGJvb2wgRXZlbnRIYW5kbGVy
OjpkaXNwYXRjaERyYWdFdmVudChjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgRWxlbWVu
dCYgZHJhCiAKICAgICB2aWV3LT5kaXNhYmxlTGF5ZXJGbHVzaFRocm90dGxpbmdUZW1wb3Jhcmls
eUZvckludGVyYWN0aW9uKCk7CiAgICAgUmVmUHRyPE1vdXNlRXZlbnQ+IG1lID0gTW91c2VFdmVu
dDo6Y3JlYXRlKGV2ZW50VHlwZSwKLSAgICAgICAgdHJ1ZSwgdHJ1ZSwgZXZlbnQudGltZXN0YW1w
KCksIG1fZnJhbWUuZG9jdW1lbnQoKS0+ZGVmYXVsdFZpZXcoKSwKKyAgICAgICAgdHJ1ZSwgdHJ1
ZSwgZXZlbnQudGltZXN0YW1wKCksIG1fZnJhbWUuZG9jdW1lbnQoKS5kZWZhdWx0VmlldygpLAog
ICAgICAgICAwLCBldmVudC5nbG9iYWxQb3NpdGlvbigpLngoKSwgZXZlbnQuZ2xvYmFsUG9zaXRp
b24oKS55KCksIGV2ZW50LnBvc2l0aW9uKCkueCgpLCBldmVudC5wb3NpdGlvbigpLnkoKSwKICNp
ZiBFTkFCTEUoUE9JTlRFUl9MT0NLKQogICAgICAgICBldmVudC5tb3ZlbWVudERlbHRhKCkueCgp
LCBldmVudC5tb3ZlbWVudERlbHRhKCkueSgpLApAQCAtMjI0Niw3ICsyMjQ2LDcgQEAgdm9pZCBF
dmVudEhhbmRsZXI6OnNldENhcHR1cmluZ01vdXNlRXZlbnRzRWxlbWVudChQYXNzUmVmUHRyPEVs
ZW1lbnQ+IGVsZW1lbnQpCiBNb3VzZUV2ZW50V2l0aEhpdFRlc3RSZXN1bHRzIEV2ZW50SGFuZGxl
cjo6cHJlcGFyZU1vdXNlRXZlbnQoY29uc3QgSGl0VGVzdFJlcXVlc3QmIHJlcXVlc3QsIGNvbnN0
IFBsYXRmb3JtTW91c2VFdmVudCYgbWV2KQogewogICAgIEFTU0VSVChtX2ZyYW1lLmRvY3VtZW50
KCkpOwotICAgIHJldHVybiBtX2ZyYW1lLmRvY3VtZW50KCktPnByZXBhcmVNb3VzZUV2ZW50KHJl
cXVlc3QsIGRvY3VtZW50UG9pbnRGb3JXaW5kb3dQb2ludChtX2ZyYW1lLCBtZXYucG9zaXRpb24o
KSksIG1ldik7CisgICAgcmV0dXJuIG1fZnJhbWUuZG9jdW1lbnQoKS5wcmVwYXJlTW91c2VFdmVu
dChyZXF1ZXN0LCBkb2N1bWVudFBvaW50Rm9yV2luZG93UG9pbnQobV9mcmFtZSwgbWV2LnBvc2l0
aW9uKCkpLCBtZXYpOwogfQogCiBzdGF0aWMgaW5saW5lIFNWR0VsZW1lbnRJbnN0YW5jZSogaW5z
dGFuY2VBc3NvY2lhdGVkV2l0aFNoYWRvd1RyZWVFbGVtZW50KE5vZGUqIHJlZmVyZW5jZU5vZGUp
CkBAIC0yMzQ0LDcgKzIzNDQsNyBAQCB2b2lkIEV2ZW50SGFuZGxlcjo6dXBkYXRlTW91c2VFdmVu
dFRhcmdldE5vZGUoTm9kZSogdGFyZ2V0Tm9kZSwgY29uc3QgUGxhdGZvcm1NbwogICAgICAgICBS
ZW5kZXJMYXllciogbGF5ZXJGb3JOb2RlVW5kZXJNb3VzZSA9IGxheWVyRm9yTm9kZShtX2VsZW1l
bnRVbmRlck1vdXNlLmdldCgpKTsKICAgICAgICAgUGFnZSogcGFnZSA9IG1fZnJhbWUucGFnZSgp
OwogCi0gICAgICAgIGlmIChtX2xhc3RFbGVtZW50VW5kZXJNb3VzZSAmJiAoIW1fZWxlbWVudFVu
ZGVyTW91c2UgfHwgJm1fZWxlbWVudFVuZGVyTW91c2UtPmRvY3VtZW50KCkgIT0gbV9mcmFtZS5k
b2N1bWVudCgpKSkgeworICAgICAgICBpZiAobV9sYXN0RWxlbWVudFVuZGVyTW91c2UgJiYgKCFt
X2VsZW1lbnRVbmRlck1vdXNlIHx8ICZtX2VsZW1lbnRVbmRlck1vdXNlLT5kb2N1bWVudCgpICE9
ICZtX2ZyYW1lLmRvY3VtZW50KCkpKSB7CiAgICAgICAgICAgICAvLyBUaGUgbW91c2UgaGFzIG1v
dmVkIGJldHdlZW4gZnJhbWVzLgogICAgICAgICAgICAgaWYgKEZyYW1lKiBmcmFtZSA9IG1fbGFz
dEVsZW1lbnRVbmRlck1vdXNlLT5kb2N1bWVudCgpLmZyYW1lKCkpIHsKICAgICAgICAgICAgICAg
ICBpZiAoRnJhbWVWaWV3KiBmcmFtZVZpZXcgPSBmcmFtZS0+dmlldygpKQpAQCAtMjM2MCw3ICsy
MzYwLDcgQEAgdm9pZCBFdmVudEhhbmRsZXI6OnVwZGF0ZU1vdXNlRXZlbnRUYXJnZXROb2RlKE5v
ZGUqIHRhcmdldE5vZGUsIGNvbnN0IFBsYXRmb3JtTW8KICAgICAgICAgICAgIH0KICAgICAgICAg
fQogCi0gICAgICAgIGlmIChtX2VsZW1lbnRVbmRlck1vdXNlICYmICghbV9sYXN0RWxlbWVudFVu
ZGVyTW91c2UgfHwgJm1fbGFzdEVsZW1lbnRVbmRlck1vdXNlLT5kb2N1bWVudCgpICE9IG1fZnJh
bWUuZG9jdW1lbnQoKSkpIHsKKyAgICAgICAgaWYgKG1fZWxlbWVudFVuZGVyTW91c2UgJiYgKCFt
X2xhc3RFbGVtZW50VW5kZXJNb3VzZSB8fCAmbV9sYXN0RWxlbWVudFVuZGVyTW91c2UtPmRvY3Vt
ZW50KCkgIT0gJm1fZnJhbWUuZG9jdW1lbnQoKSkpIHsKICAgICAgICAgICAgIC8vIFRoZSBtb3Vz
ZSBoYXMgbW92ZWQgYmV0d2VlbiBmcmFtZXMuCiAgICAgICAgICAgICBpZiAoRnJhbWUqIGZyYW1l
ID0gbV9lbGVtZW50VW5kZXJNb3VzZS0+ZG9jdW1lbnQoKS5mcmFtZSgpKSB7CiAgICAgICAgICAg
ICAgICAgaWYgKEZyYW1lVmlldyogZnJhbWVWaWV3ID0gZnJhbWUtPnZpZXcoKSkKQEAgLTIzNzYs
NyArMjM3Niw3IEBAIHZvaWQgRXZlbnRIYW5kbGVyOjp1cGRhdGVNb3VzZUV2ZW50VGFyZ2V0Tm9k
ZShOb2RlKiB0YXJnZXROb2RlLCBjb25zdCBQbGF0Zm9ybU1vCiAgICAgICAgICAgICB9CiAgICAg
ICAgIH0KIAotICAgICAgICBpZiAobV9sYXN0RWxlbWVudFVuZGVyTW91c2UgJiYgJm1fbGFzdEVs
ZW1lbnRVbmRlck1vdXNlLT5kb2N1bWVudCgpICE9IG1fZnJhbWUuZG9jdW1lbnQoKSkgeworICAg
ICAgICBpZiAobV9sYXN0RWxlbWVudFVuZGVyTW91c2UgJiYgJm1fbGFzdEVsZW1lbnRVbmRlck1v
dXNlLT5kb2N1bWVudCgpICE9ICZtX2ZyYW1lLmRvY3VtZW50KCkpIHsKICAgICAgICAgICAgIG1f
bGFzdEVsZW1lbnRVbmRlck1vdXNlID0gbnVsbHB0cjsKICAgICAgICAgICAgIG1fbGFzdFNjcm9s
bGJhclVuZGVyTW91c2UgPSAwOwogICAgICAgICAgICAgbV9sYXN0SW5zdGFuY2VVbmRlck1vdXNl
ID0gMDsKQEAgLTI0NjIsNyArMjQ2Miw3IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpkaXNwYXRjaE1v
dXNlRXZlbnQoY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIE5vZGUqIHRhcmdlCiAgICAg
ICAgIH0KIAogICAgICAgICAvLyBUaGUgbGF5b3V0IG5lZWRzIHRvIGJlIHVwIHRvIGRhdGUgdG8g
ZGV0ZXJtaW5lIGlmIGFuIGVsZW1lbnQgaXMgZm9jdXNhYmxlLgotICAgICAgICBtX2ZyYW1lLmRv
Y3VtZW50KCktPnVwZGF0ZUxheW91dElnbm9yZVBlbmRpbmdTdHlsZXNoZWV0cygpOworICAgICAg
ICBtX2ZyYW1lLmRvY3VtZW50KCkudXBkYXRlTGF5b3V0SWdub3JlUGVuZGluZ1N0eWxlc2hlZXRz
KCk7CiAKICAgICAgICAgLy8gQmx1ciBjdXJyZW50IGZvY3VzIG5vZGUgd2hlbiBhIGxpbmsvYnV0
dG9uIGlzIGNsaWNrZWQ7IHRoaXMKICAgICAgICAgLy8gaXMgZXhwZWN0ZWQgYnkgc29tZSBzaXRl
cyB0aGF0IHJlbHkgb24gb25DaGFuZ2UgaGFuZGxlcnMgcnVubmluZwpAQCAtMjQ3OSw3ICsyNDc5
LDcgQEAgYm9vbCBFdmVudEhhbmRsZXI6OmRpc3BhdGNoTW91c2VFdmVudChjb25zdCBBdG9taWNT
dHJpbmcmIGV2ZW50VHlwZSwgTm9kZSogdGFyZ2UKICAgICAgICAgICAgICAgICAvLyB3aWxsIHNl
dCBhIHNlbGVjdGlvbiBpbnNpZGUgaXQsIHdoaWNoIHdpbGwgY2FsbCBzZXRGb2N1c2VOb2RlSWZO
ZWVkZWQuCiAgICAgICAgICAgICAgICAgaWYgKG1fZnJhbWUuc2VsZWN0aW9uKCkuaXNSYW5nZSgp
CiAgICAgICAgICAgICAgICAgICAgICYmIG1fZnJhbWUuc2VsZWN0aW9uKCkudG9Ob3JtYWxpemVk
UmFuZ2UoKS0+Y29tcGFyZU5vZGUoZWxlbWVudCwgSUdOT1JFX0VYQ0VQVElPTikgPT0gUmFuZ2U6
Ok5PREVfSU5TSURFCi0gICAgICAgICAgICAgICAgICAgICYmIGVsZW1lbnQtPmlzRGVzY2VuZGFu
dE9mKG1fZnJhbWUuZG9jdW1lbnQoKS0+Zm9jdXNlZEVsZW1lbnQoKSkpCisgICAgICAgICAgICAg
ICAgICAgICYmIGVsZW1lbnQtPmlzRGVzY2VuZGFudE9mKG1fZnJhbWUuZG9jdW1lbnQoKS5mb2N1
c2VkRWxlbWVudCgpKSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAg
ICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgIGJyZWFrOwpAQCAtMjU0OSw3ICsyNTQ5LDcg
QEAgYm9vbCBFdmVudEhhbmRsZXI6OnBsYXRmb3JtQ29tcGxldGVXaGVlbEV2ZW50KGNvbnN0IFBs
YXRmb3JtV2hlZWxFdmVudCYgZXZlbnQsIEMKIAogYm9vbCBFdmVudEhhbmRsZXI6OmhhbmRsZVdo
ZWVsRXZlbnQoY29uc3QgUGxhdGZvcm1XaGVlbEV2ZW50JiBlKQogewotICAgIERvY3VtZW50KiBk
b2N1bWVudCA9IG1fZnJhbWUuZG9jdW1lbnQoKTsKKyAgICBEb2N1bWVudCogZG9jdW1lbnQgPSAm
bV9mcmFtZS5kb2N1bWVudCgpOwogCiAgICAgaWYgKCFkb2N1bWVudC0+cmVuZGVyVmlldygpKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CkBAIC0yNjU4LDcgKzI2NTgsNyBAQCB2b2lkIEV2ZW50SGFu
ZGxlcjo6ZGVmYXVsdFdoZWVsRXZlbnRIYW5kbGVyKE5vZGUqIHN0YXJ0Tm9kZSwgV2hlZWxFdmVu
dCogd2hlZWxFdgogI2lmIEVOQUJMRShDT05URVhUX01FTlVTKQogYm9vbCBFdmVudEhhbmRsZXI6
OnNlbmRDb250ZXh0TWVudUV2ZW50KGNvbnN0IFBsYXRmb3JtTW91c2VFdmVudCYgZXZlbnQpCiB7
Ci0gICAgRG9jdW1lbnQqIGRvYyA9IG1fZnJhbWUuZG9jdW1lbnQoKTsKKyAgICBEb2N1bWVudCog
ZG9jID0gJm1fZnJhbWUuZG9jdW1lbnQoKTsKICAgICBGcmFtZVZpZXcqIHYgPSBtX2ZyYW1lLnZp
ZXcoKTsKICAgICBpZiAoIXYpCiAgICAgICAgIHJldHVybiBmYWxzZTsKQEAgLTI2OTIsNyArMjY5
Miw3IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpzZW5kQ29udGV4dE1lbnVFdmVudEZvcktleSgpCiAg
ICAgaWYgKCF2aWV3KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBEb2N1bWVudCogZG9j
ID0gbV9mcmFtZS5kb2N1bWVudCgpOworICAgIERvY3VtZW50KiBkb2MgPSAmbV9mcmFtZS5kb2N1
bWVudCgpOwogICAgIGlmICghZG9jKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTI4NzEs
NyArMjg3MSw3IEBAIHZvaWQgRXZlbnRIYW5kbGVyOjpob3ZlclRpbWVyRmlyZWQoVGltZXI8RXZl
bnRIYW5kbGVyPiYpCiAgICAgICAgICAgICBIaXRUZXN0UmVxdWVzdCByZXF1ZXN0KEhpdFRlc3RS
ZXF1ZXN0OjpNb3ZlIHwgSGl0VGVzdFJlcXVlc3Q6OkRpc2FsbG93U2hhZG93Q29udGVudCk7CiAg
ICAgICAgICAgICBIaXRUZXN0UmVzdWx0IHJlc3VsdCh2aWV3LT53aW5kb3dUb0NvbnRlbnRzKG1f
bGFzdEtub3duTW91c2VQb3NpdGlvbikpOwogICAgICAgICAgICAgcmVuZGVyZXItPmhpdFRlc3Qo
cmVxdWVzdCwgcmVzdWx0KTsKLSAgICAgICAgICAgIG1fZnJhbWUuZG9jdW1lbnQoKS0+dXBkYXRl
SG92ZXJBY3RpdmVTdGF0ZShyZXF1ZXN0LCByZXN1bHQuaW5uZXJFbGVtZW50KCkpOworICAgICAg
ICAgICAgbV9mcmFtZS5kb2N1bWVudCgpLnVwZGF0ZUhvdmVyQWN0aXZlU3RhdGUocmVxdWVzdCwg
cmVzdWx0LmlubmVyRWxlbWVudCgpKTsKICAgICAgICAgfQogICAgIH0KIH0KQEAgLTI4ODYsNyAr
Mjg4Niw3IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjpoYW5kbGVBY2Nlc3NLZXkoY29uc3QgUGxhdGZv
cm1LZXlib2FyZEV2ZW50JiBldnQpCiAgICAgaWYgKChldnQubW9kaWZpZXJzKCkgJiB+UGxhdGZv
cm1FdmVudDo6U2hpZnRLZXkpICE9IGFjY2Vzc0tleU1vZGlmaWVycygpKQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgU3RyaW5nIGtleSA9IGV2dC51bm1vZGlmaWVkVGV4dCgpOwotICAgIEVs
ZW1lbnQqIGVsZW0gPSBtX2ZyYW1lLmRvY3VtZW50KCktPmdldEVsZW1lbnRCeUFjY2Vzc0tleShr
ZXkubG93ZXIoKSk7CisgICAgRWxlbWVudCogZWxlbSA9IG1fZnJhbWUuZG9jdW1lbnQoKS5nZXRF
bGVtZW50QnlBY2Nlc3NLZXkoa2V5Lmxvd2VyKCkpOwogICAgIGlmICghZWxlbSkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgIGVsZW0tPmFjY2Vzc0tleUFjdGlvbihmYWxzZSk7CkBAIC0yOTAz
LDcgKzI5MDMsNyBAQCBib29sIEV2ZW50SGFuZGxlcjo6bmVlZHNLZXlib2FyZEV2ZW50RGlzYW1i
aWd1YXRpb25RdWlya3MoKSBjb25zdAogI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKIGJvb2wg
RXZlbnRIYW5kbGVyOjppc0tleUV2ZW50QWxsb3dlZEluRnVsbFNjcmVlbihjb25zdCBQbGF0Zm9y
bUtleWJvYXJkRXZlbnQmIGtleUV2ZW50KSBjb25zdAogewotICAgIERvY3VtZW50KiBkb2N1bWVu
dCA9IG1fZnJhbWUuZG9jdW1lbnQoKTsKKyAgICBEb2N1bWVudCogZG9jdW1lbnQgPSAmbV9mcmFt
ZS5kb2N1bWVudCgpOwogICAgIGlmIChkb2N1bWVudC0+d2Via2l0RnVsbFNjcmVlbktleWJvYXJk
SW5wdXRBbGxvd2VkKCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCkBAIC0yOTI3LDcgKzI5Mjcs
NyBAQCBib29sIEV2ZW50SGFuZGxlcjo6a2V5RXZlbnQoY29uc3QgUGxhdGZvcm1LZXlib2FyZEV2
ZW50JiBpbml0aWFsS2V5RXZlbnQpCiAgICAgUmVmUHRyPEZyYW1lVmlldz4gcHJvdGVjdG9yKG1f
ZnJhbWUudmlldygpKTsKIAogI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKLSAgICBpZiAobV9m
cmFtZS5kb2N1bWVudCgpLT53ZWJraXRJc0Z1bGxTY3JlZW4oKSAmJiAhaXNLZXlFdmVudEFsbG93
ZWRJbkZ1bGxTY3JlZW4oaW5pdGlhbEtleUV2ZW50KSkKKyAgICBpZiAobV9mcmFtZS5kb2N1bWVu
dCgpLndlYmtpdElzRnVsbFNjcmVlbigpICYmICFpc0tleUV2ZW50QWxsb3dlZEluRnVsbFNjcmVl
bihpbml0aWFsS2V5RXZlbnQpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAjZW5kaWYKIApAQCAt
Mjk0Nyw3ICsyOTQ3LDcgQEAgYm9vbCBFdmVudEhhbmRsZXI6OmtleUV2ZW50KGNvbnN0IFBsYXRm
b3JtS2V5Ym9hcmRFdmVudCYgaW5pdGlhbEtleUV2ZW50KQogCiAgICAgLy8gQ2hlY2sgZm9yIGNh
c2VzIHdoZXJlIHdlIGFyZSB0b28gZWFybHkgZm9yIGV2ZW50cyAtLSBwb3NzaWJsZSB1bm1hdGNo
ZWQga2V5IHVwCiAgICAgLy8gZnJvbSBwcmVzc2luZyByZXR1cm4gaW4gdGhlIGxvY2F0aW9uIGJh
ci4KLSAgICBSZWZQdHI8RWxlbWVudD4gZWxlbWVudCA9IGV2ZW50VGFyZ2V0RWxlbWVudEZvckRv
Y3VtZW50KG1fZnJhbWUuZG9jdW1lbnQoKSk7CisgICAgUmVmUHRyPEVsZW1lbnQ+IGVsZW1lbnQg
PSBldmVudFRhcmdldEVsZW1lbnRGb3JEb2N1bWVudCgmbV9mcmFtZS5kb2N1bWVudCgpKTsKICAg
ICBpZiAoIWVsZW1lbnQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAtMjk3OCw3ICsyOTc4
LDcgQEAgYm9vbCBFdmVudEhhbmRsZXI6OmtleUV2ZW50KGNvbnN0IFBsYXRmb3JtS2V5Ym9hcmRF
dmVudCYgaW5pdGlhbEtleUV2ZW50KQogICAgIFBsYXRmb3JtS2V5Ym9hcmRFdmVudCBrZXlEb3du
RXZlbnQgPSBpbml0aWFsS2V5RXZlbnQ7ICAgIAogICAgIGlmIChrZXlEb3duRXZlbnQudHlwZSgp
ICE9IFBsYXRmb3JtRXZlbnQ6OlJhd0tleURvd24pCiAgICAgICAgIGtleURvd25FdmVudC5kaXNh
bWJpZ3VhdGVLZXlEb3duRXZlbnQoUGxhdGZvcm1FdmVudDo6UmF3S2V5RG93biwgYmFja3dhcmRD
b21wYXRpYmlsaXR5TW9kZSk7Ci0gICAgUmVmUHRyPEtleWJvYXJkRXZlbnQ+IGtleWRvd24gPSBL
ZXlib2FyZEV2ZW50OjpjcmVhdGUoa2V5RG93bkV2ZW50LCBtX2ZyYW1lLmRvY3VtZW50KCktPmRl
ZmF1bHRWaWV3KCkpOworICAgIFJlZlB0cjxLZXlib2FyZEV2ZW50PiBrZXlkb3duID0gS2V5Ym9h
cmRFdmVudDo6Y3JlYXRlKGtleURvd25FdmVudCwgbV9mcmFtZS5kb2N1bWVudCgpLmRlZmF1bHRW
aWV3KCkpOwogICAgIGlmIChtYXRjaGVkQW5BY2Nlc3NLZXkpCiAgICAgICAgIGtleWRvd24tPnNl
dERlZmF1bHRQcmV2ZW50ZWQodHJ1ZSk7CiAgICAga2V5ZG93bi0+c2V0VGFyZ2V0KGVsZW1lbnQp
OwpAQCAtMzAwMSw3ICszMDAxLDcgQEAgYm9vbCBFdmVudEhhbmRsZXI6OmtleUV2ZW50KGNvbnN0
IFBsYXRmb3JtS2V5Ym9hcmRFdmVudCYgaW5pdGlhbEtleUV2ZW50KQogICAgIAogICAgIGlmICho
YW5kbGVkQnlJbnB1dE1ldGhvZCkgewogICAgICAgICBrZXlEb3duRXZlbnQuc2V0V2luZG93c1Zp
cnR1YWxLZXlDb2RlKENvbXBvc2l0aW9uRXZlbnRLZXlDb2RlKTsKLSAgICAgICAga2V5ZG93biA9
IEtleWJvYXJkRXZlbnQ6OmNyZWF0ZShrZXlEb3duRXZlbnQsIG1fZnJhbWUuZG9jdW1lbnQoKS0+
ZGVmYXVsdFZpZXcoKSk7CisgICAgICAgIGtleWRvd24gPSBLZXlib2FyZEV2ZW50OjpjcmVhdGUo
a2V5RG93bkV2ZW50LCBtX2ZyYW1lLmRvY3VtZW50KCkuZGVmYXVsdFZpZXcoKSk7CiAgICAgICAg
IGtleWRvd24tPnNldFRhcmdldChlbGVtZW50KTsKICAgICAgICAga2V5ZG93bi0+c2V0RGVmYXVs
dEhhbmRsZWQoKTsKICAgICB9CkBAIC0zMDE2LDcgKzMwMTYsNyBAQCBib29sIEV2ZW50SGFuZGxl
cjo6a2V5RXZlbnQoY29uc3QgUGxhdGZvcm1LZXlib2FyZEV2ZW50JiBpbml0aWFsS2V5RXZlbnQp
CiAgICAgLy8gRm9jdXMgbWF5IGhhdmUgY2hhbmdlZCBkdXJpbmcga2V5ZG93biBoYW5kbGluZywg
c28gcmVmZXRjaCBlbGVtZW50LgogICAgIC8vIEJ1dCBpZiB3ZSBhcmUgZGlzcGF0Y2hpbmcgYSBm
YWtlIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkga2V5cHJlc3MsIHRoZW4gd2UgcHJldGVuZCB0aGF0
IHRoZSBrZXlwcmVzcyBoYXBwZW5lZCBvbiB0aGUgb3JpZ2luYWwgZWxlbWVudC4KICAgICBpZiAo
IWtleWRvd25SZXN1bHQpIHsKLSAgICAgICAgZWxlbWVudCA9IGV2ZW50VGFyZ2V0RWxlbWVudEZv
ckRvY3VtZW50KG1fZnJhbWUuZG9jdW1lbnQoKSk7CisgICAgICAgIGVsZW1lbnQgPSBldmVudFRh
cmdldEVsZW1lbnRGb3JEb2N1bWVudCgmbV9mcmFtZS5kb2N1bWVudCgpKTsKICAgICAgICAgaWYg
KCFlbGVtZW50KQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KQEAgLTMwMjUsNyAr
MzAyNSw3IEBAIGJvb2wgRXZlbnRIYW5kbGVyOjprZXlFdmVudChjb25zdCBQbGF0Zm9ybUtleWJv
YXJkRXZlbnQmIGluaXRpYWxLZXlFdmVudCkKICAgICBrZXlQcmVzc0V2ZW50LmRpc2FtYmlndWF0
ZUtleURvd25FdmVudChQbGF0Zm9ybUV2ZW50OjpDaGFyLCBiYWNrd2FyZENvbXBhdGliaWxpdHlN
b2RlKTsKICAgICBpZiAoa2V5UHJlc3NFdmVudC50ZXh0KCkuaXNFbXB0eSgpKQogICAgICAgICBy
ZXR1cm4ga2V5ZG93blJlc3VsdDsKLSAgICBSZWZQdHI8S2V5Ym9hcmRFdmVudD4ga2V5cHJlc3Mg
PSBLZXlib2FyZEV2ZW50OjpjcmVhdGUoa2V5UHJlc3NFdmVudCwgbV9mcmFtZS5kb2N1bWVudCgp
LT5kZWZhdWx0VmlldygpKTsKKyAgICBSZWZQdHI8S2V5Ym9hcmRFdmVudD4ga2V5cHJlc3MgPSBL
ZXlib2FyZEV2ZW50OjpjcmVhdGUoa2V5UHJlc3NFdmVudCwgbV9mcmFtZS5kb2N1bWVudCgpLmRl
ZmF1bHRWaWV3KCkpOwogICAgIGtleXByZXNzLT5zZXRUYXJnZXQoZWxlbWVudCk7CiAgICAgaWYg
KGtleWRvd25SZXN1bHQpCiAgICAgICAgIGtleXByZXNzLT5zZXREZWZhdWx0UHJldmVudGVkKHRy
dWUpOwpAQCAtMzA2MCw3ICszMDYwLDcgQEAgc3RhdGljIEZvY3VzRGlyZWN0aW9uIGZvY3VzRGly
ZWN0aW9uRm9yS2V5KGNvbnN0IEF0b21pY1N0cmluZyYga2V5SWRlbnRpZmllcikKIAogc3RhdGlj
IHZvaWQgc2V0SW5pdGlhbEtleWJvYXJkU2VsZWN0aW9uKEZyYW1lJiBmcmFtZSwgU2VsZWN0aW9u
RGlyZWN0aW9uIGRpcmVjdGlvbikKIHsKLSAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBmcmFtZS5k
b2N1bWVudCgpOworICAgIERvY3VtZW50KiBkb2N1bWVudCA9ICZmcmFtZS5kb2N1bWVudCgpOwog
ICAgIGlmICghZG9jdW1lbnQpCiAgICAgICAgIHJldHVybjsKIApAQCAtMzQxMywxNCArMzQxMywx
NCBAQCBib29sIEV2ZW50SGFuZGxlcjo6aGFuZGxlVGV4dElucHV0RXZlbnQoY29uc3QgU3RyaW5n
JiB0ZXh0LCBFdmVudCogdW5kZXJseWluZ0V2ZQogICAgIGlmICh1bmRlcmx5aW5nRXZlbnQpCiAg
ICAgICAgIHRhcmdldCA9IHVuZGVybHlpbmdFdmVudC0+dGFyZ2V0KCk7CiAgICAgZWxzZQotICAg
ICAgICB0YXJnZXQgPSBldmVudFRhcmdldEVsZW1lbnRGb3JEb2N1bWVudChtX2ZyYW1lLmRvY3Vt
ZW50KCkpOworICAgICAgICB0YXJnZXQgPSBldmVudFRhcmdldEVsZW1lbnRGb3JEb2N1bWVudCgm
bV9mcmFtZS5kb2N1bWVudCgpKTsKICAgICBpZiAoIXRhcmdldCkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgIAogICAgIGlmIChGcmFtZVZpZXcqIHZpZXcgPSBtX2ZyYW1lLnZpZXcoKSkKICAg
ICAgICAgdmlldy0+ZGlzYWJsZUxheWVyRmx1c2hUaHJvdHRsaW5nVGVtcG9yYXJpbHlGb3JJbnRl
cmFjdGlvbigpOwogCi0gICAgUmVmUHRyPFRleHRFdmVudD4gZXZlbnQgPSBUZXh0RXZlbnQ6OmNy
ZWF0ZShtX2ZyYW1lLmRvY3VtZW50KCktPmRvbVdpbmRvdygpLCB0ZXh0LCBpbnB1dFR5cGUpOwor
ICAgIFJlZlB0cjxUZXh0RXZlbnQ+IGV2ZW50ID0gVGV4dEV2ZW50OjpjcmVhdGUobV9mcmFtZS5k
b2N1bWVudCgpLmRvbVdpbmRvdygpLCB0ZXh0LCBpbnB1dFR5cGUpOwogICAgIGV2ZW50LT5zZXRV
bmRlcmx5aW5nRXZlbnQodW5kZXJseWluZ0V2ZW50KTsKIAogICAgIHRhcmdldC0+ZGlzcGF0Y2hF
dmVudChldmVudCwgSUdOT1JFX0VYQ0VQVElPTik7CkBAIC0zNTMwLDcgKzM1MzAsNyBAQCB2b2lk
IEV2ZW50SGFuZGxlcjo6ZGVmYXVsdEFycm93RXZlbnRIYW5kbGVyKEZvY3VzRGlyZWN0aW9uIGZv
Y3VzRGlyZWN0aW9uLCBLZXlibwogCiAgICAgLy8gQXJyb3dzIGFuZCBvdGhlciBwb3NzaWJsZSBk
aXJlY3Rpb25hbCBuYXZpZ2F0aW9uIGtleXMgY2FuIGJlIHVzZWQgaW4gZGVzaWduCiAgICAgLy8g
bW9kZSBlZGl0aW5nLgotICAgIGlmIChtX2ZyYW1lLmRvY3VtZW50KCktPmluRGVzaWduTW9kZSgp
KQorICAgIGlmIChtX2ZyYW1lLmRvY3VtZW50KCkuaW5EZXNpZ25Nb2RlKCkpCiAgICAgICAgIHJl
dHVybjsKIAogICAgIGlmIChwYWdlLT5mb2N1c0NvbnRyb2xsZXIoKS5hZHZhbmNlRm9jdXMoZm9j
dXNEaXJlY3Rpb24sIGV2ZW50KSkKQEAgLTM1NTQsNyArMzU1NCw3IEBAIHZvaWQgRXZlbnRIYW5k
bGVyOjpkZWZhdWx0VGFiRXZlbnRIYW5kbGVyKEtleWJvYXJkRXZlbnQqIGV2ZW50KQogICAgIEZv
Y3VzRGlyZWN0aW9uIGZvY3VzRGlyZWN0aW9uID0gZXZlbnQtPnNoaWZ0S2V5KCkgPyBGb2N1c0Rp
cmVjdGlvbkJhY2t3YXJkIDogRm9jdXNEaXJlY3Rpb25Gb3J3YXJkOwogCiAgICAgLy8gVGFicyBj
YW4gYmUgdXNlZCBpbiBkZXNpZ24gbW9kZSBlZGl0aW5nLgotICAgIGlmIChtX2ZyYW1lLmRvY3Vt
ZW50KCktPmluRGVzaWduTW9kZSgpKQorICAgIGlmIChtX2ZyYW1lLmRvY3VtZW50KCkuaW5EZXNp
Z25Nb2RlKCkpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChwYWdlLT5mb2N1c0NvbnRyb2xs
ZXIoKS5hZHZhbmNlRm9jdXMoZm9jdXNEaXJlY3Rpb24sIGV2ZW50KSkKQEAgLTM1NjMsNyArMzU2
Myw3IEBAIHZvaWQgRXZlbnRIYW5kbGVyOjpkZWZhdWx0VGFiRXZlbnRIYW5kbGVyKEtleWJvYXJk
RXZlbnQqIGV2ZW50KQogCiB2b2lkIEV2ZW50SGFuZGxlcjo6Y2Fwc0xvY2tTdGF0ZU1heUhhdmVD
aGFuZ2VkKCkKIHsKLSAgICBEb2N1bWVudCogZCA9IG1fZnJhbWUuZG9jdW1lbnQoKTsKKyAgICBE
b2N1bWVudCogZCA9ICZtX2ZyYW1lLmRvY3VtZW50KCk7CiAgICAgaWYgKEVsZW1lbnQqIGVsZW1l
bnQgPSBkLT5mb2N1c2VkRWxlbWVudCgpKSB7CiAgICAgICAgIGlmIChSZW5kZXJPYmplY3QqIHIg
PSBlbGVtZW50LT5yZW5kZXJlcigpKSB7CiAgICAgICAgICAgICBpZiAoci0+aXNUZXh0RmllbGQo
KSkKQEAgLTM1NzUsOCArMzU3NSw4IEBAIHZvaWQgRXZlbnRIYW5kbGVyOjpjYXBzTG9ja1N0YXRl
TWF5SGF2ZUNoYW5nZWQoKQogdm9pZCBFdmVudEhhbmRsZXI6OnNlbmRTY3JvbGxFdmVudCgpCiB7
CiAgICAgc2V0RnJhbWVXYXNTY3JvbGxlZEJ5VXNlcigpOwotICAgIGlmIChtX2ZyYW1lLnZpZXco
KSAmJiBtX2ZyYW1lLmRvY3VtZW50KCkpCi0gICAgICAgIG1fZnJhbWUuZG9jdW1lbnQoKS0+ZXZl
bnRRdWV1ZSgpLmVucXVldWVPckRpc3BhdGNoU2Nyb2xsRXZlbnQoKm1fZnJhbWUuZG9jdW1lbnQo
KSk7CisgICAgaWYgKG1fZnJhbWUudmlldygpICYmICZtX2ZyYW1lLmRvY3VtZW50KCkpCisgICAg
ICAgIG1fZnJhbWUuZG9jdW1lbnQoKS5ldmVudFF1ZXVlKCkuZW5xdWV1ZU9yRGlzcGF0Y2hTY3Jv
bGxFdmVudChtX2ZyYW1lLmRvY3VtZW50KCkpOwogfQogCiB2b2lkIEV2ZW50SGFuZGxlcjo6c2V0
RnJhbWVXYXNTY3JvbGxlZEJ5VXNlcigpCkBAIC0zNzUzLDcgKzM3NTMsNyBAQCBib29sIEV2ZW50
SGFuZGxlcjo6aGFuZGxlVG91Y2hFdmVudChjb25zdCBQbGF0Zm9ybVRvdWNoRXZlbnQmIGV2ZW50
KQogICAgICAgICB9IGVsc2UgaWYgKHBvaW50U3RhdGUgPT0gUGxhdGZvcm1Ub3VjaFBvaW50OjpU
b3VjaFJlbGVhc2VkIHx8IHBvaW50U3RhdGUgPT0gUGxhdGZvcm1Ub3VjaFBvaW50OjpUb3VjaENh
bmNlbGxlZCkgewogICAgICAgICAgICAgLy8gTm8gbmVlZCB0byBwZXJmb3JtIGEgaGl0LXRlc3Qg
c2luY2Ugd2Ugb25seSBuZWVkIHRvIHVuc2V0IDpob3ZlciBhbmQgOmFjdGl2ZSBzdGF0ZXMuCiAg
ICAgICAgICAgICBpZiAoIXNob3VsZEdlc3R1cmVzVHJpZ2dlckFjdGl2ZSgpICYmIGFsbFRvdWNo
UmVsZWFzZWQpCi0gICAgICAgICAgICAgICAgbV9mcmFtZS5kb2N1bWVudCgpLT51cGRhdGVIb3Zl
ckFjdGl2ZVN0YXRlKGhpdFR5cGUsIDApOworICAgICAgICAgICAgICAgIG1fZnJhbWUuZG9jdW1l
bnQoKS51cGRhdGVIb3ZlckFjdGl2ZVN0YXRlKGhpdFR5cGUsIDApOwogICAgICAgICAgICAgaWYg
KHRvdWNoUG9pbnRUYXJnZXRLZXkgPT0gbV9vcmlnaW5hdGluZ1RvdWNoUG9pbnRUYXJnZXRLZXkp
CiAgICAgICAgICAgICAgICAgbV9vcmlnaW5hdGluZ1RvdWNoUG9pbnRUYXJnZXRLZXkgPSAwOwog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZvY3VzQ29udHJvbGxlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL0ZvY3VzQ29udHJvbGxlci5jcHAKaW5kZXggNDJlMzUwOC4uNjU2
N2YxZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9Gb2N1c0NvbnRyb2xsZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRm9jdXNDb250cm9sbGVyLmNwcApAQCAtMTA5LDcg
KzEwOSw3IEBAIEZvY3VzTmF2aWdhdGlvblNjb3BlIEZvY3VzTmF2aWdhdGlvblNjb3BlOjpmb2N1
c05hdmlnYXRpb25TY29wZU93bmVkQnlJRnJhbWUoSFRNCiB7CiAgICAgQVNTRVJUKGZyYW1lKTsK
ICAgICBBU1NFUlQoZnJhbWUtPmNvbnRlbnRGcmFtZSgpKTsKLSAgICByZXR1cm4gRm9jdXNOYXZp
Z2F0aW9uU2NvcGUoZnJhbWUtPmNvbnRlbnRGcmFtZSgpLT5kb2N1bWVudCgpKTsKKyAgICByZXR1
cm4gRm9jdXNOYXZpZ2F0aW9uU2NvcGUoJmZyYW1lLT5jb250ZW50RnJhbWUoKS0+ZG9jdW1lbnQo
KSk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgdm9pZCBkaXNwYXRjaEV2ZW50c09uV2luZG93QW5kRm9j
dXNlZEVsZW1lbnQoRG9jdW1lbnQqIGRvY3VtZW50LCBib29sIGZvY3VzZWQpCkBAIC0xODEsMTIg
KzE4MSwxMiBAQCB2b2lkIEZvY3VzQ29udHJvbGxlcjo6c2V0Rm9jdXNlZEZyYW1lKFBhc3NSZWZQ
dHI8RnJhbWU+IGZyYW1lKQogICAgIC8vIE5vdyB0aGF0IHRoZSBmcmFtZSBpcyB1cGRhdGVkLCBm
aXJlIGV2ZW50cyBhbmQgdXBkYXRlIHRoZSBzZWxlY3Rpb24gZm9jdXNlZCBzdGF0ZXMgb2YgYm90
aCBmcmFtZXMuCiAgICAgaWYgKG9sZEZyYW1lICYmIG9sZEZyYW1lLT52aWV3KCkpIHsKICAgICAg
ICAgb2xkRnJhbWUtPnNlbGVjdGlvbigpLnNldEZvY3VzZWQoZmFsc2UpOwotICAgICAgICBvbGRG
cmFtZS0+ZG9jdW1lbnQoKS0+ZGlzcGF0Y2hXaW5kb3dFdmVudChFdmVudDo6Y3JlYXRlKGV2ZW50
TmFtZXMoKS5ibHVyRXZlbnQsIGZhbHNlLCBmYWxzZSkpOworICAgICAgICBvbGRGcmFtZS0+ZG9j
dW1lbnQoKS5kaXNwYXRjaFdpbmRvd0V2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmJs
dXJFdmVudCwgZmFsc2UsIGZhbHNlKSk7CiAgICAgfQogCiAgICAgaWYgKG5ld0ZyYW1lICYmIG5l
d0ZyYW1lLT52aWV3KCkgJiYgaXNGb2N1c2VkKCkpIHsKICAgICAgICAgbmV3RnJhbWUtPnNlbGVj
dGlvbigpLnNldEZvY3VzZWQodHJ1ZSk7Ci0gICAgICAgIG5ld0ZyYW1lLT5kb2N1bWVudCgpLT5k
aXNwYXRjaFdpbmRvd0V2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmZvY3VzRXZlbnQs
IGZhbHNlLCBmYWxzZSkpOworICAgICAgICBuZXdGcmFtZS0+ZG9jdW1lbnQoKS5kaXNwYXRjaFdp
bmRvd0V2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmZvY3VzRXZlbnQsIGZhbHNlLCBm
YWxzZSkpOwogICAgIH0KIAogICAgIG1fcGFnZS5jaHJvbWUoKS5mb2N1c2VkRnJhbWVDaGFuZ2Vk
KG5ld0ZyYW1lLmdldCgpKTsKQEAgLTIxNiw3ICsyMTYsNyBAQCB2b2lkIEZvY3VzQ29udHJvbGxl
cjo6c2V0Rm9jdXNlZEludGVybmFsKGJvb2wgZm9jdXNlZCkKIAogICAgIGlmIChtX2ZvY3VzZWRG
cmFtZS0+dmlldygpKSB7CiAgICAgICAgIG1fZm9jdXNlZEZyYW1lLT5zZWxlY3Rpb24oKS5zZXRG
b2N1c2VkKGZvY3VzZWQpOwotICAgICAgICBkaXNwYXRjaEV2ZW50c09uV2luZG93QW5kRm9jdXNl
ZEVsZW1lbnQobV9mb2N1c2VkRnJhbWUtPmRvY3VtZW50KCksIGZvY3VzZWQpOworICAgICAgICBk
aXNwYXRjaEV2ZW50c09uV2luZG93QW5kRm9jdXNlZEVsZW1lbnQoJm1fZm9jdXNlZEZyYW1lLT5k
b2N1bWVudCgpLCBmb2N1c2VkKTsKICAgICB9CiB9CiAKQEAgLTI0NSw4ICsyNDUsOCBAQCBib29s
IEZvY3VzQ29udHJvbGxlcjo6c2V0SW5pdGlhbEZvY3VzKEZvY3VzRGlyZWN0aW9uIGRpcmVjdGlv
biwgS2V5Ym9hcmRFdmVudCogZQogICAgIC8vIElmIGZvY3VzIGlzIGJlaW5nIHNldCBpbml0aWFs
bHksIGFjY2Vzc2liaWxpdHkgbmVlZHMgdG8gYmUgaW5mb3JtZWQgdGhhdCBzeXN0ZW0gZm9jdXMg
aGFzIG1vdmVkIAogICAgIC8vIGludG8gdGhlIHdlYiBhcmVhIGFnYWluLCBldmVuIGlmIGZvY3Vz
IGRpZCBub3QgY2hhbmdlIHdpdGhpbiBXZWJDb3JlLiBQb3N0Tm90aWZpY2F0aW9uIGlzIGNhbGxl
ZCBpbnN0ZWFkCiAgICAgLy8gb2YgaGFuZGxlRm9jdXNlZFVJRWxlbWVudENoYW5nZWQsIGJlY2F1
c2UgdGhpcyB3aWxsIHNlbmQgdGhlIG5vdGlmaWNhdGlvbiBldmVuIGlmIHRoZSBlbGVtZW50IGlz
IHRoZSBzYW1lLgotICAgIGlmIChBWE9iamVjdENhY2hlKiBjYWNoZSA9IGZvY3VzZWRPck1haW5G
cmFtZSgpLmRvY3VtZW50KCktPmV4aXN0aW5nQVhPYmplY3RDYWNoZSgpKQotICAgICAgICBjYWNo
ZS0+cG9zdE5vdGlmaWNhdGlvbihmb2N1c2VkT3JNYWluRnJhbWUoKS5kb2N1bWVudCgpLCBBWE9i
amVjdENhY2hlOjpBWEZvY3VzZWRVSUVsZW1lbnRDaGFuZ2VkKTsKKyAgICBpZiAoQVhPYmplY3RD
YWNoZSogY2FjaGUgPSBmb2N1c2VkT3JNYWluRnJhbWUoKS5kb2N1bWVudCgpLmV4aXN0aW5nQVhP
YmplY3RDYWNoZSgpKQorICAgICAgICBjYWNoZS0+cG9zdE5vdGlmaWNhdGlvbigmZm9jdXNlZE9y
TWFpbkZyYW1lKCkuZG9jdW1lbnQoKSwgQVhPYmplY3RDYWNoZTo6QVhGb2N1c2VkVUlFbGVtZW50
Q2hhbmdlZCk7CiAKICAgICByZXR1cm4gZGlkQWR2YW5jZUZvY3VzOwogfQpAQCAtMjcyLDcgKzI3
Miw3IEBAIGJvb2wgRm9jdXNDb250cm9sbGVyOjphZHZhbmNlRm9jdXMoRm9jdXNEaXJlY3Rpb24g
ZGlyZWN0aW9uLCBLZXlib2FyZEV2ZW50KiBldmVuCiBib29sIEZvY3VzQ29udHJvbGxlcjo6YWR2
YW5jZUZvY3VzSW5Eb2N1bWVudE9yZGVyKEZvY3VzRGlyZWN0aW9uIGRpcmVjdGlvbiwgS2V5Ym9h
cmRFdmVudCogZXZlbnQsIGJvb2wgaW5pdGlhbEZvY3VzKQogewogICAgIEZyYW1lJiBmcmFtZSA9
IGZvY3VzZWRPck1haW5GcmFtZSgpOwotICAgIERvY3VtZW50KiBkb2N1bWVudCA9IGZyYW1lLmRv
Y3VtZW50KCk7CisgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gJmZyYW1lLmRvY3VtZW50KCk7CiAK
ICAgICBOb2RlKiBjdXJyZW50Tm9kZSA9IGRvY3VtZW50LT5mb2N1c2VkRWxlbWVudCgpOwogICAg
IC8vIEZJWE1FOiBOb3QgcXVpdGUgY29ycmVjdCB3aGVuIGl0IGNvbWVzIHRvIGZvY3VzIHRyYW5z
aXRpb25zIGxlYXZpbmcvZW50ZXJpbmcgdGhlIFdlYlZpZXcgaXRzZWxmCkBAIC0yOTUsNyArMjk1
LDcgQEAgYm9vbCBGb2N1c0NvbnRyb2xsZXI6OmFkdmFuY2VGb2N1c0luRG9jdW1lbnRPcmRlcihG
b2N1c0RpcmVjdGlvbiBkaXJlY3Rpb24sIEtleWIKICAgICAgICAgfQogCiAgICAgICAgIC8vIENo
cm9tZSBkb2Vzbid0IHdhbnQgZm9jdXMsIHNvIHdlIHNob3VsZCB3cmFwIGZvY3VzLgotICAgICAg
ICBlbGVtZW50ID0gZmluZEZvY3VzYWJsZUVsZW1lbnRSZWN1cnNpdmVseShkaXJlY3Rpb24sIEZv
Y3VzTmF2aWdhdGlvblNjb3BlOjpmb2N1c05hdmlnYXRpb25TY29wZU9mKG1fcGFnZS5tYWluRnJh
bWUoKS5kb2N1bWVudCgpKSwgMCwgZXZlbnQpOworICAgICAgICBlbGVtZW50ID0gZmluZEZvY3Vz
YWJsZUVsZW1lbnRSZWN1cnNpdmVseShkaXJlY3Rpb24sIEZvY3VzTmF2aWdhdGlvblNjb3BlOjpm
b2N1c05hdmlnYXRpb25TY29wZU9mKCZtX3BhZ2UubWFpbkZyYW1lKCkuZG9jdW1lbnQoKSksIDAs
IGV2ZW50KTsKICAgICAgICAgZWxlbWVudCA9IGZpbmRGb2N1c2FibGVFbGVtZW50RGVzY2VuZGlu
Z0Rvd25JbnRvRnJhbWVEb2N1bWVudChkaXJlY3Rpb24sIGVsZW1lbnQuZ2V0KCksIGV2ZW50KTsK
IAogICAgICAgICBpZiAoIWVsZW1lbnQpCkBAIC01NDksNyArNTQ5LDcgQEAgc3RhdGljIHZvaWQg
Y2xlYXJTZWxlY3Rpb25JZk5lZWRlZChGcmFtZSogb2xkRm9jdXNlZEZyYW1lLCBGcmFtZSogbmV3
Rm9jdXNlZEZyYW0KICAgICBpZiAoIW9sZEZvY3VzZWRGcmFtZSB8fCAhbmV3Rm9jdXNlZEZyYW1l
KQogICAgICAgICByZXR1cm47CiAgICAgICAgIAotICAgIGlmIChvbGRGb2N1c2VkRnJhbWUtPmRv
Y3VtZW50KCkgIT0gbmV3Rm9jdXNlZEZyYW1lLT5kb2N1bWVudCgpKQorICAgIGlmICgmb2xkRm9j
dXNlZEZyYW1lLT5kb2N1bWVudCgpICE9ICZuZXdGb2N1c2VkRnJhbWUtPmRvY3VtZW50KCkpCiAg
ICAgICAgIHJldHVybjsKIAogICAgIGNvbnN0IFZpc2libGVTZWxlY3Rpb24mIHNlbGVjdGlvbiA9
IG9sZEZvY3VzZWRGcmFtZS0+c2VsZWN0aW9uKCkuc2VsZWN0aW9uKCk7CkBAIC01ODQsNyArNTg0
LDcgQEAgc3RhdGljIHZvaWQgY2xlYXJTZWxlY3Rpb25JZk5lZWRlZChGcmFtZSogb2xkRm9jdXNl
ZEZyYW1lLCBGcmFtZSogbmV3Rm9jdXNlZEZyYW0KIGJvb2wgRm9jdXNDb250cm9sbGVyOjpzZXRG
b2N1c2VkRWxlbWVudChFbGVtZW50KiBlbGVtZW50LCBQYXNzUmVmUHRyPEZyYW1lPiBuZXdGb2N1
c2VkRnJhbWUsIEZvY3VzRGlyZWN0aW9uIGRpcmVjdGlvbikKIHsKICAgICBSZWZQdHI8RnJhbWU+
IG9sZEZvY3VzZWRGcmFtZSA9IGZvY3VzZWRGcmFtZSgpOwotICAgIFJlZlB0cjxEb2N1bWVudD4g
b2xkRG9jdW1lbnQgPSBvbGRGb2N1c2VkRnJhbWUgPyBvbGRGb2N1c2VkRnJhbWUtPmRvY3VtZW50
KCkgOiAwOworICAgIFJlZlB0cjxEb2N1bWVudD4gb2xkRG9jdW1lbnQgPSBvbGRGb2N1c2VkRnJh
bWUgPyAmb2xkRm9jdXNlZEZyYW1lLT5kb2N1bWVudCgpIDogMDsKICAgICAKICAgICBFbGVtZW50
KiBvbGRGb2N1c2VkRWxlbWVudCA9IG9sZERvY3VtZW50ID8gb2xkRG9jdW1lbnQtPmZvY3VzZWRF
bGVtZW50KCkgOiAwOwogICAgIGlmIChvbGRGb2N1c2VkRWxlbWVudCA9PSBlbGVtZW50KQpAQCAt
NjYzLDcgKzY2Myw3IEBAIHZvaWQgRm9jdXNDb250cm9sbGVyOjpzZXRBY3RpdmVJbnRlcm5hbChi
b29sIGFjdGl2ZSkKICAgICBmb2N1c2VkT3JNYWluRnJhbWUoKS5zZWxlY3Rpb24oKS5wYWdlQWN0
aXZhdGlvbkNoYW5nZWQoKTsKICAgICAKICAgICBpZiAobV9mb2N1c2VkRnJhbWUgJiYgaXNGb2N1
c2VkKCkpCi0gICAgICAgIGRpc3BhdGNoRXZlbnRzT25XaW5kb3dBbmRGb2N1c2VkRWxlbWVudCht
X2ZvY3VzZWRGcmFtZS0+ZG9jdW1lbnQoKSwgYWN0aXZlKTsKKyAgICAgICAgZGlzcGF0Y2hFdmVu
dHNPbldpbmRvd0FuZEZvY3VzZWRFbGVtZW50KCZtX2ZvY3VzZWRGcmFtZS0+ZG9jdW1lbnQoKSwg
YWN0aXZlKTsKIH0KIAogc3RhdGljIHZvaWQgY29udGVudEFyZWFEaWRTaG93T3JIaWRlKFNjcm9s
bGFibGVBcmVhKiBzY3JvbGxhYmxlQXJlYSwgYm9vbCBkaWRTaG93KQpAQCAtNzUyLDcgKzc1Miw3
IEBAIHN0YXRpYyB2b2lkIHVwZGF0ZUZvY3VzQ2FuZGlkYXRlSWZOZWVkZWQoRm9jdXNEaXJlY3Rp
b24gZGlyZWN0aW9uLCBjb25zdCBGb2N1c0NhCiB2b2lkIEZvY3VzQ29udHJvbGxlcjo6ZmluZEZv
Y3VzQ2FuZGlkYXRlSW5Db250YWluZXIoTm9kZSogY29udGFpbmVyLCBjb25zdCBMYXlvdXRSZWN0
JiBzdGFydGluZ1JlY3QsIEZvY3VzRGlyZWN0aW9uIGRpcmVjdGlvbiwgS2V5Ym9hcmRFdmVudCog
ZXZlbnQsIEZvY3VzQ2FuZGlkYXRlJiBjbG9zZXN0KQogewogICAgIEFTU0VSVChjb250YWluZXIp
OwotICAgIE5vZGUqIGZvY3VzZWROb2RlID0gKGZvY3VzZWRGcmFtZSgpICYmIGZvY3VzZWRGcmFt
ZSgpLT5kb2N1bWVudCgpKSA/IGZvY3VzZWRGcmFtZSgpLT5kb2N1bWVudCgpLT5mb2N1c2VkRWxl
bWVudCgpIDogMDsKKyAgICBOb2RlKiBmb2N1c2VkTm9kZSA9IChmb2N1c2VkRnJhbWUoKSkgPyBm
b2N1c2VkRnJhbWUoKS0+ZG9jdW1lbnQoKS5mb2N1c2VkRWxlbWVudCgpIDogMDsKIAogICAgIEVs
ZW1lbnQqIGVsZW1lbnQgPSBFbGVtZW50VHJhdmVyc2FsOjpmaXJzdFdpdGhpbihjb250YWluZXIp
OwogICAgIEZvY3VzQ2FuZGlkYXRlIGN1cnJlbnQ7CkBAIC03ODQsOSArNzg0LDkgQEAgdm9pZCBG
b2N1c0NvbnRyb2xsZXI6OmZpbmRGb2N1c0NhbmRpZGF0ZUluQ29udGFpbmVyKE5vZGUqIGNvbnRh
aW5lciwgY29uc3QgTGF5b3UKIAogICAgIC8vIFRoZSB2YXJpYWJsZSAnY2FuZGlkYXRlQ291bnQn
IGtlZXBzIHRyYWNrIG9mIHRoZSBudW1iZXIgb2Ygbm9kZXMgdHJhdmVyc2VkIGluIGEgZ2l2ZW4g
Y29udGFpbmVyLgogICAgIC8vIElmIHdlIGhhdmUgbW9yZSB0aGFuIG9uZSBjb250YWluZXIgaW4g
YSBwYWdlIHRoZW4gdGhlIHRvdGFsIG51bWJlciBvZiBub2RlcyB0cmF2ZXJzZWQgaXMgZXF1YWwg
dG8gdGhlIHN1bSBvZiBub2RlcyB0cmF2ZXJzZWQgaW4gZWFjaCBjb250YWluZXIuCi0gICAgaWYg
KGZvY3VzZWRGcmFtZSgpICYmIGZvY3VzZWRGcmFtZSgpLT5kb2N1bWVudCgpKSB7Ci0gICAgICAg
IGNhbmRpZGF0ZUNvdW50ICs9IGZvY3VzZWRGcmFtZSgpLT5kb2N1bWVudCgpLT5wYWdlKCktPmxh
c3RTcGF0aWFsTmF2aWdhdGlvbkNhbmRpZGF0ZUNvdW50KCk7Ci0gICAgICAgIGZvY3VzZWRGcmFt
ZSgpLT5kb2N1bWVudCgpLT5wYWdlKCktPnNldExhc3RTcGF0aWFsTmF2aWdhdGlvbkNhbmRpZGF0
ZUNvdW50KGNhbmRpZGF0ZUNvdW50KTsKKyAgICBpZiAoZm9jdXNlZEZyYW1lKCkpIHsKKyAgICAg
ICAgY2FuZGlkYXRlQ291bnQgKz0gZm9jdXNlZEZyYW1lKCktPmRvY3VtZW50KCkucGFnZSgpLT5s
YXN0U3BhdGlhbE5hdmlnYXRpb25DYW5kaWRhdGVDb3VudCgpOworICAgICAgICBmb2N1c2VkRnJh
bWUoKS0+ZG9jdW1lbnQoKS5wYWdlKCktPnNldExhc3RTcGF0aWFsTmF2aWdhdGlvbkNhbmRpZGF0
ZUNvdW50KGNhbmRpZGF0ZUNvdW50KTsKICAgICB9CiB9CiAKQEAgLTgyMywxMSArODIzLDExIEBA
IGJvb2wgRm9jdXNDb250cm9sbGVyOjphZHZhbmNlRm9jdXNEaXJlY3Rpb25hbGx5SW5Db250YWlu
ZXIoTm9kZSogY29udGFpbmVyLCBjb25zCiAgICAgICAgIH0KICAgICAgICAgLy8gTmF2aWdhdGUg
aW50byBhIG5ldyBmcmFtZS4KICAgICAgICAgTGF5b3V0UmVjdCByZWN0OwotICAgICAgICBFbGVt
ZW50KiBmb2N1c2VkRWxlbWVudCA9IGZvY3VzZWRPck1haW5GcmFtZSgpLmRvY3VtZW50KCktPmZv
Y3VzZWRFbGVtZW50KCk7CisgICAgICAgIEVsZW1lbnQqIGZvY3VzZWRFbGVtZW50ID0gZm9jdXNl
ZE9yTWFpbkZyYW1lKCkuZG9jdW1lbnQoKS5mb2N1c2VkRWxlbWVudCgpOwogICAgICAgICBpZiAo
Zm9jdXNlZEVsZW1lbnQgJiYgIWhhc09mZnNjcmVlblJlY3QoZm9jdXNlZEVsZW1lbnQpKQogICAg
ICAgICAgICAgcmVjdCA9IG5vZGVSZWN0SW5BYnNvbHV0ZUNvb3JkaW5hdGVzKGZvY3VzZWRFbGVt
ZW50LCB0cnVlIC8qIGlnbm9yZSBib3JkZXIgKi8pOwotICAgICAgICBmcmFtZUVsZW1lbnQtPmNv
bnRlbnRGcmFtZSgpLT5kb2N1bWVudCgpLT51cGRhdGVMYXlvdXRJZ25vcmVQZW5kaW5nU3R5bGVz
aGVldHMoKTsKLSAgICAgICAgaWYgKCFhZHZhbmNlRm9jdXNEaXJlY3Rpb25hbGx5SW5Db250YWlu
ZXIoZnJhbWVFbGVtZW50LT5jb250ZW50RnJhbWUoKS0+ZG9jdW1lbnQoKSwgcmVjdCwgZGlyZWN0
aW9uLCBldmVudCkpIHsKKyAgICAgICAgZnJhbWVFbGVtZW50LT5jb250ZW50RnJhbWUoKS0+ZG9j
dW1lbnQoKS51cGRhdGVMYXlvdXRJZ25vcmVQZW5kaW5nU3R5bGVzaGVldHMoKTsKKyAgICAgICAg
aWYgKCFhZHZhbmNlRm9jdXNEaXJlY3Rpb25hbGx5SW5Db250YWluZXIoJmZyYW1lRWxlbWVudC0+
Y29udGVudEZyYW1lKCktPmRvY3VtZW50KCksIHJlY3QsIGRpcmVjdGlvbiwgZXZlbnQpKSB7CiAg
ICAgICAgICAgICAvLyBUaGUgbmV3IGZyYW1lIGhhZCBub3RoaW5nIGludGVyZXN0aW5nLCBuZWVk
IHRvIGZpbmQgYW5vdGhlciBjYW5kaWRhdGUuCiAgICAgICAgICAgICByZXR1cm4gYWR2YW5jZUZv
Y3VzRGlyZWN0aW9uYWxseUluQ29udGFpbmVyKGNvbnRhaW5lciwgbm9kZVJlY3RJbkFic29sdXRl
Q29vcmRpbmF0ZXMoZm9jdXNDYW5kaWRhdGUudmlzaWJsZU5vZGUsIHRydWUpLCBkaXJlY3Rpb24s
IGV2ZW50KTsKICAgICAgICAgfQpAQCAtODQxLDcgKzg0MSw3IEBAIGJvb2wgRm9jdXNDb250cm9s
bGVyOjphZHZhbmNlRm9jdXNEaXJlY3Rpb25hbGx5SW5Db250YWluZXIoTm9kZSogY29udGFpbmVy
LCBjb25zCiAgICAgICAgIH0KICAgICAgICAgLy8gTmF2aWdhdGUgaW50byBhIG5ldyBzY3JvbGxh
YmxlIGNvbnRhaW5lci4KICAgICAgICAgTGF5b3V0UmVjdCBzdGFydGluZ1JlY3Q7Ci0gICAgICAg
IEVsZW1lbnQqIGZvY3VzZWRFbGVtZW50ID0gZm9jdXNlZE9yTWFpbkZyYW1lKCkuZG9jdW1lbnQo
KS0+Zm9jdXNlZEVsZW1lbnQoKTsKKyAgICAgICAgRWxlbWVudCogZm9jdXNlZEVsZW1lbnQgPSBm
b2N1c2VkT3JNYWluRnJhbWUoKS5kb2N1bWVudCgpLmZvY3VzZWRFbGVtZW50KCk7CiAgICAgICAg
IGlmIChmb2N1c2VkRWxlbWVudCAmJiAhaGFzT2Zmc2NyZWVuUmVjdChmb2N1c2VkRWxlbWVudCkp
CiAgICAgICAgICAgICBzdGFydGluZ1JlY3QgPSBub2RlUmVjdEluQWJzb2x1dGVDb29yZGluYXRl
cyhmb2N1c2VkRWxlbWVudCwgdHJ1ZSk7CiAgICAgICAgIHJldHVybiBhZHZhbmNlRm9jdXNEaXJl
Y3Rpb25hbGx5SW5Db250YWluZXIoZm9jdXNDYW5kaWRhdGUudmlzaWJsZU5vZGUsIHN0YXJ0aW5n
UmVjdCwgZGlyZWN0aW9uLCBldmVudCk7CkBAIC04NjIsNyArODYyLDcgQEAgYm9vbCBGb2N1c0Nv
bnRyb2xsZXI6OmFkdmFuY2VGb2N1c0RpcmVjdGlvbmFsbHlJbkNvbnRhaW5lcihOb2RlKiBjb250
YWluZXIsIGNvbnMKIAogYm9vbCBGb2N1c0NvbnRyb2xsZXI6OmFkdmFuY2VGb2N1c0RpcmVjdGlv
bmFsbHkoRm9jdXNEaXJlY3Rpb24gZGlyZWN0aW9uLCBLZXlib2FyZEV2ZW50KiBldmVudCkKIHsK
LSAgICBEb2N1bWVudCogZm9jdXNlZERvY3VtZW50ID0gZm9jdXNlZE9yTWFpbkZyYW1lKCkuZG9j
dW1lbnQoKTsKKyAgICBEb2N1bWVudCogZm9jdXNlZERvY3VtZW50ID0gJmZvY3VzZWRPck1haW5G
cmFtZSgpLmRvY3VtZW50KCk7CiAgICAgaWYgKCFmb2N1c2VkRG9jdW1lbnQpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKIApAQCAtODg1LDcgKzg4NSw3IEBAIGJvb2wgRm9jdXNDb250cm9sbGVyOjph
ZHZhbmNlRm9jdXNEaXJlY3Rpb25hbGx5KEZvY3VzRGlyZWN0aW9uIGRpcmVjdGlvbiwgS2V5Ym9h
CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBpZiAoZm9jdXNlZEZyYW1lKCkgJiYgZm9jdXNlZEZy
YW1lKCktPmRvY3VtZW50KCkpCisgICAgaWYgKGZvY3VzZWRGcmFtZSgpKQogICAgICAgICBmb2N1
c2VkRG9jdW1lbnQtPnBhZ2UoKS0+c2V0TGFzdFNwYXRpYWxOYXZpZ2F0aW9uQ2FuZGlkYXRlQ291
bnQoMCk7CiAKICAgICBib29sIGNvbnN1bWVkID0gZmFsc2U7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wYWdlL0ZyYW1lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCmlu
ZGV4IDIzNzQ1MWUuLjk0ZTZkYWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJh
bWUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuY3BwCkBAIC03MjcsOSArNzI3
LDggQEAgdm9pZCBGcmFtZTo6aW5qZWN0VXNlclNjcmlwdHNGb3JXb3JsZChET01XcmFwcGVyV29y
bGQmIHdvcmxkLCBjb25zdCBVc2VyU2NyaXB0VmUKICAgICBpZiAodXNlclNjcmlwdHMuaXNFbXB0
eSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBEb2N1bWVudCogZG9jID0gZG9jdW1lbnQoKTsK
LSAgICBpZiAoIWRvYykKLSAgICAgICAgcmV0dXJuOworICAgIERvY3VtZW50KiBkb2MgPSAmZG9j
dW1lbnQoKTsKKyAgICBBU1NFUlQoZG9jKTsKIAogICAgIFZlY3RvcjxTY3JpcHRTb3VyY2VDb2Rl
PiBzb3VyY2VDb2RlOwogICAgIHVuc2lnbmVkIGNvdW50ID0gdXNlclNjcmlwdHMuc2l6ZSgpOwpA
QCAtNzQ1LDcgKzc0NCw3IEBAIHZvaWQgRnJhbWU6OmluamVjdFVzZXJTY3JpcHRzRm9yV29ybGQo
RE9NV3JhcHBlcldvcmxkJiB3b3JsZCwgY29uc3QgVXNlclNjcmlwdFZlCiAKIFJlbmRlclZpZXcq
IEZyYW1lOjpjb250ZW50UmVuZGVyZXIoKSBjb25zdAogewotICAgIHJldHVybiBkb2N1bWVudCgp
ID8gZG9jdW1lbnQoKS0+cmVuZGVyVmlldygpIDogMDsKKyAgICByZXR1cm4gZG9jdW1lbnQoKS5y
ZW5kZXJWaWV3KCk7CiB9CiAKIFJlbmRlcldpZGdldCogRnJhbWU6Om93bmVyUmVuZGVyZXIoKSBj
b25zdApAQCAtNzg5LDcgKzc4OCw3IEBAIHZvaWQgRnJhbWU6OmNsZWFyVGltZXJzKEZyYW1lVmll
dyAqdmlldywgRG9jdW1lbnQgKmRvY3VtZW50KQogCiB2b2lkIEZyYW1lOjpjbGVhclRpbWVycygp
CiB7Ci0gICAgY2xlYXJUaW1lcnMobV92aWV3LmdldCgpLCBkb2N1bWVudCgpKTsKKyAgICBjbGVh
clRpbWVycyhtX3ZpZXcuZ2V0KCksICZkb2N1bWVudCgpKTsKIH0KIAogdm9pZCBGcmFtZTo6d2ls
bERldGFjaFBhZ2UoKQpAQCAtODI5LDcgKzgyOCw3IEBAIHZvaWQgRnJhbWU6OmRpc2Nvbm5lY3RP
d25lckVsZW1lbnQoKQogICAgICAgICAvLyB3aGVuIGEgc3ViLWZyYW1lIGlzIHJlbW92ZWQuCiAj
aWYgSEFWRShBQ0NFU1NJQklMSVRZKQogICAgICAgICBpZiAoQVhPYmplY3RDYWNoZSogY2FjaGUg
PSBtX293bmVyRWxlbWVudC0+ZG9jdW1lbnQoKS5leGlzdGluZ0FYT2JqZWN0Q2FjaGUoKSkKLSAg
ICAgICAgICAgIGNhY2hlLT5jbGVhclRleHRNYXJrZXJOb2Rlc0luVXNlKGRvY3VtZW50KCkpOwor
ICAgICAgICAgICAgY2FjaGUtPmNsZWFyVGV4dE1hcmtlck5vZGVzSW5Vc2UoJmRvY3VtZW50KCkp
OwogI2VuZGlmCiAgICAgICAgIAogICAgICAgICBtX293bmVyRWxlbWVudC0+Y2xlYXJDb250ZW50
RnJhbWUoKTsKQEAgLTg0MSw3ICs4NDAsNyBAQCB2b2lkIEZyYW1lOjpkaXNjb25uZWN0T3duZXJF
bGVtZW50KCkKIAogU3RyaW5nIEZyYW1lOjpkaXNwbGF5U3RyaW5nTW9kaWZpZWRCeUVuY29kaW5n
KGNvbnN0IFN0cmluZyYgc3RyKSBjb25zdAogewotICAgIHJldHVybiBkb2N1bWVudCgpID8gZG9j
dW1lbnQoKS0+ZGlzcGxheVN0cmluZ01vZGlmaWVkQnlFbmNvZGluZyhzdHIpIDogc3RyOworICAg
IHJldHVybiBkb2N1bWVudCgpID8gZG9jdW1lbnQoKS5kaXNwbGF5U3RyaW5nTW9kaWZpZWRCeUVu
Y29kaW5nKHN0cikgOiBzdHI7CiB9CiAKIFZpc2libGVQb3NpdGlvbiBGcmFtZTo6dmlzaWJsZVBv
c2l0aW9uRm9yUG9pbnQoY29uc3QgSW50UG9pbnQmIGZyYW1lUG9pbnQpCkBAIC0xMDA0LDcgKzEw
MDMsNyBAQCBDb2xvciBGcmFtZTo6dGlsZWRCYWNraW5nU3RvcmVCYWNrZ3JvdW5kQ29sb3IoKSBj
b25zdAogCiBTdHJpbmcgRnJhbWU6OmxheWVyVHJlZUFzVGV4dChMYXllclRyZWVGbGFncyBmbGFn
cykgY29uc3QKIHsKLSAgICBkb2N1bWVudCgpLT51cGRhdGVMYXlvdXQoKTsKKyAgICBkb2N1bWVu
dCgpLnVwZGF0ZUxheW91dCgpOwogCiAgICAgaWYgKCFjb250ZW50UmVuZGVyZXIoKSkKICAgICAg
ICAgcmV0dXJuIFN0cmluZygpOwpAQCAtMTA5OSw5ICsxMDk4LDkgQEAgdm9pZCBGcmFtZTo6c3Vz
cGVuZEFjdGl2ZURPTU9iamVjdHNBbmRBbmltYXRpb25zKCkKIAogICAgIC8vIEZJWE1FOiBTdXNw
ZW5kL3Jlc3VtZSBjYWxscyB3aWxsIG5vdCBtYXRjaCBpZiB0aGUgZnJhbWUgaXMgbmF2aWdhdGVk
LCBhbmQgZ2V0cyBhIG5ldyBkb2N1bWVudC4KICAgICBpZiAoZG9jdW1lbnQoKSkgewotICAgICAg
ICBkb2N1bWVudCgpLT5zdXNwZW5kU2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVyQ2FsbGJhY2tz
KCk7Ci0gICAgICAgIGFuaW1hdGlvbigpLnN1c3BlbmRBbmltYXRpb25zRm9yRG9jdW1lbnQoZG9j
dW1lbnQoKSk7Ci0gICAgICAgIGRvY3VtZW50KCktPnN1c3BlbmRBY3RpdmVET01PYmplY3RzKEFj
dGl2ZURPTU9iamVjdDo6UGFnZVdpbGxCZVN1c3BlbmRlZCk7CisgICAgICAgIGRvY3VtZW50KCku
c3VzcGVuZFNjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlckNhbGxiYWNrcygpOworICAgICAgICBh
bmltYXRpb24oKS5zdXNwZW5kQW5pbWF0aW9uc0ZvckRvY3VtZW50KCZkb2N1bWVudCgpKTsKKyAg
ICAgICAgZG9jdW1lbnQoKS5zdXNwZW5kQWN0aXZlRE9NT2JqZWN0cyhBY3RpdmVET01PYmplY3Q6
OlBhZ2VXaWxsQmVTdXNwZW5kZWQpOwogICAgIH0KIH0KIApAQCAtMTExNSw5ICsxMTE0LDkgQEAg
dm9pZCBGcmFtZTo6cmVzdW1lQWN0aXZlRE9NT2JqZWN0c0FuZEFuaW1hdGlvbnMoKQogICAgICAg
ICByZXR1cm47CiAKICAgICBpZiAoZG9jdW1lbnQoKSkgewotICAgICAgICBkb2N1bWVudCgpLT5y
ZXN1bWVBY3RpdmVET01PYmplY3RzKEFjdGl2ZURPTU9iamVjdDo6UGFnZVdpbGxCZVN1c3BlbmRl
ZCk7Ci0gICAgICAgIGFuaW1hdGlvbigpLnJlc3VtZUFuaW1hdGlvbnNGb3JEb2N1bWVudChkb2N1
bWVudCgpKTsKLSAgICAgICAgZG9jdW1lbnQoKS0+cmVzdW1lU2NyaXB0ZWRBbmltYXRpb25Db250
cm9sbGVyQ2FsbGJhY2tzKCk7CisgICAgICAgIGRvY3VtZW50KCkucmVzdW1lQWN0aXZlRE9NT2Jq
ZWN0cyhBY3RpdmVET01PYmplY3Q6OlBhZ2VXaWxsQmVTdXNwZW5kZWQpOworICAgICAgICBhbmlt
YXRpb24oKS5yZXN1bWVBbmltYXRpb25zRm9yRG9jdW1lbnQoJmRvY3VtZW50KCkpOworICAgICAg
ICBkb2N1bWVudCgpLnJlc3VtZVNjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlckNhbGxiYWNrcygp
OwogICAgIH0KIH0KIApAQCAtMTEzOCw3ICsxMTM3LDcgQEAgYm9vbCBGcmFtZTo6aXNVUkxBbGxv
d2VkKGNvbnN0IFVSTCYgdXJsKSBjb25zdAogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgYm9v
bCBmb3VuZFNlbGZSZWZlcmVuY2UgPSBmYWxzZTsKICAgICBmb3IgKGNvbnN0IEZyYW1lKiBmcmFt
ZSA9IHRoaXM7IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50cmVlKCkucGFyZW50KCkpIHsKLSAgICAg
ICAgaWYgKGVxdWFsSWdub3JpbmdGcmFnbWVudElkZW50aWZpZXIoZnJhbWUtPmRvY3VtZW50KCkt
PnVybCgpLCB1cmwpKSB7CisgICAgICAgIGlmIChlcXVhbElnbm9yaW5nRnJhZ21lbnRJZGVudGlm
aWVyKGZyYW1lLT5kb2N1bWVudCgpLnVybCgpLCB1cmwpKSB7CiAgICAgICAgICAgICBpZiAoZm91
bmRTZWxmUmVmZXJlbmNlKQogICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAg
ICAgIGZvdW5kU2VsZlJlZmVyZW5jZSA9IHRydWU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0ZyYW1lLmggYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lLmgKaW5kZXggOTNlNzVk
MS4uNDFkOTAxYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZS5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWUuaApAQCAtMTUyLDcgKzE1Miw3IEBAIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKICAgICAgICAgUGFnZSogcGFnZSgpIGNvbnN0OwogICAgICAgICBIVE1MRnJh
bWVPd25lckVsZW1lbnQqIG93bmVyRWxlbWVudCgpIGNvbnN0OwogCi0gICAgICAgIERvY3VtZW50
KiBkb2N1bWVudCgpIGNvbnN0OworICAgICAgICBEb2N1bWVudCYgZG9jdW1lbnQoKSBjb25zdDsK
ICAgICAgICAgRnJhbWVWaWV3KiB2aWV3KCkgY29uc3Q7CiAKICAgICAgICAgRWRpdG9yJiBlZGl0
b3IoKSBjb25zdDsKQEAgLTM4Myw5ICszODMsOSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAg
ICAgIHJldHVybiAqbV9zY3JpcHQ7CiAgICAgfQogCi0gICAgaW5saW5lIERvY3VtZW50KiBGcmFt
ZTo6ZG9jdW1lbnQoKSBjb25zdAorICAgIGlubGluZSBEb2N1bWVudCYgRnJhbWU6OmRvY3VtZW50
KCkgY29uc3QKICAgICB7Ci0gICAgICAgIHJldHVybiBtX2RvYy5nZXQoKTsKKyAgICAgICAgcmV0
dXJuICptX2RvYzsKICAgICB9CiAKICAgICBpbmxpbmUgRnJhbWVTZWxlY3Rpb24mIEZyYW1lOjpz
ZWxlY3Rpb24oKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVNu
YXBzaG90dGluZy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lU25hcHNob3R0aW5nLmNw
cAppbmRleCA0Y2MyODJkYS4uMWExZGYxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFn
ZS9GcmFtZVNuYXBzaG90dGluZy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVNu
YXBzaG90dGluZy5jcHAKQEAgLTcwLDcgKzcwLDcgQEAgc3RkOjp1bmlxdWVfcHRyPEltYWdlQnVm
ZmVyPiBzbmFwc2hvdEZyYW1lUmVjdChGcmFtZSYgZnJhbWUsIGNvbnN0IEludFJlY3QmIGltYWcK
ICAgICBpZiAoIWZyYW1lLnBhZ2UoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKLSAgICBm
cmFtZS5kb2N1bWVudCgpLT51cGRhdGVMYXlvdXQoKTsKKyAgICBmcmFtZS5kb2N1bWVudCgpLnVw
ZGF0ZUxheW91dCgpOwogCiAgICAgRnJhbWVWaWV3OjpTZWxlY3Rpb25JblNuYXBzaG90IHNob3Vs
ZEluY2x1ZGVTZWxlY3Rpb24gPSBGcmFtZVZpZXc6OkluY2x1ZGVTZWxlY3Rpb247CiAgICAgaWYg
KG9wdGlvbnMgJiBTbmFwc2hvdE9wdGlvbnNFeGNsdWRlU2VsZWN0aW9uSGlnaGxpZ2h0aW5nKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVRyZWUuY3BwIGIvU291cmNlL1dl
YkNvcmUvcGFnZS9GcmFtZVRyZWUuY3BwCmluZGV4IDJlZjIzYjMuLjA5ZmRkM2YgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVUcmVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wYWdlL0ZyYW1lVHJlZS5jcHAKQEAgLTE3MSw3ICsxNzEsNyBAQCBBdG9taWNTdHJpbmcgRnJh
bWVUcmVlOjp1bmlxdWVDaGlsZE5hbWUoY29uc3QgQXRvbWljU3RyaW5nJiByZXF1ZXN0ZWROYW1l
KSBjb25zdAogCiBzdGF0aWMgYm9vbCBpblNjb3BlKEZyYW1lJiBmcmFtZSwgVHJlZVNjb3BlJiBz
Y29wZSkKIHsKLSAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBmcmFtZS5kb2N1bWVudCgpOworICAg
IERvY3VtZW50KiBkb2N1bWVudCA9ICZmcmFtZS5kb2N1bWVudCgpOwogICAgIGlmICghZG9jdW1l
bnQpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBIVE1MRnJhbWVPd25lckVsZW1lbnQqIG93
bmVyID0gZG9jdW1lbnQtPm93bmVyRWxlbWVudCgpOwpAQCAtMjI1LDE4ICsyMjUsMTggQEAgaW5s
aW5lIHVuc2lnbmVkIEZyYW1lVHJlZTo6c2NvcGVkQ2hpbGRDb3VudChUcmVlU2NvcGUqIHNjb3Bl
KSBjb25zdAogCiBGcmFtZSogRnJhbWVUcmVlOjpzY29wZWRDaGlsZCh1bnNpZ25lZCBpbmRleCkg
Y29uc3QKIHsKLSAgICByZXR1cm4gc2NvcGVkQ2hpbGQoaW5kZXgsIG1fdGhpc0ZyYW1lLmRvY3Vt
ZW50KCkpOworICAgIHJldHVybiBzY29wZWRDaGlsZChpbmRleCwgJm1fdGhpc0ZyYW1lLmRvY3Vt
ZW50KCkpOwogfQogCiBGcmFtZSogRnJhbWVUcmVlOjpzY29wZWRDaGlsZChjb25zdCBBdG9taWNT
dHJpbmcmIG5hbWUpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIHNjb3BlZENoaWxkKG5hbWUsIG1fdGhp
c0ZyYW1lLmRvY3VtZW50KCkpOworICAgIHJldHVybiBzY29wZWRDaGlsZChuYW1lLCAmbV90aGlz
RnJhbWUuZG9jdW1lbnQoKSk7CiB9CiAKIHVuc2lnbmVkIEZyYW1lVHJlZTo6c2NvcGVkQ2hpbGRD
b3VudCgpIGNvbnN0CiB7CiAgICAgaWYgKG1fc2NvcGVkQ2hpbGRDb3VudCA9PSBpbnZhbGlkQ291
bnQpCi0gICAgICAgIG1fc2NvcGVkQ2hpbGRDb3VudCA9IHNjb3BlZENoaWxkQ291bnQobV90aGlz
RnJhbWUuZG9jdW1lbnQoKSk7CisgICAgICAgIG1fc2NvcGVkQ2hpbGRDb3VudCA9IHNjb3BlZENo
aWxkQ291bnQoJm1fdGhpc0ZyYW1lLmRvY3VtZW50KCkpOwogICAgIHJldHVybiBtX3Njb3BlZENo
aWxkQ291bnQ7CiB9CiAKQEAgLTQyOCw3ICs0MjgsNyBAQCBzdGF0aWMgdm9pZCBwcmludEZyYW1l
cyhjb25zdCBXZWJDb3JlOjpGcmFtZSYgZnJhbWUsIGNvbnN0IFdlYkNvcmU6OkZyYW1lKiB0YXJn
ZQogICAgIHByaW50SW5kZW50KGluZGVudCk7CiAgICAgcHJpbnRmKCIgIGRvY3VtZW50PSVwXG4i
LCBmcmFtZS5kb2N1bWVudCgpKTsKICAgICBwcmludEluZGVudChpbmRlbnQpOwotICAgIHByaW50
ZigiICB1cmk9JXNcblxuIiwgZnJhbWUuZG9jdW1lbnQoKS0+ZG9jdW1lbnRVUkkoKS51dGY4KCku
ZGF0YSgpKTsKKyAgICBwcmludGYoIiAgdXJpPSVzXG5cbiIsIGZyYW1lLmRvY3VtZW50KCkuZG9j
dW1lbnRVUkkoKS51dGY4KCkuZGF0YSgpKTsKIAogICAgIGZvciAoV2ViQ29yZTo6RnJhbWUqIGNo
aWxkID0gZnJhbWUudHJlZSgpLmZpcnN0Q2hpbGQoKTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPnRy
ZWUoKS5uZXh0U2libGluZygpKQogICAgICAgICBwcmludEZyYW1lcygqY2hpbGQsIHRhcmdldEZy
YW1lLCBpbmRlbnQgKyAxKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVW
aWV3LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRnJhbWVWaWV3LmNwcAppbmRleCBjMGUzMGUw
Li44NTg0NWNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0ZyYW1lVmlldy5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9GcmFtZVZpZXcuY3BwCkBAIC00MjEsNyArNDIxLDcg
QEAgdm9pZCBGcmFtZVZpZXc6OnNldEZyYW1lUmVjdChjb25zdCBJbnRSZWN0JiBuZXdSZWN0KQog
ICAgICAgICBQYWdlKiBwYWdlID0gZnJhbWUoKS5wYWdlKCk7CiAgICAgICAgIGlmIChmcmFtZSgp
LmlzTWFpbkZyYW1lKCkgJiYgcGFnZS0+c2V0dGluZ3MoKS50ZXh0QXV0b3NpemluZ0VuYWJsZWQo
KSkgewogICAgICAgICAgICAgZm9yIChGcmFtZSogZnJhbWUgPSAmcGFnZS0+bWFpbkZyYW1lKCk7
IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50cmVlKCkudHJhdmVyc2VOZXh0KCkpCi0gICAgICAgICAg
ICAgICAgZnJhbWUoKS5kb2N1bWVudCgpLT50ZXh0QXV0b3NpemVyKCktPnJlY2FsY3VsYXRlTXVs
dGlwbGllcnMoKTsKKyAgICAgICAgICAgICAgICBmcmFtZSgpLmRvY3VtZW50KCkudGV4dEF1dG9z
aXplcigpLT5yZWNhbGN1bGF0ZU11bHRpcGxpZXJzKCk7CiAgICAgICAgIH0KICAgICB9CiAjZW5k
aWYKQEAgLTUxMSw3ICs1MTEsNyBAQCBQYXNzUmVmUHRyPFNjcm9sbGJhcj4gRnJhbWVWaWV3Ojpj
cmVhdGVTY3JvbGxiYXIoU2Nyb2xsYmFyT3JpZW50YXRpb24gb3JpZW50YXRpbwogICAgICAgICBy
ZXR1cm4gU2Nyb2xsVmlldzo6Y3JlYXRlU2Nyb2xsYmFyKG9yaWVudGF0aW9uKTsKIAogICAgIC8v
IEZJWE1FOiBXZSBuZWVkIHRvIHVwZGF0ZSB0aGUgc2Nyb2xsYmFyIGR5bmFtaWNhbGx5IGFzIGRv
Y3VtZW50cyBjaGFuZ2UgKG9yIGFzIGRvYyBlbGVtZW50cyBhbmQgYm9kaWVzIGdldCBkaXNjb3Zl
cmVkIHRoYXQgaGF2ZSBjdXN0b20gc3R5bGVzKS4KLSAgICBEb2N1bWVudCogZG9jID0gZnJhbWUo
KS5kb2N1bWVudCgpOworICAgIERvY3VtZW50KiBkb2MgPSAmZnJhbWUoKS5kb2N1bWVudCgpOwog
CiAgICAgLy8gVHJ5IHRoZSA8Ym9keT4gZWxlbWVudCBmaXJzdCBhcyBhIHNjcm9sbGJhciBzb3Vy
Y2UuCiAgICAgRWxlbWVudCogYm9keSA9IGRvYyA/IGRvYy0+Ym9keSgpIDogMDsKQEAgLTU2Nyw3
ICs1NjcsNyBAQCB2b2lkIEZyYW1lVmlldzo6YWRqdXN0Vmlld1NpemUoKQogCiAgICAgY29uc3Qg
SW50UmVjdCByZWN0ID0gcmVuZGVyVmlldy0+ZG9jdW1lbnRSZWN0KCk7CiAgICAgY29uc3QgSW50
U2l6ZSYgc2l6ZSA9IHJlY3Quc2l6ZSgpOwotICAgIFNjcm9sbFZpZXc6OnNldFNjcm9sbE9yaWdp
bihJbnRQb2ludCgtcmVjdC54KCksIC1yZWN0LnkoKSksICFmcmFtZSgpLmRvY3VtZW50KCktPnBy
aW50aW5nKCksIHNpemUgPT0gY29udGVudHNTaXplKCkpOworICAgIFNjcm9sbFZpZXc6OnNldFNj
cm9sbE9yaWdpbihJbnRQb2ludCgtcmVjdC54KCksIC1yZWN0LnkoKSksICFmcmFtZSgpLmRvY3Vt
ZW50KCkucHJpbnRpbmcoKSwgc2l6ZSA9PSBjb250ZW50c1NpemUoKSk7CiAgICAgCiAgICAgc2V0
Q29udGVudHNTaXplKHNpemUpOwogfQpAQCAtNjM3LDExICs2MzcsMTEgQEAgdm9pZCBGcmFtZVZp
ZXc6OmFwcGx5T3ZlcmZsb3dUb1ZpZXdwb3J0KFJlbmRlckVsZW1lbnQqIG8sIFNjcm9sbGJhck1v
ZGUmIGhNb2RlLAogCiB2b2lkIEZyYW1lVmlldzo6YXBwbHlQYWdpbmF0aW9uVG9WaWV3cG9ydCgp
CiB7Ci0gICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gZnJhbWUoKS5kb2N1bWVudCgpOwotICAgIGF1
dG8gZG9jdW1lbnRFbGVtZW50ID0gZG9jdW1lbnQtPmRvY3VtZW50RWxlbWVudCgpOworICAgIERv
Y3VtZW50JiBkb2N1bWVudCA9IGZyYW1lKCkuZG9jdW1lbnQoKTsKKyAgICBhdXRvIGRvY3VtZW50
RWxlbWVudCA9IGRvY3VtZW50LmRvY3VtZW50RWxlbWVudCgpOwogICAgIFJlbmRlckVsZW1lbnQq
IGRvY3VtZW50UmVuZGVyZXIgPSBkb2N1bWVudEVsZW1lbnQgPyBkb2N1bWVudEVsZW1lbnQtPnJl
bmRlcmVyKCkgOiBudWxscHRyOwogICAgIFJlbmRlckVsZW1lbnQqIGRvY3VtZW50T3JCb2R5UmVu
ZGVyZXIgPSBkb2N1bWVudFJlbmRlcmVyOwotICAgIGF1dG8gYm9keSA9IGRvY3VtZW50LT5ib2R5
KCk7CisgICAgYXV0byBib2R5ID0gZG9jdW1lbnQuYm9keSgpOwogICAgIGlmIChib2R5ICYmIGJv
ZHktPnJlbmRlcmVyKCkpIHsKICAgICAgICAgaWYgKGJvZHktPmhhc1RhZ05hbWUoYm9keVRhZykp
CiAgICAgICAgICAgICBkb2N1bWVudE9yQm9keVJlbmRlcmVyID0gZG9jdW1lbnRSZW5kZXJlci0+
c3R5bGUoKS5vdmVyZmxvd1goKSA9PSBPVklTSUJMRSAmJiBkb2N1bWVudEVsZW1lbnQtPmhhc1Rh
Z05hbWUoaHRtbFRhZykgPyBib2R5LT5yZW5kZXJlcigpIDogZG9jdW1lbnRSZW5kZXJlcjsKQEAg
LTY4MywxMCArNjgzLDEwIEBAIHZvaWQgRnJhbWVWaWV3OjpjYWxjdWxhdGVTY3JvbGxiYXJNb2Rl
c0ZvckxheW91dChTY3JvbGxiYXJNb2RlJiBoTW9kZSwgU2Nyb2xsYmFyCiAgICAgfQogICAgIAog
ICAgIGlmICghbV9sYXlvdXRSb290KSB7Ci0gICAgICAgIERvY3VtZW50KiBkb2N1bWVudCA9IGZy
YW1lKCkuZG9jdW1lbnQoKTsKLSAgICAgICAgYXV0byBkb2N1bWVudEVsZW1lbnQgPSBkb2N1bWVu
dC0+ZG9jdW1lbnRFbGVtZW50KCk7CisgICAgICAgIERvY3VtZW50JiBkb2N1bWVudCA9IGZyYW1l
KCkuZG9jdW1lbnQoKTsKKyAgICAgICAgYXV0byBkb2N1bWVudEVsZW1lbnQgPSBkb2N1bWVudC5k
b2N1bWVudEVsZW1lbnQoKTsKICAgICAgICAgUmVuZGVyRWxlbWVudCogcm9vdFJlbmRlcmVyID0g
ZG9jdW1lbnRFbGVtZW50ID8gZG9jdW1lbnRFbGVtZW50LT5yZW5kZXJlcigpIDogbnVsbHB0cjsK
LSAgICAgICAgYXV0byBib2R5ID0gZG9jdW1lbnQtPmJvZHkoKTsKKyAgICAgICAgYXV0byBib2R5
ID0gZG9jdW1lbnQuYm9keSgpOwogICAgICAgICBpZiAoYm9keSAmJiBib2R5LT5yZW5kZXJlcigp
KSB7CiAgICAgICAgICAgICBpZiAoYm9keS0+aGFzVGFnTmFtZShmcmFtZXNldFRhZykgJiYgIWZy
YW1lRmxhdHRlbmluZ0VuYWJsZWQoKSkgewogICAgICAgICAgICAgICAgIHZNb2RlID0gU2Nyb2xs
YmFyQWx3YXlzT2ZmOwpAQCAtNjk0LDcgKzY5NCw3IEBAIHZvaWQgRnJhbWVWaWV3OjpjYWxjdWxh
dGVTY3JvbGxiYXJNb2Rlc0ZvckxheW91dChTY3JvbGxiYXJNb2RlJiBoTW9kZSwgU2Nyb2xsYmFy
CiAgICAgICAgICAgICB9IGVsc2UgaWYgKGJvZHktPmhhc1RhZ05hbWUoYm9keVRhZykpIHsKICAg
ICAgICAgICAgICAgICAvLyBJdCdzIHN1ZmZpY2llbnQgdG8ganVzdCBjaGVjayB0aGUgWCBvdmVy
ZmxvdywKICAgICAgICAgICAgICAgICAvLyBzaW5jZSBpdCdzIGlsbGVnYWwgdG8gaGF2ZSB2aXNp
YmxlIGluIG9ubHkgb25lIGRpcmVjdGlvbi4KLSAgICAgICAgICAgICAgICBSZW5kZXJFbGVtZW50
KiBvID0gcm9vdFJlbmRlcmVyLT5zdHlsZSgpLm92ZXJmbG93WCgpID09IE9WSVNJQkxFICYmIGRv
Y3VtZW50LT5kb2N1bWVudEVsZW1lbnQoKS0+aGFzVGFnTmFtZShodG1sVGFnKSA/IGJvZHktPnJl
bmRlcmVyKCkgOiByb290UmVuZGVyZXI7CisgICAgICAgICAgICAgICAgUmVuZGVyRWxlbWVudCog
byA9IHJvb3RSZW5kZXJlci0+c3R5bGUoKS5vdmVyZmxvd1goKSA9PSBPVklTSUJMRSAmJiBkb2N1
bWVudC5kb2N1bWVudEVsZW1lbnQoKS0+aGFzVGFnTmFtZShodG1sVGFnKSA/IGJvZHktPnJlbmRl
cmVyKCkgOiByb290UmVuZGVyZXI7CiAgICAgICAgICAgICAgICAgYXBwbHlPdmVyZmxvd1RvVmll
d3BvcnQobywgaE1vZGUsIHZNb2RlKTsKICAgICAgICAgICAgIH0KICAgICAgICAgfSBlbHNlIGlm
IChyb290UmVuZGVyZXIpCkBAIC0xMTAzLDcgKzExMDMsNyBAQCB2b2lkIEZyYW1lVmlldzo6bGF5
b3V0KGJvb2wgYWxsb3dTdWJ0cmVlKQogCiAgICAgaWYgKGluQ2hpbGRGcmFtZUxheW91dFdpdGhG
cmFtZUZsYXR0ZW5pbmcpIHsKICAgICAgICAgc3RhcnRMYXlvdXRBdE1haW5GcmFtZVZpZXdJZk5l
ZWRlZChhbGxvd1N1YnRyZWUpOwotICAgICAgICBSZW5kZXJFbGVtZW50KiByb290ID0gbV9sYXlv
dXRSb290ID8gbV9sYXlvdXRSb290IDogZnJhbWUoKS5kb2N1bWVudCgpLT5yZW5kZXJWaWV3KCk7
CisgICAgICAgIFJlbmRlckVsZW1lbnQqIHJvb3QgPSBtX2xheW91dFJvb3QgPyBtX2xheW91dFJv
b3QgOiBmcmFtZSgpLmRvY3VtZW50KCkucmVuZGVyVmlldygpOwogICAgICAgICBpZiAoIXJvb3Qg
fHwgIXJvb3QtPm5lZWRzTGF5b3V0KCkpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgfQpAQCAt
MTEzMiw3ICsxMTMyLDcgQEAgdm9pZCBGcmFtZVZpZXc6OmxheW91dChib29sIGFsbG93U3VidHJl
ZSkKICAgICBBU1NFUlQoZnJhbWUoKS52aWV3KCkgPT0gdGhpcyk7CiAgICAgQVNTRVJUKGZyYW1l
KCkuZG9jdW1lbnQoKSk7CiAKLSAgICBEb2N1bWVudCYgZG9jdW1lbnQgPSAqZnJhbWUoKS5kb2N1
bWVudCgpOworICAgIERvY3VtZW50JiBkb2N1bWVudCA9IGZyYW1lKCkuZG9jdW1lbnQoKTsKICAg
ICBBU1NFUlQoIWRvY3VtZW50LmluUGFnZUNhY2hlKCkpOwogCiAgICAgYm9vbCBzdWJ0cmVlOwpA
QCAtMTg4MSw3ICsxODgxLDcgQEAgYm9vbCBGcmFtZVZpZXc6OnNjcm9sbFRvRnJhZ21lbnQoY29u
c3QgVVJMJiB1cmwpCiAgICAgLy8gT1RPSCBJZiBDU1MgdGFyZ2V0IHdhcyBzZXQgcHJldmlvdXNs
eSwgd2Ugd2FudCB0byBzZXQgaXQgdG8gMCwgcmVjYWxjCiAgICAgLy8gYW5kIHBvc3NpYmx5IHJl
cGFpbnQgYmVjYXVzZSA6dGFyZ2V0IHBzZXVkbyBjbGFzcyBtYXkgaGF2ZSBiZWVuCiAgICAgLy8g
c2V0IChzZWUgYnVnIDExMzIxKS4KLSAgICBpZiAoIXVybC5oYXNGcmFnbWVudElkZW50aWZpZXIo
KSAmJiAhZnJhbWUoKS5kb2N1bWVudCgpLT5jc3NUYXJnZXQoKSkKKyAgICBpZiAoIXVybC5oYXNG
cmFnbWVudElkZW50aWZpZXIoKSAmJiAhZnJhbWUoKS5kb2N1bWVudCgpLmNzc1RhcmdldCgpKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBTdHJpbmcgZnJhZ21lbnRJZGVudGlmaWVyID0g
dXJsLmZyYWdtZW50SWRlbnRpZmllcigpOwpAQCAtMTg4OSw3ICsxODg5LDcgQEAgYm9vbCBGcmFt
ZVZpZXc6OnNjcm9sbFRvRnJhZ21lbnQoY29uc3QgVVJMJiB1cmwpCiAgICAgICAgIHJldHVybiB0
cnVlOwogCiAgICAgLy8gVHJ5IGFnYWluIGFmdGVyIGRlY29kaW5nIHRoZSByZWYsIGJhc2VkIG9u
IHRoZSBkb2N1bWVudCdzIGVuY29kaW5nLgotICAgIGlmIChUZXh0UmVzb3VyY2VEZWNvZGVyKiBk
ZWNvZGVyID0gZnJhbWUoKS5kb2N1bWVudCgpLT5kZWNvZGVyKCkpCisgICAgaWYgKFRleHRSZXNv
dXJjZURlY29kZXIqIGRlY29kZXIgPSBmcmFtZSgpLmRvY3VtZW50KCkuZGVjb2RlcigpKQogICAg
ICAgICByZXR1cm4gc2Nyb2xsVG9BbmNob3IoZGVjb2RlVVJMRXNjYXBlU2VxdWVuY2VzKGZyYWdt
ZW50SWRlbnRpZmllciwgZGVjb2Rlci0+ZW5jb2RpbmcoKSkpOwogCiAgICAgcmV0dXJuIGZhbHNl
OwpAQCAtMTg5OSwyMCArMTg5OSwyMCBAQCBib29sIEZyYW1lVmlldzo6c2Nyb2xsVG9BbmNob3Io
Y29uc3QgU3RyaW5nJiBuYW1lKQogewogICAgIEFTU0VSVChmcmFtZSgpLmRvY3VtZW50KCkpOwog
Ci0gICAgaWYgKCFmcmFtZSgpLmRvY3VtZW50KCktPmhhdmVTdHlsZXNoZWV0c0xvYWRlZCgpKSB7
Ci0gICAgICAgIGZyYW1lKCkuZG9jdW1lbnQoKS0+c2V0R290b0FuY2hvck5lZWRlZEFmdGVyU3R5
bGVzaGVldHNMb2FkKHRydWUpOworICAgIGlmICghZnJhbWUoKS5kb2N1bWVudCgpLmhhdmVTdHls
ZXNoZWV0c0xvYWRlZCgpKSB7CisgICAgICAgIGZyYW1lKCkuZG9jdW1lbnQoKS5zZXRHb3RvQW5j
aG9yTmVlZGVkQWZ0ZXJTdHlsZXNoZWV0c0xvYWQodHJ1ZSk7CiAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICB9CiAKLSAgICBmcmFtZSgpLmRvY3VtZW50KCktPnNldEdvdG9BbmNob3JOZWVkZWRB
ZnRlclN0eWxlc2hlZXRzTG9hZChmYWxzZSk7CisgICAgZnJhbWUoKS5kb2N1bWVudCgpLnNldEdv
dG9BbmNob3JOZWVkZWRBZnRlclN0eWxlc2hlZXRzTG9hZChmYWxzZSk7CiAKLSAgICBFbGVtZW50
KiBhbmNob3JFbGVtZW50ID0gZnJhbWUoKS5kb2N1bWVudCgpLT5maW5kQW5jaG9yKG5hbWUpOwor
ICAgIEVsZW1lbnQqIGFuY2hvckVsZW1lbnQgPSBmcmFtZSgpLmRvY3VtZW50KCkuZmluZEFuY2hv
cihuYW1lKTsKIAogICAgIC8vIFNldHRpbmcgdG8gbnVsbCB3aWxsIGNsZWFyIHRoZSBjdXJyZW50
IHRhcmdldC4KLSAgICBmcmFtZSgpLmRvY3VtZW50KCktPnNldENTU1RhcmdldChhbmNob3JFbGVt
ZW50KTsKKyAgICBmcmFtZSgpLmRvY3VtZW50KCkuc2V0Q1NTVGFyZ2V0KGFuY2hvckVsZW1lbnQp
OwogCi0gICAgaWYgKGZyYW1lKCkuZG9jdW1lbnQoKS0+aXNTVkdEb2N1bWVudCgpKSB7Ci0gICAg
ICAgIGlmIChTVkdTVkdFbGVtZW50KiBzdmcgPSB0b1NWR0RvY3VtZW50KGZyYW1lKCkuZG9jdW1l
bnQoKSktPnJvb3RFbGVtZW50KCkpIHsKKyAgICBpZiAoZnJhbWUoKS5kb2N1bWVudCgpLmlzU1ZH
RG9jdW1lbnQoKSkgeworICAgICAgICBpZiAoU1ZHU1ZHRWxlbWVudCogc3ZnID0gdG9TVkdEb2N1
bWVudCgmZnJhbWUoKS5kb2N1bWVudCgpKS0+cm9vdEVsZW1lbnQoKSkgewogICAgICAgICAgICAg
c3ZnLT5zZXR1cEluaXRpYWxWaWV3KG5hbWUsIGFuY2hvckVsZW1lbnQpOwogICAgICAgICAgICAg
aWYgKCFhbmNob3JFbGVtZW50KQogICAgICAgICAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtMTky
Nyw3ICsxOTI3LDcgQEAgYm9vbCBGcmFtZVZpZXc6OnNjcm9sbFRvQW5jaG9yKGNvbnN0IFN0cmlu
ZyYgbmFtZSkKICAgICAKICAgICAvLyBJZiB0aGUgYW5jaG9yIGFjY2VwdHMga2V5Ym9hcmQgZm9j
dXMsIG1vdmUgZm9jdXMgdGhlcmUgdG8gYWlkIHVzZXJzIHJlbHlpbmcgb24ga2V5Ym9hcmQgbmF2
aWdhdGlvbi4KICAgICBpZiAoYW5jaG9yRWxlbWVudCAmJiBhbmNob3JFbGVtZW50LT5pc0ZvY3Vz
YWJsZSgpKQotICAgICAgICBmcmFtZSgpLmRvY3VtZW50KCktPnNldEZvY3VzZWRFbGVtZW50KGFu
Y2hvckVsZW1lbnQpOworICAgICAgICBmcmFtZSgpLmRvY3VtZW50KCkuc2V0Rm9jdXNlZEVsZW1l
bnQoYW5jaG9yRWxlbWVudCk7CiAgICAgCiAgICAgcmV0dXJuIHRydWU7CiB9CkBAIC0xOTQwLDcg
KzE5NDAsNyBAQCB2b2lkIEZyYW1lVmlldzo6bWFpbnRhaW5TY3JvbGxQb3NpdGlvbkF0QW5jaG9y
KE5vZGUqIGFuY2hvck5vZGUpCiAKICAgICAvLyBXZSBuZWVkIHRvIHVwZGF0ZSB0aGUgbGF5b3V0
IGJlZm9yZSBzY3JvbGxpbmcsIG90aGVyd2lzZSB3ZSBjb3VsZAogICAgIC8vIHJlYWxseSBtZXNz
IHRoaW5ncyB1cCBpZiBhbiBhbmNob3Igc2Nyb2xsIGNvbWVzIGF0IGEgYmFkIG1vbWVudC4KLSAg
ICBmcmFtZSgpLmRvY3VtZW50KCktPnVwZGF0ZVN0eWxlSWZOZWVkZWQoKTsKKyAgICBmcmFtZSgp
LmRvY3VtZW50KCkudXBkYXRlU3R5bGVJZk5lZWRlZCgpOwogICAgIC8vIE9ubHkgZG8gYSBsYXlv
dXQgaWYgY2hhbmdlcyBoYXZlIG9jY3VycmVkIHRoYXQgbWFrZSBpdCBuZWNlc3NhcnkuCiAgICAg
UmVuZGVyVmlldyogcmVuZGVyVmlldyA9IHRoaXMtPnJlbmRlclZpZXcoKTsKICAgICBpZiAocmVu
ZGVyVmlldyAmJiByZW5kZXJWaWV3LT5uZWVkc0xheW91dCgpKQpAQCAtMTk1MSw3ICsxOTUxLDcg
QEAgdm9pZCBGcmFtZVZpZXc6Om1haW50YWluU2Nyb2xsUG9zaXRpb25BdEFuY2hvcihOb2RlKiBh
bmNob3JOb2RlKQogCiB2b2lkIEZyYW1lVmlldzo6c2Nyb2xsRWxlbWVudFRvUmVjdChFbGVtZW50
KiBlbGVtZW50LCBjb25zdCBJbnRSZWN0JiByZWN0KQogewotICAgIGZyYW1lKCkuZG9jdW1lbnQo
KS0+dXBkYXRlTGF5b3V0SWdub3JlUGVuZGluZ1N0eWxlc2hlZXRzKCk7CisgICAgZnJhbWUoKS5k
b2N1bWVudCgpLnVwZGF0ZUxheW91dElnbm9yZVBlbmRpbmdTdHlsZXNoZWV0cygpOwogCiAgICAg
TGF5b3V0UmVjdCBib3VuZHMgPSBlbGVtZW50LT5ib3VuZGluZ0JveCgpOwogICAgIGludCBjZW50
ZXJpbmdPZmZzZXRYID0gKHJlY3Qud2lkdGgoKSAtIGJvdW5kcy53aWR0aCgpKSAvIDI7CkBAIC0y
MDI1LDcgKzIwMjUsNyBAQCB2b2lkIEZyYW1lVmlldzo6c2Nyb2xsUG9zaXRpb25DaGFuZ2VkKGNv
bnN0IEludFBvaW50JiBvbGRQb3NpdGlvbiwgY29uc3QgSW50UG9pbgogICAgIGZyYW1lKCkuZXZl
bnRIYW5kbGVyKCkuc2VuZFNjcm9sbEV2ZW50KCk7CiAgICAgZnJhbWUoKS5ldmVudEhhbmRsZXIo
KS5kaXNwYXRjaEZha2VNb3VzZU1vdmVFdmVudFNvb24oKTsKICAgICAKLSAgICBpZiAoRG9jdW1l
bnQqIGRvY3VtZW50ID0gZnJhbWUoKS5kb2N1bWVudCgpKQorICAgIGlmIChEb2N1bWVudCogZG9j
dW1lbnQgPSAmZnJhbWUoKS5kb2N1bWVudCgpKQogICAgICAgICBkb2N1bWVudC0+c2VuZFdpbGxS
ZXZlYWxFZGdlRXZlbnRzSWZOZWVkZWQob2xkUG9zaXRpb24sIG5ld1Bvc2l0aW9uLCB2aXNpYmxl
Q29udGVudFJlY3QoKSwgY29udGVudHNTaXplKCkpOwogCiAgICAgaWYgKFJlbmRlclZpZXcqIHJl
bmRlclZpZXcgPSB0aGlzLT5yZW5kZXJWaWV3KCkpIHsKQEAgLTIzMDUsOCArMjMwNSw4IEBAIHZv
aWQgRnJhbWVWaWV3OjpzcGVjdWxhdGl2ZVRpbGluZ0VuYWJsZVRpbWVyRmlyZWQoVGltZXI8RnJh
bWVWaWV3PiYpCiB2b2lkIEZyYW1lVmlldzo6bGF5b3V0VGltZXJGaXJlZChUaW1lcjxGcmFtZVZp
ZXc+JikKIHsKICNpZmRlZiBJTlNUUlVNRU5UX0xBWU9VVF9TQ0hFRFVMSU5HCi0gICAgaWYgKCFm
cmFtZSgpLmRvY3VtZW50KCktPm93bmVyRWxlbWVudCgpKQotICAgICAgICBwcmludGYoIkxheW91
dCB0aW1lciBmaXJlZCBhdCAlbGxkXG4iLCBmcmFtZSgpLmRvY3VtZW50KCktPmVsYXBzZWRUaW1l
KCkuY291bnQoKSk7CisgICAgaWYgKCFmcmFtZSgpLmRvY3VtZW50KCkub3duZXJFbGVtZW50KCkp
CisgICAgICAgIHByaW50ZigiTGF5b3V0IHRpbWVyIGZpcmVkIGF0ICVsbGRcbiIsIGZyYW1lKCku
ZG9jdW1lbnQoKS5lbGFwc2VkVGltZSgpLmNvdW50KCkpOwogI2VuZGlmCiAgICAgbGF5b3V0KCk7
CiB9CkBAIC0yMzI1LDcgKzIzMjUsNyBAQCB2b2lkIEZyYW1lVmlldzo6c2NoZWR1bGVSZWxheW91
dCgpCiAgICAgICAgIHJldHVybjsKICAgICBpZiAoIW5lZWRzTGF5b3V0KCkpCiAgICAgICAgIHJl
dHVybjsKLSAgICBpZiAoIWZyYW1lKCkuZG9jdW1lbnQoKS0+c2hvdWxkU2NoZWR1bGVMYXlvdXQo
KSkKKyAgICBpZiAoIWZyYW1lKCkuZG9jdW1lbnQoKS5zaG91bGRTY2hlZHVsZUxheW91dCgpKQog
ICAgICAgICByZXR1cm47CiAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRJbnZhbGlk
YXRlTGF5b3V0KCZmcmFtZSgpKTsKICAgICAvLyBXaGVuIGZyYW1lIGZsYXR0ZW5pbmcgaXMgZW5h
YmxlZCwgdGhlIGNvbnRlbnRzIG9mIHRoZSBmcmFtZSBjb3VsZCBhZmZlY3QgdGhlIGxheW91dCBv
ZiB0aGUgcGFyZW50IGZyYW1lcy4KQEAgLTIzMzMsNyArMjMzMyw3IEBAIHZvaWQgRnJhbWVWaWV3
OjpzY2hlZHVsZVJlbGF5b3V0KCkKICAgICBpZiAoZnJhbWUoKS5vd25lclJlbmRlcmVyKCkgJiYg
aXNJbkNoaWxkRnJhbWVXaXRoRnJhbWVGbGF0dGVuaW5nKCkpCiAgICAgICAgIGZyYW1lKCkub3du
ZXJSZW5kZXJlcigpLT5zZXROZWVkc0xheW91dChNYXJrQ29udGFpbmluZ0Jsb2NrQ2hhaW4pOwog
Ci0gICAgc3RkOjpjaHJvbm86Om1pbGxpc2Vjb25kcyBkZWxheSA9IGZyYW1lKCkuZG9jdW1lbnQo
KS0+bWluaW11bUxheW91dERlbGF5KCk7CisgICAgc3RkOjpjaHJvbm86Om1pbGxpc2Vjb25kcyBk
ZWxheSA9IGZyYW1lKCkuZG9jdW1lbnQoKS5taW5pbXVtTGF5b3V0RGVsYXkoKTsKICAgICBpZiAo
bV9sYXlvdXRUaW1lci5pc0FjdGl2ZSgpICYmIG1fZGVsYXllZExheW91dCAmJiAhZGVsYXkuY291
bnQoKSkKICAgICAgICAgdW5zY2hlZHVsZVJlbGF5b3V0KCk7CiAgICAgaWYgKG1fbGF5b3V0VGlt
ZXIuaXNBY3RpdmUoKSkKQEAgLTIzNDIsNyArMjM0Miw3IEBAIHZvaWQgRnJhbWVWaWV3OjpzY2hl
ZHVsZVJlbGF5b3V0KCkKICAgICBtX2RlbGF5ZWRMYXlvdXQgPSBkZWxheS5jb3VudCgpOwogCiAj
aWZkZWYgSU5TVFJVTUVOVF9MQVlPVVRfU0NIRURVTElORwotICAgIGlmICghZnJhbWUoKS5kb2N1
bWVudCgpLT5vd25lckVsZW1lbnQoKSkKKyAgICBpZiAoIWZyYW1lKCkuZG9jdW1lbnQoKS5vd25l
ckVsZW1lbnQoKSkKICAgICAgICAgcHJpbnRmKCJTY2hlZHVsaW5nIGxheW91dCBmb3IgJWRcbiIs
IGRlbGF5KTsKICNlbmRpZgogCkBAIC0yNDQ5LDggKzI0NDksOCBAQCB2b2lkIEZyYW1lVmlldzo6
dW5zY2hlZHVsZVJlbGF5b3V0KCkKICAgICAgICAgcmV0dXJuOwogCiAjaWZkZWYgSU5TVFJVTUVO
VF9MQVlPVVRfU0NIRURVTElORwotICAgIGlmICghZnJhbWUoKS5kb2N1bWVudCgpLT5vd25lckVs
ZW1lbnQoKSkKLSAgICAgICAgcHJpbnRmKCJMYXlvdXQgdGltZXIgdW5zY2hlZHVsZWQgYXQgJWRc
biIsIGZyYW1lKCkuZG9jdW1lbnQoKS0+ZWxhcHNlZFRpbWUoKSk7CisgICAgaWYgKCFmcmFtZSgp
LmRvY3VtZW50KCkub3duZXJFbGVtZW50KCkpCisgICAgICAgIHByaW50ZigiTGF5b3V0IHRpbWVy
IHVuc2NoZWR1bGVkIGF0ICVkXG4iLCBmcmFtZSgpLmRvY3VtZW50KCkuZWxhcHNlZFRpbWUoKSk7
CiAjZW5kaWYKICAgICAKICAgICBtX2xheW91dFRpbWVyLnN0b3AoKTsKQEAgLTI1NTUsMTIgKzI1
NTUsMTEgQEAgYm9vbCBGcmFtZVZpZXc6Om5lZWRzRXh0ZW5kZWRCYWNrZ3JvdW5kUmVjdEZvclBh
aW50aW5nKCkgY29uc3QKICAgICBpZiAoIWZyYW1lKCkuaXNNYWluRnJhbWUoKSkKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogCi0gICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gZnJhbWUoKS5kb2N1bWVu
dCgpOwotICAgIGlmICghZG9jdW1lbnQpCi0gICAgICAgIHJldHVybiBmYWxzZTsKKyAgICBEb2N1
bWVudCYgZG9jdW1lbnQgPSBmcmFtZSgpLmRvY3VtZW50KCk7CisgICAgQVNTRVJUKGRvY3VtZW50
KTsKIAotICAgIGF1dG8gZG9jdW1lbnRFbGVtZW50ID0gZG9jdW1lbnQtPmRvY3VtZW50RWxlbWVu
dCgpOwotICAgIGF1dG8gYm9keUVsZW1lbnQgPSBkb2N1bWVudC0+Ym9keSgpOworICAgIGF1dG8g
ZG9jdW1lbnRFbGVtZW50ID0gZG9jdW1lbnQuZG9jdW1lbnRFbGVtZW50KCk7CisgICAgYXV0byBi
b2R5RWxlbWVudCA9IGRvY3VtZW50LmJvZHkoKTsKICAgICBhdXRvIGRvY3VtZW50RWxlbWVudFJl
bmRlcmVyID0gZG9jdW1lbnRFbGVtZW50ID8gZG9jdW1lbnRFbGVtZW50LT5yZW5kZXJlcigpIDog
bnVsbHB0cjsKICAgICBhdXRvIGJvZHlSZW5kZXJlciA9IGJvZHlFbGVtZW50ID8gYm9keUVsZW1l
bnQtPnJlbmRlcmVyKCkgOiBudWxscHRyOwogICAgIGJvb2wgcm9vdEJhY2tncm91bmRIYXNJbWFn
ZSA9IChkb2N1bWVudEVsZW1lbnRSZW5kZXJlciAmJiBkb2N1bWVudEVsZW1lbnRSZW5kZXJlci0+
c3R5bGUoKS5oYXNCYWNrZ3JvdW5kSW1hZ2UoKSkKQEAgLTI2MzEsMTQgKzI2MzAsMTQgQEAgdm9p
ZCBGcmFtZVZpZXc6OnNjcm9sbFRvQW5jaG9yKCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgTGF5
b3V0UmVjdCByZWN0OwotICAgIGlmIChhbmNob3JOb2RlICE9IGZyYW1lKCkuZG9jdW1lbnQoKSkK
KyAgICBpZiAoYW5jaG9yTm9kZSAhPSAmZnJhbWUoKS5kb2N1bWVudCgpKQogICAgICAgICByZWN0
ID0gYW5jaG9yTm9kZS0+Ym91bmRpbmdCb3goKTsKIAogICAgIC8vIFNjcm9sbCBuZXN0ZWQgbGF5
ZXJzIGFuZCBmcmFtZXMgdG8gcmV2ZWFsIHRoZSBhbmNob3IuCiAgICAgLy8gQWxpZ24gdG8gdGhl
IHRvcCBhbmQgdG8gdGhlIGNsb3Nlc3Qgc2lkZSAodGhpcyBtYXRjaGVzIG90aGVyIGJyb3dzZXJz
KS4KICAgICBhbmNob3JOb2RlLT5yZW5kZXJlcigpLT5zY3JvbGxSZWN0VG9WaXNpYmxlKHJlY3Qs
IFNjcm9sbEFsaWdubWVudDo6YWxpZ25Ub0VkZ2VJZk5lZWRlZCwgU2Nyb2xsQWxpZ25tZW50Ojph
bGlnblRvcEFsd2F5cyk7CiAKLSAgICBpZiAoQVhPYmplY3RDYWNoZSogY2FjaGUgPSBmcmFtZSgp
LmRvY3VtZW50KCktPmV4aXN0aW5nQVhPYmplY3RDYWNoZSgpKQorICAgIGlmIChBWE9iamVjdENh
Y2hlKiBjYWNoZSA9IGZyYW1lKCkuZG9jdW1lbnQoKS5leGlzdGluZ0FYT2JqZWN0Q2FjaGUoKSkK
ICAgICAgICAgY2FjaGUtPmhhbmRsZVNjcm9sbGVkVG9BbmNob3IoYW5jaG9yTm9kZS5nZXQoKSk7
CiAKICAgICAvLyBzY3JvbGxSZWN0VG9WaXNpYmxlIGNhbiBjYWxsIGludG8gc2V0U2Nyb2xsUG9z
aXRpb24oKSwgd2hpY2ggcmVzZXRzIG1fbWFpbnRhaW5TY3JvbGxQb3NpdGlvbkFuY2hvci4KQEAg
LTI3MjYsNyArMjcyNSw3IEBAIHZvaWQgRnJhbWVWaWV3OjpwZXJmb3JtUG9zdExheW91dFRhc2tz
KCkKICAgICBmcmFtZSgpLnNlbGVjdGlvbigpLnNldENhcmV0UmVjdE5lZWRzVXBkYXRlKCk7CiAg
ICAgZnJhbWUoKS5zZWxlY3Rpb24oKS51cGRhdGVBbmRSZXZlYWxTZWxlY3Rpb24oKTsKIAotICAg
IGlmIChtX25lc3RlZExheW91dENvdW50IDw9IDEgJiYgZnJhbWUoKS5kb2N1bWVudCgpLT5kb2N1
bWVudEVsZW1lbnQoKSkKKyAgICBpZiAobV9uZXN0ZWRMYXlvdXRDb3VudCA8PSAxICYmIGZyYW1l
KCkuZG9jdW1lbnQoKS5kb2N1bWVudEVsZW1lbnQoKSkKICAgICAgICAgZmlyZUxheW91dFJlbGF0
ZWRNaWxlc3RvbmVzSWZOZWVkZWQoKTsKIAogI2lmIFBMQVRGT1JNKElPUykKQEAgLTI3MzksNyAr
MjczOCw3IEBAIHZvaWQgRnJhbWVWaWV3OjpwZXJmb3JtUG9zdExheW91dFRhc2tzKCkKIAogI2lm
IEVOQUJMRShGT05UX0xPQURfRVZFTlRTKQogICAgIGlmIChSdW50aW1lRW5hYmxlZEZlYXR1cmVz
OjpzaGFyZWRGZWF0dXJlcygpLmZvbnRMb2FkRXZlbnRzRW5hYmxlZCgpKQotICAgICAgICBmcmFt
ZSgpLmRvY3VtZW50KCktPmZvbnRsb2FkZXIoKS0+ZGlkTGF5b3V0KCk7CisgICAgICAgIGZyYW1l
KCkuZG9jdW1lbnQoKS5mb250bG9hZGVyKCktPmRpZExheW91dCgpOwogI2VuZGlmCiAgICAgCiAg
ICAgLy8gRklYTUU6IFdlIHNob3VsZCBjb25zaWRlciBhZGRpbmcgRGlkTGF5b3V0IGFzIGEgTGF5
b3V0TWlsZXN0b25lLiBUaGF0IHdvdWxkIGxldCB1cyBtZXJnZSB0aGlzCkBAIC0yODExLDkgKzI4
MTAsOSBAQCB2b2lkIEZyYW1lVmlldzo6c2VuZFJlc2l6ZUV2ZW50SWZOZWVkZWQoKQogICAgIC8v
IElmIHdlIHJlc2l6ZWQgZHVyaW5nIGxheW91dCwgcXVldWUgdXAgYSByZXNpemUgZXZlbnQgZm9y
IGxhdGVyLCBvdGhlcndpc2UgZmlyZSBpdCByaWdodCBhd2F5LgogICAgIFJlZlB0cjxFdmVudD4g
cmVzaXplRXZlbnQgPSBFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5yZXNpemVFdmVudCwgZmFs
c2UsIGZhbHNlKTsKICAgICBpZiAoY2FuU2VuZFJlc2l6ZUV2ZW50U3luY2hyb25vdXNseSkKLSAg
ICAgICAgZnJhbWUoKS5kb2N1bWVudCgpLT5kaXNwYXRjaFdpbmRvd0V2ZW50KHJlc2l6ZUV2ZW50
LnJlbGVhc2UoKSwgZnJhbWUoKS5kb2N1bWVudCgpLT5kb21XaW5kb3coKSk7CisgICAgICAgIGZy
YW1lKCkuZG9jdW1lbnQoKS5kaXNwYXRjaFdpbmRvd0V2ZW50KHJlc2l6ZUV2ZW50LnJlbGVhc2Uo
KSwgZnJhbWUoKS5kb2N1bWVudCgpLmRvbVdpbmRvdygpKTsKICAgICBlbHNlCi0gICAgICAgIGZy
YW1lKCkuZG9jdW1lbnQoKS0+ZW5xdWV1ZVdpbmRvd0V2ZW50KHJlc2l6ZUV2ZW50LnJlbGVhc2Uo
KSk7CisgICAgICAgIGZyYW1lKCkuZG9jdW1lbnQoKS5lbnF1ZXVlV2luZG93RXZlbnQocmVzaXpl
RXZlbnQucmVsZWFzZSgpKTsKIAogI2lmIEVOQUJMRShJTlNQRUNUT1IpCiAgICAgUGFnZSogcGFn
ZSA9IGZyYW1lKCkucGFnZSgpOwpAQCAtMjg1MSwxMiArMjg1MCwxMSBAQCB2b2lkIEZyYW1lVmll
dzo6YXV0b1NpemVJZkVuYWJsZWQoKQogCiAgICAgVGVtcG9yYXJ5Q2hhbmdlPGJvb2w+IGNoYW5n
ZUluQXV0b1NpemUobV9pbkF1dG9TaXplLCB0cnVlKTsKIAotICAgIERvY3VtZW50KiBkb2N1bWVu
dCA9IGZyYW1lKCkuZG9jdW1lbnQoKTsKLSAgICBpZiAoIWRvY3VtZW50KQotICAgICAgICByZXR1
cm47CisgICAgRG9jdW1lbnQmIGRvY3VtZW50ID0gZnJhbWUoKS5kb2N1bWVudCgpOworICAgIEFT
U0VSVChkb2N1bWVudCk7CiAKLSAgICBSZW5kZXJWaWV3KiBkb2N1bWVudFZpZXcgPSBkb2N1bWVu
dC0+cmVuZGVyVmlldygpOwotICAgIEVsZW1lbnQqIGRvY3VtZW50RWxlbWVudCA9IGRvY3VtZW50
LT5kb2N1bWVudEVsZW1lbnQoKTsKKyAgICBSZW5kZXJWaWV3KiBkb2N1bWVudFZpZXcgPSBkb2N1
bWVudC5yZW5kZXJWaWV3KCk7CisgICAgRWxlbWVudCogZG9jdW1lbnRFbGVtZW50ID0gZG9jdW1l
bnQuZG9jdW1lbnRFbGVtZW50KCk7CiAgICAgaWYgKCFkb2N1bWVudFZpZXcgfHwgIWRvY3VtZW50
RWxlbWVudCkKICAgICAgICAgcmV0dXJuOwogCkBAIC0yODY5LDcgKzI4NjcsNyBAQCB2b2lkIEZy
YW1lVmlldzo6YXV0b1NpemVJZkVuYWJsZWQoKQogICAgIC8vIHdoaWNoIG1heSByZXN1bHQgaW4g
YSBoZWlnaHQgY2hhbmdlIGR1cmluZyB0aGUgc2Vjb25kIGl0ZXJhdGlvbi4KICAgICBmb3IgKGlu
dCBpID0gMDsgaSA8IDI7IGkrKykgewogICAgICAgICAvLyBVcGRhdGUgdmFyaW91cyBzaXplcyBp
bmNsdWRpbmcgY29udGVudHNTaXplLCBzY3JvbGxIZWlnaHQsIGV0Yy4KLSAgICAgICAgZG9jdW1l
bnQtPnVwZGF0ZUxheW91dElnbm9yZVBlbmRpbmdTdHlsZXNoZWV0cygpOworICAgICAgICBkb2N1
bWVudC51cGRhdGVMYXlvdXRJZ25vcmVQZW5kaW5nU3R5bGVzaGVldHMoKTsKICAgICAgICAgaW50
IHdpZHRoID0gZG9jdW1lbnRWaWV3LT5taW5QcmVmZXJyZWRMb2dpY2FsV2lkdGgoKTsKICAgICAg
ICAgaW50IGhlaWdodCA9IGRvY3VtZW50Vmlldy0+ZG9jdW1lbnRSZWN0KCkuaGVpZ2h0KCk7CiAg
ICAgICAgIEludFNpemUgbmV3U2l6ZSh3aWR0aCwgaGVpZ2h0KTsKQEAgLTI5NzMsNyArMjk3MSw3
IEBAIHZvaWQgRnJhbWVWaWV3Ojp1cGRhdGVPdmVyZmxvd1N0YXR1cyhib29sIGhvcml6b250YWxP
dmVyZmxvdywgYm9vbCB2ZXJ0aWNhbE92ZXJmCiAgICAgICAgICAgICB2ZXJ0aWNhbE92ZXJmbG93
Q2hhbmdlZCwgdmVydGljYWxPdmVyZmxvdyk7CiAgICAgICAgIG92ZXJmbG93RXZlbnQtPnNldFRh
cmdldChtX3ZpZXdwb3J0UmVuZGVyZXItPmVsZW1lbnQoKSk7CiAKLSAgICAgICAgZnJhbWUoKS5k
b2N1bWVudCgpLT5lbnF1ZXVlT3ZlcmZsb3dFdmVudChvdmVyZmxvd0V2ZW50LnJlbGVhc2UoKSk7
CisgICAgICAgIGZyYW1lKCkuZG9jdW1lbnQoKS5lbnF1ZXVlT3ZlcmZsb3dFdmVudChvdmVyZmxv
d0V2ZW50LnJlbGVhc2UoKSk7CiAgICAgfQogICAgIAogfQpAQCAtMjk5Niw3ICsyOTk0LDcgQEAg
dm9pZCBGcmFtZVZpZXc6OnNldFBhZ2luYXRpb24oY29uc3QgUGFnaW5hdGlvbiYgcGFnaW5hdGlv
bikKIAogICAgIG1fcGFnaW5hdGlvbiA9IHBhZ2luYXRpb247CiAKLSAgICBmcmFtZSgpLmRvY3Vt
ZW50KCktPnN0eWxlUmVzb2x2ZXJDaGFuZ2VkKERlZmVyUmVjYWxjU3R5bGUpOworICAgIGZyYW1l
KCkuZG9jdW1lbnQoKS5zdHlsZVJlc29sdmVyQ2hhbmdlZChEZWZlclJlY2FsY1N0eWxlKTsKIH0K
IAogSW50UmVjdCBGcmFtZVZpZXc6OndpbmRvd0NsaXBSZWN0KGJvb2wgY2xpcFRvQ29udGVudHMp
IGNvbnN0CkBAIC0zMjA0LDE0ICszMjAyLDE0IEBAIGJvb2wgRnJhbWVWaWV3OjpzY3JvbGxBbmlt
YXRvckVuYWJsZWQoKSBjb25zdAogI2lmIEVOQUJMRShEQVNIQk9BUkRfU1VQUE9SVCkKIHZvaWQg
RnJhbWVWaWV3Ojp1cGRhdGVBbm5vdGF0ZWRSZWdpb25zKCkKIHsKLSAgICBEb2N1bWVudCogZG9j
dW1lbnQgPSBmcmFtZSgpLmRvY3VtZW50KCk7Ci0gICAgaWYgKCFkb2N1bWVudC0+aGFzQW5ub3Rh
dGVkUmVnaW9ucygpKQorICAgIERvY3VtZW50JiBkb2N1bWVudCA9IGZyYW1lKCkuZG9jdW1lbnQo
KTsKKyAgICBpZiAoIWRvY3VtZW50Lmhhc0Fubm90YXRlZFJlZ2lvbnMoKSkKICAgICAgICAgcmV0
dXJuOwogICAgIFZlY3RvcjxBbm5vdGF0ZWRSZWdpb25WYWx1ZT4gbmV3UmVnaW9uczsKLSAgICBk
b2N1bWVudC0+cmVuZGVyQm94KCktPmNvbGxlY3RBbm5vdGF0ZWRSZWdpb25zKG5ld1JlZ2lvbnMp
OwotICAgIGlmIChuZXdSZWdpb25zID09IGRvY3VtZW50LT5hbm5vdGF0ZWRSZWdpb25zKCkpCisg
ICAgZG9jdW1lbnQucmVuZGVyQm94KCktPmNvbGxlY3RBbm5vdGF0ZWRSZWdpb25zKG5ld1JlZ2lv
bnMpOworICAgIGlmIChuZXdSZWdpb25zID09IGRvY3VtZW50LmFubm90YXRlZFJlZ2lvbnMoKSkK
ICAgICAgICAgcmV0dXJuOwotICAgIGRvY3VtZW50LT5zZXRBbm5vdGF0ZWRSZWdpb25zKG5ld1Jl
Z2lvbnMpOworICAgIGRvY3VtZW50LnNldEFubm90YXRlZFJlZ2lvbnMobmV3UmVnaW9ucyk7CiAg
ICAgUGFnZSogcGFnZSA9IGZyYW1lKCkucGFnZSgpOwogICAgIGlmICghcGFnZSkKICAgICAgICAg
cmV0dXJuOwpAQCAtMzIyNyw3ICszMjI1LDcgQEAgdm9pZCBGcmFtZVZpZXc6OnVwZGF0ZVNjcm9s
bENvcm5lcigpCiAgICAgCiAgICAgaWYgKCFjb3JuZXJSZWN0LmlzRW1wdHkoKSkgewogICAgICAg
ICAvLyBUcnkgdGhlIDxib2R5PiBlbGVtZW50IGZpcnN0IGFzIGEgc2Nyb2xsIGNvcm5lciBzb3Vy
Y2UuCi0gICAgICAgIERvY3VtZW50KiBkb2MgPSBmcmFtZSgpLmRvY3VtZW50KCk7CisgICAgICAg
IERvY3VtZW50KiBkb2MgPSAmZnJhbWUoKS5kb2N1bWVudCgpOwogICAgICAgICBFbGVtZW50KiBi
b2R5ID0gZG9jID8gZG9jLT5ib2R5KCkgOiAwOwogICAgICAgICBpZiAoYm9keSAmJiBib2R5LT5y
ZW5kZXJlcigpKSB7CiAgICAgICAgICAgICByZW5kZXJlciA9IGJvZHktPnJlbmRlcmVyKCk7CkBA
IC0zMjk5LDExICszMjk3LDEwIEBAIENvbG9yIEZyYW1lVmlldzo6ZG9jdW1lbnRCYWNrZ3JvdW5k
Q29sb3IoKSBjb25zdAogICAgIC8vIEJhY2tncm91bmQgaW1hZ2VzIGFyZSB1bmZvcnR1bmF0ZWx5
IGltcHJhY3RpY2FsIHRvIGluY2x1ZGUuCiAKICAgICAvLyBSZXR1cm4gaW52YWxpZCBDb2xvciBv
YmplY3RzIHdoZW5ldmVyIHRoZXJlIGlzIGluc3VmZmljaWVudCBpbmZvcm1hdGlvbi4KLSAgICBp
ZiAoIWZyYW1lKCkuZG9jdW1lbnQoKSkKLSAgICAgICAgcmV0dXJuIENvbG9yKCk7CisgICAgQVNT
RVJUKGZyYW1lKCkuZG9jdW1lbnQoKSk7CiAKLSAgICBFbGVtZW50KiBodG1sRWxlbWVudCA9IGZy
YW1lKCkuZG9jdW1lbnQoKS0+ZG9jdW1lbnRFbGVtZW50KCk7Ci0gICAgRWxlbWVudCogYm9keUVs
ZW1lbnQgPSBmcmFtZSgpLmRvY3VtZW50KCktPmJvZHkoKTsKKyAgICBFbGVtZW50KiBodG1sRWxl
bWVudCA9IGZyYW1lKCkuZG9jdW1lbnQoKS5kb2N1bWVudEVsZW1lbnQoKTsKKyAgICBFbGVtZW50
KiBib2R5RWxlbWVudCA9IGZyYW1lKCkuZG9jdW1lbnQoKS5ib2R5KCk7CiAKICAgICAvLyBTdGFy
dCB3aXRoIGludmFsaWQgY29sb3JzLgogICAgIENvbG9yIGh0bWxCYWNrZ3JvdW5kQ29sb3I7CkBA
IC0zNDAyLDcgKzMzOTksNyBAQCB2b2lkIEZyYW1lVmlldzo6c3RhcnRMYXlvdXRBdE1haW5GcmFt
ZVZpZXdJZk5lZWRlZChib29sIGFsbG93U3VidHJlZSkKIAogICAgIHBhcmVudFZpZXctPmxheW91
dChhbGxvd1N1YnRyZWUpOwogCi0gICAgUmVuZGVyRWxlbWVudCogcm9vdCA9IG1fbGF5b3V0Um9v
dCA/IG1fbGF5b3V0Um9vdCA6IGZyYW1lKCkuZG9jdW1lbnQoKS0+cmVuZGVyVmlldygpOworICAg
IFJlbmRlckVsZW1lbnQqIHJvb3QgPSBtX2xheW91dFJvb3QgPyBtX2xheW91dFJvb3QgOiBmcmFt
ZSgpLmRvY3VtZW50KCkucmVuZGVyVmlldygpOwogICAgIEFTU0VSVF9VTlVTRUQocm9vdCwgIXJv
b3QtPm5lZWRzTGF5b3V0KCkpOwogfQogCkBAIC0zNDE0LDcgKzM0MTEsNyBAQCB2b2lkIEZyYW1l
Vmlldzo6dXBkYXRlQ29udHJvbFRpbnRzKCkKICAgICAvLyB0byBkZWZpbmUgd2hlbiBjb250cm9s
cyBnZXQgdGhlIHRpbnQgYW5kIHRvIGNhbGwgdGhpcyBmdW5jdGlvbiB3aGVuIHRoYXQgY2hhbmdl
cy4KICAgICAKICAgICAvLyBPcHRpbWl6ZSB0aGUgY29tbW9uIGNhc2Ugd2hlcmUgd2UgYnJpbmcg
YSB3aW5kb3cgdG8gdGhlIGZyb250IHdoaWxlIGl0J3Mgc3RpbGwgZW1wdHkuCi0gICAgaWYgKGZy
YW1lKCkuZG9jdW1lbnQoKS0+dXJsKCkuaXNFbXB0eSgpKQorICAgIGlmIChmcmFtZSgpLmRvY3Vt
ZW50KCkudXJsKCkuaXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CiAKICAgICBSZW5kZXJWaWV3
KiByZW5kZXJWaWV3ID0gdGhpcy0+cmVuZGVyVmlldygpOwpAQCAtMzQ1NCw3ICszNDUxLDcgQEAg
dm9pZCBGcmFtZVZpZXc6OnNldFdhc1Njcm9sbGVkQnlVc2VyKGJvb2wgd2FzU2Nyb2xsZWRCeVVz
ZXIpCiAKIHZvaWQgRnJhbWVWaWV3Ojp3aWxsUGFpbnRDb250ZW50cyhHcmFwaGljc0NvbnRleHQq
IGNvbnRleHQsIGNvbnN0IEludFJlY3QmIGRpcnR5UmVjdCwgUGFpbnRpbmdTdGF0ZSYgcGFpbnRp
bmdTdGF0ZSkKIHsKLSAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBmcmFtZSgpLmRvY3VtZW50KCk7
CisgICAgRG9jdW1lbnQmIGRvY3VtZW50ID0gZnJhbWUoKS5kb2N1bWVudCgpOwogCiAgICAgaWYg
KCFjb250ZXh0LT5wYWludGluZ0Rpc2FibGVkKCkpCiAgICAgICAgIEluc3BlY3Rvckluc3RydW1l
bnRhdGlvbjo6d2lsbFBhaW50KHJlbmRlclZpZXcoKSk7CkBAIC0zNDgwLDkgKzM0NzcsOSBAQCB2
b2lkIEZyYW1lVmlldzo6d2lsbFBhaW50Q29udGVudHMoR3JhcGhpY3NDb250ZXh0KiBjb250ZXh0
LCBjb25zdCBJbnRSZWN0JiBkaXJ0eQogICAgIH0KICAgICAKICAgICBpZiAobV9wYWludEJlaGF2
aW9yID09IFBhaW50QmVoYXZpb3JOb3JtYWwpCi0gICAgICAgIGRvY3VtZW50LT5tYXJrZXJzKCku
aW52YWxpZGF0ZVJlbmRlcmVkUmVjdHNGb3JNYXJrZXJzSW5SZWN0KGRpcnR5UmVjdCk7CisgICAg
ICAgIGRvY3VtZW50Lm1hcmtlcnMoKS5pbnZhbGlkYXRlUmVuZGVyZWRSZWN0c0Zvck1hcmtlcnNJ
blJlY3QoZGlydHlSZWN0KTsKIAotICAgIGlmIChkb2N1bWVudC0+cHJpbnRpbmcoKSkKKyAgICBp
ZiAoZG9jdW1lbnQucHJpbnRpbmcoKSkKICAgICAgICAgbV9wYWludEJlaGF2aW9yIHw9IFBhaW50
QmVoYXZpb3JGbGF0dGVuQ29tcG9zaXRpbmdMYXllcnM7CiAKICAgICBwYWludGluZ1N0YXRlLmlz
RmxhdHRlbmluZ1BhaW50T2ZSb290RnJhbWUgPSAobV9wYWludEJlaGF2aW9yICYgUGFpbnRCZWhh
dmlvckZsYXR0ZW5Db21wb3NpdGluZ0xheWVycykgJiYgIWZyYW1lKCkub3duZXJFbGVtZW50KCk7
CkBAIC0zNTEwLDcgKzM1MDcsNyBAQCB2b2lkIEZyYW1lVmlldzo6ZGlkUGFpbnRDb250ZW50cyhH
cmFwaGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIGRpcnR5UgogCiAgICAgLy8g
UmVnaW9ucyBtYXkgaGF2ZSBjaGFuZ2VkIGFzIGEgcmVzdWx0IG9mIHRoZSB2aXNpYmlsaXR5L3ot
aW5kZXggb2YgZWxlbWVudCBjaGFuZ2luZy4KICNpZiBFTkFCTEUoREFTSEJPQVJEX1NVUFBPUlQp
Ci0gICAgaWYgKGZyYW1lKCkuZG9jdW1lbnQoKS0+YW5ub3RhdGVkUmVnaW9uc0RpcnR5KCkpCisg
ICAgaWYgKGZyYW1lKCkuZG9jdW1lbnQoKS5hbm5vdGF0ZWRSZWdpb25zRGlydHkoKSkKICAgICAg
ICAgdXBkYXRlQW5ub3RhdGVkUmVnaW9ucygpOwogI2VuZGlmCiAKQEAgLTM1MjgsNyArMzUyNSw3
IEBAIHZvaWQgRnJhbWVWaWV3OjpwYWludENvbnRlbnRzKEdyYXBoaWNzQ29udGV4dCogY29udGV4
dCwgY29uc3QgSW50UmVjdCYgZGlydHlSZWN0CiB7CiAjaWZuZGVmIE5ERUJVRwogICAgIGJvb2wg
ZmlsbFdpdGhSZWQ7Ci0gICAgaWYgKGZyYW1lKCkuZG9jdW1lbnQoKS0+cHJpbnRpbmcoKSkKKyAg
ICBpZiAoZnJhbWUoKS5kb2N1bWVudCgpLnByaW50aW5nKCkpCiAgICAgICAgIGZpbGxXaXRoUmVk
ID0gZmFsc2U7IC8vIFByaW50aW5nLCBkb24ndCBmaWxsIHdpdGggcmVkIChjYW4ndCByZW1lbWJl
ciB3aHkpLgogICAgIGVsc2UgaWYgKGZyYW1lKCkub3duZXJFbGVtZW50KCkpCiAgICAgICAgIGZp
bGxXaXRoUmVkID0gZmFsc2U7IC8vIFN1YmZyYW1lLCBkb24ndCBmaWxsIHdpdGggcmVkLgpAQCAt
MzYzNyw3ICszNjM0LDcgQEAgdm9pZCBGcmFtZVZpZXc6OnBhaW50T3ZlcmhhbmdBcmVhcyhHcmFw
aGljc0NvbnRleHQqIGNvbnRleHQsIGNvbnN0IEludFJlY3QmIGhvcmkKICAgICBpZiAoY29udGV4
dC0+cGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoZnJhbWUo
KS5kb2N1bWVudCgpLT5wcmludGluZygpKQorICAgIGlmIChmcmFtZSgpLmRvY3VtZW50KCkucHJp
bnRpbmcoKSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgU2Nyb2xsVmlldzo6cGFpbnRPdmVyaGFu
Z0FyZWFzKGNvbnRleHQsIGhvcml6b250YWxPdmVyaGFuZ0FyZWEsIHZlcnRpY2FsT3ZlcmhhbmdB
cmVhLCBkaXJ0eVJlY3QpOwpAQCAtMzY1NCw3ICszNjUxLDcgQEAgdm9pZCBGcmFtZVZpZXc6OnVw
ZGF0ZUxheW91dEFuZFN0eWxlSWZOZWVkZWRSZWN1cnNpdmUoKQogICAgIC8vIHJlZ2lvbiBidXQg
dGhlbiBiZWNvbWUgaW5jbHVkZWQgbGF0ZXIgYnkgdGhlIHNlY29uZCBmcmFtZSBhZGRpbmcgcmVj
dHMgdG8gdGhlIGRpcnR5IHJlZ2lvbgogICAgIC8vIHdoZW4gaXQgbGF5cyBvdXQuCiAKLSAgICBm
cmFtZSgpLmRvY3VtZW50KCktPnVwZGF0ZVN0eWxlSWZOZWVkZWQoKTsKKyAgICBmcmFtZSgpLmRv
Y3VtZW50KCkudXBkYXRlU3R5bGVJZk5lZWRlZCgpOwogCiAgICAgaWYgKG5lZWRzTGF5b3V0KCkp
CiAgICAgICAgIGxheW91dCgpOwpAQCAtMzY4MSwxMiArMzY3OCwxMiBAQCB2b2lkIEZyYW1lVmll
dzo6dXBkYXRlTGF5b3V0QW5kU3R5bGVJZk5lZWRlZFJlY3Vyc2l2ZSgpCiBib29sIEZyYW1lVmll
dzo6cXVhbGlmaWVzQXNWaXN1YWxseU5vbkVtcHR5KCkgY29uc3QKIHsKICAgICAvLyBObyBjb250
ZW50IHlldC4KLSAgICBFbGVtZW50KiBkb2N1bWVudEVsZW1lbnQgPSBmcmFtZSgpLmRvY3VtZW50
KCktPmRvY3VtZW50RWxlbWVudCgpOworICAgIEVsZW1lbnQqIGRvY3VtZW50RWxlbWVudCA9IGZy
YW1lKCkuZG9jdW1lbnQoKS5kb2N1bWVudEVsZW1lbnQoKTsKICAgICBpZiAoIWRvY3VtZW50RWxl
bWVudCB8fCAhZG9jdW1lbnRFbGVtZW50LT5yZW5kZXJlcigpKQogICAgICAgICByZXR1cm4gZmFs
c2U7CiAKICAgICAvLyBFbnN1cmUgdGhhdCB3ZSBhbHdheXMgZ2V0IG1hcmtlZCB2aXN1YWxseSBu
b24tZW1wdHkgZXZlbnR1YWxseS4KLSAgICBpZiAoIWZyYW1lKCkuZG9jdW1lbnQoKS0+cGFyc2lu
ZygpICYmIGZyYW1lKCkubG9hZGVyKCkuc3RhdGVNYWNoaW5lKCkuY29tbWl0dGVkRmlyc3RSZWFs
RG9jdW1lbnRMb2FkKCkpCisgICAgaWYgKCFmcmFtZSgpLmRvY3VtZW50KCkucGFyc2luZygpICYm
IGZyYW1lKCkubG9hZGVyKCkuc3RhdGVNYWNoaW5lKCkuY29tbWl0dGVkRmlyc3RSZWFsRG9jdW1l
bnRMb2FkKCkpCiAgICAgICAgIHJldHVybiB0cnVlOwogCiAgICAgLy8gUmVxdWlyZSB0aGUgZG9j
dW1lbnQgdG8gZ3JvdyBhIGJpdC4KQEAgLTM5NjQsOCArMzk2MSw4IEBAIHZvaWQgRnJhbWVWaWV3
OjpzZXRUcmFja3NSZXBhaW50cyhib29sIHRyYWNrUmVwYWludHMpCiAKICAgICAvLyBGb3JjZSBs
YXlvdXQgdG8gZmx1c2ggb3V0IGFueSBwZW5kaW5nIHJlcGFpbnRzLgogICAgIGlmICh0cmFja1Jl
cGFpbnRzKSB7Ci0gICAgICAgIGlmIChmcmFtZSgpLmRvY3VtZW50KCkpCi0gICAgICAgICAgICBm
cmFtZSgpLmRvY3VtZW50KCktPnVwZGF0ZUxheW91dCgpOworICAgICAgICBBU1NFUlQoZnJhbWUo
KS5kb2N1bWVudCgpKTsKKyAgICAgICAgZnJhbWUoKS5kb2N1bWVudCgpLnVwZGF0ZUxheW91dCgp
OwogICAgIH0KIAogICAgIGZvciAoRnJhbWUqIGZyYW1lID0gJm1fZnJhbWUtPnRyZWUoKS50b3Ao
KTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyZWUoKS50cmF2ZXJzZU5leHQoKSkgewpAQCAtMzk4
Niw4ICszOTgzLDggQEAgdm9pZCBGcmFtZVZpZXc6OnJlc2V0VHJhY2tlZFJlcGFpbnRzKCkKIAog
U3RyaW5nIEZyYW1lVmlldzo6dHJhY2tlZFJlcGFpbnRSZWN0c0FzVGV4dCgpIGNvbnN0CiB7Ci0g
ICAgaWYgKGZyYW1lKCkuZG9jdW1lbnQoKSkKLSAgICAgICAgZnJhbWUoKS5kb2N1bWVudCgpLT51
cGRhdGVMYXlvdXQoKTsKKyAgICBBU1NFUlQoKGZyYW1lKCkuZG9jdW1lbnQoKSk7CisgICAgZnJh
bWUoKS5kb2N1bWVudCgpLnVwZGF0ZUxheW91dCgpOwogCiAgICAgVGV4dFN0cmVhbSB0czsKICAg
ICBpZiAoIW1fdHJhY2tlZFJlcGFpbnRSZWN0cy5pc0VtcHR5KCkpIHsKQEAgLTQwOTQsNyArNDA5
MSw3IEBAIHZvaWQgRnJhbWVWaWV3Ojpub3RpZnlXaWRnZXRzSW5BbGxGcmFtZXMoV2lkZ2V0Tm90
aWZpY2F0aW9uIG5vdGlmaWNhdGlvbikKIEFYT2JqZWN0Q2FjaGUqIEZyYW1lVmlldzo6YXhPYmpl
Y3RDYWNoZSgpIGNvbnN0CiB7CiAgICAgaWYgKGZyYW1lKCkuZG9jdW1lbnQoKSkKLSAgICAgICAg
cmV0dXJuIGZyYW1lKCkuZG9jdW1lbnQoKS0+ZXhpc3RpbmdBWE9iamVjdENhY2hlKCk7CisgICAg
ICAgIHJldHVybiBmcmFtZSgpLmRvY3VtZW50KCkuZXhpc3RpbmdBWE9iamVjdENhY2hlKCk7CiAg
ICAgcmV0dXJuIDA7CiB9CiAgICAgCkBAIC00MTgxLDcgKzQxNzgsNyBAQCB2b2lkIEZyYW1lVmll
dzo6ZmlyZUxheW91dFJlbGF0ZWRNaWxlc3RvbmVzSWZOZWVkZWQoKQogICAgIHVwZGF0ZUlzVmlz
dWFsbHlOb25FbXB0eSgpOwogCiAgICAgLy8gSWYgdGhlIGxheW91dCB3YXMgZG9uZSB3aXRoIHBl
bmRpbmcgc2hlZXRzLCB3ZSBhcmUgbm90IGluIGZhY3QgdmlzdWFsbHkgbm9uLWVtcHR5IHlldC4K
LSAgICBpZiAobV9pc1Zpc3VhbGx5Tm9uRW1wdHkgJiYgIWZyYW1lKCkuZG9jdW1lbnQoKS0+ZGlk
TGF5b3V0V2l0aFBlbmRpbmdTdHlsZXNoZWV0cygpICYmIG1fZmlyc3RWaXN1YWxseU5vbkVtcHR5
TGF5b3V0Q2FsbGJhY2tQZW5kaW5nKSB7CisgICAgaWYgKG1faXNWaXN1YWxseU5vbkVtcHR5ICYm
ICFmcmFtZSgpLmRvY3VtZW50KCkuZGlkTGF5b3V0V2l0aFBlbmRpbmdTdHlsZXNoZWV0cygpICYm
IG1fZmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0Q2FsbGJhY2tQZW5kaW5nKSB7CiAgICAgICAg
IG1fZmlyc3RWaXN1YWxseU5vbkVtcHR5TGF5b3V0Q2FsbGJhY2tQZW5kaW5nID0gZmFsc2U7CiAg
ICAgICAgIGlmIChyZXF1ZXN0ZWRNaWxlc3RvbmVzICYgRGlkRmlyc3RWaXN1YWxseU5vbkVtcHR5
TGF5b3V0KQogICAgICAgICAgICAgbWlsZXN0b25lc0FjaGlldmVkIHw9IERpZEZpcnN0VmlzdWFs
bHlOb25FbXB0eUxheW91dDsKQEAgLTQyMjMsNyArNDIyMCw3IEBAIHZvaWQgRnJhbWVWaWV3Ojpz
ZXRWaXN1YWxVcGRhdGVzQWxsb3dlZEJ5Q2xpZW50KGJvb2wgdmlzdWFsVXBkYXRlc0FsbG93ZWQp
CiAKICAgICBtX3Zpc3VhbFVwZGF0ZXNBbGxvd2VkQnlDbGllbnQgPSB2aXN1YWxVcGRhdGVzQWxs
b3dlZDsKIAotICAgIGZyYW1lKCkuZG9jdW1lbnQoKS0+c2V0VmlzdWFsVXBkYXRlc0FsbG93ZWRC
eUNsaWVudCh2aXN1YWxVcGRhdGVzQWxsb3dlZCk7CisgICAgZnJhbWUoKS5kb2N1bWVudCgpLnNl
dFZpc3VhbFVwZGF0ZXNBbGxvd2VkQnlDbGllbnQodmlzdWFsVXBkYXRlc0FsbG93ZWQpOwogfQog
ICAgIAogdm9pZCBGcmFtZVZpZXc6OnNldFNjcm9sbFBpbm5pbmdCZWhhdmlvcihTY3JvbGxQaW5u
aW5nQmVoYXZpb3IgcGlubmluZykKQEAgLTQzMjAsNyArNDMxNyw3IEBAIHZvaWQgRnJhbWVWaWV3
OjpzZXRWaWV3cG9ydFNpemUoSW50U2l6ZSBzaXplKQogICAgIG1fb3ZlcnJpZGVWaWV3cG9ydFNp
emUgPSBzaXplOwogICAgIG1faGFzT3ZlcnJpZGVWaWV3cG9ydFNpemUgPSB0cnVlOwogICAgIAot
ICAgIGlmIChEb2N1bWVudCogZG9jdW1lbnQgPSBtX2ZyYW1lLT5kb2N1bWVudCgpKQorICAgIGlm
IChEb2N1bWVudCogZG9jdW1lbnQgPSAmbV9mcmFtZS0+ZG9jdW1lbnQoKSkKICAgICAgICAgZG9j
dW1lbnQtPnN0eWxlUmVzb2x2ZXJDaGFuZ2VkKERlZmVyUmVjYWxjU3R5bGUpOwogfQogICAgIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9IaXN0b3J5LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvSGlzdG9yeS5jcHAKaW5kZXggNTY3YWIyNi4uNGIxNGZkZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGFnZS9IaXN0b3J5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L0hpc3RvcnkuY3BwCkBAIC0xMjksNyArMTI5LDcgQEAgdm9pZCBIaXN0b3J5OjpnbyhTY3JpcHRF
eGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBpbnQgZGlzdGFuY2UpCiAKIFVSTCBIaXN0b3J5Ojp1
cmxGb3JTdGF0ZShjb25zdCBTdHJpbmcmIHVybFN0cmluZykKIHsKLSAgICBVUkwgYmFzZVVSTCA9
IG1fZnJhbWUtPmRvY3VtZW50KCktPmJhc2VVUkwoKTsKKyAgICBVUkwgYmFzZVVSTCA9IG1fZnJh
bWUtPmRvY3VtZW50KCkuYmFzZVVSTCgpOwogICAgIGlmICh1cmxTdHJpbmcuaXNFbXB0eSgpKQog
ICAgICAgICByZXR1cm4gYmFzZVVSTDsKIApAQCAtMTQyLDcgKzE0Miw3IEBAIHZvaWQgSGlzdG9y
eTo6c3RhdGVPYmplY3RBZGRlZChQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gZGF0
YSwgY29uc3QgU3RyCiAgICAgICAgIHJldHVybjsKICAgICAKICAgICBVUkwgZnVsbFVSTCA9IHVy
bEZvclN0YXRlKHVybFN0cmluZyk7Ci0gICAgaWYgKCFmdWxsVVJMLmlzVmFsaWQoKSB8fCAhbV9m
cmFtZS0+ZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKS0+Y2FuUmVxdWVzdChmdWxsVVJMKSkg
eworICAgIGlmICghZnVsbFVSTC5pc1ZhbGlkKCkgfHwgIW1fZnJhbWUtPmRvY3VtZW50KCkuc2Vj
dXJpdHlPcmlnaW4oKS0+Y2FuUmVxdWVzdChmdWxsVVJMKSkgewogICAgICAgICBlYyA9IFNFQ1VS
SVRZX0VSUjsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTE1Myw3ICsxNTMsNyBAQCB2b2lk
IEhpc3Rvcnk6OnN0YXRlT2JqZWN0QWRkZWQoUGFzc1JlZlB0cjxTZXJpYWxpemVkU2NyaXB0VmFs
dWU+IGRhdGEsIGNvbnN0IFN0cgogICAgICAgICBtX2ZyYW1lLT5sb2FkZXIoKS5oaXN0b3J5KCku
cmVwbGFjZVN0YXRlKGRhdGEsIHRpdGxlLCBmdWxsVVJMLnN0cmluZygpKTsKICAgICAgICAgICAg
IAogICAgIGlmICghdXJsU3RyaW5nLmlzRW1wdHkoKSkKLSAgICAgICAgbV9mcmFtZS0+ZG9jdW1l
bnQoKS0+dXBkYXRlVVJMRm9yUHVzaE9yUmVwbGFjZVN0YXRlKGZ1bGxVUkwpOworICAgICAgICBt
X2ZyYW1lLT5kb2N1bWVudCgpLnVwZGF0ZVVSTEZvclB1c2hPclJlcGxhY2VTdGF0ZShmdWxsVVJM
KTsKIAogICAgIGlmIChzdGF0ZU9iamVjdFR5cGUgPT0gU3RhdGVPYmplY3RUeXBlOjpQdXNoKQog
ICAgICAgICBtX2ZyYW1lLT5sb2FkZXIoKS5jbGllbnQoKS5kaXNwYXRjaERpZFB1c2hTdGF0ZVdp
dGhpblBhZ2UoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTG9jYXRpb24uY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGFnZS9Mb2NhdGlvbi5jcHAKaW5kZXggNDRmNTIyMC4uMzk0NTlk
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9Mb2NhdGlvbi5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGFnZS9Mb2NhdGlvbi5jcHAKQEAgLTQ4LDcgKzQ4LDcgQEAgaW5saW5lIGNv
bnN0IFVSTCYgTG9jYXRpb246OnVybCgpIGNvbnN0CiB7CiAgICAgQVNTRVJUKG1fZnJhbWUpOwog
Ci0gICAgY29uc3QgVVJMJiB1cmwgPSBtX2ZyYW1lLT5kb2N1bWVudCgpLT51cmwoKTsKKyAgICBj
b25zdCBVUkwmIHVybCA9IG1fZnJhbWUtPmRvY3VtZW50KCkudXJsKCk7CiAgICAgaWYgKCF1cmwu
aXNWYWxpZCgpKQogICAgICAgICByZXR1cm4gYmxhbmtVUkwoKTsgLy8gVXNlICJhYm91dDpibGFu
ayIgd2hpbGUgdGhlIHBhZ2UgaXMgc3RpbGwgbG9hZGluZyAoYmVmb3JlIHdlIGhhdmUgYSBmcmFt
ZSkuCiAKQEAgLTEzMCw3ICsxMzAsNyBAQCBQYXNzUmVmUHRyPERPTVN0cmluZ0xpc3Q+IExvY2F0
aW9uOjphbmNlc3Rvck9yaWdpbnMoKSBjb25zdAogICAgIGlmICghbV9mcmFtZSkKICAgICAgICAg
cmV0dXJuIG9yaWdpbnMucmVsZWFzZSgpOwogICAgIGZvciAoRnJhbWUqIGZyYW1lID0gbV9mcmFt
ZS0+dHJlZSgpLnBhcmVudCgpOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgpLnBhcmVudCgp
KQotICAgICAgICBvcmlnaW5zLT5hcHBlbmQoZnJhbWUtPmRvY3VtZW50KCktPnNlY3VyaXR5T3Jp
Z2luKCktPnRvU3RyaW5nKCkpOworICAgICAgICBvcmlnaW5zLT5hcHBlbmQoZnJhbWUtPmRvY3Vt
ZW50KCkuc2VjdXJpdHlPcmlnaW4oKS0+dG9TdHJpbmcoKSk7CiAgICAgcmV0dXJuIG9yaWdpbnMu
cmVsZWFzZSgpOwogfQogCkBAIC0xNTQsNyArMTU0LDcgQEAgdm9pZCBMb2NhdGlvbjo6c2V0UHJv
dG9jb2woY29uc3QgU3RyaW5nJiBwcm90b2NvbCwgRE9NV2luZG93JiBhY3RpdmVXaW5kb3csIERP
TVcKIHsKICAgICBpZiAoIW1fZnJhbWUpCiAgICAgICAgIHJldHVybjsKLSAgICBVUkwgdXJsID0g
bV9mcmFtZS0+ZG9jdW1lbnQoKS0+dXJsKCk7CisgICAgVVJMIHVybCA9IG1fZnJhbWUtPmRvY3Vt
ZW50KCkudXJsKCk7CiAgICAgaWYgKCF1cmwuc2V0UHJvdG9jb2wocHJvdG9jb2wpKSB7CiAgICAg
ICAgIGVjID0gU1lOVEFYX0VSUjsKICAgICAgICAgcmV0dXJuOwpAQCAtMTY2LDcgKzE2Niw3IEBA
IHZvaWQgTG9jYXRpb246OnNldEhvc3QoY29uc3QgU3RyaW5nJiBob3N0LCBET01XaW5kb3cmIGFj
dGl2ZVdpbmRvdywgRE9NV2luZG93JiBmCiB7CiAgICAgaWYgKCFtX2ZyYW1lKQogICAgICAgICBy
ZXR1cm47Ci0gICAgVVJMIHVybCA9IG1fZnJhbWUtPmRvY3VtZW50KCktPnVybCgpOworICAgIFVS
TCB1cmwgPSBtX2ZyYW1lLT5kb2N1bWVudCgpLnVybCgpOwogICAgIHVybC5zZXRIb3N0QW5kUG9y
dChob3N0KTsKICAgICBzZXRMb2NhdGlvbih1cmwuc3RyaW5nKCksIGFjdGl2ZVdpbmRvdywgZmly
c3RXaW5kb3cpOwogfQpAQCAtMTc1LDcgKzE3NSw3IEBAIHZvaWQgTG9jYXRpb246OnNldEhvc3Ru
YW1lKGNvbnN0IFN0cmluZyYgaG9zdG5hbWUsIERPTVdpbmRvdyYgYWN0aXZlV2luZG93LCBET01X
CiB7CiAgICAgaWYgKCFtX2ZyYW1lKQogICAgICAgICByZXR1cm47Ci0gICAgVVJMIHVybCA9IG1f
ZnJhbWUtPmRvY3VtZW50KCktPnVybCgpOworICAgIFVSTCB1cmwgPSBtX2ZyYW1lLT5kb2N1bWVu
dCgpLnVybCgpOwogICAgIHVybC5zZXRIb3N0KGhvc3RuYW1lKTsKICAgICBzZXRMb2NhdGlvbih1
cmwuc3RyaW5nKCksIGFjdGl2ZVdpbmRvdywgZmlyc3RXaW5kb3cpOwogfQpAQCAtMTg0LDcgKzE4
NCw3IEBAIHZvaWQgTG9jYXRpb246OnNldFBvcnQoY29uc3QgU3RyaW5nJiBwb3J0U3RyaW5nLCBE
T01XaW5kb3cmIGFjdGl2ZVdpbmRvdywgRE9NV2luCiB7CiAgICAgaWYgKCFtX2ZyYW1lKQogICAg
ICAgICByZXR1cm47Ci0gICAgVVJMIHVybCA9IG1fZnJhbWUtPmRvY3VtZW50KCktPnVybCgpOwor
ICAgIFVSTCB1cmwgPSBtX2ZyYW1lLT5kb2N1bWVudCgpLnVybCgpOwogICAgIGludCBwb3J0ID0g
cG9ydFN0cmluZy50b0ludCgpOwogICAgIGlmIChwb3J0IDwgMCB8fCBwb3J0ID4gMHhGRkZGIHx8
IHBvcnRTdHJpbmcuaXNFbXB0eSgpKQogICAgICAgICB1cmwucmVtb3ZlUG9ydCgpOwpAQCAtMTk3
LDcgKzE5Nyw3IEBAIHZvaWQgTG9jYXRpb246OnNldFBhdGhuYW1lKGNvbnN0IFN0cmluZyYgcGF0
aG5hbWUsIERPTVdpbmRvdyYgYWN0aXZlV2luZG93LCBET01XCiB7CiAgICAgaWYgKCFtX2ZyYW1l
KQogICAgICAgICByZXR1cm47Ci0gICAgVVJMIHVybCA9IG1fZnJhbWUtPmRvY3VtZW50KCktPnVy
bCgpOworICAgIFVSTCB1cmwgPSBtX2ZyYW1lLT5kb2N1bWVudCgpLnVybCgpOwogICAgIHVybC5z
ZXRQYXRoKHBhdGhuYW1lKTsKICAgICBzZXRMb2NhdGlvbih1cmwuc3RyaW5nKCksIGFjdGl2ZVdp
bmRvdywgZmlyc3RXaW5kb3cpOwogfQpAQCAtMjA2LDcgKzIwNiw3IEBAIHZvaWQgTG9jYXRpb246
OnNldFNlYXJjaChjb25zdCBTdHJpbmcmIHNlYXJjaCwgRE9NV2luZG93JiBhY3RpdmVXaW5kb3cs
IERPTVdpbmRvCiB7CiAgICAgaWYgKCFtX2ZyYW1lKQogICAgICAgICByZXR1cm47Ci0gICAgVVJM
IHVybCA9IG1fZnJhbWUtPmRvY3VtZW50KCktPnVybCgpOworICAgIFVSTCB1cmwgPSBtX2ZyYW1l
LT5kb2N1bWVudCgpLnVybCgpOwogICAgIHVybC5zZXRRdWVyeShzZWFyY2gpOwogICAgIHNldExv
Y2F0aW9uKHVybC5zdHJpbmcoKSwgYWN0aXZlV2luZG93LCBmaXJzdFdpbmRvdyk7CiB9CkBAIC0y
MTUsNyArMjE1LDcgQEAgdm9pZCBMb2NhdGlvbjo6c2V0SGFzaChjb25zdCBTdHJpbmcmIGhhc2gs
IERPTVdpbmRvdyYgYWN0aXZlV2luZG93LCBET01XaW5kb3cmIGYKIHsKICAgICBpZiAoIW1fZnJh
bWUpCiAgICAgICAgIHJldHVybjsKLSAgICBVUkwgdXJsID0gbV9mcmFtZS0+ZG9jdW1lbnQoKS0+
dXJsKCk7CisgICAgVVJMIHVybCA9IG1fZnJhbWUtPmRvY3VtZW50KCkudXJsKCk7CiAgICAgU3Ry
aW5nIG9sZEZyYWdtZW50SWRlbnRpZmllciA9IHVybC5mcmFnbWVudElkZW50aWZpZXIoKTsKICAg
ICBTdHJpbmcgbmV3RnJhZ21lbnRJZGVudGlmaWVyID0gaGFzaDsKICAgICBpZiAoaGFzaFswXSA9
PSAnIycpCkBAIC0yNDEsNyArMjQxLDcgQEAgdm9pZCBMb2NhdGlvbjo6cmVwbGFjZShjb25zdCBT
dHJpbmcmIHVybCwgRE9NV2luZG93JiBhY3RpdmVXaW5kb3csIERPTVdpbmRvdyYgZmkKICAgICBp
ZiAoIW1fZnJhbWUpCiAgICAgICAgIHJldHVybjsKICAgICAvLyBOb3RlOiBXZSBjYWxsIERPTVdp
bmRvdzo6c2V0TG9jYXRpb24gZGlyZWN0bHkgaGVyZSBiZWNhdXNlIHJlcGxhY2UoKSBhbHdheXMg
b3BlcmF0ZXMgb24gdGhlIGN1cnJlbnQgZnJhbWUuCi0gICAgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+
ZG9tV2luZG93KCktPnNldExvY2F0aW9uKHVybCwgYWN0aXZlV2luZG93LCBmaXJzdFdpbmRvdywg
TG9ja0hpc3RvcnlBbmRCYWNrRm9yd2FyZExpc3QpOworICAgIG1fZnJhbWUtPmRvY3VtZW50KCku
ZG9tV2luZG93KCktPnNldExvY2F0aW9uKHVybCwgYWN0aXZlV2luZG93LCBmaXJzdFdpbmRvdywg
TG9ja0hpc3RvcnlBbmRCYWNrRm9yd2FyZExpc3QpOwogfQogCiB2b2lkIExvY2F0aW9uOjpyZWxv
YWQoRE9NV2luZG93JiBhY3RpdmVXaW5kb3cpCkBAIC0yNTEsMTIgKzI1MSwxMiBAQCB2b2lkIExv
Y2F0aW9uOjpyZWxvYWQoRE9NV2luZG93JiBhY3RpdmVXaW5kb3cpCiAgICAgLy8gRklYTUU6IEl0
J3Mgbm90IGNsZWFyIHRoaXMgY3Jvc3Mtb3JpZ2luIHNlY3VyaXR5IGNoZWNrIGlzIHZhbHVhYmxl
LgogICAgIC8vIFdlIGFsbG93IG9uZSBwYWdlIHRvIGNoYW5nZSB0aGUgbG9jYXRpb24gb2YgYW5v
dGhlci4gV2h5IGJsb2NrIGF0dGVtcHRzIHRvIHJlbG9hZD8KICAgICAvLyBPdGhlciBsb2NhdGlv
biBvcGVyYXRpb25zIHNpbXBseSBibG9jayB1c2Ugb2YgSmF2YVNjcmlwdCBVUkxzIGNyb3NzIG9y
aWdpbi4KLSAgICBET01XaW5kb3cqIHRhcmdldFdpbmRvdyA9IG1fZnJhbWUtPmRvY3VtZW50KCkt
PmRvbVdpbmRvdygpOwotICAgIGlmICghYWN0aXZlV2luZG93LmRvY3VtZW50KCktPnNlY3VyaXR5
T3JpZ2luKCktPmNhbkFjY2VzcyhtX2ZyYW1lLT5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigp
KSkgeworICAgIERPTVdpbmRvdyogdGFyZ2V0V2luZG93ID0gbV9mcmFtZS0+ZG9jdW1lbnQoKS5k
b21XaW5kb3coKTsKKyAgICBpZiAoIWFjdGl2ZVdpbmRvdy5kb2N1bWVudCgpLT5zZWN1cml0eU9y
aWdpbigpLT5jYW5BY2Nlc3MobV9mcmFtZS0+ZG9jdW1lbnQoKS5zZWN1cml0eU9yaWdpbigpKSkg
ewogICAgICAgICB0YXJnZXRXaW5kb3ctPnByaW50RXJyb3JNZXNzYWdlKHRhcmdldFdpbmRvdy0+
Y3Jvc3NEb21haW5BY2Nlc3NFcnJvck1lc3NhZ2UoYWN0aXZlV2luZG93KSk7CiAgICAgICAgIHJl
dHVybjsKICAgICB9Ci0gICAgaWYgKHByb3RvY29sSXNKYXZhU2NyaXB0KG1fZnJhbWUtPmRvY3Vt
ZW50KCktPnVybCgpKSkKKyAgICBpZiAocHJvdG9jb2xJc0phdmFTY3JpcHQobV9mcmFtZS0+ZG9j
dW1lbnQoKS51cmwoKSkpCiAgICAgICAgIHJldHVybjsKICAgICBtX2ZyYW1lLT5uYXZpZ2F0aW9u
U2NoZWR1bGVyKCkuc2NoZWR1bGVSZWZyZXNoKCk7CiB9CkBAIC0yNjcsNyArMjY3LDcgQEAgdm9p
ZCBMb2NhdGlvbjo6c2V0TG9jYXRpb24oY29uc3QgU3RyaW5nJiB1cmwsIERPTVdpbmRvdyYgYWN0
aXZlV2luZG93LCBET01XaW5kb3cKICAgICBGcmFtZSogZnJhbWUgPSBtX2ZyYW1lLT5sb2FkZXIo
KS5maW5kRnJhbWVGb3JOYXZpZ2F0aW9uKFN0cmluZygpLCBhY3RpdmVXaW5kb3cuZG9jdW1lbnQo
KSk7CiAgICAgaWYgKCFmcmFtZSkKICAgICAgICAgcmV0dXJuOwotICAgIGZyYW1lLT5kb2N1bWVu
dCgpLT5kb21XaW5kb3coKS0+c2V0TG9jYXRpb24odXJsLCBhY3RpdmVXaW5kb3csIGZpcnN0V2lu
ZG93KTsKKyAgICBmcmFtZS0+ZG9jdW1lbnQoKS5kb21XaW5kb3coKS0+c2V0TG9jYXRpb24odXJs
LCBhY3RpdmVXaW5kb3csIGZpcnN0V2luZG93KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9OYXZpZ2F0b3IuY3BwIGIvU291cmNl
L1dlYkNvcmUvcGFnZS9OYXZpZ2F0b3IuY3BwCmluZGV4IGIyZjFlZDcuLjllNjE1ZTYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvTmF2aWdhdG9yLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL05hdmlnYXRvci5jcHAKQEAgLTkxLDcgKzkxLDcgQEAgU3RyaW5nIE5hdmlnYXRv
cjo6dXNlckFnZW50KCkgY29uc3QKICAgICBpZiAoIW1fZnJhbWUtPnBhZ2UoKSkKICAgICAgICAg
cmV0dXJuIFN0cmluZygpOwogICAgICAgICAKLSAgICByZXR1cm4gbV9mcmFtZS0+bG9hZGVyKCku
dXNlckFnZW50KG1fZnJhbWUtPmRvY3VtZW50KCktPnVybCgpKTsKKyAgICByZXR1cm4gbV9mcmFt
ZS0+bG9hZGVyKCkudXNlckFnZW50KG1fZnJhbWUtPmRvY3VtZW50KCkudXJsKCkpOwogfQogCiBE
T01QbHVnaW5BcnJheSogTmF2aWdhdG9yOjpwbHVnaW5zKCkgY29uc3QKQEAgLTExNiw3ICsxMTYs
NyBAQCBib29sIE5hdmlnYXRvcjo6Y29va2llRW5hYmxlZCgpIGNvbnN0CiAgICAgaWYgKG1fZnJh
bWUtPnBhZ2UoKSAmJiAhbV9mcmFtZS0+cGFnZSgpLT5zZXR0aW5ncygpLmNvb2tpZUVuYWJsZWQo
KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgcmV0dXJuIGNvb2tpZXNFbmFibGVkKG1f
ZnJhbWUtPmRvY3VtZW50KCkpOworICAgIHJldHVybiBjb29raWVzRW5hYmxlZCgmbV9mcmFtZS0+
ZG9jdW1lbnQoKSk7CiB9CiAKIGJvb2wgTmF2aWdhdG9yOjpqYXZhRW5hYmxlZCgpIGNvbnN0CkBA
IC0xMjYsNyArMTI2LDcgQEAgYm9vbCBOYXZpZ2F0b3I6OmphdmFFbmFibGVkKCkgY29uc3QKIAog
ICAgIGlmICghbV9mcmFtZS0+c2V0dGluZ3MoKS5pc0phdmFFbmFibGVkKCkpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKLSAgICBpZiAobV9mcmFtZS0+ZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4o
KS0+aXNMb2NhbCgpICYmICFtX2ZyYW1lLT5zZXR0aW5ncygpLmlzSmF2YUVuYWJsZWRGb3JMb2Nh
bEZpbGVzKCkpCisgICAgaWYgKG1fZnJhbWUtPmRvY3VtZW50KCkuc2VjdXJpdHlPcmlnaW4oKS0+
aXNMb2NhbCgpICYmICFtX2ZyYW1lLT5zZXR0aW5ncygpLmlzSmF2YUVuYWJsZWRGb3JMb2NhbEZp
bGVzKCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIHJldHVybiB0cnVlOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
UGFnZS5jcHAKaW5kZXggYzkzNWMwYi4uMTcxNGMxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGFnZS9QYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2UuY3BwCkBAIC0y
NjIsMTYgKzI2MiwxNiBAQCB1aW50NjRfdCBQYWdlOjpyZW5kZXJUcmVlU2l6ZSgpIGNvbnN0CiB7
CiAgICAgdWludDY0X3QgdG90YWwgPSAwOwogICAgIGZvciAoY29uc3QgRnJhbWUqIGZyYW1lID0g
Jm1haW5GcmFtZSgpOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgpLnRyYXZlcnNlTmV4dCgp
KSB7Ci0gICAgICAgIGlmICghZnJhbWUtPmRvY3VtZW50KCkgfHwgIWZyYW1lLT5kb2N1bWVudCgp
LT5yZW5kZXJWaWV3KCkpCisgICAgICAgIGlmICghZnJhbWUtPmRvY3VtZW50KCkgfHwgIWZyYW1l
LT5kb2N1bWVudCgpLnJlbmRlclZpZXcoKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAg
ICB0b3RhbCArPSBmcmFtZS0+ZG9jdW1lbnQoKS0+cmVuZGVyVmlldygpLT5yZW5kZXJlckNvdW50
KCk7CisgICAgICAgIHRvdGFsICs9IGZyYW1lLT5kb2N1bWVudCgpLnJlbmRlclZpZXcoKS0+cmVu
ZGVyZXJDb3VudCgpOwogICAgIH0KICAgICByZXR1cm4gdG90YWw7CiB9CiAKIFZpZXdwb3J0QXJn
dW1lbnRzIFBhZ2U6OnZpZXdwb3J0QXJndW1lbnRzKCkgY29uc3QKIHsKLSAgICByZXR1cm4gbWFp
bkZyYW1lKCkuZG9jdW1lbnQoKSA/IG1haW5GcmFtZSgpLmRvY3VtZW50KCktPnZpZXdwb3J0QXJn
dW1lbnRzKCkgOiBWaWV3cG9ydEFyZ3VtZW50cygpOworICAgIHJldHVybiBtYWluRnJhbWUoKS5k
b2N1bWVudCgpID8gbWFpbmZyYW1lKCkuZG9jdW1lbnQoKS52aWV3cG9ydEFyZ3VtZW50cygpIDog
Vmlld3BvcnRBcmd1bWVudHMoKTsKIH0KIAogU2Nyb2xsaW5nQ29vcmRpbmF0b3IqIFBhZ2U6OnNj
cm9sbGluZ0Nvb3JkaW5hdG9yKCkKQEAgLTM1OCw4ICszNTgsOCBAQCB2b2lkIFBhZ2U6OnNldFZp
ZXdNb2RlKFZpZXdNb2RlIHZpZXdNb2RlKQogICAgIGlmIChtX21haW5GcmFtZS0+dmlldygpKQog
ICAgICAgICBtX21haW5GcmFtZS0+dmlldygpLT5mb3JjZUxheW91dCgpOwogCi0gICAgaWYgKG1f
bWFpbkZyYW1lLT5kb2N1bWVudCgpKQotICAgICAgICBtX21haW5GcmFtZS0+ZG9jdW1lbnQoKS0+
c3R5bGVSZXNvbHZlckNoYW5nZWQoUmVjYWxjU3R5bGVJbW1lZGlhdGVseSk7CisgICAgaWYgKCZt
X21haW5GcmFtZS0+ZG9jdW1lbnQoKSkKKyAgICAgICAgbV9tYWluRnJhbWUtPmRvY3VtZW50KCku
c3R5bGVSZXNvbHZlckNoYW5nZWQoUmVjYWxjU3R5bGVJbW1lZGlhdGVseSk7CiB9CiAjZW5kaWYg
Ly8gRU5BQkxFKFZJRVdfTU9ERV9DU1NfTUVESUEpCiAKQEAgLTQyNSw5ICs0MjUsOSBAQCB2b2lk
IFBhZ2U6OnVwZGF0ZVN0eWxlRm9yQWxsUGFnZXNBZnRlckdsb2JhbENoYW5nZUluRW52aXJvbm1l
bnQoKQogICAgICAgICAgICAgLy8gSWYgYSBjaGFuZ2UgaW4gdGhlIGdsb2JhbCBlbnZpcm9ubWVu
dCBoYXMgb2NjdXJyZWQsIHdlIG5lZWQgdG8KICAgICAgICAgICAgIC8vIG1ha2Ugc3VyZSBhbGwg
dGhlIHByb3BlcnRpZXMgYSByZWNvbXB1dGVkLCB0aGVyZWZvcmUgd2UgaW52YWxpZGF0ZQogICAg
ICAgICAgICAgLy8gdGhlIHByb3BlcnRpZXMgY2FjaGUuCi0gICAgICAgICAgICBpZiAoU3R5bGVS
ZXNvbHZlciogc3R5bGVSZXNvbHZlciA9IGZyYW1lLT5kb2N1bWVudCgpLT5zdHlsZVJlc29sdmVy
SWZFeGlzdHMoKSkKKyAgICAgICAgICAgIGlmIChTdHlsZVJlc29sdmVyKiBzdHlsZVJlc29sdmVy
ID0gZnJhbWUtPmRvY3VtZW50KCkuc3R5bGVSZXNvbHZlcklmRXhpc3RzKCkpCiAgICAgICAgICAg
ICAgICAgc3R5bGVSZXNvbHZlci0+aW52YWxpZGF0ZU1hdGNoZWRQcm9wZXJ0aWVzQ2FjaGUoKTsK
LSAgICAgICAgICAgIGZyYW1lLT5kb2N1bWVudCgpLT5zY2hlZHVsZUZvcmNlZFN0eWxlUmVjYWxj
KCk7CisgICAgICAgICAgICBmcmFtZS0+ZG9jdW1lbnQoKS5zY2hlZHVsZUZvcmNlZFN0eWxlUmVj
YWxjKCk7CiAgICAgICAgIH0KIH0KIApAQCAtNDc1LDcgKzQ3NSw3IEBAIFBsdWdpbkRhdGEmIFBh
Z2U6OnBsdWdpbkRhdGEoKSBjb25zdAogaW5saW5lIE1lZGlhQ2FuU3RhcnRMaXN0ZW5lciogUGFn
ZTo6dGFrZUFueU1lZGlhQ2FuU3RhcnRMaXN0ZW5lcigpCiB7CiAgICAgZm9yIChGcmFtZSogZnJh
bWUgPSAmbWFpbkZyYW1lKCk7IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50cmVlKCkudHJhdmVyc2VO
ZXh0KCkpIHsKLSAgICAgICAgaWYgKE1lZGlhQ2FuU3RhcnRMaXN0ZW5lciogbGlzdGVuZXIgPSBm
cmFtZS0+ZG9jdW1lbnQoKS0+dGFrZUFueU1lZGlhQ2FuU3RhcnRMaXN0ZW5lcigpKQorICAgICAg
ICBpZiAoTWVkaWFDYW5TdGFydExpc3RlbmVyKiBsaXN0ZW5lciA9IGZyYW1lLT5kb2N1bWVudCgp
LnRha2VBbnlNZWRpYUNhblN0YXJ0TGlzdGVuZXIoKSkKICAgICAgICAgICAgIHJldHVybiBsaXN0
ZW5lcjsKICAgICB9CiAgICAgcmV0dXJuIDA7CkBAIC02MzQsNyArNjM0LDcgQEAgdm9pZCBQYWdl
Ojp1bm1hcmtBbGxUZXh0TWF0Y2hlcygpCiB7CiAgICAgRnJhbWUqIGZyYW1lID0gJm1haW5GcmFt
ZSgpOwogICAgIGRvIHsKLSAgICAgICAgZnJhbWUtPmRvY3VtZW50KCktPm1hcmtlcnMoKS5yZW1v
dmVNYXJrZXJzKERvY3VtZW50TWFya2VyOjpUZXh0TWF0Y2gpOworICAgICAgICBmcmFtZS0+ZG9j
dW1lbnQoKS5tYXJrZXJzKCkucmVtb3ZlTWFya2VycyhEb2N1bWVudE1hcmtlcjo6VGV4dE1hdGNo
KTsKICAgICAgICAgZnJhbWUgPSBpbmNyZW1lbnRGcmFtZShmcmFtZSwgdHJ1ZSwgZmFsc2UpOwog
ICAgIH0gd2hpbGUgKGZyYW1lKTsKIH0KQEAgLTY5MSw3ICs2OTEsNyBAQCB2b2lkIFBhZ2U6OnNl
dE1lZGlhVm9sdW1lKGZsb2F0IHZvbHVtZSkKIAogICAgIG1fbWVkaWFWb2x1bWUgPSB2b2x1bWU7
CiAgICAgZm9yIChGcmFtZSogZnJhbWUgPSAmbWFpbkZyYW1lKCk7IGZyYW1lOyBmcmFtZSA9IGZy
YW1lLT50cmVlKCkudHJhdmVyc2VOZXh0KCkpIHsKLSAgICAgICAgZnJhbWUtPmRvY3VtZW50KCkt
Pm1lZGlhVm9sdW1lRGlkQ2hhbmdlKCk7CisgICAgICAgIGZyYW1lLT5kb2N1bWVudCgpLm1lZGlh
Vm9sdW1lRGlkQ2hhbmdlKCk7CiAgICAgfQogfQogCkBAIC03NDcsNyArNzQ3LDcgQEAgdm9pZCBQ
YWdlOjpzZXRQYWdlU2NhbGVGYWN0b3IoZmxvYXQgc2NhbGUsIGNvbnN0IEludFBvaW50JiBvcmln
aW4pCiAKICNpZiBFTkFCTEUoTUVESUFfQ09OVFJPTFNfU0NSSVBUKQogICAgIGZvciAoRnJhbWUq
IGZyYW1lID0gJm1haW5GcmFtZSgpOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgpLnRyYXZl
cnNlTmV4dCgpKQotICAgICAgICBmcmFtZS0+ZG9jdW1lbnQoKS0+cGFnZVNjYWxlRmFjdG9yQ2hh
bmdlZCgpOworICAgICAgICBmcmFtZS0+ZG9jdW1lbnQoKS5wYWdlU2NhbGVGYWN0b3JDaGFuZ2Vk
KCk7CiAjZW5kaWYKIH0KIApAQCAtODgzLDcgKzg4Myw3IEBAIHZvaWQgUGFnZTo6c3VzcGVuZFNj
cmlwdGVkQW5pbWF0aW9ucygpCiAgICAgbV9zY3JpcHRlZEFuaW1hdGlvbnNTdXNwZW5kZWQgPSB0
cnVlOwogICAgIGZvciAoRnJhbWUqIGZyYW1lID0gJm1haW5GcmFtZSgpOyBmcmFtZTsgZnJhbWUg
PSBmcmFtZS0+dHJlZSgpLnRyYXZlcnNlTmV4dCgpKSB7CiAgICAgICAgIGlmIChmcmFtZS0+ZG9j
dW1lbnQoKSkKLSAgICAgICAgICAgIGZyYW1lLT5kb2N1bWVudCgpLT5zdXNwZW5kU2NyaXB0ZWRB
bmltYXRpb25Db250cm9sbGVyQ2FsbGJhY2tzKCk7CisgICAgICAgICAgICBmcmFtZS0+ZG9jdW1l
bnQoKS5zdXNwZW5kU2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVyQ2FsbGJhY2tzKCk7CiAgICAg
fQogfQogCkBAIC04OTIsNyArODkyLDcgQEAgdm9pZCBQYWdlOjpyZXN1bWVTY3JpcHRlZEFuaW1h
dGlvbnMoKQogICAgIG1fc2NyaXB0ZWRBbmltYXRpb25zU3VzcGVuZGVkID0gZmFsc2U7CiAgICAg
Zm9yIChGcmFtZSogZnJhbWUgPSAmbWFpbkZyYW1lKCk7IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50
cmVlKCkudHJhdmVyc2VOZXh0KCkpIHsKICAgICAgICAgaWYgKGZyYW1lLT5kb2N1bWVudCgpKQot
ICAgICAgICAgICAgZnJhbWUtPmRvY3VtZW50KCktPnJlc3VtZVNjcmlwdGVkQW5pbWF0aW9uQ29u
dHJvbGxlckNhbGxiYWNrcygpOworICAgICAgICAgICAgZnJhbWUtPmRvY3VtZW50KCkucmVzdW1l
U2NyaXB0ZWRBbmltYXRpb25Db250cm9sbGVyQ2FsbGJhY2tzKCk7CiAgICAgfQogfQogCkBAIC05
MDIsNyArOTAyLDcgQEAgdm9pZCBQYWdlOjpzZXRJc1Zpc3VhbGx5SWRsZUludGVybmFsKGJvb2wg
aXNWaXN1YWxseUlkbGUpCiAgICAgCiAgICAgZm9yIChGcmFtZSogZnJhbWUgPSAmbWFpbkZyYW1l
KCk7IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50cmVlKCkudHJhdmVyc2VOZXh0KCkpIHsKICAgICAg
ICAgaWYgKGZyYW1lLT5kb2N1bWVudCgpKQotICAgICAgICAgICAgZnJhbWUtPmRvY3VtZW50KCkt
PnNjcmlwdGVkQW5pbWF0aW9uQ29udHJvbGxlclNldFRocm90dGxlZChpc1Zpc3VhbGx5SWRsZSk7
CisgICAgICAgICAgICBmcmFtZS0+ZG9jdW1lbnQoKS5zY3JpcHRlZEFuaW1hdGlvbkNvbnRyb2xs
ZXJTZXRUaHJvdHRsZWQoaXNWaXN1YWxseUlkbGUpOwogICAgIH0KIH0KIApAQCAtOTM0LDcgKzkz
NCw3IEBAIHZvaWQgUGFnZTo6dXNlclN0eWxlU2hlZXRMb2NhdGlvbkNoYW5nZWQoKQogCiAgICAg
Zm9yIChGcmFtZSogZnJhbWUgPSAmbWFpbkZyYW1lKCk7IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50
cmVlKCkudHJhdmVyc2VOZXh0KCkpIHsKICAgICAgICAgaWYgKGZyYW1lLT5kb2N1bWVudCgpKQot
ICAgICAgICAgICAgZnJhbWUtPmRvY3VtZW50KCktPnN0eWxlU2hlZXRDb2xsZWN0aW9uKCkudXBk
YXRlUGFnZVVzZXJTaGVldCgpOworICAgICAgICAgICAgZnJhbWUtPmRvY3VtZW50KCkuc3R5bGVT
aGVldENvbGxlY3Rpb24oKS51cGRhdGVQYWdlVXNlclNoZWV0KCk7CiAgICAgfQogfQogCkBAIC05
OTUsMTMgKzk5NSwxMyBAQCB2b2lkIFBhZ2U6OnJlbW92ZUFsbFZpc2l0ZWRMaW5rcygpCiB2b2lk
IFBhZ2U6OmludmFsaWRhdGVTdHlsZXNGb3JBbGxMaW5rcygpCiB7CiAgICAgZm9yIChGcmFtZSog
ZnJhbWUgPSBtX21haW5GcmFtZS5nZXQoKTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyZWUoKS50
cmF2ZXJzZU5leHQoKSkKLSAgICAgICAgZnJhbWUtPmRvY3VtZW50KCktPnZpc2l0ZWRMaW5rU3Rh
dGUoKS5pbnZhbGlkYXRlU3R5bGVGb3JBbGxMaW5rcygpOworICAgICAgICBmcmFtZS0+ZG9jdW1l
bnQoKS52aXNpdGVkTGlua1N0YXRlKCkuaW52YWxpZGF0ZVN0eWxlRm9yQWxsTGlua3MoKTsKIH0K
IAogdm9pZCBQYWdlOjppbnZhbGlkYXRlU3R5bGVzRm9yTGluayhMaW5rSGFzaCBsaW5rSGFzaCkK
IHsKICAgICBmb3IgKEZyYW1lKiBmcmFtZSA9IG1fbWFpbkZyYW1lLmdldCgpOyBmcmFtZTsgZnJh
bWUgPSBmcmFtZS0+dHJlZSgpLnRyYXZlcnNlTmV4dCgpKQotICAgICAgICBmcmFtZS0+ZG9jdW1l
bnQoKS0+dmlzaXRlZExpbmtTdGF0ZSgpLmludmFsaWRhdGVTdHlsZUZvckxpbmsobGlua0hhc2gp
OworICAgICAgICBmcmFtZS0+ZG9jdW1lbnQoKS52aXNpdGVkTGlua1N0YXRlKCkuaW52YWxpZGF0
ZVN0eWxlRm9yTGluayhsaW5rSGFzaCk7CiB9CiAKIHZvaWQgUGFnZTo6c2V0RGVidWdnZXIoSlND
OjpEZWJ1Z2dlciogZGVidWdnZXIpCkBAIC0xMDU4LDcgKzEwNTgsNyBAQCB2b2lkIFBhZ2U6OnNl
dE1pbmltdW1UaW1lckludGVydmFsKGRvdWJsZSBtaW5pbXVtVGltZXJJbnRlcnZhbCkKICAgICBt
X21pbmltdW1UaW1lckludGVydmFsID0gbWluaW11bVRpbWVySW50ZXJ2YWw7CiAgICAgZm9yIChG
cmFtZSogZnJhbWUgPSAmbWFpbkZyYW1lKCk7IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50cmVlKCku
dHJhdmVyc2VOZXh0V2l0aFdyYXAoZmFsc2UpKSB7CiAgICAgICAgIGlmIChmcmFtZS0+ZG9jdW1l
bnQoKSkKLSAgICAgICAgICAgIGZyYW1lLT5kb2N1bWVudCgpLT5hZGp1c3RNaW5pbXVtVGltZXJJ
bnRlcnZhbChvbGRUaW1lckludGVydmFsKTsKKyAgICAgICAgICAgIGZyYW1lLT5kb2N1bWVudCgp
LmFkanVzdE1pbmltdW1UaW1lckludGVydmFsKG9sZFRpbWVySW50ZXJ2YWwpOwogICAgIH0KIH0K
IApAQCAtMTA4NywxNCArMTA4NywxNCBAQCB2b2lkIFBhZ2U6OnNldFRpbWVyVGhyb3R0bGluZ0Vu
YWJsZWQoYm9vbCBlbmFibGVkKQogICAgIAogICAgIGZvciAoRnJhbWUqIGZyYW1lID0gJm1haW5G
cmFtZSgpOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgpLnRyYXZlcnNlTmV4dFdpdGhXcmFw
KGZhbHNlKSkgewogICAgICAgICBpZiAoZnJhbWUtPmRvY3VtZW50KCkpCi0gICAgICAgICAgICBm
cmFtZS0+ZG9jdW1lbnQoKS0+ZGlkQ2hhbmdlVGltZXJBbGlnbm1lbnRJbnRlcnZhbCgpOworICAg
ICAgICAgICAgZnJhbWUtPmRvY3VtZW50KCkuZGlkQ2hhbmdlVGltZXJBbGlnbm1lbnRJbnRlcnZh
bCgpOwogICAgIH0KIH0KIAogdm9pZCBQYWdlOjpkbnNQcmVmZXRjaGluZ1N0YXRlQ2hhbmdlZCgp
CiB7CiAgICAgZm9yIChGcmFtZSogZnJhbWUgPSAmbWFpbkZyYW1lKCk7IGZyYW1lOyBmcmFtZSA9
IGZyYW1lLT50cmVlKCkudHJhdmVyc2VOZXh0KCkpCi0gICAgICAgIGZyYW1lLT5kb2N1bWVudCgp
LT5pbml0RE5TUHJlZmV0Y2goKTsKKyAgICAgICAgZnJhbWUtPmRvY3VtZW50KCkuaW5pdEROU1By
ZWZldGNoKCk7CiB9CiAKIFZlY3RvcjxSZWY8UGx1Z2luVmlld0Jhc2U+PiBQYWdlOjpwbHVnaW5W
aWV3cygpCkBAIC0xMTE5LDcgKzExMTksNyBAQCBWZWN0b3I8UmVmPFBsdWdpblZpZXdCYXNlPj4g
UGFnZTo6cGx1Z2luVmlld3MoKQogdm9pZCBQYWdlOjpzdG9yYWdlQmxvY2tpbmdTdGF0ZUNoYW5n
ZWQoKQogewogICAgIGZvciAoRnJhbWUqIGZyYW1lID0gJm1haW5GcmFtZSgpOyBmcmFtZTsgZnJh
bWUgPSBmcmFtZS0+dHJlZSgpLnRyYXZlcnNlTmV4dCgpKQotICAgICAgICBmcmFtZS0+ZG9jdW1l
bnQoKS0+c3RvcmFnZUJsb2NraW5nU3RhdGVEaWRDaGFuZ2UoKTsKKyAgICAgICAgZnJhbWUtPmRv
Y3VtZW50KCkuc3RvcmFnZUJsb2NraW5nU3RhdGVEaWRDaGFuZ2UoKTsKIAogICAgIC8vIENvbGxl
Y3QgdGhlIFBsdWdpblZpZXdzIGluIHRvIGEgdmVjdG9yIHRvIGVuc3VyZSB0aGF0IGFjdGlvbiB0
aGUgcGx1Zy1pbiB0YWtlcwogICAgIC8vIGZyb20gYmVsb3cgc3RvcmFnZUJsb2NraW5nU3RhdGVD
aGFuZ2VkIGRvZXMgbm90IGFmZmVjdCB0aGVpciBsaWZldGltZS4KQEAgLTE1MjUsNyArMTUyNSw3
IEBAIHZvaWQgUGFnZTo6aGlkZGVuUGFnZUNTU0FuaW1hdGlvblN1c3BlbnNpb25TdGF0ZUNoYW5n
ZWQoKQogdm9pZCBQYWdlOjpjYXB0aW9uUHJlZmVyZW5jZXNDaGFuZ2VkKCkKIHsKICAgICBmb3Ig
KEZyYW1lKiBmcmFtZSA9ICZtYWluRnJhbWUoKTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyZWUo
KS50cmF2ZXJzZU5leHQoKSkKLSAgICAgICAgZnJhbWUtPmRvY3VtZW50KCktPmNhcHRpb25QcmVm
ZXJlbmNlc0NoYW5nZWQoKTsKKyAgICAgICAgZnJhbWUtPmRvY3VtZW50KCkuY2FwdGlvblByZWZl
cmVuY2VzQ2hhbmdlZCgpOwogfQogI2VuZGlmCiAKQEAgLTE1ODEsNyArMTU4MSw3IEBAIHZvaWQg
UGFnZTo6c2V0U2Vzc2lvbklEKFNlc3Npb25JRCBzZXNzaW9uSUQpCiAgICAgICAgIHJldHVybjsK
IAogICAgIGZvciAoRnJhbWUqIGZyYW1lID0gJm1haW5GcmFtZSgpOyBmcmFtZTsgZnJhbWUgPSBm
cmFtZS0+dHJlZSgpLnRyYXZlcnNlTmV4dCgpKQotICAgICAgICBmcmFtZS0+ZG9jdW1lbnQoKS0+
cHJpdmF0ZUJyb3dzaW5nU3RhdGVEaWRDaGFuZ2UoKTsKKyAgICAgICAgZnJhbWUtPmRvY3VtZW50
KCkucHJpdmF0ZUJyb3dzaW5nU3RhdGVEaWRDaGFuZ2UoKTsKIAogICAgIC8vIENvbGxlY3QgdGhl
IFBsdWdpblZpZXdzIGluIHRvIGEgdmVjdG9yIHRvIGVuc3VyZSB0aGF0IGFjdGlvbiB0aGUgcGx1
Zy1pbiB0YWtlcwogICAgIC8vIGZyb20gYmVsb3cgcHJpdmF0ZUJyb3dzaW5nU3RhdGVDaGFuZ2Vk
IGRvZXMgbm90IGFmZmVjdCB0aGVpciBsaWZldGltZS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BhZ2UvUGFnZURlYnVnZ2FibGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlRGVi
dWdnYWJsZS5jcHAKaW5kZXggOTg2MzIzZC4uMWRkMmJhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGFnZS9QYWdlRGVidWdnYWJsZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Q
YWdlRGVidWdnYWJsZS5jcHAKQEAgLTU0LDcgKzU0LDcgQEAgU3RyaW5nIFBhZ2VEZWJ1Z2dhYmxl
OjpuYW1lKCkgY29uc3QKICAgICBpZiAoIW1fcGFnZS5tYWluRnJhbWUoKS5kb2N1bWVudCgpKQog
ICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAKLSAgICByZXR1cm4gbV9wYWdlLm1haW5GcmFtZSgp
LmRvY3VtZW50KCktPnRpdGxlKCk7CisgICAgcmV0dXJuIG1fcGFnZS5tYWluZnJhbWUoKS5kb2N1
bWVudCgpLnRpdGxlKCk7CiB9CiAKIFN0cmluZyBQYWdlRGVidWdnYWJsZTo6dXJsKCkgY29uc3QK
QEAgLTYyLDcgKzYyLDcgQEAgU3RyaW5nIFBhZ2VEZWJ1Z2dhYmxlOjp1cmwoKSBjb25zdAogICAg
IGlmICghbV9wYWdlLm1haW5GcmFtZSgpLmRvY3VtZW50KCkpCiAgICAgICAgIHJldHVybiBTdHJp
bmcoKTsKIAotICAgIFN0cmluZyB1cmwgPSBtX3BhZ2UubWFpbkZyYW1lKCkuZG9jdW1lbnQoKS0+
dXJsKCkuc3RyaW5nKCk7CisgICAgU3RyaW5nIHVybCA9IG1fcGFnZS5tYWluZnJhbWUoKS5kb2N1
bWVudCgpLnVybCgpLnN0cmluZygpOwogICAgIHJldHVybiB1cmwuaXNFbXB0eSgpID8gQVNDSUlM
aXRlcmFsKCJhYm91dDpibGFuayIpIDogdXJsOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1BhZ2VHcm91cExvYWREZWZlcnJlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1BhZ2VHcm91cExvYWREZWZlcnJlci5jcHAKaW5kZXggYjVmMWNhMy4uYWJhM2Y1YSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9QYWdlR3JvdXBMb2FkRGVmZXJyZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZUdyb3VwTG9hZERlZmVycmVyLmNwcApAQCAtNDUsNyAr
NDUsNyBAQCBQYWdlR3JvdXBMb2FkRGVmZXJyZXI6OlBhZ2VHcm91cExvYWREZWZlcnJlcihQYWdl
JiBwYWdlLCBib29sIGRlZmVyU2VsZikKICAgICAgICAgICAgICAgICAvLyBUaGlzIGNvZGUgaXMg
bm90IGxvZ2ljYWxseSBwYXJ0IG9mIGxvYWQgZGVmZXJyaW5nLCBidXQgd2UgZG8gbm90IHdhbnQg
SlMgY29kZSBleGVjdXRlZCBiZW5lYXRoIG1vZGFsCiAgICAgICAgICAgICAgICAgLy8gd2luZG93
cyBvciBzaGVldHMsIHdoaWNoIGlzIGV4YWN0bHkgd2hlbiBQYWdlR3JvdXBMb2FkRGVmZXJyZXIg
aXMgdXNlZC4KICAgICAgICAgICAgICAgICBmb3IgKEZyYW1lKiBmcmFtZSA9ICZvdGhlclBhZ2Ut
Pm1haW5GcmFtZSgpOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgpLnRyYXZlcnNlTmV4dCgp
KQotICAgICAgICAgICAgICAgICAgICBmcmFtZS0+ZG9jdW1lbnQoKS0+c3VzcGVuZFNjaGVkdWxl
ZFRhc2tzKEFjdGl2ZURPTU9iamVjdDo6V2lsbERlZmVyTG9hZGluZyk7CisgICAgICAgICAgICAg
ICAgICAgIGZyYW1lLT5kb2N1bWVudCgpLnN1c3BlbmRTY2hlZHVsZWRUYXNrcyhBY3RpdmVET01P
YmplY3Q6OldpbGxEZWZlckxvYWRpbmcpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAg
fQpAQCAtNjMsNyArNjMsNyBAQCBQYWdlR3JvdXBMb2FkRGVmZXJyZXI6On5QYWdlR3JvdXBMb2Fk
RGVmZXJyZXIoKQogICAgICAgICAgICAgcGFnZS0+c2V0RGVmZXJzTG9hZGluZyhmYWxzZSk7CiAK
ICAgICAgICAgICAgIGZvciAoRnJhbWUqIGZyYW1lID0gJnBhZ2UtPm1haW5GcmFtZSgpOyBmcmFt
ZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgpLnRyYXZlcnNlTmV4dCgpKQotICAgICAgICAgICAgICAg
IGZyYW1lLT5kb2N1bWVudCgpLT5yZXN1bWVTY2hlZHVsZWRUYXNrcyhBY3RpdmVET01PYmplY3Q6
OldpbGxEZWZlckxvYWRpbmcpOworICAgICAgICAgICAgICAgIGZyYW1lLT5kb2N1bWVudCgpLnJl
c3VtZVNjaGVkdWxlZFRhc2tzKEFjdGl2ZURPTU9iamVjdDo6V2lsbERlZmVyTG9hZGluZyk7CiAg
ICAgICAgIH0KICAgICB9CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BhZ2VT
ZXJpYWxpemVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVNlcmlhbGl6ZXIuY3BwCmlu
ZGV4IGM4MDI1OWMuLmZkYTJlMmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFn
ZVNlcmlhbGl6ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGFnZVNlcmlhbGl6ZXIu
Y3BwCkBAIC0xNTQsNyArMTU0LDcgQEAgdm9pZCBTZXJpYWxpemVyTWFya3VwQWNjdW11bGF0b3I6
OmFwcGVuZEN1c3RvbUF0dHJpYnV0ZXMoU3RyaW5nQnVpbGRlciYgb3V0LCBjb24KICAgICBpZiAo
IWZyYW1lKQogICAgICAgICByZXR1cm47CiAKLSAgICBVUkwgdXJsID0gZnJhbWUtPmRvY3VtZW50
KCktPnVybCgpOworICAgIFVSTCB1cmwgPSBmcmFtZS0+ZG9jdW1lbnQoKS51cmwoKTsKICAgICBp
ZiAodXJsLmlzVmFsaWQoKSAmJiAhdXJsLmlzQmxhbmtVUkwoKSkKICAgICAgICAgcmV0dXJuOwog
CkBAIC0xOTMsNyArMTkzLDcgQEAgdm9pZCBQYWdlU2VyaWFsaXplcjo6c2VyaWFsaXplKFBhZ2Uq
IHBhZ2UpCiAKIHZvaWQgUGFnZVNlcmlhbGl6ZXI6OnNlcmlhbGl6ZUZyYW1lKEZyYW1lKiBmcmFt
ZSkKIHsKLSAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBmcmFtZS0+ZG9jdW1lbnQoKTsKKyAgICBE
b2N1bWVudCogZG9jdW1lbnQgPSAmZnJhbWUtPmRvY3VtZW50KCk7CiAgICAgVVJMIHVybCA9IGRv
Y3VtZW50LT51cmwoKTsKICAgICBpZiAoIXVybC5pc1ZhbGlkKCkgfHwgdXJsLmlzQmxhbmtVUkwo
KSkgewogICAgICAgICAvLyBGb3IgYmxhbmsgZnJhbWVzIHdlIGdlbmVyYXRlIGEgZmFrZSBVUkwg
c28gdGhleSBjYW4gYmUgcmVmZXJlbmNlZCBieSB0aGVpciBjb250YWluaW5nIGZyYW1lLgpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9QZXJmb3JtYW5jZS5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1BlcmZvcm1hbmNlLmNwcAppbmRleCBiNDM3MmY2Li5lYzIyNjFhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wYWdlL1BlcmZvcm1hbmNlLmNwcApAQCAtNzEsNyArNzEsNyBAQCBTY3JpcHRFeGVjdXRp
b25Db250ZXh0KiBQZXJmb3JtYW5jZTo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0CiB7
CiAgICAgaWYgKCFmcmFtZSgpKQogICAgICAgICByZXR1cm4gMDsKLSAgICByZXR1cm4gZnJhbWUo
KS0+ZG9jdW1lbnQoKTsKKyAgICByZXR1cm4gJmZyYW1lKCktPmRvY3VtZW50KCk7CiB9CiAKIFBl
cmZvcm1hbmNlTmF2aWdhdGlvbiogUGVyZm9ybWFuY2U6Om5hdmlnYXRpb24oKSBjb25zdApAQCAt
MjI4LDcgKzIyOCw3IEBAIHZvaWQgUGVyZm9ybWFuY2U6OndlYmtpdENsZWFyTWVhc3VyZXMoY29u
c3QgU3RyaW5nJiBtZWFzdXJlTmFtZSkKIAogZG91YmxlIFBlcmZvcm1hbmNlOjpub3coKSBjb25z
dAogewotICAgIHJldHVybiAxMDAwLjAgKiBtX2ZyYW1lLT5kb2N1bWVudCgpLT5sb2FkZXIoKS0+
dGltaW5nKCktPm1vbm90b25pY1RpbWVUb1plcm9CYXNlZERvY3VtZW50VGltZShtb25vdG9uaWNh
bGx5SW5jcmVhc2luZ1RpbWUoKSk7CisgICAgcmV0dXJuIDEwMDAuMCAqIG1fZnJhbWUtPmRvY3Vt
ZW50KCkubG9hZGVyKCktPnRpbWluZygpLT5tb25vdG9uaWNUaW1lVG9aZXJvQmFzZWREb2N1bWVu
dFRpbWUobW9ub3RvbmljYWxseUluY3JlYXNpbmdUaW1lKCkpOwogfQogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1BlcmZvcm1hbmNlVGlt
aW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2VUaW1pbmcuY3BwCmluZGV4
IGMxNDA4MGYuLmEwZWQ5ZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9y
bWFuY2VUaW1pbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUGVyZm9ybWFuY2VUaW1p
bmcuY3BwCkBAIC0zMjMsMTEgKzMyMywxMCBAQCBjb25zdCBEb2N1bWVudFRpbWluZyogUGVyZm9y
bWFuY2VUaW1pbmc6OmRvY3VtZW50VGltaW5nKCkgY29uc3QKICAgICBpZiAoIW1fZnJhbWUpCiAg
ICAgICAgIHJldHVybiAwOwogCi0gICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gbV9mcmFtZS0+ZG9j
dW1lbnQoKTsKLSAgICBpZiAoIWRvY3VtZW50KQotICAgICAgICByZXR1cm4gMDsKKyAgICBEb2N1
bWVudCYgZG9jdW1lbnQgPSBtX2ZyYW1lLT5kb2N1bWVudCgpOworICAgIEFTU0VSVChkb2N1bWVu
dCk7CiAKLSAgICByZXR1cm4gZG9jdW1lbnQtPnRpbWluZygpOworICAgIHJldHVybiBkb2N1bWVu
dC50aW1pbmcoKTsKIH0KIAogRG9jdW1lbnRMb2FkVGltaW5nKiBQZXJmb3JtYW5jZVRpbWluZzo6
ZG9jdW1lbnRMb2FkVGltaW5nKCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bh
Z2UvUHJpbnRDb250ZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvUHJpbnRDb250ZXh0LmNw
cAppbmRleCBlM2ZkZGIwLi44ZWM4MGRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1ByaW50Q29udGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9QcmludENvbnRleHQu
Y3BwCkBAIC02MSw3ICs2MSw4IEBAIHZvaWQgUHJpbnRDb250ZXh0Ojpjb21wdXRlUGFnZVJlY3Rz
KGNvbnN0IEZsb2F0UmVjdCYgcHJpbnRSZWN0LCBmbG9hdCBoZWFkZXJIZWlnCiAgICAgbV9wYWdl
UmVjdHMuY2xlYXIoKTsKICAgICBvdXRQYWdlSGVpZ2h0ID0gMDsKIAotICAgIGlmICghbV9mcmFt
ZS0+ZG9jdW1lbnQoKSB8fCAhbV9mcmFtZS0+dmlldygpIHx8ICFtX2ZyYW1lLT5kb2N1bWVudCgp
LT5yZW5kZXJWaWV3KCkpCisgICAgQVNTRVJUKG1fZnJhbWUuZG9jdW1lbnQoKSk7CisgICAgaWYg
KCFtX2ZyYW1lLT52aWV3KCkgfHwgIW1fZnJhbWUtPmRvY3VtZW50KCkucmVuZGVyVmlldygpKQog
ICAgICAgICByZXR1cm47CiAKICAgICBpZiAodXNlclNjYWxlRmFjdG9yIDw9IDApIHsKQEAgLTY5
LDcgKzcwLDcgQEAgdm9pZCBQcmludENvbnRleHQ6OmNvbXB1dGVQYWdlUmVjdHMoY29uc3QgRmxv
YXRSZWN0JiBwcmludFJlY3QsIGZsb2F0IGhlYWRlckhlaWcKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIAotICAgIFJlbmRlclZpZXcqIHZpZXcgPSBtX2ZyYW1lLT5kb2N1bWVudCgpLT5yZW5kZXJW
aWV3KCk7CisgICAgUmVuZGVyVmlldyogdmlldyA9IG1fZnJhbWUtPmRvY3VtZW50KCkucmVuZGVy
VmlldygpOwogICAgIGNvbnN0IEludFJlY3QmIGRvY3VtZW50UmVjdCA9IHZpZXctPmRvY3VtZW50
UmVjdCgpOwogICAgIEZsb2F0U2l6ZSBwYWdlU2l6ZSA9IG1fZnJhbWUtPnJlc2l6ZVBhZ2VSZWN0
c0tlZXBpbmdSYXRpbyhGbG9hdFNpemUocHJpbnRSZWN0LndpZHRoKCksIHByaW50UmVjdC5oZWln
aHQoKSksIEZsb2F0U2l6ZShkb2N1bWVudFJlY3Qud2lkdGgoKSwgZG9jdW1lbnRSZWN0LmhlaWdo
dCgpKSk7CiAgICAgZmxvYXQgcGFnZVdpZHRoID0gcGFnZVNpemUud2lkdGgoKTsKQEAgLTk0LDEw
ICs5NSwxMSBAQCB2b2lkIFByaW50Q29udGV4dDo6Y29tcHV0ZVBhZ2VSZWN0c1dpdGhQYWdlU2l6
ZShjb25zdCBGbG9hdFNpemUmIHBhZ2VTaXplSW5QaXhlbAogCiB2b2lkIFByaW50Q29udGV4dDo6
Y29tcHV0ZVBhZ2VSZWN0c1dpdGhQYWdlU2l6ZUludGVybmFsKGNvbnN0IEZsb2F0U2l6ZSYgcGFn
ZVNpemVJblBpeGVscywgYm9vbCBhbGxvd0lubGluZURpcmVjdGlvblRpbGluZykKIHsKLSAgICBp
ZiAoIW1fZnJhbWUtPmRvY3VtZW50KCkgfHwgIW1fZnJhbWUtPnZpZXcoKSB8fCAhbV9mcmFtZS0+
ZG9jdW1lbnQoKS0+cmVuZGVyVmlldygpKQorICAgIEFTU0VSVChtX2ZyYW1lLT5kb2N1bWVudCgp
KTsKKyAgICBpZiAoIW1fZnJhbWUtPnZpZXcoKSB8fCAhbV9mcmFtZS0+ZG9jdW1lbnQoKS5yZW5k
ZXJWaWV3KCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIFJlbmRlclZpZXcqIHZpZXcgPSBtX2Zy
YW1lLT5kb2N1bWVudCgpLT5yZW5kZXJWaWV3KCk7CisgICAgUmVuZGVyVmlldyogdmlldyA9IG1f
ZnJhbWUtPmRvY3VtZW50KCkucmVuZGVyVmlldygpOwogCiAgICAgSW50UmVjdCBkb2NSZWN0ID0g
dmlldy0+ZG9jdW1lbnRSZWN0KCk7CiAKQEAgLTE3OSw4ICsxODEsOSBAQCBmbG9hdCBQcmludENv
bnRleHQ6OmNvbXB1dGVBdXRvbWF0aWNTY2FsZUZhY3Rvcihjb25zdCBGbG9hdFNpemUmIGF2YWls
YWJsZVBhcGVyUwogICAgICAgICByZXR1cm4gMTsKIAogICAgIGJvb2wgdXNlVmlld1dpZHRoID0g
dHJ1ZTsKLSAgICBpZiAobV9mcmFtZS0+ZG9jdW1lbnQoKSAmJiBtX2ZyYW1lLT5kb2N1bWVudCgp
LT5yZW5kZXJWaWV3KCkpCi0gICAgICAgIHVzZVZpZXdXaWR0aCA9IG1fZnJhbWUtPmRvY3VtZW50
KCktPnJlbmRlclZpZXcoKS0+c3R5bGUoKS5pc0hvcml6b250YWxXcml0aW5nTW9kZSgpOworICAg
IEFTU0VSVChtX2ZyYW1lLT5kb2N1bWVudCgpKTsKKyAgICBpZiAobV9mcmFtZS0+ZG9jdW1lbnQo
KS5yZW5kZXJWaWV3KCkpCisgICAgICAgIHVzZVZpZXdXaWR0aCA9IG1fZnJhbWUtPmRvY3VtZW50
KCkucmVuZGVyVmlldygpLT5zdHlsZSgpLmlzSG9yaXpvbnRhbFdyaXRpbmdNb2RlKCk7CiAKICAg
ICBmbG9hdCB2aWV3TG9naWNhbFdpZHRoID0gdXNlVmlld1dpZHRoID8gbV9mcmFtZS0+dmlldygp
LT5jb250ZW50c1dpZHRoKCkgOiBtX2ZyYW1lLT52aWV3KCktPmNvbnRlbnRzSGVpZ2h0KCk7CiAg
ICAgaWYgKHZpZXdMb2dpY2FsV2lkdGggPCAxKQpAQCAtMjYzLDcgKzI2Niw3IEBAIGludCBQcmlu
dENvbnRleHQ6OnBhZ2VOdW1iZXJGb3JFbGVtZW50KEVsZW1lbnQqIGVsZW1lbnQsIGNvbnN0IEZs
b2F0U2l6ZSYgcGFnZVNpCiAKIFN0cmluZyBQcmludENvbnRleHQ6OnBhZ2VQcm9wZXJ0eShGcmFt
ZSogZnJhbWUsIGNvbnN0IGNoYXIqIHByb3BlcnR5TmFtZSwgaW50IHBhZ2VOdW1iZXIpCiB7Ci0g
ICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gZnJhbWUtPmRvY3VtZW50KCk7CisgICAgRG9jdW1lbnQq
IGRvY3VtZW50ID0gJmZyYW1lLT5kb2N1bWVudCgpOwogICAgIFByaW50Q29udGV4dCBwcmludENv
bnRleHQoZnJhbWUpOwogICAgIHByaW50Q29udGV4dC5iZWdpbig4MDApOyAvLyBBbnkgd2lkdGgg
aXMgT0sgaGVyZS4KICAgICBkb2N1bWVudC0+dXBkYXRlTGF5b3V0KCk7CkBAIC0yODksMTMgKzI5
MiwxMyBAQCBTdHJpbmcgUHJpbnRDb250ZXh0OjpwYWdlUHJvcGVydHkoRnJhbWUqIGZyYW1lLCBj
b25zdCBjaGFyKiBwcm9wZXJ0eU5hbWUsIGludCBwYQogCiBib29sIFByaW50Q29udGV4dDo6aXNQ
YWdlQm94VmlzaWJsZShGcmFtZSogZnJhbWUsIGludCBwYWdlTnVtYmVyKQogewotICAgIHJldHVy
biBmcmFtZS0+ZG9jdW1lbnQoKS0+aXNQYWdlQm94VmlzaWJsZShwYWdlTnVtYmVyKTsKKyAgICBy
ZXR1cm4gZnJhbWUtPmRvY3VtZW50KCkuaXNQYWdlQm94VmlzaWJsZShwYWdlTnVtYmVyKTsKIH0K
IAogU3RyaW5nIFByaW50Q29udGV4dDo6cGFnZVNpemVBbmRNYXJnaW5zSW5QaXhlbHMoRnJhbWUq
IGZyYW1lLCBpbnQgcGFnZU51bWJlciwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0LCBpbnQgbWFyZ2lu
VG9wLCBpbnQgbWFyZ2luUmlnaHQsIGludCBtYXJnaW5Cb3R0b20sIGludCBtYXJnaW5MZWZ0KQog
ewogICAgIEludFNpemUgcGFnZVNpemUod2lkdGgsIGhlaWdodCk7Ci0gICAgZnJhbWUtPmRvY3Vt
ZW50KCktPnBhZ2VTaXplQW5kTWFyZ2luc0luUGl4ZWxzKHBhZ2VOdW1iZXIsIHBhZ2VTaXplLCBt
YXJnaW5Ub3AsIG1hcmdpblJpZ2h0LCBtYXJnaW5Cb3R0b20sIG1hcmdpbkxlZnQpOworICAgIGZy
YW1lLT5kb2N1bWVudCgpLnBhZ2VTaXplQW5kTWFyZ2luc0luUGl4ZWxzKHBhZ2VOdW1iZXIsIHBh
Z2VTaXplLCBtYXJnaW5Ub3AsIG1hcmdpblJpZ2h0LCBtYXJnaW5Cb3R0b20sIG1hcmdpbkxlZnQp
OwogCiAgICAgcmV0dXJuICIoIiArIFN0cmluZzo6bnVtYmVyKHBhZ2VTaXplLndpZHRoKCkpICsg
IiwgIiArIFN0cmluZzo6bnVtYmVyKHBhZ2VTaXplLmhlaWdodCgpKSArICIpICIgKwogICAgICAg
ICAgICBTdHJpbmc6Om51bWJlcihtYXJnaW5Ub3ApICsgJyAnICsgU3RyaW5nOjpudW1iZXIobWFy
Z2luUmlnaHQpICsgJyAnICsgU3RyaW5nOjpudW1iZXIobWFyZ2luQm90dG9tKSArICcgJyArIFN0
cmluZzo6bnVtYmVyKG1hcmdpbkxlZnQpOwpAQCAtMzAzLDcgKzMwNiw3IEBAIFN0cmluZyBQcmlu
dENvbnRleHQ6OnBhZ2VTaXplQW5kTWFyZ2luc0luUGl4ZWxzKEZyYW1lKiBmcmFtZSwgaW50IHBh
Z2VOdW1iZXIsIGluCiAKIGludCBQcmludENvbnRleHQ6Om51bWJlck9mUGFnZXMoRnJhbWUqIGZy
YW1lLCBjb25zdCBGbG9hdFNpemUmIHBhZ2VTaXplSW5QaXhlbHMpCiB7Ci0gICAgZnJhbWUtPmRv
Y3VtZW50KCktPnVwZGF0ZUxheW91dCgpOworICAgIGZyYW1lLT5kb2N1bWVudCgpLnVwZGF0ZUxh
eW91dCgpOwogCiAgICAgRmxvYXRSZWN0IHBhZ2VSZWN0KEZsb2F0UG9pbnQoMCwgMCksIHBhZ2VT
aXplSW5QaXhlbHMpOwogICAgIFByaW50Q29udGV4dCBwcmludENvbnRleHQoZnJhbWUpOwpAQCAt
MzE3LDEwICszMjAsMTAgQEAgaW50IFByaW50Q29udGV4dDo6bnVtYmVyT2ZQYWdlcyhGcmFtZSog
ZnJhbWUsIGNvbnN0IEZsb2F0U2l6ZSYgcGFnZVNpemVJblBpeGVscykKIAogdm9pZCBQcmludENv
bnRleHQ6OnNwb29sQWxsUGFnZXNXaXRoQm91bmRhcmllcyhGcmFtZSogZnJhbWUsIEdyYXBoaWNz
Q29udGV4dCYgZ3JhcGhpY3NDb250ZXh0LCBjb25zdCBGbG9hdFNpemUmIHBhZ2VTaXplSW5QaXhl
bHMpCiB7Ci0gICAgaWYgKCFmcmFtZS0+ZG9jdW1lbnQoKSB8fCAhZnJhbWUtPnZpZXcoKSB8fCAh
ZnJhbWUtPmRvY3VtZW50KCktPnJlbmRlclZpZXcoKSkKKyAgICBpZiAoIWZyYW1lLT52aWV3KCkg
fHwgIWZyYW1lLT5kb2N1bWVudCgpLnJlbmRlclZpZXcoKSkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgZnJhbWUtPmRvY3VtZW50KCktPnVwZGF0ZUxheW91dCgpOworICAgIGZyYW1lLT5kb2N1bWVu
dCgpLnVwZGF0ZUxheW91dCgpOwogCiAgICAgUHJpbnRDb250ZXh0IHByaW50Q29udGV4dChmcmFt
ZSk7CiAgICAgcHJpbnRDb250ZXh0LmJlZ2luKHBhZ2VTaXplSW5QaXhlbHMud2lkdGgoKSwgcGFn
ZVNpemVJblBpeGVscy5oZWlnaHQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L1NldHRpbmdzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuY3BwCmluZGV4IDk4
ZjcwOWIuLjFiYjU5NmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3Mu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvU2V0dGluZ3MuY3BwCkBAIC01NCw4ICs1NCw4
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIHN0YXRpYyB2b2lkIHNldEltYWdlTG9hZGluZ1NldHRp
bmdzKFBhZ2UqIHBhZ2UpCiB7CiAgICAgZm9yIChGcmFtZSogZnJhbWUgPSAmcGFnZS0+bWFpbkZy
YW1lKCk7IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50cmVlKCkudHJhdmVyc2VOZXh0KCkpIHsKLSAg
ICAgICAgZnJhbWUtPmRvY3VtZW50KCktPmNhY2hlZFJlc291cmNlTG9hZGVyKCktPnNldEltYWdl
c0VuYWJsZWQocGFnZS0+c2V0dGluZ3MoKS5hcmVJbWFnZXNFbmFibGVkKCkpOwotICAgICAgICBm
cmFtZS0+ZG9jdW1lbnQoKS0+Y2FjaGVkUmVzb3VyY2VMb2FkZXIoKS0+c2V0QXV0b0xvYWRJbWFn
ZXMocGFnZS0+c2V0dGluZ3MoKS5sb2Fkc0ltYWdlc0F1dG9tYXRpY2FsbHkoKSk7CisgICAgICAg
IGZyYW1lLT5kb2N1bWVudCgpLmNhY2hlZFJlc291cmNlTG9hZGVyKCktPnNldEltYWdlc0VuYWJs
ZWQocGFnZS0+c2V0dGluZ3MoKS5hcmVJbWFnZXNFbmFibGVkKCkpOworICAgICAgICBmcmFtZS0+
ZG9jdW1lbnQoKS5jYWNoZWRSZXNvdXJjZUxvYWRlcigpLT5zZXRBdXRvTG9hZEltYWdlcyhwYWdl
LT5zZXR0aW5ncygpLmxvYWRzSW1hZ2VzQXV0b21hdGljYWxseSgpKTsKICAgICB9CiB9CiAKQEAg
LTM0Niw3ICszNDYsNyBAQCB2b2lkIFNldHRpbmdzOjpzZXRUZXh0QXV0b3NpemluZ0ZvbnRTY2Fs
ZUZhY3RvcihmbG9hdCBmb250U2NhbGVGYWN0b3IpCiAKICAgICAvLyBGSVhNRTogSSB3b25kZXIg
aWYgdGhpcyBuZWVkcyB0byB0cmF2ZXJzZSBmcmFtZXMgbGlrZSBpbiBXZWJWaWV3SW1wbDo6cmVz
aXplLCBvciB3aGV0aGVyIHRoZXJlIGlzIG9ubHkgb25lIGRvY3VtZW50IHBlciBTZXR0aW5ncyBp
bnN0YW5jZT8KICAgICBmb3IgKEZyYW1lKiBmcmFtZSA9IG1fcGFnZS0+bWFpbkZyYW1lKCk7IGZy
YW1lOyBmcmFtZSA9IGZyYW1lLT50cmVlKCkudHJhdmVyc2VOZXh0KCkpCi0gICAgICAgIGZyYW1l
LT5kb2N1bWVudCgpLT50ZXh0QXV0b3NpemVyKCktPnJlY2FsY3VsYXRlTXVsdGlwbGllcnMoKTsK
KyAgICAgICAgZnJhbWUtPmRvY3VtZW50KCkudGV4dEF1dG9zaXplcigpLT5yZWNhbGN1bGF0ZU11
bHRpcGxpZXJzKCk7CiAKICAgICBtX3BhZ2UtPnNldE5lZWRzUmVjYWxjU3R5bGVJbkFsbEZyYW1l
cygpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9TcGF0aWFsTmF2aWdhdGlv
bi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NwYXRpYWxOYXZpZ2F0aW9uLmNwcAppbmRleCBi
OGM4ODUxLi45OTNlZThhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NwYXRpYWxO
YXZpZ2F0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1NwYXRpYWxOYXZpZ2F0aW9u
LmNwcApAQCAtMzM2LDcgKzMzNiw3IEBAIGJvb2wgc2Nyb2xsSW5EaXJlY3Rpb24oRnJhbWUqIGZy
YW1lLCBGb2N1c0RpcmVjdGlvbiBkaXJlY3Rpb24pCiB7CiAgICAgQVNTRVJUKGZyYW1lKTsKIAot
ICAgIGlmIChmcmFtZSAmJiBjYW5TY3JvbGxJbkRpcmVjdGlvbihmcmFtZS0+ZG9jdW1lbnQoKSwg
ZGlyZWN0aW9uKSkgeworICAgIGlmIChmcmFtZSAmJiBjYW5TY3JvbGxJbkRpcmVjdGlvbigmZnJh
bWUtPmRvY3VtZW50KCksIGRpcmVjdGlvbikpIHsKICAgICAgICAgTGF5b3V0VW5pdCBkeCA9IDA7
CiAgICAgICAgIExheW91dFVuaXQgZHkgPSAwOwogICAgICAgICBzd2l0Y2ggKGRpcmVjdGlvbikg
ewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyQ29udGVudENvbnRyb2xsZXIu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS9Vc2VyQ29udGVudENvbnRyb2xsZXIuY3BwCmluZGV4
IDk1ZmE1ZmQuLmZiODg4YjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvVXNlckNv
bnRlbnRDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL1VzZXJDb250ZW50
Q29udHJvbGxlci5jcHAKQEAgLTE2NSw4ICsxNjUsOCBAQCB2b2lkIFVzZXJDb250ZW50Q29udHJv
bGxlcjo6aW52YWxpZGF0ZUluamVjdGVkU3R5bGVTaGVldENhY2hlSW5BbGxGcmFtZXMoKQogewog
ICAgIGZvciAoYXV0byYgcGFnZSA6IG1fcGFnZXMpIHsKICAgICAgICAgZm9yIChGcmFtZSogZnJh
bWUgPSAmcGFnZS0+bWFpbkZyYW1lKCk7IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50cmVlKCkudHJh
dmVyc2VOZXh0KCkpIHsKLSAgICAgICAgICAgIGZyYW1lLT5kb2N1bWVudCgpLT5zdHlsZVNoZWV0
Q29sbGVjdGlvbigpLmludmFsaWRhdGVJbmplY3RlZFN0eWxlU2hlZXRDYWNoZSgpOwotICAgICAg
ICAgICAgZnJhbWUtPmRvY3VtZW50KCktPnN0eWxlUmVzb2x2ZXJDaGFuZ2VkKERlZmVyUmVjYWxj
U3R5bGUpOworICAgICAgICAgICAgZnJhbWUtPmRvY3VtZW50KCkuc3R5bGVTaGVldENvbGxlY3Rp
b24oKS5pbnZhbGlkYXRlSW5qZWN0ZWRTdHlsZVNoZWV0Q2FjaGUoKTsKKyAgICAgICAgICAgIGZy
YW1lLT5kb2N1bWVudCgpLnN0eWxlUmVzb2x2ZXJDaGFuZ2VkKERlZmVyUmVjYWxjU3R5bGUpOwog
ICAgICAgICB9CiAgICAgfQogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS9hbmlt
YXRpb24vQW5pbWF0aW9uQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1h
dGlvbi9BbmltYXRpb25Db250cm9sbGVyLmNwcAppbmRleCA3NDZkNWU1Li4yZDMyYTM2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9BbmltYXRpb25Db250cm9sbGVy
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2FuaW1hdGlvbi9BbmltYXRpb25Db250cm9s
bGVyLmNwcApAQCAtMTExLDcgKzExMSw3IEBAIGRvdWJsZSBBbmltYXRpb25Db250cm9sbGVyUHJp
dmF0ZTo6dXBkYXRlQW5pbWF0aW9ucyhTZXRDaGFuZ2VkIGNhbGxTZXRDaGFuZ2VkLyoKICAgICB9
CiAKICAgICBpZiAoY2FsbGVkU2V0Q2hhbmdlZCkKLSAgICAgICAgbV9mcmFtZS5kb2N1bWVudCgp
LT51cGRhdGVTdHlsZUlmTmVlZGVkKCk7CisgICAgICAgIG1fZnJhbWUuZG9jdW1lbnQoKS51cGRh
dGVTdHlsZUlmTmVlZGVkKCk7CiAKICAgICByZXR1cm4gdGltZVRvTmV4dFNlcnZpY2U7CiB9CkBA
IC0xODMsNyArMTgzLDcgQEAgdm9pZCBBbmltYXRpb25Db250cm9sbGVyUHJpdmF0ZTo6ZmlyZUV2
ZW50c0FuZFVwZGF0ZVN0eWxlKCkKICAgICBtX2VsZW1lbnRDaGFuZ2VzVG9EaXNwYXRjaC5jbGVh
cigpOwogCiAgICAgaWYgKHVwZGF0ZVN0eWxlKQotICAgICAgICBtX2ZyYW1lLmRvY3VtZW50KCkt
PnVwZGF0ZVN0eWxlSWZOZWVkZWQoKTsKKyAgICAgICAgbV9mcmFtZS5kb2N1bWVudCgpLnVwZGF0
ZVN0eWxlSWZOZWVkZWQoKTsKIH0KIAogdm9pZCBBbmltYXRpb25Db250cm9sbGVyUHJpdmF0ZTo6
c3RhcnRVcGRhdGVTdHlsZUlmTmVlZGVkRGlzcGF0Y2hlcigpCkBAIC0yMTcsNyArMjE3LDcgQEAg
dm9pZCBBbmltYXRpb25Db250cm9sbGVyUHJpdmF0ZTo6YW5pbWF0aW9uRnJhbWVDYWxsYmFja0Zp
cmVkKCkKICAgICBkb3VibGUgdGltZVRvTmV4dFNlcnZpY2UgPSB1cGRhdGVBbmltYXRpb25zKENh
bGxTZXRDaGFuZ2VkKTsKIAogICAgIGlmICh0aW1lVG9OZXh0U2VydmljZSA+PSAwKQotICAgICAg
ICBtX2ZyYW1lLmRvY3VtZW50KCktPnZpZXcoKS0+c2NoZWR1bGVBbmltYXRpb24oKTsKKyAgICAg
ICAgbV9mcmFtZS5kb2N1bWVudCgpLnZpZXcoKS0+c2NoZWR1bGVBbmltYXRpb24oKTsKIH0KICNl
bmRpZgogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL2lvcy9FdmVudEhhbmRsZXJJ
T1MubW0gYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2lvcy9FdmVudEhhbmRsZXJJT1MubW0KaW5kZXgg
Y2ZiNmZhNmEuLjljOGNiMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvaW9zL0V2
ZW50SGFuZGxlcklPUy5tbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL2lvcy9FdmVudEhhbmRs
ZXJJT1MubW0KQEAgLTQ3NywxNCArNDc3LDE0IEBAIHZvaWQgRXZlbnRIYW5kbGVyOjptb3VzZU1v
dmVkKFdlYkV2ZW50ICpldmVudCkKIAogICAgIEJFR0lOX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsK
IAotICAgIG1fZnJhbWUuZG9jdW1lbnQoKS0+dXBkYXRlU3R5bGVJZk5lZWRlZCgpOworICAgIG1f
ZnJhbWUuZG9jdW1lbnQoKS51cGRhdGVTdHlsZUlmTmVlZGVkKCk7CiAKICAgICBXS0JlZ2luT2Jz
ZXJ2aW5nQ29udGVudENoYW5nZXModHJ1ZSk7CiAgICAgQ3VycmVudEV2ZW50U2NvcGUgc2NvcGUo
ZXZlbnQpOwogICAgIGV2ZW50Lndhc0hhbmRsZWQgPSBtb3VzZU1vdmVkKGN1cnJlbnRQbGF0Zm9y
bU1vdXNlRXZlbnQoKSk7CiAgICAgCiAgICAgLy8gRklYTUU6IFdoeSBpcyB0aGlzIGhlcmU/Ci0g
ICAgbV9mcmFtZS5kb2N1bWVudCgpLT51cGRhdGVTdHlsZUlmTmVlZGVkKCk7CisgICAgbV9mcmFt
ZS5kb2N1bWVudCgpLnVwZGF0ZVN0eWxlSWZOZWVkZWQoKTsKICAgICBXS1N0b3BPYnNlcnZpbmdD
b250ZW50Q2hhbmdlcygpOwogCiAgICAgRU5EX0JMT0NLX09CSkNfRVhDRVBUSU9OUzsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvaW9zL0ZyYW1lSU9TLm1tIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9pb3MvRnJhbWVJT1MubW0KaW5kZXggNGIwMzdkOS4uMGU1MjExNSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGFnZS9pb3MvRnJhbWVJT1MubW0KKysrIGIvU291cmNlL1dlYkNv
cmUvcGFnZS9pb3MvRnJhbWVJT1MubW0KQEAgLTY3Niw3ICs2NzYsNyBAQCB2b2lkIEZyYW1lOjpk
aXNwYXRjaFBhZ2VIaWRlRXZlbnRCZWZvcmVQYXVzZSgpCiAgICAgICAgIHJldHVybjsKIAogICAg
IGZvciAoRnJhbWUqIGZyYW1lID0gdGhpczsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyZWUoKS50
cmF2ZXJzZU5leHQodGhpcykpCi0gICAgICAgIGZyYW1lLT5kb2N1bWVudCgpLT5kb21XaW5kb3co
KS0+ZGlzcGF0Y2hFdmVudChQYWdlVHJhbnNpdGlvbkV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygp
LnBhZ2VoaWRlRXZlbnQsIHRydWUpLCBkb2N1bWVudCgpKTsKKyAgICAgICAgZnJhbWUtPmRvY3Vt
ZW50KCkuZG9tV2luZG93KCktPmRpc3BhdGNoRXZlbnQoUGFnZVRyYW5zaXRpb25FdmVudDo6Y3Jl
YXRlKGV2ZW50TmFtZXMoKS5wYWdlaGlkZUV2ZW50LCB0cnVlKSwgZG9jdW1lbnQoKSk7CiB9CiAK
IHZvaWQgRnJhbWU6OmRpc3BhdGNoUGFnZVNob3dFdmVudEJlZm9yZVJlc3VtZSgpCkBAIC02ODYs
NyArNjg2LDcgQEAgdm9pZCBGcmFtZTo6ZGlzcGF0Y2hQYWdlU2hvd0V2ZW50QmVmb3JlUmVzdW1l
KCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgZm9yIChGcmFtZSogZnJhbWUgPSB0aGlzOyBmcmFt
ZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgpLnRyYXZlcnNlTmV4dCh0aGlzKSkKLSAgICAgICAgZnJh
bWUtPmRvY3VtZW50KCktPmRvbVdpbmRvdygpLT5kaXNwYXRjaEV2ZW50KFBhZ2VUcmFuc2l0aW9u
RXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkucGFnZXNob3dFdmVudCwgdHJ1ZSksIGRvY3VtZW50
KCkpOworICAgICAgICBmcmFtZS0+ZG9jdW1lbnQoKS5kb21XaW5kb3coKS0+ZGlzcGF0Y2hFdmVu
dChQYWdlVHJhbnNpdGlvbkV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLnBhZ2VzaG93RXZlbnQs
IHRydWUpLCBkb2N1bWVudCgpKTsKIH0KIAogdm9pZCBGcmFtZTo6c2V0UmFuZ2VkU2VsZWN0aW9u
QmFzZVRvQ3VycmVudFNlbGVjdGlvbigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wYWdl
L3Njcm9sbGluZy9Bc3luY1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BhZ2Uvc2Nyb2xsaW5nL0FzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3IuY3BwCmluZGV4IDllN2E5
YzkuLjhkOTQxODEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Nyb2xsaW5nL0Fz
eW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvc2Ny
b2xsaW5nL0FzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3IuY3BwCkBAIC0xNDEsMTIgKzE0MSwxMiBA
QCBib29sIEFzeW5jU2Nyb2xsaW5nQ29vcmRpbmF0b3I6OnJlcXVlc3RTY3JvbGxQb3NpdGlvblVw
ZGF0ZShGcmFtZVZpZXcqIGZyYW1lVmlldwogICAgIGlmICghY29vcmRpbmF0ZXNTY3JvbGxpbmdG
b3JGcmFtZVZpZXcoZnJhbWVWaWV3KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgaWYg
KGZyYW1lVmlldy0+aW5Qcm9ncmFtbWF0aWNTY3JvbGwoKSB8fCBmcmFtZVZpZXctPmZyYW1lKCku
ZG9jdW1lbnQoKS0+aW5QYWdlQ2FjaGUoKSkKKyAgICBpZiAoZnJhbWVWaWV3LT5pblByb2dyYW1t
YXRpY1Njcm9sbCgpIHx8IGZyYW1lVmlldy0+ZnJhbWUoKS5kb2N1bWVudCgpLmluUGFnZUNhY2hl
KCkpCiAgICAgICAgIHVwZGF0ZVNjcm9sbFBvc2l0aW9uQWZ0ZXJBc3luY1Njcm9sbChmcmFtZVZp
ZXctPnNjcm9sbExheWVySUQoKSwgc2Nyb2xsUG9zaXRpb24sIGZyYW1lVmlldy0+aW5Qcm9ncmFt
bWF0aWNTY3JvbGwoKSwgU2V0U2Nyb2xsaW5nTGF5ZXJQb3NpdGlvbik7CiAKICAgICAvLyBJZiB0
aGlzIGZyYW1lIHZpZXcncyBkb2N1bWVudCBpcyBiZWluZyBwdXQgaW50byB0aGUgcGFnZSBjYWNo
ZSwgd2UgZG9uJ3Qgd2FudCB0byB1cGRhdGUgb3VyCiAgICAgLy8gbWFpbiBmcmFtZSBzY3JvbGwg
cG9zaXRpb24uIEp1c3QgbGV0IHRoZSBGcmFtZVZpZXcgdGhpbmsgdGhhdCB3ZSBkaWQuCi0gICAg
aWYgKGZyYW1lVmlldy0+ZnJhbWUoKS5kb2N1bWVudCgpLT5pblBhZ2VDYWNoZSgpKQorICAgIGlm
IChmcmFtZVZpZXctPmZyYW1lKCkuZG9jdW1lbnQoKS5pblBhZ2VDYWNoZSgpKQogICAgICAgICBy
ZXR1cm4gdHJ1ZTsKIAogICAgIFNjcm9sbGluZ1N0YXRlU2Nyb2xsaW5nTm9kZSogc3RhdGVOb2Rl
ID0gdG9TY3JvbGxpbmdTdGF0ZVNjcm9sbGluZ05vZGUobV9zY3JvbGxpbmdTdGF0ZVRyZWUtPnN0
YXRlTm9kZUZvcklEKGZyYW1lVmlldy0+c2Nyb2xsTGF5ZXJJRCgpKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdDb29yZGluYXRvci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wYWdlL3Njcm9sbGluZy9TY3JvbGxpbmdDb29yZGluYXRvci5jcHAKaW5k
ZXggNzcwMWJjNi4uNjZhMzk2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGFnZS9zY3Jv
bGxpbmcvU2Nyb2xsaW5nQ29vcmRpbmF0b3IuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BhZ2Uv
c2Nyb2xsaW5nL1Njcm9sbGluZ0Nvb3JkaW5hdG9yLmNwcApAQCAtMTA0LDcgKzEwNCw3IEBAIFJl
Z2lvbiBTY3JvbGxpbmdDb29yZGluYXRvcjo6Y29tcHV0ZU5vbkZhc3RTY3JvbGxhYmxlUmVnaW9u
KGNvbnN0IEZyYW1lKiBmcmFtZSwKICAgICBBU1NFUlQoZnJhbWUtPmlzTWFpbkZyYW1lKCkpOwog
ICAgIFVOVVNFRF9QQVJBTShmcmFtZUxvY2F0aW9uKTsKIAotICAgIERvY3VtZW50KiBkb2N1bWVu
dCA9IGZyYW1lLT5kb2N1bWVudCgpOworICAgIERvY3VtZW50KiBkb2N1bWVudCA9ICZmcmFtZS0+
ZG9jdW1lbnQoKTsKICAgICBpZiAoIWRvY3VtZW50KQogICAgICAgICByZXR1cm4gUmVnaW9uKCk7
CiAKQEAgLTE1OCw3ICsxNTgsNyBAQCB1bnNpZ25lZCBTY3JvbGxpbmdDb29yZGluYXRvcjo6Y29t
cHV0ZUN1cnJlbnRXaGVlbEV2ZW50SGFuZGxlckNvdW50KCkKIAogICAgIGZvciAoRnJhbWUqIGZy
YW1lID0gJm1fcGFnZS0+bWFpbkZyYW1lKCk7IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50cmVlKCku
dHJhdmVyc2VOZXh0KCkpIHsKICAgICAgICAgaWYgKGZyYW1lLT5kb2N1bWVudCgpKQotICAgICAg
ICAgICAgd2hlZWxFdmVudEhhbmRsZXJDb3VudCArPSBmcmFtZS0+ZG9jdW1lbnQoKS0+d2hlZWxF
dmVudEhhbmRsZXJDb3VudCgpOworICAgICAgICAgICAgd2hlZWxFdmVudEhhbmRsZXJDb3VudCAr
PSBmcmFtZS0+ZG9jdW1lbnQoKS53aGVlbEV2ZW50SGFuZGxlckNvdW50KCk7CiAgICAgfQogCiAg
ICAgcmV0dXJuIHdoZWVsRXZlbnRIYW5kbGVyQ291bnQ7CkBAIC0zMTUsNyArMzE1LDcgQEAgU3lu
Y2hyb25vdXNTY3JvbGxpbmdSZWFzb25zIFNjcm9sbGluZ0Nvb3JkaW5hdG9yOjpzeW5jaHJvbm91
c1Njcm9sbGluZ1JlYXNvbnMoKQogICAgICAgICBzeW5jaHJvbm91c1Njcm9sbGluZ1JlYXNvbnMg
fD0gSGFzVmlld3BvcnRDb25zdHJhaW5lZE9iamVjdHNXaXRob3V0U3VwcG9ydGluZ0ZpeGVkTGF5
ZXJzOwogICAgIGlmIChzdXBwb3J0c0ZpeGVkUG9zaXRpb25MYXllcnMoKSAmJiBoYXNWaXNpYmxl
U2xvd1JlcGFpbnRWaWV3cG9ydENvbnN0cmFpbmVkT2JqZWN0cyhmcmFtZVZpZXcpKQogICAgICAg
ICBzeW5jaHJvbm91c1Njcm9sbGluZ1JlYXNvbnMgfD0gSGFzTm9uTGF5ZXJWaWV3cG9ydENvbnN0
cmFpbmVkT2JqZWN0czsKLSAgICBpZiAobV9wYWdlLT5tYWluRnJhbWUoKS5kb2N1bWVudCgpICYm
IG1fcGFnZS0+bWFpbkZyYW1lKCkuZG9jdW1lbnQoKS0+aXNJbWFnZURvY3VtZW50KCkpCisgICAg
aWYgKG1fcGFnZS0+bWFpbkZyYW1lKCkuZG9jdW1lbnQoKSAmJiBtX3BhZ2UtPm1haW5mcmFtZSgp
LmRvY3VtZW50KCkuaXNJbWFnZURvY3VtZW50KCkpCiAgICAgICAgIHN5bmNocm9ub3VzU2Nyb2xs
aW5nUmVhc29ucyB8PSBJc0ltYWdlRG9jdW1lbnQ7CiAKICAgICByZXR1cm4gc3luY2hyb25vdXNT
Y3JvbGxpbmdSZWFzb25zOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGFnZS93aW4vRnJh
bWVXaW4uY3BwIGIvU291cmNlL1dlYkNvcmUvcGFnZS93aW4vRnJhbWVXaW4uY3BwCmluZGV4IDYz
MDMwMGYuLjU5YWIyNzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BhZ2Uvd2luL0ZyYW1l
V2luLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wYWdlL3dpbi9GcmFtZVdpbi5jcHAKQEAgLTQ3
LDcgKzQ3LDcgQEAgdm9pZCBjb21wdXRlUGFnZVJlY3RzRm9yRnJhbWUoRnJhbWUqIGZyYW1lLCBj
b25zdCBJbnRSZWN0JiBwcmludFJlY3QsIGZsb2F0IGhlYWQKIAogR0RJT2JqZWN0PEhCSVRNQVA+
IGltYWdlRnJvbVNlbGVjdGlvbihGcmFtZSogZnJhbWUsIGJvb2wgZm9yY2VCbGFja1RleHQpCiB7
Ci0gICAgZnJhbWUtPmRvY3VtZW50KCktPnVwZGF0ZUxheW91dCgpOworICAgIGZyYW1lLT5kb2N1
bWVudCgpLnVwZGF0ZUxheW91dCgpOwogCiAgICAgZnJhbWUtPnZpZXcoKS0+c2V0UGFpbnRCZWhh
dmlvcihQYWludEJlaGF2aW9yU2VsZWN0aW9uT25seSB8IChmb3JjZUJsYWNrVGV4dCA/IFBhaW50
QmVoYXZpb3JGb3JjZUJsYWNrVGV4dCA6IDApKTsKICAgICBGbG9hdFJlY3QgZnIgPSBmcmFtZS0+
c2VsZWN0aW9uKCkuc2VsZWN0aW9uQm91bmRzKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9EcmFnSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vRHJhZ0lt
YWdlLmNwcAppbmRleCA4NmNhNGMxLi5mMjlhMTk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9EcmFnSW1hZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL0Ry
YWdJbWFnZS5jcHAKQEAgLTc1LDcgKzc1LDcgQEAgc3RydWN0IFNjb3BlZE5vZGVEcmFnRW5hYmxl
ciB7CiAgICAgewogICAgICAgICBpZiAobm9kZS5yZW5kZXJlcigpKQogICAgICAgICAgICAgbm9k
ZS5yZW5kZXJlcigpLT51cGRhdGVEcmFnU3RhdGUodHJ1ZSk7Ci0gICAgICAgIGZyYW1lLmRvY3Vt
ZW50KCktPnVwZGF0ZUxheW91dCgpOworICAgICAgICBmcmFtZS5kb2N1bWVudCgpLnVwZGF0ZUxh
eW91dCgpOwogICAgIH0KIAogICAgIH5TY29wZWROb2RlRHJhZ0VuYWJsZXIoKQpAQCAtMTQ3LDcg
KzE0Nyw3IEBAIHN0cnVjdCBTY29wZWRGcmFtZVNlbGVjdGlvblN0YXRlIHsKIAogRHJhZ0ltYWdl
UmVmIGNyZWF0ZURyYWdJbWFnZUZvclJhbmdlKEZyYW1lJiBmcmFtZSwgUmFuZ2UmIHJhbmdlLCBi
b29sIGZvcmNlQmxhY2tUZXh0KQogewotICAgIGZyYW1lLmRvY3VtZW50KCktPnVwZGF0ZUxheW91
dCgpOworICAgIGZyYW1lLmRvY3VtZW50KCkudXBkYXRlTGF5b3V0KCk7CiAgICAgUmVuZGVyVmll
dyogdmlldyA9IGZyYW1lLmNvbnRlbnRSZW5kZXJlcigpOwogICAgIGlmICghdmlldykKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL0RP
TU1pbWVUeXBlQXJyYXkuY3BwIGIvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9ET01NaW1lVHlwZUFy
cmF5LmNwcAppbmRleCA3ZDIxMjBkLi4xZjlmOWNjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbHVnaW5zL0RPTU1pbWVUeXBlQXJyYXkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsdWdp
bnMvRE9NTWltZVR5cGVBcnJheS5jcHAKQEAgLTEwMyw3ICsxMDMsNyBAQCBQbHVnaW5EYXRhKiBE
T01NaW1lVHlwZUFycmF5OjpnZXRQbHVnaW5EYXRhKCkgY29uc3QKICAgICBpZiAoIW1fZnJhbWUt
PmRvY3VtZW50KCkpCiAgICAgICAgIHJldHVybiBwbHVnaW5EYXRhOwogCi0gICAgSW5wdXRDdXJz
b3ImIGN1cnNvciA9IG1fZnJhbWUtPmRvY3VtZW50KCktPmlucHV0Q3Vyc29yKCk7CisgICAgSW5w
dXRDdXJzb3ImIGN1cnNvciA9IG1fZnJhbWUtPmRvY3VtZW50KCkuaW5wdXRDdXJzb3IoKTsKICAg
ICBpZiAoY3Vyc29yLmlzQ2FwdHVyaW5nKCkpCiAgICAgICAgIGN1cnNvci5hcHBlbmRJbnB1dDxG
ZXRjaFBsdWdpbkRhdGE+KHBsdWdpbkRhdGEpOwogICAgIGVsc2UgaWYgKGN1cnNvci5pc1JlcGxh
eWluZygpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL0RPTVBsdWdpbkFy
cmF5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvRE9NUGx1Z2luQXJyYXkuY3BwCmluZGV4
IGQzYTYzNzcuLmZiOGQwZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvRE9N
UGx1Z2luQXJyYXkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvRE9NUGx1Z2luQXJy
YXkuY3BwCkBAIC0xMDgsNyArMTA4LDcgQEAgUGx1Z2luRGF0YSogRE9NUGx1Z2luQXJyYXk6OnBs
dWdpbkRhdGEoKSBjb25zdAogICAgIGlmICghbV9mcmFtZS0+ZG9jdW1lbnQoKSkKICAgICAgICAg
cmV0dXJuIHBsdWdpbkRhdGE7CiAKLSAgICBJbnB1dEN1cnNvciYgY3Vyc29yID0gbV9mcmFtZS0+
ZG9jdW1lbnQoKS0+aW5wdXRDdXJzb3IoKTsKKyAgICBJbnB1dEN1cnNvciYgY3Vyc29yID0gbV9m
cmFtZS0+ZG9jdW1lbnQoKS5pbnB1dEN1cnNvcigpOwogICAgIGlmIChjdXJzb3IuaXNDYXB0dXJp
bmcoKSkKICAgICAgICAgY3Vyc29yLmFwcGVuZElucHV0PEZldGNoUGx1Z2luRGF0YT4ocGx1Z2lu
RGF0YSk7CiAgICAgZWxzZSBpZiAoY3Vyc29yLmlzUmVwbGF5aW5nKCkpIHsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsdWdpbnMvUGx1Z2luVmlldy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bHVnaW5zL1BsdWdpblZpZXcuY3BwCmluZGV4IDk0OGMzOTAuLmZiN2VjNzRiIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL1BsdWdpblZpZXcuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsdWdpbnMvUGx1Z2luVmlldy5jcHAKQEAgLTIyNCw3ICsyMjQsNyBAQCBib29sIFBsdWdp
blZpZXc6OnN0YXJ0T3JBZGRUb1Vuc3RhcnRlZExpc3QoKQogICAgIC8vIG91cnNlbHZlcy4gT3Ro
ZXJ3aXNlLCB0aGUgbG9hZGVyIHdpbGwgdHJ5IHRvIGRlbGl2ZXIgZGF0YSBiZWZvcmUgd2UndmUK
ICAgICAvLyBzdGFydGVkIHRoZSBwbHVnLWluLgogICAgIGlmICghbV9sb2FkTWFudWFsbHkgJiYg
IW1fcGFyZW50RnJhbWUtPnBhZ2UoKS0+Y2FuU3RhcnRNZWRpYSgpKSB7Ci0gICAgICAgIG1fcGFy
ZW50RnJhbWUtPmRvY3VtZW50KCktPmFkZE1lZGlhQ2FuU3RhcnRMaXN0ZW5lcih0aGlzKTsKKyAg
ICAgICAgbV9wYXJlbnRGcmFtZS0+ZG9jdW1lbnQoKS5hZGRNZWRpYUNhblN0YXJ0TGlzdGVuZXIo
dGhpcyk7CiAgICAgICAgIG1faXNXYWl0aW5nVG9TdGFydCA9IHRydWU7CiAgICAgICAgIHJldHVy
biB0cnVlOwogICAgIH0KQEAgLTI2NCw3ICsyNjQsNyBAQCBib29sIFBsdWdpblZpZXc6OnN0YXJ0
KCkKICAgICBtX2lzU3RhcnRlZCA9IHRydWU7CiAKICAgICBpZiAoIW1fdXJsLmlzRW1wdHkoKSAm
JiAhbV9sb2FkTWFudWFsbHkpIHsKLSAgICAgICAgRnJhbWVMb2FkUmVxdWVzdCBmcmFtZUxvYWRS
ZXF1ZXN0KG1fcGFyZW50RnJhbWUtPmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCkpOworICAg
ICAgICBGcmFtZUxvYWRSZXF1ZXN0IGZyYW1lTG9hZFJlcXVlc3QobV9wYXJlbnRGcmFtZS0+ZG9j
dW1lbnQoKS5zZWN1cml0eU9yaWdpbigpKTsKICAgICAgICAgZnJhbWVMb2FkUmVxdWVzdC5yZXNv
dXJjZVJlcXVlc3QoKS5zZXRIVFRQTWV0aG9kKCJHRVQiKTsKICAgICAgICAgZnJhbWVMb2FkUmVx
dWVzdC5yZXNvdXJjZVJlcXVlc3QoKS5zZXRVUkwobV91cmwpOwogICAgICAgICBsb2FkKGZyYW1l
TG9hZFJlcXVlc3QsIGZhbHNlLCAwKTsKQEAgLTMwMCw3ICszMDAsNyBAQCBQbHVnaW5WaWV3Ojp+
UGx1Z2luVmlldygpCiAgICAgICAgIGluc3RhbmNlTWFwKCkucmVtb3ZlKG1faW5zdGFuY2UpOwog
CiAgICAgaWYgKG1faXNXYWl0aW5nVG9TdGFydCkKLSAgICAgICAgbV9wYXJlbnRGcmFtZS0+ZG9j
dW1lbnQoKS0+cmVtb3ZlTWVkaWFDYW5TdGFydExpc3RlbmVyKHRoaXMpOworICAgICAgICBtX3Bh
cmVudEZyYW1lLT5kb2N1bWVudCgpLnJlbW92ZU1lZGlhQ2FuU3RhcnRMaXN0ZW5lcih0aGlzKTsK
IAogICAgIHN0b3AoKTsKIApAQCAtNTMzLDcgKzUzMyw3IEBAIE5QRXJyb3IgUGx1Z2luVmlldzo6
bG9hZChjb25zdCBGcmFtZUxvYWRSZXF1ZXN0JiBmcmFtZUxvYWRSZXF1ZXN0LCBib29sIHNlbmRO
b3RpCiAgICAgICAgIC8vIEZvciBzZWN1cml0eSByZWFzb25zLCBvbmx5IGFsbG93IEpTIHJlcXVl
c3RzIHRvIGJlIG1hZGUgb24gdGhlIGZyYW1lIHRoYXQgY29udGFpbnMgdGhlIHBsdWctaW4uCiAg
ICAgICAgIGlmICghdGFyZ2V0RnJhbWVOYW1lLmlzTnVsbCgpICYmIG1fcGFyZW50RnJhbWUtPnRy
ZWUoKS5maW5kKHRhcmdldEZyYW1lTmFtZSkgIT0gbV9wYXJlbnRGcmFtZSkKICAgICAgICAgICAg
IHJldHVybiBOUEVSUl9JTlZBTElEX1BBUkFNOwotICAgIH0gZWxzZSBpZiAoIW1fcGFyZW50RnJh
bWUtPmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCktPmNhbkRpc3BsYXkodXJsKSkKKyAgICB9
IGVsc2UgaWYgKCFtX3BhcmVudEZyYW1lLT5kb2N1bWVudCgpLnNlY3VyaXR5T3JpZ2luKCktPmNh
bkRpc3BsYXkodXJsKSkKICAgICAgICAgcmV0dXJuIE5QRVJSX0dFTkVSSUNfRVJST1I7CiAKICAg
ICBzY2hlZHVsZVJlcXVlc3QoYWRvcHRQdHIobmV3IFBsdWdpblJlcXVlc3QoZnJhbWVMb2FkUmVx
dWVzdCwgc2VuZE5vdGlmaWNhdGlvbiwgbm90aWZ5RGF0YSwgYXJlUG9wdXBzQWxsb3dlZCgpKSkp
OwpAQCAtNTU0LDIyICs1NTQsMjIgQEAgc3RhdGljIFVSTCBtYWtlVVJMKGNvbnN0IFVSTCYgYmFz
ZVVSTCwgY29uc3QgY2hhciogcmVsYXRpdmVVUkxTdHJpbmcpCiAKIE5QRXJyb3IgUGx1Z2luVmll
dzo6Z2V0VVJMTm90aWZ5KGNvbnN0IGNoYXIqIHVybCwgY29uc3QgY2hhciogdGFyZ2V0LCB2b2lk
KiBub3RpZnlEYXRhKQogewotICAgIEZyYW1lTG9hZFJlcXVlc3QgZnJhbWVMb2FkUmVxdWVzdCht
X3BhcmVudEZyYW1lLT5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpKTsKKyAgICBGcmFtZUxv
YWRSZXF1ZXN0IGZyYW1lTG9hZFJlcXVlc3QobV9wYXJlbnRGcmFtZS0+ZG9jdW1lbnQoKS5zZWN1
cml0eU9yaWdpbigpKTsKIAogICAgIGZyYW1lTG9hZFJlcXVlc3Quc2V0RnJhbWVOYW1lKHRhcmdl
dCk7CiAgICAgZnJhbWVMb2FkUmVxdWVzdC5yZXNvdXJjZVJlcXVlc3QoKS5zZXRIVFRQTWV0aG9k
KCJHRVQiKTsKLSAgICBmcmFtZUxvYWRSZXF1ZXN0LnJlc291cmNlUmVxdWVzdCgpLnNldFVSTCht
YWtlVVJMKG1fcGFyZW50RnJhbWUtPmRvY3VtZW50KCktPmJhc2VVUkwoKSwgdXJsKSk7CisgICAg
ZnJhbWVMb2FkUmVxdWVzdC5yZXNvdXJjZVJlcXVlc3QoKS5zZXRVUkwobWFrZVVSTChtX3BhcmVu
dEZyYW1lLT5kb2N1bWVudCgpLmJhc2VVUkwoKSwgdXJsKSk7CiAKICAgICByZXR1cm4gbG9hZChm
cmFtZUxvYWRSZXF1ZXN0LCB0cnVlLCBub3RpZnlEYXRhKTsKIH0KIAogTlBFcnJvciBQbHVnaW5W
aWV3OjpnZXRVUkwoY29uc3QgY2hhciogdXJsLCBjb25zdCBjaGFyKiB0YXJnZXQpCiB7Ci0gICAg
RnJhbWVMb2FkUmVxdWVzdCBmcmFtZUxvYWRSZXF1ZXN0KG1fcGFyZW50RnJhbWUtPmRvY3VtZW50
KCktPnNlY3VyaXR5T3JpZ2luKCkpOworICAgIEZyYW1lTG9hZFJlcXVlc3QgZnJhbWVMb2FkUmVx
dWVzdChtX3BhcmVudEZyYW1lLT5kb2N1bWVudCgpLnNlY3VyaXR5T3JpZ2luKCkpOwogCiAgICAg
ZnJhbWVMb2FkUmVxdWVzdC5zZXRGcmFtZU5hbWUodGFyZ2V0KTsKICAgICBmcmFtZUxvYWRSZXF1
ZXN0LnJlc291cmNlUmVxdWVzdCgpLnNldEhUVFBNZXRob2QoIkdFVCIpOwotICAgIGZyYW1lTG9h
ZFJlcXVlc3QucmVzb3VyY2VSZXF1ZXN0KCkuc2V0VVJMKG1ha2VVUkwobV9wYXJlbnRGcmFtZS0+
ZG9jdW1lbnQoKS0+YmFzZVVSTCgpLCB1cmwpKTsKKyAgICBmcmFtZUxvYWRSZXF1ZXN0LnJlc291
cmNlUmVxdWVzdCgpLnNldFVSTChtYWtlVVJMKG1fcGFyZW50RnJhbWUtPmRvY3VtZW50KCkuYmFz
ZVVSTCgpLCB1cmwpKTsKIAogICAgIHJldHVybiBsb2FkKGZyYW1lTG9hZFJlcXVlc3QsIGZhbHNl
LCAwKTsKIH0KQEAgLTg3Nyw3ICs4NzcsNyBAQCB2b2lkIFBsdWdpblZpZXc6OmZvY3VzUGx1Z2lu
RWxlbWVudCgpCiAgICAgaWYgKFBhZ2UqIHBhZ2UgPSBtX3BhcmVudEZyYW1lLT5wYWdlKCkpCiAg
ICAgICAgIHBhZ2UtPmZvY3VzQ29udHJvbGxlcigpLnNldEZvY3VzZWRFbGVtZW50KG1fZWxlbWVu
dCwgbV9wYXJlbnRGcmFtZSk7CiAgICAgZWxzZQotICAgICAgICBtX3BhcmVudEZyYW1lLT5kb2N1
bWVudCgpLT5zZXRGb2N1c2VkRWxlbWVudChtX2VsZW1lbnQpOworICAgICAgICBtX3BhcmVudEZy
YW1lLT5kb2N1bWVudCgpLnNldEZvY3VzZWRFbGVtZW50KG1fZWxlbWVudCk7CiB9CiAKIHZvaWQg
UGx1Z2luVmlldzo6ZGlkUmVjZWl2ZVJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJl
c3BvbnNlKQpAQCAtMTEzMCw3ICsxMTMwLDcgQEAgTlBFcnJvciBQbHVnaW5WaWV3OjpoYW5kbGVQ
b3N0KGNvbnN0IGNoYXIqIHVybCwgY29uc3QgY2hhciogdGFyZ2V0LCB1aW50MzJfdCBsZW4KICAg
ICBpZiAoIXVybCB8fCAhbGVuIHx8ICFidWYpCiAgICAgICAgIHJldHVybiBOUEVSUl9JTlZBTElE
X1BBUkFNOwogCi0gICAgRnJhbWVMb2FkUmVxdWVzdCBmcmFtZUxvYWRSZXF1ZXN0KG1fcGFyZW50
RnJhbWUtPmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCkpOworICAgIEZyYW1lTG9hZFJlcXVl
c3QgZnJhbWVMb2FkUmVxdWVzdChtX3BhcmVudEZyYW1lLT5kb2N1bWVudCgpLnNlY3VyaXR5T3Jp
Z2luKCkpOwogCiAgICAgSFRUUEhlYWRlck1hcCBoZWFkZXJGaWVsZHM7CiAgICAgVmVjdG9yPGNo
YXI+IGJ1ZmZlcjsKQEAgLTExNzQsNyArMTE3NCw3IEBAIE5QRXJyb3IgUGx1Z2luVmlldzo6aGFu
ZGxlUG9zdChjb25zdCBjaGFyKiB1cmwsIGNvbnN0IGNoYXIqIHRhcmdldCwgdWludDMyX3QgbGVu
CiAgICAgfQogCiAgICAgZnJhbWVMb2FkUmVxdWVzdC5yZXNvdXJjZVJlcXVlc3QoKS5zZXRIVFRQ
TWV0aG9kKCJQT1NUIik7Ci0gICAgZnJhbWVMb2FkUmVxdWVzdC5yZXNvdXJjZVJlcXVlc3QoKS5z
ZXRVUkwobWFrZVVSTChtX3BhcmVudEZyYW1lLT5kb2N1bWVudCgpLT5iYXNlVVJMKCksIHVybCkp
OworICAgIGZyYW1lTG9hZFJlcXVlc3QucmVzb3VyY2VSZXF1ZXN0KCkuc2V0VVJMKG1ha2VVUkwo
bV9wYXJlbnRGcmFtZS0+ZG9jdW1lbnQoKS5iYXNlVVJMKCksIHVybCkpOwogICAgIGZyYW1lTG9h
ZFJlcXVlc3QucmVzb3VyY2VSZXF1ZXN0KCkuYWRkSFRUUEhlYWRlckZpZWxkcyhoZWFkZXJGaWVs
ZHMpOwogICAgIGZyYW1lTG9hZFJlcXVlc3QucmVzb3VyY2VSZXF1ZXN0KCkuc2V0SFRUUEJvZHko
Rm9ybURhdGE6OmNyZWF0ZShwb3N0RGF0YSwgcG9zdERhdGFMZW5ndGgpKTsKICAgICBmcmFtZUxv
YWRSZXF1ZXN0LnNldEZyYW1lTmFtZSh0YXJnZXQpOwpAQCAtMTM3OSw3ICsxMzc5LDcgQEAgTlBF
cnJvciBQbHVnaW5WaWV3OjpnZXRWYWx1ZUZvclVSTChOUE5VUkxWYXJpYWJsZSB2YXJpYWJsZSwg
Y29uc3QgY2hhciogdXJsLCBjaGEKIAogICAgIHN3aXRjaCAodmFyaWFibGUpIHsKICAgICBjYXNl
IE5QTlVSTFZDb29raWU6IHsKLSAgICAgICAgVVJMIHUobV9wYXJlbnRGcmFtZS0+ZG9jdW1lbnQo
KS0+YmFzZVVSTCgpLCB1cmwpOworICAgICAgICBVUkwgdShtX3BhcmVudEZyYW1lLT5kb2N1bWVu
dCgpLmJhc2VVUkwoKSwgdXJsKTsKICAgICAgICAgaWYgKHUuaXNWYWxpZCgpKSB7CiAgICAgICAg
ICAgICBGcmFtZSogZnJhbWUgPSBnZXRGcmFtZShwYXJlbnRGcmFtZSgpLCBtX2VsZW1lbnQpOwog
ICAgICAgICAgICAgaWYgKGZyYW1lKSB7CkBAIC0xNDAxLDcgKzE0MDEsNyBAQCBOUEVycm9yIFBs
dWdpblZpZXc6OmdldFZhbHVlRm9yVVJMKE5QTlVSTFZhcmlhYmxlIHZhcmlhYmxlLCBjb25zdCBj
aGFyKiB1cmwsIGNoYQogICAgICAgICBicmVhazsKICAgICB9CiAgICAgY2FzZSBOUE5VUkxWUHJv
eHk6IHsKLSAgICAgICAgVVJMIHUobV9wYXJlbnRGcmFtZS0+ZG9jdW1lbnQoKS0+YmFzZVVSTCgp
LCB1cmwpOworICAgICAgICBVUkwgdShtX3BhcmVudEZyYW1lLT5kb2N1bWVudCgpLmJhc2VVUkwo
KSwgdXJsKTsKICAgICAgICAgaWYgKHUuaXNWYWxpZCgpKSB7CiAgICAgICAgICAgICBGcmFtZSog
ZnJhbWUgPSBnZXRGcmFtZShwYXJlbnRGcmFtZSgpLCBtX2VsZW1lbnQpOwogICAgICAgICAgICAg
Y29uc3QgRnJhbWVMb2FkZXIqIGZyYW1lTG9hZGVyID0gZnJhbWUgPyAmZnJhbWUtPmxvYWRlcigp
IDogMDsKQEAgLTE0NDAsNyArMTQ0MCw3IEBAIE5QRXJyb3IgUGx1Z2luVmlldzo6c2V0VmFsdWVG
b3JVUkwoTlBOVVJMVmFyaWFibGUgdmFyaWFibGUsIGNvbnN0IGNoYXIqIHVybCwgY29uCiAKICAg
ICBzd2l0Y2ggKHZhcmlhYmxlKSB7CiAgICAgY2FzZSBOUE5VUkxWQ29va2llOiB7Ci0gICAgICAg
IFVSTCB1KG1fcGFyZW50RnJhbWUtPmRvY3VtZW50KCktPmJhc2VVUkwoKSwgdXJsKTsKKyAgICAg
ICAgVVJMIHUobV9wYXJlbnRGcmFtZS0+ZG9jdW1lbnQoKS5iYXNlVVJMKCksIHVybCk7CiAgICAg
ICAgIGlmICh1LmlzVmFsaWQoKSkgewogICAgICAgICAgICAgY29uc3QgU3RyaW5nIGNvb2tpZVN0
ciA9IFN0cmluZzo6ZnJvbVVURjgodmFsdWUsIGxlbik7CiAgICAgICAgICAgICBGcmFtZSogZnJh
bWUgPSBnZXRGcmFtZShwYXJlbnRGcmFtZSgpLCBtX2VsZW1lbnQpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGx1Z2lucy9tYWMvUGx1Z2luVmlld01hYy5tbSBiL1NvdXJjZS9XZWJDb3Jl
L3BsdWdpbnMvbWFjL1BsdWdpblZpZXdNYWMubW0KaW5kZXggMTAwZTNiZi4uNzU0NWE1NCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGx1Z2lucy9tYWMvUGx1Z2luVmlld01hYy5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbHVnaW5zL21hYy9QbHVnaW5WaWV3TWFjLm1tCkBAIC00NDcsNyAr
NDQ3LDcgQEAgdm9pZCBQbHVnaW5WaWV3OjpoYW5kbGVNb3VzZUV2ZW50KE1vdXNlRXZlbnQqIGV2
ZW50KQogICAgICAgICAgICAgLy8gVGhlIHBsdWdpbiBuZWVkcyBmb2N1cyB0byByZWNlaXZlIGtl
eWJvYXJkIGV2ZW50cwogICAgICAgICAgICAgaWYgKFBhZ2UqIHBhZ2UgPSBtX3BhcmVudEZyYW1l
LT5wYWdlKCkpCiAgICAgICAgICAgICAgICAgcGFnZS0+Zm9jdXNDb250cm9sbGVyKCkuc2V0Rm9j
dXNlZEZyYW1lKG1fcGFyZW50RnJhbWUpOwotICAgICAgICAgICAgbV9wYXJlbnRGcmFtZS0+ZG9j
dW1lbnQoKS0+c2V0Rm9jdXNlZEVsZW1lbnQobV9lbGVtZW50KTsKKyAgICAgICAgICAgIG1fcGFy
ZW50RnJhbWUtPmRvY3VtZW50KCkuc2V0Rm9jdXNlZEVsZW1lbnQobV9lbGVtZW50KTsKICAgICAg
ICAgICAgIGJyZWFrOwogCiAgICAgICAgIGNhc2UgTlNMZWZ0TW91c2VVcDoKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZW51TGlzdC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTWVudUxpc3QuY3BwCmluZGV4IDMwYWE0ZWMuLmFlYmRlODUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJNZW51TGlzdC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlck1lbnVMaXN0LmNwcApAQCAtMzk1
LDcgKzM5NSw3IEBAIHZvaWQgUmVuZGVyTWVudUxpc3Q6OnZhbHVlQ2hhbmdlZCh1bnNpZ25lZCBs
aXN0SW5kZXgsIGJvb2wgZmlyZU9uQ2hhbmdlKQogewogICAgIC8vIENoZWNrIHRvIGVuc3VyZSBh
IHBhZ2UgbmF2aWdhdGlvbiBoYXMgbm90IG9jY3VycmVkIHdoaWxlCiAgICAgLy8gdGhlIHBvcHVw
IHdhcyB1cC4KLSAgICBpZiAoJmRvY3VtZW50KCkgIT0gZG9jdW1lbnQoKS5mcmFtZSgpLT5kb2N1
bWVudCgpKQorICAgIGlmICgmZG9jdW1lbnQoKSAhPSAmZG9jdW1lbnQoKS5mcmFtZSgpLT5kb2N1
bWVudCgpKQogICAgICAgICByZXR1cm47CiAKICAgICBzZWxlY3RFbGVtZW50KCkub3B0aW9uU2Vs
ZWN0ZWRCeVVzZXIoc2VsZWN0RWxlbWVudCgpLmxpc3RUb09wdGlvbkluZGV4KGxpc3RJbmRleCks
IGZpcmVPbkNoYW5nZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyVHJlZUFzVGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyVHJlZUFz
VGV4dC5jcHAKaW5kZXggYjg0MWUwNS4uMzFmMjM5OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlclRyZWVBc1RleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJUcmVlQXNUZXh0LmNwcApAQCAtODgyLDcgKzg4Miw3IEBAIFN0cmluZyBl
eHRlcm5hbFJlcHJlc2VudGF0aW9uKEZyYW1lKiBmcmFtZSwgUmVuZGVyQXNUZXh0QmVoYXZpb3Ig
YmVoYXZpb3IpCiAgICAgaWYgKGJlaGF2aW9yICYgUmVuZGVyQXNUZXh0UHJpbnRpbmdNb2RlKQog
ICAgICAgICBwcmludENvbnRleHQuYmVnaW4odG9SZW5kZXJCb3gocmVuZGVyZXIpLT53aWR0aCgp
KTsKICAgICBpZiAoIShiZWhhdmlvciAmIFJlbmRlckFzVGV4dERvbnRVcGRhdGVMYXlvdXQpKQot
ICAgICAgICBmcmFtZS0+ZG9jdW1lbnQoKS0+dXBkYXRlTGF5b3V0KCk7CisgICAgICAgIGZyYW1l
LT5kb2N1bWVudCgpLnVwZGF0ZUxheW91dCgpOwogCiAgICAgcmV0dXJuIGV4dGVybmFsUmVwcmVz
ZW50YXRpb24odG9SZW5kZXJCb3gocmVuZGVyZXIpLCBiZWhhdmlvcik7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jvb3QuY3BwIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSb290LmNwcAppbmRleCA1MzAwMzE0Li5i
YzlhNzI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R1Jvb3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUm9v
dC5jcHAKQEAgLTEzMCw3ICsxMzAsNyBAQCBib29sIFJlbmRlclNWR1Jvb3Q6OmlzRW1iZWRkZWRU
aHJvdWdoRnJhbWVDb250YWluaW5nU1ZHRG9jdW1lbnQoKSBjb25zdAogICAgIC8vIGJ1dCB3ZSBv
bmx5IG5lZ290aWF0ZSBpZiB3ZSdyZSBpbiBhbiBTVkcgZG9jdW1lbnQuCiAgICAgaWYgKCFmcmFt
ZSgpLm93bmVyUmVuZGVyZXIoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgIHJldHVybiBm
cmFtZSgpLmRvY3VtZW50KCktPmlzU1ZHRG9jdW1lbnQoKTsKKyAgICByZXR1cm4gZnJhbWUoKS5k
b2N1bWVudCgpLmlzU1ZHRG9jdW1lbnQoKTsKIH0KIAogc3RhdGljIGlubGluZSBMYXlvdXRVbml0
IHJlc29sdmVMZW5ndGhBdHRyaWJ1dGVGb3JTVkcoY29uc3QgTGVuZ3RoJiBsZW5ndGgsIGZsb2F0
IHNjYWxlLCBmbG9hdCBtYXhTaXplLCBSZW5kZXJWaWV3KiByZW5kZXJWaWV3KQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVwbGF5L1JlcGxheUNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvcmVwbGF5L1JlcGxheUNvbnRyb2xsZXIuY3BwCmluZGV4IDhkNmEzNGUuLmIyMDU0N2Mg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlcGxheS9SZXBsYXlDb250cm9sbGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZXBsYXkvUmVwbGF5Q29udHJvbGxlci5jcHAKQEAgLTIzNCw3
ICsyMzQsNyBAQCB2b2lkIFJlcGxheUNvbnRyb2xsZXI6OnVubG9hZFNlZ21lbnQoYm9vbCBzdXBw
cmVzc05vdGlmaWNhdGlvbnMpCiAgICAgUmVmUHRyPFJlcGxheVNlc3Npb25TZWdtZW50PiB1bmxv
YWRlZFNlZ21lbnQgPSBtX2xvYWRlZFNlZ21lbnQucmVsZWFzZSgpOwogICAgIGZvciAoRnJhbWUq
IGZyYW1lID0gJm1fcGFnZS5tYWluRnJhbWUoKTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyZWUo
KS50cmF2ZXJzZU5leHQoKSkgewogICAgICAgICBmcmFtZS0+c2NyaXB0KCkuZ2xvYmFsT2JqZWN0
KG1haW5UaHJlYWROb3JtYWxXb3JsZCgpKS0+c2V0SW5wdXRDdXJzb3IobV9lbXB0eUN1cnNvcik7
Ci0gICAgICAgIGZyYW1lLT5kb2N1bWVudCgpLT5zZXRJbnB1dEN1cnNvcihtX2VtcHR5Q3Vyc29y
KTsKKyAgICAgICAgZnJhbWUtPmRvY3VtZW50KCkuc2V0SW5wdXRDdXJzb3IobV9lbXB0eUN1cnNv
cik7CiAgICAgfQogCiAgICAgLy8gV2hlbiB3ZSBzdG9wIGNhcHR1cmluZywgZG9uJ3Qgc2VuZCBv
dXQgc2VnbWVudCB1bmxvYWRlZCBldmVudHMgc2luY2Ugd2UKQEAgLTM2Nyw3ICszNjcsNyBAQCB2
b2lkIFJlcGxheUNvbnRyb2xsZXI6OmZyYW1lTmF2aWdhdGVkKERvY3VtZW50TG9hZGVyKiBsb2Fk
ZXIpCiAKICAgICAvLyBXZSBzdG9yZSB0aGUgaW5wdXQgY3Vyc29yIGluIGJvdGggRG9jdW1lbnQg
YW5kIEpTRE9NV2luZG93LCBzbyB0aGF0CiAgICAgLy8gcmVwbGF5IHN0YXRlIGlzIGFjY2Vzc2li
bGUgZnJvbSBKYXZhU2NyaXB0Q29yZSBhbmQgc2NyaXB0LWZyZWUgbGF5b3V0IGNvZGUuCi0gICAg
bG9hZGVyLT5mcmFtZSgpLT5kb2N1bWVudCgpLT5zZXRJbnB1dEN1cnNvcihtX2FjdGl2ZUN1cnNv
ci5nZXQoKSk7CisgICAgbG9hZGVyLT5mcmFtZSgpLT5kb2N1bWVudCgpLnNldElucHV0Q3Vyc29y
KG1fYWN0aXZlQ3Vyc29yLmdldCgpKTsKICAgICBsb2FkZXItPmZyYW1lKCktPnNjcmlwdCgpLmds
b2JhbE9iamVjdChtYWluVGhyZWFkTm9ybWFsV29ybGQoKSktPnNldElucHV0Q3Vyc29yKG1fYWN0
aXZlQ3Vyc29yLmdldCgpKTsKIH0KIApAQCAtMzgyLDcgKzM4Miw3IEBAIHZvaWQgUmVwbGF5Q29u
dHJvbGxlcjo6ZnJhbWVEZXRhY2hlZChGcmFtZSogZnJhbWUpCiAgICAgLy8gSWYgdGhlIGZyYW1l
J3MgY3Vyc29yIGlzbid0IGNhcHR1cmluZyBvciByZXBsYXlpbmcsIHdlIHNob3VsZCBkbyBub3Ro
aW5nLgogICAgIC8vIFRoaXMgaXMgdGhlIGNhc2UgZm9yIHRoZSAib3V0Ym91bmQiIGZyYW1lIHdo
ZW4gc3RhcnRpbmcgY2FwdHVyZSwgb3Igd2hlbgogICAgIC8vIHdlIGNsZWFyIHRoZSBpbnB1dCBj
dXJzb3IgdG8gZmluaXNoIG9yIHByZW1hdHVyZWx5IHVubG9hZCBhIHNlZ21lbnQuCi0gICAgaWYg
KGZyYW1lLT5kb2N1bWVudCgpLT5pbnB1dEN1cnNvcigpLmlzQ2FwdHVyaW5nKCkpIHsKKyAgICBp
ZiAoZnJhbWUtPmRvY3VtZW50KCkuaW5wdXRDdXJzb3IoKS5pc0NhcHR1cmluZygpKSB7CiAgICAg
ICAgIEFTU0VSVChtX3NlZ21lbnRTdGF0ZSA9PSBTZWdtZW50U3RhdGU6OkFwcGVuZGluZyk7CiAg
ICAgICAgIGNvbXBsZXRlU2VnbWVudCgpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlcGxheS9SZXBsYXlJbnB1dENyZWF0aW9uTWV0aG9kcy5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9yZXBsYXkvUmVwbGF5SW5wdXRDcmVhdGlvbk1ldGhvZHMuY3BwCmluZGV4IDBlZDNlMjMuLjQy
NmY4NjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlcGxheS9SZXBsYXlJbnB1dENyZWF0
aW9uTWV0aG9kcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVwbGF5L1JlcGxheUlucHV0Q3Jl
YXRpb25NZXRob2RzLmNwcApAQCAtNDMsOCArNDMsOCBAQCBzdGQ6OnVuaXF1ZV9wdHI8SW5pdGlh
bE5hdmlnYXRpb24+IEluaXRpYWxOYXZpZ2F0aW9uOjpjcmVhdGVGcm9tUGFnZShjb25zdCBQYWdl
JgogICAgIEFTU0VSVChtYWluRnJhbWUuZG9jdW1lbnQoKSk7CiAKICAgICAvLyBNYWtlIHN1cmUg
dGhhdCB0aGlzIGlzIGluIHN5bmMgd2l0aCBSZXBsYXlDb250cm9sbGVyOjpiZWdpbkNhcHR1cmlu
ZygpLgotICAgIFJlZlB0cjxTZWN1cml0eU9yaWdpbj4gb3JpZ2luQ29weSA9IG1haW5GcmFtZS5k
b2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpLT5pc29sYXRlZENvcHkoKTsKLSAgICBVUkwgdXJs
ID0gbWFpbkZyYW1lLmRvY3VtZW50KCktPnVybCgpOworICAgIFJlZlB0cjxTZWN1cml0eU9yaWdp
bj4gb3JpZ2luQ29weSA9IG1haW5GcmFtZS5kb2N1bWVudCgpLnNlY3VyaXR5T3JpZ2luKCktPmlz
b2xhdGVkQ29weSgpOworICAgIFVSTCB1cmwgPSBtYWluRnJhbWUuZG9jdW1lbnQoKS51cmwoKTsK
ICAgICBTdHJpbmcgcmVmZXJyZXIgPSBtYWluRnJhbWUubG9hZGVyKCkucmVmZXJyZXIoKTsKICAg
ICByZXR1cm4gc3RkOjptYWtlX3VuaXF1ZTxJbml0aWFsTmF2aWdhdGlvbj4ob3JpZ2luQ29weSwg
dXJsLCByZWZlcnJlcik7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0
b3JhZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9yYWdlLmNwcAppbmRleCA4MWJh
ZTY0Li4wOTQzMDI5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2Uu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZS5jcHAKQEAgLTE2Miw3ICsx
NjIsNyBAQCBib29sIFN0b3JhZ2U6OmlzRGlzYWJsZWRCeVByaXZhdGVCcm93c2luZygpIGNvbnN0
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGlmIChtX3N0b3JhZ2VBcmVhLT5zdG9yYWdl
VHlwZSgpID09IExvY2FsU3RvcmFnZSkgewotICAgICAgICBpZiAoU2NoZW1lUmVnaXN0cnk6OmFs
bG93c0xvY2FsU3RvcmFnZUFjY2Vzc0luUHJpdmF0ZUJyb3dzaW5nKG1fZnJhbWUtPmRvY3VtZW50
KCktPnNlY3VyaXR5T3JpZ2luKCktPnByb3RvY29sKCkpKQorICAgICAgICBpZiAoU2NoZW1lUmVn
aXN0cnk6OmFsbG93c0xvY2FsU3RvcmFnZUFjY2Vzc0luUHJpdmF0ZUJyb3dzaW5nKG1fZnJhbWUt
PmRvY3VtZW50KCkuc2VjdXJpdHlPcmlnaW4oKS0+cHJvdG9jb2woKSkpCiAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdl
L1N0b3JhZ2VFdmVudERpc3BhdGNoZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvc3RvcmFnZS9TdG9y
YWdlRXZlbnREaXNwYXRjaGVyLmNwcAppbmRleCBiNGRlOWI4Li45ODZmNThmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9zdG9yYWdlL1N0b3JhZ2VFdmVudERpc3BhdGNoZXIuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3N0b3JhZ2UvU3RvcmFnZUV2ZW50RGlzcGF0Y2hlci5jcHAKQEAgLTQ4
LDExICs0OCwxMSBAQCB2b2lkIFN0b3JhZ2VFdmVudERpc3BhdGNoZXI6OmRpc3BhdGNoU2Vzc2lv
blN0b3JhZ2VFdmVudHMoY29uc3QgU3RyaW5nJiBrZXksIGNvbgogCiAgICAgLy8gU2VuZCBldmVu
dHMgb25seSB0byBvdXIgcGFnZS4KICAgICBmb3IgKEZyYW1lKiBmcmFtZSA9ICZwYWdlLT5tYWlu
RnJhbWUoKTsgZnJhbWU7IGZyYW1lID0gZnJhbWUtPnRyZWUoKS50cmF2ZXJzZU5leHQoKSkgewot
ICAgICAgICBpZiAoc291cmNlRnJhbWUgIT0gZnJhbWUgJiYgZnJhbWUtPmRvY3VtZW50KCktPnNl
Y3VyaXR5T3JpZ2luKCktPmVxdWFsKHNlY3VyaXR5T3JpZ2luKSkKKyAgICAgICAgaWYgKHNvdXJj
ZUZyYW1lICE9IGZyYW1lICYmIGZyYW1lLT5kb2N1bWVudCgpLnNlY3VyaXR5T3JpZ2luKCktPmVx
dWFsKHNlY3VyaXR5T3JpZ2luKSkKICAgICAgICAgICAgIGZyYW1lcy5hcHBlbmQoZnJhbWUpOwog
ICAgIH0KIAotICAgIGRpc3BhdGNoU2Vzc2lvblN0b3JhZ2VFdmVudHNUb0ZyYW1lcygqcGFnZSwg
ZnJhbWVzLCBrZXksIG9sZFZhbHVlLCBuZXdWYWx1ZSwgc291cmNlRnJhbWUtPmRvY3VtZW50KCkt
PnVybCgpLCBzZWN1cml0eU9yaWdpbik7CisgICAgZGlzcGF0Y2hTZXNzaW9uU3RvcmFnZUV2ZW50
c1RvRnJhbWVzKCpwYWdlLCBmcmFtZXMsIGtleSwgb2xkVmFsdWUsIG5ld1ZhbHVlLCBzb3VyY2VG
cmFtZS0+ZG9jdW1lbnQoKS51cmwoKSwgc2VjdXJpdHlPcmlnaW4pOwogfQogCiB2b2lkIFN0b3Jh
Z2VFdmVudERpc3BhdGNoZXI6OmRpc3BhdGNoTG9jYWxTdG9yYWdlRXZlbnRzKGNvbnN0IFN0cmlu
ZyYga2V5LCBjb25zdCBTdHJpbmcmIG9sZFZhbHVlLCBjb25zdCBTdHJpbmcmIG5ld1ZhbHVlLCBT
ZWN1cml0eU9yaWdpbiogc2VjdXJpdHlPcmlnaW4sIEZyYW1lKiBzb3VyY2VGcmFtZSkKQEAgLTY3
LDEyICs2NywxMiBAQCB2b2lkIFN0b3JhZ2VFdmVudERpc3BhdGNoZXI6OmRpc3BhdGNoTG9jYWxT
dG9yYWdlRXZlbnRzKGNvbnN0IFN0cmluZyYga2V5LCBjb25zdAogICAgIGNvbnN0IEhhc2hTZXQ8
UGFnZSo+JiBwYWdlcyA9IHBhZ2UtPmdyb3VwKCkucGFnZXMoKTsKICAgICBmb3IgKEhhc2hTZXQ8
UGFnZSo+Ojpjb25zdF9pdGVyYXRvciBpdCA9IHBhZ2VzLmJlZ2luKCksIGVuZCA9IHBhZ2VzLmVu
ZCgpOyBpdCAhPSBlbmQ7ICsraXQpIHsKICAgICAgICAgZm9yIChGcmFtZSogZnJhbWUgPSAmKCpp
dCktPm1haW5GcmFtZSgpOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgpLnRyYXZlcnNlTmV4
dCgpKSB7Ci0gICAgICAgICAgICBpZiAoc291cmNlRnJhbWUgIT0gZnJhbWUgJiYgZnJhbWUtPmRv
Y3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCktPmVxdWFsKHNlY3VyaXR5T3JpZ2luKSkKKyAgICAg
ICAgICAgIGlmIChzb3VyY2VGcmFtZSAhPSBmcmFtZSAmJiBmcmFtZS0+ZG9jdW1lbnQoKS5zZWN1
cml0eU9yaWdpbigpLT5lcXVhbChzZWN1cml0eU9yaWdpbikpCiAgICAgICAgICAgICAgICAgZnJh
bWVzLmFwcGVuZChmcmFtZSk7CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBkaXNwYXRjaExvY2Fs
U3RvcmFnZUV2ZW50c1RvRnJhbWVzKHBhZ2UtPmdyb3VwKCksIGZyYW1lcywga2V5LCBvbGRWYWx1
ZSwgbmV3VmFsdWUsIHNvdXJjZUZyYW1lLT5kb2N1bWVudCgpLT51cmwoKSwgc2VjdXJpdHlPcmln
aW4pOworICAgIGRpc3BhdGNoTG9jYWxTdG9yYWdlRXZlbnRzVG9GcmFtZXMocGFnZS0+Z3JvdXAo
KSwgZnJhbWVzLCBrZXksIG9sZFZhbHVlLCBuZXdWYWx1ZSwgc291cmNlRnJhbWUtPmRvY3VtZW50
KCkudXJsKCksIHNlY3VyaXR5T3JpZ2luKTsKIH0KIAogdm9pZCBTdG9yYWdlRXZlbnREaXNwYXRj
aGVyOjpkaXNwYXRjaFNlc3Npb25TdG9yYWdlRXZlbnRzVG9GcmFtZXMoUGFnZSYgcGFnZSwgY29u
c3QgVmVjdG9yPFJlZlB0cjxGcmFtZT4+JiBmcmFtZXMsIGNvbnN0IFN0cmluZyYga2V5LCBjb25z
dCBTdHJpbmcmIG9sZFZhbHVlLCBjb25zdCBTdHJpbmcmIG5ld1ZhbHVlLCBjb25zdCBTdHJpbmcm
IHVybCwgU2VjdXJpdHlPcmlnaW4qIHNlY3VyaXR5T3JpZ2luKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvdGVzdGluZy9JbnRlcm5hbHMuY3BwIGIvU291cmNlL1dlYkNvcmUvdGVzdGluZy9J
bnRlcm5hbHMuY3BwCmluZGV4IDVjOTFjOWEuLjhkYmVhMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3Rlc3RpbmcvSW50ZXJuYWxzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS90ZXN0aW5n
L0ludGVybmFscy5jcHAKQEAgLTM5Nyw3ICszOTcsNyBAQCB1bnNpZ25lZCBJbnRlcm5hbHM6Omxh
c3RTcGF0aWFsTmF2aWdhdGlvbkNhbmRpZGF0ZUNvdW50KEV4Y2VwdGlvbkNvZGUmIGVjKSBjb25z
dAogCiB1bnNpZ25lZCBJbnRlcm5hbHM6Om51bWJlck9mQWN0aXZlQW5pbWF0aW9ucygpIGNvbnN0
CiB7Ci0gICAgcmV0dXJuIGZyYW1lKCktPmFuaW1hdGlvbigpLm51bWJlck9mQWN0aXZlQW5pbWF0
aW9ucyhmcmFtZSgpLT5kb2N1bWVudCgpKTsKKyAgICByZXR1cm4gZnJhbWUoKS0+YW5pbWF0aW9u
KCkubnVtYmVyT2ZBY3RpdmVBbmltYXRpb25zKGZyYW1lKCkuZG9jdW1lbnQoKSk7CiB9CiAKIGJv
b2wgSW50ZXJuYWxzOjphbmltYXRpb25zQXJlU3VzcGVuZGVkKEV4Y2VwdGlvbkNvZGUmIGVjKSBj
b25zdApAQCAtMTQ2MSw3ICsxNDYxLDcgQEAgUGFzc1JlZlB0cjxET01XaW5kb3c+IEludGVybmFs
czo6b3BlbkR1bW15SW5zcGVjdG9yRnJvbnRlbmQoY29uc3QgU3RyaW5nJiB1cmwpCiAgICAgUGFn
ZSogcGFnZSA9IGNvbnRleHREb2N1bWVudCgpLT5mcmFtZSgpLT5wYWdlKCk7CiAgICAgQVNTRVJU
KHBhZ2UpOwogCi0gICAgRE9NV2luZG93KiB3aW5kb3cgPSBwYWdlLT5tYWluRnJhbWUoKS5kb2N1
bWVudCgpLT5kb21XaW5kb3coKTsKKyAgICBET01XaW5kb3cqIHdpbmRvdyA9IHBhZ2UtPm1haW5m
cmFtZSgpLmRvY3VtZW50KCkuZG9tV2luZG93KCk7CiAgICAgQVNTRVJUKHdpbmRvdyk7CiAKICAg
ICBtX2Zyb250ZW5kV2luZG93ID0gd2luZG93LT5vcGVuKHVybCwgIiIsICIiLCAqd2luZG93LCAq
d2luZG93KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL0NoYW5nZUxvZyBiL1NvdXJj
ZS9XZWJLaXQvZWZsL0NoYW5nZUxvZwppbmRleCA2OGE2ZTkzLi5lMThmM2JhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L2VmbC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9lZmwvQ2hh
bmdlTG9nCkBAIC0xLDMgKzEsMzAgQEAKKzIwMTQtMDQtMjIgIEd5dXlvdW5nIEtpbSAgPGd5dXlv
dW5nLmtpbUBzYW1zdW5nLmNvbT4KKworICAgICAgICBOZWVkIGEgc2hvcnQgZGVzY3JpcHRpb24g
KE9PUFMhKS4KKyAgICAgICAgTmVlZCB0aGUgYnVnIFVSTCAoT09QUyEpLgorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29yZVN1cHBvcnQvQ2hy
b21lQ2xpZW50RWZsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudEVmbDo6Y3Jl
YXRlV2luZG93KToKKyAgICAgICAgKFdlYkNvcmU6OkNocm9tZUNsaWVudEVmbDo6ZXhjZWVkZWRE
YXRhYmFzZVF1b3RhKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9EdW1wUmVuZGVyVHJlZVN1
cHBvcnRFZmwuY3BwOgorICAgICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsOjpwZW5kaW5n
VW5sb2FkRXZlbnRDb3VudCk6CisgICAgICAgIChEdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmw6OnNl
bGVjdGVkUmFuZ2UpOgorICAgICAgICAoRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsOjpyb290QWNj
ZXNzaWJsZUVsZW1lbnQpOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xp
ZW50RWZsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZyYW1lTG9hZGVyQ2xpZW50RWZsOjpjb21t
aXR0ZWRMb2FkKToKKyAgICAgICAgKiBld2svZXdrX2ZyYW1lLmNwcDoKKyAgICAgICAgKGV3a19m
cmFtZV9zZWN1cml0eV9vcmlnaW5fZ2V0KToKKyAgICAgICAgKGV3a19mcmFtZV90ZXh0X21hdGNo
ZXNfdW5tYXJrX2FsbCk6CisgICAgICAgIChld2tfZnJhbWVfdGV4dF9tYXRjaGVzX250aF9wb3Nf
Z2V0KToKKyAgICAgICAgKGV3a19mcmFtZV9zb3VyY2VfZ2V0KToKKyAgICAgICAgKGV3a19mcmFt
ZV9yZXNvdXJjZXNfbG9jYXRpb25fZ2V0KToKKyAgICAgICAgKGV3a19mcmFtZV9wbGFpbl90ZXh0
X2dldCk6CisgICAgICAgIChld2tfZnJhbWVfdXJpX2NoYW5nZWQpOgorICAgICAgICAqIGV3ay9l
d2tfdmlldy5jcHA6CisgICAgICAgIChld2tfdmlld19pbnB1dF9tZXRob2Rfc3RhdGVfc2V0KToK
KwogMjAxNC0wNC0xOCAgUGhpbGlwcGUgTm9ybWFuZCAgPHBub3JtYW5kQGlnYWxpYS5jb20+CiAK
ICAgICAgICAgUmVtb3ZlIE5FVFdPUktfSU5GTyBzdXBwb3J0CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9DaHJvbWVDbGllbnRFZmwuY3BwIGIvU291cmNlL1dl
YktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvQ2hyb21lQ2xpZW50RWZsLmNwcAppbmRleCA2M2YyNmFk
Li5mZDI4Y2NjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9D
aHJvbWVDbGllbnRFZmwuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0
L0Nocm9tZUNsaWVudEVmbC5jcHAKQEAgLTE1Myw4ICsxNTMsOCBAQCB2b2lkIENocm9tZUNsaWVu
dEVmbDo6dW5mb2N1cygpCiBQYWdlKiBDaHJvbWVDbGllbnRFZmw6OmNyZWF0ZVdpbmRvdyhGcmFt
ZSogZnJhbWUsIGNvbnN0IEZyYW1lTG9hZFJlcXVlc3QmLCBjb25zdCBXaW5kb3dGZWF0dXJlcyYg
ZmVhdHVyZXMsIGNvbnN0IE5hdmlnYXRpb25BY3Rpb24mKQogewogI2lmIEVOQUJMRShGVUxMU0NS
RUVOX0FQSSkKLSAgICBpZiAoZnJhbWUtPmRvY3VtZW50KCkgJiYgZnJhbWUtPmRvY3VtZW50KCkt
PndlYmtpdEN1cnJlbnRGdWxsU2NyZWVuRWxlbWVudCgpKQotICAgICAgICBmcmFtZS0+ZG9jdW1l
bnQoKS0+d2Via2l0Q2FuY2VsRnVsbFNjcmVlbigpOworICAgIGlmIChmcmFtZS0+ZG9jdW1lbnQo
KSAmJiBmcmFtZS0+ZG9jdW1lbnQoKS53ZWJraXRDdXJyZW50RnVsbFNjcmVlbkVsZW1lbnQoKSkK
KyAgICAgICAgZnJhbWUtPmRvY3VtZW50KCkud2Via2l0Q2FuY2VsRnVsbFNjcmVlbigpOwogI2Vs
c2UKICAgICBVTlVTRURfUEFSQU0oZnJhbWUpOwogI2VuZGlmCkBAIC00MzEsNyArNDMxLDcgQEAg
dm9pZCBDaHJvbWVDbGllbnRFZmw6Om5lZWRUb3VjaEV2ZW50cyhib29sIG5lZWRlZCkKIHZvaWQg
Q2hyb21lQ2xpZW50RWZsOjpleGNlZWRlZERhdGFiYXNlUXVvdGEoRnJhbWUqIGZyYW1lLCBjb25z
dCBTdHJpbmcmIGRhdGFiYXNlTmFtZSwgRGF0YWJhc2VEZXRhaWxzIGRldGFpbHMpCiB7CiAgICAg
dWludDY0X3QgcXVvdGE7Ci0gICAgU2VjdXJpdHlPcmlnaW4qIG9yaWdpbiA9IGZyYW1lLT5kb2N1
bWVudCgpLT5zZWN1cml0eU9yaWdpbigpOworICAgIFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4gPSBm
cmFtZS0+ZG9jdW1lbnQoKS5zZWN1cml0eU9yaWdpbigpOwogCiAgICAgcXVvdGEgPSBld2tfdmll
d19leGNlZWRlZF9kYXRhYmFzZV9xdW90YShtX3ZpZXcsCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBraXQoZnJhbWUpLCBkYXRhYmFzZU5hbWUudXRmOCgpLmRh
dGEoKSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0R1bXBS
ZW5kZXJUcmVlU3VwcG9ydEVmbC5jcHAgYi9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9y
dC9EdW1wUmVuZGVyVHJlZVN1cHBvcnRFZmwuY3BwCmluZGV4IDIxZWQ0NDIuLjdmZjU2MzYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVTdXBwb3J0L0R1bXBSZW5kZXJUcmVl
U3VwcG9ydEVmbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRHVt
cFJlbmRlclRyZWVTdXBwb3J0RWZsLmNwcApAQCAtMTY4LDcgKzE2OCw3IEBAIHVuc2lnbmVkIER1
bXBSZW5kZXJUcmVlU3VwcG9ydEVmbDo6cGVuZGluZ1VubG9hZEV2ZW50Q291bnQoY29uc3QgRXZh
c19PYmplY3QqIGV3CiB7CiAgICAgRFJUX1NVUFBPUlRfRlJBTUVfR0VUX09SX1JFVFVSTihld2tG
cmFtZSwgZnJhbWUsIDApOwogCi0gICAgcmV0dXJuIGZyYW1lLT5kb2N1bWVudCgpLT5kb21XaW5k
b3coKS0+cGVuZGluZ1VubG9hZEV2ZW50TGlzdGVuZXJzKCk7CisgICAgcmV0dXJuIGZyYW1lLT5k
b2N1bWVudCgpLmRvbVdpbmRvdygpLT5wZW5kaW5nVW5sb2FkRXZlbnRMaXN0ZW5lcnMoKTsKIH0K
IAogU3RyaW5nIER1bXBSZW5kZXJUcmVlU3VwcG9ydEVmbDo6cmVuZGVyVHJlZUR1bXAoRXZhc19P
YmplY3QqIGV3a0ZyYW1lKQpAQCAtNjQxLDcgKzY0MSw3IEBAIGJvb2wgRHVtcFJlbmRlclRyZWVT
dXBwb3J0RWZsOjpzZWxlY3RlZFJhbmdlKEV2YXNfT2JqZWN0KiBld2tWaWV3LCBpbnQqIHN0YXJ0
LCBpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIFdlYkNvcmU6OkVsZW1lbnQqIHNlbGVj
dGlvblJvb3QgPSBzZWxlY3Rpb24ucm9vdEVkaXRhYmxlRWxlbWVudCgpOwotICAgIFdlYkNvcmU6
OkVsZW1lbnQqIHNjb3BlID0gc2VsZWN0aW9uUm9vdCA/IHNlbGVjdGlvblJvb3QgOiBmcmFtZS5k
b2N1bWVudCgpLT5kb2N1bWVudEVsZW1lbnQoKTsKKyAgICBXZWJDb3JlOjpFbGVtZW50KiBzY29w
ZSA9IHNlbGVjdGlvblJvb3QgPyBzZWxlY3Rpb25Sb290IDogZnJhbWUuZG9jdW1lbnQoKS5kb2N1
bWVudEVsZW1lbnQoKTsKIAogICAgIFJlZlB0cjxXZWJDb3JlOjpSYW5nZT4gdGVzdFJhbmdlID0g
V2ViQ29yZTo6UmFuZ2U6OmNyZWF0ZShzY29wZS0+ZG9jdW1lbnQoKSwgc2NvcGUsIDAsIHJhbmdl
LT5zdGFydENvbnRhaW5lcigpLCByYW5nZS0+c3RhcnRPZmZzZXQoKSk7CiAgICAgKnN0YXJ0ID0g
V2ViQ29yZTo6VGV4dEl0ZXJhdG9yOjpyYW5nZUxlbmd0aCh0ZXN0UmFuZ2UuZ2V0KCkpOwpAQCAt
NzQzLDcgKzc0Myw3IEBAIEF0a09iamVjdCogRHVtcFJlbmRlclRyZWVTdXBwb3J0RWZsOjpyb290
QWNjZXNzaWJsZUVsZW1lbnQoY29uc3QgRXZhc19PYmplY3QqIGV3CiAgICAgaWYgKCFmcmFtZS0+
ZG9jdW1lbnQoKSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICBBdGtPYmplY3QqIHdyYXBwZXIg
PSBmcmFtZS0+ZG9jdW1lbnQoKS0+YXhPYmplY3RDYWNoZSgpLT5yb290T2JqZWN0KCktPndyYXBw
ZXIoKTsKKyAgICBBdGtPYmplY3QqIHdyYXBwZXIgPSBmcmFtZS0+ZG9jdW1lbnQoKS5heE9iamVj
dENhY2hlKCktPnJvb3RPYmplY3QoKS0+d3JhcHBlcigpOwogICAgIGlmICghd3JhcHBlcikKICAg
ICAgICAgcmV0dXJuIDA7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNvcmVT
dXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50RWZsLmNwcCBiL1NvdXJjZS9XZWJLaXQvZWZsL1dlYkNv
cmVTdXBwb3J0L0ZyYW1lTG9hZGVyQ2xpZW50RWZsLmNwcAppbmRleCBmMDk5ZTM3Li5hNmMxZDNi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9XZWJDb3JlU3VwcG9ydC9GcmFtZUxvYWRl
ckNsaWVudEVmbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9lZmwvV2ViQ29yZVN1cHBvcnQvRnJh
bWVMb2FkZXJDbGllbnRFZmwuY3BwCkBAIC0xMzEsNyArMTMxLDcgQEAgdm9pZCBGcmFtZUxvYWRl
ckNsaWVudEVmbDo6Y29tbWl0dGVkTG9hZChEb2N1bWVudExvYWRlciogbG9hZGVyLCBjb25zdCBj
aGFyKiBkYXQKIAogICAgICAgICAvLyBMZXQgdGhlIG1lZGlhIGRvY3VtZW50IGhhbmRsZSB0aGUg
cmVzdCBvZiBsb2FkaW5nIGl0c2VsZiwgY2FuY2VsIGhlcmUuCiAgICAgICAgIEZyYW1lKiBjb3Jl
RnJhbWUgPSBsb2FkZXItPmZyYW1lKCk7Ci0gICAgICAgIGlmIChjb3JlRnJhbWUgJiYgY29yZUZy
YW1lLT5kb2N1bWVudCgpLT5pc01lZGlhRG9jdW1lbnQoKSkKKyAgICAgICAgaWYgKGNvcmVGcmFt
ZSAmJiBjb3JlRnJhbWUtPmRvY3VtZW50KCkuaXNNZWRpYURvY3VtZW50KCkpCiAgICAgICAgICAg
ICBsb2FkZXItPmNhbmNlbE1haW5SZXNvdXJjZUxvYWQocGx1Z2luV2lsbEhhbmRsZUxvYWRFcnJv
cihsb2FkZXItPnJlc3BvbnNlKCkpKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvZWZsL2V3ay9ld2tfZnJhbWUuY3BwIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19mcmFt
ZS5jcHAKaW5kZXggYWZkNWE3Zi4uOTVlMTgxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9l
ZmwvZXdrL2V3a19mcmFtZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a19mcmFt
ZS5jcHAKQEAgLTMwMyw5ICszMDMsOSBAQCBFd2tfU2VjdXJpdHlfT3JpZ2luKiBld2tfZnJhbWVf
c2VjdXJpdHlfb3JpZ2luX2dldChjb25zdCBFdmFzX09iamVjdCAqZXdrRnJhbWUpCiAgICAgRVdL
X0ZSQU1FX1NEX0dFVF9PUl9SRVRVUk4oZXdrRnJhbWUsIHNtYXJ0RGF0YSwgMCk7CiAgICAgRUlO
QV9TQUZFVFlfT05fTlVMTF9SRVRVUk5fVkFMKHNtYXJ0RGF0YS0+ZnJhbWUsIDApOwogICAgIEVJ
TkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChzbWFydERhdGEtPmZyYW1lLT5kb2N1bWVudCgp
LCAwKTsKLSAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoc21hcnREYXRhLT5mcmFt
ZS0+ZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKSwgMCk7CisgICAgRUlOQV9TQUZFVFlfT05f
TlVMTF9SRVRVUk5fVkFMKHNtYXJ0RGF0YS0+ZnJhbWUtPmRvY3VtZW50KCkuc2VjdXJpdHlPcmln
aW4oKSwgMCk7CiAKLSAgICByZXR1cm4gZXdrX3NlY3VyaXR5X29yaWdpbl9uZXcoc21hcnREYXRh
LT5mcmFtZS0+ZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKSk7CisgICAgcmV0dXJuIGV3a19z
ZWN1cml0eV9vcmlnaW5fbmV3KHNtYXJ0RGF0YS0+ZnJhbWUtPmRvY3VtZW50KCkuc2VjdXJpdHlP
cmlnaW4oKSk7CiB9CiAKIEVpbmFfSXRlcmF0b3IqIGV3a19mcmFtZV9jaGlsZHJlbl9pdGVyYXRv
cl9uZXcoRXZhc19PYmplY3QqIGV3a0ZyYW1lKQpAQCAtNTE4LDcgKzUxOCw3IEBAIEVpbmFfQm9v
bCBld2tfZnJhbWVfdGV4dF9tYXRjaGVzX3VubWFya19hbGwoRXZhc19PYmplY3QqIGV3a0ZyYW1l
KQogICAgIEVXS19GUkFNRV9TRF9HRVRfT1JfUkVUVVJOKGV3a0ZyYW1lLCBzbWFydERhdGEsIGZh
bHNlKTsKICAgICBFSU5BX1NBRkVUWV9PTl9OVUxMX1JFVFVSTl9WQUwoc21hcnREYXRhLT5mcmFt
ZSwgZmFsc2UpOwogCi0gICAgc21hcnREYXRhLT5mcmFtZS0+ZG9jdW1lbnQoKS0+bWFya2Vycygp
LnJlbW92ZU1hcmtlcnMoV2ViQ29yZTo6RG9jdW1lbnRNYXJrZXI6OlRleHRNYXRjaCk7CisgICAg
c21hcnREYXRhLT5mcmFtZS0+ZG9jdW1lbnQoKS5tYXJrZXJzKCkucmVtb3ZlTWFya2VycyhXZWJD
b3JlOjpEb2N1bWVudE1hcmtlcjo6VGV4dE1hdGNoKTsKICAgICByZXR1cm4gdHJ1ZTsKIH0KIApA
QCAtNTU4LDcgKzU1OCw3IEBAIEVpbmFfQm9vbCBld2tfZnJhbWVfdGV4dF9tYXRjaGVzX250aF9w
b3NfZ2V0KGNvbnN0IEV2YXNfT2JqZWN0KiBld2tGcmFtZSwgc2l6ZV90CiAgICAgRVdLX0ZSQU1F
X1NEX0dFVF9PUl9SRVRVUk4oZXdrRnJhbWUsIHNtYXJ0RGF0YSwgZmFsc2UpOwogICAgIEVJTkFf
U0FGRVRZX09OX05VTExfUkVUVVJOX1ZBTChzbWFydERhdGEtPmZyYW1lLCBmYWxzZSk7CiAKLSAg
ICBWZWN0b3I8V2ViQ29yZTo6SW50UmVjdD4gaW50UmVjdHMgPSBzbWFydERhdGEtPmZyYW1lLT5k
b2N1bWVudCgpLT5tYXJrZXJzKCkucmVuZGVyZWRSZWN0c0Zvck1hcmtlcnMoV2ViQ29yZTo6RG9j
dW1lbnRNYXJrZXI6OlRleHRNYXRjaCk7CisgICAgVmVjdG9yPFdlYkNvcmU6OkludFJlY3Q+IGlu
dFJlY3RzID0gc21hcnREYXRhLT5mcmFtZS0+ZG9jdW1lbnQoKS5tYXJrZXJzKCkucmVuZGVyZWRS
ZWN0c0Zvck1hcmtlcnMoV2ViQ29yZTo6RG9jdW1lbnRNYXJrZXI6OlRleHRNYXRjaCk7CiAKICAg
ICAvKiByZW1vdmUgdXNlbGVzcyB2YWx1ZXMgKi8KICAgICBzdGQ6OnJlbW92ZV9pZihpbnRSZWN0
cy5iZWdpbigpLCBpbnRSZWN0cy5lbmQoKSwgX2V3a19mcmFtZV9yZWN0X2lzX25lZ2F0aXZlX3Zh
bHVlKTsKQEAgLTE1NzgsMTQgKzE1NzgsMTQgQEAgc3NpemVfdCBld2tfZnJhbWVfc291cmNlX2dl
dChjb25zdCBFdmFzX09iamVjdCogZXdrRnJhbWUsIGNoYXIqKiBmcmFtZVNvdXJjZSkKICAgICBp
ZiAoIWV3a19mcmFtZV91cmlfZ2V0KGV3a0ZyYW1lKSkKICAgICAgICAgcmV0dXJuIC0xOwogCi0g
ICAgaWYgKCFzbWFydERhdGEtPmZyYW1lLT5kb2N1bWVudCgpLT5pc0hUTUxEb2N1bWVudCgpKSB7
CisgICAgaWYgKCFzbWFydERhdGEtPmZyYW1lLT5kb2N1bWVudCgpLmlzSFRNTERvY3VtZW50KCkp
IHsKICAgICAgICAgLy8gRklYTUU6IFN1cHBvcnQgb3RoZXJzIGRvY3VtZW50cy4KICAgICAgICAg
V0FSTigiT25seSBIVE1MIGRvY3VtZW50cyBhcmUgc3VwcG9ydGVkIik7CiAgICAgICAgIHJldHVy
biAtMTsKICAgICB9CiAKICAgICAvLyBMb29rIGZvciA8aHRtbD4gdGFnLiBJZiBpdCBleGlzdHMs
IHRoZSBub2RlIGNvbnRhdGlucyBhbGwgZG9jdW1lbnQncyBzb3VyY2UuCi0gICAgV2ViQ29yZTo6
Tm9kZSogZG9jdW1lbnROb2RlID0gc21hcnREYXRhLT5mcmFtZS0+ZG9jdW1lbnQoKS0+ZG9jdW1l
bnRFbGVtZW50KCk7CisgICAgV2ViQ29yZTo6Tm9kZSogZG9jdW1lbnROb2RlID0gc21hcnREYXRh
LT5mcmFtZS0+ZG9jdW1lbnQoKS5kb2N1bWVudEVsZW1lbnQoKTsKICAgICBpZiAoZG9jdW1lbnRO
b2RlKQogICAgICAgICBmb3IgKFdlYkNvcmU6Ok5vZGUqIG5vZGUgPSBkb2N1bWVudE5vZGUtPmZp
cnN0Q2hpbGQoKTsgbm9kZTsgbm9kZSA9IG5vZGUtPnBhcmVudEVsZW1lbnQoKSkgewogICAgICAg
ICAgICAgaWYgKG5vZGUtPmhhc1RhZ05hbWUoV2ViQ29yZTo6SFRNTE5hbWVzOjpodG1sVGFnKSkg
ewpAQCAtMTYxOSw3ICsxNjE5LDcgQEAgRWluYV9MaXN0KiBld2tfZnJhbWVfcmVzb3VyY2VzX2xv
Y2F0aW9uX2dldChjb25zdCBFdmFzX09iamVjdCogZXdrRnJhbWUpCiAgICAgRWluYV9MaXN0KiBs
aXN0T2ZJbWFnZXNMb2NhdGlvbiA9IDA7CiAKICAgICAvLyBHZXQgc3JjIGF0dGlidXRlIG9mIGlt
YWdlcyBhbmQgc2F2ZXMgdGhlbSB0byB0aGUgRWluYV9MaXN0LgotICAgIFJlZlB0cjxXZWJDb3Jl
OjpIVE1MQ29sbGVjdGlvbj4gaW1hZ2VzID0gc21hcnREYXRhLT5mcmFtZS0+ZG9jdW1lbnQoKS0+
aW1hZ2VzKCk7CisgICAgUmVmUHRyPFdlYkNvcmU6OkhUTUxDb2xsZWN0aW9uPiBpbWFnZXMgPSBz
bWFydERhdGEtPmZyYW1lLT5kb2N1bWVudCgpLmltYWdlcygpOwogICAgIGZvciAoc2l6ZV90IGlu
ZGV4ID0gMDsgaW5kZXggPCBpbWFnZXMtPmxlbmd0aCgpOyArK2luZGV4KSB7CiAgICAgICAgIFdl
YkNvcmU6OkhUTUxJbWFnZUVsZW1lbnQqIGltYWdlRWxlbWVudCA9IHN0YXRpY19jYXN0PFdlYkNv
cmU6OkhUTUxJbWFnZUVsZW1lbnQqPihpbWFnZXMtPml0ZW0oaW5kZXgpKTsKICAgICAgICAgaWYg
KCFpbWFnZUVsZW1lbnQgfHwgaW1hZ2VFbGVtZW50LT5zcmMoKS5pc051bGwoKSB8fCBpbWFnZUVs
ZW1lbnQtPnNyYygpLmlzRW1wdHkoKSkKQEAgLTE2NjIsNyArMTY2Miw3IEBAIGNvbnN0IGNoYXIq
IGV3a19mcmFtZV9wbGFpbl90ZXh0X2dldChjb25zdCBFdmFzX09iamVjdCogZXdrRnJhbWUpCiAg
ICAgaWYgKCFzbWFydERhdGEtPmZyYW1lLT5kb2N1bWVudCgpKQogICAgICAgICByZXR1cm4gMDsK
IAotICAgIFdlYkNvcmU6OkVsZW1lbnQqIGRvY3VtZW50RWxlbWVudCA9IHNtYXJ0RGF0YS0+ZnJh
bWUtPmRvY3VtZW50KCktPmRvY3VtZW50RWxlbWVudCgpOworICAgIFdlYkNvcmU6OkVsZW1lbnQq
IGRvY3VtZW50RWxlbWVudCA9IHNtYXJ0RGF0YS0+ZnJhbWUtPmRvY3VtZW50KCkuZG9jdW1lbnRF
bGVtZW50KCk7CiAKICAgICBpZiAoIWRvY3VtZW50RWxlbWVudCkKICAgICAgICAgcmV0dXJuIDA7
CkBAIC0xNzI3LDcgKzE3MjcsNyBAQCBib29sIGV3a19mcmFtZV91cmlfY2hhbmdlZChFdmFzX09i
amVjdCogZXdrRnJhbWUpCiB7CiAgICAgRVdLX0ZSQU1FX1NEX0dFVF9PUl9SRVRVUk4oZXdrRnJh
bWUsIHNtYXJ0RGF0YSwgZmFsc2UpOwogICAgIEVJTkFfU0FGRVRZX09OX05VTExfUkVUVVJOX1ZB
TChzbWFydERhdGEtPmZyYW1lLCBmYWxzZSk7Ci0gICAgV1RGOjpDU3RyaW5nIHVyaShzbWFydERh
dGEtPmZyYW1lLT5kb2N1bWVudCgpLT51cmwoKS5zdHJpbmcoKS51dGY4KCkpOworICAgIFdURjo6
Q1N0cmluZyB1cmkoc21hcnREYXRhLT5mcmFtZS0+ZG9jdW1lbnQoKS51cmwoKS5zdHJpbmcoKS51
dGY4KCkpOwogCiAgICAgSU5GTygidXJpPSVzIiwgdXJpLmRhdGEoKSk7CiAgICAgaWYgKCF1cmku
ZGF0YSgpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXcuY3Bw
IGIvU291cmNlL1dlYktpdC9lZmwvZXdrL2V3a192aWV3LmNwcAppbmRleCA3ZDRhZjhlLi40ZTYx
OWYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2VmbC9ld2svZXdrX3ZpZXcuY3BwCisrKyBi
L1NvdXJjZS9XZWJLaXQvZWZsL2V3ay9ld2tfdmlldy5jcHAKQEAgLTI2MzgsMTEgKzI2MzgsMTEg
QEAgdm9pZCBld2tfdmlld19pbnB1dF9tZXRob2Rfc3RhdGVfc2V0KEV2YXNfT2JqZWN0KiBld2tW
aWV3LCBib29sIGFjdGl2ZSkKIAogICAgIHByaXYtPmltaCA9IDA7CiAgICAgaWYgKGZvY3VzZWRG
cmFtZS5kb2N1bWVudCgpCi0gICAgICAgICYmIGZvY3VzZWRGcmFtZS5kb2N1bWVudCgpLT5mb2N1
c2VkRWxlbWVudCgpCi0gICAgICAgICYmIGlzSFRNTElucHV0RWxlbWVudChmb2N1c2VkRnJhbWUu
ZG9jdW1lbnQoKS0+Zm9jdXNlZEVsZW1lbnQoKSkpIHsKKyAgICAgICAgJiYgZm9jdXNlZGZyYW1l
LmRvY3VtZW50KCkuZm9jdXNlZEVsZW1lbnQoKQorICAgICAgICAmJiBpc0hUTUxJbnB1dEVsZW1l
bnQoZm9jdXNlZGZyYW1lLmRvY3VtZW50KCkuZm9jdXNlZEVsZW1lbnQoKSkpIHsKICAgICAgICAg
V2ViQ29yZTo6SFRNTElucHV0RWxlbWVudCogaW5wdXRFbGVtZW50OwogCi0gICAgICAgIGlucHV0
RWxlbWVudCA9IHN0YXRpY19jYXN0PFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQqPihmb2N1c2Vk
RnJhbWUuZG9jdW1lbnQoKS0+Zm9jdXNlZEVsZW1lbnQoKSk7CisgICAgICAgIGlucHV0RWxlbWVu
dCA9IHN0YXRpY19jYXN0PFdlYkNvcmU6OkhUTUxJbnB1dEVsZW1lbnQqPihmb2N1c2VkZnJhbWUu
ZG9jdW1lbnQoKS5mb2N1c2VkRWxlbWVudCgpKTsKICAgICAgICAgaWYgKGlucHV0RWxlbWVudCkg
ewogICAgICAgICAgICAgLy8gZm9yIHBhc3N3b3JkIGZpZWxkcywgYWN0aXZlID09IGZhbHNlCiAg
ICAgICAgICAgICBpZiAoIWFjdGl2ZSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9pb3Mv
Q2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9pb3MvQ2hhbmdlTG9nCmluZGV4IDhiNDQwYWUuLmM2
YmE4OWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvaW9zL0NoYW5nZUxvZworKysgYi9Tb3Vy
Y2UvV2ViS2l0L2lvcy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNiBAQAorMjAxNC0wNC0yMiAgR3l1
eW91bmcgS2ltICA8Z3l1eW91bmcua2ltQHNhbXN1bmcuY29tPgorCisgICAgICAgIE5lZWQgYSBz
aG9ydCBkZXNjcmlwdGlvbiAoT09QUyEpLgorICAgICAgICBOZWVkIHRoZSBidWcgVVJMIChPT1BT
ISkuCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBX
ZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUlPUy5tbToKKyAgICAgICAgKC1bV2ViRnJhbWUgc3RhcnRQ
b3NpdGlvbl0pOgorICAgICAgICAoLVtXZWJGcmFtZSBlbmRQb3NpdGlvbl0pOgorICAgICAgICAq
IFdlYlZpZXcvV2ViUERGVmlld1BsYWNlaG9sZGVyLm1tOgorICAgICAgICAoLVtXZWJQREZWaWV3
UGxhY2Vob2xkZXIgc2ltdWxhdGVDbGlja09uTGlua1RvVVJMOl0pOgorCiAyMDE0LTA0LTE3ICBE
YW5pZWwgQmF0ZXMgIDxkYWJhdGVzQGFwcGxlLmNvbT4KIAogICAgICAgICBbaU9TXSBIb29rIHVw
IHNjcmVlbi57YXZhaWxIZWlnaHQsIGF2YWlsV2lkdGgsIGhlaWdodCwgd2lkdGh9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2lvcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUlPUy5tbSBiL1Nv
dXJjZS9XZWJLaXQvaW9zL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lSU9TLm1tCmluZGV4IDFkNWJh
OTQuLjgwYmQyOTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvaW9zL1dlYkNvcmVTdXBwb3J0
L1dlYkZyYW1lSU9TLm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvaW9zL1dlYkNvcmVTdXBwb3J0L1dl
YkZyYW1lSU9TLm1tCkBAIC04MDgsMTQgKzgwOCwxNCBAQCBzdGF0aWMgVmlzaWJsZVBvc2l0aW9u
IFNpbXBsZVNtYXJ0RXh0ZW5kRW5kKGNvbnN0IFZpc2libGVQb3NpdGlvbiYgc3RhcnQsIGNvbnN0
CiAtIChXZWJWaXNpYmxlUG9zaXRpb24gKilzdGFydFBvc2l0aW9uCiB7CiAgICAgRnJhbWUgKmZy
YW1lID0gW3NlbGYgY29yZUZyYW1lXTsKLSAgICBFbGVtZW50ICpyb290RWxlbWVudCA9IGZyYW1l
LT5kb2N1bWVudCgpLT5kb2N1bWVudEVsZW1lbnQoKTsKKyAgICBFbGVtZW50ICpyb290RWxlbWVu
dCA9IGZyYW1lLT5kb2N1bWVudCgpLmRvY3VtZW50RWxlbWVudCgpOwogICAgIHJldHVybiBbV2Vi
VmlzaWJsZVBvc2l0aW9uIF93cmFwVmlzaWJsZVBvc2l0aW9uOnN0YXJ0T2ZEb2N1bWVudChzdGF0
aWNfY2FzdDxOb2RlKj4ocm9vdEVsZW1lbnQpKV07CiB9CiAKIC0gKFdlYlZpc2libGVQb3NpdGlv
biAqKWVuZFBvc2l0aW9uCiB7CiAgICAgRnJhbWUgKmZyYW1lID0gW3NlbGYgY29yZUZyYW1lXTsK
LSAgICBFbGVtZW50ICpyb290RWxlbWVudCA9IGZyYW1lLT5kb2N1bWVudCgpLT5kb2N1bWVudEVs
ZW1lbnQoKTsKKyAgICBFbGVtZW50ICpyb290RWxlbWVudCA9IGZyYW1lLT5kb2N1bWVudCgpLmRv
Y3VtZW50RWxlbWVudCgpOwogICAgIHJldHVybiBbV2ViVmlzaWJsZVBvc2l0aW9uIF93cmFwVmlz
aWJsZVBvc2l0aW9uOmVuZE9mRG9jdW1lbnQoc3RhdGljX2Nhc3Q8Tm9kZSo+KHJvb3RFbGVtZW50
KSldOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2lvcy9XZWJWaWV3L1dlYlBERlZp
ZXdQbGFjZWhvbGRlci5tbSBiL1NvdXJjZS9XZWJLaXQvaW9zL1dlYlZpZXcvV2ViUERGVmlld1Bs
YWNlaG9sZGVyLm1tCmluZGV4IDcxOWY2YjMuLjNkYjUwNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJLaXQvaW9zL1dlYlZpZXcvV2ViUERGVmlld1BsYWNlaG9sZGVyLm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvaW9zL1dlYlZpZXcvV2ViUERGVmlld1BsYWNlaG9sZGVyLm1tCkBAIC01MDQsNyArNTA0
LDcgQEAgc3RhdGljIGNvbnN0IGZsb2F0IFBBR0VfSEVJR0hUX0lOU0VUID0gNC4wZiAqIDIuMGY7
CiAKICAgICAvLyBDYWxsIHRvIHRoZSBmcmFtZSBsb2FkZXIgYmVjYXVzZSB0aGlzIGlzIHdoZXJl
IG91ciBzZWN1cml0eSBjaGVja3MgYXJlIG1hZGUuCiAgICAgRnJhbWUqIGZyYW1lID0gY29yZShb
X2RhdGFTb3VyY2Ugd2ViRnJhbWVdKTsKLSAgICBmcmFtZS0+bG9hZGVyKCkubG9hZEZyYW1lUmVx
dWVzdChGcmFtZUxvYWRSZXF1ZXN0KGZyYW1lLT5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigp
LCBSZXNvdXJjZVJlcXVlc3QoVVJMKSksIExvY2tIaXN0b3J5OjpObywgTG9ja0JhY2tGb3J3YXJk
TGlzdDo6Tm8sIGV2ZW50LmdldCgpLCAwLCBNYXliZVNlbmRSZWZlcnJlcik7CisgICAgZnJhbWUt
PmxvYWRlcigpLmxvYWRGcmFtZVJlcXVlc3QoRnJhbWVMb2FkUmVxdWVzdChmcmFtZS0+ZG9jdW1l
bnQoKS5zZWN1cml0eU9yaWdpbigpLCBSZXNvdXJjZVJlcXVlc3QoVVJMKSksIExvY2tIaXN0b3J5
OjpObywgTG9ja0JhY2tGb3J3YXJkTGlzdDo6Tm8sIGV2ZW50LmdldCgpLCAwLCBNYXliZVNlbmRS
ZWZlcnJlcik7CiB9CiAKIEBlbmQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJLaXQvbWFjL0NoYW5nZUxvZwppbmRleCA2YmExNDM0Li43ZTcwOGQ0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dl
YktpdC9tYWMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNTYgQEAKKzIwMTQtMDQtMjIgIEd5dXlvdW5n
IEtpbSAgPGd5dXlvdW5nLmtpbUBzYW1zdW5nLmNvbT4KKworICAgICAgICBOZWVkIGEgc2hvcnQg
ZGVzY3JpcHRpb24gKE9PUFMhKS4KKyAgICAgICAgTmVlZCB0aGUgYnVnIFVSTCAoT09QUyEpLgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogUGx1Z2lu
cy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVByb3h5Lm1tOgorICAgICAgICAoV2ViS2l0
OjpOZXRzY2FwZVBsdWdpbkluc3RhbmNlUHJveHk6OmxvYWRSZXF1ZXN0KToKKyAgICAgICAgKiBQ
bHVnaW5zL1dlYkJhc2VOZXRzY2FwZVBsdWdpblZpZXcubW06CisgICAgICAgICgtW1dlYkJhc2VO
ZXRzY2FwZVBsdWdpblZpZXcgcmVzb2x2ZWRVUkxTdHJpbmdGb3JVUkw6dGFyZ2V0Ol0pOgorICAg
ICAgICAqIFBsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5TdHJlYW0ubW06CisgICAgICAgIChXZWJO
ZXRzY2FwZVBsdWdpblN0cmVhbTo6V2ViTmV0c2NhcGVQbHVnaW5TdHJlYW0pOgorICAgICAgICAq
IFBsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5WaWV3Lm1tOgorICAgICAgICAoLVtXZWJOZXRzY2Fw
ZVBsdWdpblZpZXcgbG9hZFJlcXVlc3Q6aW5UYXJnZXQ6d2l0aE5vdGlmeURhdGE6c2VuZE5vdGlm
aWNhdGlvbjpdKToKKyAgICAgICAgKiBQbHVnaW5zL1dlYlBsdWdpbkNvbnRhaW5lckNoZWNrLm1t
OgorICAgICAgICAoLVtXZWJQbHVnaW5Db250YWluZXJDaGVjayBfaXNGb3JiaWRkZW5GaWxlTG9h
ZF0pOgorICAgICAgICAqIFdlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5tbToKKyAgICAg
ICAgKFdlYkNocm9tZUNsaWVudDo6Y3JlYXRlV2luZG93KToKKyAgICAgICAgKFdlYkNocm9tZUNs
aWVudDo6ZXhjZWVkZWREYXRhYmFzZVF1b3RhKToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9X
ZWJHZW9sb2NhdGlvbkNsaWVudC5tbToKKyAgICAgICAgKFdlYkdlb2xvY2F0aW9uQ2xpZW50Ojpy
ZXF1ZXN0UGVybWlzc2lvbik6CisgICAgICAgICgtW1dlYkdlb2xvY2F0aW9uUHJvdmlkZXJJbml0
aWFsaXphdGlvbkxpc3RlbmVyIGluaXRpYWxpemF0aW9uQWxsb3dlZFdlYlZpZXc6cHJvdmlkZXI6
XSk6CisgICAgICAgICogV2ViVmlldy9XZWJGcmFtZS5tbToKKyAgICAgICAgKC1bV2ViRnJhbWUg
X3NtYXJ0RGVsZXRlUmFuZ2VGb3JQcm9wb3NlZFJhbmdlOl0pOgorICAgICAgICAoLVtXZWJGcmFt
ZSBfcmVwbGFjZVNlbGVjdGlvbldpdGhOb2RlOnNlbGVjdFJlcGxhY2VtZW50OnNtYXJ0UmVwbGFj
ZTptYXRjaFN0eWxlOl0pOgorICAgICAgICAoLVtXZWJGcmFtZSBfY2FuUHJvdmlkZURvY3VtZW50
U291cmNlXSk6CisgICAgICAgICgtW1dlYkZyYW1lIF9wZW5kaW5nRnJhbWVVbmxvYWRFdmVudENv
dW50XSk6CisgICAgICAgICgtW1dlYkZyYW1lIHNlbGVjdGlvbkF0RG9jdW1lbnRTdGFydF0pOgor
ICAgICAgICAoLVtXZWJGcmFtZSBzZWxlY3Rpb25BdFNlbnRlbmNlU3RhcnRdKToKKyAgICAgICAg
KC1bV2ViRnJhbWUgc2VsZWN0aW9uQXRXb3JkU3RhcnRdKToKKyAgICAgICAgKC1bV2ViRnJhbWUg
Z2V0RGljdGF0aW9uUmVzdWx0UmFuZ2VzOmFuZE1ldGFkYXRhczpdKToKKyAgICAgICAgKC1bV2Vi
RnJhbWUgX2NhY2hlYWJpbGl0eURpY3Rpb25hcnldKToKKyAgICAgICAgKC1bV2ViRnJhbWUgX2Fs
bG93c0ZvbGxvd2luZ0xpbms6XSk6CisgICAgICAgICgtW1dlYkZyYW1lIHNldEFjY2Vzc2libGVO
YW1lOl0pOgorICAgICAgICAoLVtXZWJGcmFtZSBfY29tcHV0ZVBhZ2VSZWN0c1dpdGhQcmludFNj
YWxlRmFjdG9yOnBhZ2VTaXplOl0pOgorICAgICAgICAoLVtXZWJGcmFtZSBmb2N1c2VkTm9kZUhh
c0NvbnRlbnRdKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYkhUTUxSZXByZXNlbnRhdGlvbi5tbToK
KyAgICAgICAgKC1bV2ViSFRNTFJlcHJlc2VudGF0aW9uIHJlY2VpdmVkRGF0YTp3aXRoRGF0YVNv
dXJjZTpdKToKKyAgICAgICAgKiBXZWJWaWV3L1dlYkhUTUxWaWV3Lm1tOgorICAgICAgICAoLVtX
ZWJIVE1MVmlldyBfYmVnaW5QcmludE1vZGVXaXRoTWluaW11bVBhZ2VXaWR0aDpoZWlnaHQ6bWF4
aW11bVBhZ2VXaWR0aDpdKToKKyAgICAgICAgKC1bV2ViSFRNTFZpZXcgX2JlZ2luUHJpbnRNb2Rl
V2l0aFBhZ2VXaWR0aDpoZWlnaHQ6c2hyaW5rVG9GaXQ6XSk6CisgICAgICAgICgtW1dlYkhUTUxW
aWV3IF9iZWdpblNjcmVlblBhZ2luYXRpb25Nb2RlV2l0aFBhZ2VTaXplOnNocmlua1RvRml0Ol0p
OgorICAgICAgICAoLVtXZWJIVE1MVmlldyByZWFwcGx5U3R5bGVzXSk6CisgICAgICAgICgtW1dl
YkhUTUxWaWV3IGxheW91dFRvTWluaW11bVBhZ2VXaWR0aDpoZWlnaHQ6b3JpZ2luYWxQYWdlV2lk
dGg6b3JpZ2luYWxQYWdlSGVpZ2h0Om1heGltdW1TaHJpbmtSYXRpbzphZGp1c3RpbmdWaWV3U2l6
ZTpdKToKKyAgICAgICAgKC1bV2ViSFRNTFZpZXcgc2V0TmVlZHNMYXlvdXQ6XSk6CisgICAgICAg
ICgtW1dlYkhUTUxWaWV3IHNldE5lZWRzVG9BcHBseVN0eWxlczpdKToKKyAgICAgICAgKGN1cnJl
bnRLZXlib2FyZEV2ZW50KToKKyAgICAgICAgKiBXZWJWaWV3L1dlYlBERlZpZXcubW06CisgICAg
ICAgICgtW1dlYlBERlZpZXcgUERGVmlld1dpbGxDbGlja09uTGluazp3aXRoVVJMOl0pOgorICAg
ICAgICAqIFdlYlZpZXcvV2ViVmlldy5tbToKKyAgICAgICAgKC1bV2ViVmlldyBfZGFzaGJvYXJk
UmVnaW9uc10pOgorCiAyMDE0LTA0LTIxICBFcmljIENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBw
bGUuY29tPgogCiAgICAgICAgIFtNYWNdIGltcGxlbWVudCBXZWJLaXREYXRhQ3VlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBsdWdpbkluc3Rh
bmNlUHJveHkubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL0hvc3RlZC9OZXRzY2FwZVBs
dWdpbkluc3RhbmNlUHJveHkubW0KaW5kZXggNTM4NjFkNS4uNmFjNDFhMiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9Ib3N0ZWQvTmV0c2NhcGVQbHVnaW5JbnN0YW5jZVBy
b3h5Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvSG9zdGVkL05ldHNjYXBlUGx1
Z2luSW5zdGFuY2VQcm94eS5tbQpAQCAtNzgyLDcgKzc4Miw3IEBAIE5QRXJyb3IgTmV0c2NhcGVQ
bHVnaW5JbnN0YW5jZVByb3h5Ojpsb2FkUmVxdWVzdChOU1VSTFJlcXVlc3QgKnJlcXVlc3QsIGNv
bnN0IGNoCiAgICAgICAgICAgICByZXR1cm4gTlBFUlJfR0VORVJJQ19FUlJPUjsKICAgICAgICAg
fQogICAgIH0gZWxzZSB7Ci0gICAgICAgIGlmICghY29yZShbbV9wbHVnaW5WaWV3IHdlYkZyYW1l
XSktPmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCktPmNhbkRpc3BsYXkoVVJMKSkKKyAgICAg
ICAgaWYgKCFjb3JlKFttX3BsdWdpblZpZXcgd2ViRnJhbWVdKS0+ZG9jdW1lbnQoKS5zZWN1cml0
eU9yaWdpbigpLT5jYW5EaXNwbGF5KFVSTCkpCiAgICAgICAgICAgICByZXR1cm4gTlBFUlJfR0VO
RVJJQ19FUlJPUjsKICAgICB9CiAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9Q
bHVnaW5zL1dlYkJhc2VOZXRzY2FwZVBsdWdpblZpZXcubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9Q
bHVnaW5zL1dlYkJhc2VOZXRzY2FwZVBsdWdpblZpZXcubW0KaW5kZXggYjhkZGQ2NS4uMDJjMDc2
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9XZWJCYXNlTmV0c2NhcGVQ
bHVnaW5WaWV3Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvV2ViQmFzZU5ldHNj
YXBlUGx1Z2luVmlldy5tbQpAQCAtODU1LDEwICs4NTUsMTAgQEAgdXNpbmcgbmFtZXNwYWNlIFdl
YkNvcmU7CiAgICAgaWYgKCF0YXJnZXRGcmFtZSkKICAgICAgICAgcmV0dXJuIENTdHJpbmcoKTsK
ICAgICAKLSAgICBpZiAoIWZyYW1lLT5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpLT5jYW5B
Y2Nlc3ModGFyZ2V0RnJhbWUtPmRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCkpKQorICAgIGlm
ICghZnJhbWUtPmRvY3VtZW50KCkuc2VjdXJpdHlPcmlnaW4oKS0+Y2FuQWNjZXNzKHRhcmdldEZy
YW1lLT5kb2N1bWVudCgpLnNlY3VyaXR5T3JpZ2luKCkpKQogICAgICAgICByZXR1cm4gQ1N0cmlu
ZygpOwogICAKLSAgICBVUkwgYWJzb2x1dGVVUkwgPSB0YXJnZXRGcmFtZS0+ZG9jdW1lbnQoKS0+
Y29tcGxldGVVUkwocmVsYXRpdmVVUkxTdHJpbmcpOworICAgIFVSTCBhYnNvbHV0ZVVSTCA9IHRh
cmdldEZyYW1lLT5kb2N1bWVudCgpLmNvbXBsZXRlVVJMKHJlbGF0aXZlVVJMU3RyaW5nKTsKICAg
ICByZXR1cm4gYWJzb2x1dGVVUkwuc3RyaW5nKCkudXRmOCgpOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL1dlYk5ldHNjYXBlUGx1Z2luU3RyZWFtLm1tIGIvU291
cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpblN0cmVhbS5tbQppbmRleCA5
MzVkNTVlYzEuLjI5Mzg3NzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMv
V2ViTmV0c2NhcGVQbHVnaW5TdHJlYW0ubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvUGx1Z2lu
cy9XZWJOZXRzY2FwZVBsdWdpblN0cmVhbS5tbQpAQCAtMTYyLDcgKzE2Miw3IEBAIFdlYk5ldHNj
YXBlUGx1Z2luU3RyZWFtOjpXZWJOZXRzY2FwZVBsdWdpblN0cmVhbShOU1VSTFJlcXVlc3QgKnJl
cXVlc3QsIE5QUCBwbHVnCiAgICAgV2ViTmV0c2NhcGVQbHVnaW5WaWV3ICp2aWV3ID0gKFdlYk5l
dHNjYXBlUGx1Z2luVmlldyAqKXBsdWdpbi0+bmRhdGE7CiAgICAgCiAgICAgLy8gVGhpcyBjaGVj
ayBoYXMgYWxyZWFkeSBiZWVuIGRvbmUgYnkgdGhlIHBsdWctaW4gdmlldy4KLSAgICBBU1NFUlQo
Y29yZShbdmlldyB3ZWJGcmFtZV0pLT5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpLT5jYW5E
aXNwbGF5KFtyZXF1ZXN0IFVSTF0pKTsKKyAgICBBU1NFUlQoY29yZShbdmlldyB3ZWJGcmFtZV0p
LT5kb2N1bWVudCgpLnNlY3VyaXR5T3JpZ2luKCktPmNhbkRpc3BsYXkoW3JlcXVlc3QgVVJMXSkp
OwogICAgIAogICAgIEFTU0VSVChbcmVxdWVzdCBVUkxdKTsKICAgICBBU1NFUlQocGx1Z2luKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFjL1BsdWdpbnMvV2ViTmV0c2NhcGVQbHVnaW5W
aWV3Lm1tIGIvU291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpblZpZXcu
bW0KaW5kZXggOTZhYTVkYi4uMDQ1ZjcxZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMv
UGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpblZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMv
UGx1Z2lucy9XZWJOZXRzY2FwZVBsdWdpblZpZXcubW0KQEAgLTE3MjcsNyArMTcyNyw3IEBAIHN0
YXRpYyBpbmxpbmUgdm9pZCBnZXROUFJlY3QoY29uc3QgTlNSZWN0JiBuciwgTlBSZWN0JiBucHIp
CiAgICAgICAgICAgICByZXR1cm4gTlBFUlJfSU5WQUxJRF9QQVJBTTsKICAgICAgICAgfQogICAg
IH0gZWxzZSB7Ci0gICAgICAgIGlmICghY29yZShbc2VsZiB3ZWJGcmFtZV0pLT5kb2N1bWVudCgp
LT5zZWN1cml0eU9yaWdpbigpLT5jYW5EaXNwbGF5KFVSTCkpCisgICAgICAgIGlmICghY29yZShb
c2VsZiB3ZWJGcmFtZV0pLT5kb2N1bWVudCgpLnNlY3VyaXR5T3JpZ2luKCktPmNhbkRpc3BsYXko
VVJMKSkKICAgICAgICAgICAgIHJldHVybiBOUEVSUl9HRU5FUklDX0VSUk9SOwogICAgIH0KICAg
ICAgICAgCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9QbHVnaW5zL1dlYlBsdWdpbkNv
bnRhaW5lckNoZWNrLm1tIGIvU291cmNlL1dlYktpdC9tYWMvUGx1Z2lucy9XZWJQbHVnaW5Db250
YWluZXJDaGVjay5tbQppbmRleCA4ODRjODc3Li4yZjhkNDEzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L21hYy9QbHVnaW5zL1dlYlBsdWdpbkNvbnRhaW5lckNoZWNrLm1tCisrKyBiL1NvdXJj
ZS9XZWJLaXQvbWFjL1BsdWdpbnMvV2ViUGx1Z2luQ29udGFpbmVyQ2hlY2subW0KQEAgLTEwNiw3
ICsxMDYsNyBAQCB1c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKIHsKICAgIEZyYW1lKiBjb3JlRnJh
bWUgPSBjb3JlKFtfY29udHJvbGxlciB3ZWJGcmFtZV0pOwogICAgQVNTRVJUKGNvcmVGcmFtZSk7
Ci0gICBpZiAoIWNvcmVGcmFtZS0+ZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKS0+Y2FuRGlz
cGxheShbX3JlcXVlc3QgVVJMXSkpIHsKKyAgIGlmICghY29yZUZyYW1lLT5kb2N1bWVudCgpLnNl
Y3VyaXR5T3JpZ2luKCktPmNhbkRpc3BsYXkoW19yZXF1ZXN0IFVSTF0pKSB7CiAgICAgICAgW3Nl
bGYgX2NvbnRpbnVlV2l0aFBvbGljeTpQb2xpY3lJZ25vcmVdOwogICAgICAgIHJldHVybiBZRVM7
CiAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJD
aHJvbWVDbGllbnQubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJv
bWVDbGllbnQubW0KaW5kZXggOTc2YjdjZi4uZTJmN2ZlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50Lm1tCisrKyBiL1NvdXJjZS9X
ZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNsaWVudC5tbQpAQCAtMjQwLDggKzI0
MCw4IEBAIFBhZ2UqIFdlYkNocm9tZUNsaWVudDo6Y3JlYXRlV2luZG93KEZyYW1lKiBmcmFtZSwg
Y29uc3QgRnJhbWVMb2FkUmVxdWVzdCYsIGNvbnN0CiAgICAgV2ViVmlldyAqbmV3V2ViVmlldzsK
IAogI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKLSAgICBpZiAoZnJhbWUtPmRvY3VtZW50KCkg
JiYgZnJhbWUtPmRvY3VtZW50KCktPndlYmtpdEN1cnJlbnRGdWxsU2NyZWVuRWxlbWVudCgpKQot
ICAgICAgICBmcmFtZS0+ZG9jdW1lbnQoKS0+d2Via2l0Q2FuY2VsRnVsbFNjcmVlbigpOworICAg
IGlmIChmcmFtZS0+ZG9jdW1lbnQoKSAmJiBmcmFtZS0+ZG9jdW1lbnQoKS53ZWJraXRDdXJyZW50
RnVsbFNjcmVlbkVsZW1lbnQoKSkKKyAgICAgICAgZnJhbWUtPmRvY3VtZW50KCkud2Via2l0Q2Fu
Y2VsRnVsbFNjcmVlbigpOwogI2VuZGlmCiAgICAgCiAgICAgaWYgKFtkZWxlZ2F0ZSByZXNwb25k
c1RvU2VsZWN0b3I6QHNlbGVjdG9yKHdlYlZpZXc6Y3JlYXRlV2ViVmlld1dpdGhSZXF1ZXN0Ondp
bmRvd0ZlYXR1cmVzOildKSB7CkBAIC02NzEsNyArNjcxLDcgQEAgdm9pZCBXZWJDaHJvbWVDbGll
bnQ6OmV4Y2VlZGVkRGF0YWJhc2VRdW90YShGcmFtZSogZnJhbWUsIGNvbnN0IFN0cmluZyYgZGF0
YWJhc2UKIHsKICAgICBCRUdJTl9CTE9DS19PQkpDX0VYQ0VQVElPTlM7CiAKLSAgICBXZWJTZWN1
cml0eU9yaWdpbiAqd2ViT3JpZ2luID0gW1tXZWJTZWN1cml0eU9yaWdpbiBhbGxvY10gX2luaXRX
aXRoV2ViQ29yZVNlY3VyaXR5T3JpZ2luOmZyYW1lLT5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdp
bigpXTsKKyAgICBXZWJTZWN1cml0eU9yaWdpbiAqd2ViT3JpZ2luID0gW1tXZWJTZWN1cml0eU9y
aWdpbiBhbGxvY10gX2luaXRXaXRoV2ViQ29yZVNlY3VyaXR5T3JpZ2luOmZyYW1lLT5kb2N1bWVu
dCgpLnNlY3VyaXR5T3JpZ2luKCldOwogI2lmICFQTEFURk9STShJT1MpCiAgICAgLy8gRklYTUU6
IHJlbW92ZSB0aGlzIHdvcmthcm91bmQgb25jZSBzaGlwcGluZyBTYWZhcmkgaGFzIHRoZSBuZWNl
c3NhcnkgZGVsZWdhdGUgaW1wbGVtZW50ZWQuCiAgICAgaWYgKFdLQXBwVmVyc2lvbkNoZWNrTGVz
c1RoYW4oQCJjb20uYXBwbGUuU2FmYXJpIiwgLTEsIDMuMSkpIHsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50Lm1tIGIvU291
cmNlL1dlYktpdC9tYWMvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0KaW5k
ZXggYzZkMzBhMC4uODJkYmM0YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViQ29y
ZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMv
V2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQubW0KQEAgLTIwOCw3ICsyMDgsNyBA
QCBzdGF0aWMgdm9pZCBhcHBseUFwcGxlRGljdGlvbmFyeUFwcGxpY2F0aW9uUXVpcmtOb25Jbmxp
bmVQYXJ0KFdlYkZyYW1lTG9hZGVyQ2xpZQogICAgICAgICByZXR1cm47CiAgICAgaWYgKGZyYW1l
LT50cmVlKCkucGFyZW50KCkpCiAgICAgICAgIHJldHVybjsKLSAgICBEb2N1bWVudCogZG9jdW1l
bnQgPSBmcmFtZS0+ZG9jdW1lbnQoKTsKKyAgICBEb2N1bWVudCogZG9jdW1lbnQgPSAmZnJhbWUt
PmRvY3VtZW50KCk7CiAgICAgaWYgKCFkb2N1bWVudCkKICAgICAgICAgcmV0dXJuOwogICAgIEhU
TUxIZWFkRWxlbWVudCogaGVhZCA9IGRvY3VtZW50LT5oZWFkKCk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L21hYy9XZWJDb3JlU3VwcG9ydC9XZWJHZW9sb2NhdGlvbkNsaWVudC5tbSBiL1Nv
dXJjZS9XZWJLaXQvbWFjL1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50Lm1tCmlu
ZGV4IGQ1ODQ2MGUuLjViM2Y3M2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYkNv
cmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50Lm1tCisrKyBiL1NvdXJjZS9XZWJLaXQvbWFj
L1dlYkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50Lm1tCkBAIC0xMTMsNyArMTEzLDcg
QEAgdm9pZCBXZWJHZW9sb2NhdGlvbkNsaWVudDo6cmVxdWVzdFBlcm1pc3Npb24oR2VvbG9jYXRp
b24qIGdlb2xvY2F0aW9uKQogCiAjaWYgIVBMQVRGT1JNKElPUykKICAgICBGcmFtZSAqZnJhbWUg
PSBnZW9sb2NhdGlvbi0+ZnJhbWUoKTsKLSAgICBXZWJTZWN1cml0eU9yaWdpbiAqd2ViT3JpZ2lu
ID0gW1tXZWJTZWN1cml0eU9yaWdpbiBhbGxvY10gX2luaXRXaXRoV2ViQ29yZVNlY3VyaXR5T3Jp
Z2luOmZyYW1lLT5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpXTsKKyAgICBXZWJTZWN1cml0
eU9yaWdpbiAqd2ViT3JpZ2luID0gW1tXZWJTZWN1cml0eU9yaWdpbiBhbGxvY10gX2luaXRXaXRo
V2ViQ29yZVNlY3VyaXR5T3JpZ2luOmZyYW1lLT5kb2N1bWVudCgpLnNlY3VyaXR5T3JpZ2luKCld
OwogICAgIFdlYkdlb2xvY2F0aW9uUG9saWN5TGlzdGVuZXIqIGxpc3RlbmVyID0gW1tXZWJHZW9s
b2NhdGlvblBvbGljeUxpc3RlbmVyIGFsbG9jXSBpbml0V2l0aEdlb2xvY2F0aW9uOmdlb2xvY2F0
aW9uXTsKIAogICAgIENhbGxVSURlbGVnYXRlKG1fd2ViVmlldywgc2VsZWN0b3IsIHdlYk9yaWdp
biwga2l0KGZyYW1lKSwgbGlzdGVuZXIpOwpAQCAtMjIwLDcgKzIyMCw3IEBAIEdlb2xvY2F0aW9u
UG9zaXRpb24qIFdlYkdlb2xvY2F0aW9uQ2xpZW50OjpsYXN0UG9zaXRpb24oKQogICAgICAgICBb
cHJvdmlkZXIgY2FuY2VsV2FybVVwRm9yV2ViVmlldzp3ZWJWaWV3XTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KLSAgICBXZWJTZWN1cml0eU9yaWdpbiAqd2ViT3JpZ2luID0gW1tXZWJTZWN1cml0
eU9yaWdpbiBhbGxvY10gX2luaXRXaXRoV2ViQ29yZVNlY3VyaXR5T3JpZ2luOmZyYW1lLT5kb2N1
bWVudCgpLT5zZWN1cml0eU9yaWdpbigpXTsKKyAgICBXZWJTZWN1cml0eU9yaWdpbiAqd2ViT3Jp
Z2luID0gW1tXZWJTZWN1cml0eU9yaWdpbiBhbGxvY10gX2luaXRXaXRoV2ViQ29yZVNlY3VyaXR5
T3JpZ2luOmZyYW1lLT5kb2N1bWVudCgpLnNlY3VyaXR5T3JpZ2luKCldOwogICAgIFdlYkdlb2xv
Y2F0aW9uUG9saWN5TGlzdGVuZXIgKmxpc3RlbmVyID0gW1tXZWJHZW9sb2NhdGlvblBvbGljeUxp
c3RlbmVyIGFsbG9jXSBpbml0V2l0aEdlb2xvY2F0aW9uOm1fZ2VvbG9jYXRpb24uZ2V0KCkgZm9y
V2ViVmlldzp3ZWJWaWV3IHByb3ZpZGVyOnByb3ZpZGVyXTsKICAgICBTRUwgc2VsZWN0b3IgPSBA
c2VsZWN0b3Iod2ViVmlldzpkZWNpZGVQb2xpY3lGb3JHZW9sb2NhdGlvblJlcXVlc3RGcm9tT3Jp
Z2luOmZyYW1lOmxpc3RlbmVyOik7CiAgICAgQ2FsbFVJRGVsZWdhdGUod2ViVmlldywgc2VsZWN0
b3IsIHdlYk9yaWdpbiwga2l0KGZyYW1lKSwgbGlzdGVuZXIpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZp
ZXcvV2ViRnJhbWUubW0KaW5kZXggNzgxYTM5Yy4uNzQxYTgzNiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9tYWMvV2ViVmlldy9XZWJGcmFtZS5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9X
ZWJWaWV3L1dlYkZyYW1lLm1tCkBAIC04NDksNyArODQ5LDcgQEAgc3RhdGljIGlubGluZSBXZWJE
YXRhU291cmNlICpkYXRhU291cmNlKERvY3VtZW50TG9hZGVyKiBsb2FkZXIpCiAKICAgICBBU1NF
UlQoJnN0YXJ0Q29udGFpbmVyLT5kb2N1bWVudCgpID09ICZlbmRDb250YWluZXItPmRvY3VtZW50
KCkpOwogICAgIAotICAgIF9wcml2YXRlLT5jb3JlRnJhbWUtPmRvY3VtZW50KCktPnVwZGF0ZUxh
eW91dElnbm9yZVBlbmRpbmdTdHlsZXNoZWV0cygpOworICAgIF9wcml2YXRlLT5jb3JlRnJhbWUt
PmRvY3VtZW50KCkudXBkYXRlTGF5b3V0SWdub3JlUGVuZGluZ1N0eWxlc2hlZXRzKCk7CiAKICAg
ICBQb3NpdGlvbiBzdGFydCA9IFBvc2l0aW9uKHN0YXJ0Q29udGFpbmVyLCBbcHJvcG9zZWRSYW5n
ZSBzdGFydE9mZnNldF0sIFBvc2l0aW9uOjpQb3NpdGlvbklzT2Zmc2V0SW5BbmNob3IpOwogICAg
IFBvc2l0aW9uIGVuZCA9IFBvc2l0aW9uKGVuZENvbnRhaW5lciwgW3Byb3Bvc2VkUmFuZ2UgZW5k
T2Zmc2V0XSwgUG9zaXRpb246OlBvc2l0aW9uSXNPZmZzZXRJbkFuY2hvcik7CkBAIC04NjMsNyAr
ODYzLDcgQEAgc3RhdGljIGlubGluZSBXZWJEYXRhU291cmNlICpkYXRhU291cmNlKERvY3VtZW50
TG9hZGVyKiBsb2FkZXIpCiAgICAgbmV3U3RhcnQgPSBuZXdTdGFydC5wYXJlbnRBbmNob3JlZEVx
dWl2YWxlbnQoKTsKICAgICBuZXdFbmQgPSBuZXdFbmQucGFyZW50QW5jaG9yZWRFcXVpdmFsZW50
KCk7CiAKLSAgICBSZWZQdHI8UmFuZ2U+IHJhbmdlID0gX3ByaXZhdGUtPmNvcmVGcmFtZS0+ZG9j
dW1lbnQoKS0+Y3JlYXRlUmFuZ2UoKTsKKyAgICBSZWZQdHI8UmFuZ2U+IHJhbmdlID0gX3ByaXZh
dGUtPmNvcmVGcmFtZS0+ZG9jdW1lbnQoKS5jcmVhdGVSYW5nZSgpOwogICAgIGludCBleGNlcHRp
b24gPSAwOwogICAgIHJhbmdlLT5zZXRTdGFydChuZXdTdGFydC5jb250YWluZXJOb2RlKCksIG5l
d1N0YXJ0Lm9mZnNldEluQ29udGFpbmVyTm9kZSgpLCBleGNlcHRpb24pOwogICAgIHJhbmdlLT5z
ZXRFbmQobmV3U3RhcnQuY29udGFpbmVyTm9kZSgpLCBuZXdTdGFydC5vZmZzZXRJbkNvbnRhaW5l
ck5vZGUoKSwgZXhjZXB0aW9uKTsKQEAgLTg3Niw3ICs4NzYsNyBAQCBzdGF0aWMgaW5saW5lIFdl
YkRhdGFTb3VyY2UgKmRhdGFTb3VyY2UoRG9jdW1lbnRMb2FkZXIqIGxvYWRlcikKICAgICBpZiAo
IWZyYW1lKQogICAgICAgICByZXR1cm4gbmlsOwogCi0gICAgRG9jdW1lbnQqIGRvY3VtZW50ID0g
ZnJhbWUtPmRvY3VtZW50KCk7CisgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gJmZyYW1lLT5kb2N1
bWVudCgpOwogICAgIGlmICghZG9jdW1lbnQpCiAgICAgICAgIHJldHVybiBuaWw7CiAKQEAgLTg4
OSw3ICs4ODksNyBAQCBzdGF0aWMgaW5saW5lIFdlYkRhdGFTb3VyY2UgKmRhdGFTb3VyY2UoRG9j
dW1lbnRMb2FkZXIqIGxvYWRlcikKICAgICBpZiAoIWZyYW1lKQogICAgICAgICByZXR1cm4gbmls
OwogCi0gICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gZnJhbWUtPmRvY3VtZW50KCk7CisgICAgRG9j
dW1lbnQqIGRvY3VtZW50ID0gJmZyYW1lLT5kb2N1bWVudCgpOwogICAgIGlmICghZG9jdW1lbnQp
CiAgICAgICAgIHJldHVybiBuaWw7CiAKQEAgLTkxMiw3ICs5MTIsNyBAQCBzdGF0aWMgaW5saW5l
IFdlYkRhdGFTb3VyY2UgKmRhdGFTb3VyY2UoRG9jdW1lbnRMb2FkZXIqIGxvYWRlcikKIAogLSAo
dm9pZClfcmVwbGFjZVNlbGVjdGlvbldpdGhOb2RlOihET01Ob2RlICopbm9kZSBzZWxlY3RSZXBs
YWNlbWVudDooQk9PTClzZWxlY3RSZXBsYWNlbWVudCBzbWFydFJlcGxhY2U6KEJPT0wpc21hcnRS
ZXBsYWNlIG1hdGNoU3R5bGU6KEJPT0wpbWF0Y2hTdHlsZQogewotICAgIERPTURvY3VtZW50RnJh
Z21lbnQgKmZyYWdtZW50ID0ga2l0KF9wcml2YXRlLT5jb3JlRnJhbWUtPmRvY3VtZW50KCktPmNy
ZWF0ZURvY3VtZW50RnJhZ21lbnQoKS5nZXQoKSk7CisgICAgRE9NRG9jdW1lbnRGcmFnbWVudCAq
ZnJhZ21lbnQgPSBraXQoX3ByaXZhdGUtPmNvcmVGcmFtZS0+ZG9jdW1lbnQoKS5jcmVhdGVEb2N1
bWVudEZyYWdtZW50KCkuZ2V0KCkpOwogICAgIFtmcmFnbWVudCBhcHBlbmRDaGlsZDpub2RlXTsK
ICAgICBbc2VsZiBfcmVwbGFjZVNlbGVjdGlvbldpdGhGcmFnbWVudDpmcmFnbWVudCBzZWxlY3RS
ZXBsYWNlbWVudDpzZWxlY3RSZXBsYWNlbWVudCBzbWFydFJlcGxhY2U6c21hcnRSZXBsYWNlIG1h
dGNoU3R5bGU6bWF0Y2hTdHlsZV07CiB9CkBAIC05NzMsNyArOTczLDcgQEAgc3RhdGljIGlubGlu
ZSBXZWJEYXRhU291cmNlICpkYXRhU291cmNlKERvY3VtZW50TG9hZGVyKiBsb2FkZXIpCiAtIChC
T09MKV9jYW5Qcm92aWRlRG9jdW1lbnRTb3VyY2UKIHsKICAgICBGcmFtZSogZnJhbWUgPSBfcHJp
dmF0ZS0+Y29yZUZyYW1lOwotICAgIFN0cmluZyBtaW1lVHlwZSA9IGZyYW1lLT5kb2N1bWVudCgp
LT5sb2FkZXIoKS0+d3JpdGVyKCkubWltZVR5cGUoKTsKKyAgICBTdHJpbmcgbWltZVR5cGUgPSBm
cmFtZS0+ZG9jdW1lbnQoKS5sb2FkZXIoKS0+d3JpdGVyKCkubWltZVR5cGUoKTsKICAgICBQbHVn
aW5EYXRhKiBwbHVnaW5EYXRhID0gZnJhbWUtPnBhZ2UoKSA/ICZmcmFtZS0+cGFnZSgpLT5wbHVn
aW5EYXRhKCkgOiAwOwogCiAgICAgaWYgKFdlYkNvcmU6OkRPTUltcGxlbWVudGF0aW9uOjppc1Rl
eHRNSU1FVHlwZShtaW1lVHlwZSkKQEAgLTExNDAsNyArMTE0MCw3IEBAIHN0YXRpYyBpbmxpbmUg
V2ViRGF0YVNvdXJjZSAqZGF0YVNvdXJjZShEb2N1bWVudExvYWRlciogbG9hZGVyKQogCiAtICh1
bnNpZ25lZClfcGVuZGluZ0ZyYW1lVW5sb2FkRXZlbnRDb3VudAogewotICAgIHJldHVybiBfcHJp
dmF0ZS0+Y29yZUZyYW1lLT5kb2N1bWVudCgpLT5kb21XaW5kb3coKS0+cGVuZGluZ1VubG9hZEV2
ZW50TGlzdGVuZXJzKCk7CisgICAgcmV0dXJuIF9wcml2YXRlLT5jb3JlRnJhbWUtPmRvY3VtZW50
KCkuZG9tV2luZG93KCktPnBlbmRpbmdVbmxvYWRFdmVudExpc3RlbmVycygpOwogfQogCiAjaWYg
RU5BQkxFKE5FVFNDQVBFX1BMVUdJTl9BUEkpCkBAIC0xNTU1LDcgKzE1NTUsNyBAQCBzdGF0aWMg
aW5saW5lIFdlYkRhdGFTb3VyY2UgKmRhdGFTb3VyY2UoRG9jdW1lbnRMb2FkZXIqIGxvYWRlcikK
ICAgICBpZiAoZnJhbWUtPnNlbGVjdGlvbigpLnNlbGVjdGlvbigpLmlzTm9uZSgpKQogICAgICAg
ICByZXR1cm4gTk87CiAgICAgICAgIAotICAgIGZyYW1lLT5kb2N1bWVudCgpLT51cGRhdGVMYXlv
dXQoKTsKKyAgICBmcmFtZS0+ZG9jdW1lbnQoKS51cGRhdGVMYXlvdXQoKTsKICAgICAKICAgICBy
ZXR1cm4gZnJhbWUtPnNlbGVjdGlvbigpLnNlbGVjdGlvbkF0RG9jdW1lbnRTdGFydCgpOwogfQpA
QCAtMTU2Nyw3ICsxNTY3LDcgQEAgc3RhdGljIGlubGluZSBXZWJEYXRhU291cmNlICpkYXRhU291
cmNlKERvY3VtZW50TG9hZGVyKiBsb2FkZXIpCiAgICAgaWYgKGZyYW1lLT5zZWxlY3Rpb24oKS5z
ZWxlY3Rpb24oKS5pc05vbmUoKSkKICAgICAgICAgcmV0dXJuIE5POwogICAgICAgICAKLSAgICBm
cmFtZS0+ZG9jdW1lbnQoKS0+dXBkYXRlTGF5b3V0KCk7CisgICAgZnJhbWUtPmRvY3VtZW50KCku
dXBkYXRlTGF5b3V0KCk7CiAgICAgCiAgICAgcmV0dXJuIGZyYW1lLT5zZWxlY3Rpb24oKS5zZWxl
Y3Rpb25BdFNlbnRlbmNlU3RhcnQoKTsKIH0KQEAgLTE1NzksNyArMTU3OSw3IEBAIHN0YXRpYyBp
bmxpbmUgV2ViRGF0YVNvdXJjZSAqZGF0YVNvdXJjZShEb2N1bWVudExvYWRlciogbG9hZGVyKQog
ICAgIGlmIChmcmFtZS0+c2VsZWN0aW9uKCkuc2VsZWN0aW9uKCkuaXNOb25lKCkpCiAgICAgICAg
IHJldHVybiBOTzsKICAgICAgICAgCi0gICAgZnJhbWUtPmRvY3VtZW50KCktPnVwZGF0ZUxheW91
dCgpOworICAgIGZyYW1lLT5kb2N1bWVudCgpLnVwZGF0ZUxheW91dCgpOwogICAgIAogICAgIHJl
dHVybiBmcmFtZS0+c2VsZWN0aW9uKCkuc2VsZWN0aW9uQXRXb3JkU3RhcnQoKTsKIH0KQEAgLTE3
MTMsNyArMTcxMyw3IEBAIHN0YXRpYyBpbmxpbmUgV2ViRGF0YVNvdXJjZSAqZGF0YVNvdXJjZShE
b2N1bWVudExvYWRlciogbG9hZGVyKQogICAgIERvY3VtZW50ICpkb2N1bWVudCA9IGZyYW1lLT5k
b2N1bWVudCgpOwogCiAgICAgY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYgc2VsZWN0aW9uID0gZnJh
bWUtPnNlbGVjdGlvbigpLnNlbGVjdGlvbigpOwotICAgIEVsZW1lbnQgKnJvb3QgPSBzZWxlY3Rp
b24uc2VsZWN0aW9uVHlwZSgpID09IFZpc2libGVTZWxlY3Rpb246Ok5vU2VsZWN0aW9uID8gZnJh
bWUtPmRvY3VtZW50KCktPmJvZHkoKSA6IHNlbGVjdGlvbi5yb290RWRpdGFibGVFbGVtZW50KCk7
CisgICAgRWxlbWVudCAqcm9vdCA9IHNlbGVjdGlvbi5zZWxlY3Rpb25UeXBlKCkgPT0gVmlzaWJs
ZVNlbGVjdGlvbjo6Tm9TZWxlY3Rpb24gPyBGcmFtZS0+ZG9jdW1lbnQoKS5ib2R5KCkgOiBzZWxl
Y3Rpb24ucm9vdEVkaXRhYmxlRWxlbWVudCgpOwogICAgIAogICAgIERPTVJhbmdlICpwcmV2aW91
c0RPTVJhbmdlID0gbmlsOwogICAgIGlkIHByZXZpb3VzTWV0YWRhdGEgPSBuaWw7CkBAIC0yMDM3
LDcgKzIwMzcsNyBAQCBzdGF0aWMgaW5saW5lIFdlYkRhdGFTb3VyY2UgKmRhdGFTb3VyY2UoRG9j
dW1lbnRMb2FkZXIqIGxvYWRlcikKICAgICBpZiAoZnJhbWVMb2FkZXIuc3ViZnJhbWVMb2FkZXIo
KS5jb250YWluc1BsdWdpbnMoKSkKICAgICAgICAgW3Jlc3VsdCBzZXRPYmplY3Q6W05TTnVtYmVy
IG51bWJlcldpdGhCb29sOllFU10gZm9yS2V5OldlYkZyYW1lSGFzUGx1Z2luc107CiAgICAgCi0g
ICAgaWYgKERPTVdpbmRvdyogZG9tV2luZG93ID0gX3ByaXZhdGUtPmNvcmVGcmFtZS0+ZG9jdW1l
bnQoKS0+ZG9tV2luZG93KCkpIHsKKyAgICBpZiAoRE9NV2luZG93KiBkb21XaW5kb3cgPSBfcHJp
dmF0ZS0+Y29yZUZyYW1lLT5kb2N1bWVudCgpLmRvbVdpbmRvdygpKSB7CiAgICAgICAgIGlmIChk
b21XaW5kb3ctPmhhc0V2ZW50TGlzdGVuZXJzKGV2ZW50TmFtZXMoKS51bmxvYWRFdmVudCkpCiAg
ICAgICAgICAgICBbcmVzdWx0IHNldE9iamVjdDpbTlNOdW1iZXIgbnVtYmVyV2l0aEJvb2w6WUVT
XSBmb3JLZXk6V2ViRnJhbWVIYXNVbmxvYWRMaXN0ZW5lcl07CiAgICAgICAgIGlmIChkb21XaW5k
b3ctPm9wdGlvbmFsQXBwbGljYXRpb25DYWNoZSgpKQpAQCAtMjA2MCw3ICsyMDYwLDcgQEAgc3Rh
dGljIGlubGluZSBXZWJEYXRhU291cmNlICpkYXRhU291cmNlKERvY3VtZW50TG9hZGVyKiBsb2Fk
ZXIpCiB7CiAgICAgaWYgKCFfcHJpdmF0ZS0+Y29yZUZyYW1lKQogICAgICAgICByZXR1cm4gWUVT
OwotICAgIHJldHVybiBfcHJpdmF0ZS0+Y29yZUZyYW1lLT5kb2N1bWVudCgpLT5zZWN1cml0eU9y
aWdpbigpLT5jYW5EaXNwbGF5KFVSTCk7CisgICAgcmV0dXJuIF9wcml2YXRlLT5jb3JlRnJhbWUt
PmRvY3VtZW50KCkuc2VjdXJpdHlPcmlnaW4oKS0+Y2FuRGlzcGxheShVUkwpOwogfQogCiAtIChO
U1N0cmluZyAqKV9zdHJpbmdCeUV2YWx1YXRpbmdKYXZhU2NyaXB0RnJvbVN0cmluZzooTlNTdHJp
bmcgKilzdHJpbmcgd2l0aEdsb2JhbE9iamVjdDooSlNPYmplY3RSZWYpZ2xvYmFsT2JqZWN0UmVm
IGluU2NyaXB0V29ybGQ6KFdlYlNjcmlwdFdvcmxkICopd29ybGQKQEAgLTIxNDksNyArMjE0OSw3
IEBAIHN0YXRpYyBpbmxpbmUgV2ViRGF0YVNvdXJjZSAqZGF0YVNvdXJjZShEb2N1bWVudExvYWRl
ciogbG9hZGVyKQogICAgIGlmICghX3ByaXZhdGUtPmNvcmVGcmFtZSB8fCAhX3ByaXZhdGUtPmNv
cmVGcmFtZS0+ZG9jdW1lbnQoKSkKICAgICAgICAgcmV0dXJuOwogICAgIAotICAgIEFjY2Vzc2li
aWxpdHlPYmplY3QqIHJvb3RPYmplY3QgPSBfcHJpdmF0ZS0+Y29yZUZyYW1lLT5kb2N1bWVudCgp
LT5heE9iamVjdENhY2hlKCktPnJvb3RPYmplY3QoKTsKKyAgICBBY2Nlc3NpYmlsaXR5T2JqZWN0
KiByb290T2JqZWN0ID0gX3ByaXZhdGUtPmNvcmVGcmFtZS0+ZG9jdW1lbnQoKS5heE9iamVjdENh
Y2hlKCktPnJvb3RPYmplY3QoKTsKICAgICBpZiAocm9vdE9iamVjdCkgewogICAgICAgICBTdHJp
bmcgc3RyTmFtZShuYW1lKTsKICAgICAgICAgcm9vdE9iamVjdC0+c2V0QWNjZXNzaWJsZU5hbWUo
c3RyTmFtZSk7CkBAIC0yMjM4LDcgKzIyMzgsNyBAQCBzdGF0aWMgaW5saW5lIFdlYkRhdGFTb3Vy
Y2UgKmRhdGFTb3VyY2UoRG9jdW1lbnRMb2FkZXIqIGxvYWRlcikKICAgICBpZiAoIV9wcml2YXRl
LT5jb3JlRnJhbWUtPnZpZXcoKS0+ZG9jdW1lbnRWaWV3KCkpCiAgICAgICAgIHJldHVybiBbTlNB
cnJheSBhcnJheV07CiAKLSAgICBSZW5kZXJWaWV3KiByb290ID0gX3ByaXZhdGUtPmNvcmVGcmFt
ZS0+ZG9jdW1lbnQoKS0+cmVuZGVyVmlldygpOworICAgIFJlbmRlclZpZXcqIHJvb3QgPSBfcHJp
dmF0ZS0+Y29yZUZyYW1lLT5kb2N1bWVudCgpLnJlbmRlclZpZXcoKTsKICAgICBpZiAoIXJvb3Qp
CiAgICAgICAgIHJldHVybiBbTlNBcnJheSBhcnJheV07CiAKQEAgLTIyODcsNyArMjI4Nyw3IEBA
IHN0YXRpYyBpbmxpbmUgV2ViRGF0YVNvdXJjZSAqZGF0YVNvdXJjZShEb2N1bWVudExvYWRlciog
bG9hZGVyKQogICAgIEVsZW1lbnQqIHJvb3Q7CiAgICAgY29uc3QgVmlzaWJsZVNlbGVjdGlvbiYg
c2VsZWN0aW9uID0gY29yZUZyYW1lLT5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKTsKICAgICBpZiAo
c2VsZWN0aW9uLmlzTm9uZSgpIHx8ICFzZWxlY3Rpb24uaXNDb250ZW50RWRpdGFibGUoKSkKLSAg
ICAgICAgcm9vdCA9IGNvcmVGcmFtZS0+ZG9jdW1lbnQoKS0+Ym9keSgpOworICAgICAgICByb290
ID0gY29yZUZyYW1lLT5kb2N1bWVudCgpLmJvZHkoKTsKICAgICBlbHNlIHsKICAgICAgICAgLy8g
Q2FuJ3QgdXNlIHRoZSBmb2N1c2VkTm9kZSBoZXJlIGJlY2F1c2Ugd2Ugd2FudCB0aGUgcm9vdCBv
ZiB0aGUgc2hhZG93IHRyZWUgZm9yIGZvcm0gZWxlbWVudHMuCiAgICAgICAgIHJvb3QgPSBzZWxl
Y3Rpb24ucm9vdEVkaXRhYmxlRWxlbWVudCgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9t
YWMvV2ViVmlldy9XZWJIVE1MUmVwcmVzZW50YXRpb24ubW0gYi9Tb3VyY2UvV2ViS2l0L21hYy9X
ZWJWaWV3L1dlYkhUTUxSZXByZXNlbnRhdGlvbi5tbQppbmRleCBmYzNhODFjLi5mNzM0MjU2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkhUTUxSZXByZXNlbnRhdGlv
bi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkhUTUxSZXByZXNlbnRhdGlv
bi5tbQpAQCAtMTg5LDcgKzE4OSw3IEBAIHN0YXRpYyBOU011dGFibGVBcnJheSAqbmV3QXJyYXlC
eUNvbmNhdGVuYXRpbmdBcnJheXMoTlNBcnJheSAqZmlyc3QsIE5TQXJyYXkgKnNlCiAKICAgICAv
LyBJZiB0aGUgZG9jdW1lbnQgaXMgYSBzdGFuZC1hbG9uZSBtZWRpYSBkb2N1bWVudCwgbm93IGlz
IHRoZSByaWdodCB0aW1lIHRvIGNhbmNlbCB0aGUgV2ViS2l0IGxvYWQKICAgICBGcmFtZSogY29y
ZUZyYW1lID0gY29yZSh3ZWJGcmFtZSk7Ci0gICAgaWYgKGNvcmVGcmFtZS0+ZG9jdW1lbnQoKS0+
aXNNZWRpYURvY3VtZW50KCkpCisgICAgaWYgKGNvcmVGcmFtZS0+ZG9jdW1lbnQoKS5pc01lZGlh
RG9jdW1lbnQoKSkKICAgICAgICAgY29yZUZyYW1lLT5sb2FkZXIoKS5kb2N1bWVudExvYWRlcigp
LT5jYW5jZWxNYWluUmVzb3VyY2VMb2FkKGNvcmVGcmFtZS0+bG9hZGVyKCkuY2xpZW50KCkucGx1
Z2luV2lsbEhhbmRsZUxvYWRFcnJvcihjb3JlRnJhbWUtPmxvYWRlcigpLmRvY3VtZW50TG9hZGVy
KCktPnJlc3BvbnNlKCkpKTsKIAogICAgIGlmIChfcHJpdmF0ZS0+cGx1Z2luVmlldykgewpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbSBiL1NvdXJj
ZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViSFRNTFZpZXcubW0KaW5kZXggNzk0MjE5MC4uZTAwZTNk
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJIVE1MVmlldy5tbQor
KysgYi9Tb3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYkhUTUxWaWV3Lm1tCkBAIC0yMzIyLDcg
KzIzMjIsNyBAQCBzdGF0aWMgYm9vbCBtb3VzZUV2ZW50SXNQYXJ0T2ZDbGlja09yRHJhZyhOU0V2
ZW50ICpldmVudCkKICAgICBpZiAoIWZyYW1lKQogICAgICAgICByZXR1cm4gTk87CiAKLSAgICBp
ZiAoZnJhbWUtPmRvY3VtZW50KCkgJiYgZnJhbWUtPmRvY3VtZW50KCktPmlzRnJhbWVTZXQoKSkg
eworICAgIGlmIChmcmFtZS0+ZG9jdW1lbnQoKSAmJiBmcmFtZS0+ZG9jdW1lbnQoKS5pc0ZyYW1l
U2V0KCkpIHsKICAgICAgICAgbWluaW11bVBhZ2VXaWR0aCA9IDA7CiAgICAgICAgIG1pbmltdW1Q
YWdlSGVpZ2h0ID0gMDsKICAgICB9CkBAIC0yMzQxLDcgKzIzNDEsNyBAQCBzdGF0aWMgYm9vbCBt
b3VzZUV2ZW50SXNQYXJ0T2ZDbGlja09yRHJhZyhOU0V2ZW50ICpldmVudCkKICAgICBpZiAoIWZy
YW1lKQogICAgICAgICByZXR1cm4gTk87CiAKLSAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBmcmFt
ZS0+ZG9jdW1lbnQoKTsKKyAgICBEb2N1bWVudCogZG9jdW1lbnQgPSAmZnJhbWUtPmRvY3VtZW50
KCk7CiAgICAgYm9vbCBpc0hvcml6b250YWwgPSAhZG9jdW1lbnQgfHwgIWRvY3VtZW50LT5yZW5k
ZXJWaWV3KCkgfHwgZG9jdW1lbnQtPnJlbmRlclZpZXcoKS0+c3R5bGUoKS5pc0hvcml6b250YWxX
cml0aW5nTW9kZSgpOwogCiAgICAgZmxvYXQgcGFnZUxvZ2ljYWxXaWR0aCA9IGlzSG9yaXpvbnRh
bCA/IHBhZ2VXaWR0aCA6IHBhZ2VIZWlnaHQ7CkBAIC0yMzUxLDcgKzIzNTEsNyBAQCBzdGF0aWMg
Ym9vbCBtb3VzZUV2ZW50SXNQYXJ0T2ZDbGlja09yRHJhZyhOU0V2ZW50ICpldmVudCkKIAogICAg
IC8vIElmIHdlIGFyZSBhIGZyYW1lc2V0IGp1c3QgcHJpbnQgd2l0aCB0aGUgbGF5b3V0IHdlIGhh
dmUgb25zY3JlZW4sIG90aGVyd2lzZSByZWxheW91dAogICAgIC8vIGFjY29yZGluZyB0byB0aGUg
cGFnZSB3aWR0aC4KLSAgICBpZiAoc2hyaW5rVG9GaXQgJiYgKCFmcmFtZS0+ZG9jdW1lbnQoKSB8
fCAhZnJhbWUtPmRvY3VtZW50KCktPmlzRnJhbWVTZXQoKSkpIHsKKyAgICBpZiAoc2hyaW5rVG9G
aXQgJiYgKCFmcmFtZS0+ZG9jdW1lbnQoKSB8fCAhZnJhbWUtPmRvY3VtZW50KCkuaXNGcmFtZVNl
dCgpKSkgewogICAgICAgICBtaW5MYXlvdXRTaXplID0gZnJhbWUtPnJlc2l6ZVBhZ2VSZWN0c0tl
ZXBpbmdSYXRpbyhGbG9hdFNpemUocGFnZUxvZ2ljYWxXaWR0aCwgcGFnZUxvZ2ljYWxIZWlnaHQp
LCBGbG9hdFNpemUocGFnZUxvZ2ljYWxXaWR0aCAqIF9XZWJIVE1MVmlld1ByaW50aW5nTWluaW11
bVNocmlua0ZhY3RvciwgcGFnZUxvZ2ljYWxIZWlnaHQgKiBfV2ViSFRNTFZpZXdQcmludGluZ01p
bmltdW1TaHJpbmtGYWN0b3IpKTsKICAgICAgICAgbWF4aW11bVNocmlua1JhdGlvID0gX1dlYkhU
TUxWaWV3UHJpbnRpbmdNYXhpbXVtU2hyaW5rRmFjdG9yIC8gX1dlYkhUTUxWaWV3UHJpbnRpbmdN
aW5pbXVtU2hyaW5rRmFjdG9yOwogICAgIH0KQEAgLTIzNzcsNyArMjM3Nyw3IEBAIHN0YXRpYyBi
b29sIG1vdXNlRXZlbnRJc1BhcnRPZkNsaWNrT3JEcmFnKE5TRXZlbnQgKmV2ZW50KQogICAgIGlm
ICghZnJhbWUpCiAgICAgICAgIHJldHVybiBOTzsKIAotICAgIERvY3VtZW50KiBkb2N1bWVudCA9
IGZyYW1lLT5kb2N1bWVudCgpOworICAgIERvY3VtZW50KiBkb2N1bWVudCA9ICZmcmFtZS0+ZG9j
dW1lbnQoKTsKICAgICBib29sIGlzSG9yaXpvbnRhbCA9ICFkb2N1bWVudCB8fCAhZG9jdW1lbnQt
PnJlbmRlclZpZXcoKSB8fCBkb2N1bWVudC0+cmVuZGVyVmlldygpLT5zdHlsZSgpLmlzSG9yaXpv
bnRhbFdyaXRpbmdNb2RlKCk7CiAKICAgICBmbG9hdCBwYWdlTG9naWNhbFdpZHRoID0gaXNIb3Jp
em9udGFsID8gcGFnZVNpemUud2lkdGggOiBwYWdlU2l6ZS5oZWlnaHQ7CkBAIC0yMzg3LDcgKzIz
ODcsNyBAQCBzdGF0aWMgYm9vbCBtb3VzZUV2ZW50SXNQYXJ0T2ZDbGlja09yRHJhZyhOU0V2ZW50
ICpldmVudCkKIAogICAgIC8vIElmIHdlIGFyZSBhIGZyYW1lc2V0IGp1c3QgcHJpbnQgd2l0aCB0
aGUgbGF5b3V0IHdlIGhhdmUgb25zY3JlZW4sIG90aGVyd2lzZSByZWxheW91dAogICAgIC8vIGFj
Y29yZGluZyB0byB0aGUgcGFnZSB3aWR0aC4KLSAgICBpZiAoc2hyaW5rVG9GaXQgJiYgKCFmcmFt
ZS0+ZG9jdW1lbnQoKSB8fCAhZnJhbWUtPmRvY3VtZW50KCktPmlzRnJhbWVTZXQoKSkpIHsKKyAg
ICBpZiAoc2hyaW5rVG9GaXQgJiYgKCFmcmFtZS0+ZG9jdW1lbnQoKSB8fCAhZnJhbWUtPmRvY3Vt
ZW50KCkuaXNGcmFtZVNldCgpKSkgewogICAgICAgICBtaW5MYXlvdXRTaXplID0gZnJhbWUtPnJl
c2l6ZVBhZ2VSZWN0c0tlZXBpbmdSYXRpbyhGbG9hdFNpemUocGFnZUxvZ2ljYWxXaWR0aCwgcGFn
ZUxvZ2ljYWxIZWlnaHQpLCBGbG9hdFNpemUocGFnZUxvZ2ljYWxXaWR0aCAqIF9XZWJIVE1MVmll
d1ByaW50aW5nTWluaW11bVNocmlua0ZhY3RvciwgcGFnZUxvZ2ljYWxIZWlnaHQgKiBfV2ViSFRN
TFZpZXdQcmludGluZ01pbmltdW1TaHJpbmtGYWN0b3IpKTsKICAgICAgICAgbWF4aW11bVNocmlu
a1JhdGlvID0gX1dlYkhUTUxWaWV3UHJpbnRpbmdNYXhpbXVtU2hyaW5rRmFjdG9yIC8gX1dlYkhU
TUxWaWV3UHJpbnRpbmdNaW5pbXVtU2hyaW5rRmFjdG9yOwogICAgIH0KQEAgLTMyNTksNyArMzI1
OSw3IEBAIFdFQkNPUkVfQ09NTUFORCh0b2dnbGVVbmRlcmxpbmUpCiAjZW5kaWYKIAogICAgIGlm
IChGcmFtZSogY29yZUZyYW1lID0gY29yZShbc2VsZiBfZnJhbWVdKSkKLSAgICAgICAgY29yZUZy
YW1lLT5kb2N1bWVudCgpLT5zdHlsZVJlc29sdmVyQ2hhbmdlZChSZWNhbGNTdHlsZUltbWVkaWF0
ZWx5KTsKKyAgICAgICAgY29yZUZyYW1lLT5kb2N1bWVudCgpLnN0eWxlUmVzb2x2ZXJDaGFuZ2Vk
KFJlY2FsY1N0eWxlSW1tZWRpYXRlbHkpOwogICAgIAogI2lmZGVmIExPR19USU1FUyAgICAgICAg
CiAgICAgZG91YmxlIHRoaXNUaW1lID0gQ0ZBYnNvbHV0ZVRpbWVHZXRDdXJyZW50KCkgLSBzdGFy
dDsKQEAgLTMyNzUsOSArMzI3NSw5IEBAIFdFQkNPUkVfQ09NTUFORCh0b2dnbGVVbmRlcmxpbmUp
CiAgICAgaWYgKCFjb3JlRnJhbWUpCiAgICAgICAgIHJldHVybjsKICAgICBpZiAoY29yZUZyYW1l
LT5kb2N1bWVudCgpKSB7Ci0gICAgICAgIGlmIChjb3JlRnJhbWUtPmRvY3VtZW50KCktPmluUGFn
ZUNhY2hlKCkpCisgICAgICAgIGlmIChjb3JlRnJhbWUtPmRvY3VtZW50KCkuaW5QYWdlQ2FjaGUo
KSkKICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgY29yZUZyYW1lLT5kb2N1bWVudCgpLT51
cGRhdGVTdHlsZUlmTmVlZGVkKCk7CisgICAgICAgIGNvcmVGcmFtZS0+ZG9jdW1lbnQoKS51cGRh
dGVTdHlsZUlmTmVlZGVkKCk7CiAgICAgfQogCiAgICAgaWYgKCFbc2VsZiBfbmVlZHNMYXlvdXRd
KQpAQCAtMzI5Myw3ICszMjkzLDcgQEAgV0VCQ09SRV9DT01NQU5EKHRvZ2dsZVVuZGVybGluZSkK
ICAgICAgICAgaWYgKG1pblBhZ2VMb2dpY2FsV2lkdGggPiAwLjApIHsKICAgICAgICAgICAgIEZs
b2F0U2l6ZSBwYWdlU2l6ZShtaW5QYWdlTG9naWNhbFdpZHRoLCBtaW5QYWdlTG9naWNhbEhlaWdo
dCk7CiAgICAgICAgICAgICBGbG9hdFNpemUgb3JpZ2luYWxQYWdlU2l6ZShvcmlnaW5hbFBhZ2VX
aWR0aCwgb3JpZ2luYWxQYWdlSGVpZ2h0KTsKLSAgICAgICAgICAgIGlmIChjb3JlRnJhbWUtPmRv
Y3VtZW50KCkgJiYgY29yZUZyYW1lLT5kb2N1bWVudCgpLT5yZW5kZXJWaWV3KCkgJiYgIWNvcmVG
cmFtZS0+ZG9jdW1lbnQoKS0+cmVuZGVyVmlldygpLT5zdHlsZSgpLmlzSG9yaXpvbnRhbFdyaXRp
bmdNb2RlKCkpIHsKKyAgICAgICAgICAgIGlmIChjb3JlRnJhbWUtPmRvY3VtZW50KCkgJiYgY29y
ZUZyYW1lLT5kb2N1bWVudCgpLnJlbmRlclZpZXcoKSAmJiAhY29yZUZyYW1lLT5kb2N1bWVudCgp
LnJlbmRlclZpZXcoKS0+c3R5bGUoKS5pc0hvcml6b250YWxXcml0aW5nTW9kZSgpKSB7CiAgICAg
ICAgICAgICAgICAgcGFnZVNpemUgPSBGbG9hdFNpemUobWluUGFnZUxvZ2ljYWxIZWlnaHQsIG1p
blBhZ2VMb2dpY2FsV2lkdGgpOwogICAgICAgICAgICAgICAgIG9yaWdpbmFsUGFnZVNpemUgPSBG
bG9hdFNpemUob3JpZ2luYWxQYWdlSGVpZ2h0LCBvcmlnaW5hbFBhZ2VXaWR0aCk7CiAgICAgICAg
ICAgICB9CkBAIC0zNDcwLDcgKzM0NzAsNyBAQCBzdGF0aWMgdm9pZCBzZXRNZW51VGFyZ2V0cyhO
U01lbnUqIG1lbnUpCiAgICAgaWYgKCFmbGFnKQogICAgICAgICByZXR1cm47IC8vIFRoZXJlJ3Mg
bm8gd2F5IHRvIHNheSB5b3UgZG9uJ3QgbmVlZCBhIGxheW91dC4KICAgICBpZiAoRnJhbWUqIGZy
YW1lID0gY29yZShbc2VsZiBfZnJhbWVdKSkgewotICAgICAgICBpZiAoZnJhbWUtPmRvY3VtZW50
KCkgJiYgZnJhbWUtPmRvY3VtZW50KCktPmluUGFnZUNhY2hlKCkpCisgICAgICAgIGlmIChmcmFt
ZS0+ZG9jdW1lbnQoKSAmJiBmcmFtZS0+ZG9jdW1lbnQoKS5pblBhZ2VDYWNoZSgpKQogICAgICAg
ICAgICAgcmV0dXJuOwogICAgICAgICBpZiAoRnJhbWVWaWV3KiB2aWV3ID0gZnJhbWUtPnZpZXco
KSkKICAgICAgICAgICAgIHZpZXctPnNldE5lZWRzTGF5b3V0KCk7CkBAIC0zNDgzLDkgKzM0ODMs
OSBAQCBzdGF0aWMgdm9pZCBzZXRNZW51VGFyZ2V0cyhOU01lbnUqIG1lbnUpCiAgICAgaWYgKCFm
bGFnKQogICAgICAgICByZXR1cm47IC8vIFRoZXJlJ3Mgbm8gd2F5IHRvIHNheSB5b3UgZG9uJ3Qg
bmVlZCBhIHN0eWxlIHJlY2FsYy4KICAgICBpZiAoRnJhbWUqIGZyYW1lID0gY29yZShbc2VsZiBf
ZnJhbWVdKSkgewotICAgICAgICBpZiAoZnJhbWUtPmRvY3VtZW50KCkgJiYgZnJhbWUtPmRvY3Vt
ZW50KCktPmluUGFnZUNhY2hlKCkpCisgICAgICAgIGlmIChmcmFtZS0+ZG9jdW1lbnQoKSAmJiBm
cmFtZS0+ZG9jdW1lbnQoKS5pblBhZ2VDYWNoZSgpKQogICAgICAgICAgICAgcmV0dXJuOwotICAg
ICAgICBmcmFtZS0+ZG9jdW1lbnQoKS0+c2NoZWR1bGVGb3JjZWRTdHlsZVJlY2FsYygpOworICAg
ICAgICBmcmFtZS0+ZG9jdW1lbnQoKS5zY2hlZHVsZUZvcmNlZFN0eWxlUmVjYWxjKCk7CiAgICAg
fQogfQogCkBAIC00MTQzLDEwICs0MTQzLDEwIEBAIHN0YXRpYyBQYXNzUmVmUHRyPEtleWJvYXJk
RXZlbnQ+IGN1cnJlbnRLZXlib2FyZEV2ZW50KEZyYW1lKiBjb3JlRnJhbWUpCiAgICAgY2FzZSBO
U0tleURvd246IHsKICAgICAgICAgUGxhdGZvcm1LZXlib2FyZEV2ZW50IHBsYXRmb3JtRXZlbnQg
PSBQbGF0Zm9ybUV2ZW50RmFjdG9yeTo6Y3JlYXRlUGxhdGZvcm1LZXlib2FyZEV2ZW50KGV2ZW50
KTsKICAgICAgICAgcGxhdGZvcm1FdmVudC5kaXNhbWJpZ3VhdGVLZXlEb3duRXZlbnQoUGxhdGZv
cm1FdmVudDo6UmF3S2V5RG93bik7Ci0gICAgICAgIHJldHVybiBLZXlib2FyZEV2ZW50OjpjcmVh
dGUocGxhdGZvcm1FdmVudCwgY29yZUZyYW1lLT5kb2N1bWVudCgpLT5kZWZhdWx0VmlldygpKTsK
KyAgICAgICAgcmV0dXJuIEtleWJvYXJkRXZlbnQ6OmNyZWF0ZShwbGF0Zm9ybUV2ZW50LCBjb3Jl
RnJhbWUtPmRvY3VtZW50KCkuZGVmYXVsdFZpZXcoKSk7CiAgICAgfQogICAgIGNhc2UgTlNLZXlV
cDoKLSAgICAgICAgcmV0dXJuIEtleWJvYXJkRXZlbnQ6OmNyZWF0ZShQbGF0Zm9ybUV2ZW50RmFj
dG9yeTo6Y3JlYXRlUGxhdGZvcm1LZXlib2FyZEV2ZW50KGV2ZW50KSwgY29yZUZyYW1lLT5kb2N1
bWVudCgpLT5kZWZhdWx0VmlldygpKTsKKyAgICAgICAgcmV0dXJuIEtleWJvYXJkRXZlbnQ6OmNy
ZWF0ZShQbGF0Zm9ybUV2ZW50RmFjdG9yeTo6Y3JlYXRlUGxhdGZvcm1LZXlib2FyZEV2ZW50KGV2
ZW50KSwgY29yZUZyYW1lLT5kb2N1bWVudCgpLmRlZmF1bHRWaWV3KCkpOwogICAgIGRlZmF1bHQ6
CiAgICAgICAgIHJldHVybiAwOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvbWFj
L1dlYlZpZXcvV2ViUERGVmlldy5tbSBiL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViUERG
Vmlldy5tbQppbmRleCAzY2I2NWE0Li5jNjkyOTY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L21hYy9XZWJWaWV3L1dlYlBERlZpZXcubW0KKysrIGIvU291cmNlL1dlYktpdC9tYWMvV2ViVmll
dy9XZWJQREZWaWV3Lm1tCkBAIC0xMDU2LDcgKzEwNTYsNyBAQCBzdGF0aWMgQk9PTCBpc0ZyYW1l
SW5SYW5nZShXZWJGcmFtZSAqZnJhbWUsIERPTVJhbmdlICpyYW5nZSkKIAogICAgIC8vIENhbGwg
dG8gdGhlIGZyYW1lIGxvYWRlciBiZWNhdXNlIHRoaXMgaXMgd2hlcmUgb3VyIHNlY3VyaXR5IGNo
ZWNrcyBhcmUgbWFkZS4KICAgICBGcmFtZSogZnJhbWUgPSBjb3JlKFtkYXRhU291cmNlIHdlYkZy
YW1lXSk7Ci0gICAgZnJhbWUtPmxvYWRlcigpLmxvYWRGcmFtZVJlcXVlc3QoRnJhbWVMb2FkUmVx
dWVzdChmcmFtZS0+ZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKSwgUmVzb3VyY2VSZXF1ZXN0
KFVSTCkpLCBMb2NrSGlzdG9yeTo6Tm8sIExvY2tCYWNrRm9yd2FyZExpc3Q6Ok5vLCBldmVudC5n
ZXQoKSwgMCwgTWF5YmVTZW5kUmVmZXJyZXIpOworICAgIGZyYW1lLT5sb2FkZXIoKS5sb2FkRnJh
bWVSZXF1ZXN0KEZyYW1lTG9hZFJlcXVlc3QoZnJhbWUtPmRvY3VtZW50KCkuc2VjdXJpdHlPcmln
aW4oKSwgUmVzb3VyY2VSZXF1ZXN0KFVSTCkpLCBMb2NrSGlzdG9yeTo6Tm8sIExvY2tCYWNrRm9y
d2FyZExpc3Q6Ok5vLCBldmVudC5nZXQoKSwgMCwgTWF5YmVTZW5kUmVmZXJyZXIpOwogfQogCiAt
ICh2b2lkKVBERlZpZXdPcGVuUERGSW5OYXRpdmVBcHBsaWNhdGlvbjooUERGVmlldyAqKXNlbmRl
cgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tIGIvU291
cmNlL1dlYktpdC9tYWMvV2ViVmlldy9XZWJWaWV3Lm1tCmluZGV4IGRjODM4MzQuLmY3YjQ4YjUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvbWFjL1dlYlZpZXcvV2ViVmlldy5tbQorKysgYi9T
b3VyY2UvV2ViS2l0L21hYy9XZWJWaWV3L1dlYlZpZXcubW0KQEAgLTMwNzIsNyArMzA3Miw3IEBA
IHN0YXRpYyBpbmxpbmUgSU1QIGdldE1ldGhvZChpZCBvLCBTRUwgcykKICAgICBpZiAoIW1haW5G
cmFtZSkKICAgICAgICAgcmV0dXJuIG5pbDsKIAotICAgIGNvbnN0IFZlY3RvcjxBbm5vdGF0ZWRS
ZWdpb25WYWx1ZT4mIHJlZ2lvbnMgPSBtYWluRnJhbWUtPmRvY3VtZW50KCktPmFubm90YXRlZFJl
Z2lvbnMoKTsKKyAgICBjb25zdCBWZWN0b3I8QW5ub3RhdGVkUmVnaW9uVmFsdWU+JiByZWdpb25z
ID0gbWFpbkZyYW1lLT5kb2N1bWVudCgpLmFubm90YXRlZFJlZ2lvbnMoKTsKICAgICBzaXplX3Qg
c2l6ZSA9IHJlZ2lvbnMuc2l6ZSgpOwogCiAgICAgTlNNdXRhYmxlRGljdGlvbmFyeSAqd2ViUmVn
aW9ucyA9IFtOU011dGFibGVEaWN0aW9uYXJ5IGRpY3Rpb25hcnlXaXRoQ2FwYWNpdHk6c2l6ZV07
CkBAIC0zNzA0LDcgKzM3MDQsNyBAQCBzdGF0aWMgaW5saW5lIElNUCBnZXRNZXRob2QoaWQgbywg
U0VMIHMpCiAgICAgaWYgKCFmcmFtZSkKICAgICAgICAgcmV0dXJuIG5pbDsKICAgICAKLSAgICBE
b2N1bWVudCogZG9jdW1lbnQgPSBmcmFtZS0+ZG9jdW1lbnQoKTsKKyAgICBEb2N1bWVudCogZG9j
dW1lbnQgPSAmZnJhbWUtPmRvY3VtZW50KCk7CiAgICAgaWYgKCFkb2N1bWVudCkKICAgICAgICAg
cmV0dXJuIG5pbDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nIGIv
U291cmNlL1dlYktpdC93aW4vQ2hhbmdlTG9nCmluZGV4IDU0M2E5MDkuLmM1YThiODEyIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC93
aW4vQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjkgQEAKKzIwMTQtMDQtMjIgIEd5dXlvdW5nIEtpbSAg
PGd5dXlvdW5nLmtpbUBzYW1zdW5nLmNvbT4KKworICAgICAgICBOZWVkIGEgc2hvcnQgZGVzY3Jp
cHRpb24gKE9PUFMhKS4KKyAgICAgICAgTmVlZCB0aGUgYnVnIFVSTCAoT09QUyEpLgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViQ29yZVN1cHBv
cnQvV2ViQ2hyb21lQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYkNocm9tZUNsaWVudDo6Y3JlYXRl
V2luZG93KToKKyAgICAgICAgKFdlYkNocm9tZUNsaWVudDo6ZXhjZWVkZWREYXRhYmFzZVF1b3Rh
KToKKyAgICAgICAgKiBXZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHA6Cisg
ICAgICAgIChXZWJGcmFtZUxvYWRlckNsaWVudDo6Y29tbWl0dGVkTG9hZCk6CisgICAgICAgIChX
ZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRGYWlsVG9TdGFydFBsdWdpbik6CisgICAg
ICAgICogV2ViQ29yZVN1cHBvcnQvV2ViR2VvbG9jYXRpb25DbGllbnQuY3BwOgorICAgICAgICAo
V2ViR2VvbG9jYXRpb25DbGllbnQ6OnJlcXVlc3RQZXJtaXNzaW9uKToKKyAgICAgICAgKiBXZWJG
cmFtZS5jcHA6CisgICAgICAgIChXZWJGcmFtZTo6RE9NV2luZG93KToKKyAgICAgICAgKFdlYkZy
YW1lOjp1cmwpOgorICAgICAgICAoV2ViRnJhbWU6OnBlbmRpbmdGcmFtZVVubG9hZEV2ZW50Q291
bnQpOgorICAgICAgICAoV2ViRnJhbWU6OmFsbG93c0ZvbGxvd2luZ0xpbmspOgorICAgICAgICAo
V2ViRnJhbWU6OnNldEluUHJpbnRpbmdNb2RlKToKKyAgICAgICAgKFdlYkZyYW1lOjppc0ZyYW1l
U2V0KToKKyAgICAgICAgKiBXZWJWaWV3LmNwcDoKKyAgICAgICAgKFdlYlZpZXc6Omdlc3R1cmVO
b3RpZnkpOgorICAgICAgICAoV2ViVmlldzo6c2V0SW5pdGlhbEZvY3VzKToKKwogMjAxNC0wNC0w
OSAgQWxleGV5IFByb3NrdXJ5YWtvdiAgPGFwQGFwcGxlLmNvbT4KIAogICAgICAgICBFbGltaW5h
dGUgRHJhZ1Nlc3Npb24gc3RydWN0dXJlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9X
ZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC93aW4vV2Vi
Q29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcAppbmRleCBkNzkyNjNmLi5kNDJkYjRjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGll
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9tZUNs
aWVudC5jcHAKQEAgLTE5Nyw4ICsxOTcsOCBAQCBQYWdlKiBXZWJDaHJvbWVDbGllbnQ6OmNyZWF0
ZVdpbmRvdyhGcmFtZSogZnJhbWUsIGNvbnN0IEZyYW1lTG9hZFJlcXVlc3QmLCBjb25zdAogICAg
ICAgICByZXR1cm4gMDsKIAogI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKLSAgICBpZiAoZnJh
bWUtPmRvY3VtZW50KCkgJiYgZnJhbWUtPmRvY3VtZW50KCktPndlYmtpdEN1cnJlbnRGdWxsU2Ny
ZWVuRWxlbWVudCgpKQotICAgICAgICBmcmFtZS0+ZG9jdW1lbnQoKS0+d2Via2l0Q2FuY2VsRnVs
bFNjcmVlbigpOworICAgIGlmIChmcmFtZS0+ZG9jdW1lbnQoKSAmJiBmcmFtZS0+ZG9jdW1lbnQo
KS53ZWJraXRDdXJyZW50RnVsbFNjcmVlbkVsZW1lbnQoKSkKKyAgICAgICAgZnJhbWUtPmRvY3Vt
ZW50KCkud2Via2l0Q2FuY2VsRnVsbFNjcmVlbigpOwogI2VuZGlmCiAKICAgICBDT01QdHI8V2Vi
TXV0YWJsZVVSTFJlcXVlc3Q+IHJlcXVlc3QgPSBhZG9wdENPTShXZWJNdXRhYmxlVVJMUmVxdWVz
dDo6Y3JlYXRlSW5zdGFuY2UoUmVzb3VyY2VSZXF1ZXN0KG5hdmlnYXRpb25BY3Rpb24udXJsKCkp
KSk7CkBAIC01ODYsNyArNTg2LDcgQEAgdm9pZCBXZWJDaHJvbWVDbGllbnQ6OnByaW50KEZyYW1l
KiBmcmFtZSkKICNpZiBFTkFCTEUoU1FMX0RBVEFCQVNFKQogdm9pZCBXZWJDaHJvbWVDbGllbnQ6
OmV4Y2VlZGVkRGF0YWJhc2VRdW90YShGcmFtZSogZnJhbWUsIGNvbnN0IFN0cmluZyYgZGF0YWJh
c2VJZGVudGlmaWVyLCBEYXRhYmFzZURldGFpbHMpCiB7Ci0gICAgQ09NUHRyPFdlYlNlY3VyaXR5
T3JpZ2luPiBvcmlnaW4oQWRvcHRDT00sIFdlYlNlY3VyaXR5T3JpZ2luOjpjcmVhdGVJbnN0YW5j
ZShmcmFtZS0+ZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKSkpOworICAgIENPTVB0cjxXZWJT
ZWN1cml0eU9yaWdpbj4gb3JpZ2luKEFkb3B0Q09NLCBXZWJTZWN1cml0eU9yaWdpbjo6Y3JlYXRl
SW5zdGFuY2UoZnJhbWUtPmRvY3VtZW50KCkuc2VjdXJpdHlPcmlnaW4oKSkpOwogICAgIENPTVB0
cjxJV2ViVUlEZWxlZ2F0ZT4gdWlEZWxlZ2F0ZTsKICAgICBpZiAoU1VDQ0VFREVEKG1fd2ViVmll
dy0+dWlEZWxlZ2F0ZSgmdWlEZWxlZ2F0ZSkpKSB7CiAgICAgICAgIENPTVB0cjxJV2ViVUlEZWxl
Z2F0ZVByaXZhdGU+IHVpRGVsZWdhdGVQcml2YXRlKFF1ZXJ5LCB1aURlbGVnYXRlKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xp
ZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVy
Q2xpZW50LmNwcAppbmRleCAyODQwNjc0Li4zZjI4YTA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
S2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKKysrIGIvU291
cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCkBA
IC02OTcsNyArNjk3LDcgQEAgdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6Y29tbWl0dGVkTG9h
ZChEb2N1bWVudExvYWRlciogbG9hZGVyLCBjb25zdCBjaGFyKiBkYXQKICAgICAvLyBJZiB0aGUg
ZG9jdW1lbnQgaXMgYSBzdGFuZC1hbG9uZSBtZWRpYSBkb2N1bWVudCwgbm93IGlzIHRoZSByaWdo
dCB0aW1lIHRvIGNhbmNlbCB0aGUgV2ViS2l0IGxvYWQuCiAgICAgLy8gRklYTUU6IFRoaXMgY29k
ZSBzaG91bGQgYmUgc2hhcmVkIGFjcm9zcyBhbGwgcG9ydHMuIDxodHRwOi8vd2Via2l0Lm9yZy9i
LzQ4NzYyPi4KICAgICBGcmFtZSogY29yZUZyYW1lID0gY29yZShtX3dlYkZyYW1lKTsKLSAgICBp
ZiAoY29yZUZyYW1lLT5kb2N1bWVudCgpLT5pc01lZGlhRG9jdW1lbnQoKSkKKyAgICBpZiAoY29y
ZUZyYW1lLT5kb2N1bWVudCgpLmlzTWVkaWFEb2N1bWVudCgpKQogICAgICAgICBsb2FkZXItPmNh
bmNlbE1haW5SZXNvdXJjZUxvYWQocGx1Z2luV2lsbEhhbmRsZUxvYWRFcnJvcihsb2FkZXItPnJl
c3BvbnNlKCkpKTsKIAogICAgIGlmICghbV9tYW51YWxMb2FkZXIpCkBAIC0xMDk1LDcgKzEwOTUs
NyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZEZhaWxUb1N0YXJ0UGx1
Z2luKGNvbnN0IFBsdWdpblZpZXcqIHBsdWdpbgogICAgIEFTU0VSVChmcmFtZSA9PSBwbHVnaW5W
aWV3LT5wYXJlbnRGcmFtZSgpKTsKIAogICAgIGlmICghcGx1Z2luVmlldy0+cGx1Z2luc1BhZ2Uo
KS5pc051bGwoKSkgewotICAgICAgICBVUkwgcGx1Z2luUGFnZVVSTCA9IGZyYW1lLT5kb2N1bWVu
dCgpLT5jb21wbGV0ZVVSTChzdHJpcExlYWRpbmdBbmRUcmFpbGluZ0hUTUxTcGFjZXMocGx1Z2lu
Vmlldy0+cGx1Z2luc1BhZ2UoKSkpOworICAgICAgICBVUkwgcGx1Z2luUGFnZVVSTCA9IGZyYW1l
LT5kb2N1bWVudCgpLmNvbXBsZXRlVVJMKHN0cmlwTGVhZGluZ0FuZFRyYWlsaW5nSFRNTFNwYWNl
cyhwbHVnaW5WaWV3LT5wbHVnaW5zUGFnZSgpKSk7CiAgICAgICAgIGlmIChwbHVnaW5QYWdlVVJM
LnByb3RvY29sSXNJbkhUVFBGYW1pbHkoKSkgewogICAgICAgICAgICAgc3RhdGljIENGU3RyaW5n
UmVmIGtleSA9IE1hcnNoYWxsaW5nSGVscGVyczo6TFBDT0xFU1RSVG9DRlN0cmluZ1JlZihXZWJL
aXRFcnJvclBsdWdJblBhZ2VVUkxTdHJpbmdLZXkpOwogICAgICAgICAgICAgQ0ZEaWN0aW9uYXJ5
U2V0VmFsdWUodXNlckluZm8uZ2V0KCksIGtleSwgcGx1Z2luUGFnZVVSTC5zdHJpbmcoKS5jcmVh
dGVDRlN0cmluZygpLmdldCgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYkNv
cmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvd2luL1dl
YkNvcmVTdXBwb3J0L1dlYkdlb2xvY2F0aW9uQ2xpZW50LmNwcAppbmRleCAwZTlhMzlmLi44YWFk
OGU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJDb3JlU3VwcG9ydC9XZWJHZW9s
b2NhdGlvbkNsaWVudC5jcHAKKysrIGIvU291cmNlL1dlYktpdC93aW4vV2ViQ29yZVN1cHBvcnQv
V2ViR2VvbG9jYXRpb25DbGllbnQuY3BwCkBAIC05MSw3ICs5MSw3IEBAIHZvaWQgV2ViR2VvbG9j
YXRpb25DbGllbnQ6OnJlcXVlc3RQZXJtaXNzaW9uKEdlb2xvY2F0aW9uKiBnZW9sb2NhdGlvbikK
ICAgICB9CiAKICAgICBGcmFtZSogZnJhbWUgPSBnZW9sb2NhdGlvbi0+ZnJhbWUoKTsKLSAgICBD
T01QdHI8V2ViU2VjdXJpdHlPcmlnaW4+IG9yaWdpbihBZG9wdENPTSwgV2ViU2VjdXJpdHlPcmln
aW46OmNyZWF0ZUluc3RhbmNlKGZyYW1lLT5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpKSk7
CisgICAgQ09NUHRyPFdlYlNlY3VyaXR5T3JpZ2luPiBvcmlnaW4oQWRvcHRDT00sIFdlYlNlY3Vy
aXR5T3JpZ2luOjpjcmVhdGVJbnN0YW5jZShmcmFtZS0+ZG9jdW1lbnQoKS5zZWN1cml0eU9yaWdp
bigpKSk7CiAgICAgQ09NUHRyPFdlYkdlb2xvY2F0aW9uUG9saWN5TGlzdGVuZXI+IGxpc3RlbmVy
ID0gV2ViR2VvbG9jYXRpb25Qb2xpY3lMaXN0ZW5lcjo6Y3JlYXRlSW5zdGFuY2UoZ2VvbG9jYXRp
b24pOwogICAgIEhSRVNVTFQgaHIgPSB1aURlbGVnYXRlUHJpdmF0ZTItPmRlY2lkZVBvbGljeUZv
ckdlb2xvY2F0aW9uUmVxdWVzdChtX3dlYlZpZXcuZ2V0KCksIGtpdChmcmFtZSksIG9yaWdpbi5n
ZXQoKSwgbGlzdGVuZXIuZ2V0KCkpOwogICAgIGlmIChociAhPSBFX05PVElNUEwpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L3dpbi9XZWJGcmFtZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L3dpbi9X
ZWJGcmFtZS5jcHAKaW5kZXggODBjNjNhNi4uMGE3ZGYyOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC93aW4vV2ViRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYkZyYW1lLmNw
cApAQCAtNDc2LDcgKzQ3Niw3IEBAIEhSRVNVTFQgV2ViRnJhbWU6OkRPTVdpbmRvdygvKiBbcmV0
dmFsXVtvdXRdICovIElET01XaW5kb3cqKiB3aW5kb3cpCiAgICAgKndpbmRvdyA9IDA7CiAKICAg
ICBpZiAoRnJhbWUqIGNvcmVGcmFtZSA9IGNvcmUodGhpcykpIHsKLSAgICAgICAgaWYgKFdlYkNv
cmU6OkRPTVdpbmRvdyogY29yZVdpbmRvdyA9IGNvcmVGcmFtZS0+ZG9jdW1lbnQoKS0+ZG9tV2lu
ZG93KCkpCisgICAgICAgIGlmIChXZWJDb3JlOjpET01XaW5kb3cqIGNvcmVXaW5kb3cgPSBjb3Jl
RnJhbWUtPmRvY3VtZW50KCkuZG9tV2luZG93KCkpCiAgICAgICAgICAgICAqd2luZG93ID0gOjpE
T01XaW5kb3c6OmNyZWF0ZUluc3RhbmNlKGNvcmVXaW5kb3cpOwogICAgIH0KIApAQCAtNzA3LDcg
KzcwNyw3IEBAIFVSTCBXZWJGcmFtZTo6dXJsKCkgY29uc3QKICAgICBpZiAoIWNvcmVGcmFtZSkK
ICAgICAgICAgcmV0dXJuIFVSTCgpOwogCi0gICAgcmV0dXJuIGNvcmVGcmFtZS0+ZG9jdW1lbnQo
KS0+dXJsKCk7CisgICAgcmV0dXJuIGNvcmVGcmFtZS0+ZG9jdW1lbnQoKS51cmwoKTsKIH0KIAog
SFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJGcmFtZTo6c3RvcExvYWRpbmcoIHZvaWQpCkBA
IC05ODIsNyArOTgyLDcgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJGcmFtZTo6cGVu
ZGluZ0ZyYW1lVW5sb2FkRXZlbnRDb3VudCgKICAgICBpZiAoIWNvcmVGcmFtZSkKICAgICAgICAg
cmV0dXJuIEVfRkFJTDsKIAotICAgICpyZXN1bHQgPSBjb3JlRnJhbWUtPmRvY3VtZW50KCktPmRv
bVdpbmRvdygpLT5wZW5kaW5nVW5sb2FkRXZlbnRMaXN0ZW5lcnMoKTsKKyAgICAqcmVzdWx0ID0g
Y29yZUZyYW1lLT5kb2N1bWVudCgpLmRvbVdpbmRvdygpLT5wZW5kaW5nVW5sb2FkRXZlbnRMaXN0
ZW5lcnMoKTsKICAgICByZXR1cm4gU19PSzsKIH0KIApAQCAtMTI3OCw3ICsxMjc4LDcgQEAgSFJF
U1VMVCBXZWJGcmFtZTo6aXNEaXNwbGF5aW5nU3RhbmRhbG9uZUltYWdlKEJPT0wqIHJlc3VsdCkK
ICAgICBpZiAoIWZyYW1lKQogICAgICAgICByZXR1cm4gRV9GQUlMOwogCi0gICAgRG9jdW1lbnQq
IGRvY3VtZW50ID0gZnJhbWUtPmRvY3VtZW50KCk7CisgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0g
JmZyYW1lLT5kb2N1bWVudCgpOwogICAgICpyZXN1bHQgPSBkb2N1bWVudCAmJiBkb2N1bWVudC0+
aXNJbWFnZURvY3VtZW50KCk7CiAgICAgcmV0dXJuIFNfT0s7CiB9CkBAIC0xMjk0LDcgKzEyOTQs
NyBAQCBIUkVTVUxUIFdlYkZyYW1lOjphbGxvd3NGb2xsb3dpbmdMaW5rKEJTVFIgdXJsLCBCT09M
KiByZXN1bHQpCiAgICAgaWYgKCFmcmFtZSkKICAgICAgICAgcmV0dXJuIEVfRkFJTDsKIAotICAg
ICpyZXN1bHQgPSBmcmFtZS0+ZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKS0+Y2FuRGlzcGxh
eShNYXJzaGFsbGluZ0hlbHBlcnM6OkJTVFJUb0tVUkwodXJsKSk7CisgICAgKnJlc3VsdCA9IGZy
YW1lLT5kb2N1bWVudCgpLnNlY3VyaXR5T3JpZ2luKCktPmNhbkRpc3BsYXkoTWFyc2hhbGxpbmdI
ZWxwZXJzOjpCU1RSVG9LVVJMKHVybCkpOwogICAgIHJldHVybiBTX09LOwogfQogCkBAIC0xNDg3
LDcgKzE0ODcsNyBAQCBIUkVTVUxUIFNURE1FVEhPRENBTExUWVBFIFdlYkZyYW1lOjpzZXRJblBy
aW50aW5nTW9kZSgKICAgICAvLyBhY2NvcmRpbmcgdG8gdGhlIHBhcGVyIHNpemUKICAgICBGbG9h
dFNpemUgbWluTGF5b3V0U2l6ZSgwLjAsIDAuMCk7CiAgICAgRmxvYXRTaXplIG9yaWdpbmFsUGFn
ZVNpemUoMC4wLCAwLjApOwotICAgIGlmIChtX2luUHJpbnRpbmdNb2RlICYmICFjb3JlRnJhbWUt
PmRvY3VtZW50KCktPmlzRnJhbWVTZXQoKSkgeworICAgIGlmIChtX2luUHJpbnRpbmdNb2RlICYm
ICFjb3JlRnJhbWUtPmRvY3VtZW50KCkuaXNGcmFtZVNldCgpKSB7CiAgICAgICAgIGlmICghcHJp
bnREQykgewogICAgICAgICAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiAgICAgICAgICAgICBy
ZXR1cm4gRV9QT0lOVEVSOwpAQCAtMTkwMiw3ICsxOTAyLDcgQEAgSFJFU1VMVCBTVERNRVRIT0RD
QUxMVFlQRSBXZWJGcmFtZTo6aXNGcmFtZVNldCgKICAgICBpZiAoIWNvcmVGcmFtZSB8fCAhY29y
ZUZyYW1lLT5kb2N1bWVudCgpKQogICAgICAgICByZXR1cm4gRV9GQUlMOwogCi0gICAgKnJlc3Vs
dCA9IGNvcmVGcmFtZS0+ZG9jdW1lbnQoKS0+aXNGcmFtZVNldCgpID8gVFJVRSA6IEZBTFNFOwor
ICAgICpyZXN1bHQgPSBjb3JlRnJhbWUtPmRvY3VtZW50KCkuaXNGcmFtZVNldCgpID8gVFJVRSA6
IEZBTFNFOwogICAgIHJldHVybiBTX09LOwogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0
L3dpbi9XZWJWaWV3LmNwcCBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYlZpZXcuY3BwCmluZGV4IDE0
ZmE0MjguLjE5ZDkyMzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvd2luL1dlYlZpZXcuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvd2luL1dlYlZpZXcuY3BwCkBAIC0xMjQyLDcgKzEyNDIsNyBA
QCBXaW5kb3dDbG9zZVRpbWVyKiBXaW5kb3dDbG9zZVRpbWVyOjpjcmVhdGUoV2ViVmlldyogd2Vi
VmlldykKICAgICBpZiAoIWZyYW1lKQogICAgICAgICByZXR1cm4gMDsKIAotICAgIERvY3VtZW50
KiBkb2N1bWVudCA9IGZyYW1lLT5kb2N1bWVudCgpOworICAgIERvY3VtZW50KiBkb2N1bWVudCA9
ICZmcmFtZS0+ZG9jdW1lbnQoKTsKICAgICBBU1NFUlQoZG9jdW1lbnQpOwogICAgIGlmICghZG9j
dW1lbnQpCiAgICAgICAgIHJldHVybiAwOwpAQCAtMTU4MCw3ICsxNTgwLDcgQEAgYm9vbCBXZWJW
aWV3OjpnZXN0dXJlTm90aWZ5KFdQQVJBTSB3UGFyYW0sIExQQVJBTSBsUGFyYW0pCiAgICAgICAg
IEZyYW1lVmlldyogZnJhbWVWaWV3ID0gY2hpbGRGcmFtZS0+dmlldygpOwogICAgICAgICBpZiAo
IWZyYW1lVmlldykKICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICBSZW5kZXJWaWV3KiByZW5k
ZXJWaWV3ID0gY2hpbGRGcmFtZS0+ZG9jdW1lbnQoKS0+cmVuZGVyVmlldygpOworICAgICAgICBS
ZW5kZXJWaWV3KiByZW5kZXJWaWV3ID0gY2hpbGRGcmFtZS0+ZG9jdW1lbnQoKS5yZW5kZXJWaWV3
KCk7CiAgICAgICAgIGlmICghcmVuZGVyVmlldykKICAgICAgICAgICAgIGJyZWFrOwogICAgICAg
ICBSZW5kZXJMYXllciogbGF5ZXIgPSByZW5kZXJWaWV3LT5sYXllcigpOwpAQCAtNTM0OCw3ICs1
MzQ4LDcgQEAgSFJFU1VMVCBTVERNRVRIT0RDQUxMVFlQRSBXZWJWaWV3OjpzZXRJbml0aWFsRm9j
dXMoCiB7CiAgICAgaWYgKG1fcGFnZSkgewogICAgICAgICBGcmFtZSYgZnJhbWUgPSBtX3BhZ2Ut
PmZvY3VzQ29udHJvbGxlcigpLmZvY3VzZWRPck1haW5GcmFtZSgpOwotICAgICAgICBmcmFtZS5k
b2N1bWVudCgpLT5zZXRGb2N1c2VkRWxlbWVudCgwKTsKKyAgICAgICAgZnJhbWUuZG9jdW1lbnQo
KS5zZXRGb2N1c2VkRWxlbWVudCgwKTsKICAgICAgICAgbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIo
KS5zZXRJbml0aWFsRm9jdXMoZm9yd2FyZCA/IEZvY3VzRGlyZWN0aW9uRm9yd2FyZCA6IEZvY3Vz
RGlyZWN0aW9uQmFja3dhcmQsIDApOwogICAgIH0KICAgICByZXR1cm4gU19PSzsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQyL0NoYW5nZUxvZwpp
bmRleCAxNGZkMDBiLi5mZDNhZGYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9DaGFuZ2VM
b2cKKysrIGIvU291cmNlL1dlYktpdDIvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsNzYgQEAKKzIwMTQt
MDQtMjIgIEd5dXlvdW5nIEtpbSAgPGd5dXlvdW5nLmtpbUBzYW1zdW5nLmNvbT4KKworICAgICAg
ICBOZWVkIGEgc2hvcnQgZGVzY3JpcHRpb24gKE9PUFMhKS4KKyAgICAgICAgTmVlZCB0aGUgYnVn
IFVSTCAoT09QUyEpLgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogV2ViUHJvY2Vzcy9HZW9sb2NhdGlvbi9HZW9sb2NhdGlvblBlcm1pc3Npb25SZXF1
ZXN0TWFuYWdlci5jcHA6CisgICAgICAgIChXZWJLaXQ6Okdlb2xvY2F0aW9uUGVybWlzc2lvblJl
cXVlc3RNYW5hZ2VyOjpzdGFydFJlcXVlc3RGb3JHZW9sb2NhdGlvbik6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUZyYW1lLmNwcDoKKyAgICAgICAg
KFdLQnVuZGxlRnJhbWVDb3B5U2VjdXJpdHlPcmlnaW4pOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
SW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9XZWJLaXRXZWJQYWdlLmNwcDoKKyAgICAgICAgKGRpZFNh
bWVEb2N1bWVudE5hdmlnYXRpb25Gb3JGcmFtZSk6CisgICAgICAgICogV2ViUHJvY2Vzcy9Jbmpl
Y3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OkluamVjdGVk
QnVuZGxlOjpwYWdlTnVtYmVyRm9yRWxlbWVudEJ5SWQpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
TmV0d29yay9XZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXI6OnNjaGVkdWxlU3VicmVzb3VyY2VMb2FkKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyOjpzY2hlZHVsZVBsdWdpblN0cmVh
bUxvYWQpOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QREYvUERGUGx1Z2luLm1tOgor
ICAgICAgICAoV2ViS2l0OjpQREZQbHVnaW46OlBERlBsdWdpbik6CisgICAgICAgIChXZWJLaXQ6
OlBERlBsdWdpbjo6YWRkQXJjaGl2ZVJlc291cmNlKToKKyAgICAgICAgKFdlYktpdDo6UERGUGx1
Z2luOjppc0Z1bGxGcmFtZVBsdWdpbik6CisgICAgICAgIChXZWJLaXQ6OlBERlBsdWdpbjo6Y2xp
Y2tlZExpbmspOgorICAgICAgICAqIFdlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcDoK
KyAgICAgICAgKFdlYktpdDo6UGx1Z2luVmlldzo6c3RvcmFnZUJsb2NraW5nU3RhdGVDaGFuZ2Vk
KToKKyAgICAgICAgKFdlYktpdDo6UGx1Z2luVmlldzo6Zm9jdXNQbHVnaW5FbGVtZW50KToKKyAg
ICAgICAgKFdlYktpdDo6UGx1Z2luVmlldzo6bG9hZFVSTCk6CisgICAgICAgIChXZWJLaXQ6OlBs
dWdpblZpZXc6OmlzUHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCk6CisgICAgICAgIChXZWJLaXQ6OlBs
dWdpblZpZXc6OnBsdWdpbkRpZFJlY2VpdmVVc2VySW50ZXJhY3Rpb24pOgorICAgICAgICAqIFdl
YlByb2Nlc3MvU3RvcmFnZS9TdG9yYWdlQXJlYU1hcC5jcHA6CisgICAgICAgIChXZWJLaXQ6OlN0
b3JhZ2VBcmVhTWFwOjpzZXRJdGVtKToKKyAgICAgICAgKFdlYktpdDo6U3RvcmFnZUFyZWFNYXA6
OnJlbW92ZUl0ZW0pOgorICAgICAgICAoV2ViS2l0OjpTdG9yYWdlQXJlYU1hcDo6Y2xlYXIpOgor
ICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21lQ2xpZW50LmNwcDoK
KyAgICAgICAgKFdlYktpdDo6V2ViQ2hyb21lQ2xpZW50OjpjcmVhdGVXaW5kb3cpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJDaHJvbWVDbGllbnQ6OmV4Y2VlZGVkRGF0YWJhc2VRdW90YSk6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHA6
CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZENoYW5n
ZUxvY2F0aW9uV2l0aGluUGFnZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lTG9hZGVyQ2xp
ZW50OjpkaXNwYXRjaERpZFB1c2hTdGF0ZVdpdGhpblBhZ2UpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRSZXBsYWNlU3RhdGVXaXRoaW5QYWdlKToK
KyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkUG9wU3Rh
dGVXaXRoaW5QYWdlKToKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRp
c3BhdGNoRGlkU3RhcnRQcm92aXNpb25hbExvYWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFt
ZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRMYXlvdXQpOgorICAgICAgICAoV2ViS2l0OjpXZWJG
cmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hDcmVhdGVQYWdlKToKKyAgICAgICAgKFdlYktpdDo6
V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmNvbW1pdHRlZExvYWQpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJGcmFtZUxvYWRlckNsaWVudDo6YWxsb3dTY3JpcHQpOgorICAgICAgICAqIFdlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvbWFjL1dlYkVkaXRvckNsaWVudE1hYy5tbToKKyAgICAgICAgKFdlYktp
dDo6V2ViRWRpdG9yQ2xpZW50Ojpkb2N1bWVudEZyYWdtZW50RnJvbUF0dHJpYnV0ZWRTdHJpbmcp
OgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViUGFnZS9GaW5kQ29udHJvbGxlci5jcHA6CisgICAg
ICAgIChXZWJLaXQ6OnBsdWdpblZpZXdGb3JGcmFtZSk6CisgICAgICAgIChXZWJLaXQ6OkZpbmRD
b250cm9sbGVyOjpnZXRGaW5kSW5kaWNhdG9yQml0bWFwQW5kUmVjdCk6CisgICAgICAgICogV2Vi
UHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2ViRnJhbWU6
OmlubmVyVGV4dCk6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lOjpwZW5kaW5nVW5sb2FkQ291
bnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZTo6YWxsb3dzRm9sbG93aW5nTGluayk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYkZyYW1lOjpoYW5kbGVzUGFnZVNjYWxlR2VzdHVyZSk6CisgICAg
ICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL1dlYlBhZ2UuY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJQYWdlOjpmb2N1c2VkUGx1Z2luVmlld0ZvckZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
UGFnZTo6cGx1Z2luVmlld0ZvckZyYW1lKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6a2V5
RXZlbnRTeW5jRm9yVGVzdGluZyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OnNldEluaXRp
YWxGb2N1cyk6CisgICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmRyYXdSZWN0VG9JbWFnZSk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlBhZ2U6OmRyYXdQYWdlc1RvUERGKToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZTo6c2V0Q29tcG9zaXRpb24pOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpk
aWRDb21taXRMb2FkKToKKyAgICAgICAgKFdlYktpdDo6V2ViUGFnZTo6ZGV0ZXJtaW5lUHJpbWFy
eVNuYXBzaG90dGVkUGx1Z0luKToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dlYlBhZ2UvYXRrL1dl
YlBhZ2VBY2Nlc3NpYmlsaXR5T2JqZWN0QXRrLmNwcDoKKyAgICAgICAgKGFjY2Vzc2liaWxpdHlS
b290T2JqZWN0V3JhcHBlcik6CisgICAgICAgICogV2ViUHJvY2Vzcy9XZWJQYWdlL2lvcy9XZWJQ
YWdlSU9TLm1tOgorICAgICAgICAoV2ViS2l0OjpXZWJQYWdlOjpoYW5kbGVUYXApOgorICAgICAg
ICAoV2ViS2l0OjpXZWJQYWdlOjpyZXBsYWNlRGljdGF0ZWRUZXh0KToKKyAgICAgICAgKFdlYktp
dDo6V2ViUGFnZTo6c3luY0FwcGx5QXV0b2NvcnJlY3Rpb24pOgorCiAyMDE0LTA0LTIxICBTaW1v
biBGcmFzZXIgIDxzaW1vbi5mcmFzZXJAYXBwbGUuY29tPgogCiAgICAgICAgIERvbid0IHRyeSB0
byB1c2UgYSBudWxsIGNvbm5lY3Rpb24oKS0+eHBjQ29ubmVjdGlvbigpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0dlb2xvY2F0aW9uL0dlb2xvY2F0aW9uUGVybWlzc2lv
blJlcXVlc3RNYW5hZ2VyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvR2VvbG9jYXRp
b24vR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuY3BwCmluZGV4IGViOTIzZDIu
LjA4Mzc1MDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvR2VvbG9jYXRp
b24vR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVzdE1hbmFnZXIuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvR2VvbG9jYXRpb24vR2VvbG9jYXRpb25QZXJtaXNzaW9uUmVxdWVz
dE1hbmFnZXIuY3BwCkBAIC02NSw3ICs2NSw3IEBAIHZvaWQgR2VvbG9jYXRpb25QZXJtaXNzaW9u
UmVxdWVzdE1hbmFnZXI6OnN0YXJ0UmVxdWVzdEZvckdlb2xvY2F0aW9uKEdlb2xvY2F0aW9uCiAg
ICAgV2ViRnJhbWUqIHdlYkZyYW1lID0gV2ViRnJhbWU6OmZyb21Db3JlRnJhbWUoKmZyYW1lKTsK
ICAgICBBU1NFUlQod2ViRnJhbWUpOwogCi0gICAgU2VjdXJpdHlPcmlnaW4qIG9yaWdpbiA9IGZy
YW1lLT5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpOworICAgIFNlY3VyaXR5T3JpZ2luKiBv
cmlnaW4gPSBmcmFtZS0+ZG9jdW1lbnQoKS5zZWN1cml0eU9yaWdpbigpOwogCiAgICAgbV9wYWdl
LT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OlJlcXVlc3RHZW9sb2NhdGlvblBlcm1pc3Np
b25Gb3JGcmFtZShnZW9sb2NhdGlvbklELCB3ZWJGcmFtZS0+ZnJhbWVJRCgpLCBvcmlnaW4tPmRh
dGFiYXNlSWRlbnRpZmllcigpKSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlRnJhbWUuY3BwIGIvU291cmNlL1dl
YktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvYy9XS0J1bmRsZUZyYW1lLmNwcApp
bmRleCBhMmY5Yzg3Li4yYWI1ZGU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9j
ZXNzL0luamVjdGVkQnVuZGxlL0FQSS9jL1dLQnVuZGxlRnJhbWUuY3BwCisrKyBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2MvV0tCdW5kbGVGcmFtZS5jcHAK
QEAgLTI2OCw1ICsyNjgsNSBAQCBXS1NlY3VyaXR5T3JpZ2luUmVmIFdLQnVuZGxlRnJhbWVDb3B5
U2VjdXJpdHlPcmlnaW4oV0tCdW5kbGVGcmFtZVJlZiBmcmFtZVJlZikKICAgICBpZiAoIWNvcmVG
cmFtZSkKICAgICAgICAgcmV0dXJuIDA7CiAKLSAgICByZXR1cm4gdG9Db3BpZWRBUEkoY29yZUZy
YW1lLT5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpKTsKKyAgICByZXR1cm4gdG9Db3BpZWRB
UEkoY29yZUZyYW1lLT5kb2N1bWVudCgpLnNlY3VyaXR5T3JpZ2luKCkpOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9BUEkvZ3RrL1dlYktp
dFdlYlBhZ2UuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9B
UEkvZ3RrL1dlYktpdFdlYlBhZ2UuY3BwCmluZGV4IDQ1YjdlMGEuLjQwM2Y2YzMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvSW5qZWN0ZWRCdW5kbGUvQVBJL2d0ay9XZWJL
aXRXZWJQYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVu
ZGxlL0FQSS9ndGsvV2ViS2l0V2ViUGFnZS5jcHAKQEAgLTEyOCw3ICsxMjgsNyBAQCBzdGF0aWMg
dm9pZCBkaWRTYW1lRG9jdW1lbnROYXZpZ2F0aW9uRm9yRnJhbWUoV0tCdW5kbGVQYWdlUmVmLCBX
S0J1bmRsZUZyYW1lUmVmCiAgICAgaWYgKCFXS0J1bmRsZUZyYW1lSXNNYWluRnJhbWUoZnJhbWUp
KQogICAgICAgICByZXR1cm47CiAKLSAgICB3ZWJraXRXZWJQYWdlU2V0VVJJKFdFQktJVF9XRUJf
UEFHRShjbGllbnRJbmZvKSwgdG9JbXBsKGZyYW1lKS0+Y29yZUZyYW1lKCktPmRvY3VtZW50KCkt
PnVybCgpLnN0cmluZygpLnV0ZjgoKSk7CisgICAgd2Via2l0V2ViUGFnZVNldFVSSShXRUJLSVRf
V0VCX1BBR0UoY2xpZW50SW5mbyksIHRvSW1wbChmcmFtZSktPmNvcmVmcmFtZSgpLmRvY3VtZW50
KCkudXJsKCkuc3RyaW5nKCkudXRmOCgpKTsKIH0KIAogc3RhdGljIHZvaWQgZGlkRmluaXNoRG9j
dW1lbnRMb2FkRm9yRnJhbWUoV0tCdW5kbGVQYWdlUmVmLCBXS0J1bmRsZUZyYW1lUmVmIGZyYW1l
LCBXS1R5cGVSZWYqLCBjb25zdCB2b2lkICpjbGllbnRJbmZvKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdDIvV2ViUHJvY2Vzcy9JbmplY3RlZEJ1bmRsZS9JbmplY3RlZEJ1bmRsZS5jcHAgYi9T
b3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNw
cAppbmRleCA0YjU4N2E1Li41NGE3OTUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
S2l0Mi9XZWJQcm9jZXNzL0luamVjdGVkQnVuZGxlL0luamVjdGVkQnVuZGxlLmNwcApAQCAtNDMy
LDcgKzQzMiw3IEBAIGludCBJbmplY3RlZEJ1bmRsZTo6cGFnZU51bWJlckZvckVsZW1lbnRCeUlk
KFdlYkZyYW1lKiBmcmFtZSwgY29uc3QgU3RyaW5nJiBpZCwKICAgICBpZiAoIWNvcmVGcmFtZSkK
ICAgICAgICAgcmV0dXJuIC0xOwogCi0gICAgRWxlbWVudCogZWxlbWVudCA9IGNvcmVGcmFtZS0+
ZG9jdW1lbnQoKS0+Z2V0RWxlbWVudEJ5SWQoaWQpOworICAgIEVsZW1lbnQqIGVsZW1lbnQgPSBj
b3JlRnJhbWUtPmRvY3VtZW50KCkuZ2V0RWxlbWVudEJ5SWQoaWQpOwogICAgIGlmICghZWxlbWVu
dCkKICAgICAgICAgcmV0dXJuIC0xOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQ
cm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkU2NoZWR1bGVyLmNwcCBiL1NvdXJjZS9XZWJL
aXQyL1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIuY3BwCmluZGV4
IDRlYjdlZTkuLjkyZjg1ZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3Mv
TmV0d29yay9XZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQy
L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXIuY3BwCkBAIC03Myw3
ICs3Myw3IEBAIFBhc3NSZWZQdHI8U3VicmVzb3VyY2VMb2FkZXI+IFdlYlJlc291cmNlTG9hZFNj
aGVkdWxlcjo6c2NoZWR1bGVTdWJyZXNvdXJjZUxvYWQoCiB7CiAgICAgUmVmUHRyPFN1YnJlc291
cmNlTG9hZGVyPiBsb2FkZXIgPSBTdWJyZXNvdXJjZUxvYWRlcjo6Y3JlYXRlKGZyYW1lLCByZXNv
dXJjZSwgcmVxdWVzdCwgb3B0aW9ucyk7CiAgICAgaWYgKGxvYWRlcikKLSAgICAgICAgc2NoZWR1
bGVMb2FkKGxvYWRlci5nZXQoKSwgcmVzb3VyY2UsIHByaW9yaXR5LCBmcmFtZS0+ZG9jdW1lbnQo
KS0+cmVmZXJyZXJQb2xpY3koKSA9PSBSZWZlcnJlclBvbGljeURlZmF1bHQpOworICAgICAgICBz
Y2hlZHVsZUxvYWQobG9hZGVyLmdldCgpLCByZXNvdXJjZSwgcHJpb3JpdHksIGZyYW1lLT5kb2N1
bWVudCgpLnJlZmVycmVyUG9saWN5KCkgPT0gUmVmZXJyZXJQb2xpY3lEZWZhdWx0KTsKICAgICBy
ZXR1cm4gbG9hZGVyLnJlbGVhc2UoKTsKIH0KIApAQCAtODEsNyArODEsNyBAQCBQYXNzUmVmUHRy
PE5ldHNjYXBlUGx1Z0luU3RyZWFtTG9hZGVyPiBXZWJSZXNvdXJjZUxvYWRTY2hlZHVsZXI6OnNj
aGVkdWxlUGx1Z2luUwogewogICAgIFJlZlB0cjxOZXRzY2FwZVBsdWdJblN0cmVhbUxvYWRlcj4g
bG9hZGVyID0gTmV0c2NhcGVQbHVnSW5TdHJlYW1Mb2FkZXI6OmNyZWF0ZShmcmFtZSwgY2xpZW50
LCByZXF1ZXN0KTsKICAgICBpZiAobG9hZGVyKQotICAgICAgICBzY2hlZHVsZUxvYWQobG9hZGVy
LmdldCgpLCAwLCBSZXNvdXJjZUxvYWRQcmlvcml0eUxvdywgZnJhbWUtPmRvY3VtZW50KCktPnJl
ZmVycmVyUG9saWN5KCkgPT0gUmVmZXJyZXJQb2xpY3lEZWZhdWx0KTsKKyAgICAgICAgc2NoZWR1
bGVMb2FkKGxvYWRlci5nZXQoKSwgMCwgUmVzb3VyY2VMb2FkUHJpb3JpdHlMb3csIGZyYW1lLT5k
b2N1bWVudCgpLnJlZmVycmVyUG9saWN5KCkgPT0gUmVmZXJyZXJQb2xpY3lEZWZhdWx0KTsKICAg
ICByZXR1cm4gbG9hZGVyLnJlbGVhc2UoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktp
dDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BERi9QREZQbHVnaW4ubW0gYi9Tb3VyY2UvV2ViS2l0Mi9X
ZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBsdWdpbi5tbQppbmRleCA1YjM2N2EyLi5mNzg1NGJj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBs
dWdpbi5tbQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUERGL1BERlBs
dWdpbi5tbQpAQCAtNTEwLDE1ICs1MTAsMTUgQEAgUERGUGx1Z2luOjpQREZQbHVnaW4oV2ViRnJh
bWUqIGZyYW1lKQogICAgIG1fcGRmTGF5ZXJDb250cm9sbGVyLmdldCgpLnBhcmVudExheWVyID0g
bV9jb250ZW50TGF5ZXIuZ2V0KCk7CiAKICAgICBpZiAoc3VwcG9ydHNGb3JtcygpKSB7Ci0gICAg
ICAgIERvY3VtZW50KiBkb2N1bWVudCA9IHdlYkZyYW1lKCktPmNvcmVGcmFtZSgpLT5kb2N1bWVu
dCgpOwotICAgICAgICBtX2Fubm90YXRpb25Db250YWluZXIgPSBkb2N1bWVudC0+Y3JlYXRlRWxl
bWVudChkaXZUYWcsIGZhbHNlKTsKKyAgICAgICAgRG9jdW1lbnQmIGRvY3VtZW50ID0gd2ViRnJh
bWUoKS0+Y29yZUZyYW1lKCkuZG9jdW1lbnQoKTsKKyAgICAgICAgbV9hbm5vdGF0aW9uQ29udGFp
bmVyID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudChkaXZUYWcsIGZhbHNlKTsKICAgICAgICAgbV9h
bm5vdGF0aW9uQ29udGFpbmVyLT5zZXRBdHRyaWJ1dGUoaWRBdHRyLCAiYW5ub3RhdGlvbkNvbnRh
aW5lciIpOwogCi0gICAgICAgIFJlZlB0cjxFbGVtZW50PiBtX2Fubm90YXRpb25TdHlsZSA9IGRv
Y3VtZW50LT5jcmVhdGVFbGVtZW50KHN0eWxlVGFnLCBmYWxzZSk7CisgICAgICAgIFJlZlB0cjxF
bGVtZW50PiBtX2Fubm90YXRpb25TdHlsZSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoc3R5bGVU
YWcsIGZhbHNlKTsKICAgICAgICAgbV9hbm5vdGF0aW9uU3R5bGUtPnNldFRleHRDb250ZW50KGFu
bm90YXRpb25TdHlsZSwgQVNTRVJUX05PX0VYQ0VQVElPTik7CiAKICAgICAgICAgbV9hbm5vdGF0
aW9uQ29udGFpbmVyLT5hcHBlbmRDaGlsZChtX2Fubm90YXRpb25TdHlsZS5nZXQoKSk7Ci0gICAg
ICAgIGRvY3VtZW50LT5ib2R5KCktPmFwcGVuZENoaWxkKG1fYW5ub3RhdGlvbkNvbnRhaW5lci5n
ZXQoKSk7CisgICAgICAgIGRvY3VtZW50LmJvZHkoKS0+YXBwZW5kQ2hpbGQobV9hbm5vdGF0aW9u
Q29udGFpbmVyLmdldCgpKTsKICAgICB9CiAKICAgICBtX2FjY2Vzc2liaWxpdHlPYmplY3QgPSBh
ZG9wdE5TKFtbV0tQREZQbHVnaW5BY2Nlc3NpYmlsaXR5T2JqZWN0IGFsbG9jXSBpbml0V2l0aFBE
RlBsdWdpbjp0aGlzXSk7CkBAIC04MDQsNyArODA0LDcgQEAgdm9pZCBQREZQbHVnaW46OmFkZEFy
Y2hpdmVSZXNvdXJjZSgpCiAgICAgc3ludGhlc2l6ZWRSZXNwb25zZS5zZXRNaW1lVHlwZSgiYXBw
bGljYXRpb24vcGRmIik7CiAKICAgICBSZWZQdHI8QXJjaGl2ZVJlc291cmNlPiByZXNvdXJjZSA9
IEFyY2hpdmVSZXNvdXJjZTo6Y3JlYXRlKFNoYXJlZEJ1ZmZlcjo6d3JhcENGRGF0YShtX2RhdGEu
Z2V0KCkpLCBtX3NvdXJjZVVSTCwgImFwcGxpY2F0aW9uL3BkZiIsIFN0cmluZygpLCBTdHJpbmco
KSwgc3ludGhlc2l6ZWRSZXNwb25zZSk7Ci0gICAgcGx1Z2luVmlldygpLT5mcmFtZSgpLT5kb2N1
bWVudCgpLT5sb2FkZXIoKS0+YWRkQXJjaGl2ZVJlc291cmNlKHJlc291cmNlLnJlbGVhc2UoKSk7
CisgICAgcGx1Z2luVmlldygpLT5mcmFtZSgpLmRvY3VtZW50KCkubG9hZGVyKCktPmFkZEFyY2hp
dmVSZXNvdXJjZShyZXNvdXJjZS5yZWxlYXNlKCkpOwogfQogCiBzdGF0aWMgdm9pZCBqc1BERkRv
Y0luaXRpYWxpemUoSlNDb250ZXh0UmVmIGN0eCwgSlNPYmplY3RSZWYgb2JqZWN0KQpAQCAtMTU0
Miw3ICsxNTQyLDcgQEAgYm9vbCBQREZQbHVnaW46OmlzRnVsbEZyYW1lUGx1Z2luKCkKIHsKICAg
ICAvLyA8b2JqZWN0PiBvciA8ZW1iZWQ+IHBsdWdpbnMgd2lsbCBhcHBlYXIgdG8gYmUgaW4gdGhl
aXIgcGFyZW50IGZyYW1lLCBzbyB3ZSBoYXZlIHRvCiAgICAgLy8gY2hlY2sgd2hldGhlciBvdXIg
ZnJhbWUncyB3aWRnZXQgaXMgZXhhY3RseSBvdXIgUGx1Z2luVmlldy4KLSAgICBEb2N1bWVudCog
ZG9jdW1lbnQgPSB3ZWJGcmFtZSgpLT5jb3JlRnJhbWUoKS0+ZG9jdW1lbnQoKTsKKyAgICBEb2N1
bWVudCogZG9jdW1lbnQgPSB3ZWJGcmFtZSgpLT5jb3JlRnJhbWUoKS5kb2N1bWVudCgpOwogICAg
IHJldHVybiBkb2N1bWVudC0+aXNQbHVnaW5Eb2N1bWVudCgpICYmIHN0YXRpY19jYXN0PFBsdWdp
bkRvY3VtZW50Kj4oZG9jdW1lbnQpLT5wbHVnaW5XaWRnZXQoKSA9PSBwbHVnaW5WaWV3KCk7CiB9
CiAKQEAgLTE1NTcsNyArMTU1Nyw3IEBAIHZvaWQgUERGUGx1Z2luOjpjbGlja2VkTGluayhOU1VS
TCAqdXJsKQogCiAgICAgUmVmUHRyPEV2ZW50PiBjb3JlRXZlbnQ7CiAgICAgaWYgKG1fbGFzdE1v
dXNlRXZlbnQudHlwZSgpICE9IFdlYkV2ZW50OjpOb1R5cGUpCi0gICAgICAgIGNvcmVFdmVudCA9
IE1vdXNlRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuY2xpY2tFdmVudCwgZnJhbWUtPmRvY3Vt
ZW50KCktPmRlZmF1bHRWaWV3KCksIHBsYXRmb3JtKG1fbGFzdE1vdXNlRXZlbnQpLCAwLCAwKTsK
KyAgICAgICAgY29yZUV2ZW50ID0gTW91c2VFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5jbGlj
a0V2ZW50LCBmcmFtZS0+ZG9jdW1lbnQoKS5kZWZhdWx0VmlldygpLCBwbGF0Zm9ybShtX2xhc3RN
b3VzZUV2ZW50KSwgMCwgMCk7CiAKICAgICBmcmFtZS0+bG9hZGVyKCkudXJsU2VsZWN0ZWQodXJs
LCBlbXB0eVN0cmluZygpLCBjb3JlRXZlbnQuZ2V0KCksIExvY2tIaXN0b3J5OjpObywgTG9ja0Jh
Y2tGb3J3YXJkTGlzdDo6Tm8sIE1heWJlU2VuZFJlZmVycmVyKTsKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcCBiL1NvdXJjZS9X
ZWJLaXQyL1dlYlByb2Nlc3MvUGx1Z2lucy9QbHVnaW5WaWV3LmNwcAppbmRleCBiMTdlODI3Li44
ZjM5MGVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1BsdWdpbnMvUGx1
Z2luVmlldy5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9QbHVnaW5zL1BsdWdp
blZpZXcuY3BwCkBAIC02OTEsNyArNjkxLDcgQEAgdm9pZCBQbHVnaW5WaWV3OjpzdG9yYWdlQmxv
Y2tpbmdTdGF0ZUNoYW5nZWQoKQogICAgIGlmICghbV9pc0luaXRpYWxpemVkIHx8ICFtX3BsdWdp
bikKICAgICAgICAgcmV0dXJuOwogCi0gICAgYm9vbCBzdG9yYWdlQmxvY2tpbmdQb2xpY3kgPSAh
ZnJhbWUoKS0+ZG9jdW1lbnQoKS0+c2VjdXJpdHlPcmlnaW4oKS0+Y2FuQWNjZXNzUGx1Z2luU3Rv
cmFnZShmcmFtZSgpLT5kb2N1bWVudCgpLT50b3BPcmlnaW4oKSk7CisgICAgYm9vbCBzdG9yYWdl
QmxvY2tpbmdQb2xpY3kgPSAhZnJhbWUoKS5kb2N1bWVudCgpLnNlY3VyaXR5T3JpZ2luKCktPmNh
bkFjY2Vzc1BsdWdpblN0b3JhZ2UoZnJhbWUoKS0+ZG9jdW1lbnQoKS50b3BPcmlnaW4oKSk7CiAK
ICAgICBtX3BsdWdpbi0+c3RvcmFnZUJsb2NraW5nU3RhdGVDaGFuZ2VkKHN0b3JhZ2VCbG9ja2lu
Z1BvbGljeSk7CiB9CkBAIC0xMDgyLDcgKzEwODIsNyBAQCB2b2lkIFBsdWdpblZpZXc6OmZvY3Vz
UGx1Z2luRWxlbWVudCgpCiAgICAgaWYgKFBhZ2UqIHBhZ2UgPSBmcmFtZSgpLT5wYWdlKCkpCiAg
ICAgICAgIHBhZ2UtPmZvY3VzQ29udHJvbGxlcigpLnNldEZvY3VzZWRFbGVtZW50KG1fcGx1Z2lu
RWxlbWVudC5nZXQoKSwgZnJhbWUoKSk7CiAgICAgZWxzZQotICAgICAgICBmcmFtZSgpLT5kb2N1
bWVudCgpLT5zZXRGb2N1c2VkRWxlbWVudChtX3BsdWdpbkVsZW1lbnQpOworICAgICAgICBmcmFt
ZSgpLT5kb2N1bWVudCgpLnNldEZvY3VzZWRFbGVtZW50KG1fcGx1Z2luRWxlbWVudCk7CiB9CiAK
IHZvaWQgUGx1Z2luVmlldzo6cGVuZGluZ1VSTFJlcXVlc3RzVGltZXJGaXJlZCgpCkBAIC0xMzMz
LDcgKzEzMzMsNyBAQCB2b2lkIFBsdWdpblZpZXc6OmxvYWRVUkwodWludDY0X3QgcmVxdWVzdElE
LCBjb25zdCBTdHJpbmcmIG1ldGhvZCwgY29uc3QgU3RyaW5nJgogICAgIGZyYW1lTG9hZFJlcXVl
c3QucmVzb3VyY2VSZXF1ZXN0KCkuc2V0SFRUUEJvZHkoRm9ybURhdGE6OmNyZWF0ZShodHRwQm9k
eS5kYXRhKCksIGh0dHBCb2R5LnNpemUoKSkpOwogICAgIGZyYW1lTG9hZFJlcXVlc3Quc2V0RnJh
bWVOYW1lKHRhcmdldCk7CiAKLSAgICBTdHJpbmcgcmVmZXJyZXIgPSBTZWN1cml0eVBvbGljeTo6
Z2VuZXJhdGVSZWZlcnJlckhlYWRlcihmcmFtZSgpLT5kb2N1bWVudCgpLT5yZWZlcnJlclBvbGlj
eSgpLCBmcmFtZUxvYWRSZXF1ZXN0LnJlc291cmNlUmVxdWVzdCgpLnVybCgpLCBmcmFtZSgpLT5s
b2FkZXIoKS5vdXRnb2luZ1JlZmVycmVyKCkpOworICAgIFN0cmluZyByZWZlcnJlciA9IFNlY3Vy
aXR5UG9saWN5OjpnZW5lcmF0ZVJlZmVycmVySGVhZGVyKGZyYW1lKCktPmRvY3VtZW50KCkucmVm
ZXJyZXJQb2xpY3koKSwgZnJhbWVMb2FkUmVxdWVzdC5yZXNvdXJjZVJlcXVlc3QoKS51cmwoKSwg
ZnJhbWUoKS0+bG9hZGVyKCkub3V0Z29pbmdSZWZlcnJlcigpKTsKICAgICBpZiAoIXJlZmVycmVy
LmlzRW1wdHkoKSkKICAgICAgICAgZnJhbWVMb2FkUmVxdWVzdC5yZXNvdXJjZVJlcXVlc3QoKS5z
ZXRIVFRQUmVmZXJyZXIocmVmZXJyZXIpOwogCkBAIC0xNTM2LDcgKzE1MzYsNyBAQCBib29sIFBs
dWdpblZpZXc6OmlzUHJpdmF0ZUJyb3dzaW5nRW5hYmxlZCgpCiAgICAgaWYgKCFmcmFtZSgpKQog
ICAgICAgICByZXR1cm4gdHJ1ZTsKIAotICAgIGlmICghZnJhbWUoKS0+ZG9jdW1lbnQoKS0+c2Vj
dXJpdHlPcmlnaW4oKS0+Y2FuQWNjZXNzUGx1Z2luU3RvcmFnZShmcmFtZSgpLT5kb2N1bWVudCgp
LT50b3BPcmlnaW4oKSkpCisgICAgaWYgKCFmcmFtZSgpLT5kb2N1bWVudCgpLnNlY3VyaXR5T3Jp
Z2luKCkuY2FuQWNjZXNzUGx1Z2luU3RvcmFnZShmcmFtZSgpLT5kb2N1bWVudCgpLnRvcE9yaWdp
bigpKSkKICAgICAgICAgcmV0dXJuIHRydWU7CiAKICAgICByZXR1cm4gZnJhbWUoKS0+cGFnZSgp
LT51c2VzRXBoZW1lcmFsU2Vzc2lvbigpOwpAQCAtMTczMiw3ICsxNzMyLDcgQEAgdm9pZCBQbHVn
aW5WaWV3OjpwbHVnaW5EaWRSZWNlaXZlVXNlckludGVyYWN0aW9uKCkKICAgICBtX2RpZFJlY2Vp
dmVVc2VySW50ZXJhY3Rpb24gPSB0cnVlOwogCiAgICAgV2ViQ29yZTo6SFRNTFBsdWdJbkltYWdl
RWxlbWVudCogcGx1Z0luSW1hZ2VFbGVtZW50ID0gdG9IVE1MUGx1Z0luSW1hZ2VFbGVtZW50KG1f
cGx1Z2luRWxlbWVudC5nZXQoKSk7Ci0gICAgU3RyaW5nIHBhZ2VPcmlnaW4gPSBwbHVnSW5JbWFn
ZUVsZW1lbnQtPmRvY3VtZW50KCkucGFnZSgpLT5tYWluRnJhbWUoKS5kb2N1bWVudCgpLT5iYXNl
VVJMKCkuaG9zdCgpOworICAgIFN0cmluZyBwYWdlT3JpZ2luID0gcGx1Z0luSW1hZ2VFbGVtZW50
LT5kb2N1bWVudCgpLnBhZ2UoKS0+bWFpbmZyYW1lKCkuZG9jdW1lbnQoKS5iYXNlVVJMKCkuaG9z
dCgpOwogICAgIFN0cmluZyBwbHVnaW5PcmlnaW4gPSBwbHVnSW5JbWFnZUVsZW1lbnQtPmxvYWRl
ZFVybCgpLmhvc3QoKTsKICAgICBTdHJpbmcgbWltZVR5cGUgPSBwbHVnSW5JbWFnZUVsZW1lbnQt
PmxvYWRlZE1pbWVUeXBlKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nl
c3MvU3RvcmFnZS9TdG9yYWdlQXJlYU1hcC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNz
L1N0b3JhZ2UvU3RvcmFnZUFyZWFNYXAuY3BwCmluZGV4IGFlNGNlNmUuLmFhMTAyN2UgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvU3RvcmFnZS9TdG9yYWdlQXJlYU1hcC5j
cHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9TdG9yYWdlL1N0b3JhZ2VBcmVhTWFw
LmNwcApAQCAtMTE5LDcgKzExOSw3IEBAIHZvaWQgU3RvcmFnZUFyZWFNYXA6OnNldEl0ZW0oRnJh
bWUqIHNvdXJjZUZyYW1lLCBTdG9yYWdlQXJlYUltcGwqIHNvdXJjZUFyZWEsIGNvCiAKICAgICBt
X3BlbmRpbmdWYWx1ZUNoYW5nZXMuYWRkKGtleSk7CiAKLSAgICBXZWJQcm9jZXNzOjpzaGFyZWQo
KS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpTdG9yYWdlTWFuYWdl
cjo6U2V0SXRlbShtX3N0b3JhZ2VNYXBJRCwgc291cmNlQXJlYS0+c3RvcmFnZUFyZWFJRCgpLCBt
X2N1cnJlbnRTZWVkLCBrZXksIHZhbHVlLCBzb3VyY2VGcmFtZS0+ZG9jdW1lbnQoKS0+dXJsKCkp
LCAwKTsKKyAgICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigp
LT5zZW5kKE1lc3NhZ2VzOjpTdG9yYWdlTWFuYWdlcjo6U2V0SXRlbShtX3N0b3JhZ2VNYXBJRCwg
c291cmNlQXJlYS0+c3RvcmFnZUFyZWFJRCgpLCBtX2N1cnJlbnRTZWVkLCBrZXksIHZhbHVlLCBz
b3VyY2VGcmFtZS0+ZG9jdW1lbnQoKS51cmwoKSksIDApOwogfQogCiB2b2lkIFN0b3JhZ2VBcmVh
TWFwOjpyZW1vdmVJdGVtKFdlYkNvcmU6OkZyYW1lKiBzb3VyY2VGcmFtZSwgU3RvcmFnZUFyZWFJ
bXBsKiBzb3VyY2VBcmVhLCBjb25zdCBTdHJpbmcmIGtleSkKQEAgLTEzNSw3ICsxMzUsNyBAQCB2
b2lkIFN0b3JhZ2VBcmVhTWFwOjpyZW1vdmVJdGVtKFdlYkNvcmU6OkZyYW1lKiBzb3VyY2VGcmFt
ZSwgU3RvcmFnZUFyZWFJbXBsKiBzbwogCiAgICAgbV9wZW5kaW5nVmFsdWVDaGFuZ2VzLmFkZChr
ZXkpOwogCi0gICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24o
KS0+c2VuZChNZXNzYWdlczo6U3RvcmFnZU1hbmFnZXI6OlJlbW92ZUl0ZW0obV9zdG9yYWdlTWFw
SUQsIHNvdXJjZUFyZWEtPnN0b3JhZ2VBcmVhSUQoKSwgbV9jdXJyZW50U2VlZCwga2V5LCBzb3Vy
Y2VGcmFtZS0+ZG9jdW1lbnQoKS0+dXJsKCkpLCAwKTsKKyAgICBXZWJQcm9jZXNzOjpzaGFyZWQo
KS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpTdG9yYWdlTWFuYWdl
cjo6UmVtb3ZlSXRlbShtX3N0b3JhZ2VNYXBJRCwgc291cmNlQXJlYS0+c3RvcmFnZUFyZWFJRCgp
LCBtX2N1cnJlbnRTZWVkLCBrZXksIHNvdXJjZUZyYW1lLT5kb2N1bWVudCgpLnVybCgpKSwgMCk7
CiB9CiAKIHZvaWQgU3RvcmFnZUFyZWFNYXA6OmNsZWFyKFdlYkNvcmU6OkZyYW1lKiBzb3VyY2VG
cmFtZSwgU3RvcmFnZUFyZWFJbXBsKiBzb3VyY2VBcmVhKQpAQCAtMTQ0LDcgKzE0NCw3IEBAIHZv
aWQgU3RvcmFnZUFyZWFNYXA6OmNsZWFyKFdlYkNvcmU6OkZyYW1lKiBzb3VyY2VGcmFtZSwgU3Rv
cmFnZUFyZWFJbXBsKiBzb3VyY2VBCiAKICAgICBtX2hhc1BlbmRpbmdDbGVhciA9IHRydWU7CiAg
ICAgbV9zdG9yYWdlTWFwID0gU3RvcmFnZU1hcDo6Y3JlYXRlKG1fcXVvdGFJbkJ5dGVzKTsKLSAg
ICBXZWJQcm9jZXNzOjpzaGFyZWQoKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1l
c3NhZ2VzOjpTdG9yYWdlTWFuYWdlcjo6Q2xlYXIobV9zdG9yYWdlTWFwSUQsIHNvdXJjZUFyZWEt
PnN0b3JhZ2VBcmVhSUQoKSwgbV9jdXJyZW50U2VlZCwgc291cmNlRnJhbWUtPmRvY3VtZW50KCkt
PnVybCgpKSwgMCk7CisgICAgV2ViUHJvY2Vzczo6c2hhcmVkKCkucGFyZW50UHJvY2Vzc0Nvbm5l
Y3Rpb24oKS0+c2VuZChNZXNzYWdlczo6U3RvcmFnZU1hbmFnZXI6OkNsZWFyKG1fc3RvcmFnZU1h
cElELCBzb3VyY2VBcmVhLT5zdG9yYWdlQXJlYUlEKCksIG1fY3VycmVudFNlZWQsIHNvdXJjZUZy
YW1lLT5kb2N1bWVudCgpLnVybCgpKSwgMCk7CiB9CiAKIGJvb2wgU3RvcmFnZUFyZWFNYXA6OmNv
bnRhaW5zKGNvbnN0IFN0cmluZyYga2V5KQpAQCAtMzE0LDcgKzMxNCw3IEBAIHZvaWQgU3RvcmFn
ZUFyZWFNYXA6OmRpc3BhdGNoU2Vzc2lvblN0b3JhZ2VFdmVudCh1aW50NjRfdCBzb3VyY2VTdG9y
YWdlQXJlYUlELCBjCiAKICAgICBQYWdlKiBwYWdlID0gd2ViUGFnZS0+Y29yZVBhZ2UoKTsKICAg
ICBmb3IgKEZyYW1lKiBmcmFtZSA9ICZwYWdlLT5tYWluRnJhbWUoKTsgZnJhbWU7IGZyYW1lID0g
ZnJhbWUtPnRyZWUoKS50cmF2ZXJzZU5leHQoKSkgewotICAgICAgICBEb2N1bWVudCogZG9jdW1l
bnQgPSBmcmFtZS0+ZG9jdW1lbnQoKTsKKyAgICAgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gJmZy
YW1lLT5kb2N1bWVudCgpOwogICAgICAgICBpZiAoIWRvY3VtZW50LT5zZWN1cml0eU9yaWdpbigp
LT5lcXVhbChtX3NlY3VyaXR5T3JpZ2luLmdldCgpKSkKICAgICAgICAgICAgIGNvbnRpbnVlOwog
CkBAIC0zNDQsNyArMzQ0LDcgQEAgdm9pZCBTdG9yYWdlQXJlYU1hcDo6ZGlzcGF0Y2hMb2NhbFN0
b3JhZ2VFdmVudCh1aW50NjRfdCBzb3VyY2VTdG9yYWdlQXJlYUlELCBjb24KICAgICBjb25zdCBI
YXNoU2V0PFBhZ2UqPiYgcGFnZXMgPSBwYWdlR3JvdXAucGFnZXMoKTsKICAgICBmb3IgKEhhc2hT
ZXQ8UGFnZSo+Ojpjb25zdF9pdGVyYXRvciBpdCA9IHBhZ2VzLmJlZ2luKCksIGVuZCA9IHBhZ2Vz
LmVuZCgpOyBpdCAhPSBlbmQ7ICsraXQpIHsKICAgICAgICAgZm9yIChGcmFtZSogZnJhbWUgPSAm
KCppdCktPm1haW5GcmFtZSgpOyBmcmFtZTsgZnJhbWUgPSBmcmFtZS0+dHJlZSgpLnRyYXZlcnNl
TmV4dCgpKSB7Ci0gICAgICAgICAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBmcmFtZS0+ZG9jdW1l
bnQoKTsKKyAgICAgICAgICAgIERvY3VtZW50KiBkb2N1bWVudCA9ICZmcmFtZS0+ZG9jdW1lbnQo
KTsKICAgICAgICAgICAgIGlmICghZG9jdW1lbnQtPnNlY3VyaXR5T3JpZ2luKCktPmVxdWFsKG1f
c2VjdXJpdHlPcmlnaW4uZ2V0KCkpKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkNocm9t
ZUNsaWVudC5jcHAgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YkNocm9tZUNsaWVudC5jcHAKaW5kZXggZTcyYmZiMi4uMWEzMGViMyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJDaHJvbWVDbGllbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViQ2hyb21l
Q2xpZW50LmNwcApAQCAtMjAwLDggKzIwMCw4IEBAIHZvaWQgV2ViQ2hyb21lQ2xpZW50Ojpmb2N1
c2VkRnJhbWVDaGFuZ2VkKEZyYW1lKiBmcmFtZSkKIFBhZ2UqIFdlYkNocm9tZUNsaWVudDo6Y3Jl
YXRlV2luZG93KEZyYW1lKiBmcmFtZSwgY29uc3QgRnJhbWVMb2FkUmVxdWVzdCYgcmVxdWVzdCwg
Y29uc3QgV2luZG93RmVhdHVyZXMmIHdpbmRvd0ZlYXR1cmVzLCBjb25zdCBOYXZpZ2F0aW9uQWN0
aW9uJiBuYXZpZ2F0aW9uQWN0aW9uKQogewogI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKLSAg
ICBpZiAoZnJhbWUtPmRvY3VtZW50KCkgJiYgZnJhbWUtPmRvY3VtZW50KCktPndlYmtpdEN1cnJl
bnRGdWxsU2NyZWVuRWxlbWVudCgpKQotICAgICAgICBmcmFtZS0+ZG9jdW1lbnQoKS0+d2Via2l0
Q2FuY2VsRnVsbFNjcmVlbigpOworICAgIGlmIChmcmFtZS0+ZG9jdW1lbnQoKSAmJiBmcmFtZS0+
ZG9jdW1lbnQoKS53ZWJraXRDdXJyZW50RnVsbFNjcmVlbkVsZW1lbnQoKSkKKyAgICAgICAgZnJh
bWUtPmRvY3VtZW50KCkud2Via2l0Q2FuY2VsRnVsbFNjcmVlbigpOwogI2VuZGlmCiAKICAgICBX
ZWJGcmFtZSogd2ViRnJhbWUgPSBXZWJGcmFtZTo6ZnJvbUNvcmVGcmFtZSgqZnJhbWUpOwpAQCAt
NjE3LDcgKzYxNyw3IEBAIHZvaWQgV2ViQ2hyb21lQ2xpZW50OjpleGNlZWRlZERhdGFiYXNlUXVv
dGEoRnJhbWUqIGZyYW1lLCBjb25zdCBTdHJpbmcmIGRhdGFiYXNlCiAgICAgV2ViRnJhbWUqIHdl
YkZyYW1lID0gV2ViRnJhbWU6OmZyb21Db3JlRnJhbWUoKmZyYW1lKTsKICAgICBBU1NFUlQod2Vi
RnJhbWUpOwogICAgIAotICAgIFNlY3VyaXR5T3JpZ2luKiBvcmlnaW4gPSBmcmFtZS0+ZG9jdW1l
bnQoKS0+c2VjdXJpdHlPcmlnaW4oKTsKKyAgICBTZWN1cml0eU9yaWdpbiogb3JpZ2luID0gZnJh
bWUtPmRvY3VtZW50KCkuc2VjdXJpdHlPcmlnaW4oKTsKIAogICAgIERhdGFiYXNlTWFuYWdlciYg
ZGJNYW5hZ2VyID0gRGF0YWJhc2VNYW5hZ2VyOjptYW5hZ2VyKCk7CiAgICAgdWludDY0X3QgY3Vy
cmVudFF1b3RhID0gZGJNYW5hZ2VyLnF1b3RhRm9yT3JpZ2luKG9yaWdpbik7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVy
Q2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2Vi
RnJhbWVMb2FkZXJDbGllbnQuY3BwCmluZGV4IGIwM2ZiMjguLjFkNTJhNmUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJD
bGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViRnJhbWVMb2FkZXJDbGllbnQuY3BwCkBAIC0zMjUsNyArMzI1LDcgQEAgdm9pZCBXZWJGcmFt
ZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRDaGFuZ2VMb2NhdGlvbldpdGhpblBhZ2UoKQogICAg
IHdlYlBhZ2UtPmluamVjdGVkQnVuZGxlTG9hZGVyQ2xpZW50KCkuZGlkU2FtZURvY3VtZW50TmF2
aWdhdGlvbkZvckZyYW1lKHdlYlBhZ2UsIG1fZnJhbWUsIFNhbWVEb2N1bWVudE5hdmlnYXRpb25B
bmNob3JOYXZpZ2F0aW9uLCB1c2VyRGF0YSk7CiAKICAgICAvLyBOb3RpZnkgdGhlIFVJUHJvY2Vz
cy4KLSAgICB3ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZFNhbWVEb2N1
bWVudE5hdmlnYXRpb25Gb3JGcmFtZShtX2ZyYW1lLT5mcmFtZUlEKCksIFNhbWVEb2N1bWVudE5h
dmlnYXRpb25BbmNob3JOYXZpZ2F0aW9uLCBtX2ZyYW1lLT5jb3JlRnJhbWUoKS0+ZG9jdW1lbnQo
KS0+dXJsKCkuc3RyaW5nKCksIEluamVjdGVkQnVuZGxlVXNlck1lc3NhZ2VFbmNvZGVyKHVzZXJE
YXRhLmdldCgpKSkpOworICAgIHdlYlBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6
RGlkU2FtZURvY3VtZW50TmF2aWdhdGlvbkZvckZyYW1lKG1fZnJhbWUtPmZyYW1lSUQoKSwgU2Ft
ZURvY3VtZW50TmF2aWdhdGlvbkFuY2hvck5hdmlnYXRpb24sIG1fZnJhbWUtPmNvcmVGcmFtZSgp
LT5kb2N1bWVudCgpLnVybCgpLnN0cmluZygpLCBJbmplY3RlZEJ1bmRsZVVzZXJNZXNzYWdlRW5j
b2Rlcih1c2VyRGF0YS5nZXQoKSkpKTsKIH0KIAogdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVudDo6
ZGlzcGF0Y2hEaWRQdXNoU3RhdGVXaXRoaW5QYWdlKCkKQEAgLTM0MCw3ICszNDAsNyBAQCB2b2lk
IFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZFB1c2hTdGF0ZVdpdGhpblBhZ2UoKQog
ICAgIHdlYlBhZ2UtPmluamVjdGVkQnVuZGxlTG9hZGVyQ2xpZW50KCkuZGlkU2FtZURvY3VtZW50
TmF2aWdhdGlvbkZvckZyYW1lKHdlYlBhZ2UsIG1fZnJhbWUsIFNhbWVEb2N1bWVudE5hdmlnYXRp
b25TZXNzaW9uU3RhdGVQdXNoLCB1c2VyRGF0YSk7CiAKICAgICAvLyBOb3RpZnkgdGhlIFVJUHJv
Y2Vzcy4KLSAgICB3ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJveHk6OkRpZFNhbWVE
b2N1bWVudE5hdmlnYXRpb25Gb3JGcmFtZShtX2ZyYW1lLT5mcmFtZUlEKCksIFNhbWVEb2N1bWVu
dE5hdmlnYXRpb25TZXNzaW9uU3RhdGVQdXNoLCBtX2ZyYW1lLT5jb3JlRnJhbWUoKS0+ZG9jdW1l
bnQoKS0+dXJsKCkuc3RyaW5nKCksIEluamVjdGVkQnVuZGxlVXNlck1lc3NhZ2VFbmNvZGVyKHVz
ZXJEYXRhLmdldCgpKSkpOworICAgIHdlYlBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94
eTo6RGlkU2FtZURvY3VtZW50TmF2aWdhdGlvbkZvckZyYW1lKG1fZnJhbWUtPmZyYW1lSUQoKSwg
U2FtZURvY3VtZW50TmF2aWdhdGlvblNlc3Npb25TdGF0ZVB1c2gsIG1fZnJhbWUtPmNvcmVGcmFt
ZSgpLT5kb2N1bWVudCgpLnVybCgpLnN0cmluZygpLCBJbmplY3RlZEJ1bmRsZVVzZXJNZXNzYWdl
RW5jb2Rlcih1c2VyRGF0YS5nZXQoKSkpKTsKIH0KIAogdm9pZCBXZWJGcmFtZUxvYWRlckNsaWVu
dDo6ZGlzcGF0Y2hEaWRSZXBsYWNlU3RhdGVXaXRoaW5QYWdlKCkKQEAgLTM1NSw3ICszNTUsNyBA
QCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZFJlcGxhY2VTdGF0ZVdpdGhp
blBhZ2UoKQogICAgIHdlYlBhZ2UtPmluamVjdGVkQnVuZGxlTG9hZGVyQ2xpZW50KCkuZGlkU2Ft
ZURvY3VtZW50TmF2aWdhdGlvbkZvckZyYW1lKHdlYlBhZ2UsIG1fZnJhbWUsIFNhbWVEb2N1bWVu
dE5hdmlnYXRpb25TZXNzaW9uU3RhdGVSZXBsYWNlLCB1c2VyRGF0YSk7CiAKICAgICAvLyBOb3Rp
ZnkgdGhlIFVJUHJvY2Vzcy4KLSAgICB3ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQYWdlUHJv
eHk6OkRpZFNhbWVEb2N1bWVudE5hdmlnYXRpb25Gb3JGcmFtZShtX2ZyYW1lLT5mcmFtZUlEKCks
IFNhbWVEb2N1bWVudE5hdmlnYXRpb25TZXNzaW9uU3RhdGVSZXBsYWNlLCBtX2ZyYW1lLT5jb3Jl
RnJhbWUoKS0+ZG9jdW1lbnQoKS0+dXJsKCkuc3RyaW5nKCksIEluamVjdGVkQnVuZGxlVXNlck1l
c3NhZ2VFbmNvZGVyKHVzZXJEYXRhLmdldCgpKSkpOworICAgIHdlYlBhZ2UtPnNlbmQoTWVzc2Fn
ZXM6OldlYlBhZ2VQcm94eTo6RGlkU2FtZURvY3VtZW50TmF2aWdhdGlvbkZvckZyYW1lKG1fZnJh
bWUtPmZyYW1lSUQoKSwgU2FtZURvY3VtZW50TmF2aWdhdGlvblNlc3Npb25TdGF0ZVJlcGxhY2Us
IG1fZnJhbWUtPmNvcmVGcmFtZSgpLT5kb2N1bWVudCgpLnVybCgpLnN0cmluZygpLCBJbmplY3Rl
ZEJ1bmRsZVVzZXJNZXNzYWdlRW5jb2Rlcih1c2VyRGF0YS5nZXQoKSkpKTsKIH0KIAogdm9pZCBX
ZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEaWRQb3BTdGF0ZVdpdGhpblBhZ2UoKQpAQCAt
MzcwLDcgKzM3MCw3IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGlkUG9w
U3RhdGVXaXRoaW5QYWdlKCkKICAgICB3ZWJQYWdlLT5pbmplY3RlZEJ1bmRsZUxvYWRlckNsaWVu
dCgpLmRpZFNhbWVEb2N1bWVudE5hdmlnYXRpb25Gb3JGcmFtZSh3ZWJQYWdlLCBtX2ZyYW1lLCBT
YW1lRG9jdW1lbnROYXZpZ2F0aW9uU2Vzc2lvblN0YXRlUG9wLCB1c2VyRGF0YSk7CiAKICAgICAv
LyBOb3RpZnkgdGhlIFVJUHJvY2Vzcy4KLSAgICB3ZWJQYWdlLT5zZW5kKE1lc3NhZ2VzOjpXZWJQ
YWdlUHJveHk6OkRpZFNhbWVEb2N1bWVudE5hdmlnYXRpb25Gb3JGcmFtZShtX2ZyYW1lLT5mcmFt
ZUlEKCksIFNhbWVEb2N1bWVudE5hdmlnYXRpb25TZXNzaW9uU3RhdGVQb3AsIG1fZnJhbWUtPmNv
cmVGcmFtZSgpLT5kb2N1bWVudCgpLT51cmwoKS5zdHJpbmcoKSwgSW5qZWN0ZWRCdW5kbGVVc2Vy
TWVzc2FnZUVuY29kZXIodXNlckRhdGEuZ2V0KCkpKSk7CisgICAgd2ViUGFnZS0+c2VuZChNZXNz
YWdlczo6V2ViUGFnZVByb3h5OjpEaWRTYW1lRG9jdW1lbnROYXZpZ2F0aW9uRm9yRnJhbWUobV9m
cmFtZS0+ZnJhbWVJRCgpLCBTYW1lRG9jdW1lbnROYXZpZ2F0aW9uU2Vzc2lvblN0YXRlUG9wLCBt
X2ZyYW1lLT5jb3JlRnJhbWUoKS0+ZG9jdW1lbnQoKS51cmwoKS5zdHJpbmcoKSwgSW5qZWN0ZWRC
dW5kbGVVc2VyTWVzc2FnZUVuY29kZXIodXNlckRhdGEuZ2V0KCkpKSk7CiB9CiAKIHZvaWQgV2Vi
RnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoV2lsbENsb3NlKCkKQEAgLTM5MCw3ICszOTAsNyBA
QCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERpZFN0YXJ0UHJvdmlzaW9uYWxM
b2FkKCkKICAgICAgICAgcmV0dXJuOwogCiAjaWYgRU5BQkxFKEZVTExTQ1JFRU5fQVBJKQotICAg
IEVsZW1lbnQqIGRvY3VtZW50RWxlbWVudCA9IG1fZnJhbWUtPmNvcmVGcmFtZSgpLT5kb2N1bWVu
dCgpLT5kb2N1bWVudEVsZW1lbnQoKTsKKyAgICBFbGVtZW50KiBkb2N1bWVudEVsZW1lbnQgPSBt
X2ZyYW1lLT5jb3JlRnJhbWUoKS0+ZG9jdW1lbnQoKS5kb2N1bWVudEVsZW1lbnQoKTsKICAgICBp
ZiAoZG9jdW1lbnRFbGVtZW50ICYmIGRvY3VtZW50RWxlbWVudC0+Y29udGFpbnNGdWxsU2NyZWVu
RWxlbWVudCgpKQogICAgICAgICB3ZWJQYWdlLT5mdWxsU2NyZWVuTWFuYWdlcigpLT5leGl0RnVs
bFNjcmVlbkZvckVsZW1lbnQod2ViUGFnZS0+ZnVsbFNjcmVlbk1hbmFnZXIoKS0+ZWxlbWVudCgp
KTsKICNlbmRpZgpAQCAtNTcwLDcgKzU3MCw3IEBAIHZvaWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6
OmRpc3BhdGNoRGlkTGF5b3V0KExheW91dE1pbGVzdG9uZXMgbWlsZXN0b25lcykKICAgICAKICNp
ZiBVU0UoVElMRURfQkFDS0lOR19TVE9SRSkKICAgICAgICAgLy8gTWFrZSBzdXJlIHZpZXdwb3J0
IHByb3BlcnRpZXMgYXJlIGRpc3BhdGNoZWQgb24gdGhlIG1haW4gZnJhbWUgYnkgdGhlIHRpbWUg
dGhlIGZpcnN0IGxheW91dCBoYXBwZW5zLgotICAgICAgICBBU1NFUlQoIXdlYlBhZ2UtPnVzZUZp
eGVkTGF5b3V0KCkgfHwgbV9mcmFtZSAhPSBtX2ZyYW1lLT5wYWdlKCktPm1haW5XZWJGcmFtZSgp
IHx8IG1fZnJhbWUtPmNvcmVGcmFtZSgpLT5kb2N1bWVudCgpLT5kaWREaXNwYXRjaFZpZXdwb3J0
UHJvcGVydGllc0NoYW5nZWQoKSk7CisgICAgICAgIEFTU0VSVCghd2ViUGFnZS0+dXNlRml4ZWRM
YXlvdXQoKSB8fCBtX2ZyYW1lICE9IG1fZnJhbWUtPnBhZ2UoKS0+bWFpbldlYkZyYW1lKCkgfHwg
bV9mcmFtZS0+Y29yZUZyYW1lKCktPmRvY3VtZW50KCkuZGlkRGlzcGF0Y2hWaWV3cG9ydFByb3Bl
cnRpZXNDaGFuZ2VkKCkpOwogI2VuZGlmCiAgICAgfQogCkBAIC02MTQsNyArNjE0LDcgQEAgRnJh
bWUqIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaENyZWF0ZVBhZ2UoY29uc3QgTmF2aWdh
dGlvbkFjdGlvbiYgbmF2aWdhdGkKICAgICAgICAgcmV0dXJuIDA7CiAKICAgICAvLyBKdXN0IGNh
bGwgdGhyb3VnaCB0byB0aGUgY2hyb21lIGNsaWVudC4KLSAgICBQYWdlKiBuZXdQYWdlID0gd2Vi
UGFnZS0+Y29yZVBhZ2UoKS0+Y2hyb21lKCkuY3JlYXRlV2luZG93KG1fZnJhbWUtPmNvcmVGcmFt
ZSgpLCBGcmFtZUxvYWRSZXF1ZXN0KG1fZnJhbWUtPmNvcmVGcmFtZSgpLT5kb2N1bWVudCgpLT5z
ZWN1cml0eU9yaWdpbigpLCBuYXZpZ2F0aW9uQWN0aW9uLnJlc291cmNlUmVxdWVzdCgpKSwgV2lu
ZG93RmVhdHVyZXMoKSwgbmF2aWdhdGlvbkFjdGlvbik7CisgICAgUGFnZSogbmV3UGFnZSA9IHdl
YlBhZ2UtPmNvcmVQYWdlKCktPmNocm9tZSgpLmNyZWF0ZVdpbmRvdyhtX2ZyYW1lLT5jb3JlRnJh
bWUoKSwgRnJhbWVMb2FkUmVxdWVzdChtX2ZyYW1lLT5jb3JlRnJhbWUoKS0+ZG9jdW1lbnQoKS5z
ZWN1cml0eU9yaWdpbigpLCBuYXZpZ2F0aW9uQWN0aW9uLnJlc291cmNlUmVxdWVzdCgpKSwgV2lu
ZG93RmVhdHVyZXMoKSwgbmF2aWdhdGlvbkFjdGlvbik7CiAgICAgaWYgKCFuZXdQYWdlKQogICAg
ICAgICByZXR1cm4gMDsKICAgICAKQEAgLTg2Myw3ICs4NjMsNyBAQCB2b2lkIFdlYkZyYW1lTG9h
ZGVyQ2xpZW50Ojpjb21taXR0ZWRMb2FkKERvY3VtZW50TG9hZGVyKiBsb2FkZXIsIGNvbnN0IGNo
YXIqIGRhdAogCiAgICAgLy8gSWYgdGhlIGRvY3VtZW50IGlzIGEgc3RhbmQtYWxvbmUgbWVkaWEg
ZG9jdW1lbnQsIG5vdyBpcyB0aGUgcmlnaHQgdGltZSB0byBjYW5jZWwgdGhlIFdlYktpdCBsb2Fk
LgogICAgIC8vIEZJWE1FOiBUaGlzIGNvZGUgc2hvdWxkIGJlIHNoYXJlZCBhY3Jvc3MgYWxsIHBv
cnRzLiA8aHR0cDovL3dlYmtpdC5vcmcvYi80ODc2Mj4uCi0gICAgaWYgKG1fZnJhbWUtPmNvcmVG
cmFtZSgpLT5kb2N1bWVudCgpLT5pc01lZGlhRG9jdW1lbnQoKSkKKyAgICBpZiAobV9mcmFtZS0+
Y29yZUZyYW1lKCktPmRvY3VtZW50KCkuaXNNZWRpYURvY3VtZW50KCkpCiAgICAgICAgIGxvYWRl
ci0+Y2FuY2VsTWFpblJlc291cmNlTG9hZChwbHVnaW5XaWxsSGFuZGxlTG9hZEVycm9yKGxvYWRl
ci0+cmVzcG9uc2UoKSkpOwogCiAgICAgLy8gQ2FsbGluZyBjb21taXREYXRhIGRpZCBub3QgY3Jl
YXRlIHRoZSBwbHVnLWluIHZpZXcuCkBAIC0xNTkyLDcgKzE1OTIsNyBAQCBib29sIFdlYkZyYW1l
TG9hZGVyQ2xpZW50OjphbGxvd1NjcmlwdChib29sIGVuYWJsZWRQZXJTZXR0aW5ncykKIAogICAg
IEZyYW1lKiBjb3JlRnJhbWUgPSBtX2ZyYW1lLT5jb3JlRnJhbWUoKTsKIAotICAgIGlmIChjb3Jl
RnJhbWUtPmRvY3VtZW50KCktPmlzUGx1Z2luRG9jdW1lbnQoKSkgeworICAgIGlmIChjb3JlRnJh
bWUtPmRvY3VtZW50KCkuaXNQbHVnaW5Eb2N1bWVudCgpKSB7CiAgICAgICAgIFBsdWdpbkRvY3Vt
ZW50KiBwbHVnaW5Eb2N1bWVudCA9IHN0YXRpY19jYXN0PFBsdWdpbkRvY3VtZW50Kj4oY29yZUZy
YW1lLT5kb2N1bWVudCgpKTsKIAogICAgICAgICBpZiAocGx1Z2luRG9jdW1lbnQtPnBsdWdpbldp
ZGdldCgpICYmIHBsdWdpbkRvY3VtZW50LT5wbHVnaW5XaWRnZXQoKS0+aXNQbHVnaW5WaWV3KCkp
IHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
bWFjL1dlYkVkaXRvckNsaWVudE1hYy5tbSBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvbWFjL1dlYkVkaXRvckNsaWVudE1hYy5tbQppbmRleCBmMzZkZGJjLi43OWNl
ZWUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0
L21hYy9XZWJFZGl0b3JDbGllbnRNYWMubW0KKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJDb3JlU3VwcG9ydC9tYWMvV2ViRWRpdG9yQ2xpZW50TWFjLm1tCkBAIC0xMTQsMTEgKzEx
NCwxMSBAQCBEb2N1bWVudEZyYWdtZW50KiBXZWJFZGl0b3JDbGllbnQ6OmRvY3VtZW50RnJhZ21l
bnRGcm9tQXR0cmlidXRlZFN0cmluZyhOU0F0dHJpYgogICAgIE5TRGljdGlvbmFyeSAqZGljdGlv
bmFyeSA9IFtOU0RpY3Rpb25hcnkgZGljdGlvbmFyeVdpdGhPYmplY3Q6ZXhjbHVkZWRFbGVtZW50
cyBmb3JLZXk6TlNFeGNsdWRlZEVsZW1lbnRzRG9jdW1lbnRBdHRyaWJ1dGVdOwogICAgIAogICAg
IE5TQXJyYXkgKnN1YlJlc291cmNlczsKLSAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBtX3BhZ2Ut
Pm1haW5GcmFtZSgpLT5kb2N1bWVudCgpOworICAgIERvY3VtZW50JiBkb2N1bWVudCA9IG1fcGFn
ZS0+bWFpbkZyYW1lKCkuZG9jdW1lbnQoKTsKIAogICAgIC8vIEZJWE1FOiBJc250ZWFkIG9mIGNh
bGxpbmcgdGhpcyBXZWJLaXQxIG1ldGhvZCwgdGhlIGNvZGUgc2hvdWxkIGJlIGZhY3RvcmVkIG91
dCBhbmQgbW92ZWQgaW50byBXZWJDb3JlLgogICAgIERPTURvY3VtZW50RnJhZ21lbnQqIGZyYWdt
ZW50ID0gW3N0cmluZyBfZG9jdW1lbnRGcm9tUmFuZ2U6TlNNYWtlUmFuZ2UoMCwgW3N0cmluZyBs
ZW5ndGhdKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgZG9jdW1lbnQ6a2l0KGRvY3VtZW50KQorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQ6a2l0KCZkb2N1bWVudCkKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnRBdHRyaWJ1dGVz
OmRpY3Rpb25hcnkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc3VicmVzb3VyY2VzOiZzdWJSZXNvdXJjZXNdOwogICAgIGZvciAoaWQgcmVzb3VyY2Ug
aW4gc3ViUmVzb3VyY2VzKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9X
ZWJQYWdlL0ZpbmRDb250cm9sbGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2Vi
UGFnZS9GaW5kQ29udHJvbGxlci5jcHAKaW5kZXggNDY4OGZlZC4uNDc5ZDUyOCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL0ZpbmRDb250cm9sbGVyLmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvRmluZENvbnRyb2xsZXIuY3Bw
CkBAIC02OSw3ICs2OSw3IEBAIEZpbmRDb250cm9sbGVyOjp+RmluZENvbnRyb2xsZXIoKQogCiBz
dGF0aWMgUGx1Z2luVmlldyogcGx1Z2luVmlld0ZvckZyYW1lKEZyYW1lKiBmcmFtZSkKIHsKLSAg
ICBpZiAoIWZyYW1lLT5kb2N1bWVudCgpLT5pc1BsdWdpbkRvY3VtZW50KCkpCisgICAgaWYgKCFm
cmFtZS0+ZG9jdW1lbnQoKS5pc1BsdWdpbkRvY3VtZW50KCkpCiAgICAgICAgIHJldHVybiAwOwog
CiAgICAgUGx1Z2luRG9jdW1lbnQqIHBsdWdpbkRvY3VtZW50ID0gc3RhdGljX2Nhc3Q8UGx1Z2lu
RG9jdW1lbnQqPihmcmFtZS0+ZG9jdW1lbnQoKSk7CkBAIC0yNzUsNyArMjc1LDcgQEAgYm9vbCBG
aW5kQ29udHJvbGxlcjo6Z2V0RmluZEluZGljYXRvckJpdG1hcEFuZFJlY3QoRnJhbWUmIGZyYW1l
LCBTaGFyZWFibGVCaXRtYXAKIAogICAgIGdyYXBoaWNzQ29udGV4dC0+dHJhbnNsYXRlKC1wYWlu
dFJlY3QueCgpLCAtcGFpbnRSZWN0LnkoKSk7CiAgICAgZnJhbWUudmlldygpLT5zZXRQYWludEJl
aGF2aW9yKFBhaW50QmVoYXZpb3JTZWxlY3Rpb25Pbmx5IHwgUGFpbnRCZWhhdmlvckZvcmNlQmxh
Y2tUZXh0IHwgUGFpbnRCZWhhdmlvckZsYXR0ZW5Db21wb3NpdGluZ0xheWVycyk7Ci0gICAgZnJh
bWUuZG9jdW1lbnQoKS0+dXBkYXRlTGF5b3V0KCk7CisgICAgZnJhbWUuZG9jdW1lbnQoKS51cGRh
dGVMYXlvdXQoKTsKIAogICAgIGZyYW1lLnZpZXcoKS0+cGFpbnQoZ3JhcGhpY3NDb250ZXh0Lmdl
dCgpLCBwYWludFJlY3QpOwogICAgIGZyYW1lLnZpZXcoKS0+c2V0UGFpbnRCZWhhdmlvcihQYWlu
dEJlaGF2aW9yTm9ybWFsKTsKQEAgLTQxMiw3ICs0MTIsNyBAQCBWZWN0b3I8SW50UmVjdD4gRmlu
ZENvbnRyb2xsZXI6OnJlY3RzRm9yVGV4dE1hdGNoZXMoKQogICAgIFZlY3RvcjxJbnRSZWN0PiBy
ZWN0czsKIAogICAgIGZvciAoRnJhbWUqIGZyYW1lID0gJm1fd2ViUGFnZS0+Y29yZVBhZ2UoKS0+
bWFpbkZyYW1lKCk7IGZyYW1lOyBmcmFtZSA9IGZyYW1lLT50cmVlKCkudHJhdmVyc2VOZXh0KCkp
IHsKLSAgICAgICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gZnJhbWUtPmRvY3VtZW50KCk7CisgICAg
ICAgIERvY3VtZW50KiBkb2N1bWVudCA9ICZmcmFtZS0+ZG9jdW1lbnQoKTsKICAgICAgICAgaWYg
KCFkb2N1bWVudCkKICAgICAgICAgICAgIGNvbnRpbnVlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3BwIGIvU291cmNlL1dlYktpdDIv
V2ViUHJvY2Vzcy9XZWJQYWdlL1dlYkZyYW1lLmNwcAppbmRleCBmMGRkMzFlLi5hYzczOTJlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViRnJhbWUuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJGcmFtZS5jcHAKQEAg
LTQxOSwxMCArNDE5LDEwIEBAIFN0cmluZyBXZWJGcmFtZTo6aW5uZXJUZXh0KCkgY29uc3QKICAg
ICBpZiAoIW1fY29yZUZyYW1lKQogICAgICAgICByZXR1cm4gU3RyaW5nKCk7CiAKLSAgICBpZiAo
IW1fY29yZUZyYW1lLT5kb2N1bWVudCgpLT5kb2N1bWVudEVsZW1lbnQoKSkKKyAgICBpZiAoIW1f
Y29yZUZyYW1lLT5kb2N1bWVudCgpLmRvY3VtZW50RWxlbWVudCgpKQogICAgICAgICByZXR1cm4g
U3RyaW5nKCk7CiAKLSAgICByZXR1cm4gbV9jb3JlRnJhbWUtPmRvY3VtZW50KCktPmRvY3VtZW50
RWxlbWVudCgpLT5pbm5lclRleHQoKTsKKyAgICByZXR1cm4gbV9jb3JlRnJhbWUtPmRvY3VtZW50
KCkuZG9jdW1lbnRFbGVtZW50KCktPmlubmVyVGV4dCgpOwogfQogCiBXZWJGcmFtZSogV2ViRnJh
bWU6OnBhcmVudEZyYW1lKCkgY29uc3QKQEAgLTQ2Nyw3ICs0NjcsNyBAQCB1bnNpZ25lZCBXZWJG
cmFtZTo6cGVuZGluZ1VubG9hZENvdW50KCkgY29uc3QKICAgICBpZiAoIW1fY29yZUZyYW1lKQog
ICAgICAgICByZXR1cm4gMDsKIAotICAgIHJldHVybiBtX2NvcmVGcmFtZS0+ZG9jdW1lbnQoKS0+
ZG9tV2luZG93KCktPnBlbmRpbmdVbmxvYWRFdmVudExpc3RlbmVycygpOworICAgIHJldHVybiBt
X2NvcmVGcmFtZS0+ZG9jdW1lbnQoKS5kb21XaW5kb3coKS0+cGVuZGluZ1VubG9hZEV2ZW50TGlz
dGVuZXJzKCk7CiB9CiAKIGJvb2wgV2ViRnJhbWU6OmFsbG93c0ZvbGxvd2luZ0xpbmsoY29uc3Qg
V2ViQ29yZTo6VVJMJiB1cmwpIGNvbnN0CkBAIC00NzUsNyArNDc1LDcgQEAgYm9vbCBXZWJGcmFt
ZTo6YWxsb3dzRm9sbG93aW5nTGluayhjb25zdCBXZWJDb3JlOjpVUkwmIHVybCkgY29uc3QKICAg
ICBpZiAoIW1fY29yZUZyYW1lKQogICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgCi0gICAg
cmV0dXJuIG1fY29yZUZyYW1lLT5kb2N1bWVudCgpLT5zZWN1cml0eU9yaWdpbigpLT5jYW5EaXNw
bGF5KHVybCk7CisgICAgcmV0dXJuIG1fY29yZUZyYW1lLT5kb2N1bWVudCgpLnNlY3VyaXR5T3Jp
Z2luKCktPmNhbkRpc3BsYXkodXJsKTsKIH0KIAogSlNHbG9iYWxDb250ZXh0UmVmIFdlYkZyYW1l
Ojpqc0NvbnRleHQoKQpAQCAtNDkwLDcgKzQ5MCw3IEBAIEpTR2xvYmFsQ29udGV4dFJlZiBXZWJG
cmFtZTo6anNDb250ZXh0Rm9yV29ybGQoSW5qZWN0ZWRCdW5kbGVTY3JpcHRXb3JsZCogd29ybGQp
CiAKIGJvb2wgV2ViRnJhbWU6OmhhbmRsZXNQYWdlU2NhbGVHZXN0dXJlKCkgY29uc3QKIHsKLSAg
ICBpZiAoIW1fY29yZUZyYW1lLT5kb2N1bWVudCgpLT5pc1BsdWdpbkRvY3VtZW50KCkpCisgICAg
aWYgKCFtX2NvcmVGcmFtZS0+ZG9jdW1lbnQoKS5pc1BsdWdpbkRvY3VtZW50KCkpCiAgICAgICAg
IHJldHVybiAwOwogCiAgICAgUGx1Z2luRG9jdW1lbnQqIHBsdWdpbkRvY3VtZW50ID0gc3RhdGlj
X2Nhc3Q8UGx1Z2luRG9jdW1lbnQqPihtX2NvcmVGcmFtZS0+ZG9jdW1lbnQoKSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAgYi9Tb3Vy
Y2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvV2ViUGFnZS5jcHAKaW5kZXggYmRiZDU1OC4u
OWQ3ZGJjMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL1dl
YlBhZ2UuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9XZWJQYWdl
LmNwcApAQCAtNzczLDcgKzc3Myw3IEBAIFBhc3NSZWZQdHI8QVBJOjpBcnJheT4gV2ViUGFnZTo6
dHJhY2tlZFJlcGFpbnRSZWN0cygpCiAKIFBsdWdpblZpZXcqIFdlYlBhZ2U6OmZvY3VzZWRQbHVn
aW5WaWV3Rm9yRnJhbWUoRnJhbWUmIGZyYW1lKQogewotICAgIGlmICghZnJhbWUuZG9jdW1lbnQo
KS0+aXNQbHVnaW5Eb2N1bWVudCgpKQorICAgIGlmICghZnJhbWUuZG9jdW1lbnQoKS5pc1BsdWdp
bkRvY3VtZW50KCkpCiAgICAgICAgIHJldHVybiAwOwogCiAgICAgUGx1Z2luRG9jdW1lbnQqIHBs
dWdpbkRvY3VtZW50ID0gc3RhdGljX2Nhc3Q8UGx1Z2luRG9jdW1lbnQqPihmcmFtZS5kb2N1bWVu
dCgpKTsKQEAgLTc4Nyw3ICs3ODcsNyBAQCBQbHVnaW5WaWV3KiBXZWJQYWdlOjpmb2N1c2VkUGx1
Z2luVmlld0ZvckZyYW1lKEZyYW1lJiBmcmFtZSkKIAogUGx1Z2luVmlldyogV2ViUGFnZTo6cGx1
Z2luVmlld0ZvckZyYW1lKEZyYW1lKiBmcmFtZSkKIHsKLSAgICBpZiAoIWZyYW1lLT5kb2N1bWVu
dCgpLT5pc1BsdWdpbkRvY3VtZW50KCkpCisgICAgaWYgKCFmcmFtZS0+ZG9jdW1lbnQoKS5pc1Bs
dWdpbkRvY3VtZW50KCkpCiAgICAgICAgIHJldHVybiAwOwogCiAgICAgUGx1Z2luRG9jdW1lbnQq
IHBsdWdpbkRvY3VtZW50ID0gc3RhdGljX2Nhc3Q8UGx1Z2luRG9jdW1lbnQqPihmcmFtZS0+ZG9j
dW1lbnQoKSk7CkBAIC0xODgyLDcgKzE4ODIsNyBAQCB2b2lkIFdlYlBhZ2U6OmtleUV2ZW50U3lu
Y0ZvclRlc3RpbmcoY29uc3QgV2ViS2V5Ym9hcmRFdmVudCYga2V5Ym9hcmRFdmVudCwgYm9vbAog
ICAgIEN1cnJlbnRFdmVudCBjdXJyZW50RXZlbnQoa2V5Ym9hcmRFdmVudCk7CiAKICAgICBGcmFt
ZSYgZnJhbWUgPSBtX3BhZ2UtPmZvY3VzQ29udHJvbGxlcigpLmZvY3VzZWRPck1haW5GcmFtZSgp
OwotICAgIGZyYW1lLmRvY3VtZW50KCktPnVwZGF0ZVN0eWxlSWZOZWVkZWQoKTsKKyAgICBmcmFt
ZS5kb2N1bWVudCgpLnVwZGF0ZVN0eWxlSWZOZWVkZWQoKTsKIAogICAgIGhhbmRsZWQgPSBoYW5k
bGVLZXlFdmVudChrZXlib2FyZEV2ZW50LCBtX3BhZ2UuZ2V0KCkpOwogICAgIGlmICghaGFuZGxl
ZCkKQEAgLTIwNjgsMTIgKzIwNjgsMTIgQEAgdm9pZCBXZWJQYWdlOjpzZXRJbml0aWFsRm9jdXMo
Ym9vbCBmb3J3YXJkLCBib29sIGlzS2V5Ym9hcmRFdmVudFZhbGlkLCBjb25zdCBXZWIKICAgICAg
ICAgcmV0dXJuOwogCiAgICAgRnJhbWUmIGZyYW1lID0gbV9wYWdlLT5mb2N1c0NvbnRyb2xsZXIo
KS5mb2N1c2VkT3JNYWluRnJhbWUoKTsKLSAgICBmcmFtZS5kb2N1bWVudCgpLT5zZXRGb2N1c2Vk
RWxlbWVudCgwKTsKKyAgICBmcmFtZS5kb2N1bWVudCgpLnNldEZvY3VzZWRFbGVtZW50KDApOwog
CiAgICAgaWYgKGlzS2V5Ym9hcmRFdmVudFZhbGlkICYmIGV2ZW50LnR5cGUoKSA9PSBXZWJFdmVu
dDo6S2V5RG93bikgewogICAgICAgICBQbGF0Zm9ybUtleWJvYXJkRXZlbnQgcGxhdGZvcm1FdmVu
dChwbGF0Zm9ybShldmVudCkpOwogICAgICAgICBwbGF0Zm9ybUV2ZW50LmRpc2FtYmlndWF0ZUtl
eURvd25FdmVudChQbGF0Zm9ybUV2ZW50OjpSYXdLZXlEb3duKTsKLSAgICAgICAgbV9wYWdlLT5m
b2N1c0NvbnRyb2xsZXIoKS5zZXRJbml0aWFsRm9jdXMoZm9yd2FyZCA/IEZvY3VzRGlyZWN0aW9u
Rm9yd2FyZCA6IEZvY3VzRGlyZWN0aW9uQmFja3dhcmQsIEtleWJvYXJkRXZlbnQ6OmNyZWF0ZShw
bGF0Zm9ybUV2ZW50LCBmcmFtZS5kb2N1bWVudCgpLT5kZWZhdWx0VmlldygpKS5nZXQoKSk7Cisg
ICAgICAgIG1fcGFnZS0+Zm9jdXNDb250cm9sbGVyKCkuc2V0SW5pdGlhbEZvY3VzKGZvcndhcmQg
PyBGb2N1c0RpcmVjdGlvbkZvcndhcmQgOiBGb2N1c0RpcmVjdGlvbkJhY2t3YXJkLCBLZXlib2Fy
ZEV2ZW50OjpjcmVhdGUocGxhdGZvcm1FdmVudCwgZnJhbWUuZG9jdW1lbnQoKS5kZWZhdWx0Vmll
dygpKS5nZXQoKSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTM1NjksOSArMzU2OSw5
IEBAIHZvaWQgV2ViUGFnZTo6ZHJhd1JlY3RUb0ltYWdlKHVpbnQ2NF90IGZyYW1lSUQsIGNvbnN0
IFByaW50SW5mbyYgcHJpbnRJbmZvLCBjb25zCiAjaWYgVVNFKENHKQogICAgIGlmIChjb3JlRnJh
bWUpIHsKICNpZiBQTEFURk9STShNQUMpCi0gICAgICAgIEFTU0VSVChjb3JlRnJhbWUtPmRvY3Vt
ZW50KCktPnByaW50aW5nKCkgfHwgcGRmRG9jdW1lbnRGb3JQcmludGluZ0ZyYW1lKGNvcmVGcmFt
ZSkpOworICAgICAgICBBU1NFUlQoY29yZUZyYW1lLT5kb2N1bWVudCgpLnByaW50aW5nKCkgfHwg
cGRmRG9jdW1lbnRGb3JQcmludGluZ0ZyYW1lKGNvcmVGcmFtZSkpOwogI2Vsc2UKLSAgICAgICAg
QVNTRVJUKGNvcmVGcmFtZS0+ZG9jdW1lbnQoKS0+cHJpbnRpbmcoKSk7CisgICAgICAgIEFTU0VS
VChjb3JlRnJhbWUtPmRvY3VtZW50KCkucHJpbnRpbmcoKSk7CiAjZW5kaWYKIAogICAgICAgICBS
ZWZQdHI8U2hhcmVhYmxlQml0bWFwPiBiaXRtYXAgPSBTaGFyZWFibGVCaXRtYXA6OmNyZWF0ZVNo
YXJlYWJsZShpbWFnZVNpemUsIFNoYXJlYWJsZUJpdG1hcDo6U3VwcG9ydHNBbHBoYSk7CkBAIC0z
NjE1LDkgKzM2MTUsOSBAQCB2b2lkIFdlYlBhZ2U6OmRyYXdQYWdlc1RvUERGKHVpbnQ2NF90IGZy
YW1lSUQsIGNvbnN0IFByaW50SW5mbyYgcHJpbnRJbmZvLCB1aW50MwogICAgIGlmIChjb3JlRnJh
bWUpIHsKIAogI2lmIFBMQVRGT1JNKE1BQykKLSAgICAgICAgQVNTRVJUKGNvcmVGcmFtZS0+ZG9j
dW1lbnQoKS0+cHJpbnRpbmcoKSB8fCBwZGZEb2N1bWVudEZvclByaW50aW5nRnJhbWUoY29yZUZy
YW1lKSk7CisgICAgICAgIEFTU0VSVChjb3JlRnJhbWUtPmRvY3VtZW50KCkucHJpbnRpbmcoKSB8
fCBwZGZEb2N1bWVudEZvclByaW50aW5nRnJhbWUoY29yZUZyYW1lKSk7CiAjZWxzZQotICAgICAg
ICBBU1NFUlQoY29yZUZyYW1lLT5kb2N1bWVudCgpLT5wcmludGluZygpKTsKKyAgICAgICAgQVNT
RVJUKGNvcmVGcmFtZS0+ZG9jdW1lbnQoKS5wcmludGluZygpKTsKICNlbmRpZgogCiAgICAgICAg
IC8vIEZJWE1FOiBVc2UgQ0dEYXRhQ29uc3VtZXJDcmVhdGUgd2l0aCBjYWxsYmFja3MgdG8gYXZv
aWQgY29weWluZyB0aGUgZGF0YS4KQEAgLTQwNzYsNyArNDA3Niw3IEBAIHZvaWQgV2ViUGFnZTo6
c2V0Q29tcG9zaXRpb24oY29uc3QgU3RyaW5nJiB0ZXh0LCBWZWN0b3I8Q29tcG9zaXRpb25VbmRl
cmxpbmU+IHVuCiAKICAgICBpZiAocmVwbGFjZW1lbnRMZW5ndGggPiAwKSB7CiAgICAgICAgIC8v
IFRoZSBsYXlvdXQgbmVlZHMgdG8gYmUgdXB0b2RhdGUgYmVmb3JlIHNldHRpbmcgYSBzZWxlY3Rp
b24KLSAgICAgICAgdGFyZ2V0RnJhbWUtPmRvY3VtZW50KCktPnVwZGF0ZUxheW91dCgpOworICAg
ICAgICB0YXJnZXRGcmFtZS0+ZG9jdW1lbnQoKS51cGRhdGVMYXlvdXQoKTsKIAogICAgICAgICBF
bGVtZW50KiBzY29wZSA9IHRhcmdldEZyYW1lLT5zZWxlY3Rpb24oKS5zZWxlY3Rpb24oKS5yb290
RWRpdGFibGVFbGVtZW50KCk7CiAgICAgICAgIFJlZlB0cjxSYW5nZT4gcmVwbGFjZW1lbnRSYW5n
ZSA9IFRleHRJdGVyYXRvcjo6cmFuZ2VGcm9tTG9jYXRpb25BbmRMZW5ndGgoc2NvcGUsIHJlcGxh
Y2VtZW50U3RhcnQsIHJlcGxhY2VtZW50TGVuZ3RoKTsKQEAgLTQyMzksOCArNDIzOSw4IEBAIHZv
aWQgV2ViUGFnZTo6ZGlkQ29tbWl0TG9hZChXZWJGcmFtZSogZnJhbWUpCiAgICAgbV9oYXNSZWNl
aXZlZFZpc2libGVDb250ZW50UmVjdHNBZnRlckRpZENvbW1pdExvYWQgPSBmYWxzZTsKICAgICBt
X3VzZXJIYXNDaGFuZ2VkUGFnZVNjYWxlRmFjdG9yID0gZmFsc2U7CiAKLSAgICBEb2N1bWVudCog
ZG9jdW1lbnQgPSBmcmFtZS0+Y29yZUZyYW1lKCktPmRvY3VtZW50KCk7Ci0gICAgaWYgKGRvY3Vt
ZW50LT5pc0ltYWdlRG9jdW1lbnQoKSkKKyAgICBEb2N1bWVudCYgZG9jdW1lbnQgPSBmcmFtZS0+
Y29yZUZyYW1lKCktPmRvY3VtZW50KCk7CisgICAgaWYgKGRvY3VtZW50LmlzSW1hZ2VEb2N1bWVu
dCgpKQogICAgICAgICBtX3ZpZXdwb3J0Q29uZmlndXJhdGlvbi5zZXREZWZhdWx0Q29uZmlndXJh
dGlvbihWaWV3cG9ydENvbmZpZ3VyYXRpb246OmltYWdlRG9jdW1lbnRQYXJhbWV0ZXJzKCkpOwog
ICAgIGVsc2UgaWYgKGRvY3VtZW50LT5pc1RleHREb2N1bWVudCgpKQogICAgICAgICBtX3ZpZXdw
b3J0Q29uZmlndXJhdGlvbi5zZXREZWZhdWx0Q29uZmlndXJhdGlvbihWaWV3cG9ydENvbmZpZ3Vy
YXRpb246OnRleHREb2N1bWVudFBhcmFtZXRlcnMoKSk7CkBAIC00MzgzLDcgKzQzODMsNyBAQCB2
b2lkIFdlYlBhZ2U6OmRldGVybWluZVByaW1hcnlTbmFwc2hvdHRlZFBsdWdJbigpCiAKICAgICBM
T0coUGx1Z2lucywgIlByaW1hcnkgUGx1Zy1JbiBEZXRlY3Rpb246IHN1Y2Nlc3MgLSBmb3VuZCBh
IGNhbmRpZGF0ZSBwbHVnLWluIC0gaW5mb3JtIGl0LiIpOwogICAgIG1fZGlkRmluZFByaW1hcnlT
bmFwc2hvdHRlZFBsdWdpbiA9IHRydWU7Ci0gICAgbV9wcmltYXJ5UGx1Z0luUGFnZU9yaWdpbiA9
IG1fcGFnZS0+bWFpbkZyYW1lKCkuZG9jdW1lbnQoKS0+YmFzZVVSTCgpLmhvc3QoKTsKKyAgICBt
X3ByaW1hcnlQbHVnSW5QYWdlT3JpZ2luID0gbV9wYWdlLT5tYWluZnJhbWUoKS5kb2N1bWVudCgp
LmJhc2VVUkwoKS5ob3N0KCk7CiAgICAgbV9wcmltYXJ5UGx1Z0luT3JpZ2luID0gY2FuZGlkYXRl
UGx1Z0luLT5sb2FkZWRVcmwoKS5ob3N0KCk7CiAgICAgbV9wcmltYXJ5UGx1Z0luTWltZVR5cGUg
PSBjYW5kaWRhdGVQbHVnSW4tPmxvYWRlZE1pbWVUeXBlKCk7CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9hdGsvV2ViUGFnZUFjY2Vzc2liaWxpdHlPYmpl
Y3RBdGsuY3BwIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2F0ay9XZWJQYWdl
QWNjZXNzaWJpbGl0eU9iamVjdEF0ay5jcHAKaW5kZXggYTkxZjkzMS4uOTBjMTIyZSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQYWdlL2F0ay9XZWJQYWdlQWNjZXNz
aWJpbGl0eU9iamVjdEF0ay5jcHAKKysrIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vzcy9XZWJQ
YWdlL2F0ay9XZWJQYWdlQWNjZXNzaWJpbGl0eU9iamVjdEF0ay5jcHAKQEAgLTU2LDcgKzU2LDcg
QEAgc3RhdGljIEF0a09iamVjdCogYWNjZXNzaWJpbGl0eVJvb3RPYmplY3RXcmFwcGVyKEF0a09i
amVjdCogYXRrT2JqZWN0KQogICAgIGlmICghY29yZUZyYW1lLmRvY3VtZW50KCkpCiAgICAgICAg
IHJldHVybiAwOwogCi0gICAgQWNjZXNzaWJpbGl0eU9iamVjdCogY29yZVJvb3RPYmplY3QgPSBj
b3JlRnJhbWUuZG9jdW1lbnQoKS0+YXhPYmplY3RDYWNoZSgpLT5yb290T2JqZWN0KCk7CisgICAg
QWNjZXNzaWJpbGl0eU9iamVjdCogY29yZVJvb3RPYmplY3QgPSBjb3JlZnJhbWUuZG9jdW1lbnQo
KS5heE9iamVjdENhY2hlKCktPnJvb3RPYmplY3QoKTsKICAgICBpZiAoIWNvcmVSb290T2JqZWN0
KQogICAgICAgICByZXR1cm4gMDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdDIvV2ViUHJv
Y2Vzcy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tIGIvU291cmNlL1dlYktpdDIvV2ViUHJvY2Vz
cy9XZWJQYWdlL2lvcy9XZWJQYWdlSU9TLm1tCmluZGV4IDJiYzBkOGEuLjAyMWRhYzEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQyL1dlYlByb2Nlc3MvV2ViUGFnZS9pb3MvV2ViUGFnZUlPUy5t
bQorKysgYi9Tb3VyY2UvV2ViS2l0Mi9XZWJQcm9jZXNzL1dlYlBhZ2UvaW9zL1dlYlBhZ2VJT1Mu
bW0KQEAgLTMwNyw3ICszMDcsNyBAQCB2b2lkIFdlYlBhZ2U6OmhhbmRsZVRhcChjb25zdCBJbnRQ
b2ludCYgcG9pbnQpCiAKICAgICBXS0JlZ2luT2JzZXJ2aW5nQ29udGVudENoYW5nZXModHJ1ZSk7
CiAgICAgbWFpbmZyYW1lLmV2ZW50SGFuZGxlcigpLm1vdXNlTW92ZWQoUGxhdGZvcm1Nb3VzZUV2
ZW50KHJvdW5kZWRBZGp1c3RlZFBvaW50LCByb3VuZGVkQWRqdXN0ZWRQb2ludCwgTm9CdXR0b24s
IFBsYXRmb3JtRXZlbnQ6Ok1vdXNlTW92ZWQsIDAsIGZhbHNlLCBmYWxzZSwgZmFsc2UsIGZhbHNl
LCAwKSk7Ci0gICAgbWFpbmZyYW1lLmRvY3VtZW50KCktPnVwZGF0ZVN0eWxlSWZOZWVkZWQoKTsK
KyAgICBtYWluZnJhbWUuZG9jdW1lbnQoKS51cGRhdGVTdHlsZUlmTmVlZGVkKCk7CiAgICAgV0tT
dG9wT2JzZXJ2aW5nQ29udGVudENoYW5nZXMoKTsKICAgICBpZiAoV0tPYnNlcnZlZENvbnRlbnRD
aGFuZ2UoKSAhPSBXS0NvbnRlbnROb0NoYW5nZSkKICAgICAgICAgcmV0dXJuOwpAQCAtMTMwMSw3
ICsxMzAxLDcgQEAgdm9pZCBXZWJQYWdlOjpyZXBsYWNlRGljdGF0ZWRUZXh0KGNvbnN0IFN0cmlu
ZyYgb2xkVGV4dCwgY29uc3QgU3RyaW5nJiBuZXdUZXh0KQogICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgb2xkVGV4dC5sZW5ndGgoKTsgKytpKQogICAgICAgICBwb3NpdGlvbiA9IHBvc2l0aW9u
LnByZXZpb3VzKCk7CiAgICAgaWYgKHBvc2l0aW9uLmlzTnVsbCgpKQotICAgICAgICBwb3NpdGlv
biA9IHN0YXJ0T2ZEb2N1bWVudChzdGF0aWNfY2FzdDxOb2RlKj4oZnJhbWUuZG9jdW1lbnQoKS0+
ZG9jdW1lbnRFbGVtZW50KCkpKTsKKyAgICAgICAgcG9zaXRpb24gPSBzdGFydE9mRG9jdW1lbnQo
c3RhdGljX2Nhc3Q8Tm9kZSo+KGZyYW1lLmRvY3VtZW50KCkuZG9jdW1lbnRFbGVtZW50KCkpKTsK
ICAgICBSZWZQdHI8UmFuZ2U+IHJhbmdlID0gUmFuZ2U6OmNyZWF0ZSgqZnJhbWUuZG9jdW1lbnQo
KSwgcG9zaXRpb24sIGZyYW1lLnNlbGVjdGlvbigpLnNlbGVjdGlvbigpLnN0YXJ0KCkpOwogCiAg
ICAgaWYgKHBsYWluVGV4dChyYW5nZS5nZXQoKSkgIT0gb2xkVGV4dCkKQEAgLTEzNzYsNyArMTM3
Niw3IEBAIHZvaWQgV2ViUGFnZTo6c3luY0FwcGx5QXV0b2NvcnJlY3Rpb24oY29uc3QgU3RyaW5n
JiBjb3JyZWN0aW9uLCBjb25zdCBTdHJpbmcmIG9yCiAgICAgICAgIGZvciAoc2l6ZV90IGkgPSAw
OyBpIDwgb3JpZ2luYWxUZXh0Lmxlbmd0aCgpOyArK2kpCiAgICAgICAgICAgICBwb3NpdGlvbiA9
IHBvc2l0aW9uLnByZXZpb3VzKCk7CiAgICAgICAgIGlmIChwb3NpdGlvbi5pc051bGwoKSkKLSAg
ICAgICAgICAgIHBvc2l0aW9uID0gc3RhcnRPZkRvY3VtZW50KHN0YXRpY19jYXN0PE5vZGUqPihm
cmFtZS5kb2N1bWVudCgpLT5kb2N1bWVudEVsZW1lbnQoKSkpOworICAgICAgICAgICAgcG9zaXRp
b24gPSBzdGFydE9mRG9jdW1lbnQoc3RhdGljX2Nhc3Q8Tm9kZSo+KGZyYW1lLmRvY3VtZW50KCku
ZG9jdW1lbnRFbGVtZW50KCkpKTsKICAgICAgICAgcmFuZ2UgPSBSYW5nZTo6Y3JlYXRlKCpmcmFt
ZS5kb2N1bWVudCgpLCBwb3NpdGlvbiwgZnJhbWUuc2VsZWN0aW9uKCkuc2VsZWN0aW9uKCkuc3Rh
cnQoKSk7CiAgICAgICAgIGlmIChyYW5nZSkKICAgICAgICAgICAgIHRleHRGb3JSYW5nZSA9IChy
YW5nZSkgPyBwbGFpblRleHQocmFuZ2UuZ2V0KCkpIDogZW1wdHlTdHJpbmcoKTsK
</data>
<flag name="commit-queue"
          id="254315"
          type_id="3"
          status="-"
          setter="gyuyoung.kim"
    />
          </attachment>
      

    </bug>

</bugzilla>