<?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>60312</bug_id>
          
          <creation_ts>2011-05-05 16:35:41 -0700</creation_ts>
          <short_desc>Huge monster change for &lt;track&gt;</short_desc>
          <delta_ts>2011-10-19 14:46:36 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Media</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>INVALID</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>43668</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Anna Cavender">annacc</reporter>
          <assigned_to name="Anna Cavender">annacc</assigned_to>
          <cc>eric.carlson</cc>
    
    <cc>jer.noble</cc>
    
    <cc>mike</cc>
    
    <cc>philipj</cc>
    
    <cc>vrk</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>399165</commentid>
    <comment_count>0</comment_count>
    <who name="Anna Cavender">annacc</who>
    <bug_when>2011-05-05 16:35:41 -0700</bug_when>
    <thetext>This bug is intended to be a home for a monster &lt;track&gt; change which will NEVER be up for review and NEVER be committed.

To be used for reference for reviewers reviewing smaller patches in case they need some context.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>399174</commentid>
    <comment_count>1</comment_count>
      <attachid>92496</attachid>
    <who name="Anna Cavender">annacc</who>
    <bug_when>2011-05-05 16:45:11 -0700</bug_when>
    <thetext>Created attachment 92496
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>399182</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-05-05 16:50:25 -0700</bug_when>
    <thetext>Attachment 92496 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/CMakeLists.txt&apos;, u&apos;Source/W...&quot; exit_code: 1

Last 3072 characters of output:
oved when the prior &quot;if&quot; concludes with a return, break, continue or goto statement.  [readability/control_flow] [4]
Source/WebCore/html/TextTrack.cpp:112:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/html/TextTrack.cpp:113:  Weird number of spaces at line-start.  Are you using a 4-space indent?  [whitespace/indent] [3]
Source/WebCore/bindings/v8/custom/V8TextTrackCueCustom.cpp:51:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
Source/WebCore/html/HTMLTrackElement.h:80:  Should have a space between // and comment  [whitespace/comments] [4]
Source/WebCore/html/HTMLMediaElement.cpp:755:  One line control clauses should not use braces.  [whitespace/braces] [4]
Source/WebCore/html/HTMLMediaElement.cpp:760:  One line control clauses should not use braces.  [whitespace/braces] [4]
Source/WebCore/html/HTMLMediaElement.cpp:1684:  Should have a space between // and comment  [whitespace/comments] [4]
Source/WebCore/html/HTMLMediaElement.cpp:1690:  Missing space before ( in if(  [whitespace/parens] [5]
Source/WebCore/html/HTMLMediaElement.cpp:1690:  More than one command on the same line in if  [whitespace/parens] [4]
Source/WebCore/html/HTMLMediaElement.cpp:1982:  Local variables should never be PassRefPtr (see http://webkit.org/coding/RefPtr.html).  [readability/pass_ptr] [5]
Source/WebCore/html/HTMLMediaElement.cpp:1996:  More than one command on the same line in if  [whitespace/parens] [4]
Source/WebCore/html/HTMLMediaElement.cpp:2026:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
Source/WebCore/html/MutableTextTrackImpl.cpp:81:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
Source/WebCore/html/MutableTextTrackImpl.cpp:85:  Place brace on its own line for function definitions.  [whitespace/braces] [4]
Source/WebCore/bindings/js/JSTextTrackCueCustom.cpp:33:  Alphabetical sorting problem.  [build/include_order] [4]
Source/WebCore/bindings/js/JSTextTrackCueCustom.cpp:54:  One line control clauses should not use braces.  [whitespace/braces] [4]
Source/WebCore/platform/track/WebVTTParser.cpp:35:  You should add a blank line after implementation file&apos;s own header.  [build/include_order] [4]
Source/WebCore/platform/track/WebVTTParser.cpp:48:  current_line is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/WebCore/platform/track/WebVTTParser.cpp:57:  One line control clauses should not use braces.  [whitespace/braces] [4]
Source/WebCore/platform/track/WebVTTParser.cpp:78:  One line control clauses should not use braces.  [whitespace/braces] [4]
Source/WebCore/html/CueIndex.cpp:126:  This { should be at the end of the previous line  [whitespace/braces] [4]
Source/WebCore/html/CueIndex.cpp:141:  Missing space before ( in if(  [whitespace/parens] [5]
Source/WebCore/html/CueIndex.cpp:141:  More than one command on the same line in if  [whitespace/parens] [4]
Total errors found: 56 in 74 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>92496</attachid>
            <date>2011-05-05 16:45:11 -0700</date>
            <delta_ts>2011-05-05 16:45:28 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-60312-20110505164509.patch</filename>
            <type>text/plain</type>
            <size>177357</size>
            <attacher name="Anna Cavender">annacc</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogODU4NjUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NN
YWtlTGlzdHMudHh0IGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKaW5kZXggYzU0YjJl
ZTIwNzUyZmY5OWU1NjJkZjM1ZDBhOGNkYjM3YThmMWQxMy4uZWZjOTM4ZWFiNzY2ZDA2MTE1MTkz
MDQ3MGE0MTFiNTAyN2Q4MmNhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQKKysrIGIvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0cy50eHQKQEAgLTQ1LDYgKzQ1LDcg
QEAgU0VUKFdlYkNvcmVfSU5DTFVERV9ESVJFQ1RPUklFUwogICAgICIke1dFQkNPUkVfRElSfS9w
bGF0Zm9ybS9zcWwiCiAgICAgIiR7V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL3RleHQiCiAgICAgIiR7
V0VCQ09SRV9ESVJ9L3BsYXRmb3JtL3RleHQvdHJhbnNjb2RlciIKKyAgICAiJHtXRUJDT1JFX0RJ
Un0vcGxhdGZvcm0vdHJhY2siCiAgICAgIiR7V0VCQ09SRV9ESVJ9L3BsdWdpbnMiCiAgICAgIiR7
V0VCQ09SRV9ESVJ9L3JlbmRlcmluZyIKICAgICAiJHtXRUJDT1JFX0RJUn0vcmVuZGVyaW5nL21h
dGhtbCIKQEAgLTI3MSw3ICsyNzIsMTEgQEAgU0VUKFdlYkNvcmVfSURMX0ZJTEVTCiAgICAgaHRt
bC9IVE1MVmlkZW9FbGVtZW50LmlkbAogICAgIGh0bWwvSW1hZ2VEYXRhLmlkbAogICAgIGh0bWwv
TWVkaWFFcnJvci5pZGwKKyAgICBodG1sL011dGFibGVUZXh0VHJhY2suaWRsCiAgICAgaHRtbC9U
ZXh0TWV0cmljcy5pZGwKKyAgICBodG1sL1RleHRUcmFjay5pZGwKKyAgICBodG1sL1RleHRUcmFj
a0N1ZS5pZGwKKyAgICBodG1sL1RleHRUcmFja0N1ZUxpc3QuaWRsCiAgICAgaHRtbC9UaW1lUmFu
Z2VzLmlkbAogICAgIGh0bWwvVmFsaWRpdHlTdGF0ZS5pZGwKICAgICBodG1sL1ZvaWRDYWxsYmFj
ay5pZGwKQEAgLTE5MjIsNiArMTkyNywxNCBAQCBFTkRJRigpCiBJRiAoRU5BQkxFX1ZJREVPX1RS
QUNLKQogICAgIExJU1QoQVBQRU5EIFdlYkNvcmVfU09VUkNFUwogICAgICAgICBodG1sL0hUTUxU
cmFja0VsZW1lbnQuY3BwCisgICAgICAgIGh0bWwvTG9hZGFibGVUZXh0VHJhY2suY3BwCisgICAg
ICAgIGh0bWwvTG9hZGFibGVUZXh0VHJhY2tJbXBsLmNwcAorICAgICAgICBodG1sL011dGFibGVU
ZXh0VHJhY2suY3BwCisgICAgICAgIGh0bWwvTXV0YWJsZVRleHRUcmFja0ltcGwuY3BwCisgICAg
ICAgIGh0bWwvVGV4dFRyYWNrLmNwcAorICAgICAgICBodG1sL1RleHRUcmFja0N1ZS5jcHAKKyAg
ICAgICAgaHRtbC9UZXh0VHJhY2tDdWVMaXN0LmNwcAorICAgICAgICBodG1sL1RleHRUcmFja1By
aXZhdGUuY3BwCiAgICAgKQogRU5ESUYoKQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzUyMDNjY2JlZGNkZjY2
OGM1YTc1ZTM1ZDFmNDY4NzVhODMyYmM5My4uNzliM2FjNTFiNzY2ODQ1Y2MxMDE3ODFkNmVlNDEw
NjhjN2M2ZDViNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI2MCBAQAorMjAxMS0wNS0wNSAgQW5u
YSBDYXZlbmRlciAgPGFubmFjY0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisgICAgICAgIAorICAgICAgICBBbGwgbWFqb3IgZmVhdHVyZXMgZm9y
IDx0cmFjaz4gc3VwcG9ydC4gIEZvciByZWZlcmVuY2UgT05MWSwgTk9UIGludGVuZGVkIGZvciBm
b3JtYWwgcmV2aWV3IG9yIGNvbW1pdC4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcv
c2hvd19idWcuY2dpP2lkPTYwMzEyCisKKyAgICAgICAgTm8gbmV3IHRlc3RzLiBOb3Qgc2VyaW91
c2x5IGludGVuZGVkIGZvciBjb21taXQgKHJlZmVyZW5jZSBvbmx5KQorCisgICAgICAgICogQ01h
a2VMaXN0cy50eHQ6CisgICAgICAgICogQ29kZUdlbmVyYXRvcnMucHJpOgorICAgICAgICAqIERl
cml2ZWRTb3VyY2VzLmNwcDoKKyAgICAgICAgKiBEZXJpdmVkU291cmNlcy5tYWtlOgorICAgICAg
ICAqIFdlYkNvcmUuZ3lwL1dlYkNvcmUuZ3lwOgorICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAg
ICAgICAgKiBXZWJDb3JlLnByaToKKyAgICAgICAgKiBXZWJDb3JlLnBybzoKKyAgICAgICAgKiBX
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogYmluZGluZ3MvanMv
SlNCaW5kaW5nc0FsbEluT25lLmNwcDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTVdpbmRv
d0N1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU0RPTVdpbmRvdzo6dGV4dFRyYWNrQ3Vl
KToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0V2ZW50VGFyZ2V0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OnRvSlMpOgorICAgICAgICAoV2ViQ29yZTo6dG9FdmVudFRhcmdldCk6CisgICAgICAg
ICogYmluZGluZ3MvanMvSlNUZXh0VHJhY2tDdWVDdXN0b20uY3BwOiBBZGRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkpTVGV4dFRyYWNrQ3VlQ29uc3RydWN0b3I6OmNvbnN0cnVjdEpTVGV4dFRyYWNr
Q3VlKToKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU1dvcmtlckNvbnRleHRDdXN0b20uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6SlNXb3JrZXJDb250ZXh0Ojp0ZXh0VHJhY2tDdWUpOgorICAgICAg
ICAqIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4LnBtOgorICAgICAgICAqIGJpbmRp
bmdzL3Y4L1Y4RE9NV3JhcHBlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpWOERPTVdyYXBwZXI6
OmNvbnZlcnRFdmVudFRhcmdldFRvVjhPYmplY3QpOgorICAgICAgICAqIGJpbmRpbmdzL3Y4L2N1
c3RvbS9WOFRleHRUcmFja0N1ZUN1c3RvbS5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6
VjhUZXh0VHJhY2tDdWU6OmNvbnN0cnVjdG9yQ2FsbGJhY2spOgorICAgICAgICAqIGNzcy9tZWRp
YUNvbnRyb2xzLmNzczoKKyAgICAgICAgKHZpZGVvOjotd2Via2l0LW1lZGlhLXRleHQtdHJhY2sp
OgorICAgICAgICAqIGRvbS9FdmVudE5hbWVzLmg6CisgICAgICAgICogZG9tL0V2ZW50VGFyZ2V0
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50VGFyZ2V0Ojp0b1RleHRUcmFjayk6CisgICAg
ICAgIChXZWJDb3JlOjpFdmVudFRhcmdldDo6dG9UZXh0VHJhY2tDdWUpOgorICAgICAgICAqIGRv
bS9FdmVudFRhcmdldC5oOgorICAgICAgICAqIGh0bWwvQ3VlSW5kZXguY3BwOiBBZGRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkN1ZVNldDo6ZGlmZmVyZW5jZSk6CisgICAgICAgIChXZWJDb3JlOjpD
dWVTZXQ6OnVuaW9uU2V0KToKKyAgICAgICAgKFdlYkNvcmU6OkN1ZVNldDo6YWRkKToKKyAgICAg
ICAgKFdlYkNvcmU6OkN1ZVNldDo6Y29udGFpbnMpOgorICAgICAgICAoV2ViQ29yZTo6Q3VlU2V0
OjpyZW1vdmUpOgorICAgICAgICAoV2ViQ29yZTo6Q3VlU2V0Ojppc0VtcHR5KToKKyAgICAgICAg
KFdlYkNvcmU6OkN1ZVNldDo6c2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpDdWVTZXQ6OmJlZ2lu
KToKKyAgICAgICAgKFdlYkNvcmU6OkN1ZVNldDo6ZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OkN1
ZUluZGV4Ojp0YWtlTmV3Q3Vlc0Zyb20pOgorICAgICAgICAoV2ViQ29yZTo6Q3VlSW5kZXg6OnJl
bW92ZUN1ZXNGcm9tSW5kZXgpOgorICAgICAgICAoV2ViQ29yZTo6Q3VlSW5kZXg6OmdldFZpc2li
bGVDdWVzKToKKyAgICAgICAgKFdlYkNvcmU6OkN1ZUluZGV4OjphZGQpOgorICAgICAgICAoV2Vi
Q29yZTo6Q3VlSW5kZXg6OnJlbW92ZSk6CisgICAgICAgICogaHRtbC9DdWVJbmRleC5oOiBDb3Bp
ZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUcmFja0VsZW1lbnQuaC4KKyAgICAgICAg
KFdlYkNvcmU6OkN1ZVNldDo6Q3VlU2V0KToKKyAgICAgICAgKFdlYkNvcmU6OkN1ZVNldDo6fkN1
ZVNldCk6CisgICAgICAgICogaHRtbC9IVE1MQXR0cmlidXRlTmFtZXMuaW46CisgICAgICAgICog
aHRtbC9IVE1MRWxlbWVudHNBbGxJbk9uZS5jcHA6CisgICAgICAgICogaHRtbC9IVE1MTWVkaWFF
bGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OkhUTUxNZWRp
YUVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6bG9hZEludGVy
bmFsKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OmxvYWRNZWRpYVRyYWNr
cyk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpwbGF5YmFja1Byb2dyZXNz
VGltZXJGaXJlZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50OjpnZXRBZmZl
Y3RlZEN1ZXMpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6YWRkVHJhY2sp
OgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6dGV4dFRyYWNrUmVhZHlTdGF0
ZUNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6dGV4dFRyYWNr
TW9kZUNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6SFRNTE1lZGlhRWxlbWVudDo6dGV4dFRy
YWNrQ3JlYXRlZCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MTWVkaWFFbGVtZW50Ojp0cmFja1dh
c0FkZGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxNZWRpYUVsZW1lbnQ6OnRyYWNrV2lsbEJl
UmVtb3ZlZCk6CisgICAgICAgICogaHRtbC9IVE1MTWVkaWFFbGVtZW50Lmg6CisgICAgICAgICog
aHRtbC9IVE1MTWVkaWFFbGVtZW50LmlkbDoKKyAgICAgICAgKiBodG1sL0hUTUxTb3VyY2VFbGVt
ZW50LmNwcDoKKyAgICAgICAgKiBodG1sL0hUTUxUcmFja0VsZW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6SFRNTFRyYWNrRWxlbWVudDo6SFRNTFRyYWNrRWxlbWVudCk6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MVHJhY2tFbGVtZW50Ojp+SFRNTFRyYWNrRWxlbWVudCk6CisgICAgICAgIChX
ZWJDb3JlOjpIVE1MVHJhY2tFbGVtZW50OjppbnNlcnRlZEludG9UcmVlKToKKyAgICAgICAgKFdl
YkNvcmU6OkhUTUxUcmFja0VsZW1lbnQ6OndpbGxSZW1vdmUpOgorICAgICAgICAoV2ViQ29yZTo6
SFRNTFRyYWNrRWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUpOgorICAgICAgICAoV2ViQ29y
ZTo6SFRNTFRyYWNrRWxlbWVudDo6c2V0U3JjKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUcmFj
a0VsZW1lbnQ6OnNldElzRGVmYXVsdCk6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVHJhY2tFbGVt
ZW50Ojpsb2FkKToKKyAgICAgICAgKFdlYkNvcmU6OkhUTUxUcmFja0VsZW1lbnQ6OnRyYWNrKToK
KyAgICAgICAgKFdlYkNvcmU6OkhUTUxUcmFja0VsZW1lbnQ6OnNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQpOgorICAgICAgICAqIGh0bWwvSFRNTFRyYWNrRWxlbWVudC5oOgorICAgICAgICAqIGh0bWwv
SFRNTFRyYWNrRWxlbWVudC5pZGw6CisgICAgICAgICogaHRtbC9Mb2FkYWJsZVRleHRUcmFjay5j
cHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6TG9hZGFibGVUZXh0VHJhY2s6OkxvYWRhYmxl
VGV4dFRyYWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkxvYWRhYmxlVGV4dFRyYWNrOjp+TG9hZGFi
bGVUZXh0VHJhY2spOgorICAgICAgICAoV2ViQ29yZTo6TG9hZGFibGVUZXh0VHJhY2s6OmxvYWQp
OgorICAgICAgICAoV2ViQ29yZTo6TG9hZGFibGVUZXh0VHJhY2s6OnN1cHBvcnRzVHlwZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpMb2FkYWJsZVRleHRUcmFjazo6dHJhY2tMb2FkU3RhcnRlZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpMb2FkYWJsZVRleHRUcmFjazo6dHJhY2tMb2FkRXJyb3IpOgorICAg
ICAgICAoV2ViQ29yZTo6TG9hZGFibGVUZXh0VHJhY2s6OmZpcmVDdWVDaGFuZ2VFdmVudCk6Cisg
ICAgICAgICogaHRtbC9Mb2FkYWJsZVRleHRUcmFjay5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2Vi
Q29yZS9odG1sL0hUTUxUcmFja0VsZW1lbnQuaC4KKyAgICAgICAgKFdlYkNvcmU6OkxvYWRhYmxl
VGV4dFRyYWNrOjpjcmVhdGUpOgorICAgICAgICAqIGh0bWwvTG9hZGFibGVUZXh0VHJhY2tJbXBs
LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpMb2FkYWJsZVRleHRUcmFja0ltcGw6Okxv
YWRhYmxlVGV4dFRyYWNrSW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpMb2FkYWJsZVRleHRUcmFj
a0ltcGw6On5Mb2FkYWJsZVRleHRUcmFja0ltcGwpOgorICAgICAgICAoV2ViQ29yZTo6TG9hZGFi
bGVUZXh0VHJhY2tJbXBsOjpjdWVzKToKKyAgICAgICAgKFdlYkNvcmU6OkxvYWRhYmxlVGV4dFRy
YWNrSW1wbDo6YWN0aXZlQ3Vlcyk6CisgICAgICAgIChXZWJDb3JlOjpMb2FkYWJsZVRleHRUcmFj
a0ltcGw6Om5ld0N1ZXNMb2FkZWQpOgorICAgICAgICAoV2ViQ29yZTo6TG9hZGFibGVUZXh0VHJh
Y2tJbXBsOjpwb3BOZXdlc3RDdWVzKToKKyAgICAgICAgKFdlYkNvcmU6OkxvYWRhYmxlVGV4dFRy
YWNrSW1wbDo6bG9hZCk6CisgICAgICAgIChXZWJDb3JlOjpMb2FkYWJsZVRleHRUcmFja0ltcGw6
OnN1cHBvcnRzVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpMb2FkYWJsZVRleHRUcmFja0ltcGw6
Om5ld0N1ZXNQYXJzZWQpOgorICAgICAgICAoV2ViQ29yZTo6TG9hZGFibGVUZXh0VHJhY2tJbXBs
Ojp0cmFja0xvYWRTdGFydGVkKToKKyAgICAgICAgKFdlYkNvcmU6OkxvYWRhYmxlVGV4dFRyYWNr
SW1wbDo6dHJhY2tMb2FkRXJyb3IpOgorICAgICAgICAoV2ViQ29yZTo6TG9hZGFibGVUZXh0VHJh
Y2tJbXBsOjp0cmFja0xvYWRDb21wbGV0ZWQpOgorICAgICAgICAqIGh0bWwvTG9hZGFibGVUZXh0
VHJhY2tJbXBsLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6TG9hZGFibGVUZXh0VHJhY2tJ
bXBsOjpjcmVhdGUpOgorICAgICAgICAqIGh0bWwvTXV0YWJsZVRleHRUcmFjay5jcHA6IENvcGll
ZCBmcm9tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRyYWNrRWxlbWVudC5pZGwuCisgICAgICAg
IChXZWJDb3JlOjpNdXRhYmxlVGV4dFRyYWNrOjpNdXRhYmxlVGV4dFRyYWNrKToKKyAgICAgICAg
KFdlYkNvcmU6Ok11dGFibGVUZXh0VHJhY2s6OmFkZEN1ZSk6CisgICAgICAgIChXZWJDb3JlOjpN
dXRhYmxlVGV4dFRyYWNrOjpyZW1vdmVDdWUpOgorICAgICAgICAqIGh0bWwvTXV0YWJsZVRleHRU
cmFjay5oOiBDb3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUcmFja0VsZW1lbnQu
aC4KKyAgICAgICAgKFdlYkNvcmU6Ok11dGFibGVUZXh0VHJhY2s6OmNyZWF0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpNdXRhYmxlVGV4dFRyYWNrOjp+TXV0YWJsZVRleHRUcmFjayk6CisgICAgICAg
ICogaHRtbC9NdXRhYmxlVGV4dFRyYWNrLmlkbDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUv
aHRtbC9IVE1MVHJhY2tFbGVtZW50LmlkbC4KKyAgICAgICAgKiBodG1sL011dGFibGVUZXh0VHJh
Y2tJbXBsLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpNdXRhYmxlVGV4dFRyYWNrSW1w
bDo6TXV0YWJsZVRleHRUcmFja0ltcGwpOgorICAgICAgICAoV2ViQ29yZTo6TXV0YWJsZVRleHRU
cmFja0ltcGw6On5NdXRhYmxlVGV4dFRyYWNrSW1wbCk6CisgICAgICAgIChXZWJDb3JlOjpNdXRh
YmxlVGV4dFRyYWNrSW1wbDo6YWRkQ3VlKToKKyAgICAgICAgKFdlYkNvcmU6Ok11dGFibGVUZXh0
VHJhY2tJbXBsOjpyZW1vdmVDdWUpOgorICAgICAgICAoV2ViQ29yZTo6TXV0YWJsZVRleHRUcmFj
a0ltcGw6OmN1ZXMpOgorICAgICAgICAoV2ViQ29yZTo6TXV0YWJsZVRleHRUcmFja0ltcGw6OmFj
dGl2ZUN1ZXMpOgorICAgICAgICAoV2ViQ29yZTo6TXV0YWJsZVRleHRUcmFja0ltcGw6Om5ld0N1
ZXNMb2FkZWQpOgorICAgICAgICAoV2ViQ29yZTo6TXV0YWJsZVRleHRUcmFja0ltcGw6OnBvcE5l
d2VzdEN1ZXMpOgorICAgICAgICAqIGh0bWwvTXV0YWJsZVRleHRUcmFja0ltcGwuaDogQ29waWVk
IGZyb20gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVHJhY2tFbGVtZW50LmguCisgICAgICAgIChX
ZWJDb3JlOjpNdXRhYmxlVGV4dFRyYWNrSW1wbDo6Y3JlYXRlKToKKyAgICAgICAgKiBodG1sL1Rl
eHRUcmFjay5jcHA6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrOjpUZXh0VHJh
Y2spOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrOjp+VGV4dFRyYWNrKToKKyAgICAgICAg
KFdlYkNvcmU6OlRleHRUcmFjazo6a2luZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2s6
OmxhYmVsKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFjazo6bGFuZ3VhZ2UpOgorICAgICAg
ICAoV2ViQ29yZTo6VGV4dFRyYWNrOjpyZWFkeVN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlRl
eHRUcmFjazo6bW9kZSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2s6OnNldE1vZGUpOgor
ICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrOjpjdWVzKToKKyAgICAgICAgKFdlYkNvcmU6OlRl
eHRUcmFjazo6YWN0aXZlQ3Vlcyk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2s6OnRyYWNr
TG9hZFN0YXJ0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrOjp0cmFja0xvYWRFcnJv
cik6CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2s6OmZpcmVDdWVDaGFuZ2VFdmVudCk6Cisg
ICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2s6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOgorICAg
ICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrOjpldmVudFRhcmdldERhdGEpOgorICAgICAgICAoV2Vi
Q29yZTo6VGV4dFRyYWNrOjplbnN1cmVFdmVudFRhcmdldERhdGEpOgorICAgICAgICAqIGh0bWwv
VGV4dFRyYWNrLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrQ2xpZW50Ojp+
VGV4dFRyYWNrQ2xpZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFja0NsaWVudDo6dGV4
dFRyYWNrUmVhZHlTdGF0ZUNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrQ2xp
ZW50Ojp0ZXh0VHJhY2tNb2RlQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2tD
bGllbnQ6OnRleHRUcmFja0NyZWF0ZWQpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrOjpj
cmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrOjp0b1RleHRUcmFjayk6CisgICAg
ICAgIChXZWJDb3JlOjpUZXh0VHJhY2s6OnJlZkV2ZW50VGFyZ2V0KToKKyAgICAgICAgKFdlYkNv
cmU6OlRleHRUcmFjazo6ZGVyZWZFdmVudFRhcmdldCk6CisgICAgICAgICogaHRtbC9UZXh0VHJh
Y2suaWRsOiBBZGRlZC4KKyAgICAgICAgKiBodG1sL1RleHRUcmFja0N1ZS5jcHA6IEFkZGVkLgor
ICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrQ3VlOjpUZXh0VHJhY2tDdWUpOgorICAgICAgICAo
V2ViQ29yZTo6VGV4dFRyYWNrQ3VlOjp+VGV4dFRyYWNrQ3VlKToKKyAgICAgICAgKFdlYkNvcmU6
OlRleHRUcmFja0N1ZTo6dHJhY2spOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrQ3VlOjpz
ZXRUcmFjayk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2tDdWU6OmlkKToKKyAgICAgICAg
KFdlYkNvcmU6OlRleHRUcmFja0N1ZTo6c3RhcnRUaW1lKToKKyAgICAgICAgKFdlYkNvcmU6OlRl
eHRUcmFja0N1ZTo6ZW5kVGltZSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2tDdWU6OnBh
dXNlT25FeGl0KToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFja0N1ZTo6ZGlyZWN0aW9uKToK
KyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFja0N1ZTo6c25hcFRvTGluZXMpOgorICAgICAgICAo
V2ViQ29yZTo6VGV4dFRyYWNrQ3VlOjpsaW5lUG9zaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6
VGV4dFRyYWNrQ3VlOjp0ZXh0UG9zaXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNr
Q3VlOjpzaXplKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFja0N1ZTo6YWxpZ25tZW50KToK
KyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFja0N1ZTo6Z2V0Q3VlQXNTb3VyY2UpOgorICAgICAg
ICAoV2ViQ29yZTo6VGV4dFRyYWNrQ3VlOjpnZXRDdWVBc0hUTUwpOgorICAgICAgICAoV2ViQ29y
ZTo6VGV4dFRyYWNrQ3VlOjppc0FjdGl2ZSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2tD
dWU6OnNldElzQWN0aXZlKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFja0N1ZTo6c2NyaXB0
RXhlY3V0aW9uQ29udGV4dCk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2tDdWU6OmV2ZW50
VGFyZ2V0RGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2tDdWU6OmVuc3VyZUV2ZW50
VGFyZ2V0RGF0YSk6CisgICAgICAgICogaHRtbC9UZXh0VHJhY2tDdWUuaDogQWRkZWQuCisgICAg
ICAgIChXZWJDb3JlOjpUZXh0VHJhY2tDdWU6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpU
ZXh0VHJhY2tDdWU6OnRvVGV4dFRyYWNrQ3VlKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFj
a0N1ZTo6cmVmRXZlbnRUYXJnZXQpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrQ3VlOjpk
ZXJlZkV2ZW50VGFyZ2V0KToKKyAgICAgICAgKiBodG1sL1RleHRUcmFja0N1ZS5pZGw6IEFkZGVk
LgorICAgICAgICAqIGh0bWwvVGV4dFRyYWNrQ3VlTGlzdC5jcHA6IEFkZGVkLgorICAgICAgICAo
V2ViQ29yZTo6VGV4dFRyYWNrQ3VlTGlzdDo6VGV4dFRyYWNrQ3VlTGlzdCk6CisgICAgICAgIChX
ZWJDb3JlOjpUZXh0VHJhY2tDdWVMaXN0Ojp+VGV4dFRyYWNrQ3VlTGlzdCk6CisgICAgICAgIChX
ZWJDb3JlOjpUZXh0VHJhY2tDdWVMaXN0OjpsZW5ndGgpOgorICAgICAgICAoV2ViQ29yZTo6VGV4
dFRyYWNrQ3VlTGlzdDo6Z2V0Q3VlQnlJZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2tD
dWVMaXN0OjppdGVtKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFja0N1ZUxpc3Q6OmFwcGVu
ZCk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2tDdWVMaXN0OjpyZW1vdmUpOgorICAgICAg
ICAoV2ViQ29yZTo6VGV4dFRyYWNrQ3VlTGlzdDo6YmVnaW4pOgorICAgICAgICAoV2ViQ29yZTo6
VGV4dFRyYWNrQ3VlTGlzdDo6ZW5kKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFja0N1ZUxp
c3Q6OmFjdGl2ZUN1ZXMpOgorICAgICAgICAqIGh0bWwvVGV4dFRyYWNrQ3VlTGlzdC5oOiBDb3Bp
ZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUcmFja0VsZW1lbnQuaC4KKyAgICAgICAg
KFdlYkNvcmU6OlRleHRUcmFja0N1ZUxpc3Q6OmNyZWF0ZSk6CisgICAgICAgICogaHRtbC9UZXh0
VHJhY2tDdWVMaXN0LmlkbDogQ29waWVkIGZyb20gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVHJh
Y2tFbGVtZW50LmlkbC4KKyAgICAgICAgKiBodG1sL1RleHRUcmFja1ByaXZhdGUuaDogQ29waWVk
IGZyb20gU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVHJhY2tFbGVtZW50LmguCisgICAgICAgIChX
ZWJDb3JlOjpUZXh0VHJhY2tQcml2YXRlSW50ZXJmYWNlOjpUZXh0VHJhY2tQcml2YXRlSW50ZXJm
YWNlKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFja1ByaXZhdGVJbnRlcmZhY2U6On5UZXh0
VHJhY2tQcml2YXRlSW50ZXJmYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFja1ByaXZh
dGVJbnRlcmZhY2U6OmxvYWQpOgorICAgICAgICAoV2ViQ29yZTo6VGV4dFRyYWNrUHJpdmF0ZUlu
dGVyZmFjZTo6c3VwcG9ydHNUeXBlKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRUcmFja1ByaXZh
dGVJbnRlcmZhY2U6OmFkZEN1ZSk6CisgICAgICAgIChXZWJDb3JlOjpUZXh0VHJhY2tQcml2YXRl
SW50ZXJmYWNlOjpyZW1vdmVDdWUpOgorICAgICAgICAqIGh0bWwvcGFyc2VyL0hUTUxUcmVlQnVp
bGRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpIVE1MVHJlZUJ1aWxkZXI6OnByb2Nlc3NTdGFy
dFRhZ0ZvckluQm9keSk6CisgICAgICAgICogaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sRWxlbWVu
dHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFDb250cm9sVGV4dFRyYWNrRWxlbWVudDo6
TWVkaWFDb250cm9sVGV4dFRyYWNrRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNv
bnRyb2xUZXh0VHJhY2tFbGVtZW50OjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVkaWFD
b250cm9sVGV4dFRyYWNrRWxlbWVudDo6c2hhZG93UHNldWRvSWQpOgorICAgICAgICAqIGh0bWwv
c2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRzLmg6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNv
bnRyb2xUZXh0VHJhY2tFbGVtZW50OjptZWRpYUVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6
TWVkaWFDb250cm9sVGV4dFRyYWNrRWxlbWVudDo6aXNNZWRpYUNvbnRyb2xFbGVtZW50KToKKyAg
ICAgICAgKiBodG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xSb290RWxlbWVudENocm9taXVtLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Ok1lZGlhQ29udHJvbFJvb3RFbGVtZW50Q2hyb21pdW06OmNyZWF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpNZWRpYUNvbnRyb2xSb290RWxlbWVudENocm9taXVtOjp1
cGRhdGVUZXh0VHJhY2spOgorICAgICAgICAqIGh0bWwvc2hhZG93L01lZGlhQ29udHJvbFJvb3RF
bGVtZW50Q2hyb21pdW0uaDoKKyAgICAgICAgKiBodG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xzLmg6
CisgICAgICAgICogbG9hZGVyL0N1ZUxvYWRlci5jcHA6IENvcGllZCBmcm9tIFNvdXJjZS9XZWJD
b3JlL2h0bWwvSFRNTFRyYWNrRWxlbWVudC5pZGwuCisgICAgICAgIChXZWJDb3JlOjpDdWVMb2Fk
ZXI6OnNldEN1ZUxvYWRlckNsaWVudCk6CisgICAgICAgICogbG9hZGVyL0N1ZUxvYWRlci5oOiBD
b3BpZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUcmFja0VsZW1lbnQuaWRsLgorICAg
ICAgICAqIHBhZ2UvRE9NV2luZG93LmlkbDoKKyAgICAgICAgKiBwbGF0Zm9ybS90cmFjay9DdWVQ
YXJzZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkN1ZVBhcnNlcjo6Q3VlUGFyc2Vy
KToKKyAgICAgICAgKFdlYkNvcmU6OkN1ZVBhcnNlcjo6fkN1ZVBhcnNlcik6CisgICAgICAgIChX
ZWJDb3JlOjpDdWVQYXJzZXI6OmxvYWQpOgorICAgICAgICAoV2ViQ29yZTo6Q3VlUGFyc2VyOjpz
dXBwb3J0c1R5cGUpOgorICAgICAgICAoV2ViQ29yZTo6Q3VlUGFyc2VyOjpkaWRSZWNlaXZlUmVz
cG9uc2UpOgorICAgICAgICAoV2ViQ29yZTo6Q3VlUGFyc2VyOjpuZXdDdWVzUGFyc2VkKToKKyAg
ICAgICAgKFdlYkNvcmU6OkN1ZVBhcnNlcjo6ZGlkUmVjZWl2ZURhdGEpOgorICAgICAgICAoV2Vi
Q29yZTo6Q3VlUGFyc2VyOjpkZXBsZXRlUGFyc2VkQ3Vlcyk6CisgICAgICAgIChXZWJDb3JlOjpD
dWVQYXJzZXI6OmRpZEZpbmlzaExvYWRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6Q3VlUGFyc2Vy
OjpkaWRGYWlsKToKKyAgICAgICAgKiBwbGF0Zm9ybS90cmFjay9DdWVQYXJzZXIuaDogQWRkZWQu
CisgICAgICAgICogcGxhdGZvcm0vdHJhY2svQ3VlUGFyc2VyUHJpdmF0ZS5jcHA6IEFkZGVkLgor
ICAgICAgICAqIHBsYXRmb3JtL3RyYWNrL0N1ZVBhcnNlclByaXZhdGUuaDogQWRkZWQuCisgICAg
ICAgIChXZWJDb3JlOjpDdWVQYXJzZXJQcml2YXRlSW50ZXJmYWNlOjp+Q3VlUGFyc2VyUHJpdmF0
ZUludGVyZmFjZSk6CisgICAgICAgIChXZWJDb3JlOjpDdWVQYXJzZXJQcml2YXRlSW50ZXJmYWNl
OjpDdWVQYXJzZXJQcml2YXRlSW50ZXJmYWNlKToKKyAgICAgICAgKiBwbGF0Zm9ybS90cmFjay9U
ZXh0Q3VlUGFyc2VyLmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpUZXh0Q3VlUGFyc2Vy
OjpwYXJzZUJ5dGVzKToKKyAgICAgICAgKFdlYkNvcmU6OlRleHRDdWVQYXJzZXI6OmRlcGxldGVQ
YXJzZWRDdWVzKToKKyAgICAgICAgKiBwbGF0Zm9ybS90cmFjay9UZXh0Q3VlUGFyc2VyLmg6IENv
cGllZCBmcm9tIFNvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRyYWNrRWxlbWVudC5pZGwuCisgICAg
ICAgIChXZWJDb3JlOjpUZXh0Q3VlUGFyc2VyOjpUZXh0Q3VlUGFyc2VyKToKKyAgICAgICAgKFdl
YkNvcmU6OlRleHRDdWVQYXJzZXI6On5UZXh0Q3VlUGFyc2VyKToKKyAgICAgICAgKiBwbGF0Zm9y
bS90cmFjay9XZWJWVFRQYXJzZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldlYlZU
VFBhcnNlcjo6cGFyc2VCeXRlcyk6CisgICAgICAgIChXZWJDb3JlOjpXZWJWVFRQYXJzZXI6OmRl
cGxldGVQYXJzZWRDdWVzKToKKyAgICAgICAgKFdlYkNvcmU6OldlYlZUVFBhcnNlcjo6c3RyaW5n
VG9UaW1lKToKKyAgICAgICAgKiBwbGF0Zm9ybS90cmFjay9XZWJWVFRQYXJzZXIuaDogQWRkZWQu
CisgICAgICAgIChXZWJDb3JlOjpXZWJWVFRQYXJzZXI6On5XZWJWVFRQYXJzZXIpOgorICAgICAg
ICAoV2ViQ29yZTo6V2ViVlRUUGFyc2VyOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
VlRUUGFyc2VyOjpXZWJWVFRQYXJzZXIpOgorCiAyMDExLTA1LTA1ICBFcmljIENhcmxzb24gIDxl
cmljLmNhcmxzb25AYXBwbGUuY29tPgogCiAgICAgICAgIFJldmlld2VkIGJ5IEFkYW0gUm9iZW4u
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Db2RlR2VuZXJhdG9ycy5wcmkgYi9Tb3VyY2Uv
V2ViQ29yZS9Db2RlR2VuZXJhdG9ycy5wcmkKaW5kZXggY2MyOTY2MDRjNjllODgxM2U5YzY1ZmRj
NDRmZjMyNWZiNjJkOTA0NS4uNzczOGVhNjg1N2M2NTNkYmE2YjcyMDVmM2YwZDQxMDM1YThlZWI3
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ29kZUdlbmVyYXRvcnMucHJpCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NvZGVHZW5lcmF0b3JzLnByaQpAQCAtMjk4LDcgKzI5OCwxMCBAQCBJRExf
QklORElOR1MgKz0gXAogICAgIGh0bWwvSFRNTFZpZGVvRWxlbWVudC5pZGwgXAogICAgIGh0bWwv
SW1hZ2VEYXRhLmlkbCBcCiAgICAgaHRtbC9NZWRpYUVycm9yLmlkbCBcCisgICAgaHRtbC9NdXRh
YmxlVGV4dFRyYWNrLmlkbCBcCiAgICAgaHRtbC9UZXh0TWV0cmljcy5pZGwgXAorICAgIGh0bWwv
VGV4dFRyYWNrQ3VlLmlkbCBcCisgICAgaHRtbC9UZXh0VHJhY2tDdWVMaXN0LmlkbCBcCiAgICAg
aHRtbC9UaW1lUmFuZ2VzLmlkbCBcCiAgICAgaHRtbC9WYWxpZGl0eVN0YXRlLmlkbCBcCiAgICAg
aHRtbC9Wb2lkQ2FsbGJhY2suaWRsIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0Rlcml2
ZWRTb3VyY2VzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLmNwcAppbmRleCBj
ODdjNGQ1NmI3MWIzNjBjYjEwMmNjYjczOWZhNWVjZDUzMDcxZDBjLi5kM2JiZTNhYmRhMzY0NmE5
ZTA1M2Y1ZjFiYzU5MjkzODU4OWU3MmU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9EZXJp
dmVkU291cmNlcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJjZXMuY3BwCkBA
IC00MjUsNiArNDI1LDkgQEAKICNpbmNsdWRlICJKU1RleHQuY3BwIgogI2luY2x1ZGUgIkpTVGV4
dEV2ZW50LmNwcCIKICNpbmNsdWRlICJKU1RleHRNZXRyaWNzLmNwcCIKKyNpZiBFTkFCTEUoVklE
RU9fVFJBQ0spCisjaW5jbHVkZSAiSlNUZXh0VHJhY2tDdWUuY3BwIgorI2VuZGlmCiAjaW5jbHVk
ZSAiSlNUaW1lUmFuZ2VzLmNwcCIKICNpbmNsdWRlICJKU1RvdWNoLmNwcCIKICNpbmNsdWRlICJK
U1RvdWNoRXZlbnQuY3BwIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNvdXJj
ZXMubWFrZSBiL1NvdXJjZS9XZWJDb3JlL0Rlcml2ZWRTb3VyY2VzLm1ha2UKaW5kZXggNThiODlm
YmY0NWQ5ZTA5ODQ0ZjExYWViOTY0ZWM5YjY0MWQ2OTAwYi4uYjlhMTUxMWUxYTMxZGMxZDM0NDgz
YjU0M2VjYTMzMTEzYjBmMDk3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvRGVyaXZlZFNv
dXJjZXMubWFrZQorKysgYi9Tb3VyY2UvV2ViQ29yZS9EZXJpdmVkU291cmNlcy5tYWtlCkBAIC0y
OTksNiArMjk5LDcgQEAgRE9NX0NMQVNTRVMgPSBcCiAgICAgTWV0YWRhdGEgXAogICAgIE1ldGFk
YXRhQ2FsbGJhY2sgXAogICAgIE1vdXNlRXZlbnQgXAorICAgIE11dGFibGVUZXh0VHJhY2sgXAog
ICAgIE11dGF0aW9uRXZlbnQgXAogICAgIE5hbWVkTm9kZU1hcCBcCiAgICAgTmF2aWdhdG9yIFwK
QEAgLTUwNyw2ICs1MDgsOSBAQCBET01fQ0xBU1NFUyA9IFwKICAgICBUZXh0IFwKICAgICBUZXh0
RXZlbnQgXAogICAgIFRleHRNZXRyaWNzIFwKKyAgICBUZXh0VHJhY2sgXAorICAgIFRleHRUcmFj
a0N1ZSBcCisgICAgVGV4dFRyYWNrQ3VlTGlzdCBcCiAgICAgVGltZVJhbmdlcyBcCiAgICAgVG91
Y2ggXAogICAgIFRvdWNoRXZlbnQgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS5neXAvV2ViQ29yZS5neXAgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cC9XZWJDb3JlLmd5
cAppbmRleCA3MGI4MGQxYTFiZTJlMmY5NDJjMTEzOTgzNjI2YWQzMGNkODU4OTE2Li43NDRhNDJl
NDRiMWE0YTliY2VkYjJlNDhkNGY4ZTU3Mjg1NWNmMTI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9XZWJDb3JlLmd5cC9XZWJDb3JlLmd5cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3Jl
Lmd5cC9XZWJDb3JlLmd5cApAQCAtMTkyLDYgKzE5Miw3IEBACiAgICAgICAnLi4vcGxhdGZvcm0v
c3FsJywKICAgICAgICcuLi9wbGF0Zm9ybS90ZXh0JywKICAgICAgICcuLi9wbGF0Zm9ybS90ZXh0
L3RyYW5zY29kZXInLAorICAgICAgJy4uL3BsYXRmb3JtL3RyYWNrJywKICAgICAgICcuLi9wbHVn
aW5zJywKICAgICAgICcuLi9wbHVnaW5zL2Nocm9taXVtJywKICAgICAgICcuLi9yZW5kZXJpbmcn
LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpIGIvU291cmNlL1dlYkNv
cmUvV2ViQ29yZS5neXBpCmluZGV4IDlmMmZjYjY4OGViMWVlYWMyNGM1NTQ1ZGU3YzExZWU5MmU1
YmY0NGQuLjA5ZjZlNGU2NzE3MjYwNGQ5ZDQ1OGVmYTc3OWZhZGY3ZTYyNzlhYmQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQorKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLmd5cGkKQEAgLTEyNzcsNyArMTI3NywxMSBAQAogICAgICAgICAgICAgJ2h0bWwvSFRNTFZp
ZGVvRWxlbWVudC5pZGwnLAogICAgICAgICAgICAgJ2h0bWwvSW1hZ2VEYXRhLmlkbCcsCiAgICAg
ICAgICAgICAnaHRtbC9NZWRpYUVycm9yLmlkbCcsCisgICAgICAgICAgICAnaHRtbC9NdXRhYmxl
VGV4dFRyYWNrLmlkbCcsCiAgICAgICAgICAgICAnaHRtbC9UZXh0TWV0cmljcy5pZGwnLAorICAg
ICAgICAgICAgJ2h0bWwvVGV4dFRyYWNrLmlkbCcsCisgICAgICAgICAgICAnaHRtbC9UZXh0VHJh
Y2tDdWUuaWRsJywKKyAgICAgICAgICAgICdodG1sL1RleHRUcmFja0N1ZUxpc3QuaWRsJywKICAg
ICAgICAgICAgICdodG1sL1RpbWVSYW5nZXMuaWRsJywKICAgICAgICAgICAgICdodG1sL1ZhbGlk
aXR5U3RhdGUuaWRsJywKICAgICAgICAgICAgICdodG1sL1ZvaWRDYWxsYmFjay5pZGwnLApAQCAt
MjE1NSw2ICsyMTU5LDcgQEAKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9jdXN0b20vVjhTdG9y
YWdlQ3VzdG9tLmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4U3R5bGVT
aGVldEN1c3RvbS5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFN0eWxl
U2hlZXRMaXN0Q3VzdG9tLmNwcCcsCisgICAgICAgICAgICAnYmluZGluZ3MvdjgvY3VzdG9tL1Y4
VGV4dFRyYWNrQ3VlQ3VzdG9tLmNwcCcsCiAgICAgICAgICAgICAnYmluZGluZ3MvdjgvY3VzdG9t
L1Y4VWludDE2QXJyYXlDdXN0b20uY3BwJywKICAgICAgICAgICAgICdiaW5kaW5ncy92OC9jdXN0
b20vVjhVaW50MzJBcnJheUN1c3RvbS5jcHAnLAogICAgICAgICAgICAgJ2JpbmRpbmdzL3Y4L2N1
c3RvbS9WOFVpbnQ4QXJyYXlDdXN0b20uY3BwJywKQEAgLTI4MDMsNiArMjgwOCw4IEBACiAgICAg
ICAgICAgICAnaHRtbC9Db2xsZWN0aW9uQ2FjaGUuY3BwJywKICAgICAgICAgICAgICdodG1sL0Nv
bG9ySW5wdXRUeXBlLmNwcCcsCiAgICAgICAgICAgICAnaHRtbC9Db2xvcklucHV0VHlwZS5oJywK
KyAgICAgICAgICAgICdodG1sL0N1ZUluZGV4LmNwcCcsCisgICAgICAgICAgICAnaHRtbC9DdWVJ
bmRleC5oJywKICAgICAgICAgICAgICdodG1sL0RPTUZvcm1EYXRhLmNwcCcsCiAgICAgICAgICAg
ICAnaHRtbC9ET01Gb3JtRGF0YS5oJywKICAgICAgICAgICAgICdodG1sL0RPTVNldHRhYmxlVG9r
ZW5MaXN0LmNwcCcsCkBAIC0yOTk0LDkgKzMwMDEsMTcgQEAKICAgICAgICAgICAgICdodG1sL0lz
SW5kZXhJbnB1dFR5cGUuaCcsCiAgICAgICAgICAgICAnaHRtbC9MYWJlbHNOb2RlTGlzdC5jcHAn
LAogICAgICAgICAgICAgJ2h0bWwvTGFiZWxzTm9kZUxpc3QuaCcsCisgICAgICAgICAgICAnaHRt
bC9Mb2FkYWJsZVRleHRUcmFjay5jcHAnLAorICAgICAgICAgICAgJ2h0bWwvTG9hZGFibGVUZXh0
VHJhY2suaCcsCisgICAgICAgICAgICAnaHRtbC9Mb2FkYWJsZVRleHRUcmFja0ltcGwuY3BwJywK
KyAgICAgICAgICAgICdodG1sL0xvYWRhYmxlVGV4dFRyYWNrSW1wbC5oJywKICAgICAgICAgICAg
ICdodG1sL01lZGlhRG9jdW1lbnQuY3BwJywKICAgICAgICAgICAgICdodG1sL01lZGlhRG9jdW1l
bnQuaCcsCiAgICAgICAgICAgICAnaHRtbC9NZWRpYUVycm9yLmgnLAorICAgICAgICAgICAgJ2h0
bWwvTXV0YWJsZVRleHRUcmFjay5jcHAnLAorICAgICAgICAgICAgJ2h0bWwvTXV0YWJsZVRleHRU
cmFjay5oJywKKyAgICAgICAgICAgICdodG1sL011dGFibGVUZXh0VHJhY2tJbXBsLmNwcCcsCisg
ICAgICAgICAgICAnaHRtbC9NdXRhYmxlVGV4dFRyYWNrSW1wbC5oJywKICAgICAgICAgICAgICdo
dG1sL01vbnRoSW5wdXRUeXBlLmNwcCcsCiAgICAgICAgICAgICAnaHRtbC9Nb250aElucHV0VHlw
ZS5oJywKICAgICAgICAgICAgICdodG1sL051bWJlcklucHV0VHlwZS5jcHAnLApAQCAtMzAyNiw2
ICszMDQxLDE0IEBACiAgICAgICAgICAgICAnaHRtbC9UZXh0SW5wdXRUeXBlLmNwcCcsCiAgICAg
ICAgICAgICAnaHRtbC9UZXh0SW5wdXRUeXBlLmgnLAogICAgICAgICAgICAgJ2h0bWwvVGV4dE1l
dHJpY3MuaCcsCisgICAgICAgICAgICAnaHRtbC9UZXh0VHJhY2suY3BwJywKKyAgICAgICAgICAg
ICdodG1sL1RleHRUcmFjay5oJywKKyAgICAgICAgICAgICdodG1sL1RleHRUcmFja0N1ZS5jcHAn
LAorICAgICAgICAgICAgJ2h0bWwvVGV4dFRyYWNrQ3VlLmgnLAorICAgICAgICAgICAgJ2h0bWwv
VGV4dFRyYWNrQ3VlTGlzdC5jcHAnLAorICAgICAgICAgICAgJ2h0bWwvVGV4dFRyYWNrQ3VlTGlz
dC5oJywKKyAgICAgICAgICAgICdodG1sL1RleHRUcmFja1ByaXZhdGUuY3BwJywKKyAgICAgICAg
ICAgICdodG1sL1RleHRUcmFja1ByaXZhdGUuaCcsCiAgICAgICAgICAgICAnaHRtbC9UaW1lSW5w
dXRUeXBlLmNwcCcsCiAgICAgICAgICAgICAnaHRtbC9UaW1lSW5wdXRUeXBlLmgnLAogICAgICAg
ICAgICAgJ2h0bWwvVGltZVJhbmdlcy5jcHAnLApAQCAtMzI4Myw2ICszMzA2LDggQEAKICAgICAg
ICAgICAgICdsb2FkZXIvQ3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sLmNwcCcsCiAgICAgICAgICAg
ICAnbG9hZGVyL0Nyb3NzT3JpZ2luQWNjZXNzQ29udHJvbC5oJywKICAgICAgICAgICAgICdsb2Fk
ZXIvQ3Jvc3NPcmlnaW5QcmVmbGlnaHRSZXN1bHRDYWNoZS5jcHAnLAorICAgICAgICAgICAgJ2xv
YWRlci9DdWVMb2FkZXIuY3BwJywKKyAgICAgICAgICAgICdsb2FkZXIvQ3VlTG9hZGVyLmgnLAog
ICAgICAgICAgICAgJ2xvYWRlci9Eb2N1bWVudExvYWRlci5jcHAnLAogICAgICAgICAgICAgJ2xv
YWRlci9Eb2N1bWVudFRocmVhZGFibGVMb2FkZXIuY3BwJywKICAgICAgICAgICAgICdsb2FkZXIv
RG9jdW1lbnRUaHJlYWRhYmxlTG9hZGVyLmgnLApAQCAtNDk2NSw2ICs0OTkwLDE0IEBACiAgICAg
ICAgICAgICAncGxhdGZvcm0vdGV4dC93aW5jZS9UZXh0QnJlYWtJdGVyYXRvcldpbkNFLmNwcCcs
CiAgICAgICAgICAgICAncGxhdGZvcm0vdGV4dC93aW5jZS9UZXh0Q29kZWNXaW5DRS5jcHAnLAog
ICAgICAgICAgICAgJ3BsYXRmb3JtL3RleHQvd2luY2UvVGV4dENvZGVjV2luQ0UuaCcsCisgICAg
ICAgICAgICAncGxhdGZvcm0vdHJhY2svQ3VlUGFyc2VyLmNwcCcsCisgICAgICAgICAgICAncGxh
dGZvcm0vdHJhY2svQ3VlUGFyc2VyLmgnLAorICAgICAgICAgICAgJ3BsYXRmb3JtL3RyYWNrL0N1
ZVBhcnNlclByaXZhdGUuY3BwJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS90cmFjay9DdWVQYXJz
ZXJQcml2YXRlLmgnLAorICAgICAgICAgICAgJ3BsYXRmb3JtL3RyYWNrL1RleHRDdWVQYXJzZXIu
Y3BwJywKKyAgICAgICAgICAgICdwbGF0Zm9ybS90cmFjay9UZXh0Q3VlUGFyc2VyLmgnLAorICAg
ICAgICAgICAgJ3BsYXRmb3JtL3RyYWNrL1dlYlZUVFBhcnNlci5jcHAnLAorICAgICAgICAgICAg
J3BsYXRmb3JtL3RyYWNrL1dlYlZUVFBhcnNlci5oJywKICAgICAgICAgICAgICdwbGF0Zm9ybS93
aW4vQlN0cmluZy5jcHAnLAogICAgICAgICAgICAgJ3BsYXRmb3JtL3dpbi9CU3RyaW5nLmgnLAog
ICAgICAgICAgICAgJ3BsYXRmb3JtL3dpbi9CaXRtYXBJbmZvLmNwcCcsCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnByaSBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJpCmlu
ZGV4IDYzZTM3MmMzYmI4ZDEzZDUzZWM5ZWUyYTYwOWY3ODc3NGI5M2Y2NmUuLmMzNzZmNTg3NGFj
MTYwYzhlMDBiYjlmMzIxNmViZTVkM2JhZTFiYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUucHJpCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJpCkBAIC0xMDEsNiAr
MTAxLDcgQEAgV0VCQ09SRV9JTkNMVURFUEFUSCA9IFwKICAgICAkJFNPVVJDRV9ESVIvV2ViQ29y
ZS9wbGF0Zm9ybS9zcWwgXAogICAgICQkU09VUkNFX0RJUi9XZWJDb3JlL3BsYXRmb3JtL3RleHQg
XAogICAgICQkU09VUkNFX0RJUi9XZWJDb3JlL3BsYXRmb3JtL3RleHQvdHJhbnNjb2RlciBcCisg
ICAgJCRTT1VSQ0VfRElSL1dlYkNvcmUvcGxhdGZvcm0vdHJhY2sgXAogICAgICQkU09VUkNFX0RJ
Ui9XZWJDb3JlL3BsdWdpbnMgXAogICAgICQkU09VUkNFX0RJUi9XZWJDb3JlL3JlbmRlcmluZyBc
CiAgICAgJCRTT1VSQ0VfRElSL1dlYkNvcmUvcmVuZGVyaW5nL21hdGhtbCBcCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnBybyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJv
CmluZGV4IDg0ODJjMDNiMjFkYWVkZmZkYTc0ZDcwMDM1YjI0NjljOTEzZTczYmUuLjI3ZmZkZjg4
YzJiMTg3NWU3NDFiM2EwNDg4YjQwNmVkZGQ2Y2MxYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUucHJvCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUucHJvCkBAIC0xOTgs
NiArMTk4LDcgQEAgdjggewogICAgICAgICBiaW5kaW5ncy92OC9jdXN0b20vVjhQZXJmb3JtYW5j
ZUN1c3RvbS5jcHAgXAogICAgICAgICBiaW5kaW5ncy92OC9jdXN0b20vVjhTUUxSZXN1bHRTZXRS
b3dMaXN0Q3VzdG9tLmNwcCBcCiAgICAgICAgIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOFNRTFRyYW5z
YWN0aW9uQ3VzdG9tLmNwcCBcCisgICAgICAgIGJpbmRpbmdzL3Y4L2N1c3RvbS9WOFRleHRUcmFj
a0N1ZUN1c3RvbS5jcHAgXAogICAgICAgICBiaW5kaW5ncy92OC9jdXN0b20vVjhXZWJTb2NrZXRD
dXN0b20uY3BwIFwKICAgICAgICAgXAogICAgICAgICBiaW5kaW5ncy92OC9jdXN0b20vVjhTaGFy
ZWRXb3JrZXJDdXN0b20uY3BwIFwKQEAgLTIwNTYsNiArMjA1Nyw5IEBAIEhFQURFUlMgKz0gXAog
ICAgIHBsYXRmb3JtL1RocmVhZEdsb2JhbERhdGEuaCBcCiAgICAgcGxhdGZvcm0vVGhyZWFkVGlt
ZXJzLmggXAogICAgIHBsYXRmb3JtL1RpbWVyLmggXAorICAgIHBsYXRmb3JtL3RyYWNrL0N1ZVBh
cnNlci5oIFwKKyAgICBwbGF0Zm9ybS90cmFjay9DdWVQYXJzZXJQcml2YXRlLmggXAorICAgIHBs
YXRmb3JtL3RyYWNrL1dlYlZUVFBhcnNlci5oIFwKICAgICBwbGF0Zm9ybS9XaWRnZXQuaCBcCiAg
ICAgcGxhdGZvcm0vUGxhdGZvcm1TdHJhdGVnaWVzLmggXAogICAgIHBsYXRmb3JtL0xvY2FsaXpl
ZFN0cmluZ3MuaCBcCkBAIC0zMzYxLDYgKzMzNjUsMTQgQEAgU09VUkNFUyArPSBcCiAgICAgfQog
fQogCitjb250YWlucyhERUZJTkVTLCBFTkFCTEVfVklERU9fVFJBQ0s9MSkgeworCisgICAgIXY4
IHsKKyAgICAgICAgU09VUkNFUyArPSBcCisgICAgICAgICAgICBiaW5kaW5ncy9qcy9KU1RleHRU
cmFja0N1c3RvbS5jcHAKKyAgICB9Cit9CisKIGNvbnRhaW5zKERFRklORVMsIEVOQUJMRV9XRUJf
U09DS0VUUz0xKSB7CiAgICAgSEVBREVSUyArPSBcCiAgICAgICAgIHdlYnNvY2tldHMvVGhyZWFk
YWJsZVdlYlNvY2tldENoYW5uZWwuaCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggNDM5ZTMxM2UyZTkxMjgzNDc4YTU5MmJkZTll
YWVlNGM1ZTFjNGQ0Ny4uMzQ2YTY1ODhjYzQ3YTI2MjVjNzMwZTU0NjE2ZTI5MTRmZmQwMDhjNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJv
agpAQCAtNDA3OSw2ICs0MDc5LDcgQEAKIAkJQUJEREZFNzkwQTVDNkU3MDAwQTNFMTFEIC8qIFJl
bmRlck1lbnVMaXN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEFCRERGRTczMEE1QzZFNkYwMEEzRTExRCAvKiBSZW5kZXJNZW51TGlzdC5jcHAgKi87
IH07CiAJCUFCRERGRTdBMEE1QzZFNzAwMEEzRTExRCAvKiBSZW5kZXJNZW51TGlzdC5oIGluIEhl
YWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQUJEREZFNzQwQTVDNkU3
MDAwQTNFMTFEIC8qIFJlbmRlck1lbnVMaXN0LmggKi87IH07CiAJCUFEREYxQUQ3MTI1N0NEOUEw
MDAzQTc1OSAvKiBSZW5kZXJTVkdQYXRoLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBBRERGMUFENTEyNTdDRDlBMDAwM0E3NTkgLyogUmVuZGVyU1ZHUGF0
aC5oICovOyB9OworCQlCMTVBNUU5RDEzNzM1ODM2MDAwMDdBOTAgLyogVGV4dFRyYWNrUHJpdmF0
ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMTVB
NUU5QzEzNzM1ODM2MDAwMDdBOTAgLyogVGV4dFRyYWNrUHJpdmF0ZS5jcHAgKi87IH07CiAJCUIx
ODI3NDkzMTM0Q0E0QzEwMEI5OEMyRCAvKiBDYWxsYmFja0Z1bmN0aW9uLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIxODI3NDkyMTM0Q0E0QzEwMEI5
OEMyRCAvKiBDYWxsYmFja0Z1bmN0aW9uLmNwcCAqLzsgfTsKIAkJQjFENUVDQjUxMzRCNThEQTAw
ODdDNzhGIC8qIENhbGxiYWNrRnVuY3Rpb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEIxRDVFQ0I0MTM0QjU4REEwMDg3Qzc4RiAvKiBDYWxsYmFja0Z1
bmN0aW9uLmggKi87IH07CiAJCUIxRTU0NTk0MTM0NjI5QzEwMDkyQTU0NSAvKiBNZWRpYVN0cmVh
bUNsaWVudC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QjFFNTQ1ODgxMzQ2MjlDMTAwOTJBNTQ1IC8qIE1lZGlhU3RyZWFtQ2xpZW50LmggKi87IH07CkBA
IC0xMDMyNSw2ICsxMDMyNiw3IEBACiAJCUFCRERGRTc0MEE1QzZFNzAwMEEzRTExRCAvKiBSZW5k
ZXJNZW51TGlzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVuZGVyTWVu
dUxpc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQURERjFBRDQxMjU3Q0Q5QTAw
MDNBNzU5IC8qIFJlbmRlclNWR1BhdGguY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gUmVuZGVyU1ZHUGF0aC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUFEREYxQUQ1MTI1N0NEOUEwMDAzQTc1OSAvKiBSZW5kZXJTVkdQYXRoLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFJlbmRlclNWR1BhdGguaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKKwkJQjE1QTVFOUMxMzczNTgzNjAwMDA3QTkwIC8qIFRleHRUcmFja1ByaXZhdGUu
Y3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBuYW1lID0gVGV4dFRyYWNrUHJpdmF0
ZS5jcHA7IHBhdGggPSBodG1sL1RleHRUcmFja1ByaXZhdGUuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlCMTgyNzQ5MjEzNENBNEMxMDBCOThDMkQgLyogQ2FsbGJhY2tGdW5jdGlv
bi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBDYWxsYmFja0Z1bmN0
aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjFENUVDQjQxMzRCNThEQTAw
ODdDNzhGIC8qIENhbGxiYWNrRnVuY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gQ2FsbGJhY2tGdW5jdGlvbi5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlC
MUU1NDU4ODEzNDYyOUMxMDA5MkE1NDUgLyogTWVkaWFTdHJlYW1DbGllbnQuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gTWVkaWFTdHJlYW1DbGllbnQuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTEyNTcwLDYgKzEyNTcyLDcgQEAKIAkJCQkwMzQ3NjhERkZGMzhB
NTA0MTFEQjlDOEIgLyogUHJvZHVjdHMgKi8sCiAJCQkJMUNERDQ0NjYwQkE5QzgwMDAwRjkwMTQ3
IC8qIENvbmZpZ3VyYXRpb25zICovLAogCQkJCTQ0OTE5NTkwMEZCRTE3NUIwMEQ5RjgyNCAvKiBF
eHBvcnRzICovLAorCQkJCUIxNUE1RTlDMTM3MzU4MzYwMDAwN0E5MCAvKiBUZXh0VHJhY2tQcml2
YXRlLmNwcCAqLywKIAkJCSk7CiAJCQluYW1lID0gV2ViS2l0OwogCQkJc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsKQEAgLTI1Mzk4LDYgKzI1NDAxLDcgQEAKIAkJCQlFMUJFNTEyRDBDRjZDNTEyMDAy
RUE5NTkgLyogWFNMVFVuaWNvZGVTb3J0LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTk3N0UyRTBF
MTJGMEZDOUMwMEMxMzM3OSAvKiBYU1NGaWx0ZXIuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMzdB
RkZERjYxMzcwQTBCODAwRTg5NUMwIC8qIFNoYXJlZEJ1ZmZlckNSTEZMaW5lUmVhZGVyLmNwcCBp
biBTb3VyY2VzICovLAorCQkJCUIxNUE1RTlEMTM3MzU4MzYwMDAwN0E5MCAvKiBUZXh0VHJhY2tQ
cml2YXRlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBsb3ltZW50
UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmlu
ZGluZ3MvanMvSlNCaW5kaW5nc0FsbEluT25lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdz
L2pzL0pTQmluZGluZ3NBbGxJbk9uZS5jcHAKaW5kZXggMGYxZGUzNmYwMWQ1NWE4MTY0MWViY2Iz
MzJkYWJlZDRiOTc4NGVhMy4uOWUxNWUzNDVjOGM3ZWI3MDA3YmU4MTViODZlZDdmMmEyYmY4Yjcw
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNCaW5kaW5nc0FsbElu
T25lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0JpbmRpbmdzQWxsSW5P
bmUuY3BwCkBAIC0xMzgsNiArMTM4LDcgQEAKICNpbmNsdWRlICJKU1N0eWxlU2hlZXRDdXN0b20u
Y3BwIgogI2luY2x1ZGUgIkpTU3R5bGVTaGVldExpc3RDdXN0b20uY3BwIgogI2luY2x1ZGUgIkpT
VGV4dEN1c3RvbS5jcHAiCisjaW5jbHVkZSAiSlNUZXh0VHJhY2tDdWVDdXN0b20uY3BwIgogI2lu
Y2x1ZGUgIkpTVG91Y2hDdXN0b20uY3BwIgogI2luY2x1ZGUgIkpTVG91Y2hMaXN0Q3VzdG9tLmNw
cCIKICNpbmNsdWRlICJKU1RyZWVXYWxrZXJDdXN0b20uY3BwIgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwCmluZGV4IGZjYmNhNmFiN2UxZmJl
ZDFiYmI1ZGIzMmU1NWM4MmFkNjkyNmVjZjIuLmVmYTFkNDY1N2ZhZGJjYTYxOTRiZjJiMzk2YzJh
ZGQ2YTgyMzAyMjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9N
V2luZG93Q3VzdG9tLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0RPTVdp
bmRvd0N1c3RvbS5jcHAKQEAgLTU2LDYgKzU2LDEwIEBACiAjaW5jbHVkZSAiU2hhcmVkV29ya2Vy
UmVwb3NpdG9yeS5oIgogI2luY2x1ZGUgPHJ1bnRpbWUvSlNGdW5jdGlvbi5oPgogCisjaWYgRU5B
QkxFKFZJREVPX1RSQUNLKQorI2luY2x1ZGUgIkpTVGV4dFRyYWNrQ3VlLmgiCisjZW5kaWYKKwog
I2lmIEVOQUJMRShTSEFSRURfV09SS0VSUykKICNpbmNsdWRlICJKU1NoYXJlZFdvcmtlci5oIgog
I2VuZGlmCkBAIC02MDgsNiArNjEyLDEzIEBAIEpTVmFsdWUgSlNET01XaW5kb3c6OndlYlNvY2tl
dChFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0CiB9CiAjZW5kaWYKIAorI2lmIEVOQUJMRShWSURFT19U
UkFDSykKK0pTVmFsdWUgSlNET01XaW5kb3c6OnRleHRUcmFja0N1ZShFeGVjU3RhdGUqIGV4ZWMp
IGNvbnN0Cit7CisgICAgcmV0dXJuIGdldERPTUNvbnN0cnVjdG9yPEpTVGV4dFRyYWNrQ3VlQ29u
c3RydWN0b3I+KGV4ZWMsIHRoaXMpOworfQorI2VuZGlmCisKIC8vIEN1c3RvbSBmdW5jdGlvbnMK
IAogSlNWYWx1ZSBKU0RPTVdpbmRvdzo6b3BlbihFeGVjU3RhdGUqIGV4ZWMpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50VGFyZ2V0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRUYXJnZXQuY3BwCmluZGV4IDg2ZDljNjdjNjk5MGEy
MzFiOGM2NDIzYTYxYjM5Mzk4NDQxZjRkZDAuLmRjODMyYWZmZWM5YTU4OTkzNWIwNTQ0NGVmZWZm
NDBjNGFjODkyZmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZl
bnRUYXJnZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRUYXJn
ZXQuY3BwCkBAIC0xMDAsNiArMTAwLDEzIEBACiAjaW5jbHVkZSAiRmlsZVJlYWRlci5oIgogI2Vu
ZGlmCiAKKyNpZiBFTkFCTEUoVklERU9fVFJBQ0spCisjaW5jbHVkZSAiSlNUZXh0VHJhY2suaCIK
KyNpbmNsdWRlICJKU1RleHRUcmFja0N1ZS5oIgorI2luY2x1ZGUgIlRleHRUcmFjay5oIgorI2lu
Y2x1ZGUgIlRleHRUcmFja0N1ZS5oIgorI2VuZGlmCisKIHVzaW5nIG5hbWVzcGFjZSBKU0M7CiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTE1Niw2ICsxNjMsMTQgQEAgSlNWYWx1ZSB0b0pTKEV4
ZWNTdGF0ZSogZXhlYywgSlNET01HbG9iYWxPYmplY3QqIGdsb2JhbE9iamVjdCwgRXZlbnRUYXJn
ZXQqIHRhcmcKICAgICAgICAgcmV0dXJuIHRvSlNET01HbG9iYWxPYmplY3Qod29ya2VyQ29udGV4
dCwgZXhlYyk7CiAjZW5kaWYKIAorI2lmIEVOQUJMRShWSURFT19UUkFDSykKKyAgICBpZiAoVGV4
dFRyYWNrKiB0ZXh0VHJhY2sgPSB0YXJnZXQtPnRvVGV4dFRyYWNrKCkpCisgICAgICAgIHJldHVy
biB0b0pTKGV4ZWMsIHRleHRUcmFjayk7CisKKyAgICBpZiAoVGV4dFRyYWNrQ3VlKiB0ZXh0VHJh
Y2tDdWUgPSB0YXJnZXQtPnRvVGV4dFRyYWNrQ3VlKCkpCisgICAgICAgIHJldHVybiB0b0pTKGV4
ZWMsIHRleHRUcmFja0N1ZSk7CisjZW5kaWYKKwogI2lmIEVOQUJMRShOT1RJRklDQVRJT05TKQog
ICAgIGlmIChOb3RpZmljYXRpb24qIG5vdGlmaWNhdGlvbiA9IHRhcmdldC0+dG9Ob3RpZmljYXRp
b24oKSkKICAgICAgICAgcmV0dXJuIHRvSlMoZXhlYywgZ2xvYmFsT2JqZWN0LCBub3RpZmljYXRp
b24pOwpAQCAtMjM3LDYgKzI1MiwxMSBAQCBFdmVudFRhcmdldCogdG9FdmVudFRhcmdldChKU0M6
OkpTVmFsdWUgdmFsdWUpCiAgICAgQ09OVkVSVF9UT19FVkVOVF9UQVJHRVQoV2ViU29ja2V0KQog
I2VuZGlmCiAKKyNpZiBFTkFCTEUoVklERU9fVFJBQ0spCisgICAgQ09OVkVSVF9UT19FVkVOVF9U
QVJHRVQoVGV4dFRyYWNrKQorICAgIENPTlZFUlRfVE9fRVZFTlRfVEFSR0VUKFRleHRUcmFja0N1
ZSkKKyNlbmRpZgorCiAgICAgcmV0dXJuIDA7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2JpbmRpbmdzL2pzL0pTVGV4dFRyYWNrQ3VlQ3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTVGV4dFRyYWNrQ3VlQ3VzdG9tLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi43ZDg1NGU3
YzU2YmQ2YzQ3NDI4MjViZjRiYzI4NDMyZjEyZjg4YmI3Ci0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNUZXh0VHJhY2tDdWVDdXN0b20uY3BwCkBAIC0wLDAg
KzEsODEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0
cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQg
YmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1p
dHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoK
KyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJv
dmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0
aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5
IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRo
ZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElN
UExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICog
SU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQ
QVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwg
QVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBP
UiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4g
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElH
RU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICog
T0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoVklE
RU9fVFJBQ0spCisKKyNpbmNsdWRlICJKU1RleHRUcmFja0N1ZS5oIgorCisjaW5jbHVkZSAiS1VS
TC5oIgorI2luY2x1ZGUgIkpTRXZlbnRMaXN0ZW5lci5oIgorI2luY2x1ZGUgIlRleHRUcmFja0N1
ZS5oIgorI2luY2x1ZGUgPHJ1bnRpbWUvRXJyb3IuaD4KKwordXNpbmcgbmFtZXNwYWNlIEpTQzsK
KworbmFtZXNwYWNlIFdlYkNvcmUgeworCitFbmNvZGVkSlNWYWx1ZSBKU0NfSE9TVF9DQUxMIEpT
VGV4dFRyYWNrQ3VlQ29uc3RydWN0b3I6OmNvbnN0cnVjdEpTVGV4dFRyYWNrQ3VlKEV4ZWNTdGF0
ZSogZXhlYykKK3sKKyAgICBKU1RleHRUcmFja0N1ZUNvbnN0cnVjdG9yKiBqc0NvbnN0cnVjdG9y
ID0gc3RhdGljX2Nhc3Q8SlNUZXh0VHJhY2tDdWVDb25zdHJ1Y3Rvcio+KGV4ZWMtPmNhbGxlZSgp
KTsKKyAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0ID0ganNDb25zdHJ1Y3Rvci0+
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpOworICAgIGlmICghY29udGV4dCkKKyAgICAgICAgcmV0
dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVSZWZlcmVuY2VFcnJvcihleGVjLCAiVGV4dFRy
YWNrQ3VlIGNvbnN0cnVjdG9yIGFzc29jaWF0ZWQgZG9jdW1lbnQgaXMgdW5hdmFpbGFibGUiKSk7
CisKKyAgICBSZWZQdHI8VGV4dFRyYWNrQ3VlPiBjdWU7CisgICAgCisgICAgaWYgKGV4ZWMtPmFy
Z3VtZW50Q291bnQoKSkgeworICAgICAgICAKKyAgICAgICAgaWYgKGV4ZWMtPmFydWd1bWVudENv
dW50KCkgPCA0KSB7CisgICAgICAgICAgICByZXR1cm4gdGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0
ZVN5bnRheEVycm9yKGV4ZWMsICJOb3QgZW5vdWdoIGFyZ3VtZW50cyIpKTsKKyAgICAgICAgfQor
CisgICAgICAgIFN0cmluZyBpZCA9IHVzdHJpbmdUb1N0cmluZyhleGVjLT5hcmd1bWVudCgwKS50
b1N0cmluZyhleGVjKSk7CisgICAgICAgIGlmIChleGVjLT5oYWRFeGNlcHRpb24oKSkKKyAgICAg
ICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3JlYXRlU3ludGF4RXJyb3IoZXhlYywg
Im5vIElEIikpOworCisgICAgICAgIGRvdWJsZSBzdGFydFRpbWUgPSBleGVjLT5hcmd1bWVudCgx
KS50b051bWJlcihleGVjKTsKKyAgICAgICAgaWYgKGV4ZWMtPmhhZEV4Y2VwdGlvbigpKQorICAg
ICAgICAgICAgcmV0dXJuIHRocm93Vk1FcnJvcihleGVjLCBjcmVhdGVTeW50YXhFcnJvcihleGVj
LCAibm8gc3RhcnRUaW1lIikpOworICAgICAgICAgICAgCisgICAgICAgIGRvdWJsZSBlbmRUaW1l
ID0gZXhlYy0+YXJndW1lbnQoMikudG9OdW1iZXIoZXhlYyk7CisgICAgICAgIGlmIChleGVjLT5o
YWRFeGNlcHRpb24oKSkKKyAgICAgICAgICAgIHJldHVybiB0aHJvd1ZNRXJyb3IoZXhlYywgY3Jl
YXRlU3ludGF4RXJyb3IoZXhlYywgIm5vIGVuZFRpbWUiKSk7CisKKyAgICAgICAgU3RyaW5nIGNv
bnRlbnQgPSB1c3RyaW5nVG9TdHJpbmcoZXhlYy0+YXJndW1lbnQoMykudG9TdHJpbmcoZXhlYykp
OworICAgICAgICBpZiAoZXhlYy0+aGFkRXhjZXB0aW9uKCkpCisgICAgICAgICAgICByZXR1cm4g
dGhyb3dWTUVycm9yKGV4ZWMsIGNyZWF0ZVN5bnRheEVycm9yKGV4ZWMsICJubyBjdWUgdGV4dCIp
KTsKKworICAgICAgICAKKyAgICAgICAgY3VlID0gVGV4dFRyYWNrQ3VlOjpjcmVhdGUoY29udGV4
dCwgaWQsIHN0YXJ0VGltZSwgZW5kVGltZSwgY29udGVudCAvKiwgIiIsIGZhbHNlKi8pOworCisg
ICAgICAgIHJldHVybiBKU1ZhbHVlOjplbmNvZGUoQ1JFQVRFX0RPTV9PQkpFQ1RfV1JBUFBFUihl
eGVjLCBqc0NvbnN0cnVjdG9yLT5nbG9iYWxPYmplY3QoKSwgVGV4dFRyYWNrQ3VlLCBjdWUuZ2V0
KCkpKTsKKyAgICB9Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1dvcmtlckNvbnRleHRDdXN0b20u
Y3BwIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvanMvSlNXb3JrZXJDb250ZXh0Q3VzdG9tLmNw
cAppbmRleCBjZTMwZDQ0YzUzZGM5YzIyNDNjMGNjOGY1ZjJkMjZiMGVmNmIzMDc4Li5mMWYxMDBm
OTg1YTk4MGFlMDVkNzA4ZDhhZTBiMDkyNzI0ZGVlN2M3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9iaW5kaW5ncy9qcy9KU1dvcmtlckNvbnRleHRDdXN0b20uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2JpbmRpbmdzL2pzL0pTV29ya2VyQ29udGV4dEN1c3RvbS5jcHAKQEAgLTQ5LDYgKzQ5
LDEwIEBACiAjaW5jbHVkZSAiSlNXZWJTb2NrZXQuaCIKICNlbmRpZgogCisjaWYgRU5BQkxFKFZJ
REVPX1RSQUNLKQorI2luY2x1ZGUgIkpTVGV4dFRyYWNrQ3VlLmgiCisjZW5kaWYKKwogdXNpbmcg
bmFtZXNwYWNlIEpTQzsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMTAwLDYgKzEwNCwxMyBA
QCBKU1ZhbHVlIEpTV29ya2VyQ29udGV4dDo6d2ViU29ja2V0KEV4ZWNTdGF0ZSogZXhlYykgY29u
c3QKIH0KICNlbmRpZgogCisjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQorSlNWYWx1ZSBKU1dvcmtl
ckNvbnRleHQ6OnRleHRUcmFja0N1ZShFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0Cit7CisgICAgcmV0
dXJuIGdldERPTUNvbnN0cnVjdG9yPEpTVGV4dFRyYWNrQ3VlQ29uc3RydWN0b3I+KGV4ZWMsIHRo
aXMpOworfQorI2VuZGlmCisKIEpTVmFsdWUgSlNXb3JrZXJDb250ZXh0OjppbXBvcnRTY3JpcHRz
KEV4ZWNTdGF0ZSogZXhlYykKIHsKICAgICBpZiAoIWV4ZWMtPmFyZ3VtZW50Q291bnQoKSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvclY4
LnBtIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0K
aW5kZXggYTk3YWQxMWUwOTM4ZDM0ODNjODYzMzdhOWMxYWFkYWU1MjYxNDc0Ni4uZjI0NWEwNzNi
MjIyYjY3ZGY4OGZiMDNhNWMzMjIzZDBjYWNlMGUxMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0KKysrIGIvU291cmNlL1dlYkNv
cmUvYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9yVjgucG0KQEAgLTI2MDIsNiArMjYwMiw3
IEBAIHN1YiBJc0FjdGl2ZURvbVR5cGUKICAgICByZXR1cm4gMSBpZiAkdHlwZSBlcSAiSURCVHJh
bnNhY3Rpb24iOwogICAgIHJldHVybiAxIGlmICR0eXBlIGVxICJGaWxlUmVhZGVyIjsKICAgICBy
ZXR1cm4gMSBpZiAkdHlwZSBlcSAiRmlsZVdyaXRlciI7CisgICAgcmV0dXJuIDEgaWYgJHR5cGUg
ZXEgIlRleHRUcmFja0N1ZSI7CiAgICAgcmV0dXJuIDA7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV3JhcHBlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9i
aW5kaW5ncy92OC9WOERPTVdyYXBwZXIuY3BwCmluZGV4IGUyZjg5NmI5OTllYWUzYTRlM2E0N2Zh
Mjg0MzE3ZjU3ODIwNGFkYjMuLjdkYjA4YzBjMzRjODljOGFlOTgxNTA3YzgzZDRkNTI4Y2NhYjA0
M2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L1Y4RE9NV3JhcHBlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvVjhET01XcmFwcGVyLmNwcApAQCAt
ODcsNiArODcsMTEgQEAKICNpbmNsdWRlICJWOEphdmFTY3JpcHRBdWRpb05vZGUuaCIKICNlbmRp
ZgogCisjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQorI2luY2x1ZGUgIlY4VGV4dFRyYWNrLmgiCisj
aW5jbHVkZSAiVjhUZXh0VHJhY2tDdWUuaCIKKyNlbmRpZgorCiAjaW5jbHVkZSA8YWxnb3JpdGht
PgogI2luY2x1ZGUgPHV0aWxpdHk+CiAjaW5jbHVkZSA8djgtZGVidWcuaD4KQEAgLTQ0OCw2ICs0
NTMsMTMgQEAgdjg6OkhhbmRsZTx2ODo6VmFsdWU+IFY4RE9NV3JhcHBlcjo6Y29udmVydEV2ZW50
VGFyZ2V0VG9WOE9iamVjdChFdmVudFRhcmdldCogdGEKICAgICAgICAgcmV0dXJuIHRvVjgoYXVk
aW9Db250ZXh0KTsKICNlbmRpZiAgICAKIAorI2lmIEVOQUJMRShWSURFT19UUkFDSykKKyAgICBp
ZihUZXh0VHJhY2sqIHRyYWNrID0gdGFyZ2V0LT50b1RleHRUcmFjaygpKQorICAgICAgICByZXR1
cm4gdG9WOCh0cmFjayk7CisgICAgaWYoVGV4dFRyYWNrQ3VlKiBjdWUgPSB0YXJnZXQtPnRvVGV4
dFRyYWNrQ3VlKCkpCisgICAgICAgIHJldHVybiB0b1Y4KGN1ZSk7CisjZW5kaWYgIAorCiAgICAg
QVNTRVJUKDApOwogICAgIHJldHVybiBub3RIYW5kbGVkQnlJbnRlcmNlcHRvcigpOwogfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYmluZGluZ3MvdjgvY3VzdG9tL1Y4VGV4dFRyYWNrQ3Vl
Q3VzdG9tLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4L2N1c3RvbS9WOFRleHRUcmFj
a0N1ZUN1c3RvbS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYTlhNGEwOGJiYzgwOWM3ZTU5NTNlNzBjNGNhNzli
Zjg0ZjhlOWU3ZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2JpbmRpbmdzL3Y4
L2N1c3RvbS9WOFRleHRUcmFja0N1ZUN1c3RvbS5jcHAKQEAgLTAsMCArMSwxMjMgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAq
CisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3
aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0
aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJp
YnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXBy
b2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1l
bnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1
dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVS
LCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIs
IElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElS
RUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFM
IERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQg
T0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisg
KiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBP
TiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklD
VCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJ
U0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FS
RSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAq
LworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoVklERU9fVFJBQ0spCisKKyNp
bmNsdWRlICJWOFRleHRUcmFja0N1ZS5oIgorCisjaW5jbHVkZSAiRnJhbWUuaCIKKyNpbmNsdWRl
ICJTZXR0aW5ncy5oIgorI2luY2x1ZGUgIlRleHRUcmFja0N1ZS5oIgorI2luY2x1ZGUgIlY4Qmlu
ZGluZy5oIgorI2luY2x1ZGUgIlY4RG9jdW1lbnQuaCIKKyNpbmNsdWRlICJWOFByb3h5LmgiCisj
aW5jbHVkZSAiV29ya2VyQ29udGV4dC5oIgorI2luY2x1ZGUgIldvcmtlckNvbnRleHRFeGVjdXRp
b25Qcm94eS5oIgorCisjaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK3Y4OjpIYW5kbGU8djg6OlZhbHVlPiBWOFRleHRUcmFja0N1ZTo6Y29uc3RydWN0b3JD
YWxsYmFjayhjb25zdCB2ODo6QXJndW1lbnRzJiBhcmdzKQoreworICAgIElOQ19TVEFUUygiRE9N
LlRleHRUcmFja0N1ZS5Db25zdHJ1Y3RvciIpOworCisgICAgLy8gSWYgd2UgcmV0dXJuIGFuIGFs
cmVhZHkgZXhpc3RpbmcgVGV4dFRyYWNrQ3VlIChlLmcuIGZyb20gCisgICAgLy8gVGV4dFRyYWNr
Q3VlLmdldEN1ZUJ5SWQoKSksIHRoaXMgY29kZSBpcyBjYWxsZWQgd2l0aCBhIHplcm8tbGVuZ3Ro
CisgICAgLy8gYXJndW1lbnQgbGlzdC4gIFRoZSBWOERPTVdyYXBwZXIgd2lsbCB0aGVuIHNldCB0
aGUgaW50ZXJuYWwgcG9pbnRlciBpbgorICAgIC8vIHRoZSBuZXdseSBjcmVhdGVkIG9iamVjdC4K
KyAgICAvLyBVbmZvcnR1bmF0ZWx5IGl0IGRvZXNuJ3QgbG9vayBsaWtlIGl0J3MgcG9zc2libGUg
dG8gZGlzdGluZ3Vpc2ggYmV0d2VlbgorICAgIC8vIHRoaXMgY2FzZSBhbmQgdGhhdCB3aGVyZSB0
aGUgdXNlciBjYWxscyAibmV3IFRleHRUcmFja0N1ZSguLikiIGZyb20gCisgICAgLy8gSmF2YVNj
cmlwdC4gVG8gZ3VhcmQgYWdhaW5zdCBwcm9ibGVtcywgd2UgYWx3YXlzIGNyZWF0ZSBhdCBsZWFz
dCBhbgorICAgIC8vICJlbXB0eSIgVGV4dFRyYWNrQ3VlLCBldmVuIGlmIGl0IGlzIGltbWVkaWF0
ZWx5IG92ZXJ3cml0dGVuIGJ5IHRoZSBWOERPTVdyYXBwZXIuCisKKyAgICBpZiAoIWFyZ3MuSXND
b25zdHJ1Y3RDYWxsKCkpCisgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCJET00gb2JqZWN0IGN1
c3RydWN0b3IgY2Fubm90IGJlIGNhbGxlZCBhcyBhIGZ1bmN0aW9uLiIpOworCisgICAgU3RyaW5n
IGlkID0gIiI7CisgICAgZG91YmxlIHN0YXJ0VGltZSA9IDA7CisgICAgZG91YmxlIGVuZFRpbWUg
PSAwOworICAgIFN0cmluZyBjb250ZW50ID0gIiI7CisgICAgU3RyaW5nIHNldHRpbmdzID0gIiI7
CisgICAgYm9vbCBwYXVzZU9uRXhpdCA9IGZhbHNlOworICAgIAorICAgIGlmIChhcmdzLkxlbmd0
aCgpID4gMCkgeworICAgICAgCisgICAgICAgIGlmIChhcmdzLkxlbmd0aCgpIDwgNCkKKyAgICAg
ICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCJOb3QgZW5vdWdoIGFyZ3VtZW50cyIsIFY4UHJveHk6
OlN5bnRheEVycm9yKTsKKyAgICAKKyAgICAgICAgdjg6OlRyeUNhdGNoIHRyeUNhdGNoOworICAg
ICAgICBpZCA9IHRvV2ViQ29yZVN0cmluZyhhcmdzWzBdKTsKKyAgICAgICAgaWYgKHRyeUNhdGNo
Lkhhc0NhdWdodCgpKQorICAgICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IodHJ5Q2F0Y2guRXhj
ZXB0aW9uKCkpOworICAgICAgICBpZiAoaWQuaXNFbXB0eSgpKQorICAgICAgICAgICAgcmV0dXJu
IHRocm93RXJyb3IoIkVtcHR5IElEIiwgVjhQcm94eTo6U3ludGF4RXJyb3IpOworICAgICAgICAK
KyAgICAgICAgc3RhcnRUaW1lID0gYXJnc1sxXS0+TnVtYmVyVmFsdWUoKTsKKyAgICAgICAgaWYg
KHRyeUNhdGNoLkhhc0NhdWdodCgpKQorICAgICAgICAgICAgcmV0dXJuIHRocm93RXJyb3IodHJ5
Q2F0Y2guRXhjZXB0aW9uKCkpOworICAgICAgICBpZiAoIXN0YXJ0VGltZSkKKyAgICAgICAgICAg
IHJldHVybiB0aHJvd0Vycm9yKCJFbXB0eSBzdGFydFRpbWUiLCBWOFByb3h5OjpTeW50YXhFcnJv
cik7CisgICAgCisgICAgICAgIGVuZFRpbWUgPSBhcmdzWzJdLT5OdW1iZXJWYWx1ZSgpOworICAg
ICAgICBpZiAodHJ5Q2F0Y2guSGFzQ2F1Z2h0KCkpCisgICAgICAgICAgICByZXR1cm4gdGhyb3dF
cnJvcih0cnlDYXRjaC5FeGNlcHRpb24oKSk7CisgICAgICAgIGlmICghZW5kVGltZSkKKyAgICAg
ICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCJFbXB0eSBlbmRUaW1lIiwgVjhQcm94eTo6U3ludGF4
RXJyb3IpOworICAgIAorICAgICAgICBjb250ZW50ID0gdG9XZWJDb3JlU3RyaW5nKGFyZ3NbM10p
OworICAgICAgICBpZiAodHJ5Q2F0Y2guSGFzQ2F1Z2h0KCkpCisgICAgICAgICAgICByZXR1cm4g
dGhyb3dFcnJvcih0cnlDYXRjaC5FeGNlcHRpb24oKSk7CisgICAgICAgIGlmIChjb250ZW50Lmlz
RW1wdHkoKSkKKyAgICAgICAgICAgIHJldHVybiB0aHJvd0Vycm9yKCJFbXB0eSBjdWUgdGV4dCIs
IFY4UHJveHk6OlN5bnRheEVycm9yKTsKKworICAgICAgICBpZiAoYXJncy5MZW5ndGgoKSA+IDQp
CisgICAgICAgICAgICBzZXR0aW5ncyA9IHRvV2ViQ29yZVN0cmluZyhhcmdzWzRdKTsKKyAgICAg
ICAgaWYgKGFyZ3MuTGVuZ3RoKCkgPiA1KQorICAgICAgICAgICAgcGF1c2VPbkV4aXQgPSBhcmdz
WzVdLT5Cb29sZWFuVmFsdWUoKTsKKyAgICB9CisgICAgCisgICAgLy8gR2V0IHRoZSBzY3JpcHQg
ZXhlY3V0aW9uIGNvbnRleHQuCisgICAgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCA9
IGdldFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKKyAgICBpZiAoIWNvbnRleHQpCisgICAgICAg
IHJldHVybiB0aHJvd0Vycm9yKCJUZXh0VHJhY2tDdWUgY29uc3RydWN0b3IncyBhc3NvY2lhdGVk
IGZyYW1lIGlzIG5vdCBhdmFpbGFibGUiLCBWOFByb3h5OjpSZWZlcmVuY2VFcnJvcik7CisKKyAg
ICBSZWZQdHI8VGV4dFRyYWNrQ3VlPiBjdWUgPSBUZXh0VHJhY2tDdWU6OmNyZWF0ZShjb250ZXh0
LCBpZCwgc3RhcnRUaW1lLCBlbmRUaW1lLCBjb250ZW50LCBzZXR0aW5ncywgcGF1c2VPbkV4aXQp
OworCisgICAgLy8gU2V0dXAgdGhlIHN0YW5kYXJkIHdyYXBwZXIgb2JqZWN0IGludGVybmFsIGZp
ZWxkcy4KKyAgICBWOERPTVdyYXBwZXI6OnNldERPTVdyYXBwZXIoYXJncy5Ib2xkZXIoKSwgJmlu
Zm8sIGN1ZS5nZXQoKSk7CisKKyAgICAvLyBBZGQgb2JqZWN0IHRvIHRoZSB3cmFwcGVyIG1hcC4K
KyAgICBjdWUtPnJlZigpOworICAgIFY4RE9NV3JhcHBlcjo6c2V0SlNXcmFwcGVyRm9yQWN0aXZl
RE9NT2JqZWN0KGN1ZS5nZXQoKSwgdjg6OlBlcnNpc3RlbnQ8djg6Ok9iamVjdD46Ok5ldyhhcmdz
LkhvbGRlcigpKSk7CisKKyAgICByZXR1cm4gYXJncy5Ib2xkZXIoKTsKK30KKworfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9t
ZWRpYUNvbnRyb2xzLmNzcyBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9tZWRpYUNvbnRyb2xzLmNzcwpp
bmRleCBkYTYxNDYwYWU3NjRmNjFiODc5YWVlZGQ5ZjFjNzllNGJkMTczMTM3Li4wYWE2ODcyMjEx
NTA3YzVkNjg2ZmZkYWQ5ZDFjMWEzYWMyODAwMmRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvbWVkaWFDb250cm9scy5jc3MKKysrIGIvU291cmNlL1dlYkNvcmUvY3NzL21lZGlhQ29u
dHJvbHMuY3NzCkBAIC0xODUsMyArMTg1LDE5IEBAIGF1ZGlvOjotd2Via2l0LW1lZGlhLWNvbnRy
b2xzLWZ1bGxzY3JlZW4tdm9sdW1lLW1pbi1idXR0b24sIHZpZGVvOjotd2Via2l0LW1lZGlhCiBh
dWRpbzo6LXdlYmtpdC1tZWRpYS1jb250cm9scy1mdWxsc2NyZWVuLXZvbHVtZS1tYXgtYnV0dG9u
LCB2aWRlbzo6LXdlYmtpdC1tZWRpYS1jb250cm9scy1mdWxsc2NyZWVuLXZvbHVtZS1tYXgtYnV0
dG9uIHsKICAgICBkaXNwbGF5OiBub25lOwogfQorCit2aWRlbzo6LXdlYmtpdC1tZWRpYS10ZXh0
LXRyYWNrIHsKKyAgICBkaXNwbGF5OiBibG9jazsKKyAgICB3aWR0aDo5MCU7CisgICAgaGVpZ2h0
OjQwcHg7CisgICAgcG9zaXRpb246YWJzb2x1dGU7CisgICAgcGFkZGluZzoxMHB4OworICAgIGJv
dHRvbTozMHB4OworICAgIGxlZnQ6NSU7CisgICAgYmFja2dyb3VuZC1jb2xvcjogYmxhY2s7Cisg
ICAgb3BhY2l0eTowLjY7IGZpbHRlcjphbHBoYShvcGFjaXR5PTYwKTsKKyAgICB0ZXh0LWFsaWdu
OmNlbnRlcjsKKyAgICBmb250LXNpemU6MjRweDsKKyAgICBmb250LWZhbWlseTogSGVsdmV0aWNh
LCBhcmlhbCwgc2Fucy1zZXJpZjsKKyAgICBjb2xvcjogd2hpdGU7Cit9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9kb20vRXZlbnROYW1lcy5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50
TmFtZXMuaAppbmRleCBlY2UyYTA4ZmRlOTM4ZWQwY2YzNTQ3ZWYxOGQ4NWMwMjhiN2M0ZDQzLi5j
ODI4ZTUxYzQxOGYwNzBkODRiMWQ5NGQzNTJjNzFkNmExMTE1OWI2IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9kb20vRXZlbnROYW1lcy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVu
dE5hbWVzLmgKQEAgLTEyOCw4ICsxMjgsMTEgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogICAgIFwK
ICAgICBtYWNybyhjYW5wbGF5KSBcCiAgICAgbWFjcm8oY2FucGxheXRocm91Z2gpIFwKKyAgICBt
YWNybyhjdWVjaGFuZ2UpIFwKICAgICBtYWNybyhkdXJhdGlvbmNoYW5nZSkgXAogICAgIG1hY3Jv
KGVtcHRpZWQpIFwKKyAgICBtYWNybyhlbnRlcikgXAorICAgIG1hY3JvKGV4aXQpIFwKICAgICBt
YWNybyhlbmRlZCkgXAogICAgIG1hY3JvKGxvYWRlZGRhdGEpIFwKICAgICBtYWNybyhsb2FkZWRt
ZXRhZGF0YSkgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FdmVudFRhcmdldC5jcHAKaW5kZXggN2MwNThjMjNmZGFm
YzAwY2MyYmY1NWY4Y2M1YWE3NmIwZWVkM2RjYS4uYTNmZGQzYmQ0ODZmMWEyMDZlOGIzZTEwMDkw
MjZiNjBmMGFkMDBhZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0V2ZW50VGFyZ2V0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuY3BwCkBAIC0xMTksNiAr
MTE5LDE3IEBAIFNWR0VsZW1lbnRJbnN0YW5jZSogRXZlbnRUYXJnZXQ6OnRvU1ZHRWxlbWVudElu
c3RhbmNlKCkKIH0KICNlbmRpZgogCisjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQorVGV4dFRyYWNr
KiBFdmVudFRhcmdldDo6dG9UZXh0VHJhY2soKQoreworICAgIHJldHVybiAwOworfQorVGV4dFRy
YWNrQ3VlKiBFdmVudFRhcmdldDo6dG9UZXh0VHJhY2tDdWUoKQoreworICAgIHJldHVybiAwOwor
fQorI2VuZGlmCisKICNpZiBFTkFCTEUoV0VCX0FVRElPKQogQXVkaW9Db250ZXh0KiBFdmVudFRh
cmdldDo6dG9BdWRpb0NvbnRleHQoKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L0V2ZW50VGFyZ2V0LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuaAppbmRleCBj
MjYyMjMwYTM2OTRiZWRiYzM0YjdhOTgzYmZkNGExYTQxZGQ4ZGNlLi4wN2EyZDdmYjU4OWMxMTM5
ODAzOTBmOGQ2NzM3Y2VlZjU0MjFiYTk3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20v
RXZlbnRUYXJnZXQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRXZlbnRUYXJnZXQuaApAQCAt
NTgsNiArNTgsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgTWVzc2FnZVBvcnQ7
CiAgICAgY2xhc3MgTm9kZTsKICAgICBjbGFzcyBOb3RpZmljYXRpb247CisgICAgY2xhc3MgVGV4
dFRyYWNrOworICAgIGNsYXNzIFRleHRUcmFja0N1ZTsKICAgICBjbGFzcyBTVkdFbGVtZW50SW5z
dGFuY2U7CiAgICAgY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKICAgICBjbGFzcyBTaGFy
ZWRXb3JrZXI7CkBAIC0xMjIsNiArMTI0LDExIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAg
ICAgdmlydHVhbCBTaGFyZWRXb3JrZXJDb250ZXh0KiB0b1NoYXJlZFdvcmtlckNvbnRleHQoKTsK
ICNlbmRpZgogCisjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQorICAgICAgICB2aXJ0dWFsIFRleHRU
cmFjayogdG9UZXh0VHJhY2soKTsKKyAgICAgICAgdmlydHVhbCBUZXh0VHJhY2tDdWUqIHRvVGV4
dFRyYWNrQ3VlKCk7CisjZW5kaWYKKwogI2lmIEVOQUJMRShXRUJfQVVESU8pCiAgICAgICAgIHZp
cnR1YWwgQXVkaW9Db250ZXh0KiB0b0F1ZGlvQ29udGV4dCgpOwogICAgICAgICB2aXJ0dWFsIEph
dmFTY3JpcHRBdWRpb05vZGUqIHRvSmF2YVNjcmlwdEF1ZGlvTm9kZSgpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvaHRtbC9DdWVJbmRleC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0N1
ZUluZGV4LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4zYmM5NzUzOTUxMjVjYjIzMTlmZjYzYmI5NWUzM2U1MjJl
NjBiYTIyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9DdWVJbmRleC5j
cHAKQEAgLTAsMCArMSwxNDYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIElu
Yy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisj
aWYgRU5BQkxFKFZJREVPX1RSQUNLKQorCisjaW5jbHVkZSAiQ3VlSW5kZXguaCIKKworI2luY2x1
ZGUgIlRleHRUcmFja0N1ZS5oIgorI2luY2x1ZGUgIlRleHRUcmFja0N1ZUxpc3QuaCIKKyNpbmNs
dWRlIDx3dGYvVmVjdG9yLmg+CisKKyNpbmNsdWRlIDx3dGYvdGV4dC9DU3RyaW5nLmg+CisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworLy8gQ3VlU2V0CisKK0N1ZVNldCBDdWVTZXQ6OmRpZmZlcmVu
Y2UoY29uc3QgQ3VlU2V0JiBvdGhlcikKK3sKKyAgICBDdWVTZXQgbmV3U2V0OworICAgIGZvciAo
Q3VlU2V0OjpJdGVyYXRvciBpdCA9IG90aGVyLm1fc2V0LmJlZ2luKCk7CisgICAgICAgICBpdCAh
PSBvdGhlci5tX3NldC5lbmQoKTsgKytpdCkgeworICAgICAgICBUZXh0VHJhY2tDdWUqIGN1ZSA9
ICppdDsKKyAgICAgICAgaWYgKCFtX3NldC5jb250YWlucyhjdWUpKQorICAgICAgICAgICAgbmV3
U2V0LmFkZChjdWUpOworICAgIH0KKyAgICByZXR1cm4gbmV3U2V0OworfQorCitDdWVTZXQgQ3Vl
U2V0Ojp1bmlvblNldChjb25zdCBDdWVTZXQmIG90aGVyKQoreworICAgIEN1ZVNldCBuZXdTZXQ7
CisgICAgZm9yIChDdWVTZXQ6Okl0ZXJhdG9yIGl0ID0gb3RoZXIubV9zZXQuYmVnaW4oKTsKKyAg
ICAgICAgIGl0ICE9IG90aGVyLm1fc2V0LmVuZCgpOyArK2l0KSB7CisgICAgICAgIFRleHRUcmFj
a0N1ZSogY3VlID0gKml0OworICAgICAgICBuZXdTZXQuYWRkKGN1ZSk7CisgICAgfQorICAgIGZv
ciAoQ3VlU2V0OjpJdGVyYXRvciBpdCA9IG1fc2V0LmJlZ2luKCk7IGl0ICE9IG1fc2V0LmVuZCgp
OyArK2l0KSB7CisgICAgICAgIFRleHRUcmFja0N1ZSogY3VlID0gKml0OworICAgICAgICBuZXdT
ZXQuYWRkKGN1ZSk7CisgICAgfQorICAgIHJldHVybiBuZXdTZXQ7Cit9CisKK3ZvaWQgQ3VlU2V0
OjphZGQoVGV4dFRyYWNrQ3VlKiBjdWUpCit7CisgICAgbV9zZXQuYWRkKGN1ZSk7Cit9CisKK2Jv
b2wgQ3VlU2V0Ojpjb250YWlucyhUZXh0VHJhY2tDdWUqIGN1ZSkgY29uc3QKK3sKKyAgICByZXR1
cm4gbV9zZXQuY29udGFpbnMoY3VlKTsKK30KKwordm9pZCBDdWVTZXQ6OnJlbW92ZShUZXh0VHJh
Y2tDdWUqIGN1ZSkKK3sKKyAgICBtX3NldC5yZW1vdmUoY3VlKTsKK30KKworYm9vbCBDdWVTZXQ6
OmlzRW1wdHkoKQoreworICAgIHJldHVybiBtX3NldC5pc0VtcHR5KCk7Cit9CisKK2ludCBDdWVT
ZXQ6OnNpemUoKSBjb25zdAoreworICAgIHJldHVybiBtX3NldC5zaXplKCk7Cit9CisKK0N1ZVNl
dDo6SXRlcmF0b3IgQ3VlU2V0OjpiZWdpbigpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fc2V0LmJl
Z2luKCk7Cit9CisKK0N1ZVNldDo6SXRlcmF0b3IgQ3VlU2V0OjplbmQoKSBjb25zdAoreworICAg
IHJldHVybiBtX3NldC5lbmQoKTsKK30KKwordm9pZCBDdWVJbmRleDo6dGFrZU5ld0N1ZXNGcm9t
KEN1ZUxvYWRlciogbG9hZGVyKQoreworICAgIFZlY3RvcjxUZXh0VHJhY2tDdWUqPiBuZXdDdWVz
OworICAgIGxvYWRlci0+cG9wTmV3ZXN0Q3VlcyhuZXdDdWVzKTsKKyAgICBmb3IgKHNpemVfdCBp
ID0gMDsgaSA8IG5ld0N1ZXMuc2l6ZSgpOyArK2kpCisgICAgICAgIGFkZChuZXdDdWVzW2ldKTsK
K30KKwordm9pZCBDdWVJbmRleDo6cmVtb3ZlQ3Vlc0Zyb21JbmRleChjb25zdCBUZXh0VHJhY2tD
dWVMaXN0KiBjdWVMaXN0KQoreworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgY3VlTGlzdC0+
bGVuZ3RoKCk7ICsraSkKKyAgICAgICAgcmVtb3ZlKGN1ZUxpc3QtPml0ZW0oaSkpOworfQorCitD
dWVTZXQgQ3VlSW5kZXg6OmdldFZpc2libGVDdWVzKGRvdWJsZSB0aW1lKQoreworICAgIEN1ZVNl
dCB2aXNpYmxlOworICAgIC8vIEZJWE1FKHZyayk6IGxvbCBlZmZpY2llbmN5CisgICAgZm9yIChW
ZWN0b3I8VGV4dFRyYWNrQ3VlKj46Oml0ZXJhdG9yIGl0ID0gbV9jdWVzQnlTdGFydFRpbWUuYmVn
aW4oKTsKKyAgICAgICAgIGl0ICE9IG1fY3Vlc0J5U3RhcnRUaW1lLmVuZCgpOyArK2l0KSB7Cisg
ICAgICAgIFRleHRUcmFja0N1ZSogY3VlID0gKml0OworICAgICAgICBpZiAoY3VlLT5zdGFydFRp
bWUoKSA8PSB0aW1lICYmIGN1ZS0+ZW5kVGltZSgpID4gdGltZSAmJiBjdWUtPnRyYWNrKCktPm1v
ZGUoKSA9PSBUZXh0VHJhY2s6OlNIT1dJTkcpIAorICAgICAgICB7CisgICAgICAgICAgICB2aXNp
YmxlLmFkZChjdWUpOworICAgICAgICB9CisgICAgfQorICAgIHJldHVybiB2aXNpYmxlOworfQor
Cit2b2lkIEN1ZUluZGV4OjphZGQoVGV4dFRyYWNrQ3VlKiBjdWUpCit7CisgICAgbV9jdWVzQnlT
dGFydFRpbWUuYXBwZW5kKGN1ZSk7Cit9CisKK3ZvaWQgQ3VlSW5kZXg6OnJlbW92ZShUZXh0VHJh
Y2tDdWUqIGN1ZSkKK3sKKyAgICBzaXplX3QgaW5kZXggPSBtX2N1ZXNCeVN0YXJ0VGltZS5maW5k
KGN1ZSk7CisgICAgaWYoaW5kZXggIT0gbm90Rm91bmQpIG1fY3Vlc0J5U3RhcnRUaW1lLnJlbW92
ZShpbmRleCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0N1ZUluZGV4LmggYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L0N1ZUluZGV4LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTRmOTA4ZjUyZTQ3Nzg4Y2JlZjA4M2Q1NWZlNWVjMzFm
MTcwOTRmYQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvQ3VlSW5kZXgu
aApAQCAtMCwwICsxLDc1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgQ3VlSW5kZXhfaAorI2RlZmlu
ZSBDdWVJbmRleF9oCisKKyNpZiBFTkFCTEUoVklERU9fVFJBQ0spCisKKyNpbmNsdWRlICJDdWVM
b2FkZXIuaCIKKyNpbmNsdWRlIDx3dGYvSGFzaFNldC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK2NsYXNzIFRleHRUcmFja0N1ZTsKK2NsYXNzIFRleHRUcmFja0N1ZUxpc3Q7CisKK2NsYXNz
IEN1ZVNldCB7CitwdWJsaWM6CisgICAgdHlwZWRlZiBIYXNoU2V0PFRleHRUcmFja0N1ZSo+Ojpp
dGVyYXRvciBJdGVyYXRvcjsKKyAgICBDdWVTZXQoKSB7IH0KKyAgICB2aXJ0dWFsIH5DdWVTZXQo
KSB7IH0KKyAgICB2aXJ0dWFsIEN1ZVNldCBkaWZmZXJlbmNlKGNvbnN0IEN1ZVNldCYgb3RoZXIp
OworICAgIHZpcnR1YWwgQ3VlU2V0IHVuaW9uU2V0KGNvbnN0IEN1ZVNldCYgb3RoZXIpOworICAg
IHZpcnR1YWwgdm9pZCBhZGQoVGV4dFRyYWNrQ3VlKik7CisgICAgdmlydHVhbCBib29sIGNvbnRh
aW5zKFRleHRUcmFja0N1ZSopIGNvbnN0OworICAgIHZpcnR1YWwgdm9pZCByZW1vdmUoVGV4dFRy
YWNrQ3VlKik7CisgICAgdmlydHVhbCBib29sIGlzRW1wdHkoKTsKKyAgICB2aXJ0dWFsIGludCBz
aXplKCkgY29uc3Q7CisgICAgdmlydHVhbCBJdGVyYXRvciBiZWdpbigpIGNvbnN0OworICAgIHZp
cnR1YWwgSXRlcmF0b3IgZW5kKCkgY29uc3Q7Citwcml2YXRlOgorICAgIEhhc2hTZXQ8VGV4dFRy
YWNrQ3VlKj4gbV9zZXQ7Cit9OworCitjbGFzcyBDdWVJbmRleCA6IHB1YmxpYyBDdWVMb2FkZXJD
bGllbnQgeworcHVibGljOgorICAgIC8vIEN1ZUxvYWRlckNsaWVudCBtZXRob2QuCisgICAgdmly
dHVhbCB2b2lkIHRha2VOZXdDdWVzRnJvbShDdWVMb2FkZXIqKTsKKyAgICB2aXJ0dWFsIHZvaWQg
cmVtb3ZlQ3Vlc0Zyb21JbmRleChjb25zdCBUZXh0VHJhY2tDdWVMaXN0Kik7CisKKyAgICB2aXJ0
dWFsIEN1ZVNldCBnZXRWaXNpYmxlQ3Vlcyhkb3VibGUgdGltZSk7CisgICAgdmlydHVhbCB2b2lk
IGFkZChUZXh0VHJhY2tDdWUqKTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlKFRleHRUcmFja0N1
ZSopOworcHJpdmF0ZToKKyAgICAvLyBGSVhNRSh2cmspOiBUaGlzIGlzIGxhbWUKKyAgICBWZWN0
b3I8VGV4dFRyYWNrQ3VlKj4gbV9jdWVzQnlTdGFydFRpbWU7CisKK307CisKK30gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKKworI2VuZGlmCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvSFRNTEF0dHJpYnV0ZU5hbWVzLmluIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0
cmlidXRlTmFtZXMuaW4KaW5kZXggNWUwZmU3YmI5YjQ5NDgxMGFkN2E4NDhjNTE5NzE2NjBiYTdm
ZDkwNi4uYmNiMDU0OWM0Yzc5NzQxZGU4Y2Q4OTgzNTljYjQ4YWU3MWU5NmNhMiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MQXR0cmlidXRlTmFtZXMuaW4KKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9IVE1MQXR0cmlidXRlTmFtZXMuaW4KQEAgLTE2NCw2ICsxNjQsNyBAQCBv
bmNoYW5nZQogb25jbGljawogb25jb250ZXh0bWVudQogb25jb3B5CitvbmN1ZWNoYW5nZQogb25j
dXQKIG9uZGJsY2xpY2sKIG9uZHJhZwpAQCAtMTc2LDcgKzE3Nyw5IEBAIG9uZHJvcAogb25kdXJh
dGlvbmNoYW5nZQogb25lbXB0aWVkCiBvbmVuZGVkCitvbmVudGVyCiBvbmVycm9yCitvbmV4aXQK
IG9uZm9jdXMKIG9uZm9jdXNpbgogb25mb2N1c291dApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaHRtbC9IVE1MRWxlbWVudHNBbGxJbk9uZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hU
TUxFbGVtZW50c0FsbEluT25lLmNwcAppbmRleCA3ZmRhOGFhZmUwNGJmYzE5NzllNzAyNDQ0YmQw
Y2E0YmQ4Mzc5MGZmLi5mOWY0MTFjY2QxNDU4MGY3ZGM2YjFkNGIwNzZjNTUyMTE5ZDE2NmRkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50c0FsbEluT25lLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxFbGVtZW50c0FsbEluT25lLmNwcApAQCAtMTAz
LDUgKzEwMyw2IEBACiAjaW5jbHVkZSAiSFRNTFRhYmxlU2VjdGlvbkVsZW1lbnQuY3BwIgogI2lu
Y2x1ZGUgIkhUTUxUZXh0QXJlYUVsZW1lbnQuY3BwIgogI2luY2x1ZGUgIkhUTUxUaXRsZUVsZW1l
bnQuY3BwIgorI2luY2x1ZGUgIkhUTUxUcmFja0VsZW1lbnQuY3BwIgogI2luY2x1ZGUgIkhUTUxV
TGlzdEVsZW1lbnQuY3BwIgogI2luY2x1ZGUgIkhUTUxWaWRlb0VsZW1lbnQuY3BwIgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5jcHAKaW5kZXggMjM2OGI2NTdmNDhjNDIyN2E4
YWI4NDlmNTE2ZTI2YjAxYjRhNTBlYy4uMGQzM2JkYjY2MTRkZmM3YTNkYTA2ODEyMmJiYjQzOGI5
MTg5MTM4ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVtZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuY3BwCkBAIC04
MCw2ICs4MCwxMiBAQAogI2luY2x1ZGUgIldpZGdldC5oIgogI2VuZGlmCiAKKyNpZiBFTkFCTEUo
VklERU9fVFJBQ0spCisjaW5jbHVkZSAiSFRNTFRyYWNrRWxlbWVudC5oIgorI2luY2x1ZGUgIk11
dGFibGVUZXh0VHJhY2suaCIKKyNpbmNsdWRlICJUZXh0VHJhY2tDdWVMaXN0LmgiCisjZW5kaWYK
KwogdXNpbmcgbmFtZXNwYWNlIHN0ZDsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMTM5LDYg
KzE0NSw5IEBAIEhUTUxNZWRpYUVsZW1lbnQ6OkhUTUxNZWRpYUVsZW1lbnQoY29uc3QgUXVhbGlm
aWVkTmFtZSYgdGFnTmFtZSwgRG9jdW1lbnQqIGRvY3VtCiAgICAgLCBtX2xvYWRTdGF0ZShXYWl0
aW5nRm9yU291cmNlKQogICAgICwgbV9jdXJyZW50U291cmNlTm9kZSgwKQogICAgICwgbV9uZXh0
Q2hpbGROb2RlVG9Db25zaWRlcigwKQorI2lmIEVOQUJMRShWSURFT19UUkFDSykKKyAgICAsIG1f
Y3VycmVudFRyYWNrKDApCisjZW5kaWYKICNpZiBFTkFCTEUoUExVR0lOX1BST1hZX0ZPUl9WSURF
TykKICAgICAsIG1fcHJveHlXaWRnZXQoMCkKICNlbmRpZgpAQCAtNTk1LDYgKzYwNCw5IEBAIHZv
aWQgSFRNTE1lZGlhRWxlbWVudDo6bG9hZEludGVybmFsKCkKICAgICB9CiAKICAgICBzZWxlY3RN
ZWRpYVJlc291cmNlKCk7CisjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQorICAgIGxvYWRNZWRpYVRy
YWNrcygpOworI2VuZGlmCiB9CiAKIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6c2VsZWN0TWVkaWFS
ZXNvdXJjZSgpCkBAIC03MjUsNiArNzM3LDMyIEBAIHZvaWQgSFRNTE1lZGlhRWxlbWVudDo6bG9h
ZFJlc291cmNlKGNvbnN0IEtVUkwmIGluaXRpYWxVUkwsIENvbnRlbnRUeXBlJiBjb250ZW50CiAg
ICAgICAgIHJlbmRlcmVyKCktPnVwZGF0ZUZyb21FbGVtZW50KCk7CiB9CiAKKyNpZiBFTkFCTEUo
VklERU9fVFJBQ0spCit2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OmxvYWRNZWRpYVRyYWNrcygpCit7
CisgICAgZm9yIChOb2RlKiBub2RlID0gZmlyc3RDaGlsZCgpOyBub2RlOyBub2RlID0gbm9kZS0+
bmV4dFNpYmxpbmcoKSkgeworICAgICAgICBpZiAobm9kZS0+aGFzVGFnTmFtZSh0cmFja1RhZykp
IHsKKyAgICAgICAgICAgIEhUTUxUcmFja0VsZW1lbnQqIHRyYWNrID0gc3RhdGljX2Nhc3Q8SFRN
TFRyYWNrRWxlbWVudCo+KG5vZGUpOworICAgICAgICAgICAgbV9jaGlsZFRyYWNrcy5hcHBlbmQo
dHJhY2stPnRyYWNrKCkpOworICAgICAgICAgICAgdHJhY2stPmxvYWQoJm1fY3VlSW5kZXgsIHRo
aXMpOworCisgICAgICAgICAgICBFeGNlcHRpb25Db2RlIGVjOworICAgICAgICAgICAgaWYgKHRy
YWNrLT5pc0RlZmF1bHQoKSkgeworICAgICAgICAgICAgICAgIC8vIFRPRE8oYW5uYWNjKTogc2V0
IEV4Y2x1c2l2ZVRyYWNrTGlzdC5zZWxlY3QoaW5kZXgpLCAKKyAgICAgICAgICAgICAgICAvLyAg
IFRoZSAqbGFzdCogdHJhY2sgd2l0aCBkZWZhdWx0PXRydWUgaXMgdGhlIG5ldyBkZWZhdWx0Lgor
ICAgICAgICAgICAgICAgIGlmIChtX2N1cnJlbnRUcmFjaykgeworICAgICAgICAgICAgICAgICAg
ICBtX2N1cnJlbnRUcmFjay0+c2V0TW9kZShUZXh0VHJhY2s6OkhJRERFTiwgZWMpOworICAgICAg
ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBtX2N1cnJlbnRUcmFjayA9IHRyYWNrLT50cmFj
aygpLmdldCgpOworICAgICAgICAgICAgICAgIG1fY3VycmVudFRyYWNrLT5zZXRNb2RlKFRleHRU
cmFjazo6U0hPV0lORywgZWMpOworICAgICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAg
ICB0cmFjay0+dHJhY2soKS0+c2V0TW9kZShUZXh0VHJhY2s6OkhJRERFTiwgZWMpOworICAgICAg
ICAgICAgfQorICAgICAgICB9CisgICAgfQorfQorI2VuZGlmCisKIGJvb2wgSFRNTE1lZGlhRWxl
bWVudDo6aXNTYWZlVG9Mb2FkVVJMKGNvbnN0IEtVUkwmIHVybCwgSW52YWxpZFNvdXJjZUFjdGlv
biBhY3Rpb25JZkludmFsaWQpCiB7CiAgICAgaWYgKCF1cmwuaXNWYWxpZCgpKSB7CkBAIC0xNjMy
LDkgKzE2NzAsMzkgQEAgdm9pZCBIVE1MTWVkaWFFbGVtZW50OjpwbGF5YmFja1Byb2dyZXNzVGlt
ZXJGaXJlZChUaW1lcjxIVE1MTWVkaWFFbGVtZW50PiopCiAgICAgICAgICAgICBtZWRpYUNvbnRy
b2xzKCktPm1ha2VUcmFuc3BhcmVudCgpOwogICAgICAgICBtZWRpYUNvbnRyb2xzKCktPnBsYXli
YWNrUHJvZ3Jlc3NlZCgpOwogICAgIH0KLSAgICAvLyBGSVhNRTogZGVhbCB3aXRoIGN1ZSByYW5n
ZXMgaGVyZQorCisjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQorICAgIGZsb2F0IG1vdmllVGltZSA9
IGN1cnJlbnRUaW1lKCk7CisKKyAgICBDdWVTZXQgcHJldmlvdXNWaXNpYmxlID0gbV9jdXJyZW50
VmlzaWJsZUN1ZXM7CisgICAgbV9jdXJyZW50VmlzaWJsZUN1ZXMgPSBtX2N1ZUluZGV4LmdldFZp
c2libGVDdWVzKG1vdmllVGltZSk7CisgICAgLy8gRklYTUUodnJrKTogbG9sIGVsZWdhbmNlCisg
ICAgQ3VlU2V0IGFkZGVkQ3VlcyA9IHByZXZpb3VzVmlzaWJsZS5kaWZmZXJlbmNlKG1fY3VycmVu
dFZpc2libGVDdWVzKTsKKyAgICBDdWVTZXQgcmVtb3ZlZEN1ZXMgPSBtX2N1cnJlbnRWaXNpYmxl
Q3Vlcy5kaWZmZXJlbmNlKHByZXZpb3VzVmlzaWJsZSk7CisgICAgQ3VlU2V0IGFmZmVjdGVkQ3Vl
cyA9IGFkZGVkQ3Vlcy51bmlvblNldChyZW1vdmVkQ3Vlcyk7CisgICAgbV9hZmZlY3RlZEN1ZXMg
PSBhZmZlY3RlZEN1ZXM7CisgICAgLy9IYXNoU2V0PFRleHRUcmFjayo+IGFmZmVjdGVkVHJhY2tz
OworICAgIGlmIChhZmZlY3RlZEN1ZXMuaXNFbXB0eSgpKQorICAgICAgICByZXR1cm47CisgICAg
Zm9yIChDdWVTZXQ6Okl0ZXJhdG9yIGl0ID0gYWZmZWN0ZWRDdWVzLmJlZ2luKCk7IGl0ICE9IGFm
ZmVjdGVkQ3Vlcy5lbmQoKTsgKytpdCkgeworICAgICAgICBUZXh0VHJhY2tDdWUqIGN1ZSA9ICpp
dDsKKyAgICAgICAgYm9vbCBhY3RpdmVTdGF0ZSA9IG1fY3VycmVudFZpc2libGVDdWVzLmNvbnRh
aW5zKGN1ZSk7CisgICAgICAgIGlmKGFjdGl2ZVN0YXRlKSBwcmludGYoIkNVRTogJXMiLCBjdWUt
PmdldEN1ZUFzU291cmNlKCkudXRmOCgpLmRhdGEoKSk7CisgICAgICAgIGN1ZS0+c2V0SXNBY3Rp
dmUoYWN0aXZlU3RhdGUpOworICAgICAgICAvLyBhZmZlY3RlZFRyYWNrcy5hZGQoY3VlLT50cmFj
aygpKTsKKyAgICB9CisgICAgaWYgKGhhc01lZGlhQ29udHJvbHMoKSkKKyAgICAgICAgbWVkaWFD
b250cm9scygpLT51cGRhdGVUZXh0VHJhY2soKTsKKyNlbmRpZgogfQogCisjaWYgRU5BQkxFKFZJ
REVPX1RSQUNLKQorQ3VlU2V0KiBIVE1MTWVkaWFFbGVtZW50OjpnZXRBZmZlY3RlZEN1ZXMoKQor
eworICAgIHJldHVybiAmbV9hZmZlY3RlZEN1ZXM7Cit9CisjZW5kaWYKKwogdm9pZCBIVE1MTWVk
aWFFbGVtZW50OjpzY2hlZHVsZVRpbWV1cGRhdGVFdmVudChib29sIHBlcmlvZGljRXZlbnQpCiB7
CiAgICAgZG91YmxlIG5vdyA9IFdURjo6Y3VycmVudFRpbWUoKTsKQEAgLTE5MDAsNiArMTk2OCw2
NiBAQCB2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6Om1lZGlhUGxheWVyVGltZUNoYW5nZWQoTWVkaWFQ
bGF5ZXIqKQogICAgIGVuZFByb2Nlc3NpbmdNZWRpYVBsYXllckNhbGxiYWNrKCk7CiB9CiAKKyNp
ZiBFTkFCTEUoVklERU9fVFJBQ0spCisKK1Bhc3NSZWZQdHI8TXV0YWJsZVRleHRUcmFjaz4gSFRN
TE1lZGlhRWxlbWVudDo6YWRkVHJhY2soY29uc3QgU3RyaW5nJiBraW5kLCBjb25zdCBTdHJpbmcm
IGxhYmVsLCBjb25zdCBTdHJpbmcmIGxhbmd1YWdlKQoreworICAgIFJlZlB0cjxNdXRhYmxlVGV4
dFRyYWNrPiBtdXRhYmxlVHJhY2sgPSBNdXRhYmxlVGV4dFRyYWNrOjpjcmVhdGUoQWN0aXZlRE9N
T2JqZWN0OjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCksIHRoaXMsICZtX2N1ZUluZGV4LCBraW5k
LCBsYWJlbCwgbGFuZ3VhZ2UpOworICAgIG1fbXV0YWJsZVRyYWNrcy5hcHBlbmQobXV0YWJsZVRy
YWNrLmdldCgpKTsKKyAgICByZXR1cm4gbXV0YWJsZVRyYWNrLnJlbGVhc2UoKTsKK30KKwordm9p
ZCBIVE1MTWVkaWFFbGVtZW50Ojp0ZXh0VHJhY2tSZWFkeVN0YXRlQ2hhbmdlZChUZXh0VHJhY2sq
IHRyYWNrKQoreworICAgIFBhc3NSZWZQdHI8VGV4dFRyYWNrQ3VlTGlzdD4gY3VlTGlzdCA9IHRy
YWNrLT5jdWVzKCk7CisKKyAgICBmb3IgKFRleHRUcmFja0N1ZUxpc3Q6Okl0ZXJhdG9yIGl0ID0g
Y3VlTGlzdC0+YmVnaW4oKTsgaXQgIT0gY3VlTGlzdC0+ZW5kKCk7ICsraXQpIHsKKyAgICAgICAg
VGV4dFRyYWNrQ3VlKiBjdWUgPSBpdC0+Z2V0KCk7CisgICAgICAgIG1fY3VlSW5kZXguYWRkKGN1
ZSk7CisgICAgfQorCisgICAgc2V0UmVhZHlTdGF0ZShNZWRpYVBsYXllcjo6SGF2ZU1ldGFkYXRh
KTsKK30KKwordm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp0ZXh0VHJhY2tNb2RlQ2hhbmdlZChUZXh0
VHJhY2sqIHRyYWNrKQoreworICAgIGlmICh0cmFjay0+bW9kZSgpID09IFRleHRUcmFjazo6U0hP
V0lORyAmJiB0cmFjayAhPSBtX2N1cnJlbnRUcmFjaykgeworICAgICAgICBFeGNlcHRpb25Db2Rl
IGVjOworICAgICAgICBpZiAobV9jdXJyZW50VHJhY2spIG1fY3VycmVudFRyYWNrLT5zZXRNb2Rl
KFRleHRUcmFjazo6SElEREVOLCBlYyk7CisgICAgICAgIG1fY3VycmVudFRyYWNrID0gdHJhY2s7
CisgICAgfQorfQorCit2b2lkIEhUTUxNZWRpYUVsZW1lbnQ6OnRleHRUcmFja0NyZWF0ZWQoVGV4
dFRyYWNrKikKK3sKK30KKwordm9pZCBIVE1MTWVkaWFFbGVtZW50Ojp0cmFja1dhc0FkZGVkKEhU
TUxUcmFja0VsZW1lbnQqIHRyYWNrKQoreworICAgICNpZiAhTE9HX0RJU0FCTEVECisgICAgaWYg
KHRyYWNrLT5oYXNUYWdOYW1lKHRyYWNrVGFnKSkgeworICAgICAgICBLVVJMIHVybCA9IHRyYWNr
LT5nZXROb25FbXB0eVVSTEF0dHJpYnV0ZShzcmNBdHRyKTsKKyAgICAgICAgTE9HKE1lZGlhLCAi
SFRNTE1lZGlhRWxlbWVudDo6dHJhY2tXYXNBZGRlZCAtICdzcmMnIGlzICVzIiwgdXJsRm9yTG9n
Z2luZyh1cmwpLnV0ZjgoKS5kYXRhKCkpOworICAgIH0KKyAgICAjZW5kaWYKKworICAgIHRyYWNr
LT5sb2FkKCZtX2N1ZUluZGV4LCB0aGlzKTsKKyAgICBtX2NoaWxkVHJhY2tzLmFwcGVuZCh0cmFj
ay0+dHJhY2soKSk7Cit9CisKK3ZvaWQgSFRNTE1lZGlhRWxlbWVudDo6dHJhY2tXaWxsQmVSZW1v
dmVkKEhUTUxUcmFja0VsZW1lbnQqIHRyYWNrKQoreworI2lmICFMT0dfRElTQUJMRUQKKyAgICBp
ZiAodHJhY2stPmhhc1RhZ05hbWUodHJhY2tUYWcpKSB7CisgICAgICAgIEtVUkwgdXJsID0gdHJh
Y2stPmdldE5vbkVtcHR5VVJMQXR0cmlidXRlKHNyY0F0dHIpOworICAgICAgICBMT0coTWVkaWEs
ICJIVE1MTWVkaWFFbGVtZW50Ojp0cmFja1dpbGxCZVJlbW92ZWQgLSAnc3JjJyBpcyAlcyIsIHVy
bEZvckxvZ2dpbmcodXJsKS51dGY4KCkuZGF0YSgpKTsKKyAgICB9CisjZW5kaWYKKyAgICAvLyBU
T0RPKGFubmFjYyk6IHdoYXQgdG8gZG8gaXQgdGhpcyBpcyB0aGUgZGVmYXVsdCAoc2hvd2luZyB0
cmFjayk/ICBwaWNrIGEgbmV3IG9uZT8KKyAgICBtX2NoaWxkVHJhY2tzLnJlbW92ZShtX2NoaWxk
VHJhY2tzLmZpbmQodHJhY2stPnRyYWNrKCkpKTsKK30KKyNlbmRpZgorCiB2b2lkIEhUTUxNZWRp
YUVsZW1lbnQ6Om1lZGlhUGxheWVyVm9sdW1lQ2hhbmdlZChNZWRpYVBsYXllciopCiB7CiAgICAg
TE9HKE1lZGlhLCAiSFRNTE1lZGlhRWxlbWVudDo6bWVkaWFQbGF5ZXJWb2x1bWVDaGFuZ2VkIik7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaCBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCmluZGV4IGE0ZjMzMzUzZmFhZmQ1
MDM4YTJhYjA4YThhMTVkYTBhMjRlMjQyNDMuLjhhY2FhYTk1YThlZGExYmVkNzE2MDdhNDZiOTAy
MjhiMTUyZGZmMTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxl
bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5oCkBAIC0z
Nyw2ICszNywxMSBAQAogI2luY2x1ZGUgIk1lZGlhUGxheWVyUHJveHkuaCIKICNlbmRpZgogCisj
aWYgRU5BQkxFKFZJREVPX1RSQUNLKQorI2luY2x1ZGUgIkN1ZUluZGV4LmgiCisjaW5jbHVkZSAi
VGV4dFRyYWNrLmgiCisjZW5kaWYKKwogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBFdmVu
dDsKQEAgLTQ4LDEyICs1MywyMSBAQCBjbGFzcyBUaW1lUmFuZ2VzOwogI2lmIEVOQUJMRShQTFVH
SU5fUFJPWFlfRk9SX1ZJREVPKQogY2xhc3MgV2lkZ2V0OwogI2VuZGlmCisjaWYgRU5BQkxFKFZJ
REVPX1RSQUNLKQorY2xhc3MgSFRNTFRyYWNrRWxlbWVudDsKK2NsYXNzIE11dGFibGVUZXh0VHJh
Y2s7CitjbGFzcyBUZXh0VHJhY2s7CisjZW5kaWYKIAogLy8gRklYTUU6IFRoZSBpbmhlcml0YW5j
ZSBmcm9tIE1lZGlhUGxheWVyQ2xpZW50IGhlcmUgc2hvdWxkIGJlIHByaXZhdGUgaW5oZXJpdGFu
Y2UuCiAvLyBCdXQgaXQgY2FuJ3QgYmUgdW50aWwgdGhlIENocm9taXVtIFdlYk1lZGlhUGxheWVy
Q2xpZW50SW1wbCBjbGFzcyBpcyBmaXhlZCBzbyBpdAogLy8gbm8gbG9uZ2VyIGRlcGVuZHMgb24g
dHlwZWNhc3RpbmcgYSBNZWRpYVBsYXllckNsaWVudCB0byBhbiBIVE1MTWVkaWFFbGVtZW50Lgog
Ci1jbGFzcyBIVE1MTWVkaWFFbGVtZW50IDogcHVibGljIEhUTUxFbGVtZW50LCBwdWJsaWMgTWVk
aWFQbGF5ZXJDbGllbnQsIHByaXZhdGUgTWVkaWFDYW5TdGFydExpc3RlbmVyLCBwcml2YXRlIEFj
dGl2ZURPTU9iamVjdCB7CitjbGFzcyBIVE1MTWVkaWFFbGVtZW50IDogcHVibGljIEhUTUxFbGVt
ZW50LCBwdWJsaWMgTWVkaWFQbGF5ZXJDbGllbnQsIHByaXZhdGUgTWVkaWFDYW5TdGFydExpc3Rl
bmVyLCBwcml2YXRlIEFjdGl2ZURPTU9iamVjdAorI2lmIEVOQUJMRShWSURFT19UUkFDSykKKywg
cHVibGljIFRleHRUcmFja0NsaWVudAorI2VuZGlmCit7CiBwdWJsaWM6CiAgICAgTWVkaWFQbGF5
ZXIqIHBsYXllcigpIGNvbnN0IHsgcmV0dXJuIG1fcGxheWVyLmdldCgpOyB9CiAgICAgCkBAIC0x
NTEsNiArMTY1LDE5IEBAIHB1YmxpYzoKIAogICAgIGZsb2F0IHBlcmNlbnRMb2FkZWQoKSBjb25z
dDsKIAorI2lmIEVOQUJMRShWSURFT19UUkFDSykKKy8vIHRyYWNrcworICAgIFBhc3NSZWZQdHI8
TXV0YWJsZVRleHRUcmFjaz4gYWRkVHJhY2soY29uc3QgU3RyaW5nJiBraW5kLCBjb25zdCBTdHJp
bmcmIGxhYmVsID0gIiIsIGNvbnN0IFN0cmluZyYgbGFuZ3VhZ2UgPSAiIik7CisKKy8vIFRleHRU
cmFja0NsaWVudAorICAgIHZpcnR1YWwgdm9pZCB0ZXh0VHJhY2tSZWFkeVN0YXRlQ2hhbmdlZChU
ZXh0VHJhY2sqKTsKKyAgICB2aXJ0dWFsIHZvaWQgdGV4dFRyYWNrTW9kZUNoYW5nZWQoVGV4dFRy
YWNrKik7CisgICAgdmlydHVhbCB2b2lkIHRleHRUcmFja0NyZWF0ZWQoVGV4dFRyYWNrKik7Cisg
ICAgCisgICAgdm9pZCB0cmFja1dpbGxCZVJlbW92ZWQoSFRNTFRyYWNrRWxlbWVudCopOworICAg
IHZvaWQgdHJhY2tXYXNBZGRlZChIVE1MVHJhY2tFbGVtZW50Kik7CisjZW5kaWYKKwogI2lmIEVO
QUJMRShQTFVHSU5fUFJPWFlfRk9SX1ZJREVPKQogICAgIHZvaWQgYWxsb2NhdGVNZWRpYVBsYXll
cklmTmVjZXNzYXJ5KCk7CiAgICAgdm9pZCBzZXROZWVkV2lkZ2V0VXBkYXRlKGJvb2wgbmVlZFdp
ZGdldFVwZGF0ZSkgeyBtX25lZWRXaWRnZXRVcGRhdGUgPSBuZWVkV2lkZ2V0VXBkYXRlOyB9CkBA
IC0yMDAsNiArMjI3LDkgQEAgcHVibGljOgogICAgIHN0YXRpYyB2b2lkIGdldFNpdGVzSW5NZWRp
YUNhY2hlKFZlY3RvcjxTdHJpbmc+Jik7CiAgICAgc3RhdGljIHZvaWQgY2xlYXJNZWRpYUNhY2hl
KCk7CiAgICAgc3RhdGljIHZvaWQgY2xlYXJNZWRpYUNhY2hlRm9yU2l0ZShjb25zdCBTdHJpbmcm
KTsKKyNpZiBFTkFCTEUoVklERU9fVFJBQ0spICAgIAorICAgIEN1ZVNldCogZ2V0QWZmZWN0ZWRD
dWVzKCk7CisjZW5kaWYKIAogcHJvdGVjdGVkOgogICAgIEhUTUxNZWRpYUVsZW1lbnQoY29uc3Qg
UXVhbGlmaWVkTmFtZSYsIERvY3VtZW50Kik7CkBAIC0yOTgsNiArMzI4LDExIEBAIHByaXZhdGU6
CiAgICAgdm9pZCBsb2FkSW50ZXJuYWwoKTsKICAgICB2b2lkIHBsYXlJbnRlcm5hbCgpOwogICAg
IHZvaWQgcGF1c2VJbnRlcm5hbCgpOworICAgIAorI2lmIEVOQUJMRShWSURFT19UUkFDSykKKyAg
ICAvLyBsb2FkaW5nIHRyYWNrcworICAgIHZvaWQgbG9hZE1lZGlhVHJhY2tzKCk7CisjZW5kaWYK
IAogICAgIHZvaWQgcHJlcGFyZUZvckxvYWQoKTsKICAgICB2b2lkIGFsbG93VmlkZW9SZW5kZXJp
bmcoKTsKQEAgLTM2OCw2ICs0MDMsMTggQEAgcHJpdmF0ZToKICAgICBOb2RlKiBtX25leHRDaGls
ZE5vZGVUb0NvbnNpZGVyOwogICAgIE5vZGUqIHNvdXJjZUNoaWxkRW5kT2ZMaXN0VmFsdWUoKSB7
IHJldHVybiBzdGF0aWNfY2FzdDxOb2RlKj4odGhpcyk7IH0KIAorI2lmIEVOQUJMRShWSURFT19U
UkFDSykKKyAgICAvLyBUT0RPKGFubmFjYyk6IHRoZXNlIHNob3VsZCBiZSBFeGNsdXNpdmVUcmFj
a0xpc3RzCisgICAgLy8gVHJhY2tzIGZvdW5kIGZyb20gY2hpbGQgPHRyYWNrPiBlbGVtZW50cy4K
KyAgICBWZWN0b3I8UmVmUHRyPFRleHRUcmFjaz4gPiBtX2NoaWxkVHJhY2tzOworICAgIC8vIFRy
YWNrcyByZWdpc3RlcmVkIGZyb20gTWVkaWFQbGF5ZXIuCisgICAgVmVjdG9yPFJlZlB0cjxUZXh0
VHJhY2s+ID4gbV9tZWRpYVBsYXllclRyYWNrczsKKyAgICAvLyBUcmFja3MgYWRkZWQgZHluYW1p
Y2FsbHkgdGhyb3VnaCBKYXZhU2NyaXB0LgorICAgIFZlY3RvcjxSZWZQdHI8VGV4dFRyYWNrPiA+
IG1fbXV0YWJsZVRyYWNrczsKKyAgICAKKyAgICBUZXh0VHJhY2sqIG1fY3VycmVudFRyYWNrOwor
I2VuZGlmCisKICAgICBPd25QdHI8TWVkaWFQbGF5ZXI+IG1fcGxheWVyOwogI2lmIEVOQUJMRShQ
TFVHSU5fUFJPWFlfRk9SX1ZJREVPKQogICAgIFJlZlB0cjxXaWRnZXQ+IG1fcHJveHlXaWRnZXQ7
CkBAIC00MjEsNiArNDY4LDEzIEBAIHByaXZhdGU6CiAgICAgYm9vbCBtX2xvYWRJbml0aWF0ZWRC
eVVzZXJHZXN0dXJlIDogMTsKICAgICBib29sIG1fY29tcGxldGVseUxvYWRlZCA6IDE7CiAgICAg
Ym9vbCBtX2hhdmVQcmVwYXJlZFRvUGxheSA6IDE7CisKKyNpZiBFTkFCTEUoVklERU9fVFJBQ0sp
CisgICAgQ3VlSW5kZXggbV9jdWVJbmRleDsKKyAgICBDdWVTZXQgbV9jdXJyZW50VmlzaWJsZUN1
ZXM7CisgICAgQ3VlU2V0IG1fYWZmZWN0ZWRDdWVzOworI2VuZGlmCisKIH07CiAKIH0gLy9uYW1l
c3BhY2UKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTE1lZGlhRWxlbWVudC5p
ZGwgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxNZWRpYUVsZW1lbnQuaWRsCmluZGV4IGM3ZTZi
MDc2N2E4MTUxNjJhOWNmMTcyN2RlMTliMTlkODQ3N2UxNWMuLmIwMzEyZDJkODQzZWYyYmZjYzcx
YmY5NGYzMjUwZmYzYTQ4NGExOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TE1lZGlhRWxlbWVudC5pZGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MTWVkaWFFbGVt
ZW50LmlkbApAQCAtODcsNSArODcsMTMgQEAgaW50ZXJmYWNlIFtDb25kaXRpb25hbD1WSURFT10g
SFRNTE1lZGlhRWxlbWVudCA6IEhUTUxFbGVtZW50IHsKICAgICByZWFkb25seSBhdHRyaWJ1dGUg
dW5zaWduZWQgbG9uZyB3ZWJraXRBdWRpb0RlY29kZWRCeXRlQ291bnQ7CiAgICAgcmVhZG9ubHkg
YXR0cmlidXRlIHVuc2lnbmVkIGxvbmcgd2Via2l0VmlkZW9EZWNvZGVkQnl0ZUNvdW50OwogI2Vu
ZGlmCisKKyNpZiBkZWZpbmVkKEVOQUJMRV9WSURFT19UUkFDSykgJiYgRU5BQkxFX1ZJREVPX1RS
QUNLCisgICAgLy8gcmVhZG9ubHkgYXR0cmlidXRlIE11bHRpcGxlVHJhY2tMaXN0IGF1ZGlvVHJh
Y2tzOworICAgIC8vIHJlYWRvbmx5IGF0dHJpYnV0ZSBFeGNsdXNpdmVUcmFja0xpc3QgdmlkZW9U
cmFja3M7CisKKyAgICAvLyByZWFkb25seSBhdHRyaWJ1dGUgVGV4dFRyYWNrW10gdGV4dFRyYWNr
czsKKyAgICBNdXRhYmxlVGV4dFRyYWNrIGFkZFRyYWNrKGluIERPTVN0cmluZyBraW5kLCBpbiBb
T3B0aW9uYWxdIERPTVN0cmluZyBsYWJlbCwgaW4gW09wdGlvbmFsXSBET01TdHJpbmcgbGFuZ3Vh
Z2UpOworI2VuZGlmCiB9OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
U291cmNlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxTb3VyY2VFbGVtZW50
LmNwcAppbmRleCA1OWIzODgyNjJlYjU0N2Y0NWY1YmNkZjc0ZWNkMzMyMzExYzRjNDQ0Li4wMzY3
N2JmZjM3ZGE4NjU0OWI5OWQ2MjUyOTViMmU0MWQxZDMwY2MwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9odG1sL0hUTUxTb3VyY2VFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxTb3VyY2VFbGVtZW50LmNwcApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIkV2
ZW50TmFtZXMuaCIKICNpbmNsdWRlICJIVE1MRG9jdW1lbnQuaCIKICNpbmNsdWRlICJIVE1MTWVk
aWFFbGVtZW50LmgiCisjaW5jbHVkZSAiSFRNTFRyYWNrRWxlbWVudC5oIgogI2luY2x1ZGUgIkhU
TUxOYW1lcy5oIgogI2luY2x1ZGUgIkxvZ2dpbmcuaCIKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaHRtbC9IVE1MVHJhY2tFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRN
TFRyYWNrRWxlbWVudC5jcHAKaW5kZXggNjNmMjc4OGI4ODA2MGI4YmE3NjRmMjllYmVjZTZjYjZk
ZGExZjQ0Ni4uNmY4MmI5NDA5NTZkNTJkM2E5ZjhjYWU0Y2UxNzhjM2FlZTdiYTk4YiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVHJhY2tFbGVtZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL0hUTUxUcmFja0VsZW1lbnQuY3BwCkBAIC0yNiwxMSArMjYsMTcgQEAK
ICNpbmNsdWRlICJjb25maWcuaCIKIAogI2lmIEVOQUJMRShWSURFT19UUkFDSykKKwogI2luY2x1
ZGUgIkhUTUxUcmFja0VsZW1lbnQuaCIKIAorI2luY2x1ZGUgIkV2ZW50LmgiCisjaW5jbHVkZSAi
RXZlbnROYW1lcy5oIgogI2luY2x1ZGUgIkhUTUxNZWRpYUVsZW1lbnQuaCIKICNpbmNsdWRlICJI
VE1MTmFtZXMuaCIKKyNpbmNsdWRlICJIVE1MU291cmNlRWxlbWVudC5oIgogI2luY2x1ZGUgIkxv
Z2dpbmcuaCIKKyNpbmNsdWRlICJTY3JpcHRFdmVudExpc3RlbmVyLmgiCisjaW5jbHVkZSAiVGV4
dFRyYWNrLmgiCiAKIHVzaW5nIG5hbWVzcGFjZSBzdGQ7CiAKQEAgLTQwLDkgKzQ2LDExIEBAIHVz
aW5nIG5hbWVzcGFjZSBIVE1MTmFtZXM7CiAKIGlubGluZSBIVE1MVHJhY2tFbGVtZW50OjpIVE1M
VHJhY2tFbGVtZW50KGNvbnN0IFF1YWxpZmllZE5hbWUmIHRhZ05hbWUsIERvY3VtZW50KiBkb2N1
bWVudCkKICAgICA6IEhUTUxFbGVtZW50KHRhZ05hbWUsIGRvY3VtZW50KQorICAgICwgQWN0aXZl
RE9NT2JqZWN0KGRvY3VtZW50LCB0aGlzKQogewogICAgIExPRyhNZWRpYSwgIkhUTUxUcmFja0Vs
ZW1lbnQ6OkhUTUxUcmFja0VsZW1lbnQgLSAlcCIsIHRoaXMpOwogICAgIEFTU0VSVChoYXNUYWdO
YW1lKHRyYWNrVGFnKSk7CisgICAgZG9jdW1lbnQtPnJlZ2lzdGVyRm9yRG9jdW1lbnRBY3RpdmF0
aW9uQ2FsbGJhY2tzKHRoaXMpOwogfQogCiBQYXNzUmVmUHRyPEhUTUxUcmFja0VsZW1lbnQ+IEhU
TUxUcmFja0VsZW1lbnQ6OmNyZWF0ZShjb25zdCBRdWFsaWZpZWROYW1lJiB0YWdOYW1lLCBEb2N1
bWVudCogZG9jdW1lbnQpCkBAIC01MCwyNCArNTgsNDIgQEAgUGFzc1JlZlB0cjxIVE1MVHJhY2tF
bGVtZW50PiBIVE1MVHJhY2tFbGVtZW50OjpjcmVhdGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgdGFn
TmEKICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEhUTUxUcmFja0VsZW1lbnQodGFnTmFtZSwgZG9j
dW1lbnQpKTsKIH0KIAorSFRNTFRyYWNrRWxlbWVudDo6fkhUTUxUcmFja0VsZW1lbnQoKQorewor
ICAgIGRvY3VtZW50KCktPnVucmVnaXN0ZXJGb3JEb2N1bWVudEFjdGl2YXRpb25DYWxsYmFja3Mo
dGhpcyk7Cit9CisKIHZvaWQgSFRNTFRyYWNrRWxlbWVudDo6aW5zZXJ0ZWRJbnRvVHJlZShib29s
IGRlZXApCiB7CiAgICAgSFRNTEVsZW1lbnQ6Omluc2VydGVkSW50b1RyZWUoZGVlcCk7CiAgICAg
aWYgKHBhcmVudE5vZGUoKSAmJiAocGFyZW50Tm9kZSgpLT5oYXNUYWdOYW1lKGF1ZGlvVGFnKSB8
fCBwYXJlbnROb2RlKCktPmhhc1RhZ05hbWUodmlkZW9UYWcpKSkgewotICAgICAgICAvLyBUT0RP
KGFubmFjYyk6Ci0gICAgICAgIC8vIHN0YXRpY19jYXN0PEhUTUxNZWRpYUVsZW1lbnQqPihwYXJl
bnROb2RlKCkpLT50cmFja1dhc0FkZGVkKHRoaXMpOworICAgICAgICBzdGF0aWNfY2FzdDxIVE1M
TWVkaWFFbGVtZW50Kj4ocGFyZW50Tm9kZSgpKS0+dHJhY2tXYXNBZGRlZCh0aGlzKTsKICAgICB9
CiB9CiAKIHZvaWQgSFRNTFRyYWNrRWxlbWVudDo6d2lsbFJlbW92ZSgpCiB7CiAgICAgaWYgKHBh
cmVudE5vZGUoKSAmJiAocGFyZW50Tm9kZSgpLT5oYXNUYWdOYW1lKGF1ZGlvVGFnKSB8fCBwYXJl
bnROb2RlKCktPmhhc1RhZ05hbWUodmlkZW9UYWcpKSkgewotICAgICAgICAvLyBUT0RPKGFubmFj
Yyk6Ci0gICAgICAgIC8vIHN0YXRpY19jYXN0PEhUTUxNZWRpYUVsZW1lbnQqPihwYXJlbnROb2Rl
KCkpLT50cmFja1dpbGxCZVJlbW92ZWQodGhpcyk7CisgICAgICAgIHN0YXRpY19jYXN0PEhUTUxN
ZWRpYUVsZW1lbnQqPihwYXJlbnROb2RlKCkpLT50cmFja1dpbGxCZVJlbW92ZWQodGhpcyk7CiAg
ICAgfQogICAgIEhUTUxFbGVtZW50Ojp3aWxsUmVtb3ZlKCk7CiB9CiAKK3ZvaWQgSFRNTFRyYWNr
RWxlbWVudDo6cGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRlKiBhdHRyaWJ1dGUpCit7Cisg
ICAgY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUgPSBhdHRyaWJ1dGUtPm5hbWUoKTsKKyAg
ICAKKyAgICBpZiAoYXR0ck5hbWUgPT0gb25sb2FkQXR0cikgeworICAgICAgICBzZXRBdHRyaWJ1
dGVFdmVudExpc3RlbmVyKGV2ZW50TmFtZXMoKS5sb2FkRXZlbnQsIGNyZWF0ZUF0dHJpYnV0ZUV2
ZW50TGlzdGVuZXIodGhpcywgYXR0cmlidXRlKSk7CisgICAgfSBlbHNlIGlmIChhdHRyTmFtZSA9
PSBvbmVycm9yQXR0cikgeworICAgICAgICBzZXRBdHRyaWJ1dGVFdmVudExpc3RlbmVyKGV2ZW50
TmFtZXMoKS5lcnJvckV2ZW50LCBjcmVhdGVBdHRyaWJ1dGVFdmVudExpc3RlbmVyKHRoaXMsIGF0
dHJpYnV0ZSkpOworICAgIH0gZWxzZSBpZiAoYXR0ck5hbWUgPT0gb25jdWVjaGFuZ2VBdHRyKSB7
CisgICAgICAgIHNldEF0dHJpYnV0ZUV2ZW50TGlzdGVuZXIoZXZlbnROYW1lcygpLmN1ZWNoYW5n
ZUV2ZW50LCBjcmVhdGVBdHRyaWJ1dGVFdmVudExpc3RlbmVyKHRoaXMsIGF0dHJpYnV0ZSkpOwor
ICAgIH0gZWxzZSB7CisgICAgICAgIEhUTUxFbGVtZW50OjpwYXJzZU1hcHBlZEF0dHJpYnV0ZShh
dHRyaWJ1dGUpOworICAgIH0KK30KKwogS1VSTCBIVE1MVHJhY2tFbGVtZW50OjpzcmMoKSBjb25z
dAogewogICAgIHJldHVybiBkb2N1bWVudCgpLT5jb21wbGV0ZVVSTChnZXRBdHRyaWJ1dGUoc3Jj
QXR0cikpOwpAQCAtNzYsNiArMTAyLDggQEAgS1VSTCBIVE1MVHJhY2tFbGVtZW50OjpzcmMoKSBj
b25zdAogdm9pZCBIVE1MVHJhY2tFbGVtZW50OjpzZXRTcmMoY29uc3QgU3RyaW5nJiB1cmwpCiB7
CiAgICAgc2V0QXR0cmlidXRlKHNyY0F0dHIsIHVybCk7CisgICAgbV91cmwgPSB1cmw7CisgICAg
Ly8gRklYTUUodnJrKTogcmVsb2FkIExvYWRhYmxlVGV4dFRyYWNrCiB9CiAKIFN0cmluZyBIVE1M
VHJhY2tFbGVtZW50OjpraW5kKCkgY29uc3QKQEAgLTExNiw2ICsxNDQsMTEgQEAgYm9vbCBIVE1M
VHJhY2tFbGVtZW50Ojppc0RlZmF1bHQoKSBjb25zdAogdm9pZCBIVE1MVHJhY2tFbGVtZW50Ojpz
ZXRJc0RlZmF1bHQoYm9vbCBpc0RlZmF1bHQpCiB7CiAgICAgc2V0Qm9vbGVhbkF0dHJpYnV0ZShk
ZWZhdWx0QXR0ciwgaXNEZWZhdWx0KTsKKyAgICBFeGNlcHRpb25Db2RlIGVjOworICAgIGlmIChp
c0RlZmF1bHQpCisgICAgICAgIG1fdHJhY2stPnNldE1vZGUoVGV4dFRyYWNrOjpTSE9XSU5HLCBl
Yyk7CisgICAgZWxzZQorICAgICAgICBtX3RyYWNrLT5zZXRNb2RlKFRleHRUcmFjazo6SElEREVO
LCBlYyk7CiB9CiAKIGJvb2wgSFRNTFRyYWNrRWxlbWVudDo6aXNVUkxBdHRyaWJ1dGUoQXR0cmli
dXRlKiBhdHRyaWJ1dGUpIGNvbnN0CkBAIC0xMjMsNiArMTU2LDM3IEBAIGJvb2wgSFRNTFRyYWNr
RWxlbWVudDo6aXNVUkxBdHRyaWJ1dGUoQXR0cmlidXRlKiBhdHRyaWJ1dGUpIGNvbnN0CiAgICAg
cmV0dXJuIGF0dHJpYnV0ZS0+bmFtZSgpID09IHNyY0F0dHI7CiB9CiAKK3ZvaWQgSFRNTFRyYWNr
RWxlbWVudDo6bG9hZChDdWVMb2FkZXJDbGllbnQqIGN1ZUNsaWVudCwgVGV4dFRyYWNrQ2xpZW50
KiB0cmFja0NsaWVudCkKK3sKKyAgICAvLyBGSVhNRSh2cmspOiBXaGF0IGhhcHBlbnMgd2hlbiBs
b2FkIGlzIGNhbGxlZCBtdWx0aXBsZSB0aW1lcz8KKyAgICAvLyBNYWtlIHN1cmUgZGVzdHJ1Y3Rp
b24gb2YgTG9hZGFibGVUZXh0VHJhY2sgbWFrZXMgc2Vuc2UKKyAgICBtX3RyYWNrID0gTG9hZGFi
bGVUZXh0VHJhY2s6OmNyZWF0ZShBY3RpdmVET01PYmplY3Q6OnNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQoKSwgdHJhY2tDbGllbnQsIGtpbmQoKSwgbGFiZWwoKSwgc3JjbGFuZygpLCBpc0RlZmF1bHQo
KSwgdGhpcyk7CisgICAgaWYgKGhhc0F0dHJpYnV0ZShzcmNBdHRyKSkgeworICAgICAgICBtX3Ry
YWNrLT5sb2FkKGdldE5vbkVtcHR5VVJMQXR0cmlidXRlKHNyY0F0dHIpLCBjdWVDbGllbnQpOwor
ICAgIH0gZWxzZSB7CisgICAgICAgIE5vZGUqIG5vZGU7CisgICAgICAgIGZvciAobm9kZSA9IGZp
cnN0Q2hpbGQoKTsgbm9kZTsgbm9kZSA9IG5vZGUtPm5leHRTaWJsaW5nKCkpIHsKKyAgICAgICAg
ICAgIGlmIChub2RlLT5oYXNUYWdOYW1lKHNvdXJjZVRhZykpIHsKKyAgICAgICAgICAgICAgICBI
VE1MU291cmNlRWxlbWVudCogc291cmNlID0gc3RhdGljX2Nhc3Q8SFRNTFNvdXJjZUVsZW1lbnQq
Pihub2RlKTsKKyAgICAgICAgICAgICAgICBLVVJMIHVybCA9IHNvdXJjZS0+Z2V0Tm9uRW1wdHlV
UkxBdHRyaWJ1dGUoc3JjQXR0cik7CisgICAgICAgICAgICAgICAgaWYoIXVybC5pc0VtcHR5KCkg
JiYgbV90cmFjay0+c3VwcG9ydHNUeXBlKHVybCkpCisgICAgICAgICAgICAgICAgICAgIG1fdHJh
Y2stPmxvYWQodXJsLCBjdWVDbGllbnQpOworICAgICAgICAgICAgfQorICAgICAgICB9CisgICAg
fQorCit9CisKK1Bhc3NSZWZQdHI8VGV4dFRyYWNrPiBIVE1MVHJhY2tFbGVtZW50Ojp0cmFjaygp
IGNvbnN0Cit7CisgICAgcmV0dXJuIG1fdHJhY2s7Cit9CisKK1NjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqIEhUTUxUcmFja0VsZW1lbnQ6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKQoreworICAgIHJl
dHVybiBBY3RpdmVET01PYmplY3Q6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKK30KKwogfQog
CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRyYWNrRWxlbWVu
dC5oIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVHJhY2tFbGVtZW50LmgKaW5kZXggNDY5N2Uw
MmFiOGNlNzRiZDljMzg3N2IwNDI0Y2RkNmExOGQxOTA5YS4uZDg4MGRmZmU0ZTg3MzQ3ZjVmNjk4
YjUyYzg4MzFlZjc0ZTE1OWYxMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1M
VHJhY2tFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVHJhY2tFbGVtZW50
LmgKQEAgLTI5LDEwICsyOSwxNSBAQAogI2lmIEVOQUJMRShWSURFT19UUkFDSykKIAogI2luY2x1
ZGUgIkhUTUxFbGVtZW50LmgiCisjaW5jbHVkZSAiTG9hZGFibGVUZXh0VHJhY2suaCIKIAogbmFt
ZXNwYWNlIFdlYkNvcmUgewogCi1jbGFzcyBIVE1MVHJhY2tFbGVtZW50IDogcHVibGljIEhUTUxF
bGVtZW50IHsKK2NsYXNzIEN1ZUxvYWRlckNsaWVudDsKK2NsYXNzIEhUTUxTb3VyY2VFbGVtZW50
OworY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKKworY2xhc3MgSFRNTFRyYWNrRWxlbWVu
dCA6IHB1YmxpYyBIVE1MRWxlbWVudCwgcHJpdmF0ZSBBY3RpdmVET01PYmplY3QgewogcHVibGlj
OgogICAgIHN0YXRpYyBQYXNzUmVmUHRyPEhUTUxUcmFja0VsZW1lbnQ+IGNyZWF0ZShjb25zdCBR
dWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKIApAQCAtNDAsMjMgKzQ1LDM5IEBAIHB1YmxpYzoK
ICAgICBTdHJpbmcga2luZCgpIGNvbnN0OwogICAgIFN0cmluZyBzcmNsYW5nKCkgY29uc3Q7CiAg
ICAgU3RyaW5nIGxhYmVsKCkgY29uc3Q7Ci0KICAgICBib29sIGlzRGVmYXVsdCgpIGNvbnN0Owor
ICAgIFBhc3NSZWZQdHI8VGV4dFRyYWNrPiB0cmFjaygpIGNvbnN0OworCiAgICAgdm9pZCBzZXRL
aW5kKGNvbnN0IFN0cmluZyYpOwogICAgIHZvaWQgc2V0U3JjKGNvbnN0IFN0cmluZyYpOwogICAg
IHZvaWQgc2V0U3JjbGFuZyhjb25zdCBTdHJpbmcmKTsKICAgICB2b2lkIHNldExhYmVsKGNvbnN0
IFN0cmluZyYpOwogICAgIHZvaWQgc2V0SXNEZWZhdWx0KGJvb2wpOwogCisgICAgdm9pZCBsb2Fk
KEN1ZUxvYWRlckNsaWVudCosIFRleHRUcmFja0NsaWVudCopOworICAgIAorICAgIFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKKyAgICAKKyAgICBERUZJ
TkVfQVRUUklCVVRFX0VWRU5UX0xJU1RFTkVSKGxvYWQpOworICAgIERFRklORV9BVFRSSUJVVEVf
RVZFTlRfTElTVEVORVIoZXJyb3IpOworICAgIERFRklORV9BVFRSSUJVVEVfRVZFTlRfTElTVEVO
RVIoY3VlY2hhbmdlKTsKKyAgICAKIHByaXZhdGU6CiAgICAgSFRNTFRyYWNrRWxlbWVudChjb25z
dCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQqKTsKKyAgICB2aXJ0dWFsIH5IVE1MVHJhY2tFbGVt
ZW50KCk7CisKKyAgICB2aXJ0dWFsIHZvaWQgcGFyc2VNYXBwZWRBdHRyaWJ1dGUoQXR0cmlidXRl
Kik7CisgICAgCisgICAgU3RyaW5nIG1fdXJsOwogCiAgICAgdmlydHVhbCB2b2lkIGluc2VydGVk
SW50b1RyZWUoYm9vbCk7CiAgICAgdmlydHVhbCB2b2lkIHdpbGxSZW1vdmUoKTsKICAgICB2aXJ0
dWFsIGJvb2wgaXNVUkxBdHRyaWJ1dGUoQXR0cmlidXRlKikgY29uc3Q7CisKKyAgICBSZWZQdHI8
TG9hZGFibGVUZXh0VHJhY2s+IG1fdHJhY2s7CiB9OwogCi19Cit9IC8vbmFtZXNwYWNlCiAKICNl
bmRpZgogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0hUTUxUcmFja0Vs
ZW1lbnQuaWRsIGIvU291cmNlL1dlYkNvcmUvaHRtbC9IVE1MVHJhY2tFbGVtZW50LmlkbAppbmRl
eCAzMDlmMGYwNjgyYjhmZTZkNmRjNzhkNDZhOTkzNTEyNGEyODMyMDg0Li5lMjU0NWQxNDJlMmQ5
ZGRmNWYzODI3NjNmMmNjZjdhNGYxNmU2ODVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9o
dG1sL0hUTUxUcmFja0VsZW1lbnQuaWRsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvSFRNTFRy
YWNrRWxlbWVudC5pZGwKQEAgLTMwLDcgKzMwLDExIEBAIGludGVyZmFjZSBbQ29uZGl0aW9uYWw9
VklERU9fVFJBQ0tdIEhUTUxUcmFja0VsZW1lbnQgOiBIVE1MRWxlbWVudCB7CiAgICAgYXR0cmli
dXRlIERPTVN0cmluZyBzcmNsYW5nOwogICAgIGF0dHJpYnV0ZSBET01TdHJpbmcgbGFiZWw7CiAg
ICAgYXR0cmlidXRlIFtSZWZsZWN0PWRlZmF1bHRdIGJvb2xlYW4gaXNEZWZhdWx0OwotCi0gICAg
Ly8gcmVhZG9ubHkgYXR0cmlidXRlIFRleHRUcmFjayB0cmFjazsKKyAgICAKKyAgICByZWFkb25s
eSBhdHRyaWJ1dGUgVGV4dFRyYWNrIHRyYWNrOworICAgIAorICAgICAgICAgICAgIGF0dHJpYnV0
ZSBFdmVudExpc3RlbmVyIG9ubG9hZDsKKyAgICAgICAgICAgICBhdHRyaWJ1dGUgRXZlbnRMaXN0
ZW5lciBvbmVycm9yOworICAgICAgICAgICAgIGF0dHJpYnV0ZSBFdmVudExpc3RlbmVyIG9uY3Vl
Y2hhbmdlOwogfTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvTG9hZGFibGVU
ZXh0VHJhY2suY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9Mb2FkYWJsZVRleHRUcmFjay5jcHAK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uMzMwMDdlZjE0ZjQ0YThkNjAwMzczMTMwZTc3Yzk5NDRmYzhiMWRjYQotLS0g
L2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTG9hZGFibGVUZXh0VHJhY2suY3Bw
CkBAIC0wLDAgKzEsNzkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4g
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBz
b3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24s
IGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAq
IGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRh
aW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25z
IGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBw
cm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVW
RU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElB
QkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVY
RU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElN
SVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7
IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBU
SU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBX
SEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVE
SU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRI
RSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorCisjaWYg
RU5BQkxFKFZJREVPX1RSQUNLKQorCisjaW5jbHVkZSAiTG9hZGFibGVUZXh0VHJhY2suaCIKKwor
I2luY2x1ZGUgIkV2ZW50LmgiCisjaW5jbHVkZSAiSFRNTFRyYWNrRWxlbWVudC5oIgorI2luY2x1
ZGUgIlRleHRUcmFja1ByaXZhdGUuaCIKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitMb2FkYWJs
ZVRleHRUcmFjazo6TG9hZGFibGVUZXh0VHJhY2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29u
dGV4dCwgVGV4dFRyYWNrQ2xpZW50KiBjbGllbnQsIGNvbnN0IFN0cmluZyYga2luZCwgY29uc3Qg
U3RyaW5nJiBsYWJlbCwgY29uc3QgU3RyaW5nJiBsYW5ndWFnZSwgY29uc3QgYm9vbCBpc0RlZmF1
bHQsIEhUTUxUcmFja0VsZW1lbnQqIHRyYWNrRWxlbWVudCkKKyAgICA6IFRleHRUcmFjayhjb250
ZXh0LCBjbGllbnQsIGtpbmQsIGxhYmVsLCBsYW5ndWFnZSkKKyAgICAsIG1fdHJhY2tFbGVtZW50
KHRyYWNrRWxlbWVudCkKK3sKKyAgICBtX3ByaXZhdGUgPSBMb2FkYWJsZVRleHRUcmFja0ltcGw6
OmNyZWF0ZShjb250ZXh0LCBraW5kLCBsYWJlbCwgbGFuZ3VhZ2UsIGlzRGVmYXVsdCwgdGhpcywg
dGhpcyk7Cit9CisKK0xvYWRhYmxlVGV4dFRyYWNrOjp+TG9hZGFibGVUZXh0VHJhY2soKQorewor
fQorCit2b2lkIExvYWRhYmxlVGV4dFRyYWNrOjpsb2FkKGNvbnN0IFN0cmluZyYgdXJsLCBDdWVM
b2FkZXJDbGllbnQqIGNsaWVudCkKK3sKKyAgICBtX3ByaXZhdGUtPmxvYWQodXJsLCBjbGllbnQp
OworfQorCitib29sIExvYWRhYmxlVGV4dFRyYWNrOjpzdXBwb3J0c1R5cGUoY29uc3QgU3RyaW5n
JiB1cmwpCit7CisgICAgcmV0dXJuIG1fcHJpdmF0ZS0+c3VwcG9ydHNUeXBlKHVybCk7Cit9CisK
K3ZvaWQgTG9hZGFibGVUZXh0VHJhY2s6OnRyYWNrTG9hZFN0YXJ0ZWQoKQoreworICAgIFRleHRU
cmFjazo6dHJhY2tMb2FkU3RhcnRlZCgpOworICAgIG1fdHJhY2tFbGVtZW50LT5kaXNwYXRjaEV2
ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmxvYWRFdmVudCwgZmFsc2UsIGZhbHNlKSk7
Cit9CisKK3ZvaWQgTG9hZGFibGVUZXh0VHJhY2s6OnRyYWNrTG9hZEVycm9yKCkKK3sKKyAgICBU
ZXh0VHJhY2s6OnRyYWNrTG9hZEVycm9yKCk7CisgICAgbV90cmFja0VsZW1lbnQtPmRpc3BhdGNo
RXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVudE5hbWVzKCkuZXJyb3JFdmVudCwgZmFsc2UsIGZhbHNl
KSk7Cit9CisKK3ZvaWQgTG9hZGFibGVUZXh0VHJhY2s6OmZpcmVDdWVDaGFuZ2VFdmVudCgpCit7
CisgICAgbV90cmFja0VsZW1lbnQtPmRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVudE5h
bWVzKCkuY3VlY2hhbmdlRXZlbnQsIGZhbHNlLCBmYWxzZSkpOworICAgIFRleHRUcmFjazo6Zmly
ZUN1ZUNoYW5nZUV2ZW50KCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlm
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL0xvYWRhYmxlVGV4dFRyYWNrLmggYi9T
b3VyY2UvV2ViQ29yZS9odG1sL0xvYWRhYmxlVGV4dFRyYWNrLmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmYxMzli
NjhiZjg4NGJjY2ZjMTc5NzU0ZjY3N2ZhZDQxZmIzMmRiOAotLS0gL2Rldi9udWxsCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2h0bWwvTG9hZGFibGVUZXh0VHJhY2suaApAQCAtMCwwICsxLDY5IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01Q
VVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBV
VEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2lmbmRlZiBMb2FkYWJsZVRleHRUcmFja19oCisjZGVmaW5lIExvYWRhYmxlVGV4
dFRyYWNrX2gKKworI2lmIEVOQUJMRShWSURFT19UUkFDSykKKworI2luY2x1ZGUgIkxvYWRhYmxl
VGV4dFRyYWNrSW1wbC5oIgorI2luY2x1ZGUgIlRleHRUcmFjay5oIgorI2luY2x1ZGUgIlRleHRU
cmFja0N1ZUxpc3QuaCIKKyNpbmNsdWRlICJQYXNzUmVmUHRyLmgiCisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworY2xhc3MgQ3VlTG9hZGVyQ2xpZW50OworY2xhc3MgSFRNTFRyYWNrRWxlbWVudDsK
K2NsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CisKK2NsYXNzIExvYWRhYmxlVGV4dFRyYWNr
IDogcHVibGljIFRleHRUcmFjaywgcHVibGljIExvYWRhYmxlVGV4dFRyYWNrQ2xpZW50IHsKK3B1
YmxpYzoKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxMb2FkYWJsZVRleHRUcmFjaz4gY3JlYXRlKFNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFRleHRUcmFja0NsaWVudCogY2xpZW50LCBj
b25zdCBTdHJpbmcmIGtpbmQsIGNvbnN0IFN0cmluZyYgbGFiZWwsIGNvbnN0IFN0cmluZyYgbGFu
Z3VhZ2UsIGNvbnN0IGJvb2wgaXNEZWZhdWx0LCBIVE1MVHJhY2tFbGVtZW50KiB0cmFja0VsZW1l
bnQpCisgICAgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IExvYWRhYmxlVGV4dFRyYWNr
KGNvbnRleHQsIGNsaWVudCwga2luZCwgbGFiZWwsIGxhbmd1YWdlLCBpc0RlZmF1bHQsIHRyYWNr
RWxlbWVudCkpOworICAgIH0KKworICAgIHZpcnR1YWwgfkxvYWRhYmxlVGV4dFRyYWNrKCk7CisK
KyAgICB2b2lkIGxvYWQoY29uc3QgU3RyaW5nJiB1cmwsIEN1ZUxvYWRlckNsaWVudCopOworICAg
IGJvb2wgc3VwcG9ydHNUeXBlKGNvbnN0IFN0cmluZyYgdXJsKTsKKyAgICAKKyAgICAvLyBMb2Fk
YWJsZVRleHRUcmFja0NsaWVudCBtZXRob2RzCisgICAgdm9pZCB0cmFja0xvYWRTdGFydGVkKCk7
CisgICAgdm9pZCB0cmFja0xvYWRFcnJvcigpOworICAgIAorICAgIHZvaWQgZmlyZUN1ZUNoYW5n
ZUV2ZW50KCk7CisKK3ByaXZhdGU6CisgICAgTG9hZGFibGVUZXh0VHJhY2soU2NyaXB0RXhlY3V0
aW9uQ29udGV4dCosIFRleHRUcmFja0NsaWVudCosIGNvbnN0IFN0cmluZyYga2luZCwgY29uc3Qg
U3RyaW5nJiBsYWJlbCwgY29uc3QgU3RyaW5nJiBsYW5ndWFnZSwgY29uc3QgYm9vbCBpc0RlZmF1
bHQsIEhUTUxUcmFja0VsZW1lbnQqKTsKKyAgICAKKyAgICBIVE1MVHJhY2tFbGVtZW50KiBtX3Ry
YWNrRWxlbWVudDsKKworfTsKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCisjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvTG9hZGFibGVUZXh0VHJhY2tJbXBs
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTG9hZGFibGVUZXh0VHJhY2tJbXBsLmNwcApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5mZmRhNDRhYjhlMDUxZjZmOWUzOTgzYzFjYThlYjk1MTNmMWE2ZTlkCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9Mb2FkYWJsZVRleHRUcmFja0ltcGwuY3Bw
CkBAIC0wLDAgKzEsMTIyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMu
ICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNp
ZiBFTkFCTEUoVklERU9fVFJBQ0spCisKKyNpbmNsdWRlICJMb2FkYWJsZVRleHRUcmFja0ltcGwu
aCIKKworI2luY2x1ZGUgIlRleHRUcmFjay5oIgorI2luY2x1ZGUgIlRleHRUcmFja0N1ZS5oIgor
I2luY2x1ZGUgIlRleHRUcmFja0N1ZUxpc3QuaCIKKworI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJp
bmcuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitMb2FkYWJsZVRleHRUcmFja0ltcGw6Okxv
YWRhYmxlVGV4dFRyYWNrSW1wbChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25z
dCBTdHJpbmcmIGtpbmQsIGNvbnN0IFN0cmluZyYgbGFiZWwsIGNvbnN0IFN0cmluZyYgbGFuZ3Vh
Z2UsIGNvbnN0IGJvb2wgaXNEZWZhdWx0LCBMb2FkYWJsZVRleHRUcmFja0NsaWVudCogdGV4dFRy
YWNrQ2xpZW50LCBUZXh0VHJhY2sqIGNvbnN0IHRyYWNrKQorICAgIDogVGV4dFRyYWNrUHJpdmF0
ZUludGVyZmFjZSh0cmFjaywga2luZCwgbGFiZWwsIGxhbmd1YWdlKQorICAgICwgbV9zY3JpcHRF
eGVjdXRpb25Db250ZXh0KGNvbnRleHQpCisgICAgLCBtX3RleHRUcmFja0NsaWVudCh0ZXh0VHJh
Y2tDbGllbnQpCit7CisgICAgbV9jdWVzID0gVGV4dFRyYWNrQ3VlTGlzdDo6Y3JlYXRlKG1fc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCk7ICAgICAgCit9CisKK0xvYWRhYmxlVGV4dFRyYWNrSW1wbDo6
fkxvYWRhYmxlVGV4dFRyYWNrSW1wbCgpCit7CisgICAgaWYgKG1fY2xpZW50KQorICAgICAgbV9j
bGllbnQtPnJlbW92ZUN1ZXNGcm9tSW5kZXgobV9jdWVzLmdldCgpKTsKK30KKworVGV4dFRyYWNr
Q3VlTGlzdCogTG9hZGFibGVUZXh0VHJhY2tJbXBsOjpjdWVzKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gbV9jdWVzLmdldCgpOworfQorCitUZXh0VHJhY2tDdWVMaXN0KiBMb2FkYWJsZVRleHRUcmFj
a0ltcGw6OmFjdGl2ZUN1ZXMoKSBjb25zdAoreworICAgIHJldHVybiBtX2N1ZXMtPmFjdGl2ZUN1
ZXMoKTsKK30KKwordm9pZCBMb2FkYWJsZVRleHRUcmFja0ltcGw6Om5ld0N1ZXNMb2FkZWQoKSB7
CisgICAgbV9jbGllbnQtPnRha2VOZXdDdWVzRnJvbSh0aGlzKTsKK30KKwordm9pZCBMb2FkYWJs
ZVRleHRUcmFja0ltcGw6OnBvcE5ld2VzdEN1ZXMoVmVjdG9yPFRleHRUcmFja0N1ZSo+JiBvdXRw
dXQpIHsKKyAgICBmb3IgKFZlY3RvcjxUZXh0VHJhY2tDdWUqPjo6aXRlcmF0b3IgaXQgPSBtX25l
d2VzdEN1ZXMuYmVnaW4oKTsgaXQgPCBtX25ld2VzdEN1ZXMuZW5kKCk7IGl0KyspCisgICAgICAg
IG91dHB1dC5hcHBlbmQoKml0KTsKKyAgICBtX25ld2VzdEN1ZXMuY2xlYXIoKTsKK30KKwordm9p
ZCBMb2FkYWJsZVRleHRUcmFja0ltcGw6OmxvYWQoY29uc3QgU3RyaW5nJiB1cmwsIEN1ZUxvYWRl
ckNsaWVudCogY3VlTG9hZGVyQ2xpZW50KQoreworICAgIHNldEN1ZUxvYWRlckNsaWVudChjdWVM
b2FkZXJDbGllbnQpOworICAgIG1fcGFyc2VyLmxvYWQodXJsLCBtX3NjcmlwdEV4ZWN1dGlvbkNv
bnRleHQsIHRoaXMpOworICAgIG1fcmVhZHlTdGF0ZSA9IFRleHRUcmFjazo6TE9BRElORzsKK30K
KworYm9vbCBMb2FkYWJsZVRleHRUcmFja0ltcGw6OnN1cHBvcnRzVHlwZShjb25zdCBTdHJpbmcm
IHVybCkKK3sKKyAgIHJldHVybiBtX3BhcnNlci5zdXBwb3J0c1R5cGUodXJsKTsKK30KKwordm9p
ZCBMb2FkYWJsZVRleHRUcmFja0ltcGw6Om5ld0N1ZXNQYXJzZWQoKQoreworICAgIFZlY3RvcjxS
ZWZQdHI8VGV4dFRyYWNrQ3VlPiA+IG5ld0N1ZXM7CisgICAgbV9wYXJzZXIuZGVwbGV0ZVBhcnNl
ZEN1ZXMobmV3Q3Vlcyk7CisKKyAgICAvLyBUZW1wb3JhcmlseSBzdG9yZSBuZXdlc3QgY3VlcyB0
byBnaXZlCisgICAgLy8gdG8gQ3VlTG9hZGVyQ2xpZW50IHdoZW4gcG9wTmV3ZXN0Q3VlcworICAg
IC8vIGlzIGNhbGxlZC4KKyAgICBmb3IgKFZlY3RvcjxSZWZQdHI8VGV4dFRyYWNrQ3VlPiA+Ojpp
dGVyYXRvciBpdD0gbmV3Q3Vlcy5iZWdpbigpOyBpdCA8IG5ld0N1ZXMuZW5kKCk7IGl0KyspIHsK
KyAgICAgICAgVGV4dFRyYWNrQ3VlKiBjdWUgPSBpdC0+Z2V0KCk7CisgICAgICAgIGN1ZS0+c2V0
VHJhY2sobV90cmFjayk7CisgICAgICAgIG1fbmV3ZXN0Q3Vlcy5hcHBlbmQoY3VlKTsKKyAgICB9
CisKKyAgICBtX2N1ZXMtPmFwcGVuZChuZXdDdWVzKTsKKyAgICBuZXdDdWVzTG9hZGVkKCk7Cit9
CisKK3ZvaWQgTG9hZGFibGVUZXh0VHJhY2tJbXBsOjp0cmFja0xvYWRTdGFydGVkKCkKK3sKKyAg
ICBtX3RleHRUcmFja0NsaWVudC0+dHJhY2tMb2FkU3RhcnRlZCgpOworfQorCit2b2lkIExvYWRh
YmxlVGV4dFRyYWNrSW1wbDo6dHJhY2tMb2FkRXJyb3IoKQoreworICAgIG1fdGV4dFRyYWNrQ2xp
ZW50LT50cmFja0xvYWRFcnJvcigpOworICAgIG1fcmVhZHlTdGF0ZSA9IFRleHRUcmFjazo6RVJS
T1I7Cit9CisKK3ZvaWQgTG9hZGFibGVUZXh0VHJhY2tJbXBsOjp0cmFja0xvYWRDb21wbGV0ZWQo
KQoreworICAgIG1fcmVhZHlTdGF0ZSA9IFRleHRUcmFjazo6TE9BREVEOworfQorCit9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9Mb2FkYWJsZVRleHRUcmFja0ltcGwuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTG9hZGFibGVU
ZXh0VHJhY2tJbXBsLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uOTAzMTQxNmUxMzk2ZTMxNzk3NDZkZDg3MmI4MWU5
ZDg5NTgyYWZlMAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTG9hZGFi
bGVUZXh0VHJhY2tJbXBsLmgKQEAgLTAsMCArMSw5MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJj
ZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhp
cyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIu
IFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUg
Y29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUg
Zm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBv
dGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRI
SVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAq
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIExv
YWRhYmxlVGV4dFRyYWNrSW1wbF9oCisjZGVmaW5lIExvYWRhYmxlVGV4dFRyYWNrSW1wbF9oCisK
KyNpZiBFTkFCTEUoVklERU9fVFJBQ0spCisKKyNpbmNsdWRlICJDdWVMb2FkZXIuaCIKKyNpbmNs
dWRlICJDdWVQYXJzZXIuaCIKKyNpbmNsdWRlICJUZXh0VHJhY2tQcml2YXRlLmgiCisjaW5jbHVk
ZSA8d3RmL1Bhc3NPd25QdHIuaD4KKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1
ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBDdWVMb2Fk
ZXJDbGllbnQ7CitjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0OworY2xhc3MgVGV4dFRyYWNr
OworY2xhc3MgVGV4dFRyYWNrQ3VlOworY2xhc3MgVGV4dFRyYWNrQ3VlTGlzdDsKKworY2xhc3Mg
TG9hZGFibGVUZXh0VHJhY2tDbGllbnQgeworcHVibGljOgorICAgIHZpcnR1YWwgdm9pZCB0cmFj
a0xvYWRTdGFydGVkKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCB0cmFja0xvYWRFcnJvcigpID0g
MDsKK307CisKK2NsYXNzIExvYWRhYmxlVGV4dFRyYWNrSW1wbCA6IHB1YmxpYyBUZXh0VHJhY2tQ
cml2YXRlSW50ZXJmYWNlLCBwdWJsaWMgQ3VlUGFyc2VyQ2xpZW50LCBwdWJsaWMgQ3VlTG9hZGVy
IHsKK3B1YmxpYzoKKyAgICBzdGF0aWMgUGFzc093blB0cjxMb2FkYWJsZVRleHRUcmFja0ltcGw+
IGNyZWF0ZShTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIGtp
bmQsIGNvbnN0IFN0cmluZyYgbGFiZWwsIGNvbnN0IFN0cmluZyYgbGFuZ3VhZ2UsIGNvbnN0IGJv
b2wgaXNEZWZhdWx0LCBMb2FkYWJsZVRleHRUcmFja0NsaWVudCogdGV4dFRyYWNrQ2xpZW50LCBU
ZXh0VHJhY2sqIHRyYWNrKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBMb2Fk
YWJsZVRleHRUcmFja0ltcGwoY29udGV4dCwga2luZCwgbGFiZWwsIGxhbmd1YWdlLCBpc0RlZmF1
bHQsIHRleHRUcmFja0NsaWVudCwgdHJhY2spKTsKKyAgICB9CisgICAgdmlydHVhbCB+TG9hZGFi
bGVUZXh0VHJhY2tJbXBsKCk7CisKKyAgICAvLyBUZXh0VHJhY2tQcml2YXRlSW50ZXJmYWNlIG1l
dGhvZHMKKyAgICB2aXJ0dWFsIFRleHRUcmFja0N1ZUxpc3QqIGN1ZXMoKSBjb25zdDsKKyAgICB2
aXJ0dWFsIFRleHRUcmFja0N1ZUxpc3QqIGFjdGl2ZUN1ZXMoKSBjb25zdDsKKworICAgIHZpcnR1
YWwgdm9pZCBsb2FkKGNvbnN0IFN0cmluZyYgdXJsLCBDdWVMb2FkZXJDbGllbnQqKTsKKyAgICB2
aXJ0dWFsIGJvb2wgc3VwcG9ydHNUeXBlKGNvbnN0IFN0cmluZyYgdXJsKTsKKworICAgIC8vIEN1
ZVBhcnNlckNsaWVudCBtZXRob2RzCisgICAgdmlydHVhbCB2b2lkIG5ld0N1ZXNQYXJzZWQoKTsK
KyAgICB2aXJ0dWFsIHZvaWQgdHJhY2tMb2FkU3RhcnRlZCgpOworICAgIHZpcnR1YWwgdm9pZCB0
cmFja0xvYWRFcnJvcigpOworICAgIHZpcnR1YWwgdm9pZCB0cmFja0xvYWRDb21wbGV0ZWQoKTsK
KworICAgIC8vIEN1ZUxvYWRlciBpbnRlcmZhY2UKKyAgICB2aXJ0dWFsIHZvaWQgbmV3Q3Vlc0xv
YWRlZCgpOworICAgIHZpcnR1YWwgdm9pZCBwb3BOZXdlc3RDdWVzKFZlY3RvcjxUZXh0VHJhY2tD
dWUqPiYpOworCitwcml2YXRlOgorICAgIExvYWRhYmxlVGV4dFRyYWNrSW1wbChTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiBjb250ZXh0LCBjb25zdCBTdHJpbmcmIGtpbmQsIGNvbnN0IFN0cmluZyYg
bGFiZWwsIGNvbnN0IFN0cmluZyYgbGFuZ3VhZ2UsIGNvbnN0IGJvb2wgaXNEZWZhdWx0LCBMb2Fk
YWJsZVRleHRUcmFja0NsaWVudCosIFRleHRUcmFjayopOworICAgIEN1ZVBhcnNlciBtX3BhcnNl
cjsKKyAgICBSZWZQdHI8VGV4dFRyYWNrQ3VlTGlzdD4gbV9jdWVzOworICAgIFZlY3RvcjxUZXh0
VHJhY2tDdWUqPiBtX25ld2VzdEN1ZXM7CisKKyAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBt
X3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7CisgICAgCisgICAgTG9hZGFibGVUZXh0VHJhY2tDbGll
bnQqIG1fdGV4dFRyYWNrQ2xpZW50OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisj
ZW5kaWYKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9NdXRhYmxlVGV4
dFRyYWNrLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTXV0YWJsZVRleHRUcmFjay5jcHAKbmV3
IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMC4uYzk1MTIxZWQ2OGY3MDYzZGQxMmIxZjM1NWM0ZmJjZDhjODczNzFkNgotLS0gL2Rl
di9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTXV0YWJsZVRleHRUcmFjay5jcHAKQEAg
LTAsMCArMSw1MyBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiAgQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNT
IE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRI
RQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBG
T1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUg
Rk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBM
QVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9T
UyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04p
IEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRI
RVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcg
TkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVT
RQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElU
WSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFC
TEUoVklERU9fVFJBQ0spCisKKyNpbmNsdWRlICJNdXRhYmxlVGV4dFRyYWNrLmgiCisKKyNpbmNs
dWRlICJNdXRhYmxlVGV4dFRyYWNrSW1wbC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK011
dGFibGVUZXh0VHJhY2s6Ok11dGFibGVUZXh0VHJhY2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
Y29udGV4dCwgVGV4dFRyYWNrQ2xpZW50KiB0cmFja0NsaWVudCwgQ3VlTG9hZGVyQ2xpZW50KiBj
dWVDbGllbnQsIGNvbnN0IFN0cmluZyYga2luZCwgY29uc3QgU3RyaW5nJiBsYWJlbCwgY29uc3Qg
U3RyaW5nJiBsYW5ndWFnZSkKKyAgICA6IFRleHRUcmFjayhjb250ZXh0LCB0cmFja0NsaWVudCwg
a2luZCwgbGFiZWwsIGxhbmd1YWdlKQoreworICAgIG1fcHJpdmF0ZSA9IE11dGFibGVUZXh0VHJh
Y2tJbXBsOjpjcmVhdGUoY29udGV4dCwgY3VlQ2xpZW50LCBraW5kLCBsYWJlbCwgbGFuZ3VhZ2Us
IHRoaXMpOworfQorCit2b2lkIE11dGFibGVUZXh0VHJhY2s6OmFkZEN1ZShUZXh0VHJhY2tDdWUq
IGN1ZSkKK3sKKyAgICBtX3ByaXZhdGUtPmFkZEN1ZShjdWUpOworfQordm9pZCBNdXRhYmxlVGV4
dFRyYWNrOjpyZW1vdmVDdWUoVGV4dFRyYWNrQ3VlKiBjdWUpCit7CisgICAgbV9wcml2YXRlLT5y
ZW1vdmVDdWUoY3VlKTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvTXV0YWJsZVRleHRUcmFjay5oIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9NdXRhYmxlVGV4dFRyYWNrLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k
ZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNjM2Nzc4MWRhNzEw
MTFkZDEzN2NkYzQ5Mzg0ZjM2ZDZmMWE5NzY5YQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2h0bWwvTXV0YWJsZVRleHRUcmFjay5oCkBAIC0wLDAgKzEsNTcgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI2lmbmRlZiBNdXRhYmxlVGV4dFRyYWNrX2gKKyNkZWZpbmUgTXV0YWJsZVRleHRUcmFja19o
CisKKyNpZiBFTkFCTEUoVklERU9fVFJBQ0spCisKKyNpbmNsdWRlICJUZXh0VHJhY2suaCIKKwor
I2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xh
c3MgQ3VlTG9hZGVyQ2xpZW50OworY2xhc3MgVGV4dFRyYWNrQ3VlOworCitjbGFzcyBNdXRhYmxl
VGV4dFRyYWNrIDogcHVibGljIFRleHRUcmFjayB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NS
ZWZQdHI8TXV0YWJsZVRleHRUcmFjaz4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNv
bnRleHQsIFRleHRUcmFja0NsaWVudCogdHJhY2tDbGllbnQsIEN1ZUxvYWRlckNsaWVudCogY3Vl
Q2xpZW50LCBjb25zdCBTdHJpbmcmIGtpbmQsIGNvbnN0IFN0cmluZyYgbGFiZWwgPSAiIiwgY29u
c3QgU3RyaW5nJiBsYW5ndWFnZSA9ICIiKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UmVm
KG5ldyBNdXRhYmxlVGV4dFRyYWNrKGNvbnRleHQsIHRyYWNrQ2xpZW50LCBjdWVDbGllbnQsIGtp
bmQsIGxhYmVsLCBsYW5ndWFnZSkpOworICAgIH0KKyAgICB2aXJ0dWFsIH5NdXRhYmxlVGV4dFRy
YWNrKCkgeyB9CisgICAgCisgICAgdm9pZCBhZGRDdWUoVGV4dFRyYWNrQ3VlKik7CisgICAgdm9p
ZCByZW1vdmVDdWUoVGV4dFRyYWNrQ3VlKik7Citwcml2YXRlOgorICAgIE11dGFibGVUZXh0VHJh
Y2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFRleHRUcmFja0NsaWVudCosIEN1ZUxvYWRlckNs
aWVudCosIGNvbnN0IFN0cmluZyYga2luZCwgY29uc3QgU3RyaW5nJiBsYWJlbCwgY29uc3QgU3Ry
aW5nJiBsYW5ndWFnZSk7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgor
I2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL011dGFibGVUZXh0VHJhY2su
aWRsIGIvU291cmNlL1dlYkNvcmUvaHRtbC9NdXRhYmxlVGV4dFRyYWNrLmlkbApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
Li4xNTMzYmQyMDM3MDJhNWJkNjExOTlkMTk1MjQzZWQ5MGFkMTUwN2VkCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9NdXRhYmxlVGV4dFRyYWNrLmlkbApAQCAtMCwwICsx
LDM0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA3LCAyMDEwIEFwcGxlIEluYy4gIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBt
ZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJp
bmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGlj
ZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBp
biB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRl
ZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURF
RCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBP
UiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUK
KyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9S
IEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNI
QUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZP
UiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFS
WSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1Mg
T0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBI
T1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVS
IElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5F
R0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UK
KyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkg
T0YgU1VDSCBEQU1BR0UuIAorICovCisKK21vZHVsZSBodG1sIHsKKworICAgIGludGVyZmFjZSBb
CisgICAgICAgIENvbmRpdGlvbmFsPVZJREVPX1RSQUNLCisgICAgXSBNdXRhYmxlVGV4dFRyYWNr
IDogVGV4dFRyYWNrIHsKKyAgICAgICAgdm9pZCBhZGRDdWUoaW4gVGV4dFRyYWNrQ3VlIGN1ZSk7
CisgICAgICAgIHZvaWQgcmVtb3ZlQ3VlKGluIFRleHRUcmFja0N1ZSBjdWUpOworICAgIH07Cit9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL011dGFibGVUZXh0VHJhY2tJbXBsLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTXV0YWJsZVRleHRUcmFja0ltcGwuY3BwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLjcwMWVhNzJkZDkwNmExNmU0MDQ0MWNhMDY4MzJmMzU2MjYyYjdlNGUKLS0tIC9kZXYvbnVs
bAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL011dGFibGVUZXh0VHJhY2tJbXBsLmNwcApAQCAt
MCwwICsxLDk1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuICBBbGwg
cmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNl
IGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUg
cGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUg
bWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRo
ZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBi
aW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIg
aW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklE
RUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
CisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFC
TEUoVklERU9fVFJBQ0spCisKKyNpbmNsdWRlICJNdXRhYmxlVGV4dFRyYWNrSW1wbC5oIgorCisj
aW5jbHVkZSAiVGV4dFRyYWNrLmgiCisjaW5jbHVkZSAiVGV4dFRyYWNrQ3VlLmgiCisjaW5jbHVk
ZSAiVGV4dFRyYWNrQ3VlTGlzdC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK011dGFibGVU
ZXh0VHJhY2tJbXBsOjpNdXRhYmxlVGV4dFRyYWNrSW1wbChTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBjb250ZXh0LCBDdWVMb2FkZXJDbGllbnQqIGNsaWVudCwgY29uc3QgU3RyaW5nJiBraW5kLCBj
b25zdCBTdHJpbmcmIGxhYmVsLCBjb25zdCBTdHJpbmcmIGxhbmd1YWdlLCBUZXh0VHJhY2sqIGNv
bnN0IHRyYWNrKQorICAgIDogVGV4dFRyYWNrUHJpdmF0ZUludGVyZmFjZSh0cmFjaywga2luZCwg
bGFiZWwsIGxhbmd1YWdlKQorICAgICwgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KGNvbnRleHQp
Cit7CisgICAgc2V0Q3VlTG9hZGVyQ2xpZW50KGNsaWVudCk7CisgICAgbV9jdWVzID0gVGV4dFRy
YWNrQ3VlTGlzdDo6Y3JlYXRlKG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCk7Cit9CisKK011dGFi
bGVUZXh0VHJhY2tJbXBsOjp+TXV0YWJsZVRleHRUcmFja0ltcGwoKQoreworICAgIGlmIChtX2Ns
aWVudCkKKyAgICAgIG1fY2xpZW50LT5yZW1vdmVDdWVzRnJvbUluZGV4KG1fY3Vlcy5nZXQoKSk7
Cit9CisKK3ZvaWQgTXV0YWJsZVRleHRUcmFja0ltcGw6OmFkZEN1ZShUZXh0VHJhY2tDdWUqIGN1
ZSkKK3sKKyAgICBjdWUtPnNldFRyYWNrKG1fdHJhY2spOworICAgIG1fY3Vlcy0+YXBwZW5kKGN1
ZSk7CisgICAgbV9uZXdlc3RDdWVzLmFwcGVuZChjdWUpOworICAgIG5ld0N1ZXNMb2FkZWQoKTsK
KyAgICAKKyAgICBtX3JlYWR5U3RhdGUgPSBUZXh0VHJhY2s6OkxPQURJTkc7Cit9CisKK3ZvaWQg
TXV0YWJsZVRleHRUcmFja0ltcGw6OnJlbW92ZUN1ZShUZXh0VHJhY2tDdWUqIGN1ZSkKK3sKKyAg
ICBjdWUtPnNldElzQWN0aXZlKGZhbHNlKTsKKyAgICBtX2N1ZXMtPnJlbW92ZShjdWUpOworICAg
IFJlZlB0cjxUZXh0VHJhY2tDdWVMaXN0PiBjdWVMaXN0ID0gVGV4dFRyYWNrQ3VlTGlzdDo6Y3Jl
YXRlKG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCk7CisgICAgY3VlTGlzdC0+YXBwZW5kKGN1ZSk7
CisgICAgbV9jbGllbnQtPnJlbW92ZUN1ZXNGcm9tSW5kZXgoY3VlTGlzdC5nZXQoKSk7Cit9CisK
K1RleHRUcmFja0N1ZUxpc3QqIE11dGFibGVUZXh0VHJhY2tJbXBsOjpjdWVzKCkgY29uc3QKK3sK
KyAgICByZXR1cm4gbV9jdWVzLmdldCgpOworfQorCitUZXh0VHJhY2tDdWVMaXN0KiBNdXRhYmxl
VGV4dFRyYWNrSW1wbDo6YWN0aXZlQ3VlcygpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fY3Vlcy0+
YWN0aXZlQ3VlcygpOworfQorCit2b2lkIE11dGFibGVUZXh0VHJhY2tJbXBsOjpuZXdDdWVzTG9h
ZGVkKCkgeworICAgIG1fY2xpZW50LT50YWtlTmV3Q3Vlc0Zyb20odGhpcyk7Cit9CisKK3ZvaWQg
TXV0YWJsZVRleHRUcmFja0ltcGw6OnBvcE5ld2VzdEN1ZXMoVmVjdG9yPFRleHRUcmFja0N1ZSo+
JiBvdXRwdXQpIHsKKyAgICBmb3IgKFZlY3RvcjxUZXh0VHJhY2tDdWUqPjo6aXRlcmF0b3IgaXQg
PSBtX25ld2VzdEN1ZXMuYmVnaW4oKTsgaXQgPCBtX25ld2VzdEN1ZXMuZW5kKCk7IGl0KyspIHsK
KyAgICAgICAgVGV4dFRyYWNrQ3VlKiBjdWUgPSAqaXQ7CisgICAgICAgIG91dHB1dC5hcHBlbmQo
Y3VlKTsKKyAgICB9CisgICAgbV9uZXdlc3RDdWVzLmNsZWFyKCk7Cit9CisKK30gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL011
dGFibGVUZXh0VHJhY2tJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL011dGFibGVUZXh0VHJh
Y2tJbXBsLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMC4uOTY0YTQwY2I0MDFkMGUzNzgzMGU1OWQxMzIxY2Y1MTRlYjgz
NWZhMgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvTXV0YWJsZVRleHRU
cmFja0ltcGwuaApAQCAtMCwwICsxLDc2IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdv
b2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5k
IHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2Rp
ZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRp
dGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUg
bXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0
cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dp
bmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1h
dGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZU
V0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFO
WQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBM
SU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkg
QU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4g
IElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRP
UlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lB
TCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1Ig
U0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1Mg
SU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElB
QklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisg
KiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkg
T1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBU
SEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpZm5kZWYgTXV0YWJsZVRl
eHRUcmFja0ltcGxfaAorI2RlZmluZSBNdXRhYmxlVGV4dFRyYWNrSW1wbF9oCisKKyNpZiBFTkFC
TEUoVklERU9fVFJBQ0spCisKKyNpbmNsdWRlICJDdWVMb2FkZXIuaCIKKyNpbmNsdWRlICJUZXh0
VHJhY2tQcml2YXRlLmgiCisjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KKyNpbmNsdWRlIDx3
dGYvUGFzc1JlZlB0ci5oPgorI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCitjbGFzcyBDdWVMb2FkZXJDbGllbnQ7CitjbGFzcyBTY3JpcHRFeGVjdXRpb25D
b250ZXh0OworY2xhc3MgVGV4dFRyYWNrOworY2xhc3MgVGV4dFRyYWNrQ3VlOworY2xhc3MgVGV4
dFRyYWNrQ3VlTGlzdDsKKworY2xhc3MgTXV0YWJsZVRleHRUcmFja0ltcGwgOiBwdWJsaWMgVGV4
dFRyYWNrUHJpdmF0ZUludGVyZmFjZSwgcHVibGljIEN1ZUxvYWRlciB7CitwdWJsaWM6CisgICAg
c3RhdGljIFBhc3NPd25QdHI8TXV0YWJsZVRleHRUcmFja0ltcGw+IGNyZWF0ZShTY3JpcHRFeGVj
dXRpb25Db250ZXh0KiBjb250ZXh0LCBDdWVMb2FkZXJDbGllbnQqIGNsaWVudCwgY29uc3QgU3Ry
aW5nJiBraW5kLCBjb25zdCBTdHJpbmcmIGxhYmVsLCBjb25zdCBTdHJpbmcmIGxhbmd1YWdlLCBU
ZXh0VHJhY2sqIHRyYWNrKQorICAgIHsKKyAgICAgICAgcmV0dXJuIGFkb3B0UHRyKG5ldyBNdXRh
YmxlVGV4dFRyYWNrSW1wbChjb250ZXh0LCBjbGllbnQsIGtpbmQsIGxhYmVsLCBsYW5ndWFnZSwg
dHJhY2spKTsKKyAgICB9CisgICAgdmlydHVhbCB+TXV0YWJsZVRleHRUcmFja0ltcGwoKTsKKwor
ICAgIC8vIFRleHRUcmFja1ByaXZhdGVJbnRlcmZhY2UgbWV0aG9kcworICAgIHZpcnR1YWwgVGV4
dFRyYWNrQ3VlTGlzdCogY3VlcygpIGNvbnN0OworICAgIHZpcnR1YWwgVGV4dFRyYWNrQ3VlTGlz
dCogYWN0aXZlQ3VlcygpIGNvbnN0OworICAgIAorICAgIHZpcnR1YWwgdm9pZCBhZGRDdWUoVGV4
dFRyYWNrQ3VlKik7CisgICAgdmlydHVhbCB2b2lkIHJlbW92ZUN1ZShUZXh0VHJhY2tDdWUqKTsK
KworICAgIC8vIEN1ZUxvYWRlciBpbnRlcmZhY2UKKyAgICB2aXJ0dWFsIHZvaWQgbmV3Q3Vlc0xv
YWRlZCgpOworICAgIHZpcnR1YWwgdm9pZCBwb3BOZXdlc3RDdWVzKFZlY3RvcjxUZXh0VHJhY2tD
dWUqPiYpOworCitwcml2YXRlOgorICAgIE11dGFibGVUZXh0VHJhY2tJbXBsKFNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqIGNvbnRleHQsIEN1ZUxvYWRlckNsaWVudCosIGNvbnN0IFN0cmluZyYga2lu
ZCwgY29uc3QgU3RyaW5nJiBsYWJlbCwgY29uc3QgU3RyaW5nJiBsYW5ndWFnZSwgVGV4dFRyYWNr
Kik7CisKKyAgICBSZWZQdHI8VGV4dFRyYWNrQ3VlTGlzdD4gbV9jdWVzOworICAgIFZlY3RvcjxU
ZXh0VHJhY2tDdWUqPiBtX25ld2VzdEN1ZXM7CisKKyAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0
KiBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CisKKyNlbmRpZgorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1RleHRU
cmFjay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1RleHRUcmFjay5jcHAKbmV3IGZpbGUgbW9k
ZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4u
MjhkYTYxN2E5MjU3YzY1NWVmM2YwN2Y5Nzc1ZmIxMmFlNWNiM2U5ZAotLS0gL2Rldi9udWxsCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dFRyYWNrLmNwcApAQCAtMCwwICsxLDE0NSBAQAor
LyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKKyAqIG1ldDoKKyAqCisgKiAg
ICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3Zl
IGNvcHlyaWdodAorICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBm
b3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZQorICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgorICogaW4gdGhl
IGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQor
ICogZGlzdHJpYnV0aW9uLgorICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5j
LiBub3IgdGhlIG5hbWVzIG9mIGl0cworICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVu
ZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KKyAqIHRoaXMgc29mdHdhcmUg
d2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJV
VE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIE9X
TkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLAorICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCisgKiBEQVRBLCBPUiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkK
KyAqIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoVklERU9fVFJBQ0spCisKKyNpbmNsdWRl
ICJUZXh0VHJhY2suaCIKKworI2luY2x1ZGUgIkV2ZW50LmgiCisjaW5jbHVkZSAiRXhjZXB0aW9u
Q29kZS5oIgorI2luY2x1ZGUgIlRleHRUcmFja0N1ZUxpc3QuaCIKKyNpbmNsdWRlICJUZXh0VHJh
Y2tQcml2YXRlLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworVGV4dFRyYWNrOjpUZXh0VHJh
Y2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgVGV4dFRyYWNrQ2xpZW50KiBjbGll
bnQsIGNvbnN0IFN0cmluZyYga2luZCwgY29uc3QgU3RyaW5nJiBsYWJlbCwgY29uc3QgU3RyaW5n
JiBsYW5ndWFnZSkKKyAgICA6IEFjdGl2ZURPTU9iamVjdChjb250ZXh0LCB0aGlzKQorICAgICwg
bV9jbGllbnQoY2xpZW50KQorICAgICwgbV9raW5kKGtpbmQpCisgICAgLCBtX2xhYmVsKGxhYmVs
KQorICAgICwgbV9sYW5ndWFnZShsYW5ndWFnZSkKK3sKKyAgICAvLyBGSVhNRSh2cmspOiBuZWVk
IHRvIGluaXRpYWxpemUgbV9wcml2YXRlIC4uLiBzaG91bGQgcHJvYmFibHkgaGF2ZSBudWxscHJp
dmF0ZSBhbGEgbWVkaWFwbGF5ZXIKK30KKworVGV4dFRyYWNrOjp+VGV4dFRyYWNrKCkKK3sKK30K
KworU3RyaW5nIFRleHRUcmFjazo6a2luZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcHJpdmF0
ZS0+a2luZCgpOworfQorCitTdHJpbmcgVGV4dFRyYWNrOjpsYWJlbCgpIGNvbnN0Cit7CisgICAg
cmV0dXJuIG1fcHJpdmF0ZS0+bGFiZWwoKTsKK30KKworU3RyaW5nIFRleHRUcmFjazo6bGFuZ3Vh
Z2UoKSBjb25zdAoreworICAgIHJldHVybiBtX3ByaXZhdGUtPmxhbmd1YWdlKCk7Cit9CisKK1Rl
eHRUcmFjazo6UmVhZHlTdGF0ZSBUZXh0VHJhY2s6OnJlYWR5U3RhdGUoKSBjb25zdAoreworICAg
IHJldHVybiBtX3ByaXZhdGUtPnJlYWR5U3RhdGUoKTsKK30KKworVGV4dFRyYWNrOjpNb2RlIFRl
eHRUcmFjazo6bW9kZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcHJpdmF0ZS0+bW9kZSgpOwor
fQorCit2b2lkIFRleHRUcmFjazo6c2V0TW9kZSh1bnNpZ25lZCBzaG9ydCBtb2RlLCBFeGNlcHRp
b25Db2RlJiBlYykKK3sKKyAgICBpZiAobW9kZSAhPSBUZXh0VHJhY2s6Ok9GRiAmJiBtb2RlICE9
IFRleHRUcmFjazo6SElEREVOICYmIG1vZGUgIT0gVGV4dFRyYWNrOjpTSE9XSU5HKSB7CisgICAg
ICAgIGVjID0gSU5WQUxJRF9TVEFURV9FUlI7CisgICAgICAgIHJldHVybjsKKyAgICB9CisgICAg
bV9wcml2YXRlLT5zZXRNb2RlKHN0YXRpY19jYXN0PE1vZGU+KG1vZGUpKTsKKyAgICBtX2NsaWVu
dC0+dGV4dFRyYWNrTW9kZUNoYW5nZWQodGhpcyk7Cit9CisKK1RleHRUcmFja0N1ZUxpc3QqIFRl
eHRUcmFjazo6Y3VlcygpIGNvbnN0Cit7CisgICAgaWYgKG1fcHJpdmF0ZS0+bW9kZSgpICE9IFRl
eHRUcmFjazo6T0ZGKQorICAgICAgICByZXR1cm4gbV9wcml2YXRlLT5jdWVzKCk7CisgICAgZWxz
ZQorICAgICAgICByZXR1cm4gMDsKKworfQorCitUZXh0VHJhY2tDdWVMaXN0KiBUZXh0VHJhY2s6
OmFjdGl2ZUN1ZXMoKSBjb25zdAoreworICAgIGlmIChtX3ByaXZhdGUtPm1vZGUoKSAhPSBUZXh0
VHJhY2s6Ok9GRikKKyAgICAgICAgcmV0dXJuIG1fcHJpdmF0ZS0+YWN0aXZlQ3VlcygpOworICAg
IGVsc2UKKyAgICAgICAgcmV0dXJuIDA7Cit9CisKK3ZvaWQgVGV4dFRyYWNrOjp0cmFja0xvYWRT
dGFydGVkKCkKK3sKKyAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOworICAgZGlzcGF0Y2hFdmVudChF
dmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5sb2FkRXZlbnQsIGZhbHNlLCBmYWxzZSksIGVjKTsK
K30KKwordm9pZCBUZXh0VHJhY2s6OnRyYWNrTG9hZEVycm9yKCkKK3sKKyAgICBFeGNlcHRpb25D
b2RlIGVjID0gMDsKKyAgICBkaXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygp
LmVycm9yRXZlbnQsIGZhbHNlLCBmYWxzZSksIGVjKTsKK30KKwordm9pZCBUZXh0VHJhY2s6OmZp
cmVDdWVDaGFuZ2VFdmVudCgpCit7CisgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAgZGlz
cGF0Y2hFdmVudChFdmVudDo6Y3JlYXRlKGV2ZW50TmFtZXMoKS5jdWVjaGFuZ2VFdmVudCwgZmFs
c2UsIGZhbHNlKSwgZWMpOworfQorCitTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBUZXh0VHJhY2s6
OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKSBjb25zdAoreworICAgIHJldHVybiBBY3RpdmVET01P
YmplY3Q6OnNjcmlwdEV4ZWN1dGlvbkNvbnRleHQoKTsKK30KKworRXZlbnRUYXJnZXREYXRhKiBU
ZXh0VHJhY2s6OmV2ZW50VGFyZ2V0RGF0YSgpCit7CisgICAgcmV0dXJuICZtX2V2ZW50VGFyZ2V0
RGF0YTsKK30KKworRXZlbnRUYXJnZXREYXRhKiBUZXh0VHJhY2s6OmVuc3VyZUV2ZW50VGFyZ2V0
RGF0YSgpCit7CisgICAgcmV0dXJuICZtX2V2ZW50VGFyZ2V0RGF0YTsKK30KKworfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
VGV4dFRyYWNrLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1RleHRUcmFjay5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LmQ0ZmQ3MzI0ZmY3MmI3MDQ0NWFhN2Q4Y2E3OTM1N2NmMjdiYjY3OTAKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1RleHRUcmFjay5oCkBAIC0wLDAgKzEsMTI0IEBACisv
KgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQu
CisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jt
cywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlk
ZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRp
c3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3Qg
cmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9m
IGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRv
Y3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0
cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01Q
VVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgor
ICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBV
VEVSLCBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
IAorICovCisKKyNpZm5kZWYgVGV4dFRyYWNrX2gKKyNkZWZpbmUgVGV4dFRyYWNrX2gKKworI2lm
IEVOQUJMRShWSURFT19UUkFDSykKKworI2luY2x1ZGUgIkFjdGl2ZURPTU9iamVjdC5oIgorI2lu
Y2x1ZGUgIkV2ZW50VGFyZ2V0LmgiCisjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CisjaW5j
bHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KKyNpbmNsdWRlIDx3dGYvUGFzc1JlZlB0ci5oPgorI2lu
Y2x1ZGUgPHd0Zi9SZWZDb3VudGVkLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3Mg
U2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKK2NsYXNzIFRleHRUcmFjazsKK2NsYXNzIFRleHRUcmFj
a0N1ZUxpc3Q7CitjbGFzcyBUZXh0VHJhY2tQcml2YXRlSW50ZXJmYWNlOworCitjbGFzcyBUZXh0
VHJhY2tDbGllbnQgeworcHVibGljOgorICAgIHZpcnR1YWwgflRleHRUcmFja0NsaWVudCgpIHsg
fQorICAgIC8vIFRoZSByZWFkeSBzdGF0ZSBoYXMgY2hhbmdlZC4KKyAgICB2aXJ0dWFsIHZvaWQg
dGV4dFRyYWNrUmVhZHlTdGF0ZUNoYW5nZWQoVGV4dFRyYWNrKikgeyB9CisKKyAgICAvLyBUaGUg
bW9kZSBzdGF0ZSBoYXMgY2hhbmdlZC4KKyAgICB2aXJ0dWFsIHZvaWQgdGV4dFRyYWNrTW9kZUNo
YW5nZWQoVGV4dFRyYWNrKikgeyB9CisKKyAgICAvLyBJbmZvcm0gY2xpZW50IG9mIG5ldyB0cmFj
ay4KKyAgICB2aXJ0dWFsIHZvaWQgdGV4dFRyYWNrQ3JlYXRlZChUZXh0VHJhY2sqKSB7IH0KK307
CisKK2NsYXNzIFRleHRUcmFjayA6IHB1YmxpYyBSZWZDb3VudGVkPFRleHRUcmFjaz4sIHB1Ymxp
YyBFdmVudFRhcmdldCwgcHVibGljIEFjdGl2ZURPTU9iamVjdCB7CitwdWJsaWM6CisgICAgc3Rh
dGljIFBhc3NSZWZQdHI8VGV4dFRyYWNrPiBjcmVhdGUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
Y29udGV4dCwgVGV4dFRyYWNrQ2xpZW50KiBjbGllbnQsIGNvbnN0IFN0cmluZyYga2luZCwgY29u
c3QgU3RyaW5nJiBsYWJlbCwgY29uc3QgU3RyaW5nJiBsYW5ndWFnZSkKKyAgICB7CisgICAgICAg
IHJldHVybiBhZG9wdFJlZihuZXcgVGV4dFRyYWNrKGNvbnRleHQsIGNsaWVudCwga2luZCwgbGFi
ZWwsIGxhbmd1YWdlKSk7CisgICAgfQorICAgIHZpcnR1YWwgflRleHRUcmFjaygpOworCisgICAg
U3RyaW5nIGtpbmQoKSBjb25zdDsKKyAgICBTdHJpbmcgbGFiZWwoKSBjb25zdDsKKyAgICBTdHJp
bmcgbGFuZ3VhZ2UoKSBjb25zdDsKKworICAgIGVudW0gUmVhZHlTdGF0ZSB7IE5PTkUsIExPQURJ
TkcsIExPQURFRCwgRVJST1IgfTsKKyAgICBSZWFkeVN0YXRlIHJlYWR5U3RhdGUoKSBjb25zdDsK
KworICAgIGVudW0gTW9kZSB7IE9GRiwgSElEREVOLCBTSE9XSU5HIH07CisgICAgTW9kZSBtb2Rl
KCkgY29uc3Q7CisgICAgdm9pZCBzZXRNb2RlKHVuc2lnbmVkIHNob3J0LCBFeGNlcHRpb25Db2Rl
Jik7CisKKyAgICBUZXh0VHJhY2tDdWVMaXN0KiBjdWVzKCkgY29uc3Q7CisgICAgVGV4dFRyYWNr
Q3VlTGlzdCogYWN0aXZlQ3VlcygpIGNvbnN0OworCisgICAgLy8gQWxlcnQgY2xpZW50IHRoYXQg
dHJhY2sncyByZWFkeSBzdGF0ZSBoYXMgY2hhbmdlZC4KKyAgICB2b2lkIHJlYWR5U3RhdGVDaGFu
Z2VkKCk7CisKKyAgICAvLyBBbGVydCBjbGllbnQgdGhhdCB0cmFjaydzIG1vZGUgaGFzIGNoYW5n
ZWQuCisgICAgdm9pZCBtb2RlQ2hhbmdlZCgpOworICAgIAorICAgIHZpcnR1YWwgdm9pZCB0cmFj
a0xvYWRTdGFydGVkKCk7CisgICAgdmlydHVhbCB2b2lkIHRyYWNrTG9hZEVycm9yKCk7CisgICAg
dmlydHVhbCB2b2lkIGZpcmVDdWVDaGFuZ2VFdmVudCgpOworICAgIAorICAgIC8vIEV2ZW50IHRh
cmdldAorICAgIHZpcnR1YWwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0RXhlY3V0aW9u
Q29udGV4dCgpIGNvbnN0OworICAgIAorICAgIERFRklORV9BVFRSSUJVVEVfRVZFTlRfTElTVEVO
RVIobG9hZCk7CisgICAgREVGSU5FX0FUVFJJQlVURV9FVkVOVF9MSVNURU5FUihlcnJvcik7Cisg
ICAgREVGSU5FX0FUVFJJQlVURV9FVkVOVF9MSVNURU5FUihjdWVjaGFuZ2UpOworICAgIAorICAg
IHZpcnR1YWwgVGV4dFRyYWNrKiB0b1RleHRUcmFjaygpIHsgcmV0dXJuIHRoaXM7IH0KKworICAg
IHVzaW5nIFJlZkNvdW50ZWQ8VGV4dFRyYWNrPjo6cmVmOworICAgIHVzaW5nIFJlZkNvdW50ZWQ8
VGV4dFRyYWNrPjo6ZGVyZWY7CisKK3Byb3RlY3RlZDoKKyAgICBUZXh0VHJhY2soU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCosIFRleHRUcmFja0NsaWVudCosIGNvbnN0IFN0cmluZyYga2luZCwgY29u
c3QgU3RyaW5nJiBsYWJlbCwgY29uc3QgU3RyaW5nJiBsYW5ndWFnZSk7CisgICAgT3duUHRyPFRl
eHRUcmFja1ByaXZhdGVJbnRlcmZhY2U+IG1fcHJpdmF0ZTsKKyAgICAKK3ByaXZhdGU6ICAgIAor
ICAgIHZpcnR1YWwgdm9pZCByZWZFdmVudFRhcmdldCgpIHsgcmVmKCk7IH0KKyAgICB2aXJ0dWFs
IHZvaWQgZGVyZWZFdmVudFRhcmdldCgpIHsgZGVyZWYoKTsgfQorICAgIHZpcnR1YWwgRXZlbnRU
YXJnZXREYXRhKiBldmVudFRhcmdldERhdGEoKTsKKyAgICB2aXJ0dWFsIEV2ZW50VGFyZ2V0RGF0
YSogZW5zdXJlRXZlbnRUYXJnZXREYXRhKCk7CisgICAgCisgICAgRXZlbnRUYXJnZXREYXRhIG1f
ZXZlbnRUYXJnZXREYXRhOworICAgIAorICAgIFRleHRUcmFja0NsaWVudCogbV9jbGllbnQ7Cisg
ICAgCisgICAgU3RyaW5nIG1fa2luZDsKKyAgICBTdHJpbmcgbV9sYWJlbDsKKyAgICBTdHJpbmcg
bV9sYW5ndWFnZTsKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCisjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGV4dFRyYWNrLmlkbCBiL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvVGV4dFRyYWNrLmlkbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5kNzg4NGQyZGIxYWEwNzc3
ZDIxYjU5NTA0N2M1ZTM0NWRlOTA2OTMyCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9UZXh0VHJhY2suaWRsCkBAIC0wLDAgKzEsNjQgQEAKKy8qCisgKiBDb3B5cmlnaHQg
KEMpIDIwMTEgR29vZ2xlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0
cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRo
b3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9s
bG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Yg
c291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgor
ICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5k
L29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgor
ICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisg
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKK21vZHVs
ZSBodG1sIHsKKworICAgIGludGVyZmFjZSBbCisgICAgICAgIENvbmRpdGlvbmFsPVZJREVPX1RS
QUNLLAorICAgICAgICBFdmVudFRhcmdldAorICAgIF0gVGV4dFRyYWNrIHsKKyAgICAgICAgcmVh
ZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyBraW5kOworICAgICAgICByZWFkb25seSBhdHRyaWJ1
dGUgRE9NU3RyaW5nIGxhYmVsOworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3RyaW5n
IGxhbmd1YWdlOworCisgICAgICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IE5PTkUgPSAwOworICAg
ICAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCBMT0FESU5HID0gMTsKKyAgICAgICAgY29uc3QgdW5z
aWduZWQgc2hvcnQgTE9BREVEID0gMjsKKyAgICAgICAgY29uc3QgdW5zaWduZWQgc2hvcnQgRVJS
T1IgPSAzOworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgdW5zaWduZWQgc2hvcnQgcmVhZHlT
dGF0ZTsKKyAgICAgICAgICAgICAgICAgYXR0cmlidXRlIEV2ZW50TGlzdGVuZXIgb25sb2FkOwor
ICAgICAgICAgICAgICAgICBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5lciBvbmVycm9yOworCisgICAg
ICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IE9GRiA9IDA7CisgICAgICAgIGNvbnN0IHVuc2lnbmVk
IHNob3J0IEhJRERFTiA9IDE7CisgICAgICAgIGNvbnN0IHVuc2lnbmVkIHNob3J0IFNIT1dJTkcg
PSAyOworICAgICAgICBhdHRyaWJ1dGUgdW5zaWduZWQgc2hvcnQgbW9kZQorICAgICAgICAgICAg
c2V0dGVyIHJhaXNlcyAoRE9NRXhjZXB0aW9uKTsKKworICAgICAgICByZWFkb25seSBhdHRyaWJ1
dGUgVGV4dFRyYWNrQ3VlTGlzdCBjdWVzOworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgVGV4
dFRyYWNrQ3VlTGlzdCBhY3RpdmVDdWVzOworICAgICAgICAgICAgICAgICBhdHRyaWJ1dGUgRXZl
bnRMaXN0ZW5lciBvbmN1ZWNoYW5nZTsKKyAgICAgICAgCisgICAgICAgIC8vIEV2ZW50VGFyZ2V0
IGludGVyZmFjZQorICAgICAgICBbSlNDQ3VzdG9tXSB2b2lkIGFkZEV2ZW50TGlzdGVuZXIoaW4g
RE9NU3RyaW5nIHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpbiBFdmVudExpc3RlbmVyIGxpc3RlbmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaW4gYm9vbGVhbiB1c2VDYXB0dXJlKTsKKyAgICAgICAgW0pTQ0N1c3Rv
bV0gdm9pZCByZW1vdmVFdmVudExpc3RlbmVyKGluIERPTVN0cmluZyB0eXBlLAorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gRXZlbnRMaXN0ZW5lciBsaXN0
ZW5lciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIGJv
b2xlYW4gdXNlQ2FwdHVyZSk7CisgICAgICAgIGJvb2xlYW4gZGlzcGF0Y2hFdmVudChpbiBFdmVu
dCBldnQpCisgICAgICAgICAgICByYWlzZXMoRXZlbnRFeGNlcHRpb24pOworICAgIH07Cit9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1RleHRUcmFja0N1ZS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9odG1sL1RleHRUcmFja0N1ZS5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMDZhYzkzODYzZmNjYzgx
Njc4M2M3YzlmODk3YjMyYzFkMGU0ZjU5ZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2h0bWwvVGV4dFRyYWNrQ3VlLmNwcApAQCAtMCwwICsxLDE3MCBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMu
IGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5D
TFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9G
IE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NF
IEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4g
T1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJ
TkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFH
RVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VC
U1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9G
SVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkg
VEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFC
SUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFS
SVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZF
TiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisj
aW5jbHVkZSAiY29uZmlnLmgiCisKKyNpZiBFTkFCTEUoVklERU9fVFJBQ0spCisKKyNpbmNsdWRl
ICJUZXh0VHJhY2tDdWUuaCIKKworI2luY2x1ZGUgIkRvY3VtZW50RnJhZ21lbnQuaCIKKyNpbmNs
dWRlICJFdmVudC5oIgorI2luY2x1ZGUgIlRleHRUcmFjay5oIgorCisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworVGV4dFRyYWNrQ3VlOjpUZXh0VHJhY2tDdWUoU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCogY29udGV4dCwgY29uc3QgU3RyaW5nJiBpZCwgY29uc3QgZG91YmxlIHN0YXJ0LCBjb25zdCBk
b3VibGUgZW5kLCBjb25zdCBTdHJpbmcmIGNvbnRlbnQsIGNvbnN0IFN0cmluZyYgc2V0dGluZ3Ms
IGNvbnN0IGJvb2wgcGF1c2VPbkV4aXQpCisgICAgOiBBY3RpdmVET01PYmplY3QoY29udGV4dCwg
dGhpcykKKyAgICAsIG1faWQoaWQpCisgICAgLCBtX3N0YXJ0VGltZShzdGFydCkKKyAgICAsIG1f
ZW5kVGltZShlbmQpCisgICAgLCBtX2NvbnRlbnQoY29udGVudCkKKyAgICAsIG1fc2V0dGluZ3Mo
c2V0dGluZ3MpCisgICAgLCBtX3BhdXNlT25FeGl0KHBhdXNlT25FeGl0KQorICAgICwgbV9zbmFw
VG9MaW5lcyhmYWxzZSkKKyAgICAsIG1fbGluZVBvc2l0aW9uKDApCisgICAgLCBtX3RleHRQb3Np
dGlvbigwKQorICAgICwgbV9zaXplKDApCisgICAgLCBtX2lzQWN0aXZlKGZhbHNlKQoreworLy8g
VE9ETyhhbm5hY2MpOiBwYXJzZSBzZXR0aW5ncz8KKyAgICBtX2RpcmVjdGlvbiA9IEhPUklaT05U
QUw7CisgICAgbV9hbGlnbm1lbnQgPSBNSURETEU7Cit9CisKK1RleHRUcmFja0N1ZTo6flRleHRU
cmFja0N1ZSgpCit7Cit9CisKK1RleHRUcmFjayogVGV4dFRyYWNrQ3VlOjp0cmFjaygpIGNvbnN0
Cit7CisgICAgcmV0dXJuIG1fdHJhY2s7Cit9CisKK3ZvaWQgVGV4dFRyYWNrQ3VlOjpzZXRUcmFj
ayhUZXh0VHJhY2sqIHRyYWNrKQoreworICAgIG1fdHJhY2sgPSB0cmFjazsKK30KKworU3RyaW5n
IFRleHRUcmFja0N1ZTo6aWQoKSBjb25zdAoreworICByZXR1cm4gbV9pZDsKK30KKworZG91Ymxl
IFRleHRUcmFja0N1ZTo6c3RhcnRUaW1lKCkgY29uc3QKK3sKKyAgICByZXR1cm4gbV9zdGFydFRp
bWU7Cit9CisKK2RvdWJsZSBUZXh0VHJhY2tDdWU6OmVuZFRpbWUoKSBjb25zdAoreworICAgIHJl
dHVybiBtX2VuZFRpbWU7Cit9CisKK2Jvb2wgVGV4dFRyYWNrQ3VlOjpwYXVzZU9uRXhpdCgpIGNv
bnN0Cit7CisgICAgcmV0dXJuIG1fcGF1c2VPbkV4aXQ7Cit9CisKK1N0cmluZyBUZXh0VHJhY2tD
dWU6OmRpcmVjdGlvbigpIGNvbnN0IHsKKyAgICBzd2l0Y2ggKG1fZGlyZWN0aW9uKSB7CisgICAg
Y2FzZSBIT1JJWk9OVEFMOiAKKyAgICAgICAgcmV0dXJuICJob3Jpem9udGFsIjsKKyAgICBjYXNl
IFZFUlRJQ0FMX0dST1dJTkdfTEVGVDoKKyAgICAgICAgcmV0dXJuICJ2ZXJ0aWNhbCI7CisgICAg
Y2FzZSBWRVJUSUNBTF9HUk9XSU5HX1JJR0hUOgorICAgICAgICByZXR1cm4gInZlcnRpY2FsLWxy
IjsKKyAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gIiI7CisgICAgfQorfQorCitib29sIFRl
eHRUcmFja0N1ZTo6c25hcFRvTGluZXMoKSBjb25zdCB7IHJldHVybiBtX3NuYXBUb0xpbmVzOyB9
Citsb25nIFRleHRUcmFja0N1ZTo6bGluZVBvc2l0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9saW5l
UG9zaXRpb247IH0KK2xvbmcgVGV4dFRyYWNrQ3VlOjp0ZXh0UG9zaXRpb24oKSBjb25zdCB7IHJl
dHVybiBtX3RleHRQb3NpdGlvbjsgfQorbG9uZyBUZXh0VHJhY2tDdWU6OnNpemUoKSBjb25zdCB7
IHJldHVybiBtX3NpemU7IH0KKworU3RyaW5nIFRleHRUcmFja0N1ZTo6YWxpZ25tZW50KCkgY29u
c3QgeworICAgIHN3aXRjaCAobV9hbGlnbm1lbnQpIHsKKyAgICBjYXNlIFNUQVJUOiAKKyAgICAg
ICAgcmV0dXJuICJzdGFydCI7CisgICAgY2FzZSBNSURETEU6CisgICAgICAgIHJldHVybiAibWlk
ZGxlIjsKKyAgICBjYXNlIEVORDoKKyAgICAgICAgcmV0dXJuICJlbmQiOworICAgIGRlZmF1bHQ6
CisgICAgICAgIHJldHVybiAiIjsKKyAgICB9Cit9CisKK1N0cmluZyBUZXh0VHJhY2tDdWU6Omdl
dEN1ZUFzU291cmNlKCkKK3sKKyAgICByZXR1cm4gbV9jb250ZW50OworfQorCitQYXNzUmVmUHRy
PERvY3VtZW50RnJhZ21lbnQ+IFRleHRUcmFja0N1ZTo6Z2V0Q3VlQXNIVE1MKCkKK3sKKyAgICAv
LyBUT0RPKGFubmFjYyk6IAorICAgIHJldHVybiBEb2N1bWVudEZyYWdtZW50OjpjcmVhdGUoMCk7
Cit9CisKK2Jvb2wgVGV4dFRyYWNrQ3VlOjppc0FjdGl2ZSgpCit7CisgICAgcmV0dXJuIG1faXNB
Y3RpdmU7Cit9CisKK3ZvaWQgVGV4dFRyYWNrQ3VlOjpzZXRJc0FjdGl2ZShib29sIGFjdGl2ZSkK
K3sKKyAgICBSZWZQdHI8RXZlbnRUYXJnZXQ+IHByb3RlY3QgPSB0aGlzOworICAgIAorICAgIG1f
dHJhY2stPmZpcmVDdWVDaGFuZ2VFdmVudCgpOworICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwor
ICAgIGlmKGFjdGl2ZSkKKyAgICAgICAgZGlzcGF0Y2hFdmVudChFdmVudDo6Y3JlYXRlKGV2ZW50
TmFtZXMoKS5lbnRlckV2ZW50LCBmYWxzZSwgZmFsc2UpLCBlYyk7CisgICAgZWxzZQorICAgICAg
ICBkaXNwYXRjaEV2ZW50KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmV4aXRFdmVudCwgZmFs
c2UsIGZhbHNlKSwgZWMpOworCisgICAgbV9pc0FjdGl2ZSA9IGFjdGl2ZTsKK30KKworU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCogVGV4dFRyYWNrQ3VlOjpzY3JpcHRFeGVjdXRpb25Db250ZXh0KCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gQWN0aXZlRE9NT2JqZWN0OjpzY3JpcHRFeGVjdXRpb25Db250
ZXh0KCk7Cit9CisKK0V2ZW50VGFyZ2V0RGF0YSogVGV4dFRyYWNrQ3VlOjpldmVudFRhcmdldERh
dGEoKQoreworICAgIHJldHVybiAmbV9ldmVudFRhcmdldERhdGE7Cit9CisKK0V2ZW50VGFyZ2V0
RGF0YSogVGV4dFRyYWNrQ3VlOjplbnN1cmVFdmVudFRhcmdldERhdGEoKQoreworICAgIHJldHVy
biAmbV9ldmVudFRhcmdldERhdGE7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1RleHRUcmFja0N1ZS5oIGIvU291
cmNlL1dlYkNvcmUvaHRtbC9UZXh0VHJhY2tDdWUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4yYzIxNDZlZGRhYzBh
N2I1M2I1NDk5N2UyODczYTQ3OTRkNTQ4YzEwCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dl
YkNvcmUvaHRtbC9UZXh0VHJhY2tDdWUuaApAQCAtMCwwICsxLDEyMCBAQAorLyoKKyAqIENvcHly
aWdodCAoQykgMjAxMSBHb29nbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJl
ZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Ig
d2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhl
IGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25z
IG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5v
dGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1l
ci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4g
YGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0Yg
TUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0Ug
QVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBP
UgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElO
Q0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdF
UyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJT
VElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJ
VFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBU
SEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJ
TElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJ
U0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVO
IElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNp
Zm5kZWYgVGV4dFRyYWNrQ3VlX2gKKyNkZWZpbmUgVGV4dFRyYWNrQ3VlX2gKKworI2lmIEVOQUJM
RShWSURFT19UUkFDSykKKworI2luY2x1ZGUgIkFjdGl2ZURPTU9iamVjdC5oIgorI2luY2x1ZGUg
IkV2ZW50VGFyZ2V0LmgiCisjaW5jbHVkZSAiVGV4dFRyYWNrLmgiCisjaW5jbHVkZSA8d3RmL1Bh
c3NPd25QdHIuaD4KKyNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgorCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK2NsYXNzIERvY3VtZW50RnJhZ21lbnQ7CitjbGFzcyBTY3JpcHRFeGVjdXRpb25D
b250ZXh0OworY2xhc3MgVGV4dFRyYWNrOworCitjbGFzcyBUZXh0VHJhY2tDdWUgOiBwdWJsaWMg
UmVmQ291bnRlZDxUZXh0VHJhY2tDdWU+LCBwdWJsaWMgRXZlbnRUYXJnZXQsIHB1YmxpYyBBY3Rp
dmVET01PYmplY3QgeworcHVibGljOgorICAgIAorICAgIHN0YXRpYyBQYXNzUmVmUHRyPFRleHRU
cmFja0N1ZT4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFN0
cmluZyYgaWQsIGNvbnN0IGRvdWJsZSBzdGFydCwgY29uc3QgZG91YmxlIGVuZCwgY29uc3QgU3Ry
aW5nJiBjb250ZW50LCBjb25zdCBTdHJpbmcmIHNldHRpbmdzID0gU3RyaW5nKCksIGNvbnN0IGJv
b2wgcGF1c2VPbkV4aXQgPSBmYWxzZSkKKyAgICB7CisgICAgICAgIHJldHVybiBhZG9wdFJlZihu
ZXcgVGV4dFRyYWNrQ3VlKGNvbnRleHQsIGlkLCBzdGFydCwgZW5kLCBjb250ZW50LCBzZXR0aW5n
cywgcGF1c2VPbkV4aXQpKTsKKyAgICB9CisKKyAgICB2aXJ0dWFsIH5UZXh0VHJhY2tDdWUoKTsK
KworICAgIFRleHRUcmFjayogdHJhY2soKSBjb25zdDsKKyAgICB2b2lkIHNldFRyYWNrKFRleHRU
cmFjayopOworCisgICAgU3RyaW5nIGlkKCkgY29uc3Q7CisgICAgZG91YmxlIHN0YXJ0VGltZSgp
IGNvbnN0OworICAgIGRvdWJsZSBlbmRUaW1lKCkgY29uc3Q7CisgICAgYm9vbCBwYXVzZU9uRXhp
dCgpIGNvbnN0OworCisgICAgU3RyaW5nIGRpcmVjdGlvbigpIGNvbnN0OworICAgIGJvb2wgc25h
cFRvTGluZXMoKSBjb25zdDsKKyAgICBsb25nIGxpbmVQb3NpdGlvbigpIGNvbnN0OworICAgIGxv
bmcgdGV4dFBvc2l0aW9uKCkgY29uc3Q7CisgICAgbG9uZyBzaXplKCkgY29uc3Q7CisgICAgU3Ry
aW5nIGFsaWdubWVudCgpIGNvbnN0OworCisgICAgU3RyaW5nIGdldEN1ZUFzU291cmNlKCk7Cisg
ICAgUGFzc1JlZlB0cjxEb2N1bWVudEZyYWdtZW50PiBnZXRDdWVBc0hUTUwoKTsKKworICAgIGJv
b2wgaXNBY3RpdmUoKTsKKyAgICB2b2lkIHNldElzQWN0aXZlKGJvb2wpOworICAgIAorICAgIC8v
IEV2ZW50IHRhcmdldAorICAgIHZpcnR1YWwgU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogc2NyaXB0
RXhlY3V0aW9uQ29udGV4dCgpIGNvbnN0OworICAgIAorICAgIERFRklORV9BVFRSSUJVVEVfRVZF
TlRfTElTVEVORVIoZW50ZXIpOworICAgIERFRklORV9BVFRSSUJVVEVfRVZFTlRfTElTVEVORVIo
ZXhpdCk7CisgICAgCisgICAgdmlydHVhbCBUZXh0VHJhY2tDdWUqIHRvVGV4dFRyYWNrQ3VlKCkg
eyByZXR1cm4gdGhpczsgfQorCisgICAgdXNpbmcgUmVmQ291bnRlZDxUZXh0VHJhY2tDdWU+Ojpy
ZWY7CisgICAgdXNpbmcgUmVmQ291bnRlZDxUZXh0VHJhY2tDdWU+OjpkZXJlZjsKKworcHJpdmF0
ZToKKyAgICBUZXh0VHJhY2tDdWUoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIGNvbnN0IFN0cmlu
ZyYgaWQsIGNvbnN0IGRvdWJsZSBzdGFydCwgY29uc3QgZG91YmxlIGVuZCwgY29uc3QgU3RyaW5n
JiBjb250ZW50LCBjb25zdCBTdHJpbmcmIHNldHRpbmdzLCBjb25zdCBib29sIHBhdXNlT25FeGl0
KTsKKworICAgIHZpcnR1YWwgdm9pZCByZWZFdmVudFRhcmdldCgpIHsgcmVmKCk7IH0KKyAgICB2
aXJ0dWFsIHZvaWQgZGVyZWZFdmVudFRhcmdldCgpIHsgZGVyZWYoKTsgfQorICAgIHZpcnR1YWwg
RXZlbnRUYXJnZXREYXRhKiBldmVudFRhcmdldERhdGEoKTsKKyAgICB2aXJ0dWFsIEV2ZW50VGFy
Z2V0RGF0YSogZW5zdXJlRXZlbnRUYXJnZXREYXRhKCk7CisKKyAgICBFdmVudFRhcmdldERhdGEg
bV9ldmVudFRhcmdldERhdGE7CisKKyAgICBTdHJpbmcgbV9pZDsKKyAgICBkb3VibGUgbV9zdGFy
dFRpbWU7CisgICAgZG91YmxlIG1fZW5kVGltZTsKKyAgICBTdHJpbmcgbV9jb250ZW50OworICAg
IFN0cmluZyBtX3NldHRpbmdzOworICAgIGJvb2wgbV9wYXVzZU9uRXhpdDsKKyAgICAKKyAgICBl
bnVtIERpcmVjdGlvbiB7IEhPUklaT05UQUwsIFZFUlRJQ0FMX0dST1dJTkdfTEVGVCwgVkVSVElD
QUxfR1JPV0lOR19SSUdIVCB9OworICAgIERpcmVjdGlvbiBtX2RpcmVjdGlvbjsKKworICAgIGJv
b2wgbV9zbmFwVG9MaW5lczsKKyAgICBsb25nIG1fbGluZVBvc2l0aW9uOworICAgIGxvbmcgbV90
ZXh0UG9zaXRpb247CisgICAgbG9uZyBtX3NpemU7CisgICAgCisgICAgZW51bSBBbGlnbm1lbnQg
eyBTVEFSVCwgTUlERExFLCBFTkQgfTsKKyAgICBBbGlnbm1lbnQgbV9hbGlnbm1lbnQ7CisgICAg
ICAgIAorICAgIFRleHRUcmFjayogbV90cmFjazsKKyAgICBib29sIG1faXNBY3RpdmU7Cit9Owor
Cit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgorI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL1RleHRUcmFja0N1ZS5pZGwgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L1RleHRUcmFja0N1ZS5pZGwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYmYzZWJhNDA2ZjBmYzI1ZmE5MGEwM2I2NmM1
YWRmMDhhMzBhMDFhNwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvVGV4
dFRyYWNrQ3VlLmlkbApAQCAtMCwwICsxLDY4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEx
IEdvb2dsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9u
IGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICog
bW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBj
b25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBj
b2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJl
ZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhl
ciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMg
U09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJ
QlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQ
RUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RT
IE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lO
RVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9G
IExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9S
VAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkg
V0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQg
T0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCittb2R1bGUgaHRtbCB7
CisKKyAgICBpbnRlcmZhY2UgWworICAgICAgICBDb25kaXRpb25hbD1WSURFT19UUkFDSywKKyAg
ICAgICAgQ2FuQmVDb25zdHJ1Y3RlZCwKKyAgICAgICAgQ3VzdG9tQ29uc3RydWN0b3JGdW5jdGlv
biwKKyAgICAgICAgQ29uc3RydWN0b3JQYXJhbWV0ZXJzPTYsCisgICAgICAgIFY4Q3VzdG9tQ29u
c3RydWN0b3IsCisgICAgICAgIEV2ZW50VGFyZ2V0LAorICAgICAgICBOb1N0YXRpY1RhYmxlcwor
ICAgIF0gVGV4dFRyYWNrQ3VlIHsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIFRleHRUcmFj
ayB0cmFjazsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIERPTVN0cmluZyBpZDsKKworICAg
ICAgICByZWFkb25seSBhdHRyaWJ1dGUgZG91YmxlIHN0YXJ0VGltZTsKKyAgICAgICAgcmVhZG9u
bHkgYXR0cmlidXRlIGRvdWJsZSBlbmRUaW1lOworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUg
Ym9vbGVhbiBwYXVzZU9uRXhpdDsKKworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9NU3Ry
aW5nIGRpcmVjdGlvbjsKKyAgICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIGJvb2xlYW4gc25hcFRv
TGluZXM7CisgICAgICAgIHJlYWRvbmx5IGF0dHJpYnV0ZSBsb25nIGxpbmVQb3NpdGlvbjsKKyAg
ICAgICAgcmVhZG9ubHkgYXR0cmlidXRlIGxvbmcgdGV4dFBvc2l0aW9uOworICAgICAgICByZWFk
b25seSBhdHRyaWJ1dGUgbG9uZyBzaXplOworICAgICAgICByZWFkb25seSBhdHRyaWJ1dGUgRE9N
U3RyaW5nIGFsaWdubWVudDsKKworICAgICAgICBET01TdHJpbmcgZ2V0Q3VlQXNTb3VyY2UoKTsK
KyAgICAgICAgRG9jdW1lbnRGcmFnbWVudCBnZXRDdWVBc0hUTUwoKTsKKworICAgICAgICBhdHRy
aWJ1dGUgRXZlbnRMaXN0ZW5lciBvbmVudGVyOworICAgICAgICBhdHRyaWJ1dGUgRXZlbnRMaXN0
ZW5lciBvbmV4aXQ7CisgICAgICAgIAorICAgICAgICAvLyBFdmVudFRhcmdldCBpbnRlcmZhY2UK
KyAgICAgICAgW0pTQ0N1c3RvbV0gdm9pZCBhZGRFdmVudExpc3RlbmVyKGluIERPTVN0cmluZyB0
eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gRXZlbnRM
aXN0ZW5lciBsaXN0ZW5lciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGluIGJvb2xlYW4gdXNlQ2FwdHVyZSk7CisgICAgICAgIFtKU0NDdXN0b21dIHZvaWQgcmVt
b3ZlRXZlbnRMaXN0ZW5lcihpbiBET01TdHJpbmcgdHlwZSwKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgIGluIEV2ZW50TGlzdGVuZXIgbGlzdGVuZXIsCisgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBib29sZWFuIHVzZUNhcHR1cmUp
OworICAgICAgICBib29sZWFuIGRpc3BhdGNoRXZlbnQoaW4gRXZlbnQgZXZ0KQorICAgICAgICAg
ICAgcmFpc2VzKEV2ZW50RXhjZXB0aW9uKTsKKyAgICB9OworCit9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9odG1sL1RleHRUcmFja0N1ZUxpc3QuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9UZXh0VHJhY2tDdWVMaXN0LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5hZWNlMzIyMzNkN2RmYjQ4NTQ4MzEy
N2QyZjRiYzc1YjA5YTM0OWI2Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRt
bC9UZXh0VHJhY2tDdWVMaXN0LmNwcApAQCAtMCwwICsxLDEwNSBAQAorLyoKKyAqIENvcHlyaWdo
dCAoQykgMjAxMSBHb29nbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBg
QVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IK
KyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworIAorI2lu
Y2x1ZGUgImNvbmZpZy5oIgorCisjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQorCisjaW5jbHVkZSAi
VGV4dFRyYWNrQ3VlTGlzdC5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1RleHRUcmFja0N1
ZUxpc3Q6OlRleHRUcmFja0N1ZUxpc3QoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCkK
KyAgICA6IEFjdGl2ZURPTU9iamVjdChjb250ZXh0LCB0aGlzKSAKK3sKK30KKworVGV4dFRyYWNr
Q3VlTGlzdDo6flRleHRUcmFja0N1ZUxpc3QoKQoreworfQorCit1bnNpZ25lZCBsb25nIFRleHRU
cmFja0N1ZUxpc3Q6Omxlbmd0aCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fbGlzdC5zaXplKCk7
Cit9CisKK1RleHRUcmFja0N1ZSogVGV4dFRyYWNrQ3VlTGlzdDo6Z2V0Q3VlQnlJZChjb25zdCBT
dHJpbmcmIGlkKSBjb25zdAoreworICAgIGZvciAoVmVjdG9yPFJlZlB0cjxUZXh0VHJhY2tDdWU+
ID46OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbV9saXN0LmJlZ2luKCk7IGl0ICE9IG1fbGlzdC5lbmQo
KTsgaXQrKykgeworICAgICAgICBUZXh0VHJhY2tDdWUqIGN1ZSA9IGl0LT5nZXQoKTsKKyAgICAg
ICAgaWYgKGN1ZS0+aWQoKSA9PSBpZCkKKyAgICAgICAgICAgIHJldHVybiBjdWU7CisgICAgfQor
ICAgIHJldHVybiAwOworfQorCitUZXh0VHJhY2tDdWUqIFRleHRUcmFja0N1ZUxpc3Q6Oml0ZW0o
dW5zaWduZWQgaW5kZXgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fbGlzdFtpbmRleF0uZ2V0KCk7
Cit9CisKK3ZvaWQgVGV4dFRyYWNrQ3VlTGlzdDo6YXBwZW5kKFZlY3RvcjxSZWZQdHI8VGV4dFRy
YWNrQ3VlPiA+JiBuZXdDdWVzKQoreworICAgIGZvciAoVmVjdG9yPFJlZlB0cjxUZXh0VHJhY2tD
dWU+ID46OmNvbnN0X2l0ZXJhdG9yIGl0ID0gbmV3Q3Vlcy5iZWdpbigpOyBpdCAhPSBuZXdDdWVz
LmVuZCgpOyBpdCsrKSB7CisgICAgICAgIFJlZlB0cjxUZXh0VHJhY2tDdWU+IGN1ZSA9ICppdDsK
KyAgICAgICAgbV9saXN0LmFwcGVuZChjdWUpOworICAgIH0KK30KKwordm9pZCBUZXh0VHJhY2tD
dWVMaXN0OjphcHBlbmQoY29uc3QgUGFzc1JlZlB0cjxUZXh0VHJhY2tDdWU+JiBjdWUpCit7Cisg
ICAgbV9saXN0LmFwcGVuZChjdWUpOworfQorCit2b2lkIFRleHRUcmFja0N1ZUxpc3Q6OnJlbW92
ZShjb25zdCBQYXNzUmVmUHRyPFRleHRUcmFja0N1ZT4mIGN1ZSkKK3sKKyAgICBjdWUtPnNldElz
QWN0aXZlKGZhbHNlKTsKKyAgICBtX2xpc3QucmVtb3ZlKG1fbGlzdC5maW5kKGN1ZSkpOworfQor
CitUZXh0VHJhY2tDdWVMaXN0OjpJdGVyYXRvciBUZXh0VHJhY2tDdWVMaXN0OjpiZWdpbigpCit7
CisgICAgcmV0dXJuIG1fbGlzdC5iZWdpbigpOworfQorCitUZXh0VHJhY2tDdWVMaXN0OjpJdGVy
YXRvciBUZXh0VHJhY2tDdWVMaXN0OjplbmQoKQoreworICAgIHJldHVybiBtX2xpc3QuZW5kKCk7
Cit9CisKK1RleHRUcmFja0N1ZUxpc3QqIFRleHRUcmFja0N1ZUxpc3Q6OmFjdGl2ZUN1ZXMoKQor
eworICAgIFJlZlB0cjxUZXh0VHJhY2tDdWVMaXN0PiBhY3RpdmVDdWVzID0gY3JlYXRlKEFjdGl2
ZURPTU9iamVjdDo6c2NyaXB0RXhlY3V0aW9uQ29udGV4dCgpKTsKKyAgICBmb3IgKFZlY3RvcjxS
ZWZQdHI8VGV4dFRyYWNrQ3VlPiA+Ojpjb25zdF9pdGVyYXRvciBpdCA9IG1fbGlzdC5iZWdpbigp
OyBpdCAhPSBtX2xpc3QuZW5kKCk7IGl0KyspIHsKKyAgICAgICAgVGV4dFRyYWNrQ3VlKiBjdWUg
PSBpdC0+Z2V0KCk7CisgICAgICAgIGlmIChjdWUtPmlzQWN0aXZlKCkpCisgICAgICAgICAgICBh
Y3RpdmVDdWVzLT5hcHBlbmQoY3VlKTsKKyAgICB9CisgICAgcmV0dXJuIGFjdGl2ZUN1ZXMuZ2V0
KCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9odG1sL1RleHRUcmFja0N1ZUxpc3QuaCBiL1NvdXJjZS9XZWJDb3JlL2h0
bWwvVGV4dFRyYWNrQ3VlTGlzdC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjgwNTE4ZGZlNmQwODc3ZDY3YjY5Y2Uy
YzNlMTgyNjNhMTA3Y2I3YjQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1s
L1RleHRUcmFja0N1ZUxpc3QuaApAQCAtMCwwICsxLDc1IEBACisvKgorICogQ29weXJpZ2h0IChD
KSAyMDExIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmli
dXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0
CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93
aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291
cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0
aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICog
Mi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29y
IG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICog
VEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBU
ZXh0VHJhY2tDdWVMaXN0X2gKKyNkZWZpbmUgVGV4dFRyYWNrQ3VlTGlzdF9oCisKKyNpZiBFTkFC
TEUoVklERU9fVFJBQ0spCisKKyNpbmNsdWRlICJBY3RpdmVET01PYmplY3QuaCIKKyNpbmNsdWRl
ICJQYXNzUmVmUHRyLmgiCisjaW5jbHVkZSAiVGV4dFRyYWNrQ3VlLmgiCisjaW5jbHVkZSA8d3Rm
L1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKKworY2xhc3MgVGV4dFRyYWNr
Q3VlTGlzdCA6IHB1YmxpYyBSZWZDb3VudGVkPFRleHRUcmFja0N1ZUxpc3Q+LCBBY3RpdmVET01P
YmplY3QgeworcHVibGljOgorICAgIHR5cGVkZWYgVmVjdG9yPFJlZlB0cjxUZXh0VHJhY2tDdWU+
ID46Oml0ZXJhdG9yIEl0ZXJhdG9yOworCisgICAgc3RhdGljIFBhc3NSZWZQdHI8VGV4dFRyYWNr
Q3VlTGlzdD4gY3JlYXRlKFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCisgICAgewor
ICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFRleHRUcmFja0N1ZUxpc3QoY29udGV4dCkpOwor
ICAgIH0KKworICAgIH5UZXh0VHJhY2tDdWVMaXN0KCk7CisKKyAgICB1bnNpZ25lZCBsb25nIGxl
bmd0aCgpIGNvbnN0OworCisgICAgVGV4dFRyYWNrQ3VlKiBpdGVtKHVuc2lnbmVkIGluZGV4KSBj
b25zdDsKKyAgICAKKyAgICBUZXh0VHJhY2tDdWUqIGdldEN1ZUJ5SWQoY29uc3QgU3RyaW5nJikg
Y29uc3Q7CisKKyAgICB2b2lkIGFwcGVuZChWZWN0b3I8UmVmUHRyPFRleHRUcmFja0N1ZT4gPiYp
OworICAgIHZvaWQgYXBwZW5kKGNvbnN0IFBhc3NSZWZQdHI8VGV4dFRyYWNrQ3VlPiYpOworICAg
IHZvaWQgcmVtb3ZlKGNvbnN0IFBhc3NSZWZQdHI8VGV4dFRyYWNrQ3VlPiYpOworCisgICAgdmly
dHVhbCBJdGVyYXRvciBiZWdpbigpOworICAgIHZpcnR1YWwgSXRlcmF0b3IgZW5kKCk7CisgICAg
CisgICAgVGV4dFRyYWNrQ3VlTGlzdCogYWN0aXZlQ3VlcygpOworCitwcml2YXRlOgorICAgIFRl
eHRUcmFja0N1ZUxpc3QoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCopOworICAgIFZlY3RvciA8UmVm
UHRyPFRleHRUcmFja0N1ZT4gPiBtX2xpc3Q7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CisKKyNlbmRpZgorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9odG1sL1RleHRU
cmFja0N1ZUxpc3QuaWRsIGIvU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0VHJhY2tDdWVMaXN0Lmlk
bApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwLi42NmYwMjczNTZmNWUwODc0NDNhNTM3ODI4ZWU2N2ZhOGE3YmM2MTBkCi0t
LSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0VHJhY2tDdWVMaXN0Lmlk
bApAQCAtMCwwICsxLDM3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMu
ICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCittb2R1bGUgaHRtbCB7CisKKyAgICBpbnRl
cmZhY2UgWworICAgICAgICBDb25kaXRpb25hbD1WSURFT19UUkFDSywKKyAgICAgICAgSGFzSW5k
ZXhHZXR0ZXIKKyAgICBdIFRleHRUcmFja0N1ZUxpc3QgeworICAgICAgICByZWFkb25seSBhdHRy
aWJ1dGUgdW5zaWduZWQgbG9uZyBsZW5ndGg7CisgICAgICAgIFRleHRUcmFja0N1ZSBpdGVtKGlu
IHVuc2lnbmVkIGxvbmcgaW5kZXgpOworICAgICAgICBUZXh0VHJhY2tDdWUgZ2V0Q3VlQnlJZChp
biBET01TdHJpbmcgaWQpOworICAgIH07CisKK30KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvVGV4dFRyYWNrUHJpdmF0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1RleHRUcmFj
a1ByaXZhdGUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmFiZmU1OWVjYTljNGM1NWM3NjYxYWU5MTdhYmRkMDU1
OTVkNGE5MTQKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1RleHRUcmFj
a1ByaXZhdGUuY3BwCkBAIC0wLDAgKzEsNzggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEg
R29vZ2xlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5E
IEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCisgKiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BF
Q0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25m
aWcuaCIKKworI2lmIEVOQUJMRShWSURFT19UUkFDSykKKworI2luY2x1ZGUgIlRleHRUcmFja1By
aXZhdGUuaCIKKworLy8jaW5jbHVkZSAiVGV4dFRyYWNrQ3VlTGlzdC5oIgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK1N0cmluZyBUZXh0VHJhY2tQcml2YXRlSW50ZXJmYWNlOjpraW5kKCkgY29u
c3QKK3sKKyAgICByZXR1cm4gbV9raW5kOworfQorCitTdHJpbmcgVGV4dFRyYWNrUHJpdmF0ZUlu
dGVyZmFjZTo6bGFiZWwoKSBjb25zdAoreworICAgIHJldHVybiBtX2xhYmVsOworfQorCitTdHJp
bmcgVGV4dFRyYWNrUHJpdmF0ZUludGVyZmFjZTo6bGFuZ3VhZ2UoKSBjb25zdAoreworICAgIHJl
dHVybiBtX2xhbmd1YWdlOworfQorCitUZXh0VHJhY2s6OlJlYWR5U3RhdGUgVGV4dFRyYWNrUHJp
dmF0ZUludGVyZmFjZTo6cmVhZHlTdGF0ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIG1fcmVhZHlT
dGF0ZTsKK30KKworVGV4dFRyYWNrOjpNb2RlIFRleHRUcmFja1ByaXZhdGVJbnRlcmZhY2U6Om1v
ZGUoKSBjb25zdAoreworICAgIHJldHVybiBtX21vZGU7Cit9CisKK3ZvaWQgVGV4dFRyYWNrUHJp
dmF0ZUludGVyZmFjZTo6c2V0TW9kZShUZXh0VHJhY2s6Ok1vZGUgbW9kZSkKK3sKKyAgICBtX21v
ZGUgPSBtb2RlOworfQorLyoKK1RleHRUcmFja0N1ZUxpc3QqIFRleHRUcmFja1ByaXZhdGVJbnRl
cmZhY2U6OmN1ZXMoKSBjb25zdAoreworICAgIHJldHVybiBtX2N1ZXMuZ2V0KCk7Cit9CisKK1Rl
eHRUcmFja0N1ZUxpc3QqIFRleHRUcmFja1ByaXZhdGVJbnRlcmZhY2U6OmFjdGl2ZUN1ZXMoKSBj
b25zdAoreworICAgIHJldHVybiBtX2N1ZXMtPmFjdGl2ZUN1ZXMoKTsKK30KKyovCit9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRt
bC9UZXh0VHJhY2tQcml2YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL1RleHRUcmFja1ByaXZh
dGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwLi5iYzlkNDAyMTFlMDJiYjE5ZWEyMjkyYzNhYjc3NjM3Mzg3MjE3OTlj
Ci0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9UZXh0VHJhY2tQcml2YXRl
LmgKQEAgLTAsMCArMSw4NiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaWZuZGVmIFRleHRUcmFja1ByaXZhdGVf
aAorI2RlZmluZSBUZXh0VHJhY2tQcml2YXRlX2gKKworI2lmIEVOQUJMRShWSURFT19UUkFDSykK
KworI2luY2x1ZGUgIlRleHRUcmFjay5oIgorI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CisjaW5j
bHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3Mg
Q3VlTG9hZGVyQ2xpZW50OworY2xhc3MgVGV4dFRyYWNrQ3VlTGlzdDsKK2NsYXNzIFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQ7CisKK2NsYXNzIFRleHRUcmFja1ByaXZhdGVJbnRlcmZhY2UgeworICAg
IFdURl9NQUtFX05PTkNPUFlBQkxFKFRleHRUcmFja1ByaXZhdGVJbnRlcmZhY2UpOyBXVEZfTUFL
RV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBUZXh0VHJhY2tQcml2YXRlSW50ZXJmYWNl
KFRleHRUcmFjayogdHJhY2ssIGNvbnN0IFN0cmluZyYga2luZCwgY29uc3QgU3RyaW5nJiBsYWJl
bCwgY29uc3QgU3RyaW5nJiBsYW5ndWFnZSkKKyAgICA6IG1fdHJhY2sodHJhY2spCisgICAgLCBt
X2tpbmQoa2luZCkKKyAgICAsIG1fbGFiZWwobGFiZWwpCisgICAgLCBtX2xhbmd1YWdlKGxhbmd1
YWdlKQorICAgICwgbV9yZWFkeVN0YXRlKFRleHRUcmFjazo6Tk9ORSkKKyAgICAsIG1fbW9kZShU
ZXh0VHJhY2s6Ok9GRikKKyAgICB7CisgICAgfQorICAgIHZpcnR1YWwgflRleHRUcmFja1ByaXZh
dGVJbnRlcmZhY2UoKSB7IH0KKworICAgIHZpcnR1YWwgU3RyaW5nIGtpbmQoKSBjb25zdDsKKyAg
ICB2aXJ0dWFsIFN0cmluZyBsYWJlbCgpIGNvbnN0OworICAgIHZpcnR1YWwgU3RyaW5nIGxhbmd1
YWdlKCkgY29uc3Q7CisKKyAgICB2aXJ0dWFsIFRleHRUcmFjazo6UmVhZHlTdGF0ZSByZWFkeVN0
YXRlKCkgY29uc3Q7CisKKyAgICB2aXJ0dWFsIFRleHRUcmFjazo6TW9kZSBtb2RlKCkgY29uc3Q7
CisgICAgdmlydHVhbCB2b2lkIHNldE1vZGUoVGV4dFRyYWNrOjpNb2RlKTsKKworICAgIHZpcnR1
YWwgVGV4dFRyYWNrQ3VlTGlzdCogY3VlcygpIGNvbnN0ID0gMDsKKyAgICB2aXJ0dWFsIFRleHRU
cmFja0N1ZUxpc3QqIGFjdGl2ZUN1ZXMoKSBjb25zdCA9IDA7CisKKyAgICB2aXJ0dWFsIHZvaWQg
bG9hZChjb25zdCBTdHJpbmcmIHVybCwgQ3VlTG9hZGVyQ2xpZW50KikgeyB9CisgICAgdmlydHVh
bCBib29sIHN1cHBvcnRzVHlwZShjb25zdCBTdHJpbmcmIHVybCl7IHJldHVybiBmYWxzZTsgfQor
ICAgIHZpcnR1YWwgdm9pZCBhZGRDdWUoVGV4dFRyYWNrQ3VlKikgeyB9CisgICAgdmlydHVhbCB2
b2lkIHJlbW92ZUN1ZShUZXh0VHJhY2tDdWUqKSB7IH0KKworcHJvdGVjdGVkOgorICAgIFRleHRU
cmFjayogbV90cmFjazsKKyAgICAKKyAgICBTdHJpbmcgbV9raW5kOworICAgIFN0cmluZyBtX2xh
YmVsOworICAgIFN0cmluZyBtX2xhbmd1YWdlOworICAgIAorICAgIFRleHRUcmFjazo6UmVhZHlT
dGF0ZSBtX3JlYWR5U3RhdGU7CisgICAgVGV4dFRyYWNrOjpNb2RlIG1fbW9kZTsKK307CisKK30g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUcmVlQnVpbGRlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9odG1sL3BhcnNlci9IVE1MVHJlZUJ1aWxkZXIuY3BwCmluZGV4IDViMTVjY2FmNGM0ZmE1ZGYx
M2Q2MGEyY2U5YzUwZjU4NjBhNmQ1ZGIuLmIyN2Y4MzE1NDFhYmNmYjY0NzU3N2Q1Y2JhYTY4OGY4
NzdhNWNkMTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvcGFyc2VyL0hUTUxUcmVl
QnVpbGRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaHRtbC9wYXJzZXIvSFRNTFRyZWVCdWls
ZGVyLmNwcApAQCAtODk5LDggKzg5OSw3IEBAIHZvaWQgSFRNTFRyZWVCdWlsZGVyOjpwcm9jZXNz
U3RhcnRUYWdGb3JJbkJvZHkoQXRvbWljSFRNTFRva2VuJiB0b2tlbikKICAgICAgICAgcmV0dXJu
OwogICAgIH0KICAgICBpZiAodG9rZW4ubmFtZSgpID09IHBhcmFtVGFnCi0gICAgICAgIHx8IHRv
a2VuLm5hbWUoKSA9PSBzb3VyY2VUYWcKLSAgICAgICAgfHwgdG9rZW4ubmFtZSgpID09IHRyYWNr
VGFnKSB7CisgICAgICAgIHx8IHRva2VuLm5hbWUoKSA9PSBzb3VyY2VUYWcpIHsKICAgICAgICAg
bV90cmVlLmluc2VydFNlbGZDbG9zaW5nSFRNTEVsZW1lbnQodG9rZW4pOwogICAgICAgICByZXR1
cm47CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFD
b250cm9sRWxlbWVudHMuY3BwIGIvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250
cm9sRWxlbWVudHMuY3BwCmluZGV4IDhjMjE2ZGVkMjgxYjg3ZmM4Yjc1YzQ5MTc5MGYyYmNjMzEz
ODg1NTcuLmViNmZlN2IzOGNlMWIzOTA2YWNiYWVjNjJiNzQ2NDcyYTM0YWI5OWYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRzLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xFbGVtZW50cy5jcHAK
QEAgLTk2NSw2ICs5NjUsMjYgQEAgY29uc3QgQXRvbWljU3RyaW5nJiBNZWRpYUNvbnRyb2xDdXJy
ZW50VGltZURpc3BsYXlFbGVtZW50OjpzaGFkb3dQc2V1ZG9JZCgpIGNvbnMKICAgICBERUZJTkVf
U1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgaWQsICgiLXdlYmtpdC1tZWRpYS1jb250cm9scy1j
dXJyZW50LXRpbWUtZGlzcGxheSIpKTsKICAgICByZXR1cm4gaWQ7CiB9CisvLyAtLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tCisKKyNpZiBFTkFCTEUoVklERU9fVFJBQ0spCitNZWRpYUNvbnRy
b2xUZXh0VHJhY2tFbGVtZW50OjpNZWRpYUNvbnRyb2xUZXh0VHJhY2tFbGVtZW50KEhUTUxNZWRp
YUVsZW1lbnQqIG1lZGlhRWxlbWVudCkKKyAgICA6IEhUTUxEaXZFbGVtZW50KGRpdlRhZywgbWVk
aWFFbGVtZW50LT5kb2N1bWVudCgpKQorICAgICwgbV9tZWRpYUVsZW1lbnQobWVkaWFFbGVtZW50
KQoreworfQorCitQYXNzUmVmUHRyPE1lZGlhQ29udHJvbFRleHRUcmFja0VsZW1lbnQ+IE1lZGlh
Q29udHJvbFRleHRUcmFja0VsZW1lbnQ6OmNyZWF0ZShIVE1MTWVkaWFFbGVtZW50KiBtZWRpYUVs
ZW1lbnQpCit7CisgICAgcmV0dXJuIGFkb3B0UmVmKG5ldyBNZWRpYUNvbnRyb2xUZXh0VHJhY2tF
bGVtZW50KG1lZGlhRWxlbWVudCkpOworfQorCitjb25zdCBBdG9taWNTdHJpbmcmIE1lZGlhQ29u
dHJvbFRleHRUcmFja0VsZW1lbnQ6OnNoYWRvd1BzZXVkb0lkKCkgY29uc3QKK3sKKyAgICBERUZJ
TkVfU1RBVElDX0xPQ0FMKEF0b21pY1N0cmluZywgaWQsICgiLXdlYmtpdC1tZWRpYS10ZXh0LXRy
YWNrIikpOworICAgIHJldHVybiBpZDsKK30KKyNlbmRpZgogCiB9IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJv
bEVsZW1lbnRzLmggYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xFbGVt
ZW50cy5oCmluZGV4IGRiMzE1OGIyOTRiYWE5NzQ5MTBmMTdiMDE4ZThlMjljYWM5MzUyOTYuLjUw
M2NiOTdiYTc2YjU0MjI4OTVkMTM2MGE2ZTAxYzMyNmI1ZDIyYjAgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2h0bWwvc2hhZG93L01lZGlhQ29udHJvbEVsZW1lbnRzLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sRWxlbWVudHMuaApAQCAtNDU1LDYgKzQ1
NSwyNSBAQCBwcml2YXRlOgogIAogLy8gLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogCisj
aWYgRU5BQkxFKFZJREVPX1RSQUNLKQorY2xhc3MgTWVkaWFDb250cm9sVGV4dFRyYWNrRWxlbWVu
dCA6IHB1YmxpYyBIVE1MRGl2RWxlbWVudCB7CitwdWJsaWM6CisgICAgc3RhdGljIFBhc3NSZWZQ
dHI8TWVkaWFDb250cm9sVGV4dFRyYWNrRWxlbWVudD4gY3JlYXRlKEhUTUxNZWRpYUVsZW1lbnQq
KTsKKworICAgIEhUTUxNZWRpYUVsZW1lbnQqIG1lZGlhRWxlbWVudCgpIGNvbnN0IHsgcmV0dXJu
IG1fbWVkaWFFbGVtZW50OyB9CisKK3ByaXZhdGU6CisgICAgTWVkaWFDb250cm9sVGV4dFRyYWNr
RWxlbWVudChIVE1MTWVkaWFFbGVtZW50Kik7CisKKyAgICB2aXJ0dWFsIGJvb2wgaXNNZWRpYUNv
bnRyb2xFbGVtZW50KCkgY29uc3QgeyByZXR1cm4gdHJ1ZTsgfQorICAgIHZpcnR1YWwgY29uc3Qg
QXRvbWljU3RyaW5nJiBzaGFkb3dQc2V1ZG9JZCgpIGNvbnN0OworCisgICAgSFRNTE1lZGlhRWxl
bWVudCogbV9tZWRpYUVsZW1lbnQ7Cit9OworI2VuZGlmCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tCisKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCiAjZW5kaWYgLy8gRU5BQkxF
KFZJREVPKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250
cm9sUm9vdEVsZW1lbnRDaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9N
ZWRpYUNvbnRyb2xSb290RWxlbWVudENocm9taXVtLmNwcAppbmRleCBkNDY2YjBjMDY5NDQ5ZWMx
YjY4NjgwMjE2ZjQ1YzViMjg2OGQwOTdlLi5hMTlkYmYxMzllZGJjMmExOWQwZjExNWRhNDM5ZDQx
M2ZmYmM1ZDZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNv
bnRyb2xSb290RWxlbWVudENocm9taXVtLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9odG1sL3No
YWRvdy9NZWRpYUNvbnRyb2xSb290RWxlbWVudENocm9taXVtLmNwcApAQCAtMzMsNiArMzMsMTAg
QEAKICNpbmNsdWRlICJQYWdlLmgiCiAjaW5jbHVkZSAiUmVuZGVyVGhlbWUuaCIKIAorI2lmIEVO
QUJMRShWSURFT19UUkFDSykKKyNpbmNsdWRlICJUZXh0VHJhY2tDdWUuaCIKKyNlbmRpZgorCiB1
c2luZyBuYW1lc3BhY2Ugc3RkOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0xMDYsNiArMTEw
LDE0IEBAIFBhc3NSZWZQdHI8TWVkaWFDb250cm9sUm9vdEVsZW1lbnRDaHJvbWl1bT4gTWVkaWFD
b250cm9sUm9vdEVsZW1lbnRDaHJvbWl1bTo6Y3JlCiAgICAgdm9sdW1lU2xpZGVyQ29udGFpbmVy
LT5hcHBlbmRDaGlsZChzbGlkZXIucmVsZWFzZSgpLCBlYywgdHJ1ZSk7CiAgICAgaWYgKGVjKQog
ICAgICAgICByZXR1cm4gMDsKKyAgICAgICAgCisjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQorICAg
IFJlZlB0cjxNZWRpYUNvbnRyb2xUZXh0VHJhY2tFbGVtZW50PiB0ZXh0VHJhY2sgPSBNZWRpYUNv
bnRyb2xUZXh0VHJhY2tFbGVtZW50OjpjcmVhdGUobWVkaWFFbGVtZW50KTsKKyAgICBjb250cm9s
cy0+bV90ZXh0VHJhY2sgPSB0ZXh0VHJhY2suZ2V0KCk7CisgICAgY29udHJvbHMtPmFwcGVuZENo
aWxkKHRleHRUcmFjay5yZWxlYXNlKCksIGVjLCB0cnVlKTsKKyAgICBpZiAoZWMpCisgICAgICAg
IHJldHVybiAwOworI2VuZGlmCiAKICAgICBjb250cm9scy0+bV92b2x1bWVTbGlkZXJDb250YWlu
ZXIgPSB2b2x1bWVTbGlkZXJDb250YWluZXIuZ2V0KCk7CiAgICAgcGFuZWwtPmFwcGVuZENoaWxk
KHZvbHVtZVNsaWRlckNvbnRhaW5lci5yZWxlYXNlKCksIGVjLCB0cnVlKTsKQEAgLTIzNCw2ICsy
NDYsMjYgQEAgdm9pZCBNZWRpYUNvbnRyb2xSb290RWxlbWVudENocm9taXVtOjp1cGRhdGVUaW1l
RGlzcGxheSgpCiAgICAgbV9jdXJyZW50VGltZURpc3BsYXktPnNldEN1cnJlbnRWYWx1ZShub3cp
OwogfQogCisjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQordm9pZCBNZWRpYUNvbnRyb2xSb290RWxl
bWVudENocm9taXVtOjp1cGRhdGVUZXh0VHJhY2soKQoreworICAgIEN1ZVNldCogYWZmZWN0ZWRD
dWVzID0gbV9tZWRpYUVsZW1lbnQtPmdldEFmZmVjdGVkQ3VlcygpOworICAgIAorICAgIGlmICgh
YWZmZWN0ZWRDdWVzLT5pc0VtcHR5KCkpeworICAgICAgICBmb3IgKEN1ZVNldDo6SXRlcmF0b3Ig
aXQgPSBhZmZlY3RlZEN1ZXMtPmJlZ2luKCk7IGl0ICE9IGFmZmVjdGVkQ3Vlcy0+ZW5kKCk7ICsr
aXQpIHsKKyAgICAgICAgICAgIFRleHRUcmFja0N1ZSogY3VlID0gKml0OworICAgICAgICAgICAg
RXhjZXB0aW9uQ29kZSBlOyAKKyAgICAgICAgICAgIGlmIChjdWUtPmlzQWN0aXZlKCkpIHsKKyAg
ICAgICAgICAgICAgICBtX3RleHRUcmFjay0+c2V0SW5uZXJIVE1MKGN1ZS0+Z2V0Q3VlQXNTb3Vy
Y2UoKSwgZSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICB9IGVsc2Ugewor
ICAgICAgICAgICAgICAgIG1fdGV4dFRyYWNrLT5zZXRJbm5lckhUTUwoIiIsIGUpOworICAgICAg
ICAgICAgfSAgIAorICAgICAgICB9CisgICAgfQorfQorI2VuZGlmCisKIHZvaWQgTWVkaWFDb250
cm9sUm9vdEVsZW1lbnRDaHJvbWl1bTo6cmVwb3J0ZWRFcnJvcigpCiB7CiAgICAgUGFnZSogcGFn
ZSA9IGRvY3VtZW50KCktPnBhZ2UoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0bWwv
c2hhZG93L01lZGlhQ29udHJvbFJvb3RFbGVtZW50Q2hyb21pdW0uaCBiL1NvdXJjZS9XZWJDb3Jl
L2h0bWwvc2hhZG93L01lZGlhQ29udHJvbFJvb3RFbGVtZW50Q2hyb21pdW0uaAppbmRleCA5Yzc5
ZGFiY2ZhNTRkYTI0NzVhOWI1NjI1ZGQzMTg5N2YzZTZiM2Y1Li5jM2MwMjA4N2QzNTI4MWI5OGNi
YTg3MWUzZDM1NWIwZTYzMmI0MmFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9odG1sL3No
YWRvdy9NZWRpYUNvbnRyb2xSb290RWxlbWVudENocm9taXVtLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9sUm9vdEVsZW1lbnRDaHJvbWl1bS5oCkBAIC00OSw2
ICs0OSwxMCBAQCBjbGFzcyBNZWRpYUNvbnRyb2xNdXRlQnV0dG9uRWxlbWVudDsKIGNsYXNzIE1l
ZGlhQ29udHJvbFZvbHVtZVNsaWRlckVsZW1lbnQ7CiBjbGFzcyBNZWRpYUNvbnRyb2xWb2x1bWVT
bGlkZXJDb250YWluZXJFbGVtZW50OwogY2xhc3MgTWVkaWFDb250cm9sUGFuZWxFbGVtZW50Owor
I2lmIEVOQUJMRShWSURFT19UUkFDSykKK2NsYXNzIE1lZGlhQ29udHJvbFRleHRUcmFja0VsZW1l
bnQ7CitjbGFzcyBUZXh0VHJhY2tDdWU7CisjZW5kaWYKIGNsYXNzIE1lZGlhUGxheWVyOwogCiBj
bGFzcyBSZW5kZXJCb3g7CkBAIC04NCw2ICs4OCwxMCBAQCBwdWJsaWM6CiAgICAgdm9pZCBzaG93
Vm9sdW1lU2xpZGVyKCk7CiAgICAgdm9pZCB1cGRhdGVUaW1lRGlzcGxheSgpOwogCisjaWYgRU5B
QkxFKFZJREVPX1RSQUNLKQorICAgIHZvaWQgdXBkYXRlVGV4dFRyYWNrKCk7CisjZW5kaWYKKwog
cHJpdmF0ZToKICAgICBNZWRpYUNvbnRyb2xSb290RWxlbWVudENocm9taXVtKEhUTUxNZWRpYUVs
ZW1lbnQqKTsKIApAQCAtOTksNiArMTA3LDkgQEAgcHJpdmF0ZToKICAgICBNZWRpYUNvbnRyb2xW
b2x1bWVTbGlkZXJFbGVtZW50KiBtX3ZvbHVtZVNsaWRlcjsKICAgICBNZWRpYUNvbnRyb2xWb2x1
bWVTbGlkZXJDb250YWluZXJFbGVtZW50KiBtX3ZvbHVtZVNsaWRlckNvbnRhaW5lcjsKICAgICBN
ZWRpYUNvbnRyb2xQYW5lbEVsZW1lbnQqIG1fcGFuZWw7CisjaWYgRU5BQkxFKFZJREVPX1RSQUNL
KQorICAgIE1lZGlhQ29udHJvbFRleHRUcmFja0VsZW1lbnQqIG1fdGV4dFRyYWNrOworI2VuZGlm
CiAKICAgICBib29sIG1fb3BhcXVlOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2h0
bWwvc2hhZG93L01lZGlhQ29udHJvbHMuaCBiL1NvdXJjZS9XZWJDb3JlL2h0bWwvc2hhZG93L01l
ZGlhQ29udHJvbHMuaAppbmRleCBkYzg4ZWJiMjVjODJmN2JjYTlkZGE2NWU4MmMwY2Q4NzU0NzQ4
OGE4Li4wMjczOTQ5NjNmNmRkMjYwMmMyNzRiMGUyNjBlZjYzZTc1YjE3YjVkIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9odG1sL3NoYWRvdy9NZWRpYUNvbnRyb2xzLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvaHRtbC9zaGFkb3cvTWVkaWFDb250cm9scy5oCkBAIC02Nyw2ICs2NywxMCBAQCBj
bGFzcyBNZWRpYUNvbnRyb2xzIDogcHVibGljIEhUTUxEaXZFbGVtZW50IHsKIAogICAgIHZpcnR1
YWwgdm9pZCBzaG93Vm9sdW1lU2xpZGVyKCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVU
aW1lRGlzcGxheSgpID0gMDsKKyAgICAKKyNpZiBFTkFCTEUoVklERU9fVFJBQ0spCisgICAgdmly
dHVhbCB2b2lkIHVwZGF0ZVRleHRUcmFjaygpID0gMDsKKyNlbmRpZgogCiBwcm90ZWN0ZWQ6CiAg
ICAgTWVkaWFDb250cm9scyhIVE1MTWVkaWFFbGVtZW50Kik7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9sb2FkZXIvQ3VlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9DdWVM
b2FkZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjM3Y2U3ZmQ4YjU1NjRlZGI2Zjg1YTQ3NzUzNjk1ZDIwNjll
MzgzNTgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3VlTG9hZGVy
LmNwcApAQCAtMCwwICsxLDQwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJ
bmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAq
IEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRF
RCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBG
SVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBO
TyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisg
KiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
IExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisK
KyNpZiBFTkFCTEUoVklERU9fVFJBQ0spCisKKyNpbmNsdWRlICJDdWVMb2FkZXIuaCIKKworbmFt
ZXNwYWNlIFdlYkNvcmUgeworCit2b2lkIEN1ZUxvYWRlcjo6c2V0Q3VlTG9hZGVyQ2xpZW50KEN1
ZUxvYWRlckNsaWVudCogY2xpZW50KSB7CisgICAgbV9jbGllbnQgPSBjbGllbnQ7Cit9CisKK30K
KworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3VlTG9hZGVyLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvQ3VlTG9hZGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNmMzMTBlMjMy
OTMzYjFiZGYwM2E2MjM3MThjMjI4OTJlYTg1ZWQ4MwotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9DdWVMb2FkZXIuaApAQCAtMCwwICsxLDU5IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5D
LiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1Qs
IElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFN
QUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBT
VUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBS
T0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFO
WSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJ
QUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkg
QVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBF
VkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLiAKKyAqLwor
CisjaWZuZGVmIEN1ZUxvYWRlcl9oCisjZGVmaW5lIEN1ZUxvYWRlcl9oCisKKyNpZiBFTkFCTEUo
VklERU9fVFJBQ0spCisKKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK25hbWVzcGFjZSBXZWJD
b3JlIHsKKworY2xhc3MgQ3VlTG9hZGVyOworY2xhc3MgVGV4dFRyYWNrQ3VlOworY2xhc3MgVGV4
dFRyYWNrQ3VlTGlzdDsKKworY2xhc3MgQ3VlTG9hZGVyQ2xpZW50IHsKK3B1YmxpYzoKKyAgICAv
LyBRdWVyaWVzIEN1ZUxvYWRlciBmb3IgbmV3ZXN0IGN1ZXMuCisgICAgdmlydHVhbCB2b2lkIHRh
a2VOZXdDdWVzRnJvbShDdWVMb2FkZXIqKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHJlbW92ZUN1
ZXNGcm9tSW5kZXgoY29uc3QgVGV4dFRyYWNrQ3VlTGlzdCopID0gMDsKK307CisKK2NsYXNzIEN1
ZUxvYWRlciB7CitwdWJsaWM6CisgICAgdmlydHVhbCB2b2lkIG5ld0N1ZXNMb2FkZWQoKSA9IDA7
CisgICAgdmlydHVhbCB2b2lkIHBvcE5ld2VzdEN1ZXMoVmVjdG9yPFRleHRUcmFja0N1ZSo+Jikg
PSAwOworCisgICAgdm9pZCBzZXRDdWVMb2FkZXJDbGllbnQoQ3VlTG9hZGVyQ2xpZW50Kik7Citw
cm90ZWN0ZWQ6CisgICAgQ3VlTG9hZGVyQ2xpZW50KiBtX2NsaWVudDsKK307CisKK30KKworI2Vu
ZGlmCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93Lmlk
bCBiL1NvdXJjZS9XZWJDb3JlL3BhZ2UvRE9NV2luZG93LmlkbAppbmRleCBkNDI4MWEzYWFkYmE5
Y2NlY2NjZWYzODA5NWVlNzUzOTIyMTA4ODcwLi40MmM0NThiNjk5OGQyOWM5YzgxYjUwODBkOGMz
N2ZjNWI4N2I0MGVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wYWdlL0RPTVdpbmRvdy5p
ZGwKKysrIGIvU291cmNlL1dlYkNvcmUvcGFnZS9ET01XaW5kb3cuaWRsCkBAIC01NzksNiArNTc5
LDEwIEBAIG1vZHVsZSB3aW5kb3cgewogICAgICAgICBhdHRyaWJ1dGUgW0pTQ0N1c3RvbUdldHRl
cixFbmFibGVkQXRSdW50aW1lXSBXZWJTb2NrZXRDb25zdHJ1Y3RvciBXZWJTb2NrZXQ7IC8vIFVz
YWJsZSB3aXRoIHRoZSBuZXcgb3BlcmF0b3IKICNlbmRpZgogCisjaWYgZGVmaW5lZChFTkFCTEVf
VklERU9fVFJBQ0spICYmIEVOQUJMRV9WSURFT19UUkFDSworICAgICAgICBhdHRyaWJ1dGUgW0pT
Q0N1c3RvbUdldHRlcl0gVGV4dFRyYWNrQ3VlQ29uc3RydWN0b3IgVGV4dFRyYWNrQ3VlOyAvLyBV
c2FibGUgd2l0aCB0aGUgbmV3IG9wZXJhdG9yCisjZW5kaWYKKwogICAgICAgICBhdHRyaWJ1dGUg
RE9NUGx1Z2luQ29uc3RydWN0b3IgUGx1Z2luOwogICAgICAgICBhdHRyaWJ1dGUgRE9NUGx1Z2lu
QXJyYXlDb25zdHJ1Y3RvciBQbHVnaW5BcnJheTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vdHJhY2svQ3VlUGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L3RyYWNrL0N1ZVBhcnNlci5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uN2YwOGM4NjhiODdhZTI3NDFjMzMxN2E3
Zjg1YmI1YjY0YjFjZWY5YgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL3RyYWNrL0N1ZVBhcnNlci5jcHAKQEAgLTAsMCArMSwxMTUgQEAKKy8qCisgKiBDb3B5cmln
aHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlv
bi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1l
cyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21v
dGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lm
aWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJ
UyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAq
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUgImNvbmZp
Zy5oIgorCisjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQorCisjaW5jbHVkZSAiQ3VlUGFyc2VyLmgi
CisKKyNpbmNsdWRlICJSZXNvdXJjZVJlcXVlc3QuaCIKKyNpbmNsdWRlICJUaHJlYWRhYmxlTG9h
ZGVyLmgiCisjaW5jbHVkZSAiV2ViVlRUUGFyc2VyLmgiCisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
KworQ3VlUGFyc2VyOjpDdWVQYXJzZXIoKQoreworfQorCitDdWVQYXJzZXI6On5DdWVQYXJzZXIo
KQoreworICAgIGlmIChtX2xvYWRlcikgeworICAgICAgICBtX2xvYWRlci0+Y2FuY2VsKCk7Cisg
ICAgICAgIG1fbG9hZGVyID0gMDsKKyAgICB9Cit9CisKK3ZvaWQgQ3VlUGFyc2VyOjpsb2FkKGNv
bnN0IFN0cmluZyYgdXJsLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LCBDdWVQYXJz
ZXJDbGllbnQqIGNsaWVudCkKK3sKKyAgICBSZXNvdXJjZVJlcXVlc3QgcmVxdWVzdCh1cmwpOwor
CisgICAgVGhyZWFkYWJsZUxvYWRlck9wdGlvbnMgb3B0aW9uczsKKyAgICBvcHRpb25zLnNlbmRM
b2FkQ2FsbGJhY2tzID0gdHJ1ZTsKKworICAgIG1fY2xpZW50ID0gY2xpZW50OworICAgIG1fc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCA9IGNvbnRleHQ7CisKKyAgICBtX2xvYWRlciA9IFRocmVhZGFi
bGVMb2FkZXI6OmNyZWF0ZShjb250ZXh0LCB0aGlzLCByZXF1ZXN0LCBvcHRpb25zKTsKK30KKwor
Ym9vbCBDdWVQYXJzZXI6OnN1cHBvcnRzVHlwZShjb25zdCBTdHJpbmcmIHVybCkKK3sKKyAgICAv
LyBUT0RPKGFubmFjYyk6IGNoZWNrIGFnYWluc3QgYSBsaXN0IG9mIHN1cHBvcnRlZCB0eXBlcyBm
cm9tIEN1ZVBhcnNlclByaXZhdGUKKyAgICByZXR1cm4gdXJsLmNvbnRhaW5zKCIudnR0Iik7Cit9
CisKK3ZvaWQgQ3VlUGFyc2VyOjpkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNw
b25zZSYpCit7CisgICAgbV9jbGllbnQtPnRyYWNrTG9hZFN0YXJ0ZWQoKTsKK30KKwordm9pZCBD
dWVQYXJzZXI6Om5ld0N1ZXNQYXJzZWQoKQoreworICAgIG1fY2xpZW50LT5uZXdDdWVzUGFyc2Vk
KCk7Cit9CisKK3ZvaWQgQ3VlUGFyc2VyOjpkaWRSZWNlaXZlRGF0YShjb25zdCBjaGFyKiBkYXRh
LCBpbnQgbGVuKQoreworICAgIHN0ZDo6c3RyaW5nIGNvbnRlbnQoZGF0YSk7CisgICAgLy8gVE9E
Tyhhbm5hY2MpOiBjcmVhdGlvbiBvZiBtX3ByaXZhdGUgc2hvdWxkIG9uZSBkYXkgYmUgaW4gZGlk
UmVjZWl2ZVJlc3BvbnNlIGJhc2VkIG9uIE1JTUUgdHlwZS4KKyAgICBpZiAoIW1fcHJpdmF0ZSkg
eworICAgICAgICAvLyBmb3Igbm93LCBjaGVjayBpZiBmaXJzdCBsaW5lIGlzICdXRUJWVFQgRklM
RScuCisgICAgICAgIGlmIChjb250ZW50LnN1YnN0cigwLCBjb250ZW50LmZpbmQoIlxuIikpID09
ICJXRUJWVFQgRklMRSIpCisgICAgICAgICAgICBtX3ByaXZhdGUgPSBXZWJWVFRQYXJzZXI6OmNy
ZWF0ZShDdWVQYXJzZXJQcml2YXRlSW50ZXJmYWNlOjpXZWJWVFQsIHRoaXMsIG1fc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCk7CisgICAgfQorICAgIGlmIChtX3ByaXZhdGUpIHsKKyAgICAgICAgbV9w
cml2YXRlLT5wYXJzZUJ5dGVzKGNvbnRlbnQuY19zdHIoKSwgbGVuKTsKKyAgICB9Cit9CisKK3Zv
aWQgQ3VlUGFyc2VyOjpkZXBsZXRlUGFyc2VkQ3VlcyhWZWN0b3I8UmVmUHRyPFRleHRUcmFja0N1
ZT4gPiYgb3V0cHV0Q3VlcykKK3sKKyAgICBtX3ByaXZhdGUtPmRlcGxldGVQYXJzZWRDdWVzKG91
dHB1dEN1ZXMpOworfQorCit2b2lkIEN1ZVBhcnNlcjo6ZGlkRmluaXNoTG9hZGluZyh1bnNpZ25l
ZCBsb25nKQoreworICAgIG1fY2xpZW50LT50cmFja0xvYWRDb21wbGV0ZWQoKTsKK30KKwordm9p
ZCBDdWVQYXJzZXI6OmRpZEZhaWwoY29uc3QgUmVzb3VyY2VFcnJvciYpCit7CisgICAgbV9jbGll
bnQtPnRyYWNrTG9hZEVycm9yKCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2Vu
ZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90cmFjay9DdWVQYXJzZXIu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RyYWNrL0N1ZVBhcnNlci5oCm5ldyBmaWxlIG1v
ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAu
LjE5OTRmZjhjMDBhNTI2NjdiZjY1NjY1ZTM2OTA1NWQ0ZWViZTkzM2IKLS0tIC9kZXYvbnVsbAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90cmFjay9DdWVQYXJzZXIuaApAQCAtMCwwICsx
LDg5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuICBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0Ogor
ICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisg
KiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdp
dGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdv
b2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVz
ZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBz
b2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisg
KiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQg
Q09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJB
TlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FS
UkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VM
QVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdI
VAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5E
SVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJ
QUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVO
VCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEs
IE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5E
IE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RS
SUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVS
V0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRX
QVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgor
ICovCisKKyNpZm5kZWYgQ3VlUGFyc2VyX2gKKyNkZWZpbmUgQ3VlUGFyc2VyX2gKKworI2lmIEVO
QUJMRShWSURFT19UUkFDSykKKworI2luY2x1ZGUgIlRocmVhZGFibGVMb2FkZXIuaCIKKyNpbmNs
dWRlICJUaHJlYWRhYmxlTG9hZGVyQ2xpZW50LmgiCisjaW5jbHVkZSAiV2ViVlRUUGFyc2VyLmgi
CisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisK
K25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKK2Ns
YXNzIFRleHRUcmFja0N1ZTsKK2NsYXNzIFRocmVhZGFibGVMb2FkZXI7CisKK2NsYXNzIEN1ZVBh
cnNlckNsaWVudCB7CitwdWJsaWM6CisgICAgdmlydHVhbCB2b2lkIG5ld0N1ZXNQYXJzZWQoKSA9
IDA7CisgICAgdmlydHVhbCB2b2lkIHRyYWNrTG9hZFN0YXJ0ZWQoKSA9IDA7CisgICAgdmlydHVh
bCB2b2lkIHRyYWNrTG9hZEVycm9yKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCB0cmFja0xvYWRD
b21wbGV0ZWQoKSA9IDA7Cit9OworCitjbGFzcyBDdWVQYXJzZXIgOiBwdWJsaWMgVGhyZWFkYWJs
ZUxvYWRlckNsaWVudCwgcHVibGljIEN1ZVBhcnNlclByaXZhdGVDbGllbnQgeworcHVibGljOgor
ICAgIEN1ZVBhcnNlcigpOworICAgIHZpcnR1YWwgfkN1ZVBhcnNlcigpOworICAgIC8vIFBhcnNl
cyBzZWdtZW50IG9mIGJ5dGVzLgorICAgIHZpcnR1YWwgdm9pZCBsb2FkKGNvbnN0IFN0cmluZyYg
dXJsLCBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgQ3VlUGFyc2VyQ2xpZW50Kik7CisgICAgdmly
dHVhbCBib29sIHN1cHBvcnRzVHlwZShjb25zdCBTdHJpbmcmIHVybCk7CisgICAgdmlydHVhbCB2
b2lkIGRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJik7CisgICAgdmly
dHVhbCB2b2lkIGRpZFJlY2VpdmVEYXRhKGNvbnN0IGNoYXIqLCBpbnQpOworICAgIHZpcnR1YWwg
dm9pZCBkaWRGaW5pc2hMb2FkaW5nKHVuc2lnbmVkIGxvbmcpOworICAgIHZpcnR1YWwgdm9pZCBk
aWRGYWlsKGNvbnN0IFJlc291cmNlRXJyb3ImKTsKKyAgICAKKyAgICB2aXJ0dWFsIHZvaWQgZGVw
bGV0ZVBhcnNlZEN1ZXMoVmVjdG9yPFJlZlB0cjxUZXh0VHJhY2tDdWU+ID4mIG91dHB1dEN1ZXMp
OworICAgIHZvaWQgbmV3Q3Vlc1BhcnNlZCgpOworICAgIAorcHJvdGVjdGVkOgorICAgIFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKKworcHJpdmF0ZToK
KyAgICAvLyBPYmplY3QgdGhhdCBhY3R1YWxseSBsb2FkcyBmaWxlIGFuZCBjYWxscyBiYWNrIHRv
IFRocmVhZGFibGVMb2FkZXJDbGllbnQKKyAgICAvLyBpbnRlcmZhY2Ugd2hlbiBkYXRhIHJlY2Vp
dmVkLgorICAgIFJlZlB0cjxUaHJlYWRhYmxlTG9hZGVyPiBtX2xvYWRlcjsKKworICAgIC8vIFRo
ZSBwYXJ0aWN1bGFyIGltcGxlbWVudGF0aW9uIG9mIGEgcGFyc2VyLgorICAgIE93blB0cjxDdWVQ
YXJzZXJQcml2YXRlSW50ZXJmYWNlPiBtX3ByaXZhdGU7CisKKyAgICAvLworICAgIEN1ZVBhcnNl
ckNsaWVudCogbV9jbGllbnQ7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRp
ZgorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90cmFjay9DdWVQ
YXJzZXJQcml2YXRlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RyYWNrL0N1ZVBhcnNl
clByaXZhdGUuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjEwM2U5MmNlMDM3NDY1MGQ3NDIyM2VlN2JjM2I3YzQz
ZDAzZTc2OWMKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90cmFj
ay9DdWVQYXJzZXJQcml2YXRlLmNwcApAQCAtMCwwICsxLDUwIEBACisvKgorICogQ29weXJpZ2h0
IChDKSAyMDExIEdvb2dsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlz
dHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0
aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZv
bGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24u
CisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMg
b2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3Rl
IHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmlj
IHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMi
IEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5P
VAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJ
VFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1F
RC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBT
UEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisgCisjaW5jbHVkZSAiY29uZmln
LmgiCisKKyNpZiBFTkFCTEUoVklERU9fVFJBQ0spCisKKyNpbmNsdWRlICJDdWVQYXJzZXJQcml2
YXRlLmgiCisKKy8vI2luY2x1ZGUgIldlYlZUVFBhcnNlci5oIgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisvKgorUGFzc1JlZlB0cjxDdWVQYXJzZXJQcml2YXRlSW50ZXJmYWNlPiBDdWVQYXJzZXJQ
cml2YXRlSW50ZXJmYWNlOjpjcmVhdGUoRm9ybWF0IGZvcm1hdCkKK3sKKyAgICBpZiAoZm9ybWF0
ID09IFdlYlZUVCkgeworICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IFdlYlZUVFBhcnNlcik7
CisgICAgfQorfQorKi8KK30KKworI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS90cmFjay9DdWVQYXJzZXJQcml2YXRlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS90cmFjay9DdWVQYXJzZXJQcml2YXRlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmUyNWVjMGZmZTIyNzlhYWRi
YmQ4NDQ1YjQ1MzUwNGFjM2VmOGI4NAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL3RyYWNrL0N1ZVBhcnNlclByaXZhdGUuaApAQCAtMCwwICsxLDY2IEBACisvKgor
ICogQ29weXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAq
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBk
aXN0cmlidXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5v
ciB0aGUgbmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3Jz
ZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRo
b3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JT
CisgKiAiQVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIg
T1IgQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsCisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICog
VEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5k
ZWYgQ3VlUGFyc2VyUHJpdmF0ZV9oCisjZGVmaW5lIEN1ZVBhcnNlUHJpdmF0ZV9oCisKKyNpZiBF
TkFCTEUoVklERU9fVFJBQ0spCisKKyNpbmNsdWRlICJUZXh0VHJhY2tDdWUuaCIKKyNpbmNsdWRl
IDx3dGYvRm9yd2FyZC5oPgorI2luY2x1ZGUgPHd0Zi9Ob25jb3B5YWJsZS5oPgorI2luY2x1ZGUg
PHd0Zi9WZWN0b3IuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBDdWVQYXJzZXJQ
cml2YXRlQ2xpZW50IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIHZvaWQgbmV3Q3Vlc1BhcnNlZCgp
ID0gMDsKK307CisKK2NsYXNzIEN1ZVBhcnNlclByaXZhdGVJbnRlcmZhY2UgeworICAgIFdURl9N
QUtFX05PTkNPUFlBQkxFKEN1ZVBhcnNlclByaXZhdGVJbnRlcmZhY2UpOyBXVEZfTUFLRV9GQVNU
X0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5DdWVQYXJzZXJQcml2YXRlSW50ZXJm
YWNlKCkgeyB9CisKKyAgICBlbnVtIEZvcm1hdCB7IFdlYlZUVCwgWE1MIH07CisKKyAgICB2aXJ0
dWFsIHZvaWQgcGFyc2VCeXRlcyhjb25zdCBjaGFyKiBieXRlcywgaW50IGxlbmd0aCkgPSAwOwor
CisgICAgdmlydHVhbCB2b2lkIGRlcGxldGVQYXJzZWRDdWVzKFZlY3RvcjxSZWZQdHI8VGV4dFRy
YWNrQ3VlPiA+JiBvdXRwdXRDdWVzKSA9IDA7CisKK3Byb3RlY3RlZDoKKyAgICBDdWVQYXJzZXJQ
cml2YXRlSW50ZXJmYWNlKCkgeyB9Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNl
bmRpZgorI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90cmFjay9U
ZXh0Q3VlUGFyc2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RyYWNrL1RleHRDdWVQ
YXJzZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLmU2NTUyNDc3ZGRkYWQ3MDM5NWM4MTk1YWUwZWE1MTFjYmIz
MDI3MDgKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90cmFjay9U
ZXh0Q3VlUGFyc2VyLmNwcApAQCAtMCwwICsxLDU3IEBACisvKgorICogQ29weXJpZ2h0IChDKSAy
MDExIEdvb2dsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0
aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAor
ICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2lu
ZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisg
KiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQg
dGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Ig
b3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmlidXRpb24uCisgKiAg
ICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUgbmFtZXMgb2YgaXRz
CisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1
Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9y
IHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZ
IFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAiQVMgSVMiIEFORCBB
TlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVAorICog
TElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5E
IEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4g
Tk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09OVFJJQlVUT1JTIEJF
IExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsCisgKiBTUEVDSUFM
LCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9U
CisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJ
Q0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVS
UlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBP
RiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBP
U1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKwor
I2lmIEVOQUJMRShWSURFT19UUkFDSykKKworI2luY2x1ZGUgIlRleHRDdWVQYXJzZXIuaCIKKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCit2b2lkIFRleHRDdWVQYXJzZXI6OnBhcnNlQnl0ZXMoY29u
c3QgY2hhciogYnl0ZXMsIGludCBsZW5ndGgpCit7CisgICAgU3RyaW5nIHJlY2VpdmVkKGJ5dGVz
LCBsZW5ndGgpOworICAgIFZlY3RvcjxTdHJpbmc+IGxpbmVzOworICAgIHJlY2VpdmVkLnNwbGl0
KCJcbiIsIGxpbmVzKTsKKyAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IGxpbmVzLnNp
emUoKTsgaSsrKSB7CisgICAgICAgIC8vbV9jdWVzUGFyc2VkLmFwcGVuZChUZXh0VHJhY2tDdWU6
OmNyZWF0ZShsaW5lc1tpXSkpOworICAgIH0KK30KK3ZvaWQgVGV4dEN1ZVBhcnNlcjo6ZGVwbGV0
ZVBhcnNlZEN1ZXMoVmVjdG9yPFBhc3NSZWZQdHI8VGV4dFRyYWNrQ3VlPiA+JiBvdXRwdXRDdWVz
KQoreworICAgIHdoaWxlKCFtX2N1ZXNQYXJzZWQuaXNFbXB0eSgpKSB7CisgICAgICAgIG91dHB1
dEN1ZXMuYXBwZW5kKG1fY3Vlc1BhcnNlZC50YWtlRmlyc3QoKSk7CisgICAgfQorfQorCit9CisK
KyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdHJhY2svVGV4dEN1
ZVBhcnNlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdHJhY2svVGV4dEN1ZVBhcnNlci5o
Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAuLjBlNGIzNDBmMTIzZjlmNzM4NmEyMTk0MmRlY2Y1OWMwOWU3NTY4NDQKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90cmFjay9UZXh0Q3VlUGFy
c2VyLmgKQEAgLTAsMCArMSw1NSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMSBHb29nbGUg
SW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBVVEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVURVIsIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBC
RSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAor
ICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5P
VCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJW
SUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRF
UlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJ
VFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJ
TkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQg
T0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQ
T1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4gCisgKi8KKworI2lmbmRlZiBUZXh0Q3VlUGFyc2Vy
X2gKKyNkZWZpbmUgVGV4dEN1ZVBhcnNlcl9oCisKKyNpbmNsdWRlICJDdWVQYXJzZXJQcml2YXRl
LmgiCisjaW5jbHVkZSAiVGV4dFRyYWNrQ3VlLmgiCisjaW5jbHVkZSA8d3RmL0RlcXVlLmg+Cisj
aW5jbHVkZSA8d3RmL1Bhc3NSZWZQdHIuaD4KKworI2lmIEVOQUJMRShWSURFT19UUkFDSykKKwor
bmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBUZXh0VHJhY2tDdWU7CisKK2NsYXNzIFRleHRD
dWVQYXJzZXIgOiBwdWJsaWMgQ3VlUGFyc2VyUHJpdmF0ZUludGVyZmFjZSB7CitwdWJsaWM6Cisg
ICAgVGV4dEN1ZVBhcnNlcigpIHsgfQorICAgIHZpcnR1YWwgflRleHRDdWVQYXJzZXIoKSB7IH0K
KworICAgIHZpcnR1YWwgdm9pZCBwYXJzZUJ5dGVzKGNvbnN0IGNoYXIqIGJ5dGVzLCBpbnQgbGVu
Z3RoKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGVwbGV0ZVBhcnNlZEN1ZXMoVmVjdG9yPFBhc3NSZWZQ
dHI8VGV4dFRyYWNrQ3VlPiA+JiBvdXRwdXRDdWVzKTsKKworcHJpdmF0ZToKKyAgICBEZXF1ZTxS
ZWZQdHI8VGV4dFRyYWNrQ3VlPiA+IG1fY3Vlc1BhcnNlZDsKK307Cit9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCisKKyNlbmRpZgorCisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL3RyYWNrL1dlYlZUVFBhcnNlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS90
cmFjay9XZWJWVFRQYXJzZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjI2NzEzZTEzOTQ0N2FmNjNmYTA2ZmY3
ZDFjMGI1ZDA4MjNjNzIzZWUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS90cmFjay9XZWJWVFRQYXJzZXIuY3BwCkBAIC0wLDAgKzEsMTIwIEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDExIEdvb2dsZSBJbmMuICBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgICAqIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
CisgKiBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIuCisgKiAgICAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlCisgKiBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyCisgKiBpbiB0aGUgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiBkaXN0cmli
dXRpb24uCisgKiAgICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSBJbmMuIG5vciB0aGUg
bmFtZXMgb2YgaXRzCisgKiBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBw
cm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbQorICogdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNw
ZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElT
IFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisgKiAi
QVMgSVMiIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVAorICogTElNSVRFRCBUTywgVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SCisgKiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVAorICogT1dORVIgT1IgQ09O
VFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
CisgKiBTUEVDSUFMLCBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwKKyAqIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJV
U0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWQorICogVEhFT1JZ
IE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklT
RUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKworI2lmIEVOQUJMRShWSURFT19UUkFDSykKKworI2luY2x1ZGUgIldlYlZUVFBh
cnNlci5oIgorI2luY2x1ZGUgPHd0Zi90ZXh0L0NTdHJpbmcuaD4KKworbmFtZXNwYWNlIFdlYkNv
cmUgeworCit2b2lkIFdlYlZUVFBhcnNlcjo6cGFyc2VCeXRlcyhjb25zdCBjaGFyKiBkYXRhLCBp
bnQgbGVuZ3RoKQoreworICAgIC8vIGJhc2VkIG9uIFdIQVRXRyBXZWJWVFQgNC44LjEwLjEzLjEg
U3ludGF4IGFuZCA0LjguMTAuMTMuMiBQYXJzaW5nCisgICAgU3RyaW5nIGlucHV0Qnl0ZXMoZGF0
YSk7CisgICAgVmVjdG9yPFN0cmluZz4gbGluZXM7CisgICAgaW5wdXRCeXRlcy5zcGxpdCgiXG4i
LCB0cnVlLCBsaW5lcyk7CisKKyAgICBmb3IgKFZlY3RvcjxTdHJpbmc+OjppdGVyYXRvciBsaW5l
ID0gbGluZXMuYmVnaW4oKTsgbGluZSAhPSBsaW5lcy5lbmQoKTsgbGluZSsrKSB7CisgICAgICAg
IFN0cmluZyBjdXJyZW50X2xpbmUgPSAqbGluZTsKKyAgICAgICAgc3dpdGNoIChtX3N0YXRlKSB7
CisgICAgICAgIGNhc2UgSEVBREVSUzoKKyAgICAgICAgICAgIGlmIChjdXJyZW50X2xpbmUgPT0g
IldFQlZUVCBGSUxFIiB8fCBjdXJyZW50X2xpbmUgPT0gIldFQlZUVCIpIHsKKyAgICAgICAgICAg
ICAgICAvLyBFeHBlY3Qgb25lIGxpbmUgdGVybWluYXRvciBiZWxvdyBoZWFkZXIKKyAgICAgICAg
ICAgICAgICBsaW5lKys7CisgICAgICAgICAgICAgICAgbV9zdGF0ZSA9IElEOworICAgICAgICAg
ICAgfSBlbHNlIHsKKyAgICAgICAgICAgICAgICAvLyBzaG91bGQgYWJvcnQgdGhlc2Ugc3RlcHMu
IFRoZSBmaWxlIGlzIG5vdCBhIFdlYlZUVCBmaWxlLgorICAgICAgICAgICAgfQorICAgICAgICAg
ICAgYnJlYWs7CisgICAgICAgIGNhc2UgSUQ6CisgICAgICAgICAgICBpZiAoIWN1cnJlbnRfbGlu
ZS5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgICAgICAvLyBjdWVzIG1heSBiZSBzZXBhcmF0ZWQg
YnkgMiBvciBtb3JlIGxpbmUgdGVybWluYXRvcnMKKyAgICAgICAgICAgICAgICBtX2N1cnJlbnRJ
ZCA9IGN1cnJlbnRfbGluZTsKKyAgICAgICAgICAgICAgICBtX3N0YXRlID0gVElNRUxJTkU7Cisg
ICAgICAgICAgICB9CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBUSU1FTElORToK
KyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAgICBTdHJpbmcgc3RhcnQoY3VycmVudF9saW5l
LnN1YnN0cmluZygwLCBjdXJyZW50X2xpbmUuZmluZCgiLS0+IiktMSkpOworICAgICAgICAgICAg
ICAgIFN0cmluZyBlbmQoY3VycmVudF9saW5lLnN1YnN0cmluZyhjdXJyZW50X2xpbmUuZmluZCgi
LS0+IikrNCkpOworICAgICAgICAgICAgICAgIG1fY3VycmVudFN0YXJ0VGltZSA9IHN0cmluZ1Rv
VGltZShzdGFydCk7CisgICAgICAgICAgICAgICAgbV9jdXJyZW50RW5kVGltZSA9IHN0cmluZ1Rv
VGltZShlbmQpOworICAgICAgICAgICAgICAgIG1fc3RhdGUgPSBDT05URU5UOworICAgICAgICAg
ICAgICAgIGJyZWFrOworICAgICAgICAgICAgfQorICAgICAgICBjYXNlIENPTlRFTlQ6CisgICAg
ICAgICAgICBpZiAoIWN1cnJlbnRfbGluZS5pc0VtcHR5KCkpIHsKKyAgICAgICAgICAgICAgICBt
X2N1cnJlbnRDb250ZW50ICs9IGN1cnJlbnRfbGluZSArICJcbiI7CisgICAgICAgICAgICB9IGVs
c2UgeworICAgICAgICAgICAgICAgIC8vIHJlYWNoZWQgdGhlIGVuZCBvZiB0aGlzIGN1ZQorICAg
ICAgICAgICAgICAgIFJlZlB0cjxUZXh0VHJhY2tDdWU+IGN1ZSA9IFRleHRUcmFja0N1ZTo6Y3Jl
YXRlKG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCwgbV9jdXJyZW50SWQsIG1fY3VycmVudFN0YXJ0
VGltZSwgbV9jdXJyZW50RW5kVGltZSwgbV9jdXJyZW50Q29udGVudCk7CisgICAgICAgICAgICAg
ICAgbV9jdWVsaXN0LmFwcGVuZChjdWUpOworICAgICAgICAgICAgICAgIG1fY2xpZW50LT5uZXdD
dWVzUGFyc2VkKCk7CisgICAgICAgICAgICAgICAgbV9jdXJyZW50Q29udGVudCA9ICIiOworICAg
ICAgICAgICAgICAgIG1fc3RhdGUgPSBJRDsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICB9CisgICAgfQorfQorCit2b2lkIFdlYlZUVFBhcnNlcjo6ZGVwbGV0ZVBh
cnNlZEN1ZXMoVmVjdG9yPFJlZlB0cjxUZXh0VHJhY2tDdWU+ID4mIG91dHB1dEN1ZXMpCit7Cisg
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBtX2N1ZWxpc3Quc2l6ZSgpOyArK2kpCisgICAgICAg
IG91dHB1dEN1ZXMuYXBwZW5kKG1fY3VlbGlzdFtpXSk7CisgICAgbV9jdWVsaXN0LmNsZWFyKCk7
Cit9CisKK2RvdWJsZSBXZWJWVFRQYXJzZXI6OnN0cmluZ1RvVGltZShjb25zdCBTdHJpbmcmIHN0
cikKK3sKKyAgICAvLyB0aGUgZm9sbG93aW5nIGlzIGJhc2VkIG9uICh3b3JrIGluIHByb2dyZXNz
KQorICAgIC8vICAgaHR0cDovL3d3dy53aGF0d2cub3JnL3NwZWNzL3dlYi1hcHBzL2N1cnJlbnQt
d29yay9tdWx0aXBhZ2UvdmlkZW8uaHRtbCN3ZWJ2dHQtdGltZXN0YW1wCisgICAgVmVjdG9yPFN0
cmluZz4gcGFydHM7CisgICAgc3RyLnNwbGl0KCI6IiwgcGFydHMpOworICAgIGRvdWJsZSB0aW1l
ID0gMDsKKyAgICBpZiAocGFydHMuc2l6ZSgpID09IDMpIHsKKyAgICAgICAgLy8gdGhlICdob3Vy
cycgZGlnaXRzIGFyZSBvcHRpb25hbAorICAgICAgICB0aW1lICs9IHBhcnRzWzBdLnRvRG91Ymxl
KCkgKiBzZWNvbmRzSW5Ib3VyOworICAgICAgICBwYXJ0cy5yZW1vdmUoMCk7CisgICAgIH0KKyAg
ICB0aW1lICs9IHBhcnRzWzBdLnRvRG91YmxlKCkgKiBzZWNvbmRzSW5NaW51dGU7CisgICAgVmVj
dG9yPFN0cmluZz4gc2Vjb25kczsKKyAgICBwYXJ0c1sxXS5zcGxpdCgiLiIsIHNlY29uZHMpOwor
ICAgIHRpbWUgKz0gc2Vjb25kc1swXS50b0RvdWJsZSgpOworICAgIHRpbWUgKz0gc2Vjb25kc1sx
XS50b0RvdWJsZSgpIC8gMTAwMDsKKyAgICByZXR1cm4gdGltZTsKK30KKworfQorCisjZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RyYWNrL1dlYlZUVFBhcnNlci5o
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vdHJhY2svV2ViVlRUUGFyc2VyLmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uMTkyZDBiZjNiZjIxMzIzOTkzMTQzY2RkMDRmZTJjMjlkYjUxYTM1MwotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL3RyYWNrL1dlYlZUVFBhcnNlci5oCkBAIC0w
LDAgKzEsODYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgR29vZ2xlIEluYy4gIEFsbCBy
aWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2Ug
YW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBw
ZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBt
ZXQ6CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlk
ZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUg
b2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkg
YmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0
aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgor
ICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJT
IEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQg
V0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElF
RCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFS
VElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09Q
WVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNU
LCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VR
VUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NV
UkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICog
REFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNF
RCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNU
LCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1Ig
T1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMg
U09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1B
R0UuCisgKi8KKworI2lmbmRlZiBXZWJWVFRQYXJzZXJfaAorI2RlZmluZSBXZWJWVFRQYXJzZXJf
aAorCisjaWYgRU5BQkxFKFZJREVPX1RSQUNLKQorCisjaW5jbHVkZSAiQ3VlUGFyc2VyUHJpdmF0
ZS5oIgorI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsK
Kworc3RhdGljIGNvbnN0IGludCBzZWNvbmRzSW5Ib3VyID0gMzYwMDsKK3N0YXRpYyBjb25zdCBp
bnQgc2Vjb25kc0luTWludXRlID0gNjA7CisKK2NsYXNzIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ7
CisKK2NsYXNzIFdlYlZUVFBhcnNlciA6IHB1YmxpYyBDdWVQYXJzZXJQcml2YXRlSW50ZXJmYWNl
IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIH5XZWJWVFRQYXJzZXIoKSB7IH0KKworICAgIGVudW0g
UGFyc2VTdGF0ZSB7IEhFQURFUlMsIElELCBUSU1FTElORSwgQ09OVEVOVCB9OworCisgICAgc3Rh
dGljIFBhc3NPd25QdHI8V2ViVlRUUGFyc2VyPiBjcmVhdGUoQ3VlUGFyc2VyUHJpdmF0ZUludGVy
ZmFjZTo6Rm9ybWF0IGZvcm1hdCwgQ3VlUGFyc2VyUHJpdmF0ZUNsaWVudCogY2xpZW50LCBTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0KQorICAgIHsKKyAgICAgICAgQVNTRVJUKGZvcm1h
dCA9PSBDdWVQYXJzZXJQcml2YXRlSW50ZXJmYWNlOjpXZWJWVFQpOworICAgICAgICByZXR1cm4g
YWRvcHRQdHIobmV3IFdlYlZUVFBhcnNlcihjbGllbnQsIGNvbnRleHQpKTsKKyAgICB9CisKKyAg
ICB2aXJ0dWFsIHZvaWQgcGFyc2VCeXRlcyhjb25zdCBjaGFyKiBkYXRhLCBpbnQgbGVuZ3RoKTsK
KworICAgIHZpcnR1YWwgdm9pZCBkZXBsZXRlUGFyc2VkQ3VlcyhWZWN0b3I8UmVmUHRyPFRleHRU
cmFja0N1ZT4gPiYgb3V0cHV0Q3Vlcyk7CisKKyAgICBkb3VibGUgc3RyaW5nVG9UaW1lKGNvbnN0
IFN0cmluZyYgc3RyKTsKKworcHJvdGVjdGVkOgorICAgIFdlYlZUVFBhcnNlcihDdWVQYXJzZXJQ
cml2YXRlQ2xpZW50KiBjbGllbnQsIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQpCisg
ICAgICAgIDogbV9zdGF0ZShIRUFERVJTKQorICAgICAgICAsIG1fc2NyaXB0RXhlY3V0aW9uQ29u
dGV4dChjb250ZXh0KQorICAgIHsKKyAgICAgICAgbV9jbGllbnQgPSBjbGllbnQ7CisgICAgfQor
ICAgIFBhcnNlU3RhdGUgbV9zdGF0ZTsKKyAgICBTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBtX3Nj
cmlwdEV4ZWN1dGlvbkNvbnRleHQ7Citwcml2YXRlOgorICAgIFN0cmluZyBtX2N1cnJlbnRJZDsK
KyAgICBkb3VibGUgbV9jdXJyZW50U3RhcnRUaW1lOworICAgIGRvdWJsZSBtX2N1cnJlbnRFbmRU
aW1lOworICAgIFN0cmluZyBtX2N1cnJlbnRDb250ZW50OworICAgIEN1ZVBhcnNlclByaXZhdGVD
bGllbnQqIG1fY2xpZW50OworCisgICAgVmVjdG9yPFJlZlB0cjxUZXh0VHJhY2tDdWU+ID4gbV9j
dWVsaXN0OworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQorCisjZW5kaWYKKyNlbmRpZgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5n
ZUxvZwppbmRleCBhYzA1YTU0NDUwOGIxZmY2MDk5MzU0MTU2YmQwNmViYzFlMjA2ZDg2Li5lYmJl
MzU0ZmZhYzg5MzI3ZWNmZmU0MzU2NzZiYTI4MmEwZTk2MWRkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsx
LDEyIEBACisyMDExLTA1LTA1ICBBbm5hIENhdmVuZGVyICA8YW5uYWNjQGNocm9taXVtLm9yZz4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBBbGwgbWFq
b3IgZmVhdHVyZXMgZm9yIDx0cmFjaz4gc3VwcG9ydC4gIEZvciByZWZlcmVuY2UgT05MWSwgTk9U
IGludGVuZGVkIGZvciBmb3JtYWwgcmV2aWV3IG9yIGNvbW1pdC4KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTYwMzEyCisKKyAgICAgICAgKiBXZWJLaXQu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKwogMjAxMS0wNC0xOCAgVGltb3RoeSBIYXRjaGVy
ICA8dGltb3RoeUBhcHBsZS5jb20+CiAKICAgICAgICAgTWFrZSB1cGRhdGUtd2Via2l0LWxvY2Fs
aXphYmxlLXN0cmluZ3MgcHV0IFdlYktpdC93aW4gc3RyaW5ncyBpbiBXZWJDb3JlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qIGIvU291
cmNlL1dlYktpdC9XZWJLaXQueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBlMGRjMTQw
NzAzYzVjNWY2OGVjZTM0YzY1OTc3ODNlNjk4MmE3YmE2Li4wNDRlMjgzZGNkM2ExNDMyODVmYmNk
MDAwZWJjZGMxZjlmMDk2N2ZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYktpdC54Y29k
ZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViS2l0Lnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKQEAgLTM0Myw2ICszNDMsOCBAQAogCQlBODY0QjNGNjEyM0VEOUZB
MDBDMkE2MTIgLyogTWFpbFF1aXJrc1VzZXJTY3JpcHQuanMgaW4gUmVzb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE4NjRCM0U1MTIzRUQ4M0QwMEMyQTYxMiAvKiBN
YWlsUXVpcmtzVXNlclNjcmlwdC5qcyAqLzsgfTsKIAkJQUI5RkJCQkIwRjg1ODJCMDAwNkFEQzQz
IC8qIFdlYkRPTU9wZXJhdGlvbnNJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQUI5RkJCQkEwRjg1ODJCMDAwNkFEQzQzIC8qIFdlYkRPTU9w
ZXJhdGlvbnNJbnRlcm5hbC5oICovOyB9OwogCQlBQkRERjIwRDA4RUIwRERDMDAxRTEyNDEgLyog
V2ViRG93bmxvYWRJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQUJEREYyMEMwOEVCMEREQzAwMUUxMjQxIC8qIFdlYkRvd25sb2FkSW50ZXJu
YWwuaCAqLzsgfTsKKwkJQjFBNTA4QzYxMzE0RDI5MjAwNzE4MEJCIC8qIEhUTUxUcmFja0VsZW1l
bnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIxQTUw
OEM0MTMxNEQyOTIwMDcxODBCQiAvKiBIVE1MVHJhY2tFbGVtZW50LmggKi87IH07CisJCUIxQTUw
OEM3MTMxNEQyOTIwMDcxODBCQiAvKiBIVE1MVHJhY2tFbGVtZW50LmNwcCBpbiBTb3VyY2VzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIxQTUwOEM1MTMxNEQyOTIwMDcxODBC
QiAvKiBIVE1MVHJhY2tFbGVtZW50LmNwcCAqLzsgfTsKIAkJQjZDRTVDMjQxMDBCQzVDRTAwMjE5
OTM2IC8qIFdlYkFwcGxpY2F0aW9uQ2FjaGUubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBCNjgwNDk3MjBGRkJDRUMxMDA5RjdGNjIgLyogV2ViQXBwbGlj
YXRpb25DYWNoZS5tbSAqLzsgfTsKIAkJQjZDRTVDMjUxMDBCQzVGNTAwMjE5OTM2IC8qIFdlYkFw
cGxpY2F0aW9uQ2FjaGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEI2ODA0OTcxMEZGQkNFQzEwMDlGN0Y2MiAvKiBXZWJBcHBsaWNhdGlvbkNhY2hlLmgg
Ki87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQjgwNDE3
NkYxMjE3QTgzMTAwNDY2QkFFIC8qIFdlYkluc3BlY3RvckZyb250ZW5kLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCODA0MTc2RDEyMTdBODMxMDA0NjZC
QUUgLyogV2ViSW5zcGVjdG9yRnJvbnRlbmQuaCAqLzsgfTsKQEAgLTY2Miw2ICs2NjQsOCBAQAog
CQlBODY0QjNFNTEyM0VEODNEMDBDMkE2MTIgLyogTWFpbFF1aXJrc1VzZXJTY3JpcHQuanMgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmphdmFzY3JpcHQ7IHBhdGggPSBNYWlsUXVpcmtzVXNlclNjcmlw
dC5qczsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQUI5RkJCQkEwRjg1ODJCMDAwNkFE
QzQzIC8qIFdlYkRPTU9wZXJhdGlvbnNJbnRlcm5hbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBXZWJET01PcGVyYXRpb25zSW50ZXJuYWwuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJQUJEREYyMEMwOEVCMEREQzAwMUUxMjQxIC8qIFdlYkRvd25sb2FkSW50ZXJu
YWwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgaW5k
ZW50V2lkdGggPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0g
V2ViRG93bmxvYWRJbnRlcm5hbC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB0YWJXaWR0aCA9
IDg7IHVzZXNUYWJzID0gMDsgfTsKKwkJQjFBNTA4QzQxMzE0RDI5MjAwNzE4MEJCIC8qIEhUTUxU
cmFja0VsZW1lbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBuYW1lID0gSFRNTFRyYWNr
RWxlbWVudC5oOyBwYXRoID0gLi4vV2ViQ29yZS9odG1sL0hUTUxUcmFja0VsZW1lbnQuaDsgc291
cmNlVHJlZSA9IFNPVVJDRV9ST09UOyB9OworCQlCMUE1MDhDNTEzMTREMjkyMDA3MTgwQkIgLyog
SFRNTFRyYWNrRWxlbWVudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IG5hbWUg
PSBIVE1MVHJhY2tFbGVtZW50LmNwcDsgcGF0aCA9IC4uL1dlYkNvcmUvaHRtbC9IVE1MVHJhY2tF
bGVtZW50LmNwcDsgc291cmNlVHJlZSA9IFNPVVJDRV9ST09UOyB9OwogCQlCNjgwNDk3MTBGRkJD
RUMxMDA5RjdGNjIgLyogV2ViQXBwbGljYXRpb25DYWNoZS5oICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBXZWJBcHBsaWNhdGlvbkNhY2hlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CiAJCUI2ODA0OTcyMEZGQkNFQzEwMDlGN0Y2MiAvKiBXZWJBcHBsaWNhdGlvbkNhY2hl
Lm1tICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAub2JqY3BwOyBwYXRoID0gV2ViQXBwbGljYXRp
b25DYWNoZS5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjgwNDE3NkQxMjE3QTgz
MTAwNDY2QkFFIC8qIFdlYkluc3BlY3RvckZyb250ZW5kLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IFdlYkluc3BlY3RvckZyb250ZW5kLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07CkBAIC04MzAsNiArODM0LDggQEAKIAkJCQkwODY3RDY5QUZFODQwMjhGQzAyQUFDMDcg
LyogRnJhbWV3b3JrcyBhbmQgTGlicmFyaWVzICovLAogCQkJCTAzNDc2OERGRkYzOEE1MDQxMURC
OUM4QiAvKiBQcm9kdWN0cyAqLywKIAkJCQkxQzkwNEZDRTBCQTlEQ0YyMDA4MUU5RDAgLyogQ29u
ZmlndXJhdGlvbnMgKi8sCisJCQkJQjFBNTA4QzQxMzE0RDI5MjAwNzE4MEJCIC8qIEhUTUxUcmFj
a0VsZW1lbnQuaCAqLywKKwkJCQlCMUE1MDhDNTEzMTREMjkyMDA3MTgwQkIgLyogSFRNTFRyYWNr
RWxlbWVudC5jcHAgKi8sCiAJCQkpOwogCQkJbmFtZSA9IFdlYktpdDsKIAkJCXNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7CkBAIC0xNjU1LDYgKzE2NjEsNyBAQAogCQkJCUJDNDJEMzI0MTMxRUQxRTAw
MDc1RkE0QiAvKiBXZWJMb2NhbGl6YWJsZVN0cmluZ3NJbnRlcm5hbC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQjgyOTU4RDMxMzI3MDdEMDAwMEQwRTc5IC8qIENvcnJlY3Rpb25QYW5lbC5oIGluIEhl
YWRlcnMgKi8sCiAJCQkJQTU2ODdCREExMzVCNzkxQTAwNzRDQkNCIC8qIFdlYk5vZGVIaWdobGln
aHRlci5oIGluIEhlYWRlcnMgKi8sCisJCQkJQjFBNTA4QzYxMzE0RDI5MjAwNzE4MEJCIC8qIEhU
TUxUcmFja0VsZW1lbnQuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJCXJ1bk9ubHlGb3JEZXBs
b3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpkaWZmIC0tZ2l0IGEvVG9vbHMvQ2hhbmdl
TG9nIGIvVG9vbHMvQ2hhbmdlTG9nCmluZGV4IDdjY2JhMGY4ZmE1NDZiOTZkOWQyYmI1MTRhYjU3
YzA4MGM0MGMyODkuLjVkYjFjYWY3NTFkOTBlMjI5YzMwYWYzYjkxZTI0YTgzNWJhZDNmMjAgMTAw
NjQ0Ci0tLSBhL1Rvb2xzL0NoYW5nZUxvZworKysgYi9Ub29scy9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwxMiBAQAorMjAxMS0wNS0wNSAgQW5uYSBDYXZlbmRlciAgPGFubmFjY0BjaHJvbWl1bS5vcmc+
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWxsIG1h
am9yIGZlYXR1cmVzIGZvciA8dHJhY2s+IHN1cHBvcnQuICBGb3IgcmVmZXJlbmNlIE9OTFksIE5P
VCBpbnRlbmRlZCBmb3IgZm9ybWFsIHJldmlldyBvciBjb21taXQuCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD02MDMxMgorCisgICAgICAgICogU2NyaXB0
cy9idWlsZC13ZWJraXQ6CisKIDIwMTEtMDUtMDUgIEpvc2VwaCBQZWNvcmFybyAgPGpvZXBlY2tA
d2Via2l0Lm9yZz4KIAogICAgICAgICBSZXZpZXdlZCBieSBEYXZpZCBLaWx6ZXIuCmRpZmYgLS1n
aXQgYS9Ub29scy9TY3JpcHRzL2J1aWxkLXdlYmtpdCBiL1Rvb2xzL1NjcmlwdHMvYnVpbGQtd2Vi
a2l0CmluZGV4IGMyMjI3MmE3NzE3YTNhYTZkYTNiMjdiYzI3NDY3Njk4NzUxYmJkZDUuLjBmYTU4
NTkwNWYyODE5NjUwYWNhYTBhNjkzMzAwNWVhY2EyZTZmYWMgMTAwNzU1Ci0tLSBhL1Rvb2xzL1Nj
cmlwdHMvYnVpbGQtd2Via2l0CisrKyBiL1Rvb2xzL1NjcmlwdHMvYnVpbGQtd2Via2l0CkBAIC0x
MTQsNiArMTE0LDcgQEAgbXkgKAogICAgICR0aWxlZEJhY2tpbmdTdG9yZVN1cHBvcnQsCiAgICAg
JHRvdWNoRXZlbnRzU3VwcG9ydCwKICAgICAkdG91Y2hJY29uTG9hZGluZ1N1cHBvcnQsCisgICAg
JHRyYWNrU3VwcG9ydCwKICAgICAkdmlkZW9TdXBwb3J0LAogICAgICR3Y3NzU3VwcG9ydCwKICAg
ICAkd2ViQXVkaW9TdXBwb3J0LApAQCAtMjc5LDYgKzI4MCw5IEBAIG15IEBmZWF0dXJlcyA9ICgK
IAogICAgIHsgb3B0aW9uID0+ICJ2aWRlbyIsIGRlc2MgPT4gIlRvZ2dsZSBWaWRlbyBzdXBwb3J0
IiwKICAgICAgIGRlZmluZSA9PiAiRU5BQkxFX1ZJREVPIiwgZGVmYXVsdCA9PiAoaXNBcHBsZVdl
YktpdCgpIHx8IGlzR3RrKCkpLCB2YWx1ZSA9PiBcJHZpZGVvU3VwcG9ydCB9LAorICAgICAgCisg
ICAgeyBvcHRpb24gPT4gInZpZGVvLXRyYWNrIiwgZGVzYyA9PiAiVG9nZ2xlIFRyYWNrIHN1cHBv
cnQgZm9yIEhUTUw1IHZpZGVvIiwKKyAgICAgIGRlZmluZSA9PiAiRU5BQkxFX1ZJREVPX1RSQUNL
IiwgZGVmYXVsdCA9PiAoaXNBcHBsZVdlYktpdCgpIHx8IGlzR3RrKCkpLCB2YWx1ZSA9PiBcJHRy
YWNrU3VwcG9ydCB9LAogCiAgICAgeyBvcHRpb24gPT4gIndjc3MiLCBkZXNjID0+ICJUb2dnbGUg
V0NTUyBzdXBwb3J0IiwKICAgICAgIGRlZmluZSA9PiAiRU5BQkxFX1dDU1MiLCBkZWZhdWx0ID0+
IDAsIHZhbHVlID0+IFwkd2Nzc1N1cHBvcnQgfSwK
</data>
<flag name="review"
          id="85478"
          type_id="1"
          status="-"
          setter="annacc"
    />
          </attachment>
      

    </bug>

</bugzilla>