<?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>201333</bug_id>
          
          <creation_ts>2019-08-30 00:41:16 -0700</creation_ts>
          <short_desc>Introduce WorkerMessagePortChannelRegistry</short_desc>
          <delta_ts>2019-12-18 14:37:51 -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>Page Loading</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=205357</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=205414</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>201299</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="youenn fablet">youennf</reporter>
          <assigned_to name="youenn fablet">youennf</assigned_to>
          <cc>achristensen</cc>
    
    <cc>beidson</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>kangil.han</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1566586</commentid>
    <comment_count>0</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2019-08-30 00:41:16 -0700</bug_when>
    <thetext>Introduce WorkerMessagePortChannelRegistry</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1566600</commentid>
    <comment_count>1</comment_count>
      <attachid>377689</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2019-08-30 01:48:17 -0700</bug_when>
    <thetext>Created attachment 377689
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1566603</commentid>
    <comment_count>2</comment_count>
      <attachid>377690</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2019-08-30 02:04:28 -0700</bug_when>
    <thetext>Created attachment 377690
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1566672</commentid>
    <comment_count>3</comment_count>
      <attachid>377690</attachid>
    <who name="Alex Christensen">achristensen</who>
    <bug_when>2019-08-30 08:53:23 -0700</bug_when>
    <thetext>Comment on attachment 377690
Patch

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

&gt; Source/WebCore/dom/MessagePort.cpp:252
&gt; +        auto scopeExit = makeScopeExit([&amp;completionCallback] {
&gt; +            completionCallback();
&gt; +        });

Why make a lambda that calls the Function instead of just using the Function itself?  Why no WTFMove? Also, this seems like it should be a CompletionHandler.

&gt; Source/WebCore/dom/MessagePort.cpp:315
&gt; +        callOnMainThread([remoteIdentifier = m_remoteIdentifier, weakThis = makeWeakPtr(const_cast&lt;MessagePort*&gt;(this)), workerThread = WTFMove(workerThread)]() mutable {

makeWeakPtr should take const T&amp; instead of non-const T&amp; and this const_cast shouldn&apos;t be necessary. Same with const T*</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1567069</commentid>
    <comment_count>4</comment_count>
      <attachid>377829</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2019-09-01 13:21:38 -0700</bug_when>
    <thetext>Created attachment 377829
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1567123</commentid>
    <comment_count>5</comment_count>
      <attachid>377839</attachid>
    <who name="youenn fablet">youennf</who>
    <bug_when>2019-09-01 22:51:08 -0700</bug_when>
    <thetext>Created attachment 377839
Patch for landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1567124</commentid>
    <comment_count>6</comment_count>
    <who name="youenn fablet">youennf</who>
    <bug_when>2019-09-01 22:53:55 -0700</bug_when>
    <thetext>(In reply to Alex Christensen from comment #3)
&gt; Comment on attachment 377690 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=377690&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/dom/MessagePort.cpp:252
&gt; &gt; +        auto scopeExit = makeScopeExit([&amp;completionCallback] {
&gt; &gt; +            completionCallback();
&gt; &gt; +        });
&gt; 
&gt; Why make a lambda that calls the Function instead of just using the Function
&gt; itself?  Why no WTFMove? Also, this seems like it should be a
&gt; CompletionHandler.

Right.

&gt; &gt; Source/WebCore/dom/MessagePort.cpp:315
&gt; &gt; +        callOnMainThread([remoteIdentifier = m_remoteIdentifier, weakThis = makeWeakPtr(const_cast&lt;MessagePort*&gt;(this)), workerThread = WTFMove(workerThread)]() mutable {
&gt; 
&gt; makeWeakPtr should take const T&amp; instead of non-const T&amp; and this const_cast
&gt; shouldn&apos;t be necessary. Same with const T*

makeWeakPtr can take a const pointer as input but it will create a WeakPtr of a const pointer.
In that case, we want to have a non const weakThis to call updateActivity.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1567163</commentid>
    <comment_count>7</comment_count>
      <attachid>377839</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-09-02 02:31:21 -0700</bug_when>
    <thetext>Comment on attachment 377839
Patch for landing

Clearing flags on attachment: 377839

Committed r249378: &lt;https://trac.webkit.org/changeset/249378&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1567164</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2019-09-02 02:31:23 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1567168</commentid>
    <comment_count>9</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2019-09-02 02:32:18 -0700</bug_when>
    <thetext>&lt;rdar://problem/54945252&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>377689</attachid>
            <date>2019-08-30 01:48:17 -0700</date>
            <delta_ts>2019-08-30 02:04:24 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-201333-20190830104815.patch</filename>
            <type>text/plain</type>
            <size>56558</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ5MjcyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTJhMTNjODU1NDlhZWY5
N2ExMmRhYmQ1MzQ0MjM5MWZmYjY4MDdkMi4uMTgzYmY1ZmRhMDRiNzY3YzJjZWNjZDgzMDM0NjQ1
YTUzNzIzOTIzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYyIEBACisyMDE5LTA4LTMwICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBJbnRyb2R1Y2UgV29ya2Vy
TWVzc2FnZVBvcnRDaGFubmVsUmVnaXN0cnkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIwMTMzMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggaW50cm9kdWNlcyBhIGRlZGljYXRlZCByZWdp
c3RyeSBmb3Igd29ya2Vycy4KKyAgICAgICAgVGhpcyByZWdpc3RyeSB3aWxsIGhvcCB0byB0aGUg
bWFpbiB0aHJlYWQgYW5kIHVzZSB0aGUKKyAgICAgICAgcmVndWxhciBtYWluIHRocmVhZCByZWdp
c3RyeSB0byBkbyB0aGUgYWN0dWFsIHByb2Nlc3NpbmcuCisKKyAgICAgICAgQ292ZXJlZCBieSBl
eGlzdGluZyB0ZXN0cy4KKworICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFdlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6Om1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVy
KToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuaDoKKyAgICAgICAgKiBkb20vTWVzc2FnZUNoYW5u
ZWwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVzc2FnZUNoYW5uZWw6Ok1lc3NhZ2VDaGFubmVs
KToKKyAgICAgICAgKiBkb20vTWVzc2FnZVBvcnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVz
c2FnZVBvcnQ6OmVudGFuZ2xlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lc3NhZ2VQb3J0Ojpwb3N0
TWVzc2FnZSk6CisgICAgICAgIChXZWJDb3JlOjpNZXNzYWdlUG9ydDo6ZGlzZW50YW5nbGUpOgor
ICAgICAgICAoV2ViQ29yZTo6TWVzc2FnZVBvcnQ6OmNsb3NlKToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lc3NhZ2VQb3J0OjpkaXNwYXRjaE1lc3NhZ2VzKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lc3Nh
Z2VQb3J0OjpoYXNQZW5kaW5nQWN0aXZpdHkgY29uc3QpOgorICAgICAgICAqIGRvbS9tZXNzYWdl
cG9ydHMvTWVzc2FnZVBvcnRDaGFubmVsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lc3NhZ2VQ
b3J0Q2hhbm5lbDo6dGFrZUFsbE1lc3NhZ2VzRm9yUG9ydCk6CisgICAgICAgIChXZWJDb3JlOjpN
ZXNzYWdlUG9ydENoYW5uZWw6OmNoZWNrUmVtb3RlUG9ydEZvckFjdGl2aXR5KToKKyAgICAgICAg
KiBkb20vbWVzc2FnZXBvcnRzL01lc3NhZ2VQb3J0Q2hhbm5lbC5oOgorICAgICAgICAqIGRvbS9t
ZXNzYWdlcG9ydHMvTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6TWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXI6OnNpbmdsZXRvbik6CisgICAgICAgIChX
ZWJDb3JlOjpNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlcjo6ZnJvbUNvbnRleHQpOgorICAgICAg
ICAqIGRvbS9tZXNzYWdlcG9ydHMvTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXIuaDoKKyAgICAg
ICAgKiBkb20vbWVzc2FnZXBvcnRzL01lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVySW1wbC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlckltcGw6OnRha2VB
bGxNZXNzYWdlc0ZvclBvcnQpOgorICAgICAgICAoV2ViQ29yZTo6TWVzc2FnZVBvcnRDaGFubmVs
UHJvdmlkZXJJbXBsOjpjaGVja1JlbW90ZVBvcnRGb3JBY3Rpdml0eSk6CisgICAgICAgICogZG9t
L21lc3NhZ2Vwb3J0cy9NZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlckltcGwuaDoKKyAgICAgICAg
KiBkb20vbWVzc2FnZXBvcnRzL01lc3NhZ2VQb3J0Q2hhbm5lbFJlZ2lzdHJ5LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lc3NhZ2VQb3J0Q2hhbm5lbFJlZ2lzdHJ5Ojp0YWtlQWxsTWVzc2FnZXNG
b3JQb3J0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lc3NhZ2VQb3J0Q2hhbm5lbFJlZ2lzdHJ5Ojpj
aGVja1JlbW90ZVBvcnRGb3JBY3Rpdml0eSk6CisgICAgICAgICogZG9tL21lc3NhZ2Vwb3J0cy9N
ZXNzYWdlUG9ydENoYW5uZWxSZWdpc3RyeS5oOgorICAgICAgICAqIGRvbS9tZXNzYWdlcG9ydHMv
V29ya2VyTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdl
YkNvcmU6Oldvcmtlck1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyOjpXb3JrZXJNZXNzYWdlUG9y
dENoYW5uZWxQcm92aWRlcik6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJNZXNzYWdlUG9ydENo
YW5uZWxQcm92aWRlcjo6fldvcmtlck1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyKToKKyAgICAg
ICAgKFdlYkNvcmU6Oldvcmtlck1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyOjpjcmVhdGVOZXdN
ZXNzYWdlUG9ydENoYW5uZWwpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyTWVzc2FnZVBvcnRD
aGFubmVsUHJvdmlkZXI6OmVudGFuZ2xlTG9jYWxQb3J0SW5UaGlzUHJvY2Vzc1RvUmVtb3RlKToK
KyAgICAgICAgKFdlYkNvcmU6Oldvcmtlck1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyOjptZXNz
YWdlUG9ydERpc2VudGFuZ2xlZCk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJNZXNzYWdlUG9y
dENoYW5uZWxQcm92aWRlcjo6bWVzc2FnZVBvcnRDbG9zZWQpOgorICAgICAgICAoV2ViQ29yZTo6
V29ya2VyTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXI6OnBvc3RNZXNzYWdlVG9SZW1vdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6V29ya2VyTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXI6OnRha2VB
bGxNZXNzYWdlc0ZvclBvcnQpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyTWVzc2FnZVBvcnRD
aGFubmVsUHJvdmlkZXI6OmNoZWNrUmVtb3RlUG9ydEZvckFjdGl2aXR5KToKKyAgICAgICAgKFdl
YkNvcmU6Oldvcmtlck1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyOjpjaGVja1Byb2Nlc3NMb2Nh
bFBvcnRGb3JBY3Rpdml0eSk6CisgICAgICAgICogZG9tL21lc3NhZ2Vwb3J0cy9Xb3JrZXJNZXNz
YWdlUG9ydENoYW5uZWxQcm92aWRlci5oOiBBZGRlZC4KKyAgICAgICAgKiB3b3JrZXJzL1dvcmtl
ckdsb2JhbFNjb3BlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlckdsb2JhbFNjb3BlOjpt
ZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlcik6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJHbG9i
YWxTY29wZS5oOgorCiAyMDE5LTA4LTI5ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNv
bT4KIAogICAgICAgICBTa2lwIGZldGNoIGV2ZW50IGRpc3BhdGNoaW5nIGlmIG5vIGZldGNoIGV2
ZW50IGhhbmRsZXIgaXMgYWRkZWQgYXQgc2NyaXB0IGV2YWx1YXRpb24gdGltZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRl
eCBlYTE3NDQzYzg5MzZkNDg5NGMzYzA5Yjk1ZTE1OGE0OWJlNjE2YzRkLi5mNzJmYTJjY2JhYzE5
MDk0MGVhM2ZkYzc0ZWUzYmNjODQxYjNmOTIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisy
MDE5LTA4LTMwICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBJ
bnRyb2R1Y2UgV29ya2VyTWVzc2FnZVBvcnRDaGFubmVsUmVnaXN0cnkKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMTMzMworCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEJ5IGludHJvZHVjaW5nIFdvcmtlck1l
c3NhZ2VQb3J0Q2hhbm5lbFJlZ2lzdHJ5LCB3ZSBhcmUgbWFraW5nCisgICAgICAgIHN1cmUgVUlN
ZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlciBpcyBvbmx5IGNhbGxlZCBmcm9tIHRoZSBtYWluIHRo
cmVhZC4KKyAgICAgICAgVGhpcyB3aWxsIGhlbHAgd2hlbiBtb3ZpbmcgdGhlIHJlZ2lzdHJ5IHRv
IG5ldHdvcmsgcHJvY2Vzcy4KKworICAgICAgICAqIFVJUHJvY2Vzcy9VSU1lc3NhZ2VQb3J0Q2hh
bm5lbFByb3ZpZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6VUlNZXNzYWdlUG9ydENoYW5uZWxQ
cm92aWRlcjo6dGFrZUFsbE1lc3NhZ2VzRm9yUG9ydCk6CisgICAgICAgIChXZWJLaXQ6OlVJTWVz
c2FnZVBvcnRDaGFubmVsUHJvdmlkZXI6OmNoZWNrUmVtb3RlUG9ydEZvckFjdGl2aXR5KToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvVUlNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlci5oOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlk
ZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlcjo6
dGFrZUFsbE1lc3NhZ2VzRm9yUG9ydCk6CisgICAgICAgIChXZWJLaXQ6OldlYk1lc3NhZ2VQb3J0
Q2hhbm5lbFByb3ZpZGVyOjpkaWRUYWtlQWxsTWVzc2FnZXNGb3JQb3J0KToKKyAgICAgICAgKFdl
YktpdDo6V2ViTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXI6OmRpZENoZWNrUmVtb3RlUG9ydEZv
ckFjdGl2aXR5KToKKyAgICAgICAgKFdlYktpdDo6V2ViTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlk
ZXI6OmNoZWNrUmVtb3RlUG9ydEZvckFjdGl2aXR5KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYk1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyLmg6CisKIDIwMTktMDgt
MjkgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIFNraXAgZmV0
Y2ggZXZlbnQgZGlzcGF0Y2hpbmcgaWYgbm8gZmV0Y2ggZXZlbnQgaGFuZGxlciBpcyBhZGRlZCBh
dCBzY3JpcHQgZXZhbHVhdGlvbiB0aW1lCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3Vy
Y2VzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CmluZGV4IGUzYWViMDhjZDYwN2E1
ZTQ4MmVjNDM3OWRiZTI4ODM3ZDM2NjJmNDEuLjE5MTQ3MGMwYzA3MjE1MmMxNTdjY2NkNGE3Yjk2
ZDQzOGMyZGE3MzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CisrKyBi
L1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CkBAIC05NzQsNiArOTc0LDcgQEAgZG9tL21lc3Nh
Z2Vwb3J0cy9NZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlci5jcHAKIGRvbS9tZXNzYWdlcG9ydHMv
TWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXJJbXBsLmNwcAogZG9tL21lc3NhZ2Vwb3J0cy9NZXNz
YWdlUG9ydENoYW5uZWxSZWdpc3RyeS5jcHAKIGRvbS9tZXNzYWdlcG9ydHMvTWVzc2FnZVdpdGhN
ZXNzYWdlUG9ydHMuY3BwCitkb20vbWVzc2FnZXBvcnRzL1dvcmtlck1lc3NhZ2VQb3J0Q2hhbm5l
bFByb3ZpZGVyLmNwcAogCiBkb21qaXQvRE9NSklUSGVscGVycy5jcHAKIGRvbWppdC9KU0RvY3Vt
ZW50RE9NSklULmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCmluZGV4IDM3YmUyMTI0MjM0MzE2MGU5YmRjOTZhNGNlYzhiZjZhMzdkMGMx
OTkuLjZkODU2OWU4YmU5NGM1N2E2ZmM3MmI0ZGQ2YjFlZWE4ZTA3M2JjNGMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTcxNjYs
NiArNzE2Niw4IEBACiAJCTQxMTAzQUE5MUUzOTc5MEEwMDc2OUYxNCAvKiBSZWFsdGltZUluY29t
aW5nQXVkaW9Tb3VyY2VDb2NvYS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBS
ZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2VDb2NvYS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk0MTEwM0FBQTFFMzk3OTBBMDA3NjlGMDMgLyogUmVhbHRpbWVJbmNvbWluZ0F1ZGlv
U291cmNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlYWx0aW1l
SW5jb21pbmdBdWRpb1NvdXJjZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQx
MTAzQUFBMUUzOTc5MEEwMDc2OUYxNCAvKiBSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2VDb2Nv
YS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZWFsdGltZUluY29t
aW5nQXVkaW9Tb3VyY2VDb2NvYS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQx
MTE0QTdBMjMxN0IzOUUwMEI1NjAwNyAvKiBXb3JrZXJNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRl
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBXb3JrZXJNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlci5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MTExNEE3QzIzMTdCMzlFMDBCNTYwMDcgLyog
V29ya2VyTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
V29ya2VyTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk0MTEyQjUzRjFGOUY5QzlCMDBFNjc4NzUgLyogU2VydmljZVdvcmtlclRocmVh
ZFByb3h5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNlcnZpY2VXb3JrZXJU
aHJlYWRQcm94eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTEyQjU0MTFGOUY5
QzlDMDBFNjc4NzUgLyogU2VydmljZVdvcmtlclRocmVhZFByb3h5LmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxMTg5RUY3MUFEODIzMjgwMEI5MEEwRCAvKiBS
ZWFkYWJsZVN0cmVhbURlZmF1bHRDb250cm9sbGVyLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGgg
PSBSZWFkYWJsZVN0cmVhbURlZmF1bHRDb250cm9sbGVyLmlkbDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTE4ODQ1LDYgKzE4ODQ3LDggQEAKIAkJCQk1MUVDQzNGMTIwMDU4N0I1MDA0
ODNFQUUgLyogTWVzc2FnZVBvcnRDaGFubmVsUmVnaXN0cnkuaCAqLywKIAkJCQk1MUE3NDhFMTIw
MDVEMEUwMDA3NUJBNjggLyogTWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMuY3BwICovLAogCQkJCTUx
QTc0OEUwMjAwNUQwRTAwMDc1QkE2OCAvKiBNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cy5oICovLAor
CQkJCTQxMTE0QTdDMjMxN0IzOUUwMEI1NjAwNyAvKiBXb3JrZXJNZXNzYWdlUG9ydENoYW5uZWxQ
cm92aWRlci5jcHAgKi8sCisJCQkJNDExMTRBN0EyMzE3QjM5RTAwQjU2MDA3IC8qIFdvcmtlck1l
c3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyLmggKi8sCiAJCQkpOwogCQkJcGF0aCA9IG1lc3NhZ2Vw
b3J0czsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApp
bmRleCAxNDlhZTI3MTYyZjMyMzU1NzJlZTMwYjQ3MDZjMmE1M2E1MTc3MjI0Li44NzM4M2QzY2U5
YTIzYjY4MjkwNDhhZjBmODNmNWUyZGRjZGEyZDczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAK
QEAgLTgyNzMsNCArODI3Myw5IEBAIHZvaWQgRG9jdW1lbnQ6OnNldEFwcGxlUGF5SXNBY3RpdmUo
KQogCiAjZW5kaWYKIAorTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXImIERvY3VtZW50OjptZXNz
YWdlUG9ydENoYW5uZWxQcm92aWRlcigpCit7CisgICAgcmV0dXJuIE1lc3NhZ2VQb3J0Q2hhbm5l
bFByb3ZpZGVyOjpzaW5nbGV0b24oKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnQuaAppbmRleCAxNjEyZTQyMGVjYTExYzRkYWQxMzVjZDkxMGZlNDU3NmVmZTcy
YWVkLi44OWM1YzZkMmYyMjA5Nzc1MGY2Y2M4YzkxMzk0NDdkMmRjZWE0OGE2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
RG9jdW1lbnQuaApAQCAtMTU3LDYgKzE1Nyw3IEBAIGNsYXNzIE1lZGlhUGxheWJhY2tUYXJnZXQ7
CiBjbGFzcyBNZWRpYVBsYXliYWNrVGFyZ2V0Q2xpZW50OwogY2xhc3MgTWVkaWFRdWVyeUxpc3Q7
CiBjbGFzcyBNZWRpYVF1ZXJ5TWF0Y2hlcjsKK2NsYXNzIE1lc3NhZ2VQb3J0Q2hhbm5lbFByb3Zp
ZGVyOwogY2xhc3MgTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0czsKIGNsYXNzIE5vZGVGaWx0
ZXI7CiBjbGFzcyBOb2RlSXRlcmF0b3I7CkBAIC0xNTI5LDYgKzE1MzAsOCBAQCBwdWJsaWM6CiAg
ICAgYm9vbCBpbkhpdFRlc3RpbmcoKSBjb25zdCB7IHJldHVybiBtX2luSGl0VGVzdGluZzsgfQog
I2VuZGlmCiAKKyAgICBNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlciYgbWVzc2FnZVBvcnRDaGFu
bmVsUHJvdmlkZXIoKTsKKwogcHJvdGVjdGVkOgogICAgIGVudW0gQ29uc3RydWN0aW9uRmxhZ3Mg
eyBTeW50aGVzaXplZCA9IDEsIE5vblJlbmRlcmVkUGxhY2Vob2xkZXIgPSAxIDw8IDEgfTsKICAg
ICBEb2N1bWVudChQQUw6OlNlc3Npb25JRCwgRnJhbWUqLCBjb25zdCBVUkwmLCB1bnNpZ25lZCA9
IERlZmF1bHREb2N1bWVudENsYXNzLCB1bnNpZ25lZCBjb25zdHJ1Y3Rpb25GbGFncyA9IDApOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VDaGFubmVsLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9NZXNzYWdlQ2hhbm5lbC5jcHAKaW5kZXggMTc0ZjVhMzdkZThjOTdiMGEx
YmZiNWYyZThkMGFmMGQ1ZDVhMjVjOS4uNzgxNzYzYTk5OTBiMzFkZWUwMGM0ZDNmMTBkODE4NTAy
OWMwYzcwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VDaGFubmVsLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZUNoYW5uZWwuY3BwCkBAIC00OSw3ICs0
OSw3IEBAIE1lc3NhZ2VDaGFubmVsOjpNZXNzYWdlQ2hhbm5lbChTY3JpcHRFeGVjdXRpb25Db250
ZXh0JiBjb250ZXh0KQogICAgIGlmICghY29udGV4dC5hY3RpdmVET01PYmplY3RzQXJlU3RvcHBl
ZCgpKSB7CiAgICAgICAgIEFTU0VSVCghbV9wb3J0MS0+Y2xvc2VkKCkpOwogICAgICAgICBBU1NF
UlQoIW1fcG9ydDItPmNsb3NlZCgpKTsKLSAgICAgICAgTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlk
ZXI6OnNpbmdsZXRvbigpLmNyZWF0ZU5ld01lc3NhZ2VQb3J0Q2hhbm5lbChpZDEsIGlkMik7Cisg
ICAgICAgIE1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyOjpmcm9tQ29udGV4dChjb250ZXh0KS5j
cmVhdGVOZXdNZXNzYWdlUG9ydENoYW5uZWwoaWQxLCBpZDIpOwogICAgIH0gZWxzZSB7CiAgICAg
ICAgIEFTU0VSVChtX3BvcnQxLT5jbG9zZWQoKSk7CiAgICAgICAgIEFTU0VSVChtX3BvcnQyLT5j
bG9zZWQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZVBvcnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VQb3J0LmNwcAppbmRleCA1MTQzMDRjOTA2NDE2
N2I5NGIxMDExY2U4YzgxOTRkNzRjMDE3N2E3Li5kMWVmZWEyMTJiZDMwMzE0ZjhiOTc1NDVhZDI0
NGU3MjI4MjU4YWMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZVBvcnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlUG9ydC5jcHAKQEAgLTM3LDYgKzM3
LDcgQEAKICNpbmNsdWRlICJXb3JrZXJUaHJlYWQuaCIKICNpbmNsdWRlIDx3dGYvQ29tcGxldGlv
bkhhbmRsZXIuaD4KICNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgorI2luY2x1ZGUg
PHd0Zi9TY29wZS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTEyNCw3ICsxMjUsNyBA
QCBNZXNzYWdlUG9ydDo6fk1lc3NhZ2VQb3J0KCkKIAogdm9pZCBNZXNzYWdlUG9ydDo6ZW50YW5n
bGUoKQogewotICAgIE1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyOjpzaW5nbGV0b24oKS5lbnRh
bmdsZUxvY2FsUG9ydEluVGhpc1Byb2Nlc3NUb1JlbW90ZShtX2lkZW50aWZpZXIsIG1fcmVtb3Rl
SWRlbnRpZmllcik7CisgICAgTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXI6OmZyb21Db250ZXh0
KCptX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQpLmVudGFuZ2xlTG9jYWxQb3J0SW5UaGlzUHJvY2Vz
c1RvUmVtb3RlKG1faWRlbnRpZmllciwgbV9yZW1vdGVJZGVudGlmaWVyKTsKIH0KIAogRXhjZXB0
aW9uT3I8dm9pZD4gTWVzc2FnZVBvcnQ6OnBvc3RNZXNzYWdlKEpTQzo6RXhlY1N0YXRlJiBzdGF0
ZSwgSlNDOjpKU1ZhbHVlIG1lc3NhZ2VWYWx1ZSwgVmVjdG9yPEpTQzo6U3Ryb25nPEpTQzo6SlNP
YmplY3Q+PiYmIHRyYW5zZmVyKQpAQCAtMTYwLDcgKzE2MSw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+
IE1lc3NhZ2VQb3J0Ojpwb3N0TWVzc2FnZShKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIEpTQzo6SlNW
YWx1ZSBtCiAKICAgICBMT0coTWVzc2FnZVBvcnRzLCAiQWN0dWFsbHkgcG9zdGluZyBtZXNzYWdl
IHRvIHBvcnQgJXMgKHRvIGJlIHJlY2VpdmVkIGJ5IHBvcnQgJXMpIiwgbV9pZGVudGlmaWVyLmxv
Z1N0cmluZygpLnV0ZjgoKS5kYXRhKCksIG1fcmVtb3RlSWRlbnRpZmllci5sb2dTdHJpbmcoKS51
dGY4KCkuZGF0YSgpKTsKIAotICAgIE1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyOjpzaW5nbGV0
b24oKS5wb3N0TWVzc2FnZVRvUmVtb3RlKFdURk1vdmUobWVzc2FnZSksIG1fcmVtb3RlSWRlbnRp
Zmllcik7CisgICAgTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXI6OmZyb21Db250ZXh0KCptX3Nj
cmlwdEV4ZWN1dGlvbkNvbnRleHQpLnBvc3RNZXNzYWdlVG9SZW1vdGUobWVzc2FnZSwgbV9yZW1v
dGVJZGVudGlmaWVyKTsKICAgICByZXR1cm4geyB9OwogfQogCkBAIC0xNzEsMTAgKzE3Miw5IEBA
IHZvaWQgTWVzc2FnZVBvcnQ6OmRpc2VudGFuZ2xlKCkKIAogICAgIHJlZ2lzdGVyTG9jYWxBY3Rp
dml0eSgpOwogCi0gICAgTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXI6OnNpbmdsZXRvbigpLm1l
c3NhZ2VQb3J0RGlzZW50YW5nbGVkKG1faWRlbnRpZmllcik7CisgICAgTWVzc2FnZVBvcnRDaGFu
bmVsUHJvdmlkZXI6OmZyb21Db250ZXh0KCptX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQpLm1lc3Nh
Z2VQb3J0RGlzZW50YW5nbGVkKG1faWRlbnRpZmllcik7CiAKICAgICAvLyBXZSBjYW4ndCByZWNl
aXZlIGFueSBtZXNzYWdlcyBvciBnZW5lcmF0ZSBhbnkgZXZlbnRzIGFmdGVyIHRoaXMsIHNvIHJl
bW92ZSBvdXJzZWx2ZXMgZnJvbSB0aGUgbGlzdCBvZiBhY3RpdmUgcG9ydHMuCi0gICAgQVNTRVJU
KG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCk7CiAgICAgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0
LT5kZXN0cm95ZWRNZXNzYWdlUG9ydCgqdGhpcyk7CiAgICAgbV9zY3JpcHRFeGVjdXRpb25Db250
ZXh0LT53aWxsRGVzdHJveUFjdGl2ZURPTU9iamVjdCgqdGhpcyk7CiAgICAgbV9zY3JpcHRFeGVj
dXRpb25Db250ZXh0LT53aWxsRGVzdHJveURlc3RydWN0aW9uT2JzZXJ2ZXIoKnRoaXMpOwpAQCAt
MjI1LDcgKzIyNSw3IEBAIHZvaWQgTWVzc2FnZVBvcnQ6OmNsb3NlKCkKICAgICAgICAgcmV0dXJu
OwogICAgIG1fY2xvc2VkID0gdHJ1ZTsKIAotICAgIE1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVy
OjpzaW5nbGV0b24oKS5tZXNzYWdlUG9ydENsb3NlZChtX2lkZW50aWZpZXIpOworICAgIE1lc3Nh
Z2VQb3J0Q2hhbm5lbFByb3ZpZGVyOjpmcm9tQ29udGV4dCgqbV9zY3JpcHRFeGVjdXRpb25Db250
ZXh0KS5tZXNzYWdlUG9ydENsb3NlZChtX2lkZW50aWZpZXIpOwogICAgIHJlbW92ZUFsbEV2ZW50
TGlzdGVuZXJzKCk7CiB9CiAKQEAgLTI0Niw1MCArMjQ2LDM0IEBAIHZvaWQgTWVzc2FnZVBvcnQ6
OmRpc3BhdGNoTWVzc2FnZXMoKQogICAgIGlmICghbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0IHx8
IG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+YWN0aXZlRE9NT2JqZWN0c0FyZVN1c3BlbmRlZCgp
IHx8ICFpc0VudGFuZ2xlZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBSZWZQdHI8V29ya2Vy
VGhyZWFkPiB3b3JrZXJUaHJlYWQ7Ci0gICAgaWYgKGlzPFdvcmtlckdsb2JhbFNjb3BlPigqbV9z
Y3JpcHRFeGVjdXRpb25Db250ZXh0KSkKLSAgICAgICAgd29ya2VyVGhyZWFkID0gJmRvd25jYXN0
PFdvcmtlckdsb2JhbFNjb3BlPigqbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KS50aHJlYWQoKTsK
LQotICAgIGF1dG8gbWVzc2FnZXNUYWtlbkhhbmRsZXIgPSBbdGhpcywgd2Vha1RoaXMgPSBtYWtl
V2Vha1B0cih0aGlzKSwgd29ya2VyVGhyZWFkID0gV1RGTW92ZSh3b3JrZXJUaHJlYWQpXShWZWN0
b3I8TWVzc2FnZVdpdGhNZXNzYWdlUG9ydHM+JiYgbWVzc2FnZXMsIEZ1bmN0aW9uPHZvaWQoKT4m
JiBjb21wbGV0aW9uQ2FsbGJhY2spIG11dGFibGUgewotICAgICAgICBBU1NFUlQoaXNNYWluVGhy
ZWFkKCkpOwotICAgICAgICBhdXRvIGlubmVySGFuZGxlciA9IFt0aGlzLCB3ZWFrVGhpcyA9IFdU
Rk1vdmUod2Vha1RoaXMpXShhdXRvJiYgbWVzc2FnZXMpIHsKLSAgICAgICAgICAgIGlmICghd2Vh
a1RoaXMpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgICAgICBMT0coTWVzc2Fn
ZVBvcnRzLCAiTWVzc2FnZVBvcnQgJXMgKCVwKSBkaXNwYXRjaGluZyAlenUgbWVzc2FnZXMiLCBt
X2lkZW50aWZpZXIubG9nU3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgdGhpcywgbWVzc2FnZXMuc2l6
ZSgpKTsKKyAgICBhdXRvIG1lc3NhZ2VzVGFrZW5IYW5kbGVyID0gW3RoaXMsIHdlYWtUaGlzID0g
bWFrZVdlYWtQdHIodGhpcyldKFZlY3RvcjxNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cz4mJiBtZXNz
YWdlcywgRnVuY3Rpb248dm9pZCgpPiYmIGNvbXBsZXRpb25DYWxsYmFjaykgbXV0YWJsZSB7Cisg
ICAgICAgIGF1dG8gc2NvcGVFeGl0ID0gbWFrZVNjb3BlRXhpdChbJmNvbXBsZXRpb25DYWxsYmFj
a10geworICAgICAgICAgICAgY29tcGxldGlvbkNhbGxiYWNrKCk7CisgICAgICAgIH0pOworICAg
ICAgICBpZiAoIXdlYWtUaGlzKQorICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgICAgICBp
ZiAoIW1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkKLSAgICAgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgIExPRyhNZXNzYWdlUG9ydHMsICJNZXNzYWdlUG9ydCAlcyAoJXApIGRpc3BhdGNoaW5n
ICV6dSBtZXNzYWdlcyIsIG1faWRlbnRpZmllci5sb2dTdHJpbmcoKS51dGY4KCkuZGF0YSgpLCB0
aGlzLCBtZXNzYWdlcy5zaXplKCkpOwogCi0gICAgICAgICAgICBpZiAoIW1lc3NhZ2VzLmlzRW1w
dHkoKSkKLSAgICAgICAgICAgICAgICByZWdpc3RlckxvY2FsQWN0aXZpdHkoKTsKKyAgICAgICAg
aWYgKCFtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQpCisgICAgICAgICAgICByZXR1cm47CiAKLSAg
ICAgICAgICAgIEFTU0VSVChtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmlzQ29udGV4dFRocmVh
ZCgpKTsKKyAgICAgICAgaWYgKCFtZXNzYWdlcy5pc0VtcHR5KCkpCisgICAgICAgICAgICByZWdp
c3RlckxvY2FsQWN0aXZpdHkoKTsKIAotICAgICAgICAgICAgYm9vbCBjb250ZXh0SXNXb3JrZXIg
PSBpczxXb3JrZXJHbG9iYWxTY29wZT4oKm1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCk7Ci0gICAg
ICAgICAgICBmb3IgKGF1dG8mIG1lc3NhZ2UgOiBtZXNzYWdlcykgewotICAgICAgICAgICAgICAg
IC8vIGNsb3NlKCkgaW4gV29ya2VyIG9ubWVzc2FnZSBoYW5kbGVyIHNob3VsZCBwcmV2ZW50IG5l
eHQgbWVzc2FnZSBmcm9tIGRpc3BhdGNoaW5nLgotICAgICAgICAgICAgICAgIGlmIChjb250ZXh0
SXNXb3JrZXIgJiYgZG93bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+KCptX3NjcmlwdEV4ZWN1dGlv
bkNvbnRleHQpLmlzQ2xvc2luZygpKQotICAgICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAg
ICAgICAgICAgICAgYXV0byBwb3J0cyA9IE1lc3NhZ2VQb3J0OjplbnRhbmdsZVBvcnRzKCptX3Nj
cmlwdEV4ZWN1dGlvbkNvbnRleHQsIFdURk1vdmUobWVzc2FnZS50cmFuc2ZlcnJlZFBvcnRzKSk7
Ci0gICAgICAgICAgICAgICAgZGlzcGF0Y2hFdmVudChNZXNzYWdlRXZlbnQ6OmNyZWF0ZShXVEZN
b3ZlKHBvcnRzKSwgbWVzc2FnZS5tZXNzYWdlLnJlbGVhc2VOb25OdWxsKCkpKTsKLSAgICAgICAg
ICAgIH0KLSAgICAgICAgfTsKKyAgICAgICAgQVNTRVJUKG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4
dC0+aXNDb250ZXh0VGhyZWFkKCkpOwogCi0gICAgICAgIGlmICghd29ya2VyVGhyZWFkKSB7Ci0g
ICAgICAgICAgICBpbm5lckhhbmRsZXIoV1RGTW92ZShtZXNzYWdlcykpOwotICAgICAgICAgICAg
Y29tcGxldGlvbkNhbGxiYWNrKCk7Ci0gICAgICAgICAgICByZXR1cm47CisgICAgICAgIGJvb2wg
Y29udGV4dElzV29ya2VyID0gaXM8V29ya2VyR2xvYmFsU2NvcGU+KCptX3NjcmlwdEV4ZWN1dGlv
bkNvbnRleHQpOworICAgICAgICBmb3IgKGF1dG8mIG1lc3NhZ2UgOiBtZXNzYWdlcykgeworICAg
ICAgICAgICAgLy8gY2xvc2UoKSBpbiBXb3JrZXIgb25tZXNzYWdlIGhhbmRsZXIgc2hvdWxkIHBy
ZXZlbnQgbmV4dCBtZXNzYWdlIGZyb20gZGlzcGF0Y2hpbmcuCisgICAgICAgICAgICBpZiAoY29u
dGV4dElzV29ya2VyICYmIGRvd25jYXN0PFdvcmtlckdsb2JhbFNjb3BlPigqbV9zY3JpcHRFeGVj
dXRpb25Db250ZXh0KS5pc0Nsb3NpbmcoKSkKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgICAgICBhdXRvIHBvcnRzID0gTWVzc2FnZVBvcnQ6OmVudGFuZ2xlUG9ydHMoKm1fc2NyaXB0
RXhlY3V0aW9uQ29udGV4dCwgV1RGTW92ZShtZXNzYWdlLnRyYW5zZmVycmVkUG9ydHMpKTsKKyAg
ICAgICAgICAgIGRpc3BhdGNoRXZlbnQoTWVzc2FnZUV2ZW50OjpjcmVhdGUoV1RGTW92ZShwb3J0
cyksIG1lc3NhZ2UubWVzc2FnZS5yZWxlYXNlTm9uTnVsbCgpKSk7CiAgICAgICAgIH0KLSAgICAg
ICAgd29ya2VyVGhyZWFkLT5ydW5Mb29wKCkucG9zdFRhc2tGb3JNb2RlKFtpbm5lckhhbmRsZXIg
PSBXVEZNb3ZlKGlubmVySGFuZGxlciksIG1lc3NhZ2VzID0gV1RGTW92ZShtZXNzYWdlcyksIGNv
bXBsZXRpb25DYWxsYmFjayA9IFdURk1vdmUoY29tcGxldGlvbkNhbGxiYWNrKV0oYXV0byYpIG11
dGFibGUgewotICAgICAgICAgICAgaW5uZXJIYW5kbGVyKFdURk1vdmUobWVzc2FnZXMpKTsKLSAg
ICAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW2NvbXBsZXRpb25DYWxsYmFjayA9IFdURk1vdmUo
Y29tcGxldGlvbkNhbGxiYWNrKV0gewotICAgICAgICAgICAgICAgIGNvbXBsZXRpb25DYWxsYmFj
aygpOwotICAgICAgICAgICAgfSk7Ci0gICAgICAgIH0sIFdvcmtlclJ1bkxvb3A6OmRlZmF1bHRN
b2RlKCkpOwogICAgIH07CiAKLSAgICBNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlcjo6c2luZ2xl
dG9uKCkudGFrZUFsbE1lc3NhZ2VzRm9yUG9ydChtX2lkZW50aWZpZXIsIFdURk1vdmUobWVzc2Fn
ZXNUYWtlbkhhbmRsZXIpKTsKKyAgICBNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlcjo6ZnJvbUNv
bnRleHQoKm1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkudGFrZUFsbE1lc3NhZ2VzRm9yUG9ydCht
X2lkZW50aWZpZXIsIFdURk1vdmUobWVzc2FnZXNUYWtlbkhhbmRsZXIpKTsKIH0KIAogdm9pZCBN
ZXNzYWdlUG9ydDo6dXBkYXRlQWN0aXZpdHkoTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXI6Okhh
c0FjdGl2aXR5IGhhc0FjdGl2aXR5KQpAQCAtMzI4LDE5ICszMTIsMTkgQEAgYm9vbCBNZXNzYWdl
UG9ydDo6aGFzUGVuZGluZ0FjdGl2aXR5KCkgY29uc3QKICAgICAgICAgaWYgKGlzPFdvcmtlckds
b2JhbFNjb3BlPigqbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KSkKICAgICAgICAgICAgIHdvcmtl
clRocmVhZCA9ICZkb3duY2FzdDxXb3JrZXJHbG9iYWxTY29wZT4oKm1fc2NyaXB0RXhlY3V0aW9u
Q29udGV4dCkudGhyZWFkKCk7CiAKLSAgICAgICAgTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXI6
OnNpbmdsZXRvbigpLmNoZWNrUmVtb3RlUG9ydEZvckFjdGl2aXR5KG1fcmVtb3RlSWRlbnRpZmll
ciwgW3dlYWtUaGlzID0gbWFrZVdlYWtQdHIoY29uc3RfY2FzdDxNZXNzYWdlUG9ydCo+KHRoaXMp
KSwgd29ya2VyVGhyZWFkID0gV1RGTW92ZSh3b3JrZXJUaHJlYWQpXShNZXNzYWdlUG9ydENoYW5u
ZWxQcm92aWRlcjo6SGFzQWN0aXZpdHkgaGFzQWN0aXZpdHkpIG11dGFibGUgewotCi0gICAgICAg
ICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotICAgICAgICAgICAgaWYgKCF3b3JrZXJUaHJl
YWQpIHsKLSAgICAgICAgICAgICAgICBpZiAod2Vha1RoaXMpCi0gICAgICAgICAgICAgICAgICAg
IHdlYWtUaGlzLT51cGRhdGVBY3Rpdml0eShoYXNBY3Rpdml0eSk7Ci0gICAgICAgICAgICAgICAg
cmV0dXJuOwotICAgICAgICAgICAgfQorICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtyZW1vdGVJ
ZGVudGlmaWVyID0gbV9yZW1vdGVJZGVudGlmaWVyLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKGNv
bnN0X2Nhc3Q8TWVzc2FnZVBvcnQqPih0aGlzKSksIHdvcmtlclRocmVhZCA9IFdURk1vdmUod29y
a2VyVGhyZWFkKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIE1lc3NhZ2VQb3J0Q2hhbm5lbFBy
b3ZpZGVyOjpzaW5nbGV0b24oKS5jaGVja1JlbW90ZVBvcnRGb3JBY3Rpdml0eShyZW1vdGVJZGVu
dGlmaWVyLCBbd2Vha1RoaXMgPSBXVEZNb3ZlKHdlYWtUaGlzKSwgd29ya2VyVGhyZWFkID0gV1RG
TW92ZSh3b3JrZXJUaHJlYWQpXShhdXRvIGhhc0FjdGl2aXR5KSBtdXRhYmxlIHsKKyAgICAgICAg
ICAgICAgICBpZiAoIXdvcmtlclRocmVhZCkgeworICAgICAgICAgICAgICAgICAgICBpZiAod2Vh
a1RoaXMpCisgICAgICAgICAgICAgICAgICAgICAgICB3ZWFrVGhpcy0+dXBkYXRlQWN0aXZpdHko
aGFzQWN0aXZpdHkpOworICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAg
ICAgfQogCi0gICAgICAgICAgICB3b3JrZXJUaHJlYWQtPnJ1bkxvb3AoKS5wb3N0VGFza0Zvck1v
ZGUoW3dlYWtUaGlzID0gV1RGTW92ZSh3ZWFrVGhpcyksIGhhc0FjdGl2aXR5XShhdXRvJikgbXV0
YWJsZSB7Ci0gICAgICAgICAgICAgICAgaWYgKHdlYWtUaGlzKQotICAgICAgICAgICAgICAgICAg
ICB3ZWFrVGhpcy0+dXBkYXRlQWN0aXZpdHkoaGFzQWN0aXZpdHkpOwotICAgICAgICAgICAgfSwg
V29ya2VyUnVuTG9vcDo6ZGVmYXVsdE1vZGUoKSk7CisgICAgICAgICAgICAgICAgd29ya2VyVGhy
ZWFkLT5ydW5Mb29wKCkucG9zdFRhc2tGb3JNb2RlKFt3ZWFrVGhpcyA9IFdURk1vdmUod2Vha1Ro
aXMpLCBoYXNBY3Rpdml0eV0oYXV0byYpIG11dGFibGUgeworICAgICAgICAgICAgICAgICAgICBp
ZiAod2Vha1RoaXMpCisgICAgICAgICAgICAgICAgICAgICAgICB3ZWFrVGhpcy0+dXBkYXRlQWN0
aXZpdHkoaGFzQWN0aXZpdHkpOworICAgICAgICAgICAgICAgIH0sIFdvcmtlclJ1bkxvb3A6OmRl
ZmF1bHRNb2RlKCkpOworICAgICAgICAgICAgfSk7CiAgICAgICAgIH0pOwogICAgICAgICBtX2lz
QXNraW5nUmVtb3RlQWJvdXRHQyA9IHRydWU7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL21lc3NhZ2Vwb3J0cy9NZXNzYWdlUG9ydENoYW5uZWwuY3BwIGIvU291cmNlL1dl
YkNvcmUvZG9tL21lc3NhZ2Vwb3J0cy9NZXNzYWdlUG9ydENoYW5uZWwuY3BwCmluZGV4IGE1YjYw
ZDk4YmI0YTAwZThhODI3ZTcxZDNkNGY0OWFhOGE0ZGU0NDkuLjA5MTVlYWQ5ZmZiOGMxNmRjOGI3
YjA5ZDJlMjUwNzgwNGQ4YmQ0YzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9tZXNz
YWdlcG9ydHMvTWVzc2FnZVBvcnRDaGFubmVsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
bWVzc2FnZXBvcnRzL01lc3NhZ2VQb3J0Q2hhbm5lbC5jcHAKQEAgLTE0Nyw3ICsxNDcsNyBAQCBi
b29sIE1lc3NhZ2VQb3J0Q2hhbm5lbDo6cG9zdE1lc3NhZ2VUb1JlbW90ZShNZXNzYWdlV2l0aE1l
c3NhZ2VQb3J0cyYmIG1lc3NhZ2UsCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi12b2lkIE1lc3Nh
Z2VQb3J0Q2hhbm5lbDo6dGFrZUFsbE1lc3NhZ2VzRm9yUG9ydChjb25zdCBNZXNzYWdlUG9ydElk
ZW50aWZpZXImIHBvcnQsIEZ1bmN0aW9uPHZvaWQoVmVjdG9yPE1lc3NhZ2VXaXRoTWVzc2FnZVBv
cnRzPiYmLCBGdW5jdGlvbjx2b2lkKCk+JiYpPiYmIGNhbGxiYWNrKQordm9pZCBNZXNzYWdlUG9y
dENoYW5uZWw6OnRha2VBbGxNZXNzYWdlc0ZvclBvcnQoY29uc3QgTWVzc2FnZVBvcnRJZGVudGlm
aWVyJiBwb3J0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxNZXNzYWdlV2l0aE1lc3Nh
Z2VQb3J0cz4mJiwgRnVuY3Rpb248dm9pZCgpPiYmKT4mJiBjYWxsYmFjaykKIHsKICAgICBBU1NF
UlQoaXNNYWluVGhyZWFkKCkpOwogCkBAIC0xODIsNyArMTgyLDcgQEAgdm9pZCBNZXNzYWdlUG9y
dENoYW5uZWw6OnRha2VBbGxNZXNzYWdlc0ZvclBvcnQoY29uc3QgTWVzc2FnZVBvcnRJZGVudGlm
aWVyJiBwb3IKICAgICB9KTsKIH0KIAotdm9pZCBNZXNzYWdlUG9ydENoYW5uZWw6OmNoZWNrUmVt
b3RlUG9ydEZvckFjdGl2aXR5KGNvbnN0IE1lc3NhZ2VQb3J0SWRlbnRpZmllciYgcmVtb3RlUG9y
dCwgRnVuY3Rpb248dm9pZChNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlcjo6SGFzQWN0aXZpdHkp
PiYmIGNhbGxiYWNrKQordm9pZCBNZXNzYWdlUG9ydENoYW5uZWw6OmNoZWNrUmVtb3RlUG9ydEZv
ckFjdGl2aXR5KGNvbnN0IE1lc3NhZ2VQb3J0SWRlbnRpZmllciYgcmVtb3RlUG9ydCwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlcjo6SGFzQWN0aXZpdHkp
PiYmIGNhbGxiYWNrKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgQVNTRVJU
KHJlbW90ZVBvcnQgPT0gbV9wb3J0c1swXSB8fCByZW1vdGVQb3J0ID09IG1fcG9ydHNbMV0pOwpA
QCAtMjA3LDcgKzIwNyw3IEBAIHZvaWQgTWVzc2FnZVBvcnRDaGFubmVsOjpjaGVja1JlbW90ZVBv
cnRGb3JBY3Rpdml0eShjb25zdCBNZXNzYWdlUG9ydElkZW50aWZpZXImCiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKLSAgICBhdXRvIG91dGVyQ2FsbGJhY2sgPSBGdW5jdGlvbjx2b2lkKE1lc3Nh
Z2VQb3J0Q2hhbm5lbFByb3ZpZGVyOjpIYXNBY3Rpdml0eSk+IHsgW3RoaXMsIHByb3RlY3RlZFRo
aXMgPSBtYWtlUmVmKCp0aGlzKSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0gKE1lc3Nh
Z2VQb3J0Q2hhbm5lbFByb3ZpZGVyOjpIYXNBY3Rpdml0eSBoYXNBY3Rpdml0eSkgbXV0YWJsZSB7
CisgICAgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlcjo6
SGFzQWN0aXZpdHkpPiBvdXRlckNhbGxiYWNrID0gW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtl
UmVmKCp0aGlzKSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oYXV0byBoYXNBY3Rpdml0
eSkgbXV0YWJsZSB7CiAgICAgICAgIGlmIChoYXNBY3Rpdml0eSA9PSBNZXNzYWdlUG9ydENoYW5u
ZWxQcm92aWRlcjo6SGFzQWN0aXZpdHk6OlllcykgewogICAgICAgICAgICAgY2FsbGJhY2soaGFz
QWN0aXZpdHkpOwogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMjE5LDcgKzIxOSw3IEBAIHZvaWQg
TWVzc2FnZVBvcnRDaGFubmVsOjpjaGVja1JlbW90ZVBvcnRGb3JBY3Rpdml0eShjb25zdCBNZXNz
YWdlUG9ydElkZW50aWZpZXImCiAgICAgICAgICAgICBoYXNBY3Rpdml0eSA9IE1lc3NhZ2VQb3J0
Q2hhbm5lbFByb3ZpZGVyOjpIYXNBY3Rpdml0eTo6WWVzOwogCiAgICAgICAgIGNhbGxiYWNrKGhh
c0FjdGl2aXR5KTsKLSAgICB9IH07CisgICAgfTsKIAogICAgIG1fcmVnaXN0cnkucHJvdmlkZXIo
KS5jaGVja1Byb2Nlc3NMb2NhbFBvcnRGb3JBY3Rpdml0eShyZW1vdGVQb3J0LCAqbV9wcm9jZXNz
ZXNbaV0sIFdURk1vdmUob3V0ZXJDYWxsYmFjaykpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL21lc3NhZ2Vwb3J0cy9NZXNzYWdlUG9ydENoYW5uZWwuaCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9tZXNzYWdlcG9ydHMvTWVzc2FnZVBvcnRDaGFubmVsLmgKaW5kZXggY2MyOTk0ZDJm
OTJkOTBmN2EyYWVlMmMzZTlhZmU1ZThmYWMxNzc5NS4uYTg4MjZiOGMwMGMwMGI3YTg3NmFkMzhh
ZmFlNjFhZTc4ZThhY2Q4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL21lc3NhZ2Vw
b3J0cy9NZXNzYWdlUG9ydENoYW5uZWwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vbWVzc2Fn
ZXBvcnRzL01lc3NhZ2VQb3J0Q2hhbm5lbC5oCkBAIC01Myw4ICs1Myw4IEBAIHB1YmxpYzoKICAg
ICB2b2lkIGNsb3NlUG9ydChjb25zdCBNZXNzYWdlUG9ydElkZW50aWZpZXImKTsKICAgICBib29s
IHBvc3RNZXNzYWdlVG9SZW1vdGUoTWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMmJiwgY29uc3QgTWVz
c2FnZVBvcnRJZGVudGlmaWVyJiByZW1vdGVUYXJnZXQpOwogCi0gICAgdm9pZCB0YWtlQWxsTWVz
c2FnZXNGb3JQb3J0KGNvbnN0IE1lc3NhZ2VQb3J0SWRlbnRpZmllciYsIEZ1bmN0aW9uPHZvaWQo
VmVjdG9yPE1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzPiYmLCBGdW5jdGlvbjx2b2lkKCk+JiYpPiYm
KTsKLSAgICB2b2lkIGNoZWNrUmVtb3RlUG9ydEZvckFjdGl2aXR5KGNvbnN0IE1lc3NhZ2VQb3J0
SWRlbnRpZmllciYsIEZ1bmN0aW9uPHZvaWQoTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXI6Okhh
c0FjdGl2aXR5KT4mJiBjYWxsYmFjayk7CisgICAgdm9pZCB0YWtlQWxsTWVzc2FnZXNGb3JQb3J0
KGNvbnN0IE1lc3NhZ2VQb3J0SWRlbnRpZmllciYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVj
dG9yPE1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzPiYmLCBGdW5jdGlvbjx2b2lkKCk+JiYpPiYmKTsK
KyAgICB2b2lkIGNoZWNrUmVtb3RlUG9ydEZvckFjdGl2aXR5KGNvbnN0IE1lc3NhZ2VQb3J0SWRl
bnRpZmllciYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlk
ZXI6Okhhc0FjdGl2aXR5KT4mJiBjYWxsYmFjayk7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBib29s
IGhhc0FueU1lc3NhZ2VzUGVuZGluZ09ySW5GbGlnaHQoKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZG9tL21lc3NhZ2Vwb3J0cy9NZXNzYWdlUG9ydENoYW5uZWxQcm92aWRl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vbWVzc2FnZXBvcnRzL01lc3NhZ2VQb3J0Q2hhbm5l
bFByb3ZpZGVyLmNwcAppbmRleCAwYTVjZDE3NzNlOTMxYjA0OWZmNDhkNzFiOTdlYWQ5YjY2NjM1
Yzk5Li4xMmFhOWYyY2ZiZjEyZDNlMDg5YTViYTFiMDg3NjY0OGMxZjE2NTUwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9kb20vbWVzc2FnZXBvcnRzL01lc3NhZ2VQb3J0Q2hhbm5lbFByb3Zp
ZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vbWVzc2FnZXBvcnRzL01lc3NhZ2VQb3J0
Q2hhbm5lbFByb3ZpZGVyLmNwcApAQCAtMjYsNyArMjYsOSBAQAogI2luY2x1ZGUgImNvbmZpZy5o
IgogI2luY2x1ZGUgIk1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyLmgiCiAKKyNpbmNsdWRlICJE
b2N1bWVudC5oIgogI2luY2x1ZGUgIk1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVySW1wbC5oIgor
I2luY2x1ZGUgIldvcmtlckdsb2JhbFNjb3BlLmgiCiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQu
aD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMzUsNiArMzcsNyBAQCBzdGF0aWMgTWVzc2Fn
ZVBvcnRDaGFubmVsUHJvdmlkZXIqIGdsb2JhbFByb3ZpZGVyOwogCiBNZXNzYWdlUG9ydENoYW5u
ZWxQcm92aWRlciYgTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXI6OnNpbmdsZXRvbigpCiB7Cisg
ICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25j
ZUZsYWc7CiAgICAgc3RkOjpjYWxsX29uY2Uob25jZUZsYWcsIFtdIHsKICAgICAgICAgaWYgKCFn
bG9iYWxQcm92aWRlcikKQEAgLTUxLDQgKzU0LDEyIEBAIHZvaWQgTWVzc2FnZVBvcnRDaGFubmVs
UHJvdmlkZXI6OnNldFNoYXJlZFByb3ZpZGVyKE1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyJiBw
CiAgICAgZ2xvYmFsUHJvdmlkZXIgPSAmcHJvdmlkZXI7CiB9CiAKK01lc3NhZ2VQb3J0Q2hhbm5l
bFByb3ZpZGVyJiBNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlcjo6ZnJvbUNvbnRleHQoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkKK3sKKyAgICBpZiAoaXM8RG9jdW1lbnQ+KGNvbnRl
eHQpKQorICAgICAgICByZXR1cm4gZG93bmNhc3Q8RG9jdW1lbnQ+KGNvbnRleHQpLm1lc3NhZ2VQ
b3J0Q2hhbm5lbFByb3ZpZGVyKCk7CisKKyAgICByZXR1cm4gZG93bmNhc3Q8V29ya2VyR2xvYmFs
U2NvcGU+KGNvbnRleHQpLm1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyKCk7Cit9CisKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9tZXNzYWdl
cG9ydHMvTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9t
ZXNzYWdlcG9ydHMvTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXIuaAppbmRleCA4YTNhYmEyODIx
MDQ2YTk2NGMwZjQ1ZTNlYjc0M2FjMzhkNmM5OTZmLi5jZmYzZjM1OTc1M2M4MmMyY2I2ZTVjOTZm
MGNmYzExNmRlNzkzNWI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vbWVzc2FnZXBv
cnRzL01lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L21lc3NhZ2Vwb3J0cy9NZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlci5oCkBAIC0yNiwxNiArMjYs
MTggQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiUHJvY2Vzc0lkZW50aWZpZXIuaCIKLSNp
bmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KKyNpbmNsdWRlIDx3dGYvQ29tcGxldGlvbkhhbmRsZXIu
aD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xh
c3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKIHN0cnVjdCBNZXNzYWdlUG9ydElkZW50aWZpZXI7
CiBzdHJ1Y3QgTWVzc2FnZVdpdGhNZXNzYWdlUG9ydHM7CiAKIGNsYXNzIE1lc3NhZ2VQb3J0Q2hh
bm5lbFByb3ZpZGVyIHsKIHB1YmxpYzoKKyAgICBzdGF0aWMgTWVzc2FnZVBvcnRDaGFubmVsUHJv
dmlkZXImIGZyb21Db250ZXh0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKTsKICAgICBzdGF0aWMg
TWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXImIHNpbmdsZXRvbigpOwogICAgIFdFQkNPUkVfRVhQ
T1JUIHN0YXRpYyB2b2lkIHNldFNoYXJlZFByb3ZpZGVyKE1lc3NhZ2VQb3J0Q2hhbm5lbFByb3Zp
ZGVyJik7CiAKQEAgLTQ3LDE5ICs0OSwxNSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIG1l
c3NhZ2VQb3J0RGlzZW50YW5nbGVkKGNvbnN0IE1lc3NhZ2VQb3J0SWRlbnRpZmllciYgbG9jYWwp
ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgbWVzc2FnZVBvcnRDbG9zZWQoY29uc3QgTWVzc2FnZVBv
cnRJZGVudGlmaWVyJiBsb2NhbCkgPSAwOwogICAgIAotICAgIC8vIEZJWE1FOiBJZGVhbGx5IHRo
ZSBjYWxsYmFjayB3b3VsZCBiZSBhIENvbXBsZXRpb25IYW5kbGVyIGJ1dCBpdCBpcyBhbHdheXMg
Y2FsbGVkIG9uIHRoZSBjYWxsZXIncwotICAgIC8vIHRocmVhZCBhdCB0aGUgbW9tZW50LgotICAg
IHZpcnR1YWwgdm9pZCB0YWtlQWxsTWVzc2FnZXNGb3JQb3J0KGNvbnN0IE1lc3NhZ2VQb3J0SWRl
bnRpZmllciYsIEZ1bmN0aW9uPHZvaWQoVmVjdG9yPE1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzPiYm
LCBGdW5jdGlvbjx2b2lkKCk+JiYpPiYmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHRha2VBbGxN
ZXNzYWdlc0ZvclBvcnQoY29uc3QgTWVzc2FnZVBvcnRJZGVudGlmaWVyJiwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChWZWN0b3I8TWVzc2FnZVdpdGhNZXNzYWdlUG9ydHM+JiYsIEZ1bmN0aW9uPHZv
aWQoKT4mJik+JiYpID0gMDsKIAotICAgIHZpcnR1YWwgdm9pZCBwb3N0TWVzc2FnZVRvUmVtb3Rl
KE1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzJiYsIGNvbnN0IE1lc3NhZ2VQb3J0SWRlbnRpZmllciYg
cmVtb3RlVGFyZ2V0KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHBvc3RNZXNzYWdlVG9SZW1vdGUo
Y29uc3QgTWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMmLCBjb25zdCBNZXNzYWdlUG9ydElkZW50aWZp
ZXImIHJlbW90ZVRhcmdldCkgPSAwOwogCiAgICAgZW51bSBjbGFzcyBIYXNBY3Rpdml0eSB7CiAg
ICAgICAgIFllcywKICAgICAgICAgTm8sCiAgICAgfTsKLSAgICAvLyBGSVhNRTogSWRlYWxseSB0
aGUgY2FsbGJhY2sgd291bGQgYmUgYSBDb21wbGV0aW9uSGFuZGxlciBidXQgaXQgaXMgYWx3YXlz
IGNhbGxlZCBvbiB0aGUgY2FsbGVyJ3MKLSAgICAvLyB0aHJlYWQgYXQgdGhlIG1vbWVudC4KLSAg
ICB2aXJ0dWFsIHZvaWQgY2hlY2tSZW1vdGVQb3J0Rm9yQWN0aXZpdHkoY29uc3QgTWVzc2FnZVBv
cnRJZGVudGlmaWVyJiByZW1vdGVUYXJnZXQsIEZ1bmN0aW9uPHZvaWQoSGFzQWN0aXZpdHkpPiYm
IGNhbGxiYWNrKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGNoZWNrUmVtb3RlUG9ydEZvckFjdGl2
aXR5KGNvbnN0IE1lc3NhZ2VQb3J0SWRlbnRpZmllciYgcmVtb3RlVGFyZ2V0LCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKEhhc0FjdGl2aXR5KT4mJiBjYWxsYmFjaykgPSAwOwogCiAgICAgLy8gT3Bl
cmF0aW9ucyB0aGF0IHRoZSBjb29yZGluYXRpbmcgcHJvY2VzcyBwZXJmb3JtcyAoZS5nLiB0aGUg
VUlQcm9jZXNzKQogICAgIHZpcnR1YWwgdm9pZCBjaGVja1Byb2Nlc3NMb2NhbFBvcnRGb3JBY3Rp
dml0eShjb25zdCBNZXNzYWdlUG9ydElkZW50aWZpZXImLCBQcm9jZXNzSWRlbnRpZmllciwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChIYXNBY3Rpdml0eSk+JiYpID0gMDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9tZXNzYWdlcG9ydHMvTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXJJ
bXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9tZXNzYWdlcG9ydHMvTWVzc2FnZVBvcnRDaGFu
bmVsUHJvdmlkZXJJbXBsLmNwcAppbmRleCAwYjA3YzI3NTNhOTljZTAyMDZkNDFjY2IwZWE0OWVk
MDQxNmYxNGE2Li5lMTY1NmUyNzIwMDkxNmZhY2RlNTgwN2M5ZWRhYTAzMjBjMDQzNWRkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vbWVzc2FnZXBvcnRzL01lc3NhZ2VQb3J0Q2hhbm5l
bFByb3ZpZGVySW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL21lc3NhZ2Vwb3J0cy9N
ZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlckltcGwuY3BwCkBAIC0yNyw3ICsyNyw2IEBACiAjaW5j
bHVkZSAiTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXJJbXBsLmgiCiAKICNpbmNsdWRlICJNZXNz
YWdlUG9ydC5oIgotI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgogI2luY2x1ZGUg
PHd0Zi9NYWluVGhyZWFkLmg+CiAjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KIApAQCAtNzksMTgg
Kzc4LDE4IEBAIHZvaWQgTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXJJbXBsOjptZXNzYWdlUG9y
dENsb3NlZChjb25zdCBNZXNzYWdlUG9ydElkZW50aWZpCiAgICAgfSk7CiB9CiAKLXZvaWQgTWVz
c2FnZVBvcnRDaGFubmVsUHJvdmlkZXJJbXBsOjpwb3N0TWVzc2FnZVRvUmVtb3RlKE1lc3NhZ2VX
aXRoTWVzc2FnZVBvcnRzJiYgbWVzc2FnZSwgY29uc3QgTWVzc2FnZVBvcnRJZGVudGlmaWVyJiBy
ZW1vdGVUYXJnZXQpCit2b2lkIE1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVySW1wbDo6cG9zdE1l
c3NhZ2VUb1JlbW90ZShjb25zdCBNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cyYgbWVzc2FnZSwgY29u
c3QgTWVzc2FnZVBvcnRJZGVudGlmaWVyJiByZW1vdGVUYXJnZXQpCiB7Ci0gICAgcGVyZm9ybUFj
dGlvbk9uTWFpblRocmVhZChbcmVnaXN0cnkgPSAmbV9yZWdpc3RyeSwgbWVzc2FnZSA9IFdURk1v
dmUobWVzc2FnZSksIHJlbW90ZVRhcmdldF0oKSBtdXRhYmxlIHsKKyAgICBwZXJmb3JtQWN0aW9u
T25NYWluVGhyZWFkKFtyZWdpc3RyeSA9ICZtX3JlZ2lzdHJ5LCBtZXNzYWdlID0gTWVzc2FnZVdp
dGhNZXNzYWdlUG9ydHMgeyBtZXNzYWdlIH0sIHJlbW90ZVRhcmdldF0oKSBtdXRhYmxlIHsKICAg
ICAgICAgaWYgKHJlZ2lzdHJ5LT5kaWRQb3N0TWVzc2FnZVRvUmVtb3RlKFdURk1vdmUobWVzc2Fn
ZSksIHJlbW90ZVRhcmdldCkpCiAgICAgICAgICAgICBNZXNzYWdlUG9ydDo6bm90aWZ5TWVzc2Fn
ZUF2YWlsYWJsZShyZW1vdGVUYXJnZXQpOwogICAgIH0pOwogfQogCi12b2lkIE1lc3NhZ2VQb3J0
Q2hhbm5lbFByb3ZpZGVySW1wbDo6dGFrZUFsbE1lc3NhZ2VzRm9yUG9ydChjb25zdCBNZXNzYWdl
UG9ydElkZW50aWZpZXImIHBvcnQsIEZ1bmN0aW9uPHZvaWQoVmVjdG9yPE1lc3NhZ2VXaXRoTWVz
c2FnZVBvcnRzPiYmLCBGdW5jdGlvbjx2b2lkKCk+JiYpPiYmIG91dGVyQ2FsbGJhY2spCit2b2lk
IE1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVySW1wbDo6dGFrZUFsbE1lc3NhZ2VzRm9yUG9ydChj
b25zdCBNZXNzYWdlUG9ydElkZW50aWZpZXImIHBvcnQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
VmVjdG9yPE1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzPiYmLCBGdW5jdGlvbjx2b2lkKCk+JiYpPiYm
IG91dGVyQ2FsbGJhY2spCiB7CiAgICAgLy8gSXQgaXMgdGhlIHJlc3BvbnNpYmlsaXR5IG9mIG91
dGVyQ2FsbGJhY2sgdG8gZ2V0IGl0c2VsZiB0byB0aGUgYXBwcm9wcmlhdGUgdGhyZWFkIChlLmcu
IFdlYldvcmtlciB0aHJlYWQpCi0gICAgYXV0byBjYWxsYmFjayA9IFtvdXRlckNhbGxiYWNrID0g
V1RGTW92ZShvdXRlckNhbGxiYWNrKV0oVmVjdG9yPE1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzPiYm
IG1lc3NhZ2VzLCBGdW5jdGlvbjx2b2lkKCk+JiYgbWVzc2FnZURlbGl2ZXJ5Q2FsbGJhY2spIHsK
KyAgICBhdXRvIGNhbGxiYWNrID0gW291dGVyQ2FsbGJhY2sgPSBXVEZNb3ZlKG91dGVyQ2FsbGJh
Y2spXShWZWN0b3I8TWVzc2FnZVdpdGhNZXNzYWdlUG9ydHM+JiYgbWVzc2FnZXMsIEZ1bmN0aW9u
PHZvaWQoKT4mJiBtZXNzYWdlRGVsaXZlcnlDYWxsYmFjaykgbXV0YWJsZSB7CiAgICAgICAgIEFT
U0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgICAgIG91dGVyQ2FsbGJhY2soV1RGTW92ZShtZXNz
YWdlcyksIFdURk1vdmUobWVzc2FnZURlbGl2ZXJ5Q2FsbGJhY2spKTsKICAgICB9OwpAQCAtMTAw
LDcgKzk5LDcgQEAgdm9pZCBNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlckltcGw6OnRha2VBbGxN
ZXNzYWdlc0ZvclBvcnQoY29uc3QgTWVzc2FnZVBvcnRJZGUKICAgICB9KTsKIH0KIAotdm9pZCBN
ZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlckltcGw6OmNoZWNrUmVtb3RlUG9ydEZvckFjdGl2aXR5
KGNvbnN0IE1lc3NhZ2VQb3J0SWRlbnRpZmllciYgcmVtb3RlVGFyZ2V0LCBGdW5jdGlvbjx2b2lk
KEhhc0FjdGl2aXR5KT4mJiBvdXRlckNhbGxiYWNrKQordm9pZCBNZXNzYWdlUG9ydENoYW5uZWxQ
cm92aWRlckltcGw6OmNoZWNrUmVtb3RlUG9ydEZvckFjdGl2aXR5KGNvbnN0IE1lc3NhZ2VQb3J0
SWRlbnRpZmllciYgcmVtb3RlVGFyZ2V0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEhhc0FjdGl2
aXR5KT4mJiBvdXRlckNhbGxiYWNrKQogewogICAgIGF1dG8gY2FsbGJhY2sgPSBGdW5jdGlvbjx2
b2lkKEhhc0FjdGl2aXR5KT4geyBbb3V0ZXJDYWxsYmFjayA9IFdURk1vdmUob3V0ZXJDYWxsYmFj
ayldKEhhc0FjdGl2aXR5IGhhc0FjdGl2aXR5KSBtdXRhYmxlIHsKICAgICAgICAgQVNTRVJUKGlz
TWFpblRocmVhZCgpKTsKQEAgLTExOSw1ICsxMTgsNCBAQCB2b2lkIE1lc3NhZ2VQb3J0Q2hhbm5l
bFByb3ZpZGVySW1wbDo6Y2hlY2tQcm9jZXNzTG9jYWxQb3J0Rm9yQWN0aXZpdHkoY29uc3QgTWVz
cwogICAgIGNhbGxiYWNrKE1lc3NhZ2VQb3J0Ojppc0V4aXN0aW5nTWVzc2FnZVBvcnRMb2NhbGx5
UmVhY2hhYmxlKGlkZW50aWZpZXIpID8gSGFzQWN0aXZpdHk6OlllcyA6IEhhc0FjdGl2aXR5OjpO
byk7CiB9CiAKLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL21lc3NhZ2Vwb3J0cy9NZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlckltcGwuaCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9tZXNzYWdlcG9ydHMvTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlk
ZXJJbXBsLmgKaW5kZXggZDM1NTRlMWFhMWRmNDU3YjFiODVkMmZiODJjNzU2OWY5ODlkN2I2Yi4u
NDhjYjU0ODcxMDIzYTc1NTU4NjE3YTM2MTU3NWNkMTI4YWExODExYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZG9tL21lc3NhZ2Vwb3J0cy9NZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlcklt
cGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vbWVzc2FnZXBvcnRzL01lc3NhZ2VQb3J0Q2hh
bm5lbFByb3ZpZGVySW1wbC5oCkBAIC00MCw5ICs0MCw5IEBAIHByaXZhdGU6CiAgICAgdm9pZCBl
bnRhbmdsZUxvY2FsUG9ydEluVGhpc1Byb2Nlc3NUb1JlbW90ZShjb25zdCBNZXNzYWdlUG9ydElk
ZW50aWZpZXImIGxvY2FsLCBjb25zdCBNZXNzYWdlUG9ydElkZW50aWZpZXImIHJlbW90ZSkgZmlu
YWw7CiAgICAgdm9pZCBtZXNzYWdlUG9ydERpc2VudGFuZ2xlZChjb25zdCBNZXNzYWdlUG9ydElk
ZW50aWZpZXImIGxvY2FsKSBmaW5hbDsKICAgICB2b2lkIG1lc3NhZ2VQb3J0Q2xvc2VkKGNvbnN0
IE1lc3NhZ2VQb3J0SWRlbnRpZmllciYgbG9jYWwpIGZpbmFsOwotICAgIHZvaWQgcG9zdE1lc3Nh
Z2VUb1JlbW90ZShNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cyYmLCBjb25zdCBNZXNzYWdlUG9ydElk
ZW50aWZpZXImIHJlbW90ZVRhcmdldCkgZmluYWw7Ci0gICAgdm9pZCB0YWtlQWxsTWVzc2FnZXNG
b3JQb3J0KGNvbnN0IE1lc3NhZ2VQb3J0SWRlbnRpZmllciYsIEZ1bmN0aW9uPHZvaWQoVmVjdG9y
PE1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzPiYmLCBGdW5jdGlvbjx2b2lkKCk+JiYpPiYmKSBmaW5h
bDsKLSAgICB2b2lkIGNoZWNrUmVtb3RlUG9ydEZvckFjdGl2aXR5KGNvbnN0IE1lc3NhZ2VQb3J0
SWRlbnRpZmllciYgcmVtb3RlVGFyZ2V0LCBGdW5jdGlvbjx2b2lkKEhhc0FjdGl2aXR5KT4mJiBj
YWxsYmFjaykgZmluYWw7CisgICAgdm9pZCBwb3N0TWVzc2FnZVRvUmVtb3RlKGNvbnN0IE1lc3Nh
Z2VXaXRoTWVzc2FnZVBvcnRzJiwgY29uc3QgTWVzc2FnZVBvcnRJZGVudGlmaWVyJiByZW1vdGVU
YXJnZXQpIGZpbmFsOworICAgIHZvaWQgdGFrZUFsbE1lc3NhZ2VzRm9yUG9ydChjb25zdCBNZXNz
YWdlUG9ydElkZW50aWZpZXImLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxNZXNzYWdl
V2l0aE1lc3NhZ2VQb3J0cz4mJiwgRnVuY3Rpb248dm9pZCgpPiYmKT4mJikgZmluYWw7CisgICAg
dm9pZCBjaGVja1JlbW90ZVBvcnRGb3JBY3Rpdml0eShjb25zdCBNZXNzYWdlUG9ydElkZW50aWZp
ZXImIHJlbW90ZVRhcmdldCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChIYXNBY3Rpdml0eSk+JiYg
Y2FsbGJhY2spIGZpbmFsOwogCiAgICAgdm9pZCBjaGVja1Byb2Nlc3NMb2NhbFBvcnRGb3JBY3Rp
dml0eShjb25zdCBNZXNzYWdlUG9ydElkZW50aWZpZXImLCBQcm9jZXNzSWRlbnRpZmllciwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChIYXNBY3Rpdml0eSk+JiYpIGZpbmFsOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vbWVzc2FnZXBvcnRzL01lc3NhZ2VQb3J0Q2hhbm5lbFJlZ2lz
dHJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9tZXNzYWdlcG9ydHMvTWVzc2FnZVBvcnRDaGFu
bmVsUmVnaXN0cnkuY3BwCmluZGV4IDFjYjM1NTQ2ZTMzZmM2NjEwYzQ2YTJkMGQ5ZDI4MzY4ODk0
NTc2Y2UuLmUwZTYwZjJlOTcwN2MzMmYwYzg5NzVkYTNkYjVmZWRmZDc3NzlhZTAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9tZXNzYWdlcG9ydHMvTWVzc2FnZVBvcnRDaGFubmVsUmVn
aXN0cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9tZXNzYWdlcG9ydHMvTWVzc2FnZVBv
cnRDaGFubmVsUmVnaXN0cnkuY3BwCkBAIC0xNDEsNyArMTQxLDcgQEAgYm9vbCBNZXNzYWdlUG9y
dENoYW5uZWxSZWdpc3RyeTo6ZGlkUG9zdE1lc3NhZ2VUb1JlbW90ZShNZXNzYWdlV2l0aE1lc3Nh
Z2VQb3J0cyYKICAgICByZXR1cm4gY2hhbm5lbC0+cG9zdE1lc3NhZ2VUb1JlbW90ZShXVEZNb3Zl
KG1lc3NhZ2UpLCByZW1vdGVUYXJnZXQpOwogfQogCi12b2lkIE1lc3NhZ2VQb3J0Q2hhbm5lbFJl
Z2lzdHJ5Ojp0YWtlQWxsTWVzc2FnZXNGb3JQb3J0KGNvbnN0IE1lc3NhZ2VQb3J0SWRlbnRpZmll
ciYgcG9ydCwgRnVuY3Rpb248dm9pZChWZWN0b3I8TWVzc2FnZVdpdGhNZXNzYWdlUG9ydHM+JiYs
IEZ1bmN0aW9uPHZvaWQoKT4mJik+JiYgY2FsbGJhY2spCit2b2lkIE1lc3NhZ2VQb3J0Q2hhbm5l
bFJlZ2lzdHJ5Ojp0YWtlQWxsTWVzc2FnZXNGb3JQb3J0KGNvbnN0IE1lc3NhZ2VQb3J0SWRlbnRp
ZmllciYgcG9ydCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8TWVzc2FnZVdpdGhNZXNz
YWdlUG9ydHM+JiYsIEZ1bmN0aW9uPHZvaWQoKT4mJik+JiYgY2FsbGJhY2spCiB7CiAgICAgQVNT
RVJUKGlzTWFpblRocmVhZCgpKTsKIApAQCAtMTU3LDcgKzE1Nyw3IEBAIHZvaWQgTWVzc2FnZVBv
cnRDaGFubmVsUmVnaXN0cnk6OnRha2VBbGxNZXNzYWdlc0ZvclBvcnQoY29uc3QgTWVzc2FnZVBv
cnRJZGVudGlmCiAgICAgY2hhbm5lbC0+dGFrZUFsbE1lc3NhZ2VzRm9yUG9ydChwb3J0LCBXVEZN
b3ZlKGNhbGxiYWNrKSk7CiB9CiAKLXZvaWQgTWVzc2FnZVBvcnRDaGFubmVsUmVnaXN0cnk6OmNo
ZWNrUmVtb3RlUG9ydEZvckFjdGl2aXR5KGNvbnN0IE1lc3NhZ2VQb3J0SWRlbnRpZmllciYgcmVt
b3RlVGFyZ2V0LCBGdW5jdGlvbjx2b2lkKE1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyOjpIYXNB
Y3Rpdml0eSk+JiYgY2FsbGJhY2spCit2b2lkIE1lc3NhZ2VQb3J0Q2hhbm5lbFJlZ2lzdHJ5Ojpj
aGVja1JlbW90ZVBvcnRGb3JBY3Rpdml0eShjb25zdCBNZXNzYWdlUG9ydElkZW50aWZpZXImIHJl
bW90ZVRhcmdldCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChNZXNzYWdlUG9ydENoYW5uZWxQcm92
aWRlcjo6SGFzQWN0aXZpdHkpPiYmIGNhbGxiYWNrKQogewogICAgIEFTU0VSVChpc01haW5UaHJl
YWQoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9tZXNzYWdlcG9ydHMvTWVz
c2FnZVBvcnRDaGFubmVsUmVnaXN0cnkuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9tZXNzYWdlcG9y
dHMvTWVzc2FnZVBvcnRDaGFubmVsUmVnaXN0cnkuaAppbmRleCA1MzFhYTk1ODQ4NDNkYTc1MTU3
NjExYjEzYjc0ZTQxMGZlYjY3M2E1Li42YmNhMjgyZWRjYTlhMzAwNzI5Mjc1Yjk2NDlhNGM1M2E0
YWRmMWM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vbWVzc2FnZXBvcnRzL01lc3Nh
Z2VQb3J0Q2hhbm5lbFJlZ2lzdHJ5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL21lc3NhZ2Vw
b3J0cy9NZXNzYWdlUG9ydENoYW5uZWxSZWdpc3RyeS5oCkBAIC00Myw4ICs0Myw4IEBAIHB1Ymxp
YzoKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRpZERpc2VudGFuZ2xlTWVzc2FnZVBvcnQoY29u
c3QgTWVzc2FnZVBvcnRJZGVudGlmaWVyJiBsb2NhbCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBkaWRDbG9zZU1lc3NhZ2VQb3J0KGNvbnN0IE1lc3NhZ2VQb3J0SWRlbnRpZmllciYgbG9jYWwp
OwogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgZGlkUG9zdE1lc3NhZ2VUb1JlbW90ZShNZXNzYWdl
V2l0aE1lc3NhZ2VQb3J0cyYmLCBjb25zdCBNZXNzYWdlUG9ydElkZW50aWZpZXImIHJlbW90ZVRh
cmdldCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB0YWtlQWxsTWVzc2FnZXNGb3JQb3J0KGNv
bnN0IE1lc3NhZ2VQb3J0SWRlbnRpZmllciYsIEZ1bmN0aW9uPHZvaWQoVmVjdG9yPE1lc3NhZ2VX
aXRoTWVzc2FnZVBvcnRzPiYmLCBGdW5jdGlvbjx2b2lkKCk+JiYpPiYmKTsKLSAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIGNoZWNrUmVtb3RlUG9ydEZvckFjdGl2aXR5KGNvbnN0IE1lc3NhZ2VQb3J0
SWRlbnRpZmllciYgcmVtb3RlVGFyZ2V0LCBGdW5jdGlvbjx2b2lkKE1lc3NhZ2VQb3J0Q2hhbm5l
bFByb3ZpZGVyOjpIYXNBY3Rpdml0eSk+JiYgY2FsbGJhY2spOworICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgdGFrZUFsbE1lc3NhZ2VzRm9yUG9ydChjb25zdCBNZXNzYWdlUG9ydElkZW50aWZpZXIm
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cz4m
JiwgRnVuY3Rpb248dm9pZCgpPiYmKT4mJik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjaGVj
a1JlbW90ZVBvcnRGb3JBY3Rpdml0eShjb25zdCBNZXNzYWdlUG9ydElkZW50aWZpZXImIHJlbW90
ZVRhcmdldCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRl
cjo6SGFzQWN0aXZpdHkpPiYmIGNhbGxiYWNrKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIE1lc3Nh
Z2VQb3J0Q2hhbm5lbCogZXhpc3RpbmdDaGFubmVsQ29udGFpbmluZ1BvcnQoY29uc3QgTWVzc2Fn
ZVBvcnRJZGVudGlmaWVyJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9tZXNz
YWdlcG9ydHMvV29ya2VyTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvZG9tL21lc3NhZ2Vwb3J0cy9Xb3JrZXJNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlci5j
cHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uMTM0MGE4ODQ1N2EzNDljMjM0MDYyZTVmNTNiMzNlM2VlZmU0MTBhZgot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9tZXNzYWdlcG9ydHMvV29ya2Vy
TWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXIuY3BwCkBAIC0wLDAgKzEsMTM4IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldvcmtlck1lc3NhZ2VQb3J0Q2hh
bm5lbFByb3ZpZGVyLmgiCisKKyNpbmNsdWRlICJNZXNzYWdlUG9ydC5oIgorI2luY2x1ZGUgIldv
cmtlckdsb2JhbFNjb3BlLmgiCisjaW5jbHVkZSAiV29ya2VyVGhyZWFkLmgiCisjaW5jbHVkZSA8
d3RmL01haW5UaHJlYWQuaD4KKyNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK1dvcmtlck1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyOjpXb3JrZXJNZXNz
YWdlUG9ydENoYW5uZWxQcm92aWRlcihXb3JrZXJHbG9iYWxTY29wZSYgc2NvcGUpCisgICAgOiBt
X3Njb3BlKHNjb3BlKQoreworfQorCitXb3JrZXJNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlcjo6
fldvcmtlck1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyKCkKK3sKKyAgICB3aGlsZSAoIW1fdGFr
ZUFsbE1lc3NhZ2VzQ2FsbGJhY2tzLmlzRW1wdHkoKSkgeworICAgICAgICBhdXRvIGZpcnN0ID0g
bV90YWtlQWxsTWVzc2FnZXNDYWxsYmFja3MuYmVnaW4oKTsKKyAgICAgICAgZmlyc3QtPnZhbHVl
KHsgfSwgW10geyB9KTsKKyAgICAgICAgbV90YWtlQWxsTWVzc2FnZXNDYWxsYmFja3MucmVtb3Zl
KGZpcnN0KTsKKyAgICB9CisgICAgd2hpbGUgKCFtX2FjdGl2aXR5Q2FsbGJhY2tzLmlzRW1wdHko
KSkgeworICAgICAgICBhdXRvIGZpcnN0ID0gbV9hY3Rpdml0eUNhbGxiYWNrcy5iZWdpbigpOwor
ICAgICAgICBmaXJzdC0+dmFsdWUoSGFzQWN0aXZpdHk6Ok5vKTsKKyAgICAgICAgbV9hY3Rpdml0
eUNhbGxiYWNrcy5yZW1vdmUoZmlyc3QpOworICAgIH0KK30KKwordm9pZCBXb3JrZXJNZXNzYWdl
UG9ydENoYW5uZWxQcm92aWRlcjo6Y3JlYXRlTmV3TWVzc2FnZVBvcnRDaGFubmVsKGNvbnN0IE1l
c3NhZ2VQb3J0SWRlbnRpZmllciYgbG9jYWwsIGNvbnN0IE1lc3NhZ2VQb3J0SWRlbnRpZmllciYg
cmVtb3RlKQoreworICAgIGNhbGxPbk1haW5UaHJlYWQoW2xvY2FsLCByZW1vdGVdIHsKKyAgICAg
ICAgTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXI6OnNpbmdsZXRvbigpLmNyZWF0ZU5ld01lc3Nh
Z2VQb3J0Q2hhbm5lbChsb2NhbCwgcmVtb3RlKTsKKyAgICB9KTsKK30KKwordm9pZCBXb3JrZXJN
ZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlcjo6ZW50YW5nbGVMb2NhbFBvcnRJblRoaXNQcm9jZXNz
VG9SZW1vdGUoY29uc3QgTWVzc2FnZVBvcnRJZGVudGlmaWVyJiBsb2NhbCwgY29uc3QgTWVzc2Fn
ZVBvcnRJZGVudGlmaWVyJiByZW1vdGUpCit7CisgICAgY2FsbE9uTWFpblRocmVhZChbbG9jYWws
IHJlbW90ZV0geworICAgICAgICBNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlcjo6c2luZ2xldG9u
KCkuZW50YW5nbGVMb2NhbFBvcnRJblRoaXNQcm9jZXNzVG9SZW1vdGUobG9jYWwsIHJlbW90ZSk7
CisgICAgfSk7Cit9CisKK3ZvaWQgV29ya2VyTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXI6Om1l
c3NhZ2VQb3J0RGlzZW50YW5nbGVkKGNvbnN0IE1lc3NhZ2VQb3J0SWRlbnRpZmllciYgbG9jYWwp
Cit7CisgICAgY2FsbE9uTWFpblRocmVhZChbbG9jYWxdIHsKKyAgICAgICAgTWVzc2FnZVBvcnRD
aGFubmVsUHJvdmlkZXI6OnNpbmdsZXRvbigpLm1lc3NhZ2VQb3J0RGlzZW50YW5nbGVkKGxvY2Fs
KTsKKyAgICB9KTsKK30KKwordm9pZCBXb3JrZXJNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlcjo6
bWVzc2FnZVBvcnRDbG9zZWQoY29uc3QgTWVzc2FnZVBvcnRJZGVudGlmaWVyJiBsb2NhbCkKK3sK
KyAgICBjYWxsT25NYWluVGhyZWFkKFtsb2NhbF0geworICAgICAgICBNZXNzYWdlUG9ydENoYW5u
ZWxQcm92aWRlcjo6c2luZ2xldG9uKCkubWVzc2FnZVBvcnRDbG9zZWQobG9jYWwpOworICAgIH0p
OworfQorCit2b2lkIFdvcmtlck1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyOjpwb3N0TWVzc2Fn
ZVRvUmVtb3RlKGNvbnN0IE1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzJiBtZXNzYWdlLCBjb25zdCBN
ZXNzYWdlUG9ydElkZW50aWZpZXImIHJlbW90ZVRhcmdldCkKK3sKKyAgICBjYWxsT25NYWluVGhy
ZWFkQW5kV2FpdChbJl0oKSBtdXRhYmxlIHsKKyAgICAgICAgTWVzc2FnZVBvcnRDaGFubmVsUHJv
dmlkZXI6OnNpbmdsZXRvbigpLnBvc3RNZXNzYWdlVG9SZW1vdGUobWVzc2FnZSwgcmVtb3RlVGFy
Z2V0KTsKKyAgICB9KTsKK30KKwordm9pZCBXb3JrZXJNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRl
cjo6dGFrZUFsbE1lc3NhZ2VzRm9yUG9ydChjb25zdCBNZXNzYWdlUG9ydElkZW50aWZpZXImIGlk
ZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPE1lc3NhZ2VXaXRoTWVzc2Fn
ZVBvcnRzPiYmLCBGdW5jdGlvbjx2b2lkKCk+JiYpPiYmIGNhbGxiYWNrKQoreworICAgIHVpbnQ2
NF90IGNhbGxiYWNrSWRlbnRpZmllciA9ICsrbV9sYXN0Q2FsbGJhY2tJZGVudGlmaWVyOworICAg
IG1fdGFrZUFsbE1lc3NhZ2VzQ2FsbGJhY2tzLmFkZChjYWxsYmFja0lkZW50aWZpZXIsIFdURk1v
dmUoY2FsbGJhY2spKTsKKworICAgIGNhbGxPbk1haW5UaHJlYWQoW3RoaXMsIHdvcmtlclRocmVh
ZCA9IG1ha2VSZWYobV9zY29wZS50aHJlYWQoKSksIGNhbGxiYWNrSWRlbnRpZmllciwgaWRlbnRp
Zmllcl0oKSBtdXRhYmxlIHsKKyAgICAgICAgTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXI6OnNp
bmdsZXRvbigpLnRha2VBbGxNZXNzYWdlc0ZvclBvcnQoaWRlbnRpZmllciwgW3RoaXMsIHdvcmtl
clRocmVhZCA9IFdURk1vdmUod29ya2VyVGhyZWFkKSwgY2FsbGJhY2tJZGVudGlmaWVyXShWZWN0
b3I8TWVzc2FnZVdpdGhNZXNzYWdlUG9ydHM+JiYgbWVzc2FnZXMsIEZ1bmN0aW9uPHZvaWQoKT4m
JiBjb21wbGV0aW9uSGFuZGxlcikgeworICAgICAgICAgICAgd29ya2VyVGhyZWFkLT5ydW5Mb29w
KCkucG9zdFRhc2tGb3JNb2RlKFt0aGlzLCBjYWxsYmFja0lkZW50aWZpZXIsIG1lc3NhZ2VzID0g
V1RGTW92ZShtZXNzYWdlcyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlcildKGF1dG8mIHNjb3BlKSBtdXRhYmxlIHsKKyAgICAgICAgICAgICAgICBBU1NFUlQo
dGhpcyA9PSAmZG93bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+KHNjb3BlKS5tZXNzYWdlUG9ydENo
YW5uZWxQcm92aWRlcigpKTsKKyAgICAgICAgICAgICAgICBtX3Rha2VBbGxNZXNzYWdlc0NhbGxi
YWNrcy50YWtlKGNhbGxiYWNrSWRlbnRpZmllcikoV1RGTW92ZShtZXNzYWdlcyksIFtjb21wbGV0
aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgeworICAg
ICAgICAgICAgICAgICAgICBjYWxsT25NYWluVGhyZWFkKFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpKTsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIH0sIFdvcmtlclJ1bkxvb3A6
OmRlZmF1bHRNb2RlKCkpOworICAgICAgICB9KTsKKyAgICB9KTsKK30KKwordm9pZCBXb3JrZXJN
ZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlcjo6Y2hlY2tSZW1vdGVQb3J0Rm9yQWN0aXZpdHkoY29u
c3QgTWVzc2FnZVBvcnRJZGVudGlmaWVyJiByZW1vdGVUYXJnZXQsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoSGFzQWN0aXZpdHkpPiYmIGNhbGxiYWNrKQoreworICAgIHVpbnQ2NF90IGNhbGxiYWNr
SWRlbnRpZmllciA9ICsrbV9sYXN0Q2FsbGJhY2tJZGVudGlmaWVyOworICAgIG1fYWN0aXZpdHlD
YWxsYmFja3MuYWRkKGNhbGxiYWNrSWRlbnRpZmllciwgV1RGTW92ZShjYWxsYmFjaykpOworCisg
ICAgY2FsbE9uTWFpblRocmVhZChbdGhpcywgd29ya2VyVGhyZWFkID0gbWFrZVJlZihtX3Njb3Bl
LnRocmVhZCgpKSwgY2FsbGJhY2tJZGVudGlmaWVyLCByZW1vdGVUYXJnZXRdKCkgbXV0YWJsZSB7
CisgICAgICAgIE1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyOjpzaW5nbGV0b24oKS5jaGVja1Jl
bW90ZVBvcnRGb3JBY3Rpdml0eShyZW1vdGVUYXJnZXQsIFt0aGlzLCB3b3JrZXJUaHJlYWQgPSBX
VEZNb3ZlKHdvcmtlclRocmVhZCksIGNhbGxiYWNrSWRlbnRpZmllcl0oYXV0byBoYXNBY3Rpdml0
eSkgeworICAgICAgICAgICAgd29ya2VyVGhyZWFkLT5ydW5Mb29wKCkucG9zdFRhc2tGb3JNb2Rl
KFt0aGlzLCBjYWxsYmFja0lkZW50aWZpZXIsIGhhc0FjdGl2aXR5XShhdXRvJiBzY29wZSkgbXV0
YWJsZSB7CisgICAgICAgICAgICAgICAgQVNTRVJUKHRoaXMgPT0gJmRvd25jYXN0PFdvcmtlckds
b2JhbFNjb3BlPihzY29wZSkubWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXIoKSk7CisgICAgICAg
ICAgICAgICAgbV9hY3Rpdml0eUNhbGxiYWNrcy50YWtlKGNhbGxiYWNrSWRlbnRpZmllcikoaGFz
QWN0aXZpdHkpOworICAgICAgICAgICAgfSwgV29ya2VyUnVuTG9vcDo6ZGVmYXVsdE1vZGUoKSk7
CisgICAgICAgIH0pOworICAgIH0pOworfQorCit2b2lkIFdvcmtlck1lc3NhZ2VQb3J0Q2hhbm5l
bFByb3ZpZGVyOjpjaGVja1Byb2Nlc3NMb2NhbFBvcnRGb3JBY3Rpdml0eShjb25zdCBNZXNzYWdl
UG9ydElkZW50aWZpZXImIGlkZW50aWZpZXIsIFByb2Nlc3NJZGVudGlmaWVyIHByb2Nlc3NJZGVu
dGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEhhc0FjdGl2aXR5KT4mJiBjYWxsYmFjaykK
K3sKKyAgICB1aW50NjRfdCBjYWxsYmFja0lkZW50aWZpZXIgPSArK21fbGFzdENhbGxiYWNrSWRl
bnRpZmllcjsKKyAgICBtX2FjdGl2aXR5Q2FsbGJhY2tzLmFkZChjYWxsYmFja0lkZW50aWZpZXIs
IFdURk1vdmUoY2FsbGJhY2spKTsKKworICAgIGNhbGxPbk1haW5UaHJlYWQoW3RoaXMsIHdvcmtl
clRocmVhZCA9IG1ha2VSZWYobV9zY29wZS50aHJlYWQoKSksIGNhbGxiYWNrSWRlbnRpZmllciwg
aWRlbnRpZmllciwgcHJvY2Vzc0lkZW50aWZpZXJdKCkgbXV0YWJsZSB7CisgICAgICAgIE1lc3Nh
Z2VQb3J0Q2hhbm5lbFByb3ZpZGVyOjpzaW5nbGV0b24oKS5jaGVja1Byb2Nlc3NMb2NhbFBvcnRG
b3JBY3Rpdml0eShpZGVudGlmaWVyLCBwcm9jZXNzSWRlbnRpZmllciwgW3RoaXMsIHdvcmtlclRo
cmVhZCA9IFdURk1vdmUod29ya2VyVGhyZWFkKSwgY2FsbGJhY2tJZGVudGlmaWVyXShhdXRvIGhh
c0FjdGl2aXR5KSB7CisgICAgICAgICAgICB3b3JrZXJUaHJlYWQtPnJ1bkxvb3AoKS5wb3N0VGFz
a0Zvck1vZGUoW3RoaXMsIGNhbGxiYWNrSWRlbnRpZmllciwgaGFzQWN0aXZpdHldKGF1dG8mIHNj
b3BlKSBtdXRhYmxlIHsKKyAgICAgICAgICAgICAgICBBU1NFUlQodGhpcyA9PSAmZG93bmNhc3Q8
V29ya2VyR2xvYmFsU2NvcGU+KHNjb3BlKS5tZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlcigpKTsK
KyAgICAgICAgICAgICAgICBtX2FjdGl2aXR5Q2FsbGJhY2tzLnRha2UoY2FsbGJhY2tJZGVudGlm
aWVyKShoYXNBY3Rpdml0eSk7CisgICAgICAgICAgICB9LCBXb3JrZXJSdW5Mb29wOjpkZWZhdWx0
TW9kZSgpKTsKKyAgICAgICAgfSk7CisgICAgfSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9tZXNzYWdlcG9ydHMvV29ya2VyTWVz
c2FnZVBvcnRDaGFubmVsUHJvdmlkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9tZXNzYWdlcG9y
dHMvV29ya2VyTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44N2QwMjBh
ZjRjYzI5NDRkMDJhN2ZkMWU3NDU1N2VmYjUyNDlkMWVlCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL21lc3NhZ2Vwb3J0cy9Xb3JrZXJNZXNzYWdlUG9ydENoYW5uZWxQcm92
aWRlci5oCkBAIC0wLDAgKzEsNjEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2Ug
aW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0
aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25z
CisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3Qg
cmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNv
bmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0
aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Cisg
KiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRp
c2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlh
bHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUg
SVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycK
KyAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFC
SUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xB
SU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisg
KiBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LCBFWEVNUExBUlksIE9SCisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElU
WSwgV0hFVEhFUiBJTgorICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElO
Q0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2lu
Y2x1ZGUgIk1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyLmgiCisjaW5jbHVkZSA8d3RmL0NvbXBs
ZXRpb25IYW5kbGVyLmg+CisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYv
VmVjdG9yLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgV29ya2VyR2xvYmFsU2Nv
cGU7CisKK2NsYXNzIFdvcmtlck1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyIGZpbmFsIDogcHVi
bGljIE1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9D
QVRFRDsKK3B1YmxpYzoKKyAgICBleHBsaWNpdCBXb3JrZXJNZXNzYWdlUG9ydENoYW5uZWxQcm92
aWRlcihXb3JrZXJHbG9iYWxTY29wZSYpOworICAgIH5Xb3JrZXJNZXNzYWdlUG9ydENoYW5uZWxQ
cm92aWRlcigpOworCitwcml2YXRlOgorICAgIHZvaWQgY3JlYXRlTmV3TWVzc2FnZVBvcnRDaGFu
bmVsKGNvbnN0IE1lc3NhZ2VQb3J0SWRlbnRpZmllciYgbG9jYWwsIGNvbnN0IE1lc3NhZ2VQb3J0
SWRlbnRpZmllciYgcmVtb3RlKSBmaW5hbDsKKyAgICB2b2lkIGVudGFuZ2xlTG9jYWxQb3J0SW5U
aGlzUHJvY2Vzc1RvUmVtb3RlKGNvbnN0IE1lc3NhZ2VQb3J0SWRlbnRpZmllciYgbG9jYWwsIGNv
bnN0IE1lc3NhZ2VQb3J0SWRlbnRpZmllciYgcmVtb3RlKSBmaW5hbDsKKyAgICB2b2lkIG1lc3Nh
Z2VQb3J0RGlzZW50YW5nbGVkKGNvbnN0IE1lc3NhZ2VQb3J0SWRlbnRpZmllciYgbG9jYWwpIGZp
bmFsOworICAgIHZvaWQgbWVzc2FnZVBvcnRDbG9zZWQoY29uc3QgTWVzc2FnZVBvcnRJZGVudGlm
aWVyJiBsb2NhbCkgZmluYWw7CisgICAgdm9pZCBwb3N0TWVzc2FnZVRvUmVtb3RlKGNvbnN0IE1l
c3NhZ2VXaXRoTWVzc2FnZVBvcnRzJiwgY29uc3QgTWVzc2FnZVBvcnRJZGVudGlmaWVyJiByZW1v
dGVUYXJnZXQpIGZpbmFsOworICAgIHZvaWQgdGFrZUFsbE1lc3NhZ2VzRm9yUG9ydChjb25zdCBN
ZXNzYWdlUG9ydElkZW50aWZpZXImLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxNZXNz
YWdlV2l0aE1lc3NhZ2VQb3J0cz4mJiwgRnVuY3Rpb248dm9pZCgpPiYmKT4mJikgZmluYWw7Cisg
ICAgdm9pZCBjaGVja1JlbW90ZVBvcnRGb3JBY3Rpdml0eShjb25zdCBNZXNzYWdlUG9ydElkZW50
aWZpZXImIHJlbW90ZVRhcmdldCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChIYXNBY3Rpdml0eSk+
JiYgY2FsbGJhY2spIGZpbmFsOworCisgICAgdm9pZCBjaGVja1Byb2Nlc3NMb2NhbFBvcnRGb3JB
Y3Rpdml0eShjb25zdCBNZXNzYWdlUG9ydElkZW50aWZpZXImLCBQcm9jZXNzSWRlbnRpZmllciwg
Q29tcGxldGlvbkhhbmRsZXI8dm9pZChIYXNBY3Rpdml0eSk+JiYpIGZpbmFsOworCisgICAgV29y
a2VyR2xvYmFsU2NvcGUmIG1fc2NvcGU7CisKKyAgICB1aW50NjRfdCBtX2xhc3RDYWxsYmFja0lk
ZW50aWZpZXIgeyAwIH07CisgICAgSGFzaE1hcDx1aW50NjRfdCwgQ29tcGxldGlvbkhhbmRsZXI8
dm9pZChWZWN0b3I8TWVzc2FnZVdpdGhNZXNzYWdlUG9ydHM+JiYsIEZ1bmN0aW9uPHZvaWQoKT4m
Jik+PiBtX3Rha2VBbGxNZXNzYWdlc0NhbGxiYWNrczsKKyAgICBIYXNoTWFwPHVpbnQ2NF90LCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKEhhc0FjdGl2aXR5KT4+IG1fYWN0aXZpdHlDYWxsYmFja3M7
Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
V29ya2VyR2xvYmFsU2NvcGUuY3BwCmluZGV4IDVlMTU1Yjc4MDIwNTI1ODc3ZDRkNzA3YzVhOWI4
YmZlZmU0ZDM3MmMuLmE5NzBhN2FkYTY3NWExNmNmMTY4NzBlYzNlYjNhNmMzNGNlZGMyZjYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuY3BwCkBAIC00NjMs
NiArNDYzLDEzIEBAIFdvcmtlckNhY2hlU3RvcmFnZUNvbm5lY3Rpb24mIFdvcmtlckdsb2JhbFNj
b3BlOjpjYWNoZVN0b3JhZ2VDb25uZWN0aW9uKCkKICAgICByZXR1cm4gKm1fY2FjaGVTdG9yYWdl
Q29ubmVjdGlvbjsKIH0KIAorTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXImIFdvcmtlckdsb2Jh
bFNjb3BlOjptZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlcigpCit7CisgICAgaWYgKCFtX21lc3Nh
Z2VQb3J0Q2hhbm5lbFByb3ZpZGVyKQorICAgICAgICBtX21lc3NhZ2VQb3J0Q2hhbm5lbFByb3Zp
ZGVyID0gbWFrZVVuaXF1ZTxXb3JrZXJNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlcj4oKnRoaXMp
OworICAgIHJldHVybiAqbV9tZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlcjsKK30KKwogdm9pZCBX
b3JrZXJHbG9iYWxTY29wZTo6Y3JlYXRlSW1hZ2VCaXRtYXAoSW1hZ2VCaXRtYXA6OlNvdXJjZSYm
IHNvdXJjZSwgSW1hZ2VCaXRtYXBPcHRpb25zJiYgb3B0aW9ucywgSW1hZ2VCaXRtYXA6OlByb21p
c2UmJiBwcm9taXNlKQogewogICAgIEltYWdlQml0bWFwOjpjcmVhdGVQcm9taXNlKCp0aGlzLCBX
VEZNb3ZlKHNvdXJjZSksIFdURk1vdmUob3B0aW9ucyksIFdURk1vdmUocHJvbWlzZSkpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5oIGIvU291
cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5oCmluZGV4IDliNzdlMmM2MTNh
YWIxOWE5ZWE1N2Y3MTVjODVjMTRjYmJjOGQ1MTYuLjFiNzFjMTFhY2M0YTkwMGQ5YmUyMWE2NTE2
NjE5MzM1MjM0YzllZDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2Vy
R2xvYmFsU2NvcGUuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNj
b3BlLmgKQEAgLTM1LDYgKzM1LDcgQEAKICNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSAi
V29ya2VyQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbi5oIgogI2luY2x1ZGUgIldvcmtlckV2ZW50UXVl
dWUuaCIKKyNpbmNsdWRlICJXb3JrZXJNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlci5oIgogI2lu
Y2x1ZGUgIldvcmtlclNjcmlwdENvbnRyb2xsZXIuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29y
ZS9Db25zb2xlTWVzc2FnZS5oPgogI2luY2x1ZGUgPG1lbW9yeT4KQEAgLTczLDYgKzc0LDcgQEAg
cHVibGljOgogI2VuZGlmCiAKICAgICBXb3JrZXJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uJiBjYWNo
ZVN0b3JhZ2VDb25uZWN0aW9uKCk7CisgICAgTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXImIG1l
c3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyKCk7CiAKICAgICBXb3JrZXJTY3JpcHRDb250cm9sbGVy
KiBzY3JpcHQoKSB7IHJldHVybiBtX3NjcmlwdC5nZXQoKTsgfQogICAgIHZvaWQgY2xlYXJTY3Jp
cHQoKSB7IG1fc2NyaXB0ID0gbnVsbHB0cjsgfQpAQCAtMjEwLDcgKzIxMiw3IEBAIHByaXZhdGU6
CiAKICAgICBQQUw6OlNlc3Npb25JRCBtX3Nlc3Npb25JRDsKICAgICBSZWZQdHI8V29ya2VyQ2Fj
aGVTdG9yYWdlQ29ubmVjdGlvbj4gbV9jYWNoZVN0b3JhZ2VDb25uZWN0aW9uOwotCisgICAgc3Rk
Ojp1bmlxdWVfcHRyPFdvcmtlck1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyPiBtX21lc3NhZ2VQ
b3J0Q2hhbm5lbFByb3ZpZGVyOwogICAgIHVuc2lnbmVkIGxvbmcgbV91bmlxdWVJZGVudGlmaWVy
IHsgMSB9OwogfTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVUlNZXNz
YWdlUG9ydENoYW5uZWxQcm92aWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9VSU1l
c3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyLmNwcAppbmRleCBmYjRjNjQ0YmUyYWRjNzdlNTU3YmYw
ZTI0Yzg2Y2Q5N2I1YTA5ZWUwLi4yMDNjNmI2ODAzZTcxYjIzMTBlYzM5MmEwZDVkNDBjOGZlYmQ3
OGY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9VSU1lc3NhZ2VQb3J0Q2hh
bm5lbFByb3ZpZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9VSU1lc3NhZ2VQ
b3J0Q2hhbm5lbFByb3ZpZGVyLmNwcApAQCAtMjgsNyArMjgsNiBAQAogCiAjaW5jbHVkZSAiV2Vi
UHJvY2Vzc01lc3NhZ2VzLmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Byb3h5LmgiCi0jaW5jbHVk
ZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogdXNpbmcg
bmFtZXNwYWNlIFdlYkNvcmU7CkBAIC03MywxOSArNzIsMTkgQEAgdm9pZCBVSU1lc3NhZ2VQb3J0
Q2hhbm5lbFByb3ZpZGVyOjptZXNzYWdlUG9ydENsb3NlZChjb25zdCBNZXNzYWdlUG9ydElkZW50
aWZpZXIKICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KIAotdm9pZCBVSU1lc3NhZ2VQb3J0
Q2hhbm5lbFByb3ZpZGVyOjp0YWtlQWxsTWVzc2FnZXNGb3JQb3J0KGNvbnN0IE1lc3NhZ2VQb3J0
SWRlbnRpZmllciYsIEZ1bmN0aW9uPHZvaWQoVmVjdG9yPE1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRz
PiYmLCBGdW5jdGlvbjx2b2lkKCk+JiYpPiYmKQordm9pZCBVSU1lc3NhZ2VQb3J0Q2hhbm5lbFBy
b3ZpZGVyOjp0YWtlQWxsTWVzc2FnZXNGb3JQb3J0KGNvbnN0IE1lc3NhZ2VQb3J0SWRlbnRpZmll
ciYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPE1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRz
PiYmLCBGdW5jdGlvbjx2b2lkKCk+JiYpPiYmKQogewogICAgIC8vIFNob3VsZCBuZXZlciBiZSBj
YWxsZWQgaW4gdGhlIFVJIHByb2Nlc3MgcHJvdmlkZXIuCiAgICAgQVNTRVJUX05PVF9SRUFDSEVE
KCk7CiB9CiAKLXZvaWQgVUlNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlcjo6cG9zdE1lc3NhZ2VU
b1JlbW90ZShNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cyYmLCBjb25zdCBNZXNzYWdlUG9ydElkZW50
aWZpZXImKQordm9pZCBVSU1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyOjpwb3N0TWVzc2FnZVRv
UmVtb3RlKGNvbnN0IE1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzJiwgY29uc3QgTWVzc2FnZVBvcnRJ
ZGVudGlmaWVyJikKIHsKICAgICAvLyBTaG91bGQgbmV2ZXIgYmUgY2FsbGVkIGluIHRoZSBVSSBw
cm9jZXNzIHByb3ZpZGVyLgogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCi12b2lkIFVJ
TWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXI6OmNoZWNrUmVtb3RlUG9ydEZvckFjdGl2aXR5KGNv
bnN0IE1lc3NhZ2VQb3J0SWRlbnRpZmllciYsIEZ1bmN0aW9uPHZvaWQoSGFzQWN0aXZpdHkpPiYm
KQordm9pZCBVSU1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyOjpjaGVja1JlbW90ZVBvcnRGb3JB
Y3Rpdml0eShjb25zdCBNZXNzYWdlUG9ydElkZW50aWZpZXImLCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKEhhc0FjdGl2aXR5KT4mJikKIHsKICAgICAvLyBTaG91bGQgbmV2ZXIgYmUgY2FsbGVkIGlu
IHRoZSBVSSBwcm9jZXNzIHByb3ZpZGVyLgogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVUlNZXNzYWdlUG9ydENoYW5uZWxQcm92
aWRlci5oIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVUlNZXNzYWdlUG9ydENoYW5uZWxQcm92
aWRlci5oCmluZGV4IDZjMjY5NjA0YTI4Y2M0NTYzNWQ0YjM2YmUzNWFlNjZiMzEwNjQ5MjUuLmM2
NzllM2ViMDIzNDA3ZjU1MTMwNGM0YzU0NTU5N2VkMmVmZDM3MDUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1VJTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXIuaAorKysgYi9T
b3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9VSU1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyLmgKQEAg
LTQzLDkgKzQzLDkgQEAgcHJpdmF0ZToKICAgICB2b2lkIGVudGFuZ2xlTG9jYWxQb3J0SW5UaGlz
UHJvY2Vzc1RvUmVtb3RlKGNvbnN0IFdlYkNvcmU6Ok1lc3NhZ2VQb3J0SWRlbnRpZmllciYgbG9j
YWwsIGNvbnN0IFdlYkNvcmU6Ok1lc3NhZ2VQb3J0SWRlbnRpZmllciYgcmVtb3RlKSBmaW5hbDsK
ICAgICB2b2lkIG1lc3NhZ2VQb3J0RGlzZW50YW5nbGVkKGNvbnN0IFdlYkNvcmU6Ok1lc3NhZ2VQ
b3J0SWRlbnRpZmllciYgbG9jYWwpIGZpbmFsOwogICAgIHZvaWQgbWVzc2FnZVBvcnRDbG9zZWQo
Y29uc3QgV2ViQ29yZTo6TWVzc2FnZVBvcnRJZGVudGlmaWVyJiBsb2NhbCkgZmluYWw7Ci0gICAg
dm9pZCB0YWtlQWxsTWVzc2FnZXNGb3JQb3J0KGNvbnN0IFdlYkNvcmU6Ok1lc3NhZ2VQb3J0SWRl
bnRpZmllciYsIEZ1bmN0aW9uPHZvaWQoVmVjdG9yPFdlYkNvcmU6Ok1lc3NhZ2VXaXRoTWVzc2Fn
ZVBvcnRzPiYmLCBGdW5jdGlvbjx2b2lkKCk+JiYpPiYmKSBmaW5hbDsKLSAgICB2b2lkIHBvc3RN
ZXNzYWdlVG9SZW1vdGUoV2ViQ29yZTo6TWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMmJiwgY29uc3Qg
V2ViQ29yZTo6TWVzc2FnZVBvcnRJZGVudGlmaWVyJiByZW1vdGVUYXJnZXQpIGZpbmFsOwotICAg
IHZvaWQgY2hlY2tSZW1vdGVQb3J0Rm9yQWN0aXZpdHkoY29uc3QgV2ViQ29yZTo6TWVzc2FnZVBv
cnRJZGVudGlmaWVyJiByZW1vdGVUYXJnZXQsIEZ1bmN0aW9uPHZvaWQoSGFzQWN0aXZpdHkpPiYm
IGNhbGxiYWNrKSBmaW5hbDsKKyAgICB2b2lkIHRha2VBbGxNZXNzYWdlc0ZvclBvcnQoY29uc3Qg
V2ViQ29yZTo6TWVzc2FnZVBvcnRJZGVudGlmaWVyJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChW
ZWN0b3I8V2ViQ29yZTo6TWVzc2FnZVdpdGhNZXNzYWdlUG9ydHM+JiYsIEZ1bmN0aW9uPHZvaWQo
KT4mJik+JiYpIGZpbmFsOworICAgIHZvaWQgcG9zdE1lc3NhZ2VUb1JlbW90ZShjb25zdCBXZWJD
b3JlOjpNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cyYsIGNvbnN0IFdlYkNvcmU6Ok1lc3NhZ2VQb3J0
SWRlbnRpZmllciYgcmVtb3RlVGFyZ2V0KSBmaW5hbDsKKyAgICB2b2lkIGNoZWNrUmVtb3RlUG9y
dEZvckFjdGl2aXR5KGNvbnN0IFdlYkNvcmU6Ok1lc3NhZ2VQb3J0SWRlbnRpZmllciYgcmVtb3Rl
VGFyZ2V0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEhhc0FjdGl2aXR5KT4mJiBjYWxsYmFjaykg
ZmluYWw7CiAgICAgdm9pZCBjaGVja1Byb2Nlc3NMb2NhbFBvcnRGb3JBY3Rpdml0eShjb25zdCBX
ZWJDb3JlOjpNZXNzYWdlUG9ydElkZW50aWZpZXImLCBXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmll
ciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChIYXNBY3Rpdml0eSk+JiYpIGZpbmFsOwogCiAgICAg
V2ViQ29yZTo6TWVzc2FnZVBvcnRDaGFubmVsUmVnaXN0cnkgbV9yZWdpc3RyeTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJNZXNzYWdlUG9y
dENoYW5uZWxQcm92aWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1
cHBvcnQvV2ViTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXIuY3BwCmluZGV4IDZkMjg1NmEwNGVk
YTI5MmY2ZjZhNjg3YzBlMTZjMjEwMmE4MzE1NTEuLjhlNjIxNmE3NzE3ODA3ZWVjY2ZiN2Q0NTg0
ODQ3ZDc1NmQ3OTQwYzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJD
b3JlU3VwcG9ydC9XZWJNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlci5jcHAKKysrIGIvU291cmNl
L1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYk1lc3NhZ2VQb3J0Q2hhbm5lbFBy
b3ZpZGVyLmNwcApAQCAtNzAsMTggKzcwLDE0IEBAIHZvaWQgV2ViTWVzc2FnZVBvcnRDaGFubmVs
UHJvdmlkZXI6Om1lc3NhZ2VQb3J0Q2xvc2VkKGNvbnN0IE1lc3NhZ2VQb3J0SWRlbnRpZmllCiAg
ICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2Vu
ZChNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpNZXNzYWdlUG9ydENsb3NlZChwb3J0KSwgMCk7
CiB9CiAKLXZvaWQgV2ViTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXI6OnRha2VBbGxNZXNzYWdl
c0ZvclBvcnQoY29uc3QgTWVzc2FnZVBvcnRJZGVudGlmaWVyJiBwb3J0LCBGdW5jdGlvbjx2b2lk
KFZlY3RvcjxNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cz4mJiwgRnVuY3Rpb248dm9pZCgpPiYmKT4m
JiBjb21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2ViTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXI6
OnRha2VBbGxNZXNzYWdlc0ZvclBvcnQoY29uc3QgTWVzc2FnZVBvcnRJZGVudGlmaWVyJiBwb3J0
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cz4m
JiwgRnVuY3Rpb248dm9pZCgpPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBzdGF0
aWMgc3RkOjphdG9taWM8dWludDY0X3Q+IGN1cnJlbnRIYW5kbGVySWRlbnRpZmllcjsKKyAgICBB
U1NFUlQoaXNNYWluVGhyZWFkKCkpOworICAgIHN0YXRpYyB1aW50NjRfdCBjdXJyZW50SGFuZGxl
cklkZW50aWZpZXI7CiAgICAgdWludDY0X3QgaWRlbnRpZmllciA9ICsrY3VycmVudEhhbmRsZXJJ
ZGVudGlmaWVyOwogCi0gICAgewotICAgICAgICBMb2NrZXI8TG9jaz4gbG9ja2VyKG1fdGFrZUFs
bE1lc3NhZ2VzQ2FsbGJhY2tMb2NrKTsKLSAgICAgICAgYXV0byByZXN1bHQgPSBtX3Rha2VBbGxN
ZXNzYWdlc0NhbGxiYWNrcy5lbnN1cmUoaWRlbnRpZmllciwgW2NvbXBsZXRpb25IYW5kbGVyID0g
V1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7Ci0gICAgICAgICAgICByZXR1
cm4gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcik7Ci0gICAgICAgIH0pOwotICAgICAgICBBU1NF
UlRfVU5VU0VEKHJlc3VsdCwgcmVzdWx0LmlzTmV3RW50cnkpOwotICAgIH0KKyAgICBBU1NFUlQo
IW1fdGFrZUFsbE1lc3NhZ2VzQ2FsbGJhY2tzLmNvbnRhaW5zKGlkZW50aWZpZXIpKTsKKyAgICBt
X3Rha2VBbGxNZXNzYWdlc0NhbGxiYWNrcy5hZGQoaWRlbnRpZmllciwgV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlcikpOwogCiAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vz
c0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpUYWtlQWxsTWVz
c2FnZXNGb3JQb3J0KHBvcnQsIGlkZW50aWZpZXIpLCAwKTsKIH0KQEAgLTkwLDEwICs4Niw3IEBA
IHZvaWQgV2ViTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXI6OmRpZFRha2VBbGxNZXNzYWdlc0Zv
clBvcnQoVmVjdG9yPE1lc3NhZ2VXaXRoCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsK
IAotICAgIExvY2tlcjxMb2NrPiBsb2NrZXIobV90YWtlQWxsTWVzc2FnZXNDYWxsYmFja0xvY2sp
OwogICAgIGF1dG8gY2FsbGJhY2sgPSBtX3Rha2VBbGxNZXNzYWdlc0NhbGxiYWNrcy50YWtlKG1l
c3NhZ2VDYWxsYmFja0lkZW50aWZpZXIpOwotICAgIGxvY2tlci51bmxvY2tFYXJseSgpOwotCiAg
ICAgQVNTRVJUKGNhbGxiYWNrKTsKICAgICBjYWxsYmFjayhXVEZNb3ZlKG1lc3NhZ2VzKSwgW21l
c3NhZ2VCYXRjaElkZW50aWZpZXJdIHsKICAgICAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCku
cGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5
OjpEaWREZWxpdmVyTWVzc2FnZVBvcnRNZXNzYWdlcyhtZXNzYWdlQmF0Y2hJZGVudGlmaWVyKSwg
MCk7CkBAIC0xMDQsMTcgKzk3LDE0IEBAIHZvaWQgV2ViTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlk
ZXI6OmRpZENoZWNrUmVtb3RlUG9ydEZvckFjdGl2aXR5KHVpbnQ2NF90IGNhbGxiCiB7CiAgICAg
QVNTRVJUKGlzTWFpblRocmVhZCgpKTsKIAotICAgIExvY2tlcjxMb2NrPiBsb2NrZXIobV9yZW1v
dGVBY3Rpdml0eUNhbGxiYWNrTG9jayk7CiAgICAgYXV0byBjYWxsYmFjayA9IG1fcmVtb3RlQWN0
aXZpdHlDYWxsYmFja3MudGFrZShjYWxsYmFja0lkZW50aWZpZXIpOwotICAgIGxvY2tlci51bmxv
Y2tFYXJseSgpOwotCiAgICAgQVNTRVJUKGNhbGxiYWNrKTsKICAgICBjYWxsYmFjayhoYXNBY3Rp
dml0eSA/IEhhc0FjdGl2aXR5OjpZZXMgOiBIYXNBY3Rpdml0eTo6Tm8pOwogfQogCi12b2lkIFdl
Yk1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyOjpwb3N0TWVzc2FnZVRvUmVtb3RlKE1lc3NhZ2VX
aXRoTWVzc2FnZVBvcnRzJiYgbWVzc2FnZSwgY29uc3QgTWVzc2FnZVBvcnRJZGVudGlmaWVyJiBy
ZW1vdGVUYXJnZXQpCit2b2lkIFdlYk1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyOjpwb3N0TWVz
c2FnZVRvUmVtb3RlKGNvbnN0IE1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzJiBtZXNzYWdlLCBjb25z
dCBNZXNzYWdlUG9ydElkZW50aWZpZXImIHJlbW90ZVRhcmdldCkKIHsKLSAgICBXZWJQcm9jZXNz
OjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJQcm9jZXNzUHJveHk6OlBvc3RNZXNzYWdlVG9SZW1vdGUoV1RGTW92ZShtZXNzYWdlKSwgcmVt
b3RlVGFyZ2V0KSwgMCk7CisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vz
c0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpQb3N0TWVzc2Fn
ZVRvUmVtb3RlKG1lc3NhZ2UsIHJlbW90ZVRhcmdldCksIDApOwogfQogCiB2b2lkIFdlYk1lc3Nh
Z2VQb3J0Q2hhbm5lbFByb3ZpZGVyOjpjaGVja1Byb2Nlc3NMb2NhbFBvcnRGb3JBY3Rpdml0eShj
b25zdCBNZXNzYWdlUG9ydElkZW50aWZpZXImIGlkZW50aWZpZXIsIHVpbnQ2NF90IGNhbGxiYWNr
SWRlbnRpZmllcikKQEAgLTEyOCwxNiArMTE4LDE1IEBAIHZvaWQgV2ViTWVzc2FnZVBvcnRDaGFu
bmVsUHJvdmlkZXI6OmNoZWNrUHJvY2Vzc0xvY2FsUG9ydEZvckFjdGl2aXR5KGNvbnN0IE1lc3Nh
CiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKLXZvaWQgV2ViTWVzc2FnZVBvcnRDaGFu
bmVsUHJvdmlkZXI6OmNoZWNrUmVtb3RlUG9ydEZvckFjdGl2aXR5KGNvbnN0IE1lc3NhZ2VQb3J0
SWRlbnRpZmllciYgcmVtb3RlVGFyZ2V0LCBGdW5jdGlvbjx2b2lkKEhhc0FjdGl2aXR5KT4mJiBj
b21wbGV0aW9uSGFuZGxlcikKK3ZvaWQgV2ViTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXI6OmNo
ZWNrUmVtb3RlUG9ydEZvckFjdGl2aXR5KGNvbnN0IE1lc3NhZ2VQb3J0SWRlbnRpZmllciYgcmVt
b3RlVGFyZ2V0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEhhc0FjdGl2aXR5KT4mJiBjb21wbGV0
aW9uSGFuZGxlcikKIHsKLSAgICBzdGF0aWMgc3RkOjphdG9taWM8dWludDY0X3Q+IGN1cnJlbnRI
YW5kbGVySWRlbnRpZmllcjsKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworCisgICAgc3Rh
dGljIHVpbnQ2NF90IGN1cnJlbnRIYW5kbGVySWRlbnRpZmllcjsKICAgICB1aW50NjRfdCBpZGVu
dGlmaWVyID0gKytjdXJyZW50SGFuZGxlcklkZW50aWZpZXI7CiAKLSAgICB7Ci0gICAgICAgIExv
Y2tlcjxMb2NrPiBsb2NrZXIobV9yZW1vdGVBY3Rpdml0eUNhbGxiYWNrTG9jayk7Ci0gICAgICAg
IEFTU0VSVCghbV9yZW1vdGVBY3Rpdml0eUNhbGxiYWNrcy5jb250YWlucyhpZGVudGlmaWVyKSk7
Ci0gICAgICAgIG1fcmVtb3RlQWN0aXZpdHlDYWxsYmFja3Muc2V0KGlkZW50aWZpZXIsIFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpKTsKLSAgICB9CisgICAgQVNTRVJUKCFtX3JlbW90ZUFjdGl2
aXR5Q2FsbGJhY2tzLmNvbnRhaW5zKGlkZW50aWZpZXIpKTsKKyAgICBtX3JlbW90ZUFjdGl2aXR5
Q2FsbGJhY2tzLnNldChpZGVudGlmaWVyLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAK
ICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5z
ZW5kKE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OkNoZWNrUmVtb3RlUG9ydEZvckFjdGl2aXR5
KHJlbW90ZVRhcmdldCwgaWRlbnRpZmllciksIDApOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYk1lc3NhZ2VQb3J0Q2hhbm5lbFByb3Zp
ZGVyLmggYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViTWVzc2Fn
ZVBvcnRDaGFubmVsUHJvdmlkZXIuaAppbmRleCA0YmIzN2ZkZDYwNzc3NGVkODA5YTk2N2E3NzUx
NWZiYWZiNmVmNmExLi5kMDUwNjg0ODFiNDkxNGZmYWFlYzgxMzRhZmViODc1MzVkZWI3YjZlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViTWVz
c2FnZVBvcnRDaGFubmVsUHJvdmlkZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3Mv
V2ViQ29yZVN1cHBvcnQvV2ViTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXIuaApAQCAtNDgsMTcg
KzQ4LDE3IEBAIHByaXZhdGU6CiAgICAgdm9pZCBlbnRhbmdsZUxvY2FsUG9ydEluVGhpc1Byb2Nl
c3NUb1JlbW90ZShjb25zdCBXZWJDb3JlOjpNZXNzYWdlUG9ydElkZW50aWZpZXImIGxvY2FsLCBj
b25zdCBXZWJDb3JlOjpNZXNzYWdlUG9ydElkZW50aWZpZXImIHJlbW90ZSkgZmluYWw7CiAgICAg
dm9pZCBtZXNzYWdlUG9ydERpc2VudGFuZ2xlZChjb25zdCBXZWJDb3JlOjpNZXNzYWdlUG9ydElk
ZW50aWZpZXImIGxvY2FsKSBmaW5hbDsKICAgICB2b2lkIG1lc3NhZ2VQb3J0Q2xvc2VkKGNvbnN0
IFdlYkNvcmU6Ok1lc3NhZ2VQb3J0SWRlbnRpZmllciYgbG9jYWwpIGZpbmFsOwotICAgIHZvaWQg
dGFrZUFsbE1lc3NhZ2VzRm9yUG9ydChjb25zdCBXZWJDb3JlOjpNZXNzYWdlUG9ydElkZW50aWZp
ZXImLCBGdW5jdGlvbjx2b2lkKFZlY3RvcjxXZWJDb3JlOjpNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0
cz4mJiwgRnVuY3Rpb248dm9pZCgpPiYmKT4mJikgZmluYWw7Ci0gICAgdm9pZCBwb3N0TWVzc2Fn
ZVRvUmVtb3RlKFdlYkNvcmU6Ok1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzJiYsIGNvbnN0IFdlYkNv
cmU6Ok1lc3NhZ2VQb3J0SWRlbnRpZmllciYgcmVtb3RlVGFyZ2V0KSBmaW5hbDsKKyAgICB2b2lk
IHRha2VBbGxNZXNzYWdlc0ZvclBvcnQoY29uc3QgV2ViQ29yZTo6TWVzc2FnZVBvcnRJZGVudGlm
aWVyJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8V2ViQ29yZTo6TWVzc2FnZVdpdGhN
ZXNzYWdlUG9ydHM+JiYsIEZ1bmN0aW9uPHZvaWQoKT4mJik+JiYpIGZpbmFsOworICAgIHZvaWQg
cG9zdE1lc3NhZ2VUb1JlbW90ZShjb25zdCBXZWJDb3JlOjpNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0
cyYsIGNvbnN0IFdlYkNvcmU6Ok1lc3NhZ2VQb3J0SWRlbnRpZmllciYgcmVtb3RlVGFyZ2V0KSBm
aW5hbDsKICAgICB2b2lkIGNoZWNrUHJvY2Vzc0xvY2FsUG9ydEZvckFjdGl2aXR5KGNvbnN0IFdl
YkNvcmU6Ok1lc3NhZ2VQb3J0SWRlbnRpZmllciYsIFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVy
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEhhc0FjdGl2aXR5KT4mJikgZmluYWw7CiAKICAgICAv
LyBUbyBiZSBjYWxsZWQgb25seSBpbiB0aGUgVUkgcHJvY2VzcwotICAgIHZvaWQgY2hlY2tSZW1v
dGVQb3J0Rm9yQWN0aXZpdHkoY29uc3QgV2ViQ29yZTo6TWVzc2FnZVBvcnRJZGVudGlmaWVyJiBy
ZW1vdGVUYXJnZXQsIEZ1bmN0aW9uPHZvaWQoSGFzQWN0aXZpdHkpPiYmIGNhbGxiYWNrKSBmaW5h
bDsKKyAgICB2b2lkIGNoZWNrUmVtb3RlUG9ydEZvckFjdGl2aXR5KGNvbnN0IFdlYkNvcmU6Ok1l
c3NhZ2VQb3J0SWRlbnRpZmllciYgcmVtb3RlVGFyZ2V0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KEhhc0FjdGl2aXR5KT4mJiBjYWxsYmFjaykgZmluYWw7CiAKICAgICBMb2NrIG1fdGFrZUFsbE1l
c3NhZ2VzQ2FsbGJhY2tMb2NrOwotICAgIEhhc2hNYXA8dWludDY0X3QsIEZ1bmN0aW9uPHZvaWQo
VmVjdG9yPFdlYkNvcmU6Ok1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzPiYmLCBGdW5jdGlvbjx2b2lk
KCk+JiYpPj4gbV90YWtlQWxsTWVzc2FnZXNDYWxsYmFja3M7CisgICAgSGFzaE1hcDx1aW50NjRf
dCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8V2ViQ29yZTo6TWVzc2FnZVdpdGhNZXNz
YWdlUG9ydHM+JiYsIEZ1bmN0aW9uPHZvaWQoKT4mJik+PiBtX3Rha2VBbGxNZXNzYWdlc0NhbGxi
YWNrczsKICAgICBMb2NrIG1fcmVtb3RlQWN0aXZpdHlDYWxsYmFja0xvY2s7Ci0gICAgSGFzaE1h
cDx1aW50NjRfdCwgRnVuY3Rpb248dm9pZChIYXNBY3Rpdml0eSk+PiBtX3JlbW90ZUFjdGl2aXR5
Q2FsbGJhY2tzOworICAgIEhhc2hNYXA8dWludDY0X3QsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
SGFzQWN0aXZpdHkpPj4gbV9yZW1vdGVBY3Rpdml0eUNhbGxiYWNrczsKIH07CiAKIH0gLy8gbmFt
ZXNwYWNlIFdlYktpdAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>377690</attachid>
            <date>2019-08-30 02:04:28 -0700</date>
            <delta_ts>2019-09-01 13:21:34 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-201333-20190830110426.patch</filename>
            <type>text/plain</type>
            <size>56600</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ5MjcyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTJhMTNjODU1NDlhZWY5
N2ExMmRhYmQ1MzQ0MjM5MWZmYjY4MDdkMi4uMTgzYmY1ZmRhMDRiNzY3YzJjZWNjZDgzMDM0NjQ1
YTUzNzIzOTIzNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYyIEBACisyMDE5LTA4LTMwICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBJbnRyb2R1Y2UgV29ya2Vy
TWVzc2FnZVBvcnRDaGFubmVsUmVnaXN0cnkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIwMTMzMworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAo
T09QUyEpLgorCisgICAgICAgIFRoaXMgcGF0Y2ggaW50cm9kdWNlcyBhIGRlZGljYXRlZCByZWdp
c3RyeSBmb3Igd29ya2Vycy4KKyAgICAgICAgVGhpcyByZWdpc3RyeSB3aWxsIGhvcCB0byB0aGUg
bWFpbiB0aHJlYWQgYW5kIHVzZSB0aGUKKyAgICAgICAgcmVndWxhciBtYWluIHRocmVhZCByZWdp
c3RyeSB0byBkbyB0aGUgYWN0dWFsIHByb2Nlc3NpbmcuCisKKyAgICAgICAgQ292ZXJlZCBieSBl
eGlzdGluZyB0ZXN0cy4KKworICAgICAgICAqIFNvdXJjZXMudHh0OgorICAgICAgICAqIFdlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnQ6Om1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVy
KToKKyAgICAgICAgKiBkb20vRG9jdW1lbnQuaDoKKyAgICAgICAgKiBkb20vTWVzc2FnZUNoYW5u
ZWwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVzc2FnZUNoYW5uZWw6Ok1lc3NhZ2VDaGFubmVs
KToKKyAgICAgICAgKiBkb20vTWVzc2FnZVBvcnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVz
c2FnZVBvcnQ6OmVudGFuZ2xlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lc3NhZ2VQb3J0Ojpwb3N0
TWVzc2FnZSk6CisgICAgICAgIChXZWJDb3JlOjpNZXNzYWdlUG9ydDo6ZGlzZW50YW5nbGUpOgor
ICAgICAgICAoV2ViQ29yZTo6TWVzc2FnZVBvcnQ6OmNsb3NlKToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lc3NhZ2VQb3J0OjpkaXNwYXRjaE1lc3NhZ2VzKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lc3Nh
Z2VQb3J0OjpoYXNQZW5kaW5nQWN0aXZpdHkgY29uc3QpOgorICAgICAgICAqIGRvbS9tZXNzYWdl
cG9ydHMvTWVzc2FnZVBvcnRDaGFubmVsLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lc3NhZ2VQ
b3J0Q2hhbm5lbDo6dGFrZUFsbE1lc3NhZ2VzRm9yUG9ydCk6CisgICAgICAgIChXZWJDb3JlOjpN
ZXNzYWdlUG9ydENoYW5uZWw6OmNoZWNrUmVtb3RlUG9ydEZvckFjdGl2aXR5KToKKyAgICAgICAg
KiBkb20vbWVzc2FnZXBvcnRzL01lc3NhZ2VQb3J0Q2hhbm5lbC5oOgorICAgICAgICAqIGRvbS9t
ZXNzYWdlcG9ydHMvTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXIuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6TWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXI6OnNpbmdsZXRvbik6CisgICAgICAgIChX
ZWJDb3JlOjpNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlcjo6ZnJvbUNvbnRleHQpOgorICAgICAg
ICAqIGRvbS9tZXNzYWdlcG9ydHMvTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXIuaDoKKyAgICAg
ICAgKiBkb20vbWVzc2FnZXBvcnRzL01lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVySW1wbC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlckltcGw6OnRha2VB
bGxNZXNzYWdlc0ZvclBvcnQpOgorICAgICAgICAoV2ViQ29yZTo6TWVzc2FnZVBvcnRDaGFubmVs
UHJvdmlkZXJJbXBsOjpjaGVja1JlbW90ZVBvcnRGb3JBY3Rpdml0eSk6CisgICAgICAgICogZG9t
L21lc3NhZ2Vwb3J0cy9NZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlckltcGwuaDoKKyAgICAgICAg
KiBkb20vbWVzc2FnZXBvcnRzL01lc3NhZ2VQb3J0Q2hhbm5lbFJlZ2lzdHJ5LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6Ok1lc3NhZ2VQb3J0Q2hhbm5lbFJlZ2lzdHJ5Ojp0YWtlQWxsTWVzc2FnZXNG
b3JQb3J0KToKKyAgICAgICAgKFdlYkNvcmU6Ok1lc3NhZ2VQb3J0Q2hhbm5lbFJlZ2lzdHJ5Ojpj
aGVja1JlbW90ZVBvcnRGb3JBY3Rpdml0eSk6CisgICAgICAgICogZG9tL21lc3NhZ2Vwb3J0cy9N
ZXNzYWdlUG9ydENoYW5uZWxSZWdpc3RyeS5oOgorICAgICAgICAqIGRvbS9tZXNzYWdlcG9ydHMv
V29ya2VyTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXIuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdl
YkNvcmU6Oldvcmtlck1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyOjpXb3JrZXJNZXNzYWdlUG9y
dENoYW5uZWxQcm92aWRlcik6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJNZXNzYWdlUG9ydENo
YW5uZWxQcm92aWRlcjo6fldvcmtlck1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyKToKKyAgICAg
ICAgKFdlYkNvcmU6Oldvcmtlck1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyOjpjcmVhdGVOZXdN
ZXNzYWdlUG9ydENoYW5uZWwpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyTWVzc2FnZVBvcnRD
aGFubmVsUHJvdmlkZXI6OmVudGFuZ2xlTG9jYWxQb3J0SW5UaGlzUHJvY2Vzc1RvUmVtb3RlKToK
KyAgICAgICAgKFdlYkNvcmU6Oldvcmtlck1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyOjptZXNz
YWdlUG9ydERpc2VudGFuZ2xlZCk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJNZXNzYWdlUG9y
dENoYW5uZWxQcm92aWRlcjo6bWVzc2FnZVBvcnRDbG9zZWQpOgorICAgICAgICAoV2ViQ29yZTo6
V29ya2VyTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXI6OnBvc3RNZXNzYWdlVG9SZW1vdGUpOgor
ICAgICAgICAoV2ViQ29yZTo6V29ya2VyTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXI6OnRha2VB
bGxNZXNzYWdlc0ZvclBvcnQpOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyTWVzc2FnZVBvcnRD
aGFubmVsUHJvdmlkZXI6OmNoZWNrUmVtb3RlUG9ydEZvckFjdGl2aXR5KToKKyAgICAgICAgKFdl
YkNvcmU6Oldvcmtlck1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyOjpjaGVja1Byb2Nlc3NMb2Nh
bFBvcnRGb3JBY3Rpdml0eSk6CisgICAgICAgICogZG9tL21lc3NhZ2Vwb3J0cy9Xb3JrZXJNZXNz
YWdlUG9ydENoYW5uZWxQcm92aWRlci5oOiBBZGRlZC4KKyAgICAgICAgKiB3b3JrZXJzL1dvcmtl
ckdsb2JhbFNjb3BlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlckdsb2JhbFNjb3BlOjpt
ZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlcik6CisgICAgICAgICogd29ya2Vycy9Xb3JrZXJHbG9i
YWxTY29wZS5oOgorCiAyMDE5LTA4LTI5ICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNv
bT4KIAogICAgICAgICBTa2lwIGZldGNoIGV2ZW50IGRpc3BhdGNoaW5nIGlmIG5vIGZldGNoIGV2
ZW50IGhhbmRsZXIgaXMgYWRkZWQgYXQgc2NyaXB0IGV2YWx1YXRpb24gdGltZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRl
eCBlYTE3NDQzYzg5MzZkNDg5NGMzYzA5Yjk1ZTE1OGE0OWJlNjE2YzRkLi5mNzJmYTJjY2JhYzE5
MDk0MGVhM2ZkYzc0ZWUzYmNjODQxYjNmOTIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0No
YW5nZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDI1IEBACisy
MDE5LTA4LTMwICBZb3Vlbm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBJ
bnRyb2R1Y2UgV29ya2VyTWVzc2FnZVBvcnRDaGFubmVsUmVnaXN0cnkKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwMTMzMworCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEJ5IGludHJvZHVjaW5nIFdvcmtlck1l
c3NhZ2VQb3J0Q2hhbm5lbFJlZ2lzdHJ5LCB3ZSBhcmUgbWFraW5nCisgICAgICAgIHN1cmUgVUlN
ZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlciBpcyBvbmx5IGNhbGxlZCBmcm9tIHRoZSBtYWluIHRo
cmVhZC4KKyAgICAgICAgVGhpcyB3aWxsIGhlbHAgd2hlbiBtb3ZpbmcgdGhlIHJlZ2lzdHJ5IHRv
IG5ldHdvcmsgcHJvY2Vzcy4KKworICAgICAgICAqIFVJUHJvY2Vzcy9VSU1lc3NhZ2VQb3J0Q2hh
bm5lbFByb3ZpZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6VUlNZXNzYWdlUG9ydENoYW5uZWxQ
cm92aWRlcjo6dGFrZUFsbE1lc3NhZ2VzRm9yUG9ydCk6CisgICAgICAgIChXZWJLaXQ6OlVJTWVz
c2FnZVBvcnRDaGFubmVsUHJvdmlkZXI6OmNoZWNrUmVtb3RlUG9ydEZvckFjdGl2aXR5KToKKyAg
ICAgICAgKiBVSVByb2Nlc3MvVUlNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlci5oOgorICAgICAg
ICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlk
ZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlcjo6
dGFrZUFsbE1lc3NhZ2VzRm9yUG9ydCk6CisgICAgICAgIChXZWJLaXQ6OldlYk1lc3NhZ2VQb3J0
Q2hhbm5lbFByb3ZpZGVyOjpkaWRUYWtlQWxsTWVzc2FnZXNGb3JQb3J0KToKKyAgICAgICAgKFdl
YktpdDo6V2ViTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXI6OmRpZENoZWNrUmVtb3RlUG9ydEZv
ckFjdGl2aXR5KToKKyAgICAgICAgKFdlYktpdDo6V2ViTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlk
ZXI6OmNoZWNrUmVtb3RlUG9ydEZvckFjdGl2aXR5KToKKyAgICAgICAgKiBXZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYk1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyLmg6CisKIDIwMTktMDgt
MjkgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIFNraXAgZmV0
Y2ggZXZlbnQgZGlzcGF0Y2hpbmcgaWYgbm8gZmV0Y2ggZXZlbnQgaGFuZGxlciBpcyBhZGRlZCBh
dCBzY3JpcHQgZXZhbHVhdGlvbiB0aW1lCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Tb3Vy
Y2VzLnR4dCBiL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CmluZGV4IGUzYWViMDhjZDYwN2E1
ZTQ4MmVjNDM3OWRiZTI4ODM3ZDM2NjJmNDEuLjE5MTQ3MGMwYzA3MjE1MmMxNTdjY2NkNGE3Yjk2
ZDQzOGMyZGE3MzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CisrKyBi
L1NvdXJjZS9XZWJDb3JlL1NvdXJjZXMudHh0CkBAIC05NzQsNiArOTc0LDcgQEAgZG9tL21lc3Nh
Z2Vwb3J0cy9NZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlci5jcHAKIGRvbS9tZXNzYWdlcG9ydHMv
TWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXJJbXBsLmNwcAogZG9tL21lc3NhZ2Vwb3J0cy9NZXNz
YWdlUG9ydENoYW5uZWxSZWdpc3RyeS5jcHAKIGRvbS9tZXNzYWdlcG9ydHMvTWVzc2FnZVdpdGhN
ZXNzYWdlUG9ydHMuY3BwCitkb20vbWVzc2FnZXBvcnRzL1dvcmtlck1lc3NhZ2VQb3J0Q2hhbm5l
bFByb3ZpZGVyLmNwcAogCiBkb21qaXQvRE9NSklUSGVscGVycy5jcHAKIGRvbWppdC9KU0RvY3Vt
ZW50RE9NSklULmNwcApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJv
amVjdC5wYnhwcm9qCmluZGV4IDM3YmUyMTI0MjM0MzE2MGU5YmRjOTZhNGNlYzhiZjZhMzdkMGMx
OTkuLjZkODU2OWU4YmU5NGM1N2E2ZmM3MmI0ZGQ2YjFlZWE4ZTA3M2JjNGMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagorKysgYi9T
b3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTcxNjYs
NiArNzE2Niw4IEBACiAJCTQxMTAzQUE5MUUzOTc5MEEwMDc2OUYxNCAvKiBSZWFsdGltZUluY29t
aW5nQXVkaW9Tb3VyY2VDb2NvYS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBS
ZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2VDb2NvYS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQk0MTEwM0FBQTFFMzk3OTBBMDA3NjlGMDMgLyogUmVhbHRpbWVJbmNvbWluZ0F1ZGlv
U291cmNlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFJlYWx0aW1l
SW5jb21pbmdBdWRpb1NvdXJjZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQx
MTAzQUFBMUUzOTc5MEEwMDc2OUYxNCAvKiBSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2VDb2Nv
YS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBSZWFsdGltZUluY29t
aW5nQXVkaW9Tb3VyY2VDb2NvYS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTQx
MTE0QTdBMjMxN0IzOUUwMEI1NjAwNyAvKiBXb3JrZXJNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRl
ci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jLmg7IHBhdGggPSBXb3JrZXJNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlci5oOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk0MTExNEE3QzIzMTdCMzlFMDBCNTYwMDcgLyog
V29ya2VyTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0g
V29ya2VyTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXIuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQk0MTEyQjUzRjFGOUY5QzlCMDBFNjc4NzUgLyogU2VydmljZVdvcmtlclRocmVh
ZFByb3h5LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNlcnZpY2VXb3JrZXJU
aHJlYWRQcm94eS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTEyQjU0MTFGOUY5
QzlDMDBFNjc4NzUgLyogU2VydmljZVdvcmtlclRocmVhZFByb3h5LmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTQxMTg5RUY3MUFEODIzMjgwMEI5MEEwRCAvKiBS
ZWFkYWJsZVN0cmVhbURlZmF1bHRDb250cm9sbGVyLmlkbCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQ7IHBhdGgg
PSBSZWFkYWJsZVN0cmVhbURlZmF1bHRDb250cm9sbGVyLmlkbDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKQEAgLTE4ODQ1LDYgKzE4ODQ3LDggQEAKIAkJCQk1MUVDQzNGMTIwMDU4N0I1MDA0
ODNFQUUgLyogTWVzc2FnZVBvcnRDaGFubmVsUmVnaXN0cnkuaCAqLywKIAkJCQk1MUE3NDhFMTIw
MDVEMEUwMDA3NUJBNjggLyogTWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMuY3BwICovLAogCQkJCTUx
QTc0OEUwMjAwNUQwRTAwMDc1QkE2OCAvKiBNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cy5oICovLAor
CQkJCTQxMTE0QTdDMjMxN0IzOUUwMEI1NjAwNyAvKiBXb3JrZXJNZXNzYWdlUG9ydENoYW5uZWxQ
cm92aWRlci5jcHAgKi8sCisJCQkJNDExMTRBN0EyMzE3QjM5RTAwQjU2MDA3IC8qIFdvcmtlck1l
c3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyLmggKi8sCiAJCQkpOwogCQkJcGF0aCA9IG1lc3NhZ2Vw
b3J0czsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9kb20vRG9jdW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcApp
bmRleCAxNDlhZTI3MTYyZjMyMzU1NzJlZTMwYjQ3MDZjMmE1M2E1MTc3MjI0Li44NzM4M2QzY2U5
YTIzYjY4MjkwNDhhZjBmODNmNWUyZGRjZGEyZDczIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vRG9jdW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAK
QEAgLTgyNzMsNCArODI3Myw5IEBAIHZvaWQgRG9jdW1lbnQ6OnNldEFwcGxlUGF5SXNBY3RpdmUo
KQogCiAjZW5kaWYKIAorTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXImIERvY3VtZW50OjptZXNz
YWdlUG9ydENoYW5uZWxQcm92aWRlcigpCit7CisgICAgcmV0dXJuIE1lc3NhZ2VQb3J0Q2hhbm5l
bFByb3ZpZGVyOjpzaW5nbGV0b24oKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9k
b20vRG9jdW1lbnQuaAppbmRleCAxNjEyZTQyMGVjYTExYzRkYWQxMzVjZDkxMGZlNDU3NmVmZTcy
YWVkLi44OWM1YzZkMmYyMjA5Nzc1MGY2Y2M4YzkxMzk0NDdkMmRjZWE0OGE2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9kb20vRG9jdW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
RG9jdW1lbnQuaApAQCAtMTU3LDYgKzE1Nyw3IEBAIGNsYXNzIE1lZGlhUGxheWJhY2tUYXJnZXQ7
CiBjbGFzcyBNZWRpYVBsYXliYWNrVGFyZ2V0Q2xpZW50OwogY2xhc3MgTWVkaWFRdWVyeUxpc3Q7
CiBjbGFzcyBNZWRpYVF1ZXJ5TWF0Y2hlcjsKK2NsYXNzIE1lc3NhZ2VQb3J0Q2hhbm5lbFByb3Zp
ZGVyOwogY2xhc3MgTW91c2VFdmVudFdpdGhIaXRUZXN0UmVzdWx0czsKIGNsYXNzIE5vZGVGaWx0
ZXI7CiBjbGFzcyBOb2RlSXRlcmF0b3I7CkBAIC0xNTI5LDYgKzE1MzAsOCBAQCBwdWJsaWM6CiAg
ICAgYm9vbCBpbkhpdFRlc3RpbmcoKSBjb25zdCB7IHJldHVybiBtX2luSGl0VGVzdGluZzsgfQog
I2VuZGlmCiAKKyAgICBNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlciYgbWVzc2FnZVBvcnRDaGFu
bmVsUHJvdmlkZXIoKTsKKwogcHJvdGVjdGVkOgogICAgIGVudW0gQ29uc3RydWN0aW9uRmxhZ3Mg
eyBTeW50aGVzaXplZCA9IDEsIE5vblJlbmRlcmVkUGxhY2Vob2xkZXIgPSAxIDw8IDEgfTsKICAg
ICBEb2N1bWVudChQQUw6OlNlc3Npb25JRCwgRnJhbWUqLCBjb25zdCBVUkwmLCB1bnNpZ25lZCA9
IERlZmF1bHREb2N1bWVudENsYXNzLCB1bnNpZ25lZCBjb25zdHJ1Y3Rpb25GbGFncyA9IDApOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VDaGFubmVsLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9NZXNzYWdlQ2hhbm5lbC5jcHAKaW5kZXggMTc0ZjVhMzdkZThjOTdiMGEx
YmZiNWYyZThkMGFmMGQ1ZDVhMjVjOS4uNzgxNzYzYTk5OTBiMzFkZWUwMGM0ZDNmMTBkODE4NTAy
OWMwYzcwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VDaGFubmVsLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZUNoYW5uZWwuY3BwCkBAIC00OSw3ICs0
OSw3IEBAIE1lc3NhZ2VDaGFubmVsOjpNZXNzYWdlQ2hhbm5lbChTY3JpcHRFeGVjdXRpb25Db250
ZXh0JiBjb250ZXh0KQogICAgIGlmICghY29udGV4dC5hY3RpdmVET01PYmplY3RzQXJlU3RvcHBl
ZCgpKSB7CiAgICAgICAgIEFTU0VSVCghbV9wb3J0MS0+Y2xvc2VkKCkpOwogICAgICAgICBBU1NF
UlQoIW1fcG9ydDItPmNsb3NlZCgpKTsKLSAgICAgICAgTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlk
ZXI6OnNpbmdsZXRvbigpLmNyZWF0ZU5ld01lc3NhZ2VQb3J0Q2hhbm5lbChpZDEsIGlkMik7Cisg
ICAgICAgIE1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyOjpmcm9tQ29udGV4dChjb250ZXh0KS5j
cmVhdGVOZXdNZXNzYWdlUG9ydENoYW5uZWwoaWQxLCBpZDIpOwogICAgIH0gZWxzZSB7CiAgICAg
ICAgIEFTU0VSVChtX3BvcnQxLT5jbG9zZWQoKSk7CiAgICAgICAgIEFTU0VSVChtX3BvcnQyLT5j
bG9zZWQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZVBvcnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvZG9tL01lc3NhZ2VQb3J0LmNwcAppbmRleCA1MTQzMDRjOTA2NDE2
N2I5NGIxMDExY2U4YzgxOTRkNzRjMDE3N2E3Li5kMWVmZWEyMTJiZDMwMzE0ZjhiOTc1NDVhZDI0
NGU3MjI4MjU4YWMxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZVBvcnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlUG9ydC5jcHAKQEAgLTM3LDYgKzM3
LDcgQEAKICNpbmNsdWRlICJXb3JrZXJUaHJlYWQuaCIKICNpbmNsdWRlIDx3dGYvQ29tcGxldGlv
bkhhbmRsZXIuaD4KICNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgorI2luY2x1ZGUg
PHd0Zi9TY29wZS5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTEyNCw3ICsxMjUsNyBA
QCBNZXNzYWdlUG9ydDo6fk1lc3NhZ2VQb3J0KCkKIAogdm9pZCBNZXNzYWdlUG9ydDo6ZW50YW5n
bGUoKQogewotICAgIE1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyOjpzaW5nbGV0b24oKS5lbnRh
bmdsZUxvY2FsUG9ydEluVGhpc1Byb2Nlc3NUb1JlbW90ZShtX2lkZW50aWZpZXIsIG1fcmVtb3Rl
SWRlbnRpZmllcik7CisgICAgTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXI6OmZyb21Db250ZXh0
KCptX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQpLmVudGFuZ2xlTG9jYWxQb3J0SW5UaGlzUHJvY2Vz
c1RvUmVtb3RlKG1faWRlbnRpZmllciwgbV9yZW1vdGVJZGVudGlmaWVyKTsKIH0KIAogRXhjZXB0
aW9uT3I8dm9pZD4gTWVzc2FnZVBvcnQ6OnBvc3RNZXNzYWdlKEpTQzo6RXhlY1N0YXRlJiBzdGF0
ZSwgSlNDOjpKU1ZhbHVlIG1lc3NhZ2VWYWx1ZSwgVmVjdG9yPEpTQzo6U3Ryb25nPEpTQzo6SlNP
YmplY3Q+PiYmIHRyYW5zZmVyKQpAQCAtMTYwLDcgKzE2MSw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+
IE1lc3NhZ2VQb3J0Ojpwb3N0TWVzc2FnZShKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIEpTQzo6SlNW
YWx1ZSBtCiAKICAgICBMT0coTWVzc2FnZVBvcnRzLCAiQWN0dWFsbHkgcG9zdGluZyBtZXNzYWdl
IHRvIHBvcnQgJXMgKHRvIGJlIHJlY2VpdmVkIGJ5IHBvcnQgJXMpIiwgbV9pZGVudGlmaWVyLmxv
Z1N0cmluZygpLnV0ZjgoKS5kYXRhKCksIG1fcmVtb3RlSWRlbnRpZmllci5sb2dTdHJpbmcoKS51
dGY4KCkuZGF0YSgpKTsKIAotICAgIE1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyOjpzaW5nbGV0
b24oKS5wb3N0TWVzc2FnZVRvUmVtb3RlKFdURk1vdmUobWVzc2FnZSksIG1fcmVtb3RlSWRlbnRp
Zmllcik7CisgICAgTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXI6OmZyb21Db250ZXh0KCptX3Nj
cmlwdEV4ZWN1dGlvbkNvbnRleHQpLnBvc3RNZXNzYWdlVG9SZW1vdGUobWVzc2FnZSwgbV9yZW1v
dGVJZGVudGlmaWVyKTsKICAgICByZXR1cm4geyB9OwogfQogCkBAIC0xNzEsMTAgKzE3Miw5IEBA
IHZvaWQgTWVzc2FnZVBvcnQ6OmRpc2VudGFuZ2xlKCkKIAogICAgIHJlZ2lzdGVyTG9jYWxBY3Rp
dml0eSgpOwogCi0gICAgTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXI6OnNpbmdsZXRvbigpLm1l
c3NhZ2VQb3J0RGlzZW50YW5nbGVkKG1faWRlbnRpZmllcik7CisgICAgTWVzc2FnZVBvcnRDaGFu
bmVsUHJvdmlkZXI6OmZyb21Db250ZXh0KCptX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQpLm1lc3Nh
Z2VQb3J0RGlzZW50YW5nbGVkKG1faWRlbnRpZmllcik7CiAKICAgICAvLyBXZSBjYW4ndCByZWNl
aXZlIGFueSBtZXNzYWdlcyBvciBnZW5lcmF0ZSBhbnkgZXZlbnRzIGFmdGVyIHRoaXMsIHNvIHJl
bW92ZSBvdXJzZWx2ZXMgZnJvbSB0aGUgbGlzdCBvZiBhY3RpdmUgcG9ydHMuCi0gICAgQVNTRVJU
KG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCk7CiAgICAgbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0
LT5kZXN0cm95ZWRNZXNzYWdlUG9ydCgqdGhpcyk7CiAgICAgbV9zY3JpcHRFeGVjdXRpb25Db250
ZXh0LT53aWxsRGVzdHJveUFjdGl2ZURPTU9iamVjdCgqdGhpcyk7CiAgICAgbV9zY3JpcHRFeGVj
dXRpb25Db250ZXh0LT53aWxsRGVzdHJveURlc3RydWN0aW9uT2JzZXJ2ZXIoKnRoaXMpOwpAQCAt
MjI1LDcgKzIyNSw3IEBAIHZvaWQgTWVzc2FnZVBvcnQ6OmNsb3NlKCkKICAgICAgICAgcmV0dXJu
OwogICAgIG1fY2xvc2VkID0gdHJ1ZTsKIAotICAgIE1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVy
OjpzaW5nbGV0b24oKS5tZXNzYWdlUG9ydENsb3NlZChtX2lkZW50aWZpZXIpOworICAgIE1lc3Nh
Z2VQb3J0Q2hhbm5lbFByb3ZpZGVyOjpmcm9tQ29udGV4dCgqbV9zY3JpcHRFeGVjdXRpb25Db250
ZXh0KS5tZXNzYWdlUG9ydENsb3NlZChtX2lkZW50aWZpZXIpOwogICAgIHJlbW92ZUFsbEV2ZW50
TGlzdGVuZXJzKCk7CiB9CiAKQEAgLTI0Niw1MCArMjQ2LDM0IEBAIHZvaWQgTWVzc2FnZVBvcnQ6
OmRpc3BhdGNoTWVzc2FnZXMoKQogICAgIGlmICghbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0IHx8
IG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+YWN0aXZlRE9NT2JqZWN0c0FyZVN1c3BlbmRlZCgp
IHx8ICFpc0VudGFuZ2xlZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBSZWZQdHI8V29ya2Vy
VGhyZWFkPiB3b3JrZXJUaHJlYWQ7Ci0gICAgaWYgKGlzPFdvcmtlckdsb2JhbFNjb3BlPigqbV9z
Y3JpcHRFeGVjdXRpb25Db250ZXh0KSkKLSAgICAgICAgd29ya2VyVGhyZWFkID0gJmRvd25jYXN0
PFdvcmtlckdsb2JhbFNjb3BlPigqbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KS50aHJlYWQoKTsK
LQotICAgIGF1dG8gbWVzc2FnZXNUYWtlbkhhbmRsZXIgPSBbdGhpcywgd2Vha1RoaXMgPSBtYWtl
V2Vha1B0cih0aGlzKSwgd29ya2VyVGhyZWFkID0gV1RGTW92ZSh3b3JrZXJUaHJlYWQpXShWZWN0
b3I8TWVzc2FnZVdpdGhNZXNzYWdlUG9ydHM+JiYgbWVzc2FnZXMsIEZ1bmN0aW9uPHZvaWQoKT4m
JiBjb21wbGV0aW9uQ2FsbGJhY2spIG11dGFibGUgewotICAgICAgICBBU1NFUlQoaXNNYWluVGhy
ZWFkKCkpOwotICAgICAgICBhdXRvIGlubmVySGFuZGxlciA9IFt0aGlzLCB3ZWFrVGhpcyA9IFdU
Rk1vdmUod2Vha1RoaXMpXShhdXRvJiYgbWVzc2FnZXMpIHsKLSAgICAgICAgICAgIGlmICghd2Vh
a1RoaXMpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotCi0gICAgICAgICAgICBMT0coTWVzc2Fn
ZVBvcnRzLCAiTWVzc2FnZVBvcnQgJXMgKCVwKSBkaXNwYXRjaGluZyAlenUgbWVzc2FnZXMiLCBt
X2lkZW50aWZpZXIubG9nU3RyaW5nKCkudXRmOCgpLmRhdGEoKSwgdGhpcywgbWVzc2FnZXMuc2l6
ZSgpKTsKKyAgICBhdXRvIG1lc3NhZ2VzVGFrZW5IYW5kbGVyID0gW3RoaXMsIHdlYWtUaGlzID0g
bWFrZVdlYWtQdHIodGhpcyldKFZlY3RvcjxNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cz4mJiBtZXNz
YWdlcywgRnVuY3Rpb248dm9pZCgpPiYmIGNvbXBsZXRpb25DYWxsYmFjaykgbXV0YWJsZSB7Cisg
ICAgICAgIGF1dG8gc2NvcGVFeGl0ID0gbWFrZVNjb3BlRXhpdChbJmNvbXBsZXRpb25DYWxsYmFj
a10geworICAgICAgICAgICAgY29tcGxldGlvbkNhbGxiYWNrKCk7CisgICAgICAgIH0pOworICAg
ICAgICBpZiAoIXdlYWtUaGlzKQorICAgICAgICAgICAgcmV0dXJuOwogCi0gICAgICAgICAgICBp
ZiAoIW1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkKLSAgICAgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgIExPRyhNZXNzYWdlUG9ydHMsICJNZXNzYWdlUG9ydCAlcyAoJXApIGRpc3BhdGNoaW5n
ICV6dSBtZXNzYWdlcyIsIG1faWRlbnRpZmllci5sb2dTdHJpbmcoKS51dGY4KCkuZGF0YSgpLCB0
aGlzLCBtZXNzYWdlcy5zaXplKCkpOwogCi0gICAgICAgICAgICBpZiAoIW1lc3NhZ2VzLmlzRW1w
dHkoKSkKLSAgICAgICAgICAgICAgICByZWdpc3RlckxvY2FsQWN0aXZpdHkoKTsKKyAgICAgICAg
aWYgKCFtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQpCisgICAgICAgICAgICByZXR1cm47CiAKLSAg
ICAgICAgICAgIEFTU0VSVChtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmlzQ29udGV4dFRocmVh
ZCgpKTsKKyAgICAgICAgaWYgKCFtZXNzYWdlcy5pc0VtcHR5KCkpCisgICAgICAgICAgICByZWdp
c3RlckxvY2FsQWN0aXZpdHkoKTsKIAotICAgICAgICAgICAgYm9vbCBjb250ZXh0SXNXb3JrZXIg
PSBpczxXb3JrZXJHbG9iYWxTY29wZT4oKm1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCk7Ci0gICAg
ICAgICAgICBmb3IgKGF1dG8mIG1lc3NhZ2UgOiBtZXNzYWdlcykgewotICAgICAgICAgICAgICAg
IC8vIGNsb3NlKCkgaW4gV29ya2VyIG9ubWVzc2FnZSBoYW5kbGVyIHNob3VsZCBwcmV2ZW50IG5l
eHQgbWVzc2FnZSBmcm9tIGRpc3BhdGNoaW5nLgotICAgICAgICAgICAgICAgIGlmIChjb250ZXh0
SXNXb3JrZXIgJiYgZG93bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+KCptX3NjcmlwdEV4ZWN1dGlv
bkNvbnRleHQpLmlzQ2xvc2luZygpKQotICAgICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAg
ICAgICAgICAgICAgYXV0byBwb3J0cyA9IE1lc3NhZ2VQb3J0OjplbnRhbmdsZVBvcnRzKCptX3Nj
cmlwdEV4ZWN1dGlvbkNvbnRleHQsIFdURk1vdmUobWVzc2FnZS50cmFuc2ZlcnJlZFBvcnRzKSk7
Ci0gICAgICAgICAgICAgICAgZGlzcGF0Y2hFdmVudChNZXNzYWdlRXZlbnQ6OmNyZWF0ZShXVEZN
b3ZlKHBvcnRzKSwgbWVzc2FnZS5tZXNzYWdlLnJlbGVhc2VOb25OdWxsKCkpKTsKLSAgICAgICAg
ICAgIH0KLSAgICAgICAgfTsKKyAgICAgICAgQVNTRVJUKG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4
dC0+aXNDb250ZXh0VGhyZWFkKCkpOwogCi0gICAgICAgIGlmICghd29ya2VyVGhyZWFkKSB7Ci0g
ICAgICAgICAgICBpbm5lckhhbmRsZXIoV1RGTW92ZShtZXNzYWdlcykpOwotICAgICAgICAgICAg
Y29tcGxldGlvbkNhbGxiYWNrKCk7Ci0gICAgICAgICAgICByZXR1cm47CisgICAgICAgIGJvb2wg
Y29udGV4dElzV29ya2VyID0gaXM8V29ya2VyR2xvYmFsU2NvcGU+KCptX3NjcmlwdEV4ZWN1dGlv
bkNvbnRleHQpOworICAgICAgICBmb3IgKGF1dG8mIG1lc3NhZ2UgOiBtZXNzYWdlcykgeworICAg
ICAgICAgICAgLy8gY2xvc2UoKSBpbiBXb3JrZXIgb25tZXNzYWdlIGhhbmRsZXIgc2hvdWxkIHBy
ZXZlbnQgbmV4dCBtZXNzYWdlIGZyb20gZGlzcGF0Y2hpbmcuCisgICAgICAgICAgICBpZiAoY29u
dGV4dElzV29ya2VyICYmIGRvd25jYXN0PFdvcmtlckdsb2JhbFNjb3BlPigqbV9zY3JpcHRFeGVj
dXRpb25Db250ZXh0KS5pc0Nsb3NpbmcoKSkKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAg
ICAgICAgICBhdXRvIHBvcnRzID0gTWVzc2FnZVBvcnQ6OmVudGFuZ2xlUG9ydHMoKm1fc2NyaXB0
RXhlY3V0aW9uQ29udGV4dCwgV1RGTW92ZShtZXNzYWdlLnRyYW5zZmVycmVkUG9ydHMpKTsKKyAg
ICAgICAgICAgIGRpc3BhdGNoRXZlbnQoTWVzc2FnZUV2ZW50OjpjcmVhdGUoV1RGTW92ZShwb3J0
cyksIG1lc3NhZ2UubWVzc2FnZS5yZWxlYXNlTm9uTnVsbCgpKSk7CiAgICAgICAgIH0KLSAgICAg
ICAgd29ya2VyVGhyZWFkLT5ydW5Mb29wKCkucG9zdFRhc2tGb3JNb2RlKFtpbm5lckhhbmRsZXIg
PSBXVEZNb3ZlKGlubmVySGFuZGxlciksIG1lc3NhZ2VzID0gV1RGTW92ZShtZXNzYWdlcyksIGNv
bXBsZXRpb25DYWxsYmFjayA9IFdURk1vdmUoY29tcGxldGlvbkNhbGxiYWNrKV0oYXV0byYpIG11
dGFibGUgewotICAgICAgICAgICAgaW5uZXJIYW5kbGVyKFdURk1vdmUobWVzc2FnZXMpKTsKLSAg
ICAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoW2NvbXBsZXRpb25DYWxsYmFjayA9IFdURk1vdmUo
Y29tcGxldGlvbkNhbGxiYWNrKV0gewotICAgICAgICAgICAgICAgIGNvbXBsZXRpb25DYWxsYmFj
aygpOwotICAgICAgICAgICAgfSk7Ci0gICAgICAgIH0sIFdvcmtlclJ1bkxvb3A6OmRlZmF1bHRN
b2RlKCkpOwogICAgIH07CiAKLSAgICBNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlcjo6c2luZ2xl
dG9uKCkudGFrZUFsbE1lc3NhZ2VzRm9yUG9ydChtX2lkZW50aWZpZXIsIFdURk1vdmUobWVzc2Fn
ZXNUYWtlbkhhbmRsZXIpKTsKKyAgICBNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlcjo6ZnJvbUNv
bnRleHQoKm1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkudGFrZUFsbE1lc3NhZ2VzRm9yUG9ydCht
X2lkZW50aWZpZXIsIFdURk1vdmUobWVzc2FnZXNUYWtlbkhhbmRsZXIpKTsKIH0KIAogdm9pZCBN
ZXNzYWdlUG9ydDo6dXBkYXRlQWN0aXZpdHkoTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXI6Okhh
c0FjdGl2aXR5IGhhc0FjdGl2aXR5KQpAQCAtMzI4LDE5ICszMTIsMTkgQEAgYm9vbCBNZXNzYWdl
UG9ydDo6aGFzUGVuZGluZ0FjdGl2aXR5KCkgY29uc3QKICAgICAgICAgaWYgKGlzPFdvcmtlckds
b2JhbFNjb3BlPigqbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KSkKICAgICAgICAgICAgIHdvcmtl
clRocmVhZCA9ICZkb3duY2FzdDxXb3JrZXJHbG9iYWxTY29wZT4oKm1fc2NyaXB0RXhlY3V0aW9u
Q29udGV4dCkudGhyZWFkKCk7CiAKLSAgICAgICAgTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXI6
OnNpbmdsZXRvbigpLmNoZWNrUmVtb3RlUG9ydEZvckFjdGl2aXR5KG1fcmVtb3RlSWRlbnRpZmll
ciwgW3dlYWtUaGlzID0gbWFrZVdlYWtQdHIoY29uc3RfY2FzdDxNZXNzYWdlUG9ydCo+KHRoaXMp
KSwgd29ya2VyVGhyZWFkID0gV1RGTW92ZSh3b3JrZXJUaHJlYWQpXShNZXNzYWdlUG9ydENoYW5u
ZWxQcm92aWRlcjo6SGFzQWN0aXZpdHkgaGFzQWN0aXZpdHkpIG11dGFibGUgewotCi0gICAgICAg
ICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotICAgICAgICAgICAgaWYgKCF3b3JrZXJUaHJl
YWQpIHsKLSAgICAgICAgICAgICAgICBpZiAod2Vha1RoaXMpCi0gICAgICAgICAgICAgICAgICAg
IHdlYWtUaGlzLT51cGRhdGVBY3Rpdml0eShoYXNBY3Rpdml0eSk7Ci0gICAgICAgICAgICAgICAg
cmV0dXJuOwotICAgICAgICAgICAgfQorICAgICAgICBjYWxsT25NYWluVGhyZWFkKFtyZW1vdGVJ
ZGVudGlmaWVyID0gbV9yZW1vdGVJZGVudGlmaWVyLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKGNv
bnN0X2Nhc3Q8TWVzc2FnZVBvcnQqPih0aGlzKSksIHdvcmtlclRocmVhZCA9IFdURk1vdmUod29y
a2VyVGhyZWFkKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgICAgIE1lc3NhZ2VQb3J0Q2hhbm5lbFBy
b3ZpZGVyOjpzaW5nbGV0b24oKS5jaGVja1JlbW90ZVBvcnRGb3JBY3Rpdml0eShyZW1vdGVJZGVu
dGlmaWVyLCBbd2Vha1RoaXMgPSBXVEZNb3ZlKHdlYWtUaGlzKSwgd29ya2VyVGhyZWFkID0gV1RG
TW92ZSh3b3JrZXJUaHJlYWQpXShhdXRvIGhhc0FjdGl2aXR5KSBtdXRhYmxlIHsKKyAgICAgICAg
ICAgICAgICBpZiAoIXdvcmtlclRocmVhZCkgeworICAgICAgICAgICAgICAgICAgICBpZiAod2Vh
a1RoaXMpCisgICAgICAgICAgICAgICAgICAgICAgICB3ZWFrVGhpcy0+dXBkYXRlQWN0aXZpdHko
aGFzQWN0aXZpdHkpOworICAgICAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICAg
ICAgfQogCi0gICAgICAgICAgICB3b3JrZXJUaHJlYWQtPnJ1bkxvb3AoKS5wb3N0VGFza0Zvck1v
ZGUoW3dlYWtUaGlzID0gV1RGTW92ZSh3ZWFrVGhpcyksIGhhc0FjdGl2aXR5XShhdXRvJikgbXV0
YWJsZSB7Ci0gICAgICAgICAgICAgICAgaWYgKHdlYWtUaGlzKQotICAgICAgICAgICAgICAgICAg
ICB3ZWFrVGhpcy0+dXBkYXRlQWN0aXZpdHkoaGFzQWN0aXZpdHkpOwotICAgICAgICAgICAgfSwg
V29ya2VyUnVuTG9vcDo6ZGVmYXVsdE1vZGUoKSk7CisgICAgICAgICAgICAgICAgd29ya2VyVGhy
ZWFkLT5ydW5Mb29wKCkucG9zdFRhc2tGb3JNb2RlKFt3ZWFrVGhpcyA9IFdURk1vdmUod2Vha1Ro
aXMpLCBoYXNBY3Rpdml0eV0oYXV0byYpIG11dGFibGUgeworICAgICAgICAgICAgICAgICAgICBp
ZiAod2Vha1RoaXMpCisgICAgICAgICAgICAgICAgICAgICAgICB3ZWFrVGhpcy0+dXBkYXRlQWN0
aXZpdHkoaGFzQWN0aXZpdHkpOworICAgICAgICAgICAgICAgIH0sIFdvcmtlclJ1bkxvb3A6OmRl
ZmF1bHRNb2RlKCkpOworICAgICAgICAgICAgfSk7CiAgICAgICAgIH0pOwogICAgICAgICBtX2lz
QXNraW5nUmVtb3RlQWJvdXRHQyA9IHRydWU7CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL21lc3NhZ2Vwb3J0cy9NZXNzYWdlUG9ydENoYW5uZWwuY3BwIGIvU291cmNlL1dl
YkNvcmUvZG9tL21lc3NhZ2Vwb3J0cy9NZXNzYWdlUG9ydENoYW5uZWwuY3BwCmluZGV4IGE1YjYw
ZDk4YmI0YTAwZThhODI3ZTcxZDNkNGY0OWFhOGE0ZGU0NDkuLjA5MTVlYWQ5ZmZiOGMxNmRjOGI3
YjA5ZDJlMjUwNzgwNGQ4YmQ0YzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9tZXNz
YWdlcG9ydHMvTWVzc2FnZVBvcnRDaGFubmVsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
bWVzc2FnZXBvcnRzL01lc3NhZ2VQb3J0Q2hhbm5lbC5jcHAKQEAgLTE0Nyw3ICsxNDcsNyBAQCBi
b29sIE1lc3NhZ2VQb3J0Q2hhbm5lbDo6cG9zdE1lc3NhZ2VUb1JlbW90ZShNZXNzYWdlV2l0aE1l
c3NhZ2VQb3J0cyYmIG1lc3NhZ2UsCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi12b2lkIE1lc3Nh
Z2VQb3J0Q2hhbm5lbDo6dGFrZUFsbE1lc3NhZ2VzRm9yUG9ydChjb25zdCBNZXNzYWdlUG9ydElk
ZW50aWZpZXImIHBvcnQsIEZ1bmN0aW9uPHZvaWQoVmVjdG9yPE1lc3NhZ2VXaXRoTWVzc2FnZVBv
cnRzPiYmLCBGdW5jdGlvbjx2b2lkKCk+JiYpPiYmIGNhbGxiYWNrKQordm9pZCBNZXNzYWdlUG9y
dENoYW5uZWw6OnRha2VBbGxNZXNzYWdlc0ZvclBvcnQoY29uc3QgTWVzc2FnZVBvcnRJZGVudGlm
aWVyJiBwb3J0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxNZXNzYWdlV2l0aE1lc3Nh
Z2VQb3J0cz4mJiwgRnVuY3Rpb248dm9pZCgpPiYmKT4mJiBjYWxsYmFjaykKIHsKICAgICBBU1NF
UlQoaXNNYWluVGhyZWFkKCkpOwogCkBAIC0xODIsNyArMTgyLDcgQEAgdm9pZCBNZXNzYWdlUG9y
dENoYW5uZWw6OnRha2VBbGxNZXNzYWdlc0ZvclBvcnQoY29uc3QgTWVzc2FnZVBvcnRJZGVudGlm
aWVyJiBwb3IKICAgICB9KTsKIH0KIAotdm9pZCBNZXNzYWdlUG9ydENoYW5uZWw6OmNoZWNrUmVt
b3RlUG9ydEZvckFjdGl2aXR5KGNvbnN0IE1lc3NhZ2VQb3J0SWRlbnRpZmllciYgcmVtb3RlUG9y
dCwgRnVuY3Rpb248dm9pZChNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlcjo6SGFzQWN0aXZpdHkp
PiYmIGNhbGxiYWNrKQordm9pZCBNZXNzYWdlUG9ydENoYW5uZWw6OmNoZWNrUmVtb3RlUG9ydEZv
ckFjdGl2aXR5KGNvbnN0IE1lc3NhZ2VQb3J0SWRlbnRpZmllciYgcmVtb3RlUG9ydCwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlcjo6SGFzQWN0aXZpdHkp
PiYmIGNhbGxiYWNrKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgQVNTRVJU
KHJlbW90ZVBvcnQgPT0gbV9wb3J0c1swXSB8fCByZW1vdGVQb3J0ID09IG1fcG9ydHNbMV0pOwpA
QCAtMjA3LDcgKzIwNyw3IEBAIHZvaWQgTWVzc2FnZVBvcnRDaGFubmVsOjpjaGVja1JlbW90ZVBv
cnRGb3JBY3Rpdml0eShjb25zdCBNZXNzYWdlUG9ydElkZW50aWZpZXImCiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKLSAgICBhdXRvIG91dGVyQ2FsbGJhY2sgPSBGdW5jdGlvbjx2b2lkKE1lc3Nh
Z2VQb3J0Q2hhbm5lbFByb3ZpZGVyOjpIYXNBY3Rpdml0eSk+IHsgW3RoaXMsIHByb3RlY3RlZFRo
aXMgPSBtYWtlUmVmKCp0aGlzKSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0gKE1lc3Nh
Z2VQb3J0Q2hhbm5lbFByb3ZpZGVyOjpIYXNBY3Rpdml0eSBoYXNBY3Rpdml0eSkgbXV0YWJsZSB7
CisgICAgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlcjo6
SGFzQWN0aXZpdHkpPiBvdXRlckNhbGxiYWNrID0gW3RoaXMsIHByb3RlY3RlZFRoaXMgPSBtYWtl
UmVmKCp0aGlzKSwgY2FsbGJhY2sgPSBXVEZNb3ZlKGNhbGxiYWNrKV0oYXV0byBoYXNBY3Rpdml0
eSkgbXV0YWJsZSB7CiAgICAgICAgIGlmIChoYXNBY3Rpdml0eSA9PSBNZXNzYWdlUG9ydENoYW5u
ZWxQcm92aWRlcjo6SGFzQWN0aXZpdHk6OlllcykgewogICAgICAgICAgICAgY2FsbGJhY2soaGFz
QWN0aXZpdHkpOwogICAgICAgICAgICAgcmV0dXJuOwpAQCAtMjE5LDcgKzIxOSw3IEBAIHZvaWQg
TWVzc2FnZVBvcnRDaGFubmVsOjpjaGVja1JlbW90ZVBvcnRGb3JBY3Rpdml0eShjb25zdCBNZXNz
YWdlUG9ydElkZW50aWZpZXImCiAgICAgICAgICAgICBoYXNBY3Rpdml0eSA9IE1lc3NhZ2VQb3J0
Q2hhbm5lbFByb3ZpZGVyOjpIYXNBY3Rpdml0eTo6WWVzOwogCiAgICAgICAgIGNhbGxiYWNrKGhh
c0FjdGl2aXR5KTsKLSAgICB9IH07CisgICAgfTsKIAogICAgIG1fcmVnaXN0cnkucHJvdmlkZXIo
KS5jaGVja1Byb2Nlc3NMb2NhbFBvcnRGb3JBY3Rpdml0eShyZW1vdGVQb3J0LCAqbV9wcm9jZXNz
ZXNbaV0sIFdURk1vdmUob3V0ZXJDYWxsYmFjaykpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL21lc3NhZ2Vwb3J0cy9NZXNzYWdlUG9ydENoYW5uZWwuaCBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9tZXNzYWdlcG9ydHMvTWVzc2FnZVBvcnRDaGFubmVsLmgKaW5kZXggY2MyOTk0ZDJm
OTJkOTBmN2EyYWVlMmMzZTlhZmU1ZThmYWMxNzc5NS4uYTg4MjZiOGMwMGMwMGI3YTg3NmFkMzhh
ZmFlNjFhZTc4ZThhY2Q4NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL21lc3NhZ2Vw
b3J0cy9NZXNzYWdlUG9ydENoYW5uZWwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vbWVzc2Fn
ZXBvcnRzL01lc3NhZ2VQb3J0Q2hhbm5lbC5oCkBAIC01Myw4ICs1Myw4IEBAIHB1YmxpYzoKICAg
ICB2b2lkIGNsb3NlUG9ydChjb25zdCBNZXNzYWdlUG9ydElkZW50aWZpZXImKTsKICAgICBib29s
IHBvc3RNZXNzYWdlVG9SZW1vdGUoTWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMmJiwgY29uc3QgTWVz
c2FnZVBvcnRJZGVudGlmaWVyJiByZW1vdGVUYXJnZXQpOwogCi0gICAgdm9pZCB0YWtlQWxsTWVz
c2FnZXNGb3JQb3J0KGNvbnN0IE1lc3NhZ2VQb3J0SWRlbnRpZmllciYsIEZ1bmN0aW9uPHZvaWQo
VmVjdG9yPE1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzPiYmLCBGdW5jdGlvbjx2b2lkKCk+JiYpPiYm
KTsKLSAgICB2b2lkIGNoZWNrUmVtb3RlUG9ydEZvckFjdGl2aXR5KGNvbnN0IE1lc3NhZ2VQb3J0
SWRlbnRpZmllciYsIEZ1bmN0aW9uPHZvaWQoTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXI6Okhh
c0FjdGl2aXR5KT4mJiBjYWxsYmFjayk7CisgICAgdm9pZCB0YWtlQWxsTWVzc2FnZXNGb3JQb3J0
KGNvbnN0IE1lc3NhZ2VQb3J0SWRlbnRpZmllciYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVj
dG9yPE1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzPiYmLCBGdW5jdGlvbjx2b2lkKCk+JiYpPiYmKTsK
KyAgICB2b2lkIGNoZWNrUmVtb3RlUG9ydEZvckFjdGl2aXR5KGNvbnN0IE1lc3NhZ2VQb3J0SWRl
bnRpZmllciYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlk
ZXI6Okhhc0FjdGl2aXR5KT4mJiBjYWxsYmFjayk7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBib29s
IGhhc0FueU1lc3NhZ2VzUGVuZGluZ09ySW5GbGlnaHQoKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvZG9tL21lc3NhZ2Vwb3J0cy9NZXNzYWdlUG9ydENoYW5uZWxQcm92aWRl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vbWVzc2FnZXBvcnRzL01lc3NhZ2VQb3J0Q2hhbm5l
bFByb3ZpZGVyLmNwcAppbmRleCAwYTVjZDE3NzNlOTMxYjA0OWZmNDhkNzFiOTdlYWQ5YjY2NjM1
Yzk5Li4xMmFhOWYyY2ZiZjEyZDNlMDg5YTViYTFiMDg3NjY0OGMxZjE2NTUwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9kb20vbWVzc2FnZXBvcnRzL01lc3NhZ2VQb3J0Q2hhbm5lbFByb3Zp
ZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vbWVzc2FnZXBvcnRzL01lc3NhZ2VQb3J0
Q2hhbm5lbFByb3ZpZGVyLmNwcApAQCAtMjYsNyArMjYsOSBAQAogI2luY2x1ZGUgImNvbmZpZy5o
IgogI2luY2x1ZGUgIk1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyLmgiCiAKKyNpbmNsdWRlICJE
b2N1bWVudC5oIgogI2luY2x1ZGUgIk1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVySW1wbC5oIgor
I2luY2x1ZGUgIldvcmtlckdsb2JhbFNjb3BlLmgiCiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQu
aD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtMzUsNiArMzcsNyBAQCBzdGF0aWMgTWVzc2Fn
ZVBvcnRDaGFubmVsUHJvdmlkZXIqIGdsb2JhbFByb3ZpZGVyOwogCiBNZXNzYWdlUG9ydENoYW5u
ZWxQcm92aWRlciYgTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXI6OnNpbmdsZXRvbigpCiB7Cisg
ICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICBzdGF0aWMgc3RkOjpvbmNlX2ZsYWcgb25j
ZUZsYWc7CiAgICAgc3RkOjpjYWxsX29uY2Uob25jZUZsYWcsIFtdIHsKICAgICAgICAgaWYgKCFn
bG9iYWxQcm92aWRlcikKQEAgLTUxLDQgKzU0LDEyIEBAIHZvaWQgTWVzc2FnZVBvcnRDaGFubmVs
UHJvdmlkZXI6OnNldFNoYXJlZFByb3ZpZGVyKE1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyJiBw
CiAgICAgZ2xvYmFsUHJvdmlkZXIgPSAmcHJvdmlkZXI7CiB9CiAKK01lc3NhZ2VQb3J0Q2hhbm5l
bFByb3ZpZGVyJiBNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlcjo6ZnJvbUNvbnRleHQoU2NyaXB0
RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkKK3sKKyAgICBpZiAoaXM8RG9jdW1lbnQ+KGNvbnRl
eHQpKQorICAgICAgICByZXR1cm4gZG93bmNhc3Q8RG9jdW1lbnQ+KGNvbnRleHQpLm1lc3NhZ2VQ
b3J0Q2hhbm5lbFByb3ZpZGVyKCk7CisKKyAgICByZXR1cm4gZG93bmNhc3Q8V29ya2VyR2xvYmFs
U2NvcGU+KGNvbnRleHQpLm1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyKCk7Cit9CisKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9tZXNzYWdl
cG9ydHMvTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9t
ZXNzYWdlcG9ydHMvTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXIuaAppbmRleCA4YTNhYmEyODIx
MDQ2YTk2NGMwZjQ1ZTNlYjc0M2FjMzhkNmM5OTZmLi5jZmYzZjM1OTc1M2M4MmMyY2I2ZTVjOTZm
MGNmYzExNmRlNzkzNWI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vbWVzc2FnZXBv
cnRzL01lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L21lc3NhZ2Vwb3J0cy9NZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlci5oCkBAIC0yNiwxNiArMjYs
MTggQEAKICNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiUHJvY2Vzc0lkZW50aWZpZXIuaCIKLSNp
bmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KKyNpbmNsdWRlIDx3dGYvQ29tcGxldGlvbkhhbmRsZXIu
aD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAorY2xh
c3MgU2NyaXB0RXhlY3V0aW9uQ29udGV4dDsKIHN0cnVjdCBNZXNzYWdlUG9ydElkZW50aWZpZXI7
CiBzdHJ1Y3QgTWVzc2FnZVdpdGhNZXNzYWdlUG9ydHM7CiAKIGNsYXNzIE1lc3NhZ2VQb3J0Q2hh
bm5lbFByb3ZpZGVyIHsKIHB1YmxpYzoKKyAgICBzdGF0aWMgTWVzc2FnZVBvcnRDaGFubmVsUHJv
dmlkZXImIGZyb21Db250ZXh0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQmKTsKICAgICBzdGF0aWMg
TWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXImIHNpbmdsZXRvbigpOwogICAgIFdFQkNPUkVfRVhQ
T1JUIHN0YXRpYyB2b2lkIHNldFNoYXJlZFByb3ZpZGVyKE1lc3NhZ2VQb3J0Q2hhbm5lbFByb3Zp
ZGVyJik7CiAKQEAgLTQ3LDE5ICs0OSwxNSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIG1l
c3NhZ2VQb3J0RGlzZW50YW5nbGVkKGNvbnN0IE1lc3NhZ2VQb3J0SWRlbnRpZmllciYgbG9jYWwp
ID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgbWVzc2FnZVBvcnRDbG9zZWQoY29uc3QgTWVzc2FnZVBv
cnRJZGVudGlmaWVyJiBsb2NhbCkgPSAwOwogICAgIAotICAgIC8vIEZJWE1FOiBJZGVhbGx5IHRo
ZSBjYWxsYmFjayB3b3VsZCBiZSBhIENvbXBsZXRpb25IYW5kbGVyIGJ1dCBpdCBpcyBhbHdheXMg
Y2FsbGVkIG9uIHRoZSBjYWxsZXIncwotICAgIC8vIHRocmVhZCBhdCB0aGUgbW9tZW50LgotICAg
IHZpcnR1YWwgdm9pZCB0YWtlQWxsTWVzc2FnZXNGb3JQb3J0KGNvbnN0IE1lc3NhZ2VQb3J0SWRl
bnRpZmllciYsIEZ1bmN0aW9uPHZvaWQoVmVjdG9yPE1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzPiYm
LCBGdW5jdGlvbjx2b2lkKCk+JiYpPiYmKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHRha2VBbGxN
ZXNzYWdlc0ZvclBvcnQoY29uc3QgTWVzc2FnZVBvcnRJZGVudGlmaWVyJiwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChWZWN0b3I8TWVzc2FnZVdpdGhNZXNzYWdlUG9ydHM+JiYsIEZ1bmN0aW9uPHZv
aWQoKT4mJik+JiYpID0gMDsKIAotICAgIHZpcnR1YWwgdm9pZCBwb3N0TWVzc2FnZVRvUmVtb3Rl
KE1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzJiYsIGNvbnN0IE1lc3NhZ2VQb3J0SWRlbnRpZmllciYg
cmVtb3RlVGFyZ2V0KSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHBvc3RNZXNzYWdlVG9SZW1vdGUo
Y29uc3QgTWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMmLCBjb25zdCBNZXNzYWdlUG9ydElkZW50aWZp
ZXImIHJlbW90ZVRhcmdldCkgPSAwOwogCiAgICAgZW51bSBjbGFzcyBIYXNBY3Rpdml0eSB7CiAg
ICAgICAgIFllcywKICAgICAgICAgTm8sCiAgICAgfTsKLSAgICAvLyBGSVhNRTogSWRlYWxseSB0
aGUgY2FsbGJhY2sgd291bGQgYmUgYSBDb21wbGV0aW9uSGFuZGxlciBidXQgaXQgaXMgYWx3YXlz
IGNhbGxlZCBvbiB0aGUgY2FsbGVyJ3MKLSAgICAvLyB0aHJlYWQgYXQgdGhlIG1vbWVudC4KLSAg
ICB2aXJ0dWFsIHZvaWQgY2hlY2tSZW1vdGVQb3J0Rm9yQWN0aXZpdHkoY29uc3QgTWVzc2FnZVBv
cnRJZGVudGlmaWVyJiByZW1vdGVUYXJnZXQsIEZ1bmN0aW9uPHZvaWQoSGFzQWN0aXZpdHkpPiYm
IGNhbGxiYWNrKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGNoZWNrUmVtb3RlUG9ydEZvckFjdGl2
aXR5KGNvbnN0IE1lc3NhZ2VQb3J0SWRlbnRpZmllciYgcmVtb3RlVGFyZ2V0LCBDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKEhhc0FjdGl2aXR5KT4mJiBjYWxsYmFjaykgPSAwOwogCiAgICAgLy8gT3Bl
cmF0aW9ucyB0aGF0IHRoZSBjb29yZGluYXRpbmcgcHJvY2VzcyBwZXJmb3JtcyAoZS5nLiB0aGUg
VUlQcm9jZXNzKQogICAgIHZpcnR1YWwgdm9pZCBjaGVja1Byb2Nlc3NMb2NhbFBvcnRGb3JBY3Rp
dml0eShjb25zdCBNZXNzYWdlUG9ydElkZW50aWZpZXImLCBQcm9jZXNzSWRlbnRpZmllciwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChIYXNBY3Rpdml0eSk+JiYpID0gMDsKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9tZXNzYWdlcG9ydHMvTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXJJ
bXBsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9tZXNzYWdlcG9ydHMvTWVzc2FnZVBvcnRDaGFu
bmVsUHJvdmlkZXJJbXBsLmNwcAppbmRleCAwYjA3YzI3NTNhOTljZTAyMDZkNDFjY2IwZWE0OWVk
MDQxNmYxNGE2Li5lMTY1NmUyNzIwMDkxNmZhY2RlNTgwN2M5ZWRhYTAzMjBjMDQzNWRkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vbWVzc2FnZXBvcnRzL01lc3NhZ2VQb3J0Q2hhbm5l
bFByb3ZpZGVySW1wbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL21lc3NhZ2Vwb3J0cy9N
ZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlckltcGwuY3BwCkBAIC0yNyw3ICsyNyw2IEBACiAjaW5j
bHVkZSAiTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXJJbXBsLmgiCiAKICNpbmNsdWRlICJNZXNz
YWdlUG9ydC5oIgotI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgogI2luY2x1ZGUg
PHd0Zi9NYWluVGhyZWFkLmg+CiAjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KIApAQCAtNzksMTgg
Kzc4LDE4IEBAIHZvaWQgTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXJJbXBsOjptZXNzYWdlUG9y
dENsb3NlZChjb25zdCBNZXNzYWdlUG9ydElkZW50aWZpCiAgICAgfSk7CiB9CiAKLXZvaWQgTWVz
c2FnZVBvcnRDaGFubmVsUHJvdmlkZXJJbXBsOjpwb3N0TWVzc2FnZVRvUmVtb3RlKE1lc3NhZ2VX
aXRoTWVzc2FnZVBvcnRzJiYgbWVzc2FnZSwgY29uc3QgTWVzc2FnZVBvcnRJZGVudGlmaWVyJiBy
ZW1vdGVUYXJnZXQpCit2b2lkIE1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVySW1wbDo6cG9zdE1l
c3NhZ2VUb1JlbW90ZShjb25zdCBNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cyYgbWVzc2FnZSwgY29u
c3QgTWVzc2FnZVBvcnRJZGVudGlmaWVyJiByZW1vdGVUYXJnZXQpCiB7Ci0gICAgcGVyZm9ybUFj
dGlvbk9uTWFpblRocmVhZChbcmVnaXN0cnkgPSAmbV9yZWdpc3RyeSwgbWVzc2FnZSA9IFdURk1v
dmUobWVzc2FnZSksIHJlbW90ZVRhcmdldF0oKSBtdXRhYmxlIHsKKyAgICBwZXJmb3JtQWN0aW9u
T25NYWluVGhyZWFkKFtyZWdpc3RyeSA9ICZtX3JlZ2lzdHJ5LCBtZXNzYWdlID0gTWVzc2FnZVdp
dGhNZXNzYWdlUG9ydHMgeyBtZXNzYWdlIH0sIHJlbW90ZVRhcmdldF0oKSBtdXRhYmxlIHsKICAg
ICAgICAgaWYgKHJlZ2lzdHJ5LT5kaWRQb3N0TWVzc2FnZVRvUmVtb3RlKFdURk1vdmUobWVzc2Fn
ZSksIHJlbW90ZVRhcmdldCkpCiAgICAgICAgICAgICBNZXNzYWdlUG9ydDo6bm90aWZ5TWVzc2Fn
ZUF2YWlsYWJsZShyZW1vdGVUYXJnZXQpOwogICAgIH0pOwogfQogCi12b2lkIE1lc3NhZ2VQb3J0
Q2hhbm5lbFByb3ZpZGVySW1wbDo6dGFrZUFsbE1lc3NhZ2VzRm9yUG9ydChjb25zdCBNZXNzYWdl
UG9ydElkZW50aWZpZXImIHBvcnQsIEZ1bmN0aW9uPHZvaWQoVmVjdG9yPE1lc3NhZ2VXaXRoTWVz
c2FnZVBvcnRzPiYmLCBGdW5jdGlvbjx2b2lkKCk+JiYpPiYmIG91dGVyQ2FsbGJhY2spCit2b2lk
IE1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVySW1wbDo6dGFrZUFsbE1lc3NhZ2VzRm9yUG9ydChj
b25zdCBNZXNzYWdlUG9ydElkZW50aWZpZXImIHBvcnQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
VmVjdG9yPE1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzPiYmLCBGdW5jdGlvbjx2b2lkKCk+JiYpPiYm
IG91dGVyQ2FsbGJhY2spCiB7CiAgICAgLy8gSXQgaXMgdGhlIHJlc3BvbnNpYmlsaXR5IG9mIG91
dGVyQ2FsbGJhY2sgdG8gZ2V0IGl0c2VsZiB0byB0aGUgYXBwcm9wcmlhdGUgdGhyZWFkIChlLmcu
IFdlYldvcmtlciB0aHJlYWQpCi0gICAgYXV0byBjYWxsYmFjayA9IFtvdXRlckNhbGxiYWNrID0g
V1RGTW92ZShvdXRlckNhbGxiYWNrKV0oVmVjdG9yPE1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzPiYm
IG1lc3NhZ2VzLCBGdW5jdGlvbjx2b2lkKCk+JiYgbWVzc2FnZURlbGl2ZXJ5Q2FsbGJhY2spIHsK
KyAgICBhdXRvIGNhbGxiYWNrID0gW291dGVyQ2FsbGJhY2sgPSBXVEZNb3ZlKG91dGVyQ2FsbGJh
Y2spXShWZWN0b3I8TWVzc2FnZVdpdGhNZXNzYWdlUG9ydHM+JiYgbWVzc2FnZXMsIEZ1bmN0aW9u
PHZvaWQoKT4mJiBtZXNzYWdlRGVsaXZlcnlDYWxsYmFjaykgbXV0YWJsZSB7CiAgICAgICAgIEFT
U0VSVChpc01haW5UaHJlYWQoKSk7CiAgICAgICAgIG91dGVyQ2FsbGJhY2soV1RGTW92ZShtZXNz
YWdlcyksIFdURk1vdmUobWVzc2FnZURlbGl2ZXJ5Q2FsbGJhY2spKTsKICAgICB9OwpAQCAtMTAw
LDcgKzk5LDcgQEAgdm9pZCBNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlckltcGw6OnRha2VBbGxN
ZXNzYWdlc0ZvclBvcnQoY29uc3QgTWVzc2FnZVBvcnRJZGUKICAgICB9KTsKIH0KIAotdm9pZCBN
ZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlckltcGw6OmNoZWNrUmVtb3RlUG9ydEZvckFjdGl2aXR5
KGNvbnN0IE1lc3NhZ2VQb3J0SWRlbnRpZmllciYgcmVtb3RlVGFyZ2V0LCBGdW5jdGlvbjx2b2lk
KEhhc0FjdGl2aXR5KT4mJiBvdXRlckNhbGxiYWNrKQordm9pZCBNZXNzYWdlUG9ydENoYW5uZWxQ
cm92aWRlckltcGw6OmNoZWNrUmVtb3RlUG9ydEZvckFjdGl2aXR5KGNvbnN0IE1lc3NhZ2VQb3J0
SWRlbnRpZmllciYgcmVtb3RlVGFyZ2V0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEhhc0FjdGl2
aXR5KT4mJiBvdXRlckNhbGxiYWNrKQogewogICAgIGF1dG8gY2FsbGJhY2sgPSBGdW5jdGlvbjx2
b2lkKEhhc0FjdGl2aXR5KT4geyBbb3V0ZXJDYWxsYmFjayA9IFdURk1vdmUob3V0ZXJDYWxsYmFj
ayldKEhhc0FjdGl2aXR5IGhhc0FjdGl2aXR5KSBtdXRhYmxlIHsKICAgICAgICAgQVNTRVJUKGlz
TWFpblRocmVhZCgpKTsKQEAgLTExOSw1ICsxMTgsNCBAQCB2b2lkIE1lc3NhZ2VQb3J0Q2hhbm5l
bFByb3ZpZGVySW1wbDo6Y2hlY2tQcm9jZXNzTG9jYWxQb3J0Rm9yQWN0aXZpdHkoY29uc3QgTWVz
cwogICAgIGNhbGxiYWNrKE1lc3NhZ2VQb3J0Ojppc0V4aXN0aW5nTWVzc2FnZVBvcnRMb2NhbGx5
UmVhY2hhYmxlKGlkZW50aWZpZXIpID8gSGFzQWN0aXZpdHk6OlllcyA6IEhhc0FjdGl2aXR5OjpO
byk7CiB9CiAKLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL21lc3NhZ2Vwb3J0cy9NZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlckltcGwuaCBi
L1NvdXJjZS9XZWJDb3JlL2RvbS9tZXNzYWdlcG9ydHMvTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlk
ZXJJbXBsLmgKaW5kZXggZDM1NTRlMWFhMWRmNDU3YjFiODVkMmZiODJjNzU2OWY5ODlkN2I2Yi4u
NDhjYjU0ODcxMDIzYTc1NTU4NjE3YTM2MTU3NWNkMTI4YWExODExYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvZG9tL21lc3NhZ2Vwb3J0cy9NZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlcklt
cGwuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vbWVzc2FnZXBvcnRzL01lc3NhZ2VQb3J0Q2hh
bm5lbFByb3ZpZGVySW1wbC5oCkBAIC00MCw5ICs0MCw5IEBAIHByaXZhdGU6CiAgICAgdm9pZCBl
bnRhbmdsZUxvY2FsUG9ydEluVGhpc1Byb2Nlc3NUb1JlbW90ZShjb25zdCBNZXNzYWdlUG9ydElk
ZW50aWZpZXImIGxvY2FsLCBjb25zdCBNZXNzYWdlUG9ydElkZW50aWZpZXImIHJlbW90ZSkgZmlu
YWw7CiAgICAgdm9pZCBtZXNzYWdlUG9ydERpc2VudGFuZ2xlZChjb25zdCBNZXNzYWdlUG9ydElk
ZW50aWZpZXImIGxvY2FsKSBmaW5hbDsKICAgICB2b2lkIG1lc3NhZ2VQb3J0Q2xvc2VkKGNvbnN0
IE1lc3NhZ2VQb3J0SWRlbnRpZmllciYgbG9jYWwpIGZpbmFsOwotICAgIHZvaWQgcG9zdE1lc3Nh
Z2VUb1JlbW90ZShNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cyYmLCBjb25zdCBNZXNzYWdlUG9ydElk
ZW50aWZpZXImIHJlbW90ZVRhcmdldCkgZmluYWw7Ci0gICAgdm9pZCB0YWtlQWxsTWVzc2FnZXNG
b3JQb3J0KGNvbnN0IE1lc3NhZ2VQb3J0SWRlbnRpZmllciYsIEZ1bmN0aW9uPHZvaWQoVmVjdG9y
PE1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzPiYmLCBGdW5jdGlvbjx2b2lkKCk+JiYpPiYmKSBmaW5h
bDsKLSAgICB2b2lkIGNoZWNrUmVtb3RlUG9ydEZvckFjdGl2aXR5KGNvbnN0IE1lc3NhZ2VQb3J0
SWRlbnRpZmllciYgcmVtb3RlVGFyZ2V0LCBGdW5jdGlvbjx2b2lkKEhhc0FjdGl2aXR5KT4mJiBj
YWxsYmFjaykgZmluYWw7CisgICAgdm9pZCBwb3N0TWVzc2FnZVRvUmVtb3RlKGNvbnN0IE1lc3Nh
Z2VXaXRoTWVzc2FnZVBvcnRzJiwgY29uc3QgTWVzc2FnZVBvcnRJZGVudGlmaWVyJiByZW1vdGVU
YXJnZXQpIGZpbmFsOworICAgIHZvaWQgdGFrZUFsbE1lc3NhZ2VzRm9yUG9ydChjb25zdCBNZXNz
YWdlUG9ydElkZW50aWZpZXImLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxNZXNzYWdl
V2l0aE1lc3NhZ2VQb3J0cz4mJiwgRnVuY3Rpb248dm9pZCgpPiYmKT4mJikgZmluYWw7CisgICAg
dm9pZCBjaGVja1JlbW90ZVBvcnRGb3JBY3Rpdml0eShjb25zdCBNZXNzYWdlUG9ydElkZW50aWZp
ZXImIHJlbW90ZVRhcmdldCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChIYXNBY3Rpdml0eSk+JiYg
Y2FsbGJhY2spIGZpbmFsOwogCiAgICAgdm9pZCBjaGVja1Byb2Nlc3NMb2NhbFBvcnRGb3JBY3Rp
dml0eShjb25zdCBNZXNzYWdlUG9ydElkZW50aWZpZXImLCBQcm9jZXNzSWRlbnRpZmllciwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChIYXNBY3Rpdml0eSk+JiYpIGZpbmFsOwogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9kb20vbWVzc2FnZXBvcnRzL01lc3NhZ2VQb3J0Q2hhbm5lbFJlZ2lz
dHJ5LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9tZXNzYWdlcG9ydHMvTWVzc2FnZVBvcnRDaGFu
bmVsUmVnaXN0cnkuY3BwCmluZGV4IDFjYjM1NTQ2ZTMzZmM2NjEwYzQ2YTJkMGQ5ZDI4MzY4ODk0
NTc2Y2UuLmUwZTYwZjJlOTcwN2MzMmYwYzg5NzVkYTNkYjVmZWRmZDc3NzlhZTAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9tZXNzYWdlcG9ydHMvTWVzc2FnZVBvcnRDaGFubmVsUmVn
aXN0cnkuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9tZXNzYWdlcG9ydHMvTWVzc2FnZVBv
cnRDaGFubmVsUmVnaXN0cnkuY3BwCkBAIC0xNDEsNyArMTQxLDcgQEAgYm9vbCBNZXNzYWdlUG9y
dENoYW5uZWxSZWdpc3RyeTo6ZGlkUG9zdE1lc3NhZ2VUb1JlbW90ZShNZXNzYWdlV2l0aE1lc3Nh
Z2VQb3J0cyYKICAgICByZXR1cm4gY2hhbm5lbC0+cG9zdE1lc3NhZ2VUb1JlbW90ZShXVEZNb3Zl
KG1lc3NhZ2UpLCByZW1vdGVUYXJnZXQpOwogfQogCi12b2lkIE1lc3NhZ2VQb3J0Q2hhbm5lbFJl
Z2lzdHJ5Ojp0YWtlQWxsTWVzc2FnZXNGb3JQb3J0KGNvbnN0IE1lc3NhZ2VQb3J0SWRlbnRpZmll
ciYgcG9ydCwgRnVuY3Rpb248dm9pZChWZWN0b3I8TWVzc2FnZVdpdGhNZXNzYWdlUG9ydHM+JiYs
IEZ1bmN0aW9uPHZvaWQoKT4mJik+JiYgY2FsbGJhY2spCit2b2lkIE1lc3NhZ2VQb3J0Q2hhbm5l
bFJlZ2lzdHJ5Ojp0YWtlQWxsTWVzc2FnZXNGb3JQb3J0KGNvbnN0IE1lc3NhZ2VQb3J0SWRlbnRp
ZmllciYgcG9ydCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8TWVzc2FnZVdpdGhNZXNz
YWdlUG9ydHM+JiYsIEZ1bmN0aW9uPHZvaWQoKT4mJik+JiYgY2FsbGJhY2spCiB7CiAgICAgQVNT
RVJUKGlzTWFpblRocmVhZCgpKTsKIApAQCAtMTU3LDcgKzE1Nyw3IEBAIHZvaWQgTWVzc2FnZVBv
cnRDaGFubmVsUmVnaXN0cnk6OnRha2VBbGxNZXNzYWdlc0ZvclBvcnQoY29uc3QgTWVzc2FnZVBv
cnRJZGVudGlmCiAgICAgY2hhbm5lbC0+dGFrZUFsbE1lc3NhZ2VzRm9yUG9ydChwb3J0LCBXVEZN
b3ZlKGNhbGxiYWNrKSk7CiB9CiAKLXZvaWQgTWVzc2FnZVBvcnRDaGFubmVsUmVnaXN0cnk6OmNo
ZWNrUmVtb3RlUG9ydEZvckFjdGl2aXR5KGNvbnN0IE1lc3NhZ2VQb3J0SWRlbnRpZmllciYgcmVt
b3RlVGFyZ2V0LCBGdW5jdGlvbjx2b2lkKE1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyOjpIYXNB
Y3Rpdml0eSk+JiYgY2FsbGJhY2spCit2b2lkIE1lc3NhZ2VQb3J0Q2hhbm5lbFJlZ2lzdHJ5Ojpj
aGVja1JlbW90ZVBvcnRGb3JBY3Rpdml0eShjb25zdCBNZXNzYWdlUG9ydElkZW50aWZpZXImIHJl
bW90ZVRhcmdldCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChNZXNzYWdlUG9ydENoYW5uZWxQcm92
aWRlcjo6SGFzQWN0aXZpdHkpPiYmIGNhbGxiYWNrKQogewogICAgIEFTU0VSVChpc01haW5UaHJl
YWQoKSk7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9tZXNzYWdlcG9ydHMvTWVz
c2FnZVBvcnRDaGFubmVsUmVnaXN0cnkuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9tZXNzYWdlcG9y
dHMvTWVzc2FnZVBvcnRDaGFubmVsUmVnaXN0cnkuaAppbmRleCA1MzFhYTk1ODQ4NDNkYTc1MTU3
NjExYjEzYjc0ZTQxMGZlYjY3M2E1Li42YmNhMjgyZWRjYTlhMzAwNzI5Mjc1Yjk2NDlhNGM1M2E0
YWRmMWM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vbWVzc2FnZXBvcnRzL01lc3Nh
Z2VQb3J0Q2hhbm5lbFJlZ2lzdHJ5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL21lc3NhZ2Vw
b3J0cy9NZXNzYWdlUG9ydENoYW5uZWxSZWdpc3RyeS5oCkBAIC00Myw4ICs0Myw4IEBAIHB1Ymxp
YzoKICAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIGRpZERpc2VudGFuZ2xlTWVzc2FnZVBvcnQoY29u
c3QgTWVzc2FnZVBvcnRJZGVudGlmaWVyJiBsb2NhbCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgdm9p
ZCBkaWRDbG9zZU1lc3NhZ2VQb3J0KGNvbnN0IE1lc3NhZ2VQb3J0SWRlbnRpZmllciYgbG9jYWwp
OwogICAgIFdFQkNPUkVfRVhQT1JUIGJvb2wgZGlkUG9zdE1lc3NhZ2VUb1JlbW90ZShNZXNzYWdl
V2l0aE1lc3NhZ2VQb3J0cyYmLCBjb25zdCBNZXNzYWdlUG9ydElkZW50aWZpZXImIHJlbW90ZVRh
cmdldCk7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCB0YWtlQWxsTWVzc2FnZXNGb3JQb3J0KGNv
bnN0IE1lc3NhZ2VQb3J0SWRlbnRpZmllciYsIEZ1bmN0aW9uPHZvaWQoVmVjdG9yPE1lc3NhZ2VX
aXRoTWVzc2FnZVBvcnRzPiYmLCBGdW5jdGlvbjx2b2lkKCk+JiYpPiYmKTsKLSAgICBXRUJDT1JF
X0VYUE9SVCB2b2lkIGNoZWNrUmVtb3RlUG9ydEZvckFjdGl2aXR5KGNvbnN0IE1lc3NhZ2VQb3J0
SWRlbnRpZmllciYgcmVtb3RlVGFyZ2V0LCBGdW5jdGlvbjx2b2lkKE1lc3NhZ2VQb3J0Q2hhbm5l
bFByb3ZpZGVyOjpIYXNBY3Rpdml0eSk+JiYgY2FsbGJhY2spOworICAgIFdFQkNPUkVfRVhQT1JU
IHZvaWQgdGFrZUFsbE1lc3NhZ2VzRm9yUG9ydChjb25zdCBNZXNzYWdlUG9ydElkZW50aWZpZXIm
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cz4m
JiwgRnVuY3Rpb248dm9pZCgpPiYmKT4mJik7CisgICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjaGVj
a1JlbW90ZVBvcnRGb3JBY3Rpdml0eShjb25zdCBNZXNzYWdlUG9ydElkZW50aWZpZXImIHJlbW90
ZVRhcmdldCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRl
cjo6SGFzQWN0aXZpdHkpPiYmIGNhbGxiYWNrKTsKIAogICAgIFdFQkNPUkVfRVhQT1JUIE1lc3Nh
Z2VQb3J0Q2hhbm5lbCogZXhpc3RpbmdDaGFubmVsQ29udGFpbmluZ1BvcnQoY29uc3QgTWVzc2Fn
ZVBvcnRJZGVudGlmaWVyJik7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9tZXNz
YWdlcG9ydHMvV29ya2VyTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvZG9tL21lc3NhZ2Vwb3J0cy9Xb3JrZXJNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlci5j
cHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMC4uNmEwMTc1OTExMzI1NzBjNDc5YzE1MDQyYjkwNzgyOGIwZWY4NDAwZAot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9tZXNzYWdlcG9ydHMvV29ya2Vy
TWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXIuY3BwCkBAIC0wLDAgKzEsMTM4IEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2luY2x1ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIldvcmtlck1lc3NhZ2VQb3J0Q2hh
bm5lbFByb3ZpZGVyLmgiCisKKyNpbmNsdWRlICJNZXNzYWdlUG9ydC5oIgorI2luY2x1ZGUgIldv
cmtlckdsb2JhbFNjb3BlLmgiCisjaW5jbHVkZSAiV29ya2VyVGhyZWFkLmgiCisjaW5jbHVkZSA8
d3RmL01haW5UaHJlYWQuaD4KKyNpbmNsdWRlIDx3dGYvUnVuTG9vcC5oPgorCituYW1lc3BhY2Ug
V2ViQ29yZSB7CisKK1dvcmtlck1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyOjpXb3JrZXJNZXNz
YWdlUG9ydENoYW5uZWxQcm92aWRlcihXb3JrZXJHbG9iYWxTY29wZSYgc2NvcGUpCisgICAgOiBt
X3Njb3BlKHNjb3BlKQoreworfQorCitXb3JrZXJNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlcjo6
fldvcmtlck1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyKCkKK3sKKyAgICB3aGlsZSAoIW1fdGFr
ZUFsbE1lc3NhZ2VzQ2FsbGJhY2tzLmlzRW1wdHkoKSkgeworICAgICAgICBhdXRvIGZpcnN0ID0g
bV90YWtlQWxsTWVzc2FnZXNDYWxsYmFja3MuYmVnaW4oKTsKKyAgICAgICAgZmlyc3QtPnZhbHVl
KHsgfSwgW10geyB9KTsKKyAgICAgICAgbV90YWtlQWxsTWVzc2FnZXNDYWxsYmFja3MucmVtb3Zl
KGZpcnN0KTsKKyAgICB9CisgICAgd2hpbGUgKCFtX2FjdGl2aXR5Q2FsbGJhY2tzLmlzRW1wdHko
KSkgeworICAgICAgICBhdXRvIGZpcnN0ID0gbV9hY3Rpdml0eUNhbGxiYWNrcy5iZWdpbigpOwor
ICAgICAgICBmaXJzdC0+dmFsdWUoSGFzQWN0aXZpdHk6Ok5vKTsKKyAgICAgICAgbV9hY3Rpdml0
eUNhbGxiYWNrcy5yZW1vdmUoZmlyc3QpOworICAgIH0KK30KKwordm9pZCBXb3JrZXJNZXNzYWdl
UG9ydENoYW5uZWxQcm92aWRlcjo6Y3JlYXRlTmV3TWVzc2FnZVBvcnRDaGFubmVsKGNvbnN0IE1l
c3NhZ2VQb3J0SWRlbnRpZmllciYgbG9jYWwsIGNvbnN0IE1lc3NhZ2VQb3J0SWRlbnRpZmllciYg
cmVtb3RlKQoreworICAgIGNhbGxPbk1haW5UaHJlYWQoW2xvY2FsLCByZW1vdGVdIHsKKyAgICAg
ICAgTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXI6OnNpbmdsZXRvbigpLmNyZWF0ZU5ld01lc3Nh
Z2VQb3J0Q2hhbm5lbChsb2NhbCwgcmVtb3RlKTsKKyAgICB9KTsKK30KKwordm9pZCBXb3JrZXJN
ZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlcjo6ZW50YW5nbGVMb2NhbFBvcnRJblRoaXNQcm9jZXNz
VG9SZW1vdGUoY29uc3QgTWVzc2FnZVBvcnRJZGVudGlmaWVyJiBsb2NhbCwgY29uc3QgTWVzc2Fn
ZVBvcnRJZGVudGlmaWVyJiByZW1vdGUpCit7CisgICAgY2FsbE9uTWFpblRocmVhZChbbG9jYWws
IHJlbW90ZV0geworICAgICAgICBNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlcjo6c2luZ2xldG9u
KCkuZW50YW5nbGVMb2NhbFBvcnRJblRoaXNQcm9jZXNzVG9SZW1vdGUobG9jYWwsIHJlbW90ZSk7
CisgICAgfSk7Cit9CisKK3ZvaWQgV29ya2VyTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXI6Om1l
c3NhZ2VQb3J0RGlzZW50YW5nbGVkKGNvbnN0IE1lc3NhZ2VQb3J0SWRlbnRpZmllciYgbG9jYWwp
Cit7CisgICAgY2FsbE9uTWFpblRocmVhZChbbG9jYWxdIHsKKyAgICAgICAgTWVzc2FnZVBvcnRD
aGFubmVsUHJvdmlkZXI6OnNpbmdsZXRvbigpLm1lc3NhZ2VQb3J0RGlzZW50YW5nbGVkKGxvY2Fs
KTsKKyAgICB9KTsKK30KKwordm9pZCBXb3JrZXJNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlcjo6
bWVzc2FnZVBvcnRDbG9zZWQoY29uc3QgTWVzc2FnZVBvcnRJZGVudGlmaWVyJiBsb2NhbCkKK3sK
KyAgICBjYWxsT25NYWluVGhyZWFkKFtsb2NhbF0geworICAgICAgICBNZXNzYWdlUG9ydENoYW5u
ZWxQcm92aWRlcjo6c2luZ2xldG9uKCkubWVzc2FnZVBvcnRDbG9zZWQobG9jYWwpOworICAgIH0p
OworfQorCit2b2lkIFdvcmtlck1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyOjpwb3N0TWVzc2Fn
ZVRvUmVtb3RlKGNvbnN0IE1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzJiBtZXNzYWdlLCBjb25zdCBN
ZXNzYWdlUG9ydElkZW50aWZpZXImIHJlbW90ZVRhcmdldCkKK3sKKyAgICBjYWxsT25NYWluVGhy
ZWFkQW5kV2FpdChbJl0oKSBtdXRhYmxlIHsKKyAgICAgICAgTWVzc2FnZVBvcnRDaGFubmVsUHJv
dmlkZXI6OnNpbmdsZXRvbigpLnBvc3RNZXNzYWdlVG9SZW1vdGUobWVzc2FnZSwgcmVtb3RlVGFy
Z2V0KTsKKyAgICB9KTsKK30KKwordm9pZCBXb3JrZXJNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRl
cjo6dGFrZUFsbE1lc3NhZ2VzRm9yUG9ydChjb25zdCBNZXNzYWdlUG9ydElkZW50aWZpZXImIGlk
ZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPE1lc3NhZ2VXaXRoTWVzc2Fn
ZVBvcnRzPiYmLCBGdW5jdGlvbjx2b2lkKCk+JiYpPiYmIGNhbGxiYWNrKQoreworICAgIHVpbnQ2
NF90IGNhbGxiYWNrSWRlbnRpZmllciA9ICsrbV9sYXN0Q2FsbGJhY2tJZGVudGlmaWVyOworICAg
IG1fdGFrZUFsbE1lc3NhZ2VzQ2FsbGJhY2tzLmFkZChjYWxsYmFja0lkZW50aWZpZXIsIFdURk1v
dmUoY2FsbGJhY2spKTsKKworICAgIGNhbGxPbk1haW5UaHJlYWQoW3RoaXMsIHdvcmtlclRocmVh
ZCA9IG1ha2VSZWYobV9zY29wZS50aHJlYWQoKSksIGNhbGxiYWNrSWRlbnRpZmllciwgaWRlbnRp
Zmllcl0oKSBtdXRhYmxlIHsKKyAgICAgICAgTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXI6OnNp
bmdsZXRvbigpLnRha2VBbGxNZXNzYWdlc0ZvclBvcnQoaWRlbnRpZmllciwgW3RoaXMsIHdvcmtl
clRocmVhZCA9IFdURk1vdmUod29ya2VyVGhyZWFkKSwgY2FsbGJhY2tJZGVudGlmaWVyXShWZWN0
b3I8TWVzc2FnZVdpdGhNZXNzYWdlUG9ydHM+JiYgbWVzc2FnZXMsIEZ1bmN0aW9uPHZvaWQoKT4m
JiBjb21wbGV0aW9uSGFuZGxlcikgeworICAgICAgICAgICAgd29ya2VyVGhyZWFkLT5ydW5Mb29w
KCkucG9zdFRhc2tGb3JNb2RlKFt0aGlzLCBjYWxsYmFja0lkZW50aWZpZXIsIG1lc3NhZ2VzID0g
V1RGTW92ZShtZXNzYWdlcyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9u
SGFuZGxlcildKGF1dG8mIHNjb3BlKSBtdXRhYmxlIHsKKyAgICAgICAgICAgICAgICBBU1NFUlRf
VU5VU0VEKHNjb3BlLCB0aGlzID09ICZkb3duY2FzdDxXb3JrZXJHbG9iYWxTY29wZT4oc2NvcGUp
Lm1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyKCkpOworICAgICAgICAgICAgICAgIG1fdGFrZUFs
bE1lc3NhZ2VzQ2FsbGJhY2tzLnRha2UoY2FsbGJhY2tJZGVudGlmaWVyKShXVEZNb3ZlKG1lc3Nh
Z2VzKSwgW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcildKCkg
bXV0YWJsZSB7CisgICAgICAgICAgICAgICAgICAgIGNhbGxPbk1haW5UaHJlYWQoV1RGTW92ZShj
b21wbGV0aW9uSGFuZGxlcikpOworICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgfSwg
V29ya2VyUnVuTG9vcDo6ZGVmYXVsdE1vZGUoKSk7CisgICAgICAgIH0pOworICAgIH0pOworfQor
Cit2b2lkIFdvcmtlck1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyOjpjaGVja1JlbW90ZVBvcnRG
b3JBY3Rpdml0eShjb25zdCBNZXNzYWdlUG9ydElkZW50aWZpZXImIHJlbW90ZVRhcmdldCwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChIYXNBY3Rpdml0eSk+JiYgY2FsbGJhY2spCit7CisgICAgdWlu
dDY0X3QgY2FsbGJhY2tJZGVudGlmaWVyID0gKyttX2xhc3RDYWxsYmFja0lkZW50aWZpZXI7Cisg
ICAgbV9hY3Rpdml0eUNhbGxiYWNrcy5hZGQoY2FsbGJhY2tJZGVudGlmaWVyLCBXVEZNb3ZlKGNh
bGxiYWNrKSk7CisKKyAgICBjYWxsT25NYWluVGhyZWFkKFt0aGlzLCB3b3JrZXJUaHJlYWQgPSBt
YWtlUmVmKG1fc2NvcGUudGhyZWFkKCkpLCBjYWxsYmFja0lkZW50aWZpZXIsIHJlbW90ZVRhcmdl
dF0oKSBtdXRhYmxlIHsKKyAgICAgICAgTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXI6OnNpbmds
ZXRvbigpLmNoZWNrUmVtb3RlUG9ydEZvckFjdGl2aXR5KHJlbW90ZVRhcmdldCwgW3RoaXMsIHdv
cmtlclRocmVhZCA9IFdURk1vdmUod29ya2VyVGhyZWFkKSwgY2FsbGJhY2tJZGVudGlmaWVyXShh
dXRvIGhhc0FjdGl2aXR5KSB7CisgICAgICAgICAgICB3b3JrZXJUaHJlYWQtPnJ1bkxvb3AoKS5w
b3N0VGFza0Zvck1vZGUoW3RoaXMsIGNhbGxiYWNrSWRlbnRpZmllciwgaGFzQWN0aXZpdHldKGF1
dG8mIHNjb3BlKSBtdXRhYmxlIHsKKyAgICAgICAgICAgICAgICBBU1NFUlRfVU5VU0VEKHNjb3Bl
LCB0aGlzID09ICZkb3duY2FzdDxXb3JrZXJHbG9iYWxTY29wZT4oc2NvcGUpLm1lc3NhZ2VQb3J0
Q2hhbm5lbFByb3ZpZGVyKCkpOworICAgICAgICAgICAgICAgIG1fYWN0aXZpdHlDYWxsYmFja3Mu
dGFrZShjYWxsYmFja0lkZW50aWZpZXIpKGhhc0FjdGl2aXR5KTsKKyAgICAgICAgICAgIH0sIFdv
cmtlclJ1bkxvb3A6OmRlZmF1bHRNb2RlKCkpOworICAgICAgICB9KTsKKyAgICB9KTsKK30KKwor
dm9pZCBXb3JrZXJNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlcjo6Y2hlY2tQcm9jZXNzTG9jYWxQ
b3J0Rm9yQWN0aXZpdHkoY29uc3QgTWVzc2FnZVBvcnRJZGVudGlmaWVyJiBpZGVudGlmaWVyLCBQ
cm9jZXNzSWRlbnRpZmllciBwcm9jZXNzSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChIYXNBY3Rpdml0eSk+JiYgY2FsbGJhY2spCit7CisgICAgdWludDY0X3QgY2FsbGJhY2tJZGVu
dGlmaWVyID0gKyttX2xhc3RDYWxsYmFja0lkZW50aWZpZXI7CisgICAgbV9hY3Rpdml0eUNhbGxi
YWNrcy5hZGQoY2FsbGJhY2tJZGVudGlmaWVyLCBXVEZNb3ZlKGNhbGxiYWNrKSk7CisKKyAgICBj
YWxsT25NYWluVGhyZWFkKFt0aGlzLCB3b3JrZXJUaHJlYWQgPSBtYWtlUmVmKG1fc2NvcGUudGhy
ZWFkKCkpLCBjYWxsYmFja0lkZW50aWZpZXIsIGlkZW50aWZpZXIsIHByb2Nlc3NJZGVudGlmaWVy
XSgpIG11dGFibGUgeworICAgICAgICBNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlcjo6c2luZ2xl
dG9uKCkuY2hlY2tQcm9jZXNzTG9jYWxQb3J0Rm9yQWN0aXZpdHkoaWRlbnRpZmllciwgcHJvY2Vz
c0lkZW50aWZpZXIsIFt0aGlzLCB3b3JrZXJUaHJlYWQgPSBXVEZNb3ZlKHdvcmtlclRocmVhZCks
IGNhbGxiYWNrSWRlbnRpZmllcl0oYXV0byBoYXNBY3Rpdml0eSkgeworICAgICAgICAgICAgd29y
a2VyVGhyZWFkLT5ydW5Mb29wKCkucG9zdFRhc2tGb3JNb2RlKFt0aGlzLCBjYWxsYmFja0lkZW50
aWZpZXIsIGhhc0FjdGl2aXR5XShhdXRvJiBzY29wZSkgbXV0YWJsZSB7CisgICAgICAgICAgICAg
ICAgQVNTRVJUX1VOVVNFRChzY29wZSwgdGhpcyA9PSAmZG93bmNhc3Q8V29ya2VyR2xvYmFsU2Nv
cGU+KHNjb3BlKS5tZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlcigpKTsKKyAgICAgICAgICAgICAg
ICBtX2FjdGl2aXR5Q2FsbGJhY2tzLnRha2UoY2FsbGJhY2tJZGVudGlmaWVyKShoYXNBY3Rpdml0
eSk7CisgICAgICAgICAgICB9LCBXb3JrZXJSdW5Mb29wOjpkZWZhdWx0TW9kZSgpKTsKKyAgICAg
ICAgfSk7CisgICAgfSk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9tZXNzYWdlcG9ydHMvV29ya2VyTWVzc2FnZVBvcnRDaGFubmVs
UHJvdmlkZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9tZXNzYWdlcG9ydHMvV29ya2VyTWVzc2Fn
ZVBvcnRDaGFubmVsUHJvdmlkZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44N2QwMjBhZjRjYzI5NDRkMDJhN2Zk
MWU3NDU1N2VmYjUyNDlkMWVlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L21lc3NhZ2Vwb3J0cy9Xb3JrZXJNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlci5oCkBAIC0wLDAg
KzEsNjEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBi
aW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0
dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0Ogor
ICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92
ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRo
ZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkg
Zm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRo
aXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhl
CisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0
aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkg
QVBQTEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQ
UkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LAorICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5F
U1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZF
TlQgU0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9S
IEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9S
CisgKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRP
LCBQUk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBP
RiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhP
V0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgor
ICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdF
TkNFIE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBP
RiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBP
RiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJhZ21hIG9uY2UKKworI2luY2x1ZGUgIk1lc3NhZ2VQ
b3J0Q2hhbm5lbFByb3ZpZGVyLmgiCisjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+
CisjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CisKK25h
bWVzcGFjZSBXZWJDb3JlIHsKKworY2xhc3MgV29ya2VyR2xvYmFsU2NvcGU7CisKK2NsYXNzIFdv
cmtlck1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyIGZpbmFsIDogcHVibGljIE1lc3NhZ2VQb3J0
Q2hhbm5lbFByb3ZpZGVyIHsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoK
KyAgICBleHBsaWNpdCBXb3JrZXJNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlcihXb3JrZXJHbG9i
YWxTY29wZSYpOworICAgIH5Xb3JrZXJNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlcigpOworCitw
cml2YXRlOgorICAgIHZvaWQgY3JlYXRlTmV3TWVzc2FnZVBvcnRDaGFubmVsKGNvbnN0IE1lc3Nh
Z2VQb3J0SWRlbnRpZmllciYgbG9jYWwsIGNvbnN0IE1lc3NhZ2VQb3J0SWRlbnRpZmllciYgcmVt
b3RlKSBmaW5hbDsKKyAgICB2b2lkIGVudGFuZ2xlTG9jYWxQb3J0SW5UaGlzUHJvY2Vzc1RvUmVt
b3RlKGNvbnN0IE1lc3NhZ2VQb3J0SWRlbnRpZmllciYgbG9jYWwsIGNvbnN0IE1lc3NhZ2VQb3J0
SWRlbnRpZmllciYgcmVtb3RlKSBmaW5hbDsKKyAgICB2b2lkIG1lc3NhZ2VQb3J0RGlzZW50YW5n
bGVkKGNvbnN0IE1lc3NhZ2VQb3J0SWRlbnRpZmllciYgbG9jYWwpIGZpbmFsOworICAgIHZvaWQg
bWVzc2FnZVBvcnRDbG9zZWQoY29uc3QgTWVzc2FnZVBvcnRJZGVudGlmaWVyJiBsb2NhbCkgZmlu
YWw7CisgICAgdm9pZCBwb3N0TWVzc2FnZVRvUmVtb3RlKGNvbnN0IE1lc3NhZ2VXaXRoTWVzc2Fn
ZVBvcnRzJiwgY29uc3QgTWVzc2FnZVBvcnRJZGVudGlmaWVyJiByZW1vdGVUYXJnZXQpIGZpbmFs
OworICAgIHZvaWQgdGFrZUFsbE1lc3NhZ2VzRm9yUG9ydChjb25zdCBNZXNzYWdlUG9ydElkZW50
aWZpZXImLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxNZXNzYWdlV2l0aE1lc3NhZ2VQ
b3J0cz4mJiwgRnVuY3Rpb248dm9pZCgpPiYmKT4mJikgZmluYWw7CisgICAgdm9pZCBjaGVja1Jl
bW90ZVBvcnRGb3JBY3Rpdml0eShjb25zdCBNZXNzYWdlUG9ydElkZW50aWZpZXImIHJlbW90ZVRh
cmdldCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChIYXNBY3Rpdml0eSk+JiYgY2FsbGJhY2spIGZp
bmFsOworCisgICAgdm9pZCBjaGVja1Byb2Nlc3NMb2NhbFBvcnRGb3JBY3Rpdml0eShjb25zdCBN
ZXNzYWdlUG9ydElkZW50aWZpZXImLCBQcm9jZXNzSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChIYXNBY3Rpdml0eSk+JiYpIGZpbmFsOworCisgICAgV29ya2VyR2xvYmFsU2NvcGUm
IG1fc2NvcGU7CisKKyAgICB1aW50NjRfdCBtX2xhc3RDYWxsYmFja0lkZW50aWZpZXIgeyAwIH07
CisgICAgSGFzaE1hcDx1aW50NjRfdCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8TWVz
c2FnZVdpdGhNZXNzYWdlUG9ydHM+JiYsIEZ1bmN0aW9uPHZvaWQoKT4mJik+PiBtX3Rha2VBbGxN
ZXNzYWdlc0NhbGxiYWNrczsKKyAgICBIYXNoTWFwPHVpbnQ2NF90LCBDb21wbGV0aW9uSGFuZGxl
cjx2b2lkKEhhc0FjdGl2aXR5KT4+IG1fYWN0aXZpdHlDYWxsYmFja3M7Cit9OworCit9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtl
ckdsb2JhbFNjb3BlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2Nv
cGUuY3BwCmluZGV4IDVlMTU1Yjc4MDIwNTI1ODc3ZDRkNzA3YzVhOWI4YmZlZmU0ZDM3MmMuLmE5
NzBhN2FkYTY3NWExNmNmMTY4NzBlYzNlYjNhNmMzNGNlZGMyZjYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuY3BwCkBAIC00NjMsNiArNDYzLDEzIEBAIFdv
cmtlckNhY2hlU3RvcmFnZUNvbm5lY3Rpb24mIFdvcmtlckdsb2JhbFNjb3BlOjpjYWNoZVN0b3Jh
Z2VDb25uZWN0aW9uKCkKICAgICByZXR1cm4gKm1fY2FjaGVTdG9yYWdlQ29ubmVjdGlvbjsKIH0K
IAorTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXImIFdvcmtlckdsb2JhbFNjb3BlOjptZXNzYWdl
UG9ydENoYW5uZWxQcm92aWRlcigpCit7CisgICAgaWYgKCFtX21lc3NhZ2VQb3J0Q2hhbm5lbFBy
b3ZpZGVyKQorICAgICAgICBtX21lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyID0gbWFrZVVuaXF1
ZTxXb3JrZXJNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlcj4oKnRoaXMpOworICAgIHJldHVybiAq
bV9tZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlcjsKK30KKwogdm9pZCBXb3JrZXJHbG9iYWxTY29w
ZTo6Y3JlYXRlSW1hZ2VCaXRtYXAoSW1hZ2VCaXRtYXA6OlNvdXJjZSYmIHNvdXJjZSwgSW1hZ2VC
aXRtYXBPcHRpb25zJiYgb3B0aW9ucywgSW1hZ2VCaXRtYXA6OlByb21pc2UmJiBwcm9taXNlKQog
ewogICAgIEltYWdlQml0bWFwOjpjcmVhdGVQcm9taXNlKCp0aGlzLCBXVEZNb3ZlKHNvdXJjZSks
IFdURk1vdmUob3B0aW9ucyksIFdURk1vdmUocHJvbWlzZSkpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5oIGIvU291cmNlL1dlYkNvcmUvd29y
a2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5oCmluZGV4IDliNzdlMmM2MTNhYWIxOWE5ZWE1N2Y3MTVj
ODVjMTRjYmJjOGQ1MTYuLjFiNzFjMTFhY2M0YTkwMGQ5YmUyMWE2NTE2NjE5MzM1MjM0YzllZDAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmgKQEAgLTM1LDYg
KzM1LDcgQEAKICNpbmNsdWRlIDx3dGYvVVJMLmg+CiAjaW5jbHVkZSAiV29ya2VyQ2FjaGVTdG9y
YWdlQ29ubmVjdGlvbi5oIgogI2luY2x1ZGUgIldvcmtlckV2ZW50UXVldWUuaCIKKyNpbmNsdWRl
ICJXb3JrZXJNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlci5oIgogI2luY2x1ZGUgIldvcmtlclNj
cmlwdENvbnRyb2xsZXIuaCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9Db25zb2xlTWVzc2Fn
ZS5oPgogI2luY2x1ZGUgPG1lbW9yeT4KQEAgLTczLDYgKzc0LDcgQEAgcHVibGljOgogI2VuZGlm
CiAKICAgICBXb3JrZXJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uJiBjYWNoZVN0b3JhZ2VDb25uZWN0
aW9uKCk7CisgICAgTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXImIG1lc3NhZ2VQb3J0Q2hhbm5l
bFByb3ZpZGVyKCk7CiAKICAgICBXb3JrZXJTY3JpcHRDb250cm9sbGVyKiBzY3JpcHQoKSB7IHJl
dHVybiBtX3NjcmlwdC5nZXQoKTsgfQogICAgIHZvaWQgY2xlYXJTY3JpcHQoKSB7IG1fc2NyaXB0
ID0gbnVsbHB0cjsgfQpAQCAtMjEwLDcgKzIxMiw3IEBAIHByaXZhdGU6CiAKICAgICBQQUw6OlNl
c3Npb25JRCBtX3Nlc3Npb25JRDsKICAgICBSZWZQdHI8V29ya2VyQ2FjaGVTdG9yYWdlQ29ubmVj
dGlvbj4gbV9jYWNoZVN0b3JhZ2VDb25uZWN0aW9uOwotCisgICAgc3RkOjp1bmlxdWVfcHRyPFdv
cmtlck1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyPiBtX21lc3NhZ2VQb3J0Q2hhbm5lbFByb3Zp
ZGVyOwogICAgIHVuc2lnbmVkIGxvbmcgbV91bmlxdWVJZGVudGlmaWVyIHsgMSB9OwogfTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVUlNZXNzYWdlUG9ydENoYW5uZWxQ
cm92aWRlci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9VSU1lc3NhZ2VQb3J0Q2hhbm5l
bFByb3ZpZGVyLmNwcAppbmRleCBmYjRjNjQ0YmUyYWRjNzdlNTU3YmYwZTI0Yzg2Y2Q5N2I1YTA5
ZWUwLi4yMDNjNmI2ODAzZTcxYjIzMTBlYzM5MmEwZDVkNDBjOGZlYmQ3OGY1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9VSU1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyLmNw
cAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9VSU1lc3NhZ2VQb3J0Q2hhbm5lbFByb3Zp
ZGVyLmNwcApAQCAtMjgsNyArMjgsNiBAQAogCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc01lc3NhZ2Vz
LmgiCiAjaW5jbHVkZSAiV2ViUHJvY2Vzc1Byb3h5LmgiCi0jaW5jbHVkZSA8d3RmL0NvbXBsZXRp
b25IYW5kbGVyLmg+CiAKIG5hbWVzcGFjZSBXZWJLaXQgewogdXNpbmcgbmFtZXNwYWNlIFdlYkNv
cmU7CkBAIC03MywxOSArNzIsMTkgQEAgdm9pZCBVSU1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVy
OjptZXNzYWdlUG9ydENsb3NlZChjb25zdCBNZXNzYWdlUG9ydElkZW50aWZpZXIKICAgICBBU1NF
UlRfTk9UX1JFQUNIRUQoKTsKIH0KIAotdm9pZCBVSU1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVy
Ojp0YWtlQWxsTWVzc2FnZXNGb3JQb3J0KGNvbnN0IE1lc3NhZ2VQb3J0SWRlbnRpZmllciYsIEZ1
bmN0aW9uPHZvaWQoVmVjdG9yPE1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzPiYmLCBGdW5jdGlvbjx2
b2lkKCk+JiYpPiYmKQordm9pZCBVSU1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyOjp0YWtlQWxs
TWVzc2FnZXNGb3JQb3J0KGNvbnN0IE1lc3NhZ2VQb3J0SWRlbnRpZmllciYsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoVmVjdG9yPE1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzPiYmLCBGdW5jdGlvbjx2
b2lkKCk+JiYpPiYmKQogewogICAgIC8vIFNob3VsZCBuZXZlciBiZSBjYWxsZWQgaW4gdGhlIFVJ
IHByb2Nlc3MgcHJvdmlkZXIuCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKLXZvaWQg
VUlNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlcjo6cG9zdE1lc3NhZ2VUb1JlbW90ZShNZXNzYWdl
V2l0aE1lc3NhZ2VQb3J0cyYmLCBjb25zdCBNZXNzYWdlUG9ydElkZW50aWZpZXImKQordm9pZCBV
SU1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyOjpwb3N0TWVzc2FnZVRvUmVtb3RlKGNvbnN0IE1l
c3NhZ2VXaXRoTWVzc2FnZVBvcnRzJiwgY29uc3QgTWVzc2FnZVBvcnRJZGVudGlmaWVyJikKIHsK
ICAgICAvLyBTaG91bGQgbmV2ZXIgYmUgY2FsbGVkIGluIHRoZSBVSSBwcm9jZXNzIHByb3ZpZGVy
LgogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCi12b2lkIFVJTWVzc2FnZVBvcnRDaGFu
bmVsUHJvdmlkZXI6OmNoZWNrUmVtb3RlUG9ydEZvckFjdGl2aXR5KGNvbnN0IE1lc3NhZ2VQb3J0
SWRlbnRpZmllciYsIEZ1bmN0aW9uPHZvaWQoSGFzQWN0aXZpdHkpPiYmKQordm9pZCBVSU1lc3Nh
Z2VQb3J0Q2hhbm5lbFByb3ZpZGVyOjpjaGVja1JlbW90ZVBvcnRGb3JBY3Rpdml0eShjb25zdCBN
ZXNzYWdlUG9ydElkZW50aWZpZXImLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEhhc0FjdGl2aXR5
KT4mJikKIHsKICAgICAvLyBTaG91bGQgbmV2ZXIgYmUgY2FsbGVkIGluIHRoZSBVSSBwcm9jZXNz
IHByb3ZpZGVyLgogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvVUlNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlci5oIGIvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvVUlNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlci5oCmluZGV4IDZj
MjY5NjA0YTI4Y2M0NTYzNWQ0YjM2YmUzNWFlNjZiMzEwNjQ5MjUuLmM2NzllM2ViMDIzNDA3ZjU1
MTMwNGM0YzU0NTU5N2VkMmVmZDM3MDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9j
ZXNzL1VJTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1VJ
UHJvY2Vzcy9VSU1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyLmgKQEAgLTQzLDkgKzQzLDkgQEAg
cHJpdmF0ZToKICAgICB2b2lkIGVudGFuZ2xlTG9jYWxQb3J0SW5UaGlzUHJvY2Vzc1RvUmVtb3Rl
KGNvbnN0IFdlYkNvcmU6Ok1lc3NhZ2VQb3J0SWRlbnRpZmllciYgbG9jYWwsIGNvbnN0IFdlYkNv
cmU6Ok1lc3NhZ2VQb3J0SWRlbnRpZmllciYgcmVtb3RlKSBmaW5hbDsKICAgICB2b2lkIG1lc3Nh
Z2VQb3J0RGlzZW50YW5nbGVkKGNvbnN0IFdlYkNvcmU6Ok1lc3NhZ2VQb3J0SWRlbnRpZmllciYg
bG9jYWwpIGZpbmFsOwogICAgIHZvaWQgbWVzc2FnZVBvcnRDbG9zZWQoY29uc3QgV2ViQ29yZTo6
TWVzc2FnZVBvcnRJZGVudGlmaWVyJiBsb2NhbCkgZmluYWw7Ci0gICAgdm9pZCB0YWtlQWxsTWVz
c2FnZXNGb3JQb3J0KGNvbnN0IFdlYkNvcmU6Ok1lc3NhZ2VQb3J0SWRlbnRpZmllciYsIEZ1bmN0
aW9uPHZvaWQoVmVjdG9yPFdlYkNvcmU6Ok1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzPiYmLCBGdW5j
dGlvbjx2b2lkKCk+JiYpPiYmKSBmaW5hbDsKLSAgICB2b2lkIHBvc3RNZXNzYWdlVG9SZW1vdGUo
V2ViQ29yZTo6TWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMmJiwgY29uc3QgV2ViQ29yZTo6TWVzc2Fn
ZVBvcnRJZGVudGlmaWVyJiByZW1vdGVUYXJnZXQpIGZpbmFsOwotICAgIHZvaWQgY2hlY2tSZW1v
dGVQb3J0Rm9yQWN0aXZpdHkoY29uc3QgV2ViQ29yZTo6TWVzc2FnZVBvcnRJZGVudGlmaWVyJiBy
ZW1vdGVUYXJnZXQsIEZ1bmN0aW9uPHZvaWQoSGFzQWN0aXZpdHkpPiYmIGNhbGxiYWNrKSBmaW5h
bDsKKyAgICB2b2lkIHRha2VBbGxNZXNzYWdlc0ZvclBvcnQoY29uc3QgV2ViQ29yZTo6TWVzc2Fn
ZVBvcnRJZGVudGlmaWVyJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8V2ViQ29yZTo6
TWVzc2FnZVdpdGhNZXNzYWdlUG9ydHM+JiYsIEZ1bmN0aW9uPHZvaWQoKT4mJik+JiYpIGZpbmFs
OworICAgIHZvaWQgcG9zdE1lc3NhZ2VUb1JlbW90ZShjb25zdCBXZWJDb3JlOjpNZXNzYWdlV2l0
aE1lc3NhZ2VQb3J0cyYsIGNvbnN0IFdlYkNvcmU6Ok1lc3NhZ2VQb3J0SWRlbnRpZmllciYgcmVt
b3RlVGFyZ2V0KSBmaW5hbDsKKyAgICB2b2lkIGNoZWNrUmVtb3RlUG9ydEZvckFjdGl2aXR5KGNv
bnN0IFdlYkNvcmU6Ok1lc3NhZ2VQb3J0SWRlbnRpZmllciYgcmVtb3RlVGFyZ2V0LCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKEhhc0FjdGl2aXR5KT4mJiBjYWxsYmFjaykgZmluYWw7CiAgICAgdm9p
ZCBjaGVja1Byb2Nlc3NMb2NhbFBvcnRGb3JBY3Rpdml0eShjb25zdCBXZWJDb3JlOjpNZXNzYWdl
UG9ydElkZW50aWZpZXImLCBXZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChIYXNBY3Rpdml0eSk+JiYpIGZpbmFsOwogCiAgICAgV2ViQ29yZTo6TWVzc2Fn
ZVBvcnRDaGFubmVsUmVnaXN0cnkgbV9yZWdpc3RyeTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJL
aXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRl
ci5jcHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViTWVzc2Fn
ZVBvcnRDaGFubmVsUHJvdmlkZXIuY3BwCmluZGV4IDZkMjg1NmEwNGVkYTI5MmY2ZjZhNjg3YzBl
MTZjMjEwMmE4MzE1NTEuLjhlNjIxNmE3NzE3ODA3ZWVjY2ZiN2Q0NTg0ODQ3ZDc1NmQ3OTQwYzMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJN
ZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYk1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyLmNwcApAQCAt
NzAsMTggKzcwLDE0IEBAIHZvaWQgV2ViTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXI6Om1lc3Nh
Z2VQb3J0Q2xvc2VkKGNvbnN0IE1lc3NhZ2VQb3J0SWRlbnRpZmllCiAgICAgV2ViUHJvY2Vzczo6
c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2Vi
UHJvY2Vzc1Byb3h5OjpNZXNzYWdlUG9ydENsb3NlZChwb3J0KSwgMCk7CiB9CiAKLXZvaWQgV2Vi
TWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXI6OnRha2VBbGxNZXNzYWdlc0ZvclBvcnQoY29uc3Qg
TWVzc2FnZVBvcnRJZGVudGlmaWVyJiBwb3J0LCBGdW5jdGlvbjx2b2lkKFZlY3RvcjxNZXNzYWdl
V2l0aE1lc3NhZ2VQb3J0cz4mJiwgRnVuY3Rpb248dm9pZCgpPiYmKT4mJiBjb21wbGV0aW9uSGFu
ZGxlcikKK3ZvaWQgV2ViTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXI6OnRha2VBbGxNZXNzYWdl
c0ZvclBvcnQoY29uc3QgTWVzc2FnZVBvcnRJZGVudGlmaWVyJiBwb3J0LCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKFZlY3RvcjxNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cz4mJiwgRnVuY3Rpb248dm9p
ZCgpPiYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKLSAgICBzdGF0aWMgc3RkOjphdG9taWM8
dWludDY0X3Q+IGN1cnJlbnRIYW5kbGVySWRlbnRpZmllcjsKKyAgICBBU1NFUlQoaXNNYWluVGhy
ZWFkKCkpOworICAgIHN0YXRpYyB1aW50NjRfdCBjdXJyZW50SGFuZGxlcklkZW50aWZpZXI7CiAg
ICAgdWludDY0X3QgaWRlbnRpZmllciA9ICsrY3VycmVudEhhbmRsZXJJZGVudGlmaWVyOwogCi0g
ICAgewotICAgICAgICBMb2NrZXI8TG9jaz4gbG9ja2VyKG1fdGFrZUFsbE1lc3NhZ2VzQ2FsbGJh
Y2tMb2NrKTsKLSAgICAgICAgYXV0byByZXN1bHQgPSBtX3Rha2VBbGxNZXNzYWdlc0NhbGxiYWNr
cy5lbnN1cmUoaWRlbnRpZmllciwgW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0
aW9uSGFuZGxlcildKCkgbXV0YWJsZSB7Ci0gICAgICAgICAgICByZXR1cm4gV1RGTW92ZShjb21w
bGV0aW9uSGFuZGxlcik7Ci0gICAgICAgIH0pOwotICAgICAgICBBU1NFUlRfVU5VU0VEKHJlc3Vs
dCwgcmVzdWx0LmlzTmV3RW50cnkpOwotICAgIH0KKyAgICBBU1NFUlQoIW1fdGFrZUFsbE1lc3Nh
Z2VzQ2FsbGJhY2tzLmNvbnRhaW5zKGlkZW50aWZpZXIpKTsKKyAgICBtX3Rha2VBbGxNZXNzYWdl
c0NhbGxiYWNrcy5hZGQoaWRlbnRpZmllciwgV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlcikpOwog
CiAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+
c2VuZChNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpUYWtlQWxsTWVzc2FnZXNGb3JQb3J0KHBv
cnQsIGlkZW50aWZpZXIpLCAwKTsKIH0KQEAgLTkwLDEwICs4Niw3IEBAIHZvaWQgV2ViTWVzc2Fn
ZVBvcnRDaGFubmVsUHJvdmlkZXI6OmRpZFRha2VBbGxNZXNzYWdlc0ZvclBvcnQoVmVjdG9yPE1l
c3NhZ2VXaXRoCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKIAotICAgIExvY2tlcjxM
b2NrPiBsb2NrZXIobV90YWtlQWxsTWVzc2FnZXNDYWxsYmFja0xvY2spOwogICAgIGF1dG8gY2Fs
bGJhY2sgPSBtX3Rha2VBbGxNZXNzYWdlc0NhbGxiYWNrcy50YWtlKG1lc3NhZ2VDYWxsYmFja0lk
ZW50aWZpZXIpOwotICAgIGxvY2tlci51bmxvY2tFYXJseSgpOwotCiAgICAgQVNTRVJUKGNhbGxi
YWNrKTsKICAgICBjYWxsYmFjayhXVEZNb3ZlKG1lc3NhZ2VzKSwgW21lc3NhZ2VCYXRjaElkZW50
aWZpZXJdIHsKICAgICAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nv
bm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpEaWREZWxpdmVyTWVz
c2FnZVBvcnRNZXNzYWdlcyhtZXNzYWdlQmF0Y2hJZGVudGlmaWVyKSwgMCk7CkBAIC0xMDQsMTcg
Kzk3LDE0IEBAIHZvaWQgV2ViTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXI6OmRpZENoZWNrUmVt
b3RlUG9ydEZvckFjdGl2aXR5KHVpbnQ2NF90IGNhbGxiCiB7CiAgICAgQVNTRVJUKGlzTWFpblRo
cmVhZCgpKTsKIAotICAgIExvY2tlcjxMb2NrPiBsb2NrZXIobV9yZW1vdGVBY3Rpdml0eUNhbGxi
YWNrTG9jayk7CiAgICAgYXV0byBjYWxsYmFjayA9IG1fcmVtb3RlQWN0aXZpdHlDYWxsYmFja3Mu
dGFrZShjYWxsYmFja0lkZW50aWZpZXIpOwotICAgIGxvY2tlci51bmxvY2tFYXJseSgpOwotCiAg
ICAgQVNTRVJUKGNhbGxiYWNrKTsKICAgICBjYWxsYmFjayhoYXNBY3Rpdml0eSA/IEhhc0FjdGl2
aXR5OjpZZXMgOiBIYXNBY3Rpdml0eTo6Tm8pOwogfQogCi12b2lkIFdlYk1lc3NhZ2VQb3J0Q2hh
bm5lbFByb3ZpZGVyOjpwb3N0TWVzc2FnZVRvUmVtb3RlKE1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRz
JiYgbWVzc2FnZSwgY29uc3QgTWVzc2FnZVBvcnRJZGVudGlmaWVyJiByZW1vdGVUYXJnZXQpCit2
b2lkIFdlYk1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyOjpwb3N0TWVzc2FnZVRvUmVtb3RlKGNv
bnN0IE1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzJiBtZXNzYWdlLCBjb25zdCBNZXNzYWdlUG9ydElk
ZW50aWZpZXImIHJlbW90ZVRhcmdldCkKIHsKLSAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5w
YXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6
OlBvc3RNZXNzYWdlVG9SZW1vdGUoV1RGTW92ZShtZXNzYWdlKSwgcmVtb3RlVGFyZ2V0KSwgMCk7
CisgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+
c2VuZChNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpQb3N0TWVzc2FnZVRvUmVtb3RlKG1lc3Nh
Z2UsIHJlbW90ZVRhcmdldCksIDApOwogfQogCiB2b2lkIFdlYk1lc3NhZ2VQb3J0Q2hhbm5lbFBy
b3ZpZGVyOjpjaGVja1Byb2Nlc3NMb2NhbFBvcnRGb3JBY3Rpdml0eShjb25zdCBNZXNzYWdlUG9y
dElkZW50aWZpZXImIGlkZW50aWZpZXIsIHVpbnQ2NF90IGNhbGxiYWNrSWRlbnRpZmllcikKQEAg
LTEyOCwxNiArMTE4LDE1IEBAIHZvaWQgV2ViTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXI6OmNo
ZWNrUHJvY2Vzc0xvY2FsUG9ydEZvckFjdGl2aXR5KGNvbnN0IE1lc3NhCiAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CiB9CiAKLXZvaWQgV2ViTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXI6OmNo
ZWNrUmVtb3RlUG9ydEZvckFjdGl2aXR5KGNvbnN0IE1lc3NhZ2VQb3J0SWRlbnRpZmllciYgcmVt
b3RlVGFyZ2V0LCBGdW5jdGlvbjx2b2lkKEhhc0FjdGl2aXR5KT4mJiBjb21wbGV0aW9uSGFuZGxl
cikKK3ZvaWQgV2ViTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXI6OmNoZWNrUmVtb3RlUG9ydEZv
ckFjdGl2aXR5KGNvbnN0IE1lc3NhZ2VQb3J0SWRlbnRpZmllciYgcmVtb3RlVGFyZ2V0LCBDb21w
bGV0aW9uSGFuZGxlcjx2b2lkKEhhc0FjdGl2aXR5KT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsK
LSAgICBzdGF0aWMgc3RkOjphdG9taWM8dWludDY0X3Q+IGN1cnJlbnRIYW5kbGVySWRlbnRpZmll
cjsKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOworCisgICAgc3RhdGljIHVpbnQ2NF90IGN1
cnJlbnRIYW5kbGVySWRlbnRpZmllcjsKICAgICB1aW50NjRfdCBpZGVudGlmaWVyID0gKytjdXJy
ZW50SGFuZGxlcklkZW50aWZpZXI7CiAKLSAgICB7Ci0gICAgICAgIExvY2tlcjxMb2NrPiBsb2Nr
ZXIobV9yZW1vdGVBY3Rpdml0eUNhbGxiYWNrTG9jayk7Ci0gICAgICAgIEFTU0VSVCghbV9yZW1v
dGVBY3Rpdml0eUNhbGxiYWNrcy5jb250YWlucyhpZGVudGlmaWVyKSk7Ci0gICAgICAgIG1fcmVt
b3RlQWN0aXZpdHlDYWxsYmFja3Muc2V0KGlkZW50aWZpZXIsIFdURk1vdmUoY29tcGxldGlvbkhh
bmRsZXIpKTsKLSAgICB9CisgICAgQVNTRVJUKCFtX3JlbW90ZUFjdGl2aXR5Q2FsbGJhY2tzLmNv
bnRhaW5zKGlkZW50aWZpZXIpKTsKKyAgICBtX3JlbW90ZUFjdGl2aXR5Q2FsbGJhY2tzLnNldChp
ZGVudGlmaWVyLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAKICAgICBXZWJQcm9jZXNz
OjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpX
ZWJQcm9jZXNzUHJveHk6OkNoZWNrUmVtb3RlUG9ydEZvckFjdGl2aXR5KHJlbW90ZVRhcmdldCwg
aWRlbnRpZmllciksIDApOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYk1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyLmggYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViTWVzc2FnZVBvcnRDaGFubmVsUHJv
dmlkZXIuaAppbmRleCA0YmIzN2ZkZDYwNzc3NGVkODA5YTk2N2E3NzUxNWZiYWZiNmVmNmExLi5k
MDUwNjg0ODFiNDkxNGZmYWFlYzgxMzRhZmViODc1MzVkZWI3YjZlIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViTWVzc2FnZVBvcnRDaGFubmVs
UHJvdmlkZXIuaAorKysgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQv
V2ViTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXIuaApAQCAtNDgsMTcgKzQ4LDE3IEBAIHByaXZh
dGU6CiAgICAgdm9pZCBlbnRhbmdsZUxvY2FsUG9ydEluVGhpc1Byb2Nlc3NUb1JlbW90ZShjb25z
dCBXZWJDb3JlOjpNZXNzYWdlUG9ydElkZW50aWZpZXImIGxvY2FsLCBjb25zdCBXZWJDb3JlOjpN
ZXNzYWdlUG9ydElkZW50aWZpZXImIHJlbW90ZSkgZmluYWw7CiAgICAgdm9pZCBtZXNzYWdlUG9y
dERpc2VudGFuZ2xlZChjb25zdCBXZWJDb3JlOjpNZXNzYWdlUG9ydElkZW50aWZpZXImIGxvY2Fs
KSBmaW5hbDsKICAgICB2b2lkIG1lc3NhZ2VQb3J0Q2xvc2VkKGNvbnN0IFdlYkNvcmU6Ok1lc3Nh
Z2VQb3J0SWRlbnRpZmllciYgbG9jYWwpIGZpbmFsOwotICAgIHZvaWQgdGFrZUFsbE1lc3NhZ2Vz
Rm9yUG9ydChjb25zdCBXZWJDb3JlOjpNZXNzYWdlUG9ydElkZW50aWZpZXImLCBGdW5jdGlvbjx2
b2lkKFZlY3RvcjxXZWJDb3JlOjpNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cz4mJiwgRnVuY3Rpb248
dm9pZCgpPiYmKT4mJikgZmluYWw7Ci0gICAgdm9pZCBwb3N0TWVzc2FnZVRvUmVtb3RlKFdlYkNv
cmU6Ok1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzJiYsIGNvbnN0IFdlYkNvcmU6Ok1lc3NhZ2VQb3J0
SWRlbnRpZmllciYgcmVtb3RlVGFyZ2V0KSBmaW5hbDsKKyAgICB2b2lkIHRha2VBbGxNZXNzYWdl
c0ZvclBvcnQoY29uc3QgV2ViQ29yZTo6TWVzc2FnZVBvcnRJZGVudGlmaWVyJiwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChWZWN0b3I8V2ViQ29yZTo6TWVzc2FnZVdpdGhNZXNzYWdlUG9ydHM+JiYs
IEZ1bmN0aW9uPHZvaWQoKT4mJik+JiYpIGZpbmFsOworICAgIHZvaWQgcG9zdE1lc3NhZ2VUb1Jl
bW90ZShjb25zdCBXZWJDb3JlOjpNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cyYsIGNvbnN0IFdlYkNv
cmU6Ok1lc3NhZ2VQb3J0SWRlbnRpZmllciYgcmVtb3RlVGFyZ2V0KSBmaW5hbDsKICAgICB2b2lk
IGNoZWNrUHJvY2Vzc0xvY2FsUG9ydEZvckFjdGl2aXR5KGNvbnN0IFdlYkNvcmU6Ok1lc3NhZ2VQ
b3J0SWRlbnRpZmllciYsIFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVyLCBDb21wbGV0aW9uSGFu
ZGxlcjx2b2lkKEhhc0FjdGl2aXR5KT4mJikgZmluYWw7CiAKICAgICAvLyBUbyBiZSBjYWxsZWQg
b25seSBpbiB0aGUgVUkgcHJvY2VzcwotICAgIHZvaWQgY2hlY2tSZW1vdGVQb3J0Rm9yQWN0aXZp
dHkoY29uc3QgV2ViQ29yZTo6TWVzc2FnZVBvcnRJZGVudGlmaWVyJiByZW1vdGVUYXJnZXQsIEZ1
bmN0aW9uPHZvaWQoSGFzQWN0aXZpdHkpPiYmIGNhbGxiYWNrKSBmaW5hbDsKKyAgICB2b2lkIGNo
ZWNrUmVtb3RlUG9ydEZvckFjdGl2aXR5KGNvbnN0IFdlYkNvcmU6Ok1lc3NhZ2VQb3J0SWRlbnRp
ZmllciYgcmVtb3RlVGFyZ2V0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEhhc0FjdGl2aXR5KT4m
JiBjYWxsYmFjaykgZmluYWw7CiAKICAgICBMb2NrIG1fdGFrZUFsbE1lc3NhZ2VzQ2FsbGJhY2tM
b2NrOwotICAgIEhhc2hNYXA8dWludDY0X3QsIEZ1bmN0aW9uPHZvaWQoVmVjdG9yPFdlYkNvcmU6
Ok1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzPiYmLCBGdW5jdGlvbjx2b2lkKCk+JiYpPj4gbV90YWtl
QWxsTWVzc2FnZXNDYWxsYmFja3M7CisgICAgSGFzaE1hcDx1aW50NjRfdCwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChWZWN0b3I8V2ViQ29yZTo6TWVzc2FnZVdpdGhNZXNzYWdlUG9ydHM+JiYsIEZ1
bmN0aW9uPHZvaWQoKT4mJik+PiBtX3Rha2VBbGxNZXNzYWdlc0NhbGxiYWNrczsKICAgICBMb2Nr
IG1fcmVtb3RlQWN0aXZpdHlDYWxsYmFja0xvY2s7Ci0gICAgSGFzaE1hcDx1aW50NjRfdCwgRnVu
Y3Rpb248dm9pZChIYXNBY3Rpdml0eSk+PiBtX3JlbW90ZUFjdGl2aXR5Q2FsbGJhY2tzOworICAg
IEhhc2hNYXA8dWludDY0X3QsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSGFzQWN0aXZpdHkpPj4g
bV9yZW1vdGVBY3Rpdml0eUNhbGxiYWNrczsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYktpdAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>377829</attachid>
            <date>2019-09-01 13:21:38 -0700</date>
            <delta_ts>2019-09-01 22:51:04 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-201333-20190901222137.patch</filename>
            <type>text/plain</type>
            <size>56557</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ5MzY3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTg1ZTMzMDgwYWQwYjI3
MGRhNGRkODZjMTlhNzkzYTRhZGQyNTZkNy4uZWVlZTU4MTAyMWI2ZDhhYzAxYWE3NGQ0ZmEzYWZl
OTk2MDQ2ZjY2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYyIEBACisyMDE5LTA5LTAxICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBJbnRyb2R1Y2UgV29ya2Vy
TWVzc2FnZVBvcnRDaGFubmVsUmVnaXN0cnkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIwMTMzMworCisgICAgICAgIFJldmlld2VkIGJ5IEFsZXggQ2hy
aXN0ZW5zZW4uCisKKyAgICAgICAgVGhpcyBwYXRjaCBpbnRyb2R1Y2VzIGEgZGVkaWNhdGVkIHJl
Z2lzdHJ5IGZvciB3b3JrZXJzLgorICAgICAgICBUaGlzIHJlZ2lzdHJ5IHdpbGwgaG9wIHRvIHRo
ZSBtYWluIHRocmVhZCBhbmQgdXNlIHRoZQorICAgICAgICByZWd1bGFyIG1haW4gdGhyZWFkIHJl
Z2lzdHJ5IHRvIGRvIHRoZSBhY3R1YWwgcHJvY2Vzc2luZy4KKworICAgICAgICBDb3ZlcmVkIGJ5
IGV4aXN0aW5nIHRlc3RzLgorCisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6bWVzc2FnZVBvcnRDaGFubmVsUHJvdmlk
ZXIpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5oOgorICAgICAgICAqIGRvbS9NZXNzYWdlQ2hh
bm5lbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZXNzYWdlQ2hhbm5lbDo6TWVzc2FnZUNoYW5u
ZWwpOgorICAgICAgICAqIGRvbS9NZXNzYWdlUG9ydC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpN
ZXNzYWdlUG9ydDo6ZW50YW5nbGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVzc2FnZVBvcnQ6OnBv
c3RNZXNzYWdlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lc3NhZ2VQb3J0OjpkaXNlbnRhbmdsZSk6
CisgICAgICAgIChXZWJDb3JlOjpNZXNzYWdlUG9ydDo6Y2xvc2UpOgorICAgICAgICAoV2ViQ29y
ZTo6TWVzc2FnZVBvcnQ6OmRpc3BhdGNoTWVzc2FnZXMpOgorICAgICAgICAoV2ViQ29yZTo6TWVz
c2FnZVBvcnQ6Omhhc1BlbmRpbmdBY3Rpdml0eSBjb25zdCk6CisgICAgICAgICogZG9tL21lc3Nh
Z2Vwb3J0cy9NZXNzYWdlUG9ydENoYW5uZWwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVzc2Fn
ZVBvcnRDaGFubmVsOjp0YWtlQWxsTWVzc2FnZXNGb3JQb3J0KToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lc3NhZ2VQb3J0Q2hhbm5lbDo6Y2hlY2tSZW1vdGVQb3J0Rm9yQWN0aXZpdHkpOgorICAgICAg
ICAqIGRvbS9tZXNzYWdlcG9ydHMvTWVzc2FnZVBvcnRDaGFubmVsLmg6CisgICAgICAgICogZG9t
L21lc3NhZ2Vwb3J0cy9NZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlcjo6c2luZ2xldG9uKToKKyAgICAgICAg
KFdlYkNvcmU6Ok1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyOjpmcm9tQ29udGV4dCk6CisgICAg
ICAgICogZG9tL21lc3NhZ2Vwb3J0cy9NZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlci5oOgorICAg
ICAgICAqIGRvbS9tZXNzYWdlcG9ydHMvTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXJJbXBsLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVySW1wbDo6dGFr
ZUFsbE1lc3NhZ2VzRm9yUG9ydCk6CisgICAgICAgIChXZWJDb3JlOjpNZXNzYWdlUG9ydENoYW5u
ZWxQcm92aWRlckltcGw6OmNoZWNrUmVtb3RlUG9ydEZvckFjdGl2aXR5KToKKyAgICAgICAgKiBk
b20vbWVzc2FnZXBvcnRzL01lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVySW1wbC5oOgorICAgICAg
ICAqIGRvbS9tZXNzYWdlcG9ydHMvTWVzc2FnZVBvcnRDaGFubmVsUmVnaXN0cnkuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6TWVzc2FnZVBvcnRDaGFubmVsUmVnaXN0cnk6OnRha2VBbGxNZXNzYWdl
c0ZvclBvcnQpOgorICAgICAgICAoV2ViQ29yZTo6TWVzc2FnZVBvcnRDaGFubmVsUmVnaXN0cnk6
OmNoZWNrUmVtb3RlUG9ydEZvckFjdGl2aXR5KToKKyAgICAgICAgKiBkb20vbWVzc2FnZXBvcnRz
L01lc3NhZ2VQb3J0Q2hhbm5lbFJlZ2lzdHJ5Lmg6CisgICAgICAgICogZG9tL21lc3NhZ2Vwb3J0
cy9Xb3JrZXJNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlci5jcHA6IEFkZGVkLgorICAgICAgICAo
V2ViQ29yZTo6V29ya2VyTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXI6Oldvcmtlck1lc3NhZ2VQ
b3J0Q2hhbm5lbFByb3ZpZGVyKToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlck1lc3NhZ2VQb3J0
Q2hhbm5lbFByb3ZpZGVyOjp+V29ya2VyTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6V29ya2VyTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXI6OmNyZWF0ZU5l
d01lc3NhZ2VQb3J0Q2hhbm5lbCk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJNZXNzYWdlUG9y
dENoYW5uZWxQcm92aWRlcjo6ZW50YW5nbGVMb2NhbFBvcnRJblRoaXNQcm9jZXNzVG9SZW1vdGUp
OgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXI6Om1l
c3NhZ2VQb3J0RGlzZW50YW5nbGVkKToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlck1lc3NhZ2VQ
b3J0Q2hhbm5lbFByb3ZpZGVyOjptZXNzYWdlUG9ydENsb3NlZCk6CisgICAgICAgIChXZWJDb3Jl
OjpXb3JrZXJNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlcjo6cG9zdE1lc3NhZ2VUb1JlbW90ZSk6
CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlcjo6dGFr
ZUFsbE1lc3NhZ2VzRm9yUG9ydCk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJNZXNzYWdlUG9y
dENoYW5uZWxQcm92aWRlcjo6Y2hlY2tSZW1vdGVQb3J0Rm9yQWN0aXZpdHkpOgorICAgICAgICAo
V2ViQ29yZTo6V29ya2VyTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXI6OmNoZWNrUHJvY2Vzc0xv
Y2FsUG9ydEZvckFjdGl2aXR5KToKKyAgICAgICAgKiBkb20vbWVzc2FnZXBvcnRzL1dvcmtlck1l
c3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyLmg6IEFkZGVkLgorICAgICAgICAqIHdvcmtlcnMvV29y
a2VyR2xvYmFsU2NvcGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyR2xvYmFsU2NvcGU6
Om1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyKToKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlckds
b2JhbFNjb3BlLmg6CisKIDIwMTktMDktMDEgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2Fib3VoYWxs
YXdhQGFwcGxlLmNvbT4KIAogICAgICAgICBIVE1MSW1hZ2VFbGVtZW50OjpkZWNvZGUoKSBzaG91
bGQgcmV0dXJuIGEgcmVzb2x2ZWQgcHJvbWlzZSBmb3IgZGVjb2Rpbmcgbm9uIGJpdG1hcCBpbWFn
ZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cKaW5kZXggMTM5NWI1ZGIwMjQyYTMxOTgwZjIzNmQ3MmUzOTMzNGRlZjMzYzhmYi4u
YjQ4MDZlZWM0MWNlMTNjZDllMmQ0ODdmMDRhNzFhZDM1YzcwOWE4MiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNSBAQAorMjAxOS0wOS0wMSAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+
CisKKyAgICAgICAgSW50cm9kdWNlIFdvcmtlck1lc3NhZ2VQb3J0Q2hhbm5lbFJlZ2lzdHJ5Cisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDEzMzMKKwor
ICAgICAgICBSZXZpZXdlZCBieSBBbGV4IENocmlzdGVuc2VuLgorCisgICAgICAgIEJ5IGludHJv
ZHVjaW5nIFdvcmtlck1lc3NhZ2VQb3J0Q2hhbm5lbFJlZ2lzdHJ5LCB3ZSBhcmUgbWFraW5nCisg
ICAgICAgIHN1cmUgVUlNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlciBpcyBvbmx5IGNhbGxlZCBm
cm9tIHRoZSBtYWluIHRocmVhZC4KKyAgICAgICAgVGhpcyB3aWxsIGhlbHAgd2hlbiBtb3Zpbmcg
dGhlIHJlZ2lzdHJ5IHRvIG5ldHdvcmsgcHJvY2Vzcy4KKworICAgICAgICAqIFVJUHJvY2Vzcy9V
SU1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6VUlNZXNz
YWdlUG9ydENoYW5uZWxQcm92aWRlcjo6dGFrZUFsbE1lc3NhZ2VzRm9yUG9ydCk6CisgICAgICAg
IChXZWJLaXQ6OlVJTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXI6OmNoZWNrUmVtb3RlUG9ydEZv
ckFjdGl2aXR5KToKKyAgICAgICAgKiBVSVByb2Nlc3MvVUlNZXNzYWdlUG9ydENoYW5uZWxQcm92
aWRlci5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViTWVzc2FnZVBv
cnRDaGFubmVsUHJvdmlkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJNZXNzYWdlUG9ydENo
YW5uZWxQcm92aWRlcjo6dGFrZUFsbE1lc3NhZ2VzRm9yUG9ydCk6CisgICAgICAgIChXZWJLaXQ6
OldlYk1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyOjpkaWRUYWtlQWxsTWVzc2FnZXNGb3JQb3J0
KToKKyAgICAgICAgKFdlYktpdDo6V2ViTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXI6OmRpZENo
ZWNrUmVtb3RlUG9ydEZvckFjdGl2aXR5KToKKyAgICAgICAgKFdlYktpdDo6V2ViTWVzc2FnZVBv
cnRDaGFubmVsUHJvdmlkZXI6OmNoZWNrUmVtb3RlUG9ydEZvckFjdGl2aXR5KToKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYk1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVy
Lmg6CisKIDIwMTktMDktMDEgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAg
ICAgICAgIEFic3RyYWN0IG91dCBMaWJXZWJSVENTb2NrZXRDbGllbnQgc28gdGhhdCBydGMgc29j
a2V0cyBjYW4gYmUgaW1wbGVtZW50ZWQgd2l0aG91dCBsaWJ3ZWJydGMgc29ja2V0cwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2Vz
LnR4dAppbmRleCAyMThhMGE1MGZiNTQ0MzkyMGIxNDllZmYzODEwMTQ2OTU1ZDZjMzE3Li5kNDA1
ODE3OGM5ODdlMGU4ZjgxM2YyMmQ4ZDE1YzFhNjY5Y2Q1YmRkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dApAQCAt
OTcyLDYgKzk3Miw3IEBAIGRvbS9tZXNzYWdlcG9ydHMvTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlk
ZXIuY3BwCiBkb20vbWVzc2FnZXBvcnRzL01lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVySW1wbC5j
cHAKIGRvbS9tZXNzYWdlcG9ydHMvTWVzc2FnZVBvcnRDaGFubmVsUmVnaXN0cnkuY3BwCiBkb20v
bWVzc2FnZXBvcnRzL01lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzLmNwcAorZG9tL21lc3NhZ2Vwb3J0
cy9Xb3JrZXJNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlci5jcHAKIAogZG9taml0L0RPTUpJVEhl
bHBlcnMuY3BwCiBkb21qaXQvSlNEb2N1bWVudERPTUpJVC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBlOTQ4YzUzMTdiODI1
YzA5NjkzMGM4MDk0MDYzZTc3ODA2OWRhM2FkLi4wZjBkNTg4ZDc4ODAwODljNjg1Y2JmOTBiZTc1
ZmY2MzhkZjZmMzU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCkBAIC03MTY2LDYgKzcxNjYsOCBAQAogCQk0MTEwM0FBOTFFMzk3OTBB
MDA3NjlGMTQgLyogUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlQ29jb2EuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlQ29jb2Eu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDExMDNBQUExRTM5NzkwQTAwNzY5RjAz
IC8qIFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2UuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk0MTEwM0FBQTFFMzk3OTBBMDA3NjlGMTQgLyogUmVhbHRp
bWVJbmNvbWluZ0F1ZGlvU291cmNlQ29jb2EuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlQ29jb2EuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk0MTExNEE3QTIzMTdCMzlFMDBCNTYwMDcgLyogV29ya2Vy
TWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV29ya2VyTWVzc2Fn
ZVBvcnRDaGFubmVsUHJvdmlkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDEx
MTRBN0MyMzE3QjM5RTAwQjU2MDA3IC8qIFdvcmtlck1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVy
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdvcmtlck1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVy
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDExMkI1M0YxRjlGOUM5QjAwRTY3
ODc1IC8qIFNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNDExMkI1NDExRjlGOUM5QzAwRTY3ODc1IC8qIFNlcnZpY2VXb3JrZXJUaHJl
YWRQcm94eS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTZXJ2aWNl
V29ya2VyVGhyZWFkUHJveHkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTE4
OUVGNzFBRDgyMzI4MDBCOTBBMEQgLyogUmVhZGFibGVTdHJlYW1EZWZhdWx0Q29udHJvbGxlci5p
ZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gUmVhZGFibGVTdHJlYW1EZWZhdWx0Q29udHJvbGxl
ci5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xODg0Miw2ICsxODg0NCw4IEBA
CiAJCQkJNTFFQ0MzRjEyMDA1ODdCNTAwNDgzRUFFIC8qIE1lc3NhZ2VQb3J0Q2hhbm5lbFJlZ2lz
dHJ5LmggKi8sCiAJCQkJNTFBNzQ4RTEyMDA1RDBFMDAwNzVCQTY4IC8qIE1lc3NhZ2VXaXRoTWVz
c2FnZVBvcnRzLmNwcCAqLywKIAkJCQk1MUE3NDhFMDIwMDVEMEUwMDA3NUJBNjggLyogTWVzc2Fn
ZVdpdGhNZXNzYWdlUG9ydHMuaCAqLywKKwkJCQk0MTExNEE3QzIzMTdCMzlFMDBCNTYwMDcgLyog
V29ya2VyTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXIuY3BwICovLAorCQkJCTQxMTE0QTdBMjMx
N0IzOUUwMEI1NjAwNyAvKiBXb3JrZXJNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlci5oICovLAog
CQkJKTsKIAkJCXBhdGggPSBtZXNzYWdlcG9ydHM7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4i
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXggNTk2ZjA3NTBjMTBkNjYyMGMzN2YxYTQwMmNi
MTMyNDdkOTI4M2UwYi4uYzg2YWE5OWZlNjY1ZmRkNDRhMDgxN2NkODAzYmEwNzYyM2U5NDYzMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC04MjgyLDQgKzgyODIsOSBAQCB2b2lkIERvY3Vt
ZW50OjpzZXRBcHBsZVBheUlzQWN0aXZlKCkKIAogI2VuZGlmCiAKK01lc3NhZ2VQb3J0Q2hhbm5l
bFByb3ZpZGVyJiBEb2N1bWVudDo6bWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXIoKQoreworICAg
IHJldHVybiBNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlcjo6c2luZ2xldG9uKCk7Cit9CisKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKaW5kZXggMTYxMmU0MjBlY2Ex
MWM0ZGFkMTM1Y2Q5MTBmZTQ1NzZlZmU3MmFlZC4uODljNWM2ZDJmMjIwOTc3NTBmNmNjOGM5MTM5
NDQ3ZDJkY2VhNDhhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKQEAgLTE1Nyw2ICsxNTcsNyBAQCBj
bGFzcyBNZWRpYVBsYXliYWNrVGFyZ2V0OwogY2xhc3MgTWVkaWFQbGF5YmFja1RhcmdldENsaWVu
dDsKIGNsYXNzIE1lZGlhUXVlcnlMaXN0OwogY2xhc3MgTWVkaWFRdWVyeU1hdGNoZXI7CitjbGFz
cyBNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlcjsKIGNsYXNzIE1vdXNlRXZlbnRXaXRoSGl0VGVz
dFJlc3VsdHM7CiBjbGFzcyBOb2RlRmlsdGVyOwogY2xhc3MgTm9kZUl0ZXJhdG9yOwpAQCAtMTUy
OSw2ICsxNTMwLDggQEAgcHVibGljOgogICAgIGJvb2wgaW5IaXRUZXN0aW5nKCkgY29uc3QgeyBy
ZXR1cm4gbV9pbkhpdFRlc3Rpbmc7IH0KICNlbmRpZgogCisgICAgTWVzc2FnZVBvcnRDaGFubmVs
UHJvdmlkZXImIG1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyKCk7CisKIHByb3RlY3RlZDoKICAg
ICBlbnVtIENvbnN0cnVjdGlvbkZsYWdzIHsgU3ludGhlc2l6ZWQgPSAxLCBOb25SZW5kZXJlZFBs
YWNlaG9sZGVyID0gMSA8PCAxIH07CiAgICAgRG9jdW1lbnQoUEFMOjpTZXNzaW9uSUQsIEZyYW1l
KiwgY29uc3QgVVJMJiwgdW5zaWduZWQgPSBEZWZhdWx0RG9jdW1lbnRDbGFzcywgdW5zaWduZWQg
Y29uc3RydWN0aW9uRmxhZ3MgPSAwKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9N
ZXNzYWdlQ2hhbm5lbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZUNoYW5uZWwuY3Bw
CmluZGV4IDE3NGY1YTM3ZGU4Yzk3YjBhMWJmYjVmMmU4ZDBhZjBkNWQ1YTI1YzkuLjc4MTc2M2E5
OTkwYjMxZGVlMDBjNGQzZjEwZDgxODUwMjljMGM3MGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9NZXNzYWdlQ2hhbm5lbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL01lc3Nh
Z2VDaGFubmVsLmNwcApAQCAtNDksNyArNDksNyBAQCBNZXNzYWdlQ2hhbm5lbDo6TWVzc2FnZUNo
YW5uZWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkKICAgICBpZiAoIWNvbnRleHQu
YWN0aXZlRE9NT2JqZWN0c0FyZVN0b3BwZWQoKSkgewogICAgICAgICBBU1NFUlQoIW1fcG9ydDEt
PmNsb3NlZCgpKTsKICAgICAgICAgQVNTRVJUKCFtX3BvcnQyLT5jbG9zZWQoKSk7Ci0gICAgICAg
IE1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyOjpzaW5nbGV0b24oKS5jcmVhdGVOZXdNZXNzYWdl
UG9ydENoYW5uZWwoaWQxLCBpZDIpOworICAgICAgICBNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRl
cjo6ZnJvbUNvbnRleHQoY29udGV4dCkuY3JlYXRlTmV3TWVzc2FnZVBvcnRDaGFubmVsKGlkMSwg
aWQyKTsKICAgICB9IGVsc2UgewogICAgICAgICBBU1NFUlQobV9wb3J0MS0+Y2xvc2VkKCkpOwog
ICAgICAgICBBU1NFUlQobV9wb3J0Mi0+Y2xvc2VkKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL01lc3NhZ2VQb3J0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlUG9y
dC5jcHAKaW5kZXggNTE0MzA0YzkwNjQxNjdiOTRiMTAxMWNlOGM4MTk0ZDc0YzAxNzdhNy4uNjZh
ZjU4NGU5YWU2NDhkZGFiZWRhN2U3Y2E4OWQ2ODU4MzYyZGY1NCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZG9tL01lc3NhZ2VQb3J0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTWVz
c2FnZVBvcnQuY3BwCkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSAiV29ya2VyVGhyZWFkLmgi
CiAjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CiAjaW5jbHVkZSA8d3RmL0lzb01h
bGxvY0lubGluZXMuaD4KKyNpbmNsdWRlIDx3dGYvU2NvcGUuaD4KIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCkBAIC0xMjQsNyArMTI1LDcgQEAgTWVzc2FnZVBvcnQ6On5NZXNzYWdlUG9ydCgpCiAK
IHZvaWQgTWVzc2FnZVBvcnQ6OmVudGFuZ2xlKCkKIHsKLSAgICBNZXNzYWdlUG9ydENoYW5uZWxQ
cm92aWRlcjo6c2luZ2xldG9uKCkuZW50YW5nbGVMb2NhbFBvcnRJblRoaXNQcm9jZXNzVG9SZW1v
dGUobV9pZGVudGlmaWVyLCBtX3JlbW90ZUlkZW50aWZpZXIpOworICAgIE1lc3NhZ2VQb3J0Q2hh
bm5lbFByb3ZpZGVyOjpmcm9tQ29udGV4dCgqbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KS5lbnRh
bmdsZUxvY2FsUG9ydEluVGhpc1Byb2Nlc3NUb1JlbW90ZShtX2lkZW50aWZpZXIsIG1fcmVtb3Rl
SWRlbnRpZmllcik7CiB9CiAKIEV4Y2VwdGlvbk9yPHZvaWQ+IE1lc3NhZ2VQb3J0Ojpwb3N0TWVz
c2FnZShKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIEpTQzo6SlNWYWx1ZSBtZXNzYWdlVmFsdWUsIFZl
Y3RvcjxKU0M6OlN0cm9uZzxKU0M6OkpTT2JqZWN0Pj4mJiB0cmFuc2ZlcikKQEAgLTE2MCw3ICsx
NjEsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBNZXNzYWdlUG9ydDo6cG9zdE1lc3NhZ2UoSlNDOjpF
eGVjU3RhdGUmIHN0YXRlLCBKU0M6OkpTVmFsdWUgbQogCiAgICAgTE9HKE1lc3NhZ2VQb3J0cywg
IkFjdHVhbGx5IHBvc3RpbmcgbWVzc2FnZSB0byBwb3J0ICVzICh0byBiZSByZWNlaXZlZCBieSBw
b3J0ICVzKSIsIG1faWRlbnRpZmllci5sb2dTdHJpbmcoKS51dGY4KCkuZGF0YSgpLCBtX3JlbW90
ZUlkZW50aWZpZXIubG9nU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAKLSAgICBNZXNzYWdlUG9y
dENoYW5uZWxQcm92aWRlcjo6c2luZ2xldG9uKCkucG9zdE1lc3NhZ2VUb1JlbW90ZShXVEZNb3Zl
KG1lc3NhZ2UpLCBtX3JlbW90ZUlkZW50aWZpZXIpOworICAgIE1lc3NhZ2VQb3J0Q2hhbm5lbFBy
b3ZpZGVyOjpmcm9tQ29udGV4dCgqbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KS5wb3N0TWVzc2Fn
ZVRvUmVtb3RlKG1lc3NhZ2UsIG1fcmVtb3RlSWRlbnRpZmllcik7CiAgICAgcmV0dXJuIHsgfTsK
IH0KIApAQCAtMTcxLDEwICsxNzIsOSBAQCB2b2lkIE1lc3NhZ2VQb3J0OjpkaXNlbnRhbmdsZSgp
CiAKICAgICByZWdpc3RlckxvY2FsQWN0aXZpdHkoKTsKIAotICAgIE1lc3NhZ2VQb3J0Q2hhbm5l
bFByb3ZpZGVyOjpzaW5nbGV0b24oKS5tZXNzYWdlUG9ydERpc2VudGFuZ2xlZChtX2lkZW50aWZp
ZXIpOworICAgIE1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyOjpmcm9tQ29udGV4dCgqbV9zY3Jp
cHRFeGVjdXRpb25Db250ZXh0KS5tZXNzYWdlUG9ydERpc2VudGFuZ2xlZChtX2lkZW50aWZpZXIp
OwogCiAgICAgLy8gV2UgY2FuJ3QgcmVjZWl2ZSBhbnkgbWVzc2FnZXMgb3IgZ2VuZXJhdGUgYW55
IGV2ZW50cyBhZnRlciB0aGlzLCBzbyByZW1vdmUgb3Vyc2VsdmVzIGZyb20gdGhlIGxpc3Qgb2Yg
YWN0aXZlIHBvcnRzLgotICAgIEFTU0VSVChtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOwogICAg
IG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+ZGVzdHJveWVkTWVzc2FnZVBvcnQoKnRoaXMpOwog
ICAgIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+d2lsbERlc3Ryb3lBY3RpdmVET01PYmplY3Qo
KnRoaXMpOwogICAgIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+d2lsbERlc3Ryb3lEZXN0cnVj
dGlvbk9ic2VydmVyKCp0aGlzKTsKQEAgLTIyNSw3ICsyMjUsNyBAQCB2b2lkIE1lc3NhZ2VQb3J0
OjpjbG9zZSgpCiAgICAgICAgIHJldHVybjsKICAgICBtX2Nsb3NlZCA9IHRydWU7CiAKLSAgICBN
ZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlcjo6c2luZ2xldG9uKCkubWVzc2FnZVBvcnRDbG9zZWQo
bV9pZGVudGlmaWVyKTsKKyAgICBNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlcjo6ZnJvbUNvbnRl
eHQoKm1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkubWVzc2FnZVBvcnRDbG9zZWQobV9pZGVudGlm
aWVyKTsKICAgICByZW1vdmVBbGxFdmVudExpc3RlbmVycygpOwogfQogCkBAIC0yNDYsNTAgKzI0
NiwzMyBAQCB2b2lkIE1lc3NhZ2VQb3J0OjpkaXNwYXRjaE1lc3NhZ2VzKCkKICAgICBpZiAoIW1f
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCB8fCBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmFjdGl2
ZURPTU9iamVjdHNBcmVTdXNwZW5kZWQoKSB8fCAhaXNFbnRhbmdsZWQoKSkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgUmVmUHRyPFdvcmtlclRocmVhZD4gd29ya2VyVGhyZWFkOwotICAgIGlmIChp
czxXb3JrZXJHbG9iYWxTY29wZT4oKm1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkpCi0gICAgICAg
IHdvcmtlclRocmVhZCA9ICZkb3duY2FzdDxXb3JrZXJHbG9iYWxTY29wZT4oKm1fc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCkudGhyZWFkKCk7CisgICAgYXV0byBtZXNzYWdlc1Rha2VuSGFuZGxlciA9
IFt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpXShWZWN0b3I8TWVzc2FnZVdpdGhN
ZXNzYWdlUG9ydHM+JiYgbWVzc2FnZXMsIEZ1bmN0aW9uPHZvaWQoKT4mJiBjb21wbGV0aW9uQ2Fs
bGJhY2spIG11dGFibGUgeworICAgICAgICBhdXRvIHNjb3BlRXhpdCA9IG1ha2VTY29wZUV4aXQo
V1RGTW92ZShjb21wbGV0aW9uQ2FsbGJhY2spKTsKIAotICAgIGF1dG8gbWVzc2FnZXNUYWtlbkhh
bmRsZXIgPSBbdGhpcywgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKSwgd29ya2VyVGhyZWFk
ID0gV1RGTW92ZSh3b3JrZXJUaHJlYWQpXShWZWN0b3I8TWVzc2FnZVdpdGhNZXNzYWdlUG9ydHM+
JiYgbWVzc2FnZXMsIEZ1bmN0aW9uPHZvaWQoKT4mJiBjb21wbGV0aW9uQ2FsbGJhY2spIG11dGFi
bGUgewotICAgICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotICAgICAgICBhdXRvIGlubmVy
SGFuZGxlciA9IFt0aGlzLCB3ZWFrVGhpcyA9IFdURk1vdmUod2Vha1RoaXMpXShhdXRvJiYgbWVz
c2FnZXMpIHsKLSAgICAgICAgICAgIGlmICghd2Vha1RoaXMpCi0gICAgICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICBpZiAoIXdlYWtUaGlzKQorICAgICAgICAgICAgcmV0dXJuOwogCi0gICAg
ICAgICAgICBMT0coTWVzc2FnZVBvcnRzLCAiTWVzc2FnZVBvcnQgJXMgKCVwKSBkaXNwYXRjaGlu
ZyAlenUgbWVzc2FnZXMiLCBtX2lkZW50aWZpZXIubG9nU3RyaW5nKCkudXRmOCgpLmRhdGEoKSwg
dGhpcywgbWVzc2FnZXMuc2l6ZSgpKTsKKyAgICAgICAgTE9HKE1lc3NhZ2VQb3J0cywgIk1lc3Nh
Z2VQb3J0ICVzICglcCkgZGlzcGF0Y2hpbmcgJXp1IG1lc3NhZ2VzIiwgbV9pZGVudGlmaWVyLmxv
Z1N0cmluZygpLnV0ZjgoKS5kYXRhKCksIHRoaXMsIG1lc3NhZ2VzLnNpemUoKSk7CiAKLSAgICAg
ICAgICAgIGlmICghbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KQotICAgICAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgaWYgKCFtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQpCisgICAgICAgICAg
ICByZXR1cm47CiAKLSAgICAgICAgICAgIGlmICghbWVzc2FnZXMuaXNFbXB0eSgpKQotICAgICAg
ICAgICAgICAgIHJlZ2lzdGVyTG9jYWxBY3Rpdml0eSgpOworICAgICAgICBpZiAoIW1lc3NhZ2Vz
LmlzRW1wdHkoKSkKKyAgICAgICAgICAgIHJlZ2lzdGVyTG9jYWxBY3Rpdml0eSgpOwogCi0gICAg
ICAgICAgICBBU1NFUlQobV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5pc0NvbnRleHRUaHJlYWQo
KSk7CisgICAgICAgIEFTU0VSVChtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmlzQ29udGV4dFRo
cmVhZCgpKTsKIAotICAgICAgICAgICAgYm9vbCBjb250ZXh0SXNXb3JrZXIgPSBpczxXb3JrZXJH
bG9iYWxTY29wZT4oKm1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCk7Ci0gICAgICAgICAgICBmb3Ig
KGF1dG8mIG1lc3NhZ2UgOiBtZXNzYWdlcykgewotICAgICAgICAgICAgICAgIC8vIGNsb3NlKCkg
aW4gV29ya2VyIG9ubWVzc2FnZSBoYW5kbGVyIHNob3VsZCBwcmV2ZW50IG5leHQgbWVzc2FnZSBm
cm9tIGRpc3BhdGNoaW5nLgotICAgICAgICAgICAgICAgIGlmIChjb250ZXh0SXNXb3JrZXIgJiYg
ZG93bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+KCptX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQpLmlz
Q2xvc2luZygpKQotICAgICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICAgICAg
YXV0byBwb3J0cyA9IE1lc3NhZ2VQb3J0OjplbnRhbmdsZVBvcnRzKCptX3NjcmlwdEV4ZWN1dGlv
bkNvbnRleHQsIFdURk1vdmUobWVzc2FnZS50cmFuc2ZlcnJlZFBvcnRzKSk7Ci0gICAgICAgICAg
ICAgICAgZGlzcGF0Y2hFdmVudChNZXNzYWdlRXZlbnQ6OmNyZWF0ZShXVEZNb3ZlKHBvcnRzKSwg
bWVzc2FnZS5tZXNzYWdlLnJlbGVhc2VOb25OdWxsKCkpKTsKLSAgICAgICAgICAgIH0KLSAgICAg
ICAgfTsKLQotICAgICAgICBpZiAoIXdvcmtlclRocmVhZCkgewotICAgICAgICAgICAgaW5uZXJI
YW5kbGVyKFdURk1vdmUobWVzc2FnZXMpKTsKLSAgICAgICAgICAgIGNvbXBsZXRpb25DYWxsYmFj
aygpOwotICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBib29sIGNvbnRleHRJc1dvcmtlciA9
IGlzPFdvcmtlckdsb2JhbFNjb3BlPigqbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KTsKKyAgICAg
ICAgZm9yIChhdXRvJiBtZXNzYWdlIDogbWVzc2FnZXMpIHsKKyAgICAgICAgICAgIC8vIGNsb3Nl
KCkgaW4gV29ya2VyIG9ubWVzc2FnZSBoYW5kbGVyIHNob3VsZCBwcmV2ZW50IG5leHQgbWVzc2Fn
ZSBmcm9tIGRpc3BhdGNoaW5nLgorICAgICAgICAgICAgaWYgKGNvbnRleHRJc1dvcmtlciAmJiBk
b3duY2FzdDxXb3JrZXJHbG9iYWxTY29wZT4oKm1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkuaXND
bG9zaW5nKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgYXV0byBwb3J0
cyA9IE1lc3NhZ2VQb3J0OjplbnRhbmdsZVBvcnRzKCptX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQs
IFdURk1vdmUobWVzc2FnZS50cmFuc2ZlcnJlZFBvcnRzKSk7CisgICAgICAgICAgICBkaXNwYXRj
aEV2ZW50KE1lc3NhZ2VFdmVudDo6Y3JlYXRlKFdURk1vdmUocG9ydHMpLCBtZXNzYWdlLm1lc3Nh
Z2UucmVsZWFzZU5vbk51bGwoKSkpOwogICAgICAgICB9Ci0gICAgICAgIHdvcmtlclRocmVhZC0+
cnVuTG9vcCgpLnBvc3RUYXNrRm9yTW9kZShbaW5uZXJIYW5kbGVyID0gV1RGTW92ZShpbm5lckhh
bmRsZXIpLCBtZXNzYWdlcyA9IFdURk1vdmUobWVzc2FnZXMpLCBjb21wbGV0aW9uQ2FsbGJhY2sg
PSBXVEZNb3ZlKGNvbXBsZXRpb25DYWxsYmFjayldKGF1dG8mKSBtdXRhYmxlIHsKLSAgICAgICAg
ICAgIGlubmVySGFuZGxlcihXVEZNb3ZlKG1lc3NhZ2VzKSk7Ci0gICAgICAgICAgICBjYWxsT25N
YWluVGhyZWFkKFtjb21wbGV0aW9uQ2FsbGJhY2sgPSBXVEZNb3ZlKGNvbXBsZXRpb25DYWxsYmFj
ayldIHsKLSAgICAgICAgICAgICAgICBjb21wbGV0aW9uQ2FsbGJhY2soKTsKLSAgICAgICAgICAg
IH0pOwotICAgICAgICB9LCBXb3JrZXJSdW5Mb29wOjpkZWZhdWx0TW9kZSgpKTsKICAgICB9Owog
Ci0gICAgTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXI6OnNpbmdsZXRvbigpLnRha2VBbGxNZXNz
YWdlc0ZvclBvcnQobV9pZGVudGlmaWVyLCBXVEZNb3ZlKG1lc3NhZ2VzVGFrZW5IYW5kbGVyKSk7
CisgICAgTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXI6OmZyb21Db250ZXh0KCptX3NjcmlwdEV4
ZWN1dGlvbkNvbnRleHQpLnRha2VBbGxNZXNzYWdlc0ZvclBvcnQobV9pZGVudGlmaWVyLCBXVEZN
b3ZlKG1lc3NhZ2VzVGFrZW5IYW5kbGVyKSk7CiB9CiAKIHZvaWQgTWVzc2FnZVBvcnQ6OnVwZGF0
ZUFjdGl2aXR5KE1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyOjpIYXNBY3Rpdml0eSBoYXNBY3Rp
dml0eSkKQEAgLTMyOCwxOSArMzExLDE5IEBAIGJvb2wgTWVzc2FnZVBvcnQ6Omhhc1BlbmRpbmdB
Y3Rpdml0eSgpIGNvbnN0CiAgICAgICAgIGlmIChpczxXb3JrZXJHbG9iYWxTY29wZT4oKm1fc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCkpCiAgICAgICAgICAgICB3b3JrZXJUaHJlYWQgPSAmZG93bmNh
c3Q8V29ya2VyR2xvYmFsU2NvcGU+KCptX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQpLnRocmVhZCgp
OwogCi0gICAgICAgIE1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyOjpzaW5nbGV0b24oKS5jaGVj
a1JlbW90ZVBvcnRGb3JBY3Rpdml0eShtX3JlbW90ZUlkZW50aWZpZXIsIFt3ZWFrVGhpcyA9IG1h
a2VXZWFrUHRyKGNvbnN0X2Nhc3Q8TWVzc2FnZVBvcnQqPih0aGlzKSksIHdvcmtlclRocmVhZCA9
IFdURk1vdmUod29ya2VyVGhyZWFkKV0oTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXI6Okhhc0Fj
dGl2aXR5IGhhc0FjdGl2aXR5KSBtdXRhYmxlIHsKLQotICAgICAgICAgICAgQVNTRVJUKGlzTWFp
blRocmVhZCgpKTsKLSAgICAgICAgICAgIGlmICghd29ya2VyVGhyZWFkKSB7Ci0gICAgICAgICAg
ICAgICAgaWYgKHdlYWtUaGlzKQotICAgICAgICAgICAgICAgICAgICB3ZWFrVGhpcy0+dXBkYXRl
QWN0aXZpdHkoaGFzQWN0aXZpdHkpOwotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAg
ICAgIH0KKyAgICAgICAgY2FsbE9uTWFpblRocmVhZChbcmVtb3RlSWRlbnRpZmllciA9IG1fcmVt
b3RlSWRlbnRpZmllciwgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKSwgd29ya2VyVGhyZWFk
ID0gV1RGTW92ZSh3b3JrZXJUaHJlYWQpXSgpIG11dGFibGUgeworICAgICAgICAgICAgTWVzc2Fn
ZVBvcnRDaGFubmVsUHJvdmlkZXI6OnNpbmdsZXRvbigpLmNoZWNrUmVtb3RlUG9ydEZvckFjdGl2
aXR5KHJlbW90ZUlkZW50aWZpZXIsIFt3ZWFrVGhpcyA9IFdURk1vdmUod2Vha1RoaXMpLCB3b3Jr
ZXJUaHJlYWQgPSBXVEZNb3ZlKHdvcmtlclRocmVhZCldKGF1dG8gaGFzQWN0aXZpdHkpIG11dGFi
bGUgeworICAgICAgICAgICAgICAgIGlmICghd29ya2VyVGhyZWFkKSB7CisgICAgICAgICAgICAg
ICAgICAgIGlmICh3ZWFrVGhpcykKKyAgICAgICAgICAgICAgICAgICAgICAgIHdlYWtUaGlzLT51
cGRhdGVBY3Rpdml0eShoYXNBY3Rpdml0eSk7CisgICAgICAgICAgICAgICAgICAgIHJldHVybjsK
KyAgICAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIHdvcmtlclRocmVhZC0+cnVuTG9vcCgp
LnBvc3RUYXNrRm9yTW9kZShbd2Vha1RoaXMgPSBXVEZNb3ZlKHdlYWtUaGlzKSwgaGFzQWN0aXZp
dHldKGF1dG8mKSBtdXRhYmxlIHsKLSAgICAgICAgICAgICAgICBpZiAod2Vha1RoaXMpCi0gICAg
ICAgICAgICAgICAgICAgIHdlYWtUaGlzLT51cGRhdGVBY3Rpdml0eShoYXNBY3Rpdml0eSk7Ci0g
ICAgICAgICAgICB9LCBXb3JrZXJSdW5Mb29wOjpkZWZhdWx0TW9kZSgpKTsKKyAgICAgICAgICAg
ICAgICB3b3JrZXJUaHJlYWQtPnJ1bkxvb3AoKS5wb3N0VGFza0Zvck1vZGUoW3dlYWtUaGlzID0g
V1RGTW92ZSh3ZWFrVGhpcyksIGhhc0FjdGl2aXR5XShhdXRvJikgbXV0YWJsZSB7CisgICAgICAg
ICAgICAgICAgICAgIGlmICh3ZWFrVGhpcykKKyAgICAgICAgICAgICAgICAgICAgICAgIHdlYWtU
aGlzLT51cGRhdGVBY3Rpdml0eShoYXNBY3Rpdml0eSk7CisgICAgICAgICAgICAgICAgfSwgV29y
a2VyUnVuTG9vcDo6ZGVmYXVsdE1vZGUoKSk7CisgICAgICAgICAgICB9KTsKICAgICAgICAgfSk7
CiAgICAgICAgIG1faXNBc2tpbmdSZW1vdGVBYm91dEdDID0gdHJ1ZTsKICAgICB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vbWVzc2FnZXBvcnRzL01lc3NhZ2VQb3J0Q2hhbm5lbC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vbWVzc2FnZXBvcnRzL01lc3NhZ2VQb3J0Q2hhbm5lbC5j
cHAKaW5kZXggYTViNjBkOThiYjRhMDBlOGE4MjdlNzFkM2Q0ZjQ5YWE4YTRkZTQ0OS4uMDkxNWVh
ZDlmZmI4YzE2ZGM4YjdiMDlkMmUyNTA3ODA0ZDhiZDRjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL21lc3NhZ2Vwb3J0cy9NZXNzYWdlUG9ydENoYW5uZWwuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9tZXNzYWdlcG9ydHMvTWVzc2FnZVBvcnRDaGFubmVsLmNwcApAQCAtMTQ3
LDcgKzE0Nyw3IEBAIGJvb2wgTWVzc2FnZVBvcnRDaGFubmVsOjpwb3N0TWVzc2FnZVRvUmVtb3Rl
KE1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzJiYgbWVzc2FnZSwKICAgICByZXR1cm4gZmFsc2U7CiB9
CiAKLXZvaWQgTWVzc2FnZVBvcnRDaGFubmVsOjp0YWtlQWxsTWVzc2FnZXNGb3JQb3J0KGNvbnN0
IE1lc3NhZ2VQb3J0SWRlbnRpZmllciYgcG9ydCwgRnVuY3Rpb248dm9pZChWZWN0b3I8TWVzc2Fn
ZVdpdGhNZXNzYWdlUG9ydHM+JiYsIEZ1bmN0aW9uPHZvaWQoKT4mJik+JiYgY2FsbGJhY2spCit2
b2lkIE1lc3NhZ2VQb3J0Q2hhbm5lbDo6dGFrZUFsbE1lc3NhZ2VzRm9yUG9ydChjb25zdCBNZXNz
YWdlUG9ydElkZW50aWZpZXImIHBvcnQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPE1l
c3NhZ2VXaXRoTWVzc2FnZVBvcnRzPiYmLCBGdW5jdGlvbjx2b2lkKCk+JiYpPiYmIGNhbGxiYWNr
KQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAKQEAgLTE4Miw3ICsxODIsNyBAQCB2
b2lkIE1lc3NhZ2VQb3J0Q2hhbm5lbDo6dGFrZUFsbE1lc3NhZ2VzRm9yUG9ydChjb25zdCBNZXNz
YWdlUG9ydElkZW50aWZpZXImIHBvcgogICAgIH0pOwogfQogCi12b2lkIE1lc3NhZ2VQb3J0Q2hh
bm5lbDo6Y2hlY2tSZW1vdGVQb3J0Rm9yQWN0aXZpdHkoY29uc3QgTWVzc2FnZVBvcnRJZGVudGlm
aWVyJiByZW1vdGVQb3J0LCBGdW5jdGlvbjx2b2lkKE1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVy
OjpIYXNBY3Rpdml0eSk+JiYgY2FsbGJhY2spCit2b2lkIE1lc3NhZ2VQb3J0Q2hhbm5lbDo6Y2hl
Y2tSZW1vdGVQb3J0Rm9yQWN0aXZpdHkoY29uc3QgTWVzc2FnZVBvcnRJZGVudGlmaWVyJiByZW1v
dGVQb3J0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVy
OjpIYXNBY3Rpdml0eSk+JiYgY2FsbGJhY2spCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgp
KTsKICAgICBBU1NFUlQocmVtb3RlUG9ydCA9PSBtX3BvcnRzWzBdIHx8IHJlbW90ZVBvcnQgPT0g
bV9wb3J0c1sxXSk7CkBAIC0yMDcsNyArMjA3LDcgQEAgdm9pZCBNZXNzYWdlUG9ydENoYW5uZWw6
OmNoZWNrUmVtb3RlUG9ydEZvckFjdGl2aXR5KGNvbnN0IE1lc3NhZ2VQb3J0SWRlbnRpZmllciYK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGF1dG8gb3V0ZXJDYWxsYmFjayA9IEZ1bmN0
aW9uPHZvaWQoTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXI6Okhhc0FjdGl2aXR5KT4geyBbdGhp
cywgcHJvdGVjdGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBjYWxsYmFjayA9IFdURk1vdmUoY2Fs
bGJhY2spXSAoTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXI6Okhhc0FjdGl2aXR5IGhhc0FjdGl2
aXR5KSBtdXRhYmxlIHsKKyAgICBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE1lc3NhZ2VQb3J0Q2hh
bm5lbFByb3ZpZGVyOjpIYXNBY3Rpdml0eSk+IG91dGVyQ2FsbGJhY2sgPSBbdGhpcywgcHJvdGVj
dGVkVGhpcyA9IG1ha2VSZWYoKnRoaXMpLCBjYWxsYmFjayA9IFdURk1vdmUoY2FsbGJhY2spXShh
dXRvIGhhc0FjdGl2aXR5KSBtdXRhYmxlIHsKICAgICAgICAgaWYgKGhhc0FjdGl2aXR5ID09IE1l
c3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyOjpIYXNBY3Rpdml0eTo6WWVzKSB7CiAgICAgICAgICAg
ICBjYWxsYmFjayhoYXNBY3Rpdml0eSk7CiAgICAgICAgICAgICByZXR1cm47CkBAIC0yMTksNyAr
MjE5LDcgQEAgdm9pZCBNZXNzYWdlUG9ydENoYW5uZWw6OmNoZWNrUmVtb3RlUG9ydEZvckFjdGl2
aXR5KGNvbnN0IE1lc3NhZ2VQb3J0SWRlbnRpZmllciYKICAgICAgICAgICAgIGhhc0FjdGl2aXR5
ID0gTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXI6Okhhc0FjdGl2aXR5OjpZZXM7CiAKICAgICAg
ICAgY2FsbGJhY2soaGFzQWN0aXZpdHkpOwotICAgIH0gfTsKKyAgICB9OwogCiAgICAgbV9yZWdp
c3RyeS5wcm92aWRlcigpLmNoZWNrUHJvY2Vzc0xvY2FsUG9ydEZvckFjdGl2aXR5KHJlbW90ZVBv
cnQsICptX3Byb2Nlc3Nlc1tpXSwgV1RGTW92ZShvdXRlckNhbGxiYWNrKSk7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vbWVzc2FnZXBvcnRzL01lc3NhZ2VQb3J0Q2hhbm5lbC5o
IGIvU291cmNlL1dlYkNvcmUvZG9tL21lc3NhZ2Vwb3J0cy9NZXNzYWdlUG9ydENoYW5uZWwuaApp
bmRleCBjYzI5OTRkMmY5MmQ5MGY3YTJhZWUyYzNlOWFmZTVlOGZhYzE3Nzk1Li5hODgyNmI4YzAw
YzAwYjdhODc2YWQzOGFmYWU2MWFlNzhlOGFjZDg2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vbWVzc2FnZXBvcnRzL01lc3NhZ2VQb3J0Q2hhbm5lbC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2RvbS9tZXNzYWdlcG9ydHMvTWVzc2FnZVBvcnRDaGFubmVsLmgKQEAgLTUzLDggKzUzLDgg
QEAgcHVibGljOgogICAgIHZvaWQgY2xvc2VQb3J0KGNvbnN0IE1lc3NhZ2VQb3J0SWRlbnRpZmll
ciYpOwogICAgIGJvb2wgcG9zdE1lc3NhZ2VUb1JlbW90ZShNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0
cyYmLCBjb25zdCBNZXNzYWdlUG9ydElkZW50aWZpZXImIHJlbW90ZVRhcmdldCk7CiAKLSAgICB2
b2lkIHRha2VBbGxNZXNzYWdlc0ZvclBvcnQoY29uc3QgTWVzc2FnZVBvcnRJZGVudGlmaWVyJiwg
RnVuY3Rpb248dm9pZChWZWN0b3I8TWVzc2FnZVdpdGhNZXNzYWdlUG9ydHM+JiYsIEZ1bmN0aW9u
PHZvaWQoKT4mJik+JiYpOwotICAgIHZvaWQgY2hlY2tSZW1vdGVQb3J0Rm9yQWN0aXZpdHkoY29u
c3QgTWVzc2FnZVBvcnRJZGVudGlmaWVyJiwgRnVuY3Rpb248dm9pZChNZXNzYWdlUG9ydENoYW5u
ZWxQcm92aWRlcjo6SGFzQWN0aXZpdHkpPiYmIGNhbGxiYWNrKTsKKyAgICB2b2lkIHRha2VBbGxN
ZXNzYWdlc0ZvclBvcnQoY29uc3QgTWVzc2FnZVBvcnRJZGVudGlmaWVyJiwgQ29tcGxldGlvbkhh
bmRsZXI8dm9pZChWZWN0b3I8TWVzc2FnZVdpdGhNZXNzYWdlUG9ydHM+JiYsIEZ1bmN0aW9uPHZv
aWQoKT4mJik+JiYpOworICAgIHZvaWQgY2hlY2tSZW1vdGVQb3J0Rm9yQWN0aXZpdHkoY29uc3Qg
TWVzc2FnZVBvcnRJZGVudGlmaWVyJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChNZXNzYWdlUG9y
dENoYW5uZWxQcm92aWRlcjo6SGFzQWN0aXZpdHkpPiYmIGNhbGxiYWNrKTsKIAogICAgIFdFQkNP
UkVfRVhQT1JUIGJvb2wgaGFzQW55TWVzc2FnZXNQZW5kaW5nT3JJbkZsaWdodCgpIGNvbnN0Owog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vbWVzc2FnZXBvcnRzL01lc3NhZ2VQb3J0
Q2hhbm5lbFByb3ZpZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9tZXNzYWdlcG9ydHMvTWVz
c2FnZVBvcnRDaGFubmVsUHJvdmlkZXIuY3BwCmluZGV4IDBhNWNkMTc3M2U5MzFiMDQ5ZmY0OGQ3
MWI5N2VhZDliNjY2MzVjOTkuLjEyYWE5ZjJjZmJmMTJkM2UwODlhNWJhMWIwODc2NjQ4YzFmMTY1
NTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9tZXNzYWdlcG9ydHMvTWVzc2FnZVBv
cnRDaGFubmVsUHJvdmlkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9tZXNzYWdlcG9y
dHMvTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXIuY3BwCkBAIC0yNiw3ICsyNiw5IEBACiAjaW5j
bHVkZSAiY29uZmlnLmgiCiAjaW5jbHVkZSAiTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXIuaCIK
IAorI2luY2x1ZGUgIkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiTWVzc2FnZVBvcnRDaGFubmVsUHJv
dmlkZXJJbXBsLmgiCisjaW5jbHVkZSAiV29ya2VyR2xvYmFsU2NvcGUuaCIKICNpbmNsdWRlIDx3
dGYvTWFpblRocmVhZC5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC0zNSw2ICszNyw3IEBA
IHN0YXRpYyBNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlciogZ2xvYmFsUHJvdmlkZXI7CiAKIE1l
c3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyJiBNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlcjo6c2lu
Z2xldG9uKCkKIHsKKyAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIHN0YXRpYyBzdGQ6
Om9uY2VfZmxhZyBvbmNlRmxhZzsKICAgICBzdGQ6OmNhbGxfb25jZShvbmNlRmxhZywgW10gewog
ICAgICAgICBpZiAoIWdsb2JhbFByb3ZpZGVyKQpAQCAtNTEsNCArNTQsMTIgQEAgdm9pZCBNZXNz
YWdlUG9ydENoYW5uZWxQcm92aWRlcjo6c2V0U2hhcmVkUHJvdmlkZXIoTWVzc2FnZVBvcnRDaGFu
bmVsUHJvdmlkZXImIHAKICAgICBnbG9iYWxQcm92aWRlciA9ICZwcm92aWRlcjsKIH0KIAorTWVz
c2FnZVBvcnRDaGFubmVsUHJvdmlkZXImIE1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyOjpmcm9t
Q29udGV4dChTY3JpcHRFeGVjdXRpb25Db250ZXh0JiBjb250ZXh0KQoreworICAgIGlmIChpczxE
b2N1bWVudD4oY29udGV4dCkpCisgICAgICAgIHJldHVybiBkb3duY2FzdDxEb2N1bWVudD4oY29u
dGV4dCkubWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXIoKTsKKworICAgIHJldHVybiBkb3duY2Fz
dDxXb3JrZXJHbG9iYWxTY29wZT4oY29udGV4dCkubWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXIo
KTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL21lc3NhZ2Vwb3J0cy9NZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlci5oIGIvU291cmNl
L1dlYkNvcmUvZG9tL21lc3NhZ2Vwb3J0cy9NZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlci5oCmlu
ZGV4IDhhM2FiYTI4MjEwNDZhOTY0YzBmNDVlM2ViNzQzYWMzOGQ2Yzk5NmYuLmNmZjNmMzU5NzUz
YzgyYzJjYjZlNWM5NmYwY2ZjMTE2ZGU3OTM1YjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9tZXNzYWdlcG9ydHMvTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vbWVzc2FnZXBvcnRzL01lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyLmgK
QEAgLTI2LDE2ICsyNiwxOCBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJQcm9jZXNzSWRl
bnRpZmllci5oIgotI2luY2x1ZGUgPHd0Zi9GdW5jdGlvbi5oPgorI2luY2x1ZGUgPHd0Zi9Db21w
bGV0aW9uSGFuZGxlci5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KIAogbmFtZXNwYWNlIFdl
YkNvcmUgewogCitjbGFzcyBTY3JpcHRFeGVjdXRpb25Db250ZXh0Owogc3RydWN0IE1lc3NhZ2VQ
b3J0SWRlbnRpZmllcjsKIHN0cnVjdCBNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0czsKIAogY2xhc3Mg
TWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXIgewogcHVibGljOgorICAgIHN0YXRpYyBNZXNzYWdl
UG9ydENoYW5uZWxQcm92aWRlciYgZnJvbUNvbnRleHQoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYp
OwogICAgIHN0YXRpYyBNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlciYgc2luZ2xldG9uKCk7CiAg
ICAgV0VCQ09SRV9FWFBPUlQgc3RhdGljIHZvaWQgc2V0U2hhcmVkUHJvdmlkZXIoTWVzc2FnZVBv
cnRDaGFubmVsUHJvdmlkZXImKTsKIApAQCAtNDcsMTkgKzQ5LDE1IEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIHZvaWQgbWVzc2FnZVBvcnREaXNlbnRhbmdsZWQoY29uc3QgTWVzc2FnZVBvcnRJZGVu
dGlmaWVyJiBsb2NhbCkgPSAwOwogICAgIHZpcnR1YWwgdm9pZCBtZXNzYWdlUG9ydENsb3NlZChj
b25zdCBNZXNzYWdlUG9ydElkZW50aWZpZXImIGxvY2FsKSA9IDA7CiAgICAgCi0gICAgLy8gRklY
TUU6IElkZWFsbHkgdGhlIGNhbGxiYWNrIHdvdWxkIGJlIGEgQ29tcGxldGlvbkhhbmRsZXIgYnV0
IGl0IGlzIGFsd2F5cyBjYWxsZWQgb24gdGhlIGNhbGxlcidzCi0gICAgLy8gdGhyZWFkIGF0IHRo
ZSBtb21lbnQuCi0gICAgdmlydHVhbCB2b2lkIHRha2VBbGxNZXNzYWdlc0ZvclBvcnQoY29uc3Qg
TWVzc2FnZVBvcnRJZGVudGlmaWVyJiwgRnVuY3Rpb248dm9pZChWZWN0b3I8TWVzc2FnZVdpdGhN
ZXNzYWdlUG9ydHM+JiYsIEZ1bmN0aW9uPHZvaWQoKT4mJik+JiYpID0gMDsKKyAgICB2aXJ0dWFs
IHZvaWQgdGFrZUFsbE1lc3NhZ2VzRm9yUG9ydChjb25zdCBNZXNzYWdlUG9ydElkZW50aWZpZXIm
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cz4m
JiwgRnVuY3Rpb248dm9pZCgpPiYmKT4mJikgPSAwOwogCi0gICAgdmlydHVhbCB2b2lkIHBvc3RN
ZXNzYWdlVG9SZW1vdGUoTWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMmJiwgY29uc3QgTWVzc2FnZVBv
cnRJZGVudGlmaWVyJiByZW1vdGVUYXJnZXQpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgcG9zdE1l
c3NhZ2VUb1JlbW90ZShjb25zdCBNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cyYsIGNvbnN0IE1lc3Nh
Z2VQb3J0SWRlbnRpZmllciYgcmVtb3RlVGFyZ2V0KSA9IDA7CiAKICAgICBlbnVtIGNsYXNzIEhh
c0FjdGl2aXR5IHsKICAgICAgICAgWWVzLAogICAgICAgICBObywKICAgICB9OwotICAgIC8vIEZJ
WE1FOiBJZGVhbGx5IHRoZSBjYWxsYmFjayB3b3VsZCBiZSBhIENvbXBsZXRpb25IYW5kbGVyIGJ1
dCBpdCBpcyBhbHdheXMgY2FsbGVkIG9uIHRoZSBjYWxsZXIncwotICAgIC8vIHRocmVhZCBhdCB0
aGUgbW9tZW50LgotICAgIHZpcnR1YWwgdm9pZCBjaGVja1JlbW90ZVBvcnRGb3JBY3Rpdml0eShj
b25zdCBNZXNzYWdlUG9ydElkZW50aWZpZXImIHJlbW90ZVRhcmdldCwgRnVuY3Rpb248dm9pZChI
YXNBY3Rpdml0eSk+JiYgY2FsbGJhY2spID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgY2hlY2tSZW1v
dGVQb3J0Rm9yQWN0aXZpdHkoY29uc3QgTWVzc2FnZVBvcnRJZGVudGlmaWVyJiByZW1vdGVUYXJn
ZXQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSGFzQWN0aXZpdHkpPiYmIGNhbGxiYWNrKSA9IDA7
CiAKICAgICAvLyBPcGVyYXRpb25zIHRoYXQgdGhlIGNvb3JkaW5hdGluZyBwcm9jZXNzIHBlcmZv
cm1zIChlLmcuIHRoZSBVSVByb2Nlc3MpCiAgICAgdmlydHVhbCB2b2lkIGNoZWNrUHJvY2Vzc0xv
Y2FsUG9ydEZvckFjdGl2aXR5KGNvbnN0IE1lc3NhZ2VQb3J0SWRlbnRpZmllciYsIFByb2Nlc3NJ
ZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEhhc0FjdGl2aXR5KT4mJikgPSAwOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL21lc3NhZ2Vwb3J0cy9NZXNzYWdlUG9ydENo
YW5uZWxQcm92aWRlckltcGwuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL21lc3NhZ2Vwb3J0cy9N
ZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlckltcGwuY3BwCmluZGV4IDBiMDdjMjc1M2E5OWNlMDIw
NmQ0MWNjYjBlYTQ5ZWQwNDE2ZjE0YTYuLmUxNjU2ZTI3MjAwOTE2ZmFjZGU1ODA3YzllZGFhMDMy
MGMwNDM1ZGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9tZXNzYWdlcG9ydHMvTWVz
c2FnZVBvcnRDaGFubmVsUHJvdmlkZXJJbXBsLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
bWVzc2FnZXBvcnRzL01lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVySW1wbC5jcHAKQEAgLTI3LDcg
KzI3LDYgQEAKICNpbmNsdWRlICJNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlckltcGwuaCIKIAog
I2luY2x1ZGUgIk1lc3NhZ2VQb3J0LmgiCi0jaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVy
Lmg+CiAjaW5jbHVkZSA8d3RmL01haW5UaHJlYWQuaD4KICNpbmNsdWRlIDx3dGYvUnVuTG9vcC5o
PgogCkBAIC03OSwxOCArNzgsMTggQEAgdm9pZCBNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlcklt
cGw6Om1lc3NhZ2VQb3J0Q2xvc2VkKGNvbnN0IE1lc3NhZ2VQb3J0SWRlbnRpZmkKICAgICB9KTsK
IH0KIAotdm9pZCBNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlckltcGw6OnBvc3RNZXNzYWdlVG9S
ZW1vdGUoTWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMmJiBtZXNzYWdlLCBjb25zdCBNZXNzYWdlUG9y
dElkZW50aWZpZXImIHJlbW90ZVRhcmdldCkKK3ZvaWQgTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlk
ZXJJbXBsOjpwb3N0TWVzc2FnZVRvUmVtb3RlKGNvbnN0IE1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRz
JiBtZXNzYWdlLCBjb25zdCBNZXNzYWdlUG9ydElkZW50aWZpZXImIHJlbW90ZVRhcmdldCkKIHsK
LSAgICBwZXJmb3JtQWN0aW9uT25NYWluVGhyZWFkKFtyZWdpc3RyeSA9ICZtX3JlZ2lzdHJ5LCBt
ZXNzYWdlID0gV1RGTW92ZShtZXNzYWdlKSwgcmVtb3RlVGFyZ2V0XSgpIG11dGFibGUgeworICAg
IHBlcmZvcm1BY3Rpb25Pbk1haW5UaHJlYWQoW3JlZ2lzdHJ5ID0gJm1fcmVnaXN0cnksIG1lc3Nh
Z2UgPSBNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cyB7IG1lc3NhZ2UgfSwgcmVtb3RlVGFyZ2V0XSgp
IG11dGFibGUgewogICAgICAgICBpZiAocmVnaXN0cnktPmRpZFBvc3RNZXNzYWdlVG9SZW1vdGUo
V1RGTW92ZShtZXNzYWdlKSwgcmVtb3RlVGFyZ2V0KSkKICAgICAgICAgICAgIE1lc3NhZ2VQb3J0
Ojpub3RpZnlNZXNzYWdlQXZhaWxhYmxlKHJlbW90ZVRhcmdldCk7CiAgICAgfSk7CiB9CiAKLXZv
aWQgTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXJJbXBsOjp0YWtlQWxsTWVzc2FnZXNGb3JQb3J0
KGNvbnN0IE1lc3NhZ2VQb3J0SWRlbnRpZmllciYgcG9ydCwgRnVuY3Rpb248dm9pZChWZWN0b3I8
TWVzc2FnZVdpdGhNZXNzYWdlUG9ydHM+JiYsIEZ1bmN0aW9uPHZvaWQoKT4mJik+JiYgb3V0ZXJD
YWxsYmFjaykKK3ZvaWQgTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXJJbXBsOjp0YWtlQWxsTWVz
c2FnZXNGb3JQb3J0KGNvbnN0IE1lc3NhZ2VQb3J0SWRlbnRpZmllciYgcG9ydCwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChWZWN0b3I8TWVzc2FnZVdpdGhNZXNzYWdlUG9ydHM+JiYsIEZ1bmN0aW9u
PHZvaWQoKT4mJik+JiYgb3V0ZXJDYWxsYmFjaykKIHsKICAgICAvLyBJdCBpcyB0aGUgcmVzcG9u
c2liaWxpdHkgb2Ygb3V0ZXJDYWxsYmFjayB0byBnZXQgaXRzZWxmIHRvIHRoZSBhcHByb3ByaWF0
ZSB0aHJlYWQgKGUuZy4gV2ViV29ya2VyIHRocmVhZCkKLSAgICBhdXRvIGNhbGxiYWNrID0gW291
dGVyQ2FsbGJhY2sgPSBXVEZNb3ZlKG91dGVyQ2FsbGJhY2spXShWZWN0b3I8TWVzc2FnZVdpdGhN
ZXNzYWdlUG9ydHM+JiYgbWVzc2FnZXMsIEZ1bmN0aW9uPHZvaWQoKT4mJiBtZXNzYWdlRGVsaXZl
cnlDYWxsYmFjaykgeworICAgIGF1dG8gY2FsbGJhY2sgPSBbb3V0ZXJDYWxsYmFjayA9IFdURk1v
dmUob3V0ZXJDYWxsYmFjayldKFZlY3RvcjxNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cz4mJiBtZXNz
YWdlcywgRnVuY3Rpb248dm9pZCgpPiYmIG1lc3NhZ2VEZWxpdmVyeUNhbGxiYWNrKSBtdXRhYmxl
IHsKICAgICAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKICAgICAgICAgb3V0ZXJDYWxsYmFj
ayhXVEZNb3ZlKG1lc3NhZ2VzKSwgV1RGTW92ZShtZXNzYWdlRGVsaXZlcnlDYWxsYmFjaykpOwog
ICAgIH07CkBAIC0xMDAsNyArOTksNyBAQCB2b2lkIE1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVy
SW1wbDo6dGFrZUFsbE1lc3NhZ2VzRm9yUG9ydChjb25zdCBNZXNzYWdlUG9ydElkZQogICAgIH0p
OwogfQogCi12b2lkIE1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVySW1wbDo6Y2hlY2tSZW1vdGVQ
b3J0Rm9yQWN0aXZpdHkoY29uc3QgTWVzc2FnZVBvcnRJZGVudGlmaWVyJiByZW1vdGVUYXJnZXQs
IEZ1bmN0aW9uPHZvaWQoSGFzQWN0aXZpdHkpPiYmIG91dGVyQ2FsbGJhY2spCit2b2lkIE1lc3Nh
Z2VQb3J0Q2hhbm5lbFByb3ZpZGVySW1wbDo6Y2hlY2tSZW1vdGVQb3J0Rm9yQWN0aXZpdHkoY29u
c3QgTWVzc2FnZVBvcnRJZGVudGlmaWVyJiByZW1vdGVUYXJnZXQsIENvbXBsZXRpb25IYW5kbGVy
PHZvaWQoSGFzQWN0aXZpdHkpPiYmIG91dGVyQ2FsbGJhY2spCiB7CiAgICAgYXV0byBjYWxsYmFj
ayA9IEZ1bmN0aW9uPHZvaWQoSGFzQWN0aXZpdHkpPiB7IFtvdXRlckNhbGxiYWNrID0gV1RGTW92
ZShvdXRlckNhbGxiYWNrKV0oSGFzQWN0aXZpdHkgaGFzQWN0aXZpdHkpIG11dGFibGUgewogICAg
ICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwpAQCAtMTE5LDUgKzExOCw0IEBAIHZvaWQgTWVz
c2FnZVBvcnRDaGFubmVsUHJvdmlkZXJJbXBsOjpjaGVja1Byb2Nlc3NMb2NhbFBvcnRGb3JBY3Rp
dml0eShjb25zdCBNZXNzCiAgICAgY2FsbGJhY2soTWVzc2FnZVBvcnQ6OmlzRXhpc3RpbmdNZXNz
YWdlUG9ydExvY2FsbHlSZWFjaGFibGUoaWRlbnRpZmllcikgPyBIYXNBY3Rpdml0eTo6WWVzIDog
SGFzQWN0aXZpdHk6Ok5vKTsKIH0KIAotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vbWVzc2FnZXBvcnRzL01lc3NhZ2VQb3J0Q2hhbm5lbFBy
b3ZpZGVySW1wbC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL21lc3NhZ2Vwb3J0cy9NZXNzYWdlUG9y
dENoYW5uZWxQcm92aWRlckltcGwuaAppbmRleCBkMzU1NGUxYWExZGY0NTdiMWI4NWQyZmI4MmM3
NTY5Zjk4OWQ3YjZiLi40OGNiNTQ4NzEwMjNhNzU1NTg2MTdhMzYxNTc1Y2QxMjhhYTE4MTFiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vbWVzc2FnZXBvcnRzL01lc3NhZ2VQb3J0Q2hh
bm5lbFByb3ZpZGVySW1wbC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9tZXNzYWdlcG9ydHMv
TWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXJJbXBsLmgKQEAgLTQwLDkgKzQwLDkgQEAgcHJpdmF0
ZToKICAgICB2b2lkIGVudGFuZ2xlTG9jYWxQb3J0SW5UaGlzUHJvY2Vzc1RvUmVtb3RlKGNvbnN0
IE1lc3NhZ2VQb3J0SWRlbnRpZmllciYgbG9jYWwsIGNvbnN0IE1lc3NhZ2VQb3J0SWRlbnRpZmll
ciYgcmVtb3RlKSBmaW5hbDsKICAgICB2b2lkIG1lc3NhZ2VQb3J0RGlzZW50YW5nbGVkKGNvbnN0
IE1lc3NhZ2VQb3J0SWRlbnRpZmllciYgbG9jYWwpIGZpbmFsOwogICAgIHZvaWQgbWVzc2FnZVBv
cnRDbG9zZWQoY29uc3QgTWVzc2FnZVBvcnRJZGVudGlmaWVyJiBsb2NhbCkgZmluYWw7Ci0gICAg
dm9pZCBwb3N0TWVzc2FnZVRvUmVtb3RlKE1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzJiYsIGNvbnN0
IE1lc3NhZ2VQb3J0SWRlbnRpZmllciYgcmVtb3RlVGFyZ2V0KSBmaW5hbDsKLSAgICB2b2lkIHRh
a2VBbGxNZXNzYWdlc0ZvclBvcnQoY29uc3QgTWVzc2FnZVBvcnRJZGVudGlmaWVyJiwgRnVuY3Rp
b248dm9pZChWZWN0b3I8TWVzc2FnZVdpdGhNZXNzYWdlUG9ydHM+JiYsIEZ1bmN0aW9uPHZvaWQo
KT4mJik+JiYpIGZpbmFsOwotICAgIHZvaWQgY2hlY2tSZW1vdGVQb3J0Rm9yQWN0aXZpdHkoY29u
c3QgTWVzc2FnZVBvcnRJZGVudGlmaWVyJiByZW1vdGVUYXJnZXQsIEZ1bmN0aW9uPHZvaWQoSGFz
QWN0aXZpdHkpPiYmIGNhbGxiYWNrKSBmaW5hbDsKKyAgICB2b2lkIHBvc3RNZXNzYWdlVG9SZW1v
dGUoY29uc3QgTWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMmLCBjb25zdCBNZXNzYWdlUG9ydElkZW50
aWZpZXImIHJlbW90ZVRhcmdldCkgZmluYWw7CisgICAgdm9pZCB0YWtlQWxsTWVzc2FnZXNGb3JQ
b3J0KGNvbnN0IE1lc3NhZ2VQb3J0SWRlbnRpZmllciYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
VmVjdG9yPE1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzPiYmLCBGdW5jdGlvbjx2b2lkKCk+JiYpPiYm
KSBmaW5hbDsKKyAgICB2b2lkIGNoZWNrUmVtb3RlUG9ydEZvckFjdGl2aXR5KGNvbnN0IE1lc3Nh
Z2VQb3J0SWRlbnRpZmllciYgcmVtb3RlVGFyZ2V0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEhh
c0FjdGl2aXR5KT4mJiBjYWxsYmFjaykgZmluYWw7CiAKICAgICB2b2lkIGNoZWNrUHJvY2Vzc0xv
Y2FsUG9ydEZvckFjdGl2aXR5KGNvbnN0IE1lc3NhZ2VQb3J0SWRlbnRpZmllciYsIFByb2Nlc3NJ
ZGVudGlmaWVyLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEhhc0FjdGl2aXR5KT4mJikgZmluYWw7
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9tZXNzYWdlcG9ydHMvTWVzc2FnZVBv
cnRDaGFubmVsUmVnaXN0cnkuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL21lc3NhZ2Vwb3J0cy9N
ZXNzYWdlUG9ydENoYW5uZWxSZWdpc3RyeS5jcHAKaW5kZXggMWNiMzU1NDZlMzNmYzY2MTBjNDZh
MmQwZDlkMjgzNjg4OTQ1NzZjZS4uZTBlNjBmMmU5NzA3YzMyZjBjODk3NWRhM2RiNWZlZGZkNzc3
OWFlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL21lc3NhZ2Vwb3J0cy9NZXNzYWdl
UG9ydENoYW5uZWxSZWdpc3RyeS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL21lc3NhZ2Vw
b3J0cy9NZXNzYWdlUG9ydENoYW5uZWxSZWdpc3RyeS5jcHAKQEAgLTE0MSw3ICsxNDEsNyBAQCBi
b29sIE1lc3NhZ2VQb3J0Q2hhbm5lbFJlZ2lzdHJ5OjpkaWRQb3N0TWVzc2FnZVRvUmVtb3RlKE1l
c3NhZ2VXaXRoTWVzc2FnZVBvcnRzJgogICAgIHJldHVybiBjaGFubmVsLT5wb3N0TWVzc2FnZVRv
UmVtb3RlKFdURk1vdmUobWVzc2FnZSksIHJlbW90ZVRhcmdldCk7CiB9CiAKLXZvaWQgTWVzc2Fn
ZVBvcnRDaGFubmVsUmVnaXN0cnk6OnRha2VBbGxNZXNzYWdlc0ZvclBvcnQoY29uc3QgTWVzc2Fn
ZVBvcnRJZGVudGlmaWVyJiBwb3J0LCBGdW5jdGlvbjx2b2lkKFZlY3RvcjxNZXNzYWdlV2l0aE1l
c3NhZ2VQb3J0cz4mJiwgRnVuY3Rpb248dm9pZCgpPiYmKT4mJiBjYWxsYmFjaykKK3ZvaWQgTWVz
c2FnZVBvcnRDaGFubmVsUmVnaXN0cnk6OnRha2VBbGxNZXNzYWdlc0ZvclBvcnQoY29uc3QgTWVz
c2FnZVBvcnRJZGVudGlmaWVyJiBwb3J0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxN
ZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cz4mJiwgRnVuY3Rpb248dm9pZCgpPiYmKT4mJiBjYWxsYmFj
aykKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogCkBAIC0xNTcsNyArMTU3LDcgQEAg
dm9pZCBNZXNzYWdlUG9ydENoYW5uZWxSZWdpc3RyeTo6dGFrZUFsbE1lc3NhZ2VzRm9yUG9ydChj
b25zdCBNZXNzYWdlUG9ydElkZW50aWYKICAgICBjaGFubmVsLT50YWtlQWxsTWVzc2FnZXNGb3JQ
b3J0KHBvcnQsIFdURk1vdmUoY2FsbGJhY2spKTsKIH0KIAotdm9pZCBNZXNzYWdlUG9ydENoYW5u
ZWxSZWdpc3RyeTo6Y2hlY2tSZW1vdGVQb3J0Rm9yQWN0aXZpdHkoY29uc3QgTWVzc2FnZVBvcnRJ
ZGVudGlmaWVyJiByZW1vdGVUYXJnZXQsIEZ1bmN0aW9uPHZvaWQoTWVzc2FnZVBvcnRDaGFubmVs
UHJvdmlkZXI6Okhhc0FjdGl2aXR5KT4mJiBjYWxsYmFjaykKK3ZvaWQgTWVzc2FnZVBvcnRDaGFu
bmVsUmVnaXN0cnk6OmNoZWNrUmVtb3RlUG9ydEZvckFjdGl2aXR5KGNvbnN0IE1lc3NhZ2VQb3J0
SWRlbnRpZmllciYgcmVtb3RlVGFyZ2V0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE1lc3NhZ2VQ
b3J0Q2hhbm5lbFByb3ZpZGVyOjpIYXNBY3Rpdml0eSk+JiYgY2FsbGJhY2spCiB7CiAgICAgQVNT
RVJUKGlzTWFpblRocmVhZCgpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL21l
c3NhZ2Vwb3J0cy9NZXNzYWdlUG9ydENoYW5uZWxSZWdpc3RyeS5oIGIvU291cmNlL1dlYkNvcmUv
ZG9tL21lc3NhZ2Vwb3J0cy9NZXNzYWdlUG9ydENoYW5uZWxSZWdpc3RyeS5oCmluZGV4IDUzMWFh
OTU4NDg0M2RhNzUxNTc2MTFiMTNiNzRlNDEwZmViNjczYTUuLjZiY2EyODJlZGNhOWEzMDA3Mjky
NzViOTY0OWE0YzUzYTRhZGYxYzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9tZXNz
YWdlcG9ydHMvTWVzc2FnZVBvcnRDaGFubmVsUmVnaXN0cnkuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vbWVzc2FnZXBvcnRzL01lc3NhZ2VQb3J0Q2hhbm5lbFJlZ2lzdHJ5LmgKQEAgLTQzLDgg
KzQzLDggQEAgcHVibGljOgogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZGlkRGlzZW50YW5nbGVN
ZXNzYWdlUG9ydChjb25zdCBNZXNzYWdlUG9ydElkZW50aWZpZXImIGxvY2FsKTsKICAgICBXRUJD
T1JFX0VYUE9SVCB2b2lkIGRpZENsb3NlTWVzc2FnZVBvcnQoY29uc3QgTWVzc2FnZVBvcnRJZGVu
dGlmaWVyJiBsb2NhbCk7CiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBkaWRQb3N0TWVzc2FnZVRv
UmVtb3RlKE1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzJiYsIGNvbnN0IE1lc3NhZ2VQb3J0SWRlbnRp
ZmllciYgcmVtb3RlVGFyZ2V0KTsKLSAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHRha2VBbGxNZXNz
YWdlc0ZvclBvcnQoY29uc3QgTWVzc2FnZVBvcnRJZGVudGlmaWVyJiwgRnVuY3Rpb248dm9pZChW
ZWN0b3I8TWVzc2FnZVdpdGhNZXNzYWdlUG9ydHM+JiYsIEZ1bmN0aW9uPHZvaWQoKT4mJik+JiYp
OwotICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY2hlY2tSZW1vdGVQb3J0Rm9yQWN0aXZpdHkoY29u
c3QgTWVzc2FnZVBvcnRJZGVudGlmaWVyJiByZW1vdGVUYXJnZXQsIEZ1bmN0aW9uPHZvaWQoTWVz
c2FnZVBvcnRDaGFubmVsUHJvdmlkZXI6Okhhc0FjdGl2aXR5KT4mJiBjYWxsYmFjayk7CisgICAg
V0VCQ09SRV9FWFBPUlQgdm9pZCB0YWtlQWxsTWVzc2FnZXNGb3JQb3J0KGNvbnN0IE1lc3NhZ2VQ
b3J0SWRlbnRpZmllciYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPE1lc3NhZ2VXaXRo
TWVzc2FnZVBvcnRzPiYmLCBGdW5jdGlvbjx2b2lkKCk+JiYpPiYmKTsKKyAgICBXRUJDT1JFX0VY
UE9SVCB2b2lkIGNoZWNrUmVtb3RlUG9ydEZvckFjdGl2aXR5KGNvbnN0IE1lc3NhZ2VQb3J0SWRl
bnRpZmllciYgcmVtb3RlVGFyZ2V0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKE1lc3NhZ2VQb3J0
Q2hhbm5lbFByb3ZpZGVyOjpIYXNBY3Rpdml0eSk+JiYgY2FsbGJhY2spOwogCiAgICAgV0VCQ09S
RV9FWFBPUlQgTWVzc2FnZVBvcnRDaGFubmVsKiBleGlzdGluZ0NoYW5uZWxDb250YWluaW5nUG9y
dChjb25zdCBNZXNzYWdlUG9ydElkZW50aWZpZXImKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL21lc3NhZ2Vwb3J0cy9Xb3JrZXJNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vbWVzc2FnZXBvcnRzL1dvcmtlck1lc3NhZ2VQb3J0Q2hh
bm5lbFByb3ZpZGVyLmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi42YTAxNzU5MTEzMjU3MGM0NzljMTUwNDJiOTA3
ODI4YjBlZjg0MDBkCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL21lc3Nh
Z2Vwb3J0cy9Xb3JrZXJNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlci5jcHAKQEAgLTAsMCArMSwx
MzggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTkgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBBTkQgSVRTIENPTlRSSUJVVE9SUyBgYEFTIElTJycKKyAqIEFORCBBTlkgRVhQUkVT
UyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAor
ICogVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1Mg
Rk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQg
U0hBTEwgQVBQTEUgSU5DLiBPUiBJVFMgQ09OVFJJQlVUT1JTCisgKiBCRSBMSUFCTEUgRk9SIEFO
WSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCisg
KiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQ
Uk9DVVJFTUVOVCBPRgorICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBV
U0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCisgKiBJTlRFUlJVUFRJT04pIEhPV0VW
RVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgorICog
Q09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNF
IE9SIE9USEVSV0lTRSkKKyAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBU
SElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YKKyAqIFRIRSBQT1NTSUJJTElUWSBPRiBT
VUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiV29ya2Vy
TWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXIuaCIKKworI2luY2x1ZGUgIk1lc3NhZ2VQb3J0Lmgi
CisjaW5jbHVkZSAiV29ya2VyR2xvYmFsU2NvcGUuaCIKKyNpbmNsdWRlICJXb3JrZXJUaHJlYWQu
aCIKKyNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5oPgorI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+
CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworV29ya2VyTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlk
ZXI6Oldvcmtlck1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyKFdvcmtlckdsb2JhbFNjb3BlJiBz
Y29wZSkKKyAgICA6IG1fc2NvcGUoc2NvcGUpCit7Cit9CisKK1dvcmtlck1lc3NhZ2VQb3J0Q2hh
bm5lbFByb3ZpZGVyOjp+V29ya2VyTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXIoKQoreworICAg
IHdoaWxlICghbV90YWtlQWxsTWVzc2FnZXNDYWxsYmFja3MuaXNFbXB0eSgpKSB7CisgICAgICAg
IGF1dG8gZmlyc3QgPSBtX3Rha2VBbGxNZXNzYWdlc0NhbGxiYWNrcy5iZWdpbigpOworICAgICAg
ICBmaXJzdC0+dmFsdWUoeyB9LCBbXSB7IH0pOworICAgICAgICBtX3Rha2VBbGxNZXNzYWdlc0Nh
bGxiYWNrcy5yZW1vdmUoZmlyc3QpOworICAgIH0KKyAgICB3aGlsZSAoIW1fYWN0aXZpdHlDYWxs
YmFja3MuaXNFbXB0eSgpKSB7CisgICAgICAgIGF1dG8gZmlyc3QgPSBtX2FjdGl2aXR5Q2FsbGJh
Y2tzLmJlZ2luKCk7CisgICAgICAgIGZpcnN0LT52YWx1ZShIYXNBY3Rpdml0eTo6Tm8pOworICAg
ICAgICBtX2FjdGl2aXR5Q2FsbGJhY2tzLnJlbW92ZShmaXJzdCk7CisgICAgfQorfQorCit2b2lk
IFdvcmtlck1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyOjpjcmVhdGVOZXdNZXNzYWdlUG9ydENo
YW5uZWwoY29uc3QgTWVzc2FnZVBvcnRJZGVudGlmaWVyJiBsb2NhbCwgY29uc3QgTWVzc2FnZVBv
cnRJZGVudGlmaWVyJiByZW1vdGUpCit7CisgICAgY2FsbE9uTWFpblRocmVhZChbbG9jYWwsIHJl
bW90ZV0geworICAgICAgICBNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlcjo6c2luZ2xldG9uKCku
Y3JlYXRlTmV3TWVzc2FnZVBvcnRDaGFubmVsKGxvY2FsLCByZW1vdGUpOworICAgIH0pOworfQor
Cit2b2lkIFdvcmtlck1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyOjplbnRhbmdsZUxvY2FsUG9y
dEluVGhpc1Byb2Nlc3NUb1JlbW90ZShjb25zdCBNZXNzYWdlUG9ydElkZW50aWZpZXImIGxvY2Fs
LCBjb25zdCBNZXNzYWdlUG9ydElkZW50aWZpZXImIHJlbW90ZSkKK3sKKyAgICBjYWxsT25NYWlu
VGhyZWFkKFtsb2NhbCwgcmVtb3RlXSB7CisgICAgICAgIE1lc3NhZ2VQb3J0Q2hhbm5lbFByb3Zp
ZGVyOjpzaW5nbGV0b24oKS5lbnRhbmdsZUxvY2FsUG9ydEluVGhpc1Byb2Nlc3NUb1JlbW90ZShs
b2NhbCwgcmVtb3RlKTsKKyAgICB9KTsKK30KKwordm9pZCBXb3JrZXJNZXNzYWdlUG9ydENoYW5u
ZWxQcm92aWRlcjo6bWVzc2FnZVBvcnREaXNlbnRhbmdsZWQoY29uc3QgTWVzc2FnZVBvcnRJZGVu
dGlmaWVyJiBsb2NhbCkKK3sKKyAgICBjYWxsT25NYWluVGhyZWFkKFtsb2NhbF0geworICAgICAg
ICBNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlcjo6c2luZ2xldG9uKCkubWVzc2FnZVBvcnREaXNl
bnRhbmdsZWQobG9jYWwpOworICAgIH0pOworfQorCit2b2lkIFdvcmtlck1lc3NhZ2VQb3J0Q2hh
bm5lbFByb3ZpZGVyOjptZXNzYWdlUG9ydENsb3NlZChjb25zdCBNZXNzYWdlUG9ydElkZW50aWZp
ZXImIGxvY2FsKQoreworICAgIGNhbGxPbk1haW5UaHJlYWQoW2xvY2FsXSB7CisgICAgICAgIE1l
c3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyOjpzaW5nbGV0b24oKS5tZXNzYWdlUG9ydENsb3NlZChs
b2NhbCk7CisgICAgfSk7Cit9CisKK3ZvaWQgV29ya2VyTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlk
ZXI6OnBvc3RNZXNzYWdlVG9SZW1vdGUoY29uc3QgTWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMmIG1l
c3NhZ2UsIGNvbnN0IE1lc3NhZ2VQb3J0SWRlbnRpZmllciYgcmVtb3RlVGFyZ2V0KQoreworICAg
IGNhbGxPbk1haW5UaHJlYWRBbmRXYWl0KFsmXSgpIG11dGFibGUgeworICAgICAgICBNZXNzYWdl
UG9ydENoYW5uZWxQcm92aWRlcjo6c2luZ2xldG9uKCkucG9zdE1lc3NhZ2VUb1JlbW90ZShtZXNz
YWdlLCByZW1vdGVUYXJnZXQpOworICAgIH0pOworfQorCit2b2lkIFdvcmtlck1lc3NhZ2VQb3J0
Q2hhbm5lbFByb3ZpZGVyOjp0YWtlQWxsTWVzc2FnZXNGb3JQb3J0KGNvbnN0IE1lc3NhZ2VQb3J0
SWRlbnRpZmllciYgaWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8TWVz
c2FnZVdpdGhNZXNzYWdlUG9ydHM+JiYsIEZ1bmN0aW9uPHZvaWQoKT4mJik+JiYgY2FsbGJhY2sp
Cit7CisgICAgdWludDY0X3QgY2FsbGJhY2tJZGVudGlmaWVyID0gKyttX2xhc3RDYWxsYmFja0lk
ZW50aWZpZXI7CisgICAgbV90YWtlQWxsTWVzc2FnZXNDYWxsYmFja3MuYWRkKGNhbGxiYWNrSWRl
bnRpZmllciwgV1RGTW92ZShjYWxsYmFjaykpOworCisgICAgY2FsbE9uTWFpblRocmVhZChbdGhp
cywgd29ya2VyVGhyZWFkID0gbWFrZVJlZihtX3Njb3BlLnRocmVhZCgpKSwgY2FsbGJhY2tJZGVu
dGlmaWVyLCBpZGVudGlmaWVyXSgpIG11dGFibGUgeworICAgICAgICBNZXNzYWdlUG9ydENoYW5u
ZWxQcm92aWRlcjo6c2luZ2xldG9uKCkudGFrZUFsbE1lc3NhZ2VzRm9yUG9ydChpZGVudGlmaWVy
LCBbdGhpcywgd29ya2VyVGhyZWFkID0gV1RGTW92ZSh3b3JrZXJUaHJlYWQpLCBjYWxsYmFja0lk
ZW50aWZpZXJdKFZlY3RvcjxNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cz4mJiBtZXNzYWdlcywgRnVu
Y3Rpb248dm9pZCgpPiYmIGNvbXBsZXRpb25IYW5kbGVyKSB7CisgICAgICAgICAgICB3b3JrZXJU
aHJlYWQtPnJ1bkxvb3AoKS5wb3N0VGFza0Zvck1vZGUoW3RoaXMsIGNhbGxiYWNrSWRlbnRpZmll
ciwgbWVzc2FnZXMgPSBXVEZNb3ZlKG1lc3NhZ2VzKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oYXV0byYgc2NvcGUpIG11dGFibGUgeworICAgICAgICAg
ICAgICAgIEFTU0VSVF9VTlVTRUQoc2NvcGUsIHRoaXMgPT0gJmRvd25jYXN0PFdvcmtlckdsb2Jh
bFNjb3BlPihzY29wZSkubWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXIoKSk7CisgICAgICAgICAg
ICAgICAgbV90YWtlQWxsTWVzc2FnZXNDYWxsYmFja3MudGFrZShjYWxsYmFja0lkZW50aWZpZXIp
KFdURk1vdmUobWVzc2FnZXMpLCBbY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKKyAgICAgICAgICAgICAgICAgICAgY2FsbE9uTWFpblRo
cmVhZChXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CisgICAgICAgICAgICAgICAgfSk7Cisg
ICAgICAgICAgICB9LCBXb3JrZXJSdW5Mb29wOjpkZWZhdWx0TW9kZSgpKTsKKyAgICAgICAgfSk7
CisgICAgfSk7Cit9CisKK3ZvaWQgV29ya2VyTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXI6OmNo
ZWNrUmVtb3RlUG9ydEZvckFjdGl2aXR5KGNvbnN0IE1lc3NhZ2VQb3J0SWRlbnRpZmllciYgcmVt
b3RlVGFyZ2V0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEhhc0FjdGl2aXR5KT4mJiBjYWxsYmFj
aykKK3sKKyAgICB1aW50NjRfdCBjYWxsYmFja0lkZW50aWZpZXIgPSArK21fbGFzdENhbGxiYWNr
SWRlbnRpZmllcjsKKyAgICBtX2FjdGl2aXR5Q2FsbGJhY2tzLmFkZChjYWxsYmFja0lkZW50aWZp
ZXIsIFdURk1vdmUoY2FsbGJhY2spKTsKKworICAgIGNhbGxPbk1haW5UaHJlYWQoW3RoaXMsIHdv
cmtlclRocmVhZCA9IG1ha2VSZWYobV9zY29wZS50aHJlYWQoKSksIGNhbGxiYWNrSWRlbnRpZmll
ciwgcmVtb3RlVGFyZ2V0XSgpIG11dGFibGUgeworICAgICAgICBNZXNzYWdlUG9ydENoYW5uZWxQ
cm92aWRlcjo6c2luZ2xldG9uKCkuY2hlY2tSZW1vdGVQb3J0Rm9yQWN0aXZpdHkocmVtb3RlVGFy
Z2V0LCBbdGhpcywgd29ya2VyVGhyZWFkID0gV1RGTW92ZSh3b3JrZXJUaHJlYWQpLCBjYWxsYmFj
a0lkZW50aWZpZXJdKGF1dG8gaGFzQWN0aXZpdHkpIHsKKyAgICAgICAgICAgIHdvcmtlclRocmVh
ZC0+cnVuTG9vcCgpLnBvc3RUYXNrRm9yTW9kZShbdGhpcywgY2FsbGJhY2tJZGVudGlmaWVyLCBo
YXNBY3Rpdml0eV0oYXV0byYgc2NvcGUpIG11dGFibGUgeworICAgICAgICAgICAgICAgIEFTU0VS
VF9VTlVTRUQoc2NvcGUsIHRoaXMgPT0gJmRvd25jYXN0PFdvcmtlckdsb2JhbFNjb3BlPihzY29w
ZSkubWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXIoKSk7CisgICAgICAgICAgICAgICAgbV9hY3Rp
dml0eUNhbGxiYWNrcy50YWtlKGNhbGxiYWNrSWRlbnRpZmllcikoaGFzQWN0aXZpdHkpOworICAg
ICAgICAgICAgfSwgV29ya2VyUnVuTG9vcDo6ZGVmYXVsdE1vZGUoKSk7CisgICAgICAgIH0pOwor
ICAgIH0pOworfQorCit2b2lkIFdvcmtlck1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyOjpjaGVj
a1Byb2Nlc3NMb2NhbFBvcnRGb3JBY3Rpdml0eShjb25zdCBNZXNzYWdlUG9ydElkZW50aWZpZXIm
IGlkZW50aWZpZXIsIFByb2Nlc3NJZGVudGlmaWVyIHByb2Nlc3NJZGVudGlmaWVyLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKEhhc0FjdGl2aXR5KT4mJiBjYWxsYmFjaykKK3sKKyAgICB1aW50NjRf
dCBjYWxsYmFja0lkZW50aWZpZXIgPSArK21fbGFzdENhbGxiYWNrSWRlbnRpZmllcjsKKyAgICBt
X2FjdGl2aXR5Q2FsbGJhY2tzLmFkZChjYWxsYmFja0lkZW50aWZpZXIsIFdURk1vdmUoY2FsbGJh
Y2spKTsKKworICAgIGNhbGxPbk1haW5UaHJlYWQoW3RoaXMsIHdvcmtlclRocmVhZCA9IG1ha2VS
ZWYobV9zY29wZS50aHJlYWQoKSksIGNhbGxiYWNrSWRlbnRpZmllciwgaWRlbnRpZmllciwgcHJv
Y2Vzc0lkZW50aWZpZXJdKCkgbXV0YWJsZSB7CisgICAgICAgIE1lc3NhZ2VQb3J0Q2hhbm5lbFBy
b3ZpZGVyOjpzaW5nbGV0b24oKS5jaGVja1Byb2Nlc3NMb2NhbFBvcnRGb3JBY3Rpdml0eShpZGVu
dGlmaWVyLCBwcm9jZXNzSWRlbnRpZmllciwgW3RoaXMsIHdvcmtlclRocmVhZCA9IFdURk1vdmUo
d29ya2VyVGhyZWFkKSwgY2FsbGJhY2tJZGVudGlmaWVyXShhdXRvIGhhc0FjdGl2aXR5KSB7Cisg
ICAgICAgICAgICB3b3JrZXJUaHJlYWQtPnJ1bkxvb3AoKS5wb3N0VGFza0Zvck1vZGUoW3RoaXMs
IGNhbGxiYWNrSWRlbnRpZmllciwgaGFzQWN0aXZpdHldKGF1dG8mIHNjb3BlKSBtdXRhYmxlIHsK
KyAgICAgICAgICAgICAgICBBU1NFUlRfVU5VU0VEKHNjb3BlLCB0aGlzID09ICZkb3duY2FzdDxX
b3JrZXJHbG9iYWxTY29wZT4oc2NvcGUpLm1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyKCkpOwor
ICAgICAgICAgICAgICAgIG1fYWN0aXZpdHlDYWxsYmFja3MudGFrZShjYWxsYmFja0lkZW50aWZp
ZXIpKGhhc0FjdGl2aXR5KTsKKyAgICAgICAgICAgIH0sIFdvcmtlclJ1bkxvb3A6OmRlZmF1bHRN
b2RlKCkpOworICAgICAgICB9KTsKKyAgICB9KTsKK30KKworfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL21lc3NhZ2Vwb3J0cy9Xb3JrZXJNZXNz
YWdlUG9ydENoYW5uZWxQcm92aWRlci5oIGIvU291cmNlL1dlYkNvcmUvZG9tL21lc3NhZ2Vwb3J0
cy9Xb3JrZXJNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg3ZDAyMGFm
NGNjMjk0NGQwMmE3ZmQxZTc0NTU3ZWZiNTI0OWQxZWUKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vbWVzc2FnZXBvcnRzL1dvcmtlck1lc3NhZ2VQb3J0Q2hhbm5lbFByb3Zp
ZGVyLmgKQEAgLTAsMCArMSw2MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxOSBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBgQVMgSVMnJwor
ICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklCVVRPUlMKKyAq
IEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUws
IEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQg
Tk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNF
UlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKKyAqIElO
VEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBBTlkgV0FZIE9V
VCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRgorICogVEhF
IFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5j
bHVkZSAiTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXIuaCIKKyNpbmNsdWRlIDx3dGYvQ29tcGxl
dGlvbkhhbmRsZXIuaD4KKyNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9W
ZWN0b3IuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBXb3JrZXJHbG9iYWxTY29w
ZTsKKworY2xhc3MgV29ya2VyTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXIgZmluYWwgOiBwdWJs
aWMgTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXIgeworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NB
VEVEOworcHVibGljOgorICAgIGV4cGxpY2l0IFdvcmtlck1lc3NhZ2VQb3J0Q2hhbm5lbFByb3Zp
ZGVyKFdvcmtlckdsb2JhbFNjb3BlJik7CisgICAgfldvcmtlck1lc3NhZ2VQb3J0Q2hhbm5lbFBy
b3ZpZGVyKCk7CisKK3ByaXZhdGU6CisgICAgdm9pZCBjcmVhdGVOZXdNZXNzYWdlUG9ydENoYW5u
ZWwoY29uc3QgTWVzc2FnZVBvcnRJZGVudGlmaWVyJiBsb2NhbCwgY29uc3QgTWVzc2FnZVBvcnRJ
ZGVudGlmaWVyJiByZW1vdGUpIGZpbmFsOworICAgIHZvaWQgZW50YW5nbGVMb2NhbFBvcnRJblRo
aXNQcm9jZXNzVG9SZW1vdGUoY29uc3QgTWVzc2FnZVBvcnRJZGVudGlmaWVyJiBsb2NhbCwgY29u
c3QgTWVzc2FnZVBvcnRJZGVudGlmaWVyJiByZW1vdGUpIGZpbmFsOworICAgIHZvaWQgbWVzc2Fn
ZVBvcnREaXNlbnRhbmdsZWQoY29uc3QgTWVzc2FnZVBvcnRJZGVudGlmaWVyJiBsb2NhbCkgZmlu
YWw7CisgICAgdm9pZCBtZXNzYWdlUG9ydENsb3NlZChjb25zdCBNZXNzYWdlUG9ydElkZW50aWZp
ZXImIGxvY2FsKSBmaW5hbDsKKyAgICB2b2lkIHBvc3RNZXNzYWdlVG9SZW1vdGUoY29uc3QgTWVz
c2FnZVdpdGhNZXNzYWdlUG9ydHMmLCBjb25zdCBNZXNzYWdlUG9ydElkZW50aWZpZXImIHJlbW90
ZVRhcmdldCkgZmluYWw7CisgICAgdm9pZCB0YWtlQWxsTWVzc2FnZXNGb3JQb3J0KGNvbnN0IE1l
c3NhZ2VQb3J0SWRlbnRpZmllciYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPE1lc3Nh
Z2VXaXRoTWVzc2FnZVBvcnRzPiYmLCBGdW5jdGlvbjx2b2lkKCk+JiYpPiYmKSBmaW5hbDsKKyAg
ICB2b2lkIGNoZWNrUmVtb3RlUG9ydEZvckFjdGl2aXR5KGNvbnN0IE1lc3NhZ2VQb3J0SWRlbnRp
ZmllciYgcmVtb3RlVGFyZ2V0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEhhc0FjdGl2aXR5KT4m
JiBjYWxsYmFjaykgZmluYWw7CisKKyAgICB2b2lkIGNoZWNrUHJvY2Vzc0xvY2FsUG9ydEZvckFj
dGl2aXR5KGNvbnN0IE1lc3NhZ2VQb3J0SWRlbnRpZmllciYsIFByb2Nlc3NJZGVudGlmaWVyLCBD
b21wbGV0aW9uSGFuZGxlcjx2b2lkKEhhc0FjdGl2aXR5KT4mJikgZmluYWw7CisKKyAgICBXb3Jr
ZXJHbG9iYWxTY29wZSYgbV9zY29wZTsKKworICAgIHVpbnQ2NF90IG1fbGFzdENhbGxiYWNrSWRl
bnRpZmllciB7IDAgfTsKKyAgICBIYXNoTWFwPHVpbnQ2NF90LCBDb21wbGV0aW9uSGFuZGxlcjx2
b2lkKFZlY3RvcjxNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cz4mJiwgRnVuY3Rpb248dm9pZCgpPiYm
KT4+IG1fdGFrZUFsbE1lc3NhZ2VzQ2FsbGJhY2tzOworICAgIEhhc2hNYXA8dWludDY0X3QsIENv
bXBsZXRpb25IYW5kbGVyPHZvaWQoSGFzQWN0aXZpdHkpPj4gbV9hY3Rpdml0eUNhbGxiYWNrczsK
K307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3dvcmtlcnMvV29ya2VyR2xvYmFsU2NvcGUuY3BwIGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9X
b3JrZXJHbG9iYWxTY29wZS5jcHAKaW5kZXggNWUxNTViNzgwMjA1MjU4NzdkNGQ3MDdjNWE5Yjhi
ZmVmZTRkMzcyYy4uYTk3MGE3YWRhNjc1YTE2Y2YxNjg3MGVjM2ViM2E2YzM0Y2VkYzJmNiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5jcHAKQEAgLTQ2Myw2
ICs0NjMsMTMgQEAgV29ya2VyQ2FjaGVTdG9yYWdlQ29ubmVjdGlvbiYgV29ya2VyR2xvYmFsU2Nv
cGU6OmNhY2hlU3RvcmFnZUNvbm5lY3Rpb24oKQogICAgIHJldHVybiAqbV9jYWNoZVN0b3JhZ2VD
b25uZWN0aW9uOwogfQogCitNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlciYgV29ya2VyR2xvYmFs
U2NvcGU6Om1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyKCkKK3sKKyAgICBpZiAoIW1fbWVzc2Fn
ZVBvcnRDaGFubmVsUHJvdmlkZXIpCisgICAgICAgIG1fbWVzc2FnZVBvcnRDaGFubmVsUHJvdmlk
ZXIgPSBtYWtlVW5pcXVlPFdvcmtlck1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyPigqdGhpcyk7
CisgICAgcmV0dXJuICptX21lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyOworfQorCiB2b2lkIFdv
cmtlckdsb2JhbFNjb3BlOjpjcmVhdGVJbWFnZUJpdG1hcChJbWFnZUJpdG1hcDo6U291cmNlJiYg
c291cmNlLCBJbWFnZUJpdG1hcE9wdGlvbnMmJiBvcHRpb25zLCBJbWFnZUJpdG1hcDo6UHJvbWlz
ZSYmIHByb21pc2UpCiB7CiAgICAgSW1hZ2VCaXRtYXA6OmNyZWF0ZVByb21pc2UoKnRoaXMsIFdU
Rk1vdmUoc291cmNlKSwgV1RGTW92ZShvcHRpb25zKSwgV1RGTW92ZShwcm9taXNlKSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmggYi9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmgKaW5kZXggOWI3N2UyYzYxM2Fh
YjE5YTllYTU3ZjcxNWM4NWMxNGNiYmM4ZDUxNi4uMWI3MWMxMWFjYzRhOTAwZDliZTIxYTY1MTY2
MTkzMzUyMzRjOWVkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJH
bG9iYWxTY29wZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFsU2Nv
cGUuaApAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUgPHd0Zi9VUkwuaD4KICNpbmNsdWRlICJX
b3JrZXJDYWNoZVN0b3JhZ2VDb25uZWN0aW9uLmgiCiAjaW5jbHVkZSAiV29ya2VyRXZlbnRRdWV1
ZS5oIgorI2luY2x1ZGUgIldvcmtlck1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyLmgiCiAjaW5j
bHVkZSAiV29ya2VyU2NyaXB0Q29udHJvbGxlci5oIgogI2luY2x1ZGUgPEphdmFTY3JpcHRDb3Jl
L0NvbnNvbGVNZXNzYWdlLmg+CiAjaW5jbHVkZSA8bWVtb3J5PgpAQCAtNzMsNiArNzQsNyBAQCBw
dWJsaWM6CiAjZW5kaWYKIAogICAgIFdvcmtlckNhY2hlU3RvcmFnZUNvbm5lY3Rpb24mIGNhY2hl
U3RvcmFnZUNvbm5lY3Rpb24oKTsKKyAgICBNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlciYgbWVz
c2FnZVBvcnRDaGFubmVsUHJvdmlkZXIoKTsKIAogICAgIFdvcmtlclNjcmlwdENvbnRyb2xsZXIq
IHNjcmlwdCgpIHsgcmV0dXJuIG1fc2NyaXB0LmdldCgpOyB9CiAgICAgdm9pZCBjbGVhclNjcmlw
dCgpIHsgbV9zY3JpcHQgPSBudWxscHRyOyB9CkBAIC0yMTAsNyArMjEyLDcgQEAgcHJpdmF0ZToK
IAogICAgIFBBTDo6U2Vzc2lvbklEIG1fc2Vzc2lvbklEOwogICAgIFJlZlB0cjxXb3JrZXJDYWNo
ZVN0b3JhZ2VDb25uZWN0aW9uPiBtX2NhY2hlU3RvcmFnZUNvbm5lY3Rpb247Ci0KKyAgICBzdGQ6
OnVuaXF1ZV9wdHI8V29ya2VyTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXI+IG1fbWVzc2FnZVBv
cnRDaGFubmVsUHJvdmlkZXI7CiAgICAgdW5zaWduZWQgbG9uZyBtX3VuaXF1ZUlkZW50aWZpZXIg
eyAxIH07CiB9OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9VSU1lc3Nh
Z2VQb3J0Q2hhbm5lbFByb3ZpZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VJTWVz
c2FnZVBvcnRDaGFubmVsUHJvdmlkZXIuY3BwCmluZGV4IGZiNGM2NDRiZTJhZGM3N2U1NTdiZjBl
MjRjODZjZDk3YjVhMDllZTAuLjIwM2M2YjY4MDNlNzFiMjMxMGVjMzkyYTBkNWQ0MGM4ZmViZDc4
ZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VJTWVzc2FnZVBvcnRDaGFu
bmVsUHJvdmlkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VJTWVzc2FnZVBv
cnRDaGFubmVsUHJvdmlkZXIuY3BwCkBAIC0yOCw3ICsyOCw2IEBACiAKICNpbmNsdWRlICJXZWJQ
cm9jZXNzTWVzc2FnZXMuaCIKICNpbmNsdWRlICJXZWJQcm9jZXNzUHJveHkuaCIKLSNpbmNsdWRl
IDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KIAogbmFtZXNwYWNlIFdlYktpdCB7CiB1c2luZyBu
YW1lc3BhY2UgV2ViQ29yZTsKQEAgLTczLDE5ICs3MiwxOSBAQCB2b2lkIFVJTWVzc2FnZVBvcnRD
aGFubmVsUHJvdmlkZXI6Om1lc3NhZ2VQb3J0Q2xvc2VkKGNvbnN0IE1lc3NhZ2VQb3J0SWRlbnRp
ZmllcgogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCi12b2lkIFVJTWVzc2FnZVBvcnRD
aGFubmVsUHJvdmlkZXI6OnRha2VBbGxNZXNzYWdlc0ZvclBvcnQoY29uc3QgTWVzc2FnZVBvcnRJ
ZGVudGlmaWVyJiwgRnVuY3Rpb248dm9pZChWZWN0b3I8TWVzc2FnZVdpdGhNZXNzYWdlUG9ydHM+
JiYsIEZ1bmN0aW9uPHZvaWQoKT4mJik+JiYpCit2b2lkIFVJTWVzc2FnZVBvcnRDaGFubmVsUHJv
dmlkZXI6OnRha2VBbGxNZXNzYWdlc0ZvclBvcnQoY29uc3QgTWVzc2FnZVBvcnRJZGVudGlmaWVy
JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8TWVzc2FnZVdpdGhNZXNzYWdlUG9ydHM+
JiYsIEZ1bmN0aW9uPHZvaWQoKT4mJik+JiYpCiB7CiAgICAgLy8gU2hvdWxkIG5ldmVyIGJlIGNh
bGxlZCBpbiB0aGUgVUkgcHJvY2VzcyBwcm92aWRlci4KICAgICBBU1NFUlRfTk9UX1JFQUNIRUQo
KTsKIH0KIAotdm9pZCBVSU1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyOjpwb3N0TWVzc2FnZVRv
UmVtb3RlKE1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzJiYsIGNvbnN0IE1lc3NhZ2VQb3J0SWRlbnRp
ZmllciYpCit2b2lkIFVJTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXI6OnBvc3RNZXNzYWdlVG9S
ZW1vdGUoY29uc3QgTWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMmLCBjb25zdCBNZXNzYWdlUG9ydElk
ZW50aWZpZXImKQogewogICAgIC8vIFNob3VsZCBuZXZlciBiZSBjYWxsZWQgaW4gdGhlIFVJIHBy
b2Nlc3MgcHJvdmlkZXIuCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CiB9CiAKLXZvaWQgVUlN
ZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlcjo6Y2hlY2tSZW1vdGVQb3J0Rm9yQWN0aXZpdHkoY29u
c3QgTWVzc2FnZVBvcnRJZGVudGlmaWVyJiwgRnVuY3Rpb248dm9pZChIYXNBY3Rpdml0eSk+JiYp
Cit2b2lkIFVJTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXI6OmNoZWNrUmVtb3RlUG9ydEZvckFj
dGl2aXR5KGNvbnN0IE1lc3NhZ2VQb3J0SWRlbnRpZmllciYsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoSGFzQWN0aXZpdHkpPiYmKQogewogICAgIC8vIFNob3VsZCBuZXZlciBiZSBjYWxsZWQgaW4g
dGhlIFVJIHByb2Nlc3MgcHJvdmlkZXIuCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9VSU1lc3NhZ2VQb3J0Q2hhbm5lbFByb3Zp
ZGVyLmggYi9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9VSU1lc3NhZ2VQb3J0Q2hhbm5lbFByb3Zp
ZGVyLmgKaW5kZXggNmMyNjk2MDRhMjhjYzQ1NjM1ZDRiMzZiZTM1YWU2NmIzMTA2NDkyNS4uYzY3
OWUzZWIwMjM0MDdmNTUxMzA0YzRjNTQ1NTk3ZWQyZWZkMzcwNSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9VSVByb2Nlc3MvVUlNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlci5oCisrKyBiL1Nv
dXJjZS9XZWJLaXQvVUlQcm9jZXNzL1VJTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXIuaApAQCAt
NDMsOSArNDMsOSBAQCBwcml2YXRlOgogICAgIHZvaWQgZW50YW5nbGVMb2NhbFBvcnRJblRoaXNQ
cm9jZXNzVG9SZW1vdGUoY29uc3QgV2ViQ29yZTo6TWVzc2FnZVBvcnRJZGVudGlmaWVyJiBsb2Nh
bCwgY29uc3QgV2ViQ29yZTo6TWVzc2FnZVBvcnRJZGVudGlmaWVyJiByZW1vdGUpIGZpbmFsOwog
ICAgIHZvaWQgbWVzc2FnZVBvcnREaXNlbnRhbmdsZWQoY29uc3QgV2ViQ29yZTo6TWVzc2FnZVBv
cnRJZGVudGlmaWVyJiBsb2NhbCkgZmluYWw7CiAgICAgdm9pZCBtZXNzYWdlUG9ydENsb3NlZChj
b25zdCBXZWJDb3JlOjpNZXNzYWdlUG9ydElkZW50aWZpZXImIGxvY2FsKSBmaW5hbDsKLSAgICB2
b2lkIHRha2VBbGxNZXNzYWdlc0ZvclBvcnQoY29uc3QgV2ViQ29yZTo6TWVzc2FnZVBvcnRJZGVu
dGlmaWVyJiwgRnVuY3Rpb248dm9pZChWZWN0b3I8V2ViQ29yZTo6TWVzc2FnZVdpdGhNZXNzYWdl
UG9ydHM+JiYsIEZ1bmN0aW9uPHZvaWQoKT4mJik+JiYpIGZpbmFsOwotICAgIHZvaWQgcG9zdE1l
c3NhZ2VUb1JlbW90ZShXZWJDb3JlOjpNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cyYmLCBjb25zdCBX
ZWJDb3JlOjpNZXNzYWdlUG9ydElkZW50aWZpZXImIHJlbW90ZVRhcmdldCkgZmluYWw7Ci0gICAg
dm9pZCBjaGVja1JlbW90ZVBvcnRGb3JBY3Rpdml0eShjb25zdCBXZWJDb3JlOjpNZXNzYWdlUG9y
dElkZW50aWZpZXImIHJlbW90ZVRhcmdldCwgRnVuY3Rpb248dm9pZChIYXNBY3Rpdml0eSk+JiYg
Y2FsbGJhY2spIGZpbmFsOworICAgIHZvaWQgdGFrZUFsbE1lc3NhZ2VzRm9yUG9ydChjb25zdCBX
ZWJDb3JlOjpNZXNzYWdlUG9ydElkZW50aWZpZXImLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZl
Y3RvcjxXZWJDb3JlOjpNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cz4mJiwgRnVuY3Rpb248dm9pZCgp
PiYmKT4mJikgZmluYWw7CisgICAgdm9pZCBwb3N0TWVzc2FnZVRvUmVtb3RlKGNvbnN0IFdlYkNv
cmU6Ok1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzJiwgY29uc3QgV2ViQ29yZTo6TWVzc2FnZVBvcnRJ
ZGVudGlmaWVyJiByZW1vdGVUYXJnZXQpIGZpbmFsOworICAgIHZvaWQgY2hlY2tSZW1vdGVQb3J0
Rm9yQWN0aXZpdHkoY29uc3QgV2ViQ29yZTo6TWVzc2FnZVBvcnRJZGVudGlmaWVyJiByZW1vdGVU
YXJnZXQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSGFzQWN0aXZpdHkpPiYmIGNhbGxiYWNrKSBm
aW5hbDsKICAgICB2b2lkIGNoZWNrUHJvY2Vzc0xvY2FsUG9ydEZvckFjdGl2aXR5KGNvbnN0IFdl
YkNvcmU6Ok1lc3NhZ2VQb3J0SWRlbnRpZmllciYsIFdlYkNvcmU6OlByb2Nlc3NJZGVudGlmaWVy
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEhhc0FjdGl2aXR5KT4mJikgZmluYWw7CiAKICAgICBX
ZWJDb3JlOjpNZXNzYWdlUG9ydENoYW5uZWxSZWdpc3RyeSBtX3JlZ2lzdHJ5OwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYk1lc3NhZ2VQb3J0
Q2hhbm5lbFByb3ZpZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlci5jcHAKaW5kZXggNmQyODU2YTA0ZWRh
MjkyZjZmNmE2ODdjMGUxNmMyMTAyYTgzMTU1MS4uOGU2MjE2YTc3MTc4MDdlZWNjZmI3ZDQ1ODQ4
NDdkNzU2ZDc5NDBjMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNv
cmVTdXBwb3J0L1dlYk1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViTWVzc2FnZVBvcnRDaGFubmVsUHJv
dmlkZXIuY3BwCkBAIC03MCwxOCArNzAsMTQgQEAgdm9pZCBXZWJNZXNzYWdlUG9ydENoYW5uZWxQ
cm92aWRlcjo6bWVzc2FnZVBvcnRDbG9zZWQoY29uc3QgTWVzc2FnZVBvcnRJZGVudGlmaWUKICAg
ICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5k
KE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6Ok1lc3NhZ2VQb3J0Q2xvc2VkKHBvcnQpLCAwKTsK
IH0KIAotdm9pZCBXZWJNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlcjo6dGFrZUFsbE1lc3NhZ2Vz
Rm9yUG9ydChjb25zdCBNZXNzYWdlUG9ydElkZW50aWZpZXImIHBvcnQsIEZ1bmN0aW9uPHZvaWQo
VmVjdG9yPE1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzPiYmLCBGdW5jdGlvbjx2b2lkKCk+JiYpPiYm
IGNvbXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlcjo6
dGFrZUFsbE1lc3NhZ2VzRm9yUG9ydChjb25zdCBNZXNzYWdlUG9ydElkZW50aWZpZXImIHBvcnQs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPE1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzPiYm
LCBGdW5jdGlvbjx2b2lkKCk+JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogewotICAgIHN0YXRp
YyBzdGQ6OmF0b21pYzx1aW50NjRfdD4gY3VycmVudEhhbmRsZXJJZGVudGlmaWVyOworICAgIEFT
U0VSVChpc01haW5UaHJlYWQoKSk7CisgICAgc3RhdGljIHVpbnQ2NF90IGN1cnJlbnRIYW5kbGVy
SWRlbnRpZmllcjsKICAgICB1aW50NjRfdCBpZGVudGlmaWVyID0gKytjdXJyZW50SGFuZGxlcklk
ZW50aWZpZXI7CiAKLSAgICB7Ci0gICAgICAgIExvY2tlcjxMb2NrPiBsb2NrZXIobV90YWtlQWxs
TWVzc2FnZXNDYWxsYmFja0xvY2spOwotICAgICAgICBhdXRvIHJlc3VsdCA9IG1fdGFrZUFsbE1l
c3NhZ2VzQ2FsbGJhY2tzLmVuc3VyZShpZGVudGlmaWVyLCBbY29tcGxldGlvbkhhbmRsZXIgPSBX
VEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKV0oKSBtdXRhYmxlIHsKLSAgICAgICAgICAgIHJldHVy
biBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKTsKLSAgICAgICAgfSk7Ci0gICAgICAgIEFTU0VS
VF9VTlVTRUQocmVzdWx0LCByZXN1bHQuaXNOZXdFbnRyeSk7Ci0gICAgfQorICAgIEFTU0VSVCgh
bV90YWtlQWxsTWVzc2FnZXNDYWxsYmFja3MuY29udGFpbnMoaWRlbnRpZmllcikpOworICAgIG1f
dGFrZUFsbE1lc3NhZ2VzQ2FsbGJhY2tzLmFkZChpZGVudGlmaWVyLCBXVEZNb3ZlKGNvbXBsZXRp
b25IYW5kbGVyKSk7CiAKICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNz
Q29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OlRha2VBbGxNZXNz
YWdlc0ZvclBvcnQocG9ydCwgaWRlbnRpZmllciksIDApOwogfQpAQCAtOTAsMTAgKzg2LDcgQEAg
dm9pZCBXZWJNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlcjo6ZGlkVGFrZUFsbE1lc3NhZ2VzRm9y
UG9ydChWZWN0b3I8TWVzc2FnZVdpdGgKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwog
Ci0gICAgTG9ja2VyPExvY2s+IGxvY2tlcihtX3Rha2VBbGxNZXNzYWdlc0NhbGxiYWNrTG9jayk7
CiAgICAgYXV0byBjYWxsYmFjayA9IG1fdGFrZUFsbE1lc3NhZ2VzQ2FsbGJhY2tzLnRha2UobWVz
c2FnZUNhbGxiYWNrSWRlbnRpZmllcik7Ci0gICAgbG9ja2VyLnVubG9ja0Vhcmx5KCk7Ci0KICAg
ICBBU1NFUlQoY2FsbGJhY2spOwogICAgIGNhbGxiYWNrKFdURk1vdmUobWVzc2FnZXMpLCBbbWVz
c2FnZUJhdGNoSWRlbnRpZmllcl0gewogICAgICAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5w
YXJlbnRQcm9jZXNzQ29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6
OkRpZERlbGl2ZXJNZXNzYWdlUG9ydE1lc3NhZ2VzKG1lc3NhZ2VCYXRjaElkZW50aWZpZXIpLCAw
KTsKQEAgLTEwNCwxNyArOTcsMTQgQEAgdm9pZCBXZWJNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRl
cjo6ZGlkQ2hlY2tSZW1vdGVQb3J0Rm9yQWN0aXZpdHkodWludDY0X3QgY2FsbGIKIHsKICAgICBB
U1NFUlQoaXNNYWluVGhyZWFkKCkpOwogCi0gICAgTG9ja2VyPExvY2s+IGxvY2tlcihtX3JlbW90
ZUFjdGl2aXR5Q2FsbGJhY2tMb2NrKTsKICAgICBhdXRvIGNhbGxiYWNrID0gbV9yZW1vdGVBY3Rp
dml0eUNhbGxiYWNrcy50YWtlKGNhbGxiYWNrSWRlbnRpZmllcik7Ci0gICAgbG9ja2VyLnVubG9j
a0Vhcmx5KCk7Ci0KICAgICBBU1NFUlQoY2FsbGJhY2spOwogICAgIGNhbGxiYWNrKGhhc0FjdGl2
aXR5ID8gSGFzQWN0aXZpdHk6OlllcyA6IEhhc0FjdGl2aXR5OjpObyk7CiB9CiAKLXZvaWQgV2Vi
TWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXI6OnBvc3RNZXNzYWdlVG9SZW1vdGUoTWVzc2FnZVdp
dGhNZXNzYWdlUG9ydHMmJiBtZXNzYWdlLCBjb25zdCBNZXNzYWdlUG9ydElkZW50aWZpZXImIHJl
bW90ZVRhcmdldCkKK3ZvaWQgV2ViTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXI6OnBvc3RNZXNz
YWdlVG9SZW1vdGUoY29uc3QgTWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMmIG1lc3NhZ2UsIGNvbnN0
IE1lc3NhZ2VQb3J0SWRlbnRpZmllciYgcmVtb3RlVGFyZ2V0KQogewotICAgIFdlYlByb2Nlc3M6
OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6Oldl
YlByb2Nlc3NQcm94eTo6UG9zdE1lc3NhZ2VUb1JlbW90ZShXVEZNb3ZlKG1lc3NhZ2UpLCByZW1v
dGVUYXJnZXQpLCAwKTsKKyAgICBXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS5wYXJlbnRQcm9jZXNz
Q29ubmVjdGlvbigpLT5zZW5kKE1lc3NhZ2VzOjpXZWJQcm9jZXNzUHJveHk6OlBvc3RNZXNzYWdl
VG9SZW1vdGUobWVzc2FnZSwgcmVtb3RlVGFyZ2V0KSwgMCk7CiB9CiAKIHZvaWQgV2ViTWVzc2Fn
ZVBvcnRDaGFubmVsUHJvdmlkZXI6OmNoZWNrUHJvY2Vzc0xvY2FsUG9ydEZvckFjdGl2aXR5KGNv
bnN0IE1lc3NhZ2VQb3J0SWRlbnRpZmllciYgaWRlbnRpZmllciwgdWludDY0X3QgY2FsbGJhY2tJ
ZGVudGlmaWVyKQpAQCAtMTI4LDE2ICsxMTgsMTUgQEAgdm9pZCBXZWJNZXNzYWdlUG9ydENoYW5u
ZWxQcm92aWRlcjo6Y2hlY2tQcm9jZXNzTG9jYWxQb3J0Rm9yQWN0aXZpdHkoY29uc3QgTWVzc2EK
ICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKIH0KIAotdm9pZCBXZWJNZXNzYWdlUG9ydENoYW5u
ZWxQcm92aWRlcjo6Y2hlY2tSZW1vdGVQb3J0Rm9yQWN0aXZpdHkoY29uc3QgTWVzc2FnZVBvcnRJ
ZGVudGlmaWVyJiByZW1vdGVUYXJnZXQsIEZ1bmN0aW9uPHZvaWQoSGFzQWN0aXZpdHkpPiYmIGNv
bXBsZXRpb25IYW5kbGVyKQordm9pZCBXZWJNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlcjo6Y2hl
Y2tSZW1vdGVQb3J0Rm9yQWN0aXZpdHkoY29uc3QgTWVzc2FnZVBvcnRJZGVudGlmaWVyJiByZW1v
dGVUYXJnZXQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSGFzQWN0aXZpdHkpPiYmIGNvbXBsZXRp
b25IYW5kbGVyKQogewotICAgIHN0YXRpYyBzdGQ6OmF0b21pYzx1aW50NjRfdD4gY3VycmVudEhh
bmRsZXJJZGVudGlmaWVyOworICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CisKKyAgICBzdGF0
aWMgdWludDY0X3QgY3VycmVudEhhbmRsZXJJZGVudGlmaWVyOwogICAgIHVpbnQ2NF90IGlkZW50
aWZpZXIgPSArK2N1cnJlbnRIYW5kbGVySWRlbnRpZmllcjsKIAotICAgIHsKLSAgICAgICAgTG9j
a2VyPExvY2s+IGxvY2tlcihtX3JlbW90ZUFjdGl2aXR5Q2FsbGJhY2tMb2NrKTsKLSAgICAgICAg
QVNTRVJUKCFtX3JlbW90ZUFjdGl2aXR5Q2FsbGJhY2tzLmNvbnRhaW5zKGlkZW50aWZpZXIpKTsK
LSAgICAgICAgbV9yZW1vdGVBY3Rpdml0eUNhbGxiYWNrcy5zZXQoaWRlbnRpZmllciwgV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlcikpOwotICAgIH0KKyAgICBBU1NFUlQoIW1fcmVtb3RlQWN0aXZp
dHlDYWxsYmFja3MuY29udGFpbnMoaWRlbnRpZmllcikpOworICAgIG1fcmVtb3RlQWN0aXZpdHlD
YWxsYmFja3Muc2V0KGlkZW50aWZpZXIsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIAog
ICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNl
bmQoTWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6Q2hlY2tSZW1vdGVQb3J0Rm9yQWN0aXZpdHko
cmVtb3RlVGFyZ2V0LCBpZGVudGlmaWVyKSwgMCk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
S2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlk
ZXIuaCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJNZXNzYWdl
UG9ydENoYW5uZWxQcm92aWRlci5oCmluZGV4IDRiYjM3ZmRkNjA3Nzc0ZWQ4MDlhOTY3YTc3NTE1
ZmJhZmI2ZWY2YTEuLmQwNTA2ODQ4MWI0OTE0ZmZhYWVjODEzNGFmZWI4NzUzNWRlYjdiNmUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJNZXNz
YWdlUG9ydENoYW5uZWxQcm92aWRlci5oCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlci5oCkBAIC00OCwxNyAr
NDgsMTcgQEAgcHJpdmF0ZToKICAgICB2b2lkIGVudGFuZ2xlTG9jYWxQb3J0SW5UaGlzUHJvY2Vz
c1RvUmVtb3RlKGNvbnN0IFdlYkNvcmU6Ok1lc3NhZ2VQb3J0SWRlbnRpZmllciYgbG9jYWwsIGNv
bnN0IFdlYkNvcmU6Ok1lc3NhZ2VQb3J0SWRlbnRpZmllciYgcmVtb3RlKSBmaW5hbDsKICAgICB2
b2lkIG1lc3NhZ2VQb3J0RGlzZW50YW5nbGVkKGNvbnN0IFdlYkNvcmU6Ok1lc3NhZ2VQb3J0SWRl
bnRpZmllciYgbG9jYWwpIGZpbmFsOwogICAgIHZvaWQgbWVzc2FnZVBvcnRDbG9zZWQoY29uc3Qg
V2ViQ29yZTo6TWVzc2FnZVBvcnRJZGVudGlmaWVyJiBsb2NhbCkgZmluYWw7Ci0gICAgdm9pZCB0
YWtlQWxsTWVzc2FnZXNGb3JQb3J0KGNvbnN0IFdlYkNvcmU6Ok1lc3NhZ2VQb3J0SWRlbnRpZmll
ciYsIEZ1bmN0aW9uPHZvaWQoVmVjdG9yPFdlYkNvcmU6Ok1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRz
PiYmLCBGdW5jdGlvbjx2b2lkKCk+JiYpPiYmKSBmaW5hbDsKLSAgICB2b2lkIHBvc3RNZXNzYWdl
VG9SZW1vdGUoV2ViQ29yZTo6TWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMmJiwgY29uc3QgV2ViQ29y
ZTo6TWVzc2FnZVBvcnRJZGVudGlmaWVyJiByZW1vdGVUYXJnZXQpIGZpbmFsOworICAgIHZvaWQg
dGFrZUFsbE1lc3NhZ2VzRm9yUG9ydChjb25zdCBXZWJDb3JlOjpNZXNzYWdlUG9ydElkZW50aWZp
ZXImLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxXZWJDb3JlOjpNZXNzYWdlV2l0aE1l
c3NhZ2VQb3J0cz4mJiwgRnVuY3Rpb248dm9pZCgpPiYmKT4mJikgZmluYWw7CisgICAgdm9pZCBw
b3N0TWVzc2FnZVRvUmVtb3RlKGNvbnN0IFdlYkNvcmU6Ok1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRz
JiwgY29uc3QgV2ViQ29yZTo6TWVzc2FnZVBvcnRJZGVudGlmaWVyJiByZW1vdGVUYXJnZXQpIGZp
bmFsOwogICAgIHZvaWQgY2hlY2tQcm9jZXNzTG9jYWxQb3J0Rm9yQWN0aXZpdHkoY29uc3QgV2Vi
Q29yZTo6TWVzc2FnZVBvcnRJZGVudGlmaWVyJiwgV2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSGFzQWN0aXZpdHkpPiYmKSBmaW5hbDsKIAogICAgIC8v
IFRvIGJlIGNhbGxlZCBvbmx5IGluIHRoZSBVSSBwcm9jZXNzCi0gICAgdm9pZCBjaGVja1JlbW90
ZVBvcnRGb3JBY3Rpdml0eShjb25zdCBXZWJDb3JlOjpNZXNzYWdlUG9ydElkZW50aWZpZXImIHJl
bW90ZVRhcmdldCwgRnVuY3Rpb248dm9pZChIYXNBY3Rpdml0eSk+JiYgY2FsbGJhY2spIGZpbmFs
OworICAgIHZvaWQgY2hlY2tSZW1vdGVQb3J0Rm9yQWN0aXZpdHkoY29uc3QgV2ViQ29yZTo6TWVz
c2FnZVBvcnRJZGVudGlmaWVyJiByZW1vdGVUYXJnZXQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
SGFzQWN0aXZpdHkpPiYmIGNhbGxiYWNrKSBmaW5hbDsKIAogICAgIExvY2sgbV90YWtlQWxsTWVz
c2FnZXNDYWxsYmFja0xvY2s7Ci0gICAgSGFzaE1hcDx1aW50NjRfdCwgRnVuY3Rpb248dm9pZChW
ZWN0b3I8V2ViQ29yZTo6TWVzc2FnZVdpdGhNZXNzYWdlUG9ydHM+JiYsIEZ1bmN0aW9uPHZvaWQo
KT4mJik+PiBtX3Rha2VBbGxNZXNzYWdlc0NhbGxiYWNrczsKKyAgICBIYXNoTWFwPHVpbnQ2NF90
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxXZWJDb3JlOjpNZXNzYWdlV2l0aE1lc3Nh
Z2VQb3J0cz4mJiwgRnVuY3Rpb248dm9pZCgpPiYmKT4+IG1fdGFrZUFsbE1lc3NhZ2VzQ2FsbGJh
Y2tzOwogICAgIExvY2sgbV9yZW1vdGVBY3Rpdml0eUNhbGxiYWNrTG9jazsKLSAgICBIYXNoTWFw
PHVpbnQ2NF90LCBGdW5jdGlvbjx2b2lkKEhhc0FjdGl2aXR5KT4+IG1fcmVtb3RlQWN0aXZpdHlD
YWxsYmFja3M7CisgICAgSGFzaE1hcDx1aW50NjRfdCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChI
YXNBY3Rpdml0eSk+PiBtX3JlbW90ZUFjdGl2aXR5Q2FsbGJhY2tzOwogfTsKIAogfSAvLyBuYW1l
c3BhY2UgV2ViS2l0Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>377839</attachid>
            <date>2019-09-01 22:51:08 -0700</date>
            <delta_ts>2019-09-02 02:31:21 -0700</delta_ts>
            <desc>Patch for landing</desc>
            <filename>bug-201333-20190902075106.patch</filename>
            <type>text/plain</type>
            <size>56583</size>
            <attacher name="youenn fablet">youennf</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjQ5MzY3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYTg1ZTMzMDgwYWQwYjI3
MGRhNGRkODZjMTlhNzkzYTRhZGQyNTZkNy4uZWVlZTU4MTAyMWI2ZDhhYzAxYWE3NGQ0ZmEzYWZl
OTk2MDQ2ZjY2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYyIEBACisyMDE5LTA5LTAxICBZb3Vl
bm4gRmFibGV0ICA8eW91ZW5uQGFwcGxlLmNvbT4KKworICAgICAgICBJbnRyb2R1Y2UgV29ya2Vy
TWVzc2FnZVBvcnRDaGFubmVsUmVnaXN0cnkKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIwMTMzMworCisgICAgICAgIFJldmlld2VkIGJ5IEFsZXggQ2hy
aXN0ZW5zZW4uCisKKyAgICAgICAgVGhpcyBwYXRjaCBpbnRyb2R1Y2VzIGEgZGVkaWNhdGVkIHJl
Z2lzdHJ5IGZvciB3b3JrZXJzLgorICAgICAgICBUaGlzIHJlZ2lzdHJ5IHdpbGwgaG9wIHRvIHRo
ZSBtYWluIHRocmVhZCBhbmQgdXNlIHRoZQorICAgICAgICByZWd1bGFyIG1haW4gdGhyZWFkIHJl
Z2lzdHJ5IHRvIGRvIHRoZSBhY3R1YWwgcHJvY2Vzc2luZy4KKworICAgICAgICBDb3ZlcmVkIGJ5
IGV4aXN0aW5nIHRlc3RzLgorCisgICAgICAgICogU291cmNlcy50eHQ6CisgICAgICAgICogV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudDo6bWVzc2FnZVBvcnRDaGFubmVsUHJvdmlk
ZXIpOgorICAgICAgICAqIGRvbS9Eb2N1bWVudC5oOgorICAgICAgICAqIGRvbS9NZXNzYWdlQ2hh
bm5lbC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZXNzYWdlQ2hhbm5lbDo6TWVzc2FnZUNoYW5u
ZWwpOgorICAgICAgICAqIGRvbS9NZXNzYWdlUG9ydC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpN
ZXNzYWdlUG9ydDo6ZW50YW5nbGUpOgorICAgICAgICAoV2ViQ29yZTo6TWVzc2FnZVBvcnQ6OnBv
c3RNZXNzYWdlKToKKyAgICAgICAgKFdlYkNvcmU6Ok1lc3NhZ2VQb3J0OjpkaXNlbnRhbmdsZSk6
CisgICAgICAgIChXZWJDb3JlOjpNZXNzYWdlUG9ydDo6Y2xvc2UpOgorICAgICAgICAoV2ViQ29y
ZTo6TWVzc2FnZVBvcnQ6OmRpc3BhdGNoTWVzc2FnZXMpOgorICAgICAgICAoV2ViQ29yZTo6TWVz
c2FnZVBvcnQ6Omhhc1BlbmRpbmdBY3Rpdml0eSBjb25zdCk6CisgICAgICAgICogZG9tL21lc3Nh
Z2Vwb3J0cy9NZXNzYWdlUG9ydENoYW5uZWwuY3BwOgorICAgICAgICAoV2ViQ29yZTo6TWVzc2Fn
ZVBvcnRDaGFubmVsOjp0YWtlQWxsTWVzc2FnZXNGb3JQb3J0KToKKyAgICAgICAgKFdlYkNvcmU6
Ok1lc3NhZ2VQb3J0Q2hhbm5lbDo6Y2hlY2tSZW1vdGVQb3J0Rm9yQWN0aXZpdHkpOgorICAgICAg
ICAqIGRvbS9tZXNzYWdlcG9ydHMvTWVzc2FnZVBvcnRDaGFubmVsLmg6CisgICAgICAgICogZG9t
L21lc3NhZ2Vwb3J0cy9NZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlcjo6c2luZ2xldG9uKToKKyAgICAgICAg
KFdlYkNvcmU6Ok1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyOjpmcm9tQ29udGV4dCk6CisgICAg
ICAgICogZG9tL21lc3NhZ2Vwb3J0cy9NZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlci5oOgorICAg
ICAgICAqIGRvbS9tZXNzYWdlcG9ydHMvTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXJJbXBsLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6Ok1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVySW1wbDo6dGFr
ZUFsbE1lc3NhZ2VzRm9yUG9ydCk6CisgICAgICAgIChXZWJDb3JlOjpNZXNzYWdlUG9ydENoYW5u
ZWxQcm92aWRlckltcGw6OmNoZWNrUmVtb3RlUG9ydEZvckFjdGl2aXR5KToKKyAgICAgICAgKiBk
b20vbWVzc2FnZXBvcnRzL01lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVySW1wbC5oOgorICAgICAg
ICAqIGRvbS9tZXNzYWdlcG9ydHMvTWVzc2FnZVBvcnRDaGFubmVsUmVnaXN0cnkuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6TWVzc2FnZVBvcnRDaGFubmVsUmVnaXN0cnk6OnRha2VBbGxNZXNzYWdl
c0ZvclBvcnQpOgorICAgICAgICAoV2ViQ29yZTo6TWVzc2FnZVBvcnRDaGFubmVsUmVnaXN0cnk6
OmNoZWNrUmVtb3RlUG9ydEZvckFjdGl2aXR5KToKKyAgICAgICAgKiBkb20vbWVzc2FnZXBvcnRz
L01lc3NhZ2VQb3J0Q2hhbm5lbFJlZ2lzdHJ5Lmg6CisgICAgICAgICogZG9tL21lc3NhZ2Vwb3J0
cy9Xb3JrZXJNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlci5jcHA6IEFkZGVkLgorICAgICAgICAo
V2ViQ29yZTo6V29ya2VyTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXI6Oldvcmtlck1lc3NhZ2VQ
b3J0Q2hhbm5lbFByb3ZpZGVyKToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlck1lc3NhZ2VQb3J0
Q2hhbm5lbFByb3ZpZGVyOjp+V29ya2VyTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6V29ya2VyTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXI6OmNyZWF0ZU5l
d01lc3NhZ2VQb3J0Q2hhbm5lbCk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJNZXNzYWdlUG9y
dENoYW5uZWxQcm92aWRlcjo6ZW50YW5nbGVMb2NhbFBvcnRJblRoaXNQcm9jZXNzVG9SZW1vdGUp
OgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXI6Om1l
c3NhZ2VQb3J0RGlzZW50YW5nbGVkKToKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlck1lc3NhZ2VQ
b3J0Q2hhbm5lbFByb3ZpZGVyOjptZXNzYWdlUG9ydENsb3NlZCk6CisgICAgICAgIChXZWJDb3Jl
OjpXb3JrZXJNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlcjo6cG9zdE1lc3NhZ2VUb1JlbW90ZSk6
CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlcjo6dGFr
ZUFsbE1lc3NhZ2VzRm9yUG9ydCk6CisgICAgICAgIChXZWJDb3JlOjpXb3JrZXJNZXNzYWdlUG9y
dENoYW5uZWxQcm92aWRlcjo6Y2hlY2tSZW1vdGVQb3J0Rm9yQWN0aXZpdHkpOgorICAgICAgICAo
V2ViQ29yZTo6V29ya2VyTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXI6OmNoZWNrUHJvY2Vzc0xv
Y2FsUG9ydEZvckFjdGl2aXR5KToKKyAgICAgICAgKiBkb20vbWVzc2FnZXBvcnRzL1dvcmtlck1l
c3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyLmg6IEFkZGVkLgorICAgICAgICAqIHdvcmtlcnMvV29y
a2VyR2xvYmFsU2NvcGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VyR2xvYmFsU2NvcGU6
Om1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyKToKKyAgICAgICAgKiB3b3JrZXJzL1dvcmtlckds
b2JhbFNjb3BlLmg6CisKIDIwMTktMDktMDEgIFNhaWQgQWJvdS1IYWxsYXdhICA8c2Fib3VoYWxs
YXdhQGFwcGxlLmNvbT4KIAogICAgICAgICBIVE1MSW1hZ2VFbGVtZW50OjpkZWNvZGUoKSBzaG91
bGQgcmV0dXJuIGEgcmVzb2x2ZWQgcHJvbWlzZSBmb3IgZGVjb2Rpbmcgbm9uIGJpdG1hcCBpbWFn
ZXMKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9D
aGFuZ2VMb2cKaW5kZXggMTM5NWI1ZGIwMjQyYTMxOTgwZjIzNmQ3MmUzOTMzNGRlZjMzYzhmYi4u
YjQ4MDZlZWM0MWNlMTNjZDllMmQ0ODdmMDRhNzFhZDM1YzcwOWE4MiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyNSBAQAorMjAxOS0wOS0wMSAgWW91ZW5uIEZhYmxldCAgPHlvdWVubkBhcHBsZS5jb20+
CisKKyAgICAgICAgSW50cm9kdWNlIFdvcmtlck1lc3NhZ2VQb3J0Q2hhbm5lbFJlZ2lzdHJ5Cisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDEzMzMKKwor
ICAgICAgICBSZXZpZXdlZCBieSBBbGV4IENocmlzdGVuc2VuLgorCisgICAgICAgIEJ5IGludHJv
ZHVjaW5nIFdvcmtlck1lc3NhZ2VQb3J0Q2hhbm5lbFJlZ2lzdHJ5LCB3ZSBhcmUgbWFraW5nCisg
ICAgICAgIHN1cmUgVUlNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlciBpcyBvbmx5IGNhbGxlZCBm
cm9tIHRoZSBtYWluIHRocmVhZC4KKyAgICAgICAgVGhpcyB3aWxsIGhlbHAgd2hlbiBtb3Zpbmcg
dGhlIHJlZ2lzdHJ5IHRvIG5ldHdvcmsgcHJvY2Vzcy4KKworICAgICAgICAqIFVJUHJvY2Vzcy9V
SU1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6VUlNZXNz
YWdlUG9ydENoYW5uZWxQcm92aWRlcjo6dGFrZUFsbE1lc3NhZ2VzRm9yUG9ydCk6CisgICAgICAg
IChXZWJLaXQ6OlVJTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXI6OmNoZWNrUmVtb3RlUG9ydEZv
ckFjdGl2aXR5KToKKyAgICAgICAgKiBVSVByb2Nlc3MvVUlNZXNzYWdlUG9ydENoYW5uZWxQcm92
aWRlci5oOgorICAgICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViTWVzc2FnZVBv
cnRDaGFubmVsUHJvdmlkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpXZWJNZXNzYWdlUG9ydENo
YW5uZWxQcm92aWRlcjo6dGFrZUFsbE1lc3NhZ2VzRm9yUG9ydCk6CisgICAgICAgIChXZWJLaXQ6
OldlYk1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyOjpkaWRUYWtlQWxsTWVzc2FnZXNGb3JQb3J0
KToKKyAgICAgICAgKFdlYktpdDo6V2ViTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXI6OmRpZENo
ZWNrUmVtb3RlUG9ydEZvckFjdGl2aXR5KToKKyAgICAgICAgKFdlYktpdDo6V2ViTWVzc2FnZVBv
cnRDaGFubmVsUHJvdmlkZXI6OmNoZWNrUmVtb3RlUG9ydEZvckFjdGl2aXR5KToKKyAgICAgICAg
KiBXZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYk1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVy
Lmg6CisKIDIwMTktMDktMDEgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5AYXBwbGUuY29tPgogCiAg
ICAgICAgIEFic3RyYWN0IG91dCBMaWJXZWJSVENTb2NrZXRDbGllbnQgc28gdGhhdCBydGMgc29j
a2V0cyBjYW4gYmUgaW1wbGVtZW50ZWQgd2l0aG91dCBsaWJ3ZWJydGMgc29ja2V0cwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2Vz
LnR4dAppbmRleCAyMThhMGE1MGZiNTQ0MzkyMGIxNDllZmYzODEwMTQ2OTU1ZDZjMzE3Li5kNDA1
ODE3OGM5ODdlMGU4ZjgxM2YyMmQ4ZDE1YzFhNjY5Y2Q1YmRkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dApAQCAt
OTcyLDYgKzk3Miw3IEBAIGRvbS9tZXNzYWdlcG9ydHMvTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlk
ZXIuY3BwCiBkb20vbWVzc2FnZXBvcnRzL01lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVySW1wbC5j
cHAKIGRvbS9tZXNzYWdlcG9ydHMvTWVzc2FnZVBvcnRDaGFubmVsUmVnaXN0cnkuY3BwCiBkb20v
bWVzc2FnZXBvcnRzL01lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzLmNwcAorZG9tL21lc3NhZ2Vwb3J0
cy9Xb3JrZXJNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlci5jcHAKIAogZG9taml0L0RPTUpJVEhl
bHBlcnMuY3BwCiBkb21qaXQvSlNEb2N1bWVudERPTUpJVC5jcHAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJD
b3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBlOTQ4YzUzMTdiODI1
YzA5NjkzMGM4MDk0MDYzZTc3ODA2OWRhM2FkLi4wZjBkNTg4ZDc4ODAwODljNjg1Y2JmOTBiZTc1
ZmY2MzhkZjZmMzU3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ov
cHJvamVjdC5wYnhwcm9qCkBAIC03MTY2LDYgKzcxNjYsOCBAQAogCQk0MTEwM0FBOTFFMzk3OTBB
MDA3NjlGMTQgLyogUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlQ29jb2EuaCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9
IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlQ29jb2Eu
aDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDExMDNBQUExRTM5NzkwQTAwNzY5RjAz
IC8qIFJlYWx0aW1lSW5jb21pbmdBdWRpb1NvdXJjZS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmNwcC5jcHA7IHBhdGggPSBSZWFsdGltZUluY29taW5nQXVkaW9Tb3VyY2UuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OwogCQk0MTEwM0FBQTFFMzk3OTBBMDA3NjlGMTQgLyogUmVhbHRp
bWVJbmNvbWluZ0F1ZGlvU291cmNlQ29jb2EuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAu
Y3BwOyBwYXRoID0gUmVhbHRpbWVJbmNvbWluZ0F1ZGlvU291cmNlQ29jb2EuY3BwOyBzb3VyY2VU
cmVlID0gIjxncm91cD4iOyB9OworCQk0MTExNEE3QTIzMTdCMzlFMDBCNTYwMDcgLyogV29ya2Vy
TWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXIuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV29ya2VyTWVzc2Fn
ZVBvcnRDaGFubmVsUHJvdmlkZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNDEx
MTRBN0MyMzE3QjM5RTAwQjU2MDA3IC8qIFdvcmtlck1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVy
LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFdvcmtlck1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVy
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNDExMkI1M0YxRjlGOUM5QjAwRTY3
ODc1IC8qIFNlcnZpY2VXb3JrZXJUaHJlYWRQcm94eS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBTZXJ2aWNlV29ya2VyVGhyZWFkUHJveHkuaDsgc291cmNlVHJlZSA9ICI8Z3Jv
dXA+IjsgfTsKIAkJNDExMkI1NDExRjlGOUM5QzAwRTY3ODc1IC8qIFNlcnZpY2VXb3JrZXJUaHJl
YWRQcm94eS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0g
NDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTZXJ2aWNl
V29ya2VyVGhyZWFkUHJveHkuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk0MTE4
OUVGNzFBRDgyMzI4MDBCOTBBMEQgLyogUmVhZGFibGVTdHJlYW1EZWZhdWx0Q29udHJvbGxlci5p
ZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gUmVhZGFibGVTdHJlYW1EZWZhdWx0Q29udHJvbGxl
ci5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xODg0Miw2ICsxODg0NCw4IEBA
CiAJCQkJNTFFQ0MzRjEyMDA1ODdCNTAwNDgzRUFFIC8qIE1lc3NhZ2VQb3J0Q2hhbm5lbFJlZ2lz
dHJ5LmggKi8sCiAJCQkJNTFBNzQ4RTEyMDA1RDBFMDAwNzVCQTY4IC8qIE1lc3NhZ2VXaXRoTWVz
c2FnZVBvcnRzLmNwcCAqLywKIAkJCQk1MUE3NDhFMDIwMDVEMEUwMDA3NUJBNjggLyogTWVzc2Fn
ZVdpdGhNZXNzYWdlUG9ydHMuaCAqLywKKwkJCQk0MTExNEE3QzIzMTdCMzlFMDBCNTYwMDcgLyog
V29ya2VyTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXIuY3BwICovLAorCQkJCTQxMTE0QTdBMjMx
N0IzOUUwMEI1NjAwNyAvKiBXb3JrZXJNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlci5oICovLAog
CQkJKTsKIAkJCXBhdGggPSBtZXNzYWdlcG9ydHM7CiAJCQlzb3VyY2VUcmVlID0gIjxncm91cD4i
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9Eb2N1bWVudC5jcHAKaW5kZXggNTk2ZjA3NTBjMTBkNjYyMGMzN2YxYTQwMmNi
MTMyNDdkOTI4M2UwYi4uYzg2YWE5OWZlNjY1ZmRkNDRhMDgxN2NkODAzYmEwNzYyM2U5NDYzMiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vRG9jdW1lbnQuY3BwCkBAIC04MjgyLDQgKzgyODIsOSBAQCB2b2lkIERvY3Vt
ZW50OjpzZXRBcHBsZVBheUlzQWN0aXZlKCkKIAogI2VuZGlmCiAKK01lc3NhZ2VQb3J0Q2hhbm5l
bFByb3ZpZGVyJiBEb2N1bWVudDo6bWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXIoKQoreworICAg
IHJldHVybiBNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlcjo6c2luZ2xldG9uKCk7Cit9CisKIH0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Eb2N1
bWVudC5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKaW5kZXggMTYxMmU0MjBlY2Ex
MWM0ZGFkMTM1Y2Q5MTBmZTQ1NzZlZmU3MmFlZC4uODljNWM2ZDJmMjIwOTc3NTBmNmNjOGM5MTM5
NDQ3ZDJkY2VhNDhhNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0RvY3VtZW50LmgKQEAgLTE1Nyw2ICsxNTcsNyBAQCBj
bGFzcyBNZWRpYVBsYXliYWNrVGFyZ2V0OwogY2xhc3MgTWVkaWFQbGF5YmFja1RhcmdldENsaWVu
dDsKIGNsYXNzIE1lZGlhUXVlcnlMaXN0OwogY2xhc3MgTWVkaWFRdWVyeU1hdGNoZXI7CitjbGFz
cyBNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlcjsKIGNsYXNzIE1vdXNlRXZlbnRXaXRoSGl0VGVz
dFJlc3VsdHM7CiBjbGFzcyBOb2RlRmlsdGVyOwogY2xhc3MgTm9kZUl0ZXJhdG9yOwpAQCAtMTUy
OSw2ICsxNTMwLDggQEAgcHVibGljOgogICAgIGJvb2wgaW5IaXRUZXN0aW5nKCkgY29uc3QgeyBy
ZXR1cm4gbV9pbkhpdFRlc3Rpbmc7IH0KICNlbmRpZgogCisgICAgTWVzc2FnZVBvcnRDaGFubmVs
UHJvdmlkZXImIG1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyKCk7CisKIHByb3RlY3RlZDoKICAg
ICBlbnVtIENvbnN0cnVjdGlvbkZsYWdzIHsgU3ludGhlc2l6ZWQgPSAxLCBOb25SZW5kZXJlZFBs
YWNlaG9sZGVyID0gMSA8PCAxIH07CiAgICAgRG9jdW1lbnQoUEFMOjpTZXNzaW9uSUQsIEZyYW1l
KiwgY29uc3QgVVJMJiwgdW5zaWduZWQgPSBEZWZhdWx0RG9jdW1lbnRDbGFzcywgdW5zaWduZWQg
Y29uc3RydWN0aW9uRmxhZ3MgPSAwKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9N
ZXNzYWdlQ2hhbm5lbC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTWVzc2FnZUNoYW5uZWwuY3Bw
CmluZGV4IDE3NGY1YTM3ZGU4Yzk3YjBhMWJmYjVmMmU4ZDBhZjBkNWQ1YTI1YzkuLjc4MTc2M2E5
OTkwYjMxZGVlMDBjNGQzZjEwZDgxODUwMjljMGM3MGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2RvbS9NZXNzYWdlQ2hhbm5lbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL01lc3Nh
Z2VDaGFubmVsLmNwcApAQCAtNDksNyArNDksNyBAQCBNZXNzYWdlQ2hhbm5lbDo6TWVzc2FnZUNo
YW5uZWwoU2NyaXB0RXhlY3V0aW9uQ29udGV4dCYgY29udGV4dCkKICAgICBpZiAoIWNvbnRleHQu
YWN0aXZlRE9NT2JqZWN0c0FyZVN0b3BwZWQoKSkgewogICAgICAgICBBU1NFUlQoIW1fcG9ydDEt
PmNsb3NlZCgpKTsKICAgICAgICAgQVNTRVJUKCFtX3BvcnQyLT5jbG9zZWQoKSk7Ci0gICAgICAg
IE1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyOjpzaW5nbGV0b24oKS5jcmVhdGVOZXdNZXNzYWdl
UG9ydENoYW5uZWwoaWQxLCBpZDIpOworICAgICAgICBNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRl
cjo6ZnJvbUNvbnRleHQoY29udGV4dCkuY3JlYXRlTmV3TWVzc2FnZVBvcnRDaGFubmVsKGlkMSwg
aWQyKTsKICAgICB9IGVsc2UgewogICAgICAgICBBU1NFUlQobV9wb3J0MS0+Y2xvc2VkKCkpOwog
ICAgICAgICBBU1NFUlQobV9wb3J0Mi0+Y2xvc2VkKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL01lc3NhZ2VQb3J0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9NZXNzYWdlUG9y
dC5jcHAKaW5kZXggNTE0MzA0YzkwNjQxNjdiOTRiMTAxMWNlOGM4MTk0ZDc0YzAxNzdhNy4uZDY3
Y2UyNzhmZGE0ZmIzNGYzM2YxNDZmYzE4NzI0NjJlZTE1NjkzMCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvZG9tL01lc3NhZ2VQb3J0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vTWVz
c2FnZVBvcnQuY3BwCkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSAiV29ya2VyVGhyZWFkLmgi
CiAjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CiAjaW5jbHVkZSA8d3RmL0lzb01h
bGxvY0lubGluZXMuaD4KKyNpbmNsdWRlIDx3dGYvU2NvcGUuaD4KIAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCkBAIC0xMjQsNyArMTI1LDcgQEAgTWVzc2FnZVBvcnQ6On5NZXNzYWdlUG9ydCgpCiAK
IHZvaWQgTWVzc2FnZVBvcnQ6OmVudGFuZ2xlKCkKIHsKLSAgICBNZXNzYWdlUG9ydENoYW5uZWxQ
cm92aWRlcjo6c2luZ2xldG9uKCkuZW50YW5nbGVMb2NhbFBvcnRJblRoaXNQcm9jZXNzVG9SZW1v
dGUobV9pZGVudGlmaWVyLCBtX3JlbW90ZUlkZW50aWZpZXIpOworICAgIE1lc3NhZ2VQb3J0Q2hh
bm5lbFByb3ZpZGVyOjpmcm9tQ29udGV4dCgqbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KS5lbnRh
bmdsZUxvY2FsUG9ydEluVGhpc1Byb2Nlc3NUb1JlbW90ZShtX2lkZW50aWZpZXIsIG1fcmVtb3Rl
SWRlbnRpZmllcik7CiB9CiAKIEV4Y2VwdGlvbk9yPHZvaWQ+IE1lc3NhZ2VQb3J0Ojpwb3N0TWVz
c2FnZShKU0M6OkV4ZWNTdGF0ZSYgc3RhdGUsIEpTQzo6SlNWYWx1ZSBtZXNzYWdlVmFsdWUsIFZl
Y3RvcjxKU0M6OlN0cm9uZzxKU0M6OkpTT2JqZWN0Pj4mJiB0cmFuc2ZlcikKQEAgLTE2MCw3ICsx
NjEsNyBAQCBFeGNlcHRpb25Pcjx2b2lkPiBNZXNzYWdlUG9ydDo6cG9zdE1lc3NhZ2UoSlNDOjpF
eGVjU3RhdGUmIHN0YXRlLCBKU0M6OkpTVmFsdWUgbQogCiAgICAgTE9HKE1lc3NhZ2VQb3J0cywg
IkFjdHVhbGx5IHBvc3RpbmcgbWVzc2FnZSB0byBwb3J0ICVzICh0byBiZSByZWNlaXZlZCBieSBw
b3J0ICVzKSIsIG1faWRlbnRpZmllci5sb2dTdHJpbmcoKS51dGY4KCkuZGF0YSgpLCBtX3JlbW90
ZUlkZW50aWZpZXIubG9nU3RyaW5nKCkudXRmOCgpLmRhdGEoKSk7CiAKLSAgICBNZXNzYWdlUG9y
dENoYW5uZWxQcm92aWRlcjo6c2luZ2xldG9uKCkucG9zdE1lc3NhZ2VUb1JlbW90ZShXVEZNb3Zl
KG1lc3NhZ2UpLCBtX3JlbW90ZUlkZW50aWZpZXIpOworICAgIE1lc3NhZ2VQb3J0Q2hhbm5lbFBy
b3ZpZGVyOjpmcm9tQ29udGV4dCgqbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KS5wb3N0TWVzc2Fn
ZVRvUmVtb3RlKG1lc3NhZ2UsIG1fcmVtb3RlSWRlbnRpZmllcik7CiAgICAgcmV0dXJuIHsgfTsK
IH0KIApAQCAtMTcxLDEwICsxNzIsOSBAQCB2b2lkIE1lc3NhZ2VQb3J0OjpkaXNlbnRhbmdsZSgp
CiAKICAgICByZWdpc3RlckxvY2FsQWN0aXZpdHkoKTsKIAotICAgIE1lc3NhZ2VQb3J0Q2hhbm5l
bFByb3ZpZGVyOjpzaW5nbGV0b24oKS5tZXNzYWdlUG9ydERpc2VudGFuZ2xlZChtX2lkZW50aWZp
ZXIpOworICAgIE1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyOjpmcm9tQ29udGV4dCgqbV9zY3Jp
cHRFeGVjdXRpb25Db250ZXh0KS5tZXNzYWdlUG9ydERpc2VudGFuZ2xlZChtX2lkZW50aWZpZXIp
OwogCiAgICAgLy8gV2UgY2FuJ3QgcmVjZWl2ZSBhbnkgbWVzc2FnZXMgb3IgZ2VuZXJhdGUgYW55
IGV2ZW50cyBhZnRlciB0aGlzLCBzbyByZW1vdmUgb3Vyc2VsdmVzIGZyb20gdGhlIGxpc3Qgb2Yg
YWN0aXZlIHBvcnRzLgotICAgIEFTU0VSVChtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQpOwogICAg
IG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+ZGVzdHJveWVkTWVzc2FnZVBvcnQoKnRoaXMpOwog
ICAgIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+d2lsbERlc3Ryb3lBY3RpdmVET01PYmplY3Qo
KnRoaXMpOwogICAgIG1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dC0+d2lsbERlc3Ryb3lEZXN0cnVj
dGlvbk9ic2VydmVyKCp0aGlzKTsKQEAgLTIyNSw3ICsyMjUsNyBAQCB2b2lkIE1lc3NhZ2VQb3J0
OjpjbG9zZSgpCiAgICAgICAgIHJldHVybjsKICAgICBtX2Nsb3NlZCA9IHRydWU7CiAKLSAgICBN
ZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlcjo6c2luZ2xldG9uKCkubWVzc2FnZVBvcnRDbG9zZWQo
bV9pZGVudGlmaWVyKTsKKyAgICBNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlcjo6ZnJvbUNvbnRl
eHQoKm1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkubWVzc2FnZVBvcnRDbG9zZWQobV9pZGVudGlm
aWVyKTsKICAgICByZW1vdmVBbGxFdmVudExpc3RlbmVycygpOwogfQogCkBAIC0yNDYsNTAgKzI0
NiwzMyBAQCB2b2lkIE1lc3NhZ2VQb3J0OjpkaXNwYXRjaE1lc3NhZ2VzKCkKICAgICBpZiAoIW1f
c2NyaXB0RXhlY3V0aW9uQ29udGV4dCB8fCBtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmFjdGl2
ZURPTU9iamVjdHNBcmVTdXNwZW5kZWQoKSB8fCAhaXNFbnRhbmdsZWQoKSkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgUmVmUHRyPFdvcmtlclRocmVhZD4gd29ya2VyVGhyZWFkOwotICAgIGlmIChp
czxXb3JrZXJHbG9iYWxTY29wZT4oKm1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkpCi0gICAgICAg
IHdvcmtlclRocmVhZCA9ICZkb3duY2FzdDxXb3JrZXJHbG9iYWxTY29wZT4oKm1fc2NyaXB0RXhl
Y3V0aW9uQ29udGV4dCkudGhyZWFkKCk7CisgICAgYXV0byBtZXNzYWdlc1Rha2VuSGFuZGxlciA9
IFt0aGlzLCB3ZWFrVGhpcyA9IG1ha2VXZWFrUHRyKHRoaXMpXShWZWN0b3I8TWVzc2FnZVdpdGhN
ZXNzYWdlUG9ydHM+JiYgbWVzc2FnZXMsIEZ1bmN0aW9uPHZvaWQoKT4mJiBjb21wbGV0aW9uQ2Fs
bGJhY2spIG11dGFibGUgeworICAgICAgICBhdXRvIHNjb3BlRXhpdCA9IG1ha2VTY29wZUV4aXQo
V1RGTW92ZShjb21wbGV0aW9uQ2FsbGJhY2spKTsKIAotICAgIGF1dG8gbWVzc2FnZXNUYWtlbkhh
bmRsZXIgPSBbdGhpcywgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cih0aGlzKSwgd29ya2VyVGhyZWFk
ID0gV1RGTW92ZSh3b3JrZXJUaHJlYWQpXShWZWN0b3I8TWVzc2FnZVdpdGhNZXNzYWdlUG9ydHM+
JiYgbWVzc2FnZXMsIEZ1bmN0aW9uPHZvaWQoKT4mJiBjb21wbGV0aW9uQ2FsbGJhY2spIG11dGFi
bGUgewotICAgICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwotICAgICAgICBhdXRvIGlubmVy
SGFuZGxlciA9IFt0aGlzLCB3ZWFrVGhpcyA9IFdURk1vdmUod2Vha1RoaXMpXShhdXRvJiYgbWVz
c2FnZXMpIHsKLSAgICAgICAgICAgIGlmICghd2Vha1RoaXMpCi0gICAgICAgICAgICAgICAgcmV0
dXJuOworICAgICAgICBpZiAoIXdlYWtUaGlzKQorICAgICAgICAgICAgcmV0dXJuOwogCi0gICAg
ICAgICAgICBMT0coTWVzc2FnZVBvcnRzLCAiTWVzc2FnZVBvcnQgJXMgKCVwKSBkaXNwYXRjaGlu
ZyAlenUgbWVzc2FnZXMiLCBtX2lkZW50aWZpZXIubG9nU3RyaW5nKCkudXRmOCgpLmRhdGEoKSwg
dGhpcywgbWVzc2FnZXMuc2l6ZSgpKTsKKyAgICAgICAgTE9HKE1lc3NhZ2VQb3J0cywgIk1lc3Nh
Z2VQb3J0ICVzICglcCkgZGlzcGF0Y2hpbmcgJXp1IG1lc3NhZ2VzIiwgbV9pZGVudGlmaWVyLmxv
Z1N0cmluZygpLnV0ZjgoKS5kYXRhKCksIHRoaXMsIG1lc3NhZ2VzLnNpemUoKSk7CiAKLSAgICAg
ICAgICAgIGlmICghbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KQotICAgICAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgaWYgKCFtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQpCisgICAgICAgICAg
ICByZXR1cm47CiAKLSAgICAgICAgICAgIGlmICghbWVzc2FnZXMuaXNFbXB0eSgpKQotICAgICAg
ICAgICAgICAgIHJlZ2lzdGVyTG9jYWxBY3Rpdml0eSgpOworICAgICAgICBpZiAoIW1lc3NhZ2Vz
LmlzRW1wdHkoKSkKKyAgICAgICAgICAgIHJlZ2lzdGVyTG9jYWxBY3Rpdml0eSgpOwogCi0gICAg
ICAgICAgICBBU1NFUlQobV9zY3JpcHRFeGVjdXRpb25Db250ZXh0LT5pc0NvbnRleHRUaHJlYWQo
KSk7CisgICAgICAgIEFTU0VSVChtX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQtPmlzQ29udGV4dFRo
cmVhZCgpKTsKIAotICAgICAgICAgICAgYm9vbCBjb250ZXh0SXNXb3JrZXIgPSBpczxXb3JrZXJH
bG9iYWxTY29wZT4oKm1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCk7Ci0gICAgICAgICAgICBmb3Ig
KGF1dG8mIG1lc3NhZ2UgOiBtZXNzYWdlcykgewotICAgICAgICAgICAgICAgIC8vIGNsb3NlKCkg
aW4gV29ya2VyIG9ubWVzc2FnZSBoYW5kbGVyIHNob3VsZCBwcmV2ZW50IG5leHQgbWVzc2FnZSBm
cm9tIGRpc3BhdGNoaW5nLgotICAgICAgICAgICAgICAgIGlmIChjb250ZXh0SXNXb3JrZXIgJiYg
ZG93bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+KCptX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQpLmlz
Q2xvc2luZygpKQotICAgICAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICAgICAg
YXV0byBwb3J0cyA9IE1lc3NhZ2VQb3J0OjplbnRhbmdsZVBvcnRzKCptX3NjcmlwdEV4ZWN1dGlv
bkNvbnRleHQsIFdURk1vdmUobWVzc2FnZS50cmFuc2ZlcnJlZFBvcnRzKSk7Ci0gICAgICAgICAg
ICAgICAgZGlzcGF0Y2hFdmVudChNZXNzYWdlRXZlbnQ6OmNyZWF0ZShXVEZNb3ZlKHBvcnRzKSwg
bWVzc2FnZS5tZXNzYWdlLnJlbGVhc2VOb25OdWxsKCkpKTsKLSAgICAgICAgICAgIH0KLSAgICAg
ICAgfTsKLQotICAgICAgICBpZiAoIXdvcmtlclRocmVhZCkgewotICAgICAgICAgICAgaW5uZXJI
YW5kbGVyKFdURk1vdmUobWVzc2FnZXMpKTsKLSAgICAgICAgICAgIGNvbXBsZXRpb25DYWxsYmFj
aygpOwotICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBib29sIGNvbnRleHRJc1dvcmtlciA9
IGlzPFdvcmtlckdsb2JhbFNjb3BlPigqbV9zY3JpcHRFeGVjdXRpb25Db250ZXh0KTsKKyAgICAg
ICAgZm9yIChhdXRvJiBtZXNzYWdlIDogbWVzc2FnZXMpIHsKKyAgICAgICAgICAgIC8vIGNsb3Nl
KCkgaW4gV29ya2VyIG9ubWVzc2FnZSBoYW5kbGVyIHNob3VsZCBwcmV2ZW50IG5leHQgbWVzc2Fn
ZSBmcm9tIGRpc3BhdGNoaW5nLgorICAgICAgICAgICAgaWYgKGNvbnRleHRJc1dvcmtlciAmJiBk
b3duY2FzdDxXb3JrZXJHbG9iYWxTY29wZT4oKm1fc2NyaXB0RXhlY3V0aW9uQ29udGV4dCkuaXND
bG9zaW5nKCkpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgYXV0byBwb3J0
cyA9IE1lc3NhZ2VQb3J0OjplbnRhbmdsZVBvcnRzKCptX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQs
IFdURk1vdmUobWVzc2FnZS50cmFuc2ZlcnJlZFBvcnRzKSk7CisgICAgICAgICAgICBkaXNwYXRj
aEV2ZW50KE1lc3NhZ2VFdmVudDo6Y3JlYXRlKFdURk1vdmUocG9ydHMpLCBtZXNzYWdlLm1lc3Nh
Z2UucmVsZWFzZU5vbk51bGwoKSkpOwogICAgICAgICB9Ci0gICAgICAgIHdvcmtlclRocmVhZC0+
cnVuTG9vcCgpLnBvc3RUYXNrRm9yTW9kZShbaW5uZXJIYW5kbGVyID0gV1RGTW92ZShpbm5lckhh
bmRsZXIpLCBtZXNzYWdlcyA9IFdURk1vdmUobWVzc2FnZXMpLCBjb21wbGV0aW9uQ2FsbGJhY2sg
PSBXVEZNb3ZlKGNvbXBsZXRpb25DYWxsYmFjayldKGF1dG8mKSBtdXRhYmxlIHsKLSAgICAgICAg
ICAgIGlubmVySGFuZGxlcihXVEZNb3ZlKG1lc3NhZ2VzKSk7Ci0gICAgICAgICAgICBjYWxsT25N
YWluVGhyZWFkKFtjb21wbGV0aW9uQ2FsbGJhY2sgPSBXVEZNb3ZlKGNvbXBsZXRpb25DYWxsYmFj
ayldIHsKLSAgICAgICAgICAgICAgICBjb21wbGV0aW9uQ2FsbGJhY2soKTsKLSAgICAgICAgICAg
IH0pOwotICAgICAgICB9LCBXb3JrZXJSdW5Mb29wOjpkZWZhdWx0TW9kZSgpKTsKICAgICB9Owog
Ci0gICAgTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXI6OnNpbmdsZXRvbigpLnRha2VBbGxNZXNz
YWdlc0ZvclBvcnQobV9pZGVudGlmaWVyLCBXVEZNb3ZlKG1lc3NhZ2VzVGFrZW5IYW5kbGVyKSk7
CisgICAgTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXI6OmZyb21Db250ZXh0KCptX3NjcmlwdEV4
ZWN1dGlvbkNvbnRleHQpLnRha2VBbGxNZXNzYWdlc0ZvclBvcnQobV9pZGVudGlmaWVyLCBXVEZN
b3ZlKG1lc3NhZ2VzVGFrZW5IYW5kbGVyKSk7CiB9CiAKIHZvaWQgTWVzc2FnZVBvcnQ6OnVwZGF0
ZUFjdGl2aXR5KE1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyOjpIYXNBY3Rpdml0eSBoYXNBY3Rp
dml0eSkKQEAgLTMyOCwxOSArMzExLDE5IEBAIGJvb2wgTWVzc2FnZVBvcnQ6Omhhc1BlbmRpbmdB
Y3Rpdml0eSgpIGNvbnN0CiAgICAgICAgIGlmIChpczxXb3JrZXJHbG9iYWxTY29wZT4oKm1fc2Ny
aXB0RXhlY3V0aW9uQ29udGV4dCkpCiAgICAgICAgICAgICB3b3JrZXJUaHJlYWQgPSAmZG93bmNh
c3Q8V29ya2VyR2xvYmFsU2NvcGU+KCptX3NjcmlwdEV4ZWN1dGlvbkNvbnRleHQpLnRocmVhZCgp
OwogCi0gICAgICAgIE1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyOjpzaW5nbGV0b24oKS5jaGVj
a1JlbW90ZVBvcnRGb3JBY3Rpdml0eShtX3JlbW90ZUlkZW50aWZpZXIsIFt3ZWFrVGhpcyA9IG1h
a2VXZWFrUHRyKGNvbnN0X2Nhc3Q8TWVzc2FnZVBvcnQqPih0aGlzKSksIHdvcmtlclRocmVhZCA9
IFdURk1vdmUod29ya2VyVGhyZWFkKV0oTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXI6Okhhc0Fj
dGl2aXR5IGhhc0FjdGl2aXR5KSBtdXRhYmxlIHsKLQotICAgICAgICAgICAgQVNTRVJUKGlzTWFp
blRocmVhZCgpKTsKLSAgICAgICAgICAgIGlmICghd29ya2VyVGhyZWFkKSB7Ci0gICAgICAgICAg
ICAgICAgaWYgKHdlYWtUaGlzKQotICAgICAgICAgICAgICAgICAgICB3ZWFrVGhpcy0+dXBkYXRl
QWN0aXZpdHkoaGFzQWN0aXZpdHkpOwotICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAg
ICAgIH0KKyAgICAgICAgY2FsbE9uTWFpblRocmVhZChbcmVtb3RlSWRlbnRpZmllciA9IG1fcmVt
b3RlSWRlbnRpZmllciwgd2Vha1RoaXMgPSBtYWtlV2Vha1B0cihjb25zdF9jYXN0PE1lc3NhZ2VQ
b3J0Kj4odGhpcykpLCB3b3JrZXJUaHJlYWQgPSBXVEZNb3ZlKHdvcmtlclRocmVhZCldKCkgbXV0
YWJsZSB7CisgICAgICAgICAgICBNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlcjo6c2luZ2xldG9u
KCkuY2hlY2tSZW1vdGVQb3J0Rm9yQWN0aXZpdHkocmVtb3RlSWRlbnRpZmllciwgW3dlYWtUaGlz
ID0gV1RGTW92ZSh3ZWFrVGhpcyksIHdvcmtlclRocmVhZCA9IFdURk1vdmUod29ya2VyVGhyZWFk
KV0oYXV0byBoYXNBY3Rpdml0eSkgbXV0YWJsZSB7CisgICAgICAgICAgICAgICAgaWYgKCF3b3Jr
ZXJUaHJlYWQpIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHdlYWtUaGlzKQorICAgICAgICAg
ICAgICAgICAgICAgICAgd2Vha1RoaXMtPnVwZGF0ZUFjdGl2aXR5KGhhc0FjdGl2aXR5KTsKKyAg
ICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgIH0KIAotICAgICAgICAg
ICAgd29ya2VyVGhyZWFkLT5ydW5Mb29wKCkucG9zdFRhc2tGb3JNb2RlKFt3ZWFrVGhpcyA9IFdU
Rk1vdmUod2Vha1RoaXMpLCBoYXNBY3Rpdml0eV0oYXV0byYpIG11dGFibGUgewotICAgICAgICAg
ICAgICAgIGlmICh3ZWFrVGhpcykKLSAgICAgICAgICAgICAgICAgICAgd2Vha1RoaXMtPnVwZGF0
ZUFjdGl2aXR5KGhhc0FjdGl2aXR5KTsKLSAgICAgICAgICAgIH0sIFdvcmtlclJ1bkxvb3A6OmRl
ZmF1bHRNb2RlKCkpOworICAgICAgICAgICAgICAgIHdvcmtlclRocmVhZC0+cnVuTG9vcCgpLnBv
c3RUYXNrRm9yTW9kZShbd2Vha1RoaXMgPSBXVEZNb3ZlKHdlYWtUaGlzKSwgaGFzQWN0aXZpdHld
KGF1dG8mKSBtdXRhYmxlIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKHdlYWtUaGlzKQorICAg
ICAgICAgICAgICAgICAgICAgICAgd2Vha1RoaXMtPnVwZGF0ZUFjdGl2aXR5KGhhc0FjdGl2aXR5
KTsKKyAgICAgICAgICAgICAgICB9LCBXb3JrZXJSdW5Mb29wOjpkZWZhdWx0TW9kZSgpKTsKKyAg
ICAgICAgICAgIH0pOwogICAgICAgICB9KTsKICAgICAgICAgbV9pc0Fza2luZ1JlbW90ZUFib3V0
R0MgPSB0cnVlOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9tZXNzYWdl
cG9ydHMvTWVzc2FnZVBvcnRDaGFubmVsLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9tZXNzYWdl
cG9ydHMvTWVzc2FnZVBvcnRDaGFubmVsLmNwcAppbmRleCBhNWI2MGQ5OGJiNGEwMGU4YTgyN2U3
MWQzZDRmNDlhYThhNGRlNDQ5Li4wOTE1ZWFkOWZmYjhjMTZkYzhiN2IwOWQyZTI1MDc4MDRkOGJk
NGM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vbWVzc2FnZXBvcnRzL01lc3NhZ2VQ
b3J0Q2hhbm5lbC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL21lc3NhZ2Vwb3J0cy9NZXNz
YWdlUG9ydENoYW5uZWwuY3BwCkBAIC0xNDcsNyArMTQ3LDcgQEAgYm9vbCBNZXNzYWdlUG9ydENo
YW5uZWw6OnBvc3RNZXNzYWdlVG9SZW1vdGUoTWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMmJiBtZXNz
YWdlLAogICAgIHJldHVybiBmYWxzZTsKIH0KIAotdm9pZCBNZXNzYWdlUG9ydENoYW5uZWw6OnRh
a2VBbGxNZXNzYWdlc0ZvclBvcnQoY29uc3QgTWVzc2FnZVBvcnRJZGVudGlmaWVyJiBwb3J0LCBG
dW5jdGlvbjx2b2lkKFZlY3RvcjxNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cz4mJiwgRnVuY3Rpb248
dm9pZCgpPiYmKT4mJiBjYWxsYmFjaykKK3ZvaWQgTWVzc2FnZVBvcnRDaGFubmVsOjp0YWtlQWxs
TWVzc2FnZXNGb3JQb3J0KGNvbnN0IE1lc3NhZ2VQb3J0SWRlbnRpZmllciYgcG9ydCwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8TWVzc2FnZVdpdGhNZXNzYWdlUG9ydHM+JiYsIEZ1bmN0
aW9uPHZvaWQoKT4mJik+JiYgY2FsbGJhY2spCiB7CiAgICAgQVNTRVJUKGlzTWFpblRocmVhZCgp
KTsKIApAQCAtMTgyLDcgKzE4Miw3IEBAIHZvaWQgTWVzc2FnZVBvcnRDaGFubmVsOjp0YWtlQWxs
TWVzc2FnZXNGb3JQb3J0KGNvbnN0IE1lc3NhZ2VQb3J0SWRlbnRpZmllciYgcG9yCiAgICAgfSk7
CiB9CiAKLXZvaWQgTWVzc2FnZVBvcnRDaGFubmVsOjpjaGVja1JlbW90ZVBvcnRGb3JBY3Rpdml0
eShjb25zdCBNZXNzYWdlUG9ydElkZW50aWZpZXImIHJlbW90ZVBvcnQsIEZ1bmN0aW9uPHZvaWQo
TWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXI6Okhhc0FjdGl2aXR5KT4mJiBjYWxsYmFjaykKK3Zv
aWQgTWVzc2FnZVBvcnRDaGFubmVsOjpjaGVja1JlbW90ZVBvcnRGb3JBY3Rpdml0eShjb25zdCBN
ZXNzYWdlUG9ydElkZW50aWZpZXImIHJlbW90ZVBvcnQsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQo
TWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXI6Okhhc0FjdGl2aXR5KT4mJiBjYWxsYmFjaykKIHsK
ICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogICAgIEFTU0VSVChyZW1vdGVQb3J0ID09IG1f
cG9ydHNbMF0gfHwgcmVtb3RlUG9ydCA9PSBtX3BvcnRzWzFdKTsKQEAgLTIwNyw3ICsyMDcsNyBA
QCB2b2lkIE1lc3NhZ2VQb3J0Q2hhbm5lbDo6Y2hlY2tSZW1vdGVQb3J0Rm9yQWN0aXZpdHkoY29u
c3QgTWVzc2FnZVBvcnRJZGVudGlmaWVyJgogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAg
YXV0byBvdXRlckNhbGxiYWNrID0gRnVuY3Rpb248dm9pZChNZXNzYWdlUG9ydENoYW5uZWxQcm92
aWRlcjo6SGFzQWN0aXZpdHkpPiB7IFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhp
cyksIGNhbGxiYWNrID0gV1RGTW92ZShjYWxsYmFjayldIChNZXNzYWdlUG9ydENoYW5uZWxQcm92
aWRlcjo6SGFzQWN0aXZpdHkgaGFzQWN0aXZpdHkpIG11dGFibGUgeworICAgIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXI6Okhhc0FjdGl2aXR5KT4gb3V0
ZXJDYWxsYmFjayA9IFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIGNhbGxi
YWNrID0gV1RGTW92ZShjYWxsYmFjayldKGF1dG8gaGFzQWN0aXZpdHkpIG11dGFibGUgewogICAg
ICAgICBpZiAoaGFzQWN0aXZpdHkgPT0gTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXI6Okhhc0Fj
dGl2aXR5OjpZZXMpIHsKICAgICAgICAgICAgIGNhbGxiYWNrKGhhc0FjdGl2aXR5KTsKICAgICAg
ICAgICAgIHJldHVybjsKQEAgLTIxOSw3ICsyMTksNyBAQCB2b2lkIE1lc3NhZ2VQb3J0Q2hhbm5l
bDo6Y2hlY2tSZW1vdGVQb3J0Rm9yQWN0aXZpdHkoY29uc3QgTWVzc2FnZVBvcnRJZGVudGlmaWVy
JgogICAgICAgICAgICAgaGFzQWN0aXZpdHkgPSBNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlcjo6
SGFzQWN0aXZpdHk6OlllczsKIAogICAgICAgICBjYWxsYmFjayhoYXNBY3Rpdml0eSk7Ci0gICAg
fSB9OworICAgIH07CiAKICAgICBtX3JlZ2lzdHJ5LnByb3ZpZGVyKCkuY2hlY2tQcm9jZXNzTG9j
YWxQb3J0Rm9yQWN0aXZpdHkocmVtb3RlUG9ydCwgKm1fcHJvY2Vzc2VzW2ldLCBXVEZNb3ZlKG91
dGVyQ2FsbGJhY2spKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9tZXNzYWdl
cG9ydHMvTWVzc2FnZVBvcnRDaGFubmVsLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vbWVzc2FnZXBv
cnRzL01lc3NhZ2VQb3J0Q2hhbm5lbC5oCmluZGV4IGNjMjk5NGQyZjkyZDkwZjdhMmFlZTJjM2U5
YWZlNWU4ZmFjMTc3OTUuLmE4ODI2YjhjMDBjMDBiN2E4NzZhZDM4YWZhZTYxYWU3OGU4YWNkODYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9tZXNzYWdlcG9ydHMvTWVzc2FnZVBvcnRD
aGFubmVsLmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL21lc3NhZ2Vwb3J0cy9NZXNzYWdlUG9y
dENoYW5uZWwuaApAQCAtNTMsOCArNTMsOCBAQCBwdWJsaWM6CiAgICAgdm9pZCBjbG9zZVBvcnQo
Y29uc3QgTWVzc2FnZVBvcnRJZGVudGlmaWVyJik7CiAgICAgYm9vbCBwb3N0TWVzc2FnZVRvUmVt
b3RlKE1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzJiYsIGNvbnN0IE1lc3NhZ2VQb3J0SWRlbnRpZmll
ciYgcmVtb3RlVGFyZ2V0KTsKIAotICAgIHZvaWQgdGFrZUFsbE1lc3NhZ2VzRm9yUG9ydChjb25z
dCBNZXNzYWdlUG9ydElkZW50aWZpZXImLCBGdW5jdGlvbjx2b2lkKFZlY3RvcjxNZXNzYWdlV2l0
aE1lc3NhZ2VQb3J0cz4mJiwgRnVuY3Rpb248dm9pZCgpPiYmKT4mJik7Ci0gICAgdm9pZCBjaGVj
a1JlbW90ZVBvcnRGb3JBY3Rpdml0eShjb25zdCBNZXNzYWdlUG9ydElkZW50aWZpZXImLCBGdW5j
dGlvbjx2b2lkKE1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyOjpIYXNBY3Rpdml0eSk+JiYgY2Fs
bGJhY2spOworICAgIHZvaWQgdGFrZUFsbE1lc3NhZ2VzRm9yUG9ydChjb25zdCBNZXNzYWdlUG9y
dElkZW50aWZpZXImLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxNZXNzYWdlV2l0aE1l
c3NhZ2VQb3J0cz4mJiwgRnVuY3Rpb248dm9pZCgpPiYmKT4mJik7CisgICAgdm9pZCBjaGVja1Jl
bW90ZVBvcnRGb3JBY3Rpdml0eShjb25zdCBNZXNzYWdlUG9ydElkZW50aWZpZXImLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKE1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyOjpIYXNBY3Rpdml0eSk+
JiYgY2FsbGJhY2spOwogCiAgICAgV0VCQ09SRV9FWFBPUlQgYm9vbCBoYXNBbnlNZXNzYWdlc1Bl
bmRpbmdPckluRmxpZ2h0KCkgY29uc3Q7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Rv
bS9tZXNzYWdlcG9ydHMvTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXIuY3BwIGIvU291cmNlL1dl
YkNvcmUvZG9tL21lc3NhZ2Vwb3J0cy9NZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlci5jcHAKaW5k
ZXggMGE1Y2QxNzczZTkzMWIwNDlmZjQ4ZDcxYjk3ZWFkOWI2NjYzNWM5OS4uMTJhYTlmMmNmYmYx
MmQzZTA4OWE1YmExYjA4NzY2NDhjMWYxNjU1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
ZG9tL21lc3NhZ2Vwb3J0cy9NZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvZG9tL21lc3NhZ2Vwb3J0cy9NZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlci5j
cHAKQEAgLTI2LDcgKzI2LDkgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJNZXNz
YWdlUG9ydENoYW5uZWxQcm92aWRlci5oIgogCisjaW5jbHVkZSAiRG9jdW1lbnQuaCIKICNpbmNs
dWRlICJNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlckltcGwuaCIKKyNpbmNsdWRlICJXb3JrZXJH
bG9iYWxTY29wZS5oIgogI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+CiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKQEAgLTM1LDYgKzM3LDcgQEAgc3RhdGljIE1lc3NhZ2VQb3J0Q2hhbm5lbFByb3Zp
ZGVyKiBnbG9iYWxQcm92aWRlcjsKIAogTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXImIE1lc3Nh
Z2VQb3J0Q2hhbm5lbFByb3ZpZGVyOjpzaW5nbGV0b24oKQogeworICAgIEFTU0VSVChpc01haW5U
aHJlYWQoKSk7CiAgICAgc3RhdGljIHN0ZDo6b25jZV9mbGFnIG9uY2VGbGFnOwogICAgIHN0ZDo6
Y2FsbF9vbmNlKG9uY2VGbGFnLCBbXSB7CiAgICAgICAgIGlmICghZ2xvYmFsUHJvdmlkZXIpCkBA
IC01MSw0ICs1NCwxMiBAQCB2b2lkIE1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyOjpzZXRTaGFy
ZWRQcm92aWRlcihNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlciYgcAogICAgIGdsb2JhbFByb3Zp
ZGVyID0gJnByb3ZpZGVyOwogfQogCitNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlciYgTWVzc2Fn
ZVBvcnRDaGFubmVsUHJvdmlkZXI6OmZyb21Db250ZXh0KFNjcmlwdEV4ZWN1dGlvbkNvbnRleHQm
IGNvbnRleHQpCit7CisgICAgaWYgKGlzPERvY3VtZW50Pihjb250ZXh0KSkKKyAgICAgICAgcmV0
dXJuIGRvd25jYXN0PERvY3VtZW50Pihjb250ZXh0KS5tZXNzYWdlUG9ydENoYW5uZWxQcm92aWRl
cigpOworCisgICAgcmV0dXJuIGRvd25jYXN0PFdvcmtlckdsb2JhbFNjb3BlPihjb250ZXh0KS5t
ZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlcigpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3Jl
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vbWVzc2FnZXBvcnRzL01lc3NhZ2VQb3J0
Q2hhbm5lbFByb3ZpZGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vbWVzc2FnZXBvcnRzL01lc3Nh
Z2VQb3J0Q2hhbm5lbFByb3ZpZGVyLmgKaW5kZXggOGEzYWJhMjgyMTA0NmE5NjRjMGY0NWUzZWI3
NDNhYzM4ZDZjOTk2Zi4uY2ZmM2YzNTk3NTNjODJjMmNiNmU1Yzk2ZjBjZmMxMTZkZTc5MzViNiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL21lc3NhZ2Vwb3J0cy9NZXNzYWdlUG9ydENo
YW5uZWxQcm92aWRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9tZXNzYWdlcG9ydHMvTWVz
c2FnZVBvcnRDaGFubmVsUHJvdmlkZXIuaApAQCAtMjYsMTYgKzI2LDE4IEBACiAjcHJhZ21hIG9u
Y2UKIAogI2luY2x1ZGUgIlByb2Nlc3NJZGVudGlmaWVyLmgiCi0jaW5jbHVkZSA8d3RmL0Z1bmN0
aW9uLmg+CisjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CiAjaW5jbHVkZSA8d3Rm
L1ZlY3Rvci5oPgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK2NsYXNzIFNjcmlwdEV4ZWN1dGlv
bkNvbnRleHQ7CiBzdHJ1Y3QgTWVzc2FnZVBvcnRJZGVudGlmaWVyOwogc3RydWN0IE1lc3NhZ2VX
aXRoTWVzc2FnZVBvcnRzOwogCiBjbGFzcyBNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlciB7CiBw
dWJsaWM6CisgICAgc3RhdGljIE1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyJiBmcm9tQ29udGV4
dChTY3JpcHRFeGVjdXRpb25Db250ZXh0Jik7CiAgICAgc3RhdGljIE1lc3NhZ2VQb3J0Q2hhbm5l
bFByb3ZpZGVyJiBzaW5nbGV0b24oKTsKICAgICBXRUJDT1JFX0VYUE9SVCBzdGF0aWMgdm9pZCBz
ZXRTaGFyZWRQcm92aWRlcihNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlciYpOwogCkBAIC00Nywx
OSArNDksMTUgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBtZXNzYWdlUG9ydERpc2VudGFu
Z2xlZChjb25zdCBNZXNzYWdlUG9ydElkZW50aWZpZXImIGxvY2FsKSA9IDA7CiAgICAgdmlydHVh
bCB2b2lkIG1lc3NhZ2VQb3J0Q2xvc2VkKGNvbnN0IE1lc3NhZ2VQb3J0SWRlbnRpZmllciYgbG9j
YWwpID0gMDsKICAgICAKLSAgICAvLyBGSVhNRTogSWRlYWxseSB0aGUgY2FsbGJhY2sgd291bGQg
YmUgYSBDb21wbGV0aW9uSGFuZGxlciBidXQgaXQgaXMgYWx3YXlzIGNhbGxlZCBvbiB0aGUgY2Fs
bGVyJ3MKLSAgICAvLyB0aHJlYWQgYXQgdGhlIG1vbWVudC4KLSAgICB2aXJ0dWFsIHZvaWQgdGFr
ZUFsbE1lc3NhZ2VzRm9yUG9ydChjb25zdCBNZXNzYWdlUG9ydElkZW50aWZpZXImLCBGdW5jdGlv
bjx2b2lkKFZlY3RvcjxNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cz4mJiwgRnVuY3Rpb248dm9pZCgp
PiYmKT4mJikgPSAwOworICAgIHZpcnR1YWwgdm9pZCB0YWtlQWxsTWVzc2FnZXNGb3JQb3J0KGNv
bnN0IE1lc3NhZ2VQb3J0SWRlbnRpZmllciYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9y
PE1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzPiYmLCBGdW5jdGlvbjx2b2lkKCk+JiYpPiYmKSA9IDA7
CiAKLSAgICB2aXJ0dWFsIHZvaWQgcG9zdE1lc3NhZ2VUb1JlbW90ZShNZXNzYWdlV2l0aE1lc3Nh
Z2VQb3J0cyYmLCBjb25zdCBNZXNzYWdlUG9ydElkZW50aWZpZXImIHJlbW90ZVRhcmdldCkgPSAw
OworICAgIHZpcnR1YWwgdm9pZCBwb3N0TWVzc2FnZVRvUmVtb3RlKGNvbnN0IE1lc3NhZ2VXaXRo
TWVzc2FnZVBvcnRzJiwgY29uc3QgTWVzc2FnZVBvcnRJZGVudGlmaWVyJiByZW1vdGVUYXJnZXQp
ID0gMDsKIAogICAgIGVudW0gY2xhc3MgSGFzQWN0aXZpdHkgewogICAgICAgICBZZXMsCiAgICAg
ICAgIE5vLAogICAgIH07Ci0gICAgLy8gRklYTUU6IElkZWFsbHkgdGhlIGNhbGxiYWNrIHdvdWxk
IGJlIGEgQ29tcGxldGlvbkhhbmRsZXIgYnV0IGl0IGlzIGFsd2F5cyBjYWxsZWQgb24gdGhlIGNh
bGxlcidzCi0gICAgLy8gdGhyZWFkIGF0IHRoZSBtb21lbnQuCi0gICAgdmlydHVhbCB2b2lkIGNo
ZWNrUmVtb3RlUG9ydEZvckFjdGl2aXR5KGNvbnN0IE1lc3NhZ2VQb3J0SWRlbnRpZmllciYgcmVt
b3RlVGFyZ2V0LCBGdW5jdGlvbjx2b2lkKEhhc0FjdGl2aXR5KT4mJiBjYWxsYmFjaykgPSAwOwor
ICAgIHZpcnR1YWwgdm9pZCBjaGVja1JlbW90ZVBvcnRGb3JBY3Rpdml0eShjb25zdCBNZXNzYWdl
UG9ydElkZW50aWZpZXImIHJlbW90ZVRhcmdldCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChIYXNB
Y3Rpdml0eSk+JiYgY2FsbGJhY2spID0gMDsKIAogICAgIC8vIE9wZXJhdGlvbnMgdGhhdCB0aGUg
Y29vcmRpbmF0aW5nIHByb2Nlc3MgcGVyZm9ybXMgKGUuZy4gdGhlIFVJUHJvY2VzcykKICAgICB2
aXJ0dWFsIHZvaWQgY2hlY2tQcm9jZXNzTG9jYWxQb3J0Rm9yQWN0aXZpdHkoY29uc3QgTWVzc2Fn
ZVBvcnRJZGVudGlmaWVyJiwgUHJvY2Vzc0lkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoSGFzQWN0aXZpdHkpPiYmKSA9IDA7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20v
bWVzc2FnZXBvcnRzL01lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVySW1wbC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vbWVzc2FnZXBvcnRzL01lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVySW1wbC5j
cHAKaW5kZXggMGIwN2MyNzUzYTk5Y2UwMjA2ZDQxY2NiMGVhNDllZDA0MTZmMTRhNi4uZTE2NTZl
MjcyMDA5MTZmYWNkZTU4MDdjOWVkYWEwMzIwYzA0MzVkZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvZG9tL21lc3NhZ2Vwb3J0cy9NZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlckltcGwuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9tZXNzYWdlcG9ydHMvTWVzc2FnZVBvcnRDaGFubmVs
UHJvdmlkZXJJbXBsLmNwcApAQCAtMjcsNyArMjcsNiBAQAogI2luY2x1ZGUgIk1lc3NhZ2VQb3J0
Q2hhbm5lbFByb3ZpZGVySW1wbC5oIgogCiAjaW5jbHVkZSAiTWVzc2FnZVBvcnQuaCIKLSNpbmNs
dWRlIDx3dGYvQ29tcGxldGlvbkhhbmRsZXIuaD4KICNpbmNsdWRlIDx3dGYvTWFpblRocmVhZC5o
PgogI2luY2x1ZGUgPHd0Zi9SdW5Mb29wLmg+CiAKQEAgLTc5LDE4ICs3OCwxOCBAQCB2b2lkIE1l
c3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVySW1wbDo6bWVzc2FnZVBvcnRDbG9zZWQoY29uc3QgTWVz
c2FnZVBvcnRJZGVudGlmaQogICAgIH0pOwogfQogCi12b2lkIE1lc3NhZ2VQb3J0Q2hhbm5lbFBy
b3ZpZGVySW1wbDo6cG9zdE1lc3NhZ2VUb1JlbW90ZShNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cyYm
IG1lc3NhZ2UsIGNvbnN0IE1lc3NhZ2VQb3J0SWRlbnRpZmllciYgcmVtb3RlVGFyZ2V0KQordm9p
ZCBNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlckltcGw6OnBvc3RNZXNzYWdlVG9SZW1vdGUoY29u
c3QgTWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMmIG1lc3NhZ2UsIGNvbnN0IE1lc3NhZ2VQb3J0SWRl
bnRpZmllciYgcmVtb3RlVGFyZ2V0KQogewotICAgIHBlcmZvcm1BY3Rpb25Pbk1haW5UaHJlYWQo
W3JlZ2lzdHJ5ID0gJm1fcmVnaXN0cnksIG1lc3NhZ2UgPSBXVEZNb3ZlKG1lc3NhZ2UpLCByZW1v
dGVUYXJnZXRdKCkgbXV0YWJsZSB7CisgICAgcGVyZm9ybUFjdGlvbk9uTWFpblRocmVhZChbcmVn
aXN0cnkgPSAmbV9yZWdpc3RyeSwgbWVzc2FnZSA9IE1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzIHsg
bWVzc2FnZSB9LCByZW1vdGVUYXJnZXRdKCkgbXV0YWJsZSB7CiAgICAgICAgIGlmIChyZWdpc3Ry
eS0+ZGlkUG9zdE1lc3NhZ2VUb1JlbW90ZShXVEZNb3ZlKG1lc3NhZ2UpLCByZW1vdGVUYXJnZXQp
KQogICAgICAgICAgICAgTWVzc2FnZVBvcnQ6Om5vdGlmeU1lc3NhZ2VBdmFpbGFibGUocmVtb3Rl
VGFyZ2V0KTsKICAgICB9KTsKIH0KIAotdm9pZCBNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlcklt
cGw6OnRha2VBbGxNZXNzYWdlc0ZvclBvcnQoY29uc3QgTWVzc2FnZVBvcnRJZGVudGlmaWVyJiBw
b3J0LCBGdW5jdGlvbjx2b2lkKFZlY3RvcjxNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cz4mJiwgRnVu
Y3Rpb248dm9pZCgpPiYmKT4mJiBvdXRlckNhbGxiYWNrKQordm9pZCBNZXNzYWdlUG9ydENoYW5u
ZWxQcm92aWRlckltcGw6OnRha2VBbGxNZXNzYWdlc0ZvclBvcnQoY29uc3QgTWVzc2FnZVBvcnRJ
ZGVudGlmaWVyJiBwb3J0LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxNZXNzYWdlV2l0
aE1lc3NhZ2VQb3J0cz4mJiwgRnVuY3Rpb248dm9pZCgpPiYmKT4mJiBvdXRlckNhbGxiYWNrKQog
ewogICAgIC8vIEl0IGlzIHRoZSByZXNwb25zaWJpbGl0eSBvZiBvdXRlckNhbGxiYWNrIHRvIGdl
dCBpdHNlbGYgdG8gdGhlIGFwcHJvcHJpYXRlIHRocmVhZCAoZS5nLiBXZWJXb3JrZXIgdGhyZWFk
KQotICAgIGF1dG8gY2FsbGJhY2sgPSBbb3V0ZXJDYWxsYmFjayA9IFdURk1vdmUob3V0ZXJDYWxs
YmFjayldKFZlY3RvcjxNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cz4mJiBtZXNzYWdlcywgRnVuY3Rp
b248dm9pZCgpPiYmIG1lc3NhZ2VEZWxpdmVyeUNhbGxiYWNrKSB7CisgICAgYXV0byBjYWxsYmFj
ayA9IFtvdXRlckNhbGxiYWNrID0gV1RGTW92ZShvdXRlckNhbGxiYWNrKV0oVmVjdG9yPE1lc3Nh
Z2VXaXRoTWVzc2FnZVBvcnRzPiYmIG1lc3NhZ2VzLCBGdW5jdGlvbjx2b2lkKCk+JiYgbWVzc2Fn
ZURlbGl2ZXJ5Q2FsbGJhY2spIG11dGFibGUgewogICAgICAgICBBU1NFUlQoaXNNYWluVGhyZWFk
KCkpOwogICAgICAgICBvdXRlckNhbGxiYWNrKFdURk1vdmUobWVzc2FnZXMpLCBXVEZNb3ZlKG1l
c3NhZ2VEZWxpdmVyeUNhbGxiYWNrKSk7CiAgICAgfTsKQEAgLTEwMCw3ICs5OSw3IEBAIHZvaWQg
TWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXJJbXBsOjp0YWtlQWxsTWVzc2FnZXNGb3JQb3J0KGNv
bnN0IE1lc3NhZ2VQb3J0SWRlCiAgICAgfSk7CiB9CiAKLXZvaWQgTWVzc2FnZVBvcnRDaGFubmVs
UHJvdmlkZXJJbXBsOjpjaGVja1JlbW90ZVBvcnRGb3JBY3Rpdml0eShjb25zdCBNZXNzYWdlUG9y
dElkZW50aWZpZXImIHJlbW90ZVRhcmdldCwgRnVuY3Rpb248dm9pZChIYXNBY3Rpdml0eSk+JiYg
b3V0ZXJDYWxsYmFjaykKK3ZvaWQgTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXJJbXBsOjpjaGVj
a1JlbW90ZVBvcnRGb3JBY3Rpdml0eShjb25zdCBNZXNzYWdlUG9ydElkZW50aWZpZXImIHJlbW90
ZVRhcmdldCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChIYXNBY3Rpdml0eSk+JiYgb3V0ZXJDYWxs
YmFjaykKIHsKICAgICBhdXRvIGNhbGxiYWNrID0gRnVuY3Rpb248dm9pZChIYXNBY3Rpdml0eSk+
IHsgW291dGVyQ2FsbGJhY2sgPSBXVEZNb3ZlKG91dGVyQ2FsbGJhY2spXShIYXNBY3Rpdml0eSBo
YXNBY3Rpdml0eSkgbXV0YWJsZSB7CiAgICAgICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CkBA
IC0xMTksNSArMTE4LDQgQEAgdm9pZCBNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlckltcGw6OmNo
ZWNrUHJvY2Vzc0xvY2FsUG9ydEZvckFjdGl2aXR5KGNvbnN0IE1lc3MKICAgICBjYWxsYmFjayhN
ZXNzYWdlUG9ydDo6aXNFeGlzdGluZ01lc3NhZ2VQb3J0TG9jYWxseVJlYWNoYWJsZShpZGVudGlm
aWVyKSA/IEhhc0FjdGl2aXR5OjpZZXMgOiBIYXNBY3Rpdml0eTo6Tm8pOwogfQogCi0KIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9tZXNzYWdl
cG9ydHMvTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXJJbXBsLmggYi9Tb3VyY2UvV2ViQ29yZS9k
b20vbWVzc2FnZXBvcnRzL01lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVySW1wbC5oCmluZGV4IGQz
NTU0ZTFhYTFkZjQ1N2IxYjg1ZDJmYjgyYzc1NjlmOTg5ZDdiNmIuLjQ4Y2I1NDg3MTAyM2E3NTU1
ODYxN2EzNjE1NzVjZDEyOGFhMTgxMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9t
ZXNzYWdlcG9ydHMvTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXJJbXBsLmgKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL21lc3NhZ2Vwb3J0cy9NZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlckltcGwu
aApAQCAtNDAsOSArNDAsOSBAQCBwcml2YXRlOgogICAgIHZvaWQgZW50YW5nbGVMb2NhbFBvcnRJ
blRoaXNQcm9jZXNzVG9SZW1vdGUoY29uc3QgTWVzc2FnZVBvcnRJZGVudGlmaWVyJiBsb2NhbCwg
Y29uc3QgTWVzc2FnZVBvcnRJZGVudGlmaWVyJiByZW1vdGUpIGZpbmFsOwogICAgIHZvaWQgbWVz
c2FnZVBvcnREaXNlbnRhbmdsZWQoY29uc3QgTWVzc2FnZVBvcnRJZGVudGlmaWVyJiBsb2NhbCkg
ZmluYWw7CiAgICAgdm9pZCBtZXNzYWdlUG9ydENsb3NlZChjb25zdCBNZXNzYWdlUG9ydElkZW50
aWZpZXImIGxvY2FsKSBmaW5hbDsKLSAgICB2b2lkIHBvc3RNZXNzYWdlVG9SZW1vdGUoTWVzc2Fn
ZVdpdGhNZXNzYWdlUG9ydHMmJiwgY29uc3QgTWVzc2FnZVBvcnRJZGVudGlmaWVyJiByZW1vdGVU
YXJnZXQpIGZpbmFsOwotICAgIHZvaWQgdGFrZUFsbE1lc3NhZ2VzRm9yUG9ydChjb25zdCBNZXNz
YWdlUG9ydElkZW50aWZpZXImLCBGdW5jdGlvbjx2b2lkKFZlY3RvcjxNZXNzYWdlV2l0aE1lc3Nh
Z2VQb3J0cz4mJiwgRnVuY3Rpb248dm9pZCgpPiYmKT4mJikgZmluYWw7Ci0gICAgdm9pZCBjaGVj
a1JlbW90ZVBvcnRGb3JBY3Rpdml0eShjb25zdCBNZXNzYWdlUG9ydElkZW50aWZpZXImIHJlbW90
ZVRhcmdldCwgRnVuY3Rpb248dm9pZChIYXNBY3Rpdml0eSk+JiYgY2FsbGJhY2spIGZpbmFsOwor
ICAgIHZvaWQgcG9zdE1lc3NhZ2VUb1JlbW90ZShjb25zdCBNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0
cyYsIGNvbnN0IE1lc3NhZ2VQb3J0SWRlbnRpZmllciYgcmVtb3RlVGFyZ2V0KSBmaW5hbDsKKyAg
ICB2b2lkIHRha2VBbGxNZXNzYWdlc0ZvclBvcnQoY29uc3QgTWVzc2FnZVBvcnRJZGVudGlmaWVy
JiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8TWVzc2FnZVdpdGhNZXNzYWdlUG9ydHM+
JiYsIEZ1bmN0aW9uPHZvaWQoKT4mJik+JiYpIGZpbmFsOworICAgIHZvaWQgY2hlY2tSZW1vdGVQ
b3J0Rm9yQWN0aXZpdHkoY29uc3QgTWVzc2FnZVBvcnRJZGVudGlmaWVyJiByZW1vdGVUYXJnZXQs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSGFzQWN0aXZpdHkpPiYmIGNhbGxiYWNrKSBmaW5hbDsK
IAogICAgIHZvaWQgY2hlY2tQcm9jZXNzTG9jYWxQb3J0Rm9yQWN0aXZpdHkoY29uc3QgTWVzc2Fn
ZVBvcnRJZGVudGlmaWVyJiwgUHJvY2Vzc0lkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoSGFzQWN0aXZpdHkpPiYmKSBmaW5hbDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
ZG9tL21lc3NhZ2Vwb3J0cy9NZXNzYWdlUG9ydENoYW5uZWxSZWdpc3RyeS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vbWVzc2FnZXBvcnRzL01lc3NhZ2VQb3J0Q2hhbm5lbFJlZ2lzdHJ5LmNwcApp
bmRleCAxY2IzNTU0NmUzM2ZjNjYxMGM0NmEyZDBkOWQyODM2ODg5NDU3NmNlLi5lMGU2MGYyZTk3
MDdjMzJmMGM4OTc1ZGEzZGI1ZmVkZmQ3Nzc5YWUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vbWVzc2FnZXBvcnRzL01lc3NhZ2VQb3J0Q2hhbm5lbFJlZ2lzdHJ5LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9kb20vbWVzc2FnZXBvcnRzL01lc3NhZ2VQb3J0Q2hhbm5lbFJlZ2lzdHJ5
LmNwcApAQCAtMTQxLDcgKzE0MSw3IEBAIGJvb2wgTWVzc2FnZVBvcnRDaGFubmVsUmVnaXN0cnk6
OmRpZFBvc3RNZXNzYWdlVG9SZW1vdGUoTWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMmCiAgICAgcmV0
dXJuIGNoYW5uZWwtPnBvc3RNZXNzYWdlVG9SZW1vdGUoV1RGTW92ZShtZXNzYWdlKSwgcmVtb3Rl
VGFyZ2V0KTsKIH0KIAotdm9pZCBNZXNzYWdlUG9ydENoYW5uZWxSZWdpc3RyeTo6dGFrZUFsbE1l
c3NhZ2VzRm9yUG9ydChjb25zdCBNZXNzYWdlUG9ydElkZW50aWZpZXImIHBvcnQsIEZ1bmN0aW9u
PHZvaWQoVmVjdG9yPE1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzPiYmLCBGdW5jdGlvbjx2b2lkKCk+
JiYpPiYmIGNhbGxiYWNrKQordm9pZCBNZXNzYWdlUG9ydENoYW5uZWxSZWdpc3RyeTo6dGFrZUFs
bE1lc3NhZ2VzRm9yUG9ydChjb25zdCBNZXNzYWdlUG9ydElkZW50aWZpZXImIHBvcnQsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPE1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzPiYmLCBGdW5j
dGlvbjx2b2lkKCk+JiYpPiYmIGNhbGxiYWNrKQogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQo
KSk7CiAKQEAgLTE1Nyw3ICsxNTcsNyBAQCB2b2lkIE1lc3NhZ2VQb3J0Q2hhbm5lbFJlZ2lzdHJ5
Ojp0YWtlQWxsTWVzc2FnZXNGb3JQb3J0KGNvbnN0IE1lc3NhZ2VQb3J0SWRlbnRpZgogICAgIGNo
YW5uZWwtPnRha2VBbGxNZXNzYWdlc0ZvclBvcnQocG9ydCwgV1RGTW92ZShjYWxsYmFjaykpOwog
fQogCi12b2lkIE1lc3NhZ2VQb3J0Q2hhbm5lbFJlZ2lzdHJ5OjpjaGVja1JlbW90ZVBvcnRGb3JB
Y3Rpdml0eShjb25zdCBNZXNzYWdlUG9ydElkZW50aWZpZXImIHJlbW90ZVRhcmdldCwgRnVuY3Rp
b248dm9pZChNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlcjo6SGFzQWN0aXZpdHkpPiYmIGNhbGxi
YWNrKQordm9pZCBNZXNzYWdlUG9ydENoYW5uZWxSZWdpc3RyeTo6Y2hlY2tSZW1vdGVQb3J0Rm9y
QWN0aXZpdHkoY29uc3QgTWVzc2FnZVBvcnRJZGVudGlmaWVyJiByZW1vdGVUYXJnZXQsIENvbXBs
ZXRpb25IYW5kbGVyPHZvaWQoTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXI6Okhhc0FjdGl2aXR5
KT4mJiBjYWxsYmFjaykKIHsKICAgICBBU1NFUlQoaXNNYWluVGhyZWFkKCkpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vbWVzc2FnZXBvcnRzL01lc3NhZ2VQb3J0Q2hhbm5lbFJl
Z2lzdHJ5LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vbWVzc2FnZXBvcnRzL01lc3NhZ2VQb3J0Q2hh
bm5lbFJlZ2lzdHJ5LmgKaW5kZXggNTMxYWE5NTg0ODQzZGE3NTE1NzYxMWIxM2I3NGU0MTBmZWI2
NzNhNS4uNmJjYTI4MmVkY2E5YTMwMDcyOTI3NWI5NjQ5YTRjNTNhNGFkZjFjNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvZG9tL21lc3NhZ2Vwb3J0cy9NZXNzYWdlUG9ydENoYW5uZWxSZWdp
c3RyeS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9tZXNzYWdlcG9ydHMvTWVzc2FnZVBvcnRD
aGFubmVsUmVnaXN0cnkuaApAQCAtNDMsOCArNDMsOCBAQCBwdWJsaWM6CiAgICAgV0VCQ09SRV9F
WFBPUlQgdm9pZCBkaWREaXNlbnRhbmdsZU1lc3NhZ2VQb3J0KGNvbnN0IE1lc3NhZ2VQb3J0SWRl
bnRpZmllciYgbG9jYWwpOwogICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgZGlkQ2xvc2VNZXNzYWdl
UG9ydChjb25zdCBNZXNzYWdlUG9ydElkZW50aWZpZXImIGxvY2FsKTsKICAgICBXRUJDT1JFX0VY
UE9SVCBib29sIGRpZFBvc3RNZXNzYWdlVG9SZW1vdGUoTWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMm
JiwgY29uc3QgTWVzc2FnZVBvcnRJZGVudGlmaWVyJiByZW1vdGVUYXJnZXQpOwotICAgIFdFQkNP
UkVfRVhQT1JUIHZvaWQgdGFrZUFsbE1lc3NhZ2VzRm9yUG9ydChjb25zdCBNZXNzYWdlUG9ydElk
ZW50aWZpZXImLCBGdW5jdGlvbjx2b2lkKFZlY3RvcjxNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cz4m
JiwgRnVuY3Rpb248dm9pZCgpPiYmKT4mJik7Ci0gICAgV0VCQ09SRV9FWFBPUlQgdm9pZCBjaGVj
a1JlbW90ZVBvcnRGb3JBY3Rpdml0eShjb25zdCBNZXNzYWdlUG9ydElkZW50aWZpZXImIHJlbW90
ZVRhcmdldCwgRnVuY3Rpb248dm9pZChNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlcjo6SGFzQWN0
aXZpdHkpPiYmIGNhbGxiYWNrKTsKKyAgICBXRUJDT1JFX0VYUE9SVCB2b2lkIHRha2VBbGxNZXNz
YWdlc0ZvclBvcnQoY29uc3QgTWVzc2FnZVBvcnRJZGVudGlmaWVyJiwgQ29tcGxldGlvbkhhbmRs
ZXI8dm9pZChWZWN0b3I8TWVzc2FnZVdpdGhNZXNzYWdlUG9ydHM+JiYsIEZ1bmN0aW9uPHZvaWQo
KT4mJik+JiYpOworICAgIFdFQkNPUkVfRVhQT1JUIHZvaWQgY2hlY2tSZW1vdGVQb3J0Rm9yQWN0
aXZpdHkoY29uc3QgTWVzc2FnZVBvcnRJZGVudGlmaWVyJiByZW1vdGVUYXJnZXQsIENvbXBsZXRp
b25IYW5kbGVyPHZvaWQoTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXI6Okhhc0FjdGl2aXR5KT4m
JiBjYWxsYmFjayk7CiAKICAgICBXRUJDT1JFX0VYUE9SVCBNZXNzYWdlUG9ydENoYW5uZWwqIGV4
aXN0aW5nQ2hhbm5lbENvbnRhaW5pbmdQb3J0KGNvbnN0IE1lc3NhZ2VQb3J0SWRlbnRpZmllciYp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vbWVzc2FnZXBvcnRzL1dvcmtlck1l
c3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9tZXNzYWdl
cG9ydHMvV29ya2VyTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXIuY3BwCm5ldyBmaWxlIG1vZGUg
MTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjZh
MDE3NTkxMTMyNTcwYzQ3OWMxNTA0MmI5MDc4MjhiMGVmODQwMGQKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vbWVzc2FnZXBvcnRzL1dvcmtlck1lc3NhZ2VQb3J0Q2hhbm5l
bFByb3ZpZGVyLmNwcApAQCAtMCwwICsxLDEzOCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAx
OSBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24g
YW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBt
b2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNv
bmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNv
ZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVk
aXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVy
IG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBT
T0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIEFORCBJVFMgQ09OVFJJQlVUT1JTIGBg
QVMgSVMnJworICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1F
UkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFS
RSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SIElUUyBDT05UUklC
VVRPUlMKKyAqIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUws
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKKyAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVE
SU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCisgKiBTVUJTVElUVVRFIEdP
T0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MKKyAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOCisgKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1Ig
VE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQorICogQVJJU0lORyBJTiBB
TlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RgorICogVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJj
b25maWcuaCIKKyNpbmNsdWRlICJXb3JrZXJNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlci5oIgor
CisjaW5jbHVkZSAiTWVzc2FnZVBvcnQuaCIKKyNpbmNsdWRlICJXb3JrZXJHbG9iYWxTY29wZS5o
IgorI2luY2x1ZGUgIldvcmtlclRocmVhZC5oIgorI2luY2x1ZGUgPHd0Zi9NYWluVGhyZWFkLmg+
CisjaW5jbHVkZSA8d3RmL1J1bkxvb3AuaD4KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitXb3Jr
ZXJNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlcjo6V29ya2VyTWVzc2FnZVBvcnRDaGFubmVsUHJv
dmlkZXIoV29ya2VyR2xvYmFsU2NvcGUmIHNjb3BlKQorICAgIDogbV9zY29wZShzY29wZSkKK3sK
K30KKworV29ya2VyTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXI6On5Xb3JrZXJNZXNzYWdlUG9y
dENoYW5uZWxQcm92aWRlcigpCit7CisgICAgd2hpbGUgKCFtX3Rha2VBbGxNZXNzYWdlc0NhbGxi
YWNrcy5pc0VtcHR5KCkpIHsKKyAgICAgICAgYXV0byBmaXJzdCA9IG1fdGFrZUFsbE1lc3NhZ2Vz
Q2FsbGJhY2tzLmJlZ2luKCk7CisgICAgICAgIGZpcnN0LT52YWx1ZSh7IH0sIFtdIHsgfSk7Cisg
ICAgICAgIG1fdGFrZUFsbE1lc3NhZ2VzQ2FsbGJhY2tzLnJlbW92ZShmaXJzdCk7CisgICAgfQor
ICAgIHdoaWxlICghbV9hY3Rpdml0eUNhbGxiYWNrcy5pc0VtcHR5KCkpIHsKKyAgICAgICAgYXV0
byBmaXJzdCA9IG1fYWN0aXZpdHlDYWxsYmFja3MuYmVnaW4oKTsKKyAgICAgICAgZmlyc3QtPnZh
bHVlKEhhc0FjdGl2aXR5OjpObyk7CisgICAgICAgIG1fYWN0aXZpdHlDYWxsYmFja3MucmVtb3Zl
KGZpcnN0KTsKKyAgICB9Cit9CisKK3ZvaWQgV29ya2VyTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlk
ZXI6OmNyZWF0ZU5ld01lc3NhZ2VQb3J0Q2hhbm5lbChjb25zdCBNZXNzYWdlUG9ydElkZW50aWZp
ZXImIGxvY2FsLCBjb25zdCBNZXNzYWdlUG9ydElkZW50aWZpZXImIHJlbW90ZSkKK3sKKyAgICBj
YWxsT25NYWluVGhyZWFkKFtsb2NhbCwgcmVtb3RlXSB7CisgICAgICAgIE1lc3NhZ2VQb3J0Q2hh
bm5lbFByb3ZpZGVyOjpzaW5nbGV0b24oKS5jcmVhdGVOZXdNZXNzYWdlUG9ydENoYW5uZWwobG9j
YWwsIHJlbW90ZSk7CisgICAgfSk7Cit9CisKK3ZvaWQgV29ya2VyTWVzc2FnZVBvcnRDaGFubmVs
UHJvdmlkZXI6OmVudGFuZ2xlTG9jYWxQb3J0SW5UaGlzUHJvY2Vzc1RvUmVtb3RlKGNvbnN0IE1l
c3NhZ2VQb3J0SWRlbnRpZmllciYgbG9jYWwsIGNvbnN0IE1lc3NhZ2VQb3J0SWRlbnRpZmllciYg
cmVtb3RlKQoreworICAgIGNhbGxPbk1haW5UaHJlYWQoW2xvY2FsLCByZW1vdGVdIHsKKyAgICAg
ICAgTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXI6OnNpbmdsZXRvbigpLmVudGFuZ2xlTG9jYWxQ
b3J0SW5UaGlzUHJvY2Vzc1RvUmVtb3RlKGxvY2FsLCByZW1vdGUpOworICAgIH0pOworfQorCit2
b2lkIFdvcmtlck1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyOjptZXNzYWdlUG9ydERpc2VudGFu
Z2xlZChjb25zdCBNZXNzYWdlUG9ydElkZW50aWZpZXImIGxvY2FsKQoreworICAgIGNhbGxPbk1h
aW5UaHJlYWQoW2xvY2FsXSB7CisgICAgICAgIE1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyOjpz
aW5nbGV0b24oKS5tZXNzYWdlUG9ydERpc2VudGFuZ2xlZChsb2NhbCk7CisgICAgfSk7Cit9CisK
K3ZvaWQgV29ya2VyTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXI6Om1lc3NhZ2VQb3J0Q2xvc2Vk
KGNvbnN0IE1lc3NhZ2VQb3J0SWRlbnRpZmllciYgbG9jYWwpCit7CisgICAgY2FsbE9uTWFpblRo
cmVhZChbbG9jYWxdIHsKKyAgICAgICAgTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXI6OnNpbmds
ZXRvbigpLm1lc3NhZ2VQb3J0Q2xvc2VkKGxvY2FsKTsKKyAgICB9KTsKK30KKwordm9pZCBXb3Jr
ZXJNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlcjo6cG9zdE1lc3NhZ2VUb1JlbW90ZShjb25zdCBN
ZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cyYgbWVzc2FnZSwgY29uc3QgTWVzc2FnZVBvcnRJZGVudGlm
aWVyJiByZW1vdGVUYXJnZXQpCit7CisgICAgY2FsbE9uTWFpblRocmVhZEFuZFdhaXQoWyZdKCkg
bXV0YWJsZSB7CisgICAgICAgIE1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyOjpzaW5nbGV0b24o
KS5wb3N0TWVzc2FnZVRvUmVtb3RlKG1lc3NhZ2UsIHJlbW90ZVRhcmdldCk7CisgICAgfSk7Cit9
CisKK3ZvaWQgV29ya2VyTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXI6OnRha2VBbGxNZXNzYWdl
c0ZvclBvcnQoY29uc3QgTWVzc2FnZVBvcnRJZGVudGlmaWVyJiBpZGVudGlmaWVyLCBDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKFZlY3RvcjxNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cz4mJiwgRnVuY3Rp
b248dm9pZCgpPiYmKT4mJiBjYWxsYmFjaykKK3sKKyAgICB1aW50NjRfdCBjYWxsYmFja0lkZW50
aWZpZXIgPSArK21fbGFzdENhbGxiYWNrSWRlbnRpZmllcjsKKyAgICBtX3Rha2VBbGxNZXNzYWdl
c0NhbGxiYWNrcy5hZGQoY2FsbGJhY2tJZGVudGlmaWVyLCBXVEZNb3ZlKGNhbGxiYWNrKSk7CisK
KyAgICBjYWxsT25NYWluVGhyZWFkKFt0aGlzLCB3b3JrZXJUaHJlYWQgPSBtYWtlUmVmKG1fc2Nv
cGUudGhyZWFkKCkpLCBjYWxsYmFja0lkZW50aWZpZXIsIGlkZW50aWZpZXJdKCkgbXV0YWJsZSB7
CisgICAgICAgIE1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyOjpzaW5nbGV0b24oKS50YWtlQWxs
TWVzc2FnZXNGb3JQb3J0KGlkZW50aWZpZXIsIFt0aGlzLCB3b3JrZXJUaHJlYWQgPSBXVEZNb3Zl
KHdvcmtlclRocmVhZCksIGNhbGxiYWNrSWRlbnRpZmllcl0oVmVjdG9yPE1lc3NhZ2VXaXRoTWVz
c2FnZVBvcnRzPiYmIG1lc3NhZ2VzLCBGdW5jdGlvbjx2b2lkKCk+JiYgY29tcGxldGlvbkhhbmRs
ZXIpIHsKKyAgICAgICAgICAgIHdvcmtlclRocmVhZC0+cnVuTG9vcCgpLnBvc3RUYXNrRm9yTW9k
ZShbdGhpcywgY2FsbGJhY2tJZGVudGlmaWVyLCBtZXNzYWdlcyA9IFdURk1vdmUobWVzc2FnZXMp
LCBjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXShhdXRvJiBz
Y29wZSkgbXV0YWJsZSB7CisgICAgICAgICAgICAgICAgQVNTRVJUX1VOVVNFRChzY29wZSwgdGhp
cyA9PSAmZG93bmNhc3Q8V29ya2VyR2xvYmFsU2NvcGU+KHNjb3BlKS5tZXNzYWdlUG9ydENoYW5u
ZWxQcm92aWRlcigpKTsKKyAgICAgICAgICAgICAgICBtX3Rha2VBbGxNZXNzYWdlc0NhbGxiYWNr
cy50YWtlKGNhbGxiYWNrSWRlbnRpZmllcikoV1RGTW92ZShtZXNzYWdlcyksIFtjb21wbGV0aW9u
SGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11dGFibGUgeworICAgICAg
ICAgICAgICAgICAgICBjYWxsT25NYWluVGhyZWFkKFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIp
KTsKKyAgICAgICAgICAgICAgICB9KTsKKyAgICAgICAgICAgIH0sIFdvcmtlclJ1bkxvb3A6OmRl
ZmF1bHRNb2RlKCkpOworICAgICAgICB9KTsKKyAgICB9KTsKK30KKwordm9pZCBXb3JrZXJNZXNz
YWdlUG9ydENoYW5uZWxQcm92aWRlcjo6Y2hlY2tSZW1vdGVQb3J0Rm9yQWN0aXZpdHkoY29uc3Qg
TWVzc2FnZVBvcnRJZGVudGlmaWVyJiByZW1vdGVUYXJnZXQsIENvbXBsZXRpb25IYW5kbGVyPHZv
aWQoSGFzQWN0aXZpdHkpPiYmIGNhbGxiYWNrKQoreworICAgIHVpbnQ2NF90IGNhbGxiYWNrSWRl
bnRpZmllciA9ICsrbV9sYXN0Q2FsbGJhY2tJZGVudGlmaWVyOworICAgIG1fYWN0aXZpdHlDYWxs
YmFja3MuYWRkKGNhbGxiYWNrSWRlbnRpZmllciwgV1RGTW92ZShjYWxsYmFjaykpOworCisgICAg
Y2FsbE9uTWFpblRocmVhZChbdGhpcywgd29ya2VyVGhyZWFkID0gbWFrZVJlZihtX3Njb3BlLnRo
cmVhZCgpKSwgY2FsbGJhY2tJZGVudGlmaWVyLCByZW1vdGVUYXJnZXRdKCkgbXV0YWJsZSB7Cisg
ICAgICAgIE1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyOjpzaW5nbGV0b24oKS5jaGVja1JlbW90
ZVBvcnRGb3JBY3Rpdml0eShyZW1vdGVUYXJnZXQsIFt0aGlzLCB3b3JrZXJUaHJlYWQgPSBXVEZN
b3ZlKHdvcmtlclRocmVhZCksIGNhbGxiYWNrSWRlbnRpZmllcl0oYXV0byBoYXNBY3Rpdml0eSkg
eworICAgICAgICAgICAgd29ya2VyVGhyZWFkLT5ydW5Mb29wKCkucG9zdFRhc2tGb3JNb2RlKFt0
aGlzLCBjYWxsYmFja0lkZW50aWZpZXIsIGhhc0FjdGl2aXR5XShhdXRvJiBzY29wZSkgbXV0YWJs
ZSB7CisgICAgICAgICAgICAgICAgQVNTRVJUX1VOVVNFRChzY29wZSwgdGhpcyA9PSAmZG93bmNh
c3Q8V29ya2VyR2xvYmFsU2NvcGU+KHNjb3BlKS5tZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlcigp
KTsKKyAgICAgICAgICAgICAgICBtX2FjdGl2aXR5Q2FsbGJhY2tzLnRha2UoY2FsbGJhY2tJZGVu
dGlmaWVyKShoYXNBY3Rpdml0eSk7CisgICAgICAgICAgICB9LCBXb3JrZXJSdW5Mb29wOjpkZWZh
dWx0TW9kZSgpKTsKKyAgICAgICAgfSk7CisgICAgfSk7Cit9CisKK3ZvaWQgV29ya2VyTWVzc2Fn
ZVBvcnRDaGFubmVsUHJvdmlkZXI6OmNoZWNrUHJvY2Vzc0xvY2FsUG9ydEZvckFjdGl2aXR5KGNv
bnN0IE1lc3NhZ2VQb3J0SWRlbnRpZmllciYgaWRlbnRpZmllciwgUHJvY2Vzc0lkZW50aWZpZXIg
cHJvY2Vzc0lkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSGFzQWN0aXZpdHkpPiYm
IGNhbGxiYWNrKQoreworICAgIHVpbnQ2NF90IGNhbGxiYWNrSWRlbnRpZmllciA9ICsrbV9sYXN0
Q2FsbGJhY2tJZGVudGlmaWVyOworICAgIG1fYWN0aXZpdHlDYWxsYmFja3MuYWRkKGNhbGxiYWNr
SWRlbnRpZmllciwgV1RGTW92ZShjYWxsYmFjaykpOworCisgICAgY2FsbE9uTWFpblRocmVhZChb
dGhpcywgd29ya2VyVGhyZWFkID0gbWFrZVJlZihtX3Njb3BlLnRocmVhZCgpKSwgY2FsbGJhY2tJ
ZGVudGlmaWVyLCBpZGVudGlmaWVyLCBwcm9jZXNzSWRlbnRpZmllcl0oKSBtdXRhYmxlIHsKKyAg
ICAgICAgTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXI6OnNpbmdsZXRvbigpLmNoZWNrUHJvY2Vz
c0xvY2FsUG9ydEZvckFjdGl2aXR5KGlkZW50aWZpZXIsIHByb2Nlc3NJZGVudGlmaWVyLCBbdGhp
cywgd29ya2VyVGhyZWFkID0gV1RGTW92ZSh3b3JrZXJUaHJlYWQpLCBjYWxsYmFja0lkZW50aWZp
ZXJdKGF1dG8gaGFzQWN0aXZpdHkpIHsKKyAgICAgICAgICAgIHdvcmtlclRocmVhZC0+cnVuTG9v
cCgpLnBvc3RUYXNrRm9yTW9kZShbdGhpcywgY2FsbGJhY2tJZGVudGlmaWVyLCBoYXNBY3Rpdml0
eV0oYXV0byYgc2NvcGUpIG11dGFibGUgeworICAgICAgICAgICAgICAgIEFTU0VSVF9VTlVTRUQo
c2NvcGUsIHRoaXMgPT0gJmRvd25jYXN0PFdvcmtlckdsb2JhbFNjb3BlPihzY29wZSkubWVzc2Fn
ZVBvcnRDaGFubmVsUHJvdmlkZXIoKSk7CisgICAgICAgICAgICAgICAgbV9hY3Rpdml0eUNhbGxi
YWNrcy50YWtlKGNhbGxiYWNrSWRlbnRpZmllcikoaGFzQWN0aXZpdHkpOworICAgICAgICAgICAg
fSwgV29ya2VyUnVuTG9vcDo6ZGVmYXVsdE1vZGUoKSk7CisgICAgICAgIH0pOworICAgIH0pOwor
fQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9k
b20vbWVzc2FnZXBvcnRzL1dvcmtlck1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9kb20vbWVzc2FnZXBvcnRzL1dvcmtlck1lc3NhZ2VQb3J0Q2hhbm5lbFByb3Zp
ZGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uODdkMDIwYWY0Y2MyOTQ0ZDAyYTdmZDFlNzQ1NTdlZmI1MjQ5ZDFl
ZQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9tZXNzYWdlcG9ydHMvV29y
a2VyTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXIuaApAQCAtMCwwICsxLDYxIEBACisvKgorICog
Q29weXJpZ2h0IChDKSAyMDE5IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisg
KiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRo
IG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0
IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0
aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1
Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0
aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRh
dGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlv
bi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gQU5EIElU
UyBDT05UUklCVVRPUlMgYGBBUyBJUycnCisgKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFRIRSBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IgSVRTIENPTlRSSUJVVE9SUworICogQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgorICogQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YK
KyAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUworICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KKyAqIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
CisgKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GCisgKiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRl
ci5oIgorI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgorI2luY2x1ZGUgPHd0Zi9I
YXNoTWFwLmg+CisjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7
CisKK2NsYXNzIFdvcmtlckdsb2JhbFNjb3BlOworCitjbGFzcyBXb3JrZXJNZXNzYWdlUG9ydENo
YW5uZWxQcm92aWRlciBmaW5hbCA6IHB1YmxpYyBNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlciB7
CisgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CitwdWJsaWM6CisgICAgZXhwbGljaXQgV29y
a2VyTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXIoV29ya2VyR2xvYmFsU2NvcGUmKTsKKyAgICB+
V29ya2VyTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXIoKTsKKworcHJpdmF0ZToKKyAgICB2b2lk
IGNyZWF0ZU5ld01lc3NhZ2VQb3J0Q2hhbm5lbChjb25zdCBNZXNzYWdlUG9ydElkZW50aWZpZXIm
IGxvY2FsLCBjb25zdCBNZXNzYWdlUG9ydElkZW50aWZpZXImIHJlbW90ZSkgZmluYWw7CisgICAg
dm9pZCBlbnRhbmdsZUxvY2FsUG9ydEluVGhpc1Byb2Nlc3NUb1JlbW90ZShjb25zdCBNZXNzYWdl
UG9ydElkZW50aWZpZXImIGxvY2FsLCBjb25zdCBNZXNzYWdlUG9ydElkZW50aWZpZXImIHJlbW90
ZSkgZmluYWw7CisgICAgdm9pZCBtZXNzYWdlUG9ydERpc2VudGFuZ2xlZChjb25zdCBNZXNzYWdl
UG9ydElkZW50aWZpZXImIGxvY2FsKSBmaW5hbDsKKyAgICB2b2lkIG1lc3NhZ2VQb3J0Q2xvc2Vk
KGNvbnN0IE1lc3NhZ2VQb3J0SWRlbnRpZmllciYgbG9jYWwpIGZpbmFsOworICAgIHZvaWQgcG9z
dE1lc3NhZ2VUb1JlbW90ZShjb25zdCBNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cyYsIGNvbnN0IE1l
c3NhZ2VQb3J0SWRlbnRpZmllciYgcmVtb3RlVGFyZ2V0KSBmaW5hbDsKKyAgICB2b2lkIHRha2VB
bGxNZXNzYWdlc0ZvclBvcnQoY29uc3QgTWVzc2FnZVBvcnRJZGVudGlmaWVyJiwgQ29tcGxldGlv
bkhhbmRsZXI8dm9pZChWZWN0b3I8TWVzc2FnZVdpdGhNZXNzYWdlUG9ydHM+JiYsIEZ1bmN0aW9u
PHZvaWQoKT4mJik+JiYpIGZpbmFsOworICAgIHZvaWQgY2hlY2tSZW1vdGVQb3J0Rm9yQWN0aXZp
dHkoY29uc3QgTWVzc2FnZVBvcnRJZGVudGlmaWVyJiByZW1vdGVUYXJnZXQsIENvbXBsZXRpb25I
YW5kbGVyPHZvaWQoSGFzQWN0aXZpdHkpPiYmIGNhbGxiYWNrKSBmaW5hbDsKKworICAgIHZvaWQg
Y2hlY2tQcm9jZXNzTG9jYWxQb3J0Rm9yQWN0aXZpdHkoY29uc3QgTWVzc2FnZVBvcnRJZGVudGlm
aWVyJiwgUHJvY2Vzc0lkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSGFzQWN0aXZp
dHkpPiYmKSBmaW5hbDsKKworICAgIFdvcmtlckdsb2JhbFNjb3BlJiBtX3Njb3BlOworCisgICAg
dWludDY0X3QgbV9sYXN0Q2FsbGJhY2tJZGVudGlmaWVyIHsgMCB9OworICAgIEhhc2hNYXA8dWlu
dDY0X3QsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPE1lc3NhZ2VXaXRoTWVzc2FnZVBv
cnRzPiYmLCBGdW5jdGlvbjx2b2lkKCk+JiYpPj4gbV90YWtlQWxsTWVzc2FnZXNDYWxsYmFja3M7
CisgICAgSGFzaE1hcDx1aW50NjRfdCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChIYXNBY3Rpdml0
eSk+PiBtX2FjdGl2aXR5Q2FsbGJhY2tzOworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmNwcAppbmRleCA1ZTE1
NWI3ODAyMDUyNTg3N2Q0ZDcwN2M1YTliOGJmZWZlNGQzNzJjLi5hOTcwYTdhZGE2NzVhMTZjZjE2
ODcwZWMzZWIzYTZjMzRjZWRjMmY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS93b3JrZXJz
L1dvcmtlckdsb2JhbFNjb3BlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS93b3JrZXJzL1dvcmtl
ckdsb2JhbFNjb3BlLmNwcApAQCAtNDYzLDYgKzQ2MywxMyBAQCBXb3JrZXJDYWNoZVN0b3JhZ2VD
b25uZWN0aW9uJiBXb3JrZXJHbG9iYWxTY29wZTo6Y2FjaGVTdG9yYWdlQ29ubmVjdGlvbigpCiAg
ICAgcmV0dXJuICptX2NhY2hlU3RvcmFnZUNvbm5lY3Rpb247CiB9CiAKK01lc3NhZ2VQb3J0Q2hh
bm5lbFByb3ZpZGVyJiBXb3JrZXJHbG9iYWxTY29wZTo6bWVzc2FnZVBvcnRDaGFubmVsUHJvdmlk
ZXIoKQoreworICAgIGlmICghbV9tZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlcikKKyAgICAgICAg
bV9tZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlciA9IG1ha2VVbmlxdWU8V29ya2VyTWVzc2FnZVBv
cnRDaGFubmVsUHJvdmlkZXI+KCp0aGlzKTsKKyAgICByZXR1cm4gKm1fbWVzc2FnZVBvcnRDaGFu
bmVsUHJvdmlkZXI7Cit9CisKIHZvaWQgV29ya2VyR2xvYmFsU2NvcGU6OmNyZWF0ZUltYWdlQml0
bWFwKEltYWdlQml0bWFwOjpTb3VyY2UmJiBzb3VyY2UsIEltYWdlQml0bWFwT3B0aW9ucyYmIG9w
dGlvbnMsIEltYWdlQml0bWFwOjpQcm9taXNlJiYgcHJvbWlzZSkKIHsKICAgICBJbWFnZUJpdG1h
cDo6Y3JlYXRlUHJvbWlzZSgqdGhpcywgV1RGTW92ZShzb3VyY2UpLCBXVEZNb3ZlKG9wdGlvbnMp
LCBXVEZNb3ZlKHByb21pc2UpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMv
V29ya2VyR2xvYmFsU2NvcGUuaCBiL1NvdXJjZS9XZWJDb3JlL3dvcmtlcnMvV29ya2VyR2xvYmFs
U2NvcGUuaAppbmRleCA5Yjc3ZTJjNjEzYWFiMTlhOWVhNTdmNzE1Yzg1YzE0Y2JiYzhkNTE2Li4x
YjcxYzExYWNjNGE5MDBkOWJlMjFhNjUxNjYxOTMzNTIzNGM5ZWQwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS93b3JrZXJzL1dvcmtlckdsb2JhbFNjb3BlLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvd29ya2Vycy9Xb3JrZXJHbG9iYWxTY29wZS5oCkBAIC0zNSw2ICszNSw3IEBACiAjaW5jbHVk
ZSA8d3RmL1VSTC5oPgogI2luY2x1ZGUgIldvcmtlckNhY2hlU3RvcmFnZUNvbm5lY3Rpb24uaCIK
ICNpbmNsdWRlICJXb3JrZXJFdmVudFF1ZXVlLmgiCisjaW5jbHVkZSAiV29ya2VyTWVzc2FnZVBv
cnRDaGFubmVsUHJvdmlkZXIuaCIKICNpbmNsdWRlICJXb3JrZXJTY3JpcHRDb250cm9sbGVyLmgi
CiAjaW5jbHVkZSA8SmF2YVNjcmlwdENvcmUvQ29uc29sZU1lc3NhZ2UuaD4KICNpbmNsdWRlIDxt
ZW1vcnk+CkBAIC03Myw2ICs3NCw3IEBAIHB1YmxpYzoKICNlbmRpZgogCiAgICAgV29ya2VyQ2Fj
aGVTdG9yYWdlQ29ubmVjdGlvbiYgY2FjaGVTdG9yYWdlQ29ubmVjdGlvbigpOworICAgIE1lc3Nh
Z2VQb3J0Q2hhbm5lbFByb3ZpZGVyJiBtZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlcigpOwogCiAg
ICAgV29ya2VyU2NyaXB0Q29udHJvbGxlciogc2NyaXB0KCkgeyByZXR1cm4gbV9zY3JpcHQuZ2V0
KCk7IH0KICAgICB2b2lkIGNsZWFyU2NyaXB0KCkgeyBtX3NjcmlwdCA9IG51bGxwdHI7IH0KQEAg
LTIxMCw3ICsyMTIsNyBAQCBwcml2YXRlOgogCiAgICAgUEFMOjpTZXNzaW9uSUQgbV9zZXNzaW9u
SUQ7CiAgICAgUmVmUHRyPFdvcmtlckNhY2hlU3RvcmFnZUNvbm5lY3Rpb24+IG1fY2FjaGVTdG9y
YWdlQ29ubmVjdGlvbjsKLQorICAgIHN0ZDo6dW5pcXVlX3B0cjxXb3JrZXJNZXNzYWdlUG9ydENo
YW5uZWxQcm92aWRlcj4gbV9tZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlcjsKICAgICB1bnNpZ25l
ZCBsb25nIG1fdW5pcXVlSWRlbnRpZmllciB7IDEgfTsKIH07CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJLaXQvVUlQcm9jZXNzL1VJTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXIuY3BwIGIvU291
cmNlL1dlYktpdC9VSVByb2Nlc3MvVUlNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlci5jcHAKaW5k
ZXggZmI0YzY0NGJlMmFkYzc3ZTU1N2JmMGUyNGM4NmNkOTdiNWEwOWVlMC4uMjAzYzZiNjgwM2U3
MWIyMzEwZWMzOTJhMGQ1ZDQwYzhmZWJkNzhmNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9V
SVByb2Nlc3MvVUlNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlci5jcHAKKysrIGIvU291cmNlL1dl
YktpdC9VSVByb2Nlc3MvVUlNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlci5jcHAKQEAgLTI4LDcg
KzI4LDYgQEAKIAogI2luY2x1ZGUgIldlYlByb2Nlc3NNZXNzYWdlcy5oIgogI2luY2x1ZGUgIldl
YlByb2Nlc3NQcm94eS5oIgotI2luY2x1ZGUgPHd0Zi9Db21wbGV0aW9uSGFuZGxlci5oPgogCiBu
YW1lc3BhY2UgV2ViS2l0IHsKIHVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOwpAQCAtNzMsMTkgKzcy
LDE5IEBAIHZvaWQgVUlNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlcjo6bWVzc2FnZVBvcnRDbG9z
ZWQoY29uc3QgTWVzc2FnZVBvcnRJZGVudGlmaWVyCiAgICAgQVNTRVJUX05PVF9SRUFDSEVEKCk7
CiB9CiAKLXZvaWQgVUlNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlcjo6dGFrZUFsbE1lc3NhZ2Vz
Rm9yUG9ydChjb25zdCBNZXNzYWdlUG9ydElkZW50aWZpZXImLCBGdW5jdGlvbjx2b2lkKFZlY3Rv
cjxNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cz4mJiwgRnVuY3Rpb248dm9pZCgpPiYmKT4mJikKK3Zv
aWQgVUlNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlcjo6dGFrZUFsbE1lc3NhZ2VzRm9yUG9ydChj
b25zdCBNZXNzYWdlUG9ydElkZW50aWZpZXImLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFZlY3Rv
cjxNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cz4mJiwgRnVuY3Rpb248dm9pZCgpPiYmKT4mJikKIHsK
ICAgICAvLyBTaG91bGQgbmV2ZXIgYmUgY2FsbGVkIGluIHRoZSBVSSBwcm9jZXNzIHByb3ZpZGVy
LgogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQogCi12b2lkIFVJTWVzc2FnZVBvcnRDaGFu
bmVsUHJvdmlkZXI6OnBvc3RNZXNzYWdlVG9SZW1vdGUoTWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMm
JiwgY29uc3QgTWVzc2FnZVBvcnRJZGVudGlmaWVyJikKK3ZvaWQgVUlNZXNzYWdlUG9ydENoYW5u
ZWxQcm92aWRlcjo6cG9zdE1lc3NhZ2VUb1JlbW90ZShjb25zdCBNZXNzYWdlV2l0aE1lc3NhZ2VQ
b3J0cyYsIGNvbnN0IE1lc3NhZ2VQb3J0SWRlbnRpZmllciYpCiB7CiAgICAgLy8gU2hvdWxkIG5l
dmVyIGJlIGNhbGxlZCBpbiB0aGUgVUkgcHJvY2VzcyBwcm92aWRlci4KICAgICBBU1NFUlRfTk9U
X1JFQUNIRUQoKTsKIH0KIAotdm9pZCBVSU1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyOjpjaGVj
a1JlbW90ZVBvcnRGb3JBY3Rpdml0eShjb25zdCBNZXNzYWdlUG9ydElkZW50aWZpZXImLCBGdW5j
dGlvbjx2b2lkKEhhc0FjdGl2aXR5KT4mJikKK3ZvaWQgVUlNZXNzYWdlUG9ydENoYW5uZWxQcm92
aWRlcjo6Y2hlY2tSZW1vdGVQb3J0Rm9yQWN0aXZpdHkoY29uc3QgTWVzc2FnZVBvcnRJZGVudGlm
aWVyJiwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChIYXNBY3Rpdml0eSk+JiYpCiB7CiAgICAgLy8g
U2hvdWxkIG5ldmVyIGJlIGNhbGxlZCBpbiB0aGUgVUkgcHJvY2VzcyBwcm92aWRlci4KICAgICBB
U1NFUlRfTk9UX1JFQUNIRUQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1VJTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXIuaCBiL1NvdXJjZS9XZWJLaXQvVUlQcm9jZXNz
L1VJTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXIuaAppbmRleCA2YzI2OTYwNGEyOGNjNDU2MzVk
NGIzNmJlMzVhZTY2YjMxMDY0OTI1Li5jNjc5ZTNlYjAyMzQwN2Y1NTEzMDRjNGM1NDU1OTdlZDJl
ZmQzNzA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1VJUHJvY2Vzcy9VSU1lc3NhZ2VQb3J0
Q2hhbm5lbFByb3ZpZGVyLmgKKysrIGIvU291cmNlL1dlYktpdC9VSVByb2Nlc3MvVUlNZXNzYWdl
UG9ydENoYW5uZWxQcm92aWRlci5oCkBAIC00Myw5ICs0Myw5IEBAIHByaXZhdGU6CiAgICAgdm9p
ZCBlbnRhbmdsZUxvY2FsUG9ydEluVGhpc1Byb2Nlc3NUb1JlbW90ZShjb25zdCBXZWJDb3JlOjpN
ZXNzYWdlUG9ydElkZW50aWZpZXImIGxvY2FsLCBjb25zdCBXZWJDb3JlOjpNZXNzYWdlUG9ydElk
ZW50aWZpZXImIHJlbW90ZSkgZmluYWw7CiAgICAgdm9pZCBtZXNzYWdlUG9ydERpc2VudGFuZ2xl
ZChjb25zdCBXZWJDb3JlOjpNZXNzYWdlUG9ydElkZW50aWZpZXImIGxvY2FsKSBmaW5hbDsKICAg
ICB2b2lkIG1lc3NhZ2VQb3J0Q2xvc2VkKGNvbnN0IFdlYkNvcmU6Ok1lc3NhZ2VQb3J0SWRlbnRp
ZmllciYgbG9jYWwpIGZpbmFsOwotICAgIHZvaWQgdGFrZUFsbE1lc3NhZ2VzRm9yUG9ydChjb25z
dCBXZWJDb3JlOjpNZXNzYWdlUG9ydElkZW50aWZpZXImLCBGdW5jdGlvbjx2b2lkKFZlY3RvcjxX
ZWJDb3JlOjpNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cz4mJiwgRnVuY3Rpb248dm9pZCgpPiYmKT4m
JikgZmluYWw7Ci0gICAgdm9pZCBwb3N0TWVzc2FnZVRvUmVtb3RlKFdlYkNvcmU6Ok1lc3NhZ2VX
aXRoTWVzc2FnZVBvcnRzJiYsIGNvbnN0IFdlYkNvcmU6Ok1lc3NhZ2VQb3J0SWRlbnRpZmllciYg
cmVtb3RlVGFyZ2V0KSBmaW5hbDsKLSAgICB2b2lkIGNoZWNrUmVtb3RlUG9ydEZvckFjdGl2aXR5
KGNvbnN0IFdlYkNvcmU6Ok1lc3NhZ2VQb3J0SWRlbnRpZmllciYgcmVtb3RlVGFyZ2V0LCBGdW5j
dGlvbjx2b2lkKEhhc0FjdGl2aXR5KT4mJiBjYWxsYmFjaykgZmluYWw7CisgICAgdm9pZCB0YWtl
QWxsTWVzc2FnZXNGb3JQb3J0KGNvbnN0IFdlYkNvcmU6Ok1lc3NhZ2VQb3J0SWRlbnRpZmllciYs
IENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9yPFdlYkNvcmU6Ok1lc3NhZ2VXaXRoTWVzc2Fn
ZVBvcnRzPiYmLCBGdW5jdGlvbjx2b2lkKCk+JiYpPiYmKSBmaW5hbDsKKyAgICB2b2lkIHBvc3RN
ZXNzYWdlVG9SZW1vdGUoY29uc3QgV2ViQ29yZTo6TWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMmLCBj
b25zdCBXZWJDb3JlOjpNZXNzYWdlUG9ydElkZW50aWZpZXImIHJlbW90ZVRhcmdldCkgZmluYWw7
CisgICAgdm9pZCBjaGVja1JlbW90ZVBvcnRGb3JBY3Rpdml0eShjb25zdCBXZWJDb3JlOjpNZXNz
YWdlUG9ydElkZW50aWZpZXImIHJlbW90ZVRhcmdldCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChI
YXNBY3Rpdml0eSk+JiYgY2FsbGJhY2spIGZpbmFsOwogICAgIHZvaWQgY2hlY2tQcm9jZXNzTG9j
YWxQb3J0Rm9yQWN0aXZpdHkoY29uc3QgV2ViQ29yZTo6TWVzc2FnZVBvcnRJZGVudGlmaWVyJiwg
V2ViQ29yZTo6UHJvY2Vzc0lkZW50aWZpZXIsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoSGFzQWN0
aXZpdHkpPiYmKSBmaW5hbDsKIAogICAgIFdlYkNvcmU6Ok1lc3NhZ2VQb3J0Q2hhbm5lbFJlZ2lz
dHJ5IG1fcmVnaXN0cnk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2Vi
Q29yZVN1cHBvcnQvV2ViTWVzc2FnZVBvcnRDaGFubmVsUHJvdmlkZXIuY3BwIGIvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYk1lc3NhZ2VQb3J0Q2hhbm5lbFByb3Zp
ZGVyLmNwcAppbmRleCA2ZDI4NTZhMDRlZGEyOTJmNmY2YTY4N2MwZTE2YzIxMDJhODMxNTUxLi44
ZTYyMTZhNzcxNzgwN2VlY2NmYjdkNDU4NDg0N2Q3NTZkNzk0MGMzIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViTWVzc2FnZVBvcnRDaGFubmVs
UHJvdmlkZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9y
dC9XZWJNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlci5jcHAKQEAgLTcwLDE4ICs3MCwxNCBAQCB2
b2lkIFdlYk1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyOjptZXNzYWdlUG9ydENsb3NlZChjb25z
dCBNZXNzYWdlUG9ydElkZW50aWZpZQogICAgIFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVu
dFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6TWVz
c2FnZVBvcnRDbG9zZWQocG9ydCksIDApOwogfQogCi12b2lkIFdlYk1lc3NhZ2VQb3J0Q2hhbm5l
bFByb3ZpZGVyOjp0YWtlQWxsTWVzc2FnZXNGb3JQb3J0KGNvbnN0IE1lc3NhZ2VQb3J0SWRlbnRp
ZmllciYgcG9ydCwgRnVuY3Rpb248dm9pZChWZWN0b3I8TWVzc2FnZVdpdGhNZXNzYWdlUG9ydHM+
JiYsIEZ1bmN0aW9uPHZvaWQoKT4mJik+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYk1l
c3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyOjp0YWtlQWxsTWVzc2FnZXNGb3JQb3J0KGNvbnN0IE1l
c3NhZ2VQb3J0SWRlbnRpZmllciYgcG9ydCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChWZWN0b3I8
TWVzc2FnZVdpdGhNZXNzYWdlUG9ydHM+JiYsIEZ1bmN0aW9uPHZvaWQoKT4mJik+JiYgY29tcGxl
dGlvbkhhbmRsZXIpCiB7Ci0gICAgc3RhdGljIHN0ZDo6YXRvbWljPHVpbnQ2NF90PiBjdXJyZW50
SGFuZGxlcklkZW50aWZpZXI7CisgICAgQVNTRVJUKGlzTWFpblRocmVhZCgpKTsKKyAgICBzdGF0
aWMgdWludDY0X3QgY3VycmVudEhhbmRsZXJJZGVudGlmaWVyOwogICAgIHVpbnQ2NF90IGlkZW50
aWZpZXIgPSArK2N1cnJlbnRIYW5kbGVySWRlbnRpZmllcjsKIAotICAgIHsKLSAgICAgICAgTG9j
a2VyPExvY2s+IGxvY2tlcihtX3Rha2VBbGxNZXNzYWdlc0NhbGxiYWNrTG9jayk7Ci0gICAgICAg
IGF1dG8gcmVzdWx0ID0gbV90YWtlQWxsTWVzc2FnZXNDYWxsYmFja3MuZW5zdXJlKGlkZW50aWZp
ZXIsIFtjb21wbGV0aW9uSGFuZGxlciA9IFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpXSgpIG11
dGFibGUgewotICAgICAgICAgICAgcmV0dXJuIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpOwot
ICAgICAgICB9KTsKLSAgICAgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdC5pc05ld0Vu
dHJ5KTsKLSAgICB9CisgICAgQVNTRVJUKCFtX3Rha2VBbGxNZXNzYWdlc0NhbGxiYWNrcy5jb250
YWlucyhpZGVudGlmaWVyKSk7CisgICAgbV90YWtlQWxsTWVzc2FnZXNDYWxsYmFja3MuYWRkKGlk
ZW50aWZpZXIsIFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpKTsKIAogICAgIFdlYlByb2Nlc3M6
OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6Oldl
YlByb2Nlc3NQcm94eTo6VGFrZUFsbE1lc3NhZ2VzRm9yUG9ydChwb3J0LCBpZGVudGlmaWVyKSwg
MCk7CiB9CkBAIC05MCwxMCArODYsNyBAQCB2b2lkIFdlYk1lc3NhZ2VQb3J0Q2hhbm5lbFByb3Zp
ZGVyOjpkaWRUYWtlQWxsTWVzc2FnZXNGb3JQb3J0KFZlY3RvcjxNZXNzYWdlV2l0aAogewogICAg
IEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAKLSAgICBMb2NrZXI8TG9jaz4gbG9ja2VyKG1fdGFr
ZUFsbE1lc3NhZ2VzQ2FsbGJhY2tMb2NrKTsKICAgICBhdXRvIGNhbGxiYWNrID0gbV90YWtlQWxs
TWVzc2FnZXNDYWxsYmFja3MudGFrZShtZXNzYWdlQ2FsbGJhY2tJZGVudGlmaWVyKTsKLSAgICBs
b2NrZXIudW5sb2NrRWFybHkoKTsKLQogICAgIEFTU0VSVChjYWxsYmFjayk7CiAgICAgY2FsbGJh
Y2soV1RGTW92ZShtZXNzYWdlcyksIFttZXNzYWdlQmF0Y2hJZGVudGlmaWVyXSB7CiAgICAgICAg
IFdlYlByb2Nlc3M6OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQo
TWVzc2FnZXM6OldlYlByb2Nlc3NQcm94eTo6RGlkRGVsaXZlck1lc3NhZ2VQb3J0TWVzc2FnZXMo
bWVzc2FnZUJhdGNoSWRlbnRpZmllciksIDApOwpAQCAtMTA0LDE3ICs5NywxNCBAQCB2b2lkIFdl
Yk1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyOjpkaWRDaGVja1JlbW90ZVBvcnRGb3JBY3Rpdml0
eSh1aW50NjRfdCBjYWxsYgogewogICAgIEFTU0VSVChpc01haW5UaHJlYWQoKSk7CiAKLSAgICBM
b2NrZXI8TG9jaz4gbG9ja2VyKG1fcmVtb3RlQWN0aXZpdHlDYWxsYmFja0xvY2spOwogICAgIGF1
dG8gY2FsbGJhY2sgPSBtX3JlbW90ZUFjdGl2aXR5Q2FsbGJhY2tzLnRha2UoY2FsbGJhY2tJZGVu
dGlmaWVyKTsKLSAgICBsb2NrZXIudW5sb2NrRWFybHkoKTsKLQogICAgIEFTU0VSVChjYWxsYmFj
ayk7CiAgICAgY2FsbGJhY2soaGFzQWN0aXZpdHkgPyBIYXNBY3Rpdml0eTo6WWVzIDogSGFzQWN0
aXZpdHk6Ok5vKTsKIH0KIAotdm9pZCBXZWJNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlcjo6cG9z
dE1lc3NhZ2VUb1JlbW90ZShNZXNzYWdlV2l0aE1lc3NhZ2VQb3J0cyYmIG1lc3NhZ2UsIGNvbnN0
IE1lc3NhZ2VQb3J0SWRlbnRpZmllciYgcmVtb3RlVGFyZ2V0KQordm9pZCBXZWJNZXNzYWdlUG9y
dENoYW5uZWxQcm92aWRlcjo6cG9zdE1lc3NhZ2VUb1JlbW90ZShjb25zdCBNZXNzYWdlV2l0aE1l
c3NhZ2VQb3J0cyYgbWVzc2FnZSwgY29uc3QgTWVzc2FnZVBvcnRJZGVudGlmaWVyJiByZW1vdGVU
YXJnZXQpCiB7Ci0gICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFyZW50UHJvY2Vzc0Nvbm5l
Y3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpQb3N0TWVzc2FnZVRvUmVt
b3RlKFdURk1vdmUobWVzc2FnZSksIHJlbW90ZVRhcmdldCksIDApOworICAgIFdlYlByb2Nlc3M6
OnNpbmdsZXRvbigpLnBhcmVudFByb2Nlc3NDb25uZWN0aW9uKCktPnNlbmQoTWVzc2FnZXM6Oldl
YlByb2Nlc3NQcm94eTo6UG9zdE1lc3NhZ2VUb1JlbW90ZShtZXNzYWdlLCByZW1vdGVUYXJnZXQp
LCAwKTsKIH0KIAogdm9pZCBXZWJNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlcjo6Y2hlY2tQcm9j
ZXNzTG9jYWxQb3J0Rm9yQWN0aXZpdHkoY29uc3QgTWVzc2FnZVBvcnRJZGVudGlmaWVyJiBpZGVu
dGlmaWVyLCB1aW50NjRfdCBjYWxsYmFja0lkZW50aWZpZXIpCkBAIC0xMjgsMTYgKzExOCwxNSBA
QCB2b2lkIFdlYk1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyOjpjaGVja1Byb2Nlc3NMb2NhbFBv
cnRGb3JBY3Rpdml0eShjb25zdCBNZXNzYQogICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogfQog
Ci12b2lkIFdlYk1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyOjpjaGVja1JlbW90ZVBvcnRGb3JB
Y3Rpdml0eShjb25zdCBNZXNzYWdlUG9ydElkZW50aWZpZXImIHJlbW90ZVRhcmdldCwgRnVuY3Rp
b248dm9pZChIYXNBY3Rpdml0eSk+JiYgY29tcGxldGlvbkhhbmRsZXIpCit2b2lkIFdlYk1lc3Nh
Z2VQb3J0Q2hhbm5lbFByb3ZpZGVyOjpjaGVja1JlbW90ZVBvcnRGb3JBY3Rpdml0eShjb25zdCBN
ZXNzYWdlUG9ydElkZW50aWZpZXImIHJlbW90ZVRhcmdldCwgQ29tcGxldGlvbkhhbmRsZXI8dm9p
ZChIYXNBY3Rpdml0eSk+JiYgY29tcGxldGlvbkhhbmRsZXIpCiB7Ci0gICAgc3RhdGljIHN0ZDo6
YXRvbWljPHVpbnQ2NF90PiBjdXJyZW50SGFuZGxlcklkZW50aWZpZXI7CisgICAgQVNTRVJUKGlz
TWFpblRocmVhZCgpKTsKKworICAgIHN0YXRpYyB1aW50NjRfdCBjdXJyZW50SGFuZGxlcklkZW50
aWZpZXI7CiAgICAgdWludDY0X3QgaWRlbnRpZmllciA9ICsrY3VycmVudEhhbmRsZXJJZGVudGlm
aWVyOwogCi0gICAgewotICAgICAgICBMb2NrZXI8TG9jaz4gbG9ja2VyKG1fcmVtb3RlQWN0aXZp
dHlDYWxsYmFja0xvY2spOwotICAgICAgICBBU1NFUlQoIW1fcmVtb3RlQWN0aXZpdHlDYWxsYmFj
a3MuY29udGFpbnMoaWRlbnRpZmllcikpOwotICAgICAgICBtX3JlbW90ZUFjdGl2aXR5Q2FsbGJh
Y2tzLnNldChpZGVudGlmaWVyLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7Ci0gICAgfQor
ICAgIEFTU0VSVCghbV9yZW1vdGVBY3Rpdml0eUNhbGxiYWNrcy5jb250YWlucyhpZGVudGlmaWVy
KSk7CisgICAgbV9yZW1vdGVBY3Rpdml0eUNhbGxiYWNrcy5zZXQoaWRlbnRpZmllciwgV1RGTW92
ZShjb21wbGV0aW9uSGFuZGxlcikpOwogCiAgICAgV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkucGFy
ZW50UHJvY2Vzc0Nvbm5lY3Rpb24oKS0+c2VuZChNZXNzYWdlczo6V2ViUHJvY2Vzc1Byb3h5OjpD
aGVja1JlbW90ZVBvcnRGb3JBY3Rpdml0eShyZW1vdGVUYXJnZXQsIGlkZW50aWZpZXIpLCAwKTsK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9X
ZWJNZXNzYWdlUG9ydENoYW5uZWxQcm92aWRlci5oIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYk1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyLmgKaW5kZXggNGJi
MzdmZGQ2MDc3NzRlZDgwOWE5NjdhNzc1MTVmYmFmYjZlZjZhMS4uZDA1MDY4NDgxYjQ5MTRmZmFh
ZWM4MTM0YWZlYjg3NTM1ZGViN2I2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYk1lc3NhZ2VQb3J0Q2hhbm5lbFByb3ZpZGVyLmgKKysrIGIv
U291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYk1lc3NhZ2VQb3J0Q2hh
bm5lbFByb3ZpZGVyLmgKQEAgLTQ4LDE3ICs0OCwxNyBAQCBwcml2YXRlOgogICAgIHZvaWQgZW50
YW5nbGVMb2NhbFBvcnRJblRoaXNQcm9jZXNzVG9SZW1vdGUoY29uc3QgV2ViQ29yZTo6TWVzc2Fn
ZVBvcnRJZGVudGlmaWVyJiBsb2NhbCwgY29uc3QgV2ViQ29yZTo6TWVzc2FnZVBvcnRJZGVudGlm
aWVyJiByZW1vdGUpIGZpbmFsOwogICAgIHZvaWQgbWVzc2FnZVBvcnREaXNlbnRhbmdsZWQoY29u
c3QgV2ViQ29yZTo6TWVzc2FnZVBvcnRJZGVudGlmaWVyJiBsb2NhbCkgZmluYWw7CiAgICAgdm9p
ZCBtZXNzYWdlUG9ydENsb3NlZChjb25zdCBXZWJDb3JlOjpNZXNzYWdlUG9ydElkZW50aWZpZXIm
IGxvY2FsKSBmaW5hbDsKLSAgICB2b2lkIHRha2VBbGxNZXNzYWdlc0ZvclBvcnQoY29uc3QgV2Vi
Q29yZTo6TWVzc2FnZVBvcnRJZGVudGlmaWVyJiwgRnVuY3Rpb248dm9pZChWZWN0b3I8V2ViQ29y
ZTo6TWVzc2FnZVdpdGhNZXNzYWdlUG9ydHM+JiYsIEZ1bmN0aW9uPHZvaWQoKT4mJik+JiYpIGZp
bmFsOwotICAgIHZvaWQgcG9zdE1lc3NhZ2VUb1JlbW90ZShXZWJDb3JlOjpNZXNzYWdlV2l0aE1l
c3NhZ2VQb3J0cyYmLCBjb25zdCBXZWJDb3JlOjpNZXNzYWdlUG9ydElkZW50aWZpZXImIHJlbW90
ZVRhcmdldCkgZmluYWw7CisgICAgdm9pZCB0YWtlQWxsTWVzc2FnZXNGb3JQb3J0KGNvbnN0IFdl
YkNvcmU6Ok1lc3NhZ2VQb3J0SWRlbnRpZmllciYsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVj
dG9yPFdlYkNvcmU6Ok1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzPiYmLCBGdW5jdGlvbjx2b2lkKCk+
JiYpPiYmKSBmaW5hbDsKKyAgICB2b2lkIHBvc3RNZXNzYWdlVG9SZW1vdGUoY29uc3QgV2ViQ29y
ZTo6TWVzc2FnZVdpdGhNZXNzYWdlUG9ydHMmLCBjb25zdCBXZWJDb3JlOjpNZXNzYWdlUG9ydElk
ZW50aWZpZXImIHJlbW90ZVRhcmdldCkgZmluYWw7CiAgICAgdm9pZCBjaGVja1Byb2Nlc3NMb2Nh
bFBvcnRGb3JBY3Rpdml0eShjb25zdCBXZWJDb3JlOjpNZXNzYWdlUG9ydElkZW50aWZpZXImLCBX
ZWJDb3JlOjpQcm9jZXNzSWRlbnRpZmllciwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChIYXNBY3Rp
dml0eSk+JiYpIGZpbmFsOwogCiAgICAgLy8gVG8gYmUgY2FsbGVkIG9ubHkgaW4gdGhlIFVJIHBy
b2Nlc3MKLSAgICB2b2lkIGNoZWNrUmVtb3RlUG9ydEZvckFjdGl2aXR5KGNvbnN0IFdlYkNvcmU6
Ok1lc3NhZ2VQb3J0SWRlbnRpZmllciYgcmVtb3RlVGFyZ2V0LCBGdW5jdGlvbjx2b2lkKEhhc0Fj
dGl2aXR5KT4mJiBjYWxsYmFjaykgZmluYWw7CisgICAgdm9pZCBjaGVja1JlbW90ZVBvcnRGb3JB
Y3Rpdml0eShjb25zdCBXZWJDb3JlOjpNZXNzYWdlUG9ydElkZW50aWZpZXImIHJlbW90ZVRhcmdl
dCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChIYXNBY3Rpdml0eSk+JiYgY2FsbGJhY2spIGZpbmFs
OwogCiAgICAgTG9jayBtX3Rha2VBbGxNZXNzYWdlc0NhbGxiYWNrTG9jazsKLSAgICBIYXNoTWFw
PHVpbnQ2NF90LCBGdW5jdGlvbjx2b2lkKFZlY3RvcjxXZWJDb3JlOjpNZXNzYWdlV2l0aE1lc3Nh
Z2VQb3J0cz4mJiwgRnVuY3Rpb248dm9pZCgpPiYmKT4+IG1fdGFrZUFsbE1lc3NhZ2VzQ2FsbGJh
Y2tzOworICAgIEhhc2hNYXA8dWludDY0X3QsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoVmVjdG9y
PFdlYkNvcmU6Ok1lc3NhZ2VXaXRoTWVzc2FnZVBvcnRzPiYmLCBGdW5jdGlvbjx2b2lkKCk+JiYp
Pj4gbV90YWtlQWxsTWVzc2FnZXNDYWxsYmFja3M7CiAgICAgTG9jayBtX3JlbW90ZUFjdGl2aXR5
Q2FsbGJhY2tMb2NrOwotICAgIEhhc2hNYXA8dWludDY0X3QsIEZ1bmN0aW9uPHZvaWQoSGFzQWN0
aXZpdHkpPj4gbV9yZW1vdGVBY3Rpdml0eUNhbGxiYWNrczsKKyAgICBIYXNoTWFwPHVpbnQ2NF90
LCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKEhhc0FjdGl2aXR5KT4+IG1fcmVtb3RlQWN0aXZpdHlD
YWxsYmFja3M7CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBXZWJLaXQK
</data>

          </attachment>
      

    </bug>

</bugzilla>