<?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>207916</bug_id>
          
          <creation_ts>2020-02-18 15:10:29 -0800</creation_ts>
          <short_desc>Add logging to help diagnose redirect issue</short_desc>
          <delta_ts>2020-02-26 13:13:03 -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>WebCore Misc.</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Keith Rollin">krollin</reporter>
          <assigned_to name="Keith Rollin">krollin</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>cdumez</cc>
    
    <cc>commit-queue</cc>
    
    <cc>dbates</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>japhet</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1620360</commentid>
    <comment_count>0</comment_count>
    <who name="Keith Rollin">krollin</who>
    <bug_when>2020-02-18 15:10:29 -0800</bug_when>
    <thetext>We&apos;re seeing an issue where communication between the WebContent process and the Network process seems to come to a stop between NetworkResourceLoader::continueWillSendRedirectedRequest and NetworkResourceLoader::continueWillSendRequest. We do see a WebResourceLoader::willSendRequest log line between those two NetworkResourceLoader logging lines, but nothing else. Add a bunch of logging in this area to help determine what&apos;s happening.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1620361</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-02-18 15:10:42 -0800</bug_when>
    <thetext>&lt;rdar://problem/59567875&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1620365</commentid>
    <comment_count>2</comment_count>
      <attachid>391100</attachid>
    <who name="Keith Rollin">krollin</who>
    <bug_when>2020-02-18 15:13:19 -0800</bug_when>
    <thetext>Created attachment 391100
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1621721</commentid>
    <comment_count>3</comment_count>
    <who name="Keith Rollin">krollin</who>
    <bug_when>2020-02-21 11:14:14 -0800</bug_when>
    <thetext>bump.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1622711</commentid>
    <comment_count>4</comment_count>
      <attachid>391100</attachid>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-02-25 12:58:33 -0800</bug_when>
    <thetext>Comment on attachment 391100
Patch

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

&gt; Source/WebCore/loader/PolicyChecker.cpp:56
&gt; +#define RELEASE_LOG_ALWAYS(fmt, ...) RELEASE_LOG(Loading, &quot;%p - PolicyChecker::&quot; fmt, this, ##__VA_ARGS__)

Don&apos;t we normally use RELEASE_LOG_IF_ALLOWED?

&gt; Source/WebCore/loader/PolicyChecker.cpp:133
&gt; +        RELEASE_LOG_ALWAYS(&quot;checkNavigationPolicy: continuing because empty URL&quot;);

These all need to log some context (pageID, processIdentifier or something).</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1622714</commentid>
    <comment_count>5</comment_count>
    <who name="Keith Rollin">krollin</who>
    <bug_when>2020-02-25 13:01:39 -0800</bug_when>
    <thetext>(In reply to Simon Fraser (smfr) from comment #4)
&gt; Comment on attachment 391100 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=391100&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/loader/PolicyChecker.cpp:56
&gt; &gt; +#define RELEASE_LOG_ALWAYS(fmt, ...) RELEASE_LOG(Loading, &quot;%p - PolicyChecker::&quot; fmt, this, ##__VA_ARGS__)
&gt; 
&gt; Don&apos;t we normally use RELEASE_LOG_IF_ALLOWED?

If possible. The policy for whether or not to perform logging is based on private browsing, which is based on the Session. I don&apos;t know if one is available here, but I&apos;ll double-check.

&gt; 
&gt; &gt; Source/WebCore/loader/PolicyChecker.cpp:133
&gt; &gt; +        RELEASE_LOG_ALWAYS(&quot;checkNavigationPolicy: continuing because empty URL&quot;);
&gt; 
&gt; These all need to log some context (pageID, processIdentifier or something).

That information is usually applied in the RELEASE_LOG_ALWAYS macro, so you wouldn&apos;t see it at the call site. That said, I don&apos;t see any additional information in the macro. I&apos;ll see if there&apos;s anything appropriate.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1622716</commentid>
    <comment_count>6</comment_count>
    <who name="Keith Rollin">krollin</who>
    <bug_when>2020-02-25 13:06:54 -0800</bug_when>
    <thetext>There&apos;s no SessionID immediately available to the Policy checking. It doesn&apos;t have one as a member, and none is passed in as a parameter anywhere.

Similarly, there is no pageID or frameID information anywhere.

Indirectly, the PolicyChecker has a Frame reference. But this class doesn&apos;t have a SessionID or frameID, either.

ProcessID is standard as part of all logging.

In light of all this, can you think of anything else you&apos;d like to see added to the logging?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1622722</commentid>
    <comment_count>7</comment_count>
    <who name="Simon Fraser (smfr)">simon.fraser</who>
    <bug_when>2020-02-25 13:28:00 -0800</bug_when>
    <thetext>(In reply to Keith Rollin from comment #6)
&gt; There&apos;s no SessionID immediately available to the Policy checking. It
&gt; doesn&apos;t have one as a member, and none is passed in as a parameter anywhere.
&gt; 
&gt; Similarly, there is no pageID or frameID information anywhere.
&gt; 
&gt; Indirectly, the PolicyChecker has a Frame reference. But this class doesn&apos;t
&gt; have a SessionID or frameID, either.
&gt; 
&gt; ProcessID is standard as part of all logging.
&gt; 
&gt; In light of all this, can you think of anything else you&apos;d like to see added
&gt; to the logging?

Can you get the FrameIdentifier via the FrameLoaderClient?

I&apos;m not sure why FrameIdentifier doesn&apos;t live on Frame.

Do resource loads have some kind of identifier we can log?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1622731</commentid>
    <comment_count>8</comment_count>
    <who name="Keith Rollin">krollin</who>
    <bug_when>2020-02-25 13:45:26 -0800</bug_when>
    <thetext>(In reply to Simon Fraser (smfr) from comment #7)
&gt; 
&gt; Can you get the FrameIdentifier via the FrameLoaderClient?

I see pageID and frameID in FrameLoaderClient. I&apos;ll toss those in. Chris points out that the Frame has a Page reference, which will have a SessionID, so I can add that, too.

&gt; Do resource loads have some kind of identifier we can log?

They do, but I don&apos;t think we have any in the context of PolicyChecker calls.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1622829</commentid>
    <comment_count>9</comment_count>
    <who name="Keith Rollin">krollin</who>
    <bug_when>2020-02-25 16:47:03 -0800</bug_when>
    <thetext>PolicyChecker logging now looks like:

2020-02-25 16:41:54.252851-0800 0x158edc5  Default     0x0                  35354  0    com.apple.WebKit.WebContent.Development: (WebCore) [com.apple.WebKit:Loading] 0x609c76bd0 - [pageID=19, frameID=3] PolicyChecker::checkNavigationPolicy: continuing because this policyAction from dispatchDecidePolicyForNavigationAction is Use
...
2020-02-25 16:41:56.238576-0800 0x158ed55  Default     0x0                  35352  0    com.apple.WebKit.WebContent.Development: (WebCore) [com.apple.WebKit:Loading] 0x6c1c96d20 - [pageID=10, frameID=3] PolicyChecker::checkNavigationPolicy: stopping because policyAction from dispatchDecidePolicyForNavigationAction is StopAllLoads</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1622832</commentid>
    <comment_count>10</comment_count>
      <attachid>391703</attachid>
    <who name="Keith Rollin">krollin</who>
    <bug_when>2020-02-25 16:50:51 -0800</bug_when>
    <thetext>Created attachment 391703
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1623031</commentid>
    <comment_count>11</comment_count>
      <attachid>391703</attachid>
    <who name="Chris Dumez">cdumez</who>
    <bug_when>2020-02-26 09:30:48 -0800</bug_when>
    <thetext>Comment on attachment 391703
Patch

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

r=me with fixes

&gt; Source/WebCore/ChangeLog:15
&gt; +        Reviewed by NOBODY (OOPS!).

This comes *before* the description.

&gt; Source/WebKit/ChangeLog:15
&gt; +        Reviewed by NOBODY (OOPS!).

Ditto.

&gt; Source/WebCore/loader/PolicyChecker.cpp:136
&gt; +        RELEASE_LOG_IF_ALLOWED(&quot;checkNavigationPolicy: continuing because empty URL&quot;);

or because it is the same as last request.

&gt; Source/WebCore/loader/PolicyChecker.cpp:155
&gt; +            RELEASE_LOG_IF_ALLOWED(&quot;checkNavigationPolicy: ignoring because the content filter told us not to&quot;);

This should say that we are not continuing *with substitute data*, to indicate clearly that we are in the substitute data code path.

&gt; Source/WebCore/loader/PolicyChecker.cpp:188
&gt; +        RELEASE_LOG_IF_ALLOWED(&quot;checkNavigationPolicy: ignoring because mumble-content-filter-unblock-handler-mumble&quot;);

because ContentFilterUnblockHandler can handle the request

&gt; Source/WebCore/loader/ResourceLoader.cpp:397
&gt; +            RELEASE_LOG_IF_ALLOWED(&quot;willSendRequestInternal: resource load reached terminal state&quot;);

... after calling assignIdentifierToInitialRequest()

&gt; Source/WebCore/loader/SubresourceLoader.cpp:192
&gt; +        RELEASE_LOG_IF_ALLOWED(&quot;willSendRequestInternal: resource load canceled because request is invalid&quot;);

*new* request

&gt; Source/WebCore/loader/SubresourceLoader.cpp:206
&gt; +                RELEASE_LOG_IF_ALLOWED(&quot;willSendRequestInternal: resource load canceled because request is NULL (1)&quot;);

*new* request is null

&gt; Source/WebKit/WebProcess/WebCoreSupport/WebFrameLoaderClient.cpp:817
&gt; +        WEBFRAMELOADERCLIENT_RELEASE_LOG(Network, &quot;dispatchDecidePolicyForResponse: continuing because the url string is empty&quot;);

s/empty/null</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1623090</commentid>
    <comment_count>12</comment_count>
      <attachid>391763</attachid>
    <who name="Keith Rollin">krollin</who>
    <bug_when>2020-02-26 11:52:10 -0800</bug_when>
    <thetext>Created attachment 391763
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1623128</commentid>
    <comment_count>13</comment_count>
      <attachid>391763</attachid>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-02-26 13:13:01 -0800</bug_when>
    <thetext>Comment on attachment 391763
Patch

Clearing flags on attachment: 391763

Committed r257505: &lt;https://trac.webkit.org/changeset/257505&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1623129</commentid>
    <comment_count>14</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2020-02-26 13:13:03 -0800</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>391100</attachid>
            <date>2020-02-18 15:13:19 -0800</date>
            <delta_ts>2020-02-25 16:50:50 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-207916-20200218151318.patch</filename>
            <type>text/plain</type>
            <size>39331</size>
            <attacher name="Keith Rollin">krollin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU2NzU2CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWU3ZDhkYWVjZDAxNTc1
ZjU5Y2RlNmIxYzM2ZDQxYzQxMDQ3ZDhhMC4uNWI0YTZmNWFkZjQ0OTNkZGIyYTgyY2U0YjgyMDhj
M2QzYWU3NTU0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ1IEBACisyMDIwLTAyLTE4ICBLZWl0
aCBSb2xsaW4gIDxrcm9sbGluQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgbG9nZ2luZyB0byBo
ZWxwIGRpYWdub3NlIHJlZGlyZWN0IGlzc3VlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMDc5MTYKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU5NTY3
ODc1PgorCisgICAgICAgIFdlJ3JlIHNlZWluZyBhbiBpc3N1ZSB3aGVyZSBjb21tdW5pY2F0aW9u
IGJldHdlZW4gdGhlIFdlYkNvbnRlbnQKKyAgICAgICAgcHJvY2VzcyBhbmQgdGhlIE5ldHdvcmsg
cHJvY2VzcyBzZWVtcyB0byBjb21lIHRvIGEgc3RvcCBiZXR3ZWVuCisgICAgICAgIE5ldHdvcmtS
ZXNvdXJjZUxvYWRlcjo6Y29udGludWVXaWxsU2VuZFJlZGlyZWN0ZWRSZXF1ZXN0IGFuZAorICAg
ICAgICBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmNvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0LiBXZSBk
byBzZWUgYQorICAgICAgICBXZWJSZXNvdXJjZUxvYWRlcjo6d2lsbFNlbmRSZXF1ZXN0IGxvZyBs
aW5lIGJldHdlZW4gdGhvc2UgdHdvCisgICAgICAgIE5ldHdvcmtSZXNvdXJjZUxvYWRlciBsb2dn
aW5nIGxpbmVzLCBidXQgbm90aGluZyBlbHNlLiBBZGQgYSBidW5jaCBvZgorICAgICAgICBsb2dn
aW5nIGluIHRoaXMgYXJlYSB0byBoZWxwIGRldGVybWluZSB3aGF0J3MgaGFwcGVuaW5nLgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0
cyAtLSBubyBuZXcgb3IgY2hhbmdlZCBmdW5jdGlvbmFsaXR5LgorCisgICAgICAgICogbG9hZGVy
L1BvbGljeUNoZWNrZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UG9saWN5Q2hlY2tlcjo6Y2hl
Y2tOYXZpZ2F0aW9uUG9saWN5KToKKyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI6OmxvYWREYXRhVVJMKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjp3aWxsU2VuZFJlcXVlc3RJbnRlcm5hbCk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcjo6ZGlkRmluaXNoTG9hZGluZyk6CisgICAg
ICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcjo6ZGlkRmFpbCk6CisgICAgICAgIChXZWJDb3Jl
OjpSZXNvdXJjZUxvYWRlcjo6d2lsbFNlbmRSZXF1ZXN0QXN5bmMpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVzb3VyY2VMb2FkZXI6Ondhc0Jsb2NrZWQpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3Vy
Y2VMb2FkZXI6OmNhbm5vdFNob3dVUkwpOgorICAgICAgICAqIGxvYWRlci9TdWJyZXNvdXJjZUxv
YWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdWJyZXNvdXJjZUxvYWRlcjo6aW5pdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTdWJyZXNvdXJjZUxvYWRlcjo6d2lsbFNlbmRSZXF1ZXN0SW50ZXJu
YWwpOgorICAgICAgICAoV2ViQ29yZTo6U3VicmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNw
b25zZSk6CisgICAgICAgIChXZWJDb3JlOjpTdWJyZXNvdXJjZUxvYWRlcjo6ZGlkRmluaXNoTG9h
ZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpTdWJyZXNvdXJjZUxvYWRlcjo6ZGlkRmFpbCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTdWJyZXNvdXJjZUxvYWRlcjo6d2lsbENhbmNlbCk6CisgICAgICAg
ICogbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNhY2hlZFJhd1Jlc291cmNlOjpyZWRpcmVjdFJlY2VpdmVkKToKKyAgICAgICAgKiBsb2FkZXIv
Y2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3Vy
Y2U6OnJlZGlyZWN0UmVjZWl2ZWQpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNv
dXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZUxvYWRlcjo6
Y2FuUmVxdWVzdEFmdGVyUmVkaXJlY3Rpb24gY29uc3QpOgorCiAyMDIwLTAyLTE3ICBQZXIgQXJu
ZSBWb2xsYW4gIDxwdm9sbGFuQGFwcGxlLmNvbT4KIAogICAgICAgICBVc2UgQ0YgcHJlZnMgZGly
ZWN0IG1vZGUgaW4gdGhlIFdlYkNvbnRlbnQgcHJvY2VzcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YktpdC9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwppbmRleCBhMTFkY2ZkZmRj
MTNiMjMyOGQ4MWZiMzI3ZjQ3N2FlNGI0N2E5NzBjLi4xYjljZjBhNTNlNTQ4YTFmNzZlNThjMWRm
MWYxYzc2N2QyZDZjN2ZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZworKysg
Yi9Tb3VyY2UvV2ViS2l0L0NoYW5nZUxvZwpAQCAtMSwzICsxLDI0IEBACisyMDIwLTAyLTE4ICBL
ZWl0aCBSb2xsaW4gIDxrcm9sbGluQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgbG9nZ2luZyB0
byBoZWxwIGRpYWdub3NlIHJlZGlyZWN0IGlzc3VlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJr
aXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDc5MTYKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU5
NTY3ODc1PgorCisgICAgICAgIFdlJ3JlIHNlZWluZyBhbiBpc3N1ZSB3aGVyZSBjb21tdW5pY2F0
aW9uIGJldHdlZW4gdGhlIFdlYkNvbnRlbnQKKyAgICAgICAgcHJvY2VzcyBhbmQgdGhlIE5ldHdv
cmsgcHJvY2VzcyBzZWVtcyB0byBjb21lIHRvIGEgc3RvcCBiZXR3ZWVuCisgICAgICAgIE5ldHdv
cmtSZXNvdXJjZUxvYWRlcjo6Y29udGludWVXaWxsU2VuZFJlZGlyZWN0ZWRSZXF1ZXN0IGFuZAor
ICAgICAgICBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmNvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0LiBX
ZSBkbyBzZWUgYQorICAgICAgICBXZWJSZXNvdXJjZUxvYWRlcjo6d2lsbFNlbmRSZXF1ZXN0IGxv
ZyBsaW5lIGJldHdlZW4gdGhvc2UgdHdvCisgICAgICAgIE5ldHdvcmtSZXNvdXJjZUxvYWRlciBs
b2dnaW5nIGxpbmVzLCBidXQgbm90aGluZyBlbHNlLiBBZGQgYSBidW5jaCBvZgorICAgICAgICBs
b2dnaW5nIGluIHRoaXMgYXJlYSB0byBoZWxwIGRldGVybWluZSB3aGF0J3MgaGFwcGVuaW5nLgor
CisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogV2ViUHJv
Y2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcDoKKyAgICAgICAgKFdlYktpdDo6V2Vi
UmVzb3VyY2VMb2FkZXI6OndpbGxTZW5kUmVxdWVzdCk6CisgICAgICAgICogV2ViUHJvY2Vzcy9X
ZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHA6CisgICAgICAgIChXZWJLaXQ6
OldlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvclJlc3BvbnNlKToK
KwogMjAyMC0wMi0xNyAgUGVyIEFybmUgVm9sbGFuICA8cHZvbGxhbkBhcHBsZS5jb20+CiAKICAg
ICAgICAgVXNlIENGIHByZWZzIGRpcmVjdCBtb2RlIGluIHRoZSBXZWJDb250ZW50IHByb2Nlc3MK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Qb2xpY3lDaGVja2VyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9Qb2xpY3lDaGVja2VyLmNwcAppbmRleCA3YTZiNTczMmU2OGI3
YzIyYTY2MzhhNWI3NmQzNjNlMWY1YWY5NGY5Li44NzY3MGE5NzgyYjVmMjdiYzRhNjA0ZmE2Yzlk
ZmZhYzMzYWUzNWJhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUG9saWN5Q2hl
Y2tlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1BvbGljeUNoZWNrZXIuY3BwCkBA
IC01Myw2ICs1Myw4IEBACiAjaW5jbHVkZSAiUXVpY2tMb29rLmgiCiAjZW5kaWYKIAorI2RlZmlu
ZSBSRUxFQVNFX0xPR19BTFdBWVMoZm10LCAuLi4pIFJFTEVBU0VfTE9HKExvYWRpbmcsICIlcCAt
IFBvbGljeUNoZWNrZXI6OiIgZm10LCB0aGlzLCAjI19fVkFfQVJHU19fKQorCiBuYW1lc3BhY2Ug
V2ViQ29yZSB7CiAKIHN0YXRpYyBib29sIGlzQWxsb3dlZEJ5Q29udGVudFNlY3VyaXR5UG9saWN5
KGNvbnN0IFVSTCYgdXJsLCBjb25zdCBFbGVtZW50KiBvd25lckVsZW1lbnQsIGJvb2wgZGlkUmVj
ZWl2ZVJlZGlyZWN0UmVzcG9uc2UpCkBAIC0xMjgsNiArMTMwLDcgQEAgdm9pZCBQb2xpY3lDaGVj
a2VyOjpjaGVja05hdmlnYXRpb25Qb2xpY3koUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgY29u
c3QgUmVzb3UKICAgICAvLyBEb24ndCBhc2sgbW9yZSB0aGFuIG9uY2UgZm9yIHRoZSBzYW1lIHJl
cXVlc3Qgb3IgaWYgd2UgYXJlIGxvYWRpbmcgYW4gZW1wdHkgVVJMLgogICAgIC8vIFRoaXMgYXZv
aWRzIGNvbmZ1c2lvbiBvbiB0aGUgcGFydCBvZiB0aGUgY2xpZW50LgogICAgIGlmIChlcXVhbEln
bm9yaW5nSGVhZGVyRmllbGRzKHJlcXVlc3QsIGxvYWRlci0+bGFzdENoZWNrZWRSZXF1ZXN0KCkp
IHx8ICghcmVxdWVzdC5pc051bGwoKSAmJiByZXF1ZXN0LnVybCgpLmlzRW1wdHkoKSkpIHsKKyAg
ICAgICAgUkVMRUFTRV9MT0dfQUxXQVlTKCJjaGVja05hdmlnYXRpb25Qb2xpY3k6IGNvbnRpbnVp
bmcgYmVjYXVzZSBlbXB0eSBVUkwiKTsKICAgICAgICAgZnVuY3Rpb24oUmVzb3VyY2VSZXF1ZXN0
KHJlcXVlc3QpLCB7IH0sIE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lvbjo6Q29udGludWVMb2FkKTsK
ICAgICAgICAgbG9hZGVyLT5zZXRMYXN0Q2hlY2tlZFJlcXVlc3QoV1RGTW92ZShyZXF1ZXN0KSk7
CiAgICAgICAgIHJldHVybjsKQEAgLTE0Myw2ICsxNDYsMTAgQEAgdm9pZCBQb2xpY3lDaGVja2Vy
OjpjaGVja05hdmlnYXRpb25Qb2xpY3koUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgY29uc3Qg
UmVzb3UKICNlbmRpZgogICAgICAgICBpZiAoaXNCYWNrRm9yd2FyZExvYWRUeXBlKG1fbG9hZFR5
cGUpKQogICAgICAgICAgICAgbV9sb2FkVHlwZSA9IEZyYW1lTG9hZFR5cGU6OlJlbG9hZDsKKyAg
ICAgICAgaWYgKHNob3VsZENvbnRpbnVlKQorICAgICAgICAgICAgUkVMRUFTRV9MT0dfQUxXQVlT
KCJjaGVja05hdmlnYXRpb25Qb2xpY3k6IGNvbnRpbnVpbmcgYmVjYXVzZSB3ZSBoYXZlIHZhbGlk
IHN1YnN0aXR1dGUgZGF0YSIpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBSRUxFQVNFX0xP
R19BTFdBWVMoImNoZWNrTmF2aWdhdGlvblBvbGljeTogaWdub3JpbmcgYmVjYXVzZSB0aGUgY29u
dGVudCBmaWx0ZXIgdG9sZCB1cyBub3QgdG8iKTsKICAgICAgICAgZnVuY3Rpb24oV1RGTW92ZShy
ZXF1ZXN0KSwgeyB9LCBzaG91bGRDb250aW51ZSA/IE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lvbjo6
Q29udGludWVMb2FkIDogTmF2aWdhdGlvblBvbGljeURlY2lzaW9uOjpJZ25vcmVMb2FkKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTE1Myw2ICsxNjAsNyBAQCB2b2lkIFBvbGljeUNoZWNr
ZXI6OmNoZWNrTmF2aWdhdGlvblBvbGljeShSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBjb25z
dCBSZXNvdQogICAgICAgICAgICAgLy8gcmV2ZWFsIHRoYXQgdGhlIGZyYW1lIHdhcyBibG9ja2Vk
LiBUaGlzIHdheSwgaXQgbG9va3MgbGlrZSBhbnkgb3RoZXIgY3Jvc3Mtb3JpZ2luIHBhZ2UgbG9h
ZC4KICAgICAgICAgICAgIG1fZnJhbWUub3duZXJFbGVtZW50KCktPmRpc3BhdGNoRXZlbnQoRXZl
bnQ6OmNyZWF0ZShldmVudE5hbWVzKCkubG9hZEV2ZW50LCBFdmVudDo6Q2FuQnViYmxlOjpObywg
RXZlbnQ6OklzQ2FuY2VsYWJsZTo6Tm8pKTsKICAgICAgICAgfQorICAgICAgICBSRUxFQVNFX0xP
R19BTFdBWVMoImNoZWNrTmF2aWdhdGlvblBvbGljeTogaWdub3JpbmcgYmVjYXVzZSBkaXNhbGxv
d2VkIGJ5IGNvbnRlbnQgc2VjdXJpdHkgcG9saWN5Iik7CiAgICAgICAgIGZ1bmN0aW9uKFdURk1v
dmUocmVxdWVzdCksIHsgfSwgTmF2aWdhdGlvblBvbGljeURlY2lzaW9uOjpJZ25vcmVMb2FkKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTE2MSw4ICsxNjksMTAgQEAgdm9pZCBQb2xpY3lD
aGVja2VyOjpjaGVja05hdmlnYXRpb25Qb2xpY3koUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwg
Y29uc3QgUmVzb3UKIAogI2lmIFVTRShRVUlDS19MT09LKQogICAgIC8vIEFsd2F5cyBhbGxvdyBR
dWlja0xvb2stZ2VuZXJhdGVkIFVSTHMgYmFzZWQgb24gdGhlIHByb3RvY29sIHNjaGVtZS4KLSAg
ICBpZiAoIXJlcXVlc3QuaXNOdWxsKCkgJiYgaXNRdWlja0xvb2tQcmV2aWV3VVJMKHJlcXVlc3Qu
dXJsKCkpKQorICAgIGlmICghcmVxdWVzdC5pc051bGwoKSAmJiBpc1F1aWNrTG9va1ByZXZpZXdV
UkwocmVxdWVzdC51cmwoKSkpIHsKKyAgICAgICAgUkVMRUFTRV9MT0dfQUxXQVlTKCJjaGVja05h
dmlnYXRpb25Qb2xpY3k6IGNvbnRpbnVpbmcgYmVjYXVzZSBxdWlja2xvb2stZ2VuZXJhdGVkIFVS
TCIpOwogICAgICAgICByZXR1cm4gZnVuY3Rpb24oV1RGTW92ZShyZXF1ZXN0KSwgbWFrZVdlYWtQ
dHIoZm9ybVN0YXRlLmdldCgpKSwgTmF2aWdhdGlvblBvbGljeURlY2lzaW9uOjpDb250aW51ZUxv
YWQpOworICAgIH0KICNlbmRpZgogCiAjaWYgRU5BQkxFKENPTlRFTlRfRklMVEVSSU5HKQpAQCAt
MTcyLDYgKzE4Miw3IEBAIHZvaWQgUG9saWN5Q2hlY2tlcjo6Y2hlY2tOYXZpZ2F0aW9uUG9saWN5
KFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIGNvbnN0IFJlc291CiAgICAgICAgICAgICBpZiAo
dW5ibG9ja2VkKQogICAgICAgICAgICAgICAgIGZyYW1lLT5sb2FkZXIoKS5yZWxvYWQoKTsKICAg
ICAgICAgfSk7CisgICAgICAgIFJFTEVBU0VfTE9HX0FMV0FZUygiY2hlY2tOYXZpZ2F0aW9uUG9s
aWN5OiBpZ25vcmluZyBiZWNhdXNlIG11bWJsZS1jb250ZW50LWZpbHRlci11bmJsb2NrLWhhbmRs
ZXItbXVtYmxlIik7CiAgICAgICAgIHJldHVybiBmdW5jdGlvbih7IH0sIG51bGxwdHIsIE5hdmln
YXRpb25Qb2xpY3lEZWNpc2lvbjo6SWdub3JlTG9hZCk7CiAgICAgfQogICAgIG1fY29udGVudEZp
bHRlclVuYmxvY2tIYW5kbGVyID0geyB9OwpAQCAtMTg2LDkgKzE5NywxMSBAQCB2b2lkIFBvbGlj
eUNoZWNrZXI6OmNoZWNrTmF2aWdhdGlvblBvbGljeShSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0
LCBjb25zdCBSZXNvdQogICAgIG1fZGVsZWdhdGVJc0RlY2lkaW5nTmF2aWdhdGlvblBvbGljeSA9
IHRydWU7CiAgICAgU3RyaW5nIHN1Z2dlc3RlZEZpbGVuYW1lID0gYWN0aW9uLmRvd25sb2FkQXR0
cmlidXRlKCkuaXNFbXB0eSgpID8gbnVsbEF0b20oKSA6IGFjdGlvbi5kb3dubG9hZEF0dHJpYnV0
ZSgpOwogICAgIEZyYW1lUG9saWN5RnVuY3Rpb24gZGVjaXNpb25IYW5kbGVyID0gW3RoaXMsIGZ1
bmN0aW9uID0gV1RGTW92ZShmdW5jdGlvbiksIHJlcXVlc3QgPSBSZXNvdXJjZVJlcXVlc3QocmVx
dWVzdCksIGZvcm1TdGF0ZSA9IFdURk1vdmUoZm9ybVN0YXRlKSwgc3VnZ2VzdGVkRmlsZW5hbWUg
PSBXVEZNb3ZlKHN1Z2dlc3RlZEZpbGVuYW1lKSwKLSAgICAgICAgIGJsb2JVUkxMaWZldGltZUV4
dGVuc2lvbiA9IFdURk1vdmUoYmxvYlVSTExpZmV0aW1lRXh0ZW5zaW9uKSwgcmVxdWVzdElkZW50
aWZpZXJdIChQb2xpY3lBY3Rpb24gcG9saWN5QWN0aW9uLCBQb2xpY3lDaGVja0lkZW50aWZpZXIg
cmVzcG9uc2VJZGVudGlmaWVyKSBtdXRhYmxlIHsKLSAgICAgICAgaWYgKCFyZXNwb25zZUlkZW50
aWZpZXIuaXNWYWxpZEZvcihyZXF1ZXN0SWRlbnRpZmllcikpCisgICAgICAgICBibG9iVVJMTGlm
ZXRpbWVFeHRlbnNpb24gPSBXVEZNb3ZlKGJsb2JVUkxMaWZldGltZUV4dGVuc2lvbiksIHJlcXVl
c3RJZGVudGlmaWVyLCBpc0luaXRpYWxFbXB0eURvY3VtZW50TG9hZF0gKFBvbGljeUFjdGlvbiBw
b2xpY3lBY3Rpb24sIFBvbGljeUNoZWNrSWRlbnRpZmllciByZXNwb25zZUlkZW50aWZpZXIpIG11
dGFibGUgeworICAgICAgICBpZiAoIXJlc3BvbnNlSWRlbnRpZmllci5pc1ZhbGlkRm9yKHJlcXVl
c3RJZGVudGlmaWVyKSkgeworICAgICAgICAgICAgUkVMRUFTRV9MT0dfQUxXQVlTKCJjaGVja05h
dmlnYXRpb25Qb2xpY3k6IGlnbm9yaW5nIGJlY2F1c2UgcmVzcG9uc2UgaXMgbm90IHZhbGlkIGZv
ciByZXF1ZXN0Iik7CiAgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24oeyB9LCBudWxscHRyLCBO
YXZpZ2F0aW9uUG9saWN5RGVjaXNpb246Oklnbm9yZUxvYWQpOworICAgICAgICB9CiAKICAgICAg
ICAgbV9kZWxlZ2F0ZUlzRGVjaWRpbmdOYXZpZ2F0aW9uUG9saWN5ID0gZmFsc2U7CiAKQEAgLTE5
OCwxNSArMjExLDIyIEBAIHZvaWQgUG9saWN5Q2hlY2tlcjo6Y2hlY2tOYXZpZ2F0aW9uUG9saWN5
KFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIGNvbnN0IFJlc291CiAgICAgICAgICAgICBtX2Zy
YW1lLmxvYWRlcigpLmNsaWVudCgpLnN0YXJ0RG93bmxvYWQocmVxdWVzdCwgc3VnZ2VzdGVkRmls
ZW5hbWUpOwogICAgICAgICAgICAgRkFMTFRIUk9VR0g7CiAgICAgICAgIGNhc2UgUG9saWN5QWN0
aW9uOjpJZ25vcmU6CisgICAgICAgICAgICBSRUxFQVNFX0xPR19BTFdBWVMoImNoZWNrTmF2aWdh
dGlvblBvbGljeTogaWdub3JpbmcgYmVjYXVzZSBwb2xpY3lBY3Rpb24gZnJvbSBkaXNwYXRjaERl
Y2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rpb24gaXMgSWdub3JlIik7CiAgICAgICAgICAgICBy
ZXR1cm4gZnVuY3Rpb24oeyB9LCBudWxscHRyLCBOYXZpZ2F0aW9uUG9saWN5RGVjaXNpb246Okln
bm9yZUxvYWQpOwogICAgICAgICBjYXNlIFBvbGljeUFjdGlvbjo6U3RvcEFsbExvYWRzOgorICAg
ICAgICAgICAgUkVMRUFTRV9MT0dfQUxXQVlTKCJjaGVja05hdmlnYXRpb25Qb2xpY3k6IHN0b3Bw
aW5nIGJlY2F1c2UgcG9saWN5QWN0aW9uIGZyb20gZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOYXZp
Z2F0aW9uQWN0aW9uIGlzIFN0b3BBbGxMb2FkcyIpOwogICAgICAgICAgICAgZnVuY3Rpb24oeyB9
LCBudWxscHRyLCBOYXZpZ2F0aW9uUG9saWN5RGVjaXNpb246OlN0b3BBbGxMb2Fkcyk7CiAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgIGNhc2UgUG9saWN5QWN0aW9uOjpVc2U6CiAgICAgICAg
ICAgICBpZiAoIW1fZnJhbWUubG9hZGVyKCkuY2xpZW50KCkuY2FuSGFuZGxlUmVxdWVzdChyZXF1
ZXN0KSkgewogICAgICAgICAgICAgICAgIGhhbmRsZVVuaW1wbGVtZW50YWJsZVBvbGljeShtX2Zy
YW1lLmxvYWRlcigpLmNsaWVudCgpLmNhbm5vdFNob3dVUkxFcnJvcihyZXF1ZXN0KSk7CisgICAg
ICAgICAgICAgICAgUkVMRUFTRV9MT0dfQUxXQVlTKCJjaGVja05hdmlnYXRpb25Qb2xpY3k6IGln
bm9yaW5nIGJlY2F1c2UgZnJhbWUgbG9hZGVyIGNsaWVudCBjYW4ndCBoYW5kbGUgdGhlIHJlcXVl
c3QiKTsKICAgICAgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24oeyB9LCB7IH0sIE5hdmlnYXRp
b25Qb2xpY3lEZWNpc2lvbjo6SWdub3JlTG9hZCk7CiAgICAgICAgICAgICB9CisgICAgICAgICAg
ICBpZiAoaXNJbml0aWFsRW1wdHlEb2N1bWVudExvYWQpCisgICAgICAgICAgICAgICAgUkVMRUFT
RV9MT0dfQUxXQVlTKCJjaGVja05hdmlnYXRpb25Qb2xpY3k6IGNvbnRpbnVpbmcgYmVjYXVzZSB0
aGlzIGlzIGFuIGluaXRpYWwgZW1wdHkgZG9jdW1lbnQiKTsKKyAgICAgICAgICAgIGVsc2UKKyAg
ICAgICAgICAgICAgICBSRUxFQVNFX0xPR19BTFdBWVMoImNoZWNrTmF2aWdhdGlvblBvbGljeTog
Y29udGludWluZyBiZWNhdXNlIHRoaXMgcG9saWN5QWN0aW9uIGZyb20gZGlzcGF0Y2hEZWNpZGVQ
b2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uIGlzIFVzZSIpOwogICAgICAgICAgICAgcmV0dXJuIGZ1
bmN0aW9uKFdURk1vdmUocmVxdWVzdCksIG1ha2VXZWFrUHRyKGZvcm1TdGF0ZS5nZXQoKSksIE5h
dmlnYXRpb25Qb2xpY3lEZWNpc2lvbjo6Q29udGludWVMb2FkKTsKICAgICAgICAgfQogICAgICAg
ICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRl
ci9SZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2Fk
ZXIuY3BwCmluZGV4IDczMjE3MDBlNGMxNzNmY2FhOTE4N2JkNmNmYzc0ODk4MDFlYzY5NWEuLjhl
NzdlOTE1MjU0MzdkNWU3ZThjOTM1MTEwODdhMjZjNmFhYTVmZDIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
bG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcApAQCAtNjQsNyArNjQsNyBAQAogI2VuZGlmCiAKICN1
bmRlZiBSRUxFQVNFX0xPR19JRl9BTExPV0VECi0jZGVmaW5lIFJFTEVBU0VfTE9HX0lGX0FMTE9X
RUQoZm10LCAuLi4pIFJFTEVBU0VfTE9HX0lGKGlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpLCBO
ZXR3b3JrLCAiJXAgLSBSZXNvdXJjZUxvYWRlcjo6IiBmbXQsIHRoaXMsICMjX19WQV9BUkdTX18p
CisjZGVmaW5lIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoZm10LCAuLi4pIFJFTEVBU0VfTE9HX0lG
KGlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpLCBOZXR3b3JrLCAiJXAgLSBbZnJhbWU9JXAsIGZy
YW1lTG9hZGVyPSVwLCByZXNvdXJjZUlEPSVsdV0gUmVzb3VyY2VMb2FkZXI6OiIgZm10LCB0aGlz
LCBmcmFtZSgpLCBmcmFtZUxvYWRlcigpLCBpZGVudGlmaWVyKCksICMjX19WQV9BUkdTX18pCiAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMjcyLDcgKzI3Miw3IEBAIHZvaWQgUmVzb3VyY2VM
b2FkZXI6OmxvYWREYXRhVVJMKCkKICAgICAgICAgaWYgKHRoaXMtPnJlYWNoZWRUZXJtaW5hbFN0
YXRlKCkpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIGlmICghZGVjb2RlUmVzdWx0KSB7
Ci0gICAgICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJsb2FkRGF0YVVSTDogZGVjb2Rp
bmcgb2YgZGF0YSBmYWlsZWQgKGZyYW1lID0gJXAsIGZyYW1lTG9hZGVyID0gJXAsIHJlc291cmNl
SUQgPSAlbHUpIiwgZnJhbWUoKSwgZnJhbWVMb2FkZXIoKSwgaWRlbnRpZmllcigpKTsKKyAgICAg
ICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImxvYWREYXRhVVJMOiBkZWNvZGluZyBvZiBk
YXRhIGZhaWxlZCIpOwogICAgICAgICAgICAgcHJvdGVjdGVkVGhpcy0+ZGlkRmFpbChSZXNvdXJj
ZUVycm9yKGVycm9yRG9tYWluV2ViS2l0SW50ZXJuYWwsIDAsIHVybCwgIkRhdGEgVVJMIGRlY29k
aW5nIGZhaWxlZCIpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpAQCAtMzcxLDcg
KzM3MSw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkZXI6OndpbGxTZW5kUmVxdWVzdEludGVybmFsKFJl
c291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIGNvbnN0IFJlCiAgICAgICAgICAgICBib29sIGJsb2Nr
ZWRMb2FkID0gcmVzdWx0cy5zdW1tYXJ5LmJsb2NrZWRMb2FkOwogICAgICAgICAgICAgQ29udGVu
dEV4dGVuc2lvbnM6OmFwcGx5UmVzdWx0c1RvUmVxdWVzdChXVEZNb3ZlKHJlc3VsdHMpLCBwYWdl
LCByZXF1ZXN0KTsKICAgICAgICAgICAgIGlmIChibG9ja2VkTG9hZCkgewotICAgICAgICAgICAg
ICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoIndpbGxTZW5kUmVxdWVzdGludGVybmFsOiByZXNv
dXJjZSBsb2FkIGNhbmNlbGVkIGJlY2F1c2Ugb2YgY29udGVudCBibG9ja2VyIChmcmFtZSA9ICVw
LCBmcmFtZUxvYWRlciA9ICVwLCByZXNvdXJjZUlEID0gJWx1KSIsIGZyYW1lKCksIGZyYW1lTG9h
ZGVyKCksIGlkZW50aWZpZXIoKSk7CisgICAgICAgICAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxM
T1dFRCgid2lsbFNlbmRSZXF1ZXN0SW50ZXJuYWw6IHJlc291cmNlIGxvYWQgY2FuY2VsZWQgYmVj
YXVzZSBvZiBjb250ZW50IGJsb2NrZXIiKTsKICAgICAgICAgICAgICAgICBkaWRGYWlsKGJsb2Nr
ZWRCeUNvbnRlbnRCbG9ja2VyRXJyb3IoKSk7CiAgICAgICAgICAgICAgICAgY29tcGxldGlvbkhh
bmRsZXIoeyB9KTsKICAgICAgICAgICAgICAgICByZXR1cm47CkBAIC0zODEsNyArMzgxLDcgQEAg
dm9pZCBSZXNvdXJjZUxvYWRlcjo6d2lsbFNlbmRSZXF1ZXN0SW50ZXJuYWwoUmVzb3VyY2VSZXF1
ZXN0JiYgcmVxdWVzdCwgY29uc3QgUmUKICNlbmRpZgogCiAgICAgaWYgKHJlcXVlc3QuaXNOdWxs
KCkpIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgid2lsbFNlbmRSZXF1ZXN0aW50
ZXJuYWw6IHJlc291cmNlIGxvYWQgY2FuY2VsZWQgYmVjYXVzZSBvZiBlbXB0eSByZXF1ZXN0IChm
cmFtZSA9ICVwLCBmcmFtZUxvYWRlciA9ICVwLCByZXNvdXJjZUlEID0gJWx1KSIsIGZyYW1lKCks
IGZyYW1lTG9hZGVyKCksIGlkZW50aWZpZXIoKSk7CisgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FM
TE9XRUQoIndpbGxTZW5kUmVxdWVzdEludGVybmFsOiByZXNvdXJjZSBsb2FkIGNhbmNlbGVkIGJl
Y2F1c2Ugb2YgZW1wdHkgcmVxdWVzdCIpOwogICAgICAgICBkaWRGYWlsKGNhbm5vdFNob3dVUkxF
cnJvcigpKTsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoeyB9KTsKICAgICAgICAgcmV0dXJu
OwpAQCAtMzk0LDYgKzM5NCw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkZXI6OndpbGxTZW5kUmVxdWVz
dEludGVybmFsKFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIGNvbnN0IFJlCiAjaWYgUExBVEZP
Uk0oSU9TX0ZBTUlMWSkKICAgICAgICAgLy8gSWYgdGhpcyBSZXNvdXJjZUxvYWRlciB3YXMgc3Rv
cHBlZCBhcyBhIHJlc3VsdCBvZiBhc3NpZ25JZGVudGlmaWVyVG9Jbml0aWFsUmVxdWVzdCwgYmFp
bCBvdXQKICAgICAgICAgaWYgKG1fcmVhY2hlZFRlcm1pbmFsU3RhdGUpIHsKKyAgICAgICAgICAg
IFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoIndpbGxTZW5kUmVxdWVzdEludGVybmFsOiByZXNvdXJj
ZSBsb2FkIHJlYWNoZWQgdGVybWluYWwgc3RhdGUiKTsKICAgICAgICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyKFdURk1vdmUocmVxdWVzdCkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9
CkBAIC00MjksNiArNDMwLDggQEAgdm9pZCBSZXNvdXJjZUxvYWRlcjo6d2lsbFNlbmRSZXF1ZXN0
SW50ZXJuYWwoUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgY29uc3QgUmUKICAgICAgICAgICAg
IGxvYWREYXRhVVJMKCk7CiAgICAgICAgIH0KICAgICB9CisKKyAgICBSRUxFQVNFX0xPR19JRl9B
TExPV0VEKCJ3aWxsU2VuZFJlcXVlc3RJbnRlcm5hbDogY2FsbGluZyBjb21wbGV0aW9uIGhhbmRs
ZXIiKTsKICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHJlcXVlc3QpKTsKIH0KIApAQCAt
NTM5LDcgKzU0Miw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JCdWZm
ZXIoY29uc3QgY2hhciogZGF0YSwgdW5zaWduZWQgbGVuZ3RoLCBSCiAKIHZvaWQgUmVzb3VyY2VM
b2FkZXI6OmRpZEZpbmlzaExvYWRpbmcoY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBuZXR3b3Jr
TG9hZE1ldHJpY3MpCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiZGlkRmluaXNoTG9h
ZGluZzogKGZyYW1lID0gJXAsIGZyYW1lTG9hZGVyID0gJXAsIHJlc291cmNlSUQgPSAlbHUpIiwg
ZnJhbWUoKSwgZnJhbWVMb2FkZXIoKSwgaWRlbnRpZmllcigpKTsKKyAgICBSRUxFQVNFX0xPR19J
Rl9BTExPV0VEKCJkaWRGaW5pc2hMb2FkaW5nOiIpOwogCiAgICAgZGlkRmluaXNoTG9hZGluZ09u
ZVBhcnQobmV0d29ya0xvYWRNZXRyaWNzKTsKIApAQCAtNTY3LDcgKzU3MCw3IEBAIHZvaWQgUmVz
b3VyY2VMb2FkZXI6OmRpZEZpbmlzaExvYWRpbmdPbmVQYXJ0KGNvbnN0IE5ldHdvcmtMb2FkTWV0
cmljcyYgbmV0d29ya0xvCiAKIHZvaWQgUmVzb3VyY2VMb2FkZXI6OmRpZEZhaWwoY29uc3QgUmVz
b3VyY2VFcnJvciYgZXJyb3IpCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiZGlkRmFp
bDogKGZyYW1lID0gJXAsIGZyYW1lTG9hZGVyID0gJXAsIHJlc291cmNlSUQgPSAlbHUpIiwgZnJh
bWUoKSwgZnJhbWVMb2FkZXIoKSwgaWRlbnRpZmllcigpKTsKKyAgICBSRUxFQVNFX0xPR19JRl9B
TExPV0VEKCJkaWRGYWlsOiIpOwogCiAgICAgaWYgKHdhc0NhbmNlbGxlZCgpKQogICAgICAgICBy
ZXR1cm47CkBAIC02NjksNyArNjcyLDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRlcjo6d2lsbFNlbmRS
ZXF1ZXN0QXN5bmMoUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSwgUmVzb3VyY2VSZXF1ZXMKIHsKICAg
ICBSZWZQdHI8UmVzb3VyY2VIYW5kbGU+IHByb3RlY3RlZEhhbmRsZShoYW5kbGUpOwogICAgIGlm
IChkb2N1bWVudExvYWRlcigpLT5hcHBsaWNhdGlvbkNhY2hlSG9zdCgpLm1heWJlTG9hZEZhbGxi
YWNrRm9yUmVkaXJlY3QodGhpcywgcmVxdWVzdCwgcmVkaXJlY3RSZXNwb25zZSkpIHsKLSAgICAg
ICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgid2lsbFNlbmRSZXF1ZXN0QXN5bmM6IGV4aXRpbmcg
ZWFybHkgYmVjYXVzZSBtYXliZUxvYWRGYWxsYmFja0ZvclJlZGlyZWN0IHJldHVybmVkIGZhbHNl
IChmcmFtZSA9ICVwLCBmcmFtZUxvYWRlciA9ICVwLCByZXNvdXJjZUlEID0gJWx1KSIsIGZyYW1l
KCksIGZyYW1lTG9hZGVyKCksIGlkZW50aWZpZXIoKSk7CisgICAgICAgIFJFTEVBU0VfTE9HX0lG
X0FMTE9XRUQoIndpbGxTZW5kUmVxdWVzdEFzeW5jOiBleGl0aW5nIGVhcmx5IGJlY2F1c2UgbWF5
YmVMb2FkRmFsbGJhY2tGb3JSZWRpcmVjdCByZXR1cm5lZCBmYWxzZSIpOwogICAgICAgICBjb21w
bGV0aW9uSGFuZGxlcihXVEZNb3ZlKHJlcXVlc3QpKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
QEAgLTcxNSwxMyArNzE4LDEzIEBAIHZvaWQgUmVzb3VyY2VMb2FkZXI6OmRpZEZhaWwoUmVzb3Vy
Y2VIYW5kbGUqLCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKIAogdm9pZCBSZXNvdXJjZUxv
YWRlcjo6d2FzQmxvY2tlZChSZXNvdXJjZUhhbmRsZSopCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZf
QUxMT1dFRCgid2FzQmxvY2tlZDogcmVzb3VyY2UgbG9hZCBjYW5jZWxlZCBiZWNhdXNlIG9mIGNv
bnRlbnQgYmxvY2tlciAoZnJhbWUgPSAlcCwgZnJhbWVMb2FkZXIgPSAlcCwgcmVzb3VyY2VJRCA9
ICVsdSkiLCBmcmFtZSgpLCBmcmFtZUxvYWRlcigpLCBpZGVudGlmaWVyKCkpOworICAgIFJFTEVB
U0VfTE9HX0lGX0FMTE9XRUQoIndhc0Jsb2NrZWQ6IHJlc291cmNlIGxvYWQgY2FuY2VsZWQgYmVj
YXVzZSBvZiBjb250ZW50IGJsb2NrZXIiKTsKICAgICBkaWRGYWlsKGJsb2NrZWRFcnJvcigpKTsK
IH0KIAogdm9pZCBSZXNvdXJjZUxvYWRlcjo6Y2Fubm90U2hvd1VSTChSZXNvdXJjZUhhbmRsZSop
CiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgid2FzQmxvY2tlZDogcmVzb3VyY2UgbG9h
ZCBjYW5jZWxlZCBiZWNhdXNlIG9mIGludmFsaWQgVVJMIChmcmFtZSA9ICVwLCBmcmFtZUxvYWRl
ciA9ICVwLCByZXNvdXJjZUlEID0gJWx1KSIsIGZyYW1lKCksIGZyYW1lTG9hZGVyKCksIGlkZW50
aWZpZXIoKSk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgid2FzQmxvY2tlZDogcmVzb3Vy
Y2UgbG9hZCBjYW5jZWxlZCBiZWNhdXNlIG9mIGludmFsaWQgVVJMIik7CiAgICAgZGlkRmFpbChj
YW5ub3RTaG93VVJMRXJyb3IoKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVz
b3VyY2VMb2FkZXIuY3BwCmluZGV4IDRhMGNhM2UwMDA1NTljYTBhODdjM2YwNzAyZTRiZDU5Yzhm
ZDZlMTIuLjM5MTU0MjA0OThjZWFlNzVhZTk5NzYzYzRjYjViMTU5MTVkZGIwMWIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcApAQCAtNzAsOCArNzAsOCBA
QAogCiAjdW5kZWYgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRAogI3VuZGVmIFJFTEVBU0VfTE9HX0VS
Uk9SX0lGX0FMTE9XRUQKLSNkZWZpbmUgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChmbXQsIC4uLikg
UkVMRUFTRV9MT0dfSUYoaXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCksIFJlc291cmNlTG9hZGlu
ZywgIiVwIC0gU3VicmVzb3VyY2VMb2FkZXI6OiIgZm10LCB0aGlzLCAjI19fVkFfQVJHU19fKQot
I2RlZmluZSBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKGZtdCwgLi4uKSBSRUxFQVNFX0xP
R19FUlJPUl9JRihpc0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKSwgUmVzb3VyY2VMb2FkaW5nLCAi
JXAgLSBTdWJyZXNvdXJjZUxvYWRlcjo6IiBmbXQsIHRoaXMsICMjX19WQV9BUkdTX18pCisjZGVm
aW5lIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoZm10LCAuLi4pIFJFTEVBU0VfTE9HX0lGKGlzQWx3
YXlzT25Mb2dnaW5nQWxsb3dlZCgpLCBSZXNvdXJjZUxvYWRpbmcsICIlcCAtIFtmcmFtZT0lcCwg
ZnJhbWVMb2FkZXI9JXAsIHJlc291cmNlSUQ9JWx1XSBTdWJyZXNvdXJjZUxvYWRlcjo6IiBmbXQs
IHRoaXMsIGZyYW1lKCksIGZyYW1lTG9hZGVyKCksIGlkZW50aWZpZXIoKSwgIyNfX1ZBX0FSR1Nf
XykKKyNkZWZpbmUgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChmbXQsIC4uLikgUkVMRUFT
RV9MT0dfRVJST1JfSUYoaXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCksIFJlc291cmNlTG9hZGlu
ZywgIiVwIC0gW2ZyYW1lPSVwLCBmcmFtZUxvYWRlcj0lcCwgcmVzb3VyY2VJRD0lbHVdIFN1YnJl
c291cmNlTG9hZGVyOjoiIGZtdCwgdGhpcywgZnJhbWUoKSwgZnJhbWVMb2FkZXIoKSwgaWRlbnRp
ZmllcigpLCAjI19fVkFfQVJHU19fKQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTE2Niw3
ICsxNjYsNyBAQCB2b2lkIFN1YnJlc291cmNlTG9hZGVyOjppbml0KFJlc291cmNlUmVxdWVzdCYm
IHJlcXVlc3QsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYgogICAgICAgICAgICAgcmV0dXJuIGNv
bXBsZXRpb25IYW5kbGVyKGZhbHNlKTsKICAgICAgICAgaWYgKCFtX2RvY3VtZW50TG9hZGVyKSB7
CiAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgICAgIFJFTEVBU0Vf
TE9HX0VSUk9SKFJlc291cmNlTG9hZGluZywgIlN1YnJlc291cmNlTG9hZGVyOjppbml0OiByZXNv
dXJjZSBsb2FkIGNhbmNlbGVkIGJlY2F1c2UgZG9jdW1lbnQgbG9hZGVyIGlzIG51bGwgKGZyYW1l
ID0gJXAsIGZyYW1lTG9hZGVyID0gJXAsIHJlc291cmNlSUQgPSAlbHUpIiwgZnJhbWUoKSwgZnJh
bWVMb2FkZXIoKSwgaWRlbnRpZmllcigpKTsKKyAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VSUk9S
X0lGX0FMTE9XRUQoImluaXQ6IHJlc291cmNlIGxvYWQgY2FuY2VsZWQgYmVjYXVzZSBkb2N1bWVu
dCBsb2FkZXIgaXMgbnVsbCIpOwogICAgICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVy
KGZhbHNlKTsKICAgICAgICAgfQogICAgICAgICBBU1NFUlQoIXJlYWNoZWRUZXJtaW5hbFN0YXRl
KCkpOwpAQCAtMTg5LDYgKzE4OSw3IEBAIHZvaWQgU3VicmVzb3VyY2VMb2FkZXI6OndpbGxTZW5k
UmVxdWVzdEludGVybmFsKFJlc291cmNlUmVxdWVzdCYmIG5ld1JlcXVlc3QsIGNvCiAgICAgUmVm
PFN1YnJlc291cmNlTG9hZGVyPiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTsKIAogICAgIGlmICghbmV3
UmVxdWVzdC51cmwoKS5pc1ZhbGlkKCkpIHsKKyAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dF
RCgid2lsbFNlbmRSZXF1ZXN0SW50ZXJuYWw6IHJlc291cmNlIGxvYWQgY2FuY2VsZWQgYmVjYXVz
ZSByZXF1ZXN0IGlzIGludmFsaWQiKTsKICAgICAgICAgY2FuY2VsKGNhbm5vdFNob3dVUkxFcnJv
cigpKTsKICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUobmV3UmVxdWVz
dCkpOwogICAgIH0KQEAgLTIwMCwyMCArMjAxLDI4IEBAIHZvaWQgU3VicmVzb3VyY2VMb2FkZXI6
OndpbGxTZW5kUmVxdWVzdEludGVybmFsKFJlc291cmNlUmVxdWVzdCYmIG5ld1JlcXVlc3QsIGNv
CiAgICAgfQogCiAgICAgYXV0byBjb250aW51ZVdpbGxTZW5kUmVxdWVzdCA9IFt0aGlzLCBwcm90
ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHJlZGlyZWN0UmVzcG9uc2VdIChDb21wbGV0aW9u
SGFuZGxlcjx2b2lkKFJlc291cmNlUmVxdWVzdCYmKT4mJiBjb21wbGV0aW9uSGFuZGxlciwgUmVz
b3VyY2VSZXF1ZXN0JiYgbmV3UmVxdWVzdCkgbXV0YWJsZSB7Ci0gICAgICAgIGlmIChuZXdSZXF1
ZXN0LmlzTnVsbCgpIHx8IHJlYWNoZWRUZXJtaW5hbFN0YXRlKCkpCisgICAgICAgIGlmIChuZXdS
ZXF1ZXN0LmlzTnVsbCgpIHx8IHJlYWNoZWRUZXJtaW5hbFN0YXRlKCkpIHsKKyAgICAgICAgICAg
IGlmIChuZXdSZXF1ZXN0LmlzTnVsbCgpKQorICAgICAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lG
X0FMTE9XRUQoIndpbGxTZW5kUmVxdWVzdEludGVybmFsOiByZXNvdXJjZSBsb2FkIGNhbmNlbGVk
IGJlY2F1c2UgcmVxdWVzdCBpcyBOVUxMICgxKSIpOworICAgICAgICAgICAgZWxzZQorICAgICAg
ICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoIndpbGxTZW5kUmVxdWVzdEludGVybmFs
OiByZXNvdXJjZSBsb2FkIGNhbmNlbGVkIGJlY2F1c2UgcmVhY2hlZCB0ZXJtaW5hbCBzdGF0ZSIp
OwogICAgICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUobmV3UmVxdWVz
dCkpOworICAgICAgICB9CiAKICAgICAgICAgUmVzb3VyY2VMb2FkZXI6OndpbGxTZW5kUmVxdWVz
dEludGVybmFsKFdURk1vdmUobmV3UmVxdWVzdCksIHJlZGlyZWN0UmVzcG9uc2UsIFt0aGlzLCBw
cm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKSwgY29tcGxldGlvbkhhbmRsZXIg
PSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgcmVkaXJlY3RSZXNwb25zZV0gKFJlc291cmNl
UmVxdWVzdCYmIHJlcXVlc3QpIG11dGFibGUgewogICAgICAgICAgICAgaWYgKHJlYWNoZWRUZXJt
aW5hbFN0YXRlKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKFdU
Rk1vdmUocmVxdWVzdCkpOwogCiAgICAgICAgICAgICBpZiAocmVxdWVzdC5pc051bGwoKSkgewor
ICAgICAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoIndpbGxTZW5kUmVxdWVzdElu
dGVybmFsOiByZXNvdXJjZSBsb2FkIGNhbmNlbGVkIGJlY2F1c2UgcmVxdWVzdCBpcyBOVUxMICgy
KSIpOwogICAgICAgICAgICAgICAgIGNhbmNlbCgpOwogICAgICAgICAgICAgICAgIHJldHVybiBj
b21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHJlcXVlc3QpKTsKICAgICAgICAgICAgIH0KIAogICAg
ICAgICAgICAgaWYgKG1fcmVzb3VyY2UtPnR5cGUoKSA9PSBDYWNoZWRSZXNvdXJjZTo6VHlwZTo6
TWFpblJlc291cmNlICYmICFyZWRpcmVjdFJlc3BvbnNlLmlzTnVsbCgpKQogICAgICAgICAgICAg
ICAgIG1fZG9jdW1lbnRMb2FkZXItPndpbGxDb250aW51ZU1haW5SZXNvdXJjZUxvYWRBZnRlclJl
ZGlyZWN0KHJlcXVlc3QpOworCisgICAgICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJ3
aWxsU2VuZFJlcXVlc3RJbnRlcm5hbDogcmVzb3VyY2UgbG9hZCBmaW5pc2hlZDsgY2FsbGluZyBj
b21wbGV0aW9uIGhhbmRsZXIiKTsKICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1v
dmUocmVxdWVzdCkpOwogICAgICAgICB9KTsKICAgICB9OwpAQCAtMjI3LDcgKzIzNiw3IEBAIHZv
aWQgU3VicmVzb3VyY2VMb2FkZXI6OndpbGxTZW5kUmVxdWVzdEludGVybmFsKFJlc291cmNlUmVx
dWVzdCYmIG5ld1JlcXVlc3QsIGNvCiAgICAgICAgICAgICAgICAgaWYgKG1fZnJhbWUgJiYgbV9m
cmFtZS0+ZG9jdW1lbnQoKSkKICAgICAgICAgICAgICAgICAgICAgbV9mcmFtZS0+ZG9jdW1lbnQo
KS0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6U2VjdXJpdHksIE1lc3NhZ2VMZXZl
bDo6RXJyb3IsIGVycm9yLmxvY2FsaXplZERlc2NyaXB0aW9uKCkpOwogCi0gICAgICAgICAgICAg
ICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgid2lsbFNlbmRSZXF1ZXN0aW50ZXJuYWw6IHJlc291
cmNlIGxvYWQgY2FuY2VsZWQgYmVjYXVzZSBub3QgYWxsb3dlZCB0byBmb2xsb3cgYSByZWRpcmVj
dCAoZnJhbWUgPSAlcCwgZnJhbWVMb2FkZXIgPSAlcCwgcmVzb3VyY2VJRCA9ICVsdSkiLCBmcmFt
ZSgpLCBmcmFtZUxvYWRlcigpLCBpZGVudGlmaWVyKCkpOworICAgICAgICAgICAgICAgIFJFTEVB
U0VfTE9HX0lGX0FMTE9XRUQoIndpbGxTZW5kUmVxdWVzdEludGVybmFsOiByZXNvdXJjZSBsb2Fk
IGNhbmNlbGVkIGJlY2F1c2Ugbm90IGFsbG93ZWQgdG8gZm9sbG93IGEgcmVkaXJlY3QiKTsKIAog
ICAgICAgICAgICAgICAgIGNhbmNlbChlcnJvcik7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGNv
bXBsZXRpb25IYW5kbGVyKFdURk1vdmUobmV3UmVxdWVzdCkpOwpAQCAtMjM4LDE3ICsyNDcsMTcg
QEAgdm9pZCBTdWJyZXNvdXJjZUxvYWRlcjo6d2lsbFNlbmRSZXF1ZXN0SW50ZXJuYWwoUmVzb3Vy
Y2VSZXF1ZXN0JiYgbmV3UmVxdWVzdCwgY28KICAgICAgICAgICAgIG9wYXF1ZVJlZGlyZWN0ZWRS
ZXNwb25zZS5zZXRUYWludGluZyhSZXNvdXJjZVJlc3BvbnNlOjpUYWludGluZzo6T3BhcXVlcmVk
aXJlY3QpOwogICAgICAgICAgICAgbV9yZXNvdXJjZS0+cmVzcG9uc2VSZWNlaXZlZChvcGFxdWVS
ZWRpcmVjdGVkUmVzcG9uc2UpOwogICAgICAgICAgICAgaWYgKHJlYWNoZWRUZXJtaW5hbFN0YXRl
KCkpIHsKLSAgICAgICAgICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJ3aWxsU2VuZFJl
cXVlc3RpbnRlcm5hbDogcmVhY2hlZCB0ZXJtaW5hbCBzdGF0ZSAoZnJhbWUgPSAlcCwgZnJhbWVM
b2FkZXIgPSAlcCwgcmVzb3VyY2VJRCA9ICVsdSkiLCBmcmFtZSgpLCBmcmFtZUxvYWRlcigpLCBp
ZGVudGlmaWVyKCkpOworICAgICAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoIndp
bGxTZW5kUmVxdWVzdEludGVybmFsOiByZWFjaGVkIHRlcm1pbmFsIHN0YXRlIik7CiAgICAgICAg
ICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUobmV3UmVxdWVzdCkpOwog
ICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJ3aWxs
U2VuZFJlcXVlc3RpbnRlcm5hbDogcmVzb3VyY2UgbG9hZCBjb21wbGV0ZWQgKGZyYW1lID0gJXAs
IGZyYW1lTG9hZGVyID0gJXAsIHJlc291cmNlSUQgPSAlbHUpIiwgZnJhbWUoKSwgZnJhbWVMb2Fk
ZXIoKSwgaWRlbnRpZmllcigpKTsKKyAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQo
IndpbGxTZW5kUmVxdWVzdEludGVybmFsOiByZXNvdXJjZSBsb2FkIGNvbXBsZXRlZCIpOwogCiAg
ICAgICAgICAgICBOZXR3b3JrTG9hZE1ldHJpY3MgZW1wdHlNZXRyaWNzOwogICAgICAgICAgICAg
ZGlkRmluaXNoTG9hZGluZyhlbXB0eU1ldHJpY3MpOwogICAgICAgICAgICAgcmV0dXJuIGNvbXBs
ZXRpb25IYW5kbGVyKFdURk1vdmUobmV3UmVxdWVzdCkpOwogICAgICAgICB9IGVsc2UgaWYgKG1f
cmVkaXJlY3RDb3VudCsrID49IG9wdGlvbnMoKS5tYXhSZWRpcmVjdENvdW50KSB7Ci0gICAgICAg
ICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJ3aWxsU2VuZFJlcXVlc3RpbnRlcm5hbDogcmVz
b3VyY2UgbG9hZCBjYW5jZWxlZCBiZWNhdXNlIHRvbyBtYW55IHJlZGlyZWN0cyAoZnJhbWUgPSAl
cCwgZnJhbWVMb2FkZXIgPSAlcCwgcmVzb3VyY2VJRCA9ICVsdSkiLCBmcmFtZSgpLCBmcmFtZUxv
YWRlcigpLCBpZGVudGlmaWVyKCkpOworICAgICAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dF
RCgid2lsbFNlbmRSZXF1ZXN0SW50ZXJuYWw6IHJlc291cmNlIGxvYWQgY2FuY2VsZWQgYmVjYXVz
ZSB0b28gbWFueSByZWRpcmVjdHMiKTsKICAgICAgICAgICAgIGNhbmNlbChSZXNvdXJjZUVycm9y
KFN0cmluZygpLCAwLCByZXF1ZXN0KCkudXJsKCksICJUb28gbWFueSByZWRpcmVjdGlvbnMiX3Ms
IFJlc291cmNlRXJyb3I6OlR5cGU6OkdlbmVyYWwpKTsKICAgICAgICAgICAgIHJldHVybiBjb21w
bGV0aW9uSGFuZGxlcihXVEZNb3ZlKG5ld1JlcXVlc3QpKTsKICAgICAgICAgfQpAQCAtMjY1LDcg
KzI3NCw3IEBAIHZvaWQgU3VicmVzb3VyY2VMb2FkZXI6OndpbGxTZW5kUmVxdWVzdEludGVybmFs
KFJlc291cmNlUmVxdWVzdCYmIG5ld1JlcXVlc3QsIGNvCiAgICAgICAgIH0KIAogICAgICAgICBp
ZiAoIW1fZG9jdW1lbnRMb2FkZXItPmNhY2hlZFJlc291cmNlTG9hZGVyKCkudXBkYXRlUmVxdWVz
dEFmdGVyUmVkaXJlY3Rpb24obV9yZXNvdXJjZS0+dHlwZSgpLCBuZXdSZXF1ZXN0LCBvcHRpb25z
KCkpKSB7Ci0gICAgICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJ3aWxsU2VuZFJlcXVl
c3RpbnRlcm5hbDogcmVzb3VyY2UgbG9hZCBjYW5jZWxlZCBiZWNhdXNlIHNvbWV0aGluZyBhYm91
dCB1cGRhdGVSZXF1ZXN0QWZ0ZXJSZWRpcmVjdGlvbiAoZnJhbWUgPSAlcCwgZnJhbWVMb2FkZXIg
PSAlcCwgcmVzb3VyY2VJRCA9ICVsdSkiLCBmcmFtZSgpLCBmcmFtZUxvYWRlcigpLCBpZGVudGlm
aWVyKCkpOworICAgICAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgid2lsbFNlbmRSZXF1
ZXN0SW50ZXJuYWw6IHJlc291cmNlIGxvYWQgY2FuY2VsZWQgYmVjYXVzZSBDYWNoZWRSZXNvdXJj
ZUxvYWRlcjo6dXBkYXRlUmVxdWVzdEFmdGVyUmVkaXJlY3Rpb24gKHJlYWxseSBDYWNoZWRSZXNv
dXJjZUxvYWRlcjo6Y2FuUmVxdWVzdEFmdGVyUmVkaXJlY3Rpb24pIHNhaWQgbm8iKTsKICAgICAg
ICAgICAgIGNhbmNlbCgpOwogICAgICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKFdU
Rk1vdmUobmV3UmVxdWVzdCkpOwogICAgICAgICB9CkBAIC0yNzUsMjMgKzI4NCwyNSBAQCB2b2lk
IFN1YnJlc291cmNlTG9hZGVyOjp3aWxsU2VuZFJlcXVlc3RJbnRlcm5hbChSZXNvdXJjZVJlcXVl
c3QmJiBuZXdSZXF1ZXN0LCBjbwogICAgICAgICAgICAgU3RyaW5nIGVycm9yTWVzc2FnZSA9ICJD
cm9zcy1vcmlnaW4gcmVkaXJlY3Rpb24gdG8gIiArIG5ld1JlcXVlc3QudXJsKCkuc3RyaW5nKCkg
KyAiIGRlbmllZCBieSBDcm9zcy1PcmlnaW4gUmVzb3VyY2UgU2hhcmluZyBwb2xpY3k6ICIgKyBl
cnJvckRlc2NyaXB0aW9uOwogICAgICAgICAgICAgaWYgKG1fZnJhbWUgJiYgbV9mcmFtZS0+ZG9j
dW1lbnQoKSkKICAgICAgICAgICAgICAgICBtX2ZyYW1lLT5kb2N1bWVudCgpLT5hZGRDb25zb2xl
TWVzc2FnZShNZXNzYWdlU291cmNlOjpTZWN1cml0eSwgTWVzc2FnZUxldmVsOjpFcnJvciwgZXJy
b3JNZXNzYWdlKTsKLSAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoIndpbGxTZW5k
UmVxdWVzdGludGVybmFsOiByZXNvdXJjZSBsb2FkIGNhbmNlbGVkIGJlY2F1c2UgY3Jvc3NzLW9y
aWdpbiByZWRpcmVjdGlvbiBkZW5pZWQgYnkgQ09SUyBwb2xpY3kgKGZyYW1lID0gJXAsIGZyYW1l
TG9hZGVyID0gJXAsIHJlc291cmNlSUQgPSAlbHUpIiwgZnJhbWUoKSwgZnJhbWVMb2FkZXIoKSwg
aWRlbnRpZmllcigpKTsKKyAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoIndpbGxT
ZW5kUmVxdWVzdEludGVybmFsOiByZXNvdXJjZSBsb2FkIGNhbmNlbGVkIGJlY2F1c2UgY3Jvc3Nz
LW9yaWdpbiByZWRpcmVjdGlvbiBkZW5pZWQgYnkgQ09SUyBwb2xpY3kiKTsKICAgICAgICAgICAg
IGNhbmNlbChSZXNvdXJjZUVycm9yKFN0cmluZygpLCAwLCByZXF1ZXN0KCkudXJsKCksIGVycm9y
TWVzc2FnZSwgUmVzb3VyY2VFcnJvcjo6VHlwZTo6QWNjZXNzQ29udHJvbCkpOwogICAgICAgICAg
ICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUobmV3UmVxdWVzdCkpOwogICAgICAg
ICB9CiAKICAgICAgICAgaWYgKG1fcmVzb3VyY2UtPmlzSW1hZ2UoKSAmJiBtX2RvY3VtZW50TG9h
ZGVyLT5jYWNoZWRSZXNvdXJjZUxvYWRlcigpLnNob3VsZERlZmVySW1hZ2VMb2FkKG5ld1JlcXVl
c3QudXJsKCkpKSB7Ci0gICAgICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJ3aWxsU2Vu
ZFJlcXVlc3RpbnRlcm5hbDogcmVzb3VyY2UgbG9hZCBjYW5jZWxlZCBiZWNhdXNlIGl0J3MgYW4g
aW1hZ2UgdGhhdCBzaG91bGQgYmUgZGVmZXJlZCAoZnJhbWUgPSAlcCwgZnJhbWVMb2FkZXIgPSAl
cCwgcmVzb3VyY2VJRCA9ICVsdSkiLCBmcmFtZSgpLCBmcmFtZUxvYWRlcigpLCBpZGVudGlmaWVy
KCkpOworICAgICAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgid2lsbFNlbmRSZXF1ZXN0
SW50ZXJuYWw6IHJlc291cmNlIGxvYWQgY2FuY2VsZWQgYmVjYXVzZSBpdCdzIGFuIGltYWdlIHRo
YXQgc2hvdWxkIGJlIGRlZmVyZWQiKTsKICAgICAgICAgICAgIGNhbmNlbCgpOwogICAgICAgICAg
ICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUobmV3UmVxdWVzdCkpOwogICAgICAg
ICB9CiAgICAgICAgIG1fbG9hZFRpbWluZy5hZGRSZWRpcmVjdChyZWRpcmVjdFJlc3BvbnNlLnVy
bCgpLCBuZXdSZXF1ZXN0LnVybCgpKTsKLSAgICAgICAgbV9yZXNvdXJjZS0+cmVkaXJlY3RSZWNl
aXZlZChXVEZNb3ZlKG5ld1JlcXVlc3QpLCByZWRpcmVjdFJlc3BvbnNlLCBbY29tcGxldGlvbkhh
bmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgY29udGludWVXaWxsU2VuZFJlcXVl
c3QgPSBXVEZNb3ZlKGNvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0KV0gKFJlc291cmNlUmVxdWVzdCYm
IHJlcXVlc3QpIG11dGFibGUgeworICAgICAgICBtX3Jlc291cmNlLT5yZWRpcmVjdFJlY2VpdmVk
KFdURk1vdmUobmV3UmVxdWVzdCksIHJlZGlyZWN0UmVzcG9uc2UsIFt0aGlzLCBwcm90ZWN0ZWRU
aGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZNb3Zl
KGNvbXBsZXRpb25IYW5kbGVyKSwgY29udGludWVXaWxsU2VuZFJlcXVlc3QgPSBXVEZNb3ZlKGNv
bnRpbnVlV2lsbFNlbmRSZXF1ZXN0KV0gKFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QpIG11dGFi
bGUgeworICAgICAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgid2lsbFNlbmRSZXF1ZXN0
SW50ZXJuYWw6IHJlc291cmNlIGRvbmUgbm90aWZ5aW5nIGNsaWVudHMiKTsKICAgICAgICAgICAg
IGNvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0KFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBXVEZN
b3ZlKHJlcXVlc3QpKTsKICAgICAgICAgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKKyAg
ICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJ3aWxsU2VuZFJlcXVlc3RJbnRlcm5hbDogcmVkaXJl
Y3QgcmVzcG9uc2UgaXMgTlVMTCIpOwogICAgIGNvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0KFdURk1v
dmUoY29tcGxldGlvbkhhbmRsZXIpLCBXVEZNb3ZlKG5ld1JlcXVlc3QpKTsKIH0KIApAQCAtMzUx
LDcgKzM2Miw3IEBAIHZvaWQgU3VicmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZShj
b25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgQ29tCiAgICAgaWYgKHJlc3BvbnNlLnNv
dXJjZSgpID09IFJlc291cmNlUmVzcG9uc2U6OlNvdXJjZTo6U2VydmljZVdvcmtlciAmJiByZXNw
b25zZS51cmwoKSAhPSByZXF1ZXN0KCkudXJsKCkpIHsKICAgICAgICAgYXV0byYgbG9hZGVyID0g
bV9kb2N1bWVudExvYWRlci0+Y2FjaGVkUmVzb3VyY2VMb2FkZXIoKTsKICAgICAgICAgaWYgKCFs
b2FkZXIuYWxsb3dlZEJ5Q29udGVudFNlY3VyaXR5UG9saWN5KG1fcmVzb3VyY2UtPnR5cGUoKSwg
cmVzcG9uc2UudXJsKCksIG9wdGlvbnMoKSwgQ29udGVudFNlY3VyaXR5UG9saWN5OjpSZWRpcmVj
dFJlc3BvbnNlUmVjZWl2ZWQ6OlllcykpIHsKLSAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FM
TE9XRUQoImRpZFJlY2VpdmVSZXNwb25zZTogY2FuY2VsaW5nIGxvYWQgYmVjYXVzZSBub3QgYWxs
b3dlZCBieSBjb250ZW50IHBvbGljeSAoZnJhbWUgPSAlcCwgZnJhbWVMb2FkZXIgPSAlcCwgcmVz
b3VyY2VJRCA9ICVsdSkiLCBmcmFtZSgpLCBmcmFtZUxvYWRlcigpLCBpZGVudGlmaWVyKCkpOwor
ICAgICAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiZGlkUmVjZWl2ZVJlc3BvbnNlOiBj
YW5jZWxpbmcgbG9hZCBiZWNhdXNlIG5vdCBhbGxvd2VkIGJ5IGNvbnRlbnQgcG9saWN5Iik7CiAg
ICAgICAgICAgICBjYW5jZWwoUmVzb3VyY2VFcnJvcih7IH0sIDAsIHJlc3BvbnNlLnVybCgpLCB7
IH0sIFJlc291cmNlRXJyb3I6OlR5cGU6OkdlbmVyYWwpKTsKICAgICAgICAgICAgIHJldHVybjsK
ICAgICAgICAgfQpAQCAtMzU5LDcgKzM3MCw3IEBAIHZvaWQgU3VicmVzb3VyY2VMb2FkZXI6OmRp
ZFJlY2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgQ29tCiAj
ZW5kaWYKIAogICAgIGlmIChhdXRvIGVycm9yID0gdmFsaWRhdGVSYW5nZVJlcXVlc3RlZEZsYWco
cmVxdWVzdCgpLCByZXNwb25zZSkpIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgi
ZGlkUmVjZWl2ZVJlc3BvbnNlOiBjYW5jZWxpbmcgbG9hZCBiZWNhdXNlIHJlY2VpdmluZyBhIHJh
bmdlIHJlcXVlc3RlZCByZXNwb25zZSBmb3IgYSBub24tcmFuZ2UgcmVxdWVzdCAoZnJhbWUgPSAl
cCwgZnJhbWVMb2FkZXIgPSAlcCwgcmVzb3VyY2VJRCA9ICVsdSkiLCBmcmFtZSgpLCBmcmFtZUxv
YWRlcigpLCBpZGVudGlmaWVyKCkpOworICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJk
aWRSZWNlaXZlUmVzcG9uc2U6IGNhbmNlbGluZyBsb2FkIGJlY2F1c2UgcmVjZWl2aW5nIGEgcmFu
Z2UgcmVxdWVzdGVkIHJlc3BvbnNlIGZvciBhIG5vbi1yYW5nZSByZXF1ZXN0Iik7CiAgICAgICAg
IGNhbmNlbChXVEZNb3ZlKCplcnJvcikpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtNDAy
LDcgKzQxMyw3IEBAIHZvaWQgU3VicmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZShj
b25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgQ29tCiAgICAgaWYgKCFjaGVja1Jlc3Bv
bnNlQ3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sKHJlc3BvbnNlLCBlcnJvckRlc2NyaXB0aW9uKSkg
ewogICAgICAgICBpZiAobV9mcmFtZSAmJiBtX2ZyYW1lLT5kb2N1bWVudCgpKQogICAgICAgICAg
ICAgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6
U2VjdXJpdHksIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIGVycm9yRGVzY3JpcHRpb24pOwotICAgICAg
ICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJkaWRSZWNlaXZlUmVzcG9uc2U6IGNhbmNlbGluZyBs
b2FkIGJlY2F1c2Ugb2YgY3Jvc3Mgb3JpZ2luIGFjY2VzcyBjb250cm9sIChmcmFtZSA9ICVwLCBm
cmFtZUxvYWRlciA9ICVwLCByZXNvdXJjZUlEID0gJWx1KSIsIGZyYW1lKCksIGZyYW1lTG9hZGVy
KCksIGlkZW50aWZpZXIoKSk7CisgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImRpZFJl
Y2VpdmVSZXNwb25zZTogY2FuY2VsaW5nIGxvYWQgYmVjYXVzZSBvZiBjcm9zcyBvcmlnaW4gYWNj
ZXNzIGNvbnRyb2wiKTsKICAgICAgICAgY2FuY2VsKFJlc291cmNlRXJyb3IoU3RyaW5nKCksIDAs
IHJlcXVlc3QoKS51cmwoKSwgZXJyb3JEZXNjcmlwdGlvbiwgUmVzb3VyY2VFcnJvcjo6VHlwZTo6
QWNjZXNzQ29udHJvbCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtNDQyLDcgKzQ1Myw3
IEBAIHZvaWQgU3VicmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBSZXNv
dXJjZVJlc3BvbnNlJiByZXNwb25zZSwgQ29tCiAgICAgICAgICAgICAvLyBXZSBkb24ndCBjb3Vu
dCBtdWx0aVBhcnRzIGluIGEgQ2FjaGVkUmVzb3VyY2VMb2FkZXIncyByZXF1ZXN0IGNvdW50CiAg
ICAgICAgICAgICBtX3JlcXVlc3RDb3VudFRyYWNrZXIgPSBXVEY6Om51bGxvcHQ7CiAgICAgICAg
ICAgICBpZiAoIW1fcmVzb3VyY2UtPmlzSW1hZ2UoKSkgewotICAgICAgICAgICAgICAgIFJFTEVB
U0VfTE9HX0lGX0FMTE9XRUQoImRpZFJlY2VpdmVSZXNwb25zZTogY2FuY2VsaW5nIGxvYWQgYmVj
YXVzZSBzb21ldGhpbmcgYWJvdXQgYSBtdWx0aS1wYXJ0IG5vbi1pbWFnZSAoZnJhbWUgPSAlcCwg
ZnJhbWVMb2FkZXIgPSAlcCwgcmVzb3VyY2VJRCA9ICVsdSkiLCBmcmFtZSgpLCBmcmFtZUxvYWRl
cigpLCBpZGVudGlmaWVyKCkpOworICAgICAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9X
RUQoImRpZFJlY2VpdmVSZXNwb25zZTogY2FuY2VsaW5nIGxvYWQgYmVjYXVzZSBzb21ldGhpbmcg
YWJvdXQgYSBtdWx0aS1wYXJ0IG5vbi1pbWFnZSIpOwogICAgICAgICAgICAgICAgIGNhbmNlbCgp
OwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KQEAgLTY2MSw3ICs2NzIs
NyBAQCB2b2lkIFN1YnJlc291cmNlTG9hZGVyOjp1cGRhdGVSZWZlcnJlclBvbGljeShjb25zdCBT
dHJpbmcmIHJlZmVycmVyUG9saWN5VmFsdWUpCiAKIHZvaWQgU3VicmVzb3VyY2VMb2FkZXI6OmRp
ZEZpbmlzaExvYWRpbmcoY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBuZXR3b3JrTG9hZE1ldHJp
Y3MpCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiZGlkRmluaXNoTG9hZGluZzogKGZy
YW1lID0gJXAsIGZyYW1lTG9hZGVyID0gJXAsIHJlc291cmNlSUQgPSAlbHUpIiwgZnJhbWUoKSwg
ZnJhbWVMb2FkZXIoKSwgaWRlbnRpZmllcigpKTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VE
KCJkaWRGaW5pc2hMb2FkaW5nOiIpOwogCiAjaWYgVVNFKFFVSUNLX0xPT0spCiAgICAgaWYgKGF1
dG8gcHJldmlld0xvYWRlciA9IG1fcHJldmlld0xvYWRlci5nZXQoKSkgewpAQCAtNzA3LDcgKzcx
OCw3IEBAIHZvaWQgU3VicmVzb3VyY2VMb2FkZXI6OmRpZEZpbmlzaExvYWRpbmcoY29uc3QgTmV0
d29ya0xvYWRNZXRyaWNzJiBuZXR3b3JrTG9hZE1lCiAgICAgbV9yZXNvdXJjZS0+ZmluaXNoTG9h
ZGluZyhyZXNvdXJjZURhdGEoKSk7CiAKICAgICBpZiAod2FzQ2FuY2VsbGVkKCkpIHsKLSAgICAg
ICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiZGlkRmluaXNoTG9hZGluZzogd2FzIGNhbmNlbGVk
IChmcmFtZSA9ICVwLCBmcmFtZUxvYWRlciA9ICVwLCByZXNvdXJjZUlEID0gJWx1KSIsIGZyYW1l
KCksIGZyYW1lTG9hZGVyKCksIGlkZW50aWZpZXIoKSk7CisgICAgICAgIFJFTEVBU0VfTE9HX0lG
X0FMTE9XRUQoImRpZEZpbmlzaExvYWRpbmc6IHdhcyBjYW5jZWxlZCIpOwogICAgICAgICByZXR1
cm47CiAgICAgfQogCkBAIC03MTcsNyArNzI4LDcgQEAgdm9pZCBTdWJyZXNvdXJjZUxvYWRlcjo6
ZGlkRmluaXNoTG9hZGluZyhjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG5ldHdvcmtMb2FkTWUK
ICAgICBub3RpZnlEb25lKExvYWRDb21wbGV0aW9uVHlwZTo6RmluaXNoKTsKIAogICAgIGlmIChy
ZWFjaGVkVGVybWluYWxTdGF0ZSgpKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQo
ImRpZEZpbmlzaExvYWRpbmc6IHJlYWNoZWQgdGVybWluYWwgc3RhdGUgKGZyYW1lID0gJXAsIGZy
YW1lTG9hZGVyID0gJXAsIHJlc291cmNlSUQgPSAlbHUpIiwgZnJhbWUoKSwgZnJhbWVMb2FkZXIo
KSwgaWRlbnRpZmllcigpKTsKKyAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiZGlkRmlu
aXNoTG9hZGluZzogcmVhY2hlZCB0ZXJtaW5hbCBzdGF0ZSIpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQogICAgIHJlbGVhc2VSZXNvdXJjZXMoKTsKQEAgLTcyNSw3ICs3MzYsNyBAQCB2b2lkIFN1
YnJlc291cmNlTG9hZGVyOjpkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IE5ldHdvcmtMb2FkTWV0cmlj
cyYgbmV0d29ya0xvYWRNZQogCiB2b2lkIFN1YnJlc291cmNlTG9hZGVyOjpkaWRGYWlsKGNvbnN0
IFJlc291cmNlRXJyb3ImIGVycm9yKQogewotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImRp
ZEZhaWw6IChmcmFtZSA9ICVwLCBmcmFtZUxvYWRlciA9ICVwLCByZXNvdXJjZUlEID0gJWx1LCB0
eXBlID0gJWQsIGNvZGUgPSAlZCkiLCBmcmFtZSgpLCBmcmFtZUxvYWRlcigpLCBpZGVudGlmaWVy
KCksIHN0YXRpY19jYXN0PGludD4oZXJyb3IudHlwZSgpKSwgZXJyb3IuZXJyb3JDb2RlKCkpOwor
ICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImRpZEZhaWw6ICh0eXBlID0gJWQsIGNvZGUgPSAl
ZCkiLCBzdGF0aWNfY2FzdDxpbnQ+KGVycm9yLnR5cGUoKSksIGVycm9yLmVycm9yQ29kZSgpKTsK
IAogI2lmIFVTRShRVUlDS19MT09LKQogICAgIGlmIChhdXRvIHByZXZpZXdMb2FkZXIgPSBtX3By
ZXZpZXdMb2FkZXIuZ2V0KCkpCkBAIC03NjMsNyArNzc0LDcgQEAgdm9pZCBTdWJyZXNvdXJjZUxv
YWRlcjo6ZGlkRmFpbChjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKIAogdm9pZCBTdWJyZXNv
dXJjZUxvYWRlcjo6d2lsbENhbmNlbChjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKIHsKLSAg
ICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJ3aWxsQ2FuY2VsOiAoZnJhbWUgPSAlcCwgZnJhbWVM
b2FkZXIgPSAlcCwgcmVzb3VyY2VJRCA9ICVsdSwgdHlwZSA9ICVkLCBjb2RlID0gJWQpIiwgZnJh
bWUoKSwgZnJhbWVMb2FkZXIoKSwgaWRlbnRpZmllcigpLCBzdGF0aWNfY2FzdDxpbnQ+KGVycm9y
LnR5cGUoKSksIGVycm9yLmVycm9yQ29kZSgpKTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VE
KCJ3aWxsQ2FuY2VsOiAodHlwZSA9ICVkLCBjb2RlID0gJWQpIiwgc3RhdGljX2Nhc3Q8aW50Pihl
cnJvci50eXBlKCkpLCBlcnJvci5lcnJvckNvZGUoKSk7CiAKICNpZiBQTEFURk9STShJT1NfRkFN
SUxZKQogICAgIC8vIFNpbmNlIHdlIGRlZmVyIGluaXRpYWxpemF0aW9uIHRvIHNjaGVkdWxpbmcg
dGltZSBvbiBpT1MgYnV0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkUmF3UmVzb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hl
ZFJhd1Jlc291cmNlLmNwcAppbmRleCBlN2RjNjMzOTFlZTkyOTVkMGRkNTM0MmJjOTEzOWM4OWMy
YzNhZmRjLi4wMGE3ZjIzZDU2NTFhMDRmZjVkYWUwOTEwN2ZiNzYwMzYyNzQwMjdhIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHAKQEAg
LTMwLDEyICszMCwxNSBAQAogI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlQ2xpZW50V2Fsa2VyLmgi
CiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VMb2FkZXIuaCIKICNpbmNsdWRlICJIVFRQSGVhZGVy
TmFtZXMuaCIKKyNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVyLmgi
CiAjaW5jbHVkZSAiU3VicmVzb3VyY2VMb2FkZXIuaCIKICNpbmNsdWRlIDx3dGYvQ29tcGxldGlv
bkhhbmRsZXIuaD4KICNpbmNsdWRlIDx3dGYvU2V0Rm9yU2NvcGUuaD4KICNpbmNsdWRlIDx3dGYv
dGV4dC9TdHJpbmdWaWV3Lmg+CiAKKyNkZWZpbmUgUkVMRUFTRV9MT0dfQUxXQVlTKGZtdCwgLi4u
KSBSRUxFQVNFX0xPRyhOZXR3b3JrLCAiJXAgLSBDYWNoZWRSYXdSZXNvdXJjZTo6IiBmbXQsIHRo
aXMsICMjX19WQV9BUkdTX18pCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogQ2FjaGVkUmF3UmVz
b3VyY2U6OkNhY2hlZFJhd1Jlc291cmNlKENhY2hlZFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3Qs
IFR5cGUgdHlwZSwgY29uc3QgUEFMOjpTZXNzaW9uSUQmIHNlc3Npb25JRCwgY29uc3QgQ29va2ll
SmFyKiBjb29raWVKYXIpCkBAIC0yMDQsNiArMjA3LDcgQEAgc3RhdGljIHZvaWQgaXRlcmF0ZUNs
aWVudHMoQ2FjaGVkUmVzb3VyY2VDbGllbnRXYWxrZXI8Q2FjaGVkUmF3UmVzb3VyY2VDbGllbnQ+
JiYKIAogdm9pZCBDYWNoZWRSYXdSZXNvdXJjZTo6cmVkaXJlY3RSZWNlaXZlZChSZXNvdXJjZVJl
cXVlc3QmJiByZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgQ29tcGxl
dGlvbkhhbmRsZXI8dm9pZChSZXNvdXJjZVJlcXVlc3QmJik+JiYgY29tcGxldGlvbkhhbmRsZXIp
CiB7CisgICAgUkVMRUFTRV9MT0dfQUxXQVlTKCJyZWRpcmVjdFJlY2VpdmVkOiIpOwogICAgIGlm
IChyZXNwb25zZS5pc051bGwoKSkKICAgICAgICAgQ2FjaGVkUmVzb3VyY2U6OnJlZGlyZWN0UmVj
ZWl2ZWQoV1RGTW92ZShyZXF1ZXN0KSwgcmVzcG9uc2UsIFdURk1vdmUoY29tcGxldGlvbkhhbmRs
ZXIpKTsKICAgICBlbHNlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNo
ZS9DYWNoZWRSZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVk
UmVzb3VyY2UuY3BwCmluZGV4IDhiZTYyOWZhNTliZGMzNzZiOTUwOGQ1MDlhODEzMDgwMjc2ZGIy
MTIuLjQ2YzVhZTFhZGEzOWU0NDY1NTkxNDZmY2M2Y2MwZDAxMjhmYzhkNDEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcApAQCAtNjEsNyArNjEs
MTAgQEAKICNpbmNsdWRlICJRdWlja0xvb2suaCIKICNlbmRpZgogCisjdW5kZWYgUkVMRUFTRV9M
T0dfSUZfQUxMT1dFRAorI3VuZGVmIFJFTEVBU0VfTE9HX0FMV0FZUwogI2RlZmluZSBSRUxFQVNF
X0xPR19JRl9BTExPV0VEKGZtdCwgLi4uKSBSRUxFQVNFX0xPR19JRihjYWNoZWRSZXNvdXJjZUxv
YWRlci5pc0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKSwgTmV0d29yaywgIiVwIC0gQ2FjaGVkUmVz
b3VyY2U6OiIgZm10LCB0aGlzLCAjI19fVkFfQVJHU19fKQorI2RlZmluZSBSRUxFQVNFX0xPR19B
TFdBWVMoZm10LCAuLi4pIFJFTEVBU0VfTE9HKE5ldHdvcmssICIlcCAtIENhY2hlZFJlc291cmNl
OjoiIGZtdCwgdGhpcywgIyNfX1ZBX0FSR1NfXykKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCkBA
IC00ODUsMTEgKzQ4OCwxMiBAQCBTZWNvbmRzIENhY2hlZFJlc291cmNlOjpmcmVzaG5lc3NMaWZl
dGltZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkgY29ucwogCiB2b2lkIENhY2hl
ZFJlc291cmNlOjpyZWRpcmVjdFJlY2VpdmVkKFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIGNv
bnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJl
c291cmNlUmVxdWVzdCYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKKyAgICBSRUxFQVNFX0xP
R19BTFdBWVMoInJlZGlyZWN0UmVjZWl2ZWQ6Iik7CisKICAgICBtX3JlcXVlc3RlZEZyb21OZXR3
b3JraW5nTGF5ZXIgPSB0cnVlOwotICAgIGlmIChyZXNwb25zZS5pc051bGwoKSkKLSAgICAgICAg
cmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUocmVxdWVzdCkpOworICAgIGlmICghcmVz
cG9uc2UuaXNOdWxsKCkpCisgICAgICAgIHVwZGF0ZVJlZGlyZWN0Q2hhaW5TdGF0dXMobV9yZWRp
cmVjdENoYWluQ2FjaGVTdGF0dXMsIHJlc3BvbnNlKTsKIAotICAgIHVwZGF0ZVJlZGlyZWN0Q2hh
aW5TdGF0dXMobV9yZWRpcmVjdENoYWluQ2FjaGVTdGF0dXMsIHJlc3BvbnNlKTsKICAgICBjb21w
bGV0aW9uSGFuZGxlcihXVEZNb3ZlKHJlcXVlc3QpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggZDQyZWFi
NGRiNDVmMDU2ZjVmMmVjODQwZGE4NmZkNDRkOTc1NTgwNC4uMDM3MWZhN2M5OTdjOWJiMjU3ODM5
M2NjNTMzNzYyYTllNTNhMjRmNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIv
Y2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC01MzksNyArNTM5LDggQEAgYm9vbCBD
YWNoZWRSZXNvdXJjZUxvYWRlcjo6Y2FuUmVxdWVzdEFmdGVyUmVkaXJlY3Rpb24oQ2FjaGVkUmVz
b3VyY2U6OlR5cGUgdHlwZSwKIHsKICAgICBpZiAoZG9jdW1lbnQoKSAmJiAhZG9jdW1lbnQoKS0+
c2VjdXJpdHlPcmlnaW4oKS5jYW5EaXNwbGF5KHVybCkpIHsKICAgICAgICAgRnJhbWVMb2FkZXI6
OnJlcG9ydExvY2FsTG9hZEZhaWxlZChmcmFtZSgpLCB1cmwuc3RyaW5nQ2VudGVyRWxsaXBzaXpl
ZFRvTGVuZ3RoKCkpOwotICAgICAgICBMT0coUmVzb3VyY2VMb2FkaW5nLCAiQ2FjaGVkUmVzb3Vy
Y2VMb2FkZXI6OnJlcXVlc3RSZXNvdXJjZSBVUkwgd2FzIG5vdCBhbGxvd2VkIGJ5IFNlY3VyaXR5
T3JpZ2luOjpjYW5EaXNwbGF5Iik7CisgICAgICAgIExPRyhSZXNvdXJjZUxvYWRpbmcsICJDYWNo
ZWRSZXNvdXJjZUxvYWRlcjo6Y2FuUmVxdWVzdEFmdGVyUmVkaXJlY3Rpb24gVVJMIHdhcyBub3Qg
YWxsb3dlZCBieSBTZWN1cml0eU9yaWdpbjo6Y2FuRGlzcGxheSIpOworICAgICAgICBSRUxFQVNF
X0xPR19JRl9BTExPV0VEKCJjYW5SZXF1ZXN0QWZ0ZXJSZWRpcmVjdGlvbjogVVJMIHdhcyBub3Qg
YWxsb3dlZCBieSBTZWN1cml0eU9yaWdpbjo6Y2FuRGlzcGxheSIpOwogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgfQogCkBAIC01NDcsMTcgKzU0OCwyMiBAQCBib29sIENhY2hlZFJlc291cmNl
TG9hZGVyOjpjYW5SZXF1ZXN0QWZ0ZXJSZWRpcmVjdGlvbihDYWNoZWRSZXNvdXJjZTo6VHlwZSB0
eXBlLAogICAgIC8vIEJ1dCB3ZSBjdXJyZW50bHkgYWxsb3cgYXQgbGVhc3QgZGF0YSBVUkxzIHRv
IGJlIGxvYWRlZC4KIAogICAgIGlmIChvcHRpb25zLm1vZGUgPT0gRmV0Y2hPcHRpb25zOjpNb2Rl
OjpTYW1lT3JpZ2luICYmICFtX2RvY3VtZW50LT5zZWN1cml0eU9yaWdpbigpLmNhblJlcXVlc3Qo
dXJsKSkgeworICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJjYW5SZXF1ZXN0QWZ0ZXJS
ZWRpcmVjdGlvbjogVVJMIHdhcyBub3QgYWxsb3dlZCBieSBTZWN1cml0eU9yaWdpbjo6Y2FuUmVx
dWVzdCIpOwogICAgICAgICBwcmludEFjY2Vzc0RlbmllZE1lc3NhZ2UodXJsKTsKICAgICAgICAg
cmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIGlmICghYWxsb3dlZEJ5Q29udGVudFNlY3VyaXR5
UG9saWN5KHR5cGUsIHVybCwgb3B0aW9ucywgQ29udGVudFNlY3VyaXR5UG9saWN5OjpSZWRpcmVj
dFJlc3BvbnNlUmVjZWl2ZWQ6OlllcykpCisgICAgaWYgKCFhbGxvd2VkQnlDb250ZW50U2VjdXJp
dHlQb2xpY3kodHlwZSwgdXJsLCBvcHRpb25zLCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OlJlZGly
ZWN0UmVzcG9uc2VSZWNlaXZlZDo6WWVzKSkgeworICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExP
V0VEKCJjYW5SZXF1ZXN0QWZ0ZXJSZWRpcmVjdGlvbjogVVJMIHdhcyBub3QgYWxsb3dlZCBieSBj
b250ZW50IHBvbGljeSIpOwogICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQogCiAgICAgLy8g
TGFzdCBvZiBhbGwsIGNoZWNrIGZvciBpbnNlY3VyZSBjb250ZW50LiBXZSBkbyB0aGlzIGxhc3Qg
c28gdGhhdCB3aGVuIGZvbGtzIGJsb2NrIGluc2VjdXJlIGNvbnRlbnQgd2l0aCBhIENTUCBwb2xp
Y3ksIHRoZXkgZG9uJ3QgZ2V0IGEgd2FybmluZy4KICAgICAvLyBUaGV5J2xsIHN0aWxsIGdldCBh
IHdhcm5pbmcgaW4gdGhlIGNvbnNvbGUgYWJvdXQgQ1NQIGJsb2NraW5nIHRoZSBsb2FkLgotICAg
IGlmICghY2hlY2tJbnNlY3VyZUNvbnRlbnQodHlwZSwgdXJsKSkKKyAgICBpZiAoIWNoZWNrSW5z
ZWN1cmVDb250ZW50KHR5cGUsIHVybCkpIHsKKyAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dF
RCgiY2FuUmVxdWVzdEFmdGVyUmVkaXJlY3Rpb246IFVSTCB3YXMgbm90IGFsbG93ZWQgYmVjYXVz
ZSBjb250ZW50IGlzIGluc2VjdXJlIik7CiAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9CiAK
ICAgICByZXR1cm4gdHJ1ZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vz
cy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcAppbmRleCAwOWQ3OTg3MWY1YjZmMzg3ZDRm
NWZiNjU1MWVmOWEwNDY3YzQ2M2I4Li5lYmQ4NTZmNmIyM2EwMzU0NTQ0NGRhNzM5ZDQyODE3ZGI2
YWU4NTQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJS
ZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdvcmsv
V2ViUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC0xMTQsNiArMTE0LDcgQEAgdm9pZCBXZWJSZXNvdXJj
ZUxvYWRlcjo6d2lsbFNlbmRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYmIHByb3Bvc2VkUmVxdWVz
dCwgSVBDOjoKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCisgICAgICAgIFJFTEVB
U0VfTE9HX0lGX0FMTE9XRUQoIndpbGxTZW5kUmVxdWVzdDogcmV0dXJuaW5nIENvbnRpbnVlV2ls
bFNlbmRSZXF1ZXN0Iik7CiAgICAgICAgIHNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtSZXNvdXJjZUxv
YWRlcjo6Q29udGludWVXaWxsU2VuZFJlcXVlc3QocmVxdWVzdCwgbV9jb3JlTG9hZGVyLT5pc0Fs
bG93ZWRUb0Fza1VzZXJGb3JDcmVkZW50aWFscygpKSk7CiAgICAgfSk7CiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJD
bGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZy
YW1lTG9hZGVyQ2xpZW50LmNwcAppbmRleCA3Nzg4ZTZlNWFlYTU4MjczMGYxNmRjYWM3MzIzNmVj
MzQ2NzU5ZGNjLi5mZmIzODY2YmNmN2IxZDFmNmNhYjlmNjdkZjBjOTc3OWVlMDYwYWFiIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVM
b2FkZXJDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3JlU3Vw
cG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKQEAgLTgwOCwxMSArODA4LDEzIEBAIHZvaWQg
V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UoY29u
c3QgUmVzb3VyY2VSZXNwb25zCiB7CiAgICAgV2ViUGFnZSogd2ViUGFnZSA9IG1fZnJhbWUgPyBt
X2ZyYW1lLT5wYWdlKCkgOiBudWxscHRyOwogICAgIGlmICghd2ViUGFnZSkgeworICAgICAgICBX
RUJGUkFNRUxPQURFUkNMSUVOVF9SRUxFQVNFX0xPRyhOZXR3b3JrLCAiZGlzcGF0Y2hEZWNpZGVQ
b2xpY3lGb3JSZXNwb25zZTogaWdub3JpbmcgYmVjYXVzZSB0aGVyZSdzIG5vIHdlYiBwYWdlIik7
CiAgICAgICAgIGZ1bmN0aW9uKFBvbGljeUFjdGlvbjo6SWdub3JlLCBpZGVudGlmaWVyKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIGlmICghcmVxdWVzdC51cmwoKS5zdHJpbmcoKSkg
eworICAgICAgICBXRUJGUkFNRUxPQURFUkNMSUVOVF9SRUxFQVNFX0xPRyhOZXR3b3JrLCAiZGlz
cGF0Y2hEZWNpZGVQb2xpY3lGb3JSZXNwb25zZTogY29udGludWluZyBiZWNhdXNlIHRoZSB1cmwg
c3RyaW5nIGlzIGVtcHR5Iik7CiAgICAgICAgIGZ1bmN0aW9uKFBvbGljeUFjdGlvbjo6VXNlLCBp
ZGVudGlmaWVyKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTgyMiw2ICs4MjQsNyBAQCB2
b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvclJlc3BvbnNl
KGNvbnN0IFJlc291cmNlUmVzcG9ucwogICAgIC8vIE5vdGlmeSB0aGUgYnVuZGxlIGNsaWVudC4K
ICAgICBXS0J1bmRsZVBhZ2VQb2xpY3lBY3Rpb24gcG9saWN5ID0gd2ViUGFnZS0+aW5qZWN0ZWRC
dW5kbGVQb2xpY3lDbGllbnQoKS5kZWNpZGVQb2xpY3lGb3JSZXNwb25zZSh3ZWJQYWdlLCBtX2Zy
YW1lLCByZXNwb25zZSwgcmVxdWVzdCwgdXNlckRhdGEpOwogICAgIGlmIChwb2xpY3kgPT0gV0tC
dW5kbGVQYWdlUG9saWN5QWN0aW9uVXNlKSB7CisgICAgICAgIFdFQkZSQU1FTE9BREVSQ0xJRU5U
X1JFTEVBU0VfTE9HKE5ldHdvcmssICJkaXNwYXRjaERlY2lkZVBvbGljeUZvclJlc3BvbnNlOiBj
b250aW51aW5nIGJlY2F1c2UgaW5qZWN0ZWQgYnVuZGxlIHNheXMgc28iKTsKICAgICAgICAgZnVu
Y3Rpb24oUG9saWN5QWN0aW9uOjpVc2UsIGlkZW50aWZpZXIpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQpAQCAtODM1LDggKzgzOCwxMCBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNw
YXRjaERlY2lkZVBvbGljeUZvclJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9ucwogICAgIFJl
ZjxXZWJGcmFtZT4gcHJvdGVjdG9yKCptX2ZyYW1lKTsKICAgICB1aW50NjRfdCBsaXN0ZW5lcklE
ID0gbV9mcmFtZS0+c2V0VXBQb2xpY3lMaXN0ZW5lcihpZGVudGlmaWVyLCBXVEZNb3ZlKGZ1bmN0
aW9uKSwgV2ViRnJhbWU6OkZvck5hdmlnYXRpb25BY3Rpb246Ok5vKTsKICAgICBpZiAoIXdlYlBh
Z2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGVjaWRlUG9saWN5Rm9yUmVzcG9uc2Uo
bV9mcmFtZS0+ZnJhbWVJRCgpLCBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21GcmFtZShjb3JlRnJh
bWUpLCBpZGVudGlmaWVyLCBuYXZpZ2F0aW9uSUQsIHJlc3BvbnNlLCByZXF1ZXN0LAotICAgICAg
ICBjYW5TaG93UmVzcG9uc2UsIGRvd25sb2FkQXR0cmlidXRlLCBsaXN0ZW5lcklELCBVc2VyRGF0
YShXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS50cmFuc2Zvcm1PYmplY3RzVG9IYW5kbGVzKHVzZXJE
YXRhLmdldCgpKS5nZXQoKSkpKSkKKyAgICAgICAgY2FuU2hvd1Jlc3BvbnNlLCBkb3dubG9hZEF0
dHJpYnV0ZSwgbGlzdGVuZXJJRCwgVXNlckRhdGEoV2ViUHJvY2Vzczo6c2luZ2xldG9uKCkudHJh
bnNmb3JtT2JqZWN0c1RvSGFuZGxlcyh1c2VyRGF0YS5nZXQoKSkuZ2V0KCkpKSkpIHsKKyAgICAg
ICAgV0VCRlJBTUVMT0FERVJDTElFTlRfUkVMRUFTRV9MT0coTmV0d29yaywgImRpc3BhdGNoRGVj
aWRlUG9saWN5Rm9yUmVzcG9uc2U6IGlnbm9yaW5nIGJlY2F1c2UgV2ViUGFnZVByb3h5OjpEZWNp
ZGVQb2xpY3lGb3JSZXNwb25zZSBmYWlsZWQiKTsKICAgICAgICAgbV9mcmFtZS0+ZGlkUmVjZWl2
ZVBvbGljeURlY2lzaW9uKGxpc3RlbmVySUQsIGlkZW50aWZpZXIsIFBvbGljeUFjdGlvbjo6SWdu
b3JlLCAwLCB7IH0sIHsgfSk7CisgICAgfQogfQogCiB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50
OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbihjb25zdCBOYXZpZ2F0aW9u
QWN0aW9uJiBuYXZpZ2F0aW9uQWN0aW9uLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3Qs
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>391703</attachid>
            <date>2020-02-25 16:50:51 -0800</date>
            <delta_ts>2020-02-26 11:52:09 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-207916-20200225165050.patch</filename>
            <type>text/plain</type>
            <size>40012</size>
            <attacher name="Keith Rollin">krollin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU3MjA4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjFhMDhkMWEyYWE4NjNl
MTcxYmFlNjFiMjk0MmVhYzBkOTczZTViOS4uYzY3MDU3MmUyZjk2NDNjNTdlMWU4YWQ0MTY2MTlk
NmUxNzM1MTQ2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ1IEBACisyMDIwLTAyLTE4ICBLZWl0
aCBSb2xsaW4gIDxrcm9sbGluQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgbG9nZ2luZyB0byBo
ZWxwIGRpYWdub3NlIHJlZGlyZWN0IGlzc3VlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMDc5MTYKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU5NTY3
ODc1PgorCisgICAgICAgIFdlJ3JlIHNlZWluZyBhbiBpc3N1ZSB3aGVyZSBjb21tdW5pY2F0aW9u
IGJldHdlZW4gdGhlIFdlYkNvbnRlbnQKKyAgICAgICAgcHJvY2VzcyBhbmQgdGhlIE5ldHdvcmsg
cHJvY2VzcyBzZWVtcyB0byBjb21lIHRvIGEgc3RvcCBiZXR3ZWVuCisgICAgICAgIE5ldHdvcmtS
ZXNvdXJjZUxvYWRlcjo6Y29udGludWVXaWxsU2VuZFJlZGlyZWN0ZWRSZXF1ZXN0IGFuZAorICAg
ICAgICBOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OmNvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0LiBXZSBk
byBzZWUgYQorICAgICAgICBXZWJSZXNvdXJjZUxvYWRlcjo6d2lsbFNlbmRSZXF1ZXN0IGxvZyBs
aW5lIGJldHdlZW4gdGhvc2UgdHdvCisgICAgICAgIE5ldHdvcmtSZXNvdXJjZUxvYWRlciBsb2dn
aW5nIGxpbmVzLCBidXQgbm90aGluZyBlbHNlLiBBZGQgYSBidW5jaCBvZgorICAgICAgICBsb2dn
aW5nIGluIHRoaXMgYXJlYSB0byBoZWxwIGRldGVybWluZSB3aGF0J3MgaGFwcGVuaW5nLgorCisg
ICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0
cyAtLSBubyBuZXcgb3IgY2hhbmdlZCBmdW5jdGlvbmFsaXR5LgorCisgICAgICAgICogbG9hZGVy
L1BvbGljeUNoZWNrZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UG9saWN5Q2hlY2tlcjo6Y2hl
Y2tOYXZpZ2F0aW9uUG9saWN5KToKKyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI6OmxvYWREYXRhVVJMKToKKyAgICAg
ICAgKFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjp3aWxsU2VuZFJlcXVlc3RJbnRlcm5hbCk6Cisg
ICAgICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcjo6ZGlkRmluaXNoTG9hZGluZyk6CisgICAg
ICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcjo6ZGlkRmFpbCk6CisgICAgICAgIChXZWJDb3Jl
OjpSZXNvdXJjZUxvYWRlcjo6d2lsbFNlbmRSZXF1ZXN0QXN5bmMpOgorICAgICAgICAoV2ViQ29y
ZTo6UmVzb3VyY2VMb2FkZXI6Ondhc0Jsb2NrZWQpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3Vy
Y2VMb2FkZXI6OmNhbm5vdFNob3dVUkwpOgorICAgICAgICAqIGxvYWRlci9TdWJyZXNvdXJjZUxv
YWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdWJyZXNvdXJjZUxvYWRlcjo6aW5pdCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTdWJyZXNvdXJjZUxvYWRlcjo6d2lsbFNlbmRSZXF1ZXN0SW50ZXJu
YWwpOgorICAgICAgICAoV2ViQ29yZTo6U3VicmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNw
b25zZSk6CisgICAgICAgIChXZWJDb3JlOjpTdWJyZXNvdXJjZUxvYWRlcjo6ZGlkRmluaXNoTG9h
ZGluZyk6CisgICAgICAgIChXZWJDb3JlOjpTdWJyZXNvdXJjZUxvYWRlcjo6ZGlkRmFpbCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTdWJyZXNvdXJjZUxvYWRlcjo6d2lsbENhbmNlbCk6CisgICAgICAg
ICogbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkNhY2hlZFJhd1Jlc291cmNlOjpyZWRpcmVjdFJlY2VpdmVkKToKKyAgICAgICAgKiBsb2FkZXIv
Y2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3Vy
Y2U6OnJlZGlyZWN0UmVjZWl2ZWQpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNv
dXJjZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZUxvYWRlcjo6
Y2FuUmVxdWVzdEFmdGVyUmVkaXJlY3Rpb24gY29uc3QpOgorCiAyMDIwLTAyLTI0ICBaYWxhbiBC
dWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+CiAKICAgICAgICAgW0xGQ11bSUZDXVtGbG9hdHNdIE1v
dmUgZmxvYXQgaGFuZGxpbmcgb3V0IG9mIExpbmVCcmVha2VyCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViS2l0L0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCmluZGV4IDU4NGY2ZmM1
OWNjMTcwZGUxODNiNmY0MjhhYzg1ZDg4ZGFlODA3MTYuLmU0MjdlOGZmYWYzYjgyYWNiZTI1NzM4
ODQzMDA3ZDg4OTg1MTVlODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCisr
KyBiL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjQgQEAKKzIwMjAtMDItMTgg
IEtlaXRoIFJvbGxpbiAgPGtyb2xsaW5AYXBwbGUuY29tPgorCisgICAgICAgIEFkZCBsb2dnaW5n
IHRvIGhlbHAgZGlhZ25vc2UgcmVkaXJlY3QgaXNzdWUKKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwNzkxNgorICAgICAgICA8cmRhcjovL3Byb2JsZW0v
NTk1Njc4NzU+CisKKyAgICAgICAgV2UncmUgc2VlaW5nIGFuIGlzc3VlIHdoZXJlIGNvbW11bmlj
YXRpb24gYmV0d2VlbiB0aGUgV2ViQ29udGVudAorICAgICAgICBwcm9jZXNzIGFuZCB0aGUgTmV0
d29yayBwcm9jZXNzIHNlZW1zIHRvIGNvbWUgdG8gYSBzdG9wIGJldHdlZW4KKyAgICAgICAgTmV0
d29ya1Jlc291cmNlTG9hZGVyOjpjb250aW51ZVdpbGxTZW5kUmVkaXJlY3RlZFJlcXVlc3QgYW5k
CisgICAgICAgIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6Y29udGludWVXaWxsU2VuZFJlcXVlc3Qu
IFdlIGRvIHNlZSBhCisgICAgICAgIFdlYlJlc291cmNlTG9hZGVyOjp3aWxsU2VuZFJlcXVlc3Qg
bG9nIGxpbmUgYmV0d2VlbiB0aG9zZSB0d28KKyAgICAgICAgTmV0d29ya1Jlc291cmNlTG9hZGVy
IGxvZ2dpbmcgbGluZXMsIGJ1dCBub3RoaW5nIGVsc2UuIEFkZCBhIGJ1bmNoIG9mCisgICAgICAg
IGxvZ2dpbmcgaW4gdGhpcyBhcmVhIHRvIGhlbHAgZGV0ZXJtaW5lIHdoYXQncyBoYXBwZW5pbmcu
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBXZWJQ
cm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwOgorICAgICAgICAoV2ViS2l0OjpX
ZWJSZXNvdXJjZUxvYWRlcjo6d2lsbFNlbmRSZXF1ZXN0KToKKyAgICAgICAgKiBXZWJQcm9jZXNz
L1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcDoKKyAgICAgICAgKFdlYktp
dDo6V2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yUmVzcG9uc2Up
OgorCiAyMDIwLTAyLTI0ICBSb2IgQnVpcyAgPHJidWlzQGlnYWxpYS5jb20+CiAKICAgICAgICAg
SGFuZGxlIHBhZ2UgY2xvc3VyZSBmb3Igc3RhbGUtd2hpbGUtcmV2YWxpZGF0ZSByZXZhbGlkYXRp
b25zCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUG9saWN5Q2hlY2tlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUG9saWN5Q2hlY2tlci5jcHAKaW5kZXggN2E2YjU3MzJl
NjhiN2MyMmE2NjM4YTViNzZkMzYzZTFmNWFmOTRmOS4uOTBjNDFkYjhmYWY4MTlkNmMzMDJlODY4
YTk0YTk1OTZkMDZmOWUzMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1BvbGlj
eUNoZWNrZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Qb2xpY3lDaGVja2VyLmNw
cApAQCAtNTMsNiArNTMsMTEgQEAKICNpbmNsdWRlICJRdWlja0xvb2suaCIKICNlbmRpZgogCisj
ZGVmaW5lIElTX0FMTE9XRUQgKG1fZnJhbWUucGFnZSgpID8gbV9mcmFtZS5wYWdlKCktPnNlc3Np
b25JRCgpLmlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpIDogZmFsc2UpCisjZGVmaW5lIFBBR0Vf
SUQgKG1fZnJhbWUubG9hZGVyKCkuY2xpZW50KCkucGFnZUlEKCkudmFsdWVPcihQYWdlSWRlbnRp
ZmllcigpKS50b1VJbnQ2NCgpKQorI2RlZmluZSBGUkFNRV9JRCAobV9mcmFtZS5sb2FkZXIoKS5j
bGllbnQoKS5mcmFtZUlEKCkudmFsdWVPcihGcmFtZUlkZW50aWZpZXIoKSkudG9VSW50NjQoKSkK
KyNkZWZpbmUgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChmbXQsIC4uLikgUkVMRUFTRV9MT0dfSUYo
SVNfQUxMT1dFRCwgTG9hZGluZywgIiVwIC0gW3BhZ2VJRD0lIiBQUkl1NjQgIiwgZnJhbWVJRD0l
IiBQUkl1NjQgIl0gUG9saWN5Q2hlY2tlcjo6IiBmbXQsIHRoaXMsIFBBR0VfSUQsIEZSQU1FX0lE
LCAjI19fVkFfQVJHU19fKQorCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIHN0YXRpYyBib29sIGlz
QWxsb3dlZEJ5Q29udGVudFNlY3VyaXR5UG9saWN5KGNvbnN0IFVSTCYgdXJsLCBjb25zdCBFbGVt
ZW50KiBvd25lckVsZW1lbnQsIGJvb2wgZGlkUmVjZWl2ZVJlZGlyZWN0UmVzcG9uc2UpCkBAIC0x
MjgsNiArMTMzLDcgQEAgdm9pZCBQb2xpY3lDaGVja2VyOjpjaGVja05hdmlnYXRpb25Qb2xpY3ko
UmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgY29uc3QgUmVzb3UKICAgICAvLyBEb24ndCBhc2sg
bW9yZSB0aGFuIG9uY2UgZm9yIHRoZSBzYW1lIHJlcXVlc3Qgb3IgaWYgd2UgYXJlIGxvYWRpbmcg
YW4gZW1wdHkgVVJMLgogICAgIC8vIFRoaXMgYXZvaWRzIGNvbmZ1c2lvbiBvbiB0aGUgcGFydCBv
ZiB0aGUgY2xpZW50LgogICAgIGlmIChlcXVhbElnbm9yaW5nSGVhZGVyRmllbGRzKHJlcXVlc3Qs
IGxvYWRlci0+bGFzdENoZWNrZWRSZXF1ZXN0KCkpIHx8ICghcmVxdWVzdC5pc051bGwoKSAmJiBy
ZXF1ZXN0LnVybCgpLmlzRW1wdHkoKSkpIHsKKyAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dF
RCgiY2hlY2tOYXZpZ2F0aW9uUG9saWN5OiBjb250aW51aW5nIGJlY2F1c2UgZW1wdHkgVVJMIik7
CiAgICAgICAgIGZ1bmN0aW9uKFJlc291cmNlUmVxdWVzdChyZXF1ZXN0KSwgeyB9LCBOYXZpZ2F0
aW9uUG9saWN5RGVjaXNpb246OkNvbnRpbnVlTG9hZCk7CiAgICAgICAgIGxvYWRlci0+c2V0TGFz
dENoZWNrZWRSZXF1ZXN0KFdURk1vdmUocmVxdWVzdCkpOwogICAgICAgICByZXR1cm47CkBAIC0x
NDMsNiArMTQ5LDEwIEBAIHZvaWQgUG9saWN5Q2hlY2tlcjo6Y2hlY2tOYXZpZ2F0aW9uUG9saWN5
KFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIGNvbnN0IFJlc291CiAjZW5kaWYKICAgICAgICAg
aWYgKGlzQmFja0ZvcndhcmRMb2FkVHlwZShtX2xvYWRUeXBlKSkKICAgICAgICAgICAgIG1fbG9h
ZFR5cGUgPSBGcmFtZUxvYWRUeXBlOjpSZWxvYWQ7CisgICAgICAgIGlmIChzaG91bGRDb250aW51
ZSkKKyAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImNoZWNrTmF2aWdhdGlvblBv
bGljeTogY29udGludWluZyBiZWNhdXNlIHdlIGhhdmUgdmFsaWQgc3Vic3RpdHV0ZSBkYXRhIik7
CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImNoZWNr
TmF2aWdhdGlvblBvbGljeTogaWdub3JpbmcgYmVjYXVzZSB0aGUgY29udGVudCBmaWx0ZXIgdG9s
ZCB1cyBub3QgdG8iKTsKICAgICAgICAgZnVuY3Rpb24oV1RGTW92ZShyZXF1ZXN0KSwgeyB9LCBz
aG91bGRDb250aW51ZSA/IE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lvbjo6Q29udGludWVMb2FkIDog
TmF2aWdhdGlvblBvbGljeURlY2lzaW9uOjpJZ25vcmVMb2FkKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KQEAgLTE1Myw2ICsxNjMsNyBAQCB2b2lkIFBvbGljeUNoZWNrZXI6OmNoZWNrTmF2aWdh
dGlvblBvbGljeShSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBjb25zdCBSZXNvdQogICAgICAg
ICAgICAgLy8gcmV2ZWFsIHRoYXQgdGhlIGZyYW1lIHdhcyBibG9ja2VkLiBUaGlzIHdheSwgaXQg
bG9va3MgbGlrZSBhbnkgb3RoZXIgY3Jvc3Mtb3JpZ2luIHBhZ2UgbG9hZC4KICAgICAgICAgICAg
IG1fZnJhbWUub3duZXJFbGVtZW50KCktPmRpc3BhdGNoRXZlbnQoRXZlbnQ6OmNyZWF0ZShldmVu
dE5hbWVzKCkubG9hZEV2ZW50LCBFdmVudDo6Q2FuQnViYmxlOjpObywgRXZlbnQ6OklzQ2FuY2Vs
YWJsZTo6Tm8pKTsKICAgICAgICAgfQorICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJj
aGVja05hdmlnYXRpb25Qb2xpY3k6IGlnbm9yaW5nIGJlY2F1c2UgZGlzYWxsb3dlZCBieSBjb250
ZW50IHNlY3VyaXR5IHBvbGljeSIpOwogICAgICAgICBmdW5jdGlvbihXVEZNb3ZlKHJlcXVlc3Qp
LCB7IH0sIE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lvbjo6SWdub3JlTG9hZCk7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CkBAIC0xNjEsOCArMTcyLDEwIEBAIHZvaWQgUG9saWN5Q2hlY2tlcjo6Y2hl
Y2tOYXZpZ2F0aW9uUG9saWN5KFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIGNvbnN0IFJlc291
CiAKICNpZiBVU0UoUVVJQ0tfTE9PSykKICAgICAvLyBBbHdheXMgYWxsb3cgUXVpY2tMb29rLWdl
bmVyYXRlZCBVUkxzIGJhc2VkIG9uIHRoZSBwcm90b2NvbCBzY2hlbWUuCi0gICAgaWYgKCFyZXF1
ZXN0LmlzTnVsbCgpICYmIGlzUXVpY2tMb29rUHJldmlld1VSTChyZXF1ZXN0LnVybCgpKSkKKyAg
ICBpZiAoIXJlcXVlc3QuaXNOdWxsKCkgJiYgaXNRdWlja0xvb2tQcmV2aWV3VVJMKHJlcXVlc3Qu
dXJsKCkpKSB7CisgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImNoZWNrTmF2aWdhdGlv
blBvbGljeTogY29udGludWluZyBiZWNhdXNlIHF1aWNrbG9vay1nZW5lcmF0ZWQgVVJMIik7CiAg
ICAgICAgIHJldHVybiBmdW5jdGlvbihXVEZNb3ZlKHJlcXVlc3QpLCBtYWtlV2Vha1B0cihmb3Jt
U3RhdGUuZ2V0KCkpLCBOYXZpZ2F0aW9uUG9saWN5RGVjaXNpb246OkNvbnRpbnVlTG9hZCk7Cisg
ICAgfQogI2VuZGlmCiAKICNpZiBFTkFCTEUoQ09OVEVOVF9GSUxURVJJTkcpCkBAIC0xNzIsNiAr
MTg1LDcgQEAgdm9pZCBQb2xpY3lDaGVja2VyOjpjaGVja05hdmlnYXRpb25Qb2xpY3koUmVzb3Vy
Y2VSZXF1ZXN0JiYgcmVxdWVzdCwgY29uc3QgUmVzb3UKICAgICAgICAgICAgIGlmICh1bmJsb2Nr
ZWQpCiAgICAgICAgICAgICAgICAgZnJhbWUtPmxvYWRlcigpLnJlbG9hZCgpOwogICAgICAgICB9
KTsKKyAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiY2hlY2tOYXZpZ2F0aW9uUG9saWN5
OiBpZ25vcmluZyBiZWNhdXNlIG11bWJsZS1jb250ZW50LWZpbHRlci11bmJsb2NrLWhhbmRsZXIt
bXVtYmxlIik7CiAgICAgICAgIHJldHVybiBmdW5jdGlvbih7IH0sIG51bGxwdHIsIE5hdmlnYXRp
b25Qb2xpY3lEZWNpc2lvbjo6SWdub3JlTG9hZCk7CiAgICAgfQogICAgIG1fY29udGVudEZpbHRl
clVuYmxvY2tIYW5kbGVyID0geyB9OwpAQCAtMTg2LDkgKzIwMCwxMSBAQCB2b2lkIFBvbGljeUNo
ZWNrZXI6OmNoZWNrTmF2aWdhdGlvblBvbGljeShSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBj
b25zdCBSZXNvdQogICAgIG1fZGVsZWdhdGVJc0RlY2lkaW5nTmF2aWdhdGlvblBvbGljeSA9IHRy
dWU7CiAgICAgU3RyaW5nIHN1Z2dlc3RlZEZpbGVuYW1lID0gYWN0aW9uLmRvd25sb2FkQXR0cmli
dXRlKCkuaXNFbXB0eSgpID8gbnVsbEF0b20oKSA6IGFjdGlvbi5kb3dubG9hZEF0dHJpYnV0ZSgp
OwogICAgIEZyYW1lUG9saWN5RnVuY3Rpb24gZGVjaXNpb25IYW5kbGVyID0gW3RoaXMsIGZ1bmN0
aW9uID0gV1RGTW92ZShmdW5jdGlvbiksIHJlcXVlc3QgPSBSZXNvdXJjZVJlcXVlc3QocmVxdWVz
dCksIGZvcm1TdGF0ZSA9IFdURk1vdmUoZm9ybVN0YXRlKSwgc3VnZ2VzdGVkRmlsZW5hbWUgPSBX
VEZNb3ZlKHN1Z2dlc3RlZEZpbGVuYW1lKSwKLSAgICAgICAgIGJsb2JVUkxMaWZldGltZUV4dGVu
c2lvbiA9IFdURk1vdmUoYmxvYlVSTExpZmV0aW1lRXh0ZW5zaW9uKSwgcmVxdWVzdElkZW50aWZp
ZXJdIChQb2xpY3lBY3Rpb24gcG9saWN5QWN0aW9uLCBQb2xpY3lDaGVja0lkZW50aWZpZXIgcmVz
cG9uc2VJZGVudGlmaWVyKSBtdXRhYmxlIHsKLSAgICAgICAgaWYgKCFyZXNwb25zZUlkZW50aWZp
ZXIuaXNWYWxpZEZvcihyZXF1ZXN0SWRlbnRpZmllcikpCisgICAgICAgICBibG9iVVJMTGlmZXRp
bWVFeHRlbnNpb24gPSBXVEZNb3ZlKGJsb2JVUkxMaWZldGltZUV4dGVuc2lvbiksIHJlcXVlc3RJ
ZGVudGlmaWVyLCBpc0luaXRpYWxFbXB0eURvY3VtZW50TG9hZF0gKFBvbGljeUFjdGlvbiBwb2xp
Y3lBY3Rpb24sIFBvbGljeUNoZWNrSWRlbnRpZmllciByZXNwb25zZUlkZW50aWZpZXIpIG11dGFi
bGUgeworICAgICAgICBpZiAoIXJlc3BvbnNlSWRlbnRpZmllci5pc1ZhbGlkRm9yKHJlcXVlc3RJ
ZGVudGlmaWVyKSkgeworICAgICAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiY2hlY2tO
YXZpZ2F0aW9uUG9saWN5OiBpZ25vcmluZyBiZWNhdXNlIHJlc3BvbnNlIGlzIG5vdCB2YWxpZCBm
b3IgcmVxdWVzdCIpOwogICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKHsgfSwgbnVsbHB0ciwg
TmF2aWdhdGlvblBvbGljeURlY2lzaW9uOjpJZ25vcmVMb2FkKTsKKyAgICAgICAgfQogCiAgICAg
ICAgIG1fZGVsZWdhdGVJc0RlY2lkaW5nTmF2aWdhdGlvblBvbGljeSA9IGZhbHNlOwogCkBAIC0x
OTgsMTUgKzIxNCwyMiBAQCB2b2lkIFBvbGljeUNoZWNrZXI6OmNoZWNrTmF2aWdhdGlvblBvbGlj
eShSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBjb25zdCBSZXNvdQogICAgICAgICAgICAgbV9m
cmFtZS5sb2FkZXIoKS5jbGllbnQoKS5zdGFydERvd25sb2FkKHJlcXVlc3QsIHN1Z2dlc3RlZEZp
bGVuYW1lKTsKICAgICAgICAgICAgIEZBTExUSFJPVUdIOwogICAgICAgICBjYXNlIFBvbGljeUFj
dGlvbjo6SWdub3JlOgorICAgICAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiY2hlY2tO
YXZpZ2F0aW9uUG9saWN5OiBpZ25vcmluZyBiZWNhdXNlIHBvbGljeUFjdGlvbiBmcm9tIGRpc3Bh
dGNoRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbiBpcyBJZ25vcmUiKTsKICAgICAgICAg
ICAgIHJldHVybiBmdW5jdGlvbih7IH0sIG51bGxwdHIsIE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lv
bjo6SWdub3JlTG9hZCk7CiAgICAgICAgIGNhc2UgUG9saWN5QWN0aW9uOjpTdG9wQWxsTG9hZHM6
CisgICAgICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJjaGVja05hdmlnYXRpb25Qb2xp
Y3k6IHN0b3BwaW5nIGJlY2F1c2UgcG9saWN5QWN0aW9uIGZyb20gZGlzcGF0Y2hEZWNpZGVQb2xp
Y3lGb3JOYXZpZ2F0aW9uQWN0aW9uIGlzIFN0b3BBbGxMb2FkcyIpOwogICAgICAgICAgICAgZnVu
Y3Rpb24oeyB9LCBudWxscHRyLCBOYXZpZ2F0aW9uUG9saWN5RGVjaXNpb246OlN0b3BBbGxMb2Fk
cyk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIGNhc2UgUG9saWN5QWN0aW9uOjpVc2U6
CiAgICAgICAgICAgICBpZiAoIW1fZnJhbWUubG9hZGVyKCkuY2xpZW50KCkuY2FuSGFuZGxlUmVx
dWVzdChyZXF1ZXN0KSkgewogICAgICAgICAgICAgICAgIGhhbmRsZVVuaW1wbGVtZW50YWJsZVBv
bGljeShtX2ZyYW1lLmxvYWRlcigpLmNsaWVudCgpLmNhbm5vdFNob3dVUkxFcnJvcihyZXF1ZXN0
KSk7CisgICAgICAgICAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiY2hlY2tOYXZpZ2F0
aW9uUG9saWN5OiBpZ25vcmluZyBiZWNhdXNlIGZyYW1lIGxvYWRlciBjbGllbnQgY2FuJ3QgaGFu
ZGxlIHRoZSByZXF1ZXN0Iik7CiAgICAgICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKHsgfSwg
eyB9LCBOYXZpZ2F0aW9uUG9saWN5RGVjaXNpb246Oklnbm9yZUxvYWQpOwogICAgICAgICAgICAg
fQorICAgICAgICAgICAgaWYgKGlzSW5pdGlhbEVtcHR5RG9jdW1lbnRMb2FkKQorICAgICAgICAg
ICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImNoZWNrTmF2aWdhdGlvblBvbGljeTogY29u
dGludWluZyBiZWNhdXNlIHRoaXMgaXMgYW4gaW5pdGlhbCBlbXB0eSBkb2N1bWVudCIpOworICAg
ICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImNo
ZWNrTmF2aWdhdGlvblBvbGljeTogY29udGludWluZyBiZWNhdXNlIHRoaXMgcG9saWN5QWN0aW9u
IGZyb20gZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JOYXZpZ2F0aW9uQWN0aW9uIGlzIFVzZSIpOwog
ICAgICAgICAgICAgcmV0dXJuIGZ1bmN0aW9uKFdURk1vdmUocmVxdWVzdCksIG1ha2VXZWFrUHRy
KGZvcm1TdGF0ZS5nZXQoKSksIE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lvbjo6Q29udGludWVMb2Fk
KTsKICAgICAgICAgfQogICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKQEAgLTI3NSwzICsy
OTgsOCBAQCB2b2lkIFBvbGljeUNoZWNrZXI6OmhhbmRsZVVuaW1wbGVtZW50YWJsZVBvbGljeShj
b25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQor
CisjdW5kZWYgSVNfQUxMT1dFRAorI3VuZGVmIFBBR0VfSUQKKyN1bmRlZiBGUkFNRV9JRAorI3Vu
ZGVmIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xv
YWRlci9SZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VM
b2FkZXIuY3BwCmluZGV4IDczMjE3MDBlNGMxNzNmY2FhOTE4N2JkNmNmYzc0ODk4MDFlYzY5NWEu
LjhlNzdlOTE1MjU0MzdkNWU3ZThjOTM1MTEwODdhMjZjNmFhYTVmZDIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcApAQCAtNjQsNyArNjQsNyBAQAogI2VuZGlmCiAK
ICN1bmRlZiBSRUxFQVNFX0xPR19JRl9BTExPV0VECi0jZGVmaW5lIFJFTEVBU0VfTE9HX0lGX0FM
TE9XRUQoZm10LCAuLi4pIFJFTEVBU0VfTE9HX0lGKGlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgp
LCBOZXR3b3JrLCAiJXAgLSBSZXNvdXJjZUxvYWRlcjo6IiBmbXQsIHRoaXMsICMjX19WQV9BUkdT
X18pCisjZGVmaW5lIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoZm10LCAuLi4pIFJFTEVBU0VfTE9H
X0lGKGlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpLCBOZXR3b3JrLCAiJXAgLSBbZnJhbWU9JXAs
IGZyYW1lTG9hZGVyPSVwLCByZXNvdXJjZUlEPSVsdV0gUmVzb3VyY2VMb2FkZXI6OiIgZm10LCB0
aGlzLCBmcmFtZSgpLCBmcmFtZUxvYWRlcigpLCBpZGVudGlmaWVyKCksICMjX19WQV9BUkdTX18p
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtMjcyLDcgKzI3Miw3IEBAIHZvaWQgUmVzb3Vy
Y2VMb2FkZXI6OmxvYWREYXRhVVJMKCkKICAgICAgICAgaWYgKHRoaXMtPnJlYWNoZWRUZXJtaW5h
bFN0YXRlKCkpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIGlmICghZGVjb2RlUmVzdWx0
KSB7Ci0gICAgICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJsb2FkRGF0YVVSTDogZGVj
b2Rpbmcgb2YgZGF0YSBmYWlsZWQgKGZyYW1lID0gJXAsIGZyYW1lTG9hZGVyID0gJXAsIHJlc291
cmNlSUQgPSAlbHUpIiwgZnJhbWUoKSwgZnJhbWVMb2FkZXIoKSwgaWRlbnRpZmllcigpKTsKKyAg
ICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImxvYWREYXRhVVJMOiBkZWNvZGluZyBv
ZiBkYXRhIGZhaWxlZCIpOwogICAgICAgICAgICAgcHJvdGVjdGVkVGhpcy0+ZGlkRmFpbChSZXNv
dXJjZUVycm9yKGVycm9yRG9tYWluV2ViS2l0SW50ZXJuYWwsIDAsIHVybCwgIkRhdGEgVVJMIGRl
Y29kaW5nIGZhaWxlZCIpKTsKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQpAQCAtMzcx
LDcgKzM3MSw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkZXI6OndpbGxTZW5kUmVxdWVzdEludGVybmFs
KFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIGNvbnN0IFJlCiAgICAgICAgICAgICBib29sIGJs
b2NrZWRMb2FkID0gcmVzdWx0cy5zdW1tYXJ5LmJsb2NrZWRMb2FkOwogICAgICAgICAgICAgQ29u
dGVudEV4dGVuc2lvbnM6OmFwcGx5UmVzdWx0c1RvUmVxdWVzdChXVEZNb3ZlKHJlc3VsdHMpLCBw
YWdlLCByZXF1ZXN0KTsKICAgICAgICAgICAgIGlmIChibG9ja2VkTG9hZCkgewotICAgICAgICAg
ICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoIndpbGxTZW5kUmVxdWVzdGludGVybmFsOiBy
ZXNvdXJjZSBsb2FkIGNhbmNlbGVkIGJlY2F1c2Ugb2YgY29udGVudCBibG9ja2VyIChmcmFtZSA9
ICVwLCBmcmFtZUxvYWRlciA9ICVwLCByZXNvdXJjZUlEID0gJWx1KSIsIGZyYW1lKCksIGZyYW1l
TG9hZGVyKCksIGlkZW50aWZpZXIoKSk7CisgICAgICAgICAgICAgICAgUkVMRUFTRV9MT0dfSUZf
QUxMT1dFRCgid2lsbFNlbmRSZXF1ZXN0SW50ZXJuYWw6IHJlc291cmNlIGxvYWQgY2FuY2VsZWQg
YmVjYXVzZSBvZiBjb250ZW50IGJsb2NrZXIiKTsKICAgICAgICAgICAgICAgICBkaWRGYWlsKGJs
b2NrZWRCeUNvbnRlbnRCbG9ja2VyRXJyb3IoKSk7CiAgICAgICAgICAgICAgICAgY29tcGxldGlv
bkhhbmRsZXIoeyB9KTsKICAgICAgICAgICAgICAgICByZXR1cm47CkBAIC0zODEsNyArMzgxLDcg
QEAgdm9pZCBSZXNvdXJjZUxvYWRlcjo6d2lsbFNlbmRSZXF1ZXN0SW50ZXJuYWwoUmVzb3VyY2VS
ZXF1ZXN0JiYgcmVxdWVzdCwgY29uc3QgUmUKICNlbmRpZgogCiAgICAgaWYgKHJlcXVlc3QuaXNO
dWxsKCkpIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgid2lsbFNlbmRSZXF1ZXN0
aW50ZXJuYWw6IHJlc291cmNlIGxvYWQgY2FuY2VsZWQgYmVjYXVzZSBvZiBlbXB0eSByZXF1ZXN0
IChmcmFtZSA9ICVwLCBmcmFtZUxvYWRlciA9ICVwLCByZXNvdXJjZUlEID0gJWx1KSIsIGZyYW1l
KCksIGZyYW1lTG9hZGVyKCksIGlkZW50aWZpZXIoKSk7CisgICAgICAgIFJFTEVBU0VfTE9HX0lG
X0FMTE9XRUQoIndpbGxTZW5kUmVxdWVzdEludGVybmFsOiByZXNvdXJjZSBsb2FkIGNhbmNlbGVk
IGJlY2F1c2Ugb2YgZW1wdHkgcmVxdWVzdCIpOwogICAgICAgICBkaWRGYWlsKGNhbm5vdFNob3dV
UkxFcnJvcigpKTsKICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoeyB9KTsKICAgICAgICAgcmV0
dXJuOwpAQCAtMzk0LDYgKzM5NCw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkZXI6OndpbGxTZW5kUmVx
dWVzdEludGVybmFsKFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIGNvbnN0IFJlCiAjaWYgUExB
VEZPUk0oSU9TX0ZBTUlMWSkKICAgICAgICAgLy8gSWYgdGhpcyBSZXNvdXJjZUxvYWRlciB3YXMg
c3RvcHBlZCBhcyBhIHJlc3VsdCBvZiBhc3NpZ25JZGVudGlmaWVyVG9Jbml0aWFsUmVxdWVzdCwg
YmFpbCBvdXQKICAgICAgICAgaWYgKG1fcmVhY2hlZFRlcm1pbmFsU3RhdGUpIHsKKyAgICAgICAg
ICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoIndpbGxTZW5kUmVxdWVzdEludGVybmFsOiByZXNv
dXJjZSBsb2FkIHJlYWNoZWQgdGVybWluYWwgc3RhdGUiKTsKICAgICAgICAgICAgIGNvbXBsZXRp
b25IYW5kbGVyKFdURk1vdmUocmVxdWVzdCkpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICB9CkBAIC00MjksNiArNDMwLDggQEAgdm9pZCBSZXNvdXJjZUxvYWRlcjo6d2lsbFNlbmRSZXF1
ZXN0SW50ZXJuYWwoUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgY29uc3QgUmUKICAgICAgICAg
ICAgIGxvYWREYXRhVVJMKCk7CiAgICAgICAgIH0KICAgICB9CisKKyAgICBSRUxFQVNFX0xPR19J
Rl9BTExPV0VEKCJ3aWxsU2VuZFJlcXVlc3RJbnRlcm5hbDogY2FsbGluZyBjb21wbGV0aW9uIGhh
bmRsZXIiKTsKICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHJlcXVlc3QpKTsKIH0KIApA
QCAtNTM5LDcgKzU0Miw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVEYXRhT3JC
dWZmZXIoY29uc3QgY2hhciogZGF0YSwgdW5zaWduZWQgbGVuZ3RoLCBSCiAKIHZvaWQgUmVzb3Vy
Y2VMb2FkZXI6OmRpZEZpbmlzaExvYWRpbmcoY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBuZXR3
b3JrTG9hZE1ldHJpY3MpCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiZGlkRmluaXNo
TG9hZGluZzogKGZyYW1lID0gJXAsIGZyYW1lTG9hZGVyID0gJXAsIHJlc291cmNlSUQgPSAlbHUp
IiwgZnJhbWUoKSwgZnJhbWVMb2FkZXIoKSwgaWRlbnRpZmllcigpKTsKKyAgICBSRUxFQVNFX0xP
R19JRl9BTExPV0VEKCJkaWRGaW5pc2hMb2FkaW5nOiIpOwogCiAgICAgZGlkRmluaXNoTG9hZGlu
Z09uZVBhcnQobmV0d29ya0xvYWRNZXRyaWNzKTsKIApAQCAtNTY3LDcgKzU3MCw3IEBAIHZvaWQg
UmVzb3VyY2VMb2FkZXI6OmRpZEZpbmlzaExvYWRpbmdPbmVQYXJ0KGNvbnN0IE5ldHdvcmtMb2Fk
TWV0cmljcyYgbmV0d29ya0xvCiAKIHZvaWQgUmVzb3VyY2VMb2FkZXI6OmRpZEZhaWwoY29uc3Qg
UmVzb3VyY2VFcnJvciYgZXJyb3IpCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiZGlk
RmFpbDogKGZyYW1lID0gJXAsIGZyYW1lTG9hZGVyID0gJXAsIHJlc291cmNlSUQgPSAlbHUpIiwg
ZnJhbWUoKSwgZnJhbWVMb2FkZXIoKSwgaWRlbnRpZmllcigpKTsKKyAgICBSRUxFQVNFX0xPR19J
Rl9BTExPV0VEKCJkaWRGYWlsOiIpOwogCiAgICAgaWYgKHdhc0NhbmNlbGxlZCgpKQogICAgICAg
ICByZXR1cm47CkBAIC02NjksNyArNjcyLDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRlcjo6d2lsbFNl
bmRSZXF1ZXN0QXN5bmMoUmVzb3VyY2VIYW5kbGUqIGhhbmRsZSwgUmVzb3VyY2VSZXF1ZXMKIHsK
ICAgICBSZWZQdHI8UmVzb3VyY2VIYW5kbGU+IHByb3RlY3RlZEhhbmRsZShoYW5kbGUpOwogICAg
IGlmIChkb2N1bWVudExvYWRlcigpLT5hcHBsaWNhdGlvbkNhY2hlSG9zdCgpLm1heWJlTG9hZEZh
bGxiYWNrRm9yUmVkaXJlY3QodGhpcywgcmVxdWVzdCwgcmVkaXJlY3RSZXNwb25zZSkpIHsKLSAg
ICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgid2lsbFNlbmRSZXF1ZXN0QXN5bmM6IGV4aXRp
bmcgZWFybHkgYmVjYXVzZSBtYXliZUxvYWRGYWxsYmFja0ZvclJlZGlyZWN0IHJldHVybmVkIGZh
bHNlIChmcmFtZSA9ICVwLCBmcmFtZUxvYWRlciA9ICVwLCByZXNvdXJjZUlEID0gJWx1KSIsIGZy
YW1lKCksIGZyYW1lTG9hZGVyKCksIGlkZW50aWZpZXIoKSk7CisgICAgICAgIFJFTEVBU0VfTE9H
X0lGX0FMTE9XRUQoIndpbGxTZW5kUmVxdWVzdEFzeW5jOiBleGl0aW5nIGVhcmx5IGJlY2F1c2Ug
bWF5YmVMb2FkRmFsbGJhY2tGb3JSZWRpcmVjdCByZXR1cm5lZCBmYWxzZSIpOwogICAgICAgICBj
b21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHJlcXVlc3QpKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KQEAgLTcxNSwxMyArNzE4LDEzIEBAIHZvaWQgUmVzb3VyY2VMb2FkZXI6OmRpZEZhaWwoUmVz
b3VyY2VIYW5kbGUqLCBjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKIAogdm9pZCBSZXNvdXJj
ZUxvYWRlcjo6d2FzQmxvY2tlZChSZXNvdXJjZUhhbmRsZSopCiB7Ci0gICAgUkVMRUFTRV9MT0df
SUZfQUxMT1dFRCgid2FzQmxvY2tlZDogcmVzb3VyY2UgbG9hZCBjYW5jZWxlZCBiZWNhdXNlIG9m
IGNvbnRlbnQgYmxvY2tlciAoZnJhbWUgPSAlcCwgZnJhbWVMb2FkZXIgPSAlcCwgcmVzb3VyY2VJ
RCA9ICVsdSkiLCBmcmFtZSgpLCBmcmFtZUxvYWRlcigpLCBpZGVudGlmaWVyKCkpOworICAgIFJF
TEVBU0VfTE9HX0lGX0FMTE9XRUQoIndhc0Jsb2NrZWQ6IHJlc291cmNlIGxvYWQgY2FuY2VsZWQg
YmVjYXVzZSBvZiBjb250ZW50IGJsb2NrZXIiKTsKICAgICBkaWRGYWlsKGJsb2NrZWRFcnJvcigp
KTsKIH0KIAogdm9pZCBSZXNvdXJjZUxvYWRlcjo6Y2Fubm90U2hvd1VSTChSZXNvdXJjZUhhbmRs
ZSopCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgid2FzQmxvY2tlZDogcmVzb3VyY2Ug
bG9hZCBjYW5jZWxlZCBiZWNhdXNlIG9mIGludmFsaWQgVVJMIChmcmFtZSA9ICVwLCBmcmFtZUxv
YWRlciA9ICVwLCByZXNvdXJjZUlEID0gJWx1KSIsIGZyYW1lKCksIGZyYW1lTG9hZGVyKCksIGlk
ZW50aWZpZXIoKSk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgid2FzQmxvY2tlZDogcmVz
b3VyY2UgbG9hZCBjYW5jZWxlZCBiZWNhdXNlIG9mIGludmFsaWQgVVJMIik7CiAgICAgZGlkRmFp
bChjYW5ub3RTaG93VVJMRXJyb3IoKSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3Vi
cmVzb3VyY2VMb2FkZXIuY3BwCmluZGV4IDRhMGNhM2UwMDA1NTljYTBhODdjM2YwNzAyZTRiZDU5
YzhmZDZlMTIuLjM5MTU0MjA0OThjZWFlNzVhZTk5NzYzYzRjYjViMTU5MTVkZGIwMWIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcApAQCAtNzAsOCArNzAs
OCBAQAogCiAjdW5kZWYgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRAogI3VuZGVmIFJFTEVBU0VfTE9H
X0VSUk9SX0lGX0FMTE9XRUQKLSNkZWZpbmUgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChmbXQsIC4u
LikgUkVMRUFTRV9MT0dfSUYoaXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCksIFJlc291cmNlTG9h
ZGluZywgIiVwIC0gU3VicmVzb3VyY2VMb2FkZXI6OiIgZm10LCB0aGlzLCAjI19fVkFfQVJHU19f
KQotI2RlZmluZSBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExPV0VEKGZtdCwgLi4uKSBSRUxFQVNF
X0xPR19FUlJPUl9JRihpc0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKSwgUmVzb3VyY2VMb2FkaW5n
LCAiJXAgLSBTdWJyZXNvdXJjZUxvYWRlcjo6IiBmbXQsIHRoaXMsICMjX19WQV9BUkdTX18pCisj
ZGVmaW5lIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoZm10LCAuLi4pIFJFTEVBU0VfTE9HX0lGKGlz
QWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgpLCBSZXNvdXJjZUxvYWRpbmcsICIlcCAtIFtmcmFtZT0l
cCwgZnJhbWVMb2FkZXI9JXAsIHJlc291cmNlSUQ9JWx1XSBTdWJyZXNvdXJjZUxvYWRlcjo6IiBm
bXQsIHRoaXMsIGZyYW1lKCksIGZyYW1lTG9hZGVyKCksIGlkZW50aWZpZXIoKSwgIyNfX1ZBX0FS
R1NfXykKKyNkZWZpbmUgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRChmbXQsIC4uLikgUkVM
RUFTRV9MT0dfRVJST1JfSUYoaXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCksIFJlc291cmNlTG9h
ZGluZywgIiVwIC0gW2ZyYW1lPSVwLCBmcmFtZUxvYWRlcj0lcCwgcmVzb3VyY2VJRD0lbHVdIFN1
YnJlc291cmNlTG9hZGVyOjoiIGZtdCwgdGhpcywgZnJhbWUoKSwgZnJhbWVMb2FkZXIoKSwgaWRl
bnRpZmllcigpLCAjI19fVkFfQVJHU19fKQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTE2
Niw3ICsxNjYsNyBAQCB2b2lkIFN1YnJlc291cmNlTG9hZGVyOjppbml0KFJlc291cmNlUmVxdWVz
dCYmIHJlcXVlc3QsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoYgogICAgICAgICAgICAgcmV0dXJu
IGNvbXBsZXRpb25IYW5kbGVyKGZhbHNlKTsKICAgICAgICAgaWYgKCFtX2RvY3VtZW50TG9hZGVy
KSB7CiAgICAgICAgICAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICAgICAgICAgIFJFTEVB
U0VfTE9HX0VSUk9SKFJlc291cmNlTG9hZGluZywgIlN1YnJlc291cmNlTG9hZGVyOjppbml0OiBy
ZXNvdXJjZSBsb2FkIGNhbmNlbGVkIGJlY2F1c2UgZG9jdW1lbnQgbG9hZGVyIGlzIG51bGwgKGZy
YW1lID0gJXAsIGZyYW1lTG9hZGVyID0gJXAsIHJlc291cmNlSUQgPSAlbHUpIiwgZnJhbWUoKSwg
ZnJhbWVMb2FkZXIoKSwgaWRlbnRpZmllcigpKTsKKyAgICAgICAgICAgIFJFTEVBU0VfTE9HX0VS
Uk9SX0lGX0FMTE9XRUQoImluaXQ6IHJlc291cmNlIGxvYWQgY2FuY2VsZWQgYmVjYXVzZSBkb2N1
bWVudCBsb2FkZXIgaXMgbnVsbCIpOwogICAgICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5k
bGVyKGZhbHNlKTsKICAgICAgICAgfQogICAgICAgICBBU1NFUlQoIXJlYWNoZWRUZXJtaW5hbFN0
YXRlKCkpOwpAQCAtMTg5LDYgKzE4OSw3IEBAIHZvaWQgU3VicmVzb3VyY2VMb2FkZXI6OndpbGxT
ZW5kUmVxdWVzdEludGVybmFsKFJlc291cmNlUmVxdWVzdCYmIG5ld1JlcXVlc3QsIGNvCiAgICAg
UmVmPFN1YnJlc291cmNlTG9hZGVyPiBwcm90ZWN0ZWRUaGlzKCp0aGlzKTsKIAogICAgIGlmICgh
bmV3UmVxdWVzdC51cmwoKS5pc1ZhbGlkKCkpIHsKKyAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxM
T1dFRCgid2lsbFNlbmRSZXF1ZXN0SW50ZXJuYWw6IHJlc291cmNlIGxvYWQgY2FuY2VsZWQgYmVj
YXVzZSByZXF1ZXN0IGlzIGludmFsaWQiKTsKICAgICAgICAgY2FuY2VsKGNhbm5vdFNob3dVUkxF
cnJvcigpKTsKICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUobmV3UmVx
dWVzdCkpOwogICAgIH0KQEAgLTIwMCwyMCArMjAxLDI4IEBAIHZvaWQgU3VicmVzb3VyY2VMb2Fk
ZXI6OndpbGxTZW5kUmVxdWVzdEludGVybmFsKFJlc291cmNlUmVxdWVzdCYmIG5ld1JlcXVlc3Qs
IGNvCiAgICAgfQogCiAgICAgYXV0byBjb250aW51ZVdpbGxTZW5kUmVxdWVzdCA9IFt0aGlzLCBw
cm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHJlZGlyZWN0UmVzcG9uc2VdIChDb21wbGV0
aW9uSGFuZGxlcjx2b2lkKFJlc291cmNlUmVxdWVzdCYmKT4mJiBjb21wbGV0aW9uSGFuZGxlciwg
UmVzb3VyY2VSZXF1ZXN0JiYgbmV3UmVxdWVzdCkgbXV0YWJsZSB7Ci0gICAgICAgIGlmIChuZXdS
ZXF1ZXN0LmlzTnVsbCgpIHx8IHJlYWNoZWRUZXJtaW5hbFN0YXRlKCkpCisgICAgICAgIGlmIChu
ZXdSZXF1ZXN0LmlzTnVsbCgpIHx8IHJlYWNoZWRUZXJtaW5hbFN0YXRlKCkpIHsKKyAgICAgICAg
ICAgIGlmIChuZXdSZXF1ZXN0LmlzTnVsbCgpKQorICAgICAgICAgICAgICAgIFJFTEVBU0VfTE9H
X0lGX0FMTE9XRUQoIndpbGxTZW5kUmVxdWVzdEludGVybmFsOiByZXNvdXJjZSBsb2FkIGNhbmNl
bGVkIGJlY2F1c2UgcmVxdWVzdCBpcyBOVUxMICgxKSIpOworICAgICAgICAgICAgZWxzZQorICAg
ICAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoIndpbGxTZW5kUmVxdWVzdEludGVy
bmFsOiByZXNvdXJjZSBsb2FkIGNhbmNlbGVkIGJlY2F1c2UgcmVhY2hlZCB0ZXJtaW5hbCBzdGF0
ZSIpOwogICAgICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUobmV3UmVx
dWVzdCkpOworICAgICAgICB9CiAKICAgICAgICAgUmVzb3VyY2VMb2FkZXI6OndpbGxTZW5kUmVx
dWVzdEludGVybmFsKFdURk1vdmUobmV3UmVxdWVzdCksIHJlZGlyZWN0UmVzcG9uc2UsIFt0aGlz
LCBwcm90ZWN0ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKSwgY29tcGxldGlvbkhhbmRs
ZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgcmVkaXJlY3RSZXNwb25zZV0gKFJlc291
cmNlUmVxdWVzdCYmIHJlcXVlc3QpIG11dGFibGUgewogICAgICAgICAgICAgaWYgKHJlYWNoZWRU
ZXJtaW5hbFN0YXRlKCkpCiAgICAgICAgICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVy
KFdURk1vdmUocmVxdWVzdCkpOwogCiAgICAgICAgICAgICBpZiAocmVxdWVzdC5pc051bGwoKSkg
eworICAgICAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoIndpbGxTZW5kUmVxdWVz
dEludGVybmFsOiByZXNvdXJjZSBsb2FkIGNhbmNlbGVkIGJlY2F1c2UgcmVxdWVzdCBpcyBOVUxM
ICgyKSIpOwogICAgICAgICAgICAgICAgIGNhbmNlbCgpOwogICAgICAgICAgICAgICAgIHJldHVy
biBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHJlcXVlc3QpKTsKICAgICAgICAgICAgIH0KIAog
ICAgICAgICAgICAgaWYgKG1fcmVzb3VyY2UtPnR5cGUoKSA9PSBDYWNoZWRSZXNvdXJjZTo6VHlw
ZTo6TWFpblJlc291cmNlICYmICFyZWRpcmVjdFJlc3BvbnNlLmlzTnVsbCgpKQogICAgICAgICAg
ICAgICAgIG1fZG9jdW1lbnRMb2FkZXItPndpbGxDb250aW51ZU1haW5SZXNvdXJjZUxvYWRBZnRl
clJlZGlyZWN0KHJlcXVlc3QpOworCisgICAgICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VE
KCJ3aWxsU2VuZFJlcXVlc3RJbnRlcm5hbDogcmVzb3VyY2UgbG9hZCBmaW5pc2hlZDsgY2FsbGlu
ZyBjb21wbGV0aW9uIGhhbmRsZXIiKTsKICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdU
Rk1vdmUocmVxdWVzdCkpOwogICAgICAgICB9KTsKICAgICB9OwpAQCAtMjI3LDcgKzIzNiw3IEBA
IHZvaWQgU3VicmVzb3VyY2VMb2FkZXI6OndpbGxTZW5kUmVxdWVzdEludGVybmFsKFJlc291cmNl
UmVxdWVzdCYmIG5ld1JlcXVlc3QsIGNvCiAgICAgICAgICAgICAgICAgaWYgKG1fZnJhbWUgJiYg
bV9mcmFtZS0+ZG9jdW1lbnQoKSkKICAgICAgICAgICAgICAgICAgICAgbV9mcmFtZS0+ZG9jdW1l
bnQoKS0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6U2VjdXJpdHksIE1lc3NhZ2VM
ZXZlbDo6RXJyb3IsIGVycm9yLmxvY2FsaXplZERlc2NyaXB0aW9uKCkpOwogCi0gICAgICAgICAg
ICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgid2lsbFNlbmRSZXF1ZXN0aW50ZXJuYWw6IHJl
c291cmNlIGxvYWQgY2FuY2VsZWQgYmVjYXVzZSBub3QgYWxsb3dlZCB0byBmb2xsb3cgYSByZWRp
cmVjdCAoZnJhbWUgPSAlcCwgZnJhbWVMb2FkZXIgPSAlcCwgcmVzb3VyY2VJRCA9ICVsdSkiLCBm
cmFtZSgpLCBmcmFtZUxvYWRlcigpLCBpZGVudGlmaWVyKCkpOworICAgICAgICAgICAgICAgIFJF
TEVBU0VfTE9HX0lGX0FMTE9XRUQoIndpbGxTZW5kUmVxdWVzdEludGVybmFsOiByZXNvdXJjZSBs
b2FkIGNhbmNlbGVkIGJlY2F1c2Ugbm90IGFsbG93ZWQgdG8gZm9sbG93IGEgcmVkaXJlY3QiKTsK
IAogICAgICAgICAgICAgICAgIGNhbmNlbChlcnJvcik7CiAgICAgICAgICAgICAgICAgcmV0dXJu
IGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUobmV3UmVxdWVzdCkpOwpAQCAtMjM4LDE3ICsyNDcs
MTcgQEAgdm9pZCBTdWJyZXNvdXJjZUxvYWRlcjo6d2lsbFNlbmRSZXF1ZXN0SW50ZXJuYWwoUmVz
b3VyY2VSZXF1ZXN0JiYgbmV3UmVxdWVzdCwgY28KICAgICAgICAgICAgIG9wYXF1ZVJlZGlyZWN0
ZWRSZXNwb25zZS5zZXRUYWludGluZyhSZXNvdXJjZVJlc3BvbnNlOjpUYWludGluZzo6T3BhcXVl
cmVkaXJlY3QpOwogICAgICAgICAgICAgbV9yZXNvdXJjZS0+cmVzcG9uc2VSZWNlaXZlZChvcGFx
dWVSZWRpcmVjdGVkUmVzcG9uc2UpOwogICAgICAgICAgICAgaWYgKHJlYWNoZWRUZXJtaW5hbFN0
YXRlKCkpIHsKLSAgICAgICAgICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJ3aWxsU2Vu
ZFJlcXVlc3RpbnRlcm5hbDogcmVhY2hlZCB0ZXJtaW5hbCBzdGF0ZSAoZnJhbWUgPSAlcCwgZnJh
bWVMb2FkZXIgPSAlcCwgcmVzb3VyY2VJRCA9ICVsdSkiLCBmcmFtZSgpLCBmcmFtZUxvYWRlcigp
LCBpZGVudGlmaWVyKCkpOworICAgICAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQo
IndpbGxTZW5kUmVxdWVzdEludGVybmFsOiByZWFjaGVkIHRlcm1pbmFsIHN0YXRlIik7CiAgICAg
ICAgICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUobmV3UmVxdWVzdCkp
OwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJ3
aWxsU2VuZFJlcXVlc3RpbnRlcm5hbDogcmVzb3VyY2UgbG9hZCBjb21wbGV0ZWQgKGZyYW1lID0g
JXAsIGZyYW1lTG9hZGVyID0gJXAsIHJlc291cmNlSUQgPSAlbHUpIiwgZnJhbWUoKSwgZnJhbWVM
b2FkZXIoKSwgaWRlbnRpZmllcigpKTsKKyAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9X
RUQoIndpbGxTZW5kUmVxdWVzdEludGVybmFsOiByZXNvdXJjZSBsb2FkIGNvbXBsZXRlZCIpOwog
CiAgICAgICAgICAgICBOZXR3b3JrTG9hZE1ldHJpY3MgZW1wdHlNZXRyaWNzOwogICAgICAgICAg
ICAgZGlkRmluaXNoTG9hZGluZyhlbXB0eU1ldHJpY3MpOwogICAgICAgICAgICAgcmV0dXJuIGNv
bXBsZXRpb25IYW5kbGVyKFdURk1vdmUobmV3UmVxdWVzdCkpOwogICAgICAgICB9IGVsc2UgaWYg
KG1fcmVkaXJlY3RDb3VudCsrID49IG9wdGlvbnMoKS5tYXhSZWRpcmVjdENvdW50KSB7Ci0gICAg
ICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJ3aWxsU2VuZFJlcXVlc3RpbnRlcm5hbDog
cmVzb3VyY2UgbG9hZCBjYW5jZWxlZCBiZWNhdXNlIHRvbyBtYW55IHJlZGlyZWN0cyAoZnJhbWUg
PSAlcCwgZnJhbWVMb2FkZXIgPSAlcCwgcmVzb3VyY2VJRCA9ICVsdSkiLCBmcmFtZSgpLCBmcmFt
ZUxvYWRlcigpLCBpZGVudGlmaWVyKCkpOworICAgICAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxM
T1dFRCgid2lsbFNlbmRSZXF1ZXN0SW50ZXJuYWw6IHJlc291cmNlIGxvYWQgY2FuY2VsZWQgYmVj
YXVzZSB0b28gbWFueSByZWRpcmVjdHMiKTsKICAgICAgICAgICAgIGNhbmNlbChSZXNvdXJjZUVy
cm9yKFN0cmluZygpLCAwLCByZXF1ZXN0KCkudXJsKCksICJUb28gbWFueSByZWRpcmVjdGlvbnMi
X3MsIFJlc291cmNlRXJyb3I6OlR5cGU6OkdlbmVyYWwpKTsKICAgICAgICAgICAgIHJldHVybiBj
b21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKG5ld1JlcXVlc3QpKTsKICAgICAgICAgfQpAQCAtMjY1
LDcgKzI3NCw3IEBAIHZvaWQgU3VicmVzb3VyY2VMb2FkZXI6OndpbGxTZW5kUmVxdWVzdEludGVy
bmFsKFJlc291cmNlUmVxdWVzdCYmIG5ld1JlcXVlc3QsIGNvCiAgICAgICAgIH0KIAogICAgICAg
ICBpZiAoIW1fZG9jdW1lbnRMb2FkZXItPmNhY2hlZFJlc291cmNlTG9hZGVyKCkudXBkYXRlUmVx
dWVzdEFmdGVyUmVkaXJlY3Rpb24obV9yZXNvdXJjZS0+dHlwZSgpLCBuZXdSZXF1ZXN0LCBvcHRp
b25zKCkpKSB7Ci0gICAgICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJ3aWxsU2VuZFJl
cXVlc3RpbnRlcm5hbDogcmVzb3VyY2UgbG9hZCBjYW5jZWxlZCBiZWNhdXNlIHNvbWV0aGluZyBh
Ym91dCB1cGRhdGVSZXF1ZXN0QWZ0ZXJSZWRpcmVjdGlvbiAoZnJhbWUgPSAlcCwgZnJhbWVMb2Fk
ZXIgPSAlcCwgcmVzb3VyY2VJRCA9ICVsdSkiLCBmcmFtZSgpLCBmcmFtZUxvYWRlcigpLCBpZGVu
dGlmaWVyKCkpOworICAgICAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgid2lsbFNlbmRS
ZXF1ZXN0SW50ZXJuYWw6IHJlc291cmNlIGxvYWQgY2FuY2VsZWQgYmVjYXVzZSBDYWNoZWRSZXNv
dXJjZUxvYWRlcjo6dXBkYXRlUmVxdWVzdEFmdGVyUmVkaXJlY3Rpb24gKHJlYWxseSBDYWNoZWRS
ZXNvdXJjZUxvYWRlcjo6Y2FuUmVxdWVzdEFmdGVyUmVkaXJlY3Rpb24pIHNhaWQgbm8iKTsKICAg
ICAgICAgICAgIGNhbmNlbCgpOwogICAgICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVy
KFdURk1vdmUobmV3UmVxdWVzdCkpOwogICAgICAgICB9CkBAIC0yNzUsMjMgKzI4NCwyNSBAQCB2
b2lkIFN1YnJlc291cmNlTG9hZGVyOjp3aWxsU2VuZFJlcXVlc3RJbnRlcm5hbChSZXNvdXJjZVJl
cXVlc3QmJiBuZXdSZXF1ZXN0LCBjbwogICAgICAgICAgICAgU3RyaW5nIGVycm9yTWVzc2FnZSA9
ICJDcm9zcy1vcmlnaW4gcmVkaXJlY3Rpb24gdG8gIiArIG5ld1JlcXVlc3QudXJsKCkuc3RyaW5n
KCkgKyAiIGRlbmllZCBieSBDcm9zcy1PcmlnaW4gUmVzb3VyY2UgU2hhcmluZyBwb2xpY3k6ICIg
KyBlcnJvckRlc2NyaXB0aW9uOwogICAgICAgICAgICAgaWYgKG1fZnJhbWUgJiYgbV9mcmFtZS0+
ZG9jdW1lbnQoKSkKICAgICAgICAgICAgICAgICBtX2ZyYW1lLT5kb2N1bWVudCgpLT5hZGRDb25z
b2xlTWVzc2FnZShNZXNzYWdlU291cmNlOjpTZWN1cml0eSwgTWVzc2FnZUxldmVsOjpFcnJvciwg
ZXJyb3JNZXNzYWdlKTsKLSAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoIndpbGxT
ZW5kUmVxdWVzdGludGVybmFsOiByZXNvdXJjZSBsb2FkIGNhbmNlbGVkIGJlY2F1c2UgY3Jvc3Nz
LW9yaWdpbiByZWRpcmVjdGlvbiBkZW5pZWQgYnkgQ09SUyBwb2xpY3kgKGZyYW1lID0gJXAsIGZy
YW1lTG9hZGVyID0gJXAsIHJlc291cmNlSUQgPSAlbHUpIiwgZnJhbWUoKSwgZnJhbWVMb2FkZXIo
KSwgaWRlbnRpZmllcigpKTsKKyAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoIndp
bGxTZW5kUmVxdWVzdEludGVybmFsOiByZXNvdXJjZSBsb2FkIGNhbmNlbGVkIGJlY2F1c2UgY3Jv
c3NzLW9yaWdpbiByZWRpcmVjdGlvbiBkZW5pZWQgYnkgQ09SUyBwb2xpY3kiKTsKICAgICAgICAg
ICAgIGNhbmNlbChSZXNvdXJjZUVycm9yKFN0cmluZygpLCAwLCByZXF1ZXN0KCkudXJsKCksIGVy
cm9yTWVzc2FnZSwgUmVzb3VyY2VFcnJvcjo6VHlwZTo6QWNjZXNzQ29udHJvbCkpOwogICAgICAg
ICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUobmV3UmVxdWVzdCkpOwogICAg
ICAgICB9CiAKICAgICAgICAgaWYgKG1fcmVzb3VyY2UtPmlzSW1hZ2UoKSAmJiBtX2RvY3VtZW50
TG9hZGVyLT5jYWNoZWRSZXNvdXJjZUxvYWRlcigpLnNob3VsZERlZmVySW1hZ2VMb2FkKG5ld1Jl
cXVlc3QudXJsKCkpKSB7Ci0gICAgICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJ3aWxs
U2VuZFJlcXVlc3RpbnRlcm5hbDogcmVzb3VyY2UgbG9hZCBjYW5jZWxlZCBiZWNhdXNlIGl0J3Mg
YW4gaW1hZ2UgdGhhdCBzaG91bGQgYmUgZGVmZXJlZCAoZnJhbWUgPSAlcCwgZnJhbWVMb2FkZXIg
PSAlcCwgcmVzb3VyY2VJRCA9ICVsdSkiLCBmcmFtZSgpLCBmcmFtZUxvYWRlcigpLCBpZGVudGlm
aWVyKCkpOworICAgICAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgid2lsbFNlbmRSZXF1
ZXN0SW50ZXJuYWw6IHJlc291cmNlIGxvYWQgY2FuY2VsZWQgYmVjYXVzZSBpdCdzIGFuIGltYWdl
IHRoYXQgc2hvdWxkIGJlIGRlZmVyZWQiKTsKICAgICAgICAgICAgIGNhbmNlbCgpOwogICAgICAg
ICAgICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUobmV3UmVxdWVzdCkpOwogICAg
ICAgICB9CiAgICAgICAgIG1fbG9hZFRpbWluZy5hZGRSZWRpcmVjdChyZWRpcmVjdFJlc3BvbnNl
LnVybCgpLCBuZXdSZXF1ZXN0LnVybCgpKTsKLSAgICAgICAgbV9yZXNvdXJjZS0+cmVkaXJlY3RS
ZWNlaXZlZChXVEZNb3ZlKG5ld1JlcXVlc3QpLCByZWRpcmVjdFJlc3BvbnNlLCBbY29tcGxldGlv
bkhhbmRsZXIgPSBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgY29udGludWVXaWxsU2VuZFJl
cXVlc3QgPSBXVEZNb3ZlKGNvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0KV0gKFJlc291cmNlUmVxdWVz
dCYmIHJlcXVlc3QpIG11dGFibGUgeworICAgICAgICBtX3Jlc291cmNlLT5yZWRpcmVjdFJlY2Vp
dmVkKFdURk1vdmUobmV3UmVxdWVzdCksIHJlZGlyZWN0UmVzcG9uc2UsIFt0aGlzLCBwcm90ZWN0
ZWRUaGlzID0gV1RGTW92ZShwcm90ZWN0ZWRUaGlzKSwgY29tcGxldGlvbkhhbmRsZXIgPSBXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgY29udGludWVXaWxsU2VuZFJlcXVlc3QgPSBXVEZNb3Zl
KGNvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0KV0gKFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QpIG11
dGFibGUgeworICAgICAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgid2lsbFNlbmRSZXF1
ZXN0SW50ZXJuYWw6IHJlc291cmNlIGRvbmUgbm90aWZ5aW5nIGNsaWVudHMiKTsKICAgICAgICAg
ICAgIGNvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0KFdURk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBX
VEZNb3ZlKHJlcXVlc3QpKTsKICAgICAgICAgfSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
KyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJ3aWxsU2VuZFJlcXVlc3RJbnRlcm5hbDogcmVk
aXJlY3QgcmVzcG9uc2UgaXMgTlVMTCIpOwogICAgIGNvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0KFdU
Rk1vdmUoY29tcGxldGlvbkhhbmRsZXIpLCBXVEZNb3ZlKG5ld1JlcXVlc3QpKTsKIH0KIApAQCAt
MzUxLDcgKzM2Miw3IEBAIHZvaWQgU3VicmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25z
ZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgQ29tCiAgICAgaWYgKHJlc3BvbnNl
LnNvdXJjZSgpID09IFJlc291cmNlUmVzcG9uc2U6OlNvdXJjZTo6U2VydmljZVdvcmtlciAmJiBy
ZXNwb25zZS51cmwoKSAhPSByZXF1ZXN0KCkudXJsKCkpIHsKICAgICAgICAgYXV0byYgbG9hZGVy
ID0gbV9kb2N1bWVudExvYWRlci0+Y2FjaGVkUmVzb3VyY2VMb2FkZXIoKTsKICAgICAgICAgaWYg
KCFsb2FkZXIuYWxsb3dlZEJ5Q29udGVudFNlY3VyaXR5UG9saWN5KG1fcmVzb3VyY2UtPnR5cGUo
KSwgcmVzcG9uc2UudXJsKCksIG9wdGlvbnMoKSwgQ29udGVudFNlY3VyaXR5UG9saWN5OjpSZWRp
cmVjdFJlc3BvbnNlUmVjZWl2ZWQ6OlllcykpIHsKLSAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lG
X0FMTE9XRUQoImRpZFJlY2VpdmVSZXNwb25zZTogY2FuY2VsaW5nIGxvYWQgYmVjYXVzZSBub3Qg
YWxsb3dlZCBieSBjb250ZW50IHBvbGljeSAoZnJhbWUgPSAlcCwgZnJhbWVMb2FkZXIgPSAlcCwg
cmVzb3VyY2VJRCA9ICVsdSkiLCBmcmFtZSgpLCBmcmFtZUxvYWRlcigpLCBpZGVudGlmaWVyKCkp
OworICAgICAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiZGlkUmVjZWl2ZVJlc3BvbnNl
OiBjYW5jZWxpbmcgbG9hZCBiZWNhdXNlIG5vdCBhbGxvd2VkIGJ5IGNvbnRlbnQgcG9saWN5Iik7
CiAgICAgICAgICAgICBjYW5jZWwoUmVzb3VyY2VFcnJvcih7IH0sIDAsIHJlc3BvbnNlLnVybCgp
LCB7IH0sIFJlc291cmNlRXJyb3I6OlR5cGU6OkdlbmVyYWwpKTsKICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgfQpAQCAtMzU5LDcgKzM3MCw3IEBAIHZvaWQgU3VicmVzb3VyY2VMb2FkZXI6
OmRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgQ29t
CiAjZW5kaWYKIAogICAgIGlmIChhdXRvIGVycm9yID0gdmFsaWRhdGVSYW5nZVJlcXVlc3RlZEZs
YWcocmVxdWVzdCgpLCByZXNwb25zZSkpIHsKLSAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dF
RCgiZGlkUmVjZWl2ZVJlc3BvbnNlOiBjYW5jZWxpbmcgbG9hZCBiZWNhdXNlIHJlY2VpdmluZyBh
IHJhbmdlIHJlcXVlc3RlZCByZXNwb25zZSBmb3IgYSBub24tcmFuZ2UgcmVxdWVzdCAoZnJhbWUg
PSAlcCwgZnJhbWVMb2FkZXIgPSAlcCwgcmVzb3VyY2VJRCA9ICVsdSkiLCBmcmFtZSgpLCBmcmFt
ZUxvYWRlcigpLCBpZGVudGlmaWVyKCkpOworICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VE
KCJkaWRSZWNlaXZlUmVzcG9uc2U6IGNhbmNlbGluZyBsb2FkIGJlY2F1c2UgcmVjZWl2aW5nIGEg
cmFuZ2UgcmVxdWVzdGVkIHJlc3BvbnNlIGZvciBhIG5vbi1yYW5nZSByZXF1ZXN0Iik7CiAgICAg
ICAgIGNhbmNlbChXVEZNb3ZlKCplcnJvcikpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAt
NDAyLDcgKzQxMyw3IEBAIHZvaWQgU3VicmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25z
ZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgQ29tCiAgICAgaWYgKCFjaGVja1Jl
c3BvbnNlQ3Jvc3NPcmlnaW5BY2Nlc3NDb250cm9sKHJlc3BvbnNlLCBlcnJvckRlc2NyaXB0aW9u
KSkgewogICAgICAgICBpZiAobV9mcmFtZSAmJiBtX2ZyYW1lLT5kb2N1bWVudCgpKQogICAgICAg
ICAgICAgbV9mcmFtZS0+ZG9jdW1lbnQoKS0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJj
ZTo6U2VjdXJpdHksIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIGVycm9yRGVzY3JpcHRpb24pOwotICAg
ICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJkaWRSZWNlaXZlUmVzcG9uc2U6IGNhbmNlbGlu
ZyBsb2FkIGJlY2F1c2Ugb2YgY3Jvc3Mgb3JpZ2luIGFjY2VzcyBjb250cm9sIChmcmFtZSA9ICVw
LCBmcmFtZUxvYWRlciA9ICVwLCByZXNvdXJjZUlEID0gJWx1KSIsIGZyYW1lKCksIGZyYW1lTG9h
ZGVyKCksIGlkZW50aWZpZXIoKSk7CisgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImRp
ZFJlY2VpdmVSZXNwb25zZTogY2FuY2VsaW5nIGxvYWQgYmVjYXVzZSBvZiBjcm9zcyBvcmlnaW4g
YWNjZXNzIGNvbnRyb2wiKTsKICAgICAgICAgY2FuY2VsKFJlc291cmNlRXJyb3IoU3RyaW5nKCks
IDAsIHJlcXVlc3QoKS51cmwoKSwgZXJyb3JEZXNjcmlwdGlvbiwgUmVzb3VyY2VFcnJvcjo6VHlw
ZTo6QWNjZXNzQ29udHJvbCkpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtNDQyLDcgKzQ1
Myw3IEBAIHZvaWQgU3VicmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25zZShjb25zdCBS
ZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgQ29tCiAgICAgICAgICAgICAvLyBXZSBkb24ndCBj
b3VudCBtdWx0aVBhcnRzIGluIGEgQ2FjaGVkUmVzb3VyY2VMb2FkZXIncyByZXF1ZXN0IGNvdW50
CiAgICAgICAgICAgICBtX3JlcXVlc3RDb3VudFRyYWNrZXIgPSBXVEY6Om51bGxvcHQ7CiAgICAg
ICAgICAgICBpZiAoIW1fcmVzb3VyY2UtPmlzSW1hZ2UoKSkgewotICAgICAgICAgICAgICAgIFJF
TEVBU0VfTE9HX0lGX0FMTE9XRUQoImRpZFJlY2VpdmVSZXNwb25zZTogY2FuY2VsaW5nIGxvYWQg
YmVjYXVzZSBzb21ldGhpbmcgYWJvdXQgYSBtdWx0aS1wYXJ0IG5vbi1pbWFnZSAoZnJhbWUgPSAl
cCwgZnJhbWVMb2FkZXIgPSAlcCwgcmVzb3VyY2VJRCA9ICVsdSkiLCBmcmFtZSgpLCBmcmFtZUxv
YWRlcigpLCBpZGVudGlmaWVyKCkpOworICAgICAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FM
TE9XRUQoImRpZFJlY2VpdmVSZXNwb25zZTogY2FuY2VsaW5nIGxvYWQgYmVjYXVzZSBzb21ldGhp
bmcgYWJvdXQgYSBtdWx0aS1wYXJ0IG5vbi1pbWFnZSIpOwogICAgICAgICAgICAgICAgIGNhbmNl
bCgpOwogICAgICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgICAgIH0KQEAgLTY2MSw3ICs2
NzIsNyBAQCB2b2lkIFN1YnJlc291cmNlTG9hZGVyOjp1cGRhdGVSZWZlcnJlclBvbGljeShjb25z
dCBTdHJpbmcmIHJlZmVycmVyUG9saWN5VmFsdWUpCiAKIHZvaWQgU3VicmVzb3VyY2VMb2FkZXI6
OmRpZEZpbmlzaExvYWRpbmcoY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBuZXR3b3JrTG9hZE1l
dHJpY3MpCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiZGlkRmluaXNoTG9hZGluZzog
KGZyYW1lID0gJXAsIGZyYW1lTG9hZGVyID0gJXAsIHJlc291cmNlSUQgPSAlbHUpIiwgZnJhbWUo
KSwgZnJhbWVMb2FkZXIoKSwgaWRlbnRpZmllcigpKTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExP
V0VEKCJkaWRGaW5pc2hMb2FkaW5nOiIpOwogCiAjaWYgVVNFKFFVSUNLX0xPT0spCiAgICAgaWYg
KGF1dG8gcHJldmlld0xvYWRlciA9IG1fcHJldmlld0xvYWRlci5nZXQoKSkgewpAQCAtNzA3LDcg
KzcxOCw3IEBAIHZvaWQgU3VicmVzb3VyY2VMb2FkZXI6OmRpZEZpbmlzaExvYWRpbmcoY29uc3Qg
TmV0d29ya0xvYWRNZXRyaWNzJiBuZXR3b3JrTG9hZE1lCiAgICAgbV9yZXNvdXJjZS0+ZmluaXNo
TG9hZGluZyhyZXNvdXJjZURhdGEoKSk7CiAKICAgICBpZiAod2FzQ2FuY2VsbGVkKCkpIHsKLSAg
ICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiZGlkRmluaXNoTG9hZGluZzogd2FzIGNhbmNl
bGVkIChmcmFtZSA9ICVwLCBmcmFtZUxvYWRlciA9ICVwLCByZXNvdXJjZUlEID0gJWx1KSIsIGZy
YW1lKCksIGZyYW1lTG9hZGVyKCksIGlkZW50aWZpZXIoKSk7CisgICAgICAgIFJFTEVBU0VfTE9H
X0lGX0FMTE9XRUQoImRpZEZpbmlzaExvYWRpbmc6IHdhcyBjYW5jZWxlZCIpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCkBAIC03MTcsNyArNzI4LDcgQEAgdm9pZCBTdWJyZXNvdXJjZUxvYWRl
cjo6ZGlkRmluaXNoTG9hZGluZyhjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG5ldHdvcmtMb2Fk
TWUKICAgICBub3RpZnlEb25lKExvYWRDb21wbGV0aW9uVHlwZTo6RmluaXNoKTsKIAogICAgIGlm
IChyZWFjaGVkVGVybWluYWxTdGF0ZSgpKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9X
RUQoImRpZEZpbmlzaExvYWRpbmc6IHJlYWNoZWQgdGVybWluYWwgc3RhdGUgKGZyYW1lID0gJXAs
IGZyYW1lTG9hZGVyID0gJXAsIHJlc291cmNlSUQgPSAlbHUpIiwgZnJhbWUoKSwgZnJhbWVMb2Fk
ZXIoKSwgaWRlbnRpZmllcigpKTsKKyAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiZGlk
RmluaXNoTG9hZGluZzogcmVhY2hlZCB0ZXJtaW5hbCBzdGF0ZSIpOwogICAgICAgICByZXR1cm47
CiAgICAgfQogICAgIHJlbGVhc2VSZXNvdXJjZXMoKTsKQEAgLTcyNSw3ICs3MzYsNyBAQCB2b2lk
IFN1YnJlc291cmNlTG9hZGVyOjpkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IE5ldHdvcmtMb2FkTWV0
cmljcyYgbmV0d29ya0xvYWRNZQogCiB2b2lkIFN1YnJlc291cmNlTG9hZGVyOjpkaWRGYWlsKGNv
bnN0IFJlc291cmNlRXJyb3ImIGVycm9yKQogewotICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQo
ImRpZEZhaWw6IChmcmFtZSA9ICVwLCBmcmFtZUxvYWRlciA9ICVwLCByZXNvdXJjZUlEID0gJWx1
LCB0eXBlID0gJWQsIGNvZGUgPSAlZCkiLCBmcmFtZSgpLCBmcmFtZUxvYWRlcigpLCBpZGVudGlm
aWVyKCksIHN0YXRpY19jYXN0PGludD4oZXJyb3IudHlwZSgpKSwgZXJyb3IuZXJyb3JDb2RlKCkp
OworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImRpZEZhaWw6ICh0eXBlID0gJWQsIGNvZGUg
PSAlZCkiLCBzdGF0aWNfY2FzdDxpbnQ+KGVycm9yLnR5cGUoKSksIGVycm9yLmVycm9yQ29kZSgp
KTsKIAogI2lmIFVTRShRVUlDS19MT09LKQogICAgIGlmIChhdXRvIHByZXZpZXdMb2FkZXIgPSBt
X3ByZXZpZXdMb2FkZXIuZ2V0KCkpCkBAIC03NjMsNyArNzc0LDcgQEAgdm9pZCBTdWJyZXNvdXJj
ZUxvYWRlcjo6ZGlkRmFpbChjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKIAogdm9pZCBTdWJy
ZXNvdXJjZUxvYWRlcjo6d2lsbENhbmNlbChjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKIHsK
LSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJ3aWxsQ2FuY2VsOiAoZnJhbWUgPSAlcCwgZnJh
bWVMb2FkZXIgPSAlcCwgcmVzb3VyY2VJRCA9ICVsdSwgdHlwZSA9ICVkLCBjb2RlID0gJWQpIiwg
ZnJhbWUoKSwgZnJhbWVMb2FkZXIoKSwgaWRlbnRpZmllcigpLCBzdGF0aWNfY2FzdDxpbnQ+KGVy
cm9yLnR5cGUoKSksIGVycm9yLmVycm9yQ29kZSgpKTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExP
V0VEKCJ3aWxsQ2FuY2VsOiAodHlwZSA9ICVkLCBjb2RlID0gJWQpIiwgc3RhdGljX2Nhc3Q8aW50
PihlcnJvci50eXBlKCkpLCBlcnJvci5lcnJvckNvZGUoKSk7CiAKICNpZiBQTEFURk9STShJT1Nf
RkFNSUxZKQogICAgIC8vIFNpbmNlIHdlIGRlZmVyIGluaXRpYWxpemF0aW9uIHRvIHNjaGVkdWxp
bmcgdGltZSBvbiBpT1MgYnV0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0Nh
Y2hlZFJhd1Jlc291cmNlLmNwcAppbmRleCBlN2RjNjMzOTFlZTkyOTVkMGRkNTM0MmJjOTEzOWM4
OWMyYzNhZmRjLi4wMGE3ZjIzZDU2NTFhMDRmZjVkYWUwOTEwN2ZiNzYwMzYyNzQwMjdhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHAK
QEAgLTMwLDEyICszMCwxNSBAQAogI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlQ2xpZW50V2Fsa2Vy
LmgiCiAjaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2VMb2FkZXIuaCIKICNpbmNsdWRlICJIVFRQSGVh
ZGVyTmFtZXMuaCIKKyNpbmNsdWRlICJMb2dnaW5nLmgiCiAjaW5jbHVkZSAiU2hhcmVkQnVmZmVy
LmgiCiAjaW5jbHVkZSAiU3VicmVzb3VyY2VMb2FkZXIuaCIKICNpbmNsdWRlIDx3dGYvQ29tcGxl
dGlvbkhhbmRsZXIuaD4KICNpbmNsdWRlIDx3dGYvU2V0Rm9yU2NvcGUuaD4KICNpbmNsdWRlIDx3
dGYvdGV4dC9TdHJpbmdWaWV3Lmg+CiAKKyNkZWZpbmUgUkVMRUFTRV9MT0dfQUxXQVlTKGZtdCwg
Li4uKSBSRUxFQVNFX0xPRyhOZXR3b3JrLCAiJXAgLSBDYWNoZWRSYXdSZXNvdXJjZTo6IiBmbXQs
IHRoaXMsICMjX19WQV9BUkdTX18pCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogQ2FjaGVkUmF3
UmVzb3VyY2U6OkNhY2hlZFJhd1Jlc291cmNlKENhY2hlZFJlc291cmNlUmVxdWVzdCYmIHJlcXVl
c3QsIFR5cGUgdHlwZSwgY29uc3QgUEFMOjpTZXNzaW9uSUQmIHNlc3Npb25JRCwgY29uc3QgQ29v
a2llSmFyKiBjb29raWVKYXIpCkBAIC0yMDQsNiArMjA3LDcgQEAgc3RhdGljIHZvaWQgaXRlcmF0
ZUNsaWVudHMoQ2FjaGVkUmVzb3VyY2VDbGllbnRXYWxrZXI8Q2FjaGVkUmF3UmVzb3VyY2VDbGll
bnQ+JiYKIAogdm9pZCBDYWNoZWRSYXdSZXNvdXJjZTo6cmVkaXJlY3RSZWNlaXZlZChSZXNvdXJj
ZVJlcXVlc3QmJiByZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSwgQ29t
cGxldGlvbkhhbmRsZXI8dm9pZChSZXNvdXJjZVJlcXVlc3QmJik+JiYgY29tcGxldGlvbkhhbmRs
ZXIpCiB7CisgICAgUkVMRUFTRV9MT0dfQUxXQVlTKCJyZWRpcmVjdFJlY2VpdmVkOiIpOwogICAg
IGlmIChyZXNwb25zZS5pc051bGwoKSkKICAgICAgICAgQ2FjaGVkUmVzb3VyY2U6OnJlZGlyZWN0
UmVjZWl2ZWQoV1RGTW92ZShyZXF1ZXN0KSwgcmVzcG9uc2UsIFdURk1vdmUoY29tcGxldGlvbkhh
bmRsZXIpKTsKICAgICBlbHNlIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9j
YWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2Fj
aGVkUmVzb3VyY2UuY3BwCmluZGV4IDVkZTcwODNhZGI1MzRiNWU4ZDJiYzQ0M2Y3NTUwYTJiOGMz
OGZhOTkuLjZmMTU3YTAxMDBjOWIxNWQ5NDdlOTg2MTg3NmI2NDMzMTI3MDM1MmMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZS5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcApAQCAtNjEsNyAr
NjEsMTAgQEAKICNpbmNsdWRlICJRdWlja0xvb2suaCIKICNlbmRpZgogCisjdW5kZWYgUkVMRUFT
RV9MT0dfSUZfQUxMT1dFRAorI3VuZGVmIFJFTEVBU0VfTE9HX0FMV0FZUwogI2RlZmluZSBSRUxF
QVNFX0xPR19JRl9BTExPV0VEKGZtdCwgLi4uKSBSRUxFQVNFX0xPR19JRihjYWNoZWRSZXNvdXJj
ZUxvYWRlci5pc0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKSwgTmV0d29yaywgIiVwIC0gQ2FjaGVk
UmVzb3VyY2U6OiIgZm10LCB0aGlzLCAjI19fVkFfQVJHU19fKQorI2RlZmluZSBSRUxFQVNFX0xP
R19BTFdBWVMoZm10LCAuLi4pIFJFTEVBU0VfTE9HKE5ldHdvcmssICIlcCAtIENhY2hlZFJlc291
cmNlOjoiIGZtdCwgdGhpcywgIyNfX1ZBX0FSR1NfXykKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CkBAIC00ODUsMTEgKzQ4OCwxMiBAQCBTZWNvbmRzIENhY2hlZFJlc291cmNlOjpmcmVzaG5lc3NM
aWZldGltZShjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25zZSkgY29ucwogCiB2b2lkIENh
Y2hlZFJlc291cmNlOjpyZWRpcmVjdFJlY2VpdmVkKFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3Qs
IGNvbnN0IFJlc291cmNlUmVzcG9uc2UmIHJlc3BvbnNlLCBDb21wbGV0aW9uSGFuZGxlcjx2b2lk
KFJlc291cmNlUmVxdWVzdCYmKT4mJiBjb21wbGV0aW9uSGFuZGxlcikKIHsKKyAgICBSRUxFQVNF
X0xPR19BTFdBWVMoInJlZGlyZWN0UmVjZWl2ZWQ6Iik7CisKICAgICBtX3JlcXVlc3RlZEZyb21O
ZXR3b3JraW5nTGF5ZXIgPSB0cnVlOwotICAgIGlmIChyZXNwb25zZS5pc051bGwoKSkKLSAgICAg
ICAgcmV0dXJuIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUocmVxdWVzdCkpOworICAgIGlmICgh
cmVzcG9uc2UuaXNOdWxsKCkpCisgICAgICAgIHVwZGF0ZVJlZGlyZWN0Q2hhaW5TdGF0dXMobV9y
ZWRpcmVjdENoYWluQ2FjaGVTdGF0dXMsIHJlc3BvbnNlKTsKIAotICAgIHVwZGF0ZVJlZGlyZWN0
Q2hhaW5TdGF0dXMobV9yZWRpcmVjdENoYWluQ2FjaGVTdGF0dXMsIHJlc3BvbnNlKTsKICAgICBj
b21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHJlcXVlc3QpKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggM2Yy
ZjcyN2Q5ZDlmZWJiMmFjZTk5MTI4YmFlM2VhNTk2ZWNhYTk3NC4uZjE2MmM4NTEwYzRhMmI0ZmY3
NDExNmM1NjQzZDk4NjY3ODNiYzNkMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVy
L2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2Fk
ZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC01NDAsNyArNTQwLDggQEAgYm9v
bCBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6Y2FuUmVxdWVzdEFmdGVyUmVkaXJlY3Rpb24oQ2FjaGVk
UmVzb3VyY2U6OlR5cGUgdHlwZSwKIHsKICAgICBpZiAoZG9jdW1lbnQoKSAmJiAhZG9jdW1lbnQo
KS0+c2VjdXJpdHlPcmlnaW4oKS5jYW5EaXNwbGF5KHVybCkpIHsKICAgICAgICAgRnJhbWVMb2Fk
ZXI6OnJlcG9ydExvY2FsTG9hZEZhaWxlZChmcmFtZSgpLCB1cmwuc3RyaW5nQ2VudGVyRWxsaXBz
aXplZFRvTGVuZ3RoKCkpOwotICAgICAgICBMT0coUmVzb3VyY2VMb2FkaW5nLCAiQ2FjaGVkUmVz
b3VyY2VMb2FkZXI6OnJlcXVlc3RSZXNvdXJjZSBVUkwgd2FzIG5vdCBhbGxvd2VkIGJ5IFNlY3Vy
aXR5T3JpZ2luOjpjYW5EaXNwbGF5Iik7CisgICAgICAgIExPRyhSZXNvdXJjZUxvYWRpbmcsICJD
YWNoZWRSZXNvdXJjZUxvYWRlcjo6Y2FuUmVxdWVzdEFmdGVyUmVkaXJlY3Rpb24gVVJMIHdhcyBu
b3QgYWxsb3dlZCBieSBTZWN1cml0eU9yaWdpbjo6Y2FuRGlzcGxheSIpOworICAgICAgICBSRUxF
QVNFX0xPR19JRl9BTExPV0VEKCJjYW5SZXF1ZXN0QWZ0ZXJSZWRpcmVjdGlvbjogVVJMIHdhcyBu
b3QgYWxsb3dlZCBieSBTZWN1cml0eU9yaWdpbjo6Y2FuRGlzcGxheSIpOwogICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgfQogCkBAIC01NDgsMTcgKzU0OSwyMiBAQCBib29sIENhY2hlZFJlc291
cmNlTG9hZGVyOjpjYW5SZXF1ZXN0QWZ0ZXJSZWRpcmVjdGlvbihDYWNoZWRSZXNvdXJjZTo6VHlw
ZSB0eXBlLAogICAgIC8vIEJ1dCB3ZSBjdXJyZW50bHkgYWxsb3cgYXQgbGVhc3QgZGF0YSBVUkxz
IHRvIGJlIGxvYWRlZC4KIAogICAgIGlmIChvcHRpb25zLm1vZGUgPT0gRmV0Y2hPcHRpb25zOjpN
b2RlOjpTYW1lT3JpZ2luICYmICFtX2RvY3VtZW50LT5zZWN1cml0eU9yaWdpbigpLmNhblJlcXVl
c3QodXJsKSkgeworICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJjYW5SZXF1ZXN0QWZ0
ZXJSZWRpcmVjdGlvbjogVVJMIHdhcyBub3QgYWxsb3dlZCBieSBTZWN1cml0eU9yaWdpbjo6Y2Fu
UmVxdWVzdCIpOwogICAgICAgICBwcmludEFjY2Vzc0RlbmllZE1lc3NhZ2UodXJsKTsKICAgICAg
ICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIAotICAgIGlmICghYWxsb3dlZEJ5Q29udGVudFNlY3Vy
aXR5UG9saWN5KHR5cGUsIHVybCwgb3B0aW9ucywgQ29udGVudFNlY3VyaXR5UG9saWN5OjpSZWRp
cmVjdFJlc3BvbnNlUmVjZWl2ZWQ6OlllcykpCisgICAgaWYgKCFhbGxvd2VkQnlDb250ZW50U2Vj
dXJpdHlQb2xpY3kodHlwZSwgdXJsLCBvcHRpb25zLCBDb250ZW50U2VjdXJpdHlQb2xpY3k6OlJl
ZGlyZWN0UmVzcG9uc2VSZWNlaXZlZDo6WWVzKSkgeworICAgICAgICBSRUxFQVNFX0xPR19JRl9B
TExPV0VEKCJjYW5SZXF1ZXN0QWZ0ZXJSZWRpcmVjdGlvbjogVVJMIHdhcyBub3QgYWxsb3dlZCBi
eSBjb250ZW50IHBvbGljeSIpOwogICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfQogCiAgICAg
Ly8gTGFzdCBvZiBhbGwsIGNoZWNrIGZvciBpbnNlY3VyZSBjb250ZW50LiBXZSBkbyB0aGlzIGxh
c3Qgc28gdGhhdCB3aGVuIGZvbGtzIGJsb2NrIGluc2VjdXJlIGNvbnRlbnQgd2l0aCBhIENTUCBw
b2xpY3ksIHRoZXkgZG9uJ3QgZ2V0IGEgd2FybmluZy4KICAgICAvLyBUaGV5J2xsIHN0aWxsIGdl
dCBhIHdhcm5pbmcgaW4gdGhlIGNvbnNvbGUgYWJvdXQgQ1NQIGJsb2NraW5nIHRoZSBsb2FkLgot
ICAgIGlmICghY2hlY2tJbnNlY3VyZUNvbnRlbnQodHlwZSwgdXJsKSkKKyAgICBpZiAoIWNoZWNr
SW5zZWN1cmVDb250ZW50KHR5cGUsIHVybCkpIHsKKyAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxM
T1dFRCgiY2FuUmVxdWVzdEFmdGVyUmVkaXJlY3Rpb246IFVSTCB3YXMgbm90IGFsbG93ZWQgYmVj
YXVzZSBjb250ZW50IGlzIGluc2VjdXJlIik7CiAgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9
CiAKICAgICByZXR1cm4gdHJ1ZTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9XZWJLaXQvV2ViUHJv
Y2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcAppbmRleCAwOWQ3OTg3MWY1YjZmMzg3
ZDRmNWZiNjU1MWVmOWEwNDY3YzQ2M2I4Li5lYmQ4NTZmNmIyM2EwMzU0NTQ0NGRhNzM5ZDQyODE3
ZGI2YWU4NTQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9X
ZWJSZXNvdXJjZUxvYWRlci5jcHAKKysrIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL05ldHdv
cmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwCkBAIC0xMTQsNiArMTE0LDcgQEAgdm9pZCBXZWJSZXNv
dXJjZUxvYWRlcjo6d2lsbFNlbmRSZXF1ZXN0KFJlc291cmNlUmVxdWVzdCYmIHByb3Bvc2VkUmVx
dWVzdCwgSVBDOjoKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgfQogCisgICAgICAgIFJF
TEVBU0VfTE9HX0lGX0FMTE9XRUQoIndpbGxTZW5kUmVxdWVzdDogcmV0dXJuaW5nIENvbnRpbnVl
V2lsbFNlbmRSZXF1ZXN0Iik7CiAgICAgICAgIHNlbmQoTWVzc2FnZXM6Ok5ldHdvcmtSZXNvdXJj
ZUxvYWRlcjo6Q29udGludWVXaWxsU2VuZFJlcXVlc3QocmVxdWVzdCwgbV9jb3JlTG9hZGVyLT5p
c0FsbG93ZWRUb0Fza1VzZXJGb3JDcmVkZW50aWFscygpKSk7CiAgICAgfSk7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2Fk
ZXJDbGllbnQuY3BwIGIvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dlYkNvcmVTdXBwb3J0L1dl
YkZyYW1lTG9hZGVyQ2xpZW50LmNwcAppbmRleCA5OGIxNWI4N2ZjMTNkYTJkYmY0NDNiYTk4YTRk
ODZkN2E5ZDM1NDE5Li40ZjU5YzI4ZDdiYzAxN2E1NTExODFkMGFiODQxMDZiNTczMDEzZDczIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJh
bWVMb2FkZXJDbGllbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJLaXQvV2ViUHJvY2Vzcy9XZWJDb3Jl
U3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKQEAgLTgwOCwxMSArODA4LDEzIEBAIHZv
aWQgV2ViRnJhbWVMb2FkZXJDbGllbnQ6OmRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yUmVzcG9uc2Uo
Y29uc3QgUmVzb3VyY2VSZXNwb25zCiB7CiAgICAgV2ViUGFnZSogd2ViUGFnZSA9IG1fZnJhbWUg
PyBtX2ZyYW1lLT5wYWdlKCkgOiBudWxscHRyOwogICAgIGlmICghd2ViUGFnZSkgeworICAgICAg
ICBXRUJGUkFNRUxPQURFUkNMSUVOVF9SRUxFQVNFX0xPRyhOZXR3b3JrLCAiZGlzcGF0Y2hEZWNp
ZGVQb2xpY3lGb3JSZXNwb25zZTogaWdub3JpbmcgYmVjYXVzZSB0aGVyZSdzIG5vIHdlYiBwYWdl
Iik7CiAgICAgICAgIGZ1bmN0aW9uKFBvbGljeUFjdGlvbjo6SWdub3JlLCBpZGVudGlmaWVyKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIGlmICghcmVxdWVzdC51cmwoKS5zdHJpbmco
KSkgeworICAgICAgICBXRUJGUkFNRUxPQURFUkNMSUVOVF9SRUxFQVNFX0xPRyhOZXR3b3JrLCAi
ZGlzcGF0Y2hEZWNpZGVQb2xpY3lGb3JSZXNwb25zZTogY29udGludWluZyBiZWNhdXNlIHRoZSB1
cmwgc3RyaW5nIGlzIGVtcHR5Iik7CiAgICAgICAgIGZ1bmN0aW9uKFBvbGljeUFjdGlvbjo6VXNl
LCBpZGVudGlmaWVyKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTgyMiw2ICs4MjQsNyBA
QCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvclJlc3Bv
bnNlKGNvbnN0IFJlc291cmNlUmVzcG9ucwogICAgIC8vIE5vdGlmeSB0aGUgYnVuZGxlIGNsaWVu
dC4KICAgICBXS0J1bmRsZVBhZ2VQb2xpY3lBY3Rpb24gcG9saWN5ID0gd2ViUGFnZS0+aW5qZWN0
ZWRCdW5kbGVQb2xpY3lDbGllbnQoKS5kZWNpZGVQb2xpY3lGb3JSZXNwb25zZSh3ZWJQYWdlLCBt
X2ZyYW1lLCByZXNwb25zZSwgcmVxdWVzdCwgdXNlckRhdGEpOwogICAgIGlmIChwb2xpY3kgPT0g
V0tCdW5kbGVQYWdlUG9saWN5QWN0aW9uVXNlKSB7CisgICAgICAgIFdFQkZSQU1FTE9BREVSQ0xJ
RU5UX1JFTEVBU0VfTE9HKE5ldHdvcmssICJkaXNwYXRjaERlY2lkZVBvbGljeUZvclJlc3BvbnNl
OiBjb250aW51aW5nIGJlY2F1c2UgaW5qZWN0ZWQgYnVuZGxlIHNheXMgc28iKTsKICAgICAgICAg
ZnVuY3Rpb24oUG9saWN5QWN0aW9uOjpVc2UsIGlkZW50aWZpZXIpOwogICAgICAgICByZXR1cm47
CiAgICAgfQpAQCAtODM1LDggKzgzOCwxMCBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojpk
aXNwYXRjaERlY2lkZVBvbGljeUZvclJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9ucwogICAg
IFJlZjxXZWJGcmFtZT4gcHJvdGVjdG9yKCptX2ZyYW1lKTsKICAgICB1aW50NjRfdCBsaXN0ZW5l
cklEID0gbV9mcmFtZS0+c2V0VXBQb2xpY3lMaXN0ZW5lcihpZGVudGlmaWVyLCBXVEZNb3ZlKGZ1
bmN0aW9uKSwgV2ViRnJhbWU6OkZvck5hdmlnYXRpb25BY3Rpb246Ok5vKTsKICAgICBpZiAoIXdl
YlBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94eTo6RGVjaWRlUG9saWN5Rm9yUmVzcG9u
c2UobV9mcmFtZS0+ZnJhbWVJRCgpLCBTZWN1cml0eU9yaWdpbkRhdGE6OmZyb21GcmFtZShjb3Jl
RnJhbWUpLCBpZGVudGlmaWVyLCBuYXZpZ2F0aW9uSUQsIHJlc3BvbnNlLCByZXF1ZXN0LAotICAg
ICAgICBjYW5TaG93UmVzcG9uc2UsIGRvd25sb2FkQXR0cmlidXRlLCBsaXN0ZW5lcklELCBVc2Vy
RGF0YShXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS50cmFuc2Zvcm1PYmplY3RzVG9IYW5kbGVzKHVz
ZXJEYXRhLmdldCgpKS5nZXQoKSkpKSkKKyAgICAgICAgY2FuU2hvd1Jlc3BvbnNlLCBkb3dubG9h
ZEF0dHJpYnV0ZSwgbGlzdGVuZXJJRCwgVXNlckRhdGEoV2ViUHJvY2Vzczo6c2luZ2xldG9uKCku
dHJhbnNmb3JtT2JqZWN0c1RvSGFuZGxlcyh1c2VyRGF0YS5nZXQoKSkuZ2V0KCkpKSkpIHsKKyAg
ICAgICAgV0VCRlJBTUVMT0FERVJDTElFTlRfUkVMRUFTRV9MT0coTmV0d29yaywgImRpc3BhdGNo
RGVjaWRlUG9saWN5Rm9yUmVzcG9uc2U6IGlnbm9yaW5nIGJlY2F1c2UgV2ViUGFnZVByb3h5OjpE
ZWNpZGVQb2xpY3lGb3JSZXNwb25zZSBmYWlsZWQiKTsKICAgICAgICAgbV9mcmFtZS0+ZGlkUmVj
ZWl2ZVBvbGljeURlY2lzaW9uKGxpc3RlbmVySUQsIFBvbGljeURlY2lzaW9uIHsgaWRlbnRpZmll
ciwgTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW46Ok5vLCBQb2xpY3lBY3Rpb246Oklnbm9yZSwg
MCwgeyB9LCB7IH0gfSk7CisgICAgfQogfQogCiB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50Ojpk
aXNwYXRjaERlY2lkZVBvbGljeUZvck5ld1dpbmRvd0FjdGlvbihjb25zdCBOYXZpZ2F0aW9uQWN0
aW9uJiBuYXZpZ2F0aW9uQWN0aW9uLCBjb25zdCBSZXNvdXJjZVJlcXVlc3QmIHJlcXVlc3QsCg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>391763</attachid>
            <date>2020-02-26 11:52:10 -0800</date>
            <delta_ts>2020-02-26 13:13:01 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-207916-20200226115210.patch</filename>
            <type>text/plain</type>
            <size>40378</size>
            <attacher name="Keith Rollin">krollin</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU3NDc4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTdkMGU3NzhhYzAwM2Rm
OGYyOTJmODVkNDk1NWRhZTViZmY4YTFhYi4uMzZiNjVjZDBmNTJmOWQ5ZmRkOWE1NzFiMDE2NGYw
OTMyOWVlZGNjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ1IEBACisyMDIwLTAyLTI2ICBLZWl0
aCBSb2xsaW4gIDxrcm9sbGluQGFwcGxlLmNvbT4KKworICAgICAgICBBZGQgbG9nZ2luZyB0byBo
ZWxwIGRpYWdub3NlIHJlZGlyZWN0IGlzc3VlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0yMDc5MTYKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzU5NTY3
ODc1PgorCisgICAgICAgIFJldmlld2VkIGJ5IENocmlzIER1bWV6LgorCisgICAgICAgIFdlJ3Jl
IHNlZWluZyBhbiBpc3N1ZSB3aGVyZSBjb21tdW5pY2F0aW9uIGJldHdlZW4gdGhlIFdlYkNvbnRl
bnQKKyAgICAgICAgcHJvY2VzcyBhbmQgdGhlIE5ldHdvcmsgcHJvY2VzcyBzZWVtcyB0byBjb21l
IHRvIGEgc3RvcCBiZXR3ZWVuCisgICAgICAgIE5ldHdvcmtSZXNvdXJjZUxvYWRlcjo6Y29udGlu
dWVXaWxsU2VuZFJlZGlyZWN0ZWRSZXF1ZXN0IGFuZAorICAgICAgICBOZXR3b3JrUmVzb3VyY2VM
b2FkZXI6OmNvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0LiBXZSBkbyBzZWUgYQorICAgICAgICBXZWJS
ZXNvdXJjZUxvYWRlcjo6d2lsbFNlbmRSZXF1ZXN0IGxvZyBsaW5lIGJldHdlZW4gdGhvc2UgdHdv
CisgICAgICAgIE5ldHdvcmtSZXNvdXJjZUxvYWRlciBsb2dnaW5nIGxpbmVzLCBidXQgbm90aGlu
ZyBlbHNlLiBBZGQgYSBidW5jaCBvZgorICAgICAgICBsb2dnaW5nIGluIHRoaXMgYXJlYSB0byBo
ZWxwIGRldGVybWluZSB3aGF0J3MgaGFwcGVuaW5nLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyAt
LSBubyBuZXcgb3IgY2hhbmdlZCBmdW5jdGlvbmFsaXR5LgorCisgICAgICAgICogbG9hZGVyL1Bv
bGljeUNoZWNrZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UG9saWN5Q2hlY2tlcjo6Y2hlY2tO
YXZpZ2F0aW9uUG9saWN5KToKKyAgICAgICAgKiBsb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VMb2FkZXI6OmxvYWREYXRhVVJMKToKKyAgICAgICAg
KFdlYkNvcmU6OlJlc291cmNlTG9hZGVyOjp3aWxsU2VuZFJlcXVlc3RJbnRlcm5hbCk6CisgICAg
ICAgIChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcjo6ZGlkRmluaXNoTG9hZGluZyk6CisgICAgICAg
IChXZWJDb3JlOjpSZXNvdXJjZUxvYWRlcjo6ZGlkRmFpbCk6CisgICAgICAgIChXZWJDb3JlOjpS
ZXNvdXJjZUxvYWRlcjo6d2lsbFNlbmRSZXF1ZXN0QXN5bmMpOgorICAgICAgICAoV2ViQ29yZTo6
UmVzb3VyY2VMb2FkZXI6Ondhc0Jsb2NrZWQpOgorICAgICAgICAoV2ViQ29yZTo6UmVzb3VyY2VM
b2FkZXI6OmNhbm5vdFNob3dVUkwpOgorICAgICAgICAqIGxvYWRlci9TdWJyZXNvdXJjZUxvYWRl
ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTdWJyZXNvdXJjZUxvYWRlcjo6aW5pdCk6CisgICAg
ICAgIChXZWJDb3JlOjpTdWJyZXNvdXJjZUxvYWRlcjo6d2lsbFNlbmRSZXF1ZXN0SW50ZXJuYWwp
OgorICAgICAgICAoV2ViQ29yZTo6U3VicmVzb3VyY2VMb2FkZXI6OmRpZFJlY2VpdmVSZXNwb25z
ZSk6CisgICAgICAgIChXZWJDb3JlOjpTdWJyZXNvdXJjZUxvYWRlcjo6ZGlkRmluaXNoTG9hZGlu
Zyk6CisgICAgICAgIChXZWJDb3JlOjpTdWJyZXNvdXJjZUxvYWRlcjo6ZGlkRmFpbCk6CisgICAg
ICAgIChXZWJDb3JlOjpTdWJyZXNvdXJjZUxvYWRlcjo6d2lsbENhbmNlbCk6CisgICAgICAgICog
bG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNh
Y2hlZFJhd1Jlc291cmNlOjpyZWRpcmVjdFJlY2VpdmVkKToKKyAgICAgICAgKiBsb2FkZXIvY2Fj
aGUvQ2FjaGVkUmVzb3VyY2UuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q2FjaGVkUmVzb3VyY2U6
OnJlZGlyZWN0UmVjZWl2ZWQpOgorICAgICAgICAqIGxvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJj
ZUxvYWRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDYWNoZWRSZXNvdXJjZUxvYWRlcjo6Y2Fu
UmVxdWVzdEFmdGVyUmVkaXJlY3Rpb24gY29uc3QpOgorCiAyMDIwLTAyLTI2ICBBZHJpYW4gUGVy
ZXogZGUgQ2FzdHJvICA8YXBlcmV6QGlnYWxpYS5jb20+CiAKICAgICAgICAgVW5yZXZpZXdlZCBi
dWlsZCBmaXggZm9yIG5vbi11bmlmaWVkIGJ1aWxkcyB3aXRoIGFzc2VydGlvbnMgZW5hYmxlZC4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvQ2hhbmdlTG9nIGIvU291cmNlL1dlYktpdC9DaGFu
Z2VMb2cKaW5kZXggYzY1OGUxNDhmZDdmOTkzNDhjNWM4MmM1NzgxNTQ5MDg0ZjY2Y2YxZS4uMTQ2
MjBhMDQ0Y2UzOGFkZmE2ZTc1ZTM1YTY5NGFiYzhjNjkyZTJkOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYktpdC9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYktpdC9DaGFuZ2VMb2cKQEAgLTEsMyAr
MSwyNCBAQAorMjAyMC0wMi0yNiAgS2VpdGggUm9sbGluICA8a3JvbGxpbkBhcHBsZS5jb20+CisK
KyAgICAgICAgQWRkIGxvZ2dpbmcgdG8gaGVscCBkaWFnbm9zZSByZWRpcmVjdCBpc3N1ZQorICAg
ICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA3OTE2CisgICAg
ICAgIDxyZGFyOi8vcHJvYmxlbS81OTU2Nzg3NT4KKworICAgICAgICBSZXZpZXdlZCBieSBDaHJp
cyBEdW1lei4KKworICAgICAgICBXZSdyZSBzZWVpbmcgYW4gaXNzdWUgd2hlcmUgY29tbXVuaWNh
dGlvbiBiZXR3ZWVuIHRoZSBXZWJDb250ZW50CisgICAgICAgIHByb2Nlc3MgYW5kIHRoZSBOZXR3
b3JrIHByb2Nlc3Mgc2VlbXMgdG8gY29tZSB0byBhIHN0b3AgYmV0d2VlbgorICAgICAgICBOZXR3
b3JrUmVzb3VyY2VMb2FkZXI6OmNvbnRpbnVlV2lsbFNlbmRSZWRpcmVjdGVkUmVxdWVzdCBhbmQK
KyAgICAgICAgTmV0d29ya1Jlc291cmNlTG9hZGVyOjpjb250aW51ZVdpbGxTZW5kUmVxdWVzdC4g
V2UgZG8gc2VlIGEKKyAgICAgICAgV2ViUmVzb3VyY2VMb2FkZXI6OndpbGxTZW5kUmVxdWVzdCBs
b2cgbGluZSBiZXR3ZWVuIHRob3NlIHR3bworICAgICAgICBOZXR3b3JrUmVzb3VyY2VMb2FkZXIg
bG9nZ2luZyBsaW5lcywgYnV0IG5vdGhpbmcgZWxzZS4gQWRkIGEgYnVuY2ggb2YKKyAgICAgICAg
bG9nZ2luZyBpbiB0aGlzIGFyZWEgdG8gaGVscCBkZXRlcm1pbmUgd2hhdCdzIGhhcHBlbmluZy4K
KworICAgICAgICAqIFdlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5jcHA6Cisg
ICAgICAgIChXZWJLaXQ6OldlYlJlc291cmNlTG9hZGVyOjp3aWxsU2VuZFJlcXVlc3QpOgorICAg
ICAgICAqIFdlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3Bw
OgorICAgICAgICAoV2ViS2l0OjpXZWJGcmFtZUxvYWRlckNsaWVudDo6ZGlzcGF0Y2hEZWNpZGVQ
b2xpY3lGb3JSZXNwb25zZSk6CisKIDIwMjAtMDItMjYgIFlvdWVubiBGYWJsZXQgIDx5b3Vlbm5A
YXBwbGUuY29tPgogCiAgICAgICAgIEdQVVByb2Nlc3Mgc2hvdWxkIGJlIG1hZGUgYXdhcmUgb2Yg
ZGV2aWNlIG9yaWVudGF0aW9uIGZvciBjb3JyZWN0IHZpZGVvIGNhcHR1cmUgZnJhbWUgcm90YXRp
b24gY29tcHV0YXRpb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Qb2xpY3lD
aGVja2VyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9Qb2xpY3lDaGVja2VyLmNwcAppbmRl
eCA3YTZiNTczMmU2OGI3YzIyYTY2MzhhNWI3NmQzNjNlMWY1YWY5NGY5Li5iZjA4Njg2ODhjNzc1
ODdlNWJhMjQ2MGVhOTFjMjA5NzljZmU2YWU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9s
b2FkZXIvUG9saWN5Q2hlY2tlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL1BvbGlj
eUNoZWNrZXIuY3BwCkBAIC01Myw2ICs1MywxMSBAQAogI2luY2x1ZGUgIlF1aWNrTG9vay5oIgog
I2VuZGlmCiAKKyNkZWZpbmUgSVNfQUxMT1dFRCAobV9mcmFtZS5wYWdlKCkgPyBtX2ZyYW1lLnBh
Z2UoKS0+c2Vzc2lvbklEKCkuaXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCkgOiBmYWxzZSkKKyNk
ZWZpbmUgUEFHRV9JRCAobV9mcmFtZS5sb2FkZXIoKS5jbGllbnQoKS5wYWdlSUQoKS52YWx1ZU9y
KFBhZ2VJZGVudGlmaWVyKCkpLnRvVUludDY0KCkpCisjZGVmaW5lIEZSQU1FX0lEIChtX2ZyYW1l
LmxvYWRlcigpLmNsaWVudCgpLmZyYW1lSUQoKS52YWx1ZU9yKEZyYW1lSWRlbnRpZmllcigpKS50
b1VJbnQ2NCgpKQorI2RlZmluZSBSRUxFQVNFX0xPR19JRl9BTExPV0VEKGZtdCwgLi4uKSBSRUxF
QVNFX0xPR19JRihJU19BTExPV0VELCBMb2FkaW5nLCAiJXAgLSBbcGFnZUlEPSUiIFBSSXU2NCAi
LCBmcmFtZUlEPSUiIFBSSXU2NCAiXSBQb2xpY3lDaGVja2VyOjoiIGZtdCwgdGhpcywgUEFHRV9J
RCwgRlJBTUVfSUQsICMjX19WQV9BUkdTX18pCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogc3Rh
dGljIGJvb2wgaXNBbGxvd2VkQnlDb250ZW50U2VjdXJpdHlQb2xpY3koY29uc3QgVVJMJiB1cmws
IGNvbnN0IEVsZW1lbnQqIG93bmVyRWxlbWVudCwgYm9vbCBkaWRSZWNlaXZlUmVkaXJlY3RSZXNw
b25zZSkKQEAgLTEyOCw2ICsxMzMsMTAgQEAgdm9pZCBQb2xpY3lDaGVja2VyOjpjaGVja05hdmln
YXRpb25Qb2xpY3koUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgY29uc3QgUmVzb3UKICAgICAv
LyBEb24ndCBhc2sgbW9yZSB0aGFuIG9uY2UgZm9yIHRoZSBzYW1lIHJlcXVlc3Qgb3IgaWYgd2Ug
YXJlIGxvYWRpbmcgYW4gZW1wdHkgVVJMLgogICAgIC8vIFRoaXMgYXZvaWRzIGNvbmZ1c2lvbiBv
biB0aGUgcGFydCBvZiB0aGUgY2xpZW50LgogICAgIGlmIChlcXVhbElnbm9yaW5nSGVhZGVyRmll
bGRzKHJlcXVlc3QsIGxvYWRlci0+bGFzdENoZWNrZWRSZXF1ZXN0KCkpIHx8ICghcmVxdWVzdC5p
c051bGwoKSAmJiByZXF1ZXN0LnVybCgpLmlzRW1wdHkoKSkpIHsKKyAgICAgICAgaWYgKCFyZXF1
ZXN0LmlzTnVsbCgpICYmIHJlcXVlc3QudXJsKCkuaXNFbXB0eSgpKQorICAgICAgICAgICAgUkVM
RUFTRV9MT0dfSUZfQUxMT1dFRCgiY2hlY2tOYXZpZ2F0aW9uUG9saWN5OiBjb250aW51aW5nIGJl
Y2F1c2UgdGhlIFVSTCBpcyBlbXB0eSIpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBSRUxF
QVNFX0xPR19JRl9BTExPV0VEKCJjaGVja05hdmlnYXRpb25Qb2xpY3k6IGNvbnRpbnVpbmcgYmVj
YXVzZSB0aGUgVVJMIGlzIHRoZSBzYW1lIGFzIHRoZSBsYXN0IHJlcXVlc3QiKTsKICAgICAgICAg
ZnVuY3Rpb24oUmVzb3VyY2VSZXF1ZXN0KHJlcXVlc3QpLCB7IH0sIE5hdmlnYXRpb25Qb2xpY3lE
ZWNpc2lvbjo6Q29udGludWVMb2FkKTsKICAgICAgICAgbG9hZGVyLT5zZXRMYXN0Q2hlY2tlZFJl
cXVlc3QoV1RGTW92ZShyZXF1ZXN0KSk7CiAgICAgICAgIHJldHVybjsKQEAgLTE0Myw2ICsxNTIs
MTEgQEAgdm9pZCBQb2xpY3lDaGVja2VyOjpjaGVja05hdmlnYXRpb25Qb2xpY3koUmVzb3VyY2VS
ZXF1ZXN0JiYgcmVxdWVzdCwgY29uc3QgUmVzb3UKICNlbmRpZgogICAgICAgICBpZiAoaXNCYWNr
Rm9yd2FyZExvYWRUeXBlKG1fbG9hZFR5cGUpKQogICAgICAgICAgICAgbV9sb2FkVHlwZSA9IEZy
YW1lTG9hZFR5cGU6OlJlbG9hZDsKKyAgICAgICAgaWYgKHNob3VsZENvbnRpbnVlKQorICAgICAg
ICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiY2hlY2tOYXZpZ2F0aW9uUG9saWN5OiBjb250
aW51aW5nIGJlY2F1c2Ugd2UgaGF2ZSB2YWxpZCBzdWJzdGl0dXRlIGRhdGEiKTsKKyAgICAgICAg
ZWxzZQorICAgICAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiY2hlY2tOYXZpZ2F0aW9u
UG9saWN5OiBub3QgY29udGludWluZyB3aXRoIHN1YnN0aXR1dGUgZGF0YSBiZWNhdXNlIHRoZSBj
b250ZW50IGZpbHRlciB0b2xkIHVzIG5vdCB0byIpOworCiAgICAgICAgIGZ1bmN0aW9uKFdURk1v
dmUocmVxdWVzdCksIHsgfSwgc2hvdWxkQ29udGludWUgPyBOYXZpZ2F0aW9uUG9saWN5RGVjaXNp
b246OkNvbnRpbnVlTG9hZCA6IE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lvbjo6SWdub3JlTG9hZCk7
CiAgICAgICAgIHJldHVybjsKICAgICB9CkBAIC0xNTMsNiArMTY3LDcgQEAgdm9pZCBQb2xpY3lD
aGVja2VyOjpjaGVja05hdmlnYXRpb25Qb2xpY3koUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwg
Y29uc3QgUmVzb3UKICAgICAgICAgICAgIC8vIHJldmVhbCB0aGF0IHRoZSBmcmFtZSB3YXMgYmxv
Y2tlZC4gVGhpcyB3YXksIGl0IGxvb2tzIGxpa2UgYW55IG90aGVyIGNyb3NzLW9yaWdpbiBwYWdl
IGxvYWQuCiAgICAgICAgICAgICBtX2ZyYW1lLm93bmVyRWxlbWVudCgpLT5kaXNwYXRjaEV2ZW50
KEV2ZW50OjpjcmVhdGUoZXZlbnROYW1lcygpLmxvYWRFdmVudCwgRXZlbnQ6OkNhbkJ1YmJsZTo6
Tm8sIEV2ZW50OjpJc0NhbmNlbGFibGU6Ok5vKSk7CiAgICAgICAgIH0KKyAgICAgICAgUkVMRUFT
RV9MT0dfSUZfQUxMT1dFRCgiY2hlY2tOYXZpZ2F0aW9uUG9saWN5OiBpZ25vcmluZyBiZWNhdXNl
IGRpc2FsbG93ZWQgYnkgY29udGVudCBzZWN1cml0eSBwb2xpY3kiKTsKICAgICAgICAgZnVuY3Rp
b24oV1RGTW92ZShyZXF1ZXN0KSwgeyB9LCBOYXZpZ2F0aW9uUG9saWN5RGVjaXNpb246Oklnbm9y
ZUxvYWQpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtMTYxLDggKzE3NiwxMCBAQCB2b2lk
IFBvbGljeUNoZWNrZXI6OmNoZWNrTmF2aWdhdGlvblBvbGljeShSZXNvdXJjZVJlcXVlc3QmJiBy
ZXF1ZXN0LCBjb25zdCBSZXNvdQogCiAjaWYgVVNFKFFVSUNLX0xPT0spCiAgICAgLy8gQWx3YXlz
IGFsbG93IFF1aWNrTG9vay1nZW5lcmF0ZWQgVVJMcyBiYXNlZCBvbiB0aGUgcHJvdG9jb2wgc2No
ZW1lLgotICAgIGlmICghcmVxdWVzdC5pc051bGwoKSAmJiBpc1F1aWNrTG9va1ByZXZpZXdVUkwo
cmVxdWVzdC51cmwoKSkpCisgICAgaWYgKCFyZXF1ZXN0LmlzTnVsbCgpICYmIGlzUXVpY2tMb29r
UHJldmlld1VSTChyZXF1ZXN0LnVybCgpKSkgeworICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExP
V0VEKCJjaGVja05hdmlnYXRpb25Qb2xpY3k6IGNvbnRpbnVpbmcgYmVjYXVzZSBxdWlja2xvb2st
Z2VuZXJhdGVkIFVSTCIpOwogICAgICAgICByZXR1cm4gZnVuY3Rpb24oV1RGTW92ZShyZXF1ZXN0
KSwgbWFrZVdlYWtQdHIoZm9ybVN0YXRlLmdldCgpKSwgTmF2aWdhdGlvblBvbGljeURlY2lzaW9u
OjpDb250aW51ZUxvYWQpOworICAgIH0KICNlbmRpZgogCiAjaWYgRU5BQkxFKENPTlRFTlRfRklM
VEVSSU5HKQpAQCAtMTcyLDYgKzE4OSw3IEBAIHZvaWQgUG9saWN5Q2hlY2tlcjo6Y2hlY2tOYXZp
Z2F0aW9uUG9saWN5KFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIGNvbnN0IFJlc291CiAgICAg
ICAgICAgICBpZiAodW5ibG9ja2VkKQogICAgICAgICAgICAgICAgIGZyYW1lLT5sb2FkZXIoKS5y
ZWxvYWQoKTsKICAgICAgICAgfSk7CisgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImNo
ZWNrTmF2aWdhdGlvblBvbGljeTogaWdub3JpbmcgYmVjYXVzZSBDb250ZW50RmlsdGVyVW5ibG9j
a0hhbmRsZXIgY2FuIGhhbmRsZSB0aGUgcmVxdWVzdCIpOwogICAgICAgICByZXR1cm4gZnVuY3Rp
b24oeyB9LCBudWxscHRyLCBOYXZpZ2F0aW9uUG9saWN5RGVjaXNpb246Oklnbm9yZUxvYWQpOwog
ICAgIH0KICAgICBtX2NvbnRlbnRGaWx0ZXJVbmJsb2NrSGFuZGxlciA9IHsgfTsKQEAgLTE4Niw5
ICsyMDQsMTEgQEAgdm9pZCBQb2xpY3lDaGVja2VyOjpjaGVja05hdmlnYXRpb25Qb2xpY3koUmVz
b3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgY29uc3QgUmVzb3UKICAgICBtX2RlbGVnYXRlSXNEZWNp
ZGluZ05hdmlnYXRpb25Qb2xpY3kgPSB0cnVlOwogICAgIFN0cmluZyBzdWdnZXN0ZWRGaWxlbmFt
ZSA9IGFjdGlvbi5kb3dubG9hZEF0dHJpYnV0ZSgpLmlzRW1wdHkoKSA/IG51bGxBdG9tKCkgOiBh
Y3Rpb24uZG93bmxvYWRBdHRyaWJ1dGUoKTsKICAgICBGcmFtZVBvbGljeUZ1bmN0aW9uIGRlY2lz
aW9uSGFuZGxlciA9IFt0aGlzLCBmdW5jdGlvbiA9IFdURk1vdmUoZnVuY3Rpb24pLCByZXF1ZXN0
ID0gUmVzb3VyY2VSZXF1ZXN0KHJlcXVlc3QpLCBmb3JtU3RhdGUgPSBXVEZNb3ZlKGZvcm1TdGF0
ZSksIHN1Z2dlc3RlZEZpbGVuYW1lID0gV1RGTW92ZShzdWdnZXN0ZWRGaWxlbmFtZSksCi0gICAg
ICAgICBibG9iVVJMTGlmZXRpbWVFeHRlbnNpb24gPSBXVEZNb3ZlKGJsb2JVUkxMaWZldGltZUV4
dGVuc2lvbiksIHJlcXVlc3RJZGVudGlmaWVyXSAoUG9saWN5QWN0aW9uIHBvbGljeUFjdGlvbiwg
UG9saWN5Q2hlY2tJZGVudGlmaWVyIHJlc3BvbnNlSWRlbnRpZmllcikgbXV0YWJsZSB7Ci0gICAg
ICAgIGlmICghcmVzcG9uc2VJZGVudGlmaWVyLmlzVmFsaWRGb3IocmVxdWVzdElkZW50aWZpZXIp
KQorICAgICAgICAgYmxvYlVSTExpZmV0aW1lRXh0ZW5zaW9uID0gV1RGTW92ZShibG9iVVJMTGlm
ZXRpbWVFeHRlbnNpb24pLCByZXF1ZXN0SWRlbnRpZmllciwgaXNJbml0aWFsRW1wdHlEb2N1bWVu
dExvYWRdIChQb2xpY3lBY3Rpb24gcG9saWN5QWN0aW9uLCBQb2xpY3lDaGVja0lkZW50aWZpZXIg
cmVzcG9uc2VJZGVudGlmaWVyKSBtdXRhYmxlIHsKKyAgICAgICAgaWYgKCFyZXNwb25zZUlkZW50
aWZpZXIuaXNWYWxpZEZvcihyZXF1ZXN0SWRlbnRpZmllcikpIHsKKyAgICAgICAgICAgIFJFTEVB
U0VfTE9HX0lGX0FMTE9XRUQoImNoZWNrTmF2aWdhdGlvblBvbGljeTogaWdub3JpbmcgYmVjYXVz
ZSByZXNwb25zZSBpcyBub3QgdmFsaWQgZm9yIHJlcXVlc3QiKTsKICAgICAgICAgICAgIHJldHVy
biBmdW5jdGlvbih7IH0sIG51bGxwdHIsIE5hdmlnYXRpb25Qb2xpY3lEZWNpc2lvbjo6SWdub3Jl
TG9hZCk7CisgICAgICAgIH0KIAogICAgICAgICBtX2RlbGVnYXRlSXNEZWNpZGluZ05hdmlnYXRp
b25Qb2xpY3kgPSBmYWxzZTsKIApAQCAtMTk4LDE1ICsyMTgsMjIgQEAgdm9pZCBQb2xpY3lDaGVj
a2VyOjpjaGVja05hdmlnYXRpb25Qb2xpY3koUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgY29u
c3QgUmVzb3UKICAgICAgICAgICAgIG1fZnJhbWUubG9hZGVyKCkuY2xpZW50KCkuc3RhcnREb3du
bG9hZChyZXF1ZXN0LCBzdWdnZXN0ZWRGaWxlbmFtZSk7CiAgICAgICAgICAgICBGQUxMVEhST1VH
SDsKICAgICAgICAgY2FzZSBQb2xpY3lBY3Rpb246Oklnbm9yZToKKyAgICAgICAgICAgIFJFTEVB
U0VfTE9HX0lGX0FMTE9XRUQoImNoZWNrTmF2aWdhdGlvblBvbGljeTogaWdub3JpbmcgYmVjYXVz
ZSBwb2xpY3lBY3Rpb24gZnJvbSBkaXNwYXRjaERlY2lkZVBvbGljeUZvck5hdmlnYXRpb25BY3Rp
b24gaXMgSWdub3JlIik7CiAgICAgICAgICAgICByZXR1cm4gZnVuY3Rpb24oeyB9LCBudWxscHRy
LCBOYXZpZ2F0aW9uUG9saWN5RGVjaXNpb246Oklnbm9yZUxvYWQpOwogICAgICAgICBjYXNlIFBv
bGljeUFjdGlvbjo6U3RvcEFsbExvYWRzOgorICAgICAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxM
T1dFRCgiY2hlY2tOYXZpZ2F0aW9uUG9saWN5OiBzdG9wcGluZyBiZWNhdXNlIHBvbGljeUFjdGlv
biBmcm9tIGRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmF2aWdhdGlvbkFjdGlvbiBpcyBTdG9wQWxs
TG9hZHMiKTsKICAgICAgICAgICAgIGZ1bmN0aW9uKHsgfSwgbnVsbHB0ciwgTmF2aWdhdGlvblBv
bGljeURlY2lzaW9uOjpTdG9wQWxsTG9hZHMpOwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAg
ICBjYXNlIFBvbGljeUFjdGlvbjo6VXNlOgogICAgICAgICAgICAgaWYgKCFtX2ZyYW1lLmxvYWRl
cigpLmNsaWVudCgpLmNhbkhhbmRsZVJlcXVlc3QocmVxdWVzdCkpIHsKICAgICAgICAgICAgICAg
ICBoYW5kbGVVbmltcGxlbWVudGFibGVQb2xpY3kobV9mcmFtZS5sb2FkZXIoKS5jbGllbnQoKS5j
YW5ub3RTaG93VVJMRXJyb3IocmVxdWVzdCkpOworICAgICAgICAgICAgICAgIFJFTEVBU0VfTE9H
X0lGX0FMTE9XRUQoImNoZWNrTmF2aWdhdGlvblBvbGljeTogaWdub3JpbmcgYmVjYXVzZSBmcmFt
ZSBsb2FkZXIgY2xpZW50IGNhbid0IGhhbmRsZSB0aGUgcmVxdWVzdCIpOwogICAgICAgICAgICAg
ICAgIHJldHVybiBmdW5jdGlvbih7IH0sIHsgfSwgTmF2aWdhdGlvblBvbGljeURlY2lzaW9uOjpJ
Z25vcmVMb2FkKTsKICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChpc0luaXRpYWxFbXB0
eURvY3VtZW50TG9hZCkKKyAgICAgICAgICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJj
aGVja05hdmlnYXRpb25Qb2xpY3k6IGNvbnRpbnVpbmcgYmVjYXVzZSB0aGlzIGlzIGFuIGluaXRp
YWwgZW1wdHkgZG9jdW1lbnQiKTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBS
RUxFQVNFX0xPR19JRl9BTExPV0VEKCJjaGVja05hdmlnYXRpb25Qb2xpY3k6IGNvbnRpbnVpbmcg
YmVjYXVzZSB0aGlzIHBvbGljeUFjdGlvbiBmcm9tIGRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yTmF2
aWdhdGlvbkFjdGlvbiBpcyBVc2UiKTsKICAgICAgICAgICAgIHJldHVybiBmdW5jdGlvbihXVEZN
b3ZlKHJlcXVlc3QpLCBtYWtlV2Vha1B0cihmb3JtU3RhdGUuZ2V0KCkpLCBOYXZpZ2F0aW9uUG9s
aWN5RGVjaXNpb246OkNvbnRpbnVlTG9hZCk7CiAgICAgICAgIH0KICAgICAgICAgQVNTRVJUX05P
VF9SRUFDSEVEKCk7CkBAIC0yNzUsMyArMzAyLDggQEAgdm9pZCBQb2xpY3lDaGVja2VyOjpoYW5k
bGVVbmltcGxlbWVudGFibGVQb2xpY3koY29uc3QgUmVzb3VyY2VFcnJvciYgZXJyb3IpCiB9CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI3VuZGVmIElTX0FMTE9XRUQKKyN1bmRlZiBQQUdF
X0lECisjdW5kZWYgRlJBTUVfSUQKKyN1bmRlZiBSRUxFQVNFX0xPR19JRl9BTExPV0VECmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2FkZXIuY3BwIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL1Jlc291cmNlTG9hZGVyLmNwcAppbmRleCA3MzIxNzAwZTRjMTczZmNh
YTkxODdiZDZjZmM3NDg5ODAxZWM2OTVhLi5hMzU3Mjc1MGVjYmFlNGIzN2RiZTBhYmFjM2MwMzZj
ZjE4ZDk2MDRjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvUmVzb3VyY2VMb2Fk
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9SZXNvdXJjZUxvYWRlci5jcHAKQEAg
LTY0LDcgKzY0LDcgQEAKICNlbmRpZgogCiAjdW5kZWYgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRAot
I2RlZmluZSBSRUxFQVNFX0xPR19JRl9BTExPV0VEKGZtdCwgLi4uKSBSRUxFQVNFX0xPR19JRihp
c0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKSwgTmV0d29yaywgIiVwIC0gUmVzb3VyY2VMb2FkZXI6
OiIgZm10LCB0aGlzLCAjI19fVkFfQVJHU19fKQorI2RlZmluZSBSRUxFQVNFX0xPR19JRl9BTExP
V0VEKGZtdCwgLi4uKSBSRUxFQVNFX0xPR19JRihpc0Fsd2F5c09uTG9nZ2luZ0FsbG93ZWQoKSwg
TmV0d29yaywgIiVwIC0gW2ZyYW1lPSVwLCBmcmFtZUxvYWRlcj0lcCwgcmVzb3VyY2VJRD0lbHVd
IFJlc291cmNlTG9hZGVyOjoiIGZtdCwgdGhpcywgZnJhbWUoKSwgZnJhbWVMb2FkZXIoKSwgaWRl
bnRpZmllcigpLCAjI19fVkFfQVJHU19fKQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTI3
Miw3ICsyNzIsNyBAQCB2b2lkIFJlc291cmNlTG9hZGVyOjpsb2FkRGF0YVVSTCgpCiAgICAgICAg
IGlmICh0aGlzLT5yZWFjaGVkVGVybWluYWxTdGF0ZSgpKQogICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICBpZiAoIWRlY29kZVJlc3VsdCkgewotICAgICAgICAgICAgUkVMRUFTRV9MT0dfSUZf
QUxMT1dFRCgibG9hZERhdGFVUkw6IGRlY29kaW5nIG9mIGRhdGEgZmFpbGVkIChmcmFtZSA9ICVw
LCBmcmFtZUxvYWRlciA9ICVwLCByZXNvdXJjZUlEID0gJWx1KSIsIGZyYW1lKCksIGZyYW1lTG9h
ZGVyKCksIGlkZW50aWZpZXIoKSk7CisgICAgICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VE
KCJsb2FkRGF0YVVSTDogZGVjb2Rpbmcgb2YgZGF0YSBmYWlsZWQiKTsKICAgICAgICAgICAgIHBy
b3RlY3RlZFRoaXMtPmRpZEZhaWwoUmVzb3VyY2VFcnJvcihlcnJvckRvbWFpbldlYktpdEludGVy
bmFsLCAwLCB1cmwsICJEYXRhIFVSTCBkZWNvZGluZyBmYWlsZWQiKSk7CiAgICAgICAgICAgICBy
ZXR1cm47CiAgICAgICAgIH0KQEAgLTM3MSw3ICszNzEsNyBAQCB2b2lkIFJlc291cmNlTG9hZGVy
Ojp3aWxsU2VuZFJlcXVlc3RJbnRlcm5hbChSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBjb25z
dCBSZQogICAgICAgICAgICAgYm9vbCBibG9ja2VkTG9hZCA9IHJlc3VsdHMuc3VtbWFyeS5ibG9j
a2VkTG9hZDsKICAgICAgICAgICAgIENvbnRlbnRFeHRlbnNpb25zOjphcHBseVJlc3VsdHNUb1Jl
cXVlc3QoV1RGTW92ZShyZXN1bHRzKSwgcGFnZSwgcmVxdWVzdCk7CiAgICAgICAgICAgICBpZiAo
YmxvY2tlZExvYWQpIHsKLSAgICAgICAgICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJ3
aWxsU2VuZFJlcXVlc3RpbnRlcm5hbDogcmVzb3VyY2UgbG9hZCBjYW5jZWxlZCBiZWNhdXNlIG9m
IGNvbnRlbnQgYmxvY2tlciAoZnJhbWUgPSAlcCwgZnJhbWVMb2FkZXIgPSAlcCwgcmVzb3VyY2VJ
RCA9ICVsdSkiLCBmcmFtZSgpLCBmcmFtZUxvYWRlcigpLCBpZGVudGlmaWVyKCkpOworICAgICAg
ICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoIndpbGxTZW5kUmVxdWVzdEludGVybmFs
OiByZXNvdXJjZSBsb2FkIGNhbmNlbGVkIGJlY2F1c2Ugb2YgY29udGVudCBibG9ja2VyIik7CiAg
ICAgICAgICAgICAgICAgZGlkRmFpbChibG9ja2VkQnlDb250ZW50QmxvY2tlckVycm9yKCkpOwog
ICAgICAgICAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKHsgfSk7CiAgICAgICAgICAgICAgICAg
cmV0dXJuOwpAQCAtMzgxLDcgKzM4MSw3IEBAIHZvaWQgUmVzb3VyY2VMb2FkZXI6OndpbGxTZW5k
UmVxdWVzdEludGVybmFsKFJlc291cmNlUmVxdWVzdCYmIHJlcXVlc3QsIGNvbnN0IFJlCiAjZW5k
aWYKIAogICAgIGlmIChyZXF1ZXN0LmlzTnVsbCgpKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0lG
X0FMTE9XRUQoIndpbGxTZW5kUmVxdWVzdGludGVybmFsOiByZXNvdXJjZSBsb2FkIGNhbmNlbGVk
IGJlY2F1c2Ugb2YgZW1wdHkgcmVxdWVzdCAoZnJhbWUgPSAlcCwgZnJhbWVMb2FkZXIgPSAlcCwg
cmVzb3VyY2VJRCA9ICVsdSkiLCBmcmFtZSgpLCBmcmFtZUxvYWRlcigpLCBpZGVudGlmaWVyKCkp
OworICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJ3aWxsU2VuZFJlcXVlc3RJbnRlcm5h
bDogcmVzb3VyY2UgbG9hZCBjYW5jZWxlZCBiZWNhdXNlIG9mIGVtcHR5IHJlcXVlc3QiKTsKICAg
ICAgICAgZGlkRmFpbChjYW5ub3RTaG93VVJMRXJyb3IoKSk7CiAgICAgICAgIGNvbXBsZXRpb25I
YW5kbGVyKHsgfSk7CiAgICAgICAgIHJldHVybjsKQEAgLTM5NCw2ICszOTQsNyBAQCB2b2lkIFJl
c291cmNlTG9hZGVyOjp3aWxsU2VuZFJlcXVlc3RJbnRlcm5hbChSZXNvdXJjZVJlcXVlc3QmJiBy
ZXF1ZXN0LCBjb25zdCBSZQogI2lmIFBMQVRGT1JNKElPU19GQU1JTFkpCiAgICAgICAgIC8vIElm
IHRoaXMgUmVzb3VyY2VMb2FkZXIgd2FzIHN0b3BwZWQgYXMgYSByZXN1bHQgb2YgYXNzaWduSWRl
bnRpZmllclRvSW5pdGlhbFJlcXVlc3QsIGJhaWwgb3V0CiAgICAgICAgIGlmIChtX3JlYWNoZWRU
ZXJtaW5hbFN0YXRlKSB7CisgICAgICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJ3aWxs
U2VuZFJlcXVlc3RJbnRlcm5hbDogcmVzb3VyY2UgbG9hZCByZWFjaGVkIHRlcm1pbmFsIHN0YXRl
IGFmdGVyIGNhbGxpbmcgYXNzaWduSWRlbnRpZmllclRvSW5pdGlhbFJlcXVlc3QoKSIpOwogICAg
ICAgICAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShyZXF1ZXN0KSk7CiAgICAgICAgICAg
ICByZXR1cm47CiAgICAgICAgIH0KQEAgLTQyOSw2ICs0MzAsOCBAQCB2b2lkIFJlc291cmNlTG9h
ZGVyOjp3aWxsU2VuZFJlcXVlc3RJbnRlcm5hbChSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBj
b25zdCBSZQogICAgICAgICAgICAgbG9hZERhdGFVUkwoKTsKICAgICAgICAgfQogICAgIH0KKwor
ICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoIndpbGxTZW5kUmVxdWVzdEludGVybmFsOiBjYWxs
aW5nIGNvbXBsZXRpb24gaGFuZGxlciIpOwogICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUo
cmVxdWVzdCkpOwogfQogCkBAIC01MzksNyArNTQyLDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRlcjo6
ZGlkUmVjZWl2ZURhdGFPckJ1ZmZlcihjb25zdCBjaGFyKiBkYXRhLCB1bnNpZ25lZCBsZW5ndGgs
IFIKIAogdm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGlkRmluaXNoTG9hZGluZyhjb25zdCBOZXR3b3Jr
TG9hZE1ldHJpY3MmIG5ldHdvcmtMb2FkTWV0cmljcykKIHsKLSAgICBSRUxFQVNFX0xPR19JRl9B
TExPV0VEKCJkaWRGaW5pc2hMb2FkaW5nOiAoZnJhbWUgPSAlcCwgZnJhbWVMb2FkZXIgPSAlcCwg
cmVzb3VyY2VJRCA9ICVsdSkiLCBmcmFtZSgpLCBmcmFtZUxvYWRlcigpLCBpZGVudGlmaWVyKCkp
OworICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImRpZEZpbmlzaExvYWRpbmc6Iik7CiAKICAg
ICBkaWRGaW5pc2hMb2FkaW5nT25lUGFydChuZXR3b3JrTG9hZE1ldHJpY3MpOwogCkBAIC01Njcs
NyArNTcwLDcgQEAgdm9pZCBSZXNvdXJjZUxvYWRlcjo6ZGlkRmluaXNoTG9hZGluZ09uZVBhcnQo
Y29uc3QgTmV0d29ya0xvYWRNZXRyaWNzJiBuZXR3b3JrTG8KIAogdm9pZCBSZXNvdXJjZUxvYWRl
cjo6ZGlkRmFpbChjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKIHsKLSAgICBSRUxFQVNFX0xP
R19JRl9BTExPV0VEKCJkaWRGYWlsOiAoZnJhbWUgPSAlcCwgZnJhbWVMb2FkZXIgPSAlcCwgcmVz
b3VyY2VJRCA9ICVsdSkiLCBmcmFtZSgpLCBmcmFtZUxvYWRlcigpLCBpZGVudGlmaWVyKCkpOwor
ICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImRpZEZhaWw6Iik7CiAKICAgICBpZiAod2FzQ2Fu
Y2VsbGVkKCkpCiAgICAgICAgIHJldHVybjsKQEAgLTY2OSw3ICs2NzIsNyBAQCB2b2lkIFJlc291
cmNlTG9hZGVyOjp3aWxsU2VuZFJlcXVlc3RBc3luYyhSZXNvdXJjZUhhbmRsZSogaGFuZGxlLCBS
ZXNvdXJjZVJlcXVlcwogewogICAgIFJlZlB0cjxSZXNvdXJjZUhhbmRsZT4gcHJvdGVjdGVkSGFu
ZGxlKGhhbmRsZSk7CiAgICAgaWYgKGRvY3VtZW50TG9hZGVyKCktPmFwcGxpY2F0aW9uQ2FjaGVI
b3N0KCkubWF5YmVMb2FkRmFsbGJhY2tGb3JSZWRpcmVjdCh0aGlzLCByZXF1ZXN0LCByZWRpcmVj
dFJlc3BvbnNlKSkgewotICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJ3aWxsU2VuZFJl
cXVlc3RBc3luYzogZXhpdGluZyBlYXJseSBiZWNhdXNlIG1heWJlTG9hZEZhbGxiYWNrRm9yUmVk
aXJlY3QgcmV0dXJuZWQgZmFsc2UgKGZyYW1lID0gJXAsIGZyYW1lTG9hZGVyID0gJXAsIHJlc291
cmNlSUQgPSAlbHUpIiwgZnJhbWUoKSwgZnJhbWVMb2FkZXIoKSwgaWRlbnRpZmllcigpKTsKKyAg
ICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgid2lsbFNlbmRSZXF1ZXN0QXN5bmM6IGV4aXRp
bmcgZWFybHkgYmVjYXVzZSBtYXliZUxvYWRGYWxsYmFja0ZvclJlZGlyZWN0IHJldHVybmVkIGZh
bHNlIik7CiAgICAgICAgIGNvbXBsZXRpb25IYW5kbGVyKFdURk1vdmUocmVxdWVzdCkpOwogICAg
ICAgICByZXR1cm47CiAgICAgfQpAQCAtNzE1LDEzICs3MTgsMTMgQEAgdm9pZCBSZXNvdXJjZUxv
YWRlcjo6ZGlkRmFpbChSZXNvdXJjZUhhbmRsZSosIGNvbnN0IFJlc291cmNlRXJyb3ImIGVycm9y
KQogCiB2b2lkIFJlc291cmNlTG9hZGVyOjp3YXNCbG9ja2VkKFJlc291cmNlSGFuZGxlKikKIHsK
LSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJ3YXNCbG9ja2VkOiByZXNvdXJjZSBsb2FkIGNh
bmNlbGVkIGJlY2F1c2Ugb2YgY29udGVudCBibG9ja2VyIChmcmFtZSA9ICVwLCBmcmFtZUxvYWRl
ciA9ICVwLCByZXNvdXJjZUlEID0gJWx1KSIsIGZyYW1lKCksIGZyYW1lTG9hZGVyKCksIGlkZW50
aWZpZXIoKSk7CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgid2FzQmxvY2tlZDogcmVzb3Vy
Y2UgbG9hZCBjYW5jZWxlZCBiZWNhdXNlIG9mIGNvbnRlbnQgYmxvY2tlciIpOwogICAgIGRpZEZh
aWwoYmxvY2tlZEVycm9yKCkpOwogfQogCiB2b2lkIFJlc291cmNlTG9hZGVyOjpjYW5ub3RTaG93
VVJMKFJlc291cmNlSGFuZGxlKikKIHsKLSAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJ3YXNC
bG9ja2VkOiByZXNvdXJjZSBsb2FkIGNhbmNlbGVkIGJlY2F1c2Ugb2YgaW52YWxpZCBVUkwgKGZy
YW1lID0gJXAsIGZyYW1lTG9hZGVyID0gJXAsIHJlc291cmNlSUQgPSAlbHUpIiwgZnJhbWUoKSwg
ZnJhbWVMb2FkZXIoKSwgaWRlbnRpZmllcigpKTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VE
KCJ3YXNCbG9ja2VkOiByZXNvdXJjZSBsb2FkIGNhbmNlbGVkIGJlY2F1c2Ugb2YgaW52YWxpZCBV
UkwiKTsKICAgICBkaWRGYWlsKGNhbm5vdFNob3dVUkxFcnJvcigpKTsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNlTG9hZGVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2xvYWRlci9TdWJyZXNvdXJjZUxvYWRlci5jcHAKaW5kZXggNGEwY2EzZTAwMDU1OWNh
MGE4N2MzZjA3MDJlNGJkNTljOGZkNmUxMi4uMDYwMGZmMzVkMjQ5MjFlNzUwODM3MGUwOWJiMGM5
NzgxZTJlM2M0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL1N1YnJlc291cmNl
TG9hZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvU3VicmVzb3VyY2VMb2FkZXIu
Y3BwCkBAIC03MCw4ICs3MCw4IEBACiAKICN1bmRlZiBSRUxFQVNFX0xPR19JRl9BTExPV0VECiAj
dW5kZWYgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRAotI2RlZmluZSBSRUxFQVNFX0xPR19J
Rl9BTExPV0VEKGZtdCwgLi4uKSBSRUxFQVNFX0xPR19JRihpc0Fsd2F5c09uTG9nZ2luZ0FsbG93
ZWQoKSwgUmVzb3VyY2VMb2FkaW5nLCAiJXAgLSBTdWJyZXNvdXJjZUxvYWRlcjo6IiBmbXQsIHRo
aXMsICMjX19WQV9BUkdTX18pCi0jZGVmaW5lIFJFTEVBU0VfTE9HX0VSUk9SX0lGX0FMTE9XRUQo
Zm10LCAuLi4pIFJFTEVBU0VfTE9HX0VSUk9SX0lGKGlzQWx3YXlzT25Mb2dnaW5nQWxsb3dlZCgp
LCBSZXNvdXJjZUxvYWRpbmcsICIlcCAtIFN1YnJlc291cmNlTG9hZGVyOjoiIGZtdCwgdGhpcywg
IyNfX1ZBX0FSR1NfXykKKyNkZWZpbmUgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChmbXQsIC4uLikg
UkVMRUFTRV9MT0dfSUYoaXNBbHdheXNPbkxvZ2dpbmdBbGxvd2VkKCksIFJlc291cmNlTG9hZGlu
ZywgIiVwIC0gW2ZyYW1lPSVwLCBmcmFtZUxvYWRlcj0lcCwgcmVzb3VyY2VJRD0lbHVdIFN1YnJl
c291cmNlTG9hZGVyOjoiIGZtdCwgdGhpcywgZnJhbWUoKSwgZnJhbWVMb2FkZXIoKSwgaWRlbnRp
ZmllcigpLCAjI19fVkFfQVJHU19fKQorI2RlZmluZSBSRUxFQVNFX0xPR19FUlJPUl9JRl9BTExP
V0VEKGZtdCwgLi4uKSBSRUxFQVNFX0xPR19FUlJPUl9JRihpc0Fsd2F5c09uTG9nZ2luZ0FsbG93
ZWQoKSwgUmVzb3VyY2VMb2FkaW5nLCAiJXAgLSBbZnJhbWU9JXAsIGZyYW1lTG9hZGVyPSVwLCBy
ZXNvdXJjZUlEPSVsdV0gU3VicmVzb3VyY2VMb2FkZXI6OiIgZm10LCB0aGlzLCBmcmFtZSgpLCBm
cmFtZUxvYWRlcigpLCBpZGVudGlmaWVyKCksICMjX19WQV9BUkdTX18pCiAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIApAQCAtMTY2LDcgKzE2Niw3IEBAIHZvaWQgU3VicmVzb3VyY2VMb2FkZXI6Omlu
aXQoUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChiCiAg
ICAgICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOwogICAgICAgICBpZiAo
IW1fZG9jdW1lbnRMb2FkZXIpIHsKICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwot
ICAgICAgICAgICAgUkVMRUFTRV9MT0dfRVJST1IoUmVzb3VyY2VMb2FkaW5nLCAiU3VicmVzb3Vy
Y2VMb2FkZXI6OmluaXQ6IHJlc291cmNlIGxvYWQgY2FuY2VsZWQgYmVjYXVzZSBkb2N1bWVudCBs
b2FkZXIgaXMgbnVsbCAoZnJhbWUgPSAlcCwgZnJhbWVMb2FkZXIgPSAlcCwgcmVzb3VyY2VJRCA9
ICVsdSkiLCBmcmFtZSgpLCBmcmFtZUxvYWRlcigpLCBpZGVudGlmaWVyKCkpOworICAgICAgICAg
ICAgUkVMRUFTRV9MT0dfRVJST1JfSUZfQUxMT1dFRCgiaW5pdDogcmVzb3VyY2UgbG9hZCBjYW5j
ZWxlZCBiZWNhdXNlIGRvY3VtZW50IGxvYWRlciBpcyBudWxsIik7CiAgICAgICAgICAgICByZXR1
cm4gY29tcGxldGlvbkhhbmRsZXIoZmFsc2UpOwogICAgICAgICB9CiAgICAgICAgIEFTU0VSVCgh
cmVhY2hlZFRlcm1pbmFsU3RhdGUoKSk7CkBAIC0xODksNiArMTg5LDcgQEAgdm9pZCBTdWJyZXNv
dXJjZUxvYWRlcjo6d2lsbFNlbmRSZXF1ZXN0SW50ZXJuYWwoUmVzb3VyY2VSZXF1ZXN0JiYgbmV3
UmVxdWVzdCwgY28KICAgICBSZWY8U3VicmVzb3VyY2VMb2FkZXI+IHByb3RlY3RlZFRoaXMoKnRo
aXMpOwogCiAgICAgaWYgKCFuZXdSZXF1ZXN0LnVybCgpLmlzVmFsaWQoKSkgeworICAgICAgICBS
RUxFQVNFX0xPR19JRl9BTExPV0VEKCJ3aWxsU2VuZFJlcXVlc3RJbnRlcm5hbDogcmVzb3VyY2Ug
bG9hZCBjYW5jZWxlZCBiZWNhdXNlIG5ldyByZXF1ZXN0IGlzIGludmFsaWQiKTsKICAgICAgICAg
Y2FuY2VsKGNhbm5vdFNob3dVUkxFcnJvcigpKTsKICAgICAgICAgcmV0dXJuIGNvbXBsZXRpb25I
YW5kbGVyKFdURk1vdmUobmV3UmVxdWVzdCkpOwogICAgIH0KQEAgLTIwMCwyMCArMjAxLDI4IEBA
IHZvaWQgU3VicmVzb3VyY2VMb2FkZXI6OndpbGxTZW5kUmVxdWVzdEludGVybmFsKFJlc291cmNl
UmVxdWVzdCYmIG5ld1JlcXVlc3QsIGNvCiAgICAgfQogCiAgICAgYXV0byBjb250aW51ZVdpbGxT
ZW5kUmVxdWVzdCA9IFt0aGlzLCBwcm90ZWN0ZWRUaGlzID0gbWFrZVJlZigqdGhpcyksIHJlZGly
ZWN0UmVzcG9uc2VdIChDb21wbGV0aW9uSGFuZGxlcjx2b2lkKFJlc291cmNlUmVxdWVzdCYmKT4m
JiBjb21wbGV0aW9uSGFuZGxlciwgUmVzb3VyY2VSZXF1ZXN0JiYgbmV3UmVxdWVzdCkgbXV0YWJs
ZSB7Ci0gICAgICAgIGlmIChuZXdSZXF1ZXN0LmlzTnVsbCgpIHx8IHJlYWNoZWRUZXJtaW5hbFN0
YXRlKCkpCisgICAgICAgIGlmIChuZXdSZXF1ZXN0LmlzTnVsbCgpIHx8IHJlYWNoZWRUZXJtaW5h
bFN0YXRlKCkpIHsKKyAgICAgICAgICAgIGlmIChuZXdSZXF1ZXN0LmlzTnVsbCgpKQorICAgICAg
ICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoIndpbGxTZW5kUmVxdWVzdEludGVybmFs
OiByZXNvdXJjZSBsb2FkIGNhbmNlbGVkIGJlY2F1c2UgbmV3IHJlcXVlc3QgaXMgTlVMTCAoMSki
KTsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExP
V0VEKCJ3aWxsU2VuZFJlcXVlc3RJbnRlcm5hbDogcmVzb3VyY2UgbG9hZCBjYW5jZWxlZCBiZWNh
dXNlIHJlYWNoZWQgdGVybWluYWwgc3RhdGUiKTsKICAgICAgICAgICAgIHJldHVybiBjb21wbGV0
aW9uSGFuZGxlcihXVEZNb3ZlKG5ld1JlcXVlc3QpKTsKKyAgICAgICAgfQogCiAgICAgICAgIFJl
c291cmNlTG9hZGVyOjp3aWxsU2VuZFJlcXVlc3RJbnRlcm5hbChXVEZNb3ZlKG5ld1JlcXVlc3Qp
LCByZWRpcmVjdFJlc3BvbnNlLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVj
dGVkVGhpcyksIGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciks
IHJlZGlyZWN0UmVzcG9uc2VdIChSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0KSBtdXRhYmxlIHsK
ICAgICAgICAgICAgIGlmIChyZWFjaGVkVGVybWluYWxTdGF0ZSgpKQogICAgICAgICAgICAgICAg
IHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHJlcXVlc3QpKTsKIAogICAgICAgICAg
ICAgaWYgKHJlcXVlc3QuaXNOdWxsKCkpIHsKKyAgICAgICAgICAgICAgICBSRUxFQVNFX0xPR19J
Rl9BTExPV0VEKCJ3aWxsU2VuZFJlcXVlc3RJbnRlcm5hbDogcmVzb3VyY2UgbG9hZCBjYW5jZWxl
ZCBiZWNhdXNlIHJlcXVlc3QgaXMgTlVMTCAoMikiKTsKICAgICAgICAgICAgICAgICBjYW5jZWwo
KTsKICAgICAgICAgICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShyZXF1
ZXN0KSk7CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGlmIChtX3Jlc291cmNlLT50eXBl
KCkgPT0gQ2FjaGVkUmVzb3VyY2U6OlR5cGU6Ok1haW5SZXNvdXJjZSAmJiAhcmVkaXJlY3RSZXNw
b25zZS5pc051bGwoKSkKICAgICAgICAgICAgICAgICBtX2RvY3VtZW50TG9hZGVyLT53aWxsQ29u
dGludWVNYWluUmVzb3VyY2VMb2FkQWZ0ZXJSZWRpcmVjdChyZXF1ZXN0KTsKKworICAgICAgICAg
ICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgid2lsbFNlbmRSZXF1ZXN0SW50ZXJuYWw6IHJlc291
cmNlIGxvYWQgZmluaXNoZWQ7IGNhbGxpbmcgY29tcGxldGlvbiBoYW5kbGVyIik7CiAgICAgICAg
ICAgICBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKHJlcXVlc3QpKTsKICAgICAgICAgfSk7CiAg
ICAgfTsKQEAgLTIyNyw3ICsyMzYsNyBAQCB2b2lkIFN1YnJlc291cmNlTG9hZGVyOjp3aWxsU2Vu
ZFJlcXVlc3RJbnRlcm5hbChSZXNvdXJjZVJlcXVlc3QmJiBuZXdSZXF1ZXN0LCBjbwogICAgICAg
ICAgICAgICAgIGlmIChtX2ZyYW1lICYmIG1fZnJhbWUtPmRvY3VtZW50KCkpCiAgICAgICAgICAg
ICAgICAgICAgIG1fZnJhbWUtPmRvY3VtZW50KCktPmFkZENvbnNvbGVNZXNzYWdlKE1lc3NhZ2VT
b3VyY2U6OlNlY3VyaXR5LCBNZXNzYWdlTGV2ZWw6OkVycm9yLCBlcnJvci5sb2NhbGl6ZWREZXNj
cmlwdGlvbigpKTsKIAotICAgICAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoIndp
bGxTZW5kUmVxdWVzdGludGVybmFsOiByZXNvdXJjZSBsb2FkIGNhbmNlbGVkIGJlY2F1c2Ugbm90
IGFsbG93ZWQgdG8gZm9sbG93IGEgcmVkaXJlY3QgKGZyYW1lID0gJXAsIGZyYW1lTG9hZGVyID0g
JXAsIHJlc291cmNlSUQgPSAlbHUpIiwgZnJhbWUoKSwgZnJhbWVMb2FkZXIoKSwgaWRlbnRpZmll
cigpKTsKKyAgICAgICAgICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJ3aWxsU2VuZFJl
cXVlc3RJbnRlcm5hbDogcmVzb3VyY2UgbG9hZCBjYW5jZWxlZCBiZWNhdXNlIG5vdCBhbGxvd2Vk
IHRvIGZvbGxvdyBhIHJlZGlyZWN0Iik7CiAKICAgICAgICAgICAgICAgICBjYW5jZWwoZXJyb3Ip
OwogICAgICAgICAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKG5ld1Jl
cXVlc3QpKTsKQEAgLTIzOCwxNyArMjQ3LDE3IEBAIHZvaWQgU3VicmVzb3VyY2VMb2FkZXI6Ondp
bGxTZW5kUmVxdWVzdEludGVybmFsKFJlc291cmNlUmVxdWVzdCYmIG5ld1JlcXVlc3QsIGNvCiAg
ICAgICAgICAgICBvcGFxdWVSZWRpcmVjdGVkUmVzcG9uc2Uuc2V0VGFpbnRpbmcoUmVzb3VyY2VS
ZXNwb25zZTo6VGFpbnRpbmc6Ok9wYXF1ZXJlZGlyZWN0KTsKICAgICAgICAgICAgIG1fcmVzb3Vy
Y2UtPnJlc3BvbnNlUmVjZWl2ZWQob3BhcXVlUmVkaXJlY3RlZFJlc3BvbnNlKTsKICAgICAgICAg
ICAgIGlmIChyZWFjaGVkVGVybWluYWxTdGF0ZSgpKSB7Ci0gICAgICAgICAgICAgICAgUkVMRUFT
RV9MT0dfSUZfQUxMT1dFRCgid2lsbFNlbmRSZXF1ZXN0aW50ZXJuYWw6IHJlYWNoZWQgdGVybWlu
YWwgc3RhdGUgKGZyYW1lID0gJXAsIGZyYW1lTG9hZGVyID0gJXAsIHJlc291cmNlSUQgPSAlbHUp
IiwgZnJhbWUoKSwgZnJhbWVMb2FkZXIoKSwgaWRlbnRpZmllcigpKTsKKyAgICAgICAgICAgICAg
ICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJ3aWxsU2VuZFJlcXVlc3RJbnRlcm5hbDogcmVhY2hl
ZCB0ZXJtaW5hbCBzdGF0ZSIpOwogICAgICAgICAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFu
ZGxlcihXVEZNb3ZlKG5ld1JlcXVlc3QpKTsKICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAg
UkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgid2lsbFNlbmRSZXF1ZXN0aW50ZXJuYWw6IHJlc291cmNl
IGxvYWQgY29tcGxldGVkIChmcmFtZSA9ICVwLCBmcmFtZUxvYWRlciA9ICVwLCByZXNvdXJjZUlE
ID0gJWx1KSIsIGZyYW1lKCksIGZyYW1lTG9hZGVyKCksIGlkZW50aWZpZXIoKSk7CisgICAgICAg
ICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJ3aWxsU2VuZFJlcXVlc3RJbnRlcm5hbDogcmVz
b3VyY2UgbG9hZCBjb21wbGV0ZWQiKTsKIAogICAgICAgICAgICAgTmV0d29ya0xvYWRNZXRyaWNz
IGVtcHR5TWV0cmljczsKICAgICAgICAgICAgIGRpZEZpbmlzaExvYWRpbmcoZW1wdHlNZXRyaWNz
KTsKICAgICAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKG5ld1JlcXVl
c3QpKTsKICAgICAgICAgfSBlbHNlIGlmIChtX3JlZGlyZWN0Q291bnQrKyA+PSBvcHRpb25zKCku
bWF4UmVkaXJlY3RDb3VudCkgewotICAgICAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgi
d2lsbFNlbmRSZXF1ZXN0aW50ZXJuYWw6IHJlc291cmNlIGxvYWQgY2FuY2VsZWQgYmVjYXVzZSB0
b28gbWFueSByZWRpcmVjdHMgKGZyYW1lID0gJXAsIGZyYW1lTG9hZGVyID0gJXAsIHJlc291cmNl
SUQgPSAlbHUpIiwgZnJhbWUoKSwgZnJhbWVMb2FkZXIoKSwgaWRlbnRpZmllcigpKTsKKyAgICAg
ICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoIndpbGxTZW5kUmVxdWVzdEludGVybmFsOiBy
ZXNvdXJjZSBsb2FkIGNhbmNlbGVkIGJlY2F1c2UgdG9vIG1hbnkgcmVkaXJlY3RzIik7CiAgICAg
ICAgICAgICBjYW5jZWwoUmVzb3VyY2VFcnJvcihTdHJpbmcoKSwgMCwgcmVxdWVzdCgpLnVybCgp
LCAiVG9vIG1hbnkgcmVkaXJlY3Rpb25zIl9zLCBSZXNvdXJjZUVycm9yOjpUeXBlOjpHZW5lcmFs
KSk7CiAgICAgICAgICAgICByZXR1cm4gY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShuZXdSZXF1
ZXN0KSk7CiAgICAgICAgIH0KQEAgLTI2NSw3ICsyNzQsNyBAQCB2b2lkIFN1YnJlc291cmNlTG9h
ZGVyOjp3aWxsU2VuZFJlcXVlc3RJbnRlcm5hbChSZXNvdXJjZVJlcXVlc3QmJiBuZXdSZXF1ZXN0
LCBjbwogICAgICAgICB9CiAKICAgICAgICAgaWYgKCFtX2RvY3VtZW50TG9hZGVyLT5jYWNoZWRS
ZXNvdXJjZUxvYWRlcigpLnVwZGF0ZVJlcXVlc3RBZnRlclJlZGlyZWN0aW9uKG1fcmVzb3VyY2Ut
PnR5cGUoKSwgbmV3UmVxdWVzdCwgb3B0aW9ucygpKSkgewotICAgICAgICAgICAgUkVMRUFTRV9M
T0dfSUZfQUxMT1dFRCgid2lsbFNlbmRSZXF1ZXN0aW50ZXJuYWw6IHJlc291cmNlIGxvYWQgY2Fu
Y2VsZWQgYmVjYXVzZSBzb21ldGhpbmcgYWJvdXQgdXBkYXRlUmVxdWVzdEFmdGVyUmVkaXJlY3Rp
b24gKGZyYW1lID0gJXAsIGZyYW1lTG9hZGVyID0gJXAsIHJlc291cmNlSUQgPSAlbHUpIiwgZnJh
bWUoKSwgZnJhbWVMb2FkZXIoKSwgaWRlbnRpZmllcigpKTsKKyAgICAgICAgICAgIFJFTEVBU0Vf
TE9HX0lGX0FMTE9XRUQoIndpbGxTZW5kUmVxdWVzdEludGVybmFsOiByZXNvdXJjZSBsb2FkIGNh
bmNlbGVkIGJlY2F1c2UgQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OnVwZGF0ZVJlcXVlc3RBZnRlclJl
ZGlyZWN0aW9uIChyZWFsbHkgQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OmNhblJlcXVlc3RBZnRlclJl
ZGlyZWN0aW9uKSBzYWlkIG5vIik7CiAgICAgICAgICAgICBjYW5jZWwoKTsKICAgICAgICAgICAg
IHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihXVEZNb3ZlKG5ld1JlcXVlc3QpKTsKICAgICAgICAg
fQpAQCAtMjc1LDIzICsyODQsMjUgQEAgdm9pZCBTdWJyZXNvdXJjZUxvYWRlcjo6d2lsbFNlbmRS
ZXF1ZXN0SW50ZXJuYWwoUmVzb3VyY2VSZXF1ZXN0JiYgbmV3UmVxdWVzdCwgY28KICAgICAgICAg
ICAgIFN0cmluZyBlcnJvck1lc3NhZ2UgPSAiQ3Jvc3Mtb3JpZ2luIHJlZGlyZWN0aW9uIHRvICIg
KyBuZXdSZXF1ZXN0LnVybCgpLnN0cmluZygpICsgIiBkZW5pZWQgYnkgQ3Jvc3MtT3JpZ2luIFJl
c291cmNlIFNoYXJpbmcgcG9saWN5OiAiICsgZXJyb3JEZXNjcmlwdGlvbjsKICAgICAgICAgICAg
IGlmIChtX2ZyYW1lICYmIG1fZnJhbWUtPmRvY3VtZW50KCkpCiAgICAgICAgICAgICAgICAgbV9m
cmFtZS0+ZG9jdW1lbnQoKS0+YWRkQ29uc29sZU1lc3NhZ2UoTWVzc2FnZVNvdXJjZTo6U2VjdXJp
dHksIE1lc3NhZ2VMZXZlbDo6RXJyb3IsIGVycm9yTWVzc2FnZSk7Ci0gICAgICAgICAgICBSRUxF
QVNFX0xPR19JRl9BTExPV0VEKCJ3aWxsU2VuZFJlcXVlc3RpbnRlcm5hbDogcmVzb3VyY2UgbG9h
ZCBjYW5jZWxlZCBiZWNhdXNlIGNyb3Nzcy1vcmlnaW4gcmVkaXJlY3Rpb24gZGVuaWVkIGJ5IENP
UlMgcG9saWN5IChmcmFtZSA9ICVwLCBmcmFtZUxvYWRlciA9ICVwLCByZXNvdXJjZUlEID0gJWx1
KSIsIGZyYW1lKCksIGZyYW1lTG9hZGVyKCksIGlkZW50aWZpZXIoKSk7CisgICAgICAgICAgICBS
RUxFQVNFX0xPR19JRl9BTExPV0VEKCJ3aWxsU2VuZFJlcXVlc3RJbnRlcm5hbDogcmVzb3VyY2Ug
bG9hZCBjYW5jZWxlZCBiZWNhdXNlIGNyb3Nzcy1vcmlnaW4gcmVkaXJlY3Rpb24gZGVuaWVkIGJ5
IENPUlMgcG9saWN5Iik7CiAgICAgICAgICAgICBjYW5jZWwoUmVzb3VyY2VFcnJvcihTdHJpbmco
KSwgMCwgcmVxdWVzdCgpLnVybCgpLCBlcnJvck1lc3NhZ2UsIFJlc291cmNlRXJyb3I6OlR5cGU6
OkFjY2Vzc0NvbnRyb2wpKTsKICAgICAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihX
VEZNb3ZlKG5ld1JlcXVlc3QpKTsKICAgICAgICAgfQogCiAgICAgICAgIGlmIChtX3Jlc291cmNl
LT5pc0ltYWdlKCkgJiYgbV9kb2N1bWVudExvYWRlci0+Y2FjaGVkUmVzb3VyY2VMb2FkZXIoKS5z
aG91bGREZWZlckltYWdlTG9hZChuZXdSZXF1ZXN0LnVybCgpKSkgewotICAgICAgICAgICAgUkVM
RUFTRV9MT0dfSUZfQUxMT1dFRCgid2lsbFNlbmRSZXF1ZXN0aW50ZXJuYWw6IHJlc291cmNlIGxv
YWQgY2FuY2VsZWQgYmVjYXVzZSBpdCdzIGFuIGltYWdlIHRoYXQgc2hvdWxkIGJlIGRlZmVyZWQg
KGZyYW1lID0gJXAsIGZyYW1lTG9hZGVyID0gJXAsIHJlc291cmNlSUQgPSAlbHUpIiwgZnJhbWUo
KSwgZnJhbWVMb2FkZXIoKSwgaWRlbnRpZmllcigpKTsKKyAgICAgICAgICAgIFJFTEVBU0VfTE9H
X0lGX0FMTE9XRUQoIndpbGxTZW5kUmVxdWVzdEludGVybmFsOiByZXNvdXJjZSBsb2FkIGNhbmNl
bGVkIGJlY2F1c2UgaXQncyBhbiBpbWFnZSB0aGF0IHNob3VsZCBiZSBkZWZlcmVkIik7CiAgICAg
ICAgICAgICBjYW5jZWwoKTsKICAgICAgICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihX
VEZNb3ZlKG5ld1JlcXVlc3QpKTsKICAgICAgICAgfQogICAgICAgICBtX2xvYWRUaW1pbmcuYWRk
UmVkaXJlY3QocmVkaXJlY3RSZXNwb25zZS51cmwoKSwgbmV3UmVxdWVzdC51cmwoKSk7Ci0gICAg
ICAgIG1fcmVzb3VyY2UtPnJlZGlyZWN0UmVjZWl2ZWQoV1RGTW92ZShuZXdSZXF1ZXN0KSwgcmVk
aXJlY3RSZXNwb25zZSwgW2NvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFu
ZGxlciksIGNvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0ID0gV1RGTW92ZShjb250aW51ZVdpbGxTZW5k
UmVxdWVzdCldIChSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0KSBtdXRhYmxlIHsKKyAgICAgICAg
bV9yZXNvdXJjZS0+cmVkaXJlY3RSZWNlaXZlZChXVEZNb3ZlKG5ld1JlcXVlc3QpLCByZWRpcmVj
dFJlc3BvbnNlLCBbdGhpcywgcHJvdGVjdGVkVGhpcyA9IFdURk1vdmUocHJvdGVjdGVkVGhpcyks
IGNvbXBsZXRpb25IYW5kbGVyID0gV1RGTW92ZShjb21wbGV0aW9uSGFuZGxlciksIGNvbnRpbnVl
V2lsbFNlbmRSZXF1ZXN0ID0gV1RGTW92ZShjb250aW51ZVdpbGxTZW5kUmVxdWVzdCldIChSZXNv
dXJjZVJlcXVlc3QmJiByZXF1ZXN0KSBtdXRhYmxlIHsKKyAgICAgICAgICAgIFJFTEVBU0VfTE9H
X0lGX0FMTE9XRUQoIndpbGxTZW5kUmVxdWVzdEludGVybmFsOiByZXNvdXJjZSBkb25lIG5vdGlm
eWluZyBjbGllbnRzIik7CiAgICAgICAgICAgICBjb250aW51ZVdpbGxTZW5kUmVxdWVzdChXVEZN
b3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgV1RGTW92ZShyZXF1ZXN0KSk7CiAgICAgICAgIH0pOwog
ICAgICAgICByZXR1cm47CiAgICAgfQogCisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgid2ls
bFNlbmRSZXF1ZXN0SW50ZXJuYWw6IHJlZGlyZWN0IHJlc3BvbnNlIGlzIE5VTEwiKTsKICAgICBj
b250aW51ZVdpbGxTZW5kUmVxdWVzdChXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSwgV1RGTW92
ZShuZXdSZXF1ZXN0KSk7CiB9CiAKQEAgLTM1MSw3ICszNjIsNyBAQCB2b2lkIFN1YnJlc291cmNl
TG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9u
c2UsIENvbQogICAgIGlmIChyZXNwb25zZS5zb3VyY2UoKSA9PSBSZXNvdXJjZVJlc3BvbnNlOjpT
b3VyY2U6OlNlcnZpY2VXb3JrZXIgJiYgcmVzcG9uc2UudXJsKCkgIT0gcmVxdWVzdCgpLnVybCgp
KSB7CiAgICAgICAgIGF1dG8mIGxvYWRlciA9IG1fZG9jdW1lbnRMb2FkZXItPmNhY2hlZFJlc291
cmNlTG9hZGVyKCk7CiAgICAgICAgIGlmICghbG9hZGVyLmFsbG93ZWRCeUNvbnRlbnRTZWN1cml0
eVBvbGljeShtX3Jlc291cmNlLT50eXBlKCksIHJlc3BvbnNlLnVybCgpLCBvcHRpb25zKCksIENv
bnRlbnRTZWN1cml0eVBvbGljeTo6UmVkaXJlY3RSZXNwb25zZVJlY2VpdmVkOjpZZXMpKSB7Ci0g
ICAgICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJkaWRSZWNlaXZlUmVzcG9uc2U6IGNh
bmNlbGluZyBsb2FkIGJlY2F1c2Ugbm90IGFsbG93ZWQgYnkgY29udGVudCBwb2xpY3kgKGZyYW1l
ID0gJXAsIGZyYW1lTG9hZGVyID0gJXAsIHJlc291cmNlSUQgPSAlbHUpIiwgZnJhbWUoKSwgZnJh
bWVMb2FkZXIoKSwgaWRlbnRpZmllcigpKTsKKyAgICAgICAgICAgIFJFTEVBU0VfTE9HX0lGX0FM
TE9XRUQoImRpZFJlY2VpdmVSZXNwb25zZTogY2FuY2VsaW5nIGxvYWQgYmVjYXVzZSBub3QgYWxs
b3dlZCBieSBjb250ZW50IHBvbGljeSIpOwogICAgICAgICAgICAgY2FuY2VsKFJlc291cmNlRXJy
b3IoeyB9LCAwLCByZXNwb25zZS51cmwoKSwgeyB9LCBSZXNvdXJjZUVycm9yOjpUeXBlOjpHZW5l
cmFsKSk7CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KQEAgLTM1OSw3ICszNzAsNyBA
QCB2b2lkIFN1YnJlc291cmNlTG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVzb3Vy
Y2VSZXNwb25zZSYgcmVzcG9uc2UsIENvbQogI2VuZGlmCiAKICAgICBpZiAoYXV0byBlcnJvciA9
IHZhbGlkYXRlUmFuZ2VSZXF1ZXN0ZWRGbGFnKHJlcXVlc3QoKSwgcmVzcG9uc2UpKSB7Ci0gICAg
ICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImRpZFJlY2VpdmVSZXNwb25zZTogY2FuY2VsaW5n
IGxvYWQgYmVjYXVzZSByZWNlaXZpbmcgYSByYW5nZSByZXF1ZXN0ZWQgcmVzcG9uc2UgZm9yIGEg
bm9uLXJhbmdlIHJlcXVlc3QgKGZyYW1lID0gJXAsIGZyYW1lTG9hZGVyID0gJXAsIHJlc291cmNl
SUQgPSAlbHUpIiwgZnJhbWUoKSwgZnJhbWVMb2FkZXIoKSwgaWRlbnRpZmllcigpKTsKKyAgICAg
ICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiZGlkUmVjZWl2ZVJlc3BvbnNlOiBjYW5jZWxpbmcg
bG9hZCBiZWNhdXNlIHJlY2VpdmluZyBhIHJhbmdlIHJlcXVlc3RlZCByZXNwb25zZSBmb3IgYSBu
b24tcmFuZ2UgcmVxdWVzdCIpOwogICAgICAgICBjYW5jZWwoV1RGTW92ZSgqZXJyb3IpKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KQEAgLTQwMiw3ICs0MTMsNyBAQCB2b2lkIFN1YnJlc291cmNl
TG9hZGVyOjpkaWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9u
c2UsIENvbQogICAgIGlmICghY2hlY2tSZXNwb25zZUNyb3NzT3JpZ2luQWNjZXNzQ29udHJvbChy
ZXNwb25zZSwgZXJyb3JEZXNjcmlwdGlvbikpIHsKICAgICAgICAgaWYgKG1fZnJhbWUgJiYgbV9m
cmFtZS0+ZG9jdW1lbnQoKSkKICAgICAgICAgICAgIG1fZnJhbWUtPmRvY3VtZW50KCktPmFkZENv
bnNvbGVNZXNzYWdlKE1lc3NhZ2VTb3VyY2U6OlNlY3VyaXR5LCBNZXNzYWdlTGV2ZWw6OkVycm9y
LCBlcnJvckRlc2NyaXB0aW9uKTsKLSAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiZGlk
UmVjZWl2ZVJlc3BvbnNlOiBjYW5jZWxpbmcgbG9hZCBiZWNhdXNlIG9mIGNyb3NzIG9yaWdpbiBh
Y2Nlc3MgY29udHJvbCAoZnJhbWUgPSAlcCwgZnJhbWVMb2FkZXIgPSAlcCwgcmVzb3VyY2VJRCA9
ICVsdSkiLCBmcmFtZSgpLCBmcmFtZUxvYWRlcigpLCBpZGVudGlmaWVyKCkpOworICAgICAgICBS
RUxFQVNFX0xPR19JRl9BTExPV0VEKCJkaWRSZWNlaXZlUmVzcG9uc2U6IGNhbmNlbGluZyBsb2Fk
IGJlY2F1c2Ugb2YgY3Jvc3Mgb3JpZ2luIGFjY2VzcyBjb250cm9sIik7CiAgICAgICAgIGNhbmNl
bChSZXNvdXJjZUVycm9yKFN0cmluZygpLCAwLCByZXF1ZXN0KCkudXJsKCksIGVycm9yRGVzY3Jp
cHRpb24sIFJlc291cmNlRXJyb3I6OlR5cGU6OkFjY2Vzc0NvbnRyb2wpKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KQEAgLTQ0Miw3ICs0NTMsNyBAQCB2b2lkIFN1YnJlc291cmNlTG9hZGVyOjpk
aWRSZWNlaXZlUmVzcG9uc2UoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYgcmVzcG9uc2UsIENvbQog
ICAgICAgICAgICAgLy8gV2UgZG9uJ3QgY291bnQgbXVsdGlQYXJ0cyBpbiBhIENhY2hlZFJlc291
cmNlTG9hZGVyJ3MgcmVxdWVzdCBjb3VudAogICAgICAgICAgICAgbV9yZXF1ZXN0Q291bnRUcmFj
a2VyID0gV1RGOjpudWxsb3B0OwogICAgICAgICAgICAgaWYgKCFtX3Jlc291cmNlLT5pc0ltYWdl
KCkpIHsKLSAgICAgICAgICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJkaWRSZWNlaXZl
UmVzcG9uc2U6IGNhbmNlbGluZyBsb2FkIGJlY2F1c2Ugc29tZXRoaW5nIGFib3V0IGEgbXVsdGkt
cGFydCBub24taW1hZ2UgKGZyYW1lID0gJXAsIGZyYW1lTG9hZGVyID0gJXAsIHJlc291cmNlSUQg
PSAlbHUpIiwgZnJhbWUoKSwgZnJhbWVMb2FkZXIoKSwgaWRlbnRpZmllcigpKTsKKyAgICAgICAg
ICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJkaWRSZWNlaXZlUmVzcG9uc2U6IGNhbmNl
bGluZyBsb2FkIGJlY2F1c2Ugc29tZXRoaW5nIGFib3V0IGEgbXVsdGktcGFydCBub24taW1hZ2Ui
KTsKICAgICAgICAgICAgICAgICBjYW5jZWwoKTsKICAgICAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgICAgICB9CkBAIC02NjEsNyArNjcyLDcgQEAgdm9pZCBTdWJyZXNvdXJjZUxvYWRlcjo6
dXBkYXRlUmVmZXJyZXJQb2xpY3koY29uc3QgU3RyaW5nJiByZWZlcnJlclBvbGljeVZhbHVlKQog
CiB2b2lkIFN1YnJlc291cmNlTG9hZGVyOjpkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IE5ldHdvcmtM
b2FkTWV0cmljcyYgbmV0d29ya0xvYWRNZXRyaWNzKQogewotICAgIFJFTEVBU0VfTE9HX0lGX0FM
TE9XRUQoImRpZEZpbmlzaExvYWRpbmc6IChmcmFtZSA9ICVwLCBmcmFtZUxvYWRlciA9ICVwLCBy
ZXNvdXJjZUlEID0gJWx1KSIsIGZyYW1lKCksIGZyYW1lTG9hZGVyKCksIGlkZW50aWZpZXIoKSk7
CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiZGlkRmluaXNoTG9hZGluZzoiKTsKIAogI2lm
IFVTRShRVUlDS19MT09LKQogICAgIGlmIChhdXRvIHByZXZpZXdMb2FkZXIgPSBtX3ByZXZpZXdM
b2FkZXIuZ2V0KCkpIHsKQEAgLTcwNyw3ICs3MTgsNyBAQCB2b2lkIFN1YnJlc291cmNlTG9hZGVy
OjpkaWRGaW5pc2hMb2FkaW5nKGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcyYgbmV0d29ya0xvYWRN
ZQogICAgIG1fcmVzb3VyY2UtPmZpbmlzaExvYWRpbmcocmVzb3VyY2VEYXRhKCkpOwogCiAgICAg
aWYgKHdhc0NhbmNlbGxlZCgpKSB7Ci0gICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImRp
ZEZpbmlzaExvYWRpbmc6IHdhcyBjYW5jZWxlZCAoZnJhbWUgPSAlcCwgZnJhbWVMb2FkZXIgPSAl
cCwgcmVzb3VyY2VJRCA9ICVsdSkiLCBmcmFtZSgpLCBmcmFtZUxvYWRlcigpLCBpZGVudGlmaWVy
KCkpOworICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJkaWRGaW5pc2hMb2FkaW5nOiB3
YXMgY2FuY2VsZWQiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtNzE3LDcgKzcyOCw3
IEBAIHZvaWQgU3VicmVzb3VyY2VMb2FkZXI6OmRpZEZpbmlzaExvYWRpbmcoY29uc3QgTmV0d29y
a0xvYWRNZXRyaWNzJiBuZXR3b3JrTG9hZE1lCiAgICAgbm90aWZ5RG9uZShMb2FkQ29tcGxldGlv
blR5cGU6OkZpbmlzaCk7CiAKICAgICBpZiAocmVhY2hlZFRlcm1pbmFsU3RhdGUoKSkgewotICAg
ICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJkaWRGaW5pc2hMb2FkaW5nOiByZWFjaGVkIHRl
cm1pbmFsIHN0YXRlIChmcmFtZSA9ICVwLCBmcmFtZUxvYWRlciA9ICVwLCByZXNvdXJjZUlEID0g
JWx1KSIsIGZyYW1lKCksIGZyYW1lTG9hZGVyKCksIGlkZW50aWZpZXIoKSk7CisgICAgICAgIFJF
TEVBU0VfTE9HX0lGX0FMTE9XRUQoImRpZEZpbmlzaExvYWRpbmc6IHJlYWNoZWQgdGVybWluYWwg
c3RhdGUiKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICByZWxlYXNlUmVzb3VyY2VzKCk7
CkBAIC03MjUsNyArNzM2LDcgQEAgdm9pZCBTdWJyZXNvdXJjZUxvYWRlcjo6ZGlkRmluaXNoTG9h
ZGluZyhjb25zdCBOZXR3b3JrTG9hZE1ldHJpY3MmIG5ldHdvcmtMb2FkTWUKIAogdm9pZCBTdWJy
ZXNvdXJjZUxvYWRlcjo6ZGlkRmFpbChjb25zdCBSZXNvdXJjZUVycm9yJiBlcnJvcikKIHsKLSAg
ICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJkaWRGYWlsOiAoZnJhbWUgPSAlcCwgZnJhbWVMb2Fk
ZXIgPSAlcCwgcmVzb3VyY2VJRCA9ICVsdSwgdHlwZSA9ICVkLCBjb2RlID0gJWQpIiwgZnJhbWUo
KSwgZnJhbWVMb2FkZXIoKSwgaWRlbnRpZmllcigpLCBzdGF0aWNfY2FzdDxpbnQ+KGVycm9yLnR5
cGUoKSksIGVycm9yLmVycm9yQ29kZSgpKTsKKyAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJk
aWRGYWlsOiAodHlwZSA9ICVkLCBjb2RlID0gJWQpIiwgc3RhdGljX2Nhc3Q8aW50PihlcnJvci50
eXBlKCkpLCBlcnJvci5lcnJvckNvZGUoKSk7CiAKICNpZiBVU0UoUVVJQ0tfTE9PSykKICAgICBp
ZiAoYXV0byBwcmV2aWV3TG9hZGVyID0gbV9wcmV2aWV3TG9hZGVyLmdldCgpKQpAQCAtNzYzLDcg
Kzc3NCw3IEBAIHZvaWQgU3VicmVzb3VyY2VMb2FkZXI6OmRpZEZhaWwoY29uc3QgUmVzb3VyY2VF
cnJvciYgZXJyb3IpCiAKIHZvaWQgU3VicmVzb3VyY2VMb2FkZXI6OndpbGxDYW5jZWwoY29uc3Qg
UmVzb3VyY2VFcnJvciYgZXJyb3IpCiB7Ci0gICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgid2ls
bENhbmNlbDogKGZyYW1lID0gJXAsIGZyYW1lTG9hZGVyID0gJXAsIHJlc291cmNlSUQgPSAlbHUs
IHR5cGUgPSAlZCwgY29kZSA9ICVkKSIsIGZyYW1lKCksIGZyYW1lTG9hZGVyKCksIGlkZW50aWZp
ZXIoKSwgc3RhdGljX2Nhc3Q8aW50PihlcnJvci50eXBlKCkpLCBlcnJvci5lcnJvckNvZGUoKSk7
CisgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgid2lsbENhbmNlbDogKHR5cGUgPSAlZCwgY29k
ZSA9ICVkKSIsIHN0YXRpY19jYXN0PGludD4oZXJyb3IudHlwZSgpKSwgZXJyb3IuZXJyb3JDb2Rl
KCkpOwogCiAjaWYgUExBVEZPUk0oSU9TX0ZBTUlMWSkKICAgICAvLyBTaW5jZSB3ZSBkZWZlciBp
bml0aWFsaXphdGlvbiB0byBzY2hlZHVsaW5nIHRpbWUgb24gaU9TIGJ1dApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSYXdSZXNvdXJjZS5jcHAKaW5kZXggZTdkYzYz
MzkxZWU5Mjk1ZDBkZDUzNDJiYzkxMzljODljMmMzYWZkYy4uMDBhN2YyM2Q1NjUxYTA0ZmY1ZGFl
MDkxMDdmYjc2MDM2Mjc0MDI3YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvbG9hZGVyL2Nh
Y2hlL0NhY2hlZFJhd1Jlc291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2Fj
aGUvQ2FjaGVkUmF3UmVzb3VyY2UuY3BwCkBAIC0zMCwxMiArMzAsMTUgQEAKICNpbmNsdWRlICJD
YWNoZWRSZXNvdXJjZUNsaWVudFdhbGtlci5oIgogI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlTG9h
ZGVyLmgiCiAjaW5jbHVkZSAiSFRUUEhlYWRlck5hbWVzLmgiCisjaW5jbHVkZSAiTG9nZ2luZy5o
IgogI2luY2x1ZGUgIlNoYXJlZEJ1ZmZlci5oIgogI2luY2x1ZGUgIlN1YnJlc291cmNlTG9hZGVy
LmgiCiAjaW5jbHVkZSA8d3RmL0NvbXBsZXRpb25IYW5kbGVyLmg+CiAjaW5jbHVkZSA8d3RmL1Nl
dEZvclNjb3BlLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nVmlldy5oPgogCisjZGVmaW5l
IFJFTEVBU0VfTE9HX0FMV0FZUyhmbXQsIC4uLikgUkVMRUFTRV9MT0coTmV0d29yaywgIiVwIC0g
Q2FjaGVkUmF3UmVzb3VyY2U6OiIgZm10LCB0aGlzLCAjI19fVkFfQVJHU19fKQorCiBuYW1lc3Bh
Y2UgV2ViQ29yZSB7CiAKIENhY2hlZFJhd1Jlc291cmNlOjpDYWNoZWRSYXdSZXNvdXJjZShDYWNo
ZWRSZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBUeXBlIHR5cGUsIGNvbnN0IFBBTDo6U2Vzc2lv
bklEJiBzZXNzaW9uSUQsIGNvbnN0IENvb2tpZUphciogY29va2llSmFyKQpAQCAtMjA0LDYgKzIw
Nyw3IEBAIHN0YXRpYyB2b2lkIGl0ZXJhdGVDbGllbnRzKENhY2hlZFJlc291cmNlQ2xpZW50V2Fs
a2VyPENhY2hlZFJhd1Jlc291cmNlQ2xpZW50PiYmCiAKIHZvaWQgQ2FjaGVkUmF3UmVzb3VyY2U6
OnJlZGlyZWN0UmVjZWl2ZWQoUmVzb3VyY2VSZXF1ZXN0JiYgcmVxdWVzdCwgY29uc3QgUmVzb3Vy
Y2VSZXNwb25zZSYgcmVzcG9uc2UsIENvbXBsZXRpb25IYW5kbGVyPHZvaWQoUmVzb3VyY2VSZXF1
ZXN0JiYpPiYmIGNvbXBsZXRpb25IYW5kbGVyKQogeworICAgIFJFTEVBU0VfTE9HX0FMV0FZUygi
cmVkaXJlY3RSZWNlaXZlZDoiKTsKICAgICBpZiAocmVzcG9uc2UuaXNOdWxsKCkpCiAgICAgICAg
IENhY2hlZFJlc291cmNlOjpyZWRpcmVjdFJlY2VpdmVkKFdURk1vdmUocmVxdWVzdCksIHJlc3Bv
bnNlLCBXVEZNb3ZlKGNvbXBsZXRpb25IYW5kbGVyKSk7CiAgICAgZWxzZSB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVzb3VyY2UuY3BwIGIvU291cmNl
L1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlLmNwcAppbmRleCA1ZGU3MDgzYWRi
NTM0YjVlOGQyYmM0NDNmNzU1MGEyYjhjMzhmYTk5Li42ZjE1N2EwMTAwYzliMTVkOTQ3ZTk4NjE4
NzZiNjQzMzEyNzAzNTJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUv
Q2FjaGVkUmVzb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNo
ZWRSZXNvdXJjZS5jcHAKQEAgLTYxLDcgKzYxLDEwIEBACiAjaW5jbHVkZSAiUXVpY2tMb29rLmgi
CiAjZW5kaWYKIAorI3VuZGVmIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQKKyN1bmRlZiBSRUxFQVNF
X0xPR19BTFdBWVMKICNkZWZpbmUgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRChmbXQsIC4uLikgUkVM
RUFTRV9MT0dfSUYoY2FjaGVkUmVzb3VyY2VMb2FkZXIuaXNBbHdheXNPbkxvZ2dpbmdBbGxvd2Vk
KCksIE5ldHdvcmssICIlcCAtIENhY2hlZFJlc291cmNlOjoiIGZtdCwgdGhpcywgIyNfX1ZBX0FS
R1NfXykKKyNkZWZpbmUgUkVMRUFTRV9MT0dfQUxXQVlTKGZtdCwgLi4uKSBSRUxFQVNFX0xPRyhO
ZXR3b3JrLCAiJXAgLSBDYWNoZWRSZXNvdXJjZTo6IiBmbXQsIHRoaXMsICMjX19WQV9BUkdTX18p
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAtNDg1LDExICs0ODgsMTIgQEAgU2Vjb25kcyBD
YWNoZWRSZXNvdXJjZTo6ZnJlc2huZXNzTGlmZXRpbWUoY29uc3QgUmVzb3VyY2VSZXNwb25zZSYg
cmVzcG9uc2UpIGNvbnMKIAogdm9pZCBDYWNoZWRSZXNvdXJjZTo6cmVkaXJlY3RSZWNlaXZlZChS
ZXNvdXJjZVJlcXVlc3QmJiByZXF1ZXN0LCBjb25zdCBSZXNvdXJjZVJlc3BvbnNlJiByZXNwb25z
ZSwgQ29tcGxldGlvbkhhbmRsZXI8dm9pZChSZXNvdXJjZVJlcXVlc3QmJik+JiYgY29tcGxldGlv
bkhhbmRsZXIpCiB7CisgICAgUkVMRUFTRV9MT0dfQUxXQVlTKCJyZWRpcmVjdFJlY2VpdmVkOiIp
OworCiAgICAgbV9yZXF1ZXN0ZWRGcm9tTmV0d29ya2luZ0xheWVyID0gdHJ1ZTsKLSAgICBpZiAo
cmVzcG9uc2UuaXNOdWxsKCkpCi0gICAgICAgIHJldHVybiBjb21wbGV0aW9uSGFuZGxlcihXVEZN
b3ZlKHJlcXVlc3QpKTsKKyAgICBpZiAoIXJlc3BvbnNlLmlzTnVsbCgpKQorICAgICAgICB1cGRh
dGVSZWRpcmVjdENoYWluU3RhdHVzKG1fcmVkaXJlY3RDaGFpbkNhY2hlU3RhdHVzLCByZXNwb25z
ZSk7CiAKLSAgICB1cGRhdGVSZWRpcmVjdENoYWluU3RhdHVzKG1fcmVkaXJlY3RDaGFpbkNhY2hl
U3RhdHVzLCByZXNwb25zZSk7CiAgICAgY29tcGxldGlvbkhhbmRsZXIoV1RGTW92ZShyZXF1ZXN0
KSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRS
ZXNvdXJjZUxvYWRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9sb2FkZXIvY2FjaGUvQ2FjaGVkUmVz
b3VyY2VMb2FkZXIuY3BwCmluZGV4IDNmMmY3MjdkOWQ5ZmViYjJhY2U5OTEyOGJhZTNlYTU5NmVj
YWE5NzQuLmYxNjJjODUxMGM0YTJiNGZmNzQxMTZjNTY0M2Q5ODY2NzgzYmMzZDAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2xvYWRlci9jYWNoZS9DYWNoZWRSZXNvdXJjZUxvYWRlci5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvbG9hZGVyL2NhY2hlL0NhY2hlZFJlc291cmNlTG9hZGVyLmNw
cApAQCAtNTQwLDcgKzU0MCw4IEBAIGJvb2wgQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OmNhblJlcXVl
c3RBZnRlclJlZGlyZWN0aW9uKENhY2hlZFJlc291cmNlOjpUeXBlIHR5cGUsCiB7CiAgICAgaWYg
KGRvY3VtZW50KCkgJiYgIWRvY3VtZW50KCktPnNlY3VyaXR5T3JpZ2luKCkuY2FuRGlzcGxheSh1
cmwpKSB7CiAgICAgICAgIEZyYW1lTG9hZGVyOjpyZXBvcnRMb2NhbExvYWRGYWlsZWQoZnJhbWUo
KSwgdXJsLnN0cmluZ0NlbnRlckVsbGlwc2l6ZWRUb0xlbmd0aCgpKTsKLSAgICAgICAgTE9HKFJl
c291cmNlTG9hZGluZywgIkNhY2hlZFJlc291cmNlTG9hZGVyOjpyZXF1ZXN0UmVzb3VyY2UgVVJM
IHdhcyBub3QgYWxsb3dlZCBieSBTZWN1cml0eU9yaWdpbjo6Y2FuRGlzcGxheSIpOworICAgICAg
ICBMT0coUmVzb3VyY2VMb2FkaW5nLCAiQ2FjaGVkUmVzb3VyY2VMb2FkZXI6OmNhblJlcXVlc3RB
ZnRlclJlZGlyZWN0aW9uIFVSTCB3YXMgbm90IGFsbG93ZWQgYnkgU2VjdXJpdHlPcmlnaW46OmNh
bkRpc3BsYXkiKTsKKyAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiY2FuUmVxdWVzdEFm
dGVyUmVkaXJlY3Rpb246IFVSTCB3YXMgbm90IGFsbG93ZWQgYnkgU2VjdXJpdHlPcmlnaW46OmNh
bkRpc3BsYXkiKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KIApAQCAtNTQ4LDE3ICs1
NDksMjIgQEAgYm9vbCBDYWNoZWRSZXNvdXJjZUxvYWRlcjo6Y2FuUmVxdWVzdEFmdGVyUmVkaXJl
Y3Rpb24oQ2FjaGVkUmVzb3VyY2U6OlR5cGUgdHlwZSwKICAgICAvLyBCdXQgd2UgY3VycmVudGx5
IGFsbG93IGF0IGxlYXN0IGRhdGEgVVJMcyB0byBiZSBsb2FkZWQuCiAKICAgICBpZiAob3B0aW9u
cy5tb2RlID09IEZldGNoT3B0aW9uczo6TW9kZTo6U2FtZU9yaWdpbiAmJiAhbV9kb2N1bWVudC0+
c2VjdXJpdHlPcmlnaW4oKS5jYW5SZXF1ZXN0KHVybCkpIHsKKyAgICAgICAgUkVMRUFTRV9MT0df
SUZfQUxMT1dFRCgiY2FuUmVxdWVzdEFmdGVyUmVkaXJlY3Rpb246IFVSTCB3YXMgbm90IGFsbG93
ZWQgYnkgU2VjdXJpdHlPcmlnaW46OmNhblJlcXVlc3QiKTsKICAgICAgICAgcHJpbnRBY2Nlc3NE
ZW5pZWRNZXNzYWdlKHVybCk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKLSAgICBp
ZiAoIWFsbG93ZWRCeUNvbnRlbnRTZWN1cml0eVBvbGljeSh0eXBlLCB1cmwsIG9wdGlvbnMsIENv
bnRlbnRTZWN1cml0eVBvbGljeTo6UmVkaXJlY3RSZXNwb25zZVJlY2VpdmVkOjpZZXMpKQorICAg
IGlmICghYWxsb3dlZEJ5Q29udGVudFNlY3VyaXR5UG9saWN5KHR5cGUsIHVybCwgb3B0aW9ucywg
Q29udGVudFNlY3VyaXR5UG9saWN5OjpSZWRpcmVjdFJlc3BvbnNlUmVjZWl2ZWQ6OlllcykpIHsK
KyAgICAgICAgUkVMRUFTRV9MT0dfSUZfQUxMT1dFRCgiY2FuUmVxdWVzdEFmdGVyUmVkaXJlY3Rp
b246IFVSTCB3YXMgbm90IGFsbG93ZWQgYnkgY29udGVudCBwb2xpY3kiKTsKICAgICAgICAgcmV0
dXJuIGZhbHNlOworICAgIH0KIAogICAgIC8vIExhc3Qgb2YgYWxsLCBjaGVjayBmb3IgaW5zZWN1
cmUgY29udGVudC4gV2UgZG8gdGhpcyBsYXN0IHNvIHRoYXQgd2hlbiBmb2xrcyBibG9jayBpbnNl
Y3VyZSBjb250ZW50IHdpdGggYSBDU1AgcG9saWN5LCB0aGV5IGRvbid0IGdldCBhIHdhcm5pbmcu
CiAgICAgLy8gVGhleSdsbCBzdGlsbCBnZXQgYSB3YXJuaW5nIGluIHRoZSBjb25zb2xlIGFib3V0
IENTUCBibG9ja2luZyB0aGUgbG9hZC4KLSAgICBpZiAoIWNoZWNrSW5zZWN1cmVDb250ZW50KHR5
cGUsIHVybCkpCisgICAgaWYgKCFjaGVja0luc2VjdXJlQ29udGVudCh0eXBlLCB1cmwpKSB7Cisg
ICAgICAgIFJFTEVBU0VfTE9HX0lGX0FMTE9XRUQoImNhblJlcXVlc3RBZnRlclJlZGlyZWN0aW9u
OiBVUkwgd2FzIG5vdCBhbGxvd2VkIGJlY2F1c2UgY29udGVudCBpcyBpbnNlY3VyZSIpOwogICAg
ICAgICByZXR1cm4gZmFsc2U7CisgICAgfQogCiAgICAgcmV0dXJuIHRydWU7CiB9CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5j
cHAgYi9Tb3VyY2UvV2ViS2l0L1dlYlByb2Nlc3MvTmV0d29yay9XZWJSZXNvdXJjZUxvYWRlci5j
cHAKaW5kZXggMDlkNzk4NzFmNWI2ZjM4N2Q0ZjVmYjY1NTFlZjlhMDQ2N2M0NjNiOC4uZWJkODU2
ZjZiMjNhMDM1NDU0NDRkYTczOWQ0MjgxN2RiNmFlODU0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YktpdC9XZWJQcm9jZXNzL05ldHdvcmsvV2ViUmVzb3VyY2VMb2FkZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJLaXQvV2ViUHJvY2Vzcy9OZXR3b3JrL1dlYlJlc291cmNlTG9hZGVyLmNwcApAQCAtMTE0
LDYgKzExNCw3IEBAIHZvaWQgV2ViUmVzb3VyY2VMb2FkZXI6OndpbGxTZW5kUmVxdWVzdChSZXNv
dXJjZVJlcXVlc3QmJiBwcm9wb3NlZFJlcXVlc3QsIElQQzo6CiAgICAgICAgICAgICByZXR1cm47
CiAgICAgICAgIH0KIAorICAgICAgICBSRUxFQVNFX0xPR19JRl9BTExPV0VEKCJ3aWxsU2VuZFJl
cXVlc3Q6IHJldHVybmluZyBDb250aW51ZVdpbGxTZW5kUmVxdWVzdCIpOwogICAgICAgICBzZW5k
KE1lc3NhZ2VzOjpOZXR3b3JrUmVzb3VyY2VMb2FkZXI6OkNvbnRpbnVlV2lsbFNlbmRSZXF1ZXN0
KHJlcXVlc3QsIG1fY29yZUxvYWRlci0+aXNBbGxvd2VkVG9Bc2tVc2VyRm9yQ3JlZGVudGlhbHMo
KSkpOwogICAgIH0pOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9XZWJQcm9jZXNzL1dl
YkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcCBiL1NvdXJjZS9XZWJLaXQvV2Vi
UHJvY2Vzcy9XZWJDb3JlU3VwcG9ydC9XZWJGcmFtZUxvYWRlckNsaWVudC5jcHAKaW5kZXggOThi
MTViODdmYzEzZGEyZGJmNDQzYmE5OGE0ZDg2ZDdhOWQzNTQxOS4uN2FhMjhlYzg0OWM4ZWUyMWUw
ZTlhMTBiZTNiM2ExNTZiZGY0YWRmMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9XZWJQcm9j
ZXNzL1dlYkNvcmVTdXBwb3J0L1dlYkZyYW1lTG9hZGVyQ2xpZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViS2l0L1dlYlByb2Nlc3MvV2ViQ29yZVN1cHBvcnQvV2ViRnJhbWVMb2FkZXJDbGllbnQuY3Bw
CkBAIC04MDgsMTEgKzgwOCwxMyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRj
aERlY2lkZVBvbGljeUZvclJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9ucwogewogICAgIFdl
YlBhZ2UqIHdlYlBhZ2UgPSBtX2ZyYW1lID8gbV9mcmFtZS0+cGFnZSgpIDogbnVsbHB0cjsKICAg
ICBpZiAoIXdlYlBhZ2UpIHsKKyAgICAgICAgV0VCRlJBTUVMT0FERVJDTElFTlRfUkVMRUFTRV9M
T0coTmV0d29yaywgImRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yUmVzcG9uc2U6IGlnbm9yaW5nIGJl
Y2F1c2UgdGhlcmUncyBubyB3ZWIgcGFnZSIpOwogICAgICAgICBmdW5jdGlvbihQb2xpY3lBY3Rp
b246Oklnbm9yZSwgaWRlbnRpZmllcik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBp
ZiAoIXJlcXVlc3QudXJsKCkuc3RyaW5nKCkpIHsKKyAgICAgICAgV0VCRlJBTUVMT0FERVJDTElF
TlRfUkVMRUFTRV9MT0coTmV0d29yaywgImRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yUmVzcG9uc2U6
IGNvbnRpbnVpbmcgYmVjYXVzZSB0aGUgdXJsIHN0cmluZyBpcyBudWxsIik7CiAgICAgICAgIGZ1
bmN0aW9uKFBvbGljeUFjdGlvbjo6VXNlLCBpZGVudGlmaWVyKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KQEAgLTgyMiw2ICs4MjQsNyBAQCB2b2lkIFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNw
YXRjaERlY2lkZVBvbGljeUZvclJlc3BvbnNlKGNvbnN0IFJlc291cmNlUmVzcG9ucwogICAgIC8v
IE5vdGlmeSB0aGUgYnVuZGxlIGNsaWVudC4KICAgICBXS0J1bmRsZVBhZ2VQb2xpY3lBY3Rpb24g
cG9saWN5ID0gd2ViUGFnZS0+aW5qZWN0ZWRCdW5kbGVQb2xpY3lDbGllbnQoKS5kZWNpZGVQb2xp
Y3lGb3JSZXNwb25zZSh3ZWJQYWdlLCBtX2ZyYW1lLCByZXNwb25zZSwgcmVxdWVzdCwgdXNlckRh
dGEpOwogICAgIGlmIChwb2xpY3kgPT0gV0tCdW5kbGVQYWdlUG9saWN5QWN0aW9uVXNlKSB7Cisg
ICAgICAgIFdFQkZSQU1FTE9BREVSQ0xJRU5UX1JFTEVBU0VfTE9HKE5ldHdvcmssICJkaXNwYXRj
aERlY2lkZVBvbGljeUZvclJlc3BvbnNlOiBjb250aW51aW5nIGJlY2F1c2UgaW5qZWN0ZWQgYnVu
ZGxlIHNheXMgc28iKTsKICAgICAgICAgZnVuY3Rpb24oUG9saWN5QWN0aW9uOjpVc2UsIGlkZW50
aWZpZXIpOwogICAgICAgICByZXR1cm47CiAgICAgfQpAQCAtODM1LDggKzgzOCwxMCBAQCB2b2lk
IFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvclJlc3BvbnNlKGNv
bnN0IFJlc291cmNlUmVzcG9ucwogICAgIFJlZjxXZWJGcmFtZT4gcHJvdGVjdG9yKCptX2ZyYW1l
KTsKICAgICB1aW50NjRfdCBsaXN0ZW5lcklEID0gbV9mcmFtZS0+c2V0VXBQb2xpY3lMaXN0ZW5l
cihpZGVudGlmaWVyLCBXVEZNb3ZlKGZ1bmN0aW9uKSwgV2ViRnJhbWU6OkZvck5hdmlnYXRpb25B
Y3Rpb246Ok5vKTsKICAgICBpZiAoIXdlYlBhZ2UtPnNlbmQoTWVzc2FnZXM6OldlYlBhZ2VQcm94
eTo6RGVjaWRlUG9saWN5Rm9yUmVzcG9uc2UobV9mcmFtZS0+ZnJhbWVJRCgpLCBTZWN1cml0eU9y
aWdpbkRhdGE6OmZyb21GcmFtZShjb3JlRnJhbWUpLCBpZGVudGlmaWVyLCBuYXZpZ2F0aW9uSUQs
IHJlc3BvbnNlLCByZXF1ZXN0LAotICAgICAgICBjYW5TaG93UmVzcG9uc2UsIGRvd25sb2FkQXR0
cmlidXRlLCBsaXN0ZW5lcklELCBVc2VyRGF0YShXZWJQcm9jZXNzOjpzaW5nbGV0b24oKS50cmFu
c2Zvcm1PYmplY3RzVG9IYW5kbGVzKHVzZXJEYXRhLmdldCgpKS5nZXQoKSkpKSkKKyAgICAgICAg
Y2FuU2hvd1Jlc3BvbnNlLCBkb3dubG9hZEF0dHJpYnV0ZSwgbGlzdGVuZXJJRCwgVXNlckRhdGEo
V2ViUHJvY2Vzczo6c2luZ2xldG9uKCkudHJhbnNmb3JtT2JqZWN0c1RvSGFuZGxlcyh1c2VyRGF0
YS5nZXQoKSkuZ2V0KCkpKSkpIHsKKyAgICAgICAgV0VCRlJBTUVMT0FERVJDTElFTlRfUkVMRUFT
RV9MT0coTmV0d29yaywgImRpc3BhdGNoRGVjaWRlUG9saWN5Rm9yUmVzcG9uc2U6IGlnbm9yaW5n
IGJlY2F1c2UgV2ViUGFnZVByb3h5OjpEZWNpZGVQb2xpY3lGb3JSZXNwb25zZSBmYWlsZWQiKTsK
ICAgICAgICAgbV9mcmFtZS0+ZGlkUmVjZWl2ZVBvbGljeURlY2lzaW9uKGxpc3RlbmVySUQsIFBv
bGljeURlY2lzaW9uIHsgaWRlbnRpZmllciwgTmF2aWdhdGluZ1RvQXBwQm91bmREb21haW46Ok5v
LCBQb2xpY3lBY3Rpb246Oklnbm9yZSwgMCwgeyB9LCB7IH0gfSk7CisgICAgfQogfQogCiB2b2lk
IFdlYkZyYW1lTG9hZGVyQ2xpZW50OjpkaXNwYXRjaERlY2lkZVBvbGljeUZvck5ld1dpbmRvd0Fj
dGlvbihjb25zdCBOYXZpZ2F0aW9uQWN0aW9uJiBuYXZpZ2F0aW9uQWN0aW9uLCBjb25zdCBSZXNv
dXJjZVJlcXVlc3QmIHJlcXVlc3QsCg==
</data>

          </attachment>
      

    </bug>

</bugzilla>