<?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>75332</bug_id>
          
          <creation_ts>2011-12-28 17:00:55 -0800</creation_ts>
          <short_desc>REGRESSION(r103785): Broke builders; looks like clobbering didnt help (Requested by dslomov on #webkit).</short_desc>
          <delta_ts>2011-12-28 17:14:22 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>66509</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="WebKit Review Bot">webkit.review.bot</reporter>
          <assigned_to name="WebKit Review Bot">webkit.review.bot</assigned_to>
          <cc>dslomov</cc>
    
    <cc>fishd</cc>
    
    <cc>levin</cc>
    
    <cc>levin+threading</cc>
    
    <cc>tkent</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>527803</commentid>
    <comment_count>0</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-12-28 17:00:55 -0800</bug_when>
    <thetext>http://trac.webkit.org/changeset/103785 broke the build:
Broke builders; looks like clobbering didnt help (Requested by dslomov on #webkit).

This is an automatic bug report generated by the sheriff-bot. If this bug
report was created because of a flaky test, please file a bug for the flaky
test (if we don&apos;t already have one on file) and dup this bug against that bug
so that we can track how often these flaky tests case pain.

&quot;Only you can prevent forest fires.&quot; -- Smokey the Bear</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>527804</commentid>
    <comment_count>1</comment_count>
      <attachid>120710</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-12-28 17:01:35 -0800</bug_when>
    <thetext>Created attachment 120710
ROLLOUT of r103785

Any committer can land this patch automatically by marking it commit-queue+.  The commit-queue will build and test the patch before landing to ensure that the rollout will be successful.  This process takes approximately 15 minutes.

If you would like to land the rollout faster, you can use the following command:

  webkit-patch land-attachment ATTACHMENT_ID

where ATTACHMENT_ID is the ID of this attachment.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>527805</commentid>
    <comment_count>2</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-12-28 17:10:56 -0800</bug_when>
    <thetext>Attachment 120710 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebKit/chromium/ChangeLog&apos;, u&apos;Sourc...&quot; exit_code: 1

Source/WebKit/chromium/src/WebWorkerImpl.cpp:48:  Alphabetical sorting problem.  [build/include_order] [4]
Source/WebKit/chromium/src/WebWorkerImpl.cpp:52:  Alphabetical sorting problem.  [build/include_order] [4]
Source/WebKit/chromium/src/WebWorkerImpl.cpp:128:  platform_channel is incorrectly named. Don&apos;t use underscores in your identifier names.  [readability/naming] [4]
Source/WebKit/chromium/src/WebSharedWorkerImpl.cpp:45:  Alphabetical sorting problem.  [build/include_order] [4]
Source/WebKit/chromium/src/WebWorkerBase.h:128:  The parameter name &quot;context&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebKit/chromium/src/WebWorkerBase.h:133:  The parameter name &quot;context&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebKit/chromium/src/WebWorkerBase.h:139:  The parameter name &quot;context&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebKit/chromium/src/WebWorkerBase.h:150:  The parameter name &quot;context&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebKit/chromium/src/WebWorkerBase.h:154:  The parameter name &quot;context&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebKit/chromium/src/WebWorkerBase.h:158:  The parameter name &quot;context&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebKit/chromium/src/WebWorkerBase.h:161:  The parameter name &quot;context&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebKit/chromium/src/WebSharedWorkerImpl.h:50:  The parameter name &quot;client&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebKit/chromium/src/WebWorkerImpl.h:45:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
Source/WebKit/chromium/src/WebWorkerImpl.h:46:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
Source/WebKit/chromium/src/WebWorkerImpl.h:51:  The parameter name &quot;client&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebKit/chromium/src/WebWorkerImpl.h:72:  The parameter name &quot;context&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Source/WebKit/chromium/public/WebCommonWorkerClient.h:86:  Should have only a single space after a punctuation in a comment.  [whitespace/comments] [5]
Source/WebKit/chromium/public/WebCommonWorkerClient.h:93:  The parameter name &quot;client&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 18 in 23 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>527806</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-12-28 17:11:14 -0800</bug_when>
    <thetext>Please wait for approval from fishd@chromium.org before submitting because this patch contains changes to the Chromium public API.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>527807</commentid>
    <comment_count>4</comment_count>
      <attachid>120710</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-12-28 17:14:17 -0800</bug_when>
    <thetext>Comment on attachment 120710
ROLLOUT of r103785

Clearing flags on attachment: 120710

Committed r103787: &lt;http://trac.webkit.org/changeset/103787&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>527808</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-12-28 17:14:22 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>120710</attachid>
            <date>2011-12-28 17:01:35 -0800</date>
            <delta_ts>2011-12-28 17:14:17 -0800</delta_ts>
            <desc>ROLLOUT of r103785</desc>
            <filename>bug-75332-20111229010206.patch</filename>
            <type>text/plain</type>
            <size>85113</size>
            <attacher name="WebKit Review Bot">webkit.review.bot</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAzNzg2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4
IDAyYmNjYjkxNjE1MDRiZjBlNTE2YTU0MzdiZDE0MDM4YjA2N2Q2ZDQuLmFhNjNmNzIzNGM4OGUw
MTAwODFiYWI4N2ZlMWEzNjc3YjQxYzUwYTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBA
IC0xLDMgKzEsMTAwIEBACisyMDExLTEyLTI4ICBTaGVyaWZmIEJvdCAgPHdlYmtpdC5yZXZpZXcu
Ym90QGdtYWlsLmNvbT4KKworICAgICAgICBVbnJldmlld2VkLCByb2xsaW5nIG91dCByMTAzNzg1
LgorICAgICAgICBodHRwOi8vdHJhYy53ZWJraXQub3JnL2NoYW5nZXNldC8xMDM3ODUKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTc1MzMyCisKKyAgICAg
ICAgQnJva2UgYnVpbGRlcnM7IGxvb2tzIGxpa2UgY2xvYmJlcmluZyBkaWRudCBoZWxwIChSZXF1
ZXN0ZWQgYnkKKyAgICAgICAgZHNsb21vdiBvbiAjd2Via2l0KS4KKworICAgICAgICAqIFdlYktp
dC5neXA6CisgICAgICAgICogcHVibGljL1dlYkNvbW1vbldvcmtlckNsaWVudC5oOgorICAgICAg
ICAoV2ViS2l0OjpXZWJDb21tb25Xb3JrZXJDbGllbnQ6OnBvc3RDb25zb2xlTWVzc2FnZVRvV29y
a2VyT2JqZWN0KToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29tbW9uV29ya2VyQ2xpZW50OjphbGxv
d0ZpbGVTeXN0ZW0pOgorICAgICAgICAoV2ViS2l0OjpXZWJDb21tb25Xb3JrZXJDbGllbnQ6Om9w
ZW5GaWxlU3lzdGVtKToKKyAgICAgICAgKFdlYktpdDo6V2ViQ29tbW9uV29ya2VyQ2xpZW50Ojpk
aXNwYXRjaERldlRvb2xzTWVzc2FnZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkNvbW1vbldvcmtl
ckNsaWVudDo6c2F2ZURldlRvb2xzQWdlbnRTdGF0ZSk6CisgICAgICAgIChXZWJLaXQ6OldlYkNv
bW1vbldvcmtlckNsaWVudDo6fldlYkNvbW1vbldvcmtlckNsaWVudCk6CisgICAgICAgICogcHVi
bGljL1dlYkZyYW1lQ2xpZW50Lmg6CisgICAgICAgIChXZWJLaXQ6OldlYkZyYW1lQ2xpZW50Ojpj
cmVhdGVXb3JrZXIpOgorICAgICAgICAqIHB1YmxpYy9XZWJTaGFyZWRXb3JrZXIuaDoKKyAgICAg
ICAgKiBwdWJsaWMvV2ViU2hhcmVkV29ya2VyQ2xpZW50Lmg6IFJlbW92ZWQuCisgICAgICAgICog
cHVibGljL1dlYldvcmtlckNsaWVudC5oOgorICAgICAgICAoV2ViS2l0OjpXZWJXb3JrZXJDbGll
bnQ6On5XZWJXb3JrZXJDbGllbnQpOgorICAgICAgICAqIHNyYy9EYXRhYmFzZU9ic2VydmVyLmNw
cDoKKyAgICAgICAgKFdlYktpdDo6QWxsb3dEYXRhYmFzZU1haW5UaHJlYWRCcmlkZ2U6OmNyZWF0
ZSk6CisgICAgICAgIChXZWJLaXQ6OkFsbG93RGF0YWJhc2VNYWluVGhyZWFkQnJpZGdlOjpBbGxv
d0RhdGFiYXNlTWFpblRocmVhZEJyaWRnZSk6CisgICAgICAgIChXZWJLaXQ6OkFsbG93RGF0YWJh
c2VNYWluVGhyZWFkQnJpZGdlOjphbGxvd0RhdGFiYXNlVGFzayk6CisgICAgICAgIChXZWJLaXQ6
OmFsbG93RGF0YWJhc2VGb3JXb3JrZXIpOgorICAgICAgICAoV2ViQ29yZTo6RGF0YWJhc2VPYnNl
cnZlcjo6Y2FuRXN0YWJsaXNoRGF0YWJhc2UpOgorICAgICAgICAqIHNyYy9JREJGYWN0b3J5QmFj
a2VuZFByb3h5LmNwcDoKKyAgICAgICAgKFdlYktpdDo6SURCRmFjdG9yeUJhY2tlbmRQcm94eTo6
b3BlbkZyb21Xb3JrZXIpOgorICAgICAgICAqIHNyYy9Mb2NhbEZpbGVTeXN0ZW1DaHJvbWl1bS5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpvcGVuRmlsZVN5c3RlbUhlbHBlcik6CisgICAgICAgICog
c3JjL1dlYlNoYXJlZFdvcmtlckltcGwuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJTaGFyZWRX
b3JrZXJJbXBsOjpXZWJTaGFyZWRXb3JrZXJJbXBsKToKKyAgICAgICAgKFdlYktpdDo6V2ViU2hh
cmVkV29ya2VySW1wbDo6fldlYlNoYXJlZFdvcmtlckltcGwpOgorICAgICAgICAoV2ViS2l0OjpX
ZWJTaGFyZWRXb3JrZXJJbXBsOjpjbGllbnQpOgorICAgICAgICAoV2ViS2l0OjpXZWJTaGFyZWRX
b3JrZXI6OmNyZWF0ZSk6CisgICAgICAgICogc3JjL1dlYlNoYXJlZFdvcmtlckltcGwuaDoKKyAg
ICAgICAgKFdlYktpdDo6V2ViU2hhcmVkV29ya2VySW1wbDo6Y29tbW9uQ2xpZW50KToKKyAgICAg
ICAgKFdlYktpdDo6V2ViU2hhcmVkV29ya2VySW1wbDo6bmV3Q29tbW9uQ2xpZW50KToKKyAgICAg
ICAgKiBzcmMvV2ViV29ya2VyQmFzZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OmluaXRpYWxpemVX
ZWJLaXRTdGF0aWNWYWx1ZXMpOgorICAgICAgICAoV2ViS2l0OjpXZWJXb3JrZXJCYXNlOjpXZWJX
b3JrZXJCYXNlKToKKyAgICAgICAgKFdlYktpdDo6V2ViV29ya2VyQmFzZTo6fldlYldvcmtlckJh
c2UpOgorICAgICAgICAoV2ViS2l0OjpXZWJXb3JrZXJCYXNlOjpzdG9wV29ya2VyVGhyZWFkKToK
KyAgICAgICAgKFdlYktpdDo6V2ViV29ya2VyQmFzZTo6aW5pdGlhbGl6ZUxvYWRlcik6CisgICAg
ICAgIChXZWJLaXQ6OldlYldvcmtlckJhc2U6OmRpc3BhdGNoVGFza1RvTWFpblRocmVhZCk6Cisg
ICAgICAgIChXZWJLaXQ6OldlYldvcmtlckJhc2U6Omludm9rZVRhc2tNZXRob2QpOgorICAgICAg
ICAoV2ViS2l0OjpXZWJXb3JrZXJCYXNlOjpkaWRDcmVhdGVEYXRhU291cmNlKToKKyAgICAgICAg
KFdlYktpdDo6V2ViV29ya2VyQmFzZTo6Y3JlYXRlQXBwbGljYXRpb25DYWNoZUhvc3QpOgorICAg
ICAgICAoV2ViS2l0OjpXZWJXb3JrZXJCYXNlOjpwb3N0TWVzc2FnZVRvV29ya2VyT2JqZWN0KToK
KyAgICAgICAgKFdlYktpdDo6V2ViV29ya2VyQmFzZTo6cG9zdE1lc3NhZ2VUYXNrKToKKyAgICAg
ICAgKFdlYktpdDo6V2ViV29ya2VyQmFzZTo6cG9zdEV4Y2VwdGlvblRvV29ya2VyT2JqZWN0KToK
KyAgICAgICAgKFdlYktpdDo6V2ViV29ya2VyQmFzZTo6cG9zdEV4Y2VwdGlvblRhc2spOgorICAg
ICAgICAoV2ViS2l0OjpXZWJXb3JrZXJCYXNlOjpwb3N0Q29uc29sZU1lc3NhZ2VUb1dvcmtlck9i
amVjdCk6CisgICAgICAgIChXZWJLaXQ6OldlYldvcmtlckJhc2U6OnBvc3RDb25zb2xlTWVzc2Fn
ZVRhc2spOgorICAgICAgICAoV2ViS2l0OjpXZWJXb3JrZXJCYXNlOjpwb3N0TWVzc2FnZVRvUGFn
ZUluc3BlY3Rvcik6CisgICAgICAgIChXZWJLaXQ6OldlYldvcmtlckJhc2U6OnBvc3RNZXNzYWdl
VG9QYWdlSW5zcGVjdG9yVGFzayk6CisgICAgICAgIChXZWJLaXQ6OldlYldvcmtlckJhc2U6OnVw
ZGF0ZUluc3BlY3RvclN0YXRlQ29va2llKToKKyAgICAgICAgKFdlYktpdDo6V2ViV29ya2VyQmFz
ZTo6dXBkYXRlSW5zcGVjdG9yU3RhdGVDb29raWVUYXNrKToKKyAgICAgICAgKFdlYktpdDo6V2Vi
V29ya2VyQmFzZTo6Y29uZmlybU1lc3NhZ2VGcm9tV29ya2VyT2JqZWN0KToKKyAgICAgICAgKFdl
YktpdDo6V2ViV29ya2VyQmFzZTo6Y29uZmlybU1lc3NhZ2VUYXNrKToKKyAgICAgICAgKFdlYktp
dDo6V2ViV29ya2VyQmFzZTo6cmVwb3J0UGVuZGluZ0FjdGl2aXR5KToKKyAgICAgICAgKFdlYktp
dDo6V2ViV29ya2VyQmFzZTo6cmVwb3J0UGVuZGluZ0FjdGl2aXR5VGFzayk6CisgICAgICAgIChX
ZWJLaXQ6OldlYldvcmtlckJhc2U6OndvcmtlckNvbnRleHRDbG9zZWQpOgorICAgICAgICAoV2Vi
S2l0OjpXZWJXb3JrZXJCYXNlOjp3b3JrZXJDb250ZXh0Q2xvc2VkVGFzayk6CisgICAgICAgIChX
ZWJLaXQ6OldlYldvcmtlckJhc2U6OndvcmtlckNvbnRleHREZXN0cm95ZWQpOgorICAgICAgICAo
V2ViS2l0OjpXZWJXb3JrZXJCYXNlOjp3b3JrZXJDb250ZXh0RGVzdHJveWVkVGFzayk6CisgICAg
ICAgIChXZWJLaXQ6OldlYldvcmtlckJhc2U6OnBvc3RUYXNrVG9Mb2FkZXIpOgorICAgICAgICAo
V2ViS2l0OjpXZWJXb3JrZXJCYXNlOjpwb3N0VGFza0Zvck1vZGVUb1dvcmtlckNvbnRleHQpOgor
ICAgICAgICAqIHNyYy9XZWJXb3JrZXJCYXNlLmg6CisgICAgICAgIChXZWJLaXQ6OldlYldvcmtl
ckJhc2U6OnZpZXcpOgorICAgICAgICAoV2ViS2l0OjpXZWJXb3JrZXJCYXNlOjpzZXRXb3JrZXJU
aHJlYWQpOgorICAgICAgICAoV2ViS2l0OjpXZWJXb3JrZXJCYXNlOjp3b3JrZXJUaHJlYWQpOgor
ICAgICAgICAqIHNyYy9XZWJXb3JrZXJDbGllbnRJbXBsLmNwcDoKKyAgICAgICAgKiBzcmMvV2Vi
V29ya2VyQ2xpZW50SW1wbC5oOgorICAgICAgICAoV2ViS2l0OjpXZWJXb3JrZXJDbGllbnRJbXBs
OjpuZXdDb21tb25DbGllbnQpOgorICAgICAgICAqIHNyYy9XZWJXb3JrZXJJbXBsLmNwcDogQWRk
ZWQuCisgICAgICAgIChXZWJLaXQ6OldlYldvcmtlcjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYktp
dDo6V2ViV29ya2VySW1wbDo6V2ViV29ya2VySW1wbCk6CisgICAgICAgIChXZWJLaXQ6OldlYldv
cmtlckltcGw6On5XZWJXb3JrZXJJbXBsKToKKyAgICAgICAgKFdlYktpdDo6V2ViV29ya2VySW1w
bDo6bmV3Q29tbW9uQ2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViV29ya2VySW1wbDo6Y29t
bW9uQ2xpZW50KToKKyAgICAgICAgKFdlYktpdDo6V2ViV29ya2VySW1wbDo6cG9zdE1lc3NhZ2VU
b1dvcmtlckNvbnRleHRUYXNrKToKKyAgICAgICAgKFdlYktpdDo6V2ViV29ya2VySW1wbDo6c3Rh
cnRXb3JrZXJDb250ZXh0KToKKyAgICAgICAgKFdlYktpdDo6V2ViV29ya2VySW1wbDo6dGVybWlu
YXRlV29ya2VyQ29udGV4dCk6CisgICAgICAgIChXZWJLaXQ6OldlYldvcmtlckltcGw6OnBvc3RN
ZXNzYWdlVG9Xb3JrZXJDb250ZXh0KToKKyAgICAgICAgKFdlYktpdDo6V2ViV29ya2VySW1wbDo6
d29ya2VyT2JqZWN0RGVzdHJveWVkKToKKyAgICAgICAgKFdlYktpdDo6V2ViV29ya2VySW1wbDo6
Y2xpZW50RGVzdHJveWVkKToKKyAgICAgICAgKiBzcmMvV2ViV29ya2VySW1wbC5oOiBDb3BpZWQg
ZnJvbSBTb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJXb3JrZXJCYXNlLmNwcC4KKyAgICAg
ICAgKFdlYktpdDo6V2ViV29ya2VySW1wbDo6Y2xpZW50KToKKyAgICAgICAgKiBzcmMvV29ya2Vy
RmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZS5jcHA6CisgICAgICAgIChXZWJLaXQ6OldvcmtlckZp
bGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2U6OnBvc3RPcGVuRmlsZVN5c3RlbVRvTWFpblRocmVhZCk6
CisgICAgICAgIChXZWJLaXQ6OldvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2U6Om9wZW5G
aWxlU3lzdGVtT25NYWluVGhyZWFkKToKKyAgICAgICAgKiBzcmMvV29ya2VyRmlsZVN5c3RlbUNh
bGxiYWNrc0JyaWRnZS5oOgorCiAyMDExLTEyLTI4ICBEbWl0cnkgTG9tb3YgIDxkc2xvbW92QGdv
b2dsZS5jb20+CiAKICAgICAgICAgW1dlYldvcmtlcnNdW0Nocm9taXVtXSBSZW1vdmUgcmVtYWlu
cyBvZiBjcm9zcy1wcm9jZXNzIGRlZGljYXRlZCB3b3JrZXIgaW1wbGVtZW50YXRpb24uCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL1dlYktpdC5neXAgYi9Tb3VyY2UvV2ViS2l0
L2Nocm9taXVtL1dlYktpdC5neXAKaW5kZXggZDJjMjcwMTFmZTNiY2ZhYzk0NDZiNzhiNTRjZGJm
ODZiYzhlZTczNy4uMmJhNGY0NDA3ZTJmMjAzOWYzNjk4NTllMjY3MWEzMTk0YWUwYjdjMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9XZWJLaXQuZ3lwCisrKyBiL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vV2ViS2l0Lmd5cApAQCAtMjM1LDcgKzIzNSw2IEBACiAgICAgICAgICAg
ICAgICAgJ3B1YmxpYy9XZWJTZWN1cml0eVBvbGljeS5oJywKICAgICAgICAgICAgICAgICAncHVi
bGljL1dlYlNlbGVjdEVsZW1lbnQuaCcsCiAgICAgICAgICAgICAgICAgJ3B1YmxpYy9XZWJTZXR0
aW5ncy5oJywKLSAgICAgICAgICAgICAgICAncHVibGljL1dlYlNoYXJlZFdvcmtlckNsaWVudC5o
JywKICAgICAgICAgICAgICAgICAncHVibGljL1dlYlNoYXJlZFdvcmtlci5oJywKICAgICAgICAg
ICAgICAgICAncHVibGljL1dlYlNoYXJlZFdvcmtlclJlcG9zaXRvcnkuaCcsCiAgICAgICAgICAg
ICAgICAgJ3B1YmxpYy9XZWJTb2NrZXQuaCcsCkBAIC02NjYsNiArNjY1LDggQEAKICAgICAgICAg
ICAgICAgICAnc3JjL1dlYldvcmtlckJhc2UuaCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJX
b3JrZXJDbGllbnRJbXBsLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9XZWJXb3JrZXJDbGll
bnRJbXBsLmgnLAorICAgICAgICAgICAgICAgICdzcmMvV2ViV29ya2VySW1wbC5jcHAnLAorICAg
ICAgICAgICAgICAgICdzcmMvV2ViV29ya2VySW1wbC5oJywKICAgICAgICAgICAgICAgICAnc3Jj
L1dlYldvcmtlclJ1bkxvb3AuY3BwJywKICAgICAgICAgICAgICAgICAnc3JjL1dvcmtlckFzeW5j
RmlsZVN5c3RlbUNocm9taXVtLmNwcCcsCiAgICAgICAgICAgICAgICAgJ3NyYy9Xb3JrZXJBc3lu
Y0ZpbGVTeXN0ZW1DaHJvbWl1bS5oJywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21p
dW0vcHVibGljL1dlYkNvbW1vbldvcmtlckNsaWVudC5oIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS9wdWJsaWMvV2ViQ29tbW9uV29ya2VyQ2xpZW50LmgKaW5kZXggMmZmYjU0ZDU3YTNmMzdiMGNj
MmVmN2M4ZmY2OGZiYWI4ZThiNDMwYy4uYTc5NDUzOWU5MTM4ZmE1YTI5YzQyMzNkY2QwODc5MTFk
ZWNlMWEzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViQ29t
bW9uV29ya2VyQ2xpZW50LmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2Vi
Q29tbW9uV29ya2VyQ2xpZW50LmgKQEAgLTQ0LDcgKzQ0LDcgQEAgY2xhc3MgV2ViU3RyaW5nOwog
Y2xhc3MgV2ViV29ya2VyOwogY2xhc3MgV2ViV29ya2VyQ2xpZW50OwogCi1jbGFzcyBXZWJDb21t
b25Xb3JrZXJDbGllbnQgeworY2xhc3MgTmV3V2ViQ29tbW9uV29ya2VyQ2xpZW50IHsKIHB1Ymxp
YzoKICAgICAvLyBDYWxsZWQgb24gdGhlIG1haW4gd2Via2l0IHRocmVhZCBiZWZvcmUgb3Blbmlu
ZyBhIHdlYiBkYXRhYmFzZS4KICAgICB2aXJ0dWFsIGJvb2wgYWxsb3dEYXRhYmFzZShXZWJGcmFt
ZSosIGNvbnN0IFdlYlN0cmluZyYgbmFtZSwgY29uc3QgV2ViU3RyaW5nJiBkaXNwbGF5TmFtZSwg
dW5zaWduZWQgbG9uZyBlc3RpbWF0ZWRTaXplKSA9IDA7CkBAIC01Niw2ICs1Niw2NiBAQCBwdWJs
aWM6CiAgICAgdmlydHVhbCB2b2lkIG9wZW5GaWxlU3lzdGVtKFdlYkZpbGVTeXN0ZW06OlR5cGUs
IGxvbmcgbG9uZyBzaXplLCBib29sIGNyZWF0ZSwgV2ViRmlsZVN5c3RlbUNhbGxiYWNrcyopID0g
MDsKIH07CiAKKy8vIFByb3ZpZGVzIGFuIGludGVyZmFjZSBiYWNrIHRvIHRoZSBpbi1wYWdlIHNj
cmlwdCBvYmplY3QgZm9yIGEgd29ya2VyLgorLy8gVGhpcyBpbnRlcmZhY2UgY29udGFpbnMgY29t
bW9uIEFQSXMgdXNlZCBieSBib3RoIHNoYXJlZCBhbmQgZGVkaWNhdGVkCisvLyB3b3JrZXJzLgor
Ly8gQWxsIGZ1bmN0aW9ucyBhcmUgZXhwZWN0ZWQgdG8gYmUgY2FsbGVkIGJhY2sgb24gdGhlIHRo
cmVhZCB0aGF0IGNyZWF0ZWQKKy8vIHRoZSBXb3JrZXIgb2JqZWN0LCB1bmxlc3Mgbm90ZWQuCitj
bGFzcyBXZWJDb21tb25Xb3JrZXJDbGllbnQgOiBwdWJsaWMgTmV3V2ViQ29tbW9uV29ya2VyQ2xp
ZW50IHsKK3B1YmxpYzoKKyAgICB2aXJ0dWFsIHZvaWQgcG9zdEV4Y2VwdGlvblRvV29ya2VyT2Jq
ZWN0KAorICAgICAgICBjb25zdCBXZWJTdHJpbmcmIGVycm9yU3RyaW5nLCBpbnQgbGluZU51bWJl
ciwKKyAgICAgICAgY29uc3QgV2ViU3RyaW5nJiBzb3VyY2VVUkwpID0gMDsKKworICAgIC8vIEZJ
WE1FOiB0aGUgYmVsb3cgaXMgZm9yIGNvbXBhdGliaWxpdHkgb25seSBhbmQgc2hvdWxkIGJlICAg
CisgICAgLy8gcmVtb3ZlZCBvbmNlIENocm9taXVtIGlzIHVwZGF0ZWQgdG8gcmVtb3ZlIG1lc3Nh
Z2UKKyAgICAvLyBkZXN0aW5hdGlvbiBwYXJhbWV0ZXIgPGh0dHA6Ly93ZWJraXQub3JnL2IvMzcx
NTU+LgorICAgIHZpcnR1YWwgdm9pZCBwb3N0Q29uc29sZU1lc3NhZ2VUb1dvcmtlck9iamVjdChp
bnQsIGludCBzb3VyY2VJZGVudGlmaWVyLCBpbnQgbWVzc2FnZVR5cGUsIGludCBtZXNzYWdlTGV2
ZWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNv
bnN0IFdlYlN0cmluZyYgbWVzc2FnZSwgaW50IGxpbmVOdW1iZXIsIGNvbnN0IFdlYlN0cmluZyYg
c291cmNlVVJMKSA9IDA7CisKKyAgICB2aXJ0dWFsIHZvaWQgcG9zdENvbnNvbGVNZXNzYWdlVG9X
b3JrZXJPYmplY3QoaW50IHNvdXJjZUlkZW50aWZpZXIsIGludCBtZXNzYWdlVHlwZSwgaW50IG1l
c3NhZ2VMZXZlbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgY29uc3QgV2ViU3RyaW5nJiBtZXNzYWdlLCBpbnQgbGluZU51bWJlciwgY29uc3QgV2Vi
U3RyaW5nJiBzb3VyY2VVUkwpCisgICAgeworICAgICAgICBwb3N0Q29uc29sZU1lc3NhZ2VUb1dv
cmtlck9iamVjdCgwLCBzb3VyY2VJZGVudGlmaWVyLCBtZXNzYWdlVHlwZSwgbWVzc2FnZUxldmVs
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlLCBsaW5l
TnVtYmVyLCBzb3VyY2VVUkwpOworICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCB3b3JrZXJDb250
ZXh0Q2xvc2VkKCkgPSAwOworICAgIHZpcnR1YWwgdm9pZCB3b3JrZXJDb250ZXh0RGVzdHJveWVk
KCkgPSAwOworCisgICAgLy8gUmV0dXJucyB0aGUgbm90aWZpY2F0aW9uIHByZXNlbnRlciBmb3Ig
dGhpcyB3b3JrZXIgY29udGV4dC4gIFBvaW50ZXIKKyAgICAvLyBpcyBvd25lZCBieSB0aGUgb2Jq
ZWN0IGltcGxlbWVudGluZyBXZWJDb21tb25Xb3JrZXJDbGllbnQuCisgICAgdmlydHVhbCBXZWJO
b3RpZmljYXRpb25QcmVzZW50ZXIqIG5vdGlmaWNhdGlvblByZXNlbnRlcigpID0gMDsKKworICAg
IC8vIFRoaXMgY2FuIGJlIGNhbGxlZCBvbiBhbnkgdGhyZWFkIHRvIGNyZWF0ZSBhIG5lc3RlZCBX
ZWJXb3JrZXIuCisgICAgLy8gV2ViU2hhcmVkV29ya2VycyBhcmUgbm90IGluc3RhbnRpYXRlZCB2
aWEgdGhpcyBBUEkgLSBpbnN0ZWFkCisgICAgLy8gdGhleSBhcmUgY3JlYXRlZCB2aWEgdGhlIFdl
YlNoYXJlZFdvcmtlclJlcG9zaXRvcnkuCisgICAgdmlydHVhbCBXZWJXb3JrZXIqIGNyZWF0ZVdv
cmtlcihXZWJXb3JrZXJDbGllbnQqIGNsaWVudCkgPSAwOworCisgICAgLy8gQ2FsbGVkIG9uIHRo
ZSBtYWluIHdlYmtpdCB0aHJlYWQgaW4gdGhlIHdvcmtlciBwcm9jZXNzIGR1cmluZyBpbml0aWFs
aXphdGlvbi4KKyAgICB2aXJ0dWFsIFdlYkFwcGxpY2F0aW9uQ2FjaGVIb3N0KiBjcmVhdGVBcHBs
aWNhdGlvbkNhY2hlSG9zdChXZWJBcHBsaWNhdGlvbkNhY2hlSG9zdENsaWVudCopID0gMDsKKwor
ICAgIC8vIENhbGxlZCBvbiB0aGUgbWFpbiB3ZWJraXQgdGhyZWFkIGJlZm9yZSBvcGVuaW5nIGEg
d2ViIGRhdGFiYXNlLgorICAgIHZpcnR1YWwgYm9vbCBhbGxvd0RhdGFiYXNlKFdlYkZyYW1lKiwg
Y29uc3QgV2ViU3RyaW5nJiBuYW1lLCBjb25zdCBXZWJTdHJpbmcmIGRpc3BsYXlOYW1lLCB1bnNp
Z25lZCBsb25nIGVzdGltYXRlZFNpemUpID0gMDsKKworICAgIC8vIENhbGxlZCBvbiB0aGUgbWFp
biB3ZWJraXQgdGhyZWFkIGJlZm9yZSBvcGVuaW5nIGEgZmlsZSBzeXN0ZW0uCisgICAgdmlydHVh
bCBib29sIGFsbG93RmlsZVN5c3RlbSgpCisgICAgeworICAgICAgICByZXR1cm4gdHJ1ZTsKKyAg
ICB9CisKKyAgICAvLyBDYWxsZWQgb24gdGhlIG1haW4gd2Via2l0IHRocmVhZCBiZWZvcmUgb3Bl
bmluZyBhIGZpbGUgc3lzdGVtLgorICAgIHZpcnR1YWwgdm9pZCBvcGVuRmlsZVN5c3RlbShXZWJG
aWxlU3lzdGVtOjpUeXBlLCBsb25nIGxvbmcgc2l6ZSwgYm9vbCBjcmVhdGUsIFdlYkZpbGVTeXN0
ZW1DYWxsYmFja3MqKQorICAgIHsKKyAgICAgICAgV0VCS0lUX0FTU0VSVF9OT1RfUkVBQ0hFRCgp
OworICAgIH0KKworICAgIHZpcnR1YWwgdm9pZCBkaXNwYXRjaERldlRvb2xzTWVzc2FnZShjb25z
dCBXZWJTdHJpbmcmKSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgc2F2ZURldlRvb2xzQWdlbnRTdGF0
ZShjb25zdCBXZWJTdHJpbmcmKSB7IH0KKworcHJvdGVjdGVkOgorICAgIH5XZWJDb21tb25Xb3Jr
ZXJDbGllbnQoKSB7IH0KK307CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJGcmFtZUNsaWVudC5oIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9wdWJsaWMvV2ViRnJhbWVDbGllbnQuaAppbmRleCAwYmYzMDU3ZmFi
OTNiZDYzZGVhMDhlNDZjNWFmYjJlOWQ0MjVjOGY1Li5iMjEzMjI5OGUxMmUzYjZmMjE0ZWUzMDRj
MzUzY2JmMWU1YjI2NzVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1Ymxp
Yy9XZWJGcmFtZUNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dl
YkZyYW1lQ2xpZW50LmgKQEAgLTY3LDcgKzY3LDcgQEAgY2xhc3MgV2ViVVJMTG9hZGVyOwogY2xh
c3MgV2ViVVJMUmVxdWVzdDsKIGNsYXNzIFdlYlVSTFJlc3BvbnNlOwogY2xhc3MgV2ViV29ya2Vy
OwotY2xhc3MgV2ViU2hhcmVkV29ya2VyQ2xpZW50OworY2xhc3MgV2ViV29ya2VyQ2xpZW50Owog
c3RydWN0IFdlYlBsdWdpblBhcmFtczsKIHN0cnVjdCBXZWJSZWN0Owogc3RydWN0IFdlYlNpemU7
CkBAIC04MSw3ICs4MSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFdlYlBsdWdpbiogY3JlYXRl
UGx1Z2luKFdlYkZyYW1lKiwgY29uc3QgV2ViUGx1Z2luUGFyYW1zJikgeyByZXR1cm4gMDsgfQog
CiAgICAgLy8gTWF5IHJldHVybiBudWxsLgotICAgIHZpcnR1YWwgV2ViV29ya2VyKiBjcmVhdGVX
b3JrZXIoV2ViRnJhbWUqLCBXZWJTaGFyZWRXb3JrZXJDbGllbnQqKSB7IHJldHVybiAwOyB9Cisg
ICAgdmlydHVhbCBXZWJXb3JrZXIqIGNyZWF0ZVdvcmtlcihXZWJGcmFtZSosIFdlYldvcmtlckNs
aWVudCopIHsgcmV0dXJuIDA7IH0KIAogICAgIC8vIE1heSByZXR1cm4gbnVsbC4KICAgICB2aXJ0
dWFsIFdlYlNoYXJlZFdvcmtlciogY3JlYXRlU2hhcmVkV29ya2VyKFdlYkZyYW1lKiwgY29uc3Qg
V2ViVVJMJiwgY29uc3QgV2ViU3RyaW5nJiwgdW5zaWduZWQgbG9uZyBsb25nKSB7IHJldHVybiAw
OyB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJTaGFyZWRX
b3JrZXIuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlNoYXJlZFdvcmtlci5o
CmluZGV4IDQ0N2Y3ZjQ4NjcxMTNlOWJhZTAwOGRmYzEzZjk2MGM3M2VmYjk2OTcuLjdkNWQwMDM1
YTM4YjUwNTdlOWNmYjhhNDk2ZWJhZDIyZWQ2MmJhNzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vcHVibGljL1dlYlNoYXJlZFdvcmtlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vcHVibGljL1dlYlNoYXJlZFdvcmtlci5oCkBAIC00MSw3ICs0MSw3IEBAIG5hbWVz
cGFjZSBXZWJLaXQgewogCiBjbGFzcyBXZWJTdHJpbmc7CiBjbGFzcyBXZWJNZXNzYWdlUG9ydENo
YW5uZWw7Ci1jbGFzcyBXZWJTaGFyZWRXb3JrZXJDbGllbnQ7CitjbGFzcyBXZWJDb21tb25Xb3Jr
ZXJDbGllbnQ7CiBjbGFzcyBXZWJVUkw7CiAKIC8vIFRoaXMgaXMgdGhlIGludGVyZmFjZSB0byBh
IFNoYXJlZFdvcmtlciB0aHJlYWQuCkBAIC00OSw3ICs0OSw3IEBAIGNsYXNzIFdlYlVSTDsKIGNs
YXNzIFdlYlNoYXJlZFdvcmtlciB7CiBwdWJsaWM6CiAgICAgLy8gSW52b2tlZCBmcm9tIHRoZSB3
b3JrZXIgdGhyZWFkIHRvIGluc3RhbnRpYXRlIGEgV2ViU2hhcmVkV29ya2VyIHRoYXQgaW50ZXJh
Y3RzIHdpdGggdGhlIFdlYktpdCB3b3JrZXIgY29tcG9uZW50cy4KLSAgICBXRUJLSVRfRVhQT1JU
IHN0YXRpYyBXZWJTaGFyZWRXb3JrZXIqIGNyZWF0ZShXZWJTaGFyZWRXb3JrZXJDbGllbnQqKTsK
KyAgICBXRUJLSVRfRVhQT1JUIHN0YXRpYyBXZWJTaGFyZWRXb3JrZXIqIGNyZWF0ZShXZWJDb21t
b25Xb3JrZXJDbGllbnQqKTsKIAogICAgIHZpcnR1YWwgfldlYlNoYXJlZFdvcmtlcigpIHt9Owog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJTaGFyZWRXb3Jr
ZXJDbGllbnQuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlNoYXJlZFdvcmtl
ckNsaWVudC5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMTcwMGM2YzFiNzY1ZWYw
ZjM4YTE1NTJhN2UzM2M0ZmYyZGQ3YWQyLi4wMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwCi0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYlNoYXJlZFdv
cmtlckNsaWVudC5oCisrKyAvZGV2L251bGwKQEAgLTEsMTExICswLDAgQEAKLS8qCi0gKiBDb3B5
cmlnaHQgKEMpIDIwMDkgR29vZ2xlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqCi0gKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUKLSAqIG1ldDoKLSAqCi0gKiAgICAgKiBSZWRpc3Ry
aWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAot
ICogbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgotICogICAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVw
cm9kdWNlIHRoZSBhYm92ZQotICogY29weXJpZ2h0IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lcgotICogaW4gdGhlIGRvY3VtZW50YXRp
b24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZQotICogZGlzdHJpYnV0
aW9uLgotICogICAgICogTmVpdGhlciB0aGUgbmFtZSBvZiBHb29nbGUgSW5jLiBub3IgdGhlIG5h
bWVzIG9mIGl0cwotICogY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJv
bW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20KLSAqIHRoaXMgc29mdHdhcmUgd2l0aG91dCBzcGVj
aWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQ
Uk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUwotICogIkFT
IElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QKLSAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUgotICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKLSAqIE9XTkVSIE9SIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLAot
ICogU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVAotICogTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsCi0gKiBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkKLSAqIFRIRU9SWSBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaWZuZGVmIFdlYlNo
YXJlZFdvcmtlckNsaWVudF9oCi0jZGVmaW5lIFdlYlNoYXJlZFdvcmtlckNsaWVudF9oCi0KLSNp
bmNsdWRlICJXZWJDb21tb25Xb3JrZXJDbGllbnQuaCIKLSNpbmNsdWRlICJXZWJNZXNzYWdlUG9y
dENoYW5uZWwuaCIKLQotbmFtZXNwYWNlIFdlYktpdCB7Ci0KLWNsYXNzIFdlYk5vdGlmaWNhdGlv
blByZXNlbnRlcjsKLWNsYXNzIFdlYlN0cmluZzsKLWNsYXNzIFdlYldvcmtlcjsKLQotLy8gUHJv
dmlkZXMgYW4gaW50ZXJmYWNlIGJhY2sgdG8gdGhlIGluLXBhZ2Ugc2NyaXB0IG9iamVjdCBmb3Ig
YSB3b3JrZXIuCi0vLyBBbGwgZnVuY3Rpb25zIGFyZSBleHBlY3RlZCB0byBiZSBjYWxsZWQgYmFj
ayBvbiB0aGUgdGhyZWFkIHRoYXQgY3JlYXRlZAotLy8gdGhlIFdvcmtlciBvYmplY3QsIHVubGVz
cyBub3RlZC4KLWNsYXNzIFdlYlNoYXJlZFdvcmtlckNsaWVudCA6IHB1YmxpYyBXZWJDb21tb25X
b3JrZXJDbGllbnQgewotcHVibGljOgotICAgIHZpcnR1YWwgdm9pZCBwb3N0TWVzc2FnZVRvV29y
a2VyT2JqZWN0KAotICAgICAgICBjb25zdCBXZWJTdHJpbmcmLAotICAgICAgICBjb25zdCBXZWJN
ZXNzYWdlUG9ydENoYW5uZWxBcnJheSYpID0gMDsKLQotICAgIHZpcnR1YWwgdm9pZCBjb25maXJt
TWVzc2FnZUZyb21Xb3JrZXJPYmplY3QoYm9vbCBoYXNQZW5kaW5nQWN0aXZpdHkpID0gMDsKLSAg
ICB2aXJ0dWFsIHZvaWQgcmVwb3J0UGVuZGluZ0FjdGl2aXR5KGJvb2wgaGFzUGVuZGluZ0FjdGl2
aXR5KSA9IDA7Ci0KLSAgICB2aXJ0dWFsIHZvaWQgcG9zdEV4Y2VwdGlvblRvV29ya2VyT2JqZWN0
KAotICAgICAgICBjb25zdCBXZWJTdHJpbmcmIGVycm9yU3RyaW5nLCBpbnQgbGluZU51bWJlciwK
LSAgICAgICAgY29uc3QgV2ViU3RyaW5nJiBzb3VyY2VVUkwpID0gMDsKLQotICAgIC8vIEZJWE1F
OiB0aGUgYmVsb3cgaXMgZm9yIGNvbXBhdGliaWxpdHkgb25seSBhbmQgc2hvdWxkIGJlICAgCi0g
ICAgLy8gcmVtb3ZlZCBvbmNlIENocm9taXVtIGlzIHVwZGF0ZWQgdG8gcmVtb3ZlIG1lc3NhZ2UK
LSAgICAvLyBkZXN0aW5hdGlvbiBwYXJhbWV0ZXIgPGh0dHA6Ly93ZWJraXQub3JnL2IvMzcxNTU+
LgotICAgIHZpcnR1YWwgdm9pZCBwb3N0Q29uc29sZU1lc3NhZ2VUb1dvcmtlck9iamVjdChpbnQs
IGludCBzb3VyY2VJZGVudGlmaWVyLCBpbnQgbWVzc2FnZVR5cGUsIGludCBtZXNzYWdlTGV2ZWws
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0
IFdlYlN0cmluZyYgbWVzc2FnZSwgaW50IGxpbmVOdW1iZXIsIGNvbnN0IFdlYlN0cmluZyYgc291
cmNlVVJMKSA9IDA7Ci0KLSAgICB2aXJ0dWFsIHZvaWQgcG9zdENvbnNvbGVNZXNzYWdlVG9Xb3Jr
ZXJPYmplY3QoaW50IHNvdXJjZUlkZW50aWZpZXIsIGludCBtZXNzYWdlVHlwZSwgaW50IG1lc3Nh
Z2VMZXZlbCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgV2ViU3RyaW5nJiBtZXNzYWdlLCBpbnQgbGluZU51bWJlciwgY29uc3QgV2ViU3Ry
aW5nJiBzb3VyY2VVUkwpCi0gICAgewotICAgICAgICBwb3N0Q29uc29sZU1lc3NhZ2VUb1dvcmtl
ck9iamVjdCgwLCBzb3VyY2VJZGVudGlmaWVyLCBtZXNzYWdlVHlwZSwgbWVzc2FnZUxldmVsLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtZXNzYWdlLCBsaW5lTnVt
YmVyLCBzb3VyY2VVUkwpOwotICAgIH0KLQotICAgIHZpcnR1YWwgdm9pZCB3b3JrZXJDb250ZXh0
Q2xvc2VkKCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCB3b3JrZXJDb250ZXh0RGVzdHJveWVkKCkg
PSAwOwotCi0gICAgLy8gUmV0dXJucyB0aGUgbm90aWZpY2F0aW9uIHByZXNlbnRlciBmb3IgdGhp
cyB3b3JrZXIgY29udGV4dC4gUG9pbnRlcgotICAgIC8vIGlzIG93bmVkIGJ5IHRoZSBvYmplY3Qg
aW1wbGVtZW50aW5nIFdlYkNvbW1vbldvcmtlckNsaWVudC4KLSAgICB2aXJ0dWFsIFdlYk5vdGlm
aWNhdGlvblByZXNlbnRlciogbm90aWZpY2F0aW9uUHJlc2VudGVyKCkgPSAwOwotCi0gICAgLy8g
VGhpcyBjYW4gYmUgY2FsbGVkIG9uIGFueSB0aHJlYWQgdG8gY3JlYXRlIGEgbmVzdGVkIFdlYldv
cmtlci4KLSAgICAvLyBXZWJTaGFyZWRXb3JrZXJzIGFyZSBub3QgaW5zdGFudGlhdGVkIHZpYSB0
aGlzIEFQSSAtIGluc3RlYWQKLSAgICAvLyB0aGV5IGFyZSBjcmVhdGVkIHZpYSB0aGUgV2ViU2hh
cmVkV29ya2VyUmVwb3NpdG9yeS4KLSAgICB2aXJ0dWFsIFdlYldvcmtlciogY3JlYXRlV29ya2Vy
KFdlYlNoYXJlZFdvcmtlckNsaWVudCopID0gMDsKLQotICAgIC8vIENhbGxlZCBvbiB0aGUgbWFp
biB3ZWJraXQgdGhyZWFkIGluIHRoZSB3b3JrZXIgcHJvY2VzcyBkdXJpbmcgaW5pdGlhbGl6YXRp
b24uCi0gICAgdmlydHVhbCBXZWJBcHBsaWNhdGlvbkNhY2hlSG9zdCogY3JlYXRlQXBwbGljYXRp
b25DYWNoZUhvc3QoV2ViQXBwbGljYXRpb25DYWNoZUhvc3RDbGllbnQqKSA9IDA7Ci0KLSAgICAv
LyBDYWxsZWQgb24gdGhlIG1haW4gd2Via2l0IHRocmVhZCBiZWZvcmUgb3BlbmluZyBhIHdlYiBk
YXRhYmFzZS4KLSAgICB2aXJ0dWFsIGJvb2wgYWxsb3dEYXRhYmFzZShXZWJGcmFtZSosIGNvbnN0
IFdlYlN0cmluZyYgbmFtZSwgY29uc3QgV2ViU3RyaW5nJiBkaXNwbGF5TmFtZSwgdW5zaWduZWQg
bG9uZyBlc3RpbWF0ZWRTaXplKSA9IDA7Ci0KLSAgICAvLyBDYWxsZWQgb24gdGhlIG1haW4gd2Vi
a2l0IHRocmVhZCBiZWZvcmUgb3BlbmluZyBhIGZpbGUgc3lzdGVtLgotICAgIHZpcnR1YWwgYm9v
bCBhbGxvd0ZpbGVTeXN0ZW0oKQotICAgIHsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQot
Ci0gICAgLy8gQ2FsbGVkIG9uIHRoZSBtYWluIHdlYmtpdCB0aHJlYWQgYmVmb3JlIG9wZW5pbmcg
YSBmaWxlIHN5c3RlbS4KLSAgICB2aXJ0dWFsIHZvaWQgb3BlbkZpbGVTeXN0ZW0oV2ViRmlsZVN5
c3RlbTo6VHlwZSwgbG9uZyBsb25nIHNpemUsIGJvb2wgY3JlYXRlLCBXZWJGaWxlU3lzdGVtQ2Fs
bGJhY2tzKikKLSAgICB7Ci0gICAgICAgIFdFQktJVF9BU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAg
ICB9Ci0KLSAgICB2aXJ0dWFsIHZvaWQgZGlzcGF0Y2hEZXZUb29sc01lc3NhZ2UoY29uc3QgV2Vi
U3RyaW5nJikgeyB9Ci0gICAgdmlydHVhbCB2b2lkIHNhdmVEZXZUb29sc0FnZW50U3RhdGUoY29u
c3QgV2ViU3RyaW5nJikgeyB9Ci0KLXByb3RlY3RlZDoKLSAgICB+V2ViU2hhcmVkV29ya2VyQ2xp
ZW50KCkgeyB9Ci19OwotCi19IC8vIG5hbWVzcGFjZSBXZWJLaXQKLQotI2VuZGlmCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3B1YmxpYy9XZWJXb3JrZXJDbGllbnQuaCBiL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vcHVibGljL1dlYldvcmtlckNsaWVudC5oCmluZGV4IDU5Njk5
OWRkYzM5MzkzMTk0NDVjOGQ1YjkxZjNlMzc4MjRiZjFmNmUuLmViMmU2M2U1Y2U5MzNmMzMxYmYw
MGEyY2E1NmI4ZjMzNjhkNTQ0MTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
cHVibGljL1dlYldvcmtlckNsaWVudC5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vcHVi
bGljL1dlYldvcmtlckNsaWVudC5oCkBAIC0zMSw4ICszMSwzMSBAQAogI2lmbmRlZiBXZWJXb3Jr
ZXJDbGllbnRfaAogI2RlZmluZSBXZWJXb3JrZXJDbGllbnRfaAogCi0jaW5jbHVkZSAiV2ViU2hh
cmVkV29ya2VyQ2xpZW50LmgiCisjaW5jbHVkZSAiV2ViQ29tbW9uV29ya2VyQ2xpZW50LmgiCisj
aW5jbHVkZSAiV2ViTWVzc2FnZVBvcnRDaGFubmVsLmgiCiAKLSNkZWZpbmUgV2ViV29ya2VyQ2xp
ZW50IFdlYlNoYXJlZFdvcmtlckNsaWVudAorbmFtZXNwYWNlIFdlYktpdCB7CisKK2NsYXNzIFdl
Yk5vdGlmaWNhdGlvblByZXNlbnRlcjsKK2NsYXNzIFdlYlN0cmluZzsKK2NsYXNzIFdlYldvcmtl
cjsKKworLy8gUHJvdmlkZXMgYW4gaW50ZXJmYWNlIGJhY2sgdG8gdGhlIGluLXBhZ2Ugc2NyaXB0
IG9iamVjdCBmb3IgYSB3b3JrZXIuCisvLyBBbGwgZnVuY3Rpb25zIGFyZSBleHBlY3RlZCB0byBi
ZSBjYWxsZWQgYmFjayBvbiB0aGUgdGhyZWFkIHRoYXQgY3JlYXRlZAorLy8gdGhlIFdvcmtlciBv
YmplY3QsIHVubGVzcyBub3RlZC4KK2NsYXNzIFdlYldvcmtlckNsaWVudCA6IHB1YmxpYyBXZWJD
b21tb25Xb3JrZXJDbGllbnQgeworcHVibGljOgorICAgIHZpcnR1YWwgdm9pZCBwb3N0TWVzc2Fn
ZVRvV29ya2VyT2JqZWN0KAorICAgICAgICBjb25zdCBXZWJTdHJpbmcmLAorICAgICAgICBjb25z
dCBXZWJNZXNzYWdlUG9ydENoYW5uZWxBcnJheSYpID0gMDsKKworICAgIHZpcnR1YWwgdm9pZCBj
b25maXJtTWVzc2FnZUZyb21Xb3JrZXJPYmplY3QoYm9vbCBoYXNQZW5kaW5nQWN0aXZpdHkpID0g
MDsKKyAgICB2aXJ0dWFsIHZvaWQgcmVwb3J0UGVuZGluZ0FjdGl2aXR5KGJvb2wgaGFzUGVuZGlu
Z0FjdGl2aXR5KSA9IDA7CisKK3Byb3RlY3RlZDoKKyAgICB+V2ViV29ya2VyQ2xpZW50KCkgeyB9
Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJLaXQKIAogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViS2l0L2Nocm9taXVtL3NyYy9EYXRhYmFzZU9ic2VydmVyLmNwcCBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL0RhdGFiYXNlT2JzZXJ2ZXIuY3BwCmluZGV4IDQwYjUwNDgwMzQxNTI4
YmMzZDBkNzI0MTVmNjlkOTk3NjhmOWIxMTEuLjE4N2I1NWU4MjYxMGU5MTllYzkzYzVmYjgyZDYx
OGU2Y2M1OTg3MzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0RhdGFi
YXNlT2JzZXJ2ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0RhdGFiYXNl
T2JzZXJ2ZXIuY3BwCkBAIC02NCw3ICs2NCw3IEBAIHN0YXRpYyBjb25zdCBjaGFyIGFsbG93RGF0
YWJhc2VNb2RlW10gPSAiYWxsb3dEYXRhYmFzZU1vZGUiOwogLy8gY2FsbCBiYWNrIHRvIHRoZSB3
b3JrZXIgY29udGV4dC4KIGNsYXNzIEFsbG93RGF0YWJhc2VNYWluVGhyZWFkQnJpZGdlIDogcHVi
bGljIFRocmVhZFNhZmVSZWZDb3VudGVkPEFsbG93RGF0YWJhc2VNYWluVGhyZWFkQnJpZGdlPiB7
CiBwdWJsaWM6Ci0gICAgc3RhdGljIFBhc3NSZWZQdHI8QWxsb3dEYXRhYmFzZU1haW5UaHJlYWRC
cmlkZ2U+IGNyZWF0ZShXZWJDb3JlOjpXb3JrZXJMb2FkZXJQcm94eSogd29ya2VyTG9hZGVyUHJv
eHksIGNvbnN0IFN0cmluZyYgbW9kZSwgV2ViQ29tbW9uV29ya2VyQ2xpZW50KiBjb21tb25DbGll
bnQsIFdlYkZyYW1lKiBmcmFtZSwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGRp
c3BsYXlOYW1lLCB1bnNpZ25lZCBsb25nIGVzdGltYXRlZFNpemUpCisgICAgc3RhdGljIFBhc3NS
ZWZQdHI8QWxsb3dEYXRhYmFzZU1haW5UaHJlYWRCcmlkZ2U+IGNyZWF0ZShXZWJDb3JlOjpXb3Jr
ZXJMb2FkZXJQcm94eSogd29ya2VyTG9hZGVyUHJveHksIGNvbnN0IFN0cmluZyYgbW9kZSwgTmV3
V2ViQ29tbW9uV29ya2VyQ2xpZW50KiBjb21tb25DbGllbnQsIFdlYkZyYW1lKiBmcmFtZSwgY29u
c3QgU3RyaW5nJiBuYW1lLCBjb25zdCBTdHJpbmcmIGRpc3BsYXlOYW1lLCB1bnNpZ25lZCBsb25n
IGVzdGltYXRlZFNpemUpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEFsbG93
RGF0YWJhc2VNYWluVGhyZWFkQnJpZGdlKHdvcmtlckxvYWRlclByb3h5LCBtb2RlLCBjb21tb25D
bGllbnQsIGZyYW1lLCBuYW1lLCBkaXNwbGF5TmFtZSwgZXN0aW1hdGVkU2l6ZSkpOwogICAgIH0K
QEAgLTkxLDcgKzkxLDcgQEAgcHVibGljOgogICAgIH0KIAogcHJpdmF0ZToKLSAgICBBbGxvd0Rh
dGFiYXNlTWFpblRocmVhZEJyaWRnZShXZWJDb3JlOjpXb3JrZXJMb2FkZXJQcm94eSogd29ya2Vy
TG9hZGVyUHJveHksIGNvbnN0IFN0cmluZyYgbW9kZSwgV2ViQ29tbW9uV29ya2VyQ2xpZW50KiBj
b21tb25DbGllbnQsIFdlYkZyYW1lKiBmcmFtZSwgY29uc3QgU3RyaW5nJiBuYW1lLCBjb25zdCBT
dHJpbmcmIGRpc3BsYXlOYW1lLCB1bnNpZ25lZCBsb25nIGVzdGltYXRlZFNpemUpCisgICAgQWxs
b3dEYXRhYmFzZU1haW5UaHJlYWRCcmlkZ2UoV2ViQ29yZTo6V29ya2VyTG9hZGVyUHJveHkqIHdv
cmtlckxvYWRlclByb3h5LCBjb25zdCBTdHJpbmcmIG1vZGUsIE5ld1dlYkNvbW1vbldvcmtlckNs
aWVudCogY29tbW9uQ2xpZW50LCBXZWJGcmFtZSogZnJhbWUsIGNvbnN0IFN0cmluZyYgbmFtZSwg
Y29uc3QgU3RyaW5nJiBkaXNwbGF5TmFtZSwgdW5zaWduZWQgbG9uZyBlc3RpbWF0ZWRTaXplKQog
ICAgICAgICA6IG1fd29ya2VyTG9hZGVyUHJveHkod29ya2VyTG9hZGVyUHJveHkpCiAgICAgewog
ICAgICAgICBXZWJXb3JrZXJCYXNlOjpkaXNwYXRjaFRhc2tUb01haW5UaHJlYWQoCkBAIC0xMDEs
NyArMTAxLDcgQEAgcHJpdmF0ZToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlz
KSk7CiAgICAgfQogCi0gICAgc3RhdGljIHZvaWQgYWxsb3dEYXRhYmFzZVRhc2soV2ViQ29yZTo6
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwgY29uc3QgU3RyaW5nIG1vZGUsIFdlYkNv
bW1vbldvcmtlckNsaWVudCogY29tbW9uQ2xpZW50LCBXZWJGcmFtZSogZnJhbWUsIGNvbnN0IFN0
cmluZyBuYW1lLCBjb25zdCBTdHJpbmcgZGlzcGxheU5hbWUsIHVuc2lnbmVkIGxvbmcgZXN0aW1h
dGVkU2l6ZSwgUGFzc1JlZlB0cjxBbGxvd0RhdGFiYXNlTWFpblRocmVhZEJyaWRnZT4gYnJpZGdl
KQorICAgIHN0YXRpYyB2b2lkIGFsbG93RGF0YWJhc2VUYXNrKFdlYkNvcmU6OlNjcmlwdEV4ZWN1
dGlvbkNvbnRleHQqIGNvbnRleHQsIGNvbnN0IFN0cmluZyBtb2RlLCBOZXdXZWJDb21tb25Xb3Jr
ZXJDbGllbnQqIGNvbW1vbkNsaWVudCwgV2ViRnJhbWUqIGZyYW1lLCBjb25zdCBTdHJpbmcgbmFt
ZSwgY29uc3QgU3RyaW5nIGRpc3BsYXlOYW1lLCB1bnNpZ25lZCBsb25nIGVzdGltYXRlZFNpemUs
IFBhc3NSZWZQdHI8QWxsb3dEYXRhYmFzZU1haW5UaHJlYWRCcmlkZ2U+IGJyaWRnZSkKICAgICB7
CiAgICAgICAgIGJvb2wgYWxsb3dEYXRhYmFzZSA9IGNvbW1vbkNsaWVudCA/IGNvbW1vbkNsaWVu
dC0+YWxsb3dEYXRhYmFzZShmcmFtZSwgbmFtZSwgZGlzcGxheU5hbWUsIGVzdGltYXRlZFNpemUp
IDogZmFsc2U7CiAgICAgICAgIGJyaWRnZS0+c2lnbmFsQ29tcGxldGVkKG1vZGUsIGFsbG93RGF0
YWJhc2UpOwpAQCAtMTE3LDcgKzExNyw3IEBAIHByaXZhdGU6CiAgICAgV2ViQ29yZTo6V29ya2Vy
TG9hZGVyUHJveHkqIG1fd29ya2VyTG9hZGVyUHJveHk7CiB9OwogCi1ib29sIGFsbG93RGF0YWJh
c2VGb3JXb3JrZXIoV2ViQ29tbW9uV29ya2VyQ2xpZW50KiBjb21tb25DbGllbnQsIFdlYkZyYW1l
KiBmcmFtZSwgY29uc3QgV2ViU3RyaW5nJiBuYW1lLCBjb25zdCBXZWJTdHJpbmcmIGRpc3BsYXlO
YW1lLCB1bnNpZ25lZCBsb25nIGVzdGltYXRlZFNpemUpCitib29sIGFsbG93RGF0YWJhc2VGb3JX
b3JrZXIoTmV3V2ViQ29tbW9uV29ya2VyQ2xpZW50KiBjb21tb25DbGllbnQsIFdlYkZyYW1lKiBm
cmFtZSwgY29uc3QgV2ViU3RyaW5nJiBuYW1lLCBjb25zdCBXZWJTdHJpbmcmIGRpc3BsYXlOYW1l
LCB1bnNpZ25lZCBsb25nIGVzdGltYXRlZFNpemUpCiB7CiAgICAgV2ViQ29yZTo6V29ya2VyU2Ny
aXB0Q29udHJvbGxlciogY29udHJvbGxlciA9IFdlYkNvcmU6OldvcmtlclNjcmlwdENvbnRyb2xs
ZXI6OmNvbnRyb2xsZXJGb3JDb250ZXh0KCk7CiAgICAgV2ViQ29yZTo6V29ya2VyQ29udGV4dCog
d29ya2VyQ29udGV4dCA9IGNvbnRyb2xsZXItPndvcmtlckNvbnRleHQoKTsKQEAgLTE2NCw4ICsx
NjQsOCBAQCBib29sIERhdGFiYXNlT2JzZXJ2ZXI6OmNhbkVzdGFibGlzaERhdGFiYXNlKFNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqIHNjcmlwdEV4ZWN1dAogI2lmIEVOQUJMRShXT1JLRVJTKQogICAg
ICAgICBXb3JrZXJDb250ZXh0KiB3b3JrZXJDb250ZXh0ID0gc3RhdGljX2Nhc3Q8V29ya2VyQ29u
dGV4dCo+KHNjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOwogICAgICAgICBXb3JrZXJMb2FkZXJQcm94
eSogd29ya2VyTG9hZGVyUHJveHkgPSAmd29ya2VyQ29udGV4dC0+dGhyZWFkKCktPndvcmtlckxv
YWRlclByb3h5KCk7Ci0gICAgICAgIFdlYldvcmtlckJhc2UqIHdlYldvcmtlciA9IHN0YXRpY19j
YXN0PFdlYldvcmtlckJhc2UqPih3b3JrZXJMb2FkZXJQcm94eSk7Ci0gICAgICAgIHJldHVybiBh
bGxvd0RhdGFiYXNlRm9yV29ya2VyKHdlYldvcmtlci0+Y29tbW9uQ2xpZW50KCksIHdlYldvcmtl
ci0+dmlldygpLT5tYWluRnJhbWUoKSwgbmFtZSwgZGlzcGxheU5hbWUsIGVzdGltYXRlZFNpemUp
OworICAgICAgICBOZXdXZWJXb3JrZXJCYXNlKiB3ZWJXb3JrZXIgPSBzdGF0aWNfY2FzdDxOZXdX
ZWJXb3JrZXJCYXNlKj4od29ya2VyTG9hZGVyUHJveHkpOworICAgICAgICByZXR1cm4gYWxsb3dE
YXRhYmFzZUZvcldvcmtlcih3ZWJXb3JrZXItPm5ld0NvbW1vbkNsaWVudCgpLCB3ZWJXb3JrZXIt
PnZpZXcoKS0+bWFpbkZyYW1lKCksIG5hbWUsIGRpc3BsYXlOYW1lLCBlc3RpbWF0ZWRTaXplKTsK
ICNlbHNlCiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogI2VuZGlmCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9JREJGYWN0b3J5QmFja2VuZFByb3h5LmNwcCBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0lEQkZhY3RvcnlCYWNrZW5kUHJveHkuY3BwCmlu
ZGV4IGMyMjMwOWIyYTAyMDFmYWIzMGYzZjA0OGM2NGI4ZDRjN2ZiNDA0YjguLjdhZTZlNjEyMTUw
YmNlYWQ3YjA1ZmNhYmQyZjExOThiY2Q0NmM2NTQgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL0lEQkZhY3RvcnlCYWNrZW5kUHJveHkuY3BwCisrKyBiL1NvdXJjZS9XZWJL
aXQvY2hyb21pdW0vc3JjL0lEQkZhY3RvcnlCYWNrZW5kUHJveHkuY3BwCkBAIC05OSw3ICs5OSw3
IEBAIHZvaWQgSURCRmFjdG9yeUJhY2tlbmRQcm94eTo6b3BlbkZyb21Xb3JrZXIoY29uc3QgU3Ry
aW5nJiBuYW1lLCBJREJDYWxsYmFja3MqIGNhCiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAg
V29ya2VyTG9hZGVyUHJveHkqIHdvcmtlckxvYWRlclByb3h5ID0gJmNvbnRleHQtPnRocmVhZCgp
LT53b3JrZXJMb2FkZXJQcm94eSgpOwotICAgIFdlYldvcmtlckJhc2UqIHdlYldvcmtlciA9IHN0
YXRpY19jYXN0PFdlYldvcmtlckJhc2UqPih3b3JrZXJMb2FkZXJQcm94eSk7CisgICAgTmV3V2Vi
V29ya2VyQmFzZSogd2ViV29ya2VyID0gc3RhdGljX2Nhc3Q8TmV3V2ViV29ya2VyQmFzZSo+KHdv
cmtlckxvYWRlclByb3h5KTsKICAgICBXZWJGcmFtZSogd2ViRnJhbWUgPSB3ZWJXb3JrZXItPnZp
ZXcoKS0+bWFpbkZyYW1lKCk7CiAgICAgbV93ZWJJREJGYWN0b3J5LT5vcGVuKG5hbWUsIG5ldyBX
ZWJJREJDYWxsYmFja3NJbXBsKGNhbGxiYWNrcyksIG9yaWdpbiwgd2ViRnJhbWUsIGRhdGFEaXIp
OwogI2VuZGlmCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Mb2NhbEZp
bGVTeXN0ZW1DaHJvbWl1bS5jcHAgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Mb2NhbEZp
bGVTeXN0ZW1DaHJvbWl1bS5jcHAKaW5kZXggOWUwZTczMDI2YWUzODI1MjZjOWIzNTE2MzhiODBl
ODE2ZjU4MWQwMS4uNzU3ZWY4MjUzZTJmOWZhZDJmNDM1ODkyMTBiYjk4Y2RjNGE0MzMzZSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvTG9jYWxGaWxlU3lzdGVtQ2hyb21p
dW0uY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL0xvY2FsRmlsZVN5c3RlbUNo
cm9taXVtLmNwcApAQCAtNzksNyArNzksNyBAQCBzdGF0aWMgY29uc3QgY2hhciBvcGVuRmlsZVN5
c3RlbU1vZGVbXSA9ICJvcGVuRmlsZVN5c3RlbU1vZGUiOwogLy8gY2FsbCBiYWNrIHRvIHRoZSB3
b3JrZXIgY29udGV4dC4KIGNsYXNzIEFsbG93RmlsZVN5c3RlbU1haW5UaHJlYWRCcmlkZ2UgOiBw
dWJsaWMgVGhyZWFkU2FmZVJlZkNvdW50ZWQ8QWxsb3dGaWxlU3lzdGVtTWFpblRocmVhZEJyaWRn
ZT4gewogcHVibGljOgotICAgIHN0YXRpYyBQYXNzUmVmUHRyPEFsbG93RmlsZVN5c3RlbU1haW5U
aHJlYWRCcmlkZ2U+IGNyZWF0ZShXZWJDb3JlOjpXb3JrZXJMb2FkZXJQcm94eSogd29ya2VyTG9h
ZGVyUHJveHksIGNvbnN0IFdURjo6U3RyaW5nJiBtb2RlLCBXZWJDb21tb25Xb3JrZXJDbGllbnQq
IGNvbW1vbkNsaWVudCkKKyAgICBzdGF0aWMgUGFzc1JlZlB0cjxBbGxvd0ZpbGVTeXN0ZW1NYWlu
VGhyZWFkQnJpZGdlPiBjcmVhdGUoV2ViQ29yZTo6V29ya2VyTG9hZGVyUHJveHkqIHdvcmtlckxv
YWRlclByb3h5LCBjb25zdCBXVEY6OlN0cmluZyYgbW9kZSwgTmV3V2ViQ29tbW9uV29ya2VyQ2xp
ZW50KiBjb21tb25DbGllbnQpCiAgICAgewogICAgICAgICByZXR1cm4gYWRvcHRSZWYobmV3IEFs
bG93RmlsZVN5c3RlbU1haW5UaHJlYWRCcmlkZ2Uod29ya2VyTG9hZGVyUHJveHksIG1vZGUsIGNv
bW1vbkNsaWVudCkpOwogICAgIH0KQEAgLTEwNiw3ICsxMDYsNyBAQCBwdWJsaWM6CiAgICAgfQog
CiBwcml2YXRlOgotICAgIEFsbG93RmlsZVN5c3RlbU1haW5UaHJlYWRCcmlkZ2UoV2ViQ29yZTo6
V29ya2VyTG9hZGVyUHJveHkqIHdvcmtlckxvYWRlclByb3h5LCBjb25zdCBXVEY6OlN0cmluZyYg
bW9kZSwgV2ViQ29tbW9uV29ya2VyQ2xpZW50KiBjb21tb25DbGllbnQpCisgICAgQWxsb3dGaWxl
U3lzdGVtTWFpblRocmVhZEJyaWRnZShXZWJDb3JlOjpXb3JrZXJMb2FkZXJQcm94eSogd29ya2Vy
TG9hZGVyUHJveHksIGNvbnN0IFdURjo6U3RyaW5nJiBtb2RlLCBOZXdXZWJDb21tb25Xb3JrZXJD
bGllbnQqIGNvbW1vbkNsaWVudCkKICAgICAgICAgOiBtX3dvcmtlckxvYWRlclByb3h5KHdvcmtl
ckxvYWRlclByb3h5KQogICAgICAgICAsIG1fbW9kZShtb2RlKQogICAgIHsKQEAgLTExNSw3ICsx
MTUsNyBAQCBwcml2YXRlOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFsbG93Q3Jv
c3NUaHJlYWRBY2Nlc3ModGhpcykpKTsKICAgICB9CiAKLSAgICBzdGF0aWMgdm9pZCBhbGxvd0Zp
bGVTeXN0ZW1UYXNrKFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIFdl
YkNvbW1vbldvcmtlckNsaWVudCogY29tbW9uQ2xpZW50LCBQYXNzUmVmUHRyPEFsbG93RmlsZVN5
c3RlbU1haW5UaHJlYWRCcmlkZ2U+IGJyaWRnZSkKKyAgICBzdGF0aWMgdm9pZCBhbGxvd0ZpbGVT
eXN0ZW1UYXNrKFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsIE5ld1dl
YkNvbW1vbldvcmtlckNsaWVudCogY29tbW9uQ2xpZW50LCBQYXNzUmVmUHRyPEFsbG93RmlsZVN5
c3RlbU1haW5UaHJlYWRCcmlkZ2U+IGJyaWRnZSkKICAgICB7CiAgICAgICAgIGlmIChjb21tb25D
bGllbnQpCiAgICAgICAgICAgICBicmlkZ2UtPnNpZ25hbENvbXBsZXRlZChjb21tb25DbGllbnQt
PmFsbG93RmlsZVN5c3RlbSgpKTsKQEAgLTEzNCw3ICsxMzQsNyBAQCBwcml2YXRlOgogICAgIFdU
Rjo6U3RyaW5nIG1fbW9kZTsKIH07CiAKLWJvb2wgYWxsb3dGaWxlU3lzdGVtRm9yV29ya2VyKFdl
YkNvbW1vbldvcmtlckNsaWVudCogY29tbW9uQ2xpZW50KQorYm9vbCBhbGxvd0ZpbGVTeXN0ZW1G
b3JXb3JrZXIoTmV3V2ViQ29tbW9uV29ya2VyQ2xpZW50KiBjb21tb25DbGllbnQpCiB7CiAgICAg
V29ya2VyU2NyaXB0Q29udHJvbGxlciogY29udHJvbGxlciA9IFdvcmtlclNjcmlwdENvbnRyb2xs
ZXI6OmNvbnRyb2xsZXJGb3JDb250ZXh0KCk7CiAgICAgV29ya2VyQ29udGV4dCogd29ya2VyQ29u
dGV4dCA9IGNvbnRyb2xsZXItPndvcmtlckNvbnRleHQoKTsKQEAgLTE1Nyw3ICsxNTcsNyBAQCBi
b29sIGFsbG93RmlsZVN5c3RlbUZvcldvcmtlcihXZWJDb21tb25Xb3JrZXJDbGllbnQqIGNvbW1v
bkNsaWVudCkKICAgICByZXR1cm4gYnJpZGdlLT5yZXN1bHQoKTsKIH0KIAotdm9pZCBvcGVuRmls
ZVN5c3RlbUZvcldvcmtlcihXZWJDb21tb25Xb3JrZXJDbGllbnQqIGNvbW1vbkNsaWVudCwgV2Vi
RmlsZVN5c3RlbTo6VHlwZSB0eXBlLCBsb25nIGxvbmcgc2l6ZSwgYm9vbCBjcmVhdGUsIFdlYkZp
bGVTeXN0ZW1DYWxsYmFja3MqIGNhbGxiYWNrcywgYm9vbCBzeW5jaHJvbm91cykKK3ZvaWQgb3Bl
bkZpbGVTeXN0ZW1Gb3JXb3JrZXIoTmV3V2ViQ29tbW9uV29ya2VyQ2xpZW50KiBjb21tb25DbGll
bnQsIFdlYkZpbGVTeXN0ZW06OlR5cGUgdHlwZSwgbG9uZyBsb25nIHNpemUsIGJvb2wgY3JlYXRl
LCBXZWJGaWxlU3lzdGVtQ2FsbGJhY2tzKiBjYWxsYmFja3MsIGJvb2wgc3luY2hyb25vdXMpCiB7
CiAgICAgV29ya2VyU2NyaXB0Q29udHJvbGxlciogY29udHJvbGxlciA9IFdvcmtlclNjcmlwdENv
bnRyb2xsZXI6OmNvbnRyb2xsZXJGb3JDb250ZXh0KCk7CiAgICAgV29ya2VyQ29udGV4dCogd29y
a2VyQ29udGV4dCA9IGNvbnRyb2xsZXItPndvcmtlckNvbnRleHQoKTsKQEAgLTIwMywxMSArMjAz
LDExIEBAIHN0YXRpYyB2b2lkIG9wZW5GaWxlU3lzdGVtSGVscGVyKFNjcmlwdEV4ZWN1dGlvbkNv
bnRleHQqIGNvbnRleHQsIEFzeW5jRmlsZVN5c3RlCiAjaWYgRU5BQkxFKFdPUktFUlMpCiAgICAg
ICAgIFdvcmtlckNvbnRleHQqIHdvcmtlckNvbnRleHQgPSBzdGF0aWNfY2FzdDxXb3JrZXJDb250
ZXh0Kj4oY29udGV4dCk7CiAgICAgICAgIFdvcmtlckxvYWRlclByb3h5KiB3b3JrZXJMb2FkZXJQ
cm94eSA9ICZ3b3JrZXJDb250ZXh0LT50aHJlYWQoKS0+d29ya2VyTG9hZGVyUHJveHkoKTsKLSAg
ICAgICAgV2ViV29ya2VyQmFzZSogd2ViV29ya2VyID0gc3RhdGljX2Nhc3Q8V2ViV29ya2VyQmFz
ZSo+KHdvcmtlckxvYWRlclByb3h5KTsKLSAgICAgICAgaWYgKCFhbGxvd0ZpbGVTeXN0ZW1Gb3JX
b3JrZXIod2ViV29ya2VyLT5jb21tb25DbGllbnQoKSkpCisgICAgICAgIE5ld1dlYldvcmtlckJh
c2UqIHdlYldvcmtlciA9IHN0YXRpY19jYXN0PE5ld1dlYldvcmtlckJhc2UqPih3b3JrZXJMb2Fk
ZXJQcm94eSk7CisgICAgICAgIGlmICghYWxsb3dGaWxlU3lzdGVtRm9yV29ya2VyKHdlYldvcmtl
ci0+bmV3Q29tbW9uQ2xpZW50KCkpKQogICAgICAgICAgICAgYWxsb3dlZCA9IGZhbHNlOwogICAg
ICAgICBlbHNlCi0gICAgICAgICAgICBvcGVuRmlsZVN5c3RlbUZvcldvcmtlcih3ZWJXb3JrZXIt
PmNvbW1vbkNsaWVudCgpLCBzdGF0aWNfY2FzdDxXZWJGaWxlU3lzdGVtOjpUeXBlPih0eXBlKSwg
c2l6ZSwgY3JlYXRlID09IENyZWF0ZUlmTm90UHJlc2VudCwgbmV3IFdlYkZpbGVTeXN0ZW1DYWxs
YmFja3NJbXBsKGNhbGxiYWNrcywgdHlwZSwgY29udGV4dCwgc3luY2hyb25vdXMpLCBzeW5jaHJv
bm91cyk7CisgICAgICAgICAgICBvcGVuRmlsZVN5c3RlbUZvcldvcmtlcih3ZWJXb3JrZXItPm5l
d0NvbW1vbkNsaWVudCgpLCBzdGF0aWNfY2FzdDxXZWJGaWxlU3lzdGVtOjpUeXBlPih0eXBlKSwg
c2l6ZSwgY3JlYXRlID09IENyZWF0ZUlmTm90UHJlc2VudCwgbmV3IFdlYkZpbGVTeXN0ZW1DYWxs
YmFja3NJbXBsKGNhbGxiYWNrcywgdHlwZSwgY29udGV4dCwgc3luY2hyb25vdXMpLCBzeW5jaHJv
bm91cyk7CiAKICNlbHNlCiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2hhcmVkV29ya2VySW1wbC5jcHAgYi9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTaGFyZWRXb3JrZXJJbXBsLmNwcAppbmRleCAy
MzFhYWFjMmU1MGM4ZDI2NDE2NDU5NzQ0OGEwNThkODNhYzYxMmVkLi4xNDQ1ZjhlYzk2NzZlYzU3
OWM3NDFlMTFhOWU3OTBkODJhN2Q1Mjc3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJTaGFyZWRXb3JrZXJJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9t
aXVtL3NyYy9XZWJTaGFyZWRXb3JrZXJJbXBsLmNwcApAQCAtMzIsMzAyICszMiwzNiBAQAogI2lu
Y2x1ZGUgIldlYlNoYXJlZFdvcmtlckltcGwuaCIKIAogI2luY2x1ZGUgIkNyb3NzVGhyZWFkVGFz
ay5oIgotI2luY2x1ZGUgIkRhdGFiYXNlVGFzay5oIgotI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAj
aW5jbHVkZSAiS1VSTC5oIgogI2luY2x1ZGUgIk1lc3NhZ2VFdmVudC5oIgogI2luY2x1ZGUgIk1l
c3NhZ2VQb3J0Q2hhbm5lbC5oIgogI2luY2x1ZGUgIlBsYXRmb3JtTWVzc2FnZVBvcnRDaGFubmVs
LmgiCi0jaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRp
b25Db250ZXh0LmgiCiAjaW5jbHVkZSAiU2hhcmVkV29ya2VyQ29udGV4dC5oIgogI2luY2x1ZGUg
IlNoYXJlZFdvcmtlclRocmVhZC5oIgotI2luY2x1ZGUgIldlYkRhdGFTb3VyY2VJbXBsLmgiCi0j
aW5jbHVkZSAiV2ViRmlsZUVycm9yLmgiCi0jaW5jbHVkZSAiV2ViRnJhbWVDbGllbnQuaCIKLSNp
bmNsdWRlICJXZWJGcmFtZUltcGwuaCIKLSNpbmNsdWRlICJXZWJNZXNzYWdlUG9ydENoYW5uZWwu
aCIKLSNpbmNsdWRlICJXZWJSdW50aW1lRmVhdHVyZXMuaCIKLSNpbmNsdWRlICJXZWJTZXR0aW5n
cy5oIgotI2luY2x1ZGUgIldlYlNoYXJlZFdvcmtlckNsaWVudC5oIgotI2luY2x1ZGUgIldlYlZp
ZXcuaCIKLSNpbmNsdWRlICJXb3JrZXJDb250ZXh0LmgiCiAjaW5jbHVkZSAiV29ya2VyRGVidWdn
ZXJBZ2VudC5oIgogI2luY2x1ZGUgIldvcmtlckluc3BlY3RvckNvbnRyb2xsZXIuaCIKLSNpbmNs
dWRlICJXb3JrZXJMb2FkZXJQcm94eS5oIgotI2luY2x1ZGUgIldvcmtlclRocmVhZC5oIgorCisj
aW5jbHVkZSAiV2ViTWVzc2FnZVBvcnRDaGFubmVsLmgiCiAjaW5jbHVkZSAicGxhdGZvcm0vV2Vi
U3RyaW5nLmgiCiAjaW5jbHVkZSAicGxhdGZvcm0vV2ViVVJMLmgiCi0jaW5jbHVkZSA8d3RmL01h
aW5UaHJlYWQuaD4KIAogdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CiAKIG5hbWVzcGFjZSBXZWJL
aXQgewogCiAjaWYgRU5BQkxFKFNIQVJFRF9XT1JLRVJTKQotLy8gVGhpcyBmdW5jdGlvbiBpcyBj
YWxsZWQgb24gdGhlIG1haW4gdGhyZWFkIHRvIGZvcmNlIHRvIGluaXRpYWxpemUgc29tZSBzdGF0
aWMKLS8vIHZhbHVlcyB1c2VkIGluIFdlYktpdCBiZWZvcmUgYW55IHdvcmtlciB0aHJlYWQgaXMg
c3RhcnRlZC4gVGhpcyBpcyBiZWNhdXNlIGluCi0vLyBvdXIgd29ya2VyIHByb2Nlc3NzLCB3ZSBk
byBub3QgcnVuIGFueSBXZWJLaXQgY29kZSBpbiBtYWluIHRocmVhZCBhbmQgdGh1cwotLy8gd2hl
biBtdWx0aXBsZSB3b3JrZXJzIHRyeSB0byBzdGFydCBhdCB0aGUgc2FtZSB0aW1lLCB3ZSBtaWdo
dCBoaXQgY3Jhc2ggZHVlCi0vLyB0byBjb250ZW50aW9uIGZvciBpbml0aWFsaXppbmcgc3RhdGlj
IHZhbHVlcy4KLXN0YXRpYyB2b2lkIGluaXRpYWxpemVXZWJLaXRTdGF0aWNWYWx1ZXMoKQotewot
ICAgIHN0YXRpYyBib29sIGluaXRpYWxpemVkID0gZmFsc2U7Ci0gICAgaWYgKCFpbml0aWFsaXpl
ZCkgewotICAgICAgICBpbml0aWFsaXplZCA9IHRydWU7Ci0gICAgICAgIC8vIE5vdGUgdGhhdCB3
ZSBoYXZlIHRvIHBhc3MgYSBVUkwgd2l0aCB2YWxpZCBwcm90b2NvbCBpbiBvcmRlciB0byBmb2xs
b3cKLSAgICAgICAgLy8gdGhlIHBhdGggdG8gZG8gc3RhdGljIHZhbHVlIGluaXRpYWxpemF0aW9u
cy4KLSAgICAgICAgUmVmUHRyPFNlY3VyaXR5T3JpZ2luPiBvcmlnaW4gPQotICAgICAgICAgICAg
U2VjdXJpdHlPcmlnaW46OmNyZWF0ZShLVVJMKFBhcnNlZFVSTFN0cmluZywgImh0dHA6Ly9sb2Nh
bGhvc3QiKSk7Ci0gICAgICAgIG9yaWdpbi5yZWxlYXNlKCk7Ci0gICAgfQotfQogCi1XZWJTaGFy
ZWRXb3JrZXJJbXBsOjpXZWJTaGFyZWRXb3JrZXJJbXBsKFdlYlNoYXJlZFdvcmtlckNsaWVudCog
Y2xpZW50KQotICAgIDogbV93ZWJWaWV3KDApCi0gICAgLCBtX2Fza2VkVG9UZXJtaW5hdGUoZmFs
c2UpCi0gICAgLCBtX2NsaWVudChjbGllbnQpCitXZWJTaGFyZWRXb3JrZXJJbXBsOjpXZWJTaGFy
ZWRXb3JrZXJJbXBsKFdlYkNvbW1vbldvcmtlckNsaWVudCogY2xpZW50KQorICAgIDogbV9jbGll
bnQoY2xpZW50KQogICAgICwgbV9wYXVzZVdvcmtlckNvbnRleHRPblN0YXJ0KGZhbHNlKQogewot
ICAgIGluaXRpYWxpemVXZWJLaXRTdGF0aWNWYWx1ZXMoKTsKIH0KIAogV2ViU2hhcmVkV29ya2Vy
SW1wbDo6fldlYlNoYXJlZFdvcmtlckltcGwoKQogewotICAgIEFTU0VSVChtX3dlYlZpZXcpOwot
ICAgIFdlYkZyYW1lSW1wbCogd2ViRnJhbWUgPSBzdGF0aWNfY2FzdDxXZWJGcmFtZUltcGwqPiht
X3dlYlZpZXctPm1haW5GcmFtZSgpKTsKLSAgICBpZiAod2ViRnJhbWUpCi0gICAgICAgIHdlYkZy
YW1lLT5zZXRDbGllbnQoMCk7Ci0gICAgbV93ZWJWaWV3LT5jbG9zZSgpOwotfQotCi12b2lkIFdl
YlNoYXJlZFdvcmtlckltcGw6OnN0b3BXb3JrZXJUaHJlYWQoKQotewotICAgIGlmIChtX2Fza2Vk
VG9UZXJtaW5hdGUpCi0gICAgICAgIHJldHVybjsKLSAgICBtX2Fza2VkVG9UZXJtaW5hdGUgPSB0
cnVlOwotICAgIGlmIChtX3dvcmtlclRocmVhZCkKLSAgICAgICAgbV93b3JrZXJUaHJlYWQtPnN0
b3AoKTsKLX0KLQotdm9pZCBXZWJTaGFyZWRXb3JrZXJJbXBsOjppbml0aWFsaXplTG9hZGVyKGNv
bnN0IFdlYlVSTCYgdXJsKQotewotICAgIC8vIENyZWF0ZSAnc2hhZG93IHBhZ2UnLiBUaGlzIHBh
Z2UgaXMgbmV2ZXIgZGlzcGxheWVkLCBpdCBpcyB1c2VkIHRvIHByb3h5IHRoZQotICAgIC8vIGxv
YWRpbmcgcmVxdWVzdHMgZnJvbSB0aGUgd29ya2VyIGNvbnRleHQgdG8gdGhlIHJlc3Qgb2YgV2Vi
S2l0IGFuZCBDaHJvbWl1bQotICAgIC8vIGluZnJhc3RydWN0dXJlLgotICAgIEFTU0VSVCghbV93
ZWJWaWV3KTsKLSAgICBtX3dlYlZpZXcgPSBXZWJWaWV3OjpjcmVhdGUoMCk7Ci0gICAgbV93ZWJW
aWV3LT5zZXR0aW5ncygpLT5zZXRPZmZsaW5lV2ViQXBwbGljYXRpb25DYWNoZUVuYWJsZWQoV2Vi
UnVudGltZUZlYXR1cmVzOjppc0FwcGxpY2F0aW9uQ2FjaGVFbmFibGVkKCkpOwotICAgIC8vIEZJ
WE1FOiBTZXR0aW5ncyBpbmZvcm1hdGlvbiBzaG91bGQgYmUgcGFzc2VkIHRvIHRoZSBXb3JrZXIg
cHJvY2VzcyBmcm9tIEJyb3dzZXIgcHJvY2VzcyB3aGVuIHRoZSB3b3JrZXIKLSAgICAvLyBpcyBj
cmVhdGVkIChzaW1pbGFyIHRvIFJlbmRlclRocmVhZDo6T25DcmVhdGVOZXdWaWV3KS4KLSAgICBt
X3dlYlZpZXctPnNldHRpbmdzKCktPnNldEhpeGllNzZXZWJTb2NrZXRQcm90b2NvbEVuYWJsZWQo
ZmFsc2UpOwotICAgIG1fd2ViVmlldy0+aW5pdGlhbGl6ZU1haW5GcmFtZSh0aGlzKTsKLQotICAg
IFdlYkZyYW1lSW1wbCogd2ViRnJhbWUgPSBzdGF0aWNfY2FzdDxXZWJGcmFtZUltcGwqPihtX3dl
YlZpZXctPm1haW5GcmFtZSgpKTsKLQotICAgIC8vIENvbnN0cnVjdCBzdWJzdGl0dXRlIGRhdGEg
c291cmNlIGZvciB0aGUgJ3NoYWRvdyBwYWdlJy4gV2Ugb25seSBuZWVkIGl0Ci0gICAgLy8gdG8g
aGF2ZSBzYW1lIG9yaWdpbiBhcyB0aGUgd29ya2VyIHNvIHRoZSBsb2FkaW5nIGNoZWNrcyB3b3Jr
IGNvcnJlY3RseS4KLSAgICBDU3RyaW5nIGNvbnRlbnQoIiIpOwotICAgIGludCBsZW4gPSBzdGF0
aWNfY2FzdDxpbnQ+KGNvbnRlbnQubGVuZ3RoKCkpOwotICAgIFJlZlB0cjxTaGFyZWRCdWZmZXI+
IGJ1ZihTaGFyZWRCdWZmZXI6OmNyZWF0ZShjb250ZW50LmRhdGEoKSwgbGVuKSk7Ci0gICAgU3Vi
c3RpdHV0ZURhdGEgc3Vic3REYXRhKGJ1ZiwgU3RyaW5nKCJ0ZXh0L2h0bWwiKSwgU3RyaW5nKCJV
VEYtOCIpLCBLVVJMKCkpOwotICAgIHdlYkZyYW1lLT5mcmFtZSgpLT5sb2FkZXIoKS0+bG9hZChS
ZXNvdXJjZVJlcXVlc3QodXJsKSwgc3Vic3REYXRhLCBmYWxzZSk7Ci0KLSAgICAvLyBUaGlzIGRv
Y3VtZW50IHdpbGwgYmUgdXNlZCBhcyAnbG9hZGluZyBjb250ZXh0JyBmb3IgdGhlIHdvcmtlci4K
LSAgICBtX2xvYWRpbmdEb2N1bWVudCA9IHdlYkZyYW1lLT5mcmFtZSgpLT5kb2N1bWVudCgpOwot
fQotCi12b2lkIFdlYlNoYXJlZFdvcmtlckltcGw6OmRpZENyZWF0ZURhdGFTb3VyY2UoV2ViRnJh
bWUqLCBXZWJEYXRhU291cmNlKiBkcykKLXsKLSAgICAvLyBUZWxsIHRoZSBsb2FkZXIgdG8gbG9h
ZCB0aGUgZGF0YSBpbnRvIHRoZSAnc2hhZG93IHBhZ2UnIHN5bmNocm9ub3VzbHksCi0gICAgLy8g
c28gd2UgY2FuIGdyYWIgdGhlIHJlc3VsdGluZyBEb2N1bWVudCByaWdodCBhZnRlciBsb2FkLgot
ICAgIHN0YXRpY19jYXN0PFdlYkRhdGFTb3VyY2VJbXBsKj4oZHMpLT5zZXREZWZlck1haW5SZXNv
dXJjZURhdGFMb2FkKGZhbHNlKTsKLX0KLQotV2ViQXBwbGljYXRpb25DYWNoZUhvc3QqIFdlYlNo
YXJlZFdvcmtlckltcGw6OmNyZWF0ZUFwcGxpY2F0aW9uQ2FjaGVIb3N0KFdlYkZyYW1lKiwgV2Vi
QXBwbGljYXRpb25DYWNoZUhvc3RDbGllbnQqIGFwcGNhY2hlSG9zdENsaWVudCkKLXsKLSAgICBp
ZiAoY2xpZW50KCkpCi0gICAgICAgIHJldHVybiBjbGllbnQoKS0+Y3JlYXRlQXBwbGljYXRpb25D
YWNoZUhvc3QoYXBwY2FjaGVIb3N0Q2xpZW50KTsKLSAgICByZXR1cm4gMDsKLX0KLQotLy8gV29y
a2VyT2JqZWN0UHJveHkgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0KLQotdm9pZCBXZWJTaGFyZWRXb3JrZXJJbXBsOjpwb3N0TWVzc2Fn
ZVRvV29ya2VyT2JqZWN0KFBhc3NSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBtZXNzYWdl
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBh
c3NPd25QdHI8TWVzc2FnZVBvcnRDaGFubmVsQXJyYXk+IGNoYW5uZWxzKQotewotICAgIFdlYldv
cmtlckJhc2U6OmRpc3BhdGNoVGFza1RvTWFpblRocmVhZChjcmVhdGVDYWxsYmFja1Rhc2soJnBv
c3RNZXNzYWdlVGFzaywgQWxsb3dDcm9zc1RocmVhZEFjY2Vzcyh0aGlzKSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2UtPnRvV2lyZVN0cmlu
ZygpLCBjaGFubmVscykpOwotfQotCi12b2lkIFdlYlNoYXJlZFdvcmtlckltcGw6OnBvc3RNZXNz
YWdlVGFzayhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViU2hhcmVkV29ya2VySW1wbCogdGhpc1B0ciwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFN0cmluZyBtZXNzYWdl
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGFzc093blB0cjxN
ZXNzYWdlUG9ydENoYW5uZWxBcnJheT4gY2hhbm5lbHMpCi17Ci0gICAgaWYgKCF0aGlzUHRyLT5j
bGllbnQoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgV2ViTWVzc2FnZVBvcnRDaGFubmVsQXJy
YXkgd2ViQ2hhbm5lbHMoY2hhbm5lbHMgPyBjaGFubmVscy0+c2l6ZSgpIDogMCk7Ci0gICAgZm9y
IChzaXplX3QgaSA9IDA7IGkgPCB3ZWJDaGFubmVscy5zaXplKCk7ICsraSkgewotICAgICAgICB3
ZWJDaGFubmVsc1tpXSA9ICgqY2hhbm5lbHMpW2ldLT5jaGFubmVsKCktPndlYkNoYW5uZWxSZWxl
YXNlKCk7Ci0gICAgICAgIHdlYkNoYW5uZWxzW2ldLT5zZXRDbGllbnQoMCk7Ci0gICAgfQotCi0g
ICAgdGhpc1B0ci0+Y2xpZW50KCktPnBvc3RNZXNzYWdlVG9Xb3JrZXJPYmplY3QobWVzc2FnZSwg
d2ViQ2hhbm5lbHMpOwotfQotCi12b2lkIFdlYlNoYXJlZFdvcmtlckltcGw6OnBvc3RFeGNlcHRp
b25Ub1dvcmtlck9iamVjdChjb25zdCBTdHJpbmcmIGVycm9yTWVzc2FnZSwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBsaW5lTnVtYmVy
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
Y29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpCi17Ci0gICAgV2ViV29ya2VyQmFzZTo6ZGlzcGF0Y2hU
YXNrVG9NYWluVGhyZWFkKAotICAgICAgICBjcmVhdGVDYWxsYmFja1Rhc2soJnBvc3RFeGNlcHRp
b25UYXNrLCBBbGxvd0Nyb3NzVGhyZWFkQWNjZXNzKHRoaXMpLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgZXJyb3JNZXNzYWdlLCBsaW5lTnVtYmVyLAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgc291cmNlVVJMKSk7Ci19Ci0KLXZvaWQgV2ViU2hhcmVkV29ya2VySW1wbDo6cG9zdEV4
Y2VwdGlvblRhc2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwKLSAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViU2hhcmVkV29ya2VySW1wbCogdGhp
c1B0ciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
U3RyaW5nJiBlcnJvck1lc3NhZ2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGludCBsaW5lTnVtYmVyLCBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCkKLXsKLSAg
ICBpZiAoIXRoaXNQdHItPmNsaWVudCgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICB0aGlzUHRy
LT5jbGllbnQoKS0+cG9zdEV4Y2VwdGlvblRvV29ya2VyT2JqZWN0KGVycm9yTWVzc2FnZSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVOdW1i
ZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz
b3VyY2VVUkwpOwotfQotCi12b2lkIFdlYlNoYXJlZFdvcmtlckltcGw6OnBvc3RDb25zb2xlTWVz
c2FnZVRvV29ya2VyT2JqZWN0KE1lc3NhZ2VTb3VyY2Ugc291cmNlLAotICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNZXNzYWdlVHlwZSB0
eXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBNZXNzYWdlTGV2ZWwgbGV2ZWwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFN0cmluZyYgbWVzc2FnZSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
aW50IGxpbmVOdW1iZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIGNvbnN0IFN0cmluZyYgc291cmNlVVJMKQotewotICAgIFdlYldv
cmtlckJhc2U6OmRpc3BhdGNoVGFza1RvTWFpblRocmVhZChjcmVhdGVDYWxsYmFja1Rhc2soJnBv
c3RDb25zb2xlTWVzc2FnZVRhc2ssIEFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3ModGhpcyksCi0gICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZSwgdHlwZSwgbGV2
ZWwsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2Us
IGxpbmVOdW1iZXIsIHNvdXJjZVVSTCkpOwotfQotCi12b2lkIFdlYlNoYXJlZFdvcmtlckltcGw6
OnBvc3RDb25zb2xlTWVzc2FnZVRhc2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwK
LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJTaGFy
ZWRXb3JrZXJJbXBsKiB0aGlzUHRyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGludCBzb3VyY2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaW50IHR5cGUsIGludCBsZXZlbCwKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBTdHJpbmcmIG1lc3NhZ2Us
Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGxp
bmVOdW1iZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpCi17Ci0gICAgaWYgKCF0aGlzUHRyLT5jbGllbnQo
KSkKLSAgICAgICAgcmV0dXJuOwotICAgIHRoaXNQdHItPmNsaWVudCgpLT5wb3N0Q29uc29sZU1l
c3NhZ2VUb1dvcmtlck9iamVjdChzb3VyY2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGUsIGxldmVsLCBtZXNzYWdlLAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBsaW5lTnVtYmVyLCBzb3VyY2VVUkwpOwotfQotCi12b2lkIFdlYlNoYXJlZFdvcmtlcklt
cGw6OnBvc3RNZXNzYWdlVG9QYWdlSW5zcGVjdG9yKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKLXsK
LSAgICBXZWJXb3JrZXJCYXNlOjpkaXNwYXRjaFRhc2tUb01haW5UaHJlYWQoY3JlYXRlQ2FsbGJh
Y2tUYXNrKCZwb3N0TWVzc2FnZVRvUGFnZUluc3BlY3RvclRhc2ssIEFsbG93Q3Jvc3NUaHJlYWRB
Y2Nlc3ModGhpcyksIG1lc3NhZ2UpKTsKIH0KIAotdm9pZCBXZWJTaGFyZWRXb3JrZXJJbXBsOjpw
b3N0TWVzc2FnZVRvUGFnZUluc3BlY3RvclRhc2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFdl
YlNoYXJlZFdvcmtlckltcGwqIHRoaXNQdHIsIGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKLXsKLSAg
ICBpZiAoIXRoaXNQdHItPmNsaWVudCgpKQotICAgICAgICByZXR1cm47Ci0gICAgdGhpc1B0ci0+
Y2xpZW50KCktPmRpc3BhdGNoRGV2VG9vbHNNZXNzYWdlKG1lc3NhZ2UpOwotfQotCi12b2lkIFdl
YlNoYXJlZFdvcmtlckltcGw6OnVwZGF0ZUluc3BlY3RvclN0YXRlQ29va2llKGNvbnN0IFdURjo6
U3RyaW5nJiBjb29raWUpCi17Ci0gICAgV2ViV29ya2VyQmFzZTo6ZGlzcGF0Y2hUYXNrVG9NYWlu
VGhyZWFkKGNyZWF0ZUNhbGxiYWNrVGFzaygmdXBkYXRlSW5zcGVjdG9yU3RhdGVDb29raWVUYXNr
LCBBbGxvd0Nyb3NzVGhyZWFkQWNjZXNzKHRoaXMpLCBjb29raWUpKTsKLX0KLQotdm9pZCBXZWJT
aGFyZWRXb3JrZXJJbXBsOjp1cGRhdGVJbnNwZWN0b3JTdGF0ZUNvb2tpZVRhc2soU2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCosIFdlYlNoYXJlZFdvcmtlckltcGwqIHRoaXNQdHIsIGNvbnN0IFN0cmlu
ZyYgY29va2llKQotewotICAgIGlmICghdGhpc1B0ci0+Y2xpZW50KCkpCi0gICAgICAgIHJldHVy
bjsKLSAgICB0aGlzUHRyLT5jbGllbnQoKS0+c2F2ZURldlRvb2xzQWdlbnRTdGF0ZShjb29raWUp
OwotfQotCi12b2lkIFdlYlNoYXJlZFdvcmtlckltcGw6OmNvbmZpcm1NZXNzYWdlRnJvbVdvcmtl
ck9iamVjdChib29sIGhhc1BlbmRpbmdBY3Rpdml0eSkKLXsKLSAgICBXZWJXb3JrZXJCYXNlOjpk
aXNwYXRjaFRhc2tUb01haW5UaHJlYWQoY3JlYXRlQ2FsbGJhY2tUYXNrKCZjb25maXJtTWVzc2Fn
ZVRhc2ssIEFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3ModGhpcyksCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGhhc1BlbmRpbmdBY3Rpdml0eSkpOwotfQotCi12b2lk
IFdlYlNoYXJlZFdvcmtlckltcGw6OmNvbmZpcm1NZXNzYWdlVGFzayhTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBjb250ZXh0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgV2ViU2hhcmVkV29ya2VySW1wbCogdGhpc1B0ciwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaGFzUGVuZGluZ0FjdGl2aXR5KQotewotICAg
IGlmICghdGhpc1B0ci0+Y2xpZW50KCkpCi0gICAgICAgIHJldHVybjsKLSAgICB0aGlzUHRyLT5j
bGllbnQoKS0+Y29uZmlybU1lc3NhZ2VGcm9tV29ya2VyT2JqZWN0KGhhc1BlbmRpbmdBY3Rpdml0
eSk7Ci19Ci0KLXZvaWQgV2ViU2hhcmVkV29ya2VySW1wbDo6cmVwb3J0UGVuZGluZ0FjdGl2aXR5
KGJvb2wgaGFzUGVuZGluZ0FjdGl2aXR5KQotewotICAgIFdlYldvcmtlckJhc2U6OmRpc3BhdGNo
VGFza1RvTWFpblRocmVhZChjcmVhdGVDYWxsYmFja1Rhc2soJnJlcG9ydFBlbmRpbmdBY3Rpdml0
eVRhc2ssCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFsbG93
Q3Jvc3NUaHJlYWRBY2Nlc3ModGhpcyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGhhc1BlbmRpbmdBY3Rpdml0eSkpOwotfQotCi12b2lkIFdlYlNoYXJlZFdv
cmtlckltcGw6OnJlcG9ydFBlbmRpbmdBY3Rpdml0eVRhc2soU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCogY29udGV4dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBXZWJTaGFyZWRXb3JrZXJJbXBsKiB0aGlzUHRyLAotICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaGFzUGVuZGluZ0FjdGl2aXR5
KQotewotICAgIGlmICghdGhpc1B0ci0+Y2xpZW50KCkpCi0gICAgICAgIHJldHVybjsKLSAgICB0
aGlzUHRyLT5jbGllbnQoKS0+cmVwb3J0UGVuZGluZ0FjdGl2aXR5KGhhc1BlbmRpbmdBY3Rpdml0
eSk7Ci19Ci0KLXZvaWQgV2ViU2hhcmVkV29ya2VySW1wbDo6d29ya2VyQ29udGV4dENsb3NlZCgp
Ci17Ci0gICAgV2ViV29ya2VyQmFzZTo6ZGlzcGF0Y2hUYXNrVG9NYWluVGhyZWFkKGNyZWF0ZUNh
bGxiYWNrVGFzaygmd29ya2VyQ29udGV4dENsb3NlZFRhc2ssCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgIEFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3ModGhpcykpKTsK
LX0KLQotdm9pZCBXZWJTaGFyZWRXb3JrZXJJbXBsOjp3b3JrZXJDb250ZXh0Q2xvc2VkVGFzayhT
Y3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LAotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJTaGFyZWRXb3JrZXJJbXBsKiB0aGlzUHRyKQot
ewotICAgIGlmICh0aGlzUHRyLT5jbGllbnQoKSkKLSAgICAgICAgdGhpc1B0ci0+Y2xpZW50KCkt
PndvcmtlckNvbnRleHRDbG9zZWQoKTsKLQotICAgIHRoaXNQdHItPnN0b3BXb3JrZXJUaHJlYWQo
KTsKLX0KLQotdm9pZCBXZWJTaGFyZWRXb3JrZXJJbXBsOjp3b3JrZXJDb250ZXh0RGVzdHJveWVk
KCkKLXsKLSAgICBXZWJXb3JrZXJCYXNlOjpkaXNwYXRjaFRhc2tUb01haW5UaHJlYWQoY3JlYXRl
Q2FsbGJhY2tUYXNrKCZ3b3JrZXJDb250ZXh0RGVzdHJveWVkVGFzaywKLSAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFsbG93Q3Jv
c3NUaHJlYWRBY2Nlc3ModGhpcykpKTsKLX0KLQotdm9pZCBXZWJTaGFyZWRXb3JrZXJJbXBsOjp3
b3JrZXJDb250ZXh0RGVzdHJveWVkVGFzayhTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0
LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBX
ZWJTaGFyZWRXb3JrZXJJbXBsKiB0aGlzUHRyKQotewotICAgIGlmICh0aGlzUHRyLT5jbGllbnQo
KSkKLSAgICAgICAgdGhpc1B0ci0+Y2xpZW50KCktPndvcmtlckNvbnRleHREZXN0cm95ZWQoKTsK
LSAgICAvLyBUaGUgbGlmZXRpbWUgb2YgdGhpcyBwcm94eSBpcyBjb250cm9sbGVkIGJ5IHRoZSB3
b3JrZXIgY29udGV4dC4KLSAgICBkZWxldGUgdGhpc1B0cjsKLX0KLQotLy8gV29ya2VyTG9hZGVy
UHJveHkgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0KLQotdm9pZCBXZWJTaGFyZWRXb3JrZXJJbXBsOjpwb3N0VGFza1RvTG9hZGVyKFBh
c3NPd25QdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFzaz4gdGFzaykKLXsKLSAgICBBU1NF
UlQobV9sb2FkaW5nRG9jdW1lbnQtPmlzRG9jdW1lbnQoKSk7Ci0gICAgbV9sb2FkaW5nRG9jdW1l
bnQtPnBvc3RUYXNrKHRhc2spOwotfQotCi12b2lkIFdlYlNoYXJlZFdvcmtlckltcGw6OnBvc3RU
YXNrRm9yTW9kZVRvV29ya2VyQ29udGV4dCgKLSAgICBQYXNzT3duUHRyPFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQ6OlRhc2s+IHRhc2ssIGNvbnN0IFN0cmluZyYgbW9kZSkKLXsKLSAgICBtX3dvcmtl
clRocmVhZC0+cnVuTG9vcCgpLnBvc3RUYXNrRm9yTW9kZSh0YXNrLCBtb2RlKTsKLX0KLQotCi0K
IGJvb2wgV2ViU2hhcmVkV29ya2VySW1wbDo6aXNTdGFydGVkKCkKIHsKICAgICAvLyBTaG91bGQg
bm90IGV2ZXIgYmUgY2FsbGVkIGZyb20gdGhlIHdvcmtlciB0aHJlYWQgKHRoaXMgQVBJIGlzIG9u
bHkgY2FsbGVkIG9uIFdlYlNoYXJlZFdvcmtlclByb3h5IG9uIHRoZSByZW5kZXJlciB0aHJlYWQp
LgpAQCAtNDQzLDEwICsxNzcsMTkgQEAgdm9pZCBXZWJTaGFyZWRXb3JrZXJJbXBsOjpkaXNwYXRj
aERldlRvb2xzTWVzc2FnZShjb25zdCBXZWJTdHJpbmcmIG1lc3NhZ2UpCiAgICAgd29ya2VyVGhy
ZWFkKCktPnJ1bkxvb3AoKS5wb3N0VGFza0Zvck1vZGUoY3JlYXRlQ2FsbGJhY2tUYXNrKGRpc3Bh
dGNoT25JbnNwZWN0b3JCYWNrZW5kVGFzaywgU3RyaW5nKG1lc3NhZ2UpKSwgV29ya2VyRGVidWdn
ZXJBZ2VudDo6ZGVidWdnZXJUYXNrTW9kZSk7CiB9CiAKLVdlYlNoYXJlZFdvcmtlciogV2ViU2hh
cmVkV29ya2VyOjpjcmVhdGUoV2ViU2hhcmVkV29ya2VyQ2xpZW50KiBjbGllbnQpCitXZWJXb3Jr
ZXJDbGllbnQqIFdlYlNoYXJlZFdvcmtlckltcGw6OmNsaWVudCgpCit7CisgICAgLy8gV2Ugc2hv
dWxkIG5ldmVyIGJlIGFza2VkIGZvciBhIFdlYldvcmtlckNsaWVudCAob25seSBkZWRpY2F0ZWQg
d29ya2VycyBoYXZlIGFuIGFzc29jaWF0ZWQgV2ViV29ya2VyQ2xpZW50KS4KKyAgICAvLyBJdCBz
aG91bGQgbm90IGJlIHBvc3NpYmxlIGZvciBTaGFyZWRXb3JrZXJDb250ZXh0IHRvIGdlbmVyYXRl
IGFuIEFQSSBjYWxsIG91dHNpZGUgdGhvc2Ugc3VwcG9ydGVkIGJ5IFdlYkNvbW1vbldvcmtlckNs
aWVudC4KKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4gMDsKK30KKworV2Vi
U2hhcmVkV29ya2VyKiBXZWJTaGFyZWRXb3JrZXI6OmNyZWF0ZShXZWJDb21tb25Xb3JrZXJDbGll
bnQqIGNsaWVudCkKIHsKICAgICByZXR1cm4gbmV3IFdlYlNoYXJlZFdvcmtlckltcGwoY2xpZW50
KTsKIH0KKwogI2VuZGlmIC8vIEVOQUJMRShTSEFSRURfV09SS0VSUykKIAogfSAvLyBuYW1lc3Bh
Y2UgV2ViS2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTaGFy
ZWRXb3JrZXJJbXBsLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJTaGFyZWRXb3Jr
ZXJJbXBsLmgKaW5kZXggODNkMzYxYWVlMmFhMGIzMzE4NmU0MTBjOTRmM2I4YTdiYjMwOTMzMC4u
NDM3YmIyYmM3ZmZiMzZkZDZlY2EwNDNjOGE3MzgwOGNhZGNiNzY2MCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViU2hhcmVkV29ya2VySW1wbC5oCisrKyBiL1NvdXJj
ZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYlNoYXJlZFdvcmtlckltcGwuaApAQCAtMzQsNjQgKzM0
LDIwIEBACiAjaW5jbHVkZSAiV2ViU2hhcmVkV29ya2VyLmgiCiAKICNpZiBFTkFCTEUoU0hBUkVE
X1dPUktFUlMpCisKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0LmgiCi0jaW5jbHVk
ZSAiV2ViQ29tbW9uV29ya2VyQ2xpZW50LmgiCi0jaW5jbHVkZSAiV2ViRnJhbWVDbGllbnQuaCIK
LSNpbmNsdWRlICJXZWJXb3JrZXJCYXNlLmgiCi0jaW5jbHVkZSAiV2ViV29ya2VyQ2xpZW50Lmgi
Ci0jaW5jbHVkZSAiV29ya2VyTG9hZGVyUHJveHkuaCIKLSNpbmNsdWRlICJXb3JrZXJPYmplY3RQ
cm94eS5oIgotI2luY2x1ZGUgIldvcmtlclRocmVhZC5oIgotI2luY2x1ZGUgPHd0Zi9QYXNzT3du
UHRyLmg+Ci0jaW5jbHVkZSA8d3RmL1JlZlB0ci5oPgogCisjaW5jbHVkZSAiV2ViV29ya2VyQmFz
ZS5oIgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKLWNsYXNzIFdlYkFwcGxpY2F0aW9uQ2FjaGVIb3N0
OwotY2xhc3MgV2ViQXBwbGljYXRpb25DYWNoZUhvc3RDbGllbnQ7Ci1jbGFzcyBXZWJXb3JrZXJD
bGllbnQ7Ci1jbGFzcyBXZWJTZWN1cml0eU9yaWdpbjsKLWNsYXNzIFdlYlN0cmluZzsKLWNsYXNz
IFdlYlVSTDsKLWNsYXNzIFdlYlZpZXc7Ci1jbGFzcyBXZWJXb3JrZXI7Ci1jbGFzcyBXZWJTaGFy
ZWRXb3JrZXJDbGllbnQ7CisKIC8vIFRoaXMgY2xhc3MgaXMgdXNlZCBieSB0aGUgd29ya2VyIHBy
b2Nlc3MgY29kZSB0byB0YWxrIHRvIHRoZSBXZWJDb3JlOjpTaGFyZWRXb3JrZXIgaW1wbGVtZW50
YXRpb24uCiAvLyBJdCBjYW4ndCB1c2UgaXQgZGlyZWN0bHkgc2luY2UgaXQgdXNlcyBXZWJLaXQg
dHlwZXMsIHNvIHRoaXMgY2xhc3MgY29udmVydHMgdGhlIGRhdGEgdHlwZXMuCiAvLyBXaGVuIHRo
ZSBXZWJDb3JlOjpTaGFyZWRXb3JrZXIgb2JqZWN0IHdhbnRzIHRvIGNhbGwgV2ViQ29yZTo6V29y
a2VyUmVwb3J0aW5nUHJveHksIHRoaXMgY2xhc3Mgd2lsbAogLy8gY29udmVydCB0byBDaHJvbWUg
ZGF0YSB0eXBlcyBmaXJzdCBhbmQgdGhlbiBjYWxsIHRoZSBzdXBwbGllZCBXZWJDb21tb25Xb3Jr
ZXJDbGllbnQuCi1jbGFzcyBXZWJTaGFyZWRXb3JrZXJJbXBsIDogcHVibGljIFdlYkNvcmU6Oldv
cmtlck9iamVjdFByb3h5Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICwgcHVibGljIFdlYldv
cmtlckJhc2UKLSAgICAgICAgICAgICAgICAgICAgICAgICAgLCBwdWJsaWMgV2ViRnJhbWVDbGll
bnQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgLCBwdWJsaWMgV2ViU2hhcmVkV29ya2VyIHsK
K2NsYXNzIFdlYlNoYXJlZFdvcmtlckltcGwgOiBwdWJsaWMgV2ViV29ya2VyQmFzZSwgcHVibGlj
IFdlYlNoYXJlZFdvcmtlciB7CiBwdWJsaWM6Ci0gICAgZXhwbGljaXQgV2ViU2hhcmVkV29ya2Vy
SW1wbChXZWJTaGFyZWRXb3JrZXJDbGllbnQqKTsKLQotICAgIHZpcnR1YWwgdm9pZCBwb3N0TWVz
c2FnZVRvV29ya2VyT2JqZWN0KAotICAgICAgICBQYXNzUmVmUHRyPFdlYkNvcmU6OlNlcmlhbGl6
ZWRTY3JpcHRWYWx1ZT4sCi0gICAgICAgIFBhc3NPd25QdHI8V2ViQ29yZTo6TWVzc2FnZVBvcnRD
aGFubmVsQXJyYXk+KTsKLSAgICB2aXJ0dWFsIHZvaWQgcG9zdEV4Y2VwdGlvblRvV29ya2VyT2Jq
ZWN0KAotICAgICAgICBjb25zdCBXVEY6OlN0cmluZyYsIGludCwgY29uc3QgV1RGOjpTdHJpbmcm
KTsKLSAgICB2aXJ0dWFsIHZvaWQgcG9zdENvbnNvbGVNZXNzYWdlVG9Xb3JrZXJPYmplY3QoCi0g
ICAgICAgIFdlYkNvcmU6Ok1lc3NhZ2VTb3VyY2UsIFdlYkNvcmU6Ok1lc3NhZ2VUeXBlLAotICAg
ICAgICBXZWJDb3JlOjpNZXNzYWdlTGV2ZWwsIGNvbnN0IFdURjo6U3RyaW5nJiwgaW50LCBjb25z
dCBXVEY6OlN0cmluZyYpOwotICAgIHZpcnR1YWwgdm9pZCBwb3N0TWVzc2FnZVRvUGFnZUluc3Bl
Y3Rvcihjb25zdCBXVEY6OlN0cmluZyYpOwotICAgIHZpcnR1YWwgdm9pZCB1cGRhdGVJbnNwZWN0
b3JTdGF0ZUNvb2tpZShjb25zdCBXVEY6OlN0cmluZyYpOwotICAgIHZpcnR1YWwgdm9pZCBjb25m
aXJtTWVzc2FnZUZyb21Xb3JrZXJPYmplY3QoYm9vbCk7Ci0gICAgdmlydHVhbCB2b2lkIHJlcG9y
dFBlbmRpbmdBY3Rpdml0eShib29sKTsKLSAgICB2aXJ0dWFsIHZvaWQgd29ya2VyQ29udGV4dENs
b3NlZCgpOwotICAgIHZpcnR1YWwgdm9pZCB3b3JrZXJDb250ZXh0RGVzdHJveWVkKCk7Ci0gICAg
dmlydHVhbCBXZWJWaWV3KiB2aWV3KCkgY29uc3QgeyByZXR1cm4gbV93ZWJWaWV3OyB9Ci0KLSAg
ICAvLyBXZWJDb3JlOjpXb3JrZXJMb2FkZXJQcm94eSBtZXRob2RzOgotICAgIHZpcnR1YWwgdm9p
ZCBwb3N0VGFza1RvTG9hZGVyKFBhc3NPd25QdHI8V2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29u
dGV4dDo6VGFzaz4pOwotICAgIHZpcnR1YWwgdm9pZCBwb3N0VGFza0Zvck1vZGVUb1dvcmtlckNv
bnRleHQoCi0gICAgICAgIFBhc3NPd25QdHI8V2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4
dDo6VGFzaz4sIGNvbnN0IFdURjo6U3RyaW5nJiBtb2RlKTsKLQotICAgIC8vIFdlYkZyYW1lQ2xp
ZW50IG1ldGhvZHMgdG8gc3VwcG9ydCByZXNvdXJjZSBsb2FkaW5nIHRocnUgdGhlICdzaGFkb3cg
cGFnZScuCi0gICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZURhdGFTb3VyY2UoV2ViRnJhbWUqLCBX
ZWJEYXRhU291cmNlKik7Ci0gICAgdmlydHVhbCBXZWJBcHBsaWNhdGlvbkNhY2hlSG9zdCogY3Jl
YXRlQXBwbGljYXRpb25DYWNoZUhvc3QoV2ViRnJhbWUqLCBXZWJBcHBsaWNhdGlvbkNhY2hlSG9z
dENsaWVudCopOwotCisgICAgZXhwbGljaXQgV2ViU2hhcmVkV29ya2VySW1wbChXZWJDb21tb25X
b3JrZXJDbGllbnQqIGNsaWVudCk7CiAKICAgICAvLyBXZWJTaGFyZWRXb3JrZXIgbWV0aG9kczoK
ICAgICB2aXJ0dWFsIGJvb2wgaXNTdGFydGVkKCk7CkBAIC0xMDcsNzIgKzYzLDE5IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIHZvaWQgZGV0YWNoRGV2VG9vbHMoKTsKICAgICB2aXJ0dWFsIHZvaWQg
ZGlzcGF0Y2hEZXZUb29sc01lc3NhZ2UoY29uc3QgV2ViU3RyaW5nJik7CiAKKyAgICAvLyBXZWJX
b3JrZXJCYXNlIG1ldGhvZHM6CisgICAgV2ViV29ya2VyQ2xpZW50KiBjbGllbnQoKTsKKyAgICBX
ZWJDb21tb25Xb3JrZXJDbGllbnQqIGNvbW1vbkNsaWVudCgpIHsgcmV0dXJuIG1fY2xpZW50OyB9
CiAKICAgICAvLyBOZXdXZWJXb3JrZXJCYXNlIG1ldGhvZHM6Ci0gICAgV2ViQ29tbW9uV29ya2Vy
Q2xpZW50KiBjb21tb25DbGllbnQoKSB7IHJldHVybiBtX2NsaWVudDsgfQorICAgIE5ld1dlYkNv
bW1vbldvcmtlckNsaWVudCogbmV3Q29tbW9uQ2xpZW50KCkgeyByZXR1cm4gbV9jbGllbnQ7IH0K
IAogcHJpdmF0ZToKICAgICB2aXJ0dWFsIH5XZWJTaGFyZWRXb3JrZXJJbXBsKCk7CiAKLSAgICBX
ZWJTaGFyZWRXb3JrZXJDbGllbnQqIGNsaWVudCgpIHsgcmV0dXJuIG1fY2xpZW50OyB9Ci0KLSAg
ICB2b2lkIHNldFdvcmtlclRocmVhZChQYXNzUmVmUHRyPFdlYkNvcmU6OldvcmtlclRocmVhZD4g
dGhyZWFkKSB7IG1fd29ya2VyVGhyZWFkID0gdGhyZWFkOyB9Ci0gICAgV2ViQ29yZTo6V29ya2Vy
VGhyZWFkKiB3b3JrZXJUaHJlYWQoKSB7IHJldHVybiBtX3dvcmtlclRocmVhZC5nZXQoKTsgfQot
Ci0gICAgLy8gU2h1dHMgZG93biB0aGUgd29ya2VyIHRocmVhZC4KLSAgICB2b2lkIHN0b3BXb3Jr
ZXJUaHJlYWQoKTsKLQotICAgIC8vIENyZWF0ZXMgdGhlIHNoYWRvdyBsb2FkZXIgdXNlZCBmb3Ig
d29ya2VyIG5ldHdvcmsgcmVxdWVzdHMuCi0gICAgdm9pZCBpbml0aWFsaXplTG9hZGVyKGNvbnN0
IFdlYlVSTCYpOwotCi0KICAgICBzdGF0aWMgdm9pZCBjb25uZWN0VGFzayhXZWJDb3JlOjpTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiwgUGFzc093blB0cjxXZWJDb3JlOjpNZXNzYWdlUG9ydENoYW5u
ZWw+KTsKLSAgICAvLyBUYXNrcyB0aGF0IGFyZSBydW4gb24gdGhlIG1haW4gdGhyZWFkLgotICAg
IHN0YXRpYyB2b2lkIHBvc3RNZXNzYWdlVGFzaygKLSAgICAgICAgV2ViQ29yZTo6U2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCosCi0gICAgICAgIFdlYlNoYXJlZFdvcmtlckltcGwqIHRoaXNQdHIsCi0g
ICAgICAgIFdURjo6U3RyaW5nIG1lc3NhZ2UsCi0gICAgICAgIFBhc3NPd25QdHI8V2ViQ29yZTo6
TWVzc2FnZVBvcnRDaGFubmVsQXJyYXk+IGNoYW5uZWxzKTsKLSAgICBzdGF0aWMgdm9pZCBwb3N0
RXhjZXB0aW9uVGFzaygKLSAgICAgICAgV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dCos
Ci0gICAgICAgIFdlYlNoYXJlZFdvcmtlckltcGwqIHRoaXNQdHIsCi0gICAgICAgIGNvbnN0IFdU
Rjo6U3RyaW5nJiBtZXNzYWdlLAotICAgICAgICBpbnQgbGluZU51bWJlciwKLSAgICAgICAgY29u
c3QgV1RGOjpTdHJpbmcmIHNvdXJjZVVSTCk7Ci0gICAgc3RhdGljIHZvaWQgcG9zdENvbnNvbGVN
ZXNzYWdlVGFzaygKLSAgICAgICAgV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dCosCi0g
ICAgICAgIFdlYlNoYXJlZFdvcmtlckltcGwqIHRoaXNQdHIsCi0gICAgICAgIGludCBzb3VyY2Us
Ci0gICAgICAgIGludCB0eXBlLAotICAgICAgICBpbnQgbGV2ZWwsCi0gICAgICAgIGNvbnN0IFdU
Rjo6U3RyaW5nJiBtZXNzYWdlLAotICAgICAgICBpbnQgbGluZU51bWJlciwKLSAgICAgICAgY29u
c3QgV1RGOjpTdHJpbmcmIHNvdXJjZVVSTCk7Ci0gICAgc3RhdGljIHZvaWQgcG9zdE1lc3NhZ2VU
b1BhZ2VJbnNwZWN0b3JUYXNrKFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBXZWJT
aGFyZWRXb3JrZXJJbXBsKiwgY29uc3QgV1RGOjpTdHJpbmcmKTsKLSAgICBzdGF0aWMgdm9pZCB1
cGRhdGVJbnNwZWN0b3JTdGF0ZUNvb2tpZVRhc2soV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCosIFdlYlNoYXJlZFdvcmtlckltcGwqIHRoaXNQdHIsIGNvbnN0IFdURjo6U3RyaW5nJiBj
b29raWUpOwotICAgIHN0YXRpYyB2b2lkIGNvbmZpcm1NZXNzYWdlVGFzaygKLSAgICAgICAgV2Vi
Q29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dCosCi0gICAgICAgIFdlYlNoYXJlZFdvcmtlcklt
cGwqIHRoaXNQdHIsCi0gICAgICAgIGJvb2wgaGFzUGVuZGluZ0FjdGl2aXR5KTsKLSAgICBzdGF0
aWMgdm9pZCByZXBvcnRQZW5kaW5nQWN0aXZpdHlUYXNrKAotICAgICAgICBXZWJDb3JlOjpTY3Jp
cHRFeGVjdXRpb25Db250ZXh0KiwKLSAgICAgICAgV2ViU2hhcmVkV29ya2VySW1wbCogdGhpc1B0
ciwKLSAgICAgICAgYm9vbCBoYXNQZW5kaW5nQWN0aXZpdHkpOwotICAgIHN0YXRpYyB2b2lkIHdv
cmtlckNvbnRleHRDbG9zZWRUYXNrKAotICAgICAgICBXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiwKLSAgICAgICAgV2ViU2hhcmVkV29ya2VySW1wbCogdGhpc1B0cik7Ci0gICAgc3Rh
dGljIHZvaWQgd29ya2VyQ29udGV4dERlc3Ryb3llZFRhc2soCi0gICAgICAgIFdlYkNvcmU6OlNj
cmlwdEV4ZWN1dGlvbkNvbnRleHQqLAotICAgICAgICBXZWJTaGFyZWRXb3JrZXJJbXBsKiB0aGlz
UHRyKTsKLQotICAgIC8vICdzaGFkb3cgcGFnZScgLSBjcmVhdGVkIHRvIHByb3h5IGxvYWRpbmcg
cmVxdWVzdHMgZnJvbSB0aGUgd29ya2VyLgotICAgIFJlZlB0cjxXZWJDb3JlOjpTY3JpcHRFeGVj
dXRpb25Db250ZXh0PiBtX2xvYWRpbmdEb2N1bWVudDsKLSAgICBXZWJWaWV3KiBtX3dlYlZpZXc7
Ci0gICAgYm9vbCBtX2Fza2VkVG9UZXJtaW5hdGU7Ci0KLSAgICBSZWZQdHI8V2ViQ29yZTo6V29y
a2VyVGhyZWFkPiBtX3dvcmtlclRocmVhZDsKLQotICAgIFdlYlNoYXJlZFdvcmtlckNsaWVudCog
bV9jbGllbnQ7CisKKyAgICBXZWJDb21tb25Xb3JrZXJDbGllbnQqIG1fY2xpZW50OwogICAgIGJv
b2wgbV9wYXVzZVdvcmtlckNvbnRleHRPblN0YXJ0OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViV29ya2VyQmFzZS5jcHAgYi9Tb3VyY2UvV2ViS2l0L2No
cm9taXVtL3NyYy9XZWJXb3JrZXJCYXNlLmNwcAppbmRleCBiMTJkYjdkODM0Mzg3MGM2ZGVkM2E3
NzQ2NzI0ZTk1Y2UzNmJmNGNlLi45M2Y4NDBjODM0N2JiMzA3YjA3Njc3NmNmNjE3OTA1Mjg5NTIw
ODU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJXb3JrZXJCYXNl
LmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJXb3JrZXJCYXNlLmNwcApA
QCAtMzIsNyArMzIsMjAgQEAKICNpbmNsdWRlICJXZWJXb3JrZXJCYXNlLmgiCiAKICNpbmNsdWRl
ICJDcm9zc1RocmVhZFRhc2suaCIKKyNpbmNsdWRlICJEYXRhYmFzZVRhc2suaCIKKyNpbmNsdWRl
ICJEb2N1bWVudC5oIgorI2luY2x1ZGUgIk1lc3NhZ2VQb3J0Q2hhbm5lbC5oIgorI2luY2x1ZGUg
IlBsYXRmb3JtTWVzc2FnZVBvcnRDaGFubmVsLmgiCisjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4u
aCIKIAorI2luY2x1ZGUgIldlYkRhdGFTb3VyY2VJbXBsLmgiCisjaW5jbHVkZSAiV2ViRmlsZUVy
cm9yLmgiCisjaW5jbHVkZSAiV2ViRnJhbWVDbGllbnQuaCIKKyNpbmNsdWRlICJXZWJGcmFtZUlt
cGwuaCIKKyNpbmNsdWRlICJXZWJNZXNzYWdlUG9ydENoYW5uZWwuaCIKKyNpbmNsdWRlICJXZWJS
dW50aW1lRmVhdHVyZXMuaCIKKyNpbmNsdWRlICJXZWJTZXR0aW5ncy5oIgorI2luY2x1ZGUgIldl
YlZpZXcuaCIKICNpbmNsdWRlICJXZWJXb3JrZXJDbGllbnQuaCIKIAogI2luY2x1ZGUgIldvcmtl
ckNvbnRleHQuaCIKQEAgLTQ2LDcgKzU5LDgyIEBAIG5hbWVzcGFjZSBXZWJLaXQgewogCiAjaWYg
RU5BQkxFKFdPUktFUlMpCiAKLXN0YXRpYyB2b2lkIGludm9rZVRhc2tNZXRob2Qodm9pZCogcGFy
YW0pCisvLyBUaGlzIGZ1bmN0aW9uIGlzIGNhbGxlZCBvbiB0aGUgbWFpbiB0aHJlYWQgdG8gZm9y
Y2UgdG8gaW5pdGlhbGl6ZSBzb21lIHN0YXRpYworLy8gdmFsdWVzIHVzZWQgaW4gV2ViS2l0IGJl
Zm9yZSBhbnkgd29ya2VyIHRocmVhZCBpcyBzdGFydGVkLiBUaGlzIGlzIGJlY2F1c2UgaW4KKy8v
IG91ciB3b3JrZXIgcHJvY2Vzc3MsIHdlIGRvIG5vdCBydW4gYW55IFdlYktpdCBjb2RlIGluIG1h
aW4gdGhyZWFkIGFuZCB0aHVzCisvLyB3aGVuIG11bHRpcGxlIHdvcmtlcnMgdHJ5IHRvIHN0YXJ0
IGF0IHRoZSBzYW1lIHRpbWUsIHdlIG1pZ2h0IGhpdCBjcmFzaCBkdWUKKy8vIHRvIGNvbnRlbnRp
b24gZm9yIGluaXRpYWxpemluZyBzdGF0aWMgdmFsdWVzLgorc3RhdGljIHZvaWQgaW5pdGlhbGl6
ZVdlYktpdFN0YXRpY1ZhbHVlcygpCit7CisgICAgc3RhdGljIGJvb2wgaW5pdGlhbGl6ZWQgPSBm
YWxzZTsKKyAgICBpZiAoIWluaXRpYWxpemVkKSB7CisgICAgICAgIGluaXRpYWxpemVkID0gdHJ1
ZTsKKyAgICAgICAgLy8gTm90ZSB0aGF0IHdlIGhhdmUgdG8gcGFzcyBhIFVSTCB3aXRoIHZhbGlk
IHByb3RvY29sIGluIG9yZGVyIHRvIGZvbGxvdworICAgICAgICAvLyB0aGUgcGF0aCB0byBkbyBz
dGF0aWMgdmFsdWUgaW5pdGlhbGl6YXRpb25zLgorICAgICAgICBSZWZQdHI8U2VjdXJpdHlPcmln
aW4+IG9yaWdpbiA9CisgICAgICAgICAgICBTZWN1cml0eU9yaWdpbjo6Y3JlYXRlKEtVUkwoUGFy
c2VkVVJMU3RyaW5nLCAiaHR0cDovL2xvY2FsaG9zdCIpKTsKKyAgICAgICAgb3JpZ2luLnJlbGVh
c2UoKTsKKyAgICB9Cit9CisKK1dlYldvcmtlckJhc2U6OldlYldvcmtlckJhc2UoKQorICAgIDog
bV93ZWJWaWV3KDApCisgICAgLCBtX2Fza2VkVG9UZXJtaW5hdGUoZmFsc2UpCit7CisgICAgaW5p
dGlhbGl6ZVdlYktpdFN0YXRpY1ZhbHVlcygpOworfQorCitXZWJXb3JrZXJCYXNlOjp+V2ViV29y
a2VyQmFzZSgpCit7CisgICAgQVNTRVJUKG1fd2ViVmlldyk7CisgICAgV2ViRnJhbWVJbXBsKiB3
ZWJGcmFtZSA9IHN0YXRpY19jYXN0PFdlYkZyYW1lSW1wbCo+KG1fd2ViVmlldy0+bWFpbkZyYW1l
KCkpOworICAgIGlmICh3ZWJGcmFtZSkKKyAgICAgICAgd2ViRnJhbWUtPnNldENsaWVudCgwKTsK
KyAgICBtX3dlYlZpZXctPmNsb3NlKCk7Cit9CisKK3ZvaWQgV2ViV29ya2VyQmFzZTo6c3RvcFdv
cmtlclRocmVhZCgpCit7CisgICAgaWYgKG1fYXNrZWRUb1Rlcm1pbmF0ZSkKKyAgICAgICAgcmV0
dXJuOworICAgIG1fYXNrZWRUb1Rlcm1pbmF0ZSA9IHRydWU7CisgICAgaWYgKG1fd29ya2VyVGhy
ZWFkKQorICAgICAgICBtX3dvcmtlclRocmVhZC0+c3RvcCgpOworfQorCit2b2lkIFdlYldvcmtl
ckJhc2U6OmluaXRpYWxpemVMb2FkZXIoY29uc3QgV2ViVVJMJiB1cmwpCit7CisgICAgLy8gQ3Jl
YXRlICdzaGFkb3cgcGFnZScuIFRoaXMgcGFnZSBpcyBuZXZlciBkaXNwbGF5ZWQsIGl0IGlzIHVz
ZWQgdG8gcHJveHkgdGhlCisgICAgLy8gbG9hZGluZyByZXF1ZXN0cyBmcm9tIHRoZSB3b3JrZXIg
Y29udGV4dCB0byB0aGUgcmVzdCBvZiBXZWJLaXQgYW5kIENocm9taXVtCisgICAgLy8gaW5mcmFz
dHJ1Y3R1cmUuCisgICAgQVNTRVJUKCFtX3dlYlZpZXcpOworICAgIG1fd2ViVmlldyA9IFdlYlZp
ZXc6OmNyZWF0ZSgwKTsKKyAgICBtX3dlYlZpZXctPnNldHRpbmdzKCktPnNldE9mZmxpbmVXZWJB
cHBsaWNhdGlvbkNhY2hlRW5hYmxlZChXZWJSdW50aW1lRmVhdHVyZXM6OmlzQXBwbGljYXRpb25D
YWNoZUVuYWJsZWQoKSk7CisgICAgLy8gRklYTUU6IFNldHRpbmdzIGluZm9ybWF0aW9uIHNob3Vs
ZCBiZSBwYXNzZWQgdG8gdGhlIFdvcmtlciBwcm9jZXNzIGZyb20gQnJvd3NlciBwcm9jZXNzIHdo
ZW4gdGhlIHdvcmtlcgorICAgIC8vIGlzIGNyZWF0ZWQgKHNpbWlsYXIgdG8gUmVuZGVyVGhyZWFk
OjpPbkNyZWF0ZU5ld1ZpZXcpLgorICAgIG1fd2ViVmlldy0+c2V0dGluZ3MoKS0+c2V0SGl4aWU3
NldlYlNvY2tldFByb3RvY29sRW5hYmxlZChmYWxzZSk7CisgICAgbV93ZWJWaWV3LT5pbml0aWFs
aXplTWFpbkZyYW1lKHRoaXMpOworCisgICAgV2ViRnJhbWVJbXBsKiB3ZWJGcmFtZSA9IHN0YXRp
Y19jYXN0PFdlYkZyYW1lSW1wbCo+KG1fd2ViVmlldy0+bWFpbkZyYW1lKCkpOworCisgICAgLy8g
Q29uc3RydWN0IHN1YnN0aXR1dGUgZGF0YSBzb3VyY2UgZm9yIHRoZSAnc2hhZG93IHBhZ2UnLiBX
ZSBvbmx5IG5lZWQgaXQKKyAgICAvLyB0byBoYXZlIHNhbWUgb3JpZ2luIGFzIHRoZSB3b3JrZXIg
c28gdGhlIGxvYWRpbmcgY2hlY2tzIHdvcmsgY29ycmVjdGx5LgorICAgIENTdHJpbmcgY29udGVu
dCgiIik7CisgICAgaW50IGxlbiA9IHN0YXRpY19jYXN0PGludD4oY29udGVudC5sZW5ndGgoKSk7
CisgICAgUmVmUHRyPFNoYXJlZEJ1ZmZlcj4gYnVmKFNoYXJlZEJ1ZmZlcjo6Y3JlYXRlKGNvbnRl
bnQuZGF0YSgpLCBsZW4pKTsKKyAgICBTdWJzdGl0dXRlRGF0YSBzdWJzdERhdGEoYnVmLCBTdHJp
bmcoInRleHQvaHRtbCIpLCBTdHJpbmcoIlVURi04IiksIEtVUkwoKSk7CisgICAgd2ViRnJhbWUt
PmZyYW1lKCktPmxvYWRlcigpLT5sb2FkKFJlc291cmNlUmVxdWVzdCh1cmwpLCBzdWJzdERhdGEs
IGZhbHNlKTsKKworICAgIC8vIFRoaXMgZG9jdW1lbnQgd2lsbCBiZSB1c2VkIGFzICdsb2FkaW5n
IGNvbnRleHQnIGZvciB0aGUgd29ya2VyLgorICAgIG1fbG9hZGluZ0RvY3VtZW50ID0gd2ViRnJh
bWUtPmZyYW1lKCktPmRvY3VtZW50KCk7Cit9CisKK3ZvaWQgV2ViV29ya2VyQmFzZTo6ZGlzcGF0
Y2hUYXNrVG9NYWluVGhyZWFkKFBhc3NPd25QdHI8U2NyaXB0RXhlY3V0aW9uQ29udGV4dDo6VGFz
az4gdGFzaykKK3sKKyAgICBjYWxsT25NYWluVGhyZWFkKGludm9rZVRhc2tNZXRob2QsIHRhc2su
bGVha1B0cigpKTsKK30KKwordm9pZCBXZWJXb3JrZXJCYXNlOjppbnZva2VUYXNrTWV0aG9kKHZv
aWQqIHBhcmFtKQogewogICAgIFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2sqIHRhc2sgPQog
ICAgICAgICBzdGF0aWNfY2FzdDxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrKj4ocGFyYW0p
OwpAQCAtNTQsMTAgKzE0MiwxOTMgQEAgc3RhdGljIHZvaWQgaW52b2tlVGFza01ldGhvZCh2b2lk
KiBwYXJhbSkKICAgICBkZWxldGUgdGFzazsKIH0KIAordm9pZCBXZWJXb3JrZXJCYXNlOjpkaWRD
cmVhdGVEYXRhU291cmNlKFdlYkZyYW1lKiwgV2ViRGF0YVNvdXJjZSogZHMpCit7CisgICAgLy8g
VGVsbCB0aGUgbG9hZGVyIHRvIGxvYWQgdGhlIGRhdGEgaW50byB0aGUgJ3NoYWRvdyBwYWdlJyBz
eW5jaHJvbm91c2x5LAorICAgIC8vIHNvIHdlIGNhbiBncmFiIHRoZSByZXN1bHRpbmcgRG9jdW1l
bnQgcmlnaHQgYWZ0ZXIgbG9hZC4KKyAgICBzdGF0aWNfY2FzdDxXZWJEYXRhU291cmNlSW1wbCo+
KGRzKS0+c2V0RGVmZXJNYWluUmVzb3VyY2VEYXRhTG9hZChmYWxzZSk7Cit9CiAKLXZvaWQgV2Vi
V29ya2VyQmFzZTo6ZGlzcGF0Y2hUYXNrVG9NYWluVGhyZWFkKFBhc3NPd25QdHI8U2NyaXB0RXhl
Y3V0aW9uQ29udGV4dDo6VGFzaz4gdGFzaykKK1dlYkFwcGxpY2F0aW9uQ2FjaGVIb3N0KiBXZWJX
b3JrZXJCYXNlOjpjcmVhdGVBcHBsaWNhdGlvbkNhY2hlSG9zdChXZWJGcmFtZSosIFdlYkFwcGxp
Y2F0aW9uQ2FjaGVIb3N0Q2xpZW50KiBhcHBjYWNoZUhvc3RDbGllbnQpCiB7Ci0gICAgY2FsbE9u
TWFpblRocmVhZChpbnZva2VUYXNrTWV0aG9kLCB0YXNrLmxlYWtQdHIoKSk7CisgICAgaWYgKGNv
bW1vbkNsaWVudCgpKQorICAgICAgICByZXR1cm4gY29tbW9uQ2xpZW50KCktPmNyZWF0ZUFwcGxp
Y2F0aW9uQ2FjaGVIb3N0KGFwcGNhY2hlSG9zdENsaWVudCk7CisgICAgcmV0dXJuIDA7Cit9CisK
Ky8vIFdvcmtlck9iamVjdFByb3h5IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK3ZvaWQgV2ViV29ya2VyQmFzZTo6cG9zdE1lc3Nh
Z2VUb1dvcmtlck9iamVjdChQYXNzUmVmUHRyPFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZT4gbWVzc2Fn
ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQYXNzT3du
UHRyPE1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5PiBjaGFubmVscykKK3sKKyAgICBkaXNwYXRjaFRh
c2tUb01haW5UaHJlYWQoY3JlYXRlQ2FsbGJhY2tUYXNrKCZwb3N0TWVzc2FnZVRhc2ssIEFsbG93
Q3Jvc3NUaHJlYWRBY2Nlc3ModGhpcyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBtZXNzYWdlLT50b1dpcmVTdHJpbmcoKSwgY2hhbm5lbHMpKTsKK30K
Kwordm9pZCBXZWJXb3JrZXJCYXNlOjpwb3N0TWVzc2FnZVRhc2soU2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCogY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYldv
cmtlckJhc2UqIHRoaXNQdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBT
dHJpbmcgbWVzc2FnZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBhc3NP
d25QdHI8TWVzc2FnZVBvcnRDaGFubmVsQXJyYXk+IGNoYW5uZWxzKQoreworICAgIGlmICghdGhp
c1B0ci0+Y2xpZW50KCkpCisgICAgICAgIHJldHVybjsKKworICAgIFdlYk1lc3NhZ2VQb3J0Q2hh
bm5lbEFycmF5IHdlYkNoYW5uZWxzKGNoYW5uZWxzID8gY2hhbm5lbHMtPnNpemUoKSA6IDApOwor
ICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgd2ViQ2hhbm5lbHMuc2l6ZSgpOyArK2kpIHsKKyAg
ICAgICAgd2ViQ2hhbm5lbHNbaV0gPSAoKmNoYW5uZWxzKVtpXS0+Y2hhbm5lbCgpLT53ZWJDaGFu
bmVsUmVsZWFzZSgpOworICAgICAgICB3ZWJDaGFubmVsc1tpXS0+c2V0Q2xpZW50KDApOworICAg
IH0KKworICAgIHRoaXNQdHItPmNsaWVudCgpLT5wb3N0TWVzc2FnZVRvV29ya2VyT2JqZWN0KG1l
c3NhZ2UsIHdlYkNoYW5uZWxzKTsKK30KKwordm9pZCBXZWJXb3JrZXJCYXNlOjpwb3N0RXhjZXB0
aW9uVG9Xb3JrZXJPYmplY3QoY29uc3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UsCisgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgbGluZU51bWJlciwKKyAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IFN0cmlu
ZyYgc291cmNlVVJMKQoreworICAgIGRpc3BhdGNoVGFza1RvTWFpblRocmVhZCgKKyAgICAgICAg
Y3JlYXRlQ2FsbGJhY2tUYXNrKCZwb3N0RXhjZXB0aW9uVGFzaywgQWxsb3dDcm9zc1RocmVhZEFj
Y2Vzcyh0aGlzKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yTWVzc2FnZSwgbGlu
ZU51bWJlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZVVSTCkpOworfQorCit2
b2lkIFdlYldvcmtlckJhc2U6OnBvc3RFeGNlcHRpb25UYXNrKFNjcmlwdEV4ZWN1dGlvbkNvbnRl
eHQqIGNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYldv
cmtlckJhc2UqIHRoaXNQdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
IGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBpbnQgbGluZU51bWJlciwgY29uc3QgU3RyaW5nJiBzb3VyY2VVUkwpCit7Cisg
ICAgaWYgKCF0aGlzUHRyLT5jb21tb25DbGllbnQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAg
dGhpc1B0ci0+Y29tbW9uQ2xpZW50KCktPnBvc3RFeGNlcHRpb25Ub1dvcmtlck9iamVjdChlcnJv
ck1lc3NhZ2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBsaW5lTnVtYmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgc291cmNlVVJMKTsKK30KKwordm9pZCBXZWJXb3JrZXJC
YXNlOjpwb3N0Q29uc29sZU1lc3NhZ2VUb1dvcmtlck9iamVjdChNZXNzYWdlU291cmNlIHNvdXJj
ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
TWVzc2FnZVR5cGUgdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgTWVzc2FnZUxldmVsIGxldmVsLAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBTdHJpbmcmIG1lc3NhZ2UsCisg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBs
aW5lTnVtYmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBjb25zdCBTdHJpbmcmIHNvdXJjZVVSTCkKK3sKKyAgICBkaXNwYXRjaFRhc2tUb01h
aW5UaHJlYWQoY3JlYXRlQ2FsbGJhY2tUYXNrKCZwb3N0Q29uc29sZU1lc3NhZ2VUYXNrLCBBbGxv
d0Nyb3NzVGhyZWFkQWNjZXNzKHRoaXMpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgc291cmNlLCB0eXBlLCBsZXZlbCwKKyAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1lc3NhZ2UsIGxpbmVOdW1iZXIsIHNvdXJj
ZVVSTCkpOworfQorCit2b2lkIFdlYldvcmtlckJhc2U6OnBvc3RDb25zb2xlTWVzc2FnZVRhc2so
U2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICBXZWJXb3JrZXJCYXNlKiB0aGlzUHRyLAorICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBzb3VyY2UsCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHR5cGUsIGludCBsZXZlbCwKKyAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBTdHJpbmcmIG1lc3Nh
Z2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGxpbmVO
dW1iZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qg
U3RyaW5nJiBzb3VyY2VVUkwpCit7CisgICAgaWYgKCF0aGlzUHRyLT5jb21tb25DbGllbnQoKSkK
KyAgICAgICAgcmV0dXJuOworICAgIHRoaXNQdHItPmNvbW1vbkNsaWVudCgpLT5wb3N0Q29uc29s
ZU1lc3NhZ2VUb1dvcmtlck9iamVjdChzb3VyY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGUsIGxldmVsLCBtZXNzYWdl
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBsaW5lTnVtYmVyLCBzb3VyY2VVUkwpOworfQorCit2b2lkIFdlYldvcmtlckJhc2U6
OnBvc3RNZXNzYWdlVG9QYWdlSW5zcGVjdG9yKGNvbnN0IFN0cmluZyYgbWVzc2FnZSkKK3sKKyAg
ICBkaXNwYXRjaFRhc2tUb01haW5UaHJlYWQoY3JlYXRlQ2FsbGJhY2tUYXNrKCZwb3N0TWVzc2Fn
ZVRvUGFnZUluc3BlY3RvclRhc2ssIEFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3ModGhpcyksIG1lc3Nh
Z2UpKTsKK30KKwordm9pZCBXZWJXb3JrZXJCYXNlOjpwb3N0TWVzc2FnZVRvUGFnZUluc3BlY3Rv
clRhc2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFdlYldvcmtlckJhc2UqIHRoaXNQdHIsIGNv
bnN0IFN0cmluZyYgbWVzc2FnZSkKK3sKKyAgICBpZiAoIXRoaXNQdHItPmNvbW1vbkNsaWVudCgp
KQorICAgICAgICByZXR1cm47CisgICAgdGhpc1B0ci0+Y29tbW9uQ2xpZW50KCktPmRpc3BhdGNo
RGV2VG9vbHNNZXNzYWdlKG1lc3NhZ2UpOworfQorCit2b2lkIFdlYldvcmtlckJhc2U6OnVwZGF0
ZUluc3BlY3RvclN0YXRlQ29va2llKGNvbnN0IFdURjo6U3RyaW5nJiBjb29raWUpCit7CisgICAg
ZGlzcGF0Y2hUYXNrVG9NYWluVGhyZWFkKGNyZWF0ZUNhbGxiYWNrVGFzaygmdXBkYXRlSW5zcGVj
dG9yU3RhdGVDb29raWVUYXNrLCBBbGxvd0Nyb3NzVGhyZWFkQWNjZXNzKHRoaXMpLCBjb29raWUp
KTsKK30KKwordm9pZCBXZWJXb3JrZXJCYXNlOjp1cGRhdGVJbnNwZWN0b3JTdGF0ZUNvb2tpZVRh
c2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFdlYldvcmtlckJhc2UqIHRoaXNQdHIsIGNvbnN0
IFN0cmluZyYgY29va2llKQoreworICAgIGlmICghdGhpc1B0ci0+Y29tbW9uQ2xpZW50KCkpCisg
ICAgICAgIHJldHVybjsKKyAgICB0aGlzUHRyLT5jb21tb25DbGllbnQoKS0+c2F2ZURldlRvb2xz
QWdlbnRTdGF0ZShjb29raWUpOworfQorCit2b2lkIFdlYldvcmtlckJhc2U6OmNvbmZpcm1NZXNz
YWdlRnJvbVdvcmtlck9iamVjdChib29sIGhhc1BlbmRpbmdBY3Rpdml0eSkKK3sKKyAgICBkaXNw
YXRjaFRhc2tUb01haW5UaHJlYWQoY3JlYXRlQ2FsbGJhY2tUYXNrKCZjb25maXJtTWVzc2FnZVRh
c2ssIEFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3ModGhpcyksCisgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICBoYXNQZW5kaW5nQWN0aXZpdHkpKTsKK30KKwordm9p
ZCBXZWJXb3JrZXJCYXNlOjpjb25maXJtTWVzc2FnZVRhc2soU2NyaXB0RXhlY3V0aW9uQ29udGV4
dCogY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdlYldv
cmtlckJhc2UqIHRoaXNQdHIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBib29sIGhhc1BlbmRpbmdBY3Rpdml0eSkKK3sKKyAgICBpZiAoIXRoaXNQdHItPmNsaWVudCgp
KQorICAgICAgICByZXR1cm47CisgICAgdGhpc1B0ci0+Y2xpZW50KCktPmNvbmZpcm1NZXNzYWdl
RnJvbVdvcmtlck9iamVjdChoYXNQZW5kaW5nQWN0aXZpdHkpOworfQorCit2b2lkIFdlYldvcmtl
ckJhc2U6OnJlcG9ydFBlbmRpbmdBY3Rpdml0eShib29sIGhhc1BlbmRpbmdBY3Rpdml0eSkKK3sK
KyAgICBkaXNwYXRjaFRhc2tUb01haW5UaHJlYWQoY3JlYXRlQ2FsbGJhY2tUYXNrKCZyZXBvcnRQ
ZW5kaW5nQWN0aXZpdHlUYXNrLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgQWxsb3dDcm9zc1RocmVhZEFjY2Vzcyh0aGlzKSwKKyAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhc1BlbmRpbmdBY3Rpdml0eSkpOwor
fQorCit2b2lkIFdlYldvcmtlckJhc2U6OnJlcG9ydFBlbmRpbmdBY3Rpdml0eVRhc2soU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBXZWJXb3JrZXJCYXNlKiB0aGlzUHRyLAorICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgaGFzUGVuZGluZ0FjdGl2aXR5KQor
eworICAgIGlmICghdGhpc1B0ci0+Y2xpZW50KCkpCisgICAgICAgIHJldHVybjsKKyAgICB0aGlz
UHRyLT5jbGllbnQoKS0+cmVwb3J0UGVuZGluZ0FjdGl2aXR5KGhhc1BlbmRpbmdBY3Rpdml0eSk7
Cit9CisKK3ZvaWQgV2ViV29ya2VyQmFzZTo6d29ya2VyQ29udGV4dENsb3NlZCgpCit7CisgICAg
ZGlzcGF0Y2hUYXNrVG9NYWluVGhyZWFkKGNyZWF0ZUNhbGxiYWNrVGFzaygmd29ya2VyQ29udGV4
dENsb3NlZFRhc2ssCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBBbGxvd0Nyb3NzVGhyZWFkQWNjZXNzKHRoaXMpKSk7Cit9CisKK3ZvaWQgV2ViV29ya2Vy
QmFzZTo6d29ya2VyQ29udGV4dENsb3NlZFRhc2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29u
dGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViV29y
a2VyQmFzZSogdGhpc1B0cikKK3sKKyAgICBpZiAodGhpc1B0ci0+Y29tbW9uQ2xpZW50KCkpCisg
ICAgICAgIHRoaXNQdHItPmNvbW1vbkNsaWVudCgpLT53b3JrZXJDb250ZXh0Q2xvc2VkKCk7CisK
KyAgICB0aGlzUHRyLT5zdG9wV29ya2VyVGhyZWFkKCk7Cit9CisKK3ZvaWQgV2ViV29ya2VyQmFz
ZTo6d29ya2VyQ29udGV4dERlc3Ryb3llZCgpCit7CisgICAgZGlzcGF0Y2hUYXNrVG9NYWluVGhy
ZWFkKGNyZWF0ZUNhbGxiYWNrVGFzaygmd29ya2VyQ29udGV4dERlc3Ryb3llZFRhc2ssCisgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBbGxvd0Nyb3NzVGhy
ZWFkQWNjZXNzKHRoaXMpKSk7Cit9CisKK3ZvaWQgV2ViV29ya2VyQmFzZTo6d29ya2VyQ29udGV4
dERlc3Ryb3llZFRhc2soU2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV2ViV29ya2VyQmFzZSogdGhp
c1B0cikKK3sKKyAgICBpZiAodGhpc1B0ci0+Y29tbW9uQ2xpZW50KCkpCisgICAgICAgIHRoaXNQ
dHItPmNvbW1vbkNsaWVudCgpLT53b3JrZXJDb250ZXh0RGVzdHJveWVkKCk7CisgICAgLy8gVGhl
IGxpZmV0aW1lIG9mIHRoaXMgcHJveHkgaXMgY29udHJvbGxlZCBieSB0aGUgd29ya2VyIGNvbnRl
eHQuCisgICAgZGVsZXRlIHRoaXNQdHI7Cit9CisKKy8vIFdvcmtlckxvYWRlclByb3h5IC0tLS0t
LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisK
K3ZvaWQgV2ViV29ya2VyQmFzZTo6cG9zdFRhc2tUb0xvYWRlcihQYXNzT3duUHRyPFNjcmlwdEV4
ZWN1dGlvbkNvbnRleHQ6OlRhc2s+IHRhc2spCit7CisgICAgQVNTRVJUKG1fbG9hZGluZ0RvY3Vt
ZW50LT5pc0RvY3VtZW50KCkpOworICAgIG1fbG9hZGluZ0RvY3VtZW50LT5wb3N0VGFzayh0YXNr
KTsKK30KKwordm9pZCBXZWJXb3JrZXJCYXNlOjpwb3N0VGFza0Zvck1vZGVUb1dvcmtlckNvbnRl
eHQoCisgICAgUGFzc093blB0cjxTY3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPiB0YXNrLCBj
b25zdCBTdHJpbmcmIG1vZGUpCit7CisgICAgbV93b3JrZXJUaHJlYWQtPnJ1bkxvb3AoKS5wb3N0
VGFza0Zvck1vZGUodGFzaywgbW9kZSk7CiB9CiAKICNlbmRpZiAvLyBFTkFCTEUoV09SS0VSUykK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYldvcmtlckJhc2UuaCBi
L1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYldvcmtlckJhc2UuaAppbmRleCBjNDNjNjM5
MzFiMDQxODUwNjQ3YTVlNTIyY2RlNGNlMDE5MTM1Y2JiLi45MzU5OWY0ZmRlMmM2Mzg0Y2NmMTli
YjQzNzMwZjRkMmJhYmJiNzc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9XZWJXb3JrZXJCYXNlLmgKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViV29y
a2VyQmFzZS5oCkBAIC0zNSwyNiArMzUsMTM4IEBACiAKICNpbmNsdWRlICJTY3JpcHRFeGVjdXRp
b25Db250ZXh0LmgiCiAjaW5jbHVkZSAiV2ViQ29tbW9uV29ya2VyQ2xpZW50LmgiCisjaW5jbHVk
ZSAiV2ViRnJhbWVDbGllbnQuaCIKICNpbmNsdWRlICJXb3JrZXJMb2FkZXJQcm94eS5oIgogI2lu
Y2x1ZGUgIldvcmtlck9iamVjdFByb3h5LmgiCisjaW5jbHVkZSAiV29ya2VyVGhyZWFkLmgiCiAj
aW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KICNpbmNsdWRlIDx3dGYvUmVmUHRyLmg+CiAKK25h
bWVzcGFjZSBXZWJDb3JlIHsKK2NsYXNzIFdvcmtlclRocmVhZDsKK30KIAogbmFtZXNwYWNlIFdl
YktpdCB7CitjbGFzcyBXZWJBcHBsaWNhdGlvbkNhY2hlSG9zdDsKK2NsYXNzIFdlYkFwcGxpY2F0
aW9uQ2FjaGVIb3N0Q2xpZW50OworY2xhc3MgV2ViQ29tbW9uV29ya2VyQ2xpZW50OworY2xhc3Mg
V2ViU2VjdXJpdHlPcmlnaW47CitjbGFzcyBXZWJTdHJpbmc7CitjbGFzcyBXZWJVUkw7CiBjbGFz
cyBXZWJWaWV3OworY2xhc3MgV2ViV29ya2VyOworY2xhc3MgV2ViV29ya2VyQ2xpZW50OwogCiAv
LyBCYXNlIGNsYXNzIGZvciBXZWJTaGFyZWRXb3JrZXJJbXBsLCBXZWJXb3JrZXJDbGllbnRJbXBs
IGFuZCAoZGVmdW5jdCkgV2ViV29ya2VySW1wbAogLy8gY29udGFpbmluZyBjb21tb24gaW50ZXJm
YWNlIGZvciBzaGFyZWQgd29ya2VycyBhbmQgZGVkaWNhdGVkIGluLXByb2Mgd29ya2VycyBpbXBs
ZW1lbnRhdGlvbi4KIC8vCiAvLyBGSVhNRTogUmVuYW1lIHRoaXMgY2xhc3MgaW50byBXZWJXb3Jr
ZXJCYXNlLCBtZXJnZSBleGlzdGluZyBXZWJXb3JrZXJCYXNlIGFuZCBXZWJTaGFyZWRXb3JrZXIu
Ci1jbGFzcyBXZWJXb3JrZXJCYXNlIDogcHVibGljIFdlYkNvcmU6OldvcmtlckxvYWRlclByb3h5
IHsKK2NsYXNzIE5ld1dlYldvcmtlckJhc2UgOiBwdWJsaWMgV2ViQ29yZTo6V29ya2VyTG9hZGVy
UHJveHkgewogcHVibGljOgotICAgIHZpcnR1YWwgV2ViQ29tbW9uV29ya2VyQ2xpZW50KiBjb21t
b25DbGllbnQoKSA9IDA7CisgICAgdmlydHVhbCBOZXdXZWJDb21tb25Xb3JrZXJDbGllbnQqIG5l
d0NvbW1vbkNsaWVudCgpID0gMDsKICAgICB2aXJ0dWFsIFdlYlZpZXcqIHZpZXcoKSBjb25zdCA9
IDA7Cit9OworCisvLyBCYXNlIGNsYXNzIGZvciBXZWJTaGFyZWRXb3JrZXJJbXBsIGFuZCBXZWJX
b3JrZXJJbXBsLiBJdCBjb250YWlucyBjb21tb24KKy8vIGNvZGUgdXNlZCBieSBib3RoIGltcGxl
bWVudGF0aW9uIGNsYXNzZXMsIGluY2x1ZGluZyBpbXBsZW1lbnRhdGlvbnMgb2YgdGhlCisvLyBX
b3JrZXJPYmplY3RQcm94eSBhbmQgV29ya2VyTG9hZGVyUHJveHkgaW50ZXJmYWNlcy4KK2NsYXNz
IFdlYldvcmtlckJhc2UgOiBwdWJsaWMgV2ViQ29yZTo6V29ya2VyT2JqZWN0UHJveHkKKyAgICAg
ICAgICAgICAgICAgICAgLCBwdWJsaWMgTmV3V2ViV29ya2VyQmFzZQorICAgICAgICAgICAgICAg
ICAgICAsIHB1YmxpYyBXZWJGcmFtZUNsaWVudCB7CitwdWJsaWM6CisgICAgV2ViV29ya2VyQmFz
ZSgpOworICAgIHZpcnR1YWwgfldlYldvcmtlckJhc2UoKTsKKworICAgIC8vIFdlYkNvbW1vbldv
cmtlckJhc2UgbWV0aG9kczoKKyAgICB2aXJ0dWFsIHZvaWQgcG9zdE1lc3NhZ2VUb1dvcmtlck9i
amVjdCgKKyAgICAgICAgUGFzc1JlZlB0cjxXZWJDb3JlOjpTZXJpYWxpemVkU2NyaXB0VmFsdWU+
LAorICAgICAgICBQYXNzT3duUHRyPFdlYkNvcmU6Ok1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5Pik7
CisgICAgdmlydHVhbCB2b2lkIHBvc3RFeGNlcHRpb25Ub1dvcmtlck9iamVjdCgKKyAgICAgICAg
Y29uc3QgV1RGOjpTdHJpbmcmLCBpbnQsIGNvbnN0IFdURjo6U3RyaW5nJik7CisgICAgdmlydHVh
bCB2b2lkIHBvc3RDb25zb2xlTWVzc2FnZVRvV29ya2VyT2JqZWN0KAorICAgICAgICBXZWJDb3Jl
OjpNZXNzYWdlU291cmNlLCBXZWJDb3JlOjpNZXNzYWdlVHlwZSwKKyAgICAgICAgV2ViQ29yZTo6
TWVzc2FnZUxldmVsLCBjb25zdCBXVEY6OlN0cmluZyYsIGludCwgY29uc3QgV1RGOjpTdHJpbmcm
KTsKKyAgICB2aXJ0dWFsIHZvaWQgcG9zdE1lc3NhZ2VUb1BhZ2VJbnNwZWN0b3IoY29uc3QgV1RG
OjpTdHJpbmcmKTsKKyAgICB2aXJ0dWFsIHZvaWQgdXBkYXRlSW5zcGVjdG9yU3RhdGVDb29raWUo
Y29uc3QgV1RGOjpTdHJpbmcmKTsKKyAgICB2aXJ0dWFsIHZvaWQgY29uZmlybU1lc3NhZ2VGcm9t
V29ya2VyT2JqZWN0KGJvb2wpOworICAgIHZpcnR1YWwgdm9pZCByZXBvcnRQZW5kaW5nQWN0aXZp
dHkoYm9vbCk7CisgICAgdmlydHVhbCB2b2lkIHdvcmtlckNvbnRleHRDbG9zZWQoKTsKKyAgICB2
aXJ0dWFsIHZvaWQgd29ya2VyQ29udGV4dERlc3Ryb3llZCgpOworICAgIHZpcnR1YWwgV2ViVmll
dyogdmlldygpIGNvbnN0IHsgcmV0dXJuIG1fd2ViVmlldzsgfQorCisgICAgLy8gV2ViQ29yZTo6
V29ya2VyTG9hZGVyUHJveHkgbWV0aG9kczoKKyAgICB2aXJ0dWFsIHZvaWQgcG9zdFRhc2tUb0xv
YWRlcihQYXNzT3duUHRyPFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+KTsK
KyAgICB2aXJ0dWFsIHZvaWQgcG9zdFRhc2tGb3JNb2RlVG9Xb3JrZXJDb250ZXh0KAorICAgICAg
ICBQYXNzT3duUHRyPFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQ6OlRhc2s+LCBjb25z
dCBXVEY6OlN0cmluZyYgbW9kZSk7CisKKyAgICAvLyBXZWJGcmFtZUNsaWVudCBtZXRob2RzIHRv
IHN1cHBvcnQgcmVzb3VyY2UgbG9hZGluZyB0aHJ1IHRoZSAnc2hhZG93IHBhZ2UnLgorICAgIHZp
cnR1YWwgdm9pZCBkaWRDcmVhdGVEYXRhU291cmNlKFdlYkZyYW1lKiwgV2ViRGF0YVNvdXJjZSop
OworICAgIHZpcnR1YWwgV2ViQXBwbGljYXRpb25DYWNoZUhvc3QqIGNyZWF0ZUFwcGxpY2F0aW9u
Q2FjaGVIb3N0KFdlYkZyYW1lKiwgV2ViQXBwbGljYXRpb25DYWNoZUhvc3RDbGllbnQqKTsKIAog
ICAgIC8vIEV4ZWN1dGVzIHRoZSBnaXZlbiB0YXNrIG9uIHRoZSBtYWluIHRocmVhZC4KICAgICBz
dGF0aWMgdm9pZCBkaXNwYXRjaFRhc2tUb01haW5UaHJlYWQoUGFzc093blB0cjxXZWJDb3JlOjpT
Y3JpcHRFeGVjdXRpb25Db250ZXh0OjpUYXNrPik7CisKK3Byb3RlY3RlZDoKKyAgICB2aXJ0dWFs
IFdlYkNvbW1vbldvcmtlckNsaWVudCogY29tbW9uQ2xpZW50KCkgPSAwOworICAgIHZpcnR1YWwg
V2ViV29ya2VyQ2xpZW50KiBjbGllbnQoKSA9IDA7CisKKyAgICB2b2lkIHNldFdvcmtlclRocmVh
ZChQYXNzUmVmUHRyPFdlYkNvcmU6OldvcmtlclRocmVhZD4gdGhyZWFkKSB7IG1fd29ya2VyVGhy
ZWFkID0gdGhyZWFkOyB9CisgICAgV2ViQ29yZTo6V29ya2VyVGhyZWFkKiB3b3JrZXJUaHJlYWQo
KSB7IHJldHVybiBtX3dvcmtlclRocmVhZC5nZXQoKTsgfQorCisgICAgLy8gU2h1dHMgZG93biB0
aGUgd29ya2VyIHRocmVhZC4KKyAgICB2b2lkIHN0b3BXb3JrZXJUaHJlYWQoKTsKKworICAgIC8v
IENyZWF0ZXMgdGhlIHNoYWRvdyBsb2FkZXIgdXNlZCBmb3Igd29ya2VyIG5ldHdvcmsgcmVxdWVz
dHMuCisgICAgdm9pZCBpbml0aWFsaXplTG9hZGVyKGNvbnN0IFdlYlVSTCYpOworCitwcml2YXRl
OgorICAgIC8vIEZ1bmN0aW9uIHVzZWQgdG8gaW52b2tlIHRhc2tzIG9uIHRoZSBtYWluIHRocmVh
ZC4KKyAgICBzdGF0aWMgdm9pZCBpbnZva2VUYXNrTWV0aG9kKHZvaWQqKTsKKworICAgIC8vIFRh
c2tzIHRoYXQgYXJlIHJ1biBvbiB0aGUgbWFpbiB0aHJlYWQuCisgICAgc3RhdGljIHZvaWQgcG9z
dE1lc3NhZ2VUYXNrKAorICAgICAgICBXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBj
b250ZXh0LAorICAgICAgICBXZWJXb3JrZXJCYXNlKiB0aGlzUHRyLAorICAgICAgICBXVEY6OlN0
cmluZyBtZXNzYWdlLAorICAgICAgICBQYXNzT3duUHRyPFdlYkNvcmU6Ok1lc3NhZ2VQb3J0Q2hh
bm5lbEFycmF5PiBjaGFubmVscyk7CisgICAgc3RhdGljIHZvaWQgcG9zdEV4Y2VwdGlvblRhc2so
CisgICAgICAgIFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsCisgICAg
ICAgIFdlYldvcmtlckJhc2UqIHRoaXNQdHIsCisgICAgICAgIGNvbnN0IFdURjo6U3RyaW5nJiBt
ZXNzYWdlLAorICAgICAgICBpbnQgbGluZU51bWJlciwKKyAgICAgICAgY29uc3QgV1RGOjpTdHJp
bmcmIHNvdXJjZVVSTCk7CisgICAgc3RhdGljIHZvaWQgcG9zdENvbnNvbGVNZXNzYWdlVGFzaygK
KyAgICAgICAgV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwKKyAgICAg
ICAgV2ViV29ya2VyQmFzZSogdGhpc1B0ciwKKyAgICAgICAgaW50IHNvdXJjZSwKKyAgICAgICAg
aW50IHR5cGUsCisgICAgICAgIGludCBsZXZlbCwKKyAgICAgICAgY29uc3QgV1RGOjpTdHJpbmcm
IG1lc3NhZ2UsCisgICAgICAgIGludCBsaW5lTnVtYmVyLAorICAgICAgICBjb25zdCBXVEY6OlN0
cmluZyYgc291cmNlVVJMKTsKKyAgICBzdGF0aWMgdm9pZCBwb3N0TWVzc2FnZVRvUGFnZUluc3Bl
Y3RvclRhc2soV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFdlYldvcmtlckJhc2Uq
LCBjb25zdCBXVEY6OlN0cmluZyYpOworICAgIHN0YXRpYyB2b2lkIHVwZGF0ZUluc3BlY3RvclN0
YXRlQ29va2llVGFzayhXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgV2ViV29ya2Vy
QmFzZSogdGhpc1B0ciwgY29uc3QgV1RGOjpTdHJpbmcmIGNvb2tpZSk7CisgICAgc3RhdGljIHZv
aWQgY29uZmlybU1lc3NhZ2VUYXNrKAorICAgICAgICBXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25D
b250ZXh0KiBjb250ZXh0LAorICAgICAgICBXZWJXb3JrZXJCYXNlKiB0aGlzUHRyLAorICAgICAg
ICBib29sIGhhc1BlbmRpbmdBY3Rpdml0eSk7CisgICAgc3RhdGljIHZvaWQgcmVwb3J0UGVuZGlu
Z0FjdGl2aXR5VGFzaygKKyAgICAgICAgV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dCog
Y29udGV4dCwKKyAgICAgICAgV2ViV29ya2VyQmFzZSogdGhpc1B0ciwKKyAgICAgICAgYm9vbCBo
YXNQZW5kaW5nQWN0aXZpdHkpOworICAgIHN0YXRpYyB2b2lkIHdvcmtlckNvbnRleHRDbG9zZWRU
YXNrKAorICAgICAgICBXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0KiBjb250ZXh0LAor
ICAgICAgICBXZWJXb3JrZXJCYXNlKiB0aGlzUHRyKTsKKyAgICBzdGF0aWMgdm9pZCB3b3JrZXJD
b250ZXh0RGVzdHJveWVkVGFzaygKKyAgICAgICAgV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29u
dGV4dCogY29udGV4dCwKKyAgICAgICAgV2ViV29ya2VyQmFzZSogdGhpc1B0cik7CisKKyAgICAv
LyAnc2hhZG93IHBhZ2UnIC0gY3JlYXRlZCB0byBwcm94eSBsb2FkaW5nIHJlcXVlc3RzIGZyb20g
dGhlIHdvcmtlci4KKyAgICBSZWZQdHI8V2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dD4g
bV9sb2FkaW5nRG9jdW1lbnQ7CisgICAgV2ViVmlldyogbV93ZWJWaWV3OworICAgIGJvb2wgbV9h
c2tlZFRvVGVybWluYXRlOworCisgICAgUmVmUHRyPFdlYkNvcmU6OldvcmtlclRocmVhZD4gbV93
b3JrZXJUaHJlYWQ7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYldvcmtlckNsaWVudEltcGwuY3BwIGIvU291cmNl
L1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViV29ya2VyQ2xpZW50SW1wbC5jcHAKaW5kZXggNTA5MGFm
ZmJjNTE1NzY2YmNhMDA3N2VlY2NlMmU0ZmYwZTQ4ZTMwMS4uNWI5ZjMyMDQ3ZGRlNTczOWFjOWNj
MzZiOWE1YjFiYjJkMDY3YTEzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViV29ya2VyQ2xpZW50SW1wbC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9z
cmMvV2ViV29ya2VyQ2xpZW50SW1wbC5jcHAKQEAgLTYzLDYgKzYzLDcgQEAKICNpbmNsdWRlICJw
bGF0Zm9ybS9XZWJVUkwuaCIKICNpbmNsdWRlICJXZWJWaWV3SW1wbC5oIgogI2luY2x1ZGUgIldl
Yldvcmtlci5oIgorI2luY2x1ZGUgIldlYldvcmtlckltcGwuaCIKIAogdXNpbmcgbmFtZXNwYWNl
IFdlYkNvcmU7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYldv
cmtlckNsaWVudEltcGwuaCBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYldvcmtlckNs
aWVudEltcGwuaAppbmRleCA1MTg5YWQxNGE2NDU0NGJkYmY3YjY0OTNiMzBiODY5ZjNkZmI3MmE3
Li43MDA2YTk0Y2Y3ZDk2YTY0M2M4MzliOTU5OWE1N2Q5ZDRiMGU2NmIzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJXb3JrZXJDbGllbnRJbXBsLmgKKysrIGIvU291
cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV2ViV29ya2VyQ2xpZW50SW1wbC5oCkBAIC01OCw4ICs1
OCw4IEBAIGNsYXNzIFdlYkZyYW1lSW1wbDsKIC8vIEluIGVzc2VuY2UsIHRoaXMgY2xhc3Mgd3Jh
cHMgV29ya2VyTWVzc2FnaW5nUHJveHkuCiBjbGFzcyBXZWJXb3JrZXJDbGllbnRJbXBsIDogcHVi
bGljIFdlYkNvcmU6OldvcmtlckNvbnRleHRQcm94eQogICAgICAgICAgICAgICAgICAgICAgICAg
ICAsIHB1YmxpYyBXZWJDb3JlOjpXb3JrZXJPYmplY3RQcm94eQotICAgICAgICAgICAgICAgICAg
ICAgICAgICAsIHB1YmxpYyBXZWJXb3JrZXJCYXNlCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICwgcHVibGljIFdlYkNvbW1vbldvcmtlckNsaWVudCB7CisgICAgICAgICAgICAgICAgICAgICAg
ICAgICwgcHVibGljIE5ld1dlYldvcmtlckJhc2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
LCBwdWJsaWMgTmV3V2ViQ29tbW9uV29ya2VyQ2xpZW50IHsKIHB1YmxpYzoKICAgICAvLyBXZWJD
b3JlOjpXb3JrZXJDb250ZXh0UHJveHkgRmFjdG9yeS4KICAgICBzdGF0aWMgV2ViQ29yZTo6V29y
a2VyQ29udGV4dFByb3h5KiBjcmVhdGVXb3JrZXJDb250ZXh0UHJveHkoV2ViQ29yZTo6V29ya2Vy
Kik7CkBAIC0xMDcsNyArMTA3LDcgQEAgcHVibGljOgogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBXZWJGaWxlU3lzdGVtQ2FsbGJhY2tzKik7CiAKICAgICAvLyBXZWJDb21tZW50V29y
a2VyQmFzZSBtZXRob2RzOgotICAgIHZpcnR1YWwgV2ViQ29tbW9uV29ya2VyQ2xpZW50KiBjb21t
b25DbGllbnQoKSB7IHJldHVybiB0aGlzOyB9CisgICAgdmlydHVhbCBOZXdXZWJDb21tb25Xb3Jr
ZXJDbGllbnQqIG5ld0NvbW1vbkNsaWVudCgpIHsgcmV0dXJuIHRoaXM7IH0KICAgICB2aXJ0dWFs
IFdlYlZpZXcqIHZpZXcoKSBjb25zdDsKIAogcHJpdmF0ZToKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJLaXQvY2hyb21pdW0vc3JjL1dlYldvcmtlckltcGwuY3BwIGIvU291cmNlL1dlYktpdC9jaHJv
bWl1bS9zcmMvV2ViV29ya2VySW1wbC5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZGNiZmVlZThhNGJjODY0ZWU2
NThiOTRhMGQzZDBjYjQyMGE5YzRjZAotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJLaXQv
Y2hyb21pdW0vc3JjL1dlYldvcmtlckltcGwuY3BwCkBAIC0wLDAgKzEsMTYzIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVk
aXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmln
aHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0
IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3Ry
aWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRo
ZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9y
IHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQg
c3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAq
ICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVP
UlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorI2luY2x1ZGUgIldlYldvcmtlckltcGwuaCIKKworI2luY2x1ZGUgIkNyb3Nz
VGhyZWFkVGFzay5oIgorI2luY2x1ZGUgIkRlZGljYXRlZFdvcmtlckNvbnRleHQuaCIKKyNpbmNs
dWRlICJEZWRpY2F0ZWRXb3JrZXJUaHJlYWQuaCIKKyNpbmNsdWRlICJLVVJMLmgiCisjaW5jbHVk
ZSAiTWVzc2FnZUV2ZW50LmgiCisjaW5jbHVkZSAiTWVzc2FnZVBvcnQuaCIKKyNpbmNsdWRlICJN
ZXNzYWdlUG9ydENoYW5uZWwuaCIKKyNpbmNsdWRlICJTY3JpcHRFeGVjdXRpb25Db250ZXh0Lmgi
CisjaW5jbHVkZSAiU2VjdXJpdHlPcmlnaW4uaCIKKyNpbmNsdWRlICJTZXJpYWxpemVkU2NyaXB0
VmFsdWUuaCIKKyNpbmNsdWRlICJTdWJzdGl0dXRlRGF0YS5oIgorI2luY2x1ZGUgPHd0Zi9Pd25Q
dHIuaD4KKyNpbmNsdWRlIDx3dGYvVGhyZWFkaW5nLmg+CisKKyNpbmNsdWRlICJQbGF0Zm9ybU1l
c3NhZ2VQb3J0Q2hhbm5lbC5oIgorI2luY2x1ZGUgIldlYk1lc3NhZ2VQb3J0Q2hhbm5lbC5oIgor
I2luY2x1ZGUgInBsYXRmb3JtL1dlYlN0cmluZy5oIgorI2luY2x1ZGUgInBsYXRmb3JtL1dlYlVS
TC5oIgorI2luY2x1ZGUgIldlYldvcmtlckNsaWVudC5oIgorCit1c2luZyBuYW1lc3BhY2UgV2Vi
Q29yZTsKKworbmFtZXNwYWNlIFdlYktpdCB7CisKKyNpZiBFTkFCTEUoV09SS0VSUykKKworV2Vi
V29ya2VyKiBXZWJXb3JrZXI6OmNyZWF0ZShXZWJXb3JrZXJDbGllbnQqIGNsaWVudCkKK3sKKyAg
ICByZXR1cm4gbmV3IFdlYldvcmtlckltcGwoY2xpZW50KTsKK30KKworCitXZWJXb3JrZXJJbXBs
OjpXZWJXb3JrZXJJbXBsKFdlYldvcmtlckNsaWVudCogY2xpZW50KQorICAgIDogbV9jbGllbnQo
Y2xpZW50KQoreworfQorCitXZWJXb3JrZXJJbXBsOjp+V2ViV29ya2VySW1wbCgpCit7Cit9CisK
K05ld1dlYkNvbW1vbldvcmtlckNsaWVudCogV2ViV29ya2VySW1wbDo6bmV3Q29tbW9uQ2xpZW50
KCkKK3sKKyAgICByZXR1cm4gbV9jbGllbnQ7Cit9CisKK1dlYkNvbW1vbldvcmtlckNsaWVudCog
V2ViV29ya2VySW1wbDo6Y29tbW9uQ2xpZW50KCkKK3sKKyAgICByZXR1cm4gbV9jbGllbnQ7Cit9
CisKK3ZvaWQgV2ViV29ya2VySW1wbDo6cG9zdE1lc3NhZ2VUb1dvcmtlckNvbnRleHRUYXNrKFdl
YkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqIGNvbnRleHQsCisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXZWJXb3JrZXJJbXBsKiB0aGlzUHRy
LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgU3RyaW5nJiBtZXNzYWdlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgUGFzc093blB0cjxNZXNzYWdlUG9ydENoYW5uZWxBcnJheT4gY2hhbm5l
bHMpCit7CisgICAgQVNTRVJUKGNvbnRleHQtPmlzV29ya2VyQ29udGV4dCgpKTsKKyAgICBEZWRp
Y2F0ZWRXb3JrZXJDb250ZXh0KiB3b3JrZXJDb250ZXh0ID0KKyAgICAgICAgc3RhdGljX2Nhc3Q8
RGVkaWNhdGVkV29ya2VyQ29udGV4dCo+KGNvbnRleHQpOworCisgICAgT3duUHRyPE1lc3NhZ2VQ
b3J0QXJyYXk+IHBvcnRzID0KKyAgICAgICAgTWVzc2FnZVBvcnQ6OmVudGFuZ2xlUG9ydHMoKmNv
bnRleHQsIGNoYW5uZWxzKTsKKyAgICBSZWZQdHI8U2VyaWFsaXplZFNjcmlwdFZhbHVlPiBzZXJp
YWxpemVkTWVzc2FnZSA9CisgICAgICAgIFNlcmlhbGl6ZWRTY3JpcHRWYWx1ZTo6Y3JlYXRlRnJv
bVdpcmUobWVzc2FnZSk7CisgICAgd29ya2VyQ29udGV4dC0+ZGlzcGF0Y2hFdmVudChNZXNzYWdl
RXZlbnQ6OmNyZWF0ZSgKKyAgICAgICAgcG9ydHMucmVsZWFzZSgpLCBzZXJpYWxpemVkTWVzc2Fn
ZS5yZWxlYXNlKCkpKTsKKyAgICB0aGlzUHRyLT5jb25maXJtTWVzc2FnZUZyb21Xb3JrZXJPYmpl
Y3Qod29ya2VyQ29udGV4dC0+aGFzUGVuZGluZ0FjdGl2aXR5KCkpOworfQorCisvLyBXZWJXb3Jr
ZXIgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t
LS0tLS0tLS0tLS0tLQorCit2b2lkIFdlYldvcmtlckltcGw6OnN0YXJ0V29ya2VyQ29udGV4dChj
b25zdCBXZWJVUkwmIHNjcmlwdFVybCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGNvbnN0IFdlYlN0cmluZyYgdXNlckFnZW50LAorICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgV2ViU3RyaW5nJiBzb3VyY2VDb2RlKQoreworICAgIGlu
aXRpYWxpemVMb2FkZXIoc2NyaXB0VXJsKTsKKyAgICBzZXRXb3JrZXJUaHJlYWQoRGVkaWNhdGVk
V29ya2VyVGhyZWFkOjpjcmVhdGUoc2NyaXB0VXJsLCB1c2VyQWdlbnQsIHNvdXJjZUNvZGUsICp0
aGlzLCAqdGhpcywgRG9udFBhdXNlV29ya2VyQ29udGV4dE9uU3RhcnQpKTsKKyAgICAvLyBXb3Jr
ZXIgaW5pdGlhbGl6YXRpb24gbWVhbnMgYSBwZW5kaW5nIGFjdGl2aXR5LgorICAgIHJlcG9ydFBl
bmRpbmdBY3Rpdml0eSh0cnVlKTsKKyAgICB3b3JrZXJUaHJlYWQoKS0+c3RhcnQoKTsKK30KKwor
dm9pZCBXZWJXb3JrZXJJbXBsOjp0ZXJtaW5hdGVXb3JrZXJDb250ZXh0KCkKK3sKKyAgICBzdG9w
V29ya2VyVGhyZWFkKCk7Cit9CisKK3ZvaWQgV2ViV29ya2VySW1wbDo6cG9zdE1lc3NhZ2VUb1dv
cmtlckNvbnRleHQoY29uc3QgV2ViU3RyaW5nJiBtZXNzYWdlLAorICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBXZWJNZXNzYWdlUG9ydENoYW5uZWxB
cnJheSYgd2ViQ2hhbm5lbHMpCit7CisgICAgT3duUHRyPE1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5
PiBjaGFubmVsczsKKyAgICBpZiAod2ViQ2hhbm5lbHMuc2l6ZSgpKSB7CisgICAgICAgIGNoYW5u
ZWxzID0gYWRvcHRQdHIobmV3IE1lc3NhZ2VQb3J0Q2hhbm5lbEFycmF5KHdlYkNoYW5uZWxzLnNp
emUoKSkpOworICAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IHdlYkNoYW5uZWxzLnNpemUo
KTsgKytpKSB7CisgICAgICAgICAgICBSZWZQdHI8UGxhdGZvcm1NZXNzYWdlUG9ydENoYW5uZWw+
IHBsYXRmb3JtX2NoYW5uZWwgPQorICAgICAgICAgICAgICAgIFBsYXRmb3JtTWVzc2FnZVBvcnRD
aGFubmVsOjpjcmVhdGUod2ViQ2hhbm5lbHNbaV0pOworICAgICAgICAgICAgd2ViQ2hhbm5lbHNb
aV0tPnNldENsaWVudChwbGF0Zm9ybV9jaGFubmVsLmdldCgpKTsKKyAgICAgICAgICAgICgqY2hh
bm5lbHMpW2ldID0gTWVzc2FnZVBvcnRDaGFubmVsOjpjcmVhdGUocGxhdGZvcm1fY2hhbm5lbCk7
CisgICAgICAgIH0KKyAgICB9CisKKyAgICB3b3JrZXJUaHJlYWQoKS0+cnVuTG9vcCgpLnBvc3RU
YXNrKAorICAgICAgICBjcmVhdGVDYWxsYmFja1Rhc2soJnBvc3RNZXNzYWdlVG9Xb3JrZXJDb250
ZXh0VGFzaywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEFsbG93Q3Jvc3NUaHJlYWRBY2Nl
c3ModGhpcyksIFN0cmluZyhtZXNzYWdlKSwgY2hhbm5lbHMucmVsZWFzZSgpKSk7Cit9CisKK3Zv
aWQgV2ViV29ya2VySW1wbDo6d29ya2VyT2JqZWN0RGVzdHJveWVkKCkKK3sKKyAgICAvLyBXb3Jr
ZXIgb2JqZWN0IGluIHRoZSByZW5kZXJlciB3YXMgZGVzdHJveWVkLCBwZXJoYXBzIGEgcmVzdWx0
IG9mIEdDLgorICAgIC8vIEZvciB1cywgaXQncyBhIHNpZ25hbCB0byBzdGFydCB0ZXJtaW5hdGlu
ZyB0aGUgV29ya2VyQ29udGV4dCB0b28uCisgICAgLy8gRklYTUU6IHdoZW4gJ2tpbGwgYSB3b3Jr
ZXInIGh0bWw1IHNwZWMgYWxnb3JpdGhtIGlzIGltcGxlbWVudGVkLCBpdAorICAgIC8vIHNob3Vs
ZCBiZSB1c2VkIGhlcmUgaW5zdGVhZCBvZiAndGVybWluYXRlIGEgd29ya2VyJy4KKyAgICB0ZXJt
aW5hdGVXb3JrZXJDb250ZXh0KCk7Cit9CisKK3ZvaWQgV2ViV29ya2VySW1wbDo6Y2xpZW50RGVz
dHJveWVkKCkKK3sKKyAgICBtX2NsaWVudCA9IDA7Cit9CisKKyNlbHNlCisKK1dlYldvcmtlciog
V2ViV29ya2VyOjpjcmVhdGUoV2ViV29ya2VyQ2xpZW50KiBjbGllbnQpCit7CisgICAgcmV0dXJu
IDA7Cit9CisKKyNlbmRpZiAvLyBFTkFCTEUoV09SS0VSUykKKworfSAvLyBuYW1lc3BhY2UgV2Vi
S2l0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJXb3JrZXJJbXBs
LmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9XZWJXb3JrZXJJbXBsLmgKbmV3IGZpbGUg
bW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MC4uNGYwNTJhNzkxZTVmMmM0ZmFjOGU1N2RlMzZlODUwNzc4NTNmNzY2NwotLS0gL2Rldi9udWxs
CisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dlYldvcmtlckltcGwuaApAQCAtMCww
ICsxLDg0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA5IEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6
CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIK
KyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2Yg
R29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUg
dXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlz
IHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFO
RCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJ
R0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI2lmbmRlZiBXZWJXb3JrZXJJbXBsX2gKKyNkZWZpbmUgV2ViV29ya2VySW1wbF9o
CisKKyNpbmNsdWRlICJXZWJXb3JrZXIuaCIKKworI2lmIEVOQUJMRShXT1JLRVJTKQorCisjaW5j
bHVkZSAiU2NyaXB0RXhlY3V0aW9uQ29udGV4dC5oIgorCisjaW5jbHVkZSAiV2ViV29ya2VyQmFz
ZS5oIgorCituYW1lc3BhY2UgV2ViS2l0IHsKKworLy8gVGhpcyBjbGFzcyBpcyB1c2VkIGJ5IHRo
ZSB3b3JrZXIgcHJvY2VzcyBjb2RlIHRvIHRhbGsgdG8gdGhlIFdlYkNvcmU6OldvcmtlcgorLy8g
aW1wbGVtZW50YXRpb24uICBJdCBjYW4ndCB1c2UgaXQgZGlyZWN0bHkgc2luY2UgaXQgdXNlcyBX
ZWJLaXQgdHlwZXMsIHNvIHRoaXMKKy8vIGNsYXNzIGNvbnZlcnRzIHRoZSBkYXRhIHR5cGVzLiAg
V2hlbiB0aGUgV2ViQ29yZTo6V29ya2VyIG9iamVjdCB3YW50cyB0byBjYWxsCisvLyBXZWJDb3Jl
OjpXb3JrZXJPYmplY3RQcm94eSwgdGhpcyBjbGFzcyB3aWxsIGNvbnZlciB0byBDaHJvbWUgZGF0
YSB0eXBlcyBmaXJzdAorLy8gYW5kIHRoZW4gY2FsbCB0aGUgc3VwcGxpZWQgV2ViV29ya2VyQ2xp
ZW50LgorY2xhc3MgV2ViV29ya2VySW1wbCA6IHB1YmxpYyBXZWJXb3JrZXJCYXNlLCBwdWJsaWMg
V2ViV29ya2VyIHsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBXZWJXb3JrZXJJbXBsKFdlYldvcmtl
ckNsaWVudCogY2xpZW50KTsKKworICAgIC8vIFdlYldvcmtlciBtZXRob2RzOgorICAgIHZpcnR1
YWwgdm9pZCBzdGFydFdvcmtlckNvbnRleHQoY29uc3QgV2ViVVJMJiwgY29uc3QgV2ViU3RyaW5n
JiwgY29uc3QgV2ViU3RyaW5nJik7CisgICAgdmlydHVhbCB2b2lkIHRlcm1pbmF0ZVdvcmtlckNv
bnRleHQoKTsKKyAgICB2aXJ0dWFsIHZvaWQgcG9zdE1lc3NhZ2VUb1dvcmtlckNvbnRleHQoY29u
c3QgV2ViU3RyaW5nJiwgY29uc3QgV2ViTWVzc2FnZVBvcnRDaGFubmVsQXJyYXkmKTsKKyAgICB2
aXJ0dWFsIHZvaWQgd29ya2VyT2JqZWN0RGVzdHJveWVkKCk7CisgICAgdmlydHVhbCB2b2lkIGNs
aWVudERlc3Ryb3llZCgpOworCisgICAgLy8gV2ViV29ya2VyQmFzZSBtZXRob2RzOgorICAgIHZp
cnR1YWwgV2ViV29ya2VyQ2xpZW50KiBjbGllbnQoKSB7IHJldHVybiBtX2NsaWVudDsgfQorICAg
IHZpcnR1YWwgV2ViQ29tbW9uV29ya2VyQ2xpZW50KiBjb21tb25DbGllbnQoKTsKKworICAgIC8v
IE5ld1dlYldvcmtlckJhc2UgbWV0aG9kczoKKyAgICB2aXJ0dWFsIE5ld1dlYkNvbW1vbldvcmtl
ckNsaWVudCogbmV3Q29tbW9uQ2xpZW50KCk7CisKK3ByaXZhdGU6CisgICAgdmlydHVhbCB+V2Vi
V29ya2VySW1wbCgpOworCisgICAgLy8gVGFza3MgdGhhdCBhcmUgcnVuIG9uIHRoZSB3b3JrZXIg
dGhyZWFkLgorICAgIHN0YXRpYyB2b2lkIHBvc3RNZXNzYWdlVG9Xb3JrZXJDb250ZXh0VGFzaygK
KyAgICAgICAgV2ViQ29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dCogY29udGV4dCwKKyAgICAg
ICAgV2ViV29ya2VySW1wbCogdGhpc1B0ciwKKyAgICAgICAgY29uc3QgV1RGOjpTdHJpbmcmIG1l
c3NhZ2UsCisgICAgICAgIFBhc3NPd25QdHI8V2ViQ29yZTo6TWVzc2FnZVBvcnRDaGFubmVsQXJy
YXk+IGNoYW5uZWxzKTsKKworICAgIFdlYldvcmtlckNsaWVudCogbV9jbGllbnQ7Cit9OworCit9
IC8vIG5hbWVzcGFjZSBXZWJLaXQKKworI2VuZGlmIC8vIEVOQUJMRShXT1JLRVJTKQorCisjZW5k
aWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vc3JjL1dvcmtlckZpbGVTeXN0
ZW1DYWxsYmFja3NCcmlkZ2UuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV29ya2Vy
RmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZS5jcHAKaW5kZXggOGNlNWU2OTc2YmIwOTE5M2QzYTc0
MDlhNWExY2Y3OGZjNGMwNTU3MS4uNTIzZWY3NWFmZTJjODVlYTZkMDhlNzhiZjQ4NTY4YjE2MmNk
MjA4MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV29ya2VyRmlsZVN5
c3RlbUNhbGxiYWNrc0JyaWRnZS5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMv
V29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZS5jcHAKQEAgLTE1Niw3ICsxNTYsNyBAQCB2
b2lkIFdvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2U6OnN0b3AoKQogICAgIH0KIH0KIAot
dm9pZCBXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlOjpwb3N0T3BlbkZpbGVTeXN0ZW1U
b01haW5UaHJlYWQoV2ViQ29tbW9uV29ya2VyQ2xpZW50KiBjb21tb25DbGllbnQsIFdlYkZpbGVT
eXN0ZW06OlR5cGUgdHlwZSwgbG9uZyBsb25nIHNpemUsIGJvb2wgY3JlYXRlLCBjb25zdCBTdHJp
bmcmIG1vZGUpCit2b2lkIFdvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2U6OnBvc3RPcGVu
RmlsZVN5c3RlbVRvTWFpblRocmVhZChOZXdXZWJDb21tb25Xb3JrZXJDbGllbnQqIGNvbW1vbkNs
aWVudCwgV2ViRmlsZVN5c3RlbTo6VHlwZSB0eXBlLCBsb25nIGxvbmcgc2l6ZSwgYm9vbCBjcmVh
dGUsIGNvbnN0IFN0cmluZyYgbW9kZSkKIHsKICAgICBkaXNwYXRjaFRhc2tUb01haW5UaHJlYWQo
CiAgICAgICAgIGNyZWF0ZUNhbGxiYWNrVGFzaygmb3BlbkZpbGVTeXN0ZW1Pbk1haW5UaHJlYWQs
CkBAIC0yNTEsNyArMjUxLDcgQEAgdm9pZCBXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdl
Ojpwb3N0UmVhZERpcmVjdG9yeVRvTWFpblRocmVhZChXZWJGaWxlU3lzdGUKICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIEFsbG93Q3Jvc3NUaHJlYWRBY2Nlc3ModGhpcyksIG1vZGUpKTsKIH0K
IAotdm9pZCBXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlOjpvcGVuRmlsZVN5c3RlbU9u
TWFpblRocmVhZChTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgV2ViQ29tbW9uV29ya2VyQ2xpZW50
KiBjb21tb25DbGllbnQsIFdlYkZpbGVTeXN0ZW06OlR5cGUgdHlwZSwgbG9uZyBsb25nIHNpemUs
IGJvb2wgY3JlYXRlLCBXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlKiBicmlkZ2UsIGNv
bnN0IFN0cmluZyYgbW9kZSkKK3ZvaWQgV29ya2VyRmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZTo6
b3BlbkZpbGVTeXN0ZW1Pbk1haW5UaHJlYWQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIE5ld1dl
YkNvbW1vbldvcmtlckNsaWVudCogY29tbW9uQ2xpZW50LCBXZWJGaWxlU3lzdGVtOjpUeXBlIHR5
cGUsIGxvbmcgbG9uZyBzaXplLCBib29sIGNyZWF0ZSwgV29ya2VyRmlsZVN5c3RlbUNhbGxiYWNr
c0JyaWRnZSogYnJpZGdlLCBjb25zdCBTdHJpbmcmIG1vZGUpCiB7CiAgICAgaWYgKCFjb21tb25D
bGllbnQpCiAgICAgICAgIGJyaWRnZS0+ZGlkRmFpbE9uTWFpblRocmVhZChXZWJGaWxlRXJyb3JB
Ym9ydCwgbW9kZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3NyYy9Xb3Jr
ZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlLmggYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL3Ny
Yy9Xb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlLmgKaW5kZXggOWM0NGNiMWE5NzZlOGQ2
NTJlMDYwNGZjNjFlNzBhOTJlM2EyZWRlOS4uOGFlN2ViMzQ5NTEwZjQ5ZjAyOTZkNWJkNDkyNDA1
NTI3NzRhMDNlNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9zcmMvV29ya2Vy
RmlsZVN5c3RlbUNhbGxiYWNrc0JyaWRnZS5oCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0v
c3JjL1dvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2UuaApAQCAtNTEsNyArNTEsNyBAQCBu
YW1lc3BhY2UgV2ViS2l0IHsKIAogY2xhc3MgQXN5bmNGaWxlU3lzdGVtOwogY2xhc3MgTWFpblRo
cmVhZEZpbGVTeXN0ZW1DYWxsYmFja3M7Ci1jbGFzcyBXZWJDb21tb25Xb3JrZXJDbGllbnQ7Citj
bGFzcyBOZXdXZWJDb21tb25Xb3JrZXJDbGllbnQ7CiBjbGFzcyBUaHJlYWRhYmxlQ2FsbGJhY2tz
QnJpZGdlV3JhcHBlcjsKIGNsYXNzIFdlYkZpbGVTeXN0ZW1DYWxsYmFja3M7CiBzdHJ1Y3QgV2Vi
RmlsZUluZm87CkBAIC04Nyw3ICs4Nyw3IEBAIHB1YmxpYzoKICAgICB9CiAKICAgICAvLyBNZXRo
b2RzIHRoYXQgY3JlYXRlIGFuIGluc3RhbmNlIGFuZCBwb3N0IGFuIGluaXRpYWwgcmVxdWVzdCB0
YXNrIHRvIHRoZSBtYWluIHRocmVhZC4gVGhleSBtdXN0IGJlIGNhbGxlZCBvbiB0aGUgd29ya2Vy
IHRocmVhZC4KLSAgICB2b2lkIHBvc3RPcGVuRmlsZVN5c3RlbVRvTWFpblRocmVhZChXZWJDb21t
b25Xb3JrZXJDbGllbnQqLCBXZWJGaWxlU3lzdGVtOjpUeXBlLCBsb25nIGxvbmcgc2l6ZSwgYm9v
bCBjcmVhdGUsIGNvbnN0IFN0cmluZyYgbW9kZSk7CisgICAgdm9pZCBwb3N0T3BlbkZpbGVTeXN0
ZW1Ub01haW5UaHJlYWQoTmV3V2ViQ29tbW9uV29ya2VyQ2xpZW50KiwgV2ViRmlsZVN5c3RlbTo6
VHlwZSwgbG9uZyBsb25nIHNpemUsIGJvb2wgY3JlYXRlLCBjb25zdCBTdHJpbmcmIG1vZGUpOwog
ICAgIHZvaWQgcG9zdE1vdmVUb01haW5UaHJlYWQoV2ViRmlsZVN5c3RlbSosIGNvbnN0IFdlYkNv
cmU6OktVUkwmIHNyY1BhdGgsIGNvbnN0IFdlYkNvcmU6OktVUkwmIGRlc3RQYXRoLCBjb25zdCBT
dHJpbmcmIG1vZGUpOwogICAgIHZvaWQgcG9zdENvcHlUb01haW5UaHJlYWQoV2ViRmlsZVN5c3Rl
bSosIGNvbnN0IFdlYkNvcmU6OktVUkwmIHNyY1BhdGgsIGNvbnN0IFdlYkNvcmU6OktVUkwmIGRl
c3RQYXRoLCBjb25zdCBTdHJpbmcmIG1vZGUpOwogICAgIHZvaWQgcG9zdFJlbW92ZVRvTWFpblRo
cmVhZChXZWJGaWxlU3lzdGVtKiwgY29uc3QgV2ViQ29yZTo6S1VSTCYgcGF0aCwgY29uc3QgU3Ry
aW5nJiBtb2RlKTsKQEAgLTExMCw3ICsxMTAsNyBAQCBwcml2YXRlOgogICAgIFdvcmtlckZpbGVT
eXN0ZW1DYWxsYmFja3NCcmlkZ2UoV2ViQ29yZTo6V29ya2VyTG9hZGVyUHJveHkqLCBXZWJDb3Jl
OjpTY3JpcHRFeGVjdXRpb25Db250ZXh0KiwgV2ViRmlsZVN5c3RlbUNhbGxiYWNrcyopOwogCiAg
ICAgLy8gTWV0aG9kcyB0aGF0IGFyZSB0byBiZSBjYWxsZWQgb24gdGhlIG1haW4gdGhyZWFkLgot
ICAgIHN0YXRpYyB2b2lkIG9wZW5GaWxlU3lzdGVtT25NYWluVGhyZWFkKFdlYkNvcmU6OlNjcmlw
dEV4ZWN1dGlvbkNvbnRleHQqLCBXZWJDb21tb25Xb3JrZXJDbGllbnQqLCBXZWJGaWxlU3lzdGVt
OjpUeXBlLCBsb25nIGxvbmcgc2l6ZSwgYm9vbCBjcmVhdGUsIFdvcmtlckZpbGVTeXN0ZW1DYWxs
YmFja3NCcmlkZ2UqLCBjb25zdCBTdHJpbmcmIG1vZGUpOworICAgIHN0YXRpYyB2b2lkIG9wZW5G
aWxlU3lzdGVtT25NYWluVGhyZWFkKFdlYkNvcmU6OlNjcmlwdEV4ZWN1dGlvbkNvbnRleHQqLCBO
ZXdXZWJDb21tb25Xb3JrZXJDbGllbnQqLCBXZWJGaWxlU3lzdGVtOjpUeXBlLCBsb25nIGxvbmcg
c2l6ZSwgYm9vbCBjcmVhdGUsIFdvcmtlckZpbGVTeXN0ZW1DYWxsYmFja3NCcmlkZ2UqLCBjb25z
dCBTdHJpbmcmIG1vZGUpOwogICAgIHN0YXRpYyB2b2lkIG1vdmVPbk1haW5UaHJlYWQoV2ViQ29y
ZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFdlYkZpbGVTeXN0ZW0qLCBjb25zdCBXZWJDb3Jl
OjpLVVJMJiBzcmNQYXRoLCBjb25zdCBXZWJDb3JlOjpLVVJMJiBkZXN0UGF0aCwgV29ya2VyRmls
ZVN5c3RlbUNhbGxiYWNrc0JyaWRnZSosIGNvbnN0IFN0cmluZyYgbW9kZSk7CiAgICAgc3RhdGlj
IHZvaWQgY29weU9uTWFpblRocmVhZChXZWJDb3JlOjpTY3JpcHRFeGVjdXRpb25Db250ZXh0Kiwg
V2ViRmlsZVN5c3RlbSosIGNvbnN0IFdlYkNvcmU6OktVUkwmIHNyY1BhdGgsIGNvbnN0IFdlYkNv
cmU6OktVUkwmIGRlc3RQYXRoLCBXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlKiwgY29u
c3QgU3RyaW5nJiBtb2RlKTsKICAgICBzdGF0aWMgdm9pZCByZW1vdmVPbk1haW5UaHJlYWQoV2Vi
Q29yZTo6U2NyaXB0RXhlY3V0aW9uQ29udGV4dCosIFdlYkZpbGVTeXN0ZW0qLCBjb25zdCBXZWJD
b3JlOjpLVVJMJiBwYXRoLCBXb3JrZXJGaWxlU3lzdGVtQ2FsbGJhY2tzQnJpZGdlKiwgY29uc3Qg
U3RyaW5nJiBtb2RlKTsKZGlmZiAtLWdpdCBhL1Rvb2xzL0NoYW5nZUxvZyBiL1Rvb2xzL0NoYW5n
ZUxvZwppbmRleCBmMzE1ZTExOWUwYmQ0N2UxYmM3NGUwNGE3ZmFjZWE1YmQ3ODBmY2ZkLi4yMTUz
YzRkOGRlZjQxZmYxYWNlNmY5YjA0OWZiMWIzYmU3OWEwNzUwIDEwMDY0NAotLS0gYS9Ub29scy9D
aGFuZ2VMb2cKKysrIGIvVG9vbHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMTEtMTIt
MjggIFNoZXJpZmYgQm90ICA8d2Via2l0LnJldmlldy5ib3RAZ21haWwuY29tPgorCisgICAgICAg
IFVucmV2aWV3ZWQsIHJvbGxpbmcgb3V0IHIxMDM3ODUuCisgICAgICAgIGh0dHA6Ly90cmFjLndl
YmtpdC5vcmcvY2hhbmdlc2V0LzEwMzc4NQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9y
Zy9zaG93X2J1Zy5jZ2k/aWQ9NzUzMzIKKworICAgICAgICBCcm9rZSBidWlsZGVyczsgbG9va3Mg
bGlrZSBjbG9iYmVyaW5nIGRpZG50IGhlbHAgKFJlcXVlc3RlZCBieQorICAgICAgICBkc2xvbW92
IG9uICN3ZWJraXQpLgorCisgICAgICAgICogRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFdl
Yldvcmtlci5oOgorICAgICAgICAoVGVzdFdlYldvcmtlcjo6Y3JlYXRlV29ya2VyKToKKyAgICAg
ICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5jcHA6CisgICAgICAgIChX
ZWJWaWV3SG9zdDo6Y3JlYXRlV29ya2VyKToKKyAgICAgICAgKiBEdW1wUmVuZGVyVHJlZS9jaHJv
bWl1bS9XZWJWaWV3SG9zdC5oOgorCiAyMDExLTEyLTI4ICBEbWl0cnkgTG9tb3YgIDxkc2xvbW92
QGdvb2dsZS5jb20+CiAKIApkaWZmIC0tZ2l0IGEvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21p
dW0vVGVzdFdlYldvcmtlci5oIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0vVGVzdFdl
Yldvcmtlci5oCmluZGV4IGFkODJhODdlOWVjNWNlYTNmYjZmZDc3N2VhNjM2Nzk4MzZlMmQxZDku
LjcxYmZmY2U2MjhmN2IwMGIwNDY4ZDAzYjM3NzI2OGNiNmY1ZWY5M2YgMTAwNjQ0Ci0tLSBhL1Rv
b2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1Rlc3RXZWJXb3JrZXIuaAorKysgYi9Ub29scy9E
dW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9UZXN0V2ViV29ya2VyLmgKQEAgLTMyLDggKzMyLDggQEAK
ICNkZWZpbmUgVGVzdFdlYldvcmtlcl9oCiAKICNpbmNsdWRlICJXZWJNZXNzYWdlUG9ydENoYW5u
ZWwuaCIKLSNpbmNsdWRlICJXZWJTaGFyZWRXb3JrZXJDbGllbnQuaCIKICNpbmNsdWRlICJXZWJX
b3JrZXIuaCIKKyNpbmNsdWRlICJXZWJXb3JrZXJDbGllbnQuaCIKICNpbmNsdWRlIDx3dGYvUmVm
Q291bnRlZC5oPgogCiBuYW1lc3BhY2UgV2ViS2l0IHsKQEAgLTQzLDcgKzQzLDcgQEAgY2xhc3Mg
V2ViVVJMOwogfQogCiBjbGFzcyBUZXN0V2ViV29ya2VyIDogcHVibGljIFdlYktpdDo6V2ViV29y
a2VyLAotICAgICAgICAgICAgICAgICAgICAgIHB1YmxpYyBXZWJLaXQ6OldlYlNoYXJlZFdvcmtl
ckNsaWVudCwKKyAgICAgICAgICAgICAgICAgICAgICBwdWJsaWMgV2ViS2l0OjpXZWJXb3JrZXJD
bGllbnQsCiAgICAgICAgICAgICAgICAgICAgICAgcHVibGljIFdURjo6UmVmQ291bnRlZDxUZXN0
V2ViV29ya2VyPiB7CiBwdWJsaWM6CiAgICAgVGVzdFdlYldvcmtlcigpCkBAIC04MCw3ICs4MCw3
IEBAIHB1YmxpYzoKICAgICAgICAgLy8gUmVsZWFzZXMgdGhlIHJlZmVyZW5jZSBoZWxkIGZvciB3
b3JrZXIgY29udGV4dCBvYmplY3QuCiAgICAgICAgIGRlcmVmKCk7CiAgICAgfQotICAgIHZpcnR1
YWwgV2ViS2l0OjpXZWJXb3JrZXIqIGNyZWF0ZVdvcmtlcihXZWJLaXQ6OldlYlNoYXJlZFdvcmtl
ckNsaWVudCopIHsgcmV0dXJuIDA7IH0KKyAgICB2aXJ0dWFsIFdlYktpdDo6V2ViV29ya2VyKiBj
cmVhdGVXb3JrZXIoV2ViS2l0OjpXZWJXb3JrZXJDbGllbnQqKSB7IHJldHVybiAwOyB9CiAgICAg
dmlydHVhbCBXZWJLaXQ6OldlYk5vdGlmaWNhdGlvblByZXNlbnRlciogbm90aWZpY2F0aW9uUHJl
c2VudGVyKCkgeyByZXR1cm4gMDsgfQogICAgIHZpcnR1YWwgV2ViS2l0OjpXZWJBcHBsaWNhdGlv
bkNhY2hlSG9zdCogY3JlYXRlQXBwbGljYXRpb25DYWNoZUhvc3QoV2ViS2l0OjpXZWJBcHBsaWNh
dGlvbkNhY2hlSG9zdENsaWVudCopIHsgcmV0dXJuIDA7IH0KICAgICB2aXJ0dWFsIGJvb2wgYWxs
b3dEYXRhYmFzZShXZWJLaXQ6OldlYkZyYW1lKiwgY29uc3QgV2ViS2l0OjpXZWJTdHJpbmcmLCBj
b25zdCBXZWJLaXQ6OldlYlN0cmluZyYsIHVuc2lnbmVkIGxvbmcpIHsgcmV0dXJuIHRydWU7IH0K
ZGlmZiAtLWdpdCBhL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmNw
cCBiL1Rvb2xzL0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmNwcAppbmRleCAy
NGJkNDhmYzNiMmZiNjEyNzQ2MGM3ZDgyZjNkZjViMzkxMmUzNzc3Li5mZmUzYjE2NDZmMWM0MDdl
Y2ZlMzBkNjIwNzI4NmRhNDIwYzlkYjQyIDEwMDY0NAotLS0gYS9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5jcHAKKysrIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hy
b21pdW0vV2ViVmlld0hvc3QuY3BwCkBAIC04MzYsNyArODM2LDcgQEAgV2ViUGx1Z2luKiBXZWJW
aWV3SG9zdDo6Y3JlYXRlUGx1Z2luKFdlYkZyYW1lKiBmcmFtZSwgY29uc3QgV2ViUGx1Z2luUGFy
YW1zJiBwYXIKICAgICByZXR1cm4gd2Via2l0X3N1cHBvcnQ6OkNyZWF0ZVdlYlBsdWdpbihmcmFt
ZSwgcGFyYW1zKTsKIH0KIAotV2ViV29ya2VyKiBXZWJWaWV3SG9zdDo6Y3JlYXRlV29ya2VyKFdl
YkZyYW1lKiwgV2ViU2hhcmVkV29ya2VyQ2xpZW50KikKK1dlYldvcmtlciogV2ViVmlld0hvc3Q6
OmNyZWF0ZVdvcmtlcihXZWJGcmFtZSosIFdlYldvcmtlckNsaWVudCopCiB7CiAgICAgcmV0dXJu
IG5ldyBUZXN0V2ViV29ya2VyKCk7CiB9CmRpZmYgLS1naXQgYS9Ub29scy9EdW1wUmVuZGVyVHJl
ZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5oIGIvVG9vbHMvRHVtcFJlbmRlclRyZWUvY2hyb21pdW0v
V2ViVmlld0hvc3QuaAppbmRleCBhMmY3YmNhOWUyZmMxZjBhNTE1NTBjY2Y2ZDJhMjdmMmViMGIy
N2RhLi45MjIxNjNhYjlhZTU4ZmRkNDQ2YmI0OTBlYjUyZTc0MzI0YTcwYjJlIDEwMDY0NAotLS0g
YS9Ub29scy9EdW1wUmVuZGVyVHJlZS9jaHJvbWl1bS9XZWJWaWV3SG9zdC5oCisrKyBiL1Rvb2xz
L0R1bXBSZW5kZXJUcmVlL2Nocm9taXVtL1dlYlZpZXdIb3N0LmgKQEAgLTU1LDcgKzU1LDYgQEAg
Y2xhc3MgV2ViRGV2aWNlT3JpZW50YXRpb25DbGllbnRNb2NrOwogY2xhc3MgV2ViR2VvbG9jYXRp
b25DbGllbnQ7CiBjbGFzcyBXZWJHZW9sb2NhdGlvbkNsaWVudE1vY2s7CiBjbGFzcyBXZWJHZW9s
b2NhdGlvblNlcnZpY2VNb2NrOwotY2xhc3MgV2ViU2hhcmVkV29ya2VyQ2xpZW50OwogY2xhc3Mg
V2ViU3BlZWNoSW5wdXRDb250cm9sbGVyOwogY2xhc3MgV2ViU3BlZWNoSW5wdXRDb250cm9sbGVy
TW9jazsKIGNsYXNzIFdlYlNwZWVjaElucHV0TGlzdGVuZXI7CkBAIC0xNzQsNyArMTczLDcgQEAg
Y2xhc3MgV2ViVmlld0hvc3QgOiBwdWJsaWMgV2ViS2l0OjpXZWJTcGVsbENoZWNrQ2xpZW50LCBw
dWJsaWMgV2ViS2l0OjpXZWJWaWV3Q2wKIAogICAgIC8vIFdlYktpdDo6V2ViRnJhbWVDbGllbnQK
ICAgICB2aXJ0dWFsIFdlYktpdDo6V2ViUGx1Z2luKiBjcmVhdGVQbHVnaW4oV2ViS2l0OjpXZWJG
cmFtZSosIGNvbnN0IFdlYktpdDo6V2ViUGx1Z2luUGFyYW1zJik7Ci0gICAgdmlydHVhbCBXZWJL
aXQ6OldlYldvcmtlciogY3JlYXRlV29ya2VyKFdlYktpdDo6V2ViRnJhbWUqLCBXZWJLaXQ6Oldl
YlNoYXJlZFdvcmtlckNsaWVudCopOworICAgIHZpcnR1YWwgV2ViS2l0OjpXZWJXb3JrZXIqIGNy
ZWF0ZVdvcmtlcihXZWJLaXQ6OldlYkZyYW1lKiwgV2ViS2l0OjpXZWJXb3JrZXJDbGllbnQqKTsK
ICAgICB2aXJ0dWFsIFdlYktpdDo6V2ViTWVkaWFQbGF5ZXIqIGNyZWF0ZU1lZGlhUGxheWVyKFdl
YktpdDo6V2ViRnJhbWUqLCBXZWJLaXQ6OldlYk1lZGlhUGxheWVyQ2xpZW50Kik7CiAgICAgdmly
dHVhbCBXZWJLaXQ6OldlYkFwcGxpY2F0aW9uQ2FjaGVIb3N0KiBjcmVhdGVBcHBsaWNhdGlvbkNh
Y2hlSG9zdChXZWJLaXQ6OldlYkZyYW1lKiwgV2ViS2l0OjpXZWJBcHBsaWNhdGlvbkNhY2hlSG9z
dENsaWVudCopOwogICAgIHZpcnR1YWwgdm9pZCBsb2FkVVJMRXh0ZXJuYWxseShXZWJLaXQ6Oldl
YkZyYW1lKiwgY29uc3QgV2ViS2l0OjpXZWJVUkxSZXF1ZXN0JiwgV2ViS2l0OjpXZWJOYXZpZ2F0
aW9uUG9saWN5KTsK
</data>

          </attachment>
      

    </bug>

</bugzilla>