<?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>207695</bug_id>
          
          <creation_ts>2020-02-13 07:24:53 -0800</creation_ts>
          <short_desc>Rename SerializedPlatformRepresentation to SerializedPlatformDataCue</short_desc>
          <delta_ts>2020-02-13 13:40:15 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Media</component>
          <version>Other</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Eric Carlson">eric.carlson</reporter>
          <assigned_to name="Eric Carlson">eric.carlson</assigned_to>
          <cc>annulen</cc>
    
    <cc>calvaris</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>jer.noble</cc>
    
    <cc>philipj</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sergio</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>youennf</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1618469</commentid>
    <comment_count>0</comment_count>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2020-02-13 07:24:53 -0800</bug_when>
    <thetext>Rename SerializedPlatformRepresentation to SerializedPlatformDataCue</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1618470</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-02-13 07:25:07 -0800</bug_when>
    <thetext>&lt;rdar://problem/59422673&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1618472</commentid>
    <comment_count>2</comment_count>
      <attachid>390641</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2020-02-13 07:35:00 -0800</bug_when>
    <thetext>Created attachment 390641
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1618496</commentid>
    <comment_count>3</comment_count>
      <attachid>390647</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2020-02-13 08:25:34 -0800</bug_when>
    <thetext>Created attachment 390647
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1618499</commentid>
    <comment_count>4</comment_count>
      <attachid>390647</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2020-02-13 08:29:17 -0800</bug_when>
    <thetext>Comment on attachment 390647
Patch

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

&gt; Source/WebCore/html/track/DataCue.cpp:119
&gt; +    const SerializedPlatformDataCue* otherPlatformValue = dataCue-&gt;platformValue();

s/SerializedPlatformDataCue/auto/

&gt; Source/WebCore/platform/SerializedPlatformDataCue.h:2
&gt; + * Copyright (C) 2014 Apple Inc. All rights reserved.

2020?

&gt; Source/WebCore/platform/mac/SerializedPlatformDataCueMac.h:38
&gt; +class SerializedPlatformDataCueMac : public SerializedPlatformDataCue {

final?

&gt; Source/WebCore/platform/mac/SerializedPlatformDataCueMac.h:46
&gt; +    bool isEqual(const SerializedPlatformDataCue&amp;) const override;

final here and above?

&gt; Source/WebCore/platform/mac/SerializedPlatformDataCueMac.h:53
&gt; +    SerializedPlatformDataCueMac(id nativeValue);

explicit.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1618500</commentid>
    <comment_count>5</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2020-02-13 08:32:03 -0800</bug_when>
    <thetext>Need to update cmake build probably</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1618502</commentid>
    <comment_count>6</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2020-02-13 08:33:13 -0800</bug_when>
    <thetext>Source/WebCore/Headers.cmake</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1618504</commentid>
    <comment_count>7</comment_count>
      <attachid>390650</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2020-02-13 08:41:03 -0800</bug_when>
    <thetext>Created attachment 390650
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1618508</commentid>
    <comment_count>8</comment_count>
      <attachid>390652</attachid>
    <who name="Eric Carlson">eric.carlson</who>
    <bug_when>2020-02-13 08:46:35 -0800</bug_when>
    <thetext>Created attachment 390652
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1618687</commentid>
    <comment_count>9</comment_count>
      <attachid>390652</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-02-13 13:40:13 -0800</bug_when>
    <thetext>Comment on attachment 390652
Patch for landing

Clearing flags on attachment: 390652

Committed r256536: &lt;https://trac.webkit.org/changeset/256536&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1618688</commentid>
    <comment_count>10</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-02-13 13:40:15 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>390641</attachid>
            <date>2020-02-13 07:35:00 -0800</date>
            <delta_ts>2020-02-13 08:25:32 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-207695-20200213073500.patch</filename>
            <type>text/plain</type>
            <size>53764</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU2MTkzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNGY0NTc3YzA0MTUwZDBm
M2E3NDIxNDFhNzdkNjRhZDkxZDcxNDY4MS4uNzhlMDQwOTU4ZDdhOTdlNmFlZDc1YWJjMGZlOGEw
MTA5MDdlYTNiNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ5IEBACisyMDIwLTAyLTEzICBFcmlj
IENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIFJlbmFtZSBTZXJp
YWxpemVkUGxhdGZvcm1SZXByZXNlbnRhdGlvbiB0byBTZXJpYWxpemVkUGxhdGZvcm1EYXRhQ3Vl
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDc2OTUK
KyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU5NDIyNjczPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgbm8gZnVuY3Rpb25hbCBj
aGFuZ2UuCisKKyAgICAgICAgKiBTb3VyY2VzQ29jb2EudHh0OgorICAgICAgICAqIFdlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBodG1sL3RyYWNrL0RhdGFDdWUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RGF0YUN1ZTo6RGF0YUN1ZSk6CisgICAgICAgIChXZWJD
b3JlOjpEYXRhQ3VlOjpjdWVDb250ZW50c01hdGNoIGNvbnN0KToKKyAgICAgICAgKiBodG1sL3Ry
YWNrL0RhdGFDdWUuaDoKKyAgICAgICAgKiBodG1sL3RyYWNrL0luYmFuZERhdGFUZXh0VHJhY2su
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5iYW5kRGF0YVRleHRUcmFjazo6YWRkRGF0YUN1ZSk6
CisgICAgICAgIChXZWJDb3JlOjpJbmJhbmREYXRhVGV4dFRyYWNrOjp1cGRhdGVEYXRhQ3VlKToK
KyAgICAgICAgKFdlYkNvcmU6OkluYmFuZERhdGFUZXh0VHJhY2s6OnJlbW92ZURhdGFDdWUpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5iYW5kRGF0YVRleHRUcmFjazo6cmVtb3ZlQ3VlKToKKyAgICAg
ICAgKiBodG1sL3RyYWNrL0luYmFuZERhdGFUZXh0VHJhY2suaDoKKyAgICAgICAgKiBodG1sL3Ry
YWNrL0luYmFuZFRleHRUcmFjay5oOgorICAgICAgICAqIHBsYXRmb3JtL1NlcmlhbGl6ZWRQbGF0
Zm9ybURhdGFDdWUuaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Nlcmlh
bGl6ZWRQbGF0Zm9ybVJlcHJlc2VudGF0aW9uLmguCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUNsaWVudC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9JbmJhbmRNZXRhZGF0YVRleHRUcmFja1ByaXZhdGVBVkYuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SW5iYW5kTWV0YWRhdGFUZXh0VHJhY2tQcml2YXRlQVZGOjph
ZGREYXRhQ3VlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vSW5i
YW5kTWV0YWRhdGFUZXh0VHJhY2tQcml2YXRlQVZGLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2Jq
Qy5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9i
akM6Om1ldGFkYXRhRGlkQXJyaXZlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvU2VyaWFsaXpl
ZFBsYXRmb3JtRGF0YUN1ZU1hYy5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWFjL1NlcmlhbGl6ZWRQbGF0Zm9ybVJlcHJlc2VudGF0aW9uTWFjLmguCisgICAgICAgIChX
ZWJDb3JlOjpTZXJpYWxpemVkUGxhdGZvcm1EYXRhQ3VlTWFjOjpuYXRpdmVWYWx1ZSBjb25zdCk6
CisgICAgICAgICogcGxhdGZvcm0vbWFjL1NlcmlhbGl6ZWRQbGF0Zm9ybURhdGFDdWVNYWMubW06
IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2VyaWFsaXplZFBsYXRm
b3JtUmVwcmVzZW50YXRpb25NYWMubW0uCisgICAgICAgIChXZWJDb3JlOjpTZXJpYWxpemVkUGxh
dGZvcm1EYXRhQ3VlTWFjOjpTZXJpYWxpemVkUGxhdGZvcm1EYXRhQ3VlTWFjKToKKyAgICAgICAg
KFdlYkNvcmU6OlNlcmlhbGl6ZWRQbGF0Zm9ybURhdGFDdWVNYWM6On5TZXJpYWxpemVkUGxhdGZv
cm1EYXRhQ3VlTWFjKToKKyAgICAgICAgKFdlYkNvcmU6OlNlcmlhbGl6ZWRQbGF0Zm9ybURhdGFD
dWVNYWM6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTZXJpYWxpemVkUGxhdGZvcm1EYXRh
Q3VlTWFjOjpkYXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNlcmlhbGl6ZWRQbGF0Zm9y
bURhdGFDdWVNYWM6OmRlc2VyaWFsaXplIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNlcmlh
bGl6ZWRQbGF0Zm9ybURhdGFDdWVNYWM6OmlzRXF1YWwgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6dG9TZXJpYWxpemVkUGxhdGZvcm1EYXRhQ3VlTWFjKToKKyAgICAgICAgKFdlYkNvcmU6Ompz
VmFsdWVXaXRoVmFsdWVJbkNvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6anNWYWx1ZVdpdGhE
YXRhSW5Db250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVmFsdWVXaXRoQXJyYXlJbkNvbnRl
eHQpOgorICAgICAgICAoV2ViQ29yZTo6anNWYWx1ZVdpdGhEaWN0aW9uYXJ5SW5Db250ZXh0KToK
KyAgICAgICAgKFdlYkNvcmU6OmpzVmFsdWVXaXRoQVZNZXRhZGF0YUl0ZW1JbkNvbnRleHQpOgor
CiAyMDIwLTAyLTEwICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhYm91aGFsbGF3YUBhcHBsZS5jb20+
CiAKICAgICAgICAgVW5yZWFjaGFibGUgY29kZSBoaXQgaW4gV2ViQ29yZTo6U2hhcGU6OmNyZWF0
ZVNoYXBlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0IGIvU291
cmNlL1dlYkNvcmUvU291cmNlc0NvY29hLnR4dAppbmRleCAyNTdjMTEzM2ZmOTEwNDQ3YjdjMTQ0
MWM0ZWEzZmNhZjY2ZjY1YWM4Li42MzQ1ZTgwM2YyOWYyZGI0Yzg0ZDdhZjE3ZTc0MjBlZjM3ODk1
ZjkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2EudHh0CisrKyBiL1Nv
dXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKQEAgLTQ2Myw3ICs0NjMsNyBAQCBwbGF0Zm9y
bS9tYWMvU1NMS2V5R2VuZXJhdG9yTWFjLm1tCiBwbGF0Zm9ybS9tYWMvU2Nyb2xsQW5pbWF0b3JN
YWMubW0gQG5vLXVuaWZ5CiBwbGF0Zm9ybS9tYWMvU2Nyb2xsVmlld01hYy5tbQogcGxhdGZvcm0v
bWFjL1Njcm9sbGJhclRoZW1lTWFjLm1tIEBuby11bmlmeQotcGxhdGZvcm0vbWFjL1NlcmlhbGl6
ZWRQbGF0Zm9ybVJlcHJlc2VudGF0aW9uTWFjLm1tCitwbGF0Zm9ybS9tYWMvU2VyaWFsaXplZFBs
YXRmb3JtRGF0YUN1ZU1hYy5tbQogcGxhdGZvcm0vbWFjL1N0cmluZ1V0aWxpdGllcy5tbQogcGxh
dGZvcm0vbWFjL1N1ZGRlblRlcm1pbmF0aW9uLm1tCiBwbGF0Zm9ybS9tYWMvVGhlbWVNYWMubW0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpp
bmRleCAyYTU3YzRjMWQ5NmVkNjRkZDE4MGRmZWJhOTZhN2YyOTJhZDI3MWQ0Li5jMWU4ZGNiMGNj
YjUzY2U5MDJmM2RkNmI4NmU2NWQ5NmFjZmM1M2RiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMzgsOCArMTM4LDggQEAKIAkJ
MDc2OTcwODcxNDYzQUQ4NzAwRjUwMkNGIC8qIFRleHRUcmFja0xpc3QuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3Njk3MDg1MTQ2M0FEODcwMEY1MDJD
RiAvKiBUZXh0VHJhY2tMaXN0LmggKi87IH07CiAJCTA3NkYwRDBFMTJCODE5MjcwMEMyNkFBNCAv
KiBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3NkYwRDBBMTJCODE5MjcwMEMyNkFBNCAvKiBNZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb24uaCAqLzsgfTsKIAkJMDc3NjY0RkQxODNFNkI1QzAw
MTMzQjkyIC8qIEpTUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3NzY2NEZCMTgzRTZCNUMwMDEzM0I5MiAv
KiBKU1F1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50LmggKi87IH07Ci0JCTA3N0FGMTQwMThGNEFF
NDAwMDAxRUQ2MSAvKiBTZXJpYWxpemVkUGxhdGZvcm1SZXByZXNlbnRhdGlvbi5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDc3QUYxM0UxOEY0QUU0MDAw
MDFFRDYxIC8qIFNlcmlhbGl6ZWRQbGF0Zm9ybVJlcHJlc2VudGF0aW9uLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKLQkJMDc3QUYxNDMxOEY0QjFCQjAw
MDFFRDYxIC8qIFNlcmlhbGl6ZWRQbGF0Zm9ybVJlcHJlc2VudGF0aW9uTWFjLmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzdBRjE0MTE4RjRCMUJCMDAw
MUVENjEgLyogU2VyaWFsaXplZFBsYXRmb3JtUmVwcmVzZW50YXRpb25NYWMuaCAqLzsgfTsKKwkJ
MDc3QUYxNDAxOEY0QUU0MDAwMDFFRDYxIC8qIFNlcmlhbGl6ZWRQbGF0Zm9ybURhdGFDdWUuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3N0FGMTNFMThG
NEFFNDAwMDAxRUQ2MSAvKiBTZXJpYWxpemVkUGxhdGZvcm1EYXRhQ3VlLmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKKwkJMDc3QUYxNDMxOEY0QjFCQjAw
MDFFRDYxIC8qIFNlcmlhbGl6ZWRQbGF0Zm9ybURhdGFDdWVNYWMuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3N0FGMTQxMThGNEIxQkIwMDAxRUQ2MSAv
KiBTZXJpYWxpemVkUGxhdGZvcm1EYXRhQ3VlTWFjLmggKi87IH07CiAJCTA3N0I2NDEzMUI5NEYx
MkUwMDNFOUFENSAvKiBNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyTW9jay5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDc3QjY0MTExQjk0RjEyRTAwM0U5
QUQ1IC8qIE1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJNb2NrLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJMDc3QjY0MTcxQjk1RjcwMzAwM0U5QUQ1
IC8qIE1lZGlhUGxheWJhY2tUYXJnZXRNb2NrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSAwNzdCNjQxNTFCOTVGNzAzMDAzRTlBRDUgLyogTWVkaWFQbGF5
YmFja1RhcmdldE1vY2suaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCAp
OyB9OyB9OwogCQkwNzgzMjI4NTE4MDEzRUQ4MDA5OTlFMEMgLyogTWVkaWFTdHJlYW1BdWRpb1Nv
dXJjZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDc4
MzIyODMxODAxM0VEODAwOTk5RTBDIC8qIE1lZGlhU3RyZWFtQXVkaW9Tb3VyY2UuaCAqLzsgfTsK
QEAgLTU0OTQsOSArNTQ5NCw5IEBACiAJCTA3NkYwRDBBMTJCODE5MjcwMEMyNkFBNCAvKiBNZWRp
YVBsYXllclByaXZhdGVBVkZvdW5kYXRpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCTA3NzY2NEZBMTgzRTZCNUMwMDEzM0I5MiAvKiBKU1F1aWNrVGltZVBsdWdp
blJlcGxhY2VtZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpT
UXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQkwNzc2NjRGQjE4M0U2QjVDMDAxMzNCOTIgLyogSlNRdWlja1RpbWVQbHVnaW5SZXBsYWNl
bWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU1F1aWNrVGltZVBsdWdp
blJlcGxhY2VtZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTA3N0FGMTNFMThG
NEFFNDAwMDAxRUQ2MSAvKiBTZXJpYWxpemVkUGxhdGZvcm1SZXByZXNlbnRhdGlvbi5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTZXJpYWxpemVkUGxhdGZvcm1SZXByZXNlbnRh
dGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkwNzdBRjE0MTE4RjRCMUJCMDAw
MUVENjEgLyogU2VyaWFsaXplZFBsYXRmb3JtUmVwcmVzZW50YXRpb25NYWMuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2VyaWFsaXplZFBsYXRmb3JtUmVwcmVzZW50YXRpb25N
YWMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMDc3QUYxNDIxOEY0QjFCQjAwMDFF
RDYxIC8qIFNlcmlhbGl6ZWRQbGF0Zm9ybVJlcHJlc2VudGF0aW9uTWFjLm1tICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gU2VyaWFsaXplZFBsYXRmb3JtUmVwcmVzZW50
YXRpb25NYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTA3N0FGMTNFMThGNEFF
NDAwMDAxRUQ2MSAvKiBTZXJpYWxpemVkUGxhdGZvcm1EYXRhQ3VlLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFNlcmlhbGl6ZWRQbGF0Zm9ybURhdGFDdWUuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDc3QUYxNDExOEY0QjFCQjAwMDFFRDYxIC8qIFNlcmlhbGl6
ZWRQbGF0Zm9ybURhdGFDdWVNYWMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
U2VyaWFsaXplZFBsYXRmb3JtRGF0YUN1ZU1hYy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OworCQkwNzdBRjE0MjE4RjRCMUJCMDAwMUVENjEgLyogU2VyaWFsaXplZFBsYXRmb3JtRGF0YUN1
ZU1hYy5tbSAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLm9iamNwcDsgcGF0aCA9IFNlcmlhbGl6
ZWRQbGF0Zm9ybURhdGFDdWVNYWMubW07IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3
N0I2NDEwMUI5NEYxMkUwMDNFOUFENSAvKiBNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyTW9jay5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNZWRpYVBsYXliYWNrVGFy
Z2V0UGlja2VyTW9jay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3N0I2NDEx
MUI5NEYxMkUwMDNFOUFENSAvKiBNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyTW9jay5oICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZWRpYVBsYXliYWNrVGFyZ2V0UGlja2VyTW9j
ay5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQkwNzdCNjQxNDFCOTVGNzAzMDAzRTlB
RDUgLyogTWVkaWFQbGF5YmFja1RhcmdldE1vY2suY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gTWVkaWFQbGF5YmFja1RhcmdldE1vY2suY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwpAQCAtMjA0OTAsOCArMjA0OTAsOCBAQAogCQkJCUJDOEI4NTNDMEU3QzdG
MTEwMEFCNjk4NCAvKiBTY3JvbGxiYXJUaGVtZU1hYy5oICovLAogCQkJCUJDRUY4NjlFMEU4NDRF
OUQwMEE4NUNENSAvKiBTY3JvbGxiYXJUaGVtZU1hYy5tbSAqLywKIAkJCQk5MzUzNjc2QTA5QUVE
ODhCMDBEMzVDRDYgLyogU2Nyb2xsVmlld01hYy5tbSAqLywKLQkJCQkwNzdBRjE0MTE4RjRCMUJC
MDAwMUVENjEgLyogU2VyaWFsaXplZFBsYXRmb3JtUmVwcmVzZW50YXRpb25NYWMuaCAqLywKLQkJ
CQkwNzdBRjE0MjE4RjRCMUJCMDAwMUVENjEgLyogU2VyaWFsaXplZFBsYXRmb3JtUmVwcmVzZW50
YXRpb25NYWMubW0gKi8sCisJCQkJMDc3QUYxNDExOEY0QjFCQjAwMDFFRDYxIC8qIFNlcmlhbGl6
ZWRQbGF0Zm9ybURhdGFDdWVNYWMuaCAqLywKKwkJCQkwNzdBRjE0MjE4RjRCMUJCMDAwMUVENjEg
LyogU2VyaWFsaXplZFBsYXRmb3JtRGF0YUN1ZU1hYy5tbSAqLywKIAkJCQk4NEIyQjI0RjA1NkJG
MTVGMDBEMkI3NzEgLyogU1NMS2V5R2VuZXJhdG9yTWFjLm1tICovLAogCQkJCUVDQTY4MEM2MUU2
NzcyNDUwMDczMUQyMCAvKiBTdHJpbmdVdGlsaXRpZXMuaCAqLywKIAkJCQlFQ0E2ODBDODFFNjc3
MzBCMDA3MzFEMjAgLyogU3RyaW5nVXRpbGl0aWVzLm1tICovLApAQCAtMjU5ODgsNyArMjU5ODgs
NyBAQAogCQkJCUJDMjQ0MUMzMEU4QjY1RDAwMDU1MzIwRiAvKiBTY3JvbGxWaWV3LmNwcCAqLywK
IAkJCQlCQzZENkUyNTA5QUY5NDM1MDBGNTk3NTkgLyogU2Nyb2xsVmlldy5oICovLAogCQkJCUFC
NzE3MDg4MEIzMTE4MDgwMDE3MTIzRSAvKiBTZWFyY2hQb3B1cE1lbnUuaCAqLywKLQkJCQkwNzdB
RjEzRTE4RjRBRTQwMDAwMUVENjEgLyogU2VyaWFsaXplZFBsYXRmb3JtUmVwcmVzZW50YXRpb24u
aCAqLywKKwkJCQkwNzdBRjEzRTE4RjRBRTQwMDAwMUVENjEgLyogU2VyaWFsaXplZFBsYXRmb3Jt
RGF0YUN1ZS5oICovLAogCQkJCTFBNEE5NTRCMEI0RURDQ0IwMDJEOEMzQyAvKiBTaGFyZWRCdWZm
ZXIuY3BwICovLAogCQkJCTFBNEE5NTRDMEI0RURDQ0IwMDJEOEMzQyAvKiBTaGFyZWRCdWZmZXIu
aCAqLywKIAkJCQk4MzRERkFDRTFGN0RBRTU3MDBDMjcyNUIgLyogU2hhcmVkU3RyaW5nSGFzaC5j
cHAgKi8sCkBAIC0zMjI1Nyw4ICszMjI1Nyw4IEBACiAJCQkJRTQ1MzIyQUMxNDBDRTI2NzAwNUEw
RjkyIC8qIFNlbGVjdG9yUXVlcnkuaCBpbiBIZWFkZXJzICovLAogCQkJCUY0RDQzRDY2MjE4ODAz
OEIwMEVDRUNBQyAvKiBTZXJpYWxpemVkQXR0YWNobWVudERhdGEuaCBpbiBIZWFkZXJzICovLAog
CQkJCUUxOERGMzM1MThBQUYxMkMwMDc3M0U1OSAvKiBTZXJpYWxpemVkQ3J5cHRvS2V5V3JhcC5o
IGluIEhlYWRlcnMgKi8sCi0JCQkJMDc3QUYxNDAxOEY0QUU0MDAwMDFFRDYxIC8qIFNlcmlhbGl6
ZWRQbGF0Zm9ybVJlcHJlc2VudGF0aW9uLmggaW4gSGVhZGVycyAqLywKLQkJCQkwNzdBRjE0MzE4
RjRCMUJCMDAwMUVENjEgLyogU2VyaWFsaXplZFBsYXRmb3JtUmVwcmVzZW50YXRpb25NYWMuaCBp
biBIZWFkZXJzICovLAorCQkJCTA3N0FGMTQwMThGNEFFNDAwMDAxRUQ2MSAvKiBTZXJpYWxpemVk
UGxhdGZvcm1EYXRhQ3VlLmggaW4gSGVhZGVycyAqLywKKwkJCQkwNzdBRjE0MzE4RjRCMUJCMDAw
MUVENjEgLyogU2VyaWFsaXplZFBsYXRmb3JtRGF0YUN1ZU1hYy5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQTc1RTQ5NzYxMDc1MkFDQjAwQzlCODk2IC8qIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJNTE2RjdGNkQxQzMxRTM5QTAwRjExMURDIC8qIFNlcnZlck9wZW5E
QlJlcXVlc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTJEOTNBRUUzMTlERjU2NDEwMDJBODZDMyAv
KiBTZXJ2aWNlc092ZXJsYXlDb250cm9sbGVyLmggaW4gSGVhZGVycyAqLywKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svRGF0YUN1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL3RyYWNrL0RhdGFDdWUuY3BwCmluZGV4IDJlZDc0OGMwMGQ5MTMxNDM4YzhlZGY2MjYyMTJi
MDA5YTg1OGUyZmQuLmFhMDU3ZjU4OWU0Yjk5ZWEyMGRmOTdjZmU3NzBmZGFkODE1NTVjZTEgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svRGF0YUN1ZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaHRtbC90cmFjay9EYXRhQ3VlLmNwcApAQCAtNTQsNyArNTQsNyBAQCBEYXRh
Q3VlOjpEYXRhQ3VlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIGNvbnN0IE1lZGlh
VGltZSYgc3RhcnQsIGNvbnN0CiB7CiB9CiAKLURhdGFDdWU6OkRhdGFDdWUoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCYgY29udGV4dCwgY29uc3QgTWVkaWFUaW1lJiBzdGFydCwgY29uc3QgTWVkaWFU
aW1lJiBlbmQsIFJlZlB0cjxTZXJpYWxpemVkUGxhdGZvcm1SZXByZXNlbnRhdGlvbj4mJiBwbGF0
Zm9ybVZhbHVlLCBjb25zdCBTdHJpbmcmIHR5cGUpCitEYXRhQ3VlOjpEYXRhQ3VlKFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIGNvbnN0IE1lZGlhVGltZSYgc3RhcnQsIGNvbnN0IE1l
ZGlhVGltZSYgZW5kLCBSZWZQdHI8U2VyaWFsaXplZFBsYXRmb3JtRGF0YUN1ZT4mJiBwbGF0Zm9y
bVZhbHVlLCBjb25zdCBTdHJpbmcmIHR5cGUpCiAgICAgOiBUZXh0VHJhY2tDdWUoY29udGV4dCwg
c3RhcnQsIGVuZCkKICAgICAsIG1fdHlwZSh0eXBlKQogICAgICwgbV9wbGF0Zm9ybVZhbHVlKFdU
Rk1vdmUocGxhdGZvcm1WYWx1ZSkpCkBAIC0xMTYsNyArMTE2LDcgQEAgYm9vbCBEYXRhQ3VlOjpj
dWVDb250ZW50c01hdGNoKGNvbnN0IFRleHRUcmFja0N1ZSYgY3VlKSBjb25zdAogICAgIGlmICht
X2RhdGEgJiYgbV9kYXRhLT5kYXRhKCkgJiYgbWVtY21wKG1fZGF0YS0+ZGF0YSgpLCBvdGhlckRh
dGEtPmRhdGEoKSwgbV9kYXRhLT5ieXRlTGVuZ3RoKCkpKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAKLSAgICBjb25zdCBTZXJpYWxpemVkUGxhdGZvcm1SZXByZXNlbnRhdGlvbiogb3RoZXJQbGF0
Zm9ybVZhbHVlID0gZGF0YUN1ZS0+cGxhdGZvcm1WYWx1ZSgpOworICAgIGNvbnN0IFNlcmlhbGl6
ZWRQbGF0Zm9ybURhdGFDdWUqIG90aGVyUGxhdGZvcm1WYWx1ZSA9IGRhdGFDdWUtPnBsYXRmb3Jt
VmFsdWUoKTsKICAgICBpZiAoKG90aGVyUGxhdGZvcm1WYWx1ZSAmJiAhbV9wbGF0Zm9ybVZhbHVl
KSB8fCAoIW90aGVyUGxhdGZvcm1WYWx1ZSAmJiBtX3BsYXRmb3JtVmFsdWUpKQogICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAgICAgaWYgKG1fcGxhdGZvcm1WYWx1ZSAmJiAhbV9wbGF0Zm9ybVZhbHVl
LT5pc0VxdWFsKCpvdGhlclBsYXRmb3JtVmFsdWUpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC90cmFjay9EYXRhQ3VlLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0RhdGFD
dWUuaAppbmRleCA3NjRiODBkZmI3ZTFlZDhlNzM3OGQ4NTk1N2E1YjFkMTczOTFmZDYxLi42M2E2
N2MwNDkxNWU2M2YzMjQyNmY2MjMwZDg2ZTQyODE3ZjUyMWFiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3RyYWNrL0RhdGFDdWUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3Ry
YWNrL0RhdGFDdWUuaApAQCAtMjgsNyArMjgsNyBAQAogCiAjaWYgRU5BQkxFKFZJREVPX1RSQUNL
KQogCi0jaW5jbHVkZSAiU2VyaWFsaXplZFBsYXRmb3JtUmVwcmVzZW50YXRpb24uaCIKKyNpbmNs
dWRlICJTZXJpYWxpemVkUGxhdGZvcm1EYXRhQ3VlLmgiCiAjaW5jbHVkZSAiVGV4dFRyYWNrQ3Vl
LmgiCiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQXJyYXlCdWZmZXIuaD4KICNpbmNsdWRlIDxK
YXZhU2NyaXB0Q29yZS9KU0NKU1ZhbHVlLmg+CkBAIC01Nyw3ICs1Nyw3IEBAIHB1YmxpYzoKICAg
ICAgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YUN1ZShjb250ZXh0LCBzdGFydCwgZW5kLCBk
YXRhLCB0eXBlKSk7CiAgICAgfQogCi0gICAgc3RhdGljIFJlZjxEYXRhQ3VlPiBjcmVhdGUoU2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgY29uc3QgTWVkaWFUaW1lJiBzdGFydCwgY29u
c3QgTWVkaWFUaW1lJiBlbmQsIFJlZlB0cjxTZXJpYWxpemVkUGxhdGZvcm1SZXByZXNlbnRhdGlv
bj4mJiBwbGF0Zm9ybVZhbHVlLCBjb25zdCBTdHJpbmcmIHR5cGUpCisgICAgc3RhdGljIFJlZjxE
YXRhQ3VlPiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgY29uc3QgTWVk
aWFUaW1lJiBzdGFydCwgY29uc3QgTWVkaWFUaW1lJiBlbmQsIFJlZlB0cjxTZXJpYWxpemVkUGxh
dGZvcm1EYXRhQ3VlPiYmIHBsYXRmb3JtVmFsdWUsIGNvbnN0IFN0cmluZyYgdHlwZSkKICAgICB7
CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFDdWUoY29udGV4dCwgc3RhcnQsIGVu
ZCwgV1RGTW92ZShwbGF0Zm9ybVZhbHVlKSwgdHlwZSkpOwogICAgIH0KQEAgLTc3LDcgKzc3LDcg
QEAgcHVibGljOgogICAgIFJlZlB0cjxKU0M6OkFycmF5QnVmZmVyPiBkYXRhKCkgY29uc3Q7CiAg
ICAgdm9pZCBzZXREYXRhKEpTQzo6QXJyYXlCdWZmZXImKTsKIAotICAgIGNvbnN0IFNlcmlhbGl6
ZWRQbGF0Zm9ybVJlcHJlc2VudGF0aW9uKiBwbGF0Zm9ybVZhbHVlKCkgY29uc3QgeyByZXR1cm4g
bV9wbGF0Zm9ybVZhbHVlLmdldCgpOyB9CisgICAgY29uc3QgU2VyaWFsaXplZFBsYXRmb3JtRGF0
YUN1ZSogcGxhdGZvcm1WYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGxhdGZvcm1WYWx1ZS5nZXQo
KTsgfQogCiAgICAgSlNDOjpKU1ZhbHVlIHZhbHVlKEpTQzo6SlNHbG9iYWxPYmplY3QmKSBjb25z
dDsKICAgICB2b2lkIHNldFZhbHVlKEpTQzo6SlNHbG9iYWxPYmplY3QmLCBKU0M6OkpTVmFsdWUp
OwpAQCAtOTQsMTQgKzk0LDE0IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgRGF0YUN1ZShTY3Jp
cHRFeGVjdXRpb25Db250ZXh0JiwgY29uc3QgTWVkaWFUaW1lJiBzdGFydCwgY29uc3QgTWVkaWFU
aW1lJiBlbmQsIEFycmF5QnVmZmVyJiwgY29uc3QgU3RyaW5nJik7CiAgICAgRGF0YUN1ZShTY3Jp
cHRFeGVjdXRpb25Db250ZXh0JiwgY29uc3QgTWVkaWFUaW1lJiBzdGFydCwgY29uc3QgTWVkaWFU
aW1lJiBlbmQsIGNvbnN0IHZvaWQqLCB1bnNpZ25lZCk7Ci0gICAgRGF0YUN1ZShTY3JpcHRFeGVj
dXRpb25Db250ZXh0JiwgY29uc3QgTWVkaWFUaW1lJiBzdGFydCwgY29uc3QgTWVkaWFUaW1lJiBl
bmQsIFJlZlB0cjxTZXJpYWxpemVkUGxhdGZvcm1SZXByZXNlbnRhdGlvbj4mJiwgY29uc3QgU3Ry
aW5nJik7CisgICAgRGF0YUN1ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgY29uc3QgTWVkaWFU
aW1lJiBzdGFydCwgY29uc3QgTWVkaWFUaW1lJiBlbmQsIFJlZlB0cjxTZXJpYWxpemVkUGxhdGZv
cm1EYXRhQ3VlPiYmLCBjb25zdCBTdHJpbmcmKTsKICAgICBEYXRhQ3VlKFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQmLCBjb25zdCBNZWRpYVRpbWUmIHN0YXJ0LCBjb25zdCBNZWRpYVRpbWUmIGVuZCwg
SlNDOjpKU1ZhbHVlLCBjb25zdCBTdHJpbmcmKTsKIAogICAgIEpTQzo6SlNWYWx1ZSB2YWx1ZU9y
TnVsbCgpIGNvbnN0OwogCiAgICAgUmVmUHRyPEFycmF5QnVmZmVyPiBtX2RhdGE7CiAgICAgU3Ry
aW5nIG1fdHlwZTsKLSAgICBSZWZQdHI8U2VyaWFsaXplZFBsYXRmb3JtUmVwcmVzZW50YXRpb24+
IG1fcGxhdGZvcm1WYWx1ZTsKKyAgICBSZWZQdHI8U2VyaWFsaXplZFBsYXRmb3JtRGF0YUN1ZT4g
bV9wbGF0Zm9ybVZhbHVlOwogICAgIC8vIEZJWE1FOiBUaGUgZm9sbG93aW5nIHVzZSBvZiBKU0M6
OlN0cm9uZyBpcyBpbmNvcnJlY3QgYW5kIGNhbiBsZWFkIHRvIHN0b3JhZ2UgbGVha3MKICAgICAv
LyBkdWUgdG8gcmVmZXJlbmNlIGN5Y2xlczsgd2Ugc2hvdWxkIHVzZSBKU1ZhbHVlSW5XcmFwcGVk
T2JqZWN0IGluc3RlYWQuCiAgICAgLy8gaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTIwMTE3MwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9JbmJh
bmREYXRhVGV4dFRyYWNrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5kRGF0
YVRleHRUcmFjay5jcHAKaW5kZXggYzFiZWM5YTA5YzBmYzFkYmNjYTE4YTFmZTMxOThjOTlkY2Qz
ZGI1OC4uZjA3ZjczOGQyODM2MWNjNGJmZDQ5MmM2NGE4NGFjOWJkNGNhNjUwNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9JbmJhbmREYXRhVGV4dFRyYWNrLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0luYmFuZERhdGFUZXh0VHJhY2suY3BwCkBAIC01
Nyw3ICs1Nyw3IEBAIHZvaWQgSW5iYW5kRGF0YVRleHRUcmFjazo6YWRkRGF0YUN1ZShjb25zdCBN
ZWRpYVRpbWUmIHN0YXJ0LCBjb25zdCBNZWRpYVRpbWUmIGVuCiAKICNpZiBFTkFCTEUoREFUQUNV
RV9WQUxVRSkKIAotdm9pZCBJbmJhbmREYXRhVGV4dFRyYWNrOjphZGREYXRhQ3VlKGNvbnN0IE1l
ZGlhVGltZSYgc3RhcnQsIGNvbnN0IE1lZGlhVGltZSYgZW5kLCBSZWY8U2VyaWFsaXplZFBsYXRm
b3JtUmVwcmVzZW50YXRpb24+JiYgcGxhdGZvcm1WYWx1ZSwgY29uc3QgU3RyaW5nJiB0eXBlKQor
dm9pZCBJbmJhbmREYXRhVGV4dFRyYWNrOjphZGREYXRhQ3VlKGNvbnN0IE1lZGlhVGltZSYgc3Rh
cnQsIGNvbnN0IE1lZGlhVGltZSYgZW5kLCBSZWY8U2VyaWFsaXplZFBsYXRmb3JtRGF0YUN1ZT4m
JiBwbGF0Zm9ybVZhbHVlLCBjb25zdCBTdHJpbmcmIHR5cGUpCiB7CiAgICAgaWYgKG1faW5jb21w
bGV0ZUN1ZU1hcC5jb250YWlucyhwbGF0Zm9ybVZhbHVlLnB0cigpKSkKICAgICAgICAgcmV0dXJu
OwpAQCAtNzgsNyArNzgsNyBAQCB2b2lkIEluYmFuZERhdGFUZXh0VHJhY2s6OmFkZERhdGFDdWUo
Y29uc3QgTWVkaWFUaW1lJiBzdGFydCwgY29uc3QgTWVkaWFUaW1lJiBlbgogICAgIGFkZEN1ZShX
VEZNb3ZlKGN1ZSkpOwogfQogCi12b2lkIEluYmFuZERhdGFUZXh0VHJhY2s6OnVwZGF0ZURhdGFD
dWUoY29uc3QgTWVkaWFUaW1lJiBzdGFydCwgY29uc3QgTWVkaWFUaW1lJiBpbkVuZCwgU2VyaWFs
aXplZFBsYXRmb3JtUmVwcmVzZW50YXRpb24mIHBsYXRmb3JtVmFsdWUpCit2b2lkIEluYmFuZERh
dGFUZXh0VHJhY2s6OnVwZGF0ZURhdGFDdWUoY29uc3QgTWVkaWFUaW1lJiBzdGFydCwgY29uc3Qg
TWVkaWFUaW1lJiBpbkVuZCwgU2VyaWFsaXplZFBsYXRmb3JtRGF0YUN1ZSYgcGxhdGZvcm1WYWx1
ZSkKIHsKICAgICBSZWZQdHI8RGF0YUN1ZT4gY3VlID0gbV9pbmNvbXBsZXRlQ3VlTWFwLmdldCgm
cGxhdGZvcm1WYWx1ZSk7CiAgICAgaWYgKCFjdWUpCkBAIC0xMDAsNyArMTAwLDcgQEAgdm9pZCBJ
bmJhbmREYXRhVGV4dFRyYWNrOjp1cGRhdGVEYXRhQ3VlKGNvbnN0IE1lZGlhVGltZSYgc3RhcnQs
IGNvbnN0IE1lZGlhVGltZSYKICAgICBjdWUtPmRpZENoYW5nZSgpOwogfQogCi12b2lkIEluYmFu
ZERhdGFUZXh0VHJhY2s6OnJlbW92ZURhdGFDdWUoY29uc3QgTWVkaWFUaW1lJiwgY29uc3QgTWVk
aWFUaW1lJiwgU2VyaWFsaXplZFBsYXRmb3JtUmVwcmVzZW50YXRpb24mIHBsYXRmb3JtVmFsdWUp
Cit2b2lkIEluYmFuZERhdGFUZXh0VHJhY2s6OnJlbW92ZURhdGFDdWUoY29uc3QgTWVkaWFUaW1l
JiwgY29uc3QgTWVkaWFUaW1lJiwgU2VyaWFsaXplZFBsYXRmb3JtRGF0YUN1ZSYgcGxhdGZvcm1W
YWx1ZSkKIHsKICAgICBpZiAoYXV0byBjdWUgPSBtX2luY29tcGxldGVDdWVNYXAudGFrZSgmcGxh
dGZvcm1WYWx1ZSkpIHsKICAgICAgICAgSU5GT19MT0coTE9HSURFTlRJRklFUiwgInJlbW92aW5n
OiAiLCAqY3VlKTsKQEAgLTExMiw3ICsxMTIsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBJbmJhbmRE
YXRhVGV4dFRyYWNrOjpyZW1vdmVDdWUoVGV4dFRyYWNrQ3VlJiBjdWUpCiB7CiAgICAgQVNTRVJU
KGN1ZS5jdWVUeXBlKCkgPT0gVGV4dFRyYWNrQ3VlOjpEYXRhKTsKIAotICAgIG1faW5jb21wbGV0
ZUN1ZU1hcC5yZW1vdmUoY29uc3RfY2FzdDxTZXJpYWxpemVkUGxhdGZvcm1SZXByZXNlbnRhdGlv
bio+KHRvRGF0YUN1ZSgmY3VlKS0+cGxhdGZvcm1WYWx1ZSgpKSk7CisgICAgbV9pbmNvbXBsZXRl
Q3VlTWFwLnJlbW92ZShjb25zdF9jYXN0PFNlcmlhbGl6ZWRQbGF0Zm9ybURhdGFDdWUqPih0b0Rh
dGFDdWUoJmN1ZSktPnBsYXRmb3JtVmFsdWUoKSkpOwogCiAgICAgcmV0dXJuIEluYmFuZFRleHRU
cmFjazo6cmVtb3ZlQ3VlKGN1ZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L3RyYWNrL0luYmFuZERhdGFUZXh0VHJhY2suaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2sv
SW5iYW5kRGF0YVRleHRUcmFjay5oCmluZGV4IDFiMDM4ZjM3MjIyMmQ2MTAyMTY4MDgxNTYwYmMw
YjY2NzI5NDhkY2UuLjFhOGJkZjZhZTUyMjhiZWYwY2Y4ZDFkYWQ5NWUzNTZmNjI4YTQ0ZjIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5kRGF0YVRleHRUcmFjay5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5kRGF0YVRleHRUcmFjay5oCkBA
IC01MCwxMiArNTAsMTIgQEAgcHJpdmF0ZToKICNlbmRpZgogCiAjaWYgRU5BQkxFKERBVEFDVUVf
VkFMVUUpCi0gICAgdm9pZCBhZGREYXRhQ3VlKGNvbnN0IE1lZGlhVGltZSYgc3RhcnQsIGNvbnN0
IE1lZGlhVGltZSYgZW5kLCBSZWY8U2VyaWFsaXplZFBsYXRmb3JtUmVwcmVzZW50YXRpb24+JiYs
IGNvbnN0IFN0cmluZyYpIGZpbmFsOwotICAgIHZvaWQgdXBkYXRlRGF0YUN1ZShjb25zdCBNZWRp
YVRpbWUmIHN0YXJ0LCBjb25zdCBNZWRpYVRpbWUmIGVuZCwgU2VyaWFsaXplZFBsYXRmb3JtUmVw
cmVzZW50YXRpb24mKSBmaW5hbDsKLSAgICB2b2lkIHJlbW92ZURhdGFDdWUoY29uc3QgTWVkaWFU
aW1lJiBzdGFydCwgY29uc3QgTWVkaWFUaW1lJiBlbmQsIFNlcmlhbGl6ZWRQbGF0Zm9ybVJlcHJl
c2VudGF0aW9uJikgZmluYWw7CisgICAgdm9pZCBhZGREYXRhQ3VlKGNvbnN0IE1lZGlhVGltZSYg
c3RhcnQsIGNvbnN0IE1lZGlhVGltZSYgZW5kLCBSZWY8U2VyaWFsaXplZFBsYXRmb3JtRGF0YUN1
ZT4mJiwgY29uc3QgU3RyaW5nJikgZmluYWw7CisgICAgdm9pZCB1cGRhdGVEYXRhQ3VlKGNvbnN0
IE1lZGlhVGltZSYgc3RhcnQsIGNvbnN0IE1lZGlhVGltZSYgZW5kLCBTZXJpYWxpemVkUGxhdGZv
cm1EYXRhQ3VlJikgZmluYWw7CisgICAgdm9pZCByZW1vdmVEYXRhQ3VlKGNvbnN0IE1lZGlhVGlt
ZSYgc3RhcnQsIGNvbnN0IE1lZGlhVGltZSYgZW5kLCBTZXJpYWxpemVkUGxhdGZvcm1EYXRhQ3Vl
JikgZmluYWw7CiAgICAgRXhjZXB0aW9uT3I8dm9pZD4gcmVtb3ZlQ3VlKFRleHRUcmFja0N1ZSYp
IGZpbmFsOwogCi0gICAgSGFzaE1hcDxSZWZQdHI8U2VyaWFsaXplZFBsYXRmb3JtUmVwcmVzZW50
YXRpb24+LCBSZWZQdHI8RGF0YUN1ZT4+IG1faW5jb21wbGV0ZUN1ZU1hcDsKKyAgICBIYXNoTWFw
PFJlZlB0cjxTZXJpYWxpemVkUGxhdGZvcm1EYXRhQ3VlPiwgUmVmUHRyPERhdGFDdWU+PiBtX2lu
Y29tcGxldGVDdWVNYXA7CiAjZW5kaWYKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvdHJhY2svSW5iYW5kVGV4dFRyYWNrLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNr
L0luYmFuZFRleHRUcmFjay5oCmluZGV4IDBkNDUyNzg1ZjE4MzJjYWJkODJjNmQzMWJmZTQ5N2Q3
Y2UwM2I2MjUuLjU3YjQxMTYzMjkxODkzNzJkNGY2NTE4NjFhNTIyNDI2NWQyZmU3YzkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5kVGV4dFRyYWNrLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9JbmJhbmRUZXh0VHJhY2suaApAQCAtNjksOSArNjks
OSBAQCBwcml2YXRlOgogICAgIHZvaWQgYWRkRGF0YUN1ZShjb25zdCBNZWRpYVRpbWUmLCBjb25z
dCBNZWRpYVRpbWUmLCBjb25zdCB2b2lkKiwgdW5zaWduZWQpIG92ZXJyaWRlIHsgQVNTRVJUX05P
VF9SRUFDSEVEKCk7IH0KIAogI2lmIEVOQUJMRShEQVRBQ1VFX1ZBTFVFKQotICAgIHZvaWQgYWRk
RGF0YUN1ZShjb25zdCBNZWRpYVRpbWUmLCBjb25zdCBNZWRpYVRpbWUmLCBSZWY8U2VyaWFsaXpl
ZFBsYXRmb3JtUmVwcmVzZW50YXRpb24+JiYsIGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlIHsgQVNT
RVJUX05PVF9SRUFDSEVEKCk7IH0KLSAgICB2b2lkIHVwZGF0ZURhdGFDdWUoY29uc3QgTWVkaWFU
aW1lJiwgY29uc3QgTWVkaWFUaW1lJiwgU2VyaWFsaXplZFBsYXRmb3JtUmVwcmVzZW50YXRpb24m
KSBvdmVycmlkZSAgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQotICAgIHZvaWQgcmVtb3ZlRGF0
YUN1ZShjb25zdCBNZWRpYVRpbWUmLCBjb25zdCBNZWRpYVRpbWUmLCBTZXJpYWxpemVkUGxhdGZv
cm1SZXByZXNlbnRhdGlvbiYpIG92ZXJyaWRlICB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9Cisg
ICAgdm9pZCBhZGREYXRhQ3VlKGNvbnN0IE1lZGlhVGltZSYsIGNvbnN0IE1lZGlhVGltZSYsIFJl
ZjxTZXJpYWxpemVkUGxhdGZvcm1EYXRhQ3VlPiYmLCBjb25zdCBTdHJpbmcmKSBvdmVycmlkZSB7
IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CisgICAgdm9pZCB1cGRhdGVEYXRhQ3VlKGNvbnN0IE1l
ZGlhVGltZSYsIGNvbnN0IE1lZGlhVGltZSYsIFNlcmlhbGl6ZWRQbGF0Zm9ybURhdGFDdWUmKSBv
dmVycmlkZSAgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQorICAgIHZvaWQgcmVtb3ZlRGF0YUN1
ZShjb25zdCBNZWRpYVRpbWUmLCBjb25zdCBNZWRpYVRpbWUmLCBTZXJpYWxpemVkUGxhdGZvcm1E
YXRhQ3VlJikgb3ZlcnJpZGUgIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KICNlbmRpZgogCiAg
ICAgdm9pZCBhZGRHZW5lcmljQ3VlKEdlbmVyaWNDdWVEYXRhJikgb3ZlcnJpZGUgeyBBU1NFUlRf
Tk9UX1JFQUNIRUQoKTsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2Vy
aWFsaXplZFBsYXRmb3JtRGF0YUN1ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2VyaWFs
aXplZFBsYXRmb3JtRGF0YUN1ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmE0NGUyYzU0YTc1ZjVhYmQ1MzZmYTM5
ZTRmNjIyMDNiMjIwNzU1YjkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9TZXJpYWxpemVkUGxhdGZvcm1EYXRhQ3VlLmgKQEAgLTAsMCArMSw1NCBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJ
VFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNV
TEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9G
CisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1Ig
UFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5BQkxFKFZJREVPKQorCisjaW5jbHVkZSA8SmF2
YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgorI2luY2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgU2VyaWFsaXplZFBsYXRmb3JtRGF0YUN1ZSA6
IHB1YmxpYyBSZWZDb3VudGVkPFNlcmlhbGl6ZWRQbGF0Zm9ybURhdGFDdWU+IHsKK3B1YmxpYzoK
KyAgICB2aXJ0dWFsIH5TZXJpYWxpemVkUGxhdGZvcm1EYXRhQ3VlKCkgPSBkZWZhdWx0OworCisg
ICAgdmlydHVhbCBKU0M6OkpTVmFsdWUgZGVzZXJpYWxpemUoSlNDOjpKU0dsb2JhbE9iamVjdCop
IGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFJlZlB0cjxKU0M6OkFycmF5QnVmZmVyPiBkYXRhKCkg
Y29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBpc0VxdWFsKGNvbnN0IFNlcmlhbGl6ZWRQbGF0
Zm9ybURhdGFDdWUmKSBjb25zdCA9IDA7CisKKyAgICBlbnVtIFBsYXRmb3JtVHlwZSB7CisgICAg
ICAgIE9iakMsCisgICAgfTsKKyAgICB2aXJ0dWFsIFBsYXRmb3JtVHlwZSBwbGF0Zm9ybVR5cGUo
KSBjb25zdCA9IDA7CisKK3Byb3RlY3RlZDoKKyAgICBTZXJpYWxpemVkUGxhdGZvcm1EYXRhQ3Vl
KCkgPSBkZWZhdWx0OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NlcmlhbGl6ZWRQbGF0Zm9ybVJlcHJl
c2VudGF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TZXJpYWxpemVkUGxhdGZvcm1S
ZXByZXNlbnRhdGlvbi5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0NDI4OWViODY5
OTkxYWFmZTU4ODAzMmVmY2Y2NjFmYjk4NGE0MWFjLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NlcmlhbGl6ZWRQ
bGF0Zm9ybVJlcHJlc2VudGF0aW9uLmgKKysrIC9kZXYvbnVsbApAQCAtMSw1NCArMCwwIEBACi0v
KgotICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNpZiBFTkFCTEUoVklERU8pCi0KLSNpbmNsdWRl
IDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQu
aD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBTZXJpYWxpemVkUGxhdGZvcm1SZXBy
ZXNlbnRhdGlvbiA6IHB1YmxpYyBSZWZDb3VudGVkPFNlcmlhbGl6ZWRQbGF0Zm9ybVJlcHJlc2Vu
dGF0aW9uPiB7Ci1wdWJsaWM6Ci0gICAgdmlydHVhbCB+U2VyaWFsaXplZFBsYXRmb3JtUmVwcmVz
ZW50YXRpb24oKSA9IGRlZmF1bHQ7Ci0KLSAgICB2aXJ0dWFsIEpTQzo6SlNWYWx1ZSBkZXNlcmlh
bGl6ZShKU0M6OkpTR2xvYmFsT2JqZWN0KikgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgUmVmUHRy
PEpTQzo6QXJyYXlCdWZmZXI+IGRhdGEoKSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCBib29sIGlz
RXF1YWwoY29uc3QgU2VyaWFsaXplZFBsYXRmb3JtUmVwcmVzZW50YXRpb24mKSBjb25zdCA9IDA7
Ci0KLSAgICBlbnVtIFBsYXRmb3JtVHlwZSB7Ci0gICAgICAgIE9iakMsCi0gICAgfTsKLSAgICB2
aXJ0dWFsIFBsYXRmb3JtVHlwZSBwbGF0Zm9ybVR5cGUoKSBjb25zdCA9IDA7Ci0KLXByb3RlY3Rl
ZDoKLSAgICBTZXJpYWxpemVkUGxhdGZvcm1SZXByZXNlbnRhdGlvbigpID0gZGVmYXVsdDsKLX07
Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbmJhbmRUZXh0VHJhY2tQcml2YXRlQ2xpZW50Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbmJhbmRUZXh0VHJhY2tQcml2YXRl
Q2xpZW50LmgKaW5kZXggOWQ0ZTFmYWRkNzIwYmU4MTYyM2MyYTdjYTU2MWZkYTkzNzI4ODZiMy4u
NWJlMzE4ODNhNWIxOTk0MDlkOTYyODk2OWVmNWJjNTg3ZDg5YmI0OCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUNsaWVu
dC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0luYmFuZFRleHRUcmFj
a1ByaXZhdGVDbGllbnQuaApAQCAtMzMsNyArMzMsNyBAQAogI2luY2x1ZGUgPHd0Zi9NZWRpYVRp
bWUuaD4KIAogI2lmIEVOQUJMRShEQVRBQ1VFX1ZBTFVFKQotI2luY2x1ZGUgIlNlcmlhbGl6ZWRQ
bGF0Zm9ybVJlcHJlc2VudGF0aW9uLmgiCisjaW5jbHVkZSAiU2VyaWFsaXplZFBsYXRmb3JtRGF0
YUN1ZS5oIgogI2VuZGlmCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTIyOSw5ICsyMjksOSBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGFkZERhdGFDdWUoY29uc3QgTWVkaWFUaW1lJiBz
dGFydCwgY29uc3QgTWVkaWFUaW1lJiBlbmQsIGNvbnN0IHZvaWQqLCB1bnNpZ25lZCkgPSAwOwog
CiAjaWYgRU5BQkxFKERBVEFDVUVfVkFMVUUpCi0gICAgdmlydHVhbCB2b2lkIGFkZERhdGFDdWUo
Y29uc3QgTWVkaWFUaW1lJiBzdGFydCwgY29uc3QgTWVkaWFUaW1lJiBlbmQsIFJlZjxTZXJpYWxp
emVkUGxhdGZvcm1SZXByZXNlbnRhdGlvbj4mJiwgY29uc3QgU3RyaW5nJikgPSAwOwotICAgIHZp
cnR1YWwgdm9pZCB1cGRhdGVEYXRhQ3VlKGNvbnN0IE1lZGlhVGltZSYgc3RhcnQsIGNvbnN0IE1l
ZGlhVGltZSYgZW5kLCBTZXJpYWxpemVkUGxhdGZvcm1SZXByZXNlbnRhdGlvbiYpID0gMDsKLSAg
ICB2aXJ0dWFsIHZvaWQgcmVtb3ZlRGF0YUN1ZShjb25zdCBNZWRpYVRpbWUmIHN0YXJ0LCBjb25z
dCBNZWRpYVRpbWUmIGVuZCwgU2VyaWFsaXplZFBsYXRmb3JtUmVwcmVzZW50YXRpb24mKSA9IDA7
CisgICAgdmlydHVhbCB2b2lkIGFkZERhdGFDdWUoY29uc3QgTWVkaWFUaW1lJiBzdGFydCwgY29u
c3QgTWVkaWFUaW1lJiBlbmQsIFJlZjxTZXJpYWxpemVkUGxhdGZvcm1EYXRhQ3VlPiYmLCBjb25z
dCBTdHJpbmcmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZURhdGFDdWUoY29uc3QgTWVk
aWFUaW1lJiBzdGFydCwgY29uc3QgTWVkaWFUaW1lJiBlbmQsIFNlcmlhbGl6ZWRQbGF0Zm9ybURh
dGFDdWUmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlbW92ZURhdGFDdWUoY29uc3QgTWVkaWFU
aW1lJiBzdGFydCwgY29uc3QgTWVkaWFUaW1lJiBlbmQsIFNlcmlhbGl6ZWRQbGF0Zm9ybURhdGFD
dWUmKSA9IDA7CiAjZW5kaWYKIAogICAgIHZpcnR1YWwgdm9pZCBhZGRHZW5lcmljQ3VlKEdlbmVy
aWNDdWVEYXRhJikgPSAwOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL0luYmFuZE1ldGFkYXRhVGV4dFRyYWNrUHJpdmF0ZUFWRi5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vSW5iYW5kTWV0
YWRhdGFUZXh0VHJhY2tQcml2YXRlQVZGLmNwcAppbmRleCAwMjYzYzY0ZmRmMDU3MzYyMTI4YTg2
OTA5NTA4NTBmYmYxNmZmZTY4Li5jZGUzMDhiMDMyMWM4ZDBkN2Q2YzNhYjNlMDk1M2ZiNTVkODhj
M2VlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5k
YXRpb24vSW5iYW5kTWV0YWRhdGFUZXh0VHJhY2tQcml2YXRlQVZGLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vSW5iYW5kTWV0YWRhdGFUZXh0
VHJhY2tQcml2YXRlQVZGLmNwcApAQCAtNTQsNyArNTQsNyBAQCBJbmJhbmRNZXRhZGF0YVRleHRU
cmFja1ByaXZhdGVBVkY6On5JbmJhbmRNZXRhZGF0YVRleHRUcmFja1ByaXZhdGVBVkYoKSA9IGRl
ZmF1bAogCiAjaWYgRU5BQkxFKERBVEFDVUVfVkFMVUUpCiAKLXZvaWQgSW5iYW5kTWV0YWRhdGFU
ZXh0VHJhY2tQcml2YXRlQVZGOjphZGREYXRhQ3VlKGNvbnN0IE1lZGlhVGltZSYgc3RhcnQsIGNv
bnN0IE1lZGlhVGltZSYgZW5kLCBSZWY8U2VyaWFsaXplZFBsYXRmb3JtUmVwcmVzZW50YXRpb24+
JiYgY3VlRGF0YSwgY29uc3QgU3RyaW5nJiB0eXBlKQordm9pZCBJbmJhbmRNZXRhZGF0YVRleHRU
cmFja1ByaXZhdGVBVkY6OmFkZERhdGFDdWUoY29uc3QgTWVkaWFUaW1lJiBzdGFydCwgY29uc3Qg
TWVkaWFUaW1lJiBlbmQsIFJlZjxTZXJpYWxpemVkUGxhdGZvcm1EYXRhQ3VlPiYmIGN1ZURhdGEs
IGNvbnN0IFN0cmluZyYgdHlwZSkKIHsKICAgICBBU1NFUlQoY3VlRm9ybWF0KCkgPT0gRGF0YSk7
CiAgICAgQVNTRVJUKHN0YXJ0ID49IE1lZGlhVGltZTo6emVyb1RpbWUoKSk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vSW5iYW5kTWV0
YWRhdGFUZXh0VHJhY2tQcml2YXRlQVZGLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vSW5iYW5kTWV0YWRhdGFUZXh0VHJhY2tQcml2YXRlQVZGLmgKaW5k
ZXggMmVjN2Q1YzA1MzBkNzc4Yjk0OTA3MzE2Y2FmN2FiZDFlY2IzODdhZi4uY2YwMDQ3MTQwZjM2
ZGYzZjQ5YTk1NjBiZDUzYWQ3OTljMDhkODllMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0luYmFuZE1ldGFkYXRhVGV4dFRyYWNrUHJp
dmF0ZUFWRi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9JbmJhbmRNZXRhZGF0YVRleHRUcmFja1ByaXZhdGVBVkYuaApAQCAtMzQsNyArMzQsNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKICNpZiBFTkFCTEUoREFUQUNVRV9WQUxVRSkKIHN0cnVj
dCBJbmNvbXBsZXRlTWV0YURhdGFDdWUgewotICAgIFJlZlB0cjxTZXJpYWxpemVkUGxhdGZvcm1S
ZXByZXNlbnRhdGlvbj4gY3VlRGF0YTsKKyAgICBSZWZQdHI8U2VyaWFsaXplZFBsYXRmb3JtRGF0
YUN1ZT4gY3VlRGF0YTsKICAgICBNZWRpYVRpbWUgc3RhcnRUaW1lOwogfTsKICNlbmRpZgpAQCAt
NTEsNyArNTEsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRJbkJhbmRNZXRhZGF0YVRyYWNrRGlz
cGF0Y2hUeXBlKGNvbnN0IEF0b21TdHJpbmcmIHZhbHVlKSB7IG1faW5CYW5kTWV0YWRhdGFUcmFj
a0Rpc3BhdGNoVHlwZSA9IHZhbHVlOyB9CiAKICNpZiBFTkFCTEUoREFUQUNVRV9WQUxVRSkKLSAg
ICB2b2lkIGFkZERhdGFDdWUoY29uc3QgTWVkaWFUaW1lJiBzdGFydCwgY29uc3QgTWVkaWFUaW1l
JiBlbmQsIFJlZjxTZXJpYWxpemVkUGxhdGZvcm1SZXByZXNlbnRhdGlvbj4mJiwgY29uc3QgU3Ry
aW5nJik7CisgICAgdm9pZCBhZGREYXRhQ3VlKGNvbnN0IE1lZGlhVGltZSYgc3RhcnQsIGNvbnN0
IE1lZGlhVGltZSYgZW5kLCBSZWY8U2VyaWFsaXplZFBsYXRmb3JtRGF0YUN1ZT4mJiwgY29uc3Qg
U3RyaW5nJik7CiAgICAgdm9pZCB1cGRhdGVQZW5kaW5nQ3VlRW5kVGltZXMoY29uc3QgTWVkaWFU
aW1lJik7CiAjZW5kaWYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2Jq
Qy5tbSBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpj
L01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0KaW5kZXggMWVhZDVjZjE3OGRj
YTVkNzY0MTJlNGIwMzQzYTg3ZDA2MWFkYjUzMi4uOGQ5N2UzYTc0NWY3Nzg0NGE2YTEwN2E1YmNk
MmIxYWY3ZWUyZTJiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5t
bQorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCkBAIC01NSw3ICs1NSw3IEBA
CiAjaW1wb3J0ICJQaXhlbEJ1ZmZlckNvbmZvcm1lckNWLmgiCiAjaW1wb3J0ICJQbGF0Zm9ybVRp
bWVSYW5nZXMuaCIKICNpbXBvcnQgIlNlY3VyaXR5T3JpZ2luLmgiCi0jaW1wb3J0ICJTZXJpYWxp
emVkUGxhdGZvcm1SZXByZXNlbnRhdGlvbk1hYy5oIgorI2ltcG9ydCAiU2VyaWFsaXplZFBsYXRm
b3JtRGF0YUN1ZU1hYy5oIgogI2ltcG9ydCAiU2hhcmVkQnVmZmVyLmgiCiAjaW1wb3J0ICJUZXh0
RW5jb2RpbmcuaCIKICNpbXBvcnQgIlRleHRUcmFja1JlcHJlc2VudGF0aW9uLmgiCkBAIC0zMDcz
LDcgKzMwNzMsNyBAQCB2b2lkIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakM6Om1l
dGFkYXRhRGlkQXJyaXZlKGNvbnN0IFJldGFpblB0cjxOU0FycgogICAgICAgICBpZiAoaXRlbS5r
ZXlTcGFjZSkKICAgICAgICAgICAgIHR5cGUgPSBtZXRhZGF0YVR5cGUoaXRlbS5rZXlTcGFjZSk7
CiAKLSAgICAgICAgbV9tZXRhZGF0YVRyYWNrLT5hZGREYXRhQ3VlKHN0YXJ0LCBlbmQsIFNlcmlh
bGl6ZWRQbGF0Zm9ybVJlcHJlc2VudGF0aW9uTWFjOjpjcmVhdGUoaXRlbSksIHR5cGUpOworICAg
ICAgICBtX21ldGFkYXRhVHJhY2stPmFkZERhdGFDdWUoc3RhcnQsIGVuZCwgU2VyaWFsaXplZFBs
YXRmb3JtRGF0YUN1ZU1hYzo6Y3JlYXRlKGl0ZW0pLCB0eXBlKTsKICAgICB9CiAjZW5kaWYKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TZXJpYWxpemVkUGxhdGZv
cm1EYXRhQ3VlTWFjLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2VyaWFsaXplZFBs
YXRmb3JtRGF0YUN1ZU1hYy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjIwY2EzMjg5ZTVkZWFlZDg1ZjBjNjQxYmYx
MDk4ZDBmNTIyZWQ1N2QKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tYWMvU2VyaWFsaXplZFBsYXRmb3JtRGF0YUN1ZU1hYy5oCkBAIC0wLDAgKzEsNjMgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lmIEVOQUJMRShWSURFT19UUkFDSykgJiYgRU5B
QkxFKERBVEFDVUVfVkFMVUUpCisKKyNpbmNsdWRlICJTZXJpYWxpemVkUGxhdGZvcm1EYXRhQ3Vl
LmgiCisKKyNpZiBVU0UoRk9VTkRBVElPTikgJiYgIWRlZmluZWQoX19PQkpDX18pCit0eXBlZGVm
IHN0cnVjdCBvYmpjX29iamVjdCAqaWQ7CisjZW5kaWYKKworbmFtZXNwYWNlIFdlYkNvcmUgewor
CitjbGFzcyBTZXJpYWxpemVkUGxhdGZvcm1EYXRhQ3VlTWFjIDogcHVibGljIFNlcmlhbGl6ZWRQ
bGF0Zm9ybURhdGFDdWUgeworcHVibGljOgorICAgIHZpcnR1YWwgflNlcmlhbGl6ZWRQbGF0Zm9y
bURhdGFDdWVNYWMoKTsKKyAgICBzdGF0aWMgUmVmPFNlcmlhbGl6ZWRQbGF0Zm9ybURhdGFDdWU+
IGNyZWF0ZShpZCk7CisKKyAgICBKU0M6OkpTVmFsdWUgZGVzZXJpYWxpemUoSlNDOjpKU0dsb2Jh
bE9iamVjdCopIGNvbnN0IG92ZXJyaWRlOworICAgIFJlZlB0cjxBcnJheUJ1ZmZlcj4gZGF0YSgp
IGNvbnN0IG92ZXJyaWRlOworCisgICAgYm9vbCBpc0VxdWFsKGNvbnN0IFNlcmlhbGl6ZWRQbGF0
Zm9ybURhdGFDdWUmKSBjb25zdCBvdmVycmlkZTsKKworICAgIFBsYXRmb3JtVHlwZSBwbGF0Zm9y
bVR5cGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBTZXJpYWxpemVkUGxhdGZvcm1EYXRhQ3Vl
OjpPYmpDOyB9CisKKyAgICBpZCBuYXRpdmVWYWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fbmF0aXZl
VmFsdWUuZ2V0KCk7IH0KKworcHJpdmF0ZToKKyAgICBTZXJpYWxpemVkUGxhdGZvcm1EYXRhQ3Vl
TWFjKGlkIG5hdGl2ZVZhbHVlKTsKKworICAgIFJldGFpblB0cjxpZD4gbV9uYXRpdmVWYWx1ZTsK
K307CisKK1NlcmlhbGl6ZWRQbGF0Zm9ybURhdGFDdWVNYWMqIHRvU2VyaWFsaXplZFBsYXRmb3Jt
RGF0YUN1ZU1hYyhTZXJpYWxpemVkUGxhdGZvcm1EYXRhQ3VlKik7Citjb25zdCBTZXJpYWxpemVk
UGxhdGZvcm1EYXRhQ3VlTWFjKiB0b1NlcmlhbGl6ZWRQbGF0Zm9ybURhdGFDdWVNYWMoY29uc3Qg
U2VyaWFsaXplZFBsYXRmb3JtRGF0YUN1ZSopOworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisK
KyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1NlcmlhbGl6
ZWRQbGF0Zm9ybURhdGFDdWVNYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2Vy
aWFsaXplZFBsYXRmb3JtRGF0YUN1ZU1hYy5tbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lN2E2Y2Y1N2YwNDI1MWE1
YTI3NjkzNzhmM2EzNzVmNzkzOGI1MjU1Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vbWFjL1NlcmlhbGl6ZWRQbGF0Zm9ybURhdGFDdWVNYWMubW0KQEAgLTAsMCAr
MSwyMzkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQsIDIwMTUgQXBwbGUgSW5jLiBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFC
TEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExB
UlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1J
VEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsg
TE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJ
T04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhF
IFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJ
TElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVk
ZSAiU2VyaWFsaXplZFBsYXRmb3JtRGF0YUN1ZU1hYy5oIgorCisjaWYgRU5BQkxFKFZJREVPX1RS
QUNLKSAmJiBFTkFCTEUoREFUQUNVRV9WQUxVRSkKKworI2ltcG9ydCAiSlNET01Db252ZXJ0QnVm
ZmVyU291cmNlLmgiCisjaW1wb3J0IDxBVkZvdW5kYXRpb24vQVZNZXRhZGF0YUl0ZW0uaD4KKyNp
bXBvcnQgPEZvdW5kYXRpb24vTlNTdHJpbmcuaD4KKyNpbXBvcnQgPEphdmFTY3JpcHRDb3JlL0FQ
SUNhc3QuaD4KKyNpbXBvcnQgPEphdmFTY3JpcHRDb3JlL0FycmF5QnVmZmVyLmg+CisjaW1wb3J0
IDxKYXZhU2NyaXB0Q29yZS9KU0FycmF5QnVmZmVyLmg+CisjaW1wb3J0IDxKYXZhU2NyaXB0Q29y
ZS9KU0NvbnRleHRSZWYuaD4KKyNpbXBvcnQgPEphdmFTY3JpcHRDb3JlL0pTT2JqZWN0UmVmLmg+
CisjaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5oPgorI2ltcG9ydCA8b2Jq
Yy9ydW50aW1lLmg+CisjaW1wb3J0IDxwYWwvY29jb2EvQVZGb3VuZGF0aW9uU29mdExpbmsuaD4K
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCisjaWYgSlNDX09CSkNfQVBJX0VOQUJMRUQKK3N0YXRp
YyBKU1ZhbHVlICpqc1ZhbHVlV2l0aERhdGFJbkNvbnRleHQoTlNEYXRhICosIEpTQ29udGV4dCAq
KTsKK3N0YXRpYyBKU1ZhbHVlICpqc1ZhbHVlV2l0aEFycmF5SW5Db250ZXh0KE5TQXJyYXkgKiwg
SlNDb250ZXh0ICopOworc3RhdGljIEpTVmFsdWUgKmpzVmFsdWVXaXRoRGljdGlvbmFyeUluQ29u
dGV4dChOU0RpY3Rpb25hcnkgKiwgSlNDb250ZXh0ICopOworc3RhdGljIEpTVmFsdWUgKmpzVmFs
dWVXaXRoQVZNZXRhZGF0YUl0ZW1JbkNvbnRleHQoQVZNZXRhZGF0YUl0ZW0gKiwgSlNDb250ZXh0
ICopOworc3RhdGljIEpTVmFsdWUgKmpzVmFsdWVXaXRoVmFsdWVJbkNvbnRleHQoaWQsIEpTQ29u
dGV4dCAqKTsKKyNlbmRpZgorCitTZXJpYWxpemVkUGxhdGZvcm1EYXRhQ3VlTWFjOjpTZXJpYWxp
emVkUGxhdGZvcm1EYXRhQ3VlTWFjKGlkIG5hdGl2ZVZhbHVlKQorICAgIDogU2VyaWFsaXplZFBs
YXRmb3JtRGF0YUN1ZSgpCisgICAgLCBtX25hdGl2ZVZhbHVlKG5hdGl2ZVZhbHVlKQoreworfQor
CitTZXJpYWxpemVkUGxhdGZvcm1EYXRhQ3VlTWFjOjp+U2VyaWFsaXplZFBsYXRmb3JtRGF0YUN1
ZU1hYygpCit7Cit9CisKK1JlZjxTZXJpYWxpemVkUGxhdGZvcm1EYXRhQ3VlPiBTZXJpYWxpemVk
UGxhdGZvcm1EYXRhQ3VlTWFjOjpjcmVhdGUoaWQgbmF0aXZlVmFsdWUpCit7CisgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgU2VyaWFsaXplZFBsYXRmb3JtRGF0YUN1ZU1hYyhuYXRpdmVWYWx1ZSkp
OworfQorCitSZWZQdHI8QXJyYXlCdWZmZXI+IFNlcmlhbGl6ZWRQbGF0Zm9ybURhdGFDdWVNYWM6
OmRhdGEoKSBjb25zdAoreworICAgIHJldHVybiBudWxscHRyOworfQorCitKU0M6OkpTVmFsdWUg
U2VyaWFsaXplZFBsYXRmb3JtRGF0YUN1ZU1hYzo6ZGVzZXJpYWxpemUoSlNDOjpKU0dsb2JhbE9i
amVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCkgY29uc3QKK3sKKyNpZiBKU0NfT0JKQ19BUElfRU5B
QkxFRAorICAgIGlmICghbV9uYXRpdmVWYWx1ZSkKKyAgICAgICAgcmV0dXJuIEpTQzo6anNOdWxs
KCk7CisKKyAgICBKU0dsb2JhbENvbnRleHRSZWYganNHbG9iYWxDb250ZXh0UmVmID0gdG9HbG9i
YWxSZWYobGV4aWNhbEdsb2JhbE9iamVjdCk7CisgICAgSlNDb250ZXh0ICpqc0NvbnRleHQgPSBb
SlNDb250ZXh0IGNvbnRleHRXaXRoSlNHbG9iYWxDb250ZXh0UmVmOmpzR2xvYmFsQ29udGV4dFJl
Zl07CisgICAgSlNWYWx1ZSAqc2VyaWFsaXplZFZhbHVlID0ganNWYWx1ZVdpdGhWYWx1ZUluQ29u
dGV4dChtX25hdGl2ZVZhbHVlLmdldCgpLCBqc0NvbnRleHQpOworCisgICAgcmV0dXJuIHRvSlMo
bGV4aWNhbEdsb2JhbE9iamVjdCwgW3NlcmlhbGl6ZWRWYWx1ZSBKU1ZhbHVlUmVmXSk7CisjZWxz
ZQorICAgIFVOVVNFRF9QQVJBTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKKyAgICByZXR1cm4gSlND
Ojpqc051bGwoKTsKKyNlbmRpZgorfQorCitib29sIFNlcmlhbGl6ZWRQbGF0Zm9ybURhdGFDdWVN
YWM6OmlzRXF1YWwoY29uc3QgU2VyaWFsaXplZFBsYXRmb3JtRGF0YUN1ZSYgb3RoZXIpIGNvbnN0
Cit7CisgICAgaWYgKG90aGVyLnBsYXRmb3JtVHlwZSgpICE9IFNlcmlhbGl6ZWRQbGF0Zm9ybURh
dGFDdWU6Ok9iakMpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGNvbnN0IFNlcmlhbGl6
ZWRQbGF0Zm9ybURhdGFDdWVNYWMqIG90aGVyT2JqQyA9IHRvU2VyaWFsaXplZFBsYXRmb3JtRGF0
YUN1ZU1hYygmb3RoZXIpOworCisgICAgaWYgKCFtX25hdGl2ZVZhbHVlIHx8ICFvdGhlck9iakMt
Pm5hdGl2ZVZhbHVlKCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiBbbV9u
YXRpdmVWYWx1ZS5nZXQoKSBpc0VxdWFsOm90aGVyT2JqQy0+bmF0aXZlVmFsdWUoKV07Cit9CisK
K1NlcmlhbGl6ZWRQbGF0Zm9ybURhdGFDdWVNYWMqIHRvU2VyaWFsaXplZFBsYXRmb3JtRGF0YUN1
ZU1hYyhTZXJpYWxpemVkUGxhdGZvcm1EYXRhQ3VlKiByZXApCit7CisgICAgcmV0dXJuIGNvbnN0
X2Nhc3Q8U2VyaWFsaXplZFBsYXRmb3JtRGF0YUN1ZU1hYyo+KHRvU2VyaWFsaXplZFBsYXRmb3Jt
RGF0YUN1ZU1hYyhjb25zdF9jYXN0PGNvbnN0IFNlcmlhbGl6ZWRQbGF0Zm9ybURhdGFDdWUqPihy
ZXApKSk7Cit9CisKK2NvbnN0IFNlcmlhbGl6ZWRQbGF0Zm9ybURhdGFDdWVNYWMqIHRvU2VyaWFs
aXplZFBsYXRmb3JtRGF0YUN1ZU1hYyhjb25zdCBTZXJpYWxpemVkUGxhdGZvcm1EYXRhQ3VlKiBy
ZXApCit7CisgICAgUkVMRUFTRV9BU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihyZXAt
PnBsYXRmb3JtVHlwZSgpID09IFNlcmlhbGl6ZWRQbGF0Zm9ybURhdGFDdWU6Ok9iakMpOworICAg
IHJldHVybiBzdGF0aWNfY2FzdDxjb25zdCBTZXJpYWxpemVkUGxhdGZvcm1EYXRhQ3VlTWFjKj4o
cmVwKTsKK30KKworI2lmIEpTQ19PQkpDX0FQSV9FTkFCTEVECitzdGF0aWMgSlNWYWx1ZSAqanNW
YWx1ZVdpdGhWYWx1ZUluQ29udGV4dChpZCB2YWx1ZSwgSlNDb250ZXh0ICpjb250ZXh0KQorewor
ICAgIGlmIChbdmFsdWUgaXNLaW5kT2ZDbGFzczpbTlNTdHJpbmcgY2xhc3NdXSB8fCBbdmFsdWUg
aXNLaW5kT2ZDbGFzczpbTlNOdW1iZXIgY2xhc3NdXSkKKyAgICAgICAgcmV0dXJuIFtKU1ZhbHVl
IHZhbHVlV2l0aE9iamVjdDp2YWx1ZSBpbkNvbnRleHQ6Y29udGV4dF07CisKKyAgICBpZiAoW3Zh
bHVlIGlzS2luZE9mQ2xhc3M6W05TTG9jYWxlIGNsYXNzXV0pCisgICAgICAgIHJldHVybiBbSlNW
YWx1ZSB2YWx1ZVdpdGhPYmplY3Q6W3ZhbHVlIGxvY2FsZUlkZW50aWZpZXJdIGluQ29udGV4dDpj
b250ZXh0XTsKKworICAgIGlmIChbdmFsdWUgaXNLaW5kT2ZDbGFzczpbTlNEaWN0aW9uYXJ5IGNs
YXNzXV0pCisgICAgICAgIHJldHVybiBqc1ZhbHVlV2l0aERpY3Rpb25hcnlJbkNvbnRleHQodmFs
dWUsIGNvbnRleHQpOworCisgICAgaWYgKFt2YWx1ZSBpc0tpbmRPZkNsYXNzOltOU0FycmF5IGNs
YXNzXV0pCisgICAgICAgIHJldHVybiBqc1ZhbHVlV2l0aEFycmF5SW5Db250ZXh0KHZhbHVlLCBj
b250ZXh0KTsKKworICAgIGlmIChbdmFsdWUgaXNLaW5kT2ZDbGFzczpbTlNEYXRhIGNsYXNzXV0p
CisgICAgICAgIHJldHVybiBqc1ZhbHVlV2l0aERhdGFJbkNvbnRleHQodmFsdWUsIGNvbnRleHQp
OworCisgICAgaWYgKFt2YWx1ZSBpc0tpbmRPZkNsYXNzOlBBTDo6Z2V0QVZNZXRhZGF0YUl0ZW1D
bGFzcygpXSkKKyAgICAgICAgcmV0dXJuIGpzVmFsdWVXaXRoQVZNZXRhZGF0YUl0ZW1JbkNvbnRl
eHQodmFsdWUsIGNvbnRleHQpOworCisgICAgcmV0dXJuIG5pbDsKK30KKworc3RhdGljIEpTVmFs
dWUgKmpzVmFsdWVXaXRoRGF0YUluQ29udGV4dChOU0RhdGEgKmRhdGEsIEpTQ29udGV4dCAqY29u
dGV4dCkKK3sKKyAgICBhdXRvIGRhdGFBcnJheSA9IEFycmF5QnVmZmVyOjp0cnlDcmVhdGUoW2Rh
dGEgYnl0ZXNdLCBbZGF0YSBsZW5ndGhdKTsKKworICAgIGF1dG8qIGxleGljYWxHbG9iYWxPYmpl
Y3QgPSB0b0pTKFtjb250ZXh0IEpTR2xvYmFsQ29udGV4dFJlZl0pOworICAgIEpTQzo6SlNWYWx1
ZSBhcnJheSA9IHRvSlMobGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpqc0Nhc3Q8SlNET01HbG9i
YWxPYmplY3QqPihsZXhpY2FsR2xvYmFsT2JqZWN0KSwgZGF0YUFycmF5LmdldCgpKTsKKworICAg
IHJldHVybiBbSlNWYWx1ZSB2YWx1ZVdpdGhKU1ZhbHVlUmVmOnRvUmVmKGxleGljYWxHbG9iYWxP
YmplY3QsIGFycmF5KSBpbkNvbnRleHQ6Y29udGV4dF07Cit9CisKK3N0YXRpYyBKU1ZhbHVlICpq
c1ZhbHVlV2l0aEFycmF5SW5Db250ZXh0KE5TQXJyYXkgKmFycmF5LCBKU0NvbnRleHQgKmNvbnRl
eHQpCit7CisgICAgSlNWYWx1ZVJlZiBleGNlcHRpb24gPSAwOworICAgIEpTVmFsdWUgKnJlc3Vs
dCA9IFtKU1ZhbHVlIHZhbHVlV2l0aE5ld0FycmF5SW5Db250ZXh0OmNvbnRleHRdOworICAgIEpT
T2JqZWN0UmVmIHJlc3VsdE9iamVjdCA9IEpTVmFsdWVUb09iamVjdChbY29udGV4dCBKU0dsb2Jh
bENvbnRleHRSZWZdLCBbcmVzdWx0IEpTVmFsdWVSZWZdLCAmZXhjZXB0aW9uKTsKKyAgICBpZiAo
ZXhjZXB0aW9uKQorICAgICAgICByZXR1cm4gW0pTVmFsdWUgdmFsdWVXaXRoVW5kZWZpbmVkSW5D
b250ZXh0OmNvbnRleHRdOworCisgICAgTlNVSW50ZWdlciBjb3VudCA9IFthcnJheSBjb3VudF07
CisgICAgZm9yIChOU1VJbnRlZ2VyIGkgPSAwOyBpIDwgY291bnQ7ICsraSkgeworICAgICAgICBK
U1ZhbHVlICp2YWx1ZSA9IGpzVmFsdWVXaXRoVmFsdWVJbkNvbnRleHQoW2FycmF5IG9iamVjdEF0
SW5kZXg6aV0sIGNvbnRleHQpOworICAgICAgICBpZiAoIXZhbHVlKQorICAgICAgICAgICAgY29u
dGludWU7CisKKyAgICAgICAgSlNPYmplY3RTZXRQcm9wZXJ0eUF0SW5kZXgoW2NvbnRleHQgSlNH
bG9iYWxDb250ZXh0UmVmXSwgcmVzdWx0T2JqZWN0LCAodW5zaWduZWQpaSwgW3ZhbHVlIEpTVmFs
dWVSZWZdLCAmZXhjZXB0aW9uKTsKKyAgICAgICAgaWYgKGV4Y2VwdGlvbikKKyAgICAgICAgICAg
IGNvbnRpbnVlOworICAgIH0KKworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3N0YXRpYyBKU1Zh
bHVlICpqc1ZhbHVlV2l0aERpY3Rpb25hcnlJbkNvbnRleHQoTlNEaWN0aW9uYXJ5ICpkaWN0aW9u
YXJ5LCBKU0NvbnRleHQgKmNvbnRleHQpCit7CisgICAgSlNWYWx1ZVJlZiBleGNlcHRpb24gPSAw
OworICAgIEpTVmFsdWUgKnJlc3VsdCA9IFtKU1ZhbHVlIHZhbHVlV2l0aE5ld09iamVjdEluQ29u
dGV4dDpjb250ZXh0XTsKKyAgICBKU09iamVjdFJlZiByZXN1bHRPYmplY3QgPSBKU1ZhbHVlVG9P
YmplY3QoW2NvbnRleHQgSlNHbG9iYWxDb250ZXh0UmVmXSwgW3Jlc3VsdCBKU1ZhbHVlUmVmXSwg
JmV4Y2VwdGlvbik7CisgICAgaWYgKGV4Y2VwdGlvbikKKyAgICAgICAgcmV0dXJuIFtKU1ZhbHVl
IHZhbHVlV2l0aFVuZGVmaW5lZEluQ29udGV4dDpjb250ZXh0XTsKKworICAgIGZvciAoaWQga2V5
IGluIFtkaWN0aW9uYXJ5IGtleUVudW1lcmF0b3JdKSB7CisgICAgICAgIGlmICghW2tleSBpc0tp
bmRPZkNsYXNzOltOU1N0cmluZyBjbGFzc11dKQorICAgICAgICAgICAgY29udGludWU7CisKKyAg
ICAgICAgSlNWYWx1ZSAqdmFsdWUgPSBqc1ZhbHVlV2l0aFZhbHVlSW5Db250ZXh0KFtkaWN0aW9u
YXJ5IG9iamVjdEZvcktleTprZXldLCBjb250ZXh0KTsKKyAgICAgICAgaWYgKCF2YWx1ZSkKKyAg
ICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIGF1dG8gbmFtZSA9IE9wYXF1ZUpTU3RyaW5n
Ojp0cnlDcmVhdGUoa2V5KTsKKyAgICAgICAgSlNPYmplY3RTZXRQcm9wZXJ0eShbY29udGV4dCBK
U0dsb2JhbENvbnRleHRSZWZdLCByZXN1bHRPYmplY3QsIG5hbWUuZ2V0KCksIFt2YWx1ZSBKU1Zh
bHVlUmVmXSwgMCwgJmV4Y2VwdGlvbik7CisgICAgICAgIGlmIChleGNlcHRpb24pCisgICAgICAg
ICAgICBjb250aW51ZTsKKyAgICB9CisKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitzdGF0aWMg
SlNWYWx1ZSAqanNWYWx1ZVdpdGhBVk1ldGFkYXRhSXRlbUluQ29udGV4dChBVk1ldGFkYXRhSXRl
bSAqaXRlbSwgSlNDb250ZXh0ICpjb250ZXh0KQoreworICAgIE5TTXV0YWJsZURpY3Rpb25hcnkg
KmRpY3Rpb25hcnkgPSBbTlNNdXRhYmxlRGljdGlvbmFyeSBkaWN0aW9uYXJ5XTsKKworICAgIE5T
RGljdGlvbmFyeSAqZXh0cmFzID0gW2l0ZW0gZXh0cmFBdHRyaWJ1dGVzXTsKKyAgICBmb3IgKGlk
IGtleSBpbiBbZXh0cmFzIGtleUVudW1lcmF0b3JdKSB7CisgICAgICAgIGlmICghW2tleSBpc0tp
bmRPZkNsYXNzOltOU1N0cmluZyBjbGFzc11dKQorICAgICAgICAgICAgY29udGludWU7CisgICAg
ICAgIGlkIHZhbHVlID0gW2V4dHJhcyBvYmplY3RGb3JLZXk6a2V5XTsKKyAgICAgICAgTlNTdHJp
bmcgKmtleVN0cmluZyA9IGtleTsKKworICAgICAgICBpZiAoW2tleSBpc0VxdWFsVG9TdHJpbmc6
QCJNSU1FdHlwZSJdKQorICAgICAgICAgICAga2V5U3RyaW5nID0gQCJ0eXBlIjsKKyAgICAgICAg
ZWxzZSBpZiAoW2tleSBpc0VxdWFsVG9TdHJpbmc6QCJkYXRhVHlwZU5hbWVzcGFjZSJdIHx8IFtr
ZXkgaXNFcXVhbFRvU3RyaW5nOkAicGljdHVyZVR5cGUiXSkKKyAgICAgICAgICAgIGNvbnRpbnVl
OworICAgICAgICBlbHNlIGlmIChba2V5IGlzRXF1YWxUb1N0cmluZzpAImRhdGFUeXBlIl0pIHsK
KyAgICAgICAgICAgIGlkIGRhdGFUeXBlTmFtZXNwYWNlID0gW2V4dHJhcyBvYmplY3RGb3JLZXk6
QCJkYXRhVHlwZU5hbWVzcGFjZSJdOworICAgICAgICAgICAgaWYgKCFkYXRhVHlwZU5hbWVzcGFj
ZSB8fCAhW2RhdGFUeXBlTmFtZXNwYWNlIGlzS2luZE9mQ2xhc3M6W05TU3RyaW5nIGNsYXNzXV0g
fHwgIVtkYXRhVHlwZU5hbWVzcGFjZSBpc0VxdWFsVG9TdHJpbmc6QCJvcmcuaWFuYS5tZWRpYS10
eXBlIl0pCisgICAgICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICBrZXlTdHJpbmcg
PSBAInR5cGUiOworICAgICAgICB9IGVsc2UgaWYgKFt2YWx1ZSBpc0tpbmRPZkNsYXNzOltOU1N0
cmluZyBjbGFzc11dKSB7CisgICAgICAgICAgICBpZiAoIVt2YWx1ZSBsZW5ndGhdKQorICAgICAg
ICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAga2V5U3RyaW5nID0gW2tleSBsb3dlcmNh
c2VTdHJpbmddOworICAgICAgICB9CisKKyAgICAgICAgW2RpY3Rpb25hcnkgc2V0T2JqZWN0OnZh
bHVlIGZvcktleTprZXlTdHJpbmddOworICAgIH0KKworICAgIGlmIChpdGVtLmtleSkKKyAgICAg
ICAgW2RpY3Rpb25hcnkgc2V0T2JqZWN0Oml0ZW0ua2V5IGZvcktleTpAImtleSJdOworCisgICAg
aWYgKGl0ZW0ubG9jYWxlKQorICAgICAgICBbZGljdGlvbmFyeSBzZXRPYmplY3Q6aXRlbS5sb2Nh
bGUgZm9yS2V5OkAibG9jYWxlIl07CisKKyAgICBpZiAoaXRlbS52YWx1ZSkKKyAgICAgICAgW2Rp
Y3Rpb25hcnkgc2V0T2JqZWN0Oml0ZW0udmFsdWUgZm9yS2V5OkAiZGF0YSJdOworCisgICAgcmV0
dXJuIGpzVmFsdWVXaXRoRGljdGlvbmFyeUluQ29udGV4dChkaWN0aW9uYXJ5LCBjb250ZXh0KTsK
K30KKyNlbmRpZgorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1NlcmlhbGl6ZWRQbGF0Zm9ybVJlcHJlc2Vu
dGF0aW9uTWFjLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2VyaWFsaXplZFBsYXRm
b3JtUmVwcmVzZW50YXRpb25NYWMuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmY1
NjRjYTM4ZDQxMDhkZWNmZTJkY2Y4MTBlNzQxNzA3NjcyMjE2Zi4uMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMv
U2VyaWFsaXplZFBsYXRmb3JtUmVwcmVzZW50YXRpb25NYWMuaAorKysgL2Rldi9udWxsCkBAIC0x
LDY1ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0
OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkg
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8g
RVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlks
IE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIFNlcmlhbGl6ZWRQbGF0Zm9ybVJlcHJl
c2VudGF0aW9uTWFjX2gKLSNkZWZpbmUgU2VyaWFsaXplZFBsYXRmb3JtUmVwcmVzZW50YXRpb25N
YWNfaAotCi0jaWYgRU5BQkxFKFZJREVPX1RSQUNLKSAmJiBFTkFCTEUoREFUQUNVRV9WQUxVRSkK
LQotI2luY2x1ZGUgIlNlcmlhbGl6ZWRQbGF0Zm9ybVJlcHJlc2VudGF0aW9uLmgiCi0KLSNpZiBV
U0UoRk9VTkRBVElPTikgJiYgIWRlZmluZWQoX19PQkpDX18pCi10eXBlZGVmIHN0cnVjdCBvYmpj
X29iamVjdCAqaWQ7Ci0jZW5kaWYKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBTZXJp
YWxpemVkUGxhdGZvcm1SZXByZXNlbnRhdGlvbk1hYyA6IHB1YmxpYyBTZXJpYWxpemVkUGxhdGZv
cm1SZXByZXNlbnRhdGlvbiB7Ci1wdWJsaWM6Ci0gICAgdmlydHVhbCB+U2VyaWFsaXplZFBsYXRm
b3JtUmVwcmVzZW50YXRpb25NYWMoKTsKLSAgICBzdGF0aWMgUmVmPFNlcmlhbGl6ZWRQbGF0Zm9y
bVJlcHJlc2VudGF0aW9uPiBjcmVhdGUoaWQpOwotCi0gICAgSlNDOjpKU1ZhbHVlIGRlc2VyaWFs
aXplKEpTQzo6SlNHbG9iYWxPYmplY3QqKSBjb25zdCBvdmVycmlkZTsKLSAgICBSZWZQdHI8QXJy
YXlCdWZmZXI+IGRhdGEoKSBjb25zdCBvdmVycmlkZTsKLQotICAgIGJvb2wgaXNFcXVhbChjb25z
dCBTZXJpYWxpemVkUGxhdGZvcm1SZXByZXNlbnRhdGlvbiYpIGNvbnN0IG92ZXJyaWRlOwotCi0g
ICAgUGxhdGZvcm1UeXBlIHBsYXRmb3JtVHlwZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFNl
cmlhbGl6ZWRQbGF0Zm9ybVJlcHJlc2VudGF0aW9uOjpPYmpDOyB9Ci0KLSAgICBpZCBuYXRpdmVW
YWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fbmF0aXZlVmFsdWUuZ2V0KCk7IH0KLQotcHJpdmF0ZToK
LSAgICBTZXJpYWxpemVkUGxhdGZvcm1SZXByZXNlbnRhdGlvbk1hYyhpZCBuYXRpdmVWYWx1ZSk7
Ci0KLSAgICBSZXRhaW5QdHI8aWQ+IG1fbmF0aXZlVmFsdWU7Ci19OwotCi1TZXJpYWxpemVkUGxh
dGZvcm1SZXByZXNlbnRhdGlvbk1hYyogdG9TZXJpYWxpemVkUGxhdGZvcm1SZXByZXNlbnRhdGlv
bk1hYyhTZXJpYWxpemVkUGxhdGZvcm1SZXByZXNlbnRhdGlvbiopOwotY29uc3QgU2VyaWFsaXpl
ZFBsYXRmb3JtUmVwcmVzZW50YXRpb25NYWMqIHRvU2VyaWFsaXplZFBsYXRmb3JtUmVwcmVzZW50
YXRpb25NYWMoY29uc3QgU2VyaWFsaXplZFBsYXRmb3JtUmVwcmVzZW50YXRpb24qKTsKLQotfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYKLSNlbmRpZiAvLyBTZXJpYWxpemVkUGxhdGZv
cm1SZXByZXNlbnRhdGlvbk1hY19oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tYWMvU2VyaWFsaXplZFBsYXRmb3JtUmVwcmVzZW50YXRpb25NYWMubW0gYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9tYWMvU2VyaWFsaXplZFBsYXRmb3JtUmVwcmVzZW50YXRpb25NYWMubW0K
ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVkNjRlMTEwYjFlM2IyZmVjYWM5MDExZTlm
N2JhZjlkMzg4YWJmZWEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1NlcmlhbGl6ZWRQbGF0Zm9ybVJlcHJl
c2VudGF0aW9uTWFjLm1tCisrKyAvZGV2L251bGwKQEAgLTEsMjQxICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTQsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgot
ICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
LSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBB
TkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQ
TEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4KLSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0KLSNpZiBFTkFCTEUoVklERU9fVFJBQ0sp
ICYmIEVOQUJMRShEQVRBQ1VFX1ZBTFVFKQotI2luY2x1ZGUgIlNlcmlhbGl6ZWRQbGF0Zm9ybVJl
cHJlc2VudGF0aW9uTWFjLmgiCi0KLSNpbXBvcnQgIkpTRE9NQ29udmVydEJ1ZmZlclNvdXJjZS5o
IgotI2ltcG9ydCA8QVZGb3VuZGF0aW9uL0FWTWV0YWRhdGFJdGVtLmg+Ci0jaW1wb3J0IDxGb3Vu
ZGF0aW9uL05TU3RyaW5nLmg+Ci0jaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9BUElDYXN0Lmg+Ci0j
aW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9BcnJheUJ1ZmZlci5oPgotI2ltcG9ydCA8SmF2YVNjcmlw
dENvcmUvSlNBcnJheUJ1ZmZlci5oPgotI2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvSlNDb250ZXh0
UmVmLmg+Ci0jaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9KU09iamVjdFJlZi5oPgotI2ltcG9ydCA8
SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuaD4KLSNpbXBvcnQgPG9iamMvcnVudGltZS5o
PgotI2ltcG9ydCA8d3RmL3RleHQvQmFzZTY0Lmg+Ci0KLSNpbXBvcnQgPHBhbC9jb2NvYS9BVkZv
dW5kYXRpb25Tb2Z0TGluay5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLSNpZiBKU0NfT0JK
Q19BUElfRU5BQkxFRAotc3RhdGljIEpTVmFsdWUgKmpzVmFsdWVXaXRoRGF0YUluQ29udGV4dChO
U0RhdGEgKiwgSlNDb250ZXh0ICopOwotc3RhdGljIEpTVmFsdWUgKmpzVmFsdWVXaXRoQXJyYXlJ
bkNvbnRleHQoTlNBcnJheSAqLCBKU0NvbnRleHQgKik7Ci1zdGF0aWMgSlNWYWx1ZSAqanNWYWx1
ZVdpdGhEaWN0aW9uYXJ5SW5Db250ZXh0KE5TRGljdGlvbmFyeSAqLCBKU0NvbnRleHQgKik7Ci1z
dGF0aWMgSlNWYWx1ZSAqanNWYWx1ZVdpdGhBVk1ldGFkYXRhSXRlbUluQ29udGV4dChBVk1ldGFk
YXRhSXRlbSAqLCBKU0NvbnRleHQgKik7Ci1zdGF0aWMgSlNWYWx1ZSAqanNWYWx1ZVdpdGhWYWx1
ZUluQ29udGV4dChpZCwgSlNDb250ZXh0ICopOwotI2VuZGlmCi0KLVNlcmlhbGl6ZWRQbGF0Zm9y
bVJlcHJlc2VudGF0aW9uTWFjOjpTZXJpYWxpemVkUGxhdGZvcm1SZXByZXNlbnRhdGlvbk1hYyhp
ZCBuYXRpdmVWYWx1ZSkKLSAgICA6IFNlcmlhbGl6ZWRQbGF0Zm9ybVJlcHJlc2VudGF0aW9uKCkK
LSAgICAsIG1fbmF0aXZlVmFsdWUobmF0aXZlVmFsdWUpCi17Ci19Ci0KLVNlcmlhbGl6ZWRQbGF0
Zm9ybVJlcHJlc2VudGF0aW9uTWFjOjp+U2VyaWFsaXplZFBsYXRmb3JtUmVwcmVzZW50YXRpb25N
YWMoKQotewotfQotCi1SZWY8U2VyaWFsaXplZFBsYXRmb3JtUmVwcmVzZW50YXRpb24+IFNlcmlh
bGl6ZWRQbGF0Zm9ybVJlcHJlc2VudGF0aW9uTWFjOjpjcmVhdGUoaWQgbmF0aXZlVmFsdWUpCi17
Ci0gICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgU2VyaWFsaXplZFBsYXRmb3JtUmVwcmVzZW50YXRp
b25NYWMobmF0aXZlVmFsdWUpKTsKLX0KLQotUmVmUHRyPEFycmF5QnVmZmVyPiBTZXJpYWxpemVk
UGxhdGZvcm1SZXByZXNlbnRhdGlvbk1hYzo6ZGF0YSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG51
bGxwdHI7Ci19Ci0KLUpTQzo6SlNWYWx1ZSBTZXJpYWxpemVkUGxhdGZvcm1SZXByZXNlbnRhdGlv
bk1hYzo6ZGVzZXJpYWxpemUoSlNDOjpKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVj
dCkgY29uc3QKLXsKLSNpZiBKU0NfT0JKQ19BUElfRU5BQkxFRAotICAgIGlmICghbV9uYXRpdmVW
YWx1ZSkKLSAgICAgICAgcmV0dXJuIEpTQzo6anNOdWxsKCk7Ci0KLSAgICBKU0dsb2JhbENvbnRl
eHRSZWYganNHbG9iYWxDb250ZXh0UmVmID0gdG9HbG9iYWxSZWYobGV4aWNhbEdsb2JhbE9iamVj
dCk7Ci0gICAgSlNDb250ZXh0ICpqc0NvbnRleHQgPSBbSlNDb250ZXh0IGNvbnRleHRXaXRoSlNH
bG9iYWxDb250ZXh0UmVmOmpzR2xvYmFsQ29udGV4dFJlZl07Ci0gICAgSlNWYWx1ZSAqc2VyaWFs
aXplZFZhbHVlID0ganNWYWx1ZVdpdGhWYWx1ZUluQ29udGV4dChtX25hdGl2ZVZhbHVlLmdldCgp
LCBqc0NvbnRleHQpOwotCi0gICAgcmV0dXJuIHRvSlMobGV4aWNhbEdsb2JhbE9iamVjdCwgW3Nl
cmlhbGl6ZWRWYWx1ZSBKU1ZhbHVlUmVmXSk7Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTShsZXhp
Y2FsR2xvYmFsT2JqZWN0KTsKLSAgICByZXR1cm4gSlNDOjpqc051bGwoKTsKLSNlbmRpZgotfQot
Ci1ib29sIFNlcmlhbGl6ZWRQbGF0Zm9ybVJlcHJlc2VudGF0aW9uTWFjOjppc0VxdWFsKGNvbnN0
IFNlcmlhbGl6ZWRQbGF0Zm9ybVJlcHJlc2VudGF0aW9uJiBvdGhlcikgY29uc3QKLXsKLSAgICBp
ZiAob3RoZXIucGxhdGZvcm1UeXBlKCkgIT0gU2VyaWFsaXplZFBsYXRmb3JtUmVwcmVzZW50YXRp
b246Ok9iakMpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGNvbnN0IFNlcmlhbGl6ZWRQ
bGF0Zm9ybVJlcHJlc2VudGF0aW9uTWFjKiBvdGhlck9iakMgPSB0b1NlcmlhbGl6ZWRQbGF0Zm9y
bVJlcHJlc2VudGF0aW9uTWFjKCZvdGhlcik7Ci0KLSAgICBpZiAoIW1fbmF0aXZlVmFsdWUgfHwg
IW90aGVyT2JqQy0+bmF0aXZlVmFsdWUoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAg
cmV0dXJuIFttX25hdGl2ZVZhbHVlLmdldCgpIGlzRXF1YWw6b3RoZXJPYmpDLT5uYXRpdmVWYWx1
ZSgpXTsKLX0KLQotU2VyaWFsaXplZFBsYXRmb3JtUmVwcmVzZW50YXRpb25NYWMqIHRvU2VyaWFs
aXplZFBsYXRmb3JtUmVwcmVzZW50YXRpb25NYWMoU2VyaWFsaXplZFBsYXRmb3JtUmVwcmVzZW50
YXRpb24qIHJlcCkKLXsKLSAgICByZXR1cm4gY29uc3RfY2FzdDxTZXJpYWxpemVkUGxhdGZvcm1S
ZXByZXNlbnRhdGlvbk1hYyo+KHRvU2VyaWFsaXplZFBsYXRmb3JtUmVwcmVzZW50YXRpb25NYWMo
Y29uc3RfY2FzdDxjb25zdCBTZXJpYWxpemVkUGxhdGZvcm1SZXByZXNlbnRhdGlvbio+KHJlcCkp
KTsKLX0KLQotY29uc3QgU2VyaWFsaXplZFBsYXRmb3JtUmVwcmVzZW50YXRpb25NYWMqIHRvU2Vy
aWFsaXplZFBsYXRmb3JtUmVwcmVzZW50YXRpb25NYWMoY29uc3QgU2VyaWFsaXplZFBsYXRmb3Jt
UmVwcmVzZW50YXRpb24qIHJlcCkKLXsKLSAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNB
VElPTihyZXAtPnBsYXRmb3JtVHlwZSgpID09IFNlcmlhbGl6ZWRQbGF0Zm9ybVJlcHJlc2VudGF0
aW9uOjpPYmpDKTsKLSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgU2VyaWFsaXplZFBsYXRm
b3JtUmVwcmVzZW50YXRpb25NYWMqPihyZXApOwotfQotCi0jaWYgSlNDX09CSkNfQVBJX0VOQUJM
RUQKLXN0YXRpYyBKU1ZhbHVlICpqc1ZhbHVlV2l0aFZhbHVlSW5Db250ZXh0KGlkIHZhbHVlLCBK
U0NvbnRleHQgKmNvbnRleHQpCi17Ci0gICAgaWYgKFt2YWx1ZSBpc0tpbmRPZkNsYXNzOltOU1N0
cmluZyBjbGFzc11dIHx8IFt2YWx1ZSBpc0tpbmRPZkNsYXNzOltOU051bWJlciBjbGFzc11dKQot
ICAgICAgICByZXR1cm4gW0pTVmFsdWUgdmFsdWVXaXRoT2JqZWN0OnZhbHVlIGluQ29udGV4dDpj
b250ZXh0XTsKLQotICAgIGlmIChbdmFsdWUgaXNLaW5kT2ZDbGFzczpbTlNMb2NhbGUgY2xhc3Nd
XSkKLSAgICAgICAgcmV0dXJuIFtKU1ZhbHVlIHZhbHVlV2l0aE9iamVjdDpbdmFsdWUgbG9jYWxl
SWRlbnRpZmllcl0gaW5Db250ZXh0OmNvbnRleHRdOwotCi0gICAgaWYgKFt2YWx1ZSBpc0tpbmRP
ZkNsYXNzOltOU0RpY3Rpb25hcnkgY2xhc3NdXSkKLSAgICAgICAgcmV0dXJuIGpzVmFsdWVXaXRo
RGljdGlvbmFyeUluQ29udGV4dCh2YWx1ZSwgY29udGV4dCk7Ci0KLSAgICBpZiAoW3ZhbHVlIGlz
S2luZE9mQ2xhc3M6W05TQXJyYXkgY2xhc3NdXSkKLSAgICAgICAgcmV0dXJuIGpzVmFsdWVXaXRo
QXJyYXlJbkNvbnRleHQodmFsdWUsIGNvbnRleHQpOwotCi0gICAgaWYgKFt2YWx1ZSBpc0tpbmRP
ZkNsYXNzOltOU0RhdGEgY2xhc3NdXSkKLSAgICAgICAgcmV0dXJuIGpzVmFsdWVXaXRoRGF0YUlu
Q29udGV4dCh2YWx1ZSwgY29udGV4dCk7Ci0KLSAgICBpZiAoW3ZhbHVlIGlzS2luZE9mQ2xhc3M6
UEFMOjpnZXRBVk1ldGFkYXRhSXRlbUNsYXNzKCldKQotICAgICAgICByZXR1cm4ganNWYWx1ZVdp
dGhBVk1ldGFkYXRhSXRlbUluQ29udGV4dCh2YWx1ZSwgY29udGV4dCk7Ci0KLSAgICByZXR1cm4g
bmlsOwotfQotCi1zdGF0aWMgSlNWYWx1ZSAqanNWYWx1ZVdpdGhEYXRhSW5Db250ZXh0KE5TRGF0
YSAqZGF0YSwgSlNDb250ZXh0ICpjb250ZXh0KQotewotICAgIGF1dG8gZGF0YUFycmF5ID0gQXJy
YXlCdWZmZXI6OnRyeUNyZWF0ZShbZGF0YSBieXRlc10sIFtkYXRhIGxlbmd0aF0pOwotCi0gICAg
YXV0byogbGV4aWNhbEdsb2JhbE9iamVjdCA9IHRvSlMoW2NvbnRleHQgSlNHbG9iYWxDb250ZXh0
UmVmXSk7Ci0gICAgSlNDOjpKU1ZhbHVlIGFycmF5ID0gdG9KUyhsZXhpY2FsR2xvYmFsT2JqZWN0
LCBKU0M6OmpzQ2FzdDxKU0RPTUdsb2JhbE9iamVjdCo+KGxleGljYWxHbG9iYWxPYmplY3QpLCBk
YXRhQXJyYXkuZ2V0KCkpOwotCi0gICAgcmV0dXJuIFtKU1ZhbHVlIHZhbHVlV2l0aEpTVmFsdWVS
ZWY6dG9SZWYobGV4aWNhbEdsb2JhbE9iamVjdCwgYXJyYXkpIGluQ29udGV4dDpjb250ZXh0XTsK
LX0KLQotc3RhdGljIEpTVmFsdWUgKmpzVmFsdWVXaXRoQXJyYXlJbkNvbnRleHQoTlNBcnJheSAq
YXJyYXksIEpTQ29udGV4dCAqY29udGV4dCkKLXsKLSAgICBKU1ZhbHVlUmVmIGV4Y2VwdGlvbiA9
IDA7Ci0gICAgSlNWYWx1ZSAqcmVzdWx0ID0gW0pTVmFsdWUgdmFsdWVXaXRoTmV3QXJyYXlJbkNv
bnRleHQ6Y29udGV4dF07Ci0gICAgSlNPYmplY3RSZWYgcmVzdWx0T2JqZWN0ID0gSlNWYWx1ZVRv
T2JqZWN0KFtjb250ZXh0IEpTR2xvYmFsQ29udGV4dFJlZl0sIFtyZXN1bHQgSlNWYWx1ZVJlZl0s
ICZleGNlcHRpb24pOwotICAgIGlmIChleGNlcHRpb24pCi0gICAgICAgIHJldHVybiBbSlNWYWx1
ZSB2YWx1ZVdpdGhVbmRlZmluZWRJbkNvbnRleHQ6Y29udGV4dF07Ci0KLSAgICBOU1VJbnRlZ2Vy
IGNvdW50ID0gW2FycmF5IGNvdW50XTsKLSAgICBmb3IgKE5TVUludGVnZXIgaSA9IDA7IGkgPCBj
b3VudDsgKytpKSB7Ci0gICAgICAgIEpTVmFsdWUgKnZhbHVlID0ganNWYWx1ZVdpdGhWYWx1ZUlu
Q29udGV4dChbYXJyYXkgb2JqZWN0QXRJbmRleDppXSwgY29udGV4dCk7Ci0gICAgICAgIGlmICgh
dmFsdWUpCi0gICAgICAgICAgICBjb250aW51ZTsKLQotICAgICAgICBKU09iamVjdFNldFByb3Bl
cnR5QXRJbmRleChbY29udGV4dCBKU0dsb2JhbENvbnRleHRSZWZdLCByZXN1bHRPYmplY3QsICh1
bnNpZ25lZClpLCBbdmFsdWUgSlNWYWx1ZVJlZl0sICZleGNlcHRpb24pOwotICAgICAgICBpZiAo
ZXhjZXB0aW9uKQotICAgICAgICAgICAgY29udGludWU7Ci0gICAgfQotCi0gICAgcmV0dXJuIHJl
c3VsdDsKLX0KLQotc3RhdGljIEpTVmFsdWUgKmpzVmFsdWVXaXRoRGljdGlvbmFyeUluQ29udGV4
dChOU0RpY3Rpb25hcnkgKmRpY3Rpb25hcnksIEpTQ29udGV4dCAqY29udGV4dCkKLXsKLSAgICBK
U1ZhbHVlUmVmIGV4Y2VwdGlvbiA9IDA7Ci0gICAgSlNWYWx1ZSAqcmVzdWx0ID0gW0pTVmFsdWUg
dmFsdWVXaXRoTmV3T2JqZWN0SW5Db250ZXh0OmNvbnRleHRdOwotICAgIEpTT2JqZWN0UmVmIHJl
c3VsdE9iamVjdCA9IEpTVmFsdWVUb09iamVjdChbY29udGV4dCBKU0dsb2JhbENvbnRleHRSZWZd
LCBbcmVzdWx0IEpTVmFsdWVSZWZdLCAmZXhjZXB0aW9uKTsKLSAgICBpZiAoZXhjZXB0aW9uKQot
ICAgICAgICByZXR1cm4gW0pTVmFsdWUgdmFsdWVXaXRoVW5kZWZpbmVkSW5Db250ZXh0OmNvbnRl
eHRdOwotCi0gICAgZm9yIChpZCBrZXkgaW4gW2RpY3Rpb25hcnkga2V5RW51bWVyYXRvcl0pIHsK
LSAgICAgICAgaWYgKCFba2V5IGlzS2luZE9mQ2xhc3M6W05TU3RyaW5nIGNsYXNzXV0pCi0gICAg
ICAgICAgICBjb250aW51ZTsKLQotICAgICAgICBKU1ZhbHVlICp2YWx1ZSA9IGpzVmFsdWVXaXRo
VmFsdWVJbkNvbnRleHQoW2RpY3Rpb25hcnkgb2JqZWN0Rm9yS2V5OmtleV0sIGNvbnRleHQpOwot
ICAgICAgICBpZiAoIXZhbHVlKQotICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAgYXV0
byBuYW1lID0gT3BhcXVlSlNTdHJpbmc6OnRyeUNyZWF0ZShrZXkpOwotICAgICAgICBKU09iamVj
dFNldFByb3BlcnR5KFtjb250ZXh0IEpTR2xvYmFsQ29udGV4dFJlZl0sIHJlc3VsdE9iamVjdCwg
bmFtZS5nZXQoKSwgW3ZhbHVlIEpTVmFsdWVSZWZdLCAwLCAmZXhjZXB0aW9uKTsKLSAgICAgICAg
aWYgKGV4Y2VwdGlvbikKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgIH0KLQotICAgIHJldHVy
biByZXN1bHQ7Ci19Ci0KLXN0YXRpYyBKU1ZhbHVlICpqc1ZhbHVlV2l0aEFWTWV0YWRhdGFJdGVt
SW5Db250ZXh0KEFWTWV0YWRhdGFJdGVtICppdGVtLCBKU0NvbnRleHQgKmNvbnRleHQpCi17Ci0g
ICAgTlNNdXRhYmxlRGljdGlvbmFyeSAqZGljdGlvbmFyeSA9IFtOU011dGFibGVEaWN0aW9uYXJ5
IGRpY3Rpb25hcnldOwotCi0gICAgTlNEaWN0aW9uYXJ5ICpleHRyYXMgPSBbaXRlbSBleHRyYUF0
dHJpYnV0ZXNdOwotICAgIGZvciAoaWQga2V5IGluIFtleHRyYXMga2V5RW51bWVyYXRvcl0pIHsK
LSAgICAgICAgaWYgKCFba2V5IGlzS2luZE9mQ2xhc3M6W05TU3RyaW5nIGNsYXNzXV0pCi0gICAg
ICAgICAgICBjb250aW51ZTsKLSAgICAgICAgaWQgdmFsdWUgPSBbZXh0cmFzIG9iamVjdEZvcktl
eTprZXldOwotICAgICAgICBOU1N0cmluZyAqa2V5U3RyaW5nID0ga2V5OwotCi0gICAgICAgIGlm
IChba2V5IGlzRXF1YWxUb1N0cmluZzpAIk1JTUV0eXBlIl0pCi0gICAgICAgICAgICBrZXlTdHJp
bmcgPSBAInR5cGUiOwotICAgICAgICBlbHNlIGlmIChba2V5IGlzRXF1YWxUb1N0cmluZzpAImRh
dGFUeXBlTmFtZXNwYWNlIl0gfHwgW2tleSBpc0VxdWFsVG9TdHJpbmc6QCJwaWN0dXJlVHlwZSJd
KQotICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIGVsc2UgaWYgKFtrZXkgaXNFcXVhbFRv
U3RyaW5nOkAiZGF0YVR5cGUiXSkgewotICAgICAgICAgICAgaWQgZGF0YVR5cGVOYW1lc3BhY2Ug
PSBbZXh0cmFzIG9iamVjdEZvcktleTpAImRhdGFUeXBlTmFtZXNwYWNlIl07Ci0gICAgICAgICAg
ICBpZiAoIWRhdGFUeXBlTmFtZXNwYWNlIHx8ICFbZGF0YVR5cGVOYW1lc3BhY2UgaXNLaW5kT2ZD
bGFzczpbTlNTdHJpbmcgY2xhc3NdXSB8fCAhW2RhdGFUeXBlTmFtZXNwYWNlIGlzRXF1YWxUb1N0
cmluZzpAIm9yZy5pYW5hLm1lZGlhLXR5cGUiXSkKLSAgICAgICAgICAgICAgICBjb250aW51ZTsK
LSAgICAgICAgICAgIGtleVN0cmluZyA9IEAidHlwZSI7Ci0gICAgICAgIH0gZWxzZSBpZiAoW3Zh
bHVlIGlzS2luZE9mQ2xhc3M6W05TU3RyaW5nIGNsYXNzXV0pIHsKLSAgICAgICAgICAgIGlmICgh
W3ZhbHVlIGxlbmd0aF0pCi0gICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICBr
ZXlTdHJpbmcgPSBba2V5IGxvd2VyY2FzZVN0cmluZ107Ci0gICAgICAgIH0KLQotICAgICAgICBb
ZGljdGlvbmFyeSBzZXRPYmplY3Q6dmFsdWUgZm9yS2V5OmtleVN0cmluZ107Ci0gICAgfQotCi0g
ICAgaWYgKGl0ZW0ua2V5KQotICAgICAgICBbZGljdGlvbmFyeSBzZXRPYmplY3Q6aXRlbS5rZXkg
Zm9yS2V5OkAia2V5Il07Ci0KLSAgICBpZiAoaXRlbS5sb2NhbGUpCi0gICAgICAgIFtkaWN0aW9u
YXJ5IHNldE9iamVjdDppdGVtLmxvY2FsZSBmb3JLZXk6QCJsb2NhbGUiXTsKLQotICAgIGlmIChp
dGVtLnZhbHVlKQotICAgICAgICBbZGljdGlvbmFyeSBzZXRPYmplY3Q6aXRlbS52YWx1ZSBmb3JL
ZXk6QCJkYXRhIl07Ci0KLSAgICByZXR1cm4ganNWYWx1ZVdpdGhEaWN0aW9uYXJ5SW5Db250ZXh0
KGRpY3Rpb25hcnksIGNvbnRleHQpOwotfQotI2VuZGlmCi0KLX0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKLQotI2VuZGlmCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>390647</attachid>
            <date>2020-02-13 08:25:34 -0800</date>
            <delta_ts>2020-02-13 08:41:01 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-207695-20200213082533.patch</filename>
            <type>text/plain</type>
            <size>60282</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU2NTA0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzljYzc5MDhlOTUyOWFj
YWRmOWRjNmVkOTFlZTQ0MzI5ODIxMmQzMy4uOWQ0ZGM2N2NkZWY0MGE0NTMyMjEzMTQ3Njg1ZTUy
ODc4NDRhZmI4MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ5IEBACisyMDIwLTAyLTEzICBFcmlj
IENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIFJlbmFtZSBTZXJp
YWxpemVkUGxhdGZvcm1SZXByZXNlbnRhdGlvbiB0byBTZXJpYWxpemVkUGxhdGZvcm1EYXRhQ3Vl
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDc2OTUK
KyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU5NDIyNjczPgorCisgICAgICAgIFJldmlld2VkIGJ5
IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cywgbm8gZnVuY3Rpb25hbCBj
aGFuZ2UuCisKKyAgICAgICAgKiBTb3VyY2VzQ29jb2EudHh0OgorICAgICAgICAqIFdlYkNvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBodG1sL3RyYWNrL0RhdGFDdWUu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6RGF0YUN1ZTo6RGF0YUN1ZSk6CisgICAgICAgIChXZWJD
b3JlOjpEYXRhQ3VlOjpjdWVDb250ZW50c01hdGNoIGNvbnN0KToKKyAgICAgICAgKiBodG1sL3Ry
YWNrL0RhdGFDdWUuaDoKKyAgICAgICAgKiBodG1sL3RyYWNrL0luYmFuZERhdGFUZXh0VHJhY2su
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5iYW5kRGF0YVRleHRUcmFjazo6YWRkRGF0YUN1ZSk6
CisgICAgICAgIChXZWJDb3JlOjpJbmJhbmREYXRhVGV4dFRyYWNrOjp1cGRhdGVEYXRhQ3VlKToK
KyAgICAgICAgKFdlYkNvcmU6OkluYmFuZERhdGFUZXh0VHJhY2s6OnJlbW92ZURhdGFDdWUpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5iYW5kRGF0YVRleHRUcmFjazo6cmVtb3ZlQ3VlKToKKyAgICAg
ICAgKiBodG1sL3RyYWNrL0luYmFuZERhdGFUZXh0VHJhY2suaDoKKyAgICAgICAgKiBodG1sL3Ry
YWNrL0luYmFuZFRleHRUcmFjay5oOgorICAgICAgICAqIHBsYXRmb3JtL1NlcmlhbGl6ZWRQbGF0
Zm9ybURhdGFDdWUuaDogUmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Nlcmlh
bGl6ZWRQbGF0Zm9ybVJlcHJlc2VudGF0aW9uLmguCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUNsaWVudC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9JbmJhbmRNZXRhZGF0YVRleHRUcmFja1ByaXZhdGVBVkYuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6SW5iYW5kTWV0YWRhdGFUZXh0VHJhY2tQcml2YXRlQVZGOjph
ZGREYXRhQ3VlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vSW5i
YW5kTWV0YWRhdGFUZXh0VHJhY2tQcml2YXRlQVZGLmg6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2Jq
Qy5tbToKKyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9i
akM6Om1ldGFkYXRhRGlkQXJyaXZlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvU2VyaWFsaXpl
ZFBsYXRmb3JtRGF0YUN1ZU1hYy5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vbWFjL1NlcmlhbGl6ZWRQbGF0Zm9ybVJlcHJlc2VudGF0aW9uTWFjLmguCisgICAgICAgIChX
ZWJDb3JlOjpTZXJpYWxpemVkUGxhdGZvcm1EYXRhQ3VlTWFjOjpuYXRpdmVWYWx1ZSBjb25zdCk6
CisgICAgICAgICogcGxhdGZvcm0vbWFjL1NlcmlhbGl6ZWRQbGF0Zm9ybURhdGFDdWVNYWMubW06
IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2VyaWFsaXplZFBsYXRm
b3JtUmVwcmVzZW50YXRpb25NYWMubW0uCisgICAgICAgIChXZWJDb3JlOjpTZXJpYWxpemVkUGxh
dGZvcm1EYXRhQ3VlTWFjOjpTZXJpYWxpemVkUGxhdGZvcm1EYXRhQ3VlTWFjKToKKyAgICAgICAg
KFdlYkNvcmU6OlNlcmlhbGl6ZWRQbGF0Zm9ybURhdGFDdWVNYWM6On5TZXJpYWxpemVkUGxhdGZv
cm1EYXRhQ3VlTWFjKToKKyAgICAgICAgKFdlYkNvcmU6OlNlcmlhbGl6ZWRQbGF0Zm9ybURhdGFD
dWVNYWM6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTZXJpYWxpemVkUGxhdGZvcm1EYXRh
Q3VlTWFjOjpkYXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNlcmlhbGl6ZWRQbGF0Zm9y
bURhdGFDdWVNYWM6OmRlc2VyaWFsaXplIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlNlcmlh
bGl6ZWRQbGF0Zm9ybURhdGFDdWVNYWM6OmlzRXF1YWwgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6dG9TZXJpYWxpemVkUGxhdGZvcm1EYXRhQ3VlTWFjKToKKyAgICAgICAgKFdlYkNvcmU6Ompz
VmFsdWVXaXRoVmFsdWVJbkNvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6anNWYWx1ZVdpdGhE
YXRhSW5Db250ZXh0KToKKyAgICAgICAgKFdlYkNvcmU6OmpzVmFsdWVXaXRoQXJyYXlJbkNvbnRl
eHQpOgorICAgICAgICAoV2ViQ29yZTo6anNWYWx1ZVdpdGhEaWN0aW9uYXJ5SW5Db250ZXh0KToK
KyAgICAgICAgKFdlYkNvcmU6OmpzVmFsdWVXaXRoQVZNZXRhZGF0YUl0ZW1JbkNvbnRleHQpOgor
CiAyMDIwLTAyLTEyICBZb3NoaWFraSBKaXRzdWthd2EgIDx5b3NoaWFraS5qaXRzdWthd2FAc29u
eS5jb20+CiAKICAgICAgICAgW1dlYkNyeXB0b11bQ29tbW9uQ3J5cHRvXSBJbmNvcnJlY3QgQUVT
LUNUUiB3aXRoIGNvdW50ZXJMZW5ndGggbG9uZ2VyIHRoYW4gNjQKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzQ29jb2Eu
dHh0CmluZGV4IGFiM2E1Nzk0OTBjOTNhYTUyMzBhNjRjZThiMzg5NmM5YjkxMGQyODUuLmEwNWUw
MWNkZWYyY2ZmMTZhYjgzYzVkNGYwNjE2YjBjYzUxNmRlNDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvU291cmNlc0NvY29h
LnR4dApAQCAtNDYzLDcgKzQ2Myw3IEBAIHBsYXRmb3JtL21hYy9TU0xLZXlHZW5lcmF0b3JNYWMu
bW0KIHBsYXRmb3JtL21hYy9TY3JvbGxBbmltYXRvck1hYy5tbSBAbm8tdW5pZnkKIHBsYXRmb3Jt
L21hYy9TY3JvbGxWaWV3TWFjLm1tCiBwbGF0Zm9ybS9tYWMvU2Nyb2xsYmFyVGhlbWVNYWMubW0g
QG5vLXVuaWZ5Ci1wbGF0Zm9ybS9tYWMvU2VyaWFsaXplZFBsYXRmb3JtUmVwcmVzZW50YXRpb25N
YWMubW0KK3BsYXRmb3JtL21hYy9TZXJpYWxpemVkUGxhdGZvcm1EYXRhQ3VlTWFjLm1tCiBwbGF0
Zm9ybS9tYWMvU3RyaW5nVXRpbGl0aWVzLm1tCiBwbGF0Zm9ybS9tYWMvU3VkZGVuVGVybWluYXRp
b24ubW0KIHBsYXRmb3JtL21hYy9UaGVtZU1hYy5tbQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDVmYWQ1YzE5YjhlOGQ2NWRmMjlk
ZDJhMWY1NTNmN2Y2ZTJmMjliMzkuLjFiM2QyOGEyZjYyNGQwMGY3OGEwNjBmNTY1MjFiODU4MjUx
MmZjMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0
LnBieHByb2oKQEAgLTEzNyw4ICsxMzcsOCBAQAogCQkwNzY5NzA4NzE0NjNBRDg3MDBGNTAyQ0Yg
LyogVGV4dFRyYWNrTGlzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gMDc2OTcwODUxNDYzQUQ4NzAwRjUwMkNGIC8qIFRleHRUcmFja0xpc3QuaCAqLzsg
fTsKIAkJMDc2RjBEMEUxMkI4MTkyNzAwQzI2QUE0IC8qIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91
bmRhdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
MDc2RjBEMEExMkI4MTkyNzAwQzI2QUE0IC8qIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlv
bi5oICovOyB9OwogCQkwNzc2NjRGRDE4M0U2QjVDMDAxMzNCOTIgLyogSlNRdWlja1RpbWVQbHVn
aW5SZXBsYWNlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMDc3NjY0RkIxODNFNkI1QzAwMTMzQjkyIC8qIEpTUXVpY2tUaW1lUGx1Z2luUmVwbGFj
ZW1lbnQuaCAqLzsgfTsKLQkJMDc3QUYxNDAxOEY0QUU0MDAwMDFFRDYxIC8qIFNlcmlhbGl6ZWRQ
bGF0Zm9ybVJlcHJlc2VudGF0aW9uLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZp
bGU7IGZpbGVSZWYgPSAwNzdBRjEzRTE4RjRBRTQwMDAwMUVENjEgLyogU2VyaWFsaXplZFBsYXRm
b3JtUmVwcmVzZW50YXRpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OwotCQkwNzdBRjE0MzE4RjRCMUJCMDAwMUVENjEgLyogU2VyaWFsaXplZFBsYXRm
b3JtUmVwcmVzZW50YXRpb25NYWMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDA3N0FGMTQxMThGNEIxQkIwMDAxRUQ2MSAvKiBTZXJpYWxpemVkUGxhdGZv
cm1SZXByZXNlbnRhdGlvbk1hYy5oICovOyB9OworCQkwNzdBRjE0MDE4RjRBRTQwMDAwMUVENjEg
LyogU2VyaWFsaXplZFBsYXRmb3JtRGF0YUN1ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gMDc3QUYxM0UxOEY0QUU0MDAwMDFFRDYxIC8qIFNlcmlhbGl6
ZWRQbGF0Zm9ybURhdGFDdWUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRl
LCApOyB9OyB9OworCQkwNzdBRjE0MzE4RjRCMUJCMDAwMUVENjEgLyogU2VyaWFsaXplZFBsYXRm
b3JtRGF0YUN1ZU1hYy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gMDc3QUYxNDExOEY0QjFCQjAwMDFFRDYxIC8qIFNlcmlhbGl6ZWRQbGF0Zm9ybURhdGFD
dWVNYWMuaCAqLzsgfTsKIAkJMDc3QjY0MTMxQjk0RjEyRTAwM0U5QUQ1IC8qIE1lZGlhUGxheWJh
Y2tUYXJnZXRQaWNrZXJNb2NrLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7
IGZpbGVSZWYgPSAwNzdCNjQxMTFCOTRGMTJFMDAzRTlBRDUgLyogTWVkaWFQbGF5YmFja1Rhcmdl
dFBpY2tlck1vY2suaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9
OyB9OwogCQkwNzdCNjQxNzFCOTVGNzAzMDAzRTlBRDUgLyogTWVkaWFQbGF5YmFja1RhcmdldE1v
Y2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3N0I2
NDE1MUI5NUY3MDMwMDNFOUFENSAvKiBNZWRpYVBsYXliYWNrVGFyZ2V0TW9jay5oICovOyBzZXR0
aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTA3ODMyMjg1MTgwMTNF
RDgwMDk5OUUwQyAvKiBNZWRpYVN0cmVhbUF1ZGlvU291cmNlLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzgzMjI4MzE4MDEzRUQ4MDA5OTlFMEMgLyog
TWVkaWFTdHJlYW1BdWRpb1NvdXJjZS5oICovOyB9OwpAQCAtNTQ3Niw5ICs1NDc2LDkgQEAKIAkJ
MDc2RjBEMEExMkI4MTkyNzAwQzI2QUE0IC8qIE1lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlv
bi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBNZWRpYVBsYXllclByaXZhdGVB
VkZvdW5kYXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDc3NjY0RkExODNF
NkI1QzAwMTMzQjkyIC8qIEpTUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQuY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBl
ID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNRdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVu
dC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3NzY2NEZCMTgzRTZCNUMwMDEz
M0I5MiAvKiBKU1F1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50LmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IEpTUXVpY2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMDc3QUYxM0UxOEY0QUU0MDAwMDFFRDYxIC8qIFNlcmlhbGl6
ZWRQbGF0Zm9ybVJlcHJlc2VudGF0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IFNlcmlhbGl6ZWRQbGF0Zm9ybVJlcHJlc2VudGF0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07Ci0JCTA3N0FGMTQxMThGNEIxQkIwMDAxRUQ2MSAvKiBTZXJpYWxpemVkUGxhdGZv
cm1SZXByZXNlbnRhdGlvbk1hYy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBT
ZXJpYWxpemVkUGxhdGZvcm1SZXByZXNlbnRhdGlvbk1hYy5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwotCQkwNzdBRjE0MjE4RjRCMUJCMDAwMUVENjEgLyogU2VyaWFsaXplZFBsYXRmb3Jt
UmVwcmVzZW50YXRpb25NYWMubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBh
dGggPSBTZXJpYWxpemVkUGxhdGZvcm1SZXByZXNlbnRhdGlvbk1hYy5tbTsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKKwkJMDc3QUYxM0UxOEY0QUU0MDAwMDFFRDYxIC8qIFNlcmlhbGl6ZWRQ
bGF0Zm9ybURhdGFDdWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rp
bmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2VyaWFs
aXplZFBsYXRmb3JtRGF0YUN1ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQkwNzdB
RjE0MTE4RjRCMUJCMDAwMUVENjEgLyogU2VyaWFsaXplZFBsYXRmb3JtRGF0YUN1ZU1hYy5oICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTZXJpYWxpemVkUGxhdGZvcm1EYXRhQ3Vl
TWFjLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTA3N0FGMTQyMThGNEIxQkIwMDAx
RUQ2MSAvKiBTZXJpYWxpemVkUGxhdGZvcm1EYXRhQ3VlTWFjLm1tICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jcHAub2JqY3BwOyBwYXRoID0gU2VyaWFsaXplZFBsYXRmb3JtRGF0YUN1ZU1hYy5tbTsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDc3QjY0MTAxQjk0RjEyRTAwM0U5QUQ1IC8q
IE1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJNb2NrLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IE1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJNb2NrLmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDc3QjY0MTExQjk0RjEyRTAwM0U5QUQ1IC8qIE1lZGlh
UGxheWJhY2tUYXJnZXRQaWNrZXJNb2NrLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IE1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJNb2NrLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCTA3N0I2NDE0MUI5NUY3MDMwMDNFOUFENSAvKiBNZWRpYVBsYXliYWNrVGFyZ2V0
TW9jay5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBNZWRpYVBsYXli
YWNrVGFyZ2V0TW9jay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0yMDQ2Niw4
ICsyMDQ2Niw4IEBACiAJCQkJQkM4Qjg1M0MwRTdDN0YxMTAwQUI2OTg0IC8qIFNjcm9sbGJhclRo
ZW1lTWFjLmggKi8sCiAJCQkJQkNFRjg2OUUwRTg0NEU5RDAwQTg1Q0Q1IC8qIFNjcm9sbGJhclRo
ZW1lTWFjLm1tICovLAogCQkJCTkzNTM2NzZBMDlBRUQ4OEIwMEQzNUNENiAvKiBTY3JvbGxWaWV3
TWFjLm1tICovLAotCQkJCTA3N0FGMTQxMThGNEIxQkIwMDAxRUQ2MSAvKiBTZXJpYWxpemVkUGxh
dGZvcm1SZXByZXNlbnRhdGlvbk1hYy5oICovLAotCQkJCTA3N0FGMTQyMThGNEIxQkIwMDAxRUQ2
MSAvKiBTZXJpYWxpemVkUGxhdGZvcm1SZXByZXNlbnRhdGlvbk1hYy5tbSAqLywKKwkJCQkwNzdB
RjE0MTE4RjRCMUJCMDAwMUVENjEgLyogU2VyaWFsaXplZFBsYXRmb3JtRGF0YUN1ZU1hYy5oICov
LAorCQkJCTA3N0FGMTQyMThGNEIxQkIwMDAxRUQ2MSAvKiBTZXJpYWxpemVkUGxhdGZvcm1EYXRh
Q3VlTWFjLm1tICovLAogCQkJCTg0QjJCMjRGMDU2QkYxNUYwMEQyQjc3MSAvKiBTU0xLZXlHZW5l
cmF0b3JNYWMubW0gKi8sCiAJCQkJRUNBNjgwQzYxRTY3NzI0NTAwNzMxRDIwIC8qIFN0cmluZ1V0
aWxpdGllcy5oICovLAogCQkJCUVDQTY4MEM4MUU2NzczMEIwMDczMUQyMCAvKiBTdHJpbmdVdGls
aXRpZXMubW0gKi8sCkBAIC0yNTk2Myw3ICsyNTk2Myw3IEBACiAJCQkJQkMyNDQxQzMwRThCNjVE
MDAwNTUzMjBGIC8qIFNjcm9sbFZpZXcuY3BwICovLAogCQkJCUJDNkQ2RTI1MDlBRjk0MzUwMEY1
OTc1OSAvKiBTY3JvbGxWaWV3LmggKi8sCiAJCQkJQUI3MTcwODgwQjMxMTgwODAwMTcxMjNFIC8q
IFNlYXJjaFBvcHVwTWVudS5oICovLAotCQkJCTA3N0FGMTNFMThGNEFFNDAwMDAxRUQ2MSAvKiBT
ZXJpYWxpemVkUGxhdGZvcm1SZXByZXNlbnRhdGlvbi5oICovLAorCQkJCTA3N0FGMTNFMThGNEFF
NDAwMDAxRUQ2MSAvKiBTZXJpYWxpemVkUGxhdGZvcm1EYXRhQ3VlLmggKi8sCiAJCQkJMUE0QTk1
NEIwQjRFRENDQjAwMkQ4QzNDIC8qIFNoYXJlZEJ1ZmZlci5jcHAgKi8sCiAJCQkJMUE0QTk1NEMw
QjRFRENDQjAwMkQ4QzNDIC8qIFNoYXJlZEJ1ZmZlci5oICovLAogCQkJCTgzNERGQUNFMUY3REFF
NTcwMEMyNzI1QiAvKiBTaGFyZWRTdHJpbmdIYXNoLmNwcCAqLywKQEAgLTMyMjE5LDggKzMyMjE5
LDggQEAKIAkJCQlFNDUzMjJBQzE0MENFMjY3MDA1QTBGOTIgLyogU2VsZWN0b3JRdWVyeS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJRjRENDNENjYyMTg4MDM4QjAwRUNFQ0FDIC8qIFNlcmlhbGl6ZWRB
dHRhY2htZW50RGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTE4REYzMzUxOEFBRjEyQzAwNzcz
RTU5IC8qIFNlcmlhbGl6ZWRDcnlwdG9LZXlXcmFwLmggaW4gSGVhZGVycyAqLywKLQkJCQkwNzdB
RjE0MDE4RjRBRTQwMDAwMUVENjEgLyogU2VyaWFsaXplZFBsYXRmb3JtUmVwcmVzZW50YXRpb24u
aCBpbiBIZWFkZXJzICovLAotCQkJCTA3N0FGMTQzMThGNEIxQkIwMDAxRUQ2MSAvKiBTZXJpYWxp
emVkUGxhdGZvcm1SZXByZXNlbnRhdGlvbk1hYy5oIGluIEhlYWRlcnMgKi8sCisJCQkJMDc3QUYx
NDAxOEY0QUU0MDAwMDFFRDYxIC8qIFNlcmlhbGl6ZWRQbGF0Zm9ybURhdGFDdWUuaCBpbiBIZWFk
ZXJzICovLAorCQkJCTA3N0FGMTQzMThGNEIxQkIwMDAxRUQ2MSAvKiBTZXJpYWxpemVkUGxhdGZv
cm1EYXRhQ3VlTWFjLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNzVFNDk3NjEwNzUyQUNCMDBDOUI4
OTYgLyogU2VyaWFsaXplZFNjcmlwdFZhbHVlLmggaW4gSGVhZGVycyAqLywKIAkJCQk1MTZGN0Y2
RDFDMzFFMzlBMDBGMTExREMgLyogU2VydmVyT3BlbkRCUmVxdWVzdC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJMkQ5M0FFRTMxOURGNTY0MTAwMkE4NkMzIC8qIFNlcnZpY2VzT3ZlcmxheUNvbnRyb2xs
ZXIuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFj
ay9EYXRhQ3VlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svRGF0YUN1ZS5jcHAKaW5k
ZXggMmVkNzQ4YzAwZDkxMzE0MzhjOGVkZjYyNjIxMmIwMDlhODU4ZTJmZC4uYWEwNTdmNTg5ZTRi
OTllYTIwZGY5N2NmZTc3MGZkYWQ4MTU1NWNlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC90cmFjay9EYXRhQ3VlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0Rh
dGFDdWUuY3BwCkBAIC01NCw3ICs1NCw3IEBAIERhdGFDdWU6OkRhdGFDdWUoU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCYgY29udGV4dCwgY29uc3QgTWVkaWFUaW1lJiBzdGFydCwgY29uc3QKIHsKIH0K
IAotRGF0YUN1ZTo6RGF0YUN1ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBjb25z
dCBNZWRpYVRpbWUmIHN0YXJ0LCBjb25zdCBNZWRpYVRpbWUmIGVuZCwgUmVmUHRyPFNlcmlhbGl6
ZWRQbGF0Zm9ybVJlcHJlc2VudGF0aW9uPiYmIHBsYXRmb3JtVmFsdWUsIGNvbnN0IFN0cmluZyYg
dHlwZSkKK0RhdGFDdWU6OkRhdGFDdWUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwg
Y29uc3QgTWVkaWFUaW1lJiBzdGFydCwgY29uc3QgTWVkaWFUaW1lJiBlbmQsIFJlZlB0cjxTZXJp
YWxpemVkUGxhdGZvcm1EYXRhQ3VlPiYmIHBsYXRmb3JtVmFsdWUsIGNvbnN0IFN0cmluZyYgdHlw
ZSkKICAgICA6IFRleHRUcmFja0N1ZShjb250ZXh0LCBzdGFydCwgZW5kKQogICAgICwgbV90eXBl
KHR5cGUpCiAgICAgLCBtX3BsYXRmb3JtVmFsdWUoV1RGTW92ZShwbGF0Zm9ybVZhbHVlKSkKQEAg
LTExNiw3ICsxMTYsNyBAQCBib29sIERhdGFDdWU6OmN1ZUNvbnRlbnRzTWF0Y2goY29uc3QgVGV4
dFRyYWNrQ3VlJiBjdWUpIGNvbnN0CiAgICAgaWYgKG1fZGF0YSAmJiBtX2RhdGEtPmRhdGEoKSAm
JiBtZW1jbXAobV9kYXRhLT5kYXRhKCksIG90aGVyRGF0YS0+ZGF0YSgpLCBtX2RhdGEtPmJ5dGVM
ZW5ndGgoKSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGNvbnN0IFNlcmlhbGl6ZWRQ
bGF0Zm9ybVJlcHJlc2VudGF0aW9uKiBvdGhlclBsYXRmb3JtVmFsdWUgPSBkYXRhQ3VlLT5wbGF0
Zm9ybVZhbHVlKCk7CisgICAgY29uc3QgU2VyaWFsaXplZFBsYXRmb3JtRGF0YUN1ZSogb3RoZXJQ
bGF0Zm9ybVZhbHVlID0gZGF0YUN1ZS0+cGxhdGZvcm1WYWx1ZSgpOwogICAgIGlmICgob3RoZXJQ
bGF0Zm9ybVZhbHVlICYmICFtX3BsYXRmb3JtVmFsdWUpIHx8ICghb3RoZXJQbGF0Zm9ybVZhbHVl
ICYmIG1fcGxhdGZvcm1WYWx1ZSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICBpZiAobV9w
bGF0Zm9ybVZhbHVlICYmICFtX3BsYXRmb3JtVmFsdWUtPmlzRXF1YWwoKm90aGVyUGxhdGZvcm1W
YWx1ZSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0RhdGFDdWUuaCBi
L1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svRGF0YUN1ZS5oCmluZGV4IDc2NGI4MGRmYjdlMWVk
OGU3Mzc4ZDg1OTU3YTViMWQxNzM5MWZkNjEuLjYzYTY3YzA0OTE1ZTYzZjMyNDI2ZjYyMzBkODZl
NDI4MTdmNTIxYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svRGF0YUN1
ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svRGF0YUN1ZS5oCkBAIC0yOCw3ICsy
OCw3IEBACiAKICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCiAKLSNpbmNsdWRlICJTZXJpYWxpemVk
UGxhdGZvcm1SZXByZXNlbnRhdGlvbi5oIgorI2luY2x1ZGUgIlNlcmlhbGl6ZWRQbGF0Zm9ybURh
dGFDdWUuaCIKICNpbmNsdWRlICJUZXh0VHJhY2tDdWUuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0
Q29yZS9BcnJheUJ1ZmZlci5oPgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0pTVmFsdWUu
aD4KQEAgLTU3LDcgKzU3LDcgQEAgcHVibGljOgogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBEYXRhQ3VlKGNvbnRleHQsIHN0YXJ0LCBlbmQsIGRhdGEsIHR5cGUpKTsKICAgICB9CiAKLSAg
ICBzdGF0aWMgUmVmPERhdGFDdWU+IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250
ZXh0LCBjb25zdCBNZWRpYVRpbWUmIHN0YXJ0LCBjb25zdCBNZWRpYVRpbWUmIGVuZCwgUmVmUHRy
PFNlcmlhbGl6ZWRQbGF0Zm9ybVJlcHJlc2VudGF0aW9uPiYmIHBsYXRmb3JtVmFsdWUsIGNvbnN0
IFN0cmluZyYgdHlwZSkKKyAgICBzdGF0aWMgUmVmPERhdGFDdWU+IGNyZWF0ZShTY3JpcHRFeGVj
dXRpb25Db250ZXh0JiBjb250ZXh0LCBjb25zdCBNZWRpYVRpbWUmIHN0YXJ0LCBjb25zdCBNZWRp
YVRpbWUmIGVuZCwgUmVmUHRyPFNlcmlhbGl6ZWRQbGF0Zm9ybURhdGFDdWU+JiYgcGxhdGZvcm1W
YWx1ZSwgY29uc3QgU3RyaW5nJiB0eXBlKQogICAgIHsKICAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KCpuZXcgRGF0YUN1ZShjb250ZXh0LCBzdGFydCwgZW5kLCBXVEZNb3ZlKHBsYXRmb3JtVmFsdWUp
LCB0eXBlKSk7CiAgICAgfQpAQCAtNzcsNyArNzcsNyBAQCBwdWJsaWM6CiAgICAgUmVmUHRyPEpT
Qzo6QXJyYXlCdWZmZXI+IGRhdGEoKSBjb25zdDsKICAgICB2b2lkIHNldERhdGEoSlNDOjpBcnJh
eUJ1ZmZlciYpOwogCi0gICAgY29uc3QgU2VyaWFsaXplZFBsYXRmb3JtUmVwcmVzZW50YXRpb24q
IHBsYXRmb3JtVmFsdWUoKSBjb25zdCB7IHJldHVybiBtX3BsYXRmb3JtVmFsdWUuZ2V0KCk7IH0K
KyAgICBjb25zdCBTZXJpYWxpemVkUGxhdGZvcm1EYXRhQ3VlKiBwbGF0Zm9ybVZhbHVlKCkgY29u
c3QgeyByZXR1cm4gbV9wbGF0Zm9ybVZhbHVlLmdldCgpOyB9CiAKICAgICBKU0M6OkpTVmFsdWUg
dmFsdWUoSlNDOjpKU0dsb2JhbE9iamVjdCYpIGNvbnN0OwogICAgIHZvaWQgc2V0VmFsdWUoSlND
OjpKU0dsb2JhbE9iamVjdCYsIEpTQzo6SlNWYWx1ZSk7CkBAIC05NCwxNCArOTQsMTQgQEAgcHVi
bGljOgogcHJpdmF0ZToKICAgICBEYXRhQ3VlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBjb25z
dCBNZWRpYVRpbWUmIHN0YXJ0LCBjb25zdCBNZWRpYVRpbWUmIGVuZCwgQXJyYXlCdWZmZXImLCBj
b25zdCBTdHJpbmcmKTsKICAgICBEYXRhQ3VlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBjb25z
dCBNZWRpYVRpbWUmIHN0YXJ0LCBjb25zdCBNZWRpYVRpbWUmIGVuZCwgY29uc3Qgdm9pZCosIHVu
c2lnbmVkKTsKLSAgICBEYXRhQ3VlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBjb25zdCBNZWRp
YVRpbWUmIHN0YXJ0LCBjb25zdCBNZWRpYVRpbWUmIGVuZCwgUmVmUHRyPFNlcmlhbGl6ZWRQbGF0
Zm9ybVJlcHJlc2VudGF0aW9uPiYmLCBjb25zdCBTdHJpbmcmKTsKKyAgICBEYXRhQ3VlKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQmLCBjb25zdCBNZWRpYVRpbWUmIHN0YXJ0LCBjb25zdCBNZWRpYVRp
bWUmIGVuZCwgUmVmUHRyPFNlcmlhbGl6ZWRQbGF0Zm9ybURhdGFDdWU+JiYsIGNvbnN0IFN0cmlu
ZyYpOwogICAgIERhdGFDdWUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIGNvbnN0IE1lZGlhVGlt
ZSYgc3RhcnQsIGNvbnN0IE1lZGlhVGltZSYgZW5kLCBKU0M6OkpTVmFsdWUsIGNvbnN0IFN0cmlu
ZyYpOwogCiAgICAgSlNDOjpKU1ZhbHVlIHZhbHVlT3JOdWxsKCkgY29uc3Q7CiAKICAgICBSZWZQ
dHI8QXJyYXlCdWZmZXI+IG1fZGF0YTsKICAgICBTdHJpbmcgbV90eXBlOwotICAgIFJlZlB0cjxT
ZXJpYWxpemVkUGxhdGZvcm1SZXByZXNlbnRhdGlvbj4gbV9wbGF0Zm9ybVZhbHVlOworICAgIFJl
ZlB0cjxTZXJpYWxpemVkUGxhdGZvcm1EYXRhQ3VlPiBtX3BsYXRmb3JtVmFsdWU7CiAgICAgLy8g
RklYTUU6IFRoZSBmb2xsb3dpbmcgdXNlIG9mIEpTQzo6U3Ryb25nIGlzIGluY29ycmVjdCBhbmQg
Y2FuIGxlYWQgdG8gc3RvcmFnZSBsZWFrcwogICAgIC8vIGR1ZSB0byByZWZlcmVuY2UgY3ljbGVz
OyB3ZSBzaG91bGQgdXNlIEpTVmFsdWVJbldyYXBwZWRPYmplY3QgaW5zdGVhZC4KICAgICAvLyBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjAxMTczCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0luYmFuZERhdGFUZXh0VHJhY2suY3BwIGIvU291
cmNlL1dlYkNvcmUvaHRtbC90cmFjay9JbmJhbmREYXRhVGV4dFRyYWNrLmNwcAppbmRleCBjMWJl
YzlhMDljMGZjMWRiY2NhMThhMWZlMzE5OGM5OWRjZDNkYjU4Li5mMDdmNzM4ZDI4MzYxY2M0YmZk
NDkyYzY0YTg0YWM5YmQ0Y2E2NTA0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3Ry
YWNrL0luYmFuZERhdGFUZXh0VHJhY2suY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJh
Y2svSW5iYW5kRGF0YVRleHRUcmFjay5jcHAKQEAgLTU3LDcgKzU3LDcgQEAgdm9pZCBJbmJhbmRE
YXRhVGV4dFRyYWNrOjphZGREYXRhQ3VlKGNvbnN0IE1lZGlhVGltZSYgc3RhcnQsIGNvbnN0IE1l
ZGlhVGltZSYgZW4KIAogI2lmIEVOQUJMRShEQVRBQ1VFX1ZBTFVFKQogCi12b2lkIEluYmFuZERh
dGFUZXh0VHJhY2s6OmFkZERhdGFDdWUoY29uc3QgTWVkaWFUaW1lJiBzdGFydCwgY29uc3QgTWVk
aWFUaW1lJiBlbmQsIFJlZjxTZXJpYWxpemVkUGxhdGZvcm1SZXByZXNlbnRhdGlvbj4mJiBwbGF0
Zm9ybVZhbHVlLCBjb25zdCBTdHJpbmcmIHR5cGUpCit2b2lkIEluYmFuZERhdGFUZXh0VHJhY2s6
OmFkZERhdGFDdWUoY29uc3QgTWVkaWFUaW1lJiBzdGFydCwgY29uc3QgTWVkaWFUaW1lJiBlbmQs
IFJlZjxTZXJpYWxpemVkUGxhdGZvcm1EYXRhQ3VlPiYmIHBsYXRmb3JtVmFsdWUsIGNvbnN0IFN0
cmluZyYgdHlwZSkKIHsKICAgICBpZiAobV9pbmNvbXBsZXRlQ3VlTWFwLmNvbnRhaW5zKHBsYXRm
b3JtVmFsdWUucHRyKCkpKQogICAgICAgICByZXR1cm47CkBAIC03OCw3ICs3OCw3IEBAIHZvaWQg
SW5iYW5kRGF0YVRleHRUcmFjazo6YWRkRGF0YUN1ZShjb25zdCBNZWRpYVRpbWUmIHN0YXJ0LCBj
b25zdCBNZWRpYVRpbWUmIGVuCiAgICAgYWRkQ3VlKFdURk1vdmUoY3VlKSk7CiB9CiAKLXZvaWQg
SW5iYW5kRGF0YVRleHRUcmFjazo6dXBkYXRlRGF0YUN1ZShjb25zdCBNZWRpYVRpbWUmIHN0YXJ0
LCBjb25zdCBNZWRpYVRpbWUmIGluRW5kLCBTZXJpYWxpemVkUGxhdGZvcm1SZXByZXNlbnRhdGlv
biYgcGxhdGZvcm1WYWx1ZSkKK3ZvaWQgSW5iYW5kRGF0YVRleHRUcmFjazo6dXBkYXRlRGF0YUN1
ZShjb25zdCBNZWRpYVRpbWUmIHN0YXJ0LCBjb25zdCBNZWRpYVRpbWUmIGluRW5kLCBTZXJpYWxp
emVkUGxhdGZvcm1EYXRhQ3VlJiBwbGF0Zm9ybVZhbHVlKQogewogICAgIFJlZlB0cjxEYXRhQ3Vl
PiBjdWUgPSBtX2luY29tcGxldGVDdWVNYXAuZ2V0KCZwbGF0Zm9ybVZhbHVlKTsKICAgICBpZiAo
IWN1ZSkKQEAgLTEwMCw3ICsxMDAsNyBAQCB2b2lkIEluYmFuZERhdGFUZXh0VHJhY2s6OnVwZGF0
ZURhdGFDdWUoY29uc3QgTWVkaWFUaW1lJiBzdGFydCwgY29uc3QgTWVkaWFUaW1lJgogICAgIGN1
ZS0+ZGlkQ2hhbmdlKCk7CiB9CiAKLXZvaWQgSW5iYW5kRGF0YVRleHRUcmFjazo6cmVtb3ZlRGF0
YUN1ZShjb25zdCBNZWRpYVRpbWUmLCBjb25zdCBNZWRpYVRpbWUmLCBTZXJpYWxpemVkUGxhdGZv
cm1SZXByZXNlbnRhdGlvbiYgcGxhdGZvcm1WYWx1ZSkKK3ZvaWQgSW5iYW5kRGF0YVRleHRUcmFj
azo6cmVtb3ZlRGF0YUN1ZShjb25zdCBNZWRpYVRpbWUmLCBjb25zdCBNZWRpYVRpbWUmLCBTZXJp
YWxpemVkUGxhdGZvcm1EYXRhQ3VlJiBwbGF0Zm9ybVZhbHVlKQogewogICAgIGlmIChhdXRvIGN1
ZSA9IG1faW5jb21wbGV0ZUN1ZU1hcC50YWtlKCZwbGF0Zm9ybVZhbHVlKSkgewogICAgICAgICBJ
TkZPX0xPRyhMT0dJREVOVElGSUVSLCAicmVtb3Zpbmc6ICIsICpjdWUpOwpAQCAtMTEyLDcgKzEx
Miw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IEluYmFuZERhdGFUZXh0VHJhY2s6OnJlbW92ZUN1ZShU
ZXh0VHJhY2tDdWUmIGN1ZSkKIHsKICAgICBBU1NFUlQoY3VlLmN1ZVR5cGUoKSA9PSBUZXh0VHJh
Y2tDdWU6OkRhdGEpOwogCi0gICAgbV9pbmNvbXBsZXRlQ3VlTWFwLnJlbW92ZShjb25zdF9jYXN0
PFNlcmlhbGl6ZWRQbGF0Zm9ybVJlcHJlc2VudGF0aW9uKj4odG9EYXRhQ3VlKCZjdWUpLT5wbGF0
Zm9ybVZhbHVlKCkpKTsKKyAgICBtX2luY29tcGxldGVDdWVNYXAucmVtb3ZlKGNvbnN0X2Nhc3Q8
U2VyaWFsaXplZFBsYXRmb3JtRGF0YUN1ZSo+KHRvRGF0YUN1ZSgmY3VlKS0+cGxhdGZvcm1WYWx1
ZSgpKSk7CiAKICAgICByZXR1cm4gSW5iYW5kVGV4dFRyYWNrOjpyZW1vdmVDdWUoY3VlKTsKIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5kRGF0YVRleHRUcmFj
ay5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9JbmJhbmREYXRhVGV4dFRyYWNrLmgKaW5k
ZXggMWIwMzhmMzcyMjIyZDYxMDIxNjgwODE1NjBiYzBiNjY3Mjk0OGRjZS4uMWE4YmRmNmFlNTIy
OGJlZjBjZjhkMWRhZDk1ZTM1NmY2MjhhNDRmMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aHRtbC90cmFjay9JbmJhbmREYXRhVGV4dFRyYWNrLmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC90cmFjay9JbmJhbmREYXRhVGV4dFRyYWNrLmgKQEAgLTUwLDEyICs1MCwxMiBAQCBwcml2YXRl
OgogI2VuZGlmCiAKICNpZiBFTkFCTEUoREFUQUNVRV9WQUxVRSkKLSAgICB2b2lkIGFkZERhdGFD
dWUoY29uc3QgTWVkaWFUaW1lJiBzdGFydCwgY29uc3QgTWVkaWFUaW1lJiBlbmQsIFJlZjxTZXJp
YWxpemVkUGxhdGZvcm1SZXByZXNlbnRhdGlvbj4mJiwgY29uc3QgU3RyaW5nJikgZmluYWw7Ci0g
ICAgdm9pZCB1cGRhdGVEYXRhQ3VlKGNvbnN0IE1lZGlhVGltZSYgc3RhcnQsIGNvbnN0IE1lZGlh
VGltZSYgZW5kLCBTZXJpYWxpemVkUGxhdGZvcm1SZXByZXNlbnRhdGlvbiYpIGZpbmFsOwotICAg
IHZvaWQgcmVtb3ZlRGF0YUN1ZShjb25zdCBNZWRpYVRpbWUmIHN0YXJ0LCBjb25zdCBNZWRpYVRp
bWUmIGVuZCwgU2VyaWFsaXplZFBsYXRmb3JtUmVwcmVzZW50YXRpb24mKSBmaW5hbDsKKyAgICB2
b2lkIGFkZERhdGFDdWUoY29uc3QgTWVkaWFUaW1lJiBzdGFydCwgY29uc3QgTWVkaWFUaW1lJiBl
bmQsIFJlZjxTZXJpYWxpemVkUGxhdGZvcm1EYXRhQ3VlPiYmLCBjb25zdCBTdHJpbmcmKSBmaW5h
bDsKKyAgICB2b2lkIHVwZGF0ZURhdGFDdWUoY29uc3QgTWVkaWFUaW1lJiBzdGFydCwgY29uc3Qg
TWVkaWFUaW1lJiBlbmQsIFNlcmlhbGl6ZWRQbGF0Zm9ybURhdGFDdWUmKSBmaW5hbDsKKyAgICB2
b2lkIHJlbW92ZURhdGFDdWUoY29uc3QgTWVkaWFUaW1lJiBzdGFydCwgY29uc3QgTWVkaWFUaW1l
JiBlbmQsIFNlcmlhbGl6ZWRQbGF0Zm9ybURhdGFDdWUmKSBmaW5hbDsKICAgICBFeGNlcHRpb25P
cjx2b2lkPiByZW1vdmVDdWUoVGV4dFRyYWNrQ3VlJikgZmluYWw7CiAKLSAgICBIYXNoTWFwPFJl
ZlB0cjxTZXJpYWxpemVkUGxhdGZvcm1SZXByZXNlbnRhdGlvbj4sIFJlZlB0cjxEYXRhQ3VlPj4g
bV9pbmNvbXBsZXRlQ3VlTWFwOworICAgIEhhc2hNYXA8UmVmUHRyPFNlcmlhbGl6ZWRQbGF0Zm9y
bURhdGFDdWU+LCBSZWZQdHI8RGF0YUN1ZT4+IG1faW5jb21wbGV0ZUN1ZU1hcDsKICNlbmRpZgog
fTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9JbmJhbmRUZXh0VHJh
Y2suaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5kVGV4dFRyYWNrLmgKaW5kZXgg
ZTE0MTAzZDA0ZWY2M2E1MDI3ZWVhNjNhNDZkOTgwNmIyZDU1YTgyZS4uOGZlZjlmMzRhZWFiZTAz
NTUxNDkzYjY0NWVjMWE2ZTVlNGYzOGE5MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRt
bC90cmFjay9JbmJhbmRUZXh0VHJhY2suaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNr
L0luYmFuZFRleHRUcmFjay5oCkBAIC03Miw5ICs3Miw5IEBAIHByaXZhdGU6CiAgICAgdm9pZCBh
ZGREYXRhQ3VlKGNvbnN0IE1lZGlhVGltZSYsIGNvbnN0IE1lZGlhVGltZSYsIGNvbnN0IHZvaWQq
LCB1bnNpZ25lZCkgb3ZlcnJpZGUgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQogCiAjaWYgRU5B
QkxFKERBVEFDVUVfVkFMVUUpCi0gICAgdm9pZCBhZGREYXRhQ3VlKGNvbnN0IE1lZGlhVGltZSYs
IGNvbnN0IE1lZGlhVGltZSYsIFJlZjxTZXJpYWxpemVkUGxhdGZvcm1SZXByZXNlbnRhdGlvbj4m
JiwgY29uc3QgU3RyaW5nJikgb3ZlcnJpZGUgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQotICAg
IHZvaWQgdXBkYXRlRGF0YUN1ZShjb25zdCBNZWRpYVRpbWUmLCBjb25zdCBNZWRpYVRpbWUmLCBT
ZXJpYWxpemVkUGxhdGZvcm1SZXByZXNlbnRhdGlvbiYpIG92ZXJyaWRlICB7IEFTU0VSVF9OT1Rf
UkVBQ0hFRCgpOyB9Ci0gICAgdm9pZCByZW1vdmVEYXRhQ3VlKGNvbnN0IE1lZGlhVGltZSYsIGNv
bnN0IE1lZGlhVGltZSYsIFNlcmlhbGl6ZWRQbGF0Zm9ybVJlcHJlc2VudGF0aW9uJikgb3ZlcnJp
ZGUgIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KKyAgICB2b2lkIGFkZERhdGFDdWUoY29uc3Qg
TWVkaWFUaW1lJiwgY29uc3QgTWVkaWFUaW1lJiwgUmVmPFNlcmlhbGl6ZWRQbGF0Zm9ybURhdGFD
dWU+JiYsIGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0K
KyAgICB2b2lkIHVwZGF0ZURhdGFDdWUoY29uc3QgTWVkaWFUaW1lJiwgY29uc3QgTWVkaWFUaW1l
JiwgU2VyaWFsaXplZFBsYXRmb3JtRGF0YUN1ZSYpIG92ZXJyaWRlICB7IEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOyB9CisgICAgdm9pZCByZW1vdmVEYXRhQ3VlKGNvbnN0IE1lZGlhVGltZSYsIGNvbnN0
IE1lZGlhVGltZSYsIFNlcmlhbGl6ZWRQbGF0Zm9ybURhdGFDdWUmKSBvdmVycmlkZSAgeyBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsgfQogI2VuZGlmCiAKICAgICB2b2lkIGFkZEdlbmVyaWNDdWUoR2Vu
ZXJpY0N1ZURhdGEmKSBvdmVycmlkZSB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TZXJpYWxpemVkUGxhdGZvcm1EYXRhQ3VlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TZXJpYWxpemVkUGxhdGZvcm1EYXRhQ3VlLmgKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uYTQ0ZTJjNTRhNzVmNWFiZDUzNmZhMzllNGY2MjIwM2IyMjA3NTViOQotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NlcmlhbGl6ZWRQbGF0Zm9ybURh
dGFDdWUuaApAQCAtMCwwICsxLDU0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
CisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwor
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNp
ZiBFTkFCTEUoVklERU8pCisKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+
CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitj
bGFzcyBTZXJpYWxpemVkUGxhdGZvcm1EYXRhQ3VlIDogcHVibGljIFJlZkNvdW50ZWQ8U2VyaWFs
aXplZFBsYXRmb3JtRGF0YUN1ZT4geworcHVibGljOgorICAgIHZpcnR1YWwgflNlcmlhbGl6ZWRQ
bGF0Zm9ybURhdGFDdWUoKSA9IGRlZmF1bHQ7CisKKyAgICB2aXJ0dWFsIEpTQzo6SlNWYWx1ZSBk
ZXNlcmlhbGl6ZShKU0M6OkpTR2xvYmFsT2JqZWN0KikgY29uc3QgPSAwOworICAgIHZpcnR1YWwg
UmVmUHRyPEpTQzo6QXJyYXlCdWZmZXI+IGRhdGEoKSBjb25zdCA9IDA7CisgICAgdmlydHVhbCBi
b29sIGlzRXF1YWwoY29uc3QgU2VyaWFsaXplZFBsYXRmb3JtRGF0YUN1ZSYpIGNvbnN0ID0gMDsK
KworICAgIGVudW0gUGxhdGZvcm1UeXBlIHsKKyAgICAgICAgT2JqQywKKyAgICB9OworICAgIHZp
cnR1YWwgUGxhdGZvcm1UeXBlIHBsYXRmb3JtVHlwZSgpIGNvbnN0ID0gMDsKKworcHJvdGVjdGVk
OgorICAgIFNlcmlhbGl6ZWRQbGF0Zm9ybURhdGFDdWUoKSA9IGRlZmF1bHQ7Cit9OworCit9IC8v
IG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vU2VyaWFsaXplZFBsYXRmb3JtUmVwcmVzZW50YXRpb24uaCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL1NlcmlhbGl6ZWRQbGF0Zm9ybVJlcHJlc2VudGF0aW9uLmgKZGVsZXRlZCBm
aWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ0Mjg5ZWI4Njk5OTFhYWZlNTg4MDMyZWZjZjY2MWZiOTg0
YTQxYWMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2VyaWFsaXplZFBsYXRmb3JtUmVwcmVzZW50YXRpb24uaAor
KysgL2Rldi9udWxsCkBAIC0xLDU0ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQg
QXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9k
aWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25k
aXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2Rl
IG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0
IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlz
dHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBt
YXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09G
VFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFT
IElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVU
T1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
Ci0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YK
LSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jcHJhZ21hIG9uY2UK
LQotI2lmIEVOQUJMRShWSURFTykKLQotI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0pTQ0lubGlu
ZXMuaD4KLSNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7
Ci0KLWNsYXNzIFNlcmlhbGl6ZWRQbGF0Zm9ybVJlcHJlc2VudGF0aW9uIDogcHVibGljIFJlZkNv
dW50ZWQ8U2VyaWFsaXplZFBsYXRmb3JtUmVwcmVzZW50YXRpb24+IHsKLXB1YmxpYzoKLSAgICB2
aXJ0dWFsIH5TZXJpYWxpemVkUGxhdGZvcm1SZXByZXNlbnRhdGlvbigpID0gZGVmYXVsdDsKLQot
ICAgIHZpcnR1YWwgSlNDOjpKU1ZhbHVlIGRlc2VyaWFsaXplKEpTQzo6SlNHbG9iYWxPYmplY3Qq
KSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCBSZWZQdHI8SlNDOjpBcnJheUJ1ZmZlcj4gZGF0YSgp
IGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIGJvb2wgaXNFcXVhbChjb25zdCBTZXJpYWxpemVkUGxh
dGZvcm1SZXByZXNlbnRhdGlvbiYpIGNvbnN0ID0gMDsKLQotICAgIGVudW0gUGxhdGZvcm1UeXBl
IHsKLSAgICAgICAgT2JqQywKLSAgICB9OwotICAgIHZpcnR1YWwgUGxhdGZvcm1UeXBlIHBsYXRm
b3JtVHlwZSgpIGNvbnN0ID0gMDsKLQotcHJvdGVjdGVkOgotICAgIFNlcmlhbGl6ZWRQbGF0Zm9y
bVJlcHJlc2VudGF0aW9uKCkgPSBkZWZhdWx0OwotfTsKLQotfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L0luYmFuZFRleHRUcmFja1ByaXZhdGVDbGllbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL0luYmFuZFRleHRUcmFja1ByaXZhdGVDbGllbnQuaAppbmRleCA2ZTBjOGY5MDlj
NjU5NWRmNzAyNTE3ZTA1YjUwNjMyOGRmMzk5YjcwLi5mNDMwNjQ1MThkZjQxOTYxYjNmNmM2M2E3
NmM5OTEzZDE3NjdhZWJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9JbmJhbmRUZXh0VHJhY2tQcml2YXRlQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvSW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUNsaWVudC5oCkBAIC0zMyw3
ICszMyw3IEBACiAjaW5jbHVkZSA8d3RmL01lZGlhVGltZS5oPgogCiAjaWYgRU5BQkxFKERBVEFD
VUVfVkFMVUUpCi0jaW5jbHVkZSAiU2VyaWFsaXplZFBsYXRmb3JtUmVwcmVzZW50YXRpb24uaCIK
KyNpbmNsdWRlICJTZXJpYWxpemVkUGxhdGZvcm1EYXRhQ3VlLmgiCiAjZW5kaWYKIAogbmFtZXNw
YWNlIFdlYkNvcmUgewpAQCAtMjI5LDkgKzIyOSw5IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZv
aWQgYWRkRGF0YUN1ZShjb25zdCBNZWRpYVRpbWUmIHN0YXJ0LCBjb25zdCBNZWRpYVRpbWUmIGVu
ZCwgY29uc3Qgdm9pZCosIHVuc2lnbmVkKSA9IDA7CiAKICNpZiBFTkFCTEUoREFUQUNVRV9WQUxV
RSkKLSAgICB2aXJ0dWFsIHZvaWQgYWRkRGF0YUN1ZShjb25zdCBNZWRpYVRpbWUmIHN0YXJ0LCBj
b25zdCBNZWRpYVRpbWUmIGVuZCwgUmVmPFNlcmlhbGl6ZWRQbGF0Zm9ybVJlcHJlc2VudGF0aW9u
PiYmLCBjb25zdCBTdHJpbmcmKSA9IDA7Ci0gICAgdmlydHVhbCB2b2lkIHVwZGF0ZURhdGFDdWUo
Y29uc3QgTWVkaWFUaW1lJiBzdGFydCwgY29uc3QgTWVkaWFUaW1lJiBlbmQsIFNlcmlhbGl6ZWRQ
bGF0Zm9ybVJlcHJlc2VudGF0aW9uJikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCByZW1vdmVEYXRh
Q3VlKGNvbnN0IE1lZGlhVGltZSYgc3RhcnQsIGNvbnN0IE1lZGlhVGltZSYgZW5kLCBTZXJpYWxp
emVkUGxhdGZvcm1SZXByZXNlbnRhdGlvbiYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgYWRkRGF0
YUN1ZShjb25zdCBNZWRpYVRpbWUmIHN0YXJ0LCBjb25zdCBNZWRpYVRpbWUmIGVuZCwgUmVmPFNl
cmlhbGl6ZWRQbGF0Zm9ybURhdGFDdWU+JiYsIGNvbnN0IFN0cmluZyYpID0gMDsKKyAgICB2aXJ0
dWFsIHZvaWQgdXBkYXRlRGF0YUN1ZShjb25zdCBNZWRpYVRpbWUmIHN0YXJ0LCBjb25zdCBNZWRp
YVRpbWUmIGVuZCwgU2VyaWFsaXplZFBsYXRmb3JtRGF0YUN1ZSYpID0gMDsKKyAgICB2aXJ0dWFs
IHZvaWQgcmVtb3ZlRGF0YUN1ZShjb25zdCBNZWRpYVRpbWUmIHN0YXJ0LCBjb25zdCBNZWRpYVRp
bWUmIGVuZCwgU2VyaWFsaXplZFBsYXRmb3JtRGF0YUN1ZSYpID0gMDsKICNlbmRpZgogCiAgICAg
dmlydHVhbCB2b2lkIGFkZEdlbmVyaWNDdWUoR2VuZXJpY0N1ZURhdGEmKSA9IDA7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vSW5iYW5k
TWV0YWRhdGFUZXh0VHJhY2tQcml2YXRlQVZGLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9JbmJhbmRNZXRhZGF0YVRleHRUcmFja1ByaXZhdGVBVkYu
Y3BwCmluZGV4IDM1ZGE5NWUyYTEzMWZlZmFhYTNiOTA3OWQ0Y2NlZjk1ZGYyZjVkNzguLjg2ZTM0
Y2ViMTk2YTQwNjY4NWIzY2E3YmJlOTI1NmU1ZmU2ZmU1N2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9JbmJhbmRNZXRhZGF0YVRleHRU
cmFja1ByaXZhdGVBVkYuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2F2Zm91bmRhdGlvbi9JbmJhbmRNZXRhZGF0YVRleHRUcmFja1ByaXZhdGVBVkYuY3BwCkBAIC01
NCw3ICs1NCw3IEBAIEluYmFuZE1ldGFkYXRhVGV4dFRyYWNrUHJpdmF0ZUFWRjo6fkluYmFuZE1l
dGFkYXRhVGV4dFRyYWNrUHJpdmF0ZUFWRigpID0gZGVmYXVsCiAKICNpZiBFTkFCTEUoREFUQUNV
RV9WQUxVRSkKIAotdm9pZCBJbmJhbmRNZXRhZGF0YVRleHRUcmFja1ByaXZhdGVBVkY6OmFkZERh
dGFDdWUoY29uc3QgTWVkaWFUaW1lJiBzdGFydCwgY29uc3QgTWVkaWFUaW1lJiBlbmQsIFJlZjxT
ZXJpYWxpemVkUGxhdGZvcm1SZXByZXNlbnRhdGlvbj4mJiBjdWVEYXRhLCBjb25zdCBTdHJpbmcm
IHR5cGUpCit2b2lkIEluYmFuZE1ldGFkYXRhVGV4dFRyYWNrUHJpdmF0ZUFWRjo6YWRkRGF0YUN1
ZShjb25zdCBNZWRpYVRpbWUmIHN0YXJ0LCBjb25zdCBNZWRpYVRpbWUmIGVuZCwgUmVmPFNlcmlh
bGl6ZWRQbGF0Zm9ybURhdGFDdWU+JiYgY3VlRGF0YSwgY29uc3QgU3RyaW5nJiB0eXBlKQogewog
ICAgIEFTU0VSVChjdWVGb3JtYXQoKSA9PSBDdWVGb3JtYXQ6OkRhdGEpOwogICAgIEFTU0VSVChz
dGFydCA+PSBNZWRpYVRpbWU6Onplcm9UaW1lKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0luYmFuZE1ldGFkYXRhVGV4dFRyYWNr
UHJpdmF0ZUFWRi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0
aW9uL0luYmFuZE1ldGFkYXRhVGV4dFRyYWNrUHJpdmF0ZUFWRi5oCmluZGV4IDJlYzdkNWMwNTMw
ZDc3OGI5NDkwNzMxNmNhZjdhYmQxZWNiMzg3YWYuLmNmMDA0NzE0MGYzNmRmM2Y0OWE5NTYwYmQ1
M2FkNzk5YzA4ZDg5ZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2F2Zm91bmRhdGlvbi9JbmJhbmRNZXRhZGF0YVRleHRUcmFja1ByaXZhdGVBVkYuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vSW5iYW5kTWV0
YWRhdGFUZXh0VHJhY2tQcml2YXRlQVZGLmgKQEAgLTM0LDcgKzM0LDcgQEAgbmFtZXNwYWNlIFdl
YkNvcmUgewogCiAjaWYgRU5BQkxFKERBVEFDVUVfVkFMVUUpCiBzdHJ1Y3QgSW5jb21wbGV0ZU1l
dGFEYXRhQ3VlIHsKLSAgICBSZWZQdHI8U2VyaWFsaXplZFBsYXRmb3JtUmVwcmVzZW50YXRpb24+
IGN1ZURhdGE7CisgICAgUmVmUHRyPFNlcmlhbGl6ZWRQbGF0Zm9ybURhdGFDdWU+IGN1ZURhdGE7
CiAgICAgTWVkaWFUaW1lIHN0YXJ0VGltZTsKIH07CiAjZW5kaWYKQEAgLTUxLDcgKzUxLDcgQEAg
cHVibGljOgogICAgIHZvaWQgc2V0SW5CYW5kTWV0YWRhdGFUcmFja0Rpc3BhdGNoVHlwZShjb25z
dCBBdG9tU3RyaW5nJiB2YWx1ZSkgeyBtX2luQmFuZE1ldGFkYXRhVHJhY2tEaXNwYXRjaFR5cGUg
PSB2YWx1ZTsgfQogCiAjaWYgRU5BQkxFKERBVEFDVUVfVkFMVUUpCi0gICAgdm9pZCBhZGREYXRh
Q3VlKGNvbnN0IE1lZGlhVGltZSYgc3RhcnQsIGNvbnN0IE1lZGlhVGltZSYgZW5kLCBSZWY8U2Vy
aWFsaXplZFBsYXRmb3JtUmVwcmVzZW50YXRpb24+JiYsIGNvbnN0IFN0cmluZyYpOworICAgIHZv
aWQgYWRkRGF0YUN1ZShjb25zdCBNZWRpYVRpbWUmIHN0YXJ0LCBjb25zdCBNZWRpYVRpbWUmIGVu
ZCwgUmVmPFNlcmlhbGl6ZWRQbGF0Zm9ybURhdGFDdWU+JiYsIGNvbnN0IFN0cmluZyYpOwogICAg
IHZvaWQgdXBkYXRlUGVuZGluZ0N1ZUVuZFRpbWVzKGNvbnN0IE1lZGlhVGltZSYpOwogI2VuZGlm
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRh
dGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0gYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclBy
aXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCmluZGV4IDBkYzJlNzcyYWU5ZGU5MzIzNWRkMGNjNWM5
ODk3OGQ3ODI2ZDM2ZTcuLmY4Y2ZmMjEzNDVhNWVjNjMwZmRmODY1YTU3MmQ5NDg1ZjZhNDgxZDEg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlv
bi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9iakMubW0KKysrIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQ
cml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQpAQCAtNTUsNyArNTUsNyBAQAogI2ltcG9ydCAiUGl4
ZWxCdWZmZXJDb25mb3JtZXJDVi5oIgogI2ltcG9ydCAiUGxhdGZvcm1UaW1lUmFuZ2VzLmgiCiAj
aW1wb3J0ICJTZWN1cml0eU9yaWdpbi5oIgotI2ltcG9ydCAiU2VyaWFsaXplZFBsYXRmb3JtUmVw
cmVzZW50YXRpb25NYWMuaCIKKyNpbXBvcnQgIlNlcmlhbGl6ZWRQbGF0Zm9ybURhdGFDdWVNYWMu
aCIKICNpbXBvcnQgIlNoYXJlZEJ1ZmZlci5oIgogI2ltcG9ydCAiVGV4dEVuY29kaW5nLmgiCiAj
aW1wb3J0ICJUZXh0VHJhY2tSZXByZXNlbnRhdGlvbi5oIgpAQCAtMzA3Myw3ICszMDczLDcgQEAg
dm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDOjptZXRhZGF0YURpZEFycml2
ZShjb25zdCBSZXRhaW5QdHI8TlNBcnIKICAgICAgICAgaWYgKGl0ZW0ua2V5U3BhY2UpCiAgICAg
ICAgICAgICB0eXBlID0gbWV0YWRhdGFUeXBlKGl0ZW0ua2V5U3BhY2UpOwogCi0gICAgICAgIG1f
bWV0YWRhdGFUcmFjay0+YWRkRGF0YUN1ZShzdGFydCwgZW5kLCBTZXJpYWxpemVkUGxhdGZvcm1S
ZXByZXNlbnRhdGlvbk1hYzo6Y3JlYXRlKGl0ZW0pLCB0eXBlKTsKKyAgICAgICAgbV9tZXRhZGF0
YVRyYWNrLT5hZGREYXRhQ3VlKHN0YXJ0LCBlbmQsIFNlcmlhbGl6ZWRQbGF0Zm9ybURhdGFDdWVN
YWM6OmNyZWF0ZShpdGVtKSwgdHlwZSk7CiAgICAgfQogI2VuZGlmCiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2VyaWFsaXplZFBsYXRmb3JtRGF0YUN1ZU1hYy5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1NlcmlhbGl6ZWRQbGF0Zm9ybURhdGFDdWVN
YWMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi4yMGNhMzI4OWU1ZGVhZWQ4NWYwYzY0MWJmMTA5OGQwZjUyMmVkNTdk
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1NlcmlhbGl6
ZWRQbGF0Zm9ybURhdGFDdWVNYWMuaApAQCAtMCwwICsxLDYzIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3By
YWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoVklERU9fVFJBQ0spICYmIEVOQUJMRShEQVRBQ1VFX1ZB
TFVFKQorCisjaW5jbHVkZSAiU2VyaWFsaXplZFBsYXRmb3JtRGF0YUN1ZS5oIgorCisjaWYgVVNF
KEZPVU5EQVRJT04pICYmICFkZWZpbmVkKF9fT0JKQ19fKQordHlwZWRlZiBzdHJ1Y3Qgb2JqY19v
YmplY3QgKmlkOworI2VuZGlmCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgU2VyaWFs
aXplZFBsYXRmb3JtRGF0YUN1ZU1hYyA6IHB1YmxpYyBTZXJpYWxpemVkUGxhdGZvcm1EYXRhQ3Vl
IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5TZXJpYWxpemVkUGxhdGZvcm1EYXRhQ3VlTWFjKCk7
CisgICAgc3RhdGljIFJlZjxTZXJpYWxpemVkUGxhdGZvcm1EYXRhQ3VlPiBjcmVhdGUoaWQpOwor
CisgICAgSlNDOjpKU1ZhbHVlIGRlc2VyaWFsaXplKEpTQzo6SlNHbG9iYWxPYmplY3QqKSBjb25z
dCBvdmVycmlkZTsKKyAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IGRhdGEoKSBjb25zdCBvdmVycmlk
ZTsKKworICAgIGJvb2wgaXNFcXVhbChjb25zdCBTZXJpYWxpemVkUGxhdGZvcm1EYXRhQ3VlJikg
Y29uc3Qgb3ZlcnJpZGU7CisKKyAgICBQbGF0Zm9ybVR5cGUgcGxhdGZvcm1UeXBlKCkgY29uc3Qg
b3ZlcnJpZGUgeyByZXR1cm4gU2VyaWFsaXplZFBsYXRmb3JtRGF0YUN1ZTo6T2JqQzsgfQorCisg
ICAgaWQgbmF0aXZlVmFsdWUoKSBjb25zdCB7IHJldHVybiBtX25hdGl2ZVZhbHVlLmdldCgpOyB9
CisKK3ByaXZhdGU6CisgICAgU2VyaWFsaXplZFBsYXRmb3JtRGF0YUN1ZU1hYyhpZCBuYXRpdmVW
YWx1ZSk7CisKKyAgICBSZXRhaW5QdHI8aWQ+IG1fbmF0aXZlVmFsdWU7Cit9OworCitTZXJpYWxp
emVkUGxhdGZvcm1EYXRhQ3VlTWFjKiB0b1NlcmlhbGl6ZWRQbGF0Zm9ybURhdGFDdWVNYWMoU2Vy
aWFsaXplZFBsYXRmb3JtRGF0YUN1ZSopOworY29uc3QgU2VyaWFsaXplZFBsYXRmb3JtRGF0YUN1
ZU1hYyogdG9TZXJpYWxpemVkUGxhdGZvcm1EYXRhQ3VlTWFjKGNvbnN0IFNlcmlhbGl6ZWRQbGF0
Zm9ybURhdGFDdWUqKTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TZXJpYWxpemVkUGxhdGZvcm1EYXRh
Q3VlTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1NlcmlhbGl6ZWRQbGF0Zm9y
bURhdGFDdWVNYWMubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTdhNmNmNTdmMDQyNTFhNWEyNzY5Mzc4ZjNhMzc1
Zjc5MzhiNTI1NQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21h
Yy9TZXJpYWxpemVkUGxhdGZvcm1EYXRhQ3VlTWFjLm1tCkBAIC0wLDAgKzEsMjM5IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDE0LCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIlNlcmlhbGl6ZWRQ
bGF0Zm9ybURhdGFDdWVNYWMuaCIKKworI2lmIEVOQUJMRShWSURFT19UUkFDSykgJiYgRU5BQkxF
KERBVEFDVUVfVkFMVUUpCisKKyNpbXBvcnQgIkpTRE9NQ29udmVydEJ1ZmZlclNvdXJjZS5oIgor
I2ltcG9ydCA8QVZGb3VuZGF0aW9uL0FWTWV0YWRhdGFJdGVtLmg+CisjaW1wb3J0IDxGb3VuZGF0
aW9uL05TU3RyaW5nLmg+CisjaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9BUElDYXN0Lmg+CisjaW1w
b3J0IDxKYXZhU2NyaXB0Q29yZS9BcnJheUJ1ZmZlci5oPgorI2ltcG9ydCA8SmF2YVNjcmlwdENv
cmUvSlNBcnJheUJ1ZmZlci5oPgorI2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvSlNDb250ZXh0UmVm
Lmg+CisjaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9KU09iamVjdFJlZi5oPgorI2ltcG9ydCA8SmF2
YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuaD4KKyNpbXBvcnQgPG9iamMvcnVudGltZS5oPgor
I2ltcG9ydCA8cGFsL2NvY29hL0FWRm91bmRhdGlvblNvZnRMaW5rLmg+CisKK25hbWVzcGFjZSBX
ZWJDb3JlIHsKKworI2lmIEpTQ19PQkpDX0FQSV9FTkFCTEVECitzdGF0aWMgSlNWYWx1ZSAqanNW
YWx1ZVdpdGhEYXRhSW5Db250ZXh0KE5TRGF0YSAqLCBKU0NvbnRleHQgKik7CitzdGF0aWMgSlNW
YWx1ZSAqanNWYWx1ZVdpdGhBcnJheUluQ29udGV4dChOU0FycmF5ICosIEpTQ29udGV4dCAqKTsK
K3N0YXRpYyBKU1ZhbHVlICpqc1ZhbHVlV2l0aERpY3Rpb25hcnlJbkNvbnRleHQoTlNEaWN0aW9u
YXJ5ICosIEpTQ29udGV4dCAqKTsKK3N0YXRpYyBKU1ZhbHVlICpqc1ZhbHVlV2l0aEFWTWV0YWRh
dGFJdGVtSW5Db250ZXh0KEFWTWV0YWRhdGFJdGVtICosIEpTQ29udGV4dCAqKTsKK3N0YXRpYyBK
U1ZhbHVlICpqc1ZhbHVlV2l0aFZhbHVlSW5Db250ZXh0KGlkLCBKU0NvbnRleHQgKik7CisjZW5k
aWYKKworU2VyaWFsaXplZFBsYXRmb3JtRGF0YUN1ZU1hYzo6U2VyaWFsaXplZFBsYXRmb3JtRGF0
YUN1ZU1hYyhpZCBuYXRpdmVWYWx1ZSkKKyAgICA6IFNlcmlhbGl6ZWRQbGF0Zm9ybURhdGFDdWUo
KQorICAgICwgbV9uYXRpdmVWYWx1ZShuYXRpdmVWYWx1ZSkKK3sKK30KKworU2VyaWFsaXplZFBs
YXRmb3JtRGF0YUN1ZU1hYzo6flNlcmlhbGl6ZWRQbGF0Zm9ybURhdGFDdWVNYWMoKQoreworfQor
CitSZWY8U2VyaWFsaXplZFBsYXRmb3JtRGF0YUN1ZT4gU2VyaWFsaXplZFBsYXRmb3JtRGF0YUN1
ZU1hYzo6Y3JlYXRlKGlkIG5hdGl2ZVZhbHVlKQoreworICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IFNlcmlhbGl6ZWRQbGF0Zm9ybURhdGFDdWVNYWMobmF0aXZlVmFsdWUpKTsKK30KKworUmVmUHRy
PEFycmF5QnVmZmVyPiBTZXJpYWxpemVkUGxhdGZvcm1EYXRhQ3VlTWFjOjpkYXRhKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworSlNDOjpKU1ZhbHVlIFNlcmlhbGl6ZWRQbGF0
Zm9ybURhdGFDdWVNYWM6OmRlc2VyaWFsaXplKEpTQzo6SlNHbG9iYWxPYmplY3QqIGxleGljYWxH
bG9iYWxPYmplY3QpIGNvbnN0Cit7CisjaWYgSlNDX09CSkNfQVBJX0VOQUJMRUQKKyAgICBpZiAo
IW1fbmF0aXZlVmFsdWUpCisgICAgICAgIHJldHVybiBKU0M6OmpzTnVsbCgpOworCisgICAgSlNH
bG9iYWxDb250ZXh0UmVmIGpzR2xvYmFsQ29udGV4dFJlZiA9IHRvR2xvYmFsUmVmKGxleGljYWxH
bG9iYWxPYmplY3QpOworICAgIEpTQ29udGV4dCAqanNDb250ZXh0ID0gW0pTQ29udGV4dCBjb250
ZXh0V2l0aEpTR2xvYmFsQ29udGV4dFJlZjpqc0dsb2JhbENvbnRleHRSZWZdOworICAgIEpTVmFs
dWUgKnNlcmlhbGl6ZWRWYWx1ZSA9IGpzVmFsdWVXaXRoVmFsdWVJbkNvbnRleHQobV9uYXRpdmVW
YWx1ZS5nZXQoKSwganNDb250ZXh0KTsKKworICAgIHJldHVybiB0b0pTKGxleGljYWxHbG9iYWxP
YmplY3QsIFtzZXJpYWxpemVkVmFsdWUgSlNWYWx1ZVJlZl0pOworI2Vsc2UKKyAgICBVTlVTRURf
UEFSQU0obGV4aWNhbEdsb2JhbE9iamVjdCk7CisgICAgcmV0dXJuIEpTQzo6anNOdWxsKCk7Cisj
ZW5kaWYKK30KKworYm9vbCBTZXJpYWxpemVkUGxhdGZvcm1EYXRhQ3VlTWFjOjppc0VxdWFsKGNv
bnN0IFNlcmlhbGl6ZWRQbGF0Zm9ybURhdGFDdWUmIG90aGVyKSBjb25zdAoreworICAgIGlmIChv
dGhlci5wbGF0Zm9ybVR5cGUoKSAhPSBTZXJpYWxpemVkUGxhdGZvcm1EYXRhQ3VlOjpPYmpDKQor
ICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBjb25zdCBTZXJpYWxpemVkUGxhdGZvcm1EYXRh
Q3VlTWFjKiBvdGhlck9iakMgPSB0b1NlcmlhbGl6ZWRQbGF0Zm9ybURhdGFDdWVNYWMoJm90aGVy
KTsKKworICAgIGlmICghbV9uYXRpdmVWYWx1ZSB8fCAhb3RoZXJPYmpDLT5uYXRpdmVWYWx1ZSgp
KQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4gW21fbmF0aXZlVmFsdWUuZ2V0
KCkgaXNFcXVhbDpvdGhlck9iakMtPm5hdGl2ZVZhbHVlKCldOworfQorCitTZXJpYWxpemVkUGxh
dGZvcm1EYXRhQ3VlTWFjKiB0b1NlcmlhbGl6ZWRQbGF0Zm9ybURhdGFDdWVNYWMoU2VyaWFsaXpl
ZFBsYXRmb3JtRGF0YUN1ZSogcmVwKQoreworICAgIHJldHVybiBjb25zdF9jYXN0PFNlcmlhbGl6
ZWRQbGF0Zm9ybURhdGFDdWVNYWMqPih0b1NlcmlhbGl6ZWRQbGF0Zm9ybURhdGFDdWVNYWMoY29u
c3RfY2FzdDxjb25zdCBTZXJpYWxpemVkUGxhdGZvcm1EYXRhQ3VlKj4ocmVwKSkpOworfQorCitj
b25zdCBTZXJpYWxpemVkUGxhdGZvcm1EYXRhQ3VlTWFjKiB0b1NlcmlhbGl6ZWRQbGF0Zm9ybURh
dGFDdWVNYWMoY29uc3QgU2VyaWFsaXplZFBsYXRmb3JtRGF0YUN1ZSogcmVwKQoreworICAgIFJF
TEVBU0VfQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04ocmVwLT5wbGF0Zm9ybVR5cGUo
KSA9PSBTZXJpYWxpemVkUGxhdGZvcm1EYXRhQ3VlOjpPYmpDKTsKKyAgICByZXR1cm4gc3RhdGlj
X2Nhc3Q8Y29uc3QgU2VyaWFsaXplZFBsYXRmb3JtRGF0YUN1ZU1hYyo+KHJlcCk7Cit9CisKKyNp
ZiBKU0NfT0JKQ19BUElfRU5BQkxFRAorc3RhdGljIEpTVmFsdWUgKmpzVmFsdWVXaXRoVmFsdWVJ
bkNvbnRleHQoaWQgdmFsdWUsIEpTQ29udGV4dCAqY29udGV4dCkKK3sKKyAgICBpZiAoW3ZhbHVl
IGlzS2luZE9mQ2xhc3M6W05TU3RyaW5nIGNsYXNzXV0gfHwgW3ZhbHVlIGlzS2luZE9mQ2xhc3M6
W05TTnVtYmVyIGNsYXNzXV0pCisgICAgICAgIHJldHVybiBbSlNWYWx1ZSB2YWx1ZVdpdGhPYmpl
Y3Q6dmFsdWUgaW5Db250ZXh0OmNvbnRleHRdOworCisgICAgaWYgKFt2YWx1ZSBpc0tpbmRPZkNs
YXNzOltOU0xvY2FsZSBjbGFzc11dKQorICAgICAgICByZXR1cm4gW0pTVmFsdWUgdmFsdWVXaXRo
T2JqZWN0Olt2YWx1ZSBsb2NhbGVJZGVudGlmaWVyXSBpbkNvbnRleHQ6Y29udGV4dF07CisKKyAg
ICBpZiAoW3ZhbHVlIGlzS2luZE9mQ2xhc3M6W05TRGljdGlvbmFyeSBjbGFzc11dKQorICAgICAg
ICByZXR1cm4ganNWYWx1ZVdpdGhEaWN0aW9uYXJ5SW5Db250ZXh0KHZhbHVlLCBjb250ZXh0KTsK
KworICAgIGlmIChbdmFsdWUgaXNLaW5kT2ZDbGFzczpbTlNBcnJheSBjbGFzc11dKQorICAgICAg
ICByZXR1cm4ganNWYWx1ZVdpdGhBcnJheUluQ29udGV4dCh2YWx1ZSwgY29udGV4dCk7CisKKyAg
ICBpZiAoW3ZhbHVlIGlzS2luZE9mQ2xhc3M6W05TRGF0YSBjbGFzc11dKQorICAgICAgICByZXR1
cm4ganNWYWx1ZVdpdGhEYXRhSW5Db250ZXh0KHZhbHVlLCBjb250ZXh0KTsKKworICAgIGlmIChb
dmFsdWUgaXNLaW5kT2ZDbGFzczpQQUw6OmdldEFWTWV0YWRhdGFJdGVtQ2xhc3MoKV0pCisgICAg
ICAgIHJldHVybiBqc1ZhbHVlV2l0aEFWTWV0YWRhdGFJdGVtSW5Db250ZXh0KHZhbHVlLCBjb250
ZXh0KTsKKworICAgIHJldHVybiBuaWw7Cit9CisKK3N0YXRpYyBKU1ZhbHVlICpqc1ZhbHVlV2l0
aERhdGFJbkNvbnRleHQoTlNEYXRhICpkYXRhLCBKU0NvbnRleHQgKmNvbnRleHQpCit7CisgICAg
YXV0byBkYXRhQXJyYXkgPSBBcnJheUJ1ZmZlcjo6dHJ5Q3JlYXRlKFtkYXRhIGJ5dGVzXSwgW2Rh
dGEgbGVuZ3RoXSk7CisKKyAgICBhdXRvKiBsZXhpY2FsR2xvYmFsT2JqZWN0ID0gdG9KUyhbY29u
dGV4dCBKU0dsb2JhbENvbnRleHRSZWZdKTsKKyAgICBKU0M6OkpTVmFsdWUgYXJyYXkgPSB0b0pT
KGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6anNDYXN0PEpTRE9NR2xvYmFsT2JqZWN0Kj4obGV4
aWNhbEdsb2JhbE9iamVjdCksIGRhdGFBcnJheS5nZXQoKSk7CisKKyAgICByZXR1cm4gW0pTVmFs
dWUgdmFsdWVXaXRoSlNWYWx1ZVJlZjp0b1JlZihsZXhpY2FsR2xvYmFsT2JqZWN0LCBhcnJheSkg
aW5Db250ZXh0OmNvbnRleHRdOworfQorCitzdGF0aWMgSlNWYWx1ZSAqanNWYWx1ZVdpdGhBcnJh
eUluQ29udGV4dChOU0FycmF5ICphcnJheSwgSlNDb250ZXh0ICpjb250ZXh0KQoreworICAgIEpT
VmFsdWVSZWYgZXhjZXB0aW9uID0gMDsKKyAgICBKU1ZhbHVlICpyZXN1bHQgPSBbSlNWYWx1ZSB2
YWx1ZVdpdGhOZXdBcnJheUluQ29udGV4dDpjb250ZXh0XTsKKyAgICBKU09iamVjdFJlZiByZXN1
bHRPYmplY3QgPSBKU1ZhbHVlVG9PYmplY3QoW2NvbnRleHQgSlNHbG9iYWxDb250ZXh0UmVmXSwg
W3Jlc3VsdCBKU1ZhbHVlUmVmXSwgJmV4Y2VwdGlvbik7CisgICAgaWYgKGV4Y2VwdGlvbikKKyAg
ICAgICAgcmV0dXJuIFtKU1ZhbHVlIHZhbHVlV2l0aFVuZGVmaW5lZEluQ29udGV4dDpjb250ZXh0
XTsKKworICAgIE5TVUludGVnZXIgY291bnQgPSBbYXJyYXkgY291bnRdOworICAgIGZvciAoTlNV
SW50ZWdlciBpID0gMDsgaSA8IGNvdW50OyArK2kpIHsKKyAgICAgICAgSlNWYWx1ZSAqdmFsdWUg
PSBqc1ZhbHVlV2l0aFZhbHVlSW5Db250ZXh0KFthcnJheSBvYmplY3RBdEluZGV4OmldLCBjb250
ZXh0KTsKKyAgICAgICAgaWYgKCF2YWx1ZSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAg
ICAgIEpTT2JqZWN0U2V0UHJvcGVydHlBdEluZGV4KFtjb250ZXh0IEpTR2xvYmFsQ29udGV4dFJl
Zl0sIHJlc3VsdE9iamVjdCwgKHVuc2lnbmVkKWksIFt2YWx1ZSBKU1ZhbHVlUmVmXSwgJmV4Y2Vw
dGlvbik7CisgICAgICAgIGlmIChleGNlcHRpb24pCisgICAgICAgICAgICBjb250aW51ZTsKKyAg
ICB9CisKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitzdGF0aWMgSlNWYWx1ZSAqanNWYWx1ZVdp
dGhEaWN0aW9uYXJ5SW5Db250ZXh0KE5TRGljdGlvbmFyeSAqZGljdGlvbmFyeSwgSlNDb250ZXh0
ICpjb250ZXh0KQoreworICAgIEpTVmFsdWVSZWYgZXhjZXB0aW9uID0gMDsKKyAgICBKU1ZhbHVl
ICpyZXN1bHQgPSBbSlNWYWx1ZSB2YWx1ZVdpdGhOZXdPYmplY3RJbkNvbnRleHQ6Y29udGV4dF07
CisgICAgSlNPYmplY3RSZWYgcmVzdWx0T2JqZWN0ID0gSlNWYWx1ZVRvT2JqZWN0KFtjb250ZXh0
IEpTR2xvYmFsQ29udGV4dFJlZl0sIFtyZXN1bHQgSlNWYWx1ZVJlZl0sICZleGNlcHRpb24pOwor
ICAgIGlmIChleGNlcHRpb24pCisgICAgICAgIHJldHVybiBbSlNWYWx1ZSB2YWx1ZVdpdGhVbmRl
ZmluZWRJbkNvbnRleHQ6Y29udGV4dF07CisKKyAgICBmb3IgKGlkIGtleSBpbiBbZGljdGlvbmFy
eSBrZXlFbnVtZXJhdG9yXSkgeworICAgICAgICBpZiAoIVtrZXkgaXNLaW5kT2ZDbGFzczpbTlNT
dHJpbmcgY2xhc3NdXSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIEpTVmFsdWUg
KnZhbHVlID0ganNWYWx1ZVdpdGhWYWx1ZUluQ29udGV4dChbZGljdGlvbmFyeSBvYmplY3RGb3JL
ZXk6a2V5XSwgY29udGV4dCk7CisgICAgICAgIGlmICghdmFsdWUpCisgICAgICAgICAgICBjb250
aW51ZTsKKworICAgICAgICBhdXRvIG5hbWUgPSBPcGFxdWVKU1N0cmluZzo6dHJ5Q3JlYXRlKGtl
eSk7CisgICAgICAgIEpTT2JqZWN0U2V0UHJvcGVydHkoW2NvbnRleHQgSlNHbG9iYWxDb250ZXh0
UmVmXSwgcmVzdWx0T2JqZWN0LCBuYW1lLmdldCgpLCBbdmFsdWUgSlNWYWx1ZVJlZl0sIDAsICZl
eGNlcHRpb24pOworICAgICAgICBpZiAoZXhjZXB0aW9uKQorICAgICAgICAgICAgY29udGludWU7
CisgICAgfQorCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworc3RhdGljIEpTVmFsdWUgKmpzVmFs
dWVXaXRoQVZNZXRhZGF0YUl0ZW1JbkNvbnRleHQoQVZNZXRhZGF0YUl0ZW0gKml0ZW0sIEpTQ29u
dGV4dCAqY29udGV4dCkKK3sKKyAgICBOU011dGFibGVEaWN0aW9uYXJ5ICpkaWN0aW9uYXJ5ID0g
W05TTXV0YWJsZURpY3Rpb25hcnkgZGljdGlvbmFyeV07CisKKyAgICBOU0RpY3Rpb25hcnkgKmV4
dHJhcyA9IFtpdGVtIGV4dHJhQXR0cmlidXRlc107CisgICAgZm9yIChpZCBrZXkgaW4gW2V4dHJh
cyBrZXlFbnVtZXJhdG9yXSkgeworICAgICAgICBpZiAoIVtrZXkgaXNLaW5kT2ZDbGFzczpbTlNT
dHJpbmcgY2xhc3NdXSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBpZCB2YWx1ZSA9
IFtleHRyYXMgb2JqZWN0Rm9yS2V5OmtleV07CisgICAgICAgIE5TU3RyaW5nICprZXlTdHJpbmcg
PSBrZXk7CisKKyAgICAgICAgaWYgKFtrZXkgaXNFcXVhbFRvU3RyaW5nOkAiTUlNRXR5cGUiXSkK
KyAgICAgICAgICAgIGtleVN0cmluZyA9IEAidHlwZSI7CisgICAgICAgIGVsc2UgaWYgKFtrZXkg
aXNFcXVhbFRvU3RyaW5nOkAiZGF0YVR5cGVOYW1lc3BhY2UiXSB8fCBba2V5IGlzRXF1YWxUb1N0
cmluZzpAInBpY3R1cmVUeXBlIl0pCisgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgZWxz
ZSBpZiAoW2tleSBpc0VxdWFsVG9TdHJpbmc6QCJkYXRhVHlwZSJdKSB7CisgICAgICAgICAgICBp
ZCBkYXRhVHlwZU5hbWVzcGFjZSA9IFtleHRyYXMgb2JqZWN0Rm9yS2V5OkAiZGF0YVR5cGVOYW1l
c3BhY2UiXTsKKyAgICAgICAgICAgIGlmICghZGF0YVR5cGVOYW1lc3BhY2UgfHwgIVtkYXRhVHlw
ZU5hbWVzcGFjZSBpc0tpbmRPZkNsYXNzOltOU1N0cmluZyBjbGFzc11dIHx8ICFbZGF0YVR5cGVO
YW1lc3BhY2UgaXNFcXVhbFRvU3RyaW5nOkAib3JnLmlhbmEubWVkaWEtdHlwZSJdKQorICAgICAg
ICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAga2V5U3RyaW5nID0gQCJ0eXBlIjsKKyAg
ICAgICAgfSBlbHNlIGlmIChbdmFsdWUgaXNLaW5kT2ZDbGFzczpbTlNTdHJpbmcgY2xhc3NdXSkg
eworICAgICAgICAgICAgaWYgKCFbdmFsdWUgbGVuZ3RoXSkKKyAgICAgICAgICAgICAgICBjb250
aW51ZTsKKyAgICAgICAgICAgIGtleVN0cmluZyA9IFtrZXkgbG93ZXJjYXNlU3RyaW5nXTsKKyAg
ICAgICAgfQorCisgICAgICAgIFtkaWN0aW9uYXJ5IHNldE9iamVjdDp2YWx1ZSBmb3JLZXk6a2V5
U3RyaW5nXTsKKyAgICB9CisKKyAgICBpZiAoaXRlbS5rZXkpCisgICAgICAgIFtkaWN0aW9uYXJ5
IHNldE9iamVjdDppdGVtLmtleSBmb3JLZXk6QCJrZXkiXTsKKworICAgIGlmIChpdGVtLmxvY2Fs
ZSkKKyAgICAgICAgW2RpY3Rpb25hcnkgc2V0T2JqZWN0Oml0ZW0ubG9jYWxlIGZvcktleTpAImxv
Y2FsZSJdOworCisgICAgaWYgKGl0ZW0udmFsdWUpCisgICAgICAgIFtkaWN0aW9uYXJ5IHNldE9i
amVjdDppdGVtLnZhbHVlIGZvcktleTpAImRhdGEiXTsKKworICAgIHJldHVybiBqc1ZhbHVlV2l0
aERpY3Rpb25hcnlJbkNvbnRleHQoZGljdGlvbmFyeSwgY29udGV4dCk7Cit9CisjZW5kaWYKKwor
fSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL21hYy9TZXJpYWxpemVkUGxhdGZvcm1SZXByZXNlbnRhdGlvbk1hYy5oIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1NlcmlhbGl6ZWRQbGF0Zm9ybVJlcHJlc2VudGF0
aW9uTWFjLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZmNTY0Y2EzOGQ0MTA4ZGVj
ZmUyZGNmODEwZTc0MTcwNzY3MjIxNmYuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1NlcmlhbGl6ZWRQbGF0
Zm9ybVJlcHJlc2VudGF0aW9uTWFjLmgKKysrIC9kZXYvbnVsbApAQCAtMSw2NSArMCwwIEBACi0v
KgotICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4g
QU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1F
TlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRB
LCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCi0gKi8KLQotI2lmbmRlZiBTZXJpYWxpemVkUGxhdGZvcm1SZXByZXNlbnRhdGlvbk1hY19o
Ci0jZGVmaW5lIFNlcmlhbGl6ZWRQbGF0Zm9ybVJlcHJlc2VudGF0aW9uTWFjX2gKLQotI2lmIEVO
QUJMRShWSURFT19UUkFDSykgJiYgRU5BQkxFKERBVEFDVUVfVkFMVUUpCi0KLSNpbmNsdWRlICJT
ZXJpYWxpemVkUGxhdGZvcm1SZXByZXNlbnRhdGlvbi5oIgotCi0jaWYgVVNFKEZPVU5EQVRJT04p
ICYmICFkZWZpbmVkKF9fT0JKQ19fKQotdHlwZWRlZiBzdHJ1Y3Qgb2JqY19vYmplY3QgKmlkOwot
I2VuZGlmCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3MgU2VyaWFsaXplZFBsYXRmb3Jt
UmVwcmVzZW50YXRpb25NYWMgOiBwdWJsaWMgU2VyaWFsaXplZFBsYXRmb3JtUmVwcmVzZW50YXRp
b24gewotcHVibGljOgotICAgIHZpcnR1YWwgflNlcmlhbGl6ZWRQbGF0Zm9ybVJlcHJlc2VudGF0
aW9uTWFjKCk7Ci0gICAgc3RhdGljIFJlZjxTZXJpYWxpemVkUGxhdGZvcm1SZXByZXNlbnRhdGlv
bj4gY3JlYXRlKGlkKTsKLQotICAgIEpTQzo6SlNWYWx1ZSBkZXNlcmlhbGl6ZShKU0M6OkpTR2xv
YmFsT2JqZWN0KikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgUmVmUHRyPEFycmF5QnVmZmVyPiBkYXRh
KCkgY29uc3Qgb3ZlcnJpZGU7Ci0KLSAgICBib29sIGlzRXF1YWwoY29uc3QgU2VyaWFsaXplZFBs
YXRmb3JtUmVwcmVzZW50YXRpb24mKSBjb25zdCBvdmVycmlkZTsKLQotICAgIFBsYXRmb3JtVHlw
ZSBwbGF0Zm9ybVR5cGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiBTZXJpYWxpemVkUGxhdGZv
cm1SZXByZXNlbnRhdGlvbjo6T2JqQzsgfQotCi0gICAgaWQgbmF0aXZlVmFsdWUoKSBjb25zdCB7
IHJldHVybiBtX25hdGl2ZVZhbHVlLmdldCgpOyB9Ci0KLXByaXZhdGU6Ci0gICAgU2VyaWFsaXpl
ZFBsYXRmb3JtUmVwcmVzZW50YXRpb25NYWMoaWQgbmF0aXZlVmFsdWUpOwotCi0gICAgUmV0YWlu
UHRyPGlkPiBtX25hdGl2ZVZhbHVlOwotfTsKLQotU2VyaWFsaXplZFBsYXRmb3JtUmVwcmVzZW50
YXRpb25NYWMqIHRvU2VyaWFsaXplZFBsYXRmb3JtUmVwcmVzZW50YXRpb25NYWMoU2VyaWFsaXpl
ZFBsYXRmb3JtUmVwcmVzZW50YXRpb24qKTsKLWNvbnN0IFNlcmlhbGl6ZWRQbGF0Zm9ybVJlcHJl
c2VudGF0aW9uTWFjKiB0b1NlcmlhbGl6ZWRQbGF0Zm9ybVJlcHJlc2VudGF0aW9uTWFjKGNvbnN0
IFNlcmlhbGl6ZWRQbGF0Zm9ybVJlcHJlc2VudGF0aW9uKik7Ci0KLX0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKLQotI2VuZGlmCi0jZW5kaWYgLy8gU2VyaWFsaXplZFBsYXRmb3JtUmVwcmVzZW50YXRp
b25NYWNfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1NlcmlhbGl6
ZWRQbGF0Zm9ybVJlcHJlc2VudGF0aW9uTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWFjL1NlcmlhbGl6ZWRQbGF0Zm9ybVJlcHJlc2VudGF0aW9uTWFjLm1tCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCA1ZDY0ZTExMGIxZTNiMmZlY2FjOTAxMWU5ZjdiYWY5ZDM4OGFiZmVh
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21hYy9TZXJpYWxpemVkUGxhdGZvcm1SZXByZXNlbnRhdGlvbk1hYy5t
bQorKysgL2Rldi9udWxsCkBAIC0xLDI0MSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAy
MDE0LCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0g
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0g
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lu
Y2x1ZGUgImNvbmZpZy5oIgotCi0jaWYgRU5BQkxFKFZJREVPX1RSQUNLKSAmJiBFTkFCTEUoREFU
QUNVRV9WQUxVRSkKLSNpbmNsdWRlICJTZXJpYWxpemVkUGxhdGZvcm1SZXByZXNlbnRhdGlvbk1h
Yy5oIgotCi0jaW1wb3J0ICJKU0RPTUNvbnZlcnRCdWZmZXJTb3VyY2UuaCIKLSNpbXBvcnQgPEFW
Rm91bmRhdGlvbi9BVk1ldGFkYXRhSXRlbS5oPgotI2ltcG9ydCA8Rm91bmRhdGlvbi9OU1N0cmlu
Zy5oPgotI2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvQVBJQ2FzdC5oPgotI2ltcG9ydCA8SmF2YVNj
cmlwdENvcmUvQXJyYXlCdWZmZXIuaD4KLSNpbXBvcnQgPEphdmFTY3JpcHRDb3JlL0pTQXJyYXlC
dWZmZXIuaD4KLSNpbXBvcnQgPEphdmFTY3JpcHRDb3JlL0pTQ29udGV4dFJlZi5oPgotI2ltcG9y
dCA8SmF2YVNjcmlwdENvcmUvSlNPYmplY3RSZWYuaD4KLSNpbXBvcnQgPEphdmFTY3JpcHRDb3Jl
L0phdmFTY3JpcHRDb3JlLmg+Ci0jaW1wb3J0IDxvYmpjL3J1bnRpbWUuaD4KLSNpbXBvcnQgPHd0
Zi90ZXh0L0Jhc2U2NC5oPgotCi0jaW1wb3J0IDxwYWwvY29jb2EvQVZGb3VuZGF0aW9uU29mdExp
bmsuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi0jaWYgSlNDX09CSkNfQVBJX0VOQUJMRUQK
LXN0YXRpYyBKU1ZhbHVlICpqc1ZhbHVlV2l0aERhdGFJbkNvbnRleHQoTlNEYXRhICosIEpTQ29u
dGV4dCAqKTsKLXN0YXRpYyBKU1ZhbHVlICpqc1ZhbHVlV2l0aEFycmF5SW5Db250ZXh0KE5TQXJy
YXkgKiwgSlNDb250ZXh0ICopOwotc3RhdGljIEpTVmFsdWUgKmpzVmFsdWVXaXRoRGljdGlvbmFy
eUluQ29udGV4dChOU0RpY3Rpb25hcnkgKiwgSlNDb250ZXh0ICopOwotc3RhdGljIEpTVmFsdWUg
KmpzVmFsdWVXaXRoQVZNZXRhZGF0YUl0ZW1JbkNvbnRleHQoQVZNZXRhZGF0YUl0ZW0gKiwgSlND
b250ZXh0ICopOwotc3RhdGljIEpTVmFsdWUgKmpzVmFsdWVXaXRoVmFsdWVJbkNvbnRleHQoaWQs
IEpTQ29udGV4dCAqKTsKLSNlbmRpZgotCi1TZXJpYWxpemVkUGxhdGZvcm1SZXByZXNlbnRhdGlv
bk1hYzo6U2VyaWFsaXplZFBsYXRmb3JtUmVwcmVzZW50YXRpb25NYWMoaWQgbmF0aXZlVmFsdWUp
Ci0gICAgOiBTZXJpYWxpemVkUGxhdGZvcm1SZXByZXNlbnRhdGlvbigpCi0gICAgLCBtX25hdGl2
ZVZhbHVlKG5hdGl2ZVZhbHVlKQotewotfQotCi1TZXJpYWxpemVkUGxhdGZvcm1SZXByZXNlbnRh
dGlvbk1hYzo6flNlcmlhbGl6ZWRQbGF0Zm9ybVJlcHJlc2VudGF0aW9uTWFjKCkKLXsKLX0KLQot
UmVmPFNlcmlhbGl6ZWRQbGF0Zm9ybVJlcHJlc2VudGF0aW9uPiBTZXJpYWxpemVkUGxhdGZvcm1S
ZXByZXNlbnRhdGlvbk1hYzo6Y3JlYXRlKGlkIG5hdGl2ZVZhbHVlKQotewotICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IFNlcmlhbGl6ZWRQbGF0Zm9ybVJlcHJlc2VudGF0aW9uTWFjKG5hdGl2ZVZh
bHVlKSk7Ci19Ci0KLVJlZlB0cjxBcnJheUJ1ZmZlcj4gU2VyaWFsaXplZFBsYXRmb3JtUmVwcmVz
ZW50YXRpb25NYWM6OmRhdGEoKSBjb25zdAotewotICAgIHJldHVybiBudWxscHRyOwotfQotCi1K
U0M6OkpTVmFsdWUgU2VyaWFsaXplZFBsYXRmb3JtUmVwcmVzZW50YXRpb25NYWM6OmRlc2VyaWFs
aXplKEpTQzo6SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QpIGNvbnN0Ci17Ci0j
aWYgSlNDX09CSkNfQVBJX0VOQUJMRUQKLSAgICBpZiAoIW1fbmF0aXZlVmFsdWUpCi0gICAgICAg
IHJldHVybiBKU0M6OmpzTnVsbCgpOwotCi0gICAgSlNHbG9iYWxDb250ZXh0UmVmIGpzR2xvYmFs
Q29udGV4dFJlZiA9IHRvR2xvYmFsUmVmKGxleGljYWxHbG9iYWxPYmplY3QpOwotICAgIEpTQ29u
dGV4dCAqanNDb250ZXh0ID0gW0pTQ29udGV4dCBjb250ZXh0V2l0aEpTR2xvYmFsQ29udGV4dFJl
Zjpqc0dsb2JhbENvbnRleHRSZWZdOwotICAgIEpTVmFsdWUgKnNlcmlhbGl6ZWRWYWx1ZSA9IGpz
VmFsdWVXaXRoVmFsdWVJbkNvbnRleHQobV9uYXRpdmVWYWx1ZS5nZXQoKSwganNDb250ZXh0KTsK
LQotICAgIHJldHVybiB0b0pTKGxleGljYWxHbG9iYWxPYmplY3QsIFtzZXJpYWxpemVkVmFsdWUg
SlNWYWx1ZVJlZl0pOwotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0obGV4aWNhbEdsb2JhbE9iamVj
dCk7Ci0gICAgcmV0dXJuIEpTQzo6anNOdWxsKCk7Ci0jZW5kaWYKLX0KLQotYm9vbCBTZXJpYWxp
emVkUGxhdGZvcm1SZXByZXNlbnRhdGlvbk1hYzo6aXNFcXVhbChjb25zdCBTZXJpYWxpemVkUGxh
dGZvcm1SZXByZXNlbnRhdGlvbiYgb3RoZXIpIGNvbnN0Ci17Ci0gICAgaWYgKG90aGVyLnBsYXRm
b3JtVHlwZSgpICE9IFNlcmlhbGl6ZWRQbGF0Zm9ybVJlcHJlc2VudGF0aW9uOjpPYmpDKQotICAg
ICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBjb25zdCBTZXJpYWxpemVkUGxhdGZvcm1SZXByZXNl
bnRhdGlvbk1hYyogb3RoZXJPYmpDID0gdG9TZXJpYWxpemVkUGxhdGZvcm1SZXByZXNlbnRhdGlv
bk1hYygmb3RoZXIpOwotCi0gICAgaWYgKCFtX25hdGl2ZVZhbHVlIHx8ICFvdGhlck9iakMtPm5h
dGl2ZVZhbHVlKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIHJldHVybiBbbV9uYXRp
dmVWYWx1ZS5nZXQoKSBpc0VxdWFsOm90aGVyT2JqQy0+bmF0aXZlVmFsdWUoKV07Ci19Ci0KLVNl
cmlhbGl6ZWRQbGF0Zm9ybVJlcHJlc2VudGF0aW9uTWFjKiB0b1NlcmlhbGl6ZWRQbGF0Zm9ybVJl
cHJlc2VudGF0aW9uTWFjKFNlcmlhbGl6ZWRQbGF0Zm9ybVJlcHJlc2VudGF0aW9uKiByZXApCi17
Ci0gICAgcmV0dXJuIGNvbnN0X2Nhc3Q8U2VyaWFsaXplZFBsYXRmb3JtUmVwcmVzZW50YXRpb25N
YWMqPih0b1NlcmlhbGl6ZWRQbGF0Zm9ybVJlcHJlc2VudGF0aW9uTWFjKGNvbnN0X2Nhc3Q8Y29u
c3QgU2VyaWFsaXplZFBsYXRmb3JtUmVwcmVzZW50YXRpb24qPihyZXApKSk7Ci19Ci0KLWNvbnN0
IFNlcmlhbGl6ZWRQbGF0Zm9ybVJlcHJlc2VudGF0aW9uTWFjKiB0b1NlcmlhbGl6ZWRQbGF0Zm9y
bVJlcHJlc2VudGF0aW9uTWFjKGNvbnN0IFNlcmlhbGl6ZWRQbGF0Zm9ybVJlcHJlc2VudGF0aW9u
KiByZXApCi17Ci0gICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04ocmVwLT5wbGF0
Zm9ybVR5cGUoKSA9PSBTZXJpYWxpemVkUGxhdGZvcm1SZXByZXNlbnRhdGlvbjo6T2JqQyk7Ci0g
ICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IFNlcmlhbGl6ZWRQbGF0Zm9ybVJlcHJlc2VudGF0
aW9uTWFjKj4ocmVwKTsKLX0KLQotI2lmIEpTQ19PQkpDX0FQSV9FTkFCTEVECi1zdGF0aWMgSlNW
YWx1ZSAqanNWYWx1ZVdpdGhWYWx1ZUluQ29udGV4dChpZCB2YWx1ZSwgSlNDb250ZXh0ICpjb250
ZXh0KQotewotICAgIGlmIChbdmFsdWUgaXNLaW5kT2ZDbGFzczpbTlNTdHJpbmcgY2xhc3NdXSB8
fCBbdmFsdWUgaXNLaW5kT2ZDbGFzczpbTlNOdW1iZXIgY2xhc3NdXSkKLSAgICAgICAgcmV0dXJu
IFtKU1ZhbHVlIHZhbHVlV2l0aE9iamVjdDp2YWx1ZSBpbkNvbnRleHQ6Y29udGV4dF07Ci0KLSAg
ICBpZiAoW3ZhbHVlIGlzS2luZE9mQ2xhc3M6W05TTG9jYWxlIGNsYXNzXV0pCi0gICAgICAgIHJl
dHVybiBbSlNWYWx1ZSB2YWx1ZVdpdGhPYmplY3Q6W3ZhbHVlIGxvY2FsZUlkZW50aWZpZXJdIGlu
Q29udGV4dDpjb250ZXh0XTsKLQotICAgIGlmIChbdmFsdWUgaXNLaW5kT2ZDbGFzczpbTlNEaWN0
aW9uYXJ5IGNsYXNzXV0pCi0gICAgICAgIHJldHVybiBqc1ZhbHVlV2l0aERpY3Rpb25hcnlJbkNv
bnRleHQodmFsdWUsIGNvbnRleHQpOwotCi0gICAgaWYgKFt2YWx1ZSBpc0tpbmRPZkNsYXNzOltO
U0FycmF5IGNsYXNzXV0pCi0gICAgICAgIHJldHVybiBqc1ZhbHVlV2l0aEFycmF5SW5Db250ZXh0
KHZhbHVlLCBjb250ZXh0KTsKLQotICAgIGlmIChbdmFsdWUgaXNLaW5kT2ZDbGFzczpbTlNEYXRh
IGNsYXNzXV0pCi0gICAgICAgIHJldHVybiBqc1ZhbHVlV2l0aERhdGFJbkNvbnRleHQodmFsdWUs
IGNvbnRleHQpOwotCi0gICAgaWYgKFt2YWx1ZSBpc0tpbmRPZkNsYXNzOlBBTDo6Z2V0QVZNZXRh
ZGF0YUl0ZW1DbGFzcygpXSkKLSAgICAgICAgcmV0dXJuIGpzVmFsdWVXaXRoQVZNZXRhZGF0YUl0
ZW1JbkNvbnRleHQodmFsdWUsIGNvbnRleHQpOwotCi0gICAgcmV0dXJuIG5pbDsKLX0KLQotc3Rh
dGljIEpTVmFsdWUgKmpzVmFsdWVXaXRoRGF0YUluQ29udGV4dChOU0RhdGEgKmRhdGEsIEpTQ29u
dGV4dCAqY29udGV4dCkKLXsKLSAgICBhdXRvIGRhdGFBcnJheSA9IEFycmF5QnVmZmVyOjp0cnlD
cmVhdGUoW2RhdGEgYnl0ZXNdLCBbZGF0YSBsZW5ndGhdKTsKLQotICAgIGF1dG8qIGxleGljYWxH
bG9iYWxPYmplY3QgPSB0b0pTKFtjb250ZXh0IEpTR2xvYmFsQ29udGV4dFJlZl0pOwotICAgIEpT
Qzo6SlNWYWx1ZSBhcnJheSA9IHRvSlMobGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpqc0Nhc3Q8
SlNET01HbG9iYWxPYmplY3QqPihsZXhpY2FsR2xvYmFsT2JqZWN0KSwgZGF0YUFycmF5LmdldCgp
KTsKLQotICAgIHJldHVybiBbSlNWYWx1ZSB2YWx1ZVdpdGhKU1ZhbHVlUmVmOnRvUmVmKGxleGlj
YWxHbG9iYWxPYmplY3QsIGFycmF5KSBpbkNvbnRleHQ6Y29udGV4dF07Ci19Ci0KLXN0YXRpYyBK
U1ZhbHVlICpqc1ZhbHVlV2l0aEFycmF5SW5Db250ZXh0KE5TQXJyYXkgKmFycmF5LCBKU0NvbnRl
eHQgKmNvbnRleHQpCi17Ci0gICAgSlNWYWx1ZVJlZiBleGNlcHRpb24gPSAwOwotICAgIEpTVmFs
dWUgKnJlc3VsdCA9IFtKU1ZhbHVlIHZhbHVlV2l0aE5ld0FycmF5SW5Db250ZXh0OmNvbnRleHRd
OwotICAgIEpTT2JqZWN0UmVmIHJlc3VsdE9iamVjdCA9IEpTVmFsdWVUb09iamVjdChbY29udGV4
dCBKU0dsb2JhbENvbnRleHRSZWZdLCBbcmVzdWx0IEpTVmFsdWVSZWZdLCAmZXhjZXB0aW9uKTsK
LSAgICBpZiAoZXhjZXB0aW9uKQotICAgICAgICByZXR1cm4gW0pTVmFsdWUgdmFsdWVXaXRoVW5k
ZWZpbmVkSW5Db250ZXh0OmNvbnRleHRdOwotCi0gICAgTlNVSW50ZWdlciBjb3VudCA9IFthcnJh
eSBjb3VudF07Ci0gICAgZm9yIChOU1VJbnRlZ2VyIGkgPSAwOyBpIDwgY291bnQ7ICsraSkgewot
ICAgICAgICBKU1ZhbHVlICp2YWx1ZSA9IGpzVmFsdWVXaXRoVmFsdWVJbkNvbnRleHQoW2FycmF5
IG9iamVjdEF0SW5kZXg6aV0sIGNvbnRleHQpOwotICAgICAgICBpZiAoIXZhbHVlKQotICAgICAg
ICAgICAgY29udGludWU7Ci0KLSAgICAgICAgSlNPYmplY3RTZXRQcm9wZXJ0eUF0SW5kZXgoW2Nv
bnRleHQgSlNHbG9iYWxDb250ZXh0UmVmXSwgcmVzdWx0T2JqZWN0LCAodW5zaWduZWQpaSwgW3Zh
bHVlIEpTVmFsdWVSZWZdLCAmZXhjZXB0aW9uKTsKLSAgICAgICAgaWYgKGV4Y2VwdGlvbikKLSAg
ICAgICAgICAgIGNvbnRpbnVlOwotICAgIH0KLQotICAgIHJldHVybiByZXN1bHQ7Ci19Ci0KLXN0
YXRpYyBKU1ZhbHVlICpqc1ZhbHVlV2l0aERpY3Rpb25hcnlJbkNvbnRleHQoTlNEaWN0aW9uYXJ5
ICpkaWN0aW9uYXJ5LCBKU0NvbnRleHQgKmNvbnRleHQpCi17Ci0gICAgSlNWYWx1ZVJlZiBleGNl
cHRpb24gPSAwOwotICAgIEpTVmFsdWUgKnJlc3VsdCA9IFtKU1ZhbHVlIHZhbHVlV2l0aE5ld09i
amVjdEluQ29udGV4dDpjb250ZXh0XTsKLSAgICBKU09iamVjdFJlZiByZXN1bHRPYmplY3QgPSBK
U1ZhbHVlVG9PYmplY3QoW2NvbnRleHQgSlNHbG9iYWxDb250ZXh0UmVmXSwgW3Jlc3VsdCBKU1Zh
bHVlUmVmXSwgJmV4Y2VwdGlvbik7Ci0gICAgaWYgKGV4Y2VwdGlvbikKLSAgICAgICAgcmV0dXJu
IFtKU1ZhbHVlIHZhbHVlV2l0aFVuZGVmaW5lZEluQ29udGV4dDpjb250ZXh0XTsKLQotICAgIGZv
ciAoaWQga2V5IGluIFtkaWN0aW9uYXJ5IGtleUVudW1lcmF0b3JdKSB7Ci0gICAgICAgIGlmICgh
W2tleSBpc0tpbmRPZkNsYXNzOltOU1N0cmluZyBjbGFzc11dKQotICAgICAgICAgICAgY29udGlu
dWU7Ci0KLSAgICAgICAgSlNWYWx1ZSAqdmFsdWUgPSBqc1ZhbHVlV2l0aFZhbHVlSW5Db250ZXh0
KFtkaWN0aW9uYXJ5IG9iamVjdEZvcktleTprZXldLCBjb250ZXh0KTsKLSAgICAgICAgaWYgKCF2
YWx1ZSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAgIGF1dG8gbmFtZSA9IE9wYXF1
ZUpTU3RyaW5nOjp0cnlDcmVhdGUoa2V5KTsKLSAgICAgICAgSlNPYmplY3RTZXRQcm9wZXJ0eShb
Y29udGV4dCBKU0dsb2JhbENvbnRleHRSZWZdLCByZXN1bHRPYmplY3QsIG5hbWUuZ2V0KCksIFt2
YWx1ZSBKU1ZhbHVlUmVmXSwgMCwgJmV4Y2VwdGlvbik7Ci0gICAgICAgIGlmIChleGNlcHRpb24p
Ci0gICAgICAgICAgICBjb250aW51ZTsKLSAgICB9Ci0KLSAgICByZXR1cm4gcmVzdWx0OwotfQot
Ci1zdGF0aWMgSlNWYWx1ZSAqanNWYWx1ZVdpdGhBVk1ldGFkYXRhSXRlbUluQ29udGV4dChBVk1l
dGFkYXRhSXRlbSAqaXRlbSwgSlNDb250ZXh0ICpjb250ZXh0KQotewotICAgIE5TTXV0YWJsZURp
Y3Rpb25hcnkgKmRpY3Rpb25hcnkgPSBbTlNNdXRhYmxlRGljdGlvbmFyeSBkaWN0aW9uYXJ5XTsK
LQotICAgIE5TRGljdGlvbmFyeSAqZXh0cmFzID0gW2l0ZW0gZXh0cmFBdHRyaWJ1dGVzXTsKLSAg
ICBmb3IgKGlkIGtleSBpbiBbZXh0cmFzIGtleUVudW1lcmF0b3JdKSB7Ci0gICAgICAgIGlmICgh
W2tleSBpc0tpbmRPZkNsYXNzOltOU1N0cmluZyBjbGFzc11dKQotICAgICAgICAgICAgY29udGlu
dWU7Ci0gICAgICAgIGlkIHZhbHVlID0gW2V4dHJhcyBvYmplY3RGb3JLZXk6a2V5XTsKLSAgICAg
ICAgTlNTdHJpbmcgKmtleVN0cmluZyA9IGtleTsKLQotICAgICAgICBpZiAoW2tleSBpc0VxdWFs
VG9TdHJpbmc6QCJNSU1FdHlwZSJdKQotICAgICAgICAgICAga2V5U3RyaW5nID0gQCJ0eXBlIjsK
LSAgICAgICAgZWxzZSBpZiAoW2tleSBpc0VxdWFsVG9TdHJpbmc6QCJkYXRhVHlwZU5hbWVzcGFj
ZSJdIHx8IFtrZXkgaXNFcXVhbFRvU3RyaW5nOkAicGljdHVyZVR5cGUiXSkKLSAgICAgICAgICAg
IGNvbnRpbnVlOwotICAgICAgICBlbHNlIGlmIChba2V5IGlzRXF1YWxUb1N0cmluZzpAImRhdGFU
eXBlIl0pIHsKLSAgICAgICAgICAgIGlkIGRhdGFUeXBlTmFtZXNwYWNlID0gW2V4dHJhcyBvYmpl
Y3RGb3JLZXk6QCJkYXRhVHlwZU5hbWVzcGFjZSJdOwotICAgICAgICAgICAgaWYgKCFkYXRhVHlw
ZU5hbWVzcGFjZSB8fCAhW2RhdGFUeXBlTmFtZXNwYWNlIGlzS2luZE9mQ2xhc3M6W05TU3RyaW5n
IGNsYXNzXV0gfHwgIVtkYXRhVHlwZU5hbWVzcGFjZSBpc0VxdWFsVG9TdHJpbmc6QCJvcmcuaWFu
YS5tZWRpYS10eXBlIl0pCi0gICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICBr
ZXlTdHJpbmcgPSBAInR5cGUiOwotICAgICAgICB9IGVsc2UgaWYgKFt2YWx1ZSBpc0tpbmRPZkNs
YXNzOltOU1N0cmluZyBjbGFzc11dKSB7Ci0gICAgICAgICAgICBpZiAoIVt2YWx1ZSBsZW5ndGhd
KQotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAga2V5U3RyaW5nID0gW2tl
eSBsb3dlcmNhc2VTdHJpbmddOwotICAgICAgICB9Ci0KLSAgICAgICAgW2RpY3Rpb25hcnkgc2V0
T2JqZWN0OnZhbHVlIGZvcktleTprZXlTdHJpbmddOwotICAgIH0KLQotICAgIGlmIChpdGVtLmtl
eSkKLSAgICAgICAgW2RpY3Rpb25hcnkgc2V0T2JqZWN0Oml0ZW0ua2V5IGZvcktleTpAImtleSJd
OwotCi0gICAgaWYgKGl0ZW0ubG9jYWxlKQotICAgICAgICBbZGljdGlvbmFyeSBzZXRPYmplY3Q6
aXRlbS5sb2NhbGUgZm9yS2V5OkAibG9jYWxlIl07Ci0KLSAgICBpZiAoaXRlbS52YWx1ZSkKLSAg
ICAgICAgW2RpY3Rpb25hcnkgc2V0T2JqZWN0Oml0ZW0udmFsdWUgZm9yS2V5OkAiZGF0YSJdOwot
Ci0gICAgcmV0dXJuIGpzVmFsdWVXaXRoRGljdGlvbmFyeUluQ29udGV4dChkaWN0aW9uYXJ5LCBj
b250ZXh0KTsKLX0KLSNlbmRpZgotCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCi0KLSNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZVRleHRUcmFj
a1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVUZXh0VHJh
Y2tQcm94eS5jcHAKaW5kZXggODBmNzhmN2IzYmU2ZDUzZjI4NTllOGM2ZTg1M2YyNThhYWVjNmJj
ZC4uYjc2ZGM5YjBkNDZmODZiNzc5NTdkM2IzYjc4NTQ1OWMzOTQ5YjJhNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZVRleHRUcmFja1Byb3h5LmNwcAor
KysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlVGV4dFRyYWNrUHJveHku
Y3BwCkBAIC0xMDIsMTcgKzEwMiwxNyBAQCB2b2lkIFJlbW90ZVRleHRUcmFja1Byb3h5OjphZGRE
YXRhQ3VlKGNvbnN0IE1lZGlhVGltZSYsIGNvbnN0IE1lZGlhVGltZSYsIGNvbnN0CiB9CiAKICNp
ZiBFTkFCTEUoREFUQUNVRV9WQUxVRSkKLXZvaWQgUmVtb3RlVGV4dFRyYWNrUHJveHk6OmFkZERh
dGFDdWUoY29uc3QgTWVkaWFUaW1lJiwgY29uc3QgTWVkaWFUaW1lJiwgUmVmPFNlcmlhbGl6ZWRQ
bGF0Zm9ybVJlcHJlc2VudGF0aW9uPiYmLCBjb25zdCBTdHJpbmcmKQordm9pZCBSZW1vdGVUZXh0
VHJhY2tQcm94eTo6YWRkRGF0YUN1ZShjb25zdCBNZWRpYVRpbWUmLCBjb25zdCBNZWRpYVRpbWUm
LCBSZWY8U2VyaWFsaXplZFBsYXRmb3JtRGF0YUN1ZT4mJiwgY29uc3QgU3RyaW5nJikKIHsKICAg
ICBub3RJbXBsZW1lbnRlZCgpOwogfQogCi12b2lkIFJlbW90ZVRleHRUcmFja1Byb3h5Ojp1cGRh
dGVEYXRhQ3VlKGNvbnN0IE1lZGlhVGltZSYsIGNvbnN0IE1lZGlhVGltZSYsIFNlcmlhbGl6ZWRQ
bGF0Zm9ybVJlcHJlc2VudGF0aW9uJikKK3ZvaWQgUmVtb3RlVGV4dFRyYWNrUHJveHk6OnVwZGF0
ZURhdGFDdWUoY29uc3QgTWVkaWFUaW1lJiwgY29uc3QgTWVkaWFUaW1lJiwgU2VyaWFsaXplZFBs
YXRmb3JtRGF0YUN1ZSYpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAotdm9pZCBSZW1v
dGVUZXh0VHJhY2tQcm94eTo6cmVtb3ZlRGF0YUN1ZShjb25zdCBNZWRpYVRpbWUmLCBjb25zdCBN
ZWRpYVRpbWUmLCBTZXJpYWxpemVkUGxhdGZvcm1SZXByZXNlbnRhdGlvbiYpCit2b2lkIFJlbW90
ZVRleHRUcmFja1Byb3h5OjpyZW1vdmVEYXRhQ3VlKGNvbnN0IE1lZGlhVGltZSYsIGNvbnN0IE1l
ZGlhVGltZSYsIFNlcmlhbGl6ZWRQbGF0Zm9ybURhdGFDdWUmKQogewogICAgIG5vdEltcGxlbWVu
dGVkKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVt
b3RlVGV4dFRyYWNrUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1v
dGVUZXh0VHJhY2tQcm94eS5oCmluZGV4IGNmNGE2NmFlYzY1NWU4YjdlZTk1Nzk5MTg2OWM0OTQ5
OTMyMzg1NmIuLmUyODZlYzQ4OTQ2NzNhNGYyYjU2MWQyMzhiMDZmNjI3NTM2Y2ZlNDUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVUZXh0VHJhY2tQcm94
eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVUZXh0VHJhY2tQ
cm94eS5oCkBAIC01Niw5ICs1Niw5IEBAIHByaXZhdGU6CiAgICAgdmlydHVhbCB2b2lkIGFkZERh
dGFDdWUoY29uc3QgTWVkaWFUaW1lJiBzdGFydCwgY29uc3QgTWVkaWFUaW1lJiBlbmQsIGNvbnN0
IHZvaWQqLCB1bnNpZ25lZCk7CiAKICNpZiBFTkFCTEUoREFUQUNVRV9WQUxVRSkKLSAgICB2aXJ0
dWFsIHZvaWQgYWRkRGF0YUN1ZShjb25zdCBNZWRpYVRpbWUmIHN0YXJ0LCBjb25zdCBNZWRpYVRp
bWUmIGVuZCwgUmVmPFNlcmlhbGl6ZWRQbGF0Zm9ybVJlcHJlc2VudGF0aW9uPiYmLCBjb25zdCBT
dHJpbmcmKTsKLSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlRGF0YUN1ZShjb25zdCBNZWRpYVRpbWUm
IHN0YXJ0LCBjb25zdCBNZWRpYVRpbWUmIGVuZCwgU2VyaWFsaXplZFBsYXRmb3JtUmVwcmVzZW50
YXRpb24mKTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlRGF0YUN1ZShjb25zdCBNZWRpYVRpbWUm
IHN0YXJ0LCBjb25zdCBNZWRpYVRpbWUmIGVuZCwgU2VyaWFsaXplZFBsYXRmb3JtUmVwcmVzZW50
YXRpb24mKTsKKyAgICB2aXJ0dWFsIHZvaWQgYWRkRGF0YUN1ZShjb25zdCBNZWRpYVRpbWUmIHN0
YXJ0LCBjb25zdCBNZWRpYVRpbWUmIGVuZCwgUmVmPFNlcmlhbGl6ZWRQbGF0Zm9ybURhdGFDdWU+
JiYsIGNvbnN0IFN0cmluZyYpOworICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVEYXRhQ3VlKGNvbnN0
IE1lZGlhVGltZSYgc3RhcnQsIGNvbnN0IE1lZGlhVGltZSYgZW5kLCBTZXJpYWxpemVkUGxhdGZv
cm1EYXRhQ3VlJik7CisgICAgdmlydHVhbCB2b2lkIHJlbW92ZURhdGFDdWUoY29uc3QgTWVkaWFU
aW1lJiBzdGFydCwgY29uc3QgTWVkaWFUaW1lJiBlbmQsIFNlcmlhbGl6ZWRQbGF0Zm9ybURhdGFD
dWUmKTsKICNlbmRpZgogCiAgICAgdmlydHVhbCB2b2lkIGFkZEdlbmVyaWNDdWUoR2VuZXJpY0N1
ZURhdGEmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEv
TWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLm1lc3NhZ2VzLmluIGIvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUubWVzc2FnZXMuaW4KaW5k
ZXggZjQ1OTk4MDEwZTkzNzQxMzU4ODEyNDU0MDc2ZTUxZGZhNmMxOTdlZi4uYzQwNGRjNjc0MDcz
N2EzNjhkNGZhNjk0MmE4ZTk2MDk3Nzg0NjA3YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9X
ZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUubWVzc2FnZXMuaW4K
KysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZh
dGVSZW1vdGUubWVzc2FnZXMuaW4KQEAgLTUxLDkgKzUxLDkgQEAgbWVzc2FnZXMgLT4gTWVkaWFQ
bGF5ZXJQcml2YXRlUmVtb3RlIE5vdFJlZkNvdW50ZWQgewogICAgIFBhcnNlV2ViVlRUQ3VlRGF0
YVN0cnVjdChXZWJLaXQ6OlRyYWNrUHJpdmF0ZVJlbW90ZUlkZW50aWZpZXIgdHJhY2tJRCwgV2Vi
Q29yZTo6SVNPV2ViVlRUQ3VlIGN1ZURhdGEpCiAKICAgICAjIyBBZGREYXRhQ3VlKE1lZGlhVGlt
ZSBzdGFydCwgTWVkaWFUaW1lIGVuZCwgSVBDOjpEYXRhUmVmZXJlbmNlIGRhdGEpCi0gICAgIyMg
QWRkRGF0YUN1ZShNZWRpYVRpbWUgc3RhcnQsIE1lZGlhVGltZSBlbmQsIFdlYkNvcmU6OlNlcmlh
bGl6ZWRQbGF0Zm9ybVJlcHJlc2VudGF0aW9uIGRhdGEsIFN0cmluZyB0eXBlKQotICAgICMjIFVw
ZGF0ZURhdGFDdWUoTWVkaWFUaW1lIHN0YXJ0LCBNZWRpYVRpbWUgZW5kLCBXZWJDb3JlOjpTZXJp
YWxpemVkUGxhdGZvcm1SZXByZXNlbnRhdGlvbiBkYXRhKQotICAgICMjIFJlbW92ZURhdGFDdWUo
TWVkaWFUaW1lIHN0YXJ0LCBNZWRpYVRpbWUgZW5kLCBXZWJDb3JlOjpTZXJpYWxpemVkUGxhdGZv
cm1SZXByZXNlbnRhdGlvbiBkYXRhKQorICAgICMjIEFkZERhdGFDdWUoTWVkaWFUaW1lIHN0YXJ0
LCBNZWRpYVRpbWUgZW5kLCBXZWJDb3JlOjpTZXJpYWxpemVkUGxhdGZvcm1EYXRhQ3VlIGRhdGEs
IFN0cmluZyB0eXBlKQorICAgICMjIFVwZGF0ZURhdGFDdWUoTWVkaWFUaW1lIHN0YXJ0LCBNZWRp
YVRpbWUgZW5kLCBXZWJDb3JlOjpTZXJpYWxpemVkUGxhdGZvcm1EYXRhQ3VlIGRhdGEpCisgICAg
IyMgUmVtb3ZlRGF0YUN1ZShNZWRpYVRpbWUgc3RhcnQsIE1lZGlhVGltZSBlbmQsIFdlYkNvcmU6
OlNlcmlhbGl6ZWRQbGF0Zm9ybURhdGFDdWUgZGF0YSkKIAogICAgICMjIEFkZEdlbmVyaWNDdWUo
V2ViQ29yZTo6R2VuZXJpY0N1ZURhdGEgY3VlKQogICAgICMjIFVwZGF0ZUdlbmVyaWNDdWUoV2Vi
Q29yZTo6R2VuZXJpY0N1ZURhdGEgY3VlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9tZWRpYS9UZXh0VHJhY2tQcml2YXRlUmVtb3RlLmNwcCBiL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvVGV4dFRyYWNrUHJpdmF0ZVJlbW90ZS5jcHAKaW5kZXgg
YjAwMDQwZjQ1ZjY3NmUwZDBjYTQ2MWRiY2Q1OTkzN2M3ZWY3N2E3OC4uNWM3ODc2NGUwYzE3NDEw
Y2IyMzc2OGE0NTE1YmQ0MjA0NTgzNDNmMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQ
cm9jZXNzL0dQVS9tZWRpYS9UZXh0VHJhY2tQcml2YXRlUmVtb3RlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1RleHRUcmFja1ByaXZhdGVSZW1vdGUuY3BwCkBA
IC05NCwxNyArOTQsMTcgQEAgdm9pZCBUZXh0VHJhY2tQcml2YXRlUmVtb3RlOjphZGREYXRhQ3Vl
KGNvbnN0IE1lZGlhVGltZSYgc3RhcnQsIGNvbnN0IE1lZGlhVGltZSYKIH0KIAogI2lmIEVOQUJM
RShEQVRBQ1VFX1ZBTFVFKQotdm9pZCBUZXh0VHJhY2tQcml2YXRlUmVtb3RlOjphZGREYXRhQ3Vl
KGNvbnN0IE1lZGlhVGltZSYgc3RhcnQsIGNvbnN0IE1lZGlhVGltZSYgZW5kLCBSZWY8U2VyaWFs
aXplZFBsYXRmb3JtUmVwcmVzZW50YXRpb24+JiYsIGNvbnN0IFN0cmluZyYpCit2b2lkIFRleHRU
cmFja1ByaXZhdGVSZW1vdGU6OmFkZERhdGFDdWUoY29uc3QgTWVkaWFUaW1lJiBzdGFydCwgY29u
c3QgTWVkaWFUaW1lJiBlbmQsIFJlZjxTZXJpYWxpemVkUGxhdGZvcm1EYXRhQ3VlPiYmLCBjb25z
dCBTdHJpbmcmKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKLXZvaWQgVGV4dFRyYWNr
UHJpdmF0ZVJlbW90ZTo6dXBkYXRlRGF0YUN1ZShjb25zdCBNZWRpYVRpbWUmIHN0YXJ0LCBjb25z
dCBNZWRpYVRpbWUmIGVuZCwgU2VyaWFsaXplZFBsYXRmb3JtUmVwcmVzZW50YXRpb24mKQordm9p
ZCBUZXh0VHJhY2tQcml2YXRlUmVtb3RlOjp1cGRhdGVEYXRhQ3VlKGNvbnN0IE1lZGlhVGltZSYg
c3RhcnQsIGNvbnN0IE1lZGlhVGltZSYgZW5kLCBTZXJpYWxpemVkUGxhdGZvcm1EYXRhQ3VlJikK
IHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCi12b2lkIFRleHRUcmFja1ByaXZhdGVSZW1v
dGU6OnJlbW92ZURhdGFDdWUoY29uc3QgTWVkaWFUaW1lJiBzdGFydCwgY29uc3QgTWVkaWFUaW1l
JiBlbmQsIFNlcmlhbGl6ZWRQbGF0Zm9ybVJlcHJlc2VudGF0aW9uJikKK3ZvaWQgVGV4dFRyYWNr
UHJpdmF0ZVJlbW90ZTo6cmVtb3ZlRGF0YUN1ZShjb25zdCBNZWRpYVRpbWUmIHN0YXJ0LCBjb25z
dCBNZWRpYVRpbWUmIGVuZCwgU2VyaWFsaXplZFBsYXRmb3JtRGF0YUN1ZSYpCiB7CiAgICAgbm90
SW1wbGVtZW50ZWQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9H
UFUvbWVkaWEvVGV4dFRyYWNrUHJpdmF0ZVJlbW90ZS5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9tZWRpYS9UZXh0VHJhY2tQcml2YXRlUmVtb3RlLmgKaW5kZXggNmNmMzk3NWZlYzZk
OGUzYTU4M2JhZmFkMzdlYjk3M2E0YjcwZmU3My4uNmFjOWM2OWQwMTkyMGQ5Yzk0MTMyYjg4M2U1
NmY2NWJkOGVjM2NjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9t
ZWRpYS9UZXh0VHJhY2tQcml2YXRlUmVtb3RlLmgKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL0dQVS9tZWRpYS9UZXh0VHJhY2tQcml2YXRlUmVtb3RlLmgKQEAgLTQ3LDkgKzQ3LDkgQEAg
cHVibGljOgogICAgIHZvaWQgYWRkRGF0YUN1ZShjb25zdCBNZWRpYVRpbWUmIHN0YXJ0LCBjb25z
dCBNZWRpYVRpbWUmIGVuZCwgY29uc3Qgdm9pZCosIHVuc2lnbmVkKTsKIAogI2lmIEVOQUJMRShE
QVRBQ1VFX1ZBTFVFKQotICAgIHZvaWQgYWRkRGF0YUN1ZShjb25zdCBNZWRpYVRpbWUmIHN0YXJ0
LCBjb25zdCBNZWRpYVRpbWUmIGVuZCwgUmVmPFNlcmlhbGl6ZWRQbGF0Zm9ybVJlcHJlc2VudGF0
aW9uPiYmLCBjb25zdCBTdHJpbmcmKTsKLSAgICB2b2lkIHVwZGF0ZURhdGFDdWUoY29uc3QgTWVk
aWFUaW1lJiBzdGFydCwgY29uc3QgTWVkaWFUaW1lJiBlbmQsIFNlcmlhbGl6ZWRQbGF0Zm9ybVJl
cHJlc2VudGF0aW9uJik7Ci0gICAgdm9pZCByZW1vdmVEYXRhQ3VlKGNvbnN0IE1lZGlhVGltZSYg
c3RhcnQsIGNvbnN0IE1lZGlhVGltZSYgZW5kLCBTZXJpYWxpemVkUGxhdGZvcm1SZXByZXNlbnRh
dGlvbiYpOworICAgIHZvaWQgYWRkRGF0YUN1ZShjb25zdCBNZWRpYVRpbWUmIHN0YXJ0LCBjb25z
dCBNZWRpYVRpbWUmIGVuZCwgUmVmPFNlcmlhbGl6ZWRQbGF0Zm9ybURhdGFDdWU+JiYsIGNvbnN0
IFN0cmluZyYpOworICAgIHZvaWQgdXBkYXRlRGF0YUN1ZShjb25zdCBNZWRpYVRpbWUmIHN0YXJ0
LCBjb25zdCBNZWRpYVRpbWUmIGVuZCwgU2VyaWFsaXplZFBsYXRmb3JtRGF0YUN1ZSYpOworICAg
IHZvaWQgcmVtb3ZlRGF0YUN1ZShjb25zdCBNZWRpYVRpbWUmIHN0YXJ0LCBjb25zdCBNZWRpYVRp
bWUmIGVuZCwgU2VyaWFsaXplZFBsYXRmb3JtRGF0YUN1ZSYpOwogI2VuZGlmCiAKICAgICB2b2lk
IGFkZEdlbmVyaWNDdWUoR2VuZXJpY0N1ZURhdGEmKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>390650</attachid>
            <date>2020-02-13 08:41:03 -0800</date>
            <delta_ts>2020-02-13 08:46:33 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-207695-20200213084102.patch</filename>
            <type>text/plain</type>
            <size>61497</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU2NTA0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzljYzc5MDhlOTUyOWFj
YWRmOWRjNmVkOTFlZTQ0MzI5ODIxMmQzMy4uMzA2NjJmNDZkOGU5ZTY5NTI2Yzg2YjFmOTFiMWM1
NmZiMDZhMGEwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ5IEBACisyMDIwLTAyLTEzICBFcmlj
IENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIFJlbmFtZSBTZXJp
YWxpemVkUGxhdGZvcm1SZXByZXNlbnRhdGlvbiB0byBTZXJpYWxpemVkUGxhdGZvcm1EYXRhQ3Vl
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDc2OTUK
KyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU5NDIyNjczPgorCisgICAgICAgIFJldmlld2VkIGJ5
IFlvdWVubiBGYWJsZXQuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBubyBmdW5jdGlvbmFsIGNo
YW5nZS4KKworICAgICAgICAqIFNvdXJjZXNDb2NvYS50eHQ6CisgICAgICAgICogV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGh0bWwvdHJhY2svRGF0YUN1ZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpEYXRhQ3VlOjpEYXRhQ3VlKToKKyAgICAgICAgKFdlYkNv
cmU6OkRhdGFDdWU6OmN1ZUNvbnRlbnRzTWF0Y2ggY29uc3QpOgorICAgICAgICAqIGh0bWwvdHJh
Y2svRGF0YUN1ZS5oOgorICAgICAgICAqIGh0bWwvdHJhY2svSW5iYW5kRGF0YVRleHRUcmFjay5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpJbmJhbmREYXRhVGV4dFRyYWNrOjphZGREYXRhQ3VlKToK
KyAgICAgICAgKFdlYkNvcmU6OkluYmFuZERhdGFUZXh0VHJhY2s6OnVwZGF0ZURhdGFDdWUpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5iYW5kRGF0YVRleHRUcmFjazo6cmVtb3ZlRGF0YUN1ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbmJhbmREYXRhVGV4dFRyYWNrOjpyZW1vdmVDdWUpOgorICAgICAg
ICAqIGh0bWwvdHJhY2svSW5iYW5kRGF0YVRleHRUcmFjay5oOgorICAgICAgICAqIGh0bWwvdHJh
Y2svSW5iYW5kVGV4dFRyYWNrLmg6CisgICAgICAgICogcGxhdGZvcm0vU2VyaWFsaXplZFBsYXRm
b3JtRGF0YUN1ZS5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2VyaWFs
aXplZFBsYXRmb3JtUmVwcmVzZW50YXRpb24uaC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9JbmJhbmRUZXh0VHJhY2tQcml2YXRlQ2xpZW50Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL0luYmFuZE1ldGFkYXRhVGV4dFRyYWNrUHJpdmF0ZUFWRi5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpJbmJhbmRNZXRhZGF0YVRleHRUcmFja1ByaXZhdGVBVkY6OmFk
ZERhdGFDdWUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9JbmJh
bmRNZXRhZGF0YVRleHRUcmFja1ByaXZhdGVBVkYuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpD
Lm1tOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2Jq
Qzo6bWV0YWRhdGFEaWRBcnJpdmUpOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9TZXJpYWxpemVk
UGxhdGZvcm1EYXRhQ3VlTWFjLmg6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tYWMvU2VyaWFsaXplZFBsYXRmb3JtUmVwcmVzZW50YXRpb25NYWMuaC4KKyAgICAgICAgKFdl
YkNvcmU6OlNlcmlhbGl6ZWRQbGF0Zm9ybURhdGFDdWVNYWM6Om5hdGl2ZVZhbHVlIGNvbnN0KToK
KyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvU2VyaWFsaXplZFBsYXRmb3JtRGF0YUN1ZU1hYy5tbTog
UmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TZXJpYWxpemVkUGxhdGZv
cm1SZXByZXNlbnRhdGlvbk1hYy5tbS4KKyAgICAgICAgKFdlYkNvcmU6OlNlcmlhbGl6ZWRQbGF0
Zm9ybURhdGFDdWVNYWM6OlNlcmlhbGl6ZWRQbGF0Zm9ybURhdGFDdWVNYWMpOgorICAgICAgICAo
V2ViQ29yZTo6U2VyaWFsaXplZFBsYXRmb3JtRGF0YUN1ZU1hYzo6flNlcmlhbGl6ZWRQbGF0Zm9y
bURhdGFDdWVNYWMpOgorICAgICAgICAoV2ViQ29yZTo6U2VyaWFsaXplZFBsYXRmb3JtRGF0YUN1
ZU1hYzo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNlcmlhbGl6ZWRQbGF0Zm9ybURhdGFD
dWVNYWM6OmRhdGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2VyaWFsaXplZFBsYXRmb3Jt
RGF0YUN1ZU1hYzo6ZGVzZXJpYWxpemUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2VyaWFs
aXplZFBsYXRmb3JtRGF0YUN1ZU1hYzo6aXNFcXVhbCBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
Ojp0b1NlcmlhbGl6ZWRQbGF0Zm9ybURhdGFDdWVNYWMpOgorICAgICAgICAoV2ViQ29yZTo6anNW
YWx1ZVdpdGhWYWx1ZUluQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpqc1ZhbHVlV2l0aERh
dGFJbkNvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6anNWYWx1ZVdpdGhBcnJheUluQ29udGV4
dCk6CisgICAgICAgIChXZWJDb3JlOjpqc1ZhbHVlV2l0aERpY3Rpb25hcnlJbkNvbnRleHQpOgor
ICAgICAgICAoV2ViQ29yZTo6anNWYWx1ZVdpdGhBVk1ldGFkYXRhSXRlbUluQ29udGV4dCk6CisK
IDIwMjAtMDItMTIgIFlvc2hpYWtpIEppdHN1a2F3YSAgPHlvc2hpYWtpLmppdHN1a2F3YUBzb255
LmNvbT4KIAogICAgICAgICBbV2ViQ3J5cHRvXVtDb21tb25DcnlwdG9dIEluY29ycmVjdCBBRVMt
Q1RSIHdpdGggY291bnRlckxlbmd0aCBsb25nZXIgdGhhbiA2NApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvSGVhZGVycy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKaW5k
ZXggYWY4Nzc3ZTNmMDViZmIzYTJkYWI0MDc4ZmU2ZGE4MGU0ZTdkMjI2MC4uMWNkNzExZTFmZWMy
NWNhNWU0NTRkMGVkODI2ZTk1NzAxMzRkZDZlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
SGVhZGVycy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCkBAIC05OTQs
NyArOTk0LDcgQEAgc2V0KFdlYkNvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVBREVSUwogICAgIHBs
YXRmb3JtL1Njcm9sbGJhclRoZW1lLmgKICAgICBwbGF0Zm9ybS9TY3JvbGxiYXJUaGVtZUNvbXBv
c2l0ZS5oCiAgICAgcGxhdGZvcm0vU2VhcmNoUG9wdXBNZW51LmgKLSAgICBwbGF0Zm9ybS9TZXJp
YWxpemVkUGxhdGZvcm1SZXByZXNlbnRhdGlvbi5oCisgICAgcGxhdGZvcm0vU2VyaWFsaXplZFBs
YXRmb3JtRGF0YUN1ZS5oCiAgICAgcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmgKICAgICBwbGF0Zm9y
bS9TaGFyZWRTdHJpbmdIYXNoLmgKICAgICBwbGF0Zm9ybS9TdWRkZW5UZXJtaW5hdGlvbi5oCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybU1hYy5jbWFrZSBiL1NvdXJjZS9XZWJD
b3JlL1BsYXRmb3JtTWFjLmNtYWtlCmluZGV4IGJmNGFkMzI4NjM0MjMwZjMzNDEwYmIxMjAyMjA5
MWYyMmIyZTA5OGEuLjkzMzUwZDdkMzQwMmJjZDU4NjBjNGNkMGU0ZmRjNGJiZWM1ZWMxMTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlCkBAIC0zODEsNyArMzgxLDcgQEAgbGlzdChBUFBFTkQg
V2ViQ29yZV9TT1VSQ0VTCiAgICAgcGxhdGZvcm0vbWFjL1Njcm9sbEFuaW1hdG9yTWFjLm1tCiAg
ICAgcGxhdGZvcm0vbWFjL1Njcm9sbFZpZXdNYWMubW0KICAgICBwbGF0Zm9ybS9tYWMvU2Nyb2xs
YmFyVGhlbWVNYWMubW0KLSAgICBwbGF0Zm9ybS9tYWMvU2VyaWFsaXplZFBsYXRmb3JtUmVwcmVz
ZW50YXRpb25NYWMubW0KKyAgICBwbGF0Zm9ybS9tYWMvU2VyaWFsaXplZFBsYXRmb3JtRGF0YUN1
ZU1hYy5tbQogICAgIHBsYXRmb3JtL21hYy9TdHJpbmdVdGlsaXRpZXMubW0KICAgICBwbGF0Zm9y
bS9tYWMvU3VkZGVuVGVybWluYXRpb24ubW0KICAgICBwbGF0Zm9ybS9tYWMvVGhlbWVNYWMubW0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQgYi9Tb3VyY2UvV2Vi
Q29yZS9Tb3VyY2VzQ29jb2EudHh0CmluZGV4IGFiM2E1Nzk0OTBjOTNhYTUyMzBhNjRjZThiMzg5
NmM5YjkxMGQyODUuLmEwNWUwMWNkZWYyY2ZmMTZhYjgzYzVkNGYwNjE2YjBjYzUxNmRlNDkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKKysrIGIvU291cmNlL1dl
YkNvcmUvU291cmNlc0NvY29hLnR4dApAQCAtNDYzLDcgKzQ2Myw3IEBAIHBsYXRmb3JtL21hYy9T
U0xLZXlHZW5lcmF0b3JNYWMubW0KIHBsYXRmb3JtL21hYy9TY3JvbGxBbmltYXRvck1hYy5tbSBA
bm8tdW5pZnkKIHBsYXRmb3JtL21hYy9TY3JvbGxWaWV3TWFjLm1tCiBwbGF0Zm9ybS9tYWMvU2Ny
b2xsYmFyVGhlbWVNYWMubW0gQG5vLXVuaWZ5Ci1wbGF0Zm9ybS9tYWMvU2VyaWFsaXplZFBsYXRm
b3JtUmVwcmVzZW50YXRpb25NYWMubW0KK3BsYXRmb3JtL21hYy9TZXJpYWxpemVkUGxhdGZvcm1E
YXRhQ3VlTWFjLm1tCiBwbGF0Zm9ybS9tYWMvU3RyaW5nVXRpbGl0aWVzLm1tCiBwbGF0Zm9ybS9t
YWMvU3VkZGVuVGVybWluYXRpb24ubW0KIHBsYXRmb3JtL21hYy9UaGVtZU1hYy5tbQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDVm
YWQ1YzE5YjhlOGQ2NWRmMjlkZDJhMWY1NTNmN2Y2ZTJmMjliMzkuLjFiM2QyOGEyZjYyNGQwMGY3
OGEwNjBmNTY1MjFiODU4MjUxMmZjMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEzNyw4ICsxMzcsOCBAQAogCQkwNzY5NzA4
NzE0NjNBRDg3MDBGNTAyQ0YgLyogVGV4dFRyYWNrTGlzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDc2OTcwODUxNDYzQUQ4NzAwRjUwMkNGIC8qIFRl
eHRUcmFja0xpc3QuaCAqLzsgfTsKIAkJMDc2RjBEMEUxMkI4MTkyNzAwQzI2QUE0IC8qIE1lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMDc2RjBEMEExMkI4MTkyNzAwQzI2QUE0IC8qIE1lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbi5oICovOyB9OwogCQkwNzc2NjRGRDE4M0U2QjVDMDAxMzNCOTIg
LyogSlNRdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDc3NjY0RkIxODNFNkI1QzAwMTMzQjkyIC8qIEpTUXVp
Y2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQuaCAqLzsgfTsKLQkJMDc3QUYxNDAxOEY0QUU0MDAwMDFF
RDYxIC8qIFNlcmlhbGl6ZWRQbGF0Zm9ybVJlcHJlc2VudGF0aW9uLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzdBRjEzRTE4RjRBRTQwMDAwMUVENjEg
LyogU2VyaWFsaXplZFBsYXRmb3JtUmVwcmVzZW50YXRpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQkwNzdBRjE0MzE4RjRCMUJCMDAwMUVENjEg
LyogU2VyaWFsaXplZFBsYXRmb3JtUmVwcmVzZW50YXRpb25NYWMuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3N0FGMTQxMThGNEIxQkIwMDAxRUQ2MSAv
KiBTZXJpYWxpemVkUGxhdGZvcm1SZXByZXNlbnRhdGlvbk1hYy5oICovOyB9OworCQkwNzdBRjE0
MDE4RjRBRTQwMDAwMUVENjEgLyogU2VyaWFsaXplZFBsYXRmb3JtRGF0YUN1ZS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDc3QUYxM0UxOEY0QUU0MDAw
MDFFRDYxIC8qIFNlcmlhbGl6ZWRQbGF0Zm9ybURhdGFDdWUuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwNzdBRjE0MzE4RjRCMUJCMDAwMUVENjEg
LyogU2VyaWFsaXplZFBsYXRmb3JtRGF0YUN1ZU1hYy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDc3QUYxNDExOEY0QjFCQjAwMDFFRDYxIC8qIFNlcmlh
bGl6ZWRQbGF0Zm9ybURhdGFDdWVNYWMuaCAqLzsgfTsKIAkJMDc3QjY0MTMxQjk0RjEyRTAwM0U5
QUQ1IC8qIE1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJNb2NrLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzdCNjQxMTFCOTRGMTJFMDAzRTlBRDUgLyog
TWVkaWFQbGF5YmFja1RhcmdldFBpY2tlck1vY2suaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwNzdCNjQxNzFCOTVGNzAzMDAzRTlBRDUgLyogTWVk
aWFQbGF5YmFja1RhcmdldE1vY2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDA3N0I2NDE1MUI5NUY3MDMwMDNFOUFENSAvKiBNZWRpYVBsYXliYWNrVGFy
Z2V0TW9jay5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTA3ODMyMjg1MTgwMTNFRDgwMDk5OUUwQyAvKiBNZWRpYVN0cmVhbUF1ZGlvU291cmNlLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzgzMjI4MzE4
MDEzRUQ4MDA5OTlFMEMgLyogTWVkaWFTdHJlYW1BdWRpb1NvdXJjZS5oICovOyB9OwpAQCAtNTQ3
Niw5ICs1NDc2LDkgQEAKIAkJMDc2RjBEMEExMkI4MTkyNzAwQzI2QUE0IC8qIE1lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBN
ZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMDc3NjY0RkExODNFNkI1QzAwMTMzQjkyIC8qIEpTUXVpY2tUaW1lUGx1Z2luUmVwbGFj
ZW1lbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNRdWlja1Rp
bWVQbHVnaW5SZXBsYWNlbWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3
NzY2NEZCMTgzRTZCNUMwMDEzM0I5MiAvKiBKU1F1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTUXVpY2tUaW1lUGx1Z2luUmVwbGFj
ZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMDc3QUYxM0UxOEY0QUU0MDAw
MDFFRDYxIC8qIFNlcmlhbGl6ZWRQbGF0Zm9ybVJlcHJlc2VudGF0aW9uLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNlcmlhbGl6ZWRQbGF0Zm9ybVJlcHJlc2VudGF0aW9uLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTA3N0FGMTQxMThGNEIxQkIwMDAxRUQ2MSAv
KiBTZXJpYWxpemVkUGxhdGZvcm1SZXByZXNlbnRhdGlvbk1hYy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBTZXJpYWxpemVkUGxhdGZvcm1SZXByZXNlbnRhdGlvbk1hYy5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkwNzdBRjE0MjE4RjRCMUJCMDAwMUVENjEgLyog
U2VyaWFsaXplZFBsYXRmb3JtUmVwcmVzZW50YXRpb25NYWMubW0gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5vYmpjcHA7IHBhdGggPSBTZXJpYWxpemVkUGxhdGZvcm1SZXByZXNlbnRhdGlvbk1h
Yy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDc3QUYxM0UxOEY0QUU0MDAwMDFF
RDYxIC8qIFNlcmlhbGl6ZWRQbGF0Zm9ybURhdGFDdWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gU2VyaWFsaXplZFBsYXRmb3JtRGF0YUN1ZS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQkwNzdBRjE0MTE4RjRCMUJCMDAwMUVENjEgLyogU2VyaWFsaXplZFBsYXRm
b3JtRGF0YUN1ZU1hYy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTZXJpYWxp
emVkUGxhdGZvcm1EYXRhQ3VlTWFjLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTA3
N0FGMTQyMThGNEIxQkIwMDAxRUQ2MSAvKiBTZXJpYWxpemVkUGxhdGZvcm1EYXRhQ3VlTWFjLm1t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gU2VyaWFsaXplZFBsYXRm
b3JtRGF0YUN1ZU1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDc3QjY0MTAx
Qjk0RjEyRTAwM0U5QUQ1IC8qIE1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJNb2NrLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1lZGlhUGxheWJhY2tUYXJnZXRQaWNr
ZXJNb2NrLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDc3QjY0MTExQjk0RjEy
RTAwM0U5QUQ1IC8qIE1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJNb2NrLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJNb2NrLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3N0I2NDE0MUI5NUY3MDMwMDNFOUFENSAvKiBN
ZWRpYVBsYXliYWNrVGFyZ2V0TW9jay5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBNZWRpYVBsYXliYWNrVGFyZ2V0TW9jay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CkBAIC0yMDQ2Niw4ICsyMDQ2Niw4IEBACiAJCQkJQkM4Qjg1M0MwRTdDN0YxMTAwQUI2
OTg0IC8qIFNjcm9sbGJhclRoZW1lTWFjLmggKi8sCiAJCQkJQkNFRjg2OUUwRTg0NEU5RDAwQTg1
Q0Q1IC8qIFNjcm9sbGJhclRoZW1lTWFjLm1tICovLAogCQkJCTkzNTM2NzZBMDlBRUQ4OEIwMEQz
NUNENiAvKiBTY3JvbGxWaWV3TWFjLm1tICovLAotCQkJCTA3N0FGMTQxMThGNEIxQkIwMDAxRUQ2
MSAvKiBTZXJpYWxpemVkUGxhdGZvcm1SZXByZXNlbnRhdGlvbk1hYy5oICovLAotCQkJCTA3N0FG
MTQyMThGNEIxQkIwMDAxRUQ2MSAvKiBTZXJpYWxpemVkUGxhdGZvcm1SZXByZXNlbnRhdGlvbk1h
Yy5tbSAqLywKKwkJCQkwNzdBRjE0MTE4RjRCMUJCMDAwMUVENjEgLyogU2VyaWFsaXplZFBsYXRm
b3JtRGF0YUN1ZU1hYy5oICovLAorCQkJCTA3N0FGMTQyMThGNEIxQkIwMDAxRUQ2MSAvKiBTZXJp
YWxpemVkUGxhdGZvcm1EYXRhQ3VlTWFjLm1tICovLAogCQkJCTg0QjJCMjRGMDU2QkYxNUYwMEQy
Qjc3MSAvKiBTU0xLZXlHZW5lcmF0b3JNYWMubW0gKi8sCiAJCQkJRUNBNjgwQzYxRTY3NzI0NTAw
NzMxRDIwIC8qIFN0cmluZ1V0aWxpdGllcy5oICovLAogCQkJCUVDQTY4MEM4MUU2NzczMEIwMDcz
MUQyMCAvKiBTdHJpbmdVdGlsaXRpZXMubW0gKi8sCkBAIC0yNTk2Myw3ICsyNTk2Myw3IEBACiAJ
CQkJQkMyNDQxQzMwRThCNjVEMDAwNTUzMjBGIC8qIFNjcm9sbFZpZXcuY3BwICovLAogCQkJCUJD
NkQ2RTI1MDlBRjk0MzUwMEY1OTc1OSAvKiBTY3JvbGxWaWV3LmggKi8sCiAJCQkJQUI3MTcwODgw
QjMxMTgwODAwMTcxMjNFIC8qIFNlYXJjaFBvcHVwTWVudS5oICovLAotCQkJCTA3N0FGMTNFMThG
NEFFNDAwMDAxRUQ2MSAvKiBTZXJpYWxpemVkUGxhdGZvcm1SZXByZXNlbnRhdGlvbi5oICovLAor
CQkJCTA3N0FGMTNFMThGNEFFNDAwMDAxRUQ2MSAvKiBTZXJpYWxpemVkUGxhdGZvcm1EYXRhQ3Vl
LmggKi8sCiAJCQkJMUE0QTk1NEIwQjRFRENDQjAwMkQ4QzNDIC8qIFNoYXJlZEJ1ZmZlci5jcHAg
Ki8sCiAJCQkJMUE0QTk1NEMwQjRFRENDQjAwMkQ4QzNDIC8qIFNoYXJlZEJ1ZmZlci5oICovLAog
CQkJCTgzNERGQUNFMUY3REFFNTcwMEMyNzI1QiAvKiBTaGFyZWRTdHJpbmdIYXNoLmNwcCAqLywK
QEAgLTMyMjE5LDggKzMyMjE5LDggQEAKIAkJCQlFNDUzMjJBQzE0MENFMjY3MDA1QTBGOTIgLyog
U2VsZWN0b3JRdWVyeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRjRENDNENjYyMTg4MDM4QjAwRUNF
Q0FDIC8qIFNlcmlhbGl6ZWRBdHRhY2htZW50RGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTE4
REYzMzUxOEFBRjEyQzAwNzczRTU5IC8qIFNlcmlhbGl6ZWRDcnlwdG9LZXlXcmFwLmggaW4gSGVh
ZGVycyAqLywKLQkJCQkwNzdBRjE0MDE4RjRBRTQwMDAwMUVENjEgLyogU2VyaWFsaXplZFBsYXRm
b3JtUmVwcmVzZW50YXRpb24uaCBpbiBIZWFkZXJzICovLAotCQkJCTA3N0FGMTQzMThGNEIxQkIw
MDAxRUQ2MSAvKiBTZXJpYWxpemVkUGxhdGZvcm1SZXByZXNlbnRhdGlvbk1hYy5oIGluIEhlYWRl
cnMgKi8sCisJCQkJMDc3QUYxNDAxOEY0QUU0MDAwMDFFRDYxIC8qIFNlcmlhbGl6ZWRQbGF0Zm9y
bURhdGFDdWUuaCBpbiBIZWFkZXJzICovLAorCQkJCTA3N0FGMTQzMThGNEIxQkIwMDAxRUQ2MSAv
KiBTZXJpYWxpemVkUGxhdGZvcm1EYXRhQ3VlTWFjLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNzVF
NDk3NjEwNzUyQUNCMDBDOUI4OTYgLyogU2VyaWFsaXplZFNjcmlwdFZhbHVlLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk1MTZGN0Y2RDFDMzFFMzlBMDBGMTExREMgLyogU2VydmVyT3BlbkRCUmVxdWVz
dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkQ5M0FFRTMxOURGNTY0MTAwMkE4NkMzIC8qIFNlcnZp
Y2VzT3ZlcmxheUNvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC90cmFjay9EYXRhQ3VlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJh
Y2svRGF0YUN1ZS5jcHAKaW5kZXggMmVkNzQ4YzAwZDkxMzE0MzhjOGVkZjYyNjIxMmIwMDlhODU4
ZTJmZC4uYWEwNTdmNTg5ZTRiOTllYTIwZGY5N2NmZTc3MGZkYWQ4MTU1NWNlMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9EYXRhQ3VlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3RyYWNrL0RhdGFDdWUuY3BwCkBAIC01NCw3ICs1NCw3IEBAIERhdGFDdWU6OkRh
dGFDdWUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgY29uc3QgTWVkaWFUaW1lJiBz
dGFydCwgY29uc3QKIHsKIH0KIAotRGF0YUN1ZTo6RGF0YUN1ZShTY3JpcHRFeGVjdXRpb25Db250
ZXh0JiBjb250ZXh0LCBjb25zdCBNZWRpYVRpbWUmIHN0YXJ0LCBjb25zdCBNZWRpYVRpbWUmIGVu
ZCwgUmVmUHRyPFNlcmlhbGl6ZWRQbGF0Zm9ybVJlcHJlc2VudGF0aW9uPiYmIHBsYXRmb3JtVmFs
dWUsIGNvbnN0IFN0cmluZyYgdHlwZSkKK0RhdGFDdWU6OkRhdGFDdWUoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCYgY29udGV4dCwgY29uc3QgTWVkaWFUaW1lJiBzdGFydCwgY29uc3QgTWVkaWFUaW1l
JiBlbmQsIFJlZlB0cjxTZXJpYWxpemVkUGxhdGZvcm1EYXRhQ3VlPiYmIHBsYXRmb3JtVmFsdWUs
IGNvbnN0IFN0cmluZyYgdHlwZSkKICAgICA6IFRleHRUcmFja0N1ZShjb250ZXh0LCBzdGFydCwg
ZW5kKQogICAgICwgbV90eXBlKHR5cGUpCiAgICAgLCBtX3BsYXRmb3JtVmFsdWUoV1RGTW92ZShw
bGF0Zm9ybVZhbHVlKSkKQEAgLTExNiw3ICsxMTYsNyBAQCBib29sIERhdGFDdWU6OmN1ZUNvbnRl
bnRzTWF0Y2goY29uc3QgVGV4dFRyYWNrQ3VlJiBjdWUpIGNvbnN0CiAgICAgaWYgKG1fZGF0YSAm
JiBtX2RhdGEtPmRhdGEoKSAmJiBtZW1jbXAobV9kYXRhLT5kYXRhKCksIG90aGVyRGF0YS0+ZGF0
YSgpLCBtX2RhdGEtPmJ5dGVMZW5ndGgoKSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAg
IGNvbnN0IFNlcmlhbGl6ZWRQbGF0Zm9ybVJlcHJlc2VudGF0aW9uKiBvdGhlclBsYXRmb3JtVmFs
dWUgPSBkYXRhQ3VlLT5wbGF0Zm9ybVZhbHVlKCk7CisgICAgY29uc3QgU2VyaWFsaXplZFBsYXRm
b3JtRGF0YUN1ZSogb3RoZXJQbGF0Zm9ybVZhbHVlID0gZGF0YUN1ZS0+cGxhdGZvcm1WYWx1ZSgp
OwogICAgIGlmICgob3RoZXJQbGF0Zm9ybVZhbHVlICYmICFtX3BsYXRmb3JtVmFsdWUpIHx8ICgh
b3RoZXJQbGF0Zm9ybVZhbHVlICYmIG1fcGxhdGZvcm1WYWx1ZSkpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKICAgICBpZiAobV9wbGF0Zm9ybVZhbHVlICYmICFtX3BsYXRmb3JtVmFsdWUtPmlzRXF1
YWwoKm90aGVyUGxhdGZvcm1WYWx1ZSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1s
L3RyYWNrL0RhdGFDdWUuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svRGF0YUN1ZS5oCmlu
ZGV4IDc2NGI4MGRmYjdlMWVkOGU3Mzc4ZDg1OTU3YTViMWQxNzM5MWZkNjEuLjYzYTY3YzA0OTE1
ZTYzZjMyNDI2ZjYyMzBkODZlNDI4MTdmNTIxYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvdHJhY2svRGF0YUN1ZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svRGF0
YUN1ZS5oCkBAIC0yOCw3ICsyOCw3IEBACiAKICNpZiBFTkFCTEUoVklERU9fVFJBQ0spCiAKLSNp
bmNsdWRlICJTZXJpYWxpemVkUGxhdGZvcm1SZXByZXNlbnRhdGlvbi5oIgorI2luY2x1ZGUgIlNl
cmlhbGl6ZWRQbGF0Zm9ybURhdGFDdWUuaCIKICNpbmNsdWRlICJUZXh0VHJhY2tDdWUuaCIKICNp
bmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9BcnJheUJ1ZmZlci5oPgogI2luY2x1ZGUgPEphdmFTY3Jp
cHRDb3JlL0pTQ0pTVmFsdWUuaD4KQEAgLTU3LDcgKzU3LDcgQEAgcHVibGljOgogICAgICAgICBy
ZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRhQ3VlKGNvbnRleHQsIHN0YXJ0LCBlbmQsIGRhdGEsIHR5
cGUpKTsKICAgICB9CiAKLSAgICBzdGF0aWMgUmVmPERhdGFDdWU+IGNyZWF0ZShTY3JpcHRFeGVj
dXRpb25Db250ZXh0JiBjb250ZXh0LCBjb25zdCBNZWRpYVRpbWUmIHN0YXJ0LCBjb25zdCBNZWRp
YVRpbWUmIGVuZCwgUmVmUHRyPFNlcmlhbGl6ZWRQbGF0Zm9ybVJlcHJlc2VudGF0aW9uPiYmIHBs
YXRmb3JtVmFsdWUsIGNvbnN0IFN0cmluZyYgdHlwZSkKKyAgICBzdGF0aWMgUmVmPERhdGFDdWU+
IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0LCBjb25zdCBNZWRpYVRpbWUm
IHN0YXJ0LCBjb25zdCBNZWRpYVRpbWUmIGVuZCwgUmVmUHRyPFNlcmlhbGl6ZWRQbGF0Zm9ybURh
dGFDdWU+JiYgcGxhdGZvcm1WYWx1ZSwgY29uc3QgU3RyaW5nJiB0eXBlKQogICAgIHsKICAgICAg
ICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgRGF0YUN1ZShjb250ZXh0LCBzdGFydCwgZW5kLCBXVEZN
b3ZlKHBsYXRmb3JtVmFsdWUpLCB0eXBlKSk7CiAgICAgfQpAQCAtNzcsNyArNzcsNyBAQCBwdWJs
aWM6CiAgICAgUmVmUHRyPEpTQzo6QXJyYXlCdWZmZXI+IGRhdGEoKSBjb25zdDsKICAgICB2b2lk
IHNldERhdGEoSlNDOjpBcnJheUJ1ZmZlciYpOwogCi0gICAgY29uc3QgU2VyaWFsaXplZFBsYXRm
b3JtUmVwcmVzZW50YXRpb24qIHBsYXRmb3JtVmFsdWUoKSBjb25zdCB7IHJldHVybiBtX3BsYXRm
b3JtVmFsdWUuZ2V0KCk7IH0KKyAgICBjb25zdCBTZXJpYWxpemVkUGxhdGZvcm1EYXRhQ3VlKiBw
bGF0Zm9ybVZhbHVlKCkgY29uc3QgeyByZXR1cm4gbV9wbGF0Zm9ybVZhbHVlLmdldCgpOyB9CiAK
ICAgICBKU0M6OkpTVmFsdWUgdmFsdWUoSlNDOjpKU0dsb2JhbE9iamVjdCYpIGNvbnN0OwogICAg
IHZvaWQgc2V0VmFsdWUoSlNDOjpKU0dsb2JhbE9iamVjdCYsIEpTQzo6SlNWYWx1ZSk7CkBAIC05
NCwxNCArOTQsMTQgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBEYXRhQ3VlKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQmLCBjb25zdCBNZWRpYVRpbWUmIHN0YXJ0LCBjb25zdCBNZWRpYVRpbWUmIGVu
ZCwgQXJyYXlCdWZmZXImLCBjb25zdCBTdHJpbmcmKTsKICAgICBEYXRhQ3VlKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQmLCBjb25zdCBNZWRpYVRpbWUmIHN0YXJ0LCBjb25zdCBNZWRpYVRpbWUmIGVu
ZCwgY29uc3Qgdm9pZCosIHVuc2lnbmVkKTsKLSAgICBEYXRhQ3VlKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQmLCBjb25zdCBNZWRpYVRpbWUmIHN0YXJ0LCBjb25zdCBNZWRpYVRpbWUmIGVuZCwgUmVm
UHRyPFNlcmlhbGl6ZWRQbGF0Zm9ybVJlcHJlc2VudGF0aW9uPiYmLCBjb25zdCBTdHJpbmcmKTsK
KyAgICBEYXRhQ3VlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmLCBjb25zdCBNZWRpYVRpbWUmIHN0
YXJ0LCBjb25zdCBNZWRpYVRpbWUmIGVuZCwgUmVmUHRyPFNlcmlhbGl6ZWRQbGF0Zm9ybURhdGFD
dWU+JiYsIGNvbnN0IFN0cmluZyYpOwogICAgIERhdGFDdWUoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCYsIGNvbnN0IE1lZGlhVGltZSYgc3RhcnQsIGNvbnN0IE1lZGlhVGltZSYgZW5kLCBKU0M6OkpT
VmFsdWUsIGNvbnN0IFN0cmluZyYpOwogCiAgICAgSlNDOjpKU1ZhbHVlIHZhbHVlT3JOdWxsKCkg
Y29uc3Q7CiAKICAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IG1fZGF0YTsKICAgICBTdHJpbmcgbV90
eXBlOwotICAgIFJlZlB0cjxTZXJpYWxpemVkUGxhdGZvcm1SZXByZXNlbnRhdGlvbj4gbV9wbGF0
Zm9ybVZhbHVlOworICAgIFJlZlB0cjxTZXJpYWxpemVkUGxhdGZvcm1EYXRhQ3VlPiBtX3BsYXRm
b3JtVmFsdWU7CiAgICAgLy8gRklYTUU6IFRoZSBmb2xsb3dpbmcgdXNlIG9mIEpTQzo6U3Ryb25n
IGlzIGluY29ycmVjdCBhbmQgY2FuIGxlYWQgdG8gc3RvcmFnZSBsZWFrcwogICAgIC8vIGR1ZSB0
byByZWZlcmVuY2UgY3ljbGVzOyB3ZSBzaG91bGQgdXNlIEpTVmFsdWVJbldyYXBwZWRPYmplY3Qg
aW5zdGVhZC4KICAgICAvLyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9
MjAxMTczCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0luYmFuZERhdGFU
ZXh0VHJhY2suY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9JbmJhbmREYXRhVGV4dFRy
YWNrLmNwcAppbmRleCBjMWJlYzlhMDljMGZjMWRiY2NhMThhMWZlMzE5OGM5OWRjZDNkYjU4Li5m
MDdmNzM4ZDI4MzYxY2M0YmZkNDkyYzY0YTg0YWM5YmQ0Y2E2NTA0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3RyYWNrL0luYmFuZERhdGFUZXh0VHJhY2suY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5kRGF0YVRleHRUcmFjay5jcHAKQEAgLTU3LDcgKzU3
LDcgQEAgdm9pZCBJbmJhbmREYXRhVGV4dFRyYWNrOjphZGREYXRhQ3VlKGNvbnN0IE1lZGlhVGlt
ZSYgc3RhcnQsIGNvbnN0IE1lZGlhVGltZSYgZW4KIAogI2lmIEVOQUJMRShEQVRBQ1VFX1ZBTFVF
KQogCi12b2lkIEluYmFuZERhdGFUZXh0VHJhY2s6OmFkZERhdGFDdWUoY29uc3QgTWVkaWFUaW1l
JiBzdGFydCwgY29uc3QgTWVkaWFUaW1lJiBlbmQsIFJlZjxTZXJpYWxpemVkUGxhdGZvcm1SZXBy
ZXNlbnRhdGlvbj4mJiBwbGF0Zm9ybVZhbHVlLCBjb25zdCBTdHJpbmcmIHR5cGUpCit2b2lkIElu
YmFuZERhdGFUZXh0VHJhY2s6OmFkZERhdGFDdWUoY29uc3QgTWVkaWFUaW1lJiBzdGFydCwgY29u
c3QgTWVkaWFUaW1lJiBlbmQsIFJlZjxTZXJpYWxpemVkUGxhdGZvcm1EYXRhQ3VlPiYmIHBsYXRm
b3JtVmFsdWUsIGNvbnN0IFN0cmluZyYgdHlwZSkKIHsKICAgICBpZiAobV9pbmNvbXBsZXRlQ3Vl
TWFwLmNvbnRhaW5zKHBsYXRmb3JtVmFsdWUucHRyKCkpKQogICAgICAgICByZXR1cm47CkBAIC03
OCw3ICs3OCw3IEBAIHZvaWQgSW5iYW5kRGF0YVRleHRUcmFjazo6YWRkRGF0YUN1ZShjb25zdCBN
ZWRpYVRpbWUmIHN0YXJ0LCBjb25zdCBNZWRpYVRpbWUmIGVuCiAgICAgYWRkQ3VlKFdURk1vdmUo
Y3VlKSk7CiB9CiAKLXZvaWQgSW5iYW5kRGF0YVRleHRUcmFjazo6dXBkYXRlRGF0YUN1ZShjb25z
dCBNZWRpYVRpbWUmIHN0YXJ0LCBjb25zdCBNZWRpYVRpbWUmIGluRW5kLCBTZXJpYWxpemVkUGxh
dGZvcm1SZXByZXNlbnRhdGlvbiYgcGxhdGZvcm1WYWx1ZSkKK3ZvaWQgSW5iYW5kRGF0YVRleHRU
cmFjazo6dXBkYXRlRGF0YUN1ZShjb25zdCBNZWRpYVRpbWUmIHN0YXJ0LCBjb25zdCBNZWRpYVRp
bWUmIGluRW5kLCBTZXJpYWxpemVkUGxhdGZvcm1EYXRhQ3VlJiBwbGF0Zm9ybVZhbHVlKQogewog
ICAgIFJlZlB0cjxEYXRhQ3VlPiBjdWUgPSBtX2luY29tcGxldGVDdWVNYXAuZ2V0KCZwbGF0Zm9y
bVZhbHVlKTsKICAgICBpZiAoIWN1ZSkKQEAgLTEwMCw3ICsxMDAsNyBAQCB2b2lkIEluYmFuZERh
dGFUZXh0VHJhY2s6OnVwZGF0ZURhdGFDdWUoY29uc3QgTWVkaWFUaW1lJiBzdGFydCwgY29uc3Qg
TWVkaWFUaW1lJgogICAgIGN1ZS0+ZGlkQ2hhbmdlKCk7CiB9CiAKLXZvaWQgSW5iYW5kRGF0YVRl
eHRUcmFjazo6cmVtb3ZlRGF0YUN1ZShjb25zdCBNZWRpYVRpbWUmLCBjb25zdCBNZWRpYVRpbWUm
LCBTZXJpYWxpemVkUGxhdGZvcm1SZXByZXNlbnRhdGlvbiYgcGxhdGZvcm1WYWx1ZSkKK3ZvaWQg
SW5iYW5kRGF0YVRleHRUcmFjazo6cmVtb3ZlRGF0YUN1ZShjb25zdCBNZWRpYVRpbWUmLCBjb25z
dCBNZWRpYVRpbWUmLCBTZXJpYWxpemVkUGxhdGZvcm1EYXRhQ3VlJiBwbGF0Zm9ybVZhbHVlKQog
ewogICAgIGlmIChhdXRvIGN1ZSA9IG1faW5jb21wbGV0ZUN1ZU1hcC50YWtlKCZwbGF0Zm9ybVZh
bHVlKSkgewogICAgICAgICBJTkZPX0xPRyhMT0dJREVOVElGSUVSLCAicmVtb3Zpbmc6ICIsICpj
dWUpOwpAQCAtMTEyLDcgKzExMiw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IEluYmFuZERhdGFUZXh0
VHJhY2s6OnJlbW92ZUN1ZShUZXh0VHJhY2tDdWUmIGN1ZSkKIHsKICAgICBBU1NFUlQoY3VlLmN1
ZVR5cGUoKSA9PSBUZXh0VHJhY2tDdWU6OkRhdGEpOwogCi0gICAgbV9pbmNvbXBsZXRlQ3VlTWFw
LnJlbW92ZShjb25zdF9jYXN0PFNlcmlhbGl6ZWRQbGF0Zm9ybVJlcHJlc2VudGF0aW9uKj4odG9E
YXRhQ3VlKCZjdWUpLT5wbGF0Zm9ybVZhbHVlKCkpKTsKKyAgICBtX2luY29tcGxldGVDdWVNYXAu
cmVtb3ZlKGNvbnN0X2Nhc3Q8U2VyaWFsaXplZFBsYXRmb3JtRGF0YUN1ZSo+KHRvRGF0YUN1ZSgm
Y3VlKS0+cGxhdGZvcm1WYWx1ZSgpKSk7CiAKICAgICByZXR1cm4gSW5iYW5kVGV4dFRyYWNrOjpy
ZW1vdmVDdWUoY3VlKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2sv
SW5iYW5kRGF0YVRleHRUcmFjay5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9JbmJhbmRE
YXRhVGV4dFRyYWNrLmgKaW5kZXggMWIwMzhmMzcyMjIyZDYxMDIxNjgwODE1NjBiYzBiNjY3Mjk0
OGRjZS4uMWE4YmRmNmFlNTIyOGJlZjBjZjhkMWRhZDk1ZTM1NmY2MjhhNDRmMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9JbmJhbmREYXRhVGV4dFRyYWNrLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9JbmJhbmREYXRhVGV4dFRyYWNrLmgKQEAgLTUwLDEy
ICs1MCwxMiBAQCBwcml2YXRlOgogI2VuZGlmCiAKICNpZiBFTkFCTEUoREFUQUNVRV9WQUxVRSkK
LSAgICB2b2lkIGFkZERhdGFDdWUoY29uc3QgTWVkaWFUaW1lJiBzdGFydCwgY29uc3QgTWVkaWFU
aW1lJiBlbmQsIFJlZjxTZXJpYWxpemVkUGxhdGZvcm1SZXByZXNlbnRhdGlvbj4mJiwgY29uc3Qg
U3RyaW5nJikgZmluYWw7Ci0gICAgdm9pZCB1cGRhdGVEYXRhQ3VlKGNvbnN0IE1lZGlhVGltZSYg
c3RhcnQsIGNvbnN0IE1lZGlhVGltZSYgZW5kLCBTZXJpYWxpemVkUGxhdGZvcm1SZXByZXNlbnRh
dGlvbiYpIGZpbmFsOwotICAgIHZvaWQgcmVtb3ZlRGF0YUN1ZShjb25zdCBNZWRpYVRpbWUmIHN0
YXJ0LCBjb25zdCBNZWRpYVRpbWUmIGVuZCwgU2VyaWFsaXplZFBsYXRmb3JtUmVwcmVzZW50YXRp
b24mKSBmaW5hbDsKKyAgICB2b2lkIGFkZERhdGFDdWUoY29uc3QgTWVkaWFUaW1lJiBzdGFydCwg
Y29uc3QgTWVkaWFUaW1lJiBlbmQsIFJlZjxTZXJpYWxpemVkUGxhdGZvcm1EYXRhQ3VlPiYmLCBj
b25zdCBTdHJpbmcmKSBmaW5hbDsKKyAgICB2b2lkIHVwZGF0ZURhdGFDdWUoY29uc3QgTWVkaWFU
aW1lJiBzdGFydCwgY29uc3QgTWVkaWFUaW1lJiBlbmQsIFNlcmlhbGl6ZWRQbGF0Zm9ybURhdGFD
dWUmKSBmaW5hbDsKKyAgICB2b2lkIHJlbW92ZURhdGFDdWUoY29uc3QgTWVkaWFUaW1lJiBzdGFy
dCwgY29uc3QgTWVkaWFUaW1lJiBlbmQsIFNlcmlhbGl6ZWRQbGF0Zm9ybURhdGFDdWUmKSBmaW5h
bDsKICAgICBFeGNlcHRpb25Pcjx2b2lkPiByZW1vdmVDdWUoVGV4dFRyYWNrQ3VlJikgZmluYWw7
CiAKLSAgICBIYXNoTWFwPFJlZlB0cjxTZXJpYWxpemVkUGxhdGZvcm1SZXByZXNlbnRhdGlvbj4s
IFJlZlB0cjxEYXRhQ3VlPj4gbV9pbmNvbXBsZXRlQ3VlTWFwOworICAgIEhhc2hNYXA8UmVmUHRy
PFNlcmlhbGl6ZWRQbGF0Zm9ybURhdGFDdWU+LCBSZWZQdHI8RGF0YUN1ZT4+IG1faW5jb21wbGV0
ZUN1ZU1hcDsKICNlbmRpZgogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC90
cmFjay9JbmJhbmRUZXh0VHJhY2suaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5k
VGV4dFRyYWNrLmgKaW5kZXggZTE0MTAzZDA0ZWY2M2E1MDI3ZWVhNjNhNDZkOTgwNmIyZDU1YTgy
ZS4uOGZlZjlmMzRhZWFiZTAzNTUxNDkzYjY0NWVjMWE2ZTVlNGYzOGE5MSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9JbmJhbmRUZXh0VHJhY2suaAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL3RyYWNrL0luYmFuZFRleHRUcmFjay5oCkBAIC03Miw5ICs3Miw5IEBAIHBy
aXZhdGU6CiAgICAgdm9pZCBhZGREYXRhQ3VlKGNvbnN0IE1lZGlhVGltZSYsIGNvbnN0IE1lZGlh
VGltZSYsIGNvbnN0IHZvaWQqLCB1bnNpZ25lZCkgb3ZlcnJpZGUgeyBBU1NFUlRfTk9UX1JFQUNI
RUQoKTsgfQogCiAjaWYgRU5BQkxFKERBVEFDVUVfVkFMVUUpCi0gICAgdm9pZCBhZGREYXRhQ3Vl
KGNvbnN0IE1lZGlhVGltZSYsIGNvbnN0IE1lZGlhVGltZSYsIFJlZjxTZXJpYWxpemVkUGxhdGZv
cm1SZXByZXNlbnRhdGlvbj4mJiwgY29uc3QgU3RyaW5nJikgb3ZlcnJpZGUgeyBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsgfQotICAgIHZvaWQgdXBkYXRlRGF0YUN1ZShjb25zdCBNZWRpYVRpbWUmLCBj
b25zdCBNZWRpYVRpbWUmLCBTZXJpYWxpemVkUGxhdGZvcm1SZXByZXNlbnRhdGlvbiYpIG92ZXJy
aWRlICB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9Ci0gICAgdm9pZCByZW1vdmVEYXRhQ3VlKGNv
bnN0IE1lZGlhVGltZSYsIGNvbnN0IE1lZGlhVGltZSYsIFNlcmlhbGl6ZWRQbGF0Zm9ybVJlcHJl
c2VudGF0aW9uJikgb3ZlcnJpZGUgIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KKyAgICB2b2lk
IGFkZERhdGFDdWUoY29uc3QgTWVkaWFUaW1lJiwgY29uc3QgTWVkaWFUaW1lJiwgUmVmPFNlcmlh
bGl6ZWRQbGF0Zm9ybURhdGFDdWU+JiYsIGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlIHsgQVNTRVJU
X05PVF9SRUFDSEVEKCk7IH0KKyAgICB2b2lkIHVwZGF0ZURhdGFDdWUoY29uc3QgTWVkaWFUaW1l
JiwgY29uc3QgTWVkaWFUaW1lJiwgU2VyaWFsaXplZFBsYXRmb3JtRGF0YUN1ZSYpIG92ZXJyaWRl
ICB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CisgICAgdm9pZCByZW1vdmVEYXRhQ3VlKGNvbnN0
IE1lZGlhVGltZSYsIGNvbnN0IE1lZGlhVGltZSYsIFNlcmlhbGl6ZWRQbGF0Zm9ybURhdGFDdWUm
KSBvdmVycmlkZSAgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQogI2VuZGlmCiAKICAgICB2b2lk
IGFkZEdlbmVyaWNDdWUoR2VuZXJpY0N1ZURhdGEmKSBvdmVycmlkZSB7IEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TZXJpYWxpemVk
UGxhdGZvcm1EYXRhQ3VlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9TZXJpYWxpemVkUGxh
dGZvcm1EYXRhQ3VlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTQ0ZTJjNTRhNzVmNWFiZDUzNmZhMzllNGY2MjIw
M2IyMjA3NTViOQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1Nl
cmlhbGl6ZWRQbGF0Zm9ybURhdGFDdWUuaApAQCAtMCwwICsxLDU0IEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05U
UklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5U
SUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJB
TlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAq
IFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1Ig
SVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwg
SU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1B
R0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNV
QlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRT
OyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5Z
IFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElB
QklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBB
UklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKwor
I3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoVklERU8pCisKKyNpbmNsdWRlIDxKYXZhU2NyaXB0
Q29yZS9KU0NJbmxpbmVzLmg+CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKworbmFtZXNw
YWNlIFdlYkNvcmUgeworCitjbGFzcyBTZXJpYWxpemVkUGxhdGZvcm1EYXRhQ3VlIDogcHVibGlj
IFJlZkNvdW50ZWQ8U2VyaWFsaXplZFBsYXRmb3JtRGF0YUN1ZT4geworcHVibGljOgorICAgIHZp
cnR1YWwgflNlcmlhbGl6ZWRQbGF0Zm9ybURhdGFDdWUoKSA9IGRlZmF1bHQ7CisKKyAgICB2aXJ0
dWFsIEpTQzo6SlNWYWx1ZSBkZXNlcmlhbGl6ZShKU0M6OkpTR2xvYmFsT2JqZWN0KikgY29uc3Qg
PSAwOworICAgIHZpcnR1YWwgUmVmUHRyPEpTQzo6QXJyYXlCdWZmZXI+IGRhdGEoKSBjb25zdCA9
IDA7CisgICAgdmlydHVhbCBib29sIGlzRXF1YWwoY29uc3QgU2VyaWFsaXplZFBsYXRmb3JtRGF0
YUN1ZSYpIGNvbnN0ID0gMDsKKworICAgIGVudW0gUGxhdGZvcm1UeXBlIHsKKyAgICAgICAgT2Jq
QywKKyAgICB9OworICAgIHZpcnR1YWwgUGxhdGZvcm1UeXBlIHBsYXRmb3JtVHlwZSgpIGNvbnN0
ID0gMDsKKworcHJvdGVjdGVkOgorICAgIFNlcmlhbGl6ZWRQbGF0Zm9ybURhdGFDdWUoKSA9IGRl
ZmF1bHQ7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2VyaWFsaXplZFBsYXRmb3JtUmVwcmVzZW50YXRp
b24uaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL1NlcmlhbGl6ZWRQbGF0Zm9ybVJlcHJlc2Vu
dGF0aW9uLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ0Mjg5ZWI4Njk5OTFhYWZl
NTg4MDMyZWZjZjY2MWZiOTg0YTQxYWMuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2VyaWFsaXplZFBsYXRmb3Jt
UmVwcmVzZW50YXRpb24uaAorKysgL2Rldi9udWxsCkBAIC0xLDU0ICswLDAgQEAKLS8qCi0gKiBD
b3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRT
IENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5D
LiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgot
ICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBS
T0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkK
LSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAq
LwotCi0jcHJhZ21hIG9uY2UKLQotI2lmIEVOQUJMRShWSURFTykKLQotI2luY2x1ZGUgPEphdmFT
Y3JpcHRDb3JlL0pTQ0lubGluZXMuaD4KLSNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgotCi1u
YW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIFNlcmlhbGl6ZWRQbGF0Zm9ybVJlcHJlc2VudGF0
aW9uIDogcHVibGljIFJlZkNvdW50ZWQ8U2VyaWFsaXplZFBsYXRmb3JtUmVwcmVzZW50YXRpb24+
IHsKLXB1YmxpYzoKLSAgICB2aXJ0dWFsIH5TZXJpYWxpemVkUGxhdGZvcm1SZXByZXNlbnRhdGlv
bigpID0gZGVmYXVsdDsKLQotICAgIHZpcnR1YWwgSlNDOjpKU1ZhbHVlIGRlc2VyaWFsaXplKEpT
Qzo6SlNHbG9iYWxPYmplY3QqKSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCBSZWZQdHI8SlNDOjpB
cnJheUJ1ZmZlcj4gZGF0YSgpIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIGJvb2wgaXNFcXVhbChj
b25zdCBTZXJpYWxpemVkUGxhdGZvcm1SZXByZXNlbnRhdGlvbiYpIGNvbnN0ID0gMDsKLQotICAg
IGVudW0gUGxhdGZvcm1UeXBlIHsKLSAgICAgICAgT2JqQywKLSAgICB9OwotICAgIHZpcnR1YWwg
UGxhdGZvcm1UeXBlIHBsYXRmb3JtVHlwZSgpIGNvbnN0ID0gMDsKLQotcHJvdGVjdGVkOgotICAg
IFNlcmlhbGl6ZWRQbGF0Zm9ybVJlcHJlc2VudGF0aW9uKCkgPSBkZWZhdWx0OwotfTsKLQotfSAv
LyBuYW1lc3BhY2UgV2ViQ29yZQotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL0luYmFuZFRleHRUcmFja1ByaXZhdGVDbGllbnQuaCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL0luYmFuZFRleHRUcmFja1ByaXZhdGVDbGllbnQu
aAppbmRleCA2ZTBjOGY5MDljNjU5NWRmNzAyNTE3ZTA1YjUwNjMyOGRmMzk5YjcwLi5mNDMwNjQ1
MThkZjQxOTYxYjNmNmM2M2E3NmM5OTEzZDE3NjdhZWJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbmJhbmRUZXh0VHJhY2tQcml2YXRlQ2xpZW50LmgKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvSW5iYW5kVGV4dFRyYWNrUHJpdmF0
ZUNsaWVudC5oCkBAIC0zMyw3ICszMyw3IEBACiAjaW5jbHVkZSA8d3RmL01lZGlhVGltZS5oPgog
CiAjaWYgRU5BQkxFKERBVEFDVUVfVkFMVUUpCi0jaW5jbHVkZSAiU2VyaWFsaXplZFBsYXRmb3Jt
UmVwcmVzZW50YXRpb24uaCIKKyNpbmNsdWRlICJTZXJpYWxpemVkUGxhdGZvcm1EYXRhQ3VlLmgi
CiAjZW5kaWYKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMjI5LDkgKzIyOSw5IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIHZvaWQgYWRkRGF0YUN1ZShjb25zdCBNZWRpYVRpbWUmIHN0YXJ0LCBj
b25zdCBNZWRpYVRpbWUmIGVuZCwgY29uc3Qgdm9pZCosIHVuc2lnbmVkKSA9IDA7CiAKICNpZiBF
TkFCTEUoREFUQUNVRV9WQUxVRSkKLSAgICB2aXJ0dWFsIHZvaWQgYWRkRGF0YUN1ZShjb25zdCBN
ZWRpYVRpbWUmIHN0YXJ0LCBjb25zdCBNZWRpYVRpbWUmIGVuZCwgUmVmPFNlcmlhbGl6ZWRQbGF0
Zm9ybVJlcHJlc2VudGF0aW9uPiYmLCBjb25zdCBTdHJpbmcmKSA9IDA7Ci0gICAgdmlydHVhbCB2
b2lkIHVwZGF0ZURhdGFDdWUoY29uc3QgTWVkaWFUaW1lJiBzdGFydCwgY29uc3QgTWVkaWFUaW1l
JiBlbmQsIFNlcmlhbGl6ZWRQbGF0Zm9ybVJlcHJlc2VudGF0aW9uJikgPSAwOwotICAgIHZpcnR1
YWwgdm9pZCByZW1vdmVEYXRhQ3VlKGNvbnN0IE1lZGlhVGltZSYgc3RhcnQsIGNvbnN0IE1lZGlh
VGltZSYgZW5kLCBTZXJpYWxpemVkUGxhdGZvcm1SZXByZXNlbnRhdGlvbiYpID0gMDsKKyAgICB2
aXJ0dWFsIHZvaWQgYWRkRGF0YUN1ZShjb25zdCBNZWRpYVRpbWUmIHN0YXJ0LCBjb25zdCBNZWRp
YVRpbWUmIGVuZCwgUmVmPFNlcmlhbGl6ZWRQbGF0Zm9ybURhdGFDdWU+JiYsIGNvbnN0IFN0cmlu
ZyYpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlRGF0YUN1ZShjb25zdCBNZWRpYVRpbWUm
IHN0YXJ0LCBjb25zdCBNZWRpYVRpbWUmIGVuZCwgU2VyaWFsaXplZFBsYXRmb3JtRGF0YUN1ZSYp
ID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlRGF0YUN1ZShjb25zdCBNZWRpYVRpbWUmIHN0
YXJ0LCBjb25zdCBNZWRpYVRpbWUmIGVuZCwgU2VyaWFsaXplZFBsYXRmb3JtRGF0YUN1ZSYpID0g
MDsKICNlbmRpZgogCiAgICAgdmlydHVhbCB2b2lkIGFkZEdlbmVyaWNDdWUoR2VuZXJpY0N1ZURh
dGEmKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vSW5iYW5kTWV0YWRhdGFUZXh0VHJhY2tQcml2YXRlQVZGLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9JbmJhbmRNZXRhZGF0YVRl
eHRUcmFja1ByaXZhdGVBVkYuY3BwCmluZGV4IDM1ZGE5NWUyYTEzMWZlZmFhYTNiOTA3OWQ0Y2Nl
Zjk1ZGYyZjVkNzguLjg2ZTM0Y2ViMTk2YTQwNjY4NWIzY2E3YmJlOTI1NmU1ZmU2ZmU1N2UgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9J
bmJhbmRNZXRhZGF0YVRleHRUcmFja1ByaXZhdGVBVkYuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9JbmJhbmRNZXRhZGF0YVRleHRUcmFja1By
aXZhdGVBVkYuY3BwCkBAIC01NCw3ICs1NCw3IEBAIEluYmFuZE1ldGFkYXRhVGV4dFRyYWNrUHJp
dmF0ZUFWRjo6fkluYmFuZE1ldGFkYXRhVGV4dFRyYWNrUHJpdmF0ZUFWRigpID0gZGVmYXVsCiAK
ICNpZiBFTkFCTEUoREFUQUNVRV9WQUxVRSkKIAotdm9pZCBJbmJhbmRNZXRhZGF0YVRleHRUcmFj
a1ByaXZhdGVBVkY6OmFkZERhdGFDdWUoY29uc3QgTWVkaWFUaW1lJiBzdGFydCwgY29uc3QgTWVk
aWFUaW1lJiBlbmQsIFJlZjxTZXJpYWxpemVkUGxhdGZvcm1SZXByZXNlbnRhdGlvbj4mJiBjdWVE
YXRhLCBjb25zdCBTdHJpbmcmIHR5cGUpCit2b2lkIEluYmFuZE1ldGFkYXRhVGV4dFRyYWNrUHJp
dmF0ZUFWRjo6YWRkRGF0YUN1ZShjb25zdCBNZWRpYVRpbWUmIHN0YXJ0LCBjb25zdCBNZWRpYVRp
bWUmIGVuZCwgUmVmPFNlcmlhbGl6ZWRQbGF0Zm9ybURhdGFDdWU+JiYgY3VlRGF0YSwgY29uc3Qg
U3RyaW5nJiB0eXBlKQogewogICAgIEFTU0VSVChjdWVGb3JtYXQoKSA9PSBDdWVGb3JtYXQ6OkRh
dGEpOwogICAgIEFTU0VSVChzdGFydCA+PSBNZWRpYVRpbWU6Onplcm9UaW1lKCkpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0luYmFu
ZE1ldGFkYXRhVGV4dFRyYWNrUHJpdmF0ZUFWRi5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvYXZmb3VuZGF0aW9uL0luYmFuZE1ldGFkYXRhVGV4dFRyYWNrUHJpdmF0ZUFWRi5o
CmluZGV4IDJlYzdkNWMwNTMwZDc3OGI5NDkwNzMxNmNhZjdhYmQxZWNiMzg3YWYuLmNmMDA0NzE0
MGYzNmRmM2Y0OWE5NTYwYmQ1M2FkNzk5YzA4ZDg5ZTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9JbmJhbmRNZXRhZGF0YVRleHRUcmFj
a1ByaXZhdGVBVkYuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vSW5iYW5kTWV0YWRhdGFUZXh0VHJhY2tQcml2YXRlQVZGLmgKQEAgLTM0LDcgKzM0
LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAjaWYgRU5BQkxFKERBVEFDVUVfVkFMVUUpCiBz
dHJ1Y3QgSW5jb21wbGV0ZU1ldGFEYXRhQ3VlIHsKLSAgICBSZWZQdHI8U2VyaWFsaXplZFBsYXRm
b3JtUmVwcmVzZW50YXRpb24+IGN1ZURhdGE7CisgICAgUmVmUHRyPFNlcmlhbGl6ZWRQbGF0Zm9y
bURhdGFDdWU+IGN1ZURhdGE7CiAgICAgTWVkaWFUaW1lIHN0YXJ0VGltZTsKIH07CiAjZW5kaWYK
QEAgLTUxLDcgKzUxLDcgQEAgcHVibGljOgogICAgIHZvaWQgc2V0SW5CYW5kTWV0YWRhdGFUcmFj
a0Rpc3BhdGNoVHlwZShjb25zdCBBdG9tU3RyaW5nJiB2YWx1ZSkgeyBtX2luQmFuZE1ldGFkYXRh
VHJhY2tEaXNwYXRjaFR5cGUgPSB2YWx1ZTsgfQogCiAjaWYgRU5BQkxFKERBVEFDVUVfVkFMVUUp
Ci0gICAgdm9pZCBhZGREYXRhQ3VlKGNvbnN0IE1lZGlhVGltZSYgc3RhcnQsIGNvbnN0IE1lZGlh
VGltZSYgZW5kLCBSZWY8U2VyaWFsaXplZFBsYXRmb3JtUmVwcmVzZW50YXRpb24+JiYsIGNvbnN0
IFN0cmluZyYpOworICAgIHZvaWQgYWRkRGF0YUN1ZShjb25zdCBNZWRpYVRpbWUmIHN0YXJ0LCBj
b25zdCBNZWRpYVRpbWUmIGVuZCwgUmVmPFNlcmlhbGl6ZWRQbGF0Zm9ybURhdGFDdWU+JiYsIGNv
bnN0IFN0cmluZyYpOwogICAgIHZvaWQgdXBkYXRlUGVuZGluZ0N1ZUVuZFRpbWVzKGNvbnN0IE1l
ZGlhVGltZSYpOwogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlv
bk9iakMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCmluZGV4IDBkYzJlNzcy
YWU5ZGU5MzIzNWRkMGNjNWM5ODk3OGQ3ODI2ZDM2ZTcuLmY4Y2ZmMjEzNDVhNWVjNjMwZmRmODY1
YTU3MmQ5NDg1ZjZhNDgxZDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbk9i
akMubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9u
L29iamMvTWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQy5tbQpAQCAtNTUsNyArNTUs
NyBAQAogI2ltcG9ydCAiUGl4ZWxCdWZmZXJDb25mb3JtZXJDVi5oIgogI2ltcG9ydCAiUGxhdGZv
cm1UaW1lUmFuZ2VzLmgiCiAjaW1wb3J0ICJTZWN1cml0eU9yaWdpbi5oIgotI2ltcG9ydCAiU2Vy
aWFsaXplZFBsYXRmb3JtUmVwcmVzZW50YXRpb25NYWMuaCIKKyNpbXBvcnQgIlNlcmlhbGl6ZWRQ
bGF0Zm9ybURhdGFDdWVNYWMuaCIKICNpbXBvcnQgIlNoYXJlZEJ1ZmZlci5oIgogI2ltcG9ydCAi
VGV4dEVuY29kaW5nLmgiCiAjaW1wb3J0ICJUZXh0VHJhY2tSZXByZXNlbnRhdGlvbi5oIgpAQCAt
MzA3Myw3ICszMDczLDcgQEAgdm9pZCBNZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpD
OjptZXRhZGF0YURpZEFycml2ZShjb25zdCBSZXRhaW5QdHI8TlNBcnIKICAgICAgICAgaWYgKGl0
ZW0ua2V5U3BhY2UpCiAgICAgICAgICAgICB0eXBlID0gbWV0YWRhdGFUeXBlKGl0ZW0ua2V5U3Bh
Y2UpOwogCi0gICAgICAgIG1fbWV0YWRhdGFUcmFjay0+YWRkRGF0YUN1ZShzdGFydCwgZW5kLCBT
ZXJpYWxpemVkUGxhdGZvcm1SZXByZXNlbnRhdGlvbk1hYzo6Y3JlYXRlKGl0ZW0pLCB0eXBlKTsK
KyAgICAgICAgbV9tZXRhZGF0YVRyYWNrLT5hZGREYXRhQ3VlKHN0YXJ0LCBlbmQsIFNlcmlhbGl6
ZWRQbGF0Zm9ybURhdGFDdWVNYWM6OmNyZWF0ZShpdGVtKSwgdHlwZSk7CiAgICAgfQogI2VuZGlm
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2VyaWFsaXplZFBs
YXRmb3JtRGF0YUN1ZU1hYy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1NlcmlhbGl6
ZWRQbGF0Zm9ybURhdGFDdWVNYWMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yMGNhMzI4OWU1ZGVhZWQ4NWYwYzY0
MWJmMTA5OGQwZjUyMmVkNTdkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWFjL1NlcmlhbGl6ZWRQbGF0Zm9ybURhdGFDdWVNYWMuaApAQCAtMCwwICsxLDYzIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoVklERU9fVFJBQ0spICYm
IEVOQUJMRShEQVRBQ1VFX1ZBTFVFKQorCisjaW5jbHVkZSAiU2VyaWFsaXplZFBsYXRmb3JtRGF0
YUN1ZS5oIgorCisjaWYgVVNFKEZPVU5EQVRJT04pICYmICFkZWZpbmVkKF9fT0JKQ19fKQordHlw
ZWRlZiBzdHJ1Y3Qgb2JqY19vYmplY3QgKmlkOworI2VuZGlmCisKK25hbWVzcGFjZSBXZWJDb3Jl
IHsKKworY2xhc3MgU2VyaWFsaXplZFBsYXRmb3JtRGF0YUN1ZU1hYyA6IHB1YmxpYyBTZXJpYWxp
emVkUGxhdGZvcm1EYXRhQ3VlIHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5TZXJpYWxpemVkUGxh
dGZvcm1EYXRhQ3VlTWFjKCk7CisgICAgc3RhdGljIFJlZjxTZXJpYWxpemVkUGxhdGZvcm1EYXRh
Q3VlPiBjcmVhdGUoaWQpOworCisgICAgSlNDOjpKU1ZhbHVlIGRlc2VyaWFsaXplKEpTQzo6SlNH
bG9iYWxPYmplY3QqKSBjb25zdCBvdmVycmlkZTsKKyAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IGRh
dGEoKSBjb25zdCBvdmVycmlkZTsKKworICAgIGJvb2wgaXNFcXVhbChjb25zdCBTZXJpYWxpemVk
UGxhdGZvcm1EYXRhQ3VlJikgY29uc3Qgb3ZlcnJpZGU7CisKKyAgICBQbGF0Zm9ybVR5cGUgcGxh
dGZvcm1UeXBlKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gU2VyaWFsaXplZFBsYXRmb3JtRGF0
YUN1ZTo6T2JqQzsgfQorCisgICAgaWQgbmF0aXZlVmFsdWUoKSBjb25zdCB7IHJldHVybiBtX25h
dGl2ZVZhbHVlLmdldCgpOyB9CisKK3ByaXZhdGU6CisgICAgU2VyaWFsaXplZFBsYXRmb3JtRGF0
YUN1ZU1hYyhpZCBuYXRpdmVWYWx1ZSk7CisKKyAgICBSZXRhaW5QdHI8aWQ+IG1fbmF0aXZlVmFs
dWU7Cit9OworCitTZXJpYWxpemVkUGxhdGZvcm1EYXRhQ3VlTWFjKiB0b1NlcmlhbGl6ZWRQbGF0
Zm9ybURhdGFDdWVNYWMoU2VyaWFsaXplZFBsYXRmb3JtRGF0YUN1ZSopOworY29uc3QgU2VyaWFs
aXplZFBsYXRmb3JtRGF0YUN1ZU1hYyogdG9TZXJpYWxpemVkUGxhdGZvcm1EYXRhQ3VlTWFjKGNv
bnN0IFNlcmlhbGl6ZWRQbGF0Zm9ybURhdGFDdWUqKTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TZXJp
YWxpemVkUGxhdGZvcm1EYXRhQ3VlTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFj
L1NlcmlhbGl6ZWRQbGF0Zm9ybURhdGFDdWVNYWMubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTdhNmNmNTdmMDQy
NTFhNWEyNzY5Mzc4ZjNhMzc1Zjc5MzhiNTI1NQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL21hYy9TZXJpYWxpemVkUGxhdGZvcm1EYXRhQ3VlTWFjLm1tCkBAIC0w
LDAgKzEsMjM5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0LCAyMDE1IEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBB
TkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZ
IEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQu
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhF
TVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdI
RVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJ
TkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2lu
Y2x1ZGUgIlNlcmlhbGl6ZWRQbGF0Zm9ybURhdGFDdWVNYWMuaCIKKworI2lmIEVOQUJMRShWSURF
T19UUkFDSykgJiYgRU5BQkxFKERBVEFDVUVfVkFMVUUpCisKKyNpbXBvcnQgIkpTRE9NQ29udmVy
dEJ1ZmZlclNvdXJjZS5oIgorI2ltcG9ydCA8QVZGb3VuZGF0aW9uL0FWTWV0YWRhdGFJdGVtLmg+
CisjaW1wb3J0IDxGb3VuZGF0aW9uL05TU3RyaW5nLmg+CisjaW1wb3J0IDxKYXZhU2NyaXB0Q29y
ZS9BUElDYXN0Lmg+CisjaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9BcnJheUJ1ZmZlci5oPgorI2lt
cG9ydCA8SmF2YVNjcmlwdENvcmUvSlNBcnJheUJ1ZmZlci5oPgorI2ltcG9ydCA8SmF2YVNjcmlw
dENvcmUvSlNDb250ZXh0UmVmLmg+CisjaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9KU09iamVjdFJl
Zi5oPgorI2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUuaD4KKyNpbXBvcnQg
PG9iamMvcnVudGltZS5oPgorI2ltcG9ydCA8cGFsL2NvY29hL0FWRm91bmRhdGlvblNvZnRMaW5r
Lmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworI2lmIEpTQ19PQkpDX0FQSV9FTkFCTEVECitz
dGF0aWMgSlNWYWx1ZSAqanNWYWx1ZVdpdGhEYXRhSW5Db250ZXh0KE5TRGF0YSAqLCBKU0NvbnRl
eHQgKik7CitzdGF0aWMgSlNWYWx1ZSAqanNWYWx1ZVdpdGhBcnJheUluQ29udGV4dChOU0FycmF5
ICosIEpTQ29udGV4dCAqKTsKK3N0YXRpYyBKU1ZhbHVlICpqc1ZhbHVlV2l0aERpY3Rpb25hcnlJ
bkNvbnRleHQoTlNEaWN0aW9uYXJ5ICosIEpTQ29udGV4dCAqKTsKK3N0YXRpYyBKU1ZhbHVlICpq
c1ZhbHVlV2l0aEFWTWV0YWRhdGFJdGVtSW5Db250ZXh0KEFWTWV0YWRhdGFJdGVtICosIEpTQ29u
dGV4dCAqKTsKK3N0YXRpYyBKU1ZhbHVlICpqc1ZhbHVlV2l0aFZhbHVlSW5Db250ZXh0KGlkLCBK
U0NvbnRleHQgKik7CisjZW5kaWYKKworU2VyaWFsaXplZFBsYXRmb3JtRGF0YUN1ZU1hYzo6U2Vy
aWFsaXplZFBsYXRmb3JtRGF0YUN1ZU1hYyhpZCBuYXRpdmVWYWx1ZSkKKyAgICA6IFNlcmlhbGl6
ZWRQbGF0Zm9ybURhdGFDdWUoKQorICAgICwgbV9uYXRpdmVWYWx1ZShuYXRpdmVWYWx1ZSkKK3sK
K30KKworU2VyaWFsaXplZFBsYXRmb3JtRGF0YUN1ZU1hYzo6flNlcmlhbGl6ZWRQbGF0Zm9ybURh
dGFDdWVNYWMoKQoreworfQorCitSZWY8U2VyaWFsaXplZFBsYXRmb3JtRGF0YUN1ZT4gU2VyaWFs
aXplZFBsYXRmb3JtRGF0YUN1ZU1hYzo6Y3JlYXRlKGlkIG5hdGl2ZVZhbHVlKQoreworICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IFNlcmlhbGl6ZWRQbGF0Zm9ybURhdGFDdWVNYWMobmF0aXZlVmFs
dWUpKTsKK30KKworUmVmUHRyPEFycmF5QnVmZmVyPiBTZXJpYWxpemVkUGxhdGZvcm1EYXRhQ3Vl
TWFjOjpkYXRhKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbnVsbHB0cjsKK30KKworSlNDOjpKU1Zh
bHVlIFNlcmlhbGl6ZWRQbGF0Zm9ybURhdGFDdWVNYWM6OmRlc2VyaWFsaXplKEpTQzo6SlNHbG9i
YWxPYmplY3QqIGxleGljYWxHbG9iYWxPYmplY3QpIGNvbnN0Cit7CisjaWYgSlNDX09CSkNfQVBJ
X0VOQUJMRUQKKyAgICBpZiAoIW1fbmF0aXZlVmFsdWUpCisgICAgICAgIHJldHVybiBKU0M6Ompz
TnVsbCgpOworCisgICAgSlNHbG9iYWxDb250ZXh0UmVmIGpzR2xvYmFsQ29udGV4dFJlZiA9IHRv
R2xvYmFsUmVmKGxleGljYWxHbG9iYWxPYmplY3QpOworICAgIEpTQ29udGV4dCAqanNDb250ZXh0
ID0gW0pTQ29udGV4dCBjb250ZXh0V2l0aEpTR2xvYmFsQ29udGV4dFJlZjpqc0dsb2JhbENvbnRl
eHRSZWZdOworICAgIEpTVmFsdWUgKnNlcmlhbGl6ZWRWYWx1ZSA9IGpzVmFsdWVXaXRoVmFsdWVJ
bkNvbnRleHQobV9uYXRpdmVWYWx1ZS5nZXQoKSwganNDb250ZXh0KTsKKworICAgIHJldHVybiB0
b0pTKGxleGljYWxHbG9iYWxPYmplY3QsIFtzZXJpYWxpemVkVmFsdWUgSlNWYWx1ZVJlZl0pOwor
I2Vsc2UKKyAgICBVTlVTRURfUEFSQU0obGV4aWNhbEdsb2JhbE9iamVjdCk7CisgICAgcmV0dXJu
IEpTQzo6anNOdWxsKCk7CisjZW5kaWYKK30KKworYm9vbCBTZXJpYWxpemVkUGxhdGZvcm1EYXRh
Q3VlTWFjOjppc0VxdWFsKGNvbnN0IFNlcmlhbGl6ZWRQbGF0Zm9ybURhdGFDdWUmIG90aGVyKSBj
b25zdAoreworICAgIGlmIChvdGhlci5wbGF0Zm9ybVR5cGUoKSAhPSBTZXJpYWxpemVkUGxhdGZv
cm1EYXRhQ3VlOjpPYmpDKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICBjb25zdCBTZXJp
YWxpemVkUGxhdGZvcm1EYXRhQ3VlTWFjKiBvdGhlck9iakMgPSB0b1NlcmlhbGl6ZWRQbGF0Zm9y
bURhdGFDdWVNYWMoJm90aGVyKTsKKworICAgIGlmICghbV9uYXRpdmVWYWx1ZSB8fCAhb3RoZXJP
YmpDLT5uYXRpdmVWYWx1ZSgpKQorICAgICAgICByZXR1cm4gZmFsc2U7CisKKyAgICByZXR1cm4g
W21fbmF0aXZlVmFsdWUuZ2V0KCkgaXNFcXVhbDpvdGhlck9iakMtPm5hdGl2ZVZhbHVlKCldOwor
fQorCitTZXJpYWxpemVkUGxhdGZvcm1EYXRhQ3VlTWFjKiB0b1NlcmlhbGl6ZWRQbGF0Zm9ybURh
dGFDdWVNYWMoU2VyaWFsaXplZFBsYXRmb3JtRGF0YUN1ZSogcmVwKQoreworICAgIHJldHVybiBj
b25zdF9jYXN0PFNlcmlhbGl6ZWRQbGF0Zm9ybURhdGFDdWVNYWMqPih0b1NlcmlhbGl6ZWRQbGF0
Zm9ybURhdGFDdWVNYWMoY29uc3RfY2FzdDxjb25zdCBTZXJpYWxpemVkUGxhdGZvcm1EYXRhQ3Vl
Kj4ocmVwKSkpOworfQorCitjb25zdCBTZXJpYWxpemVkUGxhdGZvcm1EYXRhQ3VlTWFjKiB0b1Nl
cmlhbGl6ZWRQbGF0Zm9ybURhdGFDdWVNYWMoY29uc3QgU2VyaWFsaXplZFBsYXRmb3JtRGF0YUN1
ZSogcmVwKQoreworICAgIFJFTEVBU0VfQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1QTElDQVRJT04o
cmVwLT5wbGF0Zm9ybVR5cGUoKSA9PSBTZXJpYWxpemVkUGxhdGZvcm1EYXRhQ3VlOjpPYmpDKTsK
KyAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgU2VyaWFsaXplZFBsYXRmb3JtRGF0YUN1ZU1h
Yyo+KHJlcCk7Cit9CisKKyNpZiBKU0NfT0JKQ19BUElfRU5BQkxFRAorc3RhdGljIEpTVmFsdWUg
KmpzVmFsdWVXaXRoVmFsdWVJbkNvbnRleHQoaWQgdmFsdWUsIEpTQ29udGV4dCAqY29udGV4dCkK
K3sKKyAgICBpZiAoW3ZhbHVlIGlzS2luZE9mQ2xhc3M6W05TU3RyaW5nIGNsYXNzXV0gfHwgW3Zh
bHVlIGlzS2luZE9mQ2xhc3M6W05TTnVtYmVyIGNsYXNzXV0pCisgICAgICAgIHJldHVybiBbSlNW
YWx1ZSB2YWx1ZVdpdGhPYmplY3Q6dmFsdWUgaW5Db250ZXh0OmNvbnRleHRdOworCisgICAgaWYg
KFt2YWx1ZSBpc0tpbmRPZkNsYXNzOltOU0xvY2FsZSBjbGFzc11dKQorICAgICAgICByZXR1cm4g
W0pTVmFsdWUgdmFsdWVXaXRoT2JqZWN0Olt2YWx1ZSBsb2NhbGVJZGVudGlmaWVyXSBpbkNvbnRl
eHQ6Y29udGV4dF07CisKKyAgICBpZiAoW3ZhbHVlIGlzS2luZE9mQ2xhc3M6W05TRGljdGlvbmFy
eSBjbGFzc11dKQorICAgICAgICByZXR1cm4ganNWYWx1ZVdpdGhEaWN0aW9uYXJ5SW5Db250ZXh0
KHZhbHVlLCBjb250ZXh0KTsKKworICAgIGlmIChbdmFsdWUgaXNLaW5kT2ZDbGFzczpbTlNBcnJh
eSBjbGFzc11dKQorICAgICAgICByZXR1cm4ganNWYWx1ZVdpdGhBcnJheUluQ29udGV4dCh2YWx1
ZSwgY29udGV4dCk7CisKKyAgICBpZiAoW3ZhbHVlIGlzS2luZE9mQ2xhc3M6W05TRGF0YSBjbGFz
c11dKQorICAgICAgICByZXR1cm4ganNWYWx1ZVdpdGhEYXRhSW5Db250ZXh0KHZhbHVlLCBjb250
ZXh0KTsKKworICAgIGlmIChbdmFsdWUgaXNLaW5kT2ZDbGFzczpQQUw6OmdldEFWTWV0YWRhdGFJ
dGVtQ2xhc3MoKV0pCisgICAgICAgIHJldHVybiBqc1ZhbHVlV2l0aEFWTWV0YWRhdGFJdGVtSW5D
b250ZXh0KHZhbHVlLCBjb250ZXh0KTsKKworICAgIHJldHVybiBuaWw7Cit9CisKK3N0YXRpYyBK
U1ZhbHVlICpqc1ZhbHVlV2l0aERhdGFJbkNvbnRleHQoTlNEYXRhICpkYXRhLCBKU0NvbnRleHQg
KmNvbnRleHQpCit7CisgICAgYXV0byBkYXRhQXJyYXkgPSBBcnJheUJ1ZmZlcjo6dHJ5Q3JlYXRl
KFtkYXRhIGJ5dGVzXSwgW2RhdGEgbGVuZ3RoXSk7CisKKyAgICBhdXRvKiBsZXhpY2FsR2xvYmFs
T2JqZWN0ID0gdG9KUyhbY29udGV4dCBKU0dsb2JhbENvbnRleHRSZWZdKTsKKyAgICBKU0M6OkpT
VmFsdWUgYXJyYXkgPSB0b0pTKGxleGljYWxHbG9iYWxPYmplY3QsIEpTQzo6anNDYXN0PEpTRE9N
R2xvYmFsT2JqZWN0Kj4obGV4aWNhbEdsb2JhbE9iamVjdCksIGRhdGFBcnJheS5nZXQoKSk7CisK
KyAgICByZXR1cm4gW0pTVmFsdWUgdmFsdWVXaXRoSlNWYWx1ZVJlZjp0b1JlZihsZXhpY2FsR2xv
YmFsT2JqZWN0LCBhcnJheSkgaW5Db250ZXh0OmNvbnRleHRdOworfQorCitzdGF0aWMgSlNWYWx1
ZSAqanNWYWx1ZVdpdGhBcnJheUluQ29udGV4dChOU0FycmF5ICphcnJheSwgSlNDb250ZXh0ICpj
b250ZXh0KQoreworICAgIEpTVmFsdWVSZWYgZXhjZXB0aW9uID0gMDsKKyAgICBKU1ZhbHVlICpy
ZXN1bHQgPSBbSlNWYWx1ZSB2YWx1ZVdpdGhOZXdBcnJheUluQ29udGV4dDpjb250ZXh0XTsKKyAg
ICBKU09iamVjdFJlZiByZXN1bHRPYmplY3QgPSBKU1ZhbHVlVG9PYmplY3QoW2NvbnRleHQgSlNH
bG9iYWxDb250ZXh0UmVmXSwgW3Jlc3VsdCBKU1ZhbHVlUmVmXSwgJmV4Y2VwdGlvbik7CisgICAg
aWYgKGV4Y2VwdGlvbikKKyAgICAgICAgcmV0dXJuIFtKU1ZhbHVlIHZhbHVlV2l0aFVuZGVmaW5l
ZEluQ29udGV4dDpjb250ZXh0XTsKKworICAgIE5TVUludGVnZXIgY291bnQgPSBbYXJyYXkgY291
bnRdOworICAgIGZvciAoTlNVSW50ZWdlciBpID0gMDsgaSA8IGNvdW50OyArK2kpIHsKKyAgICAg
ICAgSlNWYWx1ZSAqdmFsdWUgPSBqc1ZhbHVlV2l0aFZhbHVlSW5Db250ZXh0KFthcnJheSBvYmpl
Y3RBdEluZGV4OmldLCBjb250ZXh0KTsKKyAgICAgICAgaWYgKCF2YWx1ZSkKKyAgICAgICAgICAg
IGNvbnRpbnVlOworCisgICAgICAgIEpTT2JqZWN0U2V0UHJvcGVydHlBdEluZGV4KFtjb250ZXh0
IEpTR2xvYmFsQ29udGV4dFJlZl0sIHJlc3VsdE9iamVjdCwgKHVuc2lnbmVkKWksIFt2YWx1ZSBK
U1ZhbHVlUmVmXSwgJmV4Y2VwdGlvbik7CisgICAgICAgIGlmIChleGNlcHRpb24pCisgICAgICAg
ICAgICBjb250aW51ZTsKKyAgICB9CisKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitzdGF0aWMg
SlNWYWx1ZSAqanNWYWx1ZVdpdGhEaWN0aW9uYXJ5SW5Db250ZXh0KE5TRGljdGlvbmFyeSAqZGlj
dGlvbmFyeSwgSlNDb250ZXh0ICpjb250ZXh0KQoreworICAgIEpTVmFsdWVSZWYgZXhjZXB0aW9u
ID0gMDsKKyAgICBKU1ZhbHVlICpyZXN1bHQgPSBbSlNWYWx1ZSB2YWx1ZVdpdGhOZXdPYmplY3RJ
bkNvbnRleHQ6Y29udGV4dF07CisgICAgSlNPYmplY3RSZWYgcmVzdWx0T2JqZWN0ID0gSlNWYWx1
ZVRvT2JqZWN0KFtjb250ZXh0IEpTR2xvYmFsQ29udGV4dFJlZl0sIFtyZXN1bHQgSlNWYWx1ZVJl
Zl0sICZleGNlcHRpb24pOworICAgIGlmIChleGNlcHRpb24pCisgICAgICAgIHJldHVybiBbSlNW
YWx1ZSB2YWx1ZVdpdGhVbmRlZmluZWRJbkNvbnRleHQ6Y29udGV4dF07CisKKyAgICBmb3IgKGlk
IGtleSBpbiBbZGljdGlvbmFyeSBrZXlFbnVtZXJhdG9yXSkgeworICAgICAgICBpZiAoIVtrZXkg
aXNLaW5kT2ZDbGFzczpbTlNTdHJpbmcgY2xhc3NdXSkKKyAgICAgICAgICAgIGNvbnRpbnVlOwor
CisgICAgICAgIEpTVmFsdWUgKnZhbHVlID0ganNWYWx1ZVdpdGhWYWx1ZUluQ29udGV4dChbZGlj
dGlvbmFyeSBvYmplY3RGb3JLZXk6a2V5XSwgY29udGV4dCk7CisgICAgICAgIGlmICghdmFsdWUp
CisgICAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBhdXRvIG5hbWUgPSBPcGFxdWVKU1N0
cmluZzo6dHJ5Q3JlYXRlKGtleSk7CisgICAgICAgIEpTT2JqZWN0U2V0UHJvcGVydHkoW2NvbnRl
eHQgSlNHbG9iYWxDb250ZXh0UmVmXSwgcmVzdWx0T2JqZWN0LCBuYW1lLmdldCgpLCBbdmFsdWUg
SlNWYWx1ZVJlZl0sIDAsICZleGNlcHRpb24pOworICAgICAgICBpZiAoZXhjZXB0aW9uKQorICAg
ICAgICAgICAgY29udGludWU7CisgICAgfQorCisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworc3Rh
dGljIEpTVmFsdWUgKmpzVmFsdWVXaXRoQVZNZXRhZGF0YUl0ZW1JbkNvbnRleHQoQVZNZXRhZGF0
YUl0ZW0gKml0ZW0sIEpTQ29udGV4dCAqY29udGV4dCkKK3sKKyAgICBOU011dGFibGVEaWN0aW9u
YXJ5ICpkaWN0aW9uYXJ5ID0gW05TTXV0YWJsZURpY3Rpb25hcnkgZGljdGlvbmFyeV07CisKKyAg
ICBOU0RpY3Rpb25hcnkgKmV4dHJhcyA9IFtpdGVtIGV4dHJhQXR0cmlidXRlc107CisgICAgZm9y
IChpZCBrZXkgaW4gW2V4dHJhcyBrZXlFbnVtZXJhdG9yXSkgeworICAgICAgICBpZiAoIVtrZXkg
aXNLaW5kT2ZDbGFzczpbTlNTdHJpbmcgY2xhc3NdXSkKKyAgICAgICAgICAgIGNvbnRpbnVlOwor
ICAgICAgICBpZCB2YWx1ZSA9IFtleHRyYXMgb2JqZWN0Rm9yS2V5OmtleV07CisgICAgICAgIE5T
U3RyaW5nICprZXlTdHJpbmcgPSBrZXk7CisKKyAgICAgICAgaWYgKFtrZXkgaXNFcXVhbFRvU3Ry
aW5nOkAiTUlNRXR5cGUiXSkKKyAgICAgICAgICAgIGtleVN0cmluZyA9IEAidHlwZSI7CisgICAg
ICAgIGVsc2UgaWYgKFtrZXkgaXNFcXVhbFRvU3RyaW5nOkAiZGF0YVR5cGVOYW1lc3BhY2UiXSB8
fCBba2V5IGlzRXF1YWxUb1N0cmluZzpAInBpY3R1cmVUeXBlIl0pCisgICAgICAgICAgICBjb250
aW51ZTsKKyAgICAgICAgZWxzZSBpZiAoW2tleSBpc0VxdWFsVG9TdHJpbmc6QCJkYXRhVHlwZSJd
KSB7CisgICAgICAgICAgICBpZCBkYXRhVHlwZU5hbWVzcGFjZSA9IFtleHRyYXMgb2JqZWN0Rm9y
S2V5OkAiZGF0YVR5cGVOYW1lc3BhY2UiXTsKKyAgICAgICAgICAgIGlmICghZGF0YVR5cGVOYW1l
c3BhY2UgfHwgIVtkYXRhVHlwZU5hbWVzcGFjZSBpc0tpbmRPZkNsYXNzOltOU1N0cmluZyBjbGFz
c11dIHx8ICFbZGF0YVR5cGVOYW1lc3BhY2UgaXNFcXVhbFRvU3RyaW5nOkAib3JnLmlhbmEubWVk
aWEtdHlwZSJdKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAga2V5U3Ry
aW5nID0gQCJ0eXBlIjsKKyAgICAgICAgfSBlbHNlIGlmIChbdmFsdWUgaXNLaW5kT2ZDbGFzczpb
TlNTdHJpbmcgY2xhc3NdXSkgeworICAgICAgICAgICAgaWYgKCFbdmFsdWUgbGVuZ3RoXSkKKyAg
ICAgICAgICAgICAgICBjb250aW51ZTsKKyAgICAgICAgICAgIGtleVN0cmluZyA9IFtrZXkgbG93
ZXJjYXNlU3RyaW5nXTsKKyAgICAgICAgfQorCisgICAgICAgIFtkaWN0aW9uYXJ5IHNldE9iamVj
dDp2YWx1ZSBmb3JLZXk6a2V5U3RyaW5nXTsKKyAgICB9CisKKyAgICBpZiAoaXRlbS5rZXkpCisg
ICAgICAgIFtkaWN0aW9uYXJ5IHNldE9iamVjdDppdGVtLmtleSBmb3JLZXk6QCJrZXkiXTsKKwor
ICAgIGlmIChpdGVtLmxvY2FsZSkKKyAgICAgICAgW2RpY3Rpb25hcnkgc2V0T2JqZWN0Oml0ZW0u
bG9jYWxlIGZvcktleTpAImxvY2FsZSJdOworCisgICAgaWYgKGl0ZW0udmFsdWUpCisgICAgICAg
IFtkaWN0aW9uYXJ5IHNldE9iamVjdDppdGVtLnZhbHVlIGZvcktleTpAImRhdGEiXTsKKworICAg
IHJldHVybiBqc1ZhbHVlV2l0aERpY3Rpb25hcnlJbkNvbnRleHQoZGljdGlvbmFyeSwgY29udGV4
dCk7Cit9CisjZW5kaWYKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TZXJpYWxpemVkUGxhdGZvcm1SZXBy
ZXNlbnRhdGlvbk1hYy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1NlcmlhbGl6ZWRQ
bGF0Zm9ybVJlcHJlc2VudGF0aW9uTWFjLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4
IGZmNTY0Y2EzOGQ0MTA4ZGVjZmUyZGNmODEwZTc0MTcwNzY3MjIxNmYuLjAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
bWFjL1NlcmlhbGl6ZWRQbGF0Zm9ybVJlcHJlc2VudGF0aW9uTWFjLmgKKysrIC9kZXYvbnVsbApA
QCAtMSw2NSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJl
IG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQg
QU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFO
RCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElO
IE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBM
QVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI2lmbmRlZiBTZXJpYWxpemVkUGxhdGZvcm1S
ZXByZXNlbnRhdGlvbk1hY19oCi0jZGVmaW5lIFNlcmlhbGl6ZWRQbGF0Zm9ybVJlcHJlc2VudGF0
aW9uTWFjX2gKLQotI2lmIEVOQUJMRShWSURFT19UUkFDSykgJiYgRU5BQkxFKERBVEFDVUVfVkFM
VUUpCi0KLSNpbmNsdWRlICJTZXJpYWxpemVkUGxhdGZvcm1SZXByZXNlbnRhdGlvbi5oIgotCi0j
aWYgVVNFKEZPVU5EQVRJT04pICYmICFkZWZpbmVkKF9fT0JKQ19fKQotdHlwZWRlZiBzdHJ1Y3Qg
b2JqY19vYmplY3QgKmlkOwotI2VuZGlmCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotY2xhc3Mg
U2VyaWFsaXplZFBsYXRmb3JtUmVwcmVzZW50YXRpb25NYWMgOiBwdWJsaWMgU2VyaWFsaXplZFBs
YXRmb3JtUmVwcmVzZW50YXRpb24gewotcHVibGljOgotICAgIHZpcnR1YWwgflNlcmlhbGl6ZWRQ
bGF0Zm9ybVJlcHJlc2VudGF0aW9uTWFjKCk7Ci0gICAgc3RhdGljIFJlZjxTZXJpYWxpemVkUGxh
dGZvcm1SZXByZXNlbnRhdGlvbj4gY3JlYXRlKGlkKTsKLQotICAgIEpTQzo6SlNWYWx1ZSBkZXNl
cmlhbGl6ZShKU0M6OkpTR2xvYmFsT2JqZWN0KikgY29uc3Qgb3ZlcnJpZGU7Ci0gICAgUmVmUHRy
PEFycmF5QnVmZmVyPiBkYXRhKCkgY29uc3Qgb3ZlcnJpZGU7Ci0KLSAgICBib29sIGlzRXF1YWwo
Y29uc3QgU2VyaWFsaXplZFBsYXRmb3JtUmVwcmVzZW50YXRpb24mKSBjb25zdCBvdmVycmlkZTsK
LQotICAgIFBsYXRmb3JtVHlwZSBwbGF0Zm9ybVR5cGUoKSBjb25zdCBvdmVycmlkZSB7IHJldHVy
biBTZXJpYWxpemVkUGxhdGZvcm1SZXByZXNlbnRhdGlvbjo6T2JqQzsgfQotCi0gICAgaWQgbmF0
aXZlVmFsdWUoKSBjb25zdCB7IHJldHVybiBtX25hdGl2ZVZhbHVlLmdldCgpOyB9Ci0KLXByaXZh
dGU6Ci0gICAgU2VyaWFsaXplZFBsYXRmb3JtUmVwcmVzZW50YXRpb25NYWMoaWQgbmF0aXZlVmFs
dWUpOwotCi0gICAgUmV0YWluUHRyPGlkPiBtX25hdGl2ZVZhbHVlOwotfTsKLQotU2VyaWFsaXpl
ZFBsYXRmb3JtUmVwcmVzZW50YXRpb25NYWMqIHRvU2VyaWFsaXplZFBsYXRmb3JtUmVwcmVzZW50
YXRpb25NYWMoU2VyaWFsaXplZFBsYXRmb3JtUmVwcmVzZW50YXRpb24qKTsKLWNvbnN0IFNlcmlh
bGl6ZWRQbGF0Zm9ybVJlcHJlc2VudGF0aW9uTWFjKiB0b1NlcmlhbGl6ZWRQbGF0Zm9ybVJlcHJl
c2VudGF0aW9uTWFjKGNvbnN0IFNlcmlhbGl6ZWRQbGF0Zm9ybVJlcHJlc2VudGF0aW9uKik7Ci0K
LX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmCi0jZW5kaWYgLy8gU2VyaWFsaXplZFBs
YXRmb3JtUmVwcmVzZW50YXRpb25NYWNfaApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vbWFjL1NlcmlhbGl6ZWRQbGF0Zm9ybVJlcHJlc2VudGF0aW9uTWFjLm1tIGIvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWFjL1NlcmlhbGl6ZWRQbGF0Zm9ybVJlcHJlc2VudGF0aW9uTWFj
Lm1tCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1ZDY0ZTExMGIxZTNiMmZlY2FjOTAx
MWU5ZjdiYWY5ZDM4OGFiZmVhLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwCi0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TZXJpYWxpemVkUGxhdGZvcm1S
ZXByZXNlbnRhdGlvbk1hYy5tbQorKysgL2Rldi9udWxsCkBAIC0xLDI0MSArMCwwIEBACi0vKgot
ICogQ29weXJpZ2h0IChDKSAyMDE0LCAyMDE1IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycnCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKLSAqIFRI
RSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwotICogQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VS
RU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuCi0gKi8KLQotI2luY2x1ZGUgImNvbmZpZy5oIgotCi0jaWYgRU5BQkxFKFZJREVPX1RS
QUNLKSAmJiBFTkFCTEUoREFUQUNVRV9WQUxVRSkKLSNpbmNsdWRlICJTZXJpYWxpemVkUGxhdGZv
cm1SZXByZXNlbnRhdGlvbk1hYy5oIgotCi0jaW1wb3J0ICJKU0RPTUNvbnZlcnRCdWZmZXJTb3Vy
Y2UuaCIKLSNpbXBvcnQgPEFWRm91bmRhdGlvbi9BVk1ldGFkYXRhSXRlbS5oPgotI2ltcG9ydCA8
Rm91bmRhdGlvbi9OU1N0cmluZy5oPgotI2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvQVBJQ2FzdC5o
PgotI2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvQXJyYXlCdWZmZXIuaD4KLSNpbXBvcnQgPEphdmFT
Y3JpcHRDb3JlL0pTQXJyYXlCdWZmZXIuaD4KLSNpbXBvcnQgPEphdmFTY3JpcHRDb3JlL0pTQ29u
dGV4dFJlZi5oPgotI2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvSlNPYmplY3RSZWYuaD4KLSNpbXBv
cnQgPEphdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLmg+Ci0jaW1wb3J0IDxvYmpjL3J1bnRp
bWUuaD4KLSNpbXBvcnQgPHd0Zi90ZXh0L0Jhc2U2NC5oPgotCi0jaW1wb3J0IDxwYWwvY29jb2Ev
QVZGb3VuZGF0aW9uU29mdExpbmsuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi0jaWYgSlND
X09CSkNfQVBJX0VOQUJMRUQKLXN0YXRpYyBKU1ZhbHVlICpqc1ZhbHVlV2l0aERhdGFJbkNvbnRl
eHQoTlNEYXRhICosIEpTQ29udGV4dCAqKTsKLXN0YXRpYyBKU1ZhbHVlICpqc1ZhbHVlV2l0aEFy
cmF5SW5Db250ZXh0KE5TQXJyYXkgKiwgSlNDb250ZXh0ICopOwotc3RhdGljIEpTVmFsdWUgKmpz
VmFsdWVXaXRoRGljdGlvbmFyeUluQ29udGV4dChOU0RpY3Rpb25hcnkgKiwgSlNDb250ZXh0ICop
Owotc3RhdGljIEpTVmFsdWUgKmpzVmFsdWVXaXRoQVZNZXRhZGF0YUl0ZW1JbkNvbnRleHQoQVZN
ZXRhZGF0YUl0ZW0gKiwgSlNDb250ZXh0ICopOwotc3RhdGljIEpTVmFsdWUgKmpzVmFsdWVXaXRo
VmFsdWVJbkNvbnRleHQoaWQsIEpTQ29udGV4dCAqKTsKLSNlbmRpZgotCi1TZXJpYWxpemVkUGxh
dGZvcm1SZXByZXNlbnRhdGlvbk1hYzo6U2VyaWFsaXplZFBsYXRmb3JtUmVwcmVzZW50YXRpb25N
YWMoaWQgbmF0aXZlVmFsdWUpCi0gICAgOiBTZXJpYWxpemVkUGxhdGZvcm1SZXByZXNlbnRhdGlv
bigpCi0gICAgLCBtX25hdGl2ZVZhbHVlKG5hdGl2ZVZhbHVlKQotewotfQotCi1TZXJpYWxpemVk
UGxhdGZvcm1SZXByZXNlbnRhdGlvbk1hYzo6flNlcmlhbGl6ZWRQbGF0Zm9ybVJlcHJlc2VudGF0
aW9uTWFjKCkKLXsKLX0KLQotUmVmPFNlcmlhbGl6ZWRQbGF0Zm9ybVJlcHJlc2VudGF0aW9uPiBT
ZXJpYWxpemVkUGxhdGZvcm1SZXByZXNlbnRhdGlvbk1hYzo6Y3JlYXRlKGlkIG5hdGl2ZVZhbHVl
KQotewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNlcmlhbGl6ZWRQbGF0Zm9ybVJlcHJlc2Vu
dGF0aW9uTWFjKG5hdGl2ZVZhbHVlKSk7Ci19Ci0KLVJlZlB0cjxBcnJheUJ1ZmZlcj4gU2VyaWFs
aXplZFBsYXRmb3JtUmVwcmVzZW50YXRpb25NYWM6OmRhdGEoKSBjb25zdAotewotICAgIHJldHVy
biBudWxscHRyOwotfQotCi1KU0M6OkpTVmFsdWUgU2VyaWFsaXplZFBsYXRmb3JtUmVwcmVzZW50
YXRpb25NYWM6OmRlc2VyaWFsaXplKEpTQzo6SlNHbG9iYWxPYmplY3QqIGxleGljYWxHbG9iYWxP
YmplY3QpIGNvbnN0Ci17Ci0jaWYgSlNDX09CSkNfQVBJX0VOQUJMRUQKLSAgICBpZiAoIW1fbmF0
aXZlVmFsdWUpCi0gICAgICAgIHJldHVybiBKU0M6OmpzTnVsbCgpOwotCi0gICAgSlNHbG9iYWxD
b250ZXh0UmVmIGpzR2xvYmFsQ29udGV4dFJlZiA9IHRvR2xvYmFsUmVmKGxleGljYWxHbG9iYWxP
YmplY3QpOwotICAgIEpTQ29udGV4dCAqanNDb250ZXh0ID0gW0pTQ29udGV4dCBjb250ZXh0V2l0
aEpTR2xvYmFsQ29udGV4dFJlZjpqc0dsb2JhbENvbnRleHRSZWZdOwotICAgIEpTVmFsdWUgKnNl
cmlhbGl6ZWRWYWx1ZSA9IGpzVmFsdWVXaXRoVmFsdWVJbkNvbnRleHQobV9uYXRpdmVWYWx1ZS5n
ZXQoKSwganNDb250ZXh0KTsKLQotICAgIHJldHVybiB0b0pTKGxleGljYWxHbG9iYWxPYmplY3Qs
IFtzZXJpYWxpemVkVmFsdWUgSlNWYWx1ZVJlZl0pOwotI2Vsc2UKLSAgICBVTlVTRURfUEFSQU0o
bGV4aWNhbEdsb2JhbE9iamVjdCk7Ci0gICAgcmV0dXJuIEpTQzo6anNOdWxsKCk7Ci0jZW5kaWYK
LX0KLQotYm9vbCBTZXJpYWxpemVkUGxhdGZvcm1SZXByZXNlbnRhdGlvbk1hYzo6aXNFcXVhbChj
b25zdCBTZXJpYWxpemVkUGxhdGZvcm1SZXByZXNlbnRhdGlvbiYgb3RoZXIpIGNvbnN0Ci17Ci0g
ICAgaWYgKG90aGVyLnBsYXRmb3JtVHlwZSgpICE9IFNlcmlhbGl6ZWRQbGF0Zm9ybVJlcHJlc2Vu
dGF0aW9uOjpPYmpDKQotICAgICAgICByZXR1cm4gZmFsc2U7Ci0KLSAgICBjb25zdCBTZXJpYWxp
emVkUGxhdGZvcm1SZXByZXNlbnRhdGlvbk1hYyogb3RoZXJPYmpDID0gdG9TZXJpYWxpemVkUGxh
dGZvcm1SZXByZXNlbnRhdGlvbk1hYygmb3RoZXIpOwotCi0gICAgaWYgKCFtX25hdGl2ZVZhbHVl
IHx8ICFvdGhlck9iakMtPm5hdGl2ZVZhbHVlKCkpCi0gICAgICAgIHJldHVybiBmYWxzZTsKLQot
ICAgIHJldHVybiBbbV9uYXRpdmVWYWx1ZS5nZXQoKSBpc0VxdWFsOm90aGVyT2JqQy0+bmF0aXZl
VmFsdWUoKV07Ci19Ci0KLVNlcmlhbGl6ZWRQbGF0Zm9ybVJlcHJlc2VudGF0aW9uTWFjKiB0b1Nl
cmlhbGl6ZWRQbGF0Zm9ybVJlcHJlc2VudGF0aW9uTWFjKFNlcmlhbGl6ZWRQbGF0Zm9ybVJlcHJl
c2VudGF0aW9uKiByZXApCi17Ci0gICAgcmV0dXJuIGNvbnN0X2Nhc3Q8U2VyaWFsaXplZFBsYXRm
b3JtUmVwcmVzZW50YXRpb25NYWMqPih0b1NlcmlhbGl6ZWRQbGF0Zm9ybVJlcHJlc2VudGF0aW9u
TWFjKGNvbnN0X2Nhc3Q8Y29uc3QgU2VyaWFsaXplZFBsYXRmb3JtUmVwcmVzZW50YXRpb24qPihy
ZXApKSk7Ci19Ci0KLWNvbnN0IFNlcmlhbGl6ZWRQbGF0Zm9ybVJlcHJlc2VudGF0aW9uTWFjKiB0
b1NlcmlhbGl6ZWRQbGF0Zm9ybVJlcHJlc2VudGF0aW9uTWFjKGNvbnN0IFNlcmlhbGl6ZWRQbGF0
Zm9ybVJlcHJlc2VudGF0aW9uKiByZXApCi17Ci0gICAgQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1Q
TElDQVRJT04ocmVwLT5wbGF0Zm9ybVR5cGUoKSA9PSBTZXJpYWxpemVkUGxhdGZvcm1SZXByZXNl
bnRhdGlvbjo6T2JqQyk7Ci0gICAgcmV0dXJuIHN0YXRpY19jYXN0PGNvbnN0IFNlcmlhbGl6ZWRQ
bGF0Zm9ybVJlcHJlc2VudGF0aW9uTWFjKj4ocmVwKTsKLX0KLQotI2lmIEpTQ19PQkpDX0FQSV9F
TkFCTEVECi1zdGF0aWMgSlNWYWx1ZSAqanNWYWx1ZVdpdGhWYWx1ZUluQ29udGV4dChpZCB2YWx1
ZSwgSlNDb250ZXh0ICpjb250ZXh0KQotewotICAgIGlmIChbdmFsdWUgaXNLaW5kT2ZDbGFzczpb
TlNTdHJpbmcgY2xhc3NdXSB8fCBbdmFsdWUgaXNLaW5kT2ZDbGFzczpbTlNOdW1iZXIgY2xhc3Nd
XSkKLSAgICAgICAgcmV0dXJuIFtKU1ZhbHVlIHZhbHVlV2l0aE9iamVjdDp2YWx1ZSBpbkNvbnRl
eHQ6Y29udGV4dF07Ci0KLSAgICBpZiAoW3ZhbHVlIGlzS2luZE9mQ2xhc3M6W05TTG9jYWxlIGNs
YXNzXV0pCi0gICAgICAgIHJldHVybiBbSlNWYWx1ZSB2YWx1ZVdpdGhPYmplY3Q6W3ZhbHVlIGxv
Y2FsZUlkZW50aWZpZXJdIGluQ29udGV4dDpjb250ZXh0XTsKLQotICAgIGlmIChbdmFsdWUgaXNL
aW5kT2ZDbGFzczpbTlNEaWN0aW9uYXJ5IGNsYXNzXV0pCi0gICAgICAgIHJldHVybiBqc1ZhbHVl
V2l0aERpY3Rpb25hcnlJbkNvbnRleHQodmFsdWUsIGNvbnRleHQpOwotCi0gICAgaWYgKFt2YWx1
ZSBpc0tpbmRPZkNsYXNzOltOU0FycmF5IGNsYXNzXV0pCi0gICAgICAgIHJldHVybiBqc1ZhbHVl
V2l0aEFycmF5SW5Db250ZXh0KHZhbHVlLCBjb250ZXh0KTsKLQotICAgIGlmIChbdmFsdWUgaXNL
aW5kT2ZDbGFzczpbTlNEYXRhIGNsYXNzXV0pCi0gICAgICAgIHJldHVybiBqc1ZhbHVlV2l0aERh
dGFJbkNvbnRleHQodmFsdWUsIGNvbnRleHQpOwotCi0gICAgaWYgKFt2YWx1ZSBpc0tpbmRPZkNs
YXNzOlBBTDo6Z2V0QVZNZXRhZGF0YUl0ZW1DbGFzcygpXSkKLSAgICAgICAgcmV0dXJuIGpzVmFs
dWVXaXRoQVZNZXRhZGF0YUl0ZW1JbkNvbnRleHQodmFsdWUsIGNvbnRleHQpOwotCi0gICAgcmV0
dXJuIG5pbDsKLX0KLQotc3RhdGljIEpTVmFsdWUgKmpzVmFsdWVXaXRoRGF0YUluQ29udGV4dChO
U0RhdGEgKmRhdGEsIEpTQ29udGV4dCAqY29udGV4dCkKLXsKLSAgICBhdXRvIGRhdGFBcnJheSA9
IEFycmF5QnVmZmVyOjp0cnlDcmVhdGUoW2RhdGEgYnl0ZXNdLCBbZGF0YSBsZW5ndGhdKTsKLQot
ICAgIGF1dG8qIGxleGljYWxHbG9iYWxPYmplY3QgPSB0b0pTKFtjb250ZXh0IEpTR2xvYmFsQ29u
dGV4dFJlZl0pOwotICAgIEpTQzo6SlNWYWx1ZSBhcnJheSA9IHRvSlMobGV4aWNhbEdsb2JhbE9i
amVjdCwgSlNDOjpqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihsZXhpY2FsR2xvYmFsT2JqZWN0
KSwgZGF0YUFycmF5LmdldCgpKTsKLQotICAgIHJldHVybiBbSlNWYWx1ZSB2YWx1ZVdpdGhKU1Zh
bHVlUmVmOnRvUmVmKGxleGljYWxHbG9iYWxPYmplY3QsIGFycmF5KSBpbkNvbnRleHQ6Y29udGV4
dF07Ci19Ci0KLXN0YXRpYyBKU1ZhbHVlICpqc1ZhbHVlV2l0aEFycmF5SW5Db250ZXh0KE5TQXJy
YXkgKmFycmF5LCBKU0NvbnRleHQgKmNvbnRleHQpCi17Ci0gICAgSlNWYWx1ZVJlZiBleGNlcHRp
b24gPSAwOwotICAgIEpTVmFsdWUgKnJlc3VsdCA9IFtKU1ZhbHVlIHZhbHVlV2l0aE5ld0FycmF5
SW5Db250ZXh0OmNvbnRleHRdOwotICAgIEpTT2JqZWN0UmVmIHJlc3VsdE9iamVjdCA9IEpTVmFs
dWVUb09iamVjdChbY29udGV4dCBKU0dsb2JhbENvbnRleHRSZWZdLCBbcmVzdWx0IEpTVmFsdWVS
ZWZdLCAmZXhjZXB0aW9uKTsKLSAgICBpZiAoZXhjZXB0aW9uKQotICAgICAgICByZXR1cm4gW0pT
VmFsdWUgdmFsdWVXaXRoVW5kZWZpbmVkSW5Db250ZXh0OmNvbnRleHRdOwotCi0gICAgTlNVSW50
ZWdlciBjb3VudCA9IFthcnJheSBjb3VudF07Ci0gICAgZm9yIChOU1VJbnRlZ2VyIGkgPSAwOyBp
IDwgY291bnQ7ICsraSkgewotICAgICAgICBKU1ZhbHVlICp2YWx1ZSA9IGpzVmFsdWVXaXRoVmFs
dWVJbkNvbnRleHQoW2FycmF5IG9iamVjdEF0SW5kZXg6aV0sIGNvbnRleHQpOwotICAgICAgICBp
ZiAoIXZhbHVlKQotICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAgSlNPYmplY3RTZXRQ
cm9wZXJ0eUF0SW5kZXgoW2NvbnRleHQgSlNHbG9iYWxDb250ZXh0UmVmXSwgcmVzdWx0T2JqZWN0
LCAodW5zaWduZWQpaSwgW3ZhbHVlIEpTVmFsdWVSZWZdLCAmZXhjZXB0aW9uKTsKLSAgICAgICAg
aWYgKGV4Y2VwdGlvbikKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgIH0KLQotICAgIHJldHVy
biByZXN1bHQ7Ci19Ci0KLXN0YXRpYyBKU1ZhbHVlICpqc1ZhbHVlV2l0aERpY3Rpb25hcnlJbkNv
bnRleHQoTlNEaWN0aW9uYXJ5ICpkaWN0aW9uYXJ5LCBKU0NvbnRleHQgKmNvbnRleHQpCi17Ci0g
ICAgSlNWYWx1ZVJlZiBleGNlcHRpb24gPSAwOwotICAgIEpTVmFsdWUgKnJlc3VsdCA9IFtKU1Zh
bHVlIHZhbHVlV2l0aE5ld09iamVjdEluQ29udGV4dDpjb250ZXh0XTsKLSAgICBKU09iamVjdFJl
ZiByZXN1bHRPYmplY3QgPSBKU1ZhbHVlVG9PYmplY3QoW2NvbnRleHQgSlNHbG9iYWxDb250ZXh0
UmVmXSwgW3Jlc3VsdCBKU1ZhbHVlUmVmXSwgJmV4Y2VwdGlvbik7Ci0gICAgaWYgKGV4Y2VwdGlv
bikKLSAgICAgICAgcmV0dXJuIFtKU1ZhbHVlIHZhbHVlV2l0aFVuZGVmaW5lZEluQ29udGV4dDpj
b250ZXh0XTsKLQotICAgIGZvciAoaWQga2V5IGluIFtkaWN0aW9uYXJ5IGtleUVudW1lcmF0b3Jd
KSB7Ci0gICAgICAgIGlmICghW2tleSBpc0tpbmRPZkNsYXNzOltOU1N0cmluZyBjbGFzc11dKQot
ICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAgSlNWYWx1ZSAqdmFsdWUgPSBqc1ZhbHVl
V2l0aFZhbHVlSW5Db250ZXh0KFtkaWN0aW9uYXJ5IG9iamVjdEZvcktleTprZXldLCBjb250ZXh0
KTsKLSAgICAgICAgaWYgKCF2YWx1ZSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotCi0gICAgICAg
IGF1dG8gbmFtZSA9IE9wYXF1ZUpTU3RyaW5nOjp0cnlDcmVhdGUoa2V5KTsKLSAgICAgICAgSlNP
YmplY3RTZXRQcm9wZXJ0eShbY29udGV4dCBKU0dsb2JhbENvbnRleHRSZWZdLCByZXN1bHRPYmpl
Y3QsIG5hbWUuZ2V0KCksIFt2YWx1ZSBKU1ZhbHVlUmVmXSwgMCwgJmV4Y2VwdGlvbik7Ci0gICAg
ICAgIGlmIChleGNlcHRpb24pCi0gICAgICAgICAgICBjb250aW51ZTsKLSAgICB9Ci0KLSAgICBy
ZXR1cm4gcmVzdWx0OwotfQotCi1zdGF0aWMgSlNWYWx1ZSAqanNWYWx1ZVdpdGhBVk1ldGFkYXRh
SXRlbUluQ29udGV4dChBVk1ldGFkYXRhSXRlbSAqaXRlbSwgSlNDb250ZXh0ICpjb250ZXh0KQot
ewotICAgIE5TTXV0YWJsZURpY3Rpb25hcnkgKmRpY3Rpb25hcnkgPSBbTlNNdXRhYmxlRGljdGlv
bmFyeSBkaWN0aW9uYXJ5XTsKLQotICAgIE5TRGljdGlvbmFyeSAqZXh0cmFzID0gW2l0ZW0gZXh0
cmFBdHRyaWJ1dGVzXTsKLSAgICBmb3IgKGlkIGtleSBpbiBbZXh0cmFzIGtleUVudW1lcmF0b3Jd
KSB7Ci0gICAgICAgIGlmICghW2tleSBpc0tpbmRPZkNsYXNzOltOU1N0cmluZyBjbGFzc11dKQot
ICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIGlkIHZhbHVlID0gW2V4dHJhcyBvYmplY3RG
b3JLZXk6a2V5XTsKLSAgICAgICAgTlNTdHJpbmcgKmtleVN0cmluZyA9IGtleTsKLQotICAgICAg
ICBpZiAoW2tleSBpc0VxdWFsVG9TdHJpbmc6QCJNSU1FdHlwZSJdKQotICAgICAgICAgICAga2V5
U3RyaW5nID0gQCJ0eXBlIjsKLSAgICAgICAgZWxzZSBpZiAoW2tleSBpc0VxdWFsVG9TdHJpbmc6
QCJkYXRhVHlwZU5hbWVzcGFjZSJdIHx8IFtrZXkgaXNFcXVhbFRvU3RyaW5nOkAicGljdHVyZVR5
cGUiXSkKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICBlbHNlIGlmIChba2V5IGlzRXF1
YWxUb1N0cmluZzpAImRhdGFUeXBlIl0pIHsKLSAgICAgICAgICAgIGlkIGRhdGFUeXBlTmFtZXNw
YWNlID0gW2V4dHJhcyBvYmplY3RGb3JLZXk6QCJkYXRhVHlwZU5hbWVzcGFjZSJdOwotICAgICAg
ICAgICAgaWYgKCFkYXRhVHlwZU5hbWVzcGFjZSB8fCAhW2RhdGFUeXBlTmFtZXNwYWNlIGlzS2lu
ZE9mQ2xhc3M6W05TU3RyaW5nIGNsYXNzXV0gfHwgIVtkYXRhVHlwZU5hbWVzcGFjZSBpc0VxdWFs
VG9TdHJpbmc6QCJvcmcuaWFuYS5tZWRpYS10eXBlIl0pCi0gICAgICAgICAgICAgICAgY29udGlu
dWU7Ci0gICAgICAgICAgICBrZXlTdHJpbmcgPSBAInR5cGUiOwotICAgICAgICB9IGVsc2UgaWYg
KFt2YWx1ZSBpc0tpbmRPZkNsYXNzOltOU1N0cmluZyBjbGFzc11dKSB7Ci0gICAgICAgICAgICBp
ZiAoIVt2YWx1ZSBsZW5ndGhdKQotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAg
ICAga2V5U3RyaW5nID0gW2tleSBsb3dlcmNhc2VTdHJpbmddOwotICAgICAgICB9Ci0KLSAgICAg
ICAgW2RpY3Rpb25hcnkgc2V0T2JqZWN0OnZhbHVlIGZvcktleTprZXlTdHJpbmddOwotICAgIH0K
LQotICAgIGlmIChpdGVtLmtleSkKLSAgICAgICAgW2RpY3Rpb25hcnkgc2V0T2JqZWN0Oml0ZW0u
a2V5IGZvcktleTpAImtleSJdOwotCi0gICAgaWYgKGl0ZW0ubG9jYWxlKQotICAgICAgICBbZGlj
dGlvbmFyeSBzZXRPYmplY3Q6aXRlbS5sb2NhbGUgZm9yS2V5OkAibG9jYWxlIl07Ci0KLSAgICBp
ZiAoaXRlbS52YWx1ZSkKLSAgICAgICAgW2RpY3Rpb25hcnkgc2V0T2JqZWN0Oml0ZW0udmFsdWUg
Zm9yS2V5OkAiZGF0YSJdOwotCi0gICAgcmV0dXJuIGpzVmFsdWVXaXRoRGljdGlvbmFyeUluQ29u
dGV4dChkaWN0aW9uYXJ5LCBjb250ZXh0KTsKLX0KLSNlbmRpZgotCi19IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCi0KLSNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21l
ZGlhL1JlbW90ZVRleHRUcmFja1Byb3h5LmNwcCBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9t
ZWRpYS9SZW1vdGVUZXh0VHJhY2tQcm94eS5jcHAKaW5kZXggODBmNzhmN2IzYmU2ZDUzZjI4NTll
OGM2ZTg1M2YyNThhYWVjNmJjZC4uYjc2ZGM5YjBkNDZmODZiNzc5NTdkM2IzYjc4NTQ1OWMzOTQ5
YjJhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZVRl
eHRUcmFja1Byb3h5LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVt
b3RlVGV4dFRyYWNrUHJveHkuY3BwCkBAIC0xMDIsMTcgKzEwMiwxNyBAQCB2b2lkIFJlbW90ZVRl
eHRUcmFja1Byb3h5OjphZGREYXRhQ3VlKGNvbnN0IE1lZGlhVGltZSYsIGNvbnN0IE1lZGlhVGlt
ZSYsIGNvbnN0CiB9CiAKICNpZiBFTkFCTEUoREFUQUNVRV9WQUxVRSkKLXZvaWQgUmVtb3RlVGV4
dFRyYWNrUHJveHk6OmFkZERhdGFDdWUoY29uc3QgTWVkaWFUaW1lJiwgY29uc3QgTWVkaWFUaW1l
JiwgUmVmPFNlcmlhbGl6ZWRQbGF0Zm9ybVJlcHJlc2VudGF0aW9uPiYmLCBjb25zdCBTdHJpbmcm
KQordm9pZCBSZW1vdGVUZXh0VHJhY2tQcm94eTo6YWRkRGF0YUN1ZShjb25zdCBNZWRpYVRpbWUm
LCBjb25zdCBNZWRpYVRpbWUmLCBSZWY8U2VyaWFsaXplZFBsYXRmb3JtRGF0YUN1ZT4mJiwgY29u
c3QgU3RyaW5nJikKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCi12b2lkIFJlbW90ZVRl
eHRUcmFja1Byb3h5Ojp1cGRhdGVEYXRhQ3VlKGNvbnN0IE1lZGlhVGltZSYsIGNvbnN0IE1lZGlh
VGltZSYsIFNlcmlhbGl6ZWRQbGF0Zm9ybVJlcHJlc2VudGF0aW9uJikKK3ZvaWQgUmVtb3RlVGV4
dFRyYWNrUHJveHk6OnVwZGF0ZURhdGFDdWUoY29uc3QgTWVkaWFUaW1lJiwgY29uc3QgTWVkaWFU
aW1lJiwgU2VyaWFsaXplZFBsYXRmb3JtRGF0YUN1ZSYpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQo
KTsKIH0KIAotdm9pZCBSZW1vdGVUZXh0VHJhY2tQcm94eTo6cmVtb3ZlRGF0YUN1ZShjb25zdCBN
ZWRpYVRpbWUmLCBjb25zdCBNZWRpYVRpbWUmLCBTZXJpYWxpemVkUGxhdGZvcm1SZXByZXNlbnRh
dGlvbiYpCit2b2lkIFJlbW90ZVRleHRUcmFja1Byb3h5OjpyZW1vdmVEYXRhQ3VlKGNvbnN0IE1l
ZGlhVGltZSYsIGNvbnN0IE1lZGlhVGltZSYsIFNlcmlhbGl6ZWRQbGF0Zm9ybURhdGFDdWUmKQog
ewogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQ
VVByb2Nlc3MvbWVkaWEvUmVtb3RlVGV4dFRyYWNrUHJveHkuaCBiL1NvdXJjZS9XZWJLaXQvR1BV
UHJvY2Vzcy9tZWRpYS9SZW1vdGVUZXh0VHJhY2tQcm94eS5oCmluZGV4IGNmNGE2NmFlYzY1NWU4
YjdlZTk1Nzk5MTg2OWM0OTQ5OTMyMzg1NmIuLmUyODZlYzQ4OTQ2NzNhNGYyYjU2MWQyMzhiMDZm
NjI3NTM2Y2ZlNDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9S
ZW1vdGVUZXh0VHJhY2tQcm94eS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRp
YS9SZW1vdGVUZXh0VHJhY2tQcm94eS5oCkBAIC01Niw5ICs1Niw5IEBAIHByaXZhdGU6CiAgICAg
dmlydHVhbCB2b2lkIGFkZERhdGFDdWUoY29uc3QgTWVkaWFUaW1lJiBzdGFydCwgY29uc3QgTWVk
aWFUaW1lJiBlbmQsIGNvbnN0IHZvaWQqLCB1bnNpZ25lZCk7CiAKICNpZiBFTkFCTEUoREFUQUNV
RV9WQUxVRSkKLSAgICB2aXJ0dWFsIHZvaWQgYWRkRGF0YUN1ZShjb25zdCBNZWRpYVRpbWUmIHN0
YXJ0LCBjb25zdCBNZWRpYVRpbWUmIGVuZCwgUmVmPFNlcmlhbGl6ZWRQbGF0Zm9ybVJlcHJlc2Vu
dGF0aW9uPiYmLCBjb25zdCBTdHJpbmcmKTsKLSAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlRGF0YUN1
ZShjb25zdCBNZWRpYVRpbWUmIHN0YXJ0LCBjb25zdCBNZWRpYVRpbWUmIGVuZCwgU2VyaWFsaXpl
ZFBsYXRmb3JtUmVwcmVzZW50YXRpb24mKTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlRGF0YUN1
ZShjb25zdCBNZWRpYVRpbWUmIHN0YXJ0LCBjb25zdCBNZWRpYVRpbWUmIGVuZCwgU2VyaWFsaXpl
ZFBsYXRmb3JtUmVwcmVzZW50YXRpb24mKTsKKyAgICB2aXJ0dWFsIHZvaWQgYWRkRGF0YUN1ZShj
b25zdCBNZWRpYVRpbWUmIHN0YXJ0LCBjb25zdCBNZWRpYVRpbWUmIGVuZCwgUmVmPFNlcmlhbGl6
ZWRQbGF0Zm9ybURhdGFDdWU+JiYsIGNvbnN0IFN0cmluZyYpOworICAgIHZpcnR1YWwgdm9pZCB1
cGRhdGVEYXRhQ3VlKGNvbnN0IE1lZGlhVGltZSYgc3RhcnQsIGNvbnN0IE1lZGlhVGltZSYgZW5k
LCBTZXJpYWxpemVkUGxhdGZvcm1EYXRhQ3VlJik7CisgICAgdmlydHVhbCB2b2lkIHJlbW92ZURh
dGFDdWUoY29uc3QgTWVkaWFUaW1lJiBzdGFydCwgY29uc3QgTWVkaWFUaW1lJiBlbmQsIFNlcmlh
bGl6ZWRQbGF0Zm9ybURhdGFDdWUmKTsKICNlbmRpZgogCiAgICAgdmlydHVhbCB2b2lkIGFkZEdl
bmVyaWNDdWUoR2VuZXJpY0N1ZURhdGEmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9HUFUvbWVkaWEvTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlLm1lc3NhZ2VzLmluIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVSZW1v
dGUubWVzc2FnZXMuaW4KaW5kZXggZjQ1OTk4MDEwZTkzNzQxMzU4ODEyNDU0MDc2ZTUxZGZhNmMx
OTdlZi4uYzQwNGRjNjc0MDczN2EzNjhkNGZhNjk0MmE4ZTk2MDk3Nzg0NjA3YiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9NZWRpYVBsYXllclByaXZhdGVS
ZW1vdGUubWVzc2FnZXMuaW4KKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRp
YS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUubWVzc2FnZXMuaW4KQEAgLTUxLDkgKzUxLDkgQEAg
bWVzc2FnZXMgLT4gTWVkaWFQbGF5ZXJQcml2YXRlUmVtb3RlIE5vdFJlZkNvdW50ZWQgewogICAg
IFBhcnNlV2ViVlRUQ3VlRGF0YVN0cnVjdChXZWJLaXQ6OlRyYWNrUHJpdmF0ZVJlbW90ZUlkZW50
aWZpZXIgdHJhY2tJRCwgV2ViQ29yZTo6SVNPV2ViVlRUQ3VlIGN1ZURhdGEpCiAKICAgICAjIyBB
ZGREYXRhQ3VlKE1lZGlhVGltZSBzdGFydCwgTWVkaWFUaW1lIGVuZCwgSVBDOjpEYXRhUmVmZXJl
bmNlIGRhdGEpCi0gICAgIyMgQWRkRGF0YUN1ZShNZWRpYVRpbWUgc3RhcnQsIE1lZGlhVGltZSBl
bmQsIFdlYkNvcmU6OlNlcmlhbGl6ZWRQbGF0Zm9ybVJlcHJlc2VudGF0aW9uIGRhdGEsIFN0cmlu
ZyB0eXBlKQotICAgICMjIFVwZGF0ZURhdGFDdWUoTWVkaWFUaW1lIHN0YXJ0LCBNZWRpYVRpbWUg
ZW5kLCBXZWJDb3JlOjpTZXJpYWxpemVkUGxhdGZvcm1SZXByZXNlbnRhdGlvbiBkYXRhKQotICAg
ICMjIFJlbW92ZURhdGFDdWUoTWVkaWFUaW1lIHN0YXJ0LCBNZWRpYVRpbWUgZW5kLCBXZWJDb3Jl
OjpTZXJpYWxpemVkUGxhdGZvcm1SZXByZXNlbnRhdGlvbiBkYXRhKQorICAgICMjIEFkZERhdGFD
dWUoTWVkaWFUaW1lIHN0YXJ0LCBNZWRpYVRpbWUgZW5kLCBXZWJDb3JlOjpTZXJpYWxpemVkUGxh
dGZvcm1EYXRhQ3VlIGRhdGEsIFN0cmluZyB0eXBlKQorICAgICMjIFVwZGF0ZURhdGFDdWUoTWVk
aWFUaW1lIHN0YXJ0LCBNZWRpYVRpbWUgZW5kLCBXZWJDb3JlOjpTZXJpYWxpemVkUGxhdGZvcm1E
YXRhQ3VlIGRhdGEpCisgICAgIyMgUmVtb3ZlRGF0YUN1ZShNZWRpYVRpbWUgc3RhcnQsIE1lZGlh
VGltZSBlbmQsIFdlYkNvcmU6OlNlcmlhbGl6ZWRQbGF0Zm9ybURhdGFDdWUgZGF0YSkKIAogICAg
ICMjIEFkZEdlbmVyaWNDdWUoV2ViQ29yZTo6R2VuZXJpY0N1ZURhdGEgY3VlKQogICAgICMjIFVw
ZGF0ZUdlbmVyaWNDdWUoV2ViQ29yZTo6R2VuZXJpY0N1ZURhdGEgY3VlKQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9UZXh0VHJhY2tQcml2YXRlUmVtb3Rl
LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvVGV4dFRyYWNrUHJpdmF0
ZVJlbW90ZS5jcHAKaW5kZXggYjAwMDQwZjQ1ZjY3NmUwZDBjYTQ2MWRiY2Q1OTkzN2M3ZWY3N2E3
OC4uNWM3ODc2NGUwYzE3NDEwY2IyMzc2OGE0NTE1YmQ0MjA0NTgzNDNmMSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9UZXh0VHJhY2tQcml2YXRlUmVtb3Rl
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL1RleHRUcmFja1By
aXZhdGVSZW1vdGUuY3BwCkBAIC05NCwxNyArOTQsMTcgQEAgdm9pZCBUZXh0VHJhY2tQcml2YXRl
UmVtb3RlOjphZGREYXRhQ3VlKGNvbnN0IE1lZGlhVGltZSYgc3RhcnQsIGNvbnN0IE1lZGlhVGlt
ZSYKIH0KIAogI2lmIEVOQUJMRShEQVRBQ1VFX1ZBTFVFKQotdm9pZCBUZXh0VHJhY2tQcml2YXRl
UmVtb3RlOjphZGREYXRhQ3VlKGNvbnN0IE1lZGlhVGltZSYgc3RhcnQsIGNvbnN0IE1lZGlhVGlt
ZSYgZW5kLCBSZWY8U2VyaWFsaXplZFBsYXRmb3JtUmVwcmVzZW50YXRpb24+JiYsIGNvbnN0IFN0
cmluZyYpCit2b2lkIFRleHRUcmFja1ByaXZhdGVSZW1vdGU6OmFkZERhdGFDdWUoY29uc3QgTWVk
aWFUaW1lJiBzdGFydCwgY29uc3QgTWVkaWFUaW1lJiBlbmQsIFJlZjxTZXJpYWxpemVkUGxhdGZv
cm1EYXRhQ3VlPiYmLCBjb25zdCBTdHJpbmcmKQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9
CiAKLXZvaWQgVGV4dFRyYWNrUHJpdmF0ZVJlbW90ZTo6dXBkYXRlRGF0YUN1ZShjb25zdCBNZWRp
YVRpbWUmIHN0YXJ0LCBjb25zdCBNZWRpYVRpbWUmIGVuZCwgU2VyaWFsaXplZFBsYXRmb3JtUmVw
cmVzZW50YXRpb24mKQordm9pZCBUZXh0VHJhY2tQcml2YXRlUmVtb3RlOjp1cGRhdGVEYXRhQ3Vl
KGNvbnN0IE1lZGlhVGltZSYgc3RhcnQsIGNvbnN0IE1lZGlhVGltZSYgZW5kLCBTZXJpYWxpemVk
UGxhdGZvcm1EYXRhQ3VlJikKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCi12b2lkIFRl
eHRUcmFja1ByaXZhdGVSZW1vdGU6OnJlbW92ZURhdGFDdWUoY29uc3QgTWVkaWFUaW1lJiBzdGFy
dCwgY29uc3QgTWVkaWFUaW1lJiBlbmQsIFNlcmlhbGl6ZWRQbGF0Zm9ybVJlcHJlc2VudGF0aW9u
JikKK3ZvaWQgVGV4dFRyYWNrUHJpdmF0ZVJlbW90ZTo6cmVtb3ZlRGF0YUN1ZShjb25zdCBNZWRp
YVRpbWUmIHN0YXJ0LCBjb25zdCBNZWRpYVRpbWUmIGVuZCwgU2VyaWFsaXplZFBsYXRmb3JtRGF0
YUN1ZSYpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvVGV4dFRyYWNrUHJpdmF0ZVJlbW90ZS5oIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9UZXh0VHJhY2tQcml2YXRlUmVtb3RlLmgK
aW5kZXggNmNmMzk3NWZlYzZkOGUzYTU4M2JhZmFkMzdlYjk3M2E0YjcwZmU3My4uNmFjOWM2OWQw
MTkyMGQ5Yzk0MTMyYjg4M2U1NmY2NWJkOGVjM2NjYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktp
dC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9UZXh0VHJhY2tQcml2YXRlUmVtb3RlLmgKKysrIGIvU291
cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9UZXh0VHJhY2tQcml2YXRlUmVtb3RlLmgK
QEAgLTQ3LDkgKzQ3LDkgQEAgcHVibGljOgogICAgIHZvaWQgYWRkRGF0YUN1ZShjb25zdCBNZWRp
YVRpbWUmIHN0YXJ0LCBjb25zdCBNZWRpYVRpbWUmIGVuZCwgY29uc3Qgdm9pZCosIHVuc2lnbmVk
KTsKIAogI2lmIEVOQUJMRShEQVRBQ1VFX1ZBTFVFKQotICAgIHZvaWQgYWRkRGF0YUN1ZShjb25z
dCBNZWRpYVRpbWUmIHN0YXJ0LCBjb25zdCBNZWRpYVRpbWUmIGVuZCwgUmVmPFNlcmlhbGl6ZWRQ
bGF0Zm9ybVJlcHJlc2VudGF0aW9uPiYmLCBjb25zdCBTdHJpbmcmKTsKLSAgICB2b2lkIHVwZGF0
ZURhdGFDdWUoY29uc3QgTWVkaWFUaW1lJiBzdGFydCwgY29uc3QgTWVkaWFUaW1lJiBlbmQsIFNl
cmlhbGl6ZWRQbGF0Zm9ybVJlcHJlc2VudGF0aW9uJik7Ci0gICAgdm9pZCByZW1vdmVEYXRhQ3Vl
KGNvbnN0IE1lZGlhVGltZSYgc3RhcnQsIGNvbnN0IE1lZGlhVGltZSYgZW5kLCBTZXJpYWxpemVk
UGxhdGZvcm1SZXByZXNlbnRhdGlvbiYpOworICAgIHZvaWQgYWRkRGF0YUN1ZShjb25zdCBNZWRp
YVRpbWUmIHN0YXJ0LCBjb25zdCBNZWRpYVRpbWUmIGVuZCwgUmVmPFNlcmlhbGl6ZWRQbGF0Zm9y
bURhdGFDdWU+JiYsIGNvbnN0IFN0cmluZyYpOworICAgIHZvaWQgdXBkYXRlRGF0YUN1ZShjb25z
dCBNZWRpYVRpbWUmIHN0YXJ0LCBjb25zdCBNZWRpYVRpbWUmIGVuZCwgU2VyaWFsaXplZFBsYXRm
b3JtRGF0YUN1ZSYpOworICAgIHZvaWQgcmVtb3ZlRGF0YUN1ZShjb25zdCBNZWRpYVRpbWUmIHN0
YXJ0LCBjb25zdCBNZWRpYVRpbWUmIGVuZCwgU2VyaWFsaXplZFBsYXRmb3JtRGF0YUN1ZSYpOwog
I2VuZGlmCiAKICAgICB2b2lkIGFkZEdlbmVyaWNDdWUoR2VuZXJpY0N1ZURhdGEmKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>390652</attachid>
            <date>2020-02-13 08:46:35 -0800</date>
            <delta_ts>2020-02-13 13:40:13 -0800</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-207695-20200213084634.patch</filename>
            <type>text/plain</type>
            <size>61481</size>
            <attacher name="Eric Carlson">eric.carlson</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU2NTA0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzljYzc5MDhlOTUyOWFj
YWRmOWRjNmVkOTFlZTQ0MzI5ODIxMmQzMy4uMzA2NjJmNDZkOGU5ZTY5NTI2Yzg2YjFmOTFiMWM1
NmZiMDZhMGEwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ5IEBACisyMDIwLTAyLTEzICBFcmlj
IENhcmxzb24gIDxlcmljLmNhcmxzb25AYXBwbGUuY29tPgorCisgICAgICAgIFJlbmFtZSBTZXJp
YWxpemVkUGxhdGZvcm1SZXByZXNlbnRhdGlvbiB0byBTZXJpYWxpemVkUGxhdGZvcm1EYXRhQ3Vl
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDc2OTUK
KyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU5NDIyNjczPgorCisgICAgICAgIFJldmlld2VkIGJ5
IFlvdWVubiBGYWJsZXQuCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLCBubyBmdW5jdGlvbmFsIGNo
YW5nZS4KKworICAgICAgICAqIFNvdXJjZXNDb2NvYS50eHQ6CisgICAgICAgICogV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGh0bWwvdHJhY2svRGF0YUN1ZS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpEYXRhQ3VlOjpEYXRhQ3VlKToKKyAgICAgICAgKFdlYkNv
cmU6OkRhdGFDdWU6OmN1ZUNvbnRlbnRzTWF0Y2ggY29uc3QpOgorICAgICAgICAqIGh0bWwvdHJh
Y2svRGF0YUN1ZS5oOgorICAgICAgICAqIGh0bWwvdHJhY2svSW5iYW5kRGF0YVRleHRUcmFjay5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpJbmJhbmREYXRhVGV4dFRyYWNrOjphZGREYXRhQ3VlKToK
KyAgICAgICAgKFdlYkNvcmU6OkluYmFuZERhdGFUZXh0VHJhY2s6OnVwZGF0ZURhdGFDdWUpOgor
ICAgICAgICAoV2ViQ29yZTo6SW5iYW5kRGF0YVRleHRUcmFjazo6cmVtb3ZlRGF0YUN1ZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbmJhbmREYXRhVGV4dFRyYWNrOjpyZW1vdmVDdWUpOgorICAgICAg
ICAqIGh0bWwvdHJhY2svSW5iYW5kRGF0YVRleHRUcmFjay5oOgorICAgICAgICAqIGh0bWwvdHJh
Y2svSW5iYW5kVGV4dFRyYWNrLmg6CisgICAgICAgICogcGxhdGZvcm0vU2VyaWFsaXplZFBsYXRm
b3JtRGF0YUN1ZS5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2VyaWFs
aXplZFBsYXRmb3JtUmVwcmVzZW50YXRpb24uaC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9JbmJhbmRUZXh0VHJhY2tQcml2YXRlQ2xpZW50Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvYXZmb3VuZGF0aW9uL0luYmFuZE1ldGFkYXRhVGV4dFRyYWNrUHJpdmF0ZUFWRi5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpJbmJhbmRNZXRhZGF0YVRleHRUcmFja1ByaXZhdGVBVkY6OmFk
ZERhdGFDdWUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9JbmJh
bmRNZXRhZGF0YVRleHRUcmFja1ByaXZhdGVBVkYuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vb2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpD
Lm1tOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2Jq
Qzo6bWV0YWRhdGFEaWRBcnJpdmUpOgorICAgICAgICAqIHBsYXRmb3JtL21hYy9TZXJpYWxpemVk
UGxhdGZvcm1EYXRhQ3VlTWFjLmg6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tYWMvU2VyaWFsaXplZFBsYXRmb3JtUmVwcmVzZW50YXRpb25NYWMuaC4KKyAgICAgICAgKFdl
YkNvcmU6OlNlcmlhbGl6ZWRQbGF0Zm9ybURhdGFDdWVNYWM6Om5hdGl2ZVZhbHVlIGNvbnN0KToK
KyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvU2VyaWFsaXplZFBsYXRmb3JtRGF0YUN1ZU1hYy5tbTog
UmVuYW1lZCBmcm9tIFNvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TZXJpYWxpemVkUGxhdGZv
cm1SZXByZXNlbnRhdGlvbk1hYy5tbS4KKyAgICAgICAgKFdlYkNvcmU6OlNlcmlhbGl6ZWRQbGF0
Zm9ybURhdGFDdWVNYWM6OlNlcmlhbGl6ZWRQbGF0Zm9ybURhdGFDdWVNYWMpOgorICAgICAgICAo
V2ViQ29yZTo6U2VyaWFsaXplZFBsYXRmb3JtRGF0YUN1ZU1hYzo6flNlcmlhbGl6ZWRQbGF0Zm9y
bURhdGFDdWVNYWMpOgorICAgICAgICAoV2ViQ29yZTo6U2VyaWFsaXplZFBsYXRmb3JtRGF0YUN1
ZU1hYzo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNlcmlhbGl6ZWRQbGF0Zm9ybURhdGFD
dWVNYWM6OmRhdGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2VyaWFsaXplZFBsYXRmb3Jt
RGF0YUN1ZU1hYzo6ZGVzZXJpYWxpemUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U2VyaWFs
aXplZFBsYXRmb3JtRGF0YUN1ZU1hYzo6aXNFcXVhbCBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
Ojp0b1NlcmlhbGl6ZWRQbGF0Zm9ybURhdGFDdWVNYWMpOgorICAgICAgICAoV2ViQ29yZTo6anNW
YWx1ZVdpdGhWYWx1ZUluQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpqc1ZhbHVlV2l0aERh
dGFJbkNvbnRleHQpOgorICAgICAgICAoV2ViQ29yZTo6anNWYWx1ZVdpdGhBcnJheUluQ29udGV4
dCk6CisgICAgICAgIChXZWJDb3JlOjpqc1ZhbHVlV2l0aERpY3Rpb25hcnlJbkNvbnRleHQpOgor
ICAgICAgICAoV2ViQ29yZTo6anNWYWx1ZVdpdGhBVk1ldGFkYXRhSXRlbUluQ29udGV4dCk6CisK
IDIwMjAtMDItMTIgIFlvc2hpYWtpIEppdHN1a2F3YSAgPHlvc2hpYWtpLmppdHN1a2F3YUBzb255
LmNvbT4KIAogICAgICAgICBbV2ViQ3J5cHRvXVtDb21tb25DcnlwdG9dIEluY29ycmVjdCBBRVMt
Q1RSIHdpdGggY291bnRlckxlbmd0aCBsb25nZXIgdGhhbiA2NApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvSGVhZGVycy5jbWFrZSBiL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKaW5k
ZXggYWY4Nzc3ZTNmMDViZmIzYTJkYWI0MDc4ZmU2ZGE4MGU0ZTdkMjI2MC4uMWNkNzExZTFmZWMy
NWNhNWU0NTRkMGVkODI2ZTk1NzAxMzRkZDZlNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
SGVhZGVycy5jbWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJzLmNtYWtlCkBAIC05OTQs
NyArOTk0LDcgQEAgc2V0KFdlYkNvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVBREVSUwogICAgIHBs
YXRmb3JtL1Njcm9sbGJhclRoZW1lLmgKICAgICBwbGF0Zm9ybS9TY3JvbGxiYXJUaGVtZUNvbXBv
c2l0ZS5oCiAgICAgcGxhdGZvcm0vU2VhcmNoUG9wdXBNZW51LmgKLSAgICBwbGF0Zm9ybS9TZXJp
YWxpemVkUGxhdGZvcm1SZXByZXNlbnRhdGlvbi5oCisgICAgcGxhdGZvcm0vU2VyaWFsaXplZFBs
YXRmb3JtRGF0YUN1ZS5oCiAgICAgcGxhdGZvcm0vU2hhcmVkQnVmZmVyLmgKICAgICBwbGF0Zm9y
bS9TaGFyZWRTdHJpbmdIYXNoLmgKICAgICBwbGF0Zm9ybS9TdWRkZW5UZXJtaW5hdGlvbi5oCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9QbGF0Zm9ybU1hYy5jbWFrZSBiL1NvdXJjZS9XZWJD
b3JlL1BsYXRmb3JtTWFjLmNtYWtlCmluZGV4IGJmNGFkMzI4NjM0MjMwZjMzNDEwYmIxMjAyMjA5
MWYyMmIyZTA5OGEuLjkzMzUwZDdkMzQwMmJjZDU4NjBjNGNkMGU0ZmRjNGJiZWM1ZWMxMTAgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL1BsYXRmb3JtTWFjLmNtYWtlCkBAIC0zODEsNyArMzgxLDcgQEAgbGlzdChBUFBFTkQg
V2ViQ29yZV9TT1VSQ0VTCiAgICAgcGxhdGZvcm0vbWFjL1Njcm9sbEFuaW1hdG9yTWFjLm1tCiAg
ICAgcGxhdGZvcm0vbWFjL1Njcm9sbFZpZXdNYWMubW0KICAgICBwbGF0Zm9ybS9tYWMvU2Nyb2xs
YmFyVGhlbWVNYWMubW0KLSAgICBwbGF0Zm9ybS9tYWMvU2VyaWFsaXplZFBsYXRmb3JtUmVwcmVz
ZW50YXRpb25NYWMubW0KKyAgICBwbGF0Zm9ybS9tYWMvU2VyaWFsaXplZFBsYXRmb3JtRGF0YUN1
ZU1hYy5tbQogICAgIHBsYXRmb3JtL21hYy9TdHJpbmdVdGlsaXRpZXMubW0KICAgICBwbGF0Zm9y
bS9tYWMvU3VkZGVuVGVybWluYXRpb24ubW0KICAgICBwbGF0Zm9ybS9tYWMvVGhlbWVNYWMubW0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQgYi9Tb3VyY2UvV2Vi
Q29yZS9Tb3VyY2VzQ29jb2EudHh0CmluZGV4IGFiM2E1Nzk0OTBjOTNhYTUyMzBhNjRjZThiMzg5
NmM5YjkxMGQyODUuLmEwNWUwMWNkZWYyY2ZmMTZhYjgzYzVkNGYwNjE2YjBjYzUxNmRlNDkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXNDb2NvYS50eHQKKysrIGIvU291cmNlL1dl
YkNvcmUvU291cmNlc0NvY29hLnR4dApAQCAtNDYzLDcgKzQ2Myw3IEBAIHBsYXRmb3JtL21hYy9T
U0xLZXlHZW5lcmF0b3JNYWMubW0KIHBsYXRmb3JtL21hYy9TY3JvbGxBbmltYXRvck1hYy5tbSBA
bm8tdW5pZnkKIHBsYXRmb3JtL21hYy9TY3JvbGxWaWV3TWFjLm1tCiBwbGF0Zm9ybS9tYWMvU2Ny
b2xsYmFyVGhlbWVNYWMubW0gQG5vLXVuaWZ5Ci1wbGF0Zm9ybS9tYWMvU2VyaWFsaXplZFBsYXRm
b3JtUmVwcmVzZW50YXRpb25NYWMubW0KK3BsYXRmb3JtL21hYy9TZXJpYWxpemVkUGxhdGZvcm1E
YXRhQ3VlTWFjLm1tCiBwbGF0Zm9ybS9tYWMvU3RyaW5nVXRpbGl0aWVzLm1tCiBwbGF0Zm9ybS9t
YWMvU3VkZGVuVGVybWluYXRpb24ubW0KIHBsYXRmb3JtL21hYy9UaGVtZU1hYy5tbQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCmluZGV4IDVm
YWQ1YzE5YjhlOGQ2NWRmMjlkZDJhMWY1NTNmN2Y2ZTJmMjliMzkuLjFiM2QyOGEyZjYyNGQwMGY3
OGEwNjBmNTY1MjFiODU4MjUxMmZjMDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTEzNyw4ICsxMzcsOCBAQAogCQkwNzY5NzA4
NzE0NjNBRDg3MDBGNTAyQ0YgLyogVGV4dFRyYWNrTGlzdC5oIGluIEhlYWRlcnMgKi8gPSB7aXNh
ID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDc2OTcwODUxNDYzQUQ4NzAwRjUwMkNGIC8qIFRl
eHRUcmFja0xpc3QuaCAqLzsgfTsKIAkJMDc2RjBEMEUxMkI4MTkyNzAwQzI2QUE0IC8qIE1lZGlh
UGxheWVyUHJpdmF0ZUFWRm91bmRhdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gMDc2RjBEMEExMkI4MTkyNzAwQzI2QUE0IC8qIE1lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbi5oICovOyB9OwogCQkwNzc2NjRGRDE4M0U2QjVDMDAxMzNCOTIg
LyogSlNRdWlja1RpbWVQbHVnaW5SZXBsYWNlbWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDc3NjY0RkIxODNFNkI1QzAwMTMzQjkyIC8qIEpTUXVp
Y2tUaW1lUGx1Z2luUmVwbGFjZW1lbnQuaCAqLzsgfTsKLQkJMDc3QUYxNDAxOEY0QUU0MDAwMDFF
RDYxIC8qIFNlcmlhbGl6ZWRQbGF0Zm9ybVJlcHJlc2VudGF0aW9uLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzdBRjEzRTE4RjRBRTQwMDAwMUVENjEg
LyogU2VyaWFsaXplZFBsYXRmb3JtUmVwcmVzZW50YXRpb24uaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwotCQkwNzdBRjE0MzE4RjRCMUJCMDAwMUVENjEg
LyogU2VyaWFsaXplZFBsYXRmb3JtUmVwcmVzZW50YXRpb25NYWMuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDA3N0FGMTQxMThGNEIxQkIwMDAxRUQ2MSAv
KiBTZXJpYWxpemVkUGxhdGZvcm1SZXByZXNlbnRhdGlvbk1hYy5oICovOyB9OworCQkwNzdBRjE0
MDE4RjRBRTQwMDAwMUVENjEgLyogU2VyaWFsaXplZFBsYXRmb3JtRGF0YUN1ZS5oIGluIEhlYWRl
cnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDc3QUYxM0UxOEY0QUU0MDAw
MDFFRDYxIC8qIFNlcmlhbGl6ZWRQbGF0Zm9ybURhdGFDdWUuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQkwNzdBRjE0MzE4RjRCMUJCMDAwMUVENjEg
LyogU2VyaWFsaXplZFBsYXRmb3JtRGF0YUN1ZU1hYy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gMDc3QUYxNDExOEY0QjFCQjAwMDFFRDYxIC8qIFNlcmlh
bGl6ZWRQbGF0Zm9ybURhdGFDdWVNYWMuaCAqLzsgfTsKIAkJMDc3QjY0MTMxQjk0RjEyRTAwM0U5
QUQ1IC8qIE1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJNb2NrLmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzdCNjQxMTFCOTRGMTJFMDAzRTlBRDUgLyog
TWVkaWFQbGF5YmFja1RhcmdldFBpY2tlck1vY2suaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OwogCQkwNzdCNjQxNzFCOTVGNzAzMDAzRTlBRDUgLyogTWVk
aWFQbGF5YmFja1RhcmdldE1vY2suaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IDA3N0I2NDE1MUI5NUY3MDMwMDNFOUFENSAvKiBNZWRpYVBsYXliYWNrVGFy
Z2V0TW9jay5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTA3ODMyMjg1MTgwMTNFRDgwMDk5OUUwQyAvKiBNZWRpYVN0cmVhbUF1ZGlvU291cmNlLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSAwNzgzMjI4MzE4
MDEzRUQ4MDA5OTlFMEMgLyogTWVkaWFTdHJlYW1BdWRpb1NvdXJjZS5oICovOyB9OwpAQCAtNTQ3
Niw5ICs1NDc2LDkgQEAKIAkJMDc2RjBEMEExMkI4MTkyNzAwQzI2QUE0IC8qIE1lZGlhUGxheWVy
UHJpdmF0ZUFWRm91bmRhdGlvbi5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBN
ZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+Ijsg
fTsKIAkJMDc3NjY0RkExODNFNkI1QzAwMTMzQjkyIC8qIEpTUXVpY2tUaW1lUGx1Z2luUmVwbGFj
ZW1lbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNRdWlja1Rp
bWVQbHVnaW5SZXBsYWNlbWVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3
NzY2NEZCMTgzRTZCNUMwMDEzM0I5MiAvKiBKU1F1aWNrVGltZVBsdWdpblJlcGxhY2VtZW50Lmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTUXVpY2tUaW1lUGx1Z2luUmVwbGFj
ZW1lbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKLQkJMDc3QUYxM0UxOEY0QUU0MDAw
MDFFRDYxIC8qIFNlcmlhbGl6ZWRQbGF0Zm9ybVJlcHJlc2VudGF0aW9uLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNlcmlhbGl6ZWRQbGF0Zm9ybVJlcHJlc2VudGF0aW9uLmg7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCTA3N0FGMTQxMThGNEIxQkIwMDAxRUQ2MSAv
KiBTZXJpYWxpemVkUGxhdGZvcm1SZXByZXNlbnRhdGlvbk1hYy5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBTZXJpYWxpemVkUGxhdGZvcm1SZXByZXNlbnRhdGlvbk1hYy5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQkwNzdBRjE0MjE4RjRCMUJCMDAwMUVENjEgLyog
U2VyaWFsaXplZFBsYXRmb3JtUmVwcmVzZW50YXRpb25NYWMubW0gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5vYmpjcHA7IHBhdGggPSBTZXJpYWxpemVkUGxhdGZvcm1SZXByZXNlbnRhdGlvbk1h
Yy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJMDc3QUYxM0UxOEY0QUU0MDAwMDFF
RDYxIC8qIFNlcmlhbGl6ZWRQbGF0Zm9ybURhdGFDdWUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gU2VyaWFsaXplZFBsYXRmb3JtRGF0YUN1ZS5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OworCQkwNzdBRjE0MTE4RjRCMUJCMDAwMUVENjEgLyogU2VyaWFsaXplZFBsYXRm
b3JtRGF0YUN1ZU1hYy5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBTZXJpYWxp
emVkUGxhdGZvcm1EYXRhQ3VlTWFjLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTA3
N0FGMTQyMThGNEIxQkIwMDAxRUQ2MSAvKiBTZXJpYWxpemVkUGxhdGZvcm1EYXRhQ3VlTWFjLm1t
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gU2VyaWFsaXplZFBsYXRm
b3JtRGF0YUN1ZU1hYy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDc3QjY0MTAx
Qjk0RjEyRTAwM0U5QUQ1IC8qIE1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJNb2NrLmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE1lZGlhUGxheWJhY2tUYXJnZXRQaWNr
ZXJNb2NrLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJMDc3QjY0MTExQjk0RjEy
RTAwM0U5QUQ1IC8qIE1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJNb2NrLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IE1lZGlhUGxheWJhY2tUYXJnZXRQaWNrZXJNb2NrLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTA3N0I2NDE0MUI5NUY3MDMwMDNFOUFENSAvKiBN
ZWRpYVBsYXliYWNrVGFyZ2V0TW9jay5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7
IHBhdGggPSBNZWRpYVBsYXliYWNrVGFyZ2V0TW9jay5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CkBAIC0yMDQ2Niw4ICsyMDQ2Niw4IEBACiAJCQkJQkM4Qjg1M0MwRTdDN0YxMTAwQUI2
OTg0IC8qIFNjcm9sbGJhclRoZW1lTWFjLmggKi8sCiAJCQkJQkNFRjg2OUUwRTg0NEU5RDAwQTg1
Q0Q1IC8qIFNjcm9sbGJhclRoZW1lTWFjLm1tICovLAogCQkJCTkzNTM2NzZBMDlBRUQ4OEIwMEQz
NUNENiAvKiBTY3JvbGxWaWV3TWFjLm1tICovLAotCQkJCTA3N0FGMTQxMThGNEIxQkIwMDAxRUQ2
MSAvKiBTZXJpYWxpemVkUGxhdGZvcm1SZXByZXNlbnRhdGlvbk1hYy5oICovLAotCQkJCTA3N0FG
MTQyMThGNEIxQkIwMDAxRUQ2MSAvKiBTZXJpYWxpemVkUGxhdGZvcm1SZXByZXNlbnRhdGlvbk1h
Yy5tbSAqLywKKwkJCQkwNzdBRjE0MTE4RjRCMUJCMDAwMUVENjEgLyogU2VyaWFsaXplZFBsYXRm
b3JtRGF0YUN1ZU1hYy5oICovLAorCQkJCTA3N0FGMTQyMThGNEIxQkIwMDAxRUQ2MSAvKiBTZXJp
YWxpemVkUGxhdGZvcm1EYXRhQ3VlTWFjLm1tICovLAogCQkJCTg0QjJCMjRGMDU2QkYxNUYwMEQy
Qjc3MSAvKiBTU0xLZXlHZW5lcmF0b3JNYWMubW0gKi8sCiAJCQkJRUNBNjgwQzYxRTY3NzI0NTAw
NzMxRDIwIC8qIFN0cmluZ1V0aWxpdGllcy5oICovLAogCQkJCUVDQTY4MEM4MUU2NzczMEIwMDcz
MUQyMCAvKiBTdHJpbmdVdGlsaXRpZXMubW0gKi8sCkBAIC0yNTk2Myw3ICsyNTk2Myw3IEBACiAJ
CQkJQkMyNDQxQzMwRThCNjVEMDAwNTUzMjBGIC8qIFNjcm9sbFZpZXcuY3BwICovLAogCQkJCUJD
NkQ2RTI1MDlBRjk0MzUwMEY1OTc1OSAvKiBTY3JvbGxWaWV3LmggKi8sCiAJCQkJQUI3MTcwODgw
QjMxMTgwODAwMTcxMjNFIC8qIFNlYXJjaFBvcHVwTWVudS5oICovLAotCQkJCTA3N0FGMTNFMThG
NEFFNDAwMDAxRUQ2MSAvKiBTZXJpYWxpemVkUGxhdGZvcm1SZXByZXNlbnRhdGlvbi5oICovLAor
CQkJCTA3N0FGMTNFMThGNEFFNDAwMDAxRUQ2MSAvKiBTZXJpYWxpemVkUGxhdGZvcm1EYXRhQ3Vl
LmggKi8sCiAJCQkJMUE0QTk1NEIwQjRFRENDQjAwMkQ4QzNDIC8qIFNoYXJlZEJ1ZmZlci5jcHAg
Ki8sCiAJCQkJMUE0QTk1NEMwQjRFRENDQjAwMkQ4QzNDIC8qIFNoYXJlZEJ1ZmZlci5oICovLAog
CQkJCTgzNERGQUNFMUY3REFFNTcwMEMyNzI1QiAvKiBTaGFyZWRTdHJpbmdIYXNoLmNwcCAqLywK
QEAgLTMyMjE5LDggKzMyMjE5LDggQEAKIAkJCQlFNDUzMjJBQzE0MENFMjY3MDA1QTBGOTIgLyog
U2VsZWN0b3JRdWVyeS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRjRENDNENjYyMTg4MDM4QjAwRUNF
Q0FDIC8qIFNlcmlhbGl6ZWRBdHRhY2htZW50RGF0YS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTE4
REYzMzUxOEFBRjEyQzAwNzczRTU5IC8qIFNlcmlhbGl6ZWRDcnlwdG9LZXlXcmFwLmggaW4gSGVh
ZGVycyAqLywKLQkJCQkwNzdBRjE0MDE4RjRBRTQwMDAwMUVENjEgLyogU2VyaWFsaXplZFBsYXRm
b3JtUmVwcmVzZW50YXRpb24uaCBpbiBIZWFkZXJzICovLAotCQkJCTA3N0FGMTQzMThGNEIxQkIw
MDAxRUQ2MSAvKiBTZXJpYWxpemVkUGxhdGZvcm1SZXByZXNlbnRhdGlvbk1hYy5oIGluIEhlYWRl
cnMgKi8sCisJCQkJMDc3QUYxNDAxOEY0QUU0MDAwMDFFRDYxIC8qIFNlcmlhbGl6ZWRQbGF0Zm9y
bURhdGFDdWUuaCBpbiBIZWFkZXJzICovLAorCQkJCTA3N0FGMTQzMThGNEIxQkIwMDAxRUQ2MSAv
KiBTZXJpYWxpemVkUGxhdGZvcm1EYXRhQ3VlTWFjLmggaW4gSGVhZGVycyAqLywKIAkJCQlBNzVF
NDk3NjEwNzUyQUNCMDBDOUI4OTYgLyogU2VyaWFsaXplZFNjcmlwdFZhbHVlLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk1MTZGN0Y2RDFDMzFFMzlBMDBGMTExREMgLyogU2VydmVyT3BlbkRCUmVxdWVz
dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMkQ5M0FFRTMxOURGNTY0MTAwMkE4NkMzIC8qIFNlcnZp
Y2VzT3ZlcmxheUNvbnRyb2xsZXIuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaHRtbC90cmFjay9EYXRhQ3VlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJh
Y2svRGF0YUN1ZS5jcHAKaW5kZXggMmVkNzQ4YzAwZDkxMzE0MzhjOGVkZjYyNjIxMmIwMDlhODU4
ZTJmZC4uNWQ1ZTNmM2Q3MzgzMjYzZGMxOGE3ZTc3YmQ3ZjRmNTA3MzRjYjZlMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9EYXRhQ3VlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9odG1sL3RyYWNrL0RhdGFDdWUuY3BwCkBAIC01NCw3ICs1NCw3IEBAIERhdGFDdWU6OkRh
dGFDdWUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCwgY29uc3QgTWVkaWFUaW1lJiBz
dGFydCwgY29uc3QKIHsKIH0KIAotRGF0YUN1ZTo6RGF0YUN1ZShTY3JpcHRFeGVjdXRpb25Db250
ZXh0JiBjb250ZXh0LCBjb25zdCBNZWRpYVRpbWUmIHN0YXJ0LCBjb25zdCBNZWRpYVRpbWUmIGVu
ZCwgUmVmUHRyPFNlcmlhbGl6ZWRQbGF0Zm9ybVJlcHJlc2VudGF0aW9uPiYmIHBsYXRmb3JtVmFs
dWUsIGNvbnN0IFN0cmluZyYgdHlwZSkKK0RhdGFDdWU6OkRhdGFDdWUoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCYgY29udGV4dCwgY29uc3QgTWVkaWFUaW1lJiBzdGFydCwgY29uc3QgTWVkaWFUaW1l
JiBlbmQsIFJlZlB0cjxTZXJpYWxpemVkUGxhdGZvcm1EYXRhQ3VlPiYmIHBsYXRmb3JtVmFsdWUs
IGNvbnN0IFN0cmluZyYgdHlwZSkKICAgICA6IFRleHRUcmFja0N1ZShjb250ZXh0LCBzdGFydCwg
ZW5kKQogICAgICwgbV90eXBlKHR5cGUpCiAgICAgLCBtX3BsYXRmb3JtVmFsdWUoV1RGTW92ZShw
bGF0Zm9ybVZhbHVlKSkKQEAgLTExNiw3ICsxMTYsNyBAQCBib29sIERhdGFDdWU6OmN1ZUNvbnRl
bnRzTWF0Y2goY29uc3QgVGV4dFRyYWNrQ3VlJiBjdWUpIGNvbnN0CiAgICAgaWYgKG1fZGF0YSAm
JiBtX2RhdGEtPmRhdGEoKSAmJiBtZW1jbXAobV9kYXRhLT5kYXRhKCksIG90aGVyRGF0YS0+ZGF0
YSgpLCBtX2RhdGEtPmJ5dGVMZW5ndGgoKSkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAg
IGNvbnN0IFNlcmlhbGl6ZWRQbGF0Zm9ybVJlcHJlc2VudGF0aW9uKiBvdGhlclBsYXRmb3JtVmFs
dWUgPSBkYXRhQ3VlLT5wbGF0Zm9ybVZhbHVlKCk7CisgICAgYXV0byBvdGhlclBsYXRmb3JtVmFs
dWUgPSBkYXRhQ3VlLT5wbGF0Zm9ybVZhbHVlKCk7CiAgICAgaWYgKChvdGhlclBsYXRmb3JtVmFs
dWUgJiYgIW1fcGxhdGZvcm1WYWx1ZSkgfHwgKCFvdGhlclBsYXRmb3JtVmFsdWUgJiYgbV9wbGF0
Zm9ybVZhbHVlKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGlmIChtX3BsYXRmb3JtVmFs
dWUgJiYgIW1fcGxhdGZvcm1WYWx1ZS0+aXNFcXVhbCgqb3RoZXJQbGF0Zm9ybVZhbHVlKSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svRGF0YUN1ZS5oIGIvU291cmNlL1dl
YkNvcmUvaHRtbC90cmFjay9EYXRhQ3VlLmgKaW5kZXggNzY0YjgwZGZiN2UxZWQ4ZTczNzhkODU5
NTdhNWIxZDE3MzkxZmQ2MS4uNjNhNjdjMDQ5MTVlNjNmMzI0MjZmNjIzMGQ4NmU0MjgxN2Y1MjFh
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9EYXRhQ3VlLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9EYXRhQ3VlLmgKQEAgLTI4LDcgKzI4LDcgQEAKIAog
I2lmIEVOQUJMRShWSURFT19UUkFDSykKIAotI2luY2x1ZGUgIlNlcmlhbGl6ZWRQbGF0Zm9ybVJl
cHJlc2VudGF0aW9uLmgiCisjaW5jbHVkZSAiU2VyaWFsaXplZFBsYXRmb3JtRGF0YUN1ZS5oIgog
I2luY2x1ZGUgIlRleHRUcmFja0N1ZS5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3JlL0FycmF5
QnVmZmVyLmg+CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSlNWYWx1ZS5oPgpAQCAtNTcs
NyArNTcsNyBAQCBwdWJsaWM6CiAgICAgICAgIHJldHVybiBhZG9wdFJlZigqbmV3IERhdGFDdWUo
Y29udGV4dCwgc3RhcnQsIGVuZCwgZGF0YSwgdHlwZSkpOwogICAgIH0KIAotICAgIHN0YXRpYyBS
ZWY8RGF0YUN1ZT4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmIGNvbnRleHQsIGNvbnN0
IE1lZGlhVGltZSYgc3RhcnQsIGNvbnN0IE1lZGlhVGltZSYgZW5kLCBSZWZQdHI8U2VyaWFsaXpl
ZFBsYXRmb3JtUmVwcmVzZW50YXRpb24+JiYgcGxhdGZvcm1WYWx1ZSwgY29uc3QgU3RyaW5nJiB0
eXBlKQorICAgIHN0YXRpYyBSZWY8RGF0YUN1ZT4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQmIGNvbnRleHQsIGNvbnN0IE1lZGlhVGltZSYgc3RhcnQsIGNvbnN0IE1lZGlhVGltZSYgZW5k
LCBSZWZQdHI8U2VyaWFsaXplZFBsYXRmb3JtRGF0YUN1ZT4mJiBwbGF0Zm9ybVZhbHVlLCBjb25z
dCBTdHJpbmcmIHR5cGUpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBEYXRh
Q3VlKGNvbnRleHQsIHN0YXJ0LCBlbmQsIFdURk1vdmUocGxhdGZvcm1WYWx1ZSksIHR5cGUpKTsK
ICAgICB9CkBAIC03Nyw3ICs3Nyw3IEBAIHB1YmxpYzoKICAgICBSZWZQdHI8SlNDOjpBcnJheUJ1
ZmZlcj4gZGF0YSgpIGNvbnN0OwogICAgIHZvaWQgc2V0RGF0YShKU0M6OkFycmF5QnVmZmVyJik7
CiAKLSAgICBjb25zdCBTZXJpYWxpemVkUGxhdGZvcm1SZXByZXNlbnRhdGlvbiogcGxhdGZvcm1W
YWx1ZSgpIGNvbnN0IHsgcmV0dXJuIG1fcGxhdGZvcm1WYWx1ZS5nZXQoKTsgfQorICAgIGNvbnN0
IFNlcmlhbGl6ZWRQbGF0Zm9ybURhdGFDdWUqIHBsYXRmb3JtVmFsdWUoKSBjb25zdCB7IHJldHVy
biBtX3BsYXRmb3JtVmFsdWUuZ2V0KCk7IH0KIAogICAgIEpTQzo6SlNWYWx1ZSB2YWx1ZShKU0M6
OkpTR2xvYmFsT2JqZWN0JikgY29uc3Q7CiAgICAgdm9pZCBzZXRWYWx1ZShKU0M6OkpTR2xvYmFs
T2JqZWN0JiwgSlNDOjpKU1ZhbHVlKTsKQEAgLTk0LDE0ICs5NCwxNCBAQCBwdWJsaWM6CiBwcml2
YXRlOgogICAgIERhdGFDdWUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIGNvbnN0IE1lZGlhVGlt
ZSYgc3RhcnQsIGNvbnN0IE1lZGlhVGltZSYgZW5kLCBBcnJheUJ1ZmZlciYsIGNvbnN0IFN0cmlu
ZyYpOwogICAgIERhdGFDdWUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIGNvbnN0IE1lZGlhVGlt
ZSYgc3RhcnQsIGNvbnN0IE1lZGlhVGltZSYgZW5kLCBjb25zdCB2b2lkKiwgdW5zaWduZWQpOwot
ICAgIERhdGFDdWUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYsIGNvbnN0IE1lZGlhVGltZSYgc3Rh
cnQsIGNvbnN0IE1lZGlhVGltZSYgZW5kLCBSZWZQdHI8U2VyaWFsaXplZFBsYXRmb3JtUmVwcmVz
ZW50YXRpb24+JiYsIGNvbnN0IFN0cmluZyYpOworICAgIERhdGFDdWUoU2NyaXB0RXhlY3V0aW9u
Q29udGV4dCYsIGNvbnN0IE1lZGlhVGltZSYgc3RhcnQsIGNvbnN0IE1lZGlhVGltZSYgZW5kLCBS
ZWZQdHI8U2VyaWFsaXplZFBsYXRmb3JtRGF0YUN1ZT4mJiwgY29uc3QgU3RyaW5nJik7CiAgICAg
RGF0YUN1ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0JiwgY29uc3QgTWVkaWFUaW1lJiBzdGFydCwg
Y29uc3QgTWVkaWFUaW1lJiBlbmQsIEpTQzo6SlNWYWx1ZSwgY29uc3QgU3RyaW5nJik7CiAKICAg
ICBKU0M6OkpTVmFsdWUgdmFsdWVPck51bGwoKSBjb25zdDsKIAogICAgIFJlZlB0cjxBcnJheUJ1
ZmZlcj4gbV9kYXRhOwogICAgIFN0cmluZyBtX3R5cGU7Ci0gICAgUmVmUHRyPFNlcmlhbGl6ZWRQ
bGF0Zm9ybVJlcHJlc2VudGF0aW9uPiBtX3BsYXRmb3JtVmFsdWU7CisgICAgUmVmUHRyPFNlcmlh
bGl6ZWRQbGF0Zm9ybURhdGFDdWU+IG1fcGxhdGZvcm1WYWx1ZTsKICAgICAvLyBGSVhNRTogVGhl
IGZvbGxvd2luZyB1c2Ugb2YgSlNDOjpTdHJvbmcgaXMgaW5jb3JyZWN0IGFuZCBjYW4gbGVhZCB0
byBzdG9yYWdlIGxlYWtzCiAgICAgLy8gZHVlIHRvIHJlZmVyZW5jZSBjeWNsZXM7IHdlIHNob3Vs
ZCB1c2UgSlNWYWx1ZUluV3JhcHBlZE9iamVjdCBpbnN0ZWFkLgogICAgIC8vIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDExNzMKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5kRGF0YVRleHRUcmFjay5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3RyYWNrL0luYmFuZERhdGFUZXh0VHJhY2suY3BwCmluZGV4IGMxYmVjOWEwOWMwZmMx
ZGJjY2ExOGExZmUzMTk4Yzk5ZGNkM2RiNTguLmYwN2Y3MzhkMjgzNjFjYzRiZmQ0OTJjNjRhODRh
YzliZDRjYTY1MDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5k
RGF0YVRleHRUcmFjay5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9JbmJhbmRE
YXRhVGV4dFRyYWNrLmNwcApAQCAtNTcsNyArNTcsNyBAQCB2b2lkIEluYmFuZERhdGFUZXh0VHJh
Y2s6OmFkZERhdGFDdWUoY29uc3QgTWVkaWFUaW1lJiBzdGFydCwgY29uc3QgTWVkaWFUaW1lJiBl
bgogCiAjaWYgRU5BQkxFKERBVEFDVUVfVkFMVUUpCiAKLXZvaWQgSW5iYW5kRGF0YVRleHRUcmFj
azo6YWRkRGF0YUN1ZShjb25zdCBNZWRpYVRpbWUmIHN0YXJ0LCBjb25zdCBNZWRpYVRpbWUmIGVu
ZCwgUmVmPFNlcmlhbGl6ZWRQbGF0Zm9ybVJlcHJlc2VudGF0aW9uPiYmIHBsYXRmb3JtVmFsdWUs
IGNvbnN0IFN0cmluZyYgdHlwZSkKK3ZvaWQgSW5iYW5kRGF0YVRleHRUcmFjazo6YWRkRGF0YUN1
ZShjb25zdCBNZWRpYVRpbWUmIHN0YXJ0LCBjb25zdCBNZWRpYVRpbWUmIGVuZCwgUmVmPFNlcmlh
bGl6ZWRQbGF0Zm9ybURhdGFDdWU+JiYgcGxhdGZvcm1WYWx1ZSwgY29uc3QgU3RyaW5nJiB0eXBl
KQogewogICAgIGlmIChtX2luY29tcGxldGVDdWVNYXAuY29udGFpbnMocGxhdGZvcm1WYWx1ZS5w
dHIoKSkpCiAgICAgICAgIHJldHVybjsKQEAgLTc4LDcgKzc4LDcgQEAgdm9pZCBJbmJhbmREYXRh
VGV4dFRyYWNrOjphZGREYXRhQ3VlKGNvbnN0IE1lZGlhVGltZSYgc3RhcnQsIGNvbnN0IE1lZGlh
VGltZSYgZW4KICAgICBhZGRDdWUoV1RGTW92ZShjdWUpKTsKIH0KIAotdm9pZCBJbmJhbmREYXRh
VGV4dFRyYWNrOjp1cGRhdGVEYXRhQ3VlKGNvbnN0IE1lZGlhVGltZSYgc3RhcnQsIGNvbnN0IE1l
ZGlhVGltZSYgaW5FbmQsIFNlcmlhbGl6ZWRQbGF0Zm9ybVJlcHJlc2VudGF0aW9uJiBwbGF0Zm9y
bVZhbHVlKQordm9pZCBJbmJhbmREYXRhVGV4dFRyYWNrOjp1cGRhdGVEYXRhQ3VlKGNvbnN0IE1l
ZGlhVGltZSYgc3RhcnQsIGNvbnN0IE1lZGlhVGltZSYgaW5FbmQsIFNlcmlhbGl6ZWRQbGF0Zm9y
bURhdGFDdWUmIHBsYXRmb3JtVmFsdWUpCiB7CiAgICAgUmVmUHRyPERhdGFDdWU+IGN1ZSA9IG1f
aW5jb21wbGV0ZUN1ZU1hcC5nZXQoJnBsYXRmb3JtVmFsdWUpOwogICAgIGlmICghY3VlKQpAQCAt
MTAwLDcgKzEwMCw3IEBAIHZvaWQgSW5iYW5kRGF0YVRleHRUcmFjazo6dXBkYXRlRGF0YUN1ZShj
b25zdCBNZWRpYVRpbWUmIHN0YXJ0LCBjb25zdCBNZWRpYVRpbWUmCiAgICAgY3VlLT5kaWRDaGFu
Z2UoKTsKIH0KIAotdm9pZCBJbmJhbmREYXRhVGV4dFRyYWNrOjpyZW1vdmVEYXRhQ3VlKGNvbnN0
IE1lZGlhVGltZSYsIGNvbnN0IE1lZGlhVGltZSYsIFNlcmlhbGl6ZWRQbGF0Zm9ybVJlcHJlc2Vu
dGF0aW9uJiBwbGF0Zm9ybVZhbHVlKQordm9pZCBJbmJhbmREYXRhVGV4dFRyYWNrOjpyZW1vdmVE
YXRhQ3VlKGNvbnN0IE1lZGlhVGltZSYsIGNvbnN0IE1lZGlhVGltZSYsIFNlcmlhbGl6ZWRQbGF0
Zm9ybURhdGFDdWUmIHBsYXRmb3JtVmFsdWUpCiB7CiAgICAgaWYgKGF1dG8gY3VlID0gbV9pbmNv
bXBsZXRlQ3VlTWFwLnRha2UoJnBsYXRmb3JtVmFsdWUpKSB7CiAgICAgICAgIElORk9fTE9HKExP
R0lERU5USUZJRVIsICJyZW1vdmluZzogIiwgKmN1ZSk7CkBAIC0xMTIsNyArMTEyLDcgQEAgRXhj
ZXB0aW9uT3I8dm9pZD4gSW5iYW5kRGF0YVRleHRUcmFjazo6cmVtb3ZlQ3VlKFRleHRUcmFja0N1
ZSYgY3VlKQogewogICAgIEFTU0VSVChjdWUuY3VlVHlwZSgpID09IFRleHRUcmFja0N1ZTo6RGF0
YSk7CiAKLSAgICBtX2luY29tcGxldGVDdWVNYXAucmVtb3ZlKGNvbnN0X2Nhc3Q8U2VyaWFsaXpl
ZFBsYXRmb3JtUmVwcmVzZW50YXRpb24qPih0b0RhdGFDdWUoJmN1ZSktPnBsYXRmb3JtVmFsdWUo
KSkpOworICAgIG1faW5jb21wbGV0ZUN1ZU1hcC5yZW1vdmUoY29uc3RfY2FzdDxTZXJpYWxpemVk
UGxhdGZvcm1EYXRhQ3VlKj4odG9EYXRhQ3VlKCZjdWUpLT5wbGF0Zm9ybVZhbHVlKCkpKTsKIAog
ICAgIHJldHVybiBJbmJhbmRUZXh0VHJhY2s6OnJlbW92ZUN1ZShjdWUpOwogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvaHRtbC90cmFjay9JbmJhbmREYXRhVGV4dFRyYWNrLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL3RyYWNrL0luYmFuZERhdGFUZXh0VHJhY2suaAppbmRleCAxYjAzOGYz
NzIyMjJkNjEwMjE2ODA4MTU2MGJjMGI2NjcyOTQ4ZGNlLi4xYThiZGY2YWU1MjI4YmVmMGNmOGQx
ZGFkOTVlMzU2ZjYyOGE0NGYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNr
L0luYmFuZERhdGFUZXh0VHJhY2suaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0lu
YmFuZERhdGFUZXh0VHJhY2suaApAQCAtNTAsMTIgKzUwLDEyIEBAIHByaXZhdGU6CiAjZW5kaWYK
IAogI2lmIEVOQUJMRShEQVRBQ1VFX1ZBTFVFKQotICAgIHZvaWQgYWRkRGF0YUN1ZShjb25zdCBN
ZWRpYVRpbWUmIHN0YXJ0LCBjb25zdCBNZWRpYVRpbWUmIGVuZCwgUmVmPFNlcmlhbGl6ZWRQbGF0
Zm9ybVJlcHJlc2VudGF0aW9uPiYmLCBjb25zdCBTdHJpbmcmKSBmaW5hbDsKLSAgICB2b2lkIHVw
ZGF0ZURhdGFDdWUoY29uc3QgTWVkaWFUaW1lJiBzdGFydCwgY29uc3QgTWVkaWFUaW1lJiBlbmQs
IFNlcmlhbGl6ZWRQbGF0Zm9ybVJlcHJlc2VudGF0aW9uJikgZmluYWw7Ci0gICAgdm9pZCByZW1v
dmVEYXRhQ3VlKGNvbnN0IE1lZGlhVGltZSYgc3RhcnQsIGNvbnN0IE1lZGlhVGltZSYgZW5kLCBT
ZXJpYWxpemVkUGxhdGZvcm1SZXByZXNlbnRhdGlvbiYpIGZpbmFsOworICAgIHZvaWQgYWRkRGF0
YUN1ZShjb25zdCBNZWRpYVRpbWUmIHN0YXJ0LCBjb25zdCBNZWRpYVRpbWUmIGVuZCwgUmVmPFNl
cmlhbGl6ZWRQbGF0Zm9ybURhdGFDdWU+JiYsIGNvbnN0IFN0cmluZyYpIGZpbmFsOworICAgIHZv
aWQgdXBkYXRlRGF0YUN1ZShjb25zdCBNZWRpYVRpbWUmIHN0YXJ0LCBjb25zdCBNZWRpYVRpbWUm
IGVuZCwgU2VyaWFsaXplZFBsYXRmb3JtRGF0YUN1ZSYpIGZpbmFsOworICAgIHZvaWQgcmVtb3Zl
RGF0YUN1ZShjb25zdCBNZWRpYVRpbWUmIHN0YXJ0LCBjb25zdCBNZWRpYVRpbWUmIGVuZCwgU2Vy
aWFsaXplZFBsYXRmb3JtRGF0YUN1ZSYpIGZpbmFsOwogICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHJl
bW92ZUN1ZShUZXh0VHJhY2tDdWUmKSBmaW5hbDsKIAotICAgIEhhc2hNYXA8UmVmUHRyPFNlcmlh
bGl6ZWRQbGF0Zm9ybVJlcHJlc2VudGF0aW9uPiwgUmVmUHRyPERhdGFDdWU+PiBtX2luY29tcGxl
dGVDdWVNYXA7CisgICAgSGFzaE1hcDxSZWZQdHI8U2VyaWFsaXplZFBsYXRmb3JtRGF0YUN1ZT4s
IFJlZlB0cjxEYXRhQ3VlPj4gbV9pbmNvbXBsZXRlQ3VlTWFwOwogI2VuZGlmCiB9OwogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0luYmFuZFRleHRUcmFjay5oIGIvU291
cmNlL1dlYkNvcmUvaHRtbC90cmFjay9JbmJhbmRUZXh0VHJhY2suaAppbmRleCBlMTQxMDNkMDRl
ZjYzYTUwMjdlZWE2M2E0NmQ5ODA2YjJkNTVhODJlLi44ZmVmOWYzNGFlYWJlMDM1NTE0OTNiNjQ1
ZWMxYTZlNWU0ZjM4YTkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3RyYWNrL0lu
YmFuZFRleHRUcmFjay5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvdHJhY2svSW5iYW5kVGV4
dFRyYWNrLmgKQEAgLTcyLDkgKzcyLDkgQEAgcHJpdmF0ZToKICAgICB2b2lkIGFkZERhdGFDdWUo
Y29uc3QgTWVkaWFUaW1lJiwgY29uc3QgTWVkaWFUaW1lJiwgY29uc3Qgdm9pZCosIHVuc2lnbmVk
KSBvdmVycmlkZSB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9CiAKICNpZiBFTkFCTEUoREFUQUNV
RV9WQUxVRSkKLSAgICB2b2lkIGFkZERhdGFDdWUoY29uc3QgTWVkaWFUaW1lJiwgY29uc3QgTWVk
aWFUaW1lJiwgUmVmPFNlcmlhbGl6ZWRQbGF0Zm9ybVJlcHJlc2VudGF0aW9uPiYmLCBjb25zdCBT
dHJpbmcmKSBvdmVycmlkZSB7IEFTU0VSVF9OT1RfUkVBQ0hFRCgpOyB9Ci0gICAgdm9pZCB1cGRh
dGVEYXRhQ3VlKGNvbnN0IE1lZGlhVGltZSYsIGNvbnN0IE1lZGlhVGltZSYsIFNlcmlhbGl6ZWRQ
bGF0Zm9ybVJlcHJlc2VudGF0aW9uJikgb3ZlcnJpZGUgIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7
IH0KLSAgICB2b2lkIHJlbW92ZURhdGFDdWUoY29uc3QgTWVkaWFUaW1lJiwgY29uc3QgTWVkaWFU
aW1lJiwgU2VyaWFsaXplZFBsYXRmb3JtUmVwcmVzZW50YXRpb24mKSBvdmVycmlkZSAgeyBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsgfQorICAgIHZvaWQgYWRkRGF0YUN1ZShjb25zdCBNZWRpYVRpbWUm
LCBjb25zdCBNZWRpYVRpbWUmLCBSZWY8U2VyaWFsaXplZFBsYXRmb3JtRGF0YUN1ZT4mJiwgY29u
c3QgU3RyaW5nJikgb3ZlcnJpZGUgeyBBU1NFUlRfTk9UX1JFQUNIRUQoKTsgfQorICAgIHZvaWQg
dXBkYXRlRGF0YUN1ZShjb25zdCBNZWRpYVRpbWUmLCBjb25zdCBNZWRpYVRpbWUmLCBTZXJpYWxp
emVkUGxhdGZvcm1EYXRhQ3VlJikgb3ZlcnJpZGUgIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0K
KyAgICB2b2lkIHJlbW92ZURhdGFDdWUoY29uc3QgTWVkaWFUaW1lJiwgY29uc3QgTWVkaWFUaW1l
JiwgU2VyaWFsaXplZFBsYXRmb3JtRGF0YUN1ZSYpIG92ZXJyaWRlICB7IEFTU0VSVF9OT1RfUkVB
Q0hFRCgpOyB9CiAjZW5kaWYKIAogICAgIHZvaWQgYWRkR2VuZXJpY0N1ZShHZW5lcmljQ3VlRGF0
YSYpIG92ZXJyaWRlIHsgQVNTRVJUX05PVF9SRUFDSEVEKCk7IH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL1NlcmlhbGl6ZWRQbGF0Zm9ybURhdGFDdWUuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1NlcmlhbGl6ZWRQbGF0Zm9ybURhdGFDdWUuaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi40
NzRhYzFkNGY3NzY0YjVjZWMxM2UxN2M2ZWUxOWE4YjQyZDIwMDc3Ci0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vU2VyaWFsaXplZFBsYXRmb3JtRGF0YUN1ZS5oCkBA
IC0wLDAgKzEsNTQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAyMCBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJworICog
QU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElU
WSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVE
LiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAqIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVY
RU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaWYgRU5B
QkxFKFZJREVPKQorCisjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvSlNDSW5saW5lcy5oPgorI2lu
Y2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3Mg
U2VyaWFsaXplZFBsYXRmb3JtRGF0YUN1ZSA6IHB1YmxpYyBSZWZDb3VudGVkPFNlcmlhbGl6ZWRQ
bGF0Zm9ybURhdGFDdWU+IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5TZXJpYWxpemVkUGxhdGZv
cm1EYXRhQ3VlKCkgPSBkZWZhdWx0OworCisgICAgdmlydHVhbCBKU0M6OkpTVmFsdWUgZGVzZXJp
YWxpemUoSlNDOjpKU0dsb2JhbE9iamVjdCopIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFJlZlB0
cjxKU0M6OkFycmF5QnVmZmVyPiBkYXRhKCkgY29uc3QgPSAwOworICAgIHZpcnR1YWwgYm9vbCBp
c0VxdWFsKGNvbnN0IFNlcmlhbGl6ZWRQbGF0Zm9ybURhdGFDdWUmKSBjb25zdCA9IDA7CisKKyAg
ICBlbnVtIFBsYXRmb3JtVHlwZSB7CisgICAgICAgIE9iakMsCisgICAgfTsKKyAgICB2aXJ0dWFs
IFBsYXRmb3JtVHlwZSBwbGF0Zm9ybVR5cGUoKSBjb25zdCA9IDA7CisKK3Byb3RlY3RlZDoKKyAg
ICBTZXJpYWxpemVkUGxhdGZvcm1EYXRhQ3VlKCkgPSBkZWZhdWx0OworfTsKKworfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL1NlcmlhbGl6ZWRQbGF0Zm9ybVJlcHJlc2VudGF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9TZXJpYWxpemVkUGxhdGZvcm1SZXByZXNlbnRhdGlvbi5oCmRlbGV0ZWQgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCA0NDI4OWViODY5OTkxYWFmZTU4ODAzMmVmY2Y2NjFmYjk4NGE0MWFj
Li4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL1NlcmlhbGl6ZWRQbGF0Zm9ybVJlcHJlc2VudGF0aW9uLmgKKysrIC9k
ZXYvbnVsbApAQCAtMSw1NCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxl
IEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQotICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklCVVRPUlMgYGBBUyBJUycn
Ci0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKLSAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRTIENPTlRSSUJVVE9SUwot
ICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICog
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GCi0gKiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotI3ByYWdtYSBvbmNlCi0KLSNp
ZiBFTkFCTEUoVklERU8pCi0KLSNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9KU0NJbmxpbmVzLmg+
Ci0jaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1j
bGFzcyBTZXJpYWxpemVkUGxhdGZvcm1SZXByZXNlbnRhdGlvbiA6IHB1YmxpYyBSZWZDb3VudGVk
PFNlcmlhbGl6ZWRQbGF0Zm9ybVJlcHJlc2VudGF0aW9uPiB7Ci1wdWJsaWM6Ci0gICAgdmlydHVh
bCB+U2VyaWFsaXplZFBsYXRmb3JtUmVwcmVzZW50YXRpb24oKSA9IGRlZmF1bHQ7Ci0KLSAgICB2
aXJ0dWFsIEpTQzo6SlNWYWx1ZSBkZXNlcmlhbGl6ZShKU0M6OkpTR2xvYmFsT2JqZWN0KikgY29u
c3QgPSAwOwotICAgIHZpcnR1YWwgUmVmUHRyPEpTQzo6QXJyYXlCdWZmZXI+IGRhdGEoKSBjb25z
dCA9IDA7Ci0gICAgdmlydHVhbCBib29sIGlzRXF1YWwoY29uc3QgU2VyaWFsaXplZFBsYXRmb3Jt
UmVwcmVzZW50YXRpb24mKSBjb25zdCA9IDA7Ci0KLSAgICBlbnVtIFBsYXRmb3JtVHlwZSB7Ci0g
ICAgICAgIE9iakMsCi0gICAgfTsKLSAgICB2aXJ0dWFsIFBsYXRmb3JtVHlwZSBwbGF0Zm9ybVR5
cGUoKSBjb25zdCA9IDA7Ci0KLXByb3RlY3RlZDoKLSAgICBTZXJpYWxpemVkUGxhdGZvcm1SZXBy
ZXNlbnRhdGlvbigpID0gZGVmYXVsdDsKLX07Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQot
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9JbmJh
bmRUZXh0VHJhY2tQcml2YXRlQ2xpZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9JbmJhbmRUZXh0VHJhY2tQcml2YXRlQ2xpZW50LmgKaW5kZXggNmUwYzhmOTA5YzY1OTVk
ZjcwMjUxN2UwNWI1MDYzMjhkZjM5OWI3MC4uZjQzMDY0NTE4ZGY0MTk2MWIzZjZjNjNhNzZjOTkx
M2QxNzY3YWViYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
SW5iYW5kVGV4dFRyYWNrUHJpdmF0ZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL0luYmFuZFRleHRUcmFja1ByaXZhdGVDbGllbnQuaApAQCAtMzMsNyArMzMs
NyBAQAogI2luY2x1ZGUgPHd0Zi9NZWRpYVRpbWUuaD4KIAogI2lmIEVOQUJMRShEQVRBQ1VFX1ZB
TFVFKQotI2luY2x1ZGUgIlNlcmlhbGl6ZWRQbGF0Zm9ybVJlcHJlc2VudGF0aW9uLmgiCisjaW5j
bHVkZSAiU2VyaWFsaXplZFBsYXRmb3JtRGF0YUN1ZS5oIgogI2VuZGlmCiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKQEAgLTIyOSw5ICsyMjksOSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGFk
ZERhdGFDdWUoY29uc3QgTWVkaWFUaW1lJiBzdGFydCwgY29uc3QgTWVkaWFUaW1lJiBlbmQsIGNv
bnN0IHZvaWQqLCB1bnNpZ25lZCkgPSAwOwogCiAjaWYgRU5BQkxFKERBVEFDVUVfVkFMVUUpCi0g
ICAgdmlydHVhbCB2b2lkIGFkZERhdGFDdWUoY29uc3QgTWVkaWFUaW1lJiBzdGFydCwgY29uc3Qg
TWVkaWFUaW1lJiBlbmQsIFJlZjxTZXJpYWxpemVkUGxhdGZvcm1SZXByZXNlbnRhdGlvbj4mJiwg
Y29uc3QgU3RyaW5nJikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVEYXRhQ3VlKGNvbnN0
IE1lZGlhVGltZSYgc3RhcnQsIGNvbnN0IE1lZGlhVGltZSYgZW5kLCBTZXJpYWxpemVkUGxhdGZv
cm1SZXByZXNlbnRhdGlvbiYpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlRGF0YUN1ZShj
b25zdCBNZWRpYVRpbWUmIHN0YXJ0LCBjb25zdCBNZWRpYVRpbWUmIGVuZCwgU2VyaWFsaXplZFBs
YXRmb3JtUmVwcmVzZW50YXRpb24mKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGFkZERhdGFDdWUo
Y29uc3QgTWVkaWFUaW1lJiBzdGFydCwgY29uc3QgTWVkaWFUaW1lJiBlbmQsIFJlZjxTZXJpYWxp
emVkUGxhdGZvcm1EYXRhQ3VlPiYmLCBjb25zdCBTdHJpbmcmKSA9IDA7CisgICAgdmlydHVhbCB2
b2lkIHVwZGF0ZURhdGFDdWUoY29uc3QgTWVkaWFUaW1lJiBzdGFydCwgY29uc3QgTWVkaWFUaW1l
JiBlbmQsIFNlcmlhbGl6ZWRQbGF0Zm9ybURhdGFDdWUmKSA9IDA7CisgICAgdmlydHVhbCB2b2lk
IHJlbW92ZURhdGFDdWUoY29uc3QgTWVkaWFUaW1lJiBzdGFydCwgY29uc3QgTWVkaWFUaW1lJiBl
bmQsIFNlcmlhbGl6ZWRQbGF0Zm9ybURhdGFDdWUmKSA9IDA7CiAjZW5kaWYKIAogICAgIHZpcnR1
YWwgdm9pZCBhZGRHZW5lcmljQ3VlKEdlbmVyaWNDdWVEYXRhJikgPSAwOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0luYmFuZE1ldGFk
YXRhVGV4dFRyYWNrUHJpdmF0ZUFWRi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9hdmZvdW5kYXRpb24vSW5iYW5kTWV0YWRhdGFUZXh0VHJhY2tQcml2YXRlQVZGLmNwcApp
bmRleCAzNWRhOTVlMmExMzFmZWZhYWEzYjkwNzlkNGNjZWY5NWRmMmY1ZDc4Li44NmUzNGNlYjE5
NmE0MDY2ODViM2NhN2JiZTkyNTZlNWZlNmZlNTdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vSW5iYW5kTWV0YWRhdGFUZXh0VHJhY2tQ
cml2YXRlQVZGLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZv
dW5kYXRpb24vSW5iYW5kTWV0YWRhdGFUZXh0VHJhY2tQcml2YXRlQVZGLmNwcApAQCAtNTQsNyAr
NTQsNyBAQCBJbmJhbmRNZXRhZGF0YVRleHRUcmFja1ByaXZhdGVBVkY6On5JbmJhbmRNZXRhZGF0
YVRleHRUcmFja1ByaXZhdGVBVkYoKSA9IGRlZmF1bAogCiAjaWYgRU5BQkxFKERBVEFDVUVfVkFM
VUUpCiAKLXZvaWQgSW5iYW5kTWV0YWRhdGFUZXh0VHJhY2tQcml2YXRlQVZGOjphZGREYXRhQ3Vl
KGNvbnN0IE1lZGlhVGltZSYgc3RhcnQsIGNvbnN0IE1lZGlhVGltZSYgZW5kLCBSZWY8U2VyaWFs
aXplZFBsYXRmb3JtUmVwcmVzZW50YXRpb24+JiYgY3VlRGF0YSwgY29uc3QgU3RyaW5nJiB0eXBl
KQordm9pZCBJbmJhbmRNZXRhZGF0YVRleHRUcmFja1ByaXZhdGVBVkY6OmFkZERhdGFDdWUoY29u
c3QgTWVkaWFUaW1lJiBzdGFydCwgY29uc3QgTWVkaWFUaW1lJiBlbmQsIFJlZjxTZXJpYWxpemVk
UGxhdGZvcm1EYXRhQ3VlPiYmIGN1ZURhdGEsIGNvbnN0IFN0cmluZyYgdHlwZSkKIHsKICAgICBB
U1NFUlQoY3VlRm9ybWF0KCkgPT0gQ3VlRm9ybWF0OjpEYXRhKTsKICAgICBBU1NFUlQoc3RhcnQg
Pj0gTWVkaWFUaW1lOjp6ZXJvVGltZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9JbmJhbmRNZXRhZGF0YVRleHRUcmFja1ByaXZh
dGVBVkYuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9J
bmJhbmRNZXRhZGF0YVRleHRUcmFja1ByaXZhdGVBVkYuaAppbmRleCAyZWM3ZDVjMDUzMGQ3Nzhi
OTQ5MDczMTZjYWY3YWJkMWVjYjM4N2FmLi5jZjAwNDcxNDBmMzZkZjNmNDlhOTU2MGJkNTNhZDc5
OWMwOGQ4OWUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9h
dmZvdW5kYXRpb24vSW5iYW5kTWV0YWRhdGFUZXh0VHJhY2tQcml2YXRlQVZGLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL0luYmFuZE1ldGFkYXRh
VGV4dFRyYWNrUHJpdmF0ZUFWRi5oCkBAIC0zNCw3ICszNCw3IEBAIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogI2lmIEVOQUJMRShEQVRBQ1VFX1ZBTFVFKQogc3RydWN0IEluY29tcGxldGVNZXRhRGF0
YUN1ZSB7Ci0gICAgUmVmUHRyPFNlcmlhbGl6ZWRQbGF0Zm9ybVJlcHJlc2VudGF0aW9uPiBjdWVE
YXRhOworICAgIFJlZlB0cjxTZXJpYWxpemVkUGxhdGZvcm1EYXRhQ3VlPiBjdWVEYXRhOwogICAg
IE1lZGlhVGltZSBzdGFydFRpbWU7CiB9OwogI2VuZGlmCkBAIC01MSw3ICs1MSw3IEBAIHB1Ymxp
YzoKICAgICB2b2lkIHNldEluQmFuZE1ldGFkYXRhVHJhY2tEaXNwYXRjaFR5cGUoY29uc3QgQXRv
bVN0cmluZyYgdmFsdWUpIHsgbV9pbkJhbmRNZXRhZGF0YVRyYWNrRGlzcGF0Y2hUeXBlID0gdmFs
dWU7IH0KIAogI2lmIEVOQUJMRShEQVRBQ1VFX1ZBTFVFKQotICAgIHZvaWQgYWRkRGF0YUN1ZShj
b25zdCBNZWRpYVRpbWUmIHN0YXJ0LCBjb25zdCBNZWRpYVRpbWUmIGVuZCwgUmVmPFNlcmlhbGl6
ZWRQbGF0Zm9ybVJlcHJlc2VudGF0aW9uPiYmLCBjb25zdCBTdHJpbmcmKTsKKyAgICB2b2lkIGFk
ZERhdGFDdWUoY29uc3QgTWVkaWFUaW1lJiBzdGFydCwgY29uc3QgTWVkaWFUaW1lJiBlbmQsIFJl
ZjxTZXJpYWxpemVkUGxhdGZvcm1EYXRhQ3VlPiYmLCBjb25zdCBTdHJpbmcmKTsKICAgICB2b2lk
IHVwZGF0ZVBlbmRpbmdDdWVFbmRUaW1lcyhjb25zdCBNZWRpYVRpbWUmKTsKICNlbmRpZgogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24v
b2JqYy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvYXZmb3VuZGF0aW9uL29iamMvTWVkaWFQbGF5ZXJQcml2YXRl
QVZGb3VuZGF0aW9uT2JqQy5tbQppbmRleCAwZGMyZTc3MmFlOWRlOTMyMzVkZDBjYzVjOTg5Nzhk
NzgyNmQzNmU3Li5mOGNmZjIxMzQ1YTVlYzYzMGZkZjg2NWE1NzJkOTQ4NWY2YTQ4MWQxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9hdmZvdW5kYXRpb24vb2Jq
Yy9NZWRpYVBsYXllclByaXZhdGVBVkZvdW5kYXRpb25PYmpDLm1tCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2F2Zm91bmRhdGlvbi9vYmpjL01lZGlhUGxheWVyUHJpdmF0
ZUFWRm91bmRhdGlvbk9iakMubW0KQEAgLTU1LDcgKzU1LDcgQEAKICNpbXBvcnQgIlBpeGVsQnVm
ZmVyQ29uZm9ybWVyQ1YuaCIKICNpbXBvcnQgIlBsYXRmb3JtVGltZVJhbmdlcy5oIgogI2ltcG9y
dCAiU2VjdXJpdHlPcmlnaW4uaCIKLSNpbXBvcnQgIlNlcmlhbGl6ZWRQbGF0Zm9ybVJlcHJlc2Vu
dGF0aW9uTWFjLmgiCisjaW1wb3J0ICJTZXJpYWxpemVkUGxhdGZvcm1EYXRhQ3VlTWFjLmgiCiAj
aW1wb3J0ICJTaGFyZWRCdWZmZXIuaCIKICNpbXBvcnQgIlRleHRFbmNvZGluZy5oIgogI2ltcG9y
dCAiVGV4dFRyYWNrUmVwcmVzZW50YXRpb24uaCIKQEAgLTMwNzMsNyArMzA3Myw3IEBAIHZvaWQg
TWVkaWFQbGF5ZXJQcml2YXRlQVZGb3VuZGF0aW9uT2JqQzo6bWV0YWRhdGFEaWRBcnJpdmUoY29u
c3QgUmV0YWluUHRyPE5TQXJyCiAgICAgICAgIGlmIChpdGVtLmtleVNwYWNlKQogICAgICAgICAg
ICAgdHlwZSA9IG1ldGFkYXRhVHlwZShpdGVtLmtleVNwYWNlKTsKIAotICAgICAgICBtX21ldGFk
YXRhVHJhY2stPmFkZERhdGFDdWUoc3RhcnQsIGVuZCwgU2VyaWFsaXplZFBsYXRmb3JtUmVwcmVz
ZW50YXRpb25NYWM6OmNyZWF0ZShpdGVtKSwgdHlwZSk7CisgICAgICAgIG1fbWV0YWRhdGFUcmFj
ay0+YWRkRGF0YUN1ZShzdGFydCwgZW5kLCBTZXJpYWxpemVkUGxhdGZvcm1EYXRhQ3VlTWFjOjpj
cmVhdGUoaXRlbSksIHR5cGUpOwogICAgIH0KICNlbmRpZgogfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWFjL1NlcmlhbGl6ZWRQbGF0Zm9ybURhdGFDdWVNYWMuaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TZXJpYWxpemVkUGxhdGZvcm1EYXRhQ3VlTWFjLmgK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uYTEwZGNjYzNlMWI1YTMwZGZiZjAxMGE3NjA1MDUyODA2YjIxOTZlYgotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TZXJpYWxpemVkUGxh
dGZvcm1EYXRhQ3VlTWFjLmgKQEAgLTAsMCArMSw2MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxNC0yMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3Ry
aWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhv
dXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xs
b3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBz
b3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFi
b3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQv
b3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElUUyBDT05UUklC
VVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IgSVRT
IENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5D
SURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElBTCBEQU1BR0VT
IChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKKyAqIFNVQlNU
SVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBP
UiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRI
RU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklM
SVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCisgKiBBUklT
SU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3By
YWdtYSBvbmNlCisKKyNpZiBFTkFCTEUoVklERU9fVFJBQ0spICYmIEVOQUJMRShEQVRBQ1VFX1ZB
TFVFKQorCisjaW5jbHVkZSAiU2VyaWFsaXplZFBsYXRmb3JtRGF0YUN1ZS5oIgorCisjaWYgVVNF
KEZPVU5EQVRJT04pICYmICFkZWZpbmVkKF9fT0JKQ19fKQordHlwZWRlZiBzdHJ1Y3Qgb2JqY19v
YmplY3QgKmlkOworI2VuZGlmCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgU2VyaWFs
aXplZFBsYXRmb3JtRGF0YUN1ZU1hYyBmaW5hbCA6IHB1YmxpYyBTZXJpYWxpemVkUGxhdGZvcm1E
YXRhQ3VlIHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5TZXJpYWxpemVkUGxhdGZvcm1EYXRhQ3Vl
TWFjKCk7CisgICAgc3RhdGljIFJlZjxTZXJpYWxpemVkUGxhdGZvcm1EYXRhQ3VlPiBjcmVhdGUo
aWQpOworCisgICAgSlNDOjpKU1ZhbHVlIGRlc2VyaWFsaXplKEpTQzo6SlNHbG9iYWxPYmplY3Qq
KSBjb25zdCBmaW5hbDsKKyAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IGRhdGEoKSBjb25zdCBmaW5h
bDsKKworICAgIGJvb2wgaXNFcXVhbChjb25zdCBTZXJpYWxpemVkUGxhdGZvcm1EYXRhQ3VlJikg
Y29uc3QgZmluYWw7CisKKyAgICBQbGF0Zm9ybVR5cGUgcGxhdGZvcm1UeXBlKCkgY29uc3QgZmlu
YWwgeyByZXR1cm4gU2VyaWFsaXplZFBsYXRmb3JtRGF0YUN1ZTo6T2JqQzsgfQorCisgICAgaWQg
bmF0aXZlVmFsdWUoKSBjb25zdCB7IHJldHVybiBtX25hdGl2ZVZhbHVlLmdldCgpOyB9CisKK3By
aXZhdGU6CisgICAgZXhwbGljaXQgU2VyaWFsaXplZFBsYXRmb3JtRGF0YUN1ZU1hYyhpZCBuYXRp
dmVWYWx1ZSk7CisKKyAgICBSZXRhaW5QdHI8aWQ+IG1fbmF0aXZlVmFsdWU7Cit9OworCitTZXJp
YWxpemVkUGxhdGZvcm1EYXRhQ3VlTWFjKiB0b1NlcmlhbGl6ZWRQbGF0Zm9ybURhdGFDdWVNYWMo
U2VyaWFsaXplZFBsYXRmb3JtRGF0YUN1ZSopOworY29uc3QgU2VyaWFsaXplZFBsYXRmb3JtRGF0
YUN1ZU1hYyogdG9TZXJpYWxpemVkUGxhdGZvcm1EYXRhQ3VlTWFjKGNvbnN0IFNlcmlhbGl6ZWRQ
bGF0Zm9ybURhdGFDdWUqKTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL21hYy9TZXJpYWxpemVkUGxhdGZvcm1E
YXRhQ3VlTWFjLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vbWFjL1NlcmlhbGl6ZWRQbGF0
Zm9ybURhdGFDdWVNYWMubW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYjk0OWViN2NkZDIwMDM5ZjFjZmZlZjhjNGM1
YmNkN2IxMTNlYjE5OQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L21hYy9TZXJpYWxpemVkUGxhdGZvcm1EYXRhQ3VlTWFjLm1tCkBAIC0wLDAgKzEsMjM5IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDE0LTIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICog
VEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFOWSBE
SVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisgKiBD
T05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9D
VVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0Us
IERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIg
Q0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICogQ09O
VFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNI
IERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiU2VyaWFsaXpl
ZFBsYXRmb3JtRGF0YUN1ZU1hYy5oIgorCisjaWYgRU5BQkxFKFZJREVPX1RSQUNLKSAmJiBFTkFC
TEUoREFUQUNVRV9WQUxVRSkKKworI2ltcG9ydCAiSlNET01Db252ZXJ0QnVmZmVyU291cmNlLmgi
CisjaW1wb3J0IDxBVkZvdW5kYXRpb24vQVZNZXRhZGF0YUl0ZW0uaD4KKyNpbXBvcnQgPEZvdW5k
YXRpb24vTlNTdHJpbmcuaD4KKyNpbXBvcnQgPEphdmFTY3JpcHRDb3JlL0FQSUNhc3QuaD4KKyNp
bXBvcnQgPEphdmFTY3JpcHRDb3JlL0FycmF5QnVmZmVyLmg+CisjaW1wb3J0IDxKYXZhU2NyaXB0
Q29yZS9KU0FycmF5QnVmZmVyLmg+CisjaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9KU0NvbnRleHRS
ZWYuaD4KKyNpbXBvcnQgPEphdmFTY3JpcHRDb3JlL0pTT2JqZWN0UmVmLmg+CisjaW1wb3J0IDxK
YXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS5oPgorI2ltcG9ydCA8b2JqYy9ydW50aW1lLmg+
CisjaW1wb3J0IDxwYWwvY29jb2EvQVZGb3VuZGF0aW9uU29mdExpbmsuaD4KKworbmFtZXNwYWNl
IFdlYkNvcmUgeworCisjaWYgSlNDX09CSkNfQVBJX0VOQUJMRUQKK3N0YXRpYyBKU1ZhbHVlICpq
c1ZhbHVlV2l0aERhdGFJbkNvbnRleHQoTlNEYXRhICosIEpTQ29udGV4dCAqKTsKK3N0YXRpYyBK
U1ZhbHVlICpqc1ZhbHVlV2l0aEFycmF5SW5Db250ZXh0KE5TQXJyYXkgKiwgSlNDb250ZXh0ICop
Oworc3RhdGljIEpTVmFsdWUgKmpzVmFsdWVXaXRoRGljdGlvbmFyeUluQ29udGV4dChOU0RpY3Rp
b25hcnkgKiwgSlNDb250ZXh0ICopOworc3RhdGljIEpTVmFsdWUgKmpzVmFsdWVXaXRoQVZNZXRh
ZGF0YUl0ZW1JbkNvbnRleHQoQVZNZXRhZGF0YUl0ZW0gKiwgSlNDb250ZXh0ICopOworc3RhdGlj
IEpTVmFsdWUgKmpzVmFsdWVXaXRoVmFsdWVJbkNvbnRleHQoaWQsIEpTQ29udGV4dCAqKTsKKyNl
bmRpZgorCitTZXJpYWxpemVkUGxhdGZvcm1EYXRhQ3VlTWFjOjpTZXJpYWxpemVkUGxhdGZvcm1E
YXRhQ3VlTWFjKGlkIG5hdGl2ZVZhbHVlKQorICAgIDogU2VyaWFsaXplZFBsYXRmb3JtRGF0YUN1
ZSgpCisgICAgLCBtX25hdGl2ZVZhbHVlKG5hdGl2ZVZhbHVlKQoreworfQorCitTZXJpYWxpemVk
UGxhdGZvcm1EYXRhQ3VlTWFjOjp+U2VyaWFsaXplZFBsYXRmb3JtRGF0YUN1ZU1hYygpCit7Cit9
CisKK1JlZjxTZXJpYWxpemVkUGxhdGZvcm1EYXRhQ3VlPiBTZXJpYWxpemVkUGxhdGZvcm1EYXRh
Q3VlTWFjOjpjcmVhdGUoaWQgbmF0aXZlVmFsdWUpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgU2VyaWFsaXplZFBsYXRmb3JtRGF0YUN1ZU1hYyhuYXRpdmVWYWx1ZSkpOworfQorCitSZWZQ
dHI8QXJyYXlCdWZmZXI+IFNlcmlhbGl6ZWRQbGF0Zm9ybURhdGFDdWVNYWM6OmRhdGEoKSBjb25z
dAoreworICAgIHJldHVybiBudWxscHRyOworfQorCitKU0M6OkpTVmFsdWUgU2VyaWFsaXplZFBs
YXRmb3JtRGF0YUN1ZU1hYzo6ZGVzZXJpYWxpemUoSlNDOjpKU0dsb2JhbE9iamVjdCogbGV4aWNh
bEdsb2JhbE9iamVjdCkgY29uc3QKK3sKKyNpZiBKU0NfT0JKQ19BUElfRU5BQkxFRAorICAgIGlm
ICghbV9uYXRpdmVWYWx1ZSkKKyAgICAgICAgcmV0dXJuIEpTQzo6anNOdWxsKCk7CisKKyAgICBK
U0dsb2JhbENvbnRleHRSZWYganNHbG9iYWxDb250ZXh0UmVmID0gdG9HbG9iYWxSZWYobGV4aWNh
bEdsb2JhbE9iamVjdCk7CisgICAgSlNDb250ZXh0ICpqc0NvbnRleHQgPSBbSlNDb250ZXh0IGNv
bnRleHRXaXRoSlNHbG9iYWxDb250ZXh0UmVmOmpzR2xvYmFsQ29udGV4dFJlZl07CisgICAgSlNW
YWx1ZSAqc2VyaWFsaXplZFZhbHVlID0ganNWYWx1ZVdpdGhWYWx1ZUluQ29udGV4dChtX25hdGl2
ZVZhbHVlLmdldCgpLCBqc0NvbnRleHQpOworCisgICAgcmV0dXJuIHRvSlMobGV4aWNhbEdsb2Jh
bE9iamVjdCwgW3NlcmlhbGl6ZWRWYWx1ZSBKU1ZhbHVlUmVmXSk7CisjZWxzZQorICAgIFVOVVNF
RF9QQVJBTShsZXhpY2FsR2xvYmFsT2JqZWN0KTsKKyAgICByZXR1cm4gSlNDOjpqc051bGwoKTsK
KyNlbmRpZgorfQorCitib29sIFNlcmlhbGl6ZWRQbGF0Zm9ybURhdGFDdWVNYWM6OmlzRXF1YWwo
Y29uc3QgU2VyaWFsaXplZFBsYXRmb3JtRGF0YUN1ZSYgb3RoZXIpIGNvbnN0Cit7CisgICAgaWYg
KG90aGVyLnBsYXRmb3JtVHlwZSgpICE9IFNlcmlhbGl6ZWRQbGF0Zm9ybURhdGFDdWU6Ok9iakMp
CisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGNvbnN0IFNlcmlhbGl6ZWRQbGF0Zm9ybURh
dGFDdWVNYWMqIG90aGVyT2JqQyA9IHRvU2VyaWFsaXplZFBsYXRmb3JtRGF0YUN1ZU1hYygmb3Ro
ZXIpOworCisgICAgaWYgKCFtX25hdGl2ZVZhbHVlIHx8ICFvdGhlck9iakMtPm5hdGl2ZVZhbHVl
KCkpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIHJldHVybiBbbV9uYXRpdmVWYWx1ZS5n
ZXQoKSBpc0VxdWFsOm90aGVyT2JqQy0+bmF0aXZlVmFsdWUoKV07Cit9CisKK1NlcmlhbGl6ZWRQ
bGF0Zm9ybURhdGFDdWVNYWMqIHRvU2VyaWFsaXplZFBsYXRmb3JtRGF0YUN1ZU1hYyhTZXJpYWxp
emVkUGxhdGZvcm1EYXRhQ3VlKiByZXApCit7CisgICAgcmV0dXJuIGNvbnN0X2Nhc3Q8U2VyaWFs
aXplZFBsYXRmb3JtRGF0YUN1ZU1hYyo+KHRvU2VyaWFsaXplZFBsYXRmb3JtRGF0YUN1ZU1hYyhj
b25zdF9jYXN0PGNvbnN0IFNlcmlhbGl6ZWRQbGF0Zm9ybURhdGFDdWUqPihyZXApKSk7Cit9CisK
K2NvbnN0IFNlcmlhbGl6ZWRQbGF0Zm9ybURhdGFDdWVNYWMqIHRvU2VyaWFsaXplZFBsYXRmb3Jt
RGF0YUN1ZU1hYyhjb25zdCBTZXJpYWxpemVkUGxhdGZvcm1EYXRhQ3VlKiByZXApCit7CisgICAg
UkVMRUFTRV9BU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihyZXAtPnBsYXRmb3JtVHlw
ZSgpID09IFNlcmlhbGl6ZWRQbGF0Zm9ybURhdGFDdWU6Ok9iakMpOworICAgIHJldHVybiBzdGF0
aWNfY2FzdDxjb25zdCBTZXJpYWxpemVkUGxhdGZvcm1EYXRhQ3VlTWFjKj4ocmVwKTsKK30KKwor
I2lmIEpTQ19PQkpDX0FQSV9FTkFCTEVECitzdGF0aWMgSlNWYWx1ZSAqanNWYWx1ZVdpdGhWYWx1
ZUluQ29udGV4dChpZCB2YWx1ZSwgSlNDb250ZXh0ICpjb250ZXh0KQoreworICAgIGlmIChbdmFs
dWUgaXNLaW5kT2ZDbGFzczpbTlNTdHJpbmcgY2xhc3NdXSB8fCBbdmFsdWUgaXNLaW5kT2ZDbGFz
czpbTlNOdW1iZXIgY2xhc3NdXSkKKyAgICAgICAgcmV0dXJuIFtKU1ZhbHVlIHZhbHVlV2l0aE9i
amVjdDp2YWx1ZSBpbkNvbnRleHQ6Y29udGV4dF07CisKKyAgICBpZiAoW3ZhbHVlIGlzS2luZE9m
Q2xhc3M6W05TTG9jYWxlIGNsYXNzXV0pCisgICAgICAgIHJldHVybiBbSlNWYWx1ZSB2YWx1ZVdp
dGhPYmplY3Q6W3ZhbHVlIGxvY2FsZUlkZW50aWZpZXJdIGluQ29udGV4dDpjb250ZXh0XTsKKwor
ICAgIGlmIChbdmFsdWUgaXNLaW5kT2ZDbGFzczpbTlNEaWN0aW9uYXJ5IGNsYXNzXV0pCisgICAg
ICAgIHJldHVybiBqc1ZhbHVlV2l0aERpY3Rpb25hcnlJbkNvbnRleHQodmFsdWUsIGNvbnRleHQp
OworCisgICAgaWYgKFt2YWx1ZSBpc0tpbmRPZkNsYXNzOltOU0FycmF5IGNsYXNzXV0pCisgICAg
ICAgIHJldHVybiBqc1ZhbHVlV2l0aEFycmF5SW5Db250ZXh0KHZhbHVlLCBjb250ZXh0KTsKKwor
ICAgIGlmIChbdmFsdWUgaXNLaW5kT2ZDbGFzczpbTlNEYXRhIGNsYXNzXV0pCisgICAgICAgIHJl
dHVybiBqc1ZhbHVlV2l0aERhdGFJbkNvbnRleHQodmFsdWUsIGNvbnRleHQpOworCisgICAgaWYg
KFt2YWx1ZSBpc0tpbmRPZkNsYXNzOlBBTDo6Z2V0QVZNZXRhZGF0YUl0ZW1DbGFzcygpXSkKKyAg
ICAgICAgcmV0dXJuIGpzVmFsdWVXaXRoQVZNZXRhZGF0YUl0ZW1JbkNvbnRleHQodmFsdWUsIGNv
bnRleHQpOworCisgICAgcmV0dXJuIG5pbDsKK30KKworc3RhdGljIEpTVmFsdWUgKmpzVmFsdWVX
aXRoRGF0YUluQ29udGV4dChOU0RhdGEgKmRhdGEsIEpTQ29udGV4dCAqY29udGV4dCkKK3sKKyAg
ICBhdXRvIGRhdGFBcnJheSA9IEFycmF5QnVmZmVyOjp0cnlDcmVhdGUoW2RhdGEgYnl0ZXNdLCBb
ZGF0YSBsZW5ndGhdKTsKKworICAgIGF1dG8qIGxleGljYWxHbG9iYWxPYmplY3QgPSB0b0pTKFtj
b250ZXh0IEpTR2xvYmFsQ29udGV4dFJlZl0pOworICAgIEpTQzo6SlNWYWx1ZSBhcnJheSA9IHRv
SlMobGV4aWNhbEdsb2JhbE9iamVjdCwgSlNDOjpqc0Nhc3Q8SlNET01HbG9iYWxPYmplY3QqPihs
ZXhpY2FsR2xvYmFsT2JqZWN0KSwgZGF0YUFycmF5LmdldCgpKTsKKworICAgIHJldHVybiBbSlNW
YWx1ZSB2YWx1ZVdpdGhKU1ZhbHVlUmVmOnRvUmVmKGxleGljYWxHbG9iYWxPYmplY3QsIGFycmF5
KSBpbkNvbnRleHQ6Y29udGV4dF07Cit9CisKK3N0YXRpYyBKU1ZhbHVlICpqc1ZhbHVlV2l0aEFy
cmF5SW5Db250ZXh0KE5TQXJyYXkgKmFycmF5LCBKU0NvbnRleHQgKmNvbnRleHQpCit7CisgICAg
SlNWYWx1ZVJlZiBleGNlcHRpb24gPSAwOworICAgIEpTVmFsdWUgKnJlc3VsdCA9IFtKU1ZhbHVl
IHZhbHVlV2l0aE5ld0FycmF5SW5Db250ZXh0OmNvbnRleHRdOworICAgIEpTT2JqZWN0UmVmIHJl
c3VsdE9iamVjdCA9IEpTVmFsdWVUb09iamVjdChbY29udGV4dCBKU0dsb2JhbENvbnRleHRSZWZd
LCBbcmVzdWx0IEpTVmFsdWVSZWZdLCAmZXhjZXB0aW9uKTsKKyAgICBpZiAoZXhjZXB0aW9uKQor
ICAgICAgICByZXR1cm4gW0pTVmFsdWUgdmFsdWVXaXRoVW5kZWZpbmVkSW5Db250ZXh0OmNvbnRl
eHRdOworCisgICAgTlNVSW50ZWdlciBjb3VudCA9IFthcnJheSBjb3VudF07CisgICAgZm9yIChO
U1VJbnRlZ2VyIGkgPSAwOyBpIDwgY291bnQ7ICsraSkgeworICAgICAgICBKU1ZhbHVlICp2YWx1
ZSA9IGpzVmFsdWVXaXRoVmFsdWVJbkNvbnRleHQoW2FycmF5IG9iamVjdEF0SW5kZXg6aV0sIGNv
bnRleHQpOworICAgICAgICBpZiAoIXZhbHVlKQorICAgICAgICAgICAgY29udGludWU7CisKKyAg
ICAgICAgSlNPYmplY3RTZXRQcm9wZXJ0eUF0SW5kZXgoW2NvbnRleHQgSlNHbG9iYWxDb250ZXh0
UmVmXSwgcmVzdWx0T2JqZWN0LCAodW5zaWduZWQpaSwgW3ZhbHVlIEpTVmFsdWVSZWZdLCAmZXhj
ZXB0aW9uKTsKKyAgICAgICAgaWYgKGV4Y2VwdGlvbikKKyAgICAgICAgICAgIGNvbnRpbnVlOwor
ICAgIH0KKworICAgIHJldHVybiByZXN1bHQ7Cit9CisKK3N0YXRpYyBKU1ZhbHVlICpqc1ZhbHVl
V2l0aERpY3Rpb25hcnlJbkNvbnRleHQoTlNEaWN0aW9uYXJ5ICpkaWN0aW9uYXJ5LCBKU0NvbnRl
eHQgKmNvbnRleHQpCit7CisgICAgSlNWYWx1ZVJlZiBleGNlcHRpb24gPSAwOworICAgIEpTVmFs
dWUgKnJlc3VsdCA9IFtKU1ZhbHVlIHZhbHVlV2l0aE5ld09iamVjdEluQ29udGV4dDpjb250ZXh0
XTsKKyAgICBKU09iamVjdFJlZiByZXN1bHRPYmplY3QgPSBKU1ZhbHVlVG9PYmplY3QoW2NvbnRl
eHQgSlNHbG9iYWxDb250ZXh0UmVmXSwgW3Jlc3VsdCBKU1ZhbHVlUmVmXSwgJmV4Y2VwdGlvbik7
CisgICAgaWYgKGV4Y2VwdGlvbikKKyAgICAgICAgcmV0dXJuIFtKU1ZhbHVlIHZhbHVlV2l0aFVu
ZGVmaW5lZEluQ29udGV4dDpjb250ZXh0XTsKKworICAgIGZvciAoaWQga2V5IGluIFtkaWN0aW9u
YXJ5IGtleUVudW1lcmF0b3JdKSB7CisgICAgICAgIGlmICghW2tleSBpc0tpbmRPZkNsYXNzOltO
U1N0cmluZyBjbGFzc11dKQorICAgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgSlNWYWx1
ZSAqdmFsdWUgPSBqc1ZhbHVlV2l0aFZhbHVlSW5Db250ZXh0KFtkaWN0aW9uYXJ5IG9iamVjdEZv
cktleTprZXldLCBjb250ZXh0KTsKKyAgICAgICAgaWYgKCF2YWx1ZSkKKyAgICAgICAgICAgIGNv
bnRpbnVlOworCisgICAgICAgIGF1dG8gbmFtZSA9IE9wYXF1ZUpTU3RyaW5nOjp0cnlDcmVhdGUo
a2V5KTsKKyAgICAgICAgSlNPYmplY3RTZXRQcm9wZXJ0eShbY29udGV4dCBKU0dsb2JhbENvbnRl
eHRSZWZdLCByZXN1bHRPYmplY3QsIG5hbWUuZ2V0KCksIFt2YWx1ZSBKU1ZhbHVlUmVmXSwgMCwg
JmV4Y2VwdGlvbik7CisgICAgICAgIGlmIChleGNlcHRpb24pCisgICAgICAgICAgICBjb250aW51
ZTsKKyAgICB9CisKKyAgICByZXR1cm4gcmVzdWx0OworfQorCitzdGF0aWMgSlNWYWx1ZSAqanNW
YWx1ZVdpdGhBVk1ldGFkYXRhSXRlbUluQ29udGV4dChBVk1ldGFkYXRhSXRlbSAqaXRlbSwgSlND
b250ZXh0ICpjb250ZXh0KQoreworICAgIE5TTXV0YWJsZURpY3Rpb25hcnkgKmRpY3Rpb25hcnkg
PSBbTlNNdXRhYmxlRGljdGlvbmFyeSBkaWN0aW9uYXJ5XTsKKworICAgIE5TRGljdGlvbmFyeSAq
ZXh0cmFzID0gW2l0ZW0gZXh0cmFBdHRyaWJ1dGVzXTsKKyAgICBmb3IgKGlkIGtleSBpbiBbZXh0
cmFzIGtleUVudW1lcmF0b3JdKSB7CisgICAgICAgIGlmICghW2tleSBpc0tpbmRPZkNsYXNzOltO
U1N0cmluZyBjbGFzc11dKQorICAgICAgICAgICAgY29udGludWU7CisgICAgICAgIGlkIHZhbHVl
ID0gW2V4dHJhcyBvYmplY3RGb3JLZXk6a2V5XTsKKyAgICAgICAgTlNTdHJpbmcgKmtleVN0cmlu
ZyA9IGtleTsKKworICAgICAgICBpZiAoW2tleSBpc0VxdWFsVG9TdHJpbmc6QCJNSU1FdHlwZSJd
KQorICAgICAgICAgICAga2V5U3RyaW5nID0gQCJ0eXBlIjsKKyAgICAgICAgZWxzZSBpZiAoW2tl
eSBpc0VxdWFsVG9TdHJpbmc6QCJkYXRhVHlwZU5hbWVzcGFjZSJdIHx8IFtrZXkgaXNFcXVhbFRv
U3RyaW5nOkAicGljdHVyZVR5cGUiXSkKKyAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBl
bHNlIGlmIChba2V5IGlzRXF1YWxUb1N0cmluZzpAImRhdGFUeXBlIl0pIHsKKyAgICAgICAgICAg
IGlkIGRhdGFUeXBlTmFtZXNwYWNlID0gW2V4dHJhcyBvYmplY3RGb3JLZXk6QCJkYXRhVHlwZU5h
bWVzcGFjZSJdOworICAgICAgICAgICAgaWYgKCFkYXRhVHlwZU5hbWVzcGFjZSB8fCAhW2RhdGFU
eXBlTmFtZXNwYWNlIGlzS2luZE9mQ2xhc3M6W05TU3RyaW5nIGNsYXNzXV0gfHwgIVtkYXRhVHlw
ZU5hbWVzcGFjZSBpc0VxdWFsVG9TdHJpbmc6QCJvcmcuaWFuYS5tZWRpYS10eXBlIl0pCisgICAg
ICAgICAgICAgICAgY29udGludWU7CisgICAgICAgICAgICBrZXlTdHJpbmcgPSBAInR5cGUiOwor
ICAgICAgICB9IGVsc2UgaWYgKFt2YWx1ZSBpc0tpbmRPZkNsYXNzOltOU1N0cmluZyBjbGFzc11d
KSB7CisgICAgICAgICAgICBpZiAoIVt2YWx1ZSBsZW5ndGhdKQorICAgICAgICAgICAgICAgIGNv
bnRpbnVlOworICAgICAgICAgICAga2V5U3RyaW5nID0gW2tleSBsb3dlcmNhc2VTdHJpbmddOwor
ICAgICAgICB9CisKKyAgICAgICAgW2RpY3Rpb25hcnkgc2V0T2JqZWN0OnZhbHVlIGZvcktleTpr
ZXlTdHJpbmddOworICAgIH0KKworICAgIGlmIChpdGVtLmtleSkKKyAgICAgICAgW2RpY3Rpb25h
cnkgc2V0T2JqZWN0Oml0ZW0ua2V5IGZvcktleTpAImtleSJdOworCisgICAgaWYgKGl0ZW0ubG9j
YWxlKQorICAgICAgICBbZGljdGlvbmFyeSBzZXRPYmplY3Q6aXRlbS5sb2NhbGUgZm9yS2V5OkAi
bG9jYWxlIl07CisKKyAgICBpZiAoaXRlbS52YWx1ZSkKKyAgICAgICAgW2RpY3Rpb25hcnkgc2V0
T2JqZWN0Oml0ZW0udmFsdWUgZm9yS2V5OkAiZGF0YSJdOworCisgICAgcmV0dXJuIGpzVmFsdWVX
aXRoRGljdGlvbmFyeUluQ29udGV4dChkaWN0aW9uYXJ5LCBjb250ZXh0KTsKK30KKyNlbmRpZgor
Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vbWFjL1NlcmlhbGl6ZWRQbGF0Zm9ybVJlcHJlc2VudGF0aW9uTWFjLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2VyaWFsaXplZFBsYXRmb3JtUmVwcmVzZW50
YXRpb25NYWMuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmY1NjRjYTM4ZDQxMDhk
ZWNmZTJkY2Y4MTBlNzQxNzA3NjcyMjE2Zi4uMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2VyaWFsaXplZFBs
YXRmb3JtUmVwcmVzZW50YXRpb25NYWMuaAorKysgL2Rldi9udWxsCkBAIC0xLDY1ICswLDAgQEAK
LS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVk
LgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9y
bXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3Zp
ZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBk
b2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlz
dHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5D
LiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhF
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJF
Q1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05T
RVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJF
TUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERB
VEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FV
U0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJB
Q1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9U
SEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNP
RlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERB
TUFHRS4KLSAqLwotCi0jaWZuZGVmIFNlcmlhbGl6ZWRQbGF0Zm9ybVJlcHJlc2VudGF0aW9uTWFj
X2gKLSNkZWZpbmUgU2VyaWFsaXplZFBsYXRmb3JtUmVwcmVzZW50YXRpb25NYWNfaAotCi0jaWYg
RU5BQkxFKFZJREVPX1RSQUNLKSAmJiBFTkFCTEUoREFUQUNVRV9WQUxVRSkKLQotI2luY2x1ZGUg
IlNlcmlhbGl6ZWRQbGF0Zm9ybVJlcHJlc2VudGF0aW9uLmgiCi0KLSNpZiBVU0UoRk9VTkRBVElP
TikgJiYgIWRlZmluZWQoX19PQkpDX18pCi10eXBlZGVmIHN0cnVjdCBvYmpjX29iamVjdCAqaWQ7
Ci0jZW5kaWYKLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi1jbGFzcyBTZXJpYWxpemVkUGxhdGZv
cm1SZXByZXNlbnRhdGlvbk1hYyA6IHB1YmxpYyBTZXJpYWxpemVkUGxhdGZvcm1SZXByZXNlbnRh
dGlvbiB7Ci1wdWJsaWM6Ci0gICAgdmlydHVhbCB+U2VyaWFsaXplZFBsYXRmb3JtUmVwcmVzZW50
YXRpb25NYWMoKTsKLSAgICBzdGF0aWMgUmVmPFNlcmlhbGl6ZWRQbGF0Zm9ybVJlcHJlc2VudGF0
aW9uPiBjcmVhdGUoaWQpOwotCi0gICAgSlNDOjpKU1ZhbHVlIGRlc2VyaWFsaXplKEpTQzo6SlNH
bG9iYWxPYmplY3QqKSBjb25zdCBvdmVycmlkZTsKLSAgICBSZWZQdHI8QXJyYXlCdWZmZXI+IGRh
dGEoKSBjb25zdCBvdmVycmlkZTsKLQotICAgIGJvb2wgaXNFcXVhbChjb25zdCBTZXJpYWxpemVk
UGxhdGZvcm1SZXByZXNlbnRhdGlvbiYpIGNvbnN0IG92ZXJyaWRlOwotCi0gICAgUGxhdGZvcm1U
eXBlIHBsYXRmb3JtVHlwZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIFNlcmlhbGl6ZWRQbGF0
Zm9ybVJlcHJlc2VudGF0aW9uOjpPYmpDOyB9Ci0KLSAgICBpZCBuYXRpdmVWYWx1ZSgpIGNvbnN0
IHsgcmV0dXJuIG1fbmF0aXZlVmFsdWUuZ2V0KCk7IH0KLQotcHJpdmF0ZToKLSAgICBTZXJpYWxp
emVkUGxhdGZvcm1SZXByZXNlbnRhdGlvbk1hYyhpZCBuYXRpdmVWYWx1ZSk7Ci0KLSAgICBSZXRh
aW5QdHI8aWQ+IG1fbmF0aXZlVmFsdWU7Ci19OwotCi1TZXJpYWxpemVkUGxhdGZvcm1SZXByZXNl
bnRhdGlvbk1hYyogdG9TZXJpYWxpemVkUGxhdGZvcm1SZXByZXNlbnRhdGlvbk1hYyhTZXJpYWxp
emVkUGxhdGZvcm1SZXByZXNlbnRhdGlvbiopOwotY29uc3QgU2VyaWFsaXplZFBsYXRmb3JtUmVw
cmVzZW50YXRpb25NYWMqIHRvU2VyaWFsaXplZFBsYXRmb3JtUmVwcmVzZW50YXRpb25NYWMoY29u
c3QgU2VyaWFsaXplZFBsYXRmb3JtUmVwcmVzZW50YXRpb24qKTsKLQotfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQotCi0jZW5kaWYKLSNlbmRpZiAvLyBTZXJpYWxpemVkUGxhdGZvcm1SZXByZXNlbnRh
dGlvbk1hY19oCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9tYWMvU2VyaWFs
aXplZFBsYXRmb3JtUmVwcmVzZW50YXRpb25NYWMubW0gYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9tYWMvU2VyaWFsaXplZFBsYXRmb3JtUmVwcmVzZW50YXRpb25NYWMubW0KZGVsZXRlZCBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDVkNjRlMTEwYjFlM2IyZmVjYWM5MDExZTlmN2JhZjlkMzg4YWJm
ZWEuLjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vbWFjL1NlcmlhbGl6ZWRQbGF0Zm9ybVJlcHJlc2VudGF0aW9uTWFj
Lm1tCisrKyAvZGV2L251bGwKQEAgLTEsMjQxICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMp
IDIwMTQsIDIwMTUgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgotICoKLSAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zCi0gKiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9m
IHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4K
LSAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUg
YWJvdmUgY29weXJpZ2h0Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFu
ZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoK
LSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRS
SUJVVE9SUyBgYEFTIElTJycKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogVEhFIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJ
VFMgQ09OVFJJQlVUT1JTCi0gKiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YKLSAqIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0j
aW5jbHVkZSAiY29uZmlnLmgiCi0KLSNpZiBFTkFCTEUoVklERU9fVFJBQ0spICYmIEVOQUJMRShE
QVRBQ1VFX1ZBTFVFKQotI2luY2x1ZGUgIlNlcmlhbGl6ZWRQbGF0Zm9ybVJlcHJlc2VudGF0aW9u
TWFjLmgiCi0KLSNpbXBvcnQgIkpTRE9NQ29udmVydEJ1ZmZlclNvdXJjZS5oIgotI2ltcG9ydCA8
QVZGb3VuZGF0aW9uL0FWTWV0YWRhdGFJdGVtLmg+Ci0jaW1wb3J0IDxGb3VuZGF0aW9uL05TU3Ry
aW5nLmg+Ci0jaW1wb3J0IDxKYXZhU2NyaXB0Q29yZS9BUElDYXN0Lmg+Ci0jaW1wb3J0IDxKYXZh
U2NyaXB0Q29yZS9BcnJheUJ1ZmZlci5oPgotI2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvSlNBcnJh
eUJ1ZmZlci5oPgotI2ltcG9ydCA8SmF2YVNjcmlwdENvcmUvSlNDb250ZXh0UmVmLmg+Ci0jaW1w
b3J0IDxKYXZhU2NyaXB0Q29yZS9KU09iamVjdFJlZi5oPgotI2ltcG9ydCA8SmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUuaD4KLSNpbXBvcnQgPG9iamMvcnVudGltZS5oPgotI2ltcG9ydCA8
d3RmL3RleHQvQmFzZTY0Lmg+Ci0KLSNpbXBvcnQgPHBhbC9jb2NvYS9BVkZvdW5kYXRpb25Tb2Z0
TGluay5oPgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLSNpZiBKU0NfT0JKQ19BUElfRU5BQkxF
RAotc3RhdGljIEpTVmFsdWUgKmpzVmFsdWVXaXRoRGF0YUluQ29udGV4dChOU0RhdGEgKiwgSlND
b250ZXh0ICopOwotc3RhdGljIEpTVmFsdWUgKmpzVmFsdWVXaXRoQXJyYXlJbkNvbnRleHQoTlNB
cnJheSAqLCBKU0NvbnRleHQgKik7Ci1zdGF0aWMgSlNWYWx1ZSAqanNWYWx1ZVdpdGhEaWN0aW9u
YXJ5SW5Db250ZXh0KE5TRGljdGlvbmFyeSAqLCBKU0NvbnRleHQgKik7Ci1zdGF0aWMgSlNWYWx1
ZSAqanNWYWx1ZVdpdGhBVk1ldGFkYXRhSXRlbUluQ29udGV4dChBVk1ldGFkYXRhSXRlbSAqLCBK
U0NvbnRleHQgKik7Ci1zdGF0aWMgSlNWYWx1ZSAqanNWYWx1ZVdpdGhWYWx1ZUluQ29udGV4dChp
ZCwgSlNDb250ZXh0ICopOwotI2VuZGlmCi0KLVNlcmlhbGl6ZWRQbGF0Zm9ybVJlcHJlc2VudGF0
aW9uTWFjOjpTZXJpYWxpemVkUGxhdGZvcm1SZXByZXNlbnRhdGlvbk1hYyhpZCBuYXRpdmVWYWx1
ZSkKLSAgICA6IFNlcmlhbGl6ZWRQbGF0Zm9ybVJlcHJlc2VudGF0aW9uKCkKLSAgICAsIG1fbmF0
aXZlVmFsdWUobmF0aXZlVmFsdWUpCi17Ci19Ci0KLVNlcmlhbGl6ZWRQbGF0Zm9ybVJlcHJlc2Vu
dGF0aW9uTWFjOjp+U2VyaWFsaXplZFBsYXRmb3JtUmVwcmVzZW50YXRpb25NYWMoKQotewotfQot
Ci1SZWY8U2VyaWFsaXplZFBsYXRmb3JtUmVwcmVzZW50YXRpb24+IFNlcmlhbGl6ZWRQbGF0Zm9y
bVJlcHJlc2VudGF0aW9uTWFjOjpjcmVhdGUoaWQgbmF0aXZlVmFsdWUpCi17Ci0gICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgU2VyaWFsaXplZFBsYXRmb3JtUmVwcmVzZW50YXRpb25NYWMobmF0aXZl
VmFsdWUpKTsKLX0KLQotUmVmUHRyPEFycmF5QnVmZmVyPiBTZXJpYWxpemVkUGxhdGZvcm1SZXBy
ZXNlbnRhdGlvbk1hYzo6ZGF0YSgpIGNvbnN0Ci17Ci0gICAgcmV0dXJuIG51bGxwdHI7Ci19Ci0K
LUpTQzo6SlNWYWx1ZSBTZXJpYWxpemVkUGxhdGZvcm1SZXByZXNlbnRhdGlvbk1hYzo6ZGVzZXJp
YWxpemUoSlNDOjpKU0dsb2JhbE9iamVjdCogbGV4aWNhbEdsb2JhbE9iamVjdCkgY29uc3QKLXsK
LSNpZiBKU0NfT0JKQ19BUElfRU5BQkxFRAotICAgIGlmICghbV9uYXRpdmVWYWx1ZSkKLSAgICAg
ICAgcmV0dXJuIEpTQzo6anNOdWxsKCk7Ci0KLSAgICBKU0dsb2JhbENvbnRleHRSZWYganNHbG9i
YWxDb250ZXh0UmVmID0gdG9HbG9iYWxSZWYobGV4aWNhbEdsb2JhbE9iamVjdCk7Ci0gICAgSlND
b250ZXh0ICpqc0NvbnRleHQgPSBbSlNDb250ZXh0IGNvbnRleHRXaXRoSlNHbG9iYWxDb250ZXh0
UmVmOmpzR2xvYmFsQ29udGV4dFJlZl07Ci0gICAgSlNWYWx1ZSAqc2VyaWFsaXplZFZhbHVlID0g
anNWYWx1ZVdpdGhWYWx1ZUluQ29udGV4dChtX25hdGl2ZVZhbHVlLmdldCgpLCBqc0NvbnRleHQp
OwotCi0gICAgcmV0dXJuIHRvSlMobGV4aWNhbEdsb2JhbE9iamVjdCwgW3NlcmlhbGl6ZWRWYWx1
ZSBKU1ZhbHVlUmVmXSk7Ci0jZWxzZQotICAgIFVOVVNFRF9QQVJBTShsZXhpY2FsR2xvYmFsT2Jq
ZWN0KTsKLSAgICByZXR1cm4gSlNDOjpqc051bGwoKTsKLSNlbmRpZgotfQotCi1ib29sIFNlcmlh
bGl6ZWRQbGF0Zm9ybVJlcHJlc2VudGF0aW9uTWFjOjppc0VxdWFsKGNvbnN0IFNlcmlhbGl6ZWRQ
bGF0Zm9ybVJlcHJlc2VudGF0aW9uJiBvdGhlcikgY29uc3QKLXsKLSAgICBpZiAob3RoZXIucGxh
dGZvcm1UeXBlKCkgIT0gU2VyaWFsaXplZFBsYXRmb3JtUmVwcmVzZW50YXRpb246Ok9iakMpCi0g
ICAgICAgIHJldHVybiBmYWxzZTsKLQotICAgIGNvbnN0IFNlcmlhbGl6ZWRQbGF0Zm9ybVJlcHJl
c2VudGF0aW9uTWFjKiBvdGhlck9iakMgPSB0b1NlcmlhbGl6ZWRQbGF0Zm9ybVJlcHJlc2VudGF0
aW9uTWFjKCZvdGhlcik7Ci0KLSAgICBpZiAoIW1fbmF0aXZlVmFsdWUgfHwgIW90aGVyT2JqQy0+
bmF0aXZlVmFsdWUoKSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwotCi0gICAgcmV0dXJuIFttX25h
dGl2ZVZhbHVlLmdldCgpIGlzRXF1YWw6b3RoZXJPYmpDLT5uYXRpdmVWYWx1ZSgpXTsKLX0KLQot
U2VyaWFsaXplZFBsYXRmb3JtUmVwcmVzZW50YXRpb25NYWMqIHRvU2VyaWFsaXplZFBsYXRmb3Jt
UmVwcmVzZW50YXRpb25NYWMoU2VyaWFsaXplZFBsYXRmb3JtUmVwcmVzZW50YXRpb24qIHJlcCkK
LXsKLSAgICByZXR1cm4gY29uc3RfY2FzdDxTZXJpYWxpemVkUGxhdGZvcm1SZXByZXNlbnRhdGlv
bk1hYyo+KHRvU2VyaWFsaXplZFBsYXRmb3JtUmVwcmVzZW50YXRpb25NYWMoY29uc3RfY2FzdDxj
b25zdCBTZXJpYWxpemVkUGxhdGZvcm1SZXByZXNlbnRhdGlvbio+KHJlcCkpKTsKLX0KLQotY29u
c3QgU2VyaWFsaXplZFBsYXRmb3JtUmVwcmVzZW50YXRpb25NYWMqIHRvU2VyaWFsaXplZFBsYXRm
b3JtUmVwcmVzZW50YXRpb25NYWMoY29uc3QgU2VyaWFsaXplZFBsYXRmb3JtUmVwcmVzZW50YXRp
b24qIHJlcCkKLXsKLSAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihyZXAtPnBs
YXRmb3JtVHlwZSgpID09IFNlcmlhbGl6ZWRQbGF0Zm9ybVJlcHJlc2VudGF0aW9uOjpPYmpDKTsK
LSAgICByZXR1cm4gc3RhdGljX2Nhc3Q8Y29uc3QgU2VyaWFsaXplZFBsYXRmb3JtUmVwcmVzZW50
YXRpb25NYWMqPihyZXApOwotfQotCi0jaWYgSlNDX09CSkNfQVBJX0VOQUJMRUQKLXN0YXRpYyBK
U1ZhbHVlICpqc1ZhbHVlV2l0aFZhbHVlSW5Db250ZXh0KGlkIHZhbHVlLCBKU0NvbnRleHQgKmNv
bnRleHQpCi17Ci0gICAgaWYgKFt2YWx1ZSBpc0tpbmRPZkNsYXNzOltOU1N0cmluZyBjbGFzc11d
IHx8IFt2YWx1ZSBpc0tpbmRPZkNsYXNzOltOU051bWJlciBjbGFzc11dKQotICAgICAgICByZXR1
cm4gW0pTVmFsdWUgdmFsdWVXaXRoT2JqZWN0OnZhbHVlIGluQ29udGV4dDpjb250ZXh0XTsKLQot
ICAgIGlmIChbdmFsdWUgaXNLaW5kT2ZDbGFzczpbTlNMb2NhbGUgY2xhc3NdXSkKLSAgICAgICAg
cmV0dXJuIFtKU1ZhbHVlIHZhbHVlV2l0aE9iamVjdDpbdmFsdWUgbG9jYWxlSWRlbnRpZmllcl0g
aW5Db250ZXh0OmNvbnRleHRdOwotCi0gICAgaWYgKFt2YWx1ZSBpc0tpbmRPZkNsYXNzOltOU0Rp
Y3Rpb25hcnkgY2xhc3NdXSkKLSAgICAgICAgcmV0dXJuIGpzVmFsdWVXaXRoRGljdGlvbmFyeUlu
Q29udGV4dCh2YWx1ZSwgY29udGV4dCk7Ci0KLSAgICBpZiAoW3ZhbHVlIGlzS2luZE9mQ2xhc3M6
W05TQXJyYXkgY2xhc3NdXSkKLSAgICAgICAgcmV0dXJuIGpzVmFsdWVXaXRoQXJyYXlJbkNvbnRl
eHQodmFsdWUsIGNvbnRleHQpOwotCi0gICAgaWYgKFt2YWx1ZSBpc0tpbmRPZkNsYXNzOltOU0Rh
dGEgY2xhc3NdXSkKLSAgICAgICAgcmV0dXJuIGpzVmFsdWVXaXRoRGF0YUluQ29udGV4dCh2YWx1
ZSwgY29udGV4dCk7Ci0KLSAgICBpZiAoW3ZhbHVlIGlzS2luZE9mQ2xhc3M6UEFMOjpnZXRBVk1l
dGFkYXRhSXRlbUNsYXNzKCldKQotICAgICAgICByZXR1cm4ganNWYWx1ZVdpdGhBVk1ldGFkYXRh
SXRlbUluQ29udGV4dCh2YWx1ZSwgY29udGV4dCk7Ci0KLSAgICByZXR1cm4gbmlsOwotfQotCi1z
dGF0aWMgSlNWYWx1ZSAqanNWYWx1ZVdpdGhEYXRhSW5Db250ZXh0KE5TRGF0YSAqZGF0YSwgSlND
b250ZXh0ICpjb250ZXh0KQotewotICAgIGF1dG8gZGF0YUFycmF5ID0gQXJyYXlCdWZmZXI6OnRy
eUNyZWF0ZShbZGF0YSBieXRlc10sIFtkYXRhIGxlbmd0aF0pOwotCi0gICAgYXV0byogbGV4aWNh
bEdsb2JhbE9iamVjdCA9IHRvSlMoW2NvbnRleHQgSlNHbG9iYWxDb250ZXh0UmVmXSk7Ci0gICAg
SlNDOjpKU1ZhbHVlIGFycmF5ID0gdG9KUyhsZXhpY2FsR2xvYmFsT2JqZWN0LCBKU0M6OmpzQ2Fz
dDxKU0RPTUdsb2JhbE9iamVjdCo+KGxleGljYWxHbG9iYWxPYmplY3QpLCBkYXRhQXJyYXkuZ2V0
KCkpOwotCi0gICAgcmV0dXJuIFtKU1ZhbHVlIHZhbHVlV2l0aEpTVmFsdWVSZWY6dG9SZWYobGV4
aWNhbEdsb2JhbE9iamVjdCwgYXJyYXkpIGluQ29udGV4dDpjb250ZXh0XTsKLX0KLQotc3RhdGlj
IEpTVmFsdWUgKmpzVmFsdWVXaXRoQXJyYXlJbkNvbnRleHQoTlNBcnJheSAqYXJyYXksIEpTQ29u
dGV4dCAqY29udGV4dCkKLXsKLSAgICBKU1ZhbHVlUmVmIGV4Y2VwdGlvbiA9IDA7Ci0gICAgSlNW
YWx1ZSAqcmVzdWx0ID0gW0pTVmFsdWUgdmFsdWVXaXRoTmV3QXJyYXlJbkNvbnRleHQ6Y29udGV4
dF07Ci0gICAgSlNPYmplY3RSZWYgcmVzdWx0T2JqZWN0ID0gSlNWYWx1ZVRvT2JqZWN0KFtjb250
ZXh0IEpTR2xvYmFsQ29udGV4dFJlZl0sIFtyZXN1bHQgSlNWYWx1ZVJlZl0sICZleGNlcHRpb24p
OwotICAgIGlmIChleGNlcHRpb24pCi0gICAgICAgIHJldHVybiBbSlNWYWx1ZSB2YWx1ZVdpdGhV
bmRlZmluZWRJbkNvbnRleHQ6Y29udGV4dF07Ci0KLSAgICBOU1VJbnRlZ2VyIGNvdW50ID0gW2Fy
cmF5IGNvdW50XTsKLSAgICBmb3IgKE5TVUludGVnZXIgaSA9IDA7IGkgPCBjb3VudDsgKytpKSB7
Ci0gICAgICAgIEpTVmFsdWUgKnZhbHVlID0ganNWYWx1ZVdpdGhWYWx1ZUluQ29udGV4dChbYXJy
YXkgb2JqZWN0QXRJbmRleDppXSwgY29udGV4dCk7Ci0gICAgICAgIGlmICghdmFsdWUpCi0gICAg
ICAgICAgICBjb250aW51ZTsKLQotICAgICAgICBKU09iamVjdFNldFByb3BlcnR5QXRJbmRleChb
Y29udGV4dCBKU0dsb2JhbENvbnRleHRSZWZdLCByZXN1bHRPYmplY3QsICh1bnNpZ25lZClpLCBb
dmFsdWUgSlNWYWx1ZVJlZl0sICZleGNlcHRpb24pOwotICAgICAgICBpZiAoZXhjZXB0aW9uKQot
ICAgICAgICAgICAgY29udGludWU7Ci0gICAgfQotCi0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQot
c3RhdGljIEpTVmFsdWUgKmpzVmFsdWVXaXRoRGljdGlvbmFyeUluQ29udGV4dChOU0RpY3Rpb25h
cnkgKmRpY3Rpb25hcnksIEpTQ29udGV4dCAqY29udGV4dCkKLXsKLSAgICBKU1ZhbHVlUmVmIGV4
Y2VwdGlvbiA9IDA7Ci0gICAgSlNWYWx1ZSAqcmVzdWx0ID0gW0pTVmFsdWUgdmFsdWVXaXRoTmV3
T2JqZWN0SW5Db250ZXh0OmNvbnRleHRdOwotICAgIEpTT2JqZWN0UmVmIHJlc3VsdE9iamVjdCA9
IEpTVmFsdWVUb09iamVjdChbY29udGV4dCBKU0dsb2JhbENvbnRleHRSZWZdLCBbcmVzdWx0IEpT
VmFsdWVSZWZdLCAmZXhjZXB0aW9uKTsKLSAgICBpZiAoZXhjZXB0aW9uKQotICAgICAgICByZXR1
cm4gW0pTVmFsdWUgdmFsdWVXaXRoVW5kZWZpbmVkSW5Db250ZXh0OmNvbnRleHRdOwotCi0gICAg
Zm9yIChpZCBrZXkgaW4gW2RpY3Rpb25hcnkga2V5RW51bWVyYXRvcl0pIHsKLSAgICAgICAgaWYg
KCFba2V5IGlzS2luZE9mQ2xhc3M6W05TU3RyaW5nIGNsYXNzXV0pCi0gICAgICAgICAgICBjb250
aW51ZTsKLQotICAgICAgICBKU1ZhbHVlICp2YWx1ZSA9IGpzVmFsdWVXaXRoVmFsdWVJbkNvbnRl
eHQoW2RpY3Rpb25hcnkgb2JqZWN0Rm9yS2V5OmtleV0sIGNvbnRleHQpOwotICAgICAgICBpZiAo
IXZhbHVlKQotICAgICAgICAgICAgY29udGludWU7Ci0KLSAgICAgICAgYXV0byBuYW1lID0gT3Bh
cXVlSlNTdHJpbmc6OnRyeUNyZWF0ZShrZXkpOwotICAgICAgICBKU09iamVjdFNldFByb3BlcnR5
KFtjb250ZXh0IEpTR2xvYmFsQ29udGV4dFJlZl0sIHJlc3VsdE9iamVjdCwgbmFtZS5nZXQoKSwg
W3ZhbHVlIEpTVmFsdWVSZWZdLCAwLCAmZXhjZXB0aW9uKTsKLSAgICAgICAgaWYgKGV4Y2VwdGlv
bikKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgIH0KLQotICAgIHJldHVybiByZXN1bHQ7Ci19
Ci0KLXN0YXRpYyBKU1ZhbHVlICpqc1ZhbHVlV2l0aEFWTWV0YWRhdGFJdGVtSW5Db250ZXh0KEFW
TWV0YWRhdGFJdGVtICppdGVtLCBKU0NvbnRleHQgKmNvbnRleHQpCi17Ci0gICAgTlNNdXRhYmxl
RGljdGlvbmFyeSAqZGljdGlvbmFyeSA9IFtOU011dGFibGVEaWN0aW9uYXJ5IGRpY3Rpb25hcnld
OwotCi0gICAgTlNEaWN0aW9uYXJ5ICpleHRyYXMgPSBbaXRlbSBleHRyYUF0dHJpYnV0ZXNdOwot
ICAgIGZvciAoaWQga2V5IGluIFtleHRyYXMga2V5RW51bWVyYXRvcl0pIHsKLSAgICAgICAgaWYg
KCFba2V5IGlzS2luZE9mQ2xhc3M6W05TU3RyaW5nIGNsYXNzXV0pCi0gICAgICAgICAgICBjb250
aW51ZTsKLSAgICAgICAgaWQgdmFsdWUgPSBbZXh0cmFzIG9iamVjdEZvcktleTprZXldOwotICAg
ICAgICBOU1N0cmluZyAqa2V5U3RyaW5nID0ga2V5OwotCi0gICAgICAgIGlmIChba2V5IGlzRXF1
YWxUb1N0cmluZzpAIk1JTUV0eXBlIl0pCi0gICAgICAgICAgICBrZXlTdHJpbmcgPSBAInR5cGUi
OwotICAgICAgICBlbHNlIGlmIChba2V5IGlzRXF1YWxUb1N0cmluZzpAImRhdGFUeXBlTmFtZXNw
YWNlIl0gfHwgW2tleSBpc0VxdWFsVG9TdHJpbmc6QCJwaWN0dXJlVHlwZSJdKQotICAgICAgICAg
ICAgY29udGludWU7Ci0gICAgICAgIGVsc2UgaWYgKFtrZXkgaXNFcXVhbFRvU3RyaW5nOkAiZGF0
YVR5cGUiXSkgewotICAgICAgICAgICAgaWQgZGF0YVR5cGVOYW1lc3BhY2UgPSBbZXh0cmFzIG9i
amVjdEZvcktleTpAImRhdGFUeXBlTmFtZXNwYWNlIl07Ci0gICAgICAgICAgICBpZiAoIWRhdGFU
eXBlTmFtZXNwYWNlIHx8ICFbZGF0YVR5cGVOYW1lc3BhY2UgaXNLaW5kT2ZDbGFzczpbTlNTdHJp
bmcgY2xhc3NdXSB8fCAhW2RhdGFUeXBlTmFtZXNwYWNlIGlzRXF1YWxUb1N0cmluZzpAIm9yZy5p
YW5hLm1lZGlhLXR5cGUiXSkKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAg
IGtleVN0cmluZyA9IEAidHlwZSI7Ci0gICAgICAgIH0gZWxzZSBpZiAoW3ZhbHVlIGlzS2luZE9m
Q2xhc3M6W05TU3RyaW5nIGNsYXNzXV0pIHsKLSAgICAgICAgICAgIGlmICghW3ZhbHVlIGxlbmd0
aF0pCi0gICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAgICBrZXlTdHJpbmcgPSBb
a2V5IGxvd2VyY2FzZVN0cmluZ107Ci0gICAgICAgIH0KLQotICAgICAgICBbZGljdGlvbmFyeSBz
ZXRPYmplY3Q6dmFsdWUgZm9yS2V5OmtleVN0cmluZ107Ci0gICAgfQotCi0gICAgaWYgKGl0ZW0u
a2V5KQotICAgICAgICBbZGljdGlvbmFyeSBzZXRPYmplY3Q6aXRlbS5rZXkgZm9yS2V5OkAia2V5
Il07Ci0KLSAgICBpZiAoaXRlbS5sb2NhbGUpCi0gICAgICAgIFtkaWN0aW9uYXJ5IHNldE9iamVj
dDppdGVtLmxvY2FsZSBmb3JLZXk6QCJsb2NhbGUiXTsKLQotICAgIGlmIChpdGVtLnZhbHVlKQot
ICAgICAgICBbZGljdGlvbmFyeSBzZXRPYmplY3Q6aXRlbS52YWx1ZSBmb3JLZXk6QCJkYXRhIl07
Ci0KLSAgICByZXR1cm4ganNWYWx1ZVdpdGhEaWN0aW9uYXJ5SW5Db250ZXh0KGRpY3Rpb25hcnks
IGNvbnRleHQpOwotfQotI2VuZGlmCi0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlVGV4dFRy
YWNrUHJveHkuY3BwIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZVRleHRU
cmFja1Byb3h5LmNwcAppbmRleCA4MGY3OGY3YjNiZTZkNTNmMjg1OWU4YzZlODUzZjI1OGFhZWM2
YmNkLi5iNzZkYzliMGQ0NmY4NmI3Nzk1N2QzYjNiNzg1NDU5YzM5NDliMmE2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L0dQVVByb2Nlc3MvbWVkaWEvUmVtb3RlVGV4dFRyYWNrUHJveHkuY3Bw
CisrKyBiL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9SZW1vdGVUZXh0VHJhY2tQcm94
eS5jcHAKQEAgLTEwMiwxNyArMTAyLDE3IEBAIHZvaWQgUmVtb3RlVGV4dFRyYWNrUHJveHk6OmFk
ZERhdGFDdWUoY29uc3QgTWVkaWFUaW1lJiwgY29uc3QgTWVkaWFUaW1lJiwgY29uc3QKIH0KIAog
I2lmIEVOQUJMRShEQVRBQ1VFX1ZBTFVFKQotdm9pZCBSZW1vdGVUZXh0VHJhY2tQcm94eTo6YWRk
RGF0YUN1ZShjb25zdCBNZWRpYVRpbWUmLCBjb25zdCBNZWRpYVRpbWUmLCBSZWY8U2VyaWFsaXpl
ZFBsYXRmb3JtUmVwcmVzZW50YXRpb24+JiYsIGNvbnN0IFN0cmluZyYpCit2b2lkIFJlbW90ZVRl
eHRUcmFja1Byb3h5OjphZGREYXRhQ3VlKGNvbnN0IE1lZGlhVGltZSYsIGNvbnN0IE1lZGlhVGlt
ZSYsIFJlZjxTZXJpYWxpemVkUGxhdGZvcm1EYXRhQ3VlPiYmLCBjb25zdCBTdHJpbmcmKQogewog
ICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKLXZvaWQgUmVtb3RlVGV4dFRyYWNrUHJveHk6OnVw
ZGF0ZURhdGFDdWUoY29uc3QgTWVkaWFUaW1lJiwgY29uc3QgTWVkaWFUaW1lJiwgU2VyaWFsaXpl
ZFBsYXRmb3JtUmVwcmVzZW50YXRpb24mKQordm9pZCBSZW1vdGVUZXh0VHJhY2tQcm94eTo6dXBk
YXRlRGF0YUN1ZShjb25zdCBNZWRpYVRpbWUmLCBjb25zdCBNZWRpYVRpbWUmLCBTZXJpYWxpemVk
UGxhdGZvcm1EYXRhQ3VlJikKIHsKICAgICBub3RJbXBsZW1lbnRlZCgpOwogfQogCi12b2lkIFJl
bW90ZVRleHRUcmFja1Byb3h5OjpyZW1vdmVEYXRhQ3VlKGNvbnN0IE1lZGlhVGltZSYsIGNvbnN0
IE1lZGlhVGltZSYsIFNlcmlhbGl6ZWRQbGF0Zm9ybVJlcHJlc2VudGF0aW9uJikKK3ZvaWQgUmVt
b3RlVGV4dFRyYWNrUHJveHk6OnJlbW92ZURhdGFDdWUoY29uc3QgTWVkaWFUaW1lJiwgY29uc3Qg
TWVkaWFUaW1lJiwgU2VyaWFsaXplZFBsYXRmb3JtRGF0YUN1ZSYpCiB7CiAgICAgbm90SW1wbGVt
ZW50ZWQoKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvR1BVUHJvY2Vzcy9tZWRpYS9S
ZW1vdGVUZXh0VHJhY2tQcm94eS5oIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1Jl
bW90ZVRleHRUcmFja1Byb3h5LmgKaW5kZXggY2Y0YTY2YWVjNjU1ZThiN2VlOTU3OTkxODY5YzQ5
NDk5MzIzODU2Yi4uZTI4NmVjNDg5NDY3M2E0ZjJiNTYxZDIzOGIwNmY2Mjc1MzZjZmU0NSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZVRleHRUcmFja1By
b3h5LmgKKysrIGIvU291cmNlL1dlYktpdC9HUFVQcm9jZXNzL21lZGlhL1JlbW90ZVRleHRUcmFj
a1Byb3h5LmgKQEAgLTU2LDkgKzU2LDkgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQgYWRk
RGF0YUN1ZShjb25zdCBNZWRpYVRpbWUmIHN0YXJ0LCBjb25zdCBNZWRpYVRpbWUmIGVuZCwgY29u
c3Qgdm9pZCosIHVuc2lnbmVkKTsKIAogI2lmIEVOQUJMRShEQVRBQ1VFX1ZBTFVFKQotICAgIHZp
cnR1YWwgdm9pZCBhZGREYXRhQ3VlKGNvbnN0IE1lZGlhVGltZSYgc3RhcnQsIGNvbnN0IE1lZGlh
VGltZSYgZW5kLCBSZWY8U2VyaWFsaXplZFBsYXRmb3JtUmVwcmVzZW50YXRpb24+JiYsIGNvbnN0
IFN0cmluZyYpOwotICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVEYXRhQ3VlKGNvbnN0IE1lZGlhVGlt
ZSYgc3RhcnQsIGNvbnN0IE1lZGlhVGltZSYgZW5kLCBTZXJpYWxpemVkUGxhdGZvcm1SZXByZXNl
bnRhdGlvbiYpOwotICAgIHZpcnR1YWwgdm9pZCByZW1vdmVEYXRhQ3VlKGNvbnN0IE1lZGlhVGlt
ZSYgc3RhcnQsIGNvbnN0IE1lZGlhVGltZSYgZW5kLCBTZXJpYWxpemVkUGxhdGZvcm1SZXByZXNl
bnRhdGlvbiYpOworICAgIHZpcnR1YWwgdm9pZCBhZGREYXRhQ3VlKGNvbnN0IE1lZGlhVGltZSYg
c3RhcnQsIGNvbnN0IE1lZGlhVGltZSYgZW5kLCBSZWY8U2VyaWFsaXplZFBsYXRmb3JtRGF0YUN1
ZT4mJiwgY29uc3QgU3RyaW5nJik7CisgICAgdmlydHVhbCB2b2lkIHVwZGF0ZURhdGFDdWUoY29u
c3QgTWVkaWFUaW1lJiBzdGFydCwgY29uc3QgTWVkaWFUaW1lJiBlbmQsIFNlcmlhbGl6ZWRQbGF0
Zm9ybURhdGFDdWUmKTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlRGF0YUN1ZShjb25zdCBNZWRp
YVRpbWUmIHN0YXJ0LCBjb25zdCBNZWRpYVRpbWUmIGVuZCwgU2VyaWFsaXplZFBsYXRmb3JtRGF0
YUN1ZSYpOwogI2VuZGlmCiAKICAgICB2aXJ0dWFsIHZvaWQgYWRkR2VuZXJpY0N1ZShHZW5lcmlj
Q3VlRGF0YSYpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL0dQVS9tZWRp
YS9NZWRpYVBsYXllclByaXZhdGVSZW1vdGUubWVzc2FnZXMuaW4gYi9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5tZXNzYWdlcy5pbgpp
bmRleCBmNDU5OTgwMTBlOTM3NDEzNTg4MTI0NTQwNzZlNTFkZmE2YzE5N2VmLi5jNDA0ZGM2NzQw
NzM3YTM2OGQ0ZmE2OTQyYThlOTYwOTc3ODQ2MDdiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0
L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJpdmF0ZVJlbW90ZS5tZXNzYWdlcy5p
bgorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BVL21lZGlhL01lZGlhUGxheWVyUHJp
dmF0ZVJlbW90ZS5tZXNzYWdlcy5pbgpAQCAtNTEsOSArNTEsOSBAQCBtZXNzYWdlcyAtPiBNZWRp
YVBsYXllclByaXZhdGVSZW1vdGUgTm90UmVmQ291bnRlZCB7CiAgICAgUGFyc2VXZWJWVFRDdWVE
YXRhU3RydWN0KFdlYktpdDo6VHJhY2tQcml2YXRlUmVtb3RlSWRlbnRpZmllciB0cmFja0lELCBX
ZWJDb3JlOjpJU09XZWJWVFRDdWUgY3VlRGF0YSkKIAogICAgICMjIEFkZERhdGFDdWUoTWVkaWFU
aW1lIHN0YXJ0LCBNZWRpYVRpbWUgZW5kLCBJUEM6OkRhdGFSZWZlcmVuY2UgZGF0YSkKLSAgICAj
IyBBZGREYXRhQ3VlKE1lZGlhVGltZSBzdGFydCwgTWVkaWFUaW1lIGVuZCwgV2ViQ29yZTo6U2Vy
aWFsaXplZFBsYXRmb3JtUmVwcmVzZW50YXRpb24gZGF0YSwgU3RyaW5nIHR5cGUpCi0gICAgIyMg
VXBkYXRlRGF0YUN1ZShNZWRpYVRpbWUgc3RhcnQsIE1lZGlhVGltZSBlbmQsIFdlYkNvcmU6OlNl
cmlhbGl6ZWRQbGF0Zm9ybVJlcHJlc2VudGF0aW9uIGRhdGEpCi0gICAgIyMgUmVtb3ZlRGF0YUN1
ZShNZWRpYVRpbWUgc3RhcnQsIE1lZGlhVGltZSBlbmQsIFdlYkNvcmU6OlNlcmlhbGl6ZWRQbGF0
Zm9ybVJlcHJlc2VudGF0aW9uIGRhdGEpCisgICAgIyMgQWRkRGF0YUN1ZShNZWRpYVRpbWUgc3Rh
cnQsIE1lZGlhVGltZSBlbmQsIFdlYkNvcmU6OlNlcmlhbGl6ZWRQbGF0Zm9ybURhdGFDdWUgZGF0
YSwgU3RyaW5nIHR5cGUpCisgICAgIyMgVXBkYXRlRGF0YUN1ZShNZWRpYVRpbWUgc3RhcnQsIE1l
ZGlhVGltZSBlbmQsIFdlYkNvcmU6OlNlcmlhbGl6ZWRQbGF0Zm9ybURhdGFDdWUgZGF0YSkKKyAg
ICAjIyBSZW1vdmVEYXRhQ3VlKE1lZGlhVGltZSBzdGFydCwgTWVkaWFUaW1lIGVuZCwgV2ViQ29y
ZTo6U2VyaWFsaXplZFBsYXRmb3JtRGF0YUN1ZSBkYXRhKQogCiAgICAgIyMgQWRkR2VuZXJpY0N1
ZShXZWJDb3JlOjpHZW5lcmljQ3VlRGF0YSBjdWUpCiAgICAgIyMgVXBkYXRlR2VuZXJpY0N1ZShX
ZWJDb3JlOjpHZW5lcmljQ3VlRGF0YSBjdWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL21lZGlhL1RleHRUcmFja1ByaXZhdGVSZW1vdGUuY3BwIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL0dQVS9tZWRpYS9UZXh0VHJhY2tQcml2YXRlUmVtb3RlLmNwcAppbmRl
eCBiMDAwNDBmNDVmNjc2ZTBkMGNhNDYxZGJjZDU5OTM3YzdlZjc3YTc4Li41Yzc4NzY0ZTBjMTc0
MTBjYjIzNzY4YTQ1MTViZDQyMDQ1ODM0M2YxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dl
YlByb2Nlc3MvR1BVL21lZGlhL1RleHRUcmFja1ByaXZhdGVSZW1vdGUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9HUFUvbWVkaWEvVGV4dFRyYWNrUHJpdmF0ZVJlbW90ZS5jcHAK
QEAgLTk0LDE3ICs5NCwxNyBAQCB2b2lkIFRleHRUcmFja1ByaXZhdGVSZW1vdGU6OmFkZERhdGFD
dWUoY29uc3QgTWVkaWFUaW1lJiBzdGFydCwgY29uc3QgTWVkaWFUaW1lJgogfQogCiAjaWYgRU5B
QkxFKERBVEFDVUVfVkFMVUUpCi12b2lkIFRleHRUcmFja1ByaXZhdGVSZW1vdGU6OmFkZERhdGFD
dWUoY29uc3QgTWVkaWFUaW1lJiBzdGFydCwgY29uc3QgTWVkaWFUaW1lJiBlbmQsIFJlZjxTZXJp
YWxpemVkUGxhdGZvcm1SZXByZXNlbnRhdGlvbj4mJiwgY29uc3QgU3RyaW5nJikKK3ZvaWQgVGV4
dFRyYWNrUHJpdmF0ZVJlbW90ZTo6YWRkRGF0YUN1ZShjb25zdCBNZWRpYVRpbWUmIHN0YXJ0LCBj
b25zdCBNZWRpYVRpbWUmIGVuZCwgUmVmPFNlcmlhbGl6ZWRQbGF0Zm9ybURhdGFDdWU+JiYsIGNv
bnN0IFN0cmluZyYpCiB7CiAgICAgbm90SW1wbGVtZW50ZWQoKTsKIH0KIAotdm9pZCBUZXh0VHJh
Y2tQcml2YXRlUmVtb3RlOjp1cGRhdGVEYXRhQ3VlKGNvbnN0IE1lZGlhVGltZSYgc3RhcnQsIGNv
bnN0IE1lZGlhVGltZSYgZW5kLCBTZXJpYWxpemVkUGxhdGZvcm1SZXByZXNlbnRhdGlvbiYpCit2
b2lkIFRleHRUcmFja1ByaXZhdGVSZW1vdGU6OnVwZGF0ZURhdGFDdWUoY29uc3QgTWVkaWFUaW1l
JiBzdGFydCwgY29uc3QgTWVkaWFUaW1lJiBlbmQsIFNlcmlhbGl6ZWRQbGF0Zm9ybURhdGFDdWUm
KQogewogICAgIG5vdEltcGxlbWVudGVkKCk7CiB9CiAKLXZvaWQgVGV4dFRyYWNrUHJpdmF0ZVJl
bW90ZTo6cmVtb3ZlRGF0YUN1ZShjb25zdCBNZWRpYVRpbWUmIHN0YXJ0LCBjb25zdCBNZWRpYVRp
bWUmIGVuZCwgU2VyaWFsaXplZFBsYXRmb3JtUmVwcmVzZW50YXRpb24mKQordm9pZCBUZXh0VHJh
Y2tQcml2YXRlUmVtb3RlOjpyZW1vdmVEYXRhQ3VlKGNvbnN0IE1lZGlhVGltZSYgc3RhcnQsIGNv
bnN0IE1lZGlhVGltZSYgZW5kLCBTZXJpYWxpemVkUGxhdGZvcm1EYXRhQ3VlJikKIHsKICAgICBu
b3RJbXBsZW1lbnRlZCgpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L0dQVS9tZWRpYS9UZXh0VHJhY2tQcml2YXRlUmVtb3RlLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL21lZGlhL1RleHRUcmFja1ByaXZhdGVSZW1vdGUuaAppbmRleCA2Y2YzOTc1ZmVj
NmQ4ZTNhNTgzYmFmYWQzN2ViOTczYTRiNzBmZTczLi42YWM5YzY5ZDAxOTIwZDljOTQxMzJiODgz
ZTU2ZjY1YmQ4ZWMzY2NjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvR1BV
L21lZGlhL1RleHRUcmFja1ByaXZhdGVSZW1vdGUuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlBy
b2Nlc3MvR1BVL21lZGlhL1RleHRUcmFja1ByaXZhdGVSZW1vdGUuaApAQCAtNDcsOSArNDcsOSBA
QCBwdWJsaWM6CiAgICAgdm9pZCBhZGREYXRhQ3VlKGNvbnN0IE1lZGlhVGltZSYgc3RhcnQsIGNv
bnN0IE1lZGlhVGltZSYgZW5kLCBjb25zdCB2b2lkKiwgdW5zaWduZWQpOwogCiAjaWYgRU5BQkxF
KERBVEFDVUVfVkFMVUUpCi0gICAgdm9pZCBhZGREYXRhQ3VlKGNvbnN0IE1lZGlhVGltZSYgc3Rh
cnQsIGNvbnN0IE1lZGlhVGltZSYgZW5kLCBSZWY8U2VyaWFsaXplZFBsYXRmb3JtUmVwcmVzZW50
YXRpb24+JiYsIGNvbnN0IFN0cmluZyYpOwotICAgIHZvaWQgdXBkYXRlRGF0YUN1ZShjb25zdCBN
ZWRpYVRpbWUmIHN0YXJ0LCBjb25zdCBNZWRpYVRpbWUmIGVuZCwgU2VyaWFsaXplZFBsYXRmb3Jt
UmVwcmVzZW50YXRpb24mKTsKLSAgICB2b2lkIHJlbW92ZURhdGFDdWUoY29uc3QgTWVkaWFUaW1l
JiBzdGFydCwgY29uc3QgTWVkaWFUaW1lJiBlbmQsIFNlcmlhbGl6ZWRQbGF0Zm9ybVJlcHJlc2Vu
dGF0aW9uJik7CisgICAgdm9pZCBhZGREYXRhQ3VlKGNvbnN0IE1lZGlhVGltZSYgc3RhcnQsIGNv
bnN0IE1lZGlhVGltZSYgZW5kLCBSZWY8U2VyaWFsaXplZFBsYXRmb3JtRGF0YUN1ZT4mJiwgY29u
c3QgU3RyaW5nJik7CisgICAgdm9pZCB1cGRhdGVEYXRhQ3VlKGNvbnN0IE1lZGlhVGltZSYgc3Rh
cnQsIGNvbnN0IE1lZGlhVGltZSYgZW5kLCBTZXJpYWxpemVkUGxhdGZvcm1EYXRhQ3VlJik7Cisg
ICAgdm9pZCByZW1vdmVEYXRhQ3VlKGNvbnN0IE1lZGlhVGltZSYgc3RhcnQsIGNvbnN0IE1lZGlh
VGltZSYgZW5kLCBTZXJpYWxpemVkUGxhdGZvcm1EYXRhQ3VlJik7CiAjZW5kaWYKIAogICAgIHZv
aWQgYWRkR2VuZXJpY0N1ZShHZW5lcmljQ3VlRGF0YSYpOwo=
</data>

          </attachment>
      

    </bug>

</bugzilla>